Bài giảng Kiến trúc về các máy tính

Tất cả các bộ xử lý hiện đại đều dùng pipeline để tăng hiệu suất (CPI=1 và đồng hồ nhanh - fc lớn)  Tốc độ đồng hồ pipeline bị giới hạn bởi giai đoạn pipeline chậm nhất – thiết kế pipeline cân bằng là rất quan trọng  Cần phát hiện và giải quyết xung đột trong pipeline  Xung cấu trúc – giải quyết: thiết kế pipeline đúng  Xung đột dữ liệu - Dừng (ảnh hưởng CPI)

pdf77 trang | Chia sẻ: hao_hao | Lượt xem: 2995 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiến trúc về các máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
KIẾN TRÚC MÁY TÍNH ET4270 TS. Nguyễn Đức Minh [Adapted from Computer Organization and Design, 4th Edition, Patterson & Hennessy, © 2008, MK] [Adapted from Computer Architecture lecture slides, Mary Jane Irwin, © 2008, PennState University] Tổ chức lớp Số tín chỉ 3 (3-1-1-6) Giảng viên TS. Nguyễn Đức Minh Văn phòng C9-401 Email minhnd1@gmail,com Website https://sites.google.com/site/fethutca/home • Username: ca.fet.hut@gmail.com • Pass: dungkhoiminh Sách Computer Org and Design, 3rd Ed., Patterson &Hennessy, ©2007 Digital Design and Computer Architecture, David Money Harris Thí nghiệm 3 bài Bài tập Theo chương, đề bài xem trên trang web HUST-FET, 13/03/20112Giới thiệu Điểm số Điều kiện thi Lab Bài thi giữa kỳ 30% Bài tập 20% (Tối đa 100 điểm) Tiến trình 10% Tối đa: 100 điểm, Bắt đầu: 50 điểm Tích lũy, trừ qua trả lời câu hỏi trên lớp và đóng góp tổ chức lớp Bài thi cuối kỳ 70% HUST-FET, 13/03/20113Giới thiệu Lịch học  Thời gian:  Từ 14h00 đến 17h20  Lý thuyết: 11 buổi x 135 phút / 1 buổi  Bài tập: 4 buổi x 135 phút / 1 buổi  Thay đổi lịch (nghỉ, học bù) sẽ được thông báo trên website trước 2 ngày HUST-FET, 13/03/20114Giới thiệu Kết luận chương 2  Dữ liệu và chỉ thị cho máy tính được biểu diễn bằng các chuỗi bit. Giá trị của dữ liệu, ý nghĩa của chỉ thị máy được quy định trong phương pháp mã hóa.  Thiết kế kiến trúc tập lệnh:  Kích thước và kiểu dữ liệu  Phép toán: loại nào được hỗ trợ  Định dạng và mã hóa chỉ thị: Chỉ thị được giải mã thế nào?  Vị trí toán hạng và kết quả  Số lượng toán hạng?  Giá trị toán hạng được lưu ở đâu?  Kết quả được lưu ở vị trí nào?  Các toán hạng bộ nhớ được định vị thế nào?  Kiến trúc tập lệnh MIPS(RISC) được thiết kế dựa trên 4 nguyên tắc cơ bản.  Bộ cộng trừ nhân chia được triển khai bằng các phần tử logic hay bằng thuật toán. HUST-FET, 13/03/20115Chương 3. Bộ xử lý - Processor Nguyên tắc thiết kế MIPS (RISC) HUST-FET, 13/03/20116Chương 3. Bộ xử lý - Processor  Tính đơn giản quan trọng hơn tính quy tắc(Simplicity favors regularity)  Chỉ thị kích thước cố định (32 bit)  Ít định dạng chỉ thị (3 loại định dạng)  Mã lệnh ở vị trí cố định (6 bit đầu)  Nhỏ hơn thì nhanh hơn  Số chỉ thị giới hạn  Số thanh ghi giới hạn  Số chế độ địa chỉ giới hạn  Tăng tốc các trường hợp thông dụng  Các toán hạng số học lấy từ thanh ghi (máy tính dựa trên cơ chế load- store)  Các chỉ thị có thể chứa toán hạng trực tiếp  Thiết kế tốt đòi hỏi sự thỏa hiệp  3 loại định dạng chỉ thị Nội dung Đường dữ liệu bộ xử lý MIPS Đơn xung nhịp Đa xung nhịp Hiệu năng Kỹ thuật đường ống Nguyên tắc hoạt động Hiệu năng Xung đột trong đường ống HUST-FET, 13/03/20117 Bộ xử lý: Đường dữ liệu và điều khiển HUST-FET, 13/03/20118  Triển khai các lệnh  Lệnh truy cập bộ nhớ: lw, sw  Lệnh số học và logic: add, sub, and, or, slt  Lệnh điều khiển dòng chương trình: beq, j  Triển khai các pha hoạt động  Dùng thanh ghi PC để lưu địa chỉ lệnh Đọc lệnh từ bộ nhớ, và cập nhật giá trị PC  Giải mã lệnh và đọc các thanh ghi  Thực hiện lệnh  Lưu kết quả Instruction Fetch Instruction Decode Operand Fetch Execute Result Store Next Instruction Fetch PC = PC+4 Decode Exec, Store Thiết kế đồng bộ theo đồng hồ HUST-FET, 13/03/20119  Mạch đồng bộ theo đồng hồ: thời điểm dữ liệu trong 1 phần tử trạng thái là hợp lệ và ổn định được quy định bởi xung đồng hồ  Phần tử trạng thái - phần tử nhớ - VD. thanh ghi, FF  Kích hoạt theo sườn – các trạng thái thay đối khi có xườn xung  Hoạt động thông thường:  đọc nội dung của phần tử trạng thái -> tính giá trị bằng logic tổ hợp -> ghi kết quả vào phần tử trạng thái State element 1 State element 2 Combinational logic clock one clock cycle  Các phần tử trạng thái được ghi ở tất cả các chu kỳ đồng hồ. Nếu không: cần tín hiệu điều khiển việc ghi Nạp lệnh HUST-FET, 13/03/201110  Đọc lệnh tại địa chỉ (lưu trong) PC từ bộ nhớ lệnh (eng. Instruction Memory)  Cập nhật giá trị PC tới địa chỉ của lệnh kế tiếp Read Address Instruction Instruction Memory Add PC 4  PC được cập nhật ở mọi chu kỳ không cần tín hiệu điều khiển ghi PC.  Đọc từ bộ nhớ lệnh được thực hiện bằng logic tổ hợp clock Fetch PC = PC+4 Decode Exec, Store Giải mã lệnh HUST-FET, 13/03/201111  Chuyển các bit thuộc trường mã lệnh và trường mã chức năng tới khối điều khiển Instruction Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 Control Unit  Đọc 2 giá trị toán hạng nguồn từ tệp thanh ghi - Chỉ số các thanh ghi nằm trong lệnh Fetch PC = PC+4 Decode Exec, Store Thực hiện lệnh loại R HUST-FET, 13/03/201112  Lệnh định dạng R (add, sub, slt, and, or)  Thực hiện phép toán (mã hóa bới op và funct) trên giá trị toạn hạng trong rs và rt  Ghi kết quả vào tệp thanh ghi (tại vị trí rd) Instruction Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU overflow zero ALU controlRegWrite R-type: 31 25 20 15 5 0 op rs rt rd functshamt 10  Tệp thanh ghi không được ghi ở mọi chu kỳ cần tín hiệu điều khiển ghi riêng biệt. Fetch PC = PC+4 DecodeExec Thực hiện lệnh đọc ghi bộ nhớ HUST-FET, 13/03/201113  Tính địa chỉ bộ nhớ bằng cách cộng thanh ghi cơ sở (đọc từ tệp thanh ghi khi giải mã lệnh) với giá trị offset  ghi (sw) giá trị (được đọc từ tệp thanh ghi khi giải mã lệnh) vào bộ nhớ dữ liệu  đọc (lw) giá trị từ bộ nhớ dữ liệu vào tệp thanh ghi Instruction Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU overflow zero ALU controlRegWrite Data Memory Address Write Data Read Data Sign Extend MemWrite MemRead Thực hiện lệnh rẽ nhánh có điều kiện HUST-FET, 13/03/201114  so sánh toán hạng đọc từ tệp thanh ghi khi giải mã  tính địa chỉ đích bằng cách cộng giá trị PC (sau khi cập nhât) với trường offset 16 bit đã được mở rộng dấu. Instruction Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU zero ALU control Sign Extend16 32 Shift left 2 Add 4 Add PC Branch target address (to branch control logic) Thực hiện lệnh nhảy không điều kiện HUST-FET, 13/03/201115  Thay 28 bit thấp của PC bằng 26 bít thấp của lệnh được nạp và 2 bít 0 Read Address Instruction Instruction Memory Add PC 4 Shift left 2 Jump address 26 4 28 Đường dữ liệu HUST-FET, 13/03/201116  Ghép các phần của đường dữ liệu thêm các đường tín hiệu điều khiển và bộ ghép (multiplexors)  Thiết kế đơn xung nhịp – các pha thực hiện: nạp, giải mã and thực hiện, ghi của mỗi lệnh trong một chu kỳ đồng hồ  Các tài nguyên phần cứng của đường dữ liệu không thể tái sử dụng cho cùng 1 lệnh, một số tài nguyên phải nhân đôi (VD., bộ nhớ lệnh và dữ liệu riêng biệt, một vài bộ cộng)  bộ ghép được dùng ở đầu vào của các tài nguyên dùng chung và được điều khiển bằng tín hiệu điều khiển  Chu kỳ đồng hồ: xác định bằng độ dài đường dữ liệu dài nhất Đường dữ liệu: Phần nạp, thực hiện lệnh R, lw,sw Các tín hiệu điều khiển bộ ghép: lựa chọn đầu vào cho các khối chức năng được tính bằng khối điều khiển từ trường mã lệnh (opcode) và trường chức năng lệnh (funct) HUST-FET, 13/03/201117 MemtoReg Read Address Instruction Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU ovf zero ALU controlRegWrite Data Memory Address Write Data Read Data MemWrite MemRead Sign Extend16 32 ALUSrc Bộ xử lý đơn xung nhịp (1) – Lệnh R HUST-FET, 13/03/201118 Read Address Instr[31-0] Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU ovf zero RegWrite Data Memory Address Write Data Read Data MemWrite MemRead Sign Extend16 32 MemtoReg ALUSrc Shift left 2 Add PCSrc RegDst ALU control 1 1 1 0 0 0 0 1 ALUOp Instr[5-0] Instr[15-0] Instr[25-21] Instr[20-16] Instr[15 -11] Control Unit Instr[31-26] Branch BXL đơn xung nhịp (3) – Lệnh lw, sw HUST-FET, 13/03/201119 Read Address Instr[31-0] Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU ovf zero RegWrite Data Memory Address Write Data Read Data MemWrite MemRead Sign Extend16 32 MemtoReg ALUSrc Shift left 2 Add PCSrc RegDst ALU control 1 1 1 0 0 0 0 1 ALUOp Instr[5-0] Instr[15-0] Instr[25-21] Instr[20-16] Instr[15 -11] Control Unit Instr[31-26] Branch BXL đơn xung nhịp (4) – Lệnh rẽ nhánh HUST-FET, 13/03/201120 Read Address Instr[31-0] Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU ovf zero RegWrite Data Memory Address Write Data Read Data MemWrite MemRead Sign Extend16 32 MemtoReg ALUSrc Shift left 2 Add PCSrc RegDst ALU control 1 1 1 0 0 0 0 1 ALUOp Instr[5-0] Instr[15-0] Instr[25-21] Instr[20-16] Instr[15 -11] Control Unit Instr[31-26] Branch BXL đơn xung nhịp – Thêm lệnh nhảy HUST-FET, 13/03/201121 Read Address Instr[31-0] Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU ovf zero RegWrite Data Memory Address Write Data Read Data MemWrite MemRead Sign Extend16 32 MemtoReg ALUSrc Shift left 2 Add PCSrc RegDst ALU control 1 1 1 0 0 0 0 1 ALUOp Instr[5-0] Instr[15-0] Instr[25-21] Instr[20-16] Instr[15 -11] Control Unit Instr[31-26] Branch Shift left 2 0 1 Jump 32 Instr[25-0] 26 PC+4[31-28] 28 Tính chu ky đồng hồ Tc – Đường dài nhất HUST-FET, 13/03/201122 Instr. I Mem Reg Rd ALU Op D Mem Reg Wr Total R- type load store beq jump  Tính chu kỳ đồng hồ trong trường hợp bỏ qua trễ ở bộ ghép, khối điều khiển, khối mở rộng dấu, khối đọc PC, khối dịch 2, dây dẫn, thời gian thiết lập và giữ. Cho biết độ trễ:  Truy cập bộ nhớ lệnh và bộ nhớ dữ liệu (200 ps)  Khối số học logic và bộ cộng (200 ps)  Truy cập tệp thanh ghi (đọc hoặc ghi) (100 ps) Ví dụ 3.1 – Hiệu năng thiết kế đơn xung nhịp HUST-FET, 13/03/201123 Độ trễ logic khi Truy cập lệnh 2 ns Đọc thanh ghi 1 ns Hoạt động ALU 2 ns Truy cập bộ nhớ DL 2 ns Ghi thanh ghi 1 ns Tổng 8 ns Tốc độ đồng hồ = P C P C P C P C P C ALU-type Load Store Branch Jump Not used Not used Not used Not used Not used Not used Not used Not used Not used (and jr) (except jr & jal) Các loại lệnh: R-type 44% 6 ns Load 24% 8 ns Store 12% 7 ns Branch 18% 5 ns Jump 2% 3 ns Trung bình  Thiết kế đơn xung nhịp – Ưu nhược điểm HUST-FET, 13/03/201124  Sử dụng chu kỳ đồng hồ không hiệu quả – chu kỳ đồng hồ được đặt theo lệnh chậm nhất  Vấn đề đặc biệt của các lệnh phức tạp như lệnh nhân dấu phẩy động  Tốn diện tích thiết kế vì cần nhân đôi một số khối chức năng (VD. bộ cộng) vì chúng không thể được chia sẻ trong cùng 1 chu kỳ đồng hồ Nhưng  Đơn giản và dễ hiểu Clk lw sw Waste Cycle 1 Cycle 2 So sánh đánh giá thiết kế đơn xung nhịp HUST-FET, 13/03/201125 Instruction access 2 ns Register read 1 ns ALU operation 2 ns Data cache access 2 ns Register write 1 ns Total 8 ns Single-cycle clock = 125 MHz Đồng hồ tốc độ 125 MHz là bình thường So sánh với các bộ xử lý trên thị trường: Không tồi nếu so sánh độ trễ thực hiện 1 lệnh Một bộ xử lý 2.5 GHz với 20 giai đoạn pipeline có độ trễ khoảng: 0.4 ns/cycle  20 cycles = 8 ns Lưu lượng của bộ xử lý có pipeline tốt hơn rất nhiều: Tốt hơn tới 20 lần với các bộ xử lý phát hành đơn lệnh Tốt hơn tới 100 lần với các bộ xử lý phát hành đa lệnh Thiết kế đa xung nhịp  Chia lệnh thành các pha thực hiện: IF, ID, EX, MEM, WB. Mỗi pha thực hiện trong 1 chu kỳ xung nhịp  Các ưu điểm o Thời gian thực hiện (= số pha) của mỗi lệnh được điều chỉnh tùy thuộc độ phức tạp của lệnh o Các khối chức năng được chia sẻ giữa các pha khác nhau của lệnh do một khối chức năng cụ thể không cần trong toàn bộ các pha thực hiện của lệnh HUST-FET, 13/03/201126 Clo k Clock Instr 2 Instr 1 Instr 3 Instr 4 3 cycles 3 cycles 4 cycles 5 cycles Time saved Instr 1 Instr 4 Instr 3 Instr 2 Time needed Time needed Time llotted Time allotted Ví dụ 3.2 – Hiệu năng thiết kế đa xung nhịp HUST-FET, 13/03/201127 P C P C P C P C P C ALU-type Load Store Branch Jump Not used Not used Not used Not used Not used Not used Not used Not used Not used (and jr) (except jr & jal) Các loại lệnh sử dụng số chu kỳ khác nhau R-type 44% 4 cycles Load 24% 5 cycles Store 12% 4 cycles Branch 18% 3 cycles Jump 2% 3 cycles Đóng góp vào số chu kỳ trung bình cần cho một lệnh: R-type Load Store Branch Jump _____________________________ CPI trung bình  So sánh đánh giá thiết kế đa xung nhịp HUST-FET, 13/03/201128 R-type 44% 4 cycles Load 24% 5 cycles Store 12% 4 cycles Branch 18% 3 cycles Jump 2% 3 cycles Contribution to CPI R-type 0.444 = 1.76 Load 0.245 = 1.20 Store 0.124 = 0.48 Branch 0.183 = 0.54 Jump 0.023 = 0.06 _____________________________ Average CPI  4.04 Cycle time = 2 ns Clock rate = 500 MHz Đồng hồ tốc độ 500MHz tốt hơn 125MHz của bộ xử lý một xung nhịp, nhưng vẫn là bình thường. So sánh với các bộ xử lý trên thị trường: Không tồi nếu so sánh độ trễ thực hiện 1 lệnh Một bộ xử lý 2.5 GHz với 20 giai đoạn pipeline có độ trễ khoảng: 0.4 ns/cycle  20 cycles = 8 ns Lưu lượng của bộ xử lý có pipeline tốt hơn rất nhiều: Tốt hơn tới 20 lần với các bộ xử lý phát hành đơn lệnh Tốt hơn tới 100 lần với các bộ xử lý phát hành đa lệnh Thiết kế đơn xung nhịp HUST-FET, 13/03/201129 / ALU Data cache Instr cache Next addr Reg file op jta fn inst imm rs (rs) (rt) Data addr Data in 0 1 ALUSrc ALUFunc DataWrite DataRead SE RegInSrc rt rd RegDst RegWrite 32 / 16 Register input Data out Func ALUOvfl Ovfl 31 0 1 2 Next PC Incr PC (PC) Br&Jump ALU out PC 0 1 2 Clock rate = 125 MHz CPI = 1 (125 MIPS) Thiết kế đa xung nhịp HUST-FET, 13/03/201130 Clock rate = 500 MHz CPI  4 ( 125 MIPS) / 16 rs 0 1 0 1 2 ALU Cache Reg file op jta fn (rs) (rt) Address Data Inst Reg Data Reg x Reg y Reg z Reg PC 4 ALUSrcX ALUFunc MemWrite MemRead RegInSrc 4 rd RegDst RegWrite / 32 Func ALUOvfl Ovfl 31 PCSrc PCWrite IRWrite ALU out 0 1 0 1 0 1 2 3 0 1 2 3 InstData ALUSrcY SysCallAddr / 26 4 rt ALUZero Zero x Mux y Mux 0 1 JumpAddr 4 MSBs / 30 30 SE imm 2 Đường ống (Eng. pipeline): Kết hợp ưu điểm HUST-FET, 13/03/201131 Single-cycle: Clock rate = 125 MHz CPI = 1 Multicycle: Clock rate = 500 MHz CPI  4 Pipelined: Clock rate = 500 MHz CPI  1 Dây chuyền sản xuất trong nhà máy HUST-FET, 13/03/201132 Tăng hiệu năng (tốc độ) bằng cách nào? HUST-FET, 13/03/201133  Bắt đầu nạp và thực hiện lệnh tiếp theo trước khi lệnh hiện tại kết thúc: • Kỹ thuật đường ống – được áp dụng trong hầu hết các bộ xử lý hiện đại • Trong điều kiện lý tưởng với số lượng lệnh lớn, đường ống giúp tăng tốc độ bằng số giai đoạn đường ống. Đường ống 5 giai đoạn sẽ nhanh hơn gần 5 lần vì Tc tăng gấp 5.  Nạp (và thực hiên) nhiều lệnh cùng một lúc  Xử lý superscalar ccpu TCPIIT  5 giai đoạn đường ống của lệnh lw HUST-FET, 13/03/201134  IFetch: Nạp lệnh và cập nhập giá trị PC  IDec: Đọc thanh ghi và giải mã lệnh  EXec: Thực hiện lệnh R; tính địa chỉ bộ nhớ  MEM: Đọc/ghi bộ nhớ dữ liệu  WB: Ghi kết quả vào tệp thanh ghi Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 IFetch Dec Exec Mem WBlw Đường ống trong MIPS HUST-FET, 13/03/201135  Bắt đầu lệnh tiếp theo trước khi lệnh hiện tại kết thúc  cải thiện thông lượng – tổng số công việc hoàn thành trong 1 khoảng thời gian  độ trễ lệnh (thời gian thực hiện, thời gian đáp ứng – thời gian từ lúc bắt đầu đến lúc kết thúc lệnh) không được giảm Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 IFetch Dec Exec Mem WBlw Cycle 7Cycle 6 Cycle 8 sw IFetch Dec Exec Mem WB R-type IFetch Dec Exec Mem WB  chu kỳ đồng hồ (thời gian 1 giai đoạn đường ống) quyết định bởi giai đoạn chậm nhất  một số giai đoạn không dùng toàn bộ chu kỳ đồng hồ (VD., WB)  một số lệnh, có các giai đoạn là chu kỳ lãng phí (nghĩa là, không thực hiện gì trong chu kỳ đó với lệnh đó) Ví dụ 3.3 – Pipeline vs. Đơn xung nhịp HUST-FET, 13/03/201136 lw IFetch Dec Exec Mem WB Triển khai pipeline (Tc = 200 ps): IFetch Dec Exec Mem WBsw IFetch Dec Exec Mem WBR-type Clk Triển khai đơn xung nhịp (Tc = 800 ps): lw sw Waste Cycle 1 Cycle 2  Để hoàn thành 1 lệnh trong trường hợp pipeline cần 1000 ps (So với 800 ps trong trường hợp đơn xung nhịp). Tại sao?  Để thực hiên 1.000.000 lệnh “adds” cần thời gian bao lâu? 400 ps Kỹ thuật đường ống cho MIPS(RISC) ISA HUST-FET, 13/03/201137  Dễ triển khai:  Các lệnh có cùng độ dài (32 bits)  Có thể nạp lệnh trong giai đoạn 1st và giải mã lệnh trong giai đoạn 2nd  Ít định dạng lệnh (ba). Các định dạng lệnh có tính đối xứng - Có thể đọc thanh ghi ở giai đoạn 2nd  Chỉ truy cập bộ nhớ bằng lệnh lw và sw - Có thể tính địa chỉ bộ nhớ ở giai đoạn EX (thực hiện lệnh)  Mỗi lệnh chỉ ghi lớn nhất 1 kết quả (làm thay đổi trạng thái máy) ở 2 giai đoạn cuối (MEM or WB)  Toán hạng được sắp xếp trong bộ nhớ sao cho 1 lệnh dịch chuyển dữ liệu chỉ cần 1 lần truy cập bộ nhớ. Đường dữ liệu MIPS pipeline HUST-FET, 13/03/201138  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 P C 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 Điều khiển MIPS pipeline HUST-FET, 13/03/201139  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 P C 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 Mô tả hoạt động pipeline HUST-FET, 13/03/201140  Đo hiệu năng: Cần bao nhiêu chu kỳ đề thực hiện đoạn mã?  Phân tích hoạt động: ALU làm gì ở chu kỳ 4?  Cải tiến: Có xảy ra hazard không? Tại sao? Dùng cách nào để khắc phục? A L UIM Reg DM Reg Hiệu năng pipeline HUST-FET, 13/03/201141 I n s t r. O r d e r Time (clock cycles) Inst 0 Inst 1 Inst 2 Inst 4 Inst 3 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg Khi pipeline đầy, 1 lệnh được hoàn thành trong 1 chu kỳ  CPI = 1 Thời gian điền đầy pipeline Xung đột Pipeline HUST-FET, 13/03/201142 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, 13/03/201143 I n s t r. O r d e r Time (clock cycles) lw Inst 1 Inst 2 Inst 4 Inst 3 A L UMem Reg Mem Reg A L UMem Reg Mem Reg A L UMem Reg Mem Reg A L UMem Reg Mem Reg A L UMem 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ẽ(I$ and D$) Xung đột cấu trúc khi truy cập tệp thanh ghi HUST-FET, 13/03/201144 I n s t r. O r d e r Inst 1 Inst 2 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM 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, 13/03/201145 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 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM 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) Sử dụng thanh ghi: Xung đột dữ liệu HUST-FET, 13/03/201146 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 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM 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, 13/03/201147 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 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg  Dependencies backward in time cause hazards  Load-use data hazard Xung đột điều khiển HUST-FET, 13/03/201148 I n s t r. O r d e r lw Inst 4 Inst 3 beq A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg  Dependencies backward in time cause hazards Các cấu trúc pipeline khác HUST-FET, 13/03/201149  Phép toán nhân (chậm) gấp 2 lần?  Làm đồng hồ chậm đi 2 lần hoặc …  thực hiện trong 2 chu kỳ đồng hồ (vì không cần sử dụng giai đoạn DM) A L UIM Reg DM Reg MUL A L UIM Reg DM1 RegDM2  Truy cập bộ nhớ dữ liệu chậm hơn bộ nhớ lệnh 2 lần?  Làm đồng hồ chậm đi 2 lần hoặc …  thực hiện việc đọc trong 2 chu kỳ (và giữ nguyên chu kỳ đồng hồ) Tóm tắt 1 HUST-FET, 13/03/201150  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) Xung đột dữ liệu HUST-FET, 13/03/201151 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg  Xung đột dữ liệu đọc trước ghi add $1, sub $4,$1,$5 and $6,$1,$7 xor $4,$1,$5 or $8,$1,$9 Value of $1 10 10 10 10 10/-20 -20 -20 -20 -20 Giải quyết xung đột: Tạm dừng HUST-FET, 13/03/201152 stall stall I n s t r. O r d e r add $1, A L UIM Reg DM Reg sub $4,$1,$5 and $6,$1,$7 A L UIM Reg DM Reg A L UIM 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 Giải quyết xung đột: Chuyển tiếp dữ liệu HUST-FET, 13/03/201153 I n s t r. O r d e r add $1, A L UIM Reg DM Reg sub $4,$1,$5 and $6,$1,$7 A L UIM Reg DM Reg A L UIM 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 A L UIM Reg DM Reg A L UIM Reg DM Reg Chuyển tiếp dữ liệu HUST-FET, 13/03/201154  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  thê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.  thê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 Minh họa triển khai chuyển tiếp HUST-FET, 13/03/201155 I n s t r. O r d e r add $1, sub $4,$1,$5 and $6,$7,$1 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg EX forwarding MEM forwarding Xung đột dữ liệu khi chuyển tiếp HUST-FET, 13/03/201156 I n s t r. O r d e r add $1,$1,$2 A L UIM Reg DM Reg add $1,$1,$3 add $1,$1,$4 A L UIM Reg DM Reg A L UIM 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, 13/03/201157 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 A L UIM Reg DM Reg A L UIM Reg DM A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Regsub $4,$1,$5 Xung đột điều khiển HUST-FET, 13/03/201158  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, 13/03/201159 flush I n s t r. O r d e r j j target A L UIM Reg DM Reg A L UIM 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 A L UIM Reg DM Reg Xung đột điều khiển lệnh rẽ nhánh HUST-FET, 13/03/201160 I n s t r. O r d e r lw Inst 4 Inst 3 beq A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg Giải quyết xung đột điều khiển lệnh rẽ nhánh HUST-FET, 13/03/201161 flush flush flush I n s t r. O r d e r beq A L UIM Reg DM Reg beq target A L UIM Reg DM Reg A L U Inst 3 IM Reg DM Giải quyết xung đột bằng chờ– flush – nhưng ảnh hưởng CPI A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg Giải quyết xung đột điều khiển lệnh rẽ nhánh HUST-FET, 13/03/201162 flush I n s t r. O r d e r beq beq target A L UIM Reg DM Reg Inst 3 A L UIM Reg DM Fix branch hazard by waiting – flush A L UIM 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ờ A L UIM Reg DM Reg Rẽ nhánh chậm HUST-FET, 13/03/201163  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, 13/03/201164  TH A là lựa chọn tốt nhất, điền được khe trễ và giảm I  TH B và C, lệnh sub cần sao 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ừ trướ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 Dự đoán rẽ nhánh tĩnh HUST-FET, 13/03/201165  Giải quyết xung đột rẽ nhánh bằng cách giả sử 1 hướng rẽ nhánh và tiếp tục không cần chờ tính toán kết quả rẽ nhánh thực sự. 1. Đoán không rẽ nhánh – luôn giả sử lệnh không rẽ nhánh, tiếp tục nạp các lệnh kế tiếp, chỉ khi có rẽ nhánh thì cần dừng pipeline  Nếu rẽ nhánh, xóa các lệnh sau rẽ nhánh (sớm ở trong pipeline) - trong giai đoạn IF, ID, và EX nếu bộ tính rẽ nhánh ở MEM – ba dừng - trong giai đoạn IF và ID nếu bộ tính rẽ nhánh ở EX – hai dừng - trong giai đoạn IF nếu bộ tính rẽ nhánh ở ID – môt dừng  Đảm bảo rằng các lệnh bị xóa không ảnh hưởng tới trạng thái máy.  Khởi tạo lại pipeline ở đích lệnh rẽ nhánh Xóa khi dự đoán sai HUST-FET, 13/03/201166 4 beq $1,$2,2I n s t r. O r d e r A L UIM Reg DM Reg A L UIM Reg DM Reg8 sub $4,$1,$5 Xóa khi dự đoán sai (Đoán không rẽ nhánh) HUST-FET, 13/03/201167 flush 4 beq $1,$2,2I n s t r. O r d e r A L UIM Reg DM Reg 16 and $6,$1,$7 20 or r8,$1,$9 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg8 s b $4,$1,$5  Để 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) Dự đoán rẽ nhánh HUST-FET, 13/03/201168  Giải quyết xung đột bằng cách giả thiết kết quả rẽ nhánh và tiếp tục 2. Đoán có rẽ nhánh – dữ đoán luôn luôn có rẽ nhánh  Đoán có rẽ nhánh luôn cần 1 chu kỳ dừng (nếu phần cứng tính rẽ nhánh ở giai đoạn ID)  Cần phương pháp đọc trước (vào bộ đệm) lệnh ở địa chỉ đích??  Vì thiệt hại do rẽ nhánh đang tăng lên (với các pipeline sâu), mô hình dự đoán rẽ nhánh tĩnh sẽ ảnh hưởng tới hiệu năng. Với nhiều phần cứng hơn, có thể thử dự đoán hoạt động rẽ nhánh động lúc chương trình được thực hiện 3. Dự đoán rẽ nhánh động – đoán rẽ nhánh lúc chạy dựa trên các thông tin chạy (run-time information) Dự đoán rẽ nhánh động bằng 1 bit HUST-FET, 13/03/201169  Bô dự đoán 1 bít sẽ sai 2 lần nếu đoán không rẽ nhánh:  Nếu lặp 10 lần ta sẽ có tỉ lệ rẽ nhánh đúng là 80%. Nếu dùng lệnh rẽ nhánh beq thì đúng 90%  Giá sử predict_bit = 0 lúc bắt đầu (chỉ ra không rẽ nhánh) lệnh rẽ nhánh điều khiển ở cuối vòng lặp 1. Lần thực hiện vòng lặp 1, bộ dự đoán sai cho lệnh rẽ nhánh vì nó dẫn quay lại đầu vòng lặp; cần đảo bít rẽ nhánh (predict_bit = 1) 2. Khi nào vẫn còn rẽ nhánh (vẫn lặp), dự đoán đúng 3. Khi thoát khỏi vòng lặp, bộ dự đoán sẽ sai 1 lần nữa vì lần này sẽ không rẽ nhánh mà ra ngoài vòng lặp; đảo bit rẽ nhánh (predict_bit = 0) Loop: 1st loop instr 2nd loop instr . . . last loop instr bne $1,$2,Loop fall out instr Dự đoán rẽ nhánh động bằng 2 bit HUST-FET, 13/03/201170  Cơ chế dùng 2 bit cho độ chính xác 90% vì chỉ khi dự đoán sai 2 lần thì bit dự đoán mới thay đổi Predict Taken Predict Not Taken Predict Taken Predict Not Taken Taken Not taken Not taken Not taken Not taken Taken Taken Taken Loop: 1st loop instr 2nd loop instr . . . last loop instr bne $1,$2,Loop fall out instr Exceptions HUST-FET, 13/03/201171  Exceptions (ngắt - interrupts) có thể coi là 1 dạng xung đột dữ liệu. Exception xuất hiện từ:  Tràn khi thực hiện lệnh số học  Lệnh không được định nghĩa  Yêu cầu từ thiết bị vào ra  Yêu cầu dịch vụ hệ điều hành (VD. lỗi trang, lỗi TLB)  Lỗi chức năng phần cứng  Pipeline cần phải: • dừng thực hiện lệnh lỗi, • để tất cả các lệnh trước đó hoàn thành, • xóa các lệnh sau đó, • đặt thanh ghi chỉ ra nguyên nhân exception, • lưu lại địa chỉ lệnh lỗi, • nhảy đến địa chỉ định trước (địa chỉ của hàm xử lý exception)  Phần mềm (OS) sẽ xử lý tiếp exception. Hai loại exceptions HUST-FET, 13/03/201172  Ngắt – không đồng bộ với sự thực hiện chương trình  gây ra bởi sự kiện bên ngoài  có thể được xử lý giữa các lệnh, nên để các lệnh đang có trong pipeline hoàn thành trước khi chuyển điều khiển cho hàm xử lý ngắt của OS.  đơn giản là dừng và tiếp tục chương trình người dùng  Bẫy (Exception) – đồng bộ với sự thực hiện chương trình  gây ra bởi sự kiện bên trong  hàm xử lý bẫy cần sửa chữa điều kiện cho đúng lệnh bị bẫy, nên phải dừng lệnh lỗi trong trong pipeline và chuyển điều khiển cho hàm xử lý bẫy của OS  lệnh lỗi có thể tiếp tục chương trình có thể bị kết thúc hoặc được tiếp tục Exception có thể xuất hiện ở đâu trong pipeline HUST-FET, 13/03/201173  Tràn số học  Lệnh không định nghĩa  Lỗi TLB hoặc trang  Yêu cầu dịch vụ I/O  Lỗi phần cứng A L UIM Reg DM Reg Stage(s)? Synchronous? Exception có thể xuất hiện ở đâu trong pipeline HUST-FET, 13/03/201174 A L UIM Reg DM Reg Stage(s)? Synchronous? EX yes yes yes no no  Chú ý rằng nhiều exception có thể xuất hiện đồng thời trong một chu kỳ đồng hồ ID IF, MEM any any  Tràn số học  Lệnh không định nghĩa  Lỗi TLB hoặc trang  Yêu cầu dịch vụ I/O  Lỗi phần cứng Nhiều exception đồng thời HUST-FET, 13/03/201175 I n s t r. O r d e r Inst 0 Inst 1 Inst 2 Inst 4 Inst 3 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg  Lệnh sớm nhất sẽ bị ngắt đầu tiên Nhiều exception đồng thời HUST-FET, 13/03/201176 I n s t r. O r d e r Inst 0 Inst 1 Inst 2 Inst 4 Inst 3 A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg A L UIM Reg DM Reg D$ page fault arithmetic overflow undefined instruction I$ page fault  Lệnh sớm nhất sẽ bị ngắt đầu tiên Tổng kết HUST-FET, 13/03/201177  Tất cả các bộ xử lý hiện đại đều dùng pipeline để tăng hiệu suất (CPI=1 và đồng hồ nhanh - fc lớn)  Tốc độ đồng hồ pipeline bị giới hạn bởi giai đoạn pipeline chậm nhất – thiết kế pipeline cân bằng là rất quan trọng  Cần phát hiện và giải quyết xung đột trong pipeline  Xung cấu trúc – giải quyết: thiết kế pipeline đúng  Xung đột dữ liệu - Dừng (ảnh hưởng CPI) - Chuyển tiếp (cần phần cứng hỗ trợ)  Xung đột điều khiển – đặt phần cứng quyết định rẽ nhánh lên các trạng thái đầu trong pipeline - Dừng (ảnh hưởng CPI) - Rẽ nhánh chậm (cần hỗ trợ của trình dịch) - Dự đoán rẽ nhánh tĩnh và động (cần phần cứng hỗ trợ)  Xử lý ngắt trong pipeline phức tạp

Các file đính kèm theo tài liệu này:

  • pdfkien_truc_may_tinh_dhbkhn_chap3_1396.pdf
Tài liệu liên quan