0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RISC-V特權(quán)架構(gòu)和通用寄存器

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 14:48 ? 次閱讀

RISC-V特權(quán)架構(gòu)

ARM有7種工作模式,而RISC-V也有不同的模式,這些模式在RISC-V中也被稱為特權(quán)架構(gòu)。

RISC-V總共有四種模式,分別是U、S、H和M模式:
圖片

U模式被編碼為00,S模式編碼為01,H模式編碼為10,M模式編碼為11。Level越高,等級(jí)越高。等級(jí)越高,擁有的訪問(wèn)權(quán)限也更高。按照特權(quán)等級(jí),由高到低依次為M、H、S、U。

上圖中編碼為10的模式是保留的,這個(gè)模式實(shí)際上就是H模式,H模式是用作虛擬化,但是目前RISC-V對(duì)虛擬化還不太完善,基本不支持。因此上圖并沒(méi)有將H模式標(biāo)出來(lái),而是作為保留。也正是因此,有人經(jīng)常將RISC-V的模式說(shuō)成三種U、S和M。

  • U模式:User,用戶模式
  • S模式:Supervisor,監(jiān)管者模式
  • M模式:Machine,機(jī)器模式

以RISC-V Linux為例,Linux應(yīng)用程序處于U模式,Linux內(nèi)核/uboot處于S模式,M模式則是OpenSBI。M模式擁有最高訪問(wèn)權(quán)限,Linux內(nèi)核如果要訪問(wèn)CSR寄存器,則必須由S模式切換到M模式,由OpenSBI讀取CSR寄存器,然后將數(shù)據(jù)返回給內(nèi)核。

M模式是必須要選擇的,RISC-V的裸機(jī)代碼都運(yùn)行在M模式下。

RISC-V通用寄存器

寄存器ABI名稱說(shuō)明
x0zero0值寄存器,硬編碼為0,寫入數(shù)據(jù)忽略,讀取數(shù)據(jù)為0
x1ra用于返回地址(return address)
x2sp用于棧指針(stack pointer)
x3gp用于通用指針(global pointer)
x4tp用于線程指針
x5t0用于存放臨時(shí)數(shù)據(jù)或者備用鏈接寄存器
x6~x7t1~t2用于存放臨時(shí)數(shù)據(jù)寄存器
x8s0/fp需要保存的寄存器或者幀指針寄存器
x9s1需要保存寄存器
x10~x11a0~a1函數(shù)參數(shù)或者返回值寄存器
x12~x17a2-a7函數(shù)傳遞參數(shù)寄存器
x18~x27s2-s11需要保存的寄存器
x28~x31t3~t6用于存放臨時(shí)數(shù)據(jù)寄存器

RISC-V有x0 x31共32個(gè)通用寄存器,每個(gè)通用寄存器都有各自的用途,例如x2是作為sp棧指針、a0~a1用來(lái)保存函數(shù)參數(shù)或返回值。x0寄存器被硬編碼為了0,就是個(gè)0值寄存器。

