国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種節(jié)點之間的數(shù)據(jù)傳輸系統(tǒng)和裝置及方法

      文檔序號:6613860閱讀:196來源:國知局
      專利名稱:一種節(jié)點之間的數(shù)據(jù)傳輸系統(tǒng)和裝置及方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計算機網(wǎng)絡(luò)通信技術(shù),特別涉及在非一致內(nèi)存訪問(Non Uniform Memory Access Architecture, NUMA)平臺中節(jié)點之間數(shù)據(jù)傳輸?shù)南?統(tǒng)、裝置和方法。
      背景技術(shù)
      現(xiàn)有技術(shù)中,在非一致內(nèi)存訪問(冊MA)平臺上的各個多核處理器或者多 個處理器上運行的操作系統(tǒng)之間,通常有兩種數(shù)據(jù)傳輸方式 一種是通過共享 內(nèi)存,采用內(nèi)存拷貝的方式來實現(xiàn)數(shù)據(jù)傳輸;另一種是通過消息傳遞的方式, 采用基于通信硬件的通信方式傳輸數(shù)據(jù)。目前最常用的是采用消息傳遞的方式,它是基于通信硬件(比如硬件網(wǎng)卡) 來傳輸數(shù)據(jù)的。這種通信方式的數(shù)據(jù)傳輸過程為發(fā)送方將待傳送的消息經(jīng)過 直接內(nèi)存存取(Direct Memory Access, DMA)從內(nèi)存拷貝到硬件網(wǎng)卡緩沖區(qū), 再經(jīng)過通信硬件網(wǎng)絡(luò)傳輸?shù)浇邮辗降挠布W(wǎng)卡緩沖區(qū),再由接收方從接收方硬 件緩沖區(qū)將消息拷貝到內(nèi)存??梢?,上述傳統(tǒng)的消息傳遞方式傳輸數(shù)據(jù)的一個 不足是通信過程繁瑣。同時,由于傳統(tǒng)的消息傳遞方式在傳輸數(shù)據(jù)時系統(tǒng)節(jié)點要訪問慢速的外部 總線(如PCI總線上的硬件網(wǎng)卡),使得通信速度較慢?,F(xiàn)有技術(shù)的另一方面 不足是,通信數(shù)據(jù)經(jīng)過基于硬件的通信網(wǎng)絡(luò)的傳輸,其可靠性較低。發(fā)明內(nèi)容本發(fā)明的目的是克服現(xiàn)有技術(shù)在非一致內(nèi)存訪問平臺上的各節(jié)點之間以 消息傳遞方式傳輸數(shù)據(jù)必須通過硬件網(wǎng)卡,從而導(dǎo)致傳輸速度較慢的不足,提 供在非一致內(nèi)存訪問平臺中的節(jié)點之間以消息傳遞方式進行數(shù)據(jù)傳輸,并且傳 輸速度快的數(shù)據(jù)傳輸系統(tǒng)和裝置及方法。為了達(dá)到上述目的,本發(fā)明采取如下技術(shù)方案
      一種節(jié)點之間的數(shù)據(jù)傳輸系統(tǒng),用于基于非一致內(nèi)存訪問平臺上的至少兩 個節(jié)點之間數(shù)據(jù)傳輸,所述節(jié)點包括至少一個處理器核和/或至少一個處理器、 操作系統(tǒng)和操作系統(tǒng)中的協(xié)議棧;所述節(jié)點還包括與所述協(xié)議棧連接的數(shù)據(jù)傳 輸裝置;所述數(shù)據(jù)傳輸裝置包括用于在內(nèi)存中劃分出共享通信緩沖區(qū)及共享通信緩沖區(qū)控制區(qū),并將所述 共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點的共享通信緩沖區(qū)分配模塊;用于節(jié)點之間通過共享通信緩沖區(qū)進行消息傳遞的底層通信模塊,所述底層通信模塊控制所述共享通信緩沖區(qū)和所述共享通信緩沖區(qū)控制區(qū);和 將所述底層通信模塊模擬為網(wǎng)卡并與節(jié)點的協(xié)議棧連接的虛擬網(wǎng)卡。 優(yōu)選地,所述公告包括通過在一個節(jié)點所管理的內(nèi)存中建立一個公告區(qū),所有所述節(jié)點將所述共享通信緩沖區(qū)的位置和大小在所述公告區(qū)公告。優(yōu)選地,所有所述節(jié)點的所述共享通信緩沖區(qū)都集中在其中一個節(jié)點上進行管理。優(yōu)選地,所有所述節(jié)點的所述共享通信緩沖區(qū)分布在各自節(jié)點上進行管理。優(yōu)選地,所述協(xié)議棧是TCP/IP協(xié)議棧。 優(yōu)選地,所述底層通信模塊包括共享通信緩沖區(qū)管理模塊,用于在所述共享通信緩沖區(qū)中為其他節(jié)點分別 分配一個緩沖部分,并將所述緩沖部分的位置和大小進行公告,還用于監(jiān)控所述共享通信緩沖區(qū)的狀態(tài)并將其狀態(tài)記錄在所述共享通信緩沖區(qū)控制區(qū)中; 端口地址映射模塊,用于將消息傳輸?shù)慕邮辗焦?jié)點號映射到所述共享通信緩沖區(qū)的所述緩沖部分并在所述緩沖部分中尋找消息傳輸位置;消息傳遞模塊,用于在傳輸消息時從所述共享通信緩沖區(qū)的緩沖部分中完成消息發(fā)送和消息接收。優(yōu)選地,共享通信緩沖區(qū)管理模塊采用如下流控方法當(dāng)共享通信緩沖區(qū)的相應(yīng)緩沖部分滿,消息發(fā)送請求失敗時,共享通信緩沖區(qū)管理模塊將阻止繼續(xù)產(chǎn)生消息傳輸事件,直到檢査到共享通信緩沖區(qū)的相應(yīng)緩沖部分是不滿才重新啟動消息傳輸。優(yōu)選地,所述消息傳遞模塊在每個消息發(fā)送后立即進行完成操作。 優(yōu)選地,所述消息傳遞模塊使用流水的消息復(fù)制方法,使多個消息的發(fā)送
      和接收操作并行進行。優(yōu)選地,所述消息傳遞模塊在發(fā)送消息時將消息傳遞到接收方的共享通信 緩沖區(qū)中,在接收消息時將消息從接收方的共享通信緩沖區(qū)中取出。優(yōu)選地,所述消息傳遞模塊在發(fā)送消息時將消息傳遞到發(fā)送方的共享通信 緩沖區(qū)中,在接收消息時將消息從發(fā)送方的共享通信緩沖區(qū)中取出。優(yōu)選地,所述底層通信模塊還包括消息探詢模塊,用于探詢所述共享通信 緩沖區(qū)中是否有新的消息到達(dá),如果有新消息到達(dá)則通知協(xié)議棧接收消息。優(yōu)選地,所述消息探詢模塊周期性地逐一探詢其他節(jié)點的所述共享通信緩 沖區(qū)控制區(qū),確定在給本節(jié)點分配的所述共享通信緩沖區(qū)的緩沖部分中是否有 新的消息到達(dá);當(dāng)有新消息到達(dá)時,消息探詢模塊觸發(fā)一個軟中斷,通知協(xié)議 棧接收消息,當(dāng)沒有新消息到達(dá)時,消息探詢模塊等待一個周期,再次執(zhí)行探 詢操作。優(yōu)選地,所述周期設(shè)為一次時鐘中斷的時間周期。優(yōu)選地,所述節(jié)點設(shè)置為在所述軟中斷期間,所述消息探詢模塊執(zhí)行一 次探詢操作。優(yōu)選地,所述虛擬網(wǎng)卡包括設(shè)備控制模塊,用于對虛擬網(wǎng)卡設(shè)備初始化,并向節(jié)點注冊虛擬網(wǎng)卡的打 開和關(guān)閉;消息分析模塊,用于對需要發(fā)送的消息分析發(fā)送和接收地址;消息發(fā)送模塊,用于根據(jù)所述接收地址,傳遞給所述底層通信模塊;消息接收模塊,用于將所述底層通信模塊接收到的消息,封裝為系統(tǒng)內(nèi)核 的數(shù)據(jù)包,傳遞給所述協(xié)議棧。為了實現(xiàn)發(fā)明目的,本發(fā)明還提供一種數(shù)據(jù)傳輸裝置,用于基于非一致內(nèi) 存訪問平臺上的至少兩個節(jié)點之間傳輸數(shù)據(jù),該裝置與所述節(jié)點的協(xié)議棧連 接;其特征在于,包括用于在內(nèi)存中劃分出共享通信緩沖區(qū)及共享通信緩沖區(qū)控制區(qū),并將所述 共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點的共享通信緩沖區(qū)分配模塊;用于節(jié)點之間通過共享通信緩沖區(qū)進行消息傳遞的底層通信模塊,所述底 層通信模塊控制所述共享通信緩沖區(qū)和所述共享通信緩沖區(qū)控制區(qū);和將所述底層通信模塊模擬為網(wǎng)卡并與節(jié)點的協(xié)議棧連接的虛擬網(wǎng)卡。 優(yōu)選地,所述公告包括通過在一個節(jié)點所管理的內(nèi)存中建立一個公告區(qū)將 所述共享通信緩沖區(qū)的位置和大小在所述公告區(qū)公告。優(yōu)選地,所有所述節(jié)點的所述共享通信緩沖區(qū)分布在各自節(jié)點上進行管理。優(yōu)選地,所述協(xié)議棧是TCP/IP協(xié)議棧。 優(yōu)選地,所述底層通信模塊包括共享通信緩沖區(qū)管理模塊,用于在所述共享通信緩沖區(qū)中為其他節(jié)點分別 分配一個緩沖部分,并將所述緩沖部分的位置和大小進行公告,還用于監(jiān)控所 述共享通信緩沖區(qū)的狀態(tài)并將其狀態(tài)記錄在所述共享通信緩沖區(qū)控制區(qū)中;端口地址映射模塊,用于將消息傳輸?shù)慕邮辗焦?jié)點號映射到所述共享通信緩沖區(qū)的所述緩沖部分并在所述緩沖部分中尋找消息傳輸位置;消息傳遞模塊,用于在傳輸消息時從所述共享通信緩沖區(qū)的緩沖部分中完成消息發(fā)送和消息接收。優(yōu)選地,共享通信緩沖區(qū)管理模塊采用如下流控方法當(dāng)共享通信緩沖區(qū)的相應(yīng)緩沖部分滿,消息發(fā)送請求失敗時,共享通信緩沖區(qū)管理模塊將阻止繼 續(xù)產(chǎn)生消息傳輸事件,直到檢查到共享通信緩沖區(qū)的相應(yīng)緩沖部分是不滿才重 新啟動消息傳輸。優(yōu)選地,所述消息傳遞模塊在每個消息發(fā)送后立即進行完成操作。優(yōu)選地,所述消息傳遞模塊使用流水的消息復(fù)制方法,使多個消息的發(fā)送 和接收操作并行進行。優(yōu)選地,所述消息傳遞模塊在發(fā)送消息時將消息傳遞到接收方的共享通信 緩沖區(qū)中,在接收消息時將消息從接收方的共享通信緩沖區(qū)中取出。優(yōu)選地,所述消息傳遞模塊在發(fā)送消息時將消息傳遞到發(fā)送方的共享通信 緩沖區(qū)中,在接收消息時將消息從發(fā)送方的共享通信緩沖區(qū)中取出。優(yōu)選地,所述底層通信模塊還包括消息探詢模塊,用于探詢所述共享通信 緩沖區(qū)中是否有新的消息到達(dá),如果有新消息到達(dá)則通知協(xié)議棧接收消息。優(yōu)選地,所述消息探詢模塊周期性地逐一探詢其他節(jié)點的所述共享通信緩 沖區(qū)控制區(qū),確定在給本節(jié)點分配的所述共享通信緩沖區(qū)的緩沖部分中是否有新的消息到達(dá);當(dāng)有新消息到達(dá)時,消息探詢模塊觸發(fā)一個軟中斷,通知協(xié)議 棧接收消息,當(dāng)沒有新消息到達(dá)時,消息探詢模塊等待一個周期,再次執(zhí)行探
      詢操作。優(yōu)選地,所述周期設(shè)為一次時鐘中斷的時間周期。 優(yōu)選地,所述虛擬網(wǎng)卡包括設(shè)備控制模塊,用于對虛擬網(wǎng)卡設(shè)備初始化,并向節(jié)點注冊虛擬網(wǎng)卡的打 開和關(guān)閉;消息分析模塊,用于對需要發(fā)送的消息分析發(fā)送和接收地址; 消息發(fā)送模塊,用于根據(jù)所述接收地址,傳遞給所述底層通信模塊; 消息接收模塊,用于將所述底層通信模塊接收到的消息,封裝為系統(tǒng)內(nèi)核的數(shù)據(jù)包,傳遞給所述協(xié)議棧。為了實現(xiàn)發(fā)明目的,本發(fā)明還提供一種節(jié)點之間的數(shù)據(jù)傳輸方法,用于非一致內(nèi)存訪問平臺上的多個節(jié)點之間傳輸數(shù)據(jù),每個所述節(jié)點中包括至少一個處理器核和/或至少一個處理器以及其上運行的操作系統(tǒng),包括如下步驟步驟Sl,在所管理的內(nèi)存中劃分出共享通信緩沖區(qū)及共享通信緩沖區(qū)控制區(qū),并將所述共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點;步驟S2,當(dāng)發(fā)送方發(fā)送消息時,通過虛擬網(wǎng)卡將消息傳送到共享通信緩沖區(qū);步驟S3,當(dāng)接收方接收消息時,將消息從所述共享通信緩沖區(qū)中取出并 將取出的消息通過虛擬網(wǎng)卡傳送給操作系統(tǒng)的協(xié)議棧。優(yōu)選地,在所述步驟S1中,所述公告包括通過在內(nèi)存中建立一個公告區(qū), 所有所述節(jié)點將所述共享通信緩沖區(qū)的位置和大小在所述公告區(qū)公告。優(yōu)選地,所述步驟S1中的所有所述節(jié)點的所述共享通信緩沖區(qū)都集中在 其中一個節(jié)點上進行管理。優(yōu)選地,所述歩驟S1中的所有所述節(jié)點的所述共享通信緩沖區(qū)分布在各 自節(jié)點上進行管理。優(yōu)選地,步驟Sl中還包括在所述共享通信緩沖區(qū)中分別為其他節(jié)點分配 一個緩沖部分,并將所述緩沖部分的位置和大小進行公告。優(yōu)選地,所述步驟S2中包括流控方法當(dāng)所述共享通信緩沖區(qū)的相應(yīng)緩 沖部分滿,系統(tǒng)的消息發(fā)送請求失敗時,將阻止協(xié)議棧繼續(xù)產(chǎn)生消息傳輸事件, 直到檢査到共享通信緩沖區(qū)的相應(yīng)緩沖部分不滿才重新啟動消息傳輸。優(yōu)選地,步驟S2中,在每個消息發(fā)送后立即進行相應(yīng)的完成操作。
      優(yōu)選地,步驟S2中發(fā)送方采用流水方法發(fā)送消息。 優(yōu)選地,所述協(xié)議棧為TCP/IP協(xié)議棧。優(yōu)選地,步驟S3中還包括探詢步驟探詢所述共享通信緩沖區(qū)中是否有 新的消息到達(dá),如果有新消息到達(dá)則通知接收方協(xié)議棧接收消息。優(yōu)選地,所述探詢是周期地逐一探詢其它節(jié)點的共享通信緩沖區(qū)中是否有 新的消息到達(dá),如果有新消息到達(dá)則通過發(fā)起一個軟中斷來通知接收方協(xié)議棧 接收消息通知接收方協(xié)議棧接收消息。優(yōu)選地,所述周期為一次時鐘中斷的時間周期。優(yōu)選地,在所述軟中斷期間,所述探詢步驟只執(zhí)行一次探詢操作。優(yōu)選地,在步驟S3中接收方采用流水方法接收消息。優(yōu)選地,歩驟S2中發(fā)送方發(fā)送消息時將消息傳遞到接收方的共享通信緩 沖區(qū)中;步驟S3中接收方在接收消息時將消息從接收方的共享通信緩沖區(qū)中 取出。優(yōu)選地,步驟S2中發(fā)送方在發(fā)送消息時將消息傳遞到發(fā)送方的共享通信 緩沖區(qū)中,步驟S3中接收方在接收消息時將消息從發(fā)送方的共享通信緩沖區(qū) 中取出。與現(xiàn)有技術(shù)相比,本發(fā)明產(chǎn)生了如下的有益效果(1) 本發(fā)明的數(shù)據(jù)傳輸系統(tǒng)和裝置,實現(xiàn)于操作系統(tǒng)的協(xié)議棧下層,對 操作系統(tǒng)協(xié)議棧透明,保證了對用戶程序的二進制級兼容。(2) 本發(fā)明具有高性能的特點。通過基于系統(tǒng)總線級的采用消息傳遞方式的數(shù)據(jù)傳輸系統(tǒng)及其多種優(yōu)化方法,本發(fā)明為應(yīng)用程序提供了低延遲高帶寬 的傳輸性能。(3) 本發(fā)明具有良好的可移植性。由于本發(fā)明的數(shù)據(jù)傳輸裝置向協(xié)議棧 提供標(biāo)準(zhǔn)的網(wǎng)絡(luò)接口,同時僅使用內(nèi)存操作完成所有功能,因此具有良好的可 移植性。(4) 本發(fā)明具有較高的安全性。本發(fā)明基于系統(tǒng)總線級的數(shù)據(jù)傳輸系統(tǒng) 和裝置,重要的數(shù)據(jù)結(jié)構(gòu)和操作都需要進入操作系統(tǒng)完成,保證了系統(tǒng)的安全 性。(5) 本發(fā)明不需要特殊的硬件支持,比如不需要通信協(xié)處理器。在本發(fā) 明的一個實施方式中可以在通用的多核心非一致內(nèi)存訪問平臺上,透明、高效、
      安全的支持TCP/IP協(xié)議。


      圖1為本發(fā)明一個實施例的數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖;圖2為本發(fā)明一個實施例中的底層通信模塊102的結(jié)構(gòu)示意圖;圖3為本發(fā)明一個實施例中的虛擬網(wǎng)卡103的結(jié)構(gòu)示意圖;圖4為本發(fā)明一個實施例中的集中式通信緩沖區(qū)組織方式的示意圖;圖5為本發(fā)明一個實施例中的分布式通信緩沖區(qū)組織方式的示意圖;圖6為本發(fā)明一個實施例中的消息復(fù)制流水方法示意圖;圖7為共享通信緩沖區(qū)位于消息接收方時消息傳遞的訪存過程示意圖;圖8為共享通信緩沖區(qū)位于消息發(fā)送方時消息傳遞的訪存過程示意圖;圖9為本發(fā)明一個實施例中的數(shù)據(jù)傳輸方法流程圖;圖10為本發(fā)明的通信過程示意圖。
      具體實施方式
      下面結(jié)合附圖與具體實施方式
      對本發(fā)明作進一歩詳細(xì)描述。 在非一致內(nèi)存訪問(NUMA)平臺環(huán)境下,各個操作系統(tǒng)節(jié)點之間可以共享 物理內(nèi)存, 一個操作系統(tǒng)節(jié)點管理的處理器和/或處理器核可以訪問其他操作 系統(tǒng)節(jié)點的物理內(nèi)存區(qū)域。本發(fā)明所述的操作系統(tǒng)節(jié)點,或者簡稱為節(jié)點,為 在非一致內(nèi)存訪問平臺環(huán)境下包括至少一個處理器核和/或至少一個處理器, 以及在處理器核和/或處理器上運行的操作系統(tǒng)。作為一種具體實施方式
      ,本發(fā)明實施例以在各節(jié)點上運行Linux操作系統(tǒng) 和數(shù)據(jù)傳輸支持TCP/IP協(xié)議為例來詳細(xì)描述本發(fā)明,但應(yīng)當(dāng)說明的是,本發(fā) 明不限于此,其也可以應(yīng)用在其它操作系統(tǒng)以及其它的數(shù)據(jù)傳輸協(xié)議上。如圖l、 2所示, 一種節(jié)點之間的數(shù)據(jù)傳輸系統(tǒng),用于基于非一致內(nèi)存訪 問平臺上的至少兩個節(jié)點之間數(shù)據(jù)傳輸,圖中用標(biāo)號l、 2表示出其中的兩個 節(jié)點,每個所述節(jié)點中包括操作系統(tǒng)和操作系統(tǒng)中的TCP/IP協(xié)議棧11以及在 操作系統(tǒng)上運行的TCP/IP應(yīng)用程序。所述TCP/IP協(xié)議棧11用于向操作系統(tǒng)提供TCP/IP協(xié)議的支持; 所述節(jié)點還包括與所述TCP/IP協(xié)議棧11連接的數(shù)據(jù)傳輸裝置100;所述
      數(shù)據(jù)傳輸裝置100包括用于在內(nèi)存中劃分出共享通信緩沖區(qū)12及共享通信緩沖區(qū)控制區(qū)13,并 將所述共享通信緩沖區(qū)12的位置和大小公告給其它節(jié)點的共享通信緩沖區(qū)分 配模塊101;共享緩沖區(qū)分配模塊101在節(jié)點的操作系統(tǒng)啟動時就被加載,從 而完成劃分共享通信緩沖區(qū)12及共享通信緩沖區(qū)控制區(qū)13,并將所述共享通 信緩沖區(qū)12的位置和大小公告給其它節(jié)點的功能;用于節(jié)點之間通過共享通信緩沖區(qū)12進行消息傳遞的底層通信模塊102;所述底層通信模塊102控制用于存放消息的所述共享通信緩沖區(qū)12和用于存儲所述共享通信緩沖區(qū)的控制信息和狀態(tài)的共享通信緩沖區(qū)控制區(qū)13;和將所述底層通信模塊102模擬為網(wǎng)卡并與節(jié)點的協(xié)議棧11連接的虛擬網(wǎng) 卡103。本發(fā)明中,數(shù)據(jù)是采用消息傳遞的方式來傳輸?shù)模运鱿⒓礊閭鬏?的數(shù)據(jù)。較佳地,所述公告包括通過在一個節(jié)點所管理的內(nèi)存中建立一個公告區(qū), 所有所述節(jié)點將所述共享通信緩沖區(qū)12的位置和大小在所述公告區(qū)公告。例 如,在其中一個節(jié)點所管理的內(nèi)存中建立一個公告區(qū),其它節(jié)點都將自身的所 述共享通信緩沖區(qū)12位置和大小在該公告區(qū)公告并在該公告區(qū)査詢其它節(jié)點 的共享通信緩沖區(qū)12的位置和大小。較佳地,作為一種可實施的方式,各節(jié)點的所述共享通信緩沖區(qū)12是集 中式共享通信緩沖區(qū)。如圖4所示是集中式共享通信緩沖區(qū)12示意圖,這種 方式在其中一個通信節(jié)點(比如通信節(jié)點l)的本地內(nèi)存中劃分出一塊較大的 物理內(nèi)存用做共享通信緩沖區(qū)12,并為每一個節(jié)點1、 2……N分別分配一個 緩沖部分l、 2……N,所有節(jié)點間的通信都使用該緩沖區(qū)的一部分。這種方式 的好處是緩沖區(qū)的管理比較簡單,實現(xiàn)容易。較佳地,作為另一種可實施的方式,各節(jié)點的所述共享通信緩沖區(qū)12是 分布式共享通信緩沖區(qū)。如圖5所示是分布式共享通信緩沖區(qū)示意圖,其中多 個通信節(jié)點1-N就是前面介紹的節(jié)點,每個節(jié)點上都包括共享通信緩沖區(qū)12, 所有的共享通信緩沖區(qū)12都連接到內(nèi)存總線。每個共享通信緩沖區(qū)12的大小 可以設(shè)置相同也可以不同。在分布式共享通信緩沖區(qū)的組織方式下,任意的兩 個通信節(jié)點之間通信時,必然僅有一次本地內(nèi)存訪問,而另一次內(nèi)存訪問則為
      速度較慢的遠(yuǎn)程內(nèi)存訪問,所以系統(tǒng)總體的訪存速度快于集中式共享通信緩沖 區(qū);同時這種方式的可擴展性也比較好,共享通信緩沖區(qū)的內(nèi)存開銷平均的分 布到各個通信節(jié)點中,每個通信節(jié)點都僅需要占用較小的內(nèi)存。較佳地,參照圖2,針對分布式共享通信緩沖區(qū)的組織方式來詳細(xì)說明本發(fā)明的底層通信模塊102。底層通信模塊102控制用于存放消息的所述共享通 信緩沖區(qū)12和用于存儲所述共享通信緩沖區(qū)的控制信息和狀態(tài)的共享通信緩沖區(qū)控制區(qū)13;所述控制信息包括傳輸消息的位置等,傳輸消息的位置在數(shù)據(jù)結(jié)構(gòu)中即數(shù)據(jù)指針;所述狀態(tài)包括所述共享緩沖區(qū)12的相應(yīng)部分是空或滿 等狀態(tài)。參照圖2,所述底層通信模塊102包括共享通信緩沖區(qū)管理模塊201,用于在所述共享通信緩沖區(qū)12中分別為 其他節(jié)點分配一個緩沖部分,并將所述緩沖部分的位置和大小進行公告;共享 通信緩沖區(qū)管理模塊201還在操作系統(tǒng)運行中監(jiān)控所述共享通信緩沖區(qū)12的狀態(tài)并將其狀態(tài)記錄在所述共享通信緩沖區(qū)控制區(qū)13中;該狀態(tài)包括所述共享通信緩沖區(qū)12的相應(yīng)部分即所述緩沖部分是空或滿等狀態(tài)。端口地址映射模塊202,用于將消息傳輸?shù)慕邮辗焦?jié)點號映射到所述共享 通信緩沖區(qū)12的所述接收方節(jié)點對應(yīng)的緩沖部分,并在所述緩沖部分中尋找 消息傳輸位置。例如發(fā)送方的節(jié)點號為A,接收方的節(jié)點號為B,發(fā)送方在自 身的共享通信緩沖區(qū)中為節(jié)點B分配的緩沖部分的內(nèi)存地址為address—B,則 該端口地址映射模塊202能夠在節(jié)點需要發(fā)送消息時將接收方節(jié)點號B映射到 內(nèi)存地址address—B,并在該緩沖部分中找到數(shù)據(jù)指針,即可以用于傳輸消息 的位置。節(jié)點號是指用戶為了識別不同節(jié)點而編的號,并使每個節(jié)點能夠獲得 通信另一方的節(jié)點號,這可由操作系統(tǒng)中的信息獲得。消息傳遞模塊203,采用處理器內(nèi)存拷貝功能從所述共享通信緩沖區(qū)12 的緩沖部分中完成消息發(fā)送和從發(fā)送方所述共享通信緩沖區(qū)12的緩沖部分中 完成消息接收。例如所述消息傳遞模塊203根據(jù)端口地址映射模塊202映射的 內(nèi)存地址和找到的消息傳輸位置,將需要發(fā)送的消息拷貝到相應(yīng)的緩沖部分 中,等待接收方接收消息;消息傳遞模塊203接收消息時,則從發(fā)送方所述共 享通信緩沖區(qū)12的緩沖部分中將消息拷貝出來。較佳地,共享通信緩沖區(qū)管理模塊201實現(xiàn)一個簡單的流控方法,g卩當(dāng) 共享通信緩沖區(qū)12的相應(yīng)緩沖部分滿,消息發(fā)送請求失敗時,共享通信緩沖 區(qū)管理模塊201將阻止繼續(xù)產(chǎn)生消息傳輸事件,直到檢查到共享通信緩沖區(qū) 12的相應(yīng)緩沖部分是可用(即共享通信緩沖區(qū)12的相應(yīng)緩沖部分不滿)才重新啟動消息傳輸。例如,當(dāng)共享通信緩沖區(qū)12中對應(yīng)于一個節(jié)點的緩沖部分 滿,消息發(fā)送請求失敗時,共享通信緩沖區(qū)管理模塊201將通知虛擬網(wǎng)卡103 接口消息發(fā)送失敗,并使用接口,如Linux接口 netif_stop—queue函數(shù),阻 止虛擬網(wǎng)卡13繼續(xù)產(chǎn)生消息傳輸事件,在等待一個預(yù)定的超時時間(比如可 以預(yù)定為一次時鐘中斷的時間周期)后,共享通信緩沖區(qū)管理模塊201重新檢 査共享通信緩沖區(qū)12是否可用(即共享通信緩沖區(qū)12的相應(yīng)緩沖部分不滿), 如果可用,則調(diào)用netif—wake—queue重新啟動消息傳輸;如果仍然不可用, 則繼續(xù)等待下一次超時。通過這種方式,可以避免消息發(fā)送方在共享通信緩沖 區(qū)的緩沖部分滿的情況下不斷發(fā)送消息,使得大量消息被丟棄重發(fā)。較佳地,在消息傳遞模塊203中,在每個消息發(fā)送后進行相應(yīng)的完成操作, 而對于消息發(fā)送失敗的情況則交由上層核心TCP協(xié)議棧11的重發(fā)機制實現(xiàn)。 也就是說,本發(fā)明認(rèn)為在消息傳遞模塊203中發(fā)送消息一定是正常完成的,所 以并不等待完成事件就進行相應(yīng)的完成操作,而對于消息發(fā)送失敗的情況則交 由上層核心TCP協(xié)議棧11的重發(fā)機制實現(xiàn)。由于消息發(fā)送失敗的概率非常小, 所以這種開銷是比較小的。然而在現(xiàn)有技術(shù)中,當(dāng)消息發(fā)送完成后,傳統(tǒng)的網(wǎng) 絡(luò)硬件驅(qū)動程序需要立刻進行相應(yīng)的處理,釋放發(fā)送緩沖區(qū),更新設(shè)備狀態(tài), 準(zhǔn)備發(fā)送下一個消息,這樣才能使得消息的發(fā)送盡量的連續(xù)進行??梢?,現(xiàn)有 技術(shù)會使得操作系統(tǒng)被中斷的次數(shù)大幅增加,而本發(fā)明采用簡單方式使得消息 發(fā)送連續(xù)進行,是具有優(yōu)越性的。較佳地,所述消息傳遞模塊203采用流水方法來發(fā)送消息和接收消息。在 全局共享物理內(nèi)存的條件下,通信雙方都可以訪問到對方的物理內(nèi)存。本發(fā)明 針對TCP/IP協(xié)議的通信特點——數(shù)據(jù)包大小較小,采用了基于共享通信緩沖 區(qū)的通信方式,提出了一種基于消息流水的免握手?jǐn)?shù)據(jù)通信方法,利用通信消 息的發(fā)送方和接收方異步操作的特點,使用流水的消息復(fù)制技術(shù)。如圖6所示, 采用流水方法發(fā)送和接收消息是指,發(fā)送方在發(fā)送完一個消息后接著發(fā)送下一 個消息,接收方在接收一個消息后接著接收下一個消息,這樣發(fā)送和接收操作 分別是連續(xù)進行的并且是并行進行,如圖6中所示連續(xù)發(fā)送消息1、發(fā)送消息 2……,連續(xù)接收消息l、接收消息2……。這種流水方法的消息發(fā)送和消息接
      收方式加快了數(shù)據(jù)傳輸?shù)乃俣取S捎赥CP/IP協(xié)議會將上層應(yīng)用的大消息分片為最大傳輸單元(Maximum Transmission Unit, MTU)大小,所以在底層通信的過程中,需傳遞的消息大小 有限,同時,TCP協(xié)議中每個消息都有一個確認(rèn)回復(fù)消息,所以通信網(wǎng)絡(luò)中小 消息數(shù)量較多,小消息的延遲性能是底層網(wǎng)絡(luò)更重要的性能指標(biāo)。本發(fā)明通過 基于消息流水的免握手?jǐn)?shù)據(jù)通信方法,使底層通信模塊102在保持了底層較低 的通信延遲的情況下,底層通信帶寬基本接近了基于握手協(xié)商的通信方式,取 得了較好的效果。較佳地,作為一種可實施方式,所述消息傳遞模塊203在發(fā)送消息時將消 息數(shù)據(jù)傳遞到接收方的共享通信緩沖區(qū)12中,在接收消息時將消息從接收方 的共享通信緩沖區(qū)12中取出。這種方式可以稱為接收方緩沖方法。較佳地,作為另一種可實施方式,所述消息傳遞模塊203在發(fā)送消息時將 消息數(shù)據(jù)傳遞到發(fā)送方的共享通信緩沖區(qū)12中,在接收消息時將消息從發(fā)送 方的共享通信緩沖區(qū)12中取出。這種方式可以稱為發(fā)送方緩沖方法。下面介紹發(fā)送方緩沖方法的優(yōu)點在底層通信模塊102中,訪存操作是系 統(tǒng)最頻繁的操作之一,而系統(tǒng)的內(nèi)存為非一致內(nèi)存訪問(NUMA)結(jié)構(gòu),訪存 速度并不均一,所以應(yīng)該組織共享通信緩沖區(qū)以減少訪存次數(shù)。下面僅介紹在 AMD x86—64的cc-NUMA平臺上進行數(shù)據(jù)傳輸時的共享通信緩沖區(qū)位置問 題。在AMDx86一64的帶有高速緩存一致性的非一致內(nèi)存訪問(cc-NUMA)平臺 上實現(xiàn)的基于監(jiān)聽的高速緩存(Cache) —致性協(xié)議——M0ESI協(xié)議,為了維 護內(nèi)存一致性,在任何一個處理器(CPU)要高速緩存的物理內(nèi)存時,都需要 首先獲得該內(nèi)存最近的正確的復(fù)本。而這個復(fù)本有可能在主存中,也有可能在 別的處理器的高速緩存中。這種情況下,當(dāng)一個處理器發(fā)生了讀高速緩存不命 中或?qū)懜咚倬彺娌幻袝r,它會在高速緩存總線上探査是否有別的處理器高速 緩存了正確的消息。如果有別的處理器的高速緩存中的消息是最新并且正確 的,它會通過高速緩存總線復(fù)制該復(fù)本到本地高速緩存中使用,如果不存在正 確的高速緩存數(shù)據(jù),則再通過存儲器總線從主存中復(fù)制該數(shù)據(jù)到本地高速緩存 中使用。從這個過程中可以明顯看出,如果其他處理器中高速緩存命中,那么 讀寫數(shù)據(jù)的速度會明顯快于主存儲器中的讀寫操作。在采用分布式共享通信緩
      沖區(qū)時,共享通信緩沖區(qū)位于發(fā)送方還是接收方時,共享通信緩沖區(qū)的訪存模 式是不同的。分別討論如下當(dāng)選擇使用位于消息接收方的共享通信緩沖區(qū)時,如下圖7所示, 一次通 信過程中消息傳遞的訪存操作為① 本地高速緩存命中讀② 遠(yuǎn)地高速緩存不命中寫③ 本地高速緩存不命中讀 本地高速緩存不命中寫當(dāng)選擇使用位于消息發(fā)送方的共享通信緩沖區(qū)時,如下圖8所示, 一次通 信過程中消息傳遞的訪存操作為① 本地高速緩存命中讀② 本地高速緩存不命中寫③ 遠(yuǎn)地高速緩存不命中讀④ 本地高速緩存不命中寫。分析這4步操作,兩種共享通信緩沖區(qū)組織方式下,步驟①、 的速度相 同。步驟②由于系統(tǒng)為NUMA結(jié)構(gòu),讀寫本地內(nèi)存的速度要快于讀寫遠(yuǎn)地內(nèi)存 的速度,所以共享通信緩沖區(qū)位于發(fā)送方使得步驟②速度更快。對于歩驟③, 原本應(yīng)與步驟②類似,使得兩種共享通信緩沖區(qū)組織方式的性能基本相同,但 根據(jù)上文討論的AMD x86_64高速緩存一致性協(xié)議的特性,遠(yuǎn)地高速緩存不命 中后并沒有真正從遠(yuǎn)地內(nèi)存中讀取,而是從遠(yuǎn)地處理器的高速緩存中讀取,所 以速度基本相同。這樣綜合考慮,共享通信緩沖區(qū)位于發(fā)送方的緩沖區(qū)策略的 整體通信性能更優(yōu)。根據(jù)上面的分析,采用基于發(fā)送方緩沖的分布式共享通信緩沖區(qū)組織方 式,并且在發(fā)送消息時是將消息拷貝到發(fā)送方本地節(jié)點的共享通信緩沖區(qū)中, 再由接收方處理器從上述共享通信緩沖區(qū)取走。即通過將專有共享的通信緩沖 區(qū)分布到各個通信節(jié)點上,保證了系統(tǒng)的訪存速度和可擴展性,同時基于發(fā)送 方緩存的緩存策略,更進一步優(yōu)化了通信關(guān)鍵路徑上的訪存性能。較佳地,所述底層通信模塊102還包括消息探詢模塊204,用于探詢其它 節(jié)點的所述共享通信緩沖區(qū)控制區(qū)13,確定在給本節(jié)點分配的緩沖部分中是 否有新的消息到達(dá),如果有新消息到達(dá)則通知協(xié)議棧11接收消息。
      較佳地,消息探詢模塊204主動周期性地逐一探詢其它節(jié)點的共享通信緩 沖區(qū)控制區(qū)13,確定是否有新的消息到達(dá);當(dāng)有新消息到達(dá)時,消息探詢模 塊203觸發(fā)一個軟中斷,通知協(xié)議棧ll接收消息,當(dāng)沒有新消息到達(dá)時,消息探詢模塊203則等待一段預(yù)定時間,再次執(zhí)行探詢操作。較佳地,所述預(yù)定時間比如可以設(shè)為一次時鐘中斷的時間周期。較佳地,在所述軟中斷期間,所述消息探詢模塊203只執(zhí)行一次探詢操作。 這樣做的原因是:通過分析現(xiàn)有技術(shù)的Linux內(nèi)核下Tasklet機制的實現(xiàn)發(fā)現(xiàn), 在一次軟中斷處理函數(shù)do一softirq中,處理函數(shù)會反復(fù)檢査是否有新的 Tasklet被調(diào)度,如果存在新的Tasklet被調(diào)度,則調(diào)度執(zhí)行該Tasklet處理 函數(shù),直到一個預(yù)定義的査詢閥值次數(shù)。現(xiàn)有技術(shù)的這種機制是為了保證盡快 地處理Tasklet請求,而不斷地調(diào)度自身使得Tasklet處理函數(shù)多次空執(zhí)行, 實際上延誤了消息的接收操作。所以本發(fā)明中消息探詢模塊206采用稀疏 Tasklet技術(shù),使得每次軟中斷do—softirq期間只執(zhí)行一次探詢操作。這樣 做的好處是減少了空探詢操作的次數(shù),在通信效果上進一步降低了通信延遲。由上面的描述可見,共享通信緩沖區(qū)12和共享通信緩沖區(qū)控制區(qū)13形成 一個通信共享區(qū)域以用于消息發(fā)送方和接收方進行數(shù)據(jù)通信;共享通信緩沖區(qū) 管理模塊201和端口地址映射模塊202形成對所述通信共享區(qū)域進行管理的管 理模塊區(qū)域;消息傳遞模塊203和消息探詢模塊204形成與虛擬網(wǎng)卡連接的向 上接口區(qū)域。底層通信模塊102的工作方式為消息的發(fā)送方和接收方共享所述共享通 信緩沖區(qū)12及所述共享通信緩沖區(qū)控制區(qū)13;當(dāng)發(fā)送方要發(fā)送消息時,發(fā)送 方首先根據(jù)共享通信緩沖區(qū)控制區(qū)13的指示,計算出接收方在共享通信緩沖 區(qū)12中的緩沖部分的地址,使用處理器內(nèi)存拷貝功能,將要傳送的消息復(fù)制 到共享通信緩沖區(qū)12的與發(fā)送方對應(yīng)的緩沖部分中,隨后更新共享通信緩沖 區(qū)控制區(qū)13的控制信息和共享通信緩沖區(qū)狀態(tài),消息發(fā)送即可完成;各節(jié)點 的消息探詢模塊204周期性地探詢其它節(jié)點的共享通信緩沖區(qū)控制區(qū)13中的 相應(yīng)緩沖部分確定是否有新的消息發(fā)來;當(dāng)接收方探詢到有新消息發(fā)來需要收 取消息時,接收方也根據(jù)發(fā)送方共享通信緩沖區(qū)控制區(qū)13中的控制信息計算 出共享通信緩沖區(qū)12中相應(yīng)緩沖部分的地址,再使用處理器做內(nèi)存復(fù)制,將 消息數(shù)據(jù)從共享通信緩沖區(qū)取出,并更新共享通信緩沖區(qū)控制區(qū)13,即完成
      了消息的接收操作。因此,底層通信模塊102基于共享內(nèi)存操作,實現(xiàn)了傳統(tǒng) 的底層通信硬件在通信過程中起到的最重要功能,實現(xiàn)了在無通信協(xié)處理器環(huán) 境下的消息傳遞語義。從上面對底層通信模塊的工作過程的介紹可以看出由于發(fā)送方和接收方 是異步操作,即發(fā)送方并不是直接將消息發(fā)送給接收方,而是將消息拷貝到共 享通信緩沖區(qū)中等待接收方來去,接收方也不是在對方將消息發(fā)送完成后立刻 接收消息的,而是在探詢到有新消息到來時才開始接收消息。所以接收方可以 在發(fā)送方發(fā)送第二個消息的同時執(zhí)行接收操作,這種流水線方法就加快了數(shù)據(jù) 傳輸?shù)乃俣?。較佳地,虛擬網(wǎng)卡103用于將底層通信模塊模擬為一個向上層Li皿X內(nèi)核協(xié)議棧11提供了傳統(tǒng)網(wǎng)絡(luò)接口所需要的功能。參照圖3,所述虛擬網(wǎng)卡103包括設(shè)備控制模塊301,用于對虛擬網(wǎng)卡設(shè)備初始化,并向節(jié)點注冊虛擬網(wǎng)卡的打幵和關(guān)閉,以及狀態(tài)査詢(如查詢發(fā)送或接收了多少個消息)等其它操作;消息分析模塊302,用于對來自上層TCP/IP協(xié)議棧的每一個需要發(fā)送的 消息,分析消息的發(fā)送和接收地址,實現(xiàn)IP地址與MAC地址的映射,填充消 息包的包頭字段,同時,根據(jù)接收方IP地址分析接收方節(jié)點的節(jié)點號,并傳 遞消息發(fā)送模塊303;消息發(fā)送模塊303,用于將TCP/IP協(xié)議棧需要發(fā)送的消息,根據(jù)所述接 收方節(jié)點的節(jié)點號,傳遞給底層通信模塊發(fā)送;消息接收模塊304,用于將所述底層通信模塊接收到的消息,封裝為系統(tǒng) 內(nèi)核的數(shù)據(jù)包,向上傳遞給所述TCP/IP協(xié)議棧101進行處理。本實施例通過虛擬網(wǎng)卡103,虛擬出了一個功能完備的以太網(wǎng)卡,使 TCP/IP與用戶進程不能察覺底層網(wǎng)絡(luò)硬件缺失,達(dá)到完全透明支持上層 TCP/IP應(yīng)用的發(fā)明目的。根據(jù)圖9的流程圖, 一種節(jié)點之間的數(shù)據(jù)傳輸方法,用于非一致內(nèi)存訪問 (NUMA)平臺上的多個節(jié)點之間傳輸數(shù)據(jù),每個所述節(jié)點中包括至少一個處理 器核和/或至少一個處理器以及其上運行的操作系統(tǒng),包括如下步驟歩驟Sl,通過共享緩沖區(qū)分配模塊劃分出共享通信緩沖區(qū)及共享通信緩 沖區(qū)控制區(qū),并將所述共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點。
      較佳地,所述公告包括通過在內(nèi)存中建立一個公告區(qū)將所述共享通信緩沖 區(qū)的位置和大小在所述公告區(qū)公告。例如,在其中一個節(jié)點所管理的內(nèi)存中建 立一個公告區(qū),其它節(jié)點都將自身的所述共享通信緩沖區(qū)位置和大小在該公告 區(qū)公告并在該公告區(qū)査詢其它節(jié)點的共享通信緩沖區(qū)位置和大小。較佳地,作為一種可實施的方式,所述共享通信緩沖區(qū)是集中式共享通信 緩沖區(qū)。如圖4所示是集中式共享通信緩沖區(qū)示意圖,這種方式在其中一個通 信節(jié)點(比如通信節(jié)點l)的本地內(nèi)存中劃分出一塊較大的物理內(nèi)存用做共享通信緩沖區(qū),并為每一個節(jié)點l、 2……N分別分配一個緩沖部分l、 2……N, 所有節(jié)點間的通信都使用該緩沖區(qū)的一部分。這種方式的好處是緩沖區(qū)的管理 比較簡單,實現(xiàn)容易。較佳地,作為一種可實施的方式,所述共享通信緩沖區(qū)是分布式共享通信 緩沖區(qū)。如圖5所示是分布式共享通信緩沖區(qū)示意圖,其中多個通信節(jié)點1-N 就是前面介紹的節(jié)點,每個節(jié)點上都包括共享通信緩沖區(qū)12,所有的共享通 信緩沖區(qū)12都連接到內(nèi)存總線。每個共享通信緩沖區(qū)的大小可以設(shè)置相同也 可以不同。在分布式共享通信緩沖區(qū)的組織方式下,任意的兩個通信節(jié)點之間 通信時,必然僅有一次本地內(nèi)存訪問,而另一次內(nèi)存訪問則為速度較慢的遠(yuǎn)地 內(nèi)存訪問,所以系統(tǒng)總體的訪存速度快于集中式共享通信緩沖區(qū);同時這種方 式的可擴展性也比較好,共享通信緩沖區(qū)的內(nèi)存開銷平均的分布到各個通信節(jié) 點中,每個通信節(jié)點都僅需要占用較小的內(nèi)存。較佳地,步驟S1中還包括在所述共享通信緩沖區(qū)中分別為其他節(jié)點分配 一個緩沖部分,并將所述緩沖部分的位置和大小進行公告。步驟S2,當(dāng)發(fā)送方發(fā)送消息時,通過虛擬網(wǎng)卡將消息傳送到共享通信緩 沖區(qū)。較佳地,所述步驟S2中包括流控方法當(dāng)所述共享通信緩沖區(qū)12的相應(yīng) 緩沖部分滿,系統(tǒng)的消息發(fā)送請求失敗時,共享通信緩沖區(qū)管理模塊201將阻 止繼續(xù)產(chǎn)生消息傳輸事件,直到檢査到共享通信緩沖區(qū)12的相應(yīng)緩沖部分是 可用(即共享通信緩沖區(qū)12的相應(yīng)緩沖部分不滿)才重新啟動數(shù)據(jù)傳輸。較佳地,步驟S2中,在每個消息發(fā)送后立即進行相應(yīng)的完成操作;這樣 對于消息發(fā)送失敗的情況交由操作系統(tǒng)協(xié)議棧的重發(fā)機制實現(xiàn)。較佳地,發(fā)送方采用流水方法來發(fā)送消息。
      歩驟S3,當(dāng)接收方接收消息時,將消息從所述共享通信緩沖區(qū)中取出并 將取出的消息通過虛擬網(wǎng)卡傳送給操作系統(tǒng)的協(xié)議棧。 較佳地,所述協(xié)議棧為TCP/IP協(xié)議棧。較佳地,步驟S3中還包括探詢步驟探詢所述共享通信緩沖區(qū)控制區(qū), 確定在共享通信緩沖區(qū)中是否有新的消息到達(dá),如果有消息到達(dá)則通知接收方 協(xié)議棧接收消息。較佳地,所述探詢是周期性地逐一探詢其它節(jié)點的共享通信緩沖區(qū),當(dāng)有 新消息到達(dá)時通過發(fā)起一個軟中斷來通知接收方協(xié)議棧接收消息。 較佳地,所述周期比如可以設(shè)為一次時鐘中斷的時間周期。 較佳地,在所述軟中斷期間,所述探詢步驟只執(zhí)行一次探詢操作。 較佳地,接收方采用流水方法來接收消息。較佳地,作為一種可實施方式,步驟S2中發(fā)送方發(fā)送消息時將消息數(shù)據(jù)傳遞到接收方的共享通信緩沖區(qū)中;步驟S3中接收方在接收消息時將消息從 接收方的共享通信緩沖區(qū)中取出。較佳地,作為一種可實施方式,步驟S2中發(fā)送方在發(fā)送消息時將消息數(shù) 據(jù)傳遞到發(fā)送方的共享通信緩沖區(qū)中,步驟S3中接收方在接收消息時將消息 從發(fā)送方的共享通信緩沖區(qū)中取出。以上詳細(xì)介紹了本發(fā)明的數(shù)據(jù)傳輸系統(tǒng)和裝置及方法??傮w來說,如圖 10所示,本發(fā)明是基于共享通信緩沖區(qū)及共享通信緩沖區(qū)控制區(qū),通過底層 通信模塊進行地址映射和轉(zhuǎn)換操作,消息由處理器核或者處理器從發(fā)送方套接 字緩沖區(qū)復(fù)制到共享通信緩沖區(qū)的、專門為接收方分配的緩存位置;接收方周 期性地探詢各個操作系統(tǒng)節(jié)點的共享通信緩沖區(qū)中專門為其分配的緩沖位置, 當(dāng)在該位置處探詢到消息時,則由接收方處理器從該位置取出消息并復(fù)制到接 收方套接字緩沖區(qū)中,實現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)在通信雙方操作系統(tǒng)節(jié)點之間的傳輸。 并且傳輸?shù)南⒍纪ㄟ^一個虛擬網(wǎng)卡來發(fā)送和接收,從而避免了采用硬件來傳 輸數(shù)據(jù)。與基于通信硬件的通信流程相比,本發(fā)明在通信的關(guān)鍵路徑上不需要經(jīng)過 DMA從內(nèi)存到硬件緩沖區(qū),再經(jīng)過通信硬件網(wǎng)絡(luò)傳輸,再從對方硬件緩沖區(qū)到 內(nèi)存的三個步驟,減少了通信的開銷;同時避免了通信數(shù)據(jù)訪問慢速的外部總 線(如PCI總線),而是通過高速內(nèi)存總線直接從本地內(nèi)存復(fù)制到遠(yuǎn)地內(nèi)存,
      速度較快;另一方面,通信數(shù)據(jù)僅經(jīng)過內(nèi)存總線的傳輸,不需要特殊硬件支持的條件下,可以透明、高效的支持TCP/IP協(xié)議,相比于通過通信網(wǎng)絡(luò)的傳輸,也具有更高的可靠性和良好的可移植性以上所述內(nèi)容,僅為本發(fā)明具體的實施方式,但本發(fā)明的保護范圍并不局 限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易 想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍內(nèi)。
      權(quán)利要求
      1、一種節(jié)點之間的數(shù)據(jù)傳輸系統(tǒng),用于基于非一致內(nèi)存訪問平臺上的至少兩個節(jié)點之間數(shù)據(jù)傳輸,所述節(jié)點包括至少一個處理器核和/或至少一個處理器、操作系統(tǒng)和操作系統(tǒng)中的協(xié)議棧;其特征是,所述節(jié)點還包括與所述協(xié)議棧連接的數(shù)據(jù)傳輸裝置;所述數(shù)據(jù)傳輸裝置包括用于在內(nèi)存中劃分出共享通信緩沖區(qū)及共享通信緩沖區(qū)控制區(qū),并將所述共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點的共享通信緩沖區(qū)分配模塊;用于節(jié)點之間通過共享通信緩沖區(qū)進行消息傳遞的底層通信模塊;所述底層通信模塊控制所述共享通信緩沖區(qū)和所述共享通信緩沖區(qū)控制區(qū);和將所述底層通信模塊模擬為網(wǎng)卡并與節(jié)點的協(xié)議棧連接的虛擬網(wǎng)卡。
      2、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述公告包括通過 在一個節(jié)點所管理的內(nèi)存中建立一個公告區(qū),所有所述節(jié)點將所述共享通信緩 沖區(qū)的位置和大小在所述公告區(qū)公告。
      3、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所有所述節(jié)點的所 述共享通信緩沖區(qū)都集中在其中一個節(jié)點上進行管理。
      4、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所有所述節(jié)點的所 述共享通信緩沖區(qū)分布在各自節(jié)點上進行管理。
      5、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述協(xié)議棧是TCP/IP 協(xié)議棧。
      6、 根據(jù)權(quán)利要求1至5任一項所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述底 層通信模塊包括共享通信緩沖區(qū)管理模塊,用于在所述共享通信緩沖區(qū)中為其他節(jié)點分別 分配一個緩沖部分,并將所述緩沖部分的位置和大小進行公告,還用于監(jiān)控所 述共享通信緩沖區(qū)的狀態(tài)并將其狀態(tài)記錄在所述共享通信緩沖區(qū)控制區(qū)中;端口地址映射模塊,用于將消息傳輸?shù)慕邮辗焦?jié)點號映射到所述共享通信 緩沖區(qū)的所述緩沖部分并在所述緩沖部分中尋找消息傳輸位置;消息傳遞模塊,用于在傳輸消息時從所述共享通信緩沖區(qū)的緩沖部分中完 成消息發(fā)送和消息接收。
      7、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,共享通信緩沖區(qū)管 理模塊采用如下流控方法當(dāng)共享通信緩沖區(qū)的相應(yīng)緩沖部分滿,消息發(fā)送請 求失敗時,共享通信緩沖區(qū)管理模塊將阻止繼續(xù)產(chǎn)生消息傳輸事件,直到檢查 到共享通信緩沖區(qū)的相應(yīng)緩沖部分是不滿才重新啟動消息傳輸。
      8、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述消息傳遞模塊在每個消息發(fā)送后立即進行完成操作。
      9、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述消息傳遞模塊 使用流水的消息復(fù)制方法,使多個消息的發(fā)送和接收操作并行進行。
      10、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述消息傳遞模塊 在發(fā)送消息時將消息傳遞到接收方的共享通信緩沖區(qū)中,在接收消息時將消息 從接收方的共享通信緩沖區(qū)中取出。
      11、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述消息傳遞模塊在發(fā)送消息時將消息傳遞到發(fā)送方的共享通信緩沖區(qū)中,在接收消息時將消息 從發(fā)送方的共享通信緩沖區(qū)中取出。
      12、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述底層通信模塊 還包括消息探詢模塊,用于探詢所述共享通信緩沖區(qū)中是否有新的消息到達(dá), 如果有新消息到達(dá)則通知協(xié)議棧接收消息。
      13、 根據(jù)權(quán)利要求12所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述消息探詢模 塊周期性地逐一探詢其他節(jié)點的所述共享通信緩沖區(qū)控制區(qū),確定在給本節(jié)點 分配的所述共享通信緩沖區(qū)的緩沖部分中是否有新的消息到達(dá);當(dāng)有新消息到 達(dá)時,消息探詢模塊觸發(fā)一個軟中斷,通知協(xié)議棧接收消息,當(dāng)沒有新消息到 達(dá)時,消息探詢模塊等待一個周期,再次執(zhí)行探詢操作。
      14、 根據(jù)權(quán)利要求13所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述周期設(shè)為一 次時鐘中斷的時間周期。
      15、 根據(jù)權(quán)利要求13所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述節(jié)點設(shè)置為 在所述軟中斷期間,所述消息探詢模塊執(zhí)行一次探詢操作。
      16、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)傳輸系統(tǒng),其特征是,所述虛擬網(wǎng)卡包括 設(shè)備控制模塊,用于對虛擬網(wǎng)卡設(shè)備初始化,并向節(jié)點注冊虛擬網(wǎng)卡的打開和關(guān)閉;消息分析模塊,用于對需要發(fā)送的消息分析發(fā)送和接收地址; 消息發(fā)送模塊,用于根據(jù)所述接收地址,傳遞給所述底層通信模塊;消息接收模塊,用于將所述底層通信模塊接收到的消息,封裝為系統(tǒng)內(nèi)核 的數(shù)據(jù)包,傳遞給所述協(xié)議棧。
      17、 一種數(shù)據(jù)傳輸裝置,用于基于非一致內(nèi)存訪問平臺上的至少兩個節(jié)點 之間傳輸數(shù)據(jù),該裝置與所述節(jié)點的協(xié)議棧連接;其特征在于,包括用于在內(nèi)存中劃分出共享通信緩沖區(qū)及共享通信緩沖區(qū)控制區(qū),并將所述 共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點的共享通信緩沖區(qū)分配模塊;用于節(jié)點之間通過共享通信緩沖區(qū)進行消息傳遞的底層通信模塊,所述底 層通信模塊控制所述共享通信緩沖區(qū)和所述共享通信緩沖區(qū)控制區(qū);和將所述底層通信模塊模擬為網(wǎng)卡并與節(jié)點的協(xié)議棧連接的虛擬網(wǎng)卡。
      18、 根據(jù)權(quán)利要求17所述的數(shù)據(jù)傳輸裝置,其特征是,所述公告包括通 過在一個節(jié)點所管理的內(nèi)存中建立一個公告區(qū)將所述共享通信緩沖區(qū)的位置 和大小在所述公告區(qū)公告。
      19、 根據(jù)權(quán)利要求17所述的數(shù)據(jù)傳輸裝置,其特征是,所有所述節(jié)點的 所述共享通信緩沖區(qū)分布在各自節(jié)點上進行管理。
      20、 根據(jù)權(quán)利要求17所述的數(shù)據(jù)傳輸裝置,其特征是,所述協(xié)議棧是 TCP/IP協(xié)議棧。
      21、 根據(jù)權(quán)利要求17至20中任一項所述的數(shù)據(jù)傳輸裝置,其特征是,所 述底層通信模塊包括共享通信緩沖區(qū)管理模塊,用于在所述共享通信緩沖區(qū)中為其他節(jié)點分別 分配一個緩沖部分,并將所述緩沖部分的位置和大小進行公告,還用于監(jiān)控所 述共享通信緩沖區(qū)的狀態(tài)并將其狀態(tài)記錄在所述共享通信緩沖區(qū)控制區(qū)中;端口地址映射模塊,用于將消息傳輸?shù)慕邮辗焦?jié)點號映射到所述共享通信 緩沖區(qū)的所述緩沖部分并在所述緩沖部分中尋找消息傳輸位置;消息傳遞模塊,用于在傳輸消息時從所述共享通信緩沖區(qū)的緩沖部分中完 成消息發(fā)送和消息接收。
      22、 根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸裝置,其特征是,共享通信緩沖區(qū) 管理模塊采用如下流控方法當(dāng)共享通信緩沖區(qū)的相應(yīng)緩沖部分滿,消息發(fā)送 請求失敗時,共享通信緩沖區(qū)管理模塊將阻止繼續(xù)產(chǎn)生消息傳輸事件,直到檢 査到共享通信緩沖區(qū)的相應(yīng)緩沖部分是不滿才重新啟動消息傳輸。
      23、 根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸裝置,其特征是,所述消息傳遞模 塊在每個消息發(fā)送后立即進行完成操作。
      24、 根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸裝置,其特征是,所述消息傳遞模塊使用流水的消息復(fù)制方法,使多個消息的發(fā)送和接收操作并行進行。
      25、 根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸裝置,其特征是,所述消息傳遞模 塊在發(fā)送消息時將消息傳遞到接收方的共享通信緩沖區(qū)中,在接收消息時將消 息從接收方的共享通信緩沖區(qū)中取出。
      26、 根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸裝置,其特征是,所述消息傳遞模 塊在發(fā)送消息時將消息傳遞到發(fā)送方的共享通信緩沖區(qū)中,在接收消息時將消 息從發(fā)送方的共享通信緩沖區(qū)中取出。
      27、 根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸裝置,其特征是,所述底層通信模 塊還包括消息探詢模塊,用于探詢所述共享通信緩沖區(qū)中是否有新的消息到 達(dá),如果有新消息到達(dá)則通知協(xié)議棧接收消息。
      28、 根據(jù)權(quán)利要求27所述的數(shù)據(jù)傳輸裝置,其特征是,所述消息探詢模 塊周期性地逐一探詢其他節(jié)點的所述共享通信緩沖區(qū)控制區(qū),確定在給本節(jié)點 分配的所述共享通信緩沖區(qū)的緩沖部分中是否有新的消息到達(dá);當(dāng)有新消息到 達(dá)時,消息探詢模塊觸發(fā)一個軟中斷,通知協(xié)議棧接收消息,當(dāng)沒有新消息到 達(dá)時,消息探詢模塊等待一個周期,再次執(zhí)行探詢操作。
      29、 根據(jù)權(quán)利要求28所述的數(shù)據(jù)傳輸裝置,其特征是,所述周期設(shè)為一 次時鐘中斷的時間周期。
      30、 根據(jù)權(quán)利要求21所述的數(shù)據(jù)傳輸裝置,其特征是,所述虛擬網(wǎng)卡包括設(shè)備控制模塊,用于對虛擬網(wǎng)卡設(shè)備初始化,并向節(jié)點注冊虛擬網(wǎng)卡的打 開和關(guān)閉;消息分析模塊,用于對需要發(fā)送的消息分析發(fā)送和接收地址; 消息發(fā)送模塊,用于根據(jù)所述接收地址,傳遞給所述底層通信模塊; 消息接收模塊,用于將所述底層通信模塊接收到的消息,封裝為系統(tǒng)內(nèi)核 的數(shù)據(jù)包,傳遞給所述協(xié)議棧。
      31、 一種節(jié)點之間的數(shù)據(jù)傳輸方法,用于非一致內(nèi)存訪問平臺上的多個節(jié) 點之間傳輸數(shù)據(jù),每個所述節(jié)點中包括至少一個處理器核和/或至少一個處理 器以及其上運行的操作系統(tǒng),包括如下步驟  步驟Sl,在所管理的內(nèi)存中劃分出共享通信緩沖區(qū)及共享通信緩沖區(qū)控 制區(qū),并將所述共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點;步驟S2,當(dāng)發(fā)送方發(fā)送消息時,通過虛擬網(wǎng)卡將消息傳送到共享通信緩 沖區(qū);步驟S3,當(dāng)接收方接收消息時,將消息從所述共享通信緩沖區(qū)中取出并 將取出的消息通過虛擬網(wǎng)卡傳送給操作系統(tǒng)的協(xié)議棧。
      32、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,在所述歩驟Sl 中,所述公告包括通過在內(nèi)存中建立一個公告區(qū),所有所述節(jié)點將所述共享通 信緩沖區(qū)的位置和大小在所述公告區(qū)公告。
      33、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,所述歩驟S1中的 所有所述節(jié)點的所述共享通信緩沖區(qū)都集中在其中一個節(jié)點上進行管理。
      34、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,所述步驟S1中的 所有所述節(jié)點的所述共享通信緩沖區(qū)分布在各自節(jié)點上進行管理。
      35、 根據(jù)權(quán)利要求34所述的數(shù)據(jù)傳輸方法,其特征是,步驟S1中還包括 在所述共享通信緩沖區(qū)中分別為其他節(jié)點分配 一個緩沖部分,并將所述緩沖部 分的位置和大小進行公告。
      36、 根據(jù)權(quán)利要求35所述的數(shù)據(jù)傳輸方法,其特征是,所述步驟S2中包 括流控方法當(dāng)所述共享通信緩沖區(qū)的相應(yīng)緩沖部分滿,系統(tǒng)的消息發(fā)送請求 失敗時,將阻止協(xié)議棧繼續(xù)產(chǎn)生消息傳輸事件,直到檢査到共享通信緩沖區(qū)的 相應(yīng)緩沖部分不滿才重新啟動消息傳輸。
      37、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,步驟S2中,在每 個消息發(fā)送后立即進行相應(yīng)的完成操作。
      38、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,步驟S2中發(fā)送方 采用流水方法發(fā)送消息。
      39、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,所述協(xié)議棧為 TCP/IP協(xié)議棧。
      40、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,步驟S3中還包括 探詢步驟探詢所述共享通信緩沖區(qū)中是否有新的消息到達(dá),如果有新消息到 達(dá)則通知接收方協(xié)議棧接收消息。
      41、 根據(jù)權(quán)利要求40所述的數(shù)據(jù)傳輸方法,其特征是,所述探詢是周期 地逐一探詢其它節(jié)點的共享通信緩沖區(qū)中是否有新的消息到達(dá),如果有新消息 到達(dá)則通過發(fā)起一個軟中斷來通知接收方協(xié)議棧接收消息通知接收方協(xié)議棧 接收消息。
      42、 根據(jù)權(quán)利要求41所述的數(shù)據(jù)傳輸方法,其特征是,所述周期為一次 時鐘中斷的時間周期。
      43、 根據(jù)權(quán)利要求41所述的數(shù)據(jù)傳輸方法,其特征是,在所述軟中斷期間,所述探詢歩驟只執(zhí)行一次探詢操作。
      44、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,在步驟S3中接收 方采用流水方法接收消息。
      45、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,步驟S2中發(fā)送方 發(fā)送消息時將消息傳遞到接收方的共享通信緩沖區(qū)中;步驟S3中接收方在接 收消息時將消息從接收方的共享通信緩沖區(qū)中取出。
      46、 根據(jù)權(quán)利要求31所述的數(shù)據(jù)傳輸方法,其特征是,步驟S2中發(fā)送方 在發(fā)送消息時將消息傳遞到發(fā)送方的共享通信緩沖區(qū)中,步驟S3中接收方在 接收消息時將消息從發(fā)送方的共享通信緩沖區(qū)中取出。
      全文摘要
      本發(fā)明公開了一種在非一致內(nèi)存訪問平臺上的各節(jié)點之間以消息傳遞方式的數(shù)據(jù)傳輸系統(tǒng)和裝置及方法。該數(shù)據(jù)傳輸系統(tǒng),用于在非一致內(nèi)存訪問平臺上的各節(jié)點之間傳輸數(shù)據(jù),所述節(jié)點包括與操作系統(tǒng)的協(xié)議棧連接的數(shù)據(jù)傳輸裝置;其特征是,所述數(shù)據(jù)傳輸裝置包括用于在內(nèi)存中劃分出共享通信緩沖區(qū)及共享通信緩沖區(qū)控制區(qū),并將所述共享通信緩沖區(qū)的位置和大小公告給其它節(jié)點的共享通信緩沖區(qū)分配模塊;用于節(jié)點之間通過共享通信緩沖區(qū)進行消息傳遞的底層通信模塊;和將所述底層通信模塊模擬為網(wǎng)卡并與節(jié)點的協(xié)議棧連接的虛擬網(wǎng)卡。本發(fā)明的有益效果是不需要特殊的硬件支持,透明、高效、安全的傳輸數(shù)據(jù)。
      文檔編號G06F15/16GK101158936SQ200710177879
      公開日2008年4月9日 申請日期2007年11月21日 優(yōu)先權(quán)日2007年11月21日
      發(fā)明者翔 張, 苗艷超, 捷 馬 申請人:中國科學(xué)院計算技術(shù)研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1