TWI831986B - 用於動態調校處理器特徵的技術 - Google Patents

用於動態調校處理器特徵的技術 Download PDF

Info

Publication number
TWI831986B
TWI831986B TW109120807A TW109120807A TWI831986B TW I831986 B TWI831986 B TW I831986B TW 109120807 A TW109120807 A TW 109120807A TW 109120807 A TW109120807 A TW 109120807A TW I831986 B TWI831986 B TW I831986B
Authority
TW
Taiwan
Prior art keywords
processor
circuitry
state
execution window
address
Prior art date
Application number
TW109120807A
Other languages
English (en)
Other versions
TW202113556A (zh
Inventor
阿達許 喬漢
賈伊許 高爾
法蘭克 莎拉
里瑚 瑞柏波特
澤夫 史博柏
阿迪 佑阿茲
史瑞尼瓦 薩巴
Original Assignee
美商英特爾股份有限公司
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 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW202113556A publication Critical patent/TW202113556A/zh
Application granted granted Critical
Publication of TWI831986B publication Critical patent/TWI831986B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/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/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/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • G06F15/7875Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for multiple contexts
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

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

Abstract

一種包括微架構特徵和動態調校單元(DTU)電路系統的處理器。該處理器在微架構特徵被禁用和啟用時,分別執行用於第一執行窗口和第二執行窗口的程式。DTU電路系統自動地確定處理器在第二執行窗口中是否得到較差的效能。回應於確定處理器在第二執行窗口中得到較差的效能,DTU電路系統更新程式的所選位址的有用性狀態,以表示較差的效能。回應於多個連續確定處理器在啟用微架構特徵時獲得的較差的效能,DTU電路系統自動地更新有用性狀態,以表示已確認的不良狀態。回應於表示已確認的不良狀態的有用性狀態,DTU電路系統自動地為第二執行窗口之後的執行窗口的所選位址禁用微架構特徵。其他實施例在此描述並且要求保護。

Description

用於動態調校處理器特徵的技術
本揭示內容基本上關於資料處理系統,並且更具體地關於用於動態調校資料處理系統中的處理器的技術。
資料處理系統中的中央處理單元(CPU)可以包括各種不同的特徵,這些特徵在某些情況下,相對於沒有這些特徵的CPU可以提高CPU的效能。例如,在某些情況下,具有推測執行特徵的CPU的效能可能會優於可相比但沒有推測執行特徵的CPU。
CPU的特徵也可以是可調校的或可配置的,因為該特徵支援多於一個設定。為了本揭示內容的目的,CPU的可配置特徵可以被稱為「微架構特徵」。例如,CPU可能能夠啟用和禁用微架構特徵。另外或可替代地,當啟用了微架構特徵時,CPU能夠將不同的設定應用於微架構特徵。換句話說,微架構特徵可以支援一範圍的設定。
但是,啟用(即導通)的微架構特徵可能會導致應用程式一部分的效能提高,而導致應用程式另一部分的效能下降。另外,微架構特徵是導致應用程式(或應用程式的一部分)的效能提高還是效能下降可能取決於與該應用程式(或應用程式的該部分)的執行相關的其他情況。
例如,微架構特徵可能會使應用程式在某些類型和/或數量的資料上獲得較好的效能,而在其他類型和/或數量的資料上卻獲得較差的效能。而且,資料處理系統可以同時執行多個應用程式,並且一個應用程式的效能可能會有所不同,其取決於也在該資料處理系統上執行的其他應用程式的類型和數量以及由其他應用程式處理的資料的類型和/或數量。另外,現代處理器可能具有許多不同的微架構特徵,並且那些特徵可能具有複雜的交互作用,從而導致在不同情況下的效能差異。
至少由於前述原因,在各種各樣的不同情況下實現改進效能的方式來調校微架構特徵將具有挑戰性。
如上所述,本揭示內容引入了用於動態調校資料處理系統中的處理器的技術。特別地,本揭示內容提供了針對一或多個微架構特徵的不同設定的運行時間評估,以確定當前條件的較佳設定,以及該較佳設定的動態應用。此外,評估可能會隨時間重複進行,以確定變化條件並應用較佳設定。
如下面更詳細地描述的,在一個實施例中,處理器中的動態調校單元使處理器以用於第一執行窗口第一設定(例如禁用)的處理器的微架構特徵執行軟體,並且以用於第二執行窗口的第二設定(例如啟用)的微架構特徵執行軟體,其中窗口的大小相同。然後,動態調校單元根據完成每個窗口所需的週期數來確定效能是提高還是降低。例如,如果第二窗口以比第一窗口顯著少的週期完成,則動態調校單元可以確定微架構特徵的第二設定導致效能提高。並且,如果處理器以比第一窗口更少的週期完成第二窗口,則對於第二窗口,處理器平均能夠執行更多每週期指令(IPC)。因此,可以根據有效的每週期指令(IPC)評估改進的效能,而更高的有效IPC反映出效能的提高。
動態調校單元可以將這種評估與有限狀態機一起使用,以確定微架構特徵的較佳設定。此外,動態調校單元可以評估正在執行的軟體的不同部分,並且動態調校單元可以為軟體的那些不同部分確定並應用微架構特徵的不同較佳設定。例如,動態調校單元可以為工作負荷的某些部分啟用微架構特徵,而為工作負載的其他部分禁用微架構特徵。為了本揭示內容的目的,使處理器的微架構特徵針對工作負載的不同部分使用不同設定(例如,啟用或禁用)的過程可以被稱為該微架構特徵的「選擇性節流」。
圖1是描繪具有用於動態調校資料處理系統10處理器12的技術的資料處理系統10的示例實施例的方塊圖。資料處理系統10是假想系統,其具有各種假想組件和特徵以示出本文介紹的技術。
如圖所示,除了CPU或處理器12之外,資料處理系統10還包括其他硬體資源,例如隨機存取記憶體(RAM)14、非揮發性記憶體(NVS)16、網路介面控制器(NIC)18等。同樣地,在圖1的實施例中,處理器12包括兩個核心20A-20B,以及其他模組,例如時脈22等。如圖所示,核心20A包括各種處理資源,例如算術邏輯單元(ALU)24、一組通用暫存器26、預取單元28等。核心20B還可以包括相同或相似類型的組件。
另外,在其他實施例中,處理器可以包括更少的核心或更多的核心。例如,處理器可以包括單個核心,或者數十或數百個核心。處理器也可以被實現為積體電路或「晶片」,其被安裝到基板上以形成封裝。作為替代地,處理器可以被實現為包含一個以上晶片的封裝。
在圖1的實施例中,NVS 16包括諸如作業系統(OS)52和應用程式54之類的軟體。資料處理系統10可以將軟體複製到RAM 14中以便執行。而且,資料處理系統10可以在多個核心上同時執行軟體。另外,每個核心可以包括多個邏輯處理器(LP),並且每個核心可以同時在多個LP上執行軟體。例如,在具有CPU的資料處理系統中,該CPU包含四個核心,每個核心具有兩個LP,該資料處理系統可以同時執行八個不同的應用程式,或單個應用程式的八個示例(instance)等。
另外,在圖1的實施例中,預取單元28是可調校的,因為處理器12可以導通或關斷預取單元28,且/或當預取單元28導通時,處理器12可以將不同的設定應用於預取單元28。換句話說,預取單元28是微架構特徵。特別地,預取單元28包括特徵設定29,其可以被更新以影響預取單元28是否和/或如何操作。
此外,預取單元28包括具有控制邏輯的動態調校單元30,如以下更詳細地描述的,該控制邏輯用於動態調校預取單元28(例如,透過動態調校特徵設定29)。另外,資料處理系統可以包括多個微架構特徵,以及針對那些微架構特徵中的每個微架構的動態調校單元。為了本揭示內容的目的,可以將用於動態調校單元的一些或全部控制邏輯稱為「調校控制邏輯」。
在圖1的實施例中,動態調校單元30中的控制邏輯包括退出指令計數器32、全域啟用標誌34、當前週期計數器36、先前週期計數器38、刷新計數器31和有用性有限狀態機(FSM)42,如以下更詳細描述的。控制邏輯還包括用於調校動態調校單元30如何操作的各種調校參數40。在圖1的實施例中,調校參數40包括用於窗口大小、參與臨限值、顯著臨限值、所選位址列表、所選位址計數和刷新臨限值的參數,如以下更詳細地描述的。該控制邏輯還包括效能評估單元(PEU)33,其確定啟用預取單元28會導致較好還是較差的效能,以及調校實現單元(TIU)35,其分別地在用於那些位址的有用性狀態已達到確認的良好狀態或確認的不良狀態之後,為所選位址透過啟用或禁用預取單元28的預取功能來實現調校決策,如以下更詳細地描述的。
預取單元28還包括評估表50,並且動態調校單元30使用評估表50來評估預取單元28的不同特徵設定的效能。在圖1的實施例中,評估表50包括每個的列或項目51在應用程式54中所選位址(SA),並且該列包括該SA的參與計數器(IC)、功能設定(FS)和有用性狀態(US)。在圖1中,下標用於標識對應於給定SA的變量或值。以下提供用於使用評估表50的過程的示例實施例的附加細節。SA也可以稱為指令指標(IP)。
因此,動態調校單元30中的控制邏輯包括各種控制結構(例如,PEU 33、TIU 35和有用性FSM 42)和各種資料儲存結構(例如,刷新計數器31退出指令計數器32等))。那些資料儲存結構可以被實現為一或多個暫存器、一或多個暫存器的部分、或者被實現為任何其他合適一或多種類型的資料儲存結構。類似地,可以使用任何適當一或多種類型的硬體結構來實現控制結構。例如,如下所示,用於實現動態調校單元30的一些或所有操作的控制邏輯中的一些或所有可以在晶片中的硬體電路中實現。因此,動態調校單元(DTU)也可以稱為DTU電路(或DTU電路系統),PEU可以稱為PEU電路(或PEU電路系統),TIU可以稱為TIU電路(或TIU電路系統)等。同樣,諸如「邏輯」之類的術語可以用於指稱硬體邏輯電路、其他類型的硬體組件或硬體組件的組合。
圖2是用於動態調校處理器12的示例過程的流程圖。特別地,圖2的過程說明了動態調校單元30如何利用針對預取單元28的不同設定來評估處理器12的效能,以及如何為了效能提高而動態地調校預取單元28。為了說明的目的,此過程是用以下情境來描述:動態調校單元30在處理器執行應用程式54時評估和調校處理器12的效能,以使處理器12在執行應用程式54時能夠得到較好的效能。因此,應用程式54可以被稱為「動態可調校軟體」。然而,動態調校單元30可以使用相同種類的操作來改善其他動態可調校軟體的效能。
圖2的過程可以從動態調校單元30確定是否已經開始或啟動了動態可調校軟體(例如應用程式54)而開始,如方塊110所示。如果尚未啟動這種軟體,則動態調校單元30可以等待動態可調校軟體啟動。
然而,如果已經啟動了應用程式54,則動態調校單元30可以將用於應用程式54內的指令的位址列表加載到調校參數40中的「所選位址列表」參數中,如方塊112所示。特別地,此位址列表標識應用程式54中的所有指令,這些指令將透過預取單元28的不同設定以評估效能。如下文更詳細地描述,動態調校單元30隨後將使用所選位址列表來評估應用程式54的不同部分,並且基於該評估,針對那些不同部分動態地調校預取單元28。動態調校單元30還可以將SA的計數加載到「所選位址計數」參數中。特別地,在一個實施例中,動態調校單元30包括啟發式控制邏輯,該啟發式控制邏輯基於關於應用程式54中最有可能由於預取單元28的選擇性節流使得效能改善的指令的評估,自動地分析應用程式54並產生所選位址列表(和所選位址計數)。在產生所選位址列表和所選位址計數之後或同時,動態調校單元30可以將這些值加載到調校參數40中。
如方塊114所示,動態調校單元30之後可以執行一些初始化操作以啟始其自身。例如,動態調校單元30可以為應用程式54建立評估表50,包括用於應用程式54中的每個SA的列或項目,並將每個SA的有用性狀態初始化為中立的初始狀態。為了本揭示內容的目的,未被選擇的指令的位址可以被稱為「未選位址」(UA)。例如,圖4說明了由SA的退出觸發的操作和由UA的退出觸發的操作。
再次參考圖1,動態調校單元30可以隨後使用有用性FSM 42來調校每個SA的狀態,如以下更詳細地描述的。
圖3是描述有用性FSM 42的行為的方塊圖。如圖所示,FSM包括三個中間狀態和兩個最終狀態。中間狀態包括「中立」的初始狀態,以及「可能不良」和「可能良好」的狀態。最終狀態是「不良」和「良好」。如帶有標籤「較好」的一組上部箭頭所示,有用性FSM 42回應於確定預取單元28的特定設定比預設設定或先前設定產生較好的效能,而將SA的有用性狀態從中間狀態改變為右邊的下一狀態。同樣,如帶有標籤「較差」的一組下部箭頭所示,有用性FSM 42回應於確定預取單元28的特定設定比預設設定或先前設定產生較差的效能,而將SA的有用性狀態從中間狀態改變為左邊的下一狀態。為了本揭示內容的目的,可以分別使用值1-5來指示「不良」、「可能不良」、「中立」、「可能良好」和「良好」的有用性狀態。同樣,在實用性FSM 42中某些位置缺少箭頭表示,一旦SA的狀態達到最終狀態,SA便會停留在該狀態(直到被重置),而與隨後的執行結果無關。然而,在其他實施例中,有用性FSM可以包括三個以上的中間狀態。然而,為了達到最終狀態,SA必須在同一方向上具有至少兩個連續的變化(即,至少兩個連續的增量或減量)。
FSM 42的一個重要態樣是它提供了雙峰性,因為它允許SA的有用性狀態沿兩個不同方向移動。例如,對於多個不同的窗口,SA可能會在例如「可能不良」和「可能良好」的狀態之間來回波動,從而導致效能提高或降低的短暫條件(例如,當應用程式54執行程式階段改變時可能會發生這種情況)不會導致動態調校單元30鎖定微架構特徵的特定設定。相反,如上所述,為了達到最終狀態,SA必須在同一方向上至少具有兩個連續的改變。
圖3還示出了動態調校單元30使用的一些變量,結合有用性FSM 42,以動態評估和調校示例SA的有用性狀態。特別地,圖3反映了至少部分地基於IC1 來評估和調校SA1 的US1 的示例過程(這些變量也在圖1中評估表50的第一行51中示出)。特別地,圖3示出了動態調校單元30回應於以全域啟用標誌34設定而執行的「當前週期」的完成來評估效能。圖3還示出了動態調校單元30在某些情況下使用有用性FSM 42來將SA1 的中間有用性狀態調校為「較好」或「較差」的有用性狀態。特別地,任何調校取決於(a)週期差39大於或等於顯著臨限值,以及(b)IC1 大於或等於參與臨限值。如果滿足那些初步條件,並且如果當前週期計數器36小於先前週期計數器38,則動態調校單元30使用FSM 42的「較好」功能將US1 從中間有用性狀態改變為右邊的下一個有用性狀態。另外,如果滿足那些初步條件,並且如果當前週期計數器36大於先前週期計數器38,則動態調校單元30使用FSM 42的「較差」功能將US1 從中間有用性狀態更改為左邊的下一個有用性狀態。評估和調校有用性狀態的過程將在以下更全面地描述。
再次參考圖2的方塊114,用於啟始動態調校單元30的操作還可以包括清除變量,例如退出指令計數器32、全域啟用標誌34、當前週期計數器36、先前週期計數器38和刷新計數器31。如以下更詳細地描述的,動態調校單元30使用退出指令計數器32對在執行窗口內已經退出的指令的數量進行計數。退出指令計數器也可以稱為「窗口長度計數器」。
此外,動態調校單元30使用全域啟用標誌34來指示是否針對該執行窗口啟用了預取單元28。全域啟用標誌也可以稱為「全域限定位元」。
此外,動態調校單元30使用電流週期計數器36來計數到目前為止在當前窗口中發生的週期數。並且在開始新窗口之前,動態調校單元30可以將值從當前週期計數器36複製到先前週期計數器38,以便隨後可以將新窗口的週期總數與用於先前窗口的週期總數進行比較。電流週期計數器也可以稱為「電流窗口時脈」。
而且,動態調校單元30使用刷新計數器31來計數跨多個窗口的週期數。如以下更詳細描述的,當刷新計數器31達到預定刷新臨限值時,動態調校單元30可以執行全域刷新,以解鎖已經達到最終狀態的任何SA,這使得動態調校單元30能夠回應於變化條件將不同的狀態分配給這些SA。
啟始操作還可以包括用期望值(例如,包括窗口大小、參與臨限值、顯著臨限值和刷新臨限值的值)設定所有調校參數40中的一些。啟始操作還可包括在禁用預取單元28時執行來自應用程式54的一個窗口的指令值,以在當前週期計數器36中獲得基線度量。特別地,該值將指示在禁用預取單元28時執行一個窗口的指令值需要多少個週期。
如方塊116所示,在動態調校單元30已經完成啟始操作之後,核心20A可以繼續執行應用程式54。此外,與應用程式54的執行同時,動態調校單元30可以收集度量,使用那些度量來評估應用程式54的效能,並基於那些評估來調校預取單元28的設定,如方塊118和120所示。關於用於執行應用程式54的過程的更多細節、收集執行度量、基於那些度量來評估應用程式54的效能、以及相應地調校預取單元28的設定在以下於圖4提供。
如方塊130所示,動態調校單元30隨後可以確定應用程式54是否已經終止。如果應用程式54已經終止,則過程可以結束。但是,如果應用程式54尚未終止,則動態調校單元30可以確定刷新計數器30是否已達到刷新臨限值,如方塊142所示。如果尚未達到刷新臨限值,則核心20A可以繼續執行該應用程式,並且如上所述,動態調校單元30可以繼續使用評估表50和有用性FSM 42評估應用程式54的效能並調校預取單元28。
然而,如果已經達到刷新臨限值,則動態調校單元30可以將評估表50中的每個SA的有用性狀態重置為初始中立狀態,從而清除最終狀態。動態調校單元30還可以重置IC。
因此,刷新過程使動態調校單元30能夠在不同的執行階段將不同的最終狀態應用於給定的SA,從而在各種各樣的情況下提供改進的效能。
圖4是用於動態調校圖1的處理器的操作的虛擬碼描述。特別地,圖4包括用於實現圖2的方塊116、118和120的執行流的示例實施例的虛擬碼以及鍵(key),以定義執行流中使用的某些縮寫字。
作為概述,動態調校單元30可以使用圖4的過程來為評估表50填充執行窗口的資料,該資料包括從應用程式54退出預定數量的指令。在所示的實施例中,動態調校單元30使用「窗口大小」的調校參數40以指定此數字。而且,在每個窗口的結束之後,動態調校單元30可以為一或多個SA更新有用性狀態。例如,在窗口期間,如果為SA啟用預取單元28,若執行了此SA顯著多次,如果效能得到了顯著改善(與在窗口中未為此SA啟用預取單元28相比),並且如果對該SA的有用性狀態尚未處於最終狀態,則動態調校單元30可以將評估表50中此SA的有用性狀態改變為「較好」狀態。
如上所述,與完成先前窗口所需的週期數相比,動態調校單元30可基於完成當前窗口所需的週期數來確定當前窗口的效能是否優於先前窗口的效能。如果當前窗口以顯著較少的週期完成,則認為效能有所提高。
以下更詳細地描述用於評估對於窗口的應用程式的執行以及基於該評估更新有用性狀態的操作。
特別地,圖4的過程可以開始於動態調校單元30透過將值從當前週期計數器36保存到先前週期計數器38,然後重置當前週期計數器36和退出指令計數器32來準備評估新窗口。動態調校單元30還可以為每個SA重置評估表50中的參與計數器。
然後,當應用程式54執行並退出一個窗口的指令時,動態調校單元30可以每個週期增加一次當前週期計數器36,同時還可以在指令退出時增加退出指令計數器32,並在每當有一個退出指令駐留在所選位址之一者時,在評估表50中增加相關的參與計數器。
在圖4中,運算符「++」表示增量操作。另外,「開始窗口」和「結束窗口」之間的操作表示針對假設執行流而執行的操作。
特別地,在該假設情境中,圖4示出了在每個週期期間,動態調校單元30遞增電流週期計數器36(CCC)。而且,對於Cycle1 ,沒有指令被退出,因此動態調校單元30不增加退出指令計數器32。然而,在「Cycle2 」期間,核心20A從重排序緩衝器退出指令。特別地,核心20A退出SA1 。換言之,核心20A退出駐留在SA1 處的指令。因此,動態調校單元30遞增退出指令計數器32(RIC)和刷新計數器31(RC)。另外,動態調校單元30在對於SA1 的評估表50中增加參與計數器(IC)。換言之,動態調校單元30使IC1 遞增。
然後,在「Cycle3 」期間,核心20A在未選位址(UA)處退出指令。因此,動態調校單元30遞增CCC、RIC和RC,但是動態調校單元30不遞增任何參與計數器。然後,在「Cycle4 」期間,沒有指令被退出,因此動態調校單元30僅遞增CCC。然後,在「Cycle5 」期間,核心20A再度退出SA1 。因此,動態調校單元30再度遞增RIC、RC和IC1 。然後,在「Cycle6 」期間,核心20A退出SA2 。因此,動態調校單元30為在SA2 (即IC2 )處的指令而遞增RIC、RC和參與計數器。在隨後的週期中,動態調校單元30基於哪些指令被退出,而適當地繼續執行如上所述的操作。
此外,當核心20A退出SA時,動態調校單元30可以更新評估表50中此SA的FS欄位,以反映預取單元28的當前設定。例如,動態調校單元30可以對於此SA從來自預取單元28的特徵設定29複製值到FS欄位中。
然而,一旦退出指令計數器32中的值等於調校參數40中指示的預定窗口大小,則動態調校單元30結束或關閉窗口。特別地,在圖4的實施例中,動態調校單元30在CycleQ 之後結束窗口。因此,下標Q表示執行和退出一個窗口的指令所需的週期數。類似地,當前週期計數器36中的值將反映該週期數。同樣,刷新計數器31中的值將遞增當前窗口中已退出的指令數量(相對於其在窗口開始時的起始值)。作為替代地,動態調校單元30可以簡單地將窗口大小添加到每個窗口的末端處的刷新計數器31,而非在指令退出時遞增刷新計數器31。
一旦最新(或「當前」)窗口關閉,動態調校單元30將分析收集的資料,並可以調校該窗口中參與的SA的有用性狀態。特別地,在圖4的實施例中,動態調校單元30確定是否設定了全域啟用標誌34,其指示針對當前窗口啟用預取單元28。但是,如果未設定全域啟用標誌34,則過程進入else分支,並且動態調校單元30設定全域啟用標誌34。
但是,如果設定了全域啟用標誌34,則核心20A在啟用預取單元28時執行當前窗口,並且該窗口可能參與在中間有用性狀態的指令的執行,這意味著那些特定的指令可能已經是在啟用預取單元28時執行了。因此,動態調校單元30分析所收集的資料以確定預取單元28的啟用是否導致顯著的效能改進或降級,並相應地調校SA的狀態。為了確定當前窗口相對於先前窗口在效能上是否存在顯著的損失或增益,動態調校單元30可以從先前週期計數器38中減去當前週期計數器36以產生「週期差」39,其指示當前窗口中使用了更少的週期(或多少個週期)。然後,動態調校單元30可以將週期差39與預定的顯著臨限值進行比較。如果週期差39不大於或等於顯著臨限值,則動態調校單元30可以跳過附加評估並且簡單地重置全域啟用標誌34,以使動態調校單元30針對下一窗口禁用預取單元28。
但是,如果差異是顯著地大,則隨後動態調校單元30可以考慮每個SA,以確定是否應改變該SA的有用性狀態。特別地,如在For迴圈內所指示的,對於每個SA,動態調校單元30確定(a)該SA的參與計數器是否>=預定參與臨限值,以及(b)該SA是否處於中間狀態(即,非最終)狀態。如果該SA未在當前窗口中顯著地參與,則動態調校單元30不會在評估表50中改變該SA的有用性狀態。同樣,如果該SA不在中間狀態,則動態調校單元30不會更改該SA的有用性狀態。
然而,如果SA被顯著地參與並且SA處於中間狀態,則動態調校單元30根據效能是提高還是降低來調校對該SA的有用性狀態。特別地,如果在當前窗口中使用較少的週期,則效能得以改善,則動態調校單元30沿有用性FSM 42中的「較好」箭頭之一者遞增該SA的有用性狀態。不過如果在當前窗口中使用較多的週期,而效能降低,則動態調校單元30沿著有用性FSM 42中的「較差」箭頭之一者降低該SA的有用性狀態。
為了說明的目的,在For迴圈的情境描述了上述操作。然而,在一個實施例中,動態調校單元30實際上平行地對所有SA執行評估和更新。例如,評估表50中的每一列/項目可以包括有效標誌(例如,1位元),並且動態調校單元50可以結合將SA加載到該列中(即,用於評估效能的指令的位址)來為該列設定有效標誌,如以上關於圖2的方塊112所指示的那樣。因此,SA可以是評估表50中的那些位址,這些位址駐留在已經設定了有效標誌的列中。然後,每當窗口結束時,動態調校單元50可以評估效能影響並平行地更新所有有效SA的效能度量。
一旦已經處理了所有的SA(或者,如上所示,或者如果週期差39不大於或等於顯著臨限值),則動態調校單元30可以重置全域啟用標誌34,以使動態調校單元30用以禁用下一窗口的預取單元28。然後,圖4的過程可以返回到開始,其中核心20A在禁用預取單元28時執行下一窗口,然後在啟用預取單元28時執行下一窗口,等等。
此外,當核心20A正在執行應用程式54時,即使設定了全域啟用標誌34,如果評估表50指示SA的最終有用性狀態為「不良」,則核心20A也不會對該SA使用預取單元28。並且即使全域啟用標誌34被清除,如果評估表50指示SA具有最終有用性狀態「良好」,則核心20A將對該SA使用預取單元28。
因此,動態調校單元30在運行時間期間分析軟體的效能,並動態地調校諸如預取單元28之類的微架構特徵以提高效能。而且,如以上關於圖3所指示的,為了達到最終狀態,SA必須在相同方向上具有至少兩個連續的變化。因此,如果預取單元28的啟用導致兩個連續的全域啟用窗口的效能顯著提高,則動態調校單元30可以將與那些全域啟用的窗口中顯著參與的SA的有用性狀態從「中立」更改(例如)為「可能良好」,然後從「可能良好」變為「良好」。(出於本揭示內容的目的,術語「兩個連續的全域啟用窗口」是指在設定了全域啟用標誌的情況下執行的兩個窗口,除了在全局啟用標誌清除的情況下執行的兩個窗口之間沒有其他窗口)。並且,如果預取單元28的啟用導致兩個連續的全域啟用窗口的效能顯著降低,則動態調校單元30可以將(大量參與的)SA的有用性狀態從「中立」(例如)更改為「可能不良」,然後從「可能不良」變為「不良」。但是,視情況而定,SA的有用性狀態可能會在二或多個中間狀態附近反彈。
為了說明的目的,本揭示內容聚焦於經動態調校的單個微架構特徵的實施例。然而,在其他實施例中,處理器可以包括經動態調校的多個微架構特徵。例如,核心可以包括二或多個微架構特徵,並且那些微架構特徵中的每一者可以包括自己的動態調校單元和自己的評估表。每個動態調校單元可以包括諸如以上關於動態調校單元30所描述的那些特徵。並且每個評估表可以包括諸如以上關於評估表50所描述的那些特徵。
同樣,如上所述,微架構特徵可能支援一系列設定,而不僅僅是「導通」和「關斷」。並且,動態調校單元可以包括在收集當前窗口的度量並更新評估表時用於SA的FS。因此,評估表可以指示用於每個SA的FS。然後,動態調校單元可以基於那些FS將效能最佳化。例如,處理器可以具有特徵設定以從各種不同的速度(或大小、或其他類型的設定)中選擇,並且動態調校單元可以使用不同的速度設定(或大小設定、或其他類型的設定)比較窗口之間的效能。然後,動態調校單元可以基於那些比較來調校針對不同SA的有用性狀態。例如,關於具有從最保守到最激進的範圍的設定範圍的微架構特徵,動態調校單元可以將這些設定值中的每個設定值從範圍的一端迭代到另一端。如果在該範圍內的某個特定設定處存在最佳效能的最大值,則動態調校單元可以透過逐個逐步測試每個設定或層級來識別該設定。
同樣,在另一實施例中,動態調校單元可以使用兩個不同的顯著臨限值,一個用於確定效能改善是否顯著,另一個用於確定效能下降是否顯著。因此,這樣的臨限值可以被稱為「改善顯著臨限值」和「劣化顯著臨限值」。
而且,動態調校單元可以將任何合適的值用於變量,例如窗口大小、參與臨限值、顯著臨限值和刷新臨限值。例如,在一個實施例或情境中,動態調校單元可以使用數千個指令的窗口大小(例如8,000~32,000),顯著臨限值為10%或12.5%,參與臨限值為10%~20%,刷新臨限值為200,000。然而,在其他實施例或情境中,可以將較小或較大的值用於那些變量中的每一者。此外,可以根據經驗調校諸如顯著臨限值之類的值,以針對特定的微架構特徵調校節流機制的靈敏度。
如已經描述的,動態調校單元使處理器能夠透過基於當前條件動態地調校一或多個微架構特徵的設定來實現改進的效能。而且,動態調校單元可以用控制邏輯來實現,該控制邏輯相對簡單並且不需要諸如功率之類的大量處理資源。
在至少一些情境中,根據本揭示內容的動態調校單元可以使處理器能夠實現顯著改善的處理效能。例如,在一個模擬情境中,包括用於分支預測的微架構特徵的處理器被用來執行工作負載以測試三種不同的配置。在第一個測試中,處理器在為整個工作負載都禁用微架構特徵時執行了工作負載。在第二個測試中,處理器在為整個工作負載都啟用微架構特徵時執行了工作負載。在第三個測試中,在微架構特徵對於工作負載的某些部分動態地啟用並且對於工作負載的其他部分則動態地禁用的情況下,處理器執行工作負載,如本文所述。第二個測試表明,啟用該特徵相對於第一個測試,效能提高了約5.9%。第三個測試表明,根據本揭示內容,相對於第一個測試,動態地調校特徵導致大約8%的效能提高。因此,動態調校將微架構特徵的優點提高了約30%。
這種改進可能至少部分是由於減少了負異常值的影響,而負異常值實際上是導致微架構特徵降低處理器效能的工作量的一部分。例如,用於預取的微架構特徵通常可以減少或隱藏記憶體等待時間,但是對於工作負載的某些部分,該微架構特徵可能會導致快取污染,並帶來負面影響,其後果超過了預取的優點。
在一或多個實施例中,可以透過動態調校單元來動態調校許多不同類型的微架構特徵。那些微架構特徵可以包括但不限於處理器中的分支預測單元、預取單元和其他組件。另外或替代地,那些微架構特徵可以包括處理器的可配置操作特性或設定,包括但不限於諸如核心時脈速度、一或多個緩衝器或其他儲存構造的大小等設定。
另外,在以上描述中,當前週期計數器36指示當啟用微架構特徵時消耗了多少個週期,而先前週期計數器38指示當禁用微架構特徵時消耗了多少個週期。更一般地,出於本揭示內容的目的,可以將表示啟用微架構特徵時消耗了多少個週期的計數器稱為「啟用週期計數器」,以及表示禁用微架構特徵時消耗了多少個週期的計數器稱為「禁用週期計數器」。
附加實施例
圖5-9是示例性電腦架構的方塊圖。這樣的架構可以包括具有如本文所述的用於動態調校單元的調校控制邏輯的處理器。圖5-9中相同或相似的元件具有相似的元件符號。本領域已知的其他系統設計和配置,其用於筆記型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置和各種其他電子裝置也適用。通常,能夠結合本文揭示的處理器和/或其他執行邏輯的各種各樣的系統或電子裝置通常是合適的。
圖5是根據一或多個實施例的處理器1100的方塊圖,該處理器1100可以具有一個以上的核心也可以具有整合的記憶體控制器,並且可以具有整合的圖形器。圖5中的實線框示出了具有單核心1102A的處理器1100、系統代理器1110、一組一或多個匯流排控制器單元1116,而虛線框的可選地添加示出了具有多核心1102A-N的替代處理器1100、系統代理器單元1110中的一組一或多個整合記憶體控制器單元,以及專用邏輯1108。
因此,處理器1100的不同實現可包括:1)具有專用邏輯1108為整合的圖形器和/或科學(流通量)邏輯(可包括一或多個核心)的CPU,並且核心1102A-N為一或多個通用核心(例如,通用有序核心、通用無序核心,或兩者的組合);2)協同處理器,其核心1102A-N為大量專用於圖形器和/或科學(流通量)的專用核心;3)協同處理器,其核心1102A-N是大量的通用有序核心。因此,處理器1100可以是通用處理器、協同處理器或專用處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、高流通量多整合核心(MIC)協同處理器(包括30個或更多核心)、嵌入式處理器等。處理器可以在一或多個晶片上實現。處理器1100可以是使用諸如BiCMOS、CMOS或NMOS之類的多種處理技術中的任一種的一或多個基板的一部分和/或可以在一或多個基板上實現。
記憶體層次結構包括核心內的一或多個層級的快取單元1104A-N,一組或一或多個共享快取單元1106,以及耦接到一組整合記憶體控制器單元1114的外部記憶體(未示出)。該組共享快取單元1106可以包括一或多個中間層級的快取,例如L2、層級3(L3)、層級4(L4)或其他層級的快取,最後層級的快取(LLC)和/或其組合。儘管在一個實施例中,基於環的互連單元1112將專用邏輯1108、該組共享高速快取單元1106以及系統代理器單元1110/整合記憶體控制器單元1114互連,但是替代實施例可以使用許多眾所周知的技術來互連此種單元。在一實施例中,在一或多個以上快取單元1106與核心1102A-N之間維持一致性。
系統代理器單元1110包括協調和操作核心1102A-N的那些組件。系統代理器單元1110可以包括例如功率控制單元(PCU)和顯示單元。PCU可以是或包括用於調節核心1102A-N和整合圖形邏輯1108的功率狀態所需的邏輯和組件。顯示單元用於驅動一或多個外部連接的顯示器。
就架構指令集而言,核心1102A-N可以是同質的或異質的;也就是說,核心1102A-N中的二或多個核心可能能夠執行相同的指令集,而其他核心可能僅能夠執行該指令集的子集合或不同的指令集。這樣的核心1102A-N可以將某些記憶體存取指令轉換為如本文所述的子線記憶體存取指令。
圖6是根據一或多個實施例的系統1200的方塊圖。系統1200可以包括一或多個處理器1210、1215,它們耦接到控制器集線器1220。在一個實施例中,控制器集線器1220包括圖形記憶體控制器集線器(GMCH)1290和輸入/輸出集線器(IOH)1250(可能在單獨的晶片上);GMCH 1290包括用於控制耦接到記憶體1240和協同處理器1245的所耦接記憶體和圖形控制器內的操作的記憶體控制器;IOH 1250將輸入/輸出(I/O)裝置1260耦接到GMCH 1290。作為替代地,記憶體和圖形控制器之一者或兩者都整合在處理器內,記憶體1240和協同處理器1245直接耦接到處理器1210,且控制器集線器1220與IOH 1250整合在一個晶片中。
在圖6中用虛線表示附加處理器1215的可選性質。每個處理器1210、1215可以包括一或多個在此描述的處理核心,並且可以是處理器1100的某個版本。
記憶體1240可以是例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或兩者的組合。對於至少一個實施例,控制器集線器1220經由多分支匯流排(諸如前端匯流排(FSB))、點對點介面(諸如QuickPath Interconnect(QPI))或是或類似的連接1295與處理器1210、1215通訊。
在一個實施例中,協同處理器1245是專用處理器,例如,高流通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。在一個實施例中,控制器集線器1220可以包括整合的圖形加速器。
就包括架構、微架構、熱、功耗特性等的一系列品質指標而言,實體資源1210、1215之間可能存在各種差異。
在一個實施例中,處理器1210執行控制一般類型的資料處理操作的指令。嵌入在指令中的可以是協同處理器指令。處理器1210將這些協同處理器指令識別為應該由附接的協同處理器1245執行的類型。因此,處理器1210在協同處理器匯流排或其他互連上將這些協同處理器指令(或表示協同處理器指令的控制訊號)發布給協同處理器1245。協同處理器1245接受並執行接收到的協同處理器指令。
圖7和8是根據一或多個實施例的更具體的示例性系統1300和1400的方塊圖。如圖7所示,多處理器系統1300是點對點互連系統,並且包括經由點對點互連1350耦接的第一處理器1370和第二處理器1380。處理器1370和1380中的每一者可以是某些版本的處理器1100。在一個實施例中,處理器1370和1380分別是處理器1210和1215,而協同處理器1338是協同處理器1245。在另一實施例中,處理器1370和1380分別是處理器1210和協同處理器1245。
示出的處理器1370和1380分別包括整合記憶體控制器(IMC)單元1372和1382。處理器1370還包括作為其匯流排控制器單元的一部分的點對點(P-P)介面1376和1378;類似地,第二處理器1380包括P-P介面1386和1388。處理器1370、1380可以使用P-P介面電路1378、1388經由P-P介面1350交換資訊。如圖7所示,IMC 1372和1382將處理器耦接到相應的記憶體,即記憶體1332和記憶體1334,它們可以是主記憶體局部附接到各個處理器的部分。
處理器1370、1380可以各自使用點對點介面電路1376、1394、1386、1398經由單獨的P-P介面1352、1354與晶片組1390交換資訊。晶片組1390可以可選地經由高效能介面1339與協同處理器1338交換資訊。在一個實施例中,協同處理器1338是專用處理器,例如高流通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
共享快取(未顯示)可以包含在一個處理器中,也可以包含在兩個處理器之外,但還可透過P-P互連與這些處理器連接,如此,如果讓一個處理器置於低功耗模式,則可以將一或二個處理器的本地快取資訊儲存在共享快取中。
晶片組1390可以經由介面1396耦接到第一匯流排1316。在一個實施例中,第一匯流排1316可以是外圍組件互連(PCI)匯流排,或諸如PCI Express匯流排或另一第三代I/O互連的匯流排,然而本發明的範圍不限於此。
如圖7所示,可以伴隨著將第一匯流排1316耦接到第二匯流排1320的匯流排橋接器1318而將各種I/O裝置1314耦接到第一匯流排1316。在一個實施例中,一或多個附加處理器1315,諸如協同處理器、高流通量MIC處理器、GPGPU、加速器(例如圖形加速器或數位訊號處理(DSP)單元)、現場可程式化閘陣列或任何其他處理器是耦接到第一匯流排1316的。在一個實施例中,第二匯流排1320可以是低接腳數(LPC)匯流排。各種裝置可以耦接到第二匯流排1320,其包括例如鍵盤和/或滑鼠1322、通訊裝置1327和諸如磁碟驅動器或其他大容量儲存裝置的儲存單元1328,在一個實施例中,其可以包括指令/碼和資料1330。此外,音訊I/O 1324可以耦接到第二匯流排1320。需注意的是,其他架構也是可能的。例如,代替圖7的點對點架構,系統可以實現多點匯流排或其他這樣的架構。
圖8呈現了根據一或多個實施例的第二更具體的示例性系統1400的方塊圖。為了避免混淆圖8的其他態樣,已從圖8中省略了圖7的某些態樣。
圖8示出了處理器1370、1380可以分別包括整合記憶體和I/O控制邏輯(「CL」)1372和1382。因此,CL 1372、1382包含整合的記憶體控制器單元,並包含I/O控制邏輯。圖8示出不僅記憶體1332、1334耦合到CL 1372、1382,而且I/O裝置1414也耦合到控制邏輯1372、1382。傳統I/O裝置1415耦合到晶片組1390。
圖9是根據一或多個實施例的系統單晶片(SoC)1500的方塊圖。虛線框是更進階SoC的可選功能。在圖9中,互連單元1502耦合到:應用處理器1510,其包括一組一或多個核心1102A-N(包括組成高速快取單元1104A-N)和共享高速快取單元1106;系統代理器單元1110;匯流排控制器單元1116;整合記憶體控制器單元1114;一組或一或多個協同處理器1520,其可以包括整合的圖形邏輯、影像處理器、音訊處理器和視訊處理器;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;以及顯示單元1540,其用於耦合到一或多個外部顯示器。在一個實施例中,一或多個協同處理器1520包括專用處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高流通量MIC處理器、嵌入式處理器等。
結論
在本揭示內容中,諸如「一個實施例」,「一個實施例」和「另一實施例」的表達旨在大致上參考實施例的可能性。這些表達並非旨在將本發明限制為特定的實施例配置。如本文所使用的,那些表達可以引用相同的實施例或不同的實施例,並且那些實施例可組合成其他實施例。根據本文描述和示出的原理和示例實施例,將認識到,可以在不脫離本文描述和/或示出的原理的情況下在佈置和細節上修改示出的實施例。
另外,根據本揭示內容,裝置可以包括指令和其他資料,當被處理器存取時,這些指令和其他資料使該裝置執行特定的操作。為了本揭示內容的目的,使裝置執行操作的指令通常可以被稱為軟體。軟體等也可以稱為控制邏輯。在啟動過程中使用的軟體可以稱為韌體。儲存在非揮發性記憶體中的軟體也可以稱為韌體。可以使用任何適當的結構或結構的組合來組織軟體。因此,通常可以使用像程式和模組這樣的術語來覆蓋廣泛的軟體結構,包括但不限於應用程式、子程式、常式、函式、程序、驅動程式、函式庫、資料結構、行程、微碼和其他類型的軟體組件。此外,應該理解,軟體模組可以包括一個以上的組件,並且那些組件可以協作以完成模組的操作。此外,軟體使裝置執行的操作可以包括創建操作上下文(context)、實例化特定資料結構等。實施例可以被實現為在包括至少一個處理器、儲存系統(例如,揮發性記憶體和/或一或多個非揮發性儲存元件)、至少一個輸入裝置和至少一個輸出裝置的可程式化系統上執行的軟體。
任何合適的操作環境和程式語言(或操作環境和程式語言的組合)可以用於實現本文描述的軟體組件。例如,可以以高階程式或物件導向的程式語言,或是以組合或機器語言來實現程式碼。本文描述的機制不限於任何特定的程式語言。在任何情況下,該語言都可以是編譯語言或直譯語言。
包含資料並且允許另一個組件獲取該資料的媒體可以稱為機器可存取媒體或機器可讀媒體。因此,實施例可以包括機器可讀媒體,該機器可讀媒體包含用於執行本文描述的一些或全部操作的指令。這樣的媒體通常可以稱為設備,特別是程式產品。在一實施例中,用於多個組件的軟體被儲存在一個機器可讀媒體中。在其他實施例中,可以使用二或多個機器可讀媒體來儲存用於一或多個組件的軟體。例如,用於一個組件的指令可以被儲存在一個媒體中,而另一組件的指令可以被儲存在另一媒體中。或者,一個組件的一部分指令可以儲存在一種媒體中,而該組件的其餘指令(以及其他組件的指令)可以儲存在一或多種其他媒體中。類似地,在一個實施例中,上面描述為駐留在特定裝置上的軟體在其他實施例中可以駐留在一或多個其他裝置上。例如,在分散式環境中,某些軟體可能儲存在本地,而某些軟體可能儲存在遠端。類似地,在其他實施例中,在一個實施例中在一個特定裝置上執行的上述操作可以由一或多個其他裝置執行。
其他實施例可以在資料中實現,並且可以儲存在非暫時性儲存媒體上,該非暫時性儲存媒體如果被至少一台機器使用,根據本揭示內容,則使至少一台機器製造至少一個積體電路以執行一或多個操作。進一步的實施例可以在電腦可讀儲存媒體中實現,其包括資訊,當製造到SoC或其他處理器中時,該資訊將配置SoC或其他處理器執行根據本揭示內容的一或多個操作。至少一個實施例的一或多個態樣可以由儲存在機器可讀媒體上的代表性指令來實現,該代表性指令表示處理器內的各種邏輯單元,並且當由機器讀取時,致使機器製造邏輯單元以執行本文所述的技術。代表各種邏輯單元的指令可以稱為「IP核心」,它們可以儲存在有形的機器可讀媒體中,並提供給各種客戶或製造設備,以加載到實際製造邏輯單元或處理器的製造機器中。至少一個實施例的一或多個態樣可以包括包含指令或設計資料的機器可讀媒體,該指令或設計資料界定了本文描述的結構、電路、設備、處理器和/或系統特徵。例如,設計資料可以用硬體描述語言(HDL)格式化。
用於一些實施例的機器可讀媒體可以包括但不限於有形的非暫時性儲存組件,例如磁碟、光碟、磁光碟、動態隨機存取記憶體(RAM)、靜態RAM、唯讀記憶體(ROM)、固態硬碟(SSD)、相變記憶體(PCM)等,以及處理器、控制器和其他包含資料儲存設備的組件。為了本揭示內容的目的,術語「ROM」通常可以用於指代非揮發性儲存裝置,諸如可抹除可程式化ROM(EPROM)、電可抹除可程式化ROM(EEPROM)、快閃ROM、快閃記憶體等。
還應當理解,本文所描繪的硬體和軟體組件表示合理地獨立的功能元件,從而基本上可以彼此獨立地設計、構建或更新它們。在替代實施例中,組件可以被實現為硬體、軟體或硬體和軟體的組合,以提供本文描述和示出的功能。例如,在一些實施例中,用於實現所描述的操作中的一些或全部的控制邏輯中的一些或全部可以以硬體邏輯來實現(例如,作為積體電路晶片中的微碼,晶片中的可程式化閘陣列(PGA),晶片中的專用積體電路(ASIC),晶片中任何其他合適類型的硬體電路,或一或多個晶片中二或多個不同實例和/或類型的硬體邏輯的組合)。此外,諸如「電路(circuit)」和「電路系統(circuitry)」之類的術語在本文中可以互換使用。這些術語和如「邏輯」的術語可用於指代類比電路系統、數位電路系統、硬佈線電路系統、可程式化電路系統、處理器電路系統、微控制器電路系統、硬體邏輯電路系統、狀態機電路系統,任何其他類型的硬體組件,或硬體組件的任何適當組合。
另外,可以在許多不同種類的資料處理系統中利用本教示。這樣的資料處理系統可以包括但不限於加速器、系統單晶片(SoC)、可穿戴裝置、手持裝置、智慧手機、電話、娛樂裝置(諸如音訊裝置、視訊裝置、音訊/視訊裝置(例如電視機和機上盒))、車輛處理系統、個人數位助理(PDA)、平板電腦、膝上型電腦、可攜式電腦、個人電腦(PC)、工作站、伺服器、客戶端伺服器系統、分散式計算系統、超級電腦、高效能計算系統、計算叢集、大型電腦、小型電腦和其他用於處理或傳輸資料的裝置。因此,除非另外明確指定或上下文需要,否則對任何特定類型的資料處理系統(例如,PC)的引用也應理解為涵蓋其他類型的資料處理系統。資料處理系統也可以稱為設備。資料處理系統的組件也可以稱為設備。
此外,除非另有明確說明,否則被描述為彼此耦合、彼此通訊、彼此回應等的組件不必彼此持續通訊並且不需要彼此直接耦合。相似地,當一個組件被描述為從另一組件接收資料或向另一組件發送資料時,除非另外明確說明,否則該資料可以透過一或多個中間組件發送或接收。另外,資料處理系統的某些組件可以被實現為具有用於與匯流排通訊的介面(例如,連接器)的介面卡。作為替代地,可以使用諸如可程式化或非可程式化邏輯裝置或陣列、ASIC、嵌入式電腦、智慧卡等的組件將裝置或組件實現為嵌入式控制器。為了本揭示內容的目的,術語「匯流排」包括可以由兩個以上裝置共享的路徑以及點對點路徑。類似地,諸如「線」、「接腳」等的術語應被理解為是指佈線、一組佈線或任何其他合適的導體或一組導體。例如,匯流排可以包括一或多個串列鏈接,串列鏈接可以包括一或多個通道(lane),一個通道可以由一或多個差動訊號對組成,並且那些導體所攜帶的電的變化特性可以是稱作一條線上的訊號。另外,為了本揭示內容的目的,術語「處理器」表示能夠執行軟體的硬體組件。例如,處理器可以被實現為中央處理單元(CPU)、處理核心或任何其他合適類型的處理元件。一個CPU可以包括一或多個處理核心,而一個裝置可以包括一或多個CPU。
此外,儘管已經對於以特定順序執行的特定操作描述了一或多個示例過程,但是可以將許多修改應用於那些過程以得出本發明的許多替代實施例。例如,替代實施例可以包括使用少於所有揭示的操作的過程,使用附加操作的過程,以及組合、細分、重新佈置或以其他方式改變本文揭示的各個操作的過程。
類似地,在替代實施例中,在示例實施例中已經被描述為駐留在其他組件內的組件可以被不同地佈置。例如,在替代實施例中,上述駐留在動態調校單元中的至少一些組件可以不駐留在動態調校單元中。
實施例包括以下示例:
示例A1是一種處理器,其包括微架構特徵、DTU電路系統,和在該DTU電路系統中的禁用周期計數器。該禁用周期計數器是用以指示若該微架構特徵是禁用的,該處理器對於第一執行窗口執行程式是消耗了多少個周期。該DTU電路系統還包括啟用周期計數器,其用以指示若該微架構特徵是啟用的,該處理器對於第二執行窗口執行程式是消耗了多少個周期。該DTU電路系統還包括PEU電路系統,其用以基於該禁用周期計數器和該啟用周期計數器,自動地確定該處理器在相對於該第一執行窗口的該第二執行窗口中是否得到較差的效能。該處理器還包括評估表,該評估表包括對於所選位址的有用性狀態,(a)回應於確定該處理器在該微架構特徵是啟用時該第二執行窗口中相對於該微架構特徵是禁用的該第一執行窗口得到較差的效能,由該PEU電路系統更新該有用性狀態,以表示較差的效能,以及(b)在啟用該微架構特徵時至少迭代了兩個執行窗口後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較差的效能,由該PEU電路系統更新該有用性狀態,以表示已確認的不良狀態。該DTU電路系統還包括TIU電路系統,以回應於表示該已確認的不良狀態的該評估表中對於該所選位址的該有用性狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址禁用該微架構特徵。
示例A2是一種根據示例A1的處理器,其中該DTU電路系統中的至少一些駐留在該微架構特徵中。
示例A3是一種根據示例A1的處理器,其中回應於確定該處理器在啟用該微架構特徵的該第二執行窗口中得到較好的效能,該第二執行窗口相對於禁用該微架構特徵的該第一執行窗口,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示較好的效能。此外,在該微架構特徵啟用時至少兩個執行窗口的迭代之後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較好的效能,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示已確認的良好狀態。另外,回應於該評估表中對於該所選位址的該有用性狀態,其表示該已確認的良好狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址啟用該微架構特徵。示例A3還可以包括示例A2的特徵。
示例A4是一種根據示例A1的處理器,其中該DTU電路系統包括FSM,其用於控制針對對於該所選位址的該有用性狀態的更新,其中該FSM提供給該已確認的不良狀態、已確認的良好狀態和至少三個未確認的狀態。該未確認狀態包括中立狀態、可能的良好狀態和可能的不良狀態。此外,對於該所選位址的該有用性狀態是從該中立狀態開始的,並且對於該所選位址的該有用性狀態是回應於對該有用性狀態的連續更新而達到該已確認的不良狀態:(a)從該中立狀態變為該可能的不良狀態,並且(b)從該可能的不良狀態變為該已確認的不良狀態。示例A4還可以包括示例A2至A3中的任何一或多者的特徵。
示例A5是一種根據示例A1的處理器,其中每個執行窗口包括預定數量的退出指令。示例A5還可以包括示例A2至A4中的任何一或多者的特徵。
示例A6是一種根據示例A1的處理器,其中該DTU電路系統包括預定顯著臨限值,其中該PEU電路系統使用該預定顯著臨限值以確定該處理器在啟用該微架構特徵的該第二執行窗口中,是否得到顯著較差的效能,該第二執行窗口相對於禁用該微架構特徵的該第一執行窗口。示例A6還可以包括示例A2至A5中的任何一或多者的特徵。
示例A7是一種根據示例A1的處理器,其中該DTU電路系統包括預定參與臨限值,該PEU電路系統使用該預定參與臨限值以確定在該第二執行窗口期間是否在該所選位址處的指令被執行了至少臨限值次數。此外,該PEU電路系統是用以更新對於該所選位址的該有用性狀態,以表示只有在該第二執行窗口期間在該所選位址執行至少該臨限值次數時,啟用該微架構特徵時效能較差。示例A7還可以包括示例A2至A6中的任何一或多者的特徵。
示例A8是一種根據示例A7的處理器,其中該評估表包括對於該所選位址的參與計數器,該參與計數器回應於在該所選位址處的該指令的執行而遞增。此外,該PEU電路系統使用該參與計數器和該預定參與臨限值來確定在該所選位址處的該指令是否在該第二執行窗口期間執行了至少該臨限值次數。
示例B1是一種資料處理系統,其包括:RAM、耦接該RAM的處理器、在該處理器中的微架構特徵、在該處理器中的DTU電路系統、和在該DTU電路系統中的禁用周期計數器。該禁用周期計數器是用以指示若該微架構特徵是禁用,該處理器對於第一執行窗口執行程式是消耗了多少個周期。該DTU電路系統還包括啟用周期計數器,其用以指示若該微架構特徵是啟用的,該處理器對於第二執行窗口執行程式是消耗了多少個周期。該DTU電路系統還包括PEU電路系統,其用以基於該禁用周期計數器和該啟用周期計數器,自動地確定該處理器在相對於該第一執行窗口的該第二執行窗口中是否得到較差的效能。該處理器還包括評估表,其包括對於所選位址的有用性狀態。回應於確定該處理器在該微架構特徵是啟用時該第二執行窗口中相對於該微架構特徵是禁用的該第一執行窗口得到較差的效能,由該PEU電路系統更新該有用性狀態以表示較差的效能,以及在啟用該微架構特徵時至少迭代了兩個執行窗口後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較差的效能,由該PEU電路系統更新該有用性狀態以表示已確認的不良狀態。該DTU電路系統還包括TIU電路系統,其用以回應於表示該已確認的不良狀態的該評估表中對於該所選位址的該有用性狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址禁用該微架構特徵。
示例B2是一種根據示例B1的資料處理系統,其中該DTU電路系統中的至少一些駐留在該微架構特徵中。
示例B3是一種根據示例B1的資料處理系統,其中回應於確定該處理器在啟用該微架構特徵的該第二執行窗口中得到較好的效能,該第二執行窗口相對於禁用該微架構特徵的該第一執行窗口,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示較好的效能。此外,在該微架構特徵啟用時至少兩個執行窗口的迭代之後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較好的效能,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示已確認的良好狀態。此外,回應於該評估表中對於該所選位址的該有用性狀態,其表示該已確認的良好狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址啟用該微架構特徵。示例B3還可以包括示例B2的特徵。
示例B4是一種根據示例B1的資料處理系統,其中該DTU電路系統包括FSM,其用於控制針對對於該所選位址的該有用性狀態的更新,其中該FSM提供給該已確認的不良狀態、已確認的良好狀態和至少三個未確認的狀態。該未確認狀態包括中立狀態、可能的良好狀態和可能的不良狀態。對於該所選位址的該有用性狀態是從該中立狀態開始的,並且對於該所選位址的該有用性狀態是回應於對該有用性狀態的連續更新而達到該已確認的不良狀態:(a)從該中立狀態變為該可能的不良狀態,並且(b)從該可能的不良狀態變為該已確認的不良狀態。示例B4還可以包括示例B2至B3中的任何一或多者的特徵。
示例B5是一種根據示例B1的資料處理系統,其中每個執行窗口包括預定數量的退出指令。示例B5還可以包括示例B2至B4中的任何一或多者的特徵。
示例B6是一種根據示例B1的資料處理系統,其中該DTU電路系統包括預定顯著臨限值,其中該PEU電路系統使用該預定顯著臨限值以確定該處理器在啟用該微架構特徵的該第二執行窗口中,是否得到顯著較差的效能,該第二執行窗口相對於禁用該微架構特徵的該第一執行窗口。示例B6還可以包括示例B2至B5中的任何一或多者的特徵。
示例B7是一種根據示例B1的資料處理系統,其中該DTU電路系統包括預定參與臨限值,該PEU電路系統使用該預定參與臨限值以確定在該第二執行窗口期間是否在該所選位址處的指令被執行了至少臨限值次數,該PEU電路系統更新對於該所選位址的該有用性狀態,以表示只有在該第二執行窗口期間在該所選位址執行至少該臨限值次數時,啟用該微架構特徵時效能較差。示例B7還可以包括示例B2至B6中的任何一或多者的特徵。
示例B8是一種根據示例B7的資料處理系統,其中該評估表包括對於該所選位址的參與計數器,該參與計數器回應於在該所選位址處的該指令的執行而遞增。該PEU電路系統使用該參與計數器和該預定參與臨限值來確定在該所選位址處的該指令是否在該第二執行窗口期間執行了至少該臨限值次數。
示例C1是一種在包括微架構特徵和DTU電路系統的處理器上執行的方法。該方法包括執行用於以下的程式:(a)禁用該微架構特徵的第一執行窗口,以及(b)啟用該微架構特徵的第二執行窗口。該方法還包括:(a)由該DTU電路系統自動地確定該處理器在相對於該第一執行窗口的該第二執行窗口中是否得到較差的效能;(b)回應於確定該處理器在該第二執行窗口中得到較差的效能,更新該程式的所選位址的有用性狀態以表示較差的效能;(c)回應於在啟用該微架構特徵時多次連續確定該處理器得到較差的效能,自動地更新對於該所選位址的該有用性狀態以表示已確認的不良狀態;和(d)回應於對於該所選位址的該有用性狀態表示該已確認的不良狀態,自動地在該第二執行窗口之後的執行窗口對於該所選位址禁用該微架構特徵。
示例C2是一種根據示例C1的方法,其中由該DTU電路系統中的PEU電路系統執行自動地確定該處理器在相對於該第一執行窗口的該第二執行窗口中是否得到較差的效能的操作。此外,由該PEU電路系統執行自動地更新對於該所選位址的該有用性狀態以表示已確認的不良狀態的操作。此外,由該DTU電路系統的調校實現單元(TIU)電路系統來執行自動地在該第二執行窗口之後的執行窗口對於該所選位址禁用該微架構特徵的操作。
示例C3是一種根據示例C1的方法,還包括:(a)回應於確定該處理器在啟用該微架構特徵的該第二執行窗口中得到較好的效能,該第二執行窗口相對於禁用該微架構特徵的該第一執行窗口,更新對於該所選位址的該有用性狀態,以表示較好的效能;(b)該微架構特徵啟用時至少兩個執行窗口的迭代之後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較好的效能,更新對於該所選位址的該有用性狀態,以表示已確認的良好狀態;和(c)回應於該評估表中該所選位址的該有用性狀態,其表示該已確認的良好狀態,自動地為後續執行窗口對於該所選位址啟用該微架構特徵。示例C3還可以包括示例C2的特徵。
示例C4是一種根據示例C1的方法,還包括:(a)使用預定參與臨限值以自動地確定在該第二執行窗口期間是否在該所選位址處的指令被執行了至少臨限值次數;和(b)自動地更新對於該所選位址的該有用性狀態,以表示只有在該第二執行窗口期間在該所選位址執行至少該臨限值次數時,啟用該微架構特徵時效能較差。示例C4還可以包括示例C2至C3中的任何一或多者的特徵。
鑑於可以容易地從本文描述的示例實施例中得出的各種有用的排列,此詳細描述僅意圖是敘述性的,並且不應被解釋為限制涵蓋範圍。
10:資料處理系統 12:處理器 14:隨機存取記憶體(RAM) 16:非揮發性記憶體(NVS) 18:網路介面控制器(NIC) 20A:核心 20B:核心 22:時脈 24:算術邏輯單元(ALU) 26:通用暫存器 28:預取單元 52:作業系統(OS) 54:應用程式 29:特徵設定 30:動態調校單元 32:退出指令計數器 34:全域啟用標誌 36:當前週期計數器 38:先前週期計數器 31:刷新計數器 42:有用性有限狀態機(FSM) 40:調校參數 33:效能評估單元(PEU) 35:調校實現單元(TIU) 50:評估表 51:列/項目 110,112,114,116,118,120,130,140,142:方塊 39:週期差 1100:處理器 1102A-N:核心 1104A-N:快取單元 1106:共享快取單元 1108:專用邏輯 1110:系統代理器單元 1112:基於環的互連單元 1114:整合記憶體控制器單元 1116:匯流排控制器單元 1200:系統 1210,1215:處理器 1220:控制器集線器 1240:記憶體 1245:協同處理器 1250:輸入/輸出集線器(IOH) 1260:輸入/輸出裝置(I/O) 1290:圖形記憶體控制器集線器(GMCH) 1295:連接 1300:系統 1370:第一處理器 1380:第二處理器 1350:點對點互連 1338:協同處理器 1372,1382:整合記憶體控制器(IMC)單元/I/O控制邏輯(CL) 1376,1378:點對點(P-P)介面 1386,1388:P-P介面 1376,1394,1386,1398:點對點介面電路 1390:晶片組 1352,1354:P-P介面 1338:協同處理器 1339:高效能介面 1316:第一匯流排 1396:介面 1320:第二匯流排 1318:匯流排橋接器 1314:I/O裝置 1315:附加處理器 1322:鍵盤/滑鼠 1327:通訊裝置 1328:儲存單元 1330:碼和資料 1324:音訊I/O 1332,1334:記憶體 1400:系統 1414:I/O裝置 1415:傳統I/O裝置 1500:系統單晶片(SoC) 1510:應用處理器 1502:互連單元 1520:協同處理器 1530:靜態隨機存取記憶體(SRAM)單元 1532:直接記憶體存取(DMA)單元 1540:顯示單元
根據所附申請專利範圍,以下一或多個示例實施例的詳細描述以及相應的圖式,本發明的特徵和優點將變得顯而易見,於其中:
[圖1]是示出具有用於動態調校資料處理系統中的處理器的技術的資料處理系統的示例實施例的方塊圖。
[圖2]是用於動態調校圖1的處理器的示例過程的流程圖。
[圖3]是示出圖1的處理器中的有限狀態機的行為的方塊圖。
[圖4]是用於動態調校圖1處理器的操作的虛擬碼描述。
[圖5]是根據一或多個實施例的處理器的方塊圖,該處理器可以具有多於一個的核心,可以具有整合的記憶體控制器並且可以具有整合的圖形器。
[圖6]是根據一或多個實施例的系統的方塊圖。
[圖7和8]是根據一或多個實施例的更具體的示例性系統的方塊圖。
[圖9]是根據一或多個實施例的單晶片系統的方塊圖。
10:資料處理系統
12:處理器
14:隨機存取記憶體(RAM)
16:非揮發性記憶體(NVS)
18:網路介面控制器(NIC)
20A:核心
20B:核心
22:時脈
24:算術邏輯單元(ALU)
26:通用暫存器
28:預取單元
29:特徵設定
30:動態調校單元
31:刷新計數器
32:退出指令計數器
33:效能評估單元(PEU)
34:全域啟用標誌
35:調校實現單元(TIU)
36:當前週期計數器
38:先前週期計數器
39:週期差
40:調校參數
42:有用性有限狀態機(FSM)
50:評估表
51:列/項目
52:作業系統(OS)
54:應用程式

