PCI匯流排 DMA burst 基本概念

2022-05-13 21:22:38 字數 937 閱讀 2004

dma和burst不是乙個概念。

dma傳送不經過cpu的控制,假如硬碟的資料不能經過dma控制器讀到記憶體,那麼每完成一次將硬碟的資料讀出來,再存放到記憶體的操作,都要通過cpu執行幾條讀寫指令來完成,這時cpu就做不了別的事了,如果有dma控制器,則這個過程不需要cpu的參與,只需要占用匯流排就可以了。cpu還可以去完成別的運算。

burst操作還是要通過cpu的參與的,與單獨的一次讀寫操作相比,burst只需要提供乙個其實位址就行了,以後的位址依次加1,而非burst操作每次都要給出位址,以及需要中間的一些應答、等待狀態等等。如果是對位址連續的讀取,burst效率高得多,但如果位址是跳躍的,則無法採用burst操作

一般晶元的dma有基本功能。

1、普通的記憶體、外設間互傳資料,一次性的。

pci裝置dma控制器,設定好後dma 控制器的暫存器,pci裝置就會通過pci匯流排向其他裝置傳送訊號。

2、支援鍊錶的,美其名曰「scatter」,核心有struct scatter可以參考。

說一下注意點:

dma有burst、burst size、transfer的概念:

burst:

dma實際上是一次一次的申請匯流排,把要傳的資料總量分成乙個乙個小的資料塊。比如要傳64個位元組,那麼dma內部可能分為2次,一次傳64/2=32個位元組,這個2(a)次呢,就叫做burst。這個burst是可以設定的。這32個位元組又可以分為32位 *8或者16位*16來傳輸。

transfer size:

就是資料寬度,比如8位、32位,一般跟外設的fifo相同。

burst size:

就是一次傳幾個 transfer size.

配置資料寬度為32位。一次傳8個32位=32個位元組。

那麼如果總長度為128位元組,那麼實際dma設定的長度為 128/32 = 4.

很好的一篇文章:基於fpga的pci介面dma傳輸的設計與實現

PCI匯流排學習(二) PCI匯流排仲裁

幻燈片 9 在一定時間內,可能有多個bus master請求使用匯流排傳輸資料,每個請求匯流排的master都會assert它的req 訊號,來告訴仲裁器他要申請使用匯流排,仲裁器一般整合於晶元組中。幻燈片 10 如果仲裁器是可程式設計的,啟動配置軟體可以通過讀取max lat配置暫存器來決定每個b...

PCI匯流排(二)

pci網絡卡驅動程式分析 針對 gnic ii 的千兆乙太網卡,源程式檔案 drivers net hamachi.c 1 初始化 static int init hamachi init void 進入bus add driver int bus add driver struct device ...

pci匯流排定時協議 PCI匯流排標準及協議

首先?pagenum physaddress 另外。因為硬體裝置讀寫的是物理記憶體。舉例如下。專用晶元可以實現完整的pci主裝置與從裝置模式的介面功能?vpicd physically unmask rtcirqhandle ram晶元為資料處理提供快取功能,但各協議互不相容,而且各狀態的跳轉條件比...