找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 44638|回復(fù): 57
打印 上一主題 下一主題
收起左側(cè)

RISC-V指令集詳解 RISCV-spec-v2.1中文版下載(共114頁pdf)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
RISC-V架構(gòu)指令集的手冊,目前是唯一的中文版,翻譯大作

序言

這是描述 RISC-V 用戶級體系結(jié)構(gòu)文檔的 2.1 版。注意已經(jīng)凍結(jié)的基本用戶級 ISA 和 2.0版的IMAFDQ擴(kuò)展從該文檔的上一個(gè)版本[30]以來并沒有發(fā)生變化,但是填充了一些規(guī)范的“空洞”以及改善了文檔。對軟件約定做了一些改變。
  對注釋部分做了大量地添加和改進(jìn)。
  每一章有單獨(dú)的版本號。
  修改了>64位的長指令編碼,以避免在非常長的指令格式里移動(dòng) rd區(qū)分符。
  現(xiàn)在使用基本整數(shù)格式來描述 CSR 指令,引入了計(jì)數(shù)器寄存器,不同于 (以前版本)僅在后面的浮點(diǎn)部分(和特權(quán)體系結(jié)構(gòu)手冊中)引入。
  SCALL指令和 SBREAK 指令被分別重命名為 ECALL指令和EBREAK 指令。它們的編碼和功能并沒有改變。
  澄清了浮點(diǎn)NaN 的處理,以及一個(gè)新的規(guī)定的NaN值。
  澄清了浮點(diǎn)到整數(shù)轉(zhuǎn)換溢出時(shí)的返回值。
  澄清了LR/SC 允許的成功和要求的失敗,包括在序列中使用壓縮指令。
  一個(gè)新的RV32E 基本ISA提案,可減少整數(shù)寄存器數(shù)量。
  修訂了調(diào)用約定。
  放松了軟浮點(diǎn)調(diào)用約定的棧對齊,描述了 RV32E調(diào)用約定。
  一個(gè)修訂的C壓縮擴(kuò)展提案,版本1.9。

22.1  到 ISA手冊 1.0 版本以前的歷史
RISC-V ISA和指令集手冊構(gòu)建于幾個(gè)早期的項(xiàng)目。管理員級機(jī)器的幾個(gè)方面和數(shù)據(jù)手冊的整個(gè)格式,可以追溯到始于1992年的UC Berkeley和ICSI的T0(Torrent-0)向量微處理器項(xiàng)目。T0是一款基于MIPS-II ISA的向量處理器,其主要體系結(jié)構(gòu)設(shè)計(jì)師、RTL設(shè)計(jì)師是Krste Asanović,主要的VLSI實(shí)現(xiàn)者是Brian Kingsbury、Bertrand Irrisou。ICSI的David Johnson是T0 ISA設(shè)計(jì)、部分管理員模式、手冊文本的主要貢獻(xiàn)者。John Hauser為T0 ISA設(shè)計(jì)提供了大量的反饋。

