LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 381|回复: 0

解剖RISC-V架构

[复制链接]
发表于 2024-1-9 17:42:43 | 显示全部楼层 |阅读模式
CPU基本知识介绍:
  • 请注意区分“处理器处理器核”,以及“CPU”和“Core”的概念。
  • “处理器核”和“Core”是指处理器内部最核心的部分,是真正的处理器内核。
  • “处理器”和“CPU”往往是一个完整的 SoC,包含了处理器内核和其他的设备或者存储器。
  • 在现实中大多数文章往往不会严格地遵循两者的差别,时常混用。
  • CPU 的灵魂指令集架构(Instruction Set Architecture,ISA)。指令集,顾名思义是一组指令的集合,而指令是指处理器进行操作的最小单元(譬如加减乘除操作或者读/写存储器数据)。
  • 至于MCU以及MPU感兴趣可以查找相关资料。
指令集架构(Instruction Set Architecture,ISA)介绍:指令集架构,有时简称为“架构”或者称为“处理器架构”。有了指令集架构,便可以使用不同的处理器硬件实现方案来设计不同性能的处理器。处理器的具体硬件实现方案称为微架构(Microarchitecture)。虽然不同的微架构实现可能造成性能与成本的差异,但是,软件无须做任何修改便可以完全运行在任何一款遵循同一指令集架构实现的处理器上。因此,指令集架构可以理解为一个抽象层,如下图所示。该抽象层构成处理器底层硬件与运行于其上的软件之间的桥梁与接口,也是现在计算机处理器中重要的一个抽象层。
为了让软件程序员能够编写底层的软件,指令集架构不仅仅是一组指令的集合,它还要定义任何软件程序员需要了解的硬件信息,包括支持的数据类型、存储器(Memory)、寄存器状态、寻址模式和存储器模型等。
综上可见,指令集架构才是区分不同 CPU 的主要标准,这也是 Intel 和 AMD 公司多年来分别推出了几十款不同的 CPU 芯片产品的原因。虽然来自于两个不同的公司,但是它们仍被统称为 x86 架构 CPU。
指令集架构主要分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC),两者的主要区别如下:
  • CISC 不仅包含了处理器常用的指令,还包含了许多不常用的特殊指令。其指令数目比较多,所以称为复杂指令集。
  • RISC 只包含处理器常用的指令,而对于不常用的操作,则通过执行多条常用指令的方式来达到同样的效果。由于其指令数目比较精简,所以称为精简指令集。
在 CPU 诞生的早期,CISC 曾经是主流,因为其可以使用较少的指令完成更多的操作。但是随着指令集的发展,越来越多的特殊指令被添加到 CISC 指令集中,CISC 的诸多缺点开始显现出来。譬如:
  • 典型程序的运算过程中所使用到的 80%指令,只占所有指令类型的 20%,也就是说,CISC 指令集定义的指令,只有 20%被经常使用到,而有 80%则很少被用到。
  • 那些很少被用到的特殊指令尤其让 CPU 设计变得极为复杂,大大增加了硬件设计的时间成本与面积开销。
基于以上原因,自从RISC 诞生之后,基本上所有现代指令集架构都选择使用 RISC 架构。
32 位与 64 位架构介绍:除了 CISC 与 RISC 之分,处理器指令集架构的位数也是一个重要的概念。通俗来讲,处理器架构的位数是指通用寄存器的宽度,其决定了寻址范围的大小、数据运算能力的强弱。譬如 32 位架构的处理器,其通用寄存器的宽度为 32 位,能够寻址的范围为 232 Byte,即 4GB的寻址空间,运算指令可以操作的操作数为 32 位。处理器指令集架构的宽度和指令的编码长度无任何关系。并不是说 64 位架构的指令长度为 64 位(这是一个常见的误区)。从理论上来讲,指令本身的编码长度越短越好,因为可以节省代码的存储空间。因此即便在 64 位的架构中,也大量存在 16 位编码的指令,且基本上很少出现过 64 位长的指令编码。
综上所述,在不考虑任何实际成本和实现技术的前提下,理论上来讲:
  • 通用寄存器的宽度,即指令集架构的位数越多越好,因为这样可以带来更大的寻址范围和更强的运算能力。
  • 指令编码的长度越短越好,因为这样可以更加节省代码的存储空间。
常见的架构位数分为 8 位、16 位、32 位和 64 位。早期的单片机以 8 位和 16 位为主,如知名的 8051 单片机是使用广泛的 8 位架构。
RISC-V架构简单的背景介绍:
  • RISC-V 架构主要由美国加州大学伯克利分校(简称伯克利)的 Krste Asanovic 教授、Andrew Waterman 和 Yunsup Lee 等开发人员于 2010 年发明,并且得到了计算机体系结构领域的泰斗 David Patterson 的大力支持。伯克利的开发人员之所以发明一套新的指令集架构,而不是使用成熟的 x86 或者 ARM 架构,是因为这些架构经过多年的发展变得极为复杂和冗繁,并且存在着高昂的专利和架构授权问题。并且修改 ARM 处理器的 RTL 代码是不被支持的,而 x86 处理器的源代码根本不可能获得到。其他的开源架构(譬如 SPARC、OpenRISC)均有着或多或少的问题(感兴趣可以自行查阅资料)。有感于计算机体系结构和指令集架构已经过数十年的发展非常成熟,但是像伯克利这样的研究机构竟然“无米下锅”(选择不出合适的指令集架构供其使用)。伯克利的教授与研发人员决定发明一种全新的、简单且开放免费的指令集架构,于是 RISC-V 架构诞生了。
  • 最初设计它是为了支持计算机体系架构研究和教育,但我们现在希望它也将成为一种标准的自由和开放的行业实现体系架构。
  • RISC-V(发音为risk-five)是一种新的指令集体系架构(ISA),“V”包含两层意思,一是这是伯克利从 RISC I 开始设计的第五代指令集架构;二是它代表了变化(Variation)和向量(Vectors)。
  • RISC-V的不同寻常不仅在于它是一个最近诞生的指令集架构(它诞生于最近十年,2011年推出,而大多数其他指令集都诞生于20世纪70到80年代),而且在于它是一个开源的指令集架构。
  • 经过几年的开发,伯克利为 RISC-V 架构开发出了完整的软件工具链以及若干开源的处理器实例,得到越来越多的人的关注。2016 年,RISC-V 基金会(Foundation) 正式成立开始运作。RISC-V 基金会是一个非营利性组织,负责维护标准的 RISC-V 指令集手册与架构文档,并推动 RISC-V 架构的发展。RISC-V 基金会负责维护标准的 RISC-V 架构文档和编译器等 CPU 所需的软件工具链,任何组织和个人可以随时在 RISC-V 基金会网站上免费下载(无须注册)。RISC-V 架构的目标如下:
  • 成为一种完全开放的指令集,可以被任何学术机构或商业组织所自由使用
  • 成为一种真正适合硬件实现且稳定的标准指令集。
RISC-V基金会(开放的,非营利性质的)的目标是保持RISC-V的稳定性,仅仅出于技术原因缓慢而谨慎地发展它,并力图让它之于硬件如同Linux之于操作系统一样受欢迎



链接:https://juejin.cn/post/7049170072522194974




您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表