Bài giảng Vi xử lý nâng cao - Phần 1: Thiết kế CPU RISC - Bài 10: Đường dữ liệu đa chu kỳ của MIP
Ưu và khuyết điểm của đơn chu kỳ
Sử dụng chu kỳ clock không hiệu quả – chu kỳ
clock phải được định thời để phù hợp với lệnh
chậm nhất.
Đặc biệt khó giải quyết đối với các lệnh phức tạp
như là nhân số dấu chấm động.
Có thể hoang phí diện tích do một số đơn vị
chức năng phải được sao chép (e.g., mạch cộng)
vì chúng không thể được dùng chung trong thời
gian một chu kỳ clock.
Đơn giản và dễ hiểu.
Sử dụng chu kỳ clock không hiệu quả – chu kỳ
clock phải được định thời để phù hợp với lệnh
chậm nhất.
Đặc biệt khó giải quyết đối với các lệnh phức tạp
như là nhân số dấu chấm động.
Có thể hoang phí diện tích do một số đơn vị
chức năng phải được sao chép (e.g., mạch cộng)
vì chúng không thể được dùng chung trong thời
gian một chu kỳ clock.
Đơn giản và dễ hiểu.
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý nâng cao - Phần 1: Thiết kế CPU RISC - Bài 10: Đường dữ liệu đa chu kỳ của MIP", để 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_vi_xu_ly_nang_cao_phan_1_thiet_ke_cpu_risc_bai_10.pdf
- Lec10.ppt
Nội dung text: Bài giảng Vi xử lý nâng cao - Phần 1: Thiết kế CPU RISC - Bài 10: Đường dữ liệu đa chu kỳ của MIP
- Bài giảng “Vi xử lý nâng cao” Phần 1: Thiết kế CPU RISC Bài 10: Đường dữ liệu đa chu kỳ của MIPS 1
- Ưu và khuyết điểm của đơn chu kỳ Sử dụng chu kỳ clock không hiệu quả – chu kỳ clock phải được định thời để phù hợp với lệnh chậm nhất. Đặc biệt khó giải quyết đối với các lệnh phức tạp như là nhân số dấu chấm động. Cycle 1 Cycle 2 Clk lw sw Waste (bỏ phí) Có thể hoang phí diện tích do một số đơn vị chức năng phải được sao chép (e.g., mạch cộng) vì chúng không thể được dùng chung trong thời gian một chu kỳ clock. Đơn giản và dễ hiểu. 3
- Đường dữ liệu đa chu kỳ – Mức cao Các thanh ghi cần được thêm vào sau mỗi đơn vị chức năng chính để lưu giữ giá trị xuất ra cho đến khi giá trị này được sử dụng trong chu kỳ clock tiếp theo. IR Memory Read Addr 1 A Address Read PC Register Read Addr 2 Data 1 Read Data File (Instr. or Data) ALU Write Addr Read ALUout Write Data Data 2 B Write Data MDR Lưu ý các thanh ghi được thêm vào – IR, MDR, A, B và ALUout 5
- Tiếp cận đa chu kỳ Chia các lệnh thành nhiều bước trong đó mỗi bước chiếm 1 chu kỳ clock, trong khi đó thử cân bằng lượng công việc cần được thực hiện trong mỗi bước. chỉ sử dụng 1 đơn vị chức năng chính mỗi chu kỳ clock. Ở cuối một chu kỳ clock Lưu các giá trị của lệnh hiện hành sẽ sử dụng trong chu kỳ clock sau trong phần tử trạng thái (thanh ghi nội, người lập trình không thấy được). IR – Instruction Register (thanh ghi lệnh). MDR – Memory Data Register (thanh ghi dữ liệu bộ nhớ). A và B – Register File read data registers (các thanh ghi dữ liệu đọc của tập thanh ghi). ALUout – ALU output register (thanh ghi ngõ ra ALU). - Tất cả (trừ IR) chỉ lưu giữ dữ liệu giữa cặp chu kỳ clock kề nhau (nên chúng không cần tín hiệu điều khiển ghi). Dữ liệu được sử dụng bởi các lệnh theo sau được lưu giữ trong các phần tử trạng thái, người lập trình thấy được (i.e., tập thanh ghi , PC hoặc bộ nhớ). 7
- Tiếp cận đa chu kỳ, tiếp theo Việc đọc /ghi đến thanh ghi bất kỳ trong các thanh ghi nội hoặc PC xảy ra (nhanh) ở cuối một chu kỳ clock. việc đọc /ghi đến tập thanh ghi chiếm ~50% chu kỳ clock do điều này có thêm tổn phí truy cập và điều khiển (việc đọc có thể được thực hiện song song với giải mã). Cần thêm vào các mạch ghép kênh ở trước vài ngõ vào của đơn vị chức năng chính, do các port ngõ vào của đơn vị chức năng sẽ có nhiều ngõ vào, lúc này được dùng chung bởi nhiều chu kỳ clock khác nhau. Mọi thao tác xuất hiện trong một chu kỳ clock sẽ xảy ra song song. Điều này hạn chế đối với một thao tác ALU, một truy cập bộ nhớ và một truy cập tập thanh ghi mỗi chu kỳ clock. 9
- Bước 1: Tìm nạp lệnh Sử dụng PC để nhận lệnh từ bộ nhớ và đặt lệnh vào thanh ghi lệnh (instruction register). Tăng PC bởi 4 và đặt kết quả trở lại PC. Có thể được mô tả cô đọng bằng cách sử dụng mức truyền thanh ghi RTL "Register-Transfer Level“ của VHDL: IR = Memory[PC]; PC = PC + 4; Ta có thể tính toán giá trị của các tín hiệu điều khiển? Ưu điểm của việc cập nhật PC lúc này là gì ? Lưu ý rằng PC cập nhật cũng được lưu trong thanh ghi ALUout. 11
- Bố trí các tín hiệu điều khiển việc tìm nạp IorD=0 Instr Fetch (tìm nạp lệnh) Unless otherwise assigned MemRead;IRWrite Start ALUSrcA=0 PCWrite,IRWrite, ALUsrcB=01 MemWrite,RegWrite=0 PCSource,ALUOp=00 others=X PCWrite 13
- Hoạt động của đường dữ liệu trong thời gian giải mã lệnh PCWriteCond PCWrite PCSource IorD ALUOp MemRead Control ALUSrcB MemWrite ALUSrcA MemtoReg RegWrite IRWrite RegDst Instr[31-26] PC[31-28] Shift Instr[25-0] 28 left 2 2 0 1 Memory Read Addr 1 0 PC 0 Address A IR Read Register 1 zero 1 Read Addr 2 Data 1 Read Data 0 File (Instr. or Data) ALU Write Addr 1 Read ALUout Write Data Data 2 B 1 Write Data 0 4 1 MDR 0 2 00 Instr[15-0] Sign Shift 3 Extend 32 left 2 ALU Instr[5-0] control 15
- Bước 3 (tùy thuộc lệnh) ALU sẽ thực hiện 1 trong 4 chức năng , dựa vào loại lệnh. Tham chiếu bộ nhớ (lw và sw): ALUOut = A + sign-extend(IR[15-0]); Loại R: ALUOut = A op B; Rẽ nhánh: if (A==B) PC = ALUOut; Nhảy : PC = PC[31-28] || (IR[25-0] << 2); 17
- Hoạt động của đường dữ liệu trong thời gian thực thi lệnh loại R PCWriteCond PCWrite PCSource IorD ALUOp MemRead Control ALUSrcB MemWrite ALUSrcA MemtoReg RegWrite IRWrite RegDst Instr[31-26] PC[31-28] Shift Instr[25-0] 28 left 2 2 0 1 Memory Read Addr 1 0 PC 0 Address A IR Read Register 1 zero 1 Read Addr 2 Data 1 Read Data 0 File (Instr. or Data) ALU Write Addr 1 Read ALUout Write Data Data 2 B 1 Write Data 0 4 1 MDR 0 2 10 Instr[15-0] Sign Shift 3 Extend 32 left 2 ALU Instr[5-0] control 19
- Hoạt động của đường dữ liệu trong thời gian thực thi lệnh j PCWriteCond PCWrite PCSource IorD ALUOp MemRead Control ALUSrcB MemWrite ALUSrcA MemtoReg RegWrite IRWrite RegDst Instr[31-26] PC[31-28] Shift Instr[25-0] 28 left 2 2 0 1 Memory Read Addr 1 0 PC 0 Address A IR Read Register 1 zero 1 Read Addr 2 Data 1 Read Data 0 File (Instr. or Data) ALU Write Addr 1 Read ALUout Write Data Data 2 B 1 Write Data 0 4 1 MDR 0 2 Instr[15-0] Sign Shift 3 Extend 32 left 2 ALU Instr[5-0] control 21
- Bước 4 (cũng tùy thuộc vào lệnh) Tham chiếu bộ nhớ: MDR = Memory[ALUOut]; lw hoặc Memory[ALUOut] = B; sw Hoàn tất lệnh loại R: Reg[IR[15-11]] = ALUOut; Nhớ rằng , việc ghi thanh ghi thực sự xảy ra ở cuối chu kỳ tại cạnh của clock. 23
- Hoạt động của đường dữ liệu trong thời gian truy cập bộ nhớ (lệnh sw) PCWriteCond PCWrite PCSource IorD ALUOp MemRead Control ALUSrcB MemWrite ALUSrcA MemtoReg RegWrite IRWrite RegDst Instr[31-26] PC[31-28] Shift Instr[25-0] 28 left 2 2 0 1 Memory Read Addr 1 0 PC 0 Address A IR Read Register 1 zero 1 Read Addr 2 Data 1 Read Data 0 File (Instr. or Data) ALU Write Addr 1 Read ALUout Write Data Data 2 B 1 Write Data 0 4 1 MDR 0 2 Instr[15-0] Sign Shift 3 Extend 32 left 2 ALU Instr[5-0] control 25
- Bố trí tín hiệu điều khiển việc truy cập bộ nhớ IorD=0 Instr Fetch Decode Unless otherwise assigned MemRead;IRWrite ALUSrcA=0 Start ALUSrcA=0 ALUSrcB=11 PCWrite,IRWrite, ALUsrcB=01 ALUOp=00 MemWrite,RegWrite=0 PCSource,ALUOp=00 PCWriteCond=0 others=X PCWrite ALUSrcA=1 ALUSrcA=1 ALUSrcA=1 ALUSrcB=10 ALUSrcB=00 ALUSrcB=00 PCSource=10 ALUOp=00 Execute ALUOp=01 ALUOp=10 PCWrite PCWriteCond=0 PCWriteCond=0 PCSource=01 PCWriteCond Memory Access MemRead MemWrite RegDst=1 IorD=1 IorD=1 RegWrite PCWriteCond=0 PCWriteCond=0 MemtoReg=0 PCWriteCond=0 (truy cập bộ nhớ) 27
- Hoạt động của đường dữ liệu trong thời gian ghi trở về (lệnh lw) PCWriteCond PCWrite PCSource IorD ALUOp MemRead Control ALUSrcB MemWrite ALUSrcA MemtoReg RegWrite IRWrite RegDst Instr[31-26] PC[31-28] Shift Instr[25-0] 28 left 2 2 0 1 Memory Read Addr 1 0 PC 0 Address A IR Read Register 1 zero 1 Read Addr 2 Data 1 Read Data 0 File (Instr. or Data) ALU Write Addr 1 Read ALUout Write Data Data 2 B 1 Write Data 0 4 1 MDR 0 2 Instr[15-0] Sign Shift 3 Extend 32 left 2 ALU Instr[5-0] control 29
- Tóm tắt RTL Step R-type Mem Ref Branch Jump Instr IR = Memory[PC]; fetch PC = PC + 4; Decode A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; ALUOut = PC +(sign-extend(IR[15-0])<< 2); Execute ALUOut = ALUOut = if PC = A op B; A + sign-extend (A==B) PC[31-28] (IR[15-0]); PC = ||(IR[25- ALUOut; 0] << 2); Memory Reg[IR[15 MDR = access -11]] = Memory[ALUOut]; ALUOut; or Memory[ALUOut] = B; Write- Reg[IR[20-16]] back = MDR; 31
- Điều khiển đa chu kỳ Các tín hiệu điều khiển đường dữ liệu đa chu kỳ không được xác định đơn độc bởi các bit trong lệnh e.g., các bit op code cho biết thao tác gì ALU sẽ thực hiện , nhưng không cho biết chu kỳ nào của lệnh cần được thực hiện tiếp theo. Ta có thể sử dụng máy trạng thái hữu hạn cho điều khiển tập các trạng thái (trạng thái hiện hành được lưu trong thanh ghi trạng thái ). Datapath hàm trạng thái kế . . . Combinational control (được xác định bởi ngõ vào control logic points và trạng thái hiện tại). hàm ngõ ra (được xác định bởi . . . trạng thái hiện tại) . . . State Reg Inst Next State Do vậy ta sẽ sử dụng Opcode máy trạng thái Moore (các tín hiệu điều khiển đường dữ liệu chỉ dựa trên trạng thái hiện tại ). 33
- Thực hiện máy trạng thái hữu hạn PCWrite PCWriteCond IorD MemRead MemWrite IRWrite Combinational MemtoReg PCSource control logic ALUOp Outputs ALUSourceB ALUSourceA RegWrite RegDst Inputs Op5 Op4 Op3 Op2 Op1 Op0 Next State Reg State Inst[31-26] System Clock 35
- Bảng giá trị của trạng thái kế Trạng Inst[31-26] (Op[5-0]) thái 000000 000010 000100 100011 101011 Any hiện (R- (jmp) (beq) (lw) (sw) other tại [3- type) 0] 0000 0001 0001 0001 0001 0001 0001 0001 0110 1001 1000 0010 0010 illegal 0010 XXXX XXXX XXXX 0011 0101 illegal 0011 XXXX XXXX XXXX 0100 XXXX illegal 0100 XXXX XXXX XXXX 0000 XXXX illegal 0101 XXXX XXXX XXXX XXXX 0000 illegal 0110 0111 XXXX XXXX XXXX XXXX illegal 0111 0000 XXXX XXXX XXXX XXXX illegal 1000 XXXX XXXX 0000 XXXX XXXX illegal 1001 XXXX 0000 XXXX XXXX XXXX illegal 37
- Vi lập trình Một vi lệnh cần chỉ rõ các tín hiệu điều khiển nào cần được xác lập. vi lệnh nào sẽ được thực thi tiếp theo. Mỗi vi lệnh tương ứng với một trạng thái trong FSM và được gán số của trạng thái (hay “địa chỉ”). 1. Hành vi tuần tự – tăng trạng thái (địa chỉ) của vi lệnh hiện hành để có trạng thái (địa chỉ) của vi lệnh tiếp theo. 2. Nhảy đến vi lệnh bắt đầu việc thực thi lệnh tiếp theo của MIPS (state 0) 3. Rẽ nhánh đến vi lệnh dựa trên đầu vào của đơn vị điều khiển sử dụng các bảng rẽ nhánh ( dispatch table). - cần một bảng đối với các vi lệnh theo sau state 1. - cần một bảng khác đối với các vi lệnh theo sau state 2. Tập các vi lệnh xác định một lệnh hợp ngữ của MIPS (macroinstruction ) là microroutine của lệnh này. 39
- Khuôn dạng vi lệnh của ta Field Value Signal setting Comments ALU Add ALUOp = 00 Cause ALU to add control Subt ALUOp = 01 Cause ALU to subtract (compare op for beq) Func code ALUOp = 10 Use IR function code to determine ALU control SRC1 PC ALUSrcA = 0 Use PC as top ALU input A ALUSrcA = 1 Use reg A as top ALU input SRC2 B ALUSrcB = 00 Use reg B as bottom ALU input 4 ALUSrcB = 01 Use 4 as bottom ALU input Extend ALUSrcB = 10 Use sign ext output as bottom ALU input Extshft ALUSrcB = 11 Use shift-by-two output as bottom ALU input Register Read Read RegFile using rs and rt fields of IR as control read addr’s; put data into A and B Write ALU RegWrite, Write RegFile using rd field of IR as write addr RegDst = 1, and ALUOut as write data MemtoReg = 0 Write RegWrite, Write RegFile using rt field of IR as write addr MDR RegDst = 0, and MDR as write data MemtoReg = 1 41
- Mạch logic rẽ nhánh Các thao tác rẽ nhánh được thực hiện bằng cách sử dụng mạch logic đặc biệt (PLA). Microcode Dispatch PLA_1 Microcode Dispatch PLA_2 Opcod Opcode Value Opcode Opcode Value e field (Addr) field (Addr) 000000 R-format Rexec (6) 100011 lw Memlw (3) 000010 jmp Jump (9) 101011 sw Memsw (5) 000100 beq Beq (8) 100011 lw Maddr (2) 101011 sw Maddr (2) 43
- Toàn bộ vi chương trình điều khiển Addr ALU SRC1 SRC2 Reg Memory PCWrite Seq’ing control control control 0 Add PC 4 Read PC ALU Seq 1 Add PC Ext Read Disp 1 shft 2 Add A Extend Disp 2 3 Read ALU Seq 4 Write Fetch MDR 5 Write Fetch ALU 6 Func AB Seq code 7 Write Fetch ALU 8 Subt A B ALUOut- Fetch cond 9 Jump Fetch address 45
- Những lựa chọn khác của việc thiết kế đơn vị điều khiển Finite state Initial Microprogram representation diagram Sequencing Explicit next Microprogram counter control state function + dispatch PLAs Logic Logic representation equations Microcode Implementation Programmable technique Logic Array (PLA) Ưu điểm của biểu diễn vi chương trình Dễ thiết kế, viết và gỡ lỗi. 47
- Định thời đơn chu kỳ so với đa chu kỳ Thực hiện đơn chu kỳ: Cycle 1 Cycle 2 Clk lw sw Waste Clock đa chu kỳ chậm hơn 1/5 th clock đơn chu Thực hiện đa chu kỳ: kỳ do tổn phí của thanh ghi trạng thái. Clk Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10 lw sw R-type IFetch Dec Exec Mem WB IFetch Dec Exec Mem IFetch 49