專(zhuān)利名稱:寬帶網(wǎng)絡(luò)計(jì)算機(jī)體系結(jié)構(gòu)的存儲(chǔ)器保護(hù)系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)處理器和計(jì)算機(jī)網(wǎng)絡(luò)的體系結(jié)構(gòu),特別涉及寬帶環(huán)境中計(jì)算機(jī)處理器和計(jì)算機(jī)網(wǎng)絡(luò)的體系結(jié)構(gòu)。本發(fā)明還涉及這種體系結(jié)構(gòu)的編程模型。
背景技術(shù):
對(duì)于當(dāng)前計(jì)算機(jī)網(wǎng)絡(luò),例如辦公室網(wǎng)絡(luò)中使用的局域網(wǎng)(LAN),以及象Internet等這樣的全球網(wǎng)絡(luò),其計(jì)算機(jī)和計(jì)算設(shè)備主要是為單機(jī)計(jì)算設(shè)計(jì)的。通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)共享數(shù)據(jù)和應(yīng)用程序不是這些計(jì)算機(jī)和計(jì)算設(shè)備的主要設(shè)計(jì)目的。通常還使用各種類(lèi)型的、由不同生產(chǎn)商生產(chǎn)的處理器來(lái)設(shè)計(jì)這些計(jì)算機(jī)和計(jì)算設(shè)備,這些生產(chǎn)商例如是摩托羅拉、英特爾、德州儀器,索尼以及其它一些公司。這些處理器中的每一個(gè)都具有其獨(dú)特的指令集和指令集體系結(jié)構(gòu)(ISA),即,具有其獨(dú)特的匯編語(yǔ)言指令集,和用于執(zhí)行這些指令的基本計(jì)算單元和存儲(chǔ)單元的結(jié)構(gòu)。因此,程序員需要理解每個(gè)處理器的指令集和ISA,以便寫(xiě)出針對(duì)這些處理器的應(yīng)用程序。當(dāng)前計(jì)算機(jī)網(wǎng)絡(luò)上計(jì)算機(jī)和計(jì)算設(shè)備的這種異構(gòu)組合使得數(shù)據(jù)及應(yīng)用程序的處理和共享復(fù)雜化。而且,經(jīng)常需要同一應(yīng)用程序的多個(gè)版本,以適應(yīng)這種異構(gòu)環(huán)境。
連接到全球網(wǎng)絡(luò),尤其是連接到Internet的計(jì)算機(jī)和計(jì)算設(shè)備的種類(lèi)是非常廣泛的。除個(gè)人計(jì)算機(jī)(PC)和服務(wù)器外,這些計(jì)算設(shè)備還包括蜂窩電話、移動(dòng)計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、機(jī)頂盒、數(shù)字電視以及許多其它設(shè)備。在如此多樣的計(jì)算機(jī)和計(jì)算設(shè)備之間共享數(shù)據(jù)和應(yīng)用程序帶來(lái)了相當(dāng)大的問(wèn)題。
為克服這些問(wèn)題,已使用了很多技術(shù)。尤其是,這些技術(shù)包括高級(jí)的接口和復(fù)雜的編程技術(shù)。這些解決方案的實(shí)現(xiàn)通常需要處理能力有相當(dāng)大的增加。它們還經(jīng)常大大增加在網(wǎng)絡(luò)上處理應(yīng)用程序和傳輸數(shù)據(jù)所需的時(shí)間。
通常,通過(guò)Internet從相應(yīng)應(yīng)用程序分別發(fā)送數(shù)據(jù)。這個(gè)解決方案不必發(fā)送應(yīng)用程序和與該應(yīng)用程序?qū)?yīng)的每組發(fā)送數(shù)據(jù)。雖然該方案使得帶寬需求達(dá)到最小,但它還是經(jīng)常引起用戶間的干擾(frustration)。可能在客戶端計(jì)算機(jī)上得不到用于所發(fā)送數(shù)據(jù)的正確應(yīng)用程序或者最新應(yīng)用程序。該方案還需要針對(duì)網(wǎng)絡(luò)上處理器的不同ISA和指令集的多樣性編寫(xiě)每個(gè)應(yīng)用程序的多個(gè)版本。
Java模型試圖解決這個(gè)問(wèn)題。該模型使用服從嚴(yán)格安全協(xié)議的小應(yīng)用程序(“applet”)。applet由服務(wù)器通過(guò)網(wǎng)絡(luò)發(fā)送,以便在客戶端計(jì)算機(jī)(“client”)上運(yùn)行。為避免必須向使用不同ISA的客戶端發(fā)送相同applet的不同版本,所有applet均在客戶端的Java虛擬機(jī)上運(yùn)行。Java虛擬機(jī)是模擬具有Java ISA和Java指令集的計(jì)算機(jī)的軟件。然而,該軟件運(yùn)行在客戶端的ISA和客戶端的指令集上。為客戶端的每個(gè)不同ISA和指令集提供一個(gè)版本的Java虛擬機(jī)。這樣,就不需要每個(gè)applet的不同版本的多樣性。每個(gè)客戶端僅下載針對(duì)其特定ISA和指令集的正確Java虛擬機(jī),以運(yùn)行所有Java applet。
雖然對(duì)必須為每個(gè)不同ISA和指令集編寫(xiě)應(yīng)用程序的不同版本的問(wèn)題提供了解決方案,然而Java處理模型在客戶端計(jì)算機(jī)上仍需要一個(gè)附加軟件層。這個(gè)附加軟件層極大地降低了處理器的處理速度。這種速度降低對(duì)于實(shí)時(shí)、多媒體應(yīng)用尤其明顯。下載的Javaapplet還可能含有病毒、處理故障等。這些病毒和故障會(huì)破壞客戶端的數(shù)據(jù)庫(kù),并造成其它損壞。雖然Java模型中使用的安全協(xié)議試圖通過(guò)實(shí)現(xiàn)軟件“沙箱(sandbox)”來(lái)解決這個(gè)問(wèn)題(“沙箱”是客戶端存儲(chǔ)器中的一個(gè)空間,如果超出此空間,則Java applet不能寫(xiě)數(shù)據(jù)),但是這個(gè)軟件驅(qū)動(dòng)的安全模型在其執(zhí)行過(guò)程中經(jīng)常是不安全的,并且需要更多的處理。
實(shí)時(shí)、多媒體、網(wǎng)絡(luò)應(yīng)用變得越來(lái)越重要。這些網(wǎng)絡(luò)應(yīng)用需要極快的處理速度。將來(lái),這類(lèi)應(yīng)用每秒鐘可能需要若干千兆位的數(shù)據(jù)。目前的網(wǎng)絡(luò)體系結(jié)構(gòu),特別是Internet的體系結(jié)構(gòu),以及當(dāng)前在例如Java模型中實(shí)現(xiàn)的編程模型要達(dá)到這樣的處理速度是極其困難的。
因此,需要一種新的計(jì)算機(jī)體系結(jié)構(gòu)、一種新的計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)和一種新的編程模型。這種新的體系結(jié)構(gòu)和編程模型應(yīng)當(dāng)解決在各種網(wǎng)絡(luò)成員中間共享數(shù)據(jù)和應(yīng)用程序的問(wèn)題,而無(wú)須增加額外的計(jì)算負(fù)擔(dān)。這種新的計(jì)算機(jī)體系結(jié)構(gòu)和編程模型還應(yīng)當(dāng)解決在網(wǎng)絡(luò)成員中間共享應(yīng)用程序和數(shù)據(jù)所固有的安全問(wèn)題。
發(fā)明內(nèi)容
一方面,本發(fā)明提供一種用于計(jì)算機(jī)、計(jì)算設(shè)備和計(jì)算機(jī)網(wǎng)絡(luò)的新型體系結(jié)構(gòu)。另一方面,本發(fā)明提供一種用于這些計(jì)算機(jī)、計(jì)算設(shè)備和計(jì)算機(jī)網(wǎng)絡(luò)的新型編程模型。
根據(jù)本發(fā)明,計(jì)算機(jī)網(wǎng)絡(luò)的所有成員,即網(wǎng)絡(luò)中所有計(jì)算機(jī)和計(jì)算設(shè)備,都用公用計(jì)算模塊構(gòu)建。這種公用計(jì)算模塊具有一致的結(jié)構(gòu),并且最好使用相同的ISA。網(wǎng)絡(luò)的成員可以是例如客戶機(jī)、服務(wù)器、PC、移動(dòng)計(jì)算機(jī)、游戲機(jī)、PDA、機(jī)頂盒、電器、數(shù)字電視、以及其它使用計(jì)算機(jī)處理器的設(shè)備。一致的模塊化結(jié)構(gòu)允許網(wǎng)絡(luò)成員有效、高速地處理應(yīng)用程序和數(shù)據(jù),并允許在網(wǎng)絡(luò)上快速傳輸應(yīng)用程序和數(shù)據(jù)。這種結(jié)構(gòu)還簡(jiǎn)化了具有各種規(guī)模和處理能力的網(wǎng)絡(luò)成員的構(gòu)建,以及這些成員處理的應(yīng)用程序的準(zhǔn)備。另外,根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一個(gè)計(jì)算機(jī)網(wǎng)絡(luò),該計(jì)算機(jī)網(wǎng)絡(luò)包含連接到所述網(wǎng)絡(luò)的多個(gè)處理器,每個(gè)所述處理器包含具有相同指令集體系結(jié)構(gòu)的多個(gè)第一處理單元,以及用于控制所述第一處理單元的第二處理單元,所述第一處理單元可處理通過(guò)所述網(wǎng)絡(luò)傳輸?shù)能浖卧?,每個(gè)所述軟件單元包含與所述指令集體系結(jié)構(gòu)兼容的程序,與所述程序相關(guān)的數(shù)據(jù),以及在通過(guò)所述網(wǎng)絡(luò)傳輸?shù)娜克鲕浖卧形ㄒ粯?biāo)識(shí)所述軟件單元的標(biāo)識(shí)符。標(biāo)識(shí)符最好是在通過(guò)所述網(wǎng)絡(luò)傳輸?shù)娜克鲕浖卧形ㄒ粯?biāo)識(shí)所述軟件單元的標(biāo)識(shí)號(hào)。
另一方面,本發(fā)明提供了一種用于通過(guò)網(wǎng)絡(luò)傳輸數(shù)據(jù)和應(yīng)用程序,以及用于在網(wǎng)絡(luò)成員中間處理數(shù)據(jù)和應(yīng)用程序的新型編程模型。該編程模型使用通過(guò)網(wǎng)絡(luò)傳輸?shù)?、可由任何網(wǎng)絡(luò)成員處理的軟件單元。每個(gè)軟件單元均具有相同的結(jié)構(gòu),并可包含應(yīng)用程序和數(shù)據(jù)。由于模塊化計(jì)算機(jī)體系結(jié)構(gòu)提供的高速處理和傳輸速度,這些單元可以被快速處理。應(yīng)用程序代碼最好基于相同的公用指令集和ISA。每個(gè)軟件單元最好包含全局標(biāo)識(shí)(global ID),和說(shuō)明該單元的處理所需計(jì)算資源數(shù)量的信息。由于所有計(jì)算資源具有相同的基本結(jié)構(gòu),并使用相同的ISA,所以執(zhí)行這個(gè)處理的特定資源可以位于網(wǎng)絡(luò)上的任何地方,并且可以動(dòng)態(tài)分配。
基本的處理模塊是處理器元件(PE)。PE最好包括處理單元(PU),直接存儲(chǔ)器存取控制器(DMAC),以及多個(gè)附連處理單元(APU)。在優(yōu)選實(shí)施例中,PE包含八個(gè)APU。PU和APU與最好具有交叉(cross-bar)體系結(jié)構(gòu)的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)交互。PU計(jì)劃和編排APU對(duì)數(shù)據(jù)和應(yīng)用程序的處理。APU以并行和獨(dú)立的方式執(zhí)行這種處理。DMAC控制PU和APU對(duì)共享DRAM中存儲(chǔ)的數(shù)據(jù)和應(yīng)用程序的存取。
根據(jù)這種模塊化的結(jié)構(gòu),網(wǎng)絡(luò)成員使用的PE的數(shù)目取決于該成員所需要的處理能力。例如,服務(wù)器可能使用四個(gè)PE,工作站可能使用兩個(gè)PE,PDA可能使用一個(gè)PE。PE中被分配用來(lái)處理特定軟件單元的APU的數(shù)目取決于單元中的程序和數(shù)據(jù)的復(fù)雜度和量級(jí)。
在優(yōu)選實(shí)施例中,多個(gè)PE與共享DRAM相關(guān)。最好將DRAM分隔成多個(gè)區(qū)(section),并將這些區(qū)中的每一個(gè)分隔成多個(gè)存儲(chǔ)體(memory bank)。在一個(gè)特別的優(yōu)選實(shí)施例中,DRAM包含64個(gè)存儲(chǔ)體,并且每個(gè)存儲(chǔ)體具有一兆字節(jié)的存儲(chǔ)容量。DRAM的每個(gè)區(qū)最好由存儲(chǔ)體控制器控制,并且PE的每個(gè)DMAC最好訪問(wèn)每個(gè)存儲(chǔ)體控制器。因此,該實(shí)施例中每個(gè)PE的DMAC可訪問(wèn)共享DRAM的任何部分。
另一方面,本發(fā)明提供使APU從共享DRAM讀取數(shù)據(jù),以及向其寫(xiě)入數(shù)據(jù)的同步系統(tǒng)和方法。該系統(tǒng)避免了共享DRAM的多個(gè)APU和多個(gè)PE中間的沖突。根據(jù)該系統(tǒng)和方法,將DRAM的一個(gè)區(qū)域指定為用于存儲(chǔ)多個(gè)全空位。這些全空位中的每一個(gè)對(duì)應(yīng)于DRAM的一個(gè)指定區(qū)域。將同步系統(tǒng)集成到DRAM的硬件中,因此避免了用軟件實(shí)現(xiàn)的數(shù)據(jù)同步模式的計(jì)算開(kāi)銷(xiāo)。
本發(fā)明還在DRAM中實(shí)現(xiàn)沙箱以提供安全性,從而防止一個(gè)APU處理的程序的數(shù)據(jù)被另一個(gè)APU處理的程序的數(shù)據(jù)破壞。每個(gè)沙箱定義了共享DRAM中的一個(gè)區(qū)域,如果超出此區(qū)域,特定APU或APU組不能讀數(shù)據(jù)或?qū)憯?shù)據(jù)。
另一方面,本發(fā)明提供用于PU向APU發(fā)出命令以啟動(dòng)APU對(duì)應(yīng)用程序和數(shù)據(jù)的處理的系統(tǒng)和方法。這些命令被稱為APU遠(yuǎn)程過(guò)程調(diào)用(ARPC),使PU能夠編排和協(xié)調(diào)APU對(duì)應(yīng)用程序和數(shù)據(jù)的并行處理,而無(wú)須APU充當(dāng)協(xié)處理器的角色。
在另一方面,本發(fā)明提供用于建立專(zhuān)用流水線結(jié)構(gòu)以處理流數(shù)據(jù)的系統(tǒng)和方法。根據(jù)該系統(tǒng)和方法,PU建立協(xié)同的APU組,以及與這些APU相關(guān)的協(xié)同存儲(chǔ)器沙箱組,以用于這些數(shù)據(jù)的處理。在不處理數(shù)據(jù)的時(shí)候,流水線的專(zhuān)用APU和存儲(chǔ)器沙箱仍保留為流水線專(zhuān)用。換句話說(shuō),在這些期間中,將專(zhuān)用APU及其相關(guān)沙箱置于保留狀態(tài)。
在另一方面,本發(fā)明提供用于處理任務(wù)的絕對(duì)定時(shí)器。該絕對(duì)定時(shí)器獨(dú)立于處理應(yīng)用程序和數(shù)據(jù)的APU所使用的時(shí)鐘頻率。根據(jù)絕對(duì)定時(shí)器定義的任務(wù)時(shí)間周期來(lái)寫(xiě)應(yīng)用程序。如果因APU的增強(qiáng)(例如)而使APU使用的時(shí)鐘頻率提高,由絕對(duì)定時(shí)器定義的給定任務(wù)的時(shí)間周期保持不變。該方案允許以更新版本的APU實(shí)現(xiàn)增強(qiáng)的處理時(shí)間,而無(wú)須禁止這些新APU處理針對(duì)較早APU的較慢處理時(shí)間而編寫(xiě)的較早應(yīng)用程序。
本發(fā)明還提供使具有更快處理速度的更新APU能夠處理針對(duì)較早APU的較慢處理速度而編寫(xiě)的較早應(yīng)用程序的一種可選方案。在這個(gè)可選方案中,針對(duì)因速度增強(qiáng)而在協(xié)調(diào)APU的并行處理方面所產(chǎn)生的問(wèn)題,在處理期間對(duì)APU在處理這些較早應(yīng)用程序時(shí)所使用的特定指令或微代碼進(jìn)行分析。在由這些APU中的某一些執(zhí)行的指令中插入“無(wú)操作”(“NOOP”)指令,以使APU的處理按程序預(yù)期的順序完成。通過(guò)在這些指令中插入這些NOOP,保持了APU執(zhí)行所有指令的正確定時(shí)。
在另一方面,本發(fā)明提供包含集成了光波導(dǎo)的集成電路的芯片封裝(chip package)。
圖1說(shuō)明了本發(fā)明的計(jì)算機(jī)網(wǎng)絡(luò)的整體體系結(jié)構(gòu)。
圖2說(shuō)明了本發(fā)明的處理器元件(PE)的結(jié)構(gòu)。
圖3說(shuō)明了本發(fā)明的寬帶引擎(BE)的結(jié)構(gòu)。
圖4說(shuō)明了本發(fā)明的附連處理單元(APU)的結(jié)構(gòu)。
圖5說(shuō)明了本發(fā)明的處理器元件,觀察器(VS,visualizer)和光接口的結(jié)構(gòu)。
圖6說(shuō)明了本發(fā)明的處理器元件的一種組合。
圖7說(shuō)明了本發(fā)明的處理器元件的另外一種組合。
圖8說(shuō)明了本發(fā)明的處理器元件的另外一種組合。
圖9說(shuō)明了本發(fā)明的處理器元件的另外一種組合。
圖10說(shuō)明了本發(fā)明的處理器元件的另外一種組合。
圖11A說(shuō)明了本發(fā)明的芯片封裝中光接口的集成。
圖11B是使用圖11A的光接口的處理器的一種結(jié)構(gòu)的圖。
圖11C是使用圖11A的光接口的處理器的另外一種結(jié)構(gòu)的圖。
圖12A說(shuō)明了本發(fā)明的存儲(chǔ)器系統(tǒng)的結(jié)構(gòu)。
圖12B根據(jù)本發(fā)明說(shuō)明了從第一寬帶引擎向第二寬帶引擎的數(shù)據(jù)寫(xiě)入。
圖13是本發(fā)明的處理器元件的共享存儲(chǔ)器的結(jié)構(gòu)圖。
圖14A說(shuō)明了圖13中的存儲(chǔ)器的存儲(chǔ)體的一種結(jié)構(gòu)。
圖14B說(shuō)明了圖13中的存儲(chǔ)器的存儲(chǔ)體的另一種結(jié)構(gòu)。
圖15說(shuō)明了本發(fā)明的直接存儲(chǔ)器存取控制器的結(jié)構(gòu)。
圖16說(shuō)明了本發(fā)明的直接存儲(chǔ)器存取控制器的另一種結(jié)構(gòu)。
圖17A-17O說(shuō)明了本發(fā)明的數(shù)據(jù)同步操作。
圖18是根據(jù)本發(fā)明的數(shù)據(jù)同步模式說(shuō)明存儲(chǔ)器位置的不同狀態(tài)的三狀態(tài)存儲(chǔ)器圖。
圖19說(shuō)明了本發(fā)明的硬件沙箱的關(guān)鍵字控制表的結(jié)構(gòu)。
圖20說(shuō)明了用于存儲(chǔ)本發(fā)明的硬件沙箱的存儲(chǔ)器存取關(guān)鍵字的方案。
圖21說(shuō)明了本發(fā)明的硬件沙箱的存儲(chǔ)器存取控制表的結(jié)構(gòu)。
圖22是使用圖19的關(guān)鍵字控制表和圖21的存儲(chǔ)器存取控制表訪問(wèn)存儲(chǔ)器沙箱的步驟的流程圖。
圖23說(shuō)明了本發(fā)明的軟件單元的結(jié)構(gòu)。
圖24是根據(jù)本發(fā)明向APU發(fā)出遠(yuǎn)程過(guò)程調(diào)用的步驟的流程圖。
圖25說(shuō)明了本發(fā)明用于處理流數(shù)據(jù)的專(zhuān)用流水線的結(jié)構(gòu)。
圖26A-26B是本發(fā)明如圖25所示的專(zhuān)用流水線在處理流數(shù)據(jù)時(shí)執(zhí)行的步驟的流程圖。
圖27說(shuō)明了本發(fā)明用于處理流數(shù)據(jù)的專(zhuān)用流水線的可選結(jié)構(gòu)。
圖28說(shuō)明了本發(fā)明用于協(xié)調(diào)APU對(duì)應(yīng)用程序和數(shù)據(jù)的并行處理的絕對(duì)定時(shí)器的方案。
具體實(shí)施例方式
圖1示出了本發(fā)明的計(jì)算系統(tǒng)101的整體體系結(jié)構(gòu)。
如圖中所示,系統(tǒng)101包括網(wǎng)絡(luò)104,其上連接了多個(gè)計(jì)算機(jī)和計(jì)算設(shè)備。網(wǎng)絡(luò)104可以是LAN、像Internet這樣的全球網(wǎng)、或者任何其它的計(jì)算機(jī)網(wǎng)絡(luò)。
連接到網(wǎng)絡(luò)104的計(jì)算機(jī)和計(jì)算設(shè)備(網(wǎng)絡(luò)“成員”)包括例如客戶端計(jì)算機(jī)106、服務(wù)器計(jì)算機(jī)108、個(gè)人數(shù)字助理(PDA)110、數(shù)字電視(DTV)112、以及其它有線或無(wú)線計(jì)算機(jī)和計(jì)算設(shè)備。網(wǎng)絡(luò)104的成員使用的處理器由相同的公用計(jì)算模塊構(gòu)建。這些處理器最好還都具有相同的ISA,并按照相同的指令集執(zhí)行處理。任何一個(gè)特定的處理器中包含的模塊的數(shù)目取決于該處理器所需的處理能力。
例如,由于系統(tǒng)101中的服務(wù)器108比客戶端106執(zhí)行更多的數(shù)據(jù)和應(yīng)用程序處理,所以服務(wù)器108比客戶端106包含更多的計(jì)算模塊。另一方面,PDA 110執(zhí)行的處理量最少,因此PDA 110包含的計(jì)算模塊最少。DTV 112執(zhí)行的處理量介于客戶端106的和服務(wù)器108之間,因此,它包含的計(jì)算模塊的數(shù)目介于客戶端106和服務(wù)器108之間。如下面討論的,每個(gè)計(jì)算模塊包含一個(gè)處理控制器,和多個(gè)同樣的處理單元,用于對(duì)網(wǎng)絡(luò)104上傳輸?shù)臄?shù)據(jù)和應(yīng)用程序執(zhí)行并行處理。
系統(tǒng)101的這種同構(gòu)結(jié)構(gòu)利于提高適應(yīng)性、處理速度和處理效率。因?yàn)橄到y(tǒng)101的每個(gè)成員使用一或多個(gè)(或某些部分的)相同計(jì)算模塊來(lái)執(zhí)行處理,所以執(zhí)行數(shù)據(jù)和應(yīng)用程序的實(shí)際處理的特定計(jì)算機(jī)或計(jì)算設(shè)備是不重要的。而且,特定應(yīng)用程序和數(shù)據(jù)的處理可以在網(wǎng)絡(luò)成員間分享。通過(guò)在整個(gè)系統(tǒng)中唯一標(biāo)識(shí)包含由系統(tǒng)101處理的數(shù)據(jù)和應(yīng)用程序的單元,則無(wú)論處理在哪里進(jìn)行,都可以將該處理結(jié)果傳輸?shù)秸?qǐng)求處理的計(jì)算機(jī)或計(jì)算設(shè)備。因?yàn)閳?zhí)行該處理的模塊具有公用結(jié)構(gòu)并使用公用ISA,所以避免了為實(shí)現(xiàn)處理器之間的兼容性而附加的軟件層的計(jì)算負(fù)擔(dān)。該體系結(jié)構(gòu)和編程模型利于得到執(zhí)行例如實(shí)時(shí)、多媒體應(yīng)用程序所必需的處理速度。
為了進(jìn)一步利用系統(tǒng)101帶來(lái)的處理速度和效率,將該系統(tǒng)處理的數(shù)據(jù)和應(yīng)用程序封裝到具有唯一標(biāo)識(shí)和統(tǒng)一格式的軟件單元102中。每個(gè)軟件單元102包含或可以包含應(yīng)用程序和數(shù)據(jù)。每個(gè)軟件單元還包含在整個(gè)網(wǎng)絡(luò)104和系統(tǒng)101中全局性地標(biāo)識(shí)該單元的ID。軟件單元結(jié)構(gòu)的這種一致性以及軟件單元在整個(gè)網(wǎng)絡(luò)中的唯一標(biāo)識(shí),有利于在網(wǎng)絡(luò)中的任何一個(gè)計(jì)算機(jī)或計(jì)算設(shè)備上處理應(yīng)用程序和數(shù)據(jù)。例如,客戶端106可以形成軟件單元102,但是因?yàn)榭蛻舳?06的處理能力有限,可以將該軟件單元發(fā)送到服務(wù)器108來(lái)進(jìn)行處理。因此,軟件單元可在整個(gè)網(wǎng)絡(luò)104中遷移,以便根據(jù)網(wǎng)絡(luò)上處理資源的可用性進(jìn)行處理。
系統(tǒng)101的處理器和軟件單元的同構(gòu)結(jié)構(gòu)還避免了現(xiàn)今的異構(gòu)網(wǎng)絡(luò)的許多問(wèn)題。例如,設(shè)法允許在使用任何指令集的任何ISA,例如Java虛擬機(jī)這樣的虛擬機(jī)上進(jìn)行應(yīng)用程序處理的低效編程模型得以避免。因此,系統(tǒng)101可實(shí)現(xiàn)遠(yuǎn)比現(xiàn)今網(wǎng)絡(luò)能有效和高效的寬帶處理。
用于網(wǎng)絡(luò)104的所有成員的基本處理模塊是處理器元件(PE)。圖2說(shuō)明了PE的結(jié)構(gòu)。如圖所示,PE 201包含處理單元(PU)203、直接存儲(chǔ)器存取控制器(DMAC)205和多個(gè)附連處理單元(APU),即APU 207、APU 209、APU 211、APU 213、APU 215、APU 217、APU 219和APU 221。局部PE總線223在APU、DMAC 205和PU203間傳輸數(shù)據(jù)和應(yīng)用程序。局部PE總線223可具有例如傳統(tǒng)體系結(jié)構(gòu),或者可以被實(shí)現(xiàn)成分組交換網(wǎng)絡(luò)。雖然需要更多的硬件,然而實(shí)現(xiàn)成分組交換網(wǎng)絡(luò)可增加可用帶寬。
可使用用于實(shí)現(xiàn)數(shù)字邏輯的各種方法來(lái)構(gòu)建PE 201。然而,PE201最好被構(gòu)造成使用硅襯底上的互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)的單個(gè)集成電路??蛇x的襯底材料包括砷化鎵,鎵鋁砷化物,以及其它使用各種攙雜物的所謂III-B化合物。還可使用超導(dǎo)材料,例如快速單磁通量子(RSFQ)邏輯來(lái)實(shí)現(xiàn)PE 201。
PE 201通過(guò)高帶寬存儲(chǔ)器連接227與動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)225緊密相關(guān)。DRAM 225用作PE 201的主存儲(chǔ)器。雖然DRAM 225最好是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,但也可使用其它裝置將DRAM 225實(shí)現(xiàn)成例如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、磁性隨機(jī)存取存儲(chǔ)器(MRAM)、光存儲(chǔ)器或全息存儲(chǔ)器。DMAC 205利于在DRAM 225與PE 201的APU和PU之間傳輸數(shù)據(jù)。如下面進(jìn)一步討論的,DMAC 205在DRAM 225中為每個(gè)APU指定一個(gè)獨(dú)占區(qū)域,只有該APU可以往里寫(xiě)數(shù)據(jù)或從中讀數(shù)據(jù)。這個(gè)獨(dú)占區(qū)域被稱為“沙箱”。
PE 203可以是例如能夠獨(dú)立處理數(shù)據(jù)和應(yīng)用程序的標(biāo)準(zhǔn)處理器。在操作中,PU 203調(diào)度并編排APU對(duì)數(shù)據(jù)和應(yīng)用程序的處理。APU最好是單指令多數(shù)據(jù)(SIMD)處理器。在PU 203的控制下,APU以并行和獨(dú)立的方式執(zhí)行這些數(shù)據(jù)和應(yīng)用程序的處理。DMAC 205控制PU 203和APU對(duì)存儲(chǔ)在共享DRAM 225中的數(shù)據(jù)和應(yīng)用程序的存取。雖然PE 201最好包括八個(gè)APU,但也可根據(jù)所需的處理能力在PE中使用更多或更少數(shù)目的APU。并且,可將許多的像PE 201這樣的PE連接或封裝在一起以提供增強(qiáng)的處理能力。
例如,如圖3所示,可將四個(gè)PE一起封裝或連接在例如一個(gè)或多個(gè)芯片封裝內(nèi),以形成用于網(wǎng)絡(luò)104的成員的單個(gè)處理器。這種結(jié)構(gòu)被稱為寬帶引擎(BE)。如圖3所示,BE 301包含四個(gè)PE,即PE303、PE 305、PE 307和PE 309。通過(guò)BE總線311進(jìn)行這些PE之間的通信。寬帶寬存儲(chǔ)器連接313提供共享DRAM 315與這些PE之間的通信。作為BE總線311的替代,可通過(guò)DRAM 315和這個(gè)存儲(chǔ)器連接進(jìn)行BE 301的PE之間的通信。
輸入/輸出(I/O)接口317和外部總線319提供寬帶引擎301和網(wǎng)絡(luò)104的其它成員之間的通信。與PE的APU執(zhí)行的并行與獨(dú)立的應(yīng)用程序和數(shù)據(jù)處理相類(lèi)似,BE 301的每個(gè)PE以并行和獨(dú)立的方式執(zhí)行數(shù)據(jù)和應(yīng)用程序的處理。
圖4說(shuō)明了APU的結(jié)構(gòu)。APU 402包括局部存儲(chǔ)器406,寄存器410,四個(gè)浮點(diǎn)單元412和四個(gè)整數(shù)單元414。然而,根據(jù)所需要的處理能力,可以使用更多或更少數(shù)目的浮點(diǎn)單元412和整數(shù)單元414。在優(yōu)選實(shí)施例中,局部存儲(chǔ)器406包含128千字節(jié)的存儲(chǔ)量,并且寄存器410的容量是128×128位。浮點(diǎn)單元412最好以320億(32 billion)次浮點(diǎn)運(yùn)算每秒(32 GFLOPS)的速度工作,整數(shù)單元414最好以320億次運(yùn)算每秒(32 GOPS)的速度工作。
局部存儲(chǔ)器402不是高速緩沖存儲(chǔ)器。局部存儲(chǔ)器402最好被構(gòu)造成SRAM。對(duì)APU的高速緩存一致性支持是沒(méi)有必要的。對(duì)于由PU啟動(dòng)的直接存儲(chǔ)器存取,PU會(huì)需要高速緩存一致性支持。然而,對(duì)于由APU啟動(dòng)的直接存儲(chǔ)器存取或針對(duì)外部設(shè)備的存取,則不需要高速緩存一致性支持。
APU 402還包含總線404,用于針對(duì)APU傳送應(yīng)用程序和數(shù)據(jù)。在優(yōu)選實(shí)施例中,該總線的寬度是1024位。APU 402還包括內(nèi)部總線408、420和418。在優(yōu)選實(shí)施例中,總線408的寬度是256位,提供局部存儲(chǔ)器406與寄存器410之間的通信。總線420和418分別提供寄存器410和浮點(diǎn)單元412之間,寄存器410和整數(shù)單元414之間的通信。在優(yōu)選實(shí)施例中,從寄存器410到浮點(diǎn)單元或整數(shù)單元的總線418和420的寬度是384位,從浮點(diǎn)或整數(shù)單元到寄存器410的總線418和420的寬度是128位。這些總線中,從寄存器410到浮點(diǎn)或整數(shù)單元的寬度比從這些單元到寄存器410的寬度大,這樣可適應(yīng)處理期間來(lái)自寄存器410的較大數(shù)據(jù)流。每次計(jì)算最多需要三個(gè)字。然而,每次計(jì)算的結(jié)果通常只是一個(gè)字。
圖5-10進(jìn)一步說(shuō)明了網(wǎng)絡(luò)104的成員的處理器的模塊化結(jié)構(gòu)。例如,如圖5所示,處理器可以包含單個(gè)PE 502。如上所述,該P(yáng)E通常包含一個(gè)PU、一個(gè)DMAC和八個(gè)APU。每個(gè)APU包括局部存儲(chǔ)器(LS)。另一方面,處理器可包含觀察器(VS,visualizer)505的結(jié)構(gòu)。如圖5所示,VS 505包含PU 512、DMAC 514和四個(gè)APU,即APU 516、APU 518、APU 520和APU 522。在這種情況下,通常由PE的其它四個(gè)APU占有的芯片封裝內(nèi)空間則由像素引擎508,圖象高速緩存510,以及陰極射線管控制器(CRTC)504占用。根據(jù)PE502或VS 505所需要的通信速度,光接口506也可被包括在芯片封裝內(nèi)。
使用這種標(biāo)準(zhǔn)模塊化的結(jié)構(gòu),可以很容易和有效地構(gòu)建處理器的許多其他變種。例如,圖6所示的處理器包含兩個(gè)芯片封裝,即包含一個(gè)BE的芯片封裝602和包含四個(gè)VS的芯片封裝604。輸入/輸出(I/O)606提供芯片封裝602的BE與網(wǎng)絡(luò)104之間的接口??偩€608提供芯片封裝602與芯片封裝604之間的通信。輸入輸出處理器(IOP)610控制數(shù)據(jù)流入和流出I/O 606。I/O 606可以制造成專(zhuān)用集成電路(ASIC)。從VS輸出的是視頻信號(hào)612。
圖7說(shuō)明了帶有兩個(gè)光接口704和706的BE 702的芯片封裝,所述光接口用于提供與網(wǎng)絡(luò)104的其它成員(或本地連接的其它芯片封裝)的甚高速通信。BE 702可用作例如網(wǎng)絡(luò)104上的服務(wù)器。
圖8的芯片封裝包含兩個(gè)PE 802和804,以及兩個(gè)VS 806和808。I/O 810提供芯片封裝與網(wǎng)絡(luò)104間的接口。從芯片封裝輸出的是視頻信號(hào)。這種結(jié)構(gòu)可用作例如圖形工作站。
圖9說(shuō)明了另外一種結(jié)構(gòu)。該結(jié)構(gòu)包含圖8中說(shuō)明的結(jié)構(gòu)的處理能力的一半。提供一個(gè)PE 902,而不是兩個(gè)PE,并且提供一個(gè)VS 904,而不是兩個(gè)VS。I/O 906的帶寬是圖8中說(shuō)明的I/O帶寬的一半。然而,這樣的處理器也可用作圖形工作站。
最后一種結(jié)構(gòu)如圖10所示。該處理器僅由一個(gè)單一的VS 1002和I/O 1004組成。這種結(jié)構(gòu)可用作例如PDA。
圖11A說(shuō)明了光接口在網(wǎng)絡(luò)104的處理器的芯片封裝中的集成。這些光接口將光信號(hào)轉(zhuǎn)換成電信號(hào),并將電信號(hào)轉(zhuǎn)換成光信號(hào),它們可以用各種材料制成,包括例如砷化鎵、鎵鋁砷化物、鍺以及其它元素和化合物。如圖中所示,光接口1104和1106被做在BE 1102的芯片封裝上。BE總線1108提供BE 1102的多個(gè)PE,即PE1110、PE 1112、PE 1114、PE 1116與這些光接口之間的通信。光接口1104包括兩個(gè)端口,即端口1118和端口1120,并且光接口1106也包括兩個(gè)端口,即端口1122和端口1124。端口1118、1120、1122和1124分別連接到光波導(dǎo)1126、1128、1130和1132。通過(guò)光接口1104和1106的端口,經(jīng)由這些光波導(dǎo)針對(duì)BE 1102傳送光信號(hào)。
使用這種光波導(dǎo)和每個(gè)BE的四個(gè)光端口可將多個(gè)BE按各種結(jié)構(gòu)連接在一起。例如,如圖11B所示,通過(guò)這種光端口可將兩個(gè)或多個(gè)BE,例如BE 1152、BE 1154和BE 1156串行連接在一起。在該例中,BE 1152的光接口1166通過(guò)其光端口連接到BE 1154的光接口1160的光端口。以類(lèi)似的方式,BE 1154上光接口1162的光端口連接到BE 1156上光接口的光端口。
圖11C說(shuō)明了一種矩陣結(jié)構(gòu)。在該結(jié)構(gòu)中,每個(gè)BE的光接口連接到兩個(gè)其它的BE上。如圖中所示,BE 1172的光接口1188的一個(gè)光端口連接到BE 1176的光接口1182的光端口。光接口1188的另一個(gè)光端口連接到BE 1178的光接口1184的光端口。以類(lèi)似的方式,BE 1174的光接口1190的一個(gè)光端口連接到BE 1178的光接口1184的另一個(gè)光端口。光接口1190的另一個(gè)光端口連接到BE 1180的光接口1186的光端口。這種矩陣結(jié)構(gòu)可按類(lèi)似的方式延及其它BE。
通過(guò)使用串聯(lián)結(jié)構(gòu)或矩陣結(jié)構(gòu),可構(gòu)建網(wǎng)絡(luò)104的具有任何期望大小和能力的處理器。當(dāng)然,可以向BE的光接口,或其PE數(shù)目多于或少于BE的PE數(shù)目的處理器增加附加端口,以形成其它的結(jié)構(gòu)。
圖12A說(shuō)明了用于BE的DRAM的控制系統(tǒng)和結(jié)構(gòu)。類(lèi)似的控制系統(tǒng)和結(jié)構(gòu)被用于具有其它大小和包含或多或少的PE的處理器中。如圖中所示,交叉開(kāi)關(guān)將構(gòu)成BE 1201的四個(gè)PE的各個(gè)DMAC1210連接到八個(gè)存儲(chǔ)體控制器1206。每個(gè)存儲(chǔ)體控制器1206控制DRAM 1204的八個(gè)存儲(chǔ)體1208(圖中只畫(huà)出了四個(gè))。因此,DRAM1204總共包含64個(gè)存儲(chǔ)體。在優(yōu)選實(shí)施例中,DRAM 1204具有64兆字節(jié)的容量,并且每個(gè)存儲(chǔ)體具有1兆字節(jié)的容量。在該優(yōu)選實(shí)施例中,每個(gè)存儲(chǔ)體中的最小可尋址單位是1024位塊。
BE 1201還包括開(kāi)關(guān)單元1212。開(kāi)關(guān)單元1212能夠使BE上的其它APU緊密耦合到BE 1201,以便訪問(wèn)DRAM 1204。因此,第二BE可以緊密耦合到第一BE,并且每個(gè)BE的每個(gè)APU可以尋址的存儲(chǔ)器位置的數(shù)量是通常可由APU訪問(wèn)的存儲(chǔ)器位置的數(shù)量的兩倍。通過(guò)例如開(kāi)關(guān)單元1212的開(kāi)關(guān)單元,可以直接從第一BE的DRAM到第二BE的DRAM,或從第二BE的DRAM到第一BE的DRAM的讀取或?qū)懭霐?shù)據(jù)。
例如,如圖12B所示,為完成這種寫(xiě)操作,第一BE的APU,例如,BE 1222的APU 1220向第二BE的DRAM,例如BE 1226的DRAM 1228(而不是象通常的情況那樣向BE 1222的DRAM 1224)的存儲(chǔ)器位置發(fā)出寫(xiě)命令。BE 1222的DMAC 1230通過(guò)交叉開(kāi)關(guān)1221向存儲(chǔ)體控制器1234發(fā)送寫(xiě)命令,并且存儲(chǔ)體控制器1234向連接到存儲(chǔ)體控制器1234的外部端口1232發(fā)送該命令。BE 1226的DMAC1238接收該寫(xiě)命令,并將該命令傳送到BE 1226的開(kāi)關(guān)單元1240。開(kāi)關(guān)單元1240識(shí)別包含在寫(xiě)命令中的DRAM地址,并通過(guò)BE 1226的存儲(chǔ)體控制器1242向DRAM 1228的存儲(chǔ)體1244發(fā)送存儲(chǔ)在該地址中的數(shù)據(jù)。因此,開(kāi)關(guān)單元1240使DRAM 1224和DRAM 1228能夠充當(dāng)BE 1222的APU的單獨(dú)存儲(chǔ)空間。
圖13說(shuō)明了DRAM的64存儲(chǔ)體的結(jié)構(gòu)。這些存儲(chǔ)體排列成八行,即行1302、1304、1306、1308、1310、1312、1314和1316,和八列,即列1320、1322、1324、1326、1328、1330、1332和1334。每行由一個(gè)存儲(chǔ)體控制器控制。因此,每個(gè)存儲(chǔ)體控制器控制八兆字節(jié)的存儲(chǔ)器。
圖14A和14B說(shuō)明了用于存儲(chǔ)和訪問(wèn)DRAM的最小可尋址存儲(chǔ)單位,例如1024位塊的不同結(jié)構(gòu)。在圖14A中,DMAC 1402在單個(gè)存儲(chǔ)體1404中存儲(chǔ)八個(gè)1024位塊1406。另一方面,在圖14B中,當(dāng)DMAC 1412讀和寫(xiě)包含1024位的數(shù)據(jù)塊時(shí),這些塊在兩個(gè)存儲(chǔ)體,即存儲(chǔ)體1414和存儲(chǔ)體1416之間交錯(cuò)。因此,這些存儲(chǔ)體中的每一個(gè)包含16個(gè)數(shù)據(jù)塊,并且每個(gè)數(shù)據(jù)塊包含512位。這種交錯(cuò)可有利于更快速地訪問(wèn)DRAM,并且在某些應(yīng)用程序的處理中是非常有用的。
圖15說(shuō)明了PE中的DMAC 1504的體系結(jié)構(gòu)。如圖中所示,構(gòu)成DMAC 1506的結(jié)構(gòu)硬件在整個(gè)PE中分布,使得每個(gè)APU 1502直接訪問(wèn)DMAC 1506的結(jié)構(gòu)節(jié)點(diǎn)1504。每個(gè)節(jié)點(diǎn)執(zhí)行適合于由該節(jié)點(diǎn)直接訪問(wèn)的APU進(jìn)行存儲(chǔ)器訪問(wèn)的邏輯。
圖16示出了DMAC的一個(gè)可選實(shí)施例,即非分布式體系結(jié)構(gòu)。在這種情況下,DMAC 1606的結(jié)構(gòu)硬件是集中式的。APU 1602和PU 1604通過(guò)局部PE總線1607與DMAC 1606通信。DMAC1606通過(guò)交叉開(kāi)關(guān)連接到總線1608。總線1608連接到DRAM1610。
如上所述,PE的所有多個(gè)APU可獨(dú)立訪問(wèn)共享DRAM中的數(shù)據(jù)。結(jié)果,在第二APU請(qǐng)求第一APU的局部存儲(chǔ)器中的特定數(shù)據(jù)時(shí),第一APU可能正對(duì)該數(shù)據(jù)進(jìn)行操作。如果此時(shí)將數(shù)據(jù)從共享DRAM提供到第二APU,則數(shù)據(jù)可能是無(wú)效的,因?yàn)榈谝籄PU正在進(jìn)行的處理可能改變數(shù)據(jù)的值。因此,如果此時(shí)第二處理器接收到了來(lái)自共享DRAM的數(shù)據(jù),則第二處理器可能會(huì)產(chǎn)生錯(cuò)誤的結(jié)果。例如,數(shù)據(jù)可能是全局變量的特定值。如果第一處理器在其處理過(guò)程中改變了該值,則第二處理器會(huì)接收到一個(gè)過(guò)期值。因此,必須有一種方案來(lái)同步APU對(duì)共享DRAM中的存儲(chǔ)器位置進(jìn)行的數(shù)據(jù)讀出和寫(xiě)入。該方案必須防止從這樣的存儲(chǔ)器位置讀取數(shù)據(jù),其中另一APU當(dāng)前正在其局部存儲(chǔ)器中對(duì)該存儲(chǔ)器位置進(jìn)行操作,因此此時(shí)讀取的數(shù)據(jù)不是最新的,并且防止向存儲(chǔ)當(dāng)前數(shù)據(jù)的存儲(chǔ)器位置寫(xiě)數(shù)據(jù)。
為了解決這些問(wèn)題,對(duì)于DRAM的每個(gè)可尋址存儲(chǔ)器位置,在DRAM中分配一個(gè)附加存儲(chǔ)段以存儲(chǔ)有關(guān)該存儲(chǔ)器位置中存儲(chǔ)的數(shù)據(jù)的狀態(tài)信息。這種狀態(tài)信息包括滿/空(F/E)位,向存儲(chǔ)器位置請(qǐng)求數(shù)據(jù)的APU的標(biāo)識(shí)(APU ID),以及從其讀取所請(qǐng)求數(shù)據(jù)的APU局部存儲(chǔ)器的地址(LS地址)。DRAM的可尋址存儲(chǔ)器位置可以具有任意大小。在優(yōu)選實(shí)施例中,該大小是1024位。
將F/E位設(shè)成1表示存儲(chǔ)在相關(guān)存儲(chǔ)器位置中的數(shù)據(jù)是最新的。相反,將F/E位設(shè)成0表示存儲(chǔ)在相關(guān)存儲(chǔ)器位置中的數(shù)據(jù)不是最新的。如果APU在該位被設(shè)成0時(shí)請(qǐng)求數(shù)據(jù),則禁止APU立即讀取數(shù)據(jù)。在這種情況下,標(biāo)識(shí)請(qǐng)求數(shù)據(jù)的APU的APU ID,和LS地址被記入到附加存儲(chǔ)段中,其中LS地址標(biāo)識(shí)在數(shù)據(jù)變?yōu)樽钚聰?shù)據(jù)時(shí),向讀入數(shù)據(jù)的APU的局部存儲(chǔ)器中的存儲(chǔ)器位置。
對(duì)于APU的局部存儲(chǔ)器中的每個(gè)存儲(chǔ)器位置,也分配附加存儲(chǔ)段。該附加存儲(chǔ)段存儲(chǔ)一個(gè)位,稱為“忙位(busy bit)”。該忙位用于保留相關(guān)的LS存儲(chǔ)器位置,用于存儲(chǔ)從DRAM取回的特定數(shù)據(jù)。如果針對(duì)局部存儲(chǔ)器中特定存儲(chǔ)器位置的忙位被設(shè)成1,則APU只能將該存儲(chǔ)器位置用于寫(xiě)入這些特定數(shù)據(jù)。反之,如果針對(duì)局部存儲(chǔ)器中特定存儲(chǔ)器位置的忙位被設(shè)成0,則APU可將該存儲(chǔ)器位置用于寫(xiě)入任何數(shù)據(jù)。
圖17A-17O說(shuō)明了使用F/E位,APU ID,LS地址以及忙位來(lái)同步針對(duì)PE的共享DRAM的數(shù)據(jù)讀寫(xiě)的方式的幾個(gè)例子。
如圖17A所示,一或多個(gè)例如PE 1720的PE與DRAM 1702交互。PE 1720包括APU 1722和APU 1740。APU 1722包括控制邏輯1724,而APU 1740包括控制邏輯1742。APU 1722還包括局部存儲(chǔ)器1726。該局部存儲(chǔ)器包括多個(gè)可尋址存儲(chǔ)器位置1728。APU 1740包括局部存儲(chǔ)器1744,該局部存儲(chǔ)器還包括多個(gè)可尋址存儲(chǔ)器位置1746。所有這些可尋址存儲(chǔ)器位置的大小最好是1024位。
附加存儲(chǔ)段與每個(gè)LS可尋址存儲(chǔ)器位置相關(guān)。例如,存儲(chǔ)段1729和1734分別與局部存儲(chǔ)器位置1731和1732相關(guān),并且,存儲(chǔ)段1752與局部存儲(chǔ)器位置1750相關(guān)。如上所述,“忙位”存儲(chǔ)在這些附加存儲(chǔ)段的每一個(gè)中。局部存儲(chǔ)器位置1732如圖所示具有幾個(gè)X,表示該存儲(chǔ)器位置包含數(shù)據(jù)。
DRAM 1702包含多個(gè)可尋址存儲(chǔ)器位置1704,包括存儲(chǔ)器位置1706和1708。這些存儲(chǔ)器位置的大小最好也是1024位。附加存儲(chǔ)段也與這些存儲(chǔ)器位置中的每一個(gè)相關(guān)。例如,附加存儲(chǔ)段1760與存儲(chǔ)器位置1706相關(guān),并且附加存儲(chǔ)段1762與存儲(chǔ)器位置1708相關(guān)。與存儲(chǔ)在每個(gè)存儲(chǔ)器位置的數(shù)據(jù)相關(guān)的狀態(tài)信息被存儲(chǔ)在與該存儲(chǔ)器位置相關(guān)的存儲(chǔ)段中。如上所述,該狀態(tài)信息包括F/E位,APUID和LS地址。例如,對(duì)于存儲(chǔ)器位置1708,該狀態(tài)信息包括F/E位1712,APU ID 1714和LS地址1716。
通過(guò)使用狀態(tài)信息和忙位,能夠?qū)崿F(xiàn)在PE或一組PE的APU中間對(duì)共享DRAM的數(shù)據(jù)讀寫(xiě)同步。
圖17B說(shuō)明了從APU 1722的LS存儲(chǔ)器位置1732向DRAM1702的存儲(chǔ)器位置1708的數(shù)據(jù)同步寫(xiě)入的啟動(dòng)。APU 1722的控制器1724啟動(dòng)這些數(shù)據(jù)的同步寫(xiě)入。因?yàn)榇鎯?chǔ)器位置1708是空的,所以F/E位1712設(shè)為0。結(jié)果,可以將LS存儲(chǔ)器位置1732中的數(shù)據(jù)寫(xiě)入存儲(chǔ)器位置1708中。另一方面,如果該位設(shè)為1以指示存儲(chǔ)器位置1708是滿的,并且包含的數(shù)據(jù)是最新和有效的,則控制器1722將收到錯(cuò)誤消息,并且被禁止向該存儲(chǔ)器位置寫(xiě)入數(shù)據(jù)。
圖17C示出了成功地向存儲(chǔ)器位置1708同步寫(xiě)入數(shù)據(jù)的結(jié)果。寫(xiě)入的數(shù)據(jù)被存儲(chǔ)在存儲(chǔ)器位置1708中,并將F/E位1712設(shè)成1。該設(shè)定指示存儲(chǔ)器位置1708是滿的,并且該存儲(chǔ)器位置中的數(shù)據(jù)是最新和有效的。
圖17D說(shuō)明了從DRAM 1702的存儲(chǔ)器位置1708同步讀取數(shù)據(jù)到局部存儲(chǔ)器1744的LS存儲(chǔ)器位置1750的啟動(dòng)。為啟動(dòng)該讀取操作,將LS存儲(chǔ)器位置1750的存儲(chǔ)段1752中的忙位設(shè)成1,以為這些數(shù)據(jù)保留該存儲(chǔ)器位置。將該忙位設(shè)成1可禁止APU 1740在該存儲(chǔ)器位置存儲(chǔ)其它數(shù)據(jù)。
接著如圖17E所示,控制邏輯1742針對(duì)DRAM 1702的存儲(chǔ)器位置1708發(fā)出同步讀命令。因?yàn)榕c該存儲(chǔ)器位置相關(guān)的F/E位1712被設(shè)成1,所以存儲(chǔ)在存儲(chǔ)器位置1708中的數(shù)據(jù)被認(rèn)為是最新和有效的。因此,將F/E位1712設(shè)成0,以準(zhǔn)備將數(shù)據(jù)從存儲(chǔ)器位置1708傳送到LS存儲(chǔ)器位置1750。該設(shè)定如圖17F所示。將該位設(shè)成0表示在讀取這些數(shù)據(jù)之后,存儲(chǔ)器位置1708中的數(shù)據(jù)無(wú)效。
接下來(lái),如圖17G所示,將存儲(chǔ)器位置1708中的數(shù)據(jù)從存儲(chǔ)器位置1708讀到LS存儲(chǔ)器位置1750中。圖17H示出了最終的狀態(tài)。將存儲(chǔ)器位置1708中的數(shù)據(jù)的副本存儲(chǔ)到LS存儲(chǔ)器位置1750中。F/E位被設(shè)成0以指示存儲(chǔ)器位置1708中的數(shù)據(jù)無(wú)效。這種無(wú)效是APU 1740對(duì)這些數(shù)據(jù)進(jìn)行的修改的結(jié)果。存儲(chǔ)段1752中的忙位也被設(shè)成0。該設(shè)定指示LS存儲(chǔ)器位置1750現(xiàn)在可被APU 1740用于任何目的,即該LS存儲(chǔ)器位置不再處于等待接收特定數(shù)據(jù)的保留狀態(tài)。因此,APU 1740可對(duì)LS存儲(chǔ)器位置1750進(jìn)行任何目的的訪問(wèn)。
圖17I-17O說(shuō)明了當(dāng)針對(duì)DRAM 1702的存儲(chǔ)器位置的F/E位設(shè)成0以指示該存儲(chǔ)器位置中的數(shù)據(jù)不是最新或有效時(shí),從DRAM1702的存儲(chǔ)器位置(例如存儲(chǔ)器位置1708)同步讀數(shù)據(jù)到APU的局部存儲(chǔ)器的LS存儲(chǔ)器位置(例如局部存儲(chǔ)器1744的LS存儲(chǔ)器位置1752)的操作。如圖17I所示,為啟動(dòng)這種傳送,將LS存儲(chǔ)器位置1750的存儲(chǔ)段1752中的忙位設(shè)成1,以保留該LS存儲(chǔ)器位置用于該數(shù)據(jù)傳輸。接下來(lái),如圖17J所示,控制邏輯1742針對(duì)DRAM1702的存儲(chǔ)器位置1708發(fā)出同步讀命令。由于與該存儲(chǔ)器位置相關(guān)的F/E位,即F/E位1712被設(shè)成0,所以存儲(chǔ)器位置1708中存儲(chǔ)的數(shù)據(jù)是無(wú)效的。結(jié)果,向控制邏輯1742發(fā)送信號(hào),以阻止從該存儲(chǔ)器位置立即讀取數(shù)據(jù)。
接著,如圖17K所示,將用于該讀命令的APU ID 1714和LS地址1716寫(xiě)入到存儲(chǔ)段1762中。在這種情況下,將針對(duì)APU 1740的APU ID和針對(duì)LS存儲(chǔ)器位置1750的LS存儲(chǔ)器位置寫(xiě)入到存儲(chǔ)段1762中。因此,當(dāng)存儲(chǔ)器位置1708中的數(shù)據(jù)變成最新時(shí),使用該APU ID和LS存儲(chǔ)器位置來(lái)確定當(dāng)前數(shù)據(jù)要發(fā)送到的位置。
當(dāng)APU將數(shù)據(jù)寫(xiě)入該存儲(chǔ)器位置時(shí),存儲(chǔ)器位置1708中的數(shù)據(jù)變?yōu)橛行Ш妥钚碌?。圖17L說(shuō)明了從例 APU 1722的存儲(chǔ)器位置1732到存儲(chǔ)器位置1708的數(shù)據(jù)同步寫(xiě)操作。因?yàn)獒槍?duì)該存儲(chǔ)器位置的F/E位被設(shè)為0,所以這些數(shù)據(jù)的這種同步寫(xiě)是許可的。
如圖17M所示,在寫(xiě)操作之后,存儲(chǔ)器位置1708中的數(shù)據(jù)變成最新和有效的。因此,立即從存儲(chǔ)段1762讀取來(lái)自存儲(chǔ)段1762的APU ID 1714和LS地址,然后將該信息從該存儲(chǔ)段中刪除。還將F/E位1712設(shè)成0,以期立即讀取存儲(chǔ)器位置1708中的數(shù)據(jù)。如圖17N所示,當(dāng)讀取APU ID 1714和LS地址1716后,立即將該信息用于將存儲(chǔ)器位置1708中的有效數(shù)據(jù)讀到APU 1740的LS存儲(chǔ)器位置1750中。最終狀態(tài)示于圖17O。該圖示出從存儲(chǔ)器位置1708復(fù)制到存儲(chǔ)器位置1750的有效數(shù)據(jù),存儲(chǔ)段1752中的忙位設(shè)為0,并且存儲(chǔ)段1762中的F/E位1712設(shè)為0。將此忙位設(shè)成0允許LS存儲(chǔ)器位置1750現(xiàn)在可被APU 1740進(jìn)行任何目的的訪問(wèn)。將F/E位設(shè)成0指示存儲(chǔ)器位置1708中的數(shù)據(jù)不再是最新和有效的。
圖18根據(jù)對(duì)應(yīng)于存儲(chǔ)器位置的存儲(chǔ)段中存儲(chǔ)的F/E位的狀態(tài),APU ID和LS地址,概括了上述操作和DRAM的存儲(chǔ)器位置的各種狀態(tài)。存儲(chǔ)器位置可有三種狀態(tài)。這三種狀態(tài)是空狀態(tài)1880,其中F/E位設(shè)成0,并且不針對(duì)APU ID或LS地址提供信息;滿狀態(tài)1882,其中F/E位設(shè)成1,并且不針對(duì)APU ID或LS地址提供信息;阻塞狀態(tài)1884,其中F/E位設(shè)成0,并且針對(duì)APU ID和LS地址提供信息。
如該圖所示,在空狀態(tài)1880中,允許同步寫(xiě)操作,并且導(dǎo)致切換到滿狀態(tài)1882。而同步讀操作導(dǎo)致切換到阻塞狀態(tài)1884,因?yàn)楫?dāng)存儲(chǔ)器位置處于空狀態(tài)時(shí),存儲(chǔ)器位置中的數(shù)據(jù)不是最新的。
在滿狀態(tài)1882中,允許同步讀操作,并導(dǎo)致切換到空狀態(tài)1880。另一方面,滿狀態(tài)1882下的同步寫(xiě)操作被禁止,以防止覆蓋有效數(shù)據(jù)。如果在這種狀態(tài)中試圖進(jìn)行這種寫(xiě)操作,則不發(fā)生狀態(tài)改變,并且向APU的相應(yīng)控制邏輯發(fā)送錯(cuò)誤消息。
在阻塞狀態(tài)1884中,允許對(duì)存儲(chǔ)器位置進(jìn)行同步數(shù)據(jù)寫(xiě)操作,并導(dǎo)致切換到空狀態(tài)1880。另一方面,阻塞狀態(tài)1884下的同步讀操作被禁止,以防止與較早的、導(dǎo)致這種狀態(tài)的同步讀操作發(fā)生沖突。如果在阻塞狀態(tài)1884下試圖進(jìn)行同步讀操作,則不發(fā)生狀態(tài)改變,并且向APU的對(duì)應(yīng)控制邏輯發(fā)送錯(cuò)誤消息。
上述用于針對(duì)共享DRAM的同步讀和寫(xiě)數(shù)據(jù)操作的方案還可用于節(jié)省通常被處理器專(zhuān)用于針對(duì)外部設(shè)備讀寫(xiě)數(shù)據(jù)的計(jì)算資源。該輸入/輸出(I/O)功能可由PU執(zhí)行。然而,通過(guò)使用該同步方案的修改方案,運(yùn)行適當(dāng)程序的APU可執(zhí)行該功能。例如,通過(guò)使用該方案,接收由外部設(shè)備發(fā)出的、用于從I/O接口傳輸數(shù)據(jù)的中斷請(qǐng)求的PU可以委托該APU來(lái)處理這個(gè)請(qǐng)求。然后,APU向I/O接口發(fā)出同步寫(xiě)命令。該接口則通知外部設(shè)備現(xiàn)在可以向DRAM寫(xiě)入數(shù)據(jù)。接下來(lái),APU向DRAM發(fā)出同步讀命令,以將DRAM的有關(guān)存儲(chǔ)空間設(shè)成阻塞狀態(tài)。APU還將APU局部存儲(chǔ)器中接收數(shù)據(jù)所需的存儲(chǔ)器位置的忙位設(shè)成1。在阻塞狀態(tài)中,與DRAM的有關(guān)存儲(chǔ)空間相關(guān)的附加存儲(chǔ)段包含APU的ID和APU局部存儲(chǔ)器的有關(guān)存儲(chǔ)器位置的地址。接著,外部設(shè)備發(fā)出同步寫(xiě)命令,以直接向DRAM的有關(guān)存儲(chǔ)空間寫(xiě)入數(shù)據(jù)。由于該存儲(chǔ)空間處于阻塞狀態(tài),所以立即將數(shù)據(jù)從該空間讀到附加存儲(chǔ)段中所標(biāo)識(shí)的APU局部存儲(chǔ)器的存儲(chǔ)器位置上。然后將針對(duì)這些存儲(chǔ)器位置的忙位設(shè)成0。當(dāng)外部設(shè)備完成數(shù)據(jù)的寫(xiě)操作時(shí),APU向PU發(fā)出表明傳輸完成的信號(hào)。
因此,通過(guò)使用這個(gè)方案,可處理來(lái)自外部設(shè)備的數(shù)據(jù)傳輸,并使PU的計(jì)算負(fù)荷最小。然而,被委派此功能的APU應(yīng)當(dāng)能夠向PU發(fā)出中斷請(qǐng)求,并且外部設(shè)備應(yīng)當(dāng)直接訪問(wèn)DRAM。
每個(gè)PE的DRAM包括多個(gè)“沙箱”。沙箱定義了共享DRAM的一個(gè)區(qū)域,如果超出此區(qū)域,特定APU或特定一組APU不能讀或?qū)憯?shù)據(jù)。這些沙箱提供了防止正被一個(gè)APU處理的數(shù)據(jù)遭到正被另一個(gè)APU處理的數(shù)據(jù)破壞的安全性。這些沙箱還允許從網(wǎng)絡(luò)104向特定沙箱下載軟件單元,而不存在軟件單元破壞整個(gè)DRAM中的任何數(shù)據(jù)的可能性。在本發(fā)明中,用DRAM和DMAC的硬件來(lái)實(shí)現(xiàn)沙箱。通過(guò)用硬件而不是軟件來(lái)實(shí)現(xiàn)沙箱,可獲得速度和安全性方面的優(yōu)勢(shì)。
PE的PU控制分配給APU的沙箱。由于PU通常只操作受信的程序,例如操作系統(tǒng),該方案不會(huì)危及安全性。根據(jù)該方案,PU建立并維護(hù)關(guān)鍵字控制表。圖19示出了該關(guān)鍵字控制表。如該圖所示,關(guān)鍵字控制表1902的每個(gè)條目包含針對(duì)APU的標(biāo)識(shí)(ID)1904,針對(duì)該APU的APU關(guān)鍵字1906,和關(guān)鍵字掩碼1908。該關(guān)鍵字掩碼的使用將在后面進(jìn)行說(shuō)明。關(guān)鍵字控制表1902最好存儲(chǔ)在相對(duì)較快的存儲(chǔ)器中,例如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),并且與DMAC相關(guān)。關(guān)鍵字控制表1902中的條目由PU控制。當(dāng)APU請(qǐng)求針對(duì)DRAM的特定存儲(chǔ)器位置讀寫(xiě)數(shù)據(jù)時(shí),DMAC對(duì)照與該存儲(chǔ)器位置相關(guān)的存儲(chǔ)器存取關(guān)鍵字,來(lái)評(píng)估關(guān)鍵字控制表1902中分配給該APU的APU關(guān)鍵字1906。
如圖20所示,給DRAM 2002的每個(gè)可尋址存儲(chǔ)器位置2006分配一個(gè)專(zhuān)用存儲(chǔ)段2010。在該專(zhuān)用存儲(chǔ)段中存儲(chǔ)針對(duì)存儲(chǔ)器位置的存儲(chǔ)器存取關(guān)鍵字2012。如上所述,另一個(gè)附加專(zhuān)用存儲(chǔ)段2008也與每個(gè)可尋址存儲(chǔ)器位置2006相關(guān),并且存儲(chǔ)用于針對(duì)存儲(chǔ)器位置讀寫(xiě)數(shù)據(jù)的同步信息。
在操作中,APU向DMAC發(fā)出DMA命令。該命令包括DRAM 2002的存儲(chǔ)器位置2006的地址。在執(zhí)行該命令之前,DMAC使用APU的ID 1904在關(guān)鍵字控制表1902中查找發(fā)出請(qǐng)求的APU的關(guān)鍵字1906。然后,DMAC將發(fā)出請(qǐng)求的APU的APU關(guān)鍵字1906與專(zhuān)用存儲(chǔ)段2010中存儲(chǔ)的、和APU試圖訪問(wèn)的DRAM存儲(chǔ)器位置相關(guān)的存儲(chǔ)器存取關(guān)鍵字2012進(jìn)行比較。如果這兩個(gè)關(guān)鍵字不匹配,則不執(zhí)行DMA命令。另一方面,如果這兩關(guān)鍵字匹配,則DMA命令繼續(xù)進(jìn)行,并且執(zhí)行所請(qǐng)求的存儲(chǔ)器訪問(wèn)。
圖21說(shuō)明了另一可選實(shí)施例。在該實(shí)施例中,PU同樣也維護(hù)存儲(chǔ)器存取控制表2102。存儲(chǔ)器存取控制表2102包含針對(duì)DRAM中每個(gè)沙箱的條目。在圖21的特定例子中,DRAM包含64個(gè)沙箱。存儲(chǔ)器存取控制表2102中的每個(gè)條目包含沙箱的標(biāo)識(shí)(ID)2104,存儲(chǔ)器基地址2106,沙箱大小2108,存儲(chǔ)器存取關(guān)鍵字2110和存取關(guān)鍵字掩碼2110。存儲(chǔ)器基地址2106提供DRAM中的、開(kāi)始特定存儲(chǔ)器沙箱的地址。沙箱大小2108提供沙箱的大小,并且因此提供特定沙箱的終點(diǎn)。
圖22是使用關(guān)鍵字控制表1902和存儲(chǔ)器存取控制表2102執(zhí)行DMA命令的步驟的流程圖。在步驟2202中,APU向DMAC發(fā)出用于訪問(wèn)沙箱中的一個(gè)特定存儲(chǔ)器位置或多個(gè)位置的DMA命令。該命令包括沙箱ID 2104,用于標(biāo)識(shí)被請(qǐng)求訪問(wèn)的特定沙箱。在步驟2204中,DMAC使用APU的ID 1904在關(guān)鍵字控制表1902中查找發(fā)出請(qǐng)求的APU的關(guān)鍵字1906。在步驟2206中,DMAC使用命令中的沙箱ID 2104在存儲(chǔ)器存取控制表2102中查找與該沙箱相關(guān)的存儲(chǔ)器存取關(guān)鍵字2110。在步驟2208中,DMAC將分配給發(fā)出請(qǐng)求的APU的APU關(guān)鍵字1906與和沙箱相關(guān)的存取關(guān)鍵字2110進(jìn)行比較。在步驟2210中,確定這兩個(gè)關(guān)鍵字是否匹配。如果這兩個(gè)關(guān)鍵字不匹配,則處理轉(zhuǎn)到步驟2212,其中DMA命令不繼續(xù)執(zhí)行,并向發(fā)出請(qǐng)求的APU,PU或二者發(fā)送錯(cuò)誤消息。另一方面,如果在步驟2210中發(fā)現(xiàn)兩個(gè)關(guān)鍵字匹配,則處理進(jìn)行到步驟2214,其中DMAC執(zhí)行DMA命令。
針對(duì)APU關(guān)鍵字和存儲(chǔ)器存取關(guān)鍵字的關(guān)鍵字掩碼為該系統(tǒng)提供了更大的靈活性。針對(duì)關(guān)鍵字的關(guān)鍵字掩碼將被屏蔽位轉(zhuǎn)換成通配符。例如,如果與APU關(guān)鍵字1906相關(guān)的關(guān)鍵字掩碼1908的最后兩位被設(shè)成“掩碼”(例如通過(guò)將關(guān)鍵字掩碼1908中的這些位設(shè)為1來(lái)指定),那么APU關(guān)鍵字可以是1或0,并且仍然與存儲(chǔ)器存取關(guān)鍵字匹配。例如,APU關(guān)鍵字可以是1010。該APU關(guān)鍵字通常只允許訪問(wèn)具有存取關(guān)鍵字1010的沙箱。然而,如果將用于該APU關(guān)鍵字的APU關(guān)鍵字掩碼設(shè)成0001,則可使用該APU關(guān)鍵字來(lái)實(shí)現(xiàn)對(duì)存取關(guān)鍵字為1010或1011的沙箱的訪問(wèn)。類(lèi)似地,掩碼設(shè)為0001的存取關(guān)鍵字1010可被APU關(guān)鍵字為1010或1011的APU訪問(wèn)。因?yàn)榭赏瑫r(shí)使用APU關(guān)鍵字掩碼和存儲(chǔ)器關(guān)鍵字掩碼,所以可確定APU對(duì)沙箱的各種可訪問(wèn)性。
本發(fā)明還為系統(tǒng)101的處理器提供了新的編程模型。該編程模型使用軟件單元102??梢詫⑦@些單元發(fā)送到網(wǎng)絡(luò)104上的任何處理器來(lái)進(jìn)行處理。這種新的編程模型還利用系統(tǒng)101的獨(dú)特模塊化體系結(jié)構(gòu)和系統(tǒng)101的處理器。
APU直接從APU局部存儲(chǔ)器處理軟件單元。APU不直接對(duì)DRAM中的任何數(shù)據(jù)或程序進(jìn)行操作。在APU處理這些數(shù)據(jù)和程序之前,將DRAM中的數(shù)據(jù)和程序讀取到APU的局部存儲(chǔ)器中。因此,APU的局部存儲(chǔ)器包括程序計(jì)數(shù)器,堆棧,和用于執(zhí)行這些程序的其它軟件組件。PU通過(guò)向DMAC發(fā)出直接存儲(chǔ)器存取(DMA)命令來(lái)控制APU。
圖23示出了軟件單元102的結(jié)構(gòu)。如該圖所示,軟件單元(例如軟件單元2302)包含路由信息部份2304和主體2306。路由信息部份2304中包含的信息取決于網(wǎng)絡(luò)104的協(xié)議。路由信息部份2304包含標(biāo)頭(header)2308,目的ID 2310,源ID 2312和回復(fù)ID 2314。目的ID包括網(wǎng)絡(luò)地址。例如,在TCP/IP協(xié)議下,網(wǎng)絡(luò)地址是網(wǎng)際協(xié)議(IP)地址。目的ID 2310還包括PE和APU的身份信息,其中應(yīng)當(dāng)向該P(yáng)E和APU發(fā)送單元以進(jìn)行處理。源ID 2314包含網(wǎng)絡(luò)地址,并標(biāo)識(shí)發(fā)出單元的PE和APU,以便在必要時(shí)允許目的PE和APU得到關(guān)于單元的附加信息。回復(fù)ID 2314包含網(wǎng)絡(luò)地址,并標(biāo)識(shí)關(guān)于單元的查詢,和單元處理的結(jié)果應(yīng)當(dāng)被送往的PE和APU。
單元主體2306包含與網(wǎng)絡(luò)協(xié)議無(wú)關(guān)的信息。圖23的分解部分示出了單元主體2306的詳細(xì)情況。單元主體2306的標(biāo)頭2320標(biāo)識(shí)單元主體的開(kāi)始。單元接口2322包含使用單元所必需的信息。該信息包括全局唯一ID 2324,所需的APU 2326,沙箱大小2328,以及前一個(gè)單元ID 2330。
全局唯一ID 2324在整個(gè)網(wǎng)絡(luò)104中唯一標(biāo)識(shí)軟件單元2302。根據(jù)源ID 2312,例如源ID 2312中的PE或APU的唯一標(biāo)識(shí),以及軟件單元2302的產(chǎn)生或發(fā)送時(shí)間和日期產(chǎn)生全局唯一ID 2324。所需的APU 2326提供執(zhí)行該單元所需的最小數(shù)量的APU。沙箱大小2328提供所需APU中為執(zhí)行單元而需要的相關(guān)DRAM中的受保護(hù)存儲(chǔ)器的數(shù)量。前一個(gè)單元ID 2330提供需要順序執(zhí)行(例如流數(shù)據(jù))的一組單元中的前一個(gè)單元的身份信息。
實(shí)現(xiàn)部份2332包含單元的核心信息。該信息包括DMA命令表2334,程序2336,以及數(shù)據(jù)2338。程序2336包含要由APU運(yùn)行的程序(稱為“apulets”),例如APU程序2360和2362,而數(shù)據(jù)2338包含要通過(guò)這些程序處理的數(shù)據(jù)。DMA命令表2334包含開(kāi)始程序所需要的一系列DMA命令。這些DMA命令包括DMA命令2340、2350、2355和2358。PU向DMAC發(fā)出這些DMA命令。
DMA命令2340包括VID 2342。VID 2342是APU的虛擬ID,它在DMA命令發(fā)出時(shí)被映射到物理ID。DMA命令2340還包括裝入命令2344和地址2346。裝入命令2344指示APU將特定信息從DRAM讀取到局部存儲(chǔ)器中。地址2346提供DRAM中包含該信息的虛擬地址。該信息可以是例如來(lái)自程序部份2336的程序,來(lái)自數(shù)據(jù)部份2338的數(shù)據(jù),或者其它數(shù)據(jù)。最后,DMA命令2340包括局部存儲(chǔ)器地址2348。該地址標(biāo)識(shí)局部存儲(chǔ)器中應(yīng)當(dāng)裝入信息的地址。DMA命令2350包含類(lèi)似的信息。也可能有其它的DMA命令。
DMA命令表2334還包括一系列的啟動(dòng)(kick)命令,例如啟動(dòng)命令2355和2358。啟動(dòng)命令是由PU向APU發(fā)出的、用來(lái)啟動(dòng)單元的處理的命令。DMA啟動(dòng)命令2355包括虛擬APU ID 2352,啟動(dòng)命令2354,以及程序計(jì)數(shù)器2356。虛擬APU ID 2352標(biāo)識(shí)要被啟動(dòng)的APU,啟動(dòng)命令2354提供有關(guān)的啟動(dòng)命令,程序計(jì)數(shù)器2356提供針對(duì)用于執(zhí)行程序的程序計(jì)數(shù)器的地址。DMA啟動(dòng)命令2358提供針對(duì)同一APU或另一APU的類(lèi)似信息。
如前面提到的,PU把APU看作獨(dú)立的處理器,而不是協(xié)處理器。因此,為了控制APU執(zhí)行的處理,PU使用類(lèi)似于遠(yuǎn)程過(guò)程調(diào)用的命令。這些命令被叫做“APU遠(yuǎn)程過(guò)程調(diào)用”(ARPC)。PU通過(guò)向DMAC發(fā)出一系列DMA命令來(lái)執(zhí)行ARPC。DMAC將APU程序及其相關(guān)的棧幀裝入到APU的局部存儲(chǔ)器中。然后,PU向APU發(fā)出初始啟動(dòng)來(lái)執(zhí)行APU程序。
圖24說(shuō)明了用于執(zhí)行apulet的ARPC的步驟。圖24的第一部分2402說(shuō)明了在啟動(dòng)指定APU對(duì)apulet的處理時(shí)PU執(zhí)行的步驟,并且圖24的第二部分2404說(shuō)明了指定APU在處理apulet時(shí)執(zhí)行的步驟。
在步驟2410中,PU對(duì)apulet進(jìn)行評(píng)估,并且然后指定用于處理apulet的APU。在步驟2412中,PU通過(guò)向DMAC發(fā)出設(shè)定用于所需的一或多個(gè)沙箱的存儲(chǔ)器存取關(guān)鍵字的命令,在DRAM中分配用于執(zhí)行apulet的空間。在步驟2414中,PU使能針對(duì)指定APU的中斷請(qǐng)求,以通知apulet的完成。在步驟2418中,PU向DMAC發(fā)出將apulet從DRAM裝入到APU的局部存儲(chǔ)器中的DMA命令。在步驟2420中,執(zhí)行該DMA命令,并且將apulet從DRAM讀取到APU的局部存儲(chǔ)器中。在步驟2422中,PU向DMAC發(fā)出將與apulet相關(guān)的棧幀從DRAM裝入到APU的局部存儲(chǔ)器中的DMA命令。在步驟2423中,執(zhí)行該DMA命令,并且將棧幀從DRAM讀取到APU的局部存儲(chǔ)器中。在步驟2424中,PU發(fā)出使DMAC向APU分配關(guān)鍵字的DMA命令,以允許APU針對(duì)在步驟2412中指定的一或多個(gè)硬件沙箱讀/寫(xiě)數(shù)據(jù)。在步驟2426中,DMAC用分配給APU的關(guān)鍵字更新關(guān)鍵字控制表(KTAB)。在步驟2428中,PU向APU發(fā)出啟動(dòng)程序處理的DMA命令“啟動(dòng)”。依據(jù)特定的apulet,PU在執(zhí)行特定ARPC時(shí)可以發(fā)出其它DMA命令。
如上面所指出的,圖24中的第二部分2404說(shuō)明了APU在執(zhí)行apulet時(shí)所執(zhí)行的步驟。在步驟2430中,APU響應(yīng)在步驟2428發(fā)出的啟動(dòng)命令而開(kāi)始執(zhí)行apulet。在步驟2432中,在apulet的指示下,APU評(píng)估apulet的相關(guān)棧幀。在步驟2434中,APU向DMAC發(fā)出多個(gè)DMA命令,以便將根據(jù)棧幀的需要而指定的數(shù)據(jù)從DRAM裝入到APU的局部存儲(chǔ)器中。在步驟2436中,執(zhí)行這些DMA命令,并且將數(shù)據(jù)從DRAM讀取到APU的局部存儲(chǔ)器中。在步驟2438中,APU執(zhí)行apulet并產(chǎn)生結(jié)果。在步驟2440中,APU向DMAC發(fā)出把結(jié)果存儲(chǔ)在DRAM中的DMA命令。在步驟2442中,執(zhí)行該DMA命令,并將apulet的結(jié)果從APU的局部存儲(chǔ)器寫(xiě)到DRAM中。在步驟2444中,APU向PU發(fā)出中斷請(qǐng)求,以通知ARPC已經(jīng)完成。
APU在PU的指示下獨(dú)立執(zhí)行任務(wù)的能力允許PU將一組APU,以及與一組APU相關(guān)的存儲(chǔ)器資源專(zhuān)用于執(zhí)行長(zhǎng)時(shí)間(extended)任務(wù)。例如,PU可以將一或多個(gè)APU,以及與這一或多個(gè)APU相關(guān)的一組存儲(chǔ)器沙箱專(zhuān)用于接收在長(zhǎng)時(shí)間段內(nèi)通過(guò)網(wǎng)絡(luò)104發(fā)送的數(shù)據(jù),并且將該期間內(nèi)接收到的數(shù)據(jù)指引到一或多個(gè)APU及其相關(guān)的存儲(chǔ)器沙箱,以便進(jìn)行進(jìn)一步的處理。該能力尤其利于處理通過(guò)網(wǎng)絡(luò)104傳輸?shù)牧鲾?shù)據(jù),例如MPEG流或流式ATRAC音頻或視頻數(shù)據(jù)。PU可將一或多個(gè)APU及其相關(guān)的存儲(chǔ)器沙箱專(zhuān)用于接收這些數(shù)據(jù),并將一或多個(gè)其它APU及其相關(guān)的存儲(chǔ)器沙箱專(zhuān)用于解壓縮和進(jìn)一步處理這些數(shù)據(jù)。換句話說(shuō),PU可在一組APU及其相關(guān)的存儲(chǔ)器沙箱中間建立用于處理這些數(shù)據(jù)的專(zhuān)用流水線關(guān)系。
然而,為了有效地執(zhí)行這種處理,在沒(méi)有發(fā)生包含數(shù)據(jù)流的apulet處理時(shí),流水線的專(zhuān)用APU和存儲(chǔ)器沙箱應(yīng)當(dāng)保持為該流水線專(zhuān)用。換句話說(shuō),在此期間專(zhuān)用APU及其相關(guān)的沙箱應(yīng)處于保留狀態(tài)。在完成apulet處理時(shí)進(jìn)行的APU及其相關(guān)一或多個(gè)存儲(chǔ)器沙箱的保留被稱為“常駐終止(resident termination)”。響應(yīng)來(lái)自PU的指令發(fā)生常駐終止。
圖25、圖26A和圖26B說(shuō)明了包含用于處理流數(shù)據(jù)(例如MPEG流數(shù)據(jù))的一組APU及其相關(guān)沙箱的專(zhuān)用流水線結(jié)構(gòu)的建立。如圖25所示,流水線結(jié)構(gòu)的部件包括PE 2502和DRAM 2518。PE2502包括PU 2504、DMAC 2506和多個(gè)APU,包括APU 2508、APU 2510和APU 2512。PU 2504、DMAC 2506和這些APU中間的通信通過(guò)PE總線2514進(jìn)行。寬帶總線2516將DMAC 2506連接到DRAM 2518。DRAM 2518包括多個(gè)沙箱,例如沙箱2520、沙箱2522、沙箱2524和沙箱2526。
圖26A說(shuō)明了建立專(zhuān)用流水線的步驟。在步驟2610中,PU2504分配APU 2508以處理網(wǎng)絡(luò)apulet。網(wǎng)絡(luò)apulet包含用于處理網(wǎng)絡(luò)104的網(wǎng)絡(luò)協(xié)議的程序。在這種情況下,該協(xié)議是傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)。符合該協(xié)議的TCP/IP數(shù)據(jù)包通過(guò)網(wǎng)絡(luò)104進(jìn)行傳輸。一旦接收到數(shù)據(jù)包,APU 2508處理這些數(shù)據(jù)包,并將包中的數(shù)據(jù)裝配到軟件單元102中。在步驟2612中,在網(wǎng)絡(luò)apulet的處理完成時(shí),PU 2504便命令A(yù)PU 2508執(zhí)行常駐終止。在步驟2614中,PU 2504指定PU 2510和2512來(lái)處理MPEG apulet。在步驟2615中,當(dāng)MEPG apulet處理完成時(shí),PU 2504也命令A(yù)PU 2510和2512執(zhí)行常駐終止。在步驟2616中,PU 2504指定沙箱2520作為由APU 2508和APU 2510訪問(wèn)的源沙箱。在步驟2618中,PU 2504指定沙箱2522作為由APU 2510訪問(wèn)的目的沙箱。在步驟2620中,PU2504指定沙箱2524作為由APU 2508和APU 2512訪問(wèn)的源沙箱。在步驟2622中,PU 2504指定沙箱2526作為由APU 2512訪問(wèn)的目的沙箱。在步驟2624中,APU 2510和APU 2512分別向源沙箱2520和源沙箱2524中的存儲(chǔ)器塊發(fā)送同步讀命令,以便將這些存儲(chǔ)器塊設(shè)成阻塞狀態(tài)。最后,處理轉(zhuǎn)到步驟2628,其中完成專(zhuān)用流水線的建立,并且保留專(zhuān)用于該流水線的資源。因此,APU 2508、2510、2512及其相關(guān)沙箱2520、2522和2524進(jìn)入保留狀態(tài)。
圖26B說(shuō)明了通過(guò)這個(gè)專(zhuān)用流水線處理MPEG流數(shù)據(jù)的步驟。在步驟2630中,處理網(wǎng)絡(luò)apulet的APU 2508在其局部存儲(chǔ)器中接收來(lái)自網(wǎng)絡(luò)104的TCP/IP數(shù)據(jù)包。在步驟2632中,APU 2508處理這些TCP/IP數(shù)據(jù)包,并將這些包中的數(shù)據(jù)裝配到軟件單元102中。在步驟2634中,APU 2508檢查軟件單元的標(biāo)頭2320(圖23),以確定單元中是否包含MEPG數(shù)據(jù)。如果單元中不包含MPEG數(shù)據(jù),則在步驟2636中,APU 2508將單元發(fā)送到DRAM 2518中指定的通用沙箱,以便由專(zhuān)用流水線中未包含的其它APU處理其它數(shù)據(jù)。APU2508還將此次發(fā)送通知給PU 2504。
另一方面,如果軟件單元包含MPEG數(shù)據(jù),則在步驟2638中,APU 2508檢查單元的前一個(gè)單元ID 2330(圖23),以識(shí)別單元所屬的MPEG數(shù)據(jù)流。在步驟2640中,APU 2508選擇專(zhuān)用流水線中用于處理該單元的APU。在這種情況下,APU 2508選擇APU 2510來(lái)處理這些數(shù)據(jù)。該選擇是根據(jù)前一個(gè)單元ID 2330和負(fù)荷平衡因素來(lái)進(jìn)行的。例如,如果前一個(gè)單元ID 2330表明該軟件單元所屬的MPEG數(shù)據(jù)流的前一個(gè)軟件單元被發(fā)送到APU 2510進(jìn)行處理,則通常也會(huì)將當(dāng)前軟件單元發(fā)送到APU 2510進(jìn)行處理。在步驟2642中,APU 2508發(fā)出將MPEG數(shù)據(jù)寫(xiě)到沙箱2520的同步寫(xiě)命令。由于該沙箱在之前被設(shè)成阻塞狀態(tài),所以在步驟2644中,自動(dòng)將MPEG數(shù)據(jù)從沙箱2520讀到APU 2510的局部存儲(chǔ)器中。在步驟2646中,APU 2510在其局部存儲(chǔ)器中處理MPEG數(shù)據(jù)以產(chǎn)生視頻數(shù)據(jù)。在步驟2648中,APU 2510將視頻數(shù)據(jù)寫(xiě)到沙箱2522中。在步驟2650中,APU 2510向沙箱2520發(fā)出同步讀取命令,以使該沙箱準(zhǔn)備接收另外的MPEG數(shù)據(jù)。在步驟2652中,APU 2510處理常駐終止。這種處理使這個(gè)APU進(jìn)入保留狀態(tài),在保留狀態(tài)期間,該APU等待處理MPEG數(shù)據(jù)流中另外的MPEG數(shù)據(jù)。
在一組APU及其相關(guān)沙箱中間可建立用于處理其它類(lèi)型據(jù)的其它專(zhuān)用結(jié)構(gòu)。例如,如圖27所示,可以建立專(zhuān)用APU組,例如APU 2702、2708和2714,用于對(duì)三維物體執(zhí)行幾何變換以產(chǎn)生二維顯示表。其它APU可進(jìn)一步處理(呈現(xiàn))這些二維顯示表以產(chǎn)生像素?cái)?shù)據(jù)。為執(zhí)行這種處理,將沙箱專(zhuān)用于APU 2702、2708和2414,以存儲(chǔ)三維物體,以及對(duì)這些物體進(jìn)行處理而產(chǎn)生的顯示表。例如,源沙箱2704、2710和2716專(zhuān)用于存儲(chǔ)分別由APU 2702、APU 2708和APU 2714處理的三維物體。以類(lèi)似的方式,目的沙箱2706、2712和2718專(zhuān)用于存儲(chǔ)分別由APU 2702、APU 2708和APU 2714對(duì)這些三維物體進(jìn)行處理而得到的顯示表。
協(xié)調(diào)APU 2720專(zhuān)用于在其局部存儲(chǔ)器中接收來(lái)自目的沙箱2706、2712和2718的顯示表。APU 2720在這些顯示表中進(jìn)行仲裁,并把它們發(fā)送到用于呈現(xiàn)像素?cái)?shù)據(jù)的其他APU。
系統(tǒng)101的處理器還使用絕對(duì)定時(shí)器。絕對(duì)定時(shí)器向APU及PE的其它單元提供時(shí)鐘信號(hào),該時(shí)鐘信號(hào)獨(dú)立于驅(qū)動(dòng)這些單元的時(shí)鐘信號(hào),并比其更快。絕對(duì)定時(shí)器的使用示于圖28。
如圖所示,絕對(duì)定時(shí)器為APU執(zhí)行任務(wù)確定時(shí)間預(yù)算。該時(shí)間預(yù)算提供完成這些任務(wù)的時(shí)間,該時(shí)間要比APU處理這些任務(wù)所需的時(shí)間要長(zhǎng)。結(jié)果,對(duì)于每項(xiàng)任務(wù),在時(shí)間預(yù)算內(nèi)存在忙時(shí)間段和等待時(shí)間段。根據(jù)這個(gè)時(shí)間預(yù)算編寫(xiě)所有apulet以用于處理,而不管APU的實(shí)際處理時(shí)間和速度如何。
例如,對(duì)于PE的特定APU,特定任務(wù)可在時(shí)間預(yù)算2804的忙時(shí)間段2802中被執(zhí)行。由于忙時(shí)間段2802比時(shí)間預(yù)算2804短,所以在時(shí)間預(yù)算中出現(xiàn)等待時(shí)間段2806。在該等待時(shí)間段中,APU進(jìn)入休眠模式,期間APU消耗的功率較小。
在時(shí)間預(yù)算2804期滿之前,其它APU或PE的其它單元不期望得到任務(wù)處理的結(jié)果。因此,通過(guò)使用由絕對(duì)定時(shí)器確定的時(shí)間預(yù)算,不管APU的實(shí)際處理速度如何,APU的處理結(jié)果總是協(xié)調(diào)的。
將來(lái),APU的處理速度會(huì)變得更快。然而,由絕對(duì)定時(shí)器確定的時(shí)間預(yù)算將保持相同。例如,如圖28所示,將來(lái)的APU將在更短的時(shí)間內(nèi)執(zhí)行任務(wù),因而將有更長(zhǎng)的等待時(shí)間段。因此,忙時(shí)間段2808比忙時(shí)間段2802短,而等待時(shí)間段2810比等待時(shí)間段2806長(zhǎng)。然而,由于根據(jù)由絕對(duì)定時(shí)器確定的相同時(shí)間預(yù)算編寫(xiě)程序以進(jìn)行處理,因此,仍然保持APU間處理結(jié)果的協(xié)調(diào)。結(jié)果,較快的APU可以處理為較慢APU編寫(xiě)的處理程序,而不會(huì)在期待該處理結(jié)果時(shí)引起沖突。
作為對(duì)用于建立APU之間的協(xié)調(diào)的絕對(duì)定時(shí)器的代替,對(duì)于因增強(qiáng)的或不同的運(yùn)算速度而產(chǎn)生的APU并行處理的協(xié)調(diào)問(wèn)題,PU或一或多個(gè)指定APU可分析APU在處理apulet時(shí)執(zhí)行的特定指令或微代碼。可以在指令中插入“無(wú)操作”(“NOOP”)指令,并由某些APU來(lái)執(zhí)行,以便保持APU的處理按apulet預(yù)期的正確順序完成。通過(guò)在指令中插入這些NOOP,可以保持APU執(zhí)行所有指令的正確定時(shí)。
雖然這里參照特定實(shí)施例對(duì)本發(fā)明進(jìn)行了說(shuō)明,但是我們應(yīng)該理解,這些實(shí)施例只是為了示例性地說(shuō)明本發(fā)明的原理和應(yīng)用。因此,我們應(yīng)該理解,在不脫離由所附權(quán)利要求限定的本發(fā)明的精神和范圍的條件下,可以對(duì)示例性的實(shí)施例進(jìn)行許多種修改,并且可以設(shè)計(jì)出其它的方案。
權(quán)利要求
1.一種計(jì)算機(jī)處理系統(tǒng),所述處理系統(tǒng)包括第一存儲(chǔ)器,用于存儲(chǔ)程序和與所述程序相關(guān)的數(shù)據(jù);多個(gè)第一處理單元,用于處理所述程序和所述相關(guān)數(shù)據(jù);存儲(chǔ)器控制器,用于控制所述第一處理單元對(duì)所述第一存儲(chǔ)器的訪問(wèn);第二存儲(chǔ)器,用于存儲(chǔ)存取表和關(guān)鍵字表,所述存取表包括多個(gè)存取條目,每個(gè)所述存取條目包含存取關(guān)鍵字,和所述第一存儲(chǔ)器內(nèi)與所述存取關(guān)鍵字相關(guān)的存儲(chǔ)器空間的標(biāo)識(shí),所述關(guān)鍵字表包括多個(gè)關(guān)鍵字條目,每個(gè)所述關(guān)鍵字條目包含所述第一處理單元中的一個(gè)的標(biāo)識(shí),和與所述第一處理單元相關(guān)的請(qǐng)求關(guān)鍵字;第二處理單元,用于控制所述第一處理單元對(duì)所述程序和所述相關(guān)數(shù)據(jù)的所述處理,所述第二處理單元可以構(gòu)造和維護(hù)所述存取表和所述關(guān)鍵字表,所述第二處理單元還可以指示所述第一處理單元中的任何一個(gè)處理所述程序中的一個(gè),所述一個(gè)第一處理單元在處理所述一個(gè)程序時(shí)可以向所述存儲(chǔ)器控制器發(fā)出請(qǐng)求以便訪問(wèn)所述第一存儲(chǔ)器內(nèi)的存儲(chǔ)位置,所述存儲(chǔ)器控制器可以響應(yīng)所述請(qǐng)求將所述關(guān)鍵字表中與所述一個(gè)處理單元相關(guān)的請(qǐng)求關(guān)鍵字與所述存取表中的存取關(guān)鍵字相比較,并且如果所述存取關(guān)鍵字中的一個(gè)對(duì)應(yīng)于所述關(guān)鍵字表中與所述一個(gè)第一處理單元相關(guān)的請(qǐng)求關(guān)鍵字,而所述存儲(chǔ)位置對(duì)應(yīng)于和所述存取表中標(biāo)識(shí)的所述一個(gè)存取關(guān)鍵字相關(guān)的存儲(chǔ)器空間,則執(zhí)行所述請(qǐng)求。
2.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),還包括多個(gè)局部存儲(chǔ)器,每個(gè)所述局部存儲(chǔ)器與所述第一處理單元中的一個(gè)相關(guān),其中通過(guò)指示所述存儲(chǔ)器控制器從所述第一存儲(chǔ)器向與所述一個(gè)第一處理單元相關(guān)的局部存儲(chǔ)器傳送所述一個(gè)程序,所述第二處理單元可以指示所述一個(gè)第一處理單元處理所述一個(gè)程序,所述一個(gè)第一處理單元此后處理來(lái)自所述局部存儲(chǔ)器的所述一個(gè)程序。
3.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中所述一個(gè)存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,所述存儲(chǔ)器控制器可以僅在所有所述多個(gè)第一位與所有所述多個(gè)第二位匹配時(shí)執(zhí)行所述請(qǐng)求。
4.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中所述一個(gè)存取關(guān)鍵字包括多個(gè)第一位,和關(guān)鍵字掩碼,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,所述存儲(chǔ)器控制器可以僅在所有所述多個(gè)第一位與所述多個(gè)第二位匹配,或者所述多個(gè)第一位中不與所述多個(gè)第二位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
5.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中所述一個(gè)存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,和關(guān)鍵字掩碼,所述存儲(chǔ)器控制器可以僅在所有所述多個(gè)第二位與所述多個(gè)第一位匹配,或者所述多個(gè)第二位中不與所述多個(gè)第一位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
6.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼。
7.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述存取條目還包含關(guān)鍵字掩碼。
8.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼,而每個(gè)所述存取條目還包含關(guān)鍵字掩碼。
9.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述存取條目還包含基位置條目和尺寸條目,所述基位置條目提供所述存儲(chǔ)器空間中與所述存取條目相關(guān)的所述第一存儲(chǔ)器內(nèi)的起始地址,而所述尺寸條目提供所述存儲(chǔ)器空間中與所述存取條目相關(guān)的所述第一存儲(chǔ)器內(nèi)的尺寸。
10.如權(quán)利要求1所述的計(jì)算機(jī)處理系統(tǒng),其中所述第一存儲(chǔ)器是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,并且是所述計(jì)算機(jī)處理系統(tǒng)的主存儲(chǔ)器。
11.一種計(jì)算機(jī)處理方法,所述方法包括在第一存儲(chǔ)器中存儲(chǔ)程序和與所述程序相關(guān)的數(shù)據(jù);通過(guò)多個(gè)第一處理單元處理所述程序和所述相關(guān)數(shù)據(jù);通過(guò)存儲(chǔ)器控制器控制所述第一處理單元對(duì)所述第一存儲(chǔ)器的訪問(wèn);通過(guò)第二處理單元在第二存儲(chǔ)器中構(gòu)造存取表和關(guān)鍵字表,所述存取表包括多個(gè)存取條目,每個(gè)所述存取條目包含存取關(guān)鍵字,和所述第一存儲(chǔ)器內(nèi)與所述存取關(guān)鍵字相關(guān)的存儲(chǔ)器空間的標(biāo)識(shí),所述關(guān)鍵字表包括多個(gè)關(guān)鍵字條目,每個(gè)所述關(guān)鍵字條目包含所述第一處理單元中的一個(gè)的標(biāo)識(shí),和與所述第一處理單元相關(guān)的請(qǐng)求關(guān)鍵字;通過(guò)所述第二處理單元控制所述第一處理單元對(duì)所述程序和所述相關(guān)數(shù)據(jù)的所述處理;通過(guò)所述第二處理單元指示所述第一處理單元中的任何一個(gè)處理所述程序中的一個(gè);在處理所述一個(gè)程序時(shí)從所述一個(gè)第一處理單元發(fā)出請(qǐng)求到所述存儲(chǔ)器控制器,以便訪問(wèn)所述第一存儲(chǔ)器內(nèi)的存儲(chǔ)位置;響應(yīng)所述請(qǐng)求,將所述關(guān)鍵字表中與所述一個(gè)第一處理單元相關(guān)的請(qǐng)求關(guān)鍵字與所述存取表中的存取關(guān)鍵字相比較;如果所述存取關(guān)鍵字中的一個(gè)對(duì)應(yīng)于所述關(guān)鍵字表中與所述一個(gè)處理單元相關(guān)的請(qǐng)求關(guān)鍵字,并且所述存儲(chǔ)位置對(duì)應(yīng)于和所述存取表中標(biāo)識(shí)的所述一個(gè)存取關(guān)鍵字相關(guān)的存儲(chǔ)器空間,則執(zhí)行所述請(qǐng)求。
12.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,還包括通過(guò)從所述第二處理單元向所述存儲(chǔ)器控制器發(fā)出命令以便從所述第一存儲(chǔ)器向與所述一個(gè)第一處理單元相關(guān)的局部存儲(chǔ)器傳送所述一個(gè)程序,通過(guò)所述第二處理單元指示所述一個(gè)第一處理單元處理所述一個(gè)程序,并且此后通過(guò)所述一個(gè)第一處理單元處理來(lái)自所述局部存儲(chǔ)器的所述一個(gè)程序。
13.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中所述一個(gè)存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,還包括通過(guò)所述存儲(chǔ)器控制器僅在所有所述多個(gè)第一位與所有所述多個(gè)第二位匹配時(shí)執(zhí)行所述請(qǐng)求。
14.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中所述一個(gè)存取關(guān)鍵字包括多個(gè)第一位,和關(guān)鍵字掩碼,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,還包括通過(guò)所述存儲(chǔ)器控制器僅在所有所述多個(gè)第一位與所述多個(gè)第二位匹配,或者所述多個(gè)第一位中不與所述多個(gè)第二位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
15.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中所述一個(gè)存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,和關(guān)鍵字掩碼,還包括通過(guò)所述存儲(chǔ)器控制器僅在所有所述多個(gè)第二位與所述多個(gè)第一位匹配,或者所述多個(gè)第二位中不與所述多個(gè)第一位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
16.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼。
17.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中每個(gè)所述存取條目還包含關(guān)鍵字掩碼。
18.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼,而每個(gè)所述存取條目還包含關(guān)鍵字掩碼。
19.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中每個(gè)所述存取條目還包含基位置條目和尺寸條目,所述基位置條目提供所述存儲(chǔ)器空間中與所述存取條目相關(guān)的所述第一存儲(chǔ)器內(nèi)的起始地址,而所述尺寸條目提供所述存儲(chǔ)器空間中與所述存取條目相關(guān)的所述第一存儲(chǔ)器內(nèi)的尺寸。
20.如權(quán)利要求11所述的計(jì)算機(jī)處理方法,其中所述第一存儲(chǔ)器是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,并且是所述計(jì)算機(jī)處理系統(tǒng)的主存儲(chǔ)器。
21.一種計(jì)算機(jī)處理系統(tǒng),所述處理系統(tǒng)包括第一存儲(chǔ)器,用于存儲(chǔ)程序和與所述程序相關(guān)的數(shù)據(jù),所述第一存儲(chǔ)器包括多個(gè)可尋址存儲(chǔ)位置,每個(gè)所述可尋址存儲(chǔ)位置包括與所述可尋址存儲(chǔ)位置相關(guān)的附加存儲(chǔ)段,并且包含針對(duì)所述可尋址存儲(chǔ)位置的存取關(guān)鍵字;多個(gè)第一處理單元,用于處理所述程序和所述相關(guān)數(shù)據(jù);存儲(chǔ)器控制器,用于控制所述第一處理單元對(duì)所述第一存儲(chǔ)器的訪問(wèn);第二存儲(chǔ)器,用于存儲(chǔ)包括多個(gè)關(guān)鍵字條目的關(guān)鍵字表,每個(gè)所述關(guān)鍵字條目包含所述第一處理單元中的一個(gè)的標(biāo)識(shí),和與所述第一處理單元相關(guān)的請(qǐng)求關(guān)鍵字;第二處理單元,用于控制所述第一處理單元對(duì)所述程序和所述相關(guān)數(shù)據(jù)的所述處理,所述第二處理單元可以分配和維護(hù)所述存取關(guān)鍵字,并且構(gòu)造和維護(hù)所述關(guān)鍵字表,所述第二處理單元還可以指示所述第一處理單元中的任何一個(gè)處理所述程序中的一個(gè),所述一個(gè)第一處理單元在處理所述一個(gè)程序時(shí)可以向所述存儲(chǔ)器控制器發(fā)出請(qǐng)求以便訪問(wèn)所述可尋址存儲(chǔ)位置中的一個(gè),所述存儲(chǔ)器控制器可以響應(yīng)所述請(qǐng)求將所述關(guān)鍵字表中與所述一個(gè)處理單元相關(guān)的請(qǐng)求關(guān)鍵字,與附加存儲(chǔ)段中包含的、和所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的存取關(guān)鍵字相比較,并且如果所述關(guān)鍵字表中與所述一個(gè)處理單元相關(guān)的請(qǐng)求關(guān)鍵字對(duì)應(yīng)于所述附加存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的請(qǐng)求關(guān)鍵字,則執(zhí)行所述請(qǐng)求。
22.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),還包括多個(gè)局部存儲(chǔ)器,每個(gè)所述局部存儲(chǔ)器與所述第一處理單元中的一個(gè)相關(guān),其中通過(guò)指示所述存儲(chǔ)器控制器從所述第一存儲(chǔ)器向與所述一個(gè)第一處理單元相關(guān)的局部存儲(chǔ)器傳送所述一個(gè)程序,所述第二處理單元可以指示所述一個(gè)第一處理單元處理所述一個(gè)程序,所述一個(gè)第一處理單元此后處理來(lái)自所述局部存儲(chǔ)器的所述一個(gè)程序。
23.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中所述存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的所述存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,所述存儲(chǔ)器控制器可以僅在所有所述多個(gè)第一位與所有所述多個(gè)第二位匹配時(shí)執(zhí)行所述請(qǐng)求。
24.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中所述存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的所述存取關(guān)鍵字包括多個(gè)第一位,和關(guān)鍵字掩碼,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,所述存儲(chǔ)器控制器可以僅在所有所述多個(gè)第一位與所述多個(gè)第二位匹配,或者所述多個(gè)第一位中不與所述多個(gè)第二位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
25.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中所述存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的所述存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,和關(guān)鍵字掩碼,所述存儲(chǔ)器控制器可以僅在所有所述多個(gè)第二位與所述多個(gè)第一位匹配,或者所述多個(gè)第二位中不與所述多個(gè)第一位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
26.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼。
27.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述附加存儲(chǔ)段還包含關(guān)鍵字掩碼。
28.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼,而每個(gè)所述附加存儲(chǔ)段還包含關(guān)鍵字掩碼。
29.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中每個(gè)所述附加存儲(chǔ)段還包含狀態(tài)信息,所述狀態(tài)信息有關(guān)與所述附加存儲(chǔ)段相關(guān)的可尋址存儲(chǔ)位置中存儲(chǔ)的數(shù)據(jù)的狀態(tài)。
30.如權(quán)利要求21所述的計(jì)算機(jī)處理系統(tǒng),其中所述第一存儲(chǔ)器是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,并且是所述計(jì)算機(jī)處理系統(tǒng)的主存儲(chǔ)器。
31.一種計(jì)算機(jī)處理方法,所述方法包括在第一存儲(chǔ)器中存儲(chǔ)程序和與所述程序相關(guān)的數(shù)據(jù),所述第一存儲(chǔ)器包含多個(gè)可尋址存儲(chǔ)位置,每個(gè)所述可尋址存儲(chǔ)位置包含與所述可尋址存儲(chǔ)位置相關(guān)的附加存儲(chǔ)段;在每個(gè)所述可尋址存儲(chǔ)位置的每個(gè)所述附加存儲(chǔ)段中存儲(chǔ)針對(duì)所述可尋址存儲(chǔ)位置的存取關(guān)鍵字;通過(guò)多個(gè)第一處理單元處理所述程序和所述相關(guān)數(shù)據(jù);通過(guò)存儲(chǔ)器控制器控制所述第一處理單元對(duì)所述第一存儲(chǔ)器的訪問(wèn);在第二存儲(chǔ)器中存儲(chǔ)包括多個(gè)關(guān)鍵字條目的關(guān)鍵字表,每個(gè)所述關(guān)鍵字條目包含所述第一處理單元中的一個(gè)的標(biāo)識(shí),和與所述第一處理單元相關(guān)的請(qǐng)求關(guān)鍵字;通過(guò)所述第二處理單元控制所述第一處理單元對(duì)所述程序和所述相關(guān)數(shù)據(jù)的所述處理;通過(guò)所述第二處理單元分配每個(gè)所述存取關(guān)鍵字;通過(guò)所述第二處理單元構(gòu)造所述關(guān)鍵字表;通過(guò)所述第二處理單元指示所述第一處理單元中的任何一個(gè)處理所述程序中的一個(gè);在處理所述一個(gè)程序時(shí)從所述一個(gè)第一處理單元發(fā)出請(qǐng)求到所述存儲(chǔ)器控制器,以便訪問(wèn)所述可尋址存儲(chǔ)位置中的一個(gè);響應(yīng)所述請(qǐng)求,將所述關(guān)鍵字表中與所述一個(gè)處理單元相關(guān)的請(qǐng)求關(guān)鍵字,與附加存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的存取關(guān)鍵字相比較;如果所述關(guān)鍵字表中與所述一個(gè)處理單元相關(guān)的請(qǐng)求關(guān)鍵字對(duì)應(yīng)于所述附加存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的所述存取關(guān)鍵字,執(zhí)行所述請(qǐng)求。
32.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,還包括通過(guò)指示所述存儲(chǔ)器控制器從所述第一存儲(chǔ)器向與所述一個(gè)第一處理單元相關(guān)的局部存儲(chǔ)器傳送所述一個(gè)程序,通過(guò)所述第二處理單元指示所述一個(gè)第一處理單元處理所述一個(gè)程序,并且此后通過(guò)所述一個(gè)第一處理單元處理來(lái)自所述局部存儲(chǔ)器的所述一個(gè)程序。
33.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中所述附加存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的所述存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,還包括通過(guò)所述存儲(chǔ)器控制器僅在所有所述多個(gè)第一位與所有所述多個(gè)第二位匹配時(shí)執(zhí)行所述請(qǐng)求。
34.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中所述附加存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的所述存取關(guān)鍵字包括多個(gè)第一位,和關(guān)鍵字掩碼,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,還包括通過(guò)所述存儲(chǔ)器控制器僅在所有所述多個(gè)第一位與所述多個(gè)第二位匹配,或者所述多個(gè)第一位中不與所述多個(gè)第二位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
35.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中所述附加存儲(chǔ)段中包含的、與所述一個(gè)可尋址存儲(chǔ)位置相關(guān)的所述存取關(guān)鍵字包括多個(gè)第一位,并且與所述一個(gè)第一處理單元相關(guān)的所述請(qǐng)求關(guān)鍵字包括多個(gè)第二位,和關(guān)鍵字掩碼,還包括通過(guò)所述存儲(chǔ)器控制器僅在所有所述多個(gè)第二位與所述多個(gè)第一位匹配,或者所述多個(gè)第二位中不與所述多個(gè)第一位匹配的所有位被所述關(guān)鍵字掩碼屏蔽時(shí),執(zhí)行所述請(qǐng)求。
36.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼。
37.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中每個(gè)所述附加存儲(chǔ)段還包含關(guān)鍵字掩碼。
38.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中每個(gè)所述關(guān)鍵字條目還包含關(guān)鍵字掩碼,而每個(gè)所述附加存儲(chǔ)段還包含關(guān)鍵字掩碼。
39.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中每個(gè)所述附加存儲(chǔ)段還包含狀態(tài)信息,所述狀態(tài)信息有關(guān)與所述附加存儲(chǔ)段相關(guān)的可尋址存儲(chǔ)位置中存儲(chǔ)的數(shù)據(jù)的狀態(tài)。
40.如權(quán)利要求31所述的計(jì)算機(jī)處理方法,其中所述第一存儲(chǔ)器是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,并且是所述計(jì)算機(jī)處理系統(tǒng)的主存儲(chǔ)器。
全文摘要
提供一種用于寬帶網(wǎng)絡(luò)上的高速處理的計(jì)算機(jī)體系結(jié)構(gòu)和編程模型。該體系結(jié)構(gòu)使用一致的模塊化結(jié)構(gòu),公用計(jì)算模塊和統(tǒng)一的軟件單元。公用計(jì)算模塊包括控制處理器,多個(gè)處理單元,由處理單元處理其程序的多個(gè)局部存儲(chǔ)器,直接存儲(chǔ)器存取控制器和共享主存儲(chǔ)器。還提供了一種用于協(xié)調(diào)處理單元從共享主存儲(chǔ)器讀數(shù)據(jù)和向其寫(xiě)數(shù)據(jù)的同步系統(tǒng)和方法。提供了硬件沙箱結(jié)構(gòu),用于確保處理單元正在處理的程序中間的數(shù)據(jù)不會(huì)被破壞。
文檔編號(hào)H04L29/06GK1496511SQ02806348
公開(kāi)日2004年5月12日 申請(qǐng)日期2002年3月19日 優(yōu)先權(quán)日2001年3月22日
發(fā)明者鈴置雅一, 山崎剛 申請(qǐng)人:索尼計(jì)算機(jī)娛樂(lè)公司