【RISC-V 理论篇】概述

简介: 【RISC-V 理论篇】概述

修订历史

2023.7.19

一、前言

提醒:全文 5 千字,预计阅读时长 8 分钟;

读者:对 RISC-V 架构感兴趣的小伙伴;

关键词 :RISC-V架构、指令集 ISA、总线、调试、虚拟化、M 模式、S 模式、 U 模式;

相关推荐:如果你对 RISC-V 组织感兴趣,建议阅读RISC-V International RISC-V China

二、术语、缩略语

ISA,Instruction Set Architecture,指令集架构


CISC,Complex Instruction Set Computer,复杂指令集计算机;


RISC,Reduced Instruction Set Computer,精简指令集计算机


RISC-V,Reduced Instruction Set Computer v5,第五代精简指令集计算机;


SBI: supervisor binary interface,管理二进制接口,用来实现 RISC-V 的管理模式程序可以在不同的 RISC-V 实现上移植;


SoC,System on a Chip,将计算机或其他电子系统集成到单一芯片的集成电路,也称片上系统

三、计算机体系结构概念

3.1 计算机体系结构

3.1.1 冯诺依曼架构

冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的 8086 中央处理器的程序指令和数据都是16 位宽。


数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。


3.1.2 哈佛架构

哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。 简介 与两个存储器相对应的是系统的 4 条总线:程序和数据的数据总线与地址总线。


3.2 指令集架构 ISA

       ISA 是计算机硬件与系统软件之间的接口,指机器语言程序员或操作系统、编译器、解释器设计人员所看到的计算机功能特性和概念性结构,ISA 是计算机体系结构中非常重要的部分,通常是一套规范。


       ISA 规定了数据类型、寄存器、字节次序、指令格式、指令集、寻址方式、协处理器/理指令集扩展、异常处理方式。


       下图是普林斯顿大学软硬件的层次抽象,从图中可以看到 ISA 作为软硬件的接口存在,其下是微架构、寄存器/逻辑门、晶体管设备、物理实现。

3.2.1 复杂架构指令集 CISC

       复杂指令由微指令组成。


Intel :x86(IA32)、x86-64(Intel 64,兼容 IA32 的64位ISA)、IA64 不兼容 IA32,安腾系列(x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX)

AMD:AMD64 ISA,第一个兼容 IA32 的 64 位 ISA

3.2.1 精简指令集 RISC

Arm ISA、RISC-V ISA、LoongArch ISA

3.3 微架构

       ISA 是一套规范,微架构是 ISA 的具体实现。


x86-64 -> Intel Alder lake(golden cove & gracement)、AMD Zen 5

Arm -> Armv8-M33、Armv8-A710

RISC-V ->芯来 N308、SiFive E76-MC、平头哥玄铁

LongArch -> GS464E

3.4 片上系统 SoC

       SoC(system on Chip)是包含了微架构以及周围电路实现的片上系统


Intel 12 代 i7

ST stm32、TI TDA4

芯昇 CM32M43xR

玄铁 C908

四、RISC-V 指令集架构

4.1 简介

       RISC-V 架构:指的是第五代精简指令集架构,是面向下一代处理器的体系结构。因为没有向前兼容的历史包袱,所以 RISC-V 架构相比 Arm、 x86 等其他架构,可以从零开始设计,简单便成了 RISC-V 架构的设计哲学。


新机会:曾经死磕 x86、Arm、LoongArch 指令集未果的小伙伴们,看了 RISC-V 的模块化指令集架构,你会发现体系机构原来可以设计的如此简单。


方法:学习 RISC-V 方法论应以指令集为抓手:从核心/基础指令集,到扩展/升级指令集,以自顶向下的思维方法逐步了解指令集 -> 微架构 -> 组件 -> 代码,以特定处理器分析为主线,掌握 RISC-V 体系结构。


4.2 模块化指令集

RV [32, 64, 128] I, M, A, F, D, G, Q, L, C, B, J, T, P, V, N; DSA


特定领域架构


4.3 清晰的指令格式

指令格式包括:R,I,S,B,U,J 指令;


R 型指令——用于寄存器与寄存器之间算术运算操作;


I 型指令——用于寄存器与立即数之间算术运算和读存储器操作;