在MIT始于2000的Scale(Software-Controlled Architecture for Low Energy),是在T0項(xiàng)目基礎(chǔ)上構(gòu)建的,修訂了管理員級接口,并通過丟棄分支延遲槽而脫離了MIPS標(biāo)量ISA。MIT的Scale Vector-Thread處理器主要體系結(jié)構(gòu)設(shè)計(jì)師是Ronny Krashinsky和Christopher Batten,而Mark Hampton負(fù)責(zé)把基于GCC的編譯器和工具移植到了Scale。 在2002年秋季學(xué)期,一個(gè)T0 MIPS標(biāo)量處理器規(guī)范的修訂版本(MIPS-6371)被用于新版本的MIT 6.371 “VLSI概述”課程教學(xué),教師是Chris Terman和Krste Asanović。 Chris Terman完成了絕大部分課程實(shí)驗(yàn)的材料(課程并沒有TA。。這個(gè)6.371課程在2005年春季,發(fā)展成為MIT的6.884“復(fù)雜數(shù)字設(shè)計(jì)”試行課程,教師是Arvind和Krste Asanović,后來發(fā)展成6.375春季正式課程。一個(gè)稱為SMIPS的簡化版Scale基于MIPS的標(biāo)量ISA,被用于6.884/6.375課程。Christopher Batten作為最早的TA,圍繞SMIPS ISA開發(fā)了大量的文檔和實(shí)驗(yàn)材料。這些SMIPS實(shí)驗(yàn)材料被TA Yunsup Lee采用并增強(qiáng), 在2009年秋季在UC Berkeley的CS250 “VLSI系統(tǒng)設(shè)計(jì)”課程中使用,教師是John Wawrzynek、Krste Asanović和John Lazzaro。 Marven(Malleable Array of Vector-thread ENgines)是第二代向量線程體系結(jié)構(gòu)。這個(gè)設(shè)計(jì)是由Christopher Batten領(lǐng)導(dǎo),當(dāng)時(shí)他還是于2007年夏開始的UC Berkeley訪問學(xué)者。一名來自Hitachi的訪問專家Hidetaka Aoki,為早期的Marven ISA和微體系結(jié)構(gòu)提供了大量的反饋。Marven結(jié)構(gòu)是基于Scale結(jié)構(gòu)的,但是Marven ISA更加遠(yuǎn)離了Scale定義的MIPS ISA變種,它有一個(gè)統(tǒng)一的浮點(diǎn)和整數(shù)寄存器文件。Marven被設(shè)計(jì)用于支持備選的數(shù)據(jù)并行加速器實(shí)驗(yàn)。Yunsup Lee是各種Marven向量單元的主要實(shí)現(xiàn)者,Rimas Avižienis是各種Marven標(biāo)量單元的實(shí)現(xiàn)者。Yunsup Lee和Christopher Batten將GCC移植到新的Marven ISA上。Christopher Celio提供了Marven的一個(gè)傳統(tǒng)向量指令集(“Flood”)變種的初始定義。


基于所有前面這些項(xiàng)目,RISC-V ISA定義始于2010年夏。RISC-V 32位指令子集的一個(gè)初始版本被用于UC Berkeley 2010年秋的CS250“VLSI系統(tǒng)設(shè)計(jì)”課程,Yunsup Lee是課程的TA。RISC-V與早期受MIPS啟發(fā)的設(shè)計(jì)完全不同。John Hauser為浮點(diǎn)ISA定義做了貢獻(xiàn)。



22.2  從 ISA手冊 2.0 版本以來的歷史

首款被制造的RISC-V處理器使用Verilog書寫的,并作為Raven-1測試芯片,于2011年在ST的預(yù)先量產(chǎn)28nm FDSOI工藝上制造。在Krste Asanović的指導(dǎo)下,Yunsup Lee和Andrew Waterman研發(fā)了兩個(gè)內(nèi)核,并一同被制造:1)一個(gè)具有錯(cuò)誤檢測觸發(fā)器的RV64標(biāo)量內(nèi)核,2)一個(gè)具有64位浮點(diǎn)向量單元的RV64內(nèi)核。最開始的微體系結(jié)構(gòu)被稱為“火車失事(TrainWreck)”,主要是因?yàn)槭褂貌怀墒斓脑O(shè)計(jì)庫在短時(shí)間內(nèi)完成了設(shè)計(jì)。 接著,一個(gè)全新的、按序、去耦合RV64內(nèi)核微體系結(jié)構(gòu),在Krste Asanović指導(dǎo)下,由Andrew Waterman、Rimas Avižienis和Yunsup Lee研發(fā)出來,繼續(xù)鐵軌模式,代號“火箭(Rocket)”,按照George Stephenson成功的蒸汽機(jī)車設(shè)計(jì)而命名。Rocket是使用Chisel語言書寫的,Chisel是由UC Berkeley開發(fā)的一種新的硬件設(shè)計(jì)語言。Rocket中的IEEE浮點(diǎn)單元是由John Hauser、Andrew Waterman和Brian Richards開發(fā)的。由此,Rocket被進(jìn)一步修正和改進(jìn),并2次在28nm FDSOI工藝上制造(Raven-2、Raven-3),為一個(gè)光子學(xué)項(xiàng)目而5次在IBM 45nm SOI工藝上制造(EOS14、EOS16、EOS18、EOS20、EOS22),F(xiàn)在正在做的工作就是將Rocket設(shè)計(jì)做成一個(gè)可參數(shù)化的RISC-V處理器生成器。 EOS14-EOS22芯片包含了一個(gè)早期版本的Hwacha,它是一個(gè)64位IEEE  浮點(diǎn)向量單元,由Yunsup Lee、Andrew Waterman、Huy Vo、Albert Ou、Quan Nguyen、Stephen Twigg在Krste Asanović的指導(dǎo)下研發(fā)的。EOS16-EOS22包含了具有cache一致性協(xié)議的雙核,在Krste Asanović的指導(dǎo)下由Henry Cook、 Andrew Waterman研發(fā)。 EOS14芯片成功地運(yùn)行在1.25GHz,EOS16芯片遭受IBM pad庫的一個(gè)bug影響,EOS18和EOS20成功地運(yùn)行在1.35GHz。 Raven測試芯片的貢獻(xiàn)者包括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測試芯片的貢獻(xiàn)者包括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開發(fā)了C++ ISA仿真器“Spike”,作為研發(fā)過程中的黃金模型,其名字來源于在US橫貫大陸的鐵路竣工慶典上所使用的黃金鐵道釘。Spike已經(jīng)成為一個(gè)BSD開源項(xiàng)目。

