安利一本书:《RISC-V 手册》
-
作者:Hello小崔
链接:https://zhuanlan.zhihu.com/p/148284839
来源:知乎在A国封杀中国相关科技公司的大环境下,操作系统和芯片成为大家讨论很火的事情了。ARM公司受限A国法律限制,开始对HW明令禁止提供ARM架构芯片(当然也包括最近比较火的台积电不再接受HW芯片订单),国人又开始讨论如何打破芯片壁垒,是夹缝生存还是寻求突破?(额...其实没那么复杂,就是听说RISC-V能替代ARM和X86架构,并且社区比较火,觉得要与时俱进学习下)。
学习新的架构(比如ARM或X86)有多种学习方法,比如通过阅读相关书籍著作了解学习,或是报名课程学习,或者查看官网资料。无论是哪种方式,最终都将回归到查看官网提供的芯片手册这条路,因为手册最准确,也最权威。
RISC-V英文手册其实还好,相比ARMv8的6666页来说...如果有点吃力,就看下《RISC-V 手册》吧,下载地址:
RISC-V-Reader-Chinese-v2p1.pdf为什么安利这本书,因为这本书对于想要了解RISC-V或者学习RISC-V指令,都比较适用。全书无论是介绍RISC-V还是相关指令,都说明为什么这样设计,有什么优点等等(现在X86为什么不好),让人容易理解和记住,总比上来就说架构寄存器多少个,都有什么功能等等,然后开始死记硬背好得多(恩,x86和arm都是这种感觉)。以下节选《RISC-V 手册》,算是对RISC-V和这本书有个印象。
RISC-V是什么RISC-V(“RISC five”)的目标是成为一个通用的指令集架构(ISA):
-
它要能适应包括从最袖珍的嵌入式控制器,到最快的高性能计算机等各种规模的处理器。
-
它应该能兼容各种流行的软件栈和编程语言。
-
它应该适应所有实现技术,包括现场可编程门阵列(FPGA)、 专用集成电路(ASIC)、 全定制芯片, 甚至未来的设备技术。
-
它应该对所有微体系结构样式都有效:例如微编码或硬连线控制;顺序或乱序执行流水线; 单发射或超标量等等。
-
它应该支持广泛的专业化,成为定制加速器的基础,因为随着摩尔定律的消退,加速器的重要性日益提高。
-
它应该是稳定的,基础的指令集架构不应该改变。
更重要的是,它不能像以前的专有指令集架构一样被弃用,例如AMD Am29000、 Digital Alpha、 Digital VAX、Hewlett Packard PA-RISC、 Intel i860、 Intel i960、 Motorola 88000、以及ZilogZ8000。
RISC-V的不同寻常不仅在于它是一个最近诞生的指令集架构(它诞生于最近十年,而大多数其他指令集都诞生于20世纪70到80年代),而且在于它是一个开源的指令集架构。
与几乎所有的旧架构不同,它的未来不受任何单一公司的浮沉或一时兴起的决定的影响(这一点让许多过去的指令集架构都遭了殃)。
它属于一个开放的,非营利性质的基金会。 RISC-V基金会的目标是保持RISC-V的稳定性,仅仅出于技术原因缓慢而谨慎地发展它,并力图让它之于硬件如同Linux之于操作系统一样受欢迎。
计算机体系结构的传统方法是增量ISA,新处理器不仅必须实现新的ISA扩展,还必须实现过去的所有扩展。
目的是为了保持向后的二进制兼容性,这样几十年前程序的二进制版本仍然可以在最新的处理器上正确运行。
这一要求与来自于同时发布新指令和新处理器的营销上的诱惑共同导致了ISA的体量随时间大幅增长。例如,图1.2显示了当今主导ISA80x86的指令数量增长过程。这个指令集架构的历史可以追溯到1978年,在它的漫长生涯中,它平均每个月增加了大约三条指令。
这个传统意味着x86-32(我们用它表示32位地址版本的x86)的每个实现必须实现过去的扩展中的错误设计,即便它们不再有意义。例如, 图1.3描述了x86的ASCII Adjust afterAddition(aaa)指令,该指令早已失效。
作为一个类比,假设一家餐馆只提供固定价格的餐点,最初只是一顿包含汉堡和奶昔的小餐。 随着时间的推移,它会加入薯条,然后是冰淇淋圣代,然后是沙拉,馅饼,葡萄酒,素食意大利面,牛排,啤酒,无穷无尽,直到它成为一顿大餐。食客可以在那家餐厅找到他们过去吃过的东西,尽管总的来说这样做可能没什么意义。这样做的坏处是,用餐者为每次晚餐支付的宴会费用不断增加。
RISC-V的不同寻常之处,除了在于它是最近诞生的和开源的以外,还在于:和几乎所有以往的ISA不同,它是模块化的。它的核心是一个名为RV32I的基础ISA,运行一个完整的软件栈。
RV32I是固定的,永远不会改变。这为编译器编写者,操作系统开发人员和汇编语言程序员提供了稳定的目标。模块化来源于可选的标准扩展,根据应用程序的需要,硬件可以包含或不包含这些扩展。
这种模块化特性使得RISC-V具有了袖珍化、低能耗的特点,而这对于嵌入式应用可能至关重要。 RISC-V编译器得知当前硬件包含哪些扩展后,便可以生成当前硬件条件下的最佳代码。
惯例是把代表扩展的字母附加到指令集名称之后作为指示。例如, RV32IMFD将乘法(RV32M),单精度浮点(RV32F)和双精度浮点(RV32D)的扩展添加到了基础指令集(RV32I)中。继续用我们刚才的类比来说, RISC-V提供的是菜单,而不是一顿应有尽有的自助餐。
主厨只需要烹饪顾客需要的东西(而不是每次都做出一顿盛宴),顾客只需要按他们的订单付费。 RISC-V无需仅仅为了市场吸引力而添加指令。
RISC-V基金会会决定什么时候在菜单里添加新的选项,而他们只会出于技术原因这样做,而且要在由软硬件专家组成的委员会进行专门的公开讨论以后才会添加。即使那些新选择出现在了菜单上,它们仍是可选的,不会像在增量ISA中那样成为未来所有实现的必要组成部分。
很通俗易懂,为什么设计RISC-V,因为x86的又老又复杂,并且臃肿(很多用不到的指令)。RISC-V希望吸取前人经验和结合现在的实际情况,开发一种通用的指令集架构。
-
Copyright © 2023 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号