S 型指令——用于写存储器;


B 型指令——用于分支转移操作(属于 S 型指令的变体);


U 型指令——用于高 20 比特位立即数操作;


J 型指令——用于直接跳转(属于U型指令的变体)。


4.4 清晰的权限层级

       RISC-V 架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用场景。用户能够灵活选择不同的模块组合,来实现自己定制化设备的需要,比如针对于小面积低功耗嵌入式场景,用户可以选择 RV32IC 组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如 RV32IMFDC 的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。


用户 U 模式


管理 S/HS 模式


机器 M 模式


上面特权级别可以分别对应 Arm 的 EL0~EL3。


4.5 整齐划一的标准

       现代操作系统都做了特权级指令和用户级指令的分离,特权指令只能操作系统调用,而用户级指令才能在用户模式调用,保障操作系统的稳定。RISC-V提供了特权级指令和用户级指令,同时提供了详细的RISC-V特权级指令规范和RISC-V用户级指令规范的详细信息,使开发者能非常方便的移植linux和unix系统到RISC-V平台。


特权规范

非特权规范

4.6 灵活的商业模式

x86 架构是闭源的


Arm 架构是闭源或授权的


RISC-V 架构允许闭源、授权、开源




五、RISC-V 微架构

5.1 芯来


5.1.1 丰富的可配置性

Adapt the Core to the System

Incorporate Only Needed Features

5.1.2 稳健的编码格式

Verilog based

Friendly for debug, PPA optimization

5.1.3 良好的扩展性

RISC-V B/K/P/V -extensions

User-defined Instruction Extension

5.1.4 完整的信息安全方案

TEE supported

Physical security package

5.1.5 健全的功能安全方案

ASIL-B & ASIL-D supported

Function safety Package

5.1.6 灵活的商业模式及技术支持

CPU subsystem available

Local support with fast response

5.2 赛昉

5.2.1 昉•天枢处理器内核

       昉·天枢(Dubhe)是全球已交付性能最高的 64 位 RISC-V CPU Core IP,采用 11 +级流水线、超标量、深度乱序执行等设计,支持标准 RISC‐V RV64GCBH 扩展,同时还针对性能和频率做了深度的优化,SPECint2006 可达 9.2/GHz。昉·天枢经过核芯复合体(Core Complex)预集成及验证,提供具备内存一致性的集群内单核、双核或四核的配置选择,简化了 SoC 开发工作,可广泛用于数据中心、PC、移动设备、高性能网络通讯、机器学习等高性能计算场景、设备。


5.2.2 昉·天璇

       昉·天璇采用了 10+级流水线、三发射乱序执行的 设计,支持丰富级流水线、三发射乱序执行的 设计,支持丰富RV64GCBVH RISC-V指令集。昉·天璇 SPEC2006int分数可达 7.0/GHz,专为高能效的计算场景设计,满足移动、桌面人工智能和汽车应用的需求。


5.2.3 昉·星链

5.3 平头哥

5.3.1 玄铁 902

       E902兼容RISC-V架构,采用2级极简流水线并对执行效率等方面进行了增强,可进一步选配安全执行环境以增强系统安全性,适用于对功耗和成本极其敏感的IoT、MCU等领域


5.3.2 玄铁 E906

       E906兼容RISC-V架构,采用5级整型流水线,并可选性能优异的单精度或单双精度浮点单元以及32位标量DSP计算单元,适用于无线接入、音频、

TWS、中高端MCU、导航等应用领域


5.3.3 玄铁 E907

       E907兼容RISC-V架构,是玄铁MCU处理器中的性能最高的处理器核。E907主要面向语音入口MCU、TWS、MPU、导航、多模无线接入等应用领域


5.4 晶心科技

5.4.1 AndeStar V3

RISC-V ISA is an innovation for industry because it is open, compact, modular and extensible; also 64-bit is natively defined. However, RISC-V is merely an instruction set architecture. It needs microarchitecture implementation and other associated products (such as compiler, development tools, and platform) to provide complete CPU IP solution. Andes sees the potential of RISC-V. Andes is joining forces with partners of RISC-V community to grow the ecosystem by bringing Andes' CPU IP experiences together with RISC-V's technology:


