用PowerPC實現高帶寬 TCP/IP 性能
千兆位以太網性能的獲得是通過利用多端口 DDR 存儲器控制器,在嵌入式 PowerPC處理器局部總線 (PLB) 接口與兩個數據端口之間分配存儲器帶寬而實現的。每個數據端口連接到一個直接存儲器訪問 (DMA) 控制器,從而允許硬件外設對存儲器進行高帶寬訪問。
系統架構
存儲器帶寬對高性能網絡連接應用來說是一個重要考慮事項。通常,外部 DDR 存儲器為處理器和一個或多個高帶寬外設(如以太網)所共享。一個多端口存儲器控制器負責將可用存儲器帶寬高效地分配給處理器接口和流式外設,包括以太網。流式外設通過點對點流式接口由直接存儲器訪問 (DMA) 控制器鏈接到存儲器。DMA 控制器實行分散-收集 (scatter-gather) 機制,由此將多個緩沖區轉換到以太網或其他流式外設上的一個數據流,或相反。以太網外設對發送和接收路徑同時實行校驗和卸載,以優化 TCP 性能。下圖顯示了上述系統的一種框圖。
TCP/IP 單位字節處理成本
當處理器處理有效載荷數據時就會產生單位字節處理成本。這種類型的兩個最常見的操作是緩沖區復制和 TCP 校驗和計算。緩沖區復制意味著重大處理開銷,這有兩個原因:
1. 大部分復制都不是必要的。
2. 處理器不是高效的數據搬運工。
TCP 校驗和計算代價高昂,因為需要對每個有效載荷數據字節進行計算。支持嵌入式 TCP/IP 的應用(如醫療成像)要求使用接近線速的 TCP 帶寬,以便通過千兆位以太網可靠地傳輸圖像數據。數據是從高分辨率圖像源生成的,而不是處理器。這種情況下,引入零復制軟件 API 并將校驗和計算利用FPGA 邏輯結構實現,將徹底地消除單位字節處理成本。"零復制"是用來描述一個 TCP 軟件接口不會發生任何緩沖區復制的術語。Linux 和其他操作系統已經引入了用于此目的的軟件接口,商用獨立 TCP/IP 棧廠商如 Treck 也提供了類似的零復制特性。這些軟件特性允許消除用戶應用程序與 TCP/IP 棧或操作系統之間的緩沖區復制。
系統的分散-收集與校驗和卸載特性為零復制功能提供了所需的硬件支持。分散-收集特性是 DMA 控制器的一種靈活性,它允許軟件緩沖區位于任意字節偏移處。這避免了處理器復制未對齊或碎片化的緩沖區。
校驗和卸載是以太網外設的一種特性。它允許當以太網幀在主存儲器與外設的硬件 FIFO 之間傳輸時,在 FPGA 結構中進行 TCP 有效載荷的校驗。這些系統特性消除了代價較高的緩沖區復制與處理器校驗和操作,讓處理器專心執行協議操作和用戶功能。
TCP/IP 單位包處理成本
單位包處理成本與涉及包的發送或接收的操作有關。包中斷、硬件接口和頭處理等,都是單位包處理成本的例子。中斷處理成本對處理器和存儲器子系統構成相當大的負擔,特別是在傳輸小包時。中斷結合 (Interrupt coalescing) 是此類系統中用來緩解這種壓力的一種技術,它將中斷處理成本通過多個包分期攤還。DMA 引擎將一直等待,直到出現 n 個要處理的幀,然后才中斷處理器,其中 n 是一個軟件可調的值。
通過減少傳輸幀的數量,大尺寸包(9,000 字節的巨幀)的傳輸具有相似的效果,由此可得到中斷數。它把單位包處理成本分攤在一個較大的數據有效載荷上。
設計實現
實現這種體系結構的一個例子是賽靈思公司的千兆位系統參考設計 (GSRD)。它面向基于 TCP/IP 的協議與用戶數據接口(如高分辨率圖像捕捉或光纖信道)之間的高性能橋接。GSRD 的組件包含解決 TCP/IP 系統的單位字節處理成本和單位包處理成本的特性。對于需要使用嵌入式操作系統的應用,可提供 MontaVista Linux端口和來自 Treck 的商業獨立 TCP/IP 棧,以滿足具有最高帶寬要求的應用。GSRD 使用巨幀可提供高達 890 Mbps 的發送 TCP 性能,可采用賽靈思公司目前最新的 FPGA 技術來實現。 GSRD 可以從 http://www.xilinx.com/gsrd/ 下載得到。
評論