找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 38859|回复: 55
收起左侧

RISC-V指令集详解 RISCV-spec-v2.1中文版下载(共114页pdf)

  [复制链接]
ID:342727 发表于 2018-6-1 10:38 | 显示全部楼层 |阅读模式
RISC-V架构指令集的手册,目前是唯一的中文版,翻译大作
0.png
序言

这是描述 RISC-V 用户级体系结构文档的 2.1 版。注意已经冻结的基本用户级 ISA 和 2.0版的IMAFDQ扩展从该文档的上一个版本[30]以来并没有发生变化,但是填充了一些规范的“空洞”以及改善了文档。对软件约定做了一些改变。
  对注释部分做了大量地添加和改进。
  每一章有单独的版本号。
  修改了>64位的长指令编码,以避免在非常长的指令格式里移动 rd区分符。
  现在使用基本整数格式来描述 CSR 指令,引入了计数器寄存器,不同于 (以前版本)仅在后面的浮点部分(和特权体系结构手册中)引入。
  SCALL指令和 SBREAK 指令被分别重命名为 ECALL指令和EBREAK 指令。它们的编码和功能并没有改变。
  澄清了浮点NaN 的处理,以及一个新的规定的NaN值。
  澄清了浮点到整数转换溢出时的返回值。
  澄清了LR/SC 允许的成功和要求的失败,包括在序列中使用压缩指令。
  一个新的RV32E 基本ISA提案,可减少整数寄存器数量。
  修订了调用约定。
  放松了软浮点调用约定的栈对齐,描述了 RV32E调用约定。
  一个修订的C压缩扩展提案,版本1.9。
0.png
22.1  到 ISA手册 1.0 版本以前的历史
RISC-V ISA和指令集手册构建于几个早期的项目。管理员级机器的几个方面和数据手册的整个格式,可以追溯到始于1992年的UC Berkeley和ICSI的T0(Torrent-0)向量微处理器项目。T0是一款基于MIPS-II ISA的向量处理器,其主要体系结构设计师、RTL设计师是Krste Asanović,主要的VLSI实现者是Brian Kingsbury、Bertrand Irrisou。ICSI的David Johnson是T0 ISA设计、部分管理员模式、手册文本的主要贡献者。John Hauser为T0 ISA设计提供了大量的反馈。

在MIT始于2000的Scale(Software-Controlled Architecture for Low Energy),是在T0项目基础上构建的,修订了管理员级接口,并通过丢弃分支延迟槽而脱离了MIPS标量ISA。MIT的Scale Vector-Thread处理器主要体系结构设计师是Ronny Krashinsky和Christopher Batten,而Mark Hampton负责把基于GCC的编译器和工具移植到了Scale。 在2002年秋季学期,一个T0 MIPS标量处理器规范的修订版本(MIPS-6371)被用于新版本的MIT 6.371 “VLSI概述”课程教学,教师是Chris Terman和Krste Asanović。 Chris Terman完成了绝大部分课程实验的材料(课程并没有TA!)。这个6.371课程在2005年春季,发展成为MIT的6.884“复杂数字设计”试行课程,教师是Arvind和Krste Asanović,后来发展成6.375春季正式课程。一个称为SMIPS的简化版Scale基于MIPS的标量ISA,被用于6.884/6.375课程。Christopher Batten作为最早的TA,围绕SMIPS ISA开发了大量的文档和实验材料。这些SMIPS实验材料被TA Yunsup Lee采用并增强, 在2009年秋季在UC Berkeley的CS250 “VLSI系统设计”课程中使用,教师是John Wawrzynek、Krste Asanović和John Lazzaro。 Marven(Malleable Array of Vector-thread ENgines)是第二代向量线程体系结构。这个设计是由Christopher Batten领导,当时他还是于2007年夏开始的UC Berkeley访问学者。一名来自Hitachi的访问专家Hidetaka Aoki,为早期的Marven ISA和微体系结构提供了大量的反馈。Marven结构是基于Scale结构的,但是Marven ISA更加远离了Scale定义的MIPS ISA变种,它有一个统一的浮点和整数寄存器文件。Marven被设计用于支持备选的数据并行加速器实验。Yunsup Lee是各种Marven向量单元的主要实现者,Rimas Avižienis是各种Marven标量单元的实现者。Yunsup Lee和Christopher Batten将GCC移植到新的Marven ISA上。Christopher Celio提供了Marven的一个传统向量指令集(“Flood”)变种的初始定义。


