查看: 3544|回復: 3
打印 上一主題 下一主題

片上系統中斷機制的可靠性設計

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2010-9-27 17:51:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: DOS , SoC , 龍騰S1 , 中斷
1 引言

嵌入式系統應用中,異步實(shí)時(shí)交互系統占了很大部分,這就要求系統對數據或者控制信號的輸入具有較高的響應速度。相對查詢(xún)方式而言,中斷方式具有響應速度快、效率高等特點(diǎn),因而在嵌入式系統中廣泛采用。隨著(zhù)VLSI進(jìn)入深亞微米時(shí)代,嵌入式系統趨向于片上系統(SOC),中斷控制部分不再由獨立的通用中斷控制芯片構成,而是由系統開(kāi)發(fā)者根據特定的中斷類(lèi)型設計專(zhuān)用的中斷控制邏輯。

目前,對于中斷控制器的設計方法以及中斷的快速轉移等已經(jīng)有大量的研究,但是對于中斷機制的可靠性問(wèn)題研究較少。事實(shí)上,中斷機制的可靠性問(wèn)題是不可忽視的,因為Windows、Unix和Linux等操作系統中,中斷的發(fā)生可以導致系統由用戶(hù)態(tài)進(jìn)入核心態(tài),如果中斷機制存在問(wèn)題,在嚴重情況下可能導致安全漏洞和系統隱患。因而中斷機制的可靠性問(wèn)題對于高可靠性系統來(lái)說(shuō)是一個(gè)重要問(wèn)題。本文嘗試對中斷機制的可靠性問(wèn)題進(jìn)行了一些探 討,從中斷檢測、中斷轉移和中斷處理三個(gè)角度提出了安全性原則和相關(guān)的解決方法,并針對這些問(wèn)題提出了一種安全的中斷機制的實(shí)現。

2 中斷機制可靠性的討論

2.1 概述

中斷是一種控制轉移機制,它引起處理器暫停當前程序的執行,并將控制轉移給中斷處理程序(Interrupt Service Routine),當中斷處理完成之后恢復原來(lái)程序的執行。中斷的處理通常是對當前正在執行的程序透明的,并且保留處理器發(fā)生中斷時(shí)的狀態(tài)。

按照中斷的起源,可以分為以下三種情況:

第一種情況,一個(gè)中斷可能是源于外部事件,一般稱(chēng)之為外部中斷。大多數處理器(如x86微處理器和Alpha微處理器)都采用如下類(lèi)似的方式實(shí)現:處理器的一些物理引腳被設計成可以改變電壓(如從+5V變成-5V),從而引起CPU停止當前工作并開(kāi)始執行處理中斷的特殊代碼——中斷處理程序。依據它們如何發(fā)送給處理器的方法而進(jìn)一步分為可屏蔽中斷(INTR)和不可屏蔽中斷(NMI)。

第二種情況,一個(gè)中斷可能是源于處理器內部,一般稱(chēng)之為異常。這種中斷一般對應于一條指令執行過(guò)程中檢測到的某種狀態(tài)。

第三種情況,一個(gè)中斷可能是源于處理器指令的,一般稱(chēng)之為軟件中斷,如x86微處理器中的INT指令。軟件中斷是一個(gè)指令執行的直接結果。

在本文中,將以上三種中斷統稱(chēng)為中斷。

一般來(lái)說(shuō),一次中斷從發(fā)生到處理結束可以分為中斷檢測、中斷轉移和中斷處理三個(gè)階段,以下依次討論其中的可靠性問(wèn)題。

2.2 中斷檢測中的可靠性問(wèn)題

對于中斷檢測的基本要求是準確及時(shí)檢測所發(fā)生的中斷,并將檢測到的中斷遞交中斷轉移單元。這里所涉及的安全問(wèn)題主要是不會(huì )遺漏發(fā)生的中斷,不因干擾而誤報錯誤的中斷。

對于前者,要求中斷檢測單元具有一定的檢測速度,并且在遞交中斷時(shí)如果中斷轉移單元處于忙碌狀態(tài),需要中斷檢測單元具有保存所發(fā)生的中斷并可延遲提交的能力。

對于后者,一般外部中斷管腳在噪音干擾下可能有短時(shí)間的跳變,如果采用簡(jiǎn)單的電平檢測或者邊沿檢測就會(huì )產(chǎn)生誤報中斷的情況。一種解決的方法是采用邊沿檢測,但是要求邊沿兩側的低電平和高電平持續若干周期。另一種解決的方法是采用電平檢測,如低電平有效,但是要求該電平必須持續若干周期。這樣,通過(guò)加寬檢測范圍的方法,就可以濾除部分噪聲干擾的影響,減少誤報中斷的幾率,維持系統正常的運行。

2.3 中斷轉移中的可靠性問(wèn)題


