專利名稱:用于非侵入跟蹤的方法和裝置的制作方法
技術領域:
本發(fā)明涉及用于跟蹤發(fā)生在基于處理器的設備上的事件的方法和裝置,尤其涉及用于非侵入跟蹤的方法和裝置系統(tǒng)。
背景技術:
現(xiàn)代微處理器高度復雜。它們通常包括多個部件,能夠以非常高的速度執(zhí)行多種任務。許多現(xiàn)代設備通常包括一個或多個處理器、控制器和各種存儲器模塊,包括高速緩存存儲器。
已知各種用于提取可以反映計算機化的系統(tǒng)怎樣工作的信息的系統(tǒng)和方法。這些裝置包括片上調(diào)試器、片上仿真器等。
IEEE-ISTO 5001TM標準,也稱為NEXUS,定義了一種用于嵌入式控制應用的標準調(diào)試接口。NEXUS提供了相對有限數(shù)量的調(diào)試信息,但是能夠控制處理器。追蹤的信息可以經(jīng)由專用I/O管腳或經(jīng)由JTAG接口發(fā)送,但并非必需這樣。
下面的美國專利和專利申請都在此通過引用結合進來,提供了現(xiàn)有技術調(diào)試和仿真裝置及方法的某些狀態(tài)的例子Smolders的題為“System for tracing hardware counters utilizing programmed traceinterrupt after each branch instruction or at the end of each code basicblock”的美國專利6,253,338;Williams等的題為“Accessing diagnosticprogram counter value data within data processing system”的美國專利申請2002/0049893;Edwards等的題為“Circuit for storing traceinformation”的美國專利6,615,370;以及VanHuben等的題為“Programmable hardware event monitoring method”的美國專利6,134,676。
需要提供表示基于處理器的復雜系統(tǒng)的行為的大量信息,尤其是提供有關互相相關事件的信息。
除了已知標準所需要的信息之外,還需要提供跟蹤信息,而不阻止標準跟蹤信息在標準化接口上的提供。
發(fā)明內(nèi)容
本發(fā)明允許提供可以反映多個計數(shù)器值的跟蹤信息,這多個計數(shù)器值是對所選擇的事件進行計數(shù)。除了所述這些值,或者作為對所述這些值的替代,跟蹤信息還可以包括附加的跟蹤信息。附加的跟蹤信息包括下列至少一個程序計數(shù)器值、處理器的特權級別以及任務ID。
本發(fā)明允許對一個或多個計數(shù)器的內(nèi)容進行采樣,以響應接收到的附加跟蹤信息。
本發(fā)明允許提供有關與處理器相關聯(lián)的事件的信息以及有關處理器之外的部件的事件的信息。
本發(fā)明提供一種用于非侵入跟蹤的裝置,該裝置包括(i)多個計數(shù)器,用于對多個選擇的事件進行計數(shù);(ii)多個影子寄存器,連接到多個計數(shù)器,用于以無縫的方式對多個計數(shù)器進行采樣,從而提供多個計數(shù)器值,以響應觸發(fā)事件;(iii)計數(shù)器和寄存器邏輯,連接到多個計數(shù)器以及多個影子寄存器,用于控制多個計數(shù)器和多個影子寄存器的操作;以及(iv)跟蹤邏輯,連接到多個影子寄存器,適于(i)接收多個計數(shù)器值,并且接收包括至少一個程序計數(shù)器值以及處理器特權級別指示和任務ID至少之一的附加跟蹤信息,和(ii)輸出多個計數(shù)器值和附加跟蹤信息至少之一。
本發(fā)明提供一種用于非侵入跟蹤的方法,該方法包括(i)由多個計數(shù)器對選擇的事件進行計數(shù);(ii)對多個計數(shù)器進行采樣以提取多個計數(shù)器值,以響應預定觸發(fā)事件;(iii)接收包括至少一個程序計數(shù)器值、處理器特權級別指示和/或任務ID的附加跟蹤信息;以及(iv)輸出多個計數(shù)器值或附加跟蹤信息,或這二者都輸出,作為跟蹤信息。
通過下面的詳細描述,結合附圖,將更全面地理解和認識本發(fā)明,在附圖中圖1是根據(jù)本發(fā)明一個實施例的系統(tǒng)的示意圖;圖2是根據(jù)本發(fā)明一個實施例的調(diào)試和仿真單元的示意描繪;圖3-5圖示說明根據(jù)本發(fā)明一個實施例的各種控制寄存器;以及圖6-7是根據(jù)本發(fā)明實施例的用于非侵入跟蹤的方法的流程圖。
具體實施例方式
圖1圖示說明了根據(jù)本發(fā)明一個實施例的系統(tǒng)100。系統(tǒng)100包括數(shù)字信號處理器(稱為DSP或處理器)110、數(shù)據(jù)通道130、存儲器管理單元(MMU)300、指令通道340、一級RAM存儲器370以及接口單元380。
處理器110、指令通道340、共享存儲器370和MMU 300連接到一個程序總線120。指令通道340包括指令高速緩存模塊350和負責對指令高速緩存模塊350進行指令取和預取的指令取單元(IFU)360。
DSP 110具有第一數(shù)據(jù)端口116和第二數(shù)據(jù)端口118。第一數(shù)據(jù)端口116經(jīng)由第一數(shù)據(jù)總線(XA)122連接到數(shù)據(jù)通道130的第一端口132,連接到MMU 300以及連接到一級RAM存儲器370。第二數(shù)據(jù)端口118經(jīng)由第二數(shù)據(jù)總線(XB)124連接到數(shù)據(jù)通道130的第二端口134,連接到MMU 300以及連接到一級RAM存儲器370。為了簡化解釋,與每一數(shù)據(jù)和地址總線相關聯(lián)的地址總線沒有顯示出來。
數(shù)據(jù)通道130經(jīng)由數(shù)據(jù)取總線126連接到接口380,接口380又連接到一個或多個附加的存儲器,諸如高等級存儲器50。附加存儲器可以是多級高速緩存架構的一部分,而數(shù)據(jù)通道內(nèi)的數(shù)據(jù)高速緩存模塊是第一級高速緩存模塊,其他的存儲器是二級高速緩存和/或存儲器。它們也可以是被稱為主存儲器的外部存儲器的一部分。
MMU 300包括硬件保護單元320,用于提供程序和數(shù)據(jù)硬件保護,還包括轉換單元310,用于高速虛擬地址到物理地址的轉換。MMU 330還能夠提供各種高速緩存和總線控制信號。虛擬地址是由處理器100生成的地址,通過由處理器110執(zhí)行的代碼來查看。物理地址用于訪問各種存儲器組。
數(shù)據(jù)通道130包括跟蹤寫緩沖器(TWB)160;多個存儲器實體(統(tǒng)標為162),諸如高速緩存存儲器和一個或多個附加的寫緩沖器;以及數(shù)據(jù)控制單元(DCU)150,其在TWB 160和其他存儲器實體162的總線請求之間仲裁。DCU 150可以應用各種公知仲裁方案。方便地,DCU 150根據(jù)預定優(yōu)先級在各種總線請求之間仲裁。TWB 160通常發(fā)布來自TWB 160的低優(yōu)先級總線請求,但在某些情況下也可以發(fā)布高優(yōu)先級總線請求。
圖2是根據(jù)本發(fā)明一個實施例的調(diào)試和仿真(profiling)單元(DPU)500的示意描繪。
DPU 500包括多個計數(shù)器,諸如計數(shù)器611-616,其被安排成兩組,每組3個計數(shù)器,DPU 500還包括多個影子寄存器(shadow register)621-626、計數(shù)器和寄存器邏輯610、ID比較邏輯645、NEXUS接口675、接口629和多個跟蹤邏輯單元,多個跟蹤邏輯單元諸如跟蹤寫管理單元640、第一切換單元650、壓縮器655、第二切換單元670和跟蹤信息邏輯652。DPU 500連接到片上仿真器(也稱為EOnCE)單元502,連接到諸如NEXUS塊504的高等級跟蹤信息部件,以及連接到TWB160。根據(jù)本發(fā)明的其他實施例,跟蹤邏輯可以包括以下至少一個ID比較邏輯645、NEXUS接口675、接口629、在上述基礎上增加單元或減少單元。片上仿真單元,諸如EOnCE單元502,是本領域公知的。EOnCE單元502在SC140eTMDSP Core Reference Manual的第4章中有描述,在此通過引用結合進來。
EOnCE單元502允許對各種寄存器、程序計數(shù)器(PC)等的特定量的訪問。其與JTAG接口單元相連接以提供JTAG兼容信號(測試數(shù)據(jù)輸入TDI、測試數(shù)據(jù)輸出TDO、測試時鐘輸入TCK、測試模式選擇輸入TMS和測試復位TRST)。
簡單地說,EOnCE單元502包括EOnCE控制器、事件計數(shù)器、跟蹤單元、事件檢測單元、事件選擇器和同步單元。事件檢測單元包括六個地址事件檢測通道EDCA5~EDCA0,每個都能夠在與第一或第二數(shù)據(jù)總線XA 122和XB 124相關聯(lián)的地址線上檢測特定地址(或者屬于特定地址范圍的地址)的出現(xiàn)。
EOnCE單元502可以工作于各種操作模式,并且用于跟蹤各種事件,包括(i)TEXEXT-跟蹤每一執(zhí)行集合的PC,(ii)TMARK-跟蹤包括MARK指令的執(zhí)行集合的PC,(iii)TCHOF-跟蹤包括預定流改變指令的指令集合的源和目標PC,(iv)TLOOP-跟蹤硬件循環(huán)的執(zhí)行,對于長循環(huán),跟蹤最后地址和開始地址的PC,對于短循環(huán),只跟蹤最后地址的PC,(v)TSUB-跟蹤包括子程序調(diào)用或返回指令的執(zhí)行集合的源和目標PC,(vi)TRTE-跟蹤包括從異常指令返回的執(zhí)行集合的源和目標PC,以及(vii)TINT-跟蹤中斷和異常的中斷點和目標PC。此外,在跟蹤事件時,可以跟蹤計數(shù)器值和擴展計數(shù)器值。
一般地,一旦發(fā)生了流改變,EOnCE單元502可以提供一個或多個程序計數(shù)器值以及用于反映處理器的特權級別的任務標志。
計數(shù)器和寄存器邏輯610包括多個控制寄存器,諸如控制寄存器710-736,用于確定計數(shù)器611-616對哪些事件進行計數(shù),哪些事件將使得影子寄存器621-626以非侵入的方式采樣計數(shù)器611-616。
計數(shù)器611-616中每一計數(shù)器都是31位下計數(shù)寄存器,其可以工作在單步計數(shù)模式和跟蹤模式。在前一種模式,計數(shù)器從特定編程值到0進行計數(shù),然后建立事件并停止計數(shù)。這個事件可以使得處理器110進入調(diào)試模式,可以觸發(fā)調(diào)試異?;蛘{(diào)試中斷。在后一種模式,計數(shù)器保持計數(shù),達到0,循環(huán)環(huán)繞并繼續(xù)計數(shù)。計數(shù)器611-616的內(nèi)容在跟蹤事件時由影子寄存器621-626讀取。
DPU 500能夠經(jīng)由TWB 160將EOnCE生成或DPU 500生成的跟蹤信息寫到虛擬跟蹤緩沖器(VTB)670。其還能夠將跟蹤信息寫到外部NEXUS塊504。
方便地,VTB 670是高等級存儲器模塊50內(nèi)的存儲空間,由儲存在各個控制寄存器中的起始地址和結束地址定義,后面將描述??刂萍拇嫫鬟€保存指向應該接收跟蹤信息的當前存儲器條目的指針。
跟蹤寫管理單元640控制跟蹤信息寫到VTB 670的過程。跟蹤信息可以以三種可能的模式從VTB 670寫出。當工作于改寫模式時,跟蹤寫地址循環(huán)到起始地址,跟蹤數(shù)據(jù)改寫舊的數(shù)據(jù)。這種跟蹤模式使得能夠查看指引到斷點或錯誤點的跟蹤信息。當工作于單一地址模式時,跟蹤信息被寫入一個可編程地址。這允許將跟蹤信息寫入諸如串行接口單元的外圍設備。當工作于跟蹤事件請求模式時,一旦VTB 670被填滿,VTB 670中的信息可以定期地被讀取。DPU 500可以生成激活VTB 670讀操作的中斷,例如通過DMA。跟蹤信息可包括DPU生成的跟蹤信息(諸如六個寄存器611-616的內(nèi)容)、EOnCE單元生成的跟蹤信息和壓縮的EOnCE單元生成的跟蹤信息。第一和第二切換單元650和670接收控制信息,用于選擇輸出哪個信息。根據(jù)本發(fā)明一個實施例,跟蹤信息可以包括這些信息的組合。根據(jù)本發(fā)明另一實施例,VTB 670可以接收特定跟蹤信息,同時NEXUS塊504接收其他跟蹤信息。這個區(qū)分可以通過現(xiàn)有邏輯部件而簡單地得到利用。
EOnCE單元生成的信息被壓縮單元655壓縮,壓縮單元655可以提供下面將提及的壓縮方案或者各種公知的壓縮方案。根據(jù)本發(fā)明一個實施例,壓縮器通過刪除冗余循環(huán)信息而壓縮EOnCE單元生成的跟蹤信息。例如,如果跟蹤信息反映出短硬件循環(huán)的出現(xiàn),僅寫入循環(huán)的最后地址和執(zhí)行循環(huán)的次數(shù)。如果跟蹤信息反映出長硬件或軟件循環(huán)的出現(xiàn),只寫入循環(huán)的最后地址或循環(huán)的起始地址以及執(zhí)行循環(huán)的次數(shù)。DPU通過短循環(huán)標志來標記短硬件循環(huán)的出現(xiàn),而用長循環(huán)標志來指示長軟件或硬件循環(huán)的出現(xiàn)。
TWB 160有八個256位條目的深度。當TWB 160填滿時,它發(fā)送高優(yōu)先級總線請求到DCU 150,否則,它發(fā)送低優(yōu)先級總線請求到DCU150。
通過確定要被跟蹤的信息的數(shù)量和類型的控制信號,可以控制到VTB 670的訪問,以及到TWB 160、隨后到VTB 670的跟蹤信息流。
跟蹤信息可以包括多個跟蹤標志。每一跟蹤標志具有唯一的值,其不能被解釋為其他的跟蹤信息,諸如程序地址。跟蹤標志,除了虛標志之外,指示跟蹤信息的類型。跟蹤標志包括用戶任務標志、超級用戶任務標志、短循環(huán)標志、長循環(huán)標志、VTB填滿標志和虛標志。
有兩種任務標志——用戶任務標志和超級用戶任務標志。因此,任務標志反映了任務的特權級別。用戶任務標志指示處理器工作在用戶特權級別,還包括任務ID。超級用戶任務標志指示處理器工作在超級用戶特權級別。VTB虛和填滿標志用于TWB填補,并且不傳送跟蹤信息。
根據(jù)本發(fā)明一個實施例,表1說明了示例的標志格式。位0的值為X表示它可以是0或1,取決于使用該標志的環(huán)境(參見表2)。
表1
DPU基本地址是不能被解釋為程序計數(shù)器值的唯一地址。
在第一操作模式,當發(fā)生任務切換時,DPU 500可以保存下列信息前一任務的最后PC、計數(shù)器611-616的值、新任務的第一PC以及新任務的任務標志。EOnCE單元502將被編程,從而同時跟蹤中斷和RTE指令。任務標志包括有關處理器特權級別的指示。
在第二操作模式,當處理器跳轉到子程序或中斷程序或從子程序或中斷程序返回時,DPU 500保存信息。一旦發(fā)生了這樣的事件,EOnCE單元502向DPU 500發(fā)送源PC和目標PC。一旦接收到這樣的PC對,DPU 500對下列信息采樣跳轉到子程序或中斷程序或從子程序或中斷程序返回之前的最后的PC、計數(shù)器611-616的值、任務標志和流改變后的第一PC。EOnCE單元502被編程,從而跟蹤下列流改變指令跳轉到中斷程序、從中斷服務程序返回、跳轉到子程序以及從子程序返回。
在第三操作模式,當設置PD_TC 740中的采樣(SAMPLE)位時,DPU 500保存下列信息任務標志、計數(shù)器611-616的值、以及虛標志,虛標志用以確保每一跟蹤消息的大小是256比特。一旦第一信息部分被發(fā)送到TWB 160,采樣位復位。
在第四操作模式,當EOnCE的地址事件檢測通道EDCA5生成事件,其可以是該單元檢測到的任何類型的斷點時,DPU 500保存信息。保存下列信息任務標志、計數(shù)器611-616的值、以及虛標志。
在第五操作模式,一旦執(zhí)行到跟蹤數(shù)據(jù)寄存器(在圖5中標為DP_TD 750)的寫訪問,則將其內(nèi)容寫入到TWB 160。
以特定格式將跟蹤信息寫入到TWB 160。跟蹤條目是任何數(shù)目的來自DPU 500的寫操作,其生成作為一個跟蹤事件的結果。跟蹤條目包括上面提及標志中的至少一個,并且方便地,具有表2所示的格式。本領域技術人員將認識到,也可以使用其他的格式。
表2
根據(jù)上述格式,寫入TWB 160的第一跟蹤信息的特征在于LSB值為1,其后跟隨的是附加跟蹤信息,其特征在于LSB值為0。這使得跟蹤信息容易解析。
DPU 500包括多個控制寄存器。大部分這些控制寄存器屬于計數(shù)器和寄存器邏輯610,但某些屬于跟蹤寫管理單元640和ID比較邏輯645。這些寄存器包括一般控制寄存器、計數(shù)器控制寄存器和跟蹤緩沖器寄存器。
跟蹤信息邏輯652連接到第一切換單元650,從EOnCE單元502接收跟蹤信息,比較至少某些該信息與預定的(通常是編程的)值,并且響應于所述部分,可以開始一個或多個觸發(fā)事件。跟蹤信息邏輯652連接到計數(shù)器和寄存器邏輯610以便提供關于出現(xiàn)一個或多個觸發(fā)事件的指示。
圖3圖示說明了根據(jù)本發(fā)明一個實施例的各種一般控制寄存器。一般控制寄存器包括控制寄存器(DP_CR)700,狀態(tài)寄存器(DP_SR)702,監(jiān)控寄存器(DP_MR)704,PID檢測參考值寄存器(DP_RPID)706和DID檢測參考值寄存器(DP_RDID)708。
控制寄存器(DP_CR)700包括兩個ID比較位(TIDCM,位29-28),其定義ID比較邏輯645是否考慮數(shù)據(jù)任務ID和/或指令任務ID或都不考慮。
某些位(位27-14)指示各種EOnCE生成事件(ISEDACA5~ISEDACA0,位27-16)、EOnCE生成中斷請求(EIS,位14)是否可以導致到程序中斷控制器(PIC)(未示出)的0、1或2個中斷請求。DP_CR 70剩下的位(位13-0)指示是否將中斷請求發(fā)送到PIC或將調(diào)試請求發(fā)送到EOnCE單元502,以響應計數(shù)器生成事件(DECB2~DECA0,位11-0)或與跟蹤相關的事件(DETB,位13-12)。
狀態(tài)寄存器(DP_SR)702包括跟蹤緩沖器有效位(TWBA,位6),表示TWB 160中是否有跟蹤信息沒有到達VTB 670,還包括六個計數(shù)器使能位(ENCB2~ENCA0,位5-0),每位表示是否啟動或停用各計數(shù)器。
監(jiān)控寄存器(DP_MR)704包括跟蹤緩沖器滿位(TBF,位9),表示TWB 160滿,還包括多個位(DRA、DRN、DRTB、DRCB2~DRCA0),表示現(xiàn)有調(diào)試請求或中斷的原因。這些原因可以是外部調(diào)試請求、NEXUS調(diào)試請求、跟蹤事件、或與六個計數(shù)器之一相關聯(lián)的事件。
PID檢測參考值寄存器(DP_RPID)706包括8位參考程序ID值(RPID,位7-0)以便由ID比較邏輯645進行比較。
DID檢測參考值寄存器(DP_RDID)708包括8位參考數(shù)據(jù)ID值(RDID,位7-0)以便由ID比較邏輯645進行比較。
圖4圖示說明了根據(jù)本發(fā)明一個實施例的某些計數(shù)器控制寄存器。計數(shù)器控制寄存器包括第一計數(shù)器集合寄存器(DP_TAC)710,第二計數(shù)器集合寄存器(DP_TBC)712,第一到第六計數(shù)器控制寄存器(DP_C1~DP_C6)714-724,以及第一到第六計數(shù)器值寄存器(DP_C1~DP_C6)726-736。
第一計數(shù)器集合寄存器(DP_TAC)710包括集合禁用模式特權級別位(TDMP,位29-28),其確定可能需要的ID值之外的、可以禁用計數(shù)器集合的操作的特權級別(用戶或超級用戶)。DP_TAC進一步包括用于規(guī)定禁用寄存器集合的事件的位(TDM,位27-24),并且尤其規(guī)定哪個EDCA與可禁用計數(shù)器集合的事件相關聯(lián)。除了上述的位之外,DP_TAC還包括寄存器集合模式特權位(TENMP,位21-20),其定義可以啟動計數(shù)器的事件(也稱為跟蹤事件)的特權級別,還包括啟動寄存器集合的事件的位(TENM,位19-16),以及計數(shù)事件群特權級別位(CEGP,位13-12),其定義了包括跟蹤事件的任務的特權級別。這些位之后是計數(shù)器事件群位(CEG,位8-4),其表示正在對哪一跟蹤事件集合進行計數(shù),還有計數(shù)器集合模式寄存器位(CMODE,位2-1),其定義計數(shù)器集合是否操作于單步計數(shù)模式或跟蹤模式,最后是TCEN位(位0),其確定寄存器是否單獨被控制或受到集體控制。
第二計數(shù)器集合寄存器(DP_TBC)712與第一計數(shù)器集合寄存器710相同,但控制第二計數(shù)器集合614-616。
六個計數(shù)器控制寄存器(DP_C1~DP_C6)714-724中的每一個都與計數(shù)器集合寄存器DP_TAC相似,但控制單獨計數(shù)器而不是控制寄存器集合。最不重要位被禁用。
六個計數(shù)器值寄存器(DP_C1~DP_C6)726-736中的每一個都保存六個計數(shù)器每個的31位計數(shù)器值,其用作初始計數(shù)值以及啟動之后的進行中的計數(shù)器值。
圖5圖示說明了各種跟蹤單元寄存器,諸如跟蹤控制寄存器(DP_TC)740、VTB起始地址寄存器(DP_TSA)742、VTB結束地址寄存器(DP_TSA)744、跟蹤事件請求寄存器(DP_TER)746、跟蹤寫指針寄存器(DP_TW)748、以及跟蹤數(shù)據(jù)寄存器(DP_TD)750。
跟蹤控制寄存器(DP_TC)740包括特權位(PROV,位21),表示VTB寫訪問的特權。DP_TC 740還包括全局操作屬性(GLOBAL,位20-19)、表示對VTB 670的寫操作的突發(fā)大小(通常一個、兩個、四個或八個BDU)的突發(fā)大小位(BURST-SIZE,位17-16)、以及暫時禁用位(TMPDIS,位12),用于允許刷新TWB 160的內(nèi)容,以便驗證所有跟蹤信息都到達VTB 670。DP_TC 740進一步包括虛擬跟蹤緩沖器寫模式位(VTBWM,位9-8),表示跟蹤信息是否將要以改寫模式、單一地址模式或跟蹤事件請求模式來寫。這些位之后是采樣計數(shù)器值到VTB位(SAMPLE,位6)以及跟蹤模式位(TMODE,位4-1),表示正在輸出的跟蹤信息,諸如EOnCE生成跟蹤信息、壓縮EOnCE生成跟蹤信息(以及添加的任務標志)、具有附加跟蹤信息的六個計數(shù)器的值。DP_TC 740的最不重要位是使能位(EN),表示是否啟動跟蹤。
VTB起始地址寄存器(DP_TSA)742儲存虛擬跟蹤緩沖器760的開始的32位物理地址。VTB結束地址寄存器(DP_TSA)744儲存虛擬跟蹤緩沖器760的結尾的32位物理地址。跟蹤事件請求寄存器(DP_TER)746儲存VTB 670內(nèi)的32位地址,在此應該生成中斷或調(diào)試請求。當DPU 500操作為跟蹤事件請求事件模式時,對該地址寫。跟蹤寫指針寄存器(DP_TW)748儲存到VTB 670條目的32指針,在此寫入當前跟蹤信息。跟蹤數(shù)據(jù)寄存器(DP_TD)750儲存應該以特定操作模式寫入VTB 670的數(shù)據(jù)。
方便地,可以設置計數(shù)器集合來追蹤事件集合。表3圖示說明了三個寄存器的集合所跟蹤的各種事件集合。
表3
圖6是根據(jù)本發(fā)明一個實施例的用于非侵入跟蹤的方法800的流程圖。方法800開始于步驟810,通過多個計數(shù)器對所選擇事件進行計數(shù)。參看圖2中所述的例子,計數(shù)器和寄存器邏輯610確定計數(shù)寄存器611-616對哪個跟蹤事件進行計數(shù)。該確定響應于各種控制寄存器的內(nèi)容,這些內(nèi)容有助于單獨控制每一計數(shù)器,或甚至有助于基于事件集合進行控制。控制寄存器可以在初步配置步驟805期間進行配置。從框810到其自身的箭頭表示事件計數(shù)的同時方法800執(zhí)行步驟820和830。
方法800進一步包括采樣多個計數(shù)器的步驟820,用以以非侵入方式提取多個計數(shù)器值,以響應預定觸發(fā)事件。參看圖2所述的例子,影子寄存器621-626適于在接收到觸發(fā)事件時對計數(shù)器611-616的內(nèi)容進行采樣。觸發(fā)事件是預定的,尤其是使用各種控制寄存器。每一影子寄存器都可以執(zhí)行采樣操作,而不管其他影子寄存器的情況。
步驟820之后是輸出多個計數(shù)器值作為跟蹤信息的步驟830。參看前面圖中所述的例子,接口645能夠以各種方式輸出跟蹤信息。
圖7是根據(jù)本發(fā)明一個實施例的方法900的流程圖。
方法900開始于步驟805,其后是步驟810和820。
與這些步驟平行,方法900包括步驟910,接收附加跟蹤信息,諸如EOnCE生成的跟蹤信息。步驟910之后是步驟920和925。步驟920包括壓縮跟蹤信息。步驟925包括將ID與壓縮的或沒有壓縮的EOnCE生成跟蹤信息相關聯(lián),ID可以是數(shù)據(jù)ID或信息ID。
步驟925和820之后是步驟860,選擇應該輸出哪個信息作為跟蹤信息。這可以只是三種跟蹤信息類型之一或者其可以是它們的組合。方便地,如果選擇輸出壓縮的跟蹤信息,則可以只添加任務ID信息,而不添加計數(shù)器值。
步驟860之后是步驟960,輸出跟蹤信息。這可以包括將信息經(jīng)由TWB 160寫入VTB 670,和/或將至少某些信息經(jīng)由NEXUS接口675寫入NEXUS塊504。
這里所述的實施例的變化、修改及其他實現(xiàn)對于本領域普通技術人員來說是顯然的,不背離本發(fā)明所要求保護的精神和范圍。因此,本發(fā)明不限定于前面的說明性描述,而是由權利要求的精神和范圍來限定。
權利要求
1.一種用于非侵入跟蹤的裝置,所述裝置包括多個計數(shù)器,用于對多個選擇的事件進行計數(shù);多個影子寄存器,連接到多個計數(shù)器,用于以無縫的方式對多個計數(shù)器進行采樣,從而提供多個計數(shù)器值,以響應觸發(fā)事件;計數(shù)器和寄存器邏輯,連接到多個計數(shù)器以及多個影子寄存器,用于控制多個計數(shù)器和多個影子寄存器的操作;以及跟蹤邏輯,連接到多個影子寄存器,適于(i)接收多個計數(shù)器值并且接收包括至少一個程序計數(shù)器值的附加跟蹤信息,和(ii)輸出多個計數(shù)器值和附加跟蹤信息至少之一。
2.權利要求1的裝置,進一步包括跟蹤寫管理單元,適于控制跟蹤信息到虛擬跟蹤緩沖器的寫過程。
3.權利要求2的裝置,進一步包括跟蹤寫緩沖器,用于接收跟蹤信息以及用于將跟蹤信息提供給虛擬跟蹤緩沖器。
4.權利要求1的裝置,進一步包括壓縮器,適于壓縮跟蹤信息。
5.權利要求4的裝置,其中所述壓縮器適于通過刪除表示循環(huán)的出現(xiàn)的跟蹤信息來壓縮跟蹤信息。
6.權利要求5的裝置,其中所述壓縮器適于通過提供循環(huán)標志來提供對于循環(huán)的出現(xiàn)的指示,該指示反映了循環(huán)重復數(shù)目以及循環(huán)地址。
7.權利要求1的裝置,其中所述多個計數(shù)器被安排為計數(shù)器集合,其中所述計數(shù)器和寄存器邏輯用于對寄存器集合進行編程從而跟蹤事件集合。
8.權利要求1的裝置,進一步適于響應于事件而開始中斷。
9.權利要求1的裝置,進一步適于提供跟蹤信息給高等級跟蹤信息組件。
10.權利要求1的裝置,其中,至少一個觸發(fā)事件是預定附加跟蹤信息的接收。
11.權利要求1的裝置,其中,至少一個觸發(fā)事件是流改變事件。
12.權利要求1的裝置,其中,至少一個觸發(fā)事件是被跟蹤的處理器的特權級別的改變。
13.一種用于非侵入跟蹤的方法,所述方法包括由多個計數(shù)器對選擇的事件進行計數(shù);對多個計數(shù)器進行采樣以提取多個計數(shù)器值,以響應預定觸發(fā)事件;接收包括至少一個程序計數(shù)器值的附加跟蹤信息;以及輸出多個計數(shù)器值和附加跟蹤信息至少之一,作為跟蹤信息。
14.權利要求13的方法,進一步包括將跟蹤信息寫入虛擬跟蹤緩沖器。
15.權利要求13的方法,進一步包括壓縮附加跟蹤信息以提供壓縮的跟蹤信息。
16.權利要求15的方法,其中所述的壓縮包括刪除表示循環(huán)的出現(xiàn)的跟蹤信息。
17.權利要求15的方法,其中所述的壓縮產(chǎn)生了包括循環(huán)標志的對于循環(huán)的出現(xiàn)的指示,該指示反映了循環(huán)重復的數(shù)目和循環(huán)地址。
18.權利要求13的方法,進一步包括配置計數(shù)器集合以對事件集合計數(shù)的初步步驟。
19.權利要求13的方法,其中,至少一個觸發(fā)事件是預定附加跟蹤信息的接收。
20.權利要求13的方法,其中,至少一個觸發(fā)事件是流改變事件。
21.權利要求13的方法,其中,至少一個觸發(fā)事件是被跟蹤的處理器的特權級別的改變。
22.權利要求1的裝置,其中所述附加跟蹤信息進一步包括處理器特權級別指示。
23.權利要求13的方法,其中所述附加跟蹤信息進一步包括處理器特權級別指示。
24.權利要求13的方法,其中所述跟蹤數(shù)據(jù)包括跟蹤標志。
25.權利要求24的方法,其中所述跟蹤標志選自任務標志、超級用戶任務標志、短循環(huán)標志、長循環(huán)標志、和VTB填滿標志。
26.權利要求1的裝置,其中所述輸出跟蹤數(shù)據(jù)包括跟蹤標志。
27.權利要求27所述的裝置,其中所述跟蹤標志選自任務標志、超級用戶任務標志、短循環(huán)標志、長循環(huán)標志、和VTB填滿標志。
28.一種用于非侵入跟蹤的裝置,所述裝置包括多個計數(shù)器,用于對多個選擇的事件進行計數(shù);多個影子寄存器,連接到多個計數(shù)器,用于以無縫的方式對多個計數(shù)器進行采樣,從而提供多個計數(shù)器值,以響應觸發(fā)事件;計數(shù)器和寄存器邏輯,連接到多個計數(shù)器以及多個影子寄存器,用于控制多個計數(shù)器和多個影子寄存器的操作;以及跟蹤邏輯,連接到多個影子寄存器,適于輸出多個計數(shù)器值中至少之一。
29.一種用于非侵入跟蹤的方法,所述方法包括由多個計數(shù)器對選擇的事件進行計數(shù);對多個計數(shù)器進行采樣以提取多個計數(shù)器值,以響應預定觸發(fā)事件;輸出多個計數(shù)器值,作為跟蹤信息。
全文摘要
公開一種用于非侵入跟蹤的方法和裝置。方法包括由多個計數(shù)器對選擇的事件進行計數(shù);對多個計數(shù)器進行采樣以提取多個計數(shù)器值,以響應預定觸發(fā)事件;接收包括至少一個程序計數(shù)器值的附加跟蹤信息;以及輸出多個計數(shù)器值和附加跟蹤信息至少之一,作為跟蹤信息。
文檔編號G06F11/00GK101040263SQ200580034886
公開日2007年9月19日 申請日期2005年9月13日 優(yōu)先權日2004年9月14日
發(fā)明者伊塔伊·佩萊德, 摩西·安舍爾, 尤里·達揚, 雅各布·埃弗拉特, 亞伯拉罕·霍恩 申請人:飛思卡爾半導體公司