AIA - IMSIC之二(附IMSIC處理流程圖)

本文屬于《 RISC-V指令集基礎系列教程》之一,歡迎查看其它文章。

1 ???????通過IMSIC接收外部中斷的CSR

軟件通過《AIA - 新增的CSR》描述的CSR來訪問IMSIC。

  • machine level 的 CSR 與 IMSIC 的 machine level interrupt file 可相互互動;
  • 而 supervisor level 的 CSR 也能與 IMSIC 的 supervisor level interrupt file 可相互互動;
  • 同樣地當 IMSIC 有 guest interrupt file,VS CSR 可與 guest interrupt file 相互互動。

machine level 相關的CSR有以下:miselect、mireg、mtopei。
supervisor level 相關的 CSR 有以下:siselect、sireg、stopei。
當 hypervisor extension 實現時,與 VS CSR 相關的有以下:vsiselect、vsireg、vstopei。

miselect 和 mireg通過間接的方式,訪問machine level的附帶寄存器。
同樣的,supervispr level的siselect 和 sireg,以及 VS level 的 vsiselect 和 vsireg,也可以間接訪問各自 level 的附帶寄存器。
需要注意的是:

這些附帶寄存器既不是CSR,也不是memory-mapped的寄存器,它們在interrupt file中。

不同level的interrupt file的寄存器組相同,*iselect表示這些寄存器的地址,它的范圍在 0x70~0xFF ,會選擇相對應在 IMSIC 中 interrupt file的寄存器,interrupt file結構如下:
在這里插入圖片描述

寄存器0x71 和 0x73~0x7F 目前被保留。
當 *iselect CSR 具有這些值之一(0x71和0x73~0x7f)時:

  • 從匹配的 *ireg CSR讀取,會返回0;
  • 并且會忽略向 *ireg CSR 的寫入行為。

eip0 到 eip63 對應所有實現 interrupt ID 的 pending bit,統稱之為 eip array;
同樣的 eie0 到 eie63 所對應 enabled bit 統稱之為 eie array。
每個寄存器32bit,eip0/eie0的bit0無效,因此interrupt ID的有效范圍為1-2047,對應這些寄存器組的bit位置。

1.1 interrupt file交互示意圖

根據前面章節描述,我們可以得到machine level的CSR 與 IMSIC 的 machine level interrupt file交互,其結構如下所示:
在這里插入圖片描述

  • seteipnum_le與seteipnum_be位于內存映射空間中,基址為4KB對齊,這2個寄存器在映射空間中的偏移為0x000和0x004。
  • 向seteipnum_le或seteipnum_be寫入Interrupt ID,可將Interrupt ID對應的eip array中某bit置位。
  • 向miselect中寫入0x70~0xff任一地址,然后讀寫mireg,可實現對Interrupt File內部實際寄存器的訪問。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64155.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64155.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64155.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue單頁應用的配置

前面通過幾篇文章了解并掌握了 Vue 項目構建及運行的前期工作 。接下來我們可以走進 Vue 項目的內部,一探其內部配置的基本構成。 1. 路由配置 由于 Vue 這類型的框架都是以一個或多個單頁構成,在單頁內部跳轉并不會重新渲染 HTML 文件,其路…

CocosCreator-引擎案例-TS:spine

