複製鏈接
請複製以下鏈接發送給好友

總線仲裁

鎖定
總線仲裁(bus arbitration),系統中多個設備或模塊可能同時申請對總線的使用權,為避免產生總線衝突,需由總線仲裁機構合理地控制和管理系統中需要佔用總線的申請者,在多個申請者同時提出總線請求時,以一定的優先算法仲裁哪個應獲得對總線的使用權。
中文名
總線仲裁
外文名
bus arbitration
方    式
集中式總線仲裁等
算    法
優先算法仲裁
目    的
避免產生總線衝突

總線仲裁簡介

總線上的設備一般分為總線主設備和總線從設備。總線主設備是指具有控制總線能力的模塊,通常是CPU或以CPU為中心的邏輯模塊,在獲得總線控制權之後能啓動數據信息的傳輸;與之相對應的總線從設備,是指能夠對總線上的數據請求做出響應,但本身不具備總線控制能力的模塊。在早期的計算機系統中,一條總線上只有一個主設備,總線一直由它佔用,技術簡單,實現也比較容易。
隨着應用的發展,主要是工業控制、科學計算的需求,多個主設備共享總線的情況越來越多,這對總線技術提出了新的要求。根據這類系統的特點,需要解決各個主設備之間資源爭用等問題,這使得總線的複雜性大為增加。
總線仲裁就是在多個總線主設備的環境中提出來的。在多處理機系統中,每個處理機都可以作為總線主設備,都要共享資源,它們都必須通過系統總線才能訪問其它資源,總線也可視為是一種重要的公共資源。由於每個處理機都會隨機地提出對總線使用的要求,這樣就可能發生總線競爭現象。為了防止多個處理機同時控制總線,就要在總線上設立一個處理上述總線競爭的機構,按優先級次序,合理地分配資源,這就是總線仲裁問題。用硬件來實現總線分配的邏輯電路稱為總線仲裁器(Bus Arbiter)。它的任務是響應總線請求,通過對分配過程的正確控制,達到最佳使用總線。
總線判優控制按照仲裁控制機構的設置可分為集中控制分散控制兩種。其中就集中控制而言,常用的總線仲裁方式有:菊花鏈仲裁、二維仲裁、同步通信方式、異步通信方式和半同步通信方式。
連接到總線上的功能模塊有主動和被動兩種形態,CPU可以做主方也可以做從方,而存取器模塊只能用作從方。主方可以啓動一個總線週期,而從方只能響應主方的請求。對多個主設備提出的佔用總線請求,一般採用優先級或公平策略進行仲裁 [1] 

總線仲裁仲裁方式分類

按照總線仲裁電路的位置不同,仲裁方式分為集中式仲裁和分佈式仲裁兩類:
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.分佈式仲裁不需要中央仲裁器,每個潛在的主方功能模塊都有自己的仲裁號和仲裁器。當它們有總線請求時,把它們唯一的仲裁號發送到共享的仲裁總線上,每個仲裁器將仲裁總線上得到的號與自己的號進行比較。如果仲裁總線上的號大,則它的總線請求不予響應,並撤消它的仲裁號。最後,獲勝者的仲裁號保留在仲裁總線上。顯然,分佈式仲裁是以優先級仲裁策略為基礎 [2] 

總線仲裁總線分配技術

對總線仲裁問題的解決是以優先級(又稱優先權)的概念為基礎的,通常有三種總線分配的優先級技術──串聯、並聯和循環。

總線仲裁串聯優先級判別法

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

總線仲裁並聯優先級別判別法

圖2 並聯優先級別判別法 圖2 並聯優先級別判別法
圖2中有N個模塊,都可作為總線主設備,每個模塊都有總線“請求”線和總線“允許”線,模塊之間是獨立的,沒有任何控制關係。這些信號接到總線優先控制器(仲裁器),任一模塊使用總線,都要通過“請求”線向仲裁器發出“請求”信號。仲裁器一般由一個優先級編碼器和一個譯碼器組成。該電路接到某個模塊或多個模塊發來的請求信號後,首先優先級編碼器進行編碼,然後由譯碼器產生相應的輸出信號,發往請求總線模塊中優先級最高的模塊,並把“允許”信號送給該模塊。被選中的模塊撤銷總線“請求”信號,輸出總線“忙”信號,通知其餘模塊,總線已經佔用。在一個模塊佔用總線的傳輸結束以後,就把總線“忙”信號撤銷,仲裁器也撤銷“允許”信號。根據各請求輸入的情況,仲裁器重新分配總線控制權。

總線仲裁循環優先級判別法

循環優先級判別方法類似於並聯優先級判別方法,只是其中的優先級是動態分配的,原來的優先級編碼器由一個更為複雜的電路代替,該電路把佔用總線的優先級在發出總線請求的那些模塊之間循環移動,從而使每個總線模塊使用總線的機會相同。
參考資料