AndrewWaterman完成了一個(gè)具有初步RISC-V壓縮指令集設(shè)計(jì)的碩士論文[28]。
完成了各種各樣的RISC-V FPGA實(shí)現(xiàn),主要是Par Lab項(xiàng)目研究的集成演示的一部分。最新的FPGA設(shè)計(jì)具有3個(gè)cache一致性的RV64IMA處理器,運(yùn)行了一個(gè)研究用的操作系統(tǒng)。FPGA實(shí)現(xiàn)的貢獻(xiàn)者包括Andrew Waterman、Yunsup Lee、Rimas Avižienis和Krste Asanović。  RISC-V處理器被用于UC Berkeley的數(shù)門課程。Rocket被用于2011年秋的CS250,作為課程項(xiàng)目的基礎(chǔ),Brian Zimmer是課程TA。在2012年春本科生CS152課程上,Christopher Celio使用ChiSel語言書寫了一系列適合教學(xué)用途的RV32處理器,命名為“Sodor”,這是“托馬斯小火車”和他的小伙伴們生活的小島。這個(gè)套件包括一個(gè)微編碼內(nèi)核(microcoded core)、一個(gè)非流水內(nèi)核、2級流水內(nèi)核、3級流水內(nèi)核、5級流水內(nèi)核,并在BSD授權(quán)下公開共享。這個(gè)套件于2013年春在CS152課程中得到更新和再度使用,Yunsup Lee是課程TA,2014年春Eric Love是課程TA。Christopher Celio也開發(fā)了一個(gè)亂序執(zhí)行的RV64設(shè)計(jì),稱為BOOM(Berkeley Out-of-Order Machine),并具有流水線可視化功能,被用于CS152課程。CS152課程還使用了由Andrew Waterman和Henry Cook開發(fā)的具有cache一致性版本的Rocket內(nèi)核。
  
2013年夏,定義了RoCC(Rocket Custom Coprocessor)接口,以簡化向Rocket內(nèi)核添加定制加速器的工作。在2013年秋,Rocket和RoCC接口被大量應(yīng)用于CS250 VLSI課程,教師是Jonathan Bachrach,好幾個(gè)學(xué)生加速器項(xiàng)目是構(gòu)建在RoCC接口之上的。Hwacha向量單元作為RoCC協(xié)處理器被重寫。

兩名Berkeley本科生,Quan Nguyen和Albert Ou,在2013年春,成功的將Linux移植到RISC-V上。
在2014年1月,Colin Schmidt成功的完成了RISC-V 2.0的LLVM后端。
在2014年3月,Bluespec的Darius Rad貢獻(xiàn)了軟浮點(diǎn)ABI支持的GCC移植。
我們也注意到幾個(gè)其他的RISC-V內(nèi)核實(shí)現(xiàn),包括一個(gè)由Tommy用Verilog書寫,一個(gè)由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版本規(guī)范的初稿提出意見。


2.0 版的序言

用戶指令集體系結(jié)構(gòu)規(guī)范的第二個(gè)發(fā)布版本,我們試圖保持這個(gè)基本的用戶 ISA 加上通
用擴(kuò)展(就是IMAFD),在未來版本中保持固定不變。從這個(gè) ISA的 1.0 版本[29]以來,有如
下變化:
  ISA 被劃分為一個(gè)整數(shù)基本內(nèi)核和幾個(gè)標(biāo)準(zhǔn)擴(kuò)展。
  重新組織了指令格式,使得立即數(shù)編碼更加高效。
  基本的ISA 被定義為擁有一個(gè)小端(little-endian)的存儲器系統(tǒng),而大端、雙端作為非標(biāo)準(zhǔn)的變種。
  Load-Reserved/Store-Conditional(LR/SC)指令被添加進(jìn)原子指令集擴(kuò)展。
  AMO和LR/SC 指令可以支持釋放一致性模型(release consistency model)。
  FENCE指令提供了細(xì)粒度的存儲器和 I/O序列化(orderings)。
  加入了fetch-and-XOR的AMO(AMOXOR),對 AMOSWAP的編碼進(jìn)行了修改,以便留出空間。
  將 20 位立即數(shù)加到 PC 上的 AUIPC 指令,替換了 RDNPC 指令,AUIPC 指令只讀取當(dāng)前的PC 值。這導(dǎo)致對位置無關(guān)代碼(position-independent code)的大量簡化。
  JAL 指令現(xiàn)在被移動(dòng)到 U 類型格式,具有一個(gè)顯示的(explicit)目標(biāo)寄存器,而 J指令被 rd=x0 的 JAL 指令所代替。這個(gè)改變,消除了唯一一條需要隱式(implicit)目標(biāo)寄存器的指令,并且從標(biāo)準(zhǔn) ISA 中去掉了 J 類型指令格式。這雖然是 JAL 指令的一個(gè)附加效果,但是卻極大地減少了基本 ISA 的復(fù)雜性。
  去掉了 JALR 指令的靜態(tài)提示(static  hints)。對于使用標(biāo)準(zhǔn)調(diào)用約定編譯的代碼來說,這些提示和 rd、rs1寄存器是冗余的。
