專(zhuān)利名稱(chēng):數(shù)據(jù)傳輸方法、消息引擎、通信節(jié)點(diǎn)及網(wǎng)絡(luò)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高性能計(jì)算互聯(lián)通訊領(lǐng)域,特別涉及數(shù)據(jù)傳輸方法、消息引擎、通 信節(jié)點(diǎn)及網(wǎng)絡(luò)系統(tǒng)。
背景技術(shù):
目前,計(jì)算機(jī)網(wǎng)絡(luò)的通信節(jié)點(diǎn)間的數(shù)據(jù)傳輸常采用基于消息傳遞的方式,通過(guò) 消息傳遞的方式來(lái)驅(qū)動(dòng)數(shù)據(jù)傳輸?shù)倪M(jìn)行。隨著計(jì)算機(jī)網(wǎng)絡(luò)所需處理的數(shù)據(jù)流量的越來(lái)越大,通信節(jié)點(diǎn)間的數(shù)據(jù)傳輸頻率 及容量也越來(lái)越大。如何實(shí)現(xiàn)消息的并行一直是消息傳輸?shù)年P(guān)鍵問(wèn)題之一,現(xiàn)有的消 息傳輸技術(shù)使用了各種方式實(shí)現(xiàn)消息的并行,但是現(xiàn)有的各種機(jī)制常會(huì)出現(xiàn)如下情況 發(fā)起順序在先的消息由于例如傳輸網(wǎng)絡(luò)狀況不佳、目標(biāo)節(jié)點(diǎn)接收空間不足等原因無(wú)法完 成,就會(huì)占用帶寬,造成后續(xù)消息被阻塞,該情況將影響消息處理的效率。而對(duì)于高帶 寬的應(yīng)用環(huán)境來(lái)說(shuō),該消息處理方式的鏈路利用率也較低。
發(fā)明內(nèi)容
本發(fā)明解決的問(wèn)題是現(xiàn)有技術(shù)基于消息傳遞方式的數(shù)據(jù)傳輸,其消息處理的效 率以及鏈路的利用率還有待提高的問(wèn)題。為解決上述問(wèn)題,本發(fā)明提供一種數(shù)據(jù)傳輸方法,應(yīng)用于高帶寬,其包括將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每i(i > 1)個(gè)讀請(qǐng) 求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;按所述消息的請(qǐng)求順序發(fā)送讀請(qǐng)求;在寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)都返回后,發(fā)送該寫(xiě)請(qǐng)求;在所述消息中的所有寫(xiě)請(qǐng)求的響應(yīng)返回后,發(fā)送所述消息的回答字。相應(yīng)地,本發(fā)明還提供一種消息引擎,用于處理網(wǎng)絡(luò)系統(tǒng)中各通信節(jié)點(diǎn)間消息 傳遞,所述消息引擎包括拆分單元、讀請(qǐng)求控制單元、寫(xiě)請(qǐng)求控制單元,回答字發(fā)送 單元,其中,所述拆分單元,將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求, 每i(i> 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求,并將所拆分的寫(xiě)請(qǐng)求的信息發(fā)送至回答字發(fā)送單 元;所述讀請(qǐng)求控制單元,按所述消息的請(qǐng)求順序向該項(xiàng)數(shù)據(jù)傳輸?shù)脑垂?jié)點(diǎn)發(fā)送讀 請(qǐng)求,在獲得源節(jié)點(diǎn)的相應(yīng)讀響應(yīng)后,將所述讀響應(yīng)發(fā)送至寫(xiě)請(qǐng)求控制單元;所述寫(xiě)請(qǐng)求控制單元,在獲得一個(gè)寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)后,向該項(xiàng)數(shù) 據(jù)傳輸?shù)哪繕?biāo)節(jié)點(diǎn)發(fā)送該寫(xiě)請(qǐng)求,在獲得目標(biāo)節(jié)點(diǎn)的相應(yīng)寫(xiě)響應(yīng)后,將所述寫(xiě)響應(yīng)發(fā)送 至回答字發(fā)送單元;
回答字發(fā)送單元,依據(jù)寫(xiě)請(qǐng)求的信息,在獲得目標(biāo)節(jié)點(diǎn)的所有寫(xiě)請(qǐng)求的響應(yīng) 后,向該項(xiàng)數(shù)據(jù)傳輸?shù)脑垂?jié)點(diǎn)發(fā)送回答字。
相應(yīng)地,本發(fā)明還提供一種通信節(jié)點(diǎn),包括拆分單元,將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每Ki > 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;讀請(qǐng)求控制單元,按所述消息的請(qǐng)求順序執(zhí)行讀請(qǐng)求;網(wǎng)絡(luò)通信單元,將拆分后寫(xiě)請(qǐng)求的信息以及所述讀請(qǐng)求的讀響應(yīng)發(fā)送至網(wǎng)絡(luò), 以及從網(wǎng)絡(luò)中接收對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳輸?shù)幕卮鹱?。相?yīng)地,本發(fā)明還提供一種通信節(jié)點(diǎn),包括網(wǎng)絡(luò)接收單元,接收對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)膶?xiě)請(qǐng)求的信息,以及對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳 輸?shù)淖x請(qǐng)求的讀響應(yīng),每i(i > 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;寫(xiě)請(qǐng)求控制單元,在獲得一個(gè)寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)后,執(zhí)行該寫(xiě)請(qǐng)求;回答字發(fā)送單元,依據(jù)寫(xiě)請(qǐng)求的信息,在獲得對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳輸?shù)乃袑?xiě)請(qǐng)求 的響應(yīng)后,產(chǎn)生回答字;網(wǎng)絡(luò)發(fā)送單元,將回答字發(fā)送至網(wǎng)絡(luò)。相應(yīng)地,本發(fā)明還提供一種包括上述消息引擎的網(wǎng)絡(luò)系統(tǒng)。相應(yīng)地,本發(fā)明還提供一種包括上述通信節(jié)點(diǎn)的網(wǎng)絡(luò)系統(tǒng)。與現(xiàn)有技術(shù)相比,本發(fā)明數(shù)據(jù)傳輸方法、消息引擎、通信節(jié)點(diǎn)及網(wǎng)絡(luò)系統(tǒng)具有 以下優(yōu)點(diǎn)消息順序發(fā)起后,根據(jù)數(shù)據(jù)的響應(yīng)來(lái)驅(qū)動(dòng)請(qǐng)求,寫(xiě)請(qǐng)求需要在收到相應(yīng)的讀 響應(yīng)后發(fā)出,消息完成的回答字需要在收到所述消息的所有寫(xiě)響應(yīng)后發(fā)出。消息的處理 過(guò)程形成了數(shù)據(jù)流驅(qū)動(dòng)的方式,從而可以實(shí)現(xiàn)多個(gè)消息的并行處理,消除了頭阻塞。對(duì) 于高帶寬應(yīng)用的情況,所述基于消息的數(shù)據(jù)傳輸方法可以顯著提高消息處理的吞吐率和 鏈路的利用率。
圖1是本發(fā)明數(shù)據(jù)傳輸方法的一種實(shí)施方式流程圖;圖2是本發(fā)明消息引擎的一種實(shí)施方式結(jié)構(gòu)示意圖;圖3是本發(fā)明數(shù)據(jù)傳輸方法及消息引擎應(yīng)用于單條消息的實(shí)例示意圖;圖4是本發(fā)明數(shù)據(jù)傳輸方法及消息引擎應(yīng)用于多條消息并發(fā)的實(shí)例示意圖;圖5是本發(fā)明通信節(jié)點(diǎn)的一種實(shí)施例結(jié)構(gòu)示意圖;圖6是本發(fā)明通信節(jié)點(diǎn)的另一種實(shí)施例結(jié)構(gòu)示意圖。
具體實(shí)施例方式通過(guò)分析現(xiàn)有技術(shù)的數(shù)據(jù)傳輸方式可知,計(jì)算機(jī)網(wǎng)絡(luò)中兩個(gè)節(jié)點(diǎn)間的數(shù)據(jù)傳輸 過(guò)程可大致分為兩個(gè)階段從源節(jié)點(diǎn)的主存中讀取數(shù)據(jù)的過(guò)程,以及向目標(biāo)節(jié)點(diǎn)的主存 中寫(xiě)入數(shù)據(jù)的過(guò)程。相應(yīng)地,該項(xiàng)數(shù)據(jù)傳輸對(duì)應(yīng)的消息也包括對(duì)應(yīng)讀取數(shù)據(jù)過(guò)程的讀請(qǐng) 求,以及對(duì)應(yīng)寫(xiě)入數(shù)據(jù)過(guò)程的寫(xiě)請(qǐng)求。要保證寫(xiě)入數(shù)據(jù)的順利進(jìn)行,其前提是數(shù)據(jù)能夠 成功讀取,因此寫(xiě)請(qǐng)求的完成也必須依賴(lài)于相應(yīng)讀請(qǐng)求的完成。相應(yīng)地,一項(xiàng)數(shù)據(jù)傳輸 對(duì)應(yīng)的消息的完成也依賴(lài)于寫(xiě)請(qǐng)求的完成。基于現(xiàn)有技術(shù)是通過(guò)響應(yīng)的方式來(lái)提示請(qǐng)求 的完成,因此若以讀請(qǐng)求的響應(yīng)來(lái)驅(qū)動(dòng)其對(duì)應(yīng)的寫(xiě)請(qǐng)求,以寫(xiě)請(qǐng)求的響應(yīng)來(lái)驅(qū)動(dòng)消息的完成,應(yīng)能夠保證消息的正確處理?;诖?,本發(fā)明提供了一種應(yīng)用于高帶寬的數(shù)據(jù)傳輸方法,采用了上述數(shù)據(jù)流 驅(qū)動(dòng)方式的消息處理機(jī)制。參照?qǐng)D1所示,本發(fā)明應(yīng)用于高帶寬的數(shù)據(jù)傳輸方法的一種實(shí)施方式包括步驟Sl,將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每i(i> 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;步驟S2,按所述消息的請(qǐng)求順序發(fā)送讀請(qǐng)求; 步驟S3,在寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的讀響應(yīng)都返回后,發(fā)送該寫(xiě)請(qǐng)求;步驟S4,在所述消息中的所有寫(xiě)請(qǐng)求的寫(xiě)響應(yīng)返回后,發(fā)送所述消息的回答字。上述實(shí)施方式中,在消息發(fā)起后,首先將消息按讀和寫(xiě)兩種請(qǐng)求類(lèi)型進(jìn)行拆 分。拆分寫(xiě)請(qǐng)求依據(jù)消息長(zhǎng)度和消息地址的對(duì)界情況進(jìn)行。而拆分讀請(qǐng)求則可依據(jù) 主存支持的訪存粒度進(jìn)行。例如,將寫(xiě)請(qǐng)求以512B為單元進(jìn)行拆分,假定主存支持的訪 存粒度為128B,則該寫(xiě)請(qǐng)求對(duì)應(yīng)的讀請(qǐng)求可以為4個(gè)。這樣處理的好處是在讀數(shù)據(jù)的時(shí) 候不需要設(shè)置緩沖,在等到讀出了 512B數(shù)據(jù)再回讀響應(yīng),可以每讀出128B數(shù)據(jù)就直接 返回讀響應(yīng)。而假定主存支持的訪存粒度為64B,則該寫(xiě)請(qǐng)求對(duì)應(yīng)的讀請(qǐng)求可以為8個(gè)。將每i個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求,相當(dāng)于建立了后續(xù)通過(guò)讀請(qǐng)求的響應(yīng)驅(qū)動(dòng)寫(xiě)請(qǐng) 求的驅(qū)動(dòng)映射表,后續(xù)的寫(xiě)請(qǐng)求驅(qū)動(dòng)可依據(jù)該表進(jìn)行。在將消息拆分后,就可實(shí)際進(jìn)行消息的處理。所述按消息的請(qǐng)求順序發(fā)送讀請(qǐng) 求是指按拆分后的讀請(qǐng)求的地址先后順序發(fā)送讀請(qǐng)求。在發(fā)出讀請(qǐng)求后,后續(xù)消息的請(qǐng)求的發(fā)出就是依據(jù)上述的響應(yīng)來(lái)驅(qū)動(dòng),任何一 個(gè)寫(xiě)請(qǐng)求只有在收齊了其對(duì)應(yīng)的讀請(qǐng)求的響應(yīng)后才會(huì)發(fā)出。而表示整條消息完成的回答 字只有在收齊了其所有的寫(xiě)請(qǐng)求的響應(yīng)后才會(huì)發(fā)出??偨Y(jié)下來(lái),上述實(shí)施方式只有讀請(qǐng)求的發(fā)出是依序進(jìn)行,后續(xù)寫(xiě)請(qǐng)求的發(fā)出則 完全由讀響應(yīng)的返回程度來(lái)決定,因而各個(gè)寫(xiě)請(qǐng)求之間實(shí)際上是相互獨(dú)立執(zhí)行的,每個(gè) 寫(xiě)請(qǐng)求只需關(guān)注與其相關(guān)的讀請(qǐng)求是否完成,即是否有響應(yīng)即可。基于所述說(shuō)明,在多 條消息并發(fā)的情況下,各條消息的處理過(guò)程也是各自獨(dú)立的,相互之間并無(wú)聯(lián)系。每條 消息的處理均可借助各自專(zhuān)用的鏈路。因此,這樣的方式非常適合高帶寬的應(yīng)用環(huán)境, 且對(duì)鏈路的利用率較高。從以上實(shí)施方式的完成過(guò)程看來(lái),由于各條消息可并行處理,且每條消息的處 理完成是由實(shí)際計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)運(yùn)行的狀態(tài)決定,讀響應(yīng)和寫(xiě)響應(yīng)的返回是亂序的,和 消息發(fā)起的順序無(wú)關(guān),因此解決了現(xiàn)有技術(shù)中由于前一條消息未完成而阻塞后續(xù)消息的 問(wèn)題,顯著提高了消息處理的吞吐率。參照?qǐng)D2所示,本發(fā)明消息引擎的一種實(shí)施方式,其用于處理網(wǎng)絡(luò)系統(tǒng)中各通 信節(jié)點(diǎn)間消息傳遞,包括拆分單元10、讀請(qǐng)求控制單元20、寫(xiě)請(qǐng)求控制單元30,回答 字發(fā)送單元40,其中,所述拆分單元10,將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng) 求,每iG >1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求,并將所拆分的寫(xiě)請(qǐng)求的信息發(fā)送至回答字發(fā)送單元40 ; 所述讀請(qǐng)求控制單元20,按所述消息的請(qǐng)求順序向該項(xiàng)數(shù)據(jù)傳輸?shù)脑垂?jié)點(diǎn)發(fā)送 讀請(qǐng)求,在獲得源節(jié)點(diǎn)的相應(yīng)讀響應(yīng)后,將所述讀響應(yīng)發(fā)送至寫(xiě)請(qǐng)求控制單元30 ;所述寫(xiě)請(qǐng)求控制單元30,在獲得一個(gè)寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)后,向該項(xiàng) 數(shù)據(jù)傳輸?shù)哪繕?biāo)節(jié)點(diǎn)發(fā)送該寫(xiě)請(qǐng)求,在獲得目標(biāo)節(jié)點(diǎn)的相應(yīng)寫(xiě)響應(yīng)后,將所述寫(xiě)響應(yīng)發(fā) 送至回答字發(fā)送單元40;回答字發(fā)送單元40,依據(jù)寫(xiě)請(qǐng)求的信息,在獲得目標(biāo)節(jié)點(diǎn)的所有寫(xiě)請(qǐng)求的響應(yīng) 后,向該項(xiàng)數(shù)據(jù)傳輸?shù)脑垂?jié)點(diǎn)發(fā)送回答字。在一個(gè)實(shí)施例中,所述讀請(qǐng)求控制單元20可以包括與拆分后寫(xiě)請(qǐng)求數(shù)目相等的 控制子單元,每個(gè)控制子單元對(duì)應(yīng)控制所述寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求。在一個(gè)實(shí)施例中,所述寫(xiě)請(qǐng)求控制單元30可以包括與拆分后寫(xiě)請(qǐng)求數(shù)目相等的 控制子單元,每個(gè)控制子單元在獲得對(duì)應(yīng)讀請(qǐng)求控制子單元發(fā)送的讀響應(yīng)后,發(fā)送寫(xiě)請(qǐng) 求。以下結(jié)合上述數(shù)據(jù)傳輸方法及消息引擎,分別通過(guò)單條消息和多條消息的處理 過(guò)程舉例來(lái)進(jìn)一步說(shuō)明。圖3所示為單條消息的一種處理過(guò)程舉例。結(jié)合圖2和圖3所示,在對(duì)應(yīng)一項(xiàng)數(shù) 據(jù)傳輸?shù)南l(fā)起后,消息引擎中的拆分單元10首先將該條消息拆分成3組讀請(qǐng)求R1、 R2、R3和3個(gè)寫(xiě)請(qǐng)求Wl、W2、W3。其中每一組讀請(qǐng)求各包含3個(gè)讀請(qǐng)求,讀請(qǐng)求組 Rl中的讀請(qǐng)求對(duì)應(yīng)寫(xiě)請(qǐng)求Wl,讀請(qǐng)求組R2中的讀請(qǐng)求對(duì)應(yīng)寫(xiě)請(qǐng)求W2,讀請(qǐng)求組R3中 的讀請(qǐng)求對(duì)應(yīng)寫(xiě)請(qǐng)求W3。在拆分完成后,消息引擎中的讀請(qǐng)求控制單元20以Rl、R2、 R3的順序發(fā)送讀請(qǐng)求。繼續(xù)參照?qǐng)D3所示,在讀請(qǐng)求組R3的所有讀響應(yīng)返回后,說(shuō)明此時(shí)讀請(qǐng)求組R3 中的讀請(qǐng)求操作已完成,相關(guān)數(shù)據(jù)已從源節(jié)點(diǎn)的主存中讀出,消息引擎中的寫(xiě)請(qǐng)求控制 單元30隨即發(fā)送寫(xiě)請(qǐng)求W3。而此時(shí)讀請(qǐng)求組Rl、R2的讀響應(yīng)并未全部返回,說(shuō)明相 關(guān)的讀請(qǐng)求操作并未全部完成,相關(guān)數(shù)據(jù)并未全部從源節(jié)點(diǎn)的主存中讀出,因而消息引 擎中的寫(xiě)請(qǐng)求控制單元30不發(fā)送寫(xiě)請(qǐng)求Wl、W2。繼續(xù)參照?qǐng)D3所示,在讀請(qǐng)求組R2的讀響應(yīng)全部返回后,說(shuō)明此時(shí)讀請(qǐng)求組R2 中的讀請(qǐng)求操作已完成,相關(guān)數(shù)據(jù)已從源節(jié)點(diǎn)的主存中讀出,消息引擎中的寫(xiě)請(qǐng)求控制 單元30隨即發(fā)送寫(xiě)請(qǐng)求W2。而讀請(qǐng)求組Rl的讀響應(yīng)之后才全部返回,說(shuō)明此時(shí)讀請(qǐng) 求組Rl中的讀請(qǐng)求操作已完成,相關(guān)數(shù)據(jù)已從源節(jié)點(diǎn)的主存中讀出,消息引擎中的寫(xiě)請(qǐng) 求控制單元30隨即發(fā)送寫(xiě)請(qǐng)求W1。此處可以看到,寫(xiě)請(qǐng)求Wl、W2、W3的發(fā)送順序 和讀請(qǐng)求發(fā)送的順序無(wú)關(guān),而僅由各自對(duì)應(yīng)的讀請(qǐng)求的響應(yīng)返回程度決定。并且,此處 由于寫(xiě)請(qǐng)求W3是最先發(fā)送的,在讀請(qǐng)求組Rl、R2還在接收讀響應(yīng)時(shí),其已開(kāi)始接收寫(xiě) 響應(yīng)。因此,各個(gè)寫(xiě)請(qǐng)求Wl、W2、W3之間也是相互獨(dú)立的。繼續(xù)參照?qǐng)D3所示,在寫(xiě)請(qǐng)求Wl、W2、W3的寫(xiě)響應(yīng)全部返回后,說(shuō)明此時(shí)所 有寫(xiě)請(qǐng)求操作已完成,相關(guān)數(shù)據(jù)已寫(xiě)入目標(biāo)節(jié)點(diǎn)的主存中,消息引擎中的回答字發(fā)送單 元40隨即發(fā)送表示消息完成的回答字,也就是表示源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)主存間數(shù)據(jù)的傳輸 完成。圖4所示為多條消息并發(fā)的處理過(guò)程舉例。結(jié)合圖2和圖4所示,當(dāng)前共有η條消息同時(shí)發(fā)起,各條消息按箭頭方向從左至右進(jìn)行處理,左面方格列代表讀請(qǐng)求數(shù)據(jù), 右面方格列代表寫(xiě)響應(yīng)。消息引擎中的拆分單元10首先將每條消息進(jìn)行拆分,其拆分方 式可參照上述單條消息的相關(guān)說(shuō)明,然后通過(guò)讀請(qǐng)求控制單元20分別將各條消息拆分后 的將讀請(qǐng)求順序發(fā)送。此處,當(dāng)對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求的多個(gè)讀請(qǐng)求全部獲得響應(yīng)后,返回一 個(gè)讀請(qǐng)求數(shù)據(jù),從而激活寫(xiě)請(qǐng)求,也即消息引擎中的寫(xiě)請(qǐng)求控制單元30發(fā)送相應(yīng)的寫(xiě)請(qǐng) 求。繼續(xù)參照?qǐng)D4所示,消息0中有2個(gè)讀請(qǐng)求數(shù)據(jù)返回,其對(duì)應(yīng)的2個(gè)寫(xiě)請(qǐng)求也隨 即由消息引擎中的寫(xiě)請(qǐng)求控制單元30發(fā)送(2條激活寫(xiě)請(qǐng)求)。而消息1、2、η中各有3 個(gè)讀請(qǐng)求數(shù)據(jù)返回,其對(duì)應(yīng)的3個(gè)寫(xiě)請(qǐng)求也隨即由消息引擎中的寫(xiě)請(qǐng)求控制單元30發(fā)送 (3條激活寫(xiě)請(qǐng)求)。繼續(xù)參照?qǐng)D4所示,在寫(xiě)請(qǐng)求發(fā)送后,寫(xiě)響應(yīng)也陸續(xù)返回。而同時(shí),陸續(xù)返回 的讀請(qǐng)求數(shù)據(jù)也陸續(xù)激活對(duì)應(yīng)的寫(xiě)請(qǐng)求。繼續(xù)參照?qǐng)D4所示,消息1和消息η的寫(xiě)請(qǐng)求的響應(yīng)最先全部返回,消息引擎在 消 息1和消息η的寫(xiě)響應(yīng)全部返回后,由回答字發(fā)送單元40發(fā)送消息1和消息η的回答 字,消息1和消息η最先完成。隨后,消息0的寫(xiě)請(qǐng)求的響應(yīng)也全部返回,消息引擎在 消息0的寫(xiě)響應(yīng)全部返回后,由回答字發(fā)送單元40發(fā)送消息0的回答字,消息0完成。 消息2的寫(xiě)請(qǐng)求的響應(yīng)最后才全部返回,消息引擎的回答字發(fā)送單元40也最后才發(fā)送消 息2的回答字,消息2最后完成。從上述多條消息并發(fā)的處理過(guò)程可以看到,雖然各條消息是同時(shí)發(fā)起的,但各 條消息的完成時(shí)間卻并不同。各條消息在處理過(guò)程中,與其他消息并無(wú)關(guān)聯(lián),其完成時(shí) 間由處理過(guò)程中驅(qū)動(dòng)寫(xiě)請(qǐng)求的讀響應(yīng)和驅(qū)動(dòng)回答字的寫(xiě)響應(yīng)決定。綜合以上說(shuō)明,所述消息引擎根據(jù)功能需求還可全部或部分集成于通信節(jié)點(diǎn) 中。參照?qǐng)D5所示,本發(fā)明通信節(jié)點(diǎn)的一種實(shí)施例,包括拆分單元101,將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每 i(i> 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;讀請(qǐng)求控制單元102,按所述消息的請(qǐng)求順序執(zhí)行讀請(qǐng)求;網(wǎng)絡(luò)通信單元103,將拆分后寫(xiě)請(qǐng)求的信息以及所述讀請(qǐng)求的讀響應(yīng)發(fā)送至網(wǎng) 絡(luò),以及從網(wǎng)絡(luò)中接收對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳輸?shù)幕卮鹱?。參照?qǐng)D6所示,本發(fā)明通信節(jié)點(diǎn)的另一種實(shí)施例,包括網(wǎng)絡(luò)接收單元201,接收對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)膶?xiě)請(qǐng)求的信息,以及對(duì)應(yīng)該項(xiàng)數(shù)據(jù) 傳輸?shù)淖x請(qǐng)求的讀響應(yīng),每i(i > 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;寫(xiě)請(qǐng)求控制單元202,在獲得一個(gè)寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)后,執(zhí)行該寫(xiě) 請(qǐng)求;回答字發(fā)送單元203,依據(jù)寫(xiě)請(qǐng)求的信息,在獲得對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳輸?shù)乃袑?xiě)請(qǐng) 求的響應(yīng)后,產(chǎn)生回答字;網(wǎng)絡(luò)發(fā)送單元204,將回答字發(fā)送至網(wǎng)絡(luò)。相應(yīng)地,本發(fā)明還提供一種包括上述消息引擎的網(wǎng)絡(luò)系統(tǒng)。相應(yīng)地,本發(fā)明還提供一種包括上述通信節(jié)點(diǎn)的網(wǎng)絡(luò)系統(tǒng)。
綜上所述,本發(fā)明數(shù)據(jù)傳輸方法、消息引擎、通信節(jié)點(diǎn)及網(wǎng)絡(luò)系統(tǒng),在消息順 序發(fā)起后,根據(jù)數(shù)據(jù)的響應(yīng)來(lái)驅(qū)動(dòng)請(qǐng)求,寫(xiě)請(qǐng)求需要在收到相應(yīng)的讀響應(yīng)后發(fā)出,消息 完成的回答字需要在收到所述消息的所有寫(xiě)響應(yīng)后發(fā)出。消息的處理過(guò)程形成了數(shù)據(jù)流 驅(qū)動(dòng)的方式,從而可以實(shí)現(xiàn)多個(gè)消息的并行處理,消除了頭阻塞。特別對(duì)于高帶寬應(yīng) 用的情況,所述基于消息的數(shù)據(jù)傳輸方法可以顯著提高消息處理的吞吐率和鏈路的利用 率。雖然本發(fā)明已以較佳實(shí)施例披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù) 范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。
權(quán)利要求
1.一種數(shù)據(jù)傳輸方法,應(yīng)用于高帶寬,其特征在于,包括將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每i(i> 1)個(gè)讀請(qǐng)求對(duì) 應(yīng)一個(gè)寫(xiě)請(qǐng)求;按所述消息的請(qǐng)求順序發(fā)送讀請(qǐng)求; 在寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)都返回后,發(fā)送該寫(xiě)請(qǐng)求; 在所述消息中的所有寫(xiě)請(qǐng)求的響應(yīng)返回后,發(fā)送所述消息的回答字。
2.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,拆分讀請(qǐng)求依據(jù)主存支持的訪存 粒度進(jìn)行。
3.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,拆分寫(xiě)請(qǐng)求依據(jù)消息長(zhǎng)度和消息 地址的對(duì)界情況進(jìn)行。
4.一種消息引擎,用于處理網(wǎng)絡(luò)系統(tǒng)中各通信節(jié)點(diǎn)間消息傳遞,其特征在于,所述 消息引擎包括拆分單元、讀請(qǐng)求控制單元、寫(xiě)請(qǐng)求控制單元,回答字發(fā)送單元,其 中,所述拆分單元,將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每Ki > 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求,并將所拆分的寫(xiě)請(qǐng)求的信息發(fā)送至回答字發(fā)送單元;所述讀請(qǐng)求控制單元,按所述消息的請(qǐng)求順序向該項(xiàng)數(shù)據(jù)傳輸?shù)脑垂?jié)點(diǎn)發(fā)送讀請(qǐng) 求,在獲得源節(jié)點(diǎn)的相應(yīng)讀響應(yīng)后,將所述讀響應(yīng)發(fā)送至寫(xiě)請(qǐng)求控制單元;所述寫(xiě)請(qǐng)求控制單元,在獲得一個(gè)寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)后,向該項(xiàng)數(shù)據(jù)傳 輸?shù)哪繕?biāo)節(jié)點(diǎn)發(fā)送該寫(xiě)請(qǐng)求,在獲得目標(biāo)節(jié)點(diǎn)的相應(yīng)寫(xiě)響應(yīng)后,將所述寫(xiě)響應(yīng)發(fā)送至回 答字發(fā)送單元;回答字發(fā)送單元,依據(jù)寫(xiě)請(qǐng)求的信息,在獲得目標(biāo)節(jié)點(diǎn)的所有寫(xiě)請(qǐng)求的響應(yīng)后,向 該項(xiàng)數(shù)據(jù)傳輸?shù)脑垂?jié)點(diǎn)發(fā)送回答字。
5.如權(quán)利要求4所述的消息引擎,其特征在于,所述讀請(qǐng)求控制單元包括與拆分后寫(xiě) 請(qǐng)求數(shù)目相等的控制子單元,每個(gè)控制子單元對(duì)應(yīng)控制所述寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求。
6.如權(quán)利要求4所述的消息引擎,其特征在于,所述寫(xiě)請(qǐng)求控制單元包括與拆分后寫(xiě) 請(qǐng)求數(shù)目相等的控制子單元,每個(gè)控制子單元在獲得對(duì)應(yīng)讀請(qǐng)求控制子單元發(fā)送的讀響 應(yīng)后,發(fā)送寫(xiě)請(qǐng)求。
7.—種通信節(jié)點(diǎn),其特征在于,包括拆分單元,將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每i(i>l) 個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;讀請(qǐng)求控制單元,按所述消息的請(qǐng)求順序執(zhí)行讀請(qǐng)求;網(wǎng)絡(luò)通信單元,將拆分后寫(xiě)請(qǐng)求的信息以及所述讀請(qǐng)求的讀響應(yīng)發(fā)送至網(wǎng)絡(luò),以及 從網(wǎng)絡(luò)中接收對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳輸?shù)幕卮鹱帧?br>
8.如權(quán)利要求7所述的通信節(jié)點(diǎn),其特征在于,所述讀請(qǐng)求控制單元包括與拆分后寫(xiě) 請(qǐng)求數(shù)目相等的控制子單元,每個(gè)控制子單元對(duì)應(yīng)控制所述寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求。
9.一種通信節(jié)點(diǎn),其特征在于,包括網(wǎng)絡(luò)接收單元,接收對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)膶?xiě)請(qǐng)求的信息,以及對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳輸?shù)?讀請(qǐng)求的讀響應(yīng),每i(i > 1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;寫(xiě)請(qǐng)求控制單元,在獲得一個(gè)寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)后,執(zhí)行該寫(xiě)請(qǐng)求;回答字發(fā)送單元,依據(jù)寫(xiě)請(qǐng)求的信息,在獲得對(duì)應(yīng)該項(xiàng)數(shù)據(jù)傳輸?shù)乃袑?xiě)請(qǐng)求的響 應(yīng)后,產(chǎn)生回答字;網(wǎng)絡(luò)發(fā)送單元,將回答字發(fā)送至網(wǎng)絡(luò)。
10.如權(quán)利要求9所述的通信節(jié)點(diǎn),其特征在于,所述寫(xiě)請(qǐng)求控制單元包括與寫(xiě)請(qǐng)求 數(shù)目相等的控制子單元,每個(gè)控制子單元在獲得相應(yīng)讀響應(yīng)后,執(zhí)行寫(xiě)請(qǐng)求。
11.一種包括權(quán)利要求4至6任一項(xiàng)所述的消息引擎的網(wǎng)絡(luò)系統(tǒng)。
12.一種包括權(quán)利要求7至10任一項(xiàng)所述的通信節(jié)點(diǎn)的網(wǎng)絡(luò)系統(tǒng)。
全文摘要
一種數(shù)據(jù)傳輸方法、消息引擎、通信節(jié)點(diǎn)及網(wǎng)絡(luò)系統(tǒng)。所述數(shù)據(jù)傳輸方法包括將對(duì)應(yīng)一項(xiàng)數(shù)據(jù)傳輸?shù)南⒉鸱殖啥鄠€(gè)讀請(qǐng)求和多個(gè)寫(xiě)請(qǐng)求,每i(i>1)個(gè)讀請(qǐng)求對(duì)應(yīng)一個(gè)寫(xiě)請(qǐng)求;按所述消息的請(qǐng)求順序發(fā)送讀請(qǐng)求;在寫(xiě)請(qǐng)求對(duì)應(yīng)的i個(gè)讀請(qǐng)求的響應(yīng)都返回后,發(fā)送該寫(xiě)請(qǐng)求;在所述消息中的所有寫(xiě)請(qǐng)求的響應(yīng)返回后,發(fā)送所述消息的回答字。需要特別強(qiáng)調(diào)的是,讀響應(yīng)和寫(xiě)結(jié)束的返回都是亂序的。所述數(shù)據(jù)傳輸方法、消息引擎、通信節(jié)點(diǎn)及網(wǎng)絡(luò)系統(tǒng)可以顯著提高消息處理的吞吐率和鏈路的利用率。
文檔編號(hào)H04L29/06GK102014111SQ200910195309
公開(kāi)日2011年4月13日 申請(qǐng)日期2009年9月4日 優(yōu)先權(quán)日2009年9月4日
發(fā)明者盧宏生, 朱巍, 王夢(mèng)嘉, 許勇, 鄭衛(wèi)華, 黃永勤 申請(qǐng)人:無(wú)錫江南計(jì)算技術(shù)研究所