DDR3存儲器接口控制器IP核在視頻數據處理中的應用
DDR3存儲器控制器應支持廣泛的存儲器速率和配置,以滿(mǎn)足各種應用需求。例如,Lattice ECP3 DDR3存儲器控制器支持高達800Mb/s的DDR3器件速率,8至64位的存儲器數據通道(帶有x8或x16 DDR3器件),并且同時(shí)支持雙列直插式存儲器塊(Dual Inline Memory Modules,DIMM)和單個(gè)存儲器的器件。
DDR3存儲器控制器必須為各種存儲器訪(fǎng)問(wèn)實(shí)現不同的時(shí)序要求。一些要求對于我們的目標應用來(lái)說(shuō)非常重要,包括以下幾個(gè)方面:
- DDR3存儲器使用“類(lèi)似cache”的bank進(jìn)行組織,每個(gè)器件帶有8個(gè)bank。訪(fǎng)問(wèn)最近工作(打開(kāi))的bank比訪(fǎng)問(wèn)未工作的(關(guān)閉)的bank速度快。
- 可使用4位、8位或交叉存取方式進(jìn)行突發(fā)(burst)模式讀訪(fǎng)問(wèn)。
- 根據存儲器速率和用戶(hù)設置,CAS和寫(xiě)延遲都是可變的。從讀請求轉換為寫(xiě)請求需要額外的延遲時(shí)間,因為雙向的數據總線(xiàn)必須改變傳輸方向。
為了使存儲器數據帶寬和效率最大化,針對視頻處理設計的IP核實(shí)現需根據DDR3存儲器特性使用相匹配的算法。下面列出了一些重要的實(shí)現考慮。
- 使用突發(fā)(Burst)模式的數據訪(fǎng)問(wèn)
DDR3存儲器可通過(guò)突發(fā)模式訪(fǎng)問(wèn),突發(fā)模式在數據以數據塊形式存放(如視頻處理應用)的應用中是非常有效的。同樣,通過(guò)將視頻數據以?xún)?yōu)化的方式放入8個(gè)bank中,數據傳輸帶寬和之后的數據處理率可維持在一個(gè)高速的水平。在我們的示例中有4個(gè)視頻源,因此如果我們?yōu)槊總€(gè)視頻源使用2個(gè)bank(一個(gè)用作存儲緩沖器,另一個(gè)用作處理緩沖器),這將使DDR3保持高傳輸效率。高效的DDR3存儲器控制器應當基于每個(gè)bank的狀態(tài),使用最快的訪(fǎng)問(wèn)時(shí)間處理突發(fā)讀和寫(xiě)。此外,視頻處理器將事務(wù)分組,使總線(xiàn)換向時(shí)間最小化并進(jìn)一步提高存儲器帶寬。 更高帶寬的數據緩沖分配
來(lái)自視頻源1的數據可通過(guò)FIFO讀取并存儲到DDR3存儲器中的Bank 1。這將是一個(gè)只寫(xiě)操作,可以使用突發(fā)模式來(lái)保持傳輸的高效。一旦一個(gè)數據包保存到Bank 1,視頻處理器可從Bank 1讀出數據,對其進(jìn)行操作并存入Bank 2。這些操作都可使用突發(fā)模式,因此總線(xiàn)換向的花銷(xiāo)僅占用存儲器帶寬的很小的百分比。一旦Bank 2中的數據經(jīng)過(guò)處理后可被讀出,還是使用突發(fā)模式,然后發(fā)送到PCI Express接口,再傳輸到hub。盡可能地保持存儲器bank為打開(kāi)狀態(tài)可使得控制器使用最短的存儲器訪(fǎng)問(wèn)時(shí)間,從而提高了效率。
- 使用交叉存取的并行數據處理
數據讀可在bank之間切換或交叉存取,而無(wú)需大量延遲或總線(xiàn)換向時(shí)間。因此,只要處理硬件能夠支持,多個(gè)視頻流可通過(guò)視頻處理器同時(shí)處理。當處理好的數據寫(xiě)回DDR3存儲器時(shí),多個(gè)寫(xiě)操作也可以通過(guò)交叉存取來(lái)提高帶寬。一個(gè)易于使用和可預測的存儲器控制器,如:ECP3 DDR3存儲器控制器,在用戶(hù)基于其對數據處理的基本算法的了解的情況下來(lái)分配存儲器緩沖區時(shí),可以最小的硬件和軟件開(kāi)銷(xiāo)來(lái)實(shí)現最大的帶寬。
- 刷新和初始化
因為DDR3存儲器中的數據必須定期進(jìn)行刷新,一些存儲器訪(fǎng)問(wèn)必須分配給刷新操作。DDR3控制器應支持自動(dòng)刷新指令隊列,它可能是深度為8的指令集,可以作為一個(gè)指令組來(lái)執行,以使效率最大化。DDR3器件的初始化過(guò)程是非常繁復的并且很容易出錯,特別是在手動(dòng)執行時(shí)。DDR3控制器的初始化模塊應該通過(guò)與用戶(hù)邏輯的一次簡(jiǎn)單的握手,自動(dòng)初始化存儲器,從而極大地簡(jiǎn)化了接口設計。
- 流水線(xiàn)的指令處理
存儲器控制器應當使用指令流水線(xiàn)來(lái)提高吞吐率,在當前指令出現在存儲器接口時(shí),譯碼隊列中的下一條指令。這種方法提供了高于雙周期存儲器控制器100%的吞吐量。
評論