<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

在多個處理器上加載軟件的系統和方法

文檔序號:6429347閱讀:134來源:國知局

專利名稱::在多個處理器上加載軟件的系統和方法
技術領域
:本發明通常涉及在多個處理器上加載軟件的系統和方法。更具體地,本發明涉及從文件提取處理器類型并把對應于處理器類型的文件加載到處理器的系統和方法。
背景技術
:計算機系統正變得越來越復雜。計算機行業通常每18個月使諸如個人計算機,PDA及游戲控制臺(gamingconsoles)的計算機系統的性能增加一倍。為了使計算機行業完成這個任務,半導體行業生產每18個月在性能上增加一倍的集成電路。計算機系統基于集成電路的體系結構將集成電路用于特定功能。兩個基本體系結構是1)基于微處理器的體系結構,及2)基于數字信號處理器的體系結構。具有基于微處理器的體系結構的集成電路通常被用于處理控制操作,而具有基于數字信號處理器的體系結構的集成電路通常被用來處理信號處理功能(即數學運算)。隨著技術的演進,計算機行業及半導體行業在計算機系統設計中正使用兩種體系結構或處理器類型。軟件是計算機系統中另一個隨著集成電路的發展一起演進的要素。軟件開發人員以對應于執行代碼的處理器類型的方式編寫代碼。例如,處理器具有特定數量的寄存器及特定數量的算術邏輯單元(ALU),從而軟件開發人員將其代碼設計成最有效地使用寄存器及ALU。隨著半導體行業把多個處理器類型合并到單個器件中,并且隨著軟件開發人員編寫在多個處理器類型體系結構上執行的代碼,所遇到的挑戰是識別哪個文件將加載到特定處理器類型上。可執行文件通常使用把相關文件加載到存儲器的運行時刻加載程序。然而,運行時刻加載程序假定由正執行運行時刻加載程序的相同處理器執行相關文件。然而,在多處理器環境中,可能并非如此。另外,在異構處理器環境中,特定文件的代碼被針對特定處理器類型進行格式化,并且如果代碼被加載在不同處理器類型上,則不能運行。因此,需要一種用于把處理器類型與文件關聯并且把文件加載到對應于關聯的處理器類型的處理器的系統和方法。
發明內容已經發現,通過提取包含在文件頭中的處理器標識符,并且把文件加載在對應于已提取的處理器標識符的處理器上,可解決上述挑戰。計算機系統包含處理單元(PU)及協處理單元(SPU)。在PU加載操作系統期間,PU啟動并且初始化計算機系統。操作系統執行基本任務,諸如識別來自鍵盤的輸入,把輸出發送到顯示屏,跟蹤磁盤上的文件及目錄,及控制外部設備,諸如磁盤驅動器及打印機。操作系統包含一個內核,即操作系統的中央模塊,并且負責存儲器管理,進程管理,任務管理,及磁盤管理。內核把PU程序加載到PU的內部存儲器。在加載處理期間,內核識別對應于PU程序的運行時刻加載程序。運行時刻加載程序負責加載對象,解析符號,及加載其它對應于PU程序的文件(即數據,程序)。內核把運行時刻加載程序加載到PU的內部存儲器并且將控制傳遞給運行時刻加載程序。運行時刻加載程序識別PU程序依賴的諸如SPU文件的文件。運行時刻加載程序把SPU文件加載到PU的內部存儲器,并且從SPU文件頭提取處理器標識符。例如,SPU文件可以是ELF格式化文件,在這種情況下,文件的ELF頭中包含“機器類型SPU”,其是把文件關聯到SPU的處理器標識符。運行時刻加載程序基于SPU文件的處理器標識符確定SPU文件應當在SPU上運行,并且使用DMA命令向SPU發送SPU文件。SPU接收SPU文件并且把它存儲在SPU的本地存儲器中。SPU開始執行SPU文件,并且接著把SPU運行時刻加載程序加載在其內部存儲器中。在執行SPU文件期間,SPU運行時刻加載程序檢索并且加載SPU文件所依賴的文件。例如,SPU文件可以是圖形程序,從而它需要用于操作數據的插件模塊。SPU運行時刻加載程序識別出SPU文件需要插件,并且向PU發送請求。PU接收請求,并且從系統存儲器檢索插件。PU程序使用DMA命令向SPU運行時刻加載程序發送插件,從而SPU運行時刻加載程序把插件存儲在SPU內部存儲器中。SPU文件也可以使用如上所述的相同技術從PU程序接收數據。在一個實施例中,SPU運行時刻加載程序從系統存儲器獨立檢索插件和/或數據,而不需要PU程序的干預。在這個實施例中,SPU程序可以向PU發送確認消息,該消息指示SPU完成其處理任務。上述只是一個概述,因而肯定包含對細節的簡化,概括和省略;因此,本領域的技術人員會理解,這種概述只是說明性的,并非旨在進行任何方式的限制。本發明的如權利要求單獨限定的其它方面,發明特性及優點將在下面提供的非限制性詳細描述中變得清楚。通過參照附圖,本領域技術人員可更好地理解本發明及其各種目的,特性及優點。在不同附圖中使用相同的附圖標記指示類似或相同的組成部分。圖1圖解了根據本發明的計算機網絡的總體體系結構;圖2的圖例圖解了根據本發明的處理單元(PU)的結構;圖3的圖例圖解了根據本發明的寬帶引擎引擎(BE)的結構;圖4的圖例圖解了根據本發明的協處理單元(SPU)的結構;圖5的圖例圖解了根據本發明的處理單元,可視化器(visualizer)(VS)及光學接口的結構;圖6的圖例圖解了根據本發明的一個處理單元組合;圖7圖解了根據本發明的另一個處理單元組合;圖8圖解了根據本發明的另一個處理單元組合;圖9圖解了根據本發明的另一個處理單元組合;圖10圖解了根據本發明的另一個處理單元組合;圖11A圖解了根據本發明的芯片封裝內的光學接口的集成;圖11B的圖例圖解了使用圖11A的光學接口的處理器的一個配置;圖11C的圖例圖解了使用圖11A的光學接口的處理器的另一配置;圖12A圖解了根據本發明的存儲器系統的結構;圖12B圖解了根據本發明從第一寬帶引擎到第二寬帶引擎的數據寫入;圖13的圖例圖解了根據本發明的處理單元的共享存儲器的結構;圖14A圖解在圖13中示出的存儲器組的一個結構;圖14B圖解在圖13中示出的存儲器組的另一結構;圖15圖解了根據本發明的直接存儲器訪問控制器的結構;圖16圖解了根據本發明的直接存儲器訪問控制器的可選結構;圖17-31圖解了根據本發明的數據同步操作;圖32的三態存儲器圖根據本發明的數據同步模式圖解存儲器位置的各種狀態;圖33根據本發明圖解了硬件沙箱(sandbox)的密鑰控制表(keycontroltable)的結構;圖34根據本發明圖解了存儲硬件沙箱的存儲器訪問密鑰的模式;圖35根據本發明圖解了硬件沙箱的存儲器訪問控制表的結構;圖36是使用圖33的密鑰控制表及圖35的存儲器訪問控制表訪問存儲器沙箱的步驟的流程圖;圖37根據本發明圖解了軟件單元的結構;圖38是根據本發明向SPU發出遠程過程調用的步驟的流程圖;圖39根據本發明圖解了用于處理流數據的專用管道的結構;圖40是根據本發明在流數據的處理中由圖39的專用管道完成的步驟的流程圖;圖41根據本發明圖解了用于流數據處理的專用管道的可選結構;圖42根據本發明圖解了用于協議SPU對應用及數據的并行處理的絕對定時器的模式;圖43的圖例示出了初始化程序的處理單元,及程序的加載相關文件到協處理單元的運行時刻加載程序;圖44的圖例示出了接收組合文件,提取包含在組合文件中的協處理單元(SPU)文件,并且向SPU發送SPU文件的運行時刻加載程序;圖45的圖例示出了從處理單元(PU)程序接收插件的協處理單元(SPU)文件;圖46的圖例示出了從對應于SPU可執行文件的系統存儲器中獨立檢索插件的協處理單元(SPU);圖47A是示出包含在組合文件中的各種代碼行的用戶代碼;圖47B是示出包含在相關文件中的各種代碼行的用戶代碼;圖48的流程圖示出了在處理單元中執行程序及傳遞控制到程序的運行時刻加載程序時采取的步驟的流程圖;圖49的流程圖示出了在協處理單元(SPU)從處理單元(PU)接收文件及執行文件時采取的步驟;而圖50的模塊解了具有共享系統存儲器的主處理器和多個輔助處理器的處理單元。具體實施例方式以下描述旨在提供本發明例子的詳細描述,而不是對本發明自身的限制。而是,屬于本發明范圍的任何數量的變化在后面的權利要求中定義。根據本發明的計算機系統101的總體體系結構在圖1中示出。如此圖所示,系統101包含連接多個計算機及計算設備的網絡104。網絡104可以是LAN,全球網絡,諸如因特網,或任何其他計算機網絡。連接到網絡104的計算機及計算設備(網絡的“成員”)包含例如客戶端計算機106,服務計算機108,個人數字助理(PDA)110,數字電視(DTV)112及其它有線或無線計算機及計算設備。由網絡104的成員使用的處理器是由相同的通用計算機模塊構造。這些處理器也最好全部具有相同ISA并且根據相同指令集執行處理。包含在任何特定處理器內的模塊的數量取決于該處理器所需的處理能力。例如,由于系統101的服務器108比客戶端106執行更多的數據及應用處理,服務器108比客戶端106包含更多的計算模塊。另一方面,PDA110執行處理的量最少。因此,PDA110包含最小量的計算模塊。DTV112執行的處理量介于客戶端106及服務器108之間。因此,DTV112包含介于客戶端106及服務器108之間的數量的計算模塊。如下所述,各個計算模塊包含處理控制器及多個相同處理單元,用于執行通過網絡104發送的數據及應用的并行處理。系統101的這種同構結構利于可適應性,處理速度及處理效率。由于系統101的各個成員使用一或多個相同計算模塊(或某個部分)執行處理,執行數據及應用的實際處理的特定計算機或計算設備是不重要的。此外,具體應用及數據的處理可以在網絡的成員中間分享。通過唯一標識全系統中包括由系統101處理的數據及應用的單元(cell),處理結果可以被發送到請求處理的計算機或計算設備,而無需考慮這個處理發生的位置。由于執行這個處理的模塊具有通用結構并且使用通用ISA,避免了為在處理器中間實現兼容而增加的軟件層的計算負擔。這個體系結構及編程模型利于得到執行例如實時多媒體應用所需的處理速度。為了進一步利用系統101所帶來的處理速度及效率,由這個系統處理的數據及應用被封裝到唯一標識別的、統一格式化的軟件單元(softwarecell)102中。每個軟件單元102包含或能夠包含應用程序和數據。每個軟件單元也包含一個ID以全局標識遍及網絡104及系統101的單元。軟件單元的這種統一結構和遍及網絡的軟件單元的唯一標識,利于網絡的任何計算機或計算設備上對應用及數據的處理。例如,客戶端106可以設定軟件單元102,但由于客戶端106受處理能力的限制,將這個軟件單元發送到服務器108進行處理。因此,軟件單元可以在全網絡104遷移以根據網絡上處理資源的可用性進行處理。系統101的處理器和軟件單元的同構結構也避免了現在異構網絡的許多問題。例如,避免了設法允許在使用任何指令集的任何ISA上處理應用的低效編程模型,例如,諸如Java虛擬機的虛擬機。因此,系統101可以進一步實現比現在的網絡更有效和高效的寬帶處理。針對網絡104的所有成員的基本處理模塊是處理單元(PU)。圖2圖解了PU的結構。如該圖所示,PE201包括處理單元(PU)203,直接存儲器訪問控制器(DMAC)205及多個協處理單元(SPU),即,SPU207,SPU209,SPU211,SPU213,SPU215,SPU217,SPU219及SPU221。本地PE總線223在SPU,DMAC205及PU203中間發送數據及應用。例如,本地PE總線223可以具有傳統體系結構或被實現為分組交換網絡。分組交換網絡的實現在需要更多硬件的同時,增加了可用帶寬。可以使用各種方法構造PE201以實現數字邏輯。然而,PE201最好被構造成在硅質基底上使用互補金屬氧化物半導體(CMOS)的單個集成電路。基底的可選材料包含鎵砷化物(galliumarsinide),鎵鋁砷化物(galliumaluminumarsinide)及其它使用各種摻雜劑的所謂III-B化合物。也可以通過使用例如快速單通量量子(RSFQ)邏輯的超導材料實現PE201。PE201通過高帶寬存儲器連接227與動態隨機訪問存儲器(DRAM)225緊密關聯。DRAM225作為PE201的主存儲器。盡管DRAM225最好是動態隨機訪問存儲器,但是DRAM225可以通過使用例如作為靜態隨機訪問存儲器(SRAM),磁性隨機訪問存儲器(MRAM),光學存儲器或全息存儲器的其它裝置實現。DMAC205利于DRAM225及PE201的SPU和PU之間的數據傳送。如下面進一步討論的,DMAC205為各個SPU指定DRAM225內的專用區域,在該區域只有SPU可以寫數據并且只有SPU可以從該區域讀取數據。這個專用區域被稱為“沙箱”。例如,PU203可以是能獨立處理數據及應用的標準處理器。在操作中,PU203安排及協調SPU對數據及應用的處理。SPU最好是單指令、多數據(SIMD)處理器。在PU203的控制下,SPU以并行且獨立的方式執行這些數據及應用的處理。DMAC205控制PU203及SPU對存儲在共享DRAM225中的數據及應用的訪問。盡管PE201最好包含8個SPU,但是根據所需處理能力,在PU中可使用更多或更少數量的SPU。同時,諸如PE201的若干PU可以加入或封裝到一起以提供增強的處理能力。例如,如圖3所示,四個PU可以封裝或加入到一起,例如,在一或多個芯片封裝內,以構成網絡104的成員的單個處理器。這種結構被稱為寬帶引擎(BE)。如圖3所示,BE301包含四個PU,即,PE303,PE305,PE307及PE309。這些PU間的通信通過BE總線311進行。寬帶寬存儲器連接313提供共享DRAM315及這些PU之間的通信。代替BE總線311地,BE301的PU間的通信可以通過DRAM315及該存儲器連接進行。輸入/輸出(I/O)接口317及外部總線319提供寬帶引擎301和網絡104的其它成員之間的通信。BE301的各個FU以并行及獨立的方式執行數據及應用的處理,該方式類似于由PU的SPU執行的并行及獨立的應用及數據的處理。圖4圖解了SPU的結構。SPU402包含本地存儲器406,寄存器410,四個浮點單元412及四個整數單元414。然而,仍然根據所需的處理能力,可以使用更多或更低數量的浮點單元412及整數單元414。在一個最優實施例中,本地存儲器406包含128千字節的存儲器,并且寄存器410的容量是128乘128位。浮點單元412最好以每秒32千兆(billion)浮點運算的速度(32GFLOPS)操作,而整數單元414最好以每秒32千兆運算的速度(32GOPS)操作。本地存儲器406不是高速緩沖存儲器。本地存儲器406最好被構造為SRAM。對于SPU的超高速緩存一致性支持是不必要的。PU可以需要針對由PU初始化的直接存儲器訪問的超高速緩存一致性支持。然而,對于由SPU初始化的直接存儲器訪問或對于來自和到外部設備的訪問,不需要超高速緩存一致性支持。SPU402還包含用于針對SPU發送應用及數據的總線404。在一個最優實施例中,該總線是1024位寬。SPU402還包含內部總線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所示,處理器可以包括單個PU502。如上所述,該PU通常包括PU,DMAC和8個SPU。每個SPU包含本地存儲器(LS)。另一方面,處理器可以包括可視化器(VS)505的結構。如圖5所示,VS505包括PU512,DMAC514和四個SPU,即,SPU516,SPU518,SPU520和SPU522。通常由PU的其它四個SPU占用的芯片封裝內的空間在這種情況下由像素引擎508,圖像高速緩存510和陰極射線管控制器(CRTC)504占用。根據PU502或VS505需要的通信速度,光學接口506也可以包含在芯片封裝上。使用該標準化的模塊結構,能容易和有效地構造處理器的許多其它變型。例如,如圖6示出的處理器包括兩個芯片封裝,即,包括BE的芯片封裝602和包括四個VS的芯片封裝604。輸入/輸出(I/O)606提供芯片封裝602的BE和網絡104之間的接口。總線608提供芯片封裝602和芯片封裝604之間的通信。輸入輸出處理器(IOP)610控制進出I/O606的數據流。I/O606可以制造成專用集成電路(ASIC)。來自VS的輸出是視頻信號612。圖7圖解了針對具有兩個光學接口704和706的BE702的芯片封裝,所述接口用于向網絡104的其它成員(或本地連接的其它芯片封裝)提供超高速通信。例如,BE702可以作為網絡104上的服務器。圖8的芯片封裝包括兩個PE802和804以及兩個VS806和808。I/O810提供芯片封裝602和網絡104之間的接口。來自芯片封裝的輸出是視頻信號。例如,該結構可以作為圖形工作站。圖9圖解了另一個結構。該結構包含圖8中圖解的結構的處理能力的一半。代替兩個PU地,提供一個PE902,并且代替兩個VS地,提供一個VS904。I/O906具有圖8中圖解的I/O的帶寬的一半。然而,這種處理器也可以作為圖形工作站。最后的結構在圖10中示出。該處理器僅由單個VS1002和I/O1004構成。例如,該結構可以作為PDA。圖11A圖解了把光學接口集成到網絡104的處理器的芯片封裝。這些光學接口將光學信號轉換為電信號以及將電信號轉換為光學信號,并且光學接口可以由包含例如鎵砷化物,鋁鎵砷化物,鍺和其它元素或化合物的各種材料構成。如此圖所示,光學接口1104和1106被制造在BE1102的芯片封裝上。BE總線1108提供BE1102的PU,即,PE1110,PE1112,PE1114,PE1116和這些光學接口間的通信。光學接口1104包含兩個端口,即,端口1118和端口1120,并且光學接口1106也包含兩個端口,即,端口1122和端口1124。端口1118,1120,1122和1124被分別連接到光波導1126,1128,1130和1132。通過光學接口1104和1106的端口,經由這些光波導針對BE1102收發光信號。通過使用這種光波導和各個BE的四個光學端口,多個BE可以在各種結構中被連接在一起。例如,如圖11B所示,兩個或更多BE,例如BE1152,BE1154和BE1156,可以通過這種光學端口被串行連接。在這個例子中,BE1152的光學接口1166通過其光學端口連接到BE1154的光學接口1160的光學端口。以類似方式,BE1154上的光學接口1162的光學端口被連接到BE1156的光學接口1164的光學端口。在圖11C中圖解了矩陣結構。在該結構中,每個BE的光學接口被連接到其它兩個BE。如該圖所示,BE1172的光學接口1188的光學端口之一被連接到BE1176的光學接口1182的光學端口。光學接口1188的其它光學端口被連接到BE1178的光學接口1184的光學端口。以類似方式,BE1174的光學接口1190的光學端口之一被連接到BE1178的光學接口1184的另一個光學端口。光學接口1190的另一個光學端口被連接到BE1180的光學接口1186的光學端口。該矩陣結構能以類似方式擴展到其它BE。使用串行結構或矩陣結構,網絡104的處理器可以被構造成具有任何期望的規模和能力。當然,其它端口可以加到BE的光學接口上,或加到具有比BE更多或更低數量的PU的處理器,以構成其它結構。圖12A圖解了BE的DRAM的控制系統和結構。在具有其它規模以及包含或多或少PU的處理器中使用類似控制系統和結構。如此圖所示,交叉交換裝置(cross-barswitch)把具有包括BE1201的四個PU的每個DMAC1210連接到8個組控制1206。每個組控制1206控制DRAM1204的8個組1208(在此圖中只示出四個)。因此,DRAM1204包括總共64個組。在一個最優實施例中,DRAM1204具有64兆字節的容量,并且各個組具有1兆字節的容量。在此優選實施例中,各組內最小可尋址單元是1024位塊。BE1201還包含交換單元1212。交換單元1212允許BE上與BE1201緊耦合的其它SPU訪問DRAM1204。因此,第二個BE可以緊耦合到第一個BE,并且每個BE的每個SPU可以尋址的存儲器位置數量兩倍于SPU通常可訪問的存儲器位置數量。對第一BE的DRAM和對第二BE的DRAM的數據直接讀或寫可以通過諸如交換單元1212的交換單元進行。例如,如圖12B所示,為了實現此寫入,第一BE的SPU,例如,BE1222的SPU1220,向第二BE的DRAM,例如,BE1226的DRAM1228的存儲器位置發出寫命令(不象通常那樣向BE1222的DRAM1224發出)。BE1222的DMAC1230通過交叉交換裝置1221向組控制1234發送寫命令,并且組控制1234向連接到組控制1234的外部端口1232發送該命令。BE1226的DMAC1238接收寫命令,并且傳送該命令到BE1226的交換單元1240。交換單元1240識別包含在寫命令中的DRAM地址,并且通過BE1226的組控制1242向DRAM1228的組1244發送數據用于存儲在該地址。因此,交換單元1240允許DRAM1224和DRAM1228作為BE1226的SPU的單個存儲器空間。圖13示出了DRAM的64組的結構。這些組被排列成8行,即,行1302,1304,1306,1308,1310,1312,1314和1316,以及8列,即,列1320,1322,1324,1326,1328,1330,1332和1334。每行由組控制器控制。因此,每個組控制器控制8兆字節的存儲器。圖14A和14B圖解了用于存儲及訪問DRAM的最小可尋址存儲器單元,例如1024位塊,的不同結構。在圖14A中,DMAC1402在單個組1404中存儲8個1024位塊1406。另一方面,在圖14B中,當DMAC1412讀寫包含1024位塊的數據時,這些塊在兩個組,即,組1414和組1416之間交錯。因此,每個這樣的組包含十六個數據塊,并且每個數據塊包含512位。這種交錯可以利于DRAM的快速訪問,并且在某些應用的處理中有用。圖15圖解了PE內DMAC1504的體系結構。如此圖所示,包括DMAC1506的結構硬件被分布在整個PE,使得每個SPU1502直接訪問DMAC1506的結構節點1504。每個節點通過該節點直接訪問的SPU執行適于存儲器訪問的邏輯。圖16示出了DMAC的可選實施例,即,非分布式體系結構。在這種情況下,DMAC1606的結構硬件是集中式的。SPU1602和PU1604通過本地PE總線1607與DMAC1606通信。DMAC1606通過交叉交換裝置被連接到總線1608。總線1608被連接到DRAM1610。如上所述,PU的所有多個SPU可以獨立訪問共享DRAM中的數據。結果,第一個SPU可以在第二個SPU請求時操作本地存儲器中的特定數據。如果數據在該時刻被從共享DRAM提供給第二SPU,則由于第一SPU正在進行可改變數據值的處理,所以該數據無效。因此,如果第二處理器在該時刻從共享DRAM接收數據,第二處理器可能產生錯誤結果。例如,數據可以是全局變量的具體值。如果第一處理器在其處理期間改變此值,則第二處理器將接收過期的值。因此,需要一種同步SPU針對共享DRAM內存儲器位置的數據讀寫數據的模式(scheme)。該模式必須防止從這樣的存儲器位置讀取數據,其中另一SPU正在其本地存儲器中操作該存儲器位置的數據,因此該存儲器位置的數據不是最新的,并且防止把數據寫入到存儲當前數據的存儲器位置。為了克服這些問題,針對DRAM的每個可尋址存儲器位置,附加存儲器分段被分配在DRAM中,用于存儲涉及存儲在存儲器位置中的數據的狀態信息。此狀態信息包含滿/空(F/E)位,向存儲器位置請求數據的SPU的標識(SPUID),以及應當從中讀取所請求數據的SPU本地存儲器的地址(LS地址)。DRAM的可尋址存儲器位置可以是任何長度。在一個最優實施例中,此長度是1024位。F/E位設置為1指示存儲在相關存儲器位置的數據是最新的。另一方面,F/E位設置為0指示存儲在相關存儲器位置的數據不是最新的。如果當此位被設置成0時SPU請求數據,則防止SPU立即讀取數據。在這種情況下,標識請求數據的SPU的SPUID和標識此SPU的本地存儲器內的存儲器位置的LS地址被輸入到附加存儲器分段,其中SPU當數據變成最新時讀取數據到該存儲器位置。附加存儲器分段還分配給SPU的本地存儲器內的每個存儲器位置。此附加存儲器分段存儲一個位,被稱為“忙位”。忙位用于保留用于存儲從DRAM檢索的特定數據的相關LS存儲器位置。如果忙位針對本地存儲器中特定存儲器位置被設置成1,則SPU只能使用該存儲器位置用于這些特定數據的寫入。另一方面,如果忙位針對本地存儲器中特定存儲器位置被設置成0,則SPU能夠使用該存儲器位置用于任何數據的寫入。在圖17-31中圖解了該方式的例子,其中F/E位,SPUID,LS地址和忙位被用于同步針對PU的共享DRAM的數據的讀、寫。如圖17所示,一或多個PU,例如,PE1720,與DRAM1702交互。PE1720包含SPU1722和SPU1740。SPU1722包含控制邏輯1724,并且SPU1740包含控制邏輯1742。SPU1722還包含本地存儲器1726。該本地存儲器包含多個可尋址存儲器位置1728。SPU1740包含本地存儲器1744,并且此本地存儲器還包含多個可尋址存儲器位置1746。所有這些可尋址存儲器位置的長度最好是1024位。附加存儲器分段與每個LS可尋址存儲器位置相關。例如,存儲器分段1729和1734分別與本地存儲器位置1731和1732相關,并且存儲器分段1752與本地存儲器位置1750相關。如上所述,“忙位”被存儲在所有這些其它存儲器分段中。用若干X示出本地存儲器位置1732以指示該位置包含數據。DRAM1702包含多個可尋址存儲器位置1704,其中包含存儲器位置1706和1708。這些存儲器位置的長度最好也是1024位。附加存儲器分段同樣與所有這些存儲器位置相關。例如,附加存儲器分段1760與存儲器位置1706相關,并且附加存儲器分段1762與存儲器位置1708相關。涉及存儲在每個存儲器位置中的數據的狀態信息被存儲在與該存儲器位置相關的存儲器分段中。如上所述,這個狀態信息包含F/E位,SPUID和LS地址。例如,針對存儲器位置1708,這個狀態信息包含F/E位1712,SPUID1714和LS地址1716。使用狀態信息和忙位,能夠實現PU的SPU,或一組PU中間針對共享DRAM的數據同步讀、寫。圖18圖解了從SPU1722的LS存儲器位置1732向DRAM1702的存儲器位置1708同步寫入數據的發起。SPU1722的控制1724發起這些數據的同步寫入。由于存儲器位置1708為空,F/E位1712被設置成0。結果,在LS位置1732中的數據能夠被寫入存儲器位置1708。另一方面,如果該位被設置成1以指示存儲器位置1708已滿并且包含最新有效數據,則控制1722會接收差錯消息并且被禁止向這個存儲器位置寫數據。在圖19中示出了向存儲器位置1708成功同步寫入數據的結果。寫數據被存儲在存儲器位置1708,并且F/E位1712被設置成1。該設置指示存儲器位置1708滿,并且在該存儲器位置中的數據是最新及有效的。圖20圖解了從DRAM1702的存儲器位置1708向本地存儲器1744的LS存儲器位置1750同步讀取數據的發起。為了發起這個讀取,在LS存儲器位置1750的存儲器分段1752中的忙位被設置成1,以保留該儲器位置給這些數據。該忙位設置為1防止SPU1740在此存儲器位置存儲其它數據。如圖21所示,控制邏輯1742接著針對DRAM1702的存儲器位置1708發出同步讀命令。由于與這個存儲器位置相關的F/E位1712被設置成1,存儲在存儲器位置1708中的數據被認為是最新及有效的。結果,為準備把數據從存儲器位置1708傳送到LS存儲器位置1750,F/E位1712被設置成0。在圖22中示出該設置。該位設置為0指示在讀取這些數據之后,存儲器位置1708中的數據將無效。如圖23所示,接著,存儲器位置1708內的數據被從存儲器位置1708讀取到LS存儲器位置1750。圖24示出最后狀態。在存儲器位置1708中的數據的復本被存儲在LS存儲器位置1750。F/E位1712被設置成0以指示在存儲器位置1708中的數據無效。該無效是SPU1740對這些數據進行改變的結果。存儲器分段1752中的忙位也被設置成0。該設置指示現在LS存儲器位置1750可被SPU1740用于任何目的,即,該LS存儲器位置不再處于等待接收特定數據的保留狀態。因此,現在SPU1740能夠為任何目的訪問LS存儲器位置1750。圖25-31圖解了當DRAM1702的存儲器位置的F/E位被設置成0以指示在該存儲器位置中的數據不是最新或有效時,從DRAM1702的存儲器位置,例如存儲器位置1708,到SPU的本地存儲器的LS存儲器位置,例如本地存儲器1744的LS存儲器位置1752的同步數據讀取。如圖25所示,為了啟動這個傳送,在LS存儲器位置1750的存儲器分段1752中的忙位被設置成1,以保留該LS存儲器位置用于該數據傳送。如圖26所示,接著,控制邏輯1742針對DRAM1702的存儲器位置1708發出同步讀命令。由于與該存儲器位置相關的F/E位,即F/E位1712,被設置成0,則存儲在存儲器位置1708中的數據無效。結果,向控制邏輯1742發送信號以阻塞從該存儲器位置的即時數據讀取。如圖27所示,接著,該讀命令的SPUID1714及LS地址1716被寫入存儲器分段1762。在這種情況下,SPU1740的SPUID和LS存儲器位置1750的LS存儲器位置被寫入存儲器分段1762。因此當存儲器位置1708內的數據變成最新時,該SPUID和LS存儲器位置被用于確定當前數據被發送到的位置。當SPU寫數據到該存儲器位置時,存儲器位置1708中的數據變得有效及最新。在圖28中圖解了數據從例如SPU1722的存儲器位置1732到存儲器位置1708的同步寫入。由于該存儲器位置的F/E位1712被設置成0,因此允許這些數據的同步寫入。如圖29所示,在此寫入之后,存儲器位置1708中的數據變成最新及有效。因此,來自存儲器分段1762的SPUID1714和LS地址1716被立即從存儲器分段1762讀取,并且該信息接著被從此分段刪除。F/E位1712也被設置成0,以期即時讀取存儲器位置1708中的數據。如圖30所示,當讀取SPUID1714和LS地址1716時,該信息被立即用于把存儲器位置1708中的有效數據讀取到SPU1740的LS存儲器位置1750。圖31中示出了最后狀態。該圖示出了從存儲器位置1708復制到存儲器位置1750的有效數據,存儲器分段1752中的忙位設置為0并且存儲器分段1762中的F/E位1712設置為0。設置該忙位為0使LS存儲器位置1750現在能夠被SPU1740出于任何目的訪問。設置該F/E位為0指示存儲器位置1708中的數據不再最新及有效。圖32根據存儲在對應于一存儲器位置的存儲器分段中的F/E位,SPUID和LS地址的狀態,總結了上面描述的操作,以及DRAM的該存儲器位置的各種狀態。存儲器位置可以具有三個狀態。這三個狀態是空狀態3280,其中F/E位被設置成0并且沒有提供針對SPUID或LS地址的信息;滿狀態3282,其中F/E位被設置成1并且沒有提供針對SPUID或LS地址的信息;和阻塞狀態3284,其中F/E位被設置成0并且提供針對SPUID和LS地址的信息。如此圖所示,在空狀態3280,允許同步寫操作,并且導致轉變到滿狀態3282。然而,同步讀取操作導致向阻塞狀態3284轉變,因為當存儲器位置處于空狀態時,存儲器位置中的數據不是最新的。在滿狀態3282,允許同步讀取操作并且導致向空狀態3280轉變。另一方面,禁止滿狀態3282中的同步寫操作,以防止覆蓋有效數據。如果在此狀態中嘗試這種寫操作,則不會出現狀態改變,并且差錯消息被發送到SPU的相應控制邏輯。在阻塞狀態3284,允許把數據同步寫入到存儲器位置,并且導致向空狀態3280轉變。另一方面,禁止阻塞狀態3284中的同步讀取操作,以防止與在前的導致該狀態的同步讀取操作沖突。如果在阻塞狀態3284中嘗試同步讀取操作,則不會出現狀態改變,并且差錯消息被發送到SPU的相應控制邏輯。用于針對共享DRAM同步讀、寫數據的上述模式也可以被用于免除通常由處理器專用于從外部設備讀取數據和向外部設備寫數據的計算資源。此輸入/輸出(I/O)功能可以由PU執行。然而,使用該同步模式的修改,運行適當程序的SPU能夠執行此功能。例如,通過使用此模式,接收由外部設備發起的用于從I/O接口發送數據的中斷請求的PU,可以把此請求的處理分配給此SPU。接著,SPU向I/O接口發出同步寫命令。此接口接著通知外部設備數據現在可以被寫入DRAM。SPU接著向DRAM發出同步讀命令以把DRAM的相關存儲器空間設置成阻塞狀態。對于SPU的本地存儲器中接收數據所需的存儲器位置,SPU也將其忙位設置為1。在阻塞狀態,與DRAM的相關存儲器空間相關的附加存儲器分段包含SPU的ID和SPU的本地存儲器的相關存儲器位置的地址。外部設備接著發出同步寫命令以把數據直接寫入DRAM的相關存儲器空間。由于此存儲器空間處于阻塞狀態,數據被立即從此空間讀到附加存儲器分段中所標識的SPU的本地存儲器的存儲器位置。接著這些存儲器位置的忙位被設置成0。當外部設備完成數據寫入時,SPU向PU發出有關發送已完成的通知信號。因此,通過使用此模式,源自外部設備的數據傳送可以用PU上最小計算負載來處理。然而,分配此功能的SPU應當能夠向PU發出中斷請求,并且外部設備應當直接訪問DRAM。每個PU的DRAM包含多個“沙箱”。沙箱定義共享DRAM的區域,在該區域之外,特定SPU或SPU組不能讀或寫數據。這些沙箱提供安全性以防止一個SPU處理的數據被另一SPU處理的數據破壞。這些沙箱也允許從網絡104下載軟件單元到特定沙箱,并且軟件單元沒有可能破壞整個DRAM的數據。在本發明中,在DRAM和DMAC的硬件中實現沙箱。通過用硬件而不是軟件實現這些沙箱,獲得速度和安全性的優勢。PU的PU控制分配給SPU的沙箱。由于PU通常只操作信任的諸如操作系統的程序,此模式不會危害安全性。根據此模式,PU構建并且維護密鑰控制表(keycontroltable)。在圖33中圖解了此密鑰控制表。如此圖所示,每個密鑰控制表3302中的表項包含SPU的標識(ID)3304,該SPU的SPU密鑰3306以及密鑰掩碼3308。下面說明此密鑰掩碼的使用。密鑰控制表3302最好被存儲在諸如靜態隨機訪問存儲器(SRAM)的相對快速的存儲器中,并且與DMAC相關聯。密鑰控制表3302中的表項由PU控制。當SPU請求向DRAM的特定存儲器位置寫入數據,或從DRAM的特定存儲器位置讀取數據時,DMAC相對于與該存儲器位置相關的存儲器訪問密鑰,評估密鑰控制表3302中分配給該SPU的SPU密鑰3306。如圖34所示,專用存儲器分段3410被分配給DRAM3402的每個可尋址存儲器位置3406。針對存儲器位置的存儲器訪問密鑰3412被存儲在此專用存儲器分段。如上所述,也與每個可尋址存儲器位置3406相關的另一個附加專用存儲器分段3408存儲用于寫數據到存儲器位置以及從存儲器位置讀取數據的同步信息。在操作中,SPU向DMAC發出DMA命令。此命令包含DRAM3402的存儲器位置3406的地址。在執行此命令之前,DMAC使用SPU的ID3304在密鑰控制表3302中查找請求方SPU的密鑰3306。接著DMAC把請求方SPU的SPU密鑰3306與存儲在和SPU尋求訪問的DRAM的存儲器位置相關的專用存儲器分段3410中的存儲器訪問密鑰3412比較。如果兩個密鑰不匹配,則不執行DMA命令。另一方面,如果兩個密鑰匹配,則執行DMA命令以及請求的存儲器訪問。在圖35中圖解了可選實施例。在這個實施例中,PU還維護存儲器訪問控制表3502。存儲器訪問控制表3502包含針對DRAM內每個沙箱的表項。在圖35的特定例子中,DRAM包含64個沙箱。存儲器訪問控制表3502中的每個表項包含沙箱的標識(ID)3504,基存儲器地址3506,沙箱尺寸3508,存儲器訪問密鑰3510以及訪問密鑰掩碼3512。基存儲器地址3506提供DRAM中特定存儲器沙箱起始的地址。因此,沙箱尺寸3508提供沙箱的大小以及特定沙箱的端點。圖36是使用密鑰控制表3302以及存儲器訪問控制表3502執行DMA命令的步驟的流程圖。在步驟3602,SPU向DMAC發出DMA命令以訪問沙箱內的一或多個特定存儲器位置。此命令包含標識請求訪問的特定沙箱的沙箱ID3504。在步驟3604,DMAC使用SPU的ID3304在密鑰控制表3302中查找請求方SPU的密鑰3306。在步驟3606,DMAC使用命令中的沙箱ID3504在存儲器訪問控制表3502中查找與該沙箱相關的存儲器訪問密鑰3510。在步驟3608,DMAC把分配給請求方SPU的SPU密鑰3306與和沙箱相關的訪問密鑰3510比較。在步驟3610,確定兩個密鑰是否匹配。如果兩個密鑰不匹配,處理進行到步驟3612,在此步驟不執行DMA命令,并且差錯消息被發送到請求方SPU或PU,或二者。另一方面,如果在步驟3610發現兩個密鑰匹配,則處理執行到步驟3614,其中DMAC執行DMA命令。SPU密鑰的密鑰掩碼以及存儲器訪問密鑰向這個系統提供更大靈活性。密鑰的密鑰掩碼把被屏蔽位轉換成通配符。例如,如果與SPU密鑰3306相關的密鑰掩碼3308設置其最后兩位為“屏蔽”(例如通過設置密鑰掩碼3308中的這些位為1來指定),則SPU密鑰可以是1或0并且仍然匹配存儲器訪問密鑰。例如,SPU密鑰可以是1010。此SPU密鑰通常只允許訪問具有1010的訪問密鑰的沙箱。然而,如果此SPU密鑰的SPU密鑰掩碼被設置成0001,那么此SPU密鑰可以被用于獲得對具有1010或者1011的訪問密鑰的沙箱的訪問。類似地,具有設置為0001的掩碼的訪問密鑰1010可以通過具有1010或者1011的SPU密鑰的SPU訪問。由于SPU密鑰掩碼和存儲器密鑰掩碼可以被同時使用,能夠建立由SPU到沙箱的可訪問性的許多變化。本發明還針對系統101的處理器提供了新編程模型。此編程模型使用軟件單元102。這些單元能夠被發送到網絡104上的任何處理器進行處理。此新編程模型還使用系統101的獨特模塊化結構和系統101的處理器。由SPU從SPU的本地存儲器直接處理軟件單元。在DRAM中,SPU不直接操作任何數據或程序。在SPU處理這些數據和程序之前,DRAM中的數據和程序被讀取到SPU的本地存儲器。因此,SPU的本地存儲器包含程序計數器,堆棧和用于執行這些程序的其它軟件元素。PU通過向DMAC發出直接存儲器訪問(DMA)命令來控制SPU。圖37圖解了軟件單元102的結構。如此圖所示,例如,軟件單元3702的軟件單元包含路由信息部分3704和主體3706。包含在路由信息部分3704中的信息依賴于網絡104的協議。路由信息部分3704包含頭3708,目的ID3710,源ID3712和應答ID3714。目的ID包含網絡地址。例如,在TCP/IP協議下,網絡地址是網際協議(IP)地址。目的ID3710還包含PU和SPU的標識,其中單元應當發送到該PU和SPU以進行處理。源ID3712包含網絡地址,并且標識單元所來自的PU和SPU,以允許目的PU和SPU在必要時獲得有關單元的附加信息。應答ID3714包含網絡地址,并且標識PU和SPU,其中有關單元的查詢以及單元處理的結果應當被導向該PU和SPU。單元主體3706包含獨立于網絡協議的信息。圖37的分解部分示出了單元主體3706的細節。單元主體3706的頭3720標識單元主體3706的起始。單元接口3722包含單元使用所需的信息。此信息包含全局唯一ID3724,所需的SPU3726,沙箱尺寸3728以及前一單元ID3730。全局唯一ID3724唯一標識整個網絡104的軟件單元3702。根據源ID3712,例如源ID3712內的PU或SPU的唯一標識,以及軟件單元3702的生成或發送時間和日期,產生全局唯一ID3724。所需的SPU3726提供執行單元所需要的SPU的最小數量。沙箱尺寸3728提供執行單元所必須的、所需SPU的相關DRAM中的保護存儲器的數量。前一單元ID3730提供需要順序執行(例如流數據)的單元組內前一單元的標識。實現部分3732包含單元的核心信息。此信息包含DMA命令列表3734,程序3736和數據3738。程序3736包含由SPU運行的、例如SPU程序3760和3762的程序(稱作“spulet”),并且數據3738包含用這些程序處理的數據。DMA命令列表3734包含開始程序所需要的系列DMA命令。這些DMA命令包含DMA命令3740,3750,3755和3758。PU向DMAC發出這些DMA命令。DMA命令3740包含VID3742。VID3742是當發出DMA命令時SPU的映射到物理ID的虛擬ID。DMA命令3740還包含加載命令3744和地址3746。加載命令3744指示SPU把特定信息從DRAM讀取到本地存儲器。地址3746提供DRAM中包含此信息的虛擬地址。例如,信息可以是來自程序部分3736的程序,來自數據部分3738的數據或其它數據。最后,DMA命令3740包含本地存儲器地址3748。此地址標識本地存儲器中應當加載信息的地址。DMA命令3750包含類似信息。也可以是其它DMA命令。DMA命令列表3734也包含系列踢動(kick)命令,例如,踢動命令3755和3758。踢動命令是由PU向SPU發出的命令,用以啟動單元的處理。DMA踢動命令3755包含虛擬SPUID3752,踢動命令3754和程序計數器3756。虛擬SPUID3752標識要踢動的SPU,踢動命令3754提供相關踢動命令,并且程序計數器3756提供用于執行程序的程序計數器的地址。DMA踢動命令3758向相同SPU或另一SPU提供類似信息。如上所述,PU把SPU作為獨立處理器,而不是協處理器。因此,為了由控制SPU的處理,PU使用類似于遠程過程調用的命令。這些命令被稱為“SPU遠程過程調用”(SRPC)。PU通過向DMAC發出系列DMA命令來實現SRPC。DMAC加載SPU程序及其相關堆棧結構到SPU的本地存儲器。接著PU向SPU發出初始踢動以執行SPU程序。圖38圖解了執行spulet的SRPC的步驟。在圖38的第一部分3802中示出了在啟動指定SPU對spulet的處理時由PU執行的步驟,并且在圖38的第二部分3804中示出了在處理spulet時由指定SPU執行的步驟。在步驟3810,PU評估spulet并且接著指定用于處理spulet的SPU。在步驟3812,通過向DMAC發出MDA命令以便為必要的一或多個沙箱設置存儲器訪問密鑰,PU分配DRAM中的空間用于執行spulet。在步驟3814,PU使能針對指定SPU的中斷請求以通知spulet完成。在步驟3818,PU向DMAC發出DMA命令以把spulet從DRAM加載到SPU的本地存儲器。在步驟3820,執行DMA命令,并且把spulet從DRAM讀取到SPU的本地存儲器。在步驟3822,PU向DMAC發出DMA命令以把與spulet相關的堆棧結構從DRAM加載到SPU的本地存儲器。在步驟3823,執行DMA命令,并且把堆棧結構從DRAM讀取到SPU的本地存儲器。在步驟3824,PU發出針對DMAC的DMA命令以向SPU分配密鑰,從而允許SPU對在步驟3812指定的一或多個硬件沙箱讀、寫數據。在步驟3826,DMAC用分配給SPU的密鑰更新密鑰控制表(KTAB)。在步驟3828,PU向SPU發出DMA命令“踢動”以開始程序的處理。根據特定spulet,在特定SRPC的執行中可由PU發出其它DMA命令。如上所示,圖38的第二部分3804圖解了在執行spulet時SPU執行的步驟。在步驟3830,SPU響應在步驟3828發出的踢動命令開始執行spulet。在步驟3832,在spulet的指示下,SPU評估spulet的相關堆棧結構。在步驟3834,SPU向DMAC發出多個DMA命令以把指定為堆棧結構需要的數據從DRAM加載到SPU的本地存儲器。在步驟3836,執行這些DMA命令,并且把數據從DRAM讀取到SPU的本地存儲器。在步驟3838,SPU執行spulet并且產生結果。在步驟3840,SPU向DMAC發出DMA命令以存儲DRAM的結果。在步驟3842,執行DMA命令,并且把spulet的結果從SPU的本地存儲器寫入到DRAM。在步驟3844,SPU向PU發出中斷請求以通知SRPC已經完成。SPU在PU的指示下獨立執行任務的能力允許PU將一組SPU,以及與一組SPU相關的存儲器資源專用于執行擴展任務。例如,PU可以將一或多個SPU,以及與此一或多個SPU相關的一組存儲器沙箱專用于在擴展周期上接收網絡104上發送的數據,以及將在此周期接收的數據導向一或多個其它SPU及其相關的存儲器沙箱以進行進一步處理。此能力尤其有利于處理通過網絡104發送的流數據,例如,流MPEG或流ATRAC音頻或視頻數據。PU可以將一或多個SPU及其相關存儲器沙箱專用于接收這些數據,以及將一或多個其它SPU及其相關存儲器沙箱專用于解壓縮并且進一步處理這些數據。換句話說,PU能夠在一組SPU及其相關存儲器沙箱中間建立專用管道關系以處理這種數據。然而,為了有效執行這種處理,管道的專用SPU以及存儲器沙箱在沒有發生包括數據流的spulet的處理期間應當保持專用于管道。換句話說,在這些周期期間,專用SPU及其相關沙箱應當處于保留狀態。當spulet的處理完成時,SPU及其一或多個相關存儲器沙箱的保留被稱作“駐留終止”。駐留終止響應來自PU的指令而發生。圖39,40A以及40B圖解了專用管道結構的建立,其包括一組SPU及其相關沙箱,用于處理流數據,例如,流MPEG數據。如圖39所示,此管道結構的部件包含PE3902和DRAM3918。PE3902包含PU3904,DMAC3906和包含SPU3908,SPU3910和SPU3912的多個SPU。通過PE總線3914,在PU3904,DMAC3906和這些SPU間進行通信。寬帶寬總線3916連接DMAC3906到DRAM3918。DRAM3918包含例如沙箱3920,沙箱3922,沙箱3924和沙箱3926的多個沙箱。圖40A圖解了建立專用管道的步驟。在步驟4010,PU3904分配SPU3908以處理網絡spulet。網絡spulet包括用于處理網絡104的網絡協議的程序。在這種情況下,此協議是傳輸控制協議/網際協議(TCP/IP)。符合此協議的TCP/IP數據包通過網絡104發送。在接收時,SPU3908處理這些包并且將包中的數據裝配到軟件單元102中。在步驟4012,當網絡spulet的處理完成時,PU3904指示SPU3908執行駐留終止。在步驟4014,PU3904分配PU3910和3912以處理MPEGspulet。在步驟4015,當MPEGspulet的處理完成時,PU3904指示SPU3910和3912也執行駐留終止。在步驟4016,PU3904指定沙箱3920作為由SPU3908和SPU3910訪問的源沙箱。在步驟4018,PU3904指定沙箱3922作為由SPU3910訪問的目的沙箱。在步驟4020,PU3904指定沙箱3924作為由SPU3908和SPU3912訪問的源沙箱。在步驟4022,PU3904指定沙箱3926作為由SPU3912訪問的目的沙箱。在步驟4024,SPU3910和SPU3912分別向源沙箱3920和源沙箱3924內的存儲器塊發送同步讀命令,以設置這些存儲器塊為阻塞狀態。處理最后進行到步驟4028,其中專用管道的建立完成并且保留專用于管道的資源。因此,SPU3908,3910和3912及其相關沙箱3920,3922,3924和3926進入保留狀態。圖40B圖解了通過此專用管道處理流MPEG數據的步驟。在步驟4030,處理網絡spulet的SPU3908在其本地存儲器中接收來自網絡104的TCP/IP數據包。在步驟4032,SPU3908處理這些TCP/IP數據包并且將這些包內的數據裝配到軟件單元102中。在步驟4034,SPU3908檢查軟件單元的頭3720(圖37)以確定單元是否包含MPEG數據。如果單元不包含MPEG數據,那么,在步驟4036,SPU3908發送該單元到DRAM3918內指定的通用沙箱,以通過不包含在專用管道內的其它SPU處理其它數據。SPU3908還將此發送通知PU3904。另一方面,如果軟件單元包含MPEG數據,那么,在步驟4038,SPU3908檢查該單元的前一單元ID3730(圖37)以識別該單元屬于的MPEG數據流。在步驟4040,SPU3908選擇專用管道的SPU處理該單元。在這種情況下,SPU3908選擇SPU3910處理這些數據。此選擇是以前一單元ID3730和負載均衡系數為基礎的。例如,如果前一單元ID3730指示軟件單元所屬的MPEG數據流的前一軟件單元被發送到SPU3910進行處理,則當前軟件單元通常也將被發送到SPU3910進行處理。在步驟4042,SPU3908發出同步寫命令以把MPEG數據寫入到沙箱3920。由于此沙箱先前被設置成阻塞狀態,在步驟4044,MPEG數據自動被從沙箱3920讀取到SPU3910的本地存儲器。在步驟4046,SPU3910在其本地存儲器中處理MPEG數據以產生視頻數據。在步驟4048,SPU3910把視頻數據寫入沙箱3922。在步驟4050,SPU3910向沙箱3920發出同步讀命令以準備此沙箱來接收其它MPEG數據。在步驟4052,SPU3910處理駐留終止。此處理導致此SPU進入保留狀態,在此期間SPU等待處理MPEG數據流中的其它MPEG數據。其它專用結構可以在一組SPU及其相關沙箱中間建立以處理其它類型的數據。例如,如圖41所示,例如SPU4102,4108和4114的專用SPU組可以被建立以執行三維對象的幾何變換,以產生二維顯示列表。這些二維顯示列表可以由其它SPU進一步處理(呈現)以產生像素數據。為執行此處理,沙箱被專門用于SPU4102,4108和4114,用于存儲三維對象和這些對象的處理產生的顯示列表。例如,源沙箱4104,4110和4116被專門用于存儲分別由SPU4102,SPU4108和SPU4114處理的三維對象。以類似方式,目的沙箱4106,4112和4118被專門用于存儲分別由SPU4102,SPU4108和SPU4114處理這些三維對象而產生的顯示列表。協同SPU4120專門用于在其本地存儲器中從目的沙箱4106,4112和4118接收顯示列表。SPU4120在這些顯示列表中間做出仲裁,并且把它們發送給其它SPU以呈現像素數據。系統101的處理器還使用絕對定時器。絕對定時器向SPU和PU的其它單元提供時鐘信號,該時鐘信號既獨立于又快于驅動這些單元的時鐘信號。圖42中圖解了此絕對定時器的使用。如此圖所示,絕對定時器建立了針對SPU的任務執行的時間預算。此時間預算提供完成這些任務的時間,該時間長于SPU處理任務所需的時間。結果,針對每個任務,在時間預算內存在忙周期和后備周期。無論SPU的實際處理時間或速度如何,所有spulets被編寫成根據此時間預算進行處理。例如,針對PU的特定SPU,特定任務可以在時間預算4204的忙周期4202期間執行。由于忙周期4202小于時間預算4204,在時間預算期間出現后備周期4206。在此后備周期期間,SPU進入休眠模式,在此休眠模式期間SPU消耗較少功率。其它SPU或PU的其它單元不預期任務處理的結果,直到時間預算4204過期。因此,通過使用由絕對定時器建立的時間預算,無論SPU的實際處理速度如何,SPU處理的結果始終是協同的。在將來,SPU處理的速度將變得更快。然而,由絕對定時器建立的時間預算將保持原樣。例如,如圖42所示,將來SPU將在較短的周期內執行任務,并且因此將具有較長后備周期。因此,忙周期4208比忙周期4202更短,并且后備周期4210長于后備周期4206。然而,由于程序被編寫成根據絕對定時器建立的相同時間預算進行處理,則SPU間處理結果的協同得到維護。結果,更快速的SPU能夠處理針對較慢SPU編寫的程序,而不會導致處理結果的期待時間的沖突。在代替用絕對定時器建立SPU之間的協同的一個方式中,PU或一或多個指定SPU可以分析由SPU在處理spulet時執行的特定指令或微碼,以解決由增強或不同操作速度產生的SPU并行處理的協同問題。“無操作”(“NOOP”)指令可以被插入到指令中,并且由某些SPU執行以維護由spulet期待的SPU的處理的正確順序完成。通過插入這些NOOP到指令中,SPU對所有指令的執行的正確定時能夠被保持。圖43的圖例示出了啟動程序的處理單元,以及程序的加載相關文件到協處理單元的運行時刻加載程序。計算機系統包含處理單元(PU)4300及協處理單元(SPU)4350。在PU4300加載操作系統期間,PU4300啟動并且初始化計算機系統。操作系統執行基本任務,諸如識別來自鍵盤的輸入,把輸出發送到顯示屏,跟蹤磁盤上的文件及目錄,以及控制外圍設備,諸如磁盤驅動器及打印機。操作系統包含諸如內核4320的內核。內核4320是操作系統的中央模塊,其加載并且保持在存儲器4325中。存儲器4325是PU4300的本地存儲器區。內核4320負責存儲器管理,進程和任務管理,以及磁盤管理。內核4320加載PU程序4312到存儲器4325,該程序是由PU4300執行的程序。在加載處理期間,內核4320識別對應于PU程序4312的運行時刻加載程序4315。運行時刻加載程序4315負責加載對象,解析符號,及加載其它對應于PU程序4312的文件(即數據,程序)。內核4320加載運行時刻加載程序4315到存儲器4325,并且將控制傳遞給運行時刻加載程序4315。運行時刻加載程序4315開始識別PU程序4320依賴的諸如SPU文件4340的文件。運行時刻加載程序把SPU文件4340加載到存儲器4325,并且從SPU文件4390頭提取處理器標識符。例如,SPU文件4340可以是ELF格式化文件,其中文件的ELF頭中包含表示要加載的處理器的“機器類型”(參見圖47A,47B以及對應文本以了解有關頭信息的詳情)。運行時刻加載程序4315基于SPU文件4340的處理器標識符確定SPU文件4340應當在SPU4350上運行,并且使用諸如DMA4360的DMA命令向SPU4350發送SPU文件4340。SPU4350接收SPU文件4340并且把它存儲在存儲器4370中。存儲器4370是SPU4350的本地存儲器區。SPU4350現在能夠執行SPU文件4340(參見圖45,46,以及對應文本以了解有關代碼執行的詳情)。圖44的圖例示出了接收組合文件,提取包含在組合文件中的協處理單元(SPU)文件,并且向SPU發送SPU文件的運行時刻加載程序。圖44類似于圖43,除了PU4300處理圖44中的組合文件以外,這與圖43所示處理分立文件的方式相反。組合文件4400是組合可執行程序,包含32位(或64位)PU代碼和SPU代碼(例如SPU文件4340)。組合文件4400也可以被視作在PU可執行程序中具有嵌入SPU代碼。運行時刻加載程序4315加載組合文件4400到存儲器4325。接著運行時刻加載程序4315分析組合文件4400的文件頭以識別在組合文件4400中是否包含以SPU4350為目標的嵌入代碼(參見圖47A,47B,以及對應文本以了解有關文件頭的詳情)。運行時刻加載程序4315從組合文件4400的頭信息中識別SPU文件4340,并且使用DMA4430向存儲器4370發送SPU文件4340。DMA4430為PU4300提供一種從其存儲器(例如存儲器4325)直接向SPU4350的存儲器(例如存儲器4370)發送數據的機制。一旦SPU4350接收SPU文件4340,SPU4350就準備好執行SPU文件4340(參見圖45,46,以及對應文本以了解有關代碼執行的詳情)。圖45示出了從處理單元(PU)程序接收插件的協處理單元(SPU)文件的框圖。當PU4300執行PU程序4512時,SPU4350從PU4300接收SPU文件4340(參見圖43,44和對應文本以了解有關SPU文件發送的詳情)。PU程序4512類似于如圖43所示的PU程序4312,并且還類似于圖44示出的組合文件4400的PU可執行部分。SPU文件4340是可執行文件,其中包含諸如運行時刻加載程序4530的其自身的運行時刻加載程序。在執行SPU文件4340期間,運行時刻加載程序4530檢索并且加載SPU文件4340所依賴的文件。例如,SPU文件4340可以是圖形程序,從而它需要用于操作數據的插件模塊。運行時刻加載程序4530識別出SPU文件4340需要插件,并且向PU程序4512發送請求4550。PU程序4512接收請求,并且從系統存儲器4310檢索插件4510。系統存儲器4310與圖43所示相同。PU程序4512使用DMA4560向運行時刻加載程序4530發送插件4510,其中運行時刻加載程序4530接著把插件4510存儲在存儲器4370中以便SPU文件4340訪問。SPU文件4340也可以使用如上所述的相同技術從PU程序4512接收數據。當SPU文件4340使用插件4510完成處理數據時,SPU文件4340向PU4300發送指示SPU4350完成處理數據的確認。在一個實施例中,確認4570可以包含處理的數據,或可以包含存儲器位置參考,其中PU4300從該參考檢索結果數據。圖46的圖例示出了從系統存儲器中獨立檢索對應于SPU可執行文件的插件的協處理單元(SPU)。圖46不同于圖45的地方是,SPU文件4340從系統存儲器獨立檢索插件和/或數據,而不需要PU程序4512的干預。當PU4300執行PU程序4512時,SPU4350從PU4300接收SPU文件4340(參見圖43,44,以及對應文本以了解有關SPU文件發送的詳情)。SPU文件4340是可執行文件,其中包含諸如運行時刻加載程序4530的其自身的運行時刻加載程序。在執行SPU文件4340期間,運行時刻加載程序4530檢索并且加載SPU文件4340所依賴的文件。例如,SPU文件4340可以是圖形程序,從而它需要用于操作數據的插件模塊。運行時刻加載程序4530識別SPU文件4340需要諸如插件4510的插件,并且通過檢查對應于系統存儲器4500的存儲器映射來識別在系統存儲器4500中插件4510所處的位置。在一個實施例中,SPU4350包含存儲器管理單元(MMU)。MMU包含直接存儲器訪問(DMA),其中SPU4350訪問系統存儲器。在這個實施例中,運行時刻加載程序4530使用DMA4640從系統存儲器4500檢索插件4510,并且將插件4510加載到存儲器4370。SPU文件4340使用插件4510處理數據,并且完成時向PU程序4612發送確認4650。圖47A是示出包含在組合文件中的各種代碼行的用戶代碼。組合文件是可執行程序,該文件包含32位(或64位)PU代碼和SPU代碼(參見圖44和對應文本以了解有關組合文件的詳情)。組合文件也可以被解釋為在PU可執行程序中具有嵌入的SPU代碼。代碼4700包含ELF頭4710和部分頭(sectionheader)4730。ELF頭4710包含特定于組合文件并且標識運行組合文件的處理器的類型的代碼。尤其是,行4720包含通知運行時刻加載程序應當將組合文件加載到PU以進行處理的“PU”機器類型。在一個實施例中,可以使用諸如擴展通用對象文件格式(XCOFF)或便攜可執行通用對象文件格式(PECOFF)的其它文件格式。部分頭4730包含嵌入文件的內容。尤其,行4740包含SPU程序“.spuelf”程序,運行時刻加載程序把該程序加載到SPU的本地存儲器并且獨立于PU執行。在一個實施例中,當標記被加載并且映射到系統存儲器時,標記可以包含在提供訪問文件的.spuelf文件中。在一個實施例中,當SPU代碼在連接時間被PU代碼引用時,SPU代碼被隱含地載入系統存儲器。在另一個實施例中,當動態確定加載SPU代碼時,SPU代碼被明確載入系統存儲器。在這些實施例中,標記指向系統存儲器中SPU程序或插件的SPUELF圖像。由于PU代碼控制和初始化SPU活動,可以使用專門API(應用編程接口)指示位于特定標記(即系統存儲器地址)的SPU代碼應當加載在SPU上并且被執行。當這些API之一被調用,在存儲器中分析SPUELF圖像,使用ELF“機器類型”驗證這是SPUELF圖像,并且接著使用DMA處理發送給有效SPU。這些API可以考慮為運行時刻加載程序的擴展,即當PU程序請求初始化SPU活動并且加載/執行SPU代碼時,這些API被動態調用。圖47B是示出包含在相關文件中的每種代碼行的用戶代碼。由于代碼4750是獨立文件(即非嵌入),它不需要如圖47A所示的部分頭。取而代之,ELF頭4760包含機器類型,諸如包含在行4770中的“SPU”,其通知運行時刻加載程序應當把獨立程序加載到SPU上。圖48的流程圖示出了在處理單元中采取的執行程序及傳遞控制到程序的運行時刻加載程序的步驟。PU處理在4800開始,在此PU在PU的諸如存儲器4325的存儲器中加載內核。內核從系統存儲器4310檢索可執行文件,并且在步驟4820將可執行文件加載在存儲器4325中。系統存儲器4310和存儲器4325與圖43所示相同。內核從系統存儲器4310檢索對應于可執行文件的運行時刻加載程序,并且在步驟4830將運行時刻加載程序加載在存儲器4325中。運行時刻加載程序負責加載可執行文件所依賴的文件。例如,可執行文件可以是退休預測程序,并且運行時刻加載程序可以加載諸如利率應用程序的相關文件。在步驟4840內核將控制傳遞到運行時刻加載程序,在此運行時刻加載程序在步驟4850從系統存儲器4310檢索第一個相關文件。使用上面描述的例子,運行時刻加載程序從系統存儲器4310檢索利率應用程序。在步驟4860,運行時刻加載程序加載相關文件到存儲器4325。相關文件包含諸如ELF頭的頭,頭包含諸如機器類型的處理器標識符,此標識符辨別應當運行相關文件的處理器的類型(參見圖47A,47B,以及對應文本以了解有關處理器標識符的詳情)。在步驟4865,運行時刻加載程序提取相關文件的對應處理器標識符。確定處理器標識符是否對應于PU處理器或SPU處理器(判定4870)。使用上面描述的例子,運行時刻加載程序確定利率應用是否應當加載在PU或SPU上。如果處理器標識符對應于SPU,則判定4870分支到“否”分支4872,由此在處理時從PU的存儲器(例如存儲器4325)向SPU4350DMA傳送相關文件(步驟4880)。SPU4350與圖43示出的SPU相同。另一方面,如果相關文件應當在PU上執行,則判定4870分支到“是”分支4878,在此由于相關文件已經加載在PU的存儲器(例如存儲器4325)中,所以不需要DMA步驟。確定可執行文件是否有更多相關文件要加載(判定4890)。如果可執行文件有更多相關文件要加載,則判定4890分支到″是″分支4892,該分支循環返回以檢索(步驟4895)并且處理下一個相關文件。此循環繼續執行,直到不再有需要處理的相關文件為止,在此判定4890分支到″否″分支4898,由此處理在4899結束。圖49的流程圖示出了在協處理單元(SPU)中采取的從處理單元(PU)接收文件及執行文件的步驟。處理在4900開始,由此SPU從PU4300接收相關文件并且存儲該文件在存儲器4370中(步驟4910)。PU4300與圖43示出的PU相同。存儲器4370是SPU的內部存儲器并且與圖43所示相同。確定SPU是否應當開始處理對應于相關文件的數據,或是否應當等待來自PU4300的請求(判定4920)。例如,PU4300可以配置多個處理器,并且PU4300不希望SPU開始處理數據,直到配置了其它處理器。如果SPU應當等待來自PU4300的請求,則判定4920分支到″否″分支4922,由此處理進行等待,直到它接收來自PU4300的請求為止(步驟4930)。另一方面,如果處理應當使用相關文件處理數據而不需要等待來自PU4300的請求,則判定4920分支到″是″分支4928,從而略過請求等待步驟。在步驟4935,SPU執行文件并且文件初始化運行時刻加載程序。運行時刻加載程序負責加載對象,解析符號,及加載其它對應于SPU的相關文件的文件(即數據,程序)。在步驟4938,運行時刻加載程序識別相關文件需要的插件和/或數據。例如,相關文件可以是圖形應用并且圖形應用需要邊沿平滑插件。確定SPU是否應當獨立于PU4300地檢索插件和/或數據。此確定可根據針對總體PU/SPU應用所選擇的編程模型來實現。例如,在某些應用中,PU代碼開始SPU程序并且接著控制SPU程序。在另一例子中,SPU程序在被PU初始化之后控制自身。硬件設施可以被PU和SPU用來同步其活動并且協同數據移動,例如帶保留加載和存儲條件指令,郵箱,信號,DMA,狀態查詢,等待中斷/事件等。如果SPU應當獨立處理相關文件,則判定4940分支到″否″分支4942,由此該處理向PU4300發送請求特定插件或數據的請求(步驟4995)。在步驟4950,處理從PU4300接收數據和/或插件,并且存儲在存儲器4370中。另一方面,如果SPU應當獨立檢索插件或數據,則判定4940分支到″是″分支4948,由此SPU從系統存儲器4310檢索數據和/或插件并且存儲在存儲器4370中(步驟4960)。在步驟4970,SPU處理數據,并且在步驟4980向PU4300發送確認。確定是否繼續執行處理(判定4990)。例如,PU4300可以請求SPU繼續加載財務計算器,等待用戶輸入,直到用戶從特定用戶接口退出。如果處理應當繼續執行,則判定4990分支到″是″分支4992,該分支循環返回以處理更多數據和/或加載更多插件。此循環繼續執行,直到SPU不應繼續使用相關文件處理數據為止,在此判定4990分支到″否″分支4998,由此處理在4999結束。圖50的模塊解了具有共享系統存儲器的主處理器和多個輔助處理器的處理單元。處理器單元(PE)5005包含在一個實施例中充當主處理器并且運行操作系統的處理單元(PU)5010。例如,處理單元5010可以是執行Linux操作系統的PowerPC核心。PE5005還包含多個協處理結構(SPC),諸如SPC5045,5065和5085。SPC包含充當PU5010的輔助處理單元的協處理單元(SPU),存儲器存儲單元,以及本地存儲器。例如,SPC5045包含SPU5060,MMU5055和本地存儲器5059;SPC5065包含SPU5070,MMU5075和本地存儲器5079;以及SPC5085包含SPU5090,MMU5095和本地存儲器5099。每個SPC可以被配置成用于執行不同任務,并且因此,在一個實施例中,每個SPC可以使用不同指令集訪問。例如,如果PE5005被用于無線通信系統中,則每個SPC可負責分立的處理任務,例如調制,碼片速率處理,編碼,網絡接口等。在另一個實施例中,SPC可以具有相同指令集,并且可以彼此并行使用以執行因并行處理而獲益的操作。PE5005也可以包含2級高速緩存,例如L2高速緩存5015,以用于PU5010。另外,PE5005包含在PU5010和SPU之間共享的系統存儲器5020。系統存儲器5020可以存儲例如正在運行的操作系統(包含內核),設備驅動程序,I/O配置等的映像,執行的應用程序,以及其它數據。系統存儲器5020包含映射到系統存儲器5020的區域的一或多個SPC的本地存儲器單元。例如,本地存儲器5059可以映射到被映射區域5035,本地存儲器5079可以映射到被映射區域5040,并且本地存儲器5099可以映射到被映射區域5042。通過總線5017,PU5010和SPC互相以及與系統存儲器5020通信,該總線被構造成用于在這些設備之間傳遞數據。MMU負責在SPU的本地存儲器和系統存儲器之間傳送數據。在一個實施例中,MMU包含被構造成用于執行此功能的直接存儲器訪問(DMA)控制器。PU5010可以編程MMU以控制每個MMU可使用哪個存儲器區域。通過改變每個MMU可用的映射,PU可以控制哪個SPU訪問系統存儲器5020的哪個區域。通過這種方式,例如,PU可以指定系統存儲器的區域專門為特定SPU所獨享。在一個實施例中,可以通過PU5010以及使用存儲器映射的其它SPU訪問SPU的本地存儲器。在一個實施例中,PU5010管理所有SPU的公共系統存儲器5020的存儲器映射。存儲器映射表可以包含PU5010的L2高速緩存5015,系統存儲器5020,以及SPU的共享本地存儲器。在一個實施例中,SPU在PU5010的控制下處理數據。例如,SPU可以是數字信號處理核心,微處理器核心,微控制器核心等,或是上述核心的組合。每一個本地存儲器是與特定SPU相關的存儲區。在一個實施例中,每個SPU能夠將其本地存儲器配置為專有存儲區,共享存儲區,或SPU可以將其本地存儲器配置為部分專有和部分共享的存儲器。例如,如果SPU需要大量的本地存儲器,則SPU可以將其本地存儲器100%分配給僅可由該SPU訪問的專有存儲器。另一方面,如果SPU需要最小量的本地存儲器,則SPU可以將其10%的本地存儲器分配給專有存儲器,而剩余的90%分配給共享存儲器。可由PU5010和其它SPU訪問共享存儲器。為了使SPU在執行需要快速訪問的任務時具有快速有保證的存儲器訪問,SPU可以保留其部分本地存儲器。SPU也可以在處理敏感數據時,例如在SPU執行加密/解密時保留某些其本地存儲器為專有的。在一個實施例中,當SPU代碼在鏈接時被PU代碼引用時,SPU代碼被隱含地載入系統存儲器。在另一個實施例中,當動態決定加載SPU代碼時,SPU代碼被顯式載入系統存儲器。在這些實施例中,一個符號指向系統存儲器中SPU程序或插件的SPUELF映像。由于PU代碼控制和啟動SPU活動,可以使用專門API(應用編程接口),其指示位于特定符號(即系統存儲器地址)處的SPU代碼應當加載在SPU上并且被執行。當這些API之一被調用時,在存儲器中分析SPUELF映像,使用ELF“機器類型”驗證其是SPUELF映像,并且接著將其DMA傳送到可用SPU上。這些API可以被視為對運行時刻加載程序的擴展,其中當PU程序希望啟動SPU活動并且加載/執行SPU代碼時,這些API被動態調用。本發明的一個優選實現是應用程序,即例如可以駐留在計算機的隨機訪問存儲器中的代碼模塊的一組指令(程序代碼)。在計算機需要之前,該指令組可以被存儲在另一個計算機存儲器中,例如存儲在硬盤驅動器中,或存儲在例如光盤(最終在CDROM中使用)或軟盤最終在軟盤驅動器中使用)的可移動存儲器中,或者經由因特網或其它計算機網絡下載。于是,本發明可以被實現成用于計算機的計算機程序產品。另外,雖然描述的各種方法被方便地實現在通過軟件有選擇地啟動或重新配置的通用計算機中,然而本領域的普通技術人員也會認識到,這種方法可以在硬件,固件或被構造成用于執行所需方法步驟的更加專用的設備中執行。雖然已經示出和描述了本發明的特定實施例,然而本領域的技術人員顯然明白,根據這里的教導,可以在不偏離本發明及其更寬的方面的情況下進行改變和修改,因此所附權利要求書將把所有這種在本發明的真實實質和范圍內的的改變和修改包括在其范圍內。此外應當理解,本發明完全由所附權利要求來限定。本領域技術人員會理解,如果旨在所引入權利要求元素的具體數量,則這種意圖會在權利要求中明確表述,并且在沒有這種表述的情況下,則不存在這種限制。對于非限制性例子,為幫助理解,以下所附權利要求包含使用介紹性短語″至少一個″和″一或多個″來介紹權利要求元素。然而,這種短語的使用不應該被解釋為意味著通過不定冠詞″a″或″an″引入的權利要求元素,將包含這種引入的權利要求元素的任何特定權利要求限制于僅包含一個這種元素的發明,即使在相同權利要求包含引入性短語″一或多個″或″至少一個″和例如″a″或″an″的不定冠詞時;相同道理也適用于在權利要求中使用定冠詞。權利要求1.一種用于在異構處理器環境中的多個處理器上加載軟件的方法,所述方法包括使用第一處理器檢索文件;檢測對應于該文件的處理器標識符;根據此處理器標識符確定是否在第二處理器上加載該文件;以及根據此確定在第二處理器上加載該文件。2.如權利要求1所述的方法,還包括在第一處理器上執行一個程序;響應此執行將一個運行時刻加載程序加載到第一處理器上;以及使用所述運行時刻加載程序執行檢索、檢測以及確定。3.如權利要求1所述的方法,其中文件是可執行文件。4.如權利要求3所述的方法,還包括使用第一處理器發送插件到第二處理器,該插件對應于該文件;使用第一處理器發送數據到第二處理器,該數據對應于該插件;以及使用第二處理器用插件處理數據。5.如權利要求3所述的方法,還包括使用第二處理器檢索插件,該插件對應于該文件;使用第二處理器檢索數據,該數據對應于該插件;以及使用第二處理器用插件處理數據。6.如權利要求3所述的方法,其中可執行文件具有一文件格式,并且該文件格式是從包括ELF格式,XCOFF格式和PECOFF格式的組中選擇的。7.如權利要求1所述的方法,其中處理器標識符是機器類型,所述確定還包括從文件中提取機器類型;以及把該機器類型與多個機器類型比較。8.如權利要求1所述的方法,其中文件是組合文件的一部分,并且該處理器類型對應于多個部分頭中的一或多個部分頭。9.如權利要求1所述的方法,其中文件是組合文件的一部分,并且組合文件包含對應于第一處理器的一或多個處理器標識符。10.如權利要求1所述的方法,其中第一處理器是處理單元,并且第二處理器是協處理單元。11.一種信息處理系統,包括異構處理器環境中的多個處理器;可由多個處理器訪問的存儲器;由多個處理器訪問的一或多個非易失存儲設備;以及軟件加載工具,用于在多個處理器上加載軟件,該軟件加載工具包括用于執行以下步驟的軟件代碼使用第一處理器從非易失存儲設備之一檢索文件;使用第一處理器檢測對應于該文件的處理器標識符;根據處理器標識符確定是否在第二處理器上加載該文件;以及根據所述確定加載該文件到第二處理器上。12.如權利要求11所述的信息處理系統,其中軟件代碼還被用于在第一處理器上執行一個程序;響應此執行將一個運行時刻加載程序加載到第一處理器上;以及使用位于第一處理器上的所述運行時刻加載程序執行檢索、檢測以及確定。13.如權利要求11所述的信息處理系統,其中文件是可執行文件。14.如權利要求13所述的信息處理系統,其中軟件代碼還被用于使用第一處理器發送插件到第二處理器,該插件對應于該文件;使用第一處理器發送數據到第二處理器,該數據對應于該插件;以及使用第二處理器用該插件處理該數據。15.如權利要求13所述的信息處理系統,其中軟件代碼還被用于使用第二處理器從非易失存儲設備之一檢索插件,該插件對應于該文件;使用第二處理器從非易失存儲設備之一檢索數據,該數據對應于該插件;以及使用第二處理器用該插件處理該數據。16.如權利要求13所述的信息處理系統,其中可執行文件具有一文件格式,并且該文件格式是從包括ELF格式,XCOFF格式和PECOFF格式的組中選擇的。17.如權利要求11所述的信息處理系統,其中處理器標識符是機器類型,并且軟件代碼還被用于從文件中提取機器類型;以及把該機器類型與多個機器類型比較。18.如權利要求11所述的信息處理系統,其中文件是組合文件的一部分,并且該處理器類型對應于多個部分頭中的一或多個部分頭。19.如權利要求11所述的信息處理系統,其中文件是組合文件的一部分,并且該組合文件包含對應于第一處理器的一或多個處理器標識符。20.如權利要求11所述的信息處理系統,其中第一處理器是處理單元,并且第二處理器是協處理單元。21.一種存儲在計算機可操作介質上的計算機程序產品,用于在異構處理器環境中的多個處理器上加載軟件,所述計算機程序產品包括用于使用第一處理器檢索文件的裝置;用于檢測對應于該文件的處理器標識符的裝置;用于根據此處理器標識符確定是否在第二處理器上加載該文件的裝置;以及用于根據此確定加載該文件到第二處理器上的裝置。22.如權利要求21所述的計算機程序產品,還包括用于在第一處理器上執行程序的裝置;用于響應此執行將運行時刻加載程序加載到第一處理器上的裝置;以及用于使用運行時刻加載程序執行檢索、檢測以及確定的裝置。23.如權利要求21所述的計算機程序產品,其中文件是可執行文件。24.如權利要求23所述的計算機程序產品,還包括用于使用第一處理器發送插件到第二處理器的裝置,其中該插件對應于該文件;用于使用第一處理器發送數據到第二處理器的裝置,其中該數據對應于該插件;以及用于使用第二處理器用該插件處理該數據的裝置。25.如權利要求23所述的計算機程序產品,還包括用于使用第二處理器檢索插件的裝置,其中該插件對應于該文件;用于使用第二處理器檢索數據的裝置,其中該數據對應于該插件;以及用于使用第二處理器用該插件處理該數據的裝置。26.如權利要求23所述的計算機程序產品,其中可執行文件具有一文件格式,并且該文件格式是從包括ELF格式,XCOFF格式和PECOFF格式的組中選擇的。27.如權利要求21所述的計算機程序產品,其中處理器標識符是機器類型,并且用于確定的裝置還包括用于從文件中提取機器類型的裝置;以及用于把該機器類型與多個機器類型比較的裝置。28.如權利要求21所述的計算機程序產品,其中文件是組合文件的一部分,并且處理器類型對應于多個部分頭中的一或多個部分頭。29.如權利要求21所述的計算機程序產品,其中文件是組合文件的一部分,并且組合文件包含對應于第一處理器的一或多個處理器標識符。30.如權利要求21所述的計算機程序產品,其中第一處理器是處理單元,并且第二處理器是協處理單元。全文摘要提供了用于將軟件加載到多個處理器上的系統和方法。處理單元(PU)從系統存儲器檢索文件并且將它加載到其內部存儲器。PU從文件的頭提取處理器類型,該處理器類型標識文件是否應當在PU或協處理單元(SPU)上執行。如果SPU應當執行文件,則PU將文件DMA發送至SPU進行執行。在一個實施例中,文件是包含PU和SPU代碼的組合文件。在這個實施例中,PU識別包含在組合文件內指示嵌入SPU代碼的一或多個部分頭。在這個實施例中,PU從組合文件提取SPU代碼,并且DMA將提取代碼發送到SPU進行執行。文檔編號G06F9/54GK1601468SQ200410079710公開日2005年3月30日申請日期2004年9月17日優先權日2003年9月25日發明者小馬克西米諾·阿古里亞爾,周宗亨,邁克爾·諾曼·戴伊,邁克爾·斯坦·格文,馬克·理查德·紐特,詹姆斯·西尼迪斯申請人:國際商業機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影