Bài giảng Kiến trúc máy tính - Chương 4: Bộ Xử lý

Dẫn nhập
 Các yếu tố xác định hiệu xuất Bộ Xử lý
 Số lệnh (Instruction Count)
 Xác định bởi “Kiến trúc tập lệnh” ISA và Trình biên dịch
 Số chu kỳ cho mỗi lệnh và thời gian chu kỳ đ/hồ
 Xác định bằng phần cứng CPU
 Đề cập 2 mô hình thực hiện MIPS
 Phiên bản đơn giản
 Phiên bản thực (cơ chế đường ống)
 Nhóm các lệnh đơn giản, nhưng đặc trưng:
 Truy cập bộ nhớ: lw, sw
 Số học/luận lý: add, sub, and, or, slt
 Nhảy, rẽ nhánh (chuyển điều khiển): beq, j 
pdf 128 trang thiennv 07/11/2022 5020
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 - Chương 4: Bộ Xử lý", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_4_bo_xu_ly.pdf

Nội dung text: Bài giảng Kiến trúc máy tính - Chương 4: Bộ Xử lý

  1. Phương thức làm việc dựa trên xung đồng hồ (Clocking Methodology)  Mạch tổ hợp sẽ thay đổi giá trị dữ liệu trong chu kỳ đồng hồ  Giữa các cạnh của xung  Trạng thái của phần tử trước Đầu vào của phần tử sau (tức thời)  Độ trễ dài nhất quyết định độ dài chu kỳ BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 11
  2. Xây dựng lộ trình xử lý  Lộ trình xử lýDatapath  Các phần tử chức năng xử lý dữ liệu và địa chỉ trong CPU  Registers, ALUs, mux’s, memories,  Lộ trình sẽ được xây dựng từng bước từ thấp đến cao (đơn giản đến chi tiết)  Chi tiết và cụ thế hóa từng phần, bắt đầu từ Nạp lệnh (Instruction Fetch) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 12
  3. Nạp lệnh (Inst. Fetch) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 13
  4. Lệnh dạng R (R-Format)  Đọc 2 toán hạng là thanh ghi  Thực hiện phép Số học/Luận lý  Ghi kết quả vào thanh ghi BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 14
  5. Lệnh Load/Store  Đọc toán hạng thanh ghi  Tính địa chỉ của bộ nhớ (16-bit độ dời)  Sử dụng ALU, nhưng độ dời phát triển ra 32-bit có dấu  Nạp (Load): Đọc bộ nhớ & cập nhật thanh ghi  Cất (Store): Ghi giá trị (register) Bộ nhớ BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 15
  6. Lệnh rẽ nhánh  Đọc toán hạng (thanh ghi)  So sánh toán hạng  Sử dụng ALU, subtract and check Zero  Tính toán địa chỉ đích  Mở rộng 16 sang 32 bit có dấu (địa chỉ)  Dịch trái 2 vị trí (1 word = 4 bytes)  Cộng PC=PC + 4  Đã được tính tự động khi nạp lệnh BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 16
  7. Lệnh rẽ nhánh Just re-routes wires Sign-bit wire BK replicated TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 17
  8. Tổng hợp các phần tử  First-cut data path does an instruction in one clock cycle  Each datapath element can only do one function at a time  Hence, we need separate instruction and data memories  Use multiplexers where alternate data sources are used for different instructions BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 18
  9. Lộ trình tổng hợp (R-Type/Load/Store) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 19
  10. Lộ trình toàn phần BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 20
  11. Bộ điều khiển tín hiệu ALU  ALU dùng trong những lệnh  Load/Store: F = add  Branch: F = subtract  R-type: F phụ thuộc vào hàm (funct) ALU control Function 0000 AND 0001 OR 0010 add 0110 subtract 0111 set-on-less-than 1100 NOR BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 21
  12. Bộ điều khiển tín hiệu ALU (tt.)  Giả sử 2-bit ALUOp từ opcode của lệnh  Tín hiệu đ/khiển ALU từ mạch tổ hợp như sau: opcode ALUOp Operation funct ALU function ALU control lw 00 load word XXXXXX add 0010 sw 00 store word XXXXXX add 0010 beq 01 branch equal XXXXXX subtract 0110 R-type 10 add 100000 add 0010 subtract 100010 subtract 0110 AND 100100 AND 0000 OR 100101 OR 0001 set-on-less-than 101010 set-on-less-than 0111 BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 22
  13. Bộ phận điều khiển chính  Các tín hiệu đ/khiển giải mã từ lệnh R-type 0 rs rt rd shamt funct 31:26 25:21 20:16 15:11 10:6 5:0 Load/ 35 or 43 rs rt address Store 31:26 25:21 20:16 15:0 Branch 4 rs rt address 31:26 25:21 20:16 15:0 opcode always read, write for sign-extend read except R-type and add for load and load BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 23
  14. Lộ trình với tín hiệu đ/khiển BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 24
  15. Lệnh dạng R-Type BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 25
  16. Lệnh nạp (Load) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 26
  17. Rẽ nhánh với đ/kiện (=) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 27
  18. Thực hiện lệnh Jumps Jump 2 address 31:26 25:0  Jump sử dụng địa chỉ trong 1 từ (word)  Cập nhật PC bằng cách tổng hợp từ  4 bits cao của thanh ghi cũ PC  26-bit jump address  00  Yêu cầu thêm các tín hiệu đ/khiển giải mã từ opcode BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 28
  19. Lộ trình với lệnh Jumps BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 29
  20. Vấn đề hiệu xuất  Trễ tối đa sẽ xác định độ dài chu kỳ đồng hồ  Lộ trình dài nhất: lệnh load  Instruction memory register file ALU data memory register file  Không khả thi nếu thay đổi chu kỳ xung theo lệnh khác nhau  Phá vỡ nguyên tắc thiết kế  Cái gì phổ biến nhất thực hiện nhanh nhất  Chúng ta sẽ cải thiện hiệu xuất theo cơ chế ống BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 30
  21. Giới thiệu: Cơ chế ống  Ví dụ thực tế: Quy trình giặt đồ (các bước thực hiện phủ lấp)  Các bước thực hiện đồng thời: cải thiện HS  4 mẻ:  Tăng tốc = 8/3.5 = 2.3  Giặt không ngừng:  Tăng tốc = 2n/0.5n + 1.5 ≈ 4 = số bước/mẻ giặt BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 31
  22. Cơ chế ống trong MIPS  Mỗi lệnh: 5 công đoạn (mỗi bước/công đoạn), đó là 1. IF: Nạp lệnh (Inst. Fetch) từ bộ nhớ 2. ID: Giải mã (Inst. Decode) & đọc th/ghi 3. EX: Thực thi (Ex.) hay tính địa chỉ 4. MEM: Truy cập bộ nhớ 5. WB: Cất kết trở lại th/ghi BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 32
  23. Hiệu suất ống  Giả sử thời gian thực hiện cho các công đoạn  100ps để đọc hoặc ghi thanh ghi  200ps cho các công đoạn khác  So sánh lộ trình xử lý ống và chu kỳ đơn như bảng dưới đây: Lệnh Nạp lệnh Đọc ALU op Truy cập Ghi Tổng thời th/ghi bộ nhớ th/ghi gian lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps 700ps R-format 200ps 100 ps 200ps 100 ps 600ps beq 200ps 100 ps 200ps 500ps BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 33
  24. Hiệu suất ống (tt.) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 34
  25. Tăng tốc của ống  Nếu công việc các công đoạn như nhau  Ví dụ: có cùng thời gian thực hiện  Time between instructionspipelined = Time between instructionsnonpipelined Number of stages  Nếu các công đoạn không đều nhau Độ tăng tốc sẽ ít hơn  Độ tăng tốc thể hiện hiệu suất (throughput) tăng  Vì thời gian thực thi cho mỗi lệnh không thay đổi (giảm) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 35
  26. Cơ chế ống với MIPS ISA  MIPS ISA được thiết kế với cơ chế ống  Tất cả các lệnh 32-bits  Dễ dàng nạp & giải mã trong 1 chu kỳ  Khác với x86: 1- đến 17-bytes/lệnh  Lệnh ít dạng và có quy tắc  Giải mã & đọc th/ghi trong 1 chu kỳ  Địa chỉ trong lệnh Load/store  Có thể tính trong công đoạn 3, truy cập bộ nhớ trong công đoạn 4  Các toán hạng bộ nhớ truy cập trong 1 cùng 1 chu kỳ BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 36
  27. Rủi ro (Hazards) trong cơ chế ống  Có trường hợp: Lệnh kế tiếp không thể thực hiện trong chu kỳ kế Rủi ro. Tồn tại 3 loại rủi ro:  Rủi ro về cấu trúc (Structure Hazard)  Một tài nguyên được yêu cầu, nhưng bận  Rủi ro về dữ liệu  Đợi lệnh trước hoàn tất tác vụ đọc/ghi dữ  Rủi ro về điều khiển  Quyết định bước tiếp theo phụ thuộc vào BK lệnh trước đó TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 37
  28. Rủi ro về cấu trúc EX Đọc dữ liệu từ lw IF ID MEM WB Bộ nhớ EX Inst 1 IF ID MEM WB EX Inst 2 IF ID MEM WB Nạp lệnh bị EX Inst 3 ngưng do xung IF ID MEM WB đột truy cập bộ nhớ tại chu kỳ EX Inst 4 này IF ID MEM WB BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 38
  29. Rủi ro về cấu trúc  Tranh chấp sử dụng tài nguyên  Trong MIPS, cơ chế ống với 1 loại bộ nhớ  Load/store yêu cầu đọc/ghi dữ liệu  Nạp lệnh sẽ bị “kẹt” trong chu kỳ đó  Trường hợp đó gọi là sự “khựng lại” hay “bong bóng” (bubble)  Vì vậy, trong cơ chế ống lộ trình xử lý lệnh cần tách 2 bộ nhớ riêng biệt (lệnh, data)  ít ra thì 2 vùng cache riêng BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 39
  30. Rủi ro về dữ liệu  Kết quả truy xuất dữ liệu thuộc lệnh trước ảnh đến lệnh sau  add $s0, $t0, $t1 sub $t2, $s0, $t3 BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 40
  31. Xúc tiến sớm (Forwarding)  Sử dụng ngay kết quả vừa tính toán xong của lệnh trước  Không cần đợi kết quả cất lại thanh ghi  Cần có thêm kết nối trong lộ trình BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 41
  32. Rủi ro dữ liệu khi dùng Load  Forwarding không phải lúc nào cũng giải quyết sự “khựng lại” trong ống  Nếu cần kết quả là lệnh truy xuất bộ nhớ cho lệnh kế  Không thể lùi lại! BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 42
  33. Khắc phục  Sắp xếp lại code để tránh sử dụng kết quả của lệnh load trong lệnh kế  C code: A = B + E; C = B + F; lw $t1, 0($t0) lw $t1, 0($t0) lw $t2, 4($t0) lw $t2, 4($t0) stall add $t3, $t1, $t2 lw $t4, 8($t0) sw $t3, 12($t0) add $t3, $t1, $t2 lw $t4, 8($t0) sw $t3, 12($t0) stall add $t5, $t1, $t4 add $t5, $t1, $t4 sw $t5, 16($t0) sw $t5, 16($t0) BK 13 cycles 11 cycles TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 43
  34. Rủi ro về điều khiển  Rẽ nhánh thay đổi lộ trình thực hiện  Nạp lệnh kế phụ thuộc vào kết quả của điều kiện rẽ nhánh  Với cơ chế ống: khó xác định đúng  Thực hiện trong công đoạn giải mã lệnh  Trong cơ chế ống của MIPS  Giá trị các thanh ghi được so sánh & tính ra địa chỉ đích  Sử dụng thêm phần cứng để thực hiện trong bước giải mã lệnh BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 44
  35. Sự “khựng lại” trong rẽ nhánh  Đợi cho đến khi xác định được khi nào sẽ nạp lệnh kế. BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật máy tính 45
  36. Tiên đoán khi có rẽ nhánh  Đối với ống dài: có thể xác định sớm  Sự “khựng lại” giảm hiệu xuất  Tiên đoán trước  50:50 “Khựng lại”  Trong cơ chế ống MIPS  Có thể tiên đóan  Tự động lấy lệnh kế BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 46
  37. Ví dụ: Tiên đoán 50:50 Prediction correct Prediction incorrect BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 47
  38. Giải pháp tiên đoán thực tế  Tiên đoán tĩnh (Static branch prediction)  Dựa trên hành vi rẽ nhánh thường xảy ra  Ví dụ: Vòng lặp với phát biểu if  Tiên đoán sẽ là rẽ nhánh quay lại (backward branches)  Tiên đoán rẽ nhánh xuôi (forward) không xuất hiện  Tiên đoán động (Dynamic branch prediction)  Bộ phận phần cứng sẽ đo đạc hành vi xảy ra  Ví du: lưu lại lịch sử mỗi rẽ nhánh  Giả thiết tương lai từ việc đo đạc  Nếu không đúng, cập nhật lại lịch sử, chấp nhận sự “khựng lại” BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 48
  39. Tổng kết về Cơ chế ống  Cơ chế ống cải thiện hiệu suất thực hiện lệnh (throughput)  Thực hiện nhiều lệnh cùng lúc  Mỗi lệnh có thời gian thực thi không đổi  Vấn đề nảy sinh: rủi ro  Cấu trúc, dữ liệu , điều khiển  Thiết kế tập lệnh (theo nguyên tắc thiết kế) có thể làm phức tạp quá trình thực thi cơ chế ống BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 49
  40. Lộ trình MIP theo bước (ống) MEM: rủi ro điều khiển Dòng từ phải qua trái WB: Rủi ro: Dũ rủi ro liệu, điều dữ BK khiển liệu TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 50
  41. Thanh ghi đệm giữa các bước  Cần có các thanh ghi đệm giữa các công đoạn (bước): lưu t/tin bước trước đó BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 51
  42. Hoạt động trong ống  Các lệnh sẽ được thực hiện theo luồng trong lộ trình dữ liệu ống (theo từng chu kỳ)  Biểu diễn theo chu kỳ đơn  Thể hiện lệnh/chu kỳ đồng hồ  Tô đậm các tài nguyên sử dụng  Ngược với biểu diễn theo đa chu kỳ  Biểu đồ tác vụ theo thời gian  Chúng ta sẽ quan sát quá trình thực hiện từng bước với lệnh load & store BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 52
  43. Bước Nạp lệnh (Load, Store, ) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 53
  44. Bước Giả mã lệnh (Load, Store, ) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 54
  45. Bước thực hiện lệnh (Load) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 55
  46. Bước truy cập bộ nhớ (Load) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 56
  47. Bước ghi thanh ghi (Load) Wrong register number BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 57
  48. Lộ trình đúng (Load) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 58
  49. Bước thực hiện (Store) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 59
  50. Bước ghi MEM (Store) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 60
  51. Bước ghi lên bộ nhớ (Store) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 61
  52. Biểu đồ ống đa bước (chu kỳ) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 62
  53. Biểu đồ ống đa bước (tt.)  Cách biểu diễn truyền thống BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 63
  54. Biểu đồ ống đơn bước  Trạng thái của ống trong 1 chu kỳ BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 64
  55. Điều khiển cơ chế ống (đã đơn giản) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 65
  56. Điều khiển cơ chế ống (tt.)  Tín hiệu điều khiển xác lập từ lệnh:  thực hiện đơn bước BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 66
  57. Điều khiển cơ chế ống BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 67
  58. Rủi ro dữ liệu khi thực hiện lệnh ALU  Quan sát đoạn code sau: sub $2, $1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2)  Ta có thể áp dụng phương pháp forwarding để giải quyết rủi ro  Làm thế nào để xác định khi nào BK forwarding? TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 68
  59. Sự ràng buộc & Forwarding BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 69
  60. Phát hiện yêu cầu Forward  Chuyển Chỉ số thanh ghi theo đường ống  Ví dụ: ID/EX.RegisterRs = Chỉ số của Rs trong thanh ghi ống giai đoạn ID/EX  Chỉ số thanh ghi toán hạng (ALU) trong công đoạn thực hiện (EX) lệnh sẽ là  ID/EX.RegisterRs, ID/EX.RegisterRt  Rủi ro dữ liệu xuất hiện khi: Xúc tiến sớm 1a. EX/MEM.RegisterRd = ID/EX.RegisterRs từ th/ghi EX/MEM 1b. EX/MEM.RegisterRd = ID/EX.RegisterRt Xúc tiến sớm 2a. MEM/WB.RegisterRd = ID/EX.RegisterRs từ th/ghi 2b. MEM/WB.RegisterRd = ID/EX.RegisterRt MEM/WB BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 70
  61. Phát hiện yêu cầu Forward (tt.)  Nhưng chỉ với trường hợp lệnh cần xúc tiến sớm có ghi ra thanh ghi, đó là  EX/MEM.RegWrite, MEM/WB.RegWrite  Và thanh ghi Rd không phải là th/ghi $zero  EX/MEM.RegisterRd ≠ 0, MEM/WB.RegisterRd ≠ 0 BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 71
  62. Lộ trình xúc tiến sớm BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 72
  63. Các điều kiện xúc tiến sớm  EX hazard  if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10  if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10  MEM hazard  if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01  if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) BK ForwardB = 01 TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 73
  64. Rủi ro dữ liệu đúp  Quan sát 3 lệnh dưới đây: add $1,$1,$2 add $1,$1,$3 add $1,$1,$4  Both hazards occur  Want to use the most recent  Revise MEM hazard condition  Only fwd if EX hazard condition isn’t true BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 74
  65. Revised Forwarding Condition  MEM hazard  if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01  if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01 BK TP.HCM 9/11/2015 Faculty of Computer Science & Engineering 75
  66. Lộ trình với Forwarding BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 76
  67. Rủi ro dữ liệu với lệnh Load Phải “khựng lại” 1 bước BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 77
  68. Phát hiện rủi ro do lệnh Load  Check when using instruction is decoded in ID stage  ALU operand register numbers in ID stage are given by  IF/ID.RegisterRs, IF/ID.RegisterRt  Load-use hazard when  ID/EX.MemRead and ((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt))  If detected, stall and insert bubble BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 78
  69. Làm “Khựng lại” ?  Giữ các giá trị điều khiển thanh ghi trong bước ID/EX bằng 0  EX, MEM & WB thực hiện nop (no-op)  Không cập nhật PC & IF/ID register  Sử dụng lại bước giải mã lệnh  Nạp lệnh tiếp theo lần nữa  1-cyc allows MEM to read data for lw  Can subsequently forward to EX stage BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 79
  70. Stall/Bubble in the Pipeline Stall inserted here BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 80
  71. Stall/Bubble in the Pipeline Or, more BK accurately TP.HCM 9/11/2015 Faculty of Computer Science & Engineering 81
  72. Datapath with Hazard Detection BK TP.HCM 9/11/2015 Faculty of Computer Science & Engineering 82
  73. Sự “khựng lại” & Hiệu suất  Sự “Khựng lại” làm giảm hiệu suất  Nhưng cần thiết để cho kết quả đúng  Biên dịch có thể sắp xếp lại trật tực các lệnh sao cho rủi ro và sự “ khựng lại” không xảy ra  Yêu cầu thông tin về cấu trúc thực hiện trong ống BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 83
  74. Rủi ro điều khiển (rẽ nhánh)  Nếu rẽ nhánh được xác định trong bước MEM Flush these instructions (Set control values to 0) BK PC TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 84
  75. Reducing Branch Delay  Move hardware to determine outcome to ID stage  Target address adder  Register comparator  Example: branch taken 36: sub $10, $4, $8 40: beq $1, $3, 7 44: and $12, $2, $5 48: or $13, $2, $6 52: add $14, $4, $2 56: slt $15, $6, $7 BK 72: lw $4, 50($7) TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 85
  76. Ví dụ: Rẽ nhánh xảy ra BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 86
  77. Ví dụ: Rẽ nhánh xảy ra (tt.) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 87
  78. Rủi ro dữ liệu với rẽ nhánh  Nếu 1 th/ghi của lệnh so sánh là kết quả của 1 lệnh ALU trước đó (2 hay 3 lệnh) add $1, $2, $3 IF ID EX MEM WB add $4, $5, $6 IF ID EX MEM WB IF ID EX MEM WB beq $1, $4, target IF ID EX MEM WB  Giải quyết bằng xúc tiếp sớm BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 88
  79. Rủi ro dữ liệu với rẽ nhánh (tt.)  Nếu 1 th/ghi của lệnh so sánh là kết quả của lệnh ALU ngay trước đó hoặc lệnh Load trước đó 2 lệnh  Cần 1 bước “khựng lại” lw $1, addr IF ID EX MEM WB add $4, $5, $6 IF ID EX MEM WB beq stalled IF ID beq $1, $4, target ID EX MEM WB BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 89