TWI548986B - 用於檢測在並行程式中異常交插之方法及系統 - Google Patents

用於檢測在並行程式中異常交插之方法及系統 Download PDF

Info

Publication number
TWI548986B
TWI548986B TW100147469A TW100147469A TWI548986B TW I548986 B TWI548986 B TW I548986B TW 100147469 A TW100147469 A TW 100147469A TW 100147469 A TW100147469 A TW 100147469A TW I548986 B TWI548986 B TW I548986B
Authority
TW
Taiwan
Prior art keywords
interleaving
immediate
list
suspicious
instruction
Prior art date
Application number
TW100147469A
Other languages
English (en)
Other versions
TW201237620A (en
Inventor
尼可拉斯A 傑伯特
克里斯坦諾L 佩羅拉
吉爾斯A 波肯
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 英特爾公司
Publication of TW201237620A publication Critical patent/TW201237620A/zh
Application granted granted Critical
Publication of TWI548986B publication Critical patent/TWI548986B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3632Software debugging of specific synchronisation aspects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Description

用於檢測在並行程式中異常交插之方法及系統
本發明係有關於用於檢測在並行程式中異常交插之方法及系統。
發明背景
許多目前電腦及計算裝置利用多核心技術。為了獲得多核心技術的最大效果,較新穎的軟體程式係體現為可使用多執行緒執行之並行程式。但隨著此等程式之並行性的增高,與該等程式相聯結的不確定性同樣地也增高。軟體程式的不確定性造成開發週期的複雜化。更明確言之,若干並行程式於執行期間可能有並行誤差問題,典型地稱作為「並行錯誤(concurrency bugs)」。
並行誤差更使得並行程式的開發複雜化,原因在於此等錯誤難以再現。多執行緒程式之並行性可能導致並行誤差,唯有體現在極為特定狀況下。舉例言之,於某些情況下,即便使用相同輸入也可能發生並行誤差。無法一致地再現並行誤差實質上增加軟體程式除錯上的困難。此外,即便於罕見情況下其中此等並行誤差偶爾可能重複再現,但該等並行誤差之不確定性使得該等錯誤對典型循環除錯技術具有抗性,後述技術可有效地用在非並行程式的除錯。
依據本發明之一實施例,係特地提出一種方法包含在一計算裝置上,回應於一多執行緒程式之一執行而產生一執行日誌;在該計算裝置上,回應於該多執行緒程式之該執行結果導致沒有並行誤差,基於該執行日誌而產生一第一許可即刻交插列表;在該計算裝置上,回應於該多執行緒程式之該執行結果導致一並行誤差,基於該執行日誌而產生一第二可疑即刻交插列表;在該計算裝置上,基於該等第一及第二列表而產生一第三誤差引致即刻交插列表。
圖式簡單說明
此處所述系統、裝置、及方法係於附圖中舉例說明但非限制性。為求例示說明的簡單明瞭,圖式中之各個元件並非必要照比例繪製。舉例言之,有些元件的尺寸相對於其它元件可誇大以求清晰。附圖中:第1圖為用以檢測在多執行緒程式中異常交插之計算裝置之至少一個實施例之簡化方塊圖;第2圖為用以檢測在多執行緒程式中異常交插之方法之至少一個實施例之簡化流程圖;第3圖為用以產生誤差引致即刻交插列表之方法之至少一個實施例之簡化流程圖;及第4圖為用以基於誤差引致即刻交插列表而產生與執行可重播核心之方法之至少一個實施例之簡化流程圖。
圖示之詳細說明
雖然本揭示之構思係對各個修改及替代形式敏感,但其特定具體實施例已經在圖式中舉例說明且將於此處詳加說明。但須瞭解絕非意圖將本揭示之構思囿限於所揭示的特定形式,反而相反地,意圖涵蓋落入於隨附之申請專利範圍界定的本發明之精髓及範圍內之全部修改、相當物、及替代物。
於後文詳細說明部分中,無數特定細節諸如邏輯體現、操作代碼、規定運算元之手段、資源區隔/共享/複製體現、系統組件之型別及交互關係、及邏輯區隔/整合選擇可經列舉以供更徹底瞭解本文揭示。但熟諳技藝人士將瞭解本文揭示之實施例可無此等特定細節而予實施。於其它情況下,控制結構、閘極層級電路、及完整軟體指令序列可能並未以細節顯示以免遮掩本文揭示。熟諳技藝人士利用本文含括之說明部分無需不必要的實驗即可體現適當合宜的功能性。
說明書中述及「一個實施例」、「一實施例」、「一具體實施例」等指示所述實施例可包括特定特徵、結構、或特性,但非必要每個實施例皆包括該特定特徵、結構、或特性。此外,此等片語並非必要皆係指同一個實施例。又,當特定特徵、結構、或特性係聯結一個實施例描述時,表示聯結其它實施例執行此等特徵、結構、或特性係落入熟諳技藝人士之知識範圍內,無論是否明確地描述亦復如此。
本發明之實施例可於硬體、韌體、軟體、或其任何組合體現。於電腦系統體現的本發明之實施例可包括各組件間一或多個以匯流排為基礎之互連體及/或各組件間一或多個點對點互連體。本發明之實施例也可體現為儲存在一或多個非過渡機器可讀取媒體上之指令,該等指令可由一或多個處理器讀取與執行。非過渡機器可讀取媒體可包括用於以機器(例如計算裝置)可讀取形式儲存或發射資訊之非過渡機構。舉例言之,非過渡機器可讀取媒體可包括唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置及其它中之任一者或其組合。
現在參考第1圖,用於檢測多執行緒程式中異常交插之系統100包括計算裝置102。計算裝置102係經組配來執行並行或多執行緒程式130,及藉由比較可疑即刻交插列表與許可即刻交插列表而檢測多執行緒程式130中異常交插(亦即引致並行誤差之循序指令集),如於後文中參考第2至4圖以進一步細節討論。計算裝置102可體現為可執行此處所述功能之任一型電子裝置。舉例言之,計算裝置102可體現為個人電腦、工作站、膝上型電腦、掌上型電腦、行動網際網路裝置、小區式電話、個人資料助理器、電話裝置、網路設施、虛擬化裝置、儲存控制器、或其它以電腦為基礎之裝置。
於第1圖之具體實施例中,計算裝置102包括處理器110、晶片組114、及共享記憶體116。於若干實例中,計算裝置102也包括一或多個資料儲存裝置120及/或一或多個額外周邊裝置122。此外,於若干實例中,前述組件中之數個可結合至計算裝置102的主機板上,而其它組件例如可透過周邊埠而通訊式耦接至主機板。又復,須瞭解計算裝置102可包括常見於電腦及/或計算裝置的其它組件、次組件、及裝置,並未例示說明於第1圖以求描述清晰。
計算裝置102之處理器110可體現為任一型可執行並行或多執行緒程式的處理器,諸如微處理器、數位信號處理器、微控制器等。處理器110係例示說明具體實施為具有處理器核心112的單核心處理器。但於其它實施例中,處理器110可具體實施為具有多個處理器核心112之多核心處理器。此外,計算裝置102可包括具有一或多個處理器核心112之額外處理器110。
計算裝置102之晶片組114可包括記憶體控制器中樞器(MCH或「北橋」)、輸入/輸出控制器中樞器(ICH或「南橋」)、及韌體裝置。於此等實例中,韌體裝置可具體實施為記憶體儲存裝置用以儲存基本輸出入系統(BIOS)資料及/或指令及/或其它資訊。當然,於其它實例中,可使用具有其它組態之晶片組。舉例言之,於若干實例中,晶片組114可具體實施為平台控制器中樞器(PCH)。於此等實例中,記憶體控制器中樞器(MCH)可結合或以其它方式聯結處理器110。
晶片組114可透過多個信號路徑而通訊式耦接至處理器110。此等信號路徑(及第1圖例示說明之其它信號路徑)可具體實施為可協助在計算裝置102的組件間通訊之任一型信號路徑。舉例言之,信號路徑可具體實施為任何數目之導線、纜線、光導、印刷電路板軌線、通孔、匯流排、介入裝置、及/或其類。
計算裝置102之共享記憶體116也可透過多條信號路徑而通訊式耦接至晶片組114。記憶體128也可具體實施為一或多個記憶體裝置或資料儲存位置包括例如,動態隨機存取記憶體(DRAM)、同步動態隨機存取記憶體(SDRAM)、雙倍資料率同步動態隨機存取記憶體(DDR SDRAM)、快閃記憶體裝置、及/或其它依電性記憶體裝置。此外,雖然第1圖中只例示說明單一記憶體裝置116,但於其它實例中,計算裝置102可包括額外記憶體裝置。共享記憶體116可藉在處理器110上執行的各個執行緒存取。藉多個執行緒之此等記憶體存取可引致並行誤差或錯誤,容後詳述。
如前文討論,計算裝置102也可包括一或多個資料儲存裝置120及一或多個周邊裝置122。於此等實例中,晶片組114也通訊式耦接至一或多個資料儲存裝置120及一或多個周邊裝置122。資料儲存裝置120可具體實施為組配用以短期或長期儲存資料之任一型裝置,諸如記憶體裝置及電路、記憶卡、硬碟機、固態驅動裝置、或其它資料儲存裝置。周邊裝置122可包括任何數目之周邊裝置,包括但非限於輸入裝置、輸出裝置、及其它介面裝置。舉例言之,周邊裝置122可包括計算裝置102之顯示器、滑鼠、鍵盤、及外部揚聲器。
如前文討論,計算裝置102係經組配來檢測多執行緒程式130中的異常交插。為了達成此項目的,計算裝置102重複地執行程式130來建立許可即刻交插列表及可疑即刻交插列表。然後藉由比較可疑即刻交插列表與許可即刻交插列表,及從該可疑交插列表中移除發現含括在該許可即刻交插列表中的該等即刻交插,而產生最終誤差引致即刻交插列表。可重複核心係基於該誤差引致即刻交插列表而產生,且係重複地執行來證實各個誤差引致即刻交插的有效性。
現在參考第2圖,計算裝置102可執行用以檢測異常交插之方法200。方法200始於方塊202,其中多執行緒程式130係經查核來識別存取共享記憶體位置之該等指令。方塊202之分析可於「非線上」執行。換言之,共享記憶體指令可在程式測試前決定。舉例言之,於一個特定實例中,動態競賽檢測演算法可用在程式的單次執行上而產生共享記憶體指令之一近似集合。須瞭解存取共享記憶體位置之指令表示該等指令可能引致並行誤差。如此,被識別為存取共享記憶體位置之各個指令係含括於可疑程式指令列表250。
於方塊204,程式130係於多執行緒環境執行,監視含括於可疑程式指令列表250之指令。如後文討論,程式130可執行多次。基於程式130之各次執行,產生執行日誌。各個執行日誌識別何時執行各個指令,及執行個別指令的執行緒。舉例言之,於具體實施例中,各個執行日誌包括多個日誌分錄。各個日誌分錄包括識別相聯結的指令被執行時間之時間戳記、個別指令之識別、及執行個別指令之執行緒之識別。如後文討論,許可即刻交插列表及可疑即刻交插列表係基於執行日誌而產生。
於方塊208,計算裝置102決定程式130之目前執行是否導致任何並行誤差(亦即「錯誤執行」)。若否,則方法200前進至方塊210,其中許可即刻交插列表252係基於目前執行日誌而產生。為了達成此項目的,針對在目前執行日誌中的各個時間戳記k,檢驗執行指令ik之執行緒tk。藉由針對除了所檢驗的執行緒tk以外,程式130之多執行緒執行之各個執行緒,記錄在所檢驗指令ik執行之前即刻所執行的各個指令iprev,可產生許可即刻交插列表252。指令iprev及ik形成即刻交插,基於程式130的無故障式執行(亦即未經驗並行誤差),該即刻交插被視為可容許。於是各個許可即刻交插識別一對指令包括第一指令iprev,其可在第二指令ik之前即刻執行而不會引致並行誤差。須瞭解「之前即刻」係指第一及第二指令之循序順序而非時間性關聯。換言之,第一指令係在第二指令之前執行而無介入指令,反而可在第二指令之前的任何時間執行。
回頭參考方塊208,若計算裝置102決定程式130的執行導致並行誤差,則方法200前進至方塊212,其中係基於目前執行日誌而產生可疑即刻交插列表254。可疑即刻交插列表254係以類似於前文討論用來產生許可即刻交插列表252之方式產生。更明確言之,可疑即刻交插列表254可藉下述方式而產生,經由針對除了所檢驗的執行緒tk以外,程式130之多執行緒執行之各個執行緒,記錄在所檢驗指令ik執行之前即刻所執行的各個指令iprev。指令iprev及ik形成即刻交插,基於程式130的故障執行,該即刻交插被視為可疑。於是各個許可即刻交插識別一對指令包括第一指令iprev,該第一指令iprev若在第二指令ik之前即刻執行可能(或可能不)會引致並行誤差。
於許可即刻交插列表252或可疑即刻交插列表254產生後(取決於程式130的執行狀態),方法200前進至方塊214。於方塊214,計算裝置102決定是否需要額外執行程式130。如前文討論,程式130可執行任何次數。但須瞭解藉增加程式130的執行次數,可增加檢測異常交插的可能。特定執行時間次數可預先決定,由計算裝置102的用戶在方法200執行之前擇定,或基於方法200之目前結果(例如列表252、254之大小)而動態地決定。
若計算裝置102決定要求額外執行,則方法200迴圈返回方塊204,其中再度執行程式130。但若計算裝置102決定無需額外執行,則方法200前進至方塊216,其中產生誤差引致即刻交插列表。該誤差引致即刻交插列表包括懷疑在程式130的執行中引致並行誤差之該等即刻交插,容後詳述。該誤差引致即刻交插列表係基於可疑即刻交插列表254及許可即刻交插列表252而產生。換言之,該誤差引致即刻交插列表係藉由比較該可疑即刻交插列表254與該許可即刻交插列表252而產生。舉例言之,於一個特定實例中,含括於該可疑即刻交插列表254的各個即刻交插係與許可即刻交插列表252作比較。若發現個別即刻交插係含括於許可即刻交插列表252,則假設即刻交插並非並行誤差的起因且忽略該即刻交插。但於方塊216,若未發現即刻交插係含括於許可即刻交插列表252,則即刻交插係加至該誤差引致即刻交插列表。換言之,各個可疑即刻交插若未發現被列舉為許可即刻交插,則被視為引致誤差。容後詳述,基於可重播核心之執行,誤差引致即刻交插列表可更進一步精製。
須瞭解於某些情況下,唯有多個即刻交插係有關於單次執行,才可能出現並行誤差。換言之,唯有在第一指令係在第二指令之前即刻執行,及第三指令係在第四指令之前即刻執行,及等等才可能出現並行誤差。有關的即刻交插數目界定一個參數,典型稱作為錯誤深度。換言之,錯誤深度識別在單次執行而產生該並行誤差時有關的即刻交插數目。
於其中並行誤差相信具有比1更大的錯誤深度之情況下,具有即刻交插數目等於期望錯誤深度的即刻交插子集之各個排列係與該許可即刻交插列表作比較。為了達成此項目的,計算裝置102可執行如第3圖例示說明之用以產生誤差引致即刻交插列表之方法300。方法300始於方塊302其中決定錯誤深度。如前文討論,錯誤深度識別於單一執行中產生並行誤差而關聯的即刻交插數目。錯誤深度可以預先決定、由計算裝置102用戶供給、或基於其它標準動態決定。
於方塊304,可疑即刻交插列表254的下個即刻交插子集係經取回與查核。如前文討論,擇定的即刻交插子集係包括等於錯誤深度之即刻交插數目。須瞭解具有預定錯誤深度之該可疑即刻交插列表254的即刻交插子集數目可基於如下方程式概算:
(錯誤的即刻交插)錯誤_深度
其中「錯誤的即刻交插」乃含括於該可疑即刻交插列表254的即刻交插數目,及「錯誤_深度」為方塊302中決定的錯誤深度。
於方塊306,計算裝置102決定目前取回的即刻交插子集是否不含括於許可即刻交插列表252。若是,則方法300前進至方塊308,其中該即刻交插子集係加至該誤差引致即刻交插列表。但若目前取回的即刻交插子集係含括於該許可即刻交插列表252,則於方塊310忽略該即刻交插子集(亦即不加至該誤差引致即刻交插列表)。
於方塊308、310在目前取回的即刻交插子集已經經過分析後,方法300前進至方塊312,其中該計算裝置102決定在該可疑即刻交插列表254中是否有任何剩餘已決定錯誤深度的即刻交插子集。若是,則方法300迴圈返回方塊304,其中取回下個即刻交插子集及檢查之。藉此方式,可疑即刻交插列表254的各個即刻交插子集之各項排列係經分析且與許可即刻交插列表252作比較。須瞭解方法300中表示的演算法具有與如下方程式成正比的複雜度:
(許可即刻交插)*(即刻交插數目)錯誤_深度
其中「許可即刻交插」乃含括於許可即刻交插列表252中的即刻交插數目,「即刻交插數目」乃含括於可疑即刻交插列表254的即刻交插數目,及「錯誤_深度」乃於方塊302決定的錯誤深度。
現在回頭參考第2圖之方法200,於方塊216已經產生誤差引致即刻交插列表後,方法200前進至方塊218,其中產生與執行可重播核心。基於該可重播核心的執行,該誤差引致即刻交插列表係經更新,結果導致最終誤差引致即刻交插列表,該列表可進一步經分析,從程式130中移除,及/或以其它方式校正。
舉例言之,如第4圖之例示說明,計算裝置102可執行方法400,該方法係用以基於誤差引致即刻交插列表而產生與執行可重播核心。方法400係始於方塊402,其中取回且檢查誤差引致即刻交插列表的下個即刻交插集合。如前文討論,各個即刻交插集合可包括一或多個即刻交插(亦即具有一或多個錯誤深度)。於方塊404,針對目前即刻交插集合而產生程式130之可重播核心。為了達成此項目的,最長的常見次序列演算法可施加至於方法200之方塊206所產生的執行日誌而擷取程式130的相對應於目前可疑即刻交插集合部分。
於方塊404產生可重播核心後,可重播核心係於方塊406執行。更明確言之,當依據目前即刻交插集合而施行該指令順序時執行可重播核心。
於方塊408,計算裝置102判定於可重播核心的執行期間是否出現執行誤差(例如並行誤差)。若否,則方法400前進至方塊410,其中移除該目前即刻交插集合而形成誤差引致即刻交插列表。但於方塊408,若判定執行誤差已經出現在可重播核心之執行期間,則方法400前進至方塊412,其中該目前即刻交插集合係證實為誤差引致即刻交插且係留在誤差引致即刻交插列表內。於方塊410、412,已經檢查目前即刻交插集合後,方法400前進至方塊414,其中計算裝置102判定在誤差引致即刻交插列表中是否有任何剩餘即刻交插集合。若是,則方法400迴圈返回方塊402,其中取回且檢查下個即刻交插集合。藉此方式,該誤差引致即刻交插列表之各個即刻交插集合的各項排列係在「運轉時間」分析來決定是否引致並行誤差。結果,該誤差引致即刻交插列表包括決定會引致並行誤差的該等即刻交插集合。然後程式開發歸更進一步分析誤差引致即刻交插,從程式130中移除誤差引致即刻交插,及/或否則基於誤差引致即刻交插列表校正程式130。
雖然於圖式及前文詳細說明部分中已經舉例說明及描述本文揭示,但此等舉例說明及描述須考慮為範例性而非限制性,須瞭解唯有已經顯示及描述的具體實施例及落入於本文揭示之精髓及隨附之申請專利範圍內的全部變化及修改期望受保護。
100...系統
102...計算裝置
110...處理器
112...處理器核心
114...晶片組
116...共享記憶體
120...資料儲存裝置
122...周邊裝置
130...多執行緒程式
200、300、400...方法
202-218、302-312、402-414...處理方塊
250...可疑程式指令列表
252...許可即刻交插列表
254...可疑即刻交插列表
第1圖為用以檢測在多執行緒程式中異常交插之計算裝置之至少一個實施例之簡化方塊圖;
第2圖為用以檢測在多執行緒程式中異常交插之方法之至少一個實施例之簡化流程圖;
第3圖為用以產生誤差引致即刻交插列表之方法之至少一個實施例之簡化流程圖;及
第4圖為用以基於誤差引致即刻交插列表而產生與執行可重播核心之方法之至少一個實施例之簡化流程圖。
100...系統
102...計算裝置
110...處理器
112...處理器核心
114...晶片組
116...共享記憶體
120...資料儲存裝置
122...周邊裝置
130...多執行緒程式

Claims (23)

  1. 一種方法,其係包含:在一計算裝置上,回應於一多執行緒程式之一執行而產生一執行日誌;在該計算裝置上,回應於該多執行緒程式之該執行結果導致沒有並行誤差,基於該執行日誌而產生一第一許可即刻交插列表;在該計算裝置上,回應於該多執行緒程式之該執行結果導致一並行誤差,基於該執行日誌而產生一第二可疑即刻交插列表;在該計算裝置上,基於該等第一及第二列表而產生一第三誤差引致即刻交插列表。
  2. 如申請專利範圍第1項之方法,其中產生一執行日誌包含產生具有多個分錄之一執行日誌,各個分錄包括一相聯結的時間戳記、於由該時間戳記指示的時間執行之一第一指令之一識別、及執行該第一指令之該多執行緒程式之多個執行緒中之一第一執行緒之一識別。
  3. 如申請專利範圍第2項之方法,其中產生一第一許可即刻交插列表包含:識別含括於該執行日誌中之一第二指令,該第二指令係緊接在藉該第一執行緒執行該第一指令之前藉該等多個執行緒中之一第二執行緒執行;及產生一許可即刻交插,其識別緊接在該第一指令執行之前執行該第二指令係為許可。
  4. 如申請專利範圍第2項之方法,其中產生一第二可疑即刻交插列表包含:識別含括於該執行日誌中之一第二指令,該第二指令係緊接在藉該第一執行緒執行該第一指令之前藉該等多個執行緒中之一第二執行緒執行;及產生一可疑即刻交插集合,其識別緊接在該第一指令執行之前執行該第二指令係為許可。
  5. 如申請專利範圍第1項之方法,其中產生該第一許可即刻交插列表包含產生一第一列表,其將緊接在一第二指令執行之前一第一指令之執行識別為一許可即刻交插,及其中產生該第二可疑即刻交插列表包含產生一第二列表,其將緊接在一第四指令執行之前一第三指令之執行識別為可能引致一並行誤差。
  6. 如申請專利範圍第1項之方法,其中產生該第三誤差引致即刻交插列表包含比較該第二可疑即刻交插列表與該第一許可即刻交插列表。
  7. 如申請專利範圍第6項之方法,其中產生該第三誤差引致即刻交插列表包含回應於該可疑即刻交插並沒有也含括於該第一許可即刻交插列表,增加含括於該第二列表之一可疑即刻交插至該第三列表。
  8. 如申請專利範圍第1項之方法,其中產生該第三誤差引致即刻交插列表包含:針對含括於該第二可疑即刻交插列表的各個可疑 即刻交插,決定該可疑即刻交插是否也係含括於該第一許可即刻交插列表;及回應於該可疑即刻交插係不含括於該第一列表,更新該第三誤差引致即刻交插列表而含括該可疑即刻交插。
  9. 如申請專利範圍第1項之方法,其中產生該第三誤差引致即刻交插列表包含:決定一錯誤深度(bug depth);從該第二可疑即刻交插列表決定多個可疑即刻交插集合,各個可疑即刻交插集合所包括之可疑即刻交插數目係等於該錯誤深度;針對各個可疑即刻交插集合,決定含括於該可疑即刻交插集合的各個可疑即刻交插是否也係含括於該第一許可即刻交插列表;及回應於該可疑即刻交插集合之各個可疑即刻交插係不含括於該第一列表,更新該第三誤差引致即刻交插列表來含括該可疑即刻交插集合。
  10. 如申請專利範圍第9項之方法,其中決定多個可疑即刻交插集合包含從該第二可疑即刻交插列表決定可疑即刻交插集合之每個排列所具有之可疑即刻交插數目係等於該錯誤深度。
  11. 如申請專利範圍第1項之方法,其係進一步包含:基於含括於該第三列表之一誤差引致即刻交插,從該多執行緒程式產生一可重播核心之指令;及 依據該誤差引致即刻交插執行該可重播核心同時實行該可重播核心之一指令排序。
  12. 如申請專利範圍第11項之方法,其中回應於該可重播核心的執行結果導致沒有並行誤差而更新該第三誤差引致即刻交插列表。
  13. 一種或更多包含多個指令之非暫態機器可讀取媒體,該等指令回應於被執行而導致一客戶電腦:回應於一多執行緒程式之一執行而產生一執行日誌;回應於該多執行緒程式之該執行結果導致沒有並行誤差,基於該執行日誌而產生一第一許可即刻交插列表;回應於該多執行緒程式之該執行結果導致一並行誤差,基於該執行日誌而產生一第二可疑即刻交插列表;針對含括於該第二列表的各個可疑即刻交插,決定該個別可疑即刻交插是否也係含括於該第一許可即刻交插列表;及回應於該個別可疑即刻交插係不含括於該第一列表,更新一第三誤差引致即刻交插列表而含括該個別可疑即刻交插。
  14. 如申請專利範圍第13項之一或更多非暫態機器可讀取媒體,其中:產生一執行日誌包含產生具有多個分錄之一執行 日誌,各個分錄包括一相聯結的時間戳記、於由該時間戳記指示的時間執行之一第一指令之一識別、及執行該第一指令之該多執行緒程式之多個執行緒中之一第一執行緒之一識別,及其中產生一第一許可即刻交插列表包含(i)識別含括於該執行日誌中之一第二指令,該第二指令係緊接在藉該第一執行緒執行該第一指令之前藉該等多個執行緒中之一第二執行緒執行,及(ii)產生一許可即刻交插集合,其識別緊接在該第一指令執行之前執行該第二指令係為許可。
  15. 如申請專利範圍第13項之一或更多非暫態機器可讀取媒體,其中:產生一執行日誌包含產生具有多個分錄之一執行日誌,各個分錄包括一相聯結的時間戳記、於由該時間戳記指示的時間執行之一第一指令之一識別、及執行該第一指令之該多執行緒程式之多個執行緒中之一第一執行緒之一識別,及其中產生一第二可疑即刻交插列表包含(i)識別含括於該執行日誌中之一第二指令,該第二指令係緊接在藉該第一執行緒執行該第一指令之前藉該等多個執行緒中之一第二執行緒執行,及(ii)產生一可疑即刻交插集合,其識別緊接在該第一指令執行之前執行該第二指令係為許可。
  16. 如申請專利範圍第13項之一或更多非暫態機器可讀取 媒體,其中該等多個指令進一步導致一客戶電腦:決定一錯誤深度;從該第二可疑即刻交插列表決定多個可疑即刻交插集合,各個可疑即刻交插集合所包括之可疑即刻交插數目係等於該錯誤深度;針對各個可疑即刻交插集合,決定含括於該可疑即刻交插集合的各個可疑即刻交插是否也係含括於該第一許可即刻交插列表;及回應於該可疑即刻交插集合之各個可疑即刻交插係含括於該第一列表,更新該第三誤差引致即刻交插列表來含括該可疑即刻交插集合。
  17. 如申請專利範圍第16項之一或更多非暫態機器可讀取媒體,其中決定多個可疑即刻交插集合包含從該第二可疑即刻交插列表決定可疑即刻交插集合之每個排列所具有之可疑即刻交插數目係等於該錯誤深度。
  18. 一種計算裝置,其係包含:一處理器;電氣耦接至該處理器之一記憶體裝置,該記憶體裝置含括多個指令於其中,該等指令當由該處理器執行時結果導致該處理器:回應於一多執行緒程式之一執行而產生一執行日誌;回應於該多執行緒程式之該執行結果導致沒有並行誤差,基於該執行日誌而產生一第一許可即刻交插列 表;回應於該多執行緒程式之該執行結果導致一並行誤差,基於該執行日誌而產生一第二可疑即刻交插列表;決定一錯誤深度;從該第二可疑即刻交插列表決定多個可疑即刻交插集合,各個可疑即刻交插集合所包括之可疑即刻交插數目係等於該錯誤深度;針對各個可疑即刻交插集合,決定含括於該可疑即刻交插集合的各個可疑即刻交插是否也係含括於該第一許可即刻交插列表;及回應於該可疑即刻交插集合之各個可疑即刻交插係不含括於該第一列表,更新一第三誤差引致即刻交插列表來含括該可疑即刻交插集合。
  19. 如申請專利範圍第18項之計算裝置,其中產生該第一許可即刻交插列表包含產生一第一列表,其將緊接在一第二指令執行之前一第一指令之執行識別為一許可即刻交插,及其中產生該第二可疑即刻交插列表包含產生一第二列表,其將緊接在一第四指令執行之前一第三指令之執行識別為可能引致一並行誤差。
  20. 如申請專利範圍第18項之計算裝置,其係進一步包含:基於含括於該第三列表之一誤差引致即刻交插,從該多執行緒程式產生一可重播核心之指令; 依據該誤差引致即刻交插執行該可重播核心同時實行該可重播核心之一指令排序;及回應於該可重播核心的執行結果導致沒有並行誤差而更新該第三誤差引致即刻交插列表。
  21. 如申請專利範圍第18項之計算裝置,其中,產生一執行日誌包含產生具有多個分錄之一執行日誌,各個分錄包括一相聯結的時間戳記、於由該時間戳記指示的時間執行之一第一指令之一識別、及執行該第一指令之該多執行緒程式之多個執行緒中之一第一執行緒之一識別。
  22. 如申請專利範圍第18項之計算裝置,其中,產生一第一許可即刻交插列表包含:識別含括於該執行日誌中之一第二指令,該第二指令係緊接在藉該第一執行緒執行該第一指令之前藉該等多個執行緒中之一第二執行緒執行;以及產生一許可即刻交插集合,其識別緊接在該第一指令執行之前執行該第二指令係為許可。
  23. 如申請專利範圍第18項之計算裝置,其中,產生一第二可疑即刻交插列表包含識別含括於該執行日誌中之一第二指令,該第二指令係緊接在藉該第一執行緒執行該第一指令之前藉該等多個執行緒中之一第二執行緒執行;以及產生一可疑即刻交插集合,其識別緊接在該第一指令執行之前執行該第二指令係為許可。
TW100147469A 2010-12-23 2011-12-20 用於檢測在並行程式中異常交插之方法及系統 TWI548986B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201061426943P 2010-12-23 2010-12-23

Publications (2)

Publication Number Publication Date
TW201237620A TW201237620A (en) 2012-09-16
TWI548986B true TWI548986B (zh) 2016-09-11

Family

ID=46314316

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100147469A TWI548986B (zh) 2010-12-23 2011-12-20 用於檢測在並行程式中異常交插之方法及系統

Country Status (3)

Country Link
US (1) US8862942B2 (zh)
TW (1) TWI548986B (zh)
WO (1) WO2012087402A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862942B2 (en) 2010-12-23 2014-10-14 Intel Corporation Method of system for detecting abnormal interleavings in concurrent programs
US20130061213A1 (en) * 2011-08-26 2013-03-07 Cognitive Electronics, Inc. Methods and systems for optimizing execution of a program in a parallel processing environment
CN103810424B (zh) * 2012-11-05 2017-02-08 腾讯科技(深圳)有限公司 一种异常应用程序的识别方法及装置
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
EP2972878B1 (en) 2013-03-15 2018-09-26 Intel Corporation Mechanism for facilitating dynamic and efficient management of instruction atomicity violations in software programs at computing systems
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
CN103679038B (zh) * 2013-12-06 2016-09-21 清华大学 并行程序共享数据类漏洞的检测方法及系统
US9864649B2 (en) * 2015-03-27 2018-01-09 Intel Corporation Technologies for root cause identification of use-after-free memory corruption bugs
US9626265B2 (en) 2015-06-29 2017-04-18 International Business Machines Corporation Efficiency of cycle-reproducible debug processes in a multi-core environment
US10860411B2 (en) * 2018-03-28 2020-12-08 Futurewei Technologies, Inc. Automatically detecting time-of-fault bugs in cloud systems
US10599552B2 (en) 2018-04-25 2020-03-24 Futurewei Technologies, Inc. Model checker for finding distributed concurrency bugs

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230961A1 (en) * 2003-05-14 2004-11-18 International Business Machines Corporation Testing parallel applications using code instrumentation
TW200912637A (en) * 2007-09-05 2009-03-16 Fujitsu Ltd Information processor, method of controlling information processor, and program for controlling information processor
US20100125758A1 (en) * 2008-11-17 2010-05-20 Microsoft Corporation Distributed system checker
US20100251160A1 (en) * 2009-03-26 2010-09-30 Microsoft Corporation Measurement and reporting of performance event rates

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4371932A (en) * 1979-07-30 1983-02-01 International Business Machines Corp. I/O Controller for transferring data between a host processor and multiple I/O units
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6405326B1 (en) * 1999-06-08 2002-06-11 International Business Machines Corporation Limited Timing related bug detector method for detecting data races
US7657872B2 (en) * 2000-10-23 2010-02-02 Nintendo Of America Inc. Product testing and bug tracking system
US20020143575A1 (en) * 2001-02-12 2002-10-03 General Electric Company Interpretation system and method for multi-threaded event logs
KR20030042319A (ko) * 2001-11-22 2003-05-28 한국전자통신연구원 병렬 프로그램 수행중 경합 탐지를 위한 병렬 루프 변형방법
US6851075B2 (en) * 2002-01-04 2005-02-01 International Business Machines Corporation Race detection for parallel software
US7017077B2 (en) * 2002-01-09 2006-03-21 International Business Machines Corporation System and method of error retention for threaded software
US7685573B2 (en) * 2003-07-31 2010-03-23 Sun Microsystems, Inc. Flexible error trace mechanism
US7526750B2 (en) * 2003-10-15 2009-04-28 Microsoft Corporation Object-based systematic state space exploration of software
US7370243B1 (en) * 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7318114B1 (en) * 2004-10-29 2008-01-08 Sun Microsystems, Inc. System and method for dynamic memory interleaving and de-interleaving
US7712081B2 (en) * 2005-01-19 2010-05-04 International Business Machines Corporation Using code motion and write and read delays to increase the probability of bug detection in concurrent systems
US7320114B1 (en) * 2005-02-02 2008-01-15 Sun Microsystems, Inc. Method and system for verification of soft error handling with application to CMT processors
US7793263B2 (en) * 2006-02-02 2010-09-07 International Business Machines Corporation Decision support tool for interleaving review software testing
US7747996B1 (en) * 2006-05-25 2010-06-29 Oracle America, Inc. Method of mixed lock-free and locking synchronization
US8141054B2 (en) * 2007-08-08 2012-03-20 International Business Machines Corporation Dynamic detection of atomic-set-serializability violations
US8327334B2 (en) * 2007-10-17 2012-12-04 International Business Machines Corporation Replay of program executions using cross-entropy
US8417919B2 (en) * 2008-09-12 2013-04-09 Wisconsin Alumni Research Foundation Assigning different serialization identifier to operations on different data set for execution in respective processor in multi-processor system
US7870443B2 (en) * 2008-10-23 2011-01-11 Dell Products L.P. Method to isolate crash of an embedded multi-threaded application to a shared library call without core dump files or debugger
US8224614B2 (en) * 2009-10-30 2012-07-17 International Business Machines Corporation Generating a combination exerciser for executing tests on a circuit
KR20110065067A (ko) * 2009-12-09 2011-06-15 삼성전자주식회사 멀티 쓰레드 테스팅시 발생되는 에러 정보에 대한 비주얼 인터페이스를 제공하는 장치 및 방법
US8392930B2 (en) * 2010-03-11 2013-03-05 Microsoft Corporation Resource contention log navigation with thread view and resource view pivoting via user selections
US8862942B2 (en) 2010-12-23 2014-10-14 Intel Corporation Method of system for detecting abnormal interleavings in concurrent programs

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230961A1 (en) * 2003-05-14 2004-11-18 International Business Machines Corporation Testing parallel applications using code instrumentation
TW200912637A (en) * 2007-09-05 2009-03-16 Fujitsu Ltd Information processor, method of controlling information processor, and program for controlling information processor
US20100125758A1 (en) * 2008-11-17 2010-05-20 Microsoft Corporation Distributed system checker
US20100251160A1 (en) * 2009-03-26 2010-09-30 Microsoft Corporation Measurement and reporting of performance event rates

Also Published As

Publication number Publication date
US8862942B2 (en) 2014-10-14
WO2012087402A1 (en) 2012-06-28
US20130297978A1 (en) 2013-11-07
TW201237620A (en) 2012-09-16

Similar Documents

Publication Publication Date Title
TWI548986B (zh) 用於檢測在並行程式中異常交插之方法及系統
Pessl et al. {DRAMA}: Exploiting {DRAM} addressing for {Cross-CPU} attacks
US9146833B2 (en) System and method for correct execution of software based on a variance between baseline and real time information
US20190180838A1 (en) System For Testing Memory And Method Thereof
CN111638936B (zh) 一种基于内置安全体系结构的虚拟机静态度量方法和装置
US10061682B2 (en) Detecting race condition vulnerabilities in computer software applications
US8812915B2 (en) Determining whether a right to use memory modules in a reliability mode has been acquired
US20100031239A1 (en) Systems, Methods, and Media for Testing Software Patches
US20140143608A1 (en) System and method for determining execution of software
CN114090499A (zh) 访存单元验证系统、设备及存储介质
Xu et al. DualVisor: Redundant hypervisor execution for achieving hardware error resilience in datacenters
US9003236B2 (en) System and method for correct execution of software based on baseline and real time information
US9395987B2 (en) Method and device for detecting a race condition
Montrucchio et al. Software-implemented fault injection in operating system kernel mutex data structure
Wang et al. Detecting data races in interrupt-driven programs based on static analysis and dynamic simulation
US20160062806A1 (en) Method and device for detecting a race condition and a computer program product
Höller et al. Evaluation of diverse compiling for software-fault detection
US11593209B2 (en) Targeted repair of hardware components in a computing device
CN107943632A (zh) 一种实现多nvme盘配置服务器中各盘性能均衡的方法及系统
TWI733964B (zh) 記憶體整體測試之系統及其方法
Luo et al. Platform software reliability for cloud service continuity-challenges and opportunities
JP2013008188A (ja) 計算機、デバイス管理方法、プログラム、及び記録媒体
US20240221854A1 (en) Testing parity and ecc logic using mbist
WO2018036626A1 (en) Apparatus and method for software self test
Lucia et al. Automatic Empirical Failure Avoidance for Concurrent Software