指令集是处理器体系结构设计的重点部分之一,作为软件和硬件的接口,它紧密地连接着软件和硬件。目前市面上比较成功的指令集采用增量式的设计方法,目的是保持向后的二进制兼容性。在新增指令的同时,开发人员还必须保留遗留下来的、几乎不怎么使用甚至是设计错误的指令,这导致指令集越来越庞大和复杂。RISC-V在指令集设计过程中吸取了这些经验和教训,采用模块化的设计方法。所谓的模块化设计,就是设计一个最小的和最基础的指令集,这个最小的指令集可以完整地实现一个软件栈,其他特殊功能的指令集可以在最小指令集的基础上通过模块化的方式叠加实现,用于支持浮点数运算指令、乘法和除法指令、矢量指令等。1.1节已经介绍了RISC-V支持的扩展指令集。
【例3-1】 在QEMU+RISC-V平台上通过cpuinfo命令查看节点的信息。
root:~# cat /proc/cpuinfo
processor : 0
hart : 0
isa : rv64imafdcsu
mmu : sv48
从isa处可知该系统支持的扩展为rv64imafdcsu,即支持64位的基础整型指令集I、整型乘法和除法扩展指令集M、原子操作指令集A、单精度浮点数扩展指令集F、双精度浮点数扩展指令集D、压缩指令集C、特权模式S以及用户模式U。