中斷發(fā)生之后,中斷檢測單元會(huì )觸發(fā)中斷轉移單元,中斷轉移單元應該中斷當前任務(wù)的運行,轉向中斷處理程序。對于簡(jiǎn)單的中斷機制而言,中斷轉移過(guò)程可能只有一個(gè)周期或者幾個(gè)周期;但是,對于復雜的中斷機制而言,中斷轉移過(guò)程可能需要上百個(gè)周期,如x86微處理器中的某些中斷轉移即是如此。所以,中斷轉移中的安全問(wèn)題主要是必須保證中斷轉移的完整性,或者中斷轉移的不可中斷性,否則,系統狀態(tài)將進(jìn)入一種未知的狀態(tài)。

一種解決方法是在中斷轉移的過(guò)程中將中斷轉移單元置于忙碌狀態(tài),中斷檢測單元應停止中斷的提交。

2.4 中斷處理中的可靠性問(wèn)題

中斷處理中面臨的安全問(wèn)題主要是正確的維護系統狀態(tài),包括處理器狀態(tài)(如寄存器等)和系統表狀態(tài)等。中斷處理可以使用兩種方式,一種是發(fā)生中斷的任務(wù)中的某段程序來(lái)進(jìn)行處理,另一種是采用另外一個(gè)獨立的任務(wù)來(lái)進(jìn)行處理。前者只需要在同一 任務(wù)內進(jìn)行控制轉移,只需保存中斷處理程序使用的部分寄存器,比較簡(jiǎn)單,轉移過(guò)程也比較好;后者需要發(fā)生任務(wù)切換,可以保存處理器的全部寄存器狀態(tài),對中斷具有較好的隔離性,但是需要花費的時(shí)鐘周期數目較多。為了兼顧轉移的效率和處理的安全程度,有必要對全部中斷進(jìn)行合理的分類(lèi),對于非嚴重的中斷采用當前任務(wù)處理,對于嚴重的中斷必須采用獨立的任務(wù)進(jìn)行處理。如果對于系統的性能要求較高,可以為中斷處理程序專(zhuān)門(mén)保留一些寄存器使用,這些保留的寄存器在非中斷處理程序中是不可見(jiàn)的。

中斷處理時(shí)另外一個(gè)安全問(wèn)題和中斷轉移類(lèi)似,即正在執行中斷處理程序又發(fā)生了另外的中斷,中斷處理程序應該繼續執行還是響應新的中斷。如果肓目的忽略中斷繼續執行,可能錯過(guò)對某些中斷的處理時(shí)機;如果及時(shí)響應新發(fā)生的中斷,多次中斷嵌套可能導致堆棧溢出等問(wèn)題。一種解決方法是對中斷分級,高優(yōu)先級中斷可以中斷低優(yōu)先級的中斷處理程序,但是低優(yōu)先級中斷不可中斷高優(yōu)先級的中斷處理程序;同時(shí),對中斷分類(lèi),限制某些嚴重中斷嵌套的層數,而不限制非嚴重中斷的嵌套層數。

3 “龍騰S1”片上系統中的中斷機制可靠性設計

在西北工業(yè)大學(xué)最近實(shí)現的一種面向工業(yè)控制的SOC芯片“龍騰S1”中,所實(shí)現的中斷機制嚴格的考慮了安全性問(wèn)題!褒堯vSl”片卜系統應用于工業(yè)控制的嵌入式應用中,內含32位嵌入式微處理器、PC104總線(xiàn)控制器、SDRAM控制、電子盤(pán)控制器和串并口控制器等,是PC104系統的高度集成!褒堯vS1”支持256個(gè)硬件中斷和軟件中斷,中斷的整體分布和主要屬性如表1所示。



由表1可以看到,除NMI之外,中斷分為三種類(lèi)型:故障、陷阱和中止。故障主要用于指令執行之前的中斷檢測,故障處理完畢之后,故障指令可以重新執行;陷阱主要用于指令執行結束之后的巾斷通知,陷阱處理完畢之后,系統將繼續執行下一條應該執行的指令;中止用來(lái)匯報系統的嚴重錯誤,系統接收到中止異常之后,處理程序需要重建各種系統表,并可能需要重新啟動(dòng)操作系統。

3.1 中斷檢測中的可靠性考慮

對于外部中斷的檢測,采取了上升沿的檢測方法,要求低電平和高電平各持續8個(gè)周期以上。

對于中斷提交的時(shí)機,指令內部中斷可在中斷轉移單元空閑的任何時(shí)間提交,以便盡快的中斷轉移并進(jìn)人中斷處理程序;而對于外部中斷則需要在指令窗口之間提交(即上一條指令執行結束和下一條指令即將開(kāi)始之時(shí)),以便保持指令執行的完整性。

3.2 中斷轉移中的可靠性考慮

