專利名稱:內(nèi)存數(shù)據(jù)服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,是一種內(nèi)存數(shù)據(jù)服務(wù)器。本發(fā)明對內(nèi)存結(jié)構(gòu)和計算機(jī)效率作出了重大改進(jìn)?!坝嬎銠C(jī)內(nèi)存”在信息處理中暫時保存數(shù)據(jù)以支持快速數(shù)據(jù)訪問。名詞“內(nèi)存”一般用于存在集成電路或存儲芯片上的數(shù)據(jù),而“存儲”一般用于磁帶或磁盤上的非動態(tài)數(shù)據(jù)。
背景技術(shù):
大多數(shù)現(xiàn)代計算機(jī)內(nèi)存都是分層次的,包括多層次高速但是昂貴的緩存(caches) 和一個慢一點,大一些的主存(DRAM)。計算機(jī)將另外利用一個存儲磁盤作為長期的二級存儲。約摸地說,在現(xiàn)有的技術(shù)下,磁盤訪問速度比主存訪問速度慢100倍,而主存訪問速度比高速緩存慢10到50倍。
處理器和網(wǎng)絡(luò)技術(shù)發(fā)展迅速。每個處理器上的電子晶體管數(shù)量的增長迅速地提高了處理器的處理數(shù)據(jù)能力。光纖在理論上有無限的帶寬。不斷的創(chuàng)新正在逐步減少網(wǎng)絡(luò)延遲。
但是,處理器和內(nèi)存之間日益加大的速度差異加劇了計算機(jī)高峰性能和穩(wěn)定性能之間的差距。此外,功率消耗的增長快于處理器和內(nèi)存的性能增長。功耗已成為制造從高端超級計算機(jī)到小型電子設(shè)備的現(xiàn)代計算系統(tǒng)的主要障礙。
近年來,內(nèi)存帶寬已成為完全利用處理器和網(wǎng)絡(luò)容量的主要瓶頸。根據(jù)所謂的“摩爾定律”,處理器速度每18個月就會翻倍。網(wǎng)絡(luò)互連速度也增長到數(shù)百Gbps,延遲被減少到十億分之幾秒。相比之下,主存(DRAM)的速度和帶寬增加趕不上處理器速度的增長。過去20年內(nèi),這個性能差距不斷增加,并且已成為一個性能瓶頸。
含有多級緩沖存儲器的現(xiàn)代層次架構(gòu)式內(nèi)存被推出用于彌合這個差距。緩沖存儲器的原理是利用空間局部性和時間局部性。但是,很多應(yīng)用程序在訪問內(nèi)存時不具有空間和時間局部性。這些程序的大量執(zhí)行時間花在了等待運送數(shù)據(jù)到位。
計算設(shè)備的功耗需求也隨著計算能力和功能的增加而增加。現(xiàn)有的芯片性能提高是基于晶體管的數(shù)目增加。從正面說,這使得緩存增大,且有更多的緩存和變換旁視緩沖器(TLB)的層次。但是這也迅速地加大了計算設(shè)備上眾多芯片的功耗需求。增長中的功耗需求可以通過比較IntelPENTIUM 4(75 watts)和Intel ITANIUM(130 watts)處理器來說明。
在著述中,很多文章在不同的語境中都用到了“內(nèi)存服務(wù)器(memoryserver)”這個名詞。據(jù)申請人所知,所有這些文章僅僅試圖通過用遠(yuǎn)程內(nèi)存代替本地存儲來優(yōu)化數(shù)據(jù)訪問時間,而不是提高本地中央處理器的數(shù)據(jù)管理和提取能力。這些所謂的“服務(wù)器”的重心在于為數(shù)據(jù)提供空間,而不是為其他處理單元提取數(shù)據(jù)。
發(fā)明內(nèi)容
在傳統(tǒng)上,內(nèi)存是計算設(shè)備不可分割的一部分,而本發(fā)明提出將內(nèi)存支持作為服務(wù)來提供。一個基于本發(fā)明的內(nèi)存數(shù)據(jù)服務(wù)器可以緊密地直接聯(lián)接到,或者通過網(wǎng)絡(luò)聯(lián)接到處理單元。服務(wù)可以是靜態(tài)的或者動態(tài)的,可以是單獨的內(nèi)存服務(wù)器,或者是加在傳統(tǒng)集成的客戶內(nèi)存系統(tǒng)之上。內(nèi)存服務(wù)器可以處理緩存未擊中,同時避免緩存未擊中和頁錯誤的發(fā)生。內(nèi)存服務(wù)器能夠?qū)崿F(xiàn)高功能的預(yù)取預(yù)測算法和動態(tài)置換策略,以此減少緩存未擊中率和掩蓋內(nèi)存訪問延遲,且不增加計算處理器的花費??蛻粲嬎銠C(jī)可以用內(nèi)存數(shù)據(jù)服務(wù)器來滿足其存儲層次的需求。這是個節(jié)省開銷的解決方案,因為內(nèi)存服務(wù)避免了在每個客戶端安裝更深層次的更昂貴的層次存儲。
在傳統(tǒng)的層次存儲中,如果緩存未擊中發(fā)生,內(nèi)存向緩存輸入數(shù)據(jù)行;如果頁錯誤發(fā)生,磁盤向內(nèi)存輸入數(shù)據(jù)頁。平均內(nèi)存訪問時間開銷取決于存儲層次參數(shù)(比如說容量,行大小,頁大小,內(nèi)存和緩存的帶寬,和關(guān)聯(lián))和應(yīng)用程序的數(shù)據(jù)訪問模式。當(dāng)頁面工作組的大小大于傳統(tǒng)系統(tǒng)中的內(nèi)存大小,或者數(shù)據(jù)訪問是非連續(xù)性的時候,平均內(nèi)存訪問開銷可能嚴(yán)重影響應(yīng)用程序性能。現(xiàn)有計算系統(tǒng)的內(nèi)存性能可以通過增加內(nèi)存容量以及應(yīng)用高功能的數(shù)據(jù)預(yù)取和置換算法來改善。然而,已知系統(tǒng)的存儲層次結(jié)構(gòu)是固定的,不可能為了某個應(yīng)用程序而改變。僅僅增加存儲層次中的每個層次的存儲容量會加大開銷,也許并不經(jīng)濟(jì)有效。同樣,如果在已知系統(tǒng)里采用復(fù)雜的高功能預(yù)取算法,中央處理器的計算時間將減少,從而降低應(yīng)用程序的性能。
為了解決這些現(xiàn)有系統(tǒng)的處理器和存儲層次的負(fù)擔(dān),本發(fā)明可以提供一個內(nèi)存數(shù)據(jù)服務(wù)器來提供內(nèi)存數(shù)據(jù)服務(wù)。內(nèi)存服務(wù)可以根據(jù)預(yù)測后臺進(jìn)程得出的應(yīng)用程序需求來提供相應(yīng)的內(nèi)存服務(wù)。
首先,我們應(yīng)當(dāng)指出本發(fā)明與早先的方法有實質(zhì)性的區(qū)別。本發(fā)明將數(shù)據(jù)訪問(這里有時也指計算機(jī)內(nèi)存)作為服務(wù)來提供,而不是僅僅將遠(yuǎn)程內(nèi)存當(dāng)作臨時替代的存儲空間。在實際應(yīng)用中,本發(fā)明提出的數(shù)據(jù)服務(wù)器可以消除應(yīng)用程序的主要計算處理器的數(shù)據(jù)提取和預(yù)取的負(fù)擔(dān),并且靈活地根據(jù)應(yīng)用程序的需求提供內(nèi)存和數(shù)據(jù)訪問的服務(wù)。
本發(fā)明提出了將計算內(nèi)存作為一項服務(wù)來提供的想法并給出了一個內(nèi)存數(shù)據(jù)服務(wù)器的設(shè)計。內(nèi)存數(shù)據(jù)服務(wù)器(簡稱數(shù)據(jù)服務(wù)器或內(nèi)存服務(wù)器)可以為客戶計算機(jī)提供內(nèi)存以此節(jié)省客戶端能量,同時彌補現(xiàn)有的處理器和內(nèi)存間的性能差異。數(shù)據(jù)服務(wù)器包括一個為其他處理單元(比如運行一個應(yīng)用程序計算的處理單元)提供數(shù)據(jù)的專用處理單元。數(shù)據(jù)服務(wù)器可以利用多芯芯片技術(shù)和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,它可以包括多芯芯片中的一個芯,共享內(nèi)存并行計算機(jī)中的一個處理器,機(jī)群(cluster)中的一個處理機(jī),一個遠(yuǎn)程網(wǎng)絡(luò)數(shù)據(jù)服務(wù)器,或者類似的其他形式。
此文會多次使用數(shù)據(jù)服務(wù)器和客戶這兩個術(shù)語,煩請注意服務(wù)器和客戶這兩個詞會以不同組合出現(xiàn)。
本發(fā)明通過插入一個內(nèi)存數(shù)據(jù)服務(wù)器來減少一個計算機(jī)系統(tǒng)的數(shù)據(jù)訪問時間,這個數(shù)據(jù)服務(wù)器提供額外的高速內(nèi)存空間,并且在客戶需要的時候,更準(zhǔn)確地說在客戶需要之前,向客戶存儲層次的高層直接推入需要的數(shù)據(jù)。例如,在一個多芯系統(tǒng)或者一個共享內(nèi)存系統(tǒng)里,一個芯或者一個處理器可以用做數(shù)據(jù)服務(wù)器向客戶預(yù)取緩存中推入數(shù)據(jù)。在分布式或聯(lián)網(wǎng)系統(tǒng)中,一個節(jié)點或者一個計算機(jī)可以用做數(shù)據(jù)服務(wù)器來向客戶節(jié)點或客戶計算機(jī)的內(nèi)存或緩存中推入數(shù)據(jù)。考慮到一個專用服務(wù)器可以更好地提供數(shù)據(jù)預(yù)測和預(yù)取,這樣做的好處是顯而易見的。
同時,從生產(chǎn)成本、功耗和運行效率等各方面來看,配置兩個不太強(qiáng)大的處理單元,一個用于計算一個用于內(nèi)存服務(wù),都比配置一個強(qiáng)大的處理單元更加節(jié)省成本。近期多芯芯片的流行以及并行處理機(jī)的持續(xù)發(fā)展都是基于提高運行效率。除了決策和管理數(shù)據(jù)傳送,數(shù)據(jù)處理器可以將它的內(nèi)存用作擴(kuò)展內(nèi)存或者用于為客戶程序提供存儲。大多數(shù)應(yīng)用程序僅在某些時候需要大量內(nèi)存或者其它內(nèi)存服務(wù)。所以,一個數(shù)據(jù)服務(wù)器可以同時為多個客戶處理器和計算機(jī)提供服務(wù)。
數(shù)據(jù)服務(wù)器還可以減少緩存未命中率和頁錯誤的發(fā)生,并且由此提高性能。根據(jù)本發(fā)明,數(shù)據(jù)服務(wù)器可以被特用于數(shù)據(jù)服務(wù),并且可以對不同的計算機(jī)應(yīng)用選用不同的置換和搜索算法,以此達(dá)到最佳性能。
由于根據(jù)本發(fā)明建造的數(shù)據(jù)服務(wù)器可以更好地根據(jù)現(xiàn)有訪問模式來預(yù)測數(shù)據(jù)訪問并且提前向存儲層次推入數(shù)據(jù),他將提供更快的數(shù)據(jù)訪問速度并將使系統(tǒng)的整體性能得到提高。由于有專用數(shù)據(jù)服務(wù)器來執(zhí)行數(shù)據(jù)訪問預(yù)測算法,我們可以采用更復(fù)雜的高功能預(yù)測方法用更多的數(shù)據(jù)訪問紀(jì)錄做更好地預(yù)測,因為處理器的計算時間沒因為數(shù)據(jù)管理而減少。也就是說,計算單元從預(yù)測的負(fù)擔(dān)中解脫出來,因此可以專注于計算,同時緩存運作也變得更加精細(xì)。
因為本地內(nèi)存和磁盤的需求降低,客戶端的功耗也將減少。利用一個數(shù)據(jù)服務(wù)器來為多個客戶提供內(nèi)存需求將進(jìn)一步節(jié)省能量。還有,小型移動設(shè)備常常置備很少內(nèi)存和很少的,或甚至沒有,緩存,基于本發(fā)明的數(shù)據(jù)服務(wù)器也許是使得小的移動設(shè)備運行大型應(yīng)用程序的唯一方法。
此外,網(wǎng)絡(luò)的發(fā)展使得基于本發(fā)明的內(nèi)存數(shù)據(jù)服務(wù)構(gòu)思在網(wǎng)絡(luò)環(huán)境中成為可能。網(wǎng)絡(luò)速度飛速增長。在過去十年中,光纖的推廣推動了網(wǎng)絡(luò)速度的迅速攀升。很多現(xiàn)有系統(tǒng)互聯(lián)都在1Gbps到10Gbps?,F(xiàn)有的最快網(wǎng)絡(luò)用于TeraGrid,可以以40Gbps的速度互聯(lián)。100Gbps的發(fā)展計劃也已于2004年公布。
隨著有線網(wǎng)絡(luò)的發(fā)展,無線網(wǎng)絡(luò)的速度也在增長。幾年前的無線局域網(wǎng)規(guī)范802.11才2Mbps,而當(dāng)前的802.11已經(jīng)達(dá)到54Mbps?,F(xiàn)有的2.5或3G手機(jī)達(dá)到144Kbps的聯(lián)接速度,可以提供豐富多樣的應(yīng)用程序。這些手機(jī)網(wǎng)絡(luò)的速度可能會在現(xiàn)有的需求下迅猛發(fā)展到十億比特每秒的速度。
網(wǎng)絡(luò)速度增長使得低延遲(在10Gbps的網(wǎng)絡(luò)上傳輸每字節(jié)的數(shù)據(jù)約用1納秒)的網(wǎng)絡(luò)硬件和網(wǎng)絡(luò)數(shù)據(jù)供應(yīng)服務(wù)成為現(xiàn)實。從而,遠(yuǎn)程內(nèi)存數(shù)據(jù)服務(wù)可以用于實際應(yīng)用。當(dāng)前最快的處理器的內(nèi)存訪問時間是60到100納秒。對于一個典型的32字節(jié)的緩存區(qū),32字節(jié)在10Gbps的網(wǎng)絡(luò)上傳輸時間小于32納秒的處理器時間(不考慮初始化時間并且假設(shè)緩存和網(wǎng)卡之間有專用鏈接)。隨著未來的100Gbps聯(lián)接的出現(xiàn),這個時間將進(jìn)而降低幾倍。在緩存和內(nèi)存更小的移動處理器中,內(nèi)存訪問時間更大,因而,本發(fā)明可以提供基于網(wǎng)絡(luò)的內(nèi)存服務(wù),并且可以比傳統(tǒng)內(nèi)存更快地向客戶中央處理器更近的地方推入必要的數(shù)據(jù),這將有助于網(wǎng)絡(luò)計算的發(fā)展。
圖1展示了不同客戶的結(jié)構(gòu)圖聯(lián)接到一個內(nèi)存數(shù)據(jù)服務(wù)器的詳細(xì)結(jié)構(gòu)圖。
具體實施例方式
我們將在下面討論有關(guān)模塊和應(yīng)用程序的特定功用任務(wù)或者任務(wù)分組。這些特定功用任務(wù)或者任務(wù)分組的選擇是出于解釋的需要。在某些情況下它們有可能是根據(jù)某種目的任意選擇的。我們相信每一個有一般專業(yè)知識的人都知道本發(fā)明可以以不同的方式去實現(xiàn),去優(yōu)化硬件,軟件,或固化軟件,特定功用任務(wù)也可以以不同于我們下面給出的命名和結(jié)構(gòu)組合而不違背本發(fā)明的精神。
基于本發(fā)明的內(nèi)存數(shù)據(jù)服務(wù)器擁有三個或更多的組件,包括數(shù)據(jù)服務(wù)器需要的主要組件,預(yù)取引擎、內(nèi)存管理引擎和數(shù)據(jù)推進(jìn)器。必需指出內(nèi)存數(shù)據(jù)服務(wù)器需要有自有的處理器用于維持上述功能模塊和進(jìn)程的性能。在某些實例中,數(shù)據(jù)服務(wù)器的進(jìn)程起動服務(wù)器的運作且在服務(wù)器上運行等待客戶端的服務(wù)請求。根據(jù)客戶請求的類型,此進(jìn)程可以起動服務(wù)器和客戶之間的數(shù)據(jù)傳輸。一個在數(shù)據(jù)服務(wù)器上的未擊中處理后臺進(jìn)程可以隨時為客戶端的主存(DRAM)、緩存或預(yù)取緩存處理未擊中的數(shù)據(jù)。未擊中的地址和訪問模式信息可以存在一個數(shù)據(jù)訪問模式表中,以助于預(yù)測將來的此客戶數(shù)據(jù)訪問。
根據(jù)數(shù)據(jù)訪問模式信息預(yù)取引擎可以運行一個未來訪問預(yù)測后臺進(jìn)程來預(yù)測客戶的未來數(shù)據(jù)訪問。此未來訪問后臺進(jìn)程可以動態(tài)地選擇最有效的地址預(yù)測算法,并且將預(yù)測的數(shù)據(jù)地址傳給需求者,進(jìn)而要求數(shù)據(jù)推進(jìn)器模塊將客戶所需要的數(shù)據(jù)推入到客戶預(yù)取緩存,或根據(jù)所使用的內(nèi)存數(shù)據(jù)服務(wù)模型推入到客戶其他緩存和內(nèi)存。數(shù)據(jù)推進(jìn)器模塊處理客戶和內(nèi)存服務(wù)器之間的數(shù)據(jù)傳輸,并且對客戶的任何緩存未擊中情況作出反應(yīng)。未擊中處理器同時向內(nèi)存管理引擎和數(shù)據(jù)推進(jìn)器傳送信息。應(yīng)當(dāng)指出在某些情況下數(shù)據(jù)推進(jìn)器僅用于數(shù)據(jù)預(yù)取。內(nèi)存管理引擎將負(fù)責(zé)即時數(shù)據(jù)提取。這時,未擊中信息將被送給內(nèi)存管理引擎用于即時數(shù)據(jù)提取并且送給數(shù)據(jù)推進(jìn)器用于將來的預(yù)取。
進(jìn)而,數(shù)據(jù)推進(jìn)器可在客戶需要之前就將之?dāng)?shù)據(jù)從服務(wù)器內(nèi)存中推入到客戶的主存(DRAM)或者緩存中。如果服務(wù)器緩存和客戶緩存之間存在一個合理設(shè)計的鏈接,那么數(shù)據(jù)服務(wù)器可以有一個專用于內(nèi)存服務(wù)的緩存,這樣數(shù)據(jù)推進(jìn)器可以將數(shù)據(jù)直接從服務(wù)器的緩存推入到客戶的緩存。
數(shù)據(jù)推進(jìn)器模塊從未擊中處理后臺進(jìn)程獲得客戶緩存未擊中信息和數(shù)據(jù)地址信息,并且傳送被預(yù)測的將被訪問的數(shù)據(jù)。此外,數(shù)據(jù)推進(jìn)器或內(nèi)存管理引擎可以利用數(shù)據(jù)訪問模式信息從內(nèi)存數(shù)據(jù)服務(wù)器的存儲中相應(yīng)地預(yù)取或提取數(shù)據(jù)到服務(wù)器的內(nèi)存,以此加速內(nèi)存數(shù)據(jù)服務(wù)。
參照圖1來說,一個示范內(nèi)存數(shù)據(jù)服務(wù)器11為客戶群13提供面向客戶的高層存儲層次,比如,向客戶預(yù)取緩存15,推入數(shù)據(jù)的服務(wù),從而消除對較慢的客戶內(nèi)存和數(shù)據(jù)處理進(jìn)程及設(shè)備的依賴??蛻?示范了一個置備了專門設(shè)計的預(yù)取緩存15的普通計算機(jī)??蛻?沒有內(nèi)存且只能支持純服務(wù)模型??蛻?備有內(nèi)存,但是決定只使用純服務(wù)模型??蛻?采用混合服務(wù)模型。下面將會進(jìn)一步闡述純服務(wù)模型和混合服務(wù)模型的分類。
一般說來,內(nèi)存數(shù)據(jù)服務(wù)器11的主要部件包括預(yù)取引擎12、內(nèi)存管理引擎14、以及數(shù)據(jù)推動器16。一個分離于客戶處理器的微處理器(未標(biāo)出)負(fù)責(zé)執(zhí)行和控制內(nèi)存數(shù)據(jù)服務(wù)器11的功能。預(yù)取引擎12的功能是觀察應(yīng)用程序的數(shù)據(jù)訪問模式,及預(yù)測未來可能訪問的數(shù)據(jù)地址。預(yù)取引擎12包括了未來訪問預(yù)測器33和需求產(chǎn)生器22。未來訪問預(yù)測器33可以采用自適性序列預(yù)測、馬可夫鏈、或者其它現(xiàn)有的、將出現(xiàn)的策略來預(yù)測將要訪問的地址。需求產(chǎn)生器22自適地選擇預(yù)取需求的順序和預(yù)取距離,并且將這些需求送到數(shù)據(jù)推進(jìn)器16。需求產(chǎn)生器22可望推斷出所需的預(yù)取距離,以使數(shù)據(jù)可以“恰好及時”地被推入到目的地,這樣,就不會有數(shù)據(jù)污染或者數(shù)據(jù)過遲到達(dá)目的地的情況發(fā)生?;跀?shù)據(jù)地址的類型,可能會有兩種預(yù)取引擎出現(xiàn)緩存預(yù)取引擎和內(nèi)存預(yù)取引擎。緩存預(yù)取引擎會監(jiān)控過去的緩存行地址的模式,并且對將來的緩存行地址做出預(yù)測。而內(nèi)存預(yù)取引擎會通過監(jiān)控應(yīng)用程序的頁面訪問模式預(yù)測內(nèi)存頁面地址。
數(shù)據(jù)推進(jìn)器16含有數(shù)據(jù)的方位信息,例如在服務(wù)器內(nèi)存、遠(yuǎn)程內(nèi)存或者本地內(nèi)存,并且將預(yù)取信號送到合適的方位。內(nèi)存管理引擎14選擇將數(shù)據(jù)從原有方位傳送到目的地的有效的途徑。內(nèi)存管理引擎14也負(fù)責(zé)在緩存未擊中和頁錯誤發(fā)生時提取數(shù)據(jù)到客戶本地內(nèi)存。這些初始未擊中情況發(fā)生于預(yù)取引擎12開始監(jiān)控應(yīng)用程序的數(shù)據(jù)訪問模式之前。內(nèi)存管理引擎14也可能擁有一個查詢/重置策略的采用器模塊49,此模塊可以自適地從一系列重置策略中選擇最有效的重置策略,選擇的依據(jù)是要最適合客戶應(yīng)用程序的現(xiàn)有數(shù)據(jù)訪問模式。這將提高內(nèi)存數(shù)據(jù)服務(wù)器11的自適性以適應(yīng)每個不同應(yīng)用程序的運行特征。
在本發(fā)明中,內(nèi)存數(shù)據(jù)服務(wù)器11可以向客戶計算引擎的緩存或內(nèi)存中推入數(shù)據(jù)。內(nèi)存數(shù)據(jù)服務(wù)器11在適當(dāng)?shù)臅r候預(yù)取數(shù)據(jù)且將之推入到客戶的存儲層次,例如15、17、19,中。如果客戶群13出現(xiàn)緩存未擊中或頁錯誤時,內(nèi)存數(shù)據(jù)服務(wù)器11將這個未擊中的數(shù)據(jù)根據(jù)情況送入客戶緩存15、17,或者客戶內(nèi)存19中??梢詫iT為本發(fā)明設(shè)計一個客戶預(yù)取緩存15來支持動態(tài)的基于推入式的預(yù)取。某些高級計算機(jī)系統(tǒng)其實已經(jīng)有了這種用于本地主存(DRAM)的內(nèi)置式預(yù)取緩存。
在本發(fā)明的具體實現(xiàn)中,內(nèi)存數(shù)據(jù)服務(wù)器11可以由一個或者多個不同的硬件、軟件或固件組成,具體的設(shè)計和組合可以留給最終設(shè)計者來完成,以使得內(nèi)存服務(wù)提供者23的進(jìn)程在內(nèi)存數(shù)據(jù)服務(wù)器11上運行,并且等待客戶的服務(wù)請求。內(nèi)存服務(wù)提供者23將根據(jù)請求類型,如純服務(wù)請求,混合服務(wù)請求,或者數(shù)據(jù)需要從客戶內(nèi)存15、17、19中復(fù)制到內(nèi)存數(shù)據(jù)服務(wù)器11中,發(fā)起客戶群13和服務(wù)器11之間的數(shù)據(jù)傳輸。
未擊中處理器25后臺進(jìn)程負(fù)責(zé)從客戶本地的主存(DRAM)17和客戶預(yù)取緩存15中獲得客戶的即現(xiàn)即得的緩存未擊中信息。應(yīng)當(dāng)指出,圖中的線或箭頭可代表任何操作信號或數(shù)據(jù)傳輸方法。未擊中的客戶指令的數(shù)據(jù)地址和數(shù)據(jù)訪問模式信息可以被存在數(shù)據(jù)訪問模式表31中。數(shù)據(jù)訪問模式表31于是存儲了數(shù)據(jù)訪問的歷史數(shù)據(jù)以助于預(yù)測客戶程序的未來訪問數(shù)據(jù)。
未來訪問預(yù)測器33后臺進(jìn)程基于數(shù)據(jù)訪問模式表31的信息來預(yù)測未來數(shù)據(jù)訪問。這個未來訪問預(yù)測器33后臺進(jìn)程動態(tài)地選擇出最有效的地址預(yù)測算法,并且將預(yù)測出的地址傳送給數(shù)據(jù)推進(jìn)器模塊16?,F(xiàn)在已有很多預(yù)取算法,包括基于序列處理、自適性序列處理、跨度、馬可夫、推入等算法。但是,在本發(fā)明出現(xiàn)之前,功能強(qiáng)的預(yù)取算法普遍被認(rèn)為因開銷過大,在應(yīng)用中無法實現(xiàn)。
數(shù)據(jù)推進(jìn)器16可以將預(yù)測出的訪問數(shù)據(jù)推入到,比如說,客戶0的預(yù)取緩存15中。數(shù)據(jù)推進(jìn)器16由此而處理預(yù)取緩存15和內(nèi)存數(shù)據(jù)服務(wù)器11之間的數(shù)據(jù)傳輸,以及對客戶群13的任何緩存未擊中情況做出反應(yīng)??蛻羧?3可以裝置特用的預(yù)取緩存或者使用已有的緩存(如L2緩存17)來作為預(yù)取緩存,甚至在某些情況下像客戶3那樣使用本地的主存(DRAM)19。數(shù)據(jù)推進(jìn)器模塊16從未擊中處理器25后臺程序中獲有緩存未擊中信息和數(shù)據(jù)地址信息。數(shù)據(jù)推進(jìn)器模塊16也將預(yù)測出的未來訪問數(shù)據(jù)推入客戶預(yù)取緩存15,這些數(shù)據(jù)可能是從本地服務(wù)器主存(DRAM)內(nèi)存45或內(nèi)存存儲磁盤47中得到。推入和預(yù)取可以有多步,包括將數(shù)據(jù)從服務(wù)器磁盤47中推入到服務(wù)器內(nèi)存45中,從服務(wù)器內(nèi)存或服務(wù)器緩存44(如果服務(wù)器緩存44和客戶有直接連接)中推入到客戶緩存15、17或客戶內(nèi)存19中。服務(wù)器緩存44可以是一個特用的或自適性的緩存。
內(nèi)存數(shù)據(jù)服務(wù)器11的某些實例也許會設(shè)有搜索/重置策略采用器49后臺進(jìn)程,此后臺進(jìn)程在內(nèi)存管理引擎14中根據(jù)客戶應(yīng)用程序的數(shù)據(jù)訪問模式來選擇重置策略,目的是為了服務(wù)器的本地主存(DRAM)45可以在數(shù)據(jù)置換前最大程度地利用取得的數(shù)據(jù)。未來訪問預(yù)測器33后臺進(jìn)程也會用到這個策略信息。
在運作中,客戶設(shè)備13可以通過向內(nèi)存服務(wù)提供者23發(fā)出請求來啟動一個內(nèi)存服務(wù)器線程,使內(nèi)存服務(wù)提供者開始處理客戶的內(nèi)存需求。這個請求包括初始數(shù)據(jù)地址信息。內(nèi)存數(shù)據(jù)服務(wù)器11運行一個由上述架構(gòu)的組件組成的線程。數(shù)據(jù)推進(jìn)器模塊16將幾行數(shù)據(jù)從請求的地址空間送入到客戶預(yù)取緩存15,同時客戶處理器恢復(fù)應(yīng)用程序的執(zhí)行。假設(shè)數(shù)據(jù)訪問的局部性存在,數(shù)據(jù)推進(jìn)器模塊16可望一開始就送入不止一行的數(shù)據(jù)。未擊中處理器25后臺進(jìn)程收集緩存未擊中信息,比如從預(yù)取緩存15和本地內(nèi)存19得到的未擊中的數(shù)據(jù)地址。此客戶訪問信息可以存儲到數(shù)據(jù)訪問模式表31中。當(dāng)然,如果預(yù)測不需要擁有數(shù)據(jù)模式識別支持,也可以不采用模式表。
根據(jù)客戶的訪問信息,比如存在數(shù)據(jù)訪問模式表31中的那些信息,未來訪問預(yù)測器33后臺進(jìn)程預(yù)測出下個數(shù)據(jù)地址,然后數(shù)據(jù)推進(jìn)器模塊16將相應(yīng)的數(shù)據(jù)推入到預(yù)取緩存15中。預(yù)取緩存未擊中將發(fā)生在預(yù)測錯誤時。為了減少預(yù)取緩存未擊中的情況,數(shù)據(jù)推進(jìn)器模塊16在起始階段送入不止一行的預(yù)測數(shù)據(jù),同時未來訪問預(yù)測器33后臺進(jìn)程動態(tài)地根據(jù)漸增的訪問模式信息來細(xì)致調(diào)整預(yù)測。為了處理預(yù)取緩存未擊中,未擊中處理器25后臺進(jìn)程在緩存未擊中出現(xiàn)時向內(nèi)存管理引擎14發(fā)出警告,然后內(nèi)存管理引擎14將需要的或未擊中的數(shù)據(jù)立即取出并且送出,而不用等待未來訪問預(yù)測器33后臺進(jìn)程。
客戶設(shè)備13可以選擇完全依賴于內(nèi)存數(shù)據(jù)服務(wù)器11來處理其數(shù)據(jù)請求,或者選擇將內(nèi)存數(shù)據(jù)服務(wù)器11用作延伸服務(wù)。為了提供客戶群13這個靈活性,內(nèi)存數(shù)據(jù)服務(wù)器11可以提供兩個運作模型純服務(wù)模型和混合服務(wù)模型。
在純服務(wù)模型下,客戶群13所有的數(shù)據(jù)都存儲在內(nèi)存數(shù)據(jù)服務(wù)器11上,雖然客戶群13可能有緩存。客戶群13向內(nèi)存數(shù)據(jù)服務(wù)器11發(fā)出請求,內(nèi)存數(shù)據(jù)服務(wù)器11安排向客戶預(yù)取緩存15復(fù)制數(shù)據(jù),并且處理緩存未擊中的情況。這種長期的強(qiáng)功能預(yù)取機(jī)制將提供更好的系統(tǒng)性能。純服務(wù)模型適合于多芯芯片或共享內(nèi)存系統(tǒng),因為在這些系統(tǒng)中,內(nèi)存數(shù)據(jù)服務(wù)器11貼近客戶群13。純服務(wù)模型也可以為客戶群13節(jié)省能源。當(dāng)客戶群13啟動后,客戶群13可以將它的內(nèi)存19和磁盤21調(diào)到低能源模式,并且將內(nèi)存數(shù)據(jù)服務(wù)器11當(dāng)作自己的內(nèi)存和磁盤。在某些情況下,有些客戶有可能不需要擁有主存或者磁盤而直接與內(nèi)存服務(wù)器協(xié)調(diào)工作。
在普適計算環(huán)境中,手持設(shè)備配置的內(nèi)存較小。這些客戶設(shè)備可以選擇內(nèi)存數(shù)據(jù)服務(wù)器11來處理它們的內(nèi)存請求。內(nèi)存服務(wù)也可以以web服務(wù)的方式提供,這樣客戶在透明的情況下(即客戶端程序不知覺的情況下)發(fā)現(xiàn)并且聯(lián)接到最近的內(nèi)存服務(wù)。請注意,在此情況下,本地內(nèi)存和磁盤不一定要從客戶計算機(jī)上拆除,僅僅全部或者部分關(guān)閉即可,以此節(jié)省能源。
在混合服務(wù)模型下,尤其對那些數(shù)據(jù)訪問中有較好的數(shù)據(jù)局部性的數(shù)據(jù)訪問模式,客戶群13可以使用它自己的內(nèi)存19和磁盤21。當(dāng)訪問的數(shù)據(jù)局部性變差或其它情況下,比如在某應(yīng)用程序的工作組需要大量內(nèi)存的情況下,客戶群13可轉(zhuǎn)而使用內(nèi)存數(shù)據(jù)服務(wù)器11。客戶群13可以使用預(yù)測模型,比如在S.Byna,X.Sun,et al.,Predicting Memory-AccessCost Based on Data-Access Patterns,Proceedings of IEEEInternational Conference on Cluster Computing,San Diego,September2004文章中闡述的預(yù)測模型,來決定是否選擇內(nèi)存服務(wù)和內(nèi)存服務(wù)的模式。
在純服務(wù)模型下,內(nèi)存服務(wù)器11會接到客戶群13需要其服務(wù)的通知。當(dāng)純服務(wù)模式開始后,內(nèi)存服務(wù)器11接管客戶內(nèi)存管理的職能。內(nèi)存服務(wù)器11直接監(jiān)控客戶緩存的數(shù)據(jù)訪問模式,預(yù)測出客戶應(yīng)用程序未來的數(shù)據(jù)訪問,并且將要訪問的數(shù)據(jù)推送給客戶群13,如放到客戶預(yù)取緩存中。在混合服務(wù)模式下,當(dāng)客戶群13決定使用內(nèi)存服務(wù)的時候,客戶群13向內(nèi)存服務(wù)提供者23發(fā)出請求。內(nèi)存服務(wù)提供者23將啟動一個后臺進(jìn)程來傳送客戶群13的當(dāng)前地址引用表,并傳送一系列的指令去提供客戶群13所需要的內(nèi)存服務(wù)。內(nèi)存數(shù)據(jù)服務(wù)器11從客戶群13的轉(zhuǎn)換旁視表到內(nèi)存頁表的映射來收集其虛擬地址。然后,內(nèi)存數(shù)據(jù)服務(wù)器11將這個需要的(與此客戶地址映射有關(guān)的)數(shù)據(jù)從客戶磁盤21轉(zhuǎn)移到內(nèi)存服務(wù)器的本地內(nèi)存45。為了維持?jǐn)?shù)據(jù)的一致性,內(nèi)存數(shù)據(jù)服務(wù)器11可在客戶需求完成時將數(shù)據(jù)存回客戶磁盤21。在客戶群13和內(nèi)存數(shù)據(jù)服務(wù)器11之間的數(shù)據(jù)復(fù)制可以與在客戶處理器上的應(yīng)用程序的執(zhí)行時間重疊??蛻羧?3上旨在利用內(nèi)存服務(wù)的決策進(jìn)程應(yīng)當(dāng)考慮到在客戶群13和內(nèi)存數(shù)據(jù)服務(wù)器11之間的數(shù)據(jù)傳輸負(fù)荷。比如,在混合服務(wù)模型下,客戶群13僅在需要改善性能或者保存能量及其它適當(dāng)?shù)臈l件下調(diào)用內(nèi)存數(shù)據(jù)服務(wù)器11的服務(wù)。
雖然上面給出一些示范性實例用來解釋本發(fā)明,這些實例不能用來限制以下給出的要求所定義的本發(fā)明的精神和范圍。
權(quán)利要求
1.一個服務(wù)于計算的內(nèi)存數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,包括a)一個可連接到客戶設(shè)備的內(nèi)存數(shù)據(jù)服務(wù)器;b)能夠處理應(yīng)用程序并且可連接到內(nèi)存數(shù)據(jù)服務(wù)器的客戶設(shè)備;以及c)在客戶應(yīng)用程序運行過程中,至少某些客戶設(shè)備的數(shù)據(jù)訪問要求可在內(nèi)存數(shù)據(jù)服務(wù)器上獲得,并且傳送到客戶設(shè)備。
2.如權(quán)利要求1所述的服務(wù)于計算的內(nèi)存數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述內(nèi)存數(shù)據(jù)服務(wù)器,進(jìn)一步還含有一個預(yù)測進(jìn)程和一個數(shù)據(jù)推進(jìn)器模塊;此預(yù)測進(jìn)程用于監(jiān)控客戶設(shè)備的數(shù)據(jù)訪問模式,并預(yù)測客戶設(shè)備的未來數(shù)據(jù)需求;此數(shù)據(jù)推進(jìn)器模塊用于將預(yù)測的訪問數(shù)據(jù)推送到客戶設(shè)備的內(nèi)存設(shè)備上。
3.如權(quán)利要求1所述的服務(wù)于計算的內(nèi)存數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,進(jìn)一步包括了一個查詢/置換策略采用器進(jìn)程,用于動態(tài)地選用內(nèi)存管理策略以便于客戶設(shè)備內(nèi)存對數(shù)據(jù)的使用。
4.一種服務(wù)于計算的內(nèi)存數(shù)據(jù)服務(wù)器,其特征在于,包括a)是一個包含內(nèi)存處理器的內(nèi)存數(shù)據(jù)服務(wù)器;b)此內(nèi)存數(shù)據(jù)服務(wù)器可連接到客戶應(yīng)用程序處理器,以用于管理被客戶應(yīng)用程序處理器請求的數(shù)據(jù);c)服務(wù)器內(nèi)存可連接到內(nèi)存處理器;并且d)內(nèi)存數(shù)據(jù)服務(wù)器可連接到客戶內(nèi)存,此連接用于客戶應(yīng)用程序處理器來接受服務(wù)器送來的數(shù)據(jù);e)因此,內(nèi)存處理器減輕了應(yīng)用程序處理器的管理負(fù)荷,從而提高了應(yīng)用程序處理器的應(yīng)用程序處理速度。
5.如權(quán)利要求4所述的內(nèi)存數(shù)據(jù)服務(wù)器,其特征在于,其中的數(shù)據(jù)管理需求,包括數(shù)據(jù)預(yù)測,預(yù)取,存儲,以及提取等需求。
6如權(quán)利要求4所述的內(nèi)存數(shù)據(jù)服務(wù)器,其特征在于,進(jìn)一步包括一個數(shù)據(jù)訪問預(yù)測算法及挑選預(yù)測算法。
7如權(quán)利要求4所述的內(nèi)存數(shù)據(jù)服務(wù)器,其特征在于,其中進(jìn)一步包括了一個監(jiān)控并確認(rèn)應(yīng)用程序處理器的數(shù)據(jù)訪問模式的方法。
8如權(quán)利要求4所述的內(nèi)存數(shù)據(jù)服務(wù)器,其特征在于,擁有純服務(wù)模型和混合服務(wù)模型。
9一個內(nèi)存數(shù)據(jù)服務(wù)器設(shè)備,其特征在于,包括a.與客戶設(shè)備通訊的方法;b.一個內(nèi)存數(shù)據(jù)服務(wù)器結(jié)構(gòu),包括i)一個在內(nèi)存數(shù)據(jù)服務(wù)器上運行的內(nèi)存服務(wù)提供者進(jìn)程,此進(jìn)程啟動客戶設(shè)備和內(nèi)存數(shù)據(jù)服務(wù)器設(shè)備之間的數(shù)據(jù)傳輸;ii)一個未擊中處理器后臺進(jìn)程用于從客戶的本地內(nèi)存中獲得即現(xiàn)即得的未擊中信息,并且將數(shù)據(jù)訪問需求從客戶端傳送到一個數(shù)據(jù)訪問模式表;iii)一個數(shù)據(jù)訪問模式表,用于跟蹤和存儲客戶設(shè)備數(shù)據(jù)訪問請求的歷史和模式,以助于預(yù)測客戶設(shè)備的未來的數(shù)據(jù)請求;iv)一個未來訪問預(yù)測器后臺進(jìn)程,可根據(jù)數(shù)據(jù)訪問模式表或其它信息來預(yù)測客戶的未來數(shù)據(jù)請求,并且將預(yù)測訪問地址傳遞給數(shù)據(jù)推進(jìn)器模塊;v)一個數(shù)據(jù)推進(jìn)器模塊,用于處理內(nèi)存數(shù)據(jù)服務(wù)器和客戶設(shè)備的預(yù)取緩存之間的數(shù)據(jù)傳送,以及將從未擊中處理器后臺進(jìn)程得來的未擊中數(shù)據(jù)和從未來訪問預(yù)測后臺進(jìn)程中得來的預(yù)測數(shù)據(jù)推入到客戶設(shè)備的預(yù)取緩存;以及c.因此i.客戶設(shè)備向內(nèi)存數(shù)據(jù)服務(wù)器請求一個啟始數(shù)據(jù)地址;ii.數(shù)據(jù)推進(jìn)器模塊獲取請求的數(shù)據(jù)地址,并且從請求的地址空間中傳送多行數(shù)據(jù)到客戶設(shè)備預(yù)取緩存;iii.未擊中處理器后臺進(jìn)程從預(yù)取緩存和本地內(nèi)存中收集任何未擊中數(shù)據(jù)地址,并且將未擊中數(shù)據(jù)地址訪問信息存儲到數(shù)據(jù)訪問模式表中;未擊中處理器后臺進(jìn)程在預(yù)取緩存未擊中發(fā)生時,向數(shù)據(jù)推進(jìn)器模塊發(fā)出警告,同時數(shù)據(jù)推進(jìn)器將未擊中數(shù)據(jù)立刻發(fā)送出,而不等待未來訪問預(yù)測后臺進(jìn)程;并且,iv.未來訪問預(yù)測器后臺進(jìn)程基于以前的客戶數(shù)據(jù)訪問或其它信息預(yù)測出下一個數(shù)據(jù)地址,此時,數(shù)據(jù)推進(jìn)器在跟蹤預(yù)取緩存未擊中的同時提取并推動預(yù)測數(shù)據(jù)到客戶設(shè)備的預(yù)取緩存,根據(jù)逐漸增加的訪問模式信息,動態(tài)地調(diào)整其為了客戶應(yīng)用程序所作的未來數(shù)據(jù)訪問的預(yù)測。
10如權(quán)利要求9所述的內(nèi)存數(shù)據(jù)服務(wù)器設(shè)備,其特征在于,進(jìn)一步包括一個查詢/重置策略采用器后臺進(jìn)程,用于在數(shù)據(jù)被重置之前,為使客戶設(shè)備最大程度地利用取得的數(shù)據(jù)而選取策略,并且用于與未來訪問預(yù)測器后臺進(jìn)程分享客戶應(yīng)用程序數(shù)據(jù)訪問模式。
11如權(quán)利要求9所述的內(nèi)存數(shù)據(jù)服務(wù)器設(shè)備,其特征在于,進(jìn)一步包括了一個純服務(wù)模型,其中所有的客戶應(yīng)用程序的數(shù)據(jù)都由內(nèi)存數(shù)據(jù)服務(wù)器提供。
12如權(quán)利要求9所述的內(nèi)存數(shù)據(jù)服務(wù)器設(shè)備,其特征在于,進(jìn)一步包括了一個混合服務(wù)模型,其中如果客戶的數(shù)據(jù)訪問需求滿足數(shù)據(jù)局部性的預(yù)定標(biāo)準(zhǔn)的話,客戶使用自己的內(nèi)存和磁盤;而當(dāng)其數(shù)據(jù)訪問中的數(shù)據(jù)局部性小于預(yù)定標(biāo)準(zhǔn)時,客戶使用內(nèi)存數(shù)據(jù)服務(wù)器。
全文摘要
本發(fā)明內(nèi)存數(shù)據(jù)服務(wù)器,將內(nèi)存和數(shù)據(jù)訪問作為一個服務(wù)提供給客戶,其擁有一個內(nèi)存數(shù)據(jù)服務(wù)體系結(jié)構(gòu)和一些組成單元,用于減輕和消除客戶處理器的數(shù)據(jù)管理負(fù)擔(dān),并通過提供高功能的預(yù)測和快速數(shù)據(jù)傳送來提高客戶計算機(jī)的速度和效率。
文檔編號H04L29/06GK1979447SQ200510128920
公開日2007年6月13日 申請日期2005年12月1日 優(yōu)先權(quán)日2005年12月1日
發(fā)明者孫賢和 申請人:孫賢和