Claims (40)

  1. 一種處理器,包括:微架構特徵;動態調校單元(DTU)電路系統;在該DTU電路系統中的禁用周期計數器,該禁用周期計數器指示若該微架構特徵是禁用的,該處理器對於第一執行窗口執行程式是消耗了多少個周期;在該DTU電路系統中的啟用周期計數器,該啟用周期計數器指示若該微架構特徵是啟用的,該處理器對於第二執行窗口執行程式是消耗了多少個周期;和在該DTU電路系統中的效能評估單元(PEU)電路系統,該PEU電路系統用以基於該禁用周期計數器和該啟用周期計數器,自動地確定該處理器,相對於該第一執行窗口,在該第二執行窗口中是否得到較差的效能;和在該處理器中的評估表,其中該評估表包括對於所選位址的有用性狀態,(a)回應於確定該處理器,相對於該微架構特徵是禁用的該第一執行窗口,在該微架構特徵是啟用的該第二執行窗口中得到較差的效能,由該PEU電路系統更新該有用性狀態,以表示較差的效能,以及(b)在啟用該微架構特徵時至少迭代了兩個執行窗口後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較差的效能,由該PEU電路系統更新該有用性狀態,以表示已確認的不良狀態;和在該DTU電路系統中的調校實現單元(TIU)電路系 統,用以回應於表示該已確認的不良狀態的該評估表中對於該所選位址的該有用性狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址禁用該微架構特徵。
  2. 根據請求項1所述的處理器,其中該DTU電路系統中的至少一些駐留在該微架構特徵中。
  3. 根據請求項1所述的處理器,其中:回應於確定該處理器,相對於禁用該微架構特徵的該第一執行窗口,在啟用該微架構特徵的該第二執行窗口中得到較好的效能,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示較好的效能;在該微架構特徵啟用時至少兩個執行窗口的迭代之後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較好的效能,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示已確認的良好狀態;和回應於該評估表中對於該所選位址的該有用性狀態,其表示該已確認的良好狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址啟用該微架構特徵。
  4. 根據請求項1所述的處理器,其中:該DTU電路系統包括有限狀態機(FSM),其用於控制針對對於該所選位址的該有用性狀態的更新,其中該FSM提供給該已確認的不良狀態、已確認的良好狀態和至少三個未確認的狀態;該未確認狀態包括中立狀態、可能的良好狀態和可能的不良狀態;和 對於該所選位址的該有用性狀態是從該中立狀態開始的;和對於該所選位址的該有用性狀態是回應於對該有用性狀態的連續更新而達到該已確認的不良狀態:(a)從該中立狀態變為該可能的不良狀態,並且(b)從該可能的不良狀態變為該已確認的不良狀態。
  5. 根據請求項1所述的處理器,其中每個執行窗口包括預定數量的退出指令。
  6. 根據請求項1所述的處理器,其中該DTU電路系統包括預定顯著臨限值,其中該PEU電路系統使用該預定顯著臨限值以確定該處理器,相對於禁用該微架構特徵的該第一執行窗口,在啟用該微架構特徵的該第二執行窗口中,是否得到顯著較差的效能。
  7. 根據請求項1所述的處理器,其中該DTU電路系統包括預定參與臨限值,該PEU電路系統使用該預定參與臨限值以確定在該第二執行窗口期間是否在該所選位址處的指令被執行了至少臨限值次數,該PEU電路系統更新對於該所選位址的該有用性狀態,以表示只有在該第二執行窗口期間在該所選位址執行至少該臨限值次數時,啟用該微架構特徵時效能較差。
  8. 根據請求項7所述的處理器,其中該評估表包括對於該所選位址的參與計數器,該參與計數器回應於在該所選位址處的該指令的執行而遞增,該PEU電路系統使用該參與計數器和該預定參與臨限值來確定在該所選 位址處的該指令是否在該第二執行窗口期間執行了至少該臨限值次數。
  9. 一種資料處理系統,包括:隨機存取記憶體(RAM);耦接該RAM的處理器;在該處理器中的微架構特徵;在該處理器中的動態調校單元(DTU)電路系統;在該DTU電路系統中的禁用周期計數器,該禁用周期計數器指示若該微架構特徵是禁用,該處理器對於第一執行窗口執行程式是消耗了多少個周期;在該DTU電路系統中的啟用周期計數器,該啟用周期計數器指示若該微架構特徵是啟用的,該處理器對於第二執行窗口執行程式是消耗了多少個周期;在該DTU電路系統中的效能評估單元(PEU)電路系統,該PEU電路系統基於該禁用周期計數器和該啟用周期計數器,自動地確定該處理器,相對於該第一執行窗口,該第二執行窗口中是否得到較差的效能;和在該處理器中的評估表,其中該評估表包括對於所選位址的有用性狀態,(a)回應於確定若該處理器,相對於禁用該微架構特徵的該第一執行窗口,在啟用該微架構特徵的該第二執行窗口中得到較差的效能,由該PEU電路系統更新該有用性狀態以表示較差的效能,以及(b)在啟用該微架構特徵時至少迭代了兩個執行窗口後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較差的效能, 由該PEU電路系統更新該有用性狀態以表示已確認的不良狀態;和在該DTU電路系統中的調校實現單元(TIU)電路系統,用以回應於表示該已確認的不良狀態的該評估表中對於該所選位址的該有用性狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址禁用該微架構特徵。
  10. 根據請求項9所述的資料處理系統,其中該DTU電路系統中的至少一些駐留在該微架構特徵中。
  11. 根據請求項9所述的資料處理系統,其中:回應於確定該處理器,相對於禁用該微架構特徵的該第一執行窗口,在啟用該微架構特徵的該第二執行窗口中得到較好的效能,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示較好的效能;在該微架構特徵啟用時至少兩個執行窗口的迭代之後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較好的效能,由該PEU電路系統更新對於該所選位址的該有用性狀態,以表示已確認的良好狀態;和回應於該評估表中對於該所選位址的該有用性狀態,其表示該已確認的良好狀態,該TIU電路系統自動地為後續執行窗口對於該所選位址啟用該微架構特徵。
  12. 根據請求項9所述的資料處理系統,其中:該DTU電路系統包括有限狀態機(FSM),其用於控制 針對對於該所選位址的該有用性狀態的更新,其中該FSM提供給該已確認的不良狀態、已確認的良好狀態和至少三個未確認的狀態;該未確認狀態包括中立狀態、可能的良好狀態和可能的不良狀態;和對於該所選位址的該有用性狀態是從該中立狀態開始的;和對於該所選位址的該有用性狀態是回應於對該有用性狀態的連續更新而達到該已確認的不良狀態:(a)從該中立狀態變為該可能的不良狀態,並且(b)從該可能的不良狀態變為該已確認的不良狀態。
  13. 根據請求項9所述的資料處理系統,其中每個執行窗口包括預定數量的退出指令。
  14. 根據請求項9所述的資料處理系統,其中該DTU電路系統包括預定顯著臨限值,其中該PEU電路系統使用該預定顯著臨限值以確定該處理器,相對於禁用該微架構特徵的該第一執行窗口,在啟用該微架構特徵的該第二執行窗口中,是否得到顯著較差的效能。
  15. 根據請求項9所述的資料處理系統,其中該DTU電路系統包括預定參與臨限值,該PEU電路系統使用該預定參與臨限值以確定在該第二執行窗口期間是否在該所選位址處的指令被執行了至少臨限值次數,該PEU電路系統更新對於該所選位址的該有用性狀態,以表示只有在該第二執行窗口期間在該所選位址執行至少該臨限值 次數時,啟用該微架構特徵時效能較差。
  16. 根據請求項15所述的資料處理系統,其中該評估表包括對於該所選位址的參與計數器,該參與計數器回應於在該所選位址處的該指令的執行而遞增,該PEU電路系統使用該參與計數器和該預定參與臨限值來確定在該所選位址處的該指令是否在該第二執行窗口期間執行了至少該臨限值次數。
  17. 一種用於在資料處理系統實現的方法,包括:在包括微架構特徵和動態調校單元(DTU)電路系統的處理器上,執行用於以下的程式:(a)禁用該微架構特徵的第一執行窗口,以及(b)啟用該微架構特徵的第二執行窗口;由該DTU電路系統自動地確定該處理器,相對於該第一執行窗口,在該第二執行窗口中是否得到較差的效能;回應於確定該處理器在該第二執行窗口中得到較差的效能,更新該程式的所選位址的有用性狀態以表示較差的效能;回應於在啟用該微架構特徵時多次連續確定該處理器得到較差的效能,自動地更新對於該所選位址的該有用性狀態以表示已確認的不良狀態;和回應於對於該所選位址的該有用性狀態表示該已確認的不良狀態,自動地在該第二執行窗口之後的執行窗口對於該所選位址禁用該微架構特徵。
  18. 根據請求項17所述的方法,其中:由該DTU電路系統中的效能評估單元(PEU)電路系統執行自動地確定該處理器,相對於該第一執行窗口,在該第二執行窗口中是否得到較差的效能的操作;由該PEU電路系統執行自動地更新對於該所選位址的該有用性狀態以表示已確認的不良狀態的操作;和由該DTU電路系統的調校實現單元(TIU)電路系統來執行自動地在該第二執行窗口之後的執行窗口對於該所選位址禁用該微架構特徵的操作。
  19. 根據請求項17所述的方法,還包括:回應於確定該處理器,相對於禁用該微架構特徵的該第一執行窗口,在啟用該微架構特徵的該第二執行窗口中得到較好的效能,更新對於該所選位址的該有用性狀態,以表示較好的效能;在該微架構特徵啟用時至少兩個執行窗口的迭代之後,回應於連續多個確定該處理器在該微架構特徵啟用時得到較好的效能,更新對於該所選位址的該有用性狀態,以表示已確認的良好狀態;和回應於該所選位址的該有用性狀態,其表示該已確認的良好狀態,自動地為後續執行窗口對於該所選位址啟用該微架構特徵。
  20. 根據請求項17所述的方法,還包括:使用預定參與臨限值以自動地確定在該第二執行窗口期間是否在該所選位址處的指令被執行了至少臨限值次 數;和自動地更新對於該所選位址的該有用性狀態,以表示只有在該第二執行窗口期間在該所選位址執行至少該臨限值次數時,啟用該微架構特徵時效能較差。
  21. 一種處理器,包括:第一快取;耦接該第一快取的第二快取;執行算術操作的算術邏輯單元(ALU);耦接該ALU的電路,其中在該處理器已針對禁用微架構特徵的第一執行窗口和啟用微架構特徵的第二執行窗口執行工作負載後,該電路將:確定該處理器,相對於該第一執行窗口,在該第二執行窗口中是否得到較差的效能;和回應於確定該處理器在該第二執行窗口中得到較差的效能,將與指令相關的位址的狀態更新為不良最終狀態,其中當該位址的該狀態達到該不良最終狀態時,該處理器將禁用與該指令相關的該位址的該微架構特徵。
  22. 根據請求項21所述的處理器,其中該電路回應於至少兩個連續確定該處理器在啟用該微架構特徵時得到較差的效能,將與該指令關聯的該位址的該狀態更新為該不良最終狀態。
  23. 根據請求項21所述的處理器,其中該電路包括有限狀態機。
  24. 根據請求項21所述的處理器,還包括用 以儲存表的記憶體,該表包括複數個項目,其中該複數個項目的每個包括:位址欄位,用於儲存指令的位址的位址資訊;狀態欄位,用於儲存該指令的該位址的狀態;和計數器欄位,用於儲存與該指令關聯的參與計數。
  25. 根據請求項24所述的處理器,其中該電路週期性地至少重置該表的該複數個項目的該狀態欄位。
  26. 根據請求項24所述的處理器,其中該電路用以將用於該指令的該位址的該狀態初始化為中立狀態。
  27. 根據請求項21所述的處理器,其中該電路將與該指令關聯的該位址的該狀態控制為以下狀態之一:良好最終狀態、良好狀態、中立狀態、不良狀態和不良最終狀態。
  28. 根據請求項21所述的處理器,還包括退出指令計數器,以維持退出指令的計數。
  29. 根據請求項21至28中任一項所述的處理器,還包括:當前週期計數器,用於維持該第一執行窗口的指令的第一計數;和先前週期計數器,用於維持該第二執行窗口的指令的第二計數。
  30. 根據請求項29所述的處理器,其中該電 路使用指令的該第一計數和指令的該第二計數來確定較差的效能。
  31. 一種用於在資料處理系統實現的方法,包括:在處理器的電路中,確定該處理器,相對於第一執行窗口,在第二執行窗口中是否得到較差的效能,其中該處理器的微架構特徵對於該第一執行窗口是禁用的並且對於該第二執行窗口是啟用的;回應於確定該處理器在該第二執行窗口中得到較差的效能,將與指令關聯的位址的狀態更新為不良最終狀態;和當該位址的該狀態達到該不良最終狀態時,禁用與該指令關聯的該位址的該微架構特徵。
  32. 根據請求項31所述的方法,還包括回應於至少兩個連續確定該處理器在啟用該微架構特徵時得到較差的效能,將與該指令關聯的該位址的該狀態更新為該不良最終狀態。
  33. 根據請求項31或32所述的方法,還包括將表儲存在記憶體中,該表包括複數個項目,其中該複數個項目的每個包括:位址欄位,用於儲存指令的位址的位址資訊;狀態欄位,用於儲存該指令的該位址的狀態;和計數器欄位,用於儲存與該指令關聯的參與計數。
  34. 根據請求項33所述的方法,還包括週期 性地至少重置該表的該複數個項目的該狀態欄位。
  35. 根據請求項33所述的方法,還包括將用於該指令的該位址的該狀態初始化為中立狀態。
  36. 一種包括至少一個指令的非暫時性機器可讀媒體,當該等指令在由處理器執行時,使該處理器:確定該處理器,相對於第一執行窗口,在第二執行窗口中是否得到較差的效能,其中該處理器的微架構特徵對於該第一執行窗口是禁用的並且對於該第二執行窗口是啟用的;回應於確定該處理器在該第二執行窗口中得到較差的效能,將與指令關聯的位址的狀態更新為不良最終狀態;和當該位址的該狀態達到該不良最終狀態時,禁用與該指令關聯的該位址的該微架構特徵。
  37. 根據請求項36所述的非暫時性機器可讀媒體,其中該至少一個指令在由該處理器執行時,使該處理器,回應於至少兩個連續確定該處理器在啟用該微架構特徵時得到較差的效能,將與該指令關聯的該位址的該狀態更新為該不良最終狀態。
  38. 根據請求項36或37所述的非暫時性機器可讀媒體,其中該至少一個指令在由該處理器執行時,使該處理器,將表儲存在記憶體中,該表包括複數個項目,其中該複數個項目的每個包括:位址欄位,用於儲存指令的位址的位址資訊; 狀態欄位,用於儲存該指令的該位址的狀態;和計數器欄位,用於儲存與該指令關聯的參與計數。
  39. 根據請求項38所述的非暫時性機器可讀媒體,其中該至少一個指令在由該處理器執行時,使該處理器,週期性地至少重置該表的該複數個項目的該狀態欄位。
  40. 根據請求項38所述的非暫時性機器可讀媒體,其中該至少一個指令在由該處理器執行時,使該處理器,將用於該指令的該位址的該狀態初始化為中立狀態。
TW109120807A 2019-09-19 2020-06-19 用於動態調校處理器特徵的技術 TWI831986B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/575,535 2019-09-19
US16/575,535 US10915421B1 (en) 2019-09-19 2019-09-19 Technology for dynamically tuning processor features

Publications (2)

Publication Number Publication Date
TW202113556A TW202113556A (zh) 2021-04-01
TWI831986B true TWI831986B (zh) 2024-02-11

Family

ID=70802612

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109120807A TWI831986B (zh) 2019-09-19 2020-06-19 用於動態調校處理器特徵的技術

Country Status (5)

Country Link
US (3) US10915421B1 (zh)
EP (2) EP3796177B1 (zh)
JP (3) JP2021047844A (zh)
CN (1) CN112527477A (zh)
TW (1) TWI831986B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10915421B1 (en) * 2019-09-19 2021-02-09 Intel Corporation Technology for dynamically tuning processor features
CN114265593B (zh) * 2021-12-09 2022-11-22 北京奕斯伟计算技术股份有限公司 指令调度方法、装置、设备及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200905470A (en) * 2007-03-28 2009-02-01 Ibm Workload management in virtualized data processing environment
TW201346518A (zh) * 2011-12-13 2013-11-16 Intel Corp 包括在功率域中能量消耗的動態控制之能量效率及能量節約的方法、設備及系統
US20170090955A1 (en) * 2015-09-24 2017-03-30 Mediatek Inc. Dynamic Runtime Data Collection and Performance Tuning
US20170161089A1 (en) * 2015-12-03 2017-06-08 International Business Machines Corporation Application-level processor parameter management

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273310A1 (en) * 2004-06-03 2005-12-08 Newburn Chris J Enhancements to performance monitoring architecture for critical path-based analysis
US8079031B2 (en) 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US8321362B2 (en) * 2009-12-22 2012-11-27 Intel Corporation Methods and apparatus to dynamically optimize platforms
US9558006B2 (en) * 2012-12-20 2017-01-31 Intel Corporation Continuous automatic tuning of code regions
EP3049915B1 (en) 2014-12-14 2020-02-12 VIA Alliance Semiconductor Co., Ltd. Prefetching with level of aggressiveness based on effectiveness by memory access type
US9645935B2 (en) 2015-01-13 2017-05-09 International Business Machines Corporation Intelligent bandwidth shifting mechanism
US10891071B2 (en) * 2018-05-15 2021-01-12 Nxp Usa, Inc. Hardware, software and algorithm to precisely predict performance of SoC when a processor and other masters access single-port memory simultaneously
US10915421B1 (en) * 2019-09-19 2021-02-09 Intel Corporation Technology for dynamically tuning processor features

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200905470A (en) * 2007-03-28 2009-02-01 Ibm Workload management in virtualized data processing environment
TW201346518A (zh) * 2011-12-13 2013-11-16 Intel Corp 包括在功率域中能量消耗的動態控制之能量效率及能量節約的方法、設備及系統
US20170090955A1 (en) * 2015-09-24 2017-03-30 Mediatek Inc. Dynamic Runtime Data Collection and Performance Tuning
US20170161089A1 (en) * 2015-12-03 2017-06-08 International Business Machines Corporation Application-level processor parameter management