由于中斷轉移周期較長(cháng),所以中斷轉移是依靠處理器固化的微程序實(shí)現的。為了防止中斷轉移被新的中斷所打斷,中斷轉移微程序首先設置中斷電路中的狀態(tài)標志字為忙碌狀態(tài),這樣可以避免中斷檢測電路再次提交新的中斷,從而保證中斷轉移的完整性。在中斷轉移完畢后,中斷轉移微程序設置中斷電路的狀態(tài)標志字為空閑狀態(tài)。

3.3 中斷處理中的可靠性考慮

“龍騰S1”為中斷的處理提供了兩種方式:中斷/陷阱門(mén)和任務(wù)門(mén)。前者無(wú)需任務(wù)切換,而后者實(shí)施任務(wù)切換。如前所述,對于嚴重錯誤,如無(wú)效TSS(任務(wù)狀態(tài)段)、雙故障等,必須使用任務(wù)門(mén)進(jìn)行中斷處理,這樣可以保證處理程序在一個(gè)有效的任務(wù)環(huán)境之中。其他中斷通?稍诋斍叭蝿(wù)環(huán)境中進(jìn)行處理。中斷門(mén)和陷阱門(mén)的唯一區別是中斷門(mén)屏蔽可屏蔽中斷,而陷阱門(mén)不屏蔽可屏蔽中斷,用戶(hù)可以根據需要進(jìn)行選擇。

“龍騰S1”為了保證中斷處理過(guò)程中的堆棧安全,為不同特權級設置了不同的堆棧!褒堯vS1”支持四種特權級,一般操作系統運行在最高特權級0,用戶(hù)程序運行在最低特權級3。當用戶(hù)程序發(fā)生中斷時(shí),無(wú)論是通過(guò)中斷/陷阱門(mén)處理還是任務(wù)門(mén)處理,如果處理器由最低特權級轉換到最高特權級,堆棧也會(huì )隨之改變。通過(guò)這種機制,可以保證中斷處理程序具有自己的堆棧,從而可以保證有足夠的空間來(lái)保存處理器狀態(tài)和任務(wù)上下文等。有關(guān)四種特權級下的堆棧指針信息全部保存在任務(wù)的任務(wù)狀態(tài)段(Task State Segment)中,堆棧切換時(shí)新的堆棧將從任務(wù)狀態(tài)段中讀取。

“龍騰S1”中為中斷定義的優(yōu)先級如上表所示,一般在處理低優(yōu)先級中斷時(shí)又發(fā)生高優(yōu)先級中斷可以串行處理。但是,發(fā)生某些嚴重問(wèn)題時(shí),系統將不再發(fā)生新產(chǎn)生的中斷,而是匯報雙故障中斷。按照各種中斷的嚴重程序,從輕到重將中斷分為良性、協(xié)作、頁(yè)故障和中止,如上表所示。至于哪些中斷的連續發(fā)生會(huì )導致雙故障,需要按照中斷性質(zhì)進(jìn)行考慮,如表2所示。



表2中第一行所列為正在處理的中斷性質(zhì),第一列為又發(fā)生的中斷性質(zhì),表格內容中所采取的策略:串行處理,雙故障、頁(yè)故障和中止?煽吹竭B續發(fā)生良性異常,由于中斷嚴重程序較低,系統策略為串行處理;而對于最為嚴重的中止,發(fā)生任何中斷都會(huì )導致系統進(jìn)入停機狀態(tài),即只有通過(guò)NMI信號輸入或者系統復位才能使處理器重新啟動(dòng)。最后,我們給出“龍騰S1”中的中斷檢測電路(圖1)和中斷轉移流程(圖2)。


4 小結

中斷機制為處理外部請求(如外設請求)和指令執行過(guò)程中的一些異常情況和事件提供了有力的支持。中斷的處理將會(huì )導致控制的轉移——從應用程序轉移到系統的中斷處理程序。本文重點(diǎn)討論了這一過(guò)程中中斷檢測、中斷轉移和中斷處理三個(gè)階段中的可靠性問(wèn)題,分別給出了若干設計規則,最后給出了一種工業(yè)控制用片上系統“龍騰S1”中的安全考慮和實(shí)現方法!褒堯vS1”片上系統已經(jīng)使用SMIC 0.18微米工藝流片,樣片測試中可以運行未經(jīng)修改的DOS 6.22操作系統,并能運行大量應用程序,從而證明本文針對中斷的可靠性設計是有效的。本文的研究結果對口益普遍的片上系統中的中斷控制單元設計有著(zhù)重要的參考價(jià)值。
沙發(fā)
發(fā)表于 2010-9-29 14:21:02 | 只看該作者
學(xué)習了
板凳
發(fā)表于 2011-2-11 08:19:40 | 只看該作者
地板
發(fā)表于 2011-2-14 12:00:25 | 只看該作者
看看
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页