專利名稱:處理器和開發(fā)支持設備的制作方法
技術領域:
本發(fā)明涉及一種可以從外部觀察其程序執(zhí)行狀態(tài)的信息處理設備(處理器),以及一種采用該處理器的開發(fā)支持設備。
本申請基于日本專利申請第2004-309611號,通過參考將其合并于此。
背景技術:
跟蹤信息輸出功能是一種將處理器的程序執(zhí)行狀態(tài)輸出到外部主計算機上操作的調試器(debugger)中的功能。當采用該處理器的系統(tǒng)檢測到程序執(zhí)行特定異常操作時,系統(tǒng)開發(fā)者可以從異常性檢測點檢查所積累的跟蹤信息,并且可以跟蹤該程序的執(zhí)行歷史,并識別異常操作的起因。
然而,對于用來提供開發(fā)支持的設備,由于限制了可以為跟蹤信息的輸出而增加的引腳(pin)數(shù)量,結果同樣限制了用于向處理器輸出該信息的可用帶寬。進而,由于也限制了對跟蹤信息的存儲可用的存儲器容量,以展示在使用可用的有限跟蹤輸出帶寬和跟蹤存儲器容量時所獲得的最大效果,所以需要對跟蹤信息的壓縮。
此外,隨著CPU速度的增加,為了避免可能影響流水線使用的執(zhí)行干擾,頻繁地采用一系統(tǒng),由此在執(zhí)行用于有條件的執(zhí)行命令的過程期間發(fā)布命令,并根據(jù)是否已經建立附加條件來確定伴隨著寄存器更新的命令的執(zhí)行(提交)。
用于CPU的跟蹤信息輸出的相關示例方法是一種用于通過采用執(zhí)行條件標記來獲得跟蹤信息的執(zhí)行標記跟蹤方法(參見,例如,ARM有限公司的“ARM IHI 00141,Embedded Trace Macrocell Architecture Specification(嵌入式跟蹤宏單元結構規(guī)范)”)。
在執(zhí)行標記跟蹤過程中,對每個命令的執(zhí)行而向外部輸出為關于執(zhí)行條件的芯片提供的信息?;谠摳櫺畔⑤敵?,外部調試器在比較該跟蹤信息輸出和在源程序中的信息的同時分析命令的執(zhí)行狀態(tài),使得可以準備和追溯執(zhí)行歷史。
現(xiàn)在將參考圖來描述基于這個原理的處理器和執(zhí)行歷史追溯軟件。圖29是示出輸出了跟蹤信息的相關處理器的配置的方框圖。在圖29中,處理器包括CPU 300、編碼電路310、以及包生成電路320。
CPU 300向編碼電路310輸出命令發(fā)布信號301、命令執(zhí)行條件建立信號302、以及操作數(shù)檢測信號303,并向包生成電路320輸出操作數(shù)數(shù)據(jù)304。當已經建立命令執(zhí)行條件時,將命令發(fā)布信號301和命令執(zhí)行條件建立信號302設置到“1”,并且當沒有建立命令執(zhí)行條件時,將命令發(fā)布信號301設置到“1”并將執(zhí)行條件建立信號302設置到“0”。當生成操作數(shù)信息時,將操作數(shù)檢測信號303設置到“1”。
編碼電路310接收命令發(fā)布信號301、命令執(zhí)行條件建立信號302、以及操作數(shù)檢測信號303,并向包生成電路320輸出編碼數(shù)據(jù)輸出選擇信號311、編碼數(shù)據(jù)312、以及用于該編碼數(shù)據(jù)312的位計數(shù)值313。將在后面描述編碼電路310的細節(jié)。
包生成電路320接收編碼數(shù)據(jù)輸出選擇信號311、編碼數(shù)據(jù)312、位計數(shù)值313、操作數(shù)檢測信號303、以及操作數(shù)數(shù)據(jù)304,并將跟蹤包輸出狀態(tài)信號131輸出到跟蹤狀態(tài)輸出端150,和將跟蹤包132輸出到跟蹤數(shù)據(jù)輸出端151。將在后面描述包生成電路320的細節(jié)。
圖30是示出編碼電路310的內部布置的方框圖。在圖30中,編碼電路310包括計數(shù)器314、移位寄存器315、以及比較器316和317。
移位寄存器315使用命令發(fā)布信號301作為移位使能信號,并使用命令執(zhí)行條件建立信號302作為移入信號,并且生成意指指示命令執(zhí)行狀態(tài)的標記字符串的編碼數(shù)據(jù)312。計數(shù)器314使用命令發(fā)布信號301作為計數(shù)使能信號,并生成用于編碼數(shù)據(jù)312的位計數(shù)值313。
比較器316比較位計數(shù)值313和在比較器316中設置的值,并且當兩個值比配時,將計數(shù)匹配信號318設置到“1”。比較器317比較位計數(shù)值313和“0”,并且當位計數(shù)值313不是“0”時,將計數(shù)匹配信號319設置到“1”。通過對計數(shù)匹配信號318和命令發(fā)布信號301的邏輯乘積(logical product)以及計數(shù)匹配信號319和操作數(shù)檢測信號303的邏輯乘積進行邏輯和(logicalsum),生成了編碼數(shù)據(jù)輸出選擇信號311。
圖31是示出包生成電路320的內部布置的方框圖。在圖31中,包生成電路320包括有效位計數(shù)/位計數(shù)生成電路323、包ID存儲電路326、跟蹤數(shù)據(jù)匯集(assembling)電路328、FIFO寫入控制電路329、以及FIFO隊列333。
有效位計數(shù)/位計數(shù)生成電路323生成與位計數(shù)值313的最低有效三位一致的有效位計數(shù)324、和與等于或大于位計數(shù)值313的最低有效第四位的值一致的有效字節(jié)計數(shù)325。包ID存儲電路326存儲作為常量的包ID 327。
跟蹤數(shù)據(jù)匯集電路328接收包ID 327、編碼數(shù)據(jù)312、有效位計數(shù)324、編碼數(shù)據(jù)輸出選擇信號311、操作數(shù)檢測信號303、以及操作數(shù)數(shù)據(jù)304。當編碼數(shù)據(jù)輸出選擇信號311指示“1”時,跟蹤數(shù)據(jù)匯集電路328生成包括包ID 327、有效位計數(shù)324、以及編碼數(shù)據(jù)312的數(shù)據(jù)字符串,將該數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù),作為跟蹤數(shù)據(jù)331。
當操作數(shù)檢測信號303指示“1”時,跟蹤數(shù)據(jù)匯集電路328生成包括包ID 327和操作數(shù)數(shù)據(jù)304的數(shù)據(jù)字符串,將該數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù),作為跟蹤數(shù)據(jù)331。
此外,當輸出第一個有效數(shù)據(jù)作為跟蹤數(shù)據(jù)331時,跟蹤數(shù)據(jù)匯集電路328也輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號330。當輸出第二個和接下來的跟蹤數(shù)據(jù)時,將跟蹤數(shù)據(jù)輸出狀態(tài)信號330設置為“0”。
FIFO寫入控制電路329接收有效字節(jié)計數(shù)325、編碼數(shù)據(jù)輸出選擇信號311以及操作數(shù)檢測信號303,并生成將被傳送到FIFO隊列333的寫入使能信號332,以便處理跟蹤數(shù)據(jù)輸出狀態(tài)信號330和跟蹤數(shù)據(jù)331。
FIFO隊列333接收跟蹤數(shù)據(jù)狀態(tài)信號330、跟蹤數(shù)據(jù)331以及寫入使能信號332,與用于跟蹤數(shù)據(jù)輸出的參考時鐘同步地接收移位數(shù)據(jù),并以輸入跟蹤包輸出狀態(tài)信號131和跟蹤包132的順序來輸出跟蹤包輸出狀態(tài)信號131和跟蹤包132。
圖5是示出在包ID存儲電路326中存儲的包ID的圖。在圖5中,對各個包ID錄入“包ID”、“消息名稱”、以及“記憶符號(mnemonic)”。
當“包ID”是“0b00”時,“消息名稱”是“Idle”,而“記憶符號”是“IDLE”。當“包ID”是“0b01”時,“消息名稱”是“Taken Flag”,而“記憶符號”是“TE”。當“包IF”是“0b10”時,“消息名稱”是“Taken Count”,而“記憶符號”是“TC”。當“包ID”是“0b11”時,“消息名稱”是“OperandData”,而“記憶符號”是“OD”。
現(xiàn)在將說明用作“消息名稱”條目的“Taken Flag”和“Taken Count”?!癟aken Flag”是表示命令執(zhí)行狀態(tài)的標記字符串(一個當在發(fā)布命令之后建立命令執(zhí)行條件時指示“1”、當在發(fā)布命令之后沒有建立命令執(zhí)行條件時指示“0”的位字符串),其中在接收到命令發(fā)布信號301和命令執(zhí)行條件建立信號302時通過編碼裝置輸出“Taken Flag”作為編碼數(shù)據(jù)。
“Taken Count”是建立命令執(zhí)行條件的次數(shù)(當發(fā)布命令時,繼續(xù)命令執(zhí)行條件建立信號302的次數(shù)=“1”),其中當接收到命令發(fā)布信號301和命令執(zhí)行條件建立信號302時通過編碼裝置輸出該“Taken Flag”作為編碼數(shù)據(jù)。
現(xiàn)在將給出對“Taken Flag”的示例編碼的說明。圖6是示出當輸出編碼數(shù)據(jù)312作為跟蹤數(shù)據(jù)時將通過FIFO隊列333輸出的跟蹤包的格式的圖。
在圖6中,“時鐘”表示用于該跟蹤數(shù)據(jù)輸出的參考時鐘。TRCDAT[7:0]表示被輸出到跟蹤數(shù)據(jù)輸出端151的跟蹤包132的格式,并包括TakenFlag[31:0],指示編碼數(shù)據(jù)312的值;NV[2:0],指示編碼數(shù)據(jù)312的有效位計數(shù)324的值;以及TF,指示包ID的值。TRCSYNC指示將被輸出到跟蹤狀態(tài)輸出端150的跟蹤包輸出狀態(tài)信號131的值。并且“comments(注釋)”表示包傳遞狀態(tài)。
如圖6所示,與“時鐘”同步地,一個字節(jié)接一個字節(jié)地相繼輸出TF、NV[2:0]、以及Taken Flag[31:0]作為跟蹤數(shù)據(jù)。
圖7是示出當輸出操作數(shù)數(shù)據(jù)304作為跟蹤數(shù)據(jù)時通過FIFO隊列333輸出的跟蹤包的格式的圖。
在圖7中,“時鐘”表示用于跟蹤數(shù)據(jù)輸出的參考時鐘,而TRCDAT[7:0]表示輸出到跟蹤數(shù)據(jù)輸出端151的跟蹤包132的格式,TRCDAT[7:0]包括操作數(shù)數(shù)據(jù)[31:0],指示操作數(shù)數(shù)據(jù)304的值;以及OD,指示包ID的值。
圖8是示出開發(fā)支持設備的配置的方框圖。在圖8中,開發(fā)支持設備包括處理器1、跟蹤信息積累器件2、以及主計算機3。
處理器1向跟蹤信息積累器件2輸出跟蹤包輸出狀態(tài)信號131和跟蹤包132。跟蹤信息積累器件2接收跟蹤包輸出狀態(tài)信號131和跟蹤包132,并采用跟蹤存儲器控制器160來控制跟蹤存儲器控制信號163和跟蹤存儲器寫入數(shù)據(jù)164,并且來存儲該信號和該數(shù)據(jù)作為在跟蹤存儲器165中的跟蹤信息。
跟蹤信息積累器件2也從主計算機3接收跟蹤存儲器讀取請求信號161,并采用跟蹤存儲器控制器160來存取跟蹤存儲器165和向主計算機3傳送跟蹤存儲器輸出數(shù)據(jù)162。
在參考圖32至36的同時,現(xiàn)在將說明用主計算機3來獲得來自具有這個布置的處理器的跟蹤數(shù)據(jù)并追溯執(zhí)行歷史的處理。在這個處理中,假設用于圖30的比較器316的比較值是“16”。
圖32是示出用于試樣程序的示例命令的圖,且示出了“命令地址”、“匯編程序”以及“執(zhí)行順序”。按照順序執(zhí)行從在“執(zhí)行順序”(1)中的“命令1”到在“執(zhí)行順序”(14)中的“命令16”的命令。在這個示例中,假設“命令8”和“命令10”是沒有執(zhí)行的命令。
在圖32中,當在地址0x50000000上開始執(zhí)行命令時,每次當CPU發(fā)布命令時都聲明(assert)命令發(fā)布信號301,并在同時輸出命令發(fā)布信號301,輸出提供值為“1”的建立的位或者值為“0”的未建立的位的條件,作為命令執(zhí)行條件建立信號302。當例如發(fā)布16個命令時,輸出結果“1111111010111111”。
在接收到這個結果時,改變由編碼電路310的移位寄存器315輸出的編碼數(shù)據(jù)312,使得它也是“1111111010111111”。此外,當將命令發(fā)布信號301的值當作計數(shù)使能信號時,將計數(shù)器314的位計數(shù)值313增加到“0x10”。當位計數(shù)值313達到“0x10”時,將計數(shù)匹配信號318設置到“1”,對編碼數(shù)據(jù)輸出選擇信號311也是如此。
然后,包生成電路320的有效位計數(shù)/字節(jié)計數(shù)生成電路323輸出“0b101”作為與(位計數(shù)值“0x10”+(NV的)位計數(shù)“0x3”,+(包ID的)位計數(shù)“0x2”)的最小有效三位一致的有效位計數(shù)324,并輸出“0b10”作為與等于或者大于最小有效第四位的值一致的有效字節(jié)計數(shù)325。
當接收到位計數(shù)324并以最小有效位開始時,包生成電路320的跟蹤數(shù)據(jù)匯集電路328布置如下對于TF,包ID=值“0b01”;對于有效位計數(shù)324,NV=值“0b101”、以及Taken Flag=“0b1111111010111111”。
在將編碼數(shù)據(jù)輸出選擇信號311的值改變到“1”之后,F(xiàn)IFO寫入控制電路329與跟蹤輸出的參考時鐘同步地來三次將FIFO寫入使能信號332設置到“1”(=有效字節(jié)計數(shù)325的值+1)。
當接收到寫入使能信號332=“1”時,一個字節(jié)接一個字節(jié)地三次向FIFO隊列333輸出跟蹤數(shù)據(jù)匯集電路328生成的數(shù)據(jù)。同時,輸出數(shù)據(jù)的第一類型,也輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號330。
FIFO 333接收跟蹤數(shù)據(jù)和跟蹤數(shù)據(jù)輸出狀態(tài)信號330,并輸出跟蹤包132和跟蹤包輸出狀態(tài)信號131。圖33是示出當執(zhí)行圖32所示的試樣程序時的跟蹤包的圖。
主計算機3接收圖33所示的包,并從TRCDAT[1:0]獲得包ID=TF,和從TRCDAT[4:2]獲得NV=5。由于NV=5,所以獲得了編碼數(shù)據(jù)FLAG=0b1111111010111111。圖34是示出主計算機3以這種方式從處理器1獲得的跟蹤信息的圖。
現(xiàn)在將說明主計算機3基于圖32的試樣程序和圖34的跟蹤信息追溯執(zhí)行歷史的處理。圖35是示出主計算機3所使用的用來追溯執(zhí)行歷史的算法的流程圖。
在圖35中,在步驟4000中,將IP指定為地址0x50000000,將TP指定為地址0x0,以及將ETP指定為地址0x1。由于TP≠ETP,所以程序控制跳過步驟4001并進入到步驟4002,并且由于跟蹤消息是TF,所以移到步驟4004和4005。此外,由于標記的值為“1”,所以在地址0x50000000上顯示命令1,并將IP增加到地址0x50000000。
由于保留了有效的標記,所以然后在地址0x50000004上顯示命令2,并將IP增加到地址0x50000008。相似地,在地址0x50000008、0x5000000c、0x50000010、0x50000014和0x50000018上分別顯示命令3、命令4、命令5、命令6和命令7。由于與下一個命令8對應的標記值是“0”,所以為IP設置下一個命令9的地址0x50000020,且由于隨后標記的值是“1”,所以在地址0x50000020上顯示命令9,并將IP增加到地址0x50000024。
此外,由于與下一個命令10對應的標記值是“0”,所以為IP設置隨后的命令11的地址0x50000028,且由于隨后標記的值是“1”,所以在地址0x50000028上顯示命令11。相似地,在地址0x5000002c、0x50000030、0x50000034和0x50000038上分別顯示命令12、命令13、命令14和命令15。當完成了對有效標記的數(shù)目的處理時,將TP設置在地址0x1上,且程序控制返回到步驟4001。由于在步驟S4001上確定已經建立了TP=ETP,所以終止了執(zhí)行歷史追溯處理。
圖36是示出通過這個處理獲得的執(zhí)行歷史的圖。在圖36中,示出了“跟蹤存儲器地址”、“跟蹤消息”、“跟蹤包”、“地址”和“追溯的執(zhí)行歷史”,并且可以確認可以追溯圖32所示的試樣程序。
然而,對于相關的技術,問題在于對跟蹤信息的壓縮率低。
具體地,根據(jù)相關的技術,每次執(zhí)行命令時,必須輸出用于為有條件的執(zhí)行命令提供建立的/未建立的位的條件,并且即使當獲得了編碼裝置時,也要為每一個命令不斷地生成每個位的基本信息。另外,增加了高性能CPU在一個周期內發(fā)布的命令數(shù)目,例如發(fā)布三個和四個命令,并且這使跟蹤信息的輸出更加困難。
此外,至少需要一個跟蹤輸出時鐘來輸出執(zhí)行次數(shù)的數(shù)目的信息,且通常地,選擇通過對CPU時鐘進行1/2或者1/4劃分所獲得的、可以向外傳送到芯片的操作頻率,作為跟蹤輸出時鐘。因此,當考慮到CPU的操作頻率和跟蹤時鐘的比率時,跟蹤信息的輸出速率就低于跟蹤信息的生成速率,且即使當準備了具有合適容量的緩沖器時,也會很快使跟蹤輸出無效。就是說,與CPU的實際操作相比,壓縮輸出跟蹤信息的比率低。
此外,與用于有條件的執(zhí)行命令的建立/未建立條件一樣,為了跟蹤與有關命令執(zhí)行狀態(tài)的信息不同的信息,例如為了跟蹤操作數(shù)信息,當生成了該操作數(shù)信息時,必須輸出已經編碼數(shù)據(jù)作為跟蹤信息。由于跟蹤信息包括作為額外信息的包ID和有效位計數(shù),所以這里遇到的問題是,隨著輸出跟蹤信息的次數(shù)的增加,跟蹤信息輸出包的數(shù)目也同樣增加。
發(fā)明內容
在考慮到這些問題的情況下,本發(fā)明的一個目的是提供用于如此大程度地壓縮跟蹤信息、使得可以準確地在外部捕獲結合到處理器中的高速CPU的操作的設備。本發(fā)明的又一個目的是提供采用這個處理器的開發(fā)支持設備。
為了達到這些目的,根據(jù)本發(fā)明的第一方面的處理器包括靜態(tài)調度(schedule)命令去除單元,在接收到命令發(fā)布信號、命令執(zhí)行條件建立信號、和與該靜態(tài)調度一致的執(zhí)行確定信號時,其去除靜態(tài)調度命令;編碼單元,在接收到通過該靜態(tài)調度命令去除單元獲得的命令執(zhí)行條件建立信號和命令發(fā)布信號時,其對除靜態(tài)調度命令之外的命令的執(zhí)行歷史進行編碼;以及數(shù)據(jù)包生成器,在接收到通過編碼單元獲得的編碼數(shù)據(jù)時,其生成跟蹤包。順便提一下,從由該靜態(tài)調度命令去除單元獲得的命令執(zhí)行條件建立信號和命令發(fā)布信號中排除了該靜態(tài)調度命令。
根據(jù)這種布置,對于預先確定由編譯器執(zhí)行的命令,可以抑制條件執(zhí)行標記的生成,使得根據(jù)靜態(tài)調度通過采用執(zhí)行確定信號可以大大地壓縮跟蹤信息。
根據(jù)本發(fā)明的第二方面的處理器包括編碼單元,在接收到命令發(fā)布信號、命令執(zhí)行條件建立信號、操作數(shù)檢測信號和操作數(shù)數(shù)據(jù)時,其對命令的執(zhí)行歷史進行編碼;數(shù)據(jù)包生成器,在接收到通過編碼單元獲得的編碼數(shù)據(jù)時,其生成跟蹤包;以及控制器,當生成操作數(shù)檢測信號時,其立即輸出操作數(shù)數(shù)據(jù)包并停止根據(jù)第一方面的執(zhí)行標記包的輸出。
根據(jù)這個布置,當生成操作數(shù)檢測信號時,沒有立即進行執(zhí)行標記跟蹤包作為跟蹤數(shù)據(jù)的輸出,而是可以將其延遲。因此,可以減少輸出跟蹤信息的次數(shù),且可以大大地壓縮跟蹤信息。
根據(jù)本發(fā)明的第三方面的處理器包括編碼單元,在接收到命令發(fā)布信號、命令執(zhí)行條件建立信號、操作數(shù)檢測信號和操作數(shù)數(shù)據(jù)時,其對命令的執(zhí)行歷史進行編碼;檢測源程序中的操作數(shù)位置的單元;以及數(shù)據(jù)包生成器,其接收通過編碼單元獲得的編碼數(shù)據(jù)和有關操作數(shù)位置的信息,并生成包括關于操作數(shù)位置的信息的跟蹤包。
根據(jù)這種布置,其中關于操作數(shù)位置的信息被包含在跟蹤包中,并被作為跟蹤信息輸出,可以集體處理對操作數(shù)數(shù)據(jù)的追溯。因此,對于使用跟蹤信息的執(zhí)行歷史追溯,簡化了該處理,且對于執(zhí)行歷史追溯程序,提高了處理效率。
此外,根據(jù)第二方面的處理器的布置,由于在跟蹤信息中沒有包括關于操作數(shù)位置的信息,所以當將僅跟蹤部分操作數(shù)信息時,可能沒有指定生成操作數(shù)信息的時間。然而,用該第三方面的布置,由于基于跟蹤信息獲得了關于操作數(shù)位置的信息,所以可以解決該問題。
根據(jù)本發(fā)明的第四方面的開發(fā)支持設備包括計算機,其采用由根據(jù)第一方面的處理器生成的跟蹤包,并采用該處理器執(zhí)行的源程序,來執(zhí)行追溯并顯示該處理器的執(zhí)行歷史的執(zhí)行歷史追溯程序;以及用于無條件地顯示源程序中通過靜態(tài)調度來確定其執(zhí)行的命令的單元,用于把源程序中不通過靜態(tài)調度確定其執(zhí)行的命令和在跟蹤包中的信息關聯(lián)起來,當跟蹤包中的相關信息指示已經建立了執(zhí)行條件時顯示命令,而當跟蹤包中的相關信息指示沒有建立執(zhí)行條件時不顯示命令。
根據(jù)本發(fā)明的第五方面的開發(fā)支持設備包括一計算機,其采用根據(jù)第二方面或第三方面的處理器所生成的跟蹤包、和該處理器執(zhí)行的源程序,來執(zhí)行追溯并顯示該處理器的執(zhí)行歷史的執(zhí)行歷史追溯程序。
如上所述,根據(jù)本發(fā)明,由于在所有有條件的執(zhí)行命令之中,還沒有靜態(tài)調度的有條件的執(zhí)行命令的出現(xiàn)頻率是1/8到1/16,所以可以估計用于分支標記包的數(shù)據(jù)壓縮比率是大約1/8到1/16。結果,可以大大地壓縮跟蹤信息。
此外,根據(jù)本發(fā)明,當生成操作數(shù)信息時,沒有立即輸出編碼數(shù)據(jù)來作為跟蹤信息,且可以延遲該數(shù)據(jù)的輸出。這樣,可以減少輸出跟蹤信息的次數(shù)。
此外,根據(jù)本發(fā)明,由于在跟蹤包中包括操作數(shù)位置的信息,且將該信息作為跟蹤信息輸出,所以集體處理了操作數(shù)數(shù)據(jù)的追溯,簡化了執(zhí)行歷史的追溯的處理,并提高了執(zhí)行歷史追溯程序的處理效率。
圖1是示出根據(jù)本發(fā)明的第一實施例的處理器配置的方框圖;圖2是示出根據(jù)本發(fā)明的第一實施例的靜態(tài)調度命令去除電路的內部布置的電路圖;圖3是示出根據(jù)本發(fā)明的第一實施例的編碼電路的內部布置的方框圖;圖4是示出根據(jù)本發(fā)明的第一實施例的包生成電路的內部布置的方框圖;圖5是示出在包ID存儲電路中存儲的包ID的圖;圖6是示出用于編碼數(shù)據(jù)的跟蹤包的格式的圖;圖7是示出用于操作數(shù)數(shù)據(jù)的跟蹤包的格式的圖;圖8是示出開發(fā)支持設備的配置的方框圖;圖9是示出用于試樣程序的示例命令的圖;圖10是示出用于試樣程序執(zhí)行結果的跟蹤包的圖;圖11是示出主計算機從處理器獲得的跟蹤信息的圖;圖12是示出根據(jù)本發(fā)明的第一實施例的由主計算機執(zhí)行的執(zhí)行歷史追溯處理的流程圖;圖13是示出通過使用跟蹤信息追溯的執(zhí)行歷史的圖;圖14是示出根據(jù)本發(fā)明的第二實施例的處理器配置的方框圖;
圖15是示出根據(jù)本發(fā)明的第二實施例的編碼電路的內部配置的方框圖;圖16是示出根據(jù)本發(fā)明的第二實施例的包生成電路的內部配置的方框圖;圖17是示出用于試樣程序的示例命令的圖;圖18是示出用于試樣程序執(zhí)行結果的跟蹤包的圖;圖19是示出主計算機從處理器獲得的跟蹤信息的圖;圖20是示出根據(jù)本發(fā)明的第二實施例的由主計算機執(zhí)行的執(zhí)行歷史追溯處理的流程圖;圖21是示出通過使用跟蹤信息追溯的執(zhí)行歷史的圖;圖22是示出根據(jù)本發(fā)明的第三實施例的處理器的配置的方框圖;圖23是示出根據(jù)本發(fā)明的第三實施例的包生成電路的內部配置的方框圖;圖24是示出用于操作數(shù)數(shù)據(jù)的跟蹤包的圖;圖25是示出用于試樣程序執(zhí)行結果的跟蹤包的圖;圖26是示出主計算機從處理器獲得的跟蹤信息的圖;圖27是示出根據(jù)本發(fā)明的第三實施例的由主計算機執(zhí)行的執(zhí)行歷史追溯處理的流程圖;圖28是示出通過使用跟蹤信息追溯的執(zhí)行歷史的圖;圖29是示出相關處理器的配置的方框圖;圖30是示出相關處理器的編碼電路的內部配置的方框圖;圖31是示出相關處理器的包生成電路的內部配置的方框圖;圖32是示出試樣程序的示例命令的圖;圖33是示出用于試樣程序執(zhí)行結果的跟蹤包的圖;圖34是示出主計算機從處理器獲得的跟蹤信息的圖;圖35是示出由主計算機執(zhí)行的相關執(zhí)行歷史追溯處理的流程圖;圖36是示出通過使用跟蹤信息追溯的執(zhí)行歷史的圖。
具體實施例方式
現(xiàn)在將參考附圖來描述本發(fā)明的優(yōu)選實施例。盡管對每個實施例描述了處理器1的布置,但是對所有實施例共同采用了圖8所示的開發(fā)支持設備的配置。
(第一實施例)圖1是示出根據(jù)本發(fā)明的第一實施例的處理器配置的方框圖。在圖1中,處理器1包括CPU 100、靜態(tài)調度命令去除電路110、編碼電路120、包生成電路130、跟蹤狀態(tài)輸出端150、以及跟蹤數(shù)據(jù)輸出端151。
CPU 100向靜態(tài)調度命令去除電路110輸出命令發(fā)布信號101、命令執(zhí)行條件建立信號102、以及指示將被使用的靜態(tài)調度的執(zhí)行確定信號103。CPU 100也向編碼電路120和包生成電路130輸出操作數(shù)檢測信號104,并向包生成電路130輸出操作數(shù)數(shù)據(jù)105。
當已經建立了命令執(zhí)行條件時,將執(zhí)行發(fā)布信號101和命令執(zhí)行建立信號102設置到“1”,但是當沒有建立命令執(zhí)行條件時,將命令發(fā)布信號101設置到“1”,以及將命令執(zhí)行條件建立信號102設置到“0”。此外,當將執(zhí)行由靜態(tài)調度確定其執(zhí)行的命令時,將值為“1”的執(zhí)行確定信號103輸出到靜態(tài)調度命令去除電路110。以及當生成操作數(shù)信息時,將操作數(shù)檢測信號104設置到“1”。
靜態(tài)調度命令去除電路110接收命令發(fā)布信號101、命令執(zhí)行條件建立信號102、以及執(zhí)行確定信號103,并向編碼電路120輸出除靜態(tài)調度命令之外的命令發(fā)布信號111和除靜態(tài)調度命令之外的命令執(zhí)行條件建立信號112。后面將描述靜態(tài)調度命令去除電路110的細節(jié)。
編碼電路120接收除靜態(tài)調度命令之外的命令發(fā)布信號111、除靜態(tài)調度命令之外的命令執(zhí)行條件建立信號112、以及操作數(shù)檢測信號104,并且向包生成電路130輸出編碼數(shù)據(jù)輸出選擇信號121、編碼數(shù)據(jù)122和用于該編碼數(shù)據(jù)122的位計數(shù)值123。后面將描述該編碼電路120的細節(jié)。
包生成電路130接收編碼數(shù)據(jù)輸出選擇信號121、編碼數(shù)據(jù)122、編碼數(shù)據(jù)計數(shù)值123、操作數(shù)檢測信號104、以及操作數(shù)數(shù)據(jù)105,并且向跟蹤狀態(tài)輸出端150輸出跟蹤包輸出狀態(tài)信號131,同時向跟蹤數(shù)據(jù)輸出端151輸出跟蹤包132。后面將描述該包生成電路130的細節(jié)。
圖2是示出靜態(tài)調度命令去除電路110的內部布置的電路圖。在圖2中,靜態(tài)調度命令去除電路220包括屏蔽電路(mask circuits)113和114。
屏蔽電路113計算命令發(fā)布信號101和執(zhí)行確定信號103的反相信號的邏輯乘積,并基于該邏輯乘積來生成除靜態(tài)調度命令之外的命令發(fā)布信號111。屏蔽電路114計算命令執(zhí)行條件建立信號102和執(zhí)行確定信號103的反相信號的邏輯乘積,并基于該邏輯和來生成除靜態(tài)調度命令之外的命令執(zhí)行條件建立信號112。
圖3是示出編碼電路120的內部布置的方框圖。在圖3中,編碼電路120包括計數(shù)器124、移位寄存器125、以及比較器126和127。
移位寄存器125將除靜態(tài)調度命令之外的命令發(fā)布信號111當作移位使能信號,移入除靜態(tài)調度命令之外的命令執(zhí)行條件建立信號112,并且生成包括標記字符串的含義的編碼數(shù)據(jù)122,其中該標記字符串指示除靜態(tài)調度命令之外的命令的執(zhí)行狀態(tài)。計數(shù)器124將除靜態(tài)調度命令之外的命令發(fā)布信號111當作計數(shù)使能信號,并生成用于編碼數(shù)據(jù)122的位計數(shù)值123。
比較器126比較位計數(shù)值123和在比較器126中設置的值,并且當該值匹配時,將計數(shù)匹配信號128設置到“1”。比較器127比較位計數(shù)值123和“0”,并且當位計數(shù)值123不是“0”時,將計數(shù)匹配信號129設置到“1”。編碼數(shù)據(jù)輸出選擇信號121是基于計數(shù)匹配信號128和除靜態(tài)調度命令之外的命令發(fā)布信號111的邏輯乘積、以及計數(shù)匹配信號129和操作數(shù)檢測信號104的邏輯乘積之間的邏輯和生成的。
圖4是示出包生成電路130的內部布置的方框圖。在圖4中,包生成電路130包括有效位計數(shù)/字節(jié)計數(shù)生成電路133、包ID存儲電路136、跟蹤數(shù)據(jù)匯集電路138、FIFO寫入控制電路139、以及FIFO隊列143。
有效位計數(shù)/字節(jié)計數(shù)生成電路133根據(jù)位計數(shù)值123的最小有效三位來生成有效位計數(shù)134,并根據(jù)等于或者大于位計數(shù)值123的最小有效第四位的值來生成有效字節(jié)計數(shù)135。包ID存儲電路136存儲作為常量的包ID 137。
跟蹤數(shù)據(jù)匯集電路138接收包ID 137、編碼數(shù)據(jù)122、有效位計數(shù)134、編碼數(shù)據(jù)輸出選擇信號121、操作數(shù)檢測信號104、以及操作數(shù)數(shù)據(jù)105。此外,當編碼數(shù)據(jù)輸出選擇信號121指示“1”時,跟蹤數(shù)據(jù)匯集電路138生成包括包ID 137、有效位計數(shù)134、和編碼數(shù)據(jù)122的數(shù)據(jù)字符串,將這個數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù)作為跟蹤數(shù)據(jù)141。
此外,當操作數(shù)檢測信號104指示“1”時,跟蹤數(shù)據(jù)匯集電路138生成包括包ID 137和操作數(shù)數(shù)據(jù)105的數(shù)據(jù)字符串,將這個數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù)作為跟蹤數(shù)據(jù)141。
另外,當輸出這些輸出的第一有效數(shù)據(jù)作為跟蹤數(shù)據(jù)141時,跟蹤數(shù)據(jù)匯集電路138也輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號140。然后,當輸出第二和接下來的跟蹤數(shù)據(jù)141時,將跟蹤數(shù)據(jù)輸出狀態(tài)信號140設置為“0”。
FIFO寫入控制電路139接收有效字節(jié)計數(shù)135、編碼數(shù)據(jù)輸出選擇信號121、以及操作數(shù)檢測信號104,并生成將被傳送到FIFO隊列143的寫入使能信號142,其中FIFO隊列143處理跟蹤數(shù)據(jù)輸出狀態(tài)信號140和跟蹤數(shù)據(jù)141。
FIFO隊列143接收跟蹤數(shù)據(jù)輸出狀態(tài)信號140、跟蹤數(shù)據(jù)141、以及寫入使能信號142,移位與跟蹤輸出的參考時鐘同步地接收的數(shù)據(jù),并輸出以跟蹤包輸出狀態(tài)信號131和跟蹤包132的輸入順序來輸出跟蹤包輸出狀態(tài)信號131和跟蹤包132。
在圖5中示出在包ID存儲電路136中存儲的包ID,且包ID的內容與相關的示例所描述的內容相同。
現(xiàn)在將描述在這個實施例中的在條目“消息名稱”中的“Taken Flag”和“Taken Count”。“Taken Flag”是指示命令執(zhí)行狀態(tài)的標記字符串(當在發(fā)布除靜態(tài)調度命令之外的命令的時候建立了命令執(zhí)行條件時,指示“1”的位字符串;或者當沒有建立命令執(zhí)行條件時,指示“0”的位字符串),并且當接收排除了靜態(tài)調度命令的命令發(fā)布信號111、和排除了靜態(tài)調度命令的命令執(zhí)行條件建立信號112時,輸出該“Taken Flag”作為編碼數(shù)據(jù)。
“Taken Count”是指示建立命令執(zhí)行條件的次數(shù)的編碼數(shù)據(jù)(當發(fā)布除靜態(tài)調度命令之外的命令時,重復命令執(zhí)行條件建立信號112的次數(shù)=“1”),其中,當接收排除了靜態(tài)調度命令的命令發(fā)布信號111時,以及當接收排除了靜態(tài)調度命令的命令執(zhí)行條件建立信號112時,輸出該“Taken Count”。
現(xiàn)在將給出對“Taken Flag”的示例編碼的說明。當要輸出編碼數(shù)據(jù)122作為跟蹤數(shù)據(jù)時,對FIFO隊列143輸出的跟蹤包采用了圖6的格式,先前在相關的示例中描述了該格式的內容。
具體地,“時鐘”表示用于跟蹤輸出的參考時鐘。TRCDAT[7:0]表示被輸出到跟蹤數(shù)據(jù)輸出端151的跟蹤包132的格式,且TRCDAT[7:0]包括Taken Flag[31:0],表示編碼數(shù)據(jù)122的值;NV[2:0],表示編碼數(shù)據(jù)122的有效位計數(shù)134的值;以及TF,表示包ID的值。TRCSYNC指示被輸出到跟蹤狀態(tài)輸出端150的跟蹤包輸出狀態(tài)信號131的值。并且“comments”指示包傳遞狀態(tài)。
如上所述,與“時鐘”同步地,一個字節(jié)接一個字節(jié)地相繼輸出TF、NV[2:0]、以及Taken Flag[31:0]作為跟蹤數(shù)據(jù)。
為了輸出操作數(shù)數(shù)據(jù)105作為跟蹤數(shù)據(jù),對FIFO隊列143輸出的跟蹤包采用了圖7的格式。先前在相關的示例中描述了該格式采用的內容。
具體地,“時鐘”表示用于跟蹤輸出的參考時鐘,而TRCDAT[7:0]表示輸出到跟蹤數(shù)據(jù)輸出端151的跟蹤包132的格式,且TRCDAT[7:0]包括操作數(shù)數(shù)據(jù)[31:0],用于指示操作數(shù)數(shù)據(jù)的值;以及OD,用于指示包ID的值。
參考圖9至13,現(xiàn)在將給出對下面的狀態(tài)的說明,其中主計算機3采用該布置,以便從處理器1獲得跟蹤數(shù)據(jù),并且追溯用于執(zhí)行歷史的數(shù)據(jù)。在這個實施例中,假設圖3中的比較器126采用的比較值是“6”。
圖9是用于示出了示例命令的試樣程序的圖,其中包括“命令地址”、“匯編程序”以及“執(zhí)行順序”。對于該程序,相繼執(zhí)行從在“執(zhí)行順序”(1)中的“命令1”到在“執(zhí)行順序”(14)中的“命令16”的命令。
標注“(ALWAYS-TAKEN)”的命令是CPU一直執(zhí)行的命令,且沒有標注“(ALWAYS-TAKEN)”的命令是如果CPU沒有執(zhí)行這些命令就不能確定其為“Taken”或者“Not Taken”的命令。
在這個示例中,假設“命令8”和“命令10”是沒有執(zhí)行的命令,且在所執(zhí)行的命令中,“命令1至命令3”、“命令6和命令7”、以及“命令12至命令16”是CPU一直執(zhí)行的命令。
在圖9中,當從地址0x50000000開始來按照順序執(zhí)行命令時,與CPU的操作頻率同步地,相繼將命令發(fā)布信號101改變到“1111111111111111”,同時,將命令執(zhí)行條件建立信號102改變到“1111111010111111”,并且將執(zhí)行確定信號103改變到“1110011000011111”。
響應這些改變,靜態(tài)調度命令去除電路110輸出排除了靜態(tài)調度命令的命令發(fā)布信號111,并將該命令發(fā)布信號111改變到“0001100111100000”,并且將排除了靜態(tài)調度命令的命令執(zhí)行條件建立信號112改變到“0001100010100000”。
根據(jù)這些改變,將編碼電路120的移位寄存器125輸出的編碼數(shù)據(jù)122改變到“110101”。此外,將用于計數(shù)器124的位計數(shù)值123增加到“0x6”,同時將排除了靜態(tài)調度命令的命令發(fā)布信號111的值當作計數(shù)使能信號。當位計數(shù)值123達到“0x6”時,計數(shù)匹配信號128變成“1”,編碼數(shù)據(jù)輸出選擇信號121也是如此。
包生成電路130的有效位計數(shù)/字節(jié)計數(shù)生成電路133根據(jù)(位計數(shù)值“0x6”+用于NV的位計數(shù)值“0x3”+用于包ID的位計數(shù)“0x2”)的三個最小有效位來輸出值為“0b011”的有效位計數(shù)134,并根據(jù)等于或大于第四最小有效位的值來輸出值為“0b1”的有效字節(jié)計數(shù)135。
當接收到有效位計數(shù)134時,包生成電路130的跟蹤數(shù)據(jù)匯集電路138從最小有效位開始來布置如下包ID=TF的值“0b01”;NV=有效位計數(shù)134的值“0b101”;以及Taken Flag=“0b110101”。
當編碼數(shù)據(jù)輸出選擇信號121的值改變到“1”時,F(xiàn)IFO寫入控制電路139與跟蹤輸出的參考時鐘同步地兩次(=有效字節(jié)計數(shù)135+1)把將被傳送到FIFO隊列143的寫入使能信號142設置到“1”。
根據(jù)寫入使能信號142,一個字節(jié)接一個字節(jié)地兩次向FIFO隊列143輸出跟蹤數(shù)據(jù)匯集電路138生成的數(shù)據(jù)。此外,當輸出第一字節(jié)的數(shù)據(jù)時,也輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號140。
FIFO隊列143接收該數(shù)據(jù)和跟蹤數(shù)據(jù)輸出狀態(tài)信號140,并傳送跟蹤包132和跟蹤包輸出狀態(tài)信號131。圖10是示出當執(zhí)行圖9的試樣程序時的跟蹤包的圖。
主計算機3接收圖10所示的包,并從TRCDAT[1:0]提取包ID=TF,和從TRCDAT[4:2]提取NV=3。由于NV=3,所以獲得了指示編碼數(shù)據(jù)FLAG=0b110101的信息。
圖11是示出主計算機3以這種方式從處理器1獲得了跟蹤信息的圖。
現(xiàn)在將給出用于下面處理的說明,其中主計算機3通過采用圖9中的試樣程序和圖11中的跟蹤信息追溯執(zhí)行歷史。圖12是示出用于主計算機3所執(zhí)行的執(zhí)行歷史追溯處理的算法的流程圖。
在圖12中,在步驟1000中,將IP指派為地址0x5000000,將TP指派為地址0x0,以及將ETP指派為地址0x1。由于TP≠ETP,所以程序控制跳過步驟1001并進入到步驟1002。然后,由于跟蹤消息是TF,所以程序控制前進到步驟1004和1005。
直到出現(xiàn)ALWAYS-TAKEN沒有指示的命令,都顯示在地址0x50000000上的命令1、在地址0x50000004上的命令2、以及在地址0x50000008上的命令3。當出現(xiàn)沒有標注ALWAYS-TAKEN的命令4時,程序控制移動到步驟1006。由于標記的值為“1”,所以顯示命令4,并將IP增加到地址0x50000010。
由于有效的標記保留了,所以程序控制返回到步驟1005,并且由于出現(xiàn)了沒有標注ALWAYS-TAKEN的命令5,所以程序控制前進到步驟1006。然后,由于標記的值為“1”,所以顯示命令5,并將IP增加到地址0x50000014。
由于有效的標記仍舊保留了,所以程序控制再次返回到步驟1005,顯示在地址0x50000014上的命令6和在地址0x50000018上的命令7,并且由于出現(xiàn)了沒有標注ALWAYS-TAKEN的命令8,所以程序控制前進到步驟1006。然后,由于標記的值為“0”,所以將下一個命令9的地址0x50000020分配到IP。
由于有效的標記仍舊保留了,所以程序控制返回到步驟1005,并且由于出現(xiàn)了沒有標注ALWAYS-TAKEN的命令9,所以程序控制前進到步驟1006。然后,由于標記的值為“1”,所以在地址0x50000020上顯示命令9,且將IP增加到地址0x50000024。
由于仍舊有有效的標記,所以程序控制返回到步驟1005,并且由于出現(xiàn)了沒有標注ALWAYS-TAKEN的命令10,所以程序控制前進到步驟1006。然后,由于標記的值為“0”,所以將下一個命令11的地址0x50000028分配到IP。
由于仍舊有有效的標記,所以程序控制返回到步驟1005,并且由于出現(xiàn)了沒有標注ALWAYS-TAKEN的命令11,所以程序控制前進到步驟1006。然后,由于標記的值為“1”,所以在地址0x50000028上顯示命令11。
由于沒有更多的有效標記,所以顯示在地址0x5000002c上的命令12、在地址0x50000030上的命令13、在地址0x50000034上的命令14、在地址0x50000038上的命令15、以及在地址0x5000003c上的命令16,并且將TP指派到地址0x1。此后程序控制返回到步驟1001。然后,由于確定了TP=ETP,所以終止了執(zhí)行歷史追溯處理。
圖13是示出通過這個處理獲得的執(zhí)行歷史的圖。在圖13中,示出了“跟蹤存儲器地址”、“跟蹤消息”、“跟蹤包”、“地址”和“追溯執(zhí)行歷史”,并且可以確認可以追溯圖9所示的試樣程序。
結果,將包括標注ALWAYS-TAKEN的命令的Taken Flags輸出為跟蹤包。然而,在這個實施例中,由于僅僅對沒有標注的ALWAYS-TAKEN的命令進行編碼,所以可以以相當于標注了ALWAYS-TAKEN的命令數(shù)目的數(shù)目來壓縮跟蹤數(shù)據(jù)的Taken Flag位。
(第二實施例)圖14是示出根據(jù)本發(fā)明的第二實施例的處理器配置的方框圖。在圖14中,處理器1包括CPU 200、編碼電路210、包生成電路230、跟蹤狀態(tài)輸出端150、以及跟蹤數(shù)據(jù)輸出端151。
CPU 200向編碼電路210輸出命令發(fā)布信號201、命令執(zhí)行條件建立信號202、操作數(shù)檢測信號203以及編碼數(shù)據(jù)輸出模式信號204。CPU 200也向包生成電路230輸出操作數(shù)數(shù)據(jù)205。
當建立了命令執(zhí)行條件時,命令發(fā)布信號201和命令執(zhí)行條件建立信號202變?yōu)椤?”,且當沒有建立命令執(zhí)行條件時,命令發(fā)布信號201變?yōu)椤?”,而命令執(zhí)行條件建立信號202變?yōu)椤?”。當生成操作數(shù)信息時,操作數(shù)檢測信號203變?yōu)椤?”。
編碼數(shù)據(jù)輸出模式信號204是用于指定操作數(shù)檢測信號203是否應該包括在用于生成編碼數(shù)據(jù)輸出選擇信號211的條件中的模式信號。當編碼數(shù)據(jù)輸出模式信號204指示“1”時,操作數(shù)檢測信號203應該包括在用于生成編碼數(shù)據(jù)輸出選擇信號211的條件中。
編碼電路210接收命令發(fā)布信號201、命令執(zhí)行條件建立信號202、操作數(shù)檢測信號203、以及編碼數(shù)據(jù)輸出模式信號204,并且向包生成電路230輸出編碼數(shù)據(jù)輸出選擇信號211、編碼數(shù)據(jù)212和用于該編碼數(shù)據(jù)212的位計數(shù)值213。后面將描述該編碼電路210的細節(jié)。
包生成電路230接收編碼數(shù)據(jù)輸出選擇信號211、編碼數(shù)據(jù)212、用于編碼數(shù)據(jù)212的位計數(shù)值213、操作數(shù)檢測信號203、以及操作數(shù)數(shù)據(jù)205,并且向跟蹤狀態(tài)輸出端150輸出跟蹤包輸出狀態(tài)信號131,同時向跟蹤數(shù)據(jù)輸出端151輸出跟蹤包132。后面將描述包生成電路230的細節(jié)。
圖15是示出編碼電路210的內部布置的方框圖。在圖15中,編碼電路210包括屏蔽電路214、計數(shù)器215、移位寄存器216、以及比較器218和219。
屏蔽電路214采用操作數(shù)檢測信號203和編碼數(shù)據(jù)輸出模式信號204的反相信號的邏輯乘積,來生成與操作數(shù)檢測一致的編碼數(shù)據(jù)輸出選擇信號217。
移位寄存器216將命令發(fā)布信號201當作移位使能信號,移入命令執(zhí)行條件建立信號202,并且生成包括標記字符串的含義的編碼數(shù)據(jù)212,其中該標記字符串指示命令的執(zhí)行狀態(tài)。計數(shù)器215把命令發(fā)布信號201當作計數(shù)使能信號,并生成編碼數(shù)據(jù)212的位計數(shù)值213。
比較器218比較位計數(shù)值213和在比較器218中設置的值,并且當該值匹配時,將計數(shù)匹配信號220設置到“1”。比較器219比較位計數(shù)值213和“0”,并且當位計數(shù)值213不是“0”時,將計數(shù)匹配信號221設置到“1”。編碼數(shù)據(jù)輸出選擇信號211是基于計數(shù)匹配信號220和命令發(fā)布信號201的邏輯乘積、以及計數(shù)匹配信號221和與操作數(shù)檢測一致的編碼數(shù)據(jù)輸出選擇信號217的邏輯乘積之間的邏輯和生成的。
圖16是示出包生成電路230的內部布置的方框圖。在圖16中,包生成電路230包括有效位計數(shù)/字節(jié)計數(shù)生成電路233、包ID存儲電路236、跟蹤數(shù)據(jù)匯集電路238、FIFO寫入控制電路239、以及FIFO隊列243。
有效位計數(shù)/字節(jié)計數(shù)生成電路233根據(jù)位計數(shù)值123的三個最小有效位來生成有效位計數(shù)234,并根據(jù)等于或者大于位計數(shù)值213的第四最小有效位的值來生成有效字節(jié)計數(shù)235。包ID存儲電路236存儲作為常量的包ID237。
跟蹤數(shù)據(jù)匯集電路238接收包ID 237、操作數(shù)數(shù)據(jù)205、編碼數(shù)據(jù)212、有效位計數(shù)234、操作數(shù)檢測信號203、以及編碼數(shù)據(jù)輸出選擇信號211。當編碼數(shù)據(jù)輸出選擇信號211指示“1”時,跟蹤數(shù)據(jù)匯集電路238生成包括包ID 237、有效位計數(shù)234、和編碼數(shù)據(jù)212的數(shù)據(jù)字符串,將這個數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù)作為跟蹤數(shù)據(jù)241。
此外,當操作數(shù)檢測信號203指示“1”時,跟蹤數(shù)據(jù)匯集電路238生成包括包ID 237和操作數(shù)數(shù)據(jù)205的數(shù)據(jù)字符串,將這個數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù)作為跟蹤數(shù)據(jù)241。
另外,當輸出這些輸出的第一有效數(shù)據(jù)作為跟蹤數(shù)據(jù)241時,跟蹤數(shù)據(jù)匯集電路238也輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號240。然后,當輸出第二和接下來的跟蹤數(shù)據(jù)241時,將跟蹤數(shù)據(jù)輸出狀態(tài)信號240設置為“0”。
FIFO寫入控制電路239接收有效字節(jié)計數(shù)235、編碼數(shù)據(jù)輸出選擇信號211、以及操作數(shù)檢測信號203,并生成將被傳送到FIFO隊列243的寫入使能信號242,其中FIFO隊列243處理跟蹤數(shù)據(jù)輸出狀態(tài)信號240和跟蹤數(shù)據(jù)241。
FIFO隊列243接收跟蹤數(shù)據(jù)輸出狀態(tài)信號240、跟蹤數(shù)據(jù)241、以及寫入使能信號242,移位與跟蹤輸出的參考時鐘同步地接收的數(shù)據(jù),并以跟蹤包輸出狀態(tài)信號231和跟蹤包232的輸入順序來輸出跟蹤包輸出狀態(tài)信號231和跟蹤包232。
在圖5中示出在包ID存儲電路236中存儲的包ID;當輸出編碼數(shù)據(jù)212作為跟蹤數(shù)據(jù)時,在圖6中示出了用于由FIFO隊列243輸出的跟蹤包的格式;以及當輸出操作數(shù)數(shù)據(jù)205作為跟蹤數(shù)據(jù)時,在圖7中示出了用于由FIFO隊列243輸出的跟蹤包的格式。先前在相關的示例和第一實施例中說明了包ID的內容和該格式。
具體地,在圖7中,“時鐘”表示用于跟蹤輸出的參考時鐘,TRCDAT[7:0]表示被輸出到跟蹤數(shù)據(jù)輸出端151的跟蹤包232的格式,且TRCDAT[7:0]包括Operand Data[31:0],指示操作數(shù)數(shù)據(jù)205的值;以及OD,指示包ID的值。
在參考圖17至21的同時,現(xiàn)在將給出對下面狀態(tài)的說明,其中在該狀態(tài)中主計算機3從具有該布置的處理器1獲得跟蹤數(shù)據(jù)并追溯執(zhí)行歷史。在這個實施例中,假設在圖15中比較器218所采用的比較值是“10”。
圖17是示出試樣程序的示例命令的圖,示出了“命令地址”、“匯編程序”以及“執(zhí)行順序”。為了執(zhí)行程序,相繼執(zhí)行從在“執(zhí)行順序”(1)中的“命令1”到在“執(zhí)行順序”(7)中的“命令9”的命令。
在這個示例中,假設“命令4”、“命令8”和“命令10”是沒有執(zhí)行的命令,“命令7”是生成操作數(shù)數(shù)據(jù)OD=0xAAAAAAAA的命令。
在圖17中,當從地址0x50000000開始來執(zhí)行命令時,隨后與CPU 200的操作頻率同步地將命令發(fā)布信號201改變到“1111111111”,同時,將命令執(zhí)行條件建立信號202改變到“1110111010”。
此外,當執(zhí)行在地址0x50000018上的命令7時,將操作數(shù)檢測信號203改變到“1”,并輸出“0xAAAAAAAA”作為操作數(shù)數(shù)據(jù)205。在這種情況下,假設編碼數(shù)據(jù)輸出模式信號204的設置值為“1”。
當接收到命令發(fā)布信號201和命令執(zhí)行條件建立信號202時,從編碼電路210的移位寄存器216輸出的編碼數(shù)據(jù)212改變到“1110111010”。當將命令發(fā)布信號201的值當作計數(shù)使能信號時,將計數(shù)器215的位計數(shù)值213增加到“0xa”。當位計數(shù)值213到達“0x7”時,執(zhí)行命令7,且操作數(shù)檢測信號203改變到“1”。
此時,如果編碼電路210像相關情況下的圖30中的編碼電路310一樣沒有包括屏蔽電路214,則編碼數(shù)據(jù)輸出選擇信號211改變到“1”,并在此時,輸出編碼數(shù)據(jù)212作為跟蹤數(shù)據(jù)。
然而,在這個實施例中,編碼數(shù)據(jù)輸出模式信號204的反相信號(=“0”)屏蔽了操作數(shù)檢測信號203=“1”,且與操作數(shù)檢測一致的編碼數(shù)據(jù)輸出選擇信號217改變到“0”。因此,此時,編碼數(shù)據(jù)輸出選擇信號211指示“0”。此后,當計數(shù)器215的位計數(shù)值213增加到“0xa”時,計數(shù)匹配信號220變?yōu)椤?”,且將編碼數(shù)據(jù)輸出選擇信號211設置到“1”。
當操作數(shù)檢測信號203變?yōu)椤?”時,根據(jù)等于或者大于(操作數(shù)數(shù)據(jù)的位計數(shù)“0x20”+包ID的位計數(shù)“0x2”)的第四最小有效位的值來輸出值為“0b100”的有效字節(jié)計數(shù)235。
當接收到這個字節(jié)計數(shù)235時,包生成電路230的跟蹤數(shù)據(jù)匯集電路238在最小有效位上開始布置包ID=OD值“0b11”和操作數(shù)數(shù)據(jù)=“0xAAAAAAAA”。
當操作數(shù)檢測信號203的值改變到“1”時,與用于跟蹤輸出的參考時鐘同步地,F(xiàn)IFO寫入控制電路239五次(=有效字節(jié)計數(shù)235+1)把將被傳送到FIFO隊列243的寫入使能信號242設置到“1”。
根據(jù)該寫入使能信號242,一個字節(jié)接一個字節(jié)地五次將跟蹤數(shù)據(jù)匯集電路238所生成的數(shù)據(jù)輸出到FIFO隊列243。此外,當輸出數(shù)據(jù)的第一字節(jié)時,輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號240。
其次,當編碼數(shù)據(jù)輸出選擇信號211改變到“1”時,根據(jù)(計數(shù)值“0xa”+NV的位計數(shù)“0x3”+包ID的位計數(shù)“0x2”)的最小有效三位來輸出值為“0b111”的有效位計數(shù)234,并根據(jù)等于或者大于第四最小有效位的值來輸出值為“0b1”的有效字節(jié)計數(shù)235。
在接收到有效位計數(shù)234時,包生成電路230的跟蹤數(shù)據(jù)匯集電路238從最小有效位開始來布置包ID=TF的值“0b01”、NV=有效位計數(shù)234的值“0b111”以及Taken Flag=“0b1110111010”。
在編碼數(shù)據(jù)輸出選擇信號211的值改變到“1”之后,與用于跟蹤輸出的參考時鐘同步地,F(xiàn)IFO寫入控制電路239兩次(=有效字節(jié)計數(shù)235+1)把將被傳送到FIFO隊列243的寫入使能信號242設置到“1”。
根據(jù)該寫入使能信號242,一個字節(jié)接一個字節(jié)地兩次將跟蹤數(shù)據(jù)匯集電路238所生成的數(shù)據(jù)輸出到FIFO隊列243。當輸出該數(shù)據(jù)的第一字節(jié)時,輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號240。
FIFO 243接收該數(shù)據(jù)和跟蹤數(shù)據(jù)輸出狀態(tài)信號240,并輸出跟蹤包132和跟蹤包輸出狀態(tài)信號131。圖18是示出當執(zhí)行圖17中的試樣程序時的跟蹤包的圖。
主計算機3接收圖18所示的包,首先從TRCDAT[1:0]中獲得包ID=OD,然后獲得操作數(shù)數(shù)據(jù)DATA=0xAAAAAAAA。
然后,主計算機3從TRCDAT[1:0]中獲得包ID=TF,和從TRCDAT[4:2]中獲得NV=7。由于NV=7,所以獲得了編碼數(shù)據(jù)FLAG=0b1110111010。圖19是示出主計算機3以這種方式從處理器1獲得的跟蹤信息的圖。
現(xiàn)在將說明主計算機3通過采用圖17的試樣程序和圖19的跟蹤信息而追溯執(zhí)行歷史的處理。圖20是示出用于主計算機3所執(zhí)行的執(zhí)行歷史追溯處理的算法的流程圖。
在圖20中,在步驟2000中,將IP指派到地址0x50000000,將TP指派到地址0x0,以及將ETP指派到地址0x2。由于TP≠ETP,所以程序控制跳過步驟2001并進入到步驟2002,并且由于跟蹤消息是OD,所以前進到步驟2008和2009。然后,將OD=0xAAAAAAAA的信息存儲到主計算機3的存儲器中,且將TP指派到地址0x1。此后程序控制返回到步驟S2001。
由于TP≠ETP,所以程序進入到步驟2002,并且由于跟蹤消息是TF,所以前進到步驟2004和2005。由于標記的值為“1”,所以在地址0x50000000上顯示命令1,且將IP增加到地址0x50000004。
由于有效標記仍舊保留且下一個標記的值是“1”,所以在地址0x50000004上顯示命令2,并將IP增加到地址0x50000008。相似地,在地址0x50000008顯示命令3,并且由于仍舊保留了有效標記且下一個標記的值是“0”,所以將下一個命令5的地址0x50000010分配到IP。
由于有效標記仍舊保留且下一個標記的值是“1”,所以在地址0x50000010上顯示命令5,并將IP增加到地址0x50000014。同樣,在地址0x50000014和地址0x50000018上分別顯示命令6和命令7。
此時,由于命令7是生成操作數(shù)數(shù)據(jù)的命令,所以顯示了在主計算機3的存儲器中存儲的最早的操作數(shù)數(shù)據(jù)OD=0xAAAAAAAA。
由于有效標記仍舊保留且下一個標記的值是“0”,所以將下一個命令9的地址0x50000020分配到IP。此外,由于有效標記仍舊保留且下一個標記的值是“1”,所以在地址0x50000020上顯示命令9,并且由于下一個標記的值是“0”,所以沒有顯示命令,并增加了地址。
由于完成了對有效標記的數(shù)目的處理,所以將TP指派到地址0x2,且程序控制返回到步驟2001。由于確定TP=ETP,所以終止執(zhí)行歷史追溯處理。
圖21是示出通過這個處理獲得的執(zhí)行歷史的圖。在圖21中,示出了“跟蹤存儲器地址”、“跟蹤消息”、“跟蹤包”、“地址”、以及“追溯的執(zhí)行歷史”,并且確認可以追溯圖17所示的試樣程序。
如上所述,由于通過使用編碼數(shù)據(jù)輸出模式信號204而屏蔽了操作數(shù)檢測信號203,所以當生成操作數(shù)信息時可以防止編碼數(shù)據(jù)作為追蹤數(shù)據(jù)輸出。這樣,可以抑制由操作數(shù)信息的生成而引起的跟蹤數(shù)據(jù)增加。
(第三實施例)圖22是示出根據(jù)本發(fā)明的第三實施例的處理器配置的方框圖。在圖22中,處理器1包括CPU 200、編碼電路210、包生成電路260、跟蹤狀態(tài)輸出端150、以及跟蹤數(shù)據(jù)輸出端151。
CPU 200向編碼電路210輸出命令發(fā)布信號201、命令執(zhí)行條件建立信號202、操作數(shù)檢測信號203、以及編碼數(shù)據(jù)輸出模式信號204。CPU 200也向包生成電路260輸出操作數(shù)數(shù)據(jù)205。
當建立了命令執(zhí)行條件時,執(zhí)行發(fā)布信號201和命令執(zhí)行建立信號202變?yōu)椤?”,并且當沒有建立命令執(zhí)行條件時,命令發(fā)布信號201變?yōu)椤?”,而命令執(zhí)行條件建立信號202變?yōu)椤?”。當生成操作數(shù)信息時,操作數(shù)檢測信號203變?yōu)椤?”。
編碼數(shù)據(jù)輸出模式信號204是用于指定操作數(shù)檢測信號203是否應該包括在用于生成編碼數(shù)據(jù)輸出選擇信號211的條件中的模式信號。當編碼數(shù)據(jù)輸出模式信號204指示“1”時,操作數(shù)檢測信號203不應該包括在用于生成編碼數(shù)據(jù)輸出選擇信號211的條件中。
編碼電路210接收命令發(fā)布信號201、命令執(zhí)行條件建立信號202、操作數(shù)檢測信號203、以及編碼數(shù)據(jù)輸出模式信號204,并且向包生成電路260輸出編碼數(shù)據(jù)輸出選擇信號211、編碼數(shù)據(jù)212、以及該編碼數(shù)據(jù)212的位計數(shù)值213。該編碼電路210的細節(jié)如先前在第二實施例中所描述。
包生成電路260接收編碼數(shù)據(jù)輸出選擇信號211、編碼數(shù)據(jù)212、編碼數(shù)據(jù)212的位計數(shù)值213、操作數(shù)檢測信號203、以及操作數(shù)數(shù)據(jù)205,并且向跟蹤狀態(tài)輸出端150輸出跟蹤包輸出狀態(tài)信號131,同時向跟蹤數(shù)據(jù)輸出端151輸出跟蹤包132。
圖23是示出包生成電路260的內部布置的方框圖。在圖23中,包生成電路260包括有效位計數(shù)/字節(jié)計數(shù)生成電路263、包ID存儲電路266、跟蹤數(shù)據(jù)匯集電路268、FIFO寫入控制電路269、以及FIFO隊列273。
有效位計數(shù)/字節(jié)計數(shù)生成電路263根據(jù)位計數(shù)值213的三個最小有效位來生成有效位計數(shù)264,并根據(jù)等于或者大于位計數(shù)值213的第四最小有效位的值來生成有效字節(jié)計數(shù)265。包ID存儲電路266存儲作為常量的包ID267。
跟蹤數(shù)據(jù)匯集電路268接收包ID 267、操作數(shù)數(shù)據(jù)205、編碼數(shù)據(jù)212、有效位計數(shù)264、操作數(shù)檢測信號203、編碼數(shù)據(jù)輸出選擇信號211、以及位計數(shù)值213。當編碼數(shù)據(jù)輸出選擇信號211指示“1”時,跟蹤數(shù)據(jù)匯集電路268生成包括包ID 267、有效位計數(shù)264、和編碼數(shù)據(jù)212的數(shù)據(jù)字符串,將這個數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù)作為跟蹤數(shù)據(jù)271。
此外,當操作數(shù)檢測信號203指示“1”時,跟蹤數(shù)據(jù)匯集電路268生成包括包ID 267、操作數(shù)數(shù)據(jù)205和位計數(shù)值213的數(shù)據(jù)字符串,將這個數(shù)據(jù)字符串分為字節(jié),并一個字節(jié)接一個字節(jié)地輸出該數(shù)據(jù)作為跟蹤數(shù)據(jù)271。
另外,當輸出這些輸出的第一有效數(shù)據(jù)作為跟蹤數(shù)據(jù)271時,跟蹤數(shù)據(jù)匯集電路268也輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號270。然后,當輸出第二和接下來的跟蹤數(shù)據(jù)271時,將跟蹤數(shù)據(jù)輸出狀態(tài)信號270設置為“0”。
FIFO寫入控制電路269接收有效字節(jié)計數(shù)265、編碼數(shù)據(jù)輸出選擇信號211、以及操作數(shù)檢測信號203,并生成將被傳送到FIFO隊列273的寫入使能信號272,其中FIFO隊列273處理跟蹤數(shù)據(jù)輸出狀態(tài)信號270和跟蹤數(shù)據(jù)271。
FIFO隊列273接收跟蹤數(shù)據(jù)輸出狀態(tài)信號270、跟蹤數(shù)據(jù)271、以及寫入使能信號272,移位與跟蹤輸出的參考時鐘同步地接收的數(shù)據(jù),并以輸入跟蹤包輸出狀態(tài)信號231和跟蹤包232的順序來輸出跟蹤包輸出狀態(tài)信號231和跟蹤包232。
在圖5中示出了在包ID存儲電路266中存儲的包ID;并且當輸出編碼數(shù)據(jù)212作為跟蹤數(shù)據(jù)時,在圖6中示出了用于由FIFO隊列273輸出的跟蹤包的格式。先前在相關的示例以及第一和第二實施例中說明了包ID的內容和該格式。
圖24是示出當輸出操作數(shù)數(shù)據(jù)205作為跟蹤數(shù)據(jù)時由FIFO隊列273輸出的跟蹤包的格式的圖。
在圖24中,“時鐘”表示用于跟蹤輸出的參考時鐘,而TRCDAT[7:0]表示被輸出到跟蹤數(shù)據(jù)輸出端151的跟蹤包132的格式,且TRCDAT[7:0]包括Operand Data[31:0],指示操作數(shù)數(shù)據(jù)205的值;以及OD,指示包ID的值;以及操作數(shù)生成位置,指示操作數(shù)生成位置。
如圖24所示,與“時鐘”同步地,一個字節(jié)接一個字節(jié)地相繼輸出OD、操作數(shù)數(shù)據(jù)[31:0]、以及操作數(shù)生成位置,作為跟蹤數(shù)據(jù)。
在參考圖25至28的同時,現(xiàn)在將說明主計算機3從具有上述布置的處理器1中獲得跟蹤數(shù)據(jù)、并追溯執(zhí)行歷史的狀態(tài)。如在第二實施例中,采用用于圖17的試樣程序的命令,同時圖15中的比較器218所使用的比較值是“10”。
在圖17中,當在地址0x50000000開始執(zhí)行命令時,與CPU 200的操作頻率同步地,命令發(fā)布信號201隨后改變到“1111111111”,且與此同時,命令執(zhí)行條件建立信號202改變到“1110111010”。
此外,當執(zhí)行在地址0x50000018上的命令7時,將操作數(shù)檢測信號203設置到“1”,并輸出“0xAAAAAAAA”作為操作數(shù)數(shù)據(jù)205。在這種情況下,編碼數(shù)據(jù)輸出模式信號204的設立值為“1”。
當接收到這些信號時,編碼電路210的移位寄存器216所輸出的編碼數(shù)據(jù)212改變到“1110111010”。此外,當把命令發(fā)布信號201的值當作計數(shù)使能信號時,將計數(shù)器215的位計數(shù)值213增加到“0xa”。當位計數(shù)值213到達“0x7”時,執(zhí)行命令7,且操作數(shù)檢測信號203改變到“1”。
在這個實施例中,由于編碼數(shù)據(jù)輸出模式信號204的反相信號=“0”屏蔽了操作數(shù)檢測信號203=“1”,且與操作數(shù)檢測一致的編碼數(shù)據(jù)輸出選擇信號217被設置到“0”,所以,編碼數(shù)據(jù)輸出選擇信號211在此時變?yōu)椤?”。并且當計數(shù)器215的位計數(shù)值213增加到“0xa”時,計數(shù)匹配信號220改變到“1”,且編碼數(shù)據(jù)輸出選擇信號211變?yōu)椤?”。
當操作數(shù)檢測信號203變?yōu)椤?”時,根據(jù)等于或者大于(操作數(shù)數(shù)據(jù)的位計數(shù)“0x20”+包ID的位計數(shù)“0x2”+操作數(shù)生成位置的位計數(shù)“0x5”)的第四最小有效位的值來輸出值為“0b100”的有效字節(jié)計數(shù)265。
當接收到有效字節(jié)計數(shù)265時,包生成電路260的跟蹤數(shù)據(jù)匯集電路268從最小有效位開始布置包ID=OD的值“0b11”、操作數(shù)數(shù)據(jù)=“0xAAAAAAAA”、操作數(shù)生成位置=“0b00111”(當操作數(shù)檢測信號203是“1”時的位計數(shù)值213)。
在操作數(shù)檢測信號203的值改變到“1”之后,與用于跟蹤輸出的參考時鐘同步,F(xiàn)IFO寫入控制電路269五次(=有效字節(jié)計數(shù)265+1)把將被傳送到FIFO隊列273的寫入使能信號272設置到“1”。
根據(jù)該寫入使能信號272,一個字節(jié)接一個字節(jié)地五次將跟蹤數(shù)據(jù)匯集電路268所生成的數(shù)據(jù)輸出到FIFO隊列273。此外,當輸出該數(shù)據(jù)的第一字節(jié)時,輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號270。
當編碼數(shù)據(jù)輸出選擇信號211改變到“1”時,根據(jù)(計數(shù)值“0xa”+NV的位計數(shù)“0xa”+包ID的位計數(shù)“0x2”)的三個最小有效位來輸出值為“0b111”的有效位計數(shù)264,并根據(jù)等于或者大于第四最小有效位的值來輸出值為“0b1”的有效字節(jié)計數(shù)265。
在接收到有效位計數(shù)264時,包生成電路260的跟蹤數(shù)據(jù)匯集電路268從最小有效位上開始來布置包ID=TF的值“0b01”、NV=有效位計數(shù)234的值“0b111”以及Taken Flag=“0b11011010”。
在編碼數(shù)據(jù)輸出選擇信號211的值改變到“1”之后,與用于跟蹤輸出的參考時鐘同步地,F(xiàn)IFO寫入控制電路269兩次(=有效字節(jié)計數(shù)265+1)把將被傳送到FIFO隊列273的寫入使能信號272設置到“1”。
根據(jù)該寫入使能信號272,一個字節(jié)接一個字節(jié)地兩次將跟蹤數(shù)據(jù)匯集電路268所生成的數(shù)據(jù)輸出到FIFO隊列273。當輸出該數(shù)據(jù)的第一字節(jié)時,輸出值為“1”的跟蹤數(shù)據(jù)輸出狀態(tài)信號270。
FIFO隊列273接收該數(shù)據(jù)和跟蹤數(shù)據(jù)輸出狀態(tài)信號270,并輸出跟蹤包132和跟蹤包輸出狀態(tài)信號131。圖25是示出當執(zhí)行圖17所示的試樣程序時的跟蹤包的圖。
主計算機3接收圖25所示的包,并首先從TRCDAT[1:0]獲得包ID=OD的信息。然后獲得操作數(shù)數(shù)據(jù)DATA=0xAAAAAAAA和操作數(shù)生成位置POSITION=7。
然后,分別從TRCDAT[1:0]和TRCDAT[4:2]中獲得包ID=TF和NV=7。由于NV=7,所以獲得編碼數(shù)據(jù)FLAG=0b1110111010。圖26是示出主計算機3以這種方式從處理器1獲得的跟蹤信息的圖。
現(xiàn)在將給出用于下面處理的說明,其中主計算機3通過采用圖17的試樣程序和圖26的跟蹤信息而追溯執(zhí)行歷史。圖27是示出用于主計算機3所執(zhí)行的執(zhí)行歷史追溯處理的算法的流程圖。
在圖27中,在步驟3000中,將IP指派到地址0x50000000,將TP指派到地址0x0,以及將ETP指派到地址0x2。由于TP≠ETP,所以程序控制跳過步驟3001并進入到步驟3002,并且由于跟蹤消息是OD,所以前進到步驟3008和3009。然后,將信息OD=0xAAAAAAAA和POSITION=7存儲到主計算機3的存儲器中,且將TP指派到地址0x1。此后程序控制返回到步驟S3001。
由于TP≠ETP,所以程序控制進入到步驟3002,并且由于跟蹤消息是TF,所以前進到步驟3004和3005。由于標記的值為“1”,所以在地址0x50000000上顯示命令1,且將IP增加到地址0x50000004。
由于有效標記仍舊保留且下一個標記的值為“1”,所以在地址0x50000004上顯示命令2,并將IP增加到地址0x50000008。相似地,在地址0x50000008上顯示命令3,并且由于有效標記仍舊保留且下一個標記的值為“0”,所以將下一個命令5的地址0x50000010分配到IP。
由于有效標記仍舊保留且下一個標記的值為“1”,所以在地址0x50000010上顯示命令5,并將IP增加到地址0x50000014。同樣,在地址0x50000014和地址0x50000018上分別顯示命令6和命令7。
由于有效標記仍舊保留且下一個標記的值為“0”,所以將下一個命令9的地址0x50000020分配到IP。由于有效標記仍舊保留且下一個標記的值為“1”,所以在地址0x50000020上顯示命令9,并且由于下一個標記的值為“0”,所以沒有顯示命令,并增加了地址。
由于完成了對有效標記的數(shù)目的處理,所以結合命令7顯示主計算機3的存儲器中存儲的操作數(shù)數(shù)據(jù)OD=0xAAAAAAAA,其中命令7對應于操作數(shù)生成位置POSITION=7,并且從該存儲器中擦除這個操作數(shù)信息。隨后,將TP指派到地址0x2,且程序控制返回到步驟3001。然后,由于確定了TP=ETP,所以終止了執(zhí)行歷史追溯處理。
圖28是示出通過這個處理獲得的執(zhí)行歷史的圖。在圖28中,示出了“跟蹤存儲器地址”、“跟蹤消息”、“跟蹤包”、“地址”、以及“追溯的執(zhí)行歷史”,并且可以確認已經追溯圖17所示的試樣程序。
如上所述,當生成了操作數(shù)信息時,與操作數(shù)數(shù)據(jù)的跟蹤包一起輸出編碼標記的位計數(shù)值。因此,即使在編碼電路在生成操作數(shù)信息時沒有輸出編碼數(shù)據(jù)作為跟蹤數(shù)據(jù)的情況下,也可以跟蹤指示用于生成命令操作數(shù)信息的信息。
根據(jù)本發(fā)明的處理器和開發(fā)支持設備是用于在外部分析和評估處理器的操作的有用設備。
權利要求
1.一種處理器,包括靜態(tài)調度命令去除單元,在接收到命令發(fā)布信號、命令執(zhí)行條件建立信號、和與靜態(tài)調度一致的執(zhí)行確定信號時,去除靜態(tài)調度命令;編碼單元,在接收到通過該靜態(tài)調度命令去除單元獲得的命令執(zhí)行條件建立信號和命令發(fā)布信號時,對用于除靜態(tài)調度命令之外的命令的執(zhí)行歷史進行編碼;以及數(shù)據(jù)包生成器,在接收到通過編碼單元獲得的編碼數(shù)據(jù)時,生成跟蹤包。
2.根據(jù)權利要求1的處理器,其中從通過該靜態(tài)調度命令去除單元獲得的命令執(zhí)行條件建立信號和命令發(fā)布信號中排除該靜態(tài)調度命令。
3.一種處理器,包括編碼單元,在接收到命令發(fā)布信號、命令執(zhí)行條件建立信號、操作數(shù)檢測信號和操作數(shù)數(shù)據(jù)時,對命令的執(zhí)行歷史進行編碼;數(shù)據(jù)包生成器,在接收到通過編碼單元獲得的編碼數(shù)據(jù)時,生成跟蹤包;以及控制器,當生成操作數(shù)檢測信號時,立即輸出操作數(shù)數(shù)據(jù)包并停止根據(jù)根據(jù)權利要求1的執(zhí)行標記包的輸出。
4.一種處理器,包括編碼單元,在接收到命令發(fā)布信號、命令執(zhí)行條件建立信號、操作數(shù)檢測信號和操作數(shù)數(shù)據(jù)時,對命令的執(zhí)行歷史進行編碼;檢測源程序中的操作數(shù)位置的單元;以及數(shù)據(jù)包生成器,接收通過編碼單元獲得的編碼數(shù)據(jù)和有關操作數(shù)位置的信息,并生成包括關于操作數(shù)位置的信息的跟蹤包。
5.一種開發(fā)支持設備,包括計算機,采用根據(jù)權利要求1的處理器所生成的跟蹤包,并采用該處理器所執(zhí)行的源程序,來執(zhí)行追溯并顯示該處理器的執(zhí)行歷史的執(zhí)行歷史追溯程序;以及用于無條件地顯示源程序中通過靜態(tài)調度來確定其執(zhí)行的命令的單元,用于把源程序中不通過靜態(tài)調度來確定其執(zhí)行的命令和在跟蹤包中的信息關聯(lián)起來,當跟蹤包中的相關信息指示已經建立了執(zhí)行條件時顯示命令,而當跟蹤包中的相關信息指示沒有建立執(zhí)行條件時不顯示命令。
6.一種開發(fā)支持設備,包括計算機,采用根據(jù)權利要求3的處理器所生成的跟蹤包和該處理器執(zhí)行的源程序,來執(zhí)行追溯并顯示該處理器的執(zhí)行歷史的執(zhí)行歷史追溯程序。
7.一種開發(fā)支持設備,包括計算機,其采用根據(jù)權利要求4的處理器所生成的跟蹤包和該處理器執(zhí)行的源程序,來執(zhí)行追溯并顯示該處理器的執(zhí)行歷史的執(zhí)行歷史追溯程序。
全文摘要
一種處理器包括靜態(tài)調度命令去除單元,在接收到命令發(fā)布信號、命令執(zhí)行條件建立信號、和指示預先確定其執(zhí)行的命令的靜態(tài)調度的執(zhí)行確定信號時,去除靜態(tài)調度命令;編碼單元,在接收到都通過靜態(tài)調度命令去除單元獲得的排除了靜態(tài)調度命令的命令執(zhí)行條件建立信號和排除了靜態(tài)調度命令的命令發(fā)布信號時,對排除了靜態(tài)調度命令的命令的執(zhí)行歷史進行編碼;以及數(shù)據(jù)包生成單元,在接收到通過編碼單元獲得的編碼數(shù)據(jù)時,生成跟蹤包。該跟蹤信息由開發(fā)支持設備處理。
文檔編號G06F11/36GK1766849SQ20051011840
公開日2006年5月3日 申請日期2005年10月25日 優(yōu)先權日2004年10月25日
發(fā)明者岡本篤志, 三上勉, 生形篤 申請人:松下電器產業(yè)株式會社