这是 os summer of code 2020 每日记录的一部分:
github地址:https://github.com/yunwei37/os-summer-of-code-daily
参考:RISC-V 手册 一本开源指令集的指南
第一章 为什么要有 RISC-V
RISC-V的目标是成为一个通用的指令集架构(ISA):
- 它要能适应包括从最袖珍的嵌入式控制器,到最快的高性能计算机等各种规模的处理器
- 它应该能兼容各种流行的软件栈和编程语言
- 它应该适应所有实现技术,包括现场可编程门阵列(FPGA)、 专用集成电路(ASIC)、 全定制芯片, 甚至未来的设备技术
- 它应该对所有微体系结构样式都有效:例如微编码或硬连线控制;顺序或乱序执行流水线; 单发射或超标量等等
- 它应该支持广泛的专业化,成为定制加速器的基础,因为随着摩尔定律的消退,加速器的重要性日益提高。
- 它应该是稳定的,基础的指令集架构不应该改变。
它是一个最近诞生的指令集架构,也是一个开源的指令集架构。
模块化与增量型 ISA
RISC-V的不同寻常之处,除了在于它是最近诞生的和开源的以外,还在于:和几乎所有以往的ISA不同,它是模块化的。
它的核心是一个名为RV32I的基础ISA,RV32I是固定的,永远不会改变。
模块化来源于可选的标准扩展,根据应用程序的需要,硬件可以包含或不包含这些扩展。
ISA 设计 101
架构师在设计 ISA 时的基本原则和必须做出的权衡:
- 成本(美元硬币)
- 简洁性(轮子)
- 性能(速度计)
- 架构和具体实现的分离(分开的两个半圆)
- 提升空间(手风琴)
- 程序大小(相对的压迫着一条线的两个箭头)
- 易于编程/编译/链接(儿童积木“像 ABC 一样简单”)
第二章 RV32I: RISC-V 基础整数指令集
- 32 位字节可寻址的地址空间<