RISC-V 就是在这样的背景下诞生的:它从头设计,目标是成为一个开放、模块化、长期维护的通用 ISA,既适合教学,也能服务产业。其命名中的“V”代表的是“第五代 Berkeley RISC 设计”。 3.2 RISC-V 基金会与开源运动 随着学术界对 RISC-V 的兴趣升温,越来越多的实验室、研究人员和工程师开始参与相关工具链和处...
RISC-V 指令集规范官方下载地址:https://riscv.org/technical/specifications/ 1.1.3 RISC-V概述 1.模块化的指令子集 RISC-V指令集采用模块化的方式进行组织设计,由基本指令集和扩展指令集组成,每个模块用一个英文字母表示。 其中,整数(Integer)指令集用字母“I”表示,这是RISC-V处理器最基本也是唯一强制要求实现...
根据 Andrew Waterman 在其博士论文中提供的统计数据,使用 Load-Multiple 和 Store-Multiple 以后,可以将 Linux 内核的代码量降低 8% 左右。 然而,RISC-V 的设计者再三斟酌后,决定忍痛割爱,不在 C Extension 中支持 Load-Multiple 与 Store-Multiple,其原因主要如下: (1)在前文提到的所有 16 位压缩指令,都可以...
基本指令集的名称后缀都是I,表示Integer,任何一款采用RISC-V架构的处理器都要实现一个基本指令集,根据需要,可以实现多种扩展指令集,例如:如果实现了RV32IM,表示实现了32位基本指令集和乘法除法扩展指令集。如果实现了RV32IMAFD,那么可以使用RV32G来表示,表示实现了通用标量处理器指令集。这里只介绍RV32I的基本情况...
EXU(Execution Unit),执行单元。其中IU(Integer Unit)负责整数相关算术和逻辑指令、分支指令的执行,FPU(Float Point Unit)负责浮点算术运算的执行,LSU(Load Store Unit)负责访存指令的执行。 RTU(Retire Unit),退休单元。维护了物理寄存器、ROB(Re-Order Buffer)以及备份重命名表。备份重命名表用于在出现分支预测以及...
“RV”代表 RISC-V;“64”代表所支持的指令是 64 位的(实际上,交叉编译器在生成代码时可能会采用 32 位指令减小生成的目标代码长度),地址长度和寄存器长度都为 64 位;“G”代表通用(General)计算平台。实际上,“G”等效于“IMAFD”,其中“I”代表整数(Integer)计算指令、整数 load、整数 store 以及...
“RV”代表 RISC-V; “64”代表所支持的指令是 64 位的(实际上,交叉编译器在生成代码时可能会采用 32 位指令减小生成的目标代码长度),地址长度和寄存器长度都为 64 位; “G”代表通用(General)计算平台。实际上,“G”等效于“IMAFD”,其中“I”代表整数(Integer)计算指令、整数 load、整数 store 以及控制流...
“RV”代表 RISC-V; “64”代表所支持的指令是 64 位的(实际上,交叉编译器在生成代码时可能会采用 32 位指令减小生成的目标代码长度),地址长度和寄存器长度都为 64 位; “G”代表通用(General)计算平台。实际上,“G”等效于“IMAFD”,其中“I”代表整数(Integer)计算指令、整数 load、整数 store 以及控制流...
整数通用寄存器组(Integer Register File,简称Integer-Regfile)模块主要用于实现RISC-V架构定义的整数通用寄存器组,其微架构如图4所示。RISC-V的整数指令都是单操作数或两操作数指令,且蜂鸟E203属于单发射(一次发射派遣一条指令)的微架构,因此Integer-Regfile模块只需要支持最多两个读端口。同时,蜂鸟E203的写回策略是...
RISC-V通用寄存器组 寄存器是CPU上预先定义的可以用来存储数据的位置。汇编代码并不是在内存上执行,而是在寄存器上执行,也就是说,当CPU在做add,sub时,其实是对寄存器进行操作。所以通常的汇编代码中的模式是,通过load将数据存放在寄存器中,这里的数据源可以是来自内存,也可以来自另一个寄存器,之后,ALU在寄存器上执行...