RISC-V特權架構 - 中斷與異常概述

RISC-V特權架構 - 中斷與異常概述

  • 1 中斷概述
  • 2 異常概述
  • 3 廣義上的異常
    • 3.1 同步異常
    • 3.2 異步異常
    • 3.3 常見同步異常和異步異常

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

1 中斷概述

在這里插入圖片描述
中斷(Interrupt)機制,即處理器核在順序執行程序指令流的過程中,突然被別的請求打斷而中止執行當前的程序,轉而去處理別的事情,待其處理完了別的事情,然后重新回到之前程序中斷的點,繼續執行之前的程序指令流,其要點如下。

  • 打斷處理器執行程序指令流的“別的請求”便稱之為中斷請求(Interrupt Request),“別的請求”的來源便稱之為中斷源(Interrupt Source)。中斷源通常來自于外圍硬件設備。
  • 處理器轉而去處理的“別的事情”便稱之為中斷服務程序(Interrupt Service Routine,ISR)。
  • 中斷處理是一種正常的機制,而非一種錯誤情形。處理器收到中斷請求之后,需要保存當前程序的現場,簡稱為保存現場。等到處理完中斷服務程序后,處理器需要恢復之前的現場,從而繼續執行之前被打斷的程序,簡稱為“恢復現場”。
  • 可能存在多個中斷源,同時向處理器發起請求的情形,因此需要對這些中斷源進行仲裁,從而選擇哪個中斷源被優先處理。此種情況稱為“中斷仲裁”,同時可以給不同的中斷分配優先級以便于仲裁,因此中斷存在著“中斷優先級”的概念。
  • 還有一種可能是,處理器已經在處理某個中斷過程中(執行該中斷的ISR 之中),此時有一個優先級更高的新中斷請求到來,此時處理器該如何是好呢?有如下兩種可能。

第一種,可能是處理器并不響應新的中斷,而是繼續執行當前正在處理的中斷服務程序,待到徹底完成之后才響應新的中斷請求,這種稱為處理器“不支持中斷嵌套”。
第二種,可能是處理器中止當前的中斷服務程序,轉而開始響應新的中斷,并執行其“中斷服務程序”,如此便形成了中斷嵌套(即前一個中斷還沒響應完,又開始響應新的中斷),并且嵌套的層次可以有很多層。

注意:
假設新來的中斷請求的優先級,比正在處理的中斷優先級低(或者相同),則不管處理器是否能支持“中斷嵌套”,都不應該響應這個新的中斷請求,處理器必須完成當前的中斷服務程序之后,才考慮響應新的中斷請求(因為新中斷請求的優先級并不比當前正在處理的中斷優先級高)。

RISC-V架構默認不支持中斷嵌套。

2 異常概述

異常(Exception)機制,即處理器核在順序執行程序指令流的過程中,突然遇到了異常的事情而中止執行當前的程序,轉而去處理該異常,其要點如下。

? 處理器遇到的“異常的事情”稱為異常(Exception)。異常與中斷的最大區別在于中斷往往是一種外因,而異常是由處理器內部事件或程序執行中的事件引起的,譬如本身硬件故障、程序故障,或者執行特殊的系統服務指令而引起的,簡而言之是一種內因
? 與中斷服務程序類似,處理器也會進入異常服務處理程序
? 與中斷類似,可能存在多個異常同時發生的情形,因此異常也有優先級,并且也可能發生多重異常的嵌套

3 廣義上的異常

如上文所述,中斷和異常最大的區別是起因內外有別。除此之外,從本質上來講,中斷和異常對于處理器而言基本上是一個概念。中斷和異常發生時, 處理器將暫停當前正在執行的程序,轉而執行中斷和異常處理程序;返回時,處理器恢復執行之前被暫停的程序。

因此中斷和異常的劃分是一種狹義的劃分。從廣義上來講,中斷和異常都被認為是一種廣義上的異常。處理器廣義上的異常,通常只分為同步異常(Synchronous Exception)和異步異常(Asynchronous Exception)。

3.1 同步異常

同步異常,是指由于執行程序指令流或者試圖執行程序指令流而造成的異常。這種異常的原因,能夠被精確定位于某一條執行的指令。同步異常的另外一個通俗的表象便是,無論程序在同樣的環境下執行多少遍,每一次都能精確地重現出來。

譬如,程序流中有一條非法的指令,那么處理器執行到該非法指令便會產生非法指令異常(Illegal Instruction Exception),能被精確地定位于這一條非法指令,并且能夠被反復重現。

3.2 異步異常

異步異常,是指那些產生原因不能夠被精確定位于某條指令的異常。異步異常的另外一個通俗的表象便是,程序在同樣的環境下執行很多遍,每一次發生異常的指令PC 都可能會不一樣。

最常見的異步異常是“外部中斷”。比如,外部中斷的發生,是由外圍設備驅動的,一方面外部中斷的發生帶有偶然性,另一方面中斷請求抵達于處理器核之時,處理器的程序指令流執行到具體的哪一條指令更帶有偶然性。因此一次中斷的到來,可能會巧遇到某一條“正在執行的不幸指令”,而該指令便成了“背鍋俠”。在它的指令PC 所在之處,程序便停止執行,并轉而響應中斷去執行中斷服務程序。但是當程序重復執行時,卻很難會出現同一條指令反復“背鍋”的精確情形。

對于異步異常,根據其響應異常后的處理器狀態,又可以分為兩種:
(1)精確異步異常(Precise Asynchronous Exception):指響應異常后的處理器狀態,能夠精確反映為某一條指令的邊界,即某一條指令執行完之后的處理器狀態。
(2)非精確異步異常(Imprecise Asynchronous Exception):指響應異常后的處理器狀態,無法精確反映為某一條指令的邊界,即可能是某一條指令執行了一半然后被打斷的結果,或者是其他模糊的狀態。

3.3 常見同步異常和異步異常

常見的典型同步異常和異步異常,如下表所示,此表可以幫助讀者更加理解同步異常和異步異常的區別。
在這里插入圖片描述在這里插入圖片描述


參考文檔:

  • 《手把手教你設計CPU.RISC-V處理器》

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

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

相關文章

RocketMQ安裝

mq服務端安裝配置啟動把windows做成服務 mq管理界面安裝配置啟動 mq服務端 安裝 RocketMQ下載地址 配置 ROCKETMQ_HOME D:\google-d\rocketmq-all-5.2.0-bin-release啟動 # bin目錄cmd輸入 start mqnamesrv.cmd把windows做成服務 http://t.csdnimg.cn/qd2RD mq管理界面 …

ubuntu22.04安裝mysql8.0

官網下載mysql:MySQL :: Download MySQL Community Server 將mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar上傳到/usr/local/src #解壓壓縮文件 tar -xvf mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar解壓依賴包依次輸入命令 sudo dpkg -i m…

編程筆記 Golang基礎 045 math包

編程筆記 Golang基礎 045 math包 一、math包主要功能常量:函數:數值運算:三角函數:對數函數:隨機數相關: 二、示例代碼一三、示例代碼二小結 Go 語言的標準庫 math 提供了一系列基礎數學函數和常量&#xf…

EasyRecovery數據恢復軟件2024最新版包括Windows和Mac

EasyRecovery數據恢復軟件適用于多種環境和使用場景。首先,它適用于各種操作系統,包括Windows和Mac。無論用戶使用的是哪種操作系統,都可以使用該軟件進行數據恢復。 其次,EasyRecovery支持從各種存儲設備和媒介中恢復數據&#…

自定義BeanNameGenerator生成規則

通過點進ComponentScan注解進入源碼可以看到 追隨BeanNameGenerator進入源碼可以看到該類是個借口且只有一個方法 點擊上面黑色箭頭出現兩個實現方法 點擊第一個方法 進入determineBeanNameFromAnnotation方法中 通過上訴自定義一個生成beanName方法 先創建一個CustomeBeanN…

使用結構體和類在Unity中管理IMU數據

使用結構體和類在Unity中管理IMU數據 IMU數據簡介使用結構體管理IMU數據結構體的優點結構體的使用場景 使用類管理IMU數據類的優點類的使用場景 結構體(struct) vs 類(class)為什么考慮使用結構體 結論 在Unity開發中,合理地選擇數據結構對于確保游戲和應用的性能和…

60 個 CSS 選擇器,一網打盡!

CSS 選擇器用于選擇 HTML 元素并將樣式應用于它們。使用這些選擇器,可以定義特定條件下應用哪些樣式。除了普通的選擇器外,還有偽類和偽元素,用于選擇具有特定狀態或特定部分的元素,并將樣式應用于它們。本文將通過圖文并茂的方式…

Windows11家庭版安裝Docker

文章目錄 安裝Docker安裝hyper-v繼續解決報錯完成效果圖進一步測試是否完成安裝 安裝Docker windows如何安裝docker 裝好之后,我打開報錯。 安裝hyper-v 按這個視頻操作:Windows 11 家庭版安裝 Hyper-V bat文件里的代碼是: pushd "…

【Educoder數據挖掘實訓】異常值檢測-3σ法

【Educoder數據挖掘實訓】異常值檢測-3σ法 開挖! 這個異常值檢測基于的是兩點: 數據往往遵循正態分布在正態分布中, [ μ ? 3 σ , μ 3 σ ] [\mu - 3\sigma, \mu 3\sigma] [μ?3σ,μ3σ]包含了正態分布中 99.74 % 99.74\% 99.74%的數…

【投稿優惠|快速見刊】2024年圖像,機器學習和人工智能國際會議(ICIMLAI 2024)

【投稿優惠|快速見刊】2024年圖像,機器學習和人工智能國際會議(ICIMLAI 2024) 重要信息 會議官網:http://www.icimlai.com會議地址:深圳召開日期:2024.03.30截稿日期:2024.03.20 (先…

2024全國水科技大會暨高氨氮廢水厭氧氨氧化處理技術論壇(四)

一、會議背景 為積極應對“十四五”期間我國生態環境治理面臨的挑戰,加快生態環境科技創新,構建綠色技術創新體系,全面落實科學技術部、生態環境部等部委編制的《“十四五”生態環境領域科技創新專項規劃》,積極落實省校合作&…

pip下載paddle、sklearn、cv2問題

ModuleNotFoundError: No module named ‘paddle‘ ModuleNotFoundError: No module named sklearn No matching distribution found for cv2 Could not build wheels for opencv-python, which is required to install pyproj

什么是BGP網絡 (邊界網關協議)

BGP(邊界網關協議)是一種用于在互聯網中交換路由信息的協議。作為網關或路由器之間的協議,BGP主要用于幫助確定數據包在網絡中的路徑。它通過在不同自治系統(AS)之間交換路徑信息,實現了全球互聯網網絡的連…

MySQL進階之(三)InnoDB數據存儲結構之數據頁結構

三、InnoDB數據存儲結構之數據頁結構 3.1 數據庫的存儲結構3.1.1 MySQL 數據存儲目錄3.1.2 頁的引入3.1.3 頁的概述3.1.4 頁的上層結構 3.2 數據頁結構3.2.1 文件頭和文件尾01、File Header(文件頭部)02、File Trailer(文件尾部) …

【JavaEE】_Spring Web MVC簡介

目錄 1. Spring Web MVC簡介 2. MVC簡介 3. Spring MVC 1. Spring Web MVC簡介 官網對于Spring Web MVC的介紹如下: 鏈接如下: https://docs.spring.io/spring-framework/reference/web/webmvc.html#https://docs.spring.io/spring-framework/refer…

將SU模型導入ARCGIS,并獲取高度信息,多面體轉SHP文件(ARCMAP)

問題:將Sketchup中導出的su模型,導入arcgis并得到面shp文件,進而獲取各建筑的高度、面積等信息。 思路: (1)導入arcgis得到多面體 (2)轉為面shp文件 (3)計算高度/面積等 1、【3D Analyst工具】【轉換】【由文件轉出】【導入3D文件】(在此步驟之間,建議先建立一個…

棧和隊列OJ題

文章目錄 一、雙隊列實現棧二、雙棧實現隊列 一、雙隊列實現棧 題目鏈接: https://leetcode.cn/problems/implement-stack-using-queues/description/ 題目分析: 棧的結構是后進先出,而隊列的結構是先進先出,我們利用這個性質&a…

AI Word Helper (Chorme Extentions) AI單詞助手(谷歌瀏覽器插件)

AI Word Helper (Chorme Extentions) AI單詞助手(谷歌瀏覽器插件) 英文網站,劃詞查單詞,還是看不懂?因為單詞意思那么多,詞性搞不清,上下文搞不清,出來的意思就沒法用,G…

一個基于輪詢的廣告系統

無論PC 客戶端還是手機客戶端,可能會遇到需要發布一些廣告,這些廣告可能是自己開發的,可能是三方的,而且希望是比較通用,能隨時發布,隨時就能看到效果。 本文提供了一種基于輪詢的廣告系統,主要…

【服務器數據恢復】昆騰存儲中raid5磁盤陣列數據恢復案例

服務器數據恢復環境&故障: 10個磁盤柜,每個磁盤柜配24塊硬盤。9個磁盤柜用于存儲數據,1個磁盤柜用于存儲元數據。 元數據存儲中24塊硬盤,組建了9組RAID1陣列1組RAID10陣列,4個全局熱備硬盤。 數據存儲中&#xff0…