總線仲裁的名詞解釋
系統(tǒng)中多個設(shè)備或模塊可能同時(shí)申請對總線的使用權(quán),為避免產(chǎn)生總線沖突,需由總線仲裁機(jī)構(gòu)合理地控制和管理系統(tǒng)中需要占用總線的申請者,在多個申請者同時(shí)提出總線請求時(shí),以一定的優(yōu)先算法仲裁哪個應(yīng)獲得對總線的使用權(quán)。
總線仲裁就是在多個總線主設(shè)備的環(huán)境中提出來的。在多處理機(jī)系統(tǒng)中,每個處理機(jī)都可以作為總線主設(shè)備,都要共享資源,它們都必須通過系統(tǒng)總線才能訪問其它資源,總線也可視為是一種重要的公共資源。由于每個處理機(jī)都會隨機(jī)地提出對總線使用的要求,這樣就可能發(fā)生總線競爭現(xiàn)象。為了防止多個處理機(jī)同時(shí)控制總線,就要在總線上設(shè)立一個處理上述總線競爭的機(jī)構(gòu),按優(yōu)先級次序,合理地分配資源,這就是總線仲裁問題。用硬件來實(shí)現(xiàn)總線分配的邏輯電路稱為總線仲裁器(Bus Arbiter)。它的任務(wù)是響應(yīng)總線請求,通過對分配過程的正確控制,達(dá)到最佳使用總線。
總線仲裁分類
按照總線仲裁電路的位置不同,仲裁方式分為集中式仲裁和分布式仲裁兩類:
1.集中式總線仲裁的控制邏輯基本集中在一處,需要中央仲裁器,分為鏈?zhǔn)讲樵兎绞?、?jì)數(shù)器定時(shí)查詢方式、獨(dú)立請求方式;
?。?) 鏈?zhǔn)讲樵兎绞?/p>
鏈?zhǔn)讲樵兎绞降闹饕攸c(diǎn):總線授權(quán)信號BG串行地從一個I/O接口傳送到下一個I/O接口。假如BG到達(dá)的接口無總線請求,則繼續(xù)往下查詢;假如BG到達(dá)的接口有總線請求,BG信號便不再往下查詢,該I/O接口獲得了總線控制權(quán)。離中央仲裁器最近的設(shè)備具有最高優(yōu)先級,通過接口的優(yōu)先級排隊(duì)電路來實(shí)現(xiàn)。
鏈?zhǔn)讲樵兎绞降膬?yōu)點(diǎn): 只用很少幾根線就能按一定優(yōu)先次序?qū)崿F(xiàn)總線仲裁,很容易擴(kuò)充設(shè)備。
鏈?zhǔn)讲樵兎绞降娜秉c(diǎn): 對詢問鏈的電路故障很敏感,如果第i個設(shè)備的接口中有關(guān)鏈的電路有故障,那么第i個以后的設(shè)備都不能進(jìn)行工作。查詢鏈的優(yōu)先級是固定的,如果優(yōu)先級高的設(shè)備出現(xiàn)頻繁的請求時(shí),優(yōu)先級較低的設(shè)備可能長期不能使用總線。
?。?)計(jì)數(shù)器定時(shí)查詢方式
總線上的任一設(shè)備要求使用總線時(shí),通過BR線發(fā)出總線請求。中央仲裁器接到請求信號以后,在BS線為“0”的情況下讓計(jì)數(shù)器開始計(jì)數(shù),計(jì)數(shù)值通過一組地址線發(fā)向各設(shè)備。每個設(shè)備接口都有一個設(shè)備地址判別電路,當(dāng)?shù)刂肪€上的計(jì)數(shù)值與請求總線的設(shè)備地址相一致時(shí),該設(shè)備 置“1”BS線,獲得了總線使用權(quán),此時(shí)中止計(jì)數(shù)查詢。
每次計(jì)數(shù)可以從“0”開始,也可以從中止點(diǎn)開始。如果從“0”開始,各設(shè)備的優(yōu)先次序與鏈?zhǔn)讲樵兎ㄏ嗤瑑?yōu)先級的順序是固定的。如果從中止點(diǎn)開始,則每個設(shè)備使用總線的優(yōu)先級相等。
計(jì)數(shù)器的初值也可用程序來設(shè)置,這可以方便地改變優(yōu)先次序,但這種靈活性是以增加線數(shù)為代價(jià)的。
(3)獨(dú)立請求方式
每一個共享總線的設(shè)備均有一對總線請求線BRi和總線授權(quán)線BGi。當(dāng)設(shè)備要求使用總線時(shí),便發(fā)出該設(shè)備的請求信號。中央仲裁器中的排隊(duì)電路決定首先響應(yīng)哪個設(shè)備的請求,給設(shè)備以授權(quán)信號BGi。
獨(dú)立請求方式的優(yōu)點(diǎn):響應(yīng)時(shí)間快,確定優(yōu)先響應(yīng)的設(shè)備所花費(fèi)的時(shí)間少,用不著一個設(shè)備接一個設(shè)備地查詢。其次,對優(yōu)先次序的控制相當(dāng)靈活,可以預(yù)先固定也可以通過程序來改變優(yōu)先次序;還可以用屏蔽(禁止)某個請求的辦法,不響應(yīng)來自無效設(shè)備的請求。
2.分布式仲裁不需要中央仲裁器,每個潛在的主方功能模塊都有自己的仲裁號和仲裁器。當(dāng)它們有總線請求時(shí),把它們唯一的仲裁號發(fā)送到共享的仲裁總線上,每個仲裁器將仲裁總線上得到的號與自己的號進(jìn)行比較。如果仲裁總線上的號大,則它的總線請求不予響應(yīng),并撤消它的仲裁號。最后,獲勝者的仲裁號保留在仲裁總線上。顯然,分布式仲裁是以優(yōu)先級仲裁策略為基礎(chǔ)。
總線仲裁的分配技術(shù)
對總線仲裁問題的解決是以優(yōu)先級(又稱優(yōu)先權(quán))的概念為基礎(chǔ)的,通常有三種總線分配的優(yōu)先級技術(shù)──串聯(lián)、并聯(lián)和循環(huán)。
串聯(lián)優(yōu)先級判別法

