RISC V 指令格式

2021-10-03 18:03:28 字數 2186 閱讀 4730

risc-v 指令集架構(isa)作為新一代開源指令集架構,是乙個最新的、簡約的、清晰的、開源的指令集架構。risc-v 指令集架構的目標是讓它在最小的到最快的所有計算機裝置上都能夠有效工作。risc-v 指令集架構強調簡潔性來保證它的低成本,同時有著大量的暫存器和透明的指令執行速度,從而幫助編譯器和組合語言程式設計師將實際的重要問題轉換為適當的高效**。

計算機指令即:彙編指令**

計算機指令是能夠被計算機識別並執行的二進位制**,它規定了計算機能完成的某種操作;

操作碼運算元(位址碼)

操作碼opcode

位址碼或者直接給出運算元

或者指出運算元的儲存器位址或暫存器位址(即暫存器名)

根據指令中操作碼的性質,運算元又分為源運算元和目的運算元;

例如:在一般的加法指令中又3個運算元,其中加法和被加數為源運算元,計算結果為目的運算元;

在大多數指令中,指令中給出的運算元一般是存放資料的位址,而並不是具體資料本身,甚至在有些指令中實際上給出的只能是位址而不是資料;

每一條指令的位址碼個數是不同的

計算機指令所佔的位元組數是各不相同的,只佔乙個位元組的指令稱為單位元組指令,佔兩個位元組的指令稱為雙位元組指令,一般來說,如果指令中的操作碼和運算元(即位址碼)共佔 n 個位元組,則稱該指令為 n 位元組指令,risc-v指令集的所有的指令都是32位長度,這簡化了指令解碼的工作。

arm-32 和 x86-32 都有許多不同的指令格式,這使得解碼部件在硬體中實現較昂貴,在中高階處理器設計中容易帶來效能挑戰。

risc-v 指令具有六種基本指令格式:

為方便程式設計師,所有位全部為0 是非法的 rv32i 指令,因此試圖跳轉到被清零的記憶體區域的錯誤跳轉將會立即觸發異常,這可以協助除錯;類似的所有位全部都是1的指令也是非法指令,它將捕獲其他常見的錯誤。

risc-v 指令提供3個暫存器運算元,而不像 x86-32一樣,讓源運算元和目的運算元共享乙個字段。讓乙個操作天然就需要有三個不同的運算元,但是指令集架構(isa)只提供了兩個運算元時,編譯器或者彙編程式設計師就需要多使用一條 move 指令來儲存目的暫存器的值。

在 risc-v 中對於所有指令,要讀寫的暫存器的識別符號總是在同乙個位置,這不僅對解碼部件要求降低,而且也意味著在解碼指令之前,就可以先開始訪問暫存器。

指令格式中的立即數字段總是符號擴充套件,符號位總是在指令中最高位,這意味著可能成為關鍵路徑的立即數符號擴充套件,可以在指令解碼之前進行。

指令中運算元的真實位址稱為有效位址,它是由定址方式和形式位址共同來決定的。

指令定址分為順序定址和跳轉定址兩種。

常見的資料定址方式包括立即定址、直接定址、隱含定址以及更複雜的定址方式,如:間接定址、暫存器定址、暫存器間接定址和堆疊定址等方式。

計算機的工作就是自動快速地執行程式。在計算機中,用程式計數器(pc)來決定程式中各條指令的執行順序。在計算機開始執行程式時,程式計算器為該執行程式的第一條指令所在的記憶體單元位址,此後按照如下步驟依次執行程式中的各指令。

取指令按照程式計數器中的位址,從記憶體器中取出當前要執行的指令送到指令暫存器;

解析指令

對指令暫存器中的指令進行解析,由解碼器對指令中的操作碼進行解碼,將指令中的操作碼轉換成相應的控制資訊。由指令中的位址碼確定運算元存放的位址;

執行指令

由操作控制電路發出完成該操作所需要的一系列控制資訊,對由源位址碼所指出的源運算元做該指令所要求的的操作,並將操作結果存放到由目的位址碼所指出的地方。

修改程式計數器

一條指令執行完後,根據程式的要求修改程式計算器(pc)的值,如果當前執行完的指令中不產生轉移位址,則將程式計數器(pc)加 n (當前執行完的指令是 n 位元組指令);如果當前執行完的指令是轉移指令,則將轉移位址送入程式計數器,最後轉(1)繼續執行。

cpu 從記憶體中取出一條指令解析並執行,一條指令執行完後,再從記憶體取出下一條指令分析並執行。cpu 不斷地取指令、分析指令、執行指令,這就是程式的執行過程。

RISC V指令集介紹 整數基本指令集

前段時間在修改 picorv32 核心 乙個riscv 32的cpu核心 閱讀了一下riscv指令集的手冊。在此,做一下簡單記錄。rv32i 32位risc v整數指令集 1.暫存器 32個x暫存器,rv32下x reg是32位寬 x0 硬連線 常數0 x1 x31 31個通用reg pc 額外的使...

關於RISCV儲存器訪問指令的分析

risc v 32i 指令訪問儲存器指令有load和store兩類。這裡說的load就是從儲存器memory裡面讀出資料到暫存器組register files。而store正式相反的方向。無論是load還是store我總結都有如下特點 1,位址的生成都是乙個暫存器的數值 乙個立即數的偏移量 此立即數...

看到乙個RISC V指令集的評論

來科普一下risc v指令集吧。1 riscv 密度大約是arm的50 左右,同樣計算所需週期是arm的150 300 所以risc v感覺只能用於物聯網等需要低功耗簡單cpu的場景 2 riscv自身的開源性質並不妨礙arm intel 高通 三星 amd 蘋果這樣的公司繼續在riscv佔據優勢。...