Andes becomes one of the Founding members of RISC-V Foundation (2016) and Premier member of RISC-V International(2020).

Andes is a RISC-V major tool-chain contributor (and maintainer).

Andes will provide a complete product portfolio with RISC-V CPU IP. Andes is your reliable RISC-V core IP business partner.

Andes provides world's leading customer-instruction extension capable RISC-V core IP (Andes 25-series cores) and tool.

Andes provides RISC-V cores that runs Linux.

Through years of interaction with customers, Andes is professional in designing details important to SoCs.

5.4.2 AndeStar V5

       Andes RISC-V处理器基于完全兼容于RISC-V的AndeStar™V5架构,并承袭了其精简、模块化和可扩充的优点。此外,AndeStar™V5架构更结合在V3 AndesCore™处理器中已被验证有效的Andes延伸功能,有助于在嵌入式应用中增强性能、降低执行代码大小和提供更好的开发支持。Andes RISC-V核心包括适用于入门级MCU和深度嵌入式协议处理的超精简型N22;适用于高速控制任务的N25 / NX25;适合浮点密集型多元应用的N25F / NX25F,和支持Linux应用的A25 / AX25。


六、官网

RISC-V International – RISC-V: The Open Standard RISC Instruction Set Architecture (live-risc-v.pantheonsite.io)


七、总结

RISC-V 架构是非常有前景的指令集架构,值得我们花些时间学习。


参考

RISC-V 开源指令集 中文

RISC-V SBI 接口

RISC-V 特权指令集、非特权指令集、扩展指令集

皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~

“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~

下一篇 「RISC-V Arch」RISC-V 指令集架构 ISA




相关文章
|
存储 监控 安全
【RISC-V 理论篇】SBI 规范解读(下)
【RISC-V 理论篇】SBI 规范解读(下)
1026 0
|
机器学习/深度学习 API 开发工具
通义千问API入门教程
本教程将带你从零开始,快速了解如何通过 API 使用通义千问大模型,并尝试使用大模型 API 开发一些简单的应用应用到工作中,提升效率。
|
存储 缓存 人工智能
玄铁 E906处理器简介|学习笔记
快速学习玄铁 E906处理器简介
3190 0
玄铁 E906处理器简介|学习笔记
|
API 开发工具
Xilinx SDK获取代码运行时间
Xilinx SDK获取代码运行时间
|
Linux 网络安全
CentOS 7 SSH连接超时自动断开解决方案
CentOS 7 SSH连接超时自动断开解决方案
1522 0
CentOS 7 SSH连接超时自动断开解决方案
|
存储 人工智能 编译器
【AI系统】CPU 指令集架构
本文介绍了指令集架构(ISA)的基本概念,探讨了CISC与RISC两种主要的指令集架构设计思路,分析了它们的优缺点及应用场景。文章还简述了ISA的历史发展,包括x86、ARM、MIPS、Alpha和RISC-V等常见架构的特点。最后,文章讨论了CPU的并行处理架构,如SISD、SIMD、MISD、MIMD和SIMT,并概述了这些架构在服务器、PC及嵌入式领域的应用情况。
1145 5
|
存储 Ubuntu 网络安全
在Ubuntu系统下通过Caddy实现LXD的安装与部署
通过上述步骤,您可以在Ubuntu系统下通过Caddy实现LXD的安装与部署。这种方法不仅可以提高容器管理的效率,还可以借助Caddy的自动SSL管理功能提升安全性。
412 0
tf.keras.layers.Dense
【8月更文挑战第20天】tf.keras.layers.Dense。
437 2
|
API 开发者 Python
API接口:原理、实现及应用
本文详细介绍了API接口在现代软件开发中的重要性及其工作原理。API接口作为应用程序间通信的桥梁,通过预定义的方法和协议实现数据和服务的共享。文章首先解释了API接口的概念,接着通过Python Flask框架示例展示了API的设计与实现过程,并强调了安全性的重要性。最后,本文还讨论了API接口在Web服务和移动应用程序等领域的广泛应用场景。
|
缓存 算法
内存系列学习(七):ARM处理器的快速上下文切换技术
内存系列学习(七):ARM处理器的快速上下文切换技术
383 0