經(jīng)管理的指令緩存預(yù)取的制作方法
【專利摘要】本發(fā)明公開了一種用于管理從指令緩存中指令緩存預(yù)取的設(shè)備和方法。處理器可以包括:預(yù)取引擎;分支預(yù)測引擎,用于預(yù)測分支的結(jié)果;以及動態(tài)優(yōu)化器。動態(tài)優(yōu)化器可以用于控制:識別常見指令緩存未命中;以及將預(yù)取指令從預(yù)取引擎插入到指令緩存。
【專利說明】經(jīng)管理的指令緩存預(yù)取
【背景技術(shù)】 發(fā)明領(lǐng)域
[0001] 本發(fā)明的實施例通常涉及一種用于管理指令緩存預(yù)取的方法和設(shè)備。
[0002] 相關(guān)領(lǐng)域的說明
[0003] 指令緩存是現(xiàn)代微處理器的基本組件。指令緩存的主要責(zé)任是為處理器流水線提 供指令流。盡管,在很多情況下,指令緩存未命中導(dǎo)致的停頓對性能沒有重大的影響,但是, 對于很多情況,指令緩存未命中對性能確實有重大的影響。眾所周知的具有負(fù)面影響性能 的弱的指令緩存行為的這些情況的類型的示例是服務(wù)器工作量和硬件/軟件聯(lián)合設(shè)計虛 擬機(jī)。
[0004] 為了減少由于指令緩存未命中造成的性能下降,處理器可以使用較大的緩存(和 /或較高結(jié)合性的緩存)和/或硬件預(yù)取器。硬件預(yù)取器可以用于預(yù)測指令流并授權(quán)未來 指令的預(yù)取請求。然而,存在構(gòu)建的硬件預(yù)取器方案不能正確預(yù)測未來流的情形。
[0005] 典型地,硬件預(yù)取器預(yù)取通過分支預(yù)測引擎預(yù)測的指令地址。此分支預(yù)測引擎預(yù) 測基于分支預(yù)測執(zhí)行的未來指令。因為預(yù)取器緊緊地依賴于分支預(yù)測引擎,因此只要分支 預(yù)測引擎不能正確預(yù)測分支的目標(biāo),預(yù)取器通常就不能授權(quán)適當(dāng)?shù)念A(yù)取請求。因此,尋求一 種改進(jìn)的指令緩存預(yù)取技術(shù)。
【專利附圖】
【附圖說明】
[0006] 從結(jié)合下述附圖的下述細(xì)節(jié)描述中,可以獲得本發(fā)明的較好理解,其中:
[0007] 圖1說明了可與本發(fā)明的實施例一起利用的計算機(jī)系統(tǒng)結(jié)構(gòu)。
[0008] 圖2說明了可與本發(fā)明的實施例一起利用的計算機(jī)系統(tǒng)結(jié)構(gòu)。
[0009] 圖3是依據(jù)本發(fā)明的一個實施例的處理器核的框圖,該處理器核包括使能指令緩 存預(yù)取的動態(tài)優(yōu)化器。
[0010] 圖4示出了依據(jù)本發(fā)明的一個實施例的表,其用于存儲簡檔動態(tài)信息。
[0011] 圖5是依據(jù)本發(fā)明的一個實施例的實現(xiàn)動態(tài)優(yōu)化器插入預(yù)取請求的預(yù)取算法處 理的流程圖。
[0012] 細(xì)節(jié)描沭
[0013] 在下面的說明中,出于解釋目的,為了提供下面描述的本發(fā)明的實施例的徹底的 理解,提出了大量的特殊細(xì)節(jié)。然而顯然,對于本領(lǐng)域技術(shù)人員而言,可以無需某些這些特 殊細(xì)節(jié)來實現(xiàn)本發(fā)明的實施例。在其他例子中,在框圖形式中示出了公知的結(jié)構(gòu)和設(shè)備,以 避免模糊本發(fā)明的實施例的基本原理。
[0014] 以下是示例性的計算機(jī)系統(tǒng),在此后的討論中,其可以被本發(fā)明的實施例利用,并 用于在此具體地執(zhí)行指令。本領(lǐng)域公知的用于膝上型電腦,桌面電腦,手持PC,個人數(shù)字 助理,工程工作站,服務(wù)器,網(wǎng)絡(luò)設(shè)備,網(wǎng)絡(luò)集線器,交換器,嵌入式處理器,數(shù)字信號處理器 (DSP),圖形設(shè)備,視頻游戲設(shè)備,置頂盒,微控制器,蜂窩電話,便攜媒體播放器,手持設(shè)備, 以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計和配置也同樣適用。通常,此處公開的能夠結(jié)合處 理器和/或其他執(zhí)行邏輯的多種系統(tǒng)或電子設(shè)備通常是適用的。
[0015] 現(xiàn)在參見圖1,示出了依據(jù)本發(fā)明的一個實施例的計算機(jī)系統(tǒng)100的框圖。系統(tǒng) 100可以包括一個或多個處理元件110,115,其耦合到圖形存儲器控制器中樞(GMCH) 120。 附加的處理元件115的可選屬性在圖1中用虛線表示。每個處理元件可以是單獨的核,或 者可選地,包括多個核。處理器元件可以可選地包括除了處理核之外的其他片上元件,例如 集成的存儲器控制器和/或集成的I/O控制邏輯。同樣,對于至少一個實施例,處理元件的 核可以是多線程的,其中它們可以每個核包括多于一個的硬件線程上下文。
[0016] 圖1說明了 GMCH 120可以耦合到存儲器140,其可以是例如,動態(tài)隨機(jī)存取存儲器 (DRAM)。對于至少一個實施例,DRAM可以與非易失性緩存關(guān)聯(lián)。GMCH 120可以是芯片組, 或者是芯片組的一部分。GMCH 120可以與處理器110,115通信,并控制處理器110,115以 及存儲器140之間的交互。GMCH 120還可以作為處理器110,115和系統(tǒng)100的其他元件 之間的加速總線接口。對于至少一個實施例,GMCH 120通過多分支總線(例如,前端總線 (FSB) 195)與處理器110,115通信。此外,GMCH 120耦合到顯示器140 (例如平板顯示器)。 GMCH 120可以包括集成的圖形加速器。GMCH 120進(jìn)一步耦合到輸入/輸出(I/O)控制器 中樞(ICH) 150,其可以用于將各種外圍設(shè)備耦合到系統(tǒng)100。例如在圖1的實施例中所示 的是外部圖形設(shè)備160以及另一個外圍設(shè)備170,外部圖形設(shè)備可以是耦合到ICH 150的分 立圖形設(shè)備。
[0017] 可替代地,附加的或不同的處理元件也可以出現(xiàn)在系統(tǒng)100中。例如,附加的處理 元件115可以包括附加的處理器,其與處理器110相同,附加的處理器對處理器110,加速器 (例如,圖形加速器或數(shù)字信號處理(DSP)單元),現(xiàn)場可編程門陣列,或任何其他處理元件 來說是異構(gòu)的或不對稱的。在包括體系結(jié)構(gòu),微體系結(jié)構(gòu),熱力,電源消耗特性等一系列優(yōu) 點度量方面,在物理源110,115之間有各種不同。這些不同可以有效地表明它們在處理元 件110,115之間的不對稱性和異構(gòu)性。對于至少一個實施例,各種處理元件110,115可以 駐留在相同的管芯封裝中。
[0018] 現(xiàn)在參見附圖2,示出了依據(jù)本發(fā)明的實施例的另一個計算機(jī)系統(tǒng)200的框圖。如 圖2所示,多處理器系統(tǒng)200是點到點互連系統(tǒng),且包括通過點到點互連250耦合的第一處 理元件270以及第二處理元件280。如圖2所示,每個處理元件270和280可以是多核處 理器,包括第一和第二處理器核(即,處理器核274a和274b以及處理器核284a和284b)。 可選擇地,一或多個處理元件270, 280可以是元件而不是處理器,例如加速器或現(xiàn)場可編 程門陣列。當(dāng)只用兩個處理元件270,280示出時,應(yīng)該理解的是,本發(fā)明的范圍并不被這樣 限制。在其他實施例中,一或多個附加的處理元件可以存在于給定的處理器內(nèi)。
[0019] 第一處理元件270可以進(jìn)一步包括存儲器控制器中樞(MCH)272以及點到點(P-P, point-to-point)接口 276和278。類似地,第二處理元件280可以包括MCH 282以及P-P 接口 286和288。處理器270, 280可以通過使用PtP接口電路278, 288的點到點(PtP, point-to-point)接口 250交換數(shù)據(jù)。如圖2所示,MCH的272和282將處理器耦合到各自 的存儲器,即存儲器242和存儲器244,其可以是本地的附屬到各自的處理器的主存儲器的 部分。
[0020] 處理器270, 280可以用芯片組290通過使用點到點接口電路276, 294, 286, 298的 個別的PtP接口 252, 254彼此交換數(shù)據(jù)。芯片組290還可以與高性能圖形電路238通過高 性能圖形接口 239交換數(shù)據(jù)。本發(fā)明的實施例可以位于具有任意數(shù)量處理核的處理元件 中。在一個實施例中,任意處理核可以包括或者否則與本地緩存存儲器(未示出)相關(guān)聯(lián)。 此外,共享緩存(未示出)可以被包括在兩個處理器之一或兩個處理器之外,仍然通過p2p 互連與處理器連接,因此,如果處理器在低電源模式下,處理器之一或者兩個處理器的本地 緩存信息可以存儲在共享緩存中。第一處理元件270和第二處理元件280可以通過P-P互 連276, 286以及284分別耦合到芯片組290。如圖2所示,芯片組290包括P-P接口 294和 298。此外,芯片組290包括接口 292來將芯片組290與高性能圖形引擎248耦合。在一個 實施例中,總線249可以用于耦合圖形引擎248到芯片組290??商娲兀c到點互連249可 以耦合這些組件。進(jìn)而,芯片組290可以通過接口 296耦合到第一總線216。在一個實施例 中,第一總線216可以是外圍組件互連(PCI,Peripheral Component Interconnect)總線, 或者是總線,例如PCI擴(kuò)展(PCI Express,Peripheral Component Interconnect Express) 總線或者另一個第三代I/O互連總線,盡管本發(fā)明的范圍并不被如此限制。
[0021] 如圖2所不,各種1/0設(shè)備214可以稱合到第一總線216,連同將第一總線216f禹合 到第二總線220的總線橋218-起。在一個實施例中,第二總線220可以是低引腳數(shù)(LPC, low pin count)總線。各種設(shè)備可以f禹合到第二總線220,包括,例如,鍵盤/鼠標(biāo)222, 通信設(shè)備226以及數(shù)據(jù)存儲單元228,例如硬盤驅(qū)動或者其他海量存儲設(shè)備,在一個實施例 中,其可以包括代碼230。進(jìn)一步地,音頻1/0 224可以耦合到第二總線220。注意其他的 體系結(jié)構(gòu)也是可能的。例如,替代點到點體系結(jié)構(gòu),系統(tǒng)可以實現(xiàn)多點總線或其他這種體系 結(jié)構(gòu)。
[0022] 在一個實施例中,本發(fā)明的方面依賴新的指令和它的用法。這個指令可以稱為 "pref_i",它的操作將發(fā)出用于特殊地址的到指令緩存中的預(yù)取請求。此指令的有益元素 包括:將被預(yù)取的行的地址被標(biāo)識的方式;以及執(zhí)行或忽略預(yù)取請求的情況。
[0023] 現(xiàn)在參見圖3,說明了依據(jù)本發(fā)明的一個實施例的處理器核300的框圖,處理器核 300包括動態(tài)優(yōu)化器310,其使能管理指令緩存預(yù)取。應(yīng)該意識到的是,處理器核300可以是 先前描述的計算機(jī)系統(tǒng)200的很多不同的處理器核274和284中的一個。動態(tài)優(yōu)化器310 可以回顧預(yù)取算法312以及表314。實現(xiàn)預(yù)取算法312的動態(tài)優(yōu)化器310可以與處理器核 300的內(nèi)核320共同操作,使能管理指令緩存預(yù)取,如下文將要詳細(xì)描述的。
[0024] 內(nèi)核320可以包括耦合到數(shù)據(jù)緩存324的后端322和耦合到指令緩存345的前端 330。指令緩存345和數(shù)據(jù)緩存324耦合到MCH以及剩下的存儲器層級326 (如先前參見圖 1和2描述的),其進(jìn)而耦合到主存儲器,設(shè)備,以及系統(tǒng)組件350 (如先前參見圖1和2描 述的)。前端330可以包括分支預(yù)測引擎或單元332,以及其他前端組件334,其耦合到預(yù)取 引擎340,預(yù)取引擎340進(jìn)而耦合到指令緩存345。
[0025] 如已知的,指令緩存(IC,instruction cache) 345用于將指令流提供給處理器。 預(yù)取引擎340可以預(yù)測指令流,并基于來自分支預(yù)測引擎332的地址預(yù)測來發(fā)出用于來自 1C 345的未來指令的預(yù)取請求。不幸的是,分支預(yù)測引擎332經(jīng)常做出錯誤的預(yù)測。
[0026] 本發(fā)明的實施例涉及動態(tài)優(yōu)化器310,其采用預(yù)取算法312和表314來提供一種 方法和處理來通過預(yù)取引擎340精確地管理到1C 345的指令緩存預(yù)取。在一個實施例中, 總是利用由動態(tài)優(yōu)化器310和預(yù)取算法312控制的新指令,其命名為預(yù)取指令(此后稱為 pref_i),該指令發(fā)出用于特殊地址的到IC 345的預(yù)取請求。本發(fā)明的方面涉及如何標(biāo)識 將被預(yù)取的行的地址,以及在哪些情況下執(zhí)行或者忽略預(yù)取請求。
[0027] 在一個實施例中,實現(xiàn)預(yù)取算法312以及表314的動態(tài)優(yōu)化器310可以是硬件及 軟件組合。例如,動態(tài)優(yōu)化器310可以合并二進(jìn)制翻譯軟件,其監(jiān)控1C 345未命中并收集 合并到表314的動態(tài)簡檔信息。然而,應(yīng)該意識到的是,動態(tài)優(yōu)化器310可以用硬件,軟件, 固件或它們的組合實現(xiàn),來合并通過預(yù)取引擎340精確的管理指令緩存預(yù)取到1C 345的技 術(shù),如此后將描述的。同樣,離線編譯器還可以在用于簡檔目的(如,簡檔引導(dǎo)優(yōu)化)的執(zhí) 行完成中收集信息。
[0028] 此外簡要地參見圖4,表314存儲簡檔動態(tài)信息,其包括經(jīng)常未命中的1C地址,并 促成可察覺的到處理器流水線的停頓(stalls)。例如,存儲在表314中的此信息可以包括 : 未命中的請求的行地址402 ;用于未命中的該請求(S卩,代碼請求未命中是歸咎于直接還是 間接的分支)的分支目標(biāo)特性404 ;分支單元332對于直接分支的情況預(yù)測的對應(yīng)的分支 的置信度(強/弱)406 ;以及導(dǎo)致請求這個行408的分支的地址。如圖4所示,表314可以 包括很多與簡檔動態(tài)信息有關(guān)的條目。動態(tài)優(yōu)化器310可以根據(jù)預(yù)取算法312訪問表314 來插入預(yù)取請求,如此后將詳細(xì)描述的。
[0029] 現(xiàn)在簡要地參見圖3,作為概觀,處理器核300可以包括:預(yù)取引擎340 ;用于預(yù)測 分支結(jié)果的分支預(yù)測引擎332 ;以及動態(tài)優(yōu)化器310。尤其是,分支預(yù)測引擎332可以預(yù)測 直接條件分支的結(jié)果以及間接分支的目標(biāo)。動態(tài)優(yōu)化器310可以控制:標(biāo)識常見的指令緩 存未命中,以及將來自預(yù)取引擎340的預(yù)取指令插入到指令緩存345。需要注意的是,是指 令緩存345本身確定指令緩存未命中是否發(fā)生。動態(tài)優(yōu)化器310僅使用這個信息來確定那 些經(jīng)常未命中的訪問。如果發(fā)生了指令緩存未命中,那么動態(tài)優(yōu)化器310就可以控制將來 自預(yù)取引擎340的預(yù)取指令插入到指令緩存345,如稍后將更詳細(xì)地描述的。
[0030] 動態(tài)優(yōu)化器310可以利用來自分支預(yù)測引擎332的關(guān)于采取的分支是否曾有強或 弱的預(yù)測的信息,從預(yù)取引擎340插入的預(yù)取指令可以基于采取的分支是否曾有強預(yù)測或 弱預(yù)測。進(jìn)一步地,動態(tài)優(yōu)化器310可以利用來自分支預(yù)測引擎332的關(guān)于未采取的分支 是否有強或弱的預(yù)測的信息,從預(yù)取引擎340插入的預(yù)取指令可以基于未采取的分支是否 曾有強預(yù)測或弱預(yù)測。尤其是,可在不考慮預(yù)測(強或弱)的情況下插入預(yù)取指令,因為指 令的置信度(強或弱)定義了指令是否將在最后執(zhí)行。盡管如此,如將描述的,這僅適用于 指令的pref_i. P版本??偸菆?zhí)行pref_i,而pref_i. P基于預(yù)測置信度(如果強就忽略,如 果弱就執(zhí)行)。這些操作類型的例子可以參見下圖5詳細(xì)地討論。
[0031] 現(xiàn)在參見圖5,圖5是依據(jù)本發(fā)明的實施例的用于實現(xiàn)動態(tài)優(yōu)化器310的預(yù)取算法 312以插入預(yù)取請求的過程500的流程圖。首先,指令緩存未命中發(fā)生502。尤其是,針對 經(jīng)常未命中的訪問來執(zhí)行過程500。作為示例,在程序執(zhí)行中,處理器收集簡檔信息。然后 動態(tài)優(yōu)化器310參照這個動態(tài)信息并執(zhí)行過程500。下一步,在決策方框504,過程500確 定目標(biāo)是用于直接分支或間接分支。預(yù)取指令(pref_i)的各種預(yù)取插入將在此后描述。
[0032] 未采取的分支/強采取的預(yù)測之后的1C未命中
[0033] 如果確定指令緩存(1C) 345未命中已經(jīng)發(fā)生,且過程500在決策方框506確定它 是未采取的分支,并在決策方框508進(jìn)一步確定分支預(yù)測引擎332表示強采取的路徑預(yù)測, 那么動態(tài)優(yōu)化器310的預(yù)取算法312認(rèn)為這個地址為循環(huán)的貫穿(fall-through)路徑,其 使分支預(yù)測引擎飽和。預(yù)取算法312導(dǎo)致預(yù)取指令(pref_i)在循環(huán)體中的插入,因此,請 求在循環(huán)的最后迭代被發(fā)出。尤其是,預(yù)取貫穿地址指令(pref_i_fall_through_address) 由前端330在用于分支的貫穿地址的預(yù)取請求中轉(zhuǎn)換,因此,由預(yù)取引擎340插入的指令 是:pref_i_fall_through_address (方框 510) 〇
[0034] 采取的分支/強未采取的預(yù)測之后的1C未命中
[0035] 如果確定指令緩存(1C) 345未命中已經(jīng)發(fā)生,且過程500在決策方框506確定它 不是未采取的分支但是被確定為是采取的分支(決策方框515),并在決策方框518進(jìn)一步 確定分支預(yù)測引擎332表示強未采取的預(yù)測(決策塊518),那么動態(tài)優(yōu)化器310的預(yù)取算 法312認(rèn)為分支預(yù)測引擎332對于預(yù)測這個分支無效。因此,預(yù)取算法312導(dǎo)致在分支的 采取的路徑的預(yù)取地址的預(yù)取指令(pref_i)的插入。尤其是,前端330將這個指令轉(zhuǎn)換為 用于在分支的采取的路徑的地址的預(yù)取請求。在這種情況下,由預(yù)取引擎340插入的指令 是對于在分支的采取的路徑的地址的預(yù)取請求(pref_i_taken_path_addr)(方框520)。
[0036] 未采取的分支/弱采取的預(yù)測之后的1C未命中
[0037] 如果確定指令緩存(1C) 345未命中已經(jīng)發(fā)生,且過程500在決策方框506確定它 是未采取的分支,并在決策方框508進(jìn)一步確定分支預(yù)測引擎332不表示強采取的預(yù)測, 而相反的是在決策塊530被確定為是弱采取的預(yù)測,那么動態(tài)優(yōu)化器310的預(yù)取算法312 認(rèn)為這個地址為非偏分支的目標(biāo)?;诖?,預(yù)取算法312為貫穿地址插入預(yù)測的預(yù)取指令 (pref_i. P)。無論這個預(yù)測的pref_i指令(pref_i. P)何時從前端330傳遞,它將:
[0038] A)如果分支預(yù)測單元332提供對分支的強預(yù)測,則預(yù)測的pref_i指令(pref_ i. P)被忽略--其基本原理是分支預(yù)測單元332具有高置信度,預(yù)取請求可以導(dǎo)致指令緩 存被不可忽視的可能性污染。應(yīng)該注意的是對于特殊的分支,分支預(yù)測單元的置信度可以 在應(yīng)用的執(zhí)行期間改變;或者
[0039] B)如果分支預(yù)測單元332提供對分支的弱預(yù)測--那么pref_i. P指令被轉(zhuǎn)換為 針對貫穿地址的指令緩存預(yù)取請求。因此,由預(yù)取引擎340插入的指令是pref_i.P fall_ thr_addr (方框 532)。
[0040] 應(yīng)該注意的是,pref_i指令的.P標(biāo)志表示其已被預(yù)測,即如果分支預(yù)測單元332 以高置信度預(yù)測相應(yīng)分支,那么前端330應(yīng)該忽略它。在這種情況下,pref_i. P指令將被 認(rèn)為是pref_i指令的一個版本。
[0041] 采取的分支/弱未采取的預(yù)測之后的1C未命中
[0042] 如果確定指令緩存(1C) 345未命中已經(jīng)發(fā)生,且過程500在決策方框506確定它 不是未采取的分支而是被確定為是采取的分支(決策方框515),并在決策方框518進(jìn)一步 確定分支預(yù)測引擎332不表示強未采取的預(yù)測(決策塊518),但是相反表示弱未采取的分 支,那么動態(tài)優(yōu)化器310的預(yù)取算法312認(rèn)為這是個與"未采取的分支/弱采取的預(yù)測之后 的1C未命中"相同的算法,但是替代貫穿地址,它預(yù)取采取的路徑地址。因此,在這種情況 下,由預(yù)取引擎340插入的指令是用于采取的路徑地址的預(yù)測預(yù)取指令(pref_i. P taken_ path_addr)(方框 542)。
[0043] 間接分支之后的1C未命中
[0044] 如果確定指令緩存(1C) 345未命中已經(jīng)發(fā)生,且過程500在決策方框504確定尋 求的目標(biāo)不是通過直接分支而是通過間接分支(決策方框550),那么動態(tài)優(yōu)化器310的預(yù) 取算法312認(rèn)為間接分支預(yù)測器對于預(yù)測下一個地址無效。為了防止錯誤預(yù)測,預(yù)取算法 312為這個分支檢查它的目標(biāo)表314并定義大部分常見共同的目標(biāo)地址(方框552)。預(yù)取 算法312為大部分常見共同目標(biāo)插入pref_i指令。在這種情況下,由預(yù)取引擎340插入的 指令可以包括諸如pref_i targetl,pref_i target2等指令(方框554)。
[0045] 應(yīng)該注意的是,對于所有的情況,在導(dǎo)致未命中的指令之前通過預(yù)取引擎340由 動態(tài)優(yōu)化器310的預(yù)取算法312插入pref_i指令。進(jìn)一步地,需要注意的是,本發(fā)明的實 施例通過觸發(fā)指令緩存345中的預(yù)取來解決高未命中率的問題。尤其是,動態(tài)優(yōu)化器310 通過觀察應(yīng)用執(zhí)行來使用預(yù)取算法312預(yù)測訪問是否導(dǎo)致未命中并評估影響。如果預(yù)測代 價為高(例如,當(dāng)指令緩存345未命中遵循錯誤預(yù)測的分支),那么動態(tài)優(yōu)化器310就導(dǎo)致 特殊的預(yù)取指令(pref_i)的插入,該特殊的預(yù)取指令預(yù)取指令緩存345中的指令從而將未 命中轉(zhuǎn)換為命中。
[0046] 此處公開的機(jī)制的實施例可以用硬件,軟件,固件,或這些實現(xiàn)方法的組合來實 現(xiàn)。本發(fā)明的實施例可以作為在可編程系統(tǒng)上執(zhí)行的計算機(jī)程序或程序代碼來實現(xiàn),該可 編程系統(tǒng)包括至少一個處理器,數(shù)據(jù)存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲 元件),至少一個輸入設(shè)備,以及至少一個輸出設(shè)備。
[0047] 程序代碼可以提供輸入數(shù)據(jù)以執(zhí)行此處描述的功能,并生成輸出信息。輸出信息 可以應(yīng)用于一或多個輸出設(shè)備,以已知的形式。為了本應(yīng)用的目的,處理系統(tǒng)包括具有處理 器的任意系統(tǒng),處理器例如;數(shù)字信號處理器(DSP),微控制器,專用集成電路(ASIC),或微 處理器。
[0048] 程序代碼可以用高級程序或面向?qū)ο蟪绦蛘Z言來與處理系統(tǒng)通信實現(xiàn)。如果需要 的話,程序代碼還可以用匯編或機(jī)器語言實現(xiàn)。事實上,此處描述的機(jī)制不被限制到任何特 定的編程語目的范圍。在任何情況下,語目可以是編譯語目或解釋語目。
[0049] 至少一個實施例的一或多個方面可以通過存儲在機(jī)器可讀介質(zhì)上的代表性數(shù)據(jù) 來實現(xiàn),該機(jī)器可讀介質(zhì)代表處理器中的各種邏輯,其當(dāng)被機(jī)器讀取時,使得機(jī)器制造邏輯 以執(zhí)行此處描述的技術(shù)。這種代表性,已知為"IP核"可以存儲在有形的機(jī)器可讀介質(zhì)上,并 提供給各種客戶或制造設(shè)備以加載到制造機(jī)器中,其實際上制造邏輯或處理器。這種機(jī)器 可讀存儲介質(zhì)可以包括,但不限制于,由機(jī)器或設(shè)備制造的或形成的顆粒的非易失性,有形 的排列,該機(jī)器或設(shè)備包括存儲介質(zhì)例如,硬盤,任何其他類型的盤,包括軟盤,光盤,只讀 存儲器光盤(CD-ROM),可擦寫光盤(CD-RW),磁光盤,半導(dǎo)體設(shè)備例如,只讀存儲器(ROM), 隨機(jī)存取存儲器(RAM)例如,動態(tài)隨機(jī)存取存儲器(DRAM),靜態(tài)隨機(jī)存取存儲器(SRAM),可 擦寫可編程只讀存儲器(EPROM),閃存,電可擦寫可編程只讀存儲器(EEPR0M),磁或光卡, 或任何適用于存儲電子指令的其他類型介質(zhì)。
[0050] 因此,本發(fā)明的實施例還可以包括非暫時性的,有形的機(jī)器可讀介質(zhì),其包括用于 執(zhí)行本發(fā)明的操作實施例,或包括設(shè)計數(shù)據(jù),例如HDL,其定義了結(jié)構(gòu),電路,裝置,處理器和 /或此處描述的系統(tǒng)特征。這種實施例還可以涉及程序產(chǎn)品。
[0051] 此處公開的指令的某些操作可以由硬件組件執(zhí)行,且可以嵌入到機(jī)器可執(zhí)行指令 中,其被用于促使或至少產(chǎn)生用執(zhí)行操作的指令編程的電路或其他硬件組件。僅舉幾個例 子,電路可以包括通用目的或特殊目的的處理器,或邏輯電路。操作還可以可選地由硬件和 軟件的組合執(zhí)行。執(zhí)行邏輯和/或處理器可以包括特殊的或特定的電路,或其他響應(yīng)于機(jī) 器指令或派生自機(jī)器指令的一或多個控制信號的邏輯,以存儲指令特殊結(jié)果操作數(shù)。例如, 此處公開的指令的實施例可以在圖1和2的一或多個系統(tǒng)中執(zhí)行,且指令的實施例可以存 儲在程序代碼中以在系統(tǒng)中執(zhí)行。此外,這些圖的處理元件可以采用此處詳細(xì)的具體的流 水線和/或體系結(jié)構(gòu)(例如,按順序的體系結(jié)構(gòu)以及不按順序的體系結(jié)構(gòu))之一。例如,按 順序的體系結(jié)構(gòu)的解碼單元可以解碼指令,將解碼指令傳遞給向量或標(biāo)量單元等。
[0052] 出于解釋目的,在全部上述描述中提出了大量的特殊細(xì)節(jié),以提供對本發(fā)明的透 徹理解。然而顯然,對于本領(lǐng)域技術(shù)人員而言,本發(fā)明可以無需某些這些特殊細(xì)節(jié)來實現(xiàn)。 因此,本發(fā)明的范圍和精神應(yīng)當(dāng)由所附的權(quán)利要求來判斷。
【權(quán)利要求】
1. 一種用于管理從指令緩存中的指令緩存預(yù)取的處理器,包括: 預(yù)取引擎; 分支預(yù)測引擎,用于預(yù)測分支的結(jié)果;以及 動態(tài)優(yōu)化器,用于控制: 識別常見指令緩存未命中;以及 將預(yù)取指令從預(yù)取引擎插入到指令緩存。
2. 權(quán)利要求1的處理器,其中,如果分支的類型是直接分支,那么從預(yù)取引擎插入到指 令緩存的預(yù)取指令基于所采取的分支曾具有強預(yù)測還是弱預(yù)測。
3. 權(quán)利要求1的處理器,其中,如果分支的類型是直接分支,那么是否執(zhí)行預(yù)取指令依 賴于預(yù)測的置信度。
4. 權(quán)利要求1的處理器,其中,動態(tài)優(yōu)化器進(jìn)一步包括表,用于存儲簡檔信息,所述簡 檔信息至少包括未命中的指令的地址。
5. -種計算機(jī)系統(tǒng),包括: 耦合到存儲器的存儲器控制中樞;以及 用于管理指令緩存預(yù)取的處理器,包括: 預(yù)取引擎; 分支預(yù)測引擎,用于預(yù)測分支的結(jié)果;以及 動態(tài)優(yōu)化器,用于控制: 識別常見指令緩存未命中;以及 將預(yù)取指令從預(yù)取引擎插入到指令緩存。
6. 權(quán)利要求5的計算機(jī)系統(tǒng),其中,如果分支的類型是直接分支,那么從預(yù)取引擎插入 到指令緩存的預(yù)取指令基于所采取的分支曾具有強預(yù)測還是弱預(yù)測。
7. 權(quán)利要求5的計算機(jī)系統(tǒng),其中,如果分支的類型是直接分支,那么是否執(zhí)行預(yù)取指 令依賴于預(yù)測的置信度。
8. 權(quán)利要求5的計算機(jī)系統(tǒng),其中,動態(tài)優(yōu)化器進(jìn)一步包括表,用于存儲簡檔信息,該 簡檔信息至少包括未命中的指令的地址。
9. 一種用于管理從指令緩存中指令緩存預(yù)取的方法,包括: 識別常見指令緩存未命中; 預(yù)測分支的結(jié)果;以及 將預(yù)取指令從預(yù)取引擎插入到指令緩存。
10. 權(quán)利要求9的方法,其中,如果分支的類型是直接分支,那么從預(yù)取引擎插入到指 令緩存的預(yù)取指令基于所采取的分支曾具有強預(yù)測還是弱預(yù)測。
11. 權(quán)利要求9的方法,其中,如果分支的類型是直接分支,那么是否執(zhí)行預(yù)取指令依 賴于預(yù)測的置信度。
12. 權(quán)利要求9的方法,進(jìn)一步包括創(chuàng)建表以存儲簡檔信息,所述簡檔信息至少包括未 命中的指令的地址。
13. -種計算機(jī)程序產(chǎn)品,包括: 包括代碼的計算機(jī)可讀介質(zhì),所述代碼用于: 識別常見指令緩存未命中; 預(yù)測分支的結(jié)果;以及 將預(yù)取指令從預(yù)取引擎插入到指令緩存。
14. 權(quán)利要求13的計算機(jī)程序產(chǎn)品,其中,如果分支的類型是直接分支,那么從預(yù)取引 擎插入到指令緩存的預(yù)取指令基于所采取的分支曾具有強預(yù)測還是弱預(yù)測。
15. 權(quán)利要求13的計算機(jī)程序產(chǎn)品,其中,如果分支的類型是直接分支,那么是否執(zhí)行 預(yù)取指令依賴于預(yù)測的置信度。
16. 權(quán)利要求13的計算機(jī)程序產(chǎn)品,進(jìn)一步包括代碼,所述代碼用于創(chuàng)建表以存儲簡 檔信息,所述簡檔信息至少包括未命中的指令的地址。
【文檔編號】G06F9/06GK104220980SQ201180076122
【公開日】2014年12月17日 申請日期:2011年12月29日 優(yōu)先權(quán)日:2011年12月29日
【發(fā)明者】K·A·斯塔弗洛, E·吉博特康迪那, J·M·康迪那, C·戈梅茲瑞克納, A·岡薩雷斯, M·休塞諾瓦, C.E·科特賽立迪斯, F·拉托瑞, P·洛佩茨, M·盧彭, C·瑪?shù)吕锼? G·瑪格里斯, P·馬庫羅, A·馬丁內(nèi)斯文森特, R·馬丁內(nèi)斯, D·奧特加, D·帕弗洛, G·突納韋迪斯, P·謝卡拉科斯 申請人:英特爾公司