系統中多個設備或模塊可能同時申請對總線的使用權,為避免產生總線沖突,需由總線仲裁機構合理地控制和管理系統中需要占用總線的申請者,在多個申請者同時提出總線請求時,以一定的優先算法仲裁哪個應獲得對總線的使用權。
簡介
總線判優控制按照仲裁控制機構的設置可分為集中控制和分散控制兩種。其中就集中控制而言,常用的總線仲裁方式有:菊花鏈仲裁、二維仲裁、同步通信方式、異步通信方式和半同步通信方式。連接到總線上的功能模塊有主動和被動兩種形態,CPU可以做主方也可以做從方,而存取器模塊只能用作從方。主方可以啟動一個總線周期,而從方只能響應主方的請求。對多個主設備提出的占用總線請求,一般采用優先級或公平策略進行仲裁。分類按照總線仲裁電路的位置不同,仲裁方式分為集中式仲裁和分布式仲裁兩類:1.集中式總線仲裁的控制邏輯基本集中在一處,需要中央仲裁器,分為鏈式查詢方式、計數器定時查詢方式、獨立請求方式;(1)鏈式查詢方式鏈式查詢方式的主要特點:總線授權信號BG串行地從一個I/O接口傳送到下一個I/O接口。假如BG到達的接口無總線請求,則繼續往下查詢;假如BG到達的接口有總線請求,BG信號便不再往下查詢,該I/O接口獲得了總線控制權。離中央仲裁器最近的設備具有最高優先級,通過接口的優先級排隊電路來實現。鏈式查詢方式的優點:只用很少幾根線就能按一定優先次序實現總線仲裁,很容易擴充設備。鏈式查詢方式的缺點:對詢問鏈的電路故障很敏感,如果第i個設備的接口中有關鏈的電路有故障,那么第i個以后的設備都不能進行工作。查詢鏈的優先級是固定的,如果優先級高的設備出現頻繁的請求時,優先級較低的設備可能長期不能使用總線。(2)計數器定時查詢方式總線上的任一設備要求使用總線時,通過BR線發出總線請求。中央仲裁器接到請求信號以后,在BS線為“0”的情況下讓計數器開始計數,計數值通過一組地址線發向各設備。每個設備接口都有一個設備地址判別電路,當地址線上的計數值與請求總線的設備地址相一致時,該設備置“1”BS線,獲得了總線使用權,此時中止計數查詢。每次計數可以從“0”開始,也可以從中止點開始。如果從“0”開始,各設備的優先次序與鏈式查詢法相同,優先級的順序是固定的。如果從中止點開始,則每個設備使用總線的優先級相等。計數器的初值也可用程序來設置,這可以方便地改變優先次序,但這種靈活性是以增加線數為代價的。(3)獨立請求方式每一個共享總線的設備均有一對總線請求線BRi和總線授權線BGI。當設備要求使用總線時,便發出該設備的請求信號。中央仲裁器中的排隊電路決定首先響應哪個設備的請求,給設備以授權信號BGi。獨立請求方式的優點:響應時間快,確定優先響應的設備所花費的時間少,用不著一個設備接一個設備地查詢。其次,對優先次序的控制相當靈活,可以預先固定也可以通過程序來改變優先次序;還可以用屏蔽(禁止)某個請求的辦法,不響應來自無效設備的請求。2.分布式仲裁不需要中央仲裁器,每個潛在的主方功能模塊都有自己的仲裁號和仲裁器。當它們有總線請求時,把它們唯一的仲裁號發送到共享的仲裁總線上,每個仲裁器將仲裁總線上得到的號與自己的號進行比較。如果仲裁總線上的號大,則它的總線請求不予響應,并撤消它的仲裁號。最后,獲勝者的仲裁號保留在仲裁總線上。顯然,分布式仲裁是以優先級仲裁策略為基礎。
分配技術
對總線仲裁問題的解決是以優先級(又稱優先權)的概念為基礎的,通常有三種總線分配的優先級技術──串聯、并聯和循環。
串聯優先級判別法
有N個模塊,都可作為總線主設備,各個模塊中的“請求”輸出端采用集電極(漏極)開路門,“請求”端用“線或”方式接到仲裁器“請求”輸入端,每個模塊的“忙”端同仲裁器的“總線忙”狀態線相連,這是一個輸入輸出雙向信號線。當一個模塊占有總線控制權時,該模塊的“忙”信號端成為輸出端,向系統的“忙”狀態線送出有效信號(例如低電平)。其它模塊的“忙”信號端全部作為輸入端工作,檢測“忙”線上狀態。一個模塊若要提出總線“請求”,其必要條件是選檢測到“忙”信號輸入端處于無效狀態。與此相應,仲裁器接受總線請求輸入的條件,也是“忙”線處于無效狀態。
進一步可以規定仲裁器輸出“允許”信號的條件首先是“忙”線無效,表示總線沒有被任一模塊占用;其次才是有模塊提出了總線請求。“允許”信號在鏈接的模塊之間傳輸,直到提出總線“請求”的那個模塊為止。這里用“允許”信號的邊沿觸發,它把共享總線的各模塊要使用總線時,便發生信號禁止后面的部件使用總線。通過這種方式,就確定了請求總線各模塊中優先級最高的模塊。顯然,在這種方式中,當優先級高的模塊頻繁請求時,優先級別低的模塊可能很長時間都無法獲得總線。一旦有模塊占用總線后,“允許”信號就不再存在。
并聯優先級別判別法
有N個模塊,都可作為總線主設備,每個模塊都有總線“請求”線和總線“允許”線,模塊之間是獨立的,沒有任何控制關系。這些信號接到總線優先控制器(仲裁器),任一模塊使用總線,都要通過“請求”線向仲裁器發出“請求”信號。仲裁器一般由一個優先級編碼器和一個編譯器組成。該電路接到某個模塊或多個模塊發來的請求信號后,首先優先級編碼器進行編碼,然后由譯碼器產生相應的輸出信號,發往請求總線模塊中優先級最高的模塊,并把“允許”信號送給該模塊。被選中的模塊撤銷總線“請求”信號,輸出總線“忙”信號,通知其余模塊,總線已經占用。在一個模塊占用總線的傳輸結束以后,就把總線“忙”信號撤銷,仲裁器也撤銷“允許”信號。根據各請求輸入的情況,仲裁器重新分配總線控制權。
循環優先級判別法
循環優先級判別方法類似于并聯優先級判別方法,只是其中的優先級是動態分配的,原來的優先級編碼器由一個更為復雜的電路代替,該電路把占用總線的優先級在發出總線請求的那些模塊之間循環移動,從而使每個總線模塊使用總線的機會相同。
參考資料 >