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 CSR寄存器介紹

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

RISC-V CSR寄存器

CSR是控制狀態(tài)寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令進(jìn)行訪問(wèn)。

M模式和S模式都有自己的CSR寄存器,但是大體上相同。下面列舉一些常用的CSR。

M模式CSR寄存器

mstatus

狀態(tài)寄存器,保存了全局中斷使能狀態(tài)和其他狀態(tài),例如切換模式前,保存當(dāng)前模式。

mtvec

異常入口基地址寄存器。保存發(fā)生異常時(shí)需要跳轉(zhuǎn)的地址。

medelegmideleg

medeleg是異常委托,mideleg是中斷委托。例如,在M模式下發(fā)生異常或中斷時(shí),可以通過(guò)這兩個(gè)寄存器,將中斷/異常交給S模式或者其他模式處理。

mipmie

mie是中斷使能寄存器,對(duì)需要使能的中斷,在對(duì)應(yīng)位使能。

mip是中斷等待寄存器,表示目前正準(zhǔn)備處理的中斷。

hpm

全稱Hardware Performance Monitor,硬件性能單元,用于性能計(jì)數(shù)。包括了兩類寄存器:mhpmcounter和mhpmevent

  • mhpmcounter:性能計(jì)數(shù)器
  • mhpmevent:用于配置性能事件

mcounterenmcountinhibit

這兩個(gè)也是hpm相關(guān)的寄存器,主要用于控制hpm的使能、計(jì)數(shù)禁止。

  • mcounteren:計(jì)數(shù)器使能
  • mcountinhibit:禁止計(jì)數(shù)

mscratch

用于保存M模式指向hart上下文的指針,并在進(jìn)入M模式的處理程序時(shí),和用戶寄存器交換。

mepc

發(fā)生中斷時(shí),當(dāng)前程序的PC值,保存在mepc中,中斷返回時(shí),會(huì)從mepc讀取PC值。

mcause

用于保存發(fā)生中斷或異常的情況,中斷和異常描述如下:

圖片

1代表中斷,0代表異常,每個(gè)異常/中斷都有對(duì)應(yīng)的編碼值,通過(guò)mcause的值,可以很清楚的知道發(fā)生了什么中斷或異常,特別在調(diào)試過(guò)程,mcause發(fā)揮了很大作用。

mvtal

異常值寄存器,例如發(fā)生異常時(shí),保存出錯(cuò)的地址。

S模式CSR寄存器

S模式的CSR和M模式基本上是一樣的,只不過(guò)將第一個(gè)字母m改為了s,例如mcause改為了scause,mvtal改為了svtal。它們的功能基本相同,這里就不再贅述了。

需要注意的是,S模式除了擁有M模式相同功能的CSR外,另外還增加了一個(gè)stap寄存器。

stap寄存器主要是給MMU使用,stap寄存器保存了頁(yè)表的基地址,MMU通過(guò)stap可以找到第一級(jí)頁(yè)表,進(jìn)而找到物理地址。stap寄存器涉及到的內(nèi)容比較多,關(guān)于stap相關(guān)內(nèi)容,以后會(huì)詳細(xì)展開講講。

