高速程序跟蹤的製作方法
2023-08-05 00:42:26
專利名稱::高速程序跟蹤的製作方法
技術領域:
:本發明一般涉及程序跟蹤,更具體地說,涉及提供數據壓縮以輔助高速程序跟蹤的方法和裝置。
背景技術:
:程序跟蹤器提供了跟蹤正在微處理器、數位訊號處理器、有限狀態機或其它處理器設備(在此統稱為「處理器」)上運行程序的執行序列的能力。典型地,通過維護來自程序計數器(PC)(例如,與執行的程序指令對應的地址或地址的表達)的程序計數值(即程序跟蹤)的日誌(log)來跟蹤執行序列。為了調試程序或者另外地對其執行進行分析,日誌可以是機器解釋成文本的格式、圖形格式或者其它人類可讀的格式。程序跟蹤提供了對程序的執行序列的動態視圖。這種視圖可以在改善程序和編譯器的效率或速度、研究程序邏輯、研究編譯用於處理器設備程序的編譯器的效率或運行的方面上有用。因為程序計數值對於每個程序指令可以包括16比特或者甚至32比特的地址數據,並且因為新指令通常在處理器設備的每個時鐘周期上出現,所以,只是通過輸出純程序計數值來跟蹤程序的方式會很繁重,且將需要大量的物理資源。例如,如果將從在其上面實現跟蹤器的集成電路中輸出每個PC值,則可能需要大量的專用引腳(結合相關的電路)。因為除了程序計數器輸出之外,程序跟蹤器可能復用程序計數值以及其它數據值(例如,提供了解執行序列的數據寄存器值),所以可能引起進一步的需求。除了物理資源需求之外,大量數據的輸出導致了過度的功率需求,以生成用於傳送數據所需的信號。因此,為了使用合理數量的物理資源來獲得程序跟蹤器能力,可以使程序計數值串行化(即,32比特程序計數值被緩衝,並以連續的8比特分段形式輸出)和可以實現壓縮方案。例如,在這些方案中,因為最普通的程序流事件是指令的序列執行(即,程序計數值根據每個接續的指令而遞增1來至下一行的程序「編碼」),所以程序跟蹤器輸出表示程序計數值中的單個遞增已發生的值,而不是輸出整個程序計數值。此外,在不連續的情況中,程序跟蹤器輸出位移值;即,程序跟蹤器提供表示不連續執行之前的程序計數器值(也稱為不連續來源程序計數器值)與不連續執行之後的程序計數器值(也稱為不連續目的程序計數器值)之間的符號差分(signeddifference)的標示,而不是提供不連續執行之後的純程序計數值。術語「不連續」在此定義為在程序中具有非連續程序計數值的指令的執行;例如,不連續可能由於跳轉、調用或分支的執行而引起。雖然這種程序跟蹤器能力可以降低用於跟蹤程序執行所需的數據,但是,傳統壓縮方案會引起了數據的丟失,因而造成了不完整的程序跟蹤。因為程序跟蹤器所輸出的數據量是過量的,所以可能發生數據丟失。例如,由於數據量的原因,可能致使諸如串行化緩衝器的內部緩衝器出現溢出。因此,需要在指定用於跟蹤的資源與數據丟失的可接受水平之間尋求一種折衷方案。所需要的是一種具有改善的壓縮方案的程序跟蹤器,以提供較低的數據丟失實例。此外,所需的是一種具有降低的物理資源需求和降低的功率需求的程序跟蹤器。發明概述根據本發明的各個方面的程序跟蹤器提供了相對較高的壓縮因子。本發明的一些方面涉及提供了線性遞增運行長度和循環壓縮的程序跟蹤器。本發明的第一方面是一種用於跟蹤在處理器上執行程序的執行序列的程序跟蹤器,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,程序跟蹤器包含程序計數定序器,其在操作中連接至程序計數器,以接收來自程序計數器的當前程序計數值,以及還接收程序中的關於不連續的通知,程序計數定序器進行響應而生成當前不連續目的計數值;以及線性遞增發生器模塊,其在操作中連結至程序計數定序器,以接收當前程序計數值和當前不連續目的計數值,以及響應於程序中的關於不連續的通知而計算線性遞增運行長度和選擇性地提供線性遞增運行長度值。在一些實施例中,程序跟蹤器進一步包含位移發生器模塊,其在操作中連結至程序計數定序器,以接收當前程序計數值和先前程序計數值,以及進行響應而計算位移值。可選地,位移發生器模塊響應於程序中的關於不連續的通知而選擇性地提供位移值。本發明的第二方面是一種用於跟蹤在處理器上執行程序的執行序列的程序跟蹤器,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,程序跟蹤器包含程序計數定序器,其用於接收用於接收來自程序計數器的當前程序計數值和保留先前程序計數值,以及確定當前不連續來源計數值和當前不連續目的計數值;以及循環計數模塊,其連結至程序計數定序器,以接收當前不連續來源計數值和當前不連續目的計數值,以及保留第一先前不連續來源計數值和第一先前不連續目的計數值,以及通過把當前不連續來源計數值和當前不連續目的計數值與第一先前不連續來源計數值和第一先前不連續目的計數值進行比較,來對至少第一循環的循環執行進行計數。本發明的第三方面是一種用於跟蹤在處理器上執行程序的執行序列的方法,其中,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,該方法包含響應於關於不連續的通知而生成當前不連續目的計數值;以及根據當前不連續目的值和當前程序計數值,計算線性遞增運行長度。跟蹤執行序列的方法可以進一步包含響應於程序中的關於不連續的通知而選擇性地提供線性遞增運行長度值。本發明的第四方面是一種用於跟蹤在處理器上執行程序的執行序列的方法,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,該方法包含確定當前不連續來源計數值和當前不連續目的計數值;以及通過把當前不連續來源計數值和當前不連續目的計數值與第一先前不連續來源計數值和第一先前不連續目的計數值進行比較,來對至少第一循環的循環執行進行計數。附圖的簡要說明現在將參考附圖通過示例對本發明的示出性而非限制性的實施例進行描述,在附圖中,不同附圖中的相同參考數字用於表示相同的組件。在附圖中圖1是程序跟蹤器系統和執行將被跟蹤的程序的處理器的功能性框圖;圖2是根據本發明的至少一些方面的程序跟蹤器的示例性實施例的功能性框圖;圖3是結合適用於根據本發明的程序跟蹤器使用的壓縮方案的一個示例而使用的編碼值的表;圖4是根據本發明的至少一些方面的程序跟蹤器的示例性實施例的示意性框圖;圖5A是含有示例性壓縮數據結構的緩衝器的示意性示出;以及圖5B示出了包括集成數據結構的存儲器。詳細描述圖1是程序跟蹤器系統100和執行將被跟蹤程序的處理器150的功能性框圖。處理器150可以是任何設備,其能夠執行程序指令且帶有用於保留關於所執行的程序指令的程序計數值(例如,與所執行的程序指令對應的地址或地址的表達)的程序計數器(PC)152。例如,處理器150可以是微處理器、數位訊號處理器或者有限狀態機。優選地,處理器150生成關於不連續的通知156,以表示程序執行中的不連續。例如,對程序執行中的不連續的通知可以在執行中斷、分支、調用、返回指令或零開銷硬體循環的時候生成。另一種選擇是,程序跟蹤器110或者另一資源能夠把緊靠前面的PC值與當前PC值進行比較,以檢測和信號通知不連續。程序跟蹤器系統100包括程序跟蹤器110,以接收來自程序計數器152的當前程序計數值154和關於不連續的通知156。當前程序計數值154可以為任意長度m(例如16比特或32比特)。如下面所更加詳細的描述,程序跟蹤器110生成程序跟蹤的壓縮輸出111,其包括一個或多個位移值112和一個或多個線性遞增運行長度值113。可選地,可以包括數據控制器120,以允許程序跟蹤器系統100輸出補充數據153,其可以與壓縮輸出111一起被復用。例如,補充數據153可以包括在執行被跟蹤程序期間由處理器150生成的定時信息或數據值。可以提供存儲器設備130來存儲輸出114,以及包括輸出設備140來啟動對輸出114的分析。可以提供解壓縮器145來對壓縮輸出114進行解壓縮,從而重構所執行的指令的序列。展示(Presentation)設備140可以是諸如陰極射線管或液晶顯示屏的顯示設備、列印設備或者任何其它的展示設備。典型地,輸出114具有比程序計數值154長度m(例如32比特)短的長度n(例如8比特)。長度的減小可能是由於壓縮以及數據的串行化而引起的。圖2是根據本發明的至少一些方面的程序跟蹤器110的示例性實施例的功能性框圖。程序跟蹤器110包括程序計數定序器212、位移發生器模塊220、線性遞增發生器模塊230和循環計數模塊240。「程序計數值」在此也稱為「計數值」或「PC值」。程序計數定序器212接收來自程序計數器152(如圖1所示)的當前PC值154和關於不連續的通知156,並且提供當前程序計數值154、先前PC值214、當前不連續目的PC值216和當前不連續來源PC值218。當前不連續目的PC值216和當前不連續來源PC值218分別指最接近當前的不連續的不連續來源PC值和不連續目的PC值。線性遞增發生器模塊230在操作中被連結至程序計數定序器212,以接收先前程序計數值214和當前不連續目的程序計數值216,並且包括線性線性遞增發生器232,以計算線性遞增運行長度值238。詞組「線性遞增運行長度值」在此定義為等於在最接近當前的不連續和先前的不連續之間所執行的程序指令數。應當理解,結合已知PC值的線性遞增運行長度值形成一部分程序跟蹤的壓縮表達。可以包括線性遞增壓縮器234來壓縮線性遞增運行長度值238。如下所述,根據遞增運行長度值238的量值(magnitude),線性遞增壓縮器234提供所選擇的數據字數來表達線性遞增運行長度值。可選地,壓縮器234可以使線性遞增運行長度值串行化。此外,線性遞增壓縮器234可以提供與線性遞增運行長度值中的所選擇的數據字數對應的字計數263。可選地,緩衝器236可以被連結至線性遞增發生器模塊230的輸出,以暫時存儲線性遞增運行長度值238。例如,緩衝器236可以是先進先出(FIFO)緩衝器。線性遞增運行長度值238可以在緩衝器236中累加,例如,由於壓縮器234對數據的串行化或者因為在程序跟蹤器中包括數據控制器120(如上面圖1所示),因此當較高優先權數據經由數據控制器120輸出時,需要緩衝線性遞增運行長度值238。在一些實施例中,線性遞增發生器模塊230計算線性遞增運行長度值,作為對從程序計數定序器212接收到的每個先前程序計數值214的輸出。即,對於每個當前程序值,線性遞增值增加1。但是,因為只有在不連續的時候存在的線性遞增運行長度值是保留精確程序跟蹤所需的,所以在程序跟蹤器110的一些實施例中,向線性遞增模塊230提供了關於不連續的通知156,以允許線性遞增模塊230響應於對程序中的不連續的通知來選擇性地提供線性遞增運行長度值。關於不連續的通知156可以在很多方式中使用,以防止線性遞增模塊230在不存在關於不連續的通知的時候提供線性遞增運行長度值。例如,緩衝器236可以被配置成只在收到關於不連續的通知156的時候存儲運行長度值,從而丟棄其它線性遞增運行長度值。位移發生器模塊220包括位移發生器222且在操作中連結至程序計數定序器212,以接收當前程序計數值154和先前程序計數值214。通過計算當前程序計數值154和先前程序計數值214之間的差,位移發生器222計算出與處理器150(如上面圖1所示)所執行程序的指令執行序列對應的位移值228。在程序跟蹤器110的一些實施例中,位移發生器模塊220為從程序計數定序器212接收的每個當前程序計數值154來計算位移值。但是,因為只有在不連續的時候存在的位移值是保留精確程序跟蹤所需的,所以在程序跟蹤器110的一些實施例中,向位移發生器模塊220提供了關於不連續的通知信號154,以響應於對程序中的不連續通知而選擇性地提供位移值228。即,如果已收到關於不連續的通知,則位移值228隻從位移發生器模塊220中輸出。關於不連續的通知154可以在很多方式中使用,以防止位移發生器模塊220在不存在關於不連續的通知的時候提供位移值。例如,緩衝器226可以被配置成只在收到關於不連續的通知256的時候存儲位移值,可以防止壓縮器224提供輸出。另一種選擇是,可以防止復用器270發送位移值。可以包括位移壓縮器224來壓縮位移值228。如下所述,位移壓縮器224根據位移值228的量值來提供所選擇的數據字數。可選地,位移壓縮器224可以使位移數串行化據。此外,位移壓縮器224可以提供與所選擇的數據字數對應的字計數262。可選地,緩衝器226可以被連結至位移發生器模塊220的輸出,以暫時存儲位移值228。例如,緩衝器226可以是先進先出(FIFO)的。位移值228可以在緩衝器226中累加,例如,由於壓縮器224對數據的串行化或者因為在程序跟蹤器中包括數據控制器120(如上面圖1所示),因此當較高優先權數據經由數據控制器120輸出時,需要緩衝位移值228。如下面參考圖5所描述,典型地,數據控制器120(可從圖1中看到)從緩衝器226和236中成對地讀取位移值228和線性遞增運行長度值238,其包括一個位移值和一個對應的線性遞增運行長度值。可選地,可以向位移發生器模塊220提供信號226,信號226表示給定的不連續是由帶有結合有固定程序計數器值的目的地址的指令(例如,帶有已知目的地址(帶有已知程序計數器值)的跳轉或調用)而生成;在收到信號226時,可以消除(suppress)位移值,且壓縮器224可以在輸出228上提供空值(即下面圖3所示的302)。在一些實施例中,數據控制器120忽略空值,使得沒有浪費時間在處理這個空值上。本領域的普通技術人員應當理解,重構程序執行序列包括這種被消除的位移值,必須為程序給出參考,以確定合適的位移值。循環計數模塊240至少包括內循環計數器242。循環計數模塊240被連結至程序計數定序器212,以接收當前不連續來源計數值218和當前不連續目的計數值216。另外,循環計數模塊240保留第一先前不連續來源計數值245和第一先前不連續目的計數值246。通過把當前不連續來源計數值218和當前不連續目的計數值216與第一先前不連續來源計數值245和第一先前不連續目的計數值246進行比較,循環計數器242對至少第一循環的循環執行進行計數。在確定當前不連續來源計數值218和當前不連續目的計數值216分別等於第一先前不連續來源計數值245和第一先前不連續目的計數值246時,計數寄存器249進行遞增。可選地,循環計數模塊240可以包括外循環計數器243,以對第二循環的循環執行進行計數。在帶有外循環計數器243的實施例中,循環計數器模塊240保留第二先前不連續來源計數值247和第二先前不連續目的計數值248。在確定當前不連續來源計數值218和當前不連續目的計數值216分別等於第二先前不連續來源計數值247和第二先前不連續目的計數值248時,計數寄存器241進行遞增。雖然只對內循環計數器和外循環計數器進行了討論,但是帶有多於兩個循環計數器的程序跟蹤器也處於本發明的範圍之內。可以包括內循環計數壓縮器244和/或外循環壓縮器254,以分別壓縮內循環計數和外循環計數。內循環計數壓縮器244和外循環計數壓縮器254可以根據循環計數248的量值而提供所選擇的數據字數。此外,循環計數壓縮器244和254提供字計數251和245,每個均分別與內循環計數和外循環計數中的數據字數對應。如下面參考圖4所描述,使用復用器270和272,內循環計數和外循環計數可以分別存儲緩衝器226和236中。復用器272用於在緩衝器260中存儲字計數262、263、245和251中的每一個。圖3是結合適用於根據本發明的程序跟蹤器使用的壓縮方案的一個示例而使用的編碼值的表。編碼值304、308和310可以用於對線性遞增值進行編碼。在示例性壓縮方案中,根據線性遞增值的量值,所選擇的字數用於表達線性遞增值。前綴(prefix)304a、308a和310a存在於每個編碼值304、308和310中,每個前綴均表達字數,該字數表達線性遞增值。符號比特308b和310b也存在於每個編碼值308和310中。編碼值306、308、310和312可以用於對位移值進行編碼。在示例性壓縮方案中,根據位移值的量值,所選擇的字數用於表達位移值。前綴306a、308a、310a和312a存在於每個編碼值306、308、310和312中。這些前綴表達字數,該表達線性遞增值。符號比特306b、308b、310b和312b存在於每個編碼值306、308、310和312中;因為不連續可能是正的不連續或者負的不連續,所以符號比特用於表示正或負不連續方向性。編碼值318和320可以用於分別表達內循環計數值和外循環計數值。在示出的示例性壓縮方案中,使用固定的字計數(即,沒有提供壓縮);但是,應當理解,可以提供循環計數壓縮。例如,類似於上述的壓縮方案,根據循環計數的量值,可以使用所選擇的字數來表達循環計數值。如果計數為零或者在如上所述位移值被消除的情況中,可以使用編碼值302(在此也稱為空值)。在位移消除的情況中,編碼值302可以由壓縮器224輸出,因為在如下面所討論的一些實施例中,位移值和線性遞增值可以由數據控制器120(如上面圖1所示)成對地交替輸出;因此,編碼值302操作為佔位符。在一些實施例中,編碼值302由數據控制器120識別,並被丟棄而沒有被發送。除了壓縮值之外,壓縮器224、234、244和254可能需要提供純程序計數器值。例如,在位移值或線性遞增運行長度值太大的情況中(例如,位移發生器模塊220或線性遞增發生器模塊230中的寄存器被致使溢出),對應的壓縮器224和234輸出包含純PC值的編碼值314。同樣,在緩衝器226和236中的一個發生溢出的情況中,對應的壓縮器224和234輸出包括純PC值的編碼值314。同樣,除了示出的編碼值之外,還可以提供其它編碼值,每個均與來自附加來源的輸出(即圖1中的信號153)對應。與這種輸出對應的編碼值允許展示設備140識別並響應這些值。圖4是根據本發明的至少一些方面的程序跟蹤器110的示例性實施例的示意性框圖。程序跟蹤器110包括程序計數定序器212、位移發生器模塊220、線性遞增發生器模塊230和循環計數模塊240。程序計數定序器212接收來自程序計數器152(如圖1所示)的當前程序計數值154和關於不連續的通知156。當前PC值154被諸如觸發器(flip-flop)的延時設備414延時一個時鐘周期並由其保留,以提供先前程序計數值114。應當理解,當前PC值不必需是與正由執行被跟蹤程序的處理器來執行的當前程序指令對應的PC值402。例如,正被執行的當前程序指令的PC值402可以被延時設備405延時。但是,先前PC值114應當是存在於當前PC值154的前一個時鐘周期的PC值;且關於不連續的通知156應當被延時的時間量應當等於當前PC值154相對於PC值402而被延時的時間量。程序計數定序器212通過把當前程序計數值154和關於不連續的通知156輸入邏輯「與」設備416(例如「與」門)中來生成當前不連續目的PC值118。程序計數定序器212通過把先前程序計數值114和關於不連續的通知256輸入邏輯「與」設備419中來生成當前不連續來源計數值116。邏輯「與」設備415和延時設備418操作來提供先前不連續目的值413至線性遞增發生器模塊230。線性遞增發生器模塊230接收先前程序計數值114和先前不連續目的計數值413,並且包括差分設備432,以通過計算先前程序計數值114和先前不連續目的計數值413之間的差來計算出線性遞增運行長度值。線性遞增發生器模塊230可以包括壓縮器434。壓縮器434可以使用任何合適的壓縮方案(其中幾種方案在本
技術領域:
中是已知的),以減少提供線性遞增運行長度值438所需的總比特數。例如,壓縮器434可以使用如上面參考圖3所討論的壓縮方案。使用任何已知方法,根據所選擇的壓縮方案,由差分設備432計算的線性遞增運行長度值可以被轉換成編碼值304、308和310。例如,可以使用查找表(look-uptable)來提供編碼值;另一種選擇是,根據差分的量值,可以把合適的報頭附加到差分設備432的輸出上。在一些實施例中,最多三個字是可能的;但是,由於報頭和符號數據比特的原因,則可用最多19比特來表示線性遞增運行長度值(即最大線性遞增運行長度值量值是219)。在差分設備的輸出的量值超過219的情況中,壓縮器434提供與絕對PC值對應的編碼值314(如圖3所示)。如上所討論,在一些情況中,壓縮器434提供與線性遞增運行長度值438中的字數對應的字計數439。如下面參考圖5所討論,數據控制器120可以使用字計數來協調被壓縮的跟蹤序列的輸出。位移發生器模塊220接收先前程序計數值114和當前程序計數值254,並且包括差分設備422,其通過計算先前程序計數值114和當前程序計數值154之間的差來計算出位移值428。位移發生器模塊220可以包括壓縮器424。壓縮器424可以使用任何壓縮方案,以減少提供位移值428所需的總比特數。例如,壓縮器424可以使用如上面參考圖3所討論的壓縮方案。使用任何已知方法,根據圖3所示的壓縮方案,由差分設備422計算的位移值可以被轉換成編碼值306、308、310和312;例如,可以使用查找表來提供編碼值;另一種選擇是,根據差分的量值,可以把合適的報頭附加到差分設備422的輸出上。在一些實施例中,最多四個字是可能的;但是,由於報頭和符號數據比特的原因,可用最多25比特來表示差分(即最大差分量值是225)。在差分設備的輸出的量值超過225的情況中,壓縮器424提供與絕對PC值對應的編碼值314(如圖3所示)。如上所討論,在一些實施例中,壓縮器424提供與輸出428中的字數對應的字計數429。如下面參考圖5所討論,數據控制器120可以使用字計數來協調被壓縮的跟蹤序列的輸出。循環計數模塊包括含有至少第一先前不連續來源計數值444和第一先前不連續目的計數值445的存儲器422(例如2×nFIFO緩衝器)。在示出的示例性實施例中,存儲器是2×2FIFO緩衝器,因此,它還包括第二先前不連續來源計數值446和第二先前不連續目的計數值447。應當理解,存儲器442可以是包含任何數目的先前不連續來源計數值和第一先前不連續目的計數值的存儲器(例如2×nFIFO緩衝器)。如圖所示,通過使用比較器448和449,循環計數器模塊240把由程序計數定序器212生成的每個先前程序來源計數值114和當前程序計數值154分別與第一先前不連續來源計數值444和第一先前不連續目的計數值445進行比較。如果先前程序計數值114等於第一先前不連續來源計數值444且當前程序計數值154等於第一先前不連續目的計數值445,則如「與」設備452所表示,內循環計數器454進行遞增。在一些實施例中,內循環計數器454經由復用器480提供內循環計數至緩衝器226(如圖2所示)。此外,內循環計數器454經由復用器482提供字計數至緩衝器260(如圖2所示)。在一些示例中,內循環計數器454根據如圖3所示的編碼值318來生成前綴。在圖3示出的壓縮方案中,沒有對內循環計數器值進行壓縮(例如,用於內循環計數值的編碼值的字計數沒有與內循環值的量值相關);因此,可以通過硬連線生成根據如圖3所示方案的內循環計數器值,使得前綴被附加到計數值上。另一種選擇是,可以使用查找表或任何其它合適的方法來生成根據如圖3所示方案的編碼值。雖然如圖3所示的方案沒有對循環計數值進行壓縮,但是包含循環值壓縮的壓縮方案也處於本發明的範圍之內;並且應當理解,可以類似於壓縮器224或234(如圖2所示)的循環壓縮器也應合併進來。類似地,通過使用比較器451和452,循環計數器模塊440把由程序計數定序器212生成的每個先前程序計數值114和當前程序計數值154分別與第二先前不連續來源計數值446和第二先前不連續目的計數值447進行比較。如果先前程序計數值114等於第二先前不連續來源計數值446且當前程序計數值254等於第二先前不連續目的計數值447,則如「與」設備453所表示,表示為外循環執行。因此,外循環計數器455進行遞增。在一些實施例中,外循環計數器455經由復用器481提供外循環計數至緩衝器236(如圖2所示)。此外,外循環計數器455經由復用器482提供字計數至緩衝器260(如圖2所示)。在一些示例中,外循環計數器255根據如圖3所示的編碼值320來生成前綴。在圖3示出的壓縮方案中,沒有對循環計數器值進行壓縮;因此,可以通過硬連線生成根據如圖3所示方案的外循環計數器值,使得前綴被附加到計數值上。另一種選擇是,可以使用查找表或任何其它合適的方法來生成根據如圖3所示方案的編碼值。復用器480允許位移發生器模塊220和內循環計數器454都來填充緩衝器226(如圖2所示),且復用器481允許線性遞增發生器模塊430和外循環計數器455都來填充緩衝器256(如圖2所示)。復用器482允許來自壓縮器424、壓縮434、內循環計數器454和外循環計數器455中每一個的字計數來填充緩衝器260(如上面圖2所示)。除非表示為內循環執行或外循環執行,否則「或非」設備(門)457就生成邏輯高。因此,關於不連續的通知256被「與」設備458阻塞,從而防止了「與」設備419和416提供未更新的不連續來源PC值444和未更新的不連續目的PC值445。但是,如果「或非」設備4576既不表示為內循環執行也不表示為外循環執行,則存儲器設備442在發生每次新不連續時進行更新。此外,如果表示存在內或外循環,則可以向位移發生器模塊220和線性遞增發生器模塊230提供信號459(門458的輸出),以防止計算位移值428和線性遞增運行值438。圖5A是含有示例性被壓縮數據結構的緩衝器226、260和236的示意性示出。在示例性實施例中,每個緩衝器都是FIFO緩衝器,在緩衝器的最上面字上的數據(即第一位置或地址)是首先進入的數據。緩衝器226包括位移數據的兩個字,502a和502a』,它們兩個均與第一位移值對應;內循環計數數據的三個字,504a、504a』和504a」,它們均與第一內循環計數值對應;以及位移數據的一個字,506a』,其與第二位移計數值對應。緩衝器236包括線性遞增計數數據的一個字,502b,其與第一位移計數值對應(以及與位移值502a和502a』對應);外循環計數數據的兩個字,504b和504b』,它們兩個均與第一外循環計數值對應;以及線性遞增數據的一個字,506b』,其與第二線性遞增計數值對應(以及與位移計數數據506a對應)。字計數緩衝器260包括與緩衝器226和236中每一個的數據對應的字計數值。例如,可以使用適當的編程數據控制器(例如數據控制器120)來從緩衝器526和緩衝器536中讀取位移數據、線性遞增數據、內循環數據和外循環數據,使它們形成一個集成的壓縮程序跟蹤。然後,這個集成的壓縮程序跟蹤可以由解壓縮器145(如圖1所示)進行解壓縮,以形成解壓縮的程序跟蹤。通過讀取字計數502、502』、504、504』、506和506』,以及使用替換的字計數從緩衝器226和236中讀取對應個數的字來發生數據的集成。例如,根據示出的示例性數據結構,通過首先從緩衝器226中讀取與來自緩衝器的字計數502對應的兩個數據字502a和502a』來形成作為結果的集成的壓縮程序跟蹤。接下來,從緩衝器236中讀取與來自緩衝器260的字計數502』對應的單個數據字502b。然後,從緩衝器526中讀取與來自緩衝器260的字計數502對應的兩個數據字的三個字502a和502a』。包含作為結果的集成數據的存儲器550在圖5B中示出。存儲器550被從緩衝器226和236中讀取的數據從底部向上進行填充。可以使用解壓縮器145(如圖1所示)來獲得對作為結果的集成數據的解壓縮。雖然已對發明概念和若干示例性實施例進行了描述,但是,對於本領域的普通技術人員來說,顯然,本發明可以以各種方式實現,且且對於本領域普通技術人員來說,它們將會發生修改和改進。因此,給出的示例並不是為了限制。本發明只受所附的權利要求及其等同物的限制。同樣,應當理解,術語「包括(including)」、「包含(comprising)」或「帶有(having)」的使用應當涵蓋所列出的項目及其等同物以及列出的項目的前面、後面或者之間的附加的項目。權利要求1.一種用於跟蹤在處理器上執行程序的執行序列的程序跟蹤器,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,程序跟蹤器包含程序計數定序器,其在操作中連接至程序計數器,以接收來自程序計數器的當前程序計數值,以及還接收程序指令流中的關於不連續的通知,程序計數定序器響應於所述通知而生成當前不連續目的計數值;以及線性遞增發生器模塊,其在操作中連結至程序計數定序器,以接收當前程序計數值和當前不連續目的計數值,以及響應於程序中的關於不連續的通知而計算線性遞增運行長度和選擇性地提供線性遞增運行長度值。2.如權利要求1所述的程序跟蹤器,進一步包含位移發生器模塊,其在操作中連結至程序計數定序器,以接收當前程序計數值和先前程序計數值,以及進行響應而計算位移值。3.如權利要求1所述的程序跟蹤器,其中,位移發生器模塊響應於對程序中的關於不連續的通知而選擇性地提供位移值。4.一種用於跟蹤在處理器上執行程序的執行序列的程序跟蹤器,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,程序跟蹤器包含程序計數定序器,其用於接收用於接收來自程序計數器的當前程序計數值和保留先前程序計數值,以及確定當前不連續來源計數值和當前不連續目的計數值;以及循環計數模塊,其連結至程序計數定序器,以接收當前不連續來源計數值和當前不連續目的計數值,以及保留第一先前不連續來源計數值和第一先前不連續目的計數值,以及通過把當前不連續來源計數值和當前不連續目的計數值與第一先前不連續來源計數值和第一先前不連續目的計數值進行比較,來對至少第一循環的循環執行進行計數。5.一種用於跟蹤在處理器上執行程序的執行序列的方法,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,該方法包含響應於關於不連續的通知而生成當前不連續目的計數值;以及根據當前不連續目的值和當前程序計數值,來計算線性遞增運行長度。6.如權利要求5所述的跟蹤執行序列的方法,進一步包含響應於程序中的關於不連續的通知而選擇性地提供線性遞增運行長度值。7.一種用於跟蹤在處理器上執行程序的執行序列的方法,該處理器帶有用於在執行程序時為程序指令保留程序指令計數值的程序計數器,該方法包含確定當前不連續來源計數值和當前不連續目的計數值;以及通過把當前不連續來源計數值和當前不連續目的計數值與第一先前不連續來源計數值和第一先前不連續目的計數值進行比較,來對至少第一循環的循環執行進行計數。全文摘要一種高速程序跟蹤器,其使用線性遞增運行長度值、與不連續對應的位移值和循環壓縮來提供壓縮。一種程序計數定序器接收來自處理器的程序計數值,並輸出各種程序計數值和信號,以允許根據線性遞增運行長度、不連續檢測和對重複指令循環的檢測而作出壓縮計算。可以使用表達各種壓縮值的所選擇的字數來獲得壓縮。文檔編號G06F13/28GK1549971SQ02816926公開日2004年11月24日申請日期2002年8月29日優先權日2001年8月29日發明者約爾格·施豐姆萊因,約爾格施豐姆萊因申請人:模擬設備公司