TWI544410B - 利用執行單步驟以進行編碼診斷 - Google Patents

利用執行單步驟以進行編碼診斷 Download PDF

Info

Publication number
TWI544410B
TWI544410B TW101105114A TW101105114A TWI544410B TW I544410 B TWI544410 B TW I544410B TW 101105114 A TW101105114 A TW 101105114A TW 101105114 A TW101105114 A TW 101105114A TW I544410 B TWI544410 B TW I544410B
Authority
TW
Taiwan
Prior art keywords
instruction
type
diagnostic
processor
exception
Prior art date
Application number
TW101105114A
Other languages
English (en)
Other versions
TW201237749A (en
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 TW201237749A publication Critical patent/TW201237749A/zh
Application granted granted Critical
Publication of TWI544410B publication Critical patent/TWI544410B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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/3648Software debugging using additional hardware

Landscapes

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

Description

利用執行單步驟以進行編碼診斷
本發明之領域係關於資料處理,且特定言之係關於在資料處理設備上執行診斷操作。
已知提供具有診斷機制之資料處理系統,以便幫助開發硬體、作業系統、應用程式、整體系統設計及類似物,診斷機制可用以在資料處理系統上執行診斷操作(例如,軟體及硬體故障識別及分析(除錯))。
當分析資料處理系統時,可使用外部除錯器,外部除錯器包含在主機系統上執行的除錯程式,主機系統連接至將被分析的目標系統,以使得指定將在系統上執行診斷操作的控制訊號自主機傳遞至系統。
外部除錯器涉及正經由外部埠連接至目標的除錯器,外部埠隨後用以程式設計除錯硬體。處理器經配置以使得視為診斷異常之除錯事件引起進入特殊除錯狀態,在特殊除錯狀態下,資料處理設備由外部除錯器訊問及控制。
或者,可能存在自動代管除錯系統,在自動代管除錯系統中,在正被除錯的目標上執行除錯監控軟體。在此情況下,處理器經配置以使得除錯事件引起診斷異常,等診斷異常中斷正被除錯的軟體且將控制傳遞至除錯監控軟體。有用的診斷工具為控制處理器以單步驟通過程 式之能力。此舉允許在需要情況下在程序之每一步驟處分析系統狀態。在單步驟模式中,處理器將執行指令,且隨後將發生診斷異常,且控制將傳遞至除錯軟體,除錯軟體可分析處理器之狀態。當自診斷異常之返回出現時,隨後處理器將執行下一個指令,於是將發生下一個診斷異常。以此方式,除錯軟體可控制處理器以單步驟通過整個程式或僅僅通過分析系統者所關注之部分。
在單步驟通過程式碼時可能產生的一個問題為,若在指令之間發生異常,則是否遭遇具有不同執行路徑之程式碼。若不同的執行路徑涉及無限迴圈,則此狀況可能為尤其困難的。舉例而言,嘗試主張互斥監控器之指令。若程式碼成功主張互斥監控器,則程式碼具有對特定儲存位置之互斥存取且可在特定儲存位置儲存資料。因此,為了主張互斥監控器,使用特殊的載入互斥指令,特殊的載入互斥指令既返回儲存位置之當前值又設定互斥監控器,以便指示當前正在執行的指令串流具有對特定儲存位置之互斥存取。儲存互斥指令可隨後經執行以將資料儲存至此儲存位置。然而,在單步驟通過程式碼的情況下,一旦已藉由設定互斥監控器來主張互斥監控器,則發生診斷異常,且在自此異常返回之後,異常處置器將清除互斥監控器。此狀況是因為當發生異常時,異常處置器可能不會返回至異常處置器先前正在執行的程式碼,而是將返回至不同的程式碼,且因此,應清除互斥監控器,因為將被執行的下一個指令串流不應具有 對儲存位置之互斥存取。
然而,在已清除互斥監控器之單步驟中,隨後當到達儲存互斥指令時,儲存互斥指令將失效,此舉觸發返回至主張互斥監控器之步驟,步驟將主張互斥監控器且隨後藉由異常返回使互斥監控器被清除,且因此,在單步驟中儲存互斥指令將重複地失效且程式將永無進展。
以下給出具有此問題之程式碼之實例
當處於步驟模式時,藉由在步驟通過指令之前掃描指令,得知在自診斷異常返回之後異常處置器清除互斥監控器或鎖定位置且在此程式碼中產生無限迴圈所存在的問題,且在功率及MIPS架構之GDB中解決問題,以判定諸如此等之區塊之位置。一旦區塊已識別,則使用步驟直到型命令(a step until command),以使得在此情況下在儲存互斥指令之後設定斷點,且在此區塊中的指令之間未發生異常,且鎖定位置未由異常處置器清除。
此解決方案之缺點為,需要檢驗所有的程式碼以識別問題程式碼。此解決方案具有顯著的管理負擔,因為診斷系統將需要轉至正在控制指令串流之執行的作業系統 且要求作業系統提取程式碼,以便能夠分析作業系統。若診斷設備遠離處理設備,則管理負擔將尤其高。
功率揭示癥狀暫存器之使用,當發生步驟異常(在功率架構中稱為追蹤異常)時,癥狀暫存器儲存關於處理器狀態之資訊,以允許返回至彼狀態。癥狀暫存器儲存的一則資訊為指示已執行載入互斥指令且在發生異常之前鎖定位置之指示器。不存在關於如何使用此值之資訊。
希望能夠使用單步驟程序診斷程式碼,甚至在存在以下類型之程式碼的情況下能夠使用單步驟程序診斷程式碼:類型程式碼之執行路徑藉由在指令之間發生異常來改變。
本發明之第一態樣提供一種用於診斷處理器之方法,處理器處理指令串流,方法包含以下步驟:(i)控制處理器以單步驟模式執行,以使得執行來自指令串流之單指令,處理器判定單指令是否為至少一種預定類型中的一種預定類型之指令,且處理器在資料儲存位置處儲存類型指示器,且在處理器已處理單指令之後發生診斷異常;(ii)在診斷異常之後執行診斷操作,執行診斷操作之步驟包括以下步驟:存取儲存於資料儲存位置內的類型指示器;以及(iiia)回應於指示單指令並非預定類型中之一種預定類型之類型指示器,控制處理器繼續以單步驟模式執行指令,以使得在自異常返回之後執行下一個單 指令;(iiib)回應於指示單指令為至少一種預定類型中之一種預定類型之類型指示器,控制處理器退出單步驟模式且不執行指令串流內的作為後面緊接著診斷異常的單指令之下一個指令。
本發明認知到,當單步驟通過程式碼時可能產生問題,且在一些情形下,判定在何處單步驟並非為適當的,且抑制單步驟可能是有利的。舉例而言,在指令串流含有指令的情況下,在指令處,由串流內隨後的指令採取的執行路徑藉由在指令之間發生異常來改變,單步驟將不為分析彼段程式碼之執行的適當方式且應受到抑制。 亦認知到,若發生異常觸發程式碼以進入冗長的迴圈,則此狀況可能為特定問題。方法藉由判定正在執行的指令是否為預定類型來解決以上問題,且若正在執行的指令為預定類型,則方法不繼續進行單步驟而是執行不同的程序。在許多情況下,可在執行期間判定指令是否為預定類型,且可在適當情況下抑制單步驟。
在一些實施例中,步驟(iiib)包含以下步驟:控制處理器在自異常返回之後執行指令串流內的複數個指令。
為解決改變執行路徑的指令之間的異常問題,可適當地抑制用於複數個指令之單步驟模式,以使得指令全部順序執行而無異常出現。取決於程式碼,可選擇順序執行的指令之數目,且單步驟模式可返回至指令串流中的點处,指令串流適合於彼程式碼。
在一些實施例中,複數個指令包含繼執行的單指令之 後的指令串流中之複數個指令。
在自異常返回之後執行的複數個指令可為繼執行的單指令之後的指令串流中之指令。或者,執行過的指令可能與一些接下來的指令一起再次執行。後者情況僅在判定有可能再執行此指令的情況下是可能的。在一些情況下,此狀況可能不可能。然而,若此狀況可能,則再次執行指令而隨後無異常接於指令之後可能是有利的。
在一些實施例中,存在另一步驟:回應於指示單指令為至少一種預定類型中之一種預定類型的類型指示器,在指令串流內設定至少一個斷點,以使得執行複數個指令,直至到達至少一個斷點為止,且回應於到達至少一個斷點,發生診斷斷點異常。當偵測預定類型之指令時,隨後在一些實施例中,可將斷點設定在程式碼中之點處,程式碼在預定類型之指令之後。隨後暫時中止單步驟模式,且執行指令,直至到達斷點為止,於是發生斷點診斷異常。回應於此舉,處理器可在適當情況下返回至單步驟模式,或者,可設定另外的斷點,或可能已到達正在測試的程式碼之末端。
在一些實施例中,步驟(iiib)包含以下步驟:仿真執行的單指令及指令串流中之至少一個後續指令,且隨後控制處理器自指令串流中之指令開始單步驟模式,指令串流中之指令在經仿真的至少一個後續指令之後。
在一些實施例中,指令可能藉由例如診斷設備來仿真,而非執行指令,且一旦已執行此等經仿真的指令, 則處理器可經控制以自指令串流中的適當指令重新開始單步驟模式。將選擇經仿真的指令,以便自指令重新開始單步驟模式,在指令處,在每一指令之間所發生的診斷異常將不會改變指令串流如何繼續前進。
在一些實施例中,儲存於資料儲存位置內的類型指示器指示指令為預定類型中之一種預定類型或指令並非為預定類型中之一種預定類型或指示指令為未知類型,其中若在存取類型指示器之步驟中,判定類型指示器指示為未知類型,則執行檢驗單指令且判定單指令是否為預定類型之額外步驟。
儘管類型指示器可指示指令是否為預定類型,但類型指示器亦可當指令為未知類型時指示指令是否為預定類型。在後者情況下,隨後方法檢驗指令,以判定指令為何種類型。此舉可能需要提取指令,以使得可分析指令。儘管此步驟具有與步驟相關聯之潛時管理負擔,但將僅在少數情況下將指示未知類型,因此,此舉將不會增加過度地執行整個診斷方法之管理負擔。
在一些實施例中,類型指示器包含兩個指示值:第一值及第二有效值,第一值指示指令為預定類型或並非為預定類型,第二有效值指示第一值是否有效,第二有效值為無效指示指令為未知類型。
可使用兩個值或兩個位元進行類型指示,其中一者指示類型且另一者為有效位元,有效位元換言之當類型位元無效時指示類型為未知的。此舉可為表示值之便利方 式,因為當意謂類型值無法再被依賴的環境出現時,可將有效位元簡單地設定成無效的。
在其他實施例中,類型指示可為單一值。此值在一些實施例中可進一步包含所發生的診斷異常之類型之指示。
舉例而言,類型指示可指示診斷異常之原因,諸如,發生斷點或停止請求。
在一些實施例中,回應於處理器在發生下一個診斷異常之前之清除狀態,將類型指示器設定成指示執行的指令為未知類型。
若處理器之狀態在發生下一個診斷異常之前被清除,則指令類型應設定成未知的,在一些實施例中,可藉由將有效位元設定成無效來執行此舉。狀態之清除可回應於管線式處理器中之管線的清除,或許回應於清除指令而出現。
在一些實施例中,方法包含以下初始步驟:設定單指令分步控制值且設定步驟指示值,單指令分步控制值指示將要執行單指令分步診斷方法,步驟指示值指示將要在將發生下一個診斷異常之前執行指令串流中之單指令。
單步驟模式可能藉由儲存的控制值來指示,以使得當設定此控制值時,處理器知道處理器正以單步驟模式操作且在執行每一指令之後,處理器應發生診斷異常。亦可能存在步驟指示值,步驟指示值設定成指示將執行一 個步驟之一個值,例如一,且當指令已被處理時,步驟指示值設定成指示在發生下一個診斷異常之前沒有另外的指令將被執行之另一值,例如零。
在一些實施例中,回應於指示在發生下一個診斷異常之前零個指令將被執行之步驟指示值,在發生下一個診斷異常之後將類型指示器設定成未知類型。
步驟指示值在單步驟模式期間已發生並非為診斷異常之異常的情況下可能是有用的。在此情況下,步驟指示器中之值指示在自異常返回之後是否應執行指令或是否應立即發生診斷異常。此外,若步驟指示值設定成指示零個指令將被執行,則此步驟指示值指示在執行指令之後但在已發生後續診斷異常之前已發生異常,且在此情況下,若指令之類型設定成未知的,則步驟指示值是有利的,因為發生異常可能已改變類型指示器。
儘管指令之預定類型可為若干類型,但在一些實施例中,指令之至少一種預定類型中的一種類型包含以下情況下的指令之類型:在指令之後執行異常可使指令串流中的至少一個後續指令以不同方式執行。特定言之,預定類型包含以下情況下的指令之類型:在進入診斷異常或自診斷異常返回之後由異常處置器執行的操作改變包含處理器的設備之狀態,以使得指令串流中的後續指令可以不同方式執行。此等指令並不適合於單步驟模式中之分析。
在異常改變原有指令串流之執行路徑的情況下之指令 並不適合於單步驟模式中之分析,且因此,可判定此等指令為哪些指令且隨後抑制單步驟模式之診斷方法是有利的。
在一些實施例中,至少一種預定類型中之一種預定類型之指令包含存取鎖定位置之指令,鎖定位置儲存鎖定值與清除值中之一者,清除值指示處理器可寫入至預定儲存位置,且鎖定值指示對儲存鎖定值的處理器之預定儲存位置的互斥寫入存取。
當在處理指令串流期間發生異常時,在自彼異常返回之後,處理器可能不會在處理器中斷之點處重新開始執行,而是可能在不同點處開始執行,例如,處理器可能自不同的應用程式開始執行指令。因此,若存在鎖定位置,在鎖定位置內,儲存的鎖定值指示預定儲存位置被鎖定且僅可藉由互斥儲存存取自彼應用程式寫入至預定位址,則在自異常返回之後清除鎖定值,因為返回可能未返回至應用程式中之相同點,且鎖定值隨後將不適合於執行的接下來的指令。此舉在步驟模式中產生異常出現於每一指令之間的問題,且因此,若指令之此類型為引起退出步驟模式的預定類型中之一種預定類型,則此舉是有利的。
本發明之第二態樣提供一種用於儲存電腦程式之電腦程式產品,電腦程式在藉由資料處理設備執行時控制資料處理設備執行根據本發明之第一態樣的方法中之步驟。
本發明之第三態樣提供一種用於分析處理器之診斷設備,處理器處理指令串流,診斷設備包含:輸出端及輸入端,輸出端用於將控制訊號輸出至處理器,輸入端用於自處理器接收資料;以及診斷電路系統,診斷電路系統用於執行診斷操作;診斷電路系統經配置以將控制訊號輸出至處理器,來設定指示將以單步驟模式操作處理器之指示值,以使得執行指令串流中之單指令且隨後發生診斷異常;以及診斷電路系統經配置以存取用於儲存類型指示器之儲存位置,類型指示器指示執行的單指令是否為至少一種預定類型中之一種預定類型之指令;以及回應於指示執行的單指令並非預定類型中之一種預定類型之類型指示器,診斷電路系統經配置以控制處理器繼續以單步驟模式執行指令,以使得在自異常返回之後執行下一個單指令;以及回應於指示執行的單指令為至少一種預定類型中之一種預定類型之類型指示器,診斷電路系統經配置以控制處理器退出單步驟模式且不執行指令串流內作為後面接著異常的單指令的下一個指令。
本發明之第四態樣提供一種包含處理器及根據本發明之第三態樣之診斷設備之資料處理設備,處理器用於處理指令之串流,診斷設備用於分析處理器。
本發明之第五態樣提供一種包含處理器及複數個儲存位置之資料處理設備,處理器用於處理資料,複數個儲存位置用於儲存控制資料;儲存位置中之至少一個儲存位置儲存單步驟模式控制值,資料處理設備經配置以回 應單步驟模式控制值,單步驟模式控制值設定成以單步驟模式執行來自指令串流的指令,以使得在執行指令中之每一指令之後發生診斷異常;處理器經配置以在設定單步驟模式控制值時針對藉由處理器執行的每一指令判定指令是否為至少一種預定類型中之一種預定類型並經配置以將類型指示器儲存於儲存位置中之一個儲存位置內,類型指示器指示指令為預定類型中之一種預定類型,或指令並非為預定類型中之一種預定類型或指令為未知類型。
當資料處理設備以單步驟模式執行時,逐一執行指令且在以此模式執行每一指令之後,發生診斷異常,以便可分析處理設備之狀態。應注意,可能不在執行指令之後立即發生診斷異常,因為在執行指令期間可能接收另一異常且可能首先發生此異常。然而,在自此異常返回之後,隨後將在執行指令串流中的下一個指令之前發生診斷異常。在本發明之此態樣中,處理器針對執行的每一單指令判定單指令是否為預定類型,且處理器儲存類型指示器,類型指示器指示單指令若為預定類型、單指令若並非為預定類型或類型若為未知的。
在一些實施例中,類型指示器儲存包含兩個值之儲存:第一值及第二值,第一值指示類型是否為預定類型,且第二值指示第一值是否有效,由第二值表示的未知類型指示第一值無效。
儲存類型資訊之便利方式為使用兩個值:第一值及第 二值,第一值指示類型,第二值指示第一值是否有效,亦即,類型為已知或未知的。因為值可各自具有兩個值中之一者,所以值可各自由單一位元表示。
在其他實施例中,類型資訊為單一值,且在一些實施例中,類型資訊進一步包含所發生的診斷異常之類型之指示。舉例而言,類型資訊可指示診斷異常之原因,因此,此類型資訊可能為診斷異常歸因於以下原因:預定類型之指令之軟體步驟、並非為預定類型的指令之軟體步驟,或一些其他除錯事件,諸如,正發生的斷點或停止請求。
在一些實施例中,資料處理設備經配置以回應於處理器在發生緊接的診斷異常之前之清除狀態,以將類型指示器設定成指示執行的指令為未知類型。
一般而言,當執行指令時,處理器可判定指令是否為預定類型且可儲存此資訊。然而,在某些情形下將清除處理器之狀態,且此資訊將損失。因此,在此情形下重要的是,類型指示器設定成未知的,以便辨識此未知類型。例如,回應於正在執行的顯式清除指令或在自異常返回之後出現狀態清除。
在一些實施例中,儲存位置中之一個儲存位置經配置以儲存步驟指示值,步驟指示值指示在發生下一個診斷異常之前將執行一個或者零個指令,資料處理設備經配置以回應於步驟指示值為零,在發生診斷異常之後將類型指示器設定成未知類型。
資料處理設備在一些實施例中經配置以回應於在執行單指令中之一個單指令之後發生異常,在發生診斷異常之前將步驟指示值設定成零,以使得回應於步驟指示值為零,在自異常返回之後不執行任何指令,且發生擱置診斷異常。在此點處應將類型指示器設定成未知的,因為回應於另一異常可能已執行其他指令,且因此,此值可不再反射先前以步驟模式執行的單指令。
在一些實施例中,預定類型包含以下情況下的指令之類型:在進入診斷異常或自診斷異常返回之後由異常處置器執行的操作改變處理設備之狀態,以使得指令串流中的後續指令可以不同方式執行。
本發明之第六態樣提供一種由電腦程式提供的虛擬機,電腦程式執行於資料處理設備上,虛擬機提供根據本發明之第四態樣或第五態樣之資料處理設備的指令執行環境。
本發明之以上及其他目標、特徵結構及優點將由結合隨附圖式閱讀的說明性實施例之以下詳細描述顯而易見。
第1圖圖示資料處理設備10,資料處理設備10具有用於處理指令串流之處理器20。處理器包含管線,管線具有用於自指令快取記憶體22提取指令之提取單元20a、用於解碼指令之解碼單元20b及用於執行經解碼指 令之執行單元20c。資料處理設備10亦具有暫存器組30,暫存器組30包含用於儲存在處理期間使用的資料之暫存器。此等暫存器包括狀態暫存器及至少一個控制暫存器,狀態暫存器儲存處理器之當前狀態,至少一個控制暫存器用於儲存控制值。在以下情況下可能需要狀態暫存器:例如,發生中斷且需要儲存處理器之當前狀態,以便在自中斷返回之後,可恢復狀態。
資料處理設備10亦具有外部埠12,外部埠12與診斷設備40連接,診斷設備40包括診斷電路系統42。診斷電路系統42用以分析資料處理設備之操作,且因此,診斷電路系統42可發送訊號來控制處理器20之執行且可自處理器接收輸出的資料,以進行分析。
在此實施例中,診斷電路系統42經配置以當診斷電路系統42希望分析處理器之指令串流執行時控制處理器20以單步驟模式操作。在單步驟模式中,在執行每一指令之後,在執行指令串流中下一個指令之前發生診斷異常。處理器以此方式分步通過程式,且在每一步驟之後可藉由診斷電路系統42分析處理器之狀態。診斷電路系統42藉由在控制暫存器EDECR中設定位元EDECR.SS來控制處理器以單步驟模式操作,此位元設定成對處理器20指示處理器20應以單步驟模式操作。存在另一控制暫存器EDESR,控制暫存器EDESR具有位元EDESR.SS,位元EDESR.SS當執行指令時遞減且藉由發生診斷異常而遞增。此位元使處理器能夠知道是否在單 步驟模式期間發生非診斷異常、是否應執行指令或是否應在自非診斷異常返回之後發生診斷異常。存在另一狀態暫存器EDSCR,狀態暫存器EDSCR具有位元欄位EDSCR.MOE,位元欄位EDSCR.MOE記錄發生診斷異常之原因。
當發生診斷異常時,藉由診斷電路系統42執行診斷程式碼,診斷電路系統42偵測資料處理設備10之狀態且儲存此資訊中之一些,用以進行分析。
當診斷電路系統42想要結束程序時,診斷電路系統42重設控制暫存器中之單步驟位元EDECR.SS及EDESR.SS,且處理器隨後回歸至正常執行模式。
除控制處理器以單步驟模式操作之外,診斷電路系統42亦可控制執行其他診斷操作。舉例而言,診斷電路系統42可在正在執行的程式碼內設定斷點或監看點,且此等斷點或監看點允許程式碼在程式碼執行時在某些設定點處中斷,且可隨後在此等點處分析處理器之狀態。
儘管在第1圖中,診斷電路系統42圖示為在處理設備10的外部,但在許多實施例中,諸如在第2圖中,診斷電路系統42將存在於處理設備內部。
因此,第2圖圖示資料處理設備10,資料處理設備10包含診斷電路系統42、暫存器組30及用於儲存診斷軟體之資料儲存器,在一些實施例中診斷軟體可藉由診斷電路系統42內的處理器來執行,而在其他實施例中診斷軟體可在處理器20本身上執行。在一些實施例中,診斷 軟體可儲存於外部記憶體44中。
在以上詳述的情況下,發生診斷異常將觸發儲存於儲存器43或記憶體44中的診斷軟體藉由處理器20來執行。在此實施例中,儲存於暫存器組30中的值略不同於儲存於第1圖之暫存器組中的彼等值。在此實施例中,使用者可指示,應進入單步驟診斷模式,且診斷電路系統42將寫入至暫存器組30中的控制暫存器並在MDSCR暫存器中設定單步驟位元MDSCR.SS且在保存的狀態暫存器SPSR中設定保存的步驟數位元SPSR.SS,單步驟位元MDSCR.SS指示訊號步驟模式,保存的步驟數位元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位元設定成一,從而指示執行操作之單步驟模式、異常返回ERET指令,以跳越至正在除錯的軟體中。此舉將SPSR.SS複製至CPSR.SS,且因此執行自正在除錯的軟體之單指令。此指令為互斥載入指令LDREX指令,且回應於正在執行的互斥載入指令LDREX,將CPSR.SS位元設定成0,從而指示在發生診斷異常之前應不執行任何另外的指令。
發生診斷異常,將CPSR.SS複製至SPSR.SS,且將狀態暫存器內的癥狀位元ESR.EX設定成1,以指示執行了互斥載入指令LDREX。亦設定此暫存器內的有效位元ESR.ISV,有效位元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
在此實例中,程式碼循環,直至程式碼獲得旗號為止。程式碼將隨後成功地退出迴圈,且因此可將斷點放在程式碼之此區段之後,程式碼之區段允許返回至單步驟模式。
在其他程式碼中,若軟體未獲得旗號,則軟體可能想要執行另外的步驟。可以此方式寫入程式碼,以允許另一程序可能已獲得旗號的情況,因此,程式碼可花費一些時間來變得可用。此程式碼為不同類型之程式碼:
注意到,若STREX失效,則程式碼循環,因為STREX失效未必暗示旗號已由另一程序採取,因此值得再試一次。
在此情況下,步驟已執行到LDREX,除錯器找到迴圈 之兩個退出點,一個退出點在程式碼之此區段的末端,且一個退出點在標示「SomethingElse」(未圖示)處。因此除錯器必須在兩個退出點上設定斷點。
在以上實施例中,處理器重新開始正常執行且自互斥載入指令之後繼續執行程式碼。在其他實施例中,若此載入互斥指令是適當的或載入互斥指令本身可仿真不應以單步驟模式執行的程式碼之區段,則診斷程式碼可控制處理器再執行載入互斥指令,且隨後診斷程式碼控制處理器在程式碼之此區段之後開始執行程式碼,在此情況下,在儲存互斥指令之後開始執行程式碼。
若回應於設定有效位元ESR.ISV及癥狀位元ESR.EX,診斷程式碼未經配置以控制處理器退出單步驟診斷模式,則在自診斷異常返回之後,異常處置器將清除互斥監控器,且程式碼將不會取得向前的進展。
第4圖圖示在載入互斥指令已以單步驟模式執行(MDSCR.SS=1)之後擱置高優先等級中斷的情況下之實施例。在此實施例中存在多個異常位準。診斷程式碼執行於EL1處,且以指示將以單步驟模式執行單指令在所保存步驟數位元之保存狀態暫存器中將所保存步驟數位元SPSR_EL1.SS設定成一。如在第3圖中,診斷程式碼執行ERET指令,ERET指令將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設定成一,所以SPSR_EL2.SS設定成一,且因此,在自此異常返回之後,執行下一個指令載入互斥且隨後發生診斷異常。當執行的指令為互斥載入指令時,處理器20設定ESR.EX位元及ESR.ISV位元,且因此,回應於此舉,診斷程式碼清除SPSR_EL1.SS值及MDSCR.SS值,且診斷程式碼控制處理器進入正常操作模式,正常操作模式已首先設定一或更多個斷點。
總之,若緊接於指令步驟之後立即產生軟體步驟診斷異常,則將有效位元ESR.ISV設定成一,若在剛未執行指令的情況下產生軟體步驟除錯異常,則將有效位元ESR.ISV設定成0。
第6圖圖示軟體步驟模式中的處理器之可能狀態。
若未設定MDSCR.SS位元,則處理器不以單步驟模式執行。因此,最初處理器之軟體步驟狀態為無效且失能的,且除錯器執行診斷軟體。MDSCR.SS位元及SPSR.SS位元隨後經設定以指示在執行自除錯器異常返回之後將進入步驟模式。在該異常返回之後,處理器進入有效非擱置狀態,在有效非擱置狀態下,可執行單指令(亦即,軟體步驟為有效的,但在此點處無診斷異常擱置)。若執行被除錯程式碼,且將MDSCR.SS位元設定成指示單步驟模式,且將CPSR.SS位元設定成指示將執行一個指令,則處理器處於此狀態。
處理器可藉由執行單指令或者藉由發生異常來退出此狀態。若處理器執行指令,則CPSR.SS重設成零,從而指示單步驟已完成。在此階段,軟體步驟診斷異常現擱置,因此軟體步驟狀態為有效擱置。
處理器亦可藉由發生除軟體步驟診斷異常之外的異常來退出此狀態,於是,若此異常比診斷異常優先等級更高,則當軟體步驟狀態被處理時,軟體步驟狀態為失能的。取決於異常之類型且異常出現在執行指令之前還是或在執行指令之後,SPSR.SS位元在發生異常之後為1 或者0,因此在自異常處置器返回之後,處理器返回至有效非擱置狀態或者有效擱置狀態。
然而,若另一異常比診斷異常優先等級更低,則將CPSR.SS位元重設成零,從而指示單步驟已完成。在此階段,軟體步驟診斷異常現擱置,因此軟體步驟狀態為有效擱置。
自有效擱置狀態發生軟體步驟診斷異常,從而將CPSR.SS複製至SPSR.SS。執行回歸至除錯器,且軟體步驟狀態為失能的。仍將MDSCR.SS位元設定成指示單步驟模式,且清除SPSR.SS位元,從而指示步驟已執行。
第7a圖圖示說明根據本發明之實施例之方法中的步驟的流程圖。方法由診斷設備藉由在控制暫存器中設定單步驟位元且將步驟數設定成一來進入單步驟診斷模式開始。
方法隨後(經由標示為「A」的連接)由返回至正分步執行的程式碼而繼續進行。
當最初步驟數為一時,隨後若不存在異常擱置,則執行單指令。假定此指令不產生任何異常,將步驟數設定成零,且若無其他異常擱置,則設備亦判定指令是否為預定類型,此類型為以下情況下的類型:在執行指令之後發生異常將影響以下指令以何方式執行。若指令為預定類型,則在狀態暫存器中設定類型位元及有效位元,若指令並非為預定類型,則設定有效位元並清除類型位元。現發生診斷異常,且方法繼續(經由標示為「B」 的連接)。
假定未完成方法(未圖示如何判定此狀況之細節),則診斷設備判定診斷異常是由軟體步驟造成的,且若診斷異常是由軟體步驟造成的,則進一步判定是否設定有效位元及類型位元。若設定有效位元且清除類型位元,則方法返回將步驟數設定成一(仍設定單步驟控制位元),且方法由分步執行下一個指令而繼續。注意到,此舉為通過方法之最常見的路徑,且此舉亦為最佳路徑。
然而,若有效位元與類型位元兩者皆設定,則此舉為應抑制單步驟模式之指示,且在可再啟動單步驟模式的情況下,清除單步驟位元並在程式碼中一或更多個適合點處設定一或更多個斷點。
類似地,若判定在發生診斷異常之後不設定有效位元,則方法執行指令之直接測試,直接測試經分步執行以查看指令是否為一或更多個預定類型中之一種預定類型。基於此測試,方法判定是否繼續進行單步驟模式或設定一或更多個斷點。方法再次(經由連接「A」)由返回至正分步執行的程式碼而繼續進行。
然而,在已使用一或更多個斷點的情況下,不設定單步驟控制位元,因此指令作為指令串流來執行,直至到達斷點且發生診斷異常為止。因為隨後判定診斷異常是由斷點造成的,所以移除一或更多個斷點,且設定單步驟控制位元,且將步驟數設定成一,因此單步驟模式重新開始。
應注意,中斷及其他異常可能在以正常方式執行指令串流期間出現且發生。
若在執行來自正在除錯的程式碼之一或更多個指令期間的任何時間,非診斷異常擱置,則異常將發生。對於在執行指令之前發生的異常而言,且對於由正在執行的指令產生的除系統呼叫(syscall)異常之外的異常(諸如,記憶體管理故障)而言,在發生異常之前步驟數不變(一)。在此等情況下,異常有效地取消指令,此舉意謂若正在分步執行指令,則應再次分步執行指令。
因此,在發生異常之後,在異常處置器之SPSR中記錄步驟數。隨後將步驟數設定成零。
應進一步注意,非診斷異常可具有比診斷異常之優先等級更低的優先等級。若此狀況為軟體步驟控制位元在處理非診斷異常期間有效的情況,且因為步驟數現為零,則將立即發生診斷異常。當不執行任何指令時,有效位元與類型位元兩者皆清除。
對於在指令及由指令產生的syscall異常之後發生的高優先等級中斷而言,有效地完成指令,且因此在發生異常之前將步驟數設定成零。僅具有比診斷異常及syscall異常之優先等級更高的優先等級之中斷可在此點處發生。
否則,在自異常返回之後,若設定單步驟控制位元,則自SPSR恢復步驟數,且評估步驟數。若步驟數為一,則此步驟數指示在完成處於步驟模式的指令之前發生異 常,因此在自異常返回之後,再執行串流中之指令。
若步驟數為零,則此步驟數指示在完成以步驟模式執行指令之後但在發生與彼指令相關聯的診斷異常之前發生異常。在此情況下,假定無較高優先等級的異常擱置,則立即發生診斷異常。然而,有效位元及相關聯的類型位元必須經清除以指示無法判定指示指令類型之值,因為將同時執行其他指令。
因此,在發生診斷異常(經由「B」)之後,將判定清除有效位元且方法執行指令之直接測試,直接測試經分步執行以查看指令是否為一或更多個預定類型中之一種預定類型。基於此測試,方法判定是否繼續進行單步驟模式或設定一或更多個斷點。
如以上所述,方法再次(經由「A」)由返回至正分步執行的程式碼而繼續進行。
第7b圖圖示說明根據本發明之另一實施例之方法中的步驟的流程圖。此方法通常用於「外部除錯」的情況,諸如第1圖中所示,在「外部除錯」的情況下,除錯器在外部設備上。在此情況下,指示值指示診斷異常之原因,原因可為程式正在分步執行,在程式分步執行的情況下,指示值將指示指令之類型,或指示值可為除錯事件/診斷異常之另一原因。因此,此指示值具有複數個可能值,複數個可能值包括:不為預定類型之分步執行的指令、為預定類型之分步執行的指令、未知類型之分步執行的指令;三種類型之值可能為:0110、0111及1110。 其他值用以指示除錯事件/診斷異常之其他原因,諸如,斷點發生、停止請求等。此等可能值圖示於第7c圖之表中。在第7b圖之流程圖中僅考慮步驟值及斷點值,因為此等步驟值及斷點值為可在方法中出現的唯一事件類型。
因此,如第7a圖中,方法由診斷設備藉由在控制暫存器中設定單步驟位元且將步驟數設定成一來進入單步驟診斷模式開始。
方法隨後(經由標示為「A」的連接)由返回至正分步執行的程式碼而繼續進行。
當最初步驟數為一時,若不存在異常擱置,則執行單指令。假定此指令不產生任何異常,將步驟數設定成零,且若無其他異常擱置,則設備亦判定指令是否為預定類型,此類型為以下情況下的類型:在執行指令之後發生異常將影響以下指令以何方式執行。若指令為預定類型,則在狀態暫存器中將類型指示設定成STEPexcl,若指令並非為預定類型中之一種預定類型,則將類型指示設定成STEPok。現發生診斷異常,且方法繼續(經由標示為「B」的連接)。
假定未完成方法(未圖示如何判定此狀況之細節),則診斷設備判定將類型指示設定成何种類型指示。若將類型指示設定成STEPok,STEPok指示指令並非為預定類型中之一種預定類型,則方法返回將步驟數設定成一(仍設定單步驟控制位元),且方法由分步執行下一個指令而 繼續。注意到,此舉為通過方法之最常見的路徑,且此舉亦為最佳路徑。
若將類型指示設定成STEPunknown,STEPunknown指示指令之類型為未知的,則方法執行指令之直接測試,直接測試經分步執行以查看指令是否為一或更多個預定類型中之一種預定類型。基於此測試,方法判定是否繼續進行單步驟模式或設定一或更多個斷點。方法再次(經由連接「A」)由返回至正分步執行的程式碼而繼續進行。
若將類型指示設定成STEPexcl,STEPexcl指示分步執行的指令為預定類型,則此舉為應抑制單步驟模式之指示,且在可再啟動單步驟模式的情況下,清除單步驟控制位元並在程式碼中一或更多個適合點處設定一或更多個斷點。
在已使用一或更多個斷點的情況下,不設定單步驟控制位元,因此指令作為指令串流來執行,直至到達斷點為止。在此點處,將指示類型設定成BRK,因為診斷異常是由斷點造成的,且發生診斷異常。隨後,回應於類型指示為BRK,移除一或更多個斷點,且設定單步驟控制位元,且將步驟數設定成一,且因此單步驟模式重新開始。
應注意,中斷及其他異常可能在以正常方式執行指令串流期間出現且發生。
若在執行來自正在除錯的程式碼之一或更多個指令期 間的任何時間,非診斷異常擱置,則異常將發生。對於在執行指令之前發生的異常而言,且對於由正在執行的指令產生的除系統呼叫(syscall)異常之外的異常(諸如,記憶體管理故障)而言,在發生異常之前步驟數不變(一)。在此等情況下,異常有效地取消指令,此舉意謂若正在分步執行指令,則應再次分步執行指令。
在異常處置器之SPSR中記錄步驟數。隨後將步驟數設定成零。
應進一步注意,非診斷異常可具有比診斷異常之優先等級更低的優先等級。若為此狀況,軟體步驟控制位元在處理非診斷異常期間為有效的,且因為步驟數現為零,則將立即發生診斷異常。當不執行任何指令時,將類型指示設定成STEPunknown(未圖示)。
對於在指令及由指令產生的syscall異常之後發生的高優先等級中斷而言,有效地完成指令,且因此在發生異常之前將步驟數設定成零。僅具有比診斷異常及syscall異常之優先等級更高的優先等級之中斷可在此點處發生。
否則,在自異常返回之後,若設定單步驟控制位元,則自SPSR恢復步驟數,且評估步驟數。若步驟數為一,則此步驟數指示在完成處於步驟模式的指令之前發生異常,且因此在自異常返回之後,再執行串流中之指令。
若步驟數為零,則此步驟數指示在完成以步驟模式執行指令之後但在發生與彼指令相關聯的診斷異常之前發 生異常。在此情況下,假定無較高優先等級的異常擱置,則立即發生診斷異常,且在發生診斷異常之前將類型指示設定成STEPunknown,以指示無法判定指令之類型,因為將同時執行其他指令。
因此,在發生診斷異常(經由「B」)之後,將判定指示類型為STEPunknown且方法執行指令之直接測試,直接測試經分步執行以查看指令是否為一或更多個預定類型中之一種預定類型。基於此測試,方法判定是否繼續進行單步驟模式或設定一或更多個斷點。
第8圖圖示可使用之虛擬機實施。當先前所描述之實施例依據用於操作支援有關技術之特定處理硬體之設備及方法來實施本發明的时候,亦可能提供所謂的硬體裝置之虛擬機實施。此等虛擬機實施在主處理器530上執行,主處理器530通常執行主機作業系統520,主機作業系統520支援虛擬機程式510。通常,需要大型強大的處理器來提供以合理速度執行之虛擬機實施,但在某些情形下(諸如,當出於相容性或再使用之原因而希望將本機程式碼執行至另一處理器時)可調整此方法。虛擬機程式510能夠執行應用程式(或作業系統)500,以給出與將藉由此真實硬體裝置執行程式給出之結果相同的結果。因此,程式指令之診斷分步執行包括控制進入此操作模式及退出此操作模式,可使用虛擬機程式510自應用程式500內執行程式指令之診斷分步執行。
儘管本文已參閱隨附圖式詳細地描述本發明之說明性 實施例,但熟習此項技術者應理解,本發明不限於彼等精確實施例,且可在本發明中實現各種改變及修改,而不脫離由附加申請專利範圍定義的本發明之範疇及精神。
10‧‧‧資料處理設備
12‧‧‧外部埠
20‧‧‧處理器
20a‧‧‧提取單元
20b‧‧‧解碼單元
20c‧‧‧執行單元
22‧‧‧指令快取記憶體
30‧‧‧暫存器組
40‧‧‧診斷設備
42‧‧‧診斷電路系統
43‧‧‧儲存器
44‧‧‧記憶體
500‧‧‧應用程式
510‧‧‧虛擬機程式
520‧‧‧主機作業系統
530‧‧‧主處理器
A‧‧‧連接
B‧‧‧連接
第1圖圖示根據本發明之實施例之資料處理設備,資料處理設備具有連接至資料處理設備之遠端診斷設備;第2圖圖示根據本發明之實施例之資料處理設備,資料處理設備与診斷電路系統合併;第3圖圖示根據本發明之實施例之以單步驟診斷模式執行的指令串流內的互斥載入指令的處理;第4圖圖示單步驟診斷模式中的指令串流之處理,在單步驟診斷模式中在互斥載入指令之後出現中斷;第5圖圖示單步驟診斷模式中的指令串流之處理,在單步驟診斷模式中,在執行互斥載入指令之前出現中斷;第6圖圖示以單步驟診斷模式操作的處理器之可能狀態;第7a圖圖示說明根據本發明之實施例之方法中的步驟的流程圖;第7b圖圖示說明根據本發明之另一實施例之方法中的步驟的流程圖;第7c圖圖示指示器之可能值之表,指示器與分步指令之類型一起指示除錯事件之原因;以及 第8圖圖示本發明之實施例之虛擬機實施。
10‧‧‧資料處理設備
12‧‧‧外部埠
20‧‧‧處理器
20a‧‧‧提取單元
20b‧‧‧解碼單元
20c‧‧‧執行單元
22‧‧‧指令快取記憶體
30‧‧‧暫存器組
40‧‧‧診斷設備
42‧‧‧診斷電路系統

Claims (37)

  1. 一種用於診斷一處理器之方法,該處理器處理指令之一串流,該方法包含以下步驟:(i)控制該處理器以一單步驟模式執行,以使得執行來自該指令串流之一單指令,該處理器判定該單指令是否為至少一種預定類型中的一種預定類型之指令,且該處理器在一資料儲存位置處儲存一類型指示器,且在該處理器已處理該單指令之後發生一診斷異常;(ii)在該診斷異常之後執行診斷操作,該執行步驟包括以下步驟:存取儲存於該資料儲存位置內的該類型指示器;以及(iiia)回應於指示該單指令並非該預定類型中之一種預定類型之該類型指示器,控制該處理器繼續以該單步驟模式執行指令,以使得在自該診斷異常返回之後執行一下一個單指令;(iiib)回應於指示該單指令為該至少一種預定類型中之一種預定類型之該類型指示器,控制該處理器退出該單步驟模式且不執行該指令串流內作為後面緊接著一診斷異常的一單指令之該下一個指令。
  2. 如請求項1所述之方法,其中該步驟(iiib)包含以下步驟:控制該處理器在自該診斷異常返回之後執行該指令串流內的複數個指令。
  3. 如請求項2所述之方法,其中該複數個指令包含繼該執行的單指令之後的該指令串流中之複數個指令。
  4. 如請求項2所述之方法,其中該複數個指令包含繼該執行的單指令之後的該指令串流中之複數個指令及包括該執行的單指令之複數個指令。
  5. 如請求項2所述之方法,該方法包含另一步驟:回應於指示該單指令為該至少一種預定類型中之一種預定類型的該類型指示器,在該指令串流內設定至少一個斷點,以使得執行該複數個指令,直至到達該至少一個斷點,若在執行該複數個指令期間,未接收其他異常,且回應於到達該至少一個斷點,發生一診斷斷點異常。
  6. 如請求項1所述之方法,其中該步驟(iiib)包含以下步驟:仿真該執行的單指令及該指令串流中之至少一個後續指令,且隨後控制該處理器自該指令串流中之一指令開始該單步驟模式,該指令串流中之該指令緊接於經仿真的該至少一個後續指令之後。
  7. 如請求項1所述之方法,其中儲存於該資料儲存位置內的該類型指示器指示該指令為該預定類型中之一種預定類型或該指令並非為該預定類型中之一種預定類型,或 該指令為一未知類型,其中若在存取該類型指示器之該步驟中,判定該類型指示器指示該指令為一未知類型,則執行檢驗該單指令且判定該單指令是否為該預定類型之一額外步驟。
  8. 如請求項7所述之方法,其中該類型指示器包含兩個指示值:一第一值及一第二有效值,該第一值指示該指令為該預定類型或並非為該預定類型,該第二有效值指示該第一值是否有效,該第二有效值為無效指示該指令為該未知類型。
  9. 如請求項7所述之方法,其中該類型指示器進一步包含所發生的診斷異常之一類型之一指示。
  10. 如請求項1所述之方法,其中該方法包含以下一初始步驟:設定一單指令分步控制值且設定一步驟指示值,該單指令分步控制值指示將要執行該單指令分步診斷方法,該步驟指示值指示將要在將發生一下一個診斷異常之前執行該指令串流中之一單指令。
  11. 如請求項10所述之方法,其中儲存於該資料儲存位置中的該類型指示器指示該指令為該預定類型中之一種預定類型或該指令並非為該預定類型中之一種預定類型,或該指令為一未知類型,其中若在存取該類型指示器之 該步驟中,判定該類型指示器指示該指令為一未知類型,則執行檢驗該單指令且判定該單指令是否為該預定類型之一額外步驟;其中該類型指示器進一步包含所發生的診斷異常之一類型之一指示;其中回應於指示在發生一下一個診斷異常之前零個指令將被執行之該步驟指示值,在發生該診斷異常之後將該類型指示器設定成未知類型。
  12. 如請求項10所述之方法,其中若在存取該類型指示器之該步驟中,判定該類型指示器指示該指令為一未知類型,則執行檢驗該單指令且判定該單指令是否為該預定類型之一額外步驟;其中該類型指示器進一步包含所發生的診斷異常之一類型之一指示;其中回應於該處理器在發生該下一個診斷異常之前之清除狀態,將該類型指示器設定成指示該執行的指令為該未知類型。
  13. 如請求項1所述之方法,其中該預定類型包含以下情況下的指令之一類型:在進入一異常或自一異常返回之後由一異常處置器執行的操作改變包含該處理器的一設備之一狀態,以使得該指令串流中的至少一個後續指令可以不同方式執行。
  14. 如請求項13所述之方法,其中該至少一種預定類型中之一種預定類型之指令包含存取一鎖定位置之一指令, 該鎖定位置儲存一鎖定值與一清除值中之一者,該清除值指示一處理器可寫入至一預定儲存位置,且該鎖定值指示對儲存該鎖定值的一處理器之該預定儲存位置的互斥寫入存取。
  15. 一種用於儲存一電腦程式之電腦程式產品,該電腦程式在藉由一資料處理設備執行時控制該資料處理設備執行如請求項1所述之一方法中之步驟。
  16. 一種用於分析一處理器之診斷設備,該處理器處理一指令串流,該診斷設備包含:一輸出端及一輸入端,該輸出端用於將控制訊號輸出至該處理器,該輸入端用於自該處理器接收資料;以及診斷電路系統,該診斷電路系統用於執行診斷操作;該診斷電路系統經配置以將一控制訊號輸出至該處理器,來設定指示將以單步驟模式操作該處理器之一指示值,以使得執行該指令串流中之一單指令且隨後發生一診斷異常;以及該診斷電路系統經配置以存取用於儲存一類型指示器之一儲存位置,該類型指示器指示該執行的單指令是否為至少一種預定類型中之一種預定類型之指令;以及回應於指示該執行的單指令並非為該預定類型中之一種預定類型之該類型指示器,該診斷電路系統經配置以控制該處理器繼續以該單步驟模式執行指令,以使得在自該 診斷異常返回之後執行一下一個單指令;以及回應於指示該執行的單指令為該至少一種預定類型中之一種預定類型之該類型指示器,該診斷電路系統經配置以控制該處理器退出該單步驟模式且不執行該指令串流內作為後面緊接著一診斷異常的一單指令的該下一個指令。
  17. 如請求項16所述之診斷設備,其中回應於指示該執行的單指令為該至少一種預定類型中之一種預定類型之該類型指示器,該診斷電路系統經配置以控制該處理器在自該診斷異常返回之後執行該指令串流內的複數個指令。
  18. 如請求項17所述之診斷設備,其中該複數個指令包含繼該執行的單指令之後的該指令串流中之複數個指令。
  19. 如請求項17所述之診斷設備,其中該複數個指令包含繼該執行的單指令之後的該指令串流中之複數個指令及包括該執行的單指令之複數個指令。
  20. 如請求項17所述之診斷設備,該診斷電路系統經配置以回應於指示該執行的單指令為該至少一種預定類型中之一種預定類型之該類型指示器,以在該複數個指令之後在該指令串流內設定一斷點。
  21. 如請求項16所述之診斷設備,其中該診斷電路系統經配置以仿真該執行的單指令及該指令串流中之至少一個後續指令,且該診斷電路系統經配置以向該處理器發出一控制訊號,以自一指令開始該單步驟模式,該指令緊接於經仿真的該至少一個後續指令之後。
  22. 如請求項16所述之診斷設備,其中儲存於該資料儲存位置中的該類型指示器指示該指令為該預定類型中之一種預定類型或該指令並非為該預定類型中之一種預定類型,或該指令為一未知類型,該診斷電路系統經配置以回應於指示該類型為未知之該類型指示器,以自該處理器請求該執行的單指令並自該指令判定該類型。
  23. 如請求項16所述之診斷設備,其中該類型指示器包含兩個指示值:一第一值及一第二有效值,該第一值指示為該預定類型或並非為該預定類型,該第二有效值指示該第一值是否有效,該第二有效值為無效指示該指令為該未知類型。
  24. 如請求項16所述之診斷設備,其中該類型指示器進一步包含所發生的診斷異常之一類型之一指示。
  25. 一種包含一處理器及如請求項16所述之一診斷設備之 資料處理設備,該處理器用於處理指令之一串流,該診斷設備用於分析該處理器。
  26. 如請求項25所述之資料處理設備,該資料處理設備包含用於儲存該類型指示器之一儲存位置,該處理器經配置以回應於執行來自該指令串流之該單指令,以判定該單指令是否為至少一種預定類型中之一種預定類型並儲存一類型指示器,該類型指示器指示該單指令是否為該預定類型。
  27. 如請求項25所述之資料處理設備,該處理器經配置以回應於在執行該等單指令中之一個單指令之後發生除該診斷異常之外的一異常,以將該類型指示器設定成指示該執行的指令為一未知類型。
  28. 如請求項25所述之資料處理設備,其中該診斷設備經配置以執行一單指令分步診斷方法,且當執行該方法時,以設定一單指令分步控制值且設定一步驟指示值,該單指令分步控制值指示將要執行該單指令分步診斷方法,該步驟指示值指示將要在將發生一下一個診斷異常之前執行該指令串流中之一單指令。
  29. 如請求項28所述之資料處理設備,該處理器經配置以回應於在執行該等單指令中之一個單指令之後發生除該 診斷異常之外的一異常,以將該步驟指示值設定成指示零個指令,以使得回應於該步驟指示值,在自該異常返回之後,不執行任何指令,且該處理器發生一擱置診斷異常。
  30. 如請求項25所述之資料處理設備,其中該至少一種預定類型中之一種預定類型之指令包含存取一鎖定位置之一指令,該鎖定位置儲存一鎖定值與一清除值中之一者,該清除值指示一處理器可寫入至一預定儲存位置,且該鎖定值指示對儲存該鎖定值的一處理器之該預定儲存位置的互斥寫入存取。
  31. 一種包含一處理器及複數個儲存位置之資料處理設備,該處理器用於處理資料,該複數個儲存位置用於儲存控制資料;該等儲存位置中之至少一個儲存位置儲存一單步驟模式控制值,該資料處理設備經配置以回應該單步驟模式控制值,該單步驟模式控制值設定成以一單步驟模式執行來自一指令串流的指令,以使得在執行該等指令中之每一指令之後發生一診斷異常;該處理器經配置以在設定該單步驟模式控制值時針對藉由該處理器執行的每一指令判定該指令是否為至少一種預定類型中之一種預定類型並經配置以將一類型指示器儲存於該等儲存位置中之一個儲存位置內,該類型指示器 指示該指令為該預定類型中之一種預定類型,或該指令並非為該預定類型中之一種預定類型或該指令為一未知類型。
  32. 如請求項31所述之資料處理設備,其中該類型指示器儲存包含兩個值之一儲存:一第一值及一第二值,該第一值指示該類型是否為該預定類型,且該第二值指示該第一值是否有效,由該第二值表示的該未知類型指示該第一值無效。
  33. 如請求項31所述之資料處理設備,其中該類型指示器進一步包含所發生的診斷異常之一類型之一指示。
  34. 如請求項31所述之資料處理設備,該資料處理設備經配置以回應於該處理器在發生緊接的該診斷異常之前之清除狀態,以將該類型指示器設定成指示執行的該指令為該未知類型。
  35. 如請求項31所述之資料處理設備,該等儲存位置中之一個儲存位置經配置以儲存一步驟指示值,該步驟指示值指示在發生一下一個診斷異常之前將執行一個或者零個指令,該資料處理設備經配置以回應於該步驟指示值為零,在發生該診斷異常之後將該類型指示器設定成該未知類型。
  36. 如請求項30所述之資料處理設備,其中該預定類型包含以下情況下的指令之一類型:在進入一異常或自一異常返回之後由一異常處置器執行的操作改變該處理設備之一狀態,以使得該指令串流中的後續指令可以不同方式執行。
  37. 一種由一電腦程式提供的虛擬機,該電腦程式執行於一資料處理設備上,該虛擬機提供根據如請求項25所述之資料處理設備之一指令執行環境。
TW101105114A 2011-03-14 2012-02-16 利用執行單步驟以進行編碼診斷 TWI544410B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1104254.6A GB2489000B (en) 2011-03-14 2011-03-14 Diagnosing code using single step execution

Publications (2)

Publication Number Publication Date
TW201237749A TW201237749A (en) 2012-09-16
TWI544410B true TWI544410B (zh) 2016-08-01

Family

ID=43980928

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101105114A TWI544410B (zh) 2011-03-14 2012-02-16 利用執行單步驟以進行編碼診斷

Country Status (10)

Country Link
US (2) US8839038B2 (zh)
EP (1) EP2686772B1 (zh)
JP (1) JP5905911B2 (zh)
KR (1) KR102025078B1 (zh)
CN (2) CN103430158B (zh)
GB (1) GB2489000B (zh)
IL (1) IL227769A (zh)
MY (1) MY158480A (zh)
TW (1) TWI544410B (zh)
WO (1) WO2012123706A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
US9378164B2 (en) * 2011-12-22 2016-06-28 Intel Corporation Interrupt return instruction with embedded interrupt service functionality
GB2517494B (en) * 2013-08-23 2021-02-24 Advanced Risc Mach Ltd Handling time intensive instructions
US9411542B2 (en) * 2014-02-21 2016-08-09 Analog Devices Global Interruptible store exclusive
WO2016014081A1 (en) * 2014-07-25 2016-01-28 Hewlett-Packard Development Company, L.P. Exception handling predicate register
GB2535213B (en) 2015-02-13 2021-10-06 Advanced Risc Mach Ltd An apparatus and method for controlling debugging of program instructions including a transaction
GB2535212B (en) 2015-02-13 2021-08-04 Advanced Risc Mach Ltd An apparatus and method for controlling debugging of program instructions including a transaction
WO2016162802A1 (en) * 2015-04-10 2016-10-13 Oxford University Innovation Limited Computer-aided tracking and motion analysis with ultrasound for measuring joint kinematics
WO2017109442A1 (en) * 2015-12-22 2017-06-29 Arm Limited A method, apparatus and system for diagnosing a processor executing a stream of instructions
CN106371996B (zh) * 2016-09-07 2019-05-28 东信和平科技股份有限公司 一种断电测试方法及系统
CN114185324B (zh) * 2021-10-25 2024-04-02 华能澜沧江水电股份有限公司 自动发电控制程序的异常点检测方法、装置及计算机设备

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376028A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd 仮想計算機システムにおける命令ステツプ実行制御方式
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger
US5050168A (en) * 1989-12-29 1991-09-17 Paterson Timothy L Test coverage analyzer
JP3205841B2 (ja) * 1991-10-25 2001-09-04 株式会社日立製作所 データ処理装置
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US5790843A (en) * 1996-09-19 1998-08-04 International Business Machines Corporation System for modifying microprocessor operations independently of the execution unit upon detection of preselected opcodes
US5938778A (en) * 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
JP2000076095A (ja) * 1998-08-28 2000-03-14 Fujitsu Ltd プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
CN1148656C (zh) * 1999-09-07 2004-05-05 皇家菲利浦电子有限公司 面向线程的调试
US7000191B2 (en) * 2000-08-07 2006-02-14 Siemens Aktiengesellschaft Flowchart programming for industrial controllers, in particular motion controllers
US6986026B2 (en) * 2000-12-15 2006-01-10 Intel Corporation Single-step processing and selecting debugging modes
GB0124563D0 (en) * 2001-10-12 2001-12-05 Siroyan Ltd Debug exception registers
US7350110B2 (en) * 2002-01-14 2008-03-25 International Business Machines Corporation Method and system using hardware assistance for continuance of trap mode during or after interruption sequences
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7062684B2 (en) * 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US20050028036A1 (en) * 2003-07-30 2005-02-03 Kohsaku Shibata Program debug apparatus, program debug method and program
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7277998B1 (en) 2004-08-12 2007-10-02 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
JP4537908B2 (ja) 2005-03-29 2010-09-08 株式会社東芝 プロセッサ、メモリ、コンピュータシステムおよびシステムlsi
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US20070168729A1 (en) 2005-12-06 2007-07-19 Mediatek Inc. System and method for testing and debugging electronic apparatus in single connection port
US7996835B2 (en) * 2006-10-10 2011-08-09 International Business Machines Corporation System, method and program for managing communication with multiple configurations for virtual machine
US7853834B2 (en) * 2007-01-30 2010-12-14 Freescale Semiconductor, Inc. Instruction-based timer control during debug
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
US8261240B2 (en) * 2008-01-15 2012-09-04 Microsoft Corporation Debugging lazily evaluated program components
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
TW201235833A (en) * 2011-02-16 2012-09-01 Ind Tech Res Inst System and method for multi-core synchronous debugging of a multi-core platform
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
US8522213B2 (en) * 2011-05-12 2013-08-27 International Business Machines Corporation Debugger and debugging methods using breakpoints conditioned on the static identity of data

Also Published As

Publication number Publication date
US8839038B2 (en) 2014-09-16
US20140344621A1 (en) 2014-11-20
CN103430158B (zh) 2017-08-04
CN107577593A (zh) 2018-01-12
MY158480A (en) 2016-10-14
GB201104254D0 (en) 2011-04-27
IL227769A (en) 2015-03-31
TW201237749A (en) 2012-09-16
KR20140013005A (ko) 2014-02-04
US9201749B2 (en) 2015-12-01
GB2489000A (en) 2012-09-19
WO2012123706A1 (en) 2012-09-20
JP2014508367A (ja) 2014-04-03
CN103430158A (zh) 2013-12-04
US20120239913A1 (en) 2012-09-20
EP2686772A1 (en) 2014-01-22
JP5905911B2 (ja) 2016-04-20
CN107577593B (zh) 2021-07-06
IL227769A0 (en) 2013-09-30
EP2686772B1 (en) 2018-11-28
GB2489000B (en) 2019-09-11
KR102025078B1 (ko) 2019-11-04

Similar Documents

Publication Publication Date Title
TWI544410B (zh) 利用執行單步驟以進行編碼診斷
Cui et al. {REPT}: Reverse debugging of failures in deployed software
US7849450B1 (en) Devices, methods and computer program products for reverse execution of a simulation
JP4094724B2 (ja) ソフトウェアをデバッグする際に例外を識別するための装置および方法
US20070250820A1 (en) Instruction level execution analysis for debugging software
US7783865B2 (en) Conditional data watchpoint management
KR20070109432A (ko) 커널 인지 디버깅 장치 및 방법
US9405315B2 (en) Delayed execution of program code on multiple processors
TWI361978B (en) Method for debugging a computer system
WO2011084535A2 (en) Establishing a useful debugging state for a multithreaded computer program
US10824426B2 (en) Generating and verifying hardware instruction traces including memory data contents
CN111367742A (zh) 调试mvp处理器的方法、装置、终端和计算机可读存储介质
US20110258613A1 (en) Software debugger activation based on key performance indicators
JP2019204388A (ja) 半導体装置、およびデバッグ方法
TWI736564B (zh) 用於診斷執行指令串流的處理器之方法、設備、及系統
KR20190076217A (ko) 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법
JP7401751B2 (ja) 情報処理プログラム、情報処理方法及び情報処理システム
US20080195896A1 (en) Apparratus and method for universal programmable error detection and real time error detection
WO2018103045A1 (zh) 测试点的创建方法,装置和系统
JPH03100737A (ja) 障害診断方式