RISC-V h拓展

https://tinylab.org/riscv-kvm-virt-mode-switch/
https://tinylab.org/riscv-kvm-virt-trap/

特權模式

指令集中約定用虛擬化模式 V (virtualization mode) 來標記當前是否是在 Guest 系統中運行。V=1 表示當前確實運行在 Guest 系統中,V=0 則表示不運行在 Guest 中。

V虛擬化(H-Level Arch.)V虛擬化特例名義特權級運行的程序
1VU-mode0U-modeU-0Guest OS的應用程序
1VS-modeS-1Guest OS
0HS-mode0HS-modeS-1宿主OS / Hypervisor
0M-mode0M-modeM-3opensbi

在上述表格中,虛擬化特例指 hart 所指示的應用程序以 U-mode 直接運行在一個運行于 HS-mode 的 OS 上。

名義特權級(Nominal Privilege)是在 S-mode 基礎上的特權級約定,分為 U, S, M 三級,分別用 0,1,3 表示,各類指令集模擬器均以此標準實現。

相關CSR

mstatus寄存器

在這里插入圖片描述

  • MIE、SIE:當前中斷使能
  • SPIE、MPIE:(previous) 記錄trap之前的中斷使能
  • SPP、MPP:記錄trap之前的特權級別
  • TSR(Trap SRet):攔截supervisor異常返回指令sret。TSR=1,在S-mode下支持sret會導致illegal instruction exception。TSR=0,則允許S-mode下執行sret。

hstatus寄存器

在這里插入圖片描述

  • SPV(supervisor previous Virtualization):sstatus.SPP 在 trap 時會被設置為 trap 對應的名義特權級,此時 hstatus.SPV 就會被設置為 trap 時的 V 值;當 V=0 時執行 sret 指令,SPV 置為 V。
  • SPVP (Supervisor Previous Virtual Privilege):V=1 時,行為與 sstatus.SPP 相同,即置為 trap 時的名義特權級;V=0 時,保持不變。
  • GVA (Guest Virtual Address):trap 到 HS-mode 時寫入:對于寫虛擬地址到 stval 的寄存器的 trap(breakpoint, address misaligned, access fault, page fault, or guest-page fault),hstatus.GVA 置 1,對于其他 trap 置 0。

sstatus

在這里插入圖片描述
sstatus 是 mstatus 的一個子集。

  • SPP:用于標識 trap 進入 S-mode 之前 hart 所在的特權級:來自 U-mode 則置 0,否則為 1。
  • trap 處理過程中 sstatus 的行為
    trap to S-mode: SPIE=SIE, SIE=0
    sret: SIE=SPIE, SPIE=1

vsstatus

和sstauts一樣。
V=1 時,vsstatus 用于替代 sstatus,所以通常針對 sstatus 的操作會替換為 vsstatus。

中斷處理流程

在這里插入圖片描述

中斷委托

在這里插入圖片描述
從上圖可知,正常情況下 trap 都會導致 hart 的控制轉移至 M-mode,處理之后通過 mret 指令返回到原來的模式。

特殊情況下 trap 會經由 mdeleg 或 mideleg 委派從 HS-mode 或 VS-mode 轉移至 HS-mode,或再經由 hedeleg 或 hideleg 委派從 VU-mode 轉移至 VS-mode。

被委派至 HS-mode 和 VS-mode 的 trap 在處理完畢后,將通過 sret 指令返回至 trap 之前的模式。

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

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

相關文章

HCIA-華為VRP系統基礎

前言:本博客僅作記錄學習使用,部分圖片出自網絡,如有侵犯您的權益,請聯系刪除 本篇筆記是根據B站上的視頻教程整理而成,感謝UP主的精彩講解!如果需要了解更多細節,可以參考以下視頻:…

OSS大數據分析集成:MaxCompute直讀OSS外部表優化查詢性能(減少數據遷移的ETL成本)

(1)數據存儲與分析分離的痛點 傳統架構中,OSS作為廉價存儲常與MaxCompute計算引擎分離,導致ETL遷移成本高企。某電商案例顯示:每日300TB日志從OSS導入MaxCompute內部表,產生以下問題: 延遲&…

vue | vue-macros 插件升級以及配置

Vue Macros 是一個為 Vue.js 提供更多宏和語法糖的開源項目vue-macros/vue-macros: Explore and extend more macros and syntax sugar to Vue. 問題:npm run build-only 打包時,報錯:[Vue] Load plugin failed: vue-macros/volar 排查發現…

瑞芯微elf2開發板(rk3588)實現ros2humble下部署yolov5模型與Astrapro相機集成實現目標檢測

版本信息總結以及工具介紹 組件版本說明RKNN Lite2.1.0嵌入式端推理庫RKNN Runtime2.1.0運行時庫 (967d001cc8)RKNN Driver0.9.8NPU驅動程序模型版本6RKNN模型格式版本工具鏈版本2.1.0708089d1模型轉換工具鏈Python3.10編程語言OpenCV4.x圖像處理庫目標平臺rk3588Rockchip RK3…

Web前端入門:JavaScript 事件循環機制中的微任務與宏任務

JS 是單線程語言。這句話對不對? 按照目前的情況來看,JS 自從支持了 Web Worker 之后,就不再是單線程語言了,但 Worker 的工作線程與主線程有區別,在 Worker 的工作線程中無法直接操作 DOM、window 對象或大多數瀏覽器…

【論文筆記】【強化微調】TinyLLaVA-Video-R1:小參數模型也能視頻推理

