TW202324098A - 錯誤偵測與更正裝置及其方法 - Google Patents

錯誤偵測與更正裝置及其方法 Download PDF

Info

Publication number
TW202324098A
TW202324098A TW110145674A TW110145674A TW202324098A TW 202324098 A TW202324098 A TW 202324098A TW 110145674 A TW110145674 A TW 110145674A TW 110145674 A TW110145674 A TW 110145674A TW 202324098 A TW202324098 A TW 202324098A
Authority
TW
Taiwan
Prior art keywords
complement
variables
program
result
checksum
Prior art date
Application number
TW110145674A
Other languages
English (en)
Inventor
蘇暉凱
楊明達
Original Assignee
財團法人工業技術研究院
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 財團法人工業技術研究院 filed Critical 財團法人工業技術研究院
Priority to TW110145674A priority Critical patent/TW202324098A/zh
Priority to CN202111577302.1A priority patent/CN116244101A/zh
Priority to EP21217488.2A priority patent/EP4195051B1/en
Priority to US17/563,704 priority patent/US20230176945A1/en
Publication of TW202324098A publication Critical patent/TW202324098A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1487Generic software techniques for error detection or fault masking using N-version programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本發明係揭示一種錯誤偵測與更正裝置及其方法。其中,用於錯誤偵測與更正之方法包括以下步驟。轉換運算程式為一二補數反運算程式。轉換運算程式包含之變數轉換為二補數變數。依據變數執行運算程式以獲得第一運算結果。依據二補數變數執行運算程式以獲得第二運算結果。計算對應此些變數的核對和結果,並計算對應此些二補數變數的核對和結果。比較第一運算結果與第二運算結果、或比較對應此些變數的核對和結果、或比較對應此些二補數變數的核對和結果至少一者。依據上述比較結果輸出第一運算結果、第二運算結果或一錯誤訊息。

Description

