硬體協助處理器間的溝通的製作方法
2023-05-03 14:50:41 2
專利名稱:硬體協助處理器間的溝通的製作方法
技術領域:
本發明是與處理器之間的溝通(inter-processor communication, IPC)有關,特 另一禾中夕卜胃i己十乙#白勺ftiiftdj (external memory basedfirst-in-first-out, xFIFO)輔助處理器之間溝通的裝置。
背景技術:
一般而言,傳統的基地臺傳輸器是透過預設的溝通連結,例如Tl或El線路,連接 至基地臺控制器。這些基地臺控制器彼此連接,並且亦連接至其他網路設備,例如整合分封 無線服務(GPRS)網路中的GPRS服務節點(SGSN)或閘道GPRS支援節點(GGSN)。近來,具 有較小尺寸並結合有無線電網絡控制器(RNC)及節點功能的家用基地臺透過網際網路連 接至核心網路(CoreNetwork)0家用基地臺晶片系統包含複數個處理器核心、不同的硬體加速器及周邊介面邏輯 元件。這些處理器核心負責自裝置驅動器、韌體、通訊協定執行許多不同的軟體元件至使用 者層級的應用。不同的軟體緒需要周期地彼此溝通,例如交換控制權或信息,或是彼此同步 以確保不同處理器核心所發生的事件是依照適當的順序並產生正確的結果。隨著同時至多 有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-chipmemory),例 如DRAM,則是能夠提供大量的緩衝空間,通常作為儲存資料之用。雖然設置於晶片外的記憶體的成本遠較設置於晶片上的記憶體來得低,但通常設 置於晶片外的記憶體的存取延遲卻比設置於晶片上的記憶體來得長。因此,欲同時具有較 低存取延遲又提供較大的緩衝空間的要求其實是矛盾的,系統設計者很難在設置於晶片外 的記憶體以及設置於晶片上的記憶體之間進行抉擇。
因此,本發明提出一種能夠輔助處理器之間溝通的裝置,以解決上述問題。
發明內容
本發明的一範疇在於提出一種建構於多執行緒直接記憶體存取(Multi-Threaded Direct Memory Access, MT—DMA)弓I擎上的夕卜部記十乙體快進快出(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記憶體,以降低其生產成本,提升其市場 競爭力。此外,本發明的外部記憶體快進快出裝置包含常見的邏輯電路,以確保扮演製造 者的軟體緒以及扮演消費者的軟體緒之間的資料一致性,並且還支援可配置的緩衝址與尺 寸大小以及錯誤復原等功能。關於本發明的優點與精神可以通過以下的發明詳述及所附圖式得到進一步的了解。
圖1是繪示具有單一執行緒的xFIFO裝置的功能方塊圖。圖2是繪示MT-xFIFO裝置的功能方塊圖。主要元件符號說明1:XFIF0裝置2、8:第一中央處理單元3、9:第二中央處理單元4:外部記憶體
B:註冊匯流排11 寫入式直接記憶體存取(wDMA)引擎12 讀取式直接記憶體存取(rDMA)引擎13 寫入緩衝器15 第一虛擬FIFO模塊6 :MT-xFIF0 裝置90 第三中央處理單元61:內容 SRAM63 =DMA指令/資料隊列Bl 寫入資料(wdat)匯流排B2 指令(cmd)匯流排B4 封包指令(packet cmd)匯流排B5 =DMA寫入指令(dma wcmd)匯流排B6 =DMA讀取指令(dma rcmd)匯流排62a 62d、63a 63p 隊列
具體實施例方式本發明提出通過硬體加速來輔助處理器之間的溝通。根據本發明的第一具體實施 例為一種具有單一執行緒的xFIFO裝置。實際上,一個簡單的xFIFO裝置可通過一對讀取 DMA引擎及寫入DMA引擎、複數個虛擬FIFO裝置、複數個註冊器連接埠及一簡單的DMA指令 產生器所組成。請參照圖1,圖1是繪示具有單一執行緒的xFIFO裝置的功能方塊圖。如圖1所示,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消費者即把
10 :XFIF0 引擎
14 讀取緩衝器 16 第二虛擬FIFO模塊 7 匯流排介面單元 60 :MT-xFIF0 引擎 62 封包指令隊列 64 多執行緒DMA模塊
B3 讀取資料(rdat)匯流排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)之間的訊息隊列(messagequeue)。然而,xFIFO引擎10 亦可用以提供兩硬體模塊之間的非常深的FIFO隊列。經由xFIFO引擎10遞送的實際信息 對於xFIFO硬體而言並不重要。反而,第一中央處理單元2與第二中央處理單元3所執行 的軟體應該會藉由其他方式在尺寸大小及資料封包的意義上彼此溝通,例如,透過預先定 義的協定或透過前置(pr印ended)於每一封包的封包字頭(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不會被錯誤報告阻擋的原因在於當採用一分享的註冊 時,阻擋操作將會導致系統鎖死的情事發生,既然匯流排已被佔據,需避免其他部分存取注
8冊以清除此一錯誤狀況。在另一方面,對硬體存取讀取/寫入資料連接埠而言,硬體操作將 會如同一般的註冊FIFO存取是會阻擋的(blocking)。值得注意的是,非阻擋操作僅對於實際FIFO狀態有意義,對於xFIFO中的區域寫 入收集緩衝器或讀取預取緩衝器而言,並不相關。若xFIFO的狀態為未滿(non-full),但區 域寫入收集緩衝器由於DRAM交通回壓而導致已滿,則寫入操作將會暫時停頓直至區域寫 入收集緩衝器被釋放成未滿為止。類似地,若xFIFO的狀態為非空(non-empty),但區域讀 取預取緩衝器由於DRAM存取延遲而導致呈現空的狀態,則讀取操作將會暫時停頓直至區 域讀取預取緩衝器自外部記憶體取得資料而變成非空狀態為止。為了避免導致系統鎖死狀 態發生,註冊匯流排與資料匯流排必須彼此分離,例如可透過系統中的交錯杆連結構造將 兩者加以分離。當xFIFO引擎10不作用時,若FIFO製造者欲進行寫入,則寫入動作將會以沒有資 料寫入FIFO而完成。並且,溢出錯誤旗幟(overflow error flag)將會被設定。類似地, 當xFIFO引擎10不作用時,若FIFO消費者欲進行讀取,則讀取動作將會以零為返回資料而 完成,並且不足錯誤旗幟(underflowerror 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-xFIF0引擎、DMA指令/資料隊列 及多執行緒DMA引擎所提供。此僅為一設計模版,可以依照實際執行緒的數目進行設置。 於MT-xFIFO裝置中,每一執行緒均可向後相容至單一執行緒xFIFO裝置,並且每一執行緒 可獨立於其他執行緒進行其工作。請參照圖2,圖2是繪示MT-xFIFO裝置的功能方塊圖。如圖2所示,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)匯流排Bi、指令(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。於此實施例中,寫入資料匯流排Bl分別傳送資料訊號Wdat O.ffdat Uffdat 2及 Wdat 3至DMA指令/資料隊列63的隊列63a、63e、63i及63m。指令匯流排B2分別傳送 BIU指令至隊列62a、62b、62c及62d。讀取資料匯流排B3自DMA指令/資料隊列63的隊 列63d、63h、631及63p讀取資料訊號Rdat 0、Rdat URdat 2及Rdat 3。封包指令匯流排 B4分別自隊列62a、62b、62c及62d接收隊列指令並傳送封包指令至MT-xFIFO引擎60。DMA 寫入指令匯流排B5自MT-xFIFO引擎60接收FIFO寫入訊號並分別傳送寫入指令Wcmd 0、 ffcmd Uffcmd 2及Wcmd 3至DMA指令/資料隊列63的隊列63b、63f、63 j及63n。DMA讀取 指令匯流排B6自MT-xFIFO引擎60接收FIFO讀取訊號並分別傳送讀取指令Rcmd 0、Rcmd URcmd 2及Rcmd 3至DMA指令/資料隊列63的隊列63c、63g、63k及63ο。多執行緒DMA 模塊64分別傳送讀取複數個資料訊號至隊列63d、63h、631及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將會一一對於執行緒執行一些操 作,包含下列步驟(l)MT-xFIF0引擎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而輕易地獲得調整。因此,實際上並不需要重新設計整個系統及各模塊即可完成調
iF. ο相較於先前技術,本發明的處理器間溝通輔助裝置是採用建構於多執行緒直接記 憶體存取引擎上的外部記憶體快進快出裝置,通過硬體加速的方式使得家用基地臺晶片系 統中的訊息遞送處理器之間溝通效率獲得提升。由於本發明的外部記憶體快進快出裝置所 具有設置於晶片上的on-chip記憶體已降至最少,故其存取延遲亦可明顯降低。因此,本發 明的處理器間溝通輔助裝置能夠同時提供較低的存取延遲,而又能夠在家用基地臺晶片是 統中採用價格較為低廉的設置於晶片外的off-chip記憶體,以降低其生產成本,提升其市 場競爭力。此外,本發明的外部記憶體快進快出裝置包含常見的邏輯電路,以確保扮演製造 者的軟體緒以及扮演消費者的軟體緒之間的資料一致性,並且還支援可配置的緩衝址與尺 寸大小以及錯誤復原等功能。通過以上較佳具體實施例的詳述,是希望能更加清楚描述本發明的特徵與精神, 而並非以上述所揭露的較佳具體實施例來對本發明的範疇加以限制。相反地,其目的是希 望能涵蓋各種改變及具相等性的安排於本發明所欲申請的專利範圍的範疇內。
權利要求
一種外部記憶體快進快出(xFIFO)裝置,分別耦接至一外部記憶體及一註冊匯流排,該外部記憶體快進快出裝置包含一外部記憶體快進快出引擎,耦接至該註冊匯流排,用以自該註冊匯流排接收一快進快出指令並且產生一寫入直接記憶體存取(DMA)指令及一讀取直接記憶體存取指令;一寫入式直接記憶體存取引擎,耦接至該外部記憶體快進快出引擎及該外部記憶體,用以自該外部記憶體快進快出引擎接收該寫入直接記憶體存取指令並且將一進入的資料轉送至該外部記憶體;一讀取式直接記憶體存取引擎,耦接至該外部記憶體快進快出引擎及該外部記憶體,用以該外部記憶體快進快出引擎接收該讀取直接記憶體存取指令並自該外部記憶體預取一外進外出資料;一第一虛擬快進快出模塊,耦接於該寫入式直接記憶體存取引擎與該讀取式直接記憶體存取引擎的間;以及一第二虛擬快進快出模塊,耦接於該寫入式直接記憶體存取引擎與該讀取式直接記憶體存取引擎的間;其中該寫入式直接記憶體存取引擎與該讀取式直接記憶體存取引擎是透過該第一虛擬快進快出模塊與該第二虛擬快進快出模塊達到彼此同步。
2.如權利要求1所述的外部記憶體快進快出裝置,其中在發出該寫入直接記憶體存取 指令之前,該寫入式直接記憶體存取引擎對該第一虛擬快進快出模塊執行一虛擬快進快出 寫入操作。
3.如權利要求2所述的外部記憶體快進快出裝置,其中一旦該虛擬快進快出寫入操作 結束,該寫入式直接記憶體存取引擎將該進入的資料轉送至該外部記憶體。
4.如權利要求1所述的外部記憶體快進快出裝置,其中在該寫入直接記憶體存取指令 結束後,該寫入式直接記憶體存取引擎對該第二虛擬快進快出模塊執行一寫入操作以更新 該第二虛擬快進快出模塊的狀態。
5.如權利要求1所述的外部記憶體快進快出裝置,其中在發出該讀取直接記憶體存取 指令之前,該讀取式直接記憶體存取引擎對該第二虛擬快進快出模塊執行一虛擬快進快出 讀取操作。
6.如權利要求5所述的外部記憶體快進快出裝置,其中一旦該虛擬快進快出讀取操作 結束,該讀取式直接記憶體存取引擎自該外部記憶體預取該快進快出資料。
7.如權利要求1所述的外部記憶體快進快出裝置,其中在該讀取直接記憶體存取指令 結束後,該讀取式直接記憶體存取引擎對該第一虛擬快進快出模塊執行一讀取操作以更新 該第一虛擬快進快出模塊的狀態。
8.如權利要求1所述的外部記憶體快進快出裝置,其中該外部記憶體快進快出裝置是 一多執行緒外部記憶體快進快出(MT-xFIFO)裝置,其輸入端為一匯流排介面單元的一硬 件介面且其輸出端為一系統晶片(SOC)匯流排介面。
9.如權利要求1所述的外部記憶體快進快出裝置,進一步包含耦接至該外部記憶體快 進快出引擎的一內容記憶體,其中在該外部記憶體快進快出引擎發出該寫入直接記憶體存 取指令或該讀取直接記憶體存取指令至該寫入式直接記憶體存取引擎或該讀取式直接記 憶體存取引擎之後,該外部記憶體快進快出引擎將目前執行緒的內容信息拷貝至該內容記憶體,並且自該內容記憶體取得下一執行緒的內容信息。
10.如權利要求1所述的外部記憶體快進快出裝置,其中該註冊匯流排耦接至少兩處 理器,並且該外部記憶體快進快出裝置透過該註冊匯流排增進該至少兩處理器之間的溝O
全文摘要
一種外部記憶體快進快出(xFIFO)裝置,耦接至外部記憶體及註冊匯流排。xFIFO裝置包含xFIFO引擎、讀取式直接記憶體存取(rDMA)引擎、寫入式直接記憶體存取(wDMA)引擎、第一虛擬FIFO模塊及第二虛擬FIFO模塊。xFIFO裝置自註冊匯流排接收快進快出指令並產生讀取DMA指令及寫入DMA指令。wDMA引擎自xFIFO引擎接收寫入DMA指令並傳送進來的資料至外部記憶體。rDMA引擎自xFIFO引擎接收讀取DMA指令並自外部記憶體預取快進快出資料。wDMA引擎及rDMA引擎透過第一虛擬FIFO模塊及第二虛擬FIFO模塊達到彼此同步。
文檔編號G06F13/28GK101930416SQ20101021090
公開日2010年12月29日 申請日期2010年6月21日 優先權日2009年6月21日
發明者劉榮濤, 張正倫, 楊雅超, 蔡景涵 申請人:先耀無線股份有限公司