亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

mstatus.MIE 寫入 0(默認復位值)來全局禁用中斷。將機器模式異常處理程序的基地址寫入 mtvec CSR。這是任何引導流程中的必需步驟。將 mstatus.MPP 寫入 0 以將之前的模式設(shè)置為 User,這允許我們返回到該模式。設(shè)置物理內(nèi)存保護 (PMP) 區(qū)域以將所需區(qū)域授予用戶和主管模式,并可選擇從機器模式撤消權(quán)限。用主管模式異常處理程序的基地址寫入 stvec CSR。編寫 medeleg 寄存器,將異常委托給主管模式。考慮 ECALL 和頁面錯誤異常。編寫 mstatus.FS 以啟用浮點(如果支持)。將機器模式用戶寄存器存儲到堆棧或應用程序特定的幀指針。用用戶態(tài)軟件的入口點編寫mepc

登錄后復制

mret指令進入用戶模式。Note:只有一組用戶寄存器 (x1 - x31) 用于所有權(quán)限級別,因此應用軟件負責在進入和退出不同級別時保存和恢復狀態(tài)。本地中斷 軟件中斷(中斷 ID #3):通過寫入特定 hart 的內(nèi)存映射中斷掛起寄存器 msip 來觸發(fā)。定時器中斷:當寄存器 mtime 大于或等于寄存器 mtimecmp 并且兩個寄存器都是 CLINT 內(nèi)存映射的一部分時,會觸發(fā)定時器中斷(中斷 ID #7)。mtime 和 mtimecmp 寄存器通常僅在機器模式下可用,除非 PMP 授予用戶或管理員模式訪問它們所在的內(nèi)存映射區(qū)域的權(quán)限。全局中斷通常首先路由到 PLIC,然后使用外部中斷進入 hart(中斷 ID #11)中斷操作 在特權(quán)模式 m 內(nèi),如果相關(guān)的全局中斷使能 {ie} 清零,則在該特權(quán)模式下不會產(chǎn)生任何中斷,但更高特權(quán)模式下的待決啟用中斷將搶占當前執(zhí)行。如果設(shè)置了 {ie},則在相同特權(quán)模式下處于更高中斷級別的掛起啟用中斷將搶占當前執(zhí)行并運行更高中斷級別的中斷處理程序。當發(fā)生中斷或同步異常時,會修改特權(quán)模式以反映新的特權(quán)模式。處理程序特權(quán)模式的全局中斷使能位被清除中斷進入和退出當中斷發(fā)生時:? mstatus.MIE 的值被復制到mcause.MPIE 中,然后mstatus.MIE 被清除,有效地禁用了中斷。? 中斷前的特權(quán)模式在mstatus.MPP 中編碼。? 當前 pc 被復制到 mepc 寄存器中,然后將 pc 設(shè)置為 mtvec 指定的值此時,控制權(quán)移交給中斷處理程序中的軟件,并禁用中斷。執(zhí)行 mret 指令時,會發(fā)生以下情況:? 特權(quán)模式設(shè)置為在 mstatus.MPP 中編碼的值。? 全局中斷使能 mstatus.MIE 設(shè)置為 mcause.MPIE 的值。? pc 設(shè)置為mepc 的值。此時,控制權(quán)交給軟件。中斷控制和狀態(tài)寄存器 Machine Status Register (mstatus)mstatus 寄存器跟蹤并控制 hart 的當前操作狀態(tài),包括是否啟用中斷。通過設(shè)置 mstatus 中的 MIE 位來啟用中斷。在寫入 mstatus.MIE=1 之前,建議先在 mie 中開啟中斷。Machine Trap Vector (mtvec)mtvec 寄存器有兩個主要功能:定義陷阱向量的基地址,以及設(shè)置 U54內(nèi)核處理中斷的模式。對于 Direct 和 Vectored 模式,中斷處理模式在 mtvec 寄存器的 MODE 字段中定義。mtvec 寄存器在表 86 中描述,mtvec.MODE 字段在表 87 中描述。Mode Direct在直接模式下操作時,所有中斷和異常都會捕獲到 mtvec.BASE 地址。在陷阱處理程序內(nèi)部,軟件必須讀取 mcause 寄存器以確定觸發(fā)陷阱的原因。在直接模式下操作時,BASE 必須是 4 字節(jié)對齊的。Mode Vectored在向量模式下運行時,中斷將 pc 設(shè)置為 mtvec.BASE + 4 × 異常代碼(mcause.EXCCODE)。例如,如果發(fā)生機器定時器中斷,則將 pc 設(shè)置為 mtvec.BASE + 0x1C。通常,陷阱向量表填充有跳轉(zhuǎn)指令,以將控制轉(zhuǎn)移到特定于中斷的陷阱處理程序。在向量中斷模式下,BASE 必須是 256 字節(jié)對齊的。所有機器外部中斷(全局中斷)都映射到異常代碼 11。因此,當啟用中斷向量時,pc 設(shè)置為任何全局中斷的地址 mtvec.BASE + 0x2C。Machine Interrupt Enable (mie)通過設(shè)置 mie 寄存器中的相應位來啟用各個中斷。Machine Interrupt Pending (mip)機器中斷掛起 (mip) 寄存器指示當前哪些中斷處于掛起狀態(tài)。特權(quán)模式中斷 U54內(nèi)核支持有選擇地將中斷和異常定向到S模式。該功能由中斷和異常委托CSR處理:mideleg和medeleg。S模式中斷和異常可以通過stvec、sip、sie 和 scause 管理。在M模式下,軟件還可以直接寫入SIP寄存器,從而有效地向S模式發(fā)送中斷。這對于定時器和軟件中斷特別有用,因為可能需要在M模式和S模式下處理這些中斷。Delegation Registers (mideleg and medeleg)默認情況下,所有的trap都在M模式下處理。M模式下軟件可以通過CSR 有選擇地將中斷和異常委托給S模式。具體的映射如表 92 和表 93 。注意,本地中斷可以委托給M模式。Supervisor Status Register (sstatus)與M模式類似,S模式有一個寄存器,專門用于跟蹤 hart 的當前狀態(tài),稱為 sstatus。sstatus 實際上是 mstatus 的受限視圖,因為對 sstatus 所做的更改反映在 mstatus 中。通過在 sstatus 中設(shè)置 SIE 位并在 sie 寄存器中啟用所需的單個中斷來啟用中斷。Supervisor Interrupt Enable Register (sie)通過在 sie 寄存器中設(shè)置適當?shù)奈粊韱⒂霉芾韱T中斷。Supervisor Interrupt Pending (sip)S模式中斷掛起 (sip) 寄存器指示當前哪些中斷掛起。Supervisor Cause Register (scause)當S模式下捕獲陷阱時,將導致陷阱的事件的代碼寫入 cause。當導致陷阱的事件是中斷時,最高有效位
scause 設(shè)置為 1,最低有效位表示中斷號,使用與 sip 中的位置相同的編碼。例如,S模式定時器中斷導致 cause 被設(shè)置為 0x8000_0000_0000_0005。scause 也用于指示同步異常的原因,在這種情況下,scause 的最高有效位設(shè)置為 0。有關(guān)同步異常代碼的列表,請參見表 98。Supervisor Trap Vector (stvec)默認情況下,所有中斷都會捕獲到 stvec 寄存器中定義的單個地址。由中斷處理程序讀取原因并做出相應的反應。RISC?V 和 U54 內(nèi)核還支持選擇性地啟用中斷向量的能力。當啟用向量時,在 sie 中定義的每個中斷都會陷入到它自己的特定中斷處理程序中。當 stvec 寄存器的 MODE 字段設(shè)置為 1 時,向量中斷被啟用。如果向量中斷被禁用 (stvec.MODE=0),所有中斷都會陷入 stvec.BASE 地址。如果啟用矢量中斷 (stvec.MODE=1),中斷將 pc 設(shè)置為 stvec.BASE + 4 × 異常代碼 (scause.EXCCODE)。例如,如果發(fā)生管理定時器中斷,則 pc 設(shè)置為 stvec.BASE + 0x14。通常,陷阱向量表中填充有跳轉(zhuǎn)指令,以將控制轉(zhuǎn)移到特定于中斷的陷阱處理程序。在向量中斷模式下,BASE 必須是 128 字節(jié)對齊的。所有主管外部中斷(全局中斷)都映射到異常代碼 9。因此,當啟用中斷向量時,pc 被設(shè)置為任何全局中斷的地址 stvec.BASE + 0x24。Delegated Interrupt Handling接受委派陷阱后,會發(fā)生以下情況:sstatus.SIE 的值被復制到 sstatus.SPIE,然后 sstatus.SIE 被清除,有效地禁用中斷。當前pc被復制到sepc寄存器中,然后pc被設(shè)置為stvec的值。在啟用矢量中斷的情況下,pc 設(shè)置為 stvec.BASE + 4 × 異常代碼 (scause.EXCCODE)。中斷前的特權(quán)模式編碼在 sstatus.SPP 中此時,控制權(quán)移交給中斷處理程序中的軟件,中斷被禁用。可以通過顯式設(shè)置 sstatus.SIE 或執(zhí)行 SRET 指令退出處理程序來重新啟用中斷。執(zhí)行 SRET 指令時,會發(fā)生以下情況:特權(quán)模式設(shè)置為 sstatus.SPP 中編碼的值status.SPIE 的值被復制到 status.SIE

登錄后復制

pc 設(shè)置為 sepc 的值

此時,控制權(quán)交給了軟件

中斷延遲

U54內(nèi)核的中斷延遲為四個 external_source_for_core_N_clock 周期,計算方式是從向 hart 發(fā)送中斷信號到處理程序的第一個指令獲取所需的周期數(shù)。

通過 PLIC 路由的全局中斷會導致三個時鐘周期的額外延遲,其中 PLIC 由時鐘計時。這意味著全局中斷的總延遲(以周期為單位)為:4 + 3 × (external_source_for_core_N_clock Hz ÷ clock Hz)。這是最佳情況下的循環(huán)計數(shù),并假定處理程序已緩存。它沒有考慮來自外圍源的額外延遲

不可屏蔽中斷

rnmi(可恢復不可屏蔽中斷)中斷信號是 hart 的電平敏感輸入。不可屏蔽中斷比 hart 上的任何其他中斷或異常具有更高的優(yōu)先級,并且不能被軟件禁用。具體來說,它們不會通過清除 mstatus.mie 寄存器來禁用。

Handler Addresses

NMI 有一個關(guān)聯(lián)的異常陷阱處理程序地址。該地址由外部輸入信號設(shè)置。

RNMI CSRs

這些 M 模式 CSR 啟用可恢復非屏蔽中斷 (RNMI)。

    mnscratch CSR 擁有一個 64 位讀寫寄存器,它使 NMI 陷阱處理程序能夠保存和恢復被中斷的上下文。
    mnepc CSR 是一個 64 位讀寫寄存器,在進入 NMI 陷阱處理程序時,它保存接受中斷的指令的 PC。mnepc 的最低位硬連線為零。
    mncause CSR 包含 NMI 的原因,第 63 位設(shè)置為 1,并且 NMI 原因編碼在最低有效位中,如果不支持 NMI 原因,則為零。mncause 的低位,定義為 exception_code,如下:
      mnstatus CSR 包含一個兩位字段,在進入陷阱處理程序時,它包含以與 mstatus.mpp 相同的方式編碼的中斷上下文的特權(quán)模式

      MNRET Instruction

      此僅 M 模式指令使用 mnepc 和 mnstatus 中的值分別返回中斷上下文的程序計數(shù)器和特權(quán)模式。該指令還設(shè)置內(nèi)部 rnmie 狀態(tài)位。

      編碼與 MRET 相同,除了第 30 位設(shè)置(即 funct7=0111000)。例如:

      .word 0x70200073 // opcode for MNRET (return from RNMI)

      登錄后復制

      RNMI Operation

      當檢測到RNMI中斷時,將中斷的PC寫入mnepc CSR,RNMI的類型寫入mncause CSR,中斷上下文的特權(quán)模式寫入mnstatus CSR。內(nèi)部微體系結(jié)構(gòu)狀態(tài)位 rnmie 被清除以指示處理器處于 RNMI 處理程序中并且不能接受新的 RNMI 中斷。清除時,內(nèi)部 rnmie 位還會禁用所有其他中斷

      這些中斷被稱為不可屏蔽的,因為軟件無法屏蔽中斷。但是,為了正確操作,必須推遲同一中斷的其他實例,直到處理程序完成,因此內(nèi)部狀態(tài)位

      RNMI 處理程序可以使用 MNRET 指令(在第 7.11.3 節(jié)中描述)恢復原始執(zhí)行,該指令從 mnepc 恢復 PC,從 mnstatus 恢復特權(quán)模式,并設(shè)置內(nèi)部 rnmie 狀態(tài)位,重新啟用其他中斷。

      如果hart在rnmie位清零時遇到異常,則將異常狀態(tài)寫入mepc和mcause,mstatus.mpp設(shè)置為M-mode,hart跳轉(zhuǎn)到RNMI異常處理程序地址。

      RNMI 處理程序中的陷阱只有在處理程序正在服務(wù)發(fā)生在機器模式之外的中斷時發(fā)生時才能恢復。

      以上就是RISC-V SiFive U54內(nèi)核——中斷和異常詳解的詳細內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!

分享到:
標簽:RISC 中斷 內(nèi)核 異常 詳解
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定