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
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
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:
- bai_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ý
- 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
- 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
- Nạp lệnh (Inst. Fetch) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 13
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Lệnh dạng R-Type BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 25
- Lệnh nạp (Load) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 26
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Hiệu suất ống (tt.) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 34
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Lộ trình đúng (Load) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 58
- 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
- Bước ghi MEM (Store) BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 60
- 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
- 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
- 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
- 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
- Đ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
- Đ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
- Đ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
- 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
- Sự ràng buộc & Forwarding BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 69
- 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
- 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
- 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
- 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
- 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
- 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
- Lộ trình với Forwarding BK TP.HCM 9/11/2015 Khoa Khoa học & Kỹ thuật Máy tính 76
- 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
- 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
- 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
- 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
- Stall/Bubble in the Pipeline Or, more BK accurately TP.HCM 9/11/2015 Faculty of Computer Science & Engineering 81
- Datapath with Hazard Detection BK TP.HCM 9/11/2015 Faculty of Computer Science & Engineering 82
- 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
- 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
- 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
- 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
- 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
- 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
- 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