2015-10-17 76 views
0

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

回答

1

可能吗?火箭芯片和相应的RISC-V工具链是免费和开放源代码的,所以是的,你当然可以修改它以适应你的内容(当然也没有什么技术可以阻止你这么做)。

但是,这将是一个涉及很多东西的巨大项目,因此您必须分段攻击每个部分。关于ISA,你必须从以下开始:

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

由于您试图添加一组全新的寄存器(而不是扩展现有的整数集或浮点集),因此这将比平常更加困难。我可能会先看看向量寄存器是如何处理的。

2)一旦你可以生成你想要的汇编代码,你需要修改尖峰ISA模拟器来执行和测试你的程序。这很简单 - 但是你必须盯着代码库一段时间,并学习如何向它添加新的指令(参见riscv.org关于如何添加自定义指令和加速器到秒杀)。 3)一旦你可以生成代码并在ISA模拟器上进行测试,那么你就可以继续攻击Rocket-chip本身。火箭核心是一个相对直接的5阶段,有序的管道,所以你可以自己创造如何添加一个新的寄存器组。查看浮点单元代码和浮点寄存器文件以获取灵感。

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

+0

Hello Chris,谢谢你的回答。我对使用火箭核心相当陌生。另一个疑问是,如何添加一组与现有的整数集不同的新的寄存器,如您所述。 – umaurmi