TWI735457B - 用於追蹤例外處理事件的設備與方法 - Google Patents
用於追蹤例外處理事件的設備與方法 Download PDFInfo
- Publication number
- TWI735457B TWI735457B TW105124280A TW105124280A TWI735457B TW I735457 B TWI735457 B TW I735457B TW 105124280 A TW105124280 A TW 105124280A TW 105124280 A TW105124280 A TW 105124280A TW I735457 B TWI735457 B TW I735457B
- Authority
- TW
- Taiwan
- Prior art keywords
- exception
- tracking
- circuit system
- data
- packet
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
- G06F11/364—Software debugging by tracing the execution of the program tracing values on a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一種設備,包含追蹤電路系統以輸出指示在監視處理電路系統之處理活動期間偵測到的例外處理事件的例外追蹤資料。配置元件維持例外追蹤配置資料用於控制經由追蹤電路系統對例外追蹤資料之輸出。當啟用例外追蹤資料之輸出時,追蹤電路系統取決於例外追蹤配置資料選擇輸出多少例外追蹤資料。
Description
本技術係關於資料處理之領域。更特定言之,係關於例外處理事件之追蹤。
資料處理設備可包括用於追蹤處理電路系統之處理活動的追蹤模組。舉例而言,追蹤模組可監視哪些指令由處理電路系統執行、由處理電路系統存取的資料位址或某些事件之發生,且產生提供關於已發生之處理活動之資訊的追蹤資料。可分析追蹤資料以判定在執行給定程式期間發生了什麼,其可幫助診斷資料處理設備或經執行的程式碼之問題以及幫助識別可能的解決方案。追蹤亦可適用於效能概述。
至少一些實例提供一種設備,包含:追蹤電路系統,其輸出指示在監視處理電路系統之處理活動期間偵測到的例外處理事件的例外追蹤資料;及配置元件,其維持例外追蹤配置資料用於控制由追蹤電路系統對例外追蹤資料之輸出;其中:當例啟用例外追蹤資料之輸出時,追蹤電路系統經配置以取決於例外追蹤配置資料選擇輸出多少例外追蹤資料。
至少一些實例提供一種用於監視處理電路系統之處理活動之方法;該方法包含: 維持例外追蹤配置資料,其用於控制對指示在監視處理電路系統之處理活動期間偵測到的例外處理事件的例外追蹤資料之輸出;及 當啟用例外追蹤資料之輸出時,取決於例外追蹤配置資料選擇輸出多少例外追蹤資料。
至少一些實例提供一種設備,包含: 追蹤接收電路系統,其接收指示在監視處理電路系統之處理活動期間偵測到的例外處理事件的例外追蹤資料;及 分析電路系統,其自例外追蹤資料偵測複數個編碼格式中之何者為編碼例外追蹤資料之當前編碼格式,且根據該當前編碼格式解碼例外追蹤資料。
至少一些實例提供一種用於分析處理電路系統之處理活動之方法,包含: 接收指示在監視處理電路系統之處理活動期間偵測到的例外處理事件的例外追蹤資料; 自例外追蹤資料偵測複數個編碼格式中之何者為編碼例外追蹤資料之當前編碼格式;及 根據該當前編碼格式解碼例外追蹤資料。
可提供電腦程式來控制資料處理設備以執行分析方法。程式可儲存在電腦可讀儲存媒體上。儲存媒體可為非暫時性的。
本技術之其他態樣、特徵結構及優點將自結合隨附圖式解讀之以下實例描述顯而易見。
第1圖示意性說明資料處理設備2(例如微處理器)之實例。設備2具有處理電路系統4,其用於回應於程式指令執行資料處理操作。任何已知處理電路均可用作處理電路系統4。儘管第1圖圖示具有一個處理電路4的設備,但應理解一些實施例可以具有多個處理電路,且可提供許多出於簡潔目的未在第1圖中圖示之其他元件。
提供嵌入追蹤模組6用於監視處理電路系統4在執行指令時之活動。舉例而言,追蹤模組6可窺探處理電路系統4內之內部匯流排或導線以監視處理電路系統之活動。基於觀測到之處理活動,追蹤模組6產生包含多個追蹤封包之追蹤流8,此等追蹤封包包括關於處理電路系統4之處理活動之資訊。舉例而言,追蹤封包可指示哪些指令由處理電路系統4執行、由處理電路系統4存取的資料之位址,或某些事件(例如,例外、錯誤、模式變化等)之發生,以及此等活動發生之相對時序。來自追蹤模組6之追蹤封包可提供處理電路系統4之逐週期指令、資料或控制活動之可見性。追蹤流8經輸出至追蹤緩衝器10,其在晶片上儲存追蹤封包。追蹤封包可自追蹤緩衝器經由追蹤介面12由追蹤分析器14讀出。追蹤分析器14可儲存讀出之封包且分析封包以判定關於處理電路系統4在處理程式指令時的行為之資訊。舉例而言,追蹤分析器14可為專用追蹤分析裝置或通用目的電腦執行追蹤分析軟體。追蹤分析器14可解譯追蹤封包且向使用者顯示來源於追蹤封包之資訊,以幫助使用者識別資料處理設備2本身或由處理電路系統4執行的軟體的問題,並找到可能的解決方案。
儘管第1圖圖示單個追蹤模組6,但在其他實例中可存在若干追蹤模組。舉例而言,可提供多個不同的追蹤模組以擷取關於處理電路系統4之操作之不同類型的資訊。舉例而言,第一追蹤模組可執行指令追蹤以擷取關於由處理電路系統執行之指令之時序的資訊、分支之結果等,而獨立的資料追蹤模組可擷取例如關於經存取的資料位址之資訊。此外,在包含多於一個處理電路4之系統中,可能提供多個追蹤模組以監視不同的處理電路4之活動。因此,在一些情況下,追蹤緩衝器10或介面12可自多個不同的追蹤源接收追蹤流且使此等追蹤流多工處理以用於輸出至追蹤分析器14。
設備2包括一或多個配置暫存器16用於控制追蹤模組6之操作。配置暫存器16可包括配置資料,其控制什麼資訊被包括在由追蹤模組6產生的追蹤流8中。此可允許系統2、14之使用者控制追蹤模組6以僅輸出此使用者關注之特定資訊,以避免由於不需要的資訊而浪費追蹤緩衝器10和追蹤介面12中之頻寬。舉例而言,配置暫存器16可藉由執行配置指令以將配置資料寫入配置暫存器16之處理電路系統4,或藉由提供介面以允許配置暫存器自諸如追蹤分析器14之外部裝置寫入而無需由處理電路系統4執行任何指令來更新。
可藉由追蹤模組6追蹤之事件之一個實例為例外處理事件,其可為關於由處理電路系統4處理例外之任何事件。例外為處理電路系統4中斷其當前處理並進行另一處理常式之請求。可存在多種類型之例外且各類型之例外可具有對應的例外處理常式,其定義當例外產生時待執行的多個指令。例外可包括硬體中斷,例如當接收到硬體信號指示某事件已發生,或藉由執行某些種類的指令或回應於在程式執行期間出現的某一條件而觸發之軟體例外。舉例而言,例外可用於指示故障或錯誤(例如,記憶體保護侵犯或匯流排故障)、外部事件(例如,使用者按壓設備2上的按鈕或自外部裝置收到信號)之發生,或可由在處理電路系統4上執行之軟體定義的任何其他事件。下文提及之「例外」應解釋為包括中斷。
各類型之例外可藉由對應的識別符(或「例外編號」)識別,且可具有相關聯的優先權等級。當例外發生時,例外控制器可判定例外之優先權是否大於當前執行之處理之優先權。若傳入的例外之優先權與當前處理之優先權相同或較低,則不採用例外直至當前處理完成。然而,若例外具有大於當前處理之優先權,則產生例外且使當前處理中斷。為允許當前處理在例外完成之後立刻恢復,可執行狀態保存操作以將與當前處理相關聯之至少一些處理器狀態保存至另一位置(例如記憶體中之堆疊資料結構)。舉例而言,經保存的處理器狀態可包括處理電路系統4之至少一些暫存器之內容、程式計數器之當前值、條件旗標或其他表示處理器之當前狀態之狀態資訊,及稍後恢復當前處理可能需要之任何其他資訊。狀態保存可在硬體中藉由例外控制器、在軟體中藉由在例外發生時執行之當前處理及/或回應於例外經執行之例外處理常式執行,或藉由硬體與軟體之組合執行。已執行狀態保存之後,執行例外處理常式以執行處理由例外發信號通知的事件所需要的任何任務。若優先權較高的例外發生,則例外處理常式本身可被中斷。一旦例外處理常式完成,則先前保存的狀態可被恢復(再一次地,使用硬體、軟體或硬體與軟體之組合)且隨後先前的處理繼續,就好像例外從未發生過一樣。
追蹤模組6可偵測關於各例外之處理的各種例外處理事件之發生。舉例而言,例外處理事件可包括: • 例外進入事件,當處理電路系統4進入對應於給定例外之例外處理常式時; • 例外退出事件,當處理電路系統4完成或離開對應於給定例外之例外處理常式時;及 • 例外返回事件,當處理電路系統4在另一例外發生之後返回以處理給定例外時。 視需要,某些系統亦可追蹤表示首先發信號通知例外之時序之例外發信號通知事件(獨立於處理電路系統4實際上進入對應的例外處理常式之時序)。
第2圖圖示用於提供關於例外處理事件之資訊的例外追蹤封包18之實例。封包18包含標頭20及有效負載21。封包18之第一位元組表示標頭20,其指示追蹤封包內包括什麼資訊。標頭20之位元[1:0]表示追蹤封包之後續有效負載21之尺寸,且具有以下編碼: • 0b01:1位元組有效負載(亦即封包尺寸為2個位元組,包括標頭20) • 0b10:2位元組有效負載(亦即3位元組封包,包括標頭20) • 0b11:3位元組有效負載(亦即4位元組封包,包括標頭20)。 因此,第2圖之實例為3位元組封包,如由標頭之位元[1:0]為0b10指示。標頭20之剩餘位元[7:2]指示有效負載21中提供之追蹤資訊之類型。在此實例中,值0b000011指示此封包為提供關於例外處理事件之資訊的例外追蹤封包。本申請案中描述之所有例外追蹤封包實例均具有相同的標頭位元[7:2]的值,但應理解,在其他實例中可存在若干不同類型之例外追蹤封包,其由於不同的標頭值而有所區別。
有效負載21包括例外編號22,其識別對應例外處理事件所關於的例外類型。在此實例中,例外編號22包含9個位元,其中位元[7:0]經編碼在有效負載21之第一位元組中且位元[8]經編碼在有效負載21之最低有效的第二位元組中。可識別之例外類型之一些實例包括以下:重設、硬體故障、記憶體管理故障、匯流排故障、除錯例外、計時器例外(由某一計時器之逾時觸發)、各種外部中斷,以及某些軟體定義的例外。在一些情況下,在任何例外發生之前由處理電路系統4執行之正常處理亦可經分配對應的例外編號(例如,例外編號0)以允許在一旦任何未處置例外已獲處理之後處理返回正常處理時,例外追蹤封包發信號通知。
有效負載21亦包括功能編號26(或例外處理事件類型識別符),其識別關於由例外編號22指示之例外類型已發生什麼類型之例外處理事件。舉例而言,功能編號26可經編碼在有效負載21之第二位元組之位元[5:4]中。功能編號26欄位之編碼可例如為如下: • 0b01:例外進入(處理電路系統4進入用於例外編號欄位22中指示之例外類型的例外處理常式) • 0b10:例外退出(處理電路系統4退出用於例外編號欄位22中指示之例外類型的例外處理常式) • 0b11:例外返回(處理電路系統4返回例外編號欄位22中指示之類型之處理,其可為另一例外或正常處理,如上文提及) • 0b00:保留。
例外追蹤封包之其他位元被保留,因此將不由追蹤分析器14解釋。在一些情況下,追蹤模組6可將所有保留的位元固定為0。
由追蹤模組6產生之各追蹤封包18亦可具有相關聯的時間戳,其指示例外處理事件發生的時間(相對於某些參考時鐘或相對於經追蹤之其他事件)。在一些實施例中,時間戳可包括在例外追蹤封包本身中。或者,可產生包含時間戳之獨立的時序追蹤流,其允許相關的追蹤流中之各追蹤封包之時序相互關聯。
第3圖圖示由處理電路系統4處理之一系列例外及經產生以指示對應例外處理事件之對應例外追蹤封包18之實例。在此實例中,展示三個例外,例外E2具有最高優先權,例外E1具有低於E2的優先權,且例外E0具有最低優先權。
在第3圖之步驟30,處理電路系統4最初執行與例外E0相關聯之處理。此可為未發生任何先前例外情況下程式之正常處理,或可為與某一先前例外相關聯之例外處理常式。在步驟32,發信號通知例外E1,其具有高於例外E0之優先權。在步驟34,執行狀態保存操作以將處理器狀態之至少一部分保存至堆疊或其他儲存結構。在步驟36,處理電路系統4開始執行與例外E1相關聯的例外處理程式。在步驟38,另一例外E2發生,其具有高於例外E1的優先權,且因此用於E1之處理程式中斷且在步驟40執行另一狀態保存操作以保存由於處理例外E1而產生的至少一些處理器狀態。在步驟42,執行與例外E2相關聯的另一例外處理常式。E2例外處理程式在無中斷的情況下完成,且因此在步驟44,執行狀態恢復操作以恢復與例外E1相關聯的狀態,隨後在步驟46恢復用於例外E1之例外處理常式。當用於E1之例外處理程式完成時,在步驟48執行另一狀態恢復操作以恢復E0處理狀態,且隨後E0之初始處理在步驟50繼續。
第3圖之部分A圖示追蹤封包18之實例,其可回應於第3圖中圖示之例外處理事件產生。 • 時間T0:例外編號(EN)=1,功能編號(FN)=0b01——指示例外進入至E1。 • T1:EN=2,FN=0b01——例外進入至E2。 • T2:EN=2,FN=0b10——例外自E2退出。 • T3:EN=1,FN=0b11——例外返回至E1。 • T4:EN=1,FN=0b10——例外自E1退出。 • T5:EN=0,FN=0b11——例外返回至E0。
因此,可針對各例外產生多個例外追蹤封包。由於例外處理事件可相對頻繁地發生,且例外追蹤封包之尺寸與追蹤緩衝器10之尺寸相比可相對較大(例如,如第2圖中所示之3位元組,相比於可能僅具有例如16位元組之追蹤資料之容量的典型追蹤緩衝器),例外處理事件的追蹤可導致大量追蹤資料之產生,其可導致追蹤緩衝器10變滿。用於將資料輸出至追蹤分析器14之追蹤介面12可具有相對較窄的頻寬(例如,其可甚至為每一週期僅能夠輸出1個位元之單線輸出)。因此,可能需要許多個週期來讀出來自追蹤緩衝器10之所有資料。若追蹤模組6以大於追蹤介面12可自追蹤緩衝器10移除追蹤資料之速率產生追蹤資料,則緩衝器10可能很快便溢出以使得不得不丟棄一些追蹤封包而不將其輸出至追蹤分析器14。此導致關於處理電路系統4之活動之資訊的損失,其可使得難以執行處理活動之任何有意義的分析。一個選項為完全禁止例外追蹤,但如此將無法提供關於例外發生之資訊,此資訊可常常在執行給定程式時提供對於效能損失之可能原因之有用洞察。
為解決此等問題,儘管啟用例外事件之追蹤,但追蹤模組6能夠基於配置暫存器16中設定之例外追蹤配置資料改變多少例外追蹤資訊在追蹤流8中輸出。因此,取決於開發者所關注的例外處理之特定態樣,開發者能夠設定配置暫存器16中之例外追蹤配置資料以控制所產生的例外追蹤資訊之數量。若使用者仍需要如上文所論述之完整例外追蹤功能性,則此可仍然加以提供。然而,若使用者希望減少例外追蹤資料之數量,則可在暫存器16中設定配置資訊以選擇如下文所論述之多種選項中之一者。例外追蹤配置資料僅控制所產生之例外追蹤資訊之數量,而非其他類型之追蹤資訊。藉由選擇性減少關於例外處理事件產生之追蹤資料之數量,此可不僅藉由允許使用者集中於對其有用之類型的資訊而改良對例外處理事件自身之追蹤,此亦改良對其他種類之處理活動之追蹤,因為關於非例外相關事件之資訊較不可能歸因於大量的例外追蹤資訊而自追蹤緩衝器10丟棄。因此,此允許總體上對處理電路系統4之處理活動之較有意義的分析,而非僅在分析例外事件時。
存在一系列可為追蹤模組6所用以改變所產生之例外追蹤資訊之數量的不同的技術。現在將描述一些實例。
在一些實施例中,追蹤模組6可基於如由功能編號26識別之例外處理事件之類型過濾哪些追蹤封包在追蹤流8中輸出。舉例而言,配置暫存器16可包括定義應被追蹤之例外處理事件類型之特定子集的資訊,且追蹤模組6可抑制對關於除經選擇子集以外的例外處理事件類型之追蹤封包之輸出。
舉例而言,如第3圖中之部分B所示,僅可輸出關於例外進入之例外封包,但可抑制關於例外退出或返回之封包。若使用者僅希望弄清例外發生之相對頻率,但不關心處理器一旦進入例外處理常式之後花費多長時間處理例外,則此可為有用的。此外,僅追蹤例外進入封包提供哪些例外處理程式以什麼次序及以什麼比例被調用之記錄,其可提供所關注之大多數例外有關的資訊。藉由僅追蹤例外進入並抑制用於退出及返回事件之封包之輸出,例外追蹤資料之數量可減少約三分之一,且此極大地減輕追蹤緩衝器10及追蹤介面12之壓力以使得較不可能發生緩衝器溢出。
暫存器16中設定追蹤哪些類型之例外處理事件之配置資訊能夠以不同方式編碼。在一些實例中,暫存器16之一些控制位元能夠個別地啟用或禁止對各類型之例外處理事件的追蹤,例如:
注意在此實例中,用於個別地啟用/禁止各類型之例外處理事件之相同的控制位元亦可用於總體上啟用/禁止例外追蹤。
或者,可提供獨立的例外追蹤允許位元以總體上啟用/禁止例外追蹤(此可改良與預期提供有啟用/禁止位元之舊有追蹤分析器之相容性)。一些其他配置位元可隨後指定追蹤例外處理事件類型之哪一子集。舉例而言:
因此,在此實例中,位元[3]為用於總體上啟用或禁用追蹤之啟用/禁止位元,而位元[2:0]經設定為1以分別禁用對返回、退出或進入之追蹤。注意不一定要支援啟用/禁止個別例外處理事件類型之全部可能的組合。一些系統可僅支援選擇經追蹤之例外處理事件類型之某些組合。
應理解,此等僅為兩個實例,且許多其他技術可用於選擇追蹤哪一類型之例外處理事件。
類似地,配置暫存器16中之配置資訊可識別待追蹤之例外之子集,且追蹤模組6可抑制對關於不在經選擇子集中之例外類型之任何例外追蹤封包之輸出。因此,可實施藉由例外編號過濾例外追蹤封包。舉例而言,如第3圖之部分C中所示,配置暫存器16能夠經設定以使得僅輸出關於例外E2之例外追蹤封包且抑制關於例外E0、E1之封包。
在一些情況下,選擇追蹤哪些例外編號可相對粗糙。舉例而言,可將單個位元設定為指示應追蹤全部例外類型之第一值或指示應追蹤例外類型之某一預定子集之第二值。舉例而言,位元可指示是應僅追蹤硬體例外還是硬體與軟體例外兩者。
或者,配置暫存器16能夠支援較精細的控制,其中可選擇例外類型之不同子集。舉例而言,可為暫存器16之多個控制位元提供此等控制位元之不同的編碼,其對應於待追蹤之例外類型之不同的預定子集。在最精細的等級下,可使用對應的控制位元個別地啟用或禁止對各類型的例外之追蹤。在另一實例中,暫存器16可包括定義哪些例外追蹤封包18應在追蹤流8中輸出之例外編號範圍之資訊(例如,在0至16或0至31範圍中之例外編號)。此方法可相對地有效實施在硬體中,因為追蹤模組6常常可能已具有用於比較在處理電路系統4之操作期間偵測到的值與定義追蹤資料是否應回應於彼等值產生之控制參數的比較器。舉例而言,可設定資料監視點以在處理電路系統4發起指定某一位址範圍內之位址的記憶體異動時觸發追蹤封包之輸出。可重新使用已針對其他類型之比較提供的比較器以比較給定例外之例外編號是否處於如配置暫存器16中定義之待追蹤之例外編號的範圍。無論配置暫存器16如何指示待輸出追蹤封包之例外類型子集,追蹤模組6均可抑制針對不在經選擇子集中之任何類型的例外之追蹤封包輸出。
連同(或替代)過濾追蹤封包以使得選擇性輸出或抑制全部封包,追蹤模組6亦可基於配置暫存器16中之例外追蹤配置資訊設定改變包括在例外追蹤封包18內之資訊。此舉之若干實例在下文中論述。
第4圖圖示取決於例外追蹤配置資訊,追蹤模組6可選擇性合併用於兩種不同例外處理事件之例外追蹤封包之實例。舉例而言,第4圖圖示用於合併關於例外退出及例外返回之例外追蹤封包之合併追蹤封包格式。替代輸出如第2圖中所示之兩個3位元組封包以單獨地指示例外退出及例外返回之時序,第4圖圖示單個4位元組封包,其包括處理程式自其退出之例外之例外編號22-1以及在退出處理程式之後處理向其返回之例外之例外編號22-2。由於現在存在兩個例外編號22-1、22-2,有效負載之最後位元組之位元[1]用於編碼第二例外編號22-2之位元[8]。由於封包具有3位元組有效負載,標頭部分20之位元[1:0]取得如上文所指示之值0b11。此外,可分配上文所指示之功能編號26之保留值0b00用於指示此為關於例外退出與返回兩者而非上文解釋之個別例外處理事件中之任一者的封包。
儘管合併退出與返回封包將導致一些資訊損失,因為無法再判定個別退出及返回事件之時序(其可在下文描述之尾鏈情形中尤其相關),此可為一些使用者接受且因此藉由提供配置暫存器16中之配置以選擇是使用獨立封包還是單個合併封包追蹤退出及返回,使用者可選擇其特定應用所需之選項。當認為退出與返回封包之合併適宜時,此可對於每一退出/返回對保存2個追蹤資料位元組,因為輸出單個4位元組封包而非兩個3位元組封包。若啟用追蹤封包之時間戳記,則例外追蹤封包之合併亦藉由減少時間戳資料輸出之數量保存頻寬。
為支援此等封包合併,追蹤模組6可具有暫存器或緩衝器用於暫時保存處理程式自其退出的例外之例外編號一段時間,直至當可輸出組合退出/返回封包時偵測到對應的例外返回。
儘管第4圖圖示合併關於例外退出及返回之封包之實例,但在其他實施例中,可將關於其他類型之例外處理事件的追蹤封包與指示哪些類型之例外處理事件經指示的功能編號26(若必要,可為功能編號26分配額外位元)及一系列的兩個或更多個指示關於各事件之例外類型之例外編號合併。
第5圖圖示追蹤封包18之另一實例,其包括尾鏈旗標60(尾鏈識別值)用於指示是否存在尾鏈例外。否則,封包18與第2圖中的相同。關於第6圖描述尾鏈之概念。
第6圖圖示與第3圖類似的一系列例外,包括三個例外E0、E1、E2,其具有如在第3圖中之相繼更高的優先權。第6圖之步驟30至42與在第3圖中的相同。然而,在第6圖中,在處理用於例外E2之處理程式常式時,另一例外E3在步驟80發生。例外E3具有低於例外E2之優先權及高於例外E1之優先權。由於例外E3具有低於E2之優先權,因此E3不中斷用於E2之例外處理程式。當E2例外處理程式完成時,例外控制器判定例外E3具有高於在E2發生之前經處理的例外E1之優先權,且因此應在返回至E1之前處理E3。因此,處理開關引導至與例外E3相關聯的例外處理程式而不首先還原與例外E1相關聯的處理器狀態。藉由自E2處理程式末尾直接切換至E3處理程式開頭而不執行任何用於恢復與在例外E2之前執行之處理E1相關聯的狀態之干擾狀態恢復,可較快速地處理例外E3以減少中斷處理等待時間。此稱為例外之尾鏈。在步驟82,執行E3例外處理程式,且當其完成時,隨後在步驟84,恢復與例外E1相關聯的狀態,且隨後第6圖之步驟86至90與第3圖中之步驟46至50相同。
有時,執行追蹤分析之使用者可能希望弄清楚兩個例外是否加有尾鏈。若啟用例外進入、退出及返回事件之完整例外追蹤,則第6圖中圖示之例外處理事件將導致如第6圖之部分A中所示之一系列追蹤封包。例外E3在例外E2之後加有尾鏈之事實可自追蹤流看到,因為標記在時間T3例外進入至E3及在時間T4自E3例外退出之追蹤封包在用於時間T2之例外E2之例外退出封包與用於時間T5之例外E1之例外返回封包之間發生。相反,若例外E3在E1狀態已經恢復之後發生且因此不在例外E2之後加有尾鏈,則用於例外E3之例外進入封包將已在追蹤流中於用於E1之例外返回封包之後發生。
然而,如上文論述,為減少追蹤資料之數量,使用者可配置配置暫存器16以控制追蹤模組6以過濾追蹤封包,例如僅輸出用於例外進入事件而非例外退出或返回之例外追蹤封包。在此情況下,可能不可能單獨地自例外進入封包偵測尾鏈情形。舉例而言,如第6圖之部分B中所示,在時間T0、T1、T3之例外進入封包將不准許使用者判定用於在時間T3之例外E3之例外進入是否在處理已返回至E1例外處理程式之後發生,或是否在完成用於例外E2之例外處理程式之後立即加有尾鏈。
藉由如第5圖中所示在例外封包18中提供尾鏈旗標60,可在不需要輸出關於例外進入、退出及返回之所有封包的情況下指示尾鏈。舉例而言,如第6圖之部分B中所示,用於例外E3之例外進入封包可將尾鏈旗標60(TC)設定為1以指示例外E3在例外E2之後加有尾鏈。此意謂即使在存在追蹤封包之過濾時,仍可指示尾鏈情形,其使得在不損失關於尾鏈之資訊的情況下使用例外追蹤封包過濾更為實際。因此,儘管在追蹤封包中提供尾鏈位元60可似乎未幫助減少所產生的追蹤資料之數量,但其使得使用例外追蹤封包過濾較為可行而不損失關於尾鏈之資訊,且因此在實踐中其允許較為經常地使用藉由例外處理事件類型之過濾。此可大大地幫助減少所產生的例外追蹤資訊之數量、減少追蹤緩衝器及追蹤介面之應力、減少損失追蹤資訊之可能性且因此改良輸出的追蹤資料之有用性。
在此實例中,尾鏈旗標60編碼在第二有效負載位元組之位元[6]中,且當兩個例外加有尾鏈時可被設定為1,且若不存在尾鏈則被設定為0。應理解,亦可使用相反的映射(0指示尾鏈且1指示不存在尾鏈)。尾鏈旗標60亦可編碼在封包之其他位元中——第二位元組之位元[6]僅為一實例。舉例而言,編碼尾鏈旗標60之另一選項可為使用功能編號欄位26之保留值0b00以指示存在尾鏈例外進入。
此外,第6圖圖示一實例,當偵測到在不存在干擾狀態恢復(其用以恢復與在先前例外之前執行的處理相關聯的狀態)的情況下已在完成先前例外之後進入用於新例外之例外處理程式時,設定用於例外進入追蹤封包之尾鏈旗標60。然而,亦可能當偵測到將在不存在干擾狀態恢復(其用於恢復與在經退出的例外發生之前執行的處理相關聯的狀態)的情況下在自當前例外退出之後發生下一例外時,設定用於例外退出追蹤封包之尾鏈旗標60。
大體上,配置暫存器16可包括至少一個配置位元,其控制追蹤模組6是否應在偵測到尾鏈時設定尾鏈旗標60。選擇性關閉尾鏈旗標功能性可適用於支援可能無法解釋尾鏈旗標60之舊有追蹤分析裝置14或追蹤分析軟體,但當追蹤分析器支援尾鏈旗標60時,即使當一些追蹤封包被過濾,激活使用配置暫存器16之此特徵結構仍可幫助改良來源於追蹤流之資訊,以減少所產生的資料之數量。
在其他實例中,可替代地藉由以與第4圖中所示的相同方法合併例外退出與返回封包來指示尾鏈情形。然而,提供如第5圖中之顯式尾鏈旗標60之優點為在真實世界追蹤情況下,一些追蹤封包可能有時自追蹤流丟失(例如歸因於追蹤緩衝器10溢出),且因此增加顯式尾鏈旗標增加退出-進入序列實際上為尾鏈例外進入而不僅為時序太緊而導致返回資料歸因於緩衝器溢出而被丟棄的退出-返回-進入情形的信心。
第7圖圖示用於藉由自例外追蹤封包18完全省略例外編號22以減少包括在追蹤封包中之資訊數量之另一實例。在此實例中,例外追蹤封包18具有1位元組有效負載21,且因此標頭20之位元[1:0]之尺寸經設定為0b01。有效負載21在此實例中指定功能編號26及(視需要)尾鏈旗標60。完全省略例外編號可能似乎違反常理,因為表面上此似乎為例外追蹤中所產生的最重要資訊片段。然而,應認識到,有時執行追蹤分析之使用者可能不關注哪些特定例外已發生,但可能僅希望判定例外發生之時序或相對頻率。因此,藉由提供控制追蹤模組6是否在例外追蹤封包18中包括例外編號22之配置暫存器16中之位元,使用者可在不關注例外類型時減少所產生的追蹤資料之數量,進而減輕追蹤緩衝器10及介面12之壓力。
第8圖圖示另一實例,其中經分配用於編碼例外編號之位元之編號可取決於配置暫存器16中之配置資訊而變化。上文論述之實例編碼9位元例外編號,以使得可指示512種不同類型的例外。然而,一些此等例外可為罕見的,或使用者可能僅關注例外類型之某一子集,因此較小的例外編號欄位常常可能足以指示使用者關注的大部分類型的例外。舉例而言,在ARM®架構之一些版本中,例外編號0至15可對應於架構中定義之硬體中斷(表示中斷,諸如重設、各種故障或錯誤、計時器中斷等),而例外編號16及高於16可對應於特定實施例特有之外部中斷或軟體例外。因此,例外編號為0至15的例外可使用如第8圖中所示的4位元例外編號欄位90較有效地編碼,其允許例外編號90與功能編號26兩者適合在1位元組有效負載21內,以減小追蹤封包之尺寸。例外編號為16或高於16之例外仍可使用第2圖中圖示之形式的正常追蹤封包追蹤。或者,當選擇用尺寸減小的例外編號欄位90追蹤時,對例外編號16及高於16之追蹤可完全被抑制。因此,第8圖中圖示之減小的例外編號欄位90在與如上文論述之藉由例外編號過濾例外追蹤封包結合時可尤其適用。大體上,配置暫存器16可包括配置資訊,其控制追蹤模組6對於例外編號在減小尺寸的欄位90內適合的例外是產生具有完整尺寸之例外編號欄位22的封包還是具有減小尺寸之例外編號欄位90的封包,且視需要,用於控制追蹤模組6是否應對於例外編號不在減小尺寸的欄位90內適合的例外輸出任何追蹤封包。
提供減小的例外編號90之另一方式可為藉由將例外編號表示為自經定義基準值的偏移形式使用減小的例外編號欄位90來編碼在某一範圍的值內的例外編號。舉例而言,若參考值為80,則例外編號86可經編碼為6之偏移。自基準值之偏移大於可在減小的例外編號欄位90中表示的例外編號可使用如第2圖中之例外編號之完整編碼。可在追蹤模組6中提供範圍比較器用於偵測例外編號是否在可在減小的例外編號欄位90中表示的範圍內。基準值能夠由配置暫存器16指定。在一些情況下,亦可指定使用減小的欄位90之例外編號範圍之另一上限,或其可自減小的例外編號欄位90之尺寸內隱(例如4位元欄位可指示自基準值之偏移0到15)。配置暫存器16亦可指定啟用或禁止例外編號之基於偏移的編碼。
追蹤電路系統亦可支援用於壓縮所產生的例外追蹤資料之數量之壓縮模式而不損失資訊。兩個連續的例外追蹤封包指定同一例外編號可為相對常見的。舉例而言,如第3圖中所示,在時間T1及T2,針對例外編號E2對於例外進入及退出產生兩個連續的封包。類似地,在第6圖中,在時間T5及T6,兩個連續的封包指定同一例外編號。因此,當處於壓縮模式中時,當例外編號與最近一個經輸出的封包相同時,追蹤模組6可自例外追蹤封包18之有效負載21省略例外編號22。可在追蹤模組6中提供比較器用於比較當前事件之例外編號與最近一個例外編號,且當兩者相同時抑制例外編號之輸出。舉例而言,當例外編號被省略時,可使用第7圖中圖示之封包格式。當追蹤分析器14接收到不具有例外編號22之封包時,其可假定例外編號22與前一個具有例外編號之封包相同。可使用配置暫存器16中之配置資訊設定選擇啟用及禁用壓縮模式。
針對前一個例外編號匹配可提供一些壓縮,但其可能限於某些情形,諸如具有在一組巢套例外內之最高等級的優先權的例外之例外進入及退出,或當不存在干擾例外事件時,例外返回至給定例外,隨後自彼例外退出。然而,對於許多例外,用於給定例外之例外進入及退出封包可藉由具有不同例外編號的追蹤封包分離,因為給定例外本身被中斷(例如,參見第3圖中之例外E1)。
為改良所達成之壓縮之數量,可藉由追蹤模組維持儲存結構以追蹤多個最近遭遇之例外編號,且若當前例外編號與此等最近例外編號中之任一者匹配,則可自當前追蹤封包省略此例外編號。
舉例而言,追蹤模組可維持先前例外編號值之較小堆疊。在例外進入時,傳入例外之例外編號可經推送至堆疊上。在例外退出時,可將在堆疊頂部之例外編號與當前例外編號比較,且若其相同,則此例外編號可自當前例外追蹤封包省略,且匹配的例外編號可隨後自堆疊彈出。此利用以下事實:當存在例外之巢套時,具有相繼更高優先權之一系列例外可以與其進入之次序相反的次序進入及隨後退出。因此,有效提供後入先出之儲存結構之堆疊結構可極適用於以與遭遇例外編號之次序相反的次序解開例外編號。類似地,若給定處理保持被較高優先權例外中斷,則至彼同一處理之各返回可導致具有同一例外編號的封包且堆疊可允許此等返回封包中之一些省略例外編號。
下文展示一實例: • 例外返回至E0(完整封包,將0推送至堆疊) • 例外進入至E1(完整封包,將1推送至堆疊) • 例外自E1退出(省略例外編號之減小的封包,由於與在堆疊頂部之先前編號匹配,將1自堆疊彈出) • 例外返回至E0(省略例外編號之減小的封包,由於與在堆疊頂部之先前編號匹配,將0自堆疊彈出)。
追蹤分析器14可維持對應的堆疊資料結構用於判定用於各封包之例外編號。堆疊資料結構可維持在硬體中或藉由使用軟體以維持類似的資料結構。當接收到指定例外編號22之封包時,例外編號可被推送至堆疊。當接收到不指定例外編號之封包時,在堆疊頂部的例外編號被彈出且被分配至彼封包。以此方式,當選擇壓縮模式時,可減小追蹤資料之數量。
另一用於實施壓縮模式之實例在第9圖中圖示。追蹤模組6可維持先進先出(first-in-first-out; FIFO)結構100或圓形緩衝器以用於儲存某一數量的最近遭遇的例外編號。每次偵測到新的例外處理事件,一系列比較器102比較新的例外編號EN與儲存在FIFO 100中之各先前例外編號。若先前例外編號中之任一者與新的例外編號EN匹配,則此例外編號自下一追蹤封包18省略,且識別符104被包括在追蹤封包18之有效負載21中以識別FIFO 100之哪一進入含有匹配的例外編號。舉例而言,第9圖圖示一實例,其中FIFO 100包含4次進入且2位元識別符欄位X[1:0] 104經編碼在1位元組有效負載之位元[1:0]中。應理解,可存在其他編碼識別符之方式,此識別符之先前例外編號與新的例外編號匹配。在已將先前例外編號與當前例外編號比較後,FIFO 100中之最先的例外編號隨後被新的例外處理事件之例外編號重寫。寫入指針106可追蹤後一例外編號應寫入之位置且可在每次新的例外編號被寫入時增量。當寫入指針106達至緩衝器之末尾時,下一增量導致其跳回起點,以使得寫入指針106圍繞緩衝器一圈一圈地循環。因此,FIFO 100不斷地被更新以記錄最近的例外編號。可取決於實施要求選擇FIFO 100之尺寸以權衡所達成的壓縮量與維持較大緩衝器之能量或電路面積負擔。
此外,追蹤分析器14可維持類似的FIFO資料結構(使用如第9圖中之硬體緩衝器或藉由使用軟體以判定例外編號值的對應FIFO陣列)。當追蹤分析器14接收到不具有例外編號之封包時,其可使用識別符欄位104以識別哪一先前例外編號與當前例外處理事件相關聯。
因此,壓縮模式藉由避免在追蹤流之多個封包中重複相同的例外編號而允許減小例外追蹤資訊之總量。配置暫存器16可用於選擇壓縮模式有效或無效。
上文已描述多種用於減少跡線數量之不同的技術。此等技術中之任何一或多者均可應用於給定實施例。舉例而言,在一些系統中,可能希望基於例外處理事件之類型(進入、退出或返回)實施追蹤封包之過濾但不提供其他例外追蹤減少技術中之任一者。其他系統可實施上文論述的技術之其他子集,其係取決於當與使用者預期使用對應功能之可能性相比較時,配置暫存器16中之配置控制可用空間之數量及實施此控制之相對複雜性以及硬體。因此,不必要在給定系統中實施上文論述的技術之全部。
第10圖圖示資料處理設備2之另一實例。與在第1圖中相同之元件以相同的參考數字圖示。在第10圖之實例中,追蹤模組6不考慮配置暫存器16之例外追蹤配置資訊而僅輸出預設包含完整的例外追蹤資訊的初始追蹤流8。提供下游追蹤過濾器120,其取決於配置暫存器16中之例外追蹤配置資訊使用上文展示的技術中之任一者選擇性丟棄自追蹤模組6接收到的一些追蹤封包或修改追蹤封包中包括什麼資訊。因此,在一些情況下,取決於配置資訊來過濾、修改或壓縮例外追蹤資訊之追蹤電路系統120可實際上不監視處理電路系統4本身,但可僅作用於由單獨追蹤模組6產生的追蹤流。
第11圖圖示在處理系統中追蹤例外處理事件之方法。在步驟200,追蹤電路系統6、120偵測到例外處理事件。在追蹤模組6之情況下,此可藉由直接監視處理電路系統4,而對於追蹤過濾器120,例外處理事件可在關於給定例外處理事件之追蹤封包在初始追蹤流8中自追蹤模組6接收到時被偵測到。例外處理事件可為關於藉由處理電路系統4處理例外之任何事件,諸如例外本身之發生(例如斷定例外或中斷信號)、進入例外處理常式、自例外處理常式退出或在完成例外處理常式之後返回至某一先前處理。
在步驟202,追蹤電路系統追蹤電路系統6、120判定暫存器16中之配置資訊是否指定例外追蹤經啟用。若不指定,則在步驟204,抑制用於此事件之例外追蹤封包之輸出且方法返回至步驟200以等候另一例外處理事件。當例外之輸出被抑制時,不輸出封包。
另一方面,若啟用例外追蹤,則在步驟205,追蹤電路系統6、120判定暫存器16中之配置資訊是否指定當前偵測到的類型之例外處理事件已經選擇用於追蹤。舉例而言,配置暫存器可僅指定例外處理事件之子集(例如僅退出,或退出及進入)且可不追蹤其他類型之事件。若當前例外處理事件不為經選擇類型之事件,則再一次在步驟204,抑制例外追蹤封包之輸出。
若當前例外處理事件經選擇用於追蹤,則在步驟206,追蹤電路系統6、120判定當前例外類型是否已經選擇用於追蹤。配置暫存器16可指定經追蹤之例外類型之某一子集(例如僅例外編號0至15,或僅例外編號4)。若當前例外不為經選擇之例外類型,則再一次,在步驟204抑制例外追蹤封包之輸出。總體而言,步驟205及206實施封包過濾,其中若封包與指定例外類型或例外處理事件類型無關,則整個封包可被省略。另一方面,若在步驟206判定當前例外類型經選擇用於追蹤,則將對於此例外處理事件輸出至少一些追蹤資訊。
在步驟208,追蹤電路系統6、120基於暫存器16中之配置資訊判定是否將用於當前例外處理事件之封包與後一例外處理事件封包合併。舉例而言,暫存器16可指定是否如上文論述合併例外退出與返回封包。若合併封包,則在步驟210,關於當前例外處理事件之資訊(例如例外編號)經保存在儲存元件中,同時等候偵測到後一例外處理事件,且方法返回至步驟200。
否則,方法繼續至步驟212,其中追蹤電路系統6、120基於配置資訊判定是否啟用對用於不同例外處理事件的追蹤封包之合併,且若啟用,則是否存在保存在步驟210中之來自先前例外處理事件之任何資訊。若啟用合併且包括有先前資訊,則在步驟214,輸出合併的例外追蹤封包,其包括關於先前與當前例外處理事件兩者之資訊。舉例而言,此可為上文在第4圖中圖示的合併例外退出與返回封包。方法隨後返回至步驟200用於偵測下一例外處理事件。
另一方面,若未啟用合併,或不存在來自先前事件之資訊,則在步驟216,追蹤電路系統6、120基於配置暫存器16判定是否啟用尾鏈旗標60,且若啟用,則當前例外處理事件是否為尾鏈例外進入或退出事件。當處理電路系統4完成用於第一例外之例外處理程式且在恢復與在第一例外之前經執行的處理相關聯的任何狀態之前開始用於第二例外之例外處理程式時,發生尾鏈例外退出或進入。若啟用尾鏈旗標60且當前事件為尾鏈例外進入或退出,則在步驟218,對於下一待輸出之封包設定尾鏈旗標。否則,省略步驟218。
在步驟220,追蹤電路系統6、120基於配置暫存器16判定是否在例外追蹤封包中包括當前例外之例外編號。若不包括,則在步驟222輸出不具有例外編號22之例外追蹤封包。方法隨後返回至步驟200。
若包括例外編號,則在步驟224,追蹤電路系統6、120自配置暫存器16判定是否啟用壓縮模式,且若啟用,則用於當前例外之例外編號是否與用於先前例外追蹤封包之例外編號相同。先前例外追蹤封包可為前一個例外追蹤封包,或可為例外編號經記錄在諸如上文所論述之實例中的堆疊或FIFO緩衝器之儲存結構中之先前例外追蹤封包。若當前例外編號與先前例外追蹤封包之例外編號相同且啟用壓縮模式,則在步驟222,再一次輸出不具有任何例外編號之例外追蹤封包。在FIFO緩衝器100用於記錄多個先前例外編號之情況下,在步驟222之例外追蹤封包輸出亦可包括識別符104,其先前例外編號匹配當前例外編號。
若未啟用壓縮模式,或當前例外編號不與任何先前的例外編號匹配,則在步驟226,追蹤電路系統6、120判定配置暫存器16是否指定使用減小尺寸的例外編號,且若使用,則當前例外是否具有可藉由彼減小的尺寸欄位表示的例外編號。若配置暫存器16啟用減小的尺寸欄位且較小的欄位可容納當前例外編號,則在步驟228,例外追蹤封包經輸出具有如上文第8圖之實例之減小的例外編號欄位90。若配置資訊不准許減小尺寸的例外編號欄位或當前例外之例外編號太大而無法由減小的欄位表示,則在步驟230,例外追蹤封包經輸出具有完整尺寸的例外編號欄位(例如,如在第2圖中)。在所有情況下,方法隨後返回至步驟200以等候下一例外處理事件。
儘管步驟208及210展示實例,其中資訊經保存同時等候後一例外處理事件以使得其可與用於彼事件之封包合併,但在一些情況下,即使後一例外處理事件尚未發生,亦可提前輸出經保存的資訊。舉例而言,儘管在第二例外處理事件發生之前合併用於兩個例外處理事件之封包可為較佳的,但可能發生一些其他事件使得不適合等候第二例外處理事件。舉例而言,若在第二例外處理事件發生之前禁止追蹤,則最佳方案可為輸出關於第一例外處理事件之經保存的資訊以使得可保存直至追蹤被禁止時的活動。類似地,為防止關於第一例外處理事件之資訊在等候可能永遠不會發生的第二例外處理事件時經無限期地保存,可施加逾時以使得若第二例外處理事件不在第一例外處理事件之給定時間段內發生,則單獨輸出關於第一例外處理事件之資訊。此外,在一些情況下,可能僅對於例外處理事件之一些序列支援合併,且因此在第二例外處理事件為支援合併之類型的情況下在保存關於第一例外處理事件之資訊之後,若下一例外處理事件隨後不為支援的類型,則關於第一例外處理事件之資訊可以獨立追蹤封包之形式輸出而不等候任何其他例外處理事件。
第11圖圖示上文論述之所有追蹤過濾及壓縮技術,但應理解,並非一些可被省略且此等技術之任何子集可用於給定實施方式。舉例而言: • 若不支援基於例外處理事件類型之過濾,則始終在步驟205之後採取「是」分支; • 若不支援基於例外類型之過濾,則始終在步驟206之後採取「是」分支; • 若不支援封包之合併,則始終在步驟208及212之後採取「否」分支; • 若不支援尾鏈旗標,則始終在步驟216之後採取「否」分支; • 若不支援省略例外編號,則始終在步驟220之後採取「是」分支; • 若不支援壓縮模式,則始終在步驟224之後採取「否」分支;及 • 若不支援減小的例外編號欄位,則始終在步驟226之後採取「否」分支。
應理解,上文展示之封包尺寸及格式僅為實例,且可能存在許多可將類似資訊編碼在追蹤流中之方式。大體上,例外追蹤配置資訊可控制當啟用例外追蹤時產生多少例外追蹤資料。
儘管上文論述之實例包括用以完全地選擇性啟用或禁用對例外處理事件之追蹤的配置,但其他系統可永久地啟用例外追蹤。在此情況下,可始終將例外追蹤視為啟用,然而所產生的例外追蹤資料之數量可取決於配置儲存元件16中之配置資訊設定而變化。
儘管上文中之第1圖圖示配置資訊經儲存在配置暫存器16中之實例,但大體上,例外追蹤配置資訊可以多種方式實施。舉例而言,此資訊可在一些情況下經儲存在晶片外或在處理電路系統4之通用暫存器內而非在專用配置暫存器16中。在一些情況下,至少一些配置資訊在製造或實施設備2期間可為固線式的以使得一旦經部署之後不可能將配置資訊程式化(然而,提供具有在製造期間選擇不同的固線式配置之選項的追蹤架構可仍為有用的)。
儘管第1圖圖示包括追蹤緩衝器10與追蹤介面12兩者之實例,但其他實例可省略此等中之一者或兩者。舉例而言,可將追蹤資料輸出至處理設備2內之可拆離的儲存裝置,諸如記憶體卡,且隨後可移除此記憶體卡以將資料傳送至追蹤分析器14中而非使其在介面12上流動。此外,可省略追蹤緩衝器10且在運作中僅在介面12上輸出所產生的追蹤流8。然而,包括緩衝器10幫助自介面之輸出去耦追蹤流之產生以使得即使追蹤介面12具有小於產生追蹤流8之速率的頻寬,仍可將一些資訊保存在追蹤緩衝器中以避免資訊損失。
儘管第1圖圖示追蹤模組6被包括在與其所監視之處理電路4相同的電路系統中的實例,但在其他情況下,可能以外部追蹤模組6之形式實施追蹤電路系統,外部追蹤模組6自設備2接收關於處理電路系統4之處理活動之資訊且產生指示處理活動之各種態樣之追蹤封包流。然而,藉由在晶片上包括追蹤模組6,可能探測處理活動之更詳細的態樣。
如第1圖中所示,追蹤分析器14包含介面300以接收用於處理設備2之追蹤流,及分析電路系統302用於解碼及分析接收到的追蹤流。在一些情況下,可在專用硬體中實施追蹤分析器14。硬體可為如第1圖中所示之外部裝置。或者,操作經追蹤之目標資料處理設備2可包括機載追蹤分析硬體14用於分析其自身之追蹤資料,且可能基於追蹤資料之分析調節處理電路系統4之操作。舉例而言,硬體可改變處理電路系統4之操作模式或基於追蹤分析之結果重編譯在處理電路系統4上執行之軟體。或者,追蹤分析器14可包含通用電腦,其中分析電路系統302包含處理器,該處理器執行用於控制處理器以分析追蹤流之軟體。
第12圖圖示由追蹤分析器14執行以分析來自處理設備2之追蹤資料輸出的方法。在步驟320,在介面300上接收來自處理設備2之例外追蹤資料。在步驟322,分析電路系統302偵測若干可用的編碼格式中之何者為用於編碼接收到之例外追蹤資料之當前編碼格式。舉例而言,分析電路系統302可讀取各例外追蹤封包之封包標頭20以判定彼封包之格式。舉例而言,基於標頭20,分析電路系統302可判定究竟是否包括發生的例外之例外編號22,或例外編號是如第2圖中所示之完整尺寸例外編號還是如第8圖中所示之減小尺寸的例外編號。分析電路系統302亦可基於標頭20判定封包包括用於單個例外處理事件(如在第2圖中)或多個例外處理事件(如在第4圖中)之例外編號。
在步驟324,分析電路系統302根據偵測到的格式解碼例外追蹤資料。舉例而言,分析電路系統302基於經識別的格式讀取例外編號22及功能編號26。當如上文針對第9圖所論述啟用追蹤壓縮模式時,當接收到包含識別符欄位104之封包時,分析器14可基於前一例外編號重建例外編號22。在已判定例外編號22及功能編號26後,分析電路系統302可在程式之程式日誌追蹤執行中記錄此資訊。舉例而言,程式日誌可包括發生的給定類型的例外之數目計數,其可基於經解碼之例外追蹤資訊更新。因此,追蹤分析器14可基於追蹤標頭識別若干例外追蹤格式中之何者已用於相應地編碼及解碼與例外有關的資訊。
在另一實例中,設備可包含: 用於輸出指示在監視處理電路系統之處理活動期間偵測到的例外處理事件之例外追蹤資料的構件;及 用於維持例外追蹤配置資料之構件,此例外追蹤配置資料用於控制由用於輸出之構件進行的例外追蹤資料之輸出;其中: 當啟用例外追蹤資料之輸出時,用於輸出之構件經配置以取決於例外追蹤配置資料選擇輸出多少例外追蹤資料。
在另一實例中,設備可包含: 用於接收例外追蹤資料之構件,此例外追蹤資料指示在監視處理電路系統之處理活動期間偵測到的例外處理事件;及 構件,其用於自例外追蹤資料偵測複數個編碼格式中之何者為編碼例外追蹤資料之當前編碼格式,且用於根據該當前編碼格式解碼例外追蹤資料。
在本申請案中,詞語「經配置以……」用於意謂設備之元件具有能夠進行經定義之操作的配置。在此上下文中,「配置」意謂硬體或軟體之互連之佈置或方式。舉例而言,設備可具有提供經定義操作之專用硬體,或處理器或其他處理裝置可經程式化以執行功能。「經配置以」不暗示需要以任何方式改變設備元件以便提供經定義之操作。
儘管已在本文中參考隨附圖式詳細描述本發明之說明性實施例,但應理解,本發明不限於彼等精確實施例,且熟習此項技術者可在其中做出各種變化及修改而不偏離如由隨附申請專利範圍所定義之本發明之範疇及精神。
2‧‧‧資料處理設備
4‧‧‧處理電路系統
6‧‧‧追蹤模組
8‧‧‧追蹤流
10‧‧‧追蹤緩衝器
12‧‧‧追蹤介面
14‧‧‧追蹤分析器
16‧‧‧配置暫存器
18‧‧‧例外追蹤封包
20‧‧‧標頭
21‧‧‧有效負載
22‧‧‧例外編號/例外編號欄位
26‧‧‧功能編號
30‧‧‧步驟
32‧‧‧步驟
34‧‧‧步驟
36‧‧‧步驟
38‧‧‧步驟
40‧‧‧步驟
42‧‧‧步驟
44‧‧‧步驟
46‧‧‧步驟
48‧‧‧步驟
50‧‧‧步驟
60‧‧‧尾鏈旗標
80‧‧‧步驟
82‧‧‧步驟
84‧‧‧步驟
86‧‧‧步驟
90‧‧‧例外編號/例外編號欄位/步驟
100‧‧‧先進先出結構/先進先出緩衝器
102‧‧‧比較器
104‧‧‧識別符
106‧‧‧寫入指針
120‧‧‧追蹤過濾器/追蹤電路系統
200‧‧‧步驟
202‧‧‧步驟
204‧‧‧步驟
205‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
214‧‧‧步驟
216‧‧‧步驟
218‧‧‧步驟
220‧‧‧步驟
222‧‧‧步驟
224‧‧‧步驟
226‧‧‧步驟
228‧‧‧步驟
230‧‧‧步驟
300‧‧‧介面
302‧‧‧分析電路系統
320‧‧‧步驟
322‧‧‧步驟
324‧‧‧步驟
第1圖示意性說明具有追蹤電路系統之資料處理設備之實例;
第2圖說明用於提供關於例外處理事件之資訊的例外追蹤封包之第一實例;
第3圖圖示例外追蹤封包由追蹤電路系統輸出之過濾之實例;
第4圖圖示例外追蹤封包之第二實例,其中關於例外退出及返回事件之資訊經合併在一個封包中;
第5圖圖示包含尾鏈旗標之例外追蹤封包之第三實例;
第6圖圖示尾鏈例外之實例;
第7圖圖示例外追蹤封包之第四實例,其中識別例外類型之例外編號被省略;
第8圖圖示例外追蹤封包之第五實例,其包含小於第2圖之實例之例外編號欄位;
第9圖圖示壓縮模式之實例,其中當例外編號與先前例外追蹤封包之例外編號相同時,此例外編號被省略;
第10圖圖示包含追蹤電路系統之資料處理設備之另一實例;
第11圖為圖示產生例外追蹤封包之方法之實例的流程圖;及
第12圖為圖示解碼例外追蹤資料之方法之實例的流程圖。
無
(請換頁單獨記載) 無
2:資料處理設備
4:處理電路系統
6:追蹤模組
8:追蹤流
10:追蹤緩衝器
12:追蹤介面
14:追蹤分析器
16:配置暫存器
300:介面
302:分析電路系統
Claims (22)
- 一種設備,包含:追蹤電路系統,該追蹤電路系統輸出指示在監視處理電路系統之處理活動期間偵測到的例外處理事件的例外追蹤資料;及一配置元件,該配置元件維持例外追蹤配置資料用於控制由該追蹤電路系統對該等例外追蹤資料之輸出;其中:當啟用該等例外追蹤資料之輸出時,該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇輸出多少該等例外追蹤資料;該等例外追蹤資料包含一或多個例外追蹤封包;以及該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇是否在至少一個例外追蹤封包中包括一例外識別符,該例外識別符識別一例外處理事件針對其發生之一例外類型。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇輸出哪些例外追蹤封包。
- 如請求項1所述之設備,其中該等例外追蹤配置資料指示複數個例外處理事件類型中之至少一 種經選擇的類型;及該追蹤電路系統經配置以抑制用於除該至少一種經選擇的類型以外的類型之例外處理事件的例外追蹤封包之輸出。
- 如請求項3所述之設備,其中該等複數個類型之例外處理事件包含以下各者中之至少兩者:一例外進入事件,包含該處理電路系統回應於一例外之發生進入一例外處理常式;一例外退出事件,包含該處理電路系統退出該例外處理常式;及一例外返回事件,包含該處理電路系統返回至在該例外發生之前經執行之處理。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇輸出對應於兩種或更多種類型之例外處理事件之組合例外追蹤封包或用於該等兩種或更多種類型之例外處理事件之每一者之單獨例外追蹤封包。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以輸出至少一個例外追蹤封包,其包含指示一尾鏈事件之發生的一尾鏈識別值;該尾鏈事件包含該處理電路系統,在完成用於一第一例外之一例外處理常式之後,在恢復與在該第一例 外發生之前經執行的處理相關聯的狀態之前,進入用於一第二例外之一例外處理常式。
- 如請求項6所述之設備,其中該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇是否在該至少一個例外追蹤封包中包括該尾鏈識別值。
- 如請求項1所述之設備,其中該等例外追蹤配置資料指示至少一種經選擇的例外類型;及該追蹤電路系統經配置以抑制用於與除該至少一種經選擇的例外類型以外的例外類型相關的例外處理事件的例外追蹤封包之輸出。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇在一給定例外追蹤封包中輸出多少資訊。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇在至少一個例外追蹤封包中分配多少位元以用於編碼一例外識別符,該例外識別符識別一例外處理事件針對其發生之一例外類型。
- 如請求項1所述之設備,其中該追蹤電路系統具有一壓縮模式,其中該追蹤電路系統經配置以在該例外識別符具有與一先前例外追蹤封包之一例外識別符相同的值時省略來自一給定例外追蹤封包 之一例外識別符。
- 如請求項11所述之設備,其中該先前例外追蹤封包包含在該給定例外追蹤封包前一個經輸出的例外追蹤封包。
- 如請求項11所述之設備,其中該先前例外追蹤封包包含複數個之前的例外追蹤封包中之任一者,其中該給定例外追蹤封包包含對該等複數個之前的例外追蹤封包中之何者為該先前例外追蹤封包之一指示。
- 如請求項11所述之設備,其中該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇是否以該壓縮模式操作。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以取決於該等例外追蹤配置資料選擇性啟用或禁用該等例外追蹤資料之輸出。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以監視該處理電路系統之該處理活動並產生該等輸出例外追蹤資料。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以接收包含例外追蹤資料之一初始追蹤流,且取決於該等例外追蹤配置資料選擇輸出該初始追蹤流之多少例外追蹤資料。
- 如請求項1所述之設備,其中該追蹤電路系統經配置以輸出包含該等例外追蹤資料及至少一種其他類型之追蹤資料之一追蹤流。
- 如請求項1所述之設備,包含以下各者中之至少一者:一追蹤緩衝器,該追蹤緩衝器儲存由該追蹤電路系統輸出之該等追蹤資料;及一追蹤介面,該追蹤介面將由該追蹤電路系統輸出之該等追蹤資料傳輸至一外部裝置。
- 如請求項1所述之設備,包含該處理電路系統。
- 一種用於監視處理電路系統之處理活動的方法;該方法包含以下步驟:維持例外追蹤配置資料,該例外追蹤配置資料用於控制對例外追蹤資料之輸出,該等例外追蹤資料指示在監視該處理電路系統之該處理活動期間偵測到的例外處理事件;及當啟用例外追蹤資料之輸出時,取決於該等例外追蹤配置資料選擇輸出多少該等例外追蹤資料;其中該等例外追蹤資料包含一或多個例外追蹤封包;以及該選擇包含:取決於該等例外追蹤配置資料選擇是 否在至少一個例外追蹤封包中包括一例外識別符,該例外識別符識別一例外處理事件針對其發生之一例外類型。
- 一種包含如請求項1所述之設備的系統,以及一追蹤分析設備包含:追蹤接收電路系統,該追蹤接收電路系統接收指示在監視處理電路系統之處理活動期間偵測到的例外處理事件的例外追蹤資料;及分析電路系統,該分析電路系統自該等例外追蹤資料偵測複數個編碼格式中之何者為編碼該等例外追蹤資料之一當前編碼格式,且根據該當前編碼格式解碼該等例外追蹤資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1514591.5 | 2015-08-17 | ||
GB1514591.5A GB2541400B (en) | 2015-08-17 | 2015-08-17 | Tracing of exception handling events |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201712546A TW201712546A (zh) | 2017-04-01 |
TWI735457B true TWI735457B (zh) | 2021-08-11 |
Family
ID=54258737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105124280A TWI735457B (zh) | 2015-08-17 | 2016-08-01 | 用於追蹤例外處理事件的設備與方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10289527B2 (zh) |
EP (1) | EP3133493B1 (zh) |
CN (1) | CN106469043B (zh) |
GB (1) | GB2541400B (zh) |
TW (1) | TWI735457B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170571B (zh) * | 2017-12-22 | 2020-11-03 | 苏州中晟宏芯信息科技有限公司 | 一种芯片追踪调试装置及方法 |
CN109902000B (zh) * | 2019-01-31 | 2021-09-03 | 西安电子科技大学 | 变速多通道调试追踪系统、方法、设备及存储介质 |
US11016773B2 (en) * | 2019-09-27 | 2021-05-25 | Intel Corporation | Processor trace extensions to facilitate real-time security monitoring |
GB2594977B (en) * | 2020-05-14 | 2022-10-05 | Advanced Risc Mach Ltd | Technique for collecting state information of an apparatus |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080147946A1 (en) * | 2006-12-15 | 2008-06-19 | Microchip Technology Incorporated | Interrupt Controller |
US8775875B2 (en) * | 2008-04-28 | 2014-07-08 | Imagination Technologies, Limited | System for providing trace data in a data processor having a pipelined architecture |
US20150006869A1 (en) * | 2013-07-01 | 2015-01-01 | Freescale Semiconductor, Inc. | Debug method and device for handling exceptions and interrupts |
TW201520756A (zh) * | 2013-09-26 | 2015-06-01 | Intel Corp | 從多重資料錯誤中恢復之技術 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128722A (en) * | 1998-02-13 | 2000-10-03 | International Business Machines Corporation | Data processing system having an apparatus for exception tracking during out-of-order operation and method therefor |
US7185234B1 (en) * | 2001-04-30 | 2007-02-27 | Mips Technologies, Inc. | Trace control from hardware and software |
US7984220B2 (en) * | 2004-09-02 | 2011-07-19 | International Business Machines Corporation | Exception tracking |
US20070011492A1 (en) * | 2005-07-05 | 2007-01-11 | Arm Limited | Generation of trace data |
US8762687B2 (en) * | 2008-05-24 | 2014-06-24 | Via Technologies, Inc. | Microprocessor providing isolated timers and counters for execution of secure code |
US8468529B2 (en) * | 2009-05-27 | 2013-06-18 | Microsoft Corporation | Correlating, logging and tracing messaging events between workflow instances with globally unique identifiers |
US8627303B2 (en) * | 2009-11-30 | 2014-01-07 | International Business Machines Corporation | Memory optimization of virtual machine code by partitioning extraneous information |
US8726240B2 (en) * | 2010-05-12 | 2014-05-13 | Salesforce.Com, Inc. | Capturing replayable information at software defect locations in a multi-tenant environment |
GB2487355B (en) * | 2011-01-13 | 2020-03-25 | Advanced Risc Mach Ltd | Processing apparatus, trace unit and diagnostic apparatus |
US8719828B2 (en) * | 2011-10-14 | 2014-05-06 | Intel Corporation | Method, apparatus, and system for adaptive thread scheduling in transactional memory systems |
US8935513B2 (en) * | 2012-02-08 | 2015-01-13 | International Business Machines Corporation | Processor performance improvement for instruction sequences that include barrier instructions |
US9116711B2 (en) * | 2012-02-08 | 2015-08-25 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
US8914776B2 (en) * | 2012-05-17 | 2014-12-16 | Microsoft Corporation | Assisting development tools through inserted code statements |
US9361204B2 (en) * | 2013-02-19 | 2016-06-07 | Arm Limited | Generating trace data including a lockup identifier indicating occurrence of a lockup state |
US9606850B2 (en) * | 2013-03-12 | 2017-03-28 | Arm Limited | Apparatus and method for tracing exceptions |
-
2015
- 2015-08-17 GB GB1514591.5A patent/GB2541400B/en active Active
-
2016
- 2016-08-01 TW TW105124280A patent/TWI735457B/zh active
- 2016-08-10 US US15/233,061 patent/US10289527B2/en active Active
- 2016-08-11 EP EP16183816.4A patent/EP3133493B1/en active Active
- 2016-08-16 CN CN201610677927.8A patent/CN106469043B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080147946A1 (en) * | 2006-12-15 | 2008-06-19 | Microchip Technology Incorporated | Interrupt Controller |
US8775875B2 (en) * | 2008-04-28 | 2014-07-08 | Imagination Technologies, Limited | System for providing trace data in a data processor having a pipelined architecture |
US20150006869A1 (en) * | 2013-07-01 | 2015-01-01 | Freescale Semiconductor, Inc. | Debug method and device for handling exceptions and interrupts |
TW201520756A (zh) * | 2013-09-26 | 2015-06-01 | Intel Corp | 從多重資料錯誤中恢復之技術 |
Also Published As
Publication number | Publication date |
---|---|
EP3133493B1 (en) | 2020-04-08 |
GB2541400A (en) | 2017-02-22 |
EP3133493A1 (en) | 2017-02-22 |
US20170052869A1 (en) | 2017-02-23 |
CN106469043A (zh) | 2017-03-01 |
TW201712546A (zh) | 2017-04-01 |
GB2541400B (en) | 2017-11-15 |
US10289527B2 (en) | 2019-05-14 |
CN106469043B (zh) | 2022-01-25 |
GB201514591D0 (en) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI735457B (zh) | 用於追蹤例外處理事件的設備與方法 | |
US7984338B2 (en) | Program counter (PC) trace | |
EP1805621B1 (en) | Method and system for debugging a multi-threaded program executing in a multicore architecture | |
US9830241B2 (en) | Debug in a multicore architecture | |
KR101994636B1 (ko) | 데이터 처리장치의 추적 | |
TWI505084B (zh) | 用於產生資料處理設備之追蹤串流的技術 | |
US9703669B2 (en) | Apparatus and method for distributed instruction trace in a processor system | |
US7325168B2 (en) | Trace data source identification within a trace data stream | |
KR20150008428A (ko) | 명령어 트레이스 기능을 갖춘 프로세서 디바이스 | |
US20040019831A1 (en) | Method and apparatus for debugging a data processing system | |
CN107436752B (zh) | 异常现场恢复方法、装置及计算机可读存储介质 | |
CN109918221B (zh) | 一种硬盘报错解析方法、系统、终端及存储介质 | |
US9361204B2 (en) | Generating trace data including a lockup identifier indicating occurrence of a lockup state | |
US10795797B2 (en) | Controller, SATA system and method of operation therefor | |
JP6070220B2 (ja) | 電子機器用のデバイス | |
JP2019526108A (ja) | 診断データキャプチャ | |
JP2016014971A (ja) | データ転送装置、データ転送方法及びプログラム |