Also Published As

Publication number Publication date
JP2022172197A (ja) 2022-11-15
EP4075280A1 (en) 2022-10-19
US20210109839A1 (en) 2021-04-15
US11256599B2 (en) 2022-02-22
CN112527477A (zh) 2021-03-19
JP2022153488A (ja) 2022-10-12
US11656971B2 (en) 2023-05-23
EP3796177A1 (en) 2021-03-24
US10915421B1 (en) 2021-02-09
JP2021047844A (ja) 2021-03-25
US20220206925A1 (en) 2022-06-30
TW202113556A (zh) 2021-04-01
EP3796177B1 (en) 2023-08-09

Similar Documents

Publication Publication Date Title
US10884957B2 (en) Pipeline circuit architecture to provide in-memory computation functionality
US11061742B2 (en) System, apparatus and method for barrier synchronization in a multi-threaded processor
US10678541B2 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
US11656971B2 (en) Technology for dynamically tuning processor features
US11360809B2 (en) Multithreaded processor core with hardware-assisted task scheduling
US10635337B2 (en) Dynamic configuration of compressed virtual memory
US10853283B1 (en) Integrated circuits for generating input/output latency performance metrics using real-time clock (RTC) read measurement module
US20170249000A1 (en) Processors, methods, and systems to adjust maximum clock frequencies based on instruction type
KR20230041593A (ko) 프로그래밍가능한 인터리브 입도를 갖는 cxl 타입-2 디바이스들을 위한 확장가능한 주소 디코딩 체계
US20190205061A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US20210089321A1 (en) Instruction processing apparatus, processor, and processing method for instruction ordering
US20140013148A1 (en) Barrier synchronization method, barrier synchronization apparatus and arithmetic processing unit
US11157329B2 (en) Technology for managing per-core performance states
US20230367492A1 (en) Flexible provisioning of coherent memory address decoders in hardware
US11899551B1 (en) On-chip software-based activity monitor to configure throttling at a hardware-based activity monitor
US20240004808A1 (en) Optimized prioritization of memory accesses
US10613867B1 (en) Suppressing pipeline redirection indications
US10579414B2 (en) Misprediction-triggered local history-based branch prediction
US20210200580A1 (en) Performance monitoring in heterogeneous systems
US20200210172A1 (en) Dynamic configuration of a data flow array for processing data flow array instructions
US20190101965A1 (en) Os visibility into system states that cause delays and technology to achieve deterministic latency
US20180349137A1 (en) Reconfiguring a processor without a system reset
CN115374732A (zh) 针对低温多芯片计算系统的模拟方法及其系统