TWI517035B - 當追蹤資料處理系統時的關鍵配置 - Google Patents

當追蹤資料處理系統時的關鍵配置 Download PDF

Info

Publication number
TWI517035B
TWI517035B TW100119838A TW100119838A TWI517035B TW I517035 B TWI517035 B TW I517035B TW 100119838 A TW100119838 A TW 100119838A TW 100119838 A TW100119838 A TW 100119838A TW I517035 B TWI517035 B TW I517035B
Authority
TW
Taiwan
Prior art keywords
tracking
unit
index
data
index value
Prior art date
Application number
TW100119838A
Other languages
English (en)
Other versions
TW201203109A (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 TW201203109A publication Critical patent/TW201203109A/zh
Application granted granted Critical
Publication of TWI517035B publication Critical patent/TWI517035B/zh

Links

Classifications

    • 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
    • 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/3604Software analysis for verifying properties of programs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Description

當追蹤資料處理系統時的關鍵配置
本發明係關於監視資料一處理單元的活動,尤其係關於產生指示該資料處理單元的該等處理活動之追蹤資料的項目。
現代資料處理設備(諸如微處理器)之複雜性意味著將此等資料處理設備的操作之編程及除錯係一複雜及耗時的任務。因此,對於尋求正確地組態一資料處理設備之一程式設計師,極有用的係當資料處理設備實行其處理活動時能監視其操作,以確認該等操作如需求地實行且當問題發生時加以除錯。
監視一資料處理設備之處理活動的此需求必須相對於現代資料處理設備通常經組態成為極小規模裝置(例如晶片上系統(SoC))的知識來平衡。為人熟知的是,此等裝置中之空間限制係其構造中的一極重要因素,及因此將監視組件加入此等裝置中的機會受到極大限制。同樣地,在SoC周邊的接針亦有代價,此限制可從SoC輸出用於外部分析之診斷資料的數量。
由於此等原因,已知提供一與此等資料處理設備關聯之追蹤單元,追蹤單元經組態以監視資料處理設備的處理活動及產生指示該等處理活動的一系列追蹤資料項目。尤其係,為了減少必須轉移的資料的頻寬,已知係以一高度壓縮形式來提供追蹤資料之項目,省略係冗餘的任何資訊及僅包括用於目前分析目的之嚴格必要的資料。美國專利第7,707,394號提出用於減少指令追蹤期間產生之一資料串流大小的一些技術。
若資料處理設備係可推測(speculative)指令執行,則與追蹤一資料處理設備的活動相關聯的困難將更突顯。已知由於機會而提供推測指令執行,此技術例如藉由避免管道平台被閒置提供更快速的操作。然而,推測指令執行使一追蹤單元具有困難,因為直至解決該推測(即,知悉一給定指令是否實際上確定(committed)),追蹤單元不能提供明確地指示資料處理設備的操作的一追蹤資料串流。一種可能性係使追蹤單元緩衝其產生的追蹤資料直至解決推測,但若處理器的推測深度過大,此技術需要的緩衝器空間可能變成不符合需求的大。一替代技術亦推測地產生追蹤資料,且接著若隨後發現其對應的指令係誤推測則取消追蹤資料的某些項目。例如,Nexus協定(「The Nexus 5001 Forum-Standard for a Global Embedded Processor Debug Interface」,IEEE-ISTO 5001-2003,2003年12月23日)支援取消追蹤資料項目的一特定數目。
然而,即使資料處理設備特定地指示追蹤單元哪些指令(或更典型地成群的指令)應被取消,但識別對應於該等經取消指令的追蹤資料之項目並不直接。成群的指令係典型推測執行,因為僅一些指令可導致程式流中的改變,且因此若其中該群中任何指令被執行則可識別成群的指令,接著整個群將被執行。
僅產生用於選定指令的追蹤資料之追蹤技術會產生一特定問題,因為此可使追蹤資料之一對應取消項目的產生困難,因為若(例如)資料處理設備指示最近的兩指令群應被取消,則追蹤單元不能僅指示下游分析單元追蹤資料的該兩項目應被取消,因為在成群的指令及所產生追蹤資料的項目之數目間沒有此直接相關性。
關聯後續識別追蹤資料的特定項目之困難的另一問題產生於資料轉移的背景中。由於一載入或儲存操作可能花許多循環來完成,當(例如)執行一載入指令且產生追蹤資料的一對應項目時,在已從記憶體擷取到所請求資料值之前,難以識別資料值應聯結之追蹤資料的對應項目(許多循環之前產生)。若處理器可脫離程式順序執行指令或施行資料轉移,則追蹤單元也許沒有方法來識別哪些資料值屬於哪些資料位址。
關於追蹤無序處理器的一些背景技術資訊可在2005年7月4的「The PD Trace Interface and Trace Control Block Specification」中找到(其可自http://www.mips.com/products/product-materials/processor/mips-architecture/獲得)及在ARM ETMv3架構(自http://infocenter.arm.com獲得)中找到。
因而將會需求提供一種用於產生追蹤資料的項目之改良技術,該改良技術將會容許一追蹤單元克服上述問題。
本發明之一第一態樣提供一種追蹤單元,該追蹤單元經組態以產生指示一資料處理單元之處理活動的追蹤資料的項目,該追蹤單元包含:一追蹤索引單元,該追蹤索引單元經組態以關聯一索引值與由該追蹤單元產生之追蹤資料的該等項目之至少一子集。該追蹤索引單元經組態以產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列中的一第n索引值決定。
根據本發明的技術,該追蹤單元包含一追蹤索引單元,該追蹤索引單元經組態以關聯一索引值與由該追蹤單元產生之追蹤資料的項目之至少一子集。尤其係,該等索引值係根據該等索引值的一預定序列由該追蹤索引單元產生,使得該預定序列中之一第n+1索引值可僅從在該預定序列的一第n索引值決定。就追蹤資料之項目的產生而言,此等索引值與追蹤資料的至少一些項目的關聯係有利,因為此舉容許追蹤單元將其產生之追蹤資料的至少一些項目「加標」,因此後續可引用追蹤資料的特定項目。此舉例如當尋求後續由於誤推測而取消追蹤資料的特定項目時具有特定益處。或者當尋求使資料值與產生用於資料轉移指令之追蹤資料的項目之關聯(該關聯可能花費長時間來完成)時具有益處。藉由依此方式索引追蹤資料的項目,可造成後續對追蹤資料的特定項目之引用。另外,藉由能從該預定序列中的一第n索引值決定該預定序列中之一第n+1索引值,可暗指大部分索引,而大體上無須明顯地追蹤。可因此節省追蹤單元內的可貴的空間,且可造成相當節省追蹤資料頻寬。
雖然可能有提供索引值的預定序列的一些方法,在一具體實施例中該追蹤單元包含一計數器,該計數器經組態以提供索引值的該預定序列。一計數器可相對地容易在該追蹤單元的硬體中實施且由一計數器產生的索引值的預定序列(典型係一漸增序列)有利地易於管理。
存在其中該追蹤單元能使用關聯追蹤資料的一些項目的索引值的各種方法,但在具體實施例中該追蹤單元包含一索引儲存單元,該索引儲存單元經組態以儲存至少一該索引值。提供一索引儲存單元容許該追蹤單元保持至少一索引值之一記錄,使得該追蹤單元之後續操作可引用該儲存值且因此與該儲存值關聯之追蹤資料的項目。
在一些具體實施例中,該追蹤單元包含一索引儲存單元,該索引儲存單元經組態以儲存兩索引值之間的一差值。此提供一有利的緊湊儲存機制,藉由該機制(例如)可儲存索引值的一範圍。在一具體實施例中,此索引儲存單元可係一FIFO裝置。一FIFO裝置呈現其中可儲存諸值的一序列的一簡單結構。
該追蹤單元經組態所監視的資料處理單元能採取一些形式,然而在一具體實施例中,該資料處理單元的處理活動包含推測指令執行且該至少一索引值係與至少一推測執行指令關聯。指令的推測執行可將困難呈現給一追蹤單元,因為若一推測執行指令後續藉由資料處理單元指示已被誤推測,則可能需求追蹤單元將此事實向其追蹤資料的接受者表明。藉由具有一索引儲存單元(其中可能儲存與一推測執行指令關聯的一索引值),追蹤單元係具有一機制,藉由該機制可保持一對該推測指令之引用甚至在其已產生追蹤資料的對應項目一段時間後。
在一些具體實施例中,該索引儲存單元經組態以儲存該至少一索引值,直至該至少一推測執行指令已被確定或取消。因此該索引儲存單元將接著保持對應於推測執行指令的索引值直至已知該推測執行指令之結果,即該指令是否正確地推測執行(及係「經確定」),或誤推測(及係「經取消」)。在索引儲存單元中儲存對應索引值致使該追蹤單元後續引用該指令且因此引用關聯其所產生的任何追蹤資料。
諸指令的推測執行可包含個別指令的推測執行,但在一些具體實施例中,該推測執行指令形成一指令群的部分,其中該指令群的一第一指令的推測執行使該群指令的所有指令之推測執行成為必要。
在諸群內推測地執行指令係實際的,因為僅一些指令(如,分支)造成從循序指令執行的可能偏離且若先前的指令被執行時則其他指令(如,一ADD指令)確定被執行。由於此原因,經組態以施行推測指令執行的一資料處理單元典型將推測執行已知形成此等不可分割群的指令群。
在一些具體實施例中,該索引儲存單元包含一第一索引儲存單元,該第一索引儲存單元經組態以儲存關聯該指令群內的一第一指令之一第一索引值。在產生對應於經推測執行之一指令群的追蹤資料中,有利的係儲存關聯該指令群中之一第一指令的一第一索引值,因為此定義該指令群的開始。
雖然該第一索引儲存單元可能僅儲存一單一項,但在具體實施例中該第一索引儲存單元包含一第一複數項且經組態以取決於指示該指令群的一指示符而儲存該第一索引值。因而,該第一索引儲存單元可在對應於指示該指令群的一指示符之一項中儲存一第一索引值,使得後續引用該指令群可容許從第一索引儲存單元擷取該對應第一索引值。
給定該資料處理單元能推測執行一些指令群,有利的係若該追蹤單元能追蹤對應於該等群之各群的索引值,及因此在一具體實施例中該第一複數項的一數目對應於可由該資料處理單元推測執行之指令群的至少一最大數目。
當然推測指令執行有時不正確且在一些具體實施例中該追蹤單元經組態以從該資料處理單元接收一取消指示,該取消指示會指示已經推測執行之一選定指令群已被取消,且該追蹤單元經組態以產生指示該選定指令群的追蹤資料之一取消項目。因此,當該資料處理單元指示應該取消一選定指令群時,該追蹤單元經組態以藉由產生追蹤資料的一對應取消項目以將此資訊傳送至其追蹤資料的接受者。
尤其係在一具體實施例中,該追蹤單元經組態以當接受該取消指示時,取決於一第一索引值產生追蹤資料的該取消項目,該第一索引值儲存在該第一索引儲存單元中及關聯該選定指令群。在第一索引儲存單元中儲存的第一索引值關聯該指令群內的第一指令,且因此引用此第一索引值致使該追蹤單元提供一由於選定指令群之取消而應被取消的追蹤資料之第一項目的一指示。追蹤資料的此第一項目可為待取消的若干項目之第一者,或可為待取消的追蹤資料的一特定項目。
在一些具體實施例中,該追蹤單元包含一計數器,該計數器經組態以提供索引值的該預定序列且該追蹤單元經組態以進一步取決於該計數器之一目前計數器值產生追蹤資料的該取消項目。因為該追蹤單元經組態以使用計數器來產生索引值的序列,引用計數器之一目前計數器值提供對追蹤資料的一最近項目的一引用。因此藉由取決於第一索引值及目前計數器值兩者產生追蹤資料的取消項目,該追蹤單元能指示其追蹤資料的接受者,在追蹤資料項目之該序列中在何處應該開始取消以及在何處其應該結束。
在一些具體實施例中,該索引儲存單元包含一最後索引儲存單元,該最後索引儲存單元經組態以儲存關聯該指令群內之一最後指令的一最後索引值。在產生對應於之一推測執行的指令群之追蹤資料中,有利的係儲存關聯該群指令中之一最後指令的一最後索引值,因為此定義該群指令的結束。
雖然該最後索引儲存單元可能僅儲存一單一項,在具體實施例中,該最後索引儲存單元包含一第二複數項及經組態以取決於指示該群指令之一指示符儲存該最後索引值。因而,該最後索引儲存單元可在對應於指示該群指令之一指示符的一項中儲存一最後索引值,使得後續引用該群指令可容許對應的最後索引值從第二索引儲存單元擷取。
假設該資料處理單元能推測執行一些指令群,有利的係若該追蹤單元能追蹤對應於該等群之各群的索引值,及因此在一具體實施例中,該第二複數項的一數目對應於可由該資料處理單元推測執行之指令群的至少一最大數目。
推測指令執行之實施係因為有許多其中可精確(統計上)預測程式流之情況。一旦明確地得知一指令的推測執行係正確,則該指令係「經確定」且在一些具體實施例,該追蹤單元係組態以從該資料處理單元接收一確定指示,該確定指示指示已經推測執行的一選定指令群已經確定,及該追蹤單元係組態以產生指示該選定指令群的追蹤資料之一確定項目。因此,當該資料處理單元指示一選定指令群經確定時,該追蹤單元經組態以藉由產生追蹤資料的一對應確定項目將此資訊傳送至其追蹤資料的接受者。
尤其係在一具體實施例中,該追蹤單元經組態以當接收該確定指示時取決於在該最後索引儲存單元中儲存及關聯該選定指令群的一最後索引值產生追蹤資料的該確定項目。在最後索引儲存單元中儲存的最後索引值關聯該指令群內的最後指令,且因此引用此最後索引值致使追蹤單元能夠提供由於確定該選定指令群而係明確正確的追蹤資料之最後項目的一指示。追蹤資料的此最後項目能提供確定之一些項目的結束點,或可係一待確定的特定項目。
在一些具體實施例中,該追蹤單元包含一計數器,該計數器經組態以提供索引值之該預定序列及一未確定的儲存單元,該追蹤單元經組態以當產生追蹤的該確定項目後,在該未確定儲存單元中儲存該計數器之一目前計數器值。因此,在當一指令群被確定時刻,該追蹤單元可記錄目前計數器值,指示未確定指令開始處之點。
在一些具體實施例中,該追蹤單元係經組態以取決於在該未確定儲存單元中儲存之一值產生追蹤的該確定項目。由於該未確定儲存單元從當追蹤之一確定項目最後產生之時刻,藉由取決於在該最後索引儲存單元中儲存的值兩者產生追蹤資料的確定項目,來儲存一目前計數器值,追蹤單元係能向其追蹤資料的接受者指示在追蹤資料項目之序列中該確定應開始之處及該確定應結束之處。
在一些具體實施例中,該索引儲存單元包含一第一索引儲存單元,該第一索引儲存單元經組態以儲存關聯該指令群內的一第一指令之一第一索引值,該索引儲存單元包含一最後索引儲存單元,該最後索引儲存單元經組態以儲存關聯該群指令中的一最後指令之一最後索引值,且該最後索引值以與該第一索引值相關之一格式儲存。
在一指令群中之指令數目方面的限制(該限制繼而在介於該群指令中的一第一指令及一最後指令之間賦予指令數目的限制)可意指可藉由以與第一索引值相關之一格式儲存最後索引值來獲得有利的儲存效率,例如作為自第一索引值之一偏移。應瞭解此相對格式能採取一些形式,但在一具體實施例中,與該第一索引值相關的該格式係一2位元資料格式。替代具體實施例可取決於在所關注之一群中之指令數目於資料格式中使用一1位元資料格式或多於2位元。
在一些具體實施例中,該追蹤單元包含一推測深度計數器,該推測深度計數器經組態以指示由該資料處理單元執行之指令的一目前推測深度。推測深度計數器的提供致使該追蹤單元能夠追蹤已推測執行且因此可能需要取消或確定的指令數目。當確定或取消推測執行指令時,此推測深度計數器可因此減量。
在一些具體實施例中,該追蹤單元包括一擱置(pending)確定計數器,該擱置確定計數器經組態以指示經擱置輸出之追蹤資料的確定項目的一目前數目。因此當追蹤資料的一確定項目發生時,追蹤單元無須立即輸出追蹤資料的一確定項目,而是可追蹤一些此等擱置項目。此更有益於追蹤頻寬的所需減少。
在一些具體實施例中,該追蹤單元經組態以當接收到該確定指示而沒有產生追蹤資料的該確定項目時使該擱置確定計數器增加。因此擱置確定計數器減少追蹤資料必須產生之頻率,因為可保持擱置確定的執行總數,當從資料處理單元接收一確定指示而無須產生追蹤資料的一確定項目時使擱置確定計數器增加。
在一些具體實施例中,該追蹤單元經組態以當該推測深度計數器達到一預定值時減少該擱置確定計數器。例如,當推測深度計數器達到資料處理單元之一已知最大推測深度時,推測深度計數器可推理一確定必須取代最舊的推測執行指令。
在一些具體實施例中,當該推測深度計數器達到一預定值時產生追蹤資料的另一項目暗示該追蹤單元已從該資料處理單元接收到另一確定指示。例如,當推測深度計數器達到資料處理單元之一已知最大推測深度時,若接收到追蹤資料的另一項目,可由追蹤資料之接受者推理出最舊推測執行指令的確定。追蹤資料的接受者典型地將經配置以亦追蹤資料處理單元的推測深度以實現此推理。
在一些具體實施例中,該追蹤單元經組態以回應於一預定事件來將諸值的該預定序列的該索引值重設至一預定值。例如,可能需求使追蹤資料的另外項目與相同索引值關聯,且此可僅藉由重設索引序列而達到。
在一些具體實施例中,該追蹤單元經組態以產生諸值的該預定序列成為諸值之一迴路序列。此舉為產生一無限序列提供一合宜機制。
可以一些方法組態該追蹤單元,但在一具體實施例中,該追蹤單元經組態以對於該資料處理單元所回應的至少一指令類型不產生追蹤資料的一項目。特定指令對經產生追蹤資料的接受者可能比其他指令具有更多關注,且因此可由不關注的追蹤資料省略某些類型之指令而節省可貴的的追蹤頻寬。
在一些具體實施例中,該索引儲存單元經組態以選擇性地儲存一進行中(in-flight)指示符,該進行中指示符指示諸索引值的該預定序列之一儲存索引值目前正使用中。雖然可選擇索引值的預定序列使得可能發生索引值的再使用而無歧義,但可能有其中某些索引值保持與特定追蹤項目關聯得更長久之實例。一進行中指示符提供一機制以識別哪些索引值應以此方式處置。
在一些具體實施例中,該追蹤單元經組態以當產生一下一索引值時,引用該進行中指示符,及若該進行中指示符指示該下一索引值仍處於使用中時,儲存一替代索引值以代替該下一索引值。儲存一替代索引值避免再使用仍處於使用中的索引值。
該資料處理單元的處理活動可變化,但在一具體實施例中,該資料處理單元的該等處理活動包含使用一資料位址引用一儲存資料值且該索引值係與該至少一資料位址關聯的一資料位址索引值。當與由追蹤單元追蹤之指令的時間標度比較時,使用一資料位址引用一儲存資料值可花費明顯時間量。例如,當一指令使資料處理單元藉由引用資料值之資料位址從記憶體載入資料值時,直至多個時鐘循環後該資料值才能返回資料處理單元。在此情況下,由開聯載入指令之追蹤單元產生的追蹤資料之一項目可能在資料值返回資料處理單元之前已產生一段長時間。在此一情節下,使用一資料位址索引值係有利的,因為此舉提供一種機制,藉由該機制關聯引用一儲存資料值的一資料位址之追蹤資料的特定項目後續可被識別,例如一旦該引用程序已完成則可識別。
在一些具體實施例中,對該儲存資料值之該引用包含載入該儲存資料值且在其他具體實施例中對該儲存資料值的該引用包含儲存該儲存資料值。載入及儲存資料值兩者需要如上述可能花費長時間的記憶體存取。
在一些具體實施例中,該追蹤單元經組態以在一資料位址索引值儲存表中儲存該資料位址索引值。一資料位址索引值儲存表的提供致使該資料追蹤單元能夠儲存一資料位址索引值直至以後需要對其引用,例如當完成與引用該值關聯的載入或儲存操作。
如上述,存在某些指令,追蹤資料的一產生項目可與該某些指令關聯且可能花費明顯時間量以完成該某些指令的操作。此等指令可因此可與其他指令區分,該其他指令一經追蹤則在該指令被認為完成前沒有另外事件必須發生。等待此一事件完成的狀態稱為「進行中(in-flight)」及在一些具體實施例中,該追蹤單元經組態以選擇性地儲存一進行中指示符,該進行中指示符指示對關聯該資料位址索引值的該儲存資料值之引用尚未完成及該資料位址索引值在進行中。組態該追蹤單元以依此方式儲存一進行中指示符提供一機制,該追蹤單元可藉由該機制追蹤關聯尚未完成操作之該等資料位址索引值。
在此等具體實施例中,該追蹤單元經組態以當產生一下一資料位址索引值時,引用一儲存進行中指示符,及若該儲存進行中指示符指示該下一資料位址索引值仍處於進行中時,儲存一替代資料位址索引值以代替該下一資料位址索引值。
由於空間限制的原因,該追蹤單元將典型地具有追蹤單元可產生的資料位址索引值之一明確及有限範圍。因此,當遭遇花費一長時間來完成的一指令時,使用關聯該指令的一資料位址索引值可能需要達到一長時期,該時期會比其中追蹤單元循環通過全組資料位址索引值時可用的時期更長。因此,該追蹤單元可能遭遇仍進行中(即應尚未被再使用)的一資料位址索引值,及在此情況下,該追蹤單元係組態以不僅使用預定序列中之下一資料位址索引值,而且在其位置中儲存一替代資料位址索引值。藉由此方法,一受限及明確的資料位址索引值組大體上可由追蹤單元使用,但仍可適應其中一資料位址索引值需要使用比該等資料位址索引值之自然循環更長一時期之偶然情況。
替代資料位址索引值能採取一些形式,但在一具體實施例中,該替代資料位址索引值包含資料處理單元索引值,其中由該資料處理單元用該資料處理單元索引值來引用該資料位址。資料處理單元本身典型亦將具有其用來引用此等資料位址的一索引系統,以致即使當(在處理器循環方面)在造成引用該資料位址及資料值返回間之相當大延遲時,資料處理單元亦可使資料值與資料位址關聯。在此情況下,對應資料處理單元索引值(有時稱為一「核心關鍵」可由追蹤單元用作替代資料位址索引值。然而,對應資料處理單元索引值本身無須用作替代資料位址索引值的「核心關鍵」(「特殊關鍵」),且在一具體實施例,該替代資料位址索引值具有與一資料處理單元索引值之一對一對應,其中係由該資料處理單元使用該資料處理單元索引值來引用該資料位址。
當該進行中指示符由追蹤單元儲存時,在一些具體實施例中,該進行中指示符與該資料位址索引值相關聯的儲存,而在其他具體實施例中,該進行中指示符與該資料處理單元索引值相關聯的儲存。
當該追蹤單元使用一替代資料位址索引值時,在一些具體實施例中,該追蹤單元經組態以產生指示該替代資料位址索引值之追蹤資料的一項目。雖然由追蹤單元產生的索引值的預定的序列大體上容許追蹤資料的一給定項目之索引從該追蹤資料的以前項目之索引值推理出,但當使用一替代資料位址索引值時並非如此情況。就追蹤單元而言有利的係產生指示替代資料位址索引值之追蹤資料的一項目,使得追蹤資料的接受者可決定此「一次性(one-off)」的特殊索引值。
替代資料位址索引值及資料位址索引值可根據不同協定編碼,但在一具體實施例中,該替代資料位址索引值及該下一次資料位址索引值共享一編碼協定。例如,能為資料位址索引值保留該協定內之一預定範圍,而為替代資料位址索引值保留其餘部分。
在一些具體實施例中,該追蹤單元經組態以自有關一初始指令群及一後續指令群的該資料處理單元接收一合併指示,其中若該資料處理單元決定若執行該初始指令群而將執行該後續指令群時該資料處理單元發出該合併指令,及因此該初始指令群及該後續指令群係一合併的指令群,且其中該追蹤單元係經組態以取決於該合併指示組態以修正關聯該合併指令群之該索引儲存單元中的至少一合併索引值。
在一處置用於推測執行之指令群的資料處理單元中,構成一群之定義典型藉由指令(例如一分支指令)決定,資料處理單元尚未得知將解決該分支的方法。然而,可能此一分支將會採取之方向事先加以解決,例如若一「若相等則分支」指令所依據的值經決定且已知在執行該分支指令前此值將不改變。若此一指令定義兩指令群之間的邊界,則在此情況中,可將兩指令群合併,因為第一群的執行後必然跟隨有第二群的執行。當資料處理單元發出此一合併指示時追蹤單元則可修正儲存在索引儲存單元中的一索引值,該索引儲存單元與現已合併的兩指令群關聯。例如,若一第一與最後索引值係先前在與一第一及第二指令群關聯之索引儲存單元中儲存,當該兩指令群合併時,可修正索引儲存單元中的值以用從第一群取得的第一索引值及從第二群取得的最後索引值指示一單一指令群。
在一些具體實施例中,該追蹤單元經組態以產生追蹤資料的一合併項目,追蹤資料之該合併項目指示該初始指令群及該後續指令群已經合併。在此情況下,追蹤單元可經組態以產生追蹤資料的一合併項目以對追蹤資料的接受者指示該兩指令群已經合併及處置為一單一指令群。
本發明之一第二態樣提供一種追蹤單元,該追蹤單元組態以產生指示一資料處理單元之處理活動之追蹤資料的項目,該追蹤單元包含:一追蹤索引構件,該追蹤索引構件用於關聯一索引值與由該追蹤單元產生之追蹤資料的該等項目之至少一子集。該追蹤索引構件經組態以產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列的一第n索引值決定。
本發明之一第三態樣提供一種方法,該方法產生指示一資料處理單元之處理活動的追蹤資料之項目,該方法包含以下步驟:產生追蹤資料的該等項目;關聯一索引值與由追蹤資料的產生項目之至少一子集;產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列的一第n索引值決定。
第1圖概要地說明包括根據本發明之一追蹤單元的一資料處理系統。資料處理系統包含處理器核心100(一資料處理單元)及追蹤單元110,追蹤單元110經組態以監視處理器核心100的處理活動及產生指示核心之處理活動的追蹤資料的項目(作為一追蹤串流)。處理器核心100包含一提取單元120及一執行單元130。提取單元120從記憶體(未圖示)提取指令及將指令傳給執行單元130用於執行。尤其係處理器核心中100係一推測及無序處理器,及因此提取單元120經組態以為執行單元130提取經預測(儘管未保證)將需要的指令。執行單元130將推測地執行此等指令,後續當執行單元130已知事實上是否應執行該推測地執行指令時取消或確定該等指令。
追蹤單元110經組態以產生指示處理器核心100之處理活動的追蹤資料之項目,包括指令的推測執行。雖然原則上追蹤單元110可緩衝關聯推測地執行指令所產生的追蹤資料之項目,且僅在一旦解決該推測後將該等項目釋放作為輸出追蹤串流,但此需要在追蹤單元110中較佳係避免之可貴的儲存空間。取而代之在第1圖說明的具體實施例中,追蹤單元110經組態以亦推測地產生追蹤資料,即產生指示推測地執行指令之追蹤資料的項目,且然後一旦已知是否推測正確而將追蹤資料的該等項目取消/確定。為了如此,此追蹤單元110更設有一追蹤索引單元140。索引單元140經組態以將一索引值與由追蹤單元110產生的追蹤資料之項目的至少一子集關聯。尤其係,追蹤單元140經組態以產生該等索引值成為索引值的一預定序列,其中一第n+1索引值可從在該預定序列的一第n索引值決定。在所示之具體實施例中,此功能係藉由索引單元140中之一計數器提供,如將參考第2圖進一步描述。
第2圖更詳細地概要說明第1圖顯示的追蹤單元110。追蹤單元110包含追蹤控制單元200,該追蹤控制單元200控制追蹤單元110的總體操作。追蹤單元110更包含計數器210,計數器210提供追蹤單元110可關聯其產生的追蹤資料的(一些)項目的索引值之預定序列。追蹤單元110亦包含一索引儲存單元220,其中可儲存由計數器210產生的索引值。索引儲存單元220包含一第一索引儲存單元230及一最後索引儲存單元240。對於一推測地執行之指令群內的第一指令,追蹤單元110經組態以將來自計數器210之目前計數器值儲存進入至由群數目索引的第一索引儲存單元內。相反地,當開始一新群時,目前計數器值在最後索引儲存單元240中儲存。
在所示的具體實施例中,索引儲存單元220具有足夠項以針對指令群對應於處理器的最大推測深度。處理器的最大推測深度表示索引儲存單元可能必須保持之項的最大數目,因為超出該深度處理器必須確定或取消一指令群,該操作將清空索引儲存單元中之一項。另外,在所示的具體實施例中,由處理器推測地執行的各指令群可具有一最大的一分支指令及一載入(或儲存)指令。由於所有其他指令可從包括此等指令之指示的一追蹤串流推理出,故每一指令群將產生一最大之兩指令追蹤項目。此對於索引儲存單元220中之一給定項具有進一步的結果,最後索引儲存單元240中的值可能至多2計數,該值不同於第一索引儲存單元230中的值。藉由將最後索引值儲存成為自第一索引值的一2位元偏移(即,+0、+1或+2),因而節省可貴的儲存空間。追蹤單元更包含一最舊未確定儲存單元250,下文將解釋最舊未確定儲存單元250的功能。追蹤單元110的變動包含下文亦描述的虛線方塊252及254。
由追蹤單元110實行的一系列步驟在第3圖中概要地說明。流程在步驟300處開始,在該處等待來自處理器核心100的一新事件,流程本身在步驟300處形成迴路直至接收到一事件。當接收到一新事件時(即,由核心執行一下一指令),流程前進至步驟310,在該處決定該事件是否係一新指令群的部分。若是,則流程前進至步驟320,在該處索引儲存單元220(「表」)的第一索引儲存單元230中的一項會用在對應於新的群數字K的該項處之目前計數器值更新。接著,在步驟330處決定此事件是否係「關注」且經追蹤兩者。「關注」指令係分支、載入及儲存指令(由於如上述原因,此等係針對追蹤一群指令之關鍵指令)。若一指令目前未藉由追蹤單元過濾掉則加以追蹤。若事件(即,指令)係關注及經追蹤兩者則流程前進至步驟340,在該處計數器210增加且在步驟350處事件於追蹤單元110的追蹤串流內輸出。在步驟360處,對應於群K之最後索引儲存單元240的項用計數器210的目前值更新。此時流程回至步驟300。
追蹤單元110的操作及尤其索引儲存單元(亦稱作「追蹤表」)220的操作現參考下表1描述。表1顯示在當處理器核心100推測地執行指令群A、B及C且後續指示該群B應被取消及群A應被確定之情況下,計數器值、最舊未確定值、及追蹤表如何在追蹤單元110中更新。
群A用一載入(LDR)指令開始,該指令係「關注」及目前被追蹤。因此,對應於群A之第一索引單元230的項(「A.first」)儲存0的目前計數器值且接著使計數器增加至1。最後,對應於群A的最後索引單元240的項(「A.last」)儲存1的目前計數器值。群A內的下一指令係既非「關注」亦非追蹤之移動指令(MOV)。群A的最後指令係若相等則分支(BEQ)指令,該指令係「關注」及經追蹤兩者,所以計數器增加至2。對應於群A之最後索引單元240的項(「A.last」)然後用2的目前計數器值更新。應注意到事實上各指令的最後步驟始終係用於對應於待用目前計數器值更新之目前群的最後索引單元240的項。當然僅當計數器已針對該指令更新時此才具有任何效果。依此方法,「last」值的更新未在表1中顯示的剩餘指令中明確地描述。
群B從非「關注」亦非追蹤之ADD指令開始,但如一新群內的第一指令使目前計數器值2儲存在第一索引值儲存單元的對應項中(即,B.first=2)。群B內的第二指令係SUB指令,該指令同樣既非「關注」亦非追蹤且不更新任何值。
群C用係「關注」及經追蹤兩者之儲存(STR)指令開始,因此目前計數器值儲存在第一索引儲存單元的C.first項中且使計數器接著增加至3。群C內的第二指令係亦「關注」及經追蹤之若不相等則分支(BNE)指令,所以計數器更新至4。
其次,處理器核心100指示群B的推測執行為不正確,且因此應該取消群B及C。回應中,追蹤單元110(由追蹤控制單元200控制)引用計數器210的目前計數值(其目前係4),及儲存在第一索引儲存單元230的對應項(即,B.first)中係2的值。追蹤單元110因此決定應該取消追蹤資料的兩項目(4-2)且產生指示此事實之追蹤資料的一項目。計數器210接著重設至2(因為計數器先前係4且2項目已被取消)。
接著,處理器核心100指示指令群A應被確定,因為處理器核心100已決定此指令群的推測執行係正確。回應中,追蹤單元中110(在追蹤控制單元200的控制中)引用儲存在最舊未確定儲存單元250的值(目前0)及在最後索引儲存單元240中對應於此群且係2之項(即,A.last)。追蹤單元110因此決定應確定追蹤資料的兩項目(2-0),及產生指示此事實之追蹤資料示的一項目。接著最舊未確定儲存單元250中儲存的值重設至「last」值,該值被讀取用於此群,即此實例中為2。
在關於表1描述的具體實施例中,應注意到取消及確定係藉由引用一些事件來施行,其中追蹤資料的所產生項目指示應取消或確定的事件之數目。在一替代具體實施例中,追蹤單元可產生引用一事件數目之追蹤的取消/確定項目。當此係該情況時,對於追蹤的一取消項目,事件數目將從「first」值取得,即第一索引值儲存單元之對應項,及對於追蹤的一確定項目,事件數目係從「last」值取得,即最後索引值儲存單中之對應項。應注意雖然可能出現藉由事件數目來確定及取消將需要較少硬體(因為無須相減),但應注意當藉由事件之一數目指示確定/取消時此時常可被壓縮,因為其大體上將具有前導的零。是否藉由「事件的數目」或「事件數目」以確定/取消之選擇可根據系統需求決定,即是否追蹤單元中的較少硬體或追蹤串流中較少頻寬被認為更重要。
現參考下表2討論另一實例,其中在藉由不追蹤儲存(STR)指令之實例中追蹤單元進一步過濾所產生的追蹤。表2中給定用於群A及B之值係與表1中給定的該等值相同。然而,對於群C之第一指令未追蹤STR指令,所以計數沒增加。因此,僅當遭遇群C內的BNE指令(經追蹤)時計數係增加至3。
因此,當處理器核心發出「取消B」訊息時,追蹤單元110決定目前計數係3,B.first係2(如表1實例中),且因此僅追蹤的一項目(3-2)應取消。同樣地,計數只減少一(成為2的一值)。當處理器核心發出「確定A」訊息時(如在表1中),則最舊未確定計數係0,A.last=2且因此確定追蹤的兩項目。接著最舊未確定計數更新成2。
雖然參考表1及2討論的各群指令仍可作為不同群,但各群指令可推測地執行為一群,且接著確定或取消成為一群,在一些具體實施例中,兩指令群在執行後可一起合併。
表3顯示如何將索引儲存單元(「追蹤表」)220中之值用於此一情況中。在此實例中,群B內的BNE指令係在群A內的LDR指令前解決。於此情況下,處理器核心100指示此事實,處理器核心100指令追蹤單元將群B併入群A。此藉由複製B.last的值進入至A.last來進行。換言之,與群A對應的該組追蹤值增加一(由於BNE指令的追蹤項目現形成該組追蹤項目的部分,該組追蹤項目現將必然跟隨形成群A的開始的LDR指令的成功執行)。一旦已施行此合併,群標籤B接著可用於再使用及被採取作為在群C後之下一指令群的標籤。在此新群B內(其中執行MOV及BLT),僅追蹤BLT。
在一更簡單具體實施例中,可將索引儲存單元配置作為一FIFO單元。此在第4圖中概要地說明,其中追蹤單元110包含以FIFO 260形式之一追蹤索引單元。此簡化配置的一優點係無須將完全索引值儲存在索引儲存單元260的各項中。
當由追蹤單元110接收到群時,群被增加至FIFO260的末尾。然後,當確定群時,群被從FIFO的前面移走,而當群被取消時,群從FIFO的末尾取得。FIFO中的各項含有一指示在該群內的關注指令之數目的小識別符。在說明性實例中,最多2個關注指令可在任何群內,識別符係指示0、1或2的一2位元欄位。由於從FIFO(依確定或取消)取得各項,待確定或取消之追蹤事件的數目僅係藉由FIFO中之該項內的識別符所表示的數目。若確定或取消多個群,則該等識別符從移除的FIFO項相加。
現描述亦在第2圖(虛線方塊)中顯示之追蹤單元110的組態變化。在任何給定時間,將有未被確定或取消的推測追蹤資料項目的一數目。此數目在零至處理器的最大推測深度之範圍中。亦應注意通常無須立即將確定追蹤資料輸出。可延遲確定,藉由將確定計數相加在一起來組合確定,或分開確定,只要確定計數輸出絕不超過由處理器產生的該等計數。
可用此等因數來產生一系統,其中確定係暗指而非於追蹤串流中明顯地輸出,此舉進一步改進追蹤效率。與立即輸出不同的係保持一總數(在「確定尚未輸出」儲存單元252中)指示尚未輸出之確定計數的總數。一第二計數保持(在「推測深度」儲存單元254中)推測追蹤資料項目的目前數目。當一追蹤資料項目輸出時,推測深度增加一。當一確定計數係輸出時,推測深度減少該確定數目。當一取消計數係輸出時,推測深度減少該取消數目。
隨著更多追蹤資料項目輸出,推測深度將達到最大推測深度。當此發生時意味著一具有計數=1的確定。同時推測深度減少一。總確定計數亦減少一。
若追蹤單元經指令停止產生追蹤資料則追蹤單元可經組態以執行以下任一步驟:
(1)輸出目前待決總確定計數及立即輸出任何隨後確定計數;或
(2)等待直至所有追蹤資料都已確定或取消且然後輸出該總確定計數。
本發明的技術亦找到用於一無序處理器的特定應用性,尤其在資料值及資料位址的背景中。在一無序處理器中追蹤資料(與指令相反)必須應付額外的複雜性,即一無序處理器將會以一不同於資料位址之次序產生或接收資料值。由本發明提供的追蹤資料之項目的索引容許資料值與其資料位址匹配。然而,伴隨追蹤資料值及位址的另一困難係雖然可對於一資料位址可相對於其上代指令延遲多久方面賦予一極限,此就相對於其上代資料位址之資料值而言不實際。例如,一讀取可花費上百循環來完成,且當時可能已經執行任何數目的指令(只要無此等指令需要該讀取值)。
根據本發明的技術,追蹤單元中的一追蹤索引單元將一索引值與資料位址關聯,使得可引用此等資料位址。第5圖中,此等索引值係在數目的較低行中之「資料位址關鍵」。可看到此等關鍵大體上為循序且進一步見到關鍵在達到7之一值以後纏繞至0。大體上關聯資料值在該關鍵後短暫可用,且因此當資料關鍵的序列纏繞時,可再使用該等關鍵而沒有衝突。然而,若一資料轉移花費一長時間來完成,則一追蹤關鍵在其已被釋放前可被再使用。此在第5圖中由資料位址關鍵數字1說明,即未接收到對應資料值達到一不尋常的長時間。因此,在資料位址關鍵1應被用於第5圖中的第二時間之前,資料位址關鍵1仍在「進行中」且因此不可使用。取而代之的是,追蹤單元經組態以使用一特殊關鍵(關鍵A)而非循序關鍵1。在此具體實施例中,此特殊關鍵A事實上係處理器100用以在等待資料值返回時追蹤此資料位址的核心關鍵。在其他具體實施例中,特殊關鍵可從一不同「字母」導出,只要該字母具有與核心關鍵的一對一對應。第5圖亦說明一些循序關鍵若由處理器明確地去除則其可能沒有一對應資料值(如,循序關鍵3的第一實例)。應注意的係無須檢查一特殊關鍵是否係進行中,因為特殊關鍵由於在核心中關於如何使用核心關鍵之規則而在進行中時無法再使用(核心關鍵亦必須被唯一地使用)。
第6圖概要地說明關鍵追蹤表的一具體實施例,其中由核心關鍵引用該等資料位址關鍵。在此,由處理器核心使用核心關鍵β來索引三資料位址,該三資料位址係貢獻於循序關鍵D1、D2及D3。下一資料位址由核心關鍵β使用,追蹤單元識別下一循序關鍵(即D4)仍由核心關鍵α使用中且因此將核心關鍵β本身用作目前資料位址之索引關鍵。追蹤單元藉由引用關聯之進行中儲存單元來識別該循序關鍵D4仍使用中,該儲存單元中關聯循序索引關鍵D4的一旗標組指示其仍進行中。
第7圖中說明一替代具體實施例,圖中該進行中指示符由核心關鍵儲存。此配置需要當使用一循序關鍵(D1、D2等等)時在關鍵追蹤表中施行一完全關聯查找表。若對於該循序關鍵找到一匹配及設定對應核心關鍵旗標,則決定一循序關鍵係在進行中。
第8圖概要地說明在一具體實施例中由一追蹤單元採取的一系列步驟。流程在步驟400處開始,在該處追蹤單元從處理器核心接收一新資料位址及一關聯核心關鍵。然後,在步驟410處追蹤單元計算下一循序關鍵及在步驟420處,追蹤單元決定在關鍵追蹤表中該關鍵是否目前「進行中」。若否,則流程前進至步驟430且將下一循序關鍵加至關鍵追蹤表及流程返回至步驟400。然而,若在步驟420決定下一循序關鍵目前係在進行中,則取而代之在步驟440將特殊關鍵加至關鍵追蹤表及在步驟450處特殊關鍵的值在追蹤串流中輸出。接著流程回至步驟400。應注意的係若已使用一特殊關鍵以代替下一循序關鍵,則大體上較佳的係不立即在步驟410的下一重覆上再嘗試下一循序關鍵,因為若已經發現特殊關鍵在一重覆中使用,在下一重覆中仍很有可能在使用中。
大體上應該認識到可用的循序關鍵愈多,需要特殊關鍵之可能愈少。可能有任何數目的循序關鍵,但當有N核心關鍵時,大體上適當的係在N至3N的範圍。應注意的係循序關鍵無須用資料位址輸出因為可預測循序關鍵的值,循序關鍵係由追蹤單元產生之索引值的預定序列之一。
應該進一步注意到循序關鍵及特殊關鍵能使用整體分離的協定編碼,但在一些具體實施例中,只要沒有重疊就能使用相同的協定編碼。例如,在值0至15的範圍中,循序關鍵能採取值0至11且特殊關鍵能採取值12至15。追蹤資料的接受者當然需要知道已經使用哪些規定。第9圖說明分成12循序關鍵及4特殊關鍵的16關鍵(0至15)之一協定空間。
儘管已在此描述一特定具體實施例,應意識到本發明不受其限制及可在本發明的範圍內製造其許多修正及增加。例如,以下附屬請求項之特徵的各種組合可在未從本發明的範圍脫離下用獨立請求項造成。
雖然已在此參考附圖詳細描述本發明的說明性具體實施例,但應理解本發明不受限於該等精確具體實施例,且各種改變及修改可藉由熟習此項技術者實現而不脫離由隨附申請專利範圍界定之本發明範疇及精神。
100...處理器核心
110...追蹤單元
120...提取單元
130...執行單元
140...索引單元
200...追蹤控制單元
210...計數器
220...索引儲存單元
230...第一索引儲存單元
240...最後索引儲存單元
250...未確定儲存單元
252...儲存單元
254...儲存單元
260...FIFO
本發明之以上及其他目的、特徵及優點可將會從以下結合附圖閱讀的說明性具體實施例之詳述中瞭解。
第1圖概要地說明根據一具體實施例之一資料處理單元及一關聯追蹤單元;
第2圖概要地說明第1圖的追蹤單元的更多細節;
第3圖說明由根據一具體實施例之一追蹤單元採取的一系列步驟;
第4圖概要地說明第1圖的追蹤單元之一替代組態;
第5圖說明根據一具體實施例之循序關鍵及一特殊關鍵之使用;
第6圖概要地說明根據一具體實施例之一索引儲存單元;
第7圖概要地說明根據一具體實施例之一索引儲存單元;
第8圖概要地說明由根據一具體實施例之一追蹤單元採取的一序列步驟;以及
第9圖說明16關鍵之一協定空間分成12循序關鍵及4特殊關鍵。
110...追蹤單元
200...追蹤控制單元
210...計數器
220...索引儲存單元
230...第一索引儲存單元
240...最後索引儲存單元
250...未確定儲存單元
252...儲存單元
254...儲存單元

Claims (48)

  1. 一種追蹤單元,該追蹤單元經組態以產生指示一資料處理單元之處理活動的追蹤資料的項目,該追蹤單元包含:一追蹤索引單元,該追蹤索引單元經組態以關聯一索引值與由該追蹤單元產生之追蹤資料的該等項目之至少一子集,該追蹤索引單元經組態以產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列中的一第n索引值決定,其中該追蹤單元包含一索引儲存單元,該索引儲存單元經組態以儲存介於兩索引值之間的一差值。
  2. 如請求項1之追蹤單元,其中該追蹤單元包含一計數器,該計數器經組態以提供索引值的該預定序列。
  3. 如請求項1之追蹤單元,其中該追蹤單元包含一索引儲存單元,該索引儲存單元經組態以儲存至少一該索引值。
  4. 如請求項1之追蹤單元,其中該索引儲存單元係一FIFO裝置。
  5. 如請求項1之追蹤單元,其中該追蹤單元經組態以回應於一預定事件而將諸值的該預定序列的該索引值重設至一預定值。
  6. 如請求項1之追蹤單元,其中該追蹤單元經組態以產生諸值的該預定序列成為諸值之一迴路序列。
  7. 如請求項1之追蹤單元,其中該追蹤單元經組態以對於該資料處理單元所回應的至少一指令類型不產生追蹤資料的一項目。
  8. 如請求項1之追蹤單元,其中該資料處理單元的該等處理活動包含使用一資料位址引用一儲存資料值且該索引值係一與該至少一資料位址關聯的資料位址索引值。
  9. 如請求項8之追蹤單元,其中對該儲存資料值之該引用包含載入該儲存資料值。
  10. 如請求項8之追蹤單元,其中對該儲存資料值的該引用包含儲存該儲存資料值。
  11. 如請求項8之追蹤單元,其中該追蹤單元經組態以在一資料位址索引值儲存表中儲存該資料位址索引值。
  12. 一種追蹤單元,該追蹤單元經組態以產生指示一資料處理單元之處理活動的追蹤資料的項目,該追蹤單元包含:一追蹤索引單元,該追蹤索引單元經組態以關聯一索引值與由該追蹤單元產生之追蹤資料的該等項目之至少一子集,該追蹤索引單元經組態以產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預 定序列中的一第n索引值決定,其中該追蹤單元包含一索引儲存單元,該索引儲存單元經組態以儲存至少一個該索引值,其中該資料處理單元的該等處理活動包含推測指令執行且該至少一索引值係與至少一推測執行指令關聯。
  13. 如請求項12之追蹤單元,其中該索引儲存單元經組態以儲存該至少一索引值,直至該至少一推測執行指令已被確定或取消。
  14. 如請求項12之追蹤單元,其中該推測執行指令形成一指令群的部分,其中該指令群的一第一指令的推測執行使該群指令的所有指令之推測執行成為必要。
  15. 如請求項14之追蹤單元,其中該索引儲存單元包含一第一索引儲存單元,該第一索引儲存單元經組態以儲存一第一索引值,該第一索引值關聯該指令群內的一第一指令。
  16. 如請求項15之追蹤單元,其中該第一索引儲存單元包含一第一複數項且經組態以取決於指示該指令群的一指示符而儲存該第一索引值。
  17. 如請求項16之追蹤單元,其中該第一複數項的一數目對應於可由該資料處理單元推測執行的指令群之至少一最大數目。
  18. 如請求項15之追蹤單元,其中該追蹤單元經組態以從該資料處理單元接收一取消指示,該取消指示會指示已經推測執行之一選定指令群已被取消,且該追蹤 單元經組態以產生指示該選定指令群的追蹤資料之一取消項目。
  19. 如請求項18之追蹤單元,其中該追蹤單元經組態以當接收到該取消指示時,取決於一第一索引值產生追蹤資料的該取消項目,該第一索引值儲存在該第一索引儲存單元中及關聯該選定指令群。
  20. 如請求項19之追蹤單元,其中該追蹤單元包含一計數器,該計數器經組態以提供索引值的該預定序列且該追蹤單元經組態以進一步取決於該計數器之一目前計數器值產生追蹤資料的該取消項目。
  21. 如請求項14之追蹤單元,其中該索引儲存單元包含一最後索引儲存單元,該最後索引儲存單元經組態以儲存關聯該指令群內之一最後指令的一最後索引值。
  22. 如請求項21之追蹤單元,其中該最後索引儲存單元包含一第二複數項及經組態以取決於指示該群指令之一指示符儲存該最後索引值。
  23. 如請求項22之追蹤單元,其中該第二複數項的一數目對應於可由該資料處理單元推測執行的指令群之至少一最大數目。
  24. 如請求項21之追蹤單元,其中該追蹤單元係組態以從該資料處理單元接收一確定指示,該確定指示指示一已經推測執行的選定指令群已被確定,及該追蹤單元係組態以產生指示該選定指令群的追蹤資料之一確定項目。
  25. 如請求項24之追蹤單元,其中該追蹤單元經組態以當接收到該確定指示時取決於一最後索引值產生追蹤資料的該確定項目,該最後索引值儲存在該最後索引儲存單元中及關聯該選定指令群。
  26. 如請求項25之追蹤單元,其中該追蹤單元包含一計數器,該計數器經組態以提供索引值之該預定序列及一未確定儲存單元,該追蹤單元經組態以當產生追蹤的該確定項目時,在該未確定儲存單元中儲存該計數器之一目前計數器值。
  27. 如請求項26之追蹤單元,其中該追蹤單元係經組態以取決於一值產生追蹤的該確定項目,該值儲存在該未確定儲存單元中。
  28. 如請求項24之追蹤單元,其中該追蹤單元包含一推測深度計數器,該推測深度計數器經組態以指示由該資料處理單元執行之指令的一目前推測深度。
  29. 如請求項28之追蹤單元,其中該追蹤單元包含一擱置確定計數器,該擱置確定計數器經組態以指示經擱置輸出之追蹤資料的確定項目的一目前數目。
  30. 如請求項29之追蹤單元,其中該追蹤單元經組態以當接收到該確定指示而沒有產生追蹤資料的該確定項目時使該擱置確定計數器增加。
  31. 如請求項29之追蹤單元,其中該追蹤單元經組態以當該推測深度計數器達到一預定值時減少該擱置確定計數器。
  32. 如請求項28之追蹤單元,其中當該推測深度計數器達到一預定值時產生追蹤資料的另一項目暗示該追蹤單元已從該資料處理單元接收到另一確定指示。
  33. 如請求項14之追蹤單元,其中該索引儲存單元包含一第一索引儲存單元,該第一索引儲存單元經組態以儲存關聯該指令群內的一第一指令之一第一索引值,其中該索引儲存單元包含一最後索引儲存單元,該最後索引儲存單元經組態以儲存關聯該群指令中的一最後指令之一最後索引值,其中該最後索引值係以與該第一索引值相關之一格式儲存。
  34. 如請求項33之追蹤單元,其中與該第一索引值相關的該格式係一2位元資料格式。
  35. 如請求項14之追蹤單元,其中該追蹤單元經組態以自該資料處理單元接收有關一初始指令群及一後續指令群的一合併指示,其中若該資料處理單元決定若該初始指令群經執行而將會執行該後續指令群時該資料處理單元發出該合併指令,及因此該初始指令群及該後續指令群係一合併的指令群,及其中該追蹤單元係經組態以取決於該合併指示以修正關聯該合併指令群之該索引儲存單元中的至少一合併索引值。
  36. 如請求項35之追蹤單元,其中該追蹤單元經組態以產生追蹤資料的一合併項目,追蹤資料之該合併項目指示該初始指令群及該後續指令群已經合併。
  37. 一種追蹤單元,該追蹤單元經組態以產生指示一資料 處理單元之處理活動的追蹤資料的項目,該追蹤單元包含:一追蹤索引單元,該追蹤索引單元經組態以關聯一索引值與由該追蹤單元產生之追蹤資料的該等項目之至少一子集,該追蹤索引單元經組態以產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列中的一第n索引值決定,其中該追蹤單元包含一索引儲存單元,該索引儲存單元經組態以儲存至少一個該索引值,其中該索引儲存單元經組態以選擇性地儲存一進行中(in-flight)指示符,該進行中指示符指示諸索引值的該預定序列之一儲存索引值目前正使用中。
  38. 如請求項37之追蹤單元,其中該追蹤單元經組態以當產生一下一索引值時,引用該進行中指示符,及若該進行中指示符指示該下一索引值仍使用中時,儲存一替代索引值以代替該下一索引值。
  39. 一種追蹤單元,該追蹤單元經組態以產生指示一資料處理單元之處理活動的追蹤資料的項目,該追蹤單元包含:一追蹤索引單元,該追蹤索引單元經組態以關聯一索引值與由該追蹤單元產生之追蹤資料的該等項目之至少一子集, 該追蹤索引單元經組態以產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列中的一第n索引值決定,其中該資料處理單元的該等處理活動包含使用一資料位址引用一儲存資料值且該索引值係一與該至少一資料位址關聯的資料位址索引值,其中該追蹤單元經組態以儲存該資料位址索引值於一資料位址索引值儲存表中,其中該追蹤單元經組態以選擇性地儲存一進行中指示符,該進行中指示符指示對關聯該資料位址索引值的該儲存資料值之引用尚未完成及該資料位址索引值在進行中。
  40. 如請求項39之追蹤單元,其中該追蹤單元經組態以當產生一下一資料位址索引值時,引用一儲存進行中指示符,及若該儲存進行中指示符指示該下一資料位址索引值仍進行中時,儲存一替代資料位址索引值以代替該下一資料位址索引值。
  41. 如請求項40之追蹤單元,其中該替代資料位址索引值包含一資料處理單元索引值,其中由該資料處理單元使用該資料處理單元索引值來引用該資料位址。
  42. 如請求項40之追蹤單元,其中該替代資料位址索引值具有與一資料處理單元索引值之一對一對應,其中由該資料處理單元使用該資料處理單元索引值來引用該資料位址。
  43. 如請求項41之追蹤單元,其中該進行中指示符與該 資料位址索引值相關聯地儲存。
  44. 如請求項41之追蹤單元,其中該進行中指示符與該資料處理單元索引值相關聯地儲存。
  45. 如請求項40之追蹤單元,其中該追蹤單元經組態以產生指示該替代資料位址索引值之追蹤資料的一項目。
  46. 如請求項40之追蹤單元,其中該替代資料位址索引值及該資料位址索引值共享一編碼協定。
  47. 一種追蹤單元,該追蹤單元經組態以產生指示一資料處理單元之處理活動之追蹤資料的項目,該追蹤單元包含:一追蹤索引構件,該追蹤索引構件用於關聯一索引值與由該追蹤單元產生之追蹤資料的該等項目之至少一子集,該追蹤索引構件經組態以產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列的一第n索引值決定,及一索引儲存構件,該索引儲存構件用於儲存介於兩索引值之間的一差值。
  48. 一種產生指示一資料處理單元之處理活動的追蹤資料之項目的方法,該方法包含以下步驟:產生追蹤資料的該等項目;將一索引值與由追蹤資料的該等產生項目之至少 一子集關聯;產生該索引值成為索引值的一預定序列之一,其中該預定序列中之一第n+1索引值可僅從在該預定序列中的一第n索引值決定,及儲存介於兩索引值之間的一差值。
TW100119838A 2010-06-21 2011-06-07 當追蹤資料處理系統時的關鍵配置 TWI517035B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1010350.5A GB2481384B (en) 2010-06-21 2010-06-21 Key allocation when tracing data processing systems

Publications (2)

Publication Number Publication Date
TW201203109A TW201203109A (en) 2012-01-16
TWI517035B true TWI517035B (zh) 2016-01-11

Family

ID=42582702

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100119838A TWI517035B (zh) 2010-06-21 2011-06-07 當追蹤資料處理系統時的關鍵配置

Country Status (10)

Country Link
US (1) US8707106B2 (zh)
EP (1) EP2583179B1 (zh)
JP (1) JP5512041B2 (zh)
KR (1) KR101708170B1 (zh)
CN (1) CN102947804B (zh)
GB (1) GB2481384B (zh)
IL (1) IL222736A (zh)
MY (1) MY156921A (zh)
TW (1) TWI517035B (zh)
WO (1) WO2011161429A2 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713204B2 (en) * 2011-12-27 2014-04-29 Apple Inc. High-performance AHCI interface
US9183147B2 (en) * 2012-08-20 2015-11-10 Apple Inc. Programmable resources to track multiple buses
US9626119B2 (en) * 2014-11-14 2017-04-18 Intel Corporation Using counters and a table to protect data in a storage device
US10061583B2 (en) * 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9934126B1 (en) * 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of reverse lookup data structures
US9934127B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of key frames for replay responsiveness
US10185645B2 (en) 2017-03-08 2019-01-22 Microsoft Technology Licensing, Llc Resource lifetime analysis using a time-travel trace
US10282274B2 (en) 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
GB2570466B (en) 2018-01-25 2020-03-04 Advanced Risc Mach Ltd Commit window move element
US11061807B2 (en) * 2018-12-28 2021-07-13 Intel Corporation Trace management during aborted speculative operations
CN112579169B (zh) * 2019-09-27 2024-04-09 阿里巴巴集团控股有限公司 处理器追踪流的生成方法及装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905204A (en) * 1988-09-06 1990-02-27 Exxon Production Research Company Method of weighting a trace stack from a plurality of input traces
JPH06282468A (ja) * 1993-03-30 1994-10-07 Toshiba Corp 情報処理装置
US5724566A (en) * 1994-01-11 1998-03-03 Texas Instruments Incorporated Pipelined data processing including interrupts
JP2001147837A (ja) * 1999-11-18 2001-05-29 Fujitsu Ltd プログラムトレース装置及び記憶媒体
US6681321B1 (en) * 2000-04-20 2004-01-20 International Business Machines Corporation Method system and apparatus for instruction execution tracing with out of order processors
GB2367650B (en) * 2000-10-04 2004-10-27 Advanced Risc Mach Ltd Single instruction multiple data processing
US7093236B2 (en) * 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
US7168066B1 (en) * 2001-04-30 2007-01-23 Mips Technologies, Inc. Tracing out-of order load data
US7225434B2 (en) * 2003-09-25 2007-05-29 Intel Corporation Method to collect address trace of instructions executed
US7194731B1 (en) * 2003-11-14 2007-03-20 Sun Microsystems, Inc. Method and apparatus for speculative tracing
US7219207B2 (en) * 2003-12-03 2007-05-15 Intel Corporation Reconfigurable trace cache
US7987393B2 (en) * 2005-05-16 2011-07-26 Texas Instruments Incorporated Determining operating context of an executed instruction
US7802149B2 (en) * 2005-05-16 2010-09-21 Texas Intruments Incorporated Navigating trace data
US7603589B2 (en) * 2005-05-16 2009-10-13 Texas Instruments Incorporated Method and system for debugging a software program
US7886271B2 (en) * 2005-05-16 2011-02-08 Texas Instruments Incorporated Embedding event information in the timing stream
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7757068B2 (en) * 2007-01-16 2010-07-13 Oracle America, Inc. Method and apparatus for measuring performance during speculative execution
TWI384397B (zh) * 2007-04-18 2013-02-01 Mediatek Inc 資料位址追蹤方法及資料位址追蹤裝置、資料追蹤方法及資料追蹤裝置
US8091073B2 (en) * 2007-06-05 2012-01-03 International Business Machines Corporation Scaling instruction intervals to identify collection points for representative instruction traces

Also Published As

Publication number Publication date
KR20130123355A (ko) 2013-11-12
GB2481384B (en) 2018-10-10
CN102947804A (zh) 2013-02-27
JP5512041B2 (ja) 2014-06-04
US20110314264A1 (en) 2011-12-22
IL222736A0 (en) 2012-12-31
WO2011161429A3 (en) 2012-02-16
TW201203109A (en) 2012-01-16
IL222736A (en) 2015-10-29
EP2583179A2 (en) 2013-04-24
US8707106B2 (en) 2014-04-22
CN102947804B (zh) 2016-02-10
GB2481384A (en) 2011-12-28
WO2011161429A2 (en) 2011-12-29
JP2013533546A (ja) 2013-08-22
KR101708170B1 (ko) 2017-02-20
EP2583179B1 (en) 2017-03-22
GB201010350D0 (en) 2010-08-04
MY156921A (en) 2016-04-15

Similar Documents

Publication Publication Date Title
TWI517035B (zh) 當追蹤資料處理系統時的關鍵配置
JP5604373B2 (ja) 推測的に実行される命令のトレーシング
JP5865920B2 (ja) データ処理装置のトレース
CN105074656B (zh) 管理并发谓词表达式的方法和装置
WO2011051026A2 (en) Method and system for processing network events
US10445169B2 (en) Temporal relationship extension of state machine observer
US8271768B2 (en) Concurrent handling of exceptions in received aggregate exception structure with supplied exception handlers and marking handled exceptions
US20140164738A1 (en) Instruction categorization for runahead operation
US8146085B2 (en) Concurrent exception handling using an aggregated exception structure
TWI820005B (zh) 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法
EP3765963A1 (en) Tracing branch instructions
US9858172B2 (en) Apparatus and method for controlling debugging of program instructions including a transaction
US10063567B2 (en) System for cross-host, multi-thread session alignment
US20200192699A1 (en) Management of control parameters in electronic systems
JP2010211574A (ja) 情報処理システム、監視方法及び監視プログラム
US11048609B2 (en) Commit window move element