基于所有前面这些项目,RISC-V ISA定义始于2010年夏。RISC-V 32位指令子集的一个初始版本被用于UC Berkeley 2010年秋的CS250“VLSI系统设计”课程,Yunsup Lee是课程的TA。RISC-V与早期受MIPS启发的设计完全不同。John Hauser为浮点ISA定义做了贡献。



22.2  从 ISA手册 2.0 版本以来的历史

首款被制造的RISC-V处理器使用Verilog书写的,并作为Raven-1测试芯片,于2011年在ST的预先量产28nm FDSOI工艺上制造。在Krste Asanović的指导下,Yunsup Lee和Andrew Waterman研发了两个内核,并一同被制造:1)一个具有错误检测触发器的RV64标量内核,2)一个具有64位浮点向量单元的RV64内核。最开始的微体系结构被称为“火车失事(TrainWreck)”,主要是因为使用不成熟的设计库在短时间内完成了设计。 接着,一个全新的、按序、去耦合RV64内核微体系结构,在Krste Asanović指导下,由Andrew Waterman、Rimas Avižienis和Yunsup Lee研发出来,继续铁轨模式,代号“火箭(Rocket)”,按照George Stephenson成功的蒸汽机车设计而命名。Rocket是使用Chisel语言书写的,Chisel是由UC Berkeley开发的一种新的硬件设计语言。Rocket中的IEEE浮点单元是由John Hauser、Andrew Waterman和Brian Richards开发的。由此,Rocket被进一步修正和改进,并2次在28nm FDSOI工艺上制造(Raven-2、Raven-3),为一个光子学项目而5次在IBM 45nm SOI工艺上制造(EOS14、EOS16、EOS18、EOS20、EOS22)。现在正在做的工作就是将Rocket设计做成一个可参数化的RISC-V处理器生成器。 EOS14-EOS22芯片包含了一个早期版本的Hwacha,它是一个64位IEEE  浮点向量单元,由Yunsup Lee、Andrew Waterman、Huy Vo、Albert Ou、Quan Nguyen、Stephen Twigg在Krste Asanović的指导下研发的。EOS16-EOS22包含了具有cache一致性协议的双核,在Krste Asanović的指导下由Henry Cook、 Andrew Waterman研发。 EOS14芯片成功地运行在1.25GHz,EOS16芯片遭受IBM pad库的一个bug影响,EOS18和EOS20成功地运行在1.35GHz。 Raven测试芯片的贡献者包括Yunsup Lee、Andrew Waterman、Rimas Avižienis、Brian Zimmer、Jaehwa Kwak、Ruzica Jevtić、Milovan Blagojević、Alberto Puggelli、Steven Bailey、Ben Keller、Pi-Feng Chiu、Brian Richards、Borivoje Nikolić和Krste Asanović。 EOS测试芯片的贡献者包括Yunsup Lee、 Rimas Avižienis、 AndrewWaterman、 Henry Cook、Huy Vo、Daiwei Li、Chen Sun、Albert Ou、Quan Nguyen、Stephen Twigg、Vladimir Stojanović和Krste Asanović。 Andrew Waterman和Yunsup Lee开发了C++ ISA仿真器“Spike”,作为研发过程中的黄金模型,其名字来源于在US横贯大陆的铁路竣工庆典上所使用的黄金铁道钉。Spike已经成为一个BSD开源项目。

AndrewWaterman完成了一个具有初步RISC-V压缩指令集设计的硕士论文[28]。
完成了各种各样的RISC-V FPGA实现,主要是Par Lab项目研究的集成演示的一部分。最新的FPGA设计具有3个cache一致性的RV64IMA处理器,运行了一个研究用的操作系统。FPGA实现的贡献者包括Andrew Waterman、Yunsup Lee、Rimas Avižienis和Krste Asanović。  RISC-V处理器被用于UC Berkeley的数门课程。Rocket被用于2011年秋的CS250,作为课程项目的基础,Brian Zimmer是课程TA。在2012年春本科生CS152课程上,Christopher Celio使用ChiSel语言书写了一系列适合教学用途的RV32处理器,命名为“Sodor”,这是“托马斯小火车”和他的小伙伴们生活的小岛。这个套件包括一个微编码内核(microcoded core)、一个非流水内核、2级流水内核、3级流水内核、5级流水内核,并在BSD授权下公开共享。这个套件于2013年春在CS152课程中得到更新和再度使用,Yunsup Lee是课程TA,2014年春Eric Love是课程TA。Christopher Celio也开发了一个乱序执行的RV64设计,称为BOOM(Berkeley Out-of-Order Machine),并具有流水线可视化功能,被用于CS152课程。CS152课程还使用了由Andrew Waterman和Henry Cook开发的具有cache一致性版本的Rocket内核。
  
