是否可以扩展 RocketChip 中可用的寄存器集?如果是这样,我该怎么做?我正在尝试添加一条新指令,该指令能够将数据从现有的 RISCV 寄存器移动到一组扩展的寄存器中。
问问题
301 次
1 回答
2
可能吗?Rocket-chip 和相应的 RISC-V 工具链是免费和开源的,所以是的,您当然可以根据自己的喜好对其进行修改(当然也没有任何技术可以阻止您这样做)。
但是,这将是一个涉及很多东西的巨大项目,因此您必须逐个攻击各个部分。关于 ISA,您必须从以下内容开始:
1) 学习如何向 GNU 汇编器“gas”添加指令。
这将比正常情况更难,因为您正在尝试添加一组全新的寄存器(而不是扩展现有的整数集或浮点集)。我可能会先看看向量寄存器是如何被处理的。
2) 一旦你可以生成你想要的汇编代码,你需要修改尖峰 ISA 模拟器来执行和测试你的程序。这很简单——但你必须盯着代码库看一会儿,并学习如何向其中添加新指令(请参阅 riscv.org 讨论如何添加自定义指令和加速器以实现峰值)。
3) 一旦你可以生成代码并在 ISA 模拟器上对其进行测试,那么你就可以继续破解 Rocket-chip 本身。火箭核心是一个相对简单的 5 级有序流水线,因此您可以自行决定如何向其中添加新的寄存器集。查看浮点单元代码和浮点寄存器文件以获得灵感。
但我是一个 gcc 人,也许你的冒险会更容易在 llvm 中进行?
于 2015-10-18T08:11:44.180 回答