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