早上好啊,大伙,这一期依旧是risc-V的内容啊。
文章目录
什么是ISA?
ISA 也就是 Instruction Set Architecture ,什么意思呢?
也就是指令集架构。
ISA有什么用呢??!
它是底层硬件电路面向上层软件程序提供的一层 接口规范。
对于接口规范,什么是接口规范呢?
接口规范
接口规范是软件开发中定义不同系统或组件之间交互方式的标准文档,它确保不同模块、服务或系统能高效、可靠地通信。
ISA包括哪些内容??
- 基本数据类型 : BYTE / HALFWORD / WORD / …
- 寄存器
- 指令
- 寻址模式
- 异常或者中断的处理方式
- ……
为什么要设计ISA
为上层软件提供一层抽象,制定规则和约束,让编程者不用操心具体的电路结构。
其它 ISA
- X86
- SPARC
- Power
- ARM
- MIPS
- ……
CISC & RISC
CISC 复杂指令集
针对特定的功能实现特定的指令,导致指令数目比较多,但生成的程序长度相对较短。
RISC 精简指令集
只定义常用指令,对复杂的功能采用常用指令组合实现这导致指令数目比较精简,但生成的程序长度相对较长。
ISA的宽度
ISA(处理器)的宽度值得是CPU种通用寄存器的宽度(二进制的位数),这决定了寻址范围的大小、以及数据运算的能力。
RISC-V的历史渊源
OK,下面回归到正文,回到RISC-V的介绍。
RISC-V(发音为“risk-five”)是一种基于**精简指令集计算(RISC)**原则的开源指令集架构(ISA),其发展历史融合了学术研究、产业需求和对技术开放性的追求。以下是其关键发展节点和背景:
起源:伯克利的学术探索(2010年之前)
加州大学伯克利分校的计算机科学团队在研发教学用处理器时,发现现有指令集(如ARM、x86)存在专利限制或复杂性过高的问题。
初始目标:
设计一款简单、开放且适用于教学的指令集,避免商业架构的授权约束。
关键人物:
David Patterson:RISC先驱,提出RISC概念,指导项目方向。
Krste Asanović:项目负责人,推动RISC-V实际开发。
Andrew Waterman和Yunsup Lee:主导RISC-V指令集的核心设计。
RISC-V的诞生(2010-2014年)
2010年:伯克利团队启动项目,第五代RISC设计(故称RISC-V)正式立项。
2011年:发布首个可运行的RISC-V处理器(基于FPGA实现)。
2014年:发布RISC-V指令集手册(Volume I: User-Level ISA),确立基础规范。伯克利团队开源RISC-V架构,允许任何人免费使用、修改和商业化。
基金会成立与生态扩张(2015年至今)
跳转链接:RISC-V
2015年:成立RISC-V基金会(现更名为RISC-V International),总部位于瑞士,推动标准化和全球协作。
成员包括谷歌、英特尔、华为、阿里平头哥等科技巨头。
2016年:发布特权架构规范(Privileged ISA),支持操作系统和虚拟化。
2019年:
RISC-V被纳入Linux内核官方支持。
中国将RISC-V列为重点支持技术,成立“中国RISC-V产业联盟”。
2020年:发布向量扩展(V Extension),增强AI和高性能计算能力。
2023年:全球RISC-V芯片出货量突破100亿颗,覆盖IoT、AI、服务器等领域。
设计理念与核心优势
模块化架构:
基础指令集(RV32I/RV64I)仅包含40余条指令,可通过扩展(如乘除、浮点、向量)定制化组合。
开源免授权费:
无专利壁垒,企业可自由设计芯片,降低研发成本。
跨领域适用性:
从嵌入式设备(如ESP32-C3)到超级计算机(如欧洲EPAC项目)均有应用。
与ARM、x86的对比
特性 | RISC-V | ARM | x86 |
---|---|---|---|
架构类型 | 开源RISC | 闭源RISC(需授权) | 闭源CISC(Intel/AMD独占) |
灵活性 | 高度模块化,可自定义扩展 | 固定架构,部分可定制 | 固定架构,不可定制 |
授权成本 | 免费 | 高额授权费+专利费 | 仅限Intel/AMD使用 |
应用场景 | IoT、边缘计算、定制芯片 | 移动设备、嵌入式系统 | 桌面、服务器、高性能计算 |
RISC-V的特点
简单 清晰的分层设计 模块化 稳定 社区化
RISC-V ISA命名规范
ISA 命名格式:RV[###][abc…xyz]
RV:用于标识RISC-V体系架构的前缀,即RISC-V的缩写。
[###]:{32,64,128}用于标识处理器的自宽,也就是处理器的寄存器的宽度(单位是bit)
[abc…xyz]:标识该处理器支持的指令集模块集合
模块化的ISA
增量ISA
计算机体系结构的传统方法,同一个体系架构下的新一代处理器不仅实现了新的ISA扩展,还必须实现过去的所有拓展,目的是为了保持向后的二进制兼容性。典型的以80*86为代表 ——
模块化ISA
由1个基本整数指令集 + 多个可选的扩展指令集组成。基础指令集是固定的,永远不会改变。
基本整数指令集:
唯一强制要求实现的额基础指令集,其它指令集都是可选的扩展模块。
扩展模块指令集
- RISC-V允许再实现中以可选的形式实现其它标准化和非标准化的指令集扩展。
- 特定组合 “IMAFD” 被成为“通用”组合,用英文字母 “G” 表示。
通用寄存器(General Purpose Registers)
- RISC-V 的 UnprivilegedSpecification 定义了 32 个通用寄存器以及一个 PC
对 RV32I/RV64I/RV128I都一样
如果实现支持 F/D 扩展则需要额外支持 32个浮点(Float Point)寄存器。
RV32E 将 32 个通用寄存器缩减为 16 个
- 寄存器的宽度由 ISA 指定
RV32 的寄存器宽度为 32 位
RV64 的寄存器宽度为 64 位,依次类推。
- 每个寄存器具体编程时有特定的用途以及各自的别名。由 RISC-v Application Binary Interface(ABI)定义
Hart
HART = HARdware Thread
大概可以理解成CPU的存在,但是在整个系统里,可能不止一个Hart
下面是手册里对hart的描述 ——
大概意思就是
从在给定执行环境种运行的软件的角度来看,hart是在该执行环境中自主获取和执行RISC-V指令的资源。
特权级别
RISC-V的Privileged Specification定义了三个特权级别(Privilege level)
Machine级别最高,所有实现都需要支持。
可选的Debug级别
CSR
- 在不同的特权级别下都一套自己的寄存器(Register),用于控制和获取相应Level下的处理器工作状态。
- 高级别的特权级别下可以访问低级别的CSR,反之则不行。
- RISC-V定义了专门用于操作CSR的指令。
- RISC-V定义了特定的指令可以用于在不同特权级别之间进行切换。
#内存管理和保护
物理内存保护
- 允许M模式指定U模式可以访问的内存地址
- 支持R/W/X,以及Lock。
虚拟内存保护
- 需要支持Supervisor Level
- 用于实现高级的操作系统特性
- 多种映射方式Sv32/Sv39/Sv48
异常和中断
异常(Exception) : unusual condition occurringanith an instruction in theat run time associated wcurrent RlSc-V hart(在运行时与当前RISC-V hart中的指令相关的异常情况)
中断(Interrupt) : anexternal asynchronous eventthat may cause a RlSC-vhart to experience anontrol(可能导致RISC-V处理器经历意外的控制转移的外部异步事件。)