錯誤偵測與更正裝置及其方法
本發明係關於一種偵錯裝置與偵錯方法,特別是關於一種用於偵測及/或更正運算程式的錯誤執行的裝置及其方法。
在環境因素的介入下,系統平台的記憶體或暫存器可能被干擾甚至損毀,導致記憶體或暫存器所儲存的數值內容可能改變而造成系統平台的運算程式的運算結果錯誤。在大氣層外部的太空環境中,粒子衝擊或電磁干擾等環境因素越形嚴重,而極易造成單一事件擾動(Single-Event Upset,SEU)。例如,太空環境的單一粒子可能撞擊操作於太空環境的衛星設備,造成衛星設備的記憶體或暫存器的狀態改變而導致記憶體或暫存器所儲存的位元資料翻轉,致使衛星設備的運算程式執行錯誤而產生錯誤的運算結果,更甚者可能造成運算程式崩潰導致整體任務失敗。
對於衛星設備的操作而言,礙於成本、環境與距離因素,若軟體的運算程式發生錯誤,難以重新啟動衛星設備或重新執行系統以更正運算程式的錯誤。縱使,可藉由提升硬體設備規格以改善單一事件擾動造成的數值錯誤,然而對於衛星設備提升規格將耗費高額成本。
因此,本技術領域之相關產業之技術人員係致力於尋求軟體演算法途徑的解決方案,以克服上述之環境因素中單一事件擾動引起數值錯誤而導致的技術問題。
本發明係提供一種錯誤偵測與更正裝置,用於偵測及/或更正運算程式之錯誤。錯誤偵測與更正裝置包括轉換單元、程式執行單元、核對和運算單元、比較單元、輸出單元。轉換單元用以轉換運算程式為二補數反運算程式,且用以轉換該運算程式包含之複數個變數為複數個二補數變數,。程式執行單元用以依據變數執行運算程式以獲得第一運算結果,且用以依據二補數變數執行二補數反運算程式以獲得第二運算結果。核對和運算單元用以依據運算程式計算對應變數的核對和結果,且依據二補數反運算程式計算對應二補數變數的核對和結果。比較單元用以比較第一運算結果與第二運算結果、或比較變數的核對和結果、或比較二補數變數的核對和結果至少一者。輸出單元,用以依據第一運算結果與第二運算結果的比較結果、對應變數的核對和結果及/或對應二補數變數的核對和的比較結果輸出第一運算結果、第二運算結果或錯誤訊息。
本發明亦提供一種錯誤偵測與更正方法,用於偵測及/或更正運算程式之錯誤。錯誤偵測與更正方法包括以下步驟。轉換運算程式為二補數反運算程式。轉換運算程式包含之複數個變數為複數個二補數變數。依據變數執行運算程式以獲得第一運算結果。依據二補數變數執行二補數運算程式以獲得第二運算結果。計算對應此些變數的核對和結果。計算對應此些二補數變數的核對和結果。比較第一運算結果與第二運算結果,或比較對應此些變數的核對和結果,或比較對應此些二補數變數的核對和結果至少一者。依據第一運算結果與第二運算結果的比較結果、對應此些變數的核對和結果及/或對應此些二補數變數的核對和的比較結果,輸出第一運算結果、第二運算結果或錯誤訊息。
透過閱讀以下圖式、詳細說明以及申請專利範圍,可見本發明之其他方面以及優點。
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
第1圖為本發明一實施例之錯誤偵測與更正裝置1000的方塊圖。請參見第1圖,錯誤偵測與更正裝置1000用以執行運算程式100,並經由二補數轉換(two’s complement conversion)得到運算程式100對應的二補數反運算程式100C。根據運算程式100與二補數反運算程式100C各自的運算結果,錯誤偵測與更正裝置1000對於運算程式100進行錯誤偵測及/或錯誤更正。錯誤偵測與更正裝置1000包括轉換單元200、程式執行單元250、核對和(checksum)運算單元300、比較單元400及輸出單元500。並且,儲存單元600可包括於錯誤偵測與更正裝置1000的內部或可設置於錯誤偵測與更正裝置1000的外部。藉由上述之轉換單元200、程式執行單元250、核對和運算單元300、比較單元400、輸出單元500以及儲存單元600之運作,錯誤偵測與更正裝置1000可對於運算程式100進行錯誤偵測及/或錯誤更正。
運算程式100具有一或多個變數(variable) 120,錯誤偵測與更正裝置1000可從儲存單元600存取變數120的數值。並且,轉換單元200可根據變數120進行二補數轉換,以得到二補數反運算程式100C的二補數變數120C。對應的,二補數變數120C的數值亦可存取於儲存單元600。此外,運算程式100包括一或多個功能函式130,轉換單元200可根據功能函式130進行二補數轉換,以得到二補數反運算程式100C的反運算功能函式130C。
程式執行單元250可根據變數120執行功能函式130,以得到運算程式100的第一運算結果140。對應的,程式執行單元250可根據二補數變數120C執行反運算功能函式130C,以得到二補數反運算程式100C的第二運算結果140C。
比較單元400可對於第一運算結果140與第二運算結果140C進行比較。若第二運算結果140C相等於第一運算結果140的二補數,則判斷程式執行單元250在執行運算程式100中的功能函式130時為正確執行,且變數120的數值存取於儲存單元600時未發生數值錯誤,並且判斷程式執行單元250在執行二補數反運算程式100C中的反運算功能函式130C時為正確執行,且二補數變數120C的數值存取於儲存單元600時未發生數值錯誤。
核對和運算單元300可對於變數120進行核對和運算,以輔助判斷運算程式100是否為正確執行。對應的,核對和運算單元300可對於二補數變數120C進行核對和運算,以輔助判斷二補數反運算程式100C是否為正確執行。
輸出單元500可根據比較單元400的比較結果及核對和運算單元300的核對和運算結果輸出第一運算結果140、第二運算結果140C或錯誤訊息150。若上述之比較結果及核對和運算結果表示運算程式100為正確執行,則輸出單元500輸出第一運算結果140。若上述之比較結果及核對和運算結果表示運算程式100與二補數反運算程式100C兩者皆為錯誤執行,則輸出單元500輸出錯誤訊息150。
第2圖為本發明一實施例之錯誤偵測與更正裝置1000運作於系統平台2000的示意圖。請參見第2圖,錯誤偵測與更正裝置1000可運作於系統平台2000以偵測及/或更正運算程式100之錯誤。系統平台2000例如為個人電腦、伺服器、工業用電腦、軍事用電腦或衛星設備的系統平台,運算程式100例如為執行於系統平台2000的軟體應用程式。並且,儲存單元600亦設置於系統平台2000中(儲存單元600可不包括於錯誤偵測與更正裝置1000內部)。儲存單元600可例如為暫存器或記憶體以存取運算程式100的變數120的數值及二補數反運算程式100C的二補數變數120C的數值。
以衛星設備的系統平台2000為例,當衛星設備運作於太空環境時,粒子衝擊或電磁干擾易使得系統平台2000中的儲存單元600發生狀態改變而導致儲存單元600儲存的位元資料翻轉(例如,由位元「1」翻轉為位元「0」),使運算程式100的變數120的數值發生數值錯誤。本發明之錯誤偵測與更正裝置1000特別針對於衛星設備的系統平台2000,對於系統平台2000中執行的運算程式100進行錯誤偵測及/或更正。在運作上,錯誤偵測與更正裝置1000可在系統平台2000中產生兩個區域:第一執行區域2100與第二執行區域2200。
第一執行區域2100係為正常軟體執行區域或正規程序(normal process)執行區域,運算程式100執行於第一執行區域2100。並且,錯誤偵測與更正裝置1000根據運算程式100進行二補數轉換得到對應的二補數反運算程式100C,二補數反運算程式100C則執行於第二執行區域2200;第二執行區域2200係為二補數軟體反運算(two's complement inverse operation process)執行區域。
上文係概略說明錯誤偵測與更正裝置1000的基本運作。於下文中,係配合參見第3A、3B、4A及4B圖之錯誤偵測與更正方法之步驟及流程,詳細說明錯誤偵測與更正裝置1000的詳細運作方式。
第3A圖為本發明一實施例之錯誤偵測與更正方法的流程圖。在本實施例中,運算程式100例如為預先進行編譯(compile)的應用程式。請參見第3A圖(並配合參見第1圖及第2圖)首先,在步驟S110,錯誤偵測與更正裝置1000對於運算程式100進行前置處理(preprocess),例如,確認運算程式100與系統平台2000的執行環境的相容性。而後,在步驟S120,轉換單元200對於運算程式100進行複製以得到與運算程式100之複製程式(為使圖式簡潔,第1圖與第2圖中未繪示出複製程式)。其中,複製程式亦包括運算程式100的全部的功能函式130。
而後,在步驟S130,轉換單元200對於複製程式進行轉譯(translation)或轉換以得到二補數反運算程式100C。其中,轉換單元200將複製程式的功能函式130分別轉換為反運算功能函式130C,此些反運算功能函式130C組成二補數反運算程式100C。而後,在步驟S140,對於運算程式100與二補數反運算程式100C執行編譯。而後,在步驟S150,對於編譯後的運算程式100與編譯後的二補數反運算程式100C執行連結(link),以得到可執行於系統平台2000的可執行檔(exe file)。而後,在步驟S160,根據連結後的可執行檔,在系統平台2000中執行運算程式100與二補數反運算程式100C(運算程式100與二補數反運算程式100C兩者可同步執行或先後執行),並且,進行後續的錯誤偵測及/或錯誤更正。
第3B圖為本發明另一實施例之錯誤偵測與更正方法的流程圖。在本實施例中,運算程式100例如為無需進行編譯的直譯程式。其中,第3B圖的步驟S210至S230相同於第3A圖的步驟S110至S130。而第3B圖的步驟S240則類似於第3A圖的步驟S160,差異處在於:第3B圖的步驟S240藉由系統平台2000的轉譯器(interpreter)直接地執行運算程式100與二補數反運算程式100C(運算程式100與二補數反運算程式100C兩者可同步執行或先後執行),無須進行編譯與連結。
於下文中,請配合參見第1圖及表1以具體說明第3A圖的步驟S130與第3B圖的步驟S230的詳細實施方式。可藉由錯誤偵測與更正裝置1000的轉換單元200根據運算程式100的變數120進行二補數轉換,以得到二補數反運算程式100C的二補數變數120C。其中,二補數變數120C可為變數120的二補數(two’s complement)。若變數120為有號數(signed number),則二補數變數120C與變數120為正負號相反;若變數120為無號數(unsigned number),則二補數變數120C相同於變數120。並且,藉由轉換單元200根據運算程式100的功能函式130進行二補數轉換,以得到反運算功能函式130C。二補數變數120C與反運算功能函式130C係組成二補數反運算程式100C。表1係羅列出功能函式130及反運算功能函式130C之示例: 表1
功能函式的類型   運算對象(變數120)   功能函式130 反運算功能函式130C  
數學運算 (arithmetic) 變數x +x、-x、*x、 /x、%x   +x、-x、*x、 /x、%x
固定數值m +m、-m、*m、 /m、%m   -m、+m、*m、 /m、%m
遞增/遞減運算 (increment/decrement) ++、-- --、++
指定運算 (assign) 變數x =x、+=x、 -=x、*=x、 /=x、%=x   =x、+=x、 -=x、*=x、 /=x、%=x
固定數值m =m、+=m、 -=m、*=m、 /=m、%=m   =m、-=m、 +=m、*=m、 /=m、%=m
關係運算(relation) >、>=、<、 <=、==、!= <、<=、>、 >=、==、!=
邏輯運算(logic) &&、||、!   &&、||、!
位元運算(bitwise) &、|、^、~、 <<、>>   &、|、^、~、 <<、>>
陣列(array) 變數xIndex   (xIndex為整數變數)   array[xIndex]   array[-xIndex]
固定數值N   (N為整數)   array[N]   array[N]
指標(pointer) 變數x、xPtr、yOffset   (yOffset為整數變數)   xPtr=&x   *(xPtr+yOffset)   xPtr=&x   *(xPtr-yOffset)
固定數值N   (N為整數) xPtr=&x   *(xPtr+N)   xPtr=&x   *(xPtr+N)
如表1所示,以「數學運算(arithmetic)」類型的功能函式130為例,若功能函式130「+」、「-」、「*」、「/」、「%」的運算對象為數值可變的變數「x」,則反運算功能函式130C完全相同於功能函式130;也就是說,反運算功能函式130C亦為:「+」、「-」、「*」、「/」、「%」。另一方面,若功能函式130「+」、「-」、「*」、「/」、「%」的運算對象為數值不變的固定數值「m」,則反運算功能函式130C為:「-」、「+」、「*」、「/」、「%」。其中,當功能函式130為「+」、「-」時,反運算功能函式130C為二補數反運算「-」、「+」;當功能函式130為「*」、「/」、「%」時,反運算功能函式130C完全相同於功能函式130。由上,若功能函式130的運算對象為變數「x」,則反運算功能函式130C完全相同於功能函式130。若功能函式130的運算對象為固定數值「m」,則反運算功能函式130C可能相同於功能函式130、或反運算功能函式130C為功能函式130的二補數反運算。
此外,以「指定運算(assign)」類型的功能函式130「=」、「+=」、「-=」、「*=」、「/=」、「%=」為例,若功能函式130的運算對象為變數「x」,則反運算功能函式130C仍為「=」、「+=」、「-=」、「*=」、「/=」、「%=」,反運算功能函式130C完全相同於功能函式130。若功能函式130的運算對象為固定數值「m」,則其中反運算功能函式130C「+=」、「-=」分別為功能函式130「-=」、「+=」的二補數反運算。
再者,以「指標(pointer)」類型的功能函式130「&」、「*」為例,若功能函式130的運算對象為固定數值的整數「N」,則反運算功能函式130C完全相同於功能函式130。若功能函式130的運算對象為變數「xPtr」、「yOffset」,則其中反運算功能函式130C「*(xPtr-yOffset)」為功能函式130「*(xPtr+yOffset)」的二補數反運算。
並且,若「遞增/遞減運算(increment/decrement)」與「關係運算(relation)」類型的功能函式130「++」、「--」、「>」、「>=」、「<」、「<=」的運算對象為固定數值「m」,則反運算功能函式130為功能函式130的二補數反運算:「--」、「++」、「<」、「<=」、「>」、「>=」。並且,在「關係運算(relation)」類型中,若功能函式130為「==」、「!=」,則反運算功能函式130C仍為「==」、「!=」,即,反運算功能函式130C相同於功能函式130。
由上,當錯誤偵測與更正裝置1000的轉換單元200對於功能函式130進行二補數轉換而得到反運算功能函式130C時,大部分的反運算功能函式130C相同於原本的功能函式130。當部分的功能函式130的運算對象為固定數值時,係將此些功能函式130的正負號反向,或調整數值大小的比較關係(例如,將「>」調整為「<」)而得到反運算功能函式130C。
於下文中,請配合參見第1圖及表2以具體說明第3A圖的步驟S160與第3B圖的步驟S240的詳細實施方式。可藉由錯誤偵測與更正裝置1000的程式執行單元250同時執行或先後執行運算程式100及二補數反運算程式100C,以分別得到第一運算結果140與第二運算結果140。表2係羅列出運算程式100的程式碼、對應的第一運算結果140、二補數反運算程式100C的程式碼及對應的第二運算結果140C的示例: 表2
    運算程式100 二補數反運算程式100C
變數 變數120   x、i   二補數變數120C   x”、i”  
功能函式     功能函式130   =、<=、++、+=   反運算功能函式130C   =、>=、--、+=  
運算結果     第一運算結果140   x=55   第二運算結果140C   x”=-55
運算程式的程式碼         int example(void) {   int x=0; int i=0;   for(i=1;i<=10;i++) { x+=i; }   return x; }   int example(void) {   int x”=-0; int i”=-0;   for(i”=-1;i”>=-10;i”--) { x”+=i”; }   return x”; }  
如表2所示,在運算程式100中,功能函式130的運算對象為變數120,變數120可例如為程式外部的輸入變數或程式內部的本地(local)變數。在本實施例中,功能函式130「=」、「<=」、「++」、「+=」的變數120為本地變數:變數「x」及變數「i」。並且,參照表2之「程式碼」欄位之描述,將變數「i」自數值「1」累加至數值「10」的示例中,運算程式100分別宣告(declaration)變數「x」與變數「i」的初始值為整數「0」。
程式執行單元250實際執行此些功能函式130「=」、「<=」、「++」、「+=」時,係以變數「i」作為迴圈的引數(index),在執行迴圈時變數「i」從「1」遞增到「10」。並且,在迴圈內部執行功能函式130「+=」以將變數「i」累加至變數「x」。運算程式100執行十次迴圈後,得到變數「x」的最終數值為「55」,此時,運算程式100產生的第一運算結果140為數值「55」。
並且,轉換單元200進行二補數轉換以將變數「x」與變數「i」(運算程式100的變數120)分別轉換為二補數變數「x”」與二補數變數「i”」(二補數反運算程式100C的二補數變數120C),則二補數反運算程式100C分別宣告二補數變數「x”」與二補數變數「i”」為「-0」。並且,轉換單元200將遞增運算的功能函式130「++」轉換為遞減運算的反運算功能函式130C「--」,二補數反運算程式100C在執行迴圈時,二補數變數「i”」從「-1」遞減到「-10」。據此,二補數反運算程式100C執行十次迴圈後,二補數變數「x”」的最終數值為「-55」,此時,二補數反運算程式100C產生的第二運算結果140C為數值「-55」。
而後,比較單元400對於第一運算結果140與第二運算結果140C進行比較。比較結果為:第二運算結果140C的數值「-55」與第一運算結果140的數值「55」兩者的絕對值相同且正負號相反,換言之,第二運算結果140C的數值「-55」為第一運算結果140的數值「55」的二補數。
由上,比較單元400的比較結果表示:運算程式100的第一運算結果140相等於二補數反運算程式100C的第二運算結果140C的二補數。因此,錯誤偵測與更正裝置1000可判斷:程式執行單元250在執行運算程式100與二補數反運算程式100C時,運算程式100與二補數反運算程式100C兩者皆為正確執行,且在程式執行過程中變數120「x」、「i」與二補數變數120C「x”」、「i”」的數值於存取於儲存單元600時並未發生數值錯誤。
承上,第3A圖的步驟S160與第3B圖的步驟S240之後,接著執行第4A、4B圖的步驟S310至步驟S350。第4A、4B圖為本發明一實施例之錯誤偵測與更正方法中,根據運算程式100與二補數反運算程式100C的比較結果與核對和結果進行錯誤偵測及/或錯誤更正的詳細流程圖。請先參見第4A圖(並配合參見第1圖與第2圖),在步驟S310中,轉換單元200對於運算程式100的變數120進行二補數轉換,以得到對應的二補數變數120C。而後,在步驟S312中,運算程式100從儲存單元600存取變數120的數值以及二補數變數120C的數值。而後,在步驟S314中,當程式執行單元250執行運算程式100時,程式執行單元250係根據變數120進行功能函式130的運算,以得到第一運算結果140。而後,在步驟S316中,藉由核對和運算單元300對於運算程式100的全部的變數120(例如變數「i」、「x」)執行核對和運算,以得到運算程式100中對應於全部的變數120的核對和結果。
而後,在步驟S318中,當程式執行單元250執行二補數反運算程式100C時,程式執行單元250係根據二補數變數120進行反運算功能函式130C的運算,以得到第二運算結果140C。而後,在步驟S320中,藉由核對和運算單元300對二補數反運算程式100C的全部的二補數變數120C(例如變數「i”」、「x”」)執行核對和運算,以得到二補數反運算程式100C中對應於全部的二補數變數120的核對和結果。
而後,在步驟S322中,藉由比較單元400比較第一運算結果140與第二運算結果140C,以確認第一運算結果140是否相等於第二運算結果140C的二補數,並據以判斷運算程式100與二補數反運算程式100C是否為正確執行。在步驟S322中,若第一運算結果140相等於第二運算結果140C的二補數,則判斷結果如下:程式執行單元250執行運算程式100時為正確執行、程式執行單元250執行二補數反運算程式100C時亦為正確執行、且在程式執行單元250的執行過程中運算程式100的變數120與二補數反運算程式100C的二補數變數120C的數值存取於儲存單元600時皆未發生數值錯誤。由上,可判斷第一運算結果140與第二運算結果140C兩者皆為正確。而後,在步驟S324中,輸出單元500輸出第一運算結果140,輸出單元500並將第一運算結果140回傳(return)至系統平台2000。
另一方面,在步驟S322中,若比較單元400的比較結果表示第一運算結果140不等於第二運算結果140C的二補數,則判斷結果為:程式執行單元250執行運算程式100時為錯誤執行及/或程式執行單元250執行二補數反運算程式100C時為錯誤執行(即,判斷結果為:運算程式100與二補數反運算程式100C其中至少一者為錯誤執行)。此時,接著執行第4B圖之步驟S330及步驟S340。步驟S330及步驟S340兩者可同時執行或先後執行。
請參見第4B圖,在步驟S330中,藉由核對和運算單元300分析運算程式100之中對應於全部的變數120的核對和結果。而後,在步驟S332中,判斷運算程式100中對應全部的變數120的核對和結果是否相等於運算程式100中對應「首變數」與「末變數」之間相互的核對和結果。若在步驟S332中判斷上述核對和結果相等,表示運算程式100為正確執行,則接著執行步驟S334:輸出運算程式100的第一運算結果140,並將第一運算結果140回傳至系統平台2000。若在步驟S332中判斷上述核對和結果不相等,表示運算程式100為錯誤執行,則接著執行步驟S350:輸出錯誤訊息150至系統平台2000。
另一方面,類似的,於步驟S340至步驟S344中在二補數反運算程式100C中分析核對和結果,以判斷二補數反運算程式100C是否為正確執行。在步驟S340中,藉由核對和運算單元300分析二補數反運算程式100C之中對應於全部的二補數變數120C的核對和結果。而後,在步驟S342中,判斷二補數反運算程式100C中對應全部的二補數變數120C的核對和結果是否相等於二補數反運算程式100C中對應「首變數」與「末變數」之間相互的核對和結果。若在步驟S342中判斷上述核對和結果相等,表示二補數反運算程式100C為正確執行,則接著執行步驟S344:輸出運算程式100的第二運算結果140C,並將第二運算結果140C回傳至系統平台2000。若在步驟S342中判斷上述核對和結果不相等,表示二補數反運算程式100C為錯誤執行,則接著執行步驟S350:輸出錯誤訊息150至系統平台2000。
於下文中,請配合參見第1圖、表3、表4及表5以具體說明第4A圖的步驟S316及步驟S320與第4B圖的步驟S330、S332、S340及S342中執行核對和運算以及分析核對和運算結果的詳細實施方式。 表3
變數 x、y  
運算程式的程式碼 x=1; y=2; y=3;  
首變數   (x=“1”)
末變數   (y=“3”)
核對和運算 x^y = 1^2 = 3  
x^y = 1^3 = 2  
請先參見表3,運算程式100中的全部的變數「x」、「y」任一者若有進行運算使其數值發生改變,則須立即對於數值發生改變的變數執行核對和運算,並且即時更新核對和運算結果。以變數「x」與變數「y」為例,執行程式碼「x=1;」之後,變數「x」的數值改變為「1」,執行程式碼「y=2;」之後,變數「y」的數值改變為「2」,因此須對於變數「x」及變數「y」執行核對和運算得到核對和結果為「1^2=3」。其中,運算符號「^」表示互斥或(XOR)運算。接著,執行程式碼「y=3;」之後,變數「y」的數值改變為「3」,因此須對於變數「x」及變數「y」執行核對和運算得到核對和結果為「1^3=2」。
並且,在運算程式的執行過程中,「首變數」定義為運算程式100的變數中最先出現的變數數值。根據表3的程式碼的執行,「首變數」為變數「x」的數值「1」。另一方面,「末變數」定義為運算程式100的變數中最後出現的變數數值。根據表3的程式碼的執行,「末變數」為變數「y」的數值「3」。係對於首變數數值「1」與末變數數值「3」之間進行相互的核對和運算而得到核對和結果為「1^3=2」。 表4
    原本的運算程式100 執行核對和運算的運算程式100
變數120   x、i   x、i
核對和變數       checksum
功能函式130 =、<=、++ +=   =、<=、++ +=  
第一運算結果140 x=55    
程式碼         int example(void){   int x=0; int i=0;   for(i=1;i<=10;i++) { x+=i; }   return x; }   int checksum=0;   int example(void){   int x=0; checksum^=x; int i=0; checksum^=i;   for(checksum^=i, i=1, checksum^=i; i<=10; checksum^=i, i++, checksum^=i) { checksum^=x, x+=i, checksum^=x; }   return x; }  
接著,請參見表4,藉由運算程式100中的子函式「checksum^=x」、「checksum^=i」對於全部的變數「x」及變數「i」進行核對和運算,以得到對應於全部的變數「x」、「i」的核對和結果。例如:在變數「x」進行宣告之後、以及將變數「i」累加至變數「x」之前與之後,對於變數「x」執行核對和運算「checksum^=x」。類似的,在變數「i」進行宣告之後、以及變數「i」進行遞增之前與之後,對於變數「i」執行核對和運算「checksum^=i」。
並且,分析「首變數」與「末變數」。在運算程式100中,「首變數」例如為在所有的變數中最先出現的數值(此處為變數「i」的數值),而「末變數」例如為在所有的變數中最後出現的數值(此處為變數「x」的數值)。運算程式100執行完畢時,進行對於「首變數」(最先出現為變數「i」的數值)與「末變數」(最後出現為變數「x」的數值)之間相互的核對和運算「checksum=i^x」,以得到「首變數」與「末變數」相互的核對和結果。 表5
    原本的二補數反運算程式100C 執行核對和運算的二補數反運算程式100C  
二補數變數120C   x”、i”   x”、i”  
核對和變數       checksum
反運算功能函式130C =、>=、-- +=   =、>=、-- +=  
第二運算結果140C   x”=-55  
程式碼         int example(void) { int x”=-0; int i”=-0;   for(i”=-1;i”>=-10;i”--) { x”+=i”; }   return x”; }   int checksum=0;   int example(void) { int x”=-0; checksum^=x”; int i”=-0; checksum^=i”;   for(checksum^=i”, i”=-1, checksum^=i”; i”>=-10; checksum^=i”, i”--, checksum^=i” ) { checksum^=x”, x”+=i”, checksum^=x”; }   checksum=i”^x”;   return x”; }  
接著,請參見表5,基於與運算程式100的核對和運算相同的方式,藉由二補數反運算程式100C中的子函式「checksum^=x”」、「checksum^=i”」對於全部的變數「x”」及變數「i”」進行核對和運算,以得到對應於全部的變數「x”」、「i”」的核對和結果。並執行「首變數」與「末變數」之間相互的核對和運算「checksum=i”^x”」。
根據上述之各實施例,本發明的錯誤偵測與更正裝置1000藉由將正規執行的運算程式100轉換為二補數反運算程式100C,且在執行運算程式100及二補數反運算程式100C後比較兩者的運算結果(第一運算結果140、第二運算結果140C)是否互為二補數,以確認運算程式100、二補數反運算程式100C是否正確執行,並且可確認所存取之變數120的數值以及所存取之二補數變數120C的數值是否發生數值錯誤。更可輔以核對和運算來強化確認執行過程中變數120及二補數變數120C的數值正確性。據此,本發明的技術方案能夠以純軟體程式演算法的途徑來偵測及/或更正運算程式100的錯誤執行,能夠以較低的成本尋求單一事件擾動的解決之道。
雖然本發明已以較佳實施例及範例詳細揭露如上,可理解的是,此些範例意指說明而非限制之意義。可預期的是,所屬技術領域中具有通常知識者可想到多種修改及組合,其多種修改及組合落在本發明之精神以及後附之申請專利範圍之範圍內。
100:運算程式 100C:二補數反運算程式 120:變數 120C:二補數變數 130:功能函式 130C:反運算功能函式 140:第一運算結果 140C:第二運算結果 150:錯誤訊息 200:轉換單元 250:程式執行單元 300:核對和運算單元 400:比較單元 500:輸出單元 600:儲存單元 1000:錯誤偵測與更正裝置 2000:系統平台 2100:第一執行區域 2200:第二執行區域 S110~S160:步驟 S210~S240:步驟 S310~S350:步驟
第1圖為本發明一實施例之錯誤偵測與更正裝置的方塊圖。 第2圖為本發明一實施例之錯誤偵測與更正裝置運作於系統平台的示意圖。 第3A圖為本發明一實施例之錯誤偵測與更正方法的流程圖。 第3B圖為本發明另一實施例之錯誤偵測與更正方法的流程圖。 第4A、4B圖為本發明一實施例之錯誤偵測與更正方法中,根據運算程式與二補數反運算程式的比較結果與核對和結果進行錯誤偵測及/或錯誤更正的詳細流程圖。
100:運算程式
100C:二補數反運算程式
120:變數
120C:二補數變數
130:功能函式
130C:反運算功能函式
140:第一運算結果
140C:第二運算結果
150:錯誤訊息
200:轉換單元
250:程式執行單元
300:核對和運算單元
400:比較單元
500:輸出單元
600:儲存單元
1000:錯誤偵測與更正裝置

Claims (20)

  1. 一種錯誤偵測與更正裝置,用於偵測及/或更正一運算程式之錯誤,包括: 一轉換單元,用以轉換該運算程式為一二補數反運算程式,且用以轉換該運算程式包含之複數個變數為複數個二補數變數; 一程式執行單元,用以依據該些變數執行該運算程式,以獲得一第一運算結果,且用以依據該些二補數變數執行該二補數反運算程式,以獲得一第二運算結果; 一核對和運算單元,用以依據該運算程式計算對應該些變數的核對和結果,並且依據該二補數反運算程式計算對應該些二補數變數的核對和結果; 一比較單元,用以比較該第一運算結果與該第二運算結果、或比較該些變數的核對和結果、或比較該些二補數變數的核對和結果至少一者;以及 一輸出單元,用以依據該第一運算結果與該第二運算結果的比較結果、對應該些變數的核對和結果及/或對應該些二補數變數的核對和結果以輸出該第一運算結果、該第二運算結果或一錯誤訊息。
  2. 如請求項1所述之錯誤偵測與更正裝置,其中該些二補數變數為該些變數的二補數,若該些變數為有號數則與該些二補數變數的正負號相反。
  3. 如請求項2所述之錯誤偵測與更正裝置,其中該運算程式包含複數個功能函式,且該二補數反運算程式包含複數個反運算功能函式,該程式執行單元依據該些變數及該些功能函式執行該運算程式,且依據該些二補數變數及該些反運算功能函式執行該二補數反運算程式,若在該運算程式中該些功能函式的運算對象為該些變數,該些反運算功能函式相同於該些功能函式。
  4. 如請求項3所述之錯誤偵測與更正裝置,其中在該運算程式中,若該些功能函式的運算對象為複數個固定數值,且該些功能函式為加法運算子、減法運算子、遞增運算子、遞減運算子、大於運算子或小於運算子,該些反運算功能函式為該些功能函式的反運算功能。
  5. 如請求項1所述之錯誤偵測與更正裝置,其中若該比較單元比對該第一運算結果相等於該第二運算結果之二補數,則該比較單元判斷該程式執行單元執行該運算程式時為正確執行且執行該二補數反運算程式時為正確執行,該輸出單元輸出該第一運算結果。
  6. 如請求項1所述之錯誤偵測與更正裝置,其中若該比較單元比對該第一運算結果不等於該第二運算結果之二補數,則該比較單元判斷該程式執行單元執行該運算程式時為錯誤執行及/或執行該二補數反運算程式時為錯誤執行。
  7. 如請求項6所述之錯誤偵測與更正裝置,其中若該比較單元判斷該運算程式及/或該二補數反運算程式為錯誤執行,該比較單元比較對應該些變數的核對和結果及比較對應該些二補數變數的核對和結果。
  8. 如請求項7所述之錯誤偵測與更正裝置,其中,該核對和運算單元計算對應全部的該些變數相互的核對和結果,以及計算對應該些變數的運算過程中最後的核對和結果,並且,該核對和運算單元計算對應全部的該些二補數變數相互的核對和結果,以及計算對應該些二補數變數的運算過程中最後的核對和結果。
  9. 如請求項8所述之錯誤偵測與更正裝置,其中若對應全部的該些變數相互的核對和結果相等於對應該些變數的運算過程中最後的核對和結果,則該比較單元判斷該運算程式為正確執行,且該輸出單元輸出該第一運算結果,並且,若對應全部的該些二補數變數相互的核對和結果相等於對應該些二補數變數的運算過程中最後的核對和結果,則該比較單元判斷該二補數反運算程式為正確執行,且該輸出單元輸出該第二運算結果。
  10. 如請求項8所述之錯誤偵測與更正裝置,其中若對應全部的該些變數相互的核對和結果不等於對應該些變數的運算過程中最後的核對和結果,並且若對應全部的該些二補數變數相互的核對和結果不等於對應該些二補數變數的運算過程中最後的核對和結果,則該比較單元判斷該運算程式為錯誤執行且該二補數反運算程式為錯誤執行,且該輸出單元輸出該錯誤訊息。
  11. 一種錯誤偵測與更正方法,用於偵測及/或更正一運算程式之錯誤,包括以下步驟: 轉換該運算程式為一二補數反運算程式; 轉換該運算程式包含之複數個變數為複數個二補數變數; 依據該些變數執行該運算程式,以獲得一第一運算結果; 依據該些二補數變數執行該二補數反運算程式,以獲得一第二運算結果; 依據該運算程式計算對應該些變數的核對和結果; 依據該二補數反運算程式計算對應該些二補數變數的核對和結果; 比較該第一運算結果與該第二運算結果、或比較該些變數的核對和結果、或比較該些二補數變數的核對和結果至少一者;以及 依據該第一運算結果與該第二運算結果的比較結果、對應該些變數的核對和結果及/或對應該些二補數變數的核對和結果,輸出該第一運算結果、該第二運算結果或一錯誤訊息。
  12. 如請求項11所述之錯誤偵測與更正方法,其中該些二補數變數為該些變數的二補數,若該些變數為有號數則與該些二補數變數的正負號相反。
  13. 如請求項12所述之錯誤偵測與更正方法,其中該運算程式包含複數個功能函式,且該二補數反運算程式包含複數個反運算功能函式,依據該些變數及該些功能函式執行該運算程式,且依據該些二補數變數及該些反運算功能函式執行該二補數反運算程式,若在該運算程式中該些功能函式的運算對象為該些變數,該些反運算功能函式相同於該些功能函式。
  14. 如請求項13所述之錯誤偵測與更正方法,其中在該運算程式中,若該些功能函式的運算對象為複數個固定數值,且該些功能函式為加法運算子、減法運算子、遞增運算子、遞減運算子、大於運算子或小於運算子,該些反運算功能函式為該些功能函式的反運算功能。
  15. 如請求項11所述之錯誤偵測與更正方法,其中若該第一運算結果相等於該第二運算結果之二補數,則判斷執行該運算程式時為正確執行且執行該二補數反運算程式時為正確執行,並且輸出該第一運算結果。
  16. 如請求項11所述之錯誤偵測與更正方法,其中若該第一運算結果不等於該第二運算結果之二補數,則判斷執行該運算程式時為錯誤執行及/或執行該二補數反運算程式時為錯誤執行。
  17. 如請求項16所述之錯誤偵測與更正方法,其中若判斷該運算程式及/或該二補數反運算程式為錯誤執行,則比較對應該些變數的核對和結果,並且比較對應該些二補數變數的核對和結果。
  18. 如請求項17所述之錯誤偵測與更正方法,更包括: 計算對應全部的該些變數相互的核對和結果; 計算對應該些變數的運算過程中最後的核對和結果; 計算對應全部的該些二補數變數相互的核對和結果;以及 計算對應該些二補數變數的運算過程中最後的核對和結果。
  19. 如請求項18所述之錯誤偵測與更正方法,其中: 若對應全部的該些變數相互的核對和結果相等於對應該些變數的運算過程中最後的核對和結果,則判斷該運算程式為正確執行,並且輸出該第一運算結果;以及 若對應全部的該些二補數變數相互的核對和結果相等於對應該些二補數變數的運算過程中最後的核對和結果,則判斷該二補數反運算程式為正確執行,並且輸出該第二運算結果。
  20. 如請求項18所述之錯誤偵測與更正方法,其中若對應全部的該些變數相互的核對和結果不等於對應該些變數的運算過程中最後的核對和結果,並且若對應全部的該些二補數變數相互的核對和結果不等於對應該些二補數變數的運算過程中最後的核對和結果,則判斷該運算程式為錯誤執行且該二補數反運算程式為錯誤執行,並且輸出該錯誤訊息。
TW110145674A 2021-12-07 2021-12-07 錯誤偵測與更正裝置及其方法 TW202324098A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
TW110145674A TW202324098A (zh) 2021-12-07 2021-12-07 錯誤偵測與更正裝置及其方法
CN202111577302.1A CN116244101A (zh) 2021-12-07 2021-12-22 错误检测与更正装置及其方法
EP21217488.2A EP4195051B1 (en) 2021-12-07 2021-12-23 Error detection and correction device and method thereof technical field
US17/563,704 US20230176945A1 (en) 2021-12-07 2021-12-28 Error detection and correction device and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW110145674A TW202324098A (zh) 2021-12-07 2021-12-07 錯誤偵測與更正裝置及其方法

Publications (1)

Publication Number Publication Date
TW202324098A true TW202324098A (zh) 2023-06-16

Family

ID=79164695

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110145674A TW202324098A (zh) 2021-12-07 2021-12-07 錯誤偵測與更正裝置及其方法

Country Status (4)

Country Link
US (1) US20230176945A1 (zh)
EP (1) EP4195051B1 (zh)
CN (1) CN116244101A (zh)
TW (1) TW202324098A (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2293469A (en) * 1994-09-22 1996-03-27 Secr Defence Error detection in arithmetic circuit.
DE10063350C1 (de) * 2000-12-19 2002-07-18 Siemens Ag Verfahren zur Überwachung einer Datenverarbeitung und -übertragung
EP3367242B1 (en) * 2017-02-24 2021-04-07 Bombardier Transportation GmbH Method of error detection in a microcontroller unit
IT201800007412A1 (it) * 2018-07-23 2020-01-23 Sistema elettronico modulare per la verifica della corretta esecuzione di operazioni eseguite dal sistema stesso
US10904147B1 (en) * 2019-07-22 2021-01-26 Arista Networks, Inc. Boundary condition check using associative memory

Also Published As

Publication number Publication date
EP4195051B1 (en) 2024-01-31
CN116244101A (zh) 2023-06-09
US20230176945A1 (en) 2023-06-08
EP4195051A1 (en) 2023-06-14

Similar Documents

Publication Publication Date Title
US7757237B2 (en) Synchronization of threads in a multithreaded computer program
US8997065B2 (en) Automatic modularization of source code
US20070174750A1 (en) Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability
US8024647B2 (en) Method and system for checking rotate, shift and sign extension functions using a modulo function
US6611779B2 (en) Automatic test vector generation method, test method making use of the test vectors as automatically generated, chip manufacturing method and automatic test vector generation program
Schroeder et al. Generating expected results for automated black-box testing
Anzt et al. Fine-grained bit-flip protection for relaxation methods
US9158506B2 (en) Loop abstraction for model checking
Guhur et al. Lightweight and accurate silent data corruption detection in ordinary differential equation solvers
Monniaux et al. Testing a Formally Verified Compiler
US20120210173A1 (en) Error propagation in a system model
TW202324098A (zh) 錯誤偵測與更正裝置及其方法
Kawato et al. Design and verification of large-scale computers by using DDL
US8055697B2 (en) Method and device for dynamically verifying a processor architecture
Hoffmann et al. Experiences with software-based soft-error mitigation using AN codes
US20210318879A1 (en) Instruction execution method, device, and electronic equipment
US7155378B2 (en) Method for providing cycle-by-cycle ad HOC verification in a hardware-accelerated environment
Liu et al. Using checksum to improve the reliability of embedded convolutional neural networks
Saha Application semantic driven assertions toward fault tolerant computing
Rojas et al. A characterization of soft-error sensitivity in data-parallel and model-parallel distributed deep learning
Loh et al. Fault tolerance through invariant checking for the lanczos eigensolver
Lidman et al. An automated performance-aware approach to reliability transformations
Raab et al. Error model and the reliability of arithmetic operations
Shalan et al. Software control flow error detection and correlation with system performance deviation
JP2000040081A (ja) ベクトルデータ処理装置