TWI820005B - 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法 - Google Patents
用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法 Download PDFInfo
- Publication number
- TWI820005B TWI820005B TW106127929A TW106127929A TWI820005B TW I820005 B TWI820005 B TW I820005B TW 106127929 A TW106127929 A TW 106127929A TW 106127929 A TW106127929 A TW 106127929A TW I820005 B TWI820005 B TW I820005B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- branch
- trace
- identified
- execution
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 197
- 238000000034 method Methods 0.000 title claims abstract description 38
- 235000013619 trace mineral Nutrition 0.000 claims abstract description 116
- 239000011573 trace mineral Substances 0.000 claims abstract description 116
- 230000001960 triggered effect Effects 0.000 claims abstract description 26
- 230000006399 behavior Effects 0.000 claims description 270
- 230000006837 decompression Effects 0.000 claims description 101
- 230000004044 response Effects 0.000 claims description 23
- 230000009471 action Effects 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 20
- 230000005055 memory storage Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 4
- 238000003384 imaging method Methods 0.000 claims 1
- 210000004027 cell Anatomy 0.000 description 80
- 125000004429 atom Chemical group 0.000 description 46
- 125000004433 nitrogen atom Chemical group N* 0.000 description 21
- 230000007246 mechanism Effects 0.000 description 15
- 238000004458 analytical method Methods 0.000 description 14
- 230000000694 effects Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000036316 preload Effects 0.000 description 3
- 210000000352 storage cell Anatomy 0.000 description 3
- 238000004454 trace mineral analysis Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
提供了用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法。一種裝置,具有:一輸入介面,用於從該處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊;及追蹤產生電路系統,用於從該指令執行資訊產生一追蹤流,該追蹤流包括指示由該處理電路系統在該序列內進行的指令流改變指令的執行的複數個追蹤元素。該序列可包括一分路行為設定指令,該分路行為設定指令指示該序列內的一經識別的指令,其中該分路行為設定指令的執行允許將一分路行為與該經識別的指令相關聯,在該序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址。該追蹤產生電路系統更被佈置為從該指令執行資訊產生指示該分路行為設定指令的執行行為的一追蹤元素及用以指示已在該序列內遭遇到該經識別的指令之後觸發該分路行為的一追蹤元素。這即使在由處理電路系統所執行的指令序列包括了這樣的分路行為設定指令的情況下亦允許使用非常高效形式的追蹤流。
Description
本技術關於用於產生指示資料處理系統內之處理電路系統之活動的追蹤流(trace stream)的機制,且具體而言是關於用於產生及處理指示由這樣的處理電路系統所進行之指令執行的追蹤流的機制。
追蹤電路系統可用來產生追蹤流,該追蹤流包括一系列的追蹤元素,使得之後可分析彼等追蹤元素以決定相關聯的處理電路系統的活動(例如決定由處理電路系統所執行之指令的序列)。為了減少追蹤流內之追蹤資訊的量,追蹤電路系統可被佈置為不針對各個所執行的指令產生單獨的追蹤元素,而是僅針對某些預定的執行的指令產生追蹤元素,例如針對各個所執行的分路指令產生追蹤元素。自關於預定指令的資訊,分析電路系統可接著試圖使用程式影像來重建關於所執行之指令的序列的資訊。
最近,已提出了新型的指令,該等指令將在本文中稱為分路行為設定指令。分路行為設定指令可有效地將分路行為與任何任意的指令相關聯,以使得替代於或附加於與該任意指令相關聯的正常操作而在遭遇該任意指令時採取分路。
這在使用上述的追蹤流方法來試圖追蹤處理電路系統的執行行為時造成了顯著的問題,在該方法中,僅針對某些預定指令產生追蹤元素。具體而言,雖然追蹤機制可被佈置為針對各個分路指令產生追蹤元素,然而分路行為設定指令的使用允許了任意指令(追蹤機制並不將該等任意指令辨識為分路指令)起動指令流內的分路,這可能擾亂分析電路系統自由追蹤電路系統所產生的追蹤流正確決定處理電路系統的指令執行行為的能力。
本技術針對的是在這樣的分路行為設定指令存在的情況下改良可靠的追蹤。
在一個示例配置下,提供了一種裝置,該裝置包括:一輸入介面,用以從處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊,所述序列包括一分路行為設定指令,該分路行為設定指令指示所述序列內的一經識別的指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;及追蹤產生電路系統,用以從該指令執行資訊產生一追蹤流,該追蹤流包括指示由該處理電路系統在所述序列內進行的指令流改變指令的執行的複數個追蹤元素;及該追蹤產生電路系統更被佈置為從該指令執行資訊產生指示所述分路行為設定指令的執行行為的一追蹤元素及用以指示已在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為的一追蹤元素。
在另一示例配置中,提供了一種裝置,該裝置包括:一輸入介面,用以接收一追蹤流,該追蹤流包括指示由處理電路系統在一指令序列內進行的預定指令的執行的複數個追蹤元素,該指令序列是由該處理電路系統所執行的,所述序列包括指示所述序列內的一經識別的指令的一分路行為設定指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;解壓縮電路系統,回應於各個追蹤元素而從一目前指令位址遍歷一程式影像,直到在所述程式影像內偵測到該等預定指令中的一下個指令為止,及從該程式影像產生指示所述目前指令位址及該等預定指令中的所述下個指令間之該等指令的資訊;及一分路控制儲存器,與所述解壓縮電路系統相關聯;該解壓縮電路系統回應於在回應於一預定類型的一目前追蹤元素而遍歷所述程式影像時偵測到至少一個類型的該分路行為設定指令,在該分路控制儲存器內儲存從該分路行為設定指令導出的分路控制資訊;該解壓縮電路系統被佈置為在參考該分路控制資訊而偵測到已在遍歷該程式影像期間到達該經識別的指令時,將該經識別的指令視為所述預定指令中的該下個指令。
在又進一步的示例配置中,提供了一種產生指示由處理電路系統進行的指令執行的一追蹤流的方法,包括以下步驟:從該處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊,所述序列包括一分路行為設定指令,該分路行為設定指令指示所述序列內的一經識別的指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;從該指令執行資訊產生該追蹤流,該追蹤流包括指示由該處理電路系統在所述序列內進行的指令流改變指令的執行的複數個追蹤元素;及從該指令執行資訊產生指示所述分路行為設定指令的執行行為的一追蹤元素及用以指示已在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為的一追蹤元素。
在進一步的示例配置中,提供了一種裝置,該裝置包括:輸入介面手段,用於從處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊,所述序列包括一分路行為設定指令,該分路行為設定指令指示所述序列內的一經識別的指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;及追蹤產生手段,用於從該指令執行資訊產生一追蹤流,該追蹤流包括指示由該處理電路系統在所述序列內進行的指令流改變指令的執行的複數個追蹤元素;及該追蹤產生手段更用於從該指令執行資訊產生指示所述分路行為設定指令的執行行為的一追蹤元素及用以指示已在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為的一追蹤元素。
依據另一示例配置,提供了一種處理一追蹤流的方法,該追蹤流被產生來指示由處理電路系統進行的指令執行,該方法包括以下步驟:接收該追蹤流,該追蹤流包括指示由該處理電路系統在一指令序列內進行的預定指令的執行的複數個追蹤元素,該指令序列是由該處理電路系統所執行的,所述序列包括指示所述序列內的一經識別的指令的一分路行為設定指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;回應於各個追蹤元素而從一目前指令位址遍歷一程式影像,直到在所述程式影像內偵測到該等預定指令中的一下個指令為止,及從該程式影像產生指示所述目前指令位址及該等預定指令中的所述下個指令間之該等指令的資訊;回應於在回應於一預定類型的一目前追蹤元素而遍歷所述程式影像時偵測到至少一個類型的該分路行為設定指令,在一分路控制儲存器內儲存從該分路行為設定指令導出的分路控制資訊;及在參考該分路控制資訊而偵測到已在遍歷該程式影像期間到達該經識別的指令時,將該經識別的指令視為所述預定指令中的該下個指令。
在又進一步的示例配置中,提供了一種裝置,該裝置包括:一輸入介面手段,用於接收一追蹤流,該追蹤流包括指示由處理電路系統在一指令序列內進行的預定指令的執行的複數個追蹤元素,該指令序列是由該處理電路系統所執行的,所述序列包括指示所述序列內的一經識別的指令的一分路行為設定指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;解壓縮手段,用於回應於各個追蹤元素而從一目前指令位址遍歷一程式影像,直到在所述程式影像內偵測到該等預定指令中的一下個指令為止,及用於從該程式影像產生指示所述目前指令位址及該等預定指令中的所述下個指令間之該等指令的資訊;及一分路控制儲存器手段,用於與所述解壓縮手段相關聯;該解壓縮手段用於回應於在回應於一預定類型的一目前追蹤元素而遍歷所述程式影像時偵測到至少一個類型的該分路行為設定指令,在該分路控制儲存器手段內儲存從該分路行為設定指令導出的分路控制資訊;該解壓縮手段用於在參考該分路控制資訊而偵測到已在遍歷該程式影像期間到達該經識別的指令時,將該經識別的指令視為所述預定指令中的該下個指令。
追蹤資料處理系統內之處理電路系統的活動,從而產生可接著被分析來識別處理電路系統的逐步活動的追蹤元素流,在系統軟體研發中是高度有用的工具。可例如分析追蹤流以促進由處理電路系統所執行之指令序列的除錯。一般而言,追蹤機制是與處理電路系統一起提供在晶片上的,這樣的晶片上追蹤機制的示例為由英國劍橋的ARM有限公司所提供的與各種ARM處理器相關聯的嵌入式追蹤巨集晶元(ETM)。這樣的追蹤機制可能潛在地產生大量的追蹤元素,該等追蹤元素接著需要被提供到晶片外以供進一步分析。已研發了許多技術來試圖減少所產生的追蹤資訊量同時仍允許之後分析處理電路系統的逐步活動。
如先前所述,用於減少所產生之追蹤資訊的量的一個技術涉及僅針對由處理電路系統所執行之指令序列內的特定類型的指令輸出追蹤元素,其中追蹤分析電路系統接著能夠從關於那些特定指令之執行的資訊重建處理電路系統的逐步的指令執行行為。作為一示例,追蹤電路系統可每次在處理指令流改變指令(一般是分路指令)時輸出追蹤元素,該追蹤元素指示該分路是否已被採取,且分析電路系統可接著導出處理電路系統已在彼等指令(已針對彼等指令產生追蹤元素)之間執行了什麼指令。
然而,先前所述的分路行為設定指令可能出現在指令序列內。分路行為設定指令的執行允許分路行為與由分路行為設定指令所識別的另一指令(在本文中稱為「經識別的指令」)相關聯,這使得處理電路系統在指令序列中遭遇到經識別的指令時分路到由分路行為設定指令所識別的目標位址。因此,分路行為設定指令可有效地將任何任意的指令變成分路。
如先前所述,這在使用上述的追蹤流方法來試圖追蹤處理電路系統的執行行為時造成了顯著的問題,在該方法中,僅針對某些預定指令產生追蹤元素。所述的實施例用於緩解這些問題,而允許繼續採納上述的減少量的追蹤流的方法同時亦適應包括分路行為設定指令的指令序列。
在參照隨附圖式來討論實施例之前,提供以下實施例說明。
在一個實施例中,提供了一種裝置,該裝置包括:一輸入介面,用以從相關聯的處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊;及追蹤產生電路系統,用以從該指令執行資訊產生一追蹤流,該追蹤流包括指示由該處理電路系統在該序列內進行的指令流改變指令的執行的複數個追蹤元素。該指令序列可包括指示該序列內的一經識別的指令的一分路行為設定指令。該分路行為設定指令的執行允許將一分路行為與該經識別的指令相關聯,在該序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址。
進一步地,該追蹤產生電路系統被佈置為從該指令執行資訊產生指示該分路行為設定指令的執行行為的一追蹤元素及用以指示已在該序列內遭遇到該經識別的指令之後觸發所述分路行為的一追蹤元素。在追蹤流內使用這些額外追蹤元素的情況下,這針對追蹤分析器提供了高效的機制,該追蹤分析器隨後接收追蹤流以決定由處理電路系統所執行的指令序列。具體而言,在追蹤流內提供此額外的資訊時,追蹤分析器可決定分路行為設定指令的執行何時已使得分路行為與經識別的指令相關聯,且因此可能正確地解譯追蹤元素序列以決定指令流上的改變在指令序列內發生的各個時點。
在一個實施例中,在該分路行為設定指令的執行使得該分路行為與該經識別的指令相關聯時,該處理電路系統被佈置為在一分路控制儲存器內儲存用於該經識別的指令的分路控制資訊。該追蹤產生電路系統接著被佈置為:在該指令執行資訊指示一分路已由於在用於該經識別的指令的分路控制資訊被儲存在該分路控制儲存器內時在該序列中遭遇到該經識別的指令而發生時,產生指示已觸發所述分路行為的一追蹤元素。因此,若用於經識別的指令的相關聯的分路控制資訊在遭遇到經識別的指令時仍存在於分路控制儲存器內,且該遭遇事件確實使得分路發生,則追蹤產生電路系統可產生追蹤元素以指示分路行為已被觸發,而允許追蹤分析器在之後決定在遭遇到經識別的指令之後已發生的指令流上的改變。
在一個實施例中,若在遭遇到經識別的指令時,在分路控制儲存器內不再存在任何相對應的分路控制資訊,則這將意味的是,分路行為未在處理電路系統內觸發,且據此追蹤產生電路系統將不產生指示分路行為已被觸發的追蹤元素。在某些實施例中,取決於分路行為設定指令的類型,追蹤產生電路系統可被佈置為在分路控制儲存器的內容被無效化時在追蹤流內發出一或更多個額外封包,以便允許追蹤分析器在這樣的情況下正確追蹤處理電路系統的活動。
分路行為設定指令可採取各種形式。在一個實施例中,該分路行為設定指令是一程式迴圈主體的一結束處的一迴圈末端指令,該經識別的指令是所述程式迴圈主體內的一緊接在前的指令,且所述目標位址是該程式迴圈主體的一開始處的一指令的一位址。該追蹤產生單元接著被佈置為:每次在該指令執行資訊指示一分路已由於在用於所述緊接在前的指令的分路控制資訊被儲存在該分路控制儲存器內時遭遇到所述緊接在前的指令而發生時,發出指示已觸發所述分路行為的一追蹤元素。
這樣的迴圈末端指令可用來實施所謂的「零額外負擔迴圈」,其中並不需要在各個迴圈迭代期間執行迴圈末端指令,且反而在第一次迭代之後,可在遭遇到程式迴圈主體中的倒數第二個指令時觸發進一步迭代所需的分路行為。藉由使追蹤產生單元以上述方式產生追蹤元素,這允許分析電路系統正確追蹤處理電路系統的這樣的零額外負擔迴圈的執行。
在一個實施例中,將不總是僅由於在用於緊接在前的指令的分路控制資訊被儲存在分路控制儲存器內時遭遇到該緊接在前的指令而觸發分路行為。反而,此外,在該時點決定需要程式迴圈主體的至少一個進一步迭代亦將是必要的,且僅在那時分路行為才將被觸發。據此,僅在這樣的條件下,追蹤產生單元才將發出指示分路行為已被觸發的追蹤元素。在一個實施例中,若分路行為在該實例中未被觸發,則不需要由追蹤產生單元在該時點發出追蹤元素。
在一個實施例中,迴圈末端指令的執行將不總是使得分路行為與緊接在前的指令相關聯。在該迴圈末端指令的執行確實使得該分路行為與所述緊接在前的指令相關聯時,該處理電路系統被佈置為分路到所述目標位址,且該追蹤產生電路系統被佈置為發出將一採取的分路指示為所述迴圈末端指令的該執行行為的一追蹤元素。反過來,在不需要該迴圈主體的進一步迭代時,該迴圈末端指令的執行將使得該處理電路系統離開該程式迴圈主體,且該追蹤產生電路系統被佈置為發出將一不採取的分路指示為所述迴圈末端指令的該執行行為的一追蹤元素。
在一個實施例中,可將原子形式的追蹤元素用於此目的,且在迴圈末端指令的執行使得分路行為與緊接在前的指令相關聯時,可與該迴圈末端指令的執行相關聯而發出E原子,否則N原子可與迴圈末端指令的執行相關聯。
在一個實施例中,在一事件使得用於所述緊接在前的指令的該分路控制資訊在該分路控制儲存器內被無效化且同時仍需要該程式迴圈主體的進一步的迭代時,在下次遭遇到所述緊接在前的指令之後將不觸發該分路行為。然而,該處理電路系統回應於該迴圈末端指令的一下次執行,使得該分路行為與所述緊接在前的指令重新相關聯,且使得採取一分路到所述目標位址,藉此恢復該程式迴圈主體的該等進一步迭代的處理。該追蹤產生電路系統接著被佈置為發出將一採取的分路指示為所述迴圈末端指令的該執行行為的一進一步追蹤元素。
因此,在這樣的實施例中,在仍需要一或更多個剩餘的程式迴圈主體迭代的同時無效化分路控制儲存器內容從追蹤的角度來看並不造成任何問題,因為後續的迴圈末端指令的執行將使得分路行為與緊接在前的指令重新相關聯。雖然追蹤分析器在此實例中不能在遭遇到迴圈主體內的緊接在前的指令之後所採取的分路或由於重新執行迴圈末端指令而採取的分路之間進行區隔,這並不重要,因為追蹤分析器仍將從所發出的追蹤元素正確地追蹤各個程式迴圈主體迭代的執行。
可由所述的實施例所支援的另一類型的分路行為設定指令是分路未來指令。該指令序列可僅包括先前所述的迴圈末端指令形式的分路行為設定指令、僅包括分路未來指令形式的分路行為設定指令或在指令序列內可具有迴圈末端指令及分路未來指令兩者的混合物。
在該分路行為設定指令是一分路未來指令時,該經識別的指令是該序列內的該分路未來指令之後的一指令。任何任意的指令可被分路未來指令指定為經識別的指令。在這樣的實施例中,在該分路未來指令的執行使得該分路行為與所述經識別的指令相關聯時,該追蹤產生電路系統被佈置為發出一追蹤元素,該追蹤元素指示,作為所述分路未來指令的該執行行為,該分路行為已被相關聯。反過來,在該分路未來指令的執行並不使得該分路行為與所述經識別的指令相關聯時,該追蹤產生電路系統被佈置為發出一追蹤元素,該追蹤元素指示,作為所述分路未來指令的該執行行為,該分路行為未被相關聯。藉由這樣的方法,可將各個分路未來指令的執行行為捕捉在追蹤流內,因此允許追蹤分析器決定分路未來指令的執行是否已使得分路行為與經識別的指令相關聯。
存在著分路未來指令的執行為何可不使得分路行為與經識別的指令相關聯的許多理由。例如,分路未來指令可被佈置為是有條件的,使得僅在滿足某些條件時,分路行為才將與經識別的指令相關聯。並且,在某些實施例中,可能選擇性地停用分路未來機能,停用的結果是,任何遭遇到的分路未來指令將不使得分路行為與經識別的指令相關聯。
由追蹤產生電路系統所發出來識別分路未來指令的執行行為的追蹤元素的形式可採取各種形式。然而,在一個實施例中,用來指示採取的及不採取的分路的追蹤元素為此目的而被重複使用。具體而言,在一個實施例中,該追蹤產生電路系統被佈置為在該追蹤元素指示該分路行為已被相關聯時發出一與用來指示一採取的分路相同的類型的追蹤元素,且該追蹤產生電路系統被佈置為在該追蹤元素指示該分路行為未被相關聯時發出一與用來指示一不採取的分路相同的類型的追蹤元素。因此,在一個特定實施例中,先前所述的E及N原子可用於此目的。
在一個實施例中,一個分路未來指令的執行可能使得分路控制儲存器中與先前的分路未來指令相關聯的有效儲存格被覆蓋。在這樣的狀況下,追蹤產生電路系統可被佈置為發出進一步的追蹤元素以向追蹤分析電路系統識別該事實。具體而言,在一個實施例中,在該分路未來指令的執行使得該分路行為與該經識別的指令相關聯且由該處理電路系統儲存在該分路控制儲存器內的用於該經識別的指令的該分路控制資訊覆蓋了與一先前執行的分路未來指令的該經識別的指令相關聯的有效分路控制資訊時,該追蹤產生電路系統被佈置為發出一非事件追蹤元素。追蹤分析器可接著被佈置為回應於非事件追蹤元素而更新該追蹤分析器的內部維護的記錄,以便識別將不與該先前的分路未來指令的經識別的指令相關聯而發生分路。在一個實施例中,在被發出以指示分路未來指令的執行已使得分路行為與經識別的指令相關聯的追蹤元素之前,在追蹤流中發出非事件追蹤元素。
在一個實施例中,若追蹤分析器知道分路控制儲存器內所使用的替換策略,且該追蹤分析器從追蹤流中的其他追蹤元素確定儲存格將被覆蓋,則可能不需要在追蹤流內單獨發出非事件追蹤元素。
在一個實施例中,在該分路未來指令的執行及在所述序列中遭遇到該經識別指令的事件之間的指令執行中的時點處啟用追蹤時,該追蹤產生電路系統回應於在遭遇到該經識別的指令之後所採取的一分路而發出一追蹤元素以識別該經識別的指令及已在遭遇到該經識別的指令之後採取的該分路兩者。
此特殊形式的追蹤元素因此相較於在已夠早地啟用追蹤行為使得先前的分路未來指令的執行行為亦將被追蹤時遭遇到經識別的指令時所發出的先前所述的追蹤元素而言需要捕捉更多資訊,因為在追蹤元素內提供充分的資訊以皆清楚地識別經識別的指令及完全識別已在遭遇到該經識別的指令之後所採取的分路是必要的。因此,在一個實施例中,該追蹤元素將需要識別經識別的指令的位址及目標位址。雖然這在追蹤頻寬的意義上是相對昂貴的,將理解的是,這樣的追蹤元素的使用不太可能經常需要,因為在大多數情況中中所期望的是,將不在分路未來指令的執行及在序列中遭遇到相關聯的經識別的指令的事件之間的時點處啟用追蹤行為。在一個實施例中,預先存在的追蹤元素格式類型(亦即已經用於提供關於在指令執行期間發生的異常的資訊的追蹤元素格式)可用於此特殊的追蹤元素。
存在著追蹤產生電路系統可決定已在分路未來指令的執行及遭遇到經識別的指令的事件間之指令執行中的時點處啟用追蹤行為的情況的許多方式。在一個實施例中,該追蹤產生電路系統被佈置為與該分路控制儲存器中的各個儲存格相關聯而維持一計數器值,該儲存格與一分路未來指令的一經識別的指令相關聯,且該追蹤產生電路系統被佈置為:在用於該分路控制儲存中的相關儲存格的該計數器值在遭遇到該經識別的指令之後採取了該分路時具有一非預期值時,發出所述追蹤元素以識別該經識別的指令及已在遭遇到該經識別的指令之後採取的該分路兩者。
在一個特定實施例中,計數器可在追蹤產生電路系統針對分路未來指令發出追蹤元素以指示分路行為已與經識別的指令相關聯(在一個實施例中是藉由發出E原子)時遞增,且可在偵測到已隨後針對經識別的指令採取了分路時遞減。因此,會期望的是,計數器的值在遭遇到經識別的指令之後採取分路時會是非零的,且若該值反而是零,則這在一個實施例中用來指示反而應由追蹤產生電路系統發出先前所述的異常樣式封包。
在一個實施例中,各種事件可使得分路控制儲存器內的分路控制資訊被無效化。例如,在一個實施例中,在處理電路系統採取異常行為時,分路控制儲存器的目前內容被無效化。在這樣的情況下,追蹤產生電路系統可被佈置為在追蹤流內發出無效化追蹤元素,以允許追蹤分析器後續決定分路控制儲存器的內容何時已被無效化。然而,在其他實施例中,可能不需要發出特殊的無效化追蹤元素,因為追蹤分析器可能能夠從追蹤流內所發出的其他封包決定分路控制儲存器內容已被無效化。例如,基於其他理由,可在分路控制儲存器內容被無效化時發出另一封包,且追蹤分析器可能能夠從該封包決定分路控制儲存器的內容已被無效化。作為一特定示例,可在遭遇到中斷行為之後發出中斷封包,且追蹤分析器可被佈置為從中斷封包的存在決定分路控制儲存器將被無效化。
在遭遇到序列內的經識別的指令之後觸發分路行為時,處理電路系統在一個實施例中可被佈置為除了觸發分路行為以外仍執行經識別的指令,而在一替代性實施例中,該處理電路系統可僅觸發分路行為且抑制經識別的指令本身的執行。因此,在後者的情況下,分路行為有效地替換了經識別的指令的正常執行行為。
儲存在分路控制儲存器內的分路控制資訊可採取各種形式,在一個實施例中至少包括了提供經識別的指令的指示的分路點資料及提供目標位址的指示的進一步資料。分路點資料可採取各種形式,但足以允許決定經識別的指令,且因此允許偵測該經識別的指令何時已被處理電路系統遭遇到。
在一個實施例中,分路點資料可包括以下中的一或更多者:位址資料,指示所述經識別的指令的一位址;末端資料,指示緊接在所述經識別的指令之前的一最後指令的一位址;偏位資料,指示所述分路行為設定指令及所述經識別的指令之間的一距離;一適當的位元子集合,指示所述經識別的指令的一記憶體儲存器位址,該記憶體儲存器位址從所述記憶體儲存器位址的位元的一最低有效位元端開始,該最低有效位元端在指令的開始儲存器位址之間進行區隔;剩餘大小指令資料,指示在所述經識別的指令之前所剩下要處理的一指令數量;及剩餘大小資料,指示在到達所述經識別的指令之前所剩餘要處理的一程式儲存器位置數量。
將理解的是,這些各種選項提供了用於決定何時已在指令序列內到達經識別的指令的機制。
在進一步實施例中,可提供一種用於執行追蹤分析功能的裝置。具體而言,這樣的裝置可包括:一輸入介面,用以接收一追蹤流,該追蹤流包括指示由處理電路系統在一指令序列內進行的預定指令的執行的複數個追蹤元素,該指令序列是由該處理電路系統所執行的,所述序列包括指示所述序列內的一經識別的指令的一分路行為設定指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址。該裝置更包括:解壓縮電路系統,回應於各個追蹤元素而從一目前指令位址遍歷一程式影像,直到在所述程式影像內偵測到該等預定指令中的一下個指令為止,及從該程式影像產生指示所述目前指令位址及該等預定指令中的所述下個指令間之該等指令的資訊。分路控制儲存器與所述解壓縮電路系統相關聯。該解壓縮電路系統回應於在回應於一預定類型的一目前追蹤元素而遍歷所述程式影像時偵測到至少一個類型的該分路行為設定指令,在該分路控制儲存器內儲存從該分路行為設定指令導出的分路控制資訊。進一步地,該解壓縮電路系統被佈置為在參考該分路控制資訊而偵測到已在遍歷該程式影像期間到達該經識別的指令時,將該經識別的指令視為所述預定指令中的該下個指令。
因此,考慮預定指令為分路指令的示例,接著即使分路行為設定指令可能本身不是分路指令,且確實經識別的指令可能本身不是分路指令,經由與解壓縮電路系統相關聯而使用分路控制儲存器,解壓縮電路系統可偵測處理電路系統何時已將分路行為與經識別的指令相關聯,且可偵測到在程式影像內何時遭遇到了經識別的指令。在此時,可接著對待經識別的指令如同該經識別的指令是分路指令一般。即使在所執行的指令序列包括了一或更多個分路行為設定指令時,這亦因此允許僅針對由處理電路系統所執行的某些指令產生追蹤元素的追蹤流的產生被追蹤分析電路系統正確分析,且因此可潛在地將任何任意的指令轉變成分路。
雖然解壓縮電路系統可被佈置為針對在遍歷程式影像時所遭遇到的各個分路行為設定指令在該解壓縮電路系統的相關聯分路控制儲存器中製作儲存格,在一個實施例中,該解壓縮電路系統僅針對分路未來指令而不是針對先前所述的迴圈末端指令這樣做。具體而言,在一個實施例中,解壓縮電路系統並不需要在迴圈末端指令及由該迴圈末端指令所指定的經識別的指令(亦即程式迴圈主體內緊接在前的指令)之間進行區隔來正確追蹤處理電路系統的指令執行行為,且因此不需要針對經識別的指令在解壓縮電路系統的相關聯分路控制儲存器中製作儲存格。
儲存在與解壓縮電路系統相關聯的分路控制儲存器內的資訊可採取各種形式。在一個實施例中,該解壓縮電路系統被佈置為將分路點資料儲存為該分路控制資訊,該分路點資料由該分路行為設定指令所識別且用來決定該經識別的指令。並且,在一個實施例中,該解壓縮電路系統被佈置為在可從該分路行為設定指令內所指定的一立即值直接導出該目標位址時將該目標位址儲存為該分路控制資訊。因此,若該目標位址可從立即值直接導出,則解壓縮電路系統可從程式影像決定目標位址,且因此將目標位址捕捉在該解壓縮電路系統的本端分路控制儲存器內。這允許該解壓縮電路系統在之後遭遇到經識別的指令時直接決定要分路到程式影像內的何處。若目標位址反而不是可直接識別的,則在一個實施例中,追蹤流將包括直接識別目標位址的資訊,且因此解壓縮電路系統可能從提供在追蹤流內的資訊決定目標位址。
在一個實施例中,解壓縮電路系統亦可被佈置為回應於先前所述的非事件追蹤元素或無效化追蹤元素,其中可選地使用該等追蹤元素。具體而言,該解壓縮電路系統可被佈置為回應於該追蹤流中的一非事件追蹤元素而無效化該解壓縮電路系統的相關聯分路控制儲存器中的一特定儲存格。類似地,回應於無效化追蹤元素,解壓縮電路系統可被佈置為無效化該解壓縮電路系統的相關聯分路控制儲存器的內容。
現將參照圖式來描述特定的實施例。
圖1示意性地繪示依據一個實施例的系統,該系統提供了受監控的電路系統10、追蹤模組20、追蹤緩存器30及追蹤分析器40。雖然圖1繪示了提供追蹤緩存器30的系統,在替代性實施例中,追蹤模組20可將該追蹤模組的輸出在不透過追蹤緩存器的情況下直接傳遞到追蹤分析器40。追蹤模組20被佈置為產生包括一系列追蹤元素的追蹤流,該等追蹤元素接著允許追蹤分析器重建受監控的電路系統10的活動。受監控的電路系統10可採取各種形式,但在一個實施例中包括了被佈置為執行指令序列的至少一個處理構件(例如處理器核心)。受監控的電路系統向追蹤模組20輸出指示在受監控的電路系統上被執行的指令的指令執行資訊。
追蹤模組(其在一個實施例中是實施在晶片上,且例如可採取由英國劍橋的ARM有限公司所生產的ETM電路的形式)被佈置為產生提供一系列追蹤元素的追蹤流,其中追蹤元素指示指令序列內之預定指令的執行。因此,追蹤流內的追蹤元素僅指示某些預定指令的執行,而不是產生表示由受監控的電路系統所執行之各個指令的追蹤元素,其中追蹤分析器具有充分的知識(例如透過程式影像)來允許該追蹤分析器重建關於已在各個這樣的預定指令(追蹤元素是針對該預定指令提供的)之間執行的指令的資訊。例如,在一個實施例中,追蹤模組可被佈置為針對在序列內所執行的每個指令流改變指令(一般是分路指令)產生追蹤元素,該追蹤元素提供關於是否採取了分路的資訊,且追蹤分析器40具有程式影像以允許該追蹤分析器基於關於分路指令的處理的資訊來決定已執行的實際指令序列。這允許產生顯著減少的量的追蹤元素。這是非常有用的,因為追蹤分析器40一般實施在晶片外,且因此需要將追蹤流透過晶片的針腳路由到分析器。
由受監控的電路系統所執行的指令序列可包括一或更多個分路行為設定指令。分路行為設定指令能夠將分路行為與由分路行為設定指令明確地或隱含地識別的任意指令相關聯,且接著在之後遭遇到該經識別的指令時,這可使得受監控的電路採取通往目標位址的分路(替代於或附加於執行由經識別的指令所要求的功能),該分路是由分路行為設定指令所識別的。為了支援此行為,受監控的電路系統可能具有相關聯的分路控制儲存器,在一個實施例中該分路控制儲存器採取具有一或更多個儲存格的分路目標位址快取記憶體(BTAC)的形式。
在執行分路行為設定指令時,這可使得將儲存格分配在BTAC中(取決於分路行為設定指令的類型,可能發生評估行為以決定是否應分配儲存格),且該儲存格將經識別指令由分路未來指令所指示的位址記錄為來源位址以及記錄識別在遭遇到該經識別指令時處理電路系統所應分路到的位址的目標位址。在一個實施例中,在執行以上述方式造成BTAC的填入的分路行為設定指令之後,在處理電路系統接著偵測到該處理電路系統的BTAC的儲存格中的一者的命中時(例如由於偵測到該處理電路系統的程式計數器已更新到或即將更新到相對應於保存在BTAC的儲存格中的一者中的來源位址的值),該處理電路系統可被佈置為使得指令流分路到亦被捕捉在BTAC的該儲存格中的目標位址(如之後將更詳細討論的,取決於分路行為設定指令的類型,可依據亦存在的另一條件有條件地作出採取分路的行為)。
藉由這樣的方法,可看到的是,分路行為設定指令可用來有效地將任何任意的指令轉變成分路。該經識別指令的形式並不重要,因為在以上述方式由分路行為設定指令識別時,處理電路系統可被佈置為在之後遭遇到該經識別指令之後執行由分路行為設定指令所識別的分路。可依需要有條件地執行分路行為設定指令。因此,在滿足用於執行分路行為設定指令的條件時,以上所討論的處理行為將發生,且在之後遭遇到經識別的指令時,受監控的電路系統可執行通往目標位址的分路(附加於或替代於執行經識別的指令)。從而,若在要執行分路行為設定指令時未滿足該等條件,則將不執行分路行為設定指令,且在適當的時候,經識別的指令將以該經識別指令的正常方式執行以執行由該經識別指令所指定的功能。
雖然這樣的分路行為設定指令的使用將顯著的彈性添加進可藉由受監控的電路系統10來執行的操作,這在追蹤模組20被佈置為產生先前所述的類型的追蹤流時對於該追蹤模組造成了顯著的問題,其中僅針對由受監控的電路系統所執行之序列內的特定的預定指令產生追蹤元素。具體而言,若追蹤模組被設置為針對所執行的各個指令流改變指令產生追蹤元素,則該追蹤模組一般不會針對已被分路行為設定指令標記為造成分路的經識別指令產生追蹤元素,因為該經識別的指令在很大的程度上本身並非分路指令。若追蹤流並未正確標記已經發生這樣的分路,則將理解的是,追蹤分析器將不能夠正確地導出由受監控的電路系統所執行的指令序列。
可能的是,佈置追蹤產生電路系統以使用如同該追蹤產生電路系統可能追蹤關於何時已發生異常的資訊的相同方式,來追蹤由於到達由受監控的電路系統的BTAC中的儲存格所標記的經識別指令而發生的任何這樣的分路。然而,這在追蹤頻寬的意義上是昂貴的,因為會需要追蹤經識別指令的位址及所分路到的目標位址兩者,且因此這可能顯著損害追蹤流格式的效率。
如將在本文中進一步討論,提供了一種機制,該機制允許追蹤產生電路系統高效地追蹤在受監控的電路系統內由於遭遇到匹配受監控的電路的BTAC中的儲存格的經識別指令而發生的分路。
圖2為一方塊圖,繪示一個實施例的追蹤模組20。如圖所示,追蹤模組20耦合至處理構件50,該處理構件在一個實施例中形成了受監控的電路系統10的至少一部分。處理構件50具有相關聯的BTAC 55,該BTAC維護基於分路行為設定指令的執行而填入的分路控制資訊。BTAC 55具有一或更多個儲存格,且在處理構件50執行分路行為設定指令時,若分路行為設定指令的執行指示先前所述的分路行為應與經識別的指令相關聯,則BTAC 55中之儲存格中的一者將被填以某個分路控制資訊。
在如圖4A中所示一個實施例中,BTAC 55內的各個儲存格可包括來源位址欄155及目標位址欄160,在該來源位址欄中捕捉了由分路行為設定指令所指示之經識別指令的位址,在該目標位址欄中儲存了由分路行為設定指令所識別的目標位址。雖然,在一個實施例中,欄位155儲存經識別指令的位址,更一般而言,欄位155儲存分路點資料,該分路點資料可採取先前所討論之任何形式的但足以允許處理構件偵測該處理構件何時在指令流內遭遇到經識別的指令。在BTAC 55的儲存格中的一者中偵測到命中而指示已在指令流內遭遇到經識別的指令時,接著若滿足任何其他所需的條件,則處理構件分路到相關聯的目標位址欄160中的目標位址(附加於或替代於執行經識別的指令)。
在一個實施例中,可支援多於一種的分路行為設定指令,其中欄位165被提供在各個BTAC儲存格55內以識別該儲存格所關聯之分路行為設定指令的類型。可接著提供分路及迴圈控制電路系統58以參考特定儲存格的該欄位165以決定是否應調用分路行為,其中已在BTAC中針對該特定儲存格偵測到命中。
在一個實施例中,支援第一類型的分路行為設定指令,該指令在本文中將稱為分路未來指令。在執行分路未來指令時,經識別的指令可為處理電路系統在執行分路未來指令之後的某個時點處在指令序列內將遭遇到的任何任意指令。分路未來指令的執行可有條件地進行,且確實在某些實施例中為了向下相容的理由可能可以停用分路未來功能。然而,若執行了分路未來指令,則BTAC 55中的儲存格中的一者將如上文所討論地被填入。之後,在指令流內遭遇到經識別的指令時,接著若BTAC 55中的相對應儲存格仍然存在,這將使得分路及迴圈控制電路系統58決定應調用分路行為,且其結果是處理構件50將分路到BTAC 55的該儲存格中所識別的目標位址。此時,分路及迴圈控制電路系統58可接著無效化該BTAC儲存格。
在一個實施例中可支援的第二類型的分路行為設定指令為用作程式迴圈中之最終指令的零額外負擔迴圈末端(ZOLE)指令。該指令可被佈置為將迴圈中緊接在前的指令識別為經識別的指令,且將程式迴圈之開始位置的位址指示識別為目標位址。在第一次迭代時,ZOLE指令可被佈置為若需要程式迴圈的至少一個進一步迭代則填入BTAC 55中的儲存格,且接著分路到程式迴圈的開始位置。在每次後續的迭代時,在遭遇到經識別的指令(亦即程式迴圈的倒數第二個指令)時,接著若相對應的儲存格仍存在於BTAC 55中,且若仍有程式迴圈的至少一個進一步迭代要執行,則分路及迴圈控制電路系統58將決定應調用上述的分路行為,而使得處理構件50除了執行該倒數第二個指令以外分路到程式迴圈的開始位置。這可顯著增加程式迴圈之執行的效能。在適當的時候,在迴圈的最終迭代期間遭遇到經識別的指令時,接著若仍填入相關的BTAC儲存格,則分路及迴圈控制電路系統58可決定無效化該BTAC儲存格且不調用分路行為。
在處理構件50執行指令序列時,該處理構件將指令執行資訊傳遞到追蹤模組20的輸入介面65,該指令執行資訊從該輸入介面遞送到追蹤產生電路系統60。在一個實施例中,此指令執行資訊將包括識別分路行為設定指令之執行行為的資訊(足以決定該指令的執行是否已導致在BTAC 55中製作儲存格的資訊),且將包括識別分路何時由於BTAC儲存格中的一者中的命中而已發生的資訊。
在一個實施例中,BTAC 55中的各個儲存格可具有額外的欄位來捕捉關於目標位址是否是直接目標位址(亦即可從從分路行為設定指令直接決定(例如藉由提供為分路行為設定指令內的立即值))或是間接目標位址(例如其中分路行為設定指令識別一暫存器,該暫存器的內容用來導出目標位址)的資訊,且此資訊可被提供在由處理構件50向追蹤產生電路系統60所提供的指令執行資訊內,以供由追蹤產生電路系統60在肇因於BTAC 55內的命中的分路發生時決定要將什麼資訊包括在追蹤流內時使用。
在一個實施例中,追蹤產生電路系統60被佈置為每當執行指令序列內的分路指令則輸出該追蹤產生電路系統之追蹤流內的追蹤元素,該追蹤元素亦指示分路是否被採取,這可從透過輸入介面65接收自處理構件50的指令執行資訊導出。接著透過輸出介面70遞送追蹤元素流以供向前傳播到追蹤緩存器30及/或追蹤分析器40。各個這樣的追蹤元素在本文中亦可稱為「原子」,「E原子」指示分路已被採取,而「N原子」指示分路還未被採取。
進一步地,追蹤產生電路系統60被佈置為發出指示各個分路行為設定指令的執行行為的追蹤元素。這樣的追蹤元素的目標是提供充分的資訊供分析電路系統40決定該分路行為設定指令的執行是否已使得在BTAC 55內填入了儲存格。考慮ZOLE指令的先前的示例,該指令實際上是分路指令本身,且若採取分路以將處理返回到程式迴圈的開始,則該指令將指示ZOLE指令的執行已使得製作了BTAC 55中的儲存格的情況。從而,若不採取分路,則將不在BTAC 55中製作儲存格。因此,在該情況中僅取決於ZOLE指令的分路行為而發出E或N原子即是足夠的。
對於分路未來指令而言,在一個實施例中,該指令本身不是分路指令,但追蹤機制可被佈置為使得若分路未來指令的執行使得在BTAC 55中成功註冊了儲存格則由追蹤產生電路系統60發出E原子,且否則發出N原子。
此外,追蹤產生電路系統60被佈置為基於指令執行資訊來偵測分路何時已由於處理構件的BTAC 55中的命中而發生。在該情況中,追蹤產生電路系統亦在追蹤流內發出追蹤元素以指示已發生通往目標位址的分路(在一個實施例中是藉由發出E原子)。若可從分路行為設定指令直接導出目標位址,則不需要在追蹤流內識別目標位址本身,因為追蹤分析器40將接著能夠決定目標位址。然而,若目標位址不是可直接導出的,則追蹤產生電路系統60將從由處理構件50所提供的資訊決定目標位址,且將在追蹤流內輸出目標位址,使得該目標位址可接著由追蹤分析器40所使用。
如之後參照圖15將更詳細討論的,在一個實施例中,追蹤模組20可具有用於針對BTAC 55中的各個儲存格維護飽和計數器的計數電路62,該計數器可用來偵測以下情況:已在執行分路未來指令的時點之間啟用追蹤,及在指令序列中遭遇到了相對應的經識別的指令。
圖3為一圖解,示意性地繪示一個實施例的追蹤分析器40。追蹤分析器40在其輸入介面105處接收追蹤流,接著從該輸入介面將該資訊遞送到解壓縮電路系統100。解壓縮電路系統100有權存取程式影像110,該程式影像提供了由受監控的電路系統所執行之程式碼的複本。解壓縮電路系統100保持追蹤程式影像內的目前位址(該目前位址在預定時點處(例如在開啟追蹤時)或經由專用追蹤資訊被設定為預定初始值),且每次接收到新的原子時,該解壓縮電路系統遍歷(traverse)程式影像直到該解壓縮電路系統到達程式影像內具有特定類型的下個指令(例如上述示例中的分路指令,其中追蹤流內的各個追蹤元素指示分路指令的執行)為止。解壓縮電路系統從程式影像資訊抽取關於在目前位址及該下個預定指令的位址之間所執行之指令中的各者的資訊,且向分析電路系統120輸出所有該執行資訊以供分析。一旦已在程式影像中遭遇到該下個預定指令,則接著基於該遭遇到的分路的目標位址來更新目前位址,使得在追蹤流中接收到下個原子時,相同的程式影像遍歷程序可再次開始而從新的目前位址開始。
如先前所述,除了標準的分路指令以外,追蹤流亦將包括在處理構件50已執行分路行為設定指令時及在追蹤模組20已偵測到通往目標位址的分路已由於由分路行為設定指令所指示的經識別的指令而發生時已由追蹤模組20所安插的追蹤元素,其中該分路行為設定指令已被處理構件50遭遇到。為了允許解壓縮電路系統100在這樣的情況中執行程式影像的適當遍歷行為,解壓縮電路系統亦具有相關聯的本端BTAC(在圖3中稱為解壓縮BTAC 115)。在解壓縮電路系統100遍歷程式影像110時且在該解壓縮電路系統遭遇到在BTAC 55中填入儲存格的分路行為設定指令時,該解壓縮電路系統接著在解壓縮BTAC 115內儲存從該分路行為設定指令導出的分路控制資訊。在一個實施例中,解壓縮BTAC採取圖4B中所示的形式,且包括一或更多個儲存格,其中各個儲存格具有用於將由分路行為設定指令所識別之指令的位址儲存為來源位址(或儲存如先前所討論的任何其他等效的分路點資料)的欄位175,且亦具有欄位180用於在目標位置可直接從分路行為設定指令決定時儲存目標位址。。具體而言,在該情況中,解壓縮電路系統100將能夠直接從程式影像的內容決定目標位址,且據此將該目標位址捕捉在欄位180內。若目標位址不是可直接決定的,則欄位180留白,且解壓縮電路系統反而將在之後從追蹤流內所提供的資訊決定目標位址。
在以上述方式填入解壓縮BTAC 115的情況下,解壓縮電路系統100接著能夠在該解壓縮電路系統遍歷程式影像時參考解壓縮BTAC 115。每當該解壓縮電路系統從程式影像內所考慮的目前指令的位址偵測到存在針對解壓縮BTAC 115之儲存格中的一者中的來源位址資訊的命中,該解壓縮電路系統決定該目前考慮的指令是已由分路行為設定指令所識別的經識別的指令,且因此將該經識別的指令視為下個預定指令而不是等到該解壓縮電路系統到達下個分路指令為止。在彼時,解壓縮電路系統100可向分析電路系統120提供關於在程式影像的目前遍歷行為期間所遍歷的所有指令的資訊,且亦可在彼時將目前位址更新為目標位址。對於直接目標位址而言,該目標位址將是解壓縮BTAC 115內之相關儲存格的欄位180內所指示的目標位址,而對於間接目標位址而言,將與目前所考慮的原子相關聯而在追蹤流內直接提供該目標位址資訊。
追蹤分析器40可被佈置為在一或更多個預定追蹤控制事件發生之後無效化解壓縮電路系統的解壓縮BTAC 115的內容,以因此確保不在解壓縮BTAC 115內維護過期的資訊。
圖5為一圖解,示意性地繪示零額外負擔迴圈及作為先前所述的分路行為設定指令的示例的相關聯ZOLE指令的使用。迴圈的開始由WLS指令200所指示(其中WLS代表「while迴圈開始」)。這是依賴於while語句之迴圈開始指令的條件形式。若滿足條件,則迴圈開始指令將使得暫存器rN
內所提供的值儲存在鏈接暫存器Lr內,此值為所需之迴圈迭代數量的指示。若執行此機能,則WLS指令將藉由發出N原子被作為不採取的分路而追蹤。然而,若不滿足條件,則WLS指令的執行反而使得處理分路到位置「迴圈末端」,該位置在一個實施例中是緊接在指示程式迴圈主體之結束的ZOLE指令之後的指令。若執行此機能,則WLS指令將藉由發出E原子被作為採取的分路而追蹤。
在第一次迭代期間,若進入了迴圈(與分路到迴圈末端相反),則執行迴圈主體內之指令中的各者且在某個時點處將執行ZOLE指令205。這將鏈接暫存器值採用為輸入,且若鏈接暫存器值是非零的,則這使得BTAC 55中的儲存格被填入,而將指令I3
210的位址識別為來源位址及將ZOLE指令內所指定的位址「迴圈開始」指示為目標位址。鏈接暫存器中的計數值亦遞減,且採取分路回到迴圈開始。因此,ZOLE指令將被追蹤為E原子以指示已採取分路。
如由圖5右方的示意圖所示,在程式迴圈主體的每次後續的迭代期間(除了最終迭代以外),在遭遇到I3
指令210時,將在BTAC 55的儲存格中偵測到命中,將決定迭代計數仍是非零的,且據此迭代計數將遞減且將採取分路回到迴圈開始。因此,在那些迭代中的各者期間,不需要重新執行ZOLE指令205,因此引起了顯著的效能改良。在最終的迭代時,在遭遇到I3
指令時,將決定迭代計數現在是零且據此不需要進一步的迭代。因此,分路行為將在最終的迭代時不與I3
指令相關聯,且反而將重新執行ZOLE指令205。然而,此時將決定鏈接暫存器值是零,且將據此執行不採取的分路,而使得程式計數器更新為「迴圈末端」。
雖然在圖5中圖示了迴圈開始指令的有條件的變體,在一替代性實施例中,迴圈開始可為無條件的變體,該無條件的變體在一個實施例中稱為DLS(do迴圈開始)指令,該指令將總是將鏈接暫存器更新為暫存器rN
內的迭代計數值。因為DLS指令不是分路指令,在執行DLS指令時將不在追蹤流內發出原子。
圖6為一流程圖,繪示如何依據一個實施例追蹤包括零額外負擔迴圈的程式序列。於步驟250處,追蹤產生電路系統60等待接收關於由處理構件50所執行之目前指令的資訊。此後,在步驟255處決定是否要追蹤目前的指令。雖然在某些實施例中,可能決定要追蹤整個指令序列,在其他實施例中,可取決於目前執行的指令而選擇性地開啟及關閉追蹤機制。這允許追蹤代碼的特定部分,而不追蹤其他部分。在這樣的實施例中,將僅產生關於要追蹤的彼等代碼部分的追蹤流,且在追蹤流內所發出的實際追蹤元素將接著僅關於彼等代碼部分內所執行的某些指令。
若於步驟255決定不要追蹤目前的指令,則程序僅返回步驟250以等待關於由受監控的電路系統所執行的下個指令的資訊。
在於步驟255決定要追蹤目前的指令時,接著在步驟260處決定目前的指令是否是應針對其產生追蹤元素預定指令中的一者。在一個實施例中,這樣的指令為指令流改變指令,特別是分路指令,且在本文中這樣的指令將稱為「P0指令」。雖然在一個實施例中,P0指令將是分路指令,可能的是,其他類型的指令亦可被視為P0指令且將據此使得在追蹤流中發出相對應的原子。
在考慮先前圖5的示例時,將理解的是,WLS指令200及ZOLE指令205兩者為分路指令,且據此將在步驟260處被視為P0指令。
每次在步驟260處偵測到P0指令時,在步驟265處針對該指令發出原子。在一個實施例中,若針對該目前的指令採取了分路則此原子將為E原子,或若不採取分路則此原子將為N原子。
若指令執行資訊指示分路被採取,則一般亦將識別目標位址是直接目標位址還是間接目標位址。若目標位址為直接目標位址,則並不需要在追蹤流中輸出目標位址資訊。然而,若目標位址是間接的,則在一個實施例中,亦與E原子相關聯而在進一步的封包中輸出目標位址的指示,以便允許追蹤分析器在適當的時候決定指令流已分路到何處。在步驟265之後,程序回到步驟250以等待關於下個指令的資訊。
若在步驟260處,決定目前的指令不是P0指令,則在步驟270處決定目前的指令是否是處理構件的BTAC 55中識別為與零額外負擔迴圈相關聯的指令的指令。在一個實施例中,基於藉由將目前指令的來源位址與來源位址欄155進行比較來在BTAC 55的儲存格中偵測到命中,及藉由指示命中儲存格由於執行ZOLE指令而被填入的BF/ZOLE旗標欄位165,此資訊被提供為來自處理構件50之指令執行資訊的一部分。
若決定的是,目前的指令在處理構件的BTAC中被識別為與零額外負擔迴圈相關聯,則在步驟275處決定是否在處置該指令時採取了分路,這將由來自處理構件的指令執行資訊所指示。如先前所述,若是在遭遇到指令時需要至少一個進一步的程式迴圈迭代,則將是這樣的情況。若採取了分路,則在步驟280處,產生E原子以供包括在追蹤流內。與步驟265一樣,若目標位址被決定為間接目標位址,則目標位址的指示亦將與E原子相關聯而輸出作為追蹤流內的額外封包。然而,對於直接目標位址而言,不需要額外的資訊且僅需要發出E原子。若從步驟270或步驟275中的任一者依循否的路徑,則程序返回步驟250。
圖7為一流程圖,繪示零額外負擔迴圈的執行以及何時將產生特定追蹤元素的指示。在此示例中,假設零額外負擔迴圈是藉由WLS指令來開始的,其中滿足該WLS指令的執行條件。因此,在步驟300處,決定滿足while條件,故處理構件將WLS指令作為不採取的分路執行。此時,處理構件將鏈接暫存器值設定為提供在來源暫存器rN
內的迭代計數值,該迭代計數值指示迭代數量。在一個實施例中,計數值被設定為指示除了第一次迭代以外的所需迭代數量,因為第一次迭代由於被處理為不採取的分路的WLS指令而自動執行。
若WLS指令被處理為不採取的分路,則在步驟305處,追蹤模組與WLS指令相關聯而發出N原子。如先前所討論的,若WLS指令被DLS指令替換,則鏈接暫存器將仍被設定為迭代計數值,但將不產生追蹤原子,因為DLS指令不是分路指令。
在步驟305之後,處理在步驟310處繼續進行到下個指令。此時,在步驟315處決定下個指令是否是ZOLE指令,且若否,則在步驟345處執行由指令所要求的處理。這包括了在步驟350處決定指令是否在處理構件的BTAC中造成命中。在零額外負擔迴圈的第一次迭代期間,對於WLS指令及ZOLE指令之間的任何指令而言將不是這樣的情況,且據此程序將迴圈回到步驟310且繼續進行步驟315、345、350直到達到ZOLE指令為止。在第一次迭代的末端處在步驟315處執行ZOLE指令時,分路及迴圈控制電路系統58將用來執行步驟320到335,且將首先在步驟320處決定鏈接暫存器計數值是否大於0。如先前所述,僅在需要至少一個進一步的迭代時才是這樣的情況。
若需要至少一個進一步的迭代,則在步驟325處計數器將藉由更新鏈接暫存器值而遞減,且在步驟330處將在處理構件的BTAC 55中產生儲存格。如先前所討論,這將把在ZOLE指令之前緊接在前的指令識別為來源位址,且將把程式迴圈內的第一個指令識別為目標位址。
此後,在步驟335處採取分路以將處理返回到程式迴圈的開始,此後在步驟340處,追蹤模組發出E原子以識別所採取的分路是與ZOLE指令的執行相關聯的。處理接著在步驟310處移動到下個指令,該下個指令在此情況中將是WLS指令之後的程式迴圈主體內的第一個指令。
處理將接著繼續進行程式迴圈主體的第二次迭代,且在某個時點將在步驟350處決定所處理的目前指令已造成處理構件的BTAC中的命中。例如在考慮圖5的零額外負擔迴圈示例時執行圖5的指令I3
210時將是這樣的情況。在彼時,分路及迴圈控制電路系統58將決定鏈接暫存器內容是否大於零,且若如此則將在步驟360處使計數器遞減,此後程序將繼續進行到步驟335。將接著以與執行ZOLE指令之後會執行步驟335及340的完全相同方式執行步驟335及340。然而,將理解的是,此時處理並不繼續進行到ZOLE指令本身,且據此並不需要重新執行ZOLE指令,因此引起了顯著的效能改良。
在最後一次迭代執行程式迴圈時,將在步驟355處在執行程式迴圈中的該倒數第二個指令時決定鏈接暫存器不再大於零,且此時處理繼續進行到步驟365,其中分路及迴圈控制電路系統58在返回步驟310之前無效化處理構件的BTAC中的相關儲存格。在步驟310處,處理將接著繼續進行到ZOLE指令,現在將重新執行該ZOLE指令。然而,在此情況中,將於步驟320處決定鏈接暫存器內容不再是非零的,且據此處理繼續進行到步驟370,此處追蹤模組與ZOLE指令的這個目前執行行為相關聯而發出N原子,此後在步驟375處執行迴圈。
應從圖7的處理注意的是,若為了某個理由,處理構件的BTAC中的相關儲存格在處理還在穿過零額外負擔迴圈的多次迭代的半路的同時被無效化,則這會使得下次遭遇到倒數第二個指令時倒數第二個指令在步驟350處不被識別為在處理構件的BTAC中造成命中,這會接著使得處理前進到ZOLE指令。然而,若ZOLE指令在鏈接暫存器內容仍然非零的時點處重新執行,則將重新執行步驟325、330、335、340,而使得零額外負擔迴圈的執行恢復。為了追蹤分析器的目的,在步驟340處所發出的E原子是由於ZOLE指令的重新執行還是由於與處理構件的BTAC中的命中相關聯的倒數第二個指令的執行並不重要。
以下的表格1說明了示例代碼序列,可執行該示例代碼序列以使用與圖7中所述的方法一致的方式來實施零額外負擔迴圈: 表格 1 :零額外負擔迴圈的示例追蹤行為
圖8示意性地繪示可在一個實施例中使用的進一步類型的分路行為設定指令,此類型的分路行為設定指令在本文中稱為分路未來指令。在執行分路未來指令400時,接著若滿足與分路未來指令相關聯的任何條件,則這將填入BTAC 55內的儲存格以將值「B point」識別為來源位址及將值「foo」410設定為目標位址。接著,在遭遇到指令I3
405時,且若儲存格在BTAC 55內仍是有效的,則這將使得處理分路到位址foo 410,以使得指令IZ
成為下個執行的指令。在一個實施例中,此分路行為可覆蓋指令I3
的執行,使得在遭遇到指令I3
時,所採取的唯一行動是分路到點410。然而,在一替代性實施例中,處理可被佈置為在執行指令I3
時執行所需的正常操作,且接著被平行佈置為分路到點410使得下個執行的指令是指令IZ
。
在一個實施例中,分路指令415可被提供作為備份使得發生的分路是位址「foo」410。這例如在分路未來機能可能被停用的實施方式中可能是有用的,或有用於涵蓋以下情況:BTAC 55的內容在執行分路未來指令400的時間及遭遇到指令I3
405的時間之間被無效化。然而,應注意的是,本文中所述的追蹤技術並不需要提供這樣的備份分路指令415。
圖9為一流程圖,繪示執行來追蹤指令序列的步驟,該指令序列包括分路未來指令的一或更多個實例。步驟450及455相對應於圖6的先前所述的步驟250及255。在步驟455處決定要追蹤目前的指令時,在步驟460處決定目前的指令是否是分路未來指令。若決定目前的指令是分路未來指令,則於步驟465處決定由該分路未來指令所識別的經識別的指令是否成功註冊在BTAC中。這可從接收自處理構件的指令執行資訊導出。如先前所述,可能存在經識別的指令為何不被成功註冊在BTAC中的許多理由。例如,分路未來指令可能是有條件的,使得僅在滿足某些條件時才將在BTAC中製作儲存格。進一步地,在一個實施例中,分路未來特徵可被選擇性地停用,且在停用時,遭遇到分路未來指令將不使得在BTAC中製作儲存格。在於步驟465處決定經識別的指令已成功註冊在BTAC儲存格中的一者時,接著在步驟475處將分路未來指令追蹤為E原子,否則在步驟480處將分路未來指令追蹤為N原子。程序接著返回到步驟450。
在一個實施例中,BTAC 55可能僅具有少量的儲存格,且確實在一個實施例中可具有單一儲存格。在這樣的情況下,可能的是,在經識別的指令在步驟465處被成功註冊在BTAC中時,這將覆蓋關於先前所執行的分路未來指令的另一有效的經識別指令的資訊,在此情況下,BTAC接著將失去關於已由先所執行的分路未來指令所識別但還未在指令流中遭遇到的指令的資訊。追蹤分析器可偵測這樣的情況何時已發生是重要的。在某些實施例中,追蹤分析器可知道BTAC 55內所使用的替換策略,且可決定性地能夠從現存的追蹤資訊情況決定這樣的覆蓋有效分路控制資訊的行為已在何處發生。然而,否則追蹤產生電路系統60可被佈置為在步驟475處發出E原子之前,若BTAC內的這樣的待決分路未來儲存格被覆蓋,則在步驟470處在追蹤流中發出非事件封包。
若在步驟460處,決定目前的指令不是分路未來指令,則在步驟482處決定目前的指令是否在處理構件的BTAC中被識別為與分路未來指令相關聯。這將發生在處理構件偵測到目前的指令的來源位址及BTAC中的儲存格之間的命中時,其中相關聯的欄位165指示已由於執行先前的分路未來指令而填入了儲存格。在這樣的情況下,程序繼續進行到步驟484,此處與目前的指令相關聯而發出E原子。
若步驟482之後遵循「否」路徑,或在之後遵循「是」路徑時執行步驟484之後,則在步驟486處決定目前的指令是否為P0指令,該P0指令如先前所述一般將是分路指令。每當遭遇到這樣的P0指令,程序將繼續進行到步驟488,此處將針對目前的指令發出原子(該原子對於P0指令的分路指令示例而言在採取分路時將是E原子或在不採取分路時為N原子)。在從步驟482依循「是」路徑之後評估目前的指令是否是P0指令允許偵測以下情況:由分路未來指令所識別的指令本身亦為P0指令。示例會是在啟用資料追蹤時的記憶體指令。在這樣的情況下,會發出兩個E原子,一個原子用於採取的分路(步驟484處的E原子),而一個原子用於P0元素本身(亦即記憶體指令)(步驟488處所發出的原子)。
在步驟484或488中的任一者處,若目標位址是直接目標位址,則不需要將額外的資訊與所發出的E原子相關聯。然而,若目標位址是間接的,則可與E原子相關聯而發出額外的追蹤封包以識別目標位址。
在某些實施方式中,程式序列將僅包括先前所述之類型的分路行為設定指令中的一者,但在其他實施例中,指令序列可包括具有相關聯的ZOLE指令的零額外負擔迴圈,且此外可包括分路未來指令,其中處理構件的BTAC 55中的欄位165指示哪個類型的分路行為設定指令已使得在BTAC內填入了相對應的儲存格。
以下的表格2給予了可執行的程式序列的示例,該程式序列具有巢套式的分路未來指令對偶且在一個實施例中造成了非事件封包的產生(此示例假設單一儲存格的BTAC): 表格 2 :巢套式分路未來程式的示例(因為在此情況下僅有一個 BTAC 儲存格,第二個 BF 將無效化第一個 BF 且註冊第二個 BF 本身的隱含分路),顯示所發出的 E 原子及非事件封包。
圖10為一流程圖,繪示在接收已由追蹤電路系統所產生的E原子之後,可依據一個實施例由圖3的解壓縮電路系統100來執行的處理步驟。無論是否在指令流內包括了一個或兩個類型的分路行為設定指令,皆可執行此程序。在步驟500處,決定是否已在輸入介面105處在追蹤流中接收到E原子。一旦已接收到E原子,接著在步驟505處,解壓縮電路系統100開始從目前位址遍歷程式影像110。在追蹤的開始點處或在追蹤活動內的同步點處,目前位址可被設定為指定值。此後,該目前位址將基於由解壓縮電路系統所執行的程式遍歷操作來更新,此將從下文圖10的進一步討論而理解。
在步驟510處,目前的指令的細節被輸出到分析電路系統120,且在步驟515處,參照程式影像來決定目前的指令(亦即由目前位址所指向的指令)是否為預載處理構件的BTAC的分路未來指令。若是,則E原子的存在將指示該指令的執行已確實使得在處理構件的BTAC中製作了儲存格,且程序據此繼續進行到步驟520,在該步驟處,解壓縮電路系統100在該解壓縮電路系統的解壓縮BTAC 115中分配儲存格且在該儲存格內將由分路行為設定指令所識別之指令的位址儲存為來源位址。此外,若可從目前的指令(亦即分路未來指令)直接運算目標位址,則該解壓縮電路系統在該儲存格內儲存該目標位址。處理接著繼續進行到步驟540,此處目前位址被更新為指向要在執行預載處理構件的BTAC的分路未來指令之後處理的下個指令。該指令一般將是分路未來指令之後的下個指令。
雖然解壓縮電路系統亦可依需要佈置為在步驟515處偵測目前的指令何時為已使得在處理構件的BTAC中製作了儲存格的ZOLE指令,且接著在步驟520處在該解壓縮電路系統的相關聯的BTAC中製作儲存格,在一個實施例中並不進行此步驟,且反而不針對各個ZOLE指令的經識別的指令在解壓縮電路系統的BTAC中製作儲存格。具體而言,並不需要此步驟,因為對於ZOLE指令而言,經識別的指令將是程式迴圈主體中緊接在前的指令,且因此解壓縮器並不需要在迴圈末端指令及該緊接在前的指令之間進行區隔以正確追蹤處理電路系統的指令執行行為。因此,並不需要針對經識別的指令在解壓縮電路系統的BTAC中製作儲存格。
具體而言,在圖6的步驟280處產生來指示已由於遭遇到處理構件的BTAC中所記錄的ZOLE指令的經識別的指令而採取分路的E原子將僅被解壓縮電路系統決定為與ZOLE指令本身相關聯,該ZOLE指令由於是分路指令將在圖10之後來步驟530處被偵測為P0指令,且該ZOLE指令使得採取分路而返回到程式迴圈的開始。據此,在該情況中,程序從步驟530繼續進行到步驟540,在步驟540處,由解壓縮電路系統所維護的目前位址接著被更新到目標位址。對於ZOLE指令的先前所述的示例而言,此目標位址一般將被提供為ZOLE指令內的直接目標位址。於步驟545處,程序停止遍歷程式影像,且程序返回步驟500以等待下個原子。
若於步驟515處決定目前的指令不是預載處理構件的BTAC的分路未來指令,則於步驟525處,決定目前的指令的位址是否匹配儲存在解壓縮BTAC 115中的來源位址。若如此,則這指示目前的指令是已由先前所執行的分路未來指令所識別的經識別的指令,且因為該分路未來指令與E原子相關聯,這意味著在遭遇到該目前的指令之後已調用了分路行為。據此,決定此指令應被視為以與P0指令會造成的相同方式使得程式影像遍歷程序停止的指令。因此,程序繼續進行到步驟540,此處由解壓縮電路系統所維護的目前位址被更新到目標位址。該目標位址在目標位址為直接目標位址的情況下將可直接從解壓縮BTAC儲存格取得,或在目標位址為間接目標位址時將可從追蹤流中所提供的資訊取得。程序接著如先前所討論地繼續進行到步驟545。
除了在步驟525處在解壓縮BTAC中偵測到匹配之後在步驟540處將目前位址更新到目標位址以外,解壓縮電路系統在某些情況中可無效化解壓縮BTAC儲存格。具體而言,在處理構件在BTAC 55中偵測到與已由先前的分路未來指令所填入的儲存格相關聯的命中時,該處理構件一般將起動所需的分路行為且接著無效化BTAC中的儲存格。類似地,解壓縮BTAC可接著被佈置為在步驟525處由於與先前的分路未來指令相關聯的儲存格而在解壓縮BTAC中偵測到命中之後到達步驟540時無效化該解壓縮BTAC的本端BTAC 115中的相關儲存格。
若於步驟525處決定目前的指令的位址並不匹配解壓縮BTAC中所保持的來源位址,則在步驟530處決定程式影像中的目前的指令是否為標準的P0指令(例如分路指令)。若如此,則程序再次繼續進行到步驟540,否則程序繼續進行到步驟535。在於步驟530處決定目前的指令是P0指令時,目前位址將在步驟540處被更新到目標位址,且若目標位址是間接的,則目標位址資訊將可從追蹤流中所提供的資訊取得。
在到達步驟535時,程式影像中的下個指令被設定為目前的指令(藉由前移位址以指向程式影像中的下個指令),且程序返回步驟510。
圖11為一流程圖,繪示在接收到N原子之後由解壓縮電路系統100所執行的步驟。於步驟550處,決定是否已在追蹤流中接收到N原子。在接收到N原子時,接著在步驟555處,解壓縮電路系統100開始從目前位址遍歷程式影像。於步驟560處,目前的指令的細節被輸出到分析電路系統120,且接著在步驟565處,決定目前的指令是否為一指令,其中是針對該指令在追蹤流內期望N原子。將理解的是,依據上述的實施例,將在還未採取分路時與P0指令相關聯而期望N原子,或與還未使得經識別的指令成功註冊在處理構件的BTAC中的分路未來指令相關聯而期望N原子。
若目前的指令不是對其期望N原子的指令,則在步驟570處,下個指令被設定為目前的指令且程序返回到步驟560。
然而,若在步驟565處,決定目前的指令是對其期望N原子的指令,則在步驟575處,目前位址被更新為指向下個指令位址,且在步驟580處,解壓縮電路系統停止遍歷程式影像。程序接著返回到步驟550以等待下個N原子。
取決於已在步驟565處所偵測到的指令的類型,在執行步驟575時,解壓縮電路系統亦可無效化該解壓縮電路系統的解壓縮BTAC中的相關儲存格。例如,此行為可在所接收的N原子是關聯於最後一次執行ZOLE指令而發出時(亦即於圖7的步驟370處所發出的N原子)發生。
圖12為一流程圖,繪示在決定處理構件的BTAC已被無效化時可在一個實施例中執行的步驟。這可基於各種理由而發生,一個示例是處理構件採取了中斷行為。具體而言,在一個實施例中,決定在採取這樣的中斷行為之後無效化BTAC內容,以便避免在採取中斷行為之前儲存所有狀態的需要,且因此允許更快速地處置中斷行為。若在步驟600處,決定處理構件的BTAC已被無效化,則處理構件將在步驟605處通知追蹤模組20,此後在步驟610處,追蹤模組在一個實施例中將在追蹤流內發出無效化事件封包。在接收到這樣的無效化事件封包之後,在步驟615處,解壓縮器將接著無效化該解壓縮器的解壓縮BTAC內容。
在一替代性實施例中,可能不需要單獨在追蹤流內發出無效化事件封包,若追蹤分析器被佈置為在該追蹤分析器處理此時在追蹤流內所發出的另一封包時清除該追蹤分析器的本端解壓縮BTAC內容115的話。例如,在一個實施例中,將在追蹤流內發出中斷封包以指示中斷行為的存在。追蹤分析器可被配置為知道處理構件的BTAC將在這樣的情況下被無效化,且因此可直接由於接收到中斷封包而清除解壓縮BTAC內容而不需要任何單獨的無效化事件封包。
圖13示意性地繪示可在解壓縮電路系統處回應於如先前所討論的非事件封包而執行的處理。於步驟650處,決定是否已接收到非事件封包,且在接收到這樣的非事件封包時,在步驟655處更新解壓縮BTAC內容。具體而言,將回應於非事件封包而無效化BTAC儲存格中的一者。在一個特定實施例中,BTAC 55及解壓縮BTAC 115兩者可僅包括單一儲存格,且因此立刻理解到是回應於非事件封包而無效化哪個儲存格。然而,或者,兩個BTAC可具有多個儲存格,但其中解壓縮電路系統知道由處理構件所使用的替換策略,且因此該解壓縮電路系統對於應在接收到非事件封包之後無效化哪個儲存格是決定性的。確實,在某些實例中,解壓縮電路系統可能能夠在不需要在追蹤流內單獨發出非事件封包的情況下從追蹤流中的其他封包決定儲存格已在BTAC 55內被無效化的情況。
在解壓縮BTAC 115僅針對分路未來指令的經識別的指令保持儲存格但並不針對ZOLE指令的經識別的指令維護儲存格的實施例中,追蹤模組20在處理構件的BTAC 55中的儲存格被覆蓋(若是該被覆蓋的內容關於ZOLE指令的經識別的指令的話)時不需要發出非事件封包。
在一個實施例中,可能的是,將不針對指令序列的所有部分啟用追蹤。這意味的是,預期可在分路行為設定指令的執行及相對應的經識別的指令的執行之間啟用追蹤。考慮分路行為設定指令是ZOLE指令的零額外負擔迴圈先前示例,並不需要特定的行動,因為如先前所討論的,無論分路是否是藉由遭遇程式迴圈中的倒數第二個指令而觸發的,從追蹤的角度來看行為是相同的。具體而言,追蹤產生電路系統將在各個迴圈迭代(除了最終的迴圈迭代以外)的末端處發出E原子,無論該E原子是藉由遭遇到ZOLE指令而觸發的還是藉由遭遇到倒數第二個指令(亦即剛好在ZOLE指令之前的指令)而觸發的,這將從先前圖7的討論所顯而易見。
然而,若是在分路未來指令及遭遇到相對應的經識別的指令的事件之間啟用追蹤,則因為分路未來指令的執行行為將不被追蹤,追蹤分析器需要被提供額外資訊以允許該追蹤分析器能夠正確地追蹤處理構件的處理行為。為此目的,在一個實施例中執行圖14的程序。
在步驟660處,追蹤模組20在步驟660處決定追蹤是否被啟用,且接著啟用追蹤,接著於步驟665處決定指令流目前是否是在分路未來指令及相關聯的經識別的指令之間。若否,則不需要額外的行動,且程序結束於步驟685處。然而,若是,則在步驟670處,追蹤模組在經識別的指令隨後由處理構件執行時監控該經識別的指令的行為。具體而言,在步驟675處,決定在執行該經識別的指令時是否採取分路。若否,則不需要行動,否則在680處在追蹤流內發出異常樣式封包(exception style packet),該異常樣式封包明確識別目前的指令的位址及所已分路到的目標位址。
存在著可在追蹤模組20內實施圖14的行為的許多方式。在一個實施例中,追蹤模組具有用於針對BTAC 55內的各個儲存格維護計數器的計數電路系統62。在一個特定實施例中,各個計數器採取飽和計數器的形式。圖15繪示了與各個計數器關聯而執行的程序。在步驟700處,決定分路未來指令是否被追蹤,以指示該分路未來指令的執行使得BTAC 55中的相對應儲存格被填入(在考慮圖9中所示的實施例時是藉由在步驟475處發出E原子)。每次以此方式追蹤分路未來指令時,計數器在步驟705處遞增。
類似地,在步驟710處,決定是否已回應於與BTAC 55的儲存格相關聯且已被處理構件遭遇到的經識別的指令而採取了分路,且若如此則計數器隨後在步驟715處遞減。進一步地,如由步驟720所指示,若BTAC被無效化(例如在採取中斷行為之後),則計數器在步驟725處被清除。
若針對追蹤而考慮所有的指令,則將理解的是,通常會期望計數器在針對BTAC的儲存格內的經識別的指令而決定採取分路時會是非零的。例如,在考慮先前在圖9處所討論的示例實施例時,在於步驟482處偵測到目前的指令是藉由相關聯的分路未來指令在BTAC 55中所識別的指令的時點處,計數器值將是非零的,而使得在步驟484處以正常的方式發出E原子。步驟710的執行將接著使得計數器在步驟715處遞減回零。
然而,若先前的分路未來指令不被追蹤模組所考慮(例如因為圖9的步驟455之後為否路徑),則計數器在針對在BTAC儲存格中命中的經識別的指令而採取分路時將是零,且零計數器的存在可使得程序繼續進行到圖14中的步驟680而使得在追蹤流內發出異常樣式封包。
據此,藉由使用圖15的計數器方法,且針對BTAC 55的各個儲存格維護單獨的計數器,可將圖14的機能有效地併入通常的追蹤行為內。具體而言,可如常執行圖9的程序,但其中在背景中採用圖15的計數器機制以針對與分路未來指令相關聯的BTAC中的各個儲存格保持計數器值。若在步驟482處,決定目前的指令是處理構件的BTAC中與分路未來指令相關聯地識別的指令,則若計數器是非零的,則將在步驟484處發出E原子,而若計數器值是零,則將發出異常樣式封包。
本文中所述的實施例允許在僅針對實際上由受監控的電路系統所執行的指令子集合(一般是小的)產生追蹤元素的情況下實施非常高效的追蹤機制,但該追蹤機制即使在受監控的電路系統執行包括一或更多個分路行為設定指令的指令序列時亦可精確追蹤受監控的電路系統的活動,該等分路行為設定指令可將任意指令有效地轉換成分路。
在本申請案中,用詞「配置為...」用以意指的是,裝置的構件具有能夠實現所界定之操作的配置。在此背景下,「配置」意指硬體或軟體互連的佈置或方法。例如,裝置可具有提供所界定操作的專用硬體,或處理器或其他處理裝置可程式化為執行該功能。「配置為」並不暗示的是,裝置構件需要以任何方式改變以提供所界定的操作。
雖然已參照隨附的繪圖在本文中詳細描述本發明的說明性實施例,要了解的是,本發明不限於那些準確的實施例,且本領域中具技藝者可在該等實施例中作出各種改變、添加及更改而不脫離由隨附請求項所界定的發明的範圍及精神。例如,可將附屬項的特徵與獨立項的特徵進行各種組合而不脫離本發明的範圍。
10‧‧‧受監控的電路系統20‧‧‧追蹤模組30‧‧‧追蹤緩存器40‧‧‧追蹤分析器50‧‧‧處理構件55‧‧‧分路目標位址快取記憶體(BTAC)58‧‧‧分路及迴圈控制電路系統60‧‧‧追蹤產生電路系統62‧‧‧計數電路系統65‧‧‧輸入介面70‧‧‧輸出介面100‧‧‧解壓縮電路系統105‧‧‧輸入介面110‧‧‧程式影像115‧‧‧解壓縮BTAC120‧‧‧分析電路系統155‧‧‧來源位址欄160‧‧‧目標位址欄165‧‧‧欄位175‧‧‧欄位180‧‧‧欄位200‧‧‧WLS指令205‧‧‧ZOLE指令210‧‧‧I3指令250‧‧‧步驟255‧‧‧步驟260‧‧‧步驟265‧‧‧步驟270‧‧‧步驟275‧‧‧步驟280‧‧‧步驟300‧‧‧步驟305‧‧‧步驟310‧‧‧步驟315‧‧‧步驟320‧‧‧步驟325‧‧‧步驟330‧‧‧步驟335‧‧‧步驟340‧‧‧步驟345‧‧‧步驟350‧‧‧步驟355‧‧‧步驟360‧‧‧步驟365‧‧‧步驟370‧‧‧步驟375‧‧‧步驟400‧‧‧分路未來指令405‧‧‧指令I3410‧‧‧位址foo415‧‧‧分路指令450‧‧‧步驟455‧‧‧步驟460‧‧‧步驟465‧‧‧步驟470‧‧‧步驟475‧‧‧步驟480‧‧‧步驟482‧‧‧步驟484‧‧‧步驟486‧‧‧步驟488‧‧‧步驟500‧‧‧步驟505‧‧‧步驟510‧‧‧步驟515‧‧‧步驟520‧‧‧步驟525‧‧‧步驟530‧‧‧步驟535‧‧‧步驟540‧‧‧步驟545‧‧‧步驟550‧‧‧步驟555‧‧‧步驟560‧‧‧步驟565‧‧‧步驟570‧‧‧步驟575‧‧‧步驟580‧‧‧步驟600‧‧‧步驟605‧‧‧步驟610‧‧‧步驟615‧‧‧步驟650‧‧‧步驟655‧‧‧步驟660‧‧‧步驟665‧‧‧步驟670‧‧‧步驟675‧‧‧步驟680‧‧‧步驟685‧‧‧步驟700‧‧‧步驟705‧‧‧步驟710‧‧‧步驟715‧‧‧步驟720‧‧‧步驟725‧‧‧步驟
僅藉由示例的方式,將進一步參照如隨附繪圖中所繪示之本技術的實施例描述本技術,在該等繪圖中:
圖1為依據一個實施例之系統的方塊圖;
圖2為一方塊圖,更詳細地繪示依據一個實施例來使用的追蹤模組;
圖3為一方塊圖,更詳細地繪示依據一個實施例來使用的追蹤分析電路系統;
圖4A及4B示意性地繪示可依據一個實施例用在圖1的系統內的不同形式的分路目標位址快取記憶體(BTAC);
圖5為一圖解,示意性地繪示零額外負擔迴圈(zero overhead loop)的操作;
圖6為一流程圖,依據一個實施例繪示追蹤模組產生與包括零額外負擔迴圈的指令序列的執行相關聯的追蹤元素的操作;
圖7為一流程圖,依據一個實施例圖示零額外負擔迴圈的執行及所產生的相關聯的追蹤元素。
圖8繪示包括分路未來(branch-future, BF)指令的示例程式序列;
圖9為一流程圖,依據一個實施例繪示追蹤模組產生與包括一或更多個分路未來指令的指令序列的執行相關聯的追蹤元素的操作;
圖10為一流程圖,依據一個實施例繪示與在指令流中所接收的各個E原子相關聯而在追蹤分析器處執行的解壓縮操作;
圖11為一流程圖,依據一個實施例繪示與在指令流中所接收的各個N原子相關聯而在追蹤分析器處執行的解壓縮操作;
圖12為一流程圖,依據一個實施例繪示在處理構件的BTAC被無效化時所採取的步驟;
圖13為一流程圖,依據一個實施例繪示在接收追蹤流內的非事件封包之後由追蹤分析器所執行的步驟;
圖14為一流程圖,依據一個實施例繪示在決定已啟用追蹤之後由追蹤模組所執行的步驟序列;及
圖15為一流程圖,依據圖14的方法繪示追蹤模組內之基於飽和計數器的實施方式,該實施方式可在需要發出異常樣式的原子時用來進行存取。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
10‧‧‧受監控的電路系統
20‧‧‧追蹤模組
30‧‧‧追蹤緩存器
40‧‧‧追蹤分析器
Claims (25)
- 一種用於產生指示由處理電路系統所進行之指令執行的一追蹤流的裝置,該裝置包括:一輸入介面,用以從該處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊,所述序列包括一分路行為設定指令,該分路行為設定指令指示所述序列內的一經識別的指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;及追蹤產生電路系統,用以從該指令執行資訊產生該追蹤流,該追蹤流包括指示由該處理電路系統在所述序列內進行的指令流改變指令的執行的複數個追蹤元素;及該追蹤產生電路系統更被佈置為從該指令執行資訊產生指示所述分路行為設定指令的執行行為的一追蹤元素及用以指示已在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為的一追蹤元素。
- 如請求項1所述之裝置,其中:在該分路行為設定指令的執行使得該分路行為與該經識別的指令相關聯時,該處理電路系統被佈置為在一分路控制儲存器內儲存用於該經識別的指令的分路控制資訊;及 該追蹤產生電路系統被佈置為:在該指令執行資訊指示一分路已由於在用於該經識別的指令的分路控制資訊被儲存在該分路控制儲存器內時在該序列中遭遇到該經識別的指令而發生時,產生指示已觸發所述分路行為的一追蹤元素。
- 如請求項2所述之裝置,其中:該分路行為設定指令是一程式迴圈主體的一結束處的一迴圈末端指令,該經識別的指令是所述程式迴圈主體內的一緊接在前的指令,且所述目標位址是該程式迴圈主體的一開始處的一指令的一位址;及該追蹤產生單元被佈置為:每次在該指令執行資訊指示一分路已由於在用於所述緊接在前的指令的分路控制資訊被儲存在該分路控制儲存器內時遭遇到所述緊接在前的指令而發生時,發出指示已觸發所述分路行為的一追蹤元素。
- 如請求項3所述之裝置,其中在遭遇到所述緊接在前的指令且同時用於所述緊接在前的指令的分路控制資訊被儲存在該分路控制儲存器內時,在需要該程式迴圈主體的至少一個進一步的迭代時,觸發該分路行為。
- 如請求項3所述之裝置,其中:在該迴圈末端指令的執行使得該分路行為與所述緊接在前的指令相關聯時,該處理電路系統被佈置為分路到所述目標位址,且該追蹤產生電路系統被佈置為 發出將一採取的分路指示為所述迴圈末端指令的該執行行為的一追蹤元素;在不需要該迴圈主體的進一步迭代時,該迴圈末端指令的執行將使得該處理電路系統離開該程式迴圈主體,且該追蹤產生電路系統被佈置為發出將一不採取的分路指示為所述迴圈末端指令的該執行行為的一追蹤元素。
- 如請求項3所述之裝置,其中:在一事件使得用於所述緊接在前的指令的該分路控制資訊在該分路控制儲存器內被無效化且同時仍需要該程式迴圈主體的進一步的迭代時,在下次遭遇到所述緊接在前的指令之後將不觸發該分路行為;該處理電路系統回應於該迴圈末端指令的一下次執行,使得該分路行為與所述緊接在前的指令重新相關聯,且使得採取一分路到所述目標位址,藉此回復該程式迴圈主體的該等進一步迭代的處理;及該追蹤產生電路系統被佈置為發出將一採取的分路指示為所述迴圈末端指令的該執行行為的一進一步追蹤元素。
- 如請求項1所述之裝置,其中:該分路行為設定指令是一分路未來指令,且該經識別的指令是所述序列內的所述分路未來指令之後的一指令; 在該分路未來指令的執行使得該分路行為與所述經識別的指令相關聯時,該追蹤產生電路系統被佈置為發出一追蹤元素,該追蹤元素指示,作為所述分路未來指令的該執行行為,該分路行為已被相關聯;在該分路未來指令的執行並不使得該分路行為與所述經識別的指令相關聯時,該追蹤產生電路系統被佈置為發出一追蹤元素,該追蹤元素指示,作為所述分路未來指令的該執行行為,該分路行為未被相關聯。
- 如請求項7所述之裝置,其中:該追蹤產生電路系統被佈置為在該追蹤元素指示該分路行為已被相關聯時發出一與用來指示一採取的分路相同的類型的追蹤元素;及該追蹤產生電路系統被佈置為在該追蹤元素指示該分路行為未被相關聯時發出一與用來指示一不採取的分路相同的類型的追蹤元素。
- 如請求項7所述之裝置,其中:在該分路行為設定指令的執行使得該分路行為與該經識別的指令相關聯時,該處理電路系統被佈置為在一分路控制儲存器內儲存用於該經識別的指令的分路控制資訊;該追蹤產生電路系統被佈置為:在該指令執行資訊指示一分路已由於在用於該經識別的指令的分路控制資訊被儲存在該分路控制儲存器內時在該序列中遭遇 到該經識別的指令而發生時,產生指示已觸發所述分路行為的一追蹤元素;及在該分路未來指令的執行使得該分路行為與該經識別的指令相關聯且由該處理電路系統儲存在該分路控制儲存器內的用於該經識別的指令的該分路控制資訊覆蓋了與一先前執行的分路未來指令的該經識別的指令相關聯的有效分路控制資訊時,該追蹤產生電路系統被佈置為發出一非事件追蹤元素。
- 如請求項7所述之裝置,其中在該分路未來指令的執行及在所述序列中遭遇到該經識別指令的事件之間的指令執行中的時點處啟用追蹤時,該追蹤產生電路系統回應於在遭遇到該經識別的指令之後所採取的一分路而發出一追蹤元素以識別該經識別的指令及已在遭遇到該經識別的指令之後採取的該分路兩者。
- 如請求項10所述之裝置,其中:在該分路行為設定指令的執行使得該分路行為與該經識別的指令相關聯時,該處理電路系統被佈置為在一分路控制儲存器內儲存用於該經識別的指令的分路控制資訊;該追蹤產生電路系統被佈置為:在該指令執行資訊指示一分路已由於在用於該經識別的指令的分路控制資訊被儲存在該分路控制儲存器內時在該序列中遭遇 到該經識別的指令而發生時,產生指示已觸發所述分路行為的一追蹤元素;該追蹤產生電路系統被佈置為與該分路控制儲存器中的各個儲存格相關聯而維持一計數器值,該儲存格與一分路未來指令的一經識別的指令相關聯;及該追蹤產生電路系統被佈置為:在用於該分路控制儲存中的相關儲存格的該計數器值在遭遇到該經識別的指令之後採取了該分路時具有一非預期值時,發出所述追蹤元素以識別該經識別的指令及已在遭遇到該經識別的指令之後採取的該分路兩者。
- 如請求項2所述之裝置,其中:在一事件使得該分路控制儲存器內的該分路控制資訊被無效化時,該追蹤產生電路系統被佈置為發出一無效化追蹤元素。
- 如請求項1所述之裝置,其中該處理電路系統被佈置為在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為時,亦執行所述經識別的指令。
- 如請求項1所述之裝置,其中該處理電路系統被佈置為在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為時,抑制所述經識別的指令的執行。
- 如請求項2所述之裝置,其中所述分路控制資訊至少包括提供所述經識別的指令的一指示的分路點資料及提供所述目標位址的一指示的進一步資料。
- 如請求項15所述之裝置,其中所述分路點資料包括以下中的一或更多者:位址資料,指示所述經識別的指令的一位址;末端資料,指示緊接在所述經識別的指令之前的一最後指令的一位址;偏位資料,指示所述分路行為設定指令及所述經識別的指令之間的一距離;一適當的位元子集合,指示所述經識別的指令的一記憶體儲存器位址,該記憶體儲存器位址從所述記憶體儲存器位址的位元的一最小有效位元端開始,該最小有效位元端在指令的開始儲存器位址之間進行區隔;剩餘大小指令資料,指示在所述經識別的指令之前所剩下要處理的一指令數量;及剩餘大小資料,指示在到達所述經識別的指令之前所剩餘要處理的一程式儲存器位置數量。
- 一種用於處理被產生以指示由處理電路系統所進行之指令執行的一追蹤流的裝置,該裝置包括:一輸入介面,用以接收該追蹤流,該追蹤流包括指示由該處理電路系統在一指令序列內進行的預定指令的執行的複數個追蹤元素,該指令序列是由該處理電路系統所執行的,所述序列包括指示所述序列內的一經識別的指令的一分路行為設定指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令 相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;解壓縮電路系統,回應於各個追蹤元素而從一目前指令位址遍歷一程式影像,直到在所述程式影像內偵測到該等預定指令中的一下個指令為止,及從該程式影像產生指示所述目前指令位址及該等預定指令中的所述下個指令間之該等指令的資訊;及一分路控制儲存器,與所述解壓縮電路系統相關聯;該解壓縮電路系統回應於在回應於一預定類型的一目前追蹤元素而遍歷所述程式影像時偵測到至少一個類型的該分路行為設定指令,在該分路控制儲存器內儲存從該分路行為設定指令導出的分路控制資訊;該解壓縮電路系統被佈置為在參考該分路控制資訊而偵測到已在遍歷該程式影像期間到達該經識別的指令時,將該經識別的指令視為所述預定指令中的該下個指令。
- 如請求項17所述之裝置,其中該解壓縮電路系統被佈置為將分路點資料儲存為該分路控制資訊,該分路點資料由該分路行為設定指令所識別且用來判定所述經識別的指令。
- 如請求項18所述之裝置,其中該解壓縮電路系統更被佈置為在可從所述分路行為設定指令內所 指定的一立即值直接導出該目標位址時將該目標位址儲存為該分路控制資訊。
- 如請求項17所述之裝置,其中:該解壓縮電路系統回應於所述追蹤流中的一非事件追蹤元素而無效化該解壓縮電路系統的相關聯分路控制儲存器中的一儲存格。
- 如請求項17所述之裝置,其中:該解壓縮電路系統回應於所述追蹤流中的一無效化追蹤元素而無效化該解壓縮電路系統的相關聯分路控制儲存器的內容。
- 一種產生指示由處理電路系統進行的指令執行的一追蹤流的方法,包括以下步驟:從該處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊,所述序列包括一分路行為設定指令,該分路行為設定指令指示所述序列內的一經識別的指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;從該指令執行資訊產生該追蹤流,該追蹤流包括指示由該處理電路系統在所述序列內進行的指令流改變指令的執行的複數個追蹤元素;及 從該指令執行資訊產生指示所述分路行為設定指令的執行行為的一追蹤元素及用以指示已在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為的一追蹤元素。
- 一種用於產生指示由處理電路系統所進行之指令執行的一追蹤流的裝置,該裝置包括:輸入介面手段,用於從該處理電路系統接收指示由該處理電路系統所執行的一指令序列的指令執行資訊,所述序列包括一分路行為設定指令,該分路行為設定指令指示所述序列內的一經識別的指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;及追蹤產生手段,用於從該指令執行資訊產生該追蹤流,該追蹤流包括指示由該處理電路系統在所述序列內進行的指令流改變指令的執行的複數個追蹤元素;及該追蹤產生手段更用於從該指令執行資訊產生指示所述分路行為設定指令的執行行為的一追蹤元素及用以指示已在所述序列內遭遇到所述經識別的指令之後觸發所述分路行為的一追蹤元素。
- 一種處理一追蹤流的方法,該追蹤流被產生來指示由處理電路系統進行的指令執行,該方法包括以下步驟:接收該追蹤流,該追蹤流包括指示由該處理電路系統在一指令序列內進行的預定指令的執行的複數個追蹤元素,該指令序列是由該處理電路系統所執行的,所述序列包括指示所述序列內的一經識別的指令的一分路行為設定指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;回應於各個追蹤元素而從一目前指令位址遍歷一程式影像,直到在所述程式影像內偵測到該等預定指令中的一下個指令為止,及從該程式影像產生指示所述目前指令位址及該等預定指令中的所述下個指令間之該等指令的資訊;回應於在回應於一預定類型的一目前追蹤元素而遍歷所述程式影像時偵測到至少一個類型的該分路行為設定指令,在一分路控制儲存器內儲存從該分路行為設定指令導出的分路控制資訊;及在參考該分路控制資訊而偵測到已在遍歷該程式影像期間到達該經識別的指令時,將該經識別的指令視為所述預定指令中的該下個指令。
- 一種用於處理被產生以指示由處理電路系統所進行之指令執行的一追蹤流的裝置,該裝置包括:一輸入介面手段,用於接收一追蹤流,該追蹤流包括指示由處理電路系統在一指令序列內進行的預定指令的執行的複數個追蹤元素,該指令序列是由該處理電路系統所執行的,所述序列包括指示所述序列內的一經識別的指令的一分路行為設定指令,該分路行為設定指令的執行允許將一分路行為與所述經識別的指令相關聯,在所述序列中遭遇到該經識別的指令時,該分路行為使得該處理電路系統分路到由該分路行為設定指令所識別的一目標位址;解壓縮手段,用於回應於各個追蹤元素而從一目前指令位址遍歷一程式影像,直到在所述程式影像內偵測到該等預定指令中的一下個指令為止,及用於從該程式影像產生指示所述目前指令位址及該等預定指令中的所述下個指令間之該等指令的資訊;及一分路控制儲存器手段,用於與所述解壓縮手段相關聯;該解壓縮手段用於回應於在回應於一預定類型的一目前追蹤元素而遍歷所述程式影像時偵測到至少一個類型的該分路行為設定指令,在該分路控制儲存器手段內儲存從該分路行為設定指令導出的分路控制資訊; 該解壓縮手段用於在參考該分路控制資訊而偵測到已在遍歷該程式影像期間到達該經識別的指令時,將該經識別的指令視為所述預定指令中的該下個指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1615493.2A GB2553582B (en) | 2016-09-13 | 2016-09-13 | An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry |
GB1615493.2 | 2016-09-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201812574A TW201812574A (zh) | 2018-04-01 |
TWI820005B true TWI820005B (zh) | 2023-11-01 |
Family
ID=57234416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106127929A TWI820005B (zh) | 2016-09-13 | 2017-08-17 | 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11561882B2 (zh) |
EP (1) | EP3513297B1 (zh) |
JP (1) | JP7079241B2 (zh) |
KR (1) | KR102397116B1 (zh) |
CN (1) | CN107818044B (zh) |
GB (1) | GB2553582B (zh) |
IL (1) | IL264752B (zh) |
TW (1) | TWI820005B (zh) |
WO (1) | WO2018051056A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2553311B (en) * | 2016-08-31 | 2020-05-20 | Advanced Risc Mach Ltd | An apparatus and method for controlling assertion of a trigger signal to processing circuitry |
GB2595303B (en) * | 2020-05-22 | 2024-04-17 | Advanced Risc Mach Ltd | Profiling of sampled operations processed by processing circuitry |
WO2023144819A1 (en) * | 2022-01-27 | 2023-08-03 | Fireflies Ltd. | A system and method for instrumenting computer code |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822560A (en) * | 1996-05-23 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus for efficient instruction execution via variable issue and variable control vectors per issue |
US20050076180A1 (en) * | 2003-10-01 | 2005-04-07 | Advanced Micro Devices, Inc. | System and method for handling exceptional instructions in a trace cache based processor |
US20070294592A1 (en) * | 2006-05-30 | 2007-12-20 | Arm Limited | Reducing the size of a data stream produced during instruction tracing |
US20150058606A1 (en) * | 2013-08-21 | 2015-02-26 | Vmware, Inc. | Branch trace compression |
TWI524270B (zh) * | 2011-01-13 | 2016-03-01 | Arm股份有限公司 | 資料處理裝置之追蹤 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59146342A (ja) * | 1983-02-09 | 1984-08-22 | Nec Corp | ル−プ制御方式 |
JPS61213937A (ja) * | 1985-03-19 | 1986-09-22 | Fujitsu Ltd | 情報処理システムのトレ−ス方式 |
JPS63113747A (ja) * | 1986-10-31 | 1988-05-18 | Hitachi Ltd | 仮想記憶管理装置 |
JPH08292887A (ja) * | 1995-02-24 | 1996-11-05 | Hitachi Ltd | 命令の分岐方法およびプロセッサ |
JP3629181B2 (ja) * | 2000-03-28 | 2005-03-16 | Necマイクロシステム株式会社 | プログラム開発支援装置 |
GB2366879B (en) * | 2000-09-16 | 2005-02-16 | Ibm | Tracing the execution path of a computer program |
US7302380B2 (en) * | 2002-12-12 | 2007-11-27 | Matsushita Electric, Industrial Co., Ltd. | Simulation apparatus, method and program |
US7562258B2 (en) | 2006-02-09 | 2009-07-14 | Arm Limited | Generation of trace elements within a data processing apparatus |
US8677104B2 (en) | 2006-05-30 | 2014-03-18 | Arm Limited | System for efficiently tracing data in a data processing system |
US8935517B2 (en) | 2006-06-29 | 2015-01-13 | Qualcomm Incorporated | System and method for selectively managing a branch target address cache of a multiple-stage predictor |
GB2453174B (en) | 2007-09-28 | 2011-12-07 | Advanced Risc Mach Ltd | Techniques for generating a trace stream for a data processing apparatus |
JP4883314B2 (ja) * | 2007-12-12 | 2012-02-22 | オムロン株式会社 | Plcを用いたデータトレースシステム |
GB2481380B (en) | 2010-06-21 | 2018-05-16 | Advanced Risc Mach Ltd | Correlating trace data streams |
US9348688B2 (en) | 2010-06-21 | 2016-05-24 | Arm Limited | Correlating trace data streams |
GB2481385B (en) | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
US8489866B2 (en) | 2010-06-30 | 2013-07-16 | International Business Machines Corporation | Branch trace history compression |
US9519481B2 (en) | 2014-06-27 | 2016-12-13 | International Business Machines Corporation | Branch synthetic generation across multiple microarchitecture generations |
GB2551574B (en) * | 2016-06-24 | 2019-11-27 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry |
-
2016
- 2016-09-13 GB GB1615493.2A patent/GB2553582B/en active Active
-
2017
- 2017-08-09 US US16/332,130 patent/US11561882B2/en active Active
- 2017-08-09 KR KR1020197009799A patent/KR102397116B1/ko active IP Right Grant
- 2017-08-09 WO PCT/GB2017/052347 patent/WO2018051056A1/en unknown
- 2017-08-09 JP JP2019512749A patent/JP7079241B2/ja active Active
- 2017-08-09 EP EP17752459.2A patent/EP3513297B1/en active Active
- 2017-08-17 TW TW106127929A patent/TWI820005B/zh active
- 2017-09-06 CN CN201710796294.7A patent/CN107818044B/zh active Active
-
2019
- 2019-02-10 IL IL264752A patent/IL264752B/en active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822560A (en) * | 1996-05-23 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus for efficient instruction execution via variable issue and variable control vectors per issue |
US20050076180A1 (en) * | 2003-10-01 | 2005-04-07 | Advanced Micro Devices, Inc. | System and method for handling exceptional instructions in a trace cache based processor |
TWI352927B (en) * | 2003-10-01 | 2011-11-21 | Globalfoundries Us Inc | System and method for handling exceptional instruc |
US20070294592A1 (en) * | 2006-05-30 | 2007-12-20 | Arm Limited | Reducing the size of a data stream produced during instruction tracing |
TWI524270B (zh) * | 2011-01-13 | 2016-03-01 | Arm股份有限公司 | 資料處理裝置之追蹤 |
US20150058606A1 (en) * | 2013-08-21 | 2015-02-26 | Vmware, Inc. | Branch trace compression |
Also Published As
Publication number | Publication date |
---|---|
CN107818044A (zh) | 2018-03-20 |
IL264752B (en) | 2021-04-29 |
GB2553582A (en) | 2018-03-14 |
KR20190052036A (ko) | 2019-05-15 |
EP3513297B1 (en) | 2021-05-12 |
EP3513297A1 (en) | 2019-07-24 |
JP2019530074A (ja) | 2019-10-17 |
US11561882B2 (en) | 2023-01-24 |
GB201615493D0 (en) | 2016-10-26 |
WO2018051056A1 (en) | 2018-03-22 |
KR102397116B1 (ko) | 2022-05-12 |
TW201812574A (zh) | 2018-04-01 |
JP7079241B2 (ja) | 2022-06-01 |
IL264752A (en) | 2019-05-30 |
CN107818044B (zh) | 2023-06-16 |
US20190370149A1 (en) | 2019-12-05 |
GB2553582B (en) | 2020-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8533685B2 (en) | Processing apparatus, trace unit and diagnostic apparatus | |
JP5904993B2 (ja) | マルチスレッド・コードをデバッグする方法、システム、及びコンピュータ・プログラム | |
KR20140014143A (ko) | 동일한 데이터 조건에 의존하는 인접 명령의 실행 제어 | |
TWI820005B (zh) | 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法 | |
JP5512041B2 (ja) | データ処理システムのトレース時のキー割り当て | |
US8806447B2 (en) | Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints | |
JP6874253B2 (ja) | 処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 | |
US9081895B2 (en) | Identifying and tagging breakpoint instructions for facilitation of software debug | |
JP7026107B2 (ja) | 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法 | |
JP2019526108A (ja) | 診断データキャプチャ |