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