PCI總線技術(shù)講座
這里我們可以看出,PCI總線的傳輸是很高效的,發(fā)出一組地址后,理想狀態(tài)下可以連續(xù)發(fā)數(shù)據(jù),峰值速率為132MB/s。實(shí)際上,目前流行的33M@32bit北橋芯片一般可以做到100MB/s的連續(xù)傳輸。
二、即插即用的實(shí)現(xiàn)
所謂即插即用,是指當(dāng)板卡插入系統(tǒng)時(shí),系統(tǒng)會(huì)自動(dòng)對(duì)板卡所需資源進(jìn)行分配,如基地址、中斷號(hào)等,并自動(dòng)尋找相應(yīng)的驅(qū)動(dòng)程序。而不象舊的ISA板卡,需要進(jìn)行復(fù)雜的手動(dòng)配置。
實(shí)際的實(shí)現(xiàn)遠(yuǎn)比說(shuō)起來(lái)要復(fù)雜。在PCI板卡中,有一組寄存器,叫"配置空間"(Configuration Space),用來(lái)存放基地址與內(nèi)存地址,以及中斷等信息。
以內(nèi)存地址為例。當(dāng)上電時(shí),板卡從ROM里讀取固定的值放到寄存器中,對(duì)應(yīng)內(nèi)存的地方放置的是需要分配的內(nèi)存字節(jié)數(shù)等信息。操作系統(tǒng)要跟據(jù)這個(gè)信息分配內(nèi)存,并在分配成功后把相應(yīng)的寄存器中填入內(nèi)存的起始地址。這樣就不必手工設(shè)置開(kāi)關(guān)來(lái)分配內(nèi)存或基地址了。對(duì)于中斷的分配也與此類(lèi)似。
三、中斷共享的實(shí)現(xiàn)
ISA卡的一個(gè)重要局限在于中斷是獨(dú)占的,而我們知道計(jì)算機(jī)的中斷號(hào)只有16個(gè),系統(tǒng)又用掉了一些,這樣當(dāng)有多塊ISA卡要用中斷時(shí)就會(huì)有問(wèn)題了。
PCI總線的中斷共享由硬件與軟件兩部分組成。
硬件上,采用電平觸發(fā)的辦法:中斷信號(hào)在系統(tǒng)一側(cè)用電阻接高,而要產(chǎn)生中斷的板卡上利用三極管的集電極將信號(hào)拉低。這樣不管有幾塊板產(chǎn)生中斷,中斷信號(hào)都是低;而只有當(dāng)所有板卡的中斷都得到處理后,中斷信號(hào)才會(huì)回復(fù)高電平。(請(qǐng)參考圖四所示電路)
軟件上,采用中斷鏈的方法:假設(shè)系統(tǒng)啟動(dòng)時(shí),發(fā)現(xiàn)板卡A用了中斷7,就會(huì)將中斷7對(duì)應(yīng)的內(nèi)存區(qū)指向A卡對(duì)應(yīng)的中斷服務(wù)程序入口ISR_A;然后系統(tǒng)發(fā)現(xiàn)板卡B也用中斷7,這時(shí)就會(huì)將中斷7對(duì)應(yīng)的內(nèi)存區(qū)指向ISR_B,同時(shí)將ISR_B的結(jié)束指向ISR_A。以此類(lèi)推,就會(huì)形成一個(gè)中斷鏈。而當(dāng)有中斷發(fā)生時(shí),系統(tǒng)跳轉(zhuǎn)到中斷7對(duì)應(yīng)的內(nèi)存,也就是ISR_B。ISR_B就要檢查是不是B卡的中斷,如果是,要處理,并將板卡上的拉低電路放開(kāi);如果不是,則呼叫ISR_A。這樣就完成了中斷的共享。
通過(guò)以上討論,我們不難看出,PCI總線有著極大的的優(yōu)勢(shì)。而近年來(lái)的市場(chǎng)情況也證實(shí)了這一點(diǎn)。凌華公司推出了從高端到低端全系統(tǒng)PCI總線數(shù)據(jù)采集卡,充分利用了PCI總線的這些優(yōu)點(diǎn),必將給您的工作帶來(lái)很大的便利。
評(píng)論