摘 要:本文介紹機箱間電纜總線VICbus的標準、應用以及作者在開發VICbus接口模塊所做的工作。
關鍵詞:VICbus,VMEbus,緊耦合多處理機系統
1 引言
用于多處理機系統的高性能背板(backplane)總線VMEbus是計算機領域使用最廣泛的總線之一。隨著多處理機系統的擴大,要求實現多個VMEbus機箱的緊耦合連接。VICbus就是為滿足這一要求而提出的總線標準。它是由歐洲核子中心(CERN)和瑞士CES計算機公司聯合發展的.并在1993年形成國際標準(ISO/IEC 26.11458)。
VICbus雖然是為VMEbus機箱間連接提出的標準,但隨著應用的擴大,它已成為連接各種背板型總線的接口總線。目前已實現VICbus接12的總線有:VMEbus,Sbus(Sun Sparc工作站),NuBus(Macintosh微機),EISAbus(IBM —PC/AT微機),FASTBUS及CAMAC智能機箱控制器。使用相應的VICbus接口模塊(即電路板)即可實現上述各種總線的連接。圖1是用VICbus連接不同總線機箱的一個例子。在VICbus系統中,一個機箱被稱為一個設備,最高可連接31個設備,設備號為1-31,可由接口模塊的面板開關來設定。VICbus系統中,各個設備之間最大工作距離為100米,因而使用VlCbus可以組成“分布式”緊耦合系統。
2 VICbus總線協議
VICbus是32位地址/數據線復用的總線。它使用64對雙絞線組成的扁平電纜。除了一對用作參考地之外,其余63對均為差分信號線。總線按功能劃分,可分為數據傳輸總線DTB、仲裁總線、中斷總線和應用(UTILITY)總線。
2.1 數據傳輸協議
VICbus是32位地址/數據復用總線,每次數據傳輸先后有地址信號周期和數據周期。有二種數據傳輸方式,即異步方式(又稱強迫方式)和同步方式(非強迫方式)。
異步方式的數據傳輸協議,使用WAIT信號作為從設備對主設備的應答信號,在地址選通時(AS)不作應答,僅在數據選通后(DS)才應答。一次地址選通后,在數據周期里可傳輸任意數量、讀寫可以混合的數據,但地址固定不變。從設備可使用內部增址計數器來作塊傳輸。
同步方式的數據傳輸分為二種,一個是所謂NC1協議。主設備在地址信號周期之后就直接進入數據信號周期,無需來自從設備的任何響應。這種方式速度快,但可靠性欠佳,且只能用于由主設備向從設備的“寫”傳輸。另一種同步數據傳輸協議為NC2協議。它以流水線方式使用延遲的從設備WAIT信號來響應主設備。WAIT信號并不用作定時,僅只是供主設備確認傳輸成功而用。這個方式下,一次傳輸可以是讀或者寫。
數據傳輸所用到的信號線為:AD31-AD00,用于地址/數據線;ID4-ID0,用來確定從設備號(0-31);CL3-CL0給出協議類型和數據字節對齊的有關信息。
2.2 總線仲裁
對于電纜型總線,無法使用分布式仲裁,因為那樣做信號傳播時間太長。VICbus采用傳統的總線請求(BR)/總線允許(BG)機制和菊花鏈結構,系統中每一個主設備都具有仲裁器功能,以旋轉仲裁方式工作。一個主設備取得了總線控制權,同時也就取得總線仲裁權。為了實現仲裁器旋轉,菊花鏈中的上游設備必須能得到處在下游的當前仲裁器的BG信號,為此,使用一條BGLOOP信號線,把菊花鏈中最后一個設備的BGOUT端連接到第一個設備的BGIN端,形成BG信號的環路。當系統中同時有幾個設備請求總線時,當前仲裁器把總線控制權(以及仲裁權)交給離它最近的一個發出BR總線請求的設備。
旋轉仲裁方式的好處是,可以降低平均仲裁時間并防止某一個主設備過分地占據總線,同時也可避免單一仲裁器失效導致系統崩潰。
總線里有一個“仲裁鎖住”(ALOCK)信號,當有一個設備動態地加入或退出系統連接時,可以用這個信號暫時禁止總線仲裁。
2.3 中斷
VICbus使用二個125KHZ的時鐘信號(名為INTSEL0和INTSEL1),把32個中斷請求信號(MINT31-MINT0)放在8條中斷線上多路復用。也即,當INTSEL0和INTSEL1是00時,8條中斷線上是MINT0-MINT7信號,當為01時,是MINT8-MINT15信號,為10時,是MINT16-MINT23信號,為11時,是MINT24-MINT31信號。
每個設備只能向系統發一個中斷請求信號,對中斷的響應則是通過專用的“IACK” 型DTB周期。
系統中可以有許多設備都具有INTSEL發生器,但只有一個工作著,它稱為系統控制器。如果當前系統控制器失效,其它設備立即測知,并產生一個ALOCK信號,在AIOCK信號結束時,各個具有INTSEL發生器的設備就啟動自已的計數器,若一個設備計數到等于它的設備號的值時,總線上仍沒有INTSEL信號出現、則這個設備的INTSEL發生器開始工作,成為系統控制器。因此,系統中總是具有最低設備號的設備是系統控制器。
使用多路復用的中斷方式的目的,是為了節省總線信號線的數量。
在VICbus中,發出中斷請求的功能模塊稱為中斷器,接收并處理中斷請求的稱為中斷處理器。當一個設備要中斷另一個設備時,它的中斷器向總線發出中斷請求信號,被指定監測這個中斷請求的中斷處理器可以用各種方法來處理這個中斷,例如使用標志(flag)來產生本地中斷,或者把VICbus傳來的中斷矢量轉送到本機箱的背板總線上去。中斷矢量可以是8位、16位或32位,它是中斷處理器在收到中斷請求后,按IACK型數據,從數據總線上取得的。
3 VICbus接口模塊設計
筆者在瑞士CES公司系統部工作期間,參加了用于VMEbus的VICbus接口模塊VIC8251的基本軟件的開發工作,以下部分對該模塊的結構、工作原理、軟件設計及存在的問題作一個綜合介紹。
3.1 VIC8251模塊的接口功能
VIC8251模塊在功能上可以劃分為許多子模塊,其中與理解接口有關的子模塊主要有以下幾個:VME主模塊,VME從模塊、VIC主模塊、VIC從模塊,VIC內部寄存器模塊、MMU模塊等。圖2示意了VIC8251作為主設備(機箱)接口和作為從設備(機箱)接口的功能。在用作主設備接口時,VIC8251顯一個VME從設備和一個VIC主設備;用作從設備接口時,它是一個VIC從設備和VME主設備。

