1 / 26

EEM 486 : Computer Architecture Designing Single Cycle Control

EEM 486 : Computer Architecture Designing Single Cycle Control. Processor. Input. Control. Memory. Datapath. Output. The Big Picture: Where are We Now?. ALU. PC. Clk. An Abstract View of the Implementation. Control. Ideal Instruction Memory. Control Signals. Conditions.

jeri
Télécharger la présentation

EEM 486 : Computer Architecture Designing Single Cycle Control

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EEM 486: Computer ArchitectureDesigning Single Cycle Control

  2. Processor Input Control Memory Datapath Output The Big Picture: Where are We Now?

  3. ALU PC Clk An Abstract View of the Implementation Control Ideal Instruction Memory Control Signals Conditions Instruction Rd Rs Rt 5 5 5 Instruction Address A Data Address Data Out 32 Rw Ra Rb 32 Ideal Data Memory 32 32 32-bit Registers Next Address Data In B Clk Clk 32 Datapath

  4. Instruction<31:0> nPC_sel Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk RegDst 1 0 Mux Rt Rs Rd Imm16 Rs Rt RegWr ALUctr Zero 5 5 5 MemWr MemtoReg busA Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 Data In 32 Data Memory Extender imm16 32 16 Clk ALUSrc ExtOp Recap: A Single Cycle Datapath • We have everything except control signals (underline)

  5. nPC_MUX_sel Inst Memory Adr 4 00 PC Adder Mux Clk imm16 PC Ext Adder Recap: Meaning of the Control Signals • nPC_MUX_sel: 0PC PC + 4 1PC PC + 4 + SignExt(Im16) || 00

  6. Equal MemWr Rt ALUctr MemtoReg Rd RegDst 0 1 Rs Rt RegWr 5 5 5 busA = Rw Ra Rb busW 32 32 32-bit Registers ALU 0 32 busB 32 0 32 Mux Mux Clk 32 WrEn Adr 1 Data In 1 Data Memory Extender imm16 32 16 Clk ALUSrc ExtOp Recap: Meaning of the Control Signals • MemWr: 1  write memory • MemtoReg: 0  ALU; 1  Mem • RegDst: 0  “rt”; 1  “rd” • RegWr: 1  write register • ExtOp: “zero”, “sign” • ALUsrc: 0 regB; 1 immed • ALUctr: “add”, “sub”, “or”

  7. 31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits RTL: The Add Instruction • add rd, rs, rt • mem[PC] Fetch the instruction from memory • R[rd] R[rs] + R[rt] The actual operation • PC PC + 4 Calculate the next instruction’s address

  8. Inst Memory Instruction<31:0> Adr nPC_MUX_sel 4 Adder 00 0 Mux PC 1 Adder Clk imm16 Instruction Fetch Unit at the Beginning of Add • Fetch the instruction from Instruction memory: Instruction mem[PC] • Sameforallinstructions

  9. Instruction<31:0> nPC_sel= +4 Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk RegDst= 1 1 0 Mux Rt Rs Rd Imm16 Rs Rt ALUctr = Add RegWr = 1 5 5 5 MemtoReg = 0 busA Zero MemWr=0 Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 Data In 32 Data Memory Extender imm16 32 16 Clk ALUSrc=0 ExtOp = x The Single Cycle Datapath During Add • R[rd] R[rs] + R[rt]

  10. Inst Memory Instruction<31:0> Adr nPC_MUX_sel 4 Adder 0 00 Mux PC 1 Adder Clk imm16 Instruction Fetch Unit at the End of Add • PC PC + 4 • This is the same for all instructions except: Branch and Jump

  11. Instruction<31:0> nPC_sel = Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk 1 0 Mux Rt Rs Rd Imm16 Rs Rt ALUctr = RegWr = 5 5 5 MemtoReg = busA Zero MemWr = Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 Data In 32 Data Memory Extender imm16 32 16 Clk ALUSrc = ExtOp = The Single Cycle Datapath During Or Immediate • R[rt] R[rs] or ZeroExt[Imm16] RegDst =

  12. Instruction<31:0> nPC_sel= +4 Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk RegDst = 0 1 0 Mux Rt Rs Rd Imm16 Rs Rt ALUctr = Or RegWr = 1 5 5 5 MemtoReg = 0 busA Zero MemWr = 0 Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 Data In 32 Data Memory Extender imm16 32 16 Clk ALUSrc = 1 ExtOp = 0 The Single Cycle Datapath During Or Immediate

  13. Instruction<31:0> nPC_sel= +4 Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk RegDst = 0 1 0 Mux ALUctr=Add Rt Rs Rd Imm16 Rs Rt RegWr = 1 MemtoReg = 1 5 5 5 busA Zero MemWr = 0 Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 1 WrEn Adr 1 Data In 32 Data Memory 32 Extender imm16 32 16 Clk ALUSrc = 1 ExtOp = 1 The Single Cycle Datapath During Load • R[rt] Data Memory [ R[rs] + SignExt[imm16] ]

  14. Instruction<31:0> nPC_sel = Instruction Fetch Unit Rd Rt <0:15> <21:25> <16:20> <11:15> Clk RegDst= 1 0 Mux Rt Rs Rd Imm16 Rs Rt ALUctr = RegWr = 5 5 5 MemtoReg = busA Zero MemWr = Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 Data In 32 Data Memory Extender imm16 32 16 Clk ALUSrc = ExtOp = The Single Cycle Datapath During Store • Data Memory [ R[rs] + SignExt[imm16] ]R[rt]

  15. Instruction<31:0> nPC_sel= +4 Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk RegDst = x 1 0 Mux Rt Rs Rd Imm16 ALUctr= Add Rs Rt RegWr = 0 5 5 5 MemtoReg = x busA Zero MemWr = 1 Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 32 Data In Data Memory Extender imm16 32 16 Clk ALUSrc = 1 ExtOp = 1 The Single Cycle Datapath During Store

  16. Instruction<31:0> nPC_sel= “Br” Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk RegDst = x 1 0 Mux Rt Rs Rd Imm16 Rs Rt ALUctr=Sub RegWr = 0 5 5 5 MemtoReg = x busA Zero MemWr = 0 Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 Data In 32 Data Memory Extender imm16 32 16 Clk ALUSrc = 0 ExtOp = x The Single Cycle Datapath During Branch • if (R[rs] - R[rt] == 0) then Zero 1 ; else Zero 0

  17. Instruction<31:0> Inst Memory nPC_sel Zero Adr nPC_MUX_sel 4 0 00 Adder PC 1 Mux Clk imm16 Adder Instruction Fetch Unit at the End of Branch • What is encoding of nPC_sel? • Direct MUX select? • Branch / not branch

  18. Step 4: Given Datapath: RTL  Control Instruction<31:0> Inst Memory <11:15> <21:25> <0:15> <21:25> <16:20> Adr Op Fun Rt Rs Rd Imm16 Control ALUctr nPC_sel RegWr RegDst ExtOp ALUSrc MemWr MemtoReg Zero DATA PATH

  19. Summary of Control Signals inst Register Transfer ADD R[rd] <– R[rs] + R[rt]; PC <– PC + 4 ALUsrc= RegB, ALUctr = “add”, RegDst = rd, RegWr, nPC_sel = “+4” SUB R[rd] <– R[rs] – R[rt]; PC <– PC + 4 ALUsrc= RegB, ALUctr = “sub”, RegDst = rd, RegWr, nPC_sel = “+4” ORi R[rt] <– R[rs] + zero_ext(Imm16); PC <– PC + 4 ALUsrc= Im, Extop = “Z”, ALUctr = “or”, RegDst = rt, RegWr, nPC_sel = “+4” LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)]; PC <– PC + 4 ALUsrc= Im, Extop = “Sn”, ALUctr = “add”, MemtoReg, RegDst= rt, RegWr,nPC_sel = “+4” STORE MEM[ R[rs] + sign_ext(Imm16)] <– R[rt]; PC <– PC + 4 ALUsrc= Im, Extop = “Sn”, ALUctr = “add”, MemWr, nPC_sel = “+4” BEQ if (R[rs] == R[rt]) then PC <– [PC + sign_ext(Imm16)] || 00 else PC <– PC + 4 nPC_sel= “Br”, ALUctr = “sub”

  20. Logic For Each Control Signal • nPC_sel<= if (OP == BEQ) then “Br” else “+4” • ALUsrc<=if (OP == “Rtype”) then “regB” else “immed” • ALUctr<= if (OP == “Rtype”) then functelseif(OP == ORi) then “OR” elseif(OP == BEQ) then “sub” else “add” • ExtOp<= _____________ • MemWr<= _____________ • MemtoReg <= _____________ • RegWr: <=_____________ • RegDst: <= _____________

  21. Logic for Each Control Signal • nPC_sel <= if (OP == BEQ) then “Br” else “+4” • ALUsrc <= if (OP == “Rtype”) then “regB” else “immed” • ALUctr <= if (OP == “Rtype”) then functelseif (OP == ORi) then “OR” elseif (OP == BEQ) then “sub” else “add” • ExtOp <= if (OP == ORi) then “zero” else “sign” • MemWr <= (OP == Store) • MemtoReg<= (OP == Load) • RegWr: <= if ((OP == Store) || (OP == BEQ)) then 0 else 1 • RegDst: <= if ((OP == Load) || (OP == ORi)) then 0 else 1

  22. ALUop ALU Control ALUctr 3 RegDst func Instr<31:26> 3 Main Control Instr<5:0> op 6 ALUSrc 6 : Instruction<31:0> nPC_sel Instruction Fetch Unit <11:15> <0:15> <21:25> <16:20> Rd Rt Clk RegDst 1 0 Mux Rt Rs Rd Imm16 Rs Rt RegWr ALUctr 5 5 5 MemtoReg busA Zero MemWr Rw Ra Rb busW 32 32 32-bit Registers 0 ALU 32 busB 32 0 Clk Mux 32 Mux 32 1 WrEn Adr 1 Data In 32 Data Memory Extender imm16 32 16 Instr<15:0> Clk ALUSrc ExtOp Putting it All Together: A Single Cycle Processor

  23. Ideal Instruction Memory Instruction Rd Rs Rt Imm 5 5 5 16 Instruction Address A Data Address 32 Rw Ra Rb 32 Ideal Data Memory 32 32 32-bit Registers ALU PC Data In Next Address B Clk Clk 32 Clk Recap: An Abstract View of the Critical Path (Load) Critical Path (Load Operation) = PC’s Clk-to-Q + Instruction Memory’s Access Time + Register File’s Access Time + ALU to Perform a 32-bit Add + Data Memory Access Time + Setup Time for Register File Write + Clock Skew

  24. Worst Case Timing (Load) Clk Clk-to-Q Old Value New Value PC Instruction Memory Access Time Rs, Rt, Rd, Op, Func Old Value New Value Delay through Control Logic ALUctr Old Value New Value ExtOp Old Value New Value ALUSrc Old Value New Value MemtoReg Old Value New Value Register Write Occurs RegWr Old Value New Value Register File Access Time busA Old Value New Value Delay through Extender & Mux busB Old Value New Value ALU Delay Address Old Value New Value Data Memory Access Time busW Old Value New

  25. Drawback of this Single Cycle Processor • Long cycle time: • Cycle time must be long enough for the load instruction: PC’s Clock -to-Q + Instruction Memory Access Time + Register File Access Time + ALU Delay (address calculation) + Data Memory Access Time + Register File Setup Time + Clock Skew • Cycle time for load is much longer than needed for all other instructions

  26. Processor Input Control Memory Datapath Output Summary • Single cycle datapath => CPI=1, CCT => long • 5 steps to design a processor • Analyze instruction set => datapathrequirements • Select set of datapath components & establish clock methodology • Assembledatapath meeting the requirements • Analyze implementation of each instruction to determine setting • of control points that effects the register transfer. • Assemble the control logic • Control is the hard part • MIPS makes control easier • Instructions same size • Source registers always in same place • Immediates same size, location • Operations always on registers/immediates

More Related