2013年夏,定义了RoCC(Rocket Custom Coprocessor)接口,以简化向Rocket内核添加定制加速器的工作。在2013年秋,Rocket和RoCC接口被大量应用于CS250 VLSI课程,教师是Jonathan Bachrach,好几个学生加速器项目是构建在RoCC接口之上的。Hwacha向量单元作为RoCC协处理器被重写。

两名Berkeley本科生,Quan Nguyen和Albert Ou,在2013年春,成功的将Linux移植到RISC-V上。
在2014年1月,Colin Schmidt成功的完成了RISC-V 2.0的LLVM后端。
在2014年3月,Bluespec的Darius Rad贡献了软浮点ABI支持的GCC移植。
我们也注意到几个其他的RISC-V内核实现,包括一个由Tommy用Verilog书写,一个由Rishiyur Nikhil用Bluespec书写。
致谢
感谢Christopher F. Batten、Preston Briggs、Christopher Celio、David Chisnall、Stefan
Freudenberger、John Hauser、Ben Keller、Rishiyur Nikhil、Michael Taylor、Tommy Thorn和
Robert Watson为ISA 2.0版本规范的初稿提出意见。


2.0 版的序言

用户指令集体系结构规范的第二个发布版本,我们试图保持这个基本的用户 ISA 加上通
用扩展(就是IMAFD),在未来版本中保持固定不变。从这个 ISA的 1.0 版本[29]以来,有如
下变化:
  ISA 被划分为一个整数基本内核和几个标准扩展。
  重新组织了指令格式,使得立即数编码更加高效。
  基本的ISA 被定义为拥有一个小端(little-endian)的存储器系统,而大端、双端作为非标准的变种。
  Load-Reserved/Store-Conditional(LR/SC)指令被添加进原子指令集扩展。
  AMO和LR/SC 指令可以支持释放一致性模型(release consistency model)。
  FENCE指令提供了细粒度的存储器和 I/O序列化(orderings)。
  加入了fetch-and-XOR的AMO(AMOXOR),对 AMOSWAP的编码进行了修改,以便留出空间。
  将 20 位立即数加到 PC 上的 AUIPC 指令,替换了 RDNPC 指令,AUIPC 指令只读取当前的PC 值。这导致对位置无关代码(position-independent code)的大量简化。
  JAL 指令现在被移动到 U 类型格式,具有一个显示的(explicit)目标寄存器,而 J指令被 rd=x0 的 JAL 指令所代替。这个改变,消除了唯一一条需要隐式(implicit)目标寄存器的指令,并且从标准 ISA 中去掉了 J 类型指令格式。这虽然是 JAL 指令的一个附加效果,但是却极大地减少了基本 ISA 的复杂性。
  去掉了 JALR 指令的静态提示(static  hints)。对于使用标准调用约定编译的代码来说,这些提示和 rd、rs1寄存器是冗余的。
JALR 指令现在清除了计算出来的目标地址的最低位,以简化硬件并允许在函数指针中存储附加信息。
MFTX.S、MFTX.D 指令被分别命名为FMV.X.S、FMV.X.D指令,MXTF.S、MXTF.D指令被分别命名为 FMV.S.X、FMV.D.X指令。
MFFSR、 MTFSR 指令被分别命名为FRCSR、 FSCSR指令,新增了FRRM、 FSRM、
FRFLAGS和FSFLAGS指令,用于独立地访问fcsr寄存器的舍入模式和异常标志。
FMV.X.S、FMV.X.D 指令现在使用 rs1 作为源操作数,而不是 rs2。这样可以简化数据通路设计。
新增了FCLASS.S、FCLASS.D 浮点指令。
采用了一种更简单的 NaN生成和传播模式。
对于 RV32I,系统性能计数器被扩展成 64 位宽度,可以单独读取高 32 位和低 32位。
定义了规定的(Canonical)NOP 和MV指令编码。
对于48位、64位和大于64位指令,定义了标准指令长度编码。 新增了一个128位地址空间变种RV128 的描述。
32位基本指令格式中的大部分操作码分配给用户自定义的定制扩展。
一个印刷错误被纠正:store的源操作数来源于 rd,其实应该来源于 rs2。
0.png 0.png 0.png

完整的pdf格式文档51黑下载地址(共114页):
51hei_riscv-spec-v2.1中文版.pdf (3.65 MB, 下载次数: 705)
回复

使用道具 举报

ID:388976 发表于 2018-8-22 17:09 | 显示全部楼层
下载看看
回复

使用道具 举报

ID:399167 发表于 2018-9-17 18:54 | 显示全部楼层
下载一下看看
回复

使用道具 举报

