欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Pci-e總線分布式系統(tǒng)單板內(nèi)及單板間數(shù)據(jù)通訊方法

文檔序號:7651970閱讀:301來源:國知局
專利名稱:Pci-e總線分布式系統(tǒng)單板內(nèi)及單板間數(shù)據(jù)通訊方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)通訊方法,特別是指一種PCI-E(PeripheralComponent Interconnect Express,即高速外圍組件互連)總線分布式系統(tǒng)單板內(nèi)及單板間數(shù)據(jù)通訊方法。
背景技術(shù)
在嵌入式通信領(lǐng)域中,高集成度和低成本日益成為設(shè)備制造商追求的目標(biāo)。一個現(xiàn)代分布式通信系統(tǒng)中,通過不同的處理器實(shí)現(xiàn)不同的功能,通過這些處理器的分工協(xié)作來完成設(shè)計(jì)者實(shí)現(xiàn)整個系統(tǒng)功能的目的。
處理器之間如何實(shí)現(xiàn)高效的通信,歷來是業(yè)界非常重視的問題?,F(xiàn)有的基于以太網(wǎng)的通信方式,雖然提供了處理器間大流量通信的解決方案,但成本較高,且不利于空間壓縮?,F(xiàn)有基于傳統(tǒng)PCI(Peripheral ComponentInterconnect,即外圍組件互連)接口標(biāo)準(zhǔn)的通信方式,由于總線資源共享的限制,只能有限提高單板的集成度,而且數(shù)據(jù)傳輸速率較慢,擴(kuò)展性不強(qiáng)。
第三代總線技術(shù)規(guī)格PCI Express(簡稱為PCI-E)給IT硬件的發(fā)展提供一種高性能的總線平臺。PCI Express是最新的總線和接口標(biāo)準(zhǔn),它原來的名稱為“3GIO”,是由英特爾提出的,很明顯英特爾的意思是它代表著下一代I/O接口標(biāo)準(zhǔn)。交由PCI-SIG(PCI特殊興趣組織)認(rèn)證發(fā)布后才改名為“PCI Express”。這個新標(biāo)準(zhǔn)將全面取代現(xiàn)行的PCI和AGP,最終實(shí)現(xiàn)總線標(biāo)準(zhǔn)的統(tǒng)一。
首先,PCI Express最大的優(yōu)勢就在于帶寬的增加和靈活的擴(kuò)展性能。與PCI所有設(shè)備共享同一條總線資源不同,PCI Express總線采用點(diǎn)對點(diǎn)技術(shù),能夠?yàn)槊恳粔K設(shè)備分配獨(dú)享通道帶寬,不需要在設(shè)備之間共享帶寬,充分保障各設(shè)備的帶寬資源,提高數(shù)據(jù)傳輸速率。其次PCI Express還具有靈活的擴(kuò)展性、熱插拔、多點(diǎn)虛擬通道、錯誤處理和錯誤報告等等優(yōu)勢。
對于分布式系統(tǒng),對系統(tǒng)內(nèi)各單元的分工協(xié)作要求較高,上層應(yīng)用必須工作在可靠的傳輸層通信協(xié)議之上?,F(xiàn)有的使用基于可靠網(wǎng)絡(luò)MAC幀的傳輸層協(xié)議(Reliable Mac Protocol,以下簡稱RMP)進(jìn)行通信,主要應(yīng)用于網(wǎng)絡(luò)拓?fù)浜唵蔚木钟蚓W(wǎng)中,上層發(fā)送/接收的都是一條完整的數(shù)據(jù)包,無須標(biāo)準(zhǔn)IP協(xié)議的ARP解析和路由轉(zhuǎn)發(fā)功能。RMP協(xié)議負(fù)責(zé)建立端到端的通信連接,實(shí)現(xiàn)并包、按序發(fā)送、超時重傳、分片重組、鏈路維護(hù)的功能。該協(xié)議主要應(yīng)用于網(wǎng)絡(luò)數(shù)據(jù)傳輸。
現(xiàn)有的PCI Express總線結(jié)構(gòu)如圖1所示,在單板內(nèi)部多個處理器之間通過PCI Express總線連接。單板上只有一個處理器(主處理器)對外出千兆網(wǎng)口,負(fù)責(zé)對外通信;單板上其它處理器要對外通信,必須通過主處理器的轉(zhuǎn)發(fā)才能完成。
在不同通信網(wǎng)絡(luò)中實(shí)現(xiàn)跨網(wǎng)絡(luò)通信的一般方法,是采用路由技術(shù),通過在不同網(wǎng)絡(luò)的兩臺主機(jī)之間設(shè)置相關(guān)的路由來完成。該方法的缺點(diǎn)是不同網(wǎng)絡(luò)上的主機(jī)必須清楚其他主機(jī)通信網(wǎng)絡(luò)組網(wǎng)的細(xì)節(jié),不能方便的進(jìn)行擴(kuò)展。
現(xiàn)有的基于PCI-E總線的分布式存儲系統(tǒng),基于共享內(nèi)存通信的一般方法,是在驅(qū)動中構(gòu)造發(fā)送和接收兩個環(huán)行隊(duì)列管理緩存,在發(fā)送和接收中使用多次直接的內(nèi)存拷貝方式實(shí)現(xiàn)數(shù)據(jù)傳輸,非常消耗CPU的資源,效率低下。

