本站小編為你精心準備了SCI體系對數(shù)據(jù)通信的作用參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。

作者:姜震熊華鋼邵定蓉單位:北京航空航天大學(xué)電子工程系
1、引言
IEEEStd1596-1992ScalableCoherentInterface(sci)可擴展一致性接口[1]是一種專門針對并行計算機系統(tǒng)設(shè)計的,可以提供千兆位互連帶寬和微秒級通信延遲的高性能系統(tǒng)互連技術(shù)。它提供了一種硬件實現(xiàn)的分布式共享存儲(DSM)的并行計算機結(jié)構(gòu),支持硬件的緩存一致性,主要應(yīng)用于高性能并行計算機系統(tǒng)互連,高性能I/O等領(lǐng)域。
SCI技術(shù)來源于傳統(tǒng)總線技術(shù)的固有限制,傳統(tǒng)總線是一種共享介質(zhì)的互連技術(shù),隨著系統(tǒng)中連接節(jié)點的增加,系統(tǒng)性能下降,而SCI提供節(jié)點之間單向、點到點的互連,支持靈活的拓撲:寄存器插入環(huán)、2DMesh、交換式互連等。任何一種互連方式都支持消息的并發(fā)傳輸,從而在一定規(guī)模內(nèi),系統(tǒng)的性能隨網(wǎng)絡(luò)中的節(jié)點數(shù)增多而增加,具有可擴展性。本文主要研究WindowsNT環(huán)境下實現(xiàn)SCI數(shù)據(jù)通信的方法,給出了SCI數(shù)據(jù)通信軟件的設(shè)計。
2SCI協(xié)議概述
SCI協(xié)議包括三個層次:物理層、邏輯層和緩存一致層(可選)。物理層對SCI的鏈路規(guī)范、拓撲方式及網(wǎng)絡(luò)接口等做出了規(guī)定;邏輯層主要定義了SCI的數(shù)據(jù)包格式、邏輯事務(wù)協(xié)議;緩存一致層針對并行計算的分布式共享存儲模型提供硬件緩存一致性的支持,是SCI協(xié)議的可選部分。
SCI可以采用各種靈活的拓撲構(gòu)成互連系統(tǒng),支持多種鏈路形式,其中18-DE-500并行鏈路寬18位,采用差分信號傳輸,每條信號線提供500Mbps的帶寬,其中16位用于數(shù)據(jù)傳輸,因此理論上可提供8Gbps的互連帶寬。基本的拓撲是寄存器插入環(huán),支持消息的并發(fā)傳輸,如圖1所示。SCI節(jié)點在發(fā)送數(shù)據(jù)的同時仍然可以接收數(shù)據(jù)并進行處理,考慮SCI環(huán)中每個節(jié)點都向其下游節(jié)點發(fā)送消息,則圖1中的4節(jié)點SCI環(huán)中可以存在四個獨立的數(shù)據(jù)流,使系統(tǒng)吞吐量達到單條鏈路吞吐量的四倍。SCI網(wǎng)絡(luò)傳輸?shù)幕締挝皇欠?Symbol),每個符號長2個字節(jié)(Byte),SCI使用復(fù)雜的技術(shù)克服了總線技術(shù)/共享介質(zhì)0的固有限制,但是對互連系統(tǒng)應(yīng)用提供了類似總線的服務(wù):讀事務(wù)(ReadXX)、寫事務(wù)(WriteXX)、移動事務(wù)(MoveXX)和鎖定事務(wù)(Lock)等。為使通信較少受到傳輸距離的影響,SCI采用了分離事務(wù)協(xié)議,使CPU在發(fā)出/請求0后不必等待/響應(yīng)0,可以立即進行其它操作。
SCI中每一個事務(wù)都由子操作(Subaction)組成,每個子操作包含兩種消息的傳輸,如圖1中虛線所示,以節(jié)點1向節(jié)點3發(fā)起的Read64事務(wù)為例:(1)節(jié)點1應(yīng)用層發(fā)送請求發(fā)送(RequestSend)消息,向節(jié)點3請求讀64字節(jié)的數(shù)據(jù);(2)節(jié)點3的SCI接口自動返回請求回應(yīng)(RequestEcho),說明請求發(fā)送消息收到;(3)節(jié)點3應(yīng)用層發(fā)送響應(yīng)發(fā)送(ResponseSend)消息,附帶有節(jié)點1請求的64字節(jié)數(shù)據(jù);(4)節(jié)點1的SCI接口自動發(fā)送響應(yīng)回應(yīng)(ResponseEcho)消息,表明收到節(jié)點3的消息,從而完成節(jié)點1向節(jié)點3發(fā)起的Read64事務(wù)。
3WindowsNT4.0環(huán)境下SCI設(shè)備驅(qū)動模型
SCI支持WindowsNT4.0,Windows2000,Solaris,Linux,VxWorks,HP-UX等主流操作系統(tǒng),其中在WindowsNT4.0環(huán)境下的測試性能最好,WindowsNT4.0對硬件的訪問做了嚴格的限制,系統(tǒng)設(shè)計者必須嚴格遵循驅(qū)動程序開發(fā)規(guī)范進行硬件驅(qū)動程序的開發(fā)和使用。目前商用SCI接口適配卡由挪威的Dolphin公司[2]提供,主要基于計算機I/O總線。采用Intel平臺上PCI總線的SCI接口適配卡D330[2]構(gòu)成的SCI通信系統(tǒng)的設(shè)備驅(qū)動模型如圖2所示。D330SCI適配卡支持64位和32位的PCI總線,完成SCI構(gòu)成的DSM系統(tǒng)與SCI節(jié)點機的接口功能,同時實現(xiàn)SCI協(xié)議規(guī)范。SCI采用64位地址,提供整個DSM系統(tǒng)的全局地址空間,其中前16位表示節(jié)點地址,各節(jié)點機PCI總線的64位或32位地址則映射至SCI全局地址的后48位,各節(jié)點機只要對該全局地址空間的某一地址操作,節(jié)點機之間的數(shù)據(jù)傳遞即可由SCI硬件自動實現(xiàn)。Pcisci.sys提供了SCI網(wǎng)絡(luò)的底層驅(qū)動,完成PCI總線設(shè)備的訪問功能,并且將PCI總線事務(wù)映射成為SCI網(wǎng)絡(luò)事務(wù),提供透明的SCI設(shè)備訪問機制。Pcisci.sys中的IRM驅(qū)動函數(shù)提供SCI協(xié)議相關(guān)的功能驅(qū)動。D330適配卡的參數(shù)可以通過調(diào)用IRM驅(qū)動函數(shù)進行更改。一般情況下,系統(tǒng)設(shè)計者不應(yīng)隨意調(diào)用IRM驅(qū)動函數(shù)對D330內(nèi)部參數(shù)進行更改。Sisci.sys提供了SCI網(wǎng)絡(luò)的高層驅(qū)動,它屏蔽了SCI協(xié)議細節(jié),為系統(tǒng)設(shè)計者提供了基于共享內(nèi)存、DMA、遠程中斷等的數(shù)據(jù)通信接口,Sisci.sys在WindowsNT平臺上以同步通信方式工作,異步通信可以結(jié)合多線程技術(shù)實現(xiàn)。
Sisciapi.lib為Win32應(yīng)用程序提供了用戶模式下的接口函數(shù)(SISCIAPI)[3,4],SISCIAPI既支持共享內(nèi)存的編程模式也支持消息傳遞的編程模式。在建立了內(nèi)存映射之后,應(yīng)用程序利用指針就可以實現(xiàn)數(shù)據(jù)在各節(jié)點機之間的傳遞,體現(xiàn)了SCI支持共享內(nèi)存的特點;利用DMA實現(xiàn)數(shù)據(jù)通信,應(yīng)用程序必須負責(zé)數(shù)據(jù)傳輸?shù)娜窟^程,這體現(xiàn)了SCI對傳統(tǒng)的消息傳遞模式的支持。
SCI提供了基于共享內(nèi)存和DMA的兩種同步數(shù)據(jù)通信方式,通信采用面向連接的方式,利用中斷實現(xiàn)通信雙方節(jié)點的事件通知,下面的討論中我們稱發(fā)送數(shù)據(jù)的節(jié)點為Client,接收數(shù)據(jù)的節(jié)點為Server。
3.1共享內(nèi)存方式
共享內(nèi)存是一種針對小規(guī)模數(shù)據(jù)傳輸?shù)腜rogramm-bleI/O(PIO)通信方式,SCI使用段(Segment)的概念將本地內(nèi)存映射成本地段localsegmentt,將遠端內(nèi)存映射成遠程段remotesegmentt,Server建立localsegmentt類型的變量使得本地內(nèi)存可以為其它節(jié)點訪問;Client建立remotesegmentt類型的變量使得訪問其它節(jié)點上的內(nèi)存資源成為可能。通信雙方將各自的本地內(nèi)存映射到SCI全局地址空間之后,依靠設(shè)定的內(nèi)存標志完成數(shù)據(jù)通信。在圖3中,Client節(jié)點和Server節(jié)點分別聲明localsegmentt的變量localsegC和localsegS,利用這兩個變量建立本地內(nèi)存在SCI全局地址空間的內(nèi)存映像,然后Client節(jié)點聲明remotesegmentt的變量remotesegS用于連接Server節(jié)點在SCI全局地址空間的內(nèi)存段,從而建立了各個節(jié)點在SCI全局地址空間中的內(nèi)存映射關(guān)系。Server節(jié)點使用SCICreateSegment()申請本地內(nèi)存,創(chuàng)建localsegS,指定該段標志8,然后調(diào)用SCIMapLo-calSegment()返回本地指針供Server節(jié)點中的進程訪問,調(diào)用SCIPrepareSegment()將申請到本地內(nèi)存的localsegS映射到SCI全局地址空間;SCISetSegmentAvailable()則使該localsegS為SCI網(wǎng)絡(luò)中的所有節(jié)點機可見。
Client節(jié)點設(shè)定本地段localsegC的過程同上,欲完成向Server節(jié)點發(fā)送數(shù)據(jù),Client節(jié)點必須調(diào)用SCI-ConnectSegment()與Server節(jié)點建立連接,將Server本地內(nèi)存在全局地址空間中的映像映射到remotesegS,然后利用SCIMapRemoteSegment()返回屬于Client進程的本地指針供訪問Server節(jié)點時使用,連接建立之后就可以使用返回的內(nèi)存指針或SCIMemCopy(本地指針,remotesegS)函數(shù)進行數(shù)據(jù)傳輸了。
3.2DMA方式
當(dāng)進行大量的數(shù)據(jù)傳輸時,DMA數(shù)據(jù)傳輸方式可以充分利用帶寬資源提高吞吐量。由于采用DMA方式時,存在DMA隊列的建立、管理等通信開銷,所以與共享內(nèi)存方式相比,DMA方式的通信延遲略有增加。使用DMA方式,應(yīng)用程序要創(chuàng)建DMA隊列,將數(shù)據(jù)放入DMA隊列,啟動DMA隊列,查詢DMA隊列的狀態(tài)等,應(yīng)用程序必須負責(zé)數(shù)據(jù)傳送的整個過程。DMA方式的通信仍然建立在段(Segment)概念的基礎(chǔ)之上,在編程方面與共享內(nèi)存方式的區(qū)別主要體現(xiàn)在Client節(jié)點,具體過程如下:
(1)創(chuàng)建本地段,SCICreateSegment(&localsegC);(2)映射本地段,返回本地數(shù)據(jù)指針(void*)SCIMapLocalSegment(&localmapC);
(3)將本地段映射至SCI全局地址空間,SCIPrepare-Segment(localsegC);
(4)創(chuàng)建DMA隊列,SCICreateDMAQueue(&dmaqueue);(5)連接Server節(jié)點本地段,SCIConnectSegment(&remotesegS);
(6)利用本地數(shù)據(jù)指針完成本地數(shù)據(jù)載入;
(7)將數(shù)據(jù)發(fā)送到DMA隊列,SCIEnqueueDMATransfer(dmaqueue,localsegC,remotesegS);
(8)啟動DMA傳輸,SCIPostDMAQueue(dmaqueue);
(9)等待DMA傳輸完畢,SCIWaitForDMAQueue(dmaqueue);
(10)確認DMA傳輸正常完成,SCIDMAQueueState(dmaqueue);
(11)刪除DMA隊列,SCIRemoveDMAQueue(dmaqueue)。從上述過程可見,DMA方式適合較大量數(shù)據(jù)的傳輸,而不適合少量數(shù)據(jù)的傳輸,否則不能充分利用DMA方式具有的一次傳送大量數(shù)據(jù)的優(yōu)點。
3.3中斷方式
要完成通信雙方的數(shù)據(jù)傳遞,通信過程中必須進行協(xié)調(diào),SCI提供了中斷方式專門用于實現(xiàn)SCI節(jié)點間的事件通知。與上述兩種數(shù)據(jù)方式相同,中斷分為本地中斷(localinterruptt)和遠程中斷(remoteinterruptt)。遠程中斷是Server節(jié)點;本地中斷在Client節(jié)點的映像。中斷也是面向連接的,使用前必須建立連接;不同的是,中斷方式并不傳送任何數(shù)據(jù),它只是作為事先定義好的某種事件(利用中斷標志)的通知手段,使用中斷完成通信協(xié)調(diào)的過程如圖4所示。
4SCI數(shù)據(jù)通信軟件的設(shè)計
上面我們詳細討論了SCI數(shù)據(jù)通信的幾種方法,最后結(jié)合我們開發(fā)的SCI通信延遲測試系統(tǒng)的負載注入軟件,說明SCI數(shù)據(jù)通信軟件的設(shè)計過程。SCI負載注入軟件是根據(jù)各個節(jié)點的通信表文件,向SCI網(wǎng)絡(luò)中注入數(shù)據(jù)流,設(shè)定網(wǎng)絡(luò)負載,同時配合網(wǎng)絡(luò)端端延遲測試儀測定特點消息的傳輸延遲,從而實現(xiàn)對SCI網(wǎng)絡(luò)通信性能細節(jié)的把握。通信表指定了數(shù)據(jù)流源節(jié)點、目的節(jié)點、長度以及更新速率等參數(shù)。
測試系統(tǒng)要求在四個SCI節(jié)點之間根據(jù)通信表的設(shè)定發(fā)送和接收數(shù)據(jù)流,我們的軟件設(shè)計采用共享內(nèi)存的發(fā)送方式,利用多線程技術(shù),配合SCI的中斷完成數(shù)據(jù)的接收。為了降低通信開銷,在程序的開始,首先建立四個節(jié)點之間的單向網(wǎng)狀虛擬數(shù)據(jù)通道(即兩兩節(jié)點之間建立內(nèi)存段與中斷的映射關(guān)系),然后利用虛擬數(shù)據(jù)通道完成消息流的發(fā)送和接收,實際測試表明軟件運行正常。軟件發(fā)送消息和接收消息的處理流程如圖5所示。
綜上所述,由于SCI目前只提供了同步通信方式的支持,實際應(yīng)用中,可以利用WindowsNT的多線程技術(shù)結(jié)合SCI的中斷方式實現(xiàn)異步通信:針對各個節(jié)點建立監(jiān)聽線程,線程中等待相應(yīng)節(jié)點的中斷事件的發(fā)生,如果Client節(jié)點觸發(fā)中斷,則說明對應(yīng)的消息已經(jīng)發(fā)送到Server節(jié)點的本地內(nèi)存。對于具有多個節(jié)點的數(shù)據(jù)通信軟件,應(yīng)該事先建立各個節(jié)點的虛擬數(shù)據(jù)通道:在軟件初始化階段,建立本地內(nèi)存段和遠程內(nèi)存段、本地中斷和遠程中斷之間的連接關(guān)系。