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

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

4 結(jié)束語
作為一種新的總線標準.VICbus仍在發(fā)展之中,目前限于總線驅(qū)動器件的水平,實際上能做到的水平是連接5個相距100米的設(shè)備和24個相距5米的設(shè)備。
VICbus是根據(jù)VME機箱互連的需要而開發(fā)的,但事實上它是一種通用的機箱間電纜總線。另一方面,它用作其他背板型總線與VMEbus的接口總線,也有很好的前景,這方面的應(yīng)用正在開拓之中。
參考文獻
[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