[2504.09641] TinyLLaVA-Video-R1: Towards Smaller LMMs for Video Reasoning 1. 引述 繼之前的一篇 Video-R1 的工作,一篇新的關于視頻推理的工作很快就上傳到 Arxiv 上 “占坑” 了,這個工作是關于使用小參數(3B)的 LLM 進行視…

基于元學習的回歸預測模型如何設計?

1. 核心設計原理 目標:學習一個可快速適應新任務的初始參數空間,使模型在少量樣本下泛化。數學基礎: MAML框架: min ? θ ∑ T ~ p ( T ) [ L T ( f θ ? η ? θ L T ( f θ ( D T t r a i n ) ) ( D T t e s t ) ) ] \min…

MyBatis Plus與P6Spy日志配置

前言 在開發基于Spring Boot和MyBatis Plus的項目時,日志功能是調試和優化SQL查詢的核心工具。通過合理配置日志輸出,開發者可以直觀查看生成的SQL語句、執行時間、參數值以及潛在的性能瓶頸。 一、MyBatis Plus日志配置 1.1 基礎配置:直接…

SpringCloudGateway(spel)漏洞復現 Spring + Swagger 接口泄露問題

環境配置 gateway Spring Cloud : 這個就是分布式的微服務組件 微服務 : 一般指的是獨立的,專注于一項功能的服務 Gateway 這個其實是個云端的網關配置(他的作用就是對訪問web的流量進行防護比如一些爬蟲的阻截&#xff0…

服務器手動安裝并編譯R環境庫包:PROJ→RGDAL

目錄 方式1:conda-forge安裝錯誤:缺乏libnsl.so.1? 方法一:查找系統中是否已有此庫替補方案:采用libnsl.so.3鏈接 libnsl.so.1? 方法二:系統中沒有安裝 libnsl.so.1 → 手動安裝? 方法三:使用 Conda 安裝…

教育技術學讀計算機論文的提示詞

角色: 你是一位經驗豐富的計算機專業教授,擅長用通俗易懂的語言向初學者解釋復雜概念。我現在正在學習閱讀計算機科學領域的算法論文,但我的基礎比較薄弱(了解編程基礎如變量、循環、函數,了解一點數據結構和算法概念如數組、鏈表、排序,但對高級術語和數學證明不熟悉)。…

棋盤格標定板和圓形標定板的優劣性

來源:deepseek 在相機標定中,棋盤格標定板和圓形標定板(或圓點陣列標定板)是最常用的兩種類型。它們各有優劣,選擇哪種取決于具體的應用場景、需求以及使用的標定算法。以下是它們的主要優劣對比: &#…

2025年UDP洪水攻擊防御指南:從7.3Tbps攻防戰看原理與實戰

45秒37.4TB流量!一場刷新歷史紀錄的DDoS攻擊正在顛覆傳統防御體系 一、什么是UDP洪水攻擊? UDP洪水攻擊(UDP Flood)是一種利用用戶數據報協議(UDP) 的無連接特性發起的分布式拒絕服務(DDoS&…

一種集成統計、視覺和基于規則方法的新型可解釋醫學圖像分類人工智能框架|文獻速遞-最新論文分享

Title 題目 A novel explainable AI framework for medical image classificationintegrating statistical, visual, and rule-based methods 一種集成統計、視覺和基于規則方法的新型可解釋醫學圖像分類人工智能框架 01 文獻速遞介紹 人工智能(AI)…

洛谷 P10113 [GESP202312 八級] 大量的工作溝通-普及/提高-

題目描述 某公司有 N N N 名員工,編號從 0 0 0 至 N ? 1 N-1 N?1。其中,除了 0 0 0 號員工是老板,其余每名員工都有一個直接領導。我們假設編號為 i i i 的員工的直接領導是 f i f_i fi?。 該公司有嚴格的管理制度,每位…

數組題解——移除元素?【LeetCode】

27. 移除元素 快慢指針法 算法思路 使用雙指針(fast和slow)遍歷數組。 fast指針遍歷每一個元素。slow指針指向下一個將被保留的位置。 如果nums[fast] ! val,就把nums[fast]賦值到nums[slow],并將slow向前移動一位。遍歷結束后…

ubuntu20.04安裝多版本python時,如何使用sudo python3.10

sudo 命令只會加載基本的path和動態庫,自己定義的不會加入,因此會出現使用sudo運行多版本python出現奇怪的現象,進行如下操作就可以使用 sudo vi ~/.bashrc alias sudosudo env PATH$PATH LD_LIBRARY_PATH$LD_LIBRARY_PATH 使用 sudo visud…

統計學純基礎(1)

?統計分析分為統計描述與統計推斷,統計推斷分為總體估計與假設檢驗 🏂16:45 醫學研究--基礎研究、轉化醫學研究、臨床研究 臨床研究--病因學研究、診斷準確性試驗、預后研究、療效研究 一般認為3個月以內的預后屬于近期預后,…

接口自動化測試之pytest 運行方式及前置后置封裝

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快 一、Pytest 優點認知 1.可以結合所有的自動化測試工具 2.跳過失敗用例以及失敗重跑 3.結合allure生產美觀報告 4.和Jenkins持續集成 5.很多強大的插件 pytest-htm…

利用folium實現全國高校分布地圖顯示

智匯中國 | 揭秘!一張地圖帶你遨游全國高校殿堂 大家好,這期我們來利用folium模塊實現全國高校分布的地圖顯示。 什么是Folium Folium為Python用戶提供了便捷的方式來利用Leaflet.js的強大地圖可視化功能,而無需直接編寫JavaScript代碼。它允許開發者以Pythonic的方式處理…