JALR 指令現(xiàn)在清除了計(jì)算出來的目標(biāo)地址的最低位,以簡化硬件并允許在函數(shù)指針中存儲附加信息。
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指令,用于獨(dú)立地訪問fcsr寄存器的舍入模式和異常標(biāo)志。
FMV.X.S、FMV.X.D 指令現(xiàn)在使用 rs1 作為源操作數(shù),而不是 rs2。這樣可以簡化數(shù)據(jù)通路設(shè)計(jì)。
新增了FCLASS.S、FCLASS.D 浮點(diǎn)指令。
采用了一種更簡單的 NaN生成和傳播模式。
對于 RV32I,系統(tǒng)性能計(jì)數(shù)器被擴(kuò)展成 64 位寬度,可以單獨(dú)讀取高 32 位和低 32位。
定義了規(guī)定的(Canonical)NOP 和MV指令編碼。
對于48位、64位和大于64位指令,定義了標(biāo)準(zhǔn)指令長度編碼。 新增了一個(gè)128位地址空間變種RV128 的描述。
32位基本指令格式中的大部分操作碼分配給用戶自定義的定制擴(kuò)展。
一個(gè)印刷錯(cuò)誤被糾正:store的源操作數(shù)來源于 rd,其實(shí)應(yīng)該來源于 rs2。


完整的pdf格式文檔51黑下載地址(共114頁):
51hei_riscv-spec-v2.1中文版.pdf (3.65 MB, 下載次數(shù): 711)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂4 踩
回復(fù)

使用道具 舉報(bào)

57#
ID:31937 發(fā)表于 2025-4-23 08:51 | 只看該作者
感謝分享 這個(gè)不錯(cuò)
回復(fù)

使用道具 舉報(bào)

56#
ID:528105 發(fā)表于 2024-5-29 10:18 | 只看該作者
感謝樓主的分享!
回復(fù)

使用道具 舉報(bào)

55#
ID:988845 發(fā)表于 2021-12-6 21:23 | 只看該作者
資料稍有點(diǎn)老,但是還不錯(cuò)!

現(xiàn)在英文原版已經(jīng)升級到v2.2了!
回復(fù)

使用道具 舉報(bào)

54#
ID:402243 發(fā)表于 2021-6-9 14:21 | 只看該作者
感謝分享 這個(gè)不錯(cuò)啊
回復(fù)

使用道具 舉報(bào)

53#
ID:699392 發(fā)表于 2021-5-22 09:00 | 只看該作者
下下來看看,iar好像出了編譯器,就是不能下載
回復(fù)

使用道具 舉報(bào)

52#
ID:388929 發(fā)表于 2021-3-15 17:51 | 只看該作者
是不是真的不錯(cuò)呀,我也下來看看,先感謝樓主分享
回復(fù)

使用道具 舉報(bào)

51#
ID:486478 發(fā)表于 2021-3-4 18:56 | 只看該作者
這是個(gè)好的資料,學(xué)習(xí)下。
回復(fù)

使用道具 舉報(bào)

50#
ID:887720 發(fā)表于 2021-3-2 16:11 | 只看該作者
thanks ....
回復(fù)

使用道具 舉報(bào)

49#
ID:813783 發(fā)表于 2020-8-13 10:56 | 只看該作者
真好太有用了
回復(fù)

使用道具 舉報(bào)

48#
ID:57610 發(fā)表于 2020-7-23 10:45 | 只看該作者
這個(gè)資料找了好久了,終于在這里找到了
回復(fù)

使用道具 舉報(bào)

47#
ID:310590 發(fā)表于 2020-5-30 14:53 | 只看該作者
下載學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

46#
ID:691977 發(fā)表于 2020-2-11 11:20 | 只看該作者
新人,膜拜一下吧
回復(fù)

