五步法第一步 ·时钟周期确定:工作量均衡 一假设一个时钟周期内可以完成 ·一次寄存器读写(2 reads or one write),or ·一次ALU操作,or ·一次MEM访问(IF,W,SW) 1.Instruction 2.Decode/ 3.Execute 4.Memory 5.Reg. Fetch Register Write Read
五步法第一步 • 时钟周期确定:工作量均衡 – 假设一个时钟周期内可以完成 • 一次寄存器读写(2 reads or one write),or • 一次ALU操作,or • 一次MEM访问(IF,lw,sw)
指令执行的阶段划分 1.Instruction 2.Decode/ 3.Execute 4.Memory 5.Reg. Fetch Register Write ·共5个阶段 Read -取指:取指,PC+1 -i 译码:译码阶段、计算beq目标地址 -执行:R-type指令执行、访存地址计算,分支完成阶段 -访存:w读,store和R-type指令完成阶段 -写回:w完成阶段 注意 -指令周期不定长:分别为3、4、5个时钟周期 一时钟周期定长: ·时钟周期标识(状态):控制器据此发出所需控制信号 clk gating llxx@ustc.edu.cn 7
llxx@ustc.edu.cn 7 指令执行的阶段划分 • 共5个阶段 – 取指:取指,PC+1 – 译码:译码阶段、计算beq目标地址 – 执行:R-type指令执行、访存地址计算,分支完成阶段 – 访存:lw读,store和R-type指令完成阶段 – 写回:lw完成阶段 • 注意 – 指令周期不定长:分别为3、4、5个时钟周期 – 时钟周期定长: • 时钟周期标识(状态):控制器据此发出所需控制信号 – clk gating
funct7 rs2 rs1 funct3 rd opcode R-type 多周期数据通路 immediate[11:0] rs1 funct3 rd opcode Itype mmed[11:5] rs2 rs1 funct3 immed[4:0] opcode S-type immed12,10:5] rs2 rs1 funct3 immed[4:1,11] opcode B-type 取指 lw/sw PC+4 PC 0 M Instruction Read 0 U Address [19-15] register 1 M X Read u 1 Instruction data 1 Memory Read [24-20] 1 Zero register 2 MemData Instruction Registers ALU ALU ALUOut [11-7刀 Writ Read result Write register data 2 B 0 data Instruction 1 M register Write u 0 data Instruction M [31-0] X 1 Memory Imm data Gen register beq SW I-type/lw/sw FIGURE e4.5.2 llxx@ustc.edu.cn 8
llxx@ustc.edu.cn 8 多周期数据通路 取指 lw/sw PC+4 I-type/lw/sw beq sw FIGURE e4.5.2
funct7 rs2 rs1 funct3 rd opcode R-type 多周期控制信号 immediate[11:0] rs1 funct3 rd opcode I-type immed(11:5] rs2 rs1 funct3 immed[4:0] opcode S-type immed12,10:5] rs2 rs1 funct3 immed[4:1,11] opcode B-type lorD MemRead MemWrite IRWrite RegWrite ALUSrcA PC 0 Instruction Read 0 M Address [19-15] register 1 M X Read A Instruction Memory Read data 1 [24-20] Zero register 2 MemData Instruction Registers ALU ALU ALUOut [11-7刀 Write result Write register Read data 2 B M data Instruction u register o Write data Instruction M [31-0] 1 Memory Imm data Gen ALU register control Instruction [6-0] FIGURE e4.5.3 MemtoReg ALUSrcB ALUOp llxx@ustc.edu.cn 9
llxx@ustc.edu.cn 9 多周期控制信号 FIGURE e4.5.3
第一阶段:取指 根据PC从MEM中取指,IR=MEM[PC] 计算NPC,PC=PC+4 控制信号:lorD,MemRead,IRWrite;ALUSrcA,ALUSrcB ALUOp,PCWrite orD MemRead MemWrite IRWrite RegWrite ALUSrcA PC 0 Instruction Read Address [19-15 register 1 Read Instruction Read data 1 Memory [24-20] 1 Zero register 2 MemData Instruction Registers ALU ALU ALUOut [11-7刀 Write result Read Write register data 2 M data Instruction register Write data 2 Instruction [31-0 PC“后写”! Memory Imm data Gen ALU register control Instruction [6-0] MemtoReg ALUSrcB ALUOp
10 第一阶段:取指 • 根据PC从MEM中取指,IR=MEM[PC] • 计算NPC,PC=PC+4 • 控制信号:IorD, MemRead, IRWrite;ALUSrcA, ALUSrcB, ALUOp, PCWrite PC“后写”!