ABI名稱相當(dāng)于這些通用寄存器的別名,在RISC-V匯編當(dāng)中,都使用ABI名稱來(lái)代表這些寄存器。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5275

    瀏覽量

    119691
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1351

    瀏覽量

    40161
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11182

    瀏覽量

    208546
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    461

    瀏覽量

    83617
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    505

    瀏覽量

    25427
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    正式的RISC-V基礎(chǔ)指令集架構(gòu)特權(quán)架構(gòu)規(guī)范來(lái)了,RISC-V基金會(huì)已正式批準(zhǔn)

    根據(jù)RISC-V基金會(huì)官網(wǎng)發(fā)布的公告,RISC-V 基金會(huì)宣布了批準(zhǔn)RISC-V 基礎(chǔ)指令集架構(gòu)特權(quán)
    的頭像 發(fā)表于 07-11 10:46 ?9791次閱讀

    RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】 RISC-V設(shè)計(jì)必備之案頭小冊(cè)

    。在書中,特別提到了匯編對(duì)于RISC-V中的作用,包括當(dāng)講寄存器硬連線為0時(shí),可以使用偽指令來(lái)簡(jiǎn)化常規(guī)操作,如跳轉(zhuǎn)、返回和等于零時(shí)分支等。 浮點(diǎn)運(yùn)算和壓縮指令數(shù)據(jù)集的知識(shí)則是放在下一次的帖子中說(shuō)。
    發(fā)表于 01-22 16:24

    RISC-V 基礎(chǔ)學(xué)習(xí):RISC-V 基礎(chǔ)介紹

    ,精簡(jiǎn)指令架構(gòu)的CPU,都會(huì)提供大量的寄存器。 RISC-V 的規(guī)范定義了32個(gè)通用寄存器以及一個(gè)PC
    發(fā)表于 03-12 10:25

    RISC-V工作模式及寄存器基本知識(shí)

    到M模式,由OpenSBI讀取CSR寄存器,然后將數(shù)據(jù)返回給內(nèi)核。 M模式是必須要選擇的,RISC-V的裸機(jī)代碼都運(yùn)行在M模式下。 RISC-V通用
    發(fā)表于 04-12 14:06

    RISC-V 生態(tài)架構(gòu)淺析

    優(yōu)勢(shì)和總結(jié)了多年來(lái)處理發(fā)展的教訓(xùn),RISC-V的指令集編碼非常的規(guī)整,指令所需的通用寄存器的索引(Index)都被放在固定的位置,如圖2所示。因此指令譯碼
    發(fā)表于 06-22 16:51

    簡(jiǎn)單就是美——RISC-V架構(gòu)的設(shè)計(jì)哲學(xué)

    寄存器RISC-V架構(gòu)支持32位或者64位的架構(gòu),32位架構(gòu)由RV32表示,其每個(gè)通用
    發(fā)表于 07-27 17:47

    科普RISC-V生態(tài)架構(gòu)(認(rèn)識(shí)RISC-V)

    優(yōu)勢(shì)和總結(jié)了多年來(lái)處理發(fā)展的教訓(xùn),RISC-V的指令集編碼非常的規(guī)整,指令所需的通用寄存器的索引(Index)都被放在固定的位置,如圖2所示。因此指令譯碼
    發(fā)表于 08-02 11:50

    ARM與RISC-V架構(gòu)的區(qū)別是什么?

    邏輯、算術(shù)等運(yùn)算,CPU只處理寄存器中的數(shù)據(jù)。同時(shí)由于這個(gè)原因,包括ARM在內(nèi)的很多RISC架構(gòu)處理都有很多寄存器來(lái)存放指令及數(shù)據(jù)。為了方
    發(fā)表于 04-25 09:13

    玄鐵VirtualZone:基于RISC-V架構(gòu)的安全擴(kuò)展

    (PMP)RISC-V架構(gòu)提供了一種PMP物理內(nèi)存保護(hù)機(jī)制,用于隔離M模式與S/U模式下的內(nèi)存訪問(wèn)。只有M模式才有權(quán)限配置PMP。PMP包含幾組(通常是8到16個(gè))地址寄存器以及相應(yīng)的配置寄存
    發(fā)表于 09-01 14:38

    優(yōu)化的關(guān)鍵,RISC-V中的性能監(jiān)控

    看到,PMU擴(kuò)展已經(jīng)成了該規(guī)范的一部分。接著是sscofpmf擴(kuò)展,ss代表的是特權(quán)架構(gòu)和管理員級(jí)的擴(kuò)展,cofpmf代表的是溢出計(jì)數(shù)和特權(quán)模式篩選。該擴(kuò)展新增了一個(gè)32位的scountovf只讀
    發(fā)表于 12-27 08:00

    適合新手的RISC-V入門基礎(chǔ)知識(shí)

    適用于不同的應(yīng)用場(chǎng)景,可以降低 CPU 實(shí)現(xiàn)成本。 9.4 RISC-V 寄存器 指令的操作數(shù)來(lái)源于寄存器,精簡(jiǎn)指令架構(gòu)的CPU,都會(huì)提供大量的
    發(fā)表于 02-23 20:25

    【轉(zhuǎn)載】第1章 初識(shí)RISC-V

    位。如果支持浮點(diǎn)指令,則需額外支持32個(gè)浮點(diǎn)(Float Point)寄存器不同于ARM,RISC-V中PC指針不占用通過(guò)寄存器,而是獨(dú)立的,程序執(zhí)行中自動(dòng)變化,無(wú)法通過(guò)通用
    發(fā)表于 03-28 16:57

    RISC-V架構(gòu)

    的設(shè)計(jì)考慮了小型、快速、低功耗的現(xiàn)實(shí)情況來(lái)實(shí)做,但并沒(méi)有對(duì)特定的微架構(gòu)做過(guò)度的設(shè)計(jì)?! 〗刂?017年5月,RISC-V已經(jīng)確立了版本2.22的用戶空間的指令集(userspace ISA),而特權(quán)指令集
    發(fā)表于 04-03 15:29

    RISC-V 發(fā)展

    通用寄存器,每個(gè)通用寄存器都有各自的用途。例如x2是作為sp棧指針、a0-a1用來(lái)保存函數(shù)參數(shù)或返回值。x0寄存器被硬編碼為了0,就是個(gè)0值
    發(fā)表于 04-14 10:18

    RISC-V CSR寄存器介紹

    RISC-V CSR寄存器 CSR是控制狀態(tài)寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令進(jìn)行訪問(wèn)。
    的頭像 發(fā)表于 10-08 14:53 ?4949次閱讀
    <b class='flag-5'>RISC-V</b> CSR<b class='flag-5'>寄存器</b>介紹