聲明:本文內(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

    文章

    5250

    瀏覽量

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

    關(guān)注

    3

    文章

    1336

    瀏覽量

    40084
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207900
  • CSR
    CSR
    +關(guān)注

    關(guān)注

    3

    文章

    117

    瀏覽量

    69535
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2241

    瀏覽量

    93970
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    460

    瀏覽量

    83566
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】RISC-V基礎(chǔ)整數(shù)指令集RV32I

    。 圖1:RV32I指令集 在講RISC-V各個(gè)階段,橫向比較ARM架構(gòu),體現(xiàn)出RISC-V的優(yōu)越性。 ●RV32I寄存器 RISC-V基礎(chǔ)指令集RV32I,只有6種基本指令
    發(fā)表于 01-28 11:41

    RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】RISC-V基礎(chǔ)整數(shù)指令集

    第2章 RV32I:RISC-V基礎(chǔ)整數(shù)指令集 本章重點(diǎn)講解構(gòu)成RISC-V基礎(chǔ)整數(shù)指令集的基本指令和指令格式。主要包含寄存器間操作的R型,用于短立即數(shù)和取數(shù)操作的I型,用于存數(shù)操作的S型,用于條件
    發(fā)表于 01-31 21:10

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

    10 機(jī)器特權(quán)級(jí) 3 M 11 一個(gè)RISC-V 硬件線程(hart),相當(dāng)于一個(gè)CPU 內(nèi)獨(dú)立的可執(zhí)行核心,在任意時(shí)刻,只能運(yùn)行在某一個(gè)特權(quán)級(jí)上,這個(gè)特權(quán)級(jí)由CSR(控制和狀態(tài)寄存器)指定配置
    發(fā)表于 03-12 10:25

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

    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模式切換
    發(fā)表于 04-12 14:06

    RISC-V開源處理介紹

    本期文章目錄一個(gè)小型RISC-V開源處理介紹!#SOC#FPGA#RISC-V點(diǎn)擊閱讀數(shù)字積木從零開始寫RISC-V處理
    發(fā)表于 07-23 09:42

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

    stat,一種是perf record。如今上游Linux的perf雖然已經(jīng)對(duì)RISC-V有了支持,但僅對(duì)perf stat有一些基本的支持。比如mcycle這一CSR用于處理運(yùn)行的時(shí)鐘周期計(jì)數(shù),而
    發(fā)表于 12-27 08:00

    如何使用J-Link和Embedded Studio讀寫RISC-V處理CSR

    CSR簡(jiǎn)介RISC-V 架構(gòu)的控制和狀態(tài)寄存器(Control and Status Register, CSR),用于配置或記錄一些處理
    發(fā)表于 08-25 15:51

    初探RISC-V—《RISC-V體系結(jié)構(gòu)編程與實(shí)踐》

    最近有幸讀了一本介紹RISC-V的書籍《RISC-V體系結(jié)構(gòu)編程與實(shí)踐》,這是一本非常有價(jià)值的書籍,它介紹RISC-V體系結(jié)構(gòu)的各個(gè)方面,
    發(fā)表于 03-28 11:41

    RISC-V 發(fā)展

    匯編當(dāng)中,都使用ABI名稱來(lái)代表這些寄存器RISC-V CSR寄存器CSR是控制狀態(tài)寄存器,
    發(fā)表于 04-14 10:18

    RISC-V CSR 相關(guān)指令集

    CSRRW(Atomic Read/Write CSR) 指令原子性的交換CSR寄存器中的值。 CSRRW指令讀取在CSR中的舊值,將其零擴(kuò)展到32位,然后寫入整數(shù)
    發(fā)表于 12-08 18:21 ?8次下載
    <b class='flag-5'>RISC-V</b> <b class='flag-5'>CSR</b> 相關(guān)指令集

    AArch64寄存器介紹

    作為 RISC 架構(gòu),AArch64 提供了大量的通用寄存器。除通用寄存器之外,本節(jié)還會(huì)介紹特殊寄存器、系統(tǒng)控制
    的頭像 發(fā)表于 08-24 09:57 ?5669次閱讀

    RISC-V MCU gp全局指針說(shuō)明

    gp ,g lobal pointer,全局指針寄存器,RISC-V 32個(gè)寄存器之一,為了優(yōu)化±2KB內(nèi)全局變量的訪問(wèn)。
    的頭像 發(fā)表于 02-15 11:55 ?1493次閱讀

    用于RISC-V處理的三重模塊化冗余ALU和寄存器文件的設(shè)計(jì)示

    用于RISC-V處理的三重模塊化冗余ALU和寄存器文件的設(shè)計(jì)示例 演講ppt分享
    發(fā)表于 07-17 16:34 ?2次下載

    RISC-V PMP寄存器介紹

    每個(gè) PMP 區(qū)域都由一個(gè) 8 位 pmpXcfg 字段描述,與一個(gè) 64 位 pmpaddrX寄存器結(jié)合使用,該寄存器保存受保護(hù)區(qū)域的基地址。每個(gè)區(qū)域的范圍取決于下一節(jié)中描述的尋址 (A) 模式
    的頭像 發(fā)表于 10-07 17:39 ?1565次閱讀
    <b class='flag-5'>RISC-V</b> PMP<b class='flag-5'>寄存器</b><b class='flag-5'>介紹</b>

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

    RISC-V特權(quán)架構(gòu) ARM有7種工作模式,而RISC-V也有不同的模式,這些模式在RISC-V中也被稱為特權(quán)架構(gòu)。 RISC-V總共有四種模式,分別是U、S、H和M模式: U模式被編
    的頭像 發(fā)表于 10-08 14:48 ?1204次閱讀
    <b class='flag-5'>RISC-V</b>特權(quán)架構(gòu)和通用<b class='flag-5'>寄存器</b>