运行GNU/Linux的最小RISC-V指令集是什么?

jgovgodb  于 2023-04-29  发布在  Linux
关注(0)|答案(3)|浏览(114)

我想为FPGA构建自己的最小RISC-V处理器。处理器将尽可能简单,只有一条流水线.
我读了整个RISC-V伊萨,有许多标准扩展。那么,可以运行Linux的最低RISC-V伊萨是多少?

eivgtgni

eivgtgni1#

截至2020年,合理的最低要求是RV 64 GC,用户/系统模式(“U”/“S”扩展)和基于页面的虚拟内存系统(Sv 32,Sv 39或Sv 48)。
请注意,RISC-V Base specification(2019-06-08批准)将G(* 通用 )符号扩展为:IMAFD+Zicsr+Zifencei
压缩指令扩展(“C”)也是base specification的一部分。“U”/“S”扩展和虚拟内存系统是RISC-V Privileged Architecture specification的一部分。
从技术上讲,RV 64 GC是运行Debian和Fedora等通用发行版的最低值,然而,使用定制Linux,你可以得到down to RV 64 IMA +Zi
,甚至RV 32 IMA +Zi*(带有一些补丁)。

flseospp

flseospp2#

RISC-V的IMA是Linux用户级扩展的最小集合,加上基于页面的特权架构。

wpcxdonn

wpcxdonn3#

对于普通Linux内核,rv 32 imasu + Zicsr + Zifencei,加上虚拟内存和中断控制器。在Supervisor模式下使用内核,您可以编写自己的固件以在Machine模式下运行,并实现Supervisor Binary Interface(SBI)来处理大多数其他杂项事务到硬件的转换。
我认为内核中可能有一些有限的无MMU支持,旨在运行在机器模式下,但我还没有尝试过。我没有真实的的硬件,没有MMU和足够的内存来运行Linux内核,我还没有在模拟器中尝试过。
给Linux内核打补丁使其在没有M扩展的情况下运行也并不难。内核中的手动程序集都不使用这些指令。我维护了一个添加了该功能的内核的forked版本:https://github.com/echelonxray/linux。在构建内核时,只需在Kconfig中取消选择“RISCV_伊萨_M”配置符号。我试图把这个补丁上传,但是内核维护者觉得它不够有用,不想维护它。如果你想检查我所做的更改,你可以对master和vanilla分支进行比较。
如果你不想使用打补丁的内核,你可以在SBI固件中捕获并模拟乘法扩展指令。只会更慢。
请记住,您需要构建一个针对rv 32 ia的交叉编译器和libc,并构建无需M即可运行的软件。同样,您可以捕获指令,但它会更慢。我在这里创建了一个no-M模拟器作为概念证明:https://www.michaelkloos.com/my_projects_blog/?p=182
因此,经过一点调整,它将在rv 32 iasu上运行,正如我的模拟器所证明的那样。

相关问题