專利名稱:執(zhí)行計算機程序的方法、操作系統(tǒng)以及計算設備的制作方法
技術領域:
本發(fā)明涉及一種用于執(zhí)行在計算設備上、特別是微處理器上的計算機程序的方法。該計算機程序包括多個程序對象。在該方法中,在執(zhí)行計算機程序的過程中對計算設備檢測錯誤。
此外,本發(fā)明還涉及一種操作系統(tǒng),該操作系統(tǒng)能運行在計算設備上,尤其是運行在微處理器上。
最后,本發(fā)明也涉及一種用于執(zhí)行計算機程序的計算設備,該計算機程序包括多個程序對象。該計算設備具有錯誤發(fā)現(xiàn)機制用于檢測在計算設備上執(zhí)行計算機程序期間的錯誤。
現(xiàn)有技術在計算設備上執(zhí)行計算機程序期間,會導致所謂的暫態(tài)錯誤。因為半導體模塊(所謂芯片)的結構越來越小、而信號的時鐘頻率越來越大并且信號的電壓越來越低,所以總是經(jīng)常出現(xiàn)暫態(tài)錯誤。與永久錯誤相反,暫態(tài)錯誤僅短暫出現(xiàn)并且通常在一段時間后又自己消失。在暫態(tài)錯誤的情況下僅僅單個的位錯誤,而并沒有持久地損害計算設備本身。暫態(tài)錯誤可能出于不同的原因,例如電磁輻射、α粒子或者中子。
今天,在通信系統(tǒng)中暫態(tài)錯誤已經(jīng)成為錯誤處理中的重點。在通信系統(tǒng)(例如在控制器局域網(wǎng),CAN中)公知的是在檢測到錯誤時重新發(fā)送被確定為有錯誤的數(shù)據(jù)。此外,還公知在通信系統(tǒng)中使用錯誤計數(shù)器,該錯誤計數(shù)器在檢測到錯誤時增加,在正確的發(fā)送時遞減,并且只要該錯誤計數(shù)器超過確定的值,就阻止數(shù)據(jù)的發(fā)送。
然而,在用于執(zhí)行計算機程序的計算設備中基本上僅針對永久錯誤來進行錯誤處理。對暫態(tài)錯誤的考慮限于錯誤計數(shù)器的累加和必要時為遞減。該錯誤計數(shù)器被設置在存儲器中并且能夠離線地即例如在構造為汽車控制設備的計算設備中在車間停留期間作為診斷或者錯誤信息被讀出。接著才會對錯誤進行相應地反應。
借助錯誤計數(shù)器的錯誤處理即一方面在尤其是對安全相關的系統(tǒng)所必需的短暫容錯時間內不允許錯誤處理,而另一方面在這個意義上也不允許構造性的錯誤處理,即在容錯時間內因此計算機程序又被執(zhí)行。代替計算機在現(xiàn)有技術中計算機在超過錯誤計數(shù)器的確定值之后被切換到應急工作。這意味著,代替有錯誤的計算機程序其它計算機程序被執(zhí)行并且為進一步計算考慮到以這樣的方式所確定的替代值。替代值例如能按照其它參量來模型化。替換地,通過計算機程序的有錯誤部分計算出的結果作為有錯誤的而被丟棄并且為了進一步計算通過為應急工作設置的標準值被代替。因此,公知的用于處理運行在計算設備上的計算機程序的暫態(tài)錯誤的方法不能夠系統(tǒng)地、結構地應對大多數(shù)錯誤的暫態(tài)性質。
此外,根據(jù)現(xiàn)有技術還公知在計算機設備上執(zhí)行計算機時通過計算機設備的完全重新啟動來消除所出現(xiàn)的暫態(tài)錯誤。該解決方案也不能真正令人滿意,因為在現(xiàn)有的計算機程序執(zhí)行的過程中會丟失所獲得的參量并且計算設備在重啟的持續(xù)時間中不能執(zhí)行其通常的功能。特別是在安全相關的系統(tǒng)中這是不能接受的。
最后,作為在計算設備上被執(zhí)行的計算機程序的暫態(tài)錯誤的錯誤處理還公知將計算機程序復位一段時間并且重復計算機程序的單個機器指令。該方法也被稱作微回滾(Micro Roll-Back)。在公知的方法中,僅僅對象被回跳到機器層(時鐘、機器指令)上。這要求對機器層的相應硬件支持,這與計算設備的領域內的極大費用相關。公知方法的實施單純地通過軟件來控制是不可能的。
現(xiàn)有技術中公知的錯誤處理機制并不能夠以恰當?shù)姆绞綄υ谟嬎阍O備上執(zhí)行計算機程序時出現(xiàn)的暫態(tài)錯誤做出反應。
但是,暫態(tài)錯誤在未來技術中卻是極為頻繁的。如果發(fā)現(xiàn)暫態(tài)錯誤,例如它通過雙核機制,則因此始終保持應答錯誤定位的詢問,以便標識正確的結果。當有目的使暫態(tài)錯誤不再導致計算機的重新啟動時,這就越適合。錯誤定位典型如所描述地只能通過開銷比較大的方法來實現(xiàn)。
本發(fā)明的技術問題是當在計算機系統(tǒng)中執(zhí)行計算機程序時,構造性地處理暫態(tài)錯誤使得在盡可能短的容錯時間內重新產(chǎn)生計算機系統(tǒng)的完整功能和功能安全性。
為了解決該技術問題,從上面所述類型的方法出發(fā)建議在檢測到錯誤時至少一個已執(zhí)行的程序對象被轉移進所定義的狀態(tài)中并且從該狀態(tài)出來被重新啟動。
當然,對系統(tǒng)層還提出以下問題如何能有效地使用作業(yè)重復的概念。通常,并不是這樣的情況,即能簡單地再次計算任意有錯誤的作業(yè),因為附加必需的計算時間和為此所使用的時刻從系統(tǒng)上看被不同計劃。當處理器負載已接近100%(通常是這樣)時,則通過這種未計劃的附加負載(如該負載表示作業(yè)重復)產(chǎn)生系統(tǒng)的過載,過載典型地會導致崩潰。當考慮時間受控的系統(tǒng)時(如所表示的那樣,這些系統(tǒng)至少部分得以實施),這將變得更為明顯。在這些系統(tǒng)中,截止時間損害是不可容忍的,在大多數(shù)其它嚴格的實時概念中同樣不能容忍。
因此得到,即從系統(tǒng)來看必須考慮到能由潛在作業(yè)重復形成的附加負載。當根據(jù)每個作業(yè)維持作業(yè)重復必需的計算時間時,則該作業(yè)無疑是有效的,當然為了非錯誤處理系統(tǒng)必須付出100%的附加性能。從成本來看,這是不能接受的。
因此,本發(fā)明的任務是提供一種優(yōu)化的系統(tǒng)策略,該系統(tǒng)策略不再考慮兩次計算作業(yè)(以及由此產(chǎn)生持久和很大的費用)并且同時解決這些問題,如這可與時間受控的方法相關。
發(fā)明內容
因此,在根據(jù)本發(fā)明的系統(tǒng)策略的范圍內建議了一種方法、一種操作系統(tǒng)以及一種計算設備,該系統(tǒng)策略允許將作業(yè)重復的概念與最小或者甚至沒有性能費用結合。在這樣的情況下,這種系統(tǒng)策略是用于作業(yè)、任務、程序或者程序部分的調度方法的邊界條件,此外該邊界條件還被稱作程序對象或者一些程序對象。
重新被啟動的程序對象在檢測到錯誤時不必完全被執(zhí)行。在本發(fā)明的意義上,這種程序對象在出現(xiàn)錯誤時也能被重新啟動,該程序對象在檢測到錯誤時刻還沒有完全被執(zhí)行,但是又剛好已經(jīng)開始其執(zhí)行。根據(jù)本發(fā)明,即在出現(xiàn)暫態(tài)或者永久錯誤時重新執(zhí)行至少一個操作系統(tǒng)對象。相對于微回滾的優(yōu)點尤其是在于程序對象的重復能用很小的硬件支持來實現(xiàn)。最多必需額外的存儲器位置,以便能夠存儲幾個對重新實施程序對象所必需的信息(例如程序對象的輸入?yún)⒘?。根據(jù)本發(fā)明的方法的實際管理能通過計算設備的操作系統(tǒng)來實施。即根據(jù)本發(fā)明的方法能用傳統(tǒng)的商用處理器來實現(xiàn),而不需要額外的硬件。但是不言而喻,也可以用于硬件支持實現(xiàn)根據(jù)本發(fā)明的方法。
因此,與現(xiàn)有技術相比,更有利的是,再次計算有錯誤的作業(yè)即有錯誤的任務或有錯誤的程序或者程序部分或程序對象或者至少操作系統(tǒng)對象。如果該錯誤原本是暫態(tài)的,則在重新計算時這兩個輸出是相同的,即錯誤消失并且通過重新計算來進行處理。
因此,有利地,表示了一種用于執(zhí)行在計算設備上尤其是在微處理器上的計算機程序的方法,其中計算機程序包括多個程序對象并且在該方法中在計算設備上執(zhí)行計算機程序期間檢測到錯誤,其中程序對象被分成至少兩個類,其中在檢測到錯誤時重復第一類的程序對象而再檢測到已經(jīng)執(zhí)行的第一類程序對象中的錯誤時,代替第二類程序對象重新啟動第一類程序對象。
在這樣的情況下,錯誤的檢測僅僅在重新被啟動的第一類中實施。
恰當?shù)?,對所有程序對象設置有一個循環(huán)的總計算時間并且這樣地劃分總計算時間,使得在檢測到錯誤時重新啟動的程序對象在有錯誤的情況下獲得一個循環(huán)的總計算時間的最多50%,其中不同類的程序對象交替地執(zhí)行并且第一類的有錯誤的程序對象代替緊接其后的第二類的程序對象被執(zhí)行或被重新啟動。
根據(jù)任意的方法能夠自己進行錯誤檢測??梢钥紤]的是使用任意類型的錯誤發(fā)現(xiàn)機制、該機制能檢測到執(zhí)行計算機程序(所謂并發(fā)檢驗)期間的錯誤。例如在雙核架構中,雙倍地構造整個計算機核。當計算機核以鎖步模式工作,對任何指令能比較計算機核是否提供相同的結果。于是這些結果的差別肯定會推斷出存在錯誤。錯誤發(fā)現(xiàn)機制實時發(fā)現(xiàn)執(zhí)行程序對象期間的錯誤。相應地,也適于錯誤發(fā)現(xiàn)的代碼,該代碼被連續(xù)地用于處理器架構中,或者適于計算設備的相同的部分組件。所有這些錯誤發(fā)現(xiàn)機制共同點在于它們很迅速地發(fā)現(xiàn)暫態(tài)錯誤并且當錯誤被發(fā)現(xiàn)時提供錯誤信號。
根據(jù)錯誤信號來啟動錯誤處理機制,該錯誤處理機制重復程序對象。如果在重新執(zhí)行時再次出現(xiàn)相同的錯誤,則被推斷出永久錯誤,或者增加錯誤計數(shù)器,其中當錯誤計數(shù)器超過確定的值時才推斷出永久錯誤。相反,如果在重新執(zhí)行程序對象時不再出現(xiàn)該錯誤,則由此能得到,該錯誤為暫態(tài)錯誤。在無錯誤地重新執(zhí)行程序對象期間,該計算機程序還準備好其通常的功能。即可用性已在最短時間之后又重復。因此,重復至少一個程序對象是一種處理暫態(tài)錯誤良好的方法。
根據(jù)本發(fā)明的有利的擴展方案,建議將程序對象構造為計算機程序的運行時間對象(以下稱作特殊作業(yè))并且在錯誤的檢測中重新執(zhí)行至少一個作業(yè)。作業(yè)尤其是操作系統(tǒng)層上是典型對象。如果希望甚至純粹軟件地控制,則作業(yè)的重復能用最小的開銷來實現(xiàn)。
根據(jù)本發(fā)明的優(yōu)選的實施形式,建議重新啟動在錯誤發(fā)現(xiàn)的時刻所執(zhí)行的程序對象。但是替換地或者附加地,也能啟動或者重新執(zhí)行程序對象,該程序對象在檢測到錯誤的時刻已經(jīng)被完全執(zhí)行。
建議在執(zhí)行計算機程序期間特別是開始執(zhí)行計算機程序時產(chǎn)生并且存儲程序對象的至少一個被定義的狀態(tài)。這例如能通過這樣的方式來實現(xiàn),即存儲所有對程序對象的狀態(tài)相關的參量。
此外,建議為了錯誤發(fā)現(xiàn)使用相對于其上執(zhí)行具有多個程序對象的計算機程序的計算設備冗余工作的其它設備。不言而喻,也將多于一個的冗余計算設備用于錯誤檢測。
有利地,根據(jù)本發(fā)明的方法應用在汽車中,特別是應用在汽車控制設備中,盡管在執(zhí)行計算機程序時不可避免暫態(tài)錯誤但是保證了計算機程序的執(zhí)行安全和可靠。這特別是在汽車中對安全要求嚴格的應用中的控制程序和/或調節(jié)程序的執(zhí)行是重要的。
此外,還建議當在重新執(zhí)行至少一個程序對象時重新出現(xiàn)相同的錯誤,則推斷出永久錯誤。也可考慮的是,當在重復程序對象可規(guī)定的數(shù)量之后還始終出現(xiàn)錯誤,才推斷出永久錯誤。即在這樣的情況下,如果在第三次或者更后面重復程序對象之后錯誤消失,則還推斷出暫態(tài)錯誤。通過本發(fā)明的擴展方案,重要的程序對象能被重復3次而不是僅僅2次。
根據(jù)本發(fā)明的另一有利的擴展方案,建議了至少一個程序對象的重復的數(shù)量被限制在預給定的值上。由此防止在永久錯誤時隨便經(jīng)常地重復相同的程序對象。例如借助計算器或者通過時間限制來實現(xiàn)對至少一個程序對象重復的數(shù)量的限制。此外通過預給定與作業(yè)相關的重復值還能夠實現(xiàn)比不是很重要的作業(yè)更經(jīng)常地重復重要的作業(yè),并且因此提供比不是很重要的作業(yè)更經(jīng)?;蛘吒L地為重要的作業(yè)提供可能性,而沒有暫態(tài)錯誤無錯誤地運行,在不是很重要的作業(yè)中相對迅速地推斷出永久錯誤并且引起另一系統(tǒng)反應。
根據(jù)本發(fā)明的另一優(yōu)選實施形式,建議了至少一個程序對象的重復的數(shù)量動態(tài)地被限制在可規(guī)定的值上。優(yōu)選地,至少一個程序對象的重復數(shù)量根據(jù)用于調度的剩余復位時間被動態(tài)地限制在可規(guī)定的值上。以這樣的方式例如能通過第一作業(yè)和第二作業(yè),而第三作業(yè)能被多次重復。
為了實現(xiàn)根據(jù)本發(fā)明的方法,建議了在執(zhí)行計算機程序期間在執(zhí)行程序對象之前存儲執(zhí)行程序對象所必需的或者定義程序對象的狀態(tài)的參量。即根據(jù)該實施形式,存儲所有程序對象的參量。
作為替代方案,建議了在一個周期內周期待執(zhí)行的計算機程序中當對確定的程序對象檢測到錯誤時回跳到在計算機程序的周期中的預給定的回跳點。根據(jù)該實施形式,即在錯誤的情況下在該周期內始終回跳到相同的位置。優(yōu)選地,在執(zhí)行計算機程序期間只有在執(zhí)行程序對象之前在回跳點主要用于與程序對象相關的參量被存儲。即在回跳點對每個循環(huán)或者周期僅僅必需存儲程序對象的相關參量一次。由此,能夠節(jié)約存儲的時間和存儲的位置。
接著在在檢測到錯誤之后重新執(zhí)行程序對象時,調用被存儲的輸入量并且被提供給重新被執(zhí)行的程序對象作為輸入量。
作為本發(fā)明的另一實施形式,建議了為程序對象設置有多個回跳點。在出現(xiàn)錯誤時,不必重新執(zhí)行整個程序對象,而是僅僅重新執(zhí)行程序對象的一部分。在出現(xiàn)錯誤時,簡單地回跳到那個前面經(jīng)過的回跳點,直到程序對象的執(zhí)行沒有錯誤。例如,在直到第n回跳點無錯誤執(zhí)行程序對象當在第n回跳點與第n+1回跳點之間出現(xiàn)錯誤時則能回跳到第n回跳點。因此,該程序對象從第n回跳點起被重新執(zhí)行。因此,可能節(jié)約時間。優(yōu)選地,在超過任何回跳點時在執(zhí)行程序對象期間分別產(chǎn)生和存儲至少一個被定義的狀態(tài)。
特別重要的是,以操作系統(tǒng)的形式實現(xiàn)根據(jù)本發(fā)明的方法。在這樣的情況下,操作系統(tǒng)能運行在計算設備上尤其是能運行在微處理器上并且當操作系統(tǒng)運行在計算設備上時為了實施根據(jù)本發(fā)明的方法編程操作系統(tǒng)。在這樣的情況下即本發(fā)明通過操作系統(tǒng)來實現(xiàn),使得該操作系統(tǒng)以相同的方式如操作系統(tǒng)適于其實施的方法來表示本發(fā)明。該操作系統(tǒng)優(yōu)選被存儲在存儲器元件上并且為了執(zhí)行而傳送給計算設備。作為存儲元件尤其是可應用任何數(shù)據(jù)載體或者電子存儲器介質,例如隨機存儲器(RAM)、只讀存儲器(ROM)或者閃速存儲器。
作為本發(fā)明的任務的另一解決方案,從前面所述類型的計算設備出發(fā)建議了,計算設備具有錯誤處理機制,該錯誤處理機制在檢測到錯誤時通過錯誤發(fā)現(xiàn)機制引起至少一個程序對象的重新執(zhí)行。
根據(jù)本發(fā)明的有利擴展方案,建議了錯誤處理機制具有觸發(fā)邏輯,該錯誤觸發(fā)邏輯在檢測到錯誤時重新啟動至少一個程序對象。
根據(jù)優(yōu)選的實施形式,建議了實時操作系統(tǒng)例如OSEK運行在計算設備上。最后,建議了計算設備包括微處理器。
本發(fā)明的另一些特征、應用可能性和優(yōu)點從以下在附圖中所表示的本發(fā)明的實施形式的說明中得到。在這樣的情況下,所有所描述的或者所表示的特征本身或者以本發(fā)明的主題的任意組合,與其在權利要求中的結合或者其回引無關地或者與其表達或者圖示無關地形成在說明書中或形成在附圖中。其中圖1示出了按照其優(yōu)選實施形式的根據(jù)本發(fā)明的方法的流程圖;圖2大致示出了根據(jù)其優(yōu)選實施形式的根據(jù)本發(fā)明的計算設備;圖3由圖3a和3b組成地示出了根據(jù)本發(fā)明的用于結合作業(yè)重復的方法。
具體實施例方式
本發(fā)明涉及一種用于在計算設備上尤其是在微處理器上執(zhí)行計算機程序的方法。該計算機程序包括多個程序對象,這些程序對象優(yōu)選構造為作業(yè)。在該方法中在計算設備上執(zhí)行計算機程序期間檢測到錯誤。被檢測到的錯誤可以是暫態(tài)(即暫時的)或者永久錯誤。
在計算設備上執(zhí)行計算機程序期間會出現(xiàn)暫態(tài)錯誤。因為計算設備的半導體模塊(所謂芯片)上的結構越來越小,但信號的時鐘頻率越來越大以及信號的電壓越來越低,所以在計算設備上執(zhí)行計算機程序時越來越頻繁地出現(xiàn)暫態(tài)錯誤。與永久錯誤相反,僅僅暫時出現(xiàn)錯誤并且在一段時間之后通常又消失。在暫態(tài)錯誤中,僅單個位是錯誤的,而計算設備本身沒有持久地損害。暫態(tài)錯誤能有不同的原因,如例如電磁輻射、α粒子或者中子。
由于暫態(tài)錯誤幾乎不可預測地出現(xiàn)并且因此不能重現(xiàn)的事實,在現(xiàn)有技術公知的計算設備中基本上僅對永久錯誤進行錯誤處理。暫態(tài)錯誤的考慮限于錯誤計數(shù)器的累加和必要時遞減。該錯誤計數(shù)器被設置在存儲器中并且能夠離線地即例如在構造為汽車控制設備的計算設備中在車間停留期間作為診斷或者錯誤信息被讀出。接著才會對錯誤相應地反應。公知的錯誤處理即尤其是對安全相關的系統(tǒng)所必需的短暫容錯時間內不允許錯誤處理,而另一方面在這個意義上也不允許構造性的錯誤處理,即在容錯時間內因此計算機程序又被執(zhí)行并且計算設備能完成其通常的任務。
與此相反,根據(jù)本發(fā)明的方法允許通過系統(tǒng)地、結構地應對大多數(shù)錯誤的暫態(tài)性質來處理運行于計算設備上的計算機程序的暫態(tài)錯誤。根據(jù)本發(fā)明的流程圖例如運行對象、所謂作業(yè)表示在圖1中。其它作業(yè)的存在沒有影響原則上過程,即省去考慮。這樣如根據(jù)圖1所表示的過程來執(zhí)行作業(yè),即根據(jù)本發(fā)明還能執(zhí)行多個作業(yè)。并行工作的錯誤發(fā)現(xiàn)機制是特別有利的(所謂并發(fā)檢驗)。但是在流程圖中并沒有這樣表示它,它作為串聯(lián)模塊附裝在相應位置上。
在功能塊1中開始根據(jù)本發(fā)明的方法。在功能塊1中在計算設備上開始作業(yè)的執(zhí)行,該作業(yè)被調用。在功能塊2中,產(chǎn)生回跳點。為此目的,足夠將作業(yè)置于用于重新啟動的被定義的狀態(tài)中并且再次啟動作業(yè)的作業(yè)輸入量存儲在計算設備的存儲元件中。優(yōu)選地,作業(yè)的所有輸入量被存儲。接著在功能塊3中進一步執(zhí)行作業(yè)。在另一回跳點或者直到作業(yè)的結束能夠進行執(zhí)行。因此,錯誤發(fā)現(xiàn)機制被執(zhí)行。錯誤檢測能按照任意方法來進行。在執(zhí)行計算機程序(所謂并發(fā)檢驗)期間檢測到錯誤。這樣例如在雙核架構中,雙倍地構造整個計算機核。當計算機核以鎖步模式工作,對任何指令能比較,計算機核是否提供相同的結果。于是這些結果的不同肯定能夠推斷出存在錯誤。這種錯誤發(fā)現(xiàn)機制實時發(fā)現(xiàn)執(zhí)行程序對象期間的錯誤。相應地,也適于錯誤發(fā)現(xiàn)的代碼,該代碼被連續(xù)地用于處理器架構中,或者適于計算設備的相同的部分組件。優(yōu)選地使用這種錯誤發(fā)現(xiàn)機制,當檢測到錯誤時迅速地發(fā)現(xiàn)暫態(tài)錯誤并且提供相應的錯誤信號。
在詢問塊4中檢驗,錯誤即暫態(tài)或者永久錯誤是否被發(fā)現(xiàn)。如果錯誤被發(fā)現(xiàn),則在另一詢問塊7中被分叉,在那里錯誤計數(shù)器邏輯的當前值被檢驗。如果錯誤計數(shù)器還未低于可規(guī)定的值(在遞減的錯誤計數(shù)器中)或者超過(在累加的錯誤計數(shù)器中)時,還能執(zhí)行在其處理期間出現(xiàn)錯誤的作業(yè)一次,或者確定數(shù)量的在出現(xiàn)錯誤之前被執(zhí)行的作業(yè)還能被執(zhí)行一次。如果可以重新啟動作業(yè)的執(zhí)行,則在功能塊8中被分叉,在該功能塊中錯誤計數(shù)器邏輯的狀態(tài)用出現(xiàn)另一錯誤的信息來更新(遞減或者累加)。從那里在功能塊5中被分叉,在該功能塊中存儲在功能塊2內的量被加載并且在開始執(zhí)行時提供用于產(chǎn)生被定義的狀態(tài)的作業(yè)。接著,朝功能塊3被分叉,在那里待重復的作業(yè)部分即例如從已被執(zhí)行過的回跳點出來,或者但作為完整的即該作業(yè)從開始還被啟動一次,還被執(zhí)行一次。
如果在詢問塊4中得到在功能塊3中執(zhí)行作業(yè)期間沒有出現(xiàn)錯誤,則在功能塊9中分叉,在該功能塊中用沒有檢測到錯誤的信息更新錯誤計數(shù)器邏輯的狀態(tài)。從那里出來,在詢問塊11中被分叉,在那里檢驗計算機程序是否被執(zhí)行到結束。如果是這樣,則在結束計算機程序時在功能塊6中被分叉。如果不是,在功能塊12中被分叉,在那里根據(jù)當前的作業(yè)狀態(tài)產(chǎn)生另一回跳點,其方式是定義并且存儲安全的相關作業(yè)輸入量,該量足夠再次啟動作業(yè)。從那里出來,接著又向功能塊3被分叉,在那里待重復的作業(yè)又重新被啟動并且部分或者全部地還被執(zhí)行一次。
如果在詢問塊7中得到,由于錯誤計數(shù)器邏輯的狀態(tài)而不再可以進一步嘗試以重新執(zhí)行作業(yè),則在功能塊10中被分叉。在詢問塊7中檢驗,用于該作業(yè)的錯誤計數(shù)器邏輯的值是否比作業(yè)相關的重復值大。作業(yè)相關的重復值可針對各種作業(yè)相同地預給定或者,但是也可各自針對每個作業(yè)單獨預給定。以這樣的方式可能的是,例如在發(fā)現(xiàn)永久錯誤之前,首先多次重復特別重要的作業(yè)。當作業(yè)相關的重復值被預給定為1時,該作業(yè)僅在檢測到永久錯誤之前,僅被重復一次。如果作業(yè)相關的重復值被預給定為2或者3,則在檢測到永久錯誤之前作業(yè)被重復2次或者3次。在這樣的情況下,即該作業(yè)具有更長的時間、或者更多的運行,直到不再出現(xiàn)暫態(tài)錯誤。在功能塊10中檢測到永久錯誤并且采取相應的措施。該措施例如可以是,將計算機程序轉移到應急工作或者首先采取措施而接著結束計算機程序過程。
根據(jù)本發(fā)明的方法不必一定包括所有在圖1中所表示的和上面所闡述的功能和詢問塊。這樣,例如省去了塊7至9,這些塊涉及錯誤計數(shù)器邏輯。在檢測到錯誤時,將要重新啟動和執(zhí)行的作業(yè)這樣長地被重復,直到不再出現(xiàn)錯誤。沒有檢測到永久錯誤,使得也能去掉功能單元10。替換地,作業(yè)相關的重復值能被預給定為1,使得能去掉用于更新錯誤計數(shù)器的功能塊8和9。最后,當用唯一的回跳點執(zhí)行唯一作業(yè)時,也可以省去塊11和12。
在圖2中,表示用于根據(jù)其優(yōu)選的實施形式執(zhí)行計算機程序的根據(jù)本發(fā)明的計算設備。計算設備在其整體上用參考標號20表示。計算設備包括存儲器元件21,該存儲器元件例如構造為電子存儲器特別是構造為閃存存儲器。此外,計算設備20還包括微處理器22,在該微處理器上計算機程序能被執(zhí)行。計算機程序被存儲在電子存儲器介質21上并且用參考標記23表示。為了在微處理器22上執(zhí)行計算機程序,計算機程序作為整體或者分段地例如逐指令地通過數(shù)據(jù)連接24傳輸給微處理器。數(shù)據(jù)連接24可以構造為一個或者多個數(shù)據(jù)線或者構造為用于數(shù)據(jù)傳輸?shù)目偩€系統(tǒng)。此外,在存儲介質21上還存儲有操作系統(tǒng),在引導計算設備20時至少部分從存儲器21向微處理器22傳輸并且在那里被執(zhí)行。該操作系統(tǒng)用參考標記25表示。該操作系統(tǒng)具有管理和控制計算機程序23在微處理器22上的執(zhí)行以及連接到計算設備20的周邊設備的任務。根據(jù)本發(fā)明,操作系統(tǒng)25以特別的方式構造,使得當操作系統(tǒng)在微處理器22上運行時為了實施根據(jù)本發(fā)明的方法來編程它并且實施根據(jù)本發(fā)明的方法。尤其是,操作系統(tǒng)25包括進入錯誤發(fā)現(xiàn)機制的入口用于檢測在微處理器22上執(zhí)行計算機程序23期間的錯誤。此外,操作系統(tǒng)25還包括錯誤處理機制,該錯誤處理機制在檢測到錯誤時引起重新執(zhí)行計算機程序23的至少一個程序對象(作業(yè))。
因此,在根據(jù)本發(fā)明的系統(tǒng)策略的框架下建議了一種方法、一種操作系統(tǒng)以及計算機設備,該系統(tǒng)策略允許以最小或者甚至沒有執(zhí)行開銷結合作業(yè)重復的概念。
在這樣的情況下,系統(tǒng)策略被作為基礎,該系統(tǒng)策略在各個不同的前提條件下使執(zhí)行開銷最小并且由此使成本最小。通常,在這樣的情況下,前提是提供尤其是已描述的錯誤發(fā)現(xiàn)機制,在作業(yè)的運行中能發(fā)現(xiàn)錯誤(例如雙核機制,具有冗余執(zhí)行)。此外,在此特別,為了發(fā)現(xiàn)永久錯誤,必需擴展例如如上所述的錯誤計數(shù)器。
在根據(jù)本發(fā)明的用于結合作業(yè)重復的策略中,如在圖3中描述的那樣,幾個前提能被考慮到。
至少兩類作業(yè)(例如關鍵和非關鍵的作業(yè))被區(qū)分。在這樣的情況下,已經(jīng)不將錯誤發(fā)現(xiàn)機制用于所有類的作業(yè)和/或并不針對所有類的作業(yè)實施作業(yè)重復。
在圖3的例子中,區(qū)分兩類作業(yè),在這些作業(yè)中只有在一類中實施和/或只有在一類中啟動錯誤發(fā)現(xiàn)機制。在區(qū)分關鍵作業(yè)和非關鍵作業(yè)時,同樣根據(jù)本發(fā)明在關鍵作業(yè)中錯誤被捕獲,尤其是只被用于第一類錯誤發(fā)現(xiàn)機制。在這樣的情況下,關鍵作業(yè)是這種作業(yè),即在其中對系統(tǒng)的整個功能或者基本功能必需正確的執(zhí)行并且必須在確定的時刻稍后進行,以便獲得該功能。非關鍵作業(yè)是這樣的,即在其中整個系統(tǒng)功能或者也有基本功能并不涉及或者并非主要地被限制。尤其是,在該系統(tǒng)中在這樣的情況下在對安全嚴格和對安全不嚴格的功能之間進行區(qū)分。
第二類即不關鍵類2的作業(yè)中的暫態(tài)錯誤可能被忽視。此外如所述的那樣第二類作業(yè)也不允許輪到一次,即從系統(tǒng)角度來看并沒有嚴重的后果,當?shù)诙愖鳂I(yè)在作業(yè)處理循環(huán)中并未被調用。此外,第一關鍵類1的作業(yè)的總運行時間所占百分比應當最好不要超過過程或者作業(yè)處理循環(huán)的總計算時間中由特定系統(tǒng)所決定的百分比(例如50%)。在這樣的情況下,關鍵作業(yè)在平均劃分成關鍵和非關鍵作業(yè)時被分配總共最多50%的總計算時間,使得在所有關鍵作業(yè)有錯誤的最壞情況下能夠重新啟動或者計算這些作業(yè)。
因此,根據(jù)圖3的系統(tǒng)是可能的,在該系統(tǒng)中各種類這樣交替,使得作業(yè)T1的“接替者”S1(類2)在調度表中獲得至少如T1的WCET(最壞情況執(zhí)行時間)一樣的時間。
因此,基本構思是在出現(xiàn)暫態(tài)錯誤時在T1中代替S1再次計算T1。由此保證了,T1中的錯誤在計算T2之前被消除。由此在作業(yè)的計算時間內發(fā)生錯誤識別和錯誤處理(包括在保持容錯特性的情況下很可能的處置)。
在圖3中對此在類1的作業(yè)T1、T2和T3與類2的作業(yè)S1、S2和S3之間進行區(qū)分。在無錯誤地執(zhí)行時,在圖3a中示例性地示出了作業(yè)序列T1、S1、T2、S2、T3、S3。在T1期間出現(xiàn)暫態(tài)錯誤時根據(jù)圖3b在S1時間中再次計算作業(yè)并且接著計算T2、S2、T3、S3,使得暫態(tài)錯誤得以校正。
該系統(tǒng)方案根據(jù)對圖1和2的介紹采用相應的裝置來實施,使得在公開方面根據(jù)本發(fā)明每個實施形式明確地可與任何其它實施形式組合。
由此,根據(jù)本發(fā)明能夠在暫態(tài)錯誤方面實現(xiàn)最佳的FO特性(FOFail Operation(al),F(xiàn)ault Operation(al)),甚至以很小的康復時間,該康復時間重新自行恢復FO特性。該方案也很好地用在時間控制的系統(tǒng)中并且能進行優(yōu)化。
權利要求
1.用于執(zhí)行在計算機設備(2)上、尤其是在微處理器(22)上的計算機程序(23)的方法,其中所述計算機程序(23)包括多個程序對象,并且在所述方法中,在執(zhí)行計算機設備(20)上的所述計算機程序(23)期間進行錯誤檢測,其特征在于,所述程序對象被分成至少兩類,其中,在檢測到錯誤時,重復第一類程序對象;并且在已經(jīng)執(zhí)行的第一類程序對象中檢測到錯誤時,第一類程序對象代替第二類程序對象而被重新啟動。
2.根據(jù)權利要求1所述的方法,其特征在于,僅在被重新啟動的類中實施錯誤檢測。
3.根據(jù)權利要求1所述的方法,其特征在于,對于所有程序對象在循環(huán)中設置總計算時間并且把所述總計算時間劃分成使得在檢測到錯誤時被重新啟動的程序對象在無錯誤的情況下獲得循環(huán)中的總計算時間的至多50%。
4.根據(jù)權利要求1所述的方法,其特征在于,所述不同類的程序對象按照交替方式被執(zhí)行。
5.根據(jù)權利要求1和4所述的方法,其特征在于,所述第一類有錯誤的程序對象代替緊接其后的第二類程序對象而被執(zhí)行。
6.根據(jù)權利要求1所述的方法,其特征在于,所述程序對象構造為所述計算機程序(23)的作業(yè)并且在檢測到錯誤時重新執(zhí)行至少一個作業(yè)。
7.根據(jù)權利要求1或者6所述的方法,其特征在于,在檢測到錯誤時被執(zhí)行的程序對象重新被啟動。
8.根據(jù)權利要求1所述的方法,其特征在于,在執(zhí)行所述程序對象時,尤其是在開始執(zhí)行程序對象時產(chǎn)生并且存儲程序對象的至少一個被定義的狀態(tài)。
9.根據(jù)權利要求1所述的方法,其特征在于,所述方法被用于汽車中尤其是被用在汽車控制設備中。
10.根據(jù)權利要求1所述的方法,其特征在于,在執(zhí)行所述計算機程序(23)期間,在執(zhí)行所述程序對象之前存儲執(zhí)行計算機程序所需的參量。
11.根據(jù)權利要求1所述的方法,其特征在于,在一個周期內的要周期執(zhí)行的計算機程序(23)中,當對確定的程序對象檢測到錯誤時回跳到在所述計算機程序(23)的周期中的可規(guī)定的回跳點上。
12.操作系統(tǒng)(25),所述操作系統(tǒng)能夠運行在計算機設備(20)上、尤其是能夠運行在微處理器(22)上,其特征在于,當所述操作系統(tǒng)運行在所述計算設備(20)上時,對所述操作系統(tǒng)(25)進行編程以實施根據(jù)權利要求1至11中的一項所述的方法并且實施根據(jù)本發(fā)明的方法。
13.用于執(zhí)行計算機程序(23)的計算設備(20),所述計算機程序包括多個程序對象,其中所述計算機設備(20)具有錯誤發(fā)現(xiàn)機制以在執(zhí)行所述計算設備(20)上的所述計算機程序(20)期間檢測錯誤,其特征在于,所述計算設備(20)具有錯誤處理機制,當檢測到錯誤時,所述錯誤處理機制通過所述錯誤發(fā)現(xiàn)機制引起重新啟動至少一個已經(jīng)執(zhí)行的程序對象,其中所述程序對象被劃分成至少兩類,其中在第一類程序對象內檢測到錯誤時,代替第二類程序對象重新啟動第一類程序對象。
14.根據(jù)權利要求13所述的計算設備(20),其特征在于,所述錯誤處理機制具有觸發(fā)邏輯,所述觸發(fā)邏輯在檢測到錯誤期間重新啟動至少一個程序對象。
15.根據(jù)權利要求13所述的計算設備(20),其特征在于,在所述計算設備(20)上運行實時操作系統(tǒng)(25)。
全文摘要
用于執(zhí)行在計算機設備上、尤其是在微處理器上的計算機程序的方法,其中所述計算機程序包括多個程序對象,并且在所述方法中,在執(zhí)行計算機設備上的所述計算機程序期間進行錯誤檢測,所述程序對象被分成至少兩類,其中,在檢測到錯誤時,重復第一類程序對象;并且在已經(jīng)執(zhí)行的第一類程序對象中檢測到錯誤時,第一類程序對象代替第二類程序對象而被重新啟動。
文檔編號G06F11/00GK101048737SQ200580036468
公開日2007年10月3日 申請日期2005年10月19日 優(yōu)先權日2004年10月25日
發(fā)明者R·魏伯勒, B·米勒, W·哈特, R·安格鮑爾, T·科特克, Y·科拉尼, R·格梅利希 申請人:羅伯特·博世有限公司