專利名稱:遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法及其應(yīng)用裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種分布式共享內(nèi)存(Distributed Shared Memory,簡(jiǎn)稱DSM)多處理器系統(tǒng)(multiprocessors system),且特別涉及一種在DSM系統(tǒng)架構(gòu)下遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法及其應(yīng)用裝置。
請(qǐng)參考
圖1所示,其為一種分布式共享內(nèi)存(Distributed Shared Memory,以下簡(jiǎn)稱DSM)系統(tǒng)節(jié)點(diǎn)架構(gòu)。一般來(lái)說(shuō),每一計(jì)算機(jī)系統(tǒng)架構(gòu)皆可視為一個(gè)DSM系統(tǒng)節(jié)點(diǎn)100。如圖所示,此計(jì)算機(jī)系統(tǒng)架構(gòu)可為多處理器的計(jì)算機(jī)系統(tǒng)架構(gòu)(當(dāng)然,一個(gè)處理器的計(jì)算機(jī)系統(tǒng)架構(gòu)亦為可行)。其具有多個(gè)處理器110、120,經(jīng)由一系統(tǒng)總線160可連接至一內(nèi)存控制芯片130,并由內(nèi)存控制芯片130來(lái)控制本地內(nèi)存(Local Memory)150與多個(gè)處理器110、120間的存取動(dòng)作。而內(nèi)存控制芯片130更可以連接至其它裝置來(lái)達(dá)成基本的輸入/輸出(I/O)控制。通常,內(nèi)存控制芯片130為北橋芯片。
其中,本地內(nèi)存150被區(qū)分為多個(gè)本地內(nèi)存線(Local Memory Line),以供存放數(shù)據(jù)。而處理器110及120可發(fā)出存取本地內(nèi)存線的數(shù)據(jù)存取請(qǐng)求至內(nèi)存控制芯片130并由內(nèi)存控制芯片130達(dá)成本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)存取。
在DSM系統(tǒng)節(jié)點(diǎn)架構(gòu)下,此節(jié)點(diǎn)(以下皆稱之為本地節(jié)點(diǎn),Local Node)100與其它節(jié)點(diǎn)(以下皆稱之為遠(yuǎn)程節(jié)點(diǎn),Remote Node)經(jīng)由一DSM控制器(以下簡(jiǎn)稱DSM控制器)140來(lái)達(dá)成數(shù)據(jù)傳送與接收。而DSM控制器140在此本地節(jié)點(diǎn)100內(nèi)連接至系統(tǒng)總線160并且以一內(nèi)部總線135連接至內(nèi)存控制芯片130。
當(dāng)處理器110、120需要讀取遠(yuǎn)程節(jié)點(diǎn)的內(nèi)存線的數(shù)據(jù)時(shí),就必須利用本地節(jié)點(diǎn)100內(nèi)的DSM控制器140來(lái)與遠(yuǎn)程節(jié)點(diǎn)內(nèi)的DSM控制器(未繪示)溝通,進(jìn)而達(dá)成存取遠(yuǎn)程節(jié)點(diǎn)內(nèi)的內(nèi)存線的數(shù)據(jù)。
由于每一個(gè)本地節(jié)點(diǎn)100均可與其它遠(yuǎn)程節(jié)點(diǎn)共享自己的本地內(nèi)存150,故每一節(jié)點(diǎn)中必須具有一個(gè)儲(chǔ)存區(qū)一致性對(duì)照表(Memory CoherencyDirectory)。此對(duì)照表是DSM控制器140用來(lái)記錄本地內(nèi)存中每一本地內(nèi)存線的狀態(tài)。當(dāng)遠(yuǎn)程節(jié)點(diǎn)欲讀取本地節(jié)點(diǎn)100的本地內(nèi)存線的數(shù)據(jù)時(shí),方可依據(jù)對(duì)照表中記錄的本地內(nèi)存線的狀態(tài),來(lái)決定讀取動(dòng)作如何進(jìn)行,以確保讀取正確數(shù)據(jù)。
請(qǐng)參考圖2所示,其為根據(jù)公知儲(chǔ)存區(qū)一致性對(duì)照表中針對(duì)本地內(nèi)存線的狀態(tài)圖。圖中顯示,公知對(duì)照表將本地內(nèi)存線區(qū)分為4種狀態(tài),分別說(shuō)明如下HOME(本地)代表沒(méi)有任何遠(yuǎn)程節(jié)點(diǎn)來(lái)讀取此本地內(nèi)存線的數(shù)據(jù)。
SHARED(共享)代表已有其它遠(yuǎn)程節(jié)點(diǎn)已讀取本地內(nèi)存線的數(shù)據(jù),且此本地內(nèi)存線的數(shù)據(jù)尚未被更改。
GONE(已更改)代表已有一遠(yuǎn)程節(jié)點(diǎn)已讀取本地內(nèi)存線的數(shù)據(jù),且此本地內(nèi)存線的數(shù)據(jù)已被遠(yuǎn)程節(jié)點(diǎn)所更改。
WASH(過(guò)渡)被更改過(guò)的本地內(nèi)存線的數(shù)據(jù)由遠(yuǎn)程節(jié)點(diǎn)回傳到本地節(jié)點(diǎn)的過(guò)渡狀態(tài)。
接下來(lái)針對(duì)一個(gè)本地內(nèi)存線的數(shù)據(jù)變化并配合這些狀態(tài)的變動(dòng)作一說(shuō)明。在初始狀態(tài)時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表中對(duì)應(yīng)于此本地內(nèi)存線的狀態(tài)為HOME狀態(tài)。在HOME狀態(tài)之下,此本地節(jié)點(diǎn)內(nèi)的處理器可以任意的存取此本地內(nèi)存線的數(shù)據(jù),并且此本地內(nèi)存線內(nèi)的數(shù)據(jù)僅存在于此本地節(jié)點(diǎn)內(nèi)。
在HOME狀態(tài)之下,如路徑1所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程讀取(remote readline),代表遠(yuǎn)程節(jié)點(diǎn)要讀取本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地內(nèi)存線的數(shù)據(jù)會(huì)被傳送至遠(yuǎn)程節(jié)點(diǎn),因此,本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME狀態(tài)改為SHARED狀態(tài)。亦即,在SHARED狀態(tài)下,本地內(nèi)存線的數(shù)據(jù)同時(shí)儲(chǔ)存在本地節(jié)點(diǎn)以及遠(yuǎn)程節(jié)點(diǎn)。
在SHARED狀態(tài)下,如路徑2所示,當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取無(wú)效(localread invalidate)或者本地?zé)o效(local invalidate)時(shí),代表本地節(jié)點(diǎn)要更改本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由SHARED狀態(tài)改為HOME狀態(tài)。在HOME狀態(tài)之下,此本地節(jié)點(diǎn)內(nèi)的處理器可以任意的存取此本地內(nèi)存線的數(shù)據(jù),并且此本地內(nèi)存線內(nèi)的數(shù)據(jù)僅存在于此本地節(jié)點(diǎn)內(nèi)。而原儲(chǔ)存于遠(yuǎn)程節(jié)點(diǎn)內(nèi)的本地內(nèi)存線的數(shù)據(jù)是舊的數(shù)據(jù)因此會(huì)變?yōu)闊o(wú)效。
在SHARED狀態(tài)下,如路徑4所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程釋放出此本地內(nèi)存線的數(shù)據(jù)(Remote rollout of shared copy)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)放棄擁有此本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)也必須由SHARED狀態(tài)改為HOME狀態(tài)。在HOME狀態(tài)之下,此本地節(jié)點(diǎn)內(nèi)的處理器可以任意的存取此本地內(nèi)存線的數(shù)據(jù),并且此本地內(nèi)存線內(nèi)的數(shù)據(jù)僅存在于此本地節(jié)點(diǎn)內(nèi)。
在SHARED狀態(tài)下,如路徑7所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程無(wú)效(Remoteinvalidate)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)要更改此本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由SHARED狀態(tài)改為GONE狀態(tài)。在GONE狀態(tài)之下,代表本地節(jié)點(diǎn)內(nèi)的本地內(nèi)存線的數(shù)據(jù)為舊的不正確的數(shù)據(jù),并且正確的更改的本地內(nèi)存線的數(shù)據(jù)現(xiàn)在儲(chǔ)存在遠(yuǎn)程節(jié)點(diǎn)。
在HOME狀態(tài)下,如路徑6所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程讀取無(wú)效(Remoteread invalidate)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)要讀取并更改此本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME狀態(tài)改為GONE狀態(tài)。在GONE狀態(tài)之下,代表本地節(jié)點(diǎn)內(nèi)的本地內(nèi)存線的數(shù)據(jù)為舊的不正確的數(shù)據(jù),并且正確的更改的本地內(nèi)存線的數(shù)據(jù)現(xiàn)在儲(chǔ)存在遠(yuǎn)程節(jié)點(diǎn)。
在GONE狀態(tài)下,如路徑8所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出釋出此本地內(nèi)存線的數(shù)據(jù)(Remote rollout of modified copy)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)要將修改過(guò)后的本地內(nèi)存線的數(shù)據(jù)釋回至本地節(jié)點(diǎn)。本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由GONE狀態(tài)改為HOME狀態(tài)。此時(shí),更改過(guò)后的本地內(nèi)存線的數(shù)據(jù)又重新回到本地節(jié)點(diǎn)。
在GONE狀態(tài)下,如路徑5所示,當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取(Local readline)或者本地讀取無(wú)效(Local read invalidate),代表本地節(jié)點(diǎn)要讀取此本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)或者讀取之后要修改。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由GONE狀態(tài)改為WASH狀態(tài)。此WASH狀態(tài)系代表本地內(nèi)存線的數(shù)據(jù)由遠(yuǎn)程節(jié)點(diǎn)回傳到本地節(jié)點(diǎn)的過(guò)渡狀態(tài)。
在WASH狀態(tài)下,如路徑9所示,當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取并完成本地內(nèi)存線的數(shù)據(jù)的接收(Completion of local read line),代表本地節(jié)點(diǎn)僅要讀取此本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)并不作修改。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由WASH狀態(tài)改為SHARE狀態(tài)。亦即,在SHARE狀態(tài)下,本地內(nèi)存線的數(shù)據(jù)同時(shí)儲(chǔ)存在本地節(jié)點(diǎn)以及遠(yuǎn)程節(jié)點(diǎn)。
在WASH狀態(tài)下,如路徑10所示,當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取無(wú)效并完成本地內(nèi)存線的數(shù)據(jù)的接收(Completion of local read invalidate)時(shí),代表本地內(nèi)存要讀取此本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)并作修改。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由WASH狀態(tài)改為HOME狀態(tài)。亦即,在HOME狀態(tài)下,本地內(nèi)存線的數(shù)據(jù)僅會(huì)儲(chǔ)存在本地節(jié)點(diǎn)。
以上的描述即為公知DSM系統(tǒng)節(jié)點(diǎn)之間共享本地內(nèi)存(local memory)的流程。故每一節(jié)點(diǎn)的DSM控制器必須維護(hù)一儲(chǔ)存區(qū)一致性對(duì)照表(memorycoherency directory),此對(duì)照表用來(lái)記錄本地內(nèi)存中每一本地內(nèi)存線(localmemorv line)的狀態(tài),當(dāng)遠(yuǎn)程節(jié)點(diǎn)欲讀取此本地節(jié)點(diǎn)的本地內(nèi)存時(shí),方可依據(jù)對(duì)照表中記錄的本地內(nèi)存線的狀態(tài),來(lái)決定讀取動(dòng)作如何進(jìn)行,以確保讀取正確數(shù)據(jù)。
然而,在公知的分布式共享內(nèi)存多處理器系統(tǒng)中,在HOME狀態(tài)下時(shí)。請(qǐng)參照?qǐng)D1,當(dāng)遠(yuǎn)程節(jié)點(diǎn)要讀取本地內(nèi)存線的數(shù)據(jù)時(shí),首先,本地節(jié)點(diǎn)100的DSM控制器140會(huì)在系統(tǒng)總線160發(fā)出一筆系統(tǒng)總線交易(System BusTransaction),用以詢問(wèn)此本地內(nèi)存線的數(shù)據(jù)實(shí)際的位置所在。
(I)假設(shè)此本地內(nèi)存線的數(shù)據(jù)系存在處理器110或120的高速緩存(cachememory)中,則處理器110或120會(huì)發(fā)出一快取命中(Hit)命令,并送出此本地內(nèi)存線的數(shù)據(jù)至系統(tǒng)總線160,并且由內(nèi)存控制芯片130寫回本地內(nèi)存150,同時(shí),DSM控制器140亦由系統(tǒng)總線160接收此本地內(nèi)存線的數(shù)據(jù)并且送至遠(yuǎn)程節(jié)點(diǎn)。而此時(shí)本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)為SHRAE狀態(tài)。
(II)假設(shè)此本地內(nèi)存線的數(shù)據(jù)系儲(chǔ)存于本地內(nèi)存150內(nèi),則處理器110或120不會(huì)發(fā)出快取命中(Hit)命令,此時(shí)代表此內(nèi)存數(shù)據(jù)線存在于本地內(nèi)存150內(nèi)。因此,DSM控制器140會(huì)利用內(nèi)部總線135要求內(nèi)存控制芯片130將本地內(nèi)存線的數(shù)據(jù)送至DSM控制器140,之后送至遠(yuǎn)程節(jié)點(diǎn)。而此時(shí)本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)為SHRAE狀態(tài)。
由于本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表內(nèi)記錄的HOME狀態(tài),在遠(yuǎn)程節(jié)點(diǎn)要求讀取本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)時(shí),沒(méi)有辦法得知此本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)的正確儲(chǔ)存位置(可能存在本地內(nèi)存內(nèi)、高速緩存內(nèi),或者二者)。故DSM控制器140必須發(fā)出一系統(tǒng)總線交易詢問(wèn)此本地內(nèi)存線的數(shù)據(jù)實(shí)際的位置所在。而在上述(II)狀況時(shí),由于本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)已經(jīng)存在本地內(nèi)存150內(nèi),而DSM控制器140仍需要發(fā)出一系統(tǒng)總線交易來(lái)確認(rèn)此本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)的儲(chǔ)存位置。因此,這個(gè)系統(tǒng)總線交易不僅會(huì)增加系統(tǒng)總線160的工作量,并且會(huì)延遲讀取本地內(nèi)存線數(shù)據(jù)的時(shí)間。
為達(dá)上述及其它目的,本發(fā)明提供一種分布式共享內(nèi)存系統(tǒng)節(jié)點(diǎn),包括至少一處理器;系統(tǒng)總線耦接至至少一處理器;內(nèi)存控制芯片,耦接至系統(tǒng)總線;本地內(nèi)存,耦接至內(nèi)存控制芯片,其中本地內(nèi)存區(qū)分為多個(gè)本地內(nèi)存線,以儲(chǔ)存多筆數(shù)據(jù);DSM控制器,耦接至系統(tǒng)總線;內(nèi)部總線耦接于DSM控制器與內(nèi)存控制芯片。其中,當(dāng)遠(yuǎn)程節(jié)點(diǎn)要求讀取本地內(nèi)存內(nèi)的特定本地內(nèi)存線時(shí),DSM控制器可判斷特定本地內(nèi)存線的最新數(shù)據(jù)是否位于本地內(nèi)存內(nèi),并在最新數(shù)據(jù)位于本地內(nèi)存內(nèi)時(shí),經(jīng)由內(nèi)部總線索取最新數(shù)據(jù)并送至遠(yuǎn)程節(jié)點(diǎn)。
為達(dá)上述及其它目的,本發(fā)明還提供一種遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法,用于第一遠(yuǎn)程節(jié)點(diǎn)向本地節(jié)點(diǎn)要求讀取本地內(nèi)存線,至少包括下列步驟當(dāng)該本地內(nèi)存線系在HOME-N或者SHARED狀態(tài)時(shí),直接向本地內(nèi)存接收本地內(nèi)存線的數(shù)據(jù)并送至第一遠(yuǎn)程節(jié)點(diǎn);當(dāng)該本地內(nèi)存線在GONE狀態(tài)時(shí),直接向第二遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存線的數(shù)據(jù)并送至第一遠(yuǎn)程節(jié)點(diǎn);以及,當(dāng)該本地內(nèi)存線系在HOME-M狀態(tài)時(shí),則在系統(tǒng)總線上發(fā)起一交易用以讀取該本地內(nèi)存線的數(shù)據(jù),并由系統(tǒng)總線接收本地內(nèi)存線的數(shù)據(jù)并送至該第一遠(yuǎn)程節(jié)點(diǎn)。
為達(dá)上述及其它目的,本發(fā)明還提供一種遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)裝置,用于第一遠(yuǎn)程節(jié)點(diǎn)向本地節(jié)點(diǎn)要求讀取本地內(nèi)存線,其特征在于,該維護(hù)裝置至少包括該本地內(nèi)存線HOME狀態(tài)可分為HOME-N、HOME-M兩個(gè)狀態(tài),在HOME-N或SHARED狀態(tài)時(shí),直接向本地內(nèi)存接收本地內(nèi)存線的數(shù)據(jù)并送至第一遠(yuǎn)程節(jié)點(diǎn);該本地內(nèi)存線在GONE狀態(tài)時(shí),直接向第二遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存線的數(shù)據(jù)并送至第一遠(yuǎn)程節(jié)點(diǎn);當(dāng)該本地內(nèi)存線在HOME-M狀態(tài)時(shí),在系統(tǒng)總線上發(fā)起一交易用以讀取該本地內(nèi)存線的數(shù)據(jù),并由系統(tǒng)總線接收本地內(nèi)存線的數(shù)據(jù)并送至該第一遠(yuǎn)程節(jié)點(diǎn)。
由上述的說(shuō)明中可知,應(yīng)用本發(fā)明所提供的分布式共享內(nèi)存系統(tǒng)中遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法及其應(yīng)用裝置,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出本地內(nèi)存線的讀取請(qǐng)求時(shí),DSM控制器可得知最新數(shù)據(jù)的儲(chǔ)存位置,并在最短的時(shí)間之內(nèi)將最新數(shù)據(jù)響應(yīng)至遠(yuǎn)程節(jié)點(diǎn),而無(wú)須再發(fā)出系統(tǒng)總線交易,以確認(rèn)其實(shí)際儲(chǔ)存位置,故可減少共享內(nèi)存間的數(shù)據(jù)讀取延遲。
為讓本發(fā)明的上述和其它目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉一較佳實(shí)施例,并配合附圖,作詳細(xì)說(shuō)明如下。
HOME-M代表沒(méi)有任何遠(yuǎn)程節(jié)點(diǎn)來(lái)讀取此本地內(nèi)存線,且最新的本地內(nèi)存線的數(shù)據(jù)不在本地內(nèi)存內(nèi),而是在處理器的高速緩存內(nèi)。
接下來(lái)針對(duì)一個(gè)本地內(nèi)存線數(shù)據(jù)的變化并配合這些狀態(tài)的轉(zhuǎn)換作一說(shuō)明。在初始狀態(tài)時(shí),本地節(jié)點(diǎn)(local node)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表中對(duì)應(yīng)于此本地內(nèi)存線的狀態(tài)為HOME-N狀態(tài)。在HOME-N狀態(tài)之下,此本地節(jié)點(diǎn)內(nèi)的本地內(nèi)存擁有最新的本地內(nèi)存線的數(shù)據(jù)。
在HOME-N狀態(tài)之下,如路徑1所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程讀取(Remoteread line),代表遠(yuǎn)程節(jié)點(diǎn)要讀取本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME-N狀態(tài)改為SHARED狀態(tài)。亦即,而在HOME-N狀態(tài)下,DSM控制器可直接經(jīng)由內(nèi)部總線來(lái)向內(nèi)存控制芯片要求本地內(nèi)存線的數(shù)據(jù)并送至遠(yuǎn)程節(jié)點(diǎn)。因此,DSM控制器并不用發(fā)出系統(tǒng)總線交易。再者,在SHARED狀態(tài)下,本地內(nèi)存線的數(shù)據(jù)同時(shí)儲(chǔ)存在本地節(jié)點(diǎn)以及遠(yuǎn)程節(jié)點(diǎn)。
在HOME-N狀態(tài)之下,如路徑2所示,當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取無(wú)效(Localread invalidate)或者本地?zé)o效(Local invalidate)時(shí),代表本地節(jié)點(diǎn)的處理器要更改本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME-N狀態(tài)改為HOME-M狀態(tài)。在HOME-M狀態(tài)之下,此本地節(jié)點(diǎn)內(nèi)的處理器可以更改此本地內(nèi)存線的數(shù)據(jù),并儲(chǔ)存在高速緩存內(nèi)。
在HOME-N狀態(tài)之下,如路徑6所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程讀取無(wú)效(Remote read invalidate)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)要讀取并更改此本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME-N狀態(tài)改為GONE狀態(tài)。在GONE狀態(tài)之下,代表本地節(jié)點(diǎn)內(nèi)的本地內(nèi)存線的數(shù)據(jù)為舊的不正確的數(shù)據(jù),并且最新的本地內(nèi)存線的數(shù)據(jù)現(xiàn)在儲(chǔ)存在遠(yuǎn)程節(jié)點(diǎn)。而在HOME-N狀態(tài)下,DSM控制器可直接經(jīng)由內(nèi)部總線來(lái)向內(nèi)存控制芯片要求本地內(nèi)存線的數(shù)據(jù)并送至遠(yuǎn)程節(jié)點(diǎn)供的修改。因此,DSM控制器并不用發(fā)出系統(tǒng)總線交易。
在HOME-M狀態(tài)之下,如路徑1所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程讀取(Remoteread line),代表遠(yuǎn)程節(jié)點(diǎn)要讀取本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME-M狀態(tài)改為SHARED狀態(tài)。亦即,在SHARED狀態(tài)下,本地內(nèi)存線的數(shù)據(jù)同時(shí)儲(chǔ)存在本地節(jié)點(diǎn)以及遠(yuǎn)程節(jié)點(diǎn)。而在HOME-M狀態(tài)下,DSM控制器必須發(fā)出系統(tǒng)總線交易使得處理器發(fā)出快取命中(Hit)命令并提供最新的本地內(nèi)存線的數(shù)據(jù)至系統(tǒng)總線,用以儲(chǔ)存至本地內(nèi)存,同時(shí)DSM控制器亦會(huì)接收并送至遠(yuǎn)程節(jié)點(diǎn)。
在HOME-M狀態(tài)之下,如路徑6所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程讀取無(wú)效(Remote read invalidate)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)要讀取并更改此本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME-M狀態(tài)改為GONE狀態(tài)。在GONE狀態(tài)之下,代表本地節(jié)點(diǎn)內(nèi)的本地內(nèi)存線的數(shù)據(jù)為舊的不正確的數(shù)據(jù),并且最新的本地內(nèi)存線的數(shù)據(jù)現(xiàn)在儲(chǔ)存在遠(yuǎn)程節(jié)點(diǎn)。而在HOME-M狀態(tài)下,DSM控制器必須發(fā)出系統(tǒng)總線交易使得處理器發(fā)出快去命中(Hit)命令并提供最新的本地內(nèi)存線的數(shù)據(jù)至DSM控制器并送至遠(yuǎn)程節(jié)點(diǎn)供之更改。
在HOME-M狀態(tài)之下,如路徑3所示,當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取(Local readline)時(shí),代表本地內(nèi)存線的數(shù)據(jù)由高速緩存寫回本地內(nèi)存。本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由HOME-M狀態(tài)改為HOME-N狀態(tài)。在HOME-N狀態(tài)之下,此時(shí),本地節(jié)點(diǎn)內(nèi)的本地內(nèi)存擁有最新的本地內(nèi)存線的數(shù)據(jù)。
在SHARED狀態(tài)下,如路徑2所示,當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取無(wú)效(Localread invalidate)或者本地?zé)o效(Local invalidate)時(shí),代表本地節(jié)點(diǎn)要更改本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由SHARED狀態(tài)改為HOME-M狀態(tài)。在HOME-M狀態(tài)下,此本地節(jié)點(diǎn)內(nèi)的處理器可以更改此本地內(nèi)存線的數(shù)據(jù),并儲(chǔ)存在高速緩存內(nèi)。
在SHARED狀態(tài)下,如路徑4所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出遠(yuǎn)程釋放出此本地內(nèi)存線的數(shù)據(jù)(Remote rollout of shared copy)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)放棄擁有此本地內(nèi)存線的數(shù)據(jù)。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)也必須由SHARED狀態(tài)改為HOME-N狀態(tài)。在此狀態(tài)之下,本地內(nèi)存線的數(shù)據(jù)系儲(chǔ)存在本地節(jié)點(diǎn)的本地內(nèi)存內(nèi)。
在GONE狀態(tài)下,如路徑8所示,當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出釋出此本地內(nèi)存線的數(shù)據(jù)(remote rollout of modified copy)時(shí),代表遠(yuǎn)程節(jié)點(diǎn)要將修改過(guò)后的本地內(nèi)存線的數(shù)據(jù)釋回至本地節(jié)點(diǎn)。本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由GONE狀態(tài)改為HOME-N狀態(tài)。修改過(guò)后的本地內(nèi)存線的數(shù)據(jù)又重新回到本地節(jié)點(diǎn)的本地內(nèi)存內(nèi)。
在WASH狀態(tài)下,如路徑10所示當(dāng)本地節(jié)點(diǎn)發(fā)出本地讀取無(wú)效并完成本地內(nèi)存線的數(shù)據(jù)的接收(Completion of local read invalidate)時(shí),代表本地內(nèi)存要讀取此本地內(nèi)存數(shù)據(jù)線的數(shù)據(jù)并作修改。此時(shí),本地節(jié)點(diǎn)內(nèi)的儲(chǔ)存區(qū)一致性對(duì)照表會(huì)將此本地內(nèi)存線的狀態(tài)由WASH狀態(tài)改為HOME-M狀態(tài)。亦即,在HOME-M狀態(tài)下,本地內(nèi)存線的數(shù)據(jù)會(huì)被處理器更改并儲(chǔ)存于高速緩存內(nèi)。
上述為本發(fā)明將公知HOME狀態(tài)改為HOME-M狀態(tài)以及HOME-N狀態(tài)之后,這二個(gè)新的狀態(tài)與SHARED狀態(tài)、GONE狀態(tài)、以及WASH狀態(tài)之間的關(guān)系。在HOME-N狀態(tài)時(shí),不論要跳至SHARED狀態(tài)或者GONE狀態(tài),DSM控制器可直接要求內(nèi)存控制芯片經(jīng)由內(nèi)部總線直接提供本地內(nèi)存線的數(shù)據(jù),并不需要再額外的發(fā)出系統(tǒng)總線交易來(lái)詢問(wèn)此本地內(nèi)存線的數(shù)據(jù)的儲(chǔ)存位置,因此可降低系統(tǒng)總線的使用率,提升本地節(jié)點(diǎn)的工作效能。至于SHARED狀態(tài)、GONE狀態(tài)、以及WASH狀態(tài)之間的轉(zhuǎn)換關(guān)系,則與公知相同不再贅述。
上述為節(jié)點(diǎn)中的儲(chǔ)存區(qū)一致性對(duì)照表狀態(tài)變化維護(hù)說(shuō)明,配合參考此儲(chǔ)存區(qū)一致性對(duì)照表,則DSM控制器可發(fā)展出如圖4所示遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法。首先,接收到來(lái)自遠(yuǎn)程節(jié)點(diǎn)發(fā)出的本地內(nèi)存線的讀取請(qǐng)求(S300)。然后判斷對(duì)照表中的本地內(nèi)存線狀態(tài)是否為HOME-N狀態(tài)或者SHARED狀態(tài)(S305)。
當(dāng)在HOME-N狀態(tài)或者SHARED狀態(tài)時(shí),代表本地內(nèi)存線的數(shù)據(jù)正儲(chǔ)存于本地內(nèi)存中,因此,直接經(jīng)由內(nèi)部總線向本地內(nèi)存要求此本地內(nèi)存線的數(shù)據(jù)(S310)并響應(yīng)遠(yuǎn)程節(jié)點(diǎn)此本地內(nèi)存線的數(shù)據(jù)(S315)。
當(dāng)現(xiàn)在并不在HOME-N狀態(tài)或者SHARED狀態(tài)時(shí),則判斷對(duì)照表中的本地內(nèi)存線狀態(tài)是否為GONE狀態(tài)(S315)。當(dāng)在GONE狀態(tài)時(shí),代表本地內(nèi)存線的數(shù)據(jù)正儲(chǔ)存于其它遠(yuǎn)程節(jié)點(diǎn)中,因此,直接向擁有本地內(nèi)存線的數(shù)據(jù)的遠(yuǎn)程節(jié)點(diǎn)讀取更改后的此本地內(nèi)存線的數(shù)據(jù)并存回本地內(nèi)存(S325),并響應(yīng)遠(yuǎn)程節(jié)點(diǎn)此本地內(nèi)存線的數(shù)據(jù)(S315)。
當(dāng)現(xiàn)在并不在GONE狀態(tài)時(shí),則判斷對(duì)照表中的本地內(nèi)存線狀態(tài)是否為HOME-M狀態(tài)(S330)。當(dāng)在HOME-M狀態(tài)時(shí),代表本地內(nèi)存線的數(shù)據(jù)正儲(chǔ)存于處理器的高速緩存內(nèi),因此,直接發(fā)出系統(tǒng)總線交易,當(dāng)處理器響應(yīng)此本地內(nèi)存線的數(shù)據(jù)回本地內(nèi)存時(shí),擷取此本地內(nèi)存線的數(shù)據(jù)(S335),并響應(yīng)遠(yuǎn)程節(jié)點(diǎn)此本地內(nèi)存線的數(shù)據(jù)(S315)。
當(dāng)現(xiàn)在并不在HOME-M狀態(tài)時(shí),則判斷對(duì)照表中的本地內(nèi)存線狀態(tài)為WASH狀態(tài)(S340)。由于WASH狀態(tài)代表被更改過(guò)的本地內(nèi)存線的數(shù)據(jù)由遠(yuǎn)程節(jié)點(diǎn)回傳到本地節(jié)點(diǎn)的過(guò)渡狀態(tài)。因此回到S305步驟,重新判斷其變更的狀態(tài),再依據(jù)其狀態(tài)決定進(jìn)行的讀取動(dòng)作程序。
綜上所述,本發(fā)明至少具有以下的優(yōu)點(diǎn)1.當(dāng)遠(yuǎn)程節(jié)點(diǎn)欲讀取本地內(nèi)存時(shí),在MOME-N的狀態(tài)下無(wú)須重復(fù)經(jīng)由系統(tǒng)總線發(fā)出確認(rèn)本地內(nèi)存線的數(shù)據(jù)位置的系統(tǒng)總線交易,可節(jié)省系統(tǒng)總線的負(fù)擔(dān),進(jìn)而增進(jìn)其效能。
2.可降低遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存的讀取延遲。
雖然本發(fā)明已以一較佳實(shí)施例公開(kāi)如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種等效變動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍以權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法,用于一遠(yuǎn)程節(jié)點(diǎn)向一本地節(jié)點(diǎn)要求讀取一本地內(nèi)存線,其特征在于,所述方法至少包括下列步驟判斷該本地內(nèi)存線的一最新數(shù)據(jù)是否位于該本地節(jié)點(diǎn)的一本地內(nèi)存內(nèi);以及當(dāng)該最新數(shù)據(jù)位于該本地內(nèi)存內(nèi)時(shí),經(jīng)由一內(nèi)部總線索取該最新數(shù)據(jù)并送至該遠(yuǎn)程節(jié)點(diǎn)。
2.如權(quán)利要求1所述的遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法,其特征在于,所述方法還包括下列步驟當(dāng)該最新數(shù)據(jù)不位于該本地內(nèi)存內(nèi)時(shí),判斷該最新數(shù)據(jù)是否位于該本地節(jié)點(diǎn)內(nèi);以及當(dāng)該最新數(shù)據(jù)位于該本地節(jié)點(diǎn)內(nèi)時(shí),經(jīng)由一系統(tǒng)總線發(fā)出一系統(tǒng)總線交易來(lái)索取該最新數(shù)據(jù)并送至該遠(yuǎn)程節(jié)點(diǎn)。
3.如權(quán)利要求1所述的遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法,其特征在于,判斷該最新數(shù)據(jù)的位置由維持儲(chǔ)存區(qū)一致性對(duì)照表來(lái)決定。
4.一種分布式共享內(nèi)存系統(tǒng)節(jié)點(diǎn),其特征在于,包括至少一處理器;一系統(tǒng)總線耦接至該至少一處理器;一內(nèi)存控制芯片,耦接至該系統(tǒng)總線;一本地內(nèi)存,耦接至該內(nèi)存控制芯片,其中該本地內(nèi)存區(qū)分為多個(gè)本地內(nèi)存線,以儲(chǔ)存數(shù)筆數(shù)據(jù);一DSM控制器,耦接至該系統(tǒng)總線;一內(nèi)部總線耦接于該DSM控制器與該內(nèi)存控制芯片;其中,當(dāng)一遠(yuǎn)程節(jié)點(diǎn)要求讀取該本地內(nèi)存內(nèi)的一特定本地內(nèi)存線時(shí),該DSM控制器可判斷該特定本地內(nèi)存線的一最新數(shù)據(jù)是否位于該本地內(nèi)存內(nèi),并在該最新數(shù)據(jù)位于該本地內(nèi)存內(nèi)時(shí),經(jīng)由該內(nèi)部總線索取該最新數(shù)據(jù)并送至該遠(yuǎn)程節(jié)點(diǎn)。
5.如權(quán)利要求4所述的分布式共享內(nèi)存系統(tǒng)節(jié)點(diǎn),其特征在于,該DSM控制器判斷出該最新數(shù)據(jù)不位于該本地內(nèi)存內(nèi)時(shí),可再判斷該最新數(shù)據(jù)是否位于該至少一處理器內(nèi),并在該最新數(shù)據(jù)位于該至少一處理器內(nèi)時(shí),經(jīng)由該系統(tǒng)總線發(fā)出一系統(tǒng)總線交易來(lái)索取該最新數(shù)據(jù)并送至該遠(yuǎn)程節(jié)點(diǎn)。
6.如權(quán)利要求4所述的分布式共享內(nèi)存系統(tǒng)節(jié)點(diǎn),其特征在于,該DSM控制器可維護(hù)一儲(chǔ)存區(qū)一致性對(duì)照表用以判斷該最新數(shù)據(jù)的位置。
7.一種遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法,用于一第一遠(yuǎn)程節(jié)點(diǎn)向一本地節(jié)點(diǎn)要求讀取一本地內(nèi)存線,其特征在于,所述方法至少包括下列步驟當(dāng)該本地內(nèi)存線在一HOME-N以及一SHARED狀態(tài)其中之一時(shí),直接由一本地內(nèi)存接收該本地內(nèi)存線的數(shù)據(jù)并送至該第一遠(yuǎn)程節(jié)點(diǎn);當(dāng)該本地內(nèi)存線在一GONE狀態(tài)時(shí),直接向一第二遠(yuǎn)程節(jié)點(diǎn)讀取該本地內(nèi)存線的數(shù)據(jù)并送至該第一遠(yuǎn)程節(jié)點(diǎn);以及當(dāng)該本地內(nèi)存線在一HOME-M狀態(tài)時(shí),在一系統(tǒng)總線上發(fā)起一交易用以讀取該本地內(nèi)存線的數(shù)據(jù),并由該系統(tǒng)總線接收該本地內(nèi)存線的數(shù)據(jù)并送至該第一遠(yuǎn)程節(jié)點(diǎn)。
8.如權(quán)利要求7所述的遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法,其特征在于,該HAME-N、該HOME-M、該SHARED以及該GONE狀態(tài)儲(chǔ)存在一儲(chǔ)存區(qū)一致性對(duì)照表。
9.一種遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)裝置,用于第一遠(yuǎn)程節(jié)點(diǎn)向本地節(jié)點(diǎn)要求讀取本地內(nèi)存線,其特征在于,該本地內(nèi)存線HOME狀態(tài)可分為HOME-N、HOME-M兩個(gè)狀態(tài),在HOME-N或SHARED狀態(tài)時(shí),直接向本地內(nèi)存接收本地內(nèi)存線的數(shù)據(jù)并送至第一遠(yuǎn)程節(jié)點(diǎn);該本地內(nèi)存線在GONE狀態(tài)時(shí),直接向第二遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存線的數(shù)據(jù)并送至第一遠(yuǎn)程節(jié)點(diǎn);當(dāng)該本地內(nèi)存線在HOME-M狀態(tài)時(shí),在系統(tǒng)總線上發(fā)起一交易用以讀取該本地內(nèi)存線的數(shù)據(jù),并由系統(tǒng)總線接收本地內(nèi)存線的數(shù)據(jù)并送至該第一遠(yuǎn)程節(jié)點(diǎn)。
全文摘要
本發(fā)明涉及一種分布式共享內(nèi)存系統(tǒng)中遠(yuǎn)程節(jié)點(diǎn)讀取本地內(nèi)存維護(hù)方法及其應(yīng)用裝置,本發(fā)明將原分布式共享內(nèi)存系統(tǒng)節(jié)點(diǎn)(DSM Node)中維護(hù)的儲(chǔ)存區(qū)一致性對(duì)照表(memory coherency directory)變更其區(qū)分種類,并由HOME狀態(tài),變更HOME-N狀態(tài)以及HOME-M狀態(tài)。當(dāng)遠(yuǎn)程節(jié)點(diǎn)發(fā)出本地內(nèi)存線的讀取請(qǐng)求時(shí),DSM控制器可得知由儲(chǔ)存區(qū)一致性對(duì)照表得知此本地內(nèi)存線的最新數(shù)據(jù)的儲(chǔ)存位置,并在最短的時(shí)間內(nèi)將最新數(shù)據(jù)響應(yīng)至遠(yuǎn)程節(jié)點(diǎn),而無(wú)須再發(fā)出系統(tǒng)總線交易,以確認(rèn)其實(shí)際儲(chǔ)存位置,故可減少共享內(nèi)存間的數(shù)據(jù)讀取延遲,以增進(jìn)系統(tǒng)效能。
文檔編號(hào)H04L12/40GK1391176SQ0214032
公開(kāi)日2003年1月15日 申請(qǐng)日期2002年7月1日 優(yōu)先權(quán)日2002年4月9日
發(fā)明者陳維龍, 賴瑾, 曾紋郁 申請(qǐng)人:威盛電子股份有限公司