TW201800937A - 用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法 - Google Patents

用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法 Download PDF

Info

Publication number
TW201800937A
TW201800937A TW106118625A TW106118625A TW201800937A TW 201800937 A TW201800937 A TW 201800937A TW 106118625 A TW106118625 A TW 106118625A TW 106118625 A TW106118625 A TW 106118625A TW 201800937 A TW201800937 A TW 201800937A
Authority
TW
Taiwan
Prior art keywords
branch
instruction
circuit system
future
processing circuit
Prior art date
Application number
TW106118625A
Other languages
English (en)
Other versions
TWI772305B (zh
Inventor
麥克約翰 吉布斯
約翰麥克 荷利
Original Assignee
Arm股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Arm股份有限公司 filed Critical Arm股份有限公司
Publication of TW201800937A publication Critical patent/TW201800937A/zh
Application granted granted Critical
Publication of TWI772305B publication Critical patent/TWI772305B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

本發明提供一種用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法。一種設備具有用於從處理電路系統接收指示由該處理電路系統執行之指令序列的指令執行資訊之輸入介面,以及用於從該指令執行資訊產生包含指示在該序列中由預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流之追蹤產生電路系統。該指令序列包括至少一個分支將來指令,其將由該分支將來指令識別之指令有效轉為分支,並且特定言之當在該指令序列中遇到彼識別指令時導致該處理電路系統分支至由該分支將來指令識別之目標位址。分支控制快取記憶體用於儲存由該分支將來指令導出的分支控制資訊,並且該追蹤產生電路系統經佈置以基於彼分支控制資訊偵測識別指令遇到處理電路系統之時間,及在此偵測時隨後在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址。這使得甚至在由處理電路系統執行之指令序列包括此等分支將來指令的情況中使用追蹤串流之非常有效形式。

Description

用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法
本技術係關於產生指示在資料處理系統中處理電路系統活動的追蹤串流的機制,並且特定言之係關於由此處理電路系統產生及處理指示指令執行的追蹤串流的機制。
追蹤電路系統可用於產生包含一系列追蹤元件的追蹤串流,使得可隨後分析彼等追蹤元件以決定相關處理電路系統活動,例如用以決定由處理電路系統執行之指令序列。為減少在追蹤串流中追蹤資訊之量,該追蹤電路系統可經佈置以不產生針對執行之各個指令的獨立追蹤元件,而是僅產生針對執行之某些預定指令的追蹤元件,例如產生針對執行之各個分支指令的追蹤元件。根據關於預定指令之資訊,分析電路系統可隨後嘗試使用程式影像來重建關於執行之指令序列的資訊。
近期,已經提出一種新類型指令,本文將其稱為分支將來指令。分支將來指令可將任何任意指令有效改變為分支。
當使用上文所述之追蹤串流方法嘗試追蹤處理電路系統之執行行為時,這導致顯著問題,其中僅針對某些預定指令產生追蹤元件。特定言之,儘管追蹤機制可經佈置以產生針對各個分支指令的追蹤元件,使用分支將來指令使任意指令(追蹤機制不將其識別為分支指令)能夠在指令流中開始分支,這可破壞分析電路系統從由追蹤電路系統產生之追蹤串流正確決定處理電路系統之指令執行行為的能力。
本發明技術意欲在存在此等分支將來指令時改良可靠追蹤。
在一個示例配置中,提供一種設備,其包含:輸入介面,用以從處理電路系統接收指示由處理電路系統執行之指令序列的指令執行資訊,該序列包括分支將來指令,指示在該序列中該分支將來指令之後的識別指令,執行該分支將來指令使得當處理電路系統在該序列中遇到時該識別指令導致處理電路系統分支至由該分支將來指令識別之目標位址;追蹤產生電路系統,用以由指令執行資訊產生包含指示在該序列中由預定指令之處理電路系統之執行的複數個追蹤元件的追蹤串流;以及分支控制快取記憶體,用以儲存由該分支將來指令導出的分支控制資訊;該追蹤產生電路系統經佈置以基於儲存在分支控制快取記憶體中之分支控制資訊偵測處理電路系統遇到識別指令之時間並且隨後在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址。
在另一示例配置中,提供一種設備,其包含:輸入介面,用以接收包含指示在由處理電路系統執行之指令序列中預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流,該序列包括分支將來指令,指示在該序列中該分支將來指令之後的識別指令,執行該分支將來指令使得當處理電路系統在該序列中遇到時該識別指令導致處理電路系統分支至由該分支將來指令識別之目標位址;解壓縮電路系統,回應於各個追蹤元件,用以從當前指令位址橫越程式影像直至在該程式影像中偵測到預定指令之下一個,並且用以從程式影像產生指示在該當前指令位址與預定指令之該下一個之間的指令的資訊;以及與該解壓縮電路系統相關之分支控制快取記憶體;該解壓縮電路系統回應於當橫越該程式影像時偵測到分支將來指令,以在分支控制快取記憶體中儲存從分支將來指令導出的分支控制資訊;當在橫越程式影像期間參考分支控制資訊偵測到已到達識別指令時,該解壓縮電路系統經佈置以將彼識別指令處理為該等預定指令之下一個。
在又一示例配置中,提供一種由處理電路系統產生指示指令執行的追蹤串流的方法,其包含:從處理電路系統接收指示由處理電路系統執行之指令序列的指令執行資訊,該序列包括分支將來指令,指示在該序列中該分支將來指令之後的識別指令,執行該分支將來指令使得當處理電路系統在該序列中遇到時該識別指令導致處理電路系統分支至由該分支將來指令識別之目標位址;從指令執行資訊產生包含指示在該序列中由預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流;在分支控制快取記憶體中儲存由該分支將來指令導出的分支控制資訊;以及基於儲存在分支控制快取記憶體中之分支控制資訊偵測處理電路系統已遇到識別指令之時間並且隨後在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址。
在又一示例配置中,提供一種設備,其包含:輸入介面構件,用於從處理電路系統接收指示由處理電路系統執行之指令序列的指令執行資訊,該序列包括分支將來指令,指示在該序列中該分支將來指令之後的識別指令,執行該分支將來指令使得當處理電路系統在該序列中遇到時該識別指令導致處理電路系統分支至由該分支將來指令識別之目標位址;追蹤產生構件,用於由指令執行資訊產生包含指示在該序列中由預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流;以及分支控制快取記憶體構件,用於儲存由該分支將來指令導出之分支控制資訊;該追蹤產生構件用於基於儲存在該支控制快取記憶體構件中之分支控制資訊偵測處理電路系統遇到識別指令之時間並且用於隨後在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址。
根據另一示例配置,提供一種由處理電路系統處理經產生以指示指令執行的追蹤串流的方法,其包含:接收包含指示在由處理電路系統執行之指令序列中預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流,該序列包括分支將來指令,指示在該序列中該分支將來指令之後的識別指令,執行分支將來指令使得當處理電路系統在該序列中遇到時使得該識別指令導致處理電路系統分支至由該分支將來指令識別之目標位址;回應於各個追蹤元件,從當前指令位址橫越程式影像直至在該程式影像中偵測到預定指令之下一個,並且從程式影像產生指示在該當前指令位址與預定指令之該下一個之間的指令的資訊;回應於當橫越該程式影像時偵測到分支將來指令,在分支控制快取記憶體中儲存由分支將來指令導出的分支控制資訊;以及當在橫越程式影像期間參考分支控制資訊偵測到已到達識別指令時,將彼識別指令處理為該等預定指令之下一個。
在又一示例配置中,提供一種設備,其包含:輸入介面構件,用於接收包含指示在由處理電路系統執行之指令序列中預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流,該序列包括分支將來指令,指示在該序列中該分支將來指令之後的識別指令,執行該分支將來指令使得當處理電路系統在該序列中遇到時該識別指令導致處理電路系統分支至由該分支將來指令識別之目標位址;解壓縮構件,回應於各個追蹤元件,用以從當前指令位址橫越程式影像直至在該程式影像中偵測到預定指令之下一個,並且用以從程式影像產生指示在該當前指令位址與預定指令之該下一個之間的指令的資訊;以及與該解壓縮構件相關之分支控制快取記憶體構件;該解壓縮構件回應於當橫越該程式影像時偵測到分支將來指令,以在分支控制快取記憶體構件中儲存從分支將來指令導出的分支控制資訊;該解壓縮構件,當在橫越程式影像期間參考分支控制資訊偵測到已到達識別指令時,用於將彼識別指令處理為該等預定指令之下一個。
在資料處理系統中追蹤處理電路系統之活動,藉以產生追蹤元件串流,其可隨後經分析以識別處理電路系統之逐步活動在系統開發中係高度有用工具。追蹤串流可例如經分析以促進除錯正由處理電路系統執行之指令序列。通常,利用處理電路系統在晶片上提供追蹤機制,此晶片上追蹤機制之實例係由ARM Limited, Cambridge, England提供的與各種ARM處理器相關之嵌入式追蹤巨集單元(Embedded Trace Macrocell; ETM)。此等追蹤機制可潛在地產生隨後需要晶片外提供以用於進一步分析的大量追蹤元件。已經發展數種技術以嘗試減少所產生追蹤資訊之量,同時仍賦能隨後分析處理電路系統之逐步活動。
如先前提及,一種減少所產生追蹤資訊之量的技術涉及僅輸出針對由處理電路系統執行之指令序列中特定類型指令之追蹤元件,其中追蹤分析電路系統隨後能夠由關於執行彼等特定指令之資訊重建處理電路系統之逐步指令執行行為。例如,每次處理分支指令時,追蹤電路系統可輸出追蹤元件,指示是否發生分支,並且分析電路系統可隨後推斷在已對其產生追蹤元件的彼等指令之間哪些指令已由處理電路系統執行。
已經提出一種新類型指令,本文將其稱為分支將來指令。分支將來指令可用以識別在指令序列中分支將來指令之後的指令,執行分支將來指令導致當在指令序列中遇到彼識別指令時處理電路系統隨後分支至由分支將來指令識別之目標位址。因此,分支將來指令可將任何任意指令有效改變為分支。
如先前提及,當使用上文所述之追蹤串流方法嘗試追蹤處理電路系統之執行行為時,這導致顯著問題,其中追蹤元件僅針對某些預定指令產生。所述實施例旨在減輕此等問題,允許繼續採用上文提及之減少量之追蹤串流方法同時亦容納包括分支將來指令之指令序列。
在參考附圖論述實施例之前,提供實施例之以下描述。
在一個實施例中,提供一種設備,其包含:輸入介面,用以從處理電路系統接收指示由處理電路系統執行之指令序列的指令執行資訊,以及追蹤產生電路系統,用以從指令執行資訊產生包含指示由在序列中預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流。指令序列包括分支將來指令,指示在序列中該分支將來指令之後的識別指令。由處理電路系統執行該分支將來指令導致當在序列中其隨後遇到識別指令時處理電路系統分支至由該分支將來指令識別的目標位址。因此,識別指令本身不在執行之彼執行個體中,而是該識別指令由分支至由分支將來指令識別之目標位址來替代。
該設備包括分支控制快取記憶體,其用於儲存從分支將來指令導出之分支控制資訊。此外,追蹤產生電路系統經佈置以基於儲存在分支控制快取記憶體中之分支控制資訊來偵測處理電路系統已在何時遇到識別指令並且隨後在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址。
因此,在上文所述之實施例中,追蹤產生電路系統可使用在分支控制快取記憶體中維持之分支控制資訊以偵測執行分支將來指令已導致識別指令由分支替代之時間並隨後在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址。藉由在追蹤串流中結合此等追蹤元件,除當在序列中預定指令(例如標準分支指令)由處理電路系統執行時追蹤產生電路系統插入之追蹤元件外,這使追蹤分析電路系統隨後從在追蹤串流中之追蹤元件決定由處理電路系統執行之指令流。
分支控制資訊由追蹤產生電路系統使用的分支控制快取記憶體可係與處理電路系統相關之分支控制快取記憶體,在該事件中處理電路系統可包括在其分支控制快取記憶體中處理電路系統何時偵測到命中的指示作為指令執行資訊之部分。然而,在一個實施例中,由追蹤產生電路系統使用之分支控制快取記憶體實際上係與追蹤產生電路系統相關之分支控制快取記憶體,在一個實施例中,該分支控制快取記憶體可獨立地提供至針對處理電路系統本身提供的任何分支控制快取記憶體。在此實施例中,追蹤產生電路系統可經佈置以取決於從處理電路系統接收之指令執行資訊將分支控制資訊儲存在其相關分支控制快取記憶體中。因此,在此實施例中,追蹤產生電路系統具有其自身分支控制快取記憶體,其中維持適當分支控制資訊以使其能夠偵測處理電路系統遇到識別指令之時間並且用以隨後發佈適當追蹤元件。
追蹤產生電路系統填充其相關分支控制快取記憶體的方式可取決於實施例而改變。然而,在一個實施例中,當指令執行資訊指示分支將來指令已由處理電路系統執行時,追蹤產生電路系統經佈置以在分支控制快取記憶體中儲存由分支將來指令識別並用以決定該識別指令的分支點資料。分支點資料可採取各種形式,但足夠使得能夠決定識別指令,並且因此使追蹤產生電路系統能夠偵測處理電路系統遇到彼識別指令之時間。
在一個實施例中,分支點資料可包含下列之一或更多個:位址資料,指示該識別指令之位址;結束資料,指示緊接在該識別指令之前的最後指令之位址;偏移資料,指示在該分支將來指令與該識別指令之間的距離;位元之適當子集,指示在指令之開始儲存位址之間區分的從該記憶體儲存位址之位元之最低有效位元末端開始的該識別指令之記憶體儲存位址;剩餘大小指令資料,指示在該識別指令之前待處理的剩餘指令之數量;以及剩餘大小資料,指示在到達該識別指令之前待處理的剩餘程式儲存位置之數量。應瞭解,此等各種選項提供了用於決定在指令序列中到達識別指令之時間的機制。如先前提及,當處理電路系統到達將要執行彼識別指令之點時,歸因於分支將來指令之較早執行,其實際上不執行彼識別指令,而是於彼點分支至由分支將來指令識別之目標位址。
在一個實施例中,追蹤產生電路系統參考儲存在其相關分支控制快取記憶體中之分支點資料以從接收之指令執行資訊偵測處理電路系統已遇到識別指令之時間,並且在偵測到時隨後在追蹤串流中發佈指示已發生分支至目標位址的追蹤元件。
無論追蹤產生電路系統是否將上文提及之分支點資料儲存在其相關分支控制快取記憶體中,在一個實施例中,當指令執行資訊指示分支將來指令已由處理電路系統執行時,追蹤產生電路系統經佈置以在分支控制快取記憶體中儲存指示目標位址是否直接從在分支將來指令中規定之立即值可導出的目標指示符。
當決定需要將哪些資訊提供在與指示已發生分支至目標位址之追蹤元件相關的追蹤串流中時,此目標指示符資訊可藉由追蹤產生電路系統使用。特定言之,若目標指示符指示目標位址直接從在分支將來指令中規定之立即值導出,則不需要提供關於目標位址之任何額外資訊,由於通常追蹤分析電路系統將具有正由處理電路系統執行的程式之程式影像,並且因此可導出目標位址。然而在一個實施例中,當目標指示符指示目標位址不直接由立即值導出時,追蹤產生電路系統經佈置以在追蹤串流中發佈對從自處理電路系統接收之指令執行資訊導出的目標位址之指示,與追蹤元件相關來指示已發生分支至目標位址。特定言之,基於針對處理電路系統提供之指令執行資訊,追蹤產生電路系統可決定目標位址並隨後在追蹤串流中輸出彼目標位址之指示,以使追蹤分析電路系統隨後當分析追蹤串流時能夠決定目標位址。
在一些情況中,追蹤產生電路系統可經佈置以追蹤處理電路系統之全部活動。然而,在替代實施例中,追蹤產生電路系統之操作可經選擇性激活,使得實際上追蹤僅一部分由處理電路系統執行之指令。例如,追蹤可針對在特定記憶體位址範圍中執行之指令而接通。在此佈置中,追蹤產生電路系統將隨後針對在實際上落入正在追蹤之位址範圍中的序列中之彼等預定指令而產生追蹤元件,並且此外在其從分支控制快取記憶體偵測到由執行之分支將來指令識別之識別指令已由處理電路系統遇到(並且在正在追蹤之位址範圍中)的情況下,將添加額外追蹤元件。然而,在一個實施例中,僅當相關分支將來指令係在正在追蹤之該部分指令序列(例如,位址範圍)中時,追蹤產生電路系統經佈置以將分支控制資訊儲存在分支控制快取記憶體中。由此,若分支將來指令在追蹤係活動的指令範圍外,則分支控制快取記憶體將不填充有關於彼分支將來指令的條目。
如先前提及,可將與追蹤產生電路系統相關之分支控制快取記憶體獨立地提供至用於維持由處理電路系統使用之分支控制資訊的處理電路系統分支控制快取記憶體以在執行分支將來指令之後當處理電路系統遇到識別指令時導致處理電路系統分支至由分支將來指令識別之目標位址。
在一個實施例中,若處理電路系統分支控制快取記憶體僅具有單個條目,並且因此將僅儲存從單個分支將來指令導出之分支控制資訊,可簡化與追蹤產生電路系統相關之分支控制快取記憶體之內容。特定言之,在此等實施例中,與追蹤產生電路系統相關之分支控制快取記憶體可能僅需要儲存指示目標位址是否直接能夠從在單個分支將來指令中規定之立即值導出的目標指示符,但不需要儲存用以決定識別指令的分支點資料。實情為,若在其處理電路系統分支控制快取記憶體中處理電路系統偵測到命中,並經由轉發到追蹤產生電路系統的指令執行資訊通知追蹤產生電路系統彼事實,追蹤產生電路系統將知道命中係歸因於已填充其分支控制快取記憶體條目的相同分支將來指令,並因此可僅僅直接使用目標指示符以決定哪些資訊(若存在)需要伴有追蹤元件,該追蹤元件將隨後發佈以指示已發生分支至目標位址。此方法可因此降低與追蹤產生電路系統相關之分支控制快取記憶體之大小需求。
如先前提及,在一些實施例中,追蹤產生電路系統可不追蹤由處理電路系統執行之整個指令序列,而是可經設置以僅產生針對正在執行之指令序列之一或更多個部分的追蹤資訊。在彼情況中,分支將來指令可能落到所追蹤部分外,並且因此可不導致在與追蹤產生電路系統相關之分支控制快取記憶體中填充條目。在此等實施例中,隨後追蹤產生電路系統可能接收指示歸因於在處理電路系統之分支控制快取記憶體中遇到具有相關分支控制資訊之識別指令處理電路系統已分支至目標位址的指令執行資訊,但與追蹤產生電路系統相關之分支控制快取記憶體可不具有同等條目。在彼情況中,在一個實施例中,追蹤產生電路系統經佈置以發佈追蹤元件來識別識別指令及在遇到彼識別指令時已採取的分支二者。
與在追蹤產生電路系統之相關分支控制快取記憶體中偵測到命中時發佈的先前提及之追蹤元件相比,此特殊形式之追蹤元件因此需要擷取更多資訊,因為在追蹤元件中必需提供充分資訊以清楚地識別識別指令,並且用以完全識別在遇到彼識別指令時已採取的分支。因此,在一個實施例中,彼追蹤元件將需要識別識別指令的位址及目標位址。儘管就追蹤頻寬而言這係昂貴的,但應瞭解此特殊形式之追蹤元件僅在處理電路之分支控制快取記憶體中已存在命中但在追蹤產生電路之分支控制快取記憶體中未偵測到同等命中的特定情況中才為必需。在一個實施例中,預先存在類型之追蹤元件格式可用於此特殊追蹤元件,亦即已用於提供關於在指令執行期間發生之異常的資訊的追蹤元件格式。
在一個實施例中,追蹤產生電路系統可經佈置以在發生預定追蹤控制事件時在其相關分支控制快取記憶體中使分支控制資訊失效。預定追蹤控制事件可採取各種形式。例如,其可係同步事件或「追蹤進行」事件,該事件可用於指示退出用於從正在追蹤者過濾出一些活動的過濾狀態。此等事件可表示在追蹤活動中之間斷性。
在一些實施例中,可能不需要與追蹤產生電路系統相關地提供分支控制快取記憶體。而是,僅僅使用與處理電路系統相關之分支控制快取記憶體即可足夠為追蹤產生電路系統提供足夠資訊使其能夠發佈追蹤元件以指示發生分支至由分支將來指令識別之目標位址之時間。
特定言之,在一個此實施例中,從處理電路系統提供至追蹤產生電路系統的指令執行資訊包括指示分支將來指令由處理電路系統執行之時間、指示分支由處理電路系統處置之時間、以及指示處置彼分支是否歸因於在處理電路系統之分支控制快取記憶體中維持之分支控制資訊,而非歸因於執行分支指令。當具備此資訊時,追蹤產生電路系統可隨後決定基於在指令執行資訊中彼等指示產生的追蹤元件,並且特定言之仍可決定其中必需發佈追蹤元件以指示已發生分支至由分支將來指令識別之目標位址的情況。
特定言之,當指令執行資訊指示已執行分支將來指令並且發生下一分支係歸因於分支控制資訊時,追蹤產生電路系統可經佈置以產生該追蹤元件來指示已發生分支至目標位址。
此外,在一個實施例中,當指令執行資訊指示分支已歸因於執行分支指令處置並且之前沒有執行分支將來指令時,追蹤產生電路系統經佈置以發佈其類型指示處理電路系統是否採取分支的追蹤元件。
可出現之另外情況係指令執行資訊可指示分支已歸因於執行分支指令處置,但其之前有執行分支將來指令。若其中處理電路系統之分支控制快取記憶體具有在已執行分支將來指令之後但在指令序列中遇到識別指令之前的一時間點失效的一些或全部其內容的情況出現,這可(例如)發生。在彼情況中,在一個實施例中,追蹤產生電路系統經佈置以產生指示尚未發生分支至目標位址的第一追蹤元件及其類型指示處理電路系統是否採取歸因於執行分支指令處置之分支的第二追蹤元件。因此,在此情況中,追蹤產生電路系統仍輸出表示在指令序列中已遇到識別指令的第一追蹤元件,但在此情況中指示尚未發生分支至目標位址。此隨後繼之以第二追蹤元件,用以表示執行分支指令,並且特定言之指示是否採取彼分支,採取/未採取狀態係從處理電路系統提供之指令執行資訊來決定。
此方法確保一個實施例之追蹤分析器電路系統之正確操作。特定言之如後文將論述,追蹤分析器電路系統在一個實施例中亦具備由於並且當在程式影像中遇到分支將來指令時其填充的其自身本端分支控制快取記憶體。由此,藉由繼續產生與分支至目標位址相關但識別不發生彼分支的追蹤元件,這確保追蹤分析器正確地回應於在追蹤串流中其接收的該等系列追蹤元件。
可出現的又一示例情景係當指令執行資訊指示歸因於分支控制資訊發生的分支,但追蹤產生電路系統不具有充分資訊以知道先前分支將來指令是否由處理電路系統執行。當僅正在追蹤處理電路系統活動之子集並且分支將來指令係在彼子集外時,這可(例如)發生。在彼情況中,在一個實施例中,追蹤產生電路系統經佈置以發佈追蹤元件來識別識別指令及在遇到彼識別指令時已採取的分支二者。此追蹤元件可採取與先前提及之特殊追蹤元件相同之形式,並且因此可使用預先存在之異常樣式格式之追蹤元件以擷取所有所需資訊,在一個實施例中此資訊包括識別指令位址及目標位址。
在分支控制快取記憶體係與處理電路系統相關並用於維持由處理電路系統使用之分支控制資訊以當在執行分支將來指令之後處理電路系統遇到該識別指令時導致處理電路系統分支至由分支將來指令識別之目標位址之又一實施例中,追蹤產生電路系統可經佈置以具有當指令執行資訊指示分支將來指令已由處理電路系統執行時設定的儲存元件。此外,當指令執行資訊指示歸因於在分支控制快取記憶體中遇到具有相關分支控制資訊之識別指令處理電路系統已分支至目標位址並且設定儲存元件時,追蹤產生電路系統隨後經佈置以在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址並經進一步佈置以清除儲存元件。
因此,在此實施例中,追蹤產生電路系統不維持分支控制快取記憶體本身,但具有如上所述設定或清除的簡單儲存元件。當處理電路系統歸因於在處理電路系統之分支控制快取記憶體中的命中而分支時,這使追蹤產生電路系統可靠發佈追蹤元件。
在一個實施例中,當指令執行資訊指示處理電路系統歸因於在分支控制快取記憶體中遇到具有相關分支控制資訊之識別指令而已分支至目標位址並且不設定儲存元件時,追蹤產生電路系統經佈置以發佈追蹤元件來識別識別指令及在遇到彼識別指令時已採取之分支二者。此追蹤元件可採取與先前提及之特殊追蹤元件相同之形式,並且因此可使用預先存在之異常樣式格式之追蹤元件以擷取全部所需資訊。
在一個實施例中,當指令執行資訊指示分支已歸因於執行分支指令而得以處置時,追蹤產生電路系統經佈置以發佈其類型指示處理電路系統是否採取分支的追蹤元件,並經進一步佈置以清除儲存元件。因此,當通知追蹤產生電路系統已發生正常分支(亦即,不歸因於分支將來指令之較早執行)時,清除儲存元件。
在又一實施例中,可提供一種用於進行追蹤分析功能的設備。特定言之,此設備可包含輸入介面,用以接收包含指示在由處理電路系統執行之指令序列中由預定指令之處理電路系統執行的複數個追蹤元件的追蹤串流。彼序列可包括先前提及之分支將來指令中一或更多個。該設備進一步包括解壓縮電路系統,其回應於各個追蹤元件以從當前指令位址橫越程式影像直至在程式影像中偵測到預定指令之下一個。解壓縮電路系統隨後從指示在當前指令位址與已偵測到的彼下一預定指令之間的指令的程式影像資訊產生。該設備進一步具有與解壓縮電路系統相關之分支控制快取記憶體,並且該解壓縮電路系統回應於當橫越程式影像時偵測到分支將來指令以在分支控制快取記憶體中儲存從分支將來指令導出的分支控制資訊。此外,當參考分支控制資訊偵測到在橫越程式影像期間已到達識別指令時,解壓縮電路系統經佈置以將彼識別指令處理為預定指令之下一個。
因此,考慮到其中預定指令係分支指令的實例,隨後儘管識別指令本身可不係分支指令,經由使用與解壓縮電路系統相關之分支控制快取記憶體,該解壓縮電路系統可偵測到在程式影像中遇到彼識別指令之時間,並且於彼點可如同其係分支指令那樣處理識別指令。因此這允許產生追蹤串流,其僅產生將由追蹤分析電路系統正確分析的用於由處理電路系統執行之某些指令的追蹤元件,甚至當正在執行之指令序列包括分支將來指令時,並且因此可潛在地將任何任意指令轉為分支。
與解壓縮電路系統相關之儲存在分支控制快取記憶體中的資訊可採取各種形式。在一個實施例中,該解壓縮電路系統經佈置以將由分支將來指令識別並用以決定識別指令的分支點資料儲存為分支控制資訊。此外,在一個實施例中,當彼目標位址係直接由在分支將來指令中規定之立即值導出時,該解壓縮電路系統經佈置以將目標位址儲存為分支控制資訊。因此,若彼目標位址係直接從立即值導出,則該解壓縮電路系統可從程式影像決定目標位址,並且因此擷取在其本端分支控制快取記憶體中之目標位址。這使得能夠直接決定當遇到識別指令時在程式影像中何處分支。若相反目標位址不可直接識別,則應從先前論述瞭解到追蹤串流將包括直接識別目標位址的資訊,並且因此解壓縮電路系統可能從具備追蹤串流之資訊決定目標位址。
現將參考附圖描述特定實施例。
第1圖示意地說明根據一個實施例之系統,提供監控電路系統10、追蹤模組20、追蹤緩衝器30及追蹤分析器40。儘管第1圖說明提供追蹤緩衝器30之系統,但在替代實施例中,追蹤模組20可將其輸出直接傳遞到追蹤分析器40,而不經由追蹤緩衝器。追蹤模組20經佈置以產生包含一系列追蹤元件的追蹤串流,追蹤串流隨後使追蹤分析器能夠重建監控電路系統10之活動。監控電路系統10可採取各種形式,但在一個實施例中包括至少一個處理元件,例如經佈置以執行指令序列的處理器核心。該監控電路系統將指示在監控電路系統上正在執行之指令的指令執行資訊輸出至追蹤模組20。
在一個實施例中體現為晶片上並且可例如採取由ARM Limited, Cambridge, United Kingdom生產之ETM電路形式的追蹤模組經佈置以產生提供一系列追蹤元件的追蹤串流,其中該等追蹤元件指示在指令序列中預定指令之執行。因此,不是產生表示由監控電路系統執行之各個指令的追蹤元件,而是在追蹤串流中追蹤元件僅指示某些預定指令之執行,其中追蹤分析器具備充分知識(例如,經由程式影像)以使其能夠重建關於已在提供追蹤元件的各個此預定指令之間執行的指令之資訊。例如,在一個實施例中,追蹤模組可經佈置以產生用於在該序列中執行之每個分支指令的追蹤元件,彼追蹤元件提供關於是否採取分支之資訊,並且追蹤分析器40具備程式影像以使其能夠基於關於處理分支指令之資訊決定已執行之實際指令序列。這使得能夠產生顯著減少量之追蹤元件。由於追蹤分析器40通常體現為晶片外,這係非常有用的,並且因此追蹤串流需要經由晶片插腳投送至分析器。
由監控電路系統執行之指令序列可包括分支將來指令。分支將來指令能夠識別在分支將來指令之後的任何任意指令,並且當隨後遇到彼識別指令時,這可導致監控電路系統不執行彼識別指令,而是分支至由分支將來指令識別之目標位址。為支援此行為,在一個實施例中,監控電路系統可具有相關分支目標位址快取記憶體(branch target address cache; BTAC),其具有一或更多個條目。當執行分支將來指令時,條目經分配在BTAC中,並且彼條目將由分支將來指令指示之識別指令之位址記錄為源位址,還記錄識別當遇到彼識別指令時處理電路系統應分支到之位址的目標位址。在一個實施例中,在執行分支將來指令並以上述方式中填充BTAC之後,當處理電路系統隨後(例如)歸因於偵測到已更新或將要更新其程式計數器而在其BTAC條目之一中偵測到命中時,對應於在BTAC條目之一中保持之源位址之值,其隨後不於彼位址執行識別指令,而是替代他導致指令流分支至亦在BTAC之彼條目中擷取的目標位址。
藉由此方法,可以看到分支將來指令可用以將任何任意指令有效轉為分支。彼識別指令的形式無關緊要,因為當以上述方式由分支將來指令識別時,該處理電路系統實際上不執行彼識別指令,而是進行由分支將來指令識別之分支。若需要,分支將來指令可有條件地執行。因此,當滿足用於執行分支將來指令之條件時,上文論述之處理將發生,並且當隨後遇到識別指令時,監控電路系統將進行分支至目標位址而非執行識別指令。相反地,若在將執行分支將來指令時不滿足條件,則將不執行分支將來指令,並且在適當過程中識別指令將以其正常方式執行以進行由彼識別指令規定的功能。
儘管使用此等分支將來指令將顯著靈活性添加至可由監控電路系統進行的操作,當追蹤模組經佈置以產生先前提及類型之追蹤串流時,其導致追蹤模組20的顯著問題,其中追蹤元件僅針對在由監控電路系統正在執行之序列中的特定預定指令而產生。特定言之,若追蹤模組經設置以產生用於執行之各個分支指令的追蹤元件,其將通常不產生用於已由分支將來指令標記為導致分支的識別指令的追蹤元件,因為彼識別指令可本身不係分支指令。若追蹤串流不正確標記已發生此分支,應瞭解追蹤分析器將不能正確推斷由監控電路系統執行之指令序列。
可能佈置追蹤產生電路系統以追蹤由於到達識別指令發生的任何此分支,該識別指令係以與追蹤關於何時發生異常之資訊相同之方式在監控電路系統之BTAC中由條目標記。然而,就追蹤頻寬而言其係昂貴的,因為必需追蹤識別指令之位址及分支之目標位址二者,並且因此這可顯著損害追蹤串流格式之有效性。
如本文將進一步論述,提供一種使追蹤產生電路系統能夠有效追蹤在監控電路系統中歸因於遇到識別指令發生之分支的機制,識別指令匹配在監控電路系統之BTAC中的條目,歸因於先前執行分支將來指令。
第2圖係說明一個實施例之追蹤模組20的方塊圖。如圖所示,追蹤模組20經耦接至處理元件50,處理元件50在一個實施例中形成監控電路系統10之至少一部分。處理元件50具有相關BTAC 55,其維持在執行各個分支將來指令時填充的分支控制資訊。BTAC 55具有一或更多個條目,並且每次處理元件50執行分支將來指令時,在BTAC 55中條目之一經填充有某些分支控制資訊。特定言之,在一個實施例中,如第4A圖所示,在BTAC 55中各個條目可包括源位址欄位155,其中擷取由分支將來指令指示之識別指令之位址;及目標位址欄位160,其中儲存由分支將來指令識別之目標位址。儘管,在一個實施例中,欄位155儲存識別指令之位址,更一般而言欄位155儲存可採取先前論述之任何形式的分支點資料,但足夠使處理元件能夠偵測在指令串流中其遇到識別指令之時間。無論何時在BTAC 55條目之一中偵測到命中,指示在指令串流中已遇到識別指令,不執行彼識別指令,而是處理元件分支至在相關目標位址欄位160中之目標位址。
由於處理元件50執行該指令序列,其將指令執行資訊傳遞至追蹤模組20之輸入介面65,從此處將其轉發至追蹤產生電路系統60。追蹤產生電路系統60可視需要具有相關追蹤BTAC 75,其中其儲存從經由輸入介面65接收之指令執行資訊導出的某些分支控制資訊。在一個實施例中,追蹤BTAC 75採取第4B圖所示之形式,並且包含一或更多個條目,其中各個條目具有用於將由分支將來指令(已由處理元件執行)指示的識別指令之位址儲存為源位址(或如先前論述之任何其他等效分支點資料)的欄位165。此外,針對各個此條目,提供進一步欄位170,其識別目標位址是否可直接從分支將來指令決定,例如藉由在分支將來指令中作為立即值提供。若相反分支將來指令識別其內容用於導出目標位址的暫存器,則認為目標位址係間接目標位址,並且在欄位170中標記該目標位址不係直接,亦即,係間接。在追蹤BTAC中不必實際擷取目標位址本身。
在一個實施例中,不考慮是否已滿足與執行分支將來指令相關之任何條件代碼,在追蹤BTAC 75中產生條目。
追蹤模組20可經佈置以在發生一或更多個預定追蹤控制事件時使其追蹤BTAC 75內容失效。彼等追蹤控制事件可採取各種形式,但可例如係同步事件或退出預定追蹤過濾操作並且因此在追蹤時提供間斷性的「追蹤進行」事件。這因此確保在追蹤BTAC 75中不維持過期資訊。
如後文將論述,在一些實施例中,追蹤BTAC可無需具有欄位165,並且替代地僅可必需在欄位170中擷取目標位址之直接/間接性質。此外,如將參考第7圖及第8圖之實施例所論述,在一些實情況中,追蹤模組20可無需獨立地維持追蹤BTAC 75,並且替代地由處理元件50提供的指示其與其本端BTAC 55相互作用的資訊可足夠使追蹤產生電路系統60能夠產生所需追蹤元件。在後文參考第8圖所論述之實施例中,追蹤模組維持小儲存元件78,其內容係以第8圖所論述之方式設定並清除。
在一個實施例中,追蹤產生電路系統60經佈置以無論何時在指令序列中執行分支指令在其追蹤串流中輸出追蹤元件,彼追蹤元件亦指示是否採取分支,這可由經由輸入介面65從處理元件50接收的指令執行資訊導出。追蹤元件之串流隨後經由輸出介面70轉發以用於向前傳播至追蹤緩衝器30及/或追蹤分析器40。各個追蹤元件本文亦可稱為「原子」。
此外,追蹤產生電路系統經佈置以基於儲存在其本端追蹤BTAC 75中之分支控制資訊(或在一些實施例中基於指示在處理電路系統之本端BTAC 55中已發生之命中的由處理元件50轉發的BTAC命中資訊)偵測由執行之分支將來指令識別之指令遇到處理元件50之時間。在彼情況中,追蹤產生電路系統亦在追蹤串流中發佈追蹤元件以指示已發生分支至目標位址。若目標位址可從分支將來指令直接推導,則目標位址本身不需要在追蹤串流中識別,因為追蹤分析器40將隨後能夠決定目標位址。然而,若目標位址不能直接推導,則追蹤產生電路系統60將從由處理元件50所提供之資訊決定目標位址,並且將在追蹤串流中輸出目標位址,使得彼目標位址可隨後由追蹤分析器40使用。
第3圖係示意性說明一個實施例之追蹤分析器40的圖。追蹤分析器40於其輸入介面105處接收追蹤串流(原子系列),從該處隨後將彼資訊轉發至解壓縮器電路系統100。解壓縮器電路系統100存取至提供由監控電路系統執行之程式代碼之副本的程式影像110。解壓縮器電路系統100保持追蹤在程式影像中之當前位址(當前位址經設定至於預定點之預定初始值,諸如當接通追蹤時),並且每次接收新原子時,其橫越程式影像直至到達在程式影像中特定類型之下一指令,例如,在上述實例中分支指令,其中在追蹤串流中各個追蹤元件指示分支指令之執行。解壓縮器電路系統從程式影像提取關於在當前位址與彼下一預定指令之位址之間執行的各個指令的資訊,並且將全部彼執行資訊輸出至分析電路系統120用於分析。一旦在程式影像中已遇到彼下一預定指令,當前位址隨後基於彼遇到之分支的目標位址而經更新,使得當在追蹤串流中接收到下一原子時,相同程式影像橫越過程可再次開始,從新的當前位址開始。
如先前提及,除標準分支指令之外,追蹤串流亦將包括當追蹤模組20已偵測到歸因於監控電路系統已遇到由分支將來指令指示之識別指令而發生分支至目標位址時插入的追蹤元件。為使解壓縮器電路系統100能夠在此等情況中進行程式影像之適當橫越,該解壓縮器電路系統亦具有相關本端BTAC,在第3圖中稱為解壓縮器BTAC 115。當解壓縮器電路系統100橫越程式影像110時,由於並且當其遇到分支將來指令時,其隨後在解壓縮器BTAC 115中儲存由彼分支將來指令導出的分支控制資訊。在一個實施例中,解壓縮器BTAC採取第4C圖所示之形式,並且包含一或更多個條目,其中各個條目具有用於將由分支將來指令識別的指令之位址儲存為源位址(或如先前論述之任何其他等效分支點資料)的欄位175,並且若彼目標位址可直接從分支將來指令決定亦具有用於儲存目標位址的欄位180。特定言之,在彼事件中,解壓縮器電路系統100將能夠從程式影像之內容直接決定目標位址,並且由此在欄位180中擷取彼目標位址。若目標位址不可直接決定,欄位180留作空白,並且替代地該解壓縮器電路系統將隨後從在追蹤串流中提供之資訊決定目標位址。
在以上述方式填充解壓縮器BTAC 115之後,由於其橫越程式影像,解壓縮器電路系統100隨後能夠參考解壓縮器BTAC 115。無論何時從在程式影像中考慮到的當前指令之位址偵測到存在在解壓縮器BTAC 115之條目之一中具有源位址資訊的命中,決定彼當前考慮之指令係已由分支將來指令識別的識別指令,並且因此將彼識別指令處理為下一預定指令而非等到其到達下一分支指令。於彼點解壓縮器電路系統100可提供分析電路系統120關於在當前橫越程式影像期間橫越之全部指令的資訊,並且亦可於彼點將當前位址更新為目標位址。針對直接目標位址,其將係在解壓縮器BTAC 115中相關條目之欄位180中指示的目標位址,而針對間接目標位址,將在與當前考慮之原子相關的追蹤串流中直接提供彼目標位址資訊。
以與先前針對追蹤模組20之BTAC 75論述者相同之方式,追蹤分析器40可經佈置以在發生一或更多個預定追蹤控制事件時使其解壓縮器BTAC 115內容失效,以因此確保在解壓縮器BTAC 115中不維持過期資訊。
第5圖係根據一個實施例可由第2圖之追蹤模組20進行的過程之流程圖。於步驟200,等待關於正在由監控電路系統執行之當前指令的資訊,並且一旦接收彼資訊,其經由輸入介面65投送至追蹤產生電路系統60,其中於步驟205追蹤產生電路系統決定是否將追蹤彼當前指令。儘管在一些實施例中,可判定將追蹤整個指令序列,在其他實施例中追蹤機制可取決於當前正在執行之指令選擇性接通及關閉。這使得能夠追蹤代碼之特定部分,而不追蹤其他部分。在此等實施例中,將僅關於將追蹤之代碼之彼等部分產生追蹤串流,並且使用先前所述之機制,實際追蹤元件/原子將隨後僅關於在彼等部分中執行之某些指令,使得追蹤分析器電路系統可隨後重建關於在彼等部分中之其他指令的資訊。
若於步驟205決定不追蹤當前指令,則該過程僅僅返回步驟200以等待關於由監控電路系統執行之下一指令的資訊。
當於步驟205決定追蹤當前指令時,則於步驟210追蹤產生電路系統決定當前指令之位址是否命中在追蹤BTAC 75中之條目。若其命中,則這指示當前指令係已由先前執行之分支將來指令識別的識別指令,並且因此應如同其係分支那樣对其處理。由此於步驟215,彼當前指令經處理為分支指令並在追蹤串流中發佈原子。
在一個實施例中,追蹤產生電路系統經佈置以發佈追蹤原子的預定指令被稱為「P0指令」,並且在一個實施例中P0指令之實例係分支指令。其他類型指令亦可能被認為係P0指令,並且將由此導致在追蹤串流中發佈相應原子。儘管歸因於在追蹤BTAC 75中之命中,由分支將來指令識別之指令本身將無需係P0指令,其經如同其係P0指令那樣處理並且於步驟215用於P0指令之適當原子由此在追蹤串流中發佈。若在追蹤BTAC 75中相關條目之直接/間接目標位址欄位170指示目標位址可由分支將來指令直接決定,則不需要在追蹤串流中輸出目標位址資訊。此外,不需要輸出源位址資訊,由於於此點當前指令僅僅經處理為P0指令,並且全部所需者係簡單原子以識別已執行P0指令。在一個實施例中,此原子被稱為「E」原子。這因此提供非常有效之編碼以識別已發生分支。
若追蹤BTAC之相關條目之欄位170指示目標位址係間接目標位址,則追蹤產生電路系統將由處理元件50提供之指令執行資訊決定目標位址,並且指示彼目標位址將遵循在追蹤串流中之E原子使得彼目標位址隨後可用於追蹤分析器40。在步驟215之後,該過程隨後返回步驟200以等待由處理元件50執行之下一指令的資訊。
若於步驟210,決定當前指令之位址不命中在追蹤BTAC 75中之條目,決定當前指令是否係標準P0指令,例如標準分支指令。若其係標準P0指令,則於步驟225在指令串流中發佈用於此P0指令之標準原子。考慮到分支指令,指令執行資訊將識別當執行彼分支指令時是否採取分支,並且此資訊可在於步驟225發佈之原子中表示。特定言之,若採取分支,則發佈先前提及之「E」原子,而若不採取分支,則發佈「N」原子。因此,原子本身之存在識別已遇到P0指令,並且彼原子之E/N氣味識別是否採取了分支。應瞭解參考先前步驟215,當在追蹤BTAC中偵測到命中並且由此當前指令經處理為P0指令時,已知採取分支,因為執行先前分支將來指令將導致處理電路系統分支至目標位址,並且因此於步驟215所產生之原子將通常係E原子。
以與先前參考步驟215所論述者相同之方式,若目標位址係由分支指令直接導出,則於步驟225不需要發佈任何目標位址資訊。然而,若其不可直接導出,則追蹤產生電路系統決定目標位址並且將在與E/N原子相關之追蹤串流中輸出彼目標位址之指示。該過程隨後返回步驟200。
若於步驟220決定當前指令不係標準P0指令,則於步驟230決定當前指令是否已導致處理元件由於在處理元件之BTAC 55中的命中而改變其程式計數器。這可例如歸因於追蹤過濾操作而發生,其中僅追蹤處理元件之指令子集。若相關先前分支將來指令係在所追蹤之指令的彼子集外,在追蹤BTAC 75中將不擷取關於彼分支將來指令之資訊並且因此將遵循來自步驟210之「否」路徑。若於步驟230決定在處理元件中分支已歸因於在其BTAC 55中之命中而發生,隨後該過程進行至步驟235,此處在追蹤串流中使用擷取關於當前指令及目標位址之全部所需資訊的特殊類型原子來追蹤當前指令。特定言之,彼原子將識別當前指令之位址及將分支至的目標位址。在一個實施例中,在處理元件50中用於擷取關於在指令執行期間發生之異常之資訊的預先存在類型原子可用於此目的。應瞭解當與於步驟215及225發佈之原子相比時,就追蹤頻寬而言於步驟235發佈之原子及相關資訊係昂貴的,但將僅需要在追蹤BTAC已不能擷取關於相關分支將來指令之資訊的情況中發佈。在步驟235之後,該過程隨後返回步驟200。
若於步驟230,決定當前指令不導致處理元件由於在處理元件之BTAC 55中之命中而改變其程式計數器,則於步驟240決定當前指令是否預載入處理元件BTAC 55,亦即,當前指令是否係先前提及之分支將來指令之一。若如此,則於步驟245分配在追蹤BTAC 75中之條目,並且源位址欄位165及直接/間接欄位170使用從自處理元件轉發的指令執行資訊導出之資訊填充。該過程隨後返回步驟200。
儘管在一個實施例中追蹤BTAC 75採取第4B圖所示之形式,並且因此於步驟245源位址及直接/間接目標位址資訊均在欄位165、170中擷取,在一個實施例中,可能移除源位址欄位165,並且僅利用追蹤BTAC維持直接/間接目標位址欄位170。特定言之,若處理元件BTAC 55僅具有單一條目,並且因此僅可儲存關於單個分支將來指令之資訊,若從處理元件50轉發之指令執行資訊指示在其本端BTAC 55中已存在命中,則追蹤產生電路系統60能夠推斷在其追蹤BTAC 75中維持之條目係用於彼相同分支將來指令,並且因此可直接使用直接/間接目標位址資訊170而不需要進行任何源位址檢查。
第6圖係說明根據一個實施例由第3圖之解壓縮器電路系統100進行之過程的流程圖。於步驟300,決定於輸入介面105在追蹤串流中是否已接收原子。一旦已接收原子,則於步驟305解壓縮器電路系統100開始從當前位址橫越程式影像110。於追蹤起始點或於在追蹤活動中之同步點,當前位址可經設定至規定值。其後,其將基於由解壓縮器電路系統進行之程式橫越操作而更新,從下文第6圖之進一步論述顯而易見。
於步驟310,當前指令之細節經輸出至分析電路系統120,並且於步驟315參考程式影像決定當前指令(亦即,由當前位址指向之指令)是否係預載入處理元件之BTAC 55的指令,亦即,是否係先前提及之分支將來指令之一。若是,則該過程進行至步驟320,此處解壓縮器電路系統100在其解壓縮器BTAC 115中分配條目並且在彼條目中將由分支將來指令識別之指令位址儲存為源位址。此外,若其可從當前指令(亦即,分支將來指令)直接計算,則其在彼條目中儲存目標位址。該過程隨後進行至步驟335,此處在程式影像中下一指令經設定為當前指令(藉由前進位址以指向在程式影像中之下一指令),並且該過程返回步驟310。
若於步驟315決定當前指令非分支將來指令,則於步驟325決定當前指令之位址是否匹配儲存在解壓縮器BTAC 115中之源位址。若如此,則這指示當前指令係已由先前執行之分支將來指令識別的識別指令,並且由此應以與P0指令相同之方式處理為導致程式影像橫越過程停止的指令。由此,該過程進行至步驟340,此處由解壓縮器電路系統維持之當前位址經更新至目標位址。這將在目標位址係直接目標位址之事件中直接獲自解壓縮器BTAC條目,或若目標位址係間接目標位址,則將獲自在追蹤串流中提供之資訊。於步驟345,該過程停止橫越程式影像,並且該過程返回步驟300以等待下一原子。
若於步驟325決定當前指令之位址不匹配在解壓縮器BTAC中保持之源位址,則於步驟330決定在程式影像中之當前指令是否係標準P0指令,例如分支指令。若如此,該過程再次進行至步驟340,否則該過程繼續至步驟335。
藉由此方法,可以看到隨著接收各個原子橫越程式影像,其中各個原子係與標準P0指令相關或與由分支將來指令識別之指令相關。歸因於使用以參考第6圖所述之方式填充的解壓縮器BTAC 115,解壓縮器電路系統100可能正確解譯追蹤串流,並且特定言之準確決定何時回應於各個原子停止橫越程式影像,因此使得正確追蹤在指令流中之分支,不考慮其等是歸因於分支指令還是由分支將來指令任意轉化為分支的其他指令。
第7圖係根據其中不需要追蹤BTAC 75之替代實施例說明第2圖之追蹤模組20之操作的流程圖。
於步驟400,追蹤產生電路系統累積從處理元件傳遞至其的指令執行資訊直至彼資訊包括分支已由處理元件處置的指示。在一個實施例中,由於各個指令係由處理元件執行,處理元件可提供指令執行資訊。然而,在替代實施例中,其中路點介面維持在處理元件50與追蹤模組20之間(路點介面意味著藉由提供先前分支之目標位址執行指令,下一分支之位址維持在處理元件50與追蹤模組20之間),由於分支已經處置,該處理電路系統本身可緩衝所需指令執行資訊直至此點,並且隨後在一個批次中將全部彼指令執行資訊提供至追蹤模組20。
於步驟405,決定從處理元件提供之資訊是否指示在該分支之前已執行分支將來指令。若如此,則於步驟410決定來自處理元件之資訊是否亦指示發生之分支係歸因於在處理元件之BTAC 55中之命中,亦即,歸因於處理元件遇到由所執行之分支將來指令識別之指令。若如此,則該過程進行至步驟415,此處在追蹤串流中發佈E原子以表示BTAC命中分支至目標位址。若目標位址可從分支將來指令直接決定,則除E原子之外不需要額外資訊,但若目標位址係間接的,則追蹤產生電路系統60亦從處理元件50提供之指令執行資訊決定目標位址,並且在追蹤串流中與E原子相關地轉發彼目標位址。其後,於步驟445,清除當前由追蹤模組20保持之指令執行資訊,並且該過程返回步驟400。
若於步驟410決定分支不歸因於在處理元件BTAC中之命中,儘管於步驟405決定由處理元件提供之資訊指示在分支之前執行分支將來指令,則該過程進行至步驟420。於此點,追蹤產生電路系統60發佈用於基於BTAC之分支的N原子以標記不發生基於BTAC之分支,並且隨後額外發佈原子以識別隨後發生之正常分支。如先前論述,取決於由處理元件50提供之指令執行資訊所決定採取/不採取彼分支指令之行為,此原子將係E原子或N原子。在步驟420之後,該處理隨後進行至步驟445。
若於步驟405決定來自處理元件之資訊不指示在分支之前執行分支將來指令,則該過程進行至步驟425,此處決定是否實際上從指令執行資訊知道是否執行了分支將來指令。若從彼資訊知道並未執行分支將來指令,則該過程進行至步驟430,此處針對已發生之正常分支發佈原子,至於原子係E原子還是N原子取決於採用/不採用在指令執行資訊中之資訊。
然而,在其中僅由處理元件執行之指令序列之某些部分經歷追蹤的實施例中,追蹤模組可能不確切地知道是否已執行分支將來指令。在該事件中,遵循來自步驟425之「是」路徑,其中於步驟435隨後決定由處理元件提供之資訊是否指示分支無論如何係歸因於在處理元件BTAC 55中之BTAC命中。若其指示,則該過程進行至步驟440,此處發佈包括關於已發生之分支事件的全部所需資訊的先前提及之「異常樣式」原子。特定言之,彼原子將包括導致分支發生的指令位址,並且亦包括分支之目標。
若來自處理元件之資訊指示分支非歸因於BTAC命中,亦即,係歸因於正常分支,則該過程從步驟435進行至步驟430。在步驟430或440之後,該過程隨後進行至步驟445。
在如參考第7圖所論述之此實施例中,因此應瞭解可能操作該系統而無與追蹤產生電路系統相關的追蹤BTAC 75。實情為,追蹤產生電路系統使用指示在處理元件BTAC 55中已發生之BTAC命中的從處理元件50提供至其的資訊操作,並且相應地產生追蹤元件。應注意當採用第7圖之方法時,追蹤分析器40仍將包括解壓縮器BTAC 115,並且解壓縮器電路系統100仍將以參考第6圖論述之方式操作。
第8圖係根據又一替代實施例說明追蹤模組20之操作的流程圖。在此實施例中,追蹤模組20不具有先前描述之追蹤BTAC 75,而是具有維持以第8圖所述之方式設定並清除的欄位(其在一個實施例可係單一位元)的簡單儲存元件78。第8圖之步驟500及505對應於先前描述之第5圖之步驟200及205,並且步驟510及515對應於第5圖之步驟220及225。由於在此實施例中,追蹤模組不具有其自身BTAC 75,第5圖之步驟210及215不在第8圖中重複,並且替代地來自505之「是」路徑直接進行至步驟510。若該過程進行至步驟515以導致針對當前指令發佈原子,則在該過程返回步驟500之前,於步驟520清除在追蹤模組中之儲存元件78。
若於步驟510決定當前指令不係標準P0指令,則該過程進行至步驟525,其對應於第5圖之步驟230。若於步驟525決定當前指令不導致處理元件50由於在其本端BTAC 55中之命中而改變其程式計數器,則於步驟530決定是否設定在追蹤模組中之儲存元件78。若設定,則於步驟535將當前指令經處理為P0指令並且由此在追蹤串流中發佈原子,步驟535主基本對應於第5圖之步驟215。其後,於步驟540,清除在追蹤模組中之儲存元件,隨後過程返回步驟500。
若於步驟530決定不設定儲存元件78,則該過程進行至步驟545,其對應於第5圖之步驟235,導致發佈「異常樣式」原子,隨後該過程返回步驟500。
若於步驟525,決定當前指令不導致處理元件由於在BTAC 55中之命中而改變其程式計數器,則於步驟550決定當前指令是否係分支將來指令,並且由此導致處理元件50在處理元件之BTAC 55中分配條目。若如此,則於步驟555設定在儲存元件78中之位元,隨後該過程返回步驟500,而若遵循來自步驟550的「否」路徑,則該過程僅僅直接返回步驟500。
在一個實施例中,儲存元件78僅僅維持先前論述之單個位元,該位元以第8圖論述之方式設定及清除。在彼事件中,從處理元件50轉發至追蹤模組20的指令執行資訊可經佈置以指示當處理電路系統遇到識別指令時用於發生之分支的目標位址是否可直接由在分支將來指令中規定之立即值導出。以與先前參考第5圖之步驟215所論述者相同之方式,若當於步驟535發佈E原子時,決定目標位址不可直接導出,則追蹤產生電路系統將從處理元件50提供之指令執行資訊決定目標位址,及指示彼目標位址將遵循在追蹤串流中之E原子使得彼目標位址隨後可用於追蹤分析器40。
在替代實施例中,於步驟555,儲存元件可視需要以與先前針對追蹤BTAC 75之欄位170所描述者相同之方式維持直接/間接指示,並且當判定目標位址係直接或間接並且因此目標位址之指示是否需要在追蹤串流中輸出時彼資訊可由追蹤模組20指示。
本文所述之實施例實現非常有效的追蹤機制,其中追蹤元件僅針對實際上由監控電路系統執行的(通常小)指令子集產生,但該追蹤元件可實際上追蹤監控電路系統之活動,甚至當監控電路系統執行包括一或更多個分支將來指令的指令序列時,這可將任何任意指令有效轉化為分支。
在本申請案中,用語「經配置以…」用以意謂設備元件具有能夠進行所定義之操作的配置。在此上下文中,「配置」意謂硬體或軟體之互連之佈置或方式。例如,設備可具有提供定義之操作的專用硬體,或處理器或其他處理裝置可經程式化以進行該功能。「經配置以」不暗示該設備元件需要以任何方式改變以提供定義之操作。
儘管已在本文中參考隨附圖式詳細描述了本發明之說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習此項技術者可在本發明中實現各種改變、添加及修改,而不偏離由隨附申請專利範圍定義的本發明之範疇及精神。例如,附屬項之特徵可與獨立項之特徵進行各種組合而不脫離本發明之範疇。
10‧‧‧監控電路系統
20‧‧‧追蹤模組
30‧‧‧追蹤緩衝器
40‧‧‧追蹤分析器
50‧‧‧處理元件
55‧‧‧BTAC
60‧‧‧追蹤產生電路系統
65‧‧‧輸入介面
70‧‧‧輸出介面
75‧‧‧追蹤BTAC
78‧‧‧儲存元件
100‧‧‧解壓縮器電路系統
105‧‧‧諸如介面
110‧‧‧程式影像
115‧‧‧解壓縮器BTAC
120‧‧‧分析電路系統
155‧‧‧源位址欄位
160‧‧‧目標位址欄位
165‧‧‧欄位
170‧‧‧欄位
175‧‧‧欄位
180‧‧‧欄位
200‧‧‧步驟
205‧‧‧步驟
210‧‧‧步驟
215‧‧‧步驟
220‧‧‧步驟
225‧‧‧步驟
230‧‧‧步驟
235‧‧‧步驟
240‧‧‧步驟
245‧‧‧步驟
300‧‧‧步驟
305‧‧‧步驟
310‧‧‧步驟
315‧‧‧步驟
320‧‧‧步驟
325‧‧‧步驟
330‧‧‧步驟
335‧‧‧步驟
340‧‧‧步驟
345‧‧‧步驟
400‧‧‧步驟
405‧‧‧步驟
410‧‧‧步驟
415‧‧‧步驟
420‧‧‧步驟
425‧‧‧步驟
430‧‧‧步驟
435‧‧‧步驟
440‧‧‧步驟
445‧‧‧步驟
500‧‧‧步驟
505‧‧‧步驟
510‧‧‧步驟
515‧‧‧步驟
520‧‧‧步驟
525‧‧‧步驟
530‧‧‧步驟
535‧‧‧步驟
540‧‧‧步驟
545‧‧‧步驟
550‧‧‧步驟
555‧‧‧步驟
將參考在附圖中圖示之本技術實施例僅藉由實例之方式進一步描述本技術,其中:
第1圖係根據一個實施例之系統的方塊圖;
第2圖係更詳細說明根據一個實施例所使用之追蹤模組的方塊圖;
第3圖係更詳細說明根據一個實施例所使用之追蹤分析電路系統的方塊圖;
第4A圖至第4C圖示意地說明根據一個實施例可用於第1圖之系統中的分支目標位址快取記憶體(branch target address cache; BTAC)之不同形式;
第5圖係根據一個實施例說明第2圖之追蹤模組之操作的流程圖;
第6圖係根據一個實施例說明第3圖之解壓縮器電路系統之操作的流程圖;
第7圖說明在不提供追蹤BTAC之替代實施例中第2圖之追蹤模組之操作;以及
第8圖說明在不提供追蹤BTAC之又一替代實施例中第2圖之追蹤模組之操作。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
10‧‧‧監控電路系統
20‧‧‧追蹤模組
30‧‧‧追蹤緩衝器
40‧‧‧追蹤分析器

Claims (27)

  1. 一種設備,其包含: 一輸入介面,用以從處理電路系統接收指示由該處理電路系統執行之一指令序列的指令執行資訊,該序列包括一分支將來指令,指示在該序列中該分支將來之後的一識別指令,執行該分支將來指令使得當處理電路系統在該序列中遇到時該識別指令導致該處理電路系統分支至由該分支將來指令識別之一目標位址;追蹤產生電路系統,用以從該指令執行資訊產生包含指示在該序列中由預定指令之該處理電路系統執行的複數個追蹤元件的一追蹤串流;以及一分支控制快取記憶體,用以儲存從該分支將來指令導出之分支控制資訊;該追蹤產生電路系統經佈置以基於儲存在該分支控制快取記憶體中之該分支控制資訊偵測該處理電路系統遇到該識別指令之時間,並且用以隨後在該追蹤串流中發佈一追蹤元件以指示已發生分支至該目標位址。
  2. 如請求項1所述之設備,其中該分支控制快取記憶體係與該追蹤產生電路系統相關並且該追蹤產生電路系統經佈置以取決於從該處理電路系統接收之該指令執行資訊來儲存該分支控制資訊。
  3. 如請求項2所述之設備,其中,當該指令執行資訊指示該分支將來指令已由該處理電路系統執行時,該追蹤產生電路系統經佈置以在該分支控制快取記憶體中儲存由該分支將來指令識別並用以決定該識別指令的分支點資料。
  4. 如請求項3所述之設備,其中該追蹤產生電路系統經佈置以參考儲存在該分支控制快取記憶體中的該分支點資料以從該接收之指令執行資訊偵測該處理電路系統遇到該識別指令之時間,並且在該偵測時隨後在該追蹤串流中發佈該追蹤元件以指示已發生分支至該目標位址。
  5. 如請求項2所述之設備,其中當該指令執行資訊指示該分支將來指令已由該處理電路系統執行,該追蹤產生電路系統經佈置以在該分支控制快取記憶體中儲存指示該目標位址是否可從在該分支將來指令中規定之一立即值導出的一目標指示符。
  6. 如請求項5所述之設備,其中當該目標指示符指示該目標位址不可從該立即值直接導出時,該追蹤產生電路系統經佈置以在該追蹤串流中發佈對從該處理電路系統接收之該指令執行資訊導出的該目標位址之一指示,與該追蹤元件相關來指示已發生分支至該目標位址。
  7. 如請求項2所述之設備,其中: 該追蹤產生電路系統經佈置以產生指示由該處理電路系統執行之該指令序列之一部分的一追蹤串流,該等追蹤元件關於含於彼部分中的該預定指令;以及該追蹤產生電路系統經佈置以僅當該相關分支將來指令在該指令序列之該部分中時在該分支控制快取記憶體中儲存該分支控制資訊。
  8. 如請求項2所述之設備,其中該分支控制快取記憶體獨立於維持由該處理電路系統使用之分支控制資訊的一處理電路系統分支控制快取記憶體以在執行該分支將來指令之後當該處理電路系統遇到該識別指令時導致該處理電路系統分支至由該分支將來指令識別之該目標位址。
  9. 如請求項8所述之設備,其中該處理電路系統分支控制快取記憶體使僅儲存從一單個分支將來指令導出之分支控制資訊,並且與該追蹤產生電路系統相關之該分支控制快取記憶體經佈置以儲存指示該目標位址是否可從在該單個分支將來指令中規定之一立即值直接導出的一目標指示符,但不儲存由該分支將來指令識別並用以決定該識別指令的分支點資料。
  10. 如請求項7所述之設備,其中該分支控制快取記憶體獨立於維持由該處理電路系統使用之分支控制資訊的一處理電路系統分支控制快取記憶體以在執行該分支將來指令之後當該處理電路系統遇到該識別指令時導致該處理電路系統分支至由該分支將來指令識別之該目標位址,並且其中該追蹤產生電路系統回應於指示歸因在該處理電路系統分支控制快取記憶體中於遇到具有相關分支控制資訊的一識別指令該處理電路系統已分支至該目標位址的該指令執行資訊,但與該追蹤產生電路系統相關之該分支控制快取記憶體不具有針對彼識別指令儲存之分支控制資訊,以發佈一追蹤元件來識別該識別指令及在遇到彼識別指令時已採取之該分支二者。
  11. 如請求項2所述之設備,其中該追蹤產生電路系統經佈置以在發生一預定追蹤控制事件時使在該分支控制快取記憶體中該分支控制資訊失效。
  12. 如請求項3所述之設備,其中該分支點資料包含下列之一或更多個: 位址資料,其指示該識別指令之一位址;結束資料,其指示緊接在該識別指令之前的一最後指令之一位址;偏移資料,其指示在該分支將來指令與該識別指令之間的一距離;位元之一適當子集,其指示在指令之開始儲存位址之間區分的從該記憶體儲存位址之位元之一最低有效位元末端開始的該識別指令之一記憶體儲存位址。剩餘大小指令資料,其指示在該識別指令之前處理的剩餘指令之一數量;以及剩餘大小資料,其指示在到達該識別指令之前處理的剩餘程式儲存位置之一數量。
  13. 如請求項1所述之設備,其中: 該分支控制快取記憶體係與該處理電路系統相關並用以維持由該處理電路系統使用之分支控制資訊以在執行該分支將來指令之後當該處理電路系統遇到該識別指令時導致該處理電路系統分支至由該分支將來指令識別之該目標位址;以及該指令執行資訊包括一分支將來指令由該處理電路系統執行之時間的一指示,一分支已由該處理電路系統處置之時間的一指示、以及該處置彼分支是否歸因於在該分支控制快取記憶體中維持之該分支控制資訊而非歸因於執行一分支指令的一指示;以及該追蹤產生電路系統經佈置以決定該等追蹤元件基於在該指令執行資訊中之該等指示產生。
  14. 如請求項13所述之設備,其中當該指令執行資訊指示已執行一分支將來指令並且發生之一下一分支係歸因於該分支控制資訊時,該追蹤產生電路系統經佈置以產生該追蹤元件來指示已發生分支至該目標位址。
  15. 如請求項13所述之設備,其中當該指令執行資訊指示一分支已歸因於執行一分支指令處置並且不在執行該分支將來指令之後時,該追蹤產生電路系統經佈置以發佈其類型指示該處理電路系統是否採取該分支的一追蹤元件。
  16. 如請求項13所述之設備,其中當該指令執行資訊指示一分支已歸因於執行一分支指令處置但在執行該分支將來指令之後時,該追蹤產生電路系統經佈置以產生指示尚未發生一分支至該目標位址的一第一追蹤元件及其類型指示該處理電路系統是否採取歸因於執行該分支指令處置之該分支的一第二追蹤元件。
  17. 如請求項13所述之設備,其中當該指令執行資訊指示該分支歸因於該分支控制資訊發生但該追蹤產生電路系統尚未知道一先前分支將來指令是否由該處理電路系統執行時,該追蹤產生電路系統經佈置以發佈一追蹤元件來識別該識別指令及在遇到彼識別指令時已採取之該分支二者。
  18. 如請求項1所述之設備,其中: 該分支控制快取記憶體係與該處理電路系統相關並用以維持由該處理電路系統使用之分支控制資訊以在執行該分支將來指令之後當該處理電路系統遇到該識別指令時導致該處理電路系統分支至由該分支將來指令識別之該目標位址;該追蹤產生電路系統具有當該指令執行資訊指示該分支將來指令已由該處理電路系統執行時設定的一儲存元件;以及當該指令執行資訊指示歸因於在該分支控制快取記憶體中遇到具有相關分支控制資訊之一識別指令該處理電路系統已分支至該目標位址並且設定該儲存元件時,該追蹤產生電路系統經佈置以隨後在該追蹤串流中發佈一追蹤元件以指示已發生一分支至該目標位址並且經進一步佈置以清除該儲存元件。
  19. 如請求項18所述之設備,其中當該指令執行資訊指示歸因於在該分支控制快取記憶體中遇到具有相關分支控制資訊之一識別指令該處理電路系統已分支至該目標位址並且不設定該儲存元件時,該追蹤產生電路系統經佈置以發佈一追蹤元件以識別該識別指令及在遇到彼識別指令時已採取之該分支二者。
  20. 如請求項18所述之設備,其中當該指令執行資訊指示一分支已歸因於執行一分支指令經處置時,該追蹤產生電路系統經佈置以發佈其類型指示該處理電路系統是否採取該分支的一追蹤元件,並且經進一步佈置以清除該儲存元件。
  21. 一種設備,其包含: 一輸入介面,用以接收包含指示在由該處理電路系統執行之一指令序列中由預定指令之處理電路系統執行的複數個追蹤元件的一追蹤串流,該序列包括一分支將來指令,指示在該序列中該分支將來指令之後的一識別指令,執行該分支將來指令使得當該處理電路系統在該序列中遇到時該識別指令導致該處理電路系統分支至由該分支將來指令識別之一目標位址;解壓縮電路系統,回應於各個追蹤元件,用以從一當前指令位址橫越一程式影像直至在該程式影像中偵測到該等預定指令之一下一個,並且用以從該程式影像產生指示在該當前指令位址與該等預定指令之該下一個之間的該等指令的資訊;以及一分支控制快取記憶體,與該解壓縮電路系統相關;該解壓縮電路系統回應於當橫越該程式影像時偵測到該分支將來指令,用以在該分支控制快取記憶體中儲存從該分支將來指令導出的分支控制資訊;當參考該分支控制資訊偵測到在橫越該程式影像期間已到達該識別指令時,該解壓縮電路系統經佈置以將彼識別指令處理為該等預定指令之該下一個。
  22. 如請求項21所述之設備,其中該解壓縮電路系統經佈置以將由該分支將來指令識別並用以決定該識別指令的分支點資料儲存為該分支控制資訊。
  23. 如請求項22所述之設備,其中該解壓縮電路系統經進一步佈置以當彼目標位址可從在該分支將來指令中規定之一立即值直接導出時將該目標位址儲存為該分支控制資訊。
  24. 一種由處理電路系統產生指示指令執行的一追蹤串流之方法,其包含以下步驟: 從該處理電路系統接收指示由該處理電路系統執行之一指令序列的指令執行資訊,該序列包括一分支將來指令,指示在該序列中該分支將來之後的一識別指令,執行該分支將來指令使得當該處理電路系統在該序列中遇到時該識別指令導致該處理電路系統分支至由該分支將來指令識別之一目標位址;從該指令執行資訊產生包含指示在該序列中由預定指令之該處理電路系統執行的複數個追蹤元件的該追蹤串流;在一分支控制快取記憶體中儲存從該分支將來指令導出的分支控制資訊;以及基於儲存在該分支控制快取記憶體中之該分支控制資訊偵測該處理電路系統遇到該識別指令之時間,並且隨後在該追蹤串流發佈中一追蹤元件以指示已發生分支至該目標位址。
  25. 一種設備,其包含: 輸入介面構件,用以從處理電路系統接收指示由該處理電路系統執行之一指令序列的指令執行資訊,該序列包括一分支將來指令,指示在該序列中該分支將來之後的一識別指令,執行該分支將來指令使得當該處理電路系統在該序列中遇到時該識別指令導致該處理電路系統分支至由該分支將來指令識別之一目標位址;追蹤產生構件,用以從該指令執行資訊產生包含指示在該序列中由預定指令之該處理電路系統執行的複數個追蹤元件的一追蹤串流;以及分支控制快取記憶體構件,用於儲存從該分支將來指令導出之分支控制資訊;該追蹤產生構件用於基於儲存在該分支控制快取記憶體中之該分支控制資訊偵測該處理電路系統遇到該識別指令之時間,並且用於隨後在該追蹤串流中發佈一追蹤元件以指示已發生分支至該目標位址。
  26. 一種由處理電路系統處理所產生之一追蹤串流以指示指令執行的方法,其包含以下步驟: 接收包含指示在由該處理電路系統執行之一指令序列中由預定指令之處理電路系統執行的複數個追蹤元件的一追蹤串流,該序列包括一分支將來指令,指示在該序列中該分支將來指令之後的一識別指令,執行該分支將來指令使得當該處理電路系統在該序列中遇到時該識別指令導致該處理電路系統分支至由該分支將來指令識別之一目標位址;回應於各個追蹤元件,從一當前指令位址橫越一程式影像直至在該程式影像中偵測到該等預定指令之一下一個,並且從該程式影像產生指示在該當前指令位址與該等預定指令之該下一個之間的該等指令的資訊;回應於當橫越該程式影像時偵測該分支將來指令,在一分支控制快取記憶體中儲存從該分支將來指令導出的分支控制資訊;以及當參考該分支控制資訊偵測到在橫越該程式影像期間已到達該識別指令時,將彼識別指令處理為該等預定指令之該下一個。
  27. 一種設備,其包含: 一輸入介面構件,用以接收包含指示在由該處理電路系統執行之一指令序列中由預定指令之處理電路系統執行的複數個追蹤元件的一追蹤串流,該序列包括一分支將來指令,指示在該序列中該分支將來指令之後的一識別指令,執行該分支將來指令使得當該處理電路系統在該序列中遇到時該識別指令導致該處理電路系統分支至由該分支將來指令識別之一目標位址;解壓縮構件,用於回應於各個追蹤元件,從一當前指令位址橫越一程式影像直至在該程式影像中偵測到該等預定指令之一下一個,並且用於從該程式影像產生指示在該當前指令位址與該等預定指令之該下一個之間的該等指令的資訊;以及與該解壓縮構件相關的分支控制快取記憶體構件;該解壓縮構件,回應於當橫越該程式影像時偵測到該分支將來指令,用以在該分支控制快取記憶體構件中儲存從該分支將來指令導出的分支控制資訊;該解壓縮構件,當參考該分支控制資訊偵測到在橫越該程式影像期間已到達該識別指令時,用以將彼識別指令處理為該等預定指令之該下一個。
TW106118625A 2016-06-24 2017-06-06 用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法 TWI772305B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1611012.4 2016-06-24
GB1611012.4A GB2551574B (en) 2016-06-24 2016-06-24 An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
??1611012.4 2016-06-24

Publications (2)

Publication Number Publication Date
TW201800937A true TW201800937A (zh) 2018-01-01
TWI772305B TWI772305B (zh) 2022-08-01

Family

ID=56891504

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106118625A TWI772305B (zh) 2016-06-24 2017-06-06 用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法

Country Status (9)

Country Link
US (1) US11068270B2 (zh)
EP (1) EP3475828A1 (zh)
JP (1) JP6874253B2 (zh)
KR (1) KR102598392B1 (zh)
CN (1) CN108027762B (zh)
GB (1) GB2551574B (zh)
IL (1) IL263250B (zh)
TW (1) TWI772305B (zh)
WO (1) WO2017220950A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2553582B (en) * 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
GB2571947B (en) * 2018-03-13 2020-09-16 Advanced Risc Mach Ltd Tracing branch instructions
GB2578098B (en) * 2018-10-15 2021-02-10 Advanced Risc Mach Ltd Executing branch instructions following a speculation barrier instruction

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches
US6055630A (en) * 1998-04-20 2000-04-25 Intel Corporation System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units
JP4933693B2 (ja) * 1998-08-24 2012-05-16 マイクロユニティ システムズ エンジニアリング インコーポレイテッド ワイド・オペランド・アーキテクチャを含むシステムおよび方法
US6622240B1 (en) * 1999-06-18 2003-09-16 Intrinsity, Inc. Method and apparatus for pre-branch instruction
US7334115B1 (en) * 2000-06-30 2008-02-19 Intel Corporation Detection, recovery and prevention of bogus branches
GB0023698D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Instruction issue in a processor
US7707394B2 (en) * 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7752425B2 (en) 2006-05-30 2010-07-06 Arm Limited Data processing apparatus having trace and prediction logic
GB2453174B (en) * 2007-09-28 2011-12-07 Advanced Risc Mach Ltd Techniques for generating a trace stream for a data processing apparatus
GB2466078B (en) 2008-12-15 2013-11-13 Advanced Risc Mach Ltd Apparatus and method for tracing activities of a shader program executed on shader circuitry of a data processing apparatus
US8438547B2 (en) * 2009-05-05 2013-05-07 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US8966323B2 (en) * 2010-12-23 2015-02-24 Arm Limited Monitoring multiple data transfers
GB2487355B (en) * 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US20130013849A1 (en) * 2011-07-06 2013-01-10 Varma Vishal V Programmable Patch Architecture for ROM
US9465716B2 (en) * 2012-03-16 2016-10-11 International Business Machines Corporation Run-time instrumentation directed sampling
US9471315B2 (en) * 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9547358B2 (en) * 2012-04-27 2017-01-17 Nvidia Corporation Branch prediction power reduction
US9081629B2 (en) * 2013-05-19 2015-07-14 Frank Eliot Levine Excluding counts on software threads in a state
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US9626279B2 (en) * 2013-07-01 2017-04-18 Nxp Usa, Inc. Debug method and device for providing indexed trace messages
US9104402B2 (en) * 2013-08-21 2015-08-11 Vmware, Inc. Branch trace compression
US9483379B2 (en) * 2013-10-15 2016-11-01 Advanced Micro Devices, Inc. Randomly branching using hardware watchpoints
US9430245B2 (en) * 2014-03-28 2016-08-30 Telefonaktiebolaget Lm Ericsson (Publ) Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size
CN104866345B (zh) * 2015-05-21 2018-03-23 福建升腾资讯有限公司 一种ARMv7m架构下可执行代码的存储方法
GB2548604B (en) 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction

Also Published As

Publication number Publication date
JP2019521436A (ja) 2019-07-25
KR102598392B1 (ko) 2023-11-06
GB2551574B (en) 2019-11-27
CN108027762A (zh) 2018-05-11
KR20190022649A (ko) 2019-03-06
US11068270B2 (en) 2021-07-20
EP3475828A1 (en) 2019-05-01
GB201611012D0 (en) 2016-08-10
IL263250A (en) 2018-12-31
TWI772305B (zh) 2022-08-01
CN108027762B (zh) 2023-01-06
IL263250B (en) 2020-09-30
JP6874253B2 (ja) 2021-05-19
GB2551574A (en) 2017-12-27
US20190179642A1 (en) 2019-06-13
WO2017220950A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
JP5914521B2 (ja) 処理装置、トレースユニット、および診断装置
US9176737B2 (en) Controlling the execution of adjacent instructions that are dependent upon a same data condition
US20190220279A1 (en) Simulation of exclusive instructions
US11030076B2 (en) Debugging method
US8806447B2 (en) Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints
TW201800937A (zh) 用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法
JP2006313521A (ja) プログラマブルデバイスのモデリング方法および装置
TWI820005B (zh) 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法
US9910760B2 (en) Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging
US9081895B2 (en) Identifying and tagging breakpoint instructions for facilitation of software debug
US11099958B2 (en) Instruction generation for validation of processor functionality
CN109313422A (zh) 用于加工二元码数据的方法和设备
JPS5896354A (ja) マイクロコントロ−ラ