processor design single cycle processor
play

Processor Design Single Cycle Processor Hung-Wei Tseng Recap: the - PowerPoint PPT Presentation

Processor Design Single Cycle Processor Hung-Wei Tseng Recap: the stored-program computer Store instructions in Processor memory The program counter PC instruction memory (PC) controls the 120007a30: 0f00bb27 ldah gp,15(t12)


  1. Processor Design - Single Cycle Processor Hung-Wei Tseng

  2. Recap: the stored-program computer • Store instructions in Processor memory • The program counter PC instruction memory (PC) controls the 120007a30: 0f00bb27 ldah gp,15(t12) 120007a34: 509cbd23 lda gp,-25520(gp) execution 120007a38: 00005d24 ldah t1,0(gp) 120007a3c: 0000bd24 ldah t4,0(gp) 120007a40: 2ca422a0 ldl t0,-23508(t1) 120007a44: 130020e4 beq t0,120007a94 120007a48: 00003d24 ldah t0,0(gp) 120007a4c: 2ca4e2b3 stl zero,-23508(t1) 800bf9000: 00c2e800 12773376 data memory 800bf9004: 00000008 8 800bf9008: 00c2f000 12775424 800bf900c: 00000008 8 800bf9010: 00c2f800 12777472 800bf9014: 00000008 8 800bf9018: 00c30000 12779520 800bf901c: 00000008 8 2

  3. Recap: MIPS ISA • R-type: add, sub, and etc... 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits shift opcode rs rt rd funct amount • I-type: addi, lw, sw, beq, and etc... 6 bits 5 bits 5 bits 16 bits opcode rs rt immediate / offset • J-type: j, jal, and etc... 6 bits 26 bits opcode target 3

  4. Outline • Implementing a MIPS processor • Single-cycle processor • Pipelined processor 4

  5. Designing a simple MIPS processor • Support MIPS ISA in hardware • Design the datapath: add and connect all the required elements in the right order • Design the control path: control each datapath element to function correctly. • Starts from designing a single cycle processor • Each instruction takes exactly one cycle to execute 5

  6. Basic steps of execution registers ALU • Instruction fetch: fetch an R0 R1 Processor R2 instruction from memory ........ • Decode: PC R31 • instruction memory What’s the instruction? 120007a30: 0f00bb27 ldah gp,15(t12) 120007a34: 509cbd23 lda gp,-25520(gp) • Where are the operands? 120007a38: 00005d24 ldah t1,0(gp) • Execute 120007a3c: 0000bd24 ldah t4,0(gp) 120007a40: 2ca422a0 ldl t0,-23508(t1) 120007a44: 130020e4 beq t0,120007a94 • Memory access 120007a48: 00003d24 ldah t0,0(gp) 120007a4c: 2ca4e2b3 stl zero,-23508(t1) • Where is my data? (The data 800bf9000: 00c2e800 12773376 memory address) data memory 800bf9004: 00000008 8 800bf9008: 00c2f000 12775424 • Write back 800bf900c: 00000008 8 800bf9010: 00c2f800 12777472 • Where to put the result 800bf9014: 00000008 8 800bf9018: 00c30000 12779520 • Determine the next PC 800bf901c: 00000008 8 6

  7. Recap: MIPS ISA • R-type: add, sub, and etc... 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits shift opcode rs rt rd funct amount • I-type: addi, lw, sw, beq, and etc... 6 bits 5 bits 5 bits 16 bits opcode rs rt immediate / offset • J-type: j, jal, and etc... 6 bits 26 bits opcode target 7

  8. Implementing an R-type instruction 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits opcode rs rt rd shift amt funct instruction = MEM[PC] REG[rd] = REG[rs] op REG[rt] PC = PC + 4 Tell the ALU what ALU control ALU function to perform ALUop Add 4 inst[25:21] Read+Reg+1 Instruc(on Read Register Memory inst[20:16] +Data+1 Read+Reg+2 inst[31:0] Read File PC Address ALU Write+Reg Read inst[15:11] +Data+2 Write+Data Clock ALUop Tell the Processor when to start an instruction 10

  9. Implementing a load instruction 6 bits 5 bits 5 bits 16 bits opcode rs rt immediate / offset instruction = MEM[PC] REG[rt] = MEM[signext(immediate) + REG[rs]] Set different control PC = PC + 4 signals for different types of instructions inst[31:26] Set to 1 if it’s a load control Set to 1 if it’s a load Add 4 inst[25:21] Read+Reg+1 Data Instruc(on Read Register Memory Memory inst[20:16] +Data+1 MemtoReg Read+Reg+2 inst[31:0] Read ALUSrc File Read 0 m PC Address Address u ALU Write+Reg 1 x Data 1 Read inst[15:11] 0 +Data+2 m RegDst Write+Data m u u x x ALUop sign- 0 1 MemRead 16 32 extend Set to 0 if it’s a load 13

  10. Implementing a store instruction 6 bits 5 bits 5 bits 16 bits opcode rs rt immediate / offset instruction = MEM[PC] MEM[signext(immediate) + REG[rs]] = REG[rt] PC = PC + 4 Set to 1 if it’s a Set to 0 if store it’s a store inst[31:26] control Add 4 RegWrite MemWrite inst[25:21] Read+Reg+1 Data Instruc(on Read Register Memory Memory inst[20:16] +Data+1 MemtoReg Read+Reg+2 inst[31:0] Read ALUSrc File Read 0 m PC Address Address u ALU Write+Reg 1 x Data 1 Read inst[15:11] 0 +Data+2 m RegDst Write+Data m u Write+Data u x x ALUop sign- 0 1 MemRead 16 32 extend Set to 0 if it’s a store 16

  11. Implementing a branch instruction 6 bits 5 bits 5 bits 16 bits opcode rs rt immediate / offset instruction = MEM[PC] PC = (REG[rs] == REG[rt]) ? PC + 4 + SignExtImmediate *4 : PC + 4 PCSrc PCSrc = Branch & Zero 1 Calculate the m u x target address inst[31:26] 0 control Add Add 4 RegWrite MemWrite Shi> le>?2 inst[25:21] Read+Reg+1 Data Instruc(on Read Register Memory Memory inst[20:16] +Data+1 MemtoReg Read+Reg+2 Zero inst[31:0] Read ALUSrc File Read 0 m PC Address Address u ALU Write+Reg 1 x Data 1 Read inst[15:11] 0 +Data+2 m RegDst Write+Data m u Write+Data u x x ALUop sign- 0 1 MemRead 16 32 extend 18

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend