編輯語:
晶片開放社群(OCC)面向開發者推出RISC-V系列内容,通過多角度、全方位解讀RISC-V,系統性梳理總結相關理論知識,建構RISC-V知識圖譜,促進開發者對RISC-V生态全貌的了解。
上期的【技術解碼】中,我們對比介紹了提高RISC-V處理器資料并行性的技術,即
Vector向量計算技術與SIMD技術。在處理器中,除了需要提高資料并行性,中斷實時性也是考量處理器性能的重要名額。
是以,本期内容我們将為大家介紹CPU處理外部事件的中斷技術,以豐富RISC-V系列内容中處理器技術主題的内容。
01 什麼是中斷
中斷是CPU處理外部事件的一個重要技術。它能使CPU暫停正在執行的任務,轉而進行中斷請求,處理完成後傳回斷點,繼續執行原來的任務。
02 中斷與輪詢的差別
在一個SoC中,外部裝置與CPU的互動一般有兩種手段:輪詢和中斷。
輪詢是指CPU不斷查詢外設的狀态寄存器,進而了解裝置的狀态,進行必要的操作。為了節約CPU資源,查詢工作往往不是連續的,而是定時進行。輪詢方式具有簡單,易實作,易控制的優勢,同時也存在浪費CPU和系統資源,無法及時感覺裝置狀态變化的不足。
中斷,顧名思義,就是打斷正在進行的工作。中斷不需要處理器輪詢裝置的狀态,裝置在自己發生狀态改變時将主動發送一個中斷請求給處理器,後者在接收到這一請求時,會暫停目前正在執行的任務,轉而去處理外設的中斷請求。
目前大多數SoC的外設都采用中斷的方式與處理器進行溝通,本文将重點介紹與中斷實時性相關的技術。
03 中斷實時性的概念
中斷實時性是指CPU響應中斷的快慢程度,我們可以用中斷響應時間來衡量它。CPU響應中斷,可以分為以下幾個步驟:
(1)完成目前指令的執行
(2)保護現場
(3)尋找中斷入口
(4)執行中斷處理程式
(5)中斷傳回并恢複現場
中斷響應時間,就是從上述第(1)步開始,到第(4)步的第一條指令為止,所花費的時間。在很多系統,特别是實時系統中,必須盡量縮短中斷響應時間,以提高中斷的實時性。
04 提高中斷實時性的技術
我們重點介紹兩項技術,分别用來加速上述的第(1)步和第(4)步。
4.1 中斷快速響應模式——加速完成目前指令
在通常情況下,CPU會在每條指令的“退休”階段響應中斷。所謂“退休”,是指一條指令已經完成了所有的操作,即将從流水線上退出。如果CPU執行了多周期指令或者執行延時不可預期指令,那麼該條指令需要較長的時間才能到達“退休”階段。此時的中斷響應速度會受到極大影響,大幅降低系統的實時性。
在中斷快速響應模式下,CPU無需等待指令退休,即可直接響應中斷。這一機制可以打斷較長執行延時的指令,進而提高中斷響應的速度。
【例】玄鐵R807實作了中斷快速響應模式,軟體可以通過控制寄存器打開/關閉此功能。 假設目前指令是一條Load指令,在沒有cache或cache miss的情況下,CPU需要讀取memory。受總線帶寬和memory延時的影響,該指令的執行時間不确定。
|
4.2 利用TCM——更快開始進行中斷
TCM是Tightly Coupled Memory的縮寫,意思是緊耦合Memory。所謂“緊耦合”,是指與CPU的流水線緊密結合。我們可以把TCM通俗地了解為“CPU身邊的memory”。它可以像一般memory一樣讀寫,同時不受總線帶寬的影響,可以保證單周期通路。TCM用于存放對實時性有嚴格要求的指令和資料,當然也是加速中斷處理的有力手段。
【例】玄鐵I805和R807實作了TCM。下面對比一下使用TCM與否的差别。
|
05 下期預告
有關中斷實時性及處理技術,我們就介紹到這裡。下期内容,我們将為大家介紹RISC-V的工具鍊,歡迎大家持續關注RISC-V系列内容。