Bài tập Pipeline Bài (4.12 - sách tham khảo chính) Trong tập này, khảo sát pipeline ảnh hưởng tới chu kỳ xung clock (clock cycle time) processor Giả sử công đoạn (stage) pipeline có thời gian thực a b IF 300ps 200ps ID 400ps 150ps EX 350ps 120ps MEM 500ps 190ps WB 100ps 140ps Chu kỳ xung clock cần cho processor processor thiết kế có pipeline khơng pipeline Trả lời: a Processor có pipeline: 500ps (trong cơng đoạn, cơng đoạn chiếm thời gian dài nhất, chọn cơng đoạn đó) Processor không pipeline: 300 + 400 + 350 + 500 + 100 = 1650ps b Processor có pipeline: 200ps Processor khơng pipeline: 200 + 150 + 120 + 190 + 140 = 800ps Thời gian cần thiết để thực lệnh lw cho trường hợp processor có pipeline khơng pipeline Trả lời: a Thời gian lw cần để thực trường hợp processor có pipeline: lw cần trải qua cơng đoạn: IF + ID + EX + MEM + WB, công đoạn Các cơng đoạn có thời gian hồn thành khác nhau, có pipeline đưa vào nên công đoạn thiết kế cho thời gian thực thời gian công đoạn lâu nhất; vậy, thời gian lw cần để thực trường hợp có pipeline: * 500 = 2500ps Thời gian lw cần để thực trường hợp processor khơng có pipeline: 300 + 400 + 350 + 500 + 100 = 1650ps b Thời gian cần cho lw processor có pipeline: * 200 = 1000 ps Thời gian cần cho lw processor không pipeline: 800ps Giả sử lệnh thực thi processor phân rã sau (áp dụng cho câu 4) a b ALU 50% 30% beq 25% 25% lw 15% 30% sw 10% 15% Giả sử khơng có khoảng thời gian rỗi (stalls) xung đột (hazards), phần truy xuất nhớ (MEM) phần truy xuất ghi tập ghi (WB) sử dụng % chu kỳ tồn chương trình Trả lời: phần truy xuất nhớ liệu (MEM) thao tác truy xuất nhớ liệu thật thực dạng lệnh: lw sw Vì % chu kỳ MEM có thao tác thật sự: a 15% + 10% = 25% b 30% + 15% = 45% phần truy xuất ghi tập ghi (WB) thao tác truy xuất ghi khối ghi thật xuất loại lệnh: ALU lw Vì % chu lỳ WB có thao tác thật sự: a 50% + 15% = 65% b 30% + 30 = 60% Chú ý: Bảng sau liệt kê chi tiết lệnh thật cần không cần công đoạn IF ID EX MEM WB lw x x x x x sw x x x x ALU (add, sub, AND, OR, slt) x x x x Branch (beq) x x x (Lệnh branch thực stage stages tùy vào số thay đổi, có cho vấn đề này, tập nói rõ) Giả sử có thiết kế sau: lệnh sử dụng giai đoạn cần có nó, lấy nhiều chu kỳ để hoàn thành, lệnh phải hoàn thành xong lệnh khác nạp vào Thiết kế tạm gọi thiết kế đa chu kỳ Theo kiểu này, lệnh qua công đoạn mà thực cần (ví dụ, sw sử dụng cơng đoạn, khơng có cơng đoạn WB) Tính chu kỳ xung clock, so sánh thời gian thực thi thiết kế đa chu kỳ với thiết kế đơn chu kỳ (single cycle design) pipeline (Chú ý: lw: sử dụng stage; sw: stage (không WB); ALU: stage (không MEM), beq stage (không WB)) Trả lời: Chu kỳ xung clock - Chu kỳ xung clock thiết kế pipeline a 500 ps b 200 ps - Chu kỳ xung clock thiết kế đơn chu kỳ a 1650 b 800 - Chu kỳ xung clock thiết kế đa chu kỳ: giống pipeline Execution time a = 0.15 × + 0.85 × = 4.15 = = 3.3 b 0.3 × + 0.7 × = 4.30 = =4 (Gợi ý: - Thời gian thực thi n lệnh pipeline = 5T + (n-1).T với T chu kỳ pipeline - Thời gian thực thi n lệnh kiểu thiết kế đơn chu kỳ = nT’ (với T’ thời gian chu kỳ xung clock đơn chu kỳ) - Thời gian thực thi n lệnh kiểu thiết kế đa chu kỳ = (0.15 × + 0.85 × 4) nT’’ (với T’’ thời gian chu kỳ xung clock đa chu kỳ, T pipeline), có 15% lệnh lw chiếm chu kỳ, 85% lệnh khác chu kỳ (cho câu a) ự ủ đ ự ủ Khi n lớn, ờ ự ỳ ự ủ đ ự ủ ủ ự = ỳ ủ ỳ = 0.15 × + 0.85 × = Khi n lớn, = Bài (4.13 – sách tham khảo chính) Cho chuỗi lệnh sau : a lw $1, 40($6) add $6, $2, $2 sw $6, 50($1) b lw $5, -16($5) sw $5, -16($5) add $5, $5, $5 Trong trường hợp pipeline tầng khơng dùng kỹ thuật nhìn trước (no forwarding), sử dụng lệnh ‘nop’ để giải xung đột xảy (nếu có) chuỗi lệnh Trong trường hợp pipeline tầng có kỹ thuật nhìn trước (forwarding), sử dụng lệnh ‘nop’ để giải xung đột xảy (nếu có) chuỗi lệnh Chú ý: Vẽ rõ ràng hình ảnh chu kỳ pipeline đoạn lệnh thực thi Cho bảng thể chu kỳ xung clock sau Không forwarding Có forwarding đầy đủ (full-forwarding) Chỉ có ALU-ALU forwarding, khơng có MEM-ALU forwarding a 300ps 400ps 360ps b 200ps 250ps 220ps Chú ý : ALU-ALU forwarding EX-EX forwarding MEM-ALU forwarding MEM-EX forwarding 3 Tính thời gian thực thi chuỗi lệnh trường hợp khơng forwarding có full-forwarding? Sự tăng tốc đạt việc đưa kỹ thuật full-forwarding vào pipeline so với không forwarding bao nhiêu? Giả sử processor có kỹ thuật ALU-ALU forwarding (khơng có MEM-ALU forwarding), sử dụng lệnh ‘nop’ để giải xung đột liệu Tính thời gian thực thi chuỗi lệnh áp dụng ALU-ALU forwarding? Sự tăng tốc đạt việc dùng ALU-ALU forwarding so với không forwarding bao nhiêu? Trả lời: Thêm lệnh nop để giải xung đột liệu trường hợp không forwarding a lw $1, 40($6) add $6, $2, $2 nop nop sw $6, 50($1) Lưu ý: Cho đoạn lệnh sau add $6, $2, $2 sw $6, 50($1) Với tất lệnh, ghi cần lấy giá trị lấy giai đoạn giải mã; riêng với lệnh sw, ghi $6 ví dụ xảy hai trường hợp: - Giá trị $6 lấy công đoạn ID tất lệnh khác Giải xung đột trường hợp sw phải chờ cho ID sw trùng với WB add (thêm nop giữa) - Hoặc giá trị $6 cần sẵn sàng trước lệnh sw vào MEM Giải xung đột trường hợp sw phải chờ cho EX sw trùng với WB add (thêm nop giữa) Các bạn dùng cách (nhưng khuyến khích dùng trường hợp 2) Phần giải phía sau giải theo trường hợp 1, trường hợp có giải file tiếng Anh Hình ảnh chu kỳ pipeline lw $1, 40($6) IF add $6, $2, $2 nop nop sw $6, 50($1) ID IF EX ID o MEM WB EX MEM o o o o IF WB o o ID o o EX o MEM WB o MEM WB EX MEM WB b lw $5, -16($5) nop nop sw $5, -16($5) add $5, $5, $5 Hình ảnh chu kỳ pipeline lw $5, -16($5) IF nop nop sw $5, -16($5) add $5, $5, $5 ID o EX o o MEM o o IF WB o o ID IF o o EX ID Thêm lệnh nop để giải xung đột liệu trường hợp có forwarding a lw $1, 40($6) add $6, $2, $2 sw $6, 50($1) Hình ảnh chu kỳ pipeline lw $1, 40($6) IF add $6, $2, $2 sw $6, 50($1) b lw $5, -16($5) nop ID IF EX ID IF MEM WB EX MEM WB ID EX MEM WB sw $5, -16($5) add $5, $5, $5 Hình ảnh chu kỳ pipeline lw $5, -16($5) IF nop sw $5, -16($5) add $5, $5, $5 ID o EX o IF MEM o ID IF WB o EX ID o MEM WB EX MEM WB a Chuỗi lệnh trường hợp không forwarding lw $1, 40($6) add $6, $2, $2 nop nop sw $6, 50($1) Đoạn lệnh chu kỳ xung clock để thực nên thời gian thực thi = × 300 = 2700 ps Chuỗi lệnh trường hợp full-forwarding lw $1, 40($6) add $6, $2, $2 sw $6, 50($1) Đoạn lệnh chu kỳ xung clock để thực nên thời gian thực thi = × 400 = 2800 ps Tăng tốc đạt được: 2700/2800 = 0.96 b Thời gian thực thi khơng forwarding : 1800ps Thời gian thực thi có full-forwarding : 2000ps Sự tăng tốc đạt : 1800/2000 = 0.9 a lw $1, 40($6) add $6, $2, $2 nop sw $6, 50($1) b lw $5, -16($5) nop nop sw $5, -16($5) add $5, $5, $5 a Thời gian thực thi với ALU-ALU forwarding: × 360 = 2880ps Sư tăng tốc đạt = 2700/2880 = 0.9375ps b Thời gian thực thi với ALU-ALU forwarding: × 220 = 1980ps Sư tăng tốc đạt = 1800/1980 = 0.91ps Bài Cho đoạn lệnh sau : a lw $1, 40($2) add $2, $3, $3 add $1, $1, $2 sw $1, 20($2) b add $1, $2, $3 sw $2, 0($1) lw $1, 4($2) add $2, $2, $1 c lw $1, 40($6) add $2, $3, $1 add $1, $6, $4 sw $2, 20($4) add $1, $1, $4 d add $1, $5, $3 sw $1, 0($2) lw $1,4($2) add $5, $5, $1 sw $1, 0($2) Trong trường hợp pipeline tầng, khơng nhìn trước (no forwarding), sử dụng lệnh nop để giải có xung đột xảy chuỗi lệnh Trong trường hợp pipeline tầng, có nhìn trước (forwarding), sử dụng lệnh nop để giải có xung đột xảy chuỗi lệnh Chú ý: Vẽ rõ ràng hình ảnh chu kỳ pipeline đoạn lệnh thực thi Trả lời : (Lưu ý: với lệnh sw $1, imm($2) tất giải giải theo kiểu nội dung ghi $1 đọc ID, trường hợp lại $1 cần sẵn sàng trước MEM sinh viên tự giải) a b Khơng forwarding lw $1, 40($2) add $2, $3, $3 nop nop add $1, $1, $2 nop nop sw $1, 20($2) Có forwarding lw $1, 40($2) add $2, $3, $3 add $1, $1, $2 sw $1, 20($2) add $1, $2, $3 nop nop sw $2, 0($1) lw $1, 4($2) nop nop add $2, $2, $1 add $1, $2, $3 sw $2, 0($1) lw $1, 4($2) nop add $2, $2, $1 c d lw $1, 40($6) nop nop add $2, $3, $1 add $1, $6, $4 nop* sw $2, 20($4) add $1, $1, $4 lw $1, 40($6) nop add $2, $3, $1 add $1, $6, $4 sw $2, 20($4) add $1, $1, $4 add $1, $5, $3 nop nop sw $1, 0($2) lw $1,4($2) nop nop add $5, $5, $1 sw $1, 0($2) add $1, $5, $3 sw $1, 0($2) lw $1,4($2) nop add $5, $5, $1 sw $1, 0($2) ... hợp pipeline tầng, khơng nhìn trước (no forwarding), sử dụng lệnh nop để giải có xung đột xảy chuỗi lệnh Trong trường hợp pipeline tầng, có nhìn trước (forwarding), sử dụng lệnh nop để giải có. .. dụ, sw sử dụng cơng đoạn, khơng có cơng đoạn WB) Tính chu kỳ xung clock, so sánh thời gian thực thi thiết kế đa chu kỳ với thiết kế đơn chu kỳ (single cycle design) pipeline (Chú ý: lw: sử dụng... $5 Trong trường hợp pipeline tầng khơng dùng kỹ thuật nhìn trước (no forwarding), sử dụng lệnh ‘nop’ để giải xung đột xảy (nếu có) chuỗi lệnh Trong trường hợp pipeline tầng có kỹ thuật nhìn trước