TWI434182B - 外部記憶體快進快出裝置 - Google Patents
外部記憶體快進快出裝置 Download PDFInfo
- Publication number
- TWI434182B TWI434182B TW099120160A TW99120160A TWI434182B TW I434182 B TWI434182 B TW I434182B TW 099120160 A TW099120160 A TW 099120160A TW 99120160 A TW99120160 A TW 99120160A TW I434182 B TWI434182 B TW I434182B
- Authority
- TW
- Taiwan
- Prior art keywords
- fast
- engine
- external memory
- virtual
- write
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Description
本發明係與處理器之間的溝通(inter-processor communication,IPC)有關,特別是關於一種透過外部記憶體之快進快出(external memory based first-in-first-out,xFIFO)輔助處理器之間溝通的裝置。
一般而言,傳統的基地台傳輸器係透過預設的溝通連結,例如T1或E1線路,連接至基地台控制器。這些基地台控制器係彼此連接,並且亦連接至其他網路設備,例如整合分封無線服務(GPRS)網路中之GPRS服務節點(SGSN)或閘道GPRS支援節點(GGSN)。近來,具有較小尺寸並結合有無線電網絡控制器(RNC)及節點功能的家用基地台透過網際網路連接至核心網路(Core Network)。
家用基地台晶片系統包含複數個處理器核心、不同的硬體加速器及周邊介面邏輯元件。這些處理器核心負責自裝置驅動器、韌體、通訊協定執行許多不同的軟體元件至使用者層級之應用。不同的軟體緒需要週期地彼此溝通,例如交換控制權或資訊,或是彼此同步以確保不同處理器核心所發生之事件係依照適當的順序並產生正確的結果。隨著同時至多有16個用戶產生聲音及資料的傳輸,這些軟體元件之間的IPC必須能夠快速而又有效率,才能滿足家用基地台晶片系統之需求。
一般而言,典型使用於多核心嵌入式系統的IPC方案包含訊息遞送(message passing)、分享記憶體(shared
memory)、一對一同步比擬器(one-to-one synchronization metaphor,例如旗號semaphore及訊號signal)以及N對一同步比擬器(例如旋鎖spin-lock或測試及設定test-and-set)。此處強調的是關於訊息遞送之方法。於IPC訊息遞送之範例中,某一軟體緒並不會與欲溝通之其他軟體緒分享任何記憶體空間。反而,它們會透過簡單(一維)的快進快出隊列(FIFO queue)彼此溝通,使得某一軟體緒固定扮演製造者(producer)的角色,另一軟體緒則固定扮演消費者(consumer)的角色。假設系統需要的是雙工訊息遞送介面,則只需採用兩個上述的快進快出隊列即可。
既然我們時常無法預先得知兩個不同的軟體緒之間究竟有多少資料需要交換或是交換頻率為何,因此,兩處理器核心之間的訊息快進快出裝置必須具有較低的延遲(low latency),才不會使得處理器之間由於頻繁地溝通而導致處理速度變慢。此外,兩處理器核心之間的訊息快進快出裝置亦需具有大面積,以避免由於快進快出裝置的空或滿而產生處理器之間不必要的耦合。為了能夠達成低延遲之目標,系統通常採用設置於晶片上之記憶體(on-chip memory)來提供緩衝空間。至於設置於晶片外的記憶體(off-chip memory),例如DRAM,則是能夠提供大量的緩衝空間,通常作為儲存資料之用。
雖然設置於晶片外的記憶體之成本遠較設置於晶片上之記憶體來得低,但通常設置於晶片外的記憶體之存取延遲卻比設置於晶片上之記憶體來得長。因此,欲同時具有較低存取延遲又提供較大的緩衝空間之要求其實是矛盾的,系統設計者很難在設置於晶片外的記憶體以及設置於晶片上之
記憶體之間進行抉擇。
因此,本發明提出一種能夠輔助處理器之間溝通的裝置,以解決上述問題。
本發明之一範疇在於提出一種建構於多執行緒直接記憶體存取(Multi-Threaded Direct Memory Access,MT-DMA)引擎上之外部記憶體快進快出(external memory based FIFO,xFIFO)裝置,藉由硬體加速之方式使得家用基地台晶片系統中的訊息遞送處理器之間溝通效率獲得提升。
根據本發明之第一具體實施例為一種外部記憶體快進快出(xFIFO)裝置。該外部記憶體快進快出裝置係分別耦接至一外部記憶體及一暫存器匯流排。該暫存器匯流排係耦接至至少兩個處理器。該外部記憶體快進快出裝置包含一外部記憶體快進快出(xFIFO)引擎、一讀取式直接記憶體存取(rDMA)引擎、一寫入式直接記憶體存取(wDMA)引擎、一第一虛擬快進快出模組及一第二虛擬快進快出模組。該第一虛擬快進快出模組及該第二虛擬快進快出模組均耦接於該讀取式直接記憶體存取引擎與該寫入式直接記憶體存取引擎之間。
於此實施例中,該外部記憶體快進快出裝置係耦接至該暫存器匯流排,用以自該暫存器匯流排接收一快進快出指令並產生一讀取DMA指令及一寫入DMA指令。該wDMA引擎係耦接至該xFIFO引擎及該外部記憶體,用以自該xFIFO引擎接收該寫入DMA指令並傳送一進來的資料至該外部記憶體。該rDMA引擎係耦接至該xFIFO引擎及該外部記憶
體,用以自該xFIFO引擎接收該讀取DMA指令並自該外部記憶體預取(pre-fetch)一快進快出資料。該wDMA引擎及該rDMA引擎係透過該第一虛擬快進快出模組及該第二虛擬快進快出模組達到彼此同步。
相較於先前技術,本發明的處理器間溝通輔助裝置係採用建構於多執行緒直接記憶體存取引擎上之外部記憶體快進快出裝置,藉由硬體加速之方式使得家用基地台晶片系統中的訊息遞送處理器之間溝通效率獲得提升。由於本發明之外部記憶體快進快出裝置所具有設置於晶片上之on-chip記憶體已降至最少,故其存取延遲亦可明顯降低。因此,本發明的處理器間溝通輔助裝置能夠同時提供較低的存取延遲,而又能夠在家用基地台晶片系統中採用價格較為低廉的設置於晶片外之off-chip記憶體,以降低其生產成本,提升其市場競爭力。
此外,本發明之外部記憶體快進快出裝置包含常見的邏輯電路,以確保扮演製造者的軟體緒以及扮演消費者的軟體緒之間的資料一致性,並且還支援可配置的緩衝址與尺寸大小以及錯誤復原等功能。
關於本發明之優點與精神可以藉由以下的發明詳述及所附圖式得到進一步的瞭解。
本發明提出藉由硬體加速來輔助處理器之間的溝通。根據本發明之第一具體實施例為一種具有單一執行緒的xFIFO裝置。實際上,一個簡單的xFIFO裝置可藉由一對讀取DMA引擎及寫入DMA引擎、複數個虛擬FIFO裝置、
複數個註冊器連接埠及一簡單的DMA指令產生器所組成。請參照圖一,圖一係繪示具有單一執行緒的xFIFO裝置的功能方塊圖。
如圖一所示,xFIFO裝置1係分別耦接至外部記憶體4及暫存器匯流排B,並且暫存器匯流排B係耦接至第一中央處理單元(CPU)2及第二中央處理單元3。xFIFO裝置1包含xFIFO引擎10、寫入式直接記憶體存取(wDMA)引擎11、讀取式直接記憶體存取(rDMA)引擎12、寫入緩衝器13、讀取緩衝器14、第一虛擬快進快出模組15及第二虛擬快進快出模組16。
於此實施例中,xFIFO引擎10係耦接至wDMA引擎11及rDMA引擎12;暫存器匯流排B係耦接至寫入緩衝器13;寫入緩衝器13係耦接至wDMA引擎11;wDMA引擎11係分別耦接至外部記憶體4、第一虛擬快進快出模組15及第二虛擬快進快出模組16;外部記憶體4、xFIFO引擎10、第一虛擬快進快出模組15及第二虛擬快進快出模組16均分別耦接至rDMA引擎12;rDMA引擎12係耦接至讀取緩衝器14;讀取緩衝器14係耦接至暫存器匯流排B。
首先,將就xFIFO裝置1之設定進行介紹。起初,xFIFO裝置1需先透過軟體進行FIFO位址、FIFO尺寸及FIFO資料單位大小等資訊之程式設定程序。FIFO位址通常位於off-chip記憶體位址空間內。透過外部記憶體之採用,xFIFO裝置1可以最少的額外硬體成本支援非常深的資料快進快出。至於FIFO尺寸之參數則指出了可使用的緩衝器空間之總量。xFIFO裝置1內的位址產生器將會使用FIFO尺寸以確保資料位址能夠總是落於合法範圍內。
就邏輯上而言,xFIFO包含多個具有相同大小的資料物件。FIFO製造者及FIFO消費者之間的同步處理係基於FIFO資料單位大小。惟有當一完整的資料單位被寫入至xFIFO時,FIFO製造者的狀態才會被更新。當xFIFO僅包含部分的資料單位時,FIFO消費者即把xFIFO視為空的。類似地,惟有當一完整的資料單位被讀取自xFIFO時,FIFO消費者的狀態才會被更新。唯一的例外是,當一資料封包達到其結尾時,即使累積的資料量尚未達到一完整的資料單位,FIFO製造者及FIFO消費者之間的同步處理仍將會被自動地啟動。
xFIFO之設定只會將xFIFO硬體初始化至可以傳輸資料,至於可傳輸的資料量及同步方法等細節係透過封包註冊所提供。封包註冊包含封包大小資訊、關於FIFO製造者是否應該在完整封包被寫入xFIFO後中斷傳輸、中斷的識別、關於FIFO消費者是否應該在完整封包被寫入xFIFO後中斷傳輸等資訊。
xFIFO引擎10將會根據封包註冊的資訊分別針對wDMA引擎11、rDMA引擎12產生命令。wDMA指令將會設定wDMA引擎11將進來的資料轉送至外部記憶體4。rDMA指令將會設定rDMA引擎12自外部記憶體4預取FIFO資料。依照資料封包的大小,可能會產生不只一個wDMA指令或rDMA指令。因此,在xFIFO引擎10與wDMA引擎11/rDMA引擎12之間需有一些寫入緩衝區及讀取預取區存在,其數量應為設計的參數。
值得注意的是,wDMA引擎11與rDMA引擎12係透過兩個虛擬FIFO模組(第一虛擬FIFO模組15及第二虛擬
FIFO模組16)或兩個分享的旗號來達成彼此同步之目的。其中,第一虛擬FIFO模組15及第二虛擬FIFO模組16的深度應該與FIFO總大小除以IFO資料單元大小之值一致。這等於根據資料單元的xFIFO容量,且與資料封包大小無關。至於第一虛擬FIFO模組15及第二虛擬FIFO模組16之操作介紹如下。
於此實施例中,xFIFO引擎10係以資料單元之粒度發出DMA指令給wDMA引擎11與rDMA引擎12。舉例而言,假設每一資料單元包含四個字元,則xFIFO引擎10將會每隔四個字元產生一個DMA指令,只有在資料封包尾端的部分資料單元除外。
在每一個wDMA指令之前,wDMA引擎11將會嘗試“寫入”一單元至第一虛擬FIFO模組15,假設第一虛擬FIFO模組15沒有可供寫入的空間容納該單元,此一寫入動作即會停止。一旦上述寫入動作結束,wDMA引擎11將會進行目前資料單元的實際傳輸動作。既然此實施例所採用的是虛擬FIFO模組,因此,上述寫入動作僅會更新虛擬FIFO之狀態,並不會有實際的資料被寫入至第一虛擬FIFO模組15。在wDMA指令結束後,wDMA引擎11將會寫入一單元至第二虛擬FIFO模組16以同樣更新第二虛擬FIFO模組16之狀態。
類似地,在每一個rDMA指令之前,rDMA引擎12將會嘗試從第二虛擬FIFO模組16(並非從第一虛擬FIFO模組15)“讀取”一資料單元,假設第二虛擬FIFO模組16沒有任何資料單元可供讀取,此一讀取動作即會停止。一旦上述讀取動作結束,rDMA引擎12將會進行目前資料單元的實際
傳輸動作。既然此實施例所採用的是虛擬FIFO模組,因此,上述讀取動作僅會更新虛擬FIFO之狀態,並不會有實際的資料從第二虛擬FIFO模組16被讀取。在rDMA指令結束後,rDMA引擎12將會自第一虛擬FIFO模組15讀取一單元以同樣更新第一虛擬FIFO模組15之狀態。
也就是說,就wDMA引擎11或rDMA引擎12之其一而言,第一虛擬FIFO模組15及第二虛擬FIFO模組16之中的一個虛擬FIFO模組被用來在傳輸資料單元之前進行“保留”的動作,另一個虛擬FIFO模組則被用來在傳輸資料單元之後進行“遞交”的動作。從rDMA引擎12的觀點來看,只有當先前寫入操作已結束並遞交至第二虛擬FIFO模組16後,讀取操作才會開始。結果,rDMA引擎12應該在從xFIFO引擎10讀取資料單元之前先檢查第二虛擬FIFO模組16,而非檢查第一虛擬FIFO模組15。
至於從wDMA引擎11的觀點來看,正好與上述rDMA引擎12的觀點所看到的情況相反。xFIFO引擎10將會發出正確的DMA指令去指示wDMA引擎11及rDMA引擎12藉由DMA指令中之位元場相關的旗號執行必要的虛擬FIFO操作。換句話說,虛擬FIFO與DMA引擎之間的交互作用被完全遮蔽於軟體或外部主要FIFO裝置。
xFIFO引擎10的一種典型的使用方式是作為兩個嵌入式中央處理單元(第一中央處理單元2與第二中央處理單元3)之間的訊息隊列(message queue)。然而,xFIFO引擎10亦可用以提供兩硬體模組之間的非常深的FIFO隊列。經由xFIFO引擎10遞送的實際資訊對於xFIFO硬體而言並不重要。反而,第一中央處理單元2與第二中央處理單
元3所執行的軟體應該會藉由其他方式在尺寸大小及資料封包的意義上彼此溝通,例如,透過預先定義的協定或透過前置(prepended)於每一封包的封包字頭(packet header)等方式。
於第一中央處理單元2與第二中央處理單元3之間遞送的實際資料可能是由軟體本身動態產生,抑或可能已儲存於記憶體(例如設置於晶片上的SRAM或設置於晶片外的DRAM)之一單獨片段中,還是上述兩者之混合。為了維持處理器之間資料的先進先出之本性,xFIFO引擎10必須能夠動態地自中央處理單元帶資料進入,如同資料已經在記憶體內一樣,並且以下述之無縫方式加以組合。
首先,定義一特殊註冊連接埠cmd。被寫入註冊連接埠cmd的資料應該具有dmaCmd之型式。無論在任何時間,應該只有一個中央處理單元(製造者)控制xFIFO引擎10。假設是第一中央處理單元2控制xFIFO引擎10,第一中央處理單元2藉著寫入至封包註冊連接埠或註冊埠cmd驅動xFIFO操作。透過封包註冊連接埠或註冊埠cmd而來的參數將會被收集至單一的指令隊列中。xFIFO引擎10需依序處理在指令隊列中的該些指令。假設指令係透過封包註冊連接埠而來,則xFIFO引擎10將會產生相對應的wDMA指令或rDMA指令,如同前述討論的情形。假設指令係透過註冊埠cmd而來,則xFIFO引擎10僅會簡單地轉送DMA指令至rDMA引擎12,rDMA引擎12將會自動地自緩衝器取得資料。
值得注意的是,FIFO資料控制值需要被更新以反映dmaCmd資料的大小。當xFIFO引擎10轉送DMA指令至
rDMA引擎12時,資料控制值應該增加DMA指令中所指示的資料大小。當扮演消費者的中央處理單元(第二中央處理單元3)自rdata連接埠讀取資料時,資料控制值將減至正常值。對任何xFIFO所接收的dmaCmd資料而言,虛擬FIFO操作都應跳過不進行。xFIFO引擎10應該先將接收到的dmaCmd資料中特定的任何旗號操作均加以清除,再把dmaCmd資料轉送至rDMA引擎12。
接著,將就xFIFO存取及錯誤處理進行說明。於此實施例中,FIFO製造者及消費者可以是基於軟體或硬體。若軟體欲寫入至xFIFO或自xFIFO讀取,應使用特殊的註冊wdata及rdata。存取這兩個註冊wdata及rdata是不會被阻擋的(non-blocking)。當軟體寫入至註冊wdata時,若FIFO的空間已滿,則寫入資料將會被棄置,在特殊錯誤註冊中代表溢出之位元將會被設定。類似地,當軟體自註冊rdata讀取時,若FIFO是空的,亦即沒有任何資料可讀取,則零將會回到中央處理單元,並且在錯誤註冊中代表不足之位元將會被設定。為了避免上述溢出或不足的情事發生,在存取註冊wdata/rdata之前,軟體應該先週期性地檢查在特殊狀態註冊中之資料控制值。
存取註冊wdata/rdata不會被錯誤報告阻擋的原因在於:當採用一分享的註冊時,阻擋操作將會導致系統鎖死之情事發生,既然匯流排已被佔據,需避免其他部分存取註冊以清除此一錯誤狀況。在另一方面,對硬體存取讀取/寫入資料連接埠而言,硬體操作將會如同一般的註冊FIFO存取是會阻擋的(blocking)。
值得注意的是,非阻擋操作僅對於實際FIFO狀態有意
義,對於xFIFO中的區域寫入收集緩衝器或讀取預取緩衝器而言,並不相關。若xFIFO之狀態為未滿(non-full),但區域寫入收集緩衝器由於DRAM交通回壓而導致已滿,則寫入操作將會暫時停頓直至區域寫入收集緩衝器被釋放成未滿為止。類似地,若xFIFO之狀態為非空(non-empty),但區域讀取預取緩衝器由於DRAM存取延遲而導致呈現空的狀態,則讀取操作將會暫時停頓直至區域讀取預取緩衝器自外部記憶體取得資料而變成非空狀態為止。為了避免導致系統鎖死狀態發生,暫存器匯流排與資料匯流排必須彼此分離,例如可透過系統中之交錯桿連結構造將兩者加以分離。
當xFIFO引擎10不作用時,若FIFO製造者欲進行寫入,則寫入動作將會以沒有資料寫入FIFO而完成。並且,溢出錯誤旗幟(overflow error flag)將會被設定。類似地,當xFIFO引擎10不作用時,若FIFO消費者欲進行讀取,則讀取動作將會以零為返回資料而完成,並且不足錯誤旗幟(underflow error flag)將會被設定。
在任何xFIFO操作之前,需先由軟體進行xFIFO設置的設定。xFIFO引擎10可透過特殊控制註冊控制成正常運作/不作用及已清除等狀態。xFIFO引擎10透過狀態註冊提供下列FIFO狀態:已滿、已清空及資料計數。xFIFO引擎10亦在狀態註冊中維持忙碌(busy)或閒置(idle)狀態。忙碌或閒置狀態之意義應與正常運作/不作用及已清除等狀態一起討論。當xFIFO引擎10被啟動而處於正常運作狀態下,在封包被接收之前,xFIFO引擎10將會處於閒置狀態。一旦接收到封包指令,xFIFO引擎10將會進入忙碌模式,持續處理封包直至傳輸結束為止,接著,xFIFO引擎
10又會回到閒置狀態。
當xFIFO引擎10不作用時,狀態機器將會進入特殊的清理模式,若有任何未決的匯流排處理程序均會被結束。接著,xFIFO引擎10將其狀態改回閒置,以指示xFIFO狀態機器停止運作,無論是否有任何未決的封包指令。在任何時間下,可重新啟動xFIFO以使得狀態機器進入自由執行模式,或軟體可寫入一清除位元,藉以清除兩個虛擬FIFO、寫入緩衝器及預取緩存器。值得注意的是,只有當xFIFO引擎10不作用或處於閒置狀態時,FIFO指令才能被更新。
根據本發明之第二具體實施例為一種多執行緒外部記憶體FIFO(MT-xFIFO)裝置。MT-xFIFO裝置之功能係由三個不同的硬體模組:MT-xFIFO引擎、DMA指令/資料隊列及多執行緒DMA引擎所提供。此僅為一設計模版,可以依照實際執行緒的數目進行設置。於MT-xFIFO裝置中,每一執行緒均可向後相容至單一執行緒xFIFO裝置,並且每一執行緒可獨立於其他執行緒進行其工作。請參照圖二,圖二係繪示MT-xFIFO裝置之功能方塊圖。
如圖二所示,MT-xFIFO裝置6係透過匯流排介面單元(Bus Interface Unit,BIU)7耦接至第一中央處理單元8、第二中央處理單元9及第三中央處理單元90。實際上,中央處理單元之數目並不以此例為限。MT-xFIFO裝置6包含MT-xFIFO引擎60、內容SRAM 61、封包指令隊列(Multi-Queue)62、DMA指令/資料隊列(Multi-Queue)63、多執行緒DMA模組(dmaX)64、寫入資料(wdat)匯流排B1、指令(cmd)匯流排B2、讀取資料(rdat)匯流排B3、封包指令
(packet cmd)匯流排B4、DMA寫入指令(dma wcmd)匯流排B5及DMA讀取指令(dma rcmd)匯流排B6。其中,封包指令隊列62包含隊列62a~62d,並且DMA指令/資料隊列63包含隊列63a~63p。MT-xFIFO引擎60係耦接至封包指令匯流排B4、DMA寫入指令匯流排B5、DMA讀取指令匯流排B6及內容SRAM 61。
於此實施例中,寫入資料匯流排B1分別傳送資料訊號Wdat 0、Wdat 1、Wdat 2及Wdat 3至DMA指令/資料隊列63的隊列63a、63e、63i及63m。指令匯流排B2分別傳送BIU指令至隊列62a、62b、62c及62d。讀取資料匯流排B3自DMA指令/資料隊列63的隊列63d、63h、63l及63p讀取資料訊號Rdat 0、Rdat 1、Rdat 2及Rdat 3。封包指令匯流排B4分別自隊列62a、62b、62c及62d接收隊列指令並傳送封包指令至MT-xFIFO引擎60。DMA寫入指令匯流排B5自MT-xFIFO引擎60接收FIFO寫入訊號並分別傳送寫入指令Wcmd 0、Wcmd 1、Wcmd 2及Wcmd 3至DMA指令/資料隊列63的隊列63b、63f、63j及63n。DMA讀取指令匯流排B6自MT-xFIFO引擎60接收FIFO讀取訊號並分別傳送讀取指令Rcmd 0、Rcmd 1、Rcmd 2及Rcmd 3至DMA指令/資料隊列63的隊列63c、63g、63k及63o。多執行緒DMA模組64分別傳送讀取複數個資料訊號至隊列63d、63h、63l及63p。多執行緒DMA模組64可以與一寫入通道或一讀取通道進行溝通。
MT-xFIFO裝置6的輸入端為匯流排介面單元7的一硬體介面,而MT-xFIFO裝置6的輸出端則為晶片系統中之資料匯流排。當多執行緒中之一執行緒被啟動,MT-xFIFO引
擎60即會一一檢查所有執行緒的狀態。藉由檢查封包指令的狀態及DMA指令隊列,MT-xFIFO引擎60可從主機對每個封包指令產生一系列的寫入/讀取DMA指令。當MT-xFIFO引擎60發出寫入/讀取DMA指令至多執行緒DMA模組64之後,寫入DMA引擎將資料由該些資料隊列移動至內容SRAM 61,並且讀取DMA引擎將資料由內容SRAM 61移動至該些資料隊列。
同時,主機可不需MT-xFIFO引擎60的介面操作即可自資料隊列讀取新資料或寫入新資料至資料隊列。換句話說,主機可傳送資料至資料隊列或自資料隊列接收資料,並且MT-xFIFO引擎60可同時對每一執行緒產生讀取/寫入DMA指令。值得注意的是,主機的運作與MT-xFIFO引擎60的運作彼此獨立互不相關。因此,主機之間的溝通可以僅透過直接發出封包指令而實現,不必產生一連串的讀取/寫入DMA指令至多執行緒DMA模組64。MT-xFIFO引擎60可以只是自主機根據封包指令發出讀取/寫入DMA指令。
當MT-xFIFO裝置6被啟動時,MT-xFIFO引擎60將會一一對於執行緒執行一些操作,包含下列步驟:(1)MT-xFIFO引擎60檢查目前的執行緒是否處於啟動狀態或清除狀態;(2)若封包指令隊列62中有新的封包指令且DMA指令/資料隊列63是空的,則MT-xFIFO引擎60會產生一系列的讀取/寫入DMA指令;(3)若在MT-xFIFO引擎60中有任何未結束的封包指令且DMA指令/資料隊列63是空的,則MT-xFIFO引擎60會產生一系列的讀取/寫入DMA指令;(4)當MT-xFIFO引擎60正進行執行緒切換時,MT-xFIFO引擎60重新將目前執行緒狀態儲存至內容SRAM 61或自內
容SRAM 61儲存目前執行緒狀態。
假設符合下列情況之一,MT-xFIFO引擎60將會進行執行緒的切換:(1)目前執行緒並未被啟動;(2)目前封包指令已完成或在指令隊列中沒有對應該執行緒之新的封包指令;(3)讀取DMA指令隊列及寫入DMA指令隊列中均沒有空間。並且,內容SRAM 61係作為儲存媒介,用來儲存執行緒運作時所需的必要資訊。
為了最大化系統設計的彈性並且最小化硬體資源的需求,多重隊列(Multi-Queue)中之每一隊列的深度以及MT-xFIFO引擎60中之最大支援執行緒的數目可透過重新配置MT-xFIFO引擎60、封包指令隊列62、DMA指令/資料隊列63、多執行緒DMA模組64而輕易地獲得調整。因此,實際上並不需要重新設計整個系統及各模組即可完成調整。
相較於先前技術,本發明的處理器間溝通輔助裝置係採用建構於多執行緒直接記憶體存取引擎上之外部記憶體快進快出裝置,藉由硬體加速之方式使得家用基地台晶片系統中的訊息遞送處理器之間溝通效率獲得提升。由於本發明之外部記憶體快進快出裝置所具有設置於晶片上之on-chip記憶體已降至最少,故其存取延遲亦可明顯降低。因此,本發明的處理器間溝通輔助裝置能夠同時提供較低的存取延遲,而又能夠在家用基地台晶片系統中採用價格較為低廉的設置於晶片外之off-chip記憶體,以降低其生產成本,提升其市場競爭力。
此外,本發明之外部記憶體快進快出裝置包含常見的邏
輯電路,以確保扮演製造者的軟體緒以及扮演消費者的軟體緒之間的資料一致性,並且還支援可配置的緩衝址與尺寸大小以及錯誤復原等功能。
藉由以上較佳具體實施例之詳述,係希望能更加清楚描述本發明之特徵與精神,而並非以上述所揭露的較佳具體實施例來對本發明之範疇加以限制。相反地,其目的是希望能涵蓋各種改變及具相等性的安排於本發明所欲申請之專利範圍的範疇內。
1‧‧‧xFIFO裝置
2、8‧‧‧第一中央處理單元
3、9‧‧‧第二中央處理單元
4‧‧‧外部記憶體
B‧‧‧暫存器匯流排
10‧‧‧xFIFO引擎
11‧‧‧寫入式直接記憶體存取(wDMA)引擎
12‧‧‧讀取式直接記憶體存取(rDMA)引擎
13‧‧‧寫入緩衝器
14‧‧‧讀取緩衝器
15‧‧‧第一虛擬FIFO模組
16‧‧‧第二虛擬FIFO模組
6‧‧‧MT-xFIFO裝置
7‧‧‧匯流排介面單元
90‧‧‧第三中央處理單元
60‧‧‧MT-xFIFO引擎
61‧‧‧內容SRAM
62‧‧‧封包指令隊列
63‧‧‧DMA指令/資料隊列
64‧‧‧多執行緒DMA模組
B1‧‧‧寫入資料(wdat)匯流排
B2‧‧‧指令(cmd)匯流排
B3‧‧‧讀取資料(rdat)匯流排
B4‧‧‧封包指令(packet cmd)匯流排
B5‧‧‧DMA寫入指令(dma wcmd)匯流排
B6‧‧‧DMA讀取指令(dma rcmd)匯流排
62a~62d、63a~63p‧‧‧隊列
圖一係繪示具有單一執行緒的xFIFO裝置的功能方塊圖。
圖二係繪示MT-xFIFO裝置之功能方塊圖。
1‧‧‧xFIFO裝置
2‧‧‧第一中央處理單元
3‧‧‧第二中央處理單元
4‧‧‧外部記憶體
B‧‧‧暫存器匯流排
10‧‧‧xFIFO引擎
11‧‧‧寫入式直接記憶體存取(wDMA)引擎
12‧‧‧讀取式直接記憶體存取(rDMA)引擎
13‧‧‧寫入緩衝器
14‧‧‧讀取緩衝器
15‧‧‧第一虛擬FIFO模組
16‧‧‧第二虛擬FIFO模組
Claims (10)
- 一種外部記憶體快進快出(xFIFO)裝置,分別耦接至一外部記憶體及一暫存器匯流排,該外部記憶體快進快出裝置包含:一外部記憶體快進快出引擎,耦接至該暫存器匯流排,用以自該暫存器匯流排接收一快進快出指令並且產生一寫入直接記憶體存取(DMA)指令及一讀取直接記憶體存取指令;一寫入式直接記憶體存取引擎,耦接至該外部記憶體快進快出引擎及該外部記憶體,用以自該外部記憶體快進快出引擎接收該寫入直接記憶體存取指令並且將一進入的資料轉送至該外部記憶體;一讀取式直接記憶體存取引擎,耦接至該外部記憶體快進快出引擎及該外部記憶體,用以該外部記憶體快進快出引擎接收該讀取直接記憶體存取指令並自該外部記憶體預取一外進外出資料;一第一虛擬快進快出模組;以及一第二虛擬快進快出模組;其中該第一虛擬快進快出模組與該第二虛擬快進快出模組係彼此並聯設置於該寫入式直接記憶體存取引擎與該讀取式直接記憶體存取引擎之間,該寫入式直接記憶體存取引擎與該讀取式直接記憶體存取引擎係透過該第一虛擬快進快出模組與該第二虛擬快進快出模組達到彼此同步。
- 如申請專利範圍第1項所述之外部記憶體快進快出裝置,其中在發出該寫入直接記憶體存取指令之前,該寫入式直接記憶體存取引擎對該第一虛擬快進快出模組執行一虛擬快 進快出寫入操作。
- 如申請專利範圍第2項所述之外部記憶體快進快出裝置,其中一旦該虛擬快進快出寫入操作結束,該寫入式直接記憶體存取引擎將該進入的資料轉送至該外部記憶體。
- 如申請專利範圍第1項所述之外部記憶體快進快出裝置,其中在該寫入直接記憶體存取指令結束後,該寫入式直接記憶體存取引擎對該第二虛擬快進快出模組執行一寫入操作以更新該第二虛擬快進快出模組之狀態。
- 如申請專利範圍第1項所述之外部記憶體快進快出裝置,其中在發出該讀取直接記憶體存取指令之前,該讀取式直接記憶體存取引擎對該第二虛擬快進快出模組執行一虛擬快進快出讀取操作。
- 如申請專利範圍第5項所述之外部記憶體快進快出裝置,其中一旦該虛擬快進快出讀取操作結束,該讀取式直接記憶體存取引擎自該外部記憶體預取該快進快出資料。
- 如申請專利範圍第1項所述之外部記憶體快進快出裝置,其中在該讀取直接記憶體存取指令結束後,該讀取式直接記憶體存取引擎對該第一虛擬快進快出模組執行一讀取操作以更新該第一虛擬快進快出模組之狀態。
- 如申請專利範圍第1項所述之外部記憶體快進快出裝置,其中該外部記憶體快進快出裝置係一多執行緒外部記憶體快進快出(MT-xFIFO)裝置,其輸入端為一匯流排介面單元之一硬體介面且其輸出端為一系統晶片(SOC)匯流排介面。
- 如申請專利範圍第1項所述之外部記憶體快進快出裝置,進一步包含耦接至該外部記憶體快進快出引擎之一內容記憶體,其中在該外部記憶體快進快出引擎發出該寫入直接記憶體存取指令或該讀取直接記憶體存取指令至該寫入式直接記憶體存取引擎或該讀取式直接記憶體存取引擎之後,該外部記憶體快進快出引擎將目前執行緒之內容資訊拷貝至該內容記憶體,並且自該內容記憶體取得下一執行緒之內容資訊。
- 如申請專利範圍第1項所述之外部記憶體快進快出裝置,其中該暫存器匯流排係耦接至少兩處理器,並且該外部記憶體快進快出裝置透過該暫存器匯流排增進該至少兩處理器之間的溝通。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21895309P | 2009-06-21 | 2009-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201102829A TW201102829A (en) | 2011-01-16 |
TWI434182B true TWI434182B (zh) | 2014-04-11 |
Family
ID=42790520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099120160A TWI434182B (zh) | 2009-06-21 | 2010-06-21 | 外部記憶體快進快出裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8359420B2 (zh) |
EP (1) | EP2309396A3 (zh) |
CN (1) | CN101930416B (zh) |
TW (1) | TWI434182B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5587884B2 (ja) | 2008-08-06 | 2014-09-10 | モービック・ネットワークス | 無線アクセスネットワーク(ran)におけるコンテンツのキャッシング |
US20110202634A1 (en) * | 2010-02-12 | 2011-08-18 | Surya Kumar Kovvali | Charging-invariant and origin-server-friendly transit caching in mobile networks |
CN102598628A (zh) | 2010-03-15 | 2012-07-18 | 莫维克网络公司 | 用于多媒体传送的自适应分块和内容感知同步设备及方法 |
US8799480B2 (en) * | 2010-07-19 | 2014-08-05 | Movik Networks | Content pre-fetching and CDN assist methods in a wireless mobile network |
US8565076B2 (en) | 2010-09-24 | 2013-10-22 | Movik Networks | Destination learning and mobility detection in transit network device in LTE and UMTS radio access networks |
US8755221B2 (en) * | 2010-10-18 | 2014-06-17 | Avalanche Technology, Inc. | Emulation of static random access memory (SRAM) by magnetic random access memory (MRAM) |
KR20120072211A (ko) * | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | 메모리 매핑장치 및 이를 구비한 멀티프로세서 시스템온칩 플랫폼 |
US9239607B2 (en) * | 2011-12-22 | 2016-01-19 | Intel Corporation | Storing data using a direct data path architecture to reduce energy consumption and improve performance |
IN2014MN02369A (zh) * | 2012-06-18 | 2015-08-14 | Qualcomm Inc | |
WO2014081457A1 (en) * | 2012-11-21 | 2014-05-30 | Coherent Logix Incorporated | Processing system with interspersed processors dma-fifo |
KR20150090621A (ko) * | 2014-01-29 | 2015-08-06 | 삼성전자주식회사 | 스토리지 장치 및 데이터 처리 방법 |
US9582463B2 (en) * | 2014-12-09 | 2017-02-28 | Intel Corporation | Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message |
US9342384B1 (en) * | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
CN106293999B (zh) | 2015-06-25 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
US10331613B2 (en) * | 2015-10-30 | 2019-06-25 | Netapp, Inc. | Methods for enabling direct memory access (DMA) capable devices for remote DMA (RDMA) usage and devices therof |
CN111930676B (zh) * | 2020-09-17 | 2020-12-29 | 湖北芯擎科技有限公司 | 多处理器间的通信方法、装置、系统及存储介质 |
US11829237B1 (en) * | 2021-03-05 | 2023-11-28 | Apple Inc. | Error detection and recovery when streaming data |
US20230185694A1 (en) * | 2021-12-10 | 2023-06-15 | International Business Machines Corporation | Debugging communication among units on processor simulator |
TWI824847B (zh) * | 2022-11-24 | 2023-12-01 | 新唐科技股份有限公司 | 記憶體分享裝置、方法、可分享記憶體以及其使用之電子設備 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3415755A1 (de) * | 1984-04-27 | 1985-10-31 | Kraftwerk Union AG, 4330 Mülheim | Schweisszange zum verbinden von zwei aneinanderstossenden rohrenden durch lichtbogenschweissung |
US5446843A (en) * | 1990-12-20 | 1995-08-29 | Alcatel Italia Spa | Interface unit for dynamically configuring a buffer in different modes to store data transfers based upon different connection details of connected processing units |
US5535340A (en) * | 1994-05-20 | 1996-07-09 | Intel Corporation | Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge |
US5805930A (en) * | 1995-05-15 | 1998-09-08 | Nvidia Corporation | System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs |
US5884100A (en) * | 1996-06-06 | 1999-03-16 | Sun Microsystems, Inc. | Low-latency, high-throughput, integrated cache coherent I/O system for a single-chip processor |
US5905876A (en) * | 1996-12-16 | 1999-05-18 | Intel Corporation | Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system |
US6011799A (en) * | 1997-02-14 | 2000-01-04 | Advanced Micro Devices, Inc. | Method and apparatus for managing external physical layer devices |
US6425021B1 (en) * | 1998-11-16 | 2002-07-23 | Lsi Logic Corporation | System for transferring data packets of different context utilizing single interface and concurrently processing data packets of different contexts |
US20050223131A1 (en) * | 2004-04-02 | 2005-10-06 | Goekjian Kenneth S | Context-based direct memory access engine for use with a memory system shared by devices associated with multiple input and output ports |
US7366851B2 (en) * | 2004-08-19 | 2008-04-29 | International Business Machines Corporation | Processor, method, and data processing system employing a variable store gather window |
US8006001B2 (en) * | 2004-09-22 | 2011-08-23 | Lsi Corporation | Method and apparatus for manipulating direct memory access transfers |
US7716387B2 (en) * | 2005-07-14 | 2010-05-11 | Canon Kabushiki Kaisha | Memory control apparatus and method |
WO2007096712A1 (en) * | 2006-02-20 | 2007-08-30 | Freescale Semiconductor, Inc. | A method and device for exchanging data using a virtual fifo data structure |
US7831746B2 (en) * | 2007-03-13 | 2010-11-09 | Sgi International, Inc. | Direct memory access engine for data transfers |
US7673091B2 (en) * | 2007-04-24 | 2010-03-02 | Texas Instruments Incorporated | Method to hide or reduce access latency of a slow peripheral in a pipelined direct memory access system |
US20080301376A1 (en) * | 2007-05-31 | 2008-12-04 | Allison Brian D | Method, Apparatus, and System Supporting Improved DMA Writes |
US8417842B2 (en) * | 2008-05-16 | 2013-04-09 | Freescale Semiconductor Inc. | Virtual direct memory access (DMA) channel technique with multiple engines for DMA controller |
-
2010
- 2010-06-21 US US12/819,451 patent/US8359420B2/en not_active Expired - Fee Related
- 2010-06-21 CN CN201010210903.4A patent/CN101930416B/zh not_active Expired - Fee Related
- 2010-06-21 TW TW099120160A patent/TWI434182B/zh not_active IP Right Cessation
- 2010-06-21 EP EP10166715A patent/EP2309396A3/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US8359420B2 (en) | 2013-01-22 |
US20100325334A1 (en) | 2010-12-23 |
EP2309396A2 (en) | 2011-04-13 |
CN101930416B (zh) | 2013-05-29 |
TW201102829A (en) | 2011-01-16 |
CN101930416A (zh) | 2010-12-29 |
EP2309396A3 (en) | 2011-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI434182B (zh) | 外部記憶體快進快出裝置 | |
JP4439491B2 (ja) | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 | |
US7100002B2 (en) | Port independent data transaction interface for multi-port devices | |
US6925512B2 (en) | Communication between two embedded processors | |
US6549960B1 (en) | Architecture and apparatus for implementing 100 MBPS and GBPS ethernet address | |
US6889266B1 (en) | Method for delivering packet boundary or other metadata to and from a device using direct memory controller | |
US7613849B2 (en) | Integrated circuit and method for transaction abortion | |
US20050097240A1 (en) | Supercharge message exchanger | |
CN103714026B (zh) | 一种支持原址数据交换的存储器访问方法及装置 | |
US6581113B1 (en) | Apparatus and method for transferring frame data between a host system memory and a network interface buffer memory employing transmit descriptors without transmit status information | |
US20020184453A1 (en) | Data bus system including posted reads and writes | |
KR20120040535A (ko) | 버스 시스템 및 그것의 동작 방법 | |
CN106959929B (zh) | 一种多端口访问的存储器及其工作方法 | |
US20090059943A1 (en) | Data processing system | |
US6757763B1 (en) | Universal serial bus interfacing using FIFO buffers | |
US7162564B2 (en) | Configurable multi-port multi-protocol network interface to support packet processing | |
US7610415B2 (en) | System and method for processing data streams | |
EP4070204A1 (en) | Data transfers between a memory and a distributed compute array | |
US6370607B1 (en) | Automatic disabling of interrupts upon entry into interrupt service routine | |
EP1793314B1 (en) | Data transfer operations and buffer memories | |
EP1971923B1 (en) | Method for managing under-runs and a device having under-run management capabilities | |
TWI343529B (en) | Method and apparatus for performing full transfer automation in a usb controller | |
KR100898345B1 (ko) | Toe의 패킷 수신 하드웨어 장치 및 toe 패킷 수신하드웨어를 이용한 수신 시스템 및 수신 방법 | |
US6507609B1 (en) | Mechanism for capturing and reporting interrupt events of different clock domains | |
CN115328832B (zh) | 一种基于pcie dma的数据调度系统与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |