Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý đường ống - Tạ Kim Huệ
• So sánh tốc độ xử lý
– Single ‐ cycle datapath (from the previous lecture)
– Multi‐cycle
– Pipelining
• Kỹ thuật đường ống
– Kỹ thuật đường ống là gì?
– Tại sao lại sử dụng kỹ thuật đường ống?
• Xây dựng bộ xử lý đường ống
– Chia cắt từ bộ xử lý đơn xung nhịp
– Hoạt động của MIPS pipeline
– Điều khiển Pipeline
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 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ý đường ống - Tạ Kim Huệ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý đường ống - Tạ Kim Huệ
ịnh bởi register → stage → register – Clock dịch chuyển dữ liệu đi đến thanh ghi đầu tiên – Dữ liệu tính toán trong các trạng thái (combinational: think an adder ) – Dữ liệu cần đến thanh ghi tiếp theo đúng giờ tương ứng với xung đồng hồ tiếp theo Hiệu năng của việc đường ống hóa MIPS • Thiết kế đơn xung nhịp ( Single‐cycle): – Đồng hồ đặt cho lệnh chậm nhất: 800ps clock time • Thiết kế đường ống hóa Pipelined: – Đồng hồ được đặt cho pha chậm nhất: 200ps • Chú ý rằng một vài lệnh không sử dụng hết các pha. – Cần điều khiển để chắc chắn rằng các pha hoạt động đồng bộ Xây dựng bộ xử lý đường ống Cắt ra từ bộ xử lý đơn xung nhịp Làm thế nào để chia các lệnh MIPS? ( You’ve already seen it ) 1. IF: Instruction fetch from memory 2. ID: Instruction decode and register read 3. EX: Execute operation or calculate address 4. MEM: Access memory 5. WB : Write result back to register Q: Thiếu cái gì trong hình vẽ? Balanced stages Pipeline registers Write back for the RF A: Pipeline registers Cần chúng để lưu trạng thái (lệnh và kết quả) giữa các pha. Các thanh ghi pipeline. • Các thanh ghi lưu giữ thông tin thủ tục giữa các pha. • Dịch chuyển dữ liệu đến các pha tiếp kế tiếp theo xung đồng hồ Clock Chiều chuyển động của đường ống trong MIPS. • Làm thế nào để tải lệnh đi trong pipeline • Chú ý: – Cái gì kết nối trong mỗi giai đoạn ? (combinational ) – Cái gì được lưu trữ trong thanh ghi? ( state) IF for load ID for load EX for load MEM for load WB for load Fixing the WB stage Đường dữ liệu MIPS pipeline HUST-FET, 03/01/2022 34 Thanh ghi trạng thái giữa các giai đoạn thực hiện lệnh để phân cách IF:IFetch ID:Dec EX:Execute MEM: MemAccess WB: WriteBack Read Address Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 16 32 ALU Shift left 2 Add Data Memory Address Write Data Read Data IF/ID Sign Extend ID/EX EX/MEM MEM/WB System Clock The MIPS pipeline Luồng lệnh trong đường ống. Q: Có bao nhiêu lệnh trên một chu kỳ - Instructions Per Cycle (IPC) nếu thực hiện lệnh tải? 1.0 0.2 (one every 5 cycles) 5.0 A: 1.0 Khi đường ống đầy, chỉ nhận được một lệnh mỗi chu kỳ IPC = 1.0 . Chu kỳ 4 có 3 lệnh “cùng hoạt động”: Inst 1 is accessing the data memory (MEM) Inst 2 is using the ALU (EX ) Inst 3 is access the register file (ID ) Điều khiển logic trong Pipeline (Làm thế nào để giải mã các lệnh trong đường ống? ) Điều khiển Pipeline • Có cần toàn bộ thanh ghi lệnh trong các giai đường ống ? • Không, chỉ cần một vài bit cho mỗi pha. Điều khiển MIPS pipeline HUST-FET, 03/01/2022 39 Các tín hiệu điều khiển được xác định trong giai đoạn giải mã và được lưu trong các thanh ghi trạng thái giữa các giai đoạn pipeline Read Address Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 16 32 ALU Shift left 2 Add Data Memory Address Write Data Read Data IF/ID Sign Extend ID/EX EX/MEM MEM/WB Control ALU cntrl RegWrite MemRead MemtoReg RegDst ALUOp ALUSrc Branch PCSrc Chi tiết về điều khiển Pipeline Q: Nơi nào tín hiệu Write Register đi đến? The MEM/WB control bits (top ) instruction in the IF/ID register Data in the MEM/WB register A: Data in the MEM/WB register Các bit thứ tự 20‐16 hoặc 11‐15 được gửi tới thanh ghi MEM/WB để xác định thanh ghi cần ghi dữ liệu Xung đột Pipeline HUST-FET, 03/01/2022 41 Xung đột cấu trúc : yêu cầu sử dụng cùng một tài nguyên cho 2 lệnh khác nhau tại cùng 1 thời điểm Xung đột dữ liệu : yêu cầu sử dụng dữ liệu trước khi nó sẵn sàng Các toán hạng nguồn của 1 lệnh được tạo ra bởi lệnh phía trước vẫn đang nằm trong pipeline Xung đột điều khiển : yêu cầu quyết định điều khiển dòng chương trình trước khi điều kiện rẽ nhánh và giá trị PC mới được tính toán Các lệnh rẽ nhánh, nhảy và ngắt Giải quyết xung đột bằng cách chờ đợi Khối điều khiển pipeline cần phát hiện xung đột Và hành động để giải quyết xung đột Bộ nhớ đơn: Xung đột cấu trúc HUST-FET, 03/01/2022 42 I n s t r. O r d e r Time (clock cycles) lw Inst 1 Inst 2 Inst 4 Inst 3 ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg Đọc dữ liệu từ bộ nhớ Đọc lệnh từ bộ nhớ Sửa: Bộ nhớ dữ liệu và lệnh riêng rẽ (Instr. and Data ) Truy cập tệp thanh ghi HUST-FET, 03/01/2022 43 I n s t r. O r d e r Inst 1 Inst 2 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Sửa xung đột truy cập tệp thanh ghhi bằng cách đọc trong nửa đầu chu kỳ và ghi trong nửa sau chu kỳ add $1 , add $2, $1 , S ườn đồng hồ điều khiển ghi Sườn đồng hồ điều khiển đọc Sử dụng thanh ghi: Xung đột dữ liệu HUST-FET, 03/01/2022 44 I n s t r. O r d e r add $1 , sub $4, $1 ,$5 and $6, $1 ,$7 xor $4, $1 ,$5 or $8, $1 ,$9 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Xung đột đ ọc trước khi ghi (Read before write) Phụ thuộc dữ liệu ngược theo thời gian gây ra xung đột Sử dụng thanh ghi: Xung đột dữ liệu HUST-FET, 03/01/2022 45 I n s t r. O r d e r add $1 , sub $4, $1 ,$5 and $6, $1 ,$7 xor $4, $1 ,$5 or $8, $1 ,$9 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Phụ thuộc dữ liệu ngược theo thời gian gây ra xung đột Xung đột đ ọc trước khi ghi (Read before write) Đọc từ bộ nhớ gây xung đột dữ liệu HUST-FET, 03/01/2022 46 I n s t r. O r d e r lw Inst 4 Inst 3 beq ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Dependencies backward in time cause hazards Giải quyết xung đột: Tạm dừng HUST-FET, 03/01/2022 47 stall stall I n s t r. O r d e r add $1 , ALU IM Reg DM Reg sub $4, $1 ,$5 and $6 ,$1 ,$7 ALU IM Reg DM Reg ALU IM Reg DM Reg Có thể giải quyết xung đột dữ liệu bằng dừng chờ – stall – ảnh hưởng tới CPI Ví dụ: HUST-FET, 03/01/2022 48 1: addi $ s0, $zero, 10 2: addi $s1, $zero, 0 L1: 3: add $t0, $t0, $s1 4: addi $s1, $s1, 1 5: bne $s1, $s0, L1 1 2 3 4 5 6 7 8 9 10 11 12 1 IF ID EX MEM WB 2 IF ID EX MEM WB 3 IF ID EX MEM WB 4 IF ID EX MEM WB 5 IF ID EX MEM WB 3 * IF ID EX MEM WB 4 IF ID EX MEM WB 5 IF ID EX MEM WB Tính CPI cho chương trình 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 IF ID EX MEM WB 2 IF ID EX MEM WB 3 * * IF ID EX MEM WB 4 IF ID EX MEM WB 5 * * IF ID EX MEM WB 3 * * * * IF ID 4 IF 5 Chuyển tiếp dữ liệu HUST-FET, 03/01/2022 50 Lấy kết quả ở thời điểm nó xuất hiện sớm nhất trong bất kỳ thanh ghi pipeline nào, và chuyển tiếp nó đến khối chức năng (VD. ALU) mà cần kết quả tại chu kỳ đồng hồ đó Với khối chức năng ALU: đầu vào có thể từ bất kỳ thanh ghi pipeline nào chứ không cần từ ID/EX bằng cách T hêm bộ chọn và o trước đầu vào của ALU N ối dữ liệu ghi Rd ở EX/MEM hoặc MEM/WB tới một trong 2 hoăc cả 2 thanh ghi pipeline Rs và Rt thuộc giai đoạn EX. T hêm phần điều khiển phần cứng để điều khiển bộ chọn Các khối chức năng khác cũng cần được thêm tương tự (VD. DM) Với chuyển tiếp có thể đạt được CPI = 1 ngay khi có sự phụ thuộc dữ liệu Giải quyết xung đột: Chuyển tiếp dữ liệu HUST-FET, 03/01/2022 51 I n s t r. O r d e r add $1 , ALU IM Reg DM Reg sub $4, $1 ,$5 and $6 ,$1 ,$7 ALU IM Reg DM Reg ALU IM Reg DM Reg Giải quyết xung đột dữ liệu bằng chuyển tiếp kết quả ngay khi chúng sẵn sàng tới nơi cần xor $4, $1 ,$5 or $8, $1 ,$9 ALU IM Reg DM Reg ALU IM Reg DM Reg Giải quyết xung đột: Chuyển tiếp dữ liệu HUST-FET, 03/01/2022 52 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Giải quyết xung đột dữ liệu bằng chuyển tiếp kết quả ngay khi chúng sẵn sàng tới nơi cần ALU IM Reg DM Reg ALU IM Reg DM Reg I n s t r. O r d e r add $1 , sub $4, $1 ,$5 and $6 ,$1 ,$7 xor $4, $1 ,$5 or $8, $1 ,$9 Minh họa triển khai chuyển tiếp HUST-FET, 03/01/2022 53 I n s t r. O r d e r add $1 , sub $4, $1 ,$5 and $6,$7, $1 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg EX forwarding MEM forwarding Xung đột dữ liệu khi chuyển tiếp HUST-FET, 03/01/2022 54 I n s t r. O r d e r add $1 ,$1,$2 ALU IM Reg DM Reg add $1 , $1 ,$3 add $1, $1 ,$4 ALU IM Reg DM Reg ALU IM Reg DM Reg Một loại xung đột dữ liệu xuất hiện khi chuyển tiếp: Xung đột giữa kết quả của lệnh đang ở giai đoạn WB và lệnh đang ở giai đoạn MEM – kết quả nào cần được chuyển tiếp ? Xung đột dữ liệu khi có lệnh lw HUST-FET, 03/01/2022 55 I n s t r. O r d e r lw $1 ,4($2) and $6, $1 ,$7 xor $4, $1 ,$5 or $8, $1 ,$9 ALU IM Reg DM Reg ALU IM Reg DM ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg sub $4, $1 ,$5 Xung đột dữ liệu khi có lệnh lw HUST-FET, 03/01/2022 56 stall I n s t r. O r d e r lw $1 ,4($2) sub $4, $1 ,$5 and $6, $1 ,$7 xor $4, $1 ,$5 or $8, $1 ,$9 ALU IM Reg DM Reg ALU IM Reg DM ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Sẽ vẫn cần một chu kỳ chờ nga y cả khi có chuyển tiếp Xung đột điều khiển HUST-FET, 03/01/2022 57 Khi địa chỉ các lệnh không tuần tự (i.e., PC = PC + 4); xuất hiện khi có các lệnh thay đổi dòng chương trình Lệnh rẽ nhánh không điều kiện (j, jal, jr) Lệnh rẽ nhánh có điều kiện (beq, bne) Ngắt, Exceptions Giải pháp Tạm dừng (ảnh hưởng CPI) Tín toán điều kiện rẽ nhánh càng sớm càng tốt trong giai đoạn pipeline giảm số chu kỳ phải dừng Rẽ nhánh chậm (Delayed branches - Cần hỗ trợ của trình dịch ) Dự đoán và hy vọng điều tốt nhất ! Xung đột điều khiển ít xảy ra, nhưng không có giải pháp giải quyết hiệu quả như chuyển tiếp đối với xung đột dữ liệu Lệnh nhảy: Cần một chu kỳ dừng HUST-FET, 03/01/2022 58 flush I n s t r. O r d e r j j target ALU IM Reg DM Reg ALU IM Reg DM Reg Lệnh nhảy rất ít xuất hiện – chỉ chiếm 3% số lệnh trong SPECint Lệnh nhảy không được giải mã cho đến giai đoạn ID, cần một lệnh xóa (flush) Để xóa , đặt trường mã lệnh của thanh ghi pipeline IF/ID bằng 0 (làm nó trở thành 1 lệnh noop) Giải quyết xung đột lệnh nhảy bằng cách chờ – flush ALU IM Reg DM Reg Xung đột điều khiển lệnh rẽ nhánh HUST-FET, 03/01/2022 59 I n s t r. O r d e r lw Inst 4 Inst 3 beq ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Giải quyết xung đột điều khiển lệnh rẽ nhánh HUST-FET, 03/01/2022 60 flush flush flush I n s t r. O r d e r beq ALU IM Reg DM Reg beq target ALU IM Reg DM Reg ALU Inst 3 IM Reg DM Giải quyết xung đột bằng chờ – flush – nhưng ảnh hưởng CPI ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Giải quyết xung đột điều khiển lệnh rẽ nhánh HUST-FET, 03/01/2022 61 flush I n s t r. O r d e r beq beq target ALU IM Reg DM Reg Inst 3 ALU IM Reg DM Fix branch hazard by waiting – flush ALU IM Reg DM Reg Tính toán điều kiện rẽ nhánh càng sớm càng tốt, tức là trong giai đoạn giải mã chỉ cần 1 chu kỳ chờ ALU IM Reg DM Reg Rẽ nhánh chậm HUST-FET, 03/01/2022 62 Nếu phần cứng cho rẽ nhánh nằm ở giai đoạn ID, ta có thể loại bỏ các chu kỳ chờ rẽ nhánh bằng cách sử dụng rẽ nhánh chậm ( delayed branches ) – luôn thực hiện lệnh theo sau lệnh lệnh rẽ nhánh – rẽ nhánh có tác dụng sau lệnh kế tiếp nó Trình dịch MIPS compiler chuyển 1 lệnh an toàn (không bị ảnh hưởng bởi lệnh rẽ nhánh) tới sau lệnh rẽ nhánh (vào khe trễ). Vì vậy sẽ dấu được sự rẽ nhánh chậm Với pipeline sâu (nhiều giai đoạn), trễ rẽ nhánh tăng cần nhiều lệnh được chèn vào sau lệnh rẽ nhánh Rẽ nhánh chậm đang được thay thế bởi các phương pháp khác tốn kém hơn nhưng mềm dẻo (động) hơn như dự đoán rẽ nhánh Sự phát triển của IC cho phép có bộ dự đoán rẽ nhánh ít tốn kém hơn Sắp xếp lệnh trong rẽ nhánh chậm HUST-FET, 03/01/2022 63 TH A là lựa chọn tốt nhất, điền được khe trễ và giảm I TH B , lệnh sub cần sao chép lại , tăng I TH B và C, phải đảm bảo thực hiện lệnh sub không ảnh hưởng khi không rẽ nhánh add $1,$2,$3 if $2=0 then delay slot A. Từ t rước lệnh rẽ nhánh B. Từ đích lệnh rẽ nhánh C. Từ nhánh sai add $1,$2,$3 if $1=0 then delay slot add $1,$2,$3 if $1=0 then delay slot sub $4,$5,$6 sub $4,$5,$6 becomes becomes becomes if $2=0 then add $ 1,$2,$3 add $1,$2,$3 if $1=0 then sub $4,$5,$6 add $1,$2,$3 if $1=0 then sub $4,$5,$6 Real world pipelines We saw this earlier Q: Which one is going to run at a faster clock frequency ? Little Big Same A: Big The big processor has a longer pipeline, which means each stage will be shorter, so a higher clock frequency . Q: Which pipeline will waste more time on pipeline registers ? Little Big Same A: Big Running at a higher frequency means that a larger percentage of the time will be spent in pipeline registers. Equally important, because there are so many more stages, there will be more registers, which use more power and area . What is AMD doing ? Tóm tắt HUST-FET, 03/01/2022 67 Các bộ xử lý hiện đại đều dùng kỹ thuật pipeline Pipelining không làm giảm độ trễ của 1 nhiệm vụ đơn lẻ, nó giúp tăng thông lượng của toàn bộ Tăng tốc tiềm năng: CPI = 1 và đồng hồ nhanh, Tc nhỏ Tốc độ đồng hồ bị hạn chế bởi giai đoạn pipeline chậm nhất Các giai đoạn pipeline không cân bằng làm giảm hiệu suất Thời gian “ làm đầy ” pipeline và thời gian “ làm trống ” pipeline ảnh hưởng đến độ tăng tốc khi pipeline sâu ( nhiều giai đoạn ) và đoạn mã ngắn Cần phát hiện và giải quyết xung đột Dừng ảnh hưởng xấu tới CPI (làm CPI lớn hơn giá trị lý tưởng 1)
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_4_bo_xu_ly_duong_ong_ta.pptx