從ISA到PCI-E “高速路”建成史!
如同高速公路一樣,電腦中的各個(gè)單元也是依靠總線來(lái)連接的。如果以英文來(lái)解釋總線,單詞是“BUS”,極為形象——有了足夠快的信息“道路”,才能發(fā)揮電腦中各個(gè)部件的性能,讓數(shù)據(jù)在總線這條高速公路上快速傳輸。你可能知道PCI-E,但是你知道ISA嗎?

總線是什么?
總線(Bus)是指電腦內(nèi)部規(guī)范化的交換數(shù)據(jù)(data)方式,是一種內(nèi)部結(jié)構(gòu),它的作用是為處理器、內(nèi)存、輸入/輸出設(shè)備提供傳遞信息的公共通道,一如連接各地的高速公路般連接城市個(gè)各個(gè)地方??偩€的基本邏輯是,在同一個(gè)時(shí)間內(nèi)只能負(fù)責(zé)傳輸一個(gè)數(shù)據(jù)(比特,bit)。要想傳輸?shù)母?、更快,那就必須擴(kuò)展“道路”,加寬“車道”??偩€的寬度越大,傳輸速度就越快。
針對(duì)不同的連接總線也是有(針對(duì)性)區(qū)別的。一般來(lái)說(shuō),電腦的總線分為幾種。第一種是數(shù)據(jù)總線,名為Data Bus,主要負(fù)責(zé)處理器和內(nèi)存之間的數(shù)據(jù)存儲(chǔ)、傳輸;第二種是地址總線,即Address Bus,它負(fù)責(zé)用來(lái)在指定的內(nèi)存(Random Access Memory)數(shù)據(jù)存儲(chǔ)地址;第三種總線,是控制總線Control Bus,它負(fù)責(zé)將微處理器(Control Unit,非中央處理器)發(fā)出的信號(hào)傳送到具體外部設(shè)備上,比如SATA設(shè)備(并發(fā))、USB設(shè)備(串行);還有一種是擴(kuò)展總線Expansion Bus,它的作用是電腦內(nèi)部和外部設(shè)備進(jìn)行通訊的總線,比如我們說(shuō)的PCI-E總線就是擴(kuò)展總線的一種。

例如一臺(tái)電腦,主板的主芯片(PCH)要負(fù)責(zé)CPU與內(nèi)存、顯卡等數(shù)據(jù)吞吐大戶的通訊工作(現(xiàn)在的CPU也會(huì)肩負(fù)這一工作),那么它如何工作呢?在CPU部分,通過(guò)前端總線(即FSB)連接到PCH芯片上,進(jìn)而通過(guò)其與內(nèi)存、顯卡進(jìn)行數(shù)據(jù)的“交流”。

總線也是代際迭代的,隨著時(shí)間的發(fā)展數(shù)據(jù)的傳輸需求越來(lái)越高,例如PCI-E 5.0的總線帶寬速度已經(jīng)達(dá)到了驚人的128GB/s(全雙工),這要比早期ISA總線的數(shù)據(jù)帶寬大多了——8MB/s。你沒(méi)看錯(cuò),早期的ISA總線帶寬受限于位寬只有8Bit/16Bit,最大的帶寬傳輸速度不過(guò)區(qū)區(qū)4.77MB/s、8MB/s!
ISA——我不快但是我很關(guān)鍵
ISA的全稱為Industrial Standard Architecture,工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)總線,它最早出現(xiàn)于1981年,是IBM兼容電腦的一個(gè)總線系統(tǒng),位寬只有8bit。到了1984年,ISA總線升級(jí)為16bit??刹褰语@卡、聲卡、網(wǎng)卡已及所謂的多功能接口卡等擴(kuò)展插卡。其缺點(diǎn)是CPU資源占用太高,數(shù)據(jù)傳輸帶寬太小,是已經(jīng)被淘汰的插槽接口。目前它現(xiàn)在只存在于極少部分的工控類設(shè)備上還在使用。

ISA總線的表現(xiàn)形式是一個(gè)長(zhǎng)長(zhǎng)的插槽,遠(yuǎn)比現(xiàn)在的PCI-E長(zhǎng)許多,而且它的使用其實(shí)并不方便——現(xiàn)如今我們非常習(xí)慣的“即插即用”,即Plug-n-Play功能根本沒(méi)有,所以在安裝了ISA接口的設(shè)備時(shí),必須手動(dòng)設(shè)置IRQ(中斷請(qǐng)求)、I/O地址(輸出/輸入地址)、DMA信道才能配置其工作。

