專利名稱:利用鏡像鎖定高速緩存?zhèn)鞑?shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及信息處理系統(tǒng)的領(lǐng)域,并且更特別地涉及信息處理系統(tǒng)中的高速緩沖存儲(chǔ)器(cache memory)。
背景技術(shù):
當(dāng)前的許多計(jì)算環(huán)境利用了多個(gè)處理器。例如,對(duì)稱多處理(“SMP”)環(huán)境是當(dāng)前普遍使用的一種計(jì)算環(huán)境。SMP環(huán)境包括連接到共享主存儲(chǔ)器的兩個(gè)或多個(gè)處理器。就處理器全都利用了公共的指令集和通信協(xié)議、具有類似的硬件體系結(jié)構(gòu)并且一般都配備有類似的存儲(chǔ)器層級(jí)結(jié)構(gòu)而言,所有的處理器一般來(lái)說(shuō)是相同的。
這些處理器通常包含少量的專用存儲(chǔ)器,稱為高速緩存(cache)。高速緩存用于提高操作的速度。在具有高速緩存的處理器中,隨著信息被從主存儲(chǔ)器調(diào)用和使用,還將該信息連同其地址一起存儲(chǔ)在一小部分特別快的存儲(chǔ)器中,通常是在靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)中。當(dāng)發(fā)出每一條新的讀和寫命令時(shí),系統(tǒng)查找快速SRAM(高速緩存)以確定信息是否存在。對(duì)期望地址和高速緩沖存儲(chǔ)器中的地址進(jìn)行比較。如果高速緩沖存儲(chǔ)器中的地址與查找到的地址匹配,則存在一個(gè)命中(hit)(即,在高速緩存中可獲得該信息)。接著在高速緩存中訪問(wèn)該信息,從而不需要訪問(wèn)主存儲(chǔ)器。因此,可以以快得多的速度處理指令。如果在高速緩存中不能獲得該信息,則從主存儲(chǔ)器復(fù)制新的數(shù)據(jù)并將其存儲(chǔ)在高速緩存中以供未來(lái)使用。
有時(shí)對(duì)高速緩存的關(guān)鍵部分進(jìn)行鎖定以便保護(hù)數(shù)據(jù)。對(duì)關(guān)鍵部分的鎖定是操作系統(tǒng)、中間件和終端用戶應(yīng)用中普遍的和性能關(guān)鍵的操作。鎖通常是賦予諸如處理器、進(jìn)程、程序、程序線程之類的一個(gè)實(shí)體對(duì)數(shù)據(jù)結(jié)構(gòu)或?qū)Υa序列的訪問(wèn)權(quán)限的軟件約定。一旦鎖定實(shí)體擁有或具有鎖,其它的實(shí)體就不能訪問(wèn)該鎖。用于鎖定的標(biāo)準(zhǔn)機(jī)制涉及使用共享的變量,對(duì)這些共享變量的訪問(wèn)是由支持體系結(jié)構(gòu)的原子指令(atomic instruction)所保護(hù)的。需要可以從SMP中的所有處理器對(duì)共享的變量進(jìn)行有效的訪問(wèn)。如上所述,每個(gè)處理器通常具有它自己的高速緩存。多個(gè)處理器可能潛在地試圖同時(shí)對(duì)同一個(gè)鎖進(jìn)行訪問(wèn),結(jié)果導(dǎo)致鎖的潛在的“熱點(diǎn)”。
這些鎖稱為全局鎖,原因是每個(gè)處理器具有獲得這些鎖的均等機(jī)會(huì),這些鎖與通常僅被單一處理器訪問(wèn)的局部鎖相對(duì)。這樣的熱點(diǎn)導(dǎo)致包含鎖定字(lock word)的高速緩存線以很低的效率頻繁地在處理器高速緩存之間遷移。這種遷移降低了鎖定操作的效率。一旦一個(gè)進(jìn)程(在處理器上運(yùn)行)獲得鎖,就必須使所有權(quán)對(duì)于SMP上的其它處理器來(lái)說(shuō)是可見(jiàn)的,這通常是通過(guò)同步指令來(lái)完成的。廣播或同步指令通常是十分昂貴的并且不能隨著SMP的規(guī)模有效地調(diào)整規(guī)模。
因此,需要克服上述現(xiàn)有技術(shù)中的問(wèn)題。
發(fā)明內(nèi)容
簡(jiǎn)單地說(shuō),根據(jù)本發(fā)明,公開(kāi)了一種用于使用鏡像鎖定高速緩存(mirrored lock cache)來(lái)傳播數(shù)據(jù)的方法、處理節(jié)點(diǎn)和計(jì)算機(jī)可讀介質(zhì)。該方法包括在多處理系統(tǒng)中將與第一處理節(jié)點(diǎn)關(guān)聯(lián)的第一鏡像鎖定高速緩存連接到總線,該總線可通信地連接到與第二處理節(jié)點(diǎn)關(guān)聯(lián)的至少第二鏡像鎖定高速緩存。該方法進(jìn)一步包括由第一鏡像鎖定高速緩存從處理節(jié)點(diǎn)接收數(shù)據(jù)。接著,自動(dòng)地對(duì)數(shù)據(jù)進(jìn)行鏡像,以便可在第二鏡像鎖定高速緩存處本地地獲得相同的數(shù)據(jù)以供第二處理節(jié)點(diǎn)使用。
在本發(fā)明的另一個(gè)實(shí)施例中,公開(kāi)了一種處理節(jié)點(diǎn)。該處理節(jié)點(diǎn)包括至少一個(gè)鏡像鎖定高速緩存和一個(gè)通信總線。該通信總線用于在多處理系統(tǒng)的至少一個(gè)節(jié)點(diǎn)中將至少一個(gè)鏡像鎖定高速緩存可通信地連接到至少一個(gè)其它的鏡像鎖定高速緩存。每個(gè)鏡像鎖定高速緩存自動(dòng)地對(duì)駐留的數(shù)據(jù)進(jìn)行鏡像,以便可在每個(gè)其它的鏡像鎖定高速緩存處本地地獲得相同的數(shù)據(jù)。
在又一個(gè)實(shí)施例中,公開(kāi)了一種用于使用鏡像鎖定高速緩存來(lái)傳播數(shù)據(jù)的計(jì)算機(jī)可讀介質(zhì)。該計(jì)算機(jī)可讀介質(zhì)包括多條指令,這些指令用于在多處理系統(tǒng)中將與第一處理節(jié)點(diǎn)關(guān)聯(lián)的第一鏡像鎖定高速緩存連接到總線,該總線可通信地連接到與第二處理節(jié)點(diǎn)關(guān)聯(lián)的至少第二鏡像鎖定高速緩存。該計(jì)算機(jī)可讀介質(zhì)進(jìn)一步包括用于使第一鏡像鎖定高速緩存從處理節(jié)點(diǎn)接收數(shù)據(jù)的指令。接著,自動(dòng)地對(duì)數(shù)據(jù)進(jìn)行鏡像,以便可在第二鏡像鎖定高速緩存處本地地獲得相同的數(shù)據(jù)以供第二處理節(jié)點(diǎn)使用。
附圖用于進(jìn)一步說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例并用于解釋根據(jù)本發(fā)明的各種原理和優(yōu)點(diǎn),在附圖中,貫穿不同視圖,相同的參考標(biāo)號(hào)表示相同的或功能上類似的元件,并且附圖連同以下詳細(xì)描述一起包括在本說(shuō)明書(shū)中并形成本說(shuō)明書(shū)的一部分。
圖1是根據(jù)本發(fā)明的實(shí)施例的高度并行分布的多處理器計(jì)算環(huán)境的框圖;圖2是根據(jù)本發(fā)明的圖1的多處理器計(jì)算環(huán)境中的每個(gè)處理節(jié)點(diǎn)的示例性組件層級(jí)結(jié)構(gòu)的框圖;圖3是示出根據(jù)本發(fā)明的如圖1中所示的處理器的更為簡(jiǎn)化的版本的框圖;圖4是示出根據(jù)本發(fā)明的使用小型鏡像鎖定高速緩存來(lái)復(fù)制數(shù)據(jù)的示例性處理的操作流程圖;圖5是示出根據(jù)本發(fā)明的防止數(shù)據(jù)既被映射到小型鏡像鎖定高速緩存又被映射到傳統(tǒng)高速緩存的示例性處理的操作流程圖;圖6是示出根據(jù)本發(fā)明從SMLC(小型鏡像鎖定高速緩存)的角度通過(guò)利用時(shí)戳來(lái)避免競(jìng)爭(zhēng)情況的處理的操作流程圖;圖7是示出根據(jù)本發(fā)明從發(fā)出請(qǐng)求的處理器的角度通過(guò)利用時(shí)戳來(lái)避免競(jìng)爭(zhēng)情況的另一個(gè)處理的操作流程圖。
具體實(shí)施例方式
正如本領(lǐng)域的技術(shù)人員可以知道的,本發(fā)明可以以硬件或軟件或者以硬件和軟件的組合來(lái)實(shí)現(xiàn)。然而,在一個(gè)實(shí)施例中,本發(fā)明以軟件來(lái)實(shí)現(xiàn)。根據(jù)結(jié)合優(yōu)選實(shí)施例而公開(kāi)的本發(fā)明的原理,所述系統(tǒng)和方法可在單一的計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn),該單一的計(jì)算機(jī)系統(tǒng)具有用于執(zhí)行所描述或所要求保護(hù)的各個(gè)功能或步驟的分離的元件或裝置,或具有對(duì)所公開(kāi)或所要求保護(hù)的任意功能或步驟的性能進(jìn)行組合的一個(gè)或多個(gè)元件或裝置,或可配置在通過(guò)本領(lǐng)域技術(shù)人員可以知道的任意合適的裝置進(jìn)行互連的分布式計(jì)算機(jī)系統(tǒng)中。
根據(jù)結(jié)合優(yōu)選實(shí)施例而公開(kāi)的本發(fā)明的原理,本發(fā)明和本發(fā)明的原理不限于任何特定類型的計(jì)算機(jī)系統(tǒng),而是可以結(jié)合任意通用計(jì)算機(jī)而使用,正如本領(lǐng)域技術(shù)人員可以知道的,這些計(jì)算機(jī)被配置成執(zhí)行所描述的功能和所描述的方法步驟。如上所述,正如本領(lǐng)域技術(shù)人員可以知道的,這種計(jì)算機(jī)的操作可根據(jù)包含在介質(zhì)上的用于操作或控制計(jì)算機(jī)的計(jì)算機(jī)程序來(lái)執(zhí)行。正如本領(lǐng)域技術(shù)人員可以知道的,可用于容納或包含計(jì)算機(jī)程序產(chǎn)品的計(jì)算機(jī)介質(zhì)可以是諸如嵌入式存儲(chǔ)器之類的計(jì)算機(jī)的固定裝置或可以位于諸如磁盤之類的可移動(dòng)介質(zhì)上。
本發(fā)明不限于任何特定的計(jì)算機(jī)程序、邏輯、語(yǔ)言或指令,而是可以利用本領(lǐng)域技術(shù)人員可以知道的任意合適的程序、邏輯、語(yǔ)言或指令來(lái)實(shí)現(xiàn)。在不限制所公開(kāi)的本發(fā)明的原理的情況下,任意這種計(jì)算系統(tǒng)可特別地包括至少一種計(jì)算機(jī)可讀介質(zhì),該介質(zhì)使得計(jì)算機(jī)可以從計(jì)算機(jī)可讀介質(zhì)讀取數(shù)據(jù)、指令、消息、消息分組以及其它計(jì)算機(jī)可讀信息。計(jì)算機(jī)可讀介質(zhì)可包括非易失性存儲(chǔ)器,諸如ROM(只讀存儲(chǔ)器)、閃存、軟盤、磁盤驅(qū)動(dòng)存儲(chǔ)器、CD-ROM(壓縮光盤-只讀存儲(chǔ)器)以及其它永久性存儲(chǔ)器。另外,計(jì)算機(jī)可讀介質(zhì)可包括例如易失性存儲(chǔ)器,諸如RAM(隨機(jī)存取存儲(chǔ)器)、緩沖器、高速緩沖存儲(chǔ)器和網(wǎng)絡(luò)電路。
此外,計(jì)算機(jī)可讀介質(zhì)可包括處于瞬態(tài)介質(zhì)中的計(jì)算機(jī)可讀信息,該瞬態(tài)介質(zhì)諸如網(wǎng)絡(luò)鏈路和/或網(wǎng)絡(luò)接口,包括使得計(jì)算機(jī)可以讀取這種計(jì)算機(jī)可讀信息的有線網(wǎng)絡(luò)或無(wú)線網(wǎng)絡(luò)。根據(jù)實(shí)施例,本發(fā)明通過(guò)提供用于存儲(chǔ)器復(fù)制操作的更有效的機(jī)制而克服了現(xiàn)有技術(shù)的問(wèn)題。本發(fā)明使得處理器可以在存儲(chǔ)器復(fù)制操作期間持續(xù)地執(zhí)行后續(xù)指令,從而避免了不必要的處理器停機(jī)時(shí)間。
示例性的多計(jì)算機(jī)系統(tǒng)如圖1中所示,根據(jù)本發(fā)明的實(shí)施例,示出了示例性的分布式計(jì)算環(huán)境100。在一個(gè)實(shí)施例中,分布式計(jì)算環(huán)境是SMP計(jì)算環(huán)境。分布式計(jì)算環(huán)境100包括通過(guò)多個(gè)網(wǎng)絡(luò)適配器106、108互相連接的多個(gè)節(jié)點(diǎn)102、104。每個(gè)節(jié)點(diǎn)102、104是獨(dú)立的計(jì)算機(jī),該計(jì)算機(jī)具有其自己的操作系統(tǒng)映像110、112,以及位于系統(tǒng)存儲(chǔ)總線126、128上的通道控制器114、116,存儲(chǔ)器118、120和處理器122、124,并且系統(tǒng)輸入/輸出總線130、132對(duì)I/O(輸入/輸出)適配器134、136和網(wǎng)絡(luò)適配器106、108進(jìn)行連接。盡管在每一個(gè)處理節(jié)點(diǎn)102、104中僅示出了一個(gè)處理器122、124,但每一個(gè)處理節(jié)點(diǎn)可具有多個(gè)處理器。各網(wǎng)絡(luò)適配器通過(guò)網(wǎng)絡(luò)交換機(jī)138鏈接在一起。所有的或一些處理節(jié)點(diǎn)102、104可包括不同類型的計(jì)算機(jī)和/或基于不同技術(shù)的操作系統(tǒng)110、112。所有的這些變型被認(rèn)為是所要求保護(hù)的發(fā)明的一部分。
多計(jì)算機(jī)系統(tǒng)中處理器的示例性組件層級(jí)結(jié)構(gòu)圖2是示出根據(jù)本發(fā)明的圖1的分布式計(jì)算環(huán)境100的多個(gè)處理節(jié)點(diǎn)102、104的擴(kuò)展視圖200的框圖。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)應(yīng)用程序APP1 202、APP2 206、APP3 208在每個(gè)處理節(jié)點(diǎn)102、204和104的相應(yīng)處理器122、230和124上運(yùn)行。在另一個(gè)實(shí)施例中,應(yīng)用程序APP1 202、APP2 206、APP3 208是分布式的并且在相應(yīng)的處理節(jié)點(diǎn)102、204、104內(nèi)或在處理節(jié)點(diǎn)102、204和104之間的多個(gè)處理器上運(yùn)行。應(yīng)用程序接口(“API”)可用于對(duì)應(yīng)用202、206、208與應(yīng)用202、206、208當(dāng)前所駐留的網(wǎng)絡(luò)交換機(jī)上的其它處理節(jié)點(diǎn)進(jìn)行接口連接。
每個(gè)處理節(jié)點(diǎn)102、204和104包括例如在每個(gè)相應(yīng)的處理器122、230、124上運(yùn)行的操作系統(tǒng)10、210、112。操作系統(tǒng)110、210、104提供了應(yīng)用APP1 202、APP2 206、APP3 208在其上運(yùn)行的軟件平臺(tái)等。每個(gè)處理節(jié)點(diǎn)102、204、104還包括固件212、214、216,這些固件提供關(guān)于相應(yīng)的處理器122、230、124如何與其它的硬件組件進(jìn)行通信的指令。每個(gè)處理節(jié)點(diǎn)102、204、104的硬件218、220、222包括至少一個(gè)小型鏡像鎖定高速緩存224、226、228和處理器122、230、124。每個(gè)小型鏡像鎖定高速緩存224、226、228是彼此的鏡像副本。下面將對(duì)小型鏡像鎖定高速緩存(“SMLC”)224、226、228進(jìn)行更為詳細(xì)的討論。諸如一級(jí)高速緩存232、234、236之類的傳統(tǒng)高速緩存同樣包括在每個(gè)處理節(jié)點(diǎn)102、204和104的固件218、220和222內(nèi)。
示例性的小型鏡像鎖定高速緩存圖3是示出根據(jù)本發(fā)明的實(shí)施例的包括小型鏡像鎖定高速緩存224的圖1中的處理器122的更為簡(jiǎn)化的視圖的框圖。圖3示出了處理器核心302,其包括通用寄存器(“GPR”)304,一級(jí)高速緩存306,以及存儲(chǔ)器管理單元308,其中存儲(chǔ)器管理單元308包括轉(zhuǎn)換后備緩沖器(“TLB”)。GPR 304例如存儲(chǔ)由定點(diǎn)單元(fixed-point unit)和加載-存儲(chǔ)單元(load-store unit)訪問(wèn)和產(chǎn)生的定點(diǎn)值和整數(shù)值。MMU/TLB 308包括用于處理由處理器122所請(qǐng)求的存儲(chǔ)器訪問(wèn)的各種組件。例如,MMU 308的TLB組件包括頁(yè)表(同樣包括在MMU308中)的一部分以便將虛擬地址轉(zhuǎn)換為實(shí)際地址。MMU/TLB 308還包括用于存儲(chǔ)器保護(hù)和高速緩存控制的組件。處理器122還包括諸如存儲(chǔ)器復(fù)制指令之類的操作碼310。
二級(jí)高速緩存312和三級(jí)高速緩存314連接到處理器核心302。存儲(chǔ)控制器316同樣連接到處理核心122。
處理器122還包括至少一個(gè)小型鏡像鎖定高速緩存224。小型鏡像鎖定高速緩存與L1 306、L2 312和L3 314分離并且是彼此的鏡像副本。換句話說(shuō),在任意給定的時(shí)間點(diǎn)上,在同一個(gè)處理器上或在多處理器計(jì)算環(huán)境中的不同處理器之間的小型鏡像鎖定高速緩存將具有相同的數(shù)據(jù)。例如,處理器對(duì)它的SMLC的寫入將自動(dòng)地傳播到SMP計(jì)算環(huán)境中的其它SMLC。小型鏡像鎖定高速緩存可以是由本地處理節(jié)點(diǎn)(進(jìn)程ID(標(biāo)識(shí)符))使用的主局部鎖定高速緩存,而在另一個(gè)實(shí)施例中是全局鎖定高速緩存,即任意處理器獲得小型鏡像鎖定高速緩存內(nèi)的鎖機(jī)會(huì)是均等的。全局鎖高速緩存是高度競(jìng)爭(zhēng)性的高速緩存。
在一個(gè)實(shí)施例中,SMLC的寬度小至4/8個(gè)字節(jié)以便保持整個(gè)鎖定結(jié)構(gòu)。如果數(shù)據(jù)大于該鎖所能容納的大小,該數(shù)據(jù)將被置于存儲(chǔ)器118中。與傳統(tǒng)的數(shù)據(jù)高速緩存相比,SMLC的寬度更小并且包括更少的條目。處理器122的硬件218通過(guò)處理器122內(nèi)的小型鏡像鎖定緩沖器和多處理器計(jì)算環(huán)境中的其它處理器204、104之間的連接(未示出)來(lái)提供鏡像能力。
SMLC 224包括高速緩存條目1324到高速緩存條目N 326。在一個(gè)實(shí)施例中,高速緩存條目的數(shù)目足以容納工作集。在一個(gè)實(shí)施例中,工作集是在給定的時(shí)間集上運(yùn)行系統(tǒng)所需的鎖的數(shù)目。工作集大小的增加或減少依賴于當(dāng)前的系統(tǒng)環(huán)境,例如哪些進(jìn)程當(dāng)前正在運(yùn)行。在一個(gè)實(shí)施例中,如果工作集的大小大于SMLC 224所能接受的大小,則使用傳統(tǒng)的高速緩存。并且因此高速緩存條目的數(shù)目是處理節(jié)點(diǎn)中的處理器數(shù)目的函數(shù)。每個(gè)高速緩存條目都包括有標(biāo)記或可用性比特(availability bit)以便標(biāo)識(shí)該鎖是否可用。例如,高速緩存條目1/鎖1324的可用性比特328被設(shè)置成1,標(biāo)志著該鎖當(dāng)前是不可用的。高速緩存條目2/鎖2332的可用性比特330被設(shè)置成0,標(biāo)志著該鎖是可用的。當(dāng)處理器試圖獲得特定的鎖時(shí),該處理器查看可用性比特以確定該鎖是否可用。
SMLC 224繞過(guò)了傳統(tǒng)的鎖定層級(jí)結(jié)構(gòu)。在MMU 308中的頁(yè)表(未示出)內(nèi)包括映射比特(mapping bit)以表明特定的條目將要保存在SMLC 224中。應(yīng)用202、OS(操作系統(tǒng))110和/或中間件向系統(tǒng)提交指令以表明具體的鎖需要被置于SMLC 224中(如果能夠獲得空間)。該處理對(duì)于終端用戶來(lái)說(shuō)是透明的。對(duì)既要在SMLC 224中又要在諸如高速緩存L1 306、L2 312、L3 314之類的傳統(tǒng)高速緩存中使用的特定鎖定字的混淆是不允許的。允許映射到SMLC 224或傳統(tǒng)高速緩存,但不允許同時(shí)映射到這兩者。在一個(gè)實(shí)施例中,處理節(jié)點(diǎn)102將SMLC 224視為特殊的邊帶高速緩存。換句話說(shuō),高速緩存L2 312或L3 314不對(duì)SMLC 223進(jìn)行備份。SMLC 224中的值僅反映在存儲(chǔ)器118中,而不反映在高速緩存L2 312或L3 314中。
在一個(gè)實(shí)施例中,SMLC管理機(jī)制(未示出)在OS 110或硬件218中實(shí)現(xiàn)。例如,當(dāng)請(qǐng)求在SMLC 224中進(jìn)行新的分配并且沒(méi)有足夠的空間時(shí),實(shí)現(xiàn)基于最近最少使用(LRU)的機(jī)制以便將鎖從SMLC224移到傳統(tǒng)的高速緩存。在一個(gè)替代性的實(shí)施例中,OS 110包括關(guān)于如何將SMLC 224鎖定高速緩存分配給各應(yīng)用202、OS 110本身和中間件的各種策略。這些策略可根據(jù)處理節(jié)點(diǎn)102中存在的OS110、應(yīng)用202和中間件的類型來(lái)訂制。
在一個(gè)實(shí)施例中,通過(guò)自動(dòng)地更新鎖定字,避免了針對(duì)SMLC 224的競(jìng)爭(zhēng)情況。例如,在SMP環(huán)境中,SMP環(huán)境中的所有處理器都需要能夠?qū)蚕碜兞窟M(jìn)行訪問(wèn)。多個(gè)處理器可能在相同的時(shí)間訪問(wèn)相同的鎖從而導(dǎo)致鎖的“熱點(diǎn)”。例如,每個(gè)處理器可能嘗試將鎖定比特設(shè)置成零并且在確信它們已經(jīng)獲得該鎖的情況下對(duì)該鎖進(jìn)行寫入。通過(guò)自動(dòng)地更新鎖定字,當(dāng)處理器獲得鎖時(shí),則告知其它的處理器該鎖是不可用的。當(dāng)處理器釋放鎖時(shí),則自動(dòng)地更新鎖定字,從而通知其它的處理器該鎖是可用的。在一個(gè)實(shí)施例中,鎖定字通過(guò)使用“測(cè)試和設(shè)置”(test and set)以及“重新設(shè)置”(reset)操作而自動(dòng)地更新。
在另一個(gè)實(shí)施例中,通過(guò)利用時(shí)戳來(lái)避免競(jìng)爭(zhēng)情況。例如,當(dāng)處理器請(qǐng)求訪問(wèn)鎖時(shí),時(shí)戳也隨同請(qǐng)求被發(fā)送或包括在該請(qǐng)求中。與最早的時(shí)戳關(guān)聯(lián)的處理器ID被存儲(chǔ)在該鎖中。當(dāng)處理器試圖訪問(wèn)該鎖時(shí),它對(duì)處理器ID和它自己的ID進(jìn)行檢查,并且如果它們匹配的話,則處理器能夠獲得該鎖。如果ID不匹配,則處理器無(wú)法獲得該鎖。
針對(duì)“全部清除”(clear all)和“全部設(shè)置”(set all)的鎖操作,建立連接以通過(guò)單一比特來(lái)發(fā)送這些信號(hào)以便節(jié)省高速緩存互連帶寬。換句話說(shuō),不是向SMLC中所有的高速緩存發(fā)送整個(gè)鎖定字,而是僅將一個(gè)比特(設(shè)置/清除)隨同鎖定字的地址一起發(fā)送。在一個(gè)實(shí)施例中,SMLC 224被嚴(yán)格地排序,即對(duì)要存儲(chǔ)到SMLC 224的內(nèi)容進(jìn)行排序,從而避免競(jìng)爭(zhēng)情況。另外,對(duì)要存儲(chǔ)到SMLC 224的內(nèi)容進(jìn)行排序還使SMLC邏輯保持簡(jiǎn)單和非常有效。應(yīng)該注意到,SMLC 224不限于被嚴(yán)格地排序。
應(yīng)用202、OS 110和中間件可使用SMLC 224中不限數(shù)目的鎖。類似于傳統(tǒng)的鎖,保存在SMLC 224中的最活躍的鎖定字用于快速地獲得和釋放。由于上述不允許在SMLC 224和傳統(tǒng)高速緩存之間產(chǎn)生混淆的限制,所以余下的鎖定字被保存在諸如L1 306、L2 312和L3 314之類的傳統(tǒng)高速緩存中或保存在存儲(chǔ)器118中。
小型鏡像鎖定高速緩存還確保進(jìn)程之間的同步能夠有效地進(jìn)行。例如,在SMP計(jì)算環(huán)境中,并行的應(yīng)用可具有在同一個(gè)處理節(jié)點(diǎn)的各處理器上運(yùn)行的若干任務(wù)(進(jìn)程)。典型地,進(jìn)程(或并行作業(yè)的任務(wù))被映射到處理節(jié)點(diǎn)的處理器上。不是所有的進(jìn)程都會(huì)在相同的時(shí)間完成并且在繼續(xù)進(jìn)行前必須被同步。這些任務(wù)通常要執(zhí)行柵障同步(barrier synchronization)操作以便線程可以被同步。進(jìn)程通過(guò)共享的存儲(chǔ)器或通過(guò)采用通常很慢的原子操作來(lái)交換消息。當(dāng)在系統(tǒng)中使用SMLC 224時(shí),無(wú)論何時(shí)將值寫入高速緩存條目中,數(shù)據(jù)都會(huì)被自動(dòng)地鏡像到其它的高速緩存。因此,處理器并非必須檢查SMLC高速緩存224中的每個(gè)條目以確定進(jìn)程是否已經(jīng)完成。
小型鏡像鎖定高速緩存還允許在處理器之間有效地發(fā)送控制消息。例如,控制消息是用于對(duì)所有處理器上的TOD(Time of Day)時(shí)鐘進(jìn)行同步的消息,如上面所討論的柵障同步消息等。在一個(gè)實(shí)施例中,將短消息用作控制消息,例如用來(lái)確定較長(zhǎng)的消息是否被正確地處理。例如,在一個(gè)實(shí)施例中,短消息被用于從邏輯上控制其它內(nèi)容,例如較長(zhǎng)的消息的狀態(tài)諸如是“消息已發(fā)送”、“消息中存在錯(cuò)誤”等。當(dāng)與控制消息進(jìn)行交互時(shí),SMLC 224將包括消息而不是鎖。例如,從條目1324到條目N 326將包括控制消息。SMLC224還可充當(dāng)各種同步寄存器。例如,多處理器系統(tǒng)中的每個(gè)處理器在SMLC 224中具有分配的物理位置。每個(gè)處理器進(jìn)行讀取以便確定每個(gè)其它的處理器是否進(jìn)行到序列中某個(gè)步驟,例如步驟5。在這個(gè)例子中,在處理器能夠持續(xù)到達(dá)步驟6之前,每個(gè)處理器必須進(jìn)行到步驟5。當(dāng)每個(gè)處理器完成步驟5時(shí),SMLC 224將該信息鏡像到每個(gè)其它的處理器,由此確保了處理器之間的有效同步。因?yàn)镾MLC 224離處理器核心302更近,所以使用SMLC 224來(lái)通知每個(gè)處理器何時(shí)其它處理器已經(jīng)完成步驟序列中的一項(xiàng)步驟比通過(guò)共享存儲(chǔ)器來(lái)交換消息更快。
本發(fā)明的一個(gè)優(yōu)勢(shì)在于每個(gè)處理器并非必須檢查存儲(chǔ)器118以確定是否存在表明進(jìn)程已完成的通知,相反,可使用SMLC 224來(lái)傳送表明運(yùn)行于其它處理器上的進(jìn)程已完成的短消息。例如,處理器A通過(guò)SMLC 224向處理器B發(fā)送短消息。處理器A向與它關(guān)聯(lián)的鎖中寫入全比特(full bit)并且當(dāng)處理器B讀取了鎖中的數(shù)據(jù)時(shí),處理器B清除該比特。當(dāng)處理器A確定該比特被設(shè)置成零時(shí),它繼續(xù)對(duì)該鎖進(jìn)行寫入。因?yàn)镾MLC 224離處理器核心302更近,所以使用SMLC 224來(lái)傳送短消息而不是使每個(gè)處理器檢查存儲(chǔ)器會(huì)更快。
在另一個(gè)實(shí)施例中,適配器還利用SMLC 224來(lái)向處理器發(fā)送控制消息,從而避免了通常的高速緩存丟失延遲。例如,為了使在處理器上執(zhí)行的進(jìn)程意識(shí)到DMA(直接存儲(chǔ)器存取)操作已經(jīng)發(fā)生,進(jìn)程通常必須在讀取因DMA操作而改變的存儲(chǔ)器位置前使它們的高速緩存條目無(wú)效(對(duì)于不與高速緩存一致的DMA操作)。這就導(dǎo)致對(duì)通過(guò)DMA操作(其是用于通過(guò)并行和分布式的系統(tǒng)的大多數(shù)消息的典型方法)到來(lái)的數(shù)據(jù)進(jìn)行處理時(shí)的效率很低。來(lái)自高性能網(wǎng)絡(luò)適配器的DMA操作能夠識(shí)別直接反映在SMLC 224中的某些更新。對(duì)于性能關(guān)鍵的延遲操作,該硬件有助于使由該進(jìn)程對(duì)新到來(lái)的數(shù)據(jù)進(jìn)行檢測(cè)的任務(wù)更有效率。
利用小型鏡像鎖定高速緩存來(lái)對(duì)數(shù)據(jù)進(jìn)行鏡像的示例性處理圖4是示出獲得小型鏡像鎖定高速緩存和向其它小型鏡像鎖定高速緩存?zhèn)鞑テ鋽?shù)據(jù)的處理的操作流程圖。圖4的操作流程圖開(kāi)始于步驟402并直接進(jìn)行到步驟404。在步驟404,處理器122確定它想獲得的鎖是否是SMLC鎖。如果這種確定的結(jié)果是否定的,則在步驟406,使用傳統(tǒng)的鎖處理步驟對(duì)該鎖進(jìn)行處理。接著控制流程在步驟408退出。如果這種確定的結(jié)果是肯定的,則在步驟410,處理器122確定SMLC鎖是否可用。換句話說(shuō),處理器122確定另一個(gè)處理器當(dāng)前是否獲得了該鎖。當(dāng)鎖可用時(shí),則該鎖是自動(dòng)一致的。例如,為了在SMP計(jì)算環(huán)境中獲得有效的運(yùn)行結(jié)果,維護(hù)一致的存儲(chǔ)器層級(jí)結(jié)構(gòu)是重要的。SMLC 224向所有的處理器提供了存儲(chǔ)器內(nèi)容的單一視圖。處理器122例如通過(guò)檢查可用性比特328、330來(lái)確定該鎖是可用還是不可用。如果這種確定的結(jié)果是否定的,則處理器122繼續(xù)檢查該鎖是否可用。如果這種確定的結(jié)果是肯定的,則在步驟412,處理器122對(duì)SMLC 224進(jìn)行寫入(這將可用性標(biāo)記變?yōu)椴豢捎?。例如,處理器122向所獲得的鎖寫入數(shù)據(jù)。
在步驟416,處理器122在所獲得的鎖中讀取受保護(hù)的數(shù)據(jù),在步驟418,則利用受保護(hù)的數(shù)據(jù)進(jìn)行工作。一旦處理器122完成對(duì)數(shù)據(jù)的讀取和寫入,則在步驟420,該處理器122將可用性標(biāo)記328、330設(shè)置成可用。例如,處理器執(zhí)行“重新設(shè)置”操作,該操作將可用性標(biāo)記328、330變?yōu)榭捎谩=又刂屏鞒淘诓襟E422退出。
防止傳統(tǒng)高速緩存和SMLC之間的混淆的示例性處理圖5是示出防止諸如L1 306、L2 312和L3 314之類的傳統(tǒng)高速緩存與SMLC 224之間的混淆的示例性處理的操作流程圖。在一個(gè)實(shí)施例中,圖5的示例性處理由OS 110執(zhí)行。圖5的操作流程圖開(kāi)始于步驟502并直接進(jìn)行到步驟405。在步驟504,OS 110確定鎖定字是否被映射到小型鏡像鎖定高速緩存224。如果這種確定的結(jié)果是否定的,則在步驟506,OS 110確定鎖定字是否被映射到傳統(tǒng)的高速緩存。如果這種確定結(jié)果是肯定的,則在步驟508,OS 110防止鎖定字也被映射到SMLC 224。接著控制流程在步驟510退出。如果這種確定的結(jié)果是否定的,則在步驟512,OS 110允許該鎖定字被映射到SMLC 224或傳統(tǒng)的高速緩存,但不允許該鎖定字同時(shí)被映射到這兩者。接著控制流程在步驟514退出。如果步驟504的結(jié)果是肯定的,則在步驟516,OS 110防止該鎖定字也被映射到傳統(tǒng)的高速緩存。接著控制流程在步驟518退出。
利用時(shí)戳來(lái)避免競(jìng)爭(zhēng)情況的示例性處理圖6是示出從SMLC 224的角度通過(guò)利用時(shí)戳來(lái)避免競(jìng)爭(zhēng)情況的處理的操作流程圖。圖6的操作流程圖開(kāi)始于步驟602并直接進(jìn)行到步驟604。在步驟604,SMLC 224接收關(guān)于獲得鎖的請(qǐng)求。在步驟606,SMLC 224確定與該請(qǐng)求關(guān)聯(lián)的時(shí)戳是否是與對(duì)該特定的鎖的請(qǐng)求關(guān)聯(lián)的最早的時(shí)戳。如果這種確定的結(jié)果是否定的,則在步驟608,不準(zhǔn)許發(fā)出請(qǐng)求的處理器訪問(wèn)該鎖。接著控制流程在步驟610退出。如果這種確定的結(jié)果是肯定的,則在步驟612,與發(fā)出請(qǐng)求的處理器關(guān)聯(lián)的處理器ID被寫入所請(qǐng)求的鎖。這就使得所請(qǐng)求的處理器并且僅該所請(qǐng)求的處理器獲得該鎖。接著控制流程在步驟614退出。
利用時(shí)戳來(lái)避免競(jìng)爭(zhēng)情況的另一個(gè)示例性處理圖7是示出從發(fā)出請(qǐng)求的處理器的角度通過(guò)利用時(shí)戳來(lái)避免競(jìng)爭(zhēng)情況的另一個(gè)處理的操作流程圖。圖7的操作流程圖開(kāi)始于步驟702并直接進(jìn)行到步驟704。在步驟704,處理器122請(qǐng)求獲得SMLC224中的鎖。在步驟706,處理器122基于與最早的時(shí)戳關(guān)聯(lián)的處理器來(lái)讀取已寫入到所請(qǐng)求的鎖中的處理器ID。在步驟708,處理器122確定寫入到鎖中的處理器ID是否與它的處理器ID相匹配。如果這種確定的結(jié)果是否定的,則在步驟710,不準(zhǔn)許處理器122訪問(wèn)該鎖。接著控制流程在步驟712退出。如果這種確定的結(jié)果是肯定的,則在步驟714,處理器122獲得該鎖。接著控制流程在步驟716退出。
非限制性例子因?yàn)楸景l(fā)明的實(shí)施例提供了對(duì)數(shù)據(jù)有效鎖定,所以這些實(shí)施例是有利的。本發(fā)明的另一個(gè)優(yōu)勢(shì)在于小型鏡像鎖定高速緩存是彼此的鏡像副本。這就使得一個(gè)小型鏡像鎖定高速緩存的數(shù)據(jù)可以本地地駐留于另一個(gè)小型鏡像鎖定高速緩存處。需要訪問(wèn)另一個(gè)位置處的數(shù)據(jù)的處理并非必須從另一個(gè)位置查找該數(shù)據(jù)或獲得該數(shù)據(jù)。
本發(fā)明可以以硬件、軟件或硬件和軟件的組合來(lái)實(shí)現(xiàn)。根據(jù)本發(fā)明的優(yōu)選實(shí)施例的系統(tǒng)可在一個(gè)計(jì)算機(jī)系統(tǒng)中以集中的方式實(shí)現(xiàn),或以分布式方式實(shí)現(xiàn),在該分布式方式中,不同的元件分布在若干互聯(lián)的計(jì)算機(jī)系統(tǒng)之間。任意類型的計(jì)算機(jī)系統(tǒng)或適于執(zhí)行這里所描述的方法的其它設(shè)備都是適合的。硬件和軟件的典型組合可以是帶有計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),當(dāng)被加載和執(zhí)行時(shí),該計(jì)算機(jī)程序控制該計(jì)算機(jī)系統(tǒng)使其執(zhí)行這里所描述的方法。
一般地,無(wú)論是作為操作系統(tǒng)的一部分還是作為具體的應(yīng)用、組件、程序、模塊、對(duì)象或指令序列而實(shí)現(xiàn),所執(zhí)行的用以實(shí)現(xiàn)本發(fā)明的實(shí)施例的例行程序在這里都可稱為“程序”。計(jì)算機(jī)程序通常包括多個(gè)指令,這些指令被本地計(jì)算機(jī)轉(zhuǎn)換為機(jī)器可讀格式并從而轉(zhuǎn)換為可執(zhí)行的指令。另外,程序包括本地地駐留于程序中或在存儲(chǔ)器或存儲(chǔ)設(shè)備中可得到的變量和數(shù)據(jù)結(jié)構(gòu)。此外,可基于這里所描述的各種程序在本發(fā)明的具體實(shí)施例中所實(shí)現(xiàn)的應(yīng)用來(lái)標(biāo)識(shí)這些程序。然而,應(yīng)當(dāng)意識(shí)到,所遵循的任意特定程序命名法僅僅是出于方便而使用,所以本發(fā)明不應(yīng)限于僅在由這樣的命名法所標(biāo)識(shí)和/或暗示的任意具體應(yīng)用中使用。
盡管已經(jīng)公開(kāi)了本發(fā)明的具體實(shí)施例,但本領(lǐng)域的技術(shù)人員將理解,在不偏離本發(fā)明的精神和范圍的情況下,可對(duì)這些具體的實(shí)施例進(jìn)行改變。因此,本發(fā)明的范圍不限于這些具體的實(shí)施例,并且所附權(quán)利要求書(shū)力圖涵蓋本發(fā)明范圍內(nèi)的任意和所有這些應(yīng)用、修改和實(shí)施例。
權(quán)利要求
1.一種多處理系統(tǒng)中的處理器節(jié)點(diǎn),包括至少一個(gè)鏡像鎖定高速緩存;通信總線,用于在多處理系統(tǒng)的至少一個(gè)節(jié)點(diǎn)中將至少一個(gè)鏡像鎖定高速緩存可通信地連接到至少一個(gè)其它的鏡像鎖定高速緩存,其中每個(gè)鏡像鎖定高速緩存自動(dòng)地對(duì)駐留的數(shù)據(jù)進(jìn)行鏡像,以便可在每個(gè)其它的鏡像鎖定高速緩存處本地地獲得相同的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的處理器節(jié)點(diǎn),其中所述鏡像鎖定高速緩存包括一組鎖,所述鎖包括可用性標(biāo)記,用于表明與所述可用性標(biāo)記關(guān)聯(lián)的鎖的可用性。
3.根據(jù)權(quán)利要求1所述的處理器節(jié)點(diǎn),其中所述數(shù)據(jù)是控制消息。
4.根據(jù)權(quán)利要求3所述的處理器節(jié)點(diǎn),其中所述控制消息是柵障同步消息和時(shí)刻消息中的一個(gè)。
5.根據(jù)權(quán)利要求1所述的處理器節(jié)點(diǎn),進(jìn)一步包括一組編程指令,用于防止駐留于所述鏡像鎖定高速緩存中的數(shù)據(jù)被映射到非鏡像鎖定高速緩存內(nèi)。
6.根據(jù)權(quán)利要求2所述的處理器,其中所述一組鎖中的每個(gè)鎖包括與授權(quán)訪問(wèn)所述鎖的處理器關(guān)聯(lián)的處理器ID。
7.根據(jù)權(quán)利要求6所述的處理器,其中基于與在其它處理器之前請(qǐng)求訪問(wèn)所述鎖的處理器ID關(guān)聯(lián)的處理器而將所述處理器ID寫入到所述鎖中,來(lái)自處理器的請(qǐng)求的優(yōu)先權(quán)由包括在每個(gè)所述請(qǐng)求中的時(shí)戳確定。
8.一種在鏡像鎖定高速緩存上向其它鏡像鎖定高速緩存?zhèn)鞑?shù)據(jù)的方法,所述方法包括在多處理系統(tǒng)中將與第一處理節(jié)點(diǎn)關(guān)聯(lián)的第一鏡像鎖定高速緩存連接到總線,所述總線可通信地連接到與第二處理節(jié)點(diǎn)關(guān)聯(lián)的至少第二鏡像鎖定高速緩存;由所述第一鏡像鎖定高速緩存接收來(lái)自處理節(jié)點(diǎn)的數(shù)據(jù);以及自動(dòng)地對(duì)所述數(shù)據(jù)進(jìn)行鏡像,以便可在所述第二鏡像鎖定高速緩存處本地地獲得相同的數(shù)據(jù)以供所述第二處理節(jié)點(diǎn)使用。
9.根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括設(shè)置可用性標(biāo)記,以便表明駐留于與所述可用性標(biāo)記關(guān)聯(lián)的所述第一鏡像鎖定高速緩存中的鎖的可用性。
10.根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括防止駐留于所述第一鏡像鎖定高速緩存中的所述數(shù)據(jù)被映射到非鏡像鎖定高速緩存中。
11.根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括接收來(lái)自處理器的用以獲得駐留于所述第一鏡像鎖定高速緩存中的鎖的請(qǐng)求,所述請(qǐng)求包括時(shí)戳和與所述處理器關(guān)聯(lián)的處理器ID中的至少一個(gè);確定所述時(shí)戳是否先于與來(lái)自其它處理器的其它請(qǐng)求關(guān)聯(lián)的其它時(shí)戳;以及響應(yīng)于先于與來(lái)自其它處理器的其它請(qǐng)求關(guān)聯(lián)的其它時(shí)戳的所述時(shí)戳,將所述處理器ID寫入到所述鎖中。
12.根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括僅在與所述處理器關(guān)聯(lián)的所述處理器ID與寫入到所述鎖中的所述處理器ID匹配時(shí)才準(zhǔn)許所述處理器訪問(wèn)所述鎖。
13.根據(jù)權(quán)利要求8所述的方法,其中所述數(shù)據(jù)是控制消息。
14.根據(jù)權(quán)利要求13所述的方法,其中所述控制消息是柵障同步消息和時(shí)刻消息中的一個(gè)。
15.一種用于向其它鏡像鎖定高速緩存?zhèn)鞑?shù)據(jù)的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀介質(zhì)包括用于執(zhí)行根據(jù)權(quán)利要求8-14中的任一項(xiàng)所述的方法中的步驟的指令。
全文摘要
公開(kāi)了一種用于使用鏡像鎖定高速緩存來(lái)傳播數(shù)據(jù)的方法、處理節(jié)點(diǎn)和計(jì)算機(jī)可讀介質(zhì)。本方法包括在多處理系統(tǒng)中將與第一處理節(jié)點(diǎn)關(guān)聯(lián)的第一鏡像鎖定高速緩存連接到總線,該總線可通信地連接到與第二處理節(jié)點(diǎn)關(guān)聯(lián)的至少第二鏡像鎖定高速緩存。本方法進(jìn)一步包括由第一鏡像鎖定高速緩存從處理節(jié)點(diǎn)接收數(shù)據(jù)。接著,自動(dòng)地對(duì)數(shù)據(jù)進(jìn)行鏡像,以便可在第二鏡像鎖定高速緩存處本地獲得相同的數(shù)據(jù)以供第二處理節(jié)點(diǎn)使用。
文檔編號(hào)G06F12/08GK1987828SQ200610146559
公開(kāi)日2007年6月27日 申請(qǐng)日期2006年11月15日 優(yōu)先權(quán)日2005年12月22日
發(fā)明者塞特雅·P·沙瑪, 彼得·H·霍克希爾德, 布魯斯·G·米利, 拉維·K·阿里米利, 貝拉拉姆·辛哈羅伊, 拉姆·K·戈文達(dá)拉賈 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司