扩展RocketChip寄存器

时间:2015-10-17 04:11:18

标签: riscv

是否可以扩展RocketChip中可用的寄存器组?如果是这样,我该怎么做呢? 我正在尝试添加一条新指令,该指令能够将数据从现有RISCV寄存器移动到扩展寄存器集。

1 个答案:

答案 0 :(得分:1)

有可能吗? Rocket-chip和相应的RISC-V工具链是免费的开源软件,所以是的,您当然可以根据自己内心的内容对其进行修改(当然,没有任何技术可以阻止您这样做)任一)。

然而,这将是一个涉及很多东西的巨大项目,所以你必须分解攻击每个部分。关于ISA,你必须从:

开始

1)学习如何向GNU汇编程序" gas"添加指令。

这将比平时更难,因为您正在尝试添加一组新的寄存器(而不是扩展现有的整数集或浮点集)。我可能首先看看矢量寄存器是如何作为一个开始处理的。

2)一旦你可以生成你想要的汇编代码,你就需要修改尖峰ISA模拟器来执行和测试你的程序。这非常简单 - 但是您必须暂时盯着代码库,并学习如何向其中添加新指令(请参阅riscv.org讨论如何向峰值添加自定义指令和加速器)。

3)一旦你可以在ISA模拟器上生成代码并进行测试,那么你就可以继续攻击Rocket-chip本身。火箭核心是一个相对简单的5阶段有序管道,因此您可以根据自己的创造力来设置如何添加新的寄存器组。查看浮点单元代码和浮点寄存器文件以获取灵感。

但我是一个gcc家伙,也许你的冒险在llvm会更容易吗?