PCI是一種廣泛採用的匯流排標準,它提供了許多優於其它匯流排標準(如EISA)的新特性,目前已經成為電腦系統中應用最為廣泛,並且最為通用的匯流排標準。Linux的核心能較好地支援PCI匯流排,本文以Intel 386體繫結構為主,探討了在Linux下開發PCI裝置驅動程式的基本架構。
PCI匯流排系統體繫結構
PCI是外圍裝置互連(Peripheral Component Interconnect)的簡稱,作為一種通用的匯流排介面標準,它在目前的電腦系統中得到了非常廣泛的應用。PCI提供了一組完整的匯流排介面規範,其目的是描述如何將電腦系統中的外圍裝置以一種結構化和可控化的方式串連在一起,同時它還刻畫了外圍裝置在串連時的電氣特性和行為規約,並且詳細定義了電腦系統中的各個不同組件之間應該如何正確地進行互動。
無論是在基於Intel晶片的PC機中,或是在基於Alpha晶片的工作站上,PCI毫無疑問都是目前使用最廣泛的一種匯流排介面標準。同舊式的ISA匯流排不同,PCI將電腦系統中的匯流排子系統與儲存子系統完全地分開,CPU通過一塊稱為PCI橋(PCI-Bridge)的裝置來完成同匯流排子系統的互動,1所示。
1 PCI子系統的體繫結構
由於使用了更高的時鐘頻率,因此PCI匯流排能夠獲得比ISA匯流排更好的整體效能。PCI匯流排的時鐘頻率一般在25MHz到33MHz範圍內,有些甚至能夠達到66MHz或者133MHz,而在64位系統中則最高能達到266MHz。儘管目前PCI裝置大多採用32位元據匯流排,但PCI規範中已經給出了64位的擴充實現,從而使PCI匯流排能夠更好地實現平台無關性,現在PCI匯流排已經能夠用於IA-32、Alpha、PowerPC、SPARC64和IA-64等體繫結構中。PCI匯流排具有三個非常顯著的優點,使得它能夠完成最終取代ISA匯流排這一曆史使命:
- 在電腦和外設間傳輸資料時具有更好的效能;
- 能夠盡量獨立於具體的平台;
- 可以很方便地實現隨插即用。
圖2是一個典型的基於PCI匯流排的電腦系統邏輯,系統的各個部分通過PCI匯流排和PCI-PCI橋串連在一起。不難看出,CPU和RAM需要通過PCI橋串連到PCI匯流排0(即主PCI匯流排),而具有PCI介面的顯卡則可以直接連接到主PCI匯流排上。PCI-PCI橋是一個特殊的PCI裝置,它負責將PCI匯流排0和PCI匯流排1(即從PCI主線)串連在一起,通常PCI匯流排1稱為PCI-PCI橋的下遊(downstream),而PCI匯流排0則稱為PCI-PCI橋的上遊(upstream)。圖中串連到從PCI匯流排上的是SCSI卡和乙太網路卡。為了相容舊的ISA匯流排標準,PCI匯流排還可以通過PCI-ISA橋來串連ISA匯流排,從而能夠支援以前的ISA裝置。圖中ISA匯流排上串連著一個多功能I/O控制器,用於修飾鍵盤、滑鼠和軟碟機。
2 PCI系統
在此我只對PCI匯流排系統體繫結構作了概括性介紹,如果讀者想進一步瞭解,David A Rusling在The Linux Kernel(http://tldp.org/LDP/tlk/dd/pci.html)中對Linux的PCI子系統有比較詳細的介紹。
上一篇:《執行個體解讀 linux 網卡驅動》
下一篇:《Linux PCI裝置驅動程式開發 --- PCI 體繫結構(二)》