CPU RISC-V技术

11 篇文章 0 订阅

CPU RISC-V技术
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.为什么要有 RISC-V?
简约是复杂的最终形式。 ——列奥纳多·达·芬奇(Leonardo da Vinci)
1.1 导言
RISC-V(“RISC five”)的目标是成为一个通用的指令集架构(ISA):
要能适应包括从最袖珍的嵌入式控制器,到最快的高性能计算机等各种规模的处理器。
应该能兼容各种流行的软件栈和编程语言。
应该适应所有实现技术,包括现场可编程门阵(FPGA)、专用集成电路(ASIC)、全定制芯片,甚至未来的设备技术。
应该对所有微体系结构样式都有效:例如微编码或硬连线控制;顺序或乱序执行流水线; 单发射或超标量等等。
应该支持广泛的专业化,成为定制加速器的基础,因为随着摩尔定律的消退,加速器的重要性日益提高。
应该是稳定的,基础的指令集架构不应该改变。更重要的是,不能像以前的专有指令集架构一样被弃用,例如AMD Am29000、Digital Alpha、Digital VAX、Hewlett Packard PA-RISC、Intel i860、Intel i960、Motorola 88000、以及Zilog Z8000。
RISC-V的不同寻常不仅在于是一个最近诞生的指令集架构(诞生于最近十年,而大多数其他指令集都诞生于20世纪70到80年代),而且在于是一个开源的指令集架构。与几乎所有的旧架构不同,未来不受任何单一公司的浮沉或一时兴起
的决定的影响(这一点让许多过去的指令集架构都遭殃)。属于一个开放的,非营利性质的基金会。RISC-V基金会的目标是保持RISC-V的稳定性,仅仅出于技术原因缓慢而谨慎地发展,并力图之于硬件如同Linux之于操作系统一样受欢迎。
图1.1列出了RISC-V基金会最大的企业成员,作为其活力的证明。
1.2 模块化与增量型 ISA 英特尔曾将其未来押在高端微处理器之上,但那时还需要很多年时间。为了对抗Zilog,英特尔开发了 一款过渡产品,并给起名为8086。本应该是短命的,没有任何继任者,但事情并非如此。高端处 理器姗姗来迟,等最终出现时,性能并不如人意。因此,8086架构延续了下去——变成32位 处理器,最终演变为了64位处理器。名称不断变化(80186,80286,i386,i486,Pentium),但基 础指令集保持不变。 ——Stephen P. Morse, 8086的架构师[Morse 2017] 15 计算机体系结构的传统方法是增量ISA,新处理器不仅必须实现新的ISA扩展,还必须 实现过去的所有扩展。目的是为了保持向后的二进制兼容性,这样几十年前程序的二进制 版本仍然可以在最新的处理器上正确运行。这一要求与来自于同时发布新指令和新处理器 的营销上的诱惑共同导致了ISA的体量随时间大幅增长。例如,图1.2显示了当今主导ISA 80x86的指令数量增长过程。这个指令集架构的历史可以追溯到1978年,在漫长生涯 中,平均每个月增加了大约三条指令。 这个传统意味着x86-32(表示32位地址版本的x86)的每个实现必须实现过去 的扩展中的错误设计,即便不再有意义。例如,图1.3描述了x86的ASCII Adjust after Addition(aaa)指令,该指令早已失效。 作为一个类比,假设一家餐馆只提供固定价格的餐点,最初只是一顿包含汉堡和奶昔 的小餐。随着时间的推移,会加入薯条,然后是冰淇淋圣代,然后是沙拉,馅饼,葡萄 酒,素食意大利面,牛排,啤酒,无穷无尽,直到成为一顿大餐。食客可以在那家餐厅 找到过去吃过的东西,尽管总的来说这样做可能没什么意义。这样做的坏处是,用餐 者为每次晚餐支付的宴会费用不断增加。 RISC-V的不同寻常之处,除了在于是最近诞生的和开源的以外,还在于:和几乎所 有以往的ISA不同,是模块化的。核心是一个名为RV32I的基础ISA,运行一个完整 的软件栈。RV32I是固定的,永远不会改变。这为编译器编写者,操作系统开发人员和汇 编语言程序员提供了稳定的目标。模块化来源于可选的标准扩展,根据应用程序的需要, 硬件可以包含或不包含这些扩展。这种模块化特性使得RISC-V具有了袖珍化、低能耗的特点,而这对于嵌入式应用可能至关重要。RISC-V编译器得知当前硬件包含哪些扩展后,便 可以生成当前硬件条件下的最佳代码。惯例是把代表扩展的字母附加到指令集名称之后作 为指示。例如,RV32IMFD将乘法(RV32M),单精度浮点(RV32F)和双精度浮点 (RV32D)的扩展添加到了基础指令集(RV32I)中。 继续用刚才的类比来说,RISC-V提供的是菜单,而不是一顿应有尽有的自助餐。 主厨只需要烹饪顾客需要的东西(而不是每次都做出一顿盛宴),顾客只需要按订单 付费。RISC-V无需仅仅为了市场吸引力而添加指令。RISC-V基金会会决定什么时候在菜单 里添加新的选项,而只会出于技术原因这样做,而且要在由软硬件专家组成的委员会 进行专门的公开讨论以后才会添加。即使那些新选择出现在了菜单上,仍是可选的, 不会像在增量ISA中那样成为未来所有实现的必要组成部分。
2. RISC-V 汇编语言
给看似困难的问题找到简单的解法往往让人心满意足,而且最好的解法常常是都简单的。 ——Ivan Sutherland 3.1 导言 图 3.1 表明了从 C 程序翻译成为可以在计算机上执行的机器语言程序的四个经典步骤。 这一章的内容包括了后三个步骤,不过要从汇编语言在 RISC-V 函数调用规范中的作用 开始说起。
在这里插入图片描述