工程1:LoadSpine:簡單加載spine資源 建立工程,在層級上建立一個空對象,改名spine 在spine上添加spine組件: 添加組件>渲染組件>spine 在spine上掛上腳本loadspine onLoad () {cc.resources.load(loadSpine/ali…

使用FreeNAS軟件部署ISCSI的SAN架構存儲(IP-SAN)練習題

一,實驗用到工具分別為: VMware虛擬機,安裝教程:VMware Workstation Pro 17 安裝圖文教程 FreeNAS系統,安裝教程:FreeNAS-11.2-U4.1安裝教程2024(圖文教程) 二,新建虛…

【ANGULAR網站開發】初始環境搭建

1. 初始化angular項目 1.1 創建angular項目 需要安裝npm和nodejs,這邊不在重新安裝 直接安裝最新版本的angular npm install -g angular/cli安裝指定大版本的angular npm install -g angular/cli181.2 啟動angular 使用idea啟動 控制臺啟動 ng serve啟動成功…

lua debug相關方法詳解

lua debug相關方法詳解 1. debug.debug()2. debug.getinfo(func | level [, what])3. debug.getlocal(func-or-level, localindex)4. debug.setlocal(level, local_number, value)5. debug.getupvalue(func, upvalue_index)6. debug.setupvalue(func, upvalue_index, value)7. …

《計算機網絡(第7版)-謝希仁》期末考試復習題和答案(總結整理)

目錄 前言: 一、選擇題。 二、填空題。 三、名詞解釋。 四、簡答題。 前言: 這個自動標題自己帶了序號,一開始想全部選項和題號都改過來的,結果一看一百多個全是,懶得改了 一、選擇題。 1、廣域網覆蓋的地理范圍…

【再談設計模式】享元模式~對象共享的優化妙手

一、引言 在軟件開發過程中,我們常常面臨著創建大量細粒度對象的情況,這可能會導致內存占用過高、性能下降等問題。享元模式(Flyweight Pattern)就像是一位空間管理大師,它能夠在不影響功能的前提下,有效地…

Milvus×EasyAi:如何用java從零搭建人臉識別應用

如何從零搭建一個人臉識別應用?不妨試試原生Java人工智能算法:EasyAi Milvus 的組合拳。 本文將使用到的軟件和工具包括: EasyAi:人臉特征向量提取Milvus:向量數據庫用于高效存儲和檢索數據。 01. EasyAi:…

NS3學習——tcpVegas算法代碼詳解(2)

NS3學習——tcpVegas算法代碼詳解(1)-CSDN博客 目錄 4.TcpVegas類中成員函數 (5) CongestionStateSet函數 (6) IncreaseWindow函數 1.檢查是否啟用 Vgas 2.判斷是否完成了一個“Vegas 周期” 2.1--if:判斷RTT樣本數量是否足夠 2.2--e…

GitLab 將停止為中國區用戶提供服務,60天遷移期如何應對? | LeetTalk Daily

“LeetTalk Daily”,每日科技前沿,由LeetTools AI精心篩選,為您帶來最新鮮、最具洞察力的科技新聞。 GitLab作為一個廣受歡迎的開源代碼托管平臺,近期宣布將停止服務中國大陸、澳門和香港地區的用戶提供服務。根據官方通知&#x…

華為實訓課筆記 2024 1223-1224

華為實訓 12/2312/24 12/23 [Huawei]stp enable --開啟STP display stp brief --查詢STP MSTID Port Role STP State Protection 實例ID 端口 端口角色 端口狀態 是否開啟保護[Huawei]display stp vlan xxxx --查詢制定vlan的生成樹計算結…

企業數字化轉型中如何區分“IT投入”和“業務投入”

在數字化轉型的浪潮中,企業往往面臨一個關鍵問題:如何區分“IT投入”和“業務投入”?在很多企業中,這兩個概念往往被混淆,不少公司甚至認為“數字化轉型”就是“IT的事情”,但實際上,它們之間有…

【Spring AI】Spring AI Alibaba的簡單使用

提示:文章最后有詳細的參考文檔。 前提條件 SpringBoot版本為3.x以上JDK為17以上申請api-key,地址:百煉平臺 引入依賴 說明:我的springboot版本為3.2.4,spring-ai-alibaba-starter版本為1.0.0-M2.1(對應spring-ai版本…

《Java源力物語》-3.空值獵手

~犬📰余~ “我欲賤而貴,愚而智,貧而富,可乎? 曰:其唯學乎” \quad 夜色漸深,在一處偏僻小徑上,月光透過濃密的源力云層,在地面上投下斑駁的光影。String正獨自練習著剛從…

科技云報到:人工智能時代“三大件”:生成式AI、數據、云服務

科技云報到原創。 就像自行車、手表和縫紉機是工業時代的“三大件”。生成式AI、數據、云服務正在成為智能時代的“新三大件”。加之全球人工智能新基建加速建設,成為了人類社會數字化遷徙的助推劑,讓新三大件之間的耦合越來越緊密。從物理世界到數字世…

hiprint結合vue2項目實現靜默打印詳細使用步驟

代碼地址是:vue-plugin-hiprint: hiprint for Vue2/Vue3 ?打印、打印設計、可視化設計器、報表設計、元素編輯、可視化打印編輯 本地安裝包地址:electron-hiprint 發行版 - Gitee.com 1、先安裝hipint安裝包在本地 2、項目運行npm(socket.…

CUDA各種內存和使用方法

文章目錄 1、全局內存2、局部內存3、共享內存3.1 靜態共享內存3.2 動態共享內存 4、紋理內存5、常量內存6、寄存器內存7、用CUDA運行時API函數查詢設備CUDA 錯誤檢測 1、全局內存 特點:容量最大,訪問延時最大,所有線程都可以訪問。 線性內存…

Chapter 03 復合數據類型-1

1.列表 Python內置的一種有序、可變的序列數據類型; 列表的定義: [ ]括起來的逗號分隔的多個元素組成的序列 列表對象的創建: (1)直接賦值 >>> list1 []#創建一個空列表賦值給list1 >>> list…

【后端】LNMP環境搭建

長期更新各種好文,建議關注收藏! 本文近期更新完畢。 LNMPlinuxnginxmysqlphp 需要的資源 linux服務器 web服務軟件nginx 對應的語言編譯器代碼文件 數據庫mysql安裝 tar.gz包或者命令行安裝 進入root: sodu 或su mkdir path/{server,soft}…

基于PyQt5的UI界面開發——多界面切換

介紹 最初,因為課設的緣故,我只是想做一個通過按鍵進行切面切換而已,但是我看網上資料里面僅是語焉不詳,讓我困惑的很,但后面我通過摸索才發現這件事實在是太簡單了,因此我想要記錄下來。 本博客將介紹如…