TW202223660A - 監控事件的性能成本 - Google Patents
監控事件的性能成本 Download PDFInfo
- Publication number
- TW202223660A TW202223660A TW110130687A TW110130687A TW202223660A TW 202223660 A TW202223660 A TW 202223660A TW 110130687 A TW110130687 A TW 110130687A TW 110130687 A TW110130687 A TW 110130687A TW 202223660 A TW202223660 A TW 202223660A
- Authority
- TW
- Taiwan
- Prior art keywords
- event
- sampling
- counter
- pebs
- processor
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
- G06F11/3072—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
Abstract
揭示用來監控處理器性能,包含事件的成本的實施例。在一實施例中,處理器包含第一計數器、第二計數器、處理程序電路、及致能電路。該第一計數器係用以計算該處理器中事件之發生的數量和溢位於當發生的計數到達指定值時。該第二計數器係用以測量該事件的性能成本。該處理程序電路係用以產生事件取樣記錄。該記錄包含至少一個值以反映該性能成本。該致能電路係用以致使該處理程序電路能夠產生該記錄。
Description
本文中所述的實施例一般來說係有關監控電腦處理器的性能。特別是,所述的實施例通常而言係有關監控事件的性能成本。
處理器的性能監控(例如,使用諸如來自英特爾(Intel)公司之基於精準事件的取樣(PEBS)技術)可被使用於表徵、除錯(debugging)、調試(tuning)軟體及程式碼。然而,剖析(profiling)資料量可能很龐大。高性能處理器竭盡所能地使它們的執行管線保持忙碌,應用諸如大視窗亂序執行、預測性推測、以及硬體預取(prefetching)等技術。這些技術使軟體調試工作複雜而且導致針對常見監控事件之變化的成本。
及
在下面的說明中,許多細節被提出。然而,對習於此技藝者而言將顯而易知的是,實施例可以在沒有這些特定細節的情況下被實行。在其他例子中,眾所周知的電路、結構及技術未被詳細地顯示出,以避免模糊了此說明的了解。
此說明書中對「一個實施例」、「一實施例」、「一範例實施例」等等的參考指示該所述實施例可包含特殊的特徵、結構、或特性,但是每一個實施例不需要皆包含該特殊的特徵、結構、或特性。而且,此等語詞不需要指的是同一個實施例。此外,當一特殊的特徵、結構、或特性被說明而相關於一實施例時,被認為是使該特殊的特徵、結構、或特性與其他實施例相關聯而不管是否被明確地說明出係在習於此技藝者的知識範圍之內。
如同在此說明書和申請專利範圍中所使用者而且除非另有說明,用來說明元件之序數連接詞「第一」、「第二」、「第三」等等的使用僅指示一元件的特殊例子或者相似元件的不同例子正被提到,而且不想要隱含如此所說明之該等元件必須按照特殊的順序,在時間上、在空時間上、或排序上、或者以任何其他形式。又,如同在本發明之實施例的說明中所使用者,項之間的「/」字符可以意謂著所述者可包含或者第一項及/或第二項(及/或任何其他額外的項)。
又,用語「位元(bit)」、「旗標(flag)」、「欄位(field)」、「入口(entry)」、「指標(indicator)」等等可以被用來描述暫存器、表、資料庫、或其他資料結構中之儲存位置的任何類型或內容,不論它們是用硬體或軟體來予以施行的,但並非意欲將本發明的實施例限定於任何特別類型之儲存位置或者任何特別之儲存位置內的位元數量或其他元件。用語「清除(clear)」可以被用來指示儲存或者致使邏輯值0要被儲存在儲存位置中,以及用語「設定(set)」可以被用來指示儲存或者致使邏輯值1、全1碼、或某些其他指定值要被儲存在儲存位置中;然而,這些用語並非意欲將本發明的實施例限定於任何特別的邏輯常規,因為任何的邏輯常規可以被使用於本發明的實施例之內。
本發明的實施例提供針對所監控之事件的性能成本(例如,時間、延遲性(latency))資訊。在實施例中,現有的性能監控架構(例如,來自英特爾公司(Intel Corporation)之PEBS、來自AMD公司之基於指令取樣(IBS)、來自ARM之統計剖析擴充(Statistical Profiling Extension))可以藉由使用記憶體緩衝區(例如,在PEBS中)或處理器暫存器(例如,在IBS中)來予以擴充,以便除了針對監控事件所收集的資訊(例如,指令指標、資料位址)以外還提供時間。為了便於以及提供範例,此說明書在實施例的說明中可能使用「PEBS」及/或「定時的PEBS」;然而,實施例不被限定於PEBS或者使用時間來測量性能成本。
例如,針對MEM_LOAD_RETIRED.L3_ HIT,時間將會是由命中於第三級(L3)快取中之負載(load)所屬之指令所引進的退出推出(retirement push-out)。實施例可以讓軟體能夠基於其對整體性能的影響來將事件的例子分類。例如,為依序存取模式(sequential access pattern)的部分之命中L3-快取的負載比為隨機存取模式(random access pattern)的部分之負載更不可能影響性能。
實施例可以在數次之經過的退出循環中提供精準的性能成本,其可能優於提供一些bucketing(例如,每一載入資料-來源或分支(branch)錯誤預測類型)的方式,bucketing可間接指向潛在成本的範圍。
實施例可以以指令級粒度來提供成本,例如,事件為其而觸發之特別指令的性能成本,其可能優於可以為一序列的指令如此做而沒有針對某些編譯器所產生之碼採取分支(有時稱為超級區塊(hyper-block),其可以是相當長序列的指令)的方式。
實施例可以提供由上而下導向的成本,例如,藉由將性能成本資訊添加於通用(generic)事件(例如,INST_RETIRE.ANY,BR_MISP_RETIRED.ALL_BRANCHES, ASSISTS.ANY),其可能優於具有由下而上的形式中少量之精準事件的方式,其可能限制涵蓋一系列性能的能力。
實施例可以提供取樣而沒有盲點(bling spot),因為時間成本可以為任何其出現提供任何的精準事件,其可能優於為監控每一次時間而預先選擇某些交易(transaction)的方式。
實施例可以被用來使軟體堆疊最佳化以及將軟體調到硬體,例如藉由測量指令快取未命中的性能成本,使得指令快取未命中的成本可以藉由插入軟體預提取(prefetch)指令而被緩解。
基於精準和不精準事件的取樣 (PEBS 和 NPEBS)
在一些實施例中所使用之性能監控能力可以被建立於三組的事件計數器:固定功能計數器、通用計數器、以及定時PEBS計數器。在實施例中,三個固定功能計數器可以被定義以及施行來計算指令退出、參考時脈、以及核心時脈的數量。通用計數器和定時PEBS計數器可以如下所述地被定義以及施行。在實施例中,任意數量的通用計數器可以各自與對應的定時PEBS計數器相關聯。在實施例中,任意數量的定時PEBS計數器可供使用於與監控事件(例如,Load STLB命中)的相關使用,該等監控事件依據先前的PEBS架構可能未被定義及/或可選擇作為PEBS事件。
如同本文中所使用的,精準事件為鏈結於指令追蹤中之特定指令或微操作而且發生於當該指令或微操作退出時的性能事件。此等精準事件可包含但不限於指令退出、分支指令退出、快取參考、或者快取未命中,僅舉幾個例子。另一方面,不精準事件為不是未鏈結到指令追蹤中之特定指令或微操作就是可推測性地發生於甚至當該指令或微操作並未退出時的性能事件。舉例說明,不精準事件可包含但不限於參考時脈刻點、核心時脈刻點、當中斷被遮蔽時的循環,僅舉幾個例子。
在一些實施例中,處理裝置的性能被監控來管理事件以及測量它們對性能的影響。在一些實施例中,處理裝置以利用處理裝置上的機制而沒有介入性能監控中斷(performance monitoring interrupt(PMI))之非侵入的方式來追蹤精準事件和不精準事件,以及儲存和該等事件有關的架構和非架構元資料(metadata)。
處理裝置的操作可以包含監控系統性能之複數個事件的出現。事件可以包含處理器中的任何操作、出現、或動作。在實施例中,事件為對處理裝置中之給定指令及資料流(data stream)的回應。事件可以與包含處理裝置之狀態資訊的架構元資料相關聯,其包含但不限於指令指標、時間戳記計數器、暫存器狀態。事件也可以是和性能成本一起被標記的通用事件(例如,INST_RETIRED)。
在實施例中,性能計數器係配置成計算一或多種類型之事件的數量。在計數器被增量或減量的同時,軟體每隔一段選擇的時間讀取計數器以確定間隔之間已經被計算過的事件數。計數器可以用多種方式來予以施行。在實施例中,計數器從正的起始值開始減量,且溢位(overflow)於當計數到達0之時。在其他實施例中,計數器開始於0值,而且使發生計數(the count of occurrences)增量直到其溢位於指定值時。在其他實施例中,計數器開始於負值,而且增量直到其溢位於到達0值之時。當計數器溢位時,性能計數器可產生性能記錄或性能監控中斷(performance monitoring interrupt(PMI))。為了觸發溢位,計數器可以被預先設定於一可致使該計數器溢位於特定數量的事件已經被計數之後的模數(modulus)值,其不是產生PMI就是產生性能記錄,諸如基於精準事件的取樣(PEBS)記錄。
性能記錄,如同被進一步說明於下者,可包含將會幫助排定事件的危急程度(criticality)對性能之優先順序的性能成本或懲罰指標(penalty metric)。在實施例中,成本可被測量於由事件所引起(induced)的退出推出時間。
實施例可包含新的(例如,未被定義及/或可選為依據先前PEBS架構的PEBS事件)精準事件(例如,針對STLB-命中退出載入/儲存,BR_MISP_RETIRED.PLUS_ ONE(在分支誤預測之後發出(fires on)第一指令)),及/或將事件(MACHINE_CLEARS)升級至精準。
追蹤精準事件
有幾種類型的機制用以監控和管理各式各樣的事件。一種類型為PEBS機制,其作用來監控和管理精準事件。精準事件為鏈結於指令追蹤中之特定指令或微操作而且發生於當該指令或微操作退出時的性能事件。此等精準事件可包含但不限於指令退出、分支指令退出、快取參考、或者快取未命中,僅舉幾個例子。PEBS機制可包含幾個組件,諸如,事件選擇(ES)控制、性能計數器、PEBS致能電路和PEBS處理(handler)電路。ES控制可被編程有事件識別符,其致使對應於ES控制的性能計數器開始追蹤(例如,計算發生)對應於事件識別符的編程事件。
實施例也可包含處理裝置的PEBS致能電路,其控制於當PEBS記錄被產生之時。當PEBS致能電路被啟動時,一旦對應於PEBS致能電路的性能計數器溢位,PEBS記錄就被儲存在PEBS處理程序電路的記憶體中。在實施例中,用戶(例如,軟體)可以啟動或設定PEBS致能電路。PEBS記錄可包含當性能計數器溢位時系統之狀態的架構元資料。此種架構元資料可包含但不限於指令指標(IP)、時間戳記計數器(TSC)和暫存器狀態。像這樣,PEBS記錄不僅讓指令追蹤中之特定指令的位置能夠被準確地成型(profiled),而且還提供額外的資訊以供軟體最佳化、硬體最佳化、性能調試、等等使用。
PEBS記錄也可包含可以測量事件之性能成本的微架構資訊。例如,在MEM_LOAD_RETIRED.L3_ MISS(L3快取未命中時要求載入存取)的情況中,PEBS記錄可包含將會幫助排定未命中於不同IP處的危急程度之優先順序的性能成本或懲罰指標。
追蹤不精準事件
實施例進一步利用PEBS機制來追蹤和管理處理裝置的不精準事件。不精準事件為不是未鏈結到指令追蹤中之特定指令或微操作就是可推測性地發生於甚至當該指令或微操作並未退出時的性能事件。舉例說明,不精準事件可包含但不限於參考時脈刻點、核心時脈刻點、當中斷被遮蔽時的循環、等等。
一些實施例引進處理裝置之基於不精準事件的取樣(NPEBS)處理程序電路,其讓NPEBS處理程序電路能夠產生用於編程後之不精準事件的NPEBS記錄,以及將用於不精準事件之此NPEBS記錄儲存在PEBS處理程序電路的PEBS記憶體緩衝區中。
在實施例中,NPEBS記錄將相同的格式共享作為PEBS記錄。在其他實施例中,NPEBS記錄係與PEBS記錄不同地格式化。
PEBS處理程序電路和NPEBS處理程序電路可以共享一些電路。NPEBS處理程序電路可以使用PEBS處理程序電路的資源,與PEBS處理程序電路僅在名稱上不同。在一範例中,當ES控制係編程有不精準事件識別符時,與ES控制及PEBS致能電路相關聯的性能計數器追蹤編程後的不精準事件。在實施例中,NPEBS處理程序電路係耦接至PEBS致能電路,其係耦接至性能計數器而使得當性能計數器溢位時,PEBS致能電路致使NPEBS處理程序電路能夠產生用於不精準事件的NPEBS記錄。因此,與不精準事件相關聯的架構元資料在不需要PMI的情況下被取得(captured)。
在實施例中,NPEBS處理程序電路控制用於不精準事件的NPEBS記錄之產生的時序。在實施例中,用於不精準事件的NPEBS記錄係立即產生於追蹤不精準事件之性能計數器溢位的發生之時。在其他實施例中,用於不精準事件的NPEBS記錄係立即產生於追蹤不精準事件之性能計數器溢位的發生之後(例如,當下一個後續指令的執行時)。在實施例中,NPEBS處理程序電路將用於不精準事件的NPEBS記錄儲存在NPEBS處理程序電路的記憶體儲存器中。
一些實施例包含小型電路(compact circuit),且因此在沒有招致成本及功率耗損的明顯增加下被施行作為寬廣範圍之處理單元的不可缺部分。一些實施例為可編程電路邏輯而且被用來追蹤及管理同一個電路邏輯上之不同類型的不精準事件。NPEBS處理程序電路也可擴展來追蹤多個處理單元。NPEBS處理程序電路可由運行於同一個處理器上之複數個應用程式所共享以及由操作系統(OS)或虛擬機器所管理作為共享的資源。
產生和儲存 PEBS 及 NPEBS 記錄的代表性處理器
圖 1為依據實施例,繪示出產生和儲存PEBS及NPEBS記錄之處理器的方塊圖。
圖 1中所示之方塊的任一者或全部可以代表處理器之性能管理單元(PMU)中的電路及/或邏輯。
在
圖 1中,處理器
102(其可相當於
圖 12中的處理器1202,或此圖形中所示之任何其他處理器/核心)包含NPEBS處理程序電路
106以及具有一或多個記憶體儲存器
110a到
110n(其可被施行作為諸如緩衝區的實體記憶體儲存器)的PEBS處理程序電路
108。PEBS處理程序電路
108也可包含如上所述的性能監控中斷(PMI)組件
112。除此之外,處理器
102可包含對應於一或多個通用性能計數器
116a到
116n且進一步對應於一或多個PEBS致能電路
118a到
118n(其細節係說明於上)的一或多個事件選擇(ES)控制
114a到
114n。在一些實作中,PEBS致能電路
118a到
118n可位於單一控制暫存器(例如,機器特定的暫存器或MSR)中。
除此之外,在
圖 1中所示的實施例中,使用固定功能計數器
160a到
160c來應用PEBS、NPEBS、以及退出之指令的精準分配(PDIR)操作。在實施例中,三個固定功能計數器
160a到
160c來被定義及施行來計算退出之指令、參考時脈、及核心時脈的數量。然而,將領會到本發明的基本原則並不限於任何特別數量的固定功能計數器或任何特別的固定功能計數器實作。
如上所述,處理器
102可執行一串流的指令,其係內嵌有可以被放置在匯流排/互連結構
104上的事件標記。一段指令的執行可組成一或多個不精準事件。不精準事件為不是未鏈結到指令追蹤中之特定指令或微操作就是可推測性地發生於甚至當該指令或微操作並未退出時的性能事件。此等不精準事件可包含但不限於參考時脈、核心時脈及循環,僅舉幾個例子。在實施例,不精準事件係由處理器
102所產生。在實施例中,不精準事件係由處理器
102所產生。在實施例中,不精準事件係產生於處理器
102之外並且經由匯流排/互連結構
104而被通訊連絡於該處理器。
在實施例中,在
圖 1中所示的事件選擇(ES)控制
150a到
150c實施類似於上面所述的事件選擇(ES)控制
114a到
114c但是對應於固定功能性能計數器
160a到
160c且進一步對應於與該等固定功能計數器
160a到
160c相關聯的PEBS致能電路
170a到
170c。在實施例中,PEBS致能電路
118a到
118n和
170a到
170c係位於單一控制暫存器中。
例如,
圖 8繪示代表性PEBS致能機器特定的暫存器
800,簡稱為PEBS致能MSR
800,其中,位元0到3係分別與四個通用計數器(GPctr0到GPctr 3)相關聯,且位元32到34係分別與固定功能性能計數器(FxCtr0到FxCtr 2)相關聯。在一個實施例中,位元位置0到3之任一者中的位元值1致能用於(N)PEBS之相應的通用計數器,且位元位置32到34之任一者中的位元值1致能用於(N)PEBS之相應的固定功能計數器。當然,用以致能(N)PEBS之特別的位元不和本發明的基本原則有關。例如,在一替代實作中,位元值0被用來表示相應的計數器被致能用於(N)PEBS。
在一個實施例中,ES控制
150a到
150c的編程致使對應於經編程之ES控制的性能計數器
160a到
160c追蹤特別之經編程的不精準/精準事件的發生。在一些實施例中,未被定義為精準事件的任何事件被考慮為不精準事件。在一個實施例中,ES控制
150a到
150c被執行應用程式所編程。在另一實施例中,用戶以不精準/精準事件識別符來編程ES控制
150a到
150c。
當以事件識別符來編程ES控制
150a到
150c時,對應於ES控制
150a到
150c的性能計數器
160a到
160c在各個編程事件的發生之後立即被增量或減量。對應於ES控制
150a到
150c及固定功能性能計數器
160a到
160c的PEBS致能電路
170a到
170c可以被設定(例如,被啟動、旗標設定、位元設定為1等等),以便在固定功能性能計數器
160a到
160c的溢位之後立即產生PEBS記錄,或者如果在固定功能性能計數器
160a到
160c到達0值之後,計數器立即被減量。在一個實施例中,
圖 8中所繪示PEBS致能位元被設定來致使PEBS處理程序電路
108能夠在正在計算事件數量之固定功能性能計數器
160a到
160c的溢位或0值之後立即產生PEBS記錄。如同上面所討論的,PEBS記錄包含系統當固定功能性能計數器
160a到
160c的溢位或0值時之狀態的架構元資料。架構元資料可包含但不限於,例如IP、TSC、或暫存器狀態。
用於固定功能計數器的代表性控制暫存器
圖 9繪示使用於固定計數器之ES控制的替代MSR布局。在此實施例中,事件選擇控制
150a到
150c的布局被施行於
圖 9中所示的組合MSR。因為它們是固定的計數器,所以沒有要被編程的事件而且甚至沒有對於每一個計數器而言不同的MSR(亦即,因為每一個計數器總是僅計算一件事情,所以沒有事件選擇或單元遮罩)。PEBS致能電路
910係顯示有三個固定計數器(IA32_FIXED_CTR0、IA32_FIXED_CTR1、和IA32_FIXED_CTR2)。在一個實施例中,ENABLE為與每一個計數器相關聯的2位元值,其要被設定為0(失能)、1(OS控制)、2(用戶控制)、及3(於所有ring levels的控制)等值。在此實施例中,由於其它邏輯中的部分邏輯需要被編程(諸如,ring level遮罩和PMI致能)而有與每一個計數器相關聯的有限控制。
在一個實施例中,NPEBS處理程序電路
106被耦接至PEBS致能電路
170a到
170c,使得當固定功能性能計數器
160a到
160c的溢位或到達0值時,NPEBS處理程序電路
106致使PEBS致能電路
170a到
170c產生針對該事件的PEBS記錄。在一些實施例中,NPEBS處理程序電路106控制針對該事件之PEBS記錄產生的時序。在一些實施例中,NPEBS處理程序電路
106控制針對該事件之PEBS記錄產生的時序。例如,在一個實施例中,NPEBS處理程序電路
106致使PEBS致能電路
170a到
170c在性能計數器
160a到
160c之溢位或0值的發生時立即產生針對該事件的PEBS記錄,追蹤和計算編程事件的數量。
在另一個實施例中,NPEBS處理程序電路
106致使PEBS致能電路
170a到
170c在固定功能性能計數器
160a到
160c之溢位或0值的發生之後立即產生針對該事件的PEBS記錄,追蹤和計算編程事件的數量。在此實施例中,PEBS記錄係產生於下一個指令退出之後(亦即,在指令追蹤中下一個指令完成觸發固定功能性能計數器
160a到
160c而溢位或到達0值之後)。在一個實施例中,為PEBS處理程序電路
108所產生的PEBS記錄被儲存在PEBS處理程序電路
108的記憶體儲存器
110中。因此,與該事件相關聯的架構元資料可以在不利用PMI的情況下被取得。
在一個實施例中,PMI組件
112收集在PEBS處理程序電路
108之記憶體儲存器
110a到
110n中所儲存的PEBS記錄。PMI組件
112可以立即收集記憶體儲存器
110a到
110n中所儲存的PEBS記錄。在另一個實施例中,PMI組件
112延遲收集記憶體儲存器
110a到
110n中所儲存的PEBS記錄一次。介面可被設置作為MSR。
將PEBS/NPEBS/PDIR應用於固定功能計數器
160a到
160c提供與將那些特徵添加到通用計數器
116a到
116n類似的利益,但是允許為其他活動使用通用計數器的自由度。本發明之實施例的這些和其他利益以及額外特徵被討論於下。
用以產生和儲存 PEBS 記錄的代表性過程
圖 2繪示產生及儲存PEBS記錄於記憶體緩衝區中,以及將記憶體緩衝區儲存至PEBS追蹤檔案之過程的實施例。在開始之後,於
202,PMU計數器係設定為 -N。開始於負值,此實施例中之PMU計數器係要被增量於每一次PEBS記錄被產生之時,直到其到達零(0)為止。在一替代實施例中,未顯示出,PMU計數器係設定為+N,而且被減量於每一次PEBS記錄被產生之時。在
204,N個PEBS記錄被產生並且被儲存於PEBS記憶體緩衝區中。在
206,N個PEBS記錄被儲存於PEBS追蹤檔案中。此步驟也被繪示為
210,其顯示N個PEBS記錄被儲存於PEBS追蹤檔案
212中。在
208,PEBS追蹤檔案被後處理。該過程結束於該後處理之後。
圖 3繪示編程PEBS處理程序電路以監控處理器性能並產生要被儲存在PEBS記憶體緩衝區中,而後被儲存在PEBS追蹤檔案中的PEBS記錄之過程的實施例。在開始之後,於
302,PMU計數器被編程來計算諸如BR_INST_RETIRED和NEAR_CALL_PS事件之函式呼叫(function call)的數量,而且在N個呼叫之後溢位。在
304,PEBS處理程序電路被編程而在每一個溢位之後產生PEBS記錄,而PEBS記錄係配置成含有包含處理器之狀態資訊的架構元資料,處理器之狀態資訊包含但不限於指令指標、時間戳記計數器、和暫存器狀態、以及性能成本。由PEBS所監控而且被儲存在PEBS資料記錄中之處理器資訊的配置係繪示於
圖 6、
圖 8、和
圖 9中,並且被討論於下。在
306,於PEBS記憶體已經被填滿之後,PEBS記憶體內容被儲存到PEBS追蹤檔案中。該過程然後結束。
用以將性能成本添加到 PEBS 記錄的代表性方法及硬體 / 韌體
圖 4繪示使用硬體及韌體以將性能成本添加到取樣(例如,PEBS)記錄之方法的實施例。如
圖 4中所示,PMU
410(其可包含如圖1中所示之處理器102中所示之方塊的任一者或全部,及/或對應於依據
圖 1之說明的PMU)、退出單元
420、及韌體/微碼
430一起合作以便提供性能成本。一或多個定時計數器(例如,
412及/或圖1之定時的PEBS計數器
117a到
117n)可以被包含在PMU中以計算指令的退出之間的期間。
在
440,計數器值可以被取樣於當(在
442)取樣(例如,PEBS)係待辦(pended)時(而且正好在其由於相同的指令退出而重設之前)。在
446,微碼可讀取此取樣值並將其寫到記憶體駐留(resident)記錄,類似於其如何報告諸如IP之其他資訊。
在實施例中,定時計數器可以是添加到重排序緩衝區(ROB)的16位元計數器,使得其可以藉由計算指令的退出之間的時間周期(例如,MCLK)來測量時間。例如,在
448,其可以被重設於當指令退出時(例如,EOM流程標記)。在實施例中,其可以基於一或多個設定及/或指標而被致能/失能,以致能/失能取樣(例如,PEBS)及/或性能監控(例如,PMonThreadsActive被設定)。在實施例中,其可以飽和於全為1時。
在實施例中,當取樣(例如,對於對應的事件而言)係待辦、被清除(例如,MoNukeOnPebs)、及/或兩者(例如,它們中最早的一個)時,ROB可將定時計數器的快照(snapshot)儲存於每一線程暫存器(例如,控制暫存器)中。在實施例中,在
444,微碼可以被調用(invoked)來將該暫存器值儲存至對應的記錄中。
圖 6顯示依據一實施例,包含定時的PEBS成本之PEBS記錄的範例。
實施例可以被使用,例如,在:
•由上至下的微架構分析(Top-down Microarchitectural Analysis(TMA)),例如,用以修理啟發法(如同由
圖 7之TMA樹中的標記入口所指示的),包含:
• L3_Hit_Latency =X * MEM_LOAD_RETIRED.L3_HIT / CLKS,其中,X為可以顯著地改變於網狀伺服器中的啟發法
• DTLB_Load使用X循環STLB命中成本
• 固定成本啟發法,例如,MEM_LOAD*RETIRED.*
• 每一例的分支錯誤預測成本(Branch Misprediction)
• 每一例的DSB未命中懲罰
• 任何指令的成本(固定的計數器0)
代表性處理器暫存器檔案
圖 5為依據一個實施例之暫存器架構
500的方塊圖。在所繪示的實施例中,有係512位元寬的32個向量暫存器
510;這些暫存器被參考為zmm0到zmm31。較低的16個zmm暫存器的低階256個位元被覆蓋在暫存器ymm0到ymm15上。較低的16個zmm暫存器的低階128個位元(ymm暫存器的低階128個位元)被覆蓋在暫存器xmm0到xmm15上。
寫遮罩暫存器
515-在所繪示的實施例中,有8個寫遮罩暫存器(k0到k7),每一個的尺寸為64位元。在替代實施例中,寫遮罩暫存器
515的尺寸為16位元。如先前所述,在本發明的一個實施例中,向量遮罩暫存器k0不可以被使用作為寫遮罩;當一般會表示k0的編碼被使用於寫遮罩時,其選擇0xFFFF的硬連線(hardwired)寫遮罩,有效地使用於該指令的寫遮蔽失能。
通用暫存器
525-在所繪示的實施例中,有16個64位元的通用暫存器,其與現有的x86定址(addressing)模式一起被用來定址記憶體運算元。這些暫存器被引用名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8到R15。
純量浮點堆疊暫存器檔案(x87堆疊)
545,其上被混疊(aliased)MMX緊縮(packed)整數平面(flat)暫存器檔案
550-在所繪示的實施例中,x87堆疊為被用來使用x87指令集擴充而對32/64/80位元的浮點資料實施純量浮點運算的8個元素的堆疊;而MMX暫存器被用來對64位元的緊縮整數資料實施運算,以及固持針對在MMX與XMM暫存器之間所進行的一些運算之運算元。
替代實施例可以使用更寬或更窄的暫存器。除此之外,替代實施例可以使用更多、更少、或者不同的暫存器檔案和暫存器。
代表性 PEBS 記憶體緩衝區
圖 10繪示依據一個實施例,對資料儲存緩衝區管理區域的更新。
圖 10繪示本發明之一個實施例的額外細節,其中,資料儲存緩衝區管理區域
1000被擴充而包含用於固定計數器Fixed Cntr0,Fixed Cntr1,Fixed Cntr2(類似於
圖 1的固定功能計數器
160a到
160c)的計數器重設值
1001。為了取樣每一個「第N個」事件,重設值「-N」可由這些值來指定並且被編程入固定計數器內以及被編程入與該計數器相關聯之基於記憶體的控制區塊位置內。當該計數器到達0時,而且在少量的管線延遲(其中,額外的事件可能發生)之後,下一個事件致使樣本被取得。如同所繪示的,致使樣本被取得的每一個事件導致PEBS記錄被產生並且被儲存在PEBS記憶體緩衝區
1002中。之後,該計數器從計數器重設值
1001被再次以「-N」來予以重設(隨著執行和計數繼續)。如同所示,連續的PEBS記錄,記錄0到記錄M,被寫到PEBS記憶體緩衝區
1002。在一些實施例中,當預定閾值數量的PEBS記錄被寫到PEBS記憶體緩衝區時,PEBS記憶體緩衝區的內容被複製到記憶體中的PEBS追蹤檔案中。PEBS追蹤檔案可以被儲存在同一個記憶體中作為PEBS記憶體緩衝區
1002,或者在不同的記憶體中。在一些實施例中,PEBS記憶體緩衝區
1002被儲存在第二個記憶體中。在一些實施例中,第二個記憶體具有比第一個記憶體更大的容量。
在一些實施例中,樣本使用硬體和微碼的組合來收集,而且不需要中斷或任何宏碼(macrocode)執行。一旦緩衝區填充到預定的閾值,性能監控中斷(Performance Monitoring Interrupt(PMI))即被採取,而且宏碼被調用來處理緩衝區中的樣本。
在一個實施例中,基於不精準事件的取樣((Non-Precise Event Based Sampling(NPEBS))使用和PEBS相同的除錯儲存機制來周期性地儲存一組架構狀態資訊,但是具有稍微不同的語義(semantic)。相同的取樣控制機制被使用,但是在計數器到達0之後,樣本被取得於下一個機會。因為所取樣的指令可能不是經歷該事件的那一個,所以它被認為是「不精準的」。NPEBS係從事(engage)於當PEBS係配置用於不是可PEBS(PEBS-able)事件列表之部分的事件,諸如Reference Clocks(參考時脈)和Core Clocks(核心時脈)。在上面所述的實施例中,其被施行於通用計數器116a到116n上。沒有NPEBS,基於時脈事件而取得統計樣本的唯一方式為採取每當適當配置的計數器溢位時的昂貴PMI。
總之,本發明的實施例提供PEBS致能機器特定暫存器
800(例如,IA32_PEBS_ENABLE MSR)、資料儲存緩衝區管理區域
1000、以及相關的硬體控制暫存器的延伸而包含固定計數器
160a到
160c的狀態位元。這些實施例讓所有的固定事件能夠設定對應的PEBS_ENABLE位元,使得當它們已經命中在值之後的輸入樣本時,如上所述地使用PEBS或NPEBS,它們能夠利用PEBS觸發機制和緩衝區。對於參考和核心時脈而言,不保證固定事件附加到任何特別的指令,但是將讓時脈事件能夠利用PEBS緩衝區來儲存經由在該架構上之PEBS而已可供使用的所有資訊,諸如指令指標(RIP/EIP)、時間戳記計數器(TSC)和通用暫存器。除此之外,在一個實施例中,異常產生邏輯中的硬體採用額外的輸入並且適當地插入PEBS協助操作。在一個實施例中,固定計數器
160利用PEBS觸發機制。因此,固定事件能夠編程PEBS致能機器特定暫存器
800而且為那些不精準事件致能PEBS。
追蹤與中斷無關之 PEBS 事件的代表性優點
圖 11A和
11B繪示藉由本發明之實施例所實現之對性能監控的改善。
圖 11A繪示沒有PEBS的取樣,而且其中,PMI未被映射到NMI。最終的結果為不準確的檔案,其中,整個檔案可能未命中而且樣本可能被掉失。相反地,
圖 11B繪示利用如本文中所述之PEBS取樣技術對固定事件之基於事件的取樣。其結果為顯著提高準確性以及當事件發生時的樣本收集。
代表性系統架構
圖 12為依據本發明之實施例,形成有處理器之代表性電腦系統的方塊圖,該處理器包含執行單元來執行指令。依據本發明,諸如在本文中所述之實施例中,系統
1200可包含諸如處理器
1202之組件,以使用包含邏輯的執行單元來實施用於處理資料的演算法。系統
1200可代表基於可獲得自美國加州聖塔克羅拉市(Santa Clara)之英特爾(Intel)公司的PENTIUM®III、PENTIUM®4、Xeon
TM、Itanium®、XScale
TM及/或StrongARM
TM微處理器之處理系統,雖然其他的系統(包含具有其他微處理器的PC、工程工作站、視訊盒(set-top box)等等)也可以被使用。在一個實施例中,系統
1200可執行可獲得自美國華盛頓州瑞德蒙市(Redmond)之微軟(Microsoft)公司的WINDOWS
TM作業系統版本,雖然其他的作業系統(例如,UNIX和Linux)、嵌入式軟體、及/或圖形用戶介面也可以被使用。因此,本發明之實施例不被限定於任何特定的硬體電路和軟體的組合。
實施例不限於電腦系統。本發明的實施例可被使用於其他裝置中,諸如手持式裝置及嵌入式應用。手持式裝置的一些範例包含蜂巢式電話、網際網路協定裝置、數位相機、個人數位助理(PDA)、及手持式PC。嵌入式應用可包含微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、視訊盒、網路集線器、廣域網路(WAN)開關,或者可依據至少一個實施例來實施一或多個指令的任何其他系統。
系統
1200可包含處理器
1202,其可包含一或多個執行單元
1208,用以依據本發明的一個實施例來實施至少一個指令的演算法。一個實施例可被說明於單一處理器桌上型電腦或伺服器系統的上下文中,但是其他實施例可被包含在微處理器系統中。系統
1200可以是‘中心(hub)’系統架構的範圍。系統
1200可包含處理器
1202用以處理資料訊號。處理器
1202可包含,例如複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、施行指令集之組合的處理器、或者任何其他處理器裝置,諸如數位訊號處理器。在一個實施例中,處理器
1202可以被耦接至可發送資料訊號於處理器
1202與系統
1200中的其他組件之間的處理器匯流排
1210。系統
1200的元件可實施習於此技藝者所熟知的習知功能。
在一個實施例中,處理器
1202可包含第12級(L1)內部快取記憶體
1204。取決於該架構,處理器
1202可具有單一個內部快取記憶體或多層的內部快取記憶體。在另一個實施例中,快取記憶體可位於處理器
1202的外部。其他實施例也可包含內部和外部快取記憶體兩者之組合,視特別的實作及需求而定。暫存器檔案
1206可以將不同類型的資料儲存在各種暫存器中,包含整數暫存器、浮點暫存器、狀態暫存器、和指令指標暫存器。
執行單元
1208,包含實施整數和浮點運算的邏輯,也位於處理器
1202中。處理器
1202也可包含儲存用於某些宏指令之微碼的微碼(ucode)ROM。在一個實施例中,執行單元
1208可包含用以處理緊縮指令集
1209的邏輯。藉由在處理器
1202的指令集中包含緊縮的指令集
1209,與用以執行該等指令的相關電路一起,由許多多媒體應用程式所使用的運算可以使用處理器
1202中的緊縮資料來予以實施。因此,許多多媒體應用程式可藉由使用處理器之資料匯流排的全寬度而對緊縮資料進行運算來予以加速以及更有效率地執行。這可以去除在處理器之資料匯流排上轉移較小單位的資料來一個資料元素一次進行一或多個運算的需要。
執行單元
1208的實施例也可以被使用於微控制器、嵌入式處理器、圖形裝置、DSP、及其他類型的邏輯電路中。系統
1200可包含記憶體
1220。記憶體
1220可被施行作為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其他記憶體裝置。記憶體
1220可儲存指令及/或由可以被處理器
1202所執行之資料訊號所代表的資料。
記憶體控制器中心
1216可以被耦接至處理器匯流排
1210和記憶體
1220。記憶體控制器中心
1216可包含記憶體控制器中心(MCH)。處理器
1202也可經由處理器匯流排
1210而與記憶體控制器中心
1216相通訊。記憶體控制器中心
1216可將高頻寬記憶體路徑
1218提供給記憶體
1220用於指令及資料儲存以及用於圖形命令、資料、和紋理(texture)的儲存。記憶體控制器中心
1216可將資料訊號引導在處理器
1202、記憶體
1220與系統
1200中的其他組件之間,以及將資料訊號橋接於處理器匯流排
1210、記憶體
1220與輸入/輸出(I/O)控制器中心
1230之間。在一些實施例中,記憶體控制器中心
1216提供圖形埠用以耦接至圖形/視頻卡
1212。記憶體控制器中心
1216可經由記憶體介面
1218而被耦接至記憶體
1220。圖形卡
1212可經由加速圖形埠(AGP)互連部
1214而被耦接至記憶體控制器中心
1216。
系統
1200可使用專有的集線器介面匯流排
1222來將記憶體控制器中心
1216耦接至I/O控制器中心(ICH)
1230。在一個實施例中,ICH
1230可經由本地I/O匯流排而將直接連接提供給一些I/O裝置。本地I/O匯流排可包含高速I/O匯流排,用以使周邊組件連接至記憶體
1220、晶片組、及處理器
1202。範例可包含聲頻控制器、韌體集線器(快閃BIOS)
1228、無線收發器
1226、資料儲存器
1224、含有用戶輸入及鍵盤介面的舊有I/O控制器、諸如通用串列匯流排的串列擴充埠、以及網路控制器
1234。資料儲存器
1224可包括硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置、或其他大量儲存裝置。
對於系統的其他實施例而言,依據一個實施例的指令可以和系統單晶片(system on a chip)一起使用。系統單晶片的一個實施例包括處理器和記憶體。用於一個此種系統的記憶體可包含快閃記憶體。快閃記憶體可包含快閃記憶體。用於一個此種系統的記憶體可位在和處理器及其他系統組件相同的晶粒上。除此之外,諸如記憶體控制器或圖形控制器的其他邏輯方塊也可以位在系統單晶片上。
代表性系統架構
圖 13及
14為代表性系統架構的方塊圖。此技藝所已知之用於膝上型、桌上型、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路機房(network hub)、開關、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、便攜式媒體播放器、手持裝置、以及各種其他電子裝置的其他系統設計和配置也都是適合的。通常,如本文中所揭示之能夠結合處理器及/或其他執行邏輯之種類繁多的系統或電子裝置一般都適合。
現在參照
圖 13,所顯示者為依據本發明之一個實施例之系統
1300的方塊圖。系統
1300可包含一或多個處理器
1310和
1315,他們被耦接至控制器中心
1320。在一個實施例中,控制器中心
1320包含圖形記憶體控制器中心(GMCH)
1390和輸入/輸出中心(IOH)
1350(其可以在分離的晶片上);GMCH
1390包含記憶體
1340及協同處理器
1345係耦接至其的記憶體和圖形控制器;IOH
1350係使輸入/輸出(I/O)裝置
1360耦接至GMCH
1390。或者,記憶體和圖形控制器的其中之一或兩者被整合於處理器之內(如同本文中所述者),記憶體
1340及協同處理器
1345係直接耦接至處理器
1310,以及和IOH
1350在單一個晶片中的控制器中心
1320。
額外的處理器
1315之可選性質係以虛線表示於
圖 13中。處理器
1310、
1315各自可包含本文中所述之處理器核心中的一或多個,而且可以是處理器
1700的某個版本。
記憶體
1340可以是,例如,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或者該兩者的組合。對於至少一個實施例而言,控制器中心
1320經由諸如前側匯流排(FSB)、諸如快速通道互連(QuickPath Interconnect (QPI))的點對點介面、或類似的連接
1395之多點匯流排(multi-drop bus)而與處理器
1310和
1315相通訊。
在一個實施例中,協同處理器
1345為一專用處理器,諸如,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。在一個實施例中,控制器集線器
1320可包含整合的圖形加速器。
在處理器
1310與
1315之間,就包含架構的、微架構的、熱、功率耗損特性等等優點之度量的譜(spectrum of matrix)而言,可以有各式各樣的差異。
在一個實施例中,處理器
1310執行控制一般類型之資料處理運算的指令。嵌入於指令之內的可能是協同處理器指令。處理器
1310將這些協同處理器指令認作為應該由附加之協同處理器
1345所執行之類型的指令。因此,處理器
1310將這些協同處理器指令(或代表協同處理器指令的控制訊號)在協同處理器匯流排或其他互連部上發出到協同處理器
1345。協同處理器
1345接受並且執行所接收到的協同處理器指令。
現在參照
圖 14,所顯示者為依據本發明之一實施例之多處理器系統
1400的方塊圖。如
圖 14所示,多處理器系統
1400為點對點互連系統,並且包含經由點對點互連部
1450而耦接的第一處理器
1470和第二處理器
1480。處理器
1470和
1480各自可以是處理器
1700的某個版本。在本發明的一個實施例中,處理器
1470和
1480分別為處理器
1310和
1315,而協同處理器
1438為協同處理器
1345。在另一個實施例中,處理器
1470和處理器
1480分別為處理器
1310和協同處理器
1345。
處理器
1470和處理器
1480係顯示分別包含整合的記憶體控制器(IMC)單元
1472和
1482。處理器
1470也包含其匯流排控制器單元點對點(P-P)介面
1476和
1478作為部件;同樣地,第二處理器
1480包含P-P介面
1486和
1488。處理器
1470和處理器
1480可經由點對點(P-P)互連部
1450,使用P-P介面電路
1478、
1488來交換資訊。如
圖 14所示,IMC
1472和
1482使處理器耦接至各自的記憶體,亦即記憶體
1432和記憶體
1434,其可以是在本地附接至各自的記憶體之主記憶體的部分。
處理器
1470和處理器
1480可以各自經由各自的P-P介面
1452、
1454,使用P-P介面電路
1476、
1494、
1486、
1498而與晶片組
1490交換資訊。晶片組
1490可選地經由高效能介面
1492而與協同處理器
1438交換資訊。在一個實施例中,協同處理器
1438為一專用處理器,諸如,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。
共有的快取記憶體(未顯示出)可以不是被包含在處理器中,就是被包含在兩個處理器之外,但是經由P-P互連部而與處理器相連接,使得如果處理器被置於低功率模式中,則任何一個處理器或兩個處理器之本地快取記憶體資訊可以被儲存在共有的快取記憶體中。
晶片組
1490可經由介面
1496而被耦接至第一匯流排
1416。在一個實施例中,第一匯流排
1416可以是周邊組件互連(PCI)匯流排,或者諸如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明的範疇不限於此。
如
圖 14所示,各式各樣的I/O裝置
1414可以被耦接至第一匯流排
1416,以及使第一匯流排
1416耦接至第二匯流排
1420的匯流排橋接器
1418。在一個實施例中,一個或更多個額外的處理器
1415,諸如協同處理器、高流量MIC處理器、GPGPU、加速器(諸如,例如圖形加速器或數位訊號處理器(DSP)單元)、現場可編程邏輯閘陣列、或者任何其他的處理器,被耦接至第一匯流排
1416。在一個實施例中,第二匯流排
1420可以是低接腳計數(low pin count(LPC))匯流排。在一個實施例中,各式各樣的裝置可以被耦接至第二匯流排
1420,包含,例如鍵盤及/或滑鼠
1422、通訊裝置
1427及資料儲存器
1428,諸如磁碟機或可包含指令/代碼及資料
1430的其他大量儲存裝置。此外,聲頻I/O
1424可以被耦接至第二匯流排
1420。注意,其他架構係有可能的。例如,代替
圖 14的點對點架構,一系統可以施行多點匯流排(multi-drop bus)或其他此種架構。
現在參照
圖 15,所顯示者為依據本發明之一實施例之第二更加特定代表性系統
1500的方塊圖。
圖 14及
圖 15中相同的元件賦予相同的參考數字,而且
圖 14的某些態樣在
圖 15中被省略以免使
圖 15的其他態樣模糊。
圖 15繪示處理器
1470和處理器
1480可分別包含整合的記憶體和I/O控制邏輯(“CL”)
1472和
1482。因此,CL
1472、
1482包含整合的記憶體控制器單元而且包含I/O控制邏輯。
圖 15繪示不僅記憶體
1432、
1434被耦接至CL
1472、
1482,而且I/O裝置
1514也被耦接至控制邏輯
1472、
1482。舊有的I/O裝置
1515被耦接至晶片組
1490。
現在參照
圖 16,所顯示者為依據本發明之一實施例之SoC
1600的方塊圖。
圖 16中類似的元件賦予相同的參考數字。而且,虛線方框為更先進之SoC上的可選特徵。在
圖 16中,互連單元
1602被耦接至:應用處理器
1610,其包含一個或更多個核心
1602A-N、快取記憶體單元
1604A-N、和共有的快取記憶體單元
1606的集合;系統代理器單元
1610;匯流排控制器單元
1616;整合的記憶體控制器單元
1614;一個或更多個協同處理器
1620的集合,其可包含整合的圖形邏輯、影像處理器、聲頻處理器、和視頻處理器;靜態隨機存取記憶體(SRAM)單元
1630;直接記憶體存取(DMA)單元
1632;和用以耦接至一個或更多個外部顯示器的顯示器單元
1640。在一個實施例中,協同處理器
1620包含專用處理器,諸如,例如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器等等。
本文中所揭示之機構的實施例可以用硬體、軟體、韌體、或此等實作方案的組合來予以施行。本發明之實施例可以被施行為執行於可編程系統上的電腦程式或程式碼,可編程系統包括至少一個處理器、儲存系統(包含揮發性和非揮發性記憶體及/或儲存元件)、至少一個輸入裝置、和至少一個輸出裝置。
程式碼,諸如
圖 14所繪示的碼
1430,可以被應用於輸入指令來實施本文中所述的功能並且產生輸出資訊。輸出資訊可以用已知的方式而被應用於一個或更多個輸出裝置。為了此應用的目的,處理系統包含具有處理器的任何系統,諸如,例如數位訊號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可以用高階程序語言或物件導向程式設計語言來予以施行,以與處理系統相通訊。如果需要的話,程式碼也可以用組合語言或機器語言來予以施行。實際上,本文中所述的機制在範圍上並不限於任何特殊的程式設計語言。在任何情況下,語言可以是編譯語言或直譯式(interpreted)語言。
至少一個實施例的一個或更多個態樣可以藉由儲存在機器可讀媒體上的代表性指令來予以施行,機器可讀媒體代表處理器之內的各種邏輯,該等指令當被機器讀取時致使機器製作邏輯來實施本文中所述的技術。此等表示,以「IP核心」而知名,可被儲存在實體、機器可讀媒體上,而且被供應給各種顧客或製造設施以載入真正做成該邏輯或處理器的製作機器中。
此種機器可讀儲存媒體可包含但不限於由機器或裝置所製造或形成之非暫態性、實體的物件配置,其包含儲存媒體,諸如硬碟、包含軟碟、光碟、唯讀記憶光碟(CD-ROM)、可重複錄寫光碟(CD-RW)、和磁光碟之任何其他類型的碟片、諸如唯讀記憶體(ROM)、諸如動態隨機記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可拭除可編程唯讀記憶體(EPROM)、快閃記憶體、可電子拭除式可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡、或者適合用來儲存電子指令之任何其他類型的媒體之半導體裝置。
因此,本發明之實施例也包含含有指令或者含有設計資料的非暫態性、實體機器可讀媒體,諸如硬體描述語言(HDL),其定義本文中所述的結構、電路、設備、處理器、及/或系統特徵。此等實施例也可被稱為程式產品。
代表性核心架構、處理器、及電腦架構
處理器核心可以針對不同的目的而用不同的方式來予以實施,以及處理器核心可以被實施於不同的處理器中。例如,此等核心的實作可包含:1)用於通用計算的通用有序核心;2)用於通用計算的高效能通用亂序核心;3)主要用於圖形及/或科學(通量)計算的專用核心。不同處理器的實作可包含:1)包含用於通用計算的一個或更多個通用有序核心及/或用於通用計算的一個或更多個通用亂序核心的CPU;以及2)包含主要用於圖形及/或科學(通量)計算的一個或更多個專用核心的協同處理器。此等不同的處理器導向不同的電腦系統架構,其可包含:1)與CPU分離之分開晶片上的協同處理器;2)和CPU相同的封裝組件中之分開晶粒上的協同處理器;3)和CPU相同的晶粒上的協同處理器(在該情況中,此協同處理器有時被稱為專用邏輯,諸如整合圖形及/或科學(通量)邏輯,或者被稱為專用核心);及4)在可包含同一晶粒上之所述CPU(有時被稱為應用程式核心或應用程式處理器)、上述協同處理器、以及額外功能性之晶片上的系統。代表性核心架構接著被說明,其後是代表性處理器和電腦架構的說明。
代表性核心架構 有序和亂序核心方塊圖
圖 17為依據本發明之實施例之處理器
1700的方塊圖,處理器
1700可以具有一個以上的核心,可以具有整合的記憶體控制器,以及可以具有整合的圖形。
圖 17中的實線方框繪示具有單一個核心
1702A、系統代理器
1710、一個或更多個匯流排控制器單元
1716的集合的處理器
1700,而額外可選的虛線方框繪示具有多個核心
1702A-N、系統代理器單元
1710中之一個或更多個整合的記憶體控制器單元
1714的集合、和專用邏輯
1708的處理器
1700。
因此,處理器
1700的不同實作可包含:1)具有為整合圖形及/或科學(通量)邏輯(其可包含一個或更多個核心)之專用邏輯
1708以及為一個或更多個通用核心(例如,通用有序核心、通用亂序核心、該兩者的組合)之核心
1702A-N的CPU;2)具有為主要用於圖形及/或科學(通量)之大量專用核心之核心
1702A-N的協同處理器;以及3)具有為大量通用有序核心之核心
1702A-N的協同處理器。因此,處理器
1700可以是通用處理器、協同處理器或專用處理器,諸如,例如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多重整合核心(MIC)協同處理器(包含30個或更多個核心)、嵌入式處理器等等。處理器可被施行於一個或更多個晶片上。處理器
1700可以是一個或更多個基板的一部分及/或可以使用許多處理技術之任一者而被施行於一個或更多個基板上,諸如,例如BiCMOS、CMOS、或NMOS。
記憶體階層包含核心內之一或多級的快取記憶體、一個或更多個共有快取記憶體單元
1706的集合、和耦接至整合的記憶體控制器單元
1714的集合的外部記憶體(未顯示出)。共有快取記憶體單元
1706的集合可包含一個或更多個中級快取記憶體,諸如第二級(L2)、第三級(L3)、第四級(L4)、或其他級快取記憶體、末級快取記憶體(LLC)、及/或其組合。雖然在一個實施例中,基於環狀的互連單元
1712使整合圖形邏輯
1708整合圖式邏輯
1708為專用邏輯範例而且在本文中被稱為專用邏輯、共有快取記憶體單元
1706的集合、和系統代理器單元
1710/整合的記憶體控制器單元
1714互連,但是替代實施例可以使用任何數量之已知技術用以使此等單元互連。在一個實施例中,連貫性係維持在一個或更多個快取記憶體單元
1706與核心
1702A-N之間。
在一些實施例中,核心
1702A-N之一或多者能夠多線程。系統代理器
1710包含協調及操作核心
1702A-N的那些組件。系統代理器
1710可包含例如功率控制單元(PCU)和顯示單元。PCU可以是或者包含用來調整核心
1702A-N及整合圖形邏輯
1708之功率狀態所需要的邏輯和組件。顯示單元係用來驅動一個或更多個外部連接的顯示器。
核心
1702A-N就指令集架構而言可以是同質的或異質的;亦即,核心
1702A-N之二或多者可能能夠執行相同的指令集,而其它者可能僅能夠執行該指令集的子集合或者不同的指令集。
代表性電腦架構 仿真 (emulation)( 包含二進制轉譯 (binary translation) 、碼變形 (code morphing) 等等 )
在一些情況中,指令轉換器可以被用來將指令從來源指令集轉換成目標指令集。例如,指令轉換器可以轉譯(例如,使用靜態二進制轉譯、包含動態編譯的動態二進制轉譯)、變形(morph)、仿真、或者轉換成要被核心處理的一個或更多個其他指令。指令轉換器可以用軟體、硬體、韌體、或其組合來予以施行。指令轉換器可以在處理器上、在處理器外、或者部分在處理器上且部分在處理器外。
圖 18為依據本發明之實施例,對比軟體指令轉換器的使用而將來源指令集中的二進制指令轉換成目標指令集中的二進制指令。在所繪示的實施例中,指令轉換器為軟體指令轉換器,儘管替換地,指令轉換器可以用軟體、韌體、硬體、或其各種組合來予以施行。
圖 18顯示高階語言
1802中的程式可以使用x86編譯器
1804來予以編譯而產生可以由具有至少一個x86指令集核心的處理器
1816所本機(natively)執行的x86二進位碼
1806。具有至少一個x86指令集核心
1816的處理器1816代表可以藉由相容地執行或者處理(1)Intel x86指令集核心之指令集的實質部分或(2)目標要運行於具有至少一個x86指令集核心的Intel處理器上之應用程式或其他軟體的目標碼(object code)版本來實施實質上和具有至少一個x86指令集核心的Intel處理器相同的功能,以便達成實質上和具有至少一個x86指令集核心的Intel處理器相同結果的任何處理器。x86編譯器
1804代表可操作來產生x86指令集
1806(例如,目標碼)之二進位碼的編譯器,其在具有或沒有額外的連鎖(linkage)處理下可以被執行於具有至少一個x86指令集核心的處理器
1816上。同樣地,
圖 18顯示高階語言
1802中的程式可以使用替代指令集編譯器
1808來編譯而產生可以由沒有至少一個x86指令集核心的處理器
1814(例如,具有執行加州(CA),Sunnyvale之MIPS科技公司的MIPS指令集及/或加州(CA),Sunnyvale之ARM控股公司的ARM指令集之核心的處理器)所本機執行的替代指令集二進位碼
1810。指令轉換器
1812被用來將x86二進位碼
1806轉換成可以由沒有至少一個x86指令集核心的處理器
1814所本機執行的碼。此轉換碼不可能和替代指令集二進位碼
1810相同,因為能夠這樣的指令轉換器難以做出;然而,轉換碼將完成一般的運算而且由來自替代指令集的指令所組成。因此,指令轉換器
1812代表經由仿真、模擬或其他處理,讓處理器或不具有x86指令集處理器或核心的其他電子裝置能夠執行x86二進位碼
1806的軟體、韌體、硬體、或其組合。
上面的範例包含特徵的特定組合。然而,此等上面的範例並未受限於此方面,而且在各種實作中,上面的範例可包含僅進行一子集合之此等特徵、進行不同順序之此等特徵、進行不同組合之此等特徵、及/或進行明確表列出之那些特徵外的額外特徵。例如,參照該等範例方法所說明的所有特徵可以參照範例設備、範例系統、及/或範例物件來予以施行,而且反之亦然。
本發明的實施例可包含各種步驟,其已被說明於上。該等步驟可被具體化於機器可執行指令中,而機器可執行指令可以被用來致使通用或專用處理器實施該等步驟。或者,這些步驟可以由含有用來實施該等步驟之硬體邏輯的特定硬體組件,或者由經編程的電腦組件和定制的硬體組件的任意組合來實施。
在前述說明書中,特定代表性實施例已經被揭示出。然而,在沒有違離本發明之更廣的精神和範疇情況下可以對其做出各種修正及改變將會是明顯的,如同附加的申請專利範圍中所提出的。因此,說明書及圖式可以被視為是舉例說明性而不是在限制的意義上。
儘管本文中所提出的一些實施例在硬體執行單元及邏輯電路的背景下涉及資料處理和分配,然而其他實施例可以藉由非暫態性機器可讀、實體的媒體上所儲存之資料或指令來予以達成,當由機器來予以實施時,其致使機器來實施與至少一個實施例一致的功能。在一個實施例中,與本發明之實施例相關聯的功能被具體化於機器可執行指令中。該等指令能夠被用來致使編程有指令之通用或專用處理器進行該至少一個實施例的步驟。本發明之實施例可被提供做為電腦程式產品或軟體,其可包含具有電腦可執行指令儲存於其上的機器或電腦可讀媒體,該電腦可執行指令可被用來編程電腦(或其他電子裝置)而依據該至少一個實施例來實施一或多個操作。或者,實施例的步驟可以藉由含有用來實施該等步驟之固定功能的邏輯之特定硬體組件,或者藉由經編程之電腦組件及固定功能之硬體組件的任意組合來予以實施。
被用來編程邏輯以實施該至少一個實施例的指令能夠被儲存在系統中的記憶體內,諸如DRAM、快取記憶體、快閃記憶體、或其他儲存器。此外,該等指令能夠經由網路或藉由其他電腦可讀媒體來予以分布。因此,機器可讀媒體可包含用來儲存或發送呈可由機器(例如,電腦)讀取之形式的資訊之機構,但是不限於軟碟、光碟、唯讀記憶光碟(CD-ROM)、以及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可拭除可編程唯讀記憶體(EPROM)、可電子拭除式可編程唯讀記憶體(EEPROM)、磁卡或光學卡、快閃記憶體、或者透過網際網路(Internet)、經由電、光、聲或其形式的傳遞訊號(例如,載波、紅外線訊號、數位訊號等等)之資訊傳輸中所使用之實體、機器可讀的儲存器。因此,非暫態性電腦可讀媒體包含適用來儲存或傳送呈可由機器(例如,電腦)讀取之形式的電子指令或資訊之任何類型的實體、機器可讀媒體。
在一實施例中,一處理器包含第一計數器、第二計數器、處理程序電路、及致能電路。該第一計數器係用以計算該處理器中事件之發生的數量和溢位於當發生的計數到達指定值時。該第二計數器係用以測量該事件的性能成本。該處理程序電路係用以產生事件取樣記錄。該記錄包含至少一個值以反映該性能成本。該致能電路係用以致使該處理程序電路能夠產生該記錄。
在實施例中,該事件取樣記錄也包含該設備的架構元資料和該設備的暫存器狀態;該設備也包含事件選擇暫存器,係以對應於該事件的事件識別符來予以編程,以及可編程配置暫存器,用以載明該事件取樣記錄的內容;該第二計數器係用以計算指令的退出之間的時間;該性能成本係以時間來予以測量;該性能成本係以經過之退出循環的數量來予以測量;該性能成本係以事件級粒度來予以測量;該性能成本係以指令級粒度來予以測量;該性能成本係以由該事件所引進的退出推出時間來予以測量;由該事件所引進的該退出推出時間係在指令的退出之間;該事件為指令而且由該事件所引進的該退出推出時間係在該指令的執行與該指令的退出之間;及/或該事件取樣記錄為基於精準事件的取樣(Precise Event Based Sampling)記錄。
在一實施例中,一方法包含致使事件取樣處理程序電路能夠產生事件取樣記錄,該事件取樣記錄包含至少一個值以反映事件的性能成本;計算該事件之發生的數量;提供該事件之發生的計數已經到達指定值的指示;以及測量該事件的該性能成本。在實施例中,測量該事件的該性能成本係藉由一計數器來計算指令的退出之間的時鐘週期;該方法也包含取樣該計數器以回應第一指令的退出,其中,該第一指令對應於該事件的第一次發生;該方法也包含重設該計數器以回應第二指令的退出,其中,該第二指令對應於該事件的第二次發生,及/或該事件取樣記錄為基於精準事件的取樣(Precise Event Based Sampling)記錄。
在一實施例中,一系統包含記憶體;以及處理器,該處理器包含第一計數器,用以計算該處理器中事件之發生的數量和溢位於當發生的計數到達指定值時;第二計數器,用以測量該事件的性能成本;事件取樣處理程序電路,用以產生事件取樣記錄,該記錄包含至少一個值以反映該性能成本;以及事件取樣致能電路,係耦接至該第一計數器、該第二計數器、及該事件取樣處理電路,其中,該事件取樣致能電路係用以致使該事件取樣處理程序電路能夠產生該事件取樣記錄。在實施例中,該事件取樣處理程序電路也用以將該事件取樣記錄儲存在該記憶體中;及/或該事件取樣記錄為基於精準事件的取樣(Precise Event Based Sampling)記錄。
在實施例中,一設備可包含用以實施本文中所揭示之任何功能的機構。在實施例中,該設備可包括儲存碼的資料儲存裝置,當由硬體處理器所執行時致使該硬體處理器實施本文中所揭示之任何方法。一設備可以是如同詳細說明中所敘述者。一方法可以是如同詳細說明中所敘述者。在實施例中,非暫態性機器可讀媒體可以儲存碼,當由機器所執行時致使該機器實施包括所揭示之任何方法的方法。
102:處理器
104:匯流排/介面
106:NPEBS處理程序電路
108:PEBS處理程序電路
110a-n:記憶體儲存器
112:性能監控中斷(PMI)組件
114a-n事件選擇控制
116a-n:性能計數器
117a-n:定時的PEBS計數器
118a-n:PEBS致能電路
150a-c:事件選擇控制
160a-c:固定功能計數器
170a-c:PEBS致能電路
410:監控單元
412:定時的PEBS計數器
420:退出單元
430:微碼
440:取樣值
442:待辦PEBS精準事件
444:PEBS微碼處理程序開始
446:收集和報告包含定時的PEBS值的基本資訊
448:重設
500:暫存器架構
510:向量暫存器
515:寫遮罩暫存器
525:通用暫存器
545:純量浮點堆疊暫存器檔案
550:MMX緊縮整數平面暫存器檔案
800:PEBS致能MSR
801:用於固定功能計數器的PEBS致能控制
910:用於固定功能計數器的致能控制
1000:資料儲存緩衝區管理區域
1001:計數器重設值
1002:PEBS記憶體緩衝區
1200:系統
1202:處理器
1204:快取記憶體
1206:暫存器檔案
1208:執行單元
1209:緊縮指令集
1210:處理器匯流排
1212:圖形/視頻卡
1214:加速圖形埠(AGP)互連部
1216:記憶體控制器中心
1218:高頻寬記憶體路徑
1220:記憶體
1222:集線器介面匯流排
1224:資料儲存器
1226:無線收發器
1228:快閃BIOS
1230:I/O控制器中心
1234:網路控制器
1300:系統
1310,1315:處理器
1320:控制器集線器
1340:記憶體
1345:協同處理器
1350:輸入/輸出集線器(IOH)
1360:輸入/輸出(I/O)裝置
1390:圖形記憶體控制器集線器(GMCH)
1395:連接
1400:多處理器系統
1414:I/O裝置
1415:處理器
1416:第一匯流排
1418:匯流排橋接器
1420:第二匯流排
1422:鍵盤/滑鼠
1424:聲頻I/O裝置
1427:通訊裝置
1428:資料儲存單元
1430:碼和資料
1432,1434:記憶體
1438:協同處理器
1450:點對點互連部
1452,1454:點對點(P-P)介面
1470:第一處理器
1472,1482:整合的記憶體控制器(IMC)單元
1476,1478,1486,1488,1494,1498:點對點(P-P)介面電路
1480:第二處理器
1492,1496:介面(I/F)
1490:晶片組
1500:系統
1514:I/O裝置
1515:舊有的I/O裝置
1472,1482:控制邏輯(CL)
1600:系統單晶片(SoC)
1602:互連單元
1610:應用處理器
1620:協同處理器
1630:靜態隨機存取記憶體(SRAM)單元
1632:直接記憶體存取(DMA)單元
1640:顯示器單元
1700:處理器
1702A-N:核心
1704A-N:快取記憶體單元
1706:共有快取記憶體單元
1708:專用邏輯
1710:系統代理器
1712:互連網路
1714:記憶體控制器單元
1716:匯流排控制器單元
1802:高階語言
1804:x86編譯器
1806:x86二進位碼
1808:替代指令集編譯器
1810:替代指令集二進位碼
1812:指令轉換器
1814:沒有x86指令集核心的處理器
1816:具有至少一個x86指令集核心的處理器
本文中所述之實施例的各種優點對於熟悉此技藝者而言將可藉由讀取下面的說明書和隨附的申請專利範圍以及參照圖式而變得顯而易知,在圖式中:
[圖1]係依據一個實施例,繪示出處理器的方塊圖;
[圖2]繪示產生及儲存PEBS記錄於記憶體緩衝區中,以及將記憶體緩衝區儲存至PEBS追蹤檔案之方法的實施例;
[圖3]繪示編程PEBS處理程序(handler)電路以監控處理器性能並產生要被儲存在PEBS記憶體緩衝區中,而後被儲存在PEBS追蹤檔案中的PEBS記錄之方法的實施例;
[圖4]繪示使用硬體及韌體以將性能成本添加於PEBS記錄之方法的實施例;
[圖5]係依據一實施例之暫存器架構的方塊圖;
[圖6]顯示依據一實施例,包含定時的PEBS成本之PEBS記錄的範例;
[圖7]顯示依據一實施例,其啟發法(heuristics)係固定之由上而下的微架構分析(Microarchitectural Analysis)樹;
[圖8]繪示依據一實施例,用以致能固定功能計數器上之基於事件的取樣之不同的暫存器;
[圖9]繪示依據一實施例,用以致能固定功能計數器上之基於事件的取樣之不同的暫存器;
[圖10]繪示依據一實施例,對資料儲存緩衝區管理區域的更新;
[圖11A]繪示藉由本發明之實施例所實現之對性能監控的改善;
[圖11B]繪示藉由本發明之實施例所實現之對性能監控的改善;
[圖12]係依據本發明之實施例,形成有處理器之代表性電腦系統的方塊圖,該處理器包含執行單元來執行指令;
[圖13]係依據本發明之實施例,第一更具體之代表性系統的方塊圖;
[圖14]係依據本發明之實施例,第一更具體之代表性系統的方塊圖;
[圖15]係依據本發明之實施例,第二更具體之代表性系統的方塊圖;
[圖16]係依據本發明之實施例,SoC的方塊圖;
[圖17]係依據本發明之實施例,具有一個以上之核心、整合之記憶體控制器、以及整合之圖形之處理器的方塊圖;以及
[圖18]係依據本發明之實施例,對比軟體指令轉換器的使用而將來源指令集中的二進制指令轉換成目標指令集中的二進制指令。
102:處理器
106:NPEBS處理程序電路
108:PEBS處理程序電路
110a-n:記憶體儲存器
112:性能監控中斷(PMI)組件
114a-n:事件選擇控制
116a-n:性能計數器
117a-n:定時的PEBS計數器
118a-n:PEBS致能電路
150a-c:事件選擇控制
160a-c:固定功能計數器
170a-c:PEBS致能電路
Claims (25)
- 一種設備,包括: 第一計數器,用以計算該設備中事件之發生的數量和溢位於當發生的計數到達指定值時; 第二計數器,用以測量該事件的性能成本; 事件取樣處理程序電路,用以產生事件取樣記錄,該記錄包含至少一個值以反映該性能成本;以及 事件取樣致能電路,係耦接至該第一計數器、該第二計數器、及該事件取樣處理程序電路,其中,該事件取樣致能電路係用以致使該事件取樣處理程序電路能夠產生該事件取樣記錄。
- 如請求項1之設備,其中,該事件取樣記錄另包括該設備的架構元資料和該設備的暫存器狀態。
- 如請求項2之設備,另包括: 事件選擇暫存器,係以對應於該事件的事件識別符來予以編程;以及 可編程配置暫存器,用以載明該事件取樣記錄的內容。
- 如請求項1之設備,其中,該第二計數器係用以計算指令的退出之間的時間。
- 如請求項1之設備,其中,該性能成本係以時間來予以測量。
- 如請求項1之設備,其中,該性能成本係以經過之退出循環的數量來予以測量。
- 如請求項1之設備,其中,該性能成本係以事件級粒度來予以測量。
- 如請求項1之設備,其中,該性能成本係以指令級粒度來予以測量。
- 如請求項1之設備,其中,該性能成本係以由該事件所引進的退出推出時間來予以測量。
- 如請求項9之設備,其中,由該事件所引進的該退出推出時間係在指令的退出之間。
- 如請求項9之設備,其中,該事件為指令而且由該事件所引進的該退出推出時間係在該指令的執行與該指令的退出之間。
- 如請求項1之設備,其中,該事件取樣記錄為基於精準事件的取樣(Precise Event Based Sampling)記錄。
- 一種方法,包括: 致使事件取樣處理程序電路能夠產生事件取樣記錄,其中,該事件取樣記錄包含至少一個值以反映事件的性能成本; 計算該事件之發生的數量; 提供該事件之發生的計數已經到達指定值的指示;以及 測量該事件的該性能成本。
- 如請求項13之方法,其中,測量該事件的該性能成本係藉由一計數器來計算指令的退出之間的時鐘週期。
- 如請求項14之方法,另包括取樣該計數器以回應第一指令的退出,其中,該第一指令對應於該事件的第一次發生。
- 如請求項14之方法,另包括重設該計數器以回應第二指令的退出,其中,該第二指令對應於該事件的第二次發生。
- 如請求項13之方法,其中,該事件取樣記錄為基於精準事件的取樣(Precise Event Based Sampling)記錄。
- 一種系統,包括: 記憶體;以及 處理器,包括: 第一計數器,用以計算該處理器中事件之發生的數量和溢位於當發生的計數到達指定值時; 第二計數器,用以測量該事件的性能成本; 事件取樣處理程序電路,用以產生事件取樣記錄,該記錄包含至少一個值以反映該性能成本;以及 事件取樣致能電路,係耦接至該第一計數器、該第二計數器、及該事件取樣處理程序電路,係耦接至該第一計數器、該第二計數器、及該事件取樣處理程序電路,其中,該事件取樣致能電路係用以致使該事件取樣處理程序電路產生該事件取樣記錄。
- 如請求項18之系統,其中,該事件取樣處理程序電路也用以將該事件取樣記錄儲存在該記憶體中。
- 如請求項18之系統,其中,該事件取樣記錄為基於精準事件的取樣(Precise Event Based Sampling)記錄。
- 一種設備,包括: 用以計算該設備中事件之發生的數量和溢位於當發生的計數到達指定值時之機構; 用以測量該事件的性能成本之機構; 用以產生事件取樣記錄之機構,該記錄包含至少一個值以反映該性能成本;以及 用以致能該用以產生該事件取樣記錄之機構的機構。
- 如請求項21之設備,其中,該事件取樣記錄另包括該設備的架構元資料和該設備的暫存器狀態。
- 如請求項22之設備,另包括: 事件選擇暫存器,係以對應於該事件的事件識別符來予以編程;以及 可編程配置暫存器,用以載明該事件取樣記錄的內容。
- 如請求項21之設備,其中,該用以測量該事件的性能成本之機構係用以計算指令的退出之間的時間。
- 如請求項21之設備,其中,該性能成本係以時間、以經過之退出循環的數量、以事件級粒度、以指令級粒度、及/或以由該事件所引進的退出推出時間來予以測量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/033,746 US20220100626A1 (en) | 2020-09-26 | 2020-09-26 | Monitoring performance cost of events |
US17/033,746 | 2020-09-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202223660A true TW202223660A (zh) | 2022-06-16 |
Family
ID=80822630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110130687A TW202223660A (zh) | 2020-09-26 | 2021-08-19 | 監控事件的性能成本 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220100626A1 (zh) |
EP (1) | EP4217872A1 (zh) |
CN (1) | CN116137905A (zh) |
TW (1) | TW202223660A (zh) |
WO (1) | WO2022066349A1 (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133969B2 (en) * | 2003-10-01 | 2006-11-07 | Advanced Micro Devices, Inc. | System and method for handling exceptional instructions in a trace cache based processor |
US20050273310A1 (en) * | 2004-06-03 | 2005-12-08 | Newburn Chris J | Enhancements to performance monitoring architecture for critical path-based analysis |
US8136124B2 (en) * | 2007-01-18 | 2012-03-13 | Oracle America, Inc. | Method and apparatus for synthesizing hardware counters from performance sampling |
US8099586B2 (en) * | 2008-12-30 | 2012-01-17 | Oracle America, Inc. | Branch misprediction recovery mechanism for microprocessors |
GB2493793B (en) * | 2010-12-23 | 2020-07-08 | Intel Corp | Test, validation, and debug architecture |
US9575766B2 (en) * | 2011-12-29 | 2017-02-21 | Intel Corporation | Causing an interrupt based on event count |
US9766999B2 (en) * | 2014-05-30 | 2017-09-19 | Intel Corporation | Monitoring performance of a processing device to manage non-precise events |
US9465680B1 (en) * | 2015-05-26 | 2016-10-11 | Intel Corporation | Method and apparatus for processor performance monitoring |
US10140056B2 (en) * | 2016-09-27 | 2018-11-27 | Intel Corporation | Systems and methods for differentiating function performance by input parameters |
US20190041950A1 (en) * | 2018-03-28 | 2019-02-07 | Intel Corporation | System, Apparatus And Method For Data Driven Low Power State Control Based On Performance Monitoring Information |
-
2020
- 2020-09-26 US US17/033,746 patent/US20220100626A1/en active Pending
-
2021
- 2021-08-19 TW TW110130687A patent/TW202223660A/zh unknown
- 2021-08-25 CN CN202180052208.6A patent/CN116137905A/zh active Pending
- 2021-08-25 WO PCT/US2021/047591 patent/WO2022066349A1/en unknown
- 2021-08-25 EP EP21873159.4A patent/EP4217872A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022066349A1 (en) | 2022-03-31 |
EP4217872A1 (en) | 2023-08-02 |
CN116137905A (zh) | 2023-05-19 |
US20220100626A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI724083B (zh) | 用於使用可重載的效能計數器監控處理器之效能的處理器、方法及系統晶片 | |
US9696997B2 (en) | Real time instruction trace processors, methods, and systems | |
CN109690497B (zh) | 用于通过输入参数来区分函数性能的系统和方法 | |
US11210099B2 (en) | Persistent commit processors, methods, systems, and instructions | |
US9465680B1 (en) | Method and apparatus for processor performance monitoring | |
CN109328341B (zh) | 识别引起远程事务执行中止的存储的处理器、方法和系统 | |
RU2635044C2 (ru) | Режим слежения в устройстве обработки в системах трассировки команд | |
EP4198741A1 (en) | System, method and apparatus for high level microarchitecture event performance monitoring using fixed counters | |
WO2017167398A1 (en) | Method and apparatus for time and event aligned multilayer multiagent performance monitoring | |
TW202223660A (zh) | 監控事件的性能成本 | |
US20220308882A1 (en) | Methods, systems, and apparatuses for precise last branch record event logging | |
US20200249866A1 (en) | Precise longitudinal monitoring of memory operations | |
EP3716064A1 (en) | Performance management unit aided tier selection in heterogeneous memory | |
US20230185695A1 (en) | Processor trace with suppression of periodic timing packets for low density trace sections | |
Dreslinski et al. | The m5 simulator: Modeling networked systems |