PCIe還在很多方面和PCI有很大不同:
1. PCI是總線結(jié)構(gòu),,而PCIe是點(diǎn)對(duì)點(diǎn)結(jié)構(gòu)。一個(gè)典型的PCIe系統(tǒng)框圖如下:
一個(gè)典型的結(jié)構(gòu)是一個(gè)root port和一個(gè)endpoint直接組成一個(gè)點(diǎn)對(duì)點(diǎn)連接對(duì),,而Switch可以連接幾個(gè)endpoint,。一個(gè)root port和一個(gè)endpoint對(duì)就需要一個(gè)單獨(dú)的PCI bus。而PCI是在同一個(gè)總線上的設(shè)備共享同一個(gè)bus number,。過(guò)去主板上的PCI插槽都公用一個(gè)PCI bus,,而現(xiàn)在的PCIe插槽卻連在芯片組不同的root port上。
2. PCIe的連線是由不同的lane來(lái)連接的,,這些lane可以合在一起提供更高的帶寬,。譬如兩個(gè)1lane可以合成2lane的連接,寫(xiě)作x2,。兩個(gè)x2可以變成x4,,直到x16,往往給帶寬需求的顯卡使用,。
3. PCI配置空間從256B擴(kuò)展為4k,,提供了PCIe memory map訪問(wèn)方式,我們?cè)谲浖糠謺?huì)詳細(xì)介紹,。
4.PCIe提供了很多特殊功能,,如Complete Timeout(CTO),MaxPayload等等幾十個(gè)特性,,還在隨著PCIe版本的進(jìn)化不斷增加中,,對(duì)電源管理也提出了單獨(dú)的State(L0/L0s/L1等等)。這些請(qǐng)參見(jiàn)PCIe 3.0 spec,,本文不再詳述,。
5. 其他VC的內(nèi)容,和固件理解無(wú)關(guān),,本文不再提及,。INT到MSI的部分會(huì)在將來(lái)介紹PC中斷系統(tǒng)時(shí)詳細(xì)講解。
PCIe 1.0和2.0采用了8b/10b編碼方式,,這意味著每個(gè)字節(jié)(8b)都用10bit傳輸,,這就是為什么2.5GHz和5GHz時(shí)鐘,,每時(shí)鐘1b數(shù)據(jù),結(jié)果不是312.5MB/s和625MB/s而是250MB/s和500MB/s,。PCIe 3.0和4.0采用128b/130b編碼,,減小了浪費(fèi)(overhead),才能在8GHz時(shí)鐘下帶寬達(dá)到1000MB/s(而不是800MB/s),。即將于今年發(fā)布的PCIe 4.0還會(huì)將頻率提高一倍,,達(dá)到16GHz,帶寬達(dá)到2GB/s每Lane,。
后記
對(duì)于一般用戶來(lái)說(shuō),,PCIe對(duì)用戶可見(jiàn)的部分就是主板上大大小小的PCIe插槽了,有時(shí)還和PCI插槽混在一起,,造成了一定的混亂,,其實(shí)也很好區(qū)分:

