Bài giảng Kiến trúc máy tính và hệ điều hành - Chương 2: Bộ xử lý

pdf 57 trang Gia Huy 16/05/2022 4180
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính và hệ điều hành - Chương 2: Bộ xử lý", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_va_he_dieu_hanh_chuong_2_bo_xu.pdf

Nội dung text: Bài giảng Kiến trúc máy tính và hệ điều hành - Chương 2: Bộ xử lý

  1. Chương 2 BỘ XỬ LÝ 1 1
  2. Nội dung 1. Các thành phần chức năng của CPU. 2. Ngắt. 3. Thanh ghi. 4. Khối điều khiển. 5. Khối luận lý và số học 6. Bus hệ thống. 7. Lệnh máy tính. 2
  3. Các thành phần chức năng của CPU 3
  4. Các thành phần chức năng của CPU 0 System Bus 1 n-2 n-1 Các thành phần của máy tính 4
  5. Các thành phần chức năng của CPU  Hệ thống Bus  Data bus:  Chuyển tải dữ liệu, lệnh.  Độ rộng của Bus tương ứng khả năng chuyển tải dữ liệu của CPU: 8, 16, 32, 64 bit 5
  6. Các thành phần chức năng của CPU  Hệ thống Bus (tt):  Address bus:  Cung cấp địa chỉ nguồn và đích của dữ liệu cho CPU.  Độ rộng Bus xác định khả năng nhớ của hệ thống. 8088 dùng 16 bit địa chỉ => không gian địa chỉ là 64K.  Control bus:  Điều khiển và định thời các thông tin:  Tín hiệu đọc/ghi bộ nhớ,  Yêu cầu ngắt,  Tín hiệu đồng hồ. 6
  7. Các thành phần chức năng của CPU  Cấu trúc mức tổng quát của CPU 7
  8. Các thành phần chức năng của CPU  Cấu trúc bên trong của CPU 8
  9. Các thành phần chức năng của CPU  Nhiệm vụ của CPU:  Nhận lệnh (fetch instruction): đọc lệnh từ bộ nhớ.  Giải mã lệnh (decode instruction): xác định tác vụ lệnh yêu cầu.  Nhận dữ liệu (fetch data):  Nhận dữ liệu mới từ bộ nhớ hoặc các cổng I/O,  Xử lý dữ liệu (process data): thực hiện các phép toán số hoặc logic với các dữ liệu.  Ghi dữ liệu (write data): ghi dữ liệu ra bộ nhớ hoặc các cổng I/O. 9
  10. Các thành phần chức năng của CPU  Chu kỳ lệnh:  Nạp lệnh (Fetch): Nạp lệnh Giải mã lệnh Nạp toán hạng Chu kỳ lệnh cơ bản  Thực thi (Execute): Thực thi Cất toán hạng Ngắt Chu kỳ lệnh với ngắt 10
  11. Các thành phần chức năng của CPU  Nhận lệnh:  CPU đưa địa chỉ của lệnh cần nhận từ bộ đếm chương trình PC ra bus địa chỉ.  CPU phát tín hiệu điều khiển đọc bộ nhớ.  Lệnh từ bộ nhớ được đặt lên bus dữ liệu và được CPU copy vào thanh ghi lệnh IR.  CPU tăng nội dung PC để trỏ sang lệnh kế tiếp 11
  12. Các thành phần chức năng của CPU  Giải mã lệnh:  Lệnh từ thanh ghi lệnh IR được đưa đến đơn vị điều khiển (Control Unit).  Đơn vị điều khiển tiến hành giải mã lệnh để xác định tác vụ phải thực hiện.  Giải mã lệnh xảy ra bên trong CPU 12
  13. Các thành phần chức năng của CPU  Nhận dữ liệu:  CPU đưa địa chỉ của toán hạng ra bus địa chỉ  CPU phát tín hiệu điều khiển đọc  Toán hạng được đọc vào CPU  Tương tự như nhận lệnh 13
  14. Các thành phần chức năng của CPU Nhận dữ liệu gián tiếp (indirect):  CPU đưa địa chỉ ra Address Bus, và phát tín hiệu điều khiển đọc.  Nội dung ô nhớ (địa chỉ toán hạng – gián tiếp) được đọc vào CPU. - MAR: Memory Address Register  CPU phát địa chỉ này ra bus - MBR: Memory Buffer Register địa chỉ để tìm toán hạng  CPU phát tín hiệu điều khiển đọc, toán hạng được đọc vào CPU. 14
  15. Các thành phần chức năng của CPU  Thực thi lệnh:  Thực thi các tác vụ được mã hóa vào tập lệnh như:  Đọc/Ghi bộ nhớ  Nhập/Xuất  Chuyển giữa các thanh ghi  Thao tác số học/logic  Chuyển điều khiển (rẽ nhánh)  15
  16. Các thành phần chức năng của CPU  Ghi toán hạng:  CPU đưa địa chỉ ra bus địa chỉ.  CPU đưa dữ liệu cần ghi ra bus dữ liệu.  CPU phát tín hiệu điều khiển ghi.  Dữ liệu trên bus dữ liệu được copy đến vị trí xác định. 16
  17. Các thành phần chức năng của CPU Ví dụ về thực thi chương trình 17
  18. Các thành phần chức năng của CPU Lưu đồ trạng thái chu kỳ lệnh 18
  19. Ngắt (Interrupt)  Là kỹ thuật cho phép các module khác (I/O) có thể ngắt ngang tiến trình xử lý bình thường  Các loại ngắt:  Chương trình (program): overflow, division by zero  Định thời (Timer): - Được tạo bởi bộ định thời bên trong CPU - Được dùng ở chế độ độc quyển trong các hệ thống đa nhiệm  I/O: Từ I/O controller  Lỗi phần cứng: memory parity error
  20. Ngắt (Interrupt)  Chu kỳ lệnh có ngắt:  Nội dung của PC được đưa ra Data Bus.  CPU đưa địa chỉ (từ Stack Pointer) ra Address Bus.  CPU phát tín hiệu điều khiển ghi bộ nhớ.  Địa chỉ trả về trên Data Bus được ghi ra địa chỉ đã định (ở - MAR: Memory Address Register. ngăn xếp) - MBR: Memory Buffer Register. - PC: Program Counter  Địa chỉ lệnh đầu tiên của chương trình con điều khiển ngắt được nạp vào PC 21
  21. Ngắt (Interrupt) Lưu đồ trạng thái trong chu kỳ lệnh có ngắt
  22. Đa ngắt  Cấm ngắt  CPU sẽ bỏ qua các ngắt mới, chỉ thi hành ngắt hiện tại.  Các ngắt mới sẽ phải đợi và sẽ được kiểm tra sau khi ngắt hiện hành hoàn tất.  Các ngắt được thi hành theo thứ tự mà chúng xảy ra.  Độ ưu tiên ngắt  Các ngắt có độ ưu tiên thấp có thể sẽ bị ngắt bởi các ngắt có độ ưu tiên cao hơn.  Khi ngắt có độ ưu tiên cao hơn hoàn tất, CPU sẽ được trả về cho ngắt trước đó.
  23. Đa ngắt Đa ngắt tuần tự
  24. Đa ngắt Đa ngắt lồng nhau
  25. Đa ngắt Ví dụ về đa ngắt
  26. Đường ống lệnh (Instruction Pipelining)  Chia chu trình lệnh thành các công đoạn và cho phép thực hiện gối lên nhau (như dây chuyền lắp ráp)  Có 6 công đoạn:  Nhận lệnh (Fetch Instruction – FI)  Giải mã lệnh (Decode Instruction – DI)  Tính địa chỉ toán hạng (Calculate Operand Address – CO)  Nhận toán hạng (Fetch Operands – FO)  Thực hiện lệnh (Execute Instruction – EI)  Ghi toán hạng (Write Operands – WO)
  27. Đường ống lệnh (Instruction Pipelining) Biểu đồ thời gian của đường ống lệnh
  28. Đường ống lệnh (Instruction Pipelining)  Các vấn đề với đường ống lệnh:  Xung đột cấu trúc: do nhiều công đoạn dùng chung một tài nguyên  Xung đột dữ liệu: lệnh sau sử dụng dữ liệu kết quả của lệnh trước  Xung đột điều khiển: do rẽ nhánh gây ra
  29. Khối luận lý và số học (Arithmetic and Logic Unit - ALU)  Là một phần của máy tính, thực hiện các phép toán luận lý và số học.  Số học: cộng, trừ, nhân, chia, tang, giảm, đảo dấu.  Logic: AND, OR, XOR, NOT, phép dịch bit.
  30. Đơn vị điều khiển (Control Unit)  Nhận lệnh từ bộ nhớ đưa vào thanh ghi lệnh.  Tăng nội dung của PC để trỏ sang lệnh kế tiếp.  Giải mã lệnh nhận được để xác định tác vụ lệnh yêu cầu.  Phát các tín hiệu điều khiển thực hiện lệnh.  Nhận tín hiệu yêu cầu từ bus hệ thống và đáp ứng.
  31. Đơn vị điều khiển (Control Unit)  Clock: Tín hiệu xung nhịp từ mạch tạo dao động.  Instruction register: Mã lệnh từ thanh ghi lệnh đưa đến để giải mã.  Flags: Các cờ từ thanh ghi cờ cho biết trạng thái của CPU và kết quả các phép toán từ khối ALU trước đó.  Control signals from control bus: Các tín hiệu yêu cầu từ bus điều khiển.  Control signals within the processor:  Điều khiển các thanh ghi  Điều khiển ALU  Control signals to control bus:  Điều khiển bộ nhớ  Điều khiển các module I/O
  32. Thanh ghi (Registers)  Các thanh ghi nằm trong CPU.  Chứa các thông tin tạm thời phục vụ cho hoạt động ở thời điểm hiện tại của CPU.  Được coi là mức đầu tiên của hệ thống nhớ.  Tuỳ thuộc vào bộ xử lý cụ thể.  Số lượng thanh ghi nhiều -> tăng hiệu năng của CPU.  Có hai loại thanh ghi:  Các thanh ghi lập trình được  Các thanh ghi không lập trình được
  33. Thanh ghi (Registers)  Thanh ghi địa chỉ: Quản lý địa chỉ của ngăn nhớ hay cổng vào/ra.  Thanh ghi dữ liệu: Chứa các dữ liệu tạm thời.  Thanh ghi đa năng: Có thể chứa địa chỉ hoặc dữ liệu.  Thanh ghi điều khiển/trạng thái: Chứa các thông tin điều khiển và trạng thái của CPU.  Thanh ghi lệnh: chứa lệnh đang được thực hiện.
  34. Thanh ghi (Registers)  Bộ đếm chương trình (Program Counter – PC):  Còn được gọi là con trỏ lệnh (Instruction Pointer - IP),  Giữ địa chỉ của lệnh tiếp theo sẽ được nhận vào,  Sau khi một lệnh được nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tiếp.  Con trỏ dữ liệu (Data Pointer - DP)  Chứa địa chỉ của ngăn nhớ dữ liệu mà CPU muốn truy nhập
  35. Thanh ghi (Registers)  Ngăn xếp (Stack)  Là vùng nhớ có cấu trúc LIFO (Last In – First Out).  Thường dùng để phục vụ chương trình con.  Đáy ngăn xếp là một ngăn nhớ xác định.  Đỉnh ngăn xếp là thông tin nằm ở vị trí trên cùng trong ngăn xếp.  Đỉnh ngăn xếp có thể bị thay đổi.
  36. Thanh ghi (Registers)  Con trỏ ngăn xếp (Stack Pointer - SP):  Chứa địa chỉ đỉnh ngăn xếp,  Khi cất một thông tin vào ngăn xếp: Nội dung của SP giảm.  Khi lấy một thông tin ra: Nội dung của SP tăng.  Khi ngăn xếp rỗng SP trỏ vào đáy  Thanh ghi cơ sở ngăn xếp (Stack Base): chứa địa chỉ vị trí đáy của ngăn xếp.  Thanh ghi giới hạn ngăn xếp (Stack limit): Chứa đị chỉ vị trí tối đa của ngăn xếp.
  37. Thanh ghi (Registers)  Các thanh ghi dữ liệu:  Chứa các dữ liệu tạm thời hoặc các kết quả trung gian.  Cần có nhiều thanh ghi dữ liệu.  Các thanh ghi số nguyên: 8, 16, 32, 64 bit.  Các thanh ghi số dấu chấm động.
  38. Thanh ghi (Registers)  Thanh ghi trạng thái (Status register)  Còn gọi là thanh ghi cờ (Flag Register)  Chứa các thông tin trạng thái của CPU  Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán  Các cờ điều khiển: biểu thị trạng thái điều khiển của CPU
  39. Thanh ghi (Registers)  Cờ phép toán  Cờ Zero (cờ rỗng): được thiết lập lên 1 khi kết quả của phép toán bằng 0.  Cờ Sign (cờ dấu): được thiết lập lên 1 khi kết quả phép toán nhỏ hơn 0  Cờ Carry (cờ nhớ): được thiết lập lên 1 nếu phép toán có nhớ ra ngoài bit cao nhất cờ báo tràn với số không dấu.  Cờ Overflow (cờ tràn): được thiếp lập lên 1 nếu cộng hai số nguyên cùng dấu mà kết quả có dấu ngược lại cờ báo tràn với số có dấu.
  40. Thanh ghi (Registers)  Cờ điều khiển  Cờ Interrupt (Cờ cho phép ngắt)  Nếu IF = 1 CPU ở trạng thái cho phép ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới  Nếu IF = 0 CPU ở trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới
  41. Lệnh máy tính  Mô hình máy tính Von Neumann:
  42. Lệnh máy tính 1. Memory – Bộ nhớ:  Một mảng 2k x m bit  Địa chỉ: k bit  Giá trị của ô nhớ: m bit  Các hoạt động cơ bản:  LOAD: Đọc giá trị từ một ô nhớ  STORE: Viết giá trị đến một ô nhớ.
  43. Lệnh máy tính 1. Memory – Bộ nhớ:  Giao tiếp với bộ nhớ:  MAR: Memory Address Register  MDR: Memory Data Register  Đọc từ một vị trí có địa chỉ “A”: 1. Ghi địa chỉ “A” vào MAR 2. Gửi tín hiệu điều khiển đọc đến bỗ nhớ. 3. Đọc dữ liệu từ MDR  Ghi giá trị “X” vào vị trí “A”: 1. Ghi giá trị “X” vào MDR 2. Ghi địa chỉ “A” vào MAR 3. Gửi tín hiệu điều khiển ghi vào bộ nhớ
  44. Lệnh máy tính 2. Control Unit – Đơn vị điều khiển:  IR: Instruction Register  Chứa lệnh hiện hành  PC: Program Counter  Chứa địa chỉ của lệnh kết cần xử lý  Control Unit đọc một lệnh từ bộ nhớ (trong PC)  Dựa vào lệnh nhận được, khối này phát tín hiệu điều khiển để gọi thành phần tương ứng thực hiện tác vụ.  Một lệnh có thể tốn một hoặc nhiều chu kỳ máy
  45. Lệnh máy tính 3. Processing Unit – Đơn vị xử lý:  Các đơn vị chức năng:  ALU (Arithmetic and Logic Unit),  Nhiều đơn vị chức năng như nhân, căn bậc 2,  LC-3 thực hiện được ADD, AND, NOT  Thanh ghi (Register)  Dung lượng nhỏ, lưu trử rạm thời,  Chứa toán hạng và kết quả thực hiện của các đơn vị chứ năng,  LC-3 có 8 thanh ghi (R0, , R7).  Độ dài từ nhớ (Word size)  Là số bít ALU có thể xử lý trong một lệnh  LC-3 có độ dài từ nhớ là 16 bit.
  46. Lệnh máy tính 4. Input/Output – Nhập/Xuất:  Dùng để đưa dữ liệu vào bộ nhớ máy tính hoặc lấy dữ liệu ra từ bộ nhớ máy tính.  Mỗi thiết bị có giao diện riêng, dạng thanh ghi MAR và MDR của bộ nhớ  LC-3 hỗ trợ keyboard (input) và màn hình (output),  Keyboard: thanh ghi dữ liệu (data register - KBDR); thanh ghi trạng thái (status register - KBSR)  Monitor: data register (DDR) và status register (DSR)  Chương trình truy cập thiết bị thường sử dụng thông qua trình điều khiển thiết bị (driver)
  47. Lệnh máy tính  Lệnh là một đơn vị cơ bản của công việc.  Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu được để thực hiện một thao tác xác định.  Control unit dịch lệnh, sinh ra chuỗi các tín hiệu điều khiển để thực hiện tác vụ.  Thành phần của lệnh:  Opcode: tác vụ cần thực thi  Operands: dữ liệu/địa chỉ dùng cho tác vụ  Các lệnh của máy tính và các định dạng của chúng gọi là kiến trúc tập lệnh (Instruction Set Architecture – ISA).  Mỗi bộ xử lý có một tập lệnh xác định
  48. Lệnh máy tính  Xử lý lệnh: Fetch instruction from memory Decode instruction Evaluate address Fetch operands from memory Execute operation Store result
  49. Lệnh máy tính Chế độ địa chỉ:  Địa chỉ thanh ghi (Register Addressing): Toán hạng là 1 trong 8 thanh ghi  Địa chỉ tức thời (Immediate Addressing): Toán hạng là giá trị chứa trong lệnh, không cần tham chiếu đến bộ nhớ  Địa chỉ tương đối với PC (PC-Relative): Lấy nội dung ô nhớ ở địa chỉ tính từ thanh ghi PC.  Địa chỉ gián tiếp (Indirect): Toán hạng là địa chỉ của con trỏ chỉ đến dữ liệu.  Địa chỉ tương đối với thanh ghi cơ sở (Base relative): Toán hạng là độ dời từ nội dung của thanh ghi.
  50. Lệnh máy tính Lệnh Mô tả chức năng Phép toán ‘+’. Trị 0 tại bit 5 ứng với chế độ thanh ghi; 1 là chế độ địa chỉ ADD trực tiếp Phép toán luận lý. Trị 0 tại bit 5 ứng với chế độ thanh ghi; 1 là chế độ địa AND chỉ trực tiếp BR Branch (If ) – Rẽ nhánh đến một nhãn nếu JMP Jump – Nhảy đến địa chỉ là nội dung của thanh ghi. JSR Jump Subroutine – Đến vị trí chương trình con Jump Subroutine Register – Đến vị trí chương trình con có địa chỉ trong JSRR thanh ghi LD Load Data – Đọc dữ liệu tại ô nhớ tương đối so với thanh ghi PC. LDI Load Indirect – Đọc dữ liệu tại một địa chỉ gián tiếp LDR Load Register – Đọc dữ liệu tại địa chỉ là nội dung của thanh ghi + độ dời
  51. Lệnh máy tính Lệnh Mô tả chức năng LEA Load Effective Address – Đọc dữ liệu tại địa chỉ PC + độ dời NOT Phép toán luận lý. Chỉ làm việc với thanh ghi. RET Return – Trở về từ chương trình con (PC  R7) RTI Return from Interrupt – Trở về sau sự kiện ngắt ST Store Data – Viết dữ liệu vào địa địa chỉ PC + độ dời Store Indirect – Viết dữ liệu đến địa chỉ là một địa chỉ tương đối so với STI thanh ghi PC (mem(mem(PC + độ dời))) STR Store Register – Viết dữ liệu vào thanh ghi + độ dời TRAP Lời gọi hệ thống (R7  PC)
  52. Lệnh máy tính  LC-3 có lệnh 16 bit.  Mỗi lệnh có 4 bit opcode [15, 14, 13, 12]  Ví dụ: “Cộng nội dung của thanh ghi R2 với thanh ghi R6, lưu trữ kết quả vào thanh ghi R6.”
  53. Lệnh máy tính Xử lý lệnh: F  FETCH.  Lấy lệnh kế tiếp từ PC đưa vào IR D  Lấy nội dung của PC đưa vào MAR.  Gửi tín hiệu điều khiển đọc tới bộ nhớ. EA  Đọc nội dung của MDR và đưa vào IR  Thanh ghi PC chỉ đến lệnh kế tiếp OP  PC = PC + 2 EX S
  54. Lệnh máy tính Xử lý lệnh: F  DECODE.  Nhận dạng opcode. D  4 bit [15-12] của lệnh. (‘0001’)  Xác định giá trị các toán hạng từ các bit còn lại EA (với lệnh ADD)  3 bit [8-6] toán hạng nguồn 1 : 010 OP  3 bit [2-0] toán hạng nguồn 2 : 110  3 bit [10-9] toán hạng đích : 110 EX S
  55. Lệnh máy tính Xử lý lệnh:  EVALUATE ADDRESS F  Trong những chỉ thị cần truy cập bộ nhớ, tính D toán địa chỉ sử dụng cho việc truy cập bộ nhớ.  FETCH OPERANDS  Lấy các toán hạng nguồn để thi hành tác vụ. EA  Ví dụ:  Lấy dữ liệu từ bộ nhớ (LDR) OP  Đọc dữ liệu từ thanh ghi EX S
  56. Lệnh máy tính Xử lý lệnh: F  EXECUTE  Lấy các toán hạng nguồn để thi hành tác vụ. D  Ví dụ:  Lấy dữ liệu từ bộ nhớ (LDR) EA  Đọc dữ liệu từ thanh ghi  STORE. OP  Lưu trữ kết quả ra bộ nhớ hoặc thanh ghi. EX S
  57. Lệnh máy tính Ví dụ: Xác định nội dung thực hiện của chương trình sau. .orig x3000 AND R0, R0, #0 LD R1, UNO LD R2, DUE INTEL ADD R0, R0, R2 ADD R1, R1, #-2 BRZ AMD BRNZP INTEL AMD ST R0, TRE HALT UNO .FILL X00DE DUE .FILL X0003 TRE .FILL XFFFF .end