TWI798339B - 使用送交視窗移動元件的方法、模組、設備、分析器、電腦程式和儲存媒體 - Google Patents

使用送交視窗移動元件的方法、模組、設備、分析器、電腦程式和儲存媒體 Download PDF

Info

Publication number
TWI798339B
TWI798339B TW108102467A TW108102467A TWI798339B TW I798339 B TWI798339 B TW I798339B TW 108102467 A TW108102467 A TW 108102467A TW 108102467 A TW108102467 A TW 108102467A TW I798339 B TWI798339 B TW I798339B
Authority
TW
Taiwan
Prior art keywords
speculative
window
elements
commit
trace
Prior art date
Application number
TW108102467A
Other languages
English (en)
Other versions
TW201933100A (zh
Inventor
麥克約翰 吉布斯
Original Assignee
英商Arm股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW201933100A publication Critical patent/TW201933100A/zh
Application granted granted Critical
Publication of TWI798339B publication Critical patent/TWI798339B/zh

Links

Images

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/348Circuit details, i.e. tracer hardware
    • 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/3476Data logging
    • 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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Abstract

追蹤模組12具有監視電路18及追蹤輸出電路20,該監視電路18係用於監視處理電路8對指令的處理及該追蹤輸出電路20係用於輸出指示處理電路8處理指令的結果的元件序列。追蹤模組支持指示送交視窗的送交視窗移動元件的輸出,其表示包括至少一個推測元件(該至少一個推測元件表示至少一個推測性地執行的指令)的追蹤串流的一部分應移動,而追蹤串流之最舊的剩餘推測元件保持未送交。此對於追蹤程序代碼中的交易記憶體功能非常有用。

Description

使用送交視窗移動元件的方法、模組、設備、分析器、電腦 程式和儲存媒體
本發明係關於資料處理領域。更特定言之,本發明係關於指示處理電路處理指令的結果的追蹤資料的產生和分析。
資料處理設備可具有追蹤模組,該追蹤模組係用於監視處理電路對指令的處理並輸出指示處理電路處理指令之結果的元件序列。例如,由追蹤模組生成的追蹤元件可指示處理行為,該處理行為如分支指令的結果、例外的發生或在處理電路處理指令期間出現的其他感興趣事件的發生。追蹤分析單元可分析由追蹤模組輸出的元件序列並重建執行給定程序時由處理電路執行的操作。此對於除錯或診斷目的(例如,用於輔助軟體開發或效能分析)非常有用。
至少一些實例提供追蹤模組,該追蹤模組包括:監視電路,該監視電路用於監視處理電路對指令的處理;及追蹤輸出電路,該追蹤輸出電路輸出指示該處理電路對該等指令的該處理的結果的元件序列;其中: 追蹤輸出電路能輸出: 送交元件,該送交元件指示該處理電路已送交由該元件序列的送交視窗中的至少一個最舊的推測元件表示的一或多個推測執行的指令,該送交視窗包括了包含至少一個推測元件的該元件序列的一部分,該至少一個推測元件表示至少一個仍由該處理電路送交的推測執行的指令,其中該送交元件亦指示在該送交元件之後,該至少一個最舊的推測元件將從該送交視窗中被排除;及 送交視窗移動元件,該送交視窗移動元件指示當由該元件序列之最舊的剩餘推測元件所表示的一或多個推測執行的指令由該處理電路保持未送交時,該送交視窗應相對於該最舊的剩餘推測元件移動以改變哪一個推測元件是該送交視窗中最舊的推測元件。
至少一些實例提供了一種資料處理設備,其包括如上所述的追蹤模組和處理電路。
至少一些實例提供了一種用於追蹤處理電路處理指令的方法,該方法包括以下步驟: 監視該處理電路對該等指令的處理;及 輸出指示該處理電路對該等指令的該處理的結果的一元件序列; 該元件序列包括: 送交元件,該送交元件指示該處理電路已送交由該元件序列的送交視窗中的至少一個最舊的推測元件表示的一或多個推測執行的指令,該送交視窗包括了包含至少一個推測元件的該元件序列的一部分,該至少一個推測元件表示至少一個仍由該處理電路送交的推測執行指令,其中該送交元件亦指示在該送交元件之後,該至少一個最舊的推測元件將從該送交視窗中排除;及 送交視窗移動元件,該送交視窗移動元件指示當由該元件序列的最舊的剩餘推測元件所表示的一或多個推測執行的指令由該處理電路保持未送交時,該送交視窗應相對於該最舊的剩餘推測元件移動以改變哪個推測元件是該送交視窗之最早的推測元件。
至少一些實例提供了一種追蹤分析方法,該方法包括以下步驟: 獲得指示目標處理電路處理指令的結果的一元件序列; 回應於偵測到該元件序列中的一送交元件: 推斷該目標處理電路送交由在該元件序列的一送交視窗中之至少一個最舊的推測元件所表示的一或多個推測執行的指令,該送交視窗包括了包含至少一個推測元件的該元件序列的一部分,該至少一個推測元件表示至少一個仍被推斷成由該目標處理電路送交的推測執行指令,及 為分析該元件序列的後續元件從該送交視窗中排除該至少一個最舊的推測元件;及 回應於偵測到該元件序列中的一送交視窗移動元件,相對於該元件序列中一最舊的剩餘推測元件移動該送交視窗以改變哪個推測元件是該送交視窗中最舊的推測元件,而該最舊的剩餘推測元件仍被推斷成由該目標處理電路所送交的。
可提供電腦程式,該電腦程式用於控制資料處理設備以執行上述追蹤分析方法。儲存媒體可儲存電腦程式。儲存媒體可為非暫態儲存媒體。
至少一些實例可提供包括主機處理電路的設備及用來儲存用於控制主機處理電路以執行上文所執行的追蹤分析方法的電腦程式的儲存電路。
至少一些實例可提供追蹤分析器,包括: 追蹤輸入,其用來獲得指示目標處理電路處理指令的結果的一元件序列;及 追蹤分析電路,其回應於偵測到該元件序列中的送交元件以推斷出該目標處理電路送交了由該元件序列的送交視窗中的至少一個最舊的推測元件所表示的一或多個推測執行的指令,該送交視窗包括該元件序列的一部分,該元件序列包括至少一個推測元件,該至少一個推測元件表示至少一個推測執行的指令,該至少一個推測執行指令仍被推斷成由該目標處理電路送交,及為分析該元件序列的後續元件從送交視窗中排除該至少一個最舊的推測元件; 其中回應於偵測到該元件序列中的送交視窗移動元件,該追蹤分析電路經配置成相對於該元件序列中之最舊的剩餘推測元件來移動該送交視窗,以改變哪一個推測元件是該送交視窗之最舊的推測元件,而該最舊的剩餘推測元件仍被推斷成由該目標處理電路送交。
資料處理設備可支持指令的推測性執行,其中在實際已知指令是否應已被執行或指令的資料輸入是否有效之前執行指令。例如,設備可具有用於預測分支指令的結果的分支預測器,且在給定分支指令的預測之後可推測性地執行後續指令(假設預測是正確的)。稍後,一旦分支指令被實際執行,則可確定分支的真實結果,且若預測是正確的,則可送交隨後的推測執行指令,使得該等推測執行指令的結果被視為有效。若預測是不正確的,則推測執行指令可取消其效果以將狀態倒退至執行分支時所存在的狀態,及接著開始在正在執行的程式內執行不同的指令路徑。推測執行的其他原因可包括(例如)資料推測,其中可在實際執行加載之前預測要從記憶體加載的加載指令的資料值,以使得能在加載完成之前執行後續指令。此外,如下文將要論述的,一些設備可支持交易記憶體,該交易記憶體可在交易內引入指令的推測執行。
追蹤模組可包括用於監視處理電路對指令的處理的監視電路及用於輸出指示處理電路處理指令的結果的元件序列的追蹤輸出電路。在此類追蹤模組中,指令的推測執行可對「有效地表示由追蹤模組輸出的元件序列中的執行指令的結果」帶來挑戰。用於在輸出晶載追蹤元件之前緩衝該等晶載追蹤元件的資源通常可為有限的,因此在知道應明確地送交推測性已知指令之前阻止追蹤元件的輸出可能是不實際的。追蹤輸出電路可更簡單地輸出指示推測執行指令的結果的元件(不管推測是否正確),接著包括指示先前輸出元件推測元件是否與送交或取消指示相關之在追蹤串流中的額外元件。
因此,追蹤輸出電路可支持送交元件的輸出,該送交元件指示處理電路送交由元件序列的送交視窗中之至少一個最舊的推測元件表示的一或多個推測執行的指令。送交視窗表示元件序列的一部分,其包括至少一個推測元件,該至少一個推測元件表示仍由處理電路送交的至少一個推測執行的指令。送交元件亦可指示一旦追蹤分析器已看到送交元件,則應從送交視窗中排除至少一個最舊的推測元件。因此,送交視窗在追蹤串流內向前移動,因此送交視窗不再包括與送交指令相關的元件。支持此類送交元件使得追蹤模組能簡單地輸出與執行指令(不管它們是否為推測的)相關的元件,但一旦送交了指令,則藉由輸出送交元件來解析先前輸出的推測元件的結果。此種方法避免了直到已送交相應指令前在追蹤模組內皆要緩衝元件之需要,從而節省了晶載的追蹤資源。
然而,發明人認識到越來越多的現代處理設備所支援的推測形式使得追蹤推測執行更加複雜。某些類型的推測(如交易記憶體或長潛時加載/儲存操作)可能長時間保持推測,同時在已解析先前推測之前推測性地執行並解析了許多較新的指令。僅使用表示送交視窗的最舊元件的送交的送交元件難以追蹤此種類型的推測。實際上,此可能通常會限制追蹤資訊的有效性,該追蹤資訊可為支持此種長壽命推測事件的處理電路而被產生。
在下文論述的技術中,追蹤模組亦支援送交視窗移動元件,該送交視窗移動元件指示由元件序列中之最舊的剩餘推測元件所表示的一或多個推測執行的指令由處理電路保持未送交時,送交視窗應相對於最舊的剩餘推測元件移動以改變哪個推測元件是送交視窗中之最舊的推測元件。因此,送交視窗移動元件的輸出使得送交視窗的開始能在指令序列內移動,使得後續送交元件將不再被限制成送交最舊的剩餘推測元件,而是可表示序列中的後一個元件的送交,而最舊的剩餘推測元件仍是推測性的及未送交的。此對於追蹤(例如)使用交易記憶體或長潛時加載儲存操作的指令序列非常有用。看起來反直覺的是,在沒有實際送交最舊的剩餘推測元件的情況下移動送交視窗的開始將是有用的,因通常人們會期望處理電路需要在送交任何較新的元件之前解析最舊的剩餘推測元件的結果。然而,利用如交易記憶體之類的功能,可在整個交易可被送交之前解析較新的分支或其他推測指令。類似地,對於長潛時加載,可在已解析加載之前解析更新的推測指令。因此,送交視窗移動元件可用於使得能夠提供更好的診斷資訊以評估此種程序代碼的執行。例如,在預測錯誤(如中止交易)的情況下,此可幫助提供關於在識別出預測錯誤之前處理器在程序代碼內所達到的推測超過多遠的診斷資訊。例如,對於交易記憶體而言,此可用於診斷在執行交易代碼時效能損失的可能原因。
每當處理電路送交推測性執行的指令時,追蹤輸出電路不需要輸出送交元件。在一些實例中,回應於處理電路送交由送交視窗中的至少一個較舊的推測元件表示的一或多個推測執行的指令,追蹤模組可確定送交視窗中的多個推測元件是否小於最大推測深度。最大推測深度可為對於給定追蹤模組硬連線的參數或可在暫存器內可編程。可將最大推測深度設置成與最大數量的不同推測點相對應,該等不同推測點可由處理電路一次保持推測(例如,其可為給定處理器核的微架構設計的參數)。因此,系統設計師可基於與該追蹤模組一起使用的特定處理電路的知識來定義追蹤模組的最大推測深度。
當偵測到處理電路已送交了一或多個指令時,送交視窗中的推測元件的數量小於最大推測深度,追蹤輸出電路可輸出送交元件以指示對應於該等指令的一或多個推測元件已被送交。然而,當送交視窗中的推測元件的數量等於最大推測深度時,則即使已送交由送交視窗之最舊的一或多個元件表示的一或多個推測執行的指令,追蹤輸出電路仍亦可抑制送交元件的輸出。此可用於藉由減少追蹤模組所輸出的追蹤元件的數量來節省追蹤頻寬。通常而言,可由一次有多少個推測點可待決來限制處理電路,例如處理電路受緩衝器中用於緩衝推測點上的資訊的項的數量的限制,以便能夠在取消指令時恢復先前狀態。因此,當已達到最大推測深度時,則可假設若追蹤模組輸出與推測執行的指令有關的任何其他元件,則對應於最舊的推測元件的指令已隱含地被送交,因此此可藉由追蹤分析器推斷出,而不需要將任何顯式追蹤元件包含在追蹤元件串流中。因此,最大推測深度的定義可用於減少需要輸出的送交元件的數量。
追蹤模組對送交視窗移動元件的支援對於追蹤模組可特別有用,該等追蹤模組使用此類最大推測深度來限制何時需要輸出送交元件。考慮到追蹤一系列程式代碼,該系列程式代碼其中初始推測點在很長一段時間內仍是推測性的,及接著推測性地執行及在最舊的推測點已被解析之前解析在推測點之後發生的一些較新的推測點。在不支持送交視窗移動元件的情況下,為了能夠完全追蹤每個推測點的結果,可能需要將最大推測深度設置為相對較大。對於涉及交易記憶體的代碼而言,此是一個特別的問題,其中交易可能包括潛在無限數量的指令,該等指令可能包括大量分支或其他推測決策點,因此完全追蹤該代碼的行為可能需要在作為整個交易被解析之前、在交易開始之後輸出相對大量的推測元件。
追蹤此類程式代碼的一種方法可為使最大推測深度大,使得送交視窗可隨著進一步的推測點而繼續在尺寸上增大,而不需要送交最舊的元件。然而,當追蹤代碼不使用交易時,此會降低追蹤模組的效率,因增加最大推測深度將使得更常見的是,當送交指令時,尚未達到最大推測深度,因此將需要送交元件。此會增加生成的追蹤資料量,從而導致資源利用效率降低,如晶載追蹤緩衝區中的空間,該空間係用於在從追蹤緩衝區藉由晶片外追蹤分析器讀取由追蹤輸出電路輸出的所生成的追蹤元件之前緩衝該等追蹤元件。
另一種方法(在沒有送交視窗移動元件的支援的情況下)可保持最大推測深度更小,但在此種情況下,一旦已達到最大推測深度,若尚未送交整個交易,則因送交元件作用在送交視窗之最舊的剩餘元件上,故不可能輸出任何進一步的推測元件以回應交易的分支或其他推測點。若沒有輸出關於交易的後續推測事件的元件,則此可防止追蹤分析器能推斷出關於交易的後續指令的任何資訊。例如,若交易被中止、若在達到最大推測深度之前而最後一個推測元件輸出之後發生中止,則追蹤串流可能不包含任何可使追蹤分析器能推斷處理電路尚有多遠能在中止發生之前繼續處理交易的資訊,此可使得推斷中止的時間(及因此潛在的原因)更加困難。
相反地,藉由使用如上所述的送交視窗移動元件,送交視窗緩衝區的開始可向前移動而不需要實際上整個元件序列中最舊的剩餘推測元件,以便下一個送交元件可在沒有送交最舊的剩餘推測元件的狀況下指示已送交一個較新的元件。此避免了大大增加最大推測深度的需要,以便在可能長時間保持推測的事件之後處理較新指令的送交,從而總體上可更有效地使用可用的追蹤頻寬,同時仍提供關於在長期存在的推測事件之後的每一個推測事件的診斷資訊。
注意到術語元件序列的「最舊的剩餘推測元件」是指由追蹤輸出電路整體生成的元件序列中最舊的推測元件。亦即,最舊的剩餘推測元件是先前輸出的元件,該先前輸出的元件與仍然由處理電路送交或取消的最舊指令有關(或從追蹤分析器的角度來看,當執行目標程式時,涉及最舊指令的最舊的剩餘推測元件仍由追蹤分析器推斷成已由處理電路送交)。另一方面,送交視窗中的「最舊的推測元件」是指追蹤序列的特定部分中對應於送交視窗的最舊元件,其可能或可能不會與整體元件序列中之最舊的剩餘推測元件相同。當送交視窗移動元件已包含在追蹤串流中時,則送交視窗的開始可能晚於最舊的剩餘推測元件,因此在此種情況下,送交視窗中最舊的推測元件可能不同於元件序列中最舊的剩餘推測元件。
在一些實施方式中,可修復在輸出送交視窗移動元件時應藉由元件移動送交視窗的該等元件的數量。例如,可假設默認量(例如,由一個元件移動送交視窗)。
然而,在其他實施方式中,送交視窗移動元件可指示視窗開始指示符,該視窗開始指示符指示推測元件,該推測元件應在由送交視窗移動元件所指示的送交視窗的位置改變之後成為送交視窗之最舊的推測元件。此有助於減少要生成的追蹤元件的數量,因若送交視窗需要移動多於一個元件(而不是單個送交視窗元件),則可輸出指定送交視窗應移動到的追蹤串流中的點(亦即,哪個推測元件現在應成為送交視窗中最舊的推測元件)。可用不同的方式(例如,相對於元件序列中最舊的剩餘推測元件、相對於元件序列的最近輸出的追蹤元件,或相對於送交視窗的最舊的推測元件)來表示送交視窗移動元件的視窗開始指示符。
然而,在一個實例中,視窗開始指示符標識多個推測元件,該多個推測元件包括元件序列中最舊的剩餘推測元件,該最舊的剩餘推測元件在已執行由送交視窗移動元件所指示之送交視窗的位置之改變之後比送交視窗之最舊的推測元件舊。亦即,視窗開始指示符可有效地指示送交視窗的開始相對於作為整體的元件序列之最舊的剩餘推測元件的開始的偏移。
送交視窗移動元件可由追蹤輸出電路在不同的時序輸出。不同的追蹤實施方式可選擇輸出此類送交視窗移動元件可能會有用的不同點。因此,大體上對於追蹤架構而言,支援輸出視窗移動元件以便能夠更有效地追蹤交易記憶體或包括相對長壽命及精確時序(在該精確時序處送交視窗移動元件可能是正在實施的特定系統實施的問題)的推測事件的其他代碼是有用的。
然而,在一些實例中,回應於追蹤模組的監視電路偵測到處理電路已執行了表示包括一或多個指令的交易的開始的交易開始指令,輸出送交視窗移動元件可能是有用的,該一或多個指令係在交易開始指令和交易結束指令之間執行;對此,在沒有在交易開始指令和交易結束指令之間發生任何中止事件的情況下,當達到交易結束指令時,將送交指令對交易的影響。在支援此種交易記憶體的系統中,在交易開始指令之後,整個交易可在達到交易結束指令之前保持推測可能無限長的時間,且在交易結束和開始指令之間可能存在許多其他分支或可能需要由追蹤模組解析的其他推測點。使用送交視窗移動元件能致動代表交易開始指令的推測追蹤元件,以保持推測(未送交)一段時間(即使解析了新的分支或其它推測點),而無需大大增加所支援的最大的推測深度。回應於執行交易開始指令而輸出送交視窗移動元件的精確時序可變化。在一些情況下,可回應於交易開始指令本身而輸出送交視窗移動元件。或者,可回應於交易開始指令之後的第一指令而輸出送交視窗移動元件。輸出送交視窗移動元件的精確時序可取決於所採用的特定追蹤實施(例如,相同的一般追蹤架構的不同微架構實施可為此選擇不同的選項)。
在一些實例中,追蹤輸出電路可回應於監視電路偵測到處理電路執行預定類型的加載/儲存指令而輸出送交視窗移動元件。預定類型的加載/儲存指令可為所有的加載/儲存指令。或者,預定類型可包括加載/儲存指令的子集,例如為預期可能花費很長時間來解析的加載/儲存指令(例如,加載多個用於將值從記憶體傳送到多個暫存器的指令或來自預期具有相對慢的存取時間的記憶體區域的加載)。在使用負載值推測的系統中,加載指令之後的推測週期可能相對較長,因此使用送交視窗移動元件移動送交視窗的開始以使得表示加載/儲存指令的追蹤元件可保持推測而後續送交元件可作用在與執行加載儲存指令之後到達的較新推測點相關的後續元件可能是有用的。
追蹤輸出電路亦可支持送交視窗重置元件的輸出,該送交視窗重置元件指示元件序列中最舊的剩餘推測元件應成為送交視窗之最舊的推測元件。因此,送交視窗重置元件可有效地指示送交視窗應返回到作為整體的元件序列的最舊的剩餘推測元件處開始的默認值。例如,一旦已解析導致輸出送交視窗移動元件的長壽命推測事件,此可能是有用的。儘管在一些情況下,送交視窗重置元件可具有不同的追蹤元件格式或不同的元件類型標識符,但在一些情況下,送交視窗重置元件可與送交視窗移動元件及用於送交視窗重置元件的視窗開始指示符(其指示送交視窗將被移動到的追蹤串流中的點)共享共用的編碼格式,該送交視窗重置元件係指示元件序列中最舊的剩餘推測元件應成為送交視窗之最舊的推測元件。例如,若視窗開始指示符指示相對於如上所述的序列的最舊的剩餘推測元件的送交視窗開始位置,則送交視窗重置元件可簡單地包括指定視窗開始指示符為零的送交視窗移動元件。可回應於一系列事件而輸出送交視窗重置元件。例如,可回應於交易的交易結束指令或回應於送交上述預定類型的加載/儲存指令的處理電路而輸出送交視窗重置元件。
除了送交元件和送交視窗移動元件之外,追蹤輸出電路亦可支援取消元件的輸出,該取消元件指示處理電路已取消了由在送交視窗中之至少一個最新的推測元件所表示的一或多個推測執行的指令的效果。因此,當送交元件送交了送交視窗的最舊元件時,取消元件將作用於送交視窗中之(多個)最新元件。送交元件和取消元件一起可用於處理推測事件,其中可一次待決的推測事件的數量相對受限,如其中處理電路可能僅具限量的緩衝空間來緩衝資料追蹤未解析分支的分支序列。然而,在支援交易記憶體或長潛時負載推測的系統中,此可能不足以提供關於後續推測事件的解析的完整資訊,因此藉由引入上文所論述的送交視窗移動元件,此可提供與代碼之處理相關的更好的診斷資訊,該代碼係涉及經受需要長時間解析之負載值預測的交易或負載。
為了幫助追蹤送交指令的狀態,追蹤模組的監視電路可保持追蹤資訊,該追蹤資訊指示以下中的至少一者:元件序列中最舊的剩餘推測元件及/或送交視窗中最舊的推測元件。可用不同方式(例如,相對於追蹤串流中的某個參考點(如最近生成的追蹤元件))表示資訊。因此,當生成進一步的追蹤元件時,指示整個序列中最舊的剩餘推測元件的資訊和送交視窗的最舊的推測元件可被更新以便改變相對位置資訊(即使沒有改變所引用的特定元件)。在其他實例中,每個元件可具有封包標識符,且可經由特定封包標識符來識別送交視窗中最舊的剩餘推測元件和最舊的推測元件。因此,有多種方式來表示狀態資訊。監視電路和追蹤輸出電路可使用狀態資訊來幫助決定應該輸出哪些追蹤元件,如上文所論述的送交視窗移動元件或送交視窗重置元件。由監視電路維護的狀態資訊亦可追蹤其他資訊,如送交視窗中的元件數量(送交視窗推測深度),此對於基於送交視窗推測深度和最大推測深度的比較來確定是否輸出送交元件是有用的。
在一些實例中,追蹤輸出電路亦能輸出追蹤資訊元件,該追蹤資訊元件指示元件序列中最舊的剩餘推測元件及/或送交視窗中最舊的推測元件中的至少一者。例如,追蹤輸出電路可周期性地輸出此類追蹤資訊元件,例如在輸出一定數量的追蹤元件之後,可輸出追蹤資訊元件。此對於防止來自追蹤序列的追蹤資訊的潛在丟失是有用的(例如,若追蹤緩衝器在能為追蹤緩衝器讀取所有追蹤元件之前溢位,則某些資訊可能丟失)。藉由週期性地輸出指定送交視窗的最舊的剩餘推測元件和最舊的推測元件的資訊,此可使追蹤分析器能恢復關於在輸出追蹤資訊元件的序列中的點之後已送交了哪些元件的資訊(即使並非所有前面的追蹤資料皆對追蹤分析器為可見的)。
可用相應方式提供分析方法,以分析指示目標處理電路處理指令的結果的元件序列。如上所述,可從追蹤模組接收序列。當在元件序列中偵測到送交元件時,追蹤分析器可推斷出目標處理電路送交了由元件序列的送交視窗中的最舊的推測元件所表示的一或多個推測執行的指令。同樣地,送交視窗包括元件序列的一部分,其包括仍被推斷成已送交的至少一個推測元件。在推斷送交視窗中的一或多個較舊的推測元件被送交之後,追蹤分析亦可從送交視窗中排除送交元件以分析序列中的後續元件;即,可在追蹤串流中將送交視窗向前移動。若在追蹤元件序列中偵測到送交視窗移動元件,則追蹤分析器可相對於元件序列中最舊的剩餘推測元件移動送交視窗,以改變哪個推測元件是送交視窗中最舊的推測元件,同時整個序列中最舊的剩餘推測元件仍被推斷成由目標處理電路所送交的。因可在不送交追蹤序列的最舊元件的情況下移動送交視窗,故可推斷出可能無限數量的後續事件為已送交,而較早的事件仍保持是推測的,從而能推斷出關於處理超過初始推測點的事件的更多資訊(例如確定中止事件發生在交易的多遠)。
圖1圖示了包括資料處理設備4和追蹤分析器6的系統2的實例。資料處理設備4具有處理電路8,該處理電路8可被稱為目標處理電路,因該處理電路8為正在執行要被追蹤的目標程式的處理電路。資料處理設備4具有晶載儲存電路10,該晶載儲存電路10用於儲存正在執行的目標程式及用於儲存其他資料或指令。資料處理設備4具有嵌入式追蹤模組12,該嵌入式追蹤模組12係用於在處理電路8執行目標程式並輸出一系列追蹤元件(稱為追蹤串流)時監視處理電路8的操作,以供追蹤分析器6分析。晶載追蹤緩衝器14可暫時緩衝資料處理設備4內的輸出追蹤元件。追蹤分析器6可經由追蹤輸出端口16從追蹤緩衝器14讀取追蹤元件。追蹤緩衝器14可作為循環緩衝器;例如,當緩衝區變滿時,追蹤模組12所生成的較新的追蹤元件重疊了最舊的追蹤元件。追蹤模組12可包括監視電路18,該監視電路18係用於當處理電路8執行目標程式時監視處理電路8的操作及用於控制追蹤輸出電路20以產生對應的追蹤元件序列,該對應的追蹤元件序列指示處理電路8所執行的處理的屬性。嵌入式追蹤模組亦可具有一些用於追蹤與追蹤串流有關的狀態資訊的狀態儲存元件(例如,暫存器)22及用於指示表示送交視窗內的推測元件的最大數量的最大推測深度的儲存元件24(例如暫存器),此將在下文中更詳細地論述。
追蹤分析器6可為用於分析追蹤模組所產生的追蹤串流的專用積體電路或可為執行用於控制追蹤分析器的軟體的通用電腦。追蹤分析器具有用於執行追蹤分析的主機處理電路30。例如,主機處理電路30可為執行追蹤分析控制程式32的通用CPU或可為具有用於解碼追蹤資訊的邏輯閘的專用硬體電路。從資料處理設備經由追蹤端口16輸出的追蹤串流可儲存在追蹤分析器6內的追蹤儲存器34(例如,記憶體)內。主機處理電路30從記憶體34讀取追蹤串流,該主機處理電路30在生成追蹤串流時基於由目標處理電路8執行的目標程式的副本36來分析追蹤元件。
藉由提供指示處理電路在執行目標程式時的行為的追蹤元件串流,此允許追蹤分析器確定經由目標程式獲取的程式流的路徑,此對於查明潛在的效能丟失原因或不正確的處理結果非常有用。此對於處理電路8執行來自晶載儲存器10的目標程式的系統特別有用,因在此種情況下,晶載儲存器10和處理電路8之間的信號路徑對外部是不可見的,故(例如)藉由觀察外部積體電路引腳上的信號診斷處理電路8的行為是不可能的。因此,(例如)用以觀察處理電路8的操作之包括在硬體中所提供的晶載追蹤模組12因而為嵌入式系統的軟體開發和平台開發提供幫助。然而,當在晶載生成追蹤串流時,則在管理由於晶載提供的追蹤緩衝器14的大小可能被限制且追蹤輸出端口16可能僅具有用於輸出追蹤資料的某些有限頻寬而生成的追蹤資料的量上可能存在挑戰。
圖2圖示了表格,該表格圖示了可由追蹤模組12的追蹤輸出電路20輸出的追蹤元件類型的子集。限制所生成的追蹤資料的量的一種方式可為不回應由目標處理電路8執行的每個指令而生成追蹤元件,而是回應於被稱為「路點」指令的所選類型的指令而生成追蹤元件。回應於路點指令而生成的元件被稱為P0元件,且可為兩種類型:E(採取)或N(未採取)。路點指令可包括程式流可發散的指令或不能僅從目標程式副本36推斷處理電路的操作的指令(如分支指令、條件指令或其他程式流改變指令)。路點指令亦可包括進行推測(後續行為的預測)的指令,因若推測是不正確的,則輸出P0元件作為標記以表示要對其進行重繞處理的程式的點是有用的。由於追蹤分析器6具有目標程式36的副本,故對於非路點指令追蹤分析器可假設當對應於追蹤串流中的該等路點指令中的第二者的P0元件被觀察時,已執行兩個連續路點指令之間的所有指令。因此,回應於給定的路點指令來輸出P0元件,但表示以該路點指令結束的一或多個指令的區塊的執行。對於分支而言,若預測採用分支則由追蹤模組輸出E元件;若預測未採用分支則輸出N元件。對於除分支之外的路點指令而言,可輸出E元件作為P0元件。
由P0元件所表示的指令可推測性地或非推測性地執行─P0元件不區分推測性地或非推測性地執行的指令。如圖2的第三行和第四行所示,追蹤模組12可支援送交和取消元件,該等送交和取消元件用於一旦解析出對推測做出的預測是否正確就指示對應於P0元件的推測性執行的指令是否被送交或取消。推測的目的可能有所不同,例如分支預測、加載資料值預測及交易執行等。
送交元件指定參數X,該參數X指示追蹤串流的特定數量的推測元件。X大於0且小於或等於暫存器24中所指示的最大推測深度。當追蹤模組輸出送交元件時,此表示由追蹤串流的送交視窗內的最舊X推測元件所表示的任何推測指令已由處理電路送交,且送交視窗的開始應被移至那些送交的元件之後。「最舊」元件是送交視窗的元件,該等元件最近係由追蹤模組12輸出或在追蹤串流內具有最早的位置(相反地,「最新」元件是由追蹤模組12最近所輸出的在追蹤串流中最新位置處的元件)。送交視窗指的是追蹤串流的一部分,其用作追蹤分析器的參考點,以追蹤處理電路的指令的推測執行及那些推測執行的指令(送交或取消)的後續解析。取消元件亦指定參數X,該參數X大於0且小於或等於最大推測深度。取消元件表示由送交視窗中最新的X推測元件表示的推測指令被處理電路取消(因該等指令在不正確的預測之後被錯誤地執行)。因此,追蹤模組可使用送交和取消元件來解析由先前輸出的P0元件(或其他類型的追蹤元件)表示的指令的結果,以避免需要將該等元件保留在晶載緩衝區中直到已解析該等元件的推測結果為止,及藉由減少所需的晶載緩衝空間量來節省電路面積。
如圖2m的第五行所示,追蹤模組亦支持送交視窗移動元件(CWM元件),該送交視窗移動元件指定參數X,該參數X指示大於或等於0及小於或等於最大推測深度的推測元件的數量。當X等於0時,CWM元件被解釋成送交視窗重置元件,該送交視窗重置元件指示追蹤分析器6應該將送交視窗的開始移動到被分析的指令序列中之最舊的剩餘推測元件。若X大於0,則送交視窗移動元件觸發追蹤分析器6以將送交視窗的開始移動到追蹤串流的最舊的剩餘推測元件之後的第X個推測元件,而最舊的剩餘推測元件保持未送交。因此,追蹤模組可使用送交視窗移動元件來控制追蹤串流的哪個元件將被隨後發出的送交元件作為目標,因此送交元件始終對追蹤元件序列的最舊的剩餘推測元件進行操作並不是必需的。此可用於追蹤長壽命的推測事件,尤其是如交易記憶體的架構推測。
如圖2的底行所示,追蹤模組亦可支持輸出預測錯誤元件,該預測錯誤元件指示先前生成的N或E元件是不正確的,因此應被解釋成指示對實際上由N或E元件所表示的一個結果而言相反的採取或未採取的結果。當處理電路8偵測到分支預測錯誤時,追蹤模組可使用此點。
應當理解,圖2未圖示追蹤模組可支持的所有類型的元件。追蹤元件類型的其他實例可包括: • 追蹤資訊元件,其提供有關追蹤模組狀態22的資訊,如追蹤在追蹤串流中最舊的剩餘推測元件、送交視窗的位置或當前推測深度的資訊。若追蹤分析器6接收到追蹤模組12生成的完整追蹤串流,則追蹤分析器6可藉由分析輸出追蹤資料將相應的狀態資訊推斷到由追蹤模組12記錄的狀態資訊22。然而,有時追蹤緩衝器14可能在追蹤分析器6從緩衝器14讀取所有追蹤資料之前溢位。包括追蹤資訊元件以周期性地提供狀態資訊22的快照使得追蹤分析器6能重建正確的處理結果(即使並非所有以前生成的追蹤資料對追蹤分析器而言都可見)。即使所有追蹤資料都可用,提供追蹤資訊元件亦可藉由追蹤分析器更快地分析程式的選定部分,因它可讓追蹤分析器能從程式的中點開始分析而無需處理追蹤串流的所有先前追蹤資料。 • 「追蹤開始」元件,其表示已開始追蹤。 • 位址元件,其指示在開始追蹤時所開始處理的程式指令位址, • 上下文元件,其指示處理電路8正在執行指令的執行上下文。 • 例外元件,其指示在處理電路8的處理期間發生例外(包括中斷)。
應當理解,也可生成其他類型的追蹤元件。
圖3圖示了追蹤程式指令執行的實例,其使用了送交元件來追蹤推測執行。左側列指示由目標處理電路8執行的指令。中間列指示由追蹤模組12回應於該等指令而生成的追蹤元件。表格右側的備註欄提供了指示生成元件的說明。
如圖3所示,當處理電路4執行所示的指令時,每個路點指令(在該實例中,是指令位址0x1000和0x200C處的分支)觸發P0元件的輸出。P0元件是E還是N取決於是否採取預測分支。注意到位址0x200C處的N元件輸出表示不僅執行了位址0x200C處的BEQ指令,亦執行了前面的非路點指令(MOV、LDR和CMP)。當已解析分支的結果時,輸出送交元件。在此種情況下,在預測0x1000和0x200C處的分支結果之後,發生例外(IRQ)並輸出例外元件,該例外元件指定標記程式中發生例外的點的位址。若沒有發生異常,則回應於處理電路8確定分支預測是否正確,將送交或取消對應於分支的元件。然而,由於例外中斷了前面指令的處理,即使分支預測不正確,也不會將處理器狀態倒帶回較早的點,因例外已暫停當前處理執行緒的處理;取而代之的是,將執行來自例外處理的指令。因此,例外可被視為有效地送交為位址0x1000和0x200C處的分支指令生成的P0元件可被送交。因此,追蹤模組12輸出指定要送交的元件的數量為3的送交元件(對應於分支的E和N元件及對應於例外的例外元件)。
圖4圖示了被追蹤的指令序列的另一個實例,其圖示了取消元件的使用。圖4的初始部分類似於圖3,但此次沒有發生例外,而是在位址0x2014處執行第三個分支之後,確定位址0x200C處的分支被預測錯誤,因此實際上應採取未採取結果。因此,位址0x2010和0x2014處的指令不應被執行。因此,追蹤模組12輸出指定參數1的取消元件,該參數係指示要取消的元件的數量。此時,送交視窗對應於位址0x1000、0x200C及0x2014處的分支的三個P0元件(E、N、E)輸出。取消元件作為送交視窗的最新元件,故取消0x2014處的E元件輸出以指示不應執行相應的指令(STR,B)。此外,追蹤模組12輸出預測錯誤元件以指示在0X200C處的分支的前N個元件指示錯誤狀態;亦即,它現在應被追蹤分析器解釋成E原子元件。藉由避免對任何緩衝元件的需要直到它們被認為是正確的為止,對取消和預測錯誤元件的使用有助於節省追蹤緩衝區空間,此可更有效地提供經由追蹤緩衝區14和追蹤端口輸出的連續的追蹤資料串流。一旦從位址0x200C處的分支BEQ的目標位址0x3000執行恢復,則最終輸出送交元件以指示已解析為位址0x1000、0x200C和0x3004處的分支生成的P0元件。
每次送交指令時,追蹤模組12不需輸出送交元件。利用微架構推測,用於追蹤處理電路內的推測執行的指令的微架構資源通常可僅支持一次待決的某些有限數量的推測事件。例如,處理電路8可具有緩衝器,該緩衝器具備有限數量的槽,以用於緩衝識別繞回點的資訊,若存在預測錯誤,則可恢復處理狀態至該等繞回點。若已經使用了所有槽,則處理電路8不能進行任何更多的推測預測直到已解析最舊的推測事件為止。處理電路8如何控制此類推測的精確細節可取決於給定處理器的微架構實現(而不是定義應該如何直譯目標程式的指令集架構)。因此,一旦處理電路達到其最大推測深度,若遇到作為推測基礎的另一指令(如分支),則若執行該指令,則此可能意味著已送交了最舊的剩餘推測。因此,可能沒有必要在追蹤串流中明確指出最早推測事件的送交。因此,追蹤模組可具有追蹤允許的最大推測深度的暫存器24。系統設計師可基於要其使用追蹤模組的特定微架構的知識來選擇要作為最大推測深度的值。當在推測的解析之後送交一或多個指令的區塊時,若當前推測深度(仍要解析的送交視窗中未完成的推測元件的數量)處於最大推測深度,則當輸出下一個推測追蹤元件時發出送交元件可被抑制,此可能隱含地表明已送交了最舊的未決推測元件。
圖5圖示了追蹤分析器6可如何分析由追蹤模組12輸出的P0元件和送交元件序列以便確定處理電路正在執行的處理的屬性及圖示推測元件之隱含送交的實例。如圖5所示,追蹤分析器逐個經過追蹤元件序列,以便對處理結果進行推斷。在此實例中,為了便於解釋,序列僅包括E元件和送交元件。追蹤分析器在剖析追蹤串流時追蹤指示當前推測深度50的參數,並亦維護指示送交視窗52的位置的參數,該參數表示追蹤串流的部分,其中元件仍是推測的(亦即,送交視窗包括與由處理電路已推測性地執行但在當前分析點仍然被推斷為已送交或已解析的指令有關的推測元件)。在圖5的符號中,由分析器6到達的當前分析點係由向下箭頭指示,送交視窗52的位置係由送交視窗內的元件下方的括號指示,及狀態已由追蹤分析器6解析的元件由星號表示。在此實例中,假設最大推測深度為3。
在該實例中對追蹤串流的分析如下所示(對應於圖5中所示的步驟): 1. 追蹤分析器開始分析追蹤串流。 2. 追蹤分析器從第一個E元件確定已推測性地執行了一或多個指令,因此將推測深度增加到1。送交視窗52現在包括序列的第一個E元件。 3. 遇到另一個E元件,其將推測深度和送交視窗的大小增加到2個元件。 4. 遇到另一個E元件,其將送交視窗的推測深度和大小增加到3個元件。 5. 遇到另一個E元件。由於當前的推測深度已處於最大推測深度(3),故另一個推測元件E的輸出隱含地指示已送交串流的第一個E元件,因處理電路8已處於其最大推測深度,故處理電路8無法進行進一步的推測直到最舊猜測送交為止。因此,現在用星號表示第一個E元件以指示它被解析,且送交視窗現在包括流的第二個到第四個E元件。目前的推測深度仍為3。 6. 序列中的下一個元件是送交元件,該送交元件指定要送交的元件數量為1。送交視窗中最舊的推測元件(序列的第二個E元件,現在標有星號)被推斷成已送交,且送交視窗的開始移動以排除此送交的元件。當送交一或多個元件時,藉由送交元件的數量來減少推測深度,因此推測深度現在為2(反映了在送交視窗內仍存在2個推測元件)。 7. 偵測到另一個E元件,因此推測深度增加到3且送交視窗的大小增加。 8. 另一個送交元件表示送交視窗中最舊的推測元件(從追蹤串流開始的第三個元件)已送交,且推測深度再次遞減到2。
總之,藉由使用送交元件來指示先前推測元件的結果,此可允許追蹤分析器確定在送交元件之前由追蹤模組所輸出哪些追蹤元件可被信任。
圖6圖示了一個相應的實例,其中包含至少一個取消元件: A. 在步驟A處,追蹤分析器的狀態類似於圖5的步驟4的狀態(即,圖5的步驟1-3是為了簡潔而未在圖6中圖示)。 B. 追蹤串流中分析的下一個元件是取消元件,該取消元件指定1作為要取消的元件數目。因此,取消送交視窗的最新元件(亦即,分析器6推斷出不應該執行相應的指令)。取消元件使推測深度遞減為2,但仍未解析送交視窗中最舊的元件,因此送交視窗的開始位置保持不變。若取消的元件與預測錯誤的分支有關,則也可包括分支預測錯誤元件(為簡明起見,未在圖6中圖示)。 C. 接收另一個E元件,它將推測深度增加到3,且送交視窗現在包含3個推測元件(儘管視窗實際上跨越4個P0元件,但被取消的E元件並不被認為有助於推測深度,因該被取消的E元件並非為一個推測因素(因其結果已被解析))。 D. 下一個元件是送交元件,該送交元件指示送交視窗52中的最舊元件被送交,且推測深度減小到2及送交視窗52的開始移動到流的第二元件。
使用圖3到圖6中所示的送交和取消元件的技術對於追蹤指令的執行可能是有用的,當處理電路8正在使用微架構推測機制以在知道肯定會執行某些指令之前藉由執行該等某些指令來提高效能。將送交視窗限製到某個最大推測深度可能是有用的,因通常處理電路8僅具有可用於追蹤正在執行的推測的有限量的微架構資源。
然而,處理亦可能支援被稱為交易性記憶體的架構形式的推測。在資料處理系統內執行的多個處理執行緒(在單個處理元件上分時共享或在平行的不同處理元件上執行)需要存取共享資源和資料處理操作的性質的情況下,交易記憶體可為有用的。操作可以是此類:一旦執行緒開始與共享資源交互作用,則可能需要一組操作使用資源來原子地完成,而在此期間沒有另一個執行緒存取資源。處理執行緒之間的此種衝突的一種技術可為使用鎖定(lock)來控制對至少一個目標資源的獨占存取。例如,當一個執行緒開始存取特定位址區域中的資料時,執行緒可設置鎖定變量來聲明鎖定的所有權,接著當鎖定擁有執行緒擁有鎖定的所有權時,檢查鎖定變量的其他執行緒可確定已聲明了鎖定,因此可能無法輸入與該位址區域交互作用的代碼段。此種基於鎖定的方法可被視為悲觀的,因每個執行緒都假定其自身不能進入存取共享資源的代碼段(因可能會發生與另一個執行緒的衝突),除非該每個執行緒擁有保證不會發生衝突之鎖定的所有權。然而,鎖定標識符通常可控制對多個資源(例如一系列位址)的獨占存取,因此若一個執行緒正在存取受鎖定變量保護的資源集合中的某些資源,則無法保證另一個執行緒肯定會存取相同的資源。因此,在執行緒之間的衝突很少的情況下,基於鎖定的方法可能導致效能損失,因執行緒可能在進入使用共享資源的代碼的關鍵部分之前不必要地等待鎖定被釋放。
用於處理存取共享資源的執行緒之間的衝突的更樂觀的方法可以是使用交易記憶體支持。資料處理系統可具有支援由處理電路在資料處理執行緒內執行交易的電路。如圖7所示,交易包括執行緒的指令,該等指令在標記交易開始的交易開始指令TSTART和標記交易結束的交易結束指令TCOMMIT之間執行。在交易開始和結束指令之間,處理電路可推測性地執行中間指令且防止那些推測執行的指令的結果的送交,直到到達交易結束指令為止。在執行交易開始指令之後(但在到達交易結束指令之前)中止事件的發生可導致交易被中止且推測結果被捨棄。中止交易可能有許多原因,如偵測到與另一個執行緒所進行的記憶體存取的衝突、執行交易中不被支持的指令類型或在處理交易期間發生例外。使用交易性記憶體方法,每個執行緒可樂觀地開始處理代碼的關鍵部分,該關鍵部分係假設不會發生與其他執行緒的衝突,接著若到達關鍵部分的末尾而沒有偵測到任何衝突,則可送交交易的結果。在衝突很少的情況下,使用交易記憶體支援可藉由允許更多執行緒同時處理其代碼的關鍵部分來提高效能。
因此,資料處理設備4中的目標處理電路8可具有各種交易記憶體支援資源60,以用於根據支援在架構級別執行交易的指令集架構來支援指令的執行。交易記憶體支援電路60可採用各種形式且可包括協助處理交易的多個資源。例如,交易記憶體支援電路60可包括推測結果儲存電路,該推測結果儲存電路用於儲存用於至少一個執行緒的至少一個交易的推測性執行的指令的結果。在某些情況下,可為在不同執行緒中運行的交易儲存多組推測執行結果。並非所有推測結果都必須儲存在推測結果儲存電路中。例如,交易記憶體支援電路亦可具有恢復狀態儲存電路,以儲存回應於在中止交易時恢復的交易開始指令而捕獲的狀態。因此,在交易中止時恢復的暫存器狀態或其他架構狀態值不需要儲存在推測結果儲存電路中,因處理器的架構暫存器中的當前值可有效地指示那些推測結果(該等推測結果將在一旦中止交易時由恢復狀態覆蓋)。推測結果儲存電路可(例如)儲存用於將值儲存到記憶體的儲存指令的結果。藉由在推測結果儲存電路中保持儲存指令的推測結果直到交易被送交為止,此避免了用隨後可能變得不正確或可能導致其他執行緒行為不正確的資料值污染記憶體。
在另一實例中,交易記憶體支持電路可包括衝突偵測電路,以偵測在第一執行緒的交易內進行的對給定位址的資料存取與對另一執行緒(在交易內或在非交易執行緒中)進行的相同位址的資料存取之間的衝突。例如,可提供位址追蹤電路以追蹤由交易內的指令存取的位址。當另一個執行緒存取記錄在位址追蹤電路中的位址之一者時,衝突偵測電路可偵測衝突。當偵測到衝突時,衝突偵測電路可觸發正在追蹤位址的第一執行緒的交易的中止。
交易記憶體支援電路亦可具有用於偵測可能導致交易中止的其他事件的電路。例如,在收到中斷或例外時,可中止交易。又,若交易記憶體支援電路耗盡資源(例如,若要儲存在推測結果儲存電路中的推測結果的數量或由位址追蹤電路追蹤的位址的數量超過了儲存器所提供的可用容量),則可中止交易,因此不再可能保證交易在沒有衝突的情況下將被正確處理。又,某些類型的指令可能不適合在交易中被處理且在遇到交易中不允許的一種指令類型時可中止交易。在中止交易時,可能由軟體決定是否嘗試再次執行交易或使用基於如使用鎖定的機制的非交易來執行替代代碼路徑。
可預期到的是若追蹤模組12已支援能追蹤微架構推測的追蹤架構,則相同的機制也可用於使用交易來追蹤架構推測。例如,當監視電路18偵測到目標處理電路8執行交易開始指令以指示此表示超出此點的執行是推測的點時,可生成另一個E元件。若交易被中止,則可藉由在追蹤串流中輸出取消元件來取消該E元件(及與交易中執行的指令相關聯的任何隨後生成的E元件)。若交易在沒有中止發生的情況下到達交易結束指令,則可送交整個交易,且追蹤模組12可輸出送交元件以送交與交易相關聯的所有E元件。
然而,不同於其中可達到的推測深度通常限於某個最大數量的微架構推測,基於處理電路8中所提供以用於追蹤推測執行之具有交易記憶體的有限微架構資源因在交易開始指令處捕捉暫存器狀態且交易可包括可能無限數量的指令直到達到交易結束指令為止,其對交易期間可達到的推測深度(可在最舊的推測元件被解析之前所輸出的推測追蹤元件的數量)並沒有固定限制。利用追蹤模組12可能難以充分地追蹤此事,該追蹤模組12使用最大推測深度24來追蹤是否需要明確地送交元件。例如,若在如圖7所示之交易開始指令和交易中的前幾個分支上輸出E元件,則可能很快就會達到最大推測深度,接著追蹤模組通常會假定下一個分支何時送交,此意味著亦應送交TSTART指令中最舊的剩餘推測輸出元件。然而,對於交易而言,此是不正確的,因表示TSTART指令的E元件可能仍是推測的(即使後續分支已準備好被解析)。
一種解決方案可以是增加最大推測深度以使得交易中的所有推測點更可能保持在送交視窗內,從而在達到交易結束之前不需要隱含送交先前的指令。然而,無論對於最大推測深度假設什麼值,總是有可能在交易內使用比最大推測深度更多數量的推測點來執行代碼。最終,一旦達到最大推測深度,追蹤模組將無法輸出任何進一步的推測元件直到可解析TSTART指令的E元件為止,因此無法提供有關交易中後續處理的任何進一步的追蹤資訊,使得難以識別後續中止的原因或難以使追蹤分析器能在中止發生之前推斷出處理經過交易尚有多遠。在任何情況下,增加最大推測深度24可能導致在追蹤非交易代碼時追蹤資源使用效率較低,因其可能增加必須輸出的送交元件的數量以明確指示較早元件的送交。
可藉由提供上文論述的送交視窗移動元件來解決該等問題,此使得即使尚未送交最舊的剩餘推測元件也能夠移動送交視窗的開始。例如,當遇到標記交易開始的TSTART指令時可輸出E元件,且追蹤輸出電路20也可輸出送交視窗移動元件以指示實際上應認為送交視窗開始在與TSTART指令對應的推測E元件之後的下一個元件處。藉由在沒有實際送交該元件的情況下從送交視窗中排除對應於TSTART指令的推測元件,此使得後續的送交元件可在下一個元件上作用,從而可生成更有用的追蹤資訊以追蹤交易的進度,而無需大大增加最大推測深度24,並因此能更有效地使用可用的追蹤資源(例如,緩衝器14中的空間或追蹤輸出端口16上的頻寬)。
圖8圖示了與圖5和圖6類似的實例,該圖5和圖6圖示了當包括送交視窗移動元件時的追蹤分析。在此實例中,如圖2所示使用送交視窗移動元件的編碼,其中指定視窗開始參數0的元件CWM(0)表示送交視窗重置元件。除了圖5和圖6中用於指示當前分析點(向下箭頭),送交視窗位置52(括號)和已解析元件(星號)的符號之外,在圖8中,整個追蹤串流中最舊的剩餘推測元件70是使用粗體和劃線字體表示。可在追蹤模組內的狀態暫存器22中指示且亦可在分析追蹤串流時由追蹤分析器6追蹤最舊的剩餘推測元件70的位置和送交視窗52的開始(最舊的推測元件)。類似地,當前推測深度50也可由追蹤模組在狀態暫存器22內追蹤,並由追蹤分析器6在任何追蹤分析狀態中追蹤。圖8的步驟1到步驟4與圖5中的相同,因此不再次進行詳述。步驟2到4中最舊的剩餘推測元件70是追蹤串流的第一個元件(因亦沒有送交任何元件)。圖8的後續步驟如下: 5. 由追蹤分析器6分析的下一個元件是CWM(1)元件,其指示儘管最舊的剩餘推測元件70本身未被送交,但送交視窗52應相對於最舊的剩餘推測元件移動1個元件位置,故現在跨越追蹤串流的第二到第四個元件。送交視窗移動元件不會改變實際的推測深度(因仍有三個推測元件未解析),但送交視窗推測深度51(送交視窗本身內的推測元件的數量)現在是2。可與追蹤模組的狀態暫存器22中的整體推測深度50分開地且以追蹤分析器6的相應方式追蹤送交視窗推測深度51。為了確定是否輸出送交元件,追蹤模組12可比較送交視窗推測深度51與最大推測深度24(而不是將其與總推測深度做比較);如在CWM(1)元件之後,最舊的剩餘推測元件現在於送交視窗之外。 6. 追蹤串流中分析的下一個元件是送交元件。在步驟5之後,送交視窗中最舊的推測元件是整體追蹤串流的第二個元件,該第二個元件現在在步驟6中用星號表示以指出其已被解析。最舊的剩餘推測元件70保持未送交。總及送交視窗推測深度50及51分別遞減成2和1。 7. 偵測到另一個E元件,該另一個E元件在送交視窗被擴展時分別增加總/送交視窗推測深度50及51成3及2。 8. 分析的下一個元件是CWM(0)元件;即,送交視窗重置元件,因此重置送交視窗52的開始以在最舊的剩餘推測元件70處開始。總推測深度50保持在3(因仍只有3個推測元件),且送交視窗推測深度51也變為3(因最舊的剩餘推測元件70現在再次位於送交視窗內)。送交視窗中的3個推測元件是所顯示的追蹤串流的第1個、第3個和第6個元件。 9. 偵測到的下一個元件是送交(1)元件,其表示已送交了送交視窗中最舊的推測元件。在此種情況下,送交視窗中最舊的推測元件也是整個串流中最舊的剩餘推測元件。送交視窗向前移動及最舊的剩餘推測元件70現在成為追蹤串流的第三個元件,該第三個元件為仍未解析的最舊元件。總及送交視窗推測深度50及51被遞減到2。
總之,不同類型的元件對追蹤模組12和追蹤分析器6所維護的狀態參數22具有以下影響:
Figure 108102467-A0304-0001
可藉由追蹤模組週期性地(例如,以特定數量的封包或特定時間段的間隔)輸出指示上表中所示的四個參數中的一或多者的狀態資訊封包。在一些實例中,可能不必在狀態資訊22中明確地表示總推測深度50,因送交視窗推測深度51可足以允許由追蹤分析器6重建感興趣的資訊。
圖9圖示了執行包括交易的指令序列的實例,其圖示了送交視窗移動元件的示例用例。應當理解,此僅是可能實施的一個實例,且支援相同追蹤架構的其他系統可具有微架構實施,該微架構實施在稍微不同的時序處生成元件或回應於不同的事件。
0x1000 :由目標處理電路8執行TSTART指令。圖9中所示的前四個追蹤元件與圖3中的相同,以標記追蹤的開始。 TSTART指令亦觸發追蹤模組12以生成E元件,因TSTART指令表示超過此執行便是推測的點。此外,追蹤模組12生成CWM(1)元件,因預期交易將在無限期內保持推測且可能需要在交易整體送交前送交後續元件。 CWM(1)意味著送交視窗推測深度51返回到0,儘管總推測深度51是1(對應於TSTART的E原子仍然是推測的但在送交視窗52之外)。送交視窗當前包含零個推測元件,因此送交視窗52的最舊元件將是由追蹤模組52生成的下一個推測元件。
0x2000-0x2008 :執行MOV、LDR和CMP指令,其中沒有一個是路點指令,因此不會生成追蹤元件。
0x200C :預測不採取分支,因此追蹤模組12生成N元件。N元件隱含前面的三條指令和BEQ指令的執行。總和送交視窗推測深度50及51分別增加到2和1。最舊的剩餘推測元件70仍是在0x1000處的E元件輸出,但送交視窗的最舊元件是在0x200C處的N元件輸出。
0x2014 :預測採取分支,因此追蹤模組12生成E元件。E元件隱含B指令及在0x200C處的BEQ和在0x2014處的B之間的任何中間指令的執行。總和送交視窗推測深度50及51增加到3和2。
0x4000-0x4004 :LDR和CMP指令不是路點指令,因此不會觸發任何追蹤元件的生成。
0x4008 :預測不採取分支,因此追蹤模組12生成N元件。N元件隱含LDR和CMP指令與BNE指令的執行。總和送交視窗推測深度50及51增加到4和3。
確定位址 0x200C 處的分支已被正確預測 :追蹤模組12不需要輸出送交元件,因送交視窗推測深度51等於最大推測深度(在此實例中為3)。儘管送交了一個元件,但總和送交視窗推測深度50及51仍保持相同,因從追蹤分析器6的角度來看,此送交在輸出下一個P0元件之前不會變得可見,故此時追蹤分析器6仍然在送交視窗中將3個元件視為推測,並作為整體地感知在追蹤串流中的4個推測元件。出於同樣的原因,追蹤分析器6仍將送交視窗52之最舊的推測元件感知為在0x200C輸出的N元件。整個串流中最舊的剩餘推測元件70不變(仍然是在0x1000處輸出的E元件)。
0x400C :預測採取分支,因此輸出E元件。當偵測到此E元件時,追蹤分析器6將確定,當在遇到此元件之前送交視窗推測深度51處於最大值3時,新E元件的輸出隱含地指示在0x200C處的N元件輸出可被推斷成送交。由於送交視窗推測深度51已處於最大值,故總和送交視窗推測深度50及51保持相同(實際上,藉由與位址0x200C相關聯之較早的N元件的隱含送交來取消一般地被執行以回應於E元件的增量)。既然已將0x200C處的N元件推斷為送交,則送交視窗52的最舊元件成為0x2014處的E元件輸出。
0x8000 :ADD指令不是路點指令,因此不輸出追蹤元件。
0x9000 :TCOMMIT指令表示在沒有中止的情況下交易已完成。送交了送交視窗重置元件CWM(0)以重置送交視窗以在最舊的剩餘推測元件70(在0x1000處輸出的E元件)處開始。追蹤模組接著輸出送交(1)元件以送交了送交視窗的最舊元件,該送交視窗的最舊元件現在亦是最舊的剩餘推測元件70。在CWM(1)及送交(1)元件的輸出之後,總和送交視窗推測深度50及51變為3,因仍有3個未解析的元件(在0x2014處的E輸出、在0x4008處的N輸出及在0x400C處的E輸出)。儘管圖9圖示了回應於CWM(0)元件的輸出之送交視窗推測深度51的暫時增量到4(高於最大值),但其立即被送交(1)元件的輸出之後的減量取消。應當理解的是,若已知在發布送交元件時其將立即被取消,則一些追蹤模組微架構可選擇完全不增加送交視窗推測深度51。
送交所有執行 :確定所有分支預測都是正確的,並輸出送交(3)元件以指示所有剩餘的E/N元件都被送交。
總之,藉由使用送交視窗移動元件,即使在送交較新元件時,與交易開始指令相關聯的元件也可保持推測一段時間,以允許更有效地追蹤可改善所提供的診斷資訊的交易。應當理解,送交視窗移動元件也可用於其他類型的推測(不僅僅是交易)。
圖10是圖示使用追蹤模組12生成追蹤元件的方法的流程圖。流程圖圖示追蹤模組回應由監視電路18偵測到的多個事件。可理解的是,該等不是所有可能被追蹤的事件,其他事件也可能導致追蹤資訊的輸出。
在步驟100處,監視電路確定由處理電路執行的當前指令是否是使用P0元件追蹤的路點指令。例如,此類指令可為分支指令、TSTART指令或其他類型的指令。若要使用P0元件來追蹤指令,則在步驟102處,監視電路確定該指令是否是經預測為未採取的分支指令。若指令是預測為未採取的分支,則在步驟104處,監視電路18控制追蹤輸出電路以輸出N元件作為追蹤串流的下一個元件。若指令不是分支,或者是預測要採取的分支,則在步驟106由追蹤輸出電路20輸出E元件。
若在步驟108處,監視電路確定處理電路8已遇到指示潛在長推測週期的事件(如執行TSTART指令或執行預定類型的加載/儲存操作),則(輸出任何E元件或與該事件相關聯的其他推測元件)在步驟110處,監視電路18控制追蹤輸出電路20以亦輸出送交視窗移動(CWM)元件。送交視窗將藉此被移動的元件的數量可取決於有多少其他追蹤元件係與引起CWM元件的輸出的事件相關聯,或取決於已輸出了多少先前元件且仍保持推測的。
在步驟112處,追蹤模組12的監視電路18確定處理電路是否已送交指令,該等指令對應於追蹤串流的一或多個先前輸出的推測元件。若是,則在步驟114處,監視電路確定送交視窗中的推測元件的數量(送交視窗推測深度51)當前是否小於最大推測深度24。若否(當送交視窗推測深度51等於最大推測深度),則不需要在追蹤串流中輸出任何元件,因追蹤分析器可從下一個P0元件的輸出推斷出送交的元件。然而,若送交視窗52中的推測元件的數量51小於最大推測深度24,則在步驟116處輸出送交元件,指定要送交的元件的數量。
在步驟118處,監視電路偵測處理電路是否已取消了對應於先前在追蹤串流中輸出的推測元件的任何推測性執行的指令;若是,則在步驟120處,監視電路18控制追蹤輸出電路20以輸出追蹤串流中的取消元件,指定要取消的送交視窗中之最新元件的數量。
在步驟122處,監視電路偵測處理電路是否已到達推測週期的結束,該推測週期的開始觸發了要輸出的CWM元件。例如,可在步驟122偵測到的事件可包括執行交易結束(TCOMMIT)指令或處理電路對推測的加載/儲存指令的送交。若偵測到該等事件之一者,則在步驟124處,監視電路18控制追蹤輸出電路22輸出送交視窗重置元件(例如,指定0作為視窗起始參數的CWM元件),其將觸發追蹤分析器將開始移動到送交視窗52而回到追蹤串流中最舊的剩餘推測元件70。
無論追蹤輸出哪種類型的元件,在步驟104、106、110、114、116、120及124中的任何一者之後,方法返回到步驟100以檢查處理電路處的另一事件。當處理電路逐步執行正在執行的程式時,此方法循環。
圖11圖示了圖示由追蹤分析器6執行以分析由追蹤模組生成的追蹤元件串流的方法的流程圖。執行追蹤分析程式32的主機處理電路30接收由目標處理電路所執行之目標程式36的副本並使用此副本來直譯從追蹤儲存器34接收的追蹤元件的序列。在步驟150處,追蹤分析器6分析尚未被檢查的追蹤元件序列中的下一個元件。
在步驟152處,確定下一個元件是否是P0元件,例如,如上所述的E或N元件。若是,則在步驟154處,追蹤分析器根據目標程式36的副本確定哪些指令對應於E或N元件,並基於E或N元件推斷出那些指令的結果。例如,E或N元件可隱含執行在下一個路點指令之前的任何指令,及指示目標程式36中的下一個路點指令的結果。在步驟156處,追蹤分析器確定送交視窗推測深度51(指示送交視窗中的推測元件的數量)是否當前等於為生成追蹤串流的特定追蹤模組定義的最大推測深度24。若否,則在此階段不能對任何先前元件的遞交進行推斷,且此方法返回到步驟150。然而,若送交視窗推測深度51等於最大推測深度24,則在步驟158處追蹤分析器亦可推斷出送交視窗52中最舊的推測元件已被送交,且可向前移動送交視窗以在送交視窗的下一個最舊的推測元件處開始。因此,即使追蹤串流中沒有包含顯式送交元件,仍可推斷出關於較早元件的送交。當推斷出最舊的推測元件被送交時,此意味著可確定目標程式36中的一或多個指令的對應方塊已被正確執行而沒有預測錯誤。
在步驟160處,追蹤分析器6確定追蹤串流中的下一個元件是否是CWM(X)元件。若是,那麼在步驟162處,追蹤分析器更新其內部狀態以指示送交視窗開始位置被移動到在整個追蹤串流之最舊的剩餘推測元件70之後的第X個推測元件。若x = 0,則此實際上是送交視窗重置,且送交視窗現在於最舊的剩餘推測元件70本身處開始。若x> 0,則送交視窗52被移動以在比最舊的剩餘推測元件70更後的元件處開始。
在步驟164處,若要分析的追蹤串流中的下一個元件是送交元件Commit(X),則在步驟166處,追蹤分析器確定送交視窗52中的X個最舊的推測元件已被送交,其中X是送交元件指定的參數,且亦藉由X元件向前移動送交視窗的開始。因此,追蹤分析器可在生成追蹤串流時推斷出,目標處理器8成功地執行了與那些X個最舊的推測元件相對應的任何指令區塊。
另一方面,若在步驟168處,追蹤串流中的下一個元件是取消(X)元件,則在步驟170處,追蹤分析器確定應取消送交視窗中的X個最新的推測元件(因該等元件代表在較早的預測錯誤後被不正確地執行的指令區塊)。同樣地,要取消的較新的推測元件的數量由取消元件中指定的參數指示。
無論偵測到的元件的類型如何,一旦對目標處理電路8的行為進行了任何推斷且已對追蹤狀態資訊(例如,推測深度及送交視窗位置等)進行了任何更新,則該方法返回步驟150以分析序列中的下一個元件。
儘管本文已參考附圖詳細描述了本發明的說明性實施例,但應該理解的是,本發明不限於那些精確的實施例,且所屬技術領域中具有通常知識者可在不背離由所附申請專利範圍所限定之本發明的範疇和精神的情況下於該等實施例其中實施各種改變和修改。
2‧‧‧系統 4‧‧‧資料處理設備 6‧‧‧追蹤分析器 8‧‧‧處理電路 10‧‧‧晶載儲存電路 12‧‧‧追蹤模組 14‧‧‧追蹤緩衝器 16‧‧‧追蹤輸出端口 18‧‧‧監視電路 20‧‧‧追蹤輸出電路 22‧‧‧狀態儲存元件 24‧‧‧暫存器 30‧‧‧主機處理電路 32‧‧‧程式 34‧‧‧追蹤儲存器 36‧‧‧副本 50‧‧‧當前推測深度 51‧‧‧送交視窗推測深度 52‧‧‧送交視窗 60‧‧‧交易記憶體支援資源 70‧‧‧剩餘推測元件 100‧‧‧步驟 102‧‧‧步驟 104‧‧‧步驟 106‧‧‧步驟 108‧‧‧步驟 110‧‧‧步驟 112‧‧‧步驟 114‧‧‧步驟 116‧‧‧步驟 118‧‧‧步驟 120‧‧‧步驟 122‧‧‧步驟 124‧‧‧步驟 150‧‧‧步驟 152‧‧‧步驟 154‧‧‧步驟 156‧‧‧步驟 158‧‧‧步驟 162‧‧‧步驟 164‧‧‧步驟 166‧‧‧步驟 168‧‧‧步驟 170‧‧‧步驟
本發明的其他態樣、特徵及優勢將從下文結合附圖的實施例的描述中變得顯而易見,在附圖中:
圖1圖示了具有追蹤模組及追蹤分析器的資料處理設備的實例,該追蹤模組係用於生成指示由處理電路執行的處理的屬性的追蹤資料元件序列及該追蹤分析器係用於分析由追蹤模組生成的追蹤資料;
圖2是表示追蹤模組可生成的追蹤元件類型子集的表格;
圖3和圖4圖示了使用送交和取消元件來追蹤推測執行指令的實例;
圖5和圖6圖示了實例,該等實例圖示了追蹤分析器可如何基於追蹤模組所生成的送交和取消元件來推斷哪些元件與送交或取消指令相關;
圖7圖示了包括在交易開始指令和交易結束指令之間執行的指令序列的交易的實例;
圖8圖示了分析包括在送交視窗移動元件中的追蹤元件序列的實例;
圖9圖示了回應於交易開始指令而生成送交視窗移動元件的實例;
圖10是圖示生成追蹤元件的示例方法的流程圖;
圖11是圖示分析追蹤元件序列的方法的流程圖。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
50:當前推測深度
51:送交視窗推測深度
52:送交視窗
70:剩餘推測元件

Claims (20)

  1. 一種追蹤模組,包括:監視電路,該監視電路用於監視處理電路對指令的處理;及追蹤輸出電路,該追蹤輸出電路輸出指示該處理電路對該等指令的該處理的結果的一元件序列;其中:追蹤輸出電路能輸出:一送交元件,該送交元件指示該處理電路已送交由該元件序列的一送交視窗中的至少一個最舊的推測元件表示的一或多個推測執行的指令,該送交視窗包括了包含至少一個推測元件的該元件序列的一部分,該至少一個推測元件表示至少一個仍由該處理電路送交的推測執行的指令,其中該送交元件亦指示在該送交元件之後,該至少一個最舊的推測元件將從該送交視窗中被排除;及一送交視窗移動元件,該送交視窗移動元件指示當由該元件序列之一最舊的剩餘推測元件所表示的一或多個推測執行的指令由該處理電路保持未送交時,該送交視窗應相對於該最舊的剩餘推測元件移動以改變哪一個推測元件是該送交視窗中最舊的推測元件。
  2. 如請求項1所述的追蹤模組,其中:回應於該處理電路,送交由該送交視窗中的該至少 一個最舊的推測元件表示的一或多個推測執行的指令:當該送交視窗中的多個推測元件小於一最大推測深度時,該追蹤輸出電路經配置成輸出該送交元件;及當該送交視窗中的多個推測元件等於該最大推測深度時,該追蹤輸出電路經配置為抑制該送交元件的輸出。
  3. 如請求項1和2中之任一項所述的追蹤模組,其中該送交視窗移動元件指定了指示該推測元件的一視窗開始指示符,該推測元件應在由該送交視窗移動元件所指示之該送交視窗的位置改變之後成為該送交視窗之最舊的推測元件。
  4. 如請求項3所述的追蹤模組,其中該視窗開始指示符標識多個推測元件,該多個推測元件包括該元件序列中最舊的剩餘推測元件,該最舊的剩餘推測元件比由該送交視窗移動元件所指示之該送交視窗的位置改變之後的該送交視窗之最舊的推測元件更舊。
  5. 如請求項1所述的追蹤模組,其中該追蹤輸出電路經配置為回應於該監視電路偵測到該處理電路執行表示包括了在該交易開始指令和一交易結束指令之間執行的一或多個指令的一交易的一開始的一交易 開始指令而輸出該送交視窗移動元件,為此在該交易開始指令和該交易結束指令之間沒有發生一中止事件的情況下,當達到該交易結束指令時將送交該交易的該等指令的效果。
  6. 如請求項1所述的追蹤模組,其中該追蹤輸出電路被配置為回應於該監視電路偵測到該處理電路執行一預定類型的加載/儲存指令而輸出該送交視窗移動元件。
  7. 如請求項1所述的追蹤模組,其中該追蹤輸出電路能夠輸出一送交視窗重置元件,該送交視窗重置元件指示該元件序列中最舊的剩餘推測元件應成為該送交視窗之最舊的推測元件。
  8. 如請求項7的追蹤模組,其中該送交視窗重置元件包括該送交視窗移動元件,該送交視窗移動元件指定一視窗開始指示符,該視窗開始指示符指示該元件序列中最舊的剩餘推測元件應成為該送交視窗之最舊的推測元件。
  9. 如請求項7和8中之任一項所述的追蹤模組,其中該追蹤輸出電路經配置為回應於該監視電路偵測到該處理電路執行表示包括在一交易開始指令和該交易結束指令之間執行的一或多個指令之一交易的一結束的一交易結束指令而輸出該送交視窗重置元件,為 此在該交易開始指令和該交易結束指令之間沒有發生一中止事件的情況下,當達到該交易結束指令時將送交該交易的該等指令的效果。
  10. 如請求項7和8中之任一項所述的追蹤模組,其中該追蹤輸出電路被配置為回應於該處理電路送交一預定類型的加載/儲存指令而輸出該送交視窗重置元件。
  11. 如請求項1所述的追蹤模組,其中該追蹤輸出電路能輸出指示該處理電路已取消由該送交視窗中的至少一個最新的推測元件所表示的一或多個推測執行指令的一效果的一取消元件。
  12. 如請求項1所述的追蹤模組,其中該監視電路被配置為維持指示以下的至少一者的狀態資訊:該元件序列中之最舊的剩餘推測元件;及該送交視窗中之最舊的推測元件。
  13. 如請求項1所述的追蹤模組,其中該追蹤輸出電路能輸出指示以下的至少一者的一追蹤資訊元件:該元件序列中之最舊的剩餘推測元件;及該送交視窗中之最舊的推測元件。
  14. 一種資料處理設備,包括根據請求項1至13中的任一請求項所述的該追蹤模組及該處理電 路。
  15. 一種用於追蹤處理電路處理指令的方法,包括以下步驟:監視該處理電路對該等指令的處理;及輸出指示該處理電路對該等指令的該處理的結果的一元件序列;該元件序列包括:一送交元件,該送交元件指示該處理電路已送交由該元件序列的一送交視窗中的至少一個最舊的推測元件表示的一或多個推測執行的指令,該送交視窗包括了包含至少一個推測元件的該元件序列的一部分,該推測元件表示至少一個仍由該處理電路送交的推測執行指令,其中該送交元件亦指示在該送交元件之後,該至少一個最舊的推測元件將從該送交視窗中排除;及一送交視窗移動元件,該送交視窗移動元件指示當由該元件序列的一最舊的剩餘推測元件所表示的一或多個推測執行的指令由該處理電路保持未送交時,該送交視窗應相對於該最舊的剩餘推測元件移動以改變哪個推測元件是該送交視窗之最早的推測元件。
  16. 一種追蹤分析方法,包括以下步驟:獲得指示目標處理電路處理指令的結果的一元件序 列;回應於偵測到該元件序列中的一送交元件:推斷該目標處理電路送交由在該元件序列的一送交視窗中之至少一個最舊的推測元件所表示的一或多個推測執行的指令,該送交視窗包括了包含至少一個推測元件的該元件序列的一部分,該至少一個推測元件表示至少一個仍被推斷成由該目標處理電路送交的推測執行指令,及為分析該元件序列的後續元件從該送交視窗中排除該至少一個最舊的推測元件;及回應於偵測到該元件序列中的一送交視窗移動元件,相對於該元件序列中一最舊的剩餘推測元件移動該送交視窗以改變哪個推測元件是該送交視窗中最舊的推測元件,而該最舊的剩餘推測元件仍被推斷成由該目標處理電路所送交的。
  17. 一種用於控制一資料處理設備以執行請求項16的方法的電腦程式。
  18. 一種儲存媒體,該儲存媒體儲存請求項17的電腦程式。
  19. 一種追蹤分析設備,包括:主機處理電路;及儲存電路,其用於儲存用於控制該主機處理電路以 執行請求項16的方法的一電腦程式。
  20. 一種追蹤分析器,包括:一追蹤輸入,其用來獲得指示目標處理電路處理指令的結果的一元件序列;及追蹤分析電路,其回應於偵測到該元件序列中的一送交元件以推斷出該目標處理電路送交了由該元件序列的一送交視窗中的至少一個最舊的推測元件所表示的一或多個推測執行的指令,該送交視窗包括該元件序列的一部分,該元件序列包括至少一個推測元件,該至少一個推測元件表示至少一個推測執行的指令,該至少一個推測執行指令仍被推斷成由該目標處理電路送交,及為分析該元件序列的後續元件從送交視窗中排除該至少一個最舊的推測元件;其中回應於偵測到該元件序列中的一送交視窗移動元件,該追蹤分析電路經配置成相對於該元件序列中之一最舊的剩餘推測元件來移動該送交視窗,以改變哪一個推測元件是該送交視窗之最舊的推測元件,而該最舊的剩餘推測元件仍被推斷成由該目標處理電路送交。
TW108102467A 2018-01-25 2019-01-23 使用送交視窗移動元件的方法、模組、設備、分析器、電腦程式和儲存媒體 TWI798339B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1801246.8 2018-01-25
GB1801246.8A GB2570466B (en) 2018-01-25 2018-01-25 Commit window move element
??1801246.8 2018-01-25

Publications (2)

Publication Number Publication Date
TW201933100A TW201933100A (zh) 2019-08-16
TWI798339B true TWI798339B (zh) 2023-04-11

Family

ID=61558054

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108102467A TWI798339B (zh) 2018-01-25 2019-01-23 使用送交視窗移動元件的方法、模組、設備、分析器、電腦程式和儲存媒體

Country Status (9)

Country Link
US (1) US11048609B2 (zh)
EP (1) EP3743818B1 (zh)
JP (1) JP7153731B2 (zh)
KR (1) KR20200106915A (zh)
CN (1) CN111630498B (zh)
GB (1) GB2570466B (zh)
IL (1) IL275308B2 (zh)
TW (1) TWI798339B (zh)
WO (1) WO2019145668A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016325A1 (en) * 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
CN102289361A (zh) * 2010-06-21 2011-12-21 Arm有限公司 对追踪数据流的关联
US20130191370A1 (en) * 2010-10-11 2013-07-25 Qiming Chen System and Method for Querying a Data Stream
CN106716362A (zh) * 2014-07-25 2017-05-24 英特尔公司 用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级
TW201741869A (zh) * 2012-06-15 2017-12-01 英特爾股份有限公司 具有在依序從記憶體讀取構成載入的記憶體一致性模型內失序載入之旗標語方法及系統
TW201800946A (zh) * 2012-06-15 2018-01-01 英特爾股份有限公司 在處理器中之免消歧義失序載入儲存佇列方法和微處理器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930491A (en) 1997-06-18 1999-07-27 International Business Machines Corporation Identification of related instructions resulting from external to internal translation by use of common ID field for each group
US9798590B2 (en) * 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
GB2481385B (en) * 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
GB2481384B (en) * 2010-06-21 2018-10-10 Advanced Risc Mach Ltd Key allocation when tracing data processing systems
GB2533416A (en) * 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
GB2536871A (en) 2015-03-04 2016-10-05 Advanced Risc Mach Ltd An apparatus and method to generate trace data in response to transactional execution
US20160283247A1 (en) 2015-03-25 2016-09-29 Intel Corporation Apparatuses and methods to selectively execute a commit instruction
GB2543554B (en) * 2015-10-22 2019-01-23 Advanced Risc Mach Ltd Handling exceptional conditions for vector arithmetic instruction
GB2554096B (en) * 2016-09-20 2019-03-20 Advanced Risc Mach Ltd Handling of inter-element address hazards for vector instructions

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016325A1 (en) * 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
CN102289361A (zh) * 2010-06-21 2011-12-21 Arm有限公司 对追踪数据流的关联
US20130191370A1 (en) * 2010-10-11 2013-07-25 Qiming Chen System and Method for Querying a Data Stream
TW201741869A (zh) * 2012-06-15 2017-12-01 英特爾股份有限公司 具有在依序從記憶體讀取構成載入的記憶體一致性模型內失序載入之旗標語方法及系統
TW201800946A (zh) * 2012-06-15 2018-01-01 英特爾股份有限公司 在處理器中之免消歧義失序載入儲存佇列方法和微處理器
CN106716362A (zh) * 2014-07-25 2017-05-24 英特尔公司 用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级

Also Published As

Publication number Publication date
KR20200106915A (ko) 2020-09-15
JP2021511587A (ja) 2021-05-06
CN111630498A (zh) 2020-09-04
CN111630498B (zh) 2023-09-08
IL275308B1 (en) 2023-06-01
IL275308A (en) 2020-07-30
WO2019145668A1 (en) 2019-08-01
EP3743818B1 (en) 2022-03-23
TW201933100A (zh) 2019-08-16
JP7153731B2 (ja) 2022-10-14
GB201801246D0 (en) 2018-03-14
GB2570466B (en) 2020-03-04
GB2570466A (en) 2019-07-31
IL275308B2 (en) 2023-10-01
US11048609B2 (en) 2021-06-29
US20200264963A1 (en) 2020-08-20
EP3743818A1 (en) 2020-12-02

Similar Documents

Publication Publication Date Title
US7870369B1 (en) Abort prioritization in a trace-based processor
KR101423480B1 (ko) 트랜잭셔널 메모리를 위한 최종 브랜치 레코드 표시자
EP2643751B1 (en) Processing apparatus, trace unit and diagnostic apparatus
CN101847091B (zh) 用于预测执行无竞争的锁定指令的方法和装置
JP4763727B2 (ja) 分岐予測ミスを訂正するシステムおよび方法
US7757068B2 (en) Method and apparatus for measuring performance during speculative execution
US8832416B2 (en) Method and apparatus for instruction completion stall identification in an information handling system
JPH1069385A (ja) 命令ループを推論的に実行するプロセッサ及び方法
KR20030019451A (ko) 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘
TW201439904A (zh) 在提前執行中管理潛在無效結果
CN111133418B (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
CN108694094B (zh) 用于处理存储器访问操作的装置和方法
KR20190051036A (ko) 벡터 명령들에 대한 요소간 어드레스 해저드들의 처리
US10007524B2 (en) Managing history information for branch prediction
TWI798339B (zh) 使用送交視窗移動元件的方法、模組、設備、分析器、電腦程式和儲存媒體
KR20070108936A (ko) 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법
US11379233B2 (en) Apparatus and data processing method for transactional memory
KR20230084140A (ko) 제어 독립성 기술을 채용한 프로세서에서 처리되는 명령어에 대한 추론성 예측을 행하는 데 사용된 추론성 이력의 복원
US7783863B1 (en) Graceful degradation in a trace-based processor
CN117472447B (zh) 寄存器重命名恢复方法、装置和设备
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JP2023526554A (ja) 処理回路によって処理されるサンプル操作のプロファイリング