三種數據傳輸模型的示意圖如下圖所示:
PIO
首先來介紹一下Programmed I/O(PIO)
PIO在早期的PC中被廣泛使用,因外當時的處理器的速度要遠遠大于任何其他外設的速度,所以PIO足以勝任所有的任務。舉一個例子,比如說某一個PCI設備需要向內存(SDRAM)中寫入一些數據,該PCI設備會向CPU請求一個中斷,然后CPU首先先通過PCI總線把該PCI設備的數據讀取到CPU內部的寄存器中,然后再把數據從內部寄存器寫入到內存(SDRAM)中。
現在看來,這種傳輸方式的效率還是很低的。首先,每次CPU和PCI設備以及SDRAM通信都需要額外的時鐘周期(相對于DMA);其次,這種傳輸方式還需要長時間地占用CPU,影響CPU的使用率。試想一下,你在用PC在線觀看一個1080p60的高清視頻,這需要以太網連續地向內存(SDRAM)中寫入數據,如果使用PIO的方式的話,將難以保證數據的寫入速度。隨著目前的PCI外設速度越來越高,PIO已經逐漸被DMA傳輸方式所取代,但是為了兼容早期的一些設備,PCI Spec依然保留了PIO。
DMA
DMA是一種在傳輸過程中,幾乎不需要CPU進行干預的數據傳輸方式。如上面的圖片所示,以太網可以直接向內存(SDRAM)中寫入數據,而幾乎不需要CPU的干預。實際上,DMA不僅僅應用于PCI總線系統中,它是一種更為廣泛應用的數據傳輸方式。目前,幾乎所有的CPU,甚至是MCU都支持DMA。具體這里就不詳細地介紹了,有興趣的可以參考百度百科:https://baike.baidu.com/item/DMA/2385376?fr=aladdin或者其它的資料。
Peer-to-Peer
前面的文章中,我們介紹過PCI總線系統中的主機身份并不是固定不變的,而是可以切換的(借助仲裁器),但是同一時刻只能存在一個主機。完成Peer-to-Peer這一傳輸方式的前提是,PCI總線系統中至少存在一個有能力成為主機的設備。在仲裁器的控制下,完成主機身份的切換,進而獲得PCI總線的控制權,然后與總線上的其他PCI設備進行通信。不過,需要注意的是,在實際的系統中,Peer-to-Peer這一傳輸方式卻很少被使用,這是因為獲得主機身份的PCI設備(Initiator)和另一個PCI設備(Target)通常采用不同的數據格式,除非他們是同一個廠家的設備。
-
cpu
+關注
關注
68文章
10829瀏覽量
211186 -
pci總線
+關注
關注
1文章
203瀏覽量
31798 -
dma
+關注
關注
3文章
559瀏覽量
100446
原文標題:【博文連載】PCIe掃盲——PCI總線的三種傳輸模式
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論