專利名稱:利用流預取歷史來改進數據預取性能的方法和系統的制作方法
技術領域:
本發明一般涉及數據處理領域,更具體來說,涉及用于在數據處理系統中預取數據的計算機實現的方法、系統和計算機程序產品。
背景技術:
在現代數據處理系統中已采用了硬件數據預取器,以在從較低級別的高速緩存和其他數據存儲介質中取回數據時預測并減少大量的等待時間。該等待時間是從數據存儲介質中取回數據所需要的處理器周期的總數,其已經有了快速的增加,這是因為處理器頻率提高但在訪問數據存儲介質所需要的時間方面沒有相應的改進。
針對在等待時間方面的快速增加,已采用流硬件數據預取器來檢測數據流(以單調上升或單調下降方式引用鄰近的高速緩存塊集合的存儲引用的任何序列)并開始將數據預取到預定深度,即處理系統當前加載的數據之前的預定數量的高速緩存塊。流的檢測要求對于相繼行的至少兩個高速緩存丟失(miss);并且為了避免預取那些可能不需要的高速緩存行,對于新近檢測到的流進行的預取通常適當地開始,并且預取的深度逐漸上升直至達到指定深度為止。
現代流預取器可以通過使用多個流寄存器來同時跟蹤和預取多個流,其中每個流寄存器包含標識當前數據流狀態的地址以及其它信息,例如流的方向、從流開始起消耗的行的數量、以及已產生但尚未經調度的預取。
盡管以上描述的預取方法至今仍然工作良好,但啟動損失(兩個初始丟失)和上升階段(其中預取深度可能不足以確保將數據按時遞送到應用)具有相關聯的性能損失,該性能損失隨著存儲器等待時間的增加而增加。旨在縮短媒體流長度的應用僅略微受益于數據預取器,或者因為啟動損失所致而根本沒有受益。對于這種情況,期望盡可能地減少啟動損失。
數據流預取器保持一些如前所述當前定義在其流寄存器的任何一個中的關于數據流的歷史信息,即當前數據地址、方向、待預取的下一行以及已產生但尚未發送的未決預取。然而,當新的流替代當前流的時候,該信息在這些字段被新的流分配覆蓋時丟失。
在應用代碼的連續迭代中保存這些歷史信息中的一些(例如啟動數據地址)以在下一次檢測到相同數據流時使用將有助于實現降低啟動損失的目的。然而,對于典型應用,這將需要很大的表格來有效地應對在典型應用期間所產生的大量數據流。例如,一個雙重嵌套(double-nested)或三層嵌套循環結構單獨就能很容易地產生成千個流。
該問題的一種解決方案是允許編譯器在目標代碼中插入特定指令,以引導硬件預取引擎在指定地址開始一個流并且迅速上升至期望深度。然而,該方法要求對應用進行重新編譯,并且局限于編譯器在編譯時間所具有的關于流以及其高速緩存的特性的不完備知識(因為陣列大小通常是隨運行時間變化的變量)。
因此,希望提供一種機制來改進數據處理系統中的預取性能,其對于沒有利用流預取指令進行編譯過的現有二進制很有效,從而在該數據處理系統中實現數據預取硬件更好的一般性使用。
發明內容
本發明提供一種用于在數據處理系統中預取數據的計算機實現的方法、系統和計算機程序產品。用于在數據處理系統中預取數據的計算機實現的方法包括通過將每個先前數據流的屬性與引起該數據流分配的存儲器訪問指令相關聯而產生先前數據流的屬性信息,然后記錄所產生的屬性信息。訪問所記錄的屬性信息,并且利用所訪問的記錄的屬性信息來修改新數據流的特性。
在所附權利要求中對確信為本發明特有的新穎特征進行了闡述。然而,當結合附圖進行閱讀時,參考示意性實施方式的下列詳細描述將可以更好地理解本發明自身以及使用的優選模式、進一步的目的及其優點,附圖中圖1示出了可以在其中實現本發明若干方面的數據處理系統的網絡的示意圖;圖2是可以在其中實現本發明若干方面的數據處理系統的框圖;圖3示意性示出了根據本發明示例性實施方式的數據流預取器的框圖;圖4是示意性示出了根據本發明示例性實施方式的圖3中數據流歷史表中每個索引處所存儲的信息的圖;圖5示出了對于二維網格的Jacobi解算器的一般實現,以幫助解釋本發明的若干方面;以及圖6是示出了根據本發明示例性實施方式的用于在數據處理系統中預取數據的計算機實現的方法的流程圖。
具體實施例方式
現在參考附圖特別是參考圖1-2,提供了在其中可以實現本發明實施方式的數據處理環境的示例圖。應當理解,圖1-2僅為示例性的,其不意在聲明或暗示對在其中可以實現本發明的若干方面或實施方式的環境的任何限定。在不脫離本發明的實質和范圍的情況下,可以對所示出的環境進行很多種修改。
現在參考附圖,圖1示出了可以在其中實現本發明若干方面的數據處理系統網絡的圖示表述。網絡數據處理系統100是一種計算機網絡,在該網絡中可以實現本發明的若干實施方式。網絡數據處理系統100包含網絡102,其是用于在網絡數據處理系統100內彼此連接的各種裝置和計算機之間提供通信鏈路的介質。網絡102可以包括諸如有線、無線通信鏈路或光纜之類的連接。
在所示出的例子中,服務器104和服務器106以及存儲單元108連接至網絡102。此外,客戶機110、112和114連接至網絡102。這些客戶機110、112和114可以是例如個人計算機或網絡計算機。在所示出的例子中,服務器104向客戶機110、112和114提供諸如引導文件、操作系統鏡像以及應用之類的數據。在此例中,客戶機110、112和114是服務器104的客戶機。網絡數據處理系統100可以包括未示出的附加的服務器、客戶機以及其他裝置。
在所示出的例子中,網絡數據處理系統100是因特網,其中網絡102表示的是利用傳輸控制協議/網際協議(TCP/IP)協議組進行彼此間通信的網絡和網關的世界范圍的集合。在因特網的核心處是在主節點或主機(包括成千的對數據和消息進行路由的商業、政府、教育和其他計算機系統)之間的高速數據通信線路的骨干網。當然,網絡數據處理系統100還可以實現為若干不同類型的網絡,例如內聯網、局域網(LAN)或廣域網(WAN)。圖1只意在進行示例,而不意在對本發明的不同實施方式進行結構性限制。
現在參考圖2,示出了可以在其中實現本發明若干方面的數據處理系統的框圖。數據處理系統200是計算機的例子,例如圖1中的服務器104或客戶機110,實現針對本發明實施方式的處理的計算機可用代碼或指令可以位于該數據處理系統200中。
在所示出的例子中,數據處理系統200采用集線器體系結構,該集線器體系結構包括北橋接器和存儲器控制器集線器(NB/MCH)202,以及南橋接器和輸入/輸出(I/O)控制器集線器(SB/ICH)204。處理單元206、主存儲器208以及圖形處理器210連接至NB/MCH202。圖形處理器210可以通過加速圖形端口(AGP)連接至NB/MCH202。
在所示出的例子中,局域網(LAN)適配器212連接至SB/ICH204。音頻適配器216、鍵盤和鼠標適配器220、調制解調器222、只讀存儲器(ROM)224、硬盤驅動器(HDD)226、CD-ROM驅動器230、通用串行總線(USB)端口和其他通信端口232,以及PCI/PCIe設備234通過總線238和總線240連接至SB/ICH 204。PCI/PCIe設備可以包括例如以太網適配器、附加卡以及用于筆記本計算機的PC卡。PCI使用卡總線控制器,而PCIe不使用。ROM 224可以是例如快閃二進制輸入/輸出系統(BIOS)。
HDD 226和CD-ROM驅動器230通過總線240連接至SB/ICH204。HDD 226和CD-ROM驅動器230可以使用例如電子集成驅動器(IDE)接口或串行高級技術附件(SATA)接口。超級I/O(SIO)裝置236可以連接至SB/ICH 204。
操作系統在處理單元206上運行,協調并提供對圖2中數據處理系統200內各種部件的控制。作為客戶機,操作系統可以是商業上可獲得的操作系統,例如MicrosoftWindowsXP(Microsoft和Windows是微軟公司在美國和/或其他國家的商標)。面向對象的編程系統(例如JavaTM編程系統)可以結合該操作系統運行,并且從在數據處理系統200上執行的JavaTM程序或應用向操作系統提供調用(Java是SunMicrosystems公司在美國和/或其他國家的商標)。
作為服務器,數據處理系統200可以是例如IBMeServerTMpSeries計算機系統,其運行高級交互執行(AIX)操作系統或LINUX操作系統(eServer、pSeries和AIX是國際商業機器公司在美國和/或其他國家的商標,而LINUX是Linus Torvalds在美國和/或其他國家的商標)。數據處理系統200可以是對稱多處理器(SMP)系統,其在處理單元206中包括多個處理器。可選地,可以使用單獨的處理器系統。
用于操作系統、面向對象的編程系統和應用或程序的指令位于諸如HDD 226的存儲裝置中,可以加載到主存儲器208中以由處理單元206來執行。處理單元206利用計算機可用程序代碼來執行針對本發明實施方式的處理,其中所述計算機可用程序代碼可位于諸如主存儲器208、ROM 224之類的存儲器中,或位于一個或多個外圍裝置226和230中。
本領域普通技術人員將可以理解的是,圖1-2中的硬件可以根據實現的不同而發生改變。其他內部硬件或外圍裝置,例如閃存、等同的非易失性存儲器或光盤驅動器等,可以附加地被使用或替代圖1-2中示出的硬件。而且,本發明的處理可以應用到多處理器數據處理系統中。
在某些示意性實例中,數據處理系統200可以是個人數字助理(PDA),其配備有閃存以提供用于存儲操作系統文件和/或用戶生成數據的非易失性存儲器。
總線系統可以包括一個或多個總線,例如如圖2所示的總線238或總線240。當然,可以利用任何類型的通信構造或體系結構來實現該總線系統,用以在連接于該構造或體系結構的不同部件或裝置之間提供數據傳送。通信單元可以包括一個或多個用于傳送和接收數據的裝置,例如圖2的調制解調器222或網絡適配器212。存儲器可以是例如圖2中的主存儲器208、ROM 224或諸如通過NB/MCH 202找到的高速緩存。圖1-2中所示出的實例和上述實例不意在暗示任何結構性限制。例如,數據處理系統200還可以是除PDA形式之外的平板計算機、膝上型計算機或者電話裝置。
本發明提供一種在數據處理系統中預取數據的計算機實現方法、系統和計算機程序產品。根據本發明,數據流的簡要歷史信息保存在數據流歷史表(DSHT)中,并用于在一般的數據處理設置中極大地提高數據流預取器的效率。更具體來說,本發明在數據流歷史表中記錄由一個或多個指令產生的數據流的特定屬性。通過使得流進行分配的存儲訪問指令的地址來對該表中的信息加索引,或者更一般地,通過地址的散列(hash)來對該表中的信息加索引。每當流預取器例示出新的數據流時,通過訪問并使用DSHT中的信息來改善該流預取器的響應。
DSHT中的信息通過指示所述流可能的方向和長度以及針對當前指令塊的臨時流的可能數量來修改新流的啟動和穩態特性。然后,較后的信息可用于調節每個流的預取深度,從而使性能最大化,同時使可能不消耗(需要)的行的預取最小化。然后,當程序消耗流的時候,數據流預取器利用最近的信息來更新DSHT。本發明因此為數據流預取器提供了一種自適應能力,其改進了未經重編譯的應用的性能使其包括軟件數據預取控制指令。除了引導預取器的現有軟件提示之外,還提供了一種強大的能力,其中可以使用編譯器和應用編碼器來優化應用的性能。
圖3是示意性示出根據本發明示例性實施方式的數據流預取器的框圖。預取器整體上由參考數字300來表示,該預取器包括具有深度控制的流預取器,例如,如2005年2月10日提交的共同未決以及共同轉讓的美國專利申請序列號No.11/054,889(代理人卷號No.AUS920041083US1)和11/054,871(代理人卷號No.AUS920041084US1)所述,其公開在此通過參考引入。
在圖3中通過流寄存器和預取表302以及流控制邏輯塊304來表示流預取硬件,該流預取硬件基于數據操作數加載地址306以及相關高速緩存丟失信息308和與數據操作數的高速緩存行有關的加載丟失隊列(LMQ)信息310來獲取和預取數據流。
根據本發明,數據流歷史表(DSHT)312以及相關的控制邏輯整體上由參考數字314來表示,其包括在預取器300中。DSHT 312保存與指令范圍相對應的一個或多個流的簡明特征,并通過316所表示的該指令范圍的地址散列來加索引。
在本發明的示例式實施方式中,該散列包括指令地址位42至55。在此情況中,256B指令塊(例如32個四字節指令)中所有加載指令將由DSHT 312中的一個條目來表示,并且該表將用16384個條目唯一地覆蓋達4MB大小的程序。需要注意的是,較大的程序在表中將沒有唯一的映射,但即使在發生混淆這種很稀少的情況下,對程序也沒有功能上的副作用;唯一的結果是涉及應用的性能。以此方式,其與分支歷史表相似。具有較少數量條目(例如4096個條目)的表將仍然為大量的工作量提供正面結果,因此可以對照平均性能改進而權衡所述表的大小。
圖4是示意性示出根據本發明示例性實施方式的DSHT 312中每個索引所存儲的信息的圖。該索引通常由參考數字400來表示,并且包括流方向字段402、每個流的飽和行計數字段404以及飽和并發流計數字段406。后兩個字段的寬度將取決于實現細節,但通常可以分別是至少4比特寬和3比特寬。
當流預取分配邏輯304確定應當在流寄存器302中建立新的流條目時,那么除了其正常的動作之外,將指令地址散列316用于在DSHT312中加索引以訪問對下述預取流的方式進行修改的信息。DSHT訪問被保存在DSHT輸出緩沖器318中直至出現了對不同指令塊的表訪問為止。如果在遇到另一個指令塊之前在同一指令塊中啟動了多個流(對于循環結構來說通常是這樣的情況),那么利用并發流邏輯320對此塊中流的數量進行計數。在此情況中,DSHT輸出緩沖器318保護與該指令范圍相對應的先前信息使其免受由最近創建的流所導致的任何更新。隨著應用的進展以及流的消耗,利用當前流長度(高速緩存行)、方向以及并發流計數來更新DSHT 312,如326所示。
根據包含啟動流的加載指令的代碼塊來識別流是非常有效的,因為大多數流自身以循環結構(應用代碼中的for while、或do結構)出現。對于很多應用來說,相對較少的循環集合在應用執行時產生大量的流實例;即使每次應用執行循環嵌套時流的開始數據地址和特定特征可能發生改變,經常的情況是循環中流的關鍵特征與最后一次執行時相似。換言之,流的方向、長度和消耗速率的最佳預測是最為接近的過去。因此,如果保存了諸如流方向、長度和并發流的數量(其影響消耗速率)之類的關鍵特征,那么它們可以非常有效地推測性地用于下一次循環調用。
為了解釋起見,現在參考圖5,其示出了對二維網格的Jacobi(雅可比)解算機的一般實現,以幫助解釋本發明的若干方面。盡管圖5中示出的代碼是整個應用的一小部分代碼,但大部分的計算時間將花費在該進程中。
具體來說,在do while循環中有兩個關鍵的嵌套循環集合;第一嵌套的do j=1,m和do i=1,n僅將陣列從陣列u復制到陣列uold。第二循環(也是計算上更復雜的循環)利用陣列uold中的舊求解以及陣列f中的值在網格上執行Jacobi迭代。需要注意的是,內部i循環的每次迭代具有開始于陣列中不同位置的數據流,但其具有相同的方向(上升)和長度(n)。而且,第一循環集合最多具有一個流,而第二循環集合具有與陣列f和uold相關聯的多個流。
對于第一循環,基于DSHT中一個的并發流計數,流分配邏輯將進行更深的預取(即在當前被加載的行之前預取更多的行),以避免由于存儲器等待時間而導致的拖延。第二循環中流的確切數量將是陣列大小和機器高速緩存大小的函數,但是對于程序的給定實例而言,并發流的數量對于代碼進入的大多數次數來說是保持相同的。例如,如果機器高速緩存的大小不足以包含在陣列的4個列(uold(,j-1),uold(,j),uold(,j+1),f(,j),其中冒號表示i從1到n)中的數據,那么在內部循環i的每次迭代中就有四個流有效。在此情況中,流分配邏輯對每個流的預取深度將減小,從而結合的來自所有四個流的預取將使等待時間與存儲器匹配。沒有此信息的話,硬件將使用相同深度來預取所有的流,這將導致數量無效的預取請求或使得性能折衷。需要注意的是,對于頻繁地遇到僅跨越幾個高速緩存行的系列加載的應用而言,DSHT將把應用到這些初生流上的預取配置文件調節到最小或零。
圖6是示出了根據本發明示例性實施方式的用于在數據處理系統中預取數據的計算機實現的方法的流程圖。該方法整體上由參考數字600來表示,其描述了程序的執行過程。
該方法開始于獲取并解碼指令(步驟602),并且確定是否為加載(步驟604)。如果其不是加載(步驟604的輸出為否),那么該方法返回步驟602。如果其是加載(步驟604的輸出為是),那么將加載指令的地址位的子集隨同實際數據地址一起發送至流預取單元(步驟606)。
作為流預取器正常動作的一部分,針對每個流寄存器中的所有當前流數據地址來運行加載數據地址,并且確定是否存在匹配(步驟608)。如果存在匹配(在步驟608的輸出為是),那么流的狀態是前進的并且產生預取(步驟610),并且利用當前流屬性以及并發流計數信息來更新所述DSHT(步驟624)。
在不存在匹配的情況下(在步驟608的輸出為否),確定加載地址是否進一步滿足命中(hit)/丟失信息(步驟612),并且在丟失的情況下(在步驟612的輸出為否),針對加載丟失隊列(LMQ)中的當前地址進行比較(步驟614)。如果所述地址對應于不是當前流一部分的行并且沒有使L1高速緩存或LMQ丟失(在步驟612或614的輸出為是),那么該方法返回步驟602。如果該地址對應于不是當前流一部分的行并且已使L1數據高速緩存和LMQ丟失(在步驟614的輸出為否),那么例示出新的流,并且進行檢查以查看對應于加載指令的指令地址散列是否與在其之前的那個相同(步驟616)。如果不相同(在步驟616的輸出為否),那么利用指令地址位作為索引來訪問DSHT,以讀出從早期執行這些指令起就已經對應于這些指令塊的先前流的信息,并且清除并發流計數(步驟618)。
如果指令散列與先前的那個匹配(在步驟616的輸出為是),那么從緩存器中獲取期望的信息,其中該緩存器包含對DSHT的最新訪問以及指示在對應于該指令塊的DSHT中增加的針對該條目的流的數量的字段(步驟620)。來自緩存器的信息用于開始(或者可能抑制)對流的預取。在啟動了流或更新現存流之后,分配流(步驟622),在對應于啟動加載指令的指令散列的位置處更新DSHT(步驟624)并且該方法返回步驟602。
本發明因此提供了一種在數據處理系統中預取數據的計算機實現的方法、系統和計算機程序產品。用于在數據處理系統中預取數據的計算機實現的方法包括通過將每個先前數據流的屬性與導致數據流分配的存儲訪問指令相關聯而產生先前數據流的屬性信息,然后記錄所產生的屬性信息。訪問所記錄的屬性信息,并且利用所訪問的記錄的屬性信息來修改新數據流的特性。
本發明可以采用完全硬件形式的實施方式、完全軟件形式的實施方式或包含硬件和軟件單元二者的實施方式。在優選的實施方式中,本發明以軟件來實現,其包括但不限于固件、駐留軟件、微代碼等等。
而且,本發明可以采用計算機程序產品的形式,可以從提供程序代碼的計算機可用或計算機可讀介質來存取該計算機程序產品,其中該程序代碼可以由計算機或任何指令執行系統使用或與之相聯系。為了說明起見,計算機可用或計算機可讀介質可以是任何能夠包含、存儲、通信、傳播或傳送由指令執行系統、設備或裝置使用或與之相聯系的程序的有形設備。
該介質可以是電子、磁性、光學、電磁、紅外或半導體系統(或設備或裝置)或傳播介質。計算機可讀介質的例子包括半導體或固態存儲器、磁帶、可移動計算機盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、剛性磁盤和光盤。光盤的當前例子包括壓縮盤-只讀存儲器(CD-ROM)壓縮盤-讀/寫存儲器(CD-R/W)和DVD。
適用于存儲和/或執行程序代碼的數據處理系統將包括至少一個通過系統總線直接或間接耦合至存儲器單元的處理器。該存儲器單元可以包括程序代碼實際執行期間所使用的本地存儲器、海量存儲器以及為至少某些程序代碼提供臨時存儲的高速緩存存儲器,以減少在執行期間必須從海量存儲器中獲取代碼的次數。
輸入/輸出或I/O裝置(包括但不限于鍵盤、顯示器、定位裝置等)可以直接或通過介入I/O控制器來耦合至系統。
網絡適配器也可以耦合至該系統,以使得數據處理系統能夠通過介入私用或公共網絡而耦合至其他數據處理系統或遠程打印機或存儲裝置。調制解調器、電纜調制解調器以及以太網卡僅是當前可用類型的網絡適配器中的一些。
為了示意和描述的目的而呈現了本發明的描述,并不意在窮盡或以所公開的方式來限制本發明。很多改動和變化對于本領域技術人員來說都是顯而易見的。選擇并描述這些實施方式是為了最好地解釋本發明的原理、實際應用,并使得其他本領域技術人員能夠,其實施方式具有適用于所構思的特定使用的各種變化。
權利要求
1.一種用于在數據處理系統中預取數據的計算機實現的方法,該方法包括通過將每個先前數據流的屬性與導致所述先前數據流的分配的數據存儲訪問指令相關聯而產生所述先前數據流的屬性信息;記錄所述產生的屬性信息;訪問所述記錄的屬性信息;以及利用所述訪問的記錄的屬性信息來修改新數據流的特性。
2.根據權利要求1所述的計算機實現的方法,其中,通過將每個先前數據流的屬性與導致所述先前數據流的分配的存儲訪問指令相關聯而產生所述先前數據流的屬性信息包括根據不重疊的鄰近指令組對先前數據流的數據流屬性進行分組,其中該不重疊的鄰近指令組包含導致所述數據流的分配的所述數據存儲訪問指令。
3.根據權利要求2所述的計算機實現的方法,進一步包括將每個指令組中流的數量相加以找到針對每個指令組的先前數據流的并發數量,用于指示針對處于其執行狀態的應用的臨時流的可能數量。
4.根據權利要求3所述的計算機實現的方法,其中,利用所述訪問的記錄的屬性信息來修改新數據流的特性包括基于臨時流的可能長度和可能數量來調節對所述新數據流進行預取的深度。
5.根據權利要求3所述的計算機實現的方法,其中,利用所述訪問的記錄的屬性信息來修改新數據流的特性包括通過指示所述新數據流的可能方向和長度來修改所述新數據流的啟動和穩態特性。
6.根據權利要求1所述的計算機實現的方法,進一步包括當消耗了新的數據流時利用最近的信息來更新所述記錄的屬性信息。
7.根據權利要求1所述的計算機實現的方法,其中,記錄所述產生的屬性信息包括在數據流歷史表中記錄由指令組所產生的至少一個先前數據流的產生的屬性信息。
8.根據權利要求7所述的計算機實現的方法,進一步包括通過在首次分配所述至少一個先前數據流時的相關指令組的地址散列來在所述數據流歷史表中對所述記錄的產生的屬性信息加索引,并且其中,訪問所述記錄的屬性信息包括利用所述索引來訪問所述記錄的屬性信息。
9.根據權利要求8所述的計算機實現的方法,其中,所述索引包括流方向字段、每個流的飽和行計數字段以及飽和并發流計數字段。
10.一種用于在數據處理系統中預取數據的數據預取器,包括屬性產生機構,用于通過將每個先前數據流的屬性與導致所述先前數據流的分配的數據存儲訪問指令相關聯而產生所述先前數據流的屬性信息;數據流歷史表,用于記錄所述產生的屬性信息;訪問機構,用于訪問所述數據流歷史表中的所述記錄的屬性信息;以及修改機構,用于利用所述訪問的記錄的屬性信息來修改新數據流的特性。
11.根據權利要求10所述的數據預取器,其中,所述屬性產生機構包括分組機構,用于根據不重疊的鄰近指令組對先前數據流的數據流屬性進行分組,其中該不重疊的鄰近指令組包含導致所述先前數據流的分配的所述數據存儲訪問指令。
12.根據權利要求11所述的數據預取器,進一步包括求和機構,用于將每個指令組中流的數量相加以找到針對每個指令組的先前數據流的并發數量,用于指示針對處于其執行狀態的應用的臨時流的可能數量。
13.根據權利要求12所述的數據預取器,其中,所數修改機構包括用于基于臨時流的可能長度和可能數量來調節對新數據流進行預取的深度的機構。
14.根據權利要求10所述的數據預取器,進一步包括更新機構,用于當消耗了新的數據流時利用最近的信息來更新所述記錄的屬性信息。
15.根據權利要求10所述的數據預取器,進一步包括索引機構,用于通過在首次分配至少一個先前數據流時的相關指令組的地址散列來在所述數據流歷史表中對所述記錄的產生的屬性信息加索引,其中,所述訪問機構利用所述索引來訪問所述記錄的屬性信息,并且其中,所述索引包括流方向字段、每個流的飽和行計數字段以及飽和并發流計數字段。
全文摘要
公開了一種用于在數據處理系統中預取數據的計算機實現的方法、系統和計算機程序產品。在數據處理系統中預取數據的計算機實現的方法包括通過將每個先前數據流的屬性與導致數據流分配的存儲訪問指令相關聯而產生先前數據流的屬性信息;然后記錄所產生的屬性信息。訪問所記錄的屬性信息;以及利用所訪問的記錄的屬性信息來修改新數據流的行為。
文檔編號G06F17/30GK101030215SQ20071000827
公開日2007年9月5日 申請日期2007年1月26日 優先權日2006年2月28日
發明者弗朗西斯·帕特里克·奧康奈爾, 小約翰·巴里·格里斯韋爾 申請人:國際商業機器公司