RV指令流水线技术 图4-24 Instruction Register ALU Data Register Total ·分解指令执行步骤 Instruction class fetch read operation access write time Load doubleword (ld) 200ps 100ps 200ps 200ps 100ps 800ps 一流水线“级”/“段” Store doubleword(sd) 200ps 100ps 200ps 200ps 700ps R-format(add,sub, 200pS 100ps 200ps 100ps 600ps and,or) 一每个流水段所需的时间 Branch (beq) 200ps 100ps 200ps 500ps ·一个时钟周期(机器周期) Program 一流水线深度:段数 execution 200 400600 800 1000120014001600 1800 Time order ·深好浅好? (in instructions) dx1,100(x4) Instruction Data fetch Reg ALU access Reg ·Pipelining Idealism dX2,200x4 800ps nstruction Data fetch Reg ALU Reg access -各段均衡(latency) 1dX3.400x4) Instruction 800ps fetch ·执行时间长的流水段将成 800ps 为瓶颈,造成block/stall Program execution 200 400 600800 100012001400 Time 一重复相同的指令 order (in instructions) ·单功能流水线 dx1.100(x4) Instructior Reg ALU Data fetch access Reg Instruction ALU Data 一指令流无依赖 1dx2,200(x4) 200ps Reg fetch access Reg Instruction ALU Data dx3.400(x4) 200ps fetch Reg access 图4-25 200ps200ps200ps200ps200ps 7
7 RV指令流水线技术 • 分解指令执行步骤 – 流水线“级”/“段” – 每个流水段所需的时间 • 一个时钟周期(机器周期) – 流水线深度:段数 • 深好浅好? • Pipelining Idealism – 各段均衡(latency) • 执行时间长的流水段将成 为瓶颈,造成block/stall – 重复相同的指令 • 单功能流水线 – 指令流无依赖 图4-25 图4-24
面向流水线的1SA:4特点($4.5.1) Namo Fiolds (Bit position) 31:25 24:20 19:15 14:12 11:7 6:0 ·指令字等长 (a)R-type funct7 rs2 rs1 tunct3 rd opcode 一适于取指和译码 (b)Itype immediate[11:0] rs1 funct3 rd opcode (c)S-type immed[11:5] rs2 rs1 funct3 immed[4:0] opcode 指令格式简单规则 (d)SB-type immed[12.10:5]rs2 rs1 funct3 immed[4:1.11] opcode 源操作数位置固定,因此可以在译码的同时取操作数(读寄存器堆), 否则要增加一级流水线段。 只有load/store访存 - 意味着可以在执行阶段计算访存地址,然后在下一阶段访存。 如果R-type指令也可访存,则变为取指、译码、地址计算、访存、执 行、写回等几个阶段 ·每条指令最多只写一个结果,且在最后一级进行 -利于前推($4.5.2) 操作数在内存中“字对齐”一MIPS版,RV/ARM无? 一因此在取操作数时不需要访问存储器多次 寻址方式简单? llxx@ustc.edu.cn 8
llxx@ustc.edu.cn 8 面向流水线的ISA:4特点($4.5.1) • 指令字等长 – 适于取指和译码 • 指令格式简单规则 – 源操作数位置固定,因此可以在译码的同时取操作数(读寄存器堆), 否则要增加一级流水线段。 • 只有load/store访存 – 意味着可以在执行阶段计算访存地址,然后在下一阶段访存。 – 如果R-type指令也可访存,则变为取指、译码、地址计算、访存、执 行、写回等几个阶段 • 每条指令最多只写一个结果,且在最后一级进行 – 利于前推($4.5.2) • 操作数在内存中“字对齐”——MIPS版,RV/ARM无? – 因此在取操作数时不需要访问存储器多次 • 寻址方式简单?
RISC-V指令格式与寻址方式 图2-19 Name Field Comments (Field size】 7 bits 5 bits 5 bits 3 bits 5 bits 7 bits R-type funct7 rs2 rs1 funct3 rd opcode Arithmetic instruction format I-type immediate[11:0] rs1 funct3 rd opcode Loads immediate arithmetic S-type immed[11:5] rs2 rs1 funct3 immed[4:0] opcode Stores SB-type immed12,10:5] rs2 rs1 funct3 immed[4:1,11] opcode Conditional branch format UJ-type immediate[20,10:1,11,19:12] rd opcode Unconditional jump format U-type immediate[31:12] rd opcode Upper immediate format 1.Immediate addressing funct6 immed rs1 funct3 rd opcode 指令格式:6种 immediate rs1 funct3rd op - 基本:RI/S/U ·7种:4+2+“1” 2.Register addressing 图2-17 ·lS-type:functe6,立即数移位 funct7 rs2 rs1 funct3 rd op Registers 规整:Reg和lmm位置固定 Register ·BJ-type的立即数域? op码与类型绑定 3.Base addressing - immediate rs1 funct3rd op Memory 寻址方式:4种 Register Byte Halfword Word Doubleword - 本质:lmm,Reg,Base 指令寻址方式 4.PC-relative addressing imm rs2 rs1 funct3imm op ·PC相对寻址:beq,jal Memory ·间接跳转:jalr x0,100(x1) PC Word
RISC-V指令格式与寻址方式 • 指令格式:6种 – 基本:R/I/S/U • 7种:4+2+“1” • IS-type:funct6,立即数移位 – 规整:Reg和Imm位置固定 • B/J-type的立即数域? – op码与类型绑定 • 寻址方式:4种 – 本质:Imm,Reg,Base – 指令寻址方式 • PC相对寻址:beq,jal • 间接跳转:jalr x0,100(x1) 图2-17 图2-19
Instruction number 2 3 4 5 6 Instruction i F ID EX MEM WB 流水线数据通路? Instruction i+1 F D EX MEM WB Instruction i+2 F ID EX MEM Instruction i+3 公 ID EX Instruction i+4 F D Da妇 Instruction Register# register PC Address Data Address Registers Address Instruction Register Data ALU ALUOut- memory memory Memory or data Registers Register Memory Data d33 Register register Data Register PC Address Instruction Instruction Registers ALUOut Address register Instruction Register Memory memory Data data Register# memory register Data 暂存,复用?
流水线数据通路? • 暂存,复用?
指令数据通路划分 IF:Instruction fetch ID:Instruction decode/ EX:Execute/ MEM:Memory access WB:Write back register file read address calculation Add ADD Sum Sh准 left 1 0 Read M Read PC Address register 1 d归ta1 Zero Read ALU register 2 ALU Ad划ess Instructon re sult Read Registers Write Read M data Data M Instruction register data 2 memory u memory Write data Write data 32 64 imm Gen 图4-31
11 指令数据通路划分 图4-31