2008年4月4日 星期五
直接記憶體存取之基礎、結構、與應用(4)
在上一篇文章中,已討論過針對指令以及資料記憶體要如何在快取與DMA機構之選擇上做出最佳的決定。在這次的討論裡面,將要繼續先前尚未討論完的部分,也就是先進DMA的特點如何能夠使資料的搬移更具有效率。將會專注在如何使記憶體中的資料傳輸最佳化,不論是正在處理指令或是資料記憶體。接著會針對多媒體應用領域中的一些實際使用情況做綜合性的討論。
先進DMA控制器的特點
想要在多媒體系統中有效率的使用DMA,就必須要有足夠的DMA通道,能夠完整的支援處理器的所有周邊,同時還需要有一對以上的記憶體DMA(MemDMA)串流。這一點非常的重要,因為傳送進來的未經處理媒體串流一定會送到外部記憶體中(透過高速周邊),而在此同時,核心處理所需要的資料區塊將會在外部記憶體以及L1記憶體之間來回的搬移。此外, DMA引擎能夠在周邊與外部記憶體之間做直接資料傳輸,而不會像L1記憶體一樣需要「中途停留」(stopover),對於特別強調數值方面的演算法則可以減少額外的資料傳送。
在開發階段中,程式設計師常常會犯的一個共通錯誤使得除錯的程序變得更為複雜。周邊以及其相對應的DMA通道,通常都會具有可以切換的錯誤中斷。在開發階段中,這個中斷應該要經常性的被維持在啟用的狀態。這樣子的作法可以節省掉數個小時的除錯時間。一般錯誤中斷的用途都是用以指出程式中某些撰寫錯誤的部分(這是比較容易修正的狀況),或者是某個周邊發生了超下限/ 超上限(這是較為複雜的狀況)的問題。在多數的情況下,程式設計師在計畫起步階段進行架構的設定時,前述這些類型的狀況只有到稍後開始加入應用裝置的處理元件才會出現。