欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Rocket之加速器

发布时间:2024/3/12 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Rocket之加速器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • RoCC简介
  • riscv-tools
    • pk
  • 加速器
  • fpga-zynq
  • 测试
      • 测试样例
      • 测试结果
  • 参考文献

RoCC简介

Rocket Custom Coprocessor

riscv-tools

  • 由于custom指令并不是标准指令集的一部分,所以最新的risc-tools(汇编器)不支持直接写custom0指令。
  • riscv-tools还是为custom指令预留了opcode。
  • 可以参考这里。直接将custom指令转换成二进制。核心代码如下:
#define XCUSTOM(x, rd, rs1, rs2, funct) \XCUSTOM_OPCODE(x) | \(rd << (7)) | \(0x3 << (7+5)) | \((rd != 0) & 1 << (7+5+2)) | \(rs1 << (7+5+3)) | \(rs2 << (7+5+3+5)) | \(EXTRACT(funct, 7, 0) << (7+5+3+5+5))#define ROCC_INSTRUCTION_RAW_R_R_R(x, rd, rs1, rs2, funct) \.word XCUSTOM(x, ## rd, ## rs1, ## rs2, funct) // .word 可以理解为在当前地址位置放置一条指令,汇编器不对其进行处理

pk

在Rocket处理器有一个寄存器mstatus,有一个XS,只有为非0时,才会执行自定义指令。
可以通过修改pk解决这个问题,参考这里。
核心修改代码如下:

// fpga-zynq/rocket-chip/riscv-tools/riscv-pk/machine/minit.c : mstatus_init() if (supports_extension('X'))set_csr(mstatus, (MSTATUS_XS & (MSTATUS_XS >> 1)));

具体操作如下:

cd fpga-zynq/rocket-chip/riscv-tools/riscv-pk git apply rocket-rocc-examples/patches/riscv-pk.patch mkdir build cd build ../configure --prefix=$RISCV/riscv64-unknown-elf --host=riscv64-unknown-elf make make install scp pk root@192.168.1.5:/home/root

加速器

fpga-zynq

修改位置:fpga-zynq/common/src/main/scala/Configs.scala

class RoccExampleConfig extends Config(new WithBootROM ++ new freechips.rocketchip.system.RoccExampleConfig) class RoccZynqConfig extends Config(new WithZynqAdapter ++ new RoccExampleConfig) class RoccZynqFPGAConfig extends Config(new WithoutTLMonitors ++ new RoccZynqConfig)

执行命令

cd zedboard make rocket CONFIG=RoccZynqFPGAConfig make project CONFIG=RoccZynqFPGAConfig // 之后用vivado生成bit流

测试

测试样例

https://github.com/seldridge/rocket-rocc-examples/blob/master/pk/accumulator.c

测试结果

参考文献

  • http://www.doc88.com/p-2783563467689.html
  • http://www-inst.eecs.berkeley.edu/~cs250/fa13/handouts/lab3-sumaccel.pdf
  • https://github.com/riscv/riscv-gnu-toolchain/issues/190
  • https://github.com/seldridge/rocket-rocc-examples

总结

以上是生活随笔为你收集整理的Rocket之加速器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。