Computer Architecture – Chapter 4.1: Thiết kế bộ xử lý đơn chu kỳ (single cycle processor)

5 bước trong quá trình thiết kế bộ xử lý = datapath+control  Phân tích tập lệnh => tìm ra các thành phần cần thiết cho datapath  Hiện thực các thành phần của datapath & thiết lập cách cấp xung nhịp  Kết nối các thành phần của datapath để thõa mãn tập lệnh  Phân tích quá trình kết nối ở bước 4 để xác định các tín hiệu điều khiển cần thiết  Hiện thực bộ điều khiển  Bộ xử lý MIPS có thiết kế đơn giản  Các lệnh có cùng độ rộng 32 bit  Thanh ghi nguồn ở vị trí cố định  Hắng số imm16 ở vị trí cố định và cùng độ rộng 16 bit  Toán hạn của ALU là thanh ghi/hằng số  Bộ xử lý đơn chu kỳ => CPI=1, nhưng chu kỳ sẽ dài

pdf59 trang | Chia sẻ: nguyenlam99 | Lượt xem: 2333 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Computer Architecture – Chapter 4.1: Thiết kế bộ xử lý đơn chu kỳ (single cycle processor), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BK TP.HCM 2015 dce COMPUTER ARCHITECTURE CSE Fall 2015 Faculty of Computer Science and Engineering Department of Computer Engineering Vo Tan Phuong 2015 dce 2 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Chapter 4.1 Thiết kế bộ xử lý đơn chu kỳ (Single Cycle Processor) 2015 dce 3 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Chúng ta đang ở đâu? 2015 dce 4 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Bên trong bộ xử lý 2015 dce 5 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Nội dung  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ỳ 2015 dce 6 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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;  CPI  Thời gian của một chu kỳ  Thiết kế bộ xử xý đơn chu kỳ:  Một lệnh thực hiện trong một chu kỳ (CPI =1) I-Count CPI Cycle 2015 dce 7 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Thiết kế một bộ xử lý: Các bước thực hiện  Phân tích tập lệnh =>xác định các thành phần của datapath  Thiết kế, lựa chọn các thành phần của datapath và phương pháp cấp xung nhịp  Gắn các thành phần của datapath đáp ứng yêu cầu công việc của từng lệnh  Xác định các giá trị của các tín hiệu điều khiển cho việc điều khiển dòng lưu chuyển của dữ liệu  Thiết kế và thêm vào bộ điều khiển 2015 dce 8 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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: 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 Op6 Rs5 Rt5 Rd5 funct6 sa5 Op6 Rs5 Rt5 immediate16 Op6 immediate26 2015 dce 9 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Tập lệnh con MIPS  Sử dụng tập lệnh con MIPS trong quá trình thiết kế  ALU instructions (R-type): add, sub, and, or, xor, slt  Immediate instructions (I-type): addi, slti, andi, ori, xori  Load and Store (I-type): lw, sw  Branch (I-type): beq, bne  Jump (J-type): j  Tương đối đầy đủ để minh họa quá trình xây dựng Bộ xử lý = datapath + control  Quá trình xây dựng bộ xử lý MIPS tương tự việc xây dựng các bộ xử ký khác 2015 dce 10 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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 2015 dce 11 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Register Transfer Level (RTL)  RTL mô tả dòng dữ liệu giữa các thanh ghi  RTL cho biết ý nghĩa (công việc chính) của lệnh  Tấc cả các lệnh được nạp từ địa chỉ trong thanh ghi PC Instruction RTL Description ADD Reg(Rd) ← Reg(Rs) + Reg(Rt); PC ← PC + 4 SUB Reg(Rd) ← Reg(Rs) – Reg(Rt); PC ← PC + 4 ORI Reg(Rt) ← Reg(Rs) | zero_ext(Im16); PC ← PC + 4 LW Reg(Rt) ← MEM[Reg(Rs) + sign_ext(Im16)]; PC ← PC + 4 SW MEM[Reg(Rs) + sign_ext(Im16)] ← Reg(Rt); PC ← PC + 4 BEQ if (Reg(Rs) == Reg(Rt)) PC ← PC + 4 + 4 × sign_extend(Im16) else PC ← PC + 4 2015 dce 12 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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 2015 dce 13 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Instruction Execution – cont’d  LW Nạp lệnh : Instruction ← MEM[PC] Nạp thanh ghi nền: base ← Reg(Rs) Tính địa chỉ: address ← base + sign_extend(imm16) Đọc ô nhớ: data ← MEM[address] Ghi vào thanh ghi: Reg(Rt) ← data Chuẩn bị lệnh kế : PC ← PC + 4  SW Nạp lệnh : Instruction ← MEM[PC] Nạp thanh ghi: base ← Reg(Rs), data ← Reg(Rt) Tính địa chỉ: address ← base + sign_extend(imm16) Ghi vào ô nhớ: MEM[address] ← data Chuẩn bị lệnh kế : PC ← PC + 4  Jump Nạp lệnh : Instruction ← MEM[PC] Tính địa chỉ đích: target ← PC[31:28] || Imm26 || ‘00’ Nhảy: PC ← target concatenation 2015 dce 14 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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 2015 dce 15 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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ỳ 2015 dce 16 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Các thành phần của Datapath  Các phần tử mạch tổ hợp  ALU, Adder  Immediate extender  Multiplexers  Các phần tử lưu trữ  Instruction memory  Data memory  PC register  Register file  Xung nhịp  Đồng bộ quá trình ghi 32 Address Instruction Instruction Memory 32 m u x 0 1 select Extend 32 16 ExtOp A L U ALU control ALU result zero 32 32 32 overflow P C 32 32 clk Registers RA RB BusA RegWrite BusB RW 5 5 5 32 32 32 BusW clk Data Memory Address Data_in Data_out Mem Read Mem Write 32 32 32 clk 2015 dce 17 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Thanh ghi  Thanh ghi  Tương tự D Flip-Flop  n-bit vào và ra  Write Enable (WE):  Cho phép/ cấm ghi vào thanh ghi  Cấm (0): Data_Out không đổi  Cho phép (1): Data_Out = Data_In sau cạnh lên của xung nhịp  Xung nhịp kích cạnh lên (0 -> 1)  Giá trị output được thay đổi tại cạnh lên của xung nhịp Register Data_In Clock Write Enable n bits Data_Out n bits WE 2015 dce 18 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Bộ thanh ghi MIPS (Register File)  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:  RA lựa chọn thanh ghi đọc cho giá trị ở BusA  RB lựa chọn thanh ghi đọc cho giá trị ở BusB  RW lựa chọ thanh ghi được ghi vào  Xung nhịp  Xung nhịp sử dụng khi GHI (cạnh lên)  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 RW RA RB Register File RA RB BusA RegWrite BusB RW 5 5 5 32 32 32 BusW Clock 2015 dce 19 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Chi tiết bộ thanh ghi BusA BusB "0" "0" RA Decoder 5 RB Decoder 5 R1 R2 R31 . . . BusW D e c o d e r RW 5 Clock RegWrite . . . R0 is not used 32 32 32 32 32 32 32 32 32 Tri-state buffers WE WE WE 2015 dce 20 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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:  Data_in  Enable (to enable output)  Một ngõ ra: Data_out  If (Enable) Data_out = Data_in else Data_out = High Impedance state (output bị ngắt)  Bộ đệm 3 trạng thái được sử dụng tạo thành bộ hợp kênh (multiplexor) Data_in Data_out Enable Data_0 Data_1 Output Select 2015 dce 21 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Half adder y S C x x y S C 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 C S y x AND XOR AND XOR Mạch Half Adder 2015 dce 22 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Full adder y S C x C0 S = x + y + C0 S = (x + y) + C0 Tính: S1 = x + y Tính: S2 = S1 + C0 Half adder 1 Half adder 2 Mạch Full Adder 2015 dce 23 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 C C2 C1 S1 C0 C S y x C0 C = 1 when C1 = 1 or C2 = 1 Full adder (2) 2015 dce 24 Computer Architecture – Chapter 4.1 © Fall 2015, CSE C0 x y S1 S C1 C2 C Half adder Half adder Full adder (3) 2015 dce 25 Computer Architecture – Chapter 4.1 © Fall 2015, CSE y3 y0 S0 x0 0 S1 S2 S3 C x1 x2 x3 y1 y2 Full adder 0 Full adder 1 Full adder 2 Full adder 3 x3x2x1x0 C S3S2S1S0 y3y2y1y0 + Cộng nhiều Bits 2015 dce 26 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Xây dựng bộ ALU 0 1 2 3 0 1 2 3 Logic Unit 2 AND = 00 OR = 01 NOR = 10 XOR = 11 L o g ic a l O p e ra ti o n Shifter 2 SLL = 00 SRL = 00 SRA = 01 ROR = 11 S h if t/ R o ta te O p e ra ti o n A 32 32 B A d d e r c0 32 32 ADD = 0 SUB = 1 A ri th m e ti c O p e ra ti o n Shift = 00 SLT = 01 Arith = 10 Logic = 11 ALU Selection 32 2 Shift Amount ALU Result 5 sign ≠ zero overflow SLT: ALU does a SUB and check the sign and overflow 2015 dce 27 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Bộ nhớ lệnh và bộ nhớ dữ liệu  Bộ nhớ lệnh chỉ cần thao tác đọc  Datapath không thực hiện việc ghi lệnh  Chức năng giống mạch tổ hợp cho thao tác đọc  Address lựa chọn Instruction sau access time  Bộ nhớ dữ liệu dùng cho lệnh load và store  MemRead: cho phép dữ liệu ra tại Data_out  Address lựa chọn ô nhớ để đưa ra Data_out  MemWrite: cho phép ghi dữ liệu từ Data_in  Address lựa chọn ô nhớ sẽ được ghi vào  Clock đồng bộ thao tác ghi  Tách biệt bộ nhớ lệnh và bộ nhớ dữ liệu  Sau này đượ thay thế thành bộ nhớ đệm MemWrite MemRead Data Memory Address Data_in Data_out 32 32 32 Clock 32 Address Instruction Instruction Memory 32 2015 dce 28 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Phương pháp cấp xung nhịp  Xung nhịp cần thiết cho các thành phần tuần tự (lưu trữ) cho biết khi nào cập nhật (ghi) vào  Phương pháp cấp xung nhịp xác định khi nào dữ liệu có thể được ghi và được đọc Combinational logic R e g is te r 1 R e g is te r 2 clock rising edge falling edge  Sử dụng cạnh lên  Tấc cả trạng thái thay đổi tại thời điểm cạnh lên  Dữ liệu phải hợp lệ và ổn định trước thời điểm cạnh lên  Cho phép đọc và ghi được thực hiện trong cùng một chu kỳ xung nhịp 2015 dce 29 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Xác định chu kỳ xung nhịp  Với phương pháp kích cạnh lên, chu kỳ xung nhịp phải đủ dài để thỏa mãn thời gian cần thiết để dữ liệu hợp lệ và ổn định khi đi từ một thanh ghi qua mạch tổ hợp rồi đến thanh ghi khác Tcycle ≥ Tclk-q + Tmax_comb + Ts Combinational logic R e g is te r 1 R e g is te r 2 clock writing edge Tclk-q Tmax_comb Ts Th  Tclk-q : thời gian trễ từ cạnh lên đến khi dữ liệu mới hợp lệ trên đầu ra của thanh ghi  Tmax_comb : thời gian trễ dài nhất cho mạch tổ hợp  Ts : (setup time) thời gian cần thiết để dữ liệu ổn định trước lúc cạnh lên  Th: (hold time) thời gian dữ liệu cần duy trùy sau khi có cạnh lên  Hold time (Th) không quan trọng vì Tclk-q > Th 2015 dce 30 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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 2015 dce 31 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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ỳ 2015 dce 32 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Đườ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)  Bộ nhớ lệnh  Bộ cộng để tăng PC = PC + 4 Hai bit cuối của PC luôn là ‘00’ vì đị chỉ lệnh là một số chia hết cho 4 Chưa hỗ trợ lệnh nhảy và rẽ nhánh P C 32 Address Instruction Instruction Memory 32 32 32 4 A d d next PC clk Cải tiến: cộng 30 bit cao PC lên 1 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Improved Datapath next PC clk 0 0 2015 dce 33 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Datapath cho lệnh R-type  Các tín hiệu điều khiển  ALUCtrl chọn lựa phép toán theo trường funct vì Op = 0 cho R-type  RegWrite cho phép ghi kết quả ALU vào thanh ghi Rd Op6 Rs5 Rt5 Rd5 funct6 sa5 ALUCtrl RegWrite A L U 32 32 ALU result 32 Rs và Rt chỉ ra hai thanh ghi đọc giá trị (BusA & BusB). Rd chọn thanh ghi để ghi BusA & BusB là hai toán hạn của ALU. Kết quả từ ALU nối vào BusW để ghi 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Registers RA RB BusA BusB RW BusW 5 Rs 5 Rt 5 Rd clk Clock cập nhật PC và thanh ghi Rd giống nhau 2015 dce 34 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Datapath cho lệnh I-type (ALU)  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 Op6 Rs5 Rt5 immediate16 ALUCtrl RegWrite 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 5 Registers RA RB BusA BusB RW BusW 5 Rs 5 Rt ExtOp 32 32 ALU result 32 32 A L U Extender Imm16 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 Same clock edge updates PC and Rt Rt chọn thanh ghi để ghi, không phải Rd clk 2015 dce 35 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Kết hợp Datapath R-type & I-type  Các tín hiệu điều khiển  ALUCtrl lựa chọn phép toán ALU từ trường Op hoặc funct  RegWrite cho phép ghi kết quả ALU result vào thanh ghi  ExtOp chọn mở rộng dấu/không cho hằng số 16-bit  RegDst chọn lựa thanh ghi ghi từ Rt hoặc Rd  ALUSrc chọn toán hạn thứ 2 của ALU từ BusB hoặc Extender Thêm 1 mux lựa chọn RW từ Rt hoặc Rd Thêm mux lựa chọn toán hạn thứ 2 của ALU từ BusB hoặc từ bộ mở rộng hằng số 16->32bit ALUCtrl RegWrite ExtOp A L U ALU result 32 32 Registers RA RB BusA BusB RW 5 32 BusW 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Rs 5 Rd Extender Imm16 Rt 32 RegDst ALUSrc 0 1 clk 0 1 2015 dce 36 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Tổng hợp hoạt động các lệnh ALU Cho lệnh ALU R-type: RegDst = ‘1’ chọn RW = Rd, ALUSrc = ‘0’ chọn toán hạn thứ 2 ALU từ BusB. Datapath mong muốn minh họa bằng màu xanh lá Cho lệnh ALU I-type: RegDst = ‘0’ chọn RW = Rt, ALUSrc = ‘1’ chọn toán hạn thứ 2 ALU từ Extender. Datapath mong muốn minh họa bằng màu xanh lá A L U ALUCtrl ALU result 32 32 Registers RA RB BusA RegWrite = 1 BusB RW 5 32 BusW 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Rs 5 Rd Extender ExtOp Imm16 Rt 0 1 0 1 RegDst = 1 ALUSrc = 0 clk clk A L U ALUCtrl ALU result 32 32 Registers RA RB BusA RegWrite = 1 BusB RW 5 32 BusW 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Rs 5 Rd Extender ExtOp Imm16 Rt 32 0 1 0 1 RegDst = 0 ALUSrc = 1 2015 dce 37 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Chi tiết bộ mở rộng hằng số (Extender)  Hỗ trợ hai kiểu mở rộng  Mở rộng không (Zero-extension) cho hằng số kiểu unsigned  Mở rộng dấu (Sign-extension) cho hằng số kiểu signed  Tín hiệu điều khiển ExtOp chọn kiểu mở rộng  Hiện thực Extender : sử dụng 1 cổng AND ExtOp = 0  Upper16 = 0 ExtOp = 1  Upper16 = sign bit . . . ExtOp Upper 16 bits Lower 16 bits . . . Imm16 2015 dce 38 Computer Architecture – Chapter 4.1 © Fall 2015, CSE  Các tín hiệu điều khiển mới  MemRead yêu cầu đọc (lw)  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 BusB is connected to Data_in of Data Memory for store instructions 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 Thêm mux thứ 3 chọn dữ liệu BusW từ kết quả ALU hoặc từ Data_out của Data Memory Data Memory Address Data_in Data_out 32 32 A L U ALUCtrl 32 Registers RA RB BusA Reg Write BusB RW 5 BusW 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Rs 5 Rd E ExtOp Imm16 Rt 0 1 RegDst ALUSrc 0 1 32 MemRead MemWrite 32 ALU result 32 0 1 MemtoReg ALU tính địa chỉ của Data Memory clk 2015 dce 39 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Họat động của lệnh “Load” ALUCtrl = ADD RegWr = 1 ExtOp = 1 32 Data Memory Address Data_in Data_out 32 A L U Registers RA RB BusA BusB RW 5 BusW 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Rs 5 Rd E Imm16 Rt 0 1 0 1 32 ALU result 32 0 1 32 32 ALUCtrl = ‘ADD’ tính địa chỉ truy xuất bộ nhớ Reg(Rs) + sign-extend(Imm16) ALUSrc = ‘1’ lựa chọn toán hạn thứ 2 của ALU từ bộ Extender MemRead = ‘1’ yêu cầu đọc dữ liệu từ bộ nhớ RegDst = ‘0’ chọn Rt là thanh ghi đích RegWrite = ‘1’ cho phép ghi giá trị vào thanh ghi MemtoReg = ‘1’ đưa dữ liệu từ bộ nhớ ra BusW để ghi vào thanh ghi đích ExtOp = 1 thực hiện mở rộng dấu 16 -> 32 bit Clock cập nhật PC và Rt RegDst = 0 ALUSrc = 1 MemtoReg = 1 MemRead = 1 MemWrite = 0 clk 2015 dce 40 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Hoạt động của lệnh “Store” ALUCtrl = ADD RegWr = 0 ExtOp = 1 32 Data Memory Address Data_in Data_out 32 A L U Registers RA RB BusA BusB RW 5 BusW 32 Address Instruction Instruction Memory 32 30 P C 0 0 +1 30 Rs 5 Rd E Imm16 Rt 0 1 0 1 32 ALU result 32 0 1 32 32 ALUCtrl = ‘ADD’ tính toán địa chỉ truy xuất bộ nhớ Reg(Rs) + sign-extend(Imm16) ALUSrc = ‘1’ chọn toán hạn thứ 2 của ALU từ bộ Extender MemWrite = ‘1’ yêu cầu ghi dữ liệu vào bộ nhớ RegDst = ‘X’ vì không thực hiện ghi RegWrite = ‘0’ không cho phép ghi vào thanh ghi MemtoReg = ‘X’ dữ liệu xuất hiện trên BusW không quan trọng ExtOp = 1 thực hiện mở rộng dấu hằng số 16 -> 32 bit Clock cập nhật PC và giá trị vào bộ nhớ RegDst = X ALUSrc = 1 MemtoReg = X MemRead = 0 MemWrite = 1 clk 2015 dce 41 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Thêm các thành phần hỗ trợ lệnh “Jump” và “Branch” vào Datapath  Các tín hiệu điều khiển mới  J, Beq, Bne cho các lệnh nhảy và rẽ nhánh  Cờ Zero từ ALU, Zero = 1 khi ALU_result = 0  PCSrc = 1 cho lệnh nhảy & rẽ nhánh xảy ra Next PC Next PC logic thực hiện tính địa chỉ nhảy đến cho lệnh nhảy và rẽ nhánh zero PCSrc Bne Beq J ALUCtrl Reg Write ExtOp RegDst ALUSrc Data Memory Address Data_in Data_out 32 32 A L U 32 Registers RA RB BusA BusB RW 5 BusW 32 Address Instruction Instruction Memory P C 0 0 30 Rs 5 Rd E Imm16 Rt 0 1 0 1 32 Imm26 32 ALU result 32 0 1 clk +1 0 1 30 Jump or Branch Target Address 30 Mem Read Mem Write Mem toReg 2015 dce 42 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Chi tiết bộ Next PC Imm16 được mở rộng dấu thành 30 bit Đị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) A D D 30 30 0 m u x 1 Inc PC 30 Imm16 Imm26 30 SE 4 msb 26 Beq Bne J Zero PCSrc Branch or Jump Target Address Sign-Extension: Mở rộng dấu 16->30 2015 dce 43 Computer Architecture – Chapter 4.1 © Fall 2015, CSE ALU result 32 0 1 32 Hoạt động của lệnh “Jump” Next PC zero Bne = 0 Beq = 0 J = 1 ALUCtrl = x RegWr = 0 RegDst = x ALUSrc = x Data Memory Address Data_in Data_out 32 A L U 32 Registers RA RB BusA BusB RW 5 BusW 32 Address Instruction Instruction Memory P C 0 0 30 Rs 5 Rd E Imm16 Rt 0 1 0 1 32 Imm26 clk +1 0 1 30 Jump Target Address 30 Mem Read = 0 Mem Write = 0 Mem toReg = x PCSrc = 1 ExtOp = x 32 MemRead, MemWrite, và RegWrite bằng 0 J = 1. Ngõ ra của “Next PC” là địa chỉ đích của lệnh Jump Không quan tâm: RegDst, ExtOp, ALUSrc, ALUCtrl, và MemtoReg Clock chỉ cập nhật giá trị thanh ghi PC 2015 dce 44 Computer Architecture – Chapter 4.1 © Fall 2015, CSE ALU result 32 0 1 32 Hoạt động của lệnh “rẽ nhánh” Next PC Zero = 1 Bne = 0 Beq = 1 J = 0 ALUCtrl = SUB RegWr = 0 RegDst = x Data Memory Address Data_in Data_out 32 A L U 32 Registers RA RB BusA BusB RW 5 BusW 32 Address Instruction Instruction Memory P C 0 0 30 Rs 5 Rd E Imm16 Rt 0 1 0 1 32 Imm26 clk +1 0 1 30 Branch Target Address 30 Mem Read = 0 Mem Write = 0 Mem toReg = x PCSrc = 1 ExtOp = x 32 RegWrite, MemRead và MemWrite bằng 0 Beq = 1 hoặc Bne =1 tùy vào lệnh Clock chỉ cập nhật giá trị thanh ghi PC ALUSrc = 0 lựa chọn giá trị trên BusB ALUCtrl = SUB để tạo giá trị cờ Zero Ngõ ra “Next PC” là địa chỉ đích khi rẽ nhánh PCSrc = 1 nếu rẽ nhánh xảy ra ALUSrc = 0 2015 dce 45 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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ỳ 2015 dce 46 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Bộ điều khiển chính (Main Control) và bộ điều khiển ALU (ALU Control) Ngõ vào Main Control: 6-bit opcode từ 32 bit lệnh Ngõ ra Main Control: 10 tín hiệu điều khiển cho Datapath Datapath 32 Address Instruction Instruction Memory A L U Ngõ vào ALU Control:  6-bit opcode từ 32 bit lệnh  6-bit function Ngõ ra ALU Control:  ALUCtrl cho bộ ALU ALU Control Op6 R e g D s t R e g W ri te E x tO p A L U S rc M e m R e a d M e m W ri te M e m to R e g B e q B n e J Op6 ALUCtrl funct6 Main Control 2015 dce 47 Computer Architecture – Chapter 4.1 © Fall 2015, CSE zero Bộ xử lý đơn chu kỳ Datapath + Control PCSrc E Data Memory Address Data_in Data_out 32 A L U ALU result 32 5 Registers RA RB BusA BusB RW BusW 32 Address Instruction Instruction Memory P C 0 0 +1 30 Rs 5 Rd Imm26 Rt m u x 0 1 5 m u x 0 1 m u x 0 1 m u x 0 1 30 30 Jump or Branch Target Address 30 Imm16 Next PC RegDst ALUSrc RegWrite J, Beq, Bne MemtoReg MemRead MemWrite ExtOp Main Control Op ALU Ctrl ALUop func clk 2015 dce 48 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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 RegWrite Không cho phép ghi Thanh ghi đích được ghi vào với giá 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 ALUSrc Toán hạn thứ 2 của ALU là giá trị từ thanh ghi Rt (BusB) Toán hạn thứ 2 của ALU là giá trị bộ mở rộng 16->32 bit MemRead Không cho phép đọc từ bộ nhớ Data memory được đọc Data_out ← Memory[address] MemWrite Không cho phép ghi vào bộ nhớ Data memory được ghi Memory[address] ← Data_in MemtoReg BusW = ALU result BusW = Data_out từ Data Memory Beq, Bne PC ← PC + 4 PC ← Địa chỉ đích của lệnh rẽ nhánh nếu xảy ra J PC ← PC + 4 PC ← Địa chỉ đích của lệnh nhảy Các tín hiệu ngõ ra từ Main Control 2015 dce 49 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Bảng sự thật của Main Control  X là giá trị don’t care (có thể 0 hoặc 1), dùng để tối ưu Op Reg Dst Reg Write Ext Op ALU Src Beq Bne J Mem Read Mem Write Mem toReg R-type 1 = Rd 1 x 0=BusB 0 0 0 0 0 0 addi 0 = Rt 1 1=sign 1=Imm 0 0 0 0 0 0 slti 0 = Rt 1 1=sign 1=Imm 0 0 0 0 0 0 andi 0 = Rt 1 0=zero 1=Imm 0 0 0 0 0 0 ori 0 = Rt 1 0=zero 1=Imm 0 0 0 0 0 0 xori 0 = Rt 1 0=zero 1=Imm 0 0 0 0 0 0 lw 0 = Rt 1 1=sign 1=Imm 0 0 0 1 0 1 sw x 0 1=sign 1=Imm 0 0 0 0 1 x beq x 0 x 0=BusB 1 0 0 0 0 x bne x 0 x 0=BusB 0 1 0 0 0 x j x 0 x x 0 0 1 0 0 x 2015 dce 50 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Phương trình luận lý của các tín hiệu ra RegDst = R-type RegWrite = (sw + beq + bne + j) ExtOp = (andi + ori + xori) ALUSrc = (R-type + beq + bne) MemRead = lw MemtoReg = lw MemWrite = sw Op6 R -t y p e a d d i s lt i a n d i o ri x o ri lw s w B e q B n e R e g D s t R e g W ri te E x tO p A L U S rc M e m R e a d M e m to R e g M e m W ri te Logic Equations J Decoder 2015 dce 51 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Bảng sự thật của ALU Control Input Output 4-bit Encoding Op6 funct6 ALUCtrl R-type add ADD 0000 R-type sub SUB 0010 R-type and AND 0100 R-type or OR 0101 R-type xor XOR 0110 R-type slt SLT 1010 addi x ADD 0000 slti x SLT 1010 andi x AND 0100 ori x OR 0101 xori x XOR 0110 lw x ADD 0000 sw x ADD 0000 beq x SUB 0010 bne x SUB 0010 j x x x Giá trị cụ thể của ALU control có thể khác. Tùy vào hiện thực cụ thể của bộ ALU Giá trị 4-bit ALUCtrl được mã hóa tùy theo hiện thực của bộ ALU 2015 dce 52 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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ỳ 2015 dce 53 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Hạn chế của thiết kế bộ xử lý đơn chu kỳ  Chu kỳ xung nhịp dài  Phải thõa mãn lệnh chậm nhất longest delay Instruction Fetch ALU Decode Reg Read ALU Reg Write Load Instruction Fetch Decode Reg Read Compute Address Reg Write Memory Read Store Instruction Fetch Decode Reg Read Compute Address Memory Write Jump Instruction Fetch Decode PC Write Branch Instruction Fetch Reg Read Br Target Compare & PC Write 2015 dce 54 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Thời gian của lệnh Load New PC Old PC Clk-to-q 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 Mux delay + Setup time + Clock skew Write Occurs Clk Clock Cycle 2015 dce 55 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Thời gian của lệnh “Load”  Thời gian của chu kỳ xung nhịp: đủ dài cho lệnh chậm nhất Thời gian trễ PC cập nhật giá trị mới từ lúc cạnh lên của xung nhịp + Thời gian truy xuất mã máy từ bộ nhớ lệnh + Maximum của( Thời gian truy xuất thanh ghi Rs, Thời gian trễ của bộ Main Control + extender + ALU mux) + Thời gian ALU thực thi phép toán cộng + Thời gian truy xuất 4 ô nhớ (1 word) từ bộ nhớ dữ liệu + Thời gian trễ của bộ MemtoReg Mux + Thời gian để dữ liệu ổn định (setup) + Clock Skew  Chu kỳ xung nhịp sẽ dài hơn mức cần thiết cho các lệnh khác  Do đó bộ xử lý theo thiết kế đơn chu kỳ không dùng trong thực tế 2015 dce 56 Computer Architecture – Chapter 4.1 © Fall 2015, CSE 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)  First 2 steps are the same for all instructions Instruction # cycles Instruction # cycles ALU & Store 4 Branch 3 Load 5 Jump 2 2015 dce 57 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Ví dụ về hiệu suất  Cho thời gian trễ của các thành phần của datapath:  Truy xuất bộ nhớ lệnh và dữ liệu: 200 ps  ALU và các bộ cộng khác: 180 ps  Đọc giá trị của thanh ghi: 150 ps  Thời gian ổn định trước khi ghi giá trị vào thanh ghi: 100ps  Bỏ qua thời gian trễ PC, mux, extender và dây nối  Hiện thực nào nhanh hơn và bao nhiêu lần?  Hiện thực đơn chu kỳ  Hiện thực đa chu kỳ tối ưu cho từng lớp lệnh  Giả sử chương trình bao gồm:  40% ALU, 20% Loads, 10% stores, 20% branches, & 10% jumps 2015 dce 58 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Solution Instruction Class Instruction Memory Register Read ALU Operation Data Memory Register Write Total 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 =  Cho thiết kế đa chu kỳ:  Chu kỳ xung nhịp =  CPI trung bình =  Speedup = 0.4×4 + 0.2×5 + 0.1×4+ 0.2×3 + 0.1×2 = 3.8 max(200, 150, 180) = 200 ps (thõa mãn bước dài nhất) 830 ps thõa mãn lệnh dài nhất (lệnh load) 830 ps / (3.8 × 200 ps) = 830 / 760 = 1.1 2015 dce 59 Computer Architecture – Chapter 4.1 © Fall 2015, CSE Tổng kết  5 bước trong quá trình thiết kế bộ xử lý = datapath+control  Phân tích tập lệnh => tìm ra các thành phần cần thiết cho datapath  Hiện thực các thành phần của datapath & thiết lập cách cấp xung nhịp  Kết nối các thành phần của datapath để thõa mãn tập lệnh  Phân tích quá trình kết nối ở bước 4 để xác định các tín hiệu điều khiển cần thiết  Hiện thực bộ điều khiển  Bộ xử lý MIPS có thiết kế đơn giản  Các lệnh có cùng độ rộng 32 bit  Thanh ghi nguồn ở vị trí cố định  Hắng số imm16 ở vị trí cố định và cùng độ rộng 16 bit  Toán hạn của ALU là thanh ghi/hằng số  Bộ xử lý đơn chu kỳ => CPI=1, nhưng chu kỳ sẽ dài

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

  • pdfcomputer_architecture_chapter4_1_1571.pdf