RSIC-V指令集——spec閱讀記錄
1. 指令編碼型別
- RISC-V本身就是模組化的指令集,可以靈活的進行組合,具有相當多的可配置型。
例如某處理器核支援 RV32GC(RV64IMAFDC) 模組化指令集:
32位:32位地址空間,即通用暫存器寬度為32位
I:基本整數指令子集,支援32個通用整數暫存器
M:支援整數乘法與除法指令
A:支援儲存器原子操作指令和Load-Reserved / Store-Conditional指令
F:支援單精度浮點指令
D:支援雙精度浮點指令
C:支援編碼長度為16位的壓縮指令,提高程式碼密度
Machine Mode Only:只支援機器模式
RISCV架構推薦使用地址對齊的儲存器讀寫操作,但也支援地址非對齊的操作。
RISCV僅支援小端模式的memory讀寫
RISCV讀寫儲存器不支援自增或自減模式。
- 指令格式
在RSIC-V中,所有指令都是32位的,並且在儲存器中必須在4位元組邊界對齊。由於是RSIC架構,指令關於原暫存器和目的暫存器的編碼格式固定。
在基本ISA中,分別有一下四種指令格式,當然在此基礎上有幾種變種。
rs1,rs2是源暫存器地址,rd是目的暫存器地址,opcode是指令操作碼,funct是功能碼(操作碼的資料寬度)
例如sw rs2, imm(rs1)
2. 指令型別
有關指令執行參考連結:https://blog.csdn.net/qq_39815222/article/details/106969845
- 儲存器訪問指令
資料傳送指令只能完成讀一個運算元或寫一個運算元,並不能進行運算。
見連結:https://blog.csdn.net/qq_39815222/article/details/107224255
- 邏輯算術指令
算術指令能完成讀兩個暫存器、對它們進行運算和寫回運算的操作。
- 控制轉移指令
轉移指令的呼叫可分為儲存現場和恢復現場,RISCV呼叫則較為簡潔,它使用公用的程式庫(專門用來儲存和恢復現場),省去了儲存和恢復的諸多指令。
儲存現場:進入子程式後要用store指令,將當前上下文(通用暫存器等的值)儲存到系統儲存器的堆疊區(後入先出)
恢復現場:退出子程式時,用load指令將之前儲存的上下文從系統儲存器的堆疊區讀出來
3. RISC-V定址空間劃分
- 資料和指令定址空間
例如64位的RISC-V架構,指令和資料定址空間為2的32次方。 - CSR定址空間
專用的12為地址編碼空間。
4. RISC-V暫存器檔案
暫存器檔案又稱為暫存器堆,是CPU中多個暫存器組成的陣列,RSIC-V暫存器檔案主要包含通用暫存器組、控制狀態暫存器和一些特殊暫存器
- 通用暫存器組
如果指令集定義為I,則包含32個通用暫存器,分別用x0-x31表示
若定義為E(嵌入式架構),則包含16個通用整數暫存器,僅支援32位,,分別用x0-x15表示
若定義為F/D(單精度/雙精度),則另外增加32個獨立的通用浮點暫存器,分別用f0-f31表示 - 控制狀態暫存器(CSR)
用於配置和記錄一些執行的狀態,CSR是Core內的暫存器,使用專門的12位地址編碼空間。 - 程式計數器(PC)
PC是指令存放在儲存器中的地址位置。可以反映在某些通用暫存器或特殊暫存器中。但在RSIC-V架構中,程式要讀取PC值,只能通過某些指令間接獲得,如AUIPC指令。
5. RSIC-V工作模式
- 機器模式
必選項,另外兩種可選,通常為簡單的嵌入式系統 - 監督模式
若支援該模式,另外兩種須均支援,該模式下可以實現類似Unix的作業系統 - 使用者模式
此類系統實現使用者和機器模式的區分,從而實現資源保護
相關文章
- iOS PropertyList 文件閱讀記錄iOS
- RIPS原始碼閱讀記錄(二)原始碼
- Tomcat 原始碼閱讀記錄(1)Tomcat原始碼
- presto官網閱讀記錄: Functions and Operators 部分RESTFunction
- 【閱讀記錄】App介紹(記錄你的每一次讀書進度)APP
- Redis閱讀目錄Redis
- String(JDK1.8)原始碼閱讀記錄JDK原始碼
- c語言-記錄閱讀《c缺陷與陷阱》C語言
- 《C++ 沉思錄》閱讀筆記——代理類薦C++筆記
- 閱讀筆記筆記
- JDK原始碼閱讀:Object類閱讀筆記JDK原始碼Object筆記
- 【閱讀筆記:字典】筆記
- gdbOF閱讀筆記筆記
- 閱讀筆記5筆記
- 閱讀筆記4筆記
- 閱讀筆記3筆記
- 閱讀筆記2筆記
- 閱讀筆記7筆記
- 閱讀筆記03筆記
- 閱讀筆記02筆記
- 閱讀筆記8筆記
- 閱讀筆記1筆記
- 深入解析Oracle第四章 自用閱讀記錄Oracle
- 《learn to count everything》論文閱讀、實驗記錄
- JDK原始碼閱讀(5):HashTable類閱讀筆記JDK原始碼筆記
- JDK原始碼閱讀(4):HashMap類閱讀筆記JDK原始碼HashMap筆記
- JDK原始碼閱讀:String類閱讀筆記JDK原始碼筆記
- 《快速閱讀術》讀書筆記筆記
- Vue2.x 響應式部分原始碼閱讀記錄Vue原始碼
- JDK原始碼閱讀(7):ConcurrentHashMap類閱讀筆記JDK原始碼HashMap筆記
- 《Clean Code》閱讀筆記筆記
- Dependencies for Graphs 閱讀筆記筆記
- javascript閱讀筆記01JavaScript筆記
- #EffectiveJava筆記#閱讀心得Java筆記
- 閱讀影片方法筆記筆記
- 閱讀部落格--《我們應當怎樣做需求分析?》筆記記錄筆記
- 機器閱讀理解打破人類記錄,解讀阿里iDST SLQA 技術阿里
- MapReduce 論文閱讀筆記筆記