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