本技術涉及數(shù)據(jù)處理的領域。更具體地,它涉及對于例外處理事件的追蹤。
背景技術:
:數(shù)據(jù)處理設備可包括用于追蹤處理電路的處理活動的追蹤模塊。舉例而言,追蹤模塊可監(jiān)視哪些指令由處理電路執(zhí)行、由處理電路存取的數(shù)據(jù)地址、或某些事件的發(fā)生,且生成提供關于已發(fā)生的處理活動的信息的追蹤數(shù)據(jù)。可分析追蹤數(shù)據(jù)以確定在執(zhí)行給定程序期間發(fā)生了什么,其可幫助診斷數(shù)據(jù)處理設備或經(jīng)執(zhí)行的程序編碼的問題以及幫助識別可能的解決方案。追蹤亦可適用于效能剖析(profiling)。技術實現(xiàn)要素:至少一些示例提供一種設備,包括:追蹤電路,其輸出指示在監(jiān)視處理電路的處理活動期間檢測到的例外處理事件的例外追蹤數(shù)據(jù);及配置組件,其維持用于控制由追蹤電路進行的例外追蹤數(shù)據(jù)的輸出的例外追蹤配置數(shù)據(jù);其中:當例外追蹤數(shù)據(jù)的輸出被啟用時,追蹤電路被配置為取決于例外追蹤配置數(shù)據(jù)選擇輸出多少例外追蹤數(shù)據(jù)。至少一些示例提供一種用于監(jiān)視處理電路的處理活動的方法;該方法包括:維持例外追蹤配置數(shù)據(jù),其用于控制指示在監(jiān)視處理電路的處理活動期間檢測到的例外處理事件的例外追蹤數(shù)據(jù)的輸出;以及當例外追蹤數(shù)據(jù)的輸出被啟用時,取決于例外追蹤配置數(shù)據(jù)來選擇輸出多少例外追蹤數(shù)據(jù)。至少一些示例提供一種設備,包括:追蹤接收電路,其接收指示在監(jiān)視處理電路的處理活動期間檢測到的例外處理事件的例外追蹤數(shù)據(jù);以及分析電路,其根據(jù)例外追蹤數(shù)據(jù)檢測多個編碼格式中的何者為編碼例外追蹤數(shù)據(jù)的當前編碼格式,且根據(jù)該當前編碼格式譯碼例外追蹤數(shù)據(jù)。至少一些示例提供一種用于分析處理電路的處理活動的方法,包括:接收指示在監(jiān)視處理電路的處理活動期間檢測到的例外處理事件的例外追蹤數(shù)據(jù);根據(jù)例外追蹤數(shù)據(jù)檢測多個編碼格式中的何者為編碼例外追蹤數(shù)據(jù)的當前編碼格式;以及根據(jù)該當前編碼格式譯碼例外追蹤數(shù)據(jù)。一種計算機程序可被提供以控制數(shù)據(jù)處理設備執(zhí)行該分析方法。程序可存儲在計算機可讀存儲介質上。存儲介質可為非暫態(tài)的。本技術的其他方面、特征及優(yōu)點將自結合附圖理解的以下示例描述中顯而易見。附圖說明圖1示意性說明具有追蹤電路的數(shù)據(jù)處理設備的示例;圖2說明用于提供關于例外處理事件的信息的例外追蹤分組的第一示例;圖3示出例外追蹤分組由追蹤電路輸出的過濾的示例;圖4示出例外追蹤分組的第二示例,其中關于例外退出及返回事件的信息被合并在一個分組中;圖5示出包括尾鏈旗標的例外追蹤分組的第三示例;圖6示出尾鏈例外的示例;圖7示出例外追蹤分組的第四示例,其中標識例外類型的例外編號被省略;圖8示出例外追蹤分組的第五示例,其包括小于圖2的示例的例外編號字段;圖9示出壓縮模式的示例,在該壓縮模式中當例外編號與先前例外追蹤分組的例外編號相同時,此例外編號被省略;圖10示出包括追蹤電路的數(shù)據(jù)處理設備的另一示例;圖11為示出生成例外追蹤分組的方法的示例的流程圖;以及圖12為示出譯碼例外追蹤數(shù)據(jù)的方法的示例的流程圖。具體實施方式圖1示意性說明數(shù)據(jù)處理設備2(例如,微處理器)的示例。設備2具有處理電路4用于響應于程序指令執(zhí)行數(shù)據(jù)處理操作。任何已知處理電路均可用作處理電路4。盡管圖1示出具有一個處理電路4的設備,但應理解一些實施例可以具有多個處理電路,且可提供許多出于簡潔目的未在圖1中示出的其他組件。提供嵌入的追蹤模塊6用于監(jiān)視處理電路4在執(zhí)行指令時的活動。舉例而言,追蹤模塊6可窺探處理電路4內(nèi)的內(nèi)部總線或導線以監(jiān)視處理電路的活動?;谟^測到的處理活動,追蹤模塊6生成包括多個追蹤分組的追蹤流8,其包括關于處理電路4的處理活動的信息。舉例而言,追蹤分組可指示哪些指令由處理電路4執(zhí)行、由處理電路4存取的數(shù)據(jù)的地址,或某些事件(例如,例外、錯誤、模式變化等)的發(fā)生,以及這些活動發(fā)生的相對時序。來自追蹤模塊6的追蹤分組可提供處理電路4的逐周期指令、數(shù)據(jù)或控制活動的可見度。追蹤流8被輸出至追蹤緩沖器10,其在芯片上存儲追蹤分組。追蹤分組可由追蹤分析器14經(jīng)由追蹤界面12自追蹤緩沖器中讀出。追蹤分析器14可存儲讀出的分組且分析分組以確定關于處理電路4在處理程序指令時的行為的信息。舉例而言,追蹤分析器14可以是專用追蹤分析裝置或執(zhí)行追蹤分析軟件的通用計算機。追蹤分析器14可解釋追蹤分組且向用戶顯示自追蹤分組推導的信息,以幫助用戶識別數(shù)據(jù)處理設備2本身或由處理電路4執(zhí)行的軟件的問題,并發(fā)現(xiàn)可能的解決方案。盡管圖1示出單個追蹤模塊6,但在其他示例中可存在若干追蹤模塊。舉例而言,可提供多個不同的追蹤模塊以捕獲關于處理電路4的操作的不同類型的信息。舉例而言,第一追蹤模塊可執(zhí)行指令追蹤以捕獲關于由處理電路執(zhí)行的指令的時序的信息、分支的結果等,而獨立的數(shù)據(jù)追蹤模塊可捕獲例如關于經(jīng)存取的數(shù)據(jù)地址的信息。此外,在包括多于一個處理電路4的系統(tǒng)中,可能提供多個追蹤模塊以監(jiān)視不同的處理電路4的活動。因此,在一些情況下,追蹤緩沖器10或接口12可自多個不同的追蹤源接收追蹤流并且復用這些追蹤流以用于輸出至追蹤分析器14。設備2包括一個或多個配置寄存器16用于控制追蹤模塊6的操作。配置寄存器16可包括配置數(shù)據(jù),其控制什么信息被包括在由追蹤模塊6生成的追蹤流8中。這可允許系統(tǒng)2、14的用戶控制追蹤模塊6以僅輸出用戶感興趣的特定信息,以避免由于不需要的信息而浪費追蹤緩沖器10和追蹤接口12中的帶寬。舉例而言,配置寄存器16可藉由執(zhí)行配置指令以將配置數(shù)據(jù)寫入配置寄存器16的處理電路4,或藉由提供接口以允許配置寄存器自諸如追蹤分析器14的外部裝置寫入而無需由處理電路4執(zhí)行任何指令來更新??捎勺粉櫮K6追蹤的事件的一個示例為例外處理事件,其可為與由處理電路4處理的例外有關的任何事件。例外是處理電路4中斷其當前處理并進行另一處理程序的請求??纱嬖诙喾N類型的例外且各類型的例外可具有對應的例外處理程序,該例外處理程序定義當例外發(fā)生時要執(zhí)行的多個指令。例外可包括硬件中斷(例如,接收到硬件信號指示某事件已發(fā)生),或者通過某些種類的指令的執(zhí)行或響應于在程序執(zhí)行期間出現(xiàn)的特定條件而觸發(fā)的軟件例外。舉例而言,例外可用于指示故障或錯誤(例如,存儲器保護侵犯或總線故障)、外部事件(例如,使用者按壓設備2上的按鈕或自外部裝置收到信號)的發(fā)生,或可由在處理電路4上執(zhí)行的軟件定義的任何其他事件。下文提及的“例外”應被解釋為包括中斷。各類型的例外可由對應的標識符(或“例外編號”)來標識,且可具有相關聯(lián)的優(yōu)先權等級。當例外發(fā)生時,例外控制器可確定該例外的優(yōu)先權是否大于當前執(zhí)行的處理的優(yōu)先權。若傳入的例外的優(yōu)先權與當前處理的優(yōu)先權相同或較低,則例外不被采用直至當前處理完成。然而,若例外具有大于當前處理的優(yōu)先權,則例外被采用且使當前處理中斷。為允許當前處理在例外一旦完成之后被恢復,可執(zhí)行狀態(tài)保存操作以將與當前處理相關聯(lián)的至少一些處理器狀態(tài)保存至另一位置(例如,存儲器中的堆棧數(shù)據(jù)結構)。舉例而言,經(jīng)保存的處理器狀態(tài)可包括處理電路4的至少一些寄存器的內(nèi)容、程序計數(shù)器的當前數(shù)值、表示處理器的當前狀態(tài)的條件旗標或其他狀態(tài)信息,及稍后可能需要以恢復當前處理的任何其他信息。狀態(tài)保存可在硬件中藉由例外控制器、在軟件中藉由在例外發(fā)生時執(zhí)行的當前處理及/或響應于例外而執(zhí)行的例外處理程序執(zhí)行,或藉由硬件與軟件的組合執(zhí)行。已執(zhí)行狀態(tài)保存之后,執(zhí)行例外處理程序以執(zhí)行處理由例外信令的事件所需要的任何任務。若優(yōu)先權更高的例外發(fā)生,則例外處理程序本身可被中斷。一旦例外處理程序完成,則先前保存的狀態(tài)可被恢復(再一次地,使用硬件、軟件或硬件與軟件的組合)并且然后先前的處理繼續(xù),就好像例外從未發(fā)生過一樣。追蹤模塊6可檢測關于各例外的處理的各種例外處理事件的發(fā)生。舉例而言,例外處理事件可包括:·例外進入事件,當處理電路4進入對應于給定例外的例外處理程序時;·例外退出事件,當處理電路4完成或離開對應于給定例外的例外處理程序時;及·例外返回事件,當處理電路4在另一例外發(fā)生之后返回以處理給定例外時??蛇x地,某些系統(tǒng)亦可追蹤表示例外被首次信令的時序的例外信令事件(獨立于處理電路4實際上進入對應的例外處理程序的時序)。圖2示出用于提供關于例外處理事件的信息的例外追蹤分組18的示例。分組18包括頭部20及有效負載21。分組18的第一字節(jié)表示頭部20,其指示追蹤分組內(nèi)包括什么信息。頭部20的位[1:0]表示追蹤分組的后續(xù)有效負載21的尺寸,且具有以下編碼:·0b01:1字節(jié)有效負載(亦即分組尺寸為2個字節(jié)(包括頭部20))·0b10:2字節(jié)有效負載(亦即包括頭部20的3字節(jié)分組)·0b11:3字節(jié)有效負載(亦即包括頭部20的4字節(jié)分組)。因此,圖2的示例為3字節(jié)分組,如由頭部的位[1:0]為0b10所指示的那樣。頭部20的剩余位[7:2]指示有效負載21中提供的追蹤信息的類型。在此示例中,值0b000011指示此分組是提供關于例外處理事件的信息的例外追蹤分組。本申請中描述的所有例外追蹤分組18的示例均具有相同的頭部位[7:2]的值,但應理解,在其他示例中可存在若干不同類型的例外追蹤分組,其由不同的頭部值來區(qū)分。有效負載21包括例外編號22,其標識對應的例外處理事件所關于的例外類型。在此示例中,例外編號22包括9個位,位[7:0]被編碼在有效負載21的第一字節(jié)中且位[8]被編碼在有效負載21的第二字節(jié)中的最低有效位中??蓸俗R的例外類型的一些示例包括以下:復位、硬件故障、存儲器管理故障、總線故障、調(diào)試例外、定時器例外(由某一定時器的到期觸發(fā))、各種外部中斷,以及某些軟件定義的例外。在一些情況下,在任何例外發(fā)生之前由處理電路4執(zhí)行的正常處理亦可被分配以對應的例外編號(例如,例外編號0)以在一旦任何待完成的例外已經(jīng)處理之后處理返回正常處理時允許例外追蹤分組發(fā)信號通知。有效負載21還包括功能編號26(或例外處理事件類型標識符),其標識關于由例外編號22指示的例外類型已發(fā)生什么類型的例外處理事件。舉例而言,功能編號26可被編碼在有效負載21的第二字節(jié)的位[5:4]中。功能編號26字段的編碼可例如如下:·0b01:例外進入(處理電路4進入例外編號字段22中指示的例外類型的例外處理程序)·0b10:例外退出(處理電路4退出例外編號字段22中指示的例外類型的例外處理程序)·0b11:例外返回(處理電路4返回例外編號字段22中指示的類型的處理,其可為另一例外或正常處理,如上文提及)·0b00:保留。例外追蹤分組的其他位被保留,因此將不由追蹤分析器14解釋。在一些情況下,追蹤模塊6可將所有保留的位固定為0。由追蹤模塊6生成的各追蹤分組18還可具有相關聯(lián)的時間戳,其指示例外處理事件發(fā)生的時間(相對于某些參考時鐘或相對于經(jīng)追蹤的其他事件)。在一些實施例中,時間戳可包括在例外追蹤分組本身中?;蛘?,可生成包括時間戳的分離的時序追蹤流,其允許相關追蹤流中的各追蹤分組的時序相互關聯(lián)。圖3示出由處理電路4處理的一系列例外以及被生成以指示對應的例外處理事件的對應例外追蹤分組18的示例。在此示例中,展示三個例外,例外E2具有最高優(yōu)先權,例外E1具有低于E2的優(yōu)先權,且例外E0具有最低優(yōu)先權。在圖3的步驟30,處理電路4最初執(zhí)行與例外E0相關聯(lián)的處理。這可以是先前未發(fā)生任何例外的程序的正常處理,或可為與某一早期例外相關聯(lián)的例外處理程序。在步驟32,例外E1被信令,其具有高于例外E0的優(yōu)先權。在步驟34,執(zhí)行狀態(tài)保存操作以將處理器狀態(tài)的至少一部分保存至堆?;蚱渌鎯Y構。在步驟36,處理電路4開始執(zhí)行與例外E1相關聯(lián)的例外處理程序。在步驟38,另一例外E2發(fā)生,其具有高于例外E1的優(yōu)先權,且因此用于E1的處理程序中斷且另一狀態(tài)保存操作在步驟40執(zhí)行以保存由于處理例外E1而生成的至少一些處理器狀態(tài)。在步驟42,執(zhí)行與例外E2相關聯(lián)的另一例外處理程序。E2例外處理程序在無中斷的情況下完成,且因此在步驟44,在步驟46處繼續(xù)例外E1的例外處理程序之前,執(zhí)行狀態(tài)恢復操作以恢復與例外E1相關聯(lián)的狀態(tài)。當用于E1的例外處理程序完成時,在步驟48執(zhí)行另一狀態(tài)恢復操作以還原E0處理狀態(tài),且隨后E0的初始處理在步驟50繼續(xù)。圖3的部分A示出追蹤分組18的示例,其可響應于圖3中示出的例外處理事件生成。·時間T0:例外編號(EN)=1,功能編號(FN)=0b01——指示例外進入至E1?!1:EN=2,F(xiàn)N=0b01——例外進入至E2?!2:EN=2,F(xiàn)N=0b10——例外自E2退出。·T3:EN=1,F(xiàn)N=0b11——例外返回至E1?!4:EN=1,F(xiàn)N=0b10一—例外自E1退出?!5:EN=0,F(xiàn)N=0b11——例外返回至E0。因此,可針對各例外生成多個例外追蹤分組。由于例外處理事件可相對頻繁地發(fā)生,且例外追蹤分組的尺寸與追蹤緩沖器10的尺寸相比可相對較大(例如,如圖2中所示的3字節(jié),相比于可能僅具有例如16字節(jié)的追蹤數(shù)據(jù)的容量的典型追蹤緩沖器),例外處理事件的追蹤可導致大量追蹤數(shù)據(jù)的生成,其可導致追蹤緩沖器10變滿。用于將數(shù)據(jù)輸出至追蹤分析器14的追蹤接口12可具有相對較窄的帶寬(例如,其可甚至為每一周期僅能夠輸出1個位的單線輸出)。因此,可能需要許多個周期來讀出來自追蹤緩沖器10的所有數(shù)據(jù)。若追蹤模塊6以大于追蹤接口12可自追蹤緩沖器10移除追蹤數(shù)據(jù)的速率生成追蹤數(shù)據(jù),則緩沖器10可能很快便溢出以使得不得不丟棄一些追蹤分組而不將其輸出至追蹤分析器14。此導致關于處理電路4的活動的信息的損失,其可使得難以執(zhí)行處理活動的任何有意義的分析。一個選項為完全禁止例外追蹤,但如此將無法提供關于例外發(fā)生的信息,此信息可常常在執(zhí)行給定程序時提供對于效能損失的潛在原因的有用洞察。為解決這些問題,在啟用例外事件的追蹤的同時,追蹤模塊6能夠基于配置寄存器16中設定的例外追蹤配置數(shù)據(jù)改變在追蹤流8中輸出多少例外追蹤信息。因此,取決于開發(fā)者對什么特定方面的例外處理感興趣,開發(fā)者能夠設定配置寄存器16中的例外追蹤配置數(shù)據(jù)以控制所生成的例外追蹤信息的數(shù)量。若使用者仍需要如上文所論述的完整的例外追蹤功能,則此可仍然加以提供。然而,若用戶希望減少例外追蹤數(shù)據(jù)的數(shù)量,則可在寄存器16中設定配置信息以選擇如下文所論述的多種選項中的一者。例外追蹤配置數(shù)據(jù)僅控制所生成的例外追蹤信息的數(shù)量,而非追蹤信息的其他方面。通過選擇性減少關于例外處理事件生成的追蹤數(shù)據(jù)的數(shù)量,此不僅能夠通過允許用戶集中于對其有用的類型的信息而改善對例外處理事件自身的追蹤,并且還能夠改善對其他種類的處理活動的追蹤,因為關于非例外相關事件的信息較不可能由于大量的例外追蹤信息而自追蹤緩沖器10被丟棄。因此,這允許對處理電路4總體(而非僅在分析例外事件時)的處理活動的較有意義的分析。存在一系列可為追蹤模塊6所用以改變所生成的例外追蹤信息的數(shù)量的不同的技術?,F(xiàn)在將描述一些示例。在一些實施例中,追蹤模塊6可基于如由功能編號26標識的例外處理事件的類型過濾哪些追蹤分組在追蹤流8中輸出。舉例而言,配置寄存器16可包括定義應被追蹤的例外處理事件類型的特定子集的信息,且追蹤模塊6可抑制關于除經(jīng)選擇子集以外的例外處理事件類型的追蹤分組的輸出。舉例而言,如圖3中的部分B所示,僅可輸出關于例外進入的例外分組,而關于例外退出或返回的分組會被抑制。若使用者僅希望弄清例外發(fā)生的相對頻率,但不關心處理器一旦進入例外處理程序之后花費多長時間處理例外,則此可為有用的。此外,僅追蹤例外進入分組提供哪些例外處理程序以什么次序及以什么比例被調(diào)用的記錄,其可提供所關注的大多數(shù)例外有關的信息。通過僅追蹤例外進入事件及抑制用于退出及返回事件的分組的輸出,例外追蹤數(shù)據(jù)的數(shù)量可減少約三分之一,并且這極大地減輕追蹤緩沖器10及追蹤接口12的壓力以使得較不可能發(fā)生緩沖器溢出。寄存器16中設定追蹤哪些類型的例外處理事件的配置信息能夠以不同方式編碼。在一些示例中,寄存器16的一些控制位能夠分別允許或禁止對各類型的例外處理事件的追蹤,例如:控制位[2:0]進入退出返回概述0b000禁止禁止禁止全部禁止0b001啟用禁止禁止僅進入0b010禁止啟用禁止僅退出0b011啟用啟用禁止進入及退出0b100啟用啟用啟用全部啟用0b101禁止啟用啟用退出及返回0b110啟用禁止啟用進入及返回0b111禁止禁止啟用僅返回注意在此示例中,用于分別啟用/禁止各類型的例外處理事件的相同的控制位亦可用于同一地啟用/禁止例外追蹤??商鎿Q地,可提供分離的例外追蹤使能位以總體上啟用/禁止例外追蹤(此可改良與預期提供有啟用/禁止位的舊有追蹤分析器的兼容性)。一些其他配置位可隨后指定追蹤例外處理事件類型的哪一子集。舉例而言:控制位[3:0]進入退出返回概述0b0xxx禁止禁止禁止全部禁止0b1000啟用啟用啟用全部啟用0b1xx1禁止啟用啟用僅退出及返回0b1x1x啟用禁止啟用僅進入及返回0b11xx啟用啟用禁止僅進入及退出0b1111保留保留保留保留因此,在此示例中,位[3]為用于總體上啟用或禁用追蹤的啟用/禁止位,而位[2:0]被設定為1以分別禁用對返回、退出或進入的追蹤。注意不一定要支持啟用/禁止個別例外處理事件類型的全部可能的組合。一些系統(tǒng)可僅支持選擇被追蹤的例外處理事件類型的某些組合。應理解,此等僅為兩個示例,且許多其他技術可用于選擇追蹤哪一類型的例外處理事件。類似地,配置寄存器16中的配置信息可標識要追蹤的例外類型的子集,且追蹤模塊6可抑制關于不在經(jīng)選擇子集中的例外類型的任何例外追蹤分組的輸出。因此,可實施藉由例外編號過濾例外追蹤分組。舉例而言,如圖3的部分C中所示,配置寄存器16能夠被設定為使得僅輸出關于例外E2的例外追蹤分組且抑制關于例外E0、E1的分組。在一些情況下,選擇追蹤哪些例外編號可相對粗糙。舉例而言,可將單個位設定為指示應追蹤全部例外類型的第一值或指示應追蹤例外類型的某一預定子集的第二值。舉例而言,位可指示是應僅追蹤硬件例外還是硬件與軟件例外兩者??商鎿Q地,配置寄存器16能夠支持較精細的控制,其中可選擇例外類型的不同子集。舉例而言,寄存器16的多個控制位可被提供,其中對這些控制位的不同編碼與要追蹤的例外類型的不同的預定子集相對應。在最精細的等級下,可使用對應的控制位獨立地啟用或禁止對各類型的例外的追蹤。在另一示例中,寄存器16可包括定義例外追蹤分組18應在追蹤流8中輸出的例外編號范圍的信息(例如,在0至16或0至31范圍中的例外編號)。此方法在硬件中實施可相對地有效,因為追蹤模塊6常??赡芤丫哂杏糜诒容^在處理電路4的操作期間檢測到的值與定義追蹤數(shù)據(jù)是否應響應于那些值而生成的控制參數(shù)的比較器。舉例而言,可設定數(shù)據(jù)監(jiān)視點以在處理電路4發(fā)出指定某一地址范圍內(nèi)的地址的內(nèi)存事務時觸發(fā)追蹤分組的輸出??芍匦率褂靡驯惶峁┯糜谄渌愋偷谋容^的比較器來比較給定例外的例外編號是否落入如配置寄存器16中定義的待追蹤的例外編號的范圍內(nèi)。無論配置寄存器16如何指示待輸出追蹤分組的例外類型子集,追蹤模塊6可抑制不在經(jīng)選擇子集中的任何類型的例外的追蹤分組輸出。如同(或替代)過濾追蹤分組以使得全部分組被選擇性地輸出或抑制,追蹤模塊6亦可基于配置寄存器16中設定的例外追蹤配置信息改變包括在例外追蹤分組18內(nèi)的信息。此的若干示例在下文中論述。圖4示出追蹤模塊6可取決于例外追蹤配置信息,選擇性合并用于兩種不同例外處理事件的例外追蹤分組的示例。舉例而言,圖4示出用于合并關于例外退出及例外返回的例外追蹤分組的合并的追蹤分組格式。替代輸出兩個如圖2中所示的3字節(jié)分組以單獨地指示例外退出及例外返回的時序,圖4示出單個4字節(jié)分組,其包括處理程序自其退出的例外的例外編號22-1以及在退出處理程序之后處理所返回的例外的例外編號22-2。由于現(xiàn)在存在兩個例外編號22-1、22-2,有效負載的最后字節(jié)的位[1]用于編碼第二例外編號22-2的位[8]。由于分組具有3字節(jié)有效負載,頭部部分20的位[1:0]取得如上文所指示的值0b11。此外,可分配上文所指示的功能編號26的保留值0b00用于指示此為關于例外退出與返回兩者而非關于上文解釋的單獨的例外處理事件中的任一者的分組。盡管合并退出與返回分組將導致一些信息損失,因為無法再確定單獨的退出及返回事件的時序(其可在下文描述的尾鏈情形中尤其相關),此可為一些使用者接受,因此通過提供配置寄存器16中的配置以選擇是使用獨立分組還是單個合并分組追蹤退出及返回,使用者可選擇其特定應用所需的選項。當認為合并退出與返回分組適宜時,此可對于每一退出/返回對節(jié)省2個追蹤數(shù)據(jù)字節(jié),因為輸出單個4字節(jié)分組而非兩個3字節(jié)分組。若啟用追蹤分組的時間戳,則例外追蹤分組的合并亦藉由減少時間戳數(shù)據(jù)輸出的數(shù)量節(jié)省帶寬。為支持此等分組合并,追蹤模塊6可具有寄存器或緩沖器用于當可輸出合并的退出/返回分組時,臨時保存處理程序自其退出的例外的例外編號一段時間,直至檢測到對應的例外返回。盡管圖4示出合并關于例外退出及返回的分組的示例,但在其他實施例中,可將關于其他類型的例外處理事件的追蹤分組進行合并,其中功能編號26指示哪些類型的例外處理事件被指示(若必要,可為功能編號26分配額外位)并且一系列兩個或更多個指示關于各事件的例外類型。圖5示出追蹤分組18的另一示例,其包括尾鏈旗標60(尾鏈標識值)用于指示是否存在尾鏈例外。否則,分組18與在圖2中相同。關于圖6描述尾鏈的概念。圖6示出與圖3類似的一系列例外,包括三個例外E0、E1、E2,其具有如在圖3中的相繼更高的優(yōu)先權。圖6的步驟30至42與在圖3中相同。然而,在圖6中,在處理用于例外E2的處理程序例程時,另一例外E3在步驟80發(fā)生。例外E3具有低于例外E2的優(yōu)先權及高于例外E1的優(yōu)先權。由于例外E3具有低于E2的優(yōu)先權,因此E3不中斷用于E2的例外處理程序。當E2例外處理程序完成時,例外控制器確定例外E3具有高于在E2發(fā)生之前經(jīng)處理的例外E1的優(yōu)先權,且因此應在返回至E1之前處理E3。因此,處理開關引導至與例外E3相關聯(lián)的例外處理程序而不首先還原與例外E1相關聯(lián)的處理器狀態(tài)。通過自E2處理程序末尾直接切換至E3處理程序開頭而不執(zhí)行任何用于還原與在例外E2之前經(jīng)執(zhí)行的處理E1相關聯(lián)的狀態(tài)的中間狀態(tài)恢復,可較快速地處理例外E3以減少中斷處理等待時間。此稱為例外的尾鏈。在步驟82,執(zhí)行E3例外處理程序,且當其完成時,隨后在步驟84,恢復與例外E1相關聯(lián)的狀態(tài),且隨后圖6的步驟86至90與圖3中的步驟46至50相同。有時,執(zhí)行追蹤分析的使用者可能希望弄清楚兩個例外是否被尾鏈。若啟用例外進入、退出及返回事件的完整例外追蹤,則圖6中示出的例外處理事件將導致如圖6的部分A中所示的一系列追蹤分組。例外E3在例外E2之后加以尾鏈的事實可自追蹤流看到,因為標記在時間T3例外進入至E3及在時間T4自E3例外退出的追蹤分組在用于時間T2的例外E2的例外退出分組與用于時間T5的例外E1的例外返回分組之間發(fā)生。相反,若例外E3在E1狀態(tài)已經(jīng)恢復之后發(fā)生且因此不在例外E2之后加以尾鏈,則用于例外E3的例外進入分組將在追蹤流中于用于E1的例外返回分組之后發(fā)生。然而,如上文論述,為減少追蹤數(shù)據(jù)的數(shù)量,用戶可配置配置寄存器16以控制追蹤模塊6以過濾追蹤分組,例如僅輸出針對例外進入事件而非例外退出或返回的例外追蹤分組。在此情況下,可能不可能單獨地從例外進入分組中檢測到尾鏈情形。舉例而言,如圖6的部分B中所示,在時間T0、T1、T3的例外進入分組不準許使用者判定用于在時間T3的例外E3的例外進入發(fā)生于處理已返回至E1例外處理程序之后,還是在完成用于例外E2的例外處理程序之后被直接尾鏈。通過如圖5中所示在例外分組18中提供尾鏈旗標60,可在不需要輸出關于例外進入、退出及返回的所有分組的情況下指示尾鏈。舉例而言,如圖6的部分B中所示,用于例外E3的例外進入分組可將尾鏈旗標60(TC)設定為1以指示例外E3在例外E2之后加以尾鏈。這意味著即使在存在追蹤分組的過濾時,仍可指示尾鏈情形,其使得在不損失關于尾鏈的信息的情況下使用例外追蹤分組過濾更為實際。因此,盡管在追蹤分組中提供尾鏈位60可能似乎未幫助減少所生成的追蹤數(shù)據(jù)的數(shù)量,但其使得使用例外追蹤分組過濾較為可行而不損失關于尾鏈的信息,且因此在實踐中其允許較為經(jīng)常地使用藉由例外處理事件類型的過濾。此可大大地幫助減少所生成的例外追蹤信息的數(shù)量、減少追蹤緩沖器及追蹤接口的壓力、減少損失追蹤信息的可能性且因此提高輸出的追蹤數(shù)據(jù)的有用性。在此示例中,尾鏈旗標60被編碼在第二有效負載字節(jié)的位[6]中,且當兩個例外被尾鏈時可被設定為1,且若不存在尾鏈則被設定為0。應理解,亦可使用相反的映射(0指示尾鏈且1指示不存在尾鏈)。尾鏈旗標60亦可編碼在分組的其他位中——第二字節(jié)的位[6]僅為一示例。舉例而言,編碼尾鏈旗標60的另一選項可為使用功能編號字段26的保留值0b00以指示存在經(jīng)尾鏈的例外進入。此外,圖6示出一示例,當檢測到在不存在中間狀態(tài)恢復(其用以還原與在先前例外之前執(zhí)行的處理相關聯(lián)的狀態(tài))的情況下已在完成先前例外之后進入用于新例外的例外處理程序時,設定用于例外進入追蹤分組的尾鏈旗標60。然而,亦可能當檢測到將在自當前例外的退出之后采取的下一例外而沒有用于還原與在經(jīng)退出的例外發(fā)生之前執(zhí)行的處理相關聯(lián)的狀態(tài)的中間狀態(tài)恢復時設定用于例外退出追蹤分組的尾鏈旗標60。大體上,配置寄存器16可包括至少一個配置位,其控制追蹤模塊6是否應在檢測到尾鏈時設定尾鏈旗標60。選擇性關閉尾鏈旗標功能可適用于支持可能無法解釋尾鏈旗標60的舊有追蹤分析裝置14或追蹤分析軟件,但當追蹤分析器支持尾鏈旗標60時,激活使用配置寄存器16的此特征仍可幫助改良推導自追蹤流的信息(即使當一些追蹤分組被過濾時)以減少所生成的數(shù)據(jù)的數(shù)量。在其他示例中,可替代地通過以與圖4中所示的相同方法合并例外退出與返回分組來指示尾鏈情形。然而,提供如圖5中的顯式尾鏈旗標60的優(yōu)點為在實際的追蹤情況下,一些追蹤分組可能有時自追蹤流丟失(例如歸因于追蹤緩沖器10溢出),且因此增加顯式尾鏈旗標增加退出-進入序列實際上為尾鏈例外進入而不只是因為時序太緊而導致返回數(shù)據(jù)歸因于緩沖器溢出而被丟棄的退出-返回-進入情形的信心。圖7示出用于通過自例外追蹤分組18完全省略例外編號22以減少包括在追蹤分組中的信息數(shù)量的另一示例。在此示例中,例外追蹤分組18具有1字節(jié)有效負載21,且因此頭部20的位[1:0]的尺寸被設定為0b01。有效負載21在此示例中指定功能編號26及(視需要)尾鏈旗標60。完全省略例外編號可能似乎違反常理,因為表面上此似乎為例外追蹤中所生成的最重要的信息。然而,應認識到,有時執(zhí)行追蹤分析的使用者可能不關注哪些特定例外已發(fā)生,但可能僅希望確定例外發(fā)生的時序或相對頻率。因此,通過提供控制追蹤模塊6是否在例外追蹤分組18中包括例外編號22的配置寄存器16中的位,用戶可在不關注例外類型時減少所生成的追蹤數(shù)據(jù)的數(shù)量,進而減輕追蹤緩沖器10及界面12的壓力。圖8示出另一示例,其中經(jīng)分配用于編碼例外編號的位的數(shù)目可取決于配置寄存器16中的配置信息而變化。上文論述的示例編碼9位例外編號,以使得可指示512種不同類型的例外。然而,這些例外中的一些可以是少見的,或使用者可能僅關注例外類型的某一子集,因此較小的例外編號字段常??赡茏阋灾甘臼褂谜哧P注的大部分類型的例外。舉例而言,在架構的一些版本中,例外編號0至15可對應于架構中定義的硬件中斷(表示諸如復位、各種故障或錯誤、定時器中斷等中斷),而例外編號16及高于16可對應于特定實施例特有的外部中斷或軟件例外。因此,例外編號為0至15的例外可使用如圖8中所示的4位例外編號字段90更有效地編碼,其允許例外編號90與功能編號26兩者適合在1字節(jié)有效負載21內(nèi),以減小追蹤分組的尺寸。例外編號為16或高于16的例外仍可使用圖2中示出的形式的正常追蹤分組追蹤??商鎿Q地,當選擇用尺寸減小的例外編號字段90追蹤時,對例外編號16及高于16的追蹤可完全被抑制。因此,圖8中示出的減小的例外編號字段90在與如上文論述的通過例外編號過濾例外追蹤分組結合時可尤其適用。大體上,配置寄存器16可包括以下配置信息,其控制追蹤模塊6對于例外編號在減小尺寸的字段90內(nèi)適合的例外是生成具有完整尺寸的例外編號字段22還是減小尺寸的例外編號字段90的分組,并且可選地還包括以下配置信息:用于控制追蹤模塊6是否應對于例外編號不在減小尺寸的字段90內(nèi)適合的例外輸出任何追蹤分組。提供減小的例外編號90的另一方式可為通過將例外編號表示為自經(jīng)定義的基準值偏移的形式使用減小的例外編號字段90來編碼在某一范圍的值內(nèi)的例外編號。舉例而言,若基準值為80,則例外編號86可經(jīng)編碼為6的偏移。自基準值的偏移大于可在減小的例外編號字段90中表示的例外編號可使用如圖2中的例外編號的完整編碼??稍谧粉櫮K6中提供范圍比較器用于檢測例外編號是否在可在減小的例外編號字段90中表示的范圍內(nèi)?;鶞手的軌蛴膳渲眉拇嫫?6指定。在一些情況下,亦可指定使用減小的字段90的例外編號范圍的另一上限,或其可自減小的例外編號字段90的尺寸暗示(例如4位字段可指示自基準值的偏移0到15)。配置寄存器16亦可指定啟用或禁止例外編號的基于偏移的編碼。追蹤電路亦可支持用于壓縮所生成的例外追蹤數(shù)據(jù)的數(shù)量而不損失信息的壓縮模式。兩個連續(xù)的例外追蹤分組指定相同的例外編號可為相對常見的。舉例而言,如圖3中所示,在時間T1及T2,兩個連續(xù)的分組對于例外進入及退出針對例外編號E2生成。類似地,在圖6中,在時間T5及T6,兩個連續(xù)的分組指定相同的例外編號。因此,當處于壓縮模式中時,當例外編號與最近一個經(jīng)輸出的分組相同時,追蹤模塊6可自例外追蹤分組18的有效負載21省略例外編號22??稍谧粉櫮K6中提供比較器用于比較當前事件的例外編號與最近一個例外編號,且當兩者相同時抑制例外編號的輸出。舉例而言,當例外編號被省略時,可使用圖7中示出的分組格式。當追蹤分析器14接收到不具有例外編號22的分組時,其可假定例外編號22與前一個具有例外編號的分組相同??墒褂门渲眉拇嫫?6中的配置信息設定選擇啟用及禁用壓縮模式。針對緊接的在先例外編號匹配可提供一些壓縮,但其可能限于某些情形,諸如具有在例外的嵌套設定內(nèi)的最高等級的優(yōu)先權的例外的例外進入及退出,或例外返回至給定例外,隨后當不存在中間的例外事件時自該例外退出。然而,對于許多例外,用于給定例外的例外進入及退出分組可通過具有不同例外編號的追蹤分組分離,因為給定例外本身被中斷(例如,參見圖3中的例外E1)。為提高所達成的壓縮的量,可通過追蹤模塊維持存儲結構以追蹤多個近期遭遇的例外編號,且若當前例外編號與這些近期例外編號中的任一者匹配,則可自當前追蹤分組省略此例外編號。舉例而言,追蹤模塊可維持先前例外編號值的較小堆棧。在例外進入時,傳入例外的例外編號可被推送至堆棧上。在例外退出時,可將在堆棧頂部的例外編號與當前例外編號比較,且若其相同,則此例外編號可自當前例外追蹤分組省略,且匹配的例外編號可隨后自堆棧彈出。此利用以下事實:當存在例外的嵌套時,具有相繼更高優(yōu)先權的一系列例外可以進入及隨后與其進入的次序相反的次序退出。因此,有效提供后入先出的存儲結構的堆棧結構可極適用于以與遭遇例外編號的次序相反的次序解開例外編號。類似地,若給定處理不斷地被較高優(yōu)先權例外中斷,則至該同一處理的各返回可導致具有相同例外編號的分組且堆??稍试S此等返回分組中的一些省略例外編號。以下展示一示例:·例外返回至E0(完整分組,將0推至堆棧)·例外進入至E1(完整分組,將1推至堆棧)·例外自E1退出(省略例外編號的減小的分組,由于與在堆棧頂部的先前編號匹配,將1自堆棧彈出)·例外返回至E0(省略例外編號的減小的分組,由于與在堆棧頂部的先前編號匹配,將0自堆棧彈出)。追蹤分析器14可維持對應的堆棧數(shù)據(jù)結構用于確定用于各分組的例外編號。堆棧數(shù)據(jù)結構可維持在硬件中或通過使用軟件以維持類似的數(shù)據(jù)結構。當接收到指定例外編號22的分組時,例外編號可被推至堆棧。當接收到不指定例外編號的分組時,在堆棧頂部的例外編號被彈出且被分配至該分組。以此方式,當選擇壓縮模式時,可減小追蹤數(shù)據(jù)的數(shù)量。另一用于實施壓縮模式的示例在圖9中示出。追蹤模塊6可維持先進先出(FIFO)結構100或圓形緩沖器以用于存儲最近遭遇的例外編號的特定編號。每次檢測到新的例外處理事件,一系列比較器102比較新的例外編號EN與存儲在FIFO100中的各先前例外編號。若先前例外編號中的任一者與新的例外編號EN匹配,則此例外編號自下一追蹤分組18省略,且標識符104被包括在追蹤分組18的有效負載21中以識別FIFO100的哪一條目含有匹配的例外編號。舉例而言,圖9示出一示例,其中FIFO100包括4個條目且2位標識符字段X[1:0]104被編碼在1字節(jié)有效負載的位[1:0]中。應理解,可存在其他編碼先前例外編號的標識符的方式,此標識符的先前例外編號與新的例外編號匹配。在已將先前例外編號與當前例外編號比較后,F(xiàn)IFO100中的最舊的例外編號隨后被新的例外處理事件的例外編號重寫。寫入指針106可追蹤后一例外編號應寫入的位置且可在每次新的例外編號被寫入時遞增。當寫入指針106達至緩沖器的末尾時,下一增量導致其跳回起點,以使得寫入指針106圍繞緩沖器一圈一圈地轉圈。因此,F(xiàn)IFO100不斷地被更新以記錄最近的例外編號。可取決于實施要求選擇FIFO100的尺寸以權衡所達成的壓縮量與維持較大緩沖器所需的能量或電路面積。此外,追蹤分析器14可維持類似的FIFO數(shù)據(jù)結構(使用如圖9中的硬件緩沖器或藉由使用軟件以確定對應的例外編號值FIFO數(shù)組)。當追蹤分析器14接收到不具有例外編號的分組時,其可使用標識符字段104以識別哪一先前例外編號與當前例外處理事件相關聯(lián)。因此,壓縮模式通過避免在追蹤流的多個分組中重復相同的例外編號而允許減小例外追蹤信息的總量。配置寄存器16可用于選擇壓縮模式是否有效或無效。上文已描述多種用于減少追蹤量的不同的技術。此等技術中的任何一或多者均可應用于給定實施例。舉例而言,在一些系統(tǒng)中,可能希望基于例外處理事件的類型(進入、退出或返回)實施追蹤分組的過濾但不提供其他例外追蹤減少技術中的任一者。其他系統(tǒng)可實施上文論述的技術的其他子集,其系取決于當與用戶預期使用對應功能的可能性相比較時,配置寄存器16中的配置控制可用空間的數(shù)量及實施此控制的相對復雜性以及硬件。因此,不必要在給定系統(tǒng)中實施上文論述的技術的全部。圖10示出數(shù)據(jù)處理設備2的另一示例。與在圖1中相同的組件以相同的參考數(shù)字示出。在圖10的示例中,追蹤模塊6不考慮配置寄存器16的例外追蹤配置信息而僅輸出默認包括完整的例外追蹤信息的初始追蹤流8。提供下游追蹤過濾器120,其取決于配置寄存器16中的例外追蹤配置信息使用上文展示的技術中的任一者選擇性丟棄自追蹤模塊6接收到的一些追蹤分組或修改追蹤分組中包括的信息。因此,在一些情況下,取決于配置信息過濾、修改或壓縮例外追蹤信息的追蹤電路120可實際上不監(jiān)視處理電路4本身,但可僅作用于由獨立的追蹤模塊6生成的追蹤流。圖11示出在處理系統(tǒng)中追蹤例外處理事件的方法。在步驟200,追蹤電路6、120檢測到例外處理事件。在追蹤模塊6的情況下,此可藉由直接監(jiān)視處理電路4,而對于追蹤過濾器120,例外處理事件可在關于給定例外處理事件的追蹤分組在來自追蹤模塊6的初始追蹤流8被接收到時被檢測到。例外處理事件可為關于通過處理電路4處理例外的任何事件,諸如例外本身的發(fā)生(例如對于例外或中斷信號的斷言)、進入例外處理程序、自例外處理程序退出或在完成例外處理程序之后返回至某一先前處理。在步驟202,追蹤電路6、120判定寄存器16中的配置信息是否指定例外追蹤被啟用。若沒有被啟用,則在步驟204,抑制用于此事件的例外追蹤分組的輸出且方法返回至步驟200以等候另一例外處理事件。當例外的輸出被抑制時,不輸出分組。另一方面,若啟用例外追蹤,則在步驟205,追蹤電路6、120判定寄存器16中的配置信息是否指定當前檢測到的類型的例外處理事件已經(jīng)被選擇用于追蹤。舉例而言,配置寄存器可僅指定例外處理事件的子集(例如僅退出,或退出及進入)且可不追蹤其他類型的事件。若當前例外處理事件不為經(jīng)選擇的類型的事件,則再一次在步驟204,抑制例外追蹤分組的輸出。若當前例外處理事件被選擇用于追蹤,則在步驟206,追蹤電路6、120判定當前例外類型是否已經(jīng)選擇用于追蹤。配置寄存器16可指定要追蹤的例外類型的某些子集(例如僅例外編號0至15,或僅例外編號4)。若當前例外不為經(jīng)選擇的例外類型,則再一次,在步驟204抑制例外追蹤分組的輸出??傮w而言,步驟205及206實施分組過濾,其中若分組與指定例外類型或例外處理事件類型無關,則整個分組可被省略。另一方面,若在步驟206確定當前例外類型被選擇進行追蹤,則將對于此例外處理事件輸出至少一些追蹤信息。在步驟208,追蹤電路6、120基于寄存器16中的配置信息判定是否將用于當前例外處理事件的分組與后一例外處理事件分組合并。舉例而言,寄存器16可指定是否如上文論述合并例外退出與返回分組。若合并分組,則在步驟210,關于當前例外處理事件的信息(例如例外編號)被保存在存儲組件中,同時等候檢測到后一例外處理事件,方法返回至步驟200。否則,方法繼續(xù)至步驟212,其中追蹤電路6、120基于配置信息判定是否啟用對不同例外處理事件的追蹤分組的合并,且若啟用,則是否存在保存在步驟210中的來自先前例外處理事件的任何信息。若啟用合并且包括有先前信息,則在步驟214,輸出合并的例外追蹤分組,其包括關于先前與當前例外處理事件兩者的信息。舉例而言,此可為上文在圖4中示出的合并的例外退出與返回分組。方法隨后返回至步驟200用于檢測下一例外處理事件。另一方面,若未啟用合并,或不存在來自先前事件的信息,則在步驟216,追蹤電路6、120基于配置寄存器16判定是否啟用尾鏈旗標60,且若啟用,則當前例外處理事件是否為尾鏈例外進入或退出事件。當處理電路4完成用于第一例外的例外處理程序且在還原與在第一例外之前經(jīng)執(zhí)行的處理相關聯(lián)的任何狀態(tài)之前開始用于第二例外的例外處理程序時,發(fā)生尾鏈例外退出或進入。若啟用尾鏈旗標60且當前事件為尾鏈例外進入或退出,則在步驟218,對于下一待輸出的分組設定尾鏈旗標。否則,省略步驟218。在步驟220,追蹤電路6、120基于配置寄存器16判定是否在例外追蹤分組中包括當前例外的例外編號。若不包括,則在步驟222輸出不具有例外編號22的例外追蹤分組。方法隨后返回至步驟200。若包括例外編號,則在步驟224,追蹤電路6、120根據(jù)配置寄存器16判定是否啟用壓縮模式,且若啟用,則用于當前例外的例外編號是否與用于先前例外追蹤分組的例外編號相同。先前例外追蹤分組可在例外追蹤分組前一個,或可為例外編號被記錄在諸如上文所論述的示例中的堆棧或FIFO緩沖器的存儲結構中的先前例外追蹤分組。若當前例外編號與先前例外追蹤分組的例外編號相同且啟用壓縮模式,則在步驟222,再一次輸出不具有任何例外編號的例外追蹤分組。在FIFO緩沖器100用于記錄多個之前的例外編號的情況下,在步驟222的例外追蹤分組輸出亦可包括標識符104,其先前例外編號匹配當前例外編號。若未啟用壓縮模式,或當前例外編號不與任何先前的例外編號匹配,則在步驟226,追蹤電路6、120判定配置寄存器16是否指定使用減小尺寸的例外編號,且若使用,則當前例外是否具有能夠由此減小的尺寸字段表示的例外編號。若配置寄存器16啟用減小的尺寸字段且較小的字段可容納當前例外編號,則在步驟228,例外追蹤分組經(jīng)輸出具有如上文圖8的示例的減小的例外編號字段90。若配置信息不準許減小尺寸的例外編號字段或當前例外的例外編號太大而無法由減小的字段表示,則在步驟230,例外追蹤分組被輸出為具有完整尺寸的例外編號字段(例如,如在圖2中)。在所有情況下,方法隨后返回至步驟200以等候下一例外處理事件。盡管步驟208及210示出了這樣的示例,其中信息經(jīng)保存同時等候后一例外處理事件以使得其可與用于該事件的分組合并,但在一些情況下,即使后一例外處理事件尚未發(fā)生,亦可提前輸出經(jīng)保存的信息。舉例而言,盡管在第二例外處理事件發(fā)生之前合并用于兩個例外處理事件的分組可為優(yōu)選的,但可能發(fā)生一些其他事件使得不適合等候第二例外處理事件。舉例而言,若在第二例外處理事件發(fā)生之前禁止追蹤,則最佳方案可為輸出關于第一例外處理事件的經(jīng)保存的信息以使得可保存直至追蹤被禁止時的活動。類似地,為防止關于第一例外處理事件的信息在等候可能永遠不會發(fā)生的第二例外處理事件時經(jīng)無限期地保存,可施加逾時以使得若第二例外處理事件不在第一例外處理事件的給定時間段內(nèi)發(fā)生,則單獨輸出關于第一例外處理事件的信息。此外,在一些情況下,可能僅對于例外處理事件的一些序列支持合并,且因此在第二例外處理事件為支持合并的類型的情況下在保存關于第一例外處理事件的信息之后,若下一例外處理事件隨后不為支持的類型,則關于第一例外處理事件的信息可以獨立追蹤分組的形式輸出而不等候任何其他例外處理事件。圖11示出上文論述的所有追蹤過濾及壓縮技術,但應理解,并非一些可被省略且此等技術的任何子集可用于給定實施例。舉例而言:·若不支持基于例外處理事件類型的過濾,則始終在步驟205之后采取「是」分支;·若不支持基于例外類型的過濾,則始終在步驟206之后采取「是」分支;·若不支持分組的合并,則始終在步驟208及212之后采取「否」分支;·若不支持尾鏈旗標,則始終在步驟216之后采取「否」分支;·若不支持省略例外編號,則始終在步驟220之后采取「是」分支;·若不支持壓縮模式,則始終在步驟224之后采取「否」分支;及·若不支持減小的例外編號字段,則始終在步驟226之后采取「否」分支。應理解,上文展示的分組尺寸及格式僅為示例,且可能存在許多可將類似信息編碼在追蹤流中的方式。大體上,例外追蹤配置信息可控制當啟用例外追蹤時生成多少例外追蹤數(shù)據(jù)。盡管上文論述的示例包括用以完全地選擇性啟用或禁用對例外處理事件的追蹤的配置,但其他系統(tǒng)可永久地啟用例外追蹤。在此情況下,可始終將例外追蹤視為啟用,然而所生成的例外追蹤數(shù)據(jù)的數(shù)量可取決于配置存儲組件16中的配置信息設定而變化。盡管上文中的圖1示出配置信息被存儲在配置寄存器16中的示例,但大體上,例外追蹤配置信息可以多種方式實施。舉例而言,此信息可在一些情況下被存儲在芯片外或在處理電路4的通用緩存器內(nèi)而非在專用配置寄存器16中。在一些情況下,至少一些配置信息在制造或實施設備2期間可為硬連線式的以使得一旦經(jīng)部署之后不可能將配置信息程序化(然而,在制造期間提供具有選擇不同的固線式配置的選項的追蹤架構可仍為有用的)。盡管圖1示出包括追蹤緩沖器10與追蹤接口12兩者的示例,但其他示例可省略這些組件中的一者或兩者。舉例而言,可將追蹤數(shù)據(jù)輸出至處理設備2內(nèi)的可拆離的存儲裝置,諸如內(nèi)存卡,且隨后可移除此內(nèi)存卡以將數(shù)據(jù)傳送至追蹤分析器14中而非使其在界面12上流送。此外,可省略追蹤緩沖器10且僅空中地在接口12上輸出所生成的追蹤流8。然而,包括緩沖器10幫助自接口的輸出去耦追蹤流的生成以使得即使追蹤接口12具有小于生成追蹤流8的速率的帶寬,仍可將一些信息保存在追蹤緩沖器中以避免信息損失。盡管圖1示出追蹤模塊6被包括在與其所監(jiān)視的處理電路4相同的電路中的示例,但在其他情況下,可能以外部追蹤模塊6的形式實施追蹤電路,外部追蹤模塊6自設備2接收關于處理電路4的處理活動的信息且生成指示處理活動的各種態(tài)樣的追蹤分組流。然而,通過在芯片上包括追蹤模塊6,可能探測處理活動的更詳細的方面。如圖1中所示,追蹤分析器14包括接口300以接收用于處理設備2的追蹤流,以及分析電路302用于譯碼及分析接收到的追蹤流。在一些情況下,可在專用硬件中實施追蹤分析器14。硬件可為如圖1中所示的外部裝置??商鎿Q地,操作經(jīng)追蹤的目標數(shù)據(jù)處理設備2可包括機載追蹤分析硬件14用于分析其自身的追蹤數(shù)據(jù)且可能基于追蹤數(shù)據(jù)的分析調(diào)節(jié)處理電路4的操作。舉例而言,硬件可基于追蹤分析的結果改變處理電路4的操作模式或重編譯在處理電路4上執(zhí)行的軟件。或者,追蹤分析器14可包括通用計算機,其中分析電路302包括在處理器上執(zhí)行的軟件用于控制處理器以分析追蹤流。圖12示出由追蹤分析器14執(zhí)行以分析來自處理設備2的追蹤數(shù)據(jù)輸出的方法。在步驟320,在接口1300上接收來自處理設備2的例外追蹤數(shù)據(jù)。在步驟322,分析電路302檢測若干可用的編碼格式中的何者為用于編碼接收到的例外追蹤數(shù)據(jù)的當前編碼格式。舉例而言,分析電路302可讀取各例外追蹤分組的分組頭部20以確定該分組的格式。舉例而言,基于頭部20,分析電路302可判定究竟是否包括發(fā)生的例外的例外編號22,或例外編號是如圖2中所示的完整尺寸例外編號還是如圖8中所示的減小尺寸的例外編號。分析電路302亦可基于頭部20判定分組包括用于單個例外處理事件(如在圖2中)或多個例外處理事件(如在圖4中)的例外編號。在步驟324,分析電路302根據(jù)檢測到的格式譯碼例外追蹤數(shù)據(jù)。舉例而言,分析電路302基于經(jīng)識別的格式讀取例外編號22及功能編號26。當如上文針對圖9所論述啟用追蹤壓縮模式時,當接收到包括標識符字段104的分組時,分析器14可基于前一例外編號重建例外編號22。在已確定例外編號22及功能編號26后,分析電路302可在追蹤程序的執(zhí)行的程序日志中記錄此信息。舉例而言,程序日志可包括發(fā)生的給定類型的例外的數(shù)目計數(shù),其可基于經(jīng)譯碼的例外追蹤信息更新。因此,追蹤分析器14可基于追蹤頭部識別若干例外追蹤格式中的何者已用于編碼并且相應地譯碼與例外有關的信息。在另一示例中,設備可包括:用于輸出指示在監(jiān)視處理電路的處理活動期間檢測到的例外處理事件的例外追蹤數(shù)據(jù)的裝置;以及用于維持例外追蹤配置數(shù)據(jù)的裝置,此例外追蹤配置數(shù)據(jù)用于控制由用于輸出的裝置進行的例外追蹤數(shù)據(jù)的輸出;其中:當啟用例外追蹤數(shù)據(jù)的輸出時,用于輸出的裝置被配置為取決于例外追蹤配置數(shù)據(jù)選擇輸出多少例外追蹤數(shù)據(jù)。在另一示例中,設備可包括:用于接收例外追蹤數(shù)據(jù)的裝置,此例外追蹤數(shù)據(jù)指示在監(jiān)視處理電路的處理活動期間檢測到的例外處理事件;以及用于根據(jù)例外追蹤數(shù)據(jù)檢測多個編碼格式中的哪一編碼格式為編碼例外追蹤數(shù)據(jù)的當前編碼格式并且用于根據(jù)該當前編碼格式譯碼例外追蹤數(shù)據(jù)的裝置。在本申請案中,詞語“被配置為”用于表示設備的組件具有能夠進行經(jīng)定義的操作的配置。在此上下文中,“配置”表示硬件或軟件的互連的布置或方式。舉例而言,設備可具有提供經(jīng)定義的操作的專用硬件,或處理器或其他處理裝置可經(jīng)程序化以執(zhí)行功能?!氨慌渲脼椤辈话凳拘枰匀魏畏绞礁淖冊O備組件以便提供經(jīng)定義的操作。盡管已在本文中參考隨附圖詳細描述本發(fā)明的說明性實施例,但應理解,本發(fā)明不限于那些精確實施例,且本領域技術人員可在其中做出各種變化及修改而不偏離如由所附權利要求所定義的本發(fā)明的范圍及精神。當前第1頁1 2 3