專利名稱:數據處理系統的制作方法
技術領域:
本發明涉及具有多處理器的數據處理系統。
背景技術:
用于高性能、依賴于數據的媒體處理例如用于高清晰度MPEG解碼的異類多處理器結構是已知的。媒體處理應用可以指定為一組并行執行的任務,這些任務只通過單向數據流交換信息。G..Kahn已經在1974年引入這種應用的一種正式模型,“The Semantics of a SimpleLanguage for Parallel Programming”,(并行編程用的簡單語言的語義學)IFIP第74次會議會議錄,八月5-10日,斯德哥爾摩,瑞典,North-Holland publ.Co.1974,第471-475頁,隨后在1977年又由Kahn和MacQueen在下面的文章中進行可操作說明,“Co-routines and Networks of parallel Programming”,(并行編程的協例程和網絡)Information Processing 77,B Gilchhirst(ED.),North-Holland publ.Co.1974,第993-998頁。這一正式模型現在一般稱為Kahn處理網絡。
公知一個應用是一組可并行執行的任務。信息只可以通過單向數據流在這些任務間交換。這些任務只應該通過關于預定數據流的讀寫過程確定性地進行通信。數據流在FIFO行為的基礎上進行緩沖存儲。由于這一緩沖存儲,兩個任務通過數據流的通信不必與單個的讀寫處理同步。
在流處理中,數據流的連續操作是在不同的處理器上實施的。例如,第一流可能包含圖像的像素值,它們由第一處理器處理以產生8×8像素塊的DCT(離散余弦變換)系數塊的流。第二處理器可以處理該DCT系數塊,以產生為每一DCT系數塊的選定的和經壓縮的系數塊的流。
圖1表示現有技術中公知的一個應用對處理器映射的示意圖。為實現數據流處理,提供了一些處理器,每一處理器能夠重復執行一種特定的操作,每次使用從數據對象流的下一數據對象來的數據,和/或產生這種流中的下一數據對象。所述流經一個處理器傳送到另一個,使得由第一處理器產生的流可以由第二處理器處理,如此等等。從第一處理器傳送數據到第二處理器的機理是把由第一處理器產生的數據塊寫入存儲器。
網絡中的數據流被緩沖存儲。每一緩沖器作為FIFO而實現,確切地說是一個寫入者,一個或多個讀取者。由于這一緩沖存儲,寫入者和讀取者不需要在通道上對單個的讀和寫動作相互同步。從沒有足夠可用數據的通道的讀出將引起讀任務停止。協處理器可以是專用硬件功能單元,它只可以進行很有限的編程。所有協處理器并行運行,執行它們自己的控制線程。它們一起執行Kahn型的應用,其中每一任務被映射到一個單一的協處理器。這些協處理器允許多任務,亦即多個Kahn任務可以映射到單一處理器。
發明內容
因此,本發明的一個目的是改進Kahn型數據處理系統的操作。
這一目的是通過根據權利要求1的數據處理系統而實現的。在根據本發明的數據處理中,保持了關于存儲器使用的分布式管理,通過所述存儲器處理器彼此交換數據流。在一方面,寫處理器的管理單元維護了定義存儲器中某一段的信息,該段是空閑的以用于存儲由其它處理器讀取的數據對象。另一方面,第二處理器的管理單元維護了定義存儲器中某一段的信息,該段中第一處理器已經為這些數據對象寫入已完成的數據。它的優點是,寫處理器不需要用第二處理器檢查它寫的每一數據對象,看它是否會覆蓋讀處理器仍然需要的舊的數據對象。相似地,讀處理器不需要用寫處理器檢查每一數據對象,看其是否已經有效。代之為,每一處理器使用它的管理單元檢查是否允許存儲器訪問。這只需要局部通信。為維護管理單元中的信息,全局通信是必需的,這一點是確實的,但是這可以一次為一組數據對象進行。
對管理單元的更新消息既可以以如權利要求2中定義的推方式也可以以如權利要求3中定義的拉方式發生。在拉方式中,讀處理器請求得到有多少數據對象已經由寫處理器寫過。寫處理器用表明已經寫過的數據對象數量的消息對此作出響應。相似地,寫處理器請求得到有多少數據對象已經被讀取,讀處理器用表明這一數量的消息對此作出響應。因此,需要兩個消息來更新管理單元中的信息。
在如權利要求2中說明的推方式中,寫處理器給讀處理器的管理單元發送消息,告知有多少數據對象已經可用。相似地,讀處理器給寫處理器發送消息,告知已經被讀取的數據對象的數目,由所述數據對象占據的存儲器空間被釋放用來寫新的數據對象。因此,推方式具有只需要一個消息用來更新管理單元中的信息的優點。
在一個實施例中,根據本發明的數據處理系統中的處理器可以驗證每一單個訪問是否在它自己的段內,亦即被允許還是不被允許。例如,讀處理器可以驗證它希望讀取的每一數據對象是否在它自己的段內。然而,在權利要求4中說明了一個更為優選的實施例。在該實施例中,處理器能夠一次對一組數據對象進行驗證。以這種方式,可以保證,一個任務一旦啟動,它再不會被中斷,直到完整的數據塊被處理完畢。這對一個完整的數據塊必須被一次處理完的那些操作諸如數字余弦變換來說是特別有利的。以這種方式,可以避免在中斷任務時必須保存大量狀態信息。
權利要求5的實施例具有這樣的優點,當第二處理器所具有的數據對象不足以繼續一個特別的任務時,可以為執行其它任務使用它的處理能力。
在權利要求6的實施例中,第二處理器是用于執行一個流處理任務范圍的功能特定的專用處理器,這些任務是諸如可變長度解碼、運行長度解碼、運動補償、圖像縮放、或者執行DCT變換。
處理器不必順序訪問指定的存儲器段。優選地處理器被安排去執行這樣的讀和/或寫操作,它允許隨機訪問如權利要求7中所要求的由管理單元規定的所述存儲器中段內的位置。
參考附圖詳細說明本發明的這些和其它方面,附圖中圖1表示根據現有技術把應用映射到處理器的示意圖;圖2是基于處理系統的流結構的原理框圖;圖3是在圖2的系統中的同步操作和I/O操作的示意圖;圖4是共享存儲器的示意圖;圖5是使用圖4的存儲器更新根據圖2的每一管理單元中的局部空間值的機理;
圖6是具有單一寫入者和多個讀取者的FIFO緩沖器的示意圖;圖7是用于一個三站流的有窮存儲器緩沖器的實現;圖8更詳細地表示形成處理系統一部分的處理器;和圖9A-9C是讀取和管理超高速緩沖存儲器中的數據的有效性的示意圖。
具體實施例方式
圖2表示根據本發明的一個處理系統。該系統包括存儲器10、若干處理器11a、11b、11c和一個仲裁器16。處理器11a-c的每一個包括計算單元12a、12b、12c和管理單元18a、18b、18c。處理器11a、11b、11c是按舉例方式表示的,在實際中,可以使用任何數目的處理器。處理器11a-c通過地址總線14和數據總線13連接到存儲器10。處理器11a-c連接到仲裁器16,它們彼此通過同步通道連接,所述同步通道包括管理單元18a-c,后者通過通信網絡19諸如令牌環彼此連接。
優選地,處理器11a-c是專用處理器;每一個專門用于高效執行一個有限范圍的流處理任務。亦即安排每一處理器重復對通過數據總線13接收的連續數據對象施加同樣的處理操作。處理器11a-c每一個可以執行一個不同的任務或功能,例如可變長度解碼,運行長度解碼,運動補償,圖像縮放或者執行DCT變換。另外,也可以包括可編程處理器,諸如TriMedia、或MIPS處理器。
在操作中,每一處理器11a-c對一個或者多個數據流執行操作。所述操作例如可以包括接收一個流和產生另一個流,或接收一個流而不產生新流,或產生一個流而不接收流,或修改一個接收的流。處理器11a-c能夠處理由另外的一個處理器11a-c產生的數據流,或者甚至它們自身產生的流。一個流包括連續的數據對象,這些數據對象通過存儲器10從或向處理器11a-c傳輸。
為讀或寫來自數據對象的數據,處理器11a-c訪問存儲器10中分配給該流的那部分。
圖3表示讀和寫處理以及它們相關的同步操作的示意圖。從協處理器的觀點看,一個數據流像一個具有當前訪問點的無窮的數據帶。從協處理器(計算單元)發布的獲取空間調用請求對由圖3中的小箭頭指示的當前訪問點前面的一定的數據空間的訪問許可。如果這一許可被授予,則該協處理器可以在所請求的空間亦即圖3b的帶框的窗口內使用由n_bytes參量指示的變長數據和由offset參量指示的隨機訪問位置執行讀和寫動作。
如果許可未被授予,則該調用返回“假”。在一個或者多個獲取空間調用-和可選地幾個讀/寫動作-后,協處理器可以決定該處理或該數據空間的某些部分已經結束,并發布一個釋放空間調用。這一調用把訪問點前移一定數目的字節,亦即圖3d的n_bytes2,其中,其大小由先前授予的空間所限制。
圖4表示存儲器10的一個邏輯存儲器空間20,它包含一系列具有邏輯連續地址的存儲器位置。圖5表示兩個處理器11a和11b如何通過存儲器10交換數據對象。存儲器空間20包含分配給不同流的子空間21、22、23。作為一個例子,圖4中詳細表示出由下邊界地址LB和上邊界地址HB限定的子空間22。在該子空間22中,在地址A2和A1之間的存儲器位置,也用段A2-A1指明,包含有效數據,可為讀處理器11b所用。在地址A1和該子空間的高邊界HB之間的存儲器位置,以及在該子空間的低邊界LB和地址A2之間的存儲器位置,也用段A1-A2指明,可用于寫處理器11a寫新數據。作為一個例子,假定處理器11b訪問在分配給由處理器11a產生的流的存儲器位置中存儲的數據對象。
在上述例子中,流的數據被寫入存儲器位置的一個循環序列中,每次從邏輯最低地址LB開始到達邏輯最高地址HB。這通過圖5中的存儲器子空間的循環表示來說明,其中下邊界LB和上邊界HB彼此相鄰。
管理單元18b保證處理器11b在被處理的流的有效數據寫入這些存儲器位置之前不訪問存儲器位置22。相似地,這里使用管理單元18a來保證處理器11a不覆蓋存儲器10中的有用數據。在圖2所示的實施例中,管理單元18a、b形成環18a、b、c的一部分,其中,同步信號從一個處理器11a-c傳送給下一個,或當這些信號在任何后繼的處理器11a-c不需要時封鎖和覆蓋它們。管理單元18a、18b、18c一起形成一個同步通道。管理單元18a維護用于從處理器11a向處理器11b傳輸數據對象流的存儲器空間的信息。在所示實施例中,管理單元18a存儲值A1,它是可用于由處理器11a寫的段A1-A2的地址范圍的開始點A1的表示。它還存儲值S1,它是該段的大小的代表。然而,所述地址范圍也可以用它們的邊界或者用上邊界A2和值S1指示。相似地,管理單元18b存儲值A2,它是包含為處理器11b的有效數據的段A2-A1的開始點A2的表示。它還存儲值S2,它是該段的大小的表示。當處理器11a開始產生用于處理器11b的數據時,段A2-A1的大小S2應該初始化為零,因為還沒有為后面的處理器11b可用的有效數據。在處理器11a開始向存儲器子空間22寫數據之前,它通過第一指令C1(getspace)請求該空間內的一段。這一指令的一個參數是它要求的大小n。如果有多個存儲器子空間可用的話,則它還包括為識別該子空間的參數。子空間可以由識別通過該子空間傳輸的流而識別。只要要求的大小n小于或等于由管理單元18a為該段存儲的大小S1,管理單元18a就授權這一請求。這時處理器11a可以用它所請求訪問的存儲器空間的段A1-A2的大小n向A1-A2’這部分寫入數據對象。
如果所需要的數目n超過指示的數目S1,則產生處理器11a掛起所指示的流的處理。產生處理器11a然后可以進行為另一個它正在產生的流的處理,或者產生處理器11a可以完全暫停處理。如果所需要的數目超過指示的數目,則產生處理器11a將執行指令,該指令在晚些時間再次指示所需要的具有新數據的存儲器位置的數目,直到產生處理器11a檢測到下列事件,即所需要的數目沒有超過由接收處理器11a指示的位置。在檢測到這一事件后,產生處理器11a繼續處理。
為了要同步,在存儲器10中的數據流內容變為有效后,產生數據流的產生處理器11a-c發送其數據流內容變為有效的存儲器10中的位置數目的指示。在本例中,如果處理器11a已經寫了一些數據對象,占據了空間m,則它發送第二指令C2(putspace),指明所述數據對象可由第二處理器11b進一步處理所用。該指令的參數m表明在存儲器子空間22內的要釋放的該段的大小。可以包括另外一個參數來表明該存儲器子空間。在接收到這一指令時,管理單元18a從可用大小S中減去m,同時增加地址A1A1=A1m,式中,是按模HB-LB求和。
管理單元18a另外給處理器11b的管理單元18b發送一個消息M。在接收到這一消息后,管理單元18b給A2-A1的大小S2增加m。當接收處理器,這里是11b,達到需要新數據的流來進行處理的階段時,它發送一個指令C1(k),指示需要具有新數據的存儲器位置數目k。在該指令后,如果來自管理單元18b的回答指示這一需要的數目沒有超過由產生處理器11a所指示的位置的話,則接收處理器11b的計算單元12b繼續處理。
如果所需要的數目k超過指示的數目S2,則接收處理器11b掛起所指示的流的處理。接收處理器11b然后可以進行為另一個它正在處理的流的處理,或者接收處理器可以完全暫停處理。如果所需要的數目k超過指示的數目S2,則接收處理器11b將執行指令,該指令在晚些時間再次指示所需要的具有新數據的存儲器位置的數目,直到在接收處理器11b中記錄到下列事件,即所需要的數目k沒有超過由產生處理器11a指示的位置A1。在記錄這一事件后,接收處理器11b恢復該流的處理。
在上述例子中,一個流的數據寫入一個循環的存儲器位置系列中,每次到達邏輯最高地址HB時就從邏輯最低地址LB開始。這會引起產生處理器11a趕上接收處理器而覆蓋接收處理器仍然需要的那些數據的可能。當希望防止產生處理器11a-c覆蓋這種數據時,每次在接收處理器11a-c停止處理來自存儲器中的存儲器位置的內容后,接收處理器11a-c就發送存儲器中不再需要的存儲器位置數目的指示。這可以借助由產生處理器11a使用的同一指令C2(putdata)實現。這一指令包括不再需要的存儲器位置的數目m’。另外,它可以包括流或者存儲器空間的標識,如果處理多于一個流的話。在接收到這一指令時,管理單元18b從大小S2中減去m’,并按存儲器子空間的大小為模給地址A2增加m’。管理單元18b還給產生處理器11a的管理單元18a發送一個消息M’。在接收到這一消息時,產生處理器11a的管理單元18a增加大小S1。
這意味著,一個流中的數據可以被覆蓋直到當前的起始位置24a-c,如在圖4中為若干不同的流所示的那樣。這一指示被記錄在產生處理器11a-c中。當產生處理器11a-c達到它的這一處理階段時,即它需要把來自產生的流中的數據寫到存儲器中的一些新位置時,該產生處理器11a-c執行一個指令,表明為新數據的需要而要求的存儲器位置的數目。在該指令后,如果由產生處理器11a-c記錄的指示表示這一需要的數目沒有超過由接收處理器11a-c指示的位置的話,則產生處理器11a-c繼續處理。
優選地,具有有效內容的位置數目和可以被覆蓋的位置數目要按標準位置數目來表明,而不是按在該流中的數據對象的數目來表明。它的效果是,產生和接收數據流的處理器不必指明具有同樣塊大小的位置的有效性和可重用性。其優點是,可以設計每一個產生和接收處理器11a-c而無需知道其它處理器11a-c的塊大小。以小的塊大小工作的處理器11a-c不需要等待以大的塊大小工作的處理器。
存儲器位置的指示可以用幾種方式進行。一種方式是指示有效的或者可以被覆蓋的另外的存儲器位置的數目。另一種解決方案是傳輸最后的有效或者可覆蓋的位置的地址。
優選地,至少一個處理器11a-c能夠交替操作不同的流。對于每一接收到的流,處理器11a-c局部地保持有關存儲器位置的信息,直到該位置數據是有效的,和對每一產生的流它保持有關在存儲器中可達到的能寫入新數據的位置的信息。
管理單元18a、b、c的實現和操作不需在讀和寫端口之間加以區別,雖然特別的實例也許對這些有區別。由管理單元18a、b、c實現的操作有效地隱藏了實現的諸多方面,諸如FIFO緩沖器22的大小、它在存儲器中的位置20,關于為關聯存儲器的循環FIFO的地址的任何折返機理,超高速緩沖存儲策略,超高速緩沖存儲的一致性,全局I/O定位限制,數據總線寬度,存儲器定位限制,通信網絡結構和存儲器組織。
優選地,管理單元18a-c對未格式化的字節序列進行操作。在由寫入者11a和讀取者11b使用的通信數據流的同步包的大小之間不需要任何相關。數據內容的語義解釋留給協處理器,亦即計算單元12a、12b。任務不知道應用圖形關聯結構(incidence structure),像它正與哪一些其它任務在通信,這些任務映射在哪些協處理器上,和哪一些其它的任務映射在同一個協處理器上。
在管理單元18a-c的高性能實現中,可以通過在管理單元18a-c包含的讀/寫單元和同步單元并行發布讀調用、寫調用、獲取空間調用、釋放空間調用。作用于管理單元18a-c的不同端口的調用沒有互相的排序(ordering)的限制,而作用于管理單元18a-c的相同端口上的調用則必須根據調用程序任務或協處理器排序。對于這種情況,當前一調用返回時,協處理器可以發布下一調用,在軟件實現中是通過功能調用的返回而在硬件實現中是通過提供一個應答信號。
在讀調用中的大小參量即n_bytes的零值可以保留以便為執行從存儲器預取數據到由port_ID和offset參量指示的位置處的管理單元的超高速緩沖存儲器。這種操作可以用于由管理單元執行的自動預取。相似地,可以預留寫調用中的零值用于超高速緩沖存儲器的刷新請求,雖然自動的超高速緩沖存儲器刷新是管理單元的責任。
可選地,所有5種操作都接受另外一個最后的task_ID參量。這通常是一個從先前的獲取任務(gettask)調用作為結果值得到的小的正數。使用獲取任務調用,協處理器(計算單元)可以請求它的管理單元分配一個新的任務,例如,如果由于可用的數據對象不夠,計算單元不能用當前任務進行。在出現這一獲取任務調用時,管理單元返回新任務的標識。在操作讀、寫、釋放空間和獲取空間中這一參量的零值是為那些不是任務特定的但是與協處理器控制相關的調用預留的。
在優選實施例中,數據流的通信的設置(set-up)是連接到有窮大小的FIFO緩沖器上的一個寫入者和一個讀取者的流。這種流需要具有有窮和固定大小的FIFO緩沖器。它在存儲器中預先分配,并且在其線性地址范圍內應用一個循環尋址機理以得到適當的FIFO行為機構。
然而,在基于圖2和圖6的另外的實施例中,由一個任務產生的數據流要由具有不同輸入端口的兩個或者多個不同的消費者消費。這種情形可以用術語分叉(forking)來描述。然而,我們希望既為多任務硬件協處理器也為在CPU上運行的軟件任務重新使用該任務實現。這是通過具有與它們的基本功能的固定數目的端口相對應的任務而實現的。由應用配置引發的任何分叉的需要都要由管理單元解決。
顯然,通過只維持兩個分開的正常的流緩沖器,通過雙倍所有寫和釋放空間操作和通過對雙倍的獲取空間檢查的結果值執行與操作,流分叉可以由管理單元18a-c實現。優選地,不要這樣來執行,因為其代價將包括雙倍的寫帶寬和或許更多的緩沖器空間。相反,優選用兩個或更多個讀取者和一個寫入者共享同一FIFO緩沖器來實現。
圖6表示具有單一寫入者和多個讀取者的FIFO緩沖器的示意圖。同步機構必須保證在A和C之間按配對方式的排序之后在A和B之間有正常的按配對方式的排序,而B和C沒有相互的限制,例如假定它們是純粹的讀取者。這在與執行寫操作的協處理器相關聯的管理單元中是通過分別跟蹤為每一讀取者(A到B和A到C)可用的空間而實現的。當寫入者執行一個局部獲取空間調用時,它的n_bytes參量與這些空間值的每一個相比較。這是通過使用在所述流表中分叉的額外行而實現的,它由一個額外的字段或列連接以指示改變到下一行。
這對于大多數不使用分叉的情況只提供很小的開銷而同時又不限定只有兩路分叉。優選僅由寫入者實現。讀取者不需要知道這種情況。
在基于圖2和圖7的另外一個實施例中,數據流作為根據帶模型的一個三站流實現。每一站對流過的數據流執行某些更新。三站流的應用的一個例子是一個寫入者、一個中間的監督者和最后一個讀取者。在這種例子中,第二任務優選地觀察通過的數據,并且可能檢查某些數據,而大多數情況是允許數據通過而不進行修改。較不經常的是它可以決定改變流中的少數項。這可以通過處理器在緩沖器中就地更新而有效實現,以避免把整個流內容從一個緩沖器復制到另一個。在實際中,這在下述情形下可以是有用的當硬件協處理器在通信,而主CPU11干預要修改該流以改正硬件缺陷,修改稍微不同的流格式,或者只是為了調試。這一配置可以由所有三個處理器實現,它們共享存儲器中的單一流緩沖器,以減少存儲器流量和處理器工作負載。任務B不會實際去讀或寫整個數據流。
圖7表示為一個三站流的有窮存儲器緩沖器的實現。這一三路緩沖器的適當的語義包括維持A、B和C彼此之間一個嚴格的排序和保證窗口不重疊。以這種方式,該三路緩沖器是從圖4的所示的兩路緩沖器的擴展。這種多路循環FIFO由上述管理單元的操作和由在優選實施例中討論的帶釋放空間消息的分布式實現方式直接支持。對在單一FIFO中的站不局限于3個。在一個站既消費又產生有用數據的就地處理中也可以只用兩個站。在這種情況下兩個任務都執行就地處理來彼此交換數據,在緩沖器中不留空的空間。
在基于圖2的另外的實施例中說明了對緩沖器的單一訪問。這種單一訪問緩沖器只包括單一端口。在這一例子中在任務或者處理器之間不執行數據交換。代之為,它只是局部使用的所述管理單元的一個標準通信操作的應用程序。管理單元的建立包括標準緩沖器存儲器,有一個與其連接的單一訪問點。這時任務使用該緩沖器作為局部的中間結果暫存器或超高速緩沖存儲器。從結構的觀點看來,這可能具有優點,諸如為幾個目的和任務組合使用較大的存儲器,和例如使用軟件可配置的存儲器大小。此外,作為中間結果暫存器存儲器以節省這一建立的任務特定的算法使用,還可以很好地應用于在多任務協處理器中存儲和檢索任務狀態。在這種情況下為狀態交換執行讀/寫操作不是任務功能代碼自身的一部分,而是處理器控制代碼的一部分。由于緩沖器不用于與其它任務通信,因此通常不需要對該緩沖器執行釋放空間和獲取空間操作。
在基于圖2和圖8的另一個實施例中,根據優選實施例的管理單元18a-c另外包括一個數據超高速緩沖存儲器,用于在協處理器12和存儲器20之間的數據傳輸亦即讀操作和寫操作。在管理單元18a-c中的數據超高速緩沖存儲器的實現提供了數據總線寬度的透明變換,對全局互聯亦即數據總線13的定位限制的解決,和減少對全局互聯的I/O操作的數目。
優選地,管理單元18a-c包括單獨的讀寫接口,每一個具有一個超高速緩沖存儲器,然而這些超高速緩沖存儲器從應用程序功能的觀點是看不見的。這里,使用釋放空間和獲取空間操作的機理用來明確地控制超高速緩沖存儲器一致性。超高速緩沖存儲器在將通信網絡(數據總線)13的全局互聯與協處理器讀和寫端口的解耦中起重要作用。這些超高速緩沖存儲器對于有關速度、能力和區域的系統性能有主要的影響。
在授權一個任務端口對流數據窗口的訪問被保證為專有的。其結果是在這一區域上的讀和寫操作是安全的,并且在第一側不需要中間的處理器間通信。通過局部獲取空間請求來從循環FIFO的一個前任獲得新的存儲器空間來擴展該訪問窗口。如果超高速緩沖存儲器某些部分被標記以對應這種擴展,而且任務有興趣讀取該擴展中的數據,則超高速緩沖存儲器中這樣的部分需要被無效化。然后對這一位置所發生的讀操作會發生緩存失中,并且把新的有效數據加載到該超高速緩沖存儲器。精心制作的管理單元的實現可以使用獲取空間來發布預取請求以減少超高速緩沖存儲器失中的代價。通過局部釋放空間請求以便給循環FIFO的后繼者留下新的存儲器空間來收縮該訪問窗口。如果這種收縮的某些部分在超高速緩沖存儲器中發生,并且該部分已經被寫,則超高速緩沖存儲器的該部分需要被刷新,以使得局部數據可為其它處理器所使用。給其它協處理器發送釋放空間消息必須推遲,直到超高速緩沖存儲器的刷新完成和存儲器操作的安全排序得到保證。
與同屬超高速緩沖存儲器一致性機構諸如總線探聽(snooping)相比,為明確的超高速緩沖存儲器一致性控制只使用局部獲取空間和釋放空間在大系統結構中相對容易實現。另外它不提供通信開銷,例如像在超高速緩沖存儲器通體寫結構中那樣。
獲取空間和釋放空間操作被規定在字節粒度上操作。超高速緩沖存儲器的主要責任是為協處理器隱藏全局互聯數據傳輸大小和數據傳輸定位的限制。優選地,數據傳輸大小在同前的定位上設定為16字節,但小到2字節的同步的數據量可有效地被使用。因此,同一存儲器字或者傳輸單元可以同時在不同協處理器的超高速緩沖存儲器中存儲,而無效信息則是在每一超高速緩沖存儲器中在字節的粒度上處理的。
圖8表示處理器12和管理單元18的組合,用于圖2所示的處理系統。更詳細地表示出的管理單元18包括控制器181、含有流信息的第一表(流表)182和含有任務信息的第二表(任務表)183。管理單元18還包括一個用于處理器12的超高速緩沖存儲器184。在同步接口18中的超高速緩沖存儲器184的存在允許簡單地設計超高速緩沖存儲器和簡化超高速緩沖存儲器控制。在一個或者多個超高速緩沖存儲器之外,在處理器12中也可以存在諸如指令超高速緩沖存儲器。
控制器181通過指令總線Iin連接到相應處理器,亦即12a,用于接收類型C1、C2的指令。反饋線FB用作給所述處理器反饋,例如對緩沖器空間的請求的授權。控制器有一條消息輸入線Min以接收來自環中一個前行的管理單元的消息。它還有一條消息輸出線Mout以給后繼的管理單元傳送消息。管理單元可以給它的后繼者傳送的消息的一個例子是一部分緩沖器存儲器被釋放。控制器181具有地址總線STA和TTA,分別選擇流表182和任務表183的地址。它另外還有數據總線STD和TTD,分別從這些表讀/寫數據。
管理單元18傳輸和從其它處理器(圖3中未示出)接收同步信息和至少存儲接收到的信息。管理單元18另外包括一個超高速緩沖存儲器184,用于在處理器12局部存儲來自數據流的數據的復本。超高速緩沖存儲器184通過局部地址總線185和局部數據總線186連接到處理器12。原理上,處理器12可以用圖1的處理系統的存儲器10的位置的地址尋址超高速緩沖存儲器184。如果超高速緩沖存儲器184包含被尋址的數據的內容的一個有效復制件,則處理器12訪問包含該復制件的超高速緩沖存儲器184中的位置,而不訪問存儲器10(圖1)。處理器12優選是設計非常有效地執行一類操作例如MPEG解碼的專門處理器內核。在該系統中的不同處理器中的處理器內核可以具有不同的專門作用。同步接口18及其超高速緩沖存儲器184對于所有不同的處理器可以是相同的,只有超高速緩沖存儲器的大小可根據處理器12的不同需要而修改。
優選管理單元18用于管理從存儲器10向超高速緩沖存儲器184預取數據和/或從超高速緩沖存儲器184向存儲器10回寫數據。當管理單元18接收一個信號,告知存儲器10包含有效數據直到某一個存儲器位置,則優選地使管理單元18的控制器181給超高速緩沖存儲器184發信號以便從存儲器10直到該位置預取數據。管理單元18的控制器181檢測數據何時被預取。如果處理器12請求訪問新數據,則僅當管理單元18已經接收到告知該位置可用的信號和超高速緩沖存儲器184已經為這些位置預取數據后,管理單元18才允許處理器12從新位置讀數據。相似地,當處理器12給管理單元18發信號,告知它已經完成對一直到存儲器中某點的位置的寫時,管理單元18使超高速緩沖存儲器184回寫數據到存儲器10中直到被通知的那一點。管理單元18檢測該回寫何時完成,并僅在回寫完成后才通過同步消息網絡傳輸關于已經完成的位置數目的信息。
這樣,使用對存儲器訪問數據對象流的可預測性來改善超高速緩沖存儲器管理。
相似地,管理單元18可以響應來自處理器內核12關于處理器12已經完成直到存儲器中某點的流的讀取的信號,這是通過對直到該位置的存儲器位置使用的超高速緩沖存儲器位置作標記以作為為超高速緩沖存儲器置換的第一可用位置而實現的。當處理器12給管理單元18發信號告知打算寫一個流的數據到存儲器中直到某一位置時,管理單元18可以通過分配映射到所涉及的存儲器位置的超高速緩沖存儲器位置來響應。
在所示實施例中,在同步接口之間的同步消息網絡是令牌環網絡。這具有允許較少的連接數量的優點。此外,令牌環自身的結構是可縮放的,使得可以增加或者刪除一個節點而對接口設計沒有什么影響。然而,在其它實施例中,可以以不同方式來實現通信網絡,例如,基于總線的網絡,或者交換矩陣網絡,以使同步延遲最小。
在一個實施例中,第一表182包含下列由處理器處理的多個流的信息-指向存儲器10中數據應該被寫或讀的地址,-指示可用于緩沖存儲正在通信的處理器之間數據流的存儲器內的存儲器段的大小的值,-指示可用于連接到與管理單元連接的處理器的處理器的那一段的該部分的大小的空間值,-識別流和正在讀或者寫該流的處理器的全局標識gsid。
在一個實施例中,第二表183包含下列關于被執行的任務的信息-為所述任務處理的一個或者多個流的標識,-每一任務可用的預算,-指示該任務被允許或被禁止的任務允許標志,-指示任務已經準備好還是未準備好運行的任務可運行標志。
優選地,表183為每一任務只包含為一個流的一個標識,例如該任務的第一流。優選地,該標識是對該流表的索引。這樣,通過把所述索引和端口號碼p相加,管理單元18就可以簡單地計算其它流相應的id。端口號碼可以作為由連接到管理單元的處理器給出的指令的參數傳送。
圖9表示在三種不同的情形下讀取和管理超高速緩沖存儲器中的數據的有效性。在該圖中每一種情形都假定讀請求發生在空的超高速緩沖存儲器184中,導致超高速緩沖存儲器失中。在該圖的左半部分原理性表示處理器11的計算單元12和超高速緩沖存儲器184,右半部分原理性表示當一個讀請求R發生時超高速緩沖存儲器184所涉及的部分。另外還示出供超高速緩沖存儲器取數據的存儲器10的部分。
圖9a表示讀請求R,它導致從超高速緩沖存儲器184中取存儲器傳輸單元MTU,亦即一個字,它整個被包含在授權的窗口W內。顯然,這整個MTU字在存儲器中是有效的,不需要特定的有效(或無效)測量。
在圖9b中讀請求R有一個結果,即一個MTU字從存儲器10被取到超高速緩沖存儲器184中,所取的字部分延伸到處理器獲得的空間W之外,不過保留在在管理單元18中作為可用而被局部地管理的空間W2內。如果使用獲取空間參量的話,則該字MTU將部分被宣布為無效,而一旦獲取空間窗口W被擴展則它將需要被重新讀。然而,如果可用空間W2的實際值被檢查的話,則整個字可以標記為有效。
在圖9c中讀請求R具有這樣的效果,使從存儲器10中取到超高速緩沖存儲器184中的MTU字部分延伸到不知道要被保存的、并且仍有可能被某些其它處理器寫的空間S內。這時當字MTU被加載到超高速緩沖存儲器184中時,必須把字MTU中的相應區域S’標記為無效。如果后來該字的這一部分S’被訪問,則需要重新讀字MTU。
此外,一個單一讀請求(參見圖9C中的R’)可以覆蓋多于一個存儲器字,這或者是因為它橫跨兩個連續字的邊界。如果處理器12的讀接口比存儲器字寬的話,這也可以發生。圖9A-C表示比請求的緩沖器空間W相對大的存儲器字。在實際中,所請求的窗口W常常大很多,然而在極端的情況下,整個循環通信緩沖器也可以和單個的存儲器字一樣小。
在超高速緩沖存儲器一致性控制中,在獲取空間、讀操作和有效(或無效)標記之間,以及在釋放空間、寫操作和“臟”標記和刷新之間有緊密的關系。在一個“Kahn”型應用中,端口具有專用的方向,或輸入或輸出。優選使用分開的讀和寫超高速緩沖存儲器,這將簡化一些實現問題。因為對于多個流,協處理器將線性地處理整個循環地址空間,讀超高速緩沖存儲器可選地支持預取,寫超高速緩沖存儲器可選地支持預刷新,在兩次讀訪問內移動到下一字,前一字的超高速緩沖存儲器位置可以為預期的未來使用變為可用的。讀和寫數據路徑的分開實現也更容易支持來自協處理器的讀和寫請求,例如在流水線式的協處理器實現中并行發生的。
另外協處理器以字節粒度寫數據,超高速緩沖存儲器管理在該超高速緩沖存儲器中的每字節的“臟”位。在釋放空間請求時,超高速緩沖存儲器刷新從超高速緩沖存儲器到與由這一請求指示的地址范圍量疊的共享存儲器的這些字。所述“臟”位要用于總線寫請求中的寫屏蔽,以保證該存儲器決不寫在訪問窗口之外的字節位置。
權利要求
1.數據處理系統,包括-存儲器;-連接到存儲器的至少一個第一和一個第二處理器,兩者都被安排來處理數據對象流,第一處理器被安排成通過在存儲器中的邏輯上連續的位置存儲數據對象而將來自該流的連續數據對象傳送給第二處理器,其中,每一處理器包括一個管理單元和一個計算單元,-第一處理器的管理單元,它維護規定了存儲器中的一段的信息,該段是空閑的以存儲由其它處理器讀取的數據對象,-第二處理器的管理單元,它維護規定了存儲器中的一段的信息,該段中已由第一處理器為所述數據對象寫入了完成的數據,-處理器同步通道,每一個所述處理器被安排成通過該處理器同步通道給其它處理器以發信號的方式發送一個消息以更新在所述其它處理器的管理單元中的信息,并且每一處理器被安排成當它需要訪問的位置處于由它的管理單元所規定的段之外時就掛起對數據對象流的處理。
2.根據權利要求1的數據處理系統,其特征在于,安排第一處理器發送一個消息,告知它使存儲器中的適量的數據對象成為可用的,并安排第二處理器發送一個消息,告知它不再需要訪問適量的數據對象。
3.根據權利要求1的數據處理系統,其特征在于,安排第一處理器發送一個消息,告知它需要適量的存儲器以供寫數據對象,安排第二處理器發送一個消息,告知它需要適量的數據對象。
4.根據權利要求2的數據處理系統,其特征在于,安排第一處理器的計算單元給它的功能單元發布一個命令,指示在它的段內是否有適量的存儲器可用于寫新數據對象,和安排第二處理器的計算單元給它的功能單元發布一個命令,指示在所述第二處理器的該段內是否有適量的數據對象可用。
5.根據權利要求1的數據處理系統,其中,所述第二處理器是一個多任務處理器,能夠交織處理至少一個第一和一個第二任務,其中,所述至少第一和第二任務處理數據對象流。
6.根據權利要求1的數據處理系統,其中,第二處理器是用于執行一系列流處理任務的功能特定的專用協處理器。
7.根據權利要求1的數據處理系統,其中,安排這些處理器執行讀和/或寫操作以允許隨機訪問由其管理單元定義的所述存儲器中的段內的位置。
8.根據權利要求5的數據處理系統,其中,當第一任務的一組數據對象的處理被中斷時,暫時禁止所述數據對象組的進一步處理,其中,當所述第一任務的所述數據元素組的處理被中斷時,執行第二任務的數據對象的處理。
9.根據權利要求8的數據處理系統,其中,在一個任務中斷后,舍棄該組數據對象的部分處理的實際任務狀態和阻止該組數據對象的一部分的確認操作。
10.根據權利要求9的數據處理系統,其中,在一個被中斷的任務恢復后,處理器重新起動該組數據對象的處理,從而舍棄所述組的先前的處理。
11.根據權利要求1的數據處理系統,其中,在所述存儲器中暫時存儲中間數據。
全文摘要
說明了一種多處理器數據處理系統,其中,處理器(12a,12b,12c)通過共享的存儲器(10)彼此通信。每一處理器包括一個管理單元(18a)和一個通信單元(12a)。寫處理器(11a)的管理單元保持著規定為存儲由讀處理器(12b)讀取的數據對象的存儲器(10)中空閑的一段的信息。讀處理器(11b)的管理單元(18b)保持著規定寫處理器已經為所述數據對象寫入了完成的數據的存儲器(10)中一段的信息。安排這些處理器通過處理器同步通道給另一處理器發送消息(M,M′),以便更新在所述其它處理器的管理單元中的信息。安排每一處理器當需要訪問的位置位于由它的管理單元所定義的段外時就掛起數據對象流的處理。
文檔編號G06T1/20GK1605066SQ02824948
公開日2005年4月6日 申請日期2002年12月5日 優先權日2001年12月14日
發明者J·T·J·范埃德霍文, E·J·波, M·J·魯特坦 申請人:皇家飛利浦電子股份有限公司