图 1 从 C 源代码翻译为可运行程序的步骤。这是从逻辑上进行的划分,实际中一些步骤会被结合起 来,加速翻译过程。在这里使用了 Unix 的文件后缀命名习惯,分别对应 MS-DOS 中 的.C, .ASM, .OBJ, .LIB 和.EXE。
在这里插入图片描述

图 2 RV32I 为程序和数据分配内存。图中的顶部是高地址,底部是低地址。在 RISC-V 软件规范中, 栈指针(sp)从 0xbffffff0 开始向下增长;程序代码段从 0x00010000 开始,包括静态链接库;程序代码 段结束后是静态数据区,在这个例子中假设从 0x10000000 开始;然后是动态数据区,由 C 语言中的 malloc()函数分配,向上增长,其中包含动态链接库。

参考链接:
http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【The RISC-V READER】中文版 v2.1 欢迎! RISC-V 自 2011 年推出以来迅速地普及。我们认为一个精简的程序员指南将进一步促进 它的发展,并促使新人理解为什么它是一个有吸引力的指令集,以及它与传统指令集架构 (ISA)的不同。 我们的灵感部分来源于其它指令集架构书籍,但我们希望 RISC-V 自身的简洁性能让我 们写得比 See MIPS Run 一类 500 多页的详尽书籍少很多。我们把全书的长度控制到了前述 的三分之一,至少在这个意义上我们成功了。实际上,介绍模块化 RISC-V 指令集的每个组 成部分的十章只用了 100 页——即便为了有助于快速阅读,平均每页用到了一张图片(一共 75 张)。 在解释指令集设计的原理之后,我们将阐述 RISC-V 架构师在设计指令集的时候,如何 在过去 40 年的指令集的基础上取其精华,去其糟粕。要评判一个指令集架构,不仅要看它 包括了什么,而且要看它省略了什么。 随后我们会按顺序介绍这个模块化架构的每个组成部分。每一章都会包含一个用 RISCV 汇编语言写成的程序,这是为了展示那一章所述的指令的用法,这样有助于汇编语言程序 员学习 RISC-V 汇编。有时,我们还会列出用 ARM,MIPS 和 x86 写成的同样的程序,从而 突出 RISC-V 在简洁性,以及成本、功耗、性能方面的优势。 为了增加本书的趣味性,我们在页边加入了将近 50 个侧边栏,这里面放了一些有关书 中内容的评论,希望它们能带来一些乐趣。我们还在页边放了大约 75 个图片,用于展示设 计良好 ISA 的例子。(我们充分利用了侧边的空间!)最后,对于那些愿意钻研的读者,我们 在全书中加入了大概 25 段补充说明。如果你对某个主题感兴趣,可以深入研究这些可选部 分。略过这些部分不会影响对书中的其他内容的理解,所以如果你对他们不感兴趣的话,尽 管跳过它们。对于计算机体系结构爱好者,我们援引的 25 篇论文和书籍能够开阔你的视野。 在写这本书的过程中,我们从它们当中学到了很多东西!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值