專利名稱:同時執(zhí)行的進程經由fifo緩沖器進行通信的數(shù)據處理的制作方法
技術領域:
本發(fā)明涉及數(shù)據處理,尤其涉及同時執(zhí)行的進程經由FIFO緩沖器進行通信的數(shù)據處理。
M.J.Rutten、J.T.J.van Eijndhoven、E.J.D.Pol、E.G.T Jaspers、P.van der Wolf、O.P.Gangwal和A.Timmer在《IEEE Design and Testof Computers,Special Issue on Embedded Processor Based Designs》(編輯P.Marwedel,2002年)上發(fā)表的文章“EclipseA HeterogeneousMultiprocessor Architecture for Flexible Media Processing”描述了一種在同時執(zhí)行的進程之間傳送數(shù)據的方法。將該文章稱為“Eclipse”。
“Eclipse”討論媒體處理(如,視頻圖像處理),其中,數(shù)據流從一個進程傳遞到另一個進程。“Eclipse”的一個重要方面在于,為不同進程之間的通信和同步的通用接口模型,提供了一個高效可實現(xiàn)的定義。該接口模型定義了通信和同步必須使用的應用程序接口(API)的原函數(shù)(primitive function)的有限集(limited set)。通過該API的原函數(shù),可以從功能上描述信號處理任務,從而可以通過多種方式執(zhí)行各進程通過運行在相同或不同處理單元或專用硬件處理器或其組合上的計算機程序。因此,該接口模型增加了信號處理任務描述的可用性。
為了實現(xiàn)該結果,需要認真選擇用于通信和同步的API的原函數(shù),以便于能夠高效地實現(xiàn)它們。該接口模型假定了一個生成器進程和一個消費器進程,生成器進程生成數(shù)據流,消費器進程使用來自該流的數(shù)據,并能夠同時執(zhí)行,這樣,當生成進程還沒有在該流中生成另一數(shù)據時,消費進程使用來自該流的數(shù)據。
這些進程通常生成和消費晶粒(grain)中的數(shù)據。例如,最小尺寸晶粒是一個圖像的單個像素值,較大尺寸晶粒的例子是圖像線或8×8像素塊。不同的進程可能使用不同的晶粒尺寸。例如,需要完全用于處理的線、但僅收到8×8塊的進程必須使用8線的晶粒。在處理期間,消費進程從一個晶??缣搅硪痪Я#谒隹缣g,消費只處理來自當前晶粒的數(shù)據。
Eclipse使用FIFO緩沖器接口,在生成進程和消費進程之間傳送來自該流的數(shù)據。生成進程將數(shù)據寫入FIFO緩沖存儲器中,每次一個晶粒,消費進程按照所述晶粒被寫的順序,從FIFO緩沖器讀取數(shù)據,每次一個晶粒。對于該機制,Eclipse定義了以下原始命令,用于在信號處理任務中表示通信和同步Write、Read、GetSpace和PutspaceFIFO緩沖器的寫命令需要把輸出數(shù)據的晶粒(的指針)和寫晶粒的尺寸作為參數(shù)(該尺寸也可以是隱含的)。讀命令把指向該數(shù)據的存儲器區(qū)域的指針和讀晶粒的尺寸作為參數(shù)。在執(zhí)行讀命令之后,把來自該讀晶粒的數(shù)據從FIFO緩沖器復制到該指針所指向的存儲器區(qū)域。GetSpace命令用于指示下一個要讀或寫的晶粒。GetSpace命令把晶粒尺寸作為參數(shù),并返回一個表示所請求空間是否可用的標記。該標記可用于判斷某進程是否應該暫停。響應于GetSpace命令,為調用進程預留空間。PutSpace命令用于表示讀或寫晶粒已經結束,不需要再為調用進程預留用于該晶粒的FIFO緩沖器區(qū)域。
將任務描述中的通信和同步描述基于該命令集,以及在該命令集的不同實現(xiàn)上實現(xiàn)任務描述的不同實現(xiàn),從而實現(xiàn)可用性。
FIFO緩沖器接口的典型實現(xiàn)使用以環(huán)形方式進行尋址的存儲器。將來自每個下一晶粒的數(shù)據寫在下一更高序列地址,直至到達該緩沖器存儲器的地址范圍的末尾。在這種情況下,將來自下一晶粒的數(shù)據寫在該存儲器中的最低序列地址。但是,當使用不同晶粒尺寸時,這樣的FIFO緩沖器接口就很復雜。當消費進程的晶粒尺寸大于生成進程的晶粒尺寸時,例如,在有些晶粒中,某個晶粒內的地址很可能“繞回(wrap around)”(從緩沖器地址范圍的一個邊界跳到另一邊界)。這使得消費進程在晶粒中的數(shù)據尋址變得很復雜。
Eclipse已經解決了該問題,它使用的讀命令把指向來自FIFO緩沖器數(shù)據要復制到的存儲器的指針作為參數(shù)。消費進程從該區(qū)域讀數(shù)據。在該解決方案中,來自FIFO緩沖器中的某個晶粒的所有數(shù)據被復制到該消費進程的某個晶粒的本地存儲器中,從而消除地址的繞回。這樣,由于繞回所導致的地址復雜化僅限于復制,從而,消費進程能夠以最大效率自由地對該晶粒內的數(shù)據進行尋址。但是,復制引入了處理的開銷成本。
Eclipse的API中未使用的另一種可能解決方案是消費進程對每個地址進行地址轉換,直接從FIFO緩沖存儲器中訪問該晶粒內的數(shù)據,以確保需要繞回時調整地址。這消除了復制的開銷,但是,每次對數(shù)據進行尋址時,都會引入開銷。如果消費進程不適用于該緩沖存儲器,那么,每次對數(shù)據進行尋址時,消費進程必須把晶粒內數(shù)據的地址提供給API調用,以進行轉換。
相應地,本發(fā)明的一個目的是提供一種用于信號處理任務描述的應用程序接口定義以及該應用程序接口定義的實現(xiàn),從而,在經由具有繞回地址的FIFO緩沖存儲器傳送晶粒數(shù)據的進程執(zhí)行期間,能夠降低開銷。
更具體地說,本發(fā)明的一個目的是為使用彼此不同晶粒尺寸的進程降低這樣的開銷。
權利要求1描述了根據本發(fā)明的數(shù)據處理裝置。消費進程經由一個應用程序接口函數(shù),獲得對環(huán)形緩沖器的訪問,從而獲得對來自某晶粒的數(shù)據的訪問。根據本發(fā)明,該函數(shù)返回一個表示消費進程應當直接從環(huán)形FIFO緩沖器中或從輔助存儲器中讀數(shù)據的指示,當晶粒內的地址在環(huán)形FIFO緩沖器中繞回時,該函數(shù)返回下一個指示。當晶粒內的地址在FIFO緩沖器中繞回時,把來自該晶粒的數(shù)據復制到輔助存儲器中。
為消費進程具體定義了晶粒尺寸和輔助緩沖器,以使得消費進程的晶粒尺寸不同于向FIFO緩沖器中寫的生成進程的晶粒尺寸。選擇輔助緩沖器,以使得它包含足夠的空間,以寫來自該流的晶粒。由于輔助緩沖器具體針對消費進程,所以,它應該大到足以處理所有可能的晶粒尺寸。優(yōu)選情況下,消費進程使用一個發(fā)送給應用程序接口的命令,自己把晶粒尺寸和輔助緩沖器設置為例如該命令的自變量。
當一個該類型命令包含在應用程序接口中時,該命令能夠為信號處理任務寫程序,從而,用該命令表示從該環(huán)形FIFO緩沖器讀的所有訪問。這使得FIFO緩沖器的實現(xiàn)對指明信號處理任務的程序是透明的。因此,相同的程序可用于不同的實現(xiàn),其中,構成信號處理任務的進程不同地分布在不同的處理器上。通過在合適的處理器中執(zhí)行這些進程以及交換用于處理對環(huán)形FIFO緩沖器的訪問的應用程序接口命令,實現(xiàn)這樣不同的分布,這適合于對執(zhí)行這些進程的處理器進行定位。因此,在信號處理任務的說明中,該分布是透明的。
由于該應用程序接口命令提供了直接從環(huán)形FIFO緩沖器或從輔助存儲器對數(shù)據的另一種使用,所以,該透明性是用高效訪問FIFO緩沖器來實現(xiàn)的。
下面將結合附圖描述本發(fā)明的這些和其他目的以及其他有益方面。
圖1示出了數(shù)據處理的組織結構;圖2示出了一種數(shù)據處理裝置;圖3示出了一種接口程序的流程圖;圖4示出了一種具有FIFO緩沖器的數(shù)據處理裝置;圖5示出了編譯的流程圖。
圖1示出了數(shù)據處理的組織結構,其使用第一進程1、第二進程4、FIFO緩沖存儲器2、分別位于FIFO緩沖存儲器2和進程1、4之間的應用程序接口1a、4a。在操作中,第一進程1生成數(shù)據流,并將來自該流的數(shù)據寫入FIFO緩沖存儲器2。在晶粒中生成和消費數(shù)據,通常每個晶粒包括多個單獨可尋址的字。FIFO緩沖存儲器2從進程1接收來自某晶粒的數(shù)據,然后再收到來自另一晶粒的數(shù)據,等等,并在某時間將來自某晶粒的數(shù)據連續(xù)地提供給第二進程4,按照從第一進程1接收這些晶粒或晶粒組的順序。
進程1、4通常是用軟件實現(xiàn)的進程,它們經由應用程序接口1a、4a,與FIFO緩沖器11進行交互。也就是說,進程1、4不直接管理FIFO緩沖進程的細節(jié),但調用管理這些細節(jié)的應用程序接口函數(shù)。為清楚起見,圖1的結構只示出了兩個進程1、4,但應當理解的是,在實際應用中,可能會涉及多個經由多個FIFO緩沖器進行通信的進程。
圖2示出了用于實現(xiàn)圖1的結構的一個典型處理裝置。該處理裝置包含經由通信設施14a、14b連接的第一處理單元10、第二處理單元16和存儲器18。例如,可以把一條總線用作通信設施。第一處理單元10被編程為執(zhí)行第一進程1和應用程序接口1a的函數(shù)。第二處理單元16被編程為執(zhí)行第二進程4和應用程序接口4a的函數(shù)。通常,把該裝置實現(xiàn)為集成電路器件,其至少包含這些處理單元和總線,優(yōu)選還包括存儲器。
在操作中,對于FIFO緩沖存儲器2,使用來自存儲器18的存儲位置。從最小地址Amin到最大地址Amax的地址區(qū)域用來存儲FIFO緩沖的數(shù)據。用于訪問FIFO緩沖存儲器的應用接口定義了函數(shù)Read、Write、GetSpace和Putspace。
通過GetSpace調用和Write調用,第一進程1把一個晶粒數(shù)據提供給應用程序接口1a的一個函數(shù),該函數(shù)把該數(shù)據寫入地址為A1至An的n個存儲位置,A1至An在范圍Amin至Amax(整數(shù)n表示該晶粒中可訪問數(shù)據項的數(shù)量)。當?shù)谝贿M程提供下一晶粒時,數(shù)據被寫入地址為An+1...A2n的存儲位置,依此類推,直至到達Amax。在這種情況下,應用程序接口1a把來自下一晶粒的數(shù)據寫入地址為Amin...Amin+n-1的存儲位置,或者,如果在該晶粒中的其他地方到達了地址Amax,則應用程序接口1a把該晶粒中的后續(xù)部分寫入地址開始于Amin的存儲位置。這被稱為繞回,或以環(huán)形方式寫。如果這樣的寫使得來自較早晶粒的數(shù)據在被第二進程4使用之前被覆蓋,則應用程序接口1a顯示FIFO緩沖存儲器2是“滿的”,從而導致第一進程1的執(zhí)行暫停,直至第二進程4完成讀取將要被覆蓋的數(shù)據。
在某時間,第二進程4使用GetSpace調用和Read調用,訪問來自某晶粒的數(shù)據。在第二進程4完成訪問來自該晶粒的數(shù)據之后,第二進程4調用應用程序接口4a,以接收下一晶粒。第二進程4訪問的晶粒的尺寸可能不同于第一進程1的晶粒的尺寸。例如,第二進程4的每個晶粒可能包括第一進程1的晶粒的整數(shù)m倍。當?shù)诙M程4準備處理來自下一晶粒的數(shù)據時,它調用應用程序接口4a。Read調用
指向數(shù)據緩沖器的指針=Read(...,指向附加存儲器的指針)把指向緩沖存儲器附加區(qū)域的指針作為自變量,并返回一個指向緩沖器的指針。這里沒有顯示其他自變量,因為它們不是實質性的,但這些自變量可能包括晶粒尺寸、處理任務標識和FIFO標識。第二進程4把指向存儲器18中的緩沖存儲器的附加區(qū)域提供給接口4a。該區(qū)域至少具有用于存儲第二進程4的一個晶粒的數(shù)據所需的尺寸。
圖3示出了當應用程序接口4a收到來自第二進程4的調用以接收來自FIFO緩沖存儲器的下一晶粒時應用程序接口4a的操作的流程圖。在第一步驟31中,當某個數(shù)據晶??勺x時,應用程序接口4a接受該調用,以接收下一晶粒;直至必須暫停第一進程4的時間。在第二步驟32中,應用程序接口4a檢查來自該晶粒的數(shù)據的地址是否繞回在該晶粒內。如果是,則應用程序接口4a執(zhí)行第三步驟33,其中,它把來自該下一晶粒的數(shù)據復制到與調用一起提供的指針所指向的附加區(qū)域中。在復制期間,消除地址繞回,也就是說,從FIFO緩沖器區(qū)域中地址Amin開始存儲的、來自該晶粒的數(shù)據部分被存儲在附加區(qū)域中,其地址在來自FIFO緩沖器區(qū)域末端處的晶粒的數(shù)據地址之后。在第四步驟34中,應用程序接口4a將指向該附加區(qū)域的指針返回給第二進程4。
如果應用程序接口4a在第二步驟32中發(fā)現(xiàn)數(shù)據在FIFO緩沖器區(qū)域中沒有繞回,則應用程序接口4a執(zhí)行第五步驟35,從而返回指向FIFO緩沖器區(qū)域中存儲該晶粒數(shù)據的存儲位置的指針。
因此,第二進程4提供和接收指向應用程序接口4a的指針。應用程序接口4a返回所提供的指針或把指向FIFO緩沖器一部分的指針提供給第二進程4,這取決于下一晶粒的存儲方式。只有由于繞回需要避免分裂尋址時,才將所提供的指針返回。用于確??捎眯缘膽贸绦蚪涌诎糜谥该鬟@一點的原函數(shù)Read。
指向數(shù)據緩沖器的指針=Read(...,指向附加存儲器的指針)對于高級程序,Read函數(shù)可能實現(xiàn)為例如<pre listing-type="program-listing"><![CDATA[BufferPointer Read(BufferPointer P){ int end_of_grain=current_offset+grain_size; if(end of grain<max)return base_address_of_FIFO_buffer+current_offset; for(int i=0;i<max-current_offset;i++)P[i]=FIFO_buffer[i+current_offset]; for(int i=max-current_offset;i<grain_size;i++)P[i]=FIFO_buffer[i+current_offset-max], retum P;}]]></pre>在這里,max、current_offset和grain_size分別是表示FIFO緩沖器尺寸、FIFO緩沖器中的晶粒的開始位置和晶粒尺寸的參數(shù)。假設其他地方已經定義了這些參數(shù)的值??蛇x地,可以把這些參數(shù)中的一個或多個作為函數(shù)Read的自變量進行傳送。應當注意的是,由于某些原因(例如,在向FIFO緩沖器中寫時避免繞回),參數(shù)max可以作為時間的函數(shù),自動改變。
上面結合“Read”函數(shù)對本發(fā)明進行了描述,“Read”函數(shù)將指向附加存儲器區(qū)域的指針作為由消費進程4傳遞的自變量?;蛘?,消費進程4也可以對一系列Read操作將該指針設置一次?;蛘?,可以使用預先設定的指針,這由應用程序接口進行定義。使用由消費進程4定義的指針具有如下優(yōu)點可以把附加存儲器區(qū)域中需要預留的空間量調整為消費進程4使用的晶粒尺寸。因此,不需要預留“最糟糕情況”尺寸,這可能涉及復制FIFO緩沖器尺寸。使用被定義為Read函數(shù)自變量的指針具有如下優(yōu)點在Read函數(shù)的每個調用不增加開銷的情況下,可以動態(tài)調整晶粒尺寸。
應當注意的是,為確保將數(shù)據存儲在不同區(qū)域中,不必將指向不同附加區(qū)域值的指針作為自變量提供給連續(xù)的Read函數(shù)調用。這是因為,該應用可以不基于把數(shù)據復制到附加區(qū)域的假設。只有很例外才是這種情況。
上面結合應用程序接口1a、4a對本發(fā)明進行了描述,應用程序接口1a、4a被實現(xiàn)為分別由第一處理單元10和第二處理單元16執(zhí)行的程序,但應當理解的是,這兩個應用程序接口中的一個或兩個可以運行在不同的處理單元上。實際上,第一和第二進程1、4可以與應用程序接口1a、4a一起,運行在相同的處理單元上。在另一實施例中,F(xiàn)IFO緩沖存儲器2和應用程序接口1a、4a可被實現(xiàn)為專用硬件。
圖4中的例子示出了FIFO緩沖存儲器2和第二進程4的接口的硬件實現(xiàn)。在該硬件示例中,F(xiàn)IFO緩沖器單元12連接在第一處理單元10和總線14a、14b之間。FIFO緩沖器單元12包含緩沖存儲器120;FIFO輸入指針寄存器122;FIFO輸出指針寄存器124;應用調用處理器126;附加緩沖器指針寄存器127;返回指針復用器128;和FIFO輸出地址復用器129。優(yōu)選用集成電路實現(xiàn)該硬件實現(xiàn),其包含除了可能外置存儲器之外的所有部件。
在操作中,當要寫入某新晶粒時,第一處理單元10生成一個調用信號,發(fā)送給應用調用處理器126。如果緩沖存儲器120中有存儲空間,則應用調用處理器126把FIFO輸入指針寄存器122設置到緩沖存儲器120中的晶粒的起始地址,并向第一處理單元10確認可以開始寫。第一處理單元10從FIFO輸入指針寄存器122中讀取起始地址,并從起始地址開始,把來自該晶粒的數(shù)據寫入緩沖存儲器120。
第二處理單元16經由總線14a、14b可對緩沖存儲器120和存儲器18進行尋址。根據地址數(shù)據,第二處理單元16從緩沖存儲器120讀取或從存儲器18中讀。當要讀新的晶粒時,第二處理單元10生成一個調用信號,發(fā)送給應用調用處理器126。該調用伴隨著存儲器12中的附加區(qū)域的地址。響應于該調用,應用調用處理器126檢測該晶粒是否完全可用,如果完全可用,則把FIFO輸出指針寄存器122設置為緩沖存儲器120中的晶粒的起始地址。
但是,在確認該調用之前,應用調用處理器126檢測該晶粒的地址是否繞回。如果是,則應用調用處理器126對緩沖存儲器進行尋址,輸出來自該晶粒的數(shù)據,并且,應用調用處理器126對存儲器18進行尋址,使用從附加區(qū)域的地址開始的地址,以存儲來自緩沖存儲器120的晶粒的數(shù)據。應用調用處理器126控制返回指針復用器128,輸出附加區(qū)域的地址或來自FIFO輸出指針寄存器122的起始地址。最后,應用調用處理器126確認該調用。
確認該調用之后,F(xiàn)IFO輸出地址復用器129允許第二處理單元從緩沖存儲器120中讀數(shù)據。第二處理單元10讀從返回指針復用器128接收的起始地址,并根據返回的指針,對晶粒中的數(shù)據進行尋址。
應當理解的是,圖4只示出了一個在指針之間做出選擇的說明性實施例。還有很多其他方式可以將正確的指針提供給第二進程4。例如,如果不采用指針,則可以提供一個標記信號,其表示必須從兩個存儲位置中的哪一個讀指針,或者,在應用調用處理器126的內部生成所需的指針,并從那里提供該指針,而不是將其保存在復用器128所選擇的寄存器中。如果不采用寄存器和復用器128,也可以使用一個存儲位置,其中,在應用調用處理器126的控制下,寫入合適的指針信息。如上所述,對于軟件實現(xiàn)的情況,處理單元16不必為每個調用提供存儲器18中的附加區(qū)域的地址。相反,可以在獨立的事務中提供該地址,以把該地址存儲在寄存器127中,從而在任何數(shù)量的調用期間使用。此外,附加區(qū)域可以是包含F(xiàn)IFO緩沖存儲器120的較大存儲器的一部分。存儲器18和緩沖存儲器120實際上可以是同一較大存儲器的一部分。
應當認識到的是,向FIFO緩沖器的寫同樣可以利用輔助存儲器,從而,執(zhí)行生成進程,當某晶粒內的地址繞回時,寫入輔助存儲器,當?shù)刂窙]有繞回時,直接寫入FIFO存儲器。在這種情況下,生成進程首先執(zhí)行應用接口調用,以接收一個用于寫來自晶粒的數(shù)據的指針。該調用把輔助存儲器指針作為自變量。響應于該調用,該應用程序接口在FIFO存儲器中為晶粒預留空間。作為對調用的報答,應用程序接口把收到的指針作為自變量返回,或者把該指針返回FIFO存儲器中,至于選擇哪一個,這取決于晶粒地址是否在FIFO存儲器中繞回。然后,生成進程把晶粒數(shù)據寫入返回的指針所指向的存儲器中。當通知該晶粒完成時,如果FIFO存儲器中的地址繞回,則應用程序接口復制來自輔助存儲器區(qū)域的數(shù)據。
這降低了FIFO緩沖器生成端的開銷。但是,應當理解的是,如果通常只寫數(shù)據一次而讀多次,或者,如果消費進程不需要讀所有數(shù)據,那么,對于消費端,這種降低就不太明顯。因此,當本發(fā)明僅用于輸出端時,就已經實現(xiàn)了明顯的改進,將其應用于輸入端不需開銷。
在任何情況下,當FIFO緩沖器尺寸是消費端的晶粒尺寸的整數(shù)倍時,這種改進在輸入端上是不必要的。同樣,當應用程序接口暫時減少或增加FIFO緩沖器的尺寸以確保在寫時晶粒一端與緩沖存儲器一端一致時,不需要這樣的改進。
在上面對本發(fā)明的描述中,連續(xù)晶粒具有遞增的地址,但應當理解的是,也可以使用遞減的地址。在這種情況下,當晶粒到達FIFO緩沖器的最低地址時,使用輔助存儲器區(qū)域。同樣,盡管這里把總線示為執(zhí)行這些進程的處理器、輔助存儲器和FIFO緩沖器之間的通信結構,但應當理解的是,對于這些單元的部分或全部之間的通信,也可以使用諸如網絡之類的其他類型通信結構,這樣,就不用總線地址,而使用網絡地址。
以傳統(tǒng)方式,如同Eclipse所描述的那樣,在設計信號處理任務期間,規(guī)定進程的數(shù)量,例如,通過諸如C程序代碼之類的高級語言程序代碼。在這些進程之間傳送數(shù)據流,這些進程被設計為同時生成和消費數(shù)據流。通過調用接口函數(shù)實現(xiàn)進程之間的通信和同步,以與FIFO緩沖器進行交互。
圖5示出了編譯程序的機器。該機器包括處理器50;輸入裝置52,用于輸入程序;存儲裝置54,用于存儲多個函數(shù)庫54a-c;目標編程單元56。函數(shù)庫54a-c各包含用于執(zhí)行接口函數(shù)的實現(xiàn)指令,如上述的Read函數(shù),每個庫用于相應類型的目標機器。例如,在一種實現(xiàn)方式中,庫函數(shù)使用生成和消費進程的單個存儲器以及FIFO緩沖器,支持軟件實現(xiàn),而在另一個庫中,函數(shù)支持FIFO緩沖和/或把FIFO緩沖的數(shù)據在不同處理器之間傳送的硬件實現(xiàn)。
在操作中,在第一步中,處理器50從輸入裝置52讀取一個程序(該程序可以存儲在中間,如存儲裝置54)。該程序包含一個對庫函數(shù)的調用,以獲得對來自FIFO緩沖器的數(shù)據的訪問,并使用該調用結果來控制該程序中的后續(xù)指令直接從FIFO緩沖器讀或寫FIFO緩沖器還是從附加緩沖器讀或寫附加緩沖器,優(yōu)選在由該程序中的指令所指定的附加緩沖器中。
在第二步中,處理器50解析該程序,然后生成包含執(zhí)行該程序所必須執(zhí)行的指令的目標代碼。在第二步中,處理器50還判斷該程序是否包含對前述“Read”函數(shù)的類型的接口庫函數(shù)的調用。在第三步中,處理器50判斷應當使用庫54a-c中的哪一個,例如,這取決于諸如表示目標機器類型的鏈接選項之類的信號。在第三步中,處理器50把目標代碼與來自接口庫54a-c中選定一個的指令進行鏈接,從而,在目標代碼中對Read函數(shù)的調用將導致執(zhí)行來自所選庫的指令,這實現(xiàn)Read函數(shù)。在第四步中,處理器10把鏈接代碼發(fā)送給目標編程單元56,例如,目標編程單元56把鏈接代碼加載到目標處理器中以進行執(zhí)行(或使用產品的代碼控制部分,把集成電路編程為執(zhí)行該程序)。盡管對Read函數(shù)的不同的實現(xiàn)提供了優(yōu)選不同的庫,以使得對不同類型機器可以鏈接相同的程序,但應當理解的是,如果處理器10僅提供在一種類型目標機器上的執(zhí)行,那么一個庫就足夠了。
應當理解的是,每一步都是傳統(tǒng)的,除了使用一個或多個新的接口函數(shù)庫,這包含訪問FIFO緩沖器的庫Read函數(shù),其中,Read函數(shù)返回一個指示,表示應當直接從FIFO存儲器讀為該程序生成的指令或把為該程序生成的指令寫到FIFO存儲器中還是從附加存儲器讀為該程序生成的指令或把為該程序生成的指令寫到附加存儲器中,優(yōu)選在一個由該程序中的指令所指定的緩沖器中。還應當理解的是,在第三步中,該函數(shù)的鏈接不是必須的。也可以使用運行時支持的對系統(tǒng)函數(shù)的調用,或者,作為調用的結果,可以包含控制FIFO緩沖的硬件的指令。
根據本發(fā)明,接口函數(shù)包括一個Read函數(shù),該Read函數(shù)返回對緩沖器的選擇,以進行讀,該選擇表示應該直接使用FIFO緩沖存儲器,還是應該使用輔助存儲器區(qū)域。因此,如同Eclipse所描述的那樣,任務說明用于控制硬件和/機器指令的程序的制造,以實現(xiàn)該說明,不同之處在于,Read命令實現(xiàn)為上述結構或其等價物。根據實現(xiàn)類型,尤其是進程的硬件分布的選擇,選擇Read函數(shù)的實現(xiàn)方式。
權利要求
1.一種數(shù)據處理裝置,包括處理電路,被設置為執(zhí)行數(shù)據生成進程和數(shù)據消費進程,所述數(shù)據生成進程用于生成數(shù)據流,所述數(shù)據消費進程在生成所述流的同時消費所述數(shù)據流;所述數(shù)據消費進程可訪問的處理存儲器;先進先出環(huán)形緩沖器單元,用于在所述數(shù)據生成進程和所述數(shù)據消費進程之間傳遞來自所述流的數(shù)據,所述環(huán)形緩沖器單元包括緩沖存儲器,所述環(huán)形緩沖器單元把來自所述流的數(shù)據項以環(huán)形方式寫入所述緩沖存儲器中;所述環(huán)形緩沖器單元的消費進程接口,被設置為使用具體用于所述數(shù)據消費進程的晶粒尺寸選擇和輔助緩沖器區(qū)域選擇,所述消費進程接口被設置為處理一條用于把來自所述流的數(shù)據晶粒提供給所述數(shù)據消費進程的命令,所述消費進程接口被設置為通過測試必須要訪問的晶粒內的數(shù)據地址是否在所述緩沖存儲器中繞回,來響應所述命令;響應于檢測到所述地址繞回,把所述晶粒從所述緩沖存儲器復制到所述輔助存儲器區(qū)域中,從而在所復制的晶粒中消除所述繞回;以及當所述晶粒內的所述地址沒有繞回時,向所述消費進程返回一個從所述緩沖存儲器中讀取所述晶粒的指示,或者,當所述地址繞回時,返回一個從所述輔助存儲器區(qū)域中讀取的指示。
2.如權利要求1所述的數(shù)據處理裝置,其中,所述消費進程接口被設置為響應于所述命令,根據所述緩沖存儲器中的所述晶粒中的所述數(shù)據的所述地址是否繞回,返回一個用于對所述緩沖存儲器或所述輔助存儲器區(qū)域進行尋址的指針,以在所述晶粒中對數(shù)據進行尋址。
3.如權利要求1所述的數(shù)據處理裝置,其中,所述消費進程被設置為選擇所述輔助存儲器的地址和所述晶粒尺寸,作為所述命令的一部分。
4.如權利要求1所述的數(shù)據處理裝置,其中,所述數(shù)據生成進程和所述數(shù)據消費進程被設置為分別使用第一和第二晶粒尺寸用于向所述環(huán)形緩沖器單元發(fā)送數(shù)據以及從所述環(huán)形緩沖器單元中接收數(shù)據,所述第一和第二晶粒尺寸彼此不同。
5.如權利要求5所述的數(shù)據處理裝置,其中,所述數(shù)據處理裝置被設置為使用可變晶粒尺寸用于發(fā)送數(shù)據。
6.如權利要求2所述的數(shù)據處理裝置,其中,選擇所述第一晶粒尺寸和所述環(huán)形緩沖器單元的尺寸,以使得所述環(huán)形緩沖器單元中的所述數(shù)據的地址總是在具有所述第一晶粒尺寸的連續(xù)晶粒之間繞回。
7.如權利要求1所述的數(shù)據處理裝置,包括數(shù)據生成進程可訪問的另一處理存儲器,所述數(shù)據生成進程用于生成所述數(shù)據流;所述環(huán)形緩沖器單元的生成進程接口,被設置為接收用于所述數(shù)據生成進程的另一輔助存儲器區(qū)域選擇,所述生成進程接口被設置為處理用于輸出來自所述流的輸出數(shù)據晶粒的另一命令,所述生成進程接口被設置為通過測試所述輸出晶粒內的數(shù)據的地址是否在所述緩沖存儲器中繞回,對所述另一命令做出響應;當所述晶粒內的所述地址沒有繞回時,向所述生成進程返回一個將所述晶粒寫入所述緩沖存儲器的指示,或者,當所述地址繞回時,返回一個寫入所述輔助存儲器區(qū)域的指示;響應于檢測到所述地址繞回,把所述晶粒從輔助存儲器區(qū)域復制到所述緩沖存儲器中,從而在所復制的晶粒中創(chuàng)建所述繞回。
8.一種數(shù)據處理裝置,包括處理電路,被設置為執(zhí)行數(shù)據生成進程和數(shù)據消費進程,所述數(shù)據生成進程用于生成數(shù)據流,所述數(shù)據消費進程在生成所述流的同時消費所述數(shù)據流;所述數(shù)據生成進程可訪問的處理存儲器;先進先出環(huán)形緩沖器單元,用于在所述數(shù)據生成進程和所述數(shù)據消費進程之間傳遞來自所述流的數(shù)據,所述環(huán)形緩沖器單元包括緩沖存儲器,所述環(huán)形緩沖器單元把來自所述流的數(shù)據項以環(huán)形方式寫入所述緩沖存儲器中;所述環(huán)形緩沖器單元的生成進程接口,被設置為使用具體用于所述數(shù)據生成進程的晶粒尺寸選擇和輔助緩沖器區(qū)域選擇,所述生成進程接口被設置為處理一條用于把存儲器提供給所述數(shù)據生成進程以寫入所生成晶粒的命令,所述生成進程接口被設置為通過測試必須向其提供存儲器的所述晶粒中的數(shù)據地址是否在所述緩沖存儲器中繞回,來響應所述命令;當所述晶粒內的所述地址沒有繞回時,向所述生成進程返回一個把所述晶粒寫入所述緩沖存儲器的指示,或者,當所述地址繞回時,返回一個寫入輔助存儲器區(qū)域的指示。
9.一種用于生成信號處理任務的機器實現(xiàn)的機器實現(xiàn)方法,其中,所述信號處理任務包括同時執(zhí)行的進程,數(shù)據流經由環(huán)形緩沖存儲器在所述進程之間傳送,該方法包括提供一個應用程序接口,所述應用程序接口包括由所述進程中的數(shù)據消費進程調用以訪問所述緩沖存儲器中存儲的數(shù)據晶粒的函數(shù),所述應用程序接口為所述進程中的所述數(shù)據消費進程提供所述晶粒尺寸和輔助存儲區(qū)域的可選擇定義,所述函數(shù)被設置為測試必須要訪問的晶粒的地址是否在所述緩沖存儲器中繞回,當所述晶粒中的所述地址繞回時,把所述晶粒從所述緩沖存儲器復制到所述輔助存儲器區(qū)域中,從而在所復制的晶粒中消除所述繞回,以及,作為所述調用的結果,當所述晶粒內的所述地址沒有繞回時,向所述進程中的所述消費進程返回一個從所述緩沖存儲器中讀來自所述晶粒的數(shù)據的指示,或者,當所述晶粒中的所述地址繞回時,返回一個從所述輔助存儲器區(qū)域中讀的指示;接收所述信號處理任務的說明;識別所述說明中對所述函數(shù)的調用;使用來自所述應用程序接口的所述函數(shù),實現(xiàn)所述調用。
10.如權利要求9所述的機器實現(xiàn)方法,其中,所述應用程序接口對所述處理任務的所述說明隱藏處理單元上的進程分布,所述函數(shù)的所述實現(xiàn)是根據所述分布而選擇的。
11.如權利要求10所述的機器實現(xiàn)方法,該方法包括生成用于實現(xiàn)所述機器實現(xiàn)的集成電路制造控制信息,以及,在所述集成電路制造控制信息的控制下,制造集成電路。
12.一種計算機可讀介質,包括用于訪問環(huán)形FIFO緩沖器的應用程序接口,所述應用程序接口為從所述環(huán)形FIFO緩沖器訪問數(shù)據的應用程序,提供晶粒尺寸選擇,并為所述應用程序提供輔助存儲器區(qū)域的定義,所述應用程序接口包括所述應用程序要調用的函數(shù),以從所述環(huán)形FIFO緩沖器訪問晶粒,所述函數(shù)被配置為測試必須要訪問的所述晶粒中的數(shù)據地址是否在所述環(huán)形FIFO緩沖器中繞回;當所述晶粒內的所述地址繞回時,把所述晶粒從所述FIFO緩沖器復制到輔助存儲器區(qū)域中,從而在所復制的晶粒中消除所述繞回;作為所述調用的結果,當所述晶粒內的所述地址沒有繞回時,返回一個從所述FIFO緩沖器中讀的指示,或者,當所述晶粒內的所述地址繞回時,返回一個從所述輔助存儲器區(qū)域中讀的指示。
13.一種包含用于執(zhí)行權利要求8的方法的指令程序的計算機可讀介質。
全文摘要
處理電路執(zhí)行數(shù)據生成進程和數(shù)據消費進程。所述數(shù)據生成進程生成數(shù)據流,所述數(shù)據消費進程在生成所述流的同時消費所述數(shù)據流。先進先出環(huán)形緩沖器在所述數(shù)據生成進程和所述數(shù)據消費進程之間傳遞來自所述流的數(shù)據。所述緩沖器包括緩沖存儲器,所述緩沖器把來自所述流的數(shù)據項以環(huán)形方式寫入所述緩沖存儲器。消費進程接口被設置為處理一條用于把來自所述流的數(shù)據晶粒提供給所述數(shù)據消費進程的命令。通過測試必須要訪問的晶粒內的數(shù)據地址是否在所述環(huán)形FIFO緩沖器中繞回,所述接口對所述命令做出響應。如果所述地址繞回,則所述接口把所述晶粒從所述FIFO緩沖器復制到所述輔助存儲器區(qū)域中,從而在所復制的晶粒中消除所述繞回。當所述晶粒內的所述地址沒有繞回時,所述接口向所述消費進程返回一個從所述FIFO緩沖器中讀所述晶粒的指示,或者,當所述地址繞回時,返回一個從所述輔助存儲器區(qū)域中讀的指示。
文檔編號G06F5/06GK1774694SQ200480010032
公開日2006年5月17日 申請日期2004年4月8日 優(yōu)先權日2003年4月16日
發(fā)明者奧姆·普拉卡什·甘瓦爾 申請人:皇家飛利浦電子股份有限公司