用于監(jiān)視并調(diào)整微體系結(jié)構(gòu)的性能的方法、設(shè)備和系統(tǒng)的制作方法
【專利說明】
[0001] 本分案申請的母案申請日為2006年6月1日、申請?zhí)枮?00680019059. 9、發(fā)明名 稱為"用于監(jiān)視并調(diào)整微體系結(jié)構(gòu)的性能的方法、設(shè)備和系統(tǒng)"。
技術(shù)領(lǐng)域
[0002] 本發(fā)明涉及計算機系統(tǒng)領(lǐng)域,具體來說涉及微體系結(jié)構(gòu)的性能監(jiān)視和調(diào)整。
【背景技術(shù)】
[0003] 性能分析是表征、調(diào)試和調(diào)整微體系結(jié)構(gòu)設(shè)計、查找和修正硬件和軟件中的性能 瓶頸以及定位可避免的性能問題的基礎(chǔ)。隨著計算機業(yè)的發(fā)展,分析微體系結(jié)構(gòu)并基于該 分析來對微體系結(jié)構(gòu)進行更改的能力變得更加復(fù)雜且重要。
[0004] 除了提供盡可能最佳的平臺外,常常通過調(diào)整應(yīng)用程序以使之在該平臺上以最佳 表現(xiàn)運行來實現(xià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ā)生的頻度 和從改進微體系結(jié)構(gòu)的該部分獲得的多大獲益是必不可少的要素。
[0005] 在過去,串行執(zhí)行機器的性能監(jiān)視相對是直接的,因為跟蹤串行性能瓶頸遠比 檢測并行亂序執(zhí)行期間的性能極限容易得多。典型性能分析按如下方式將工作負荷的 CPI (每個指令的時鐘數(shù))分解成各個組成部分:1)硬件中的計數(shù)性能事件,2)估算每個事 件對程序的關(guān)鍵路徑的相對貢獻,以及3)將對工作負荷的性能瓶頸產(chǎn)生貢獻的各個組成 部分組合成總細分。估算單個微體系結(jié)構(gòu)原因的每個實例成本對于亂序且高度推測的機器 來說是困難的,其中有要涵蓋許多停止成本的大部分的足夠推測且流水線并行性。目前, 已經(jīng)采用專用方法來估算事件的每個實例影響,并且這些估算的精確度和變化常常是未知 的。
[0006] 例如,圖1圖示單問題機器中指令101-107的提取、執(zhí)行和引退(retirement)的 示例。指令102具有分支誤預(yù)測110,它使指令103的提取延遲,并顯著地在指令102之后推 出(pushout)指令103的引退。指令104具有第一級高速緩存未命中120,它進一步地推出 指令105的引退。但是指令104的引退推出125被指令105的第二級高速緩存未命中130 矮化(dwarfed),它具有如此長的等待時間,以致于指令106中的分支誤預(yù)測135對它的引 退時間沒有任何影響。正如圖1所列舉的,不管能夠?qū)崿F(xiàn)亂序高度推測并行執(zhí)行的處理器 中有全面的性能監(jiān)視,即使在單個問題機器中,測量引退推出時也存在無法理解的復(fù)雜性。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明涉及一種用于監(jiān)視并調(diào)整微體系結(jié)構(gòu)的性能的方法,包括:
[0008] 使用微處理器執(zhí)行第一軟件程序;
[0009] 確定與執(zhí)行所述第一軟件程序關(guān)聯(lián)的關(guān)鍵路徑的每個實例事件成本;以及
[0010] 基于所述與執(zhí)行所述第一軟件程序關(guān)聯(lián)的關(guān)鍵路徑的每個實例事件成本來調(diào)整 所述微處理器的硬件。
[0011] 本發(fā)明涉及一種用于監(jiān)視并調(diào)整微體系結(jié)構(gòu)的性能的設(shè)備,包括:
[0012] 微處理器,所述微處理器包括:
[0013] 用于確定執(zhí)行軟件程序的每個實例事件成本的模塊;以及
[0014] 用于基于所述每個實例事件成本調(diào)整所述軟件程序的模塊。
[0015] 本發(fā)明涉及一種用于監(jiān)視并調(diào)整微體系結(jié)構(gòu)的性能的系統(tǒng),包括:
[0016] 控制器集線器,所述控制器集線器耦合到存儲器以及視頻控制器;
[0017] 微處理器,所述微處理器包括用于執(zhí)行如下步驟的模塊:
[0018] 在軟件程序執(zhí)行期間確定每個實例事件貢獻;
[0019] 基于所述每個實例事件貢獻調(diào)整所述微處理器的體系結(jié)構(gòu)配置;
[0020] 存儲所述體系結(jié)構(gòu)配置;以及
[0021] 在所述軟件程序的后續(xù)執(zhí)行時基于所存儲的體系結(jié)構(gòu)配置再次調(diào)整所述體系結(jié) 構(gòu)配置。
【附圖說明】
[0022] 附圖以舉例方式而無意作為限制圖示了本發(fā)明。
[0023] 圖1圖示單個問題機器中多個操作的提取、執(zhí)行和引退的實施例。
[0024] 圖2圖示一種處理器的實施例,該處理器包括第一性能監(jiān)視模塊和第二微體系結(jié) 構(gòu)調(diào)整模塊。
[0025] 圖3圖示圖2的特定實施例。
[0026] 圖4圖示一種處理器的實施例,該處理器包括用于以靜態(tài)或動態(tài)方式重新編譯軟 件的模塊。
[0027] 圖5圖示一種系統(tǒng)的實施例,該系統(tǒng)包括具有用于監(jiān)視處理器的性能和調(diào)整處理 器的微體系結(jié)構(gòu)的模塊的處理器。
[0028] 圖6a圖示用于監(jiān)視性能并基于性能來調(diào)整微處理器的流程圖的實施例。
[0029] 圖6b圖示圖6a的特定實施例。
[0030] 圖6c圖示用于監(jiān)視性能并調(diào)整微處理器的另一個實施例。
[0031] 圖7圖示用于在特定事件發(fā)生時測量引退推出的實施例。
【具體實施方式】
[0032] 在下文描述中,提出了例如特定體系結(jié)構(gòu)、這些體系結(jié)構(gòu)內(nèi)的功能部件、調(diào)整機制 和系統(tǒng)配置的大量特定細節(jié)以便提供對本發(fā)明的透徹理解。但是,對于本領(lǐng)域技術(shù)人員顯 見的是,無需采用這些特定細節(jié)也能實施本發(fā)明。在一些其他情況中,沒有對例如公知的邏 輯設(shè)計、軟件編譯器、軟件重新配置技術(shù)和處理器去功能部件(processor defeaturing)技 術(shù)等的公知組件或方法進行詳細描述,以便避免不必要地妨礙了對本發(fā)明的理解。
[0033] 件能監(jiān)視
[0034] 圖2圖示一種處理器205的實施例,該處理器205具有性能監(jiān)視模塊210和調(diào)整 模塊215。處理器205可以是用于執(zhí)行代碼和/或?qū)?shù)據(jù)進行操作的任何部件。作為特定 實例,處理器205能夠?qū)崿F(xiàn)并行執(zhí)行。在另一個實施例中,處理器205能夠?qū)崿F(xiàn)亂序執(zhí)行。 處理器205還可以實現(xiàn)分支預(yù)測和推測執(zhí)行,以及實現(xiàn)其他公知的處理單元和方法。
[0035] 處理器250中圖示的其他處理單元包括:存儲器子系統(tǒng)220、前端225、亂序引擎 230和執(zhí)行單元235。這些模塊、單元或功能塊的每一個可以為處理器205提供前述的功能。 在一個實施例中,存儲器子系統(tǒng)包括較高級的高速緩存和用于與外部設(shè)備實現(xiàn)接口的總線 接口,前端225包括投機邏輯和提取邏輯,亂序引擎230包括用于將指令重新排序的調(diào)度邏 輯,以及執(zhí)行單元235包括以串行和并行執(zhí)行的浮點和整數(shù)執(zhí)行單元。
[0036] 模塊210和模塊215能以硬件、軟件、固件或其任何組合來實現(xiàn)。通常,在不同的 實施例中,模塊的邊界是不同的,并且一起來實現(xiàn)以及單獨地實現(xiàn)功能。在一個示例中,在 一個模塊中實現(xiàn)性能監(jiān)視和調(diào)整。在圖2圖示的實施例中,分別示出模塊210和模塊215 ; 但是模塊210和模塊215可以是由其他圖示的單元220-235執(zhí)行的軟件。
[0037] 模塊210用于監(jiān)視處理器205的性能。在一個實施例中,通過確定和/或?qū)С鲋?關(guān)鍵路徑的每個實例成本來實現(xiàn)性能監(jiān)視。關(guān)鍵路徑包括在將增加發(fā)生、任務(wù)或事件的等 待時間的情況下將會對完成操作、指令、指令集或程序所要耗費的時間產(chǎn)生貢獻的任何此 類發(fā)生、任務(wù)和/或事件的任何路徑或序列。在圖形學(xué)上來說,關(guān)鍵路徑有時可以稱為經(jīng)過 特定機器上運行的程序中的數(shù)據(jù)、控制和資源相關(guān)性的圖形的路徑,其中該相關(guān)圖形中的 任何弧的延長將導(dǎo)致該程序的執(zhí)行等待時間的增加。
[0038] 因此,換言之,事件/功能部件對關(guān)鍵路徑的每個實例貢獻是事件(例如第二級高 速緩存未命中)或微體系結(jié)構(gòu)功能部件(例如分支預(yù)測單元)對完成任務(wù)或程序中所經(jīng)歷 的等待時間的貢獻。實際上,事件或功能部件的貢獻在不同的應(yīng)用程序域間有顯著差異。因 此,可以為特定的用戶級應(yīng)用程序(例如操作系統(tǒng))來確定事件或微體系結(jié)構(gòu)功能部件成 本/貢獻。下文將參考圖3來更詳細地論述模塊215。
[0039] 事件包括處理器中引起等待時間的任何操作、發(fā)生或動作。微處理器中的常 見事件的一些示例包括:低級高速緩存未命中、次級高速緩存未命中、高級高速緩存未 命中、高速緩存訪問、高速緩存窺探、分支誤預(yù)測、從存儲器提取、引退時鎖定(lock at retirement)、硬件預(yù)提取、前端存儲、高速緩存分割(cache split)、存儲轉(zhuǎn)發(fā)問題、資源停 止、回寫、指令解碼、地址轉(zhuǎn)換、對轉(zhuǎn)換緩沖器的訪問、整型運算數(shù)執(zhí)行、浮點運算數(shù)執(zhí)行、寄 存器的重命名、指令的調(diào)度、寄存器讀取以及寄存器寫入。
[0040] 微體系結(jié)構(gòu)功能部件包括與前述的事件關(guān)聯(lián)的邏輯、功能單元、資源或其他功能 部件。微體系結(jié)構(gòu)功能部件的示例包括:高速緩存、指令高速緩存、數(shù)據(jù)高速緩存、分支目標(biāo) 陣列、虛擬存儲器表、寄存器文件、轉(zhuǎn)