?
圖中有Ⅰ、Ⅱ、…、N等N個模塊,都可作為總線主設(shè)備,各個模塊中的“請求”輸出端采用集電極(漏極)開路門,“請求”端用“線或”方式接到仲裁器“請求”輸入端,每個模塊的“忙”端同仲裁器的“總線忙”狀態(tài)線相連,這是一個輸入輸出雙向信號線。當(dāng)一個模塊占有總線控制權(quán)時(shí),該模塊的“忙”信號端成為輸出端,向系統(tǒng)的“忙”狀態(tài)線送出有效信號(例如低電平)。其它模塊的“忙”信號端全部作為輸入端工作,檢測“忙”線上狀態(tài)。一個模塊若要提出總線“請求”,其必要條件是選檢測到“忙”信號輸入端處于無效狀態(tài)。與此相應(yīng),仲裁器接受總線請求輸入的條件,也是“忙”線處于無效狀態(tài)。
進(jìn)一步可以規(guī)定仲裁器輸出“允許”信號的條件首先是“忙”線無效,表示總線沒有被任一模塊占用;其次才是有模塊提出了總線請求?!霸试S”信號在鏈接的模塊之間傳輸,直到提出總線“請求”的那個模塊為止。這里用“允許”信號的邊沿觸發(fā),它把共享總線的各模塊要使用總線時(shí),便發(fā)生信號禁止后面的部件使用總線。通過這種方式,就確定了請求總線各模塊中優(yōu)先級最高的模塊。顯然,在這種方式中,當(dāng)優(yōu)先級高的模塊頻繁請求時(shí),優(yōu)先級別低的模塊可能很長時(shí)間都無法獲得總線。一旦有模塊占用總線后,“允許”信號就不再存在。
并聯(lián)優(yōu)先級別判別法

?
圖中有N個模塊,都可作為總線主設(shè)備,每個模塊都有總線“請求”線和總線“允許”線,模塊之間是獨(dú)立的,沒有任何控制關(guān)系。這些信號接到總線優(yōu)先控制器(仲裁器),任一模塊使用總線,都要通過“請求”線向仲裁器發(fā)出“請求”信號。仲裁器一般由一個優(yōu)先級編碼器和一個譯碼器組成。該電路接到某個模塊或多個模塊發(fā)來的請求信號后,首先優(yōu)先級編碼器進(jìn)行編碼,然后由譯碼器產(chǎn)生相應(yīng)的輸出信號,發(fā)往請求總線模塊中優(yōu)先級最高的模塊,并把“允許”信號送給該模塊。被選中的模塊撤銷總線“請求”信號,輸出總線“忙”信號,通知其余模塊,總線已經(jīng)占用。在一個模塊占用總線的傳輸結(jié)束以后,就把總線“忙”信號撤銷,仲裁器也撤銷“允許”信號。根據(jù)各請求輸入的情況,仲裁器重新分配總線控制權(quán)。
循環(huán)優(yōu)先級判別法
循環(huán)優(yōu)先級判別方法類似于并聯(lián)優(yōu)先級判別方法,只是其中的優(yōu)先級是動態(tài)分配的,原來的優(yōu)先級編碼器由一個更為復(fù)雜的電路代替,該電路把占用總線的優(yōu)先級在發(fā)出總線請求的那些模塊之間循環(huán)移動,從而使每個總線模塊使用總線的機(jī)會相同。
責(zé)任編輯:YYX
電子發(fā)燒友App




















評論