什么是RISC V处理器:体系结构、工作原理及其应用
RISC V是由加州大学伯克利分校开发的指令集体系结构。RISC概念的动机是大多数处理器指令没有被大多数计算机程序使用。所以,没有必要。。。
RISC V是由加州大学伯克利分校开发的指令集体系结构。RISC概念的动机是大多数处理器指令没有被大多数计算机程序使用。因此,在处理器的设计中使用了不必要的解码逻辑,消耗了更多的功率和面积。为了缩短指令集并在寄存器资源中投入更多RISC V处理器已实施。
这项技术受到了许多科技巨头和初创企业的注意,因为它是完全开源和免费的。大多数类型的处理器都有许可协议,但有这种类型的处理器;任何人都可以设计新的处理器。因此,本文对RISC V处理器的工作原理及其应用进行了概述。
什么是RISC V处理器?
在RISC V处理器中,术语RISC代表“精简指令集计算机”,它执行很少的计算机指令,而“V”代表第五代。它是一种基于RISC既定原理的开源硬件ISA(指令集架构)。
与其他ISA设计相比,此ISA具有开源许可证。因此,许多制造公司已经宣布并提供RISC-V硬件和开源操作系统。
这是一种新的体系结构,有开放的、非限制的和免费的许可证。该处理器得到了芯片和设备制造商行业的广泛支持。因此,它主要设计为可自由扩展和自定义,以在许多应用程序中使用。
RISC V历史
RISC是由大卫·帕特森教授于1980年左右在加州大学伯克利分校发明的。David教授和John Hennessy教授在斯坦福大学的《计算机组织与设计》和《计算机体系结构》两本书中提交了他们的努力。因此,他们在2017年获得了ACM A.M.图灵奖。
从1980年到2010年,RISC第五代开发研究开始,最终被确定为RISC-V,即风险五。
RISC V体系结构与工作
RV12 RISC V体系结构如下所示。RV12具有可高度配置的单核RV32I和RV64I兼容RISC CPU,用于嵌入式领域。RV12也来自32或64位CPU系列,具体取决于工业标准RISC-V指令集。
RV12简单地执行哈佛体系结构,用于同时访问指令和数据存储器。它还包括一个6级流水线,有助于优化执行和内存访问之间的重叠,以提高效率。该体系结构主要包括分支预测、数据缓存、调试单元、指令缓存以及可选的乘法器或除法器单元。
RV12 RISC V的主要功能包括以下几点。
- 这是一个行业标准的指令集。
- 使用32或64位数据进行参数化。
- 它具有精确而快速的中断。
- 自定义指令允许添加专有硬件加速器。
- 执行单个循环。
- 具有优化折叠的六级管道。
- 支持内存保护。
- 可选或参数化缓存。
- 参数化程度极高。
- 用户可以选择32/64位数据和分支预测单元。
- 用户可以选择指令/数据缓存。
- 缓存的用户可选结构、大小和体系结构。
- 硬件分频器或乘法器支持用户定义的延迟。
- 总线架构非常灵活,支持Wishbone和AHB。
- 这种设计优化了功率和尺寸。
- 设计完全参数化,提供性能或功率权衡。
- 门控CLK设计,以降低功率。
- 行业标准的软件支持。
- 建筑模拟器。
- Eclipse IDE用于Linux/Windows。
RISC V执行管道
它包括五个阶段,如IF(指令提取)、ID(指令解码)、EX(执行)、MEM(存储器访问)和WB(寄存器写回)。
指令获取
在指令获取或IF阶段,从程序计数器(PC)和指令存储器中读取一条指令,并将其更新为下一条指令。
指令预解码
一旦允许RVC支持,则指令预解码阶段将把16位压缩指令解码为本机32位指令。
指令解码
在指令解码(ID)阶段,允许寄存器文件,并决定旁路控制。
处决
在执行阶段,计算ALU、DIV、MUL指令的结果,存储或加载指令允许的内存,并根据其预期结果测量分支和跳跃。
记忆力
在这个内存阶段,内存是通过管道访问的。该阶段的包含确保了管道的高性能。
回写
在这个阶段,执行阶段的结果被写入寄存器文件。
分支预测器
该处理器包括一个分支预测器单元或BPU,用于存储过去的数据,以指导RISC V处理器决定是否采用特定的分支。一旦分支执行,就简单地更新该预测数据。
该单元包括决定其行为的不同参数。例如,HAS_BPU用于确定分支是否预测单元存在,BPU_GLOBAL_BITS将确定应使用多少过去的位,而BPU_LOCAL_BITS将确定应该使用多少程序计数器的LSB。BPU_LOCAL_BITS和BPU_GLOBAL_BITS的组合将创建一个向量,该向量主要用于处理分支预测表。
数据缓存
这主要用于通过缓冲存储器的新访问位置来加快数据存储器的访问。当XLEN=32时,如果它们在自己的边界上,这能够处理半字、字节和字访问。当XLEN=64时,如果它们在自己的边界上,它还能够处理半字、字节、字和双字访问。
在整个缓存未命中过程中,可以将整个块写回内存,因此,如果必要,可以将新块加载到缓存中。通过将DCACHE_SIZE设置为零来禁用数据缓存。之后,直接通过数据接口.
指令缓存
这主要用于通过缓冲新获取的指令来加快指令的获取。该高速缓存用于在任何16位边界上为每个循环提取一个地块,但不跨越块边界。在整个缓存未命中过程中,可以从指令存储器加载整个块。该缓存的配置可以根据用户的需要进行。缓存的大小、替换算法和块长度是可配置的。
将ICACHE_SIZE设置为零将禁用指令周期。之后,通过指令接口。
调试单元
调试单元将允许调试环境停止并检查CPU。它的主要功能是分支跟踪,单步跟踪最多8个硬件断点。
注册文件
这是用从X0到X31的32个寄存器位置设计的,其中X9寄存器始终为零。寄存器文件包括1个写入端口和2个读取端口。
可配置接口
这是一个外部接口,该处理器支持不同的外部总线接口。
RISC V是如何工作的?
RISC-V是一种植根于RISC(精简指令集计算机)原理的指令集体系结构。这种处理器非常独特,也是革命性的,因为它是一种免费、通用和开源的ISA,可以开发硬件,可以移植软件,处理器可以设计为支持它。
B/W RISC V与MIPS的差异
RISC V和MIPS之间的区别包括以下几点。
风险控制系统V |
混合动力系统 |
术语RISC V代表精简指令集计算机,其中“V”是第五代。 | 术语“MIPS”代表“每秒百万条指令”。 |
RISC-V只是允许较小设备的制造商在不付费的情况下设计硬件。 | MIPS允许制造商通过付费来测量处理器的速度,因为它不是免费的。 |
MIPS实际上已经失效。 | RISC-V并没有有效地失效。 |
该处理器提供用于比较两个寄存器的分支指令。 | MIPS取决于比较指令,该比较指令基于对比度是否为真将寄存器定位为1或0。 |
ISA编码方案在RISC V中是固定的和可变的。 | ISA编码方案在MIPS中是固定的 |
指令集大小为16位或32位、64位或128位。 | 指令集大小为32位或64位。 |
它有32个通用和浮点寄存器 | 它有31个通用和浮点寄存器。 |
它有26个单精度和双精度浮点运算。 | 它有15个单精度和双精度浮点运算。 |
B/W RISC V与ARM的差异
RISC V与ARM之间的区别包括以下几点。
风险控制系统V |
臂 |
RISC-V是开源的,所以它不需要任何许可证。 | ARM是一个封闭的源代码,因此它需要一个许可证。 |
这是一个新的处理器平台,因此对软件和编程环境的支持非常小。 | ARM有一个非常庞大的在线社区,支持库和结构,以帮助微处理器、微控制器和服务器等各种平台的目标设计师。 |
基于RISC V的芯片使用1瓦的功率。 | 基于ARM的芯片使用的功率低于4瓦。 |
它有一个固定和可变的ISA编码系统。 | 它有一个固定的ISA编码系统。 |
RISC V指令集的大小范围从16位到128位。 | 它的指令大小从16位到64位不等。 |
它包括32个通用和浮点寄存器。 | 它包括31个通用和浮点寄存器。 |
它有26个单精度浮点运算。 | 它有33个单精度浮点运算。 |
它有26个双精度浮点运算。 | 它有29个双精度浮点运算。 |
RISC V Verilog代码
RISC的指令内存verilog代码如下所示。
//RISC处理器的Verilog代码
//指令存储器的Verilog代码
模块指令存储器(
输入[15:0]pc,
输出[15:0]指令
);
reg[`col–1:0]内存[`row_i–1:0];
导线[3:0]rom_addr=pc[4:1];
最初的
开始
$readmemb(“./test/test.prog”,内存,0,14);
终止
assign指令=内存[rom_addr];
末端模块
16位RISC V处理器的Verilog代码:
模块Risc_16_bit(
输入clk
);
跳线、bne、beq、mem_read、mem_write、alusrc、reg_dst、mem_to_reg、reg_write;
电线[1:0]aluop;
有线[3:0]操作码;
//数据路径
数据路径单元DU
(
.clk(clk),
.跳跃(jump),
beq(beq),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.reg_ write(reg_write),
.bne(bne),
.alu_op(alu_op),
.ocode(操作码)
);
//控制单元
控制_单元控制
(
.opcode(操作码),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.跳跃(jump),
.bne(bne),
beq(beq),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_write(规则写入)
);
末端模块
指令集
下面将讨论RISC V指令集。
算术运算
下面列出了RISC V的算术运算。
助记符 | 类型 | 指示 | 描述 |
添加rd、rs1、rs2 | R |
添加 | rdßrs1+rs2 |
次级rd、rs1、rs2 | R |
减 | rdßrs1–rs2 |
加法运算rd,rs1,imm2 | 我 |
添加即时消息 | rdßrs1+imm2 |
SLT rd、rs1、rs2 | R |
设置为小于 | rdßrs1-<rs2 |
SLTI rd、rs1、imm2 | 我 |
设置为小于立即数 | rdßrs1-<imm2 |
SLTU rd、rs1和rs2 | R |
设置为小于无符号 | rdßrs1-<rs2 |
SLTIU rd、rs1、imm2 | 我 |
设置小于无符号立即数 | rdßrs1-<imm2 |
LUI rd,百万分之20 | U |
加载上限立即数 | rdßimm20<<12 |
资产负债表rd,imm20 | U |
将上限立即数添加到PC | rdßPC+imm20<<12 |
逻辑运算
RISC V逻辑操作如下所示。
助记符 | 类型 | 指示 | 描述 |
与rd、rs1、rs2 | R |
以及 | rdßrs1和rs2 |
或rd、rs1、rs2 | R |
或 | rdßrs1|rs2 |
异或rd、rs1、rs2 | R |
异或 | rdßrs1^rs2 |
“与”运算rd,rs1,imm2 | 我 |
AND立即 | rdßrs1和imm2 |
ORI rd、rs1、imm2 | 我 |
OR立即 | rdßrs1|imm2 |
OXRI rd,rs1,imm2(牛津大学研究院第三版,rs1) | 我 |
XOR立即数 | rdßrs1^rs2 |
SLL rd、rs1、rs2 | R |
左移逻辑 | rdßrs1<<rs2 |
SRL rd、rs1、rs2 | R |
右移逻辑 | rdßrs1>>rs2 |
SRA rd、rs1、rs2 | R |
右移算术 | rdßrs1>>rs2 |
SLLI rd,rs1,沙姆特 | 我 |
左移逻辑立即数 | rdßrs1<<shamt |
SRLI rd、rs1、shamt公司 | 我 |
右移逻辑立即数 | rdßrs1>>香波 |
SRAI rd、rs1和shamt | 我 |
右移算术立即数 | rdßrs1>>香波 |
加载/存储操作
RISC V加载/存储操作如下所示。
助记符 | 类型 | 指示 | 描述 |
LD rd,imm2(rs1) | 我 |
加载双字 | rdßmem[rs1+imm2] |
LW rd,imm12(rs1) | 我 |
加载字 | rdßmem[rs1+imm2] |
左侧rd,imm2(rs1) | 我 |
加载半字 | rdßmem[rs1+imm2] |
LB rd,imm12(rs1) | 我 |
加载字节 | rdßmem[rs1+imm2] |
LWU rd,imm12(rs1) | 我 |
加载无符号字 | rdßmem[rs1+imm2] |
左后,imm2(rs1) | 我 |
加载半字无符号 | rdßmem[rs1+imm2] |
低位逻辑单元rd,imm2(rs1) | 我 |
加载无符号字节 | rdßmem[rs1+imm2] |
SD rs2,imm2(rs1) | S |
存储双字 | rs2àmem[rs1+imm2] |
开关rs2,imm12(rs1) | S |
存储字 | rs2(31:0)àmem[rs1+imm12] |
SH rs2,imm2(rs1) | S |
存储半字 | rs2(15:0)àmem[rs1+imm12] |
SB rs2,imm2(rs1) | S |
存储字节 | rs2(15:0)àmem[rs1+imm12] |
SRAI rd、rs1和shamt | 我 |
右移算术立即数 | rs2(7:0)àmem[rs1+imm12] |
分支机构操作
RISC V分支操作如下所示。
助记符 | 类型 | 指示 | 描述 |
BEQ rs1、rs2、imm2 | 某人 |
分支相等 | 如果rs1==rs2 PCßPC+imm2 |
BNE rs1、rs2、imm2 | 某人 |
分支不相等 | 如果rs1!=rs2型 PCßPC+imm2 |
BGE rs1、rs2、imm2 | 某人 |
分支大于或等于 | 如果rs1>=rs2 PCßPC+imm2 |
BGEU rs1、rs2、imm2 | 某人 |
分支大于或等于无符号 | 如果rs1>=rs2 PCßPC+imm2 |
BLT rs1、rs2、imm12 | 某人 |
分支小于 | 如果rs1<rs2 PCßPC+imm2 |
BLTU rs1、rs2、imm2 | 某人 |
分支小于无符号 | 如果rs1<rs2 PCßPC+imm2<<1 |
日航rd,imm20 | 乌吉 |
跳转和链接 | rdßPC+4 PCßPC+imm20 |
JALR rd,imm2(rs1) | 我 |
跳转和链接寄存器 | rdßPC+4 PCßrs1+imm2 |
优势
这个RISC的优势 V处理器包括以下内容。
- 通过使用RISCV,我们可以节省开发时间、软件开发、验证等。
- 该处理器具有许多优点,如简单、开放、模块化、全新设计和可扩展性。
- 这得到了几种语言编译器的支持,如GCC(GNU编译器集合),一种通过Linux操作系统的免费软件编译器。
- 这可以由公司免费使用,因为没有版税,没有许可费,也没有相关的条件。
- RISC-V处理器不包括任何新的或创新的功能,因为它只是遵循RISC的既定原则。
- 与其他几种ISAs类似,此处理器规范只是定义了各种指令集级别。因此,它包含32和64位变体以及支持浮点指令的扩展。
- 这些都是免费的、简单的、模块化的、稳定的等等。
缺点
这个RISC V处理器的缺点包括以下内容。
- 编译器和程序员经常使用复杂的指令。
- 当循环中的后续指令依赖于先前的指令来执行时,RISC的o/p可以基于代码而改变。
- 这些处理器需要快速保存各种指令,这需要一个大的高速缓冲存储器集来及时响应指令。
- RISC的完整功能、能力和优势主要取决于体系结构。
应用
这个RISC V的应用 加工机包括以下内容。
- RISC-V应用于嵌入式系统、人工智能和机器学习。
- 这些处理器用于基于高性能的嵌入式系统应用程序。
- 该处理器适用于边缘计算、人工智能和存储应用等特定领域。
- RISC-V很重要,因为它允许较小的设备制造商在不付费的情况下设计硬件。
- 该处理器只允许研究人员和开发人员使用免费提供的ISA或指令集架构进行设计和研究。
- RISC V的应用范围从小型嵌入式微控制器到台式PC和包括矢量处理器在内的超级计算机。
因此,这是一个RISC V处理器的概述——体系结构,与应用程序一起工作。这里有一个问题要问你,什么是CISC处理器?