ID:401186 发表于 2018-9-21 23:26 | 显示全部楼层
感谢分享 这个不错啊
回复

使用道具 举报

ID:402243 发表于 2018-9-25 16:25 | 显示全部楼层
感谢分享,不错
回复

使用道具 举报

ID:404870 发表于 2018-10-2 15:55 | 显示全部楼层
好东西,可惜刚进来,没积分
回复

使用道具 举报

ID:345365 发表于 2018-10-21 12:07 | 显示全部楼层
谢谢分享!!!!!!!!!!!!!!!!
回复

使用道具 举报

ID:417103 发表于 2018-10-29 10:23 | 显示全部楼层
很给力!
回复

使用道具 举报

ID:420195 发表于 2018-11-3 19:44 | 显示全部楼层
感谢楼主的分享
回复

使用道具 举报

ID:421016 发表于 2018-11-5 14:46 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:425251 发表于 2018-11-13 17:08 | 显示全部楼层
是一份非常不错的资料,
回复

使用道具 举报

ID:427116 发表于 2018-11-15 15:44 | 显示全部楼层
下载看看
回复

使用道具 举报

ID:440631 发表于 2018-12-6 09:07 | 显示全部楼层
急需学习一下,谢谢楼主分享
回复

使用道具 举报

ID:449501 发表于 2018-12-19 01:23 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:456354 发表于 2018-12-27 13:17 | 显示全部楼层
感觉是国产cpu追赶的好机会啊
回复

使用道具 举报

ID:468399 发表于 2019-1-15 11:12 | 显示全部楼层
下载看看啊
回复

使用道具 举报

ID:468399 发表于 2019-1-15 11:51 | 显示全部楼层
怎么下不聊啦啊
回复

使用道具 举报

ID:489720 发表于 2019-3-13 09:54 | 显示全部楼层
想看看呢,,,,,,,,,
回复

使用道具 举报

ID:508083 发表于 2019-4-9 17:33 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:146170 发表于 2019-5-5 10:44 | 显示全部楼层
这个下载回来看看
回复

使用道具 举报

ID:208298 发表于 2019-5-8 11:19 | 显示全部楼层
好东西,谢谢分享
回复

使用道具 举报

ID:541753 发表于 2019-5-18 22:57 | 显示全部楼层
下载一个看看
回复

使用道具 举报

ID:558457 发表于 2019-6-9 20:37 | 显示全部楼层
新人报道,膜拜一下
回复

使用道具 举报

ID:572758 发表于 2019-6-26 18:00 | 显示全部楼层
我无法阅读这个Pdf文件,不知道是怎么回事
回复

使用道具 举报

ID:409986 发表于 2019-7-1 17:29 | 显示全部楼层
感谢分享 这个不错啊
回复

使用道具 举报

ID:577121 发表于 2019-7-3 14:05 | 显示全部楼层
如何下载
回复

使用道具 举报

ID:71505 发表于 2019-7-4 13:13 | 显示全部楼层
这个太牛了,好好研读
回复

使用道具 举报

ID:305812 发表于 2019-7-30 13:56 | 显示全部楼层
感谢分享 这个不错啊
回复

使用道具 举报

ID:603039 发表于 2019-8-23 13:10 | 显示全部楼层
感谢分享资源。
回复

使用道具 举报

ID:603039 发表于 2019-8-26 09:50 | 显示全部楼层
下载学习一下。
回复

使用道具 举报

ID:613525 发表于 2019-9-19 11:55 | 显示全部楼层
好东西
回复

使用道具 举报

ID:624510 发表于 2019-10-15 15:24 | 显示全部楼层
下载学习,谢谢分享
回复

使用道具 举报

ID:158709 发表于 2019-10-17 11:23 | 显示全部楼层
感谢分享,不错
回复

使用道具 举报

ID:628088 发表于 2019-10-22 10:16 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:633131 发表于 2019-10-31 10:03 | 显示全部楼层
谢谢分享,学习一下~
回复

使用道具 举报

ID:406280 发表于 2019-11-12 19:13 | 显示全部楼层
谢谢分享,下来学习。
回复

使用道具 举报

ID:650309 发表于 2019-11-26 21:08 | 显示全部楼层
真好太有用了
回复

使用道具 举报

ID:650309 发表于 2019-11-26 21:13 | 显示全部楼层
下载一个看一看
回复

使用道具 举报

ID:653606 发表于 2019-12-1 16:46 | 显示全部楼层
非常感谢,E文不行,中文版下载下来学习
回复

使用道具 举报

ID:655737 发表于 2019-12-4 10:36 | 显示全部楼层
下载看看
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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