1、R V S C 2 0 24“计算机组成与设计”课程实践基于RVfpga的量化研究1浙江大学 刘鹏R V S C 2 0 24课程框架2基础支撑RVfpga课程课题组科研知识范围RISC-V指令设计指令实现与验证存储系统实验设计加速指令设计指令实现与验证存储与编译优化科研教学融合理论实验融合量化计算思维教学理念R V S C 2 0 24目录指令设计指令生成量化衡量教学实践3R V S C 2 0 24目录指令设计指令生成量化衡量教学实践4R V S C 2 0 24指令集设计方法5 一个包含所有可行解的空间 一个用于评估一组解的目标函数指令集设计视为一个优化问题将应用程序转换为微操作的集合,
2、通过数据通路资源、数据依赖关系、指令空间等约束限制集合空间根据流水线控制模型将各个操作组合得到扩展指令设置目标函数通过优化搜索得到符合优化目标的操作图Holmer B K,Despain A M.Viewing Instruction Set Design as an Optimization Problem.MICRO,1991.MIPS“1%原则”任何由于提高性能原因添加的指令都必须在一系列应用程序上提供可验证的1%性能增益100/0C CI+100lnCI+最小化应用程序执行热点扩展指令性能分析共性提取操作流图编译优化后的操作流图数据通路模型目标函数优化组合流水线控制模型R V S C
3、2 0 24加速指令优化识别框架6 预处理阶段 使用LLVM生成中间表示 通过插桩记录程序运行数据 根据禁止操作集合拆分基本块 剪枝搜索阶段 拓扑排序二叉树搜索 根据单调性进行约束剪枝 通过软硬件执行时间计算目标函数 选择阶段 根据性能分析数据计算加速比LLVM前端应用程序源代码基本操作执行时间LLVM处理程序分支定界搜索算法输入约束输出约束凸约束权重剪枝微结构约束信息关键路径算法计算加速比基本块对应中间表示性能分析数据数据流子图最优子图集合指令候选 预处理阶段 剪枝搜索阶段 选择阶段R V S C 2 0 24流水线扩展接口7 自定义指令功能单元输入寄存器指令编码CPU流水线流水线扩展接口自
4、定义指令设计GPR执行ALULSU 译码RdRDWrRDRdRS1/2RdControlRdInst 通过自动化方法得到自定义指令集后,为了方便将不同自定义指令集成到RISC-V内核,定义流水线扩展接口规范 在不改变原有流水线的情况下,接口为指令功能单元提供数据与控制信号R V S C 2 0 24增加输入操作数8 为了让指令实现更复杂的功能,在接口中增加输入寄存器以增加指令的输入操作数 考虑输入寄存器的加载方式由于32位指令编码空间限制以及数据通路限制,每次最多从两个源寄存器中加载数据至输入寄存器设计一种加载方法,通过适当的指令排布将部分指令的执行结果同步保存到输入寄存器中addsubmul
5、in0in1in2in3selectoutVal t0=mul i0,i1o1=add t0,i2o2=sub t0,i3out=sel?o1:o2 x10=add x4,x5#input i0 x11=add x4,x6#input i1x12=slli x7,2#input i2x13=sub x8,x9#input i3addsubmulrs1rs2IRF1IRF2SET_IRF 0,0,1,2x10=add x4,x5#input rs1x11=add x4,x6#input rs2x12=slli x7,2#input irf1x13=sub x8,x9#input irf2x15=
6、EX_MX x10,x11,seladdsubmulIRF1IRF2IRF3IRF4SET_IRF 1,2,3,4x10=add x4,x5#input irf1x11=add x4,x6#input irf2x12=slli x7,2#input irf3x13=sub x8,x9#input irf4x15=EX_MX sel(a)(b)R V S C 2 0 24指令实现9lshrshlorxor4xor3select1select2and1andselectxor1xor2select4select6select8select3select5select7addin0in1in4in5