2015-10-17 82 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