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