早年間數(shù)據(jù)總線的傳輸負(fù)載并不高,在80286處理器時(shí)代ISA總線還能夠完全應(yīng)對(duì)。但是當(dāng)80386這個(gè)32bit位寬外部總線的處理器出現(xiàn)后,總線帶寬就成為了嚴(yán)重的性能瓶頸,畢竟ISA擴(kuò)展標(biāo)準(zhǔn)后也不過(guò)是16bit位寬。因此在1988年的時(shí)候,康柏、惠普等九個(gè)廠商協(xié)同制定標(biāo)準(zhǔn),將ISA總線擴(kuò)展到了32bit位寬,相應(yīng)的名稱也變成了EISA,即Extended ISA擴(kuò)展ISA。EISA總線的工作頻率其實(shí)和ISA一樣都是8MHz,并且可以向下兼容8bit、16bit位寬的ISA總線設(shè)備。

ISA總線的致命弱點(diǎn)可不止帶寬很有限,它更大的問(wèn)題在于CPU占用率高、且占用硬件中斷資源。1990年代后期PCI總線逐步取代了ISA總線。在Intel PC'98規(guī)范中徹底放棄了對(duì)ISA總線的支持,后期即便有推出帶有ISA插槽的主板,也不過(guò)是通過(guò)模擬的方式實(shí)現(xiàn)對(duì)ISA設(shè)備的支持。
PCI——提速全靠我
1992年的時(shí)候,Intel提出了PCI,外圍組件互連Peripheral Component Interconnect總線協(xié)議1.0標(biāo)準(zhǔn),對(duì)比ISA總線協(xié)議,PCI總線標(biāo)準(zhǔn)一開始就提供了ISA無(wú)法企及的高度:133MB/s的帶寬(33MHz時(shí)鐘,每時(shí)鐘傳送32bit),這對(duì)當(dāng)時(shí)的電腦來(lái)說(shuō)已經(jīng)是超高速帶寬了。到了后期,PCI總線標(biāo)準(zhǔn)進(jìn)一步提升到64bit位寬,帶寬達(dá)到了264MB/s。

另一個(gè)特點(diǎn)是在PCI上實(shí)現(xiàn)了即插即用功能——安裝即可使用(當(dāng)然在操作系統(tǒng)內(nèi)還需要安裝驅(qū)動(dòng)程序),無(wú)需手動(dòng)調(diào)配硬件資源。

另外,PCI總線標(biāo)準(zhǔn)增加了奇偶校驗(yàn)錯(cuò)(PERR)、系統(tǒng)錯(cuò)(SERR)、從設(shè)備結(jié)束(STOP)等控制信號(hào)及超時(shí)處理等可靠性措施,使數(shù)據(jù)傳輸?shù)目煽啃源鬄樵黾印?/p>
在90年代末期,PCI總線即便是64bit的修訂版本規(guī)格,其僅僅264MB/s的帶寬吞吐能力已經(jīng)無(wú)法為顯卡提供足夠的帶寬支撐,而此時(shí)業(yè)界又沒(méi)有一個(gè)更好的解決辦法。于是,Intel將AGP這種點(diǎn)對(duì)點(diǎn)的專用傳輸通道提了出來(lái)。
AGP——特殊的候補(bǔ)隊(duì)員
AGP,全稱為加速圖形接口(Accelerated Graphics Port),1997年,Intel為了應(yīng)對(duì)顯卡這種帶寬吞吐大戶的需求,在PCI總線標(biāo)準(zhǔn)上創(chuàng)建的一種點(diǎn)對(duì)點(diǎn)傳輸通道,可以說(shuō),它并非是一個(gè)總線標(biāo)準(zhǔn)——畢竟它只是為顯卡的專用接口。要知道,任何一個(gè)總線都允許多個(gè)設(shè)備共享,而AGP只能只能實(shí)現(xiàn)“一對(duì)一”的模式,僅僅為顯卡提供帶寬支撐。

AGP時(shí)代,出現(xiàn)了許多經(jīng)典的顯卡,比如3DFX Voodoo Banshee、NVIDIA RIVA 128、3Dlabs Permedia 2、ATi Rage系列、Matrox Millennium II、S3 ViRGE GX/2等等。比較有趣的是,最早的一批AGP顯卡并非原生AGP接口,而是通過(guò)橋接方式由PCI總線轉(zhuǎn)換成AGP,而且需要一顆單獨(dú)的芯片負(fù)責(zé)處理轉(zhuǎn)換,這導(dǎo)致首批此類顯卡的性能根本無(wú)法發(fā)揮實(shí)際效率。直到真正原生的AGP接口顯卡出現(xiàn),人們才領(lǐng)略了AGP接口的高帶寬究竟能帶來(lái)什么樣的3D加速性能。



AGP的帶寬究竟有多大呢?AGP的第一版達(dá)到了266MB/s的帶寬,到了后期AGP 8×的帶寬達(dá)到了2.1GB/s。AGP的規(guī)范版本一共經(jīng)歷了4次更替,分別為AGP 1×、AGP 2×、AGP 4×和AGP 8×,他們對(duì)應(yīng)的規(guī)格版本分別是AGP 1.0(AGP 1×、AGP 2×)、AGP 2.0(AGP 4×)、AGP 3.0(AGP 8×)。另外,AGP接口向下兼容,而不能向上兼容,因?yàn)檫B電壓都會(huì)有區(qū)別。


PCI-E——?dú)v經(jīng)5代的超大家族
到了AGP 8×后期,最高2.1GB/s的帶寬吞吐能力也不足以支撐顯卡日益高漲的帶寬需求,同時(shí),其他設(shè)備也對(duì)總線帶寬有了更高的要求,PCI+AGP的組合已經(jīng)不夠看了,于是PCI-E應(yīng)運(yùn)而生。

2001年Intel在IDF(Intel開發(fā)者論壇)大會(huì)上公布了最新的總線技術(shù),被命名為“3GIO”。之后的2002年,PCI特殊興趣組織(PCI-SIG)正式公布了新一代總線技術(shù)標(biāo)準(zhǔn),這就是從3GIO改名而來(lái)的PCI-E。
PCI-E的規(guī)范設(shè)計(jì)十分友好,只要是支持PCI總線的操作系統(tǒng),無(wú)需修改升級(jí)即可支持PCI-E總線技術(shù)標(biāo)準(zhǔn),很快,這個(gè)總線技術(shù)標(biāo)準(zhǔn)就取代了PCI+AGP的組合,成為最主流的總線技術(shù)標(biāo)準(zhǔn)。

PCI-E不僅具有極為強(qiáng)大的帶寬吞吐能力,而且它還能支持更高的供電,對(duì)于大功率的PCI-E擴(kuò)展設(shè)備無(wú)疑十分友好。甚至,它在電壓的支持上也做了特別設(shè)計(jì),可以分別支持+3.3V、3.3Vaux以及+12V三種不同的電壓標(biāo)準(zhǔn),讓PCI-E設(shè)備的設(shè)計(jì)更為簡(jiǎn)單容易。
當(dāng)然,最重要的還是PCI-E驚人的帶寬吞吐能力。根據(jù)需求PCI-E可以以不同規(guī)格、不同速率提供給使用者設(shè)計(jì)不同的插槽,如PCI-E ×1、PCI-E ×2、PCI-E ×4、PCI-E ×8、PCI-E ×16。

PCI-E規(guī)范主要是為了提升電腦內(nèi)部所有總線的速度,因此帶寬有多種不同規(guī)格標(biāo)準(zhǔn),其中PCI-E ×16是特別為顯卡所設(shè)計(jì)。


計(jì)算公式:PCI-E串行總線帶寬(MB/s)=串行總線時(shí)鐘頻率(MHz)×串行總線位寬(bit/8 = B)×串行總線管線×編碼方式×每時(shí)鐘傳輸幾組數(shù)據(jù)(cycle),例如全雙工PCI-E 1.0 ×1,其帶寬= 2500×1/8×1×8/10×1×2=500MB/s。
可以說(shuō),PCI-E的出現(xiàn)一定程度解決了帶寬不足的問(wèn)題,而且PCI-E總線技術(shù)標(biāo)準(zhǔn)也在不斷升級(jí),從最初的PCI-E 1.0已經(jīng)更替到最新的PCI-E 6.0。
PCI-E 4.0總線技術(shù)準(zhǔn),其帶寬吞吐能力對(duì)比最初的ISA總線技術(shù)標(biāo)準(zhǔn)呈幾何數(shù)量級(jí)的增長(zhǎng),這就是技術(shù)進(jìn)步帶來(lái)的好處——否則,NVME規(guī)范的固態(tài)硬盤,又怎么可能發(fā)揮其超強(qiáng)的讀寫性能?次時(shí)代的旗艦級(jí)顯卡,又如何能夠支撐4K分辨率下的游戲貼圖運(yùn)算呢?
