亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

利用流預取歷史來改進數(shù)據(jù)預取性能的方法和系統(tǒng)的制作方法

文檔序號:6571357閱讀:319來源:國知局
專利名稱:利用流預取歷史來改進數(shù)據(jù)預取性能的方法和系統(tǒng)的制作方法
技術領域
本發(fā)明一般涉及數(shù)據(jù)處理領域,更具體來說,涉及用于在數(shù)據(jù)處理系統(tǒng)中預取數(shù)據(jù)的計算機實現(xiàn)的方法、系統(tǒng)和計算機程序產(chǎn)品。
背景技術
在現(xiàn)代數(shù)據(jù)處理系統(tǒng)中已采用了硬件數(shù)據(jù)預取器,以在從較低級別的高速緩存和其他數(shù)據(jù)存儲介質(zhì)中取回數(shù)據(jù)時預測并減少大量的等待時間。該等待時間是從數(shù)據(jù)存儲介質(zhì)中取回數(shù)據(jù)所需要的處理器周期的總數(shù),其已經(jīng)有了快速的增加,這是因為處理器頻率提高但在訪問數(shù)據(jù)存儲介質(zhì)所需要的時間方面沒有相應的改進。
針對在等待時間方面的快速增加,已采用流硬件數(shù)據(jù)預取器來檢測數(shù)據(jù)流(以單調(diào)上升或單調(diào)下降方式引用鄰近的高速緩存塊集合的存儲引用的任何序列)并開始將數(shù)據(jù)預取到預定深度,即處理系統(tǒng)當前加載的數(shù)據(jù)之前的預定數(shù)量的高速緩存塊。流的檢測要求對于相繼行的至少兩個高速緩存丟失(miss);并且為了避免預取那些可能不需要的高速緩存行,對于新近檢測到的流進行的預取通常適當?shù)亻_始,并且預取的深度逐漸上升直至達到指定深度為止。
現(xiàn)代流預取器可以通過使用多個流寄存器來同時跟蹤和預取多個流,其中每個流寄存器包含標識當前數(shù)據(jù)流狀態(tài)的地址以及其它信息,例如流的方向、從流開始起消耗的行的數(shù)量、以及已產(chǎn)生但尚未經(jīng)調(diào)度的預取。
盡管以上描述的預取方法至今仍然工作良好,但啟動損失(兩個初始丟失)和上升階段(其中預取深度可能不足以確保將數(shù)據(jù)按時遞送到應用)具有相關聯(lián)的性能損失,該性能損失隨著存儲器等待時間的增加而增加。旨在縮短媒體流長度的應用僅略微受益于數(shù)據(jù)預取器,或者因為啟動損失所致而根本沒有受益。對于這種情況,期望盡可能地減少啟動損失。
數(shù)據(jù)流預取器保持一些如前所述當前定義在其流寄存器的任何一個中的關于數(shù)據(jù)流的歷史信息,即當前數(shù)據(jù)地址、方向、待預取的下一行以及已產(chǎn)生但尚未發(fā)送的未決預取。然而,當新的流替代當前流的時候,該信息在這些字段被新的流分配覆蓋時丟失。
在應用代碼的連續(xù)迭代中保存這些歷史信息中的一些(例如啟動數(shù)據(jù)地址)以在下一次檢測到相同數(shù)據(jù)流時使用將有助于實現(xiàn)降低啟動損失的目的。然而,對于典型應用,這將需要很大的表格來有效地應對在典型應用期間所產(chǎn)生的大量數(shù)據(jù)流。例如,一個雙重嵌套(double-nested)或三層嵌套循環(huán)結(jié)構(gòu)單獨就能很容易地產(chǎn)生成千個流。
該問題的一種解決方案是允許編譯器在目標代碼中插入特定指令,以引導硬件預取引擎在指定地址開始一個流并且迅速上升至期望深度。然而,該方法要求對應用進行重新編譯,并且局限于編譯器在編譯時間所具有的關于流以及其高速緩存的特性的不完備知識(因為陣列大小通常是隨運行時間變化的變量)。
因此,希望提供一種機制來改進數(shù)據(jù)處理系統(tǒng)中的預取性能,其對于沒有利用流預取指令進行編譯過的現(xiàn)有二進制很有效,從而在該數(shù)據(jù)處理系統(tǒng)中實現(xiàn)數(shù)據(jù)預取硬件更好的一般性使用。

發(fā)明內(nèi)容
本發(fā)明提供一種用于在數(shù)據(jù)處理系統(tǒng)中預取數(shù)據(jù)的計算機實現(xiàn)的方法、系統(tǒng)和計算機程序產(chǎn)品。用于在數(shù)據(jù)處理系統(tǒng)中預取數(shù)據(jù)的計算機實現(xiàn)的方法包括通過將每個先前數(shù)據(jù)流的屬性與引起該數(shù)據(jù)流分配的存儲器訪問指令相關聯(lián)而產(chǎn)生先前數(shù)據(jù)流的屬性信息,然后記錄所產(chǎn)生的屬性信息。訪問所記錄的屬性信息,并且利用所訪問的記錄的屬性信息來修改新數(shù)據(jù)流的特性。


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