專利名稱:在托管運(yùn)行時(shí)環(huán)境中執(zhí)行自適應(yīng)預(yù)取操作的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及預(yù)取操作,尤其涉及用于在托管運(yùn)行時(shí)環(huán)境中執(zhí)行自適應(yīng)預(yù)取操 作的方法和裝置。背景對(duì)增加的軟件程序便攜性的需要已導(dǎo)致對(duì)運(yùn)行時(shí)環(huán)境的開發(fā)和利用的增加。便攜 性是指在具有不同硬件和操作系統(tǒng)的各種計(jì)算機(jī)平臺(tái)上執(zhí)行給定軟件程序的能力。運(yùn)行時(shí) 環(huán)境可以是運(yùn)行時(shí)系統(tǒng)和/或虛擬機(jī)。運(yùn)行時(shí)環(huán)境允許軟件程序以平臺(tái)無關(guān)方式由目標(biāo)執(zhí) 行平臺(tái)(例如,計(jì)算機(jī)系統(tǒng)的硬件和/或操作系統(tǒng))執(zhí)行。具體地,源代碼指令不是被靜態(tài) 地直接編譯和鏈接成由目標(biāo)執(zhí)行平臺(tái)執(zhí)行的本地或機(jī)器代碼。相反,指令被靜態(tài)地編譯成 中間語言(例如,字節(jié)代碼),而中間語言隨后可由運(yùn)行時(shí)環(huán)境內(nèi)的即時(shí)(JIT)編譯器解釋 或編譯成可由目標(biāo)執(zhí)行平臺(tái)執(zhí)行的本地或機(jī)器代碼。運(yùn)行時(shí)環(huán)境連同其他類型的系統(tǒng)有時(shí)在分配用于在執(zhí)行期間使用的存儲(chǔ)器時(shí)采 用預(yù)取操作。雖然不同的預(yù)取操作在復(fù)雜性和/或規(guī)模上不同,但預(yù)取一般包括在處理器 需要一存儲(chǔ)位置處所存儲(chǔ)的指令或數(shù)據(jù)之前將該存儲(chǔ)位置加載到高速緩存和/或其他類 型的快速存取存儲(chǔ)器中。例如,預(yù)取可結(jié)合分支預(yù)測方案使用,分支預(yù)測方案嘗試基于計(jì)算 的可能結(jié)果來預(yù)測處理器接下來將需要哪個(gè)存儲(chǔ)位置。預(yù)取用在附加以及替換類型的系統(tǒng) 中且結(jié)合附加和替換的處理方案或技術(shù)使用。附圖簡述
圖1是其上可實(shí)現(xiàn)本文描述的示例方法、裝置、系統(tǒng)和/或有形制品的示例軟件編 譯和執(zhí)行系統(tǒng)的框圖。圖2是圖1的示例硬件平臺(tái)的示例實(shí)現(xiàn)的框圖。圖3是圖1的示例虛擬機(jī)的示例實(shí)現(xiàn)的框圖。圖4是圖3的示例存儲(chǔ)器清除單元的示例實(shí)現(xiàn)的框圖。圖5是代表可使用機(jī)器可讀指令執(zhí)行以實(shí)現(xiàn)圖3的示例存儲(chǔ)器清除單元的示例過 程的流程圖。圖6是示出圖4的示例預(yù)取單元的示例實(shí)現(xiàn)的框圖。圖7是代表可使用機(jī)器可讀指令執(zhí)行以實(shí)現(xiàn)圖4和/或6的示例預(yù)取單元的示例 過程的流程圖。詳細(xì)描述盡管下文公開了除其他組件外包括固件和/或在硬件上執(zhí)行的軟件的示例方法、 裝置、系統(tǒng)和/或制品,但是應(yīng)注意,這些方法、裝置、系統(tǒng)和/或制品僅僅是說明性的且不 應(yīng)被視為限制。例如,構(gòu)想了任何或所有這些固件、硬件和/或軟件組件可排他性地實(shí)施在 硬件中、排他性的實(shí)施在軟件中、排他性的實(shí)施在固件中,或?qū)嵤┰谟布④浖?或固件 的任何組合中。因此,雖然下文描述了示例方法、裝置、系統(tǒng)和/或制品,但所提供的示例并 非是實(shí)現(xiàn)這些方法、裝置、系統(tǒng)和/或制品的僅有方式。預(yù)取是用計(jì)算系統(tǒng)中的意在提高處理指令和/或數(shù)據(jù)的速度的技術(shù)。一般地,預(yù)
4取涉及例如從主存儲(chǔ)器讀取一個(gè)或多個(gè)指令和/或數(shù)據(jù)并將該指令和/或數(shù)據(jù)寫入高速緩 存。常規(guī)系統(tǒng)預(yù)取固定量的存儲(chǔ)器(例如,數(shù)個(gè)指令或地址)。在一些計(jì)算系統(tǒng)中,當(dāng)系統(tǒng) 確定或意識(shí)到該固定量的預(yù)取存儲(chǔ)器太小時(shí),系統(tǒng)執(zhí)行取回附加的固定量的存儲(chǔ)器的一個(gè) 或多個(gè)附加預(yù)取操作。在一些示例中,在此類次級(jí)預(yù)取中預(yù)取的附加的固定量的存儲(chǔ)器顯 著大于在初級(jí)中預(yù)取的固定量。這種遞增地預(yù)取固定量的存儲(chǔ)器的方法往往導(dǎo)致高速緩存 資源的浪費(fèi),因?yàn)榻?jīng)常預(yù)取了多于必需的存儲(chǔ)器。例如,預(yù)取的第一固定量的存儲(chǔ)器可能只 是稍微不足(例如,在需要預(yù)取的存儲(chǔ)器的量方面)。在這些情形中,在次級(jí)中預(yù)取的第二 固定量的存儲(chǔ)器(在許多先前系統(tǒng)中,其大于在初級(jí)中預(yù)取的存儲(chǔ)器的量)可能導(dǎo)致總共 預(yù)取了所需量的幾乎兩倍的存儲(chǔ)器量。對(duì)高速緩存資源的這種過度使用會(huì)不利地影響處理 器的性能。為了避免高速緩存資源的這種浪費(fèi),本文描述的示例方法、裝置、系統(tǒng)和/或制品 將與關(guān)聯(lián)于預(yù)取操作的對(duì)象有關(guān)的參數(shù)自適應(yīng)地納入對(duì)要預(yù)取的存儲(chǔ)器的量的確定。具體 而言,本文描述的示例方法、裝置、系統(tǒng)和/或制品確定與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小, 并使用該大小信息來選擇結(jié)合該特定對(duì)象要預(yù)取的存儲(chǔ)器量。由此,不同于在初始固定量 不足時(shí)反應(yīng)性地預(yù)取固定增量的附加存儲(chǔ)器的常規(guī)系統(tǒng),本文描述的示例方法、裝置、系統(tǒng) 和/或制品根據(jù)例如與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小主動(dòng)地變更要預(yù)取的存儲(chǔ)器的量。附 加地或替換地,本文描述的示例方法、裝置、系統(tǒng)和/或制品可將與近期遭遇的對(duì)象有關(guān)的 大小趨勢納入對(duì)要預(yù)取的存儲(chǔ)器的量的確定。如以下更詳細(xì)地描述的,本文描述的自適應(yīng)和/或主動(dòng)預(yù)取方法實(shí)現(xiàn)了比常規(guī)或 先前預(yù)取單元產(chǎn)生更準(zhǔn)確(例如,關(guān)于在合適時(shí)間用于與預(yù)取操作相關(guān)聯(lián)的對(duì)象的合適存 儲(chǔ)器的量)預(yù)取且能更好地處理大對(duì)象的預(yù)取操作。例如,使用本文描述的自適應(yīng)和/或主 動(dòng)預(yù)取,計(jì)算系統(tǒng)的預(yù)取單元在遭遇(例如,由處理器在例如分支預(yù)測方案中標(biāo)識(shí)為與應(yīng) 預(yù)取的指令有關(guān)的)大對(duì)象時(shí)不會(huì)過度取存儲(chǔ)器。相反,本文描述的自適應(yīng)和/或主動(dòng)預(yù) 取使得預(yù)取單元能將與關(guān)聯(lián)于預(yù)取操作的對(duì)象大小相稱的量的存儲(chǔ)器加載到高速緩存中。 本文描述的示例方法、裝置、系統(tǒng)和/或制品的附加和替換優(yōu)點(diǎn)將從以下描述變得明顯。圖1-5示出其上可實(shí)現(xiàn)本文描述的自適應(yīng)預(yù)取方法、裝置、系統(tǒng)和/或制品的示例 系統(tǒng)。具體地,圖1-5示出示例托管運(yùn)行時(shí)環(huán)境。雖然圖1-5提供了其上可實(shí)現(xiàn)本文描述 的自適應(yīng)預(yù)取的示例系統(tǒng),本文描述的示例可在一個(gè)或多個(gè)不同類型的計(jì)算系統(tǒng)、平臺(tái)、環(huán) 境、處理器等上實(shí)現(xiàn)或與之關(guān)聯(lián)。圖1示出示例軟件程序編譯和執(zhí)行系統(tǒng)100。該軟件程序編譯和執(zhí)行系統(tǒng)100包 括編譯器120,編譯器120將源代碼110(例如,Java字節(jié)代碼或通用中間語言(CIL)代碼) 編譯成中間語言代碼130。在一些示例中,編譯器120是在計(jì)算機(jī)系統(tǒng)上運(yùn)行的軟件系統(tǒng), 并且中間語言代碼130被存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中。軟件程序編譯和執(zhí)行系統(tǒng)100包括虛擬機(jī)140和硬件平臺(tái)150。虛擬機(jī)140進(jìn)一 步將中間語言代碼130編譯成本地代碼。在所示的示例中,本地代碼是具體架構(gòu)或平臺(tái)特 有的機(jī)器代碼。虛擬機(jī)140可被實(shí)現(xiàn)為軟件系統(tǒng)。在所示的示例中,虛擬機(jī)140在硬件平 臺(tái)150上運(yùn)行。虛擬機(jī)140可以是例如Java虛擬機(jī)、small talk(閑談)運(yùn)行時(shí)系統(tǒng)、或 其他運(yùn)行時(shí)系統(tǒng)。替換地,虛擬機(jī)140可使用其他技術(shù)來實(shí)現(xiàn)(例如,實(shí)現(xiàn)為固件系統(tǒng))。硬件平臺(tái)150執(zhí)行由虛擬機(jī)140編譯的本機(jī)代碼。硬件平臺(tái)150例如可由個(gè)人計(jì)算機(jī)、個(gè)人數(shù)字助理、網(wǎng)絡(luò)計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、筆記本計(jì)算機(jī)、工作站、主機(jī)計(jì)算機(jī)、超級(jí) 計(jì)算機(jī)、和/或具有數(shù)據(jù)處理能力的任何其他電子系統(tǒng)來實(shí)現(xiàn)。中間語言代碼130可經(jīng)由 通信鏈路(例如局域網(wǎng)、因特網(wǎng)、和/或無線通信網(wǎng)絡(luò))被遞送給硬件平臺(tái)150。如以下更 詳細(xì)地描述的,示例硬件平臺(tái)150還包括預(yù)取單元430,用于便于本文描述的示例自適應(yīng)預(yù) 取操作。圖2是圖1的示例硬件平臺(tái)150的示例實(shí)現(xiàn)的框圖。示例平臺(tái)150包括處理數(shù)據(jù) 信號(hào)的處理器201。處理器201可以是復(fù)雜指令集計(jì)算機(jī)微處理器、精簡指令集計(jì)算微處 理器、超長指令字微處理器、實(shí)現(xiàn)指令集組合的處理器和/或其他處理器設(shè)備。在一些示例 中,平臺(tái)150可以用多個(gè)處理器進(jìn)行操作。圖2的示例處理器201耦合到CPU總線210,CPU 總線210在處理器201與平臺(tái)150中的其他組件之間傳送數(shù)據(jù)信號(hào)。在一些示例中,處理 器201可實(shí)現(xiàn)線程級(jí)并行以增加對(duì)處理器執(zhí)行資源的利用。通過利用同時(shí)多線程技術(shù),軟 件應(yīng)用的多個(gè)線程可同時(shí)和/或基本上同時(shí)地在處理器201上運(yùn)行。平臺(tái)150包括由動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備、靜態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備、只讀存儲(chǔ) 器、和/或其他存儲(chǔ)器設(shè)備中的一個(gè)或多個(gè)實(shí)現(xiàn)的存儲(chǔ)器213。在所示的示例中,存儲(chǔ)器 213存儲(chǔ)由將由處理器201執(zhí)行的數(shù)據(jù)信號(hào)表示的指令和代碼。高速緩存202駐留在處理 器201內(nèi),其存儲(chǔ)在存儲(chǔ)器213中所存儲(chǔ)的數(shù)據(jù)信號(hào)。高速緩存202通過利用其訪問的本 地性來加速處理器201的存儲(chǔ)器訪問。在一些示例中,高速緩存202駐留在處理器201外 部。處理器201可使用存儲(chǔ)緩沖器(未示出)來保持要寫入高速緩存202的數(shù)據(jù)以備將其 存入存儲(chǔ)器213。橋存儲(chǔ)器控制器211耦合到CPU總線210和存儲(chǔ)器213。橋存儲(chǔ)器控制器211在處 理器201、存儲(chǔ)器213以及平臺(tái)150中的其他組件之間引導(dǎo)數(shù)據(jù)信號(hào),并橋接CPU總線210、 存儲(chǔ)器213以及第一輸入輸出(IO)總線220之間的數(shù)據(jù)信號(hào)。第一 IO總線220(例如,單條總線或者多條總線的組合)提供平臺(tái)150中的組件 之間的通信鏈路。具體地,耦合到第一 IO總線220的網(wǎng)絡(luò)控制器221能夠?qū)⑵脚_(tái)150鏈接 到計(jì)算機(jī)網(wǎng)絡(luò)(未示出)并支持機(jī)器間通信。此外,耦合到第一 IO總線220的顯示設(shè)備控 制器222允許將顯示設(shè)備(未示出)耦合到平臺(tái)150并充當(dāng)顯示設(shè)備與軟件編譯和執(zhí)行系 統(tǒng)100之間的接口。第二 IO總線230(例如,單條總線或者多條總線的組合)也提供平臺(tái)150中的組 件之間的通信鏈路。具體地,數(shù)據(jù)存儲(chǔ)設(shè)備231耦合到第二 IO總線230并且可由硬盤驅(qū)動(dòng) 器、軟盤驅(qū)動(dòng)器、CD-ROM設(shè)備、閃存設(shè)備和/或任何類型的海量存儲(chǔ)設(shè)備來實(shí)現(xiàn)。輸入接口 232耦合到第二 IO總線230并且可由例如鍵盤和/或鼠標(biāo)控制器和/或任何其它類型的輸 入接口來實(shí)現(xiàn)。輸入接口 232可以是專用設(shè)備或者可駐留在諸如總線控制器或其他控制器 之類的另一設(shè)備中。輸入接口 232允許將輸入設(shè)備耦合到平臺(tái)150并將數(shù)據(jù)信號(hào)從輸入設(shè) 備傳送到平臺(tái)150。耦合到第二 IO總線230的音頻控制器233協(xié)調(diào)對(duì)音頻信號(hào)的記錄和播 放??偩€橋233將第一 IO總線220耦合到第二 IO總線230并且緩沖和橋接第一 IO總線 220與第二 IO總線230之間的數(shù)據(jù)信號(hào)。圖3是圖1的示例虛擬機(jī)140的示例實(shí)現(xiàn)的框圖。虛擬機(jī)140包括可用作虛擬機(jī) 140的主核的示例主引擎310。示例主引擎310監(jiān)視對(duì)中間語言代碼的編譯和執(zhí)行,并且在 需要時(shí)協(xié)調(diào)對(duì)虛擬機(jī)140中的其他模塊的使用。
在圖3所示的示例中,虛擬機(jī)140還包括類加載器320,其加載類和/或執(zhí)行與加 載類相關(guān)聯(lián)的附加或替換功能。例如,類加載器320還可驗(yàn)證所加載的類。示例虛擬機(jī)140還包括類庫330,其可用于在程序可包括一種以上的類(例如,應(yīng) 用專用類和共享類)時(shí)存儲(chǔ)共享類。圖3的示例虛擬機(jī)140還包括即時(shí)編譯器340。在圖3所示的示例中,即時(shí)編譯器 340編譯中間語言代碼以在運(yùn)行時(shí)生成由硬件平臺(tái)(例如,圖1的示例硬件平臺(tái)150)執(zhí)行 的本機(jī)或機(jī)器代碼。一般地,“即時(shí)”是指即時(shí)編譯器340在每種方法或類被用于執(zhí)行時(shí)將 其編譯或轉(zhuǎn)譯成本機(jī)代碼。即時(shí)編譯器340還可將一些經(jīng)編譯本機(jī)代碼存儲(chǔ)在即時(shí)存儲(chǔ)器 內(nèi)高速緩存中(圖3中未示出)。以此方式,虛擬機(jī)140可重用與被調(diào)用或召集一次以上的 先前編譯的方法或?qū)ο笙嚓P(guān)聯(lián)的本機(jī)代碼。示例虛擬機(jī)140還包括存儲(chǔ)器管理器350,其可用于管理存儲(chǔ)器內(nèi)被稱為堆或堆 空間的特定存儲(chǔ)器空間。圖3的示例存儲(chǔ)器管理器350包括堆分配模塊351和垃圾收集器 353。在所示的示例中,堆分配模塊351用于從存儲(chǔ)器中的堆空間分配對(duì)象。堆分配模塊351包括存儲(chǔ)器清除單元352。在一些示例中,存儲(chǔ)器清除單元352在 為線程創(chuàng)建線程局部區(qū)域(TLA)時(shí)清除存儲(chǔ)器中的第一部分。第一部分的大小是可調(diào)(例 如,可編程和/或可調(diào)整)清除大小以及線程的一方面或參數(shù)的函數(shù)。此外,在一些示例中, 在線程的對(duì)象的大小大于線程局部區(qū)域中可用的已清除空間量時(shí),存儲(chǔ)器清除單元352響 應(yīng)于向該對(duì)象分配存儲(chǔ)器而清除存儲(chǔ)器中的第二部分。第二部分的大小是對(duì)象大小以及可 調(diào)清除大小的函數(shù)。垃圾收集器353通常用于回收由不再被應(yīng)用或方法引用的對(duì)象使用的堆中的存 儲(chǔ)器空間。此外,垃圾收集器353還可移動(dòng)對(duì)象以減少堆碎片。主引擎310、類加載器320、類庫330、即時(shí)編譯器340和存儲(chǔ)器管理器350可使用 任何已知技術(shù)或電路來實(shí)現(xiàn)。虛擬機(jī)140中還可實(shí)現(xiàn)其他組件而沒有限制。圖4是圖3的示例存儲(chǔ)器清除單元352的示例實(shí)現(xiàn)的框圖。示例存儲(chǔ)器清除單元 352包括存儲(chǔ)器清除管理器410,用于部分地管理存儲(chǔ)器清除單元352中的組件的操作。存 儲(chǔ)器清除單元352還包括水線生成單元420,其部分地生成可由存儲(chǔ)器清除單元352用來 確定何時(shí)清除存儲(chǔ)器部分的標(biāo)記。該標(biāo)記或水線可用于標(biāo)記TLA中已被清除或?qū)⒈磺宄?區(qū)域。在一些示例中,在為線程創(chuàng)建TLA時(shí)生成初始水線。可響應(yīng)于清除大小以及線程的 參數(shù)生成初始水線。線程的參數(shù)可以是例如線程中的任何數(shù)據(jù)或線程的特性。在一些示例 中,隨機(jī)或偽隨機(jī)函數(shù)可使用線程的參數(shù)來確定初始水線。此外,在一些示例中,在跨越先 前生成的水線時(shí)生成新的水線。當(dāng)在對(duì)象分配之際對(duì)象的大小大于由水線指示的TLA中可 用的已清除空間大小時(shí),該水線被跨越??芍辽倩谠搶?duì)象大小和清除大小來生成新的水 線。存儲(chǔ)器清除的時(shí)序控制可通過生成水線來調(diào)整。例如,可為不同線程不同地設(shè)置 初始水線。這樣做可以減少存儲(chǔ)器清除操作期間存儲(chǔ)器寫操作的沖突。這在使用同時(shí)多線 程技術(shù)的環(huán)境中尤其有用。在一些示例中,用于生成一個(gè)或多個(gè)水線的清除大小可以是可 調(diào)的固定參數(shù)。此外,可向線程的參數(shù)應(yīng)用隨機(jī)函數(shù)以確定該線程的初始水線的獨(dú)特位置。存儲(chǔ)器清除單元352包括預(yù)取單元430。一般地,示例預(yù)取單元430執(zhí)行導(dǎo)致將存 儲(chǔ)器中的位置寫入高速緩存的讀操作。在所示的示例中,預(yù)取單元430在創(chuàng)建TLA時(shí)執(zhí)行預(yù)取。以下結(jié)合圖5和7更詳細(xì)地描述預(yù)取單元430的示例實(shí)現(xiàn)。存儲(chǔ)器清除單元352包括存儲(chǔ)器清零單元440。存儲(chǔ)器清零單元440可例如通過 寫0來清除存儲(chǔ)器中的部分。在可用時(shí),存儲(chǔ)器清零單元440通過寫入更新高速緩存的存儲(chǔ) 緩沖器來清除存儲(chǔ)器,該高速緩存更新存儲(chǔ)器。在圖4所示的示例中,存儲(chǔ)器清零單元440 在TLA創(chuàng)建時(shí)清除第一存儲(chǔ)器部分,而當(dāng)在對(duì)象分配之際對(duì)象大小大于存儲(chǔ)器中的可用已 清除空間時(shí)清除第二存儲(chǔ)器部分。在這些實(shí)例中,被清除的存儲(chǔ)器部分的大小與TLA大小 去耦,以使被清除存儲(chǔ)器的大小與TLA大小不同。存儲(chǔ)器清除操作可被配置成具有大于對(duì) 象大小但小于TLA大小的尺寸。處理器中的存儲(chǔ)緩沖器的大小可用于確定被清除存儲(chǔ)器的 大小。存儲(chǔ)器清除單元352包括空閑線生成單元450,其生成空閑線。在所示的示例中, 空閑線可由存儲(chǔ)器清除單元352用于標(biāo)記有多少存儲(chǔ)器已被分配給對(duì)象。此外,可在對(duì)象 分配時(shí)使用空閑線來確定何時(shí)執(zhí)行預(yù)取以及何時(shí)清除更多存儲(chǔ)器。圖5是代表可使用機(jī)器可讀指令執(zhí)行以實(shí)現(xiàn)圖3和/或4的示例存儲(chǔ)器清除單元 的示例過程的流程圖。在所示的示例中,在為線程創(chuàng)建TLA時(shí)生成空閑線(框501)。可管 理TLA以使得TLA中的地址位置被順序地分配且空閑線指示TLA中何處可分配下一地址。 可生成水線以標(biāo)記TLA中將被清除或已被清除的區(qū)域(框502)。所生成的水線(框502) 可被稱為“初始水線”。在圖5所示的示例中,初始水線的位置是基于可調(diào)或可調(diào)整參數(shù)(諸 如清除大小)和線程的函數(shù)來確定的。在所示的示例中,響應(yīng)于生成初始水線而預(yù)取存儲(chǔ) 器中的位置(框50 。以下結(jié)合圖7和8更詳細(xì)地描述預(yù)取存儲(chǔ)位置。例如通過寫入更新高速緩存的存儲(chǔ)緩沖器來將存儲(chǔ)器清除到所生成的初始水線 (框504)。在所示的示例中,隨后在分配新對(duì)象時(shí)生成新的空閑線(框50 ??蓮南惹吧?成的空閑線的位置以及新對(duì)象的大小確定新空閑線的位置。若新空閑線跨越水線(例如, 在新對(duì)象的大小大于TLA中可用的已清除空間的大小時(shí))(框506),則生成新的水線(框 507)。如果新的空閑線沒有跨越水線,則控制返回到框505。在所示的示例中,從在框505 生成的新空閑線的位置以及清除大小參數(shù)確定新水線的位置。在所示的示例中,在生成新的水線(框507)之后,預(yù)取存儲(chǔ)器中的位置(框508)。 以下結(jié)合圖7和8更詳細(xì)地描述預(yù)取存儲(chǔ)位置。在所示的示例中,例如通過寫入更新高速緩存的存儲(chǔ)緩沖器來將存儲(chǔ)器清除到所 生成的新水線(框509)。在一些示例中,可使用以下偽代碼來實(shí)現(xiàn)框501-504表示的示例機(jī)器可讀指令。設(shè)置空閑線=TLA開始;在TLA創(chuàng)建時(shí)tla- >初始水線=清除大小+生成初始水線(線程);預(yù)取nta (tla開始,初始水線+預(yù)取距離);清除存儲(chǔ)器(tla開始,初始水線);其中0 <生成初始水線(線程)<清除大??;且生成的值是線程的函數(shù)。在一些示例中,可使用以下偽代碼來實(shí)現(xiàn)框505-509表示的示例機(jī)器可讀指令。在對(duì)象分配時(shí)新空閑線=空閑線+對(duì)象大?。?br>
If (對(duì)象大小+空閑線>水線){新水線=新空閑線+清除大?。活A(yù)取nta(新空閑線,新水線+預(yù)取距離);清除存儲(chǔ)器(水線,新水線);}圖6是示出圖4的示例預(yù)取單元430的示例實(shí)現(xiàn)的框圖。雖然本文結(jié)合圖1_5的 示例系統(tǒng)進(jìn)行描述,但示例預(yù)取單元430可在附加或替換的系統(tǒng)、環(huán)境中實(shí)現(xiàn),和/或結(jié)合 不同系統(tǒng)、環(huán)境、技術(shù)等來實(shí)現(xiàn)。圖6的示例預(yù)取單元430包括大小函數(shù)選擇器600、對(duì)象大小函數(shù)單元610、移動(dòng) 平均函數(shù)單元620、指數(shù)移動(dòng)平均函數(shù)單元630、以及預(yù)取器640,預(yù)取器640包括大小函數(shù) 調(diào)用器650、比較器660、大小閾值670、大小定義680以及讀取器690。雖然圖6中已示出 實(shí)現(xiàn)圖4的預(yù)取單元430的示例方式,但是圖6中所示的這些元件、過程和/或設(shè)備中的一 個(gè)或多個(gè)可以任何其他方式來組合、劃分、重新安排、省略、消除和/或?qū)崿F(xiàn)。此外,圖6的 任何或所有的示例大小函數(shù)選擇器600、示例對(duì)象大小函數(shù)單元610、示例移動(dòng)平均函數(shù)單 元620、示例指數(shù)移動(dòng)平均函數(shù)單元630、示例預(yù)取器640、示例大小函數(shù)調(diào)用器650、示例 比較器660、示例大小閾值670、示例大小定義680、示例讀取器690和/或更一般地示例預(yù) 取單元430可由硬件、軟件、固件和/或硬件、軟件和/或固件的任何組合來實(shí)現(xiàn)。因此, 例如圖6的示例大小函數(shù)選擇器600、示例對(duì)象大小函數(shù)單元610、示例移動(dòng)平均函數(shù)單元 620、示例指數(shù)移動(dòng)平均函數(shù)單元630、示例預(yù)取器640、示例大小函數(shù)調(diào)用器650、示例比較 器660、示例大小閾值670、示例大小定義680、示例讀取器690和/或更一般地示例預(yù)取單 元430中的任一個(gè)可由一個(gè)或多個(gè)電路、可編程處理器、專用集成電路(ASIC)、可編程邏輯 器件(PLD)和/或現(xiàn)場可編程邏輯器件(FPLD)等來實(shí)現(xiàn)。在任何所附裝置權(quán)利要求詮釋 為涵蓋純軟件和/或固件實(shí)現(xiàn)時(shí),圖6的示例大小函數(shù)選擇器600、示例對(duì)象大小函數(shù)單元 610、示例移動(dòng)平均函數(shù)單元620、示例指數(shù)移動(dòng)平均函數(shù)單元630、示例預(yù)取器640,示例大 小函數(shù)調(diào)用器650、示例比較器660、示例大小閾值670、示例大小定義680、示例讀取器690 和/或更一般地示例預(yù)取單元430中的至少一個(gè)由此明確定義成包括諸如存儲(chǔ)器、DVD、CD 等存儲(chǔ)該軟件和/或固件的有形機(jī)器可讀介質(zhì)。此外,圖6的示例預(yù)取單元430可包括補(bǔ) 充或代替圖6中所示的那些的一個(gè)或多個(gè)元件、過程和/或設(shè)備,和/或可包括一個(gè)以上任 何或所有所示的元件、過程和設(shè)備。本文描述的示例預(yù)取單元430實(shí)現(xiàn)自適應(yīng)或主動(dòng)預(yù)取操作,其比常規(guī)或先前預(yù)取 單元(例如,預(yù)取固定量的存儲(chǔ)器的預(yù)取單元)產(chǎn)生更準(zhǔn)確的預(yù)取并且能更好地處理大對(duì) 象(例如,通過在遭遇大對(duì)象時(shí)不過度地取存儲(chǔ)器)。具體地,不同于常規(guī)或先前預(yù)取單元, 圖6的示例預(yù)取單元430避免了在遭遇大對(duì)象時(shí)過度地取存儲(chǔ)器。如上所述,常規(guī)或先前 預(yù)取單元預(yù)取固定量的存儲(chǔ)器(例如,在初始預(yù)取了太小量的存儲(chǔ)器時(shí)預(yù)取一次以上)。相反,圖6的示例預(yù)取單元430在將與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小納入到要預(yù) 取的存儲(chǔ)器的量的確定中。在一些示例中,示例預(yù)取單元430將與近期預(yù)取的對(duì)象有關(guān)的 對(duì)象大小趨勢納入到要預(yù)取的存儲(chǔ)器的量的確定中。通過這樣做,示例預(yù)取單元430預(yù)取 與相關(guān)聯(lián)的對(duì)象的大小相稱的量的存儲(chǔ)器。所得預(yù)取操作更準(zhǔn)確且更好地利用寶貴的高速 緩存資源。示例預(yù)取單元430的附加和替換優(yōu)點(diǎn)將從本文描述的示例變得明顯。如圖6中所示,示例預(yù)取單元430包括多個(gè)函數(shù),這些函數(shù)能夠確定將自適應(yīng)地納入到要預(yù)取的存儲(chǔ)器的量的確定中的對(duì)象大小。具體地,示例預(yù)取單元430包括對(duì)象大小 函數(shù)單元610、移動(dòng)平均函數(shù)單元620和指數(shù)移動(dòng)平均函數(shù)單元630。預(yù)取單元430可包括 能夠返回與關(guān)聯(lián)于預(yù)取操作的對(duì)象大小有關(guān)的附加或替換信息(例如,預(yù)取操作中涉及的 對(duì)象和/或與之相關(guān)的其他對(duì)象)的附加或替換函數(shù)和/或單元。為了選擇由大小函數(shù)單 元610、移動(dòng)平均函數(shù)單元620和/或指數(shù)移動(dòng)平均函數(shù)單元630實(shí)現(xiàn)的函數(shù)中的一個(gè)(或 多個(gè)),示例預(yù)取單元430采用大小函數(shù)選擇器600。示例大小函數(shù)選擇器600可由程序 員、設(shè)計(jì)者、技術(shù)人員、和/或任何其它類型的用戶根據(jù)調(diào)度、隨機(jī)地、和/或經(jīng)由任何合適 技術(shù)來配置,以選擇將在確定要預(yù)取的存儲(chǔ)器的量時(shí)使用的單元610、620和630的函數(shù)之 一。例如,大小函數(shù)選擇器600可被配置成在第一類型的運(yùn)行時(shí)操作期間選擇對(duì)象大小函 數(shù)單元610,在第二類型的運(yùn)行時(shí)操作期間選擇移動(dòng)平均函數(shù)單元620,以及在第三類型的 運(yùn)行時(shí)操作期間選擇指數(shù)移動(dòng)平均函數(shù)單元630。不同類型的運(yùn)行時(shí)操作可對(duì)應(yīng)于例如正 在由虛擬機(jī)140處理的不同類型的指令或類。大小函數(shù)選擇器600可被配置成基于附加或 替換因素選擇函數(shù)單元610、620和630之一。圖6的示例對(duì)象大小函數(shù)單元610實(shí)現(xiàn)返回觸發(fā)預(yù)取分配請(qǐng)求的對(duì)象的大小的函 數(shù)。在所示的示例中,可使用以下偽代碼來表示對(duì)象大小函數(shù)610實(shí)現(xiàn)的函數(shù)對(duì)象大小(當(dāng)前)=對(duì)象·大小·圖6的示例移動(dòng)平均函數(shù)單元620實(shí)現(xiàn)返回指示與近期預(yù)取操作相關(guān)聯(lián)的對(duì)象的 大小的N周期移動(dòng)平均的函數(shù)。在所示的示例中,可使用以下偽代碼來表示移動(dòng)平均函數(shù) 單元620實(shí)現(xiàn)的函數(shù)對(duì)象大小(當(dāng)前)=(對(duì)象.大小+N*對(duì)象大小(先前))/ (N+1),其中‘N’是可 編程或可調(diào)整變量,其設(shè)置成定義在計(jì)算對(duì)象大小的移動(dòng)平均時(shí)要考慮的先前對(duì)象的范圍 (例如,五十(50)個(gè)最近的對(duì)象)。圖6的示例指數(shù)平均函數(shù)單元630實(shí)現(xiàn)返回指示與近期預(yù)取操作相關(guān)聯(lián)的對(duì)象的 大小的指數(shù)移動(dòng)平均的函數(shù)。在所示的示例中,可使用以下偽代碼來表示指數(shù)移動(dòng)平均函 數(shù)單元630實(shí)現(xiàn)的函數(shù)對(duì)象大小(當(dāng)前)=((N-I)*對(duì)象大小(先前)+對(duì)象.大小)/N,其中‘N’是可編 程或可調(diào)整變量,其設(shè)置成定義計(jì)算對(duì)象大小的移動(dòng)平均時(shí)要考慮的先前對(duì)象的范圍(例 如,五十(50)個(gè)最近的對(duì)象)。示例大小函數(shù)調(diào)用器650從大小函數(shù)選擇器600接收對(duì)大小函數(shù)單元610、620和 630之一的選擇。例如,大小函數(shù)選擇器600可為特定預(yù)取操作選擇對(duì)象大小函數(shù)單元610。 在這些實(shí)例中,在需要將在本文描述的自適應(yīng)方法中考慮的對(duì)象大小時(shí),示例大小函數(shù)調(diào) 用器650調(diào)用對(duì)象大小函數(shù)單元610。在所示的示例中,對(duì)象大小函數(shù)單元610返回觸發(fā)預(yù) 取操作的當(dāng)前對(duì)象的大小(例如,響應(yīng)于創(chuàng)建TLA)。替換地,在大小函數(shù)選擇器600選擇移 動(dòng)平均函數(shù)單元620和指數(shù)移動(dòng)平均函數(shù)單元630之一時(shí),大小函數(shù)調(diào)用器650響應(yīng)于對(duì) 所選函數(shù)的調(diào)用從所選函數(shù)接收與當(dāng)前對(duì)象以及關(guān)聯(lián)于先前預(yù)取操作的對(duì)象有關(guān)的信息。示例大小函數(shù)調(diào)用器650將從大小函數(shù)單元610、620和630中的所選單元接收到 的對(duì)象大小信息遞送給圖6的示例比較器660(例如,從大小函數(shù)調(diào)用器650)。在所示的示 例中,比較器660還從大小閾值670接收信息。閾值可以是例如由程序員、技術(shù)人員、設(shè)計(jì)者等配置的對(duì)應(yīng)于不同大小的對(duì)象(例如,通常與預(yù)取操作相關(guān)聯(lián)的對(duì)象)的可編程或可調(diào)整大小。閾值670的值從反映與預(yù) 取操作相關(guān)聯(lián)的通常大小的對(duì)象的第一閾值(例如,與平均對(duì)象相關(guān)聯(lián)的大小)開始遞增 地增加。如以下所描述的,示例閾值670被用于確定與當(dāng)前預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小。圖6的示例比較器660將從大小函數(shù)調(diào)用器650接收到的對(duì)象大小信息與閾值 670中的第一閾值作比較。在對(duì)象大小信息大于或等于(例如,在存儲(chǔ)器大小方面)閾值 670中的第一閾值時(shí),比較器660前進(jìn)到將對(duì)象大小信息與閾值670中的第二閾值作比較, 該第二閾值遞增地大于閾值670中的第一閾值。若對(duì)象大小信息大于或等于閾值670中的 第二閾值,比較器660前進(jìn)到將對(duì)象大小信息與閾值670中的第三閾值作比較,該第三閾值 遞增地大于閾值670中的第二閾值。圖6的示例比較器660繼續(xù)以此方式將對(duì)象大小信息 與閾值670作比較,直至對(duì)象大小信息小于閾值670中的一個(gè)閾值。例如,當(dāng)比較器660確 定與預(yù)取操作相關(guān)聯(lián)的對(duì)象小于閾值670中的第三閾值且大于閾值670中的第二閾值時(shí), 預(yù)取單元430就知道該對(duì)象的大小了(例如,落在由閾值670中的第三閾值大于閾值670 中的第二閾值的增量所定義的特定范圍內(nèi))。響應(yīng)于確定對(duì)象大小信息小于閾值670中的第一閾值,比較器660標(biāo)識(shí)與閾值670 中的該第一閾值相對(duì)應(yīng)的一個(gè)大小定義680。圖6的每一個(gè)示例大小定義680皆定義要預(yù) 取的存儲(chǔ)器大小。在所示的示例中,每個(gè)大小定義680對(duì)應(yīng)于大小閾值670中的一個(gè)閾值。 在比較器660確定對(duì)象大小信息小于例如閾值670中的第一閾值時(shí),標(biāo)識(shí)大小定義680中 與閾值670中的第一閾值相對(duì)應(yīng)的第一大小定義。由此,示例預(yù)取單元430能標(biāo)識(shí)與第一 大小定義680相對(duì)應(yīng)的要預(yù)取的存儲(chǔ)器量430。由于以上描述的計(jì)算(例如,由比較器660 進(jìn)行的比較),所標(biāo)識(shí)的存儲(chǔ)器量將包括足以準(zhǔn)確地預(yù)取對(duì)應(yīng)于與預(yù)取操作相關(guān)聯(lián)的對(duì)象 的信息的存儲(chǔ)器(例如,因?yàn)閷?duì)象的大小被確定為小于對(duì)應(yīng)于所標(biāo)識(shí)大小定義的閾值)。當(dāng)圖6的示例讀取器690確定以上描述的比較過程中標(biāo)識(shí)了哪一個(gè)大小定義680 時(shí),示例讀取器690預(yù)取所標(biāo)識(shí)的那個(gè)大小定義680中所定義的量的存儲(chǔ)器。因此,示例預(yù) 取單元430要預(yù)取的存儲(chǔ)器的量自適應(yīng)地基于與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小和/或與近 期預(yù)取相關(guān)聯(lián)的對(duì)象大小趨勢。該自適應(yīng)預(yù)取方法例如通過在系統(tǒng)遭遇大對(duì)象時(shí)避免不必要的大量預(yù)取并提高 預(yù)取操作的準(zhǔn)確性來高效利用硬件高速緩存資源。各大小閾值670以及因此各大小定義 680相差的增量的大小可被調(diào)節(jié)或調(diào)整以改變預(yù)取單元430的精度。具體地,較小增量將減 小對(duì)象大小(例如,如由大小函數(shù)調(diào)用器670取回的)與確定為大于所獲取對(duì)象大小的某 個(gè)大小閾值670之間的差異。然而,這些較小的增量很可能導(dǎo)致更大量的計(jì)算,從而花費(fèi)較 長時(shí)間段。例如取決于預(yù)取單元430的實(shí)現(xiàn),在一些示例中可為了更好的精度而犧牲時(shí)間, 而在一些示例中可為了時(shí)間而犧牲精度。圖7是代表可被執(zhí)行以實(shí)現(xiàn)圖4和/或6的示例預(yù)取單元430的示例機(jī)器可讀指 令的流程圖。此外,圖7的示例流程圖可用于實(shí)現(xiàn)圖5的框503和/或框508。例如,以上 結(jié)合圖5的框503描述的預(yù)取操作可始于在圖7的示例中選擇大小函數(shù)(框700)。在所示 的示例中,大小函數(shù)選擇器600(圖6)選擇對(duì)象大小函數(shù)單元610(圖6)、移動(dòng)平均函數(shù)單 元620(圖6)以及指數(shù)移動(dòng)平均單元630(圖6)之一。一些示例包括能夠返回關(guān)于可用于 確定要預(yù)取的存儲(chǔ)器量的對(duì)象大小的附加或替換信息的附加或替換函數(shù)。示例預(yù)取器640 (圖6)的示例大小函數(shù)調(diào)用器650 (圖6)調(diào)用由大小函數(shù)選擇器600選擇的大小函數(shù)(框70幻。取決于大小函數(shù)選擇器600選擇了哪個(gè)大小函數(shù),所選大 小函數(shù)返回與當(dāng)前對(duì)象(例如,與當(dāng)前預(yù)取操作相關(guān)聯(lián)的對(duì)象)和/或其他相關(guān)對(duì)象(例 如,與近期預(yù)取相關(guān)聯(lián)的對(duì)象)有關(guān)的信息。如上所述,在確定要預(yù)取的存儲(chǔ)器量時(shí)動(dòng)態(tài)地 使用返回的對(duì)象大小信息的自適應(yīng)方法實(shí)現(xiàn)了比常規(guī)或先前預(yù)取單元(例如,預(yù)取固定量 的存儲(chǔ)器的預(yù)取單元)產(chǎn)生更準(zhǔn)確的預(yù)取且能更好地處理大對(duì)象的預(yù)取操作。比較器660 (圖6)將由大小函數(shù)調(diào)用器600取回的對(duì)象大小信息與大小閾值 670(圖6)中的第一閾值作比較(框704)。在對(duì)象大小信息小于(例如,在存儲(chǔ)器大小方 面)閾值670中的第一閾值時(shí)(框704),比較器660標(biāo)識(shí)與閾值670中的第一閾值相對(duì)應(yīng) 的一個(gè)大小定義680 (圖6),并且讀取器690預(yù)取在所標(biāo)識(shí)的那個(gè)大小定義680中所定義的 存儲(chǔ)器量(框706)。在所示的示例中,控制隨后返回到圖5的框504。再參照框704,在比較器660確定由大小函數(shù)調(diào)用器650取回的對(duì)象大小信息大于 或等于閾值670中的第一閾值時(shí),控制傳遞到框708并且比較器將對(duì)象大小信息與閾值670 中的第二閾值作比較(框708)。閾值670中的第二閾值遞增地大于閾值670中的第一閾 值。在對(duì)象大小信息小于(例如,在存儲(chǔ)器大小方面)閾值670中的第二閾值時(shí)(框704), 比較器660標(biāo)識(shí)與閾值670中的第二閾值相對(duì)應(yīng)的一個(gè)大小定義680,并且讀取器690預(yù)取 在所標(biāo)識(shí)的那個(gè)大小定義680中所定義的存儲(chǔ)器量(框710)。在所示的示例中,控制隨后 返回到圖5的框504。再參照框708,在比較器660確定由大小函數(shù)調(diào)用器650取回的對(duì)象大小信息大于 或等于閾值670中的第二閾值時(shí),控制傳遞到框712并且比較器660將對(duì)象大小信息與閾 值670中的第N閾值作比較(框712)。S卩,比較器660將對(duì)象大小信息與遞增地更大的閾 值670作比較直至一個(gè)閾值670大于對(duì)象大小。作為響應(yīng),讀取器690預(yù)取在標(biāo)識(shí)為對(duì)應(yīng) 于該閾值的那個(gè)大小定義680中所定義的量的存儲(chǔ)器(框714)。因此,示例預(yù)取單元430 要預(yù)取的存儲(chǔ)器的量基于與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小和/或與近期預(yù)取相關(guān)聯(lián)的對(duì) 象大小趨勢。圖5和/或7的示例過程可使用處理器、控制器和/或任何其他合適的處理設(shè)備 來執(zhí)行。例如,圖5和/或7的示例過程可在存儲(chǔ)在與處理器(例如,以上結(jié)合圖2討論的 示例處理器201)相關(guān)聯(lián)的有形介質(zhì)上的編碼指令中實(shí)現(xiàn),有形介質(zhì)諸如閃存、只讀存儲(chǔ)器 (ROM)和/或隨機(jī)存取存儲(chǔ)器(RAM)。替換地,圖5和/或7的部分或所有示例過程可使用 專用集成電路(ASIC)、可編程邏輯器件(PLD)、現(xiàn)場可編程邏輯器件(FPLD)、分立邏輯、硬 件、固件等的任何組合來實(shí)現(xiàn)。另外,圖5和/或7的一些或所有示例過程可手動(dòng)實(shí)現(xiàn)或?qū)?現(xiàn)為任何前述技術(shù)的任何組合,例如固件、軟件、分立邏輯和/或硬件的任何組合。此外,盡 管圖5和/或7的示例過程是參照?qǐng)D5和/或7的序列圖來描述的,但是可采用實(shí)現(xiàn)圖5 和/或7的過程的其他方法。例如,操作的執(zhí)行順序可以改變,和/或所描述的一些操作可 被改變、消除、細(xì)分、或組合。此外,另外,圖5和/或7的任何或所有示例過程可例如由單 獨(dú)的處理線程、處理器、設(shè)備、分立邏輯、電路等順序地和/或并行地執(zhí)行。盡管本文已描述了特定方法、裝置和制品,但本專利的覆蓋范圍不限于此。相反, 本專利覆蓋字面上或在等效教義下清楚地落在所附權(quán)利要求范圍內(nèi)的所有方法、裝置和制品。
權(quán)利要求
1.一種用于預(yù)取操作的方法,包括調(diào)用由處理器執(zhí)行的第一大小函數(shù)以確定與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大?。粚⑺雠c預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小與多個(gè)閾值中的第一閾值作比較;以及在所述對(duì)象的大小小于所述第一閾值時(shí),將多個(gè)大小定義中與所述第一閾值相對(duì)應(yīng)的 第一大小定義所定義的量的存儲(chǔ)器預(yù)取到高速緩存中。
2.如權(quán)利要求1所述的方法,其特征在于,還包括在所述與預(yù)取操作相關(guān)聯(lián)的對(duì)象的 大小大于或等于所述第一閾值時(shí)將所述對(duì)象的大小與所述閾值中的第二閾值作比較,其中 所述第二閾值大于所述第一閾值。
3.如權(quán)利要求2所述的方法,其特征在于,還包括在所述對(duì)象的大小小于所述第二閾 值且大于或等于所述第一閾值時(shí)預(yù)取所述大小定義中與所述第二閾值相對(duì)應(yīng)的第二大小 定義所定義的量的存儲(chǔ)器,其中所述第二大小定義比所述第一大小定義定義更大的存儲(chǔ)器 量。
4.如權(quán)利要求1所述的方法,其特征在于,還包括選擇所述第一大小函數(shù)與第二大小函數(shù)之一。
5.如權(quán)利要求4所述的方法,其特征在于,所述第二大小函數(shù)確定與關(guān)聯(lián)于所述預(yù)取 操作的對(duì)象以及關(guān)聯(lián)于當(dāng)前預(yù)取操作之前的其他預(yù)取操作的其他對(duì)象有關(guān)的移動(dòng)平均。
6.如權(quán)利要求4所述的方法,其特征在于,所述第二大小函數(shù)確定與關(guān)聯(lián)于所述預(yù)取 操作的對(duì)象以及關(guān)聯(lián)于當(dāng)前預(yù)取操作之前的其他預(yù)取操作的其他對(duì)象有關(guān)的指數(shù)移動(dòng)平 均。
7.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)取操作是由創(chuàng)建與存儲(chǔ)器分配操作 相關(guān)聯(lián)的線程局部區(qū)域觸發(fā)的。
8.一種其上存儲(chǔ)有指令的有形機(jī)器可訪問介質(zhì),所述指令在被執(zhí)行時(shí)使機(jī)器調(diào)用第一大小函數(shù)以確定與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小;將所述與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小與多個(gè)閾值中的第一閾值作比較;以及在所述對(duì)象的大小小于所述第一閾值時(shí),預(yù)取多個(gè)大小定義中與所述第一閾值相對(duì)應(yīng) 的第一大小定義所定義的量的存儲(chǔ)器。
9.如權(quán)利要求8所述的有形機(jī)器可訪問介質(zhì),其特征在于,其上存儲(chǔ)有指令,所述指令 在被執(zhí)行時(shí)使機(jī)器在所述與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小大于或等于所述第一閾值時(shí)將 所述對(duì)象的大小與所述閾值中的第二閾值作比較,其中所述第二閾值大于所述第一閾值。
10.如權(quán)利要求9所述的有形機(jī)器可訪問介質(zhì),其特征在于,其上存儲(chǔ)有指令,所述指 令在被執(zhí)行時(shí)使機(jī)器在所述對(duì)象的大小小于所述第二閾值且大于或等于所述第一閾值時(shí) 預(yù)取所述大小定義中與所述第二閾值相對(duì)應(yīng)的第二大小定義所定義的量的存儲(chǔ)器,其中所 述第二大小定義比所述第一大小定義定義更大的存儲(chǔ)器量。
11.如權(quán)利要求8所述的有形機(jī)器可訪問介質(zhì),其特征在于,其上存儲(chǔ)有指令,所述指 令在被執(zhí)行時(shí)使機(jī)器選擇所述第一大小函數(shù)與第二大小函數(shù)之一。
12.如權(quán)利要求11所述的有形機(jī)器可訪問介質(zhì),其特征在于,所述第二大小函數(shù)確定 與關(guān)聯(lián)于所述預(yù)取操作的對(duì)象以及關(guān)聯(lián)于當(dāng)前預(yù)取操作之前的其他預(yù)取操作的其他對(duì)象 有關(guān)的移動(dòng)平均。
13.如權(quán)利要求11所述的有形機(jī)器可訪問介質(zhì),其特征在于,所述第二大小函數(shù)確定與關(guān)聯(lián)于所述預(yù)取操作的對(duì)象以及關(guān)聯(lián)于當(dāng)前預(yù)取操作之前的其他預(yù)取操作的其他對(duì)象 有關(guān)的指數(shù)移動(dòng)平均。
14.如權(quán)利要求8所述的有形機(jī)器可訪問介質(zhì),其特征在于,所述預(yù)取操作是由創(chuàng)建與 存儲(chǔ)器分配操作相關(guān)聯(lián)的線程局部區(qū)域觸發(fā)的。
15.一種用于預(yù)取操作的預(yù)取單元,包括第一大小函數(shù)單元,用于確定與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大??;比較器,用于將所述與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小與多個(gè)閾值中的第一閾值作比 較;以及讀取器,用于在所述比較器確定所述對(duì)象的大小小于所述第一閾值時(shí),預(yù)取多個(gè)大小 定義中與所述第一閾值相對(duì)應(yīng)的第一大小定義所定義的量的存儲(chǔ)器。
16.如權(quán)利要求15所述的預(yù)取單元,其特征在于,所述比較器用于在所述與預(yù)取操作 相關(guān)聯(lián)的對(duì)象的大小大于或等于所述第一閾值時(shí)將所述對(duì)象的大小與所述閾值中的第二 閾值作比較,其中所述第二閾值大于所述第一閾值。
17.如權(quán)利要求16所述的預(yù)取單元,其特征在于,所述讀取器用于在所述對(duì)象的大小 小于所述第二閾值且大于或等于所述第一閾值時(shí)預(yù)取所述大小定義中與所述第二閾值相 對(duì)應(yīng)的第二大小定義所定義的量的存儲(chǔ)器,其中所述第二大小定義比所述第一大小定義定 義更大的存儲(chǔ)器量。
18.如權(quán)利要求15所述的預(yù)取單元,其特征在于,還包括大小函數(shù)選擇器,用于選擇所 述第一大小函數(shù)單元與第二大小函數(shù)單元之一。
19.如權(quán)利要求18所述的預(yù)取單元,其特征在于,所述第二大小函數(shù)單元用于確定與 關(guān)聯(lián)于所述預(yù)取操作的對(duì)象以及關(guān)聯(lián)于當(dāng)前預(yù)取操作之前的其他預(yù)取操作的其他對(duì)象有 關(guān)的移動(dòng)平均。
20.如權(quán)利要求18所述的預(yù)取單元,其特征在于,所述第二大小函數(shù)單元用于確定與 關(guān)聯(lián)于所述預(yù)取操作的對(duì)象以及關(guān)聯(lián)于當(dāng)前預(yù)取操作之前的其他預(yù)取操作的其他對(duì)象有 關(guān)的指數(shù)移動(dòng)平均。
全文摘要
本文公開了用于在托管運(yùn)行時(shí)環(huán)境中執(zhí)行自適應(yīng)預(yù)取操作的方法和裝置。一種用于預(yù)取操作的示例預(yù)取單元包括由處理器執(zhí)行的第一大小函數(shù),用于確定與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大??;比較器,用于將與預(yù)取操作相關(guān)聯(lián)的對(duì)象的大小與多個(gè)閾值中的第一閾值作比較;以及讀取器,用于在比較器確定對(duì)象的大小小于第一閾值時(shí),預(yù)取多個(gè)大小定義中與該第一閾值相對(duì)應(yīng)的第一大小定義所定義的量的存儲(chǔ)器。
文檔編號(hào)G06F9/38GK102109980SQ20101062017
公開日2011年6月29日 申請(qǐng)日期2010年12月21日 優(yōu)先權(quán)日2009年12月22日
發(fā)明者M·孫 申請(qǐng)人:英特爾公司