TWI736564B - 用於診斷執行指令串流的處理器之方法、設備、及系統 - Google Patents

用於診斷執行指令串流的處理器之方法、設備、及系統 Download PDF

Info

Publication number
TWI736564B
TWI736564B TW105139190A TW105139190A TWI736564B TW I736564 B TWI736564 B TW I736564B TW 105139190 A TW105139190 A TW 105139190A TW 105139190 A TW105139190 A TW 105139190A TW I736564 B TWI736564 B TW I736564B
Authority
TW
Taiwan
Prior art keywords
diagnostic
processor
instruction
command
type indicator
Prior art date
Application number
TW105139190A
Other languages
English (en)
Other versions
TW201723813A (zh
Inventor
戴米恩羅賓 馬丁
克萊門特馬克 德蒙若
麥克約翰 威廉斯
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW201723813A publication Critical patent/TW201723813A/zh
Application granted granted Critical
Publication of TWI736564B publication Critical patent/TWI736564B/zh

Links

Images

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/366Software debugging using diagnostics
    • 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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Advance Control (AREA)

Abstract

本案提供一種藉由致使該處理器在一連串階段中執行指令串流來診斷執行該指令串流的處理器之方法、設備及系統,其中各個階段之間發生診斷異常。該方法涉及當到達將發生診斷異常之點時,將處理器控制在當前階段中以在儲存位置中儲存包括用於在該串流中之當前指令的類型指示符及用於在該串流中之下一指令的類型指示符之類型指示符資訊。隨後發生該診斷異常,致使執行診斷操作,其包括自儲存位置存取類型指示符資訊,以及根據用於當前指令之類型指示符及用於下一指令之類型指示符,決定控制資訊以識別用於下一診斷異常之至少一個觸發條件。隨後,自該診斷異常的返回致使該處理器根據該已決定之控制資訊在下一階段中操作。藉由不僅擷取關於在將發生診斷異常之點處處理之當前指令的資訊,亦擷取關於該下一指令的資訊,可提供在處理診斷程序之效率方面之顯著改良。

Description

用於診斷執行指令串流的處理器之方法、設備、及系統
本技術係關於用於診斷執行指令串流的處理器之方法、設備及系統。
已知提供具有診斷機制之資料處理系統,該診斷機制可用於對該資料處理系統執行診斷操作(例如,軟體及硬體故障識別及分析(除錯))以便有助於硬體、作業系統、應用程式、全部系統設計及類似者之開發。
一種有用診斷途徑係控制處理器單步執行程式的能力。根據此方法,處理器將執行單個指令並隨後將產生診斷異常以允許分析該系統之狀態。
當單步執行代碼時可出現的一個問題係遇到之代碼在指令之間發生異常時具有不同的執行路徑。若該不同執行路徑產生無限循環則可特別成問題,如當進行單步執行包括載入排他性指令及相關儲存排他性指令的一部分代碼時可發生的情況。此問題在共同擁有的美國專利8,839,038(其全文以引用的方式併入本文中)中論述,該專利描述了一種改良機制,該機制藉由識別已經單步執行了諸如載入排他性指令之指令之時間,並隨後暫時退出單步執行以允許實施替代機制來處理此等指令。
希望在該代碼之執行路徑可由在指令之間發生之異常改變的情況下進一步改良診斷執行指令串流的處理器之程序的效率。
在第一示例性配置中,提供一種藉由致使處理器在一連串階段中執行該指令串流來診斷執行指令串流的處理器之方法,其中各個階段之間發生診斷異常,該方法包括:當到達將發生診斷異常之點時,將該處理器控制在當前階段中,以在儲存位置中儲存包括用於在該串流中之當前指令的類型指示符及用於在該串流中之下一指令的類型指示符之類型指示符資訊;發生診斷異常;回應於該診斷異常執行診斷操作,該診斷操作包括自該儲存位置存取該類型指示符資訊以及,根據用於當前指令之類型指示符及用於下一指令之類型指示符決定控制資訊,以識別用於下一診斷異常之至少一個觸發條件;以及自診斷異常返回以致使該處理器根據已決定之控制資訊在下一階段中操作。
在第二示例性配置中,提供一種藉由致使該處理器在一連串階段中執行該指令串流來診斷執行指令串流之處理器的設備,其中各個階段之間發生診斷異常,當到達將發生診斷異常之點時,該處理器被控制在當前階段中,以在儲存位置中儲存包括用於在該串流中之當前指令的類型指示符及用於在該串流中之下一指令的類型指示符之類型指示符資訊,該診斷設備包括:診斷電路系統, 用以回應於發生之該診斷異常執行診斷操作;以及介面機構,將控制資訊自該介面機構發佈至該處理器,並可經由該介面機構擷取由處理器儲存之該類型指示符資訊;當執行該診斷操作時,該診斷電路系統經佈置以經由該介面機構自該儲存位置擷取該類型指示符資訊以及,根據用於當前指令之類型指示符及用於下一指令之類型指示符決定控制資訊,用以識別用於下一診斷異常之至少一個觸發條件,並用以經由該介面機構將該控制資訊提供至該處理器,使得自診斷異常返回時,致使該處理器根據已決定之控制資訊在下一階段中操作。
在進一步示例性配置中,提供一種設備,該設備包括:用以在一連串階段中執行指令串流之處理器,其中各個階段之間發生診斷異常;以及該處理器可存取的儲存器;當到達將發生診斷異常之點時,該處理器被佈置在當前階段中,以在該儲存器之儲存位置中儲存包括用於在該串流中之當前指令的類型指示符及用於在該串流中之下一指令的類型指示符之類型指示符資訊;回應於在發生診斷異常時執行之診斷操作,該儲存器經更新以提供用於下一階段之控制資訊,根據當前階段所儲存的用於當前指令之類型指示符及用於下一指令之類型指示符決定控制資訊,且該控制資訊識別用於下一診斷異常之至少一個觸發條件;在自診斷異常返回時,該處理器經佈置以根據在該儲存器中儲存之控制資訊在下一階段中操作。
在又一進一步示例性配置中,提供一種系統,該系統包括:處理器,用以在一連串階段中執行指令串流,其中各個階段之間發生診斷異常,當到達將發生診斷異常之點時,該處理器被控制在當前階段中,以在儲存位置中儲存包括用於在該串流中之當前指令的類型指示符及用於在該串流中之下一指令的類型指示符之類型指示符資訊;以及診斷電路系統,回應於發生之診斷異常,用以執行診斷操作,該診斷操作包括自該儲存位置存取該類型指示符資訊以及,根據用於當前指令之類型指示符及用於下一指令之類型指示符,決定控制資訊以識別用於下一診斷異常之至少一個觸發條件;在自診斷異常返回時,該處理器經佈置以根據由該診斷電路系統提供之已決定之控制資訊在下一階段中操作。
在參考附圖論述該等實施例之前,提供實施例之以下描述。
根據一個實施例,提供一種診斷執行指令串流的處理器之方法,該方法致使該處理器在一連串階段中執行該指令串流,其中各個階段之間發生診斷異常。該方法包括在到達將發生診斷異常之點時,將處理器控制在當前階段中,以在儲存位置(例如該處理器可存取之暫存器)中儲存類型指示符資訊。該類型指示符資訊包括提供用於在該串流中之當前指令之類型指示符的欄位,以及提供用於在該串流中之下一指令之類型指示符的額外欄位。回應於隨後發生之診斷異常,執行診斷操作,在該診斷操作期間自該儲存位置存取該類型指示符資訊。根據用於當前指令之類型指示符及用於下一指令之類型指示符,該診斷操作決定控制資訊,用以識別用於下一診斷異常之至少一個觸發條件。隨後,自診斷異常的返回致使該處理器根據已決定之控制資訊在下一階段中操作。
藉由試圖不僅俘獲與在將發生診斷異常之點處處理之當前指令相關的類型指示符,亦俘獲用於在該串流中之下一指令的類型指示符,已發現此舉可顯著改良診斷程序之效率。特定言之,其可降低對指令串流執行診斷程序所需之階段總數。
例如,在可決定下一指令係可導致某種程度低效之預定類型的情況下,若試圖使用特定診斷模式在下一階段中執行該指令,則替代地,可決定當自診斷異常返回時使用替代診斷模式以觸發下一階段。作為一個特定實例,該程序可用於偵測其中在實際執行該載入排他性指令之前該下一指令係載入排他性指令之情況,並因此可佈置成當該載入排他性指令在下一階段中隨後執行時,其不使用單步操作模式執行,該單步操作模式可藉由需要執行額外階段來移除以單步模式執行載入排他性指令可產生之潛在問題(例如進入無限循環)而導致診斷程序之低效。
與先前描述之共同擁有的美國專利8,839,038相反,其中該專利識別已執行了載入排他性指令之時間,並隨後在診斷程序之下一階段中採取適當動作,當使用上述技術時,甚至在執行之前即可識別該排他性載入指令,因此使該程序能夠在自診斷異常返回時直接進行至使用適當診斷模式,由此降低執行指令串流之診斷所需之階段總數。
在進行診斷操作期間決定之控制資訊可包括除用於下一診斷異常之一或更多個觸發條件之外的進一 步資訊。例如,在一個實施例中,該控制資訊可識別在自診斷異常返回之後該處理器將執行之第一個指令。此允許規定在指令串流中下一階段之開始處之靈活性。
在一個實施例中,在該等階段之至少一者中,該處理器以單步模式操作,其中執行來自該串流之單個指令並隨後發生診斷異常。
在此實施例中,當用於當前階段之類型指示符資訊指示當前指令及下一指令之至少一者係預定類型時,該診斷操作可經佈置以設定控制資訊,使得在自診斷異常返回時該處理器以與該單步模式不同之模式在下一階段中操作。因此,當類型指示符資訊指示當前指令或下一指令係預定類型時,此可用於確保在下一階段中不使用單步模式。應注意在發生診斷異常之前正在執行之當前階段可或不可正使用單步模式。因此上文途徑可在一些情況下導致在當前階段與下一階段之間退出單步模式,而在其他情況下其可導致該程序下一階段仍不處於單步模式,其中當前階段亦不使用該單步模式。
上文提及之「不同於該單步模式之模式」可採取各種形式,但在一個實施例中係致使該處理器在發生下一診斷異常之前執行在該指令串流中之複數個指令的模式。
存在其中可規定控制資訊以致使該處理器在下一階段中執行複數個指令的數個方式。例如,監視點、斷點、向量捕捉機制或任何其他適宜機制可用於識別下一 診斷異常應發生之時間。在一個特定實施例中,當用於當前階段之類型指示符資訊指示當前指令及下一指令之至少一者係預定類型時,該診斷操作經佈置以設定該控制資訊,用以識別在該指令串流中之至少一個斷點,使得在下一階段中執行該複數個指令直至到達該至少一個斷點,條件為在執行該複數個指令期間未接收其他異常,則於下一階段結束時發生之診斷異常係回應於到達該至少一個斷點之診斷斷點異常。此提供了用於識別應執行之一連串指令之有效機制而其間不發生任何診斷異常。
該預定類型之指令可採取各種形式。通常,其將係由於在該指令與隨後指令之間發生異常可導致該代碼之執行途徑改變的一指令類型。在一個特定實施例中,該預定類型指令係載入排他性指令,其設定排他性監視器以指示指令串流具有對一或更多儲存位置之排他性存取。特定言之,載入排他性指令用於返回在規定儲存位置之當前值,且另外設定排他性監視器以指示當前正在執行之指令串流具有對特定儲存位置之排他性存取。若仍設定該排他性監視器,可隨後執行儲存排他性指令以將資料儲存至此儲存位置。然而,若該排他性監視器不再針對相關指令串流設定,則該儲存排他性指令將失敗。舉例而言,此可係此類情況:若另一指令串流(諸如與另一程式執行緒相關)同時執行載入排他性指令,其導致設定用於其指令串流之相關排他性監視器。
然而,當單步執行代碼時,該單步機制將實質上產生相似效應,因此導致該儲存排他性指令隨後失敗。特定言之,一旦已藉由設定該排他性監視器而將其獨佔,將發生診斷異常並在自該異常返回時,異常處理器將清除該排他性監視器。這是因為當發生異常時,異常處理器可不返回先前正在執行之代碼,而是可返回不同代碼,並因此應清除該排他性監視器以確保向其返回之指令串流不具有對相關儲存位置之排他性存取。
然而,當單步執行時,此意謂當隨後到達該儲存排他性指令時,其將失敗,這將觸發返回至試圖獨佔該排他性監視器的先前單步,從而將導致該排他性監視器被獨佔(即,設定),但隨後藉由該異常返回清除。因此,在此單步佈置中,該儲存排他性指令將重複地失敗且該程式將永不前進。
根據本技術,此情況可藉由識別當前指令或下一指令係此載入排他性指令之情況來避免,並針對下一階段於該點避免使用單步模式。當決定當前指令係載入排他性指令時,則其將已經被執行,且下一階段可用於採取適當校正動作以確保未出現上文提及之無限循環問題。然而,在決定下一指令係載入排他性指令之情況下,則其將尚未被執行,並由此可更有效地採取適當動作,因此改良該診斷程序之總效率。
在一個實施例中,俘獲類型指示符之當前指令係在發生診斷異常之前由該處理器處理之最後指令。該最後指令實際上可係在該診斷異常之前由該處理器執行之最後指令,或其可替代地係由處理器當前正在處理之最後指令。例如,可能是此類情況:實際上未執行該最後指令,且該處理器決定不執行該指令而是開始診斷異常。在任一情況中,亦擷取類型指示符之下一指令將係在當前階段中尚未由處理器執行之指令。
除使用用於下一指令之類型指示符以影響自診斷異常返回時使用何種診斷模式之外,在特定配置之資料處理系統中,關於下一指令之此類型指示符資訊亦可用於提供在診斷程序處理方面之進一步效率改良。例如,在一個實施例中,可能係此類情況:正在經受診斷程序之處理器被設置在用於平行執行複數個程式執行緒之處理電路系統中。在一個此示例性佈置中,經診斷之處理器可正在執行第一程式執行緒之指令串流,而在系統中之其他處理器上執行其他程式執行緒,從而允許多個程式執行緒平行執行。
在正在平行執行複數個程式執行緒之情況中,當用於當前階段之類型指示符資訊指示下一指令係預定類型時,該診斷操作可經進一步佈置以檢查若自診斷異常返回時該第一程式執行緒執行該下一指令,則在該複數個程式執行緒中之其他程式執行緒之任一者是否會修改其執行行為,且若是則在自診斷異常返回之前採取預定動作。
由此,在此情況中,當關於第一程式執行緒執行診斷操作時,可考慮到對其他程式執行緒之執行行為的潛在影響。在各種情況中此係有用的。例如,在一個實施例中,可能係此類情況:期望試圖診斷第一程式執行緒同時正常執行另一程式執行緒。然而,當具備用於下一指令(如先前提及係尚未執行之指令)之類型資訊時,該診斷操作可試圖偵測以下情況:若下一指令在自診斷異常返回時經執行,則期望該指令之執行可導致其他程式執行緒之執行行為改變。考慮載入排他性指令之先前實例,這例如可能係以下情況:其中其他程式執行緒係在其執行時需要或將短暫需要相關排他性監視器之點處。
自診斷異常返回之前在診斷操作期間採取之預定動作可為各種形式。然而,在上述類型情景中,則在一個實施例中該預定動作包括在自診斷異常返回之前引入延遲,使得自診斷異常返回發生於其他程式執行緒尚未藉由自診斷異常返回時執行該下一指令之第一程式執行緒修改其執行行為時。該延遲可以各種方式引入。例如,可引入預定延遲,隨後該診斷操作可再次檢查其他程式執行緒之進行。然而,替代地運行該診斷操作之診斷電路系統可經佈置以設定與執行其他程式執行緒之處理器有關的控制值,使得一旦其他執行緒已進行至不再需要該排他性監視器之點處,則通知該診斷電路系統。
儘管上述途徑可確保其他執行緒繼續正常執行,由此表示其他程式執行緒之期望行為同時試圖診斷該第一程式執行緒,該途徑可在用於第一程式執行緒之診斷進行中引入一些延遲。
由此,在替代實施例中,可替代地決定暫停執行其他程式執行緒以允許在用於第一程式執行緒之診斷程序中的更具決定性之行為。特定言之,在此實施例中,預定動作可包括發佈控制信號以導致暫停執行另一程式執行緒,其中若自診斷異常返回時該第一程式執行緒執行該下一指令,則修改該另一程式執行緒之執行行為,隨後該處理器繼續至自診斷異常返回時在下一階段中處理該第一程式執行緒。
已使用上述機制暫停其他程式執行緒之執行之後,則在一個實施例中,其他程式執行緒之執行可藉由當在處理下一階段之後發生診斷異常時發佈來自診斷操作之適當進一步控制信號來繼續。因此,一旦相關指令已在正在診斷之代碼中執行,則於該點可重新開始另一程式執行緒。
儘管在一個實施例中,本技術係關於一種如上文論述之診斷處理器之方法,其他實施例係關於提供用於與該處理器互動以使用上述方式控制該處理器的診斷設備、係關於由處理器及在經配置以使用上述方式在該診斷設備控制下操作之相關儲存器組成的設備、及係關於含有此處理器及用於控制該處理器之診斷設備的系統。
現將參考附圖描述特定實施例。
第1圖至第7c圖係來自共同擁有之美國專利8,839,038之圖,且彼等圖之以下描述係在該美國專利中給出。
第1圖圖示具有用於處理指令串流之處理器20的資料處理設備10。該處理器包括管線,該管線具有用於自指令快取記憶體22提取指令的提取單元20a、用於解碼該指令的解碼單元20b及用於執行該經解碼之指令的執行單元20c。資料處理設備10亦具有暫存器組30,暫存器組30包括用於儲存在處理期間使用之資料的暫存器。此等暫存器包括儲存該處理器之當前狀態的狀態暫存器及用於儲存控制值之至少一個控制暫存器。在例如發生中斷及需要儲存該處理器之當前狀態使得在自中斷返回時可恢復該處理器之當前狀態的情況下,可需要狀態暫存器。
資料處理設備10亦具有與診斷設備40連接之外部埠12,診斷設備40包括診斷電路系統42。診斷電路系統42用於分析資料處理設備之操作並由此可發送信號以控制處理器20之執行並可接收自處理輸出之資料以用於分析。
在此實施例中,診斷電路系統42經配置以當希望分析該處理器之指令串流執行時控制處理器20以單步模式操作。在執行各個指令之後的單步模式中,在執行在該指令串流中之下一指令之前發生診斷異常。以此方式,該處理器單步執行程式並在各步之後可由診斷電路系統42分析該處理器之狀態。診斷電路系統42藉由在控制暫存器EDECR中設定位元EDECR.SS來控制該處理器以單步模式操作,此位元設定成向處理器20指示應以單步模式操作。存在具有位元EDESR.SS之進一步控制暫存器EDESR,該位元EDESR.SS在執行指令時遞減並藉由發生診斷異常遞增。此位元使該處理器能夠知道在單步模式期間是否發生非診斷異常、指令是否應執行或在自非診斷異常返回時是否發生診斷異常。存在進一步狀態暫存器EDSCR,其具有記錄發生診斷異常之原因的位元欄EDSCR.MOE。
當發生診斷異常時,診斷代碼由診斷電路系統42執行,診斷電路系統42偵測資料處理設備10之狀態並儲存一些此資訊以用於分析。
當診斷電路系統42希望終止該程序時,其重設在控制暫存器中之單步位元EDECR.SS及EDESR.SS且該處理器隨後回歸(revert)到正常執行模式。
除控制該處理器以單步模式操作之外,診斷電路系統42亦可控制待執行之其他診斷操作。例如,其可在正在執行之代碼中設定斷點或監視點且此等允許該代碼在其執行中於特定設定點中斷且可隨後於此等點分析該處理器之狀態。
儘管在第1圖中,診斷電路系統42顯示為在處理設備10外部,在眾多實施例中諸如在第2圖中,其將存在於處理設備內部。
因此,第2圖示出資料處理設備10,其包括診斷電路系統42、暫存器組30及用於儲存診斷軟體之資料儲存,該診斷軟體可在一些實施例中由在診斷電路系統42中之處理器執行,而在其他實施例中該診斷軟體在處理器20自身上執行。在一些實施例中,該診斷軟體可儲存在外部記憶體44中。
在上文詳述之情況中,發生診斷異常將觸發由處理器20執行在儲存器43或記憶體44中儲存之診斷軟體。在此實施例中,在暫存器組30中儲存之值與在第1圖之暫存器組中儲存之彼等略有不同。在此實施例中,使用者可指示應進入單步診斷模式且診斷電路系統42將寫入在暫存器組30中之控制暫存器並將在指示信號單步模式之MDSCR暫存器中的單步位元MDSCR.SS及在指示採取之步數之保存狀態暫存器SPSR中的保存步數位元SPSR.SS設定為1或0。診斷電路系統42隨後指導處理器20執行除錯之軟體。該處理器將SPSR.SS位元複製至在當前狀態暫存器CPSR中之當前步數位元CPSR.SS以回應於此請求。
因此,回應於設定此等位元,該處理器處理單個指令並將CPSR.SS位元設定為0以指示已執行該一個指令並隨後發生診斷異常。處理器20將步數位元自當前狀態暫存器CPSR.SS複製至保存狀態暫存器SPSR.SS以作為發生診斷異常之部分。
處理器20亦將關於診斷異常之進一步資訊寫入在暫存器組30中之進一步狀態暫存器ESR中,進一步狀態暫存器ESR用於記錄關於異常之資訊,包括診斷異常。
處理器20執行異常處理器代碼,隨後執行診斷代碼並分析該處理器之當前狀態。在SPSR暫存器中之步數位元SPSR.SS被設定為1以指示應現在執行在該指令串流中之下一指令。當將要退出單步診斷模式時,重設在暫存器組30中之暫存器SPSR及MDSCR中的控制位元MDSCR.SS及SPSR.SS。
若實施多個階層式處理狀態或異常位準,則各個異常位準具有其本身之SPSR及ESR暫存器,用於異常位準1之SPSR_EL1及ESR_EL1、用於異常位準2之SPSR_EL2及ESR_EL2,等等。
第3圖顯示根據本發明之實施例的如何以單步診斷模式執行包括排他性載入指令LDREX之指令代碼。在此圖中,時間從左向右流動。因此,將SPSR.SS位元及MDSCR.SS位元設定為1以指示單步模式操作,執行異常返回ERET指令以跳至正除錯之軟體中。此舉將SPSR.SS複製至CPSR.SS並因此執行來自正除錯之軟體的單個指令。此指令係排他性載入指令LDREX指令,且回應於正執行之排他性載入指令LDREX,將CPSR.SS位元設定為0以指示在發生診斷異常之前不應執行進一步指令。
發生診斷異常,將CPSR.SS複製至SPSR.SS,並將在狀態暫存器中之癥狀位元ESR.EX設定為1以指示已執行了該排他性載入指令LDREX。在此暫存器中之有效位元ESR.ISV亦被設定為指示此係用於此位元之有效值。
每當執行特定類型指令時,在本發明之實施例中設定此等癥狀及對應有效位元。此等有效位元可係排他性獨佔該監視器之指令類型,其隨後指示其等具有对特定儲存位置之排他性存取,諸如排他性載入指令。其等亦可係其他類型指令,其中在該指令串流中之後續指令之執行可藉由異常處理器執行來改變。
當LDREX指令存取第一位置時,該監視器位元記錄存取了此第一位置。該監視器具有兩種狀態:「開放性存取」及「排他性存取」。LDREX藉由將監視器置於「排他性存取」狀態獨佔对第一位置之存取,且該監視器以位址標籤形式保持存取位址之記錄。
在儲存排他性STREX指令上檢查該監視器及其標籤。該STREX指令係請求將值寫入第二位置之儲存指令。若該監視器處於「排他性存取」狀態且將STREX寫入加標籤位址,則該STREX指令僅允許進行寫入,亦即,該第二位置匹配該第一位置。該監視器藉由STREX本身被迫回到「開放性存取」;但亦藉由清除排他性CLREX指令、或可能之一些其他指令存取該加標籤位址而被迫回到「開放性存取」。為避免歸因於異常處理器之可能軟體故障導致在LDREX及STREX指令之間的軟體上下文中之改變。該排他性監視器亦藉由異常返回被迫回到「開放性存取」。這可藉由軟體習知方法達成,例如,藉由總是在ERET之前執行CLREX指令,或可藉由在執行ERET指令時迫使該監視器返回「開放性存取」狀態來強制執行。
針對在多處理器系統中之全域監視器而言,若該存取亦來自發佈LDREX之相同處理器,則該STREX僅允許寫入。該監視器亦可藉由存取其他位置之其他指令清除至「開放性存取」狀態,該等其他位置諸如接近該加標籤位址之彼等位置。
因此,在此實施例中,在執行單個LDREX指令之後並回應於設定為指示單步模式之MDSCR.SS控制位元,發生診斷異常且設定ESR.EX及ESR.ISV位元並隨後執行診斷代碼。該診斷代碼偵測設定ESR.ISV有效位元及對應ESR.EX癥狀位元,且若此等指示先前指令係預定類型之一,其中單步模式係不適當的,其指導該處理器清除MDSCR.SS及SPSR.SS位元,使得在自異常處理器返回時,退出單步模式並發生指令串流之正常執行。
該診斷代碼亦將設定適宜斷點,其指示在指令串流中之點,且此允許該診斷電路系統於此點破壞正常執行且必要時重新開始單步模式。
該處理器隨後執行指令串流之下一部分,直至到達斷點。此斷點將設定在代碼區塊之執行由在指令之間出現之異常改變的代碼區塊之後的代碼中位置。
待執行之代碼例如可係試圖獲得對旗語變數之排他性存取之代碼: Loop LDREX        R5,[R1]    ;讀取鎖定(載入排他性) CMP        R5,#0      ;檢查是否為0 STREXEQ R5,R0, [R1];嘗試儲存新值 CMPEQ     R5,#0      ;測試是否儲存成功 BNE        Loop        ;若否,則重新嘗試
在此實例中,該代碼循環直至其獲得旗語。代碼將隨後成功退出該循環並因此可在此部分代碼之後放置斷點以允許返回單步模式。
在其他代碼中,若其未獲得該旗語,則該軟體可想要做一些其他的任務。代碼可以此方式寫入以允許該情況:另一程序可能已獲得該旗語,因此可需要一些時間來變得可用。以下係一不同類型代碼: Loop LDREX        R5,[R1]    ;讀取鎖定(載入排他性) CMP        R5,#0      ;檢查是否為0(旗語釋放) BNE        其他事情;若否,則做其他事情 STREX     R5,R0, [R1];嘗試儲存新值 CMP        R5,#0      ;測試是否儲存成功 BNE        Loop        ;若否,則重新嘗試
注意到若STREX失敗,則代碼循環,因為STREX失敗不必意味著該旗語已經由另一程序取用,因此其值得再次嘗試。
在此情況中,在單步執行LDREX之後,該除錯程式發現該循環之兩個退出點,一者於此段代碼之末端而一者於標籤「其他事情」(未顯示)。因此該除錯程式必須在其二者上均設定斷點。
在上述實施例中,該處理器繼續正常執行並繼續執行來自該排他性載入指令之後的代碼。在其他實施例中,該診斷代碼可控制該處理器再次執行該載入排他性指令,若此舉適當,或其本身可模擬不應以單步模式執行之該部分代碼並隨後控制該處理器開始執行在此部分代碼之後(在此情況中在該儲存排他性指令之後)的代碼。
若該診斷代碼未經配置以控制該處理器退出單步診斷模式,以回應於設定有效位元ESR.ISV及癥狀位元ESR.EX,則在自診斷異常返回時該異常處理器可清除該排他性監視器且該代碼不應向前進行。
第4圖示出一實施例,其中在已經以單步模式(MDSCR.SS=1)執行載入排他性指令之後高優先權中斷正待處理。在此實施例中存在多個異常位準。該診斷代碼於EL1執行,並將在其保存狀態暫存器中之保存步數位元SPSR_EL1.SS設定為1以指示單個指令將以單步模式執行。其執行ERET指令,如第3圖中,此將SPSR_EL1.SS複製至CPSR.SS。在執行載入排他性指令之後,將CPSR.SS清除為0。因此,當於異常位準2 EL2(優先於亦正待處理之診斷異常)發生中斷時,該處理器將用於EL2之保存步數位元SPSR_EL2.SS位元設定為0。當已經處理了該中斷時,執行用於自中斷返回之指令。此清除該排他性監視器(如一般在自異常返回時完成)並將SPSR_EL2.SS複製至CPSR.SS。由於現將步數位元CPSR.SS設定為0,產生診斷異常而不執行任何指令。由於未執行指令,處理器20將與排他性監視器相關之有效位元ESR.ISV設定為零,指示先前已執行且可能已獨佔該排他性監視器之指令類型係未知的。
回應於偵測該ESR.ISV係零,該除錯代碼需要決定先前執行了何種指令並因此,其請求用於來自處理器之此指令的代碼。儘管存在與此請求相關聯之一些額外負擔,僅在已經以單步模式執行指令之後已出現異常之情況下需要此請求,因此,其與需要請求每個指令明顯不同。
第5圖圖示當在單步執行該指令之前立即接收EL2優先權中斷時所發生的情況。在此情況下,當發生中斷時,將步數指示符CPSR.SS設定為1,由此將SPSR_EL2.SS設定為1,且因此,在自此異常返回時,執行下一指令、該載入排他性並隨後發生診斷異常。由於已執行之指令係排他性載入指令,因此處理器20設定ESR.EX位元及ESR.ISV位元並由此,該診斷代碼回應於此舉清除SPSR_EL1.SS及MDSCR.SS值並控制該處理器進入具有先前設定之一或更多個斷點的正常操作模式。
總而言之,若在指令單步之後立即產生軟體單步診斷異常,則將有效位元ESR.ISV設定為1,若產生軟體單步除錯異常且尚未執行該指令,則將有效位元ESR.ISV設定為0。
第6圖圖示處於軟體單步模式之處理器的可能狀態。
若未設定MDSCR.SS位元,則該處理器不以單步模式執行。因此,最初該處理器之軟體單步狀態係無效且被禁用的,且該除錯程式執行診斷軟體。隨後設定MDSCR.SS位元及SPSR.SS位元以指示在執行自該除錯程式之異常返回時將進入該單步模式。在該異常返回時,該處理器進入其中可執行單個指令之有效未決(active-not-pending)狀態(亦即,軟體單步係有效的,但於此點無正待決診斷異常)。若執行該除錯代碼,則該處理器處於此狀態並設定MDSCR.SS位元以指示單步模式及設定CPSR.SS位元以指示待執行一指令。
該處理器可藉由執行該單個指令或藉由發生異常來退出此狀態。若其執行該指令,則將CPSR.SS重設為零以指示已完成該單步。於此階段該軟體單步診斷異常現係未正待決,因此該軟體單步狀態係有效待決。
該處理器亦可藉由發生與軟體單步診斷異常不同之異常來退出此狀態,此時,若此異常具有與診斷異常相比之更高優先權,則當處理異常時該軟體單步狀態係禁用的。根據異常類型,且其在執行該指令之前還是在執行該指令之後出現,在發生異常時該SPSR.SS位元係1或0,且因此在自異常處理器返回時,該處理器返回有效未決或有效待決狀態。
然而,若其他異常具有與診斷異常相比之更低優先權,則將CPSR.SS位元重設為0以指示已完成單步。於此階段,該軟體單步診斷異常現係正待決,因此該軟體單步狀態係有效待決。
自該有效待決狀態發生該軟體單步診斷異常,將CPSR.SS複製至SPSR.SS。執行回歸至除錯程式且該軟體單步狀態被禁用。仍設定MDSCR.SS位元以指示單步模式且清除SPSR.SS位元以指示已執行該單步。
第7a圖圖示說明在根據本發明之實施例之方法中的步驟之流程圖。該方法開始於藉由設定在控制暫存器中之單步位元並將步數設定為1來使診斷設備進入單步診斷模式。
該方法隨後藉由返回單步執行之代碼來進行(經由標記為「A」之連接)。
由於最初該步數係1,則,若不存在正待決之異常,執行單個指令。假設此指令未產生異常,將步數設定為零且,若無正待決之其他指令,則該設備亦決定該指令是否係預定類型,此類型係其中在執行指令之後發生異常將影響後續指令如何執行的類型。若其係該類型,則在狀態暫存器中設定有效位元,若非該類型,則設定有效位元並清除類型位元。現在發生診斷異常,且該方法繼續(經由標記為「B」之連接)。
假設該方法未完成(此如何決定之細節未顯示),該診斷設備決定該診斷異常係歸因於軟體單步,並且,若其係歸因於軟體單步,則進一步決定是否設定有效及類型位元。若設定該有效位元並清除類型位元,則該方法返回以將步數設定為1(仍設定單步控制位元)並藉由單步執行下一指令繼續。注意,此舉係在此方法中之最普遍之路徑,且亦係最佳路徑。
然而,若設定有效及類型位元,則此係指示應抑制該單步模式並清除單步位元,且於其中該單步模式可以重新開始的情況下,在代碼中之適宜點設定斷點。
類似地,若決定在發生診斷異常時不設定有效位元,則該方法進行直接測試單步執行之指令以瞭解其是否係預定類型之一。基於此測試,該方法決定是繼續進行單步模式還是設定斷點。該方法藉由返回至單步執行之代碼來再次繼續(經由連接「A」)。
然而,在已使用斷點之情況中,未設定單步控制位元,因此指令作為指令串流執行直至到達斷點並發生診斷異常。因為隨後決定該診斷異常係歸因於斷點,移除該斷點並設定單步控制位元且將步數設定為1,並因此該單步模式重新開始。
應注意可在以正常方式執行指令串流期間出現並發生中斷及其他異常。
若在執行來自除錯之代碼之指令期間的任何時間,非診斷異常正待決,則其將發生。對於在執行指令之前發生之異常,且對於與由正在執行之指令產生之系統呼叫(系統呼叫(syscall))異常不同之異常(諸如記憶體管理錯誤),在發生異常之前該步數係未變化的(1)。在此等情況下,異常有效取消該指令,意謂著若單步執行了指令,應再次單步執行指令。
因此,在發生異常時,將步數記錄在用於異常處理器之SPSR中。隨後將該步數設定為零。
應進一步注意到該非診斷異常可具有與診斷異常之優先權相比更低之優先權。若是這種情況,則在處理非診斷異常期間該軟體單步控制位元係有效的,並且,因為該步數現為零,將立即發生診斷異常。由於未執行指令,有效及類型位元均被清除。
對於在該指令之後發生之高優先權中斷及由該指令產生之系統呼叫異常而言,指令有效完成,並因此在發生異常之前將步數設定為零。僅具有與診斷異常及系統呼叫異常相比更高之優先權的中斷可於此點發生。
否則,在自異常返回時,若設定單步控制位元,則自SPSR恢復並估算步數。若步數為1,則此指示在完成處於單步模式之指令之前發生異常並因此在自異常返回時,重新執行在該串流中之指令。
若步數為零,則此指示在完成以單步模式執行該指令之後但在發生與該指令相關之診斷異常之前發生該異常。在此情況下,假設無正待決之更高優先權異常,則立即發生診斷異常。然而,必須清除該有效位元及關聯類型位元以指示由於其他指令將會同時進行,不能決定指示指令類型之值。
因此,在發生診斷異常(經由「B」)時,將決定清除有效位元且該方法進行直接測試單步執行之指令之以瞭解其是否係預定類型之一。基於此測試,方法決定是繼續進行單步模式還是設定斷點。
該方法藉由返回至單步執行之代碼來再次進行(經由「A」),如上文所描述。
第7b圖圖示說明在根據本發明之又一實施例之方法中的步驟之流程圖。此方法一般用於「外部除錯」情況,其中該除錯程式係在諸如第1圖所示之外部設備上。在此情況下,指示符值指示可係該程式正單步執行之診斷異常之原因,在此情況下該指示符值將指示指令類型或其可係除錯事件/診斷異常之另一個原因。因此,此指示符值具有複數個可能值,包括:非預定類型之單步指令、預定類型之單步指令、未知類型之單步指令;用於三種類型之值可係:0110、0111、及1110。其他值用於指示除錯事件/診斷異常之其他原因,諸如發生斷點、暫停請求、等等。此等可能值在第7c圖之表中示出。在第7b圖之流程圖中僅考慮單步及斷點值,因為此等係可在此方法中出現之唯一事件類型。
因此,如在第7a圖中,該方法開始於藉由在控制暫存器中設定單步位元並將步數設定為1使該診斷設備進入單步診斷模式。
該方法隨後藉由返回單步執行之代碼進行(經由標記為「A」之連接)。
由於最初該步數係1,若不存在正待決之異常,則執行單個指令。假設此指令不產生異常,將步數設定為0且,若無正待決之其他異常,則該設備亦決定該指令是否係預定類型,此類型係其中在執行指令之後發生異常將影響後續指令如何執行之類型。若其係該預定類型,則在狀態暫存器中將指示類型設定為STEPexcl,若其非預定類型之一,則將該指示類型設定為STEPok。現在發生診斷異常,且該方法繼續(經由標記為「B」之連接)。
假設該方法未完成(此係如何決定之詳情未顯示),該診斷設備決定將該指示類型設定為何種類型。若將其設定為STEPok以指示該指令不係預定類型之一,則該方法返回以將該步數設定為1(仍設定單步控制位元)並藉由單步執行下一指令繼續。注意到此舉係該方法中最普遍之路徑,且亦係最佳路徑。
若將指示類型設定為STEPunknown以指示該指令類型係未知的,則該方法進行已單步執行之指令之直接測試以瞭解其是否係預定類型之一。基於此測試,該方法決定是繼續進行單步模式還是設定斷點。該方法藉由返回至單步執行之代碼再次進行(經由連接「A」)。
若將指示類型設定為STEPexcl以指示該單步執行之指令係預定類型,則此係指示應抑制單步模式並清除單步控制位元,且於其中單步模式可重新開始的情況下,在代碼中之適宜點設定斷點。
在其中已使用斷點之情況下,未設定單步控制位元,因此指令作為指令串流執行直至到達斷點。由於診斷異常係歸因於斷點,於此點將指示類型設定為BRK並發生該診斷異常。隨後,回應於指示類型係BRK,移除斷點並設定單步控制位元且將步數設定為1,並因此重新開始單步模式。
應注意在以正常方式執行指令串流期間可出現並發生中斷及其他異常。
若在執行來自正經除錯之代碼之指令期間於任何時間,非診斷異常正待決,則將發生該異常。對於在執行指令之前發生之異常,且對於與由正執行之指令產生之系統呼叫(系統呼叫)不同之異常(諸如記憶體管理錯誤),在發生該異常之前步數未改變(1)。在此等情況下,該異常有效取消該指令,意味著若剛正在單步執行指令,則其應再次單步執行。
將步數記錄在SPSR中以用於異常處理器。隨後將該步數被設定為零。
應進一步注意,該非診斷異常可具有與診斷異常之優先權相比更低之優先權。若為這種情況,則在處理非診斷異常期間該軟體單步控制位元係有效的,並且,因為步數現為0,則將立即發生診斷異常。由於未執行指令,將該指示類型設定為STEPunknown(未顯示)。
對於在該指令及由該指令產生之系統呼叫異常之後發生的高優先權中斷,該指令有效地完成,並因此在發生異常之前將步數設定為零。僅可於此點發生具有與診斷異常及系統呼叫異常相比更高之優先權的中斷。
另外,在自異常返回時,若設定該單步控制位元,則自SPSR恢復並估算步數。若步數係1,則此指示在完成處於單步模式之指令之前發生該異常並因此在自該異常返回時,重新執行在該串流中之指令。
若步數係0,則此指示在完成以單步模式執行指令之後但在發生與該指令相關之診斷異常之前發生該異常。在此情況下,假設無更高優先權異常正待決,立即發生診斷異常且在發生該診斷異常之前將指示類型設定為STEPunknown以指示由於其他指令將會同時執行,不能決定該指令類型。
因此在發生診斷異常(經由「B」)時,將決定該指示類型係STEPunknown且該方法進行已單步執行之指令之直接測試以瞭解其是否係預定類型之一。基於此測試,該方法決定是繼續進行單步模式還是設定斷點。
在第1圖至第7c圖之上文描述中,已假設該類型指示符資訊僅俘獲用於當前指令之類型指示符,在到達將發生診斷異常之點的時間時在當前階段中該當前指令正在由處理器處理。根據下文描述之實施例,則除俘獲用於當前指令之此類型指示符之外,該處理器亦經佈置以識別用於在該指令串流中之下一指令(即,在診斷程序之當前階段期間尚未執行之指令)的類型指示符。第8圖係一流程圖,說明根據一個實施例之在正除錯之代碼中進行的先前描述之第7a圖之程序如何改變,以導致在發生診斷異常之前俘獲此額外類型資訊。
於步驟100,該程序返回至正除錯之代碼,其係如第7a圖所示經由連接「A」到達之點。於步驟105,決定指令是否已經以單步模式執行而不發生任何其他異常。若為這種情況,則將設定單步位元且該程序將會遵循包括「執行指令」區塊之第7a圖中之路徑,而不存在正待決之異常,不產生非系統呼叫或系統呼叫異常,且不存在決定為正待決之任何高優先權中斷。
若非此類情況,則於步驟110決定該處理器是否處於單步模式但未執行當前指令且不存在高優先權中斷,或是否到達斷點。若為此類情況,則將會到達在第7a圖中將清除有效位元之點。若非此類情況,則於步驟115執行如第7a圖所述之任何必需之其他步驟。
假設自步驟105遵循「是」路徑,則於步驟120以如在第7a圖之程序中設定有效位元之相同方式來設定有效位元。然而,在後續步驟125中,不僅決定已單步執行之指令是否係預定類型,亦額外決定下一指令是否係預定類型。通常該處理器將以管線方式佈置,並由此將存在於任一特定時間點運行過該管線之數個指令。因此,在當前指令係處於管線之執行階段之前,將通常係此類情況:在該管線中存在從已解碼下一指令以決定下一指令是否係預定類型之足夠可用資訊,即便在當前指令之後將出現診斷異常亦如此,並由此在發生診斷異常之前將不執行下一指令。
於步驟130,更新類型指示符資訊(例如可將其儲存在處理器可存取之暫存器中)以識別用於當前指令及用於下一指令之類型指示符。隨後,於步驟150發生診斷異常。
若採取自步驟110之「是」路徑,則於步驟135以如第7a圖中之相關路徑中清除有效位元之相同方式清除該有效位元。於此點,已知當前指令不係預定類型,且在第7a圖之實例中,此係由清除用於當前指令之類型位元來指示。然而,根據第8圖之程序,於步驟140參考該處理器管線仍決定下一指令是否係預定類型。隨後,於步驟145,更新用於當前指令及用於下一指令之類型指示符資訊(針對當前指令,將標記相關欄位以指示當前指令不係預定類型)。隨後,該方法進行至步驟150,其中發生診斷異常。
儘管第8圖圖示如何修改第7a圖之程序以額外擷取關於下一指令之類型的資訊,應瞭解可對第7b圖之途徑進行相似修改,使得不論俘獲怎樣的關於當前指令類型之資訊,在發生診斷異常之前,額外俘獲指示下一指令類型之類型指示符。
第9圖係說明兩個欄位205、210之圖,此兩個欄位可在類型指示符儲存器200中提供,如先前提及,類型指示符儲存器200可採取在該處理器可存取之暫存器之一個實施例中的形式。
在第9圖之實施例中,假設存在當前指令之類型指示符及下一指令之類型指示符二者的三種可能狀態,即指示該指令係預定類型、非預定類型還是該類型係未知。在第9圖及實際上將要論述之剩餘圖中,將假設所關注之預定類型指令係載入排他性指令(LDREX指令)。亦在第9圖中圖示可用於各種狀態之類型指示符儲存器中之編碼實例。根據此編碼,在用於指令之「未知」狀態與該指令不係LDREX指令之指示之間沒有區別。在一個實施例中,根據第8圖之實例,當已知當前指令係LDREX指令或已知其非LDREX指令時將設定有效位元,且當未知當前指令是何種類型時將清除有效位元。
從先前描述之第7a圖中亦將顯而易見,及特定言之,由診斷電路系統執行之步驟,若清除有效位元,則不分析用於當前指令之類型位元資訊,並由此,當清除有效位元時,用於當前指令之類型資訊有效地係「無關」狀態。然而,從隨後論述將顯而易見,甚至在該情況中,仍可由診斷電路系統分析用於下一指令之類型資訊。
第10圖係一流程圖,說明可根據一個實施例執行的診斷操作之一部分,用以考慮到對下一指令提供之類型指示符。實質上,用於第10圖之程序可獨立於在先前參考第7a圖論述的用於當前指令之類型指示符的基礎上執行之診斷操作步驟來執行,不同之處在於將在後文論述及在當前指令及下一指令均係LDREX指令的情況下出現之第10圖之處理步驟275的特殊情況。
於步驟250由診斷異常觸發第10圖之程序,並且於步驟255決定該類型指示符是否指示下一指令係LDREX指令。若為否,則該程序直接進行至步驟290,此處該程序返回正除錯之代碼,完成該診斷操作之任何剩餘態樣,包括使用先前描述之第7a圖之程序分析用於當前指令之類型指示符。
若於步驟255決定該類型指示符指示下一指令係LDREX指令,則該程序進行至步驟260,此處決定該類型指示符是否指示當前指令亦係LDREX指令。若為否,則該程序進行至步驟265,此處檢查該代碼之相關部分以決定自與下一指令相關之臨界區域之退出點。隨後,於步驟270,於此每一退出點設定斷點,並隨後於步驟285,清除該單步位元。隨後,該程序進行至步驟290。因此,將瞭解在當前指令非LDREX指令但已知下一指令係LDREX指令之情況下,則根據第10圖所描述之技術,決定將要一起執行而其間無診斷異常之一連串指令,由此避免出現潛在無限循環問題,若自診斷異常返回時以單步模式執行下一指令,則將出現該潛在循環問題,甚至不必實際上以單步模式執行已識別為下一指令之LDREX指令。此舉可顯著增加診斷程序之效率。在一個實施例中,待識別為以此方式執行之該部分代碼將包括多達並包括用於載入排他性指令之相關儲存排他性指令之代碼。
若於步驟260決定當前指令亦係LDREX指令,則該程序進行至步驟275,此處執行特殊情況處理以決定設定適當斷點。隨後,於步驟280設定該斷點並且該程序隨後進行至步驟285。
於步驟275執行之特殊情況處理將採取各種形式,但實質上試圖關於存在兩個LDREX指令來決定設定斷點之適當退出點。在第11圖中以實例之方式說明兩種可能情況。在第11圖左手側之第一實例中,該第二載入排他性指令(即,識別為下一指令之載入排他性指令)具有巢套在當前LDREX指令之該部分代碼中的其相關代碼,包括相關儲存排他性指令。於步驟305,假設執行當前LDREX指令。出於各種原因可出現此情況,儘管第10圖之程序試圖避免執行此載入排他性指令。例如,可能該第一LDREX指令係在起始診斷程序時執行之第一指令,並由此沒有機會在執行該指令之前識別該指令之存在。
在執行第一LDREX指令之後,則於步驟310發生單步診斷異常。於此點,基於由處理器儲存之類型指示符資訊,將決定當前指令及下一指令均係LDREX指令,並由此該代碼之相關部分均將被分析以決定要設定之適當斷點。針對第11圖左手側圖示之情況,則在一個實施例中,將於點320(即,在與當前LDREX指令相關之儲存排他性指令之後)設定斷點。由此,在自診斷異常返回時,將執行落入斷點320之代碼之全部序列而在各種指令之間不發生診斷異常。
在第11圖之右手側圖示之實例中,出現相似序列步驟,但在於步驟275處理之特殊情況期間,將由分析代碼之相關部分決定該第二載入排他性指令及相關指令未被全部巢套在第一載入排他性指令及相關指令中,並由此,在一個實施例中,將於點335(即,在與第一載入排他性指令相關之儲存排他性指令之後)設定斷點。
第12圖說明根據一個實施例之資料處理系統,其中提供多個CPU,各個CPU執行至少一個程式執行緒。與先前參考第1圖所論述之實例一樣,各個CPU將具有相關管線、暫存器組、及區域快取記憶體。因此,CPU0 350具有管線352、暫存器354及區域快取記憶體356,而CUP1 360具有管線362、相關暫存器364及區域快取記憶體366。CPU 350、360各者亦將具有外部埠358、368以使其能夠連接至診斷設備370諸如除錯程式。各種CPU 350、360將通常經由互連375與其他位準快取記憶體及/或主記憶體380相連接。儘管在第12圖中為便於說明僅圖示兩個CPU,應瞭解在任何特定系統中可提供兩個以上CPU。
儘管在第12圖中圖示外部除錯程式370,在類似於先前描述之第2圖之實施例的替代實施例中,該除錯程式可藉由在用於在其處理器上執行之各種CPU中提供之診斷軟體來實施。該診斷軟體將通常於特權位準運行,例如於作業系統位準或更高位準。在一個CPU上執行之診斷軟體可經佈置以(例如經由互連375)存取在另一CPU中之一或更多個控制暫存器,以設定在其他CPU中之適當控制暫存器來控制在其他CPU上之某些操作(或可與另一CPU經由其他位準快取記憶體/主記憶體380共享控制資訊)。例如,藉由此機制,在CPU0 350上操作之診斷軟體可經佈置以設定在CPU 360中之控制暫存器以中斷該CPU之執行,並導致在該CPU 360上之操作軟體開始其除錯程式軟體。
因此,儘管下文實例將參考第12圖所示之硬體除錯程式佈置來論述,其等同樣應用於軟體除錯程式佈置,其中根據所需及當需要時在CPU各者上運行除錯軟體。
第13圖說明可在此多執行緒系統中執行以當執行診斷程序時進一步改良效率的診斷操作之部分。在此實例中,假設CPU0 350正在執行程式執行緒0同時正在使用先前描述之除錯機制來除錯。同時,假設CPU1 360正在正常執行獨立程式執行緒(程式執行緒1),並且期望CPU1之程式執行緒在除錯程式期間正常執行。於步驟400,由診斷異常觸發用於執行緒0之診斷操作,假設在此診斷異常之前已經發生單步執行。於步驟405,決定當前指令是否係LDREX指令,且若如此,則根據第7a圖或第7b圖之技術執行該指令之分析。隨後,該程序於步驟440返回除錯之執行緒0代碼。
然而。假設於步驟405決定當前指令非LDREX指令,則於步驟415決定下一指令是否係LDREX指令。若為否,則該程序僅進行至步驟435,此處維持單步執行,且該程序隨後返回步驟440。
然而,若於步驟415決定下一指令係LDREX指令,則該程序進行至步驟420,此處在執行診斷操作期間決定其他執行緒(即,在CPU 360上運行之程式執行緒1)是否需要設定相關排他性監視器以正常運行,即,如若允許執行該LDREX指令,將由在步驟415識別之LDREX指令設定之相同排他性監視器。
在該事件中,決定其他程式執行緒確實需要該排他性監視器以正常運行,即,是當前運行之代碼需要該排他性監視器,或可以預期即將運行之代碼將需要該排他性監視器,則該程序進行至步驟425,此處允許執行緒1繼續,且該診斷操作此時不返回至執行緒0之代碼。該程序隨後循環回到步驟420。可於週期性時間間隔再次嘗試步驟420直至到達決定其他程式執行緒(程式執行緒1)不再需要該排他性監視器之點。或者,在運行用於CPU 350之診斷操作期間,可經操作CPU 360(例如藉由於執行緒1之特權等級監視程序執行之軟體,或藉由外部代理監視執行緒1)提供適當控制以確保當CPU 360到達其不再需要該排他性監視器之點時,通知在CPU 350上運行之診斷操作之事實,且於該點將觸發步驟420之重新估算。
一旦於步驟420決定其他程式執行緒不再需要該排他性監視器,則該程序進行至步驟430,此處檢查相關執行緒0代碼,根據需要來設定斷點,並隨後清除單步位元。步驟430實質上對應於先前描述之第10圖之步驟265、270、285。隨後,該程序進行至步驟440,此處處理返回正除錯之執行緒0代碼。
儘管第13圖之途徑具有如下益處:其使程式執行緒1代碼能夠正常執行同時正在除錯程式執行緒0代碼,將瞭解在分析程式執行緒0時可能引入一些延遲,並由此可潛在地在程式執行緒0之行為中引入一些改變。在一替代實施例中,可替代地決定執行第14圖之程序以允許在操作程式執行緒0同時除錯程式執行緒0時之更具決定性之行為。
特定言之,如第14圖所示,於步驟450用於執行緒0之診斷操作由診斷異常觸發。步驟455、460及465隨後直接對應於第13圖之步驟405、410及415。若於步驟465決定在執行緒0中之下一指令係LDREX指令,則於步驟470決定其他程式執行緒(即,程式執行緒1)是否需要該排他性監視器。若其需要,則與第13圖之途徑相反,替代地於步驟475該除錯程式導致程式執行緒1暫停執行。當採用第12圖之硬體除錯程式途徑時,此可藉由硬體除錯程式370經由其埠368接觸CPU 360以設定控制旗標來達成,該控制旗標導致CPU 360之處理器暫停其執行。若替代地採用軟體除錯程式途徑,則在CPU 350上執行之除錯軟體可經由互連375存取在CPU 360中之相關暫存器以在該暫存器中設定一值,該值導致CPU 360中斷其執行程式執行緒1。於該點,在CPU 360中之作業系統可經佈置以在CPU 360上開始該除錯程式軟體。
該程序隨後進行至步驟480,或從步驟470直接進行至步驟480,在該事件中決定其他程式執行緒不需要該排他性監視器。步驟480對應於在第13圖中先前描述之步驟430,且在執行步驟480之後,則該程序進行至步驟490,此處處理返回正除錯之執行緒0代碼。若於步驟465決定下一指令非LDREX指令,則於步驟485維持單步執行,且該程序隨後進行至步驟490。
在返回正除錯之執行緒0代碼之前已經進行步驟475及480,則將瞭解執行緒0代碼將隨後執行複數個指令直至到達相關斷點,於此點將發生進一步診斷異常以將控制返回除錯程式以進一步分析執行緒0。另外,於此點,該除錯程式將發送控制信號至CPU 360以觸發在該CPU上執行程式執行緒1之繼續。針對第12圖之硬體除錯程式途徑,這可藉由除錯程式370經由其埠368直接接觸CPU 360來達成。若替代地使用軟體除錯程式途徑,則可將控制信號從在CPU 350上操作之除錯軟體發送至在CPU 360上操作之除錯軟體以導致在CPU 360上運行之除錯軟體將控制返回其處理器以繼續執行程式執行緒1。
根據上文描述之技術,應瞭解基於在發生與處理當前指令相關之診斷異常時俘獲的用於下一指令之類型指示符資訊,此可使該除錯程式電路能夠採取某些搶先動作以進一步改良診斷程序之效率。事實上,在某些情況下,可實現有效除錯原本將會非常難以除錯之情況。所採用之搶先動作可採取各種形式。例如,在某些情況下可搶先決定在到達首次執行該指令之點之前不以單步模式執行特定類型指令。在其他實施例中,該程序可預先改變原本當執行除錯程式時可存在問題之未來軟體執行模式,例如,在其中正在並行執行多個程式執行緒的系統中。
在本申請案中,詞語「經配置以……」用於意謂設備之元件具有能夠進行所定義操作的配置。此上下文中,「配置」意謂硬體或軟體之互連之佈置或方式。舉例而言,設備可具有提供經定義之操作之專用硬體,或處理器或其他處理設備可經程式化以執行功能。「經配置以」不暗示需要以任何方式改變設備元件以便提供所定義之操作。
儘管已在本文中參考隨附圖式詳細描述本發明之說明性實施例,但應理解,本發明不限於彼等精確實施例,且熟習此項技術者可在其中實現各種變化及修改而不偏離由隨附申請專利範圍所定義之本發明之範疇及精神。例如,可將從屬申請專利範圍之特徵與獨立申請專利範圍之特徵進行各種組合,而不脫離本發明之範疇。
10‧‧‧資料處理設備12‧‧‧外部埠20‧‧‧處理器20a‧‧‧提取單元20b‧‧‧解碼單元20c‧‧‧執行單元22‧‧‧快取記憶體30‧‧‧暫存器組40‧‧‧診斷設備42‧‧‧診斷電路系統43‧‧‧儲存器44‧‧‧記憶體100‧‧‧步驟105‧‧‧步驟110‧‧‧步驟115‧‧‧步驟120‧‧‧步驟125‧‧‧步驟130‧‧‧步驟135‧‧‧步驟140‧‧‧步驟145‧‧‧步驟150‧‧‧步驟200‧‧‧類型指示符儲存器205‧‧‧欄位210‧‧‧欄位250‧‧‧步驟255‧‧‧步驟260‧‧‧步驟265‧‧‧步驟270‧‧‧步驟275‧‧‧步驟280‧‧‧步驟285‧‧‧步驟290‧‧‧步驟305‧‧‧步驟310‧‧‧步驟320‧‧‧斷點335‧‧‧斷點350‧‧‧CPU0352‧‧‧管線354‧‧‧暫存器356‧‧‧區域快取記憶體358‧‧‧外部埠360‧‧‧CPU1362‧‧‧管線364‧‧‧相關暫存器366‧‧‧區域快取記憶體368‧‧‧外部埠370‧‧‧診斷設備375‧‧‧互連380‧‧‧主記憶體400‧‧‧步驟405‧‧‧步驟410‧‧‧步驟415‧‧‧步驟420‧‧‧步驟425‧‧‧步驟430‧‧‧步驟435‧‧‧步驟440‧‧‧步驟450‧‧‧步驟455‧‧‧步驟460‧‧‧步驟465‧‧‧步驟470‧‧‧步驟475‧‧‧步驟480‧‧‧步驟485‧‧‧步驟490‧‧‧步驟
本技術將參考在附圖中圖示之其實施例僅藉由實例之方式進一步描述,其中:第1圖圖示根據一實施例之具有與其連接之遠端診斷設備的資料處理設備;第2圖圖示根據一替代實施例之整合診斷電路系統的資料處理設備;第3圖圖示在以單步診斷模式執行之指令串流中的排他性載入指令之處理;第4圖圖示以單步診斷模式處理指令串流,其中在排他性載入指令之後出現中斷;第5圖圖示以單步診斷模式處理指令串流,其中在執行排他性載入指令之前出現中斷;
第6圖圖示以單步診斷模式操作之處理器的可能狀態;
第7a圖圖示說明在根據一個途徑之方法中的步驟之流程圖;
第7b圖圖示說明在根據一替代途徑之方法中的步驟之流程圖;
第7c圖圖示用於指示符之可能值的表,該指示符指示除錯事件以及單步執行之類型指令的原因;
第8圖係一流程圖,說明根據一個實施例之在除錯之代碼中執行的先前描述之第7a圖之程序如何改變,以致使在發生診斷異常之前俘獲下一指令之類型資訊;
第9圖說明根據一個實施例之在類型指示符儲存器中提供之兩個欄位,用以俘獲關於當前指令及下一指令的類型資訊;
第10圖係一流程圖,說明根據一個實施例之由診斷異常觸發以考慮到針對下一指令提供之類型指示符之診斷操作的部分;
第11圖示意地說明根據一個實施例之在第10圖之程序期間可執行之特殊情況處理;
第12圖說明根據一個實施例之設備,其中不同程式執行緒可由在該設備中提供之不同處理器執行;第13圖係一流程圖,說明根據一個實施例之可關於針對下一指令提供之類型指示符執行之診斷操作的部分;以及第14圖係一流程圖,說明根據一替代實施例之可關於針對下一指令提供之類型指示符執行之診斷操作的部分。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
100‧‧‧步驟
105‧‧‧步驟
110‧‧‧步驟
115‧‧‧步驟
120‧‧‧步驟
125‧‧‧步驟
130‧‧‧步驟
135‧‧‧步驟
140‧‧‧步驟
145‧‧‧步驟
150‧‧‧步驟

Claims (18)

  1. 一種藉由致使一處理器在一連串階段中執行一指令串流來診斷執行該指令串流的該處理器之方法,其中各個階段之間發生一診斷異常,該方法包括以下步驟:當到達將發生該診斷異常之一點時,將該處理器控制在一當前階段中以在一儲存位置中儲存包括用於在該串流中之一當前指令的一類型指示符及用於在該串流中之一下一指令的一類型指示符之類型指示符資訊;發生該診斷異常;執行一診斷操作以回應於該診斷異常,該診斷操作包括自該儲存位置存取該類型指示符資訊及,根據用於該當前指令之該類型指示符及用於該下一指令之該類型指示符,決定控制資訊以識別用於一下一診斷異常之至少一個觸發條件;以及自該診斷異常返回以致使該處理器根據該已決定之控制資訊在一下一階段中操作。
  2. 如請求項1所述之方法,其中該控制資訊進一步識別在自該診斷異常返回之後該處理器將執行之一第一指令。
  3. 如請求項1所述之方法,其中: 在該等階段之至少一者中,該處理器以一單步模式操作,其中執行來自該串流之一單個指令並隨後發生該診斷異常;當用於該當前階段之該類型指示符資訊指示該當前指令及該下一指令之至少一者係一預定類型時,該診斷操作經佈置以設定該控制資訊使得在自該診斷異常返回時,該處理器以與該單步模式不同之一模式在該下一階段中操作。
  4. 如請求項3所述之方法,其中,在與該單步模式不同之該模式中,該處理器執行在該指令串流中之複數個指令。
  5. 如請求項4所述之方法,其中當用於該當前階段之該類型指示符資訊指示該當前指令及該下一指令之至少一者係一預定類型時,該診斷操作經佈置以設定該控制資訊以識別在該指令串流中之至少一個斷點,使得在該下一階段中執行該複數個指令直至到達該至少一個斷點,若在執行該複數個指令期間未接收到其他異常,則於該下一階段結束時發生之該診斷異常係回應於到達該至少一個斷點的一診斷斷點異常。
  6. 如請求項3所述之方法,其中在該當前階段中,該處理器以該單步模式操作,並且當用於該當前階段之該類型指示符資訊指示該當前指令及該下一指 令之至少一者係一預定類型時,該診斷操作經佈置以設定該控制資訊使得在該下一階段中操作該處理器之前退出該單步模式
  7. 如請求項3所述之方法,其中一預定類型之該指令係一載入排他性指令,該載入排他性指令設定一排他性監視器以指示該指令串流具有對一或更多個儲存位置之排他性存取。
  8. 如請求項1所述之方法,其中該當前指令係在發生該診斷異常之前由處理器處理之一最後指令。
  9. 如請求項1所述之方法,其中:該處理器被設置在用於並行執行複數個程式執行緒之處理電路系統中,且該指令串流係一第一程式執行緒之指令,該方法包括以下步驟:當用於該當前階段之該類型指示符資訊指示該下一指令係一預定類型時,該診斷操作經佈置以檢查若在自該診斷異常返回時該第一程式執行緒執行該下一指令,則在該複數個程式執行緒中之該等其他程式執行緒之任一者是否將會修改其執行行為,以及在該事件中在自該診斷異常返回之前採取一預定動作。
  10. 如請求項9所述之方法,其中該預定動作包括在自該診斷異常返回之前引入一延遲,使得自該診斷異常之該返回出現於一時間,此時其他程式執行 緒將不會由在自該診斷異常返回時執行該下一指令之該第一程式執行緒修改其執行行為。
  11. 如請求項9所述之方法,其中:該預定動作包括發佈一控制信號以導致暫停執行另一程式執行緒,若在自該診斷異常返回時該第一程式執行緒執行該下一指令,則該另一程式執行緒之執行行為原本將會被修改;隨後該處理器在自該診斷異常返回時繼續處理在該下一階段中之該第一程式執行緒。
  12. 如請求項11所述之方法,其中當在處理該下一階段之後發生該診斷異常時,該診斷操作導致該另一程式執行緒之該執行繼續。
  13. 如請求項9所述之方法,其中一預定類型之該指令係一載入排他性指令,該載入排他性指令設定一排他性監視器以指示該指令串流具有對一或更多個儲存位置之排他性存取。
  14. 如請求項13所述之方法,其中當用於該當前階段之該類型指示符資訊指示該下一指令係該載入排他性指令時,該診斷操作經佈置以決定當用於該另一執行緒之當前正在執行之程式代碼的一部分需要設定該排他性監視器時,若在自該診斷異常返回時該第一程式執行緒執行該下一指令,則在該複數個程式執 行緒中之另一程式執行緒將會原本修改其執行行為。
  15. 如請求項9所述之方法,其中該處理電路系統包括至少一個進一步處理器,且在該至少一個進一步處理器上執行該等其他程式執行緒。
  16. 一種藉由致使一處理器在一連串階段中執行一指令串流來診斷執行該指令串流的該處理器之設備,其中各個階段之間發生一診斷異常,當到達將發生該診斷異常之一點時,將該處理器控制在一當前階段中以在一儲存位置中儲存包括用於在該串流中之一當前指令的一類型指示符及用於在該串流中之一下一指令的一類型指示符之類型指示符資訊,該診斷設備包括:診斷電路系統,用以執行一診斷操作以回應於發生之該診斷異常;以及一介面機構,將控制資訊從該介面機構發送至該處理器,並且可經由該介面機構擷取由該處理器儲存之該類型指示符資訊;當執行該診斷操作時,該診斷電路系統經佈置以經由該介面機構自該儲存位置擷取該類型指示符資訊,以及根據用於該當前指令之該類型指示符及用於該下一指令之該類型指示符,以決定該控制資訊以識別用於一下一診斷異常之至少一個觸發條件,並且經由該 介面機構將該控制資訊提供至該處理器,使得在自該診斷異常返回時,致使該處理器根據該已決定之控制資訊在一下一階段中操作。
  17. 一種用於診斷執行一指令串流的一處理器之設備,其包括:一處理器,用以在一連串階段中執行該指令串流,其中各個階段之間發生一診斷異常;以及儲存器,該處理器可存取該儲存器;當到達將發生該診斷異常之一點時,將該處理器佈置在一當前階段中以在該儲存器之一儲存位置中儲存包括用於在該串流中之一當前指令的一類型指示符及用於在該串流中之一下一指令的一類型指示符之類型指示符資訊;更新該儲存器以提供用於一下一階段之控制資訊以回應於在發生該診斷異常時正在執行之一診斷操作,根據用於該當前指令之該類型指示符及用於該下一指令之該類型指示符決定針對該當前階段儲存之該控制資訊,且該控制資訊識別用於一下一診斷異常之至少一個觸發條件;在自該診斷異常返回時,該處理器經佈置以根據在該儲存器中儲存之該控制資訊在該下一階段中操作。
  18. 一種用於診斷執行一指令串流的一處理器 之系統,其包括:一處理器,用以在一連串階段中執行該指令串流,其中各個階段之間發生一診斷異常,當到達將發生該診斷異常之一點時,將該處理器控制在一當前階段中以在一儲存位置中儲存包括用於在該串流中之一當前指令的一類型指示符及用於在該串流中之一下一指令的一類型指示符之類型指示符資訊;以及診斷電路系統,回應於發生該診斷異常,用以執行一診斷操作,該診斷操作包括自該儲存位置存取該類型指示符資訊,以及根據用於該當前指令之該類型指示符及用於該下一指令之該類型指示符,決定控制資訊以識別用於一下一診斷異常之至少一個觸發條件;在自該診斷異常返回時,該處理器經佈置以根據由該診斷電路系統提供之該已決定之控制資訊在一下一階段中操作。
TW105139190A 2015-12-22 2016-11-29 用於診斷執行指令串流的處理器之方法、設備、及系統 TWI736564B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/GB2015/054121 2015-12-22
PCT/GB2015/054121 WO2017109442A1 (en) 2015-12-22 2015-12-22 A method, apparatus and system for diagnosing a processor executing a stream of instructions

Publications (2)

Publication Number Publication Date
TW201723813A TW201723813A (zh) 2017-07-01
TWI736564B true TWI736564B (zh) 2021-08-21

Family

ID=55069900

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105139190A TWI736564B (zh) 2015-12-22 2016-11-29 用於診斷執行指令串流的處理器之方法、設備、及系統

Country Status (3)

Country Link
US (1) US10747647B2 (zh)
TW (1) TWI736564B (zh)
WO (1) WO2017109442A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847035B2 (en) * 2021-08-23 2023-12-19 International Business Machines Corporation Functional test of processor code modification operations

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120239913A1 (en) * 2011-03-14 2012-09-20 Michael John Williams Diagnosing code using single step execution
US20120291017A1 (en) * 2011-05-12 2012-11-15 International Business Machines Corporation Debugger and debugging methods using breakpoints conditioned on the static identity of data
TW201409353A (zh) * 2012-08-31 2014-03-01 Via Tech Inc 一種微處理器及其操作方法
CN104335164A (zh) * 2012-06-15 2015-02-04 国际商业机器公司 事务中止处理

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986026B2 (en) * 2000-12-15 2006-01-10 Intel Corporation Single-step processing and selecting debugging modes
US8316352B2 (en) 2006-06-09 2012-11-20 Oracle America, Inc. Watchpoints on transactional variables
US7823022B2 (en) * 2007-02-20 2010-10-26 Red Hat, Inc. Methods and systems for first occurence debugging
US7827391B2 (en) * 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US7992043B2 (en) * 2008-10-22 2011-08-02 International Business Machines Corporation Software debugger for packets in a network on a chip
US8429622B2 (en) * 2010-04-15 2013-04-23 Oracle International Corporation Business process debugger with parallel-step debug operation
US20120102469A1 (en) * 2010-10-22 2012-04-26 International Business Machines Corporation Deterministic application breakpoint halting by logically relating breakpoints in a graph

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120239913A1 (en) * 2011-03-14 2012-09-20 Michael John Williams Diagnosing code using single step execution
US20140344621A1 (en) * 2011-03-14 2014-11-20 Arm Limited Diagnosing code using single step execution
US20120291017A1 (en) * 2011-05-12 2012-11-15 International Business Machines Corporation Debugger and debugging methods using breakpoints conditioned on the static identity of data
CN104335164A (zh) * 2012-06-15 2015-02-04 国际商业机器公司 事务中止处理
TW201409353A (zh) * 2012-08-31 2014-03-01 Via Tech Inc 一種微處理器及其操作方法

Also Published As

Publication number Publication date
US20190303265A1 (en) 2019-10-03
TW201723813A (zh) 2017-07-01
WO2017109442A1 (en) 2017-06-29
US10747647B2 (en) 2020-08-18

Similar Documents

Publication Publication Date Title
TWI544410B (zh) 利用執行單步驟以進行編碼診斷
US6754856B2 (en) Memory access debug facility
KR101423480B1 (ko) 트랜잭셔널 메모리를 위한 최종 브랜치 레코드 표시자
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
JP5419103B2 (ja) デバッグイベントを監視するためのシステム及び方法
US20060184769A1 (en) Localized generation of global flush requests while guaranteeing forward progress of a processor
KR20070109432A (ko) 커널 인지 디버깅 장치 및 방법
US20060117316A1 (en) Hardware multithreading systems and methods
US5109381A (en) Apparatus and method for detecting errors in a pipeline data processor
US6745321B1 (en) Method and apparatus for harvesting problematic code sections aggravating hardware design flaws in a microprocessor
US20200226050A1 (en) Checksum generation
US7496899B2 (en) Preventing loss of traced information in a data processing apparatus
TWI736564B (zh) 用於診斷執行指令串流的處理器之方法、設備、及系統
JPH02294739A (ja) 障害検出方式
JP7026107B2 (ja) 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法
EP3887940A1 (en) Apparatus and data processing method for transactional memory
EP3743818B1 (en) Commit window move element