專利名稱:產生用于數據處理裝置的跟蹤流的技術的制作方法
技術領域:
本發(fā)明涉及用于產生指示數據處理裝置被監(jiān)控電路的活動的跟蹤 流的技術。
背景技術:
跟蹤數據處理系統(tǒng)的活動由此產生包括代表系統(tǒng)內逐步活動的數 據的跟蹤元素流在系統(tǒng)開發(fā)中是十分有用的工具。然而,隨著一般向 更深嵌入的處理器核發(fā)展,經由外部可存取引腳跟蹤處理器核或其他 芯片上設備的活動變得更加困難。因此,除了用于捕獲和分析跟蹤數 據的芯片外跟蹤機制,大量增加的跟蹤功能被布置在芯片上。這種芯片上跟蹤機制的示例是英國劍橋的ARM有限公司提供的與其各種 ARM處理器相關的嵌入式跟蹤宏單元(ETM)。這種跟蹤機制產生提供跟蹤元素的實時跟蹤流,所述跟蹤元素代 表設計為被跟蹤的數據處理裝置的活動。這種跟蹤流然后可以被分析 以用于各種目的,例如,用于幫助數據處理裝置執(zhí)行的處理指令序列 的調試、用于執(zhí)行仿形操作以判斷數據處理裝置上執(zhí)行的特定程序代 碼的性能等。典型地,跟蹤機制產生的跟蹤元素流在被輸出以用于后續(xù)分析之 前被緩沖。這種跟蹤緩沖器能夠存儲有限數目的信息且需要具有有限 帶寬的專用數據總線,被緩沖的元素能夠通過該專用數據總線接收。 跟蹤緩沖器一般被布置為以巻繞方式存儲信息,即, 一旦跟蹤緩沖器 滿,新的數據典型地被布置為重寫其中存儲的最老的數據。已經發(fā)現, 專用數據總線的帶寬限制了信息可以存儲在跟蹤緩沖器中的速度。典型地,提供跟蹤分析工具,當需要時,例如一旦完成跟蹤,該 跟蹤分析工具從跟蹤緩沖器接收跟蹤元素的跟蹤流。跟蹤分析工具然后用于基于接收的跟蹤元素重新構建被跟蹤設備的活動。當諸如處理 器核這樣的設備在功率和復雜性方面增加時,很清楚,跟蹤這種設備 的活動所需的信息量將增加,且相應地,潛在地存在需要被跟蹤的非
常大量的跟蹤元素。然而,存在這樣的問題,即,存在有限的總線帶寬,跟蹤邏輯能 夠通過該總線帶寬輸出跟蹤元素,且用于緩沖這種跟蹤元素的任意跟 蹤緩沖器將具有有限的尺寸。因此,能夠產生的跟蹤元素的量受限??赡芟M櫟脑O備的活動包括但不限于處理器核執(zhí)行的指令 (稱作指令跟蹤)以及這些指令做出的存儲器存取(稱為數據跟蹤)。這些活動可以被單獨地跟蹤或一起跟蹤,使得數據跟蹤可以與指令跟 蹤相關。數據跟蹤本身包括兩個部分存儲器地址和數據值,(分別) 稱為數據地址和數據值跟蹤。此外,現有跟蹤ETM協(xié)議允許數據地址 和數據值跟蹤單獨或同時生效。為了減小需要在跟蹤流中輸出的跟蹤數據量,已知在跟蹤流中輸 出之前使跟蹤元素經歷壓縮技術。具體而言,跟蹤元素序列可以經過 編碼操作以產生其位組合格式代表跟蹤元素序列的包,所述包然后在跟蹤流中輸出。將典型地定義壓縮機制,提供可用于編碼跟蹤元素的 大量不同的編碼格式。例如,每個包輸出將典型地包括報頭部分和可 選的有效載荷部分??紤]報頭,它們典型地具有字節(jié)信息的形式,且 相應地存在256種可能的報頭編碼。這些編碼中的某一些可以與一種 編碼格式相關,而這些編碼中的另一些可以與不同的編碼格式相關。 并且,可以為有效載荷部分提供其他編碼格式。這些不同的編碼格式 可用于編碼需要被編碼成包的不同種類的跟蹤元素,但是這些不同的 編碼格式在位組合格式編碼空間將不重疊,使得每個包能夠被用于分 析跟蹤流的跟蹤分析工具唯一地識別。舉例而言,現有ETM協(xié)議產生指示指令是否被執(zhí)行的被稱為原 子的跟蹤元素,E原子指示指令已經被執(zhí)行且N原子指示指令尚未被 執(zhí)行。這些原子序列可以壓縮成被稱作p報頭的包中,p報頭包括一個 字節(jié)大小的報頭且沒有有效載荷。可以提供為特定E和N原子序列產 生p報頭的一個或多個編碼格式,但是每個這種編碼格式將相對于用 于p報頭的任意其他編碼格式占用非重疊位組合格式編碼空間,且實 際上,關于用于不同類型的報頭的任意其他編碼格式,例如用于識別 給出關于分支指令信息的包的分支報頭、用于識別包含數據地址或數 據值信息的包的數據地址或數據值報頭等。與任意特定跟蹤電路結合使用的壓縮方案將典型地在設計時間上
固定,具有基于需要壓縮的跟蹤元素的期望組合格式選擇的壓縮方案 中提供的特定編碼格式。因此,舉例而言,考慮較早提及的p報頭,用于從E和N原子序列產生這些p報頭的編碼格式典型地使用游程編 碼方案,其中,編碼朝向長的E原子序列歪斜,因為一般E比N原子 更常見。除了能夠選擇性地實現指令跟蹤、數據地址跟蹤和數據值跟蹤, 當前的跟蹤電路還能夠支持不同的跟蹤操作模式。例如,考慮較早提 及的ETM產品,可以提供非循環(huán)精確跟蹤操作模式和循環(huán)精確跟蹤操 作模式。為了從非循環(huán)精確跟蹤操作模式切換到循環(huán)精確跟蹤操作模 式,或相反,任意當前跟蹤活動停止,且跟蹤電路中的大量控制寄存 器被更新以定義新的跟蹤操作模式。作為更新處理的一部分,壓縮方 案可以改變,以提供為新的跟蹤操作模式更好優(yōu)化的壓縮方案。例如, 考慮循環(huán)精確跟蹤操作模式,在每個時鐘循環(huán)產生被稱作W原子的附 加原子以提供循環(huán)精確計時信息,且相應地循環(huán)精確跟蹤操作模式中 用于p報頭的編碼格式典型地不同于用在非循環(huán)精確跟蹤模式中的編 碼格式以反映除了 E和N原子之外在p報頭中編碼W原子的序列的需 要。然而,此外,考慮需要壓縮的跟蹤元素的期望組合格式,為循環(huán) 精確跟蹤操作模式而發(fā)展的任意壓縮方案將典型地在設計時間固定。然而,在任意特定的跟蹤操作模式中,當應用為該跟蹤操作模式 設置的預定壓縮方案時可能出現效率問題。例如,當活動被跟蹤的監(jiān) 控電路的復雜度和能力增加時,在執(zhí)行的代碼序列中可能存在顯著的 變化。同樣考慮p報頭的主題,ARMThumb-2指令集提供"ifthen,,指 令,該指令可以顯著改變產生的N原子的頻率,且不利地影響為p報 頭設置的任意編碼格式的效率。作為另一示例,跟蹤電路可以被調適 從而不是跟蹤所有的指令,而是僅跟蹤諸如分支指令之類的特定類型 的指令。僅當跟蹤分支指令時,可以發(fā)生更高的N原子分布,同樣, 負面地影響壓縮效率。如前所述,產生的跟蹤量是明顯的問題,且壓縮方案提供的編碼 中的任意低效將增加跟蹤流的容量,且因此需要更多的區(qū)域來用于芯 片上緩沖,更多的硬件用于芯片外捕獲和/或更多的引腳用于芯片外實 時跟蹤捕獲。因此,希望提供改善的技術以在跟蹤流的輸出之前壓縮 跟蹤元素。發(fā)明內容從第一方面看,本發(fā)明提供跟蹤電路,用于產生指示數據處理裝 置被監(jiān)控電路的活動的跟蹤流,該被監(jiān)控電路產生指示所述活動的數據元素,且該跟蹤電路包括跟蹤元素發(fā)生電路,響應于至少一些由 被監(jiān)控電路產生的數據元素,產生代表那些至少一些數據元素的跟蹤 元素,產生的跟蹤元素與選擇的跟蹤電路的跟蹤操作模式有關;以及 壓縮電路,用于向跟蹤元素序列應用編碼操作以產生其位組合格式代 表跟蹤元素序列的包,使得該包在跟蹤流中輸出,應用的編碼操作依 賴于與所述壓縮電路相關的當前壓縮方案;同時在選擇的跟蹤操作模 式中,該壓縮電路響應于壓縮變化激勵以將當前的壓縮方案從第一壓 縮方案變化為第二壓縮方案,該第二壓縮方案的位組合格式編碼空間 覆蓋該第一壓縮方案的位組合格式編碼空間,使得在壓縮方案改變之 后,在所選跟蹤操作模式中根據第二壓縮方案產生任意其他包。根據本發(fā)明,壓縮電路被布置以響應于壓縮變化激勵,以在跟蹤 電路仍處于所選的跟蹤操作模式中時改變當前壓縮方案。具體而言, 壓縮變化激勵導致當前壓縮方案從第一壓縮方案變化到第二壓縮方 案,該第二壓縮方案中的位組合格式編碼空間重疊所述第一壓縮方案 的位組合格式編碼空間。即使跟蹤電路仍處于所選的跟蹤操作模式, 這一點仍然發(fā)生,且相應地,跟蹤電路實際產生的跟蹤元素的類型沒 有變化。壓縮方案改變之后,在所選跟蹤操作模式中根據第二壓縮方 案產生任意其他包。通過使用本發(fā)明,由于在跟蹤操作模式中改變使用的壓縮方案的 能力,仍在相同的跟蹤操作模式中,與跟蹤流中的包的特定位組合格 式相關的意義可以改變。例如,注意到^支監(jiān)控電路輸出的跟蹤元素的 特定組合格式,通過調適壓縮電路應用的壓縮方案,這樣能夠實現壓 縮效率中的顯著改善。在一些實施例中,從第一壓縮方案到第二壓縮方案的切換可以在 不停止跟蹤電路的跟蹤操作的條件下發(fā)生,而在其他實施例中,跟蹤 電路的跟蹤活動將在壓縮方案的改變發(fā)生時臨時停止。假設數據元素給出足夠的信息以用于從其產生的所需的跟蹤流, 跟蹤電路接收的數據元素可以具有各種形式。而且,數據元素可以從
被監(jiān)控電路(此處也稱為被跟蹤設備)傳輸到跟蹤電路,或者備選地, 可以通過跟蹤電路從被跟蹤設備取回。作為示例,數據元素可以包括 指令地址值、數據地址值或數據值。跟蹤元素發(fā)生電路產生的跟蹤元 素然后典型地被布置以包含足夠的信息,從而使得這些數據元素,或 至少這些數據元素指示的被監(jiān)控電路的基本活動,能夠在稍后通過分 析跟蹤流的跟蹤分析邏輯判斷。存在4艮多可以產生壓縮變化激勵的方法。在一個實施例中,跟蹤 電路還包括壓縮方案選擇電路,用于應用預定的標準來判斷何時改變 當前的壓縮方案且基于所述判斷導致產生壓縮變化激勵。因此,在這 些實施例中,基于壓縮方案選擇電路進行的分析,通過跟蹤電路內部 地產生壓縮變化激勵。存在壓縮方案選擇電路可以判斷何時改變當前壓縮方案的很多不 同方法。例如,可以從被監(jiān)控電路產生的數據元素比較不同壓縮方案 產生的跟蹤數據的容量,且然后基于該分析選擇被認為是最有效的壓 縮方案。備選地,或附加地,可以響應于被監(jiān)控電路的活動的一個或 多個屬性,諸如指示被監(jiān)控電路內執(zhí)行的當前線程的線程識別寄存器 中保存的值,或被監(jiān)控電路存取的存儲器地址區(qū)域的指示,以判斷何 時切換壓縮方案。作為示例,從這些信息,可以判斷被監(jiān)控電路正運 行哪些應用,且壓縮方案選擇電路可以將不同的壓縮方案與不同的應 用關聯(lián)。作為壓縮方案選擇電路怎樣判斷何時改變當前壓縮方案的另一示 例,可以響應從被監(jiān)控電路接收的提示信號,這可以考慮何時判斷改 變壓縮方案的時間。因此,當被監(jiān)控電路進行的活動正明顯變化時, 被監(jiān)控電路可以輸出提示信號,這種提示信號要么明確地識別被監(jiān)控 電路相信將是最合適的向前運動的壓縮方案,或至少指示壓縮方案選 擇電路現在是合適的時間來重新評估使用的壓縮方案。壓縮方案選擇電路操作的方式可以根據跟蹤電路的壓縮電路的構 造而變化。在一個實施例中,壓縮電路包括多個壓縮元件,每個壓縮元件實施不同的壓縮方案,且能夠進行所述編碼操作;所述壓縮方案 選擇電路被布置為產生選擇信號以選擇所述壓縮元件之一為其壓縮方 案為當前壓縮方案的壓縮元件,使得所選的壓縮元件產生跟蹤流中包 括的包;且壓縮方案選擇電路被布置為通過變更選擇信號產生所述壓
縮變化激勵。根據上述實施例,壓縮電路能夠支持壓縮電路內設置的多個壓縮 元件規(guī)定的預定數目的不同壓縮方案,且壓縮方案選擇電路產生選擇 信號以指示在任意特定時間點哪個壓縮元件將用于產生跟蹤流中包括 的包。應當意識到壓縮電路中的壓縮元件可以是完全分離的物理電路, 或備選地,壓縮元件可以彼此共享至少一些邏輯(且在一些實施例中 可以共享組成這些壓縮元件的邏輯的很大一部分)。作為示例,不同的 壓縮元件可以提供不同的編碼格式以用于編碼P報頭,其中一個壓縮 元件提供的編碼格式具有與另一壓縮元件提供的編碼格式重疊的位組 合格式編碼空間。然而,當編碼不同于p報頭的報頭時,或者當編碼 與報頭相關的有效載荷數據時,這些壓縮元件可以都采用相同的編碼 格式,且相應地,可以共享一些邏輯以用于進行這種非p報頭編碼。在一個實施例中,至少在測試操作周期中,每個壓縮元件被布置 為進行編碼操作,產生的包被壓縮方案選擇電路接收,該壓縮方案選件中的哪一個。壓縮元件被布置為對相同的源數據,即跟蹤元件產生 電路產生的跟蹤元素并行地進行其相應的編碼操作,或者備選地,每 個壓縮元件可以被順序地選擇以進行編碼操作預定時間周期,生成包 然后被壓縮方案選擇電路分析。測試操作周期可以周期地進行,從而 在周期的基礎上重新評估最佳壓縮方案,或者備選地,測試操作周期 可以被壓縮方案選擇電路接收的某種信息觸發(fā),例如,被監(jiān)控電路執(zhí) 行的一些活動的指示、提示信號等觸發(fā)。在備選實施例中,壓縮方案 選擇電路可以被布置為在跟蹤流的產生過程中連續(xù)地進行分析操作, 從而使得在任意時間點發(fā)生壓縮方案的切換,其中壓縮方案選擇電路 判斷需要改變當前壓縮方案以提高壓縮效率。作為提供具有多個壓縮元件的壓縮電路的備選,壓縮電路可以被 布置為可重配置電路。在這種實施例中,當被發(fā)送時,壓縮變化激勵 包括用于重新配置可重配置電路的信息,從而實施第二壓縮方案。這 種方法提供了關于壓縮方案選擇的進一步的靈活性。在一個特定實施例中,壓縮電路包括雙重可重配置電路,使得被 配置成實施第一壓縮方案的可重配置電路之一被布置為在接收壓縮變
化激勵之后繼續(xù)操作,同時另一可重配置電路根據壓縮變化激勵被重 配置,在這種重配置之后,該另一可重配置電路用于根據第二壓縮方 案產生后續(xù)包。通過這種方法,跟蹤數據的產生不需要被壓縮方案的 變化中斷, 一旦另一可重配置電路被配置,則發(fā)生壓縮方案的切換。可重配置電路可以具有各種形式,但是在一個實施例中,它是可 編程邏輯設備且壓縮變化激勵存儲在用于重編程該可編程邏輯設備的 存儲設備中。在一個特定實施例中,可編程邏輯設備可以是現場可編程門陣列(FPGA )設備且壓縮變化激勵可以存儲在用于重編程FPGA 設備的閃存設備中。壓縮變化激勵可以以各種方式提供到壓縮電路。在一個實施例中, 跟蹤電路還包括控制寄存器,該控制寄存器具有用于存儲壓縮變化激 勵的壓縮指定字段,壓縮電路參考控制寄存器的壓縮指定字段以判斷 何時改變當前壓縮方案。然后,存儲在壓縮指定字段中的特定值或多 個值指示在任意時間點壓縮電路應用哪個壓縮方案。為了使得跟蹤分析工具正確地解釋跟蹤流中的各個包,跟蹤分析 工具需要知道壓縮方案何時變化。存在跟蹤分析工具可以評價這種變 化的很多方法,且實際上,在一些實施例中,跟蹤分析工具的用戶可 以促成壓縮方案中的變化且因此將知道何時發(fā)生變化。在一個實施例 中,在當前壓縮方案變化時,壓縮電路被布置為在跟蹤流中輸出變化 信號以指示已經做出了變化,使得用于分析跟蹤流的跟蹤分析裝置可 以判斷壓縮方案何時變化,從而正確地解釋跟蹤流中的包。變化信號 將提供足夠的信息以使得該跟蹤分析工具能夠結合跟蹤流中的變化信 號之后的包判斷已經使用了哪種壓縮方案。從笫二方面看,本發(fā)明提供一種數據處理裝置,包括用于產生 指示被監(jiān)控電路的活動的數據元素的被監(jiān)控電路;以及根據本發(fā)明的 第一方面,用于產生指示所述被監(jiān)控電路的所述活動的跟蹤流的跟蹤 電路。從第三方面看,本發(fā)明提供一種跟蹤分析裝置,用于分析根據本 發(fā)明的笫一方面的跟蹤電路產生的跟蹤流,該跟蹤分析裝置包括包 解壓縮邏輯,用于解碼跟蹤流中的包,以判斷每個所述包代表的跟蹤 元素序列;以及壓縮方案選擇邏輯,用于接收跟蹤流和包解壓縮邏輯 判斷的跟蹤元素,且應用預定標準以判斷何時改變當前的壓縮方案,
且基于所述判斷產生壓縮變化激勵。代替跟蹤電路中的壓縮方案選擇電路,跟蹤分析裝置中的壓縮方 案選擇邏輯可以被設置,且執(zhí)行壓縮方案選擇電路執(zhí)行的類似的分析, 以判斷何時改變壓縮方案。在備選實施例中,跟蹤分析裝置可以包括 壓縮方案選擇邏輯且跟蹤電路可以附加地包括壓縮方案選擇電路,且 在這種實施例中,典型地必須提供一些仲裁機制以在這些元件指示的 沖突變化之間進行仲裁。僅僅是舉例,跟蹤分析裝置中的壓縮方案選 擇邏輯可以在這種示例中提供關于跟蹤電路中的壓縮方案選擇電路采 用的活動的第二級別的回顧。例如,壓縮方案選擇邏輯將被布置,使 得在一些情況中不僅干預壓縮方案選擇電路做出的判斷,且在壓縮方 案選擇邏輯確實發(fā)送壓縮變化激勵的情況下,任意方案將給予該壓縮 變化激勵優(yōu)選權作為壓縮方案選擇邏輯的輸出。在一個實施例中,跟蹤邏輯的壓縮電路支持預定數目的壓縮方案; 所述壓縮方案選擇邏輯被布置以產生選擇信號來識別哪個壓縮方案是 當前的壓縮方案;且所述壓縮方案選擇邏輯被布置為通過變更選擇信 號產生所述壓縮變化激勵。在備選實施例中,壓縮變化激勵包括定義第二壓縮方案將用作當 前壓縮方案的信息。例如這種實施例可用于跟蹤電路中的壓縮電路可 重配置的情況。在一個實施例中,當應用所述預定標準以判斷是否改變當前壓縮 方案時,壓縮方案選擇邏輯參考程序圖像。跟蹤分析裝置通常設置有 程序圖像的復本以使得它從跟蹤流中提供的跟蹤元素重構被監(jiān)控電路 執(zhí)行的實際的指令序列。壓縮方案選擇邏輯可以被布置為參考程序圖 像,例如,使得當它根據識別跟蹤流的一部分的分析識別壓縮方案中 的變化可能有價值時,則它可以學習程序圖像以核查跟蹤元素的類似 形式可能在代碼的其他部分中被觀察,以由此確認這種變化是有價值 的。從第四方面看,本發(fā)明提供一種改變用于產生指示數據處理裝置 被監(jiān)控電路活動的跟蹤流的由跟蹤電路應用的壓縮方案的方法,被監(jiān) 控電路產生指示所述活動的數據元素,且該方法包括以下步驟響應 于至少一些由被監(jiān)控電路產生的數據元素,產生代表那些至少一些數據元素的跟蹤元素,產生的跟蹤元素與選擇的跟蹤電路的跟蹤操作模 式有關;以及對跟蹤元素序列應用編碼操作以產生其位組合格式代表 跟蹤元素序列的包,且在跟蹤流中輸出該包,應用的編碼操作與當前 壓縮方案有關;同時在所選的跟蹤操作模式中,響應于壓縮變化激勵, 將當前壓縮方案從第一壓縮方案變化為第二壓縮方案,第二壓縮方案 的位組合格式編碼空間重疊第一壓縮方案的位組合格式編碼空間,使 得在壓縮方案改變之后,在所選跟蹤操作模式中根據第二壓縮方案產 生任意其他包。從第五方面看,本發(fā)明提供一種包括計算機程序的計算機程序產 品,通過執(zhí)行以下步驟,該計算機程序使得計算機分析根據本發(fā)明的 第四方面產生的跟蹤元素流解碼跟蹤流中的包,以判斷每個所述包 代表的跟蹤元素序列;以及參考跟蹤流和從跟蹤流的包解碼的跟蹤元 素,應用預定標準來判斷何時改變當前壓縮方案,且基于所述判斷產 生壓縮變化激勵。
參考如附圖中所述的實施例,僅通過舉例的方式描述本發(fā)明,附 圖中圖l是根據本發(fā)明一個實施例的數據處理系統(tǒng)的框圖;圖2是示出根據一個實施例的圖l被監(jiān)控電路的示例的框圖;圖3是更詳細地示出根據一個實施例的圖1的芯片上跟蹤模塊的框圖;圖4是示出根據本發(fā)明一個實施例的圖3的跟蹤發(fā)生器的框圖; 圖5是示出根據本發(fā)明的備選實施例的圖3的跟蹤發(fā)生器的框圖; 圖6是示出根據本發(fā)明又一備選實施例的圖3的跟蹤發(fā)生器的框圖;圖7是示出根據本發(fā)明又一備選實施例的圖3的跟蹤發(fā)生器的框圖;圖8是示出根據本發(fā)明一個實施例的圖1的跟蹤分析器的圖示; 圖9是示意性示出根據本發(fā)明一個實施例的圖1的跟蹤模塊20產生的跟蹤流中包的供應的圖示;圖IO是示出根據本發(fā)明一個實施例的圖4的壓縮電路和壓縮分析電路操作的流程圖11和12是示出根據本發(fā)明兩個備選實施例的圖8的跟蹤分析 器的包解壓縮邏輯和壓縮分析邏輯操作的流程圖;圖13是示意性示出當切換壓縮方案時可以實現的壓縮效率的圖示;圖14示出了怎樣根據本發(fā)明一個實施例中使用的不同壓縮方案 解釋特定位組合格式。
具體實施方式
圖1示意性地示出了提供被監(jiān)控電路IO、跟蹤模塊20、跟蹤緩沖 器30和跟蹤分析器40的數據處理系統(tǒng)。同時圖1示出了提供跟蹤緩 沖器30的數據處理系統(tǒng),在備選實施例中,跟蹤模塊20可以將其輸 出直接通過跟蹤分析器40,而不經由跟蹤緩沖器。產生跟蹤模塊20接收的數據元素流的被監(jiān)控電路10可以具有各 種形式,且例如可以是處理器核、直接存儲器存取(DMA)引擎、數 據引擎/加速器等。備選地,被監(jiān)控電路10可以由通過總線耦合的多個 設備組成,且數據元素可以在它們經過總線時被跟蹤模塊20監(jiān)控。在一個實施例中可以通過運行適當軟件的通用目的計算機形成的 跟蹤分析器40耦合到跟蹤模塊20和跟蹤緩沖器30。典型地嵌入在芯 片上的跟蹤模塊20被布置為從邏輯10接收數據元素且根據它來產生 提供存儲在跟蹤緩沖器30 (可以在芯片上或芯片外提供)中的跟蹤元 素的跟蹤流。典型地芯片外嵌入的跟蹤分析器40然后用于分析該跟蹤 流以得出指示被跟蹤的被監(jiān)控電路10的活動的信息。具體而言,通過 跟蹤流的分析,可以判斷被監(jiān)控電路10的詳細活動。跟蹤分析器40連接到跟蹤模塊20以使得跟蹤模塊的一些特征能 夠被跟蹤分析器的用戶控制。另外,在一些實施例中,跟蹤模塊20產 生的跟蹤流可以直接提供到跟蹤分析器40而不用在跟蹤緩沖器30中 緩沖。圖2是圖1的被監(jiān)控電路10的示例的框圖。在該示例中,被監(jiān)控 電路10包括通過總線15連接的兩個設備(11, 12)。總線經由連接105 鏈接到跟蹤模塊20,該邏輯產生的數據元素經過該連接105。圖3是根據一個實施例的跟蹤模塊20的框圖。跟蹤模塊20被布 置為在路徑105上接收指示被跟蹤的被監(jiān)控電路的狀態(tài)或操作的數據 元素。同步邏輯IOO被布置為將輸入信號轉換成更適于在跟蹤模塊20 中使用的內部信號版本。這些內部版本然后被發(fā)送到控制邏輯110和 跟蹤發(fā)生邏輯120,盡管應當意識到控制邏輯11和跟蹤發(fā)生邏輯120 將不必接收相同的信號。基本地,控制邏輯110需要接收與可觸發(fā)事 件相關的數據,例如,指令地址、數據值、寄存器存取等,使得它能 夠判斷跟蹤是否被激勵以及將跟蹤什么類型的數據元素??刂七壿?10 然后發(fā)送合適的控制信號到跟蹤發(fā)生邏輯120以使得跟蹤發(fā)生邏輯120 產生需要的跟蹤元素。根據控制邏輯110發(fā)送的控制信號,跟蹤發(fā)生邏 輯120經由同步邏輯IOO接收需要被跟蹤的任意數據。根據本發(fā)明的實施例,設置用于配置控制邏輯110的操作的控制 寄存器140,這些控制寄存器140可以從跟蹤分析器40設置??梢蕴?供很多控制寄存器,它們基本引導跟蹤發(fā)生邏輯操作的兩個元素-"何 時"產生跟蹤元素,例如何時存取特定范圍的地址,以及"什么"用于產 生這些跟蹤元素,例如數據地址和/或特定轉換的數據值,且典型地關 于轉換的補充信息諸如是否是讀或寫操作、是否被鎖定、安全信息等。控制邏輯110發(fā)送的控制信號觸發(fā)滿足"何時,,條件,根據從控制 邏輯接收相關的"什么"信號,跟蹤發(fā)生邏輯120產生指示它從同步邏 輯100接收的數據元素的所需跟蹤元素。這些產生的跟蹤元素然后典 型地經歷壓縮操作且然后被輸出到FIFO 130。從這里,跟蹤流然后被 輸出到跟蹤緩沖器30,或在備選實施例中,被直接輸出到跟蹤分析器 40。下面將提供根據本發(fā)明各個不同實施例的跟蹤發(fā)生器120進行的 壓縮操作的更多細節(jié),但是一般而言,本發(fā)明實施例的跟蹤發(fā)生器設 置有用于向跟蹤元素序列應用編碼操作的壓縮電路,以產生跟蹤流中 輸出的包,應用的所述編碼操作依賴于與壓縮電路相關的當前壓縮方 案。跟蹤發(fā)生器120響應于壓縮變化激勵以將當前壓縮方案從第一壓 縮方案改變到第二壓縮方案,該第二壓縮方案的位組合格式編碼空間 重疊第一壓縮方案的位組合格式編碼空間,使得在壓縮方案變化之后, 在相同的跟蹤操作模式中根據第二壓縮方案產生任意其他包。壓縮變 化激勵可以通過某種壓縮分析電路在跟蹤模塊20內部產生,或者備選 地可以從外部源提供,諸如從基于其中進行的壓縮分析的跟蹤分析工 具40提供。 在本發(fā)明的一個實施例中,在跟蹤模塊20中提供兩種不同的跟蹤 操作模式,稱為非循環(huán)精確跟蹤操作模式和循環(huán)精確跟蹤操作模式。 在任一操作模式中,可以輸出包括指令跟蹤和/或數據跟蹤的跟蹤流且 壓縮電路與提供編碼格式的壓縮方案有關,用于編碼需要在跟蹤流中 輸出的各種跟蹤元素。在特定的壓縮方案中,支持的各種編碼格式在 位組合格式編碼空間中不重疊,使得跟蹤分析工具可以從任意特定位 組合格式唯一地識別該位組合格式代表的跟蹤元素。直到現在,對于 所選的跟蹤操作模式,跟蹤模塊20的壓縮電路應用的壓縮方案是預定 和固定的。雖然這種方法在很多情況下的運行可以令人滿意,但是對 于在一些情況下足夠顯著變化的被監(jiān)控電路的活動,折中壓縮效率變 成越來越平常的事。因為跟蹤數據量在包括芯片上跟蹤機制的現代系 統(tǒng)中是顯著的問題,在仍處于特定跟蹤操作模式時,即在產生相同基 本類型的跟蹤元素時,提供用于變更壓縮方案機制的本發(fā)明的實施例 可以給予壓縮效率的明顯改善,由此減小產生的跟蹤數據總量。下面 將更詳細描述本發(fā)明的特定實施例。圖4示出了根據本發(fā)明特定實施例的圖3的跟蹤發(fā)生器120,其中 跟蹤發(fā)生器中的壓縮電路由多個壓縮電路210、 220、 230組成。如圖4 所示,具有關于產生的跟蹤元素的被監(jiān)控電路所產生的任意數據元素 在跟蹤發(fā)生器120內從同步電路100轉發(fā)到跟蹤元素發(fā)生電路200,該 跟蹤元素發(fā)生器然后以已知的方式產生跟蹤元素流。該跟蹤元素流然 后被提供到壓縮電路,在圖4所示的實施例中,該壓縮電路由n個壓 縮電路210、 220和230組成。這些壓縮電路被布置為采用不同的壓縮 方案且在任意特定時間點經由多路復用器240選擇來自于這些壓縮電 路之一的輸出,以產生從跟蹤發(fā)生器120輸出到FIFO 130的包跟蹤流。 盡管在一個實施例中所有的壓縮電路將并行運行,典型地是僅多個壓 縮電路中的一個壓縮電路將正常操作從而避免不必要功耗的情況。在跟蹤發(fā)生器120中還提供壓縮分析電路250,至少在測試操作周 期,該分析電路250可以接收來自各個壓縮電路的輸出且比較它們, 以判斷哪個壓縮電路產生最有效的壓縮。在這種測試操作周期中,壓 縮電路210、 220和230可以被布置為對跟蹤元素發(fā)生器200產生的相 同的原始跟蹤元素流進行并行地操作,這些電路的輸出被路由回壓縮 分析電路250。在該周期中,壓縮電路之一可以被選擇為其輸出實際形 成跟蹤流的活動壓縮電路,多路復用器240選擇該壓縮電路的輸出。 作為備選,在測試操作周期中,壓縮電路210、 220和230中的每一個 壓縮電路可以依次被選擇以壓縮預定時間,再次在壓縮分析電路250 中比較結果。當壓縮電路中的每一個壓縮電路已經用了一段時間時, 壓縮分析電路250然后可以比較從各個壓縮電路獲得的結果且基于該 結果選擇用于跟蹤發(fā)生器120產生的未來包的更合適的壓縮電路。應當理解,基于各個壓縮電路產生的結果在壓縮分析電路中進行 的實際比較可以具有各種形式。不過,在一個實施例中,壓縮分析電 路為每個壓縮電路保留跟蹤數據計數,該跟蹤數據計數識別各個壓縮電路輸出的壓縮跟蹤數據的字節(jié)數,使得壓縮分析電路然后能夠選擇 在測試操作周期中產生最少輸出跟蹤數據字節(jié)數的壓縮電路。一旦壓縮分析電路已經進行分析,它就輸出信號以識別壓縮電路, 該壓縮電路被選擇以執(zhí)行跟蹤元素發(fā)生器200輸出的連續(xù)跟蹤元素的 壓縮。該輸出可以直接轉發(fā)到相關壓縮電路和/或多路復用器240,或 備選地,如圖4所示可以采用存儲在(多個)控制寄存器140的編碼 選擇字段255 (此處也稱為壓縮指定字段)內的選擇信號的形式。同時 這種編碼選擇字段255可以設置在控制寄存器140中,應當意識到不 需要該字段物理上是控制寄存器140之一,而是選擇信號可以存儲在 能夠存取跟蹤發(fā)生器120的任意合適存儲地點中。圖5示出了本發(fā)明的備選實施例,其中壓縮分析電路250可以接 收用于實現合適壓縮電路選擇的附加信息。實際上,在本實施例中, 壓縮分析電路250被稱為壓縮方案選擇電路250,因為可選地,它可以 被該附加信息直接驅動,而不使用任意特定壓縮電路輸出的結果。然 而,如虛線所述,壓縮電路的輸出返回壓縮方案選擇電路250,在一個 實施例中,當判斷選擇合適的壓縮電路時,壓縮方案選擇電路仍然參 考各個壓縮電路獲得的壓縮結果。然而,如圖5所示,壓縮方案選擇電路250還通過路徑265接收 附加信號,且具體而言,接收被監(jiān)控電路產生(或者實際上,數據處 理系統(tǒng)內的任意其他合適的電路)的壓縮提示信號,該壓縮提示信號 用于在任意特定時間點在選擇合適壓縮電路中輔助壓縮方案選擇電 路。作為示例,壓縮提示可以被監(jiān)控電路插入到被監(jiān)控電路輸出的數 據元素中,以識別可能在合適的壓縮方案中做出改變的活動中的變化。
這些壓縮提示可以被壓縮方案選擇電路250使用以觸發(fā)測試操作周期 的重新評估性能,壓縮方案選擇電路250然后以參考圖4早先描述的 方式使用各個壓縮電路輸出的結果,以判斷選擇了哪個壓縮電路。然 而,備選地,例如基于壓縮電路理解它正進行什么活動以及由此需要 被跟蹤的活動的一般形式,壓縮提示可以有效地識別被認為是適用于 未來跟蹤包的那個壓縮方案。除了特定壓縮提示,壓縮方案電路250還可以例如通過參考從被 監(jiān)控電路輸出的一些數據元素,尋求分析被監(jiān)控電路的活動的特定屬 性。例如,壓縮方案選擇電路250可以監(jiān)控"線程"識別寄存器(也稱 為"語境"識別寄存器),以判斷任意特定時間點運行的應用,且基于該 信息執(zhí)行一些關于壓縮方案的改變是否合適的分析。作為示例,壓縮 方案選擇電路250可以設置有指示當運行特定應用時可以應用第一壓 縮方案、且當運行不同應用時可以應用第二壓縮方案的信息,壓縮方 案選擇電路250能夠從線程識別寄存器的分析中判斷運行了哪個應用 且相應地將使用哪個壓縮方案。在一些實施例中,例如,當監(jiān)控為嵌 入控制或運行實時操作系統(tǒng)(RTOS)而設計的處理器時,類似的分析 將通過分析哪個存儲器地址被存取而執(zhí)行,以判斷運行了哪個應用。當使用圖4的實施例時,壓縮方案選擇電路250的結果可以直接 輸出到相關壓縮電路和/或多路復用器240,或者被存儲在適當的控制 寄存器140中設置的編碼選擇字段255中。圖6示出了跟蹤發(fā)生器的備選實施例,其中壓縮分析電路250被 省略,而是外部離線地進行這種壓縮分析。作為示例,基于從跟蹤模 塊20的跟蹤發(fā)生器120隨時間接收的跟蹤流,這種壓縮分析可以在跟 蹤分析器工具中進行。選擇信號然后可被產生且經過路徑275路由到 編碼選擇字段255,以由此控制壓縮電路210、 220和230的未來選擇。雖然為了便于理解,圖4至6中示出的各種壓縮電路以物理分離 的電路示出,但是應當意識到在一些實施例中,這些電路可以彼此共 享邏輯的很大一部分。具體而言,盡管每個壓縮電路代表可以使用的 不同壓縮方案,但是任意特定壓縮方案內提供的大量編碼格式可以與 其他壓縮方案共享。例如,在一個實施例中,第一壓縮方案可以提供 用于p報頭的一個或多個編碼格式,該編碼格式占用第二壓縮方案中 提供的用于p報頭的一些不同編碼格式的重疊位組合格式編碼空間。
然而,在兩個壓縮方案之間,用于編碼其他報頭或與報頭相關的有效 載荷部分的其他編碼方案可以不改變,且因此用于實施這兩種不同壓 縮方案的壓縮電路將實際彼此共享邏輯的很大一部分。圖7示出了跟蹤發(fā)生器120的備選實施例,其中不是提供預定數 目的壓縮電路和相應地預定數目的可能壓縮方案,而是提供可重配置 壓縮電路300,在一個實施例中,該可重配置壓縮電路300可以具有現 場可編程門陣列(FPGA)設備的形式。可重配置壓縮電路300可以通 過路徑330從定義存儲在諸如閃存310的存儲器設備中信息的壓縮方 案重新編程。該信息將典型地通過用于在時間周期上分析跟蹤發(fā)生器 120產生的跟蹤流的外部壓縮分析工具產生,且假設隨著時間的推移將 出現相似的跟蹤元素形式,基于該信息發(fā)展合適的壓縮方案,該壓縮 方案將實現用于在跟蹤模塊處于相同跟蹤操作模式中產生的跟蹤流的 未來包的壓縮效率的改善。因此,在這種實施例中,不是僅在預定數 目的預定壓縮方案之間進行選擇,這種方法使得更優(yōu)化的壓縮方案被 發(fā)展且根據發(fā)展的壓縮方案重新編程可重配置壓縮電路。給定需要進行這種分析和發(fā)展特定壓縮方案的時間,典型地期望 分析將在芯片外進行,例如在跟蹤分析器中進行。不過,在一些實施 例中,這種分析可以仍在跟蹤發(fā)生器120內、在芯片上進行,可重配 置壓縮電路300然后基于定義內部產生的信息的壓縮來重新編程。圖8示出了根據本發(fā)明的一個實施例可以在跟蹤分析器40中設置 的邏輯。首先,跟蹤流被包解壓縮邏輯400接收,基于用于產生跟蹤 流包的壓縮方案的理解,該包解壓縮邏輯400然后解壓縮包成組成的 跟蹤元素。解釋邏輯410然后使用該跟蹤元素來構建關于這些跟蹤元 素指示的被監(jiān)控電路中進行的活動的執(zhí)行信息。為了進行這種分析, 解釋邏輯410典型地參考程序圖像420,該程序圖像420提供被監(jiān)控電 路執(zhí)行的程序代碼的復本。分析430然后進行任意所需的其他分析, 例如,以幫助處理指令序列的調試,用于執(zhí)行仿形操作以判斷特定程 序代碼的性能等。組件400、 410、 420和430可以設置在標準跟蹤分析 器工具40中。根據本發(fā)明的一個實施例,跟蹤分析器工具40可以另外包括壓縮 分析邏輯440以進行跟蹤模塊20內的壓縮電路應用的壓縮效率的分 析。為了進行這種分析,壓縮分析邏輯440接收輸入到跟蹤分析器工
具40的跟蹤流以及包解壓縮邏輯400解壓縮的跟蹤元素流。在一個實 施例中,壓縮分析邏輯440然后可以使用編碼數據庫450中很多已知 的壓縮方案對于相同的跟蹤元素序列進行各種不同壓縮,且基于此判 斷這些壓縮方案中的任意一個是否將給于比從跟蹤模塊20接收的跟蹤 流中實現的壓縮更高效的壓縮。如果如此,這些壓縮方案中的一個壓 縮方案被選擇,且編碼選擇信號通過路徑445輸出以控制跟蹤模塊20 的跟蹤發(fā)生器120內的未來壓縮。例如,該信息可以被路由到控制寄 存器140的編碼選擇字段255以控制哪個壓縮電路被選擇用于跟蹤元 素的未來壓縮。在備選實施例中,如果跟蹤發(fā)生器120包括可重配置壓縮電路 300,壓縮分析邏輯440可以尋求得出特定的壓縮方案,該壓縮方案目 標在于基于包解壓縮邏輯400解壓縮的跟蹤元素的一些子集的分析, 提供更優(yōu)化的壓縮,判斷的壓縮方案的定義然后通過路徑445輸出且 用于重新編程跟蹤發(fā)生器120的可重配置壓縮電路。然而,進行壓縮分析,壓縮分析邏輯440還可存取程序圖像420, 使得當被監(jiān)控電路執(zhí)行程序圖像中設置的代碼時,壓縮分析邏輯440 可以判斷分析的跟蹤元素部分是否將代表期望的一般活動。這可以用 作這種情況的核查點,其中通過確保參考程序圖像做出核查以尋求判 斷這種變化是否傾向于給出壓縮效率中的長期節(jié)省,壓縮分析邏輯440 判斷另一壓縮方案可能更加適合。如上所述,跟蹤模塊20中的跟蹤發(fā)生器120產生包括多個包的跟 蹤流。圖9示出了這種跟蹤流的部分的示例,且用于解釋該包可以具 有不同的尺寸且包含不同的元素。在一個實施例中,每個包包含報頭 500、 510、 515,在一個特定實施例中,這些報頭由一個字節(jié)的信息組 成。包可以單獨地由報頭組成,諸如前面提到的p報頭示例,其中報 頭編碼產生的原子序列以表達被監(jiān)控電路的執(zhí)行活動,或者備選地可 以被可選的有效載荷部分505、 520跟隨。有效載荷部分的大小可以改 變。在一個實施例中,如相關報頭部分的內容判斷的,有效栽荷的大 小可以依賴于跟蹤的信息的類型。備選地,用于特定跟蹤信息條的有 效載荷大小可以改變,在跟蹤流中提供一些同步信息以識別任意特定 有效栽荷部分的長度或結尾。任意特定壓縮方案中設置的處理報頭和各種可選有效載荷的壓縮
格式可以具有各種形式,但是特定壓縮方案中提供的各種編碼格式將 不重疊,使得任意特定數據塊可以通過跟蹤分析器唯一地解碼以識別 其中代表的跟蹤元件。因此,舉例而言,盡管存在用于由一個字節(jié)數據組成的報頭的256種可能編碼,但是僅這些編碼的一部分將可用于 編碼p報頭,該編碼空間的其他部分用于編碼其他類型的報頭。為了 增加任意特定壓縮方案內可用的編碼格式的數量,必須增加可用位組 合格式的總尺寸,但這將增加總跟蹤帶寬.根據本發(fā)明的實施例,如稍早討論的,提供一種機制,該機制能 夠使得用于特定跟蹤操作模式的壓縮方案變化,使得多個壓縮方案可 以用于特定跟蹤操作模式,每個這種壓縮方案的位組合格式編碼空間 重疊這些壓縮方案中另一個壓縮方案的位組合格式編碼空間。在任意 特定時間點,僅這些編碼方案之一被使用且被識別為當前編碼方案, 但是響應于壓縮變化激勵,壓縮方案可以切換到不同壓縮方案,此后 出現在跟蹤流中的特定位組合格式可以具有與不同壓縮方案相關的跟 蹤流中較早出現的相應位組合格式不同的意義。圖IO是示出根據本發(fā)明一個實施例的圖4中壓縮電路210、 220、 230和壓縮分析電路250中可以執(zhí)行的步驟的流程圖。在步驟600,進 入壓縮分析電路的測試模式,此時為每個壓縮電路保存的跟蹤數據計 數復位。在步驟605,處理等待從跟蹤元素發(fā)生器200接收跟蹤元素序 列,此后在步驟610、 620和630,每一個壓縮電路210、 220、 230使 用相關的壓縮方案壓縮該跟蹤元素序列。每個壓縮電路產生的結果然 后轉發(fā)到壓縮分析電路250,在步驟612、 622、 632,該壓縮分析電路 250使得為每個壓縮電路維持的相關跟蹤數據計數增加這些壓縮電路 產生的跟蹤數據量。在圖10的示例中,假設每個壓縮電路能夠在測試操作模式中并行地操作,但是稍早提及的,在備選實施例中,每個壓 縮電路可以依次使用特定時間周期,在該特定時間周期產生跟蹤元素。 應當意識到在后面一個實施例中,壓縮分析電路將仍為各種壓縮電路 維持單獨的跟蹤數據計數。在步驟640,判斷測試周期是否結束,且如果為否,處理返回步 驟605。然而, 一旦測試周期結束,參考基于從各個壓縮電路的輸出維 持的跟蹤數據計數信息,壓縮分析電路250在步驟645選擇最合適的 壓縮方案。
此后,在步驟650,判斷當前選擇的壓縮方案,即,實際產生跟 蹤流中輸出的包的那個壓縮方案是否是在步驟645被選擇為最合適方 案的那個方案。如果如此,不需要其他行為且測試模式在步驟660退 出。然而,如果當前方案不是最佳方案,則在步驟655,發(fā)射壓縮變化 激勵,在圖4的示例中,它具有存儲在控制寄存器140的編碼選擇字 段255中的選擇信號的形式,以控制哪個壓縮電路用于產生被包括在 跟蹤流中的后續(xù)包。圖ll是示出根據本發(fā)明的一個實施例,圖8中示出的跟蹤分析器 40的包解壓縮邏輯400和壓縮分析邏輯440可以執(zhí)行的步驟序列的流 程圖。在步驟700,跟蹤流部分被選擇以進行分析,此后在步驟705, 包解壓縮邏輯400用于將跟蹤流解壓縮成相關跟蹤元素。此后,在步 驟710,使用編碼數據庫450中識別的所有其他可用壓縮方案重新壓縮 這些跟蹤元素。此后在步驟715,基于為提供的跟蹤元素產生最少量跟 蹤數據的方案,選擇最有效的方案。此后,在步驟720,壓縮變化激勵 通過路徑445發(fā)射,且在本實施例中,可以具有路由到控制寄存器140 的編碼選擇字段255的選擇信號的形式,如稍早圖6中示出。圖12示出了根據本發(fā)明的備選實施例的包解壓縮邏輯400和壓縮 分析邏輯440可以執(zhí)行的備選步驟序列。在步驟750,跟蹤流的部分被 選擇以分析,此后在步驟755,使用包解壓縮邏輯400解壓縮該部分以 識別相關跟蹤元素。此后,在步驟760,分析跟蹤元素以識別可壓縮特 征。例如,這可以涉及識別游程長度編碼或用于識別合適壓縮特性的 其他已知技術壓縮的相同形式的跟蹤元素序列。此后,在步驟765,基于步驟760識別的壓縮特征設計新的壓縮方 案,此后在步驟770,發(fā)射壓縮變化激勵。在這種情況下,壓縮變化激 勵將需要定義新的壓縮方案。這種實施例可以用在跟蹤模塊20中的壓縮電路能夠重配置的情 況。例如,如果壓縮電路包括FPGA設備,可以基于壓縮變化激勵重 新編程FPGA。因此,在步驟775,基于壓縮變化激勵重新配置跟蹤發(fā) 生電路,使得然后根據新識別的壓縮方案進行壓縮。圖13是示意性示出當提供本發(fā)明的實施例的機制以在仍處于相 同跟蹤操作模式中實現壓縮方案的變化時可以獲得的壓縮效率的改 善。圖13基于下面的考慮。 考慮兩字節(jié)編碼協(xié)議,如下 協(xié)議1:格式l: 10EEEEEO (依次編碼0-31個E原子) 格式2: 11NNNNNO (依次編碼0-31個N原子)協(xié)議2:格式l: 11FFFFF0 (編碼5個原子,每個原子是E或N原子) 格式2: 101FFFF0 (編碼4個原子,每個原子是E或N原子) 格式3: 1001FFF0 (編碼3個原子,每個原子是E或N原子) 格式4: 10001FFO (編碼2個原子,每個原子是E或N原子) 格式5: 100001FO (編碼1個原子,每個原子是E或N原子) 如果需要編碼原子流ENENEN,則使用協(xié)議1需要6個跟蹤字節(jié), 如果壓縮方案切換到協(xié)議2則僅需要2個跟蹤字節(jié)和變化消息 OPPPPPPP,其中P編碼所選協(xié)議號。具體而言,如圖13所示,使用協(xié)議l,每個E或N原子需要被單 獨的字節(jié)編碼,因為協(xié)議1具有兩個不同的編碼格式,這兩個編碼格 式被設計以優(yōu)化長序列的E或N原子的壓縮,因為使用格式1中的"E" 指示的位位置可以用于指定在序列中一個接一個出現的E原子的數 目,且類似地,使用格式2,使用N指示的位位置可用于識別特定序 列中出現的N原子的數目。因此,協(xié)議1將不適合壓縮被單獨的N原 子跟隨的單獨的E原子。與此相反,協(xié)議2能夠編碼任意類型的1個、 2個、3個、4個或5個原子的編碼序列,因為F識別的每個位位置可 用于識別E原子(通過設置位位置為1)或N原子(通過設置位位置 為0)。因此,協(xié)議1的格式1可用于經由單字節(jié)編碼0至31個E原子序 列,且類似地,協(xié)i5Cl的格式2可用于經由單字節(jié)編碼0至31個N原 子序列。盡管當編碼大序列的E或N原子時,這可以給出明顯的壓縮 效率,然而很清楚,對于上面討論的每個E原子被N原子跟隨的特定 原子序列,它卻并不十分有效,而是,假設期望類似的序列發(fā)生足夠 的時間周期以做出值得的切換,經由圖13中所示的協(xié)議交換字節(jié)0X02 的選擇壓縮方案2更好。圖14是示出在跟蹤流的不同部分中相同位組合格式怎樣依賴于 壓縮方案可以表示其他意義的圖示。圖14基于下面的考慮。 考慮兩種字節(jié)編碼協(xié)議,如下 協(xié)議1:格式l: 1EEEEEE0 (依次編碼0-63個E原子) 格式2: 1NNNNNN1 (依次編碼0誦63個N原子)協(xié)議2:格式l: 1EEEENN0 (編碼(M5個E原子,接著是0至3個N原子)格式2: 1NNNNEE1 (編碼0-15個N原子,接著是0至3個E原子)且變化消息為OPPPPPPP,其中P編碼所選協(xié)i義號。因此,在經由跟蹤流中出現的變化消息OxOl的協(xié)議l的選擇之后, 下面圖14中示出的兩字節(jié)信息用于編碼兩個E原子,接著是8個N原 子。如果由于某種原因,判斷此時壓縮方案的變化是合適的,且具體 而言如變化消息0x02所識別的,選擇壓縮協(xié)議2,則可以看出,后面 兩個字節(jié)可以實際具有和采用協(xié)議1時使用的兩個字節(jié)完全相同的兩 個位組合格式,但是現在編碼兩個N原子,且接著另外兩個N原子, 第一字節(jié)使用格式1且第二字節(jié)使用協(xié)議2的格式2。從上述本發(fā)明實施例的討論應當理解,這種實施例使得壓縮方案 中的變化能夠仍在特定跟蹤操作模式中發(fā)生。存在很多帶來這種變化 的方式。在一個實施例中,跟蹤電路可以動態(tài)地調適壓縮方案為所選 集之一。為此,可以同時比較多個技術,選擇被認知為提供最佳壓縮 的一個壓縮方案,或者備選地,通過小的測試片段可以嘗試多個不同 的技術且然后決定被認知為提供最佳壓縮的一個壓縮方案。如上面討 論的,在備選實施例中,跟蹤分析工具可用于分析跟蹤輸出且判斷最 佳壓縮技術,且然后產生用于切換跟蹤電路應用的壓縮方案的選擇信 號。備選地,跟蹤分析工具可以分析跟蹤輸出且判斷更優(yōu)選的壓縮方 案,且然后重新編程跟蹤電流中的可配置壓縮電路,從而采用該壓縮 方案以用于跟蹤電路產生的未來包。在一個實施例中,跟蹤電路可以被布置以指示哪個壓縮方案被跟 蹤流中包括的變化壓縮字節(jié)使用,使得負責解壓縮跟蹤流的邏輯可以 動態(tài)地調適到新的壓縮方案。這種方法在壓縮方案發(fā)生變化時執(zhí)行解 壓縮的跟蹤分析工具不被直接控制的情況是尤其有利的。因為根據本發(fā)明的實施例,多種意義可以在相同的位組合格式上 重疊,位組合格式的總尺寸可以明顯小于一個壓縮協(xié)議中支持所有這 些意義的情況,因此,這比通過使用不同壓縮方案直接實現的減小更 顯著減小總跟蹤帶寬。通過實現較低的跟蹤信息帶寬,可以實現較少 芯片上存儲、較少芯片外存儲以及較少的用于發(fā)射芯片外跟蹤的引腳 的需求。雖然在本發(fā)明的實施例的上述描述中,示例集中于p報頭的壓縮, 但是本發(fā)明的實施例的概念也可以應用于跟蹤壓縮的任意其他領域, 諸如數據值和地址以及其他包格式的壓縮。除了進行不同壓縮方案的分析,根據本發(fā)明的實施例,其他機制 可用于操縱壓縮方案的選擇。例如,如稍早提及的,基于下面已知的 代碼,可以使用程序代碼以提示跟蹤電路將使用什么壓縮方案。這種 提示例如將通過編譯器插入到代碼中。而且,在一些實施例中,上述壓縮方案切換機制將用于粗略地關 閉一些壓縮技術。對于一些壓縮技術,解壓縮算法的時間和空間復雜 度可能使其不能集成基于硬件的解壓縮或者集成能夠執(zhí)行足夠操作次 數以執(zhí)行軟件中算法的處理器以滿足系統(tǒng)的性能需求。壓縮方案切換 機制將用于粗略地使得一些壓縮技術失效,以減小時間復雜度或空間 復雜度或解壓縮算法。因此,例如,如果存在一些芯片上提供的自診 斷軟件,該軟件具有用于解碼芯片上捕獲的蹤跡的跟蹤模塊,但是芯 片上處理器不夠強大到足以在充足的時間內完成解碼,則壓縮將失效, 以有利于進行必要解碼的芯片上軟件。這種機制同樣應用于可用于解 碼蹤跡的芯片上硬件,例如用于校驗和目的或用于實時跟蹤分析。盡管此處已經描述了特定實施例,但應當理解本發(fā)明不限于此且 可以在本發(fā)明的范圍內做出很多修改和添加。例如,使用獨立權利要 求的特征將得出下面相關權利要求的特征的各種組合,而不偏離本發(fā) 明的范圍。
權利要求
1. 跟蹤電路,用于產生指示數據處理裝置被監(jiān)控電路的活動的跟蹤流,該被監(jiān)控電路產生指示所述活動的數據元素,且該跟蹤電路包括跟蹤元素發(fā)生電路,響應于至少一些由被監(jiān)控電路產生的數據元素,產生代表那些至少一些數據元素的跟蹤元素,產生的跟蹤元素與選擇的跟蹤電路的跟蹤操作模式有關;以及壓縮電路,用于向跟蹤元素序列應用編碼操作以產生其位組合格式代表跟蹤元素序列的包,使得該包在跟蹤流中輸出,應用的編碼操作依賴于與所述壓縮電路相關的當前壓縮方案;同時在選擇的跟蹤操作模式中,該壓縮電路響應于壓縮變化激勵以將當前的壓縮方案從第一壓縮方案變化為第二壓縮方案,該第二壓縮方案的位組合格式編碼空間覆蓋該第一壓縮方案的位組合格式編碼空間,使得在壓縮方案改變之后,在所選跟蹤操作模式中根據第二壓縮方案產生任意其他包。
2. 根據權利要求1所述的跟蹤電路,還包括 壓縮方案選擇電路,用于應用預先確定的標準以判斷何時改變當前壓縮方案,且基于所述判斷使得所述壓縮變化激勵被產生。
3. 根據權利要求2所述的跟蹤電路,其中所述壓縮電路包括多個壓縮元件,每個壓縮元件實施不同的壓縮 方案且能夠進行所述編碼操作;所述壓縮方案選擇電路被布置為產生選擇信號以選擇所述壓縮元 素之一作為其壓縮方案是當前壓縮方案的壓縮元件,使得該選擇的壓 縮元件產生用于被跟蹤流包括的包;并且該壓縮方案選擇電路被布置為通過變更選擇信號產生所述壓縮變 化激勵。
4. 根據權利要求3所述的跟蹤電路,其中至少在測試操作周期中, 所述壓縮元件的每一個被布置為進行編碼操作,產生的包被壓縮方案 選擇電路接收,壓縮方案選擇電路對產生的包進行分析操作以判斷經 由選擇信號選擇所述壓縮元件中的哪一個壓縮元件。
5. 根據權利要求1所述的跟蹤電路,其中壓縮電路是可重配置電 路,且當被發(fā)送時,壓縮變化激勵包括用于重新配置該可重配置電路 的信息,從而實施第二壓縮方案。
6. 根據權利要求5所述的跟蹤電路,其中壓縮電路包括雙重可重 配置電路,使得被配置成實施所述第一壓縮方案的可重配置電路中之 一被布置為在接收壓縮變化激勵之后繼續(xù)操作,同時另一可重配置電 路根據所述壓縮變化激勵重新配置,在這種重新配置之后,另一可重 配置電路用于根據第二壓縮方案產生后續(xù)包。
7. 根據權利要求5所述的跟蹤電路,其中可重配置電路是可編程 邏輯設備,且壓縮變化激勵存儲在用于重編程可編程邏輯設備的存儲 設備中。
8. 根據權利要求2所述的跟蹤電路,其中被監(jiān)控電路輸出提示信 號,且這些提示信號被路由到壓縮方案選擇電路,以用于當判斷是否 改變當前壓縮方案時參考。
9. 根據權利要求2所述的跟蹤電路,其中當判斷是否改變當前壓 縮方案時,壓縮方案選擇電路響應于被監(jiān)控電路活動的一個或多個屬 性。
10. 根據權利要求9所述的跟蹤電路,其中所述一個或多個屬性之 一是指示被監(jiān)控電路內執(zhí)行的當前線程的線程識別寄存器中保存的 值。
11. 根據權利要求9所述的跟蹤電路,其中所述一個或多個屬性之 一是由被監(jiān)控電路存取的存儲器地址區(qū)域。
12. 根據權利要求1所述的跟蹤電路,還包括控制寄存器,該控制寄存器具有用于存儲壓縮變化激勵的壓縮指 定字段,壓縮電路參考控制寄存器的壓縮指定字段,以判斷何時改變 當前壓縮方案。
13. 根據權利要求1所述的跟蹤電路,其中當當前壓縮方案變化時, 壓縮電路被布置為在跟蹤流中輸出變化信號,以指示已經做出了變化, 使得用于分析跟蹤流的跟蹤分析裝置可以判斷壓縮方案何時變化,從 而正確地解釋跟蹤流中的包。
14. 一種數據處理裝置,包括被監(jiān)控電路,用于產生指示被監(jiān)控電路活動的數據元素;以及 根據權利要求1所述的跟蹤電路,用于產生指示所述被監(jiān)控電路 活動的跟蹤流。
15. —種跟蹤分析裝置,用于分析根據權利要求1所述的跟蹤電 路產生的跟蹤流,該跟蹤分析裝置包括包解壓縮邏輯,用于解碼跟蹤流中的包,以判斷每個所述包代表 的跟蹤元素序列;以及壓縮方案選擇邏輯,用于接收跟蹤流和包解壓縮邏輯判斷的跟蹤 元素,且應用預定的標準來判斷何時改變當前壓縮方案,且基于所述 判斷產生所述壓縮變化激勵。
16. 根據權利要求15所述的跟蹤分析裝置,其中 跟蹤邏輯的所述壓縮電路支持預定數目的壓縮方案; 所述壓縮方案選擇邏輯被布置為產生選擇信號來識別哪個壓縮方案是當前的壓縮方案;并且所述壓縮方案選擇邏輯被布置為通過變更選擇信號產生所述壓縮 變化激勵。
17. 根據權利要求15所述的跟蹤分析裝置,其中壓縮變化激勵包 括定義將用作當前壓縮方案的第二壓縮方案的信息。
18. 根據權利要求15所述的跟蹤分析裝置,其中當應用所述預定 標準以判斷是否改變當前壓縮方案時,壓縮方案選擇邏輯參考程序圖 像。
19. 一種改變用于產生指示數據處理裝置被監(jiān)控電路活動的跟蹤 流的由跟蹤電路應用的壓縮方案的方法,被監(jiān)控電路產生指示所述活 動的數據元素,且該方法包括以下步驟響應于至少一些由被監(jiān)控電路產生的數據元素,產生代表那些至 少一些數據元素的跟蹤元素,產生的跟蹤元素與選擇的跟蹤電路的跟 蹤操作模式有關;以及對跟蹤元素序列應用編碼操作以產生其位組合格式代表跟蹤元素 序列的包,且在跟蹤流中輸出該包,應用的編碼操作與當前壓縮方案有關;同時在所選的跟蹤操作模式中,響應于壓縮變化激勵,將當前壓 縮方案從第一壓縮方案變化為第二壓縮方案,第二壓縮方案的位組合 格式編碼空間重疊第一壓縮方案的位組合格式編碼空間,使得在壓縮 方案改變之后,在所選跟蹤操作模式中根據笫二壓縮方案產生任意其 他包。
20. —種包括計算機程序的計算機程序產品,通過執(zhí)行以下步驟, 該計算機程序使得計算機分析根據權利要求19所述的方法產生的跟蹤 元素流解碼跟蹤流中的包,以判斷每個所述包代表的跟蹤元素序列;以及參考跟蹤流和從跟蹤流的包解碼的跟蹤元素,應用預定標準來判 斷何時改變當前壓縮方案,且基于所述判斷產生壓縮變化激勵。
全文摘要
產生用于數據處理裝置的跟蹤流的技術。提供跟蹤電路和操作這種跟蹤電路的方法,用于產生指示數據處理裝置被監(jiān)控電路的活動的跟蹤流。該被監(jiān)控電路產生指示這些活動的數據元素,且該跟蹤電路包括跟蹤元素發(fā)生電路,響應于至少一些被監(jiān)控電路產生的數據元素,產生代表這些數據元素的跟蹤元素,產生的跟蹤元素與選擇的跟蹤電路的跟蹤操作模式有關。壓縮電路然后被布置為向跟蹤元素序列應用編碼操作以產生位組合格式代表跟蹤元素序列的包,且使得該包在跟蹤流中輸出,應用的編碼操作依賴于與壓縮電路相關的當前壓縮方案。同時在選擇的跟蹤操作模式中,該壓縮電路響應于壓縮變化激勵以將當前的壓縮方案從第一壓縮方案變化為第二壓縮方案,該第二壓縮方案的位組合格式編碼空間覆蓋該第一壓縮方案的位組合格式編碼空間,使得在壓縮方案改變之后,在所選跟蹤操作模式中根據該第二壓縮方案產生任意其他包。已經發(fā)現這種方法提供改善的壓縮效率由此減小產生的跟蹤數據量。
文檔編號G06F11/36GK101398782SQ20081016812
公開日2009年4月1日 申請日期2008年9月28日 優(yōu)先權日2007年9月28日
發(fā)明者J·M·霍爾利, P·R·戈奇 申請人:Arm有限公司