TWI524270B - 資料處理裝置之追蹤 - Google Patents

資料處理裝置之追蹤 Download PDF

Info

Publication number
TWI524270B
TWI524270B TW100144693A TW100144693A TWI524270B TW I524270 B TWI524270 B TW I524270B TW 100144693 A TW100144693 A TW 100144693A TW 100144693 A TW100144693 A TW 100144693A TW I524270 B TWI524270 B TW I524270B
Authority
TW
Taiwan
Prior art keywords
tracking
instruction
conditional
output
indicator
Prior art date
Application number
TW100144693A
Other languages
English (en)
Other versions
TW201232393A (en
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 TW201232393A publication Critical patent/TW201232393A/zh
Application granted granted Critical
Publication of TWI524270B publication Critical patent/TWI524270B/zh

Links

Classifications

    • 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/3495Performance evaluation by tracing or monitoring for systems
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • 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/3457Performance evaluation by simulation
    • G06F11/3461Trace driven simulation
    • 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/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

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

Description

資料處理裝置之追蹤
本發明係關於資料處理。更特定言之,本發明係關於由資料處理裝置執行之處理活動之追蹤。
已知執行資料處理裝置之活動之追蹤,以驗證處理器設計並確認資料處理裝置在執行程式指令時之可靠操作。
已知提供與資料處理裝置相關聯之追蹤單元,該追蹤單元經配置以監視資料處理裝置之處理活動,且產生追蹤資料項目之序列,該等追蹤資料項目指示彼等處理活動。此追蹤單元之實例為可作為單一系統單晶片(System-On-Chip)之部分或獨立於處理器而提供之ARM嵌入式追蹤巨集單元(Embedded Trace Macrocell;ETM)。ETM產生用於輸出至診斷裝置之追蹤資料。對於執行複雜軟體之現代資料處理裝置而言,在追蹤操作期間產生之追蹤資料量通常非常大。因此,希望以壓縮形式提供追蹤資料之項目,從而省略預計為冗餘之任何資訊並包括僅對於特定分析目的嚴格必需之資料。美國專利第7,707,394號闡述用於減小追蹤資料串流之大小之一些技術。
資料處理裝置之活動之追蹤在能夠亂序執行程式指令及/或臆測執行之資料處理裝置中可為複雜的。臆測執行為常常用於資料處理裝置中之技術,此是因為該臆測執行可例如藉由防止管線式資料處理裝置之管線階段在任何顯著時段保持閒置而改良指令傳輸量。然而,指令之臆測執行可為追蹤單元帶來特定困難,此是因為在驗證臆測之前,亦即,在已知臆測執行之給定指令實際上是否由資料處理裝置執行之前,追蹤單元不能提供決定性地指示資料處理裝置之實際操作之追蹤資料串流。
用於處理能夠臆測執行之資料處理裝置中之追蹤之已知技術係緩衝與臆測執行指令相關聯之所有追蹤資料,直至完全驗證臆測為止,或臆測地產生並輸出追蹤資料,且若隨後發現追蹤資料之某些項目所對應之指令為誤臆測,則將取消追蹤資料之該等項目。舉例而言,Nexus協定(「The Nexus 5001 Forum-Standard for a Global Embedded Processor Debug Interface」,IEEE-IST0 5001-2003,2003年12月23日)支援取消規定數目個追蹤資料項目。然而,即使資料處理裝置向追蹤單元特定地指示應取消哪些指令或指令群組,實際上識別與彼等取消的指令相對應之追蹤資料項目亦為不簡單的。
在能夠亂序執行之資料處理裝置中,當例如處理諸如載入指令或儲存指令之指令執行時,問題可出現於追蹤資料處理活動過程中,該等指令執行可花費許多週期來完成。因此,例如,即使在執行按次序處理時,若執行載入指令且產生追蹤資料之相應項目,則截止已自記憶體系統擷取所請求資料值之時間,亦可難以識別與載入指令之執行相關聯之(先前產生之)追蹤資料之相應項目。因此,在使自記憶體擷取之資料值與特定執行之載入指令發生相關的過程中可能存在問題。將瞭解到,此情形當可不按程式次序執行諸如載入指令之資料轉移時加劇,此狀況可使得實際上不可能識別哪些資料值屬於哪些記憶體位址。與亂序處理器之追蹤有關之一些背景技術資訊可見於文件「The PD Trace Interface and Trace Control Block Specification」,2005年7月4日(可得自http://www.mips.com/products/product-materials/processor/mips-architecture/)及ARM ETM v3架構(可得自http://infocentre.arm.com)中。
特定問題可出現在追蹤條件指令過程中,此是因為在條件指令之解碼與附加至指令執行的特定條件之解析之間通常存在延遲。許多已知指令集僅允許分支得以有條件地執行。然而,ARM架構使用條件評估硬體,該條件評估硬體使各種不同指令能夠含有條件欄位,該條件欄位決定資料處理裝置是否將執行相應指令。非執行之指令通常僅消耗單一處理週期。有條件地執行若干不同指令之能力移除對許多分支指令之需要。分支指令可使需要複數個週期以再填充管線之資料處理裝置之管線暫停,且條件指令允許不具有分支的密集內嵌碼(dense in-line code)。不執行若干條件指令(其中未滿足附加條件)之時間損失通常小於執行該等條件指令將需要之分支指令之額外負擔。因此,條件指令在改良資料處理之效率過程中非常有用。
然而,諸如條件非分支指令之條件指令由於指令之解碼與附加條件之評估之間的延遲而呈現資料處理裝置之活動之追蹤的特定問題。可在與條件指令相同的點處追蹤條件通過/失敗資訊,且因此可使用單一追蹤封包來追蹤該條件通過/失敗資訊,但是此舉需要顯著的緩衝來支援此追蹤,尤其是在亂序處理器或能夠臆測執行之處理器中。
因此,需要提供一種提供條件指令之更有效追蹤之技術,該技術亦適用於能夠臆測執行及/或亂序執行之資料處理裝置中之指令序列之追蹤。
根據第一態樣,本發明提供一種追蹤單元,該追蹤單元經配置以產生追蹤資料之項目,該等追蹤資料之項目指示資料處理裝置之處理活動,該追蹤單元包含:追蹤輸入介面,該追蹤輸入介面用於自該資料處理裝置接收至少一個指令觀察指示符及至少一個結果輸出指示符,該至少一個指令觀察指示符指示條件指令之觀察,該至少一個結果輸出指示符指示執行該至少一個條件指令之結果藉由該資料處理裝置之輸出;以及追蹤電路系統,該追蹤電路系統用於處理該至少一個指令觀察指示符及該至少一個結果輸出指示符,且該追蹤電路系統經配置以自該至少一個指令觀察指示符及該至少一個結果輸出指示符產生相應條件指令追蹤資料項目及條件結果追蹤資料項目,且獨立地輸出該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,從而賦能藉由診斷裝置對條件指令與相應條件結果之分離追蹤分析。
本發明認識到,提供能夠獨立地輸出條件指令追蹤資料項目及條件結果追蹤資料項目之追蹤電路系統提供了相當大的靈活性及條件指令之追蹤,此舉可改進與緩衝追蹤資料直至完全驗證與有條件地執行之指令相關聯之條件的已知技術相關聯之問題。
將瞭解到,可由資料處理裝置在相同處理週期中輸出指令觀察指示符及相應結果輸出指示符。然而,在一些實施例中,指令觀察指示符係在第一處理週期中由資料處理裝置輸出且在追蹤電路系統之追蹤輸入介面處接收,而資料處理裝置經配置以能夠在第二不同處理週期中輸出與相同條件指令相對應之結果輸出指示符。此意謂指令觀察指示符及相應結果輸出指示符應亦在不同處理週期中於追蹤輸入介面處接收。此促進條件指令之執行與隨後產生的相應條件結果之分離追蹤。獨立地追蹤條件指令與該等條件指令之相應條件結果之能力為有用的,此是因為在一些資料處理核心中可能無法在處理管線中之相同點處追蹤條件指令之所有細節。此外,在一些資料處理器中可能亂序處理條件指令。根據本發明之技術將條件指令之追蹤分離為兩部分以直接解決此問題。此使得條件指令之追蹤更有效率,尤其在能夠臆測執行及/或亂序執行之資料處理裝置中。
條件指令之執行及條件結果之輸出之追蹤之時間分離意謂,例如在亂序處理器中,可取決於特定資料處理裝置之時序及能力而以不同方式追蹤給定執行序列。特定而言,條件結果相對於條件指令之解碼變為可用所在之時間範圍(time frame)可取決於處理器能力而顯著變化,但是此可容易地藉由資料處理裝置在不同處理週期中輸出指令觀察指示符及結果輸出指示符來調節。
在一些實施例中,追蹤單元包含結果輸出指示符緩衝器,該結果輸出指示符緩衝器用於儲存自該資料處理裝置收到的複數組結果輸出指示符,該追蹤單元經配置以週期性地選擇一組儲存的結果,以用於輸出至該追蹤電路系統供處理並回應於該等指令觀察指示符中之一者,該等指令觀察指示符指示參考一組結果輸出指示符的條件指令,該緩衝器當前為該組結果輸出指示符儲存有效值,該追蹤單元經配置以選擇該組當前儲存之有效結果輸出指示符以用於輸出,使得可儲存一組新結果輸出指示符。
或許追蹤單元可在單一週期中接受許多結果輸出指示符,然而,提供具有產生彼數目個條件結果追蹤資料項目之能力的追蹤電路系統將為昂貴的。因此,緩衝該等結果且穩定地輸出該等結果可為有利的。以此方式,可消除收到的結果輸出指示符中之峰值。因此,在條件指令之執行需要逐出當前結果輸出指示符時或在未接收項目時輸出輸出指示符,且因此可選擇一或更多項目用於輸出。因為系統經設計以在結果輸出指示符之前接收指令觀察指示符,所以可決定在何處執行指令,執行指令需要儲存位置來儲存當前使用之結果,且可輸出來自此位置之此資料,且然後在接收到結果時釋放儲存位置。
在一些實施例中,該資料處理裝置包含複數個當前程式狀態暫存器,該等當前程式狀態暫存器經配置以儲存一各別組條件碼旗標值,該各別組條件碼旗標值指示如何處理條件指令,該緩衝器包含儲存位置,該儲存位置用於儲存與該複數個當前程式狀態暫存器中之每一程式狀態暫存器相對應之一組結果輸出指示符,該等組結果輸出指示符中之每一組結果輸出指示符皆包含該等條件碼旗標值中之至少一些條件碼旗標值。
結果輸出指示符可例如包含自CPSR暫存器收到的至少一些條件碼旗標值。若情況如此,則存在用於每一CPSR暫存器之儲存位置,且該等儲存位置可在一個週期中全部更新,且因此追蹤單元必須能夠接受彼數目個輸入。此外,當執行條件指令時,可決定是否存在與狀態暫存器之條件指令相對應,在緩衝器中已存在為該狀態暫存器儲存之有效值。若情況如此,則可輸出此值且儲存位置用來儲存新值。藉由在較早週期中輸出指令觀察指示符,可在新值到達之前清空緩衝器。此外,藉由具有緩衝器,可儲存該等輸入值且不需要同時處理所有該等輸入值。
應注意,若可在單一週期中接收M個條件指令指示符,則追蹤單元必須能夠在單一週期中逐出並輸出M個條件結果指示符,以在需要時釋放儲存位置。如先前所述,若存在N個狀態暫存器,則在一些實施例中追蹤單元應能夠在單一週期中接收N組結果輸出指示符。M通常比N小得多,且因此在單一週期中輸出以由追蹤產生邏輯處理之結果輸出指示符之數目相對小,但是可以若干不同方式追蹤與條件指令之執行相關聯之條件。在一些實施例中,資料處理裝置包含至少一個當前程式狀態暫存器,該至少一個當前程式狀態暫存器經配置以儲存一各別組條件碼旗標標記,該各別組條件碼旗標標記經測試以決定是否應將條件指令輸出為追蹤資料之項目,且追蹤單元包含資料儲存器,該資料儲存器用於儲存當前程式狀態暫存器表,該當前程式狀態暫存器表列出與至少一個當前程式狀態暫存器及該各別組條件碼旗標標記之至少一個子集相關聯之狀態。此提供便利機制,經由該機制,追蹤單元可持續追蹤用於給定條件指令之給定條件碼是否已驗證或正被追蹤。此賦能複數個有條件地執行之指令之當前狀態的有效率追蹤。
在一些實施例中,追蹤單元之當前程式狀態暫存器表經配置以儲存關於條件碼旗標之子集中之每一子集的三個不同狀態。然而,在替代性實施例中,根據追蹤實驗之特定要求需要,可關於每一條件碼旗標儲存不同數目個狀態。在針對每一條件碼旗標儲存三個不同狀態之實施例中,三個狀態包含:已追蹤;待追蹤;以及未追蹤。此等三個狀態可用於追蹤條件非分支指令。
在一些實施例中,三個不同狀態係藉由維護發送中表及當前CPSR表來追蹤,該發送中表具有針對每一CPSR之每一旗標之兩個狀態,該每一CPSR指示在由該資料處理裝置發出旗標時應追蹤哪些旗標,該當前CPSR表儲存針對當前CPSR之每一旗標之兩個狀態,該當前CPSR指示是否將條件指令作為條件指令追蹤資料項目來追蹤。
將瞭解到,追蹤電路系統可以若干不同方式持續追蹤與特定條件指令相關聯之條件碼旗標,但是在一些實施例中追蹤電路系統使用追蹤單元內之當前程式狀態暫存器表,來決定何時需要/期望條件結果追蹤資料項目並持續追蹤應追蹤該組條件碼旗標中之哪些條件碼旗標。
將瞭解到,可以若干不同方式中之任一方式使由資料處理裝置產生且由追蹤電路系統接收之指令觀察指示符與結果輸出指示符發生相關,以將已評估之條件結果鏈接至相應條件指令。然而,在一些實施例中,追蹤輸入介面自資料處理裝置接收與指令觀察指示符相對應之指令標籤及與結果輸出指示符相對應之結果標籤。
在一些實施例中由追蹤單元將追蹤單元自資料處理裝置收到的指令標籤及結果標籤輸出至診斷裝置。然而,在其他實施例中追蹤電路系統經配置以執行標籤至索引碼(key)轉換操作,在該標籤至索引碼轉換操作中,基於指令觀察指示符將與由資料處理裝置輸出之指令觀察指示符相關聯之指令標籤轉換為與藉由追蹤電路系統輸出之條件指令追蹤資料項目相對應之指令索引碼。類似地,將由資料處理裝置產生且與結果輸出指示符相關聯之結果標籤轉換為與由追蹤單元輸出至診斷裝置之條件結果追蹤資料項目相對應之結果索引碼。取決於儲存在追蹤電路系統內之當前程式狀態暫存器表中之狀態而執行此標籤至索引碼轉換操作。此標籤至索引碼轉換可用來產生具有已知次序之索引碼,例如序列索引碼,此舉允許追蹤之改良壓縮或減少,且因此允許減少之追蹤頻寬。
將瞭解到,追蹤電路系統可輸出條件指令追蹤資料項目,使得在自資料處理裝置收到的指令觀察指示符與由診斷電路系統輸出之條件指令追蹤資料項目之間存在一一對應。類似地,在由資料處理裝置輸出之結果輸出指示符與由追蹤電路系統輸出之條件結果追蹤資料項目之間可存在一一對應。然而,在一些實施例中,追蹤電路系統包含追蹤壓縮電路系統,該追蹤壓縮電路系統經配置以緩衝與收到的指令觀察指示符相對應之條件指令追蹤資料項目中之至少一者之輸出。在條件指令執行之出現(亦即,經緩衝的條件指令及追蹤資料項目之存在)可藉由診斷裝置,參考正由資料處理裝置執行的程式指令之程式映像(program image),自條件結果追蹤資料項目中之相應條件結果追蹤資料項目的藉由追蹤單元之輸出來推理之情況下,此可為有用的。此提供便利機制,經由該機制,減少由追蹤電路系統輸出且由診斷裝置接收之追蹤資料量,而不產生任何追蹤資訊之損失,此是因為診斷裝置能夠容易地(經由已執行的程式指令之映像)重建條件指令執行之出現,該條件指令執行之追蹤資料項目經緩衝。
將瞭解到,追蹤電路系統可緩衝與經緩衝的條件指令追蹤資料項目相對應的結果索引碼之輸出,但是在一些實施例中追蹤電路系統經配置以輸出用於經緩衝的條件指令追蹤資料項目之結果索引碼中之至少一者。輸出之結果索引碼由診斷電路系統用來推理經緩衝的條件指令追蹤資料項目之輸出。此提供便利且可靠的機制,除使用由診斷裝置維護之程式映像與該等診斷裝置收到的條件結果追蹤資料項目之間的相關外,亦可經由該機制來推理經緩衝的條件指令追蹤資料項目之存在。
並非所有條件指令皆具有相應的條件指令追蹤資料項目。一些條件指令追蹤資料項目並非直接輸出,而實情為藉由條件結果追蹤資料項目來推理。此為追蹤協定特徵,藉以將條件指令追蹤資料項目有效地輸出為與條件結果追蹤資料項目相對應之封包之部分。
將瞭解到,追蹤電路系統可持續追蹤條件指令執行中何者具有關聯追蹤資料,該關聯追蹤資料在以若干不同方式輸出至診斷電路系統之前經緩衝。然而,在一些實施例中,追蹤電路系統經配置以監視並維護緩衝記錄,該緩衝記錄指示收到的指令觀察指示符中何者具有由追蹤電路系統緩衝的相應條件指令追蹤資料項目之輸出。
與對於其他類型之有條件地執行之指令相比,條件指令追蹤資料項目之輸出之緩衝可更適合於一些有條件地執行之指令。維護緩衝記錄輔助追蹤電路系統管理使用條件指令追蹤資料項目之緩衝的情形,該緩衝記錄指示針對哪些指令觀察指示符緩衝相應條件指令追蹤資料項目之輸出。
將瞭解到,緩衝記錄可包含關於條件追蹤資料項目之緩衝的各種不同類型之資訊。然而,在一些實施例中緩衝記錄包含最近產生條件指令追蹤資料項目及最近輸出條件指令追蹤資料項目之記錄。此使得彼追蹤電路系統能夠針對每一條件結果追蹤資料項目決定若存在條件指令追蹤資料項目,則哪些條件指令追蹤資料項目可自相應條件結果追蹤資料項目隱含。
在具有緩衝記錄的一些實施例中,當執行索引碼比較以決定與條件指令追蹤資料項目相對應之索引碼是否大於與該最近輸出條件指令追蹤資料項目相對應之索引碼且小於或等於與最近產生條件指令追蹤資料項目相對應之索引碼時,決定已緩衝條件指令追蹤資料項目。
在一些此等實施例中,當索引碼值達到最大值時,索引碼值旋疊(wrap around),且索引碼比較遵照模運算(modulo arithmetic)。
在使用標籤至索引碼轉換操作之一些實施例中,執行此標籤至索引碼轉換操作,使得當追蹤電路系統(或追蹤單元)自資料處理裝置接收指令觀察指示符中之一者時,使用指令標籤來查找追蹤電路系統內之當前程式狀態暫存器表,以識別當前程式狀態暫存器中之適當當前程式狀態暫存器,該適當當前程式狀態暫存器儲存條件碼旗標之相關子集。對於記錄哪一組條件碼旗標與決定實際上是否執行特定條件指令有關而言,此舉提供當前程式狀態暫存器與給定條件指令之間的直接映射。
在使用指令標籤查找當前程式狀態暫存器表之一些此等實施例中,當前儲存在當前程式狀態暫存器表中之相關子集條件碼標記中沒有一個指示該等條件碼標記為待追蹤時,追蹤電路系統藉由將新索引碼值分配至任何新產生條件指令追蹤資料項目來執行標籤至索引碼轉換操作。另一方面,當前儲存在當前程式狀態暫存器表中之子集條件碼標記(亦即,狀態項)中之一或更多者指示該等條件碼標記為待追蹤時,將重複性索引碼值分配至新產生條件指令追蹤資料項目,該重複性索引碼值重複最近分配之索引碼值。此提供匹配條件追蹤資料項目與相應結果追蹤資料項目之便利且有效方式。
在使用指令標籤來查找當前程式狀態暫存器表之一些此等實施例中,追蹤電路系統包含追蹤壓縮電路系統,該追蹤壓縮電路系統經配置以緩衝條件指令追蹤資料項目中之至少一者之輸出,該等條件指令追蹤資料項目具有新索引碼值,該等新索引碼值之出現可由診斷裝置自條件結果追蹤資料項目中之相應條件結果追蹤資料項目的來自追蹤單元之輸出來推理。另一方面,不緩衝與重複性索引碼值中之一或更多者相對應之條件指令追蹤資料項目。此確保使用索引碼來執行條件指令與關聯條件結果之間的相關保持可靠。若僅在索引碼值與特定壓縮條件指令追蹤資料項目之間可存在獨特對應之情況下使用條件指令追蹤資料項目之輸出之緩衝,則此防止收到的條件結果與所推理條件指令之間的不正確相關。
在一些此等實施例中,彼追蹤電路系統經配置以將條件結果追蹤資料項目與是否允許一或更多相應條件指令追蹤資料項目由診斷工具推理之指示一起供應至診斷工具。此確保診斷工具具有關於在何處可允許推理一或更多條件指令之存在之清楚指導。
在經配置以緩衝條件指令追蹤資料項目但是輸出與彼等經緩衝條件指令追蹤資料項目相對應之關聯結果索引碼之一些實施例中,若追蹤單元接收分支誤預測指示,則修改由追蹤電路系統執行之標籤至索引碼轉換操作。此允許系統適應分支誤預測事件,而無需包含在獨立產生之條件指令追蹤資料項目與條件結果追蹤資料項目之間執行的相關之精確度。
在一些實施例中,若相應條件結果索引碼與當前由追蹤壓縮電路系統之緩衝器緩衝之條件指令索引碼相同,則允許推理一或更多條件指令追蹤資料項目。
將瞭解到,可藉由使用獨立輸出之條件指令追蹤資料項目與條件結果追蹤資料項目,而以與條件非分支指令相同之方式來追蹤條件分支指令。然而,在一些實施例中,追蹤電路系統經配置以自追蹤單元之追蹤輸入介面接收與條件或非條件分支指令及載入/儲存指令有關之追蹤資料,且追蹤電路系統經配置以產生第一類型之路標點指示符及第二類型之路標點指示符,該第一類型之路標點指示符表示相應指令與已取得之條件/非條件分支或載入/儲存指令相對應,該第二類型之路標點指示符表示相應指令與未取得條件分支相對應。使用「路標點」且以與追蹤條件非分支指令之方式不同的方式獨立地追蹤條件分支及載入/儲存指令之能力提供追蹤機制中之額外靈活性。
在一些實施例中,該追蹤單元進一步包含追蹤結果組合電路系統,該追蹤結果組合電路系統用於接收由該追蹤電路系統產生之該等條件結果追蹤資料項目且用於產生該等條件結果追蹤資料項目中之至少一些條件結果追蹤資料項目之壓縮表示並儲存該等壓縮表示,且該追蹤結果組合電路系統組合該等壓縮表示中之至少一些壓縮表示,使得將追蹤資料項目之多個壓縮表示輸出為組合追蹤資料項目。
由壓縮表示或符記來表示條件結果追蹤資料項目可為有利的,其中最常用項目係由較短符記表示。以此方式,若存在常常發生之項目,則此等項目可由短符記表示,且因為追蹤資料項目具有特定大小,所以多個符記可經組合以得以輸出為單一組合追蹤資料項目,進而減少輸出之追蹤資料而非傳輸之資訊。
在一些實施例中,該追蹤結果組合電路系統經配置以產生並儲存該等壓縮表示且在收到無法由該追蹤結果組合電路系統壓縮之條件結果追蹤資料項目之後將追蹤資料項目之該等儲存之壓縮表示輸出為組合追蹤資料項目,然後輸出無法壓縮之該條件結果追蹤資料項目。
為了能夠有效地將壓縮表示組合於組合追蹤資料項目內,若在輸出之前儲存若干該等壓縮表示,使得可更好地選擇哪些符記來組合且進行更有效率的組合,則此為便利的。然而,因為需要維持輸出之次序,所以當接收無法由符記表示之項目時,則需要輸出儲存之項目,類似地,若緩衝器變滿,則將需要藉由輸出儲存之資料而清空該緩衝器。
在一些實施例中,追蹤電路系統經配置以自追蹤輸入介面接收與條件或非條件分支指令及載入/儲存指令有關之追蹤資料,且追蹤電路系統經配置以產生第一類型之路標點指示符及第二類型之路標點指示符,該第一類型之路標點指示符表示相應指令與預測為已取得之條件分支、預測為已取得之非條件分支或載入/儲存指令相對應,該第二類型之路標點指示符表示相應指令預測為未取得條件分支。
在使用路標點指示符來指示與條件分支指令及載入/儲存指令有關之追蹤資料之一些此等實施例中,指令觀察指示符係由資料處理裝置用來指示條件指令而非條件分支指令之執行,且追蹤電路系統經配置以在相同追蹤資料串流中輸出與第一類型之路標點指示符及第二類型之路標點指示符中之至少一者之指令觀察指示符相對應的條件指令追蹤資料項目。在相同追蹤資料串流中輸出條件指令追蹤資料項目及路標點指示符兩者提供便利機制,經由該機制區分條件非分支指令與其他條件指令。此外,由於條件分支指令通常比條件非分支指令易於追蹤,因此提供用於條件分支指令之追蹤的特定機制及用於條件非分支指令之追蹤的不同、更適當機制為有意義的。
在一些實施例中,結果輸出指示符係由資料處理裝置用來指示條件指令而非條件分支指令之執行,且追蹤電路系統經配置以在相同追蹤資料串流中輸出與結果輸出指示符相對應之條件結果追蹤資料項目及第一類型之路標點指示符與第二類型之路標點指示符中之至少一者。
在一些實施例中,指令觀察指示符係由該資料處理裝置用來指示條件分支指令之執行,且結果輸出指示符係由資料處理裝置用來指示條件指令而非條件分支指令之執行,且其中追蹤電路系統經配置以在相同追蹤資料串流中輸出與指令觀察指示符相對應之條件指令追蹤資料項目、與結果輸出指示符相對應之條件結果追蹤資料項目及第一類型之路標點指示符與第二類型之路標點指示符中之至少一者。
在一些此等實施例中,追蹤電路系統經配置以輸出其中相應指令索引碼為重複性索引碼值之與條件指令而非條件分支相對應的第一類型之條件指令追蹤資料項目及其中相應指令索引碼為新索引碼值之與條件指令而非條件分支相對應的第二類型之條件指令追蹤資料。
在一些實施例中,追蹤電路系統經配置以輸出其中相應指令索引碼為重複性索引碼值之與條件分支相對應的第一類型之條件指令追蹤資料項目及其中相應指令索引碼為新索引碼值之與條件分支相對應之第二類型的條件指令追蹤資料。
將瞭解到,第一類型之路標點指示符及第二類型之路標點指示符可由追蹤電路系統以與分別產生該第一類型之路標點指示符及該第二類型之路標點指示符相同之方式獨立地輸出,或者任何類型之路標點指示符(相同或不同)可以任何次序序連於一起,以形成封包。然而,在一些實施例中,追蹤電路系統經配置以序連複數個路標點指示符,以形成用於輸出至該診斷裝置之序連路標點指示符,該序連路標點指示符包含以下中之一者:複數個該等第一類型之路標點指示符;複數個該等第二類型之路標點指示符;以及不同類型之路標點指示符之組合,該等不同類型之路標點指示符包含該第一類型之路標點指示符中之至少一者及該第二類型之路標點指示符 中之至少一者。此舉可減少與路標點指示符相關聯之追蹤頻寬,而未折衷追蹤資料串流之資訊含量。
類似地,在一些實施例中,追蹤電路系統經配置以序連複數個條件指令追蹤資料項目,以形成序連的條件指令追蹤資料項目且代替輸出該複數個條件指令追蹤資料項目而將序連的條件指令追蹤資料項目輸出至診斷裝置。另一方面,此舉提供由與條件指令之追蹤相關聯之追蹤電路系統輸出之追蹤資料量之減少,而未過度折衷追蹤資料串流之總資訊含量。在一些此等實施例中,序連的條件指令追蹤資料項目相對於原本將必須輸出之複數個條件指令追蹤資料項目具有減少之追蹤頻寬。
將瞭解到,追蹤電路系統可在與序連的路標點指示符完全分離之追蹤資料串流中輸出序連的條件指令追蹤資料項目。然而,在一些實施例中,追蹤電路系統經配置以在相同追蹤資料串流中輸出至少一個序連的條件指令追蹤資料項目及至少一個序連的路標點指示符。
將瞭解到,對於管理追蹤資料之輸出而言,追蹤電路系統可以若干不同方式處理指令執行之取消或臆測執行或誤預測指令之未完成,該追蹤資料與此等指令相關聯。然而,在一些實施例中,追蹤電路系統經配置以輸出重新對準的追蹤資料項目。在一些此等實施例中,回應於自資料處理裝置收到分支誤預測指示符而輸出重新對準的追蹤資料項目。在其他實施例中,回應於自資料處理裝置收到異常中止指示符而輸出重新對準的追蹤資 料項目。在其他實施例中,回應於自資料處理裝置收到異常指示符而輸出重新對準的追蹤資料項目。在其他實施例中,回應於自資料處理裝置收到取消指示符而輸出重新對準的追蹤資料項目。以此方式使用重新對準的追蹤資料項目提供便利且快速的機制,經由該機制,診斷裝置可持續追蹤何時應執行收到的追蹤資料之過濾,以考慮臆測執行及/或分支誤預測及/或亂序執行。
將瞭解到,可將本發明技術應用於任何資料處理裝置中,本發明技術回應於(在與收到條件指令觀察指示符可能不同的處理週期中)自資料處理裝置收到條件結果輸出指示符,而獨立地輸出條件指令追蹤資料項目與條件結果追蹤資料項目,而不管該等資料處理裝置是否能夠臆測或亂序執行。然而,在一些實施例中,追蹤電路系統經配置以自資料處理裝置接收取消指示符,該取消指示符指示已取消一或更多已臆測執行且已追蹤的指令,且追蹤電路系統經配置以回應於取消指示而產生重新對準的追蹤項目。由追蹤電路系統輸出之重新對準的追蹤項目通知診斷工具哪些條件指令追蹤資料項目與取消的指令相對應及應廢除此等條件指令追蹤資料項目。
在追蹤單元經配置以輸出重新對準的追蹤資料項目之一些此等實施例中,追蹤電路系統經配置以輸出任何條件指令追蹤資料項目,該等條件指令追蹤資料項目在輸出重新對準的追蹤資料項目之前已接收但是尚末輸出。此避免由於某些條件指令追蹤資料項目之緩衝或在產生 之時間橫跨重新對準的追蹤資料項目之輸出的情況下由於在不同時間產生之條件指令追蹤資料項目之誤導引的序連連接而出現錯誤。
在一些實施例中,追蹤電路系統經配置以輸出任何路標點追蹤資料項目,該等路標點追蹤資料項目在輸出重新對準的追蹤資料項目之前已接收但尚未輸出。
在一些實施例中,其中追蹤電路系統經配置以自該追蹤輸入介面接收與條件分支指令及載入/儲存指令有關之追蹤資料,且其中該追蹤電路系統經配置以產生路標點指示符,該路標點指示符表示相應指令與條件分支或載入/儲存指令相對應,且其中指令觀察指示符係由資料處理裝置用來指示條件指令而非條件分支指令之執行,且其中追蹤電路系統經配置以在相同追蹤資料串流中輸出與指令觀察指示符相關聯之該條件指令追蹤資料項目,及輸出路標點指示符,該追蹤電路系統經配置以回應於該分支誤預測指示符而輸出重新對準的追蹤資料項目,使得在收到該分支誤預測指示符之後但是在輸出隨後發生條件指令追蹤資料項目或路標點指示符之前輸出重新對準的追蹤資料項目。然而,在分支誤預測指示符之前輸出重新對準的追蹤資料項目為有效替代方式。
在其他實施例中,追蹤電路系統經配置以自追蹤輸入介面接收與條件分支指令及載入/儲存指令有關之追蹤資料,且其中追蹤電路系統經配置以產生路標點指示符,該路標點指示符表示相應指令與條件分支或載入/ 儲存指令相對應,且其中該指令觀察指示符係由該資料處理裝置用來指示條件指令而非條件分支指令之執行,且其中該追蹤電路系統經配置以在相同追蹤資料串流中輸出與指令觀察指示符相關聯之條件指令追蹤資料項目,及路標點指示符,追蹤電路系統經配置以回應於異常指示符而輸出重新對準的追蹤資料項目,使得在收到該異常指示符之後但是在輸出隨後發生的條件指令追蹤資料項目或路標點指示符之前輸出重新對準的追蹤資料項目。
在一些實施例中,取決於當前程式狀態暫存器表之內容而為該至少一個指令觀察指示符之子集產生條件指令追蹤資料項目。
根據第二態樣,本發明提供一種資料處理裝置,該資料處理裝置包含:資料處理電路系統,該資料處理電路系統用於回應於程式指令之執行而執行資料處理操作;以及追蹤輸出介面,該追蹤輸出介面經配置以將指令觀察指示符及結果輸出指示符獨立地輸出至追蹤單元,該指令觀察指示符指示條件指令之執行,該結果輸出指示符指示回應於該條件指令之執行藉由該資料處理電路系統對結果之輸出。
提供能夠輸出與條件指令相關聯之指令觀察指示符且獨立地輸出相應結果輸出指示符之資料處理電路系統促進分離的條件指令之執行之追蹤與相應條件結果之輸出之追蹤。此提供便利機制,經由該機制追蹤諸如條件非 分支指令之條件指令之執行,且此藉由使條件指令執行與相應條件結果能夠得以獨立地追蹤而減少緩衝要求。
在資料處理裝置之一些實施例中,在第一處理週期中由該資料處理裝置輸出指令觀察指示符,且在第二處理週期中由該資料處理裝置輸出該結果輸出指示符,該第二處理週期不同於該第一處理週期。
在一些此等實施例中,資料處理電路系統經配置以執行程式指令之序列之臆測執行及亂序執行中之至少一者。分離的條件指令執行之追蹤與條件結果之輸出之追蹤在臆測執行及亂序執行由於在此等系統中使條件指令與相應條件結果發生相關之複雜性而為可能事件之情況下尤其有用。
根據第三態樣,本發明提供一種診斷裝置,該診斷裝置經配置以接收追蹤資料串流,該追蹤資料串流包含條件指令追蹤資料項目及條件結果追蹤資料項目,其中在該收到的追蹤資料串流中該等條件結果追蹤資料項目不同於該等條件指令追蹤資料項目,該診斷裝置包含:診斷電路系統,該診斷電路系統經配置以參考由該資料處理裝置執行之程式指令之映像來處理該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,以產生該追蹤資料串流,該診斷電路系統經配置以使用程式指令之該映像來決定由該資料處理裝置執行之程式指令。
提供能夠接收在收到的追蹤資料串流中不同於條件指令追蹤資料項目之條件結果追蹤資料項目的診斷裝置提 供條件指令之更有效追蹤。此外,即使在條件指令追蹤資料項目與條件結果追蹤資料項目之間不存在一一對應之狀況下,亦提供診斷電路系統使用由資料處理裝置執行之程式指令之映像且決定由資料處理裝置執行之程式指令之能力。此藉由向診斷裝置提供經由參考程式指令之映像而分析條件結果追蹤資料項目來演繹條件指令追蹤資料項目之存在的能力,而改良診斷裝置之能力,以處理壓縮的追蹤資料串流。
在根據本發明之診斷裝置之一些實施例中,診斷裝置經配置以自追蹤單元接收追蹤資料串流中之路標點追蹤項目,該等路標點追蹤項目各自指示分支指令、載入指令及儲存指令中之一者已由資料處理裝置執行。由診斷裝置收到的追蹤資料串流另外包含條件指令追蹤資料項目及條件結果追蹤資料項目,且路標點追蹤項目及條件指令追蹤資料項目之接收次序不同於相應路標點指令及條件指令之執行次序。
在一些此等實施例中,診斷裝置包含用於緩衝收到的路標點追蹤項目之路標點緩衝器及用於緩衝收到的條件指令追蹤項目之條件指令緩衝器。此使得診斷裝置更簡單地驗證路標點追蹤項目及條件指令追蹤資料項目之適當次序,且使接收次序與由診斷電路系統分析之程式指令之映像隱含之次序相符。
在一些此等實施例中,診斷電路系統經配置以藉由參考程式指令映像獨立地分析路標點緩衝器中之項及條件 指令緩衝器中之項,而排列接收次序,以獲得執行次序。
在根據本發明技術之診斷裝置之一些實施例中,若診斷電路系統遭遇程式映像中之條件指令,但是條件指令追蹤項目當前未出現於條件指令緩衝器中,則診斷電路系統經配置以延遲程式映像之相應執行線程之進一步處理,直至條件追蹤項目出現於條件指令緩衝器中為止。此確保程式映像中之指令序列與由診斷電路系統收到的資訊之間的有效相關。此為診斷電路系統提供靈活性,以處理壓縮追蹤資料串流之接收及分析,必須參考程式映像重建該壓縮追蹤資料串流之追蹤資訊中之一些追蹤資訊。
根據第四態樣,本發明提供一種基於自資料處理裝置收到的資訊產生追蹤資料之項目之方法,該等追蹤資料之項目指示該資料處理裝置之處理活動,該方法包含:自該資料處理裝置接收至少一個指令觀察指示符及至少一個結果輸出指示符,該至少一個指令觀察指示符指示條件指令之執行,該至少一個結果輸出指示符指示執行該至少一個條件指令之結果藉由該資料處理裝置之輸出;處理該至少一個指令觀察指示符及該至少一個結果輸出指示符,且經配置以自該至少一個指令觀察指示符及該至少一個結果輸出指示符產生相應條件指令追蹤資料項目及條件結果追蹤資料項目,且獨立地輸出該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,從 而賦能藉由診斷裝置對條件指令與相應條件結果之分離追蹤分析。
根據第五態樣,本發明提供一種在資料處理裝置內產生追蹤資料之項目之方法,該等追蹤資料之項目指示資料處理裝置之處理活動,該方法包含:回應於程式指令之執行而執行資料處理操作;以及獨立地將指令觀察指示符及結果輸出指示符輸出至追蹤單元,該指令觀察指示符指示條件指令之執行,該結果輸出指示符指示回應於該條件指令之執行而藉由該資料處理電路系統對結果之輸出。
根據第六態樣,本發明提供一種用於處理追蹤資料之診斷方法,該追蹤資料由資料處理裝置產生,該方法包含:接收追蹤資料串流,該追蹤資料串流包含條件指令追蹤資料項目及條件結果追蹤資料項目,其中在該接收到的追蹤資料串流中該等條件結果追蹤資料項目不同於該等條件指令追蹤資料項目;參考由該資料處理裝置執行之程式指令之映像來處理該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,以產生該追蹤資料串流;以及使用程式指令之該映像來執行該等條件指令追蹤資料項目與該等條件結果追蹤資料項目之間的相關,以決定由該資料處理裝置執行之處理步驟。
在隨附申請專利範圍中定義本發明之至少實施例之進一步態樣及特徵。附屬項之特徵在適當時可與獨立項之特徵組合,且附屬項之該等特徵可處於除申請專利範圍 中明確闡述之彼等組合之外的組合中。
在結合隨圖閱讀說明性實施例之以下詳細描述後,本發明之以上及其他目的、特徵及優點將變得更加顯而易見。
第1圖示意性地圖示根據本發明之實施例之資料處理系統。資料處理系統包含:指令記憶體90;中央處理單元(central processing unit;CPU)100;嵌入式追蹤巨集單元(ETM)180,該嵌入式追蹤巨集單元180含有追蹤電路系統;以及診斷電路系統196,該診斷電路系統196用於分析嵌入式追蹤巨集單元180之輸出。
中央處理單元100包含:指令提取單元110;管線120,該管線120包括解碼階段122;一組暫存器130;算術邏輯單元(arithmetic logic unit;ALU)140;一組當前程式狀態暫存器(CPSR)150;記憶體介面160;指令輸出介面172;以及結果輸出介面174。
指令提取單元110自儲存於指令記憶體90中之電腦程式92提取指令且將彼等提取之指令供應至管線120之解碼階段122。第1圖中所示之CPU中央處理單元100為ARM管線式資料處理器。管線120允許與程式指令之執行相關聯之若干操作得以實質上同時而非以串列方式進行,且因此增加指令之傳輸量。由指令提取單元110執行之指令提取階段可視為管線120之組成部分。管線120 之解碼階段122涉及來自暫存器組130之暫存器之解碼,該等暫存器待用於最近已提取之特定指令之執行。CPU 100經配置以執行程式指令之臆測執行及亂序執行。
繼解碼階段之後,指令進行至管線之執行階段(未圖示),其中讀取來自暫存器組130之暫存器且使用算術邏輯單元140來執行指令。管線120之最後階段涉及將指令執行之一或更多結果寫回暫存器組。
CPU 100包含暫存器組130,該暫存器組130具有複數個暫存器,每一暫存器皆具有固定長度。暫存器組130併入一組通用暫存器供程式指令之執行期間使用。應注意,諸如算術運算、比較、邏輯運算及資料移動操作之ARM資料處理指令僅在暫存器上而不在記憶體中工作,此是因為ARM架構為載入/儲存架構。專用程式計數器(未圖示)亦包含於暫存器組130中,該專用程式計數器索引當前正提取之程式指令。包括在CPU內之進一步暫存器為一組專用當前程式狀態暫存器(current program status register;CPSR)150及一組專用保存程式狀態暫存器(saved program status registers;SPSR)(未圖示)。在第1圖實施例中,暫存器組130之暫存器R14為鏈接暫存器,而暫存器R15為程式計數器。特定指令允許對當前程式狀態暫存器(CPSRs)150之存取。當前程式狀態暫存器150各自包含一組四個條件碼旗標,亦即條件碼旗標Z、條件碼旗標V、條件碼旗標C及條件 碼旗標M。下文將參閱第2圖更詳細地描繪此等條件碼旗標。
除四個條件碼旗標之外,CPSR 150進一步包含「模式位元」,該等模式位元定義當前處理器模式;及中斷禁止位元。暫存器組130之鏈接暫存器R14儲存用於執行所謂的「具有鏈接之分支(Branch with Link)」程式指令時之返回位址。返回位址係由R15中之程式計數器計算。為使程式之執行流能夠自鏈接分支返回,將鏈接暫存器R14之內容複製至程式計數器暫存器R15中。儲存在CPSR中之旗標Z、旗標V、旗標C及旗標M之當前值與用來決定是否應執行有條件地執行之指令之某些條件相對應。雖然大多數指令集僅允許分支指令得以有條件地執行,但是ARM架構允許許多指令得以有條件地執行,此是因為許多ARM指令含有條件欄位,該條件欄位決定CPU 100是否將執行該許多指令。
CPSR 150之內容用來評價是否已滿足由指令之條件欄位規定之條件。有條件地執行任何種類之指令之能力允許不具有分支的非常密集的內嵌碼。消除對程式碼中包括許多分支指令之需要使得指令執行更有效率,此是因為分支事實上通常簡單地使管線120暫停。不執行若干條件指令(其中未滿足規定條件)之時間損失通常小於否則將需要的分支指令或次常式呼叫之額外負擔。為有條件地執行指令,簡單地以適當條件後固定指令。舉例而言,在ARM指令集中,非條件相加(ADD)指令 採取形式「ADD r0、r1、r2」,但是為了在設定零旗標Z之條件上有條件地執行此非條件相加指令,可將此指令改變為「ADDEQ r0、r1、r2」。記憶體介面160用來自記憶體載入資料並將資料儲存至記憶體。
如第1圖中所示,自管線120之解碼階段122至CPU 100之指令輸出介面172且至ETM 180之指令輸入介面182提供第一路徑123。通常,自處理器之解碼階段122追蹤條件指令,而自ALU 140追蹤相應條件結果。第二路徑152將CPU 100之CPSR 150連接至CPU 100之結果輸出介面174且接著連接至ETM 180之結果輸入介面184。亦存在將CPSR 150連接至管線120之路徑。因此,可看出,CPU 100具有用於條件指令之一個輸出介面172及用於相應條件結果之另一不同輸出介面174。將瞭解到,並非所有指令將皆為條件指令,但是第1圖之實施例尤其關注於說明條件指令之執行及追蹤。
嵌入式追蹤巨集單元180為追蹤單元,該追蹤單元為CPU 100提供即時指令追蹤及資料追蹤。ETM 180產生追蹤資訊,該追蹤資訊由診斷電路系統196用來重建儲存在指令記憶體90中之電腦程式92之所有或部分電腦程式之執行。ETM 180包含指令介面182及結果介面184兩者,該指令介面182用於自CPU 100接收條件指令觀察指示符,該結果介面184用於自CPU 100接收相應條件結果指示符。指令之指示將通常並不指示該指令確實將執行,此是因為指示可自管線之早期階段獲得,且若 指令將完全執行,則該指示在許多稍後之處理週期之前將並非已知。CPU 100獨立地經由指令介面172輸出條件指令觀察指示符且經由追蹤結果介面174輸出條件結果輸出指示符。在CPU 100之第一處理週期中輸出給定條件指令觀察指示符,而在CPU之第二不同處理週期中輸出相應條件結果輸出指示符。因此,在追蹤電路系統180之指令介面182處收到條件指令觀察指示符之時序不同於在結果介面184處收到相應條件結果輸出指示符之時序。CPU 100輸出條件指令觀察指示符及條件結果輸出指示符兩者以及關聯「標籤」,該等關聯「標籤」識別與所論述之條件指令相關聯之CPSR 150內之特定暫存器。
對於每一條件指令,相應條件結果輸出指示符含有有效負載,該有效負載允許診斷電路系統196決定條件指令之通過/失敗狀態。此有效負載為以下中之一者:1.通過/失敗結果;2.局部CPSR值;3.全CPSR值(應注意,一些實施例將永遠不會輸出局部CPSR值);以及4.一些其他輸出。
應注意,並非所有條件指令皆具有相應追蹤輸出,實情為,僅條件指令之子集具有相應追蹤輸出(條件結果輸出指示符)。若由CPU指令介面172輸出與給定條件指令相對應之指令觀察指示符,則ETM 180產生與彼條件指令有關之所謂的「c原子」,且c原子與條件指令之追蹤輸出(由CPU 100輸出之指令觀察指示符)相對應。當相應條件結果輸出指示符經由CPU之結果輸出介面174輸出至結果介面184時,此表示為「c結果」。因此,ETM指令介面182接收條件指令觀察指示符及該等條件指令觀察指示符之相應標籤(通常但並非始終識別關聯的CPSR 150暫存器),而ETM結果介面184接收條件結果輸出指示符及該等條件結果輸出指示符之相應標籤。
ETM 180包含指令索引碼翻譯電路系統186,該指令索引碼翻譯電路系統186自ETM指令介面182接收輸入且經配置以將條件指令觀察指示符及相應標籤轉換為c原子。類似地,ETM 180包含結果索引碼翻譯電路系統188,該結果索引碼翻譯電路系統188連接至ETM結果介面184且經配置以將自結果介面184收到的條件結果輸出指示符及相應標籤轉換為c結果及相應索引碼。由ETM指令介面182收到的條件指令觀察指示符包含標籤及條件類型兩者,該標籤表示CPU之關聯CPSR暫存器,該條件類型諸如等於(equal to;EQ)、負號(minus;MI)或小於(less than;LT)。經由ETM結果介面184收到的條件結果輸出指示符包含關聯標籤(亦通常表示CPU 100之關聯CPSR暫存器)及結果有效負載。標籤系統係由CPU 100用來記錄哪一個指令觀察指示符(c原子)與哪一個結果輸出指示符(c結果)相對應。指令索引碼翻譯電路系統186及結果索引碼翻譯電路系統188將核心標籤轉換為追蹤索引碼,此舉藉由使用由核心標籤索引之追蹤索引碼之表而遵循預訂序列。由於當條件結果輸出指示符評估得太遲時追蹤索引碼可對撞為可能的,因此使用特殊索引碼來解決此問題。當將索引碼更名為序列索引碼時,有可能下一序列索引碼為與結果輸出指示符(c結果)尚未輸出之較早指令執行指示符(c原子)相同的值。在此狀況下,不使用序列索引碼,此是因為如此做將產生兩個結果輸出指示符,該兩個結果輸出指示符具有用於不同指令執行指示符之相同索引碼。實情為,使用特殊索引碼,該特殊索引碼具有從未用作序列索引碼之值。特殊索引碼與標籤之間存在1:1映射。舉例而言,若存在8個標籤,則可存在16個序列索引碼及8個特殊索引碼。
將指令索引碼翻譯電路系統186之輸出供應至第一追蹤產生電路系統190,該第一追蹤產生電路系統190將進入的c原子及相應索引碼轉換為指令追蹤資料之封包。類似地,結果索引碼翻譯電路系統188將c結果及相應索引碼供應至第二組追蹤產生電路系統192,該第二組追蹤產生電路系統192產生條件結果追蹤封包作為輸出。將條件指令追蹤封包(包含封包化c原子及關聯索引碼)及條件結果追蹤封包(包含封包化c結果及相應索引碼)兩者輸出至先進先出(First-in-first-out;FIFO)194供儲存。將儲存在FIFO 194中之資料供應至診斷電路系統196。兩組索引碼翻譯電路系統186、188有效地將核心標籤(識別用於條件指令及結果之關聯CPSR暫存器)翻譯為更名操作類型之追蹤電路系統索引碼。下文將參閱一些特定實例更詳細地描繪此狀況。
診斷電路系統196使用收到的追蹤資料來重建CPU 100中之執行事件。為如此做,診斷電路系統196存取與電腦程式92之複本相對應之電腦程式映像199,該電腦程式92之指令正由CPU 100執行。使用此程式映像199允許診斷電路系統分析程式碼,以決定例如分支指令發生在指令執行之序列中之何處。在收到追蹤資料之後,診斷電路系統196將條件指令追蹤資料(與由CPU 100輸出之指令觀察指示符相對應)儲存於c原子FIFO 197中且將尤其與條件分支指令及條件載入/儲存指令有關之追蹤資料儲存於路標點FIFO 198中。如下文將論述的,「c原子」用來追蹤除條件分支之外的所有條件指令,且「路標點」用來追蹤條件分支或非條件載入/儲存指令。然而,在一些狀況下,例如對於條件載入/儲存而言,單一指令為路標點及c原子兩者。
如第1圖中所示,ETM 180包含相應CPSR表193,且診斷電路系統196亦包含CPSR表200。此等兩個CPSR表,亦即CPSR表193、CPSR表200用來在亂序執行指令時追蹤應追蹤哪些CPSR結果。在一些情況下,將追蹤多個CPSR值,以便遵循單一旗標設定指令。在第2圖中更詳細地說明了示例性CPSR表193。應注意,CPSR表193(參見第2圖)包含CPSR狀態項(或CPSR旗標標記),而非如由處理器使用之條件碼旗標。
如第2圖中所示,CPSR表193經配置以儲存與每一CPSR條件碼旗標有關之二位元(三個狀態)值。四個CPSR條件旗標為Z旗標、V旗標、C旗標及N旗標。Z旗標指示來自ALU旗標之零結果;V旗標指示發生在指令執行期間之ALU操作溢出;C旗標指示ALU操作產生進位,例如,結果包含超過暫存器寬度之若干位元;且N旗標指示存在來自ALU旗標之負結果(負號)。
在第2圖之CPSR表193中,存在與三個不同狀態相對應之標誌。狀態如下:
1. 未追蹤且未標記之位元值00;
2. 待追蹤且已標記之位元值01;以及
3. 已追蹤且已標記之位元值11。
儲存在ETM之CPSR表193中之狀態係由指令索引碼翻譯電路系統186及結果索引碼翻譯電路系統188用來決定在標籤至索引碼轉換過程中何時應產生並應用序列中之下一追蹤索引碼。如前所述,與條件指令及條件結果兩者一起輸出之核心標籤通常識別正由彼特定指令使用之特定CPSR,在此狀況下為以下六個可能CPSR暫存器中之一者:CPSR A、CPSR B、CPSR C、CPSR D、CPSR E或CPSR F。此外,規定用於六個CPSR暫存器中之每一者之四個可能的旗標狀態(Z、V、C或N)中之一者。亦儲存於表中的係在產生指令追蹤資料時使用之索引碼值。當產生結果追蹤資料時,在表中進行查找以決定待使用之索引碼。
第3A圖為表,該表示意性地說明四個程式指令之序列之按次序執行,該四個程式指令包括三個不同條件相加指令:ADDEQ;ADDNE及ADDVS。第3A圖至第3D圖之實例展示在CPSR表中追蹤兩個不同CPSR條件碼旗標(亦即,旗標標記),該CPSR表僅儲存與每一CPSR值有關之單一狀態。
在第3A圖之表中,執行之第一指令為比較指令CMP,該比較指令CMP導致所有標誌位元清除為零,此是因為比較為一運算,後續條件指令取決於該運算之結果。亦即,後續三個條件指令之執行或其他方面取決於CMP之執行結果。第一條件指令為ADDEQ指令,該ADDEQ指令為取決於比較是否產生精確等式之加法運算。此條件指令使用CPSR之Z旗標,且因此在執行相加ADDEQ指令之後將CPSR表中之Z標誌設定為一。因此,追蹤包括Z旗標之CPSR。接下來,執行ADDNE指令,該ADDNE指令亦使用Z旗標,此是由於該ADDNE指令與僅在比較之結果為不等式時才執行之相加運算相對應。因此,在由CPU 100(參見第1圖)執行ADDNE指令之後,標誌位元未改變。最後,執行ADDVS指令,該ADDVS指令使用與溢出之CPSR相對應之V旗標,以便在執行此指令時,將V標誌設定為一且Z標誌保持設定。因此,在第3A圖之四個指令之執行之結尾,追蹤包括V旗標及Z旗標兩者之CPSR 150。
第3B圖、第3C圖及第3D圖為表,該等表展示當執行與第3A圖之表中完全相同的四個指令之序列但是以亂序而非按次序執行時追蹤哪些CPSR值及產生哪些c結果索引碼。在此狀況下,存在取決於執行CPU 100之時序及能力之三個不同可能結果。在第3B圖之表中,條件結果為快速可用的,且因此將不同追蹤索引碼用於第二個c原子。所有三個相加條件指令在第3B圖狀況中具有相同條件指令標籤,此是因為該三個相加條件指令是否有條件地執行皆取決於相同比較指令CMP(四個指令之序列中之第一指令)之結果。當遭遇第一個條件相加指令ADDEQ時產生c原子索引碼「0」,此是因為此取決於Z旗標。並未針對後續ADDNE指令產生新c原子索引碼,此是因為此取決於與先前指令相同之Z旗標。然而,將第二c原子索引碼「1」分配至ADDVS指令,此取決於不同CPSR旗標,亦即,V旗標。第一條件指令(ADDEQ)指令之條件結果在緊隨ADDEQ之解碼後的週期中變為可用,如第3B圖表中所示,且將此條件結果標籤A轉換為C結果索引碼零,該C結果索引碼零之有效負載為Z旗標。ADDVS指令之條件結果在緊隨解碼指令之後的週期中變為可用,且此舉導致產生第二c結果索引碼,該第二c結果索引碼具有值「1」及有效負載V旗標。
第3C圖圖示與第3A圖相同之四個指令在亂序處理器中之執行,其中比第3B圖之狀況下花費更長的時間來評估條件結果(由於CPU 100之能力)。在此狀況下,第一條件結果標籤在解碼ADDVS指令(四個指令之序列中之第四個指令)之後的週期中輸出。因此,在此狀況下,將相同c結果索引碼「0」用於與ADDEQ指令(使用Z旗標)相對應之c原子及與ADDVS指令(使用V旗標)相對應之c原子兩者,此是因為該等c原子將共用單一c結果索引碼「0」,該單一c結果索引碼「0」具有有效負載Z旗標及V旗標兩者。
第3D圖之表為第3A圖之指令序列之亂序執行結果之最終實例。在此狀況下,在由CPU 100完全驗證四個指令(CMP、ADDEQ、ADDNE、ADDVS)之序列以外的兩個更遲指令(CMP及SUBEQ)之後,條件結果在亂序處理器中變為可用。用於SUBEQ指令之條件指令標籤為「B」,而用於三個先前條件指令(ADDEQ、ADDNE、ADDVS)之條件指令標籤為「A」,從而反映出此等三個指令所取決之條件為第一CMP而SUBEQ所取決之條件為第二CMP之事實。可見,條件結果標籤B在條件結果標籤A之前,且因此在驗證具有條件指令標籤A之先前三個條件指令之前完全驗證條件指令SUBEQ。應注意,每一次解碼CMP指令(其他條件指令所取決之指令),皆存在對CPSR之改變且因此存在對條件指令標籤之相應改變。因此,在第3D圖之表中,用於條件指令標籤「A」之結果在用於條件指令標籤「B」之條件結果之後(亦即,在條件指令標籤「B」之條件結果之後續處理週期中)到達。條件結果B之有效負載為Z旗標,而條件結果標籤A之有效負載為Z旗標及V旗標兩者。
根據本發明之實施例之條件指令與條件結果之分離追蹤賦能追蹤結果之較佳傳輸量。此根據第3D圖為顯而易見的,此是因為在先前已知系統中將必須緩衝與第3D圖之表中所有五個條件指令相關聯之追蹤資料項目,直至準備好輸出條件結果標籤「A」為止。藉由比較,根據本發明之實施例,當產生與所有四個指令相對應之c原子及索引碼時即可輸出該等c原子及索引碼,此是因為可在不同處理週期中輸出c原子及相應索引碼。ETM CPSR表193用於決定何時需要c結果(與收到的c原子相對應)及應追蹤哪些CPSR旗標。
當將CPU 100配置成能夠計算局部CPSR值且甚至在並非所有CPSR旗標為已知時能夠驗證條件指令時,此技術用於減少已追蹤旗標值之數目。局部CPSR結果為並非CPSR中所有旗標皆為已知的情況下之結果。舉例而言,ADDEQ指令僅需要待驗證之Z旗標,因此含有Z旗標之局部CPSR結果足以驗證用於條件指令之結果。自第3B圖、第3C圖及第3D圖之實例中之「c結果索引碼」行及「c原子索引碼」行可看出,在一些狀況下使用序列中之下一追蹤索引碼值,而在其他狀況下使用與不同條件指令相對應之相同追蹤索引碼值。為決定何時應使用序列中之下一追蹤索引碼,使用儲存在CPSR表中之狀態。當產生與指令相對應之c原子(指示CPU 100已開始執行彼指令)時,則使用條件指令標籤作為索引來查找CPSR之旗標狀態,此是因為標籤識別與彼條件指令相關聯之特定CPSR。查找當前程式狀態暫存器標記位元且如下文參閱第22圖及第25圖所述使用該等當前程式狀態暫存器標記位元。存在用於每一CPSR之不同組位元。
現返回第3B圖、第3C圖及第3D圖之第一實施例,ETM CPSR表193儲存三個狀態:(i)未追蹤;(ii)待追蹤;以及(iii)已追蹤。在此實施例中,為決定何時應使用序列中之下一追蹤索引碼(c原子索引碼),使用儲存在CPSR表193中之狀態,且當ETM指令索引碼翻譯電路系統186產生c原子時,使用相應條件指令標籤(由CPU產生)作為索引來查找旗標狀態。在以下表中概括了分配追蹤索引碼之方式。
如此表中所示,當在ETM CPSR表193中無旗標狀態值指示為「待追蹤」時,則分配序列中之下一追蹤索引碼值(c原子索引碼)。然而若與c原子標籤相對應之特定CPSR之旗標狀態中之一或更多者為「待追蹤」,則使用與用於最近c原子相同的追蹤索引碼值(c原子索引碼)。
第4圖為狀態機,該狀態機示意性地說明用於第1圖之CPSR 150之三個狀態CPSR狀態旗標。首先重置系統,然後在階段410處將給定CPSR狀態旗標設定為「未追蹤」狀態。若追蹤與給定CPSR相對應且需要關聯CPSR狀態旗標之條件原子,則CPSR狀態旗標自「未追蹤」狀態410改變為「待追蹤」狀態420。CPSR狀態旗標保持在此狀態中,直至追蹤到與給定CPSR相對應且包括關聯旗標之條件結果為止,在追蹤到與給定CPSR相對應且包括關聯旗標之條件結果之後,給定CPSR狀態旗標即改變為「已追蹤」狀態430。CPSR狀態旗標保持在此已追蹤狀態430中,直至觀察到與給定CPSR相對應之旗標設定指令為止,在此狀況下,進行自「已追蹤」狀態430回至「未追蹤」狀態410之過渡。
第5圖之表再訪上文第3C圖之實例,亦即,三個條件指令(ADDEQ、ADDNE、ADDVS)之執行,其中在解碼第三條件指令之後評估條件結果。第5圖為第4圖之三態系統之實例。除條件指令標籤、c原子索引碼及條件結果標籤(亦圖示於第3C圖中)之外,第5圖之表亦展示條件結果有效負載(自右側起之第二行)、與每一指令解碼階段相對應之CPSR表動作(最右側行)。
查看第5圖表中之項,在解碼CMP指令(該CMP指令之執行結果決定是否滿足附加至後續三個條件指令之條件)之後,將標籤A之所有狀態設定為「未追蹤」。接下來,在解碼ADDEQ指令之後,輸出條件指令標籤A且輸出c原子索引碼「0」,此後,在ETM CPSR表193中,查找「CPSR A」(參見第2圖)且看出四個旗標中沒有一個為「待追蹤」,因此開始新群組。需要c原子,此是因為用於標籤A(CPSR A)之旗標Z之狀態設定為「未追蹤」。接下來,由於條件指令ADDEQ之解碼,將用於標籤A之旗標Z之狀態設定為「待追蹤」。在ADDNE指令之解碼(與ADDEQ之解碼相連續)之後,由於將基於相對於附加至ADDEQ指令之條件(等於)的對立條件(不等於)有條件地執行此指令,因此此將亦取決於條件碼旗標Z,該條件碼旗標Z在先前解碼階段處已標記。因此,來自標籤A之旗標Z之狀態已設定為「待追蹤」,且不需要新c原子。如前所述,若相關CPSR之旗標中沒有一個設定為已追蹤,則僅使用新追蹤索引碼值。
當ADDVS指令處於解碼階段中時,輸出另一c原子索引碼「0」,此是因為Z旗標已設定為「待追蹤」且新群組未曾開始。然而,在此狀況下需要c原子(不同於ADDNE指令之狀況),此是因為用於經標記之CPSR A之旗標「V」之狀態先前並未設定為「待追蹤」。因此,將用於CPSR A(參見第2圖)之旗標V之狀態設定為「待追蹤」。接下來,CPU 100指示旗標Z有效但是旗標V無效。然而,藉由查找CPSR表193已知,需要Z旗標及V旗標兩者來驗證三個先前條件指令(ADDEQ、ADDNE、ADDVS),因此條件結果仍無法完全追蹤。當具有條件結果有效負載Z旗標及V旗標兩者之條件結果標籤A之輸出指示條件結果變為可用時,CPU 100指示Z旗標及V旗標兩者均有效。ETM CPSR表193告訴吾人,此等兩個旗標為以便可追蹤條件結果所需要之全部旗標。因此,將用於標籤A(CPSR A)之Z旗標及V旗標之狀態設定為「已追蹤」狀態。應注意,Z旗標及V旗標兩者均需要為有效,以追蹤條件結果。
查找ETM CPSR表193為確保在由CPU 100發出取消指令之後可達成正確c原子及c結果相關所必需的。第6A圖及第6B圖為表,該等表提供是否應為第4圖之三態CPSR旗標系統開始新群組(亦即,新c原子索引碼)之實例。第6A圖之表示意性地說明用於條件指令標籤B之更新必須不使新c原子索引碼在指令取消事件之後立即得以針對ADDNE指令產生之狀況。在第6A圖之表中,當ADDEQ指令處於解碼階段中時,將用於標籤A(CPSR A)之Z位元旗標設定為「待追蹤」。繼分支指令(第6A圖表中之第三指令)之後的第二CMP指令產生不同CPSR(亦即,CPSR B),因此將條件指令標籤B分配至後續條件指令SUBEQ。此外,針對SUBEQ產生不同c原子索引碼,此是因為與CPSR B相對應之旗標狀態中沒有一個當前設定為「待追蹤」。在解碼SUBEQ指令之後的週期中輸出用於條件指令標籤B之條件結果標籤,因此輸出c結果索引碼「1」,從而與SUBEQ c原子索引碼「1」匹配。
接下來,在第6A圖中,指令CMP及指令SUBEQ均取消,但是相關聯的c結果索引碼及c原子索引碼「1」仍出現於追蹤串流中。然而,當解碼ADDNE指令時,條件指令標籤返回至值A(先前用於ADDEQ)且需要c原子索引碼「0」(亦即,並非新索引碼),此是因為此ADDNE指令仍與最近未取消之比較運算CMP相關聯,該最近未取消之比較運算CMP與條件指令標籤A相對應。
第6B圖圖示替代性實例,該替代性實例說明,與第6A圖中之情形相反,在取消條件指令之後使用相同c原子索引碼並非始終正確。在第6B圖之實例中,若ADDNE指令(在誤預測分支取消之後解碼)並未開始新索引碼,則與條件結果標籤B相對應之ADDNE指令之結果將應用於ADDNE指令及ADDEQ指令兩者,此舉為不正確的,此是因為該ADDNE指令及該ADDEQ指令均與不同「CMP」指令相關聯。第6B圖之表與第6A圖之表之間的差異在於,在第6B圖之表之狀況下,並未取消第二CMP(僅取消分支指令及在分支之後且在收到取消請求之前的任何指令),因此在此狀況下事實上需要新條件指令標籤及新c原子索引碼。在第6B圖中,在分支指令之後存在非條件指令「SUB」。
第6C圖、第6D圖及第6E圖描述參閱第3A圖至第3D圖所述之技術的替代性技術。在此替代性技術中,維護二態CPSR表。根據此替代性實施例,以不同於表中之其他CPSR之方式處理當前CPSR。如前所述,在第2圖中,存在六個不同CPSR,每一CPSR皆具有一組相關聯之四個條件旗標狀態(給予總計24個不同表項)。在第6C圖至第6E圖之替代性實施例中,當前CPSR經處理使得對於當前CPSR吾人僅需要每一旗標具有兩個狀態。然而,此等兩個狀態意謂不同事物。第6C圖及第6D圖圖示二態CPSR表(當前CPSR之每一旗標僅一個位元)及發送中位元(每一CPSR之每一旗標一個位元)如何與第4圖之狀態圖之三個狀態相對應。第6E圖為使用發送中位元之實例。
若CPU 100不能呈現局部CPSR結果但是僅可呈現全CPSR結果,則不必將每一旗標之狀態儲存在CPSR表中。實情為,可為CPSR中之每一者儲存單一位元,從而指示任何CPSR是否為「待追蹤」,亦即,結果在CPU管線120中為「發送中的」。
在第6C圖至第6E圖實施例(不同於CPSR表之第2圖實施例)中,每一CPSR標籤皆具有單一位元(表示為「發送中」位元),該單一位元指示將來「c結果」是否為預期的。每一CPSR旗標兩個狀態之當前CPSR之CPSR表連同「發送中」值與第4圖之狀態圖之三個狀態相對應。第6C圖之表解釋如何使用並維護此等發送中位元。回應於正由ETM指令索引碼翻譯電路系統186輸出之c原子,設定與條件指令標籤(在第6C圖中表示為「RH標籤」)相對應之發送中位元。若條件結果係由第二追蹤產生電路系統192自ETM結果索引碼翻譯電路系統188接收,若設定與條件結果標籤(在第6C圖中表示為「LH標籤」)相對應之發送中位元,則經由FIFO 194在追蹤資料串流中輸出c結果且此後清除位元。發送中位元用於決定何時已針對具有相同標籤(亦即,與相同CPSR相對應)之先前c原子接收先前c結果。當產生與指令相對應之c原子時,使用關聯條件指令追蹤資料項目標籤(由CPU 100輸出)作為索引來查找發送中位元。
第6D圖之表展示在此實施例中如何由ETM指令索引碼翻譯電路系統186(參見第1圖)產生追蹤索引碼。特定地,若發送中位元值與意謂結果並非為發送中之值「0」相對應,則使用下一追蹤索引碼值。若另一方面發送中位元值具有指示條件結果為發送中之值「1」,則使用與用於最近c原子相同的追蹤索引碼值。
因此,經由兩個資料儲存器追蹤第4圖之狀態圖之三個狀態:
(1)第6D圖之發送中表,其中每一CPSR之每一旗標具有一個位元(兩個狀態)。此等指示旗標在由資料處理裝置發出時是否需要追蹤,亦即,需要結果之哪些位元來重建相應較早條件指令之結果。
(2)一個CPSR(當前CPSR)之每一旗標具有兩個狀態(標記)之當前CPSR之CPSR表,該表指示是否追蹤條件指令作為c原子。
第6E圖之表再訪第3A圖之實例且展示在實施第6C圖及第6D圖之規則時如何設定發送中標籤。在第6E圖之實例中,與三個條件指令ADDEQ、ADDNE及ADDVS相對應之條件結果在已解碼指令ADDVS之後變為可用(類似於第3C圖之狀況)。當在與和解碼中指令ADDEQ之列相同的列相對應之追蹤(第6E圖表)中輸出第一c原子時,則查找用於標籤A之發送中位元且發現結果為「0」(並非發送中),因此以新追蹤索引碼值開始新群組。在此狀況下,c原子索引碼為「0」。
當在與正處於解碼中之指令ADDVS相同的階段處產生下一c原子時,則再次查找用於條件指令標籤A之發送中位元,此是因為指令ADDEQ及指令ADDVS共享相同條件指令標籤。在此狀況下,結果為「1」(指示發送中),因此不開始新群組且使用與用於最近c原子相同的追蹤索引碼值。因此,用於ADDVS指令之c原子索引碼亦為「0」。當在解碼ADDVS之後的階段處輸出條件結果標籤A時,則清除用於標籤A之發送中位元。此位元清除指示與條件指令標籤A相對應之結果已得到驗證,因此在核心管線中不再為「發送中」。
第7圖至第11圖示意性地說明如何在相同追蹤串流中使條件分支指令與其他條件指令分離及如何稍有不同地處理該等條件分支指令。特定而言,使用所謂的「路標點」來追蹤條件分支指令及(非條件)載入/儲存指令,而使用如上文所述之「c原子」來追蹤所有其他條件指令。已知使用路標點來追蹤條件分支且指示已取得哪些分支及未取得哪些分支。此狀況詳細地描述於讓渡給ARM Limited之授權美國專利US 7,707,394中。
路標點可用來不僅表示條件分支指令,而且亦表示載入/儲存指令。US 7,707,394解釋如何在追蹤資料串流中一起偵測並輸出路標點之序列,以便單一追蹤資料項目表示複數個路標點。可以與根據本發明之實施例之上文所述由CPU 100使標籤與c原子(條件指令觀察指示符)相關聯之方式類似的方式,來使核心標籤與路標點相關聯。此等核心標籤由ETM更名,以形成遵循預定次序之追蹤索引碼。由於追蹤索引碼遵循預定次序之事實,不存在一起輸出路標點與索引碼之嚴格要求。
事實上,在追蹤資料串流中輸出之路標點係由如第7A圖之表中所指示之兩個值中之一者標示。如此表中所示,「E」標示與以下兩者中之任一者相對應之路標點:(a)條件分支指令,當觀察程式指令時,實際上針對該條件分支指令取得分支;或(b)載入/儲存指令。對於此等「E」路標點,使追蹤索引碼增加一。然而,對於觀察程式時實際上並未取得之條件分支指令而言,使追蹤索引碼增加一,且由「N」標示此等路標點。在第1圖至第6圖之上文描述中,參考所有條件指令來描述c原子之輸出。然而,在一些實施例中,並非輸出用於所有條件指令之c原子,而是挑選出條件分支指令且以不同方式處理該等條件分支指令。特定而言,代替輸出標旗條件分支指令之執行之c原子,實情為,在追蹤資料串流中輸出具有如第7A圖之表中所指示之關聯「E」狀態或「N」狀態之路標點。
如上文所述,複數個路標點可經壓縮(或序連)以形成單一追蹤資料輸出項目,且複數個c原子可以類似方式經壓縮。如上文所述,c原子亦在ETM 180中經受序列偵測及標籤至索引碼翻譯。
然而,應注意,c原子以重要方式不同於路標點。特定而言,始終使路標點、索引碼之序列增加一,但是對於c原子而言,儘管C原子索引碼有時增加,但是其他時間該等C原子索引碼完全不增加。特定而言,當特定經標記之CPSR(第2圖之CPSR A、CPSR B、CPSR C、CPSR D、CPSR E或CPSR F)之一或更多CPSR旗標狀態為「待追蹤」時,則使用與用於序列中之最近c原子相同的追蹤索引碼值,且在此狀況下c原子索引碼並不增加一。此可使用如第7B圖之表中所示之兩種不同類型之c原子來編碼。
第7B圖表展示條件指令(除條件分支之外)之特性如下:--追蹤索引碼(c結果索引碼)在先前c原子與後續c原子之間不改變之條件指令(除條件分支之外)表示為「P0」;且追蹤索引碼(c結果索引碼)增加一之條件指令(除條件分支之外)表示為「P1」。
因此,舉例而言,若吾人將c原子之序列之c結果索引碼表示為:0、1、2、2、3、4、5、5、6,則此可編碼如下:P1、P1、P1、P0、P1、P1、P1、P0、P1。
應明白,在其中c原子索引碼不增加(亦即,其中存在兩個連序「2」及兩個連序「5」)之序列中之點處,在相同追蹤索引碼之第二重複之後即輸出P0,且否則輸出P1。此等P1及P0追蹤元件可以與用於路標點之E元件及N元件類似的方式經壓縮(或序連)。用於E路標點及N路標點之壓縮先前已知且詳細地描述於US 7,707,394中。根據本發明之實施例,可由追蹤電路系統在不同處理週期中輸出用於條件指令之c原子、c結果,及路標點之事實意謂可獨立地輸出c原子且隨後使用索引碼系統使該c原子與相應c結果相關。此舉使c原子能夠得以獨立於c結果與路標點而經壓縮,但是c原子仍在相同追蹤資料串流中與c結果與路標點一起輸出。此舉藉由賦能路標點、c原子及c結果之獨立壓縮而提供改良之效率。
第7C圖之表展示由ETM 180之追蹤電路系統根據CPU 100中之執行事件而產生之路標點事件及c原子,其中表中的連續行表示連續且順序的處理週期。第7C圖之表之最右行展示相應追蹤資料輸出。產生追蹤資料輸出項目之次序係由表之連續列指示。第一追蹤輸出與壓縮路標點追蹤輸出「EEEN」相對應。值得注意地,此「EEEN」係在產生最後三個E與N之間的P1 c原子之後輸出。下一追蹤資料輸出與壓縮c原子「P111」相對應,且儘管P1之三個出現在輸出序列中散佈有兩個N路標點,但是此等壓縮c原子「P111」亦輸出為三個連序c原子。第三追蹤輸出與「P110」相對應,該「P110」與在「產生之c原子」行中輸出之連續P1、P1及P0相關。在輸出此等三個c原子P1、P1、P0之前,已輸出兩個「N」路標點,但是此等路標點在追蹤輸出中尚未指示。最後追蹤輸出與「NNNE」相對應,該「NNNE」反映在P1、P1及P0之前輸出之剩餘路標點且亦反映在序列之末端產生之最後路標點E。
如第1圖中所示,診斷電路系統接收追蹤資料輸出且分離進入c原子FIFO 197之壓縮c原子並追蹤進入路標點FIFO 198之壓縮路標點。由於作為壓縮第7C圖之表中所示之追蹤輸出之結果的次序之變化,第1圖之診斷工具196有效地獲得與該診斷工具196解碼來自ETM 180之追蹤輸出時之執行次序不同的次序。在第7C圖之此特定實例中,追蹤輸出次序為:E、E、E、N、P1、P1、P1、P1、P1、P1、P0、N、N、N、E。診斷電路系統196利用程式映像199來重新排序此等壓縮路標點及壓縮c原子,以將該等壓縮路標點及壓縮c原子復原為正確執行次序。診斷工具196藉由貫穿程式映像工作以識別所有分支來進行此操作。每一分支與E路標點或N路標點相關聯,該E路標點或N路標點固有地給予「已取得分枝」或「未取得分支」資訊,該「已取得分支」或「未取得分支」資訊允許診斷工具196根據當時在CPU 100中盛行之條件精確地決定已取得程式映像中之哪些指令及未取得哪些條件分支指令。因為診斷電路系統196遵循與路標點相對應之此線程,所以在查閱程式時該診斷電路系統196將亦參考程式映像199而遭遇條件非分支指令且此等條件非分支指令中之每一者之次序與收到的追蹤資料串流中之c原子關聯。然而,應注意,儘管許多條件指令導致c原子之產生,但是存在並不導致c原子之產生之條件指令之子集,例如,第3B圖之ADDNE。
第7D圖之表解釋診斷電路系統196在自ETM 180接收路標點及c原子之後如何處理路標點及c原子及如何將該等路標點及c原子置放至分離的c原子FIFO 197及路標點FIFO 198中。該表解釋了當經由程式映像199遵循執行線程時所遭遇之每一指令類型、診斷電路系統遭遇特定類型之指令時由該診斷電路系統採取之動作。在遭遇分支指令時,自路標點FIFO 198取得E或N。在遭遇載入/儲存指令時,再次自路標點FIFO 198取得E或N。當遭遇條件分支指令時,將不產生相應c原子,此是因為此為由路標點(而非c原子)處理之特殊狀況,所以自路標點FIFO 198取得E或N。條件載入/儲存指令為路標點(由於為載入/儲存指令)且亦可為c原子(由於為條件指令),但是對於非條件載入/儲存而言,不存在相應c原子,因此在此狀況下,自路標點佇列取得E,此是因為已知載入/儲存從未與N路標點(未取得之分支)相對應。然而,在條件載入/儲存之狀況下,亦自c原子FIFO 197取得P0或P1。所有「其他條件指令」(亦即,除條件分支及條件載入/儲存外的條件指令)皆落入由c原子之產生涵蓋之範疇內,且在此狀況下自路標點FIFO取得P0或P1。由於產生之c原子及產生之路標點係按次序儲存於c原子FIFO 197及路標點FIFO 198中,因此自FIFO移除此等實體之次序反映程式執行次序。
第8圖為流程圖,該流程圖示意性地說明在收到追蹤資料串流之後由診斷電路系統196採取之動作,該追蹤資料串流含有條件原子封包及路標點封包兩者。程序開始於階段810處,在該階段810處,開始在診斷電路系統196處接收追蹤資料項目。隨後,在階段820處,診斷電路系統196接收追蹤資料之下一項目且隨後前進至階段830,在該階段830處,決定追蹤項目是否為條件原子(c原子)封包。若追蹤項目事實上為c原子封包,則程序進行至階段832,在該階段832處,解碼封包且在適當時將P0及/或P1 c原子添加至c原子FIFO 197。此後,程序進行至階段860,在該階段860處該程序結束。
另一方面,若在階段830處決定特定追蹤資料項目並非c原子封包,則程序進行至階段840,在該階段840處,決定追蹤項目是否為路標點封包。若追蹤項目事實上為路標點封包,則程序進行至階段842,在該階段842處,解碼封包且在適當時將E及/或N路標點添加至路標點FIFO 198。此後,程序進行至結束階段860。然而,若在階段840處決定追蹤資料項目並非路標點封包,此意謂追蹤項目既非c原子封包亦非路標點封包,則程序進行至階段850,在該階段850處,將以習知方式在適當時處理其他封包類型,然後程序在階段860處結束。
第9A圖、第9B圖及第9C圖示意性地說明當存在分支誤預測時或當異常中止發生從而導致一或更多路標點之取消時,在能夠臆測亂序處理之CPU 100中,包含壓縮路標點及壓縮c原子之追蹤輸出會發生何事。
第9A圖之表示意性地說明在取消至少一個路標點之情況下,問題可如何由於路標點及c原子之壓縮而發生,此是因為診斷工具196在此情形中將不會意識到在取消事件之前已執行了多少個條件指令。在沿第9A圖之表向下的部分中存在藉以取消一個路標點(亦即,先前之N)之事件,且追蹤輸出指示已取消一個路標點但是未給予關於壓縮c原子之任何資訊。應注意,在追蹤輸出中,前兩個產生之c原子P1、P1尚未在追蹤串流中輸出,但是在取消之後輸出壓縮c原子追蹤輸出「輸出P111」。該「輸出P111」意謂已產生三個c原子P1、P1、P1。由於路標點N之取消在此狀況下(但並非必然)導致緊隨的後續c原子P1之取消,因此診斷電路系統196在「取消1」追蹤輸出之後接收壓縮c原子輸出P111時將不會意識到事實上取消了與壓縮「P111」追蹤輸出相對應之「P1」中之一者。因此,儘管診斷工具知道取消了哪一個路標點,但是該診斷工具不知道因此亦取消了c原子中之何者。換言之,c原子及取消事件之次序由於壓縮而丟失,使得診斷電路系統196不知道第二個P1是在取消之前(在此狀況下架構上不執行該取消)還是在取消之後(在此狀況下架構上執行該取消)。類似地,若誤預測發生,此狀況要求架構上不執行條件指令,但是在追蹤中並未取消路標點,則診斷電路系統196將不會意識到未執行條件指令。為解決此狀況且為防止在指令誤預測或取消之情況下路標點及c原子之壓縮導致診斷電路系統196做出不正確假設,實施以下兩個規則:I. 在分支誤預測、異常中止或異常或任何其他取消指令之情況下,輸出重新對準追蹤項目及取消追蹤指示(但是對於異常而言,必須取消序列,若為異常則重新對準);II. 在重新對準追蹤項目之前輸出已產生之所有c原子;III. 在重新對準追蹤項目之前輸出已產生之所有路標點。
重新對準追蹤項目向診斷電路系統196指示應廢除該診斷電路系統196之c原子FIFO 197中之任何c原子,此是因為該等c原子與已取消之指令相對應。第9B圖之表給出使用重新對準追蹤資料項目及已取消之追蹤資料項目的一個實例。在此實例中,以與第9A圖之表中之實例相同的方式取消N路標點,不同之處在於,在此狀況下,當在追蹤資料串流中輸出取消指示時,在追蹤輸出中指示在取消之前已產生之所有c原子之指示。此與「P11」追蹤輸出相對應。此後,輸出取消指示「取消1」,隨後在追蹤中輸出「重新對準」指示。在此狀況下,維持c原子及取消之次序,此是因為重新對準清除任何經緩衝之c原子且重新對準始終與取消一起輸出(在取消之前或之後)。ETM並不記錄已取消多少個c原子(若存在),此是因為該ETM並未儲存足夠狀態來決定此數目。然而,診斷工具可計算出已取消哪些c原子。
第9C圖示意性地說明回應於接收在第9B圖之表中所指示之追蹤輸出而由診斷電路系統196採取之動作。第一行展示由診斷電路系統196收到的所有追蹤資料項目。此後,將此再分為路標點佇列(第二行)及條件佇列,該條件佇列亦即c原子佇列(第三行)。回應於收到追蹤輸出之診斷電路系統196之動作如表之最右行中所指示。第一診斷電路系統動作將推理執行至E。此是因為在所有路標點之間執行之指令(除路標點及c原子之外)皆由診斷電路系統196推理。診斷電路系統196無法推理至路標點N,此是因為尚未接收到c原子,且在此點處診斷電路系統196根據該診斷電路系統196對程式映像199之分析預計c原子。在接收壓縮追蹤元件P11之後在追蹤資料串流中接收「取消1」指示,因此診斷電路系統取消所有事物直至最後路標點且包括取消最後路標點,亦即,N路標點。繼收到重新對準追蹤項目之後,清空c原子FIFO 197,從而移除P11及在取消之前發出之P1以及在接收「取消1」的同時添加至條件佇列之P1。繼重新對準之後,接收壓縮c原子P1110追蹤,但是診斷電路系統根據該診斷電路系統對程式映像199之分析預計將接收路標點,且無路標點已被接收,因此無c原子仍可由診斷電路系統處理。診斷電路系統之後續動作涉及參考何時需要及不需要c原子來推理路標點之間的指令。以此方式,由診斷電路系統196重建由CPU 100執行之實際執行序列。應注意,載入/儲存指令可為條件的或非條件的。將非條件載入/儲存指令處理為E原子,因此E原子係自路標點佇列取得。若載入/儲存指令為條件的,則E原子仍係自路標點佇列取得,但是另外P0或P1係自c原子佇列取得。
第10圖為流程圖,該流程圖示意性地說明由診斷電路系統196採取以分析傳入追蹤資料之動作。特定而言,第10圖之流程圖描述診斷電路系統在執行對執行串流之分析的過程中如何自c原子FIFO 197及路標點FIFO 198移除c原子及路標點。程序開始於階段1000且直接進行至階段1010,在該階段1010處,接收傳入追蹤資料且使用程式映像199來決定執行之下一指令。此後,程序進行至階段1012,在該階段1012處,決定下一指令是否為非條件分支。若下一指令事實上為非條件分支,則程序進行至階段1014,在該階段1014處,自路標點FIFO 198取得「E」或「N」。隨後,程序進行至階段1060,在該階段1060處,可用資訊用於決定當前指令之細節,且隨後進行至結束階段1070直至接收下一追蹤資料項目為止。
若另一方面在第10圖之階段1012處決定下一指令並非非條件分支指令,則程序進行至階段1020,在該階段1020處,決定下一指令是否為非條件載入/儲存指令(非條件的)。若指令事實上為非條件載入/儲存指令,則程序進行至階段1014,在該階段1014處,自路標點FIFO 198取得E或N,隨後程序進行至階段1060且隨後進行至結束階段1070。若在階段1020處決定下一指令並非非條件載入/儲存指令,則程序進行至階段1030,在該階段1030處,決定指令是否為條件分支。若指令事實上為條件分支,則程序進行至階段1014,且自路標點FIFO 198取得E或N,且隨後程序進行至階段1060及階段1070,在該階段1070處,程序結束。若另一方面在階段1030處決定下一指令並非條件分支,則程序進行至階段1040,在該階段1040處,決定下一指令是否為條件載入/儲存。若下一指令事實上為條件載入/儲存,則程序進行至階段1042,在該階段1042處,自路標點FIFO 198取得E或N,隨後程序進行至階段1044,在該階段1044處,自c原子FIFO 197取得P0或P1。因此,對於條件載入/儲存指令而言,自路標點佇列及c原子佇列中之每一者取得項目。隨後,程序進行至階段1060及階段1070。
若在階段1040處發現指令並非條件載入/儲存,則程序進行至階段1050,在該階段1050處,決定指令是否為條件指令。若指令為條件指令,則自c原子佇列197取得P0或P1,且隨後程序進行至階段1060,在該階段1060處,決定當前指令之細節,且隨後程序在階段1070處結束。然而,若下一指令並非條件指令,則程序自階段1050直接進行至階段1060,在該階段1060處,可用資訊用於決定當前指令之細節。但是在此狀況下,當前指令並非非條件分支指令、非條件載入/儲存指令、條件分支指令、條件載入/儲存指令或條件指令中之一者。
第11A圖、第11B圖及第11C圖為取消追蹤指示、誤預測追蹤指示、異常追蹤指示及重新對準追蹤指示之追蹤資料串流中之輸出之相對定序的實例。
在第11A圖之實例之狀況下,第一路標點E與分支誤預測相對應,且重新對準追蹤項目係置放在誤預測之後但在下一路標點或c原子之前。
在圖11B之狀況下,第二路標點,亦即,第二「E」與誤預測之分支相對應。重新對準追蹤項目係置放在誤預測之後但是在下一路標點或c原子之前(在此特定實例中,在下一路標點E之前)。
在第11C圖之實例中,異常中止發生在第一路標點「E」與第二路標點「E」(序列中之第一追蹤項目與第三追蹤項目)之間。在此狀況下,拋出異常,且將重新對準追蹤項目置放在異常之後但是在下一路標點或c原子之前。應注意,在此狀況下c原子P1(序列中之第二追蹤項目)係產生於兩個路標點,亦即路標點E與路標點E之間,在該兩個路標點E之間異常中止發生,但是仍應該將重新對準項目置放在異常之後。
第12圖至第14圖示意性地說明如何可藉由移除可由條件結果隱含之條件原子來壓縮包含c原子之追蹤資料串流。以此方式自追蹤資料串流移除c原子之子集可用來改良追蹤程序之效率。儘管並非所有條件指令皆導致產生c原子,但是c原子與c結果之間常常存在一一對應,且每一c結果必須具有至少一個相應c原子。此意謂,在許多狀況下,當遭遇後續c結果時,診斷電路系統196可隱含c原子之存在,而無需c原子實際上必須包括在追蹤資料串流中。因此,若診斷電路系統196接收具有與c原子之c結果索引碼相對應(亦即,c原子索引碼)之c結果,該c原子尚未由診斷電路系統接收,則診斷電路系統196可演繹彼c原子之存在。若c結果為亂序,則診斷電路系統196可演繹其他c原子之存在,以保持c原子有次序。可比C原子原本將出現之時間更遲地由診斷電路系統196演繹該等C原子,且因此c原子及路標點可改變次序。然而,此無關緊要,此是因為如先前所述,可在任何狀況下由診斷電路系統196參考程式映像199中之程式指令序列以正確次序置放儲存於c原子FIFO 197及路標點FIFO 198中之c原子及路標點。
第12A圖示意性地說明表,該表包含追蹤資料串流之實例,在該追蹤資料串流中基於c結果索引碼之輸出隱含一系列c原子(亦即,與指令執行之追蹤資料項目相對應),該等c結果索引碼由第1圖之結果索引碼翻譯電路系統188輸出。在此實例中,由ETM 180產生五個P1c原子之序列但並未輸出。類似地,亦由ETM產生在表中由「RH索引碼」表示之c原子索引碼但並未輸出。此舉可視為c原子之緩衝。當輸出c結果時,隱含位元表示彼等經緩衝之c原子。然而,事實上由結果索引碼翻譯電路系統188輸出相應條件結果索引碼。儘管未明確給出索引碼值,但是根據追蹤將明白哪些c原子與c結果相關聯。儘管未輸出全部c原子資訊,但是c結果封包有效地含有關於c結果之資訊。c原子經高度壓縮(減少至1個位元)。第12A圖之表之第四行示意性地說明基於收到的c結果索引碼由診斷電路系統196隱含哪些c原子索引碼。在此狀況下,對應為直接對應,在該直接對應中,直接隱含與c結果索引碼相對應之c結果0、c結果1及c結果2。然而,在c結果索引碼3之前輸出c結果索引碼4,因此當診斷電路系統196接收c結果索引碼4時,診斷電路系統196隱含亦已產生之c原子索引碼3,但是尚未輸出相應結果。事實上,自第12A圖表之「c結果LH索引碼輸出」行可看出,緊隨c結果索引碼4之後產生c結果索引碼3。因此,同時隱含c原子索引碼3及c原子索引碼4事實上為正確的。值得注意地,在第12A圖之表之實例中,所產生之c原子僅包含P1原子而不包含P0原子。如前所述,對於P1c原子而言追蹤索引碼始終增加一,而對於P0原子而言追蹤索引碼不改變。因此,雖然可由c結果之存在隱含P1c原子,但是此舉對P0原子不成立。事實上P0c原子無法由c結果之存在演繹,因此所有P0c原子需要在追蹤中輸出且不可緩衝。
存在另外兩種特殊情形,其中依賴藉由ETM 180之c原子輸出之緩衝及藉由診斷電路系統196之自c結果隱含相應c原子為不適當的。此等兩種情形中之第一種情形為在重新對準追蹤項目之狀況下,其中必須由ETM 180輸出在重新對準之前已知的所有c原子,而不管後續c結果原則上可用來隱含該等c原子之事實。此舉將確保演繹藉由診斷電路系統196之路標點及c原子之正確相對定序。
緩衝c原子之輸出及自收到的c結果索引碼隱含c原子之存在為不適當的另一情形為,在c原子本身已由指令索引碼翻譯電路系統186分配了c原子索引碼之情況下,此並非嚴格有序,例如使用特殊索引碼。
亦存在某些狀況,其中由ETM 180輸出且由診斷電路系統196接收之c結果必須不用來隱含更多c原子。以下三個情形為此等狀況之實例,其中診斷電路系統無法將以下兩者區分開:
1. 被使用兩次之相同c結果索引碼;
2. 已緩衝之N個c原子,其中N為序列追蹤索引碼之數目。
事實上,要求由ETM 180輸出之c結果含有通知診斷電路系統196是否應自相應c結果隱含c原子之資訊。在第1圖之實施例中,關於對於給定c結果是否應隱含c原子之資訊為直接是/否條件,且並未向診斷電路系統196明確規定將隱含之c原子之精確數目。
第12B圖為表,該表示意性地說明追蹤資料串流之實例,在該追蹤資料串流中,自相應c結果隱含一些c原子索引碼,且在該追蹤資料串流中,使用四個不同c原子追蹤索引碼。因為僅可使用四個c原子追蹤索引碼,所以在已窮譽所有索引碼之後,則存在索引碼之旋疊。特定而言,可見,c原子索引碼序列前進為0、1、2、3,且隨後返回至與產生但未輸出之第五個P1 c原子相對應之0。此外,在第12B圖之實例中,產生但未輸出之第五個P1 c原子、第六個P1 c原子及第七個P1 c原子與誤預測相對應,因此此等三個c原子實際上未執行,且因此從未輸出相應c結果及c結果索引碼。
C結果含有以下至少三條資訊:
1. 索引碼,該索引碼明確地或相對於大多數c結果而與條件結果相關聯;
2. 有效負載,該有效負載允許診斷電路系統196決定條件指令之通過/失敗狀態(亦即,決定實際上是否執行條件指令);以及
3. 是否可基於彼c結果隱含相應c原子且此為直接二位元指示符,亦即,隱含是或隱含否。
為應用隱含-是(imply-yes)或隱含-否(imply-no)資訊,ETM 180經配置以記錄c原子,該等c原子由指令索引碼翻譯電路系統186產生,但是該等c原子至診斷電路系統196之輸出經緩衝。ETM 180決定每一c結果為何物及若存在c原子則c原子中何者可由c結果隱含。若無c原子係由c結果隱含,則將c結果標記為隱含-否,否則由ETM 180將該c結果標記為隱含-是。使用兩個暫存器達成此舉。
「最後c原子產生索引碼(last-c-atom-generated-key)」暫存器包含最近產生但未輸出之c原子之索引碼。此狀況之例外為最近產生但未輸出之c原子具有特殊索引碼之情況。單獨的「最後c原子輸出索引碼(last-c-atom-output-key)」暫存器記錄以下中之最近者之追蹤索引碼:(i)明確輸出之c原子;或(ii)由c結果隱含之c原子。
當產生c結果時,測試相應c結果索引碼以觀察該相應c結果索引碼是否在範圍(最後c原子輸出索引碼)<(c結果LH索引碼)≦(最後c原子產生索引碼)內。當應用此測試時,必須使用模數學且模數學之處理為熟習此項技術者所熟知。若c結果索引碼事實上在此定義範圍中,則由ETM 180將隱含-是輸出為c結果之部分。
第13圖為表,該表示意性地說明類似於第12B圖之序列的追蹤資料序列,但是在該追蹤資料序列中,儲存在「最後c原子產生索引碼」暫存器及「最後c原子輸出索引碼」暫存器中之值分別展示於自右側起的第二行及第三行中。第13圖之表之右行給予是否已滿足由以上方程式定義之測試(亦即,隱含-是)之指示。應注意,由於僅使用四個追蹤索引碼且由於索引碼之旋疊,索引碼「3」可由於其中例如第一「3」在第二「0」之前的重複索引碼序列0、1、2、3、0、1、2、3......而被視為小於索引碼「0」。第13圖表之「隱含c原子RH索引碼」行中標記為3*之隱含c原子索引碼係在輸出重新對準項目之後不久隱含,且在此狀況下未隱含具有索引碼0、1、2之c原子,此是因為該等c原子已由於先前誤預測而明確地輸出,其中未執行與c原子索引碼0、1及2相對應之三個P1c原子。
對於在第13圖倒數第二列中輸出之c結果索引碼「2」而言,未隱含與c結果索引碼2相對應之具有索引碼2之c原子,此是因為該c原子已由較早c結果隱含,且因此未滿足結果在第13圖之右側行中規定之測試。對於第13圖之表之末列中輸出之c結果索引碼,未隱含具有索引碼1之相應c原子,此是因為該c原子已在名為「明確輸出c原子索引碼」之行中明確地輸出。第13圖展示作為誤預測之結果而明確地輸出c原子索引碼0、1、2及由於P0c原子(在表之最左側行中倒數第三個產生之c原子)在追蹤資料串流中之出現而明確地輸出c原子索引碼0及c原子索引碼1,對於該P0c原子不容許自相應c結果隱含c原子。
C原子係由於以下理由而明確地輸出:
‧在輸出重新對準追蹤項目之前(例如,由於誤預測或異常)
‧若使用P0c原子類型(其中追蹤索引碼並不根據定義增加)
‧若使用不遵循索引碼之正常序列定序之特殊索引碼,且該特殊索引碼用於非常遲的c結果。
當明確地輸出c原子時,「最後c原子輸出索引碼」暫存器可用來決定應輸出哪些c原子。舉例而言,在重新對準追蹤項目之狀況下,待明確地輸出之第一c原子為「最後c原子輸出索引碼加一」暫存器之值,且待輸出之最後c原子為最後c原子產生索引碼之值。亦應輸出兩者之間具有索引碼之C原子。
第14a圖為流程圖,該流程圖示意性地說明ETM 180在輸出追蹤串流及實施追蹤壓縮方案過程中之動作,其中某些c原子依賴診斷電路系統196自相應c結果隱含c原子之能力而產生但未輸出(亦即,經緩衝)。換言之,第14a圖之流程圖示意性地說明ETM 180如何作用以經由自追蹤資料串流移除c原子之子集而壓縮輸出追蹤資料串流。
程序在階段2000處開始且隨後前進至階段2100,在該階段2100處,決定是否需要重新對準追蹤資料項目。若需要重新對準追蹤項目,則程序進行至階段2110,在該階段2110處,ETM 180明確地輸出產生但未輸出之所有c原子。隨後程序進行階段2120,在該階段2120處,更新最後c原子輸出索引碼,且隨後程序進行至階段2130,在該階段2130處,重新對準追蹤資料項目實際上輸出至追蹤資料串流中,且隨後程序返回至垂直流程並前進至階段2200。若另一方面在階段2100處決定不需要重新對準追蹤資料項目,則程序直接進行至階段2200而無需沿水平分支壓縮階段2110、2120及2130進行。
在階段2200處決定當前是否正產生c結果。若無c結果正在產生,則程序直接進行至階段2300。另一方面,若在階段2200處決定事實上當前正在產生c結果,則程序進行至階段2210,在該階段2210處,決定當前是否正緩衝與當前c結果相對應之c原子。此測試之一個實例將決定與正產生之c結果相對應之索引碼是否滿足測試:(最後c原子輸出索引碼)<(c結果LH索引碼)≦(最後c原子產生索引碼)。換言之,與當前正產生之條件指令追蹤資料項目相對應之索引碼是否大於與該最近輸出條件指令追蹤資料項目相對應之索引碼且小於或等於與該最近產生條件指令追蹤資料項目相對應之索引碼。由於當索引碼值達到最大值時,索引碼值旋疊以正常工作,因此索引碼比較遵照模運算。
若在階段2210處決定當前並非正緩衝與c結果相對應之c原子,則程序進行至階段2230,在該階段2230處,輸出剛剛產生之c結果,並且清除隱含位元,從而指示基於此特定c結果無c原子應由診斷電路系統196隱含。若另一方面在階段2210處發現當前正緩衝與當前c結果相對應之c原子,則程序進行至階段2222,在該階段2222處,輸出c結果,並且設定隱含位元,從而指示診斷電路系統196應自c結果隱含相應c原子。在輸出c結果並且設定隱含位元之後,程序進行至階段2224,在該階段2224處,在適當暫存器中更新最後c原子輸出索引碼之值,隨後程序進行至階段2300。
在階段2300處決定是否正產生c原子。若並非正產生c原子,則程序在階段2400處結束。若另一方面正產生c原子,則程序進行至階段2310,在該階段2310處,決定c原子是否具有類型P0而非P1或該c原子是否與特殊索引碼相對應。若c原子並非此等異常類型中之一者,則程序進行至階段2320且更新最後c原子產生索引碼,隨後程序在階段2400處結束。然而,若c原子與特定索引碼相對應或具有類型P0,則程序進行至階段2312,在該階段2312處,使正產生之c原子與已產生但尚未輸出之所有其他c原子一起明確地輸出。隨後程序進行至階段2314,在該階段2314處更新最後c原子輸出索引碼。隨後程序進行至階段2320,在該階段2320處更新最後c原子產生索引碼,隨後程序在階段2400處結束。
第14b圖說明根據本發明之實施例之追蹤單元180。追蹤單元180類似於第1圖中所示之追蹤單元且在適當的情況下使用相同的元件符號。該追蹤單元180具有額外條件碼或CPSR值儲存緩衝器185及具有關聯壓縮及組合電路系統之符記緩衝器187。
自結果介面184發送之資料包含來自每一經更新CPSR暫存器之CPSR值及額外資料。因為在此實施例中CPU 100上存在8個CPSR暫存器,所以存在單一週期中吾人可收到的8個可能設定。並非在單一週期中將此等所有設定輸入至追蹤產生電路系統192,此舉將需要追蹤產生電路系統192處理此等設定,此將為昂貴的,而是使此等設定在CPSR值儲存緩衝器185中經緩衝。因此,可隨時間推移穩定地輸出該等設定。在此實施例中,在每一時脈週期中輸出兩組CPSR值。可隨機選擇此等兩組CPSR值,或若將在輸入處接收用於彼CPSR之一組經更新之CPSR值,則可需要輸出一組特定CPSR值。此舉將確保條件原子追蹤資料項目及條件結果追蹤資料項目在追蹤串流中之正確定序。
就此而言,在指令介面182處自解碼具有關聯「標籤」之處理裝置收到條件指令觀察指示符提供將更新哪些CPSR暫存器之先行指示,其中該等關聯「標籤」識別待由指令更新之特定CPSR暫存器。在將接收有效值當前儲存在緩衝器185中之CPSR值之狀況下,此等有效值經選擇用於輸出,以便儲存位置為空閒,以儲存隨後將接收之新資料。
當輸出該等CPSR值時,由產生追蹤資料項目之追蹤產生電路系統192處理該等CPSR值。因為在此實施例中可在任一週期中接收兩個條件指令觀察指示符,所以可需要逐出至多兩組CPSR值,且因此每一週期輸出兩組CPSR值足以維持儲存在緩衝器185中之正確值,且意謂追蹤產生電路系統195僅需要具有每一週期處理兩組值之充分的處理能力。
在此實施例中,存在用於接收由追蹤產生電路系統192產生之追蹤資料項目之額外電路系統187,此電路系統壓縮常用追蹤資料項目以形成符記,該等符記為此等追蹤資料項目之壓縮表示且此等符記儲存在符記緩衝器中。該等符記稍後可組合於一起且可輸出若干符記作為單一追蹤項目。通常,最小追蹤封包為8位元長度且封包常常為多個8位元,而符記通常小得多,因此可將若干該等符記組合為一個封包供輸出。
可由符記表示之常用條件結果追蹤資料項目之實例為:含有更常用CPSR值中之一者之彼等常用條件結果追蹤資料項目。一些CPSR值比其他CPSR值顯著更常用。舉例而言,以下值非常常用:N清除、Z清除、C設定、V清除。
含於條件結果追蹤資料項目中之索引碼為比先前此索引碼更常用的索引碼之情況下的彼等常用條件結果追蹤資料項目。
若將此等符記儲存在緩衝器中達儘可能長的時間以提供用於將不同符記組合為單一封包之更多時機,則此為便利的。然而,緩衝器僅具有有限尺寸,且因此當緩衝器變滿時或當所接收之項目不存在對其可用的符記(或許該項目為無法有效壓縮之不常用項目)時必須輸出該等符記。在後者狀況下,為維持次序,藉由輸出所有值而清空緩衝器,且隨後輸出收到的非壓縮項目。
通常,將此等符記保持在緩衝器中達儘可能長的時間,因為此後將不同符記組合於單一追蹤項目中之可能性更大。
第15圖至第27圖之描述為發明者John Michael Horley、Simon John Craske、Michael John Gibbs及Paul Anthony Gilkerson之標題名稱為「Processing Apparatus,Trace Unit and Diagnostic Apparatus」之同在申請中的英國專利申請案第1100505.5號之部分,本案主張該案之優先權。因此,提供以下第15圖至第27圖用於說明性目的且用於進一步解釋條件結果追蹤資料項目(c原子)之緩衝及並非所有條件指令皆具有相應c原子之事實。第15圖至第27圖亦幫助說明如何如第3A圖至第3D圖中所述地使用CPSR標記位元。第22圖及第25圖尤其與此相關。
第15圖說明處理裝置3002,該處理裝置3002包含用於回應於程式指令而執行處理操作之處理電路3004。處理裝置3002具備記憶體系統3008,該記憶體系統3008包含一或更多快取單元或記憶體單元,用於儲存待由處理電路3004執行之程式指令及/或待由處理電路3004處理之資料。
處理裝置3002包括追蹤電路3006,該追蹤電路3006用於監視由處理電路3004執行之處理操作。追蹤電路3006產生追蹤資料元件,該等追蹤資料元件指示由處理電路3004執行之處理操作之特性。追蹤電路3006藉由輸出埠3010輸出所產生之追蹤資料元件。追蹤電路3006不必實施於與處理電路3004相同之積體電路上,且在一些實施例中可將追蹤電路3006提供為單獨的追蹤單元。
提供診斷裝置3012用於分析由追蹤電路3006產生之追蹤資料元件。診斷裝置3012經由輸入埠3014接收追蹤資料元件。診斷裝置3012亦接收哪些程式指令由處理電路3004執行之指示。此指示可由追蹤電路3006提供,從而指示在追蹤串流中執行哪些指令。或者,診斷裝置3012可具備位址,該位址指示由處理電路3004執行之第一程式指令在記憶體系統3008內之位置。診斷裝置3012亦可具備記憶體(在第15圖中未示出),用於儲存由處理電路3004執行之程式之相應複本。診斷裝置3012逐步分析由處理電路3004執行之指令,且基於追蹤資料元件之串流中之資訊來決定指令之處理結果。
追蹤資料元件不必直接自追蹤電路3006輸出至診斷裝置3012,但是可例如儲存在記憶體或其他儲存裝置中,且隨後在需要時由診斷裝置3012自儲存裝置存取。診斷裝置3012可為例如經程式化以執行追蹤分析方法之通用電腦。
處理裝置3002具有儲存位置,例如條件狀態暫存器(CPSR)3020,用於儲存一或更多條件旗標3022,該一或更多條件旗標3022指示處理裝置3002之各別條件。在英國劍橋之ARM Limited設計之處理器中,條件旗標3022可包括NZCV(負、零、進位、溢出)旗標,用於指示處理結果是否為負、零、需要進位或產生溢出。第17圖說明可由條件狀態暫存器3020中之條件旗標3022之不同組合指示之各種條件狀態。
將瞭解,用於儲存條件旗標3022之儲存位置不必為條件狀態暫存器3020但是亦可為記憶體系統3008內之儲存位置,或任何其他種類之儲存位置。
處理電路3004可回應於至少一個條件更新指令,以更新條件狀態暫存器3020中之條件旗標3022中之一或更多者。舉例而言,比較指令可比較兩個資料值且取決於比較而更新旗標,例如以指示該等值是否相等或一個值是否小於或大於另一值。可將使條件旗標3022得以更新之任何指令視為條件更新指令。舉例而言,在ARM指令集架構中,TST、TEQ、CMP及CMN指令為條件更新指令之實例。
處理電路3004亦可回應於與給定條件相關聯之至少一個條件指令。當執行條件指令時,則將條件旗標3022之值與給定條件相比較。若條件旗標3022滿足該條件,則執行關聯處理操作。若未滿足該條件,則不執行關聯處理操作(或者,對於一些種類之條件指令而言,若未滿足該條件,則可執行與關聯處理操作不同之處理操作)。
舉例而言,條件相加指令ADDEQ與EQ條件相關聯。第16圖說明若設定Z旗標則滿足EQ條件。當執行條件相加指令ADDEQ時,則若設定Z旗標,則將執行關聯相加運算,而若未設定Z旗標,則將不會執行相加運算。
條件指令之處理結果無法僅根據指令串流來決定,此是由於指令串流不含用於決定是否滿足條件之資訊。因此,追蹤電路3006回應於至少一個選定之指令,以產生追蹤資料元件,該追蹤資料元件包括已追蹤條件值,該已追蹤條件值指示條件旗標3022之值。診斷裝置3012可使用包括在追蹤資料元件中之已追蹤條件值來決定是否滿足條件,且因此可決定相應條件指令之處理結果。
追蹤電路3006維護一或更多控制旗標3026,用於監視是否已追蹤條件旗標3022之值。追蹤電路3006可選擇是否基於一或更多控制旗標3026之當前值在執行給定指令時追蹤條件旗標值。在一個實施例中,追蹤電路3006包括單一控制旗標3026(參見如下文所述之第22圖至第24圖之實施例),而在另一實施例中追蹤電路3006包括各自與條件旗標3022中之一者相對應之多個控制旗標3026(參見下文相對於第25圖至第27圖所述之實施例)。
診斷電路3016維護一組相應控制旗標3028,該等控制旗標3028以與追蹤電路3006之控制旗標3026相對應之方式用來決定是否期望在給定程式指令之追蹤串流中提供包括已追蹤條件值之追蹤資料元件。
可以不同方式指示追蹤資料元件內之已追蹤條件值。在一個實例中,追蹤電路3006可在追蹤資料元件中包括條件旗標3022之至少一個子集之實際值。在條件指令僅取決於條件旗標3022之子集的情況下,則追蹤電路3006可僅包括條件旗標值之相關子集,或可包括條件旗標3022之所有值。
或者,追蹤電路3006可在追蹤資料元件中包括指示條件旗標3022之值之特定組合的識別碼。若條件值之一些組合比其他組合更常用,則此可提供有效率的編碼。舉例而言,第17圖圖示將2位元識別符用於條件狀態中之三個狀態(例如,設定C旗標之狀態、設定N旗標之狀態及設定Z旗標及C旗標之狀態)的實例。隨後將4位元識別符用於不同條件狀態中之多於三個狀態。若需要條件旗標值之其他組合中之一者,則可使用與第17圖中所示之方案不同的編碼方案而將當前條件旗標值之單獨指示提供於追蹤資料元件中。
將瞭解到,識別符之編碼方案,及哪些條件狀態由特定識別符表示之選擇僅為實例。儘管如此,此實例實證可藉由將具有最少位元之識別符分配至最頻繁出現之條件狀態,來減少追蹤資料之總量。舉例而言,若處理裝置3002於70%之時間處於具有2位元識別符之三個條件狀態中之一者中,於29%之時間處於具有4位元識別符之三個狀態中之一者中,且於1%之時間處於其他狀態中之一者中(且據說彼等其他狀態由8位元識別符表示),則用來識別當前條件狀態之位元平均數目將為2*0.7+4*0.29+8*0.01=2.64(星號*指示乘號)。因此,包括在追蹤串流中以指示當前條件狀態之位元平均數目將小於若追蹤資料元件簡單地包括條件旗標之當前值時將使用之4個位元。
追蹤電路3006可追蹤正由處理電路3004執行之程式之不同指令處的條件旗標3022之值。追蹤電路3006可選擇一或更多選定之指令,用於觸發追蹤資料元件之產生,該追蹤資料元件包括指示值的條件旗標。該選定之指令可為條件指令,但是亦可為另一指令。
舉例而言,第18圖至第20圖圖示包括已追蹤條件值之追蹤資料元件係在執行條件更新指令之後產生之實例。第18圖圖示回應於處理電路3004之操作而產生追蹤資料之方法。在步驟3040處,處理電路3004處理正執行之程式之下一指令,且追蹤電路3006監視藉由處理電路3004之彼指令處理。在步驟3042處,追蹤電路3006決定正由處理電路3004執行之指令是否為條件更新指令。若指令為條件更新指令,則在步驟3044處追蹤電路3006產生並輸出追蹤資料元件,該追蹤資料元件包括已追蹤條件值,該已追蹤條件值指示由執行條件更新指令產生之條件旗標3022之經更新值。另一方面,若指令並非條件更新指令,則省略步驟3044。在步驟3046處,決定是否存在待由處理電路3004處理之另一指令。若存在另一指令,則方法返回至步驟3040,而相反若不存在剩餘指令,則方法在步驟3048處結束。
第19圖說明用於分析使用第18圖之方法由追蹤電路3006產生之追蹤串流的相應診斷方法。診斷裝置3012接收哪些指令由處理電路3004執行之指示。在步驟3050處,診斷電路3016分析指示為正由處理電路3004執行之下一指令。在步驟3052處,診斷電路3016決定下一指令是否為條件指令。若指令為條件指令,則在步驟3054處診斷電路3016在追蹤資料串流中定位追蹤資料元件,該追蹤資料元件與在程式指令之指示中指示之最近條件更新指令相關聯。在步驟3056處,診斷電路3016基於包括在經定位追蹤資料元件中之已追蹤條件值來決定條件指令之處理結果。舉例而言,診斷電路3016可使用已追蹤條件值來決定是否滿足與條件指令相關聯之條件且因此決定是否執行關聯操作。若在步驟3052處決定下一指令並非條件指令,則省略步驟3054及步驟3056。在步驟3058處,決定是否存在待分析之另一指令。若存在另一指令,則方法返回至步驟3050,而若不存在更多指令,則方法在步驟3060處結束。
第20圖說明根據第18圖之方法產生追蹤串流及根據第19圖之方法分析追蹤串流之實例。第20圖圖示由處理電路3004執行之程式指令集。當執行分支指令時,則產生指示是否取得分支的追蹤資料元件。當遭遇條件更新指令(例如,CMP)時,則根據第18圖之步驟3044產生包括已追蹤條件值CPSR之追蹤資料元件。當分析追蹤串流時,則診斷裝置可使用已追蹤條件值來決定任何隨後條件指令(例如,第20圖中所示之指令MOVNE、MOVEQ及ADDHI)之處理結果。
一些指令可為條件更新指令及條件指令兩者。舉例而言,在第20圖中之記憶體位置2100處之程式指令為用於控制處理電路3004以決定條件旗標3022之當前值是否滿足不等(NE)條件(參見第16圖)之條件比較指令CCMPNE。若滿足不等條件,則處理電路3004執行比較運算且基於比較結果更新條件旗標3022。當CCMPNE指令為條件指令時,則診斷電路3016基於包括在條件旗標之最近更新處的追蹤串流中之已追蹤條件值(亦即,包括在記憶體位置2000處用於比較指令CMP之CPSR值)來決定CCMPNE指令之處理結果。若在執行CCMPNE指令之後滿足NE條件,則CCMPNE指令亦為條件更新指令,且因此追蹤電路3006產生用於指令CCMPNE之追蹤資料元件,該指令CCMPNE包括指示條件旗標3022之經更新值之已追蹤條件值。此追蹤資料元件可用於決定任何後續條件指令之結果。
或者,在一些實例中可不考慮是否滿足NE條件地將CCMPNE指令視為條件更新指令,且因此可始終為CCMPNE指令產生指示條件旗標之值的追蹤資料元件。若NE條件在追蹤時仍未計算,則此可為有用的。
當單一條件更新指令繼之以全部取決於相同組之條件值的一系列條件指令時,第18圖至第20圖中所示之技術可為有用的,此是因為在此狀況下少量追蹤資料足以決定若干隨後指令之結果。
然而,在一些情形中可存在無任何介入條件指令而連續發生之許多條件更新指令,該等介入條件指令使用條件旗標之經更新值。舉例而言,在第21圖中,程式指令之序列包括若干比較CMP及位元測試TST指令,該等比較CMP及位元測試TST指令導致條件旗標更新,但是此等指令之前四個指令在彼等經更新值未曾由條件指令使用之情況下更新旗標。在此情形下,可在執行條件指令之後更有效率地產生包括已追蹤條件值之追蹤資料元件(例如,如下文參閱第22圖至第24圖及第25圖至第27圖所述)。在第21圖中所示之實例中,則可在執行條件指令MOVNE時而非在每一條件更新時產生追蹤資料元件。
將瞭解到,此等技術之混合或許為可能的,且因此一些追蹤單元可在執行條件更新指令時且在執行條件指令時產生已追蹤條件值。
第22圖圖示在執行條件指令時追蹤條件旗標3022之追蹤方法。在此實施例中,追蹤電路3006維護控制旗標3026,用於決定是否追蹤條件旗標3022之值。控制旗標3026具有「清除」狀態及「設定」狀態(例如,「清除」狀態可為具有0值之控制旗標3026,而「設定」狀態可為具有1值之控制旗標3026,或反之亦然)。
在第22圖之步驟3070處,追蹤電路3006監視執行下一指令之處理電路3004。在步驟3072處,追蹤電路3006決定彼指令是否為條件指令。若指令為條件指令,則在步驟3074處追蹤電路3006決定是否清除控制旗標。若清除控制旗標,則在步驟3076處追蹤電路3006產生並輸出追蹤資料元件,該追蹤資料元件包括指示條件狀態暫存器3020之當前狀態之已追蹤條件值。隨後在步驟3078處設定控制旗標。另一方面,若在步驟3074處設定控制旗標,則省略步驟3076及步驟3078。若在步驟3072處決定指令並非條件指令,則省略步驟3074至步驟3078。
隨後,在步驟3080處,決定下一指令是否為條件更新指令。應注意,一些指令可為條件指令及條件更新指令兩者。若指令為條件更新指令,則在步驟3082處清除控制旗標。否則,省略步驟3082。隨後在步驟3084處,決定是否存在待由處理電路3004處理之另一指令。若存在另一指令,則方法返回至步驟3070。若不存在更多指令,則方法在步驟3086處結束。
以下指示用於實施第22圖之方法之一些假碼(術語「標誌」指示控制旗標3026):
On an instruction:
If instruction is conditional:
If marker is clear:
Trace the CPSR
Set marker
If instruction updates the CPSR:
Clear marker
第22圖之方法幫助減少追蹤資料之量,此是因為追蹤電路3006產生追蹤資料元件,該追蹤資料元件在發生在條件更新指令之後的第一條件指令上包括已追蹤條件值。對於後續條件指令而言,則不必追蹤條件值,此是因為先前條件指令已具有關聯追蹤資料元件,該關聯追蹤資料元件含有指示條件旗標3022之狀態之資訊。
第23圖圖示用於分析在第22圖之方法中產生之追蹤串流之相應診斷方法。診斷裝置3012具有控制旗標3028,該控制旗標3028具有與追蹤電路3006之控制旗標3026之狀態相對應的「清除」狀態及「設定」狀態。在步驟3100處,診斷電路3016分析包括在由處理電路3004處理之程式指令之指示中之下一指令。在步驟3102處,決定是否存在條件指令之指示。若指令為條件指令,則在步驟3104處決定是否清除診斷控制旗標3028。若清除診斷控制旗標,則在步驟3106處診斷電路3016定位用於彼條件指令之關聯追蹤資料元件,且在步驟3108處基於包括在關聯追蹤資料元件中之已追蹤條件值來決定條件指令之處理結果。在步驟3110處,將診斷控制旗標置放於「設定」狀態中。
另一方面,若在步驟3104處不清除診斷控制旗標,則方法進行至步驟3112,在該步驟3112處由診斷電路3016定位另一追蹤資料元件。該另一追蹤資料元件為與先前分析之條件指令相關聯之資料元件。在步驟3114處,診斷電路3016基於包括在另一追蹤資料元件中之已追蹤條件值,來決定當前分析之條件指令之處理結果,該另一追蹤資料元件係針對先前分析之條件指令產生。若在步驟3102處,決定指令並非條件指令,則省略步驟3104至步驟3114。
隨後在步驟3116處決定正分析之指令是否為條件更新指令。指令可為條件指令及條件更新指令兩者。若指令為條件更新指令,則在步驟3118處清除診斷控制旗標3028,而若指令並非條件更新指令,則省略步驟3118。在步驟3120處,決定是否存在待分析之另一指令。若存在另一指令,則方法返回至步驟3100,而否則方法在步驟3122處結束。
因此,診斷電路使用與追蹤電路3006之控制旗標3026相對應之診斷控制旗標3028來決定預計是否在給定條件指令之追蹤串流中包括關聯追蹤資料元件。若存在此關聯追蹤資料元件,則可基於包括在關聯追蹤資料元件中之已追蹤條件值來決定條件指令之處理結果。若不存在關聯追蹤資料元件,則將存在與先前條件指令相關聯之追蹤資料元件,該先前條件指令將含有使當前條件指令之處理結果能夠得以決定之已追蹤條件值。當遭遇條件更新指令時,則清除診斷控制旗標3028,以指示預計下一條件指令將具有關聯追蹤資料元件。
第24圖說明將第22圖及第9圖之方法應用於第20圖中所示之程式指令串流之實例。此外,追蹤在記憶體位置1600處之分支指令之分支取得結果。回應於執行儲存在記憶體位置2000處之條件更新指令CMP,則追蹤電路3006,根據第22圖之步驟3082,清除該條件更新指令CMP之控制旗標3026。以類似方式,當診斷電路3016分析指令時,則該診斷電路3016將藉由根據第23圖之步驟3118清除條件更新指令CMP之診斷控制旗標3028,而回應條件更新指令CMP之指示。
當追蹤電路3006遭遇儲存在記憶體位置2004處之條件指令MOVNE時,則追蹤電路3006決定控制旗標3026當前處於清除狀態中,且因此在第22圖之步驟3076處產生包括已追蹤條件值CPSR之追蹤資料元件。隨後根據第22圖之步驟3078設定控制旗標。以相應方式,當分析指令時,診斷電路3016將偵測記憶體位置2004處之條件指令MOVNE之指示,且此後該診斷電路3016將藉由定位追蹤串流中之關聯追蹤資料元件及基於包括在追蹤資料元件中之已追蹤條件值而決定MOVNE指令之處理結果,來回應正清除之診斷控制旗標3028。此後,診斷電路3016在第23圖之步驟3110處設定診斷控制旗標3028。
此後,對於記憶體位置2008及記憶體位置200C處之後續條件指令而言,追蹤電路3006偵測到控制旗標3026處於設定狀態中,且因此不產生相應追蹤資料元件。以相應方式,診斷電路3016偵測診斷控制旗標3028處於設定狀態中,且因此第23圖之隨後步驟3112及步驟3114定位與儲存在記憶體位置2004處之先前條件指令相關聯之追蹤資料元件。診斷電路3016基於用於記憶體位置2004處之指令之先前追蹤資料元件,來決定記憶體位置2008及記憶體位置200C處之指令之處理結果。
以此方式,可產生追蹤串流,在該追蹤串流中,繼條件旗標3022之更新後執行之第一條件指令觸發包括已追蹤條件值之追蹤資料元件之產生。
第25圖至第27圖圖示實施例,在該實施例中,追蹤電路3006監視已追蹤哪些條件旗標3022,且該追蹤電路3006在產生用於條件指令之追蹤資料元件時追蹤尚未追蹤且彼條件指令所需要之額外條件旗標。此方法利用複數個控制旗標3026,每一該複數個控制旗標3026與條件旗標3022中之各別條件旗標相對應。每一控制旗標3026皆具有「清除」狀態及「設定」狀態。診斷電路3016具有一群組相應診斷控制旗標3028,該群組相應診斷控制旗標3028亦具有「清除」狀態及「設定」狀態。
第25圖說明追蹤處理電路3004之操作之方法。在步驟3140處,處理電路3004執行下一指令且由追蹤電路3006監視此指令之執行。在步驟3142處,決定指令是否為條件指令。若指令為條件指令,則在步驟3144處追蹤電路3006決定條件旗標3022之子集,該條件旗標3022之子集為決定條件指令之結果所需要。舉例而言,對於第16圖中所示之每一條件而言,在表中所指示之相應旗標為所需要的條件旗標之子集。HI條件例如需要C旗標及Z旗標。
在步驟3146處,追蹤電路3006決定是否清除與條件旗標3022之所需要子集相對應之控制旗標3026中的任何控制旗標。若不清除與條件旗標之所需要子集相對應之控制旗標中之任何控制旗標,則方法進行至步驟3152。若清除與條件旗標之所需要子集相對應之控制旗標中之任何一或更多控制旗標,則在步驟3148處追蹤電路3006產生並輸出追蹤資料元件,該追蹤資料元件包括已追蹤條件值,該已追蹤條件值至少指示條件旗標3022之所需要子集,其中已針對該條件旗標3022之所需要子集清除了相應控制旗標3026。可選地,已追蹤條件值亦可指示其他條件旗標,或可指示條件旗標3022中之所有條件旗標。隨後在步驟3150處,追蹤電路3006設定控制旗標,該控制旗標與在已追蹤條件值中指示之條件旗標相對應。若在步驟3142處決定指令並非條件指令,則省略步驟3144至步驟3150。
在步驟3152處,追蹤電路3006決定正由處理電路3004執行之指令是否為條件更新指令。若指令為條件更新指令,則在步驟3154處追蹤電路3006至少清除與作為條件更新指令之結果而更新之條件旗標3022相對應之控制旗標3026。可選地,在步驟3154處追蹤電路3006亦可清除其他控制旗標3026,或可清除控制旗標3026中之所有控制旗標。若指令並非條件更新指令,則省略步驟3154。隨後在步驟3156處,決定是否存在待由處理電路3004處理之另一指令。若存在此指令,則方法返回至步驟3140。否則,方法在步驟3158處結束。
以下指示用於實施第25圖之方法之假碼(術語「標誌」代表控制旗標3026):
On an instruction:
If instruction is conditional:
If any markers for flags required by this instruction are clear:
Trace at least the flags required
Set markers for the required flags
If instruction updates the CPSR:
Clear at least the markers for updated flags
或者,以下假碼可用來實施第25圖之方法:
On an instruction:
If instruction is conditional:
If any markers for flags required by this instruction are clear:
Trace at least the flags required
Set markers for the traced flags
If instruction updates the CPSR:
Clear at least the markers for updated flags
第26圖圖示分析由第25圖之方法產生之追蹤串流之方法。在步驟3160處,診斷電路3016分析由處理電路3004執行之指令之指示中指示的下一指令。若在步驟3162處決定下一指令為條件指令,則在步驟3164處診斷電路3016決定用於彼指令之條件旗標之所需要子集且決定是清除還是設定與條件旗標之所需要子集相對應的診斷控制旗標3028。在步驟3166處,若步驟3164已決定清除與條件旗標之所需要子集相對應之診斷控制旗標3028中之任何診斷控制旗標,則診斷電路3016在追蹤串流中定位包括第一已追蹤條件值之關聯追蹤資料元件。第一已追蹤條件值至少指示與已清除診斷控制旗標3028相對應之條件旗標之所需要子集的值。隨後診斷電路3016設定診斷控制旗標3028,該等診斷控制旗標3028為已清除的且與條件旗標3022之所需要子集相對應。
在步驟3168處,若步驟3164已決定設定與條件旗標之所需要子集相對應之任何診斷控制旗標3028,則診斷電路3016定位用於至少一個先前條件指令之至少一個另一追蹤資料元件。該另一追蹤資料元件包括至少一個另一已追蹤條件值,該至少一個另一已追蹤條件值指示與已設定的彼等診斷控制旗標相對應之條件旗標的值。隨後在步驟3170處診斷電路3016分析第一已追蹤條件值及/或至少一個另一已追蹤條件值(取決於在步驟3166及步驟3168處存取哪些已追蹤條件值),且隨後基於彼等已追蹤條件值來決定當前條件指令之處理結果。若在步驟3162處決定指令並非條件指令,則省略步驟3164至步驟3170。
在步驟3172處,診斷電路3016決定下一指示之指令是否為條件更新指令。若下一指令為條件更新指令,則在步驟3174處診斷電路3016至少清除與作為執行條件更新指令之結果而更新之條件旗標3022相對應之診斷控制旗標3028(診斷電路3016可基於條件更新指令之已演繹的處理結果來決定更新哪些條件旗標3022)。可選地,在步驟3174處診斷電路3016亦可清除診斷控制旗標3028中之其他診斷控制旗標,或可清除診斷控制旗標3028中之所有診斷控制旗標。若在步驟3172處下一指令並非條件更新指令,則省略步驟3174。在步驟3176處,決定是否存在待分析之另一指令。若存在另一指令,則方法返回至步驟3160,而否則方法在步驟3178處結束。
第27圖說明將第25圖之方法及診斷裝置3012應用於先前說明之程式指令串流之實例。在此實例中,假設回應於條件更新指令而清除所有控制旗標3026及診斷控制旗標3028,但是如上文所提及的,亦可能提供追蹤電路3006及診斷電路3016僅清除與已更新之條件旗標3022相對應之控制旗標3026、控制旗標3028的實施例。
在第27圖中,在針對分支指令產生之追蹤資料元件中指示分支取得結果。分支取得結果可由診斷電路3016用來決定由處理電路3004執行哪些指令。
在遭遇記憶體位置2000處之條件更新指令CMP時,追蹤電路3006清除所有控制旗標3026。類似地,當診斷電路3016遭遇條件更新指令CMP時,則該診斷電路3016清除該條件更新指令CMP之診斷控制旗標3028中之所有診斷控制旗標。
在執行記憶體位置2004處之條件指令MOVNE時,追蹤電路3006決定,對於「不等」條件NE,條件旗標之所需要子集為Z旗標(參見第16圖)。在第25圖之步驟3146處,追蹤電路3006決定清除與Z條件旗標相對應之控制旗標3026,且因此在步驟3148處產生追蹤資料元件,該追蹤資料元件包括指示至少Z旗標之值的已追蹤條件值。隨後在第25圖之步驟3150處設定與Z旗標相對應之控制旗標。
以相應方式,當分析追蹤串流時,診斷電路3016遭遇記憶體位置2004處之條件指令MOVNE且決定條件旗標之所需要子集為Z旗標。在此點處,清除與Z條件旗標相對應之診斷控制旗標3028,且因此診斷電路3016決定存在與MOVNE指令相對應之關聯追蹤資料元件。診斷電路3016定位關聯追蹤資料元件,該關聯追蹤資料元件包括指示Z旗標之值的已追蹤條件值。診斷電路3016基於用於儲存在記憶體位置2004處之MOVNE指令之已追蹤條件值而決定處理結果。隨後診斷電路3016設定與Z旗標相對應之診斷控制旗標3028。
當追蹤電路3006遭遇儲存在記憶體位置2008處之條件指令MOVEQ時,追蹤電路3006決定用於決定是否滿足「相等」條件EQ之旗標之所需要子集亦為Z旗標(參見第16圖)。在第25圖之步驟3146處,追蹤電路3006決定設定與Z旗標相對應之控制旗標,且因此省略第25圖之步驟3148及步驟3150且不產生包括已追蹤條件值之追蹤資料元件。在分析追蹤串流時,診斷電路3016可類似地偵測設定與Z旗標相對應之診斷控制旗標3028。因此,診斷電路3016將在第26圖之步驟3168處定位用於儲存在記憶體位置2004處之先前條件指令MOVNE的追蹤資料元件,且基於包括在用於MOVNE指令之追蹤資料元件中之已追蹤條件值來決定MOVEQ指令之結果。
在記憶體位置200C處存在條件相加指令ADDHI,該條件相加指令ADDHI取決於HI條件。當執行此指令時,追蹤電路3006決定條件旗標之所需要子集為C旗標及Z旗標(參見第16圖)。追蹤電路3006決定與C旗標及Z旗標相對應之相應控制旗標3026之狀態,且決定設定與Z條件旗標相對應之控制旗標3026,但仍清除與C條件旗標相對應之控制旗標3026。因此,在第25圖之步驟3148處,追蹤電路3006產生至少包括指示C旗標之值的追蹤資料元件。隨後設定與C條件旗標相對應之控制旗標3026。
在分析追蹤串流時,診斷裝置3012偵測用於記憶體位置200C處之ADDHI指令之條件旗標之所需要子集為C旗標及Z旗標。由於清除與C旗標相對應之診斷控制旗標3028,因此在步驟3166處診斷電路3016將在追蹤串流中定位與指示C旗標值之ADDHI指令相關聯之追蹤資料元件。在第26圖之步驟3168處,診斷電路3016將亦定位另一追蹤資料元件,此是因為在步驟3164處設定用於Z條件旗標之診斷控制旗標3028。在此實例中,該另一追蹤資料元件係針對記憶體位置2004處之MOVNE指令產生之追蹤資料元件。在第26圖之步驟3170處,診斷電路3016基於包括在用於記憶體位置2004處之MOVNE指令之追蹤資料元件中的已追蹤條件值及包括在用於記憶體位置200C處之ADDHI指令之追蹤資料元件中的已追蹤條件值兩者,而決定ADDHI指令之處理結果。
以類似方式,追蹤電路3006產生追蹤資料且診斷電路3016分析用於第27圖中所示之後續指令之追蹤資料。
雖然上文實施例已描述在更新條件旗標3022時正清除之控制旗標3026及診斷控制旗標3028,但是其他事件亦可觸發清除控制旗標3026或診斷控制旗標3028。舉例而言,異常事件可使控制旗標得以清除。若由異常事件觸發之異常處理器正由追蹤電路3006追蹤,則在出現異常事件時清除控制旗標3026確保將在啟動異常處理器時追蹤條件旗標3022。或者,若並非正追蹤異常處理器,則在出現異常事件時清除控制旗標3026可確保將在從異常處理返回之後追蹤條件旗標3022。
此外,追蹤電路3006可週期性地清除控制旗標,以便將已追蹤條件值週期性地包括在追蹤串流中,以為診斷裝置3012提供參考點。診斷電路3016可在參考點處開始分析追蹤資料,此是由於在參考點處包括之已追蹤條件值使條件旗標之狀態能夠在不需要來自先前追蹤資料元件之資訊的情況下得以決定。此為有用的,此是由於診斷電路3016能夠直接跳轉至感興趣的追蹤串流之區域,而非必須貫穿整個追蹤串流工作以到達感興趣區域。
此外,為改良處理效能,一些處理器可在已知實際上是否應執行指令之前執行彼等指令之臆測執行。有時,事實上不應執行一或更多臆測執行之指令。在偵測誤臆測時,處理器可反轉任何錯誤執行之指令之結果,以恢復出現在執行錯誤執行之指令之前的處理器狀態。已錯誤地執行多少個指令對於追蹤電路3006可為未知的。為確保可根據追蹤串流決定由誤臆測之校正產生之條件旗標值,追蹤電路3006可在偵測到誤臆測時即清除控制旗標3026。
對於此等事件中之任何事件而言,追蹤電路3006可在追蹤串流中包括指示已清除控制旗標3026之資訊。診斷電路3016可藉由清除診斷控制旗標3028來回應此資訊。
第22圖至第27圖說明指示條件旗標3022之值的已追蹤條件值包括在追蹤串流中以使條件指令之結果能夠得以由診斷裝置3012決定之實施例。然而,此等技術亦可應用於指示值的另一種結果(例如,通過/失敗結果)包括在追蹤串流中以使條件指令之結果能夠得以決定之實施例。
儘管已在本文中參考隨附圖式詳細地描述本發明之說明性實施例,但是將理解,本發明不限於彼等精確實施例,且在不脫離如由隨附申請專利範圍界定之本發明之範疇及精神的情況下,可由熟習此項技術者在該等精確實施例中實現各種變化及修改。
90...指令記憶體
92...電腦程式
100...中央處理單元/CPU
110...指令提取單元
120...管線
122...解碼階段
123...第一路徑
130...暫存器組
140...算術邏輯單元/ALU
150...當前程式狀態暫存器
152...第二路徑
160...記憶體介面
172...指令輸出介面/輸出介面/指令介面/CPU指令介面
174...結果輸出介面/輸出介面/追蹤結果介面
180...嵌入式追蹤巨集單元/ETM/追蹤電路系統/追蹤單元
182...指令輸入介面/指令介面/ETM指令介面
184...結果輸入介面/結果介面/ETM結果介面
185...CPSR值儲存緩衝器/緩衝器
186...指令索引碼翻譯電路系統/索引碼翻譯電路系統/ETM指令索引碼翻譯電路系統
187...符記緩衝器/額外電路系統
188...結果索引碼翻譯電路系統/索引碼翻譯電路系統/ETM結果索引碼翻譯電路系統
190...第一追蹤產生電路系統
192...第二追蹤產生電路系統
193...CPSR表
194...先進先出/FIFO
196...診斷電路系統/診斷工具
197...c原子FIFO
198...路標點FIFO
199...電腦程式映像
200...CPSR表
410...階段/「未追蹤」狀態
420...「待追蹤」狀態
430...「已追蹤」狀態
810...階段
820...階段
830...階段
832...階段
840...階段
842...階段
850...階段
860...階段
1000...階段
1010...階段
1012...階段
1014...階段
1020...階段
1030...階段
1040...階段
1042...階段
1044...階段
1050...階段
1060...階段
1070...階段
1600...記憶體位置
2004...記憶體位置
2008...記憶體位置
200C...記憶體位置
2000...階段/記憶體位置
2100...階段/記憶體位置
2110...階段
2120...階段
2130...階段
2200...階段
2210...階段
2222...階段
2224...階段
2230...階段
2300...階段
2310...階段
2312...階段
2314...階段
2320...階段
2400...階段
3002...處理裝置
3004...處理電路
3006...追蹤電路
3008...記憶體系統
3010...輸出埠
3012...診斷裝置
3014...輸入埠
3016...診斷電路
3020...條件狀態暫存器
3022...條件旗標
3026...控制旗標
3028...控制旗標/診斷控制旗標
3040...步驟
3042...步驟
3044...步驟
3046...步驟
3048...步驟
3050...步驟
3052...步驟
3054...步驟
3056...步驟
3058...步驟
3060...步驟
3070...步驟
3072...步驟
3074...步驟
3076...步驟
3078...步驟
3080...步驟
3082...步驟
3084...步驟
3086...步驟
3100...步驟
3102...步驟
3104...步驟
3106...步驟
3108...步驟
3110...步驟
3112...步驟
3114...步驟
3116...步驟
3118...步驟
3120...步驟
3122...步驟
3140...步驟
3142...步驟
3144...步驟
3146...步驟
3148...步驟
3150...步驟
3152...步驟
3154...步驟
3156...步驟
3158...步驟
3160...步驟
3162...步驟
3164...步驟
3166...步驟
3168...步驟
3170...步驟
3172...步驟
3174...步驟
3176...步驟
3178...步驟
R14...鏈接暫存器
R15...程式計數器暫存器
第1圖示意性地說明根據本發明之實施例之資料處理系統;
第2圖更詳細地示意性說明第1圖之追蹤單元之當前程式狀態暫存器表;
第3A圖為表,該表示意性地說明與四個程式指令之序列之執行相關聯之追蹤及標記;
第3B圖、第3C圖及第3D圖為表,該等表展示當亂序而非按次序執行與第3A圖之表中完全相同的四個指令之序列時,追蹤哪些當前程式狀態暫存器(Current Program Status Register;CPSR)值及產生哪些c結果索引碼;
第4圖為狀態機,該狀態機示意性地說明用於第1圖之CPSR 150之三個狀態CPSR旗標;
第5圖為表,該表示意性地說明三個條件指令(ADDEQ、ADDNE、ADDVS)之執行,其中在解碼第三個條件指令之後評估條件結果,且該表展示條件結果有效負載及與每一指令解碼階段相對應之CPSR表動作;
第6A圖為表,該表示意性地說明用於條件指令標籤B之更新必須不使新c原子索引碼在指令取消事件之後立即得以針對ADDNE指令產生之狀況;
第6B圖為表,該表示意性地說明,與第6A圖中之情形相反,在取消條件指令之後使用相同c原子索引碼並非始終正確;
第6C圖、第6D圖及第6E圖描述參閱第3A圖至第3D圖所述之技術的替代性技術,在該替代性技術中維護二態CPSR表;
第7A圖至第7D圖為表,該等表示意性地說明在彼相同追蹤資料串流內如何處理路標點及c原子;
第8圖為流程圖,該流程圖示意性地說明在收到追蹤資料串流之後由第1圖之診斷電路系統採取之動作,該追蹤資料串流含有條件原子封包及路標點封包兩者;
第9A圖至第9C圖為表,該等表示意性地說明路標點及條件指令追蹤資料項目之序連連接;
第10圖為流程圖,該流程圖示意性地說明由第1圖之診斷電路系統採取以分析進入追蹤資料之動作;
第11A圖至第11C圖示意性地說明重新對準追蹤資料項目在追蹤資料串流中之相對定位;
第12A圖及第12B圖為表,該等表示意性地說明如何基於條件結果追蹤資料來隱含條件指令執行;
第13圖為表,該表示意性地說明類似於第12B圖之序列之追蹤資料序列,但是在該追蹤資料序列中,展示儲存在「最後c原子產生索引碼」暫存器及「最後c原子輸出索引碼」暫存器中之值;
第14a圖為流程圖,該流程圖示意性地說明在輸出追蹤串流及實施產生某些c原子但是緩衝該些c原子之追蹤壓縮方案過程中第1圖之ETM之動作;
第14b圖示意性地說明根據本發明之實施例之追蹤單元;
第15圖示意性地說明處理裝置、追蹤電路及診斷裝置;
第16圖說明用於由英國劍橋(Cambridge,UK)之ARM Limited設計之處理器中之條件旗標及條件狀態的實例;
第17圖說明用於識別條件旗標值之特定設定之識別符的實例;
第18圖說明在執行條件更新指令之後即追蹤條件旗標之值的方法;
第19圖說明分析在第18圖之方法中產生之追蹤資料之相應方法;
第20圖說明在第18圖之方法中產生之追蹤串流之實例及根據第19圖之方法分析該追蹤串流之實例;
第21圖說明程式指令之序列之實例,其中多個條件更新指令順序地發生而無任何介入條件指令;
第22圖說明在執行條件指令之後即追蹤條件旗標之值的方法;
第23圖說明分析在第22圖之方法中產生之追蹤資料之相應方法;
第24圖說明在第19圖之方法中產生之追蹤串流之實例及根據第20圖之方法分析該追蹤串流之實例;
第25圖說明在執行條件指令之後即追蹤條件旗標之至少一個需要子集之值的方法;
第26圖說明分析在第25圖之方法中產生之追蹤資料的相應方法;以及
第27圖說明使用第25圖之方法產生追蹤串流之實例及使用第26圖之方法分析該追蹤串流之實例。
90...指令記憶體
92...電腦程式
100...中央處理單元/CPU
110...指令提取單元
120...管線
122...解碼階段
123...第一路徑
130...暫存器組
140...算術邏輯單元/ALU
150...當前程式狀態暫存器
152...第二路徑
160...記憶體介面
172...指令輸出介面/輸出介面/指令介面/CPU指令介面
174...結果輸出介面/輸出介面/追蹤結果介面
180...嵌入式追蹤巨集單元/ETM/追蹤電路系統/追蹤單元
182...指令輸入介面/指令介面/ETM指令介面
184...結果輸入介面/結果介面/ETM結果介面
186...指令索引碼翻譯電路系統/索引碼翻譯電路系統/ETM指令索引碼翻譯電路系統
188...結果索引碼翻譯電路系統/索引碼翻譯電路系統/ETM結果索引碼翻譯電路系統
190...第一追蹤產生電路系統
192...第二追蹤產生電路系統
193...CPSR表
194...先進先出/FIFO
196...診斷電路系統/診斷工具
197...c原子FIFO
198...路標點FIFO
199...電腦程式映像
200...CPSR表
R14...暫存器/鏈接暫存器
R15...暫存器/程式計數器暫存器

Claims (63)

  1. 一種追蹤單元,該追蹤單元經配置以產生追蹤資料之項目,該等追蹤資料之項目指示一資料處理裝置之處理活動,該追蹤單元包含:一追蹤輸入介面,該追蹤輸入介面用於自該資料處理裝置接收至少一個指令觀察指示符及至少一個結果輸出指示符,該至少一個指令觀察指示符指示一條件指令之執行,該至少一個結果輸出指示符指示執行該至少一個條件指令之一結果藉由該資料處理裝置之輸出;以及追蹤電路系統,該追蹤電路系統用於處理該至少一個指令觀察指示符及該至少一個結果輸出指示符,且該追蹤電路系統經配置以自該至少一個指令觀察指示符及該至少一個結果輸出指示符產生相應條件指令追蹤資料項目及條件結果追蹤資料項目,且獨立地輸出該等條件指令追蹤資料項目與該等條件結果追蹤資料項目,從而賦能藉由一診斷裝置對條件指令與相應條件結果之分離追蹤分析。
  2. 如請求項1所述之追蹤單元,其中該指令觀察指示符係在一第一處理週期中在該追蹤輸入介面處接收,且該結果輸出指示符係在一第二處理週期中在該追蹤輸入介面處接收,該第二處理週期不同於該第一處理週期。
  3. 如請求項1所述之追蹤單元,其中該追蹤單元包含一結果輸出指示符緩衝器,該結果輸出指示符緩衝器用於儲存自該資料處理裝置收到的複數組結果輸出指示符,該追蹤單元經配置以週期性地選擇一組儲存的結果,以用於輸出至該追蹤電路系統供處理並回應於該等指令觀察指示符中之一者,該等指令觀察指示符指示參考一組結果輸出指示符的一條件指令,該緩衝器當前為該組結果輸出指示符儲存一有效值,該追蹤單元經配置以選擇該組當前儲存之有效結果輸出指示符以用於輸出,使得可儲存一組新結果輸出指示符。
  4. 如請求項3所述之追蹤單元,其中該資料處理裝置包含複數個當前程式狀態暫存器,該複數個當前程式狀態暫存器經配置以儲存一各別組條件碼旗標值,該各別組條件碼旗標值指示如何處理一條件指令,該緩衝器包含一儲存位置,該儲存位置用於儲存與該複數個當前程式狀態暫存器中之每一者相對應之一組結果輸出指示符,該等組結果輸出指示符中之每一者皆包含該等條件碼旗標值中之至少一些。
  5. 如請求項1所述之追蹤單元,其中該資料處理裝置包含至少一個當前程式狀態暫存器,該至少一個當前程式狀態暫存器經配置以儲存一各別組條件碼旗標標記,該各別組條件碼旗標標記經測試以決定是否應輸出一條件指令作為追蹤資料之該等項目,且其中該追蹤單元包含一資料儲存器,該資料儲存器用於儲存一當前程式狀態暫存器表,該當前程式狀態暫存器表列出與該至少一個當前程式狀態暫存器及該各別組條件碼旗標標記之至少一個子集相關聯之一狀態。
  6. 如請求項5所述之追蹤單元,其中該當前程式狀態暫存器表經配置以儲存關於條件碼旗標之該子集中之每一者之三個不同狀態。
  7. 如請求項6所述之追蹤單元,其中該三個不同狀態包含:已追蹤;待追蹤;以及未追蹤。
  8. 如請求項5所述之追蹤單元,其中該三個不同狀態係藉由維護一發送中表及一當前CPSR表來追蹤,該發送中表具有用於每一CPSR之每一旗標之兩個狀態,該每一CPSR指示在由該資料處理裝置發出時應追蹤哪些旗標,該當前CPSR表儲存用於一當前CPSR之每一旗標之至少兩個狀態,該當前CPSR指示是否將追蹤一條件指令作為一條件指令追蹤資料項目。
  9. 如請求項5所述之追蹤單元,其中該追蹤電路系統使用該當前程式狀態暫存器表來決定何時需要該等條件結果追蹤資料項目及應追蹤該組條件碼旗標中之何者。
  10. 如請求項2所述之追蹤單元,其中該追蹤輸入介面自該資料處理裝置接收一指令標籤及一結果標籤,該指令標籤與該指令觀察指示符相對應,該結果標籤與該結果輸出指示符相對應。
  11. 如請求項10所述之追蹤單元,其中該指令標籤及該結果標籤係由該追蹤電路系統輸出。
  12. 如請求項10所述之追蹤單元,其中該追蹤電路系統經配置以執行一標籤至索引碼(key)轉換操作,在該標籤至索引碼轉換操作中,將與該指令觀察指示符相關聯之該指令標籤轉換為與該條件指令追蹤資料項目相對應之一指令索引碼,且將與該結果輸出指示符相關聯之該結果標籤轉換為與該條件結果追蹤資料項目相對應之一結果索引碼,且其中該索引碼轉換操作係取決於儲存在該當前程式狀態暫存器表中之該狀態而執行。
  13. 如請求項12所述之追蹤單元,其中該追蹤電路系統包含追蹤壓縮電路系統,該追蹤壓縮電路系統經配置以緩衝與一收到的指令觀察指示符相對應之該等條件指令追蹤資料項目中之至少一者之輸出,該收到的指令觀察指示符之出現可由該診斷裝置自藉由該追蹤單元之該等條件結果追蹤資料項目中之一相應條件結果追蹤資料項目之輸出來推理。
  14. 如請求項13所述之追蹤單元,其中該追蹤電路系統經配置以產生並輸出用於該經緩衝條件指令追蹤資料項目之該等結果索引碼中之一者,且其中該輸出之結果索引碼係由該診斷電路系統用來推理該經緩衝條件指令追蹤資料項目之輸出。
  15. 如請求項13所述之追蹤單元,其中該追蹤電路系統經配置以監視並維護一緩衝記錄,該緩衝記錄指示該等收到的指令觀察指示符中何者具有由該追蹤電路系統緩衝之一相應條件追蹤資料項目之輸出。
  16. 如請求項14所述之追蹤單元,其中該緩衝記錄包含一最近產生條件指令追蹤資料項目及一最近輸出條件指令追蹤資料項目之一記錄。
  17. 如請求項16所述之追蹤單元,其中當執行一索引碼比較。以決定與該條件指令追蹤資料項目相對應之一索引碼是否大於與該最近輸出條件指令追蹤資料項目相對應之一索引碼且小於或等於與該最近產生條件指令追蹤資料項目相對應之一索引碼時,決定已緩衝一條件指令追蹤資料項目。
  18. 如請求項16所述之追蹤單元,其中該索引碼之值在到達一最大值時旋疊,且其中該索引碼比較遵照模運算。
  19. 如請求項12所述之追蹤單元,其中該標籤至索引碼轉換操作經執行,使得當該追蹤單元接收到該等指令觀察指示符中之一者時,使用該指令標籤查找該當前程式狀態暫存器表,以識別該等當前程式狀態暫存器中之一適當當前程式狀態暫存器,該適當當前程式狀態暫存器儲存條件碼標記之一相關子集。
  20. 如請求項19所述之追蹤單元,其中在該追蹤電路系統執行該標籤至索引碼轉換操作時,當儲存在該當前程式狀態暫存器表中之條件碼標記之該相關子集中沒有一個指示該等條件碼標記為待追蹤時,則將一新索引碼值分配至一新產生條件指令追蹤資料項目,且當儲存在該當前程式狀態暫存器表中之條件碼標記之該子集中之一或更多者指示該等條件碼標記為待追蹤時,則將一重複性索引碼值分配至一新產生條件指令追蹤資料項目,該重複性索引碼值重複一最近分配之索引碼值。
  21. 如請求項20所述之追蹤單元,其中該追蹤電路系統包含追蹤壓縮電路系統,該追蹤壓縮電路系統經配置以緩衝該等條件指令追蹤資料項目中之至少一者之輸出,該等條件指令追蹤資料項目具有該等新索引碼值,該等新索引碼值之出現可由該診斷裝置自藉由該追蹤單元之該等條件結果追蹤資料項目中之一相應一或更多者之輸出來推理,且其中不緩衝與該等重複性索引碼值相對應之條件指令追蹤資料項目。
  22. 如請求項21所述之追蹤單元,其中該追蹤電路系統經配置以將該等條件結果追蹤資料項目與是否允許該相應一或更多條件指令追蹤資料項目由該診斷工具推理之一指示一起供應至該診斷工具。
  23. 如請求項22所述之追蹤單元,其中當自供應至該診斷工具之相應條件結果追蹤資料項目推理該一或更多條件指令追蹤資料項目時,自該追蹤壓縮電路系統之該緩衝器移除該一或更多條件指令追蹤資料項目,且該追蹤電路系統並不輸出該一或更多條件指令追蹤資料項目。
  24. 如請求項21所述之追蹤單元,其中若一相應條件結果索引碼與當前由該追蹤壓縮電路系統之該緩衝器緩衝之一條件指令索引碼相同,則允許推理該一或更多條件指令追蹤資料項目。
  25. 如請求項1所述之追蹤單元,該追蹤單元進一步包含追蹤結果組合電路系統,該追蹤結果組合電路系統用於接收由該追蹤電路系統產生之該等條件結果追蹤資料項目且用於產生該等條件結果追蹤資料項目中之至少一些之一壓縮表示及儲存該等壓縮表示,且該追蹤結果組合電路系統組合該等壓縮表示中之至少一些,使得將追蹤資料項目之多個壓縮表示輸出為組合追蹤資料項目。
  26. 如請求項25所述之追蹤單元,其中該追蹤結果組合電路系統經配置以產生並儲存該等壓縮表示,且在收到無法由該追蹤結果組合電路系統壓縮之一條件結果追蹤資料項目時,將追蹤資料項目之該等儲存之壓縮表示輸出為組合追蹤資料項目,並隨後輸出無法壓縮之該條件結果追蹤資料項目。
  27. 如請求項1所述之追蹤單元,其中該追蹤電路系統經配置以自該追蹤輸入介面接收與條件或非條件分支指令及載入/儲存指令有關之追蹤資料,且其中該追蹤電路系統經配置以產生一第一類型之路標點指示符及一第二類型之路標點指示符,該第一類型之路標點指示符表示一相應指令與一取得條件或非條件分支或一載入/儲存指令相對應,該第二類型之路標點指示符表示一相應指令與一未取得條件分支相對應。
  28. 如請求項1所述之追蹤單元,其中該追蹤電路系統經配置以自該追蹤輸入介面接收與條件或非條件分支指令及載入/儲存指令有關之追蹤資料,且其中該追蹤電路系統經配置以產生一第一類型之路標點指示符及一第二類型之路標點指示符,該第一類型之路標點指示符表示一相應指令與預測為取得之一條件分支、預測為取得之一非條件分支或一載入/儲存指令相對應,該第二類型之路標點指示符表示一相應指令預測為一未取得條件分支。
  29. 如請求項27所述之追蹤單元,其中該指令觀察指示符係由該資料處理裝置用來指示一條件指令而非一條件分支指令之執行,且其中該追蹤電路系統經配置以在相同追蹤資料串流中輸出與該指令觀察指示符相對應之一條件指令追蹤資料項目及該第一類型之路標點指示符與該第二類型之路標點指示符中之至少一者。
  30. 如請求項27所述之追蹤單元,其中該結果輸出指示符係由該資料處理裝置用來指示一條件指令而非一條件分支指令之執行,且其中該追蹤電路系統經配置以在該相同追蹤資料串流中輸出與該結果輸出指示符相對應之一條件結果追蹤資料項目及該第一類型之路標點指示符與該第二類型之路標點指示符中之至少一者。
  31. 如請求項27所述之追蹤單元,其中該指令觀察指示符係由該資料處理裝置用來指示一條件分支指令之執行,且該結果輸出指示符係由該資料處理裝置用來指示一條件指令而非一條件分支指令之執行,且其中該追蹤電路系統經配置以在該相同追蹤資料串流中輸出與該指令觀察指示符相對應之一條件指令追蹤資料項目、與該結果輸出指示符相對應之一條件結果追蹤資料項目及該第一類型之路標點指示符與該第二類型之路標點指示符中之至少一者。
  32. 如請求項14所述之追蹤單元,其中該指令觀察指示符係由該資料處理裝置用來指示一條件指令而非一條件分支指令之執行,且其中該追蹤電路系統經配置以在該相同追蹤資料串流中輸出與該指令觀察指示符相對應之一條件指令追蹤資料項目及該第一類型之路標點指示符與該第二類型之路標點指示符中之至少一者,且該追蹤電路系統經配置以輸出其中一相應指令索引碼為該重複性索引碼值之與條件指令而非條件分支相對應的一第一類型之條件指令追蹤資料項目及其中一相應指令索引碼為該新索引碼值之與條件指令而非條件分支相對應的一第二類型之條件指令追蹤資料。
  33. 如請求項14所述之追蹤單元,其中該結果輸出指示符係由該資料處理裝置用來指示一條件指令而非一條件分支指令之執行,且其中該追蹤電路系統經配置以在該相同追蹤資料串流中輸出與該結果輸出指示符相對應之一條件結果追蹤資料項目及該第一類型之路標點指示符與該第二類型之路標點指示符中之至少一者,且該追蹤電路系統經配置以輸出其中一相應指令索引碼為該重複性索引碼值之與條件分支相對應的一第一類型之條件指令追蹤資料項目及其中一相應指令索引碼為該新索引碼值之與條件分支相對應的一第二類型之條件指令追蹤資料。
  34. 如請求項27所述之追蹤單元,其中該追蹤電路系統經配置以序連複數個路標點指示符,以形成用於輸出至該診斷裝置之一序連路標點指示符,該序連路標點指示符包含以下中之一者:複數個該第一類型之路標點指示符;複數個該第二類型之路標點指示符;以及不同類型之路標點指示符之一組合,該等不同類型之路標點指示符包含該第一類型之路標點指示符中之至少一者及該第二類型之路標點指示符中之至少一者。
  35. 如請求項1所述之追蹤單元,其中該追蹤電路系統經配置以序連複數個該等條件指令追蹤資料項目以形成一序連條件指令追蹤資料項目且代替輸出該複數個條件指令追蹤資料項目而將該序連條件指令追蹤資料項目輸出至該診斷裝置。
  36. 如請求項35所述之追蹤單元,其中該序連條件指令追蹤資料項目相對於該複數個該等條件指令追蹤資料項目具有一減少之追蹤頻寬。
  37. 如請求項36所述之追蹤單元,其中該追蹤電路系統經配置以在該相同追蹤資料串流中輸出該等序連條件指令追蹤資料項目中之至少一者及該等序連路標點指示符中之至少一者。
  38. 如請求項1所述之追蹤單元,其中該追蹤電路系統經配置以輸出一重新對準追蹤資料。
  39. 如請求項38所述之追蹤單元,其中該重新對準追蹤資料項目係回應於自該資料處理裝置收到一分支誤預測指示符而輸出。
  40. 如請求項38所述之追蹤單元,其中該重新對準追蹤資料項目係回應於自該資料處理裝置收到一異常中止指示符而輸出。
  41. 如請求項38所述之追蹤單元,其中該重新對準追蹤資料項目係回應於自該資料處理裝置收到一異常指示符而輸出。
  42. 如請求項38所述之追蹤單元,其中該重新對準追蹤資料項目係回應於自該資料處理裝置收到一取消指示符而輸出。
  43. 如請求項1所述之追蹤單元,其中該追蹤電路系統經配置以自該資料處理裝置接收一取消指示,該取消指示指示已取消一或更多臆測執行且已追蹤指令,且其中該追蹤電路系統經配置以回應於該取消指示而產生一重新對準追蹤項目,該重新對準追蹤項目由該追蹤電路系統輸出,以通知該診斷工具應廢除至少一個先前收到的條件指令追蹤項目。
  44. 如請求項38所述之追蹤單元,其中該追蹤電路系統經配置以輸出任何條件指令追蹤資料項目,該等條件指令追蹤資料項目在輸出該重新對準追蹤資料項目之前已接收但尚未輸出。
  45. 如請求項38所述之追蹤單元,其中該追蹤電路系統經配置以輸出任何路標點追蹤資料項目,該等路標點追蹤資料項目在輸出該重新對準追蹤資料項目之前已接收但尚未輸出。
  46. 如請求項38所述之追蹤單元,其中該追蹤電路系統經配置以自該追蹤輸入介面接收與條件分支指令及載入/儲存指令有關之追蹤資料,且其中該追蹤電路系統經配置以產生一路標點指示符,該路標點指示符表示一相應指令與一條件分支或一載入/儲存指令相對應,且其中該指令觀察指示符係由該資料處理裝置用來指示一條件指令而非一條件分支指令之執行,且其中該追蹤電路系統經配置以輸出與該指令觀察指示符相關聯的該條件指令追蹤資料項目,且在該相同追蹤資料串流中輸出該路標點指示符,且其中該追蹤電路系統經配置以回應於該分支誤預測指示符而輸出該重新對準追蹤資料項目,使得在收到該分支誤預測指示符之後但是在輸出一隨後發生條件指令追蹤資料項目或路標點指示符之前輸出該重新對準追蹤資料項目。
  47. 如請求項38所述之追蹤單元,其中該追蹤電路系統經配置以自該追蹤輸入介面接收與條件分支指令及載入/儲存指令有關之追蹤資料,且其中該追蹤電路系統經配置以產生一路標點指示符,該路標點指示符表示一相應指令與一條件分支或一載入/儲存指令相對應,且其中該指令觀察指示符係由該資料處理裝置用來指示一條件指令而非一條件分支指令之執行,且其中該追蹤電路系統經配置以在該相同追蹤資料串流中輸出與該指令觀察指示符相關聯之一條件指令追蹤資料項目及該路標點指示符,且其中該追蹤電路系統經配置以回應於該異常指示符而輸出該重新對準追蹤資料項目,使得在收到該異常指示符之後但是在輸出一隨後發生條件指令追蹤資料項目或路標點指示符之前輸出該重新對準追蹤資料項目。
  48. 如請求項5所述之追蹤單元,其中該等條件指令追蹤資料項目係取決於該當前程式狀態暫存器表之內容而針對該至少一個指令觀察指示符之一子集而產生。
  49. 一種資料處理裝置,該資料處理裝置包含:資料處理電路系統,該資料處理電路系統用於回應於程式指令之執行而執行資料處理操作;一追蹤輸出介面,該追蹤輸出介面經配置以將一指令觀察指示符及一結果輸出指示符獨立地輸出至一追蹤單元,該指令觀察指示符指示一條件指令之執行,該結果輸出指示符指示回應於該條件指令之執行而藉由該資料處理電路系統對一結果之輸出。
  50. 如請求項49所述之資料處理裝置,其中該資料處理電路系統經配置以執行程式指令之一序列之臆測執行及亂序執行中之至少一者。
  51. 一種診斷裝置,該診斷裝置經配置以接收一追蹤資料串流,該追蹤資料串流包含條件指令追蹤資料項目及條件結果追蹤資料項目,其中在該收到的追蹤資料串流中該等條件結果追蹤資料項目不同於該等條件指令追蹤資料項目,該診斷裝置包含:診斷電路系統,該診斷電路系統經配置以參考由該資料處理裝置執行之程式指令之一映像(program image)來處理該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,以產生該追蹤資料串流,該診斷電路系統經配置以使用程式指令的該映像、條件指令追蹤資料項目及該等條件結果追蹤資料項目來決定由該資料處理裝置執行之程式指令。
  52. 如請求項51所述之診斷裝置,該診斷裝置經配置以自一追蹤單元接收一追蹤資料串流中之路標點追蹤項目,該等路標點追蹤項目各自指示一分支指令、一載入指令及一儲存指令中之一者已由該資料處理裝置執行,該追蹤資料串流另外包含該等條件指令追蹤項目及該等條件結果追蹤項目,且其中該等路標點追蹤項目及條件指令追蹤資料項目之一接收次序不同於相應路標點指令及條件指令之一執行次序。
  53. 如請求項52所述之診斷裝置,其中該診斷裝置包含用於緩衝該等收到的路標點追蹤項目之一路標點緩衝器及用於緩衝該等收到的條件指令追蹤項目之一條件指令緩衝器。
  54. 如請求項53所述之診斷裝置,其中該診斷電路系統經配置以藉由參考該程式指令映像獨立地分析該路標點緩衝器中之項及該條件指令緩衝器中之項來排列該接收次序以獲得該執行次序。
  55. 如請求項53所述之診斷裝置,其中若該診斷電路系統遭遇該程式映像中之一條件指令,但是一條件指令追蹤項目當前並未出現於該條件指令緩衝器中,則該診斷電路系統經配置以延遲該程式映像之一相應執行線程之進一步處理,直至該條件追蹤項目出現於該條件指令緩衝器中為止。
  56. 一種基於自一資料處理裝置收到的資訊產生追蹤資料之項目之方法,該等追蹤資料之項目指示該資料處理裝置之處理活動,該方法包含以下步驟:自該資料處理裝置接收至少一個指令觀察指示符及至少一個結果輸出指示符,該至少一個指令觀察指示符指示一條件指令之執行,該至少一個結果輸出指示符指示執行該至少一個條件指令之一結果藉由該資料處理裝置之輸出;以及處理該至少一個指令觀察指示符及該至少一個結果輸出指示符,且經配置以自該至少一個指令觀察指示符及該至少一個結果輸出指示符產生相應條件指令追蹤資料項目及條件結果追蹤資料項目,且獨立地輸出該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,從而賦能藉由一診斷裝置對條件指令與相應條件結果之分離追蹤分析。
  57. 如請求項56所述之方法,其中在一第一處理週期中接收該指令觀察指示符,且在一第二處理週期中接收該結果輸出指示符,該第二處理週期不同於該第一處理週期。
  58. 一種在一資料處理裝置內產生追蹤資料之項目之方法,追蹤資料之項目指示一資料處理裝置之處理活動,該方法包含以下步驟:回應於程式指令之執行而執行資料處理操作;以及將一指令觀察指示符及一結果輸出指示符獨立地輸出至一追蹤單元,該指令觀察指示符指示一條件指令之執行,該結果輸出指示符指示回應於該條件指令之執行而藉由該資料處理電路系統對一結果之輸出。
  59. 如請求項58所述之方法,其中在一第一處理週期中由該資料處理裝置輸出該指令觀察指示符,且在一第二處理週期中由該資料處理裝置輸出該結果輸出指示符,該第二處理週期不同於該第一處理週期。
  60. 一種用於處理追蹤資料之診斷方法,該追蹤資料由一資料處理裝置產生,該方法包含以下步驟:接收一追蹤資料串流,該追蹤資料串流包含條件指令追蹤資料項目及條件結果追蹤資料項目,其中在該收到的追蹤資料串流中該等條件結果追蹤資料項目不同於該等條件指令追蹤資料項目;參考由該資料處理裝置執行之程式指令之一映像來處理該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,以產生該追蹤資料串流;以及使用程式指令之該映像來執行該等條件指令追蹤資料項目與該等條件結果追蹤資料項目之間的一相關,以決定由該資料處理裝置執行之處理步驟。
  61. 一種追蹤單元,該追蹤單元經配置以產生追蹤資料之項目,該等追蹤資料之項目指示一資料處理裝置之處理活動,該追蹤單元包含:接收構件,該接收構件用於自該資料處理裝置接收至少一個指令觀察指示符及至少一個結果輸出指示符,該至少一個指令觀察指示符指示一條件指令之執行,該至少一個結果輸出指示符指示執行該至少一個條件指令之一結果藉由該資料處理裝置之輸出;以及處理構件,該處理構件用於處理該至少一個指令觀察指示符及該至少一個結果輸出指示符,且該處理構件經配置以自該至少一個指令觀察指示符及該至少一個結果輸出指示符產生相應條件指令追蹤資料項目及條件結果追蹤資料項目,且獨立地輸出該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,從而賦能藉由一診斷裝置對條件指令與相應條件結果之分離追蹤分析。
  62. 一種資料處理裝置,該資料處理裝置包含:執行構件,該執行構件用於回應於程式指令之執行而執行資料處理操作;經配置以將一指令觀察指示符及一結果輸出指示符獨立地輸出至一追蹤單元之構件,該指令觀察指示符指示一條件指令之執行,該結果輸出指示符指示回應於該條件指令之執行而藉由該資料處理電路系統對一結果之輸出。
  63. 一種診斷裝置,該診斷裝置經配置以接收一追蹤資料串流,該追蹤資料串流包含條件指令追蹤資料項目及條件結果追蹤資料項目,其中在該收到的追蹤資料串流中該等條件結果追蹤資料項目不同於該等條件指令追蹤資料項目,該診斷裝置包含:處理構件,該處理構件用於參考由該資料處理裝置執行之程式指令之一映像來處理該等條件指令追蹤資料項目及該等條件結果追蹤資料項目,以產生該追蹤資料串流,該處理構件經配置以使用程式指令之該映像、條件指令追蹤資料項目及該等條件結果追蹤資料項目來決定由該資料處理裝置執行之程式指令。
TW100144693A 2011-01-13 2011-12-05 資料處理裝置之追蹤 TWI524270B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1100505.5A GB2487355B (en) 2011-01-13 2011-01-13 Processing apparatus, trace unit and diagnostic apparatus
GB1101945.2A GB2487251A (en) 2011-01-13 2011-02-04 Separate trace indications for the execution of a conditional instruction and for the result of the condition

Publications (2)

Publication Number Publication Date
TW201232393A TW201232393A (en) 2012-08-01
TWI524270B true TWI524270B (zh) 2016-03-01

Family

ID=43664141

Family Applications (2)

Application Number Title Priority Date Filing Date
TW100144378A TWI524269B (zh) 2011-01-13 2011-12-02 處理設備、軌跡單元及診斷設備
TW100144693A TWI524270B (zh) 2011-01-13 2011-12-05 資料處理裝置之追蹤

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW100144378A TWI524269B (zh) 2011-01-13 2011-12-02 處理設備、軌跡單元及診斷設備

Country Status (10)

Country Link
US (4) US8874975B2 (zh)
EP (2) EP2585909B1 (zh)
JP (2) JP5865920B2 (zh)
KR (2) KR101994636B1 (zh)
CN (2) CN103299273B (zh)
GB (2) GB2487355B (zh)
IL (2) IL224506A (zh)
MY (2) MY159191A (zh)
TW (2) TWI524269B (zh)
WO (2) WO2012095618A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561882B2 (en) 2016-09-13 2023-01-24 Arm Limited Apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US20130145350A1 (en) * 2011-12-05 2013-06-06 Microsoft Corporation Efficient, large scale trace storage system
US8838888B2 (en) 2012-03-19 2014-09-16 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
US9483259B1 (en) * 2012-05-07 2016-11-01 Google Inc. System and method for providing real-time execution of source code in a collaborative online software development environment
JP6036089B2 (ja) * 2012-09-25 2016-11-30 日本電気株式会社 データ遷移トレース装置、データ遷移トレース方法、及び、データ遷移トレースプログラム
US9262163B2 (en) * 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
US8990784B2 (en) 2013-06-28 2015-03-24 International Business Machines Corporation Determining control flow divergence due to variable value difference
US10372590B2 (en) 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
US11068827B1 (en) * 2015-06-22 2021-07-20 Wells Fargo Bank, N.A. Master performance indicator
GB2540388B (en) * 2015-07-15 2019-01-23 Advanced Risc Mach Ltd Secure mode state data access tracking
GB2541400B (en) * 2015-08-17 2017-11-15 Advanced Risc Mach Ltd Tracing of exception handling events
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
US9798593B1 (en) 2016-07-06 2017-10-24 Workday, Inc. Synchronization of code execution
US10657021B2 (en) * 2016-09-07 2020-05-19 Arm Limited Tracing processing activity with position data to reorder items of trace data
GB2560749B (en) * 2017-03-24 2020-10-14 Advanced Risc Mach Ltd Trace data representation
WO2019113603A1 (en) * 2017-12-08 2019-06-13 Zytek Communications Corporation State machine block for high-level synthesis
US10705843B2 (en) * 2017-12-21 2020-07-07 International Business Machines Corporation Method and system for detection of thread stall
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN108650123B (zh) * 2018-05-08 2022-09-06 平安普惠企业管理有限公司 故障信息记录方法、装置、设备和存储介质
US10797983B1 (en) * 2018-06-05 2020-10-06 Juniper Networks, Inc Systems and methods for debugging network stacks based on evidence collected from selective tracing
US11573883B1 (en) * 2018-12-13 2023-02-07 Cadence Design Systems, Inc. Systems and methods for enhanced compression of trace data in an emulation system
EP3792767B1 (en) * 2019-09-13 2023-07-12 Accemic Technologies GmbH Event processing
EP3907615B1 (en) * 2020-05-06 2022-11-02 Mitsubishi Electric R&D Centre Europe B.V. Method and system for testing the operation of a target computer system by using timed requirements
CN113485748B (zh) * 2021-05-31 2022-08-12 上海卫星工程研究所 卫星条件指令系统及其执行方法

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1493176A1 (de) 1965-10-20 1969-06-26 Schering Ag Verfahren zur Herstellung von delta?-Pregnen-11beta- und 11alpha,17alpha,21-triol-3,20-dionen
US4503495A (en) * 1982-01-15 1985-03-05 Honeywell Information Systems Inc. Data processing system common bus utilization detection logic
JPS623351A (ja) * 1985-06-28 1987-01-09 Nec Corp マイクロプロセツサ
JPH0795271B2 (ja) * 1989-06-20 1995-10-11 富士通株式会社 分岐命令実行装置
JP2915944B2 (ja) * 1989-12-29 1999-07-05 株式会社日立製作所 カバレージ測定方法及びマイクロコンピュータ
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5978902A (en) 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6553564B1 (en) 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
US6247146B1 (en) * 1998-08-17 2001-06-12 Advanced Micro Devices, Inc. Method for verifying branch trace history buffer information
US6351844B1 (en) 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US7024661B2 (en) 2000-01-07 2006-04-04 Hewlett-Packard Development Company, L.P. System and method for verifying computer program correctness and providing recoverable execution trace information
US6694427B1 (en) * 2000-04-20 2004-02-17 International Business Machines Corporation Method system and apparatus for instruction tracing with out of order processors
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US7185234B1 (en) * 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
JP2002342114A (ja) 2001-05-21 2002-11-29 Fujitsu Ltd トレースデータ採取可能なプロセッサ
JP2003050716A (ja) * 2001-08-06 2003-02-21 Matsushita Electric Ind Co Ltd ソフトウエアデバッガとソフトウエア開発支援システム
JP2003085000A (ja) 2001-09-10 2003-03-20 Mitsubishi Electric Corp トレース情報生成装置およびその方法
US7203825B2 (en) 2001-10-03 2007-04-10 Intel Corporation Sharing information to reduce redundancy in hybrid branch prediction
JP2003150403A (ja) * 2001-11-06 2003-05-23 Arc Internatl (Uk) Ltd データプロセッサの観測方法及び装置
US20030135719A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
US7197671B2 (en) 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus
GB2389931B (en) * 2002-06-07 2005-12-14 Advanced Risc Mach Ltd Generation of trace elements within a data processing apparatus
US20040064685A1 (en) * 2002-09-27 2004-04-01 Hung Nguyen System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution
US7062684B2 (en) 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US20040153635A1 (en) 2002-12-30 2004-08-05 Kaushik Shivnandan D. Privileged-based qualification of branch trace store data
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US20060129999A1 (en) 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
US20070162895A1 (en) 2006-01-10 2007-07-12 International Business Machines Corporation Mechanism and method for two level adaptive trace prediction
US7562258B2 (en) * 2006-02-09 2009-07-14 Arm Limited Generation of trace elements within a data processing apparatus
US7574586B2 (en) * 2006-05-16 2009-08-11 Texas Instruments Incorporated Efficient transfer of branch information
US7707394B2 (en) * 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US7890299B2 (en) 2007-05-21 2011-02-15 Qualcomm, Incorporated Providing event-controlled continuous logging for a mobile operating environment
US8122437B2 (en) * 2008-03-31 2012-02-21 Freescale Semiconductor, Inc. Method and apparatus to trace and correlate data trace and instruction trace for out-of-order processors
GB2459652B (en) * 2008-04-28 2010-09-22 Imagination Tech Ltd Controlling instruction scheduling based on the space in a trace buffer
JP5167984B2 (ja) 2008-06-26 2013-03-21 富士通株式会社 命令トレース生成プログラム、命令トレース生成装置および命令トレース生成方法
US8176366B2 (en) * 2009-04-03 2012-05-08 Arm Limited Trace synchronization
LT2444400T (lt) 2009-06-15 2018-06-11 Shionogi & Co., Ltd. Pakeistasis policiklinis karbamoilpiridono darinys
JP2011028308A (ja) * 2009-07-21 2011-02-10 Renesas Electronics Corp 半導体装置及びソフトウェア開発支援装置
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561882B2 (en) 2016-09-13 2023-01-24 Arm Limited Apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
TWI820005B (zh) * 2016-09-13 2023-11-01 英商Arm股份有限公司 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法

Also Published As

Publication number Publication date
TW201237746A (en) 2012-09-16
EP2585909A1 (en) 2013-05-01
WO2012095618A1 (en) 2012-07-19
MY159191A (en) 2016-12-30
US8874975B2 (en) 2014-10-28
IL226755A (en) 2017-08-31
CN103314356A (zh) 2013-09-18
US20120185676A1 (en) 2012-07-19
CN103299273A (zh) 2013-09-11
JP2014506371A (ja) 2014-03-13
US10379989B2 (en) 2019-08-13
GB201101945D0 (en) 2011-03-23
KR101994636B1 (ko) 2019-07-02
US20130339686A1 (en) 2013-12-19
TWI524269B (zh) 2016-03-01
IL224506A (en) 2015-11-30
WO2012095619A1 (en) 2012-07-19
JP5865920B2 (ja) 2016-02-17
CN103299273B (zh) 2016-11-23
JP2014507710A (ja) 2014-03-27
US8533685B2 (en) 2013-09-10
EP2643751B1 (en) 2014-12-24
GB2487251A (en) 2012-07-18
GB2487355B (en) 2020-03-25
CN103314356B (zh) 2016-04-06
US20140101491A1 (en) 2014-04-10
US20120185734A1 (en) 2012-07-19
US9378113B2 (en) 2016-06-28
EP2585909B1 (en) 2014-09-10
KR20140014126A (ko) 2014-02-05
EP2643751A1 (en) 2013-10-02
GB2487355A (en) 2012-07-25
KR102025556B1 (ko) 2019-09-26
JP5914521B2 (ja) 2016-05-11
KR20140006861A (ko) 2014-01-16
GB201100505D0 (en) 2011-02-23
TW201232393A (en) 2012-08-01
MY162170A (en) 2017-05-31

Similar Documents

Publication Publication Date Title
TWI524270B (zh) 資料處理裝置之追蹤
KR100234648B1 (ko) 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템
TWI423123B (zh) 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體
US10296346B2 (en) Parallelized execution of instruction sequences based on pre-monitoring
US8566569B2 (en) State machine-based filtering of pattern history tables based on distinguishable pattern detection
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
US9361111B2 (en) Tracking speculative execution of instructions for a register renaming data store
US20100262813A1 (en) Detecting and Handling Short Forward Branch Conversion Candidates
US10353710B2 (en) Techniques for predicting a target address of an indirect branch instruction
KR100305935B1 (ko) 데이타처리시스템및데이타처리시스템의데이타포착방법
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
CN114514505A (zh) 退役队列压缩
US11243774B2 (en) Dynamic selection of OSC hazard avoidance mechanism
US7013256B2 (en) Computer system with debug facility
US10296350B2 (en) Parallelized execution of instruction sequences
US11048609B2 (en) Commit window move element
EP2843544A2 (en) Arithmetic processing unit and method for controlling arithmetic processing unit