使用道具 舉報(bào)

45#
ID:686957 發(fā)表于 2020-1-17 15:53 | 只看該作者
怎么下啊,我是新手~
回復(fù)

使用道具 舉報(bào)

44#
ID:670755 發(fā)表于 2019-12-22 22:17 | 只看該作者
好東西,學(xué)習(xí)一下!
回復(fù)

使用道具 舉報(bào)

43#
ID:469581 發(fā)表于 2019-12-18 09:46 | 只看該作者
是一份非常不錯(cuò)的資料,
回復(fù)

使用道具 舉報(bào)

42#
ID:664799 發(fā)表于 2019-12-16 09:05 | 只看該作者
下載一下
回復(fù)

使用道具 舉報(bào)

41#
ID:657323 發(fā)表于 2019-12-6 10:06 | 只看該作者
下載看看
回復(fù)

使用道具 舉報(bào)

40#
ID:655737 發(fā)表于 2019-12-4 10:36 | 只看該作者
下載看看
回復(fù)

使用道具 舉報(bào)

39#
ID:653606 發(fā)表于 2019-12-1 16:46 | 只看該作者
非常感謝,E文不行,中文版下載下來學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

38#
ID:650309 發(fā)表于 2019-11-26 21:13 | 只看該作者
下載一個(gè)看一看
回復(fù)

使用道具 舉報(bào)

37#
ID:650309 發(fā)表于 2019-11-26 21:08 | 只看該作者
真好太有用了
回復(fù)

使用道具 舉報(bào)

36#
ID:406280 發(fā)表于 2019-11-12 19:13 | 只看該作者
謝謝分享,下來學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

35#
ID:633131 發(fā)表于 2019-10-31 10:03 | 只看該作者
謝謝分享,學(xué)習(xí)一下~
回復(fù)

使用道具 舉報(bào)

34#
ID:628088 發(fā)表于 2019-10-22 10:16 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

33#
ID:158709 發(fā)表于 2019-10-17 11:23 | 只看該作者
感謝分享,不錯(cuò)
回復(fù)

使用道具 舉報(bào)

32#
ID:624510 發(fā)表于 2019-10-15 15:24 | 只看該作者
下載學(xué)習(xí),謝謝分享
回復(fù)

使用道具 舉報(bào)

31#
ID:613525 發(fā)表于 2019-9-19 11:55 | 只看該作者
好東西
回復(fù)

使用道具 舉報(bào)

30#
ID:603039 發(fā)表于 2019-8-26 09:50 | 只看該作者
下載學(xué)習(xí)一下。
回復(fù)

使用道具 舉報(bào)

29#
ID:603039 發(fā)表于 2019-8-23 13:10 | 只看該作者
感謝分享資源。
回復(fù)

使用道具 舉報(bào)

28#
ID:305812 發(fā)表于 2019-7-30 13:56 | 只看該作者
感謝分享 這個(gè)不錯(cuò)啊
回復(fù)

使用道具 舉報(bào)

27#
ID:71505 發(fā)表于 2019-7-4 13:13 | 只看該作者
這個(gè)太牛了,好好研讀
回復(fù)

使用道具 舉報(bào)

26#
ID:577121 發(fā)表于 2019-7-3 14:05 | 只看該作者
如何下載
回復(fù)

使用道具 舉報(bào)

25#
ID:409986 發(fā)表于 2019-7-1 17:29 | 只看該作者
感謝分享 這個(gè)不錯(cuò)啊
回復(fù)

使用道具 舉報(bào)

24#
ID:572758 發(fā)表于 2019-6-26 18:00 | 只看該作者
我無法閱讀這個(gè)Pdf文件,不知道是怎么回事
回復(fù)

使用道具 舉報(bào)

23#
ID:558457 發(fā)表于 2019-6-9 20:37 | 只看該作者
新人報(bào)道,膜拜一下
回復(fù)

使用道具 舉報(bào)

22#
ID:541753 發(fā)表于 2019-5-18 22:57 | 只看該作者
下載一個(gè)看看
回復(fù)

使用道具 舉報(bào)

21#
ID:208298 發(fā)表于 2019-5-8 11:19 | 只看該作者
好東西,謝謝分享
回復(fù)

使用道具 舉報(bào)

20#
ID:146170 發(fā)表于 2019-5-5 10:44 | 只看該作者
這個(gè)下載回來看看
回復(fù)

使用道具 舉報(bào)

19#
ID:508083 發(fā)表于 2019-4-9 17:33 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

18#
ID:489720 發(fā)表于 2019-3-13 09:54 | 只看該作者
想看看呢,,,,,,,,,
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表