3.2 VLC8251的資源
圖3為VIC8251寄存器空間的地址映射圖,其中只標出了我們所關心的幾個部分:本模塊的VIC主設備控制/狀態寄存器,全系統31個設備的從設備寄存器組的地址表以及內存管理單元MMU模塊所使用的頁描述字PD0/PD1區。
3.2.1 本模塊的VIC主設備CSR寄存器組
共使用四個Zilog公司的Z-CIO8536芯片。0號和1號芯片被用作主控制/狀態寄存器,用來設置與VIC主設備子模塊有關的各種內容如仲裁、仲裁請求,失效標志、清零等,并用來讀郵箱標志,本地內存(鏡象內存j狀態信息等。2號和3號Z-C108536芯片被用作VIC中斷控制器,把來自VICbus的中斷請求轉換為本地機箱的VME中斷請求。
3.2.2 從設備寄存器地址表
系統中各個設備機箱的VICbus模塊都有一組從設備寄存器(VIC slave CSR )。其中CSR1寄存器包含了該VIC接口模塊的VIC從設備子模塊的控制/狀態信息諸如聯機(on—line),仲裁方式和中斷方式選擇、廣播方式和預取方式設置,長/短電纜方式設置選擇等。還有聯機狀態寄存器OLR和設備失效狀態寄存器DFR,它們給出各個設備聯機/失效狀態。寄存器RR的每一位用來對系統中一個設備復位。
返組VIC從設備子模塊CSR寄存器。只能通過VICbus來存取,即便是本接口模塊的這組寄存器,也必須甩VIC主設備子模塊經由VICbus來對它們設置或讀狀態。
在從設備CSR地址表中,映射了整個系統(0~31號設備)的從設備CSR寄存囂地址、見圖4所示。其中0號設備是用于廣播方式設置用。對于VICbus系統中所有設備均為VME機箱的情況,使用廣播方式可以一次設置全系統的所有從設備的同一種VIC從設備CSR。
3.2.3 頁描述字PD0/PD1
存儲器管理單元MMU使用PD0/PD1來把主設備機箱的VMEbus/VSBbus地址(源地址)轉換為從設備機箱的VMEbus/VSBus地址(目標地址)。
PD0區為2Kx32b超高速存儲器,一個PD0描述字包含有完成一次VIC周期所需的信息如存取方式、鏡象內存位置(本地、遠端或全局的)等。PD1醫為2K×32b雙口存儲器區,一個PD1描述字的內容包含目標機箱設備號,目標地址的A31-A22位,AM碼等。
PD0/PD1的內容是根據需要在初始化時設置好的。主設備機箱的VIC8251接口模塊根據從VMEbus傳來的源地址換算出頁號,然后根據該頁號的PD0/PD1內容,找到目標從設備機號的設備號,并用目標地址高位(A31一A22)代替源地址高位,把它和AM碼等經由VICbus送到該從設備機箱的VMEbus去。
3.2.4 鏡象內存
VIC8251的4M字節的本地內存稱為鏡象內存。它是三口存儲器,可以被VICbus,本地的VMEbus和VSBbus所存取。以4K字節為一頁,每頁均可寫保護。
鏡象內存的概念是當有一個大的數據緩沖區必須被分布在若干VME機箱中的許多處理機共享時提出的。一個CPU對本地鏡象內存寫數據,則這個數據被透明地廣播到VICbus系統的所有設備并且同時寫入它們各自的鏡象內存。一個CPU從鏡象內存中讀數據,則只讀本地鏡象內存。也即,只有寫周期是作用于整個系統的。這樣就節省了總線帶寬。尤其是如果采用同步寫協議(見2.1節)。更可以提高傳輸速率,對于100米距離,可選到10Mbytes/s寫和20Mbytes/s讀的速率。
3.3 中斷機制
實現中斷的方法之一是,遠端機箱的VME中斷請求轉換為與它的設備機箱號相應的VIC中斷請求之后,經VICbus到達本地機箱,本地VIC模塊將它變為指定等級的VME中斷請求傳到本地VME主設備,該VME主設備對本地VIC模塊的VIACK 寄存器作一次讀操作,引發一個中斷響應信號.經轉換后最終成為遠端VME的中斷響應信號VMEIACK,遠端VME再把中斷矢量(STATUS/IC)傳到本地VME主設備,供它讀取。
另一個實現中斷的方法是,預先在本地的VIC模塊的中斷控制器中設置好對1-31號VIC中斷請求的中斷矢量值。本地VIC在收到VIC中斷請求后,向本地VME主設備傳遞了這個中斷請求之后,就把相應矢量值放到本地VMEbus供讀取,同時向遠端VME傳去一個中斷響應信號。這種由本地提供中斷矢量的方法,顯著地縮短了中斷響應等待時間。
3.4 初始化軟件
每一個加入到VICbus系統的設備,都必須對本機箱的VIC接口模塊作復雜的初始化工作,主要是對前面介紹的寄存器空間的各項資源作初始化設置。作初始化工作時,須對以下幾個方面作全系統的安排,以避免沖突:
· 設備號的設定。
· 各設備對其它設備的地址映射關系.也即對于PD0/PD1的設置。
· 各個設備的VIC從設備CSR的設置,既可以由一個設備(通常用作系統控制器)對全系統各個設備作一次性設置,也可以由每個加入系統的設備自己設置本身的VIC從設備CSR,也可以是上述二種方法的結合。
3.5 應用軟件設計的注意事項
由于系統中存在二種總線仲裁機制.因而出現仲裁死鎖問題(dead-lock),見圖5 當本地機箱中取得VME總線控制權的VME主設備申請VIC總線控制權時(VME cycle),如果同時有其它設備經由VICbus申請對這個機箱VME總線控制權時(VIC cycle),就導致死鎖。
當出現死鎖時,VIC8251的仲裁死鎖電路便中止本地VME主設備的請求,在VME總線上發出總線錯(BERR)和重試(RETRY)信號。應用程序應能監測BERR信號和RETRY信號,處理這一死鎖,使自己放棄VME總線控制極,讓來自VICbus的遠端VME主設備控制本地VME總線。直至它使用結束放棄該VME總線之后,才恢復本地VME主設備對VME總線的控制,進而請求VICbus控制權。

4 結束語
作為一種新的總線標準.VICbus仍在發展之中,目前限于總線驅動器件的水平,實際上能做到的水平是連接5個相距100米的設備和24個相距5米的設備。
VICbus是根據VME機箱互連的需要而開發的,但事實上它是一種通用的機箱間電纜總線。另一方面,它用作其他背板型總線與VMEbus的接口總線,也有很好的前景,這方面的應用正在開拓之中。
參考文獻
[1] Vicbus Draft Specification VI l ISO/IEC 26.11458.1989
[align=center]
INTER-CRATE BUS:VICBUS
Liu Songqiang[/align]
(University of Science and Technology of China,Hgfei 230027)
Abstract: An Introduction on the Inter-Crate Bus,i.e.VICbus(ISO/IEC 26.11485)standard,application and design of the bus interface module.
Key words: VIC bus,VMEbus Tightly coupled multiprocessor system
原文請點擊下載機箱間電纜總線VICbus.pdf