Bài giảng Kiến trúc máy tính - Chương 4.1: Thiết kế bộ xử lý đơn chu kỳ (Single Cycle Processor)

Thiết kết bộ xử lý: Các bước thực hiện
 Các thành phần của Datapath và cấp xung nhịp
 Xây dựng Datapath đầy đủ
 Điều khiển quá trình thực thi của các lệnh
 Bộ điều khiển chính và bộ điều khiển ALU
 Hạn chế của thiết kế bộ xử lý đơn chu kỳ 
pdf 59 trang xuanthi 28/12/2022 2400
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.1: Thiết kế bộ xử lý đơn chu kỳ (Single Cycle Processor)", để 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:

  • pdfbai_giang_kien_truc_may_tinh_chuong_4_1_thiet_ke_bo_xu_ly_do.pdf

Nội dung text: Bài giảng Kiến trúc máy tính - Chương 4.1: Thiết kế bộ xử lý đơn chu kỳ (Single Cycle Processor)

  1. dce 2017 Chapter 4.1 Thiết kế bộ xử lý đơn chu kỳ (Single Cycle Processor) Computer Architecture – Chapter 4.1 © Fall 2017, CSE 2
  2. dce 2017 Bên trong bộ xử lý Computer Architecture – Chapter 4.1 © Fall 2017, CSE 4
  3. dce 2017 Các yếu tố ảnh hưởng đến hiệu xuất  Hiệu xuất được xác định bởi:  Số lệnh (Instruction count)  Số chu kỳ xung nhịp trung bình trên lệnh (CPI)  Thời gian của một chu kỳ xung nhịp  Thiết kế bộ xử lý ảnh hưởng; I-Count  CPI  Thời gian của một chu kỳ CPI Cycle  Thiết kế bộ xử xý đơn chu kỳ:  Một lệnh thực hiện trong một chu kỳ (CPI =1) Computer Architecture – Chapter 4.1 © Fall 2017, CSE 6
  4. dce 2017 Các định dạng lệnh MIPS  Tấc cả các lệnh: độ rộng 32-bit  Ba loại: R-type, I-type, và J-type Op6 Rs5 Rt5 Rd5 sa5 funct6 Op6 Rs5 Rt5 immediate16 Op6 immediate26  Op6: 6-bit opcode of the instruction  Rs5, Rt5, Rd5: 5-bit source and destination register numbers  sa5: 5-bit shift amount used by shift instructions  funct6: 6-bit function field for R-type instructions  immediate16: 16-bit immediate value or address offset  immediate26: 26-bit target address of the jump instruction Computer Architecture – Chapter 4.1 © Fall 2017, CSE 8
  5. dce 2017 Chi tiết tập lệnh con Instruction Meaning Format add rd, rs, rt addition op6 = 0 rs5 rt5 rd5 0 0x20 sub rd, rs, rt subtraction op6 = 0 rs5 rt5 rd5 0 0x22 and rd, rs, rt bitwise and op6 = 0 rs5 rt5 rd5 0 0x24 or rd, rs, rt bitwise or op6 = 0 rs5 rt5 rd5 0 0x25 xor rd, rs, rt exclusive or op6 = 0 rs5 rt5 rd5 0 0x26 slt rd, rs, rt set on less than op6 = 0 rs5 rt5 rd5 0 0x2a addi rt, rs, im16 add immediate 0x08 rs5 rt5 im16 slti rt, rs, im16 slt immediate 0x0a rs5 rt5 im16 andi rt, rs, im16 and immediate 0x0c rs5 rt5 im16 ori rt, rs, im16 or immediate 0x0d rs5 rt5 im16 xori rt, im16 xor immediate 0x0e rs5 rt5 im16 lw rt, im16(rs) load word 0x23 rs5 rt5 im16 sw rt, im16(rs) store word 0x2b rs5 rt5 im16 beq rs, rt, im16 branch if equal 0x04 rs5 rt5 im16 bne rs, rt, im16 branch not equal 0x05 rs5 rt5 im16 j im26 jump 0x02 im26 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 10
  6. dce 2017 Instructions are Executed in Steps  R-type Nạp lệnh: Instruction ← MEM[PC] Nạp toán hạn: data1 ← Reg(Rs), data2 ← Reg(Rt) Thực hiện phép toán: ALU_result ← func(data1, data2) Ghi vào thanh ghi: Reg(Rd) ← ALU_result Chuẩn bị lệnh kế: PC ← PC + 4  I-type Nạp lệnh : Instruction ← MEM[PC] Nạp toán hạn : data1 ← Reg(Rs), data2 ← Extend(imm16) Thực hiện phép toán : ALU_result ← op(data1, data2) Ghi vào thanh ghi : Reg(Rt) ← ALU_result Chuẩn bị lệnh kế : PC ← PC + 4  BEQ Nạp lệnh : Instruction ← MEM[PC] Nạp toán hạn : data1 ← Reg(Rs), data2 ← Reg(Rt) Kiểm tra bằng: zero ← subtract(data1, data2) Rẽ nhánh: if (zero) PC ← PC + 4 + 4×sign_ext(imm16) else PC ← PC + 4 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 12
  7. dce 2017 Các thành phần yêu cầu từ tập lệnh  Bộ nhớ  Bộ nhớ lệnh là nơi chứa lệnh  Bộ nhớ dữ liệu là nơi chứa dữ liệu  Bộ thanh ghi  31 × 32-bit thanh ghi đa dụng, R0 luôn bằng giá trị 0  Đọc thanh ghi nguồn Rs  Đọc thanh ghi nguồn Rt  Ghi vào thanh ghi đích Rt hoặc Rd  Bộ đếm chương trình (thanh ghi PC) và Bộ cộng để tăng PC = PC + 4  Bộ mở rộng dấu và 0 cho hằng số 16 bit  Bộ tính toán số học luận lý ALU thực hiện tính toán Computer Architecture – Chapter 4.1 © Fall 2017, CSE 14
  8. dce 2017 Các thành phần của Datapath  Các phần tử mạch tổ hợp 32 0 zero 16 32 m A 32  ALU, Adder Extend u L ALU result x 32 U overflow  Immediate extender 1 ExtOp select ALU control  Multiplexers 32 Instruction Data  Các phần tử lưu trữ Memory 32 32 32 32 Address Address  Instruction memory PC 32 32 Data_out Instruction Data_in  Data memory clk Memory clk  PC register Mem Mem Registers Read Write 5 32  Register file RA BusA 5 32 RB BusB 5  Xung nhịp RW BusW  Đồng bộ quá trình ghi clk RegWrite 32 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 16
  9. dce 2017 Bộ thanh ghi MIPS (Register File) RW RA RB  Bộ thanh ghi bao gồm 32 × 32-bit thanh ghi  BusA và BusB: 32-bit ngõ ra cho 2 toán hạn nguồn  BusW: 32-bit ngõ vào để ghi giá trị vào thanh ghi khi RegWrite = 1  Lựa chọn thanh ghi: Register 5 32  RA lựa chọn thanh ghi đọc cho giá trị ở BusA RA File BusA 5 RB  RB lựa chọn thanh ghi đọc cho giá trị ở BusB 32 5 BusB RW  RW lựa chọ thanh ghi được ghi vào Clock  Xung nhịp BusW 32  Xung nhịp sử dụng khi GHI (cạnh lên) RegWrite  Khi đọc, bộ thanh ghi như là một mạch tổ hợp . RA, RB hợp lệ => BusA, BusB là giá trị tương ứng sau thời gian truy xuất Computer Architecture – Chapter 4.1 © Fall 2017, CSE 18
  10. dce 2017 Bộ đệm 3 trạng thái  Cho phép nhiều nguồn sử dụng chung một bus  Hai ngõ vào: Enable  Data_in  Enable (to enable output) Data_in Data_out  Một ngõ ra: Data_out  If (Enable) Data_out = Data_in else Data_out = High Impedance state (output bị ngắt) Data_0  Bộ đệm 3 trạng thái được Output sử dụng tạo thành bộ Data_1 hợp kênh (multiplexor) Select Computer Architecture – Chapter 4.1 © Fall 2017, CSE 20
  11. dce 2017 Mạch Full Adder C0 S Full adder x y C S = x + y + C0 Half adder 1 S = (x + y) + C0 Tính: S1 = x + y Tính: S2 = S1 + C0 Half adder 2 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 22
  12. dce 2017 Full adder (3) C0 Half S adder S1 C2 x Half adder C1 C y Computer Architecture – Chapter 4.1 © Fall 2017, CSE 24
  13. dce 2017 Xây dựng bộ ALU 2 SLL = 00 SLT: ALU does a SRL = 00 Shift Amount 5 SUB and check the SRA = 01 Shifter sign and overflow Operation ROR = 11 Shift/Rotate 32 c 0 0 ALU Result A 32 sign A ≠ 1 32 d d 32 2 B 32 e ADD = 0 r 3 SUB = 1 overflow 2 zero Operation Arithmetic Logic Unit 0 ALU Selection 1 2 Shift = 00 AND = 00 SLT = 01 OR = 01 3 Arith = 10 NOR = 10 2 Logic = 11 Logical Operation XOR = 11 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 26
  14. dce 2017 Phương pháp cấp xung nhịp  Xung nhịp cần thiết cho các thành  Sử dụng cạnh lên phần tuần tự (lưu trữ) cho biết khi  Tấc cả trạng thái nào cập nhật (ghi) vào thay đổi tại thời  Phương pháp cấp xung nhịp xác điểm cạnh lên định khi nào dữ liệu có thể được ghi  Dữ liệu phải hợp và được đọc lệ và ổn định trước thời điểm cạnh lên  Cho phép đọc và Combinational logic ghi được thực Register 2 Register 1 hiện trong cùng một chu kỳ xung clock nhịp rising edge falling edge Computer Architecture – Chapter 4.1 © Fall 2017, CSE 28
  15. dce 2017 Clock Skew  Clock skew sinh ra vì các tín hiệu xung nhịp sử dụng các đường đi khác nhau để đến các phần tử tuần tự  Clock skew là sự sai biệt thời gian để hai phần tử tuần tự nhìn thấy cạnh xung nhịp  Với clock skew, chu kỳ xung nhịp tăng lên Tcycle ≥ Tclk-q + Tmax_combinational + Tsetup+ Tskew Computer Architecture – Chapter 4.1 © Fall 2017, CSE 30
  16. dce 2017 Đường dữ liệu (datapath) cho việc nạp lệnh  Bắt đầu thực hiện xây dựng datapath từ các thành phần đã được định danh trong bước 1  Cho việc nạp lệnh, chúng ta cần  Thanh ghi bộ đếm chương trình (PC) Cải tiến: cộng 30  Bộ nhớ lệnh bit cao PC lên 1  Bộ cộng để tăng PC = PC + 4 next PC Hai bit cuối của PC luôn next PC 4 A là ‘00’ vì đị chỉ lệnh là một Improved d 32 +1 32 d số chia hết cho 4 30 Datapath 30 32 32 00 00 Instruction Instruction 32 32 Address Chưa hỗ trợ lệnh Address PC nhảy và rẽ nhánh PC Instruction Instruction clk Memory clk Memory Computer Architecture – Chapter 4.1 © Fall 2017, CSE 32
  17. dce 2017 Datapath cho lệnh I-type (ALU) Op6 Rs5 Rt5 immediate16 RegWrite +1 ALUCtrl 30 Instruction Registers 32 Rs 5 30 Memory RA BusA 32 A 32 00 Instruction 5 L 32 RB 32 Address BusB 32 U Rt 5 PC RW ALU result BusW clk ExtOp Same clock Imm16 edge updates Rt chọn thanh ghi Extender để ghi, không phải PC and Rt Rd Toán hạn thứ hai của ALU từ bộ mở rộng hằng số 16->32bit. RB và BusB không được sử dụng  Các tín hiệu điều khiển  ALUCtrl lựa chọn phép toán từ trường Op  RegWrite cho phép ghi kết quả ALU result vào thanh ghi Rt  ExtOp lựa chọn mở rộng dấu/không cho hằng số 16-bit Computer Architecture – Chapter 4.1 © Fall 2017, CSE 34
  18. dce 2017 Tổng hợp hoạt động các lệnh ALU RegWrite = 1 ALUCtrl +1 Cho lệnh ALU R-type: 30 Instruction Registers 32 Rs 5 RegDst = ‘1’ chọn RW 30 Memory RA BusA 32 A 32 00 Instruction = Rd, ALUSrc = ‘0’ Rt 5 32 L 32 RB BusB 0 U chọn toán hạn thứ 2 Address 0 PC Rd RW 1 ALU từ BusB. 1 BusW Datapath mong muốn ALUSrc = 0 clk RegDst = 1 ExtOp minh họa bằng màu ALU result xanh lá Extender Imm16 RegWrite = 1 +1 ALUCtrl Cho lệnh ALU I-type: 30 Instruction Registers 32 RegDst = ‘0’ chọn RW Rs 5 30 Memory RA BusA = Rt, ALUSrc = ‘1’ chọn 32 A 32 00 Instruction Rt 5 32 L toán hạn thứ 2 ALU từ 32 RB BusB 0 U Address 0 Extender. Datapath PC Rd RW 1 1 BusW mong muốn minh họa ALUSrc = 1 bằng màu xanh lá clk RegDst = 0 ExtOp 32 ALU result Extender Imm16 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 36
  19. dce 2017 Thêm bộ nhớ dữ liệu (Data Memory) vào Datapath  Data memory được thêm vào cho lệnh load và store ExtOp ALUCtrl MemRead MemWrite Imm16 32 ALUSrc MemtoReg E ALU result +1 30 32 Instruction Rs 5 Data Memory RA BusA 30 Memory 0 32 A 32 32 00 Instruction Registers Rt 5 L Address 32 RB BusB 0 U 32 Address 0 Data_out 1 PC Rd RW Data_in 1 BusW 1 32 RegDst Reg clk Write ALU tính địa chỉ của Data Memory Thêm mux thứ 3 chọn dữ liệu BusW từ kết quả ALU hoặc từ Data_out của  Các tín hiệu điều khiển mới Data Memory  MemRead yêu cầu đọc (lw) BusB is connected to Data_in of Data Memory for store instructions  MemWrite yêu cầu ghi (sw)  MemtoReg chọn dữ liệu của BusW là kết quả từ ALU result hoặc từ Memory Data_out Computer Architecture – Chapter 4.1 © Fall 2017, CSE 38
  20. dce 2017 Hoạt động của lệnh “Store” ExtOp = 1 ALUCtrl MemRead MemWrite = ADD ALUSrc = 0 = 1 Imm16 32 = 1 MemtoReg E ALU result = X +1 30 32 Instruction Rs 5 Data Memory RA BusA 30 Memory 0 32 A 32 32 00 Instruction Registers Rt 5 L Address 32 RB BusB 0 U 32 Address 0 Data_out 1 PC Rd RW Data_in 1 BusW 1 32 RegDst RegWr = X clk = 0 RegDst = ‘X’ vì không RegWrite = ‘0’ không cho ExtOp = 1 thực hiện mở rộng thực hiện ghi phép ghi vào thanh ghi dấu hằng số 16 -> 32 bit ALUSrc = ‘1’ chọn toán hạn thứ ALUCtrl = ‘ADD’ tính toán địa chỉ truy xuất bộ 2 của ALU từ bộ Extender nhớ Reg(Rs) + sign-extend(Imm16) MemWrite = ‘1’ yêu MemtoReg = ‘X’ dữ liệu xuất Clock cập nhật PC và cầu ghi dữ liệu vào hiện trên BusW không quan giá trị vào bộ nhớ bộ nhớ trọng Computer Architecture – Chapter 4.1 © Fall 2017, CSE 40
  21. dce 2017 Chi tiết bộ Next PC Branch or Jump Target Address PCSrc 30 Inc PC A 30 D 0 Sign-Extension: 30 D Mở rộng dấu m 30 u Beq 16->30 SE x Imm16 msb 4 Bne Imm26 1 26 J Imm16 được mở rộng dấu thành 30 bit Zero Địa chỉ đích của lệnh Jump: 4 bit cao của PC nối với Imm26 PCSrc = J + (Beq . Zero) + (Bne . Zero) Computer Architecture – Chapter 4.1 © Fall 2017, CSE 42
  22. dce 2017 Hoạt động của lệnh “rẽ nhánh” 30 Branch Target Address J = 0 Next Beq = 1 PC Bne = 0 30 ALU result Imm26 PCSrc +1 Imm16 Zero = 1 32 = 1 Instruction Rs 5 Data Memory RA BusA 30 Memory 0 32 A 32 32 00 Registers Instruction Rt 5 L Address 0 32 RB BusB 0 U 1 Address 0 32 Data_out 1 PC Rd RW Data_in 1 BusW E 1 32 RegDst = x RegWr clk = 0 Mem Mem Mem ExtOp ALUSrc ALUCtrl Read Write toReg = x = 0 = SUB Beq = 1 hoặc Bne =1 = 0 = 0 = x tùy vào lệnh Ngõ ra “Next PC” là địa chỉ đích khi rẽ nhánh ALUSrc = 0 lựa chọn PCSrc = 1 nếu rẽ nhánh xảy ra giá trị trên BusB RegWrite, MemRead và MemWrite bằng 0 ALUCtrl = SUB để tạo giá trị cờ Zero Clock chỉ cập nhật giá trị thanh ghi PC Computer Architecture – Chapter 4.1 © Fall 2017, CSE 44
  23. dce 2017 Bộ điều khiển chính (Main Control) và bộ điều khiển ALU (ALU Control) Instruction Memory 32 A Instruction Datapath L Address U MemRead MemWrite MemtoReg RegDst RegWrite ExtOp ALUSrc Beq Bne J 6 Op ALUCtrl funct6 Main ALU Control Op6 Control Ngõ vào Main Control: Ngõ vào ALU Control: 6-bit opcode từ 32 bit lệnh  6-bit opcode từ 32 bit lệnh  6-bit function Ngõ ra Main Control: Ngõ ra ALU Control: 10 tín hiệu điều khiển cho Datapath  ALUCtrl cho bộ ALU Computer Architecture – Chapter 4.1 © Fall 2017, CSE 46
  24. dce 2017 Các tín hiệu ngõ ra từ Main Control Tín hiệu Trường hợp bằng ‘0’ Trường hợp bằng ‘1’ RegDst Thanh ghi đích Rw = Rt Thanh ghi đích Rw = Rd Thanh ghi đích được ghi vào với giá RegWrite Không cho phép ghi trị trên BusW ExtOp 16-bit hằng số được mở rộng không 16-bit hằng số được mở rộng dấu Toán hạn thứ 2 của ALU là giá trị từ Toán hạn thứ 2 của ALU là giá trị bộ ALUSrc thanh ghi Rt (BusB) mở rộng 16->32 bit Data memory được đọc MemRead Không cho phép đọc từ bộ nhớ Data_out ← Memory[address] Data memory được ghi MemWrite Không cho phép ghi vào bộ nhớ Memory[address] ← Data_in MemtoReg BusW = ALU result BusW = Data_out từ Data Memory PC ← Địa chỉ đích của lệnh rẽ Beq, Bne PC ← PC + 4 nhánh nếu xảy ra J PC ← PC + 4 PC ← Địa chỉ đích của lệnh nhảy Computer Architecture – Chapter 4.1 © Fall 2017, CSE 48
  25. dce 2017 Phương trình luận lý của các tín hiệu ra RegDst = R-type Op6 RegWrite = (sw + beq + bne + j) Decoder ExtOp = (andi + ori + xori) type lw ori slti sw - xori addi andi R ALUSrc = (R-type + beq + bne) Logic Equations MemRead = lw MemtoReg = lw J Bne Beq ExtOp RegDst ALUSrc RegWrite MemWrite MemRead MemWrite = sw MemtoReg Computer Architecture – Chapter 4.1 © Fall 2017, CSE 50
  26. dce 2017 Tiếp theo . . .  Thiết kết bộ xử lý: Các bước thực hiện  Các thành phần của Datapath và cấp xung nhịp  Xây dựng Datapath đầy đủ  Điều khiển quá trình thực thi của các lệnh  Bộ điều khiển chính và bộ điều khiển ALU  Hạn chế của thiết kế bộ xử lý đơn chu kỳ Computer Architecture – Chapter 4.1 © Fall 2017, CSE 52
  27. dce 2017 Thời gian của lệnh Load Clk Clk-to-q Old PC New PC Instruction Memory Access Time Old Instruction Load Instruction = (Op, Rs, Rt, Imm16) Delay Through Control Logic Old Control Signal Values New Control Signal Values Register File Access Time Old BusA Value New BusA Value = Register(Rs) Delay Through Extender and ALU Mux Old Second ALU Input New Second ALU Input = sign-extend(Imm16) ALU Delay Old ALU Result New ALU Result = Address Data Memory Access Time Old Data Memory Output Value Data from DM Write Mux delay + Setup time + Clock skew Occurs Clock Cycle Computer Architecture – Chapter 4.1 © Fall 2017, CSE 54
  28. dce 2017 Cải tiến: Hiện thực đa chu kỳ  Chi quá trình thực thi lệnh thành năm bước  Nạp lệnh  Giải mã lệnh, đọc thanh ghi, tính địa chỉ đích cho lệnh nhảy/rẽ nhánh  Thực thi phép toán , tính địa chỉ truy xuất bộ nhớ, rẽ nhánh xảy ra  Truy xuất bộ nhớ hoặc chuẩn bị ghi dữ liệu vào thanh ghi đích (lệnh ALU)  Chuẩn bị ghi dữ liệu vào thanh ghi đích (lệnh Load)  Mỗi bước là một chu kỳ (thời gian một chu kỳ giảm)  FirstInstruction 2 steps are the same# cycles for allInstruction instructions # cycles ALU & Store 4 Branch 3 Load 5 Jump 2 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 56
  29. dce 2017 Solution Instruction Instruction Register ALU Data Register Total Class Memory Read Operation Memory Write ALU 200 150 180 100 630 ps Load 200 150 180 200 100 830 ps Store 200 150 180 200 730 ps Branch 200 150 180 530 ps Jump 200 150 350 ps  Cho thiết kế đơn chu kỳ:  Chu kỳ xung nhịp = 830 ps thõa mãn lệnh dài nhất (lệnh load)  Cho thiết kế đa chu kỳ:  Chu kỳ xung nhịp = max(200, 150, 180) = 200 ps (thõa mãn bước dài nhất)  CPI trung bình = 0.4×4 + 0.2×5 + 0.1×4+ 0.2×3 + 0.1×2 = 3.8  Speedup = 830 ps / (3.8 × 200 ps) = 830 / 760 = 1.1 Computer Architecture – Chapter 4.1 © Fall 2017, CSE 58