發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中的缺陷和不足,本發(fā)明的目的是提出一種基于PCI-E總線分布式系統(tǒng)板內(nèi)及板間數(shù)據(jù)通訊方法,包括基于PCI-E總線分布式系統(tǒng)板內(nèi)數(shù)據(jù)發(fā)送方法、基于PCI-E總線分布式系統(tǒng)板內(nèi)數(shù)據(jù)接收方法以及基于PCI-E總線分布式系統(tǒng)板間數(shù)據(jù)通信方法,能夠在降低拷貝次數(shù)或?qū)崿F(xiàn)0拷貝通信,降低CPU開銷,提高處理器間的通訊能力。
為了達(dá)到上述目的,本發(fā)明提出了一種PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)發(fā)送方法,包括步驟1、為單板上每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟2、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E總線的處理器的個數(shù);每一通道具有一環(huán)形隊(duì)列作為數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,該數(shù)據(jù)緩沖描述符中至少包括了其對應(yīng)的共享內(nèi)存區(qū)的數(shù)據(jù)緩沖的地址和下一個數(shù)據(jù)緩沖的地址;為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟3、當(dāng)發(fā)送數(shù)據(jù)時,先確定目的處理器的標(biāo)識,并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列第一個空閑共享內(nèi)存區(qū);步驟4、將待發(fā)送數(shù)據(jù)存儲在該空閑共享內(nèi)存區(qū);步驟5、將該空閑共享內(nèi)存區(qū)標(biāo)識為已用,并將控制頭地址字段移動到下一可用空閑共享內(nèi)存區(qū)。
其中,所述步驟3具體為步驟31、當(dāng)發(fā)送數(shù)據(jù)時,確定目的處理器的標(biāo)識;步驟32、并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列;步驟33、判斷該數(shù)據(jù)接收隊(duì)列是否有空閑的共享內(nèi)存區(qū),如果是則進(jìn)入步驟34;否則丟棄該數(shù)據(jù),并返回錯誤信息;步驟34、判斷空閑的共享內(nèi)存區(qū)的數(shù)量是否為1個,如果是則丟棄該數(shù)據(jù),并返回錯誤信息;否則進(jìn)入步驟4。
其中,所述步驟4具體為將待發(fā)送數(shù)據(jù)直接拷貝或通過直接內(nèi)存存儲控制器傳輸?shù)缴鲜隹臻e的共享內(nèi)存區(qū)。
同時,本發(fā)明還提出了一種PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)接收方法,包括步驟A、為單板上每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟B、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E總線的處理器的個數(shù);每一通道具有一環(huán)形隊(duì)列作為數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,并為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟C、當(dāng)接收數(shù)據(jù)時,根據(jù)當(dāng)前數(shù)據(jù)流量采用中斷或定時的方式喚醒一驅(qū)動線程;步驟D、該驅(qū)動線程將帶有數(shù)據(jù)的共享內(nèi)存區(qū)從環(huán)行隊(duì)列中摘除;步驟E、將上述有數(shù)據(jù)的共享內(nèi)存區(qū)提交上層協(xié)議棧處理;處理完畢后歸還該共享內(nèi)存區(qū)。
其中,上述步驟D還包括該驅(qū)動線程申請新的空閑共享內(nèi)存區(qū),并用新的空閑共享內(nèi)存區(qū)取代環(huán)行隊(duì)列中有數(shù)據(jù)的共享內(nèi)存區(qū)的位置。
同時,本發(fā)明還提出了一種PCI-E總線分布式系統(tǒng)單板間數(shù)據(jù)通訊方法,包括步驟(1)、為每一單板上的每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟(2)、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E總線的處理器的個數(shù);每一通道具有一環(huán)形隊(duì)列作為數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,該數(shù)據(jù)緩沖描述符中至少包括了其對應(yīng)的共享內(nèi)存區(qū)的數(shù)據(jù)緩沖的地址和下一個數(shù)據(jù)緩沖的地址;為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟(3)、將單板上每一從處理器及外部網(wǎng)口配置IP地址,從處理器IP地址網(wǎng)段為該單板的外部網(wǎng)口的IP地址網(wǎng)段的子集,且外部網(wǎng)口IP地址不屬于從處理器IP地址網(wǎng)段;將每一單板上的主處理器作為該單板內(nèi)從處理器對外通信的網(wǎng)關(guān);步驟(4)、主處理器加載ARP代理服務(wù),響應(yīng)外部網(wǎng)絡(luò)向從處理器發(fā)出的ARP解析請求。
其中,所述步驟(3)具體為步驟(31)、將單板上每一從處理器及外部網(wǎng)口配置IP地址,從處理器IP地址網(wǎng)段為該單板的外部網(wǎng)口的IP地址網(wǎng)段的子集,且外部網(wǎng)口IP地址不屬于從處理器IP地址網(wǎng)段;步驟(32)、從處理器啟動時,建立PCI-E通信通道,主動向主處理器請求配置,獲取主處理器的內(nèi)部網(wǎng)口IP地址,并將該IP地址設(shè)置為向外部網(wǎng)絡(luò)通信的默認(rèn)網(wǎng)關(guān);
步驟(33)、從處理器啟動后,主動將自己的內(nèi)部PCI-E虛擬網(wǎng)口IP地址通知主處理器。
其中,該方法可以包括步驟(5)、當(dāng)向單板上的從處理器發(fā)送數(shù)據(jù)時,由于單板主處理器上加載了ARP代理,外部網(wǎng)絡(luò)認(rèn)為該單板的外部網(wǎng)口即為從處理器的實(shí)際網(wǎng)口,將該數(shù)據(jù)發(fā)送到該單板的外部網(wǎng)口;步驟(6)、該單板的主處理器讀取路由表并確定路由后將數(shù)據(jù)轉(zhuǎn)發(fā)到單板內(nèi)部網(wǎng)口,并將目的IP地址解析為目的MAC地址,并根據(jù)目的MAC地址確定目的從處理器的標(biāo)識;步驟(7)、根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的從處理器的數(shù)據(jù)接收隊(duì)列第一個空閑共享內(nèi)存區(qū);步驟(8)、將待發(fā)送數(shù)據(jù)存儲在該空閑共享內(nèi)存區(qū);步驟(9)、將該空閑共享內(nèi)存區(qū)標(biāo)識為已用,并將控制頭地址字段移動到下一可用空閑共享內(nèi)存區(qū)。
其中,上述步驟(7)具體為步驟(71)、當(dāng)發(fā)送數(shù)據(jù)時,確定目的處理器的標(biāo)識;步驟(72)、并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列;步驟(73)、判斷該數(shù)據(jù)接收隊(duì)列是否有空閑的共享內(nèi)存區(qū),如果是則進(jìn)入步驟(74);否則丟棄該數(shù)據(jù),并返回錯誤信息;步驟(74)、判斷空閑的共享內(nèi)存區(qū)的數(shù)量是否為1個,如果是則丟棄該數(shù)據(jù),并返回錯誤信息;否則進(jìn)入步驟(8)。
其中,該方法也可以包括
步驟(5`)當(dāng)從處理器接收數(shù)據(jù)時,根據(jù)當(dāng)前數(shù)據(jù)流量采用中斷或定時的方式喚醒一驅(qū)動線程;步驟(6`)、該驅(qū)動線程將帶有數(shù)據(jù)的共享內(nèi)存區(qū)從環(huán)行隊(duì)列中摘除;步驟(7`)、將上述有數(shù)據(jù)的共享內(nèi)存區(qū)提交上層協(xié)議棧處理;處理完畢后歸還該共享內(nèi)存區(qū)。
本發(fā)明提出了一種PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)發(fā)送方法和接收方法以及單板間數(shù)據(jù)通信方法?,F(xiàn)有技術(shù)中,在發(fā)送和接收中使用多次直接的內(nèi)存拷貝方式實(shí)現(xiàn)數(shù)據(jù)傳輸,非常消耗CPU的資源,效率低下。本發(fā)明提出的單板內(nèi)的接收和發(fā)送的整個數(shù)據(jù)傳輸過程僅僅只經(jīng)歷了一次內(nèi)存拷貝,如果采用DMA(Direct Memory Access,直接內(nèi)存存取)技術(shù)甚至可以實(shí)現(xiàn)無內(nèi)存拷貝,可以充分發(fā)揮PCI Express總線高效的共享內(nèi)存通信的優(yōu)勢。其中該數(shù)據(jù)接收方法能夠?qū)崿F(xiàn)0拷貝接收。發(fā)送/接收的操作是完全獨(dú)立的,由于在設(shè)計(jì)中采用PCI Express總線共享內(nèi)存的單環(huán)行隊(duì)列設(shè)計(jì),實(shí)現(xiàn)了PCI Express驅(qū)動發(fā)送緩存、PCI Express驅(qū)動接收緩存和虛擬網(wǎng)絡(luò)上層協(xié)議棧緩存三者的復(fù)用,在數(shù)據(jù)傳送中減少了多余的內(nèi)存拷貝,有利于充分發(fā)揮PCI Express總線的高帶寬優(yōu)勢,提高了處理器間的通訊能力。
同時本發(fā)明還提出了一種單板之間數(shù)據(jù)通訊的方法,對內(nèi)采用了上述的單板內(nèi)數(shù)據(jù)發(fā)送和接收方法,提供特殊通信通道滿足內(nèi)部處理器之間高速通信;對外網(wǎng)絡(luò)設(shè)計(jì)中采用了代理ARP技術(shù),對外部主機(jī)看來單板內(nèi)各處理單元如同連接在本地局域網(wǎng)中,屏蔽了單板內(nèi)部PCI Express通信的差異,可以方便在外部網(wǎng)絡(luò)對單板內(nèi)各處理單元進(jìn)行監(jiān)控,調(diào)試和配置管理。
本發(fā)明可以將分布式系統(tǒng)的全部功能集成到一塊或少量幾塊單板上,例如在電信領(lǐng)域中可以使用一塊單板集成原先多塊單板甚至一個網(wǎng)元的功能,通過節(jié)省單板對外千兆網(wǎng)口的數(shù)量,可以有效降低設(shè)備制造商的生產(chǎn)成本,而且該方法對業(yè)務(wù)(上層軟件)沒有影響,現(xiàn)有的所有上層軟件都可以平穩(wěn)移植。
下面結(jié)合附圖,對本發(fā)明的具體實(shí)施方式
作進(jìn)一步的詳細(xì)說明。對于所屬技術(shù)領(lǐng)域的技術(shù)人員而言,從對本發(fā)明的詳細(xì)說明中,本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)將顯而易見。


圖1是現(xiàn)有的基于PCI Express通信系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明方法中一條基于PCI Express的物理通道設(shè)計(jì)圖;圖3是本發(fā)明方法中基于PCI Express共享內(nèi)存通信消息結(jié)構(gòu)圖;圖4顯示了本發(fā)明中單板內(nèi)通信的協(xié)議處理框圖;圖5是本發(fā)明中板間通信的網(wǎng)絡(luò)配置圖;圖6是本發(fā)明中板間通信初始化流程圖。
具體實(shí)施例方式
下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)的說明。
實(shí)現(xiàn)本發(fā)明的硬件結(jié)構(gòu)如圖1所示,屬于現(xiàn)有技術(shù),單板內(nèi)部處理器之間通過PCI Express總線連接。單板上只有一個處理器(主處理器)對外出千兆網(wǎng)口,負(fù)責(zé)單板對外網(wǎng)絡(luò)的通信,單板上其它從處理器對外通信,都必須經(jīng)過主處理器的轉(zhuǎn)發(fā)。
本發(fā)明提出的一種PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)發(fā)送方法和數(shù)據(jù)接收方法的優(yōu)選實(shí)施例如圖2所示,采用一個環(huán)形隊(duì)列作為接收隊(duì)列。
其中,本發(fā)明提出的一種基于PCI-E總線分布式系統(tǒng)的數(shù)據(jù)發(fā)送方法包括
步驟1、為單板上每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟2、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E總線的處理器的個數(shù);每一通道具有一環(huán)形隊(duì)列作為數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,該數(shù)據(jù)緩沖描述符的結(jié)構(gòu)可以如圖3所示,包括了其對應(yīng)的共享內(nèi)存區(qū)的數(shù)據(jù)緩沖的地址和下一個數(shù)據(jù)緩沖的地址以及消息長度和消息地址;為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟3、當(dāng)發(fā)送數(shù)據(jù)時,先確定目的處理器的標(biāo)識,并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列第一個空閑共享內(nèi)存區(qū);步驟4、將待發(fā)送數(shù)據(jù)存儲在該空閑共享內(nèi)存區(qū);步驟5、將該空閑共享內(nèi)存區(qū)標(biāo)識為已用,并將控制頭地址字段移動到下一可用空閑共享內(nèi)存區(qū)。
需要注意,發(fā)送/接收的操作是完全獨(dú)立的,但只有接收有共享內(nèi)存區(qū)作為緩存,為了保證環(huán)行隊(duì)列操作的正確性,發(fā)送在判斷是否有空閑共享內(nèi)存區(qū)時,需要保留一個共享內(nèi)存區(qū)作為臨界區(qū)。因此,所述步驟3具體為步驟31、當(dāng)發(fā)送數(shù)據(jù)時,確定目的處理器的標(biāo)識;步驟32、并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列;步驟33、判斷該數(shù)據(jù)接收隊(duì)列是否有空閑的共享內(nèi)存區(qū),如果是則進(jìn)入步驟34;否則丟棄該數(shù)據(jù),并返回錯誤信息;
步驟34、判斷空閑的共享內(nèi)存區(qū)的數(shù)量是否為1個,如果是則丟棄該數(shù)據(jù),并返回錯誤信息;否則進(jìn)入步驟4。
其中,數(shù)據(jù)拷貝的方式可以是將待發(fā)送數(shù)據(jù)直接拷貝或通過直接內(nèi)存存儲控制器傳輸?shù)缴鲜隹臻e的共享內(nèi)存區(qū)。
本發(fā)明提出的一種PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)接收方法的優(yōu)選實(shí)施例中包括步驟A、為單板上每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟B、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E總線的處理器的個數(shù);為每一通道具有一數(shù)據(jù)接收隊(duì)列,每個環(huán)行隊(duì)列由PCI-E通信的共享內(nèi)存區(qū)組成,并為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟C、當(dāng)接收數(shù)據(jù)時,根據(jù)當(dāng)前數(shù)據(jù)流量采用中斷或定時的方式喚醒一驅(qū)動線程;步驟D、該驅(qū)動線程將帶有數(shù)據(jù)的共享內(nèi)存區(qū)從環(huán)行隊(duì)列中摘除;步驟E、將上述有數(shù)據(jù)的共享內(nèi)存區(qū)提交上層協(xié)議棧處理;處理完畢后歸還該共享內(nèi)存區(qū)。
其中,上述步驟D還包括該驅(qū)動線程申請新的空閑共享內(nèi)存區(qū),并用新的空閑共享內(nèi)存區(qū)取代環(huán)行隊(duì)列中有數(shù)據(jù)的共享內(nèi)存區(qū)的位置。
需要注意,驅(qū)動提供的網(wǎng)絡(luò)設(shè)備接口是與操作系統(tǒng)網(wǎng)絡(luò)部分相關(guān)的,必須注意不同操作系統(tǒng)對網(wǎng)絡(luò)設(shè)備接口的差異,提供不同的接口給上層協(xié)議棧。
還需要注意,單板內(nèi)部各處理器都支持標(biāo)準(zhǔn)TCP/IP協(xié)議簇和RMP協(xié)議,底層設(shè)備接口使用上述步驟提供的標(biāo)準(zhǔn)網(wǎng)絡(luò)設(shè)備接口,使單板內(nèi)處理器工作在基于PCI Express的虛擬網(wǎng)絡(luò)之上,可以以各種網(wǎng)絡(luò)協(xié)議進(jìn)行通信。如附圖4所示,可以在板內(nèi)處理器間通信時默認(rèn)采用標(biāo)準(zhǔn)協(xié)議,在通信握手時根據(jù)具體物理通道協(xié)商采用哪種上層協(xié)議,當(dāng)兩個通信的處理器處于一個單板內(nèi)且有PCI Express通道,則建立RMP通信鏈路,數(shù)據(jù)內(nèi)容以特定的二層的網(wǎng)絡(luò)幀類型在驅(qū)動中加以區(qū)分,和標(biāo)準(zhǔn)的協(xié)議數(shù)據(jù)不同,主要承載上層的業(yè)務(wù)單播消息。通過RMP協(xié)議實(shí)現(xiàn)進(jìn)一步提高性能和可靠性。對多播,單板間通信以及其他方式的網(wǎng)絡(luò)通信,按標(biāo)準(zhǔn)的TCP/IP網(wǎng)絡(luò)協(xié)議進(jìn)行處理。
本發(fā)明提出的基于PCI-E總線的分布式系統(tǒng)單板之間的數(shù)據(jù)通訊方法,實(shí)現(xiàn)的硬件結(jié)構(gòu)如圖5所示,每一單板只有一個對外通信的外部網(wǎng)口。每一處理器配置IP地址,其中每一單板的外部網(wǎng)口的IP地址與單板內(nèi)所有處理器的IP地址不屬于同一子網(wǎng),且主處理器與該單板上的其他從處理器的IP地址屬于同一子網(wǎng)。
本發(fā)明提出的基于PCI-E總線的分布式系統(tǒng)單板之間的數(shù)據(jù)通訊方法中,對內(nèi)采用了上述的單板內(nèi)數(shù)據(jù)發(fā)送和接收方法,提供特殊通信通道滿足內(nèi)部處理器之間高速通信;對外網(wǎng)絡(luò)設(shè)計(jì)中采用了代理ARP技術(shù),對外部主機(jī)看來單板內(nèi)各處理單元如同連接在本地局域網(wǎng)中,屏蔽了單板內(nèi)部PCI Express通信的差異。
本發(fā)明提出的基于PCI-E總線的分布式系統(tǒng)單板之間的數(shù)據(jù)通訊方法優(yōu)選實(shí)施例包括
步驟(1)、為每一單板上的每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟(2)、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E總線的處理器的個數(shù);為每一通道具有一數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,該數(shù)據(jù)緩沖描述符中至少包括了其對應(yīng)的共享內(nèi)存區(qū)的數(shù)據(jù)緩沖的地址和下一個數(shù)據(jù)緩沖的地址;為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟(3)、將單板上每一從處理器及外部網(wǎng)口配置IP地址,從處理器IP地址網(wǎng)段為該單板的外部網(wǎng)口的IP地址網(wǎng)段的子集,且外部網(wǎng)口IP地址不屬于從處理器IP地址網(wǎng)段;將每一單板上的主處理器作為該單板內(nèi)從處理器對外通信的網(wǎng)關(guān);例如,單板外部網(wǎng)口IP地址的通信子網(wǎng)為A,單板內(nèi)部處理器的IP地址的通信子網(wǎng)為B,則A網(wǎng)段包括B網(wǎng)段地址,B網(wǎng)段只是A網(wǎng)段的一個子集,且A和B不沖突;舉例假設(shè)A網(wǎng)段為192.168.X.X網(wǎng)段,B網(wǎng)段為192.168.255.X網(wǎng)段,但A中不能配置B子網(wǎng)的IP地址;步驟(4)、主處理器加載ARP服務(wù),響應(yīng)ARP解析請求。
其中,上述步驟3可以在單板啟動的時候可以采用如圖6所示的流程完成配置,具體步驟為步驟(31)、單板啟動時主處理器先啟動,主處理器建立PCI-E通信通道;配置單板的外部網(wǎng)口的IP地址和內(nèi)部虛擬網(wǎng)口IP地址和從處理器IP地址;將單板上每一從處理器及外部網(wǎng)口配置IP地址,從處理器IP地址網(wǎng)段為該單板的外部網(wǎng)口的IP地址網(wǎng)段的子集,且外部網(wǎng)口IP地址不屬于從處理器IP地址網(wǎng)段;
步驟(32)、從處理器啟動時,建立PCI-E通信通道;步驟(33)、從處理器通過PCI-E通訊主動向主處理器請求配置,獲取主處理器的內(nèi)部網(wǎng)口IP地址;步驟(34)、從處理器將該IP地址設(shè)置為向外部網(wǎng)絡(luò)通信的默認(rèn)網(wǎng)關(guān);步驟(35)、從處理器通過虛擬網(wǎng)口,主動將自己的內(nèi)部PCI-E虛擬網(wǎng)口IP地址和MAC地址通知主處理器;步驟(36)、主處理器根據(jù)從處理器上報的IP地址和MAC信息設(shè)置ARP代理對應(yīng)表。
其中,該方法在單板間通訊時,采用了代理ARP技術(shù),對外部主機(jī)看來單板內(nèi)各處理單元如同連接在本地局域網(wǎng)中,屏蔽了單板內(nèi)部PCIExpress通信的差異。且該方法在單板間通訊的數(shù)據(jù)到達(dá)單板主處理后,可以應(yīng)用上述的單板內(nèi)數(shù)據(jù)發(fā)送和接收的方法進(jìn)行通訊。
其中,數(shù)據(jù)發(fā)送的方法具體為步驟(5)、當(dāng)外部網(wǎng)絡(luò)向單板上的從處理器發(fā)送數(shù)據(jù)時,由于單板主處理器上加載了ARP代理,通過單板主處理器上的ARP代理的″欺騙″,外部網(wǎng)絡(luò)會誤認(rèn)為單板外部網(wǎng)口就是單板從處理器的實(shí)際網(wǎng)口,從而將該數(shù)據(jù)發(fā)送到該單板的外部網(wǎng)口;步驟(6)、該單板的主處理器讀取路由表并確定路由后將數(shù)據(jù)轉(zhuǎn)發(fā)到單板內(nèi)部網(wǎng)口,并將目的IP地址解析為目的MAC地址,并根據(jù)目的MAC地址確定目的從處理器的標(biāo)識;步驟(7)、根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的從處理器的數(shù)據(jù)接收隊(duì)列第一個空閑共享內(nèi)存區(qū);步驟(8)、將待發(fā)送數(shù)據(jù)存儲在該空閑共享內(nèi)存區(qū);
步驟(9)、將該空閑共享內(nèi)存區(qū)標(biāo)識為已用,并將控制頭地址字段移動到下一可用空閑共享內(nèi)存區(qū)。
其中,上述步驟(7)具體為步驟(71)、當(dāng)發(fā)送數(shù)據(jù)時,確定目的處理器的標(biāo)識;步驟(72)、并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列;步驟(73)、判斷該數(shù)據(jù)接收隊(duì)列是否有空閑的共享內(nèi)存區(qū),如果是則進(jìn)入步驟(74);否則丟棄該數(shù)據(jù),并返回錯誤信息;步驟(74)、判斷空閑的共享內(nèi)存區(qū)的數(shù)量是否為1個,如果是則丟棄該數(shù)據(jù),并返回錯誤信息;否則進(jìn)入步驟(8)。
其中,數(shù)據(jù)接收的方法具體為步驟(5`)當(dāng)從處理器接收數(shù)據(jù)時,根據(jù)當(dāng)前數(shù)據(jù)流量采用中斷或定時的方式喚醒一驅(qū)動線程;步驟(6`)、該驅(qū)動線程將帶有數(shù)據(jù)的共享內(nèi)存區(qū)從環(huán)行隊(duì)列中摘除;步驟(7`)、將上述有數(shù)據(jù)的共享內(nèi)存區(qū)提交上層協(xié)議棧處理;處理完畢后歸還該共享內(nèi)存區(qū)。
其中,上述步驟(6`)還包括該驅(qū)動線程申請新的空閑共享內(nèi)存區(qū),并用新的空閑共享內(nèi)存區(qū)取代環(huán)行隊(duì)列中有數(shù)據(jù)的共享內(nèi)存區(qū)的位置。
當(dāng)然,本發(fā)明還可有其他實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,所屬技術(shù)領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)發(fā)送方法,包括步驟1、為單板上每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟2、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E即高速外圍組件互連總線的處理器的個數(shù);每一通道具有一環(huán)形隊(duì)列作為數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,該數(shù)據(jù)緩沖描述符中至少包括了其對應(yīng)的共享內(nèi)存區(qū)的數(shù)據(jù)緩沖的地址和下一個數(shù)據(jù)緩沖的地址;為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟3、當(dāng)發(fā)送數(shù)據(jù)時,先確定目的處理器的標(biāo)識,并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列第一個空閑共享內(nèi)存區(qū);步驟4、將待發(fā)送數(shù)據(jù)存儲在該空閑共享內(nèi)存區(qū);步驟5、將該空閑共享內(nèi)存區(qū)標(biāo)識為已用,并將控制頭地址字段移動到下一可用空閑共享內(nèi)存區(qū)。
2.根據(jù)權(quán)利要求1所述的PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)發(fā)送方法,其特征在于,所述步驟3具體為步驟31、當(dāng)發(fā)送數(shù)據(jù)時,確定目的處理器的標(biāo)識;步驟32、并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列;步驟33、判斷該數(shù)據(jù)接收隊(duì)列是否有空閑的共享內(nèi)存區(qū),如果是則進(jìn)入步驟34;否則丟棄該數(shù)據(jù),并返回錯誤信息;步驟34、判斷空閑的共享內(nèi)存區(qū)的數(shù)量是否為1個,如果是則丟棄該數(shù)據(jù),并返回錯誤信息;否則進(jìn)入步驟4。
3.根據(jù)權(quán)利要求1或2所述的PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)發(fā)送方法,其特征在于,所述步驟4具體為將待發(fā)送數(shù)據(jù)直接拷貝或通過直接內(nèi)存存儲控制器傳輸?shù)缴鲜隹臻e的共享內(nèi)存區(qū)。
4.PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)接收方法,包括步驟A、為單板上每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟B、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E即高速外圍組件互連總線的處理器的個數(shù);每一通道具有一環(huán)形隊(duì)列作為數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,并為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟C、當(dāng)接收數(shù)據(jù)時,根據(jù)當(dāng)前數(shù)據(jù)流量采用中斷或定時的方式喚醒一驅(qū)動線程;步驟D、該驅(qū)動線程將帶有數(shù)據(jù)的共享內(nèi)存區(qū)從環(huán)行隊(duì)列中摘除;步驟E、將上述有數(shù)據(jù)的共享內(nèi)存區(qū)提交上層協(xié)議棧處理;處理完畢后歸還該共享內(nèi)存區(qū)。
5.根據(jù)權(quán)利要求4所述的PCI-E總線分布式系統(tǒng)單板內(nèi)數(shù)據(jù)接收方法,其特征在于,上述步驟D還包括該驅(qū)動線程申請新的空閑共享內(nèi)存區(qū),并用新的空閑共享內(nèi)存區(qū)取代環(huán)行隊(duì)列中有數(shù)據(jù)的共享內(nèi)存區(qū)的位置。
6.PCI-E總線分布式系統(tǒng)單板間數(shù)據(jù)通訊方法,包括步驟(1)、為每一單板上的每一處理器分配MAC地址,并為每一處理器分配一個標(biāo)識;步驟(2)、為每一處理器分配N-1個物理通道,其中N為單板上基于PCI-E即高速外圍組件互連總線的處理器的個數(shù);每一通道具有一環(huán)形隊(duì)列作為數(shù)據(jù)接收隊(duì)列,每一數(shù)據(jù)接收隊(duì)列由PCI-E通信的數(shù)據(jù)緩沖描述符組成,該數(shù)據(jù)緩沖描述符中至少包括了其對應(yīng)的共享內(nèi)存區(qū)的數(shù)據(jù)緩沖的地址和下一個數(shù)據(jù)緩沖的地址;為每一通道建立通道信息表,該通道信息表中至少包括目的處理器的標(biāo)識及該處理器對應(yīng)的數(shù)據(jù)接收隊(duì)列控制頭地址字段;步驟(3)、將單板上每一從處理器及外部網(wǎng)口配置IP地址,從處理器IP地址網(wǎng)段為該單板的外部網(wǎng)口的IP地址網(wǎng)段的子集,且外部網(wǎng)口IP地址不屬于從處理器IP地址網(wǎng)段;將每一單板上的主處理器作為該單板內(nèi)從處理器對外通信的網(wǎng)關(guān);步驟(4)、主處理器加載ARP代理服務(wù),響應(yīng)外部網(wǎng)絡(luò)向從處理器發(fā)出的ARP解析請求。
7.根據(jù)權(quán)利要求6所述的PCI-E總線分布式系統(tǒng)單板間數(shù)據(jù)通訊方法,其特征在于,所述步驟(3)具體為步驟(31)、單板啟動時主處理器先啟動,主處理器建立PCI-E通信通道;配置單板的外部網(wǎng)口的IP地址和內(nèi)部虛擬網(wǎng)口IP地址和從處理器IP地址;將單板上每一從處理器及外部網(wǎng)口配置IP地址,從處理器IP地址網(wǎng)段為該單板的外部網(wǎng)口的IP地址網(wǎng)段的子集,且外部網(wǎng)口IP地址不屬于從處理器IP地址網(wǎng)段;步驟(32)、從處理器啟動時,建立PCI-E通信通道,主動向主處理器請求配置,獲取主處理器的內(nèi)部虛擬網(wǎng)口IP地址,并將該IP地址設(shè)置為向外部網(wǎng)絡(luò)通信的默認(rèn)網(wǎng)關(guān);步驟(33)、從處理器啟動后,主動將自己的內(nèi)部PCI-E虛擬網(wǎng)口IP地址通知主處理器。
8.根據(jù)權(quán)利要求6或7所述的PCI-E總線分布式系統(tǒng)單板間數(shù)據(jù)通訊方法,其特征在于,該方法還包括步驟(5)、當(dāng)外部網(wǎng)絡(luò)向單板上的從處理器發(fā)送數(shù)據(jù)時,由于單板主處理器上加載了ARP代理,外部網(wǎng)絡(luò)認(rèn)為單板外部網(wǎng)口就是單板從處理器的實(shí)際網(wǎng)口,將該數(shù)據(jù)發(fā)送到該單板的外部網(wǎng)口;步驟(6)、該單板的主處理器讀取路由表并確定路由后將數(shù)據(jù)轉(zhuǎn)發(fā)到單板內(nèi)部網(wǎng)口,并將目的IP地址解析為目的MAC地址,并根據(jù)目的MAC地址確定目的從處理器的標(biāo)識;步驟(7)、根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的從處理器的數(shù)據(jù)接收隊(duì)列第一個空閑共享內(nèi)存區(qū);步驟(8)、將待發(fā)送數(shù)據(jù)存儲在該空閑共享內(nèi)存區(qū);步驟(9)、將該空閑共享內(nèi)存區(qū)標(biāo)識為已用,并將控制頭地址字段移動到下一可用空閑共享內(nèi)存區(qū)。
9.根據(jù)權(quán)利要求8所述的PCI-E總線分布式系統(tǒng)單板間數(shù)據(jù)通訊方法,其特征在于,上述步驟(7)具體為步驟(71)、當(dāng)發(fā)送數(shù)據(jù)時,確定目的處理器的標(biāo)識;步驟(72)、并根據(jù)該標(biāo)識查詢本地的通道信息表獲得目的處理器的數(shù)據(jù)接收隊(duì)列;步驟(73)、判斷該數(shù)據(jù)接收隊(duì)列是否有空閑的共享內(nèi)存區(qū),如果是則進(jìn)入步驟(74);否則丟棄該數(shù)據(jù),并返回錯誤信息;步驟(74)、判斷空閑的共享內(nèi)存區(qū)的數(shù)量是否為1個,如果是則丟棄該數(shù)據(jù),并返回錯誤信息;否則進(jìn)入步驟(8)。
10.根據(jù)權(quán)利要求6或7所述的PCI-E總線分布式系統(tǒng)單板間數(shù)據(jù)通訊方法,其特征在于,該方法還包括步驟(5′)當(dāng)從處理器接收數(shù)據(jù)時,根據(jù)當(dāng)前數(shù)據(jù)流量采用中斷或定時的方式喚醒一驅(qū)動線程;步驟(6′)、該驅(qū)動線程將帶有數(shù)據(jù)的共享內(nèi)存區(qū)從環(huán)行隊(duì)列中摘除;步驟(7′)、將上述有數(shù)據(jù)的共享內(nèi)存區(qū)提交上層協(xié)議棧處理;處理完畢后歸還該共享內(nèi)存區(qū)。
全文摘要
本發(fā)明公開了一種基于PCI-E總線分布式系統(tǒng)板內(nèi)及板間數(shù)據(jù)通訊方法,針對現(xiàn)有技術(shù)中數(shù)據(jù)多次拷貝的問題而發(fā)明,包括基于PCI-E總線分布式系統(tǒng)板內(nèi)數(shù)據(jù)發(fā)送方法、基于PCI-E總線分布式系統(tǒng)板內(nèi)數(shù)據(jù)接收方法以及基于PCI-E總線分布式系統(tǒng)板間數(shù)據(jù)通信方法,采用PCI Express總線共享內(nèi)存的單環(huán)行隊(duì)列設(shè)計(jì),實(shí)現(xiàn)了PCI Express驅(qū)動發(fā)送緩存、PCIExpress驅(qū)動接收緩存和虛擬網(wǎng)絡(luò)上層協(xié)議棧緩存三者的復(fù)用。還提出了一種單板之間數(shù)據(jù)通訊的方法,對內(nèi)采用了上述的單板內(nèi)數(shù)據(jù)發(fā)送和接收方法,對外網(wǎng)絡(luò)設(shè)計(jì)中采用了代理ARP技術(shù),對外部主機(jī)看來單板內(nèi)各處理單元如同連接在本地局域網(wǎng)中。本發(fā)明應(yīng)用于基于PCI-E總線分布式系統(tǒng)。
文檔編號H04L12/54GK101043510SQ200710097799
公開日2007年9月26日 申請日期2007年4月29日 優(yōu)先權(quán)日2007年4月29日
發(fā)明者劉忱, 吳應(yīng)祥, 童小九, 袁進(jìn)坤, 閆新成 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
柳江县| 渭源县| 灵山县| 诸城市| 万年县| 贵港市| 江华| 宁都县| 邻水| 英吉沙县| 平潭县| 德保县| 英德市| 澄江县| 绿春县| 贡嘎县| 枣强县| 若尔盖县| 垫江县| 兴宁市| 阜康市| 柘城县| 日土县| 聂拉木县| 怀安县| 许昌县| 紫云| 城市| 上虞市| 阿荣旗| 乌拉特后旗| 安化县| 兴安盟| 沐川县| 阳春市| 敦煌市| 五原县| 北辰区| 祁门县| 闻喜县| 安西县|