PCI總線結(jié)構(gòu)
PCI即Peripheral Component Interconnect,中文意思是“外圍器件互聯(lián)”,是由PCISIG (PCI Special Interest Group)推出的一種局部并行總線標(biāo)準(zhǔn)。PCI總線是由ISA(Industy Standard Architecture)總線發(fā)展而來(lái)的,ISA并行總線有8位和16位兩種模式,時(shí)鐘頻率為8MHz,工作頻率為33MHz/66MHz。是一種同步的獨(dú)立于處理器的32位或64位局部總線。從結(jié)構(gòu)上看,PCI是在CPU的供應(yīng)商和原來(lái)的系統(tǒng)總線之間插入的一級(jí)總線,具體由一個(gè)橋接電路實(shí)現(xiàn)對(duì)這一層的管理,并實(shí)現(xiàn)上下之間的接口以協(xié)調(diào)數(shù)據(jù)的傳送。從1992年創(chuàng)立規(guī)范到如今,PCI總線已成為了計(jì)算機(jī)的一種標(biāo)準(zhǔn)總線。已成為局部總線的新標(biāo)準(zhǔn),廣泛用于當(dāng)前高檔微機(jī)、工作站,以及便攜式微機(jī)。主要用于連接顯示卡、網(wǎng)卡、聲卡。PCI總線是32位同步復(fù)用總線。其地址和數(shù)據(jù)線引腳是AD31~AD0。PCI的工作頻率為33MHz。
在處理器系統(tǒng)中,含有PCI總線和PCI總線樹(shù)這兩個(gè)概念。這兩個(gè)概念并不相同,在一顆PCI總線樹(shù)中可能具有多條PCI總線,而具有血緣關(guān)系的PCI總線組成一顆PCI總線樹(shù)。PCI總線由HOST主橋或者PCI橋管理,用來(lái)連接各類設(shè)備,如聲卡、網(wǎng)卡和IDE接口卡等。在一個(gè)處理器系統(tǒng)中,可以通過(guò)PCI橋擴(kuò)展PCI總線,并形成具有血緣關(guān)系的多級(jí)PCI總線,從而形成PCI總線樹(shù)型結(jié)構(gòu)。在處理器系統(tǒng)中有幾個(gè)HOST主橋,就有幾顆這樣的PCI總線樹(shù),而每一顆PCI總線樹(shù)都與一個(gè)PCI總線域?qū)?yīng)。與HOST主橋直接連接的PCI總線通常被命名為PCI總線0??紤]到在一個(gè)處理器系統(tǒng)中可能有多個(gè)主橋。
PCI總線取代了早先的ISA總線。當(dāng)然與在PCI總線后面出現(xiàn)專門(mén)用于顯卡的AGP總線,與現(xiàn)在的PCI Express總線相比,功能沒(méi)有那么強(qiáng)大,但是PCI能從1992用到現(xiàn)在,說(shuō)明他有許多優(yōu)點(diǎn),比如即插即用(Plug and Play)、中斷共享等。在這里我們對(duì)PCI總線做一個(gè)深入的介紹。從數(shù)據(jù)寬度上看,PCI總線有32bit、64bit之分;從總線速度上分,有33MHz、66MHz兩種。目前流行的是32bit @ 33MHz,而64bit系統(tǒng)正在普及中。改良的PCI系統(tǒng),PCI-X,最高可以達(dá)到64bit @ 133MHz,這樣就可以得到超過(guò)1GB/s的數(shù)據(jù)傳輸速率。如果沒(méi)有特殊說(shuō)明,以下的討論以32bit @ 33MHz為例。不同于ISA總線,PCI總線的地址總線與數(shù)據(jù)總線是分時(shí)復(fù)用的。這樣做的好處是,一方面可以節(jié)省接插件的管腳數(shù),另一方面便于實(shí)現(xiàn)突發(fā)數(shù)據(jù)傳輸。在做數(shù)據(jù)傳輸時(shí),由一個(gè)PCI設(shè)備做發(fā)起者(主控,Initiator或Master),而另一個(gè)PCI設(shè)備做目標(biāo)(從設(shè)備,Target或Slave)??偩€上的所有時(shí)序的產(chǎn)生與控制,都由Master來(lái)發(fā)起。PCI總線在同一時(shí)刻只能供一對(duì)設(shè)備完成傳輸,這就要求有一個(gè)仲裁機(jī)構(gòu)(Arbiter),來(lái)決定在誰(shuí)有權(quán)力拿到總線的主控權(quán)。當(dāng)PCI總線進(jìn)行操作時(shí),發(fā)起者(Master)先置REQ#,當(dāng)?shù)玫街俨闷?Arbiter)的許可時(shí)(GNT#),會(huì)將FRAME#置低,并在AD總線上放置Slave地址,同時(shí)C/BE#放置命令信號(hào),說(shuō)明接下來(lái)的傳輸類型。
所有PCI總線上設(shè)備都需對(duì)此地址譯碼,被選中的設(shè)備要置DEVSEL#以聲明自己被選中。然后當(dāng)IRDY#與TRDY#都置低時(shí),可以傳輸數(shù)據(jù)。當(dāng)Master數(shù)據(jù)傳輸結(jié)束前,將FRAME#置高以標(biāo)明只剩最后一組數(shù)據(jù)要傳輸,并在傳完數(shù)據(jù)后放開(kāi)IRDY#以釋放總線控制權(quán)。這里我們可以看出,PCI總線的傳輸是很高效的,發(fā)出一組地址后,理想狀態(tài)下可以連續(xù)發(fā)數(shù)據(jù),峰值速率為132MB/s。實(shí)際上,目前流行的33M@32bit北橋芯片一般可以做到100MB/s的連續(xù)傳輸。