專利名稱::用于基于關(guān)鍵路徑的分析的性能監(jiān)視體系結(jié)構(gòu)的增強(qiáng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計算機(jī)系統(tǒng)領(lǐng)域,具體來說涉及微體系結(jié)構(gòu)的性能監(jiān)視和調(diào)整。
背景技術(shù):
:性能分析是表征、調(diào)試和調(diào)整微體系結(jié)構(gòu)設(shè)計、查找和修正硬件和軟件中的性能瓶頸以及定位可避免的性能問題的基礎(chǔ)。隨著計算機(jī)業(yè)的發(fā)展,分析微體系結(jié)枸并基于該分析來對微體系結(jié)構(gòu)進(jìn)行更改的能力變得更加復(fù)雜且重要。除了提供盡可能最佳的平臺外,常常通過調(diào)整應(yīng)用程序以使之在該平臺上以最佳表現(xiàn)運行來實現(xiàn)最佳性能。在識別性能瓶頸、找出如何通過更好的代碼生成來避免它們以及確認(rèn)性能的提升等方面都有大量投入。性能監(jiān)視器是該分析中的一個關(guān)鍵組件。性能監(jiān)視比硅前(pre-silicon)模擬提供更大量的性能數(shù)據(jù),并且已經(jīng)被用于調(diào)整微體系結(jié)構(gòu)設(shè)計以提升諸如存儲轉(zhuǎn)發(fā)等方面的性能。在推動硅更改時,準(zhǔn)確地知道性能問題發(fā)生的頻度和從改進(jìn)微體系結(jié)構(gòu)的該部分獲得的多大獲益是必不可少的要素。在過去,串行執(zhí)行機(jī)器的性能監(jiān)視相對是直接的,因為跟蹤串行性能瓶頸遠(yuǎn)比檢測并行亂序執(zhí)行期間的性能極限容易得多。典型性能分析按如下方式將工作負(fù)荷的CPI(每個指令的時鐘數(shù))分解成各個組成部分1)硬件中的計數(shù)性能事件,2)估算每個事件對程序的關(guān)鍵路徑的相對貢獻(xiàn),以及3)將對工作負(fù)荷的性能瓶頸產(chǎn)生貢獻(xiàn)的各個組成部分組合成總細(xì)分。估算單個微體系結(jié)構(gòu)原因的每個實例成本對于亂序且高度推測的機(jī)器來說是困難的,其中有要涵蓋許多停止成本的大部分的足夠推測且流水線并行性。目前,已經(jīng)采用專用方法來估算事件的每個實例影響,并且這些估算的精確度和變化常常是未知的。例如,圖1圖示單問題機(jī)器中指令101-107的提取、執(zhí)行和引退(retirement)的示例。指令102具有分支誤預(yù)測110,它使指令103的提取延遲,并顯著地在指令102之后推出(pushout)指令103的引退。指令104具有第一級高速緩存未命中120,它進(jìn)一步地推出指令105的引退。但是指令104的引退4食出125被指令105的第二級高速緩存未命中130矮化(dwarfed),它具有如此長的等待時間,以致于指令106中的分支誤預(yù)測135對它的引退時間沒有任何影響。正如圖1所列舉的,不管能夠?qū)崿F(xiàn)亂序高度推測并行執(zhí)行的處理器中有全面的性能監(jiān)視,即使在單個問題^/L器中,測量引退推出時也存在無法理解的復(fù)雜性。附圖以舉例方式而無意作為限制圖示了本發(fā)明。圖1圖示單個問題機(jī)器中多個操作的提取、執(zhí)行和引退的實施例。圖2圖示一種處理器的實施例,該處理器包括第一性能監(jiān)視模塊和第二微體系結(jié)構(gòu)調(diào)整模塊。圖3圖示圖2的特定實施例。圖4圖示一種處理器的實施例,該處理器包括用于以靜態(tài)或動態(tài)方式重新編譯軟件的模塊。圖5圖示一種系統(tǒng)的實施例,該系統(tǒng)包括具有用于監(jiān)視處理器的性能和調(diào)整處理器的微體系結(jié)構(gòu)的^f莫塊的處理器。圖6a圖示用于監(jiān)視性能并基于性能來調(diào)整微處理器的流程圖的實施例。圖6b圖示圖6a的特定實施例。圖6c圖示用于監(jiān)視性能并調(diào)整微處理器的另一個實施例。圖7圖示用于在特定事件發(fā)生時測量引退推出的實施例。具體實施例方式在下文描述中,提出了例如特定體系結(jié)構(gòu)、這些體系結(jié)構(gòu)內(nèi)的功能部件、調(diào)整機(jī)制和系統(tǒng)配置的大量特定細(xì)節(jié)以便提供對本發(fā)明的透徹理解。但是,對于本領(lǐng)域技術(shù)人員顯見的是,無需采用這些特定細(xì)節(jié)也能實施本發(fā)明。在一些其他情況中,沒有對例如公知的邏輯設(shè)計、軟件編譯器、軟件重新配置技術(shù)和處理器去功能部件(processordefeaturing)技術(shù)等的公知組件或方法進(jìn)行詳細(xì)描述,以便避免不必要地妨礙了對本發(fā)明的理解。性能監(jiān)視圖2圖示一種處理器205的實施例,該處理器205具有性能監(jiān)視模塊210和調(diào)整模塊215。處理器205可以是用于執(zhí)行代碼和/或?qū)?shù)據(jù)進(jìn)行操作的任何部件。作為特定實例,處理器205能夠?qū)崿F(xiàn)并行執(zhí)行。在另一個實施例中,處理器205能夠?qū)崿F(xiàn)亂序執(zhí)行。處理器205還可以實現(xiàn)分支預(yù)測和推測,執(zhí)行,以及實現(xiàn)其他^^知的處理單元和方法。處理器250中圖示的其他處理單元包括存儲器子系統(tǒng)220、前端225、亂序引擎230和執(zhí)行單元235。這些模塊、單元或功能塊的每一個可以為處理器205提供前述的功能。在一個實施例中,存儲器子系統(tǒng)包括較高級的高速緩存和用于與外部設(shè)備實現(xiàn)接口的總線接口,前端225包括投機(jī)邏輯和提取邏輯,亂序引擎230包括用于將指令重新排序的調(diào)度邏輯,以及執(zhí)行單元235包括以串行和并行執(zhí)行的浮點和整數(shù)執(zhí)行單元。模塊210和模塊215能以硬件、軟件、固件或其任何組合來實現(xiàn)。通常,在不同的實施例中,模塊的邊界是不同的,并且一起來實現(xiàn)以及單獨地實現(xiàn)功能。在一個示例中,在一個模塊中實現(xiàn)性能10監(jiān)視和調(diào)整。在圖2圖示的實施例中,分別示出模塊210和模塊215;但是模塊210和模塊215可以是由其他圖示的單元220-235執(zhí)行的軟件。模塊210用于監(jiān)視處理器205的性能。在一個實施例中,通過確定和/或?qū)С鲋陵P(guān)鍵路徑的每個實例成本來實現(xiàn)性能監(jiān)視。關(guān)鍵路徑包括在將增加發(fā)生、任務(wù)或事件的等待時間的情況下將會對完成操作、指令、指令集或程序所要耗費的時間產(chǎn)生貢獻(xiàn)的任何此類發(fā)生、任務(wù)和/或事件的任何路徑或序列。在圖形學(xué)上來說,關(guān)鍵路徑有時可以稱為經(jīng)過特定機(jī)器上運行的程序中的數(shù)據(jù)、控制和資源相關(guān)性的圖形的路徑,其中該相關(guān)圖形中的任何弧的延長將導(dǎo)致該程序的執(zhí)行等待時間的增加。因此,換言之,事件/功能部件對關(guān)鍵路徑的每個實例貢獻(xiàn)是事件(例如第二級高速緩存未命中)或微體系結(jié)構(gòu)功能部件(例如分支預(yù)測單元)對完成任務(wù)或程序中所經(jīng)歷的等待時間的貢獻(xiàn)。實際上,事件或功能部件的貢獻(xiàn)在不同的應(yīng)用程序域間有顯著差異。因此,可以為特定的用戶級應(yīng)用程序(例如操作系統(tǒng))來確定事件或微體系結(jié)構(gòu)功能部件成本/貢獻(xiàn)。下文將參考圖3來更詳細(xì)地論述模塊215。事件包括處理器中引起等待時間的任何操作、發(fā)生或動作。微處理器中的常見事件的一些示例包括低級高速緩存未命中、次級高速緩存未命中、高級高速緩存未命中、高速緩存訪問、高速緩存窺探、分支誤預(yù)測、從存儲器提取、引退時鎖定(lockatretirement)、硬件預(yù)提取、前端存儲、高速緩存分割(cachesplit)、存儲轉(zhuǎn)發(fā)問題、資源停止、回寫、指令解碼、地址轉(zhuǎn)換、對轉(zhuǎn)換緩沖器的訪問、整型運算數(shù)執(zhí)行、浮點運算數(shù)執(zhí)行、寄存器的重命名、指令的調(diào)度、寄存器讀取以及寄存器寫入。微體系結(jié)構(gòu)功能部件包括與前述的事件關(guān)聯(lián)的邏輯、功能單元、資源或其他功能部件。微體系結(jié)構(gòu)功能部件的示例包括高速緩存、指令高速緩存、數(shù)據(jù)高速緩存、分支目標(biāo)陣列、虛擬存儲器表、寄存器文件、轉(zhuǎn)換表、后備緩沖器、分支預(yù)測單元、硬件預(yù)提取器、執(zhí)行單元、亂序引擎、分配器單元、寄存器重命名邏輯、總線接口單元、提取單元、解碼單元、體系結(jié)構(gòu)狀態(tài)寄存器、執(zhí)行單元、浮點執(zhí)行單元、整型執(zhí)行單元、ALU以及微處理器的其他常見功能部件。每個指令的時鐘數(shù)性能的主要指標(biāo)之一是每個指令的時鐘數(shù)(CPI)。CPI可以分成多個組成部分,以便可以確定可能歸因于多個因素/事件的每一個因素/事件的周期百分比的指示。如上所述,這些因素可以包括諸如未命中高速緩存和進(jìn)入DRAM引起的等待時間、分支誤預(yù)測處罰、引退機(jī)制(即為了鎖定)引起的流水線延遲等的事件。另一些因素的示例包括與這些事件關(guān)聯(lián)的微體系結(jié)構(gòu)功能部件,例如未命中的高速緩存、用于分支預(yù)測的分支目標(biāo)陣列中的未命中、將總線接口用于進(jìn)入DRAM以及使用狀態(tài)才幾來實現(xiàn)鎖定。通常,通過將因素發(fā)生的次數(shù)乘以它以周期計的影響,然后除以總周期數(shù)來確定該因素的相對貢獻(xiàn)。雖然對于標(biāo)量非流水線非推測機(jī)器來說能夠精確地提供此類細(xì)分,但是對于超標(biāo)量流水線亂序且高度推測機(jī)器來說難以給出精確的周期統(tǒng)計。工作負(fù)荷中通常存一部分停止。因此,該停止的局部影響對程序的總關(guān)鍵路徑產(chǎn)生的貢獻(xiàn)可能遠(yuǎn)比理論上每個實例成本對程序的總關(guān)鍵路徑產(chǎn)生的貢獻(xiàn)小。意外的是,如果局部延遲導(dǎo)致較佳的總體調(diào)度,則局部停止甚至可能對程序的總執(zhí)行時間有正面影響。分析每個實例的貢獻(xiàn)/成本可以釆用多種不同的方式來確定每個實例事件成本,即事件或微體系結(jié)構(gòu)功能部件對關(guān)鍵路徑的貢獻(xiàn),這些方式包括(l)分析性估算;(2)來自性能監(jiān)視器的持續(xù)時間計數(shù);(3)由硬件性能監(jiān)視器和由模擬器測量的引退推出;以及(4)按微基準(zhǔn)測試、模擬和硅去功能部件測量的因事件數(shù)量的改變導(dǎo)致總執(zhí)行時間中的改變。在第一實施例中,在理論上確定每個實例成本,即功能部件的貢獻(xiàn)。理論貢獻(xiàn)可以包括功能部件操作或事件發(fā)生的經(jīng)驗知識以及體系結(jié)構(gòu)模擬。這常常通過理解微體系結(jié)構(gòu)、并且通常集中在執(zhí)行階段而非引退來導(dǎo)出。最簡單形式的分析性估算表征局部停止成本,與如何通過以并行方式執(zhí)行其他操作(執(zhí)行階段或指令)可獲得的并行性來涵蓋這些停止無關(guān)。在另一個實施例中,性能監(jiān)視器通過持續(xù)時間計數(shù)來確定功能部件的貢獻(xiàn)。一些性能監(jiān)視器事件被定義為對感興趣的事項發(fā)生的每個周期計數(shù)。這得到持續(xù)時間計數(shù),而不是實例計數(shù)。這兩類計數(shù)是狀態(tài)機(jī)(例如頁步行處理程序(pagewalkhandler)、鎖定狀態(tài)機(jī))處于活動的周期以及隊列中有一個或多個項(例如總線的未完成高速緩存未命中的隊列)的周期。這些示例測量執(zhí)行階段中的時間,而除非執(zhí)行處于引退狀態(tài)(此情況對應(yīng)于鎖定狀態(tài)機(jī)),否則不一定測量引退推出。此形式的功能部件在本領(lǐng)域中可用于評估基準(zhǔn)測試專用成本。引退推出在確定事件和功能部件在局部規(guī)一莫以及將該測量外推到全局規(guī)模上的貢獻(xiàn)是有用的。引退推出在一個操作在期望的時間或期望的周期期間不引退時發(fā)生。例如,對于順序的指令(或微操作)對,如果第二個指令在第一個指令之后沒有盡可能快地引退(通常在相同的周期內(nèi),或如果引退資源受限,則在下一個周期內(nèi)),則考慮推出該引退。引退推出提供向后看、對關(guān)鍵路徑的貢獻(xiàn)的"區(qū)域性的,,(而非單純局部的)測量。就引退推出知道某個時間點之前已引退的所有操作的重疊的意義上來看,它是向后看的。如果局部13停止成本為50的兩個操作按相差一個周期開始,則第二個操作的引退推出至多為1,而非50。引退推出的實際測量可能因開始測量該推出的具體時間而有所不同。在一個實例中,測量從事件的發(fā)生開始。在另一個實施例中,推出的測量從指令或操作應(yīng)該已被引退的時間開始。在再一個實施例中,僅通過對引退推出發(fā)生的次數(shù)計數(shù)來測量引退推出,下文參考順序操作的引退推出來予以"i侖述。有多種方式用于通過引退推出來測量/導(dǎo)出每個實例的貢獻(xiàn)。為了說明,下文論述引退推出、順序操作和標(biāo)記的兩種方法。這兩種機(jī)制使用戶能夠通過利用不同閾值重復(fù)運行來創(chuàng)建引退推出的分布直方圖。順序操作的引退推出能夠創(chuàng)建程序中所有操作的引退延遲的分布圖。此外,引退推出的標(biāo)記能夠創(chuàng)建個別/特定事件(例如分支誤預(yù)測的個別貢獻(xiàn))的延遲分布圖。順序操作的引退推出,即'隻引退限定戶指定的閾值的順序操作實例進(jìn)行計數(shù)。因此,測量連續(xù)操作的推出并報告等待時間超過預(yù)定義閾值的推出的數(shù)量。在一個實施例中,使用專用計數(shù)器來測量慢引退限定,該專用計數(shù)器對沒有引退來自線程的的指令的周期計數(shù)。只要第一個操作引退,就將該計數(shù)器初始化為用戶定義的值。如果計數(shù)器因具體設(shè)計而對于特定的第二指令下溢或上溢,則將該第二指令視為具有慢引退,即引退推出。作為采用遞減計數(shù)器的設(shè)計的一個示例,如果用戶希望對25個周期中推出多少指令引退計數(shù),則該計數(shù)器設(shè)為25的預(yù)定義值。如果它下溢,則認(rèn)為推出第二指令的引退。在遞增計數(shù)器實現(xiàn)中,可以將用戶定義的值初始化為0或負(fù)值。,如,將計數(shù)器初始化為0,并遞增計數(shù)到25的閾值。如果計數(shù)器上溢,則存在引退推出。在備選方式中,可以將遞增計數(shù)器初始化為-25,并遞增計數(shù)到0,這在確定計數(shù)器上溢時筒化了邏輯比較。引退推出標(biāo)記,即引退推出分布描繪與慢引退限定非常相似,引退推出標(biāo)記限定具有超過某個閾值的引退推出的指令或操作。但是,在此機(jī)制中,慢引退限定是對感興趣的指令或操作的許多其他限定的其中之一。其他限定可以包括針對該指令或操作發(fā)生的特定事件,例如第二級高速緩存未命中。在邏輯上將這些限定組合,并且如果指令或操作滿足指定的限定標(biāo)準(zhǔn),則對該指令或操作計數(shù)。注意,可以對限定器(qualifier)/事件進(jìn)行邏輯運算或?qū)⑺鼈兘M合,這在指定的機(jī)器狀態(tài)寄存器中是可以進(jìn)行用戶定義的。在另一個實施例中,基于一個或多個特定事件的排除來標(biāo)記操作。如上所述,并行執(zhí)行可以掩蔽特定事件的實際影響。作為特定的示例,對第三級高速緩存的未命中可能矮化對笫二級高速緩存的未命中的影響。為了隔離對第二級高速緩存的未命中的影響,如果特定操作導(dǎo)致對第二級高速緩存的未命中而未導(dǎo)致第三級高速緩存的未命中,則可以標(biāo)記該特定操作。換言之,從測量中排除對導(dǎo)致第三級高速緩存未命中的操作的測量。因此,該標(biāo)記包括在特定事件發(fā)生且至少第二事件未發(fā)生時選擇操作。直接參考圖7,其中圖示使用標(biāo)記機(jī)制來測量引退推出的實施例。在流程705中,當(dāng)特定事件發(fā)生和/或特定事件排除時標(biāo)記操作。該操作將在能夠?qū)崿F(xiàn)并行執(zhí)行的處理器中執(zhí)行。但是,該處理器還能夠?qū)崿F(xiàn)串行執(zhí)行、推測4丸行和亂序執(zhí)行。特定事件可以是上文論述的微處理器中的任何事件。在一個實施例中,事件是引退事件時的基于事件的精確采樣(preciseeventbasedsampling)(PEBS)。在PEBS中,將操作(微操作或指令)標(biāo)示(標(biāo)記)為已遇到感興趣的事件,例如高速緩存未命中。當(dāng)該操作引退時,引退邏輯注意到它^皮標(biāo)記并^t丸行特殊的動作。將指令的地址和體系結(jié)構(gòu)狀態(tài)(例如標(biāo)志和體系結(jié)構(gòu)寄存器)保存在存儲緩沖器中。在此情況中,將推出等待時間與其他信息一起記錄。程序執(zhí)行可以在那些特殊動作之后繼續(xù),直到記錄此類信息的存儲緩沖器(幾乎)滿為止。當(dāng)存儲緩沖器滿(或高于用戶指定的水位標(biāo))時,導(dǎo)致性能監(jiān)視中斷,由此以信號告知用戶應(yīng)該讀取該存儲緩沖器??梢杂捎布械挠邢逘顟B(tài)機(jī)、通過微^f戈碼中的指令或二者的組合來管理對PEBS執(zhí)行的動作。導(dǎo)致操作的標(biāo)記的一些事件的特定虧例包括高速緩存未命中、高速緩存訪問、高速緩存窺探、分支誤預(yù)測、引退時鎖定、硬件預(yù)提取、加載、存儲、回寫以及對轉(zhuǎn)換緩沖器的訪問。標(biāo)記包括選擇操作來用于測量。注意還可以將這些事件選為排除的目標(biāo),即如果這些事件的其中之一也與上文i侖述的特定事件同時發(fā)生,則可以不標(biāo)記該操作。在流程710中標(biāo)記或選擇^^喿作之后,確定操作的引退推出。如上所述,確定引退推出可以是對引退中的延遲的實際測量,以及由于該特定事件而簡單地將該操作作為一個延遲的引退。在目標(biāo)是實際測量引退的實施例中,計數(shù)器(例如用于慢引退限定的計數(shù)器)中的閾值模數(shù)設(shè)為0,以使引退時的最終值為等于引退推出的正數(shù)。在一個實例中,初始化y—計數(shù)器并基于第一計數(shù)器的初始化和存儲寄存器的使用來確定引退推出。在此實例中,將第一計數(shù)器的狀態(tài)復(fù)制到另一個機(jī)器狀態(tài)寄存器。當(dāng)引退時,凍結(jié)該存儲寄存器而不對其更新。因此,該存儲寄存器在軟件讀出它之前是穩(wěn)定不變的。注意,測量推出是參考引退時的測量來引述的。但是,還可以在亂序機(jī)器中的其他有序阻塞(in-orderchoke)點處測量推出,例如提取存儲器操作、將存儲器操作解碼、發(fā)出存儲器操作、將存儲器操作分配到存儲器排序緩沖器中以及存儲器操作的全局可見性。局部停止成本可能:R并行:執(zhí)行的其他工作部分或完全地涵蓋。捕捉區(qū)域性延遲的引退推出也可能被測量引退推出時仍在進(jìn)行中的工作或其他停止部分或完全地涵蓋。如上文論述的,圖1中圖示了涵蓋引退推出的一種方式。給定操作的停止對程序的關(guān)鍵路徑產(chǎn)生的貢獻(xiàn)的最終測量是由于該停止原因而發(fā)生的執(zhí)行等待時間上的變化。對全局關(guān)鍵路徑的平均增量貢獻(xiàn)的一個指示是測量程序的整個執(zhí)行或長時間追蹤(即長時間追蹤執(zhí)行監(jiān)視)。這種方法涵蓋了流水線中任何位置發(fā)生的對關(guān)鍵路徑的貢獻(xiàn),并將其他并行性可以涵蓋局部延遲的因素納入考慮。通過更改事件實例的數(shù)量(這更改了執(zhí)行時間)并計算將執(zhí)行時間上的變化除以事件數(shù)量上的變化來導(dǎo)出增量貢獻(xiàn)。例如,如果增加高速緩存大小將高速緩存未命中的次數(shù)從100降低到90,并將執(zhí)行時間從2000降低到1600,則增量貢獻(xiàn)是每次未命中(2000-1600)/(100-90)=40周期??梢圆捎枚喾N方式來實現(xiàn)Jt技術(shù)。第一,可以構(gòu)造兩個版本的微基準(zhǔn)測試,一個采用事件而另一個沒有。第二,可以更改模擬器配置以引入或消除事件。在兩種配置中對一個或多個程序運行該模擬,并對每種情況記錄事件的婆t量和總執(zhí)行時間。最后,一些產(chǎn)品支持硅去功能部件,例如收縮分支目標(biāo)陣列的大小或更改策略。例如,這可以用于影響分支預(yù)測率。如上所述,可以通過如下方式來進(jìn)行確定微體系結(jié)構(gòu)功能部件的貢獻(xiàn),即事件成本(l)分析性估算;(2)來自性能監(jiān)視器的持續(xù)時間計數(shù);(3)由硬件性能監(jiān)視器和由模擬器測量的引退推出;以及(4)通過微基準(zhǔn)測試、模擬和硅去功能部件測量的總執(zhí)行時間。但是,性能監(jiān)視和確定對關(guān)鍵路徑的貢獻(xiàn)不限于上述方法的其中之一的正交實現(xiàn),相反可以利用4壬何組合來分析硅功能部件的事件對關(guān)鍵路徑的貢獻(xiàn)。特定事件的每個實例成本的示例為了評估多種事件的每個實例成本,采用了分析每個實例貢獻(xiàn)部分中描述的一些技術(shù)。當(dāng)然,存在多種對追蹤的全面CPI細(xì)分的貢獻(xiàn)項(contributor)。選擇了四個重要的貢獻(xiàn)項來演示每種描述的技術(shù)的效用。但是,對于每個事件,使用所有這些技術(shù)不總是可能的或方便的。例如,性能監(jiān)視持續(xù)時間計數(shù)對于關(guān)注的事件可能不可用。相似地,通過調(diào)整模擬器中的大小或策略來擾亂執(zhí)行可能不會影響事件發(fā)生的次數(shù)或更改特定追蹤中的運行時間。表1示出基于;漠?dāng)M執(zhí)行的擾亂對這四個原因中的每個原因的估算成本的匯總,并提供基于總體模擬結(jié)果的影響中的變化的指示。<table>tableseeoriginaldocumentpage18</column></row><table>表l:經(jīng)驗每個實例成本分支誤預(yù)測是應(yīng)用程序降速的常見原因。它們迫使處理器流水線重新啟動并拋棄推測工作。分支預(yù)測器隨著時間推移變得越來越準(zhǔn)確。然而,隨著更深且更寬的流水線,誤預(yù)測可能導(dǎo)致完成有用工作的機(jī)會大量丟失。<table>tableseeoriginaldocumentpage18</column></row><table>表2:分支誤預(yù)測的每個實例事件成本分支誤預(yù)測成本的分析性測量是從正常地檢測到分支誤預(yù)測起,執(zhí)行并返回到正常地從追蹤高速緩存提取指令的延遲(31)的周期數(shù)。分析視角測量機(jī)器前端中發(fā)生的實際延遲。如果評估分支條件時因為資源爭用或因為未解決的數(shù)據(jù)依賴(尤其是在該依賴是對經(jīng)受高速緩存未命中的加載的情況中)而存在任何延遲,則會增加該延遲。出于這些原因,如微基準(zhǔn)測試、HW引退推出和模擬的引退推出中可見到的,引退推出延遲可能在三十多到四十多。表2中對應(yīng)于HW引退推出示出三個值。這里使用的微基準(zhǔn)測試具有含條件分支且無存儲器引用的循環(huán)體。具有36個周期延遲的分支比具有35個周期延遲的分支多28%,具有40個周期延遲的分支比具有39個周期延遲的分支多27%,以及具有41個周期的延遲的分支比具有40個周期延遲的分支多43%。微基準(zhǔn)測試接近地與分析模型匹配,因為它們包含不多的并行工作,無需復(fù)雜的清除。但是,如圖1所示,在指令106具有分支誤預(yù)測的情況下,如果機(jī)器的后端中已經(jīng)有較早的引退推出,則前端中的延遲可能不會有影響。而且,較遲的高速緩存未命中可能因遠(yuǎn)遠(yuǎn)更大的延遲而掩蓋該分支對關(guān)鍵路徑的貢獻(xiàn)。其一個原因是,對總關(guān)鍵路徑的平均貢獻(xiàn)遠(yuǎn)低于引退推出。已由禁用間接分支預(yù)測器得到對關(guān)鍵路徑的it擬的總貢獻(xiàn),由此它就可以4義預(yù)測最后一個目標(biāo)。而且,在真實應(yīng)用中,路徑外(off-path)代碼常??梢詧?zhí)行有用的數(shù)據(jù)預(yù)提取和DTLB查詢,這減少誤預(yù)測的影響。最后,將一個誤預(yù)測的處理與第二誤預(yù)測的處理重疊可以減少對總關(guān)鍵路徑的平均貢獻(xiàn)。從此論述來看,顯然對關(guān)4建路徑的實際平均貢獻(xiàn)可能與具體上下文高度相關(guān),并且引退推出可能高估每個實例成本。可以將例如~70%的縮放系數(shù)應(yīng)用于HW測量的引退推出以得到中等每個實例成本。注意此事件成本可能與特定微體系結(jié)構(gòu)以及甚至相同微體系結(jié)構(gòu)系列內(nèi)的實現(xiàn)高度相關(guān)。,一j^a〃專遽凝存^命^第一級高速緩存未命中是常發(fā)生的。亂序處理器設(shè)計為查找指令流中的獨立工作以使處理器保持繁忙,同時處理第二級高速緩存未命中。因此,局部Ll未命中成本(例如引退推出)中僅小部分對19總關(guān)鍵路徑產(chǎn)生貢獻(xiàn)。<table>tableseeoriginaldocumentpage20</column></row><table>表3:第一級高速緩存未命中的每個實例事件成本這里分析模型描述正常的加載使用成本之上的LI未命中的開銷。該事件的微基準(zhǔn)測試由面對18個周期開銷的均勻分布的指針跟蹤循環(huán)構(gòu)成。可以將~50%的縮》文系數(shù)應(yīng)用于所有Ll未命中事件的硬件引退推出以得出中值每個實例成本??梢詫⒌诙壐咚倬彺嫖疵邪l(fā)出到較高級高速緩存或存儲器控制器/DRAM。亂序處理器設(shè)計為查找獨立的L2高速緩存未命中以將這些長時間事務(wù)的處理實現(xiàn)流水線化。<table>tableseeoriginaldocumentpage20</column></row><table>表4:第二級高速緩存未命中的每個實例事件成本高速緩存未命中的分析性測量是具有流式DRAM頁命中的306個時鐘。這從3.4GHz處理器上具有800MHzFSB的90納秒DRAM計算出。由簡單指針跟蹤代碼構(gòu)成的微基準(zhǔn)測試較好地與該分析模型相關(guān)。該內(nèi)核設(shè)計為在DTLB中命中,但是從硬件預(yù)提取器實現(xiàn)不了任何有益之處。這里有少i午并行工作要做,這可以隱藏一些等待時間,并有少許獨立工作要〗故,這將阻止每個加載立即^L發(fā)送到DRAM。引退推出和模擬執(zhí)行全部導(dǎo)致小于分析值的每個實例成本。實際上,模擬執(zhí)行顯示不同的跟蹤之間每個實例成本上范圍較寬的變化,比分析值更短以及更長。顯然,通過頻譜的短等待時間端上疊加的DRAM訪問有所獲益。較長的每個實例等待時間可能以多種方式發(fā)生,包括處理器存儲器請求排隊深度限制和總線帶寬不足。硬件預(yù)提取器在此等待時間中起非常重要的作用。雖然相應(yīng)地進(jìn)行扼流控制,但是它能夠?qū)⒍鄠€請求插入到存儲器系統(tǒng)中,由此增加后續(xù)需求加載的等待時間。在頻譜的另一端,預(yù)提取器有時預(yù)提取得太遲,以致于無法避免專交早加栽時的未命中,但是足夠早以致于已導(dǎo)致數(shù)據(jù)在較早加載時處于從DRAM發(fā)出的途中。這導(dǎo)致較短的每個實例有效未命中成本。一般來說,中值每個實例成本與HW引退推出測量非常相似。如上文提到的,成本的變化在不同應(yīng)用程序域之間有顯著差異。因此,在確定特定功能部件的貢獻(xiàn)時,潛在地具有用于測量給定應(yīng)用程序的成本的場內(nèi)機(jī)制會極其有幫助。鑒于這種變化,可以在每個應(yīng)用程序的基礎(chǔ)上調(diào)整微體系結(jié)構(gòu)。調(diào)整微體系結(jié)構(gòu)可以例如在引退推出測量和總執(zhí)行時間測量期間調(diào)整微體系結(jié)構(gòu)以確定每個實例事件成本。^f旦是,也可以響應(yīng)每個實例事件成本來調(diào)整微體系結(jié)構(gòu)。調(diào)整微體系結(jié)構(gòu)功能部件或微體系結(jié)構(gòu)包括更改大小、啟用或禁用微體系結(jié)構(gòu)內(nèi)的邏輯、功能部件和/或單元以及更改微體系結(jié)構(gòu)內(nèi)的策略。在一個實施例中,調(diào)整l基于微體系結(jié)構(gòu)功能部件的貢獻(xiàn)(即每個實例貢獻(xiàn))來實現(xiàn)的。作為第一個示例,改變功能部件的大小、啟用功能部件、禁用功能部件或基于哪個動作減少關(guān)鍵路徑中的等待時間來改變與功能部件關(guān)聯(lián)的策略。作為另一個示例,可以使用例如功率等其他考慮來調(diào)整微體系結(jié)構(gòu)。在此示例中,可以確定禁用功能部件將等待時間增加不大的量。但是,基于功能部件的性能獲益不大且禁用該功能部件將節(jié)省很大的功率的確定,調(diào)整該功能部件,例如禁用該功能部件。作為經(jīng)驗示例,有關(guān)先前的體系結(jié)構(gòu)注意到,在多個宏工作負(fù)載中,注意到大量的混淆沖突。發(fā)生混淆沖突的這些示例的其中之一是在訪問相同高速緩存行的多個線程之間。軟件線程是可用來獨立于另一個線程來執(zhí)行的程序的至少一部分。一些微處理器甚至支持硬件中的多線程,其中處理器具有至少多組完整且獨立的體系結(jié)構(gòu)狀態(tài)寄存器,用于獨立地調(diào)度多個軟件線程的執(zhí)行。但是,這些硬件線程共享例如高速緩存的一些資源。先前,多個線程對高速緩存中的相同高速緩存行的訪問導(dǎo)致高速緩存行的位移和局部性的減少。因此,線程的數(shù)據(jù)存儲器的起始地址:故設(shè)為不同的值以便避免線程之間高速緩存中的高速緩存行的位移。參考圖3,圖示處理器205中模塊215的特定實施例。模塊215用于至少基于微體系結(jié)構(gòu)功能部件對關(guān)鍵路徑的貢獻(xiàn)來調(diào)整用戶級應(yīng)用程序的微體系結(jié)構(gòu)功能部件。這種類型的調(diào)整的非常特別的示例包括在應(yīng)用程序期間或例如垃圾收集的應(yīng)用程序階段監(jiān)視硬件預(yù)提取器的性能。在啟用硬件預(yù)提取器的情況下運行垃圾收集,然后在禁用硬件預(yù)提取器的情況下運行垃圾收集,發(fā)現(xiàn)在一些實例中,在沒有硬件預(yù)提取器的情況下,垃圾收集執(zhí)行得更好。因此,可以在垃圾收集應(yīng)用程序的執(zhí)行時調(diào)整微體系結(jié)構(gòu)并禁用硬件預(yù)提取器?;谛阅芊治龈牟呗缘钠渌纠A(yù)提取的積極性、在同時線程化機(jī)器中相對地將資源分配到不同線程、推測頁步行、對TLB的推測更新、以及在用于分支和存儲器依賴的預(yù)測機(jī)制之間進(jìn)行選擇。圖3圖示微體系結(jié)構(gòu)功能部件存儲器子系統(tǒng)220、高速緩存350、前端225、分支預(yù)測355、提取360、執(zhí)行單元235、高速緩存350、執(zhí)行單元355、亂序引擎230和引退365。微體系結(jié)構(gòu)功能部件的其他示例包括高速緩存、指令高速緩存、數(shù)據(jù)高速緩存、分支目標(biāo)陣列、虛擬存儲器表、寄存器文件、轉(zhuǎn)換表、后備緩沖器、分支預(yù)測單元、間接分支預(yù)測器、硬件預(yù)提取器、執(zhí)行單元、亂序引擎、分配器單元、寄存器重命名邏輯、總線接口單元、提取單元、解碼單元、體系結(jié)構(gòu)狀態(tài)寄存器、執(zhí)行單元、浮點執(zhí)行單元、整型執(zhí)行單元、ALU、以及微處理器的其他常見功能部件。如上所述,調(diào)整微體系結(jié)構(gòu)功能部件可以包括啟用或禁用微體系結(jié)構(gòu)功能部件。與上文硬件預(yù)提取器的示例一樣,當(dāng)特定軟件程序期間禁用功能部件時,如果確定貢獻(xiàn)將得到增強(qiáng),即更好,則禁用預(yù)提取器。確定微體系結(jié)構(gòu)功能部件對用戶級應(yīng)用程序的關(guān)鍵路徑的貢獻(xiàn)的一種方式是在啟用該微體系結(jié)構(gòu)功能部件的情況下執(zhí)行用戶級應(yīng)用程序。然后在禁用該微體系結(jié)構(gòu)功能部件的情況下執(zhí)行用戶級應(yīng)用程序。最后,基于啟用功能部件情況下用戶級應(yīng)用程序的執(zhí)行與禁用功能部件情況下用戶級應(yīng)用程序的執(zhí)行的比較來確定微體系結(jié)構(gòu)功能部件對用戶級應(yīng)用程序的關(guān)鍵路徑的貢獻(xiàn)。簡單來說,通過在每次執(zhí)行用戶級應(yīng)用程序時測量總執(zhí)行時間,確定哪個總執(zhí)行時間較好;啟用功能部件情況下的總執(zhí)行時間還是禁用功能部件情況下的總執(zhí)行時間。作為特定示例,模塊215包括去功能部件寄存器305。去功能部件寄存器305包括多個字段,例如字段310-335。這些字段可以是各個位,或每個字段可以具有多個位。此外,每個字段可用來調(diào)整微體系結(jié)構(gòu)功能部件。換言之,該字段與微體系結(jié)構(gòu)功能部件關(guān)聯(lián),即字段310與分支預(yù)測355關(guān)聯(lián),字段315與提取360關(guān)聯(lián),字段320關(guān)聯(lián)到高速緩存350,字段325關(guān)聯(lián)到引.退邏輯365,字段330關(guān)聯(lián)到執(zhí)行單元355,以及字段335關(guān)聯(lián)到高速緩存350。當(dāng)設(shè)置這些字段的其中一個字段(例如字段310)時,它禁用分支預(yù)測355。如上所論述,如果在被禁用時功能部件對關(guān)鍵路徑的性能貢獻(xiàn)得以增強(qiáng),則另一個模塊(例如嵌入在模塊215中或作為模塊215的一部分、與模塊215關(guān)聯(lián)的軟件程序)可以設(shè)置字段(例如字段310)。如上文提到的,模塊215可以是硬件、軟件或它們的組合,以及與模塊210關(guān)聯(lián)或部分地與模塊210重疊。例如,作為模塊210的功能的一部分,為了確定用戶級程序執(zhí)行期間分支預(yù)測355的貢獻(xiàn),可以使用;f莫塊215中圖示的寄存器305來調(diào)整或禁用處理器205的功能部件(例如分支預(yù)測355)。在另一個實施例中,去功能部件(即調(diào)整)包括以物理方式或虛擬方式更改功能部件的大小。在上面示例的備選方式中,如果顯示分支預(yù)測355的貢獻(xiàn)增強(qiáng)了用戶級應(yīng)用程序的執(zhí)行,則可以通過字段310相應(yīng)地增加/減少分支預(yù)測355的大小。下面的示例i兌明通過調(diào)整高速緩存的大小來調(diào)整處理器以發(fā)現(xiàn)功能部件或事件(例如高速緩存未命中)的貢獻(xiàn)的能力。調(diào)整軟件參考圖4,圖示處理器監(jiān)視性能和調(diào)整軟件的實施例。處理器405(與圖2和圖3所示的處理器205更相似)可以具有與處理器關(guān)聯(lián)的任何公知邏輯。如圖所示,處理器405包括如下單元/功能部件存儲器子系統(tǒng)420、前端425、亂序引擎430以及執(zhí)行單元435。在這些功能塊的每個功能塊內(nèi),可能存在多種其他微體系結(jié)構(gòu)功能部件,例如第二級高速緩存421、4是取/解碼單元427、分支預(yù)測426、引退431、第一級高速緩存436和^l行單元437。如上所述,模塊410為軟件程序的執(zhí)行確定關(guān)鍵路徑中的每個實例事件成本。從上文導(dǎo)出的每個實例事件成本的示例包括持續(xù)時間計數(shù)、引退推出測量和長時間追蹤執(zhí)行測量。再次要注意模塊410和模塊415可能具有模糊的邊界,因為它們的功能、硬件、軟件或硬件與軟件的組合可能重疊。與其中模塊415通過與功能部件接口來調(diào)整微體系結(jié)構(gòu)的圖3對比,模塊415基于關(guān)鍵路徑中的每個實例事件成本來調(diào)整軟件程序。模塊415可以包括用于編譯和/或解釋要在處理器405上執(zhí)行的代碼的任何硬件、軟件或組合。在一個實施例中,;溪塊415基于確定的每個實例事件成本來重新編譯程序的后續(xù)運行時執(zhí)行的代碼,以便比最初編譯的代碼更頻繁或不頻繁地利用前文提到的微體系結(jié)構(gòu)功能部件。在另一個實施例中,模塊415對于程序的相同運行的24余下部分以不同的方式編譯代石馬,即使用動態(tài)編譯或重新編譯來改進(jìn)特定工作負(fù)載和平臺上的執(zhí)行時間。如上所述,除了能夠調(diào)整^f敬體系結(jié)構(gòu)外,還可以通過調(diào)整應(yīng)用程序以使之最佳地在該平、臺上運行來達(dá)到更好的性能。調(diào)整軟件包括優(yōu)化代碼。調(diào)整應(yīng)用程序的一個示例是軟件程序的重新編譯。調(diào)整軟件還可以包括將軟件/代碼優(yōu)化成塊數(shù)據(jù)結(jié)構(gòu)以吻合地置于高速緩存內(nèi),重新布置代碼以利用缺省分支預(yù)測條件而無需使用分支預(yù)測器表資源,在不同指令地址發(fā)出代碼以避免可能導(dǎo)致分支預(yù)測和代碼高速緩存結(jié)構(gòu)中的局部性管理問題的某些混淆和沖突狀況,重新布置動態(tài)分配的存儲器或堆棧上的數(shù)據(jù)(包括堆棧對齊)以避免跨高速緩存行引起的處罰,以及調(diào)節(jié)訪問的粒度和對齊以避免存儲轉(zhuǎn)發(fā)問題。作為調(diào)整軟件的特定示例,軟件450利用處理器405/在處理器405上執(zhí)行。模塊410確定每個實例事件成本,例如分支預(yù)測邏輯426中誤預(yù)測分支的成本。基于此分析,模塊415將軟件450重新布置成軟件460,它是重新布置以不同方式在處理器405上執(zhí)行的相同的用戶級應(yīng)用程序。在此示例中,重新布置軟件460以便更好地利用缺省分支預(yù)測條件。因此,重新編譯軟件460以不同方式利用分支預(yù)測426。其他示例可以包括4丸行代碼中用于禁用分支預(yù)測邏輯426的指令和更改分支預(yù)測邏輯426使用的軟件提示。用于性能監(jiān)視的系統(tǒng)接下來參考圖5,圖示使用性能監(jiān)視的系統(tǒng)。處理器505耦合到控制器集線器550,而控制器集線器550耦合到存儲器560??刂破骷€器550可以是存儲器控制器集線器或芯片組裝置的其他部分。在一些實例中,控制器集線器550具有集成的視頻控制器,例如視頻控制器555。但是,視頻控制器555還可以位于耦合到控制器集線器550的圖形裝置上。注意每個圖示的裝置之間可能存在其他組件、互連、裝置和電路。處理器505包括沖莫塊510。對莫塊510用于確定軟件程序執(zhí)行期間的每個實例事件貢獻(xiàn),基于每個實例事件貢獻(xiàn)來調(diào)整微處理器505的體系結(jié)構(gòu)配置,存儲體系結(jié)構(gòu)配置,并在軟件程序的后續(xù)執(zhí)行時基于存儲的體系結(jié)構(gòu)配置再次調(diào)整體系結(jié)構(gòu)配置。作為特定示例,模塊510利用貢獻(xiàn)模塊511確定軟件程序(例如操作系統(tǒng))執(zhí)行期間的事件貢獻(xiàn)。軟件程序的其他示例包括訪客應(yīng)用程序、操作系統(tǒng)應(yīng)用程序、基準(zhǔn)測試、微基準(zhǔn)測試、驅(qū)動程序和嵌入式應(yīng)用程序。對于此示例,假定事件貢獻(xiàn)例如對第一級高速緩存536的未命中不顯著地影響執(zhí)行,可以減小高速緩存536的大小以節(jié)省功率而不會影響關(guān)鍵路徑中的執(zhí)行時間。因此,調(diào)整模塊512通過減小第一級高速緩存536的大小來調(diào)整處理器505的體系結(jié)構(gòu)。如上所述,可以利用具有與處理器505中的不同功能部件關(guān)聯(lián)的字段的寄存器來實現(xiàn)調(diào)整。在使用寄存器的情況中,存儲體系結(jié)構(gòu)配置包括將寄存器值存儲在存儲裝置513中,存儲裝置513僅僅是另一個寄存器或存儲器裝置(例如存儲器560)。在軟件程序的后續(xù)執(zhí)行時,無需重復(fù)性能監(jiān)視步驟,并可以加載先前存儲的配置。因此,基于存儲的配置來對軟件程序再次調(diào)整體系結(jié)構(gòu)。用于性能監(jiān)視的方法圖6a圖示用于監(jiān)視性能并調(diào)整微處理器的流程圖的實施例。在流程605中,使用微處理器執(zhí)行第一軟件程序。在一個實施例中,微處理器能夠?qū)崿F(xiàn)亂序并行執(zhí)行。接下來在流程610中,確定與執(zhí)行第一軟件程序關(guān)聯(lián)的關(guān)鍵路徑的事件成本。參考圖6b,圖示確定事件的成本和調(diào)整微處理器的示例??梢酝ㄟ^分析性分析、持續(xù)時間計數(shù)(如圖流程611所示)、引退推出(例如圖流程612所示)和/或總執(zhí)行時間(如圖流程613所示)來確定事件成本。注意可以使用這些方法的任何組合來確定事件的成本。微處理器中的常見事件的一些示例包括低級高速緩存未命中、次級高速緩存未命中、高級高速緩存未命中、高速緩存訪問、高速緩存窺探、分支誤預(yù)測、從存儲器提取、引退時鎖定、硬件預(yù)提取、加載、存儲、回寫、指令解碼、地址轉(zhuǎn)換、對轉(zhuǎn)換緩沖器的訪問、整型運算數(shù)執(zhí)行、浮點運算數(shù)纟丸行、寄存器的重命名、指令的調(diào)度、寄存器讀取以及寄存器寫入。返回到圖6a,在流程615中,基于與執(zhí)行第一軟件程序關(guān)聯(lián)的關(guān)鍵路徑的事件成本來調(diào)整微處理器。調(diào)整包括對微體系結(jié)構(gòu)的任何更改以增強(qiáng)性能和/或改善執(zhí)^"時間。再次參考圖6b,調(diào)整的一個示例包括啟用或禁用微體系結(jié)構(gòu)功能部件(如圖流程617所示)。功能部件的一些示范性示例包括高速緩存、轉(zhuǎn)換表、轉(zhuǎn)換后備緩沖器(TLB)、分支預(yù)測單元、硬件預(yù)提取器、執(zhí)行單元和亂序引擎。另一個示例包括更改使用微體系結(jié)構(gòu)功能部件的大小或頻率(如圖流程616所示)。在再一個實施例中,調(diào)整微處理器包括調(diào)整/編譯要執(zhí)行的軟件程序來以不同方式利用處理器,例如不利用硬件預(yù)提取器。目前為止,參考單個軟件程序來論述性能監(jiān)視和調(diào)整以描述性能監(jiān)視。但是,可以利用要在處理器上執(zhí)行的任何數(shù)量的應(yīng)用程序來實現(xiàn)性能監(jiān)視和調(diào)整。圖6c圖示概述(profiling)/調(diào)整第二程序的體系結(jié)構(gòu)且在再次加載第一應(yīng)用程序時再次調(diào)整微處理器的流程圖的實施例。流程605-615與圖6a中的流程相同。在流程620中,存儲表示調(diào)整與第一軟件程序關(guān)聯(lián)的微處理器的笫一配置。在流程625中,確定與執(zhí)行第二軟件程序關(guān)聯(lián)的關(guān)鍵路徑的事件成本。在流程630中,基于與執(zhí)行第二軟件程序關(guān)聯(lián)的關(guān)鍵路徑的事件成本來調(diào)整微處理器。最后,在流程635,在第一軟件程序的后續(xù)執(zhí)行時基于存儲的第一配置再次調(diào)整微處理器。從上文可看到,基于個別應(yīng)用程序的性能來動態(tài)地調(diào)整微處理器。因為以不同方式利用處理器中的某些功能部件,并且事件(例如高速緩存未命中)的成本對于不同的應(yīng)用程序有顯著差異,所以27可以將微體系結(jié)構(gòu)和/或軟件應(yīng)用程序本身調(diào)整到更有效率且快速地執(zhí)行。通過分析性方法、模擬、引退推出的測量和總執(zhí)行時間的任何組合來測量功能部件的事件和貢獻(xiàn)的成本,以確保監(jiān)視正確的性能,尤其是對于并行執(zhí)行機(jī)器監(jiān)視正確的性能。在前文說明書中,本發(fā)明是參考其特定示范實施例來描述的。但是,可設(shè)想在不背離所附權(quán)利要求中提出的本發(fā)明的較寬精神和范圍的前提下,可以對此進(jìn)行多種修改和更改。因此,本說明書和附圖應(yīng)視為說明性意義的而非限定性意義的。權(quán)利要求1.一種方法,包括使用微處理器執(zhí)行第一軟件程序;確定與執(zhí)行所述第一軟件程序關(guān)聯(lián)的關(guān)鍵路徑的事件成本;以及基于所述與執(zhí)行所述第一軟件程序關(guān)聯(lián)的關(guān)鍵路徑的事件成本來調(diào)整所述微處理器。2.如權(quán)利要求1所述的方法,其特征在于,所述微處理器能夠?qū)崿F(xiàn)亂序并行執(zhí)行。3.如權(quán)利要求1所述的方法,其特征在于,調(diào)整所述微處理器包括更改微體系結(jié)構(gòu)功能部件的大小,所述微體系結(jié)構(gòu)功能部件選自指令高速緩存、數(shù)據(jù)高速纟爰存、分支目標(biāo)陣列、虛擬存儲器表和寄存器文件。4.如權(quán)利要求1所述的方法,其特征在于,調(diào)整所述微處理器包括禁用微體系結(jié)構(gòu)功能部件,所述微體系結(jié)構(gòu)功能部件選自高速緩存、轉(zhuǎn)換表、后備緩沖器、分支預(yù)測單元、硬件預(yù)提取器和執(zhí)行單元。5.如權(quán)利要求l所述的方法,其特征在于,還包括存儲表示調(diào)整與所述第一軟件程序關(guān)聯(lián)的微處理器的第一配置;確定與執(zhí)行所述第二軟件^E序關(guān)聯(lián)的關(guān)鍵路徑的事件成本;基于所述與執(zhí)行所述第二^:件程序關(guān)聯(lián)的關(guān)鍵路徑的事件成本來調(diào)整所述微處理器;以及在所述第一軟件程序的后續(xù)執(zhí)行時基于所存儲的第一配置來再次調(diào)整所述微處理器。6.如權(quán)利要求5所述的方法,其特征在于,所述第一和第二軟件程序的每一個軟件程序選自訪客應(yīng)用程序、操作系統(tǒng)、操作系統(tǒng)應(yīng)用程序、基準(zhǔn)測試應(yīng)用程序、驅(qū)動程序和嵌入式應(yīng)用程序。7.如權(quán)利要求1所述的方法,其特征在于,確定關(guān)鍵路徑的事件成本包括執(zhí)行持續(xù)時間計數(shù)。8.如權(quán)利要求7所述的方法,其特征在于,所述執(zhí)行持續(xù)時間計數(shù)包括對所述微處理器中的狀態(tài)機(jī)處于活動的周期進(jìn)行計數(shù),其中所述狀態(tài)機(jī)選自頁步行處理工具、鎖定狀態(tài)機(jī)和總線的未完成高速緩存未命中的隊列。9.如權(quán)利要求1所述的方法,其特征在于,確定關(guān)鍵路徑的事件成本包括測量操作的引退推出。10.如權(quán)利要求9所述的方法,其特征在于,所述測量操作的引退推出包括測量連續(xù)成對的操作的引退中的延遲。11.如權(quán)利要求9所述的方法,其特征在于,所述測量操作的引退推出包括測量具有特定事件的操作的引退延遲。12.如權(quán)利要求11所述的方法,其特征在于,所述事件選自低級高速緩存未命中、次級高速緩存未命中、高級高速緩存未命中、高速緩存訪問、高速緩存窺探、分支誤預(yù)測、從存儲器提取、引退時鎖定、硬件預(yù)提取、加載、存儲、回寫、指令解碼、地址轉(zhuǎn)換、對轉(zhuǎn)換緩沖器的訪問、整型運算數(shù)執(zhí)行、浮點運算數(shù)執(zhí)行、寄存器的重命名、指令的調(diào)度、寄存器讀取以及寄存器寫入。13.—種方法,包括在特定事件發(fā)生時標(biāo)記操作,所述操作要在能夠?qū)崿F(xiàn)并行執(zhí)行的處理器中執(zhí)行;以及確定所述操作的引退推出。14.如權(quán)利要求13所述的方法,其特征在于,所述標(biāo)記操作包括在所述特定事件發(fā)生時選擇所述操作以進(jìn)行采樣。15.如權(quán)利要求13所述的方法,其特征在于,所述標(biāo)記操作包括在所述特定事件發(fā)生且第二事件未發(fā)生時選擇所述操作以進(jìn)行采樣。16.如權(quán)利要求14所述的方法,其特征在于,所述特定事件選自高速緩存未命中、高速緩存訪問、高速緩存窺探、分支誤預(yù)測、引退時鎖定、硬件預(yù)提取、加栽、存儲、回寫以及對轉(zhuǎn)換緩沖器的訪問。17.如權(quán)利要求14所述的方法,其特征在于,所述特定事件是引退事件時的基于事件的精確采樣。18.如權(quán)利要求14所述的方法,其特征在于,所述確定所述操作的引退推出延遲包括當(dāng)選擇所述操作以進(jìn)行采樣時初始化第一計數(shù)器;基于所述第一計數(shù)器的初始化和存儲寄存器的使用來確定所述引退推出。19.如權(quán)利要求18所述的方法,其特征在于,所述笫一計數(shù)器的初始化包括將所述第一計數(shù)器設(shè)置為用戶定義的值,以及其中存儲寄存器的使用包括在利用所述第一計數(shù)器測量所述引退推出時將所述第一計數(shù)器的狀態(tài)復(fù)制到所述存儲寄存器中,以便被讀出來確定所述引退推出。20.—種i殳備,包括微處理器,所述微處理器包括第一模塊,所述第一^f莫塊用于為用戶級應(yīng)用程序確定微體系結(jié)構(gòu)功能部件的貢獻(xiàn);以及第二才莫塊,所述第二模塊用于在要執(zhí)行所述用戶級應(yīng)用程序時,至少基于所述微體系結(jié)構(gòu)功能部件的貢獻(xiàn)來調(diào)整所述微體系結(jié)構(gòu)功能部件。21.如權(quán)利要求20所述的設(shè)備,其特征在于,為用戶級應(yīng)用程序確定微體系結(jié)構(gòu)功能部件的貢獻(xiàn)包括在啟用所述微體系結(jié)構(gòu)功能部件的情況下執(zhí)行所述用戶級應(yīng)用程序;在禁用所述微體系結(jié)構(gòu)功能部件的情況下執(zhí)行所述用戶級應(yīng)用程序;以及基于啟用所述功能部件的情況下所述用戶級應(yīng)用程序的執(zhí)行與禁用所述功能部件的情況下所述用戶級應(yīng)用程序的執(zhí)行的比較,為所述用戶級應(yīng)用程序確定所述《故體系結(jié)構(gòu)功能部件的貢獻(xiàn)。22.如權(quán)利要求20所述的設(shè)備,其特征在于,調(diào)整所述微體系結(jié)構(gòu)功能部件包括更改所述微體系結(jié)構(gòu)功能部件的大小,所述微體系結(jié)構(gòu)功能部件選自指令高速緩存、數(shù)據(jù)高速緩存、分支目標(biāo)陣列、虛擬存儲器表、以及寄存器文件。23.如權(quán)利要求20所述的設(shè)備,其特征在于,調(diào)整所述微體系結(jié)構(gòu)功能部件包括禁用所述微體系結(jié)構(gòu)功能部件,所述微體系結(jié)構(gòu)功能部件選自指令高速緩存、數(shù)據(jù)高速緩存、轉(zhuǎn)換表、后備緩沖器、分支預(yù)測單元、硬件預(yù)提i[又器以及執(zhí)行單元。24.如權(quán)利要求20所述的設(shè)備,其特征在于,調(diào)整所述微體系結(jié)構(gòu)功能部件還基于所述微體系結(jié)構(gòu)功能部件所耗用的功率的量。25.如權(quán)利要求23所述的設(shè)備,其特征在于,所述第二模塊包括具有與所述微體系結(jié)構(gòu)功能部件關(guān)聯(lián)的字段的寄存器,其中所述字段在^皮設(shè)置時將禁用所述^t體系結(jié)構(gòu)功能部件;在所述功能部件被禁用時能增強(qiáng)所述功能部件的性能貢獻(xiàn)的情況下,用于設(shè)置所述寄存器中與所述微體系結(jié)構(gòu)功能部件關(guān)聯(lián)的字段的模塊。26.—種設(shè)備,包括微處理器,所述微處理器包括用于確定執(zhí)行軟件程序的每個實例事件成本的模塊;以及用于基于所述每個實例事件成本調(diào)整所述軟件程序的模塊。27.如權(quán)利要求26所述的"i殳備,其特征在于,確定每個實例事件成本包括通過從如下項構(gòu)成的組中選擇的性能監(jiān)視技術(shù)來導(dǎo)出所述每個實例事件成本持續(xù)時間計數(shù)、引退推出測量以及長時間追蹤執(zhí)行監(jiān)視。28.如權(quán)利要求26所述的設(shè)備,其特征在于,調(diào)整所述軟件程序選自重新編譯所述軟件程序、優(yōu)化所述軟件程序、將所述軟件程序優(yōu)化成塊數(shù)據(jù)結(jié)構(gòu)以吻合:l也置于高速緩存內(nèi)、重新布置所述軟件程序以利用缺省分支預(yù)測條件、在不同的指令地址處發(fā)出代碼、在動態(tài)分配的存儲器中重新布置數(shù)據(jù)以及調(diào)整訪問的粒度和對齊。29.—種系統(tǒng),包括控制器集線器,所述控制器集線器耦合到存儲器以及視頻控制器;微處理器,所述微處理器包括用于執(zhí)行如下步驟的模塊在軟件程序執(zhí)行期間確定每個實例事件貢獻(xiàn);基于所述每個實例事件貢^調(diào)整所述微處理器的體系結(jié)構(gòu)配置;存儲所述體系結(jié)構(gòu)配置;以及在所述軟件程序的后續(xù)執(zhí)行時基于所存儲的體系結(jié)構(gòu)配置再次調(diào)整所述體系結(jié)構(gòu)配置。30.如權(quán)利要求29所述的系統(tǒng),其特征在于,所述微處理器能夠?qū)崿F(xiàn)亂序并行執(zhí)行。31.如權(quán)利要求29所述的系統(tǒng),其特征在于,將所述體系結(jié)構(gòu)配置存儲在所述微處理器中的寄存器中。32.如權(quán)利要求29所迷的系統(tǒng),其特征在于,在軟件程序執(zhí)行期間確定每個實例事件貢獻(xiàn)包括測量多個特定事件發(fā)生的多個引退推出;以及基于所述多個引退推出和所述特定事件發(fā)生的次數(shù)導(dǎo)出所述特定事件的每個實例事件貢獻(xiàn)。33.如權(quán)利要求29所述的系統(tǒng),其特征在于,在軟件程序執(zhí)行期間確定每個實例事件貢獻(xiàn)包括多次執(zhí)行所述軟件程序,其中每次執(zhí)行所述軟件時更改特定事件發(fā)生的次數(shù),以及監(jiān)視所述微處理器中的關(guān)健路徑的性能;基于所述關(guān)鍵路徑的性能上的改變與所述特定事件發(fā)生的次數(shù)上的改變的比較,導(dǎo)出所述特定事件的每個實例事件貢獻(xiàn)。全文摘要本文描述一種用于監(jiān)視微體系結(jié)構(gòu)的性能和基于監(jiān)視的性能來調(diào)整微體系結(jié)構(gòu)的方法和設(shè)備。通過模擬、分析性原因查找、引退推出測量、總執(zhí)行時間和確定每個實例事件成本的其他方法來監(jiān)視性能?;诿總€實例事件成本,調(diào)整微體系結(jié)構(gòu)和/或執(zhí)行軟件以增強(qiáng)性能。文檔編號G06F17/50GK101427223SQ200680019059公開日2009年5月6日申請日期2006年6月1日優(yōu)先權(quán)日2005年6月1日發(fā)明者C·紐伯恩申請人:英特爾公司