硬件软件接口 (RISC-V) Chapter 2
生活随笔
收集整理的這篇文章主要介紹了
硬件软件接口 (RISC-V) Chapter 2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
計算機組成與設計-硬件軟件接口 Chapter2
- 指令集
- RISC-V簡介
- RISC-V基本語法
- 計算機硬件的操作數
- 指令格式
- 邏輯運算
- 32個寄存器
指令集
The words of a computer’s language are called instructions, and its vocabulary is called an instruction set.
----Computer Organization and Design: The Hardware / Software Interface
RISC-V簡介
RISC-V由UC Berkeley于2010年開發,與此相對應的,MIPS誕生于1980s,Intel x86則誕生于1970s。
RISC-V基本語法
| 算術 | 加法 | add x5. x6. x7 | x5 = x6 + x7 |
| 減法 | sub x5. x6. x7 | x5 = x6 - x7 | |
| 立即數加 | addi x5. x6. 20 | x5 = x6 + 20 | |
| 數據傳輸 | 加載雙字 | ld x5. 40(x6) | x5 = Memory[x6 + 40] |
| 加載字 | lw x5. 40(x6) | ||
| 加載無符號字 | lwu x5. 40(x6) | ||
| 加載半字 | lh x5. 40(x6) | ||
| 加載無符號半字 | lhu x5. 40(x6) | ||
| 加載比特 | lb x5. 40(x6) | ||
| 加載無符號比特 | lbu x5. 40(x6) | ||
| -------- | |||
| 存儲雙字 | sd x5. 40(x6) | Memory[x6 + 40] = x5 | |
| 存儲字 | sw x5. 40(x6) | ||
| 存儲無符號字 | swu x5. 40(x6) | ||
| 存儲半字 | sh x5. 40(x6) | ||
| 存儲無符號半字 | shu x5. 40(x6) | ||
| 存儲比特 | sb x5. 40(x6) | ||
| 存儲無符號比特 | sbu x5. 40(x6) | ||
| -------- | |||
| load reserved | |||
| store conditional | |||
| load upper immediate | |||
| 邏輯 | 與 | and x5. x6. x7 | x5 = x6 & x7 |
| 或 | or x5. x6. x8 | x5 = x6 or x8 | |
| 異或 | xor x5. x6. x9 | x5 = x6 ^x9 | |
| 立即數與 | andi x5. x6. 20 | x5 = x6 & 20 | |
| 立即數或 | ori x5. x6. 20 | x5 = x6 or 20 | |
| 立即數異或 | xori x5. x6. 20 | x5 = x6 ^ 20 | |
| 移位 | 邏輯左移 | sll x5. x6. x7 | x5 = x6 << x7 |
| 立即數邏輯左移 | slli x5. x6. 3 | x5 = x6 << 3 | |
| 邏輯右移 | srl x5. x6. x7 | x5 = x6 >> x7 | |
| 算術右移 | srax5. x6 .x7 | x5 = x6 >> x7 | |
| 立即數邏輯右移 | srli x5. x6. 3 | x5 = x6 >> 3 | |
| 立即數算術右移 | srai x5. x6. 3 | x5 = x6 >> 3 | |
| 條件分支 | 相等時分支 | beq x5. x6. 100 | if (x5 == x6) go to PC + 100 |
| 不相等時分支 | bne x5. x6. 100 | if (x5 != x6) go to PC + 100 | |
| 小于則分支 | blt x5. x6. 100 | if (x5 < x6) go to PC + 100 | |
| 大于等于則分支 | bge x5. x6. 100 | if (x5 >= x6) go to PC + 100 | |
| 無符號,小于時分支 | bltu x5. x6. 100 | if (x5 < x6) go to PC + 100 | |
| 無符號,大于等于則分支 | bgeu x5. x6. 100 | if (x5 >= x6) go to PC + 100 | |
| 無條件分支 | 跳轉并鏈接 | jal x1. 100 | x1 = PC + 4 |
| 跳轉并鏈接寄存器 | jalr x1. 100(x5) | x1 = PC + 4 |
計算機硬件的操作數
- RISC-V的單個寄存器64bits寬。
- least significant bit用來指代右下的bit(圖中的0),most significant bit指代左上的bit(圖中的63)
- 每條RISC-V指令翻譯成二進制代碼之后由六個"fields"組成,分別長7,5,5,3,5,7bits。其中三個5bits用來存放三個操作數所對應的寄存器編號。
- 為了和匯編語言相區分,我們把二進制版本的命令稱為機器語言或機器碼。
- Java依靠軟件解釋器(software interpreter)來執行。它的指令集稱為Java字節碼而不是類似RISC-V這樣的機器語言,效率較低
指令格式
R(register)-type:
| 7 bits | 5 bits | 5 bits | 3 bits | 5 bits | 7 bits |
I(Immediate)-type: 12 bits用來存地址,rd表示目標寄存器,單寄存器
| 12 bits | 5 bits | 3 bits | 5 bits | 7 bits |
S-type:
| 7 bits | 5 bits | 5 bits | 3 bits | 5 bits | 7 bits |
opcode = 操作碼,funct3和funct7是兩個額外的存放操作碼的空間
rd = register destination
rs = register source
邏輯運算
算術右移:把左邊空出來的位用右邊超出去的位來補齊
32個寄存器
| x0 | 常數0 | 硬件編碼 |
| x1(ra) | 返回地址寄存器(return address) | 是 |
| x2(sp) | 棧指針(stack pointer) | 是 |
| x3(gp) | 全局指針(global pointer) | 是 |
| x4(tp) | 線程指針(thread pointer) | 是 |
| x5 ~ x7 | 臨時寄存器 | 否 |
| x8 ~ x9 | 保留寄存器 | 是 |
| x10 ~ x17 | 傳參或傳遞返回值 | 否 |
| x18 ~ x27 | 保留寄存器 | 是 |
| x28 ~ x31 | 臨時寄存器 | 否 |
(未完待續)
總結
以上是生活随笔為你收集整理的硬件软件接口 (RISC-V) Chapter 2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东云,走进产业数字化深处
- 下一篇: 漫谈高数(转载)