两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種數(shù)據(jù)寫入方法及服務(wù)器端網(wǎng)卡與流程

文檔序號:11960379閱讀:496來源:國知局
一種數(shù)據(jù)寫入方法及服務(wù)器端網(wǎng)卡與流程

本發(fā)明實施例涉及通信領(lǐng)域,尤其涉及一種數(shù)據(jù)寫入方法及服務(wù)器端網(wǎng)卡。



背景技術(shù):

圖1示例性示出了現(xiàn)有技術(shù)中一種客戶端(英文稱為Initiator)與服務(wù)器(英文稱為Target)之間的連接關(guān)系的結(jié)構(gòu)示意圖。如圖1所示,客戶端處理器111(英文稱為Initiator X86)通過客戶端網(wǎng)卡112與直接數(shù)據(jù)存取(Remote Direct Memory Access,簡稱RDMA)融合以太網(wǎng)(RDMA over Converged Ethernet,簡稱ROCE)連接,并通過ROCE與交換機113連接,客戶端處理器111與客戶端的存儲區(qū)121連接。服務(wù)器端處理器115(英文稱為Target X86)與服務(wù)器端網(wǎng)卡114連接,服務(wù)器端網(wǎng)卡114承載于交換網(wǎng)的NVME協(xié)議(NVME over Fabric,簡稱NOF)協(xié)議與交換機113連接,服務(wù)器端處理器115連接存儲設(shè)備,存儲設(shè)備包括符合標(biāo)準(zhǔn)非易失性存儲器(Non-Volatile Memory Express,簡稱NVME)協(xié)議的固體硬盤123(Solid State Drive,簡稱SSD),以及服務(wù)器端的存儲區(qū)124,服務(wù)器端的存儲區(qū)124也可稱為服務(wù)器端的內(nèi)存。

客戶端處理器111和服務(wù)器端處理器115跨越網(wǎng)絡(luò)進行存儲需要實現(xiàn)NOF協(xié)議,結(jié)構(gòu)(英文稱為Fabric)采用ROCE交換網(wǎng),ROCE是基于二層以太網(wǎng)的RDMA協(xié)議,在主RDMA(英文稱為Host RDMA)到主RDMA(英文稱為Host RDMA)的傳輸模式下,可以實現(xiàn)客戶端處理器111和服務(wù)器端處理器115之間的的存儲區(qū)RDMA搬移。例如,客戶端處理器111基于RDMA協(xié)議將待寫入數(shù)據(jù)從客戶端的存儲區(qū)121寫入至服務(wù)器端的存儲區(qū)124,該服務(wù)器端的存儲區(qū)124同時也是NVME協(xié)議對應(yīng)的的數(shù)據(jù)的存儲區(qū),按照NVME協(xié)議再將數(shù)據(jù)搬移到服務(wù)器端的固體硬盤123。

基于圖1所示的客戶端與服務(wù)器之間的連接關(guān)系的結(jié)構(gòu)示意圖,圖1a示例性示出了基于圖1所示的結(jié)構(gòu),將待寫入數(shù)據(jù)從客戶端的存儲區(qū)121寫入至服務(wù)器端的存儲區(qū)124的一種方法流程示意圖,如圖1和圖1a所示:

步驟3101,客戶端處理器111在確定需要將待寫入數(shù)據(jù)寫入服務(wù)器端的存儲區(qū)124時,客戶端處理器111生成數(shù)據(jù)寫入請求命令(英文稱為Capsule),并將數(shù)據(jù)寫入請求命令依次通過客戶端網(wǎng)卡112(Net Interface Card,簡稱NIC)和交換網(wǎng),發(fā)送至服務(wù)器端網(wǎng)卡114;其中,數(shù)據(jù)寫入請求命令為格式為聚散鏈(Scatter Gather List,簡稱SGL)格式,即數(shù)據(jù)寫入請求命令中包含了一個或多個待寫入的數(shù)據(jù)的源地址;源地址為待寫入數(shù)據(jù)的位于客戶端的存儲區(qū)121的地址;

步驟3102,服務(wù)器端網(wǎng)卡114接收到數(shù)據(jù)寫入請求命令之后,基于直接的存儲區(qū)存取(Direct Memory Access,簡稱DMA)技術(shù)將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端的存儲區(qū)124中,服務(wù)器端處理器115從服務(wù)器端的存儲區(qū)124中讀取數(shù)據(jù)寫入請求命令。

步驟3103,服務(wù)器端處理器115解析數(shù)據(jù)寫入請求命令,解析后發(fā)現(xiàn)數(shù)據(jù)寫入請求命令是SGL格式的數(shù)據(jù)寫入請求命令,則服務(wù)器端處理器115申請服務(wù)器端的存儲區(qū)124中的存儲區(qū),并記錄下申請到的位于服務(wù)器端的存儲區(qū)124上的目標(biāo)地址,生成數(shù)據(jù)讀取命令(英文稱為RDMA_READ);該數(shù)據(jù)讀取命令中攜帶源地址和服務(wù)器端的存儲區(qū)124上的目標(biāo)地址;

步驟3104,服務(wù)器端處理器115將數(shù)據(jù)讀取命令發(fā)送至服務(wù)器端網(wǎng)卡114;

步驟3105,服務(wù)器端網(wǎng)卡114將數(shù)據(jù)讀取命令依次通過交換網(wǎng)和客戶端網(wǎng)卡112透傳至客戶端的存儲區(qū)121,客戶端處理器111從客戶端的存儲區(qū)121中讀取該數(shù)據(jù)讀取命令;

步驟3106,客戶端處理器111根據(jù)該數(shù)據(jù)讀取命令,將SGL地址指向的源地址的數(shù)據(jù)讀出,并生成數(shù)據(jù)讀取響應(yīng)命令(英文稱為READ RESPOUNSE),數(shù)據(jù)讀取響應(yīng)命令中攜帶待寫入數(shù)據(jù);

步驟3107,客戶端處理器111將數(shù)據(jù)讀取響應(yīng)命令依次通過客戶端網(wǎng)卡112和交換網(wǎng)發(fā)送至服務(wù)器端網(wǎng)卡114;

步驟3108,服務(wù)器端網(wǎng)卡114基于DMA方式將待寫入數(shù)據(jù)存儲至目標(biāo)地址所指的服務(wù)器端的存儲區(qū)124。

綜上,上述數(shù)據(jù)寫入方案中由于客戶端和服務(wù)器端交互次數(shù)較多且較為復(fù)雜,因此導(dǎo)致數(shù)據(jù)寫入過程存在較大的時延。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例提供一種數(shù)據(jù)寫入方法及服務(wù)器端網(wǎng)卡,用以降低數(shù)據(jù)寫入過程的時延。

本發(fā)明實施例提供一種數(shù)據(jù)寫入方法,包括:

服務(wù)器端網(wǎng)卡接收客戶端處理器發(fā)送的數(shù)據(jù)寫入請求命令,其中,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)位于客戶端的存儲區(qū)的源地址;

服務(wù)器端網(wǎng)卡在成功解析數(shù)據(jù)寫入請求命令之后,向客戶端處理器返回服務(wù)器端網(wǎng)卡生成的第一數(shù)據(jù)讀取命令,并向服務(wù)器端處理器透傳數(shù)據(jù)寫入請求命令;第一數(shù)據(jù)讀取命令攜帶待寫入數(shù)據(jù)要寫入的第一目標(biāo)地址,第一目標(biāo)地址為服務(wù)器端網(wǎng)卡的存儲區(qū)的地址;

服務(wù)器端網(wǎng)卡接收客戶端處理器在接收到第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),以及接收服務(wù)器端處理器在接收到數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令;第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的第二目標(biāo)地址,第二目標(biāo)地址為服務(wù)器的存儲區(qū)的地址;

服務(wù)器端網(wǎng)卡將待寫入數(shù)據(jù)存儲于第一目標(biāo)地址所指的存儲區(qū),并將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,服務(wù)器端網(wǎng)卡為現(xiàn)場可編程門陣列FPGA網(wǎng)卡。如此,服務(wù)器端網(wǎng)卡具有編程能力,一方面服務(wù)器端網(wǎng)卡接收到數(shù)據(jù)寫入請求命令之后,不僅僅像現(xiàn)有技術(shù)一樣,將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端,而且FPGA網(wǎng)卡還對數(shù)據(jù)寫入請求命令進行解析,并向客戶端返回第一數(shù)據(jù)讀取命令。

可選地,數(shù)據(jù)寫入請求命令的格式為符合NOF協(xié)議的聚散鏈SGL格式。如此,可更好的改善NOF協(xié)議下數(shù)據(jù)寫入過程時延較大的問題。且SGL格式的數(shù)據(jù)寫入請求命令中包括待寫入數(shù)據(jù)的源地址,從而可減少基于SGL格式進行數(shù)據(jù)寫入方法的時延。

可選地,第一數(shù)據(jù)讀取命令攜帶源地址;第二數(shù)據(jù)讀取命令中攜帶源地址;

服務(wù)器端網(wǎng)卡將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)之前,還包括:服務(wù)器端網(wǎng)卡確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致。

也就是說,本發(fā)明實施例中,服務(wù)器端網(wǎng)卡確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致之后,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,通過該方案,可以使服務(wù)器端網(wǎng)卡準(zhǔn)確找出第二數(shù)據(jù)讀取命令所對應(yīng)的待寫入數(shù)據(jù),從而更加準(zhǔn)確的將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,服務(wù)器端網(wǎng)卡向客戶端處理器返回第一數(shù)據(jù)讀取命令之前,還包括:服務(wù)器端網(wǎng)卡確定服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量不小于待寫入數(shù)據(jù)的數(shù)據(jù)量。

如此,服務(wù)器端網(wǎng)卡避免了在服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量較小的情況下,去獲取待寫入數(shù)據(jù)所造成的無法將待寫入數(shù)據(jù)存儲至服務(wù)器端網(wǎng)卡所連接的服務(wù)器端的存儲區(qū)的問題,從而使整個方案更加合理、高效。

本發(fā)明實施例提供一種服務(wù)器端網(wǎng)卡,包括:

接收單元,用于接收客戶端處理器發(fā)送的數(shù)據(jù)寫入請求命令;接收客戶端處理器在接收到發(fā)送單元發(fā)送的第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),以及接收服務(wù)器端處理器在接收到發(fā)送單元發(fā)送的數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令;

發(fā)送單元,用于向客戶端處理器返回第一數(shù)據(jù)讀取命令,并向服務(wù)器端處理器透傳數(shù)據(jù)寫入請求命令;

處理單元,用于在成功解析數(shù)據(jù)寫入請求命令之后,生成第一數(shù)據(jù)讀取命令;在通過接收單元接收到待寫入數(shù)據(jù)之后,將待寫入數(shù)據(jù)存儲于第一目標(biāo)地址所指的存儲區(qū),并將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū);

其中,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)位于客戶端的存儲區(qū)的源地址,第一數(shù)據(jù)讀取命令攜帶待寫入數(shù)據(jù)要寫入的第一目標(biāo)地址,第一目標(biāo)地址為服務(wù)器端網(wǎng)卡的存儲區(qū)的地址;第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的第二目標(biāo)地址,第二目標(biāo)地址為服務(wù)器的存儲區(qū)的地址。

本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,服務(wù)器端網(wǎng)卡為現(xiàn)場可編程門陣列FPGA網(wǎng)卡。如此,服務(wù)器端網(wǎng)卡具有編程能力,一方面服務(wù)器端網(wǎng)卡接收到數(shù)據(jù)寫入請求命令之后,不僅僅像現(xiàn)有技術(shù)一樣,將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端,而且FPGA網(wǎng)卡還對數(shù)據(jù)寫入請求命令進行解析,并向客戶端返回第一數(shù)據(jù)讀取命令。

可選地,數(shù)據(jù)寫入請求命令的格式為符合NOF協(xié)議的聚散鏈SGL格式。如此,可更好的改善NOF協(xié)議下數(shù)據(jù)寫入過程時延較大的問題。且SGL格式的數(shù)據(jù)寫入請求命令中包括待寫入數(shù)據(jù)的源地址,從而可減少基于SGL格式進行數(shù)據(jù)寫入方法的時延。

可選地,第一數(shù)據(jù)讀取命令攜帶源地址;第二數(shù)據(jù)讀取命令中攜帶源地址;

處理單元,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)之前,還用于:確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致。

也就是說,本發(fā)明實施例中,服務(wù)器端網(wǎng)卡確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致之后,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,通過該方案,可以使服務(wù)器端網(wǎng)卡準(zhǔn)確找出第二數(shù)據(jù)讀取命令所對應(yīng)的待寫入數(shù)據(jù),從而更加準(zhǔn)確的將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,處理單元,在通過發(fā)送單元向客戶端處理器返回第一數(shù)據(jù)讀取命令之前,還用于:確定服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量不小于待寫入數(shù)據(jù)的數(shù)據(jù)量。

如此,服務(wù)器端網(wǎng)卡避免了在服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量較小的情況下,去獲取待寫入數(shù)據(jù)所造成的無法將待寫入數(shù)據(jù)存儲至服務(wù)器端網(wǎng)卡所連接的服務(wù)器端的存儲區(qū)的問題,從而使整個方案更加合理、高效。

本發(fā)明實施例提供一種服務(wù)器端網(wǎng)卡,包括:

接收器,用于接收客戶端處理器發(fā)送的數(shù)據(jù)寫入請求命令;接收客戶端處理器在接收到發(fā)送器發(fā)送的第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),以及接收服務(wù)器端處理器在接收到發(fā)送器發(fā)送的數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令;

發(fā)送器,用于向客戶端處理器返回第一數(shù)據(jù)讀取命令,并向服務(wù)器端處理器透傳數(shù)據(jù)寫入請求命令;

處理器,用于在成功解析數(shù)據(jù)寫入請求命令之后,生成第一數(shù)據(jù)讀取命令;在通過接收器接收到待寫入數(shù)據(jù)之后,將待寫入數(shù)據(jù)存儲于第一目標(biāo)地址所指的存儲區(qū),并將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū);

其中,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)位于客戶端的存儲區(qū)的源地址,第一數(shù)據(jù)讀取命令攜帶待寫入數(shù)據(jù)要寫入的第一目標(biāo)地址,第一目標(biāo)地址為服務(wù)器端網(wǎng)卡的存儲區(qū)的地址;第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的第二目標(biāo)地址,第二目標(biāo)地址為服務(wù)器的存儲區(qū)的地址。

本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,服務(wù)器端網(wǎng)卡為現(xiàn)場可編程門陣列FPGA網(wǎng)卡。如此,服務(wù)器端網(wǎng)卡具有編程能力,一方面服務(wù)器端網(wǎng)卡接收到數(shù)據(jù)寫入請求命令之后,不僅僅像現(xiàn)有技術(shù)一樣,將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端,而且FPGA網(wǎng)卡還對數(shù)據(jù)寫入請求命令進行解析,并向客戶端返回第一數(shù)據(jù)讀取命令。

可選地,數(shù)據(jù)寫入請求命令的格式為符合NOF協(xié)議的聚散鏈SGL格式。如此,可更好的改善NOF協(xié)議下數(shù)據(jù)寫入過程時延較大的問題。且SGL格式的數(shù)據(jù)寫入請求命令中包括待寫入數(shù)據(jù)的源地址,從而可減少基于SGL格式進行數(shù)據(jù)寫入方法的時延。

可選地,第一數(shù)據(jù)讀取命令攜帶源地址;第二數(shù)據(jù)讀取命令中攜帶源地址;

處理器,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)之前,還用于:

確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致。

也就是說,本發(fā)明實施例中,服務(wù)器端網(wǎng)卡確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致之后,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。可見,通過該方案,可以使服務(wù)器端網(wǎng)卡準(zhǔn)確找出第二數(shù)據(jù)讀取命令所對應(yīng)的待寫入數(shù)據(jù),從而更加準(zhǔn)確的將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,處理器,在通過發(fā)送器向客戶端處理器返回第一數(shù)據(jù)讀取命令之前,還用于:

確定服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量不小于待寫入數(shù)據(jù)的數(shù)據(jù)量。

如此,服務(wù)器端網(wǎng)卡避免了在服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量較小的情況下,去獲取待寫入數(shù)據(jù)所造成的無法將待寫入數(shù)據(jù)存儲至服務(wù)器端網(wǎng)卡所連接的服務(wù)器端的存儲區(qū)的問題,從而使整個方案更加合理、高效。

本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡在解析數(shù)據(jù)寫入請求之后,即生成第一數(shù)據(jù)讀取命令,但是第二數(shù)據(jù)讀取命令是在服務(wù)器端網(wǎng)卡解析數(shù)據(jù)寫入請求之后、且將數(shù)據(jù)寫入請求命令透傳給服務(wù)器端處理器、服務(wù)器端處理器生成第二數(shù)據(jù)讀取命令,以及服務(wù)器端處理器向服務(wù)器端網(wǎng)卡發(fā)送之后才得到的。可見,本發(fā)明實施例中服務(wù)器端網(wǎng)卡生成第一數(shù)據(jù)讀取命令的時間早于接收到第二數(shù)據(jù)讀取命令的時間。又由于現(xiàn)有技術(shù)中服務(wù)器端網(wǎng)卡僅僅是透傳數(shù)據(jù)寫入請求命令,且在接收到第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令發(fā)送給客戶端處理器,以使客戶端處理器向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù)。可見,客戶端處理器接收到本發(fā)明實施例中第一數(shù)據(jù)讀取命令的時間早于現(xiàn)有技術(shù)中接收到第二數(shù)據(jù)讀取命令的時間,進而客戶端處理器可以更早的開始向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù),從而節(jié)省了整個數(shù)據(jù)寫入過程的時間,降低了數(shù)據(jù)寫入時的時延。

附圖說明

為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹。

圖1為現(xiàn)有技術(shù)中一種客戶端(英文稱為Initiator)與服務(wù)器(英文稱為Target)之間的連接關(guān)系的結(jié)構(gòu)示意圖;

圖1a為基于圖1所示的結(jié)構(gòu)將待寫入數(shù)據(jù)從客戶端的存儲區(qū)寫入至服務(wù)器端的存儲區(qū)的一種方法流程示意圖;

圖2為本發(fā)明實施例適用的一種通信系統(tǒng)的示意性架構(gòu)圖;

圖2a為本發(fā)明實施例適用的另一種通信系統(tǒng)的示意性架構(gòu)圖;

圖2b為本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法的流程示意圖;

圖2c為本發(fā)明實施例提供的一種數(shù)據(jù)寫入請求命令的格式示意圖;

圖2d為本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法的流程示意圖;

圖3為本發(fā)明實施例提供的一種服務(wù)器端網(wǎng)卡的結(jié)構(gòu)示意圖;

圖4為本發(fā)明實施例提供的另一種服務(wù)器端網(wǎng)卡的結(jié)構(gòu)示意圖。

具體實施方式

為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

應(yīng)理解,本發(fā)明實施例的技術(shù)方案可以應(yīng)用于各種通信系統(tǒng),例如:全球移動通訊(Global System of Mobile Communication,簡稱GSM)系統(tǒng)、碼分多址(Code Division Multiple Access,簡稱CDMA)系統(tǒng)、寬帶碼分多址(Wideband Code Division Multiple Access,簡稱WCDMA)通用分組無線業(yè)務(wù)(General Packet Radio Service,簡稱GPRS)系統(tǒng)、長期演進(Long Term Evolution,簡稱LTE)系統(tǒng)、LTE頻分雙工(Frequency Division Duplex,簡稱FDD)系統(tǒng)、LTE時分雙工(Time Division Duplex,簡稱TDD)、通用移動通信系統(tǒng)(Universal Mobile Telecommunication System,簡稱UMTS)、全球互聯(lián)微波接入(Worldwide Interoperability for Microwave Access,簡稱WiMAX)通信系統(tǒng),以及未來的5G通信系統(tǒng)等。

本發(fā)明實施例中的客戶端可以指用戶設(shè)備(User Equipment,簡稱UE)、接入終端、用戶單元、用戶站、移動站、移動臺、遠方站、遠程終端、移動設(shè)備、用戶終端、終端、無線通信設(shè)備、用戶代理或用戶裝置。接入終端可以是蜂窩電話、無繩電話、會話啟動協(xié)議(Session Initiation Protocol,簡稱SIP)電話、無線本地環(huán)路(Wireless Local Loop,簡稱WLL)站、個人數(shù)字處理(Personal Digital Assistant,簡稱PDA)、具有無線通信功能的手持設(shè)備、計算設(shè)備或連接到無線調(diào)制解調(diào)器的其它處理設(shè)備、車載設(shè)備、可穿戴設(shè)備,未來5G網(wǎng)絡(luò)中的終端設(shè)備等。

本發(fā)明實施例中的服務(wù)器端可以是用于與客戶端進行通信的設(shè)備,例如,可以是GSM系統(tǒng)或CDMA中的基站(Base Transceiver Station,簡稱BTS),也可以是WCDMA系統(tǒng)中的基站(NodeB,簡稱NB),還可以是LTE系統(tǒng)中的演進型基站(Evolutional Node B,簡稱eNB或eNodeB),或者該服務(wù)器端可以為中繼站、接入點、車載設(shè)備、可穿戴設(shè)備以及未來5G網(wǎng)絡(luò)中的網(wǎng)絡(luò)側(cè)設(shè)備或未來演進的PLMN網(wǎng)絡(luò)中的網(wǎng)絡(luò)設(shè)備等。

圖2示出了本發(fā)明實施例適用的一種通信系統(tǒng)的示意性架構(gòu)圖。圖2a示出了本發(fā)明實施例適用的另一種通信系統(tǒng)的示意性架構(gòu)圖。如圖2和圖2a所示,該通信系統(tǒng)可以包括客戶端和服務(wù)器端。客戶端包括與交換機1103連接的客戶端網(wǎng)卡1102,與客戶端網(wǎng)卡1102連接的客戶端處理器1101,與客戶端處理器1101連接的客戶端的存儲區(qū)1201。服務(wù)器端包括與交換機1103連接的服務(wù)器端網(wǎng)卡2101,以及與服務(wù)器端網(wǎng)卡2101連接的服務(wù)器端網(wǎng)卡的存儲區(qū)1202,還包括與服務(wù)器端網(wǎng)卡2101連接的服務(wù)器端處理器1105,與服務(wù)器端處理器1105連接的SSD1203和服務(wù)器端的存儲區(qū)1204??蛇x地,SSD可基于NVME標(biāo)準(zhǔn)的盤。本發(fā)明實施例中客戶端處理器和服務(wù)器端處理器可以為包括串行總線(PCI-Express,簡稱PCIe)接口的X86系統(tǒng),也可為包括PCIe的非X86系統(tǒng)。本發(fā)明實施例中下述內(nèi)容以及附圖中以X86系統(tǒng)為例進行介紹,本領(lǐng)域技術(shù)人員可知,本發(fā)明實施例的應(yīng)用范圍不限于X86系統(tǒng)。

如圖2所示,本發(fā)明實施例中的服務(wù)器端網(wǎng)卡具有可編程能力,且服務(wù)器端網(wǎng)卡可連接服務(wù)器端網(wǎng)卡的存儲區(qū),該存儲區(qū)可為數(shù)據(jù)緩沖區(qū)(英文稱為DATABUF),本發(fā)明實施例中的服務(wù)器端網(wǎng)卡一方面實現(xiàn)標(biāo)準(zhǔn)主RDMA網(wǎng)卡功能,另一方面實現(xiàn)NOF硬件加速功能??蛻舳颂幚砥骺蓪崿F(xiàn)NOF協(xié)議。

如圖2a所示,客戶端的存儲區(qū)存在NVME和RDMA兩個協(xié)議層的隊列,將NVME的隊列命令映射到RDMA隊列后,通過ROCE交換網(wǎng)將NOF命令傳遞到服務(wù)器端的存儲區(qū)的RDMA隊列,同樣進行一個RDMA隊列和NVME隊列的映射后,客戶端處理器和服務(wù)器端處理器建立起通訊通道??蛻舳说拇鎯^(qū)的NVME協(xié)議層的隊列均包括發(fā)送隊列(Send Queue,簡稱SQ)和完成隊列(Completion Queue,簡稱CQ),客戶端的存儲區(qū)的RDMA協(xié)議層的隊列均包括SQ、接收隊列(Receive Queue,簡稱RQ)和CQ。服務(wù)區(qū)端的存儲區(qū)的NVME協(xié)議層的隊列均包括SQ和CQ,客戶端的存儲區(qū)的RDMA協(xié)議層的隊列均包括SQ、RQ和CQ。SQ包括的命令為待發(fā)送命令,CQ包括的命令為接收到的響應(yīng),RQ包括的命令為接收到的待處理的命令。

如圖2a所示,客戶端的存儲區(qū)同樣還存在一個數(shù)據(jù)緩沖區(qū),用于存儲數(shù)據(jù)(英文稱為DATA)隊列。服務(wù)器端網(wǎng)卡的存儲區(qū)包括數(shù)據(jù)區(qū)和數(shù)據(jù)緩沖區(qū)??蛇x地,服務(wù)器端的存儲區(qū)同樣還存儲在一個數(shù)據(jù)緩沖區(qū),其中存儲數(shù)據(jù)隊列。服務(wù)器端的PCIe SSD包括兩個區(qū)域,每個區(qū)域中包括NVME、緩沖區(qū)(英文稱為Buffer)和閃存控制區(qū)(英文稱為Flash Controller)。

本發(fā)明實施例中,可選地,客戶端和服務(wù)器依據(jù)NOF協(xié)議傳輸數(shù)據(jù),交換機兩側(cè)的客戶端網(wǎng)卡和服務(wù)器網(wǎng)卡用于卸載ROCE協(xié)議,其中,NOF協(xié)議承載在ROCE協(xié)議上面,SSD與服務(wù)器處理器通過PCIe相連接依據(jù)的協(xié)議為NVME協(xié)議。

圖2b示例性示出了本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法的流程示意圖。

基于圖2和圖2a所示的系統(tǒng)架構(gòu),如圖2b所示,本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法,包括:

步驟201,服務(wù)器端網(wǎng)卡接收客戶端處理器發(fā)送的數(shù)據(jù)寫入請求命令,其中,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)位于客戶端的存儲區(qū)的源地址;

步驟202,服務(wù)器端網(wǎng)卡在成功解析數(shù)據(jù)寫入請求命令之后,向客戶端處理器返回服務(wù)器端網(wǎng)卡生成的第一數(shù)據(jù)讀取命令,并向服務(wù)器端處理器透傳數(shù)據(jù)寫入請求命令;第一數(shù)據(jù)讀取命令攜帶待寫入數(shù)據(jù)要寫入的第一目標(biāo)地址,第一目標(biāo)地址為服務(wù)器端網(wǎng)卡的存儲區(qū)的地址;

步驟203,服務(wù)器端網(wǎng)卡接收客戶端處理器在接收到第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),以及接收服務(wù)器端處理器在接收到數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令;第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的第二目標(biāo)地址,第二目標(biāo)地址為服務(wù)器的存儲區(qū)的地址;

步驟204,服務(wù)器端網(wǎng)卡將待寫入數(shù)據(jù)存儲于第一目標(biāo)地址所指的存儲區(qū),并將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

由于服務(wù)器端網(wǎng)卡2101在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡2101直接進行解析,并向客戶端處理器1101返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū)1202;另一方面服務(wù)器端網(wǎng)卡2101向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)1202將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可見,本發(fā)明實施例中服務(wù)器端網(wǎng)卡2101在解析數(shù)據(jù)寫入請求之后,即生成第一數(shù)據(jù)讀取命令,但是第二數(shù)據(jù)讀取命令是在服務(wù)器端網(wǎng)卡2101解析數(shù)據(jù)寫入請求之后、且將數(shù)據(jù)寫入請求命令透傳給服務(wù)器端處理器1105、服務(wù)器端處理器1105生成第二數(shù)據(jù)讀取命令,以及服務(wù)器端處理器1105向服務(wù)器端網(wǎng)卡2101發(fā)送之后才得到的??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡2101生成第一數(shù)據(jù)讀取命令的時間早于接收到第二數(shù)據(jù)讀取命令的時間。又由于現(xiàn)有技術(shù)中服務(wù)器端網(wǎng)卡2101僅僅是透傳數(shù)據(jù)寫入請求命令,且在接收到第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令發(fā)送給客戶端處理器1101,以使客戶端處理器1101向服務(wù)器端網(wǎng)卡2101傳輸待寫入數(shù)據(jù)??梢姡蛻舳颂幚砥?101接收到本發(fā)明實施例中第一數(shù)據(jù)讀取命令的時間早于現(xiàn)有技術(shù)中接收到第二數(shù)據(jù)讀取命令的時間,進而客戶端處理器1101可以更早的開始向服務(wù)器端網(wǎng)卡2101傳輸待寫入數(shù)據(jù),從而節(jié)省了整個數(shù)據(jù)寫入過程的時間,降低了數(shù)據(jù)寫入時的時延。

上述步驟201中,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)位于客戶端的存儲區(qū)1201的源地址,數(shù)據(jù)寫入請求基于不同的協(xié)議可存在多種格式??蛇x地,數(shù)據(jù)寫入請求命令的格式為符合NOF協(xié)議的聚散鏈SGL格式,即包括待寫入數(shù)據(jù)位于客戶端的存儲區(qū)的源地址。如此,可更好的改善NOF協(xié)議下數(shù)據(jù)寫入過程時延較大的問題,且SGL格式的數(shù)據(jù)寫入請求命令中包括待寫入數(shù)據(jù)的源地址,從而可減少基于SGL格式進行數(shù)據(jù)寫入方法的時延。。可選地,本發(fā)明實施例中,客戶端處理器1101實現(xiàn)NOF協(xié)議,而不是原來的NVME協(xié)議,NVME制式是通過PCIe直接連接存儲器,而NOF制式則是通過交換網(wǎng)再連接存儲器。圖2c示例性示出了本發(fā)明實施例提供的一種數(shù)據(jù)寫入請求命令的格式示意圖,如圖2c所示,客戶端處理器1101發(fā)出的數(shù)據(jù)寫入請求命令可為NOF協(xié)議中稱為“capsule”命令。數(shù)據(jù)寫入請求命令中包括兩部分,分別為提交隊列入口(英文稱為Submission Queue Entry)字段和數(shù)據(jù)字段(英文稱為Data Section)。為了保持與NVME協(xié)議的寫入請求命令的格式兼容,比如命令類型和命令編號等信息的兼容,本發(fā)明實施例中的數(shù)據(jù)字段(英文稱為Data Section)可包括一個或多個SGL,NOF協(xié)議的SGL可為一個16B的字段,表示待寫入數(shù)據(jù)的源地址、待寫入數(shù)據(jù)的長度、待寫入數(shù)據(jù)的鍵(英文稱為Key)值等信息。一個數(shù)據(jù)寫入請求命令可能有多個16B的SGL。

可選地,服務(wù)器端網(wǎng)卡2101為現(xiàn)場可編程門陣列(Field-Programmable Gate Array,簡稱FPGA)網(wǎng)卡。如此,服務(wù)器端網(wǎng)卡2101具有可編程能力,且FPGA網(wǎng)卡可更快速的對數(shù)據(jù)寫入請求進行解析,進而向客戶端處理器1101更快速返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū)1202;另一方面服務(wù)器端網(wǎng)卡2101向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)1202將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,第一數(shù)據(jù)讀取命令攜帶源地址;第二數(shù)據(jù)讀取命令中攜帶源地址;服務(wù)器端網(wǎng)卡2101將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)之前,還包括:服務(wù)器端網(wǎng)卡2101確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致。也就是說,本發(fā)明實施例中,服務(wù)器端網(wǎng)卡2101確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致之后,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,通過該方案,可以使服務(wù)器端網(wǎng)卡2101準(zhǔn)確找出第二數(shù)據(jù)讀取命令所對應(yīng)的待寫入數(shù)據(jù),從而更加準(zhǔn)確的將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,服務(wù)器端網(wǎng)卡2101向客戶端處理器1101返回第一數(shù)據(jù)讀取命令之前,還包括:服務(wù)器端網(wǎng)卡2101確定服務(wù)器端網(wǎng)卡的存儲區(qū)1202的空閑存儲空間容量不小于待寫入數(shù)據(jù)的數(shù)據(jù)量??蛇x地,若服務(wù)器端網(wǎng)卡2101確定服務(wù)器端網(wǎng)卡的存儲區(qū)1202的空閑存儲空間容量小于待寫入數(shù)據(jù)的數(shù)據(jù)量,則服務(wù)器端網(wǎng)卡2101在執(zhí)行上述步驟201之后,并向服務(wù)器端處理器1105透傳數(shù)據(jù)寫入請求命令;服務(wù)器端網(wǎng)卡2101接收服務(wù)器端處理器1105在接收到數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令透傳給客戶端服務(wù)器,之后接收客戶端服務(wù)器所返回的待寫入數(shù)據(jù),并將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的第二目標(biāo)地址,第二目標(biāo)地址為服務(wù)器的存儲區(qū)的地址。

如此,服務(wù)器端網(wǎng)卡2101避免了在服務(wù)器端網(wǎng)卡的存儲區(qū)1202的空閑存儲空間容量較小的情況下,去獲取待寫入數(shù)據(jù)所造成的無法將待寫入數(shù)據(jù)存儲至服務(wù)器端網(wǎng)卡2101所連接的服務(wù)器端的存儲區(qū)1204的問題,從而使整個方案更加合理、高效。

可選地,服務(wù)器端網(wǎng)卡2101將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū),包括:服務(wù)器端網(wǎng)卡2101基于直接內(nèi)存存取(Direct Memory Access,簡稱DMA)方式將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

具體實施中,DMA方式,是一種完全由硬件執(zhí)行I/O交換的工作方式.在這種方式中,DMA控制器從服務(wù)器端處理器1105完全接管對總線的控制,數(shù)據(jù)交換不經(jīng)過服務(wù)器端處理器1105,而直接在內(nèi)存和輸入輸出設(shè)備之間進行。DMA工作時,由DMA控制器向內(nèi)存發(fā)出地址和控制信號,進行地址修改,對傳送字的個數(shù)計數(shù),并且以中斷方式向服務(wù)器端處理器1105報告?zhèn)魉筒僮鞯慕Y(jié)束。

如此,可通過不經(jīng)過服務(wù)器端處理器1105的方式將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū),提高了數(shù)據(jù)寫入速率。

基于上述論述,為了更加清楚的介紹本發(fā)明實施例的方案,圖2d示例性示出了本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法的流程示意圖,如圖2d所示,該方法包括:

步驟3201,客戶端處理器1101和服務(wù)器處理器協(xié)商RDMA成功,客戶端處理器1101在確定需要將待寫入數(shù)據(jù)寫入服務(wù)器端的存儲區(qū)1204時,客戶端處理器1101生成數(shù)據(jù)寫入請求命令(英文稱為Capsule),并將數(shù)據(jù)寫入請求命令依次通過客戶端網(wǎng)卡1102(Net Interface Card,簡稱NIC)和交換網(wǎng),發(fā)送至服務(wù)器端網(wǎng)卡2101。其中,數(shù)據(jù)寫入請求命令為格式為聚散鏈(Scatter Gather List,簡稱SGL)格式,即數(shù)據(jù)寫入請求命令中包含了一個或多個待寫入的數(shù)據(jù)的源地址;源地址為待寫入數(shù)據(jù)的位于客戶端的存儲區(qū)1201的地址;

步驟3202,服務(wù)器端網(wǎng)卡2101接收到數(shù)據(jù)寫入請求命令之后,一方面基于直接的存儲區(qū)存取(Direct Memory Access,簡稱DMA)技術(shù)將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端的存儲區(qū)1204中,以使服務(wù)器端處理器1105從服務(wù)器端的存儲區(qū)1204中讀取數(shù)據(jù)寫入請求命令。另一方面,服務(wù)器端網(wǎng)卡2101對數(shù)據(jù)寫入請求命令進行解析,并在成功解析數(shù)據(jù)寫入請求命令之后,生成第一數(shù)據(jù)讀取命令。其中,第一數(shù)據(jù)讀取命令中待寫入數(shù)據(jù)要寫入的第一目標(biāo)地址,第一目標(biāo)地址為服務(wù)器端網(wǎng)卡的存儲區(qū)1202的地址;

步驟3203,服務(wù)器端網(wǎng)卡2101將第一數(shù)據(jù)讀取命令依次通過交換網(wǎng)和客戶端網(wǎng)卡1102透傳至客戶端的存儲區(qū)1201,客戶端處理器1101從客戶端的存儲區(qū)1201中讀取該第一數(shù)據(jù)讀取命令;可選地,第一數(shù)據(jù)讀取命令中包括待寫入數(shù)據(jù)的源地址;

步驟3204,客戶端處理器1101根據(jù)該第一數(shù)據(jù)讀取命令,將源地址的待寫入數(shù)據(jù)讀出,并生成數(shù)據(jù)讀取響應(yīng)命令,數(shù)據(jù)讀取響應(yīng)命令中攜帶待寫入數(shù)據(jù);

步驟3205,客戶端處理器1101將數(shù)據(jù)讀取響應(yīng)命令依次通過客戶端網(wǎng)卡1102和交換網(wǎng)發(fā)送至服務(wù)器端網(wǎng)卡2101;

步驟3206,服務(wù)器端網(wǎng)卡2101接收客戶端處理器1101在接收到第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),服務(wù)器端網(wǎng)卡2101將待寫入數(shù)據(jù)存儲于第一目標(biāo)地址所指的存儲區(qū);

步驟3207,服務(wù)器端處理器1105解析數(shù)據(jù)寫入請求命令,解析后發(fā)現(xiàn)數(shù)據(jù)寫入請求命令是SGL格式的數(shù)據(jù)寫入請求命令,則服務(wù)器端處理器1105申請服務(wù)器端的存儲區(qū)1204中的存儲區(qū)域,并記錄下申請到的位于服務(wù)器端的存儲區(qū)1204上的第二目標(biāo)地址,生成第二數(shù)據(jù)讀取命令;該第二數(shù)據(jù)讀取命令中攜帶源地址和服務(wù)器端的存儲區(qū)1204上的第二目標(biāo)地址;

步驟3208,服務(wù)器端處理器1105向服務(wù)器端網(wǎng)卡2101發(fā)送第二數(shù)據(jù)讀取命令;

步驟3209,服務(wù)器端網(wǎng)卡2101在接收到第二數(shù)據(jù)讀取命令之后,在確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令的源地址一致時,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,在上述步驟3202中,將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端的存儲區(qū)1204,和對數(shù)據(jù)寫入請求命令進行解析無先后順序,比如可以先對數(shù)據(jù)寫入請求命令進行解析,之后將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端的存儲區(qū)1204;或者先將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端的存儲區(qū)1204,再對數(shù)據(jù)寫入請求命令進行解析。

可選地,在上述步驟3202中,可以在確定服務(wù)器端網(wǎng)卡的存儲區(qū)1202的空閑存儲空間容量不小于待寫入數(shù)據(jù)的數(shù)據(jù)量之后,再執(zhí)行上述步驟3202中的對數(shù)據(jù)寫入請求命令進行解析;若確定服務(wù)器端網(wǎng)卡的存儲區(qū)1202的空閑存儲空間容量小于待寫入數(shù)據(jù)的數(shù)據(jù)量,則不再執(zhí)行上述步驟3202中的對數(shù)據(jù)寫入請求命令進行解析,而是僅僅將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端的存儲區(qū)1204,服務(wù)器端處理器1105在解析數(shù)據(jù)寫入請求命令,解析后發(fā)現(xiàn)數(shù)據(jù)寫入請求命令是SGL格式的數(shù)據(jù)寫入請求命令,則服務(wù)器端處理器1105申請服務(wù)器端的存儲區(qū)1204中的存儲區(qū)域,并記錄下申請到的位于服務(wù)器端的存儲區(qū)1204上的第二目標(biāo)地址,生成第二數(shù)據(jù)讀取命令,并向服務(wù)器端網(wǎng)卡2101發(fā)送,服務(wù)器端網(wǎng)卡2101接收服務(wù)器端處理器1105在接收到數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令透傳給客戶端服務(wù)器,之后接收客戶端服務(wù)器所返回的待寫入數(shù)據(jù),并將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,在上述步驟3209中,服務(wù)器端網(wǎng)卡2101在接收到第二數(shù)據(jù)讀取命令之后,也有可能還未執(zhí)行上述步驟3206,此時服務(wù)器端網(wǎng)卡2101可以等待一段時間,等上述步驟3206執(zhí)行完畢,即將待寫入數(shù)據(jù)寫入位于服務(wù)器端網(wǎng)卡的存儲區(qū)1202上的第一目標(biāo)地址之后,再將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,在上述步驟3209中,服務(wù)器端網(wǎng)卡2101在接收到第二數(shù)據(jù)讀取命令之后,也有可能還未執(zhí)行上述步驟3202,此時服務(wù)器端網(wǎng)卡2101可以不再執(zhí)行上述步驟3202,僅僅將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端的存儲區(qū)1204,服務(wù)器端處理器1105在解析數(shù)據(jù)寫入請求命令,解析后發(fā)現(xiàn)數(shù)據(jù)寫入請求命令是SGL格式的數(shù)據(jù)寫入請求命令,則服務(wù)器端處理器1105申請服務(wù)器端的存儲區(qū)1204中的存儲區(qū)域,并記錄下申請到的位于服務(wù)器端的存儲區(qū)1204上的第二目標(biāo)地址,生成第二數(shù)據(jù)讀取命令,并向服務(wù)器端網(wǎng)卡2101發(fā)送,服務(wù)器端網(wǎng)卡2101接收服務(wù)器端處理器1105在接收到數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令透傳給客戶端服務(wù)器,之后接收客戶端服務(wù)器所返回的待寫入數(shù)據(jù),并將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)的一個或多個源地址,第一數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的一個或多個源地址,以及位于服務(wù)器端網(wǎng)卡的存儲區(qū)1202的第一目標(biāo)地址。第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的一個或多個源地址,以及位于服務(wù)器端的存儲區(qū)1204的第二目標(biāo)地址??蛇x地,數(shù)據(jù)讀取響應(yīng)命令中攜帶待寫入數(shù)據(jù),以及位于服務(wù)器端網(wǎng)卡的存儲區(qū)1202的第一目標(biāo)地址。

可見,本發(fā)明實施例中,客戶端要向服務(wù)器端寫入數(shù)據(jù)時,客戶端先向服務(wù)器端發(fā)送一個數(shù)據(jù)寫入命令,該數(shù)據(jù)寫入命令中并未攜帶待寫入數(shù)據(jù),而是攜帶了待寫入數(shù)據(jù)的一個或多個源地址,等待服務(wù)器端返回一個數(shù)據(jù)讀取命令之后,客戶端才將待寫入數(shù)據(jù)返回給服務(wù)器端?;谠摲椒鞒蹋景l(fā)明實施例所提供的解決方案中,通過服務(wù)器端網(wǎng)卡2101,可為FPGA網(wǎng)卡,接收到數(shù)據(jù)寫入請求命令之后,不僅僅像現(xiàn)有技術(shù)一樣,將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端,而且FPGA網(wǎng)卡還對數(shù)據(jù)寫入請求命令進行解析,并向客戶端返回第一數(shù)據(jù)讀取命令。可見,本發(fā)明實施例中服務(wù)器端網(wǎng)卡2101在解析數(shù)據(jù)寫入請求之后,即生成第一數(shù)據(jù)讀取命令,但是第二數(shù)據(jù)讀取命令是在服務(wù)器端網(wǎng)卡2101解析數(shù)據(jù)寫入請求之后、且將數(shù)據(jù)寫入請求命令透傳給服務(wù)器端處理器1105、服務(wù)器端處理器1105生成第二數(shù)據(jù)讀取命令,以及服務(wù)器端處理器1105向服務(wù)器端網(wǎng)卡2101發(fā)送之后才得到的。可見,本發(fā)明實施例中服務(wù)器端網(wǎng)卡2101生成第一數(shù)據(jù)讀取命令的時間早于接收到第二數(shù)據(jù)讀取命令的時間。又由于現(xiàn)有技術(shù)中服務(wù)器端網(wǎng)卡2101僅僅是透傳數(shù)據(jù)寫入請求命令,且在接收到第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令發(fā)送給客戶端處理器1101,以使客戶端處理器1101向服務(wù)器端網(wǎng)卡2101傳輸待寫入數(shù)據(jù)。可見,客戶端處理器1101接收到本發(fā)明實施例中第一數(shù)據(jù)讀取命令的時間早于現(xiàn)有技術(shù)中接收到第二數(shù)據(jù)讀取命令的時間,進而客戶端處理器1101可以更早的開始向服務(wù)器端網(wǎng)卡2101傳輸待寫入數(shù)據(jù),從而節(jié)省了整個數(shù)據(jù)寫入過程的時間,降低了數(shù)據(jù)寫入時的時延。

舉個例子,由于本發(fā)明實施例所提供的技術(shù)方案抵消了服務(wù)器端的2次PCIe的操作時延,根據(jù)測試經(jīng)驗,可以認為這個時延等于2us,如果FPGA網(wǎng)卡與交換機1103(英文稱為Switch)的處理的帶寬為40Gbps,F(xiàn)PGA網(wǎng)卡下掛的服務(wù)器端的存儲區(qū)1204(英文稱為MEM CACHE)緩存大小為:40Gbps*2us=80Kbits=10KB;可見,對于FPGA網(wǎng)卡來說,這個緩存的量是可以用FPGA網(wǎng)卡下掛的服務(wù)器端的存儲區(qū)1204來實現(xiàn)的。

從上述內(nèi)容可看出,本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡在解析數(shù)據(jù)寫入請求之后,即生成第一數(shù)據(jù)讀取命令,但是第二數(shù)據(jù)讀取命令是在服務(wù)器端網(wǎng)卡解析數(shù)據(jù)寫入請求之后、且將數(shù)據(jù)寫入請求命令透傳給服務(wù)器端處理器、服務(wù)器端處理器生成第二數(shù)據(jù)讀取命令,以及服務(wù)器端處理器向服務(wù)器端網(wǎng)卡發(fā)送之后才得到的??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡生成第一數(shù)據(jù)讀取命令的時間早于接收到第二數(shù)據(jù)讀取命令的時間。又由于現(xiàn)有技術(shù)中服務(wù)器端網(wǎng)卡僅僅是透傳數(shù)據(jù)寫入請求命令,且在接收到第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令發(fā)送給客戶端處理器,以使客戶端處理器向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù)。可見,客戶端處理器接收到本發(fā)明實施例中第一數(shù)據(jù)讀取命令的時間早于現(xiàn)有技術(shù)中接收到第二數(shù)據(jù)讀取命令的時間,進而客戶端處理器可以更早的開始向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù),從而節(jié)省了整個數(shù)據(jù)寫入過程的時間,降低了數(shù)據(jù)寫入時的時延。

圖3為本發(fā)明實施例提供的一種服務(wù)器端網(wǎng)卡的結(jié)構(gòu)示意圖。

基于相同構(gòu)思,本發(fā)明實施例提供一種服務(wù)器端網(wǎng)卡,用于執(zhí)行上述方法流程,如圖3所示,服務(wù)器端網(wǎng)卡300包括接收單元301、處理單元302、發(fā)送單元303,可選地,還可包括存儲單元304;

接收單元301,用于接收客戶端處理器發(fā)送的數(shù)據(jù)寫入請求命令;接收客戶端處理器在接收到發(fā)送單元303發(fā)送的第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),以及接收服務(wù)器端處理器在接收到發(fā)送單元303發(fā)送的數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令;

發(fā)送單元303,用于向客戶端處理器返回第一數(shù)據(jù)讀取命令,并向服務(wù)器端處理器透傳數(shù)據(jù)寫入請求命令;

處理單元302,用于在成功解析數(shù)據(jù)寫入請求命令之后,生成第一數(shù)據(jù)讀取命令;在通過接收單元301接收到待寫入數(shù)據(jù)之后,將待寫入數(shù)據(jù)存儲于第一目標(biāo)地址所指的存儲區(qū),并將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū);

其中,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)位于客戶端的存儲區(qū)的源地址,第一數(shù)據(jù)讀取命令攜帶待寫入數(shù)據(jù)要寫入的第一目標(biāo)地址,第一目標(biāo)地址為服務(wù)器端網(wǎng)卡的存儲區(qū)的地址;第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的第二目標(biāo)地址,第二目標(biāo)地址為服務(wù)器的存儲區(qū)的地址。

本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,存儲單元304用于存儲帶寫入數(shù)據(jù)。

可選地,服務(wù)器端網(wǎng)卡為現(xiàn)場可編程門陣列FPGA網(wǎng)卡。如此,服務(wù)器端網(wǎng)卡具有編程能力,一方面服務(wù)器端網(wǎng)卡接收到數(shù)據(jù)寫入請求命令之后,不僅僅像現(xiàn)有技術(shù)一樣,將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端,而且FPGA網(wǎng)卡還對數(shù)據(jù)寫入請求命令進行解析,并向客戶端返回第一數(shù)據(jù)讀取命令。

可選地,數(shù)據(jù)寫入請求命令的格式為符合NOF協(xié)議的聚散鏈SGL格式。如此,可更好的改善NOF協(xié)議下數(shù)據(jù)寫入過程時延較大的問題。且SGL格式的數(shù)據(jù)寫入請求命令中包括待寫入數(shù)據(jù)的源地址,從而可減少基于SGL格式進行數(shù)據(jù)寫入方法的時延。

可選地,第一數(shù)據(jù)讀取命令攜帶源地址;第二數(shù)據(jù)讀取命令中攜帶源地址;

處理單元302,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)之前,還用于:

確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致。

也就是說,本發(fā)明實施例中,服務(wù)器端網(wǎng)卡確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致之后,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,通過該方案,可以使服務(wù)器端網(wǎng)卡準(zhǔn)確找出第二數(shù)據(jù)讀取命令所對應(yīng)的待寫入數(shù)據(jù),從而更加準(zhǔn)確的將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,處理單元302,在通過發(fā)送單元303向客戶端處理器返回第一數(shù)據(jù)讀取命令之前,還用于:

確定服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量不小于待寫入數(shù)據(jù)的數(shù)據(jù)量。

如此,服務(wù)器端網(wǎng)卡避免了在服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量較小的情況下,去獲取待寫入數(shù)據(jù)所造成的無法將待寫入數(shù)據(jù)存儲至服務(wù)器端網(wǎng)卡所連接的服務(wù)器端的存儲區(qū)的問題,從而使整個方案更加合理、高效。

從上述內(nèi)容可看出,本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡在解析數(shù)據(jù)寫入請求之后,即生成第一數(shù)據(jù)讀取命令,但是第二數(shù)據(jù)讀取命令是在服務(wù)器端網(wǎng)卡解析數(shù)據(jù)寫入請求之后、且將數(shù)據(jù)寫入請求命令透傳給服務(wù)器端處理器、服務(wù)器端處理器生成第二數(shù)據(jù)讀取命令,以及服務(wù)器端處理器向服務(wù)器端網(wǎng)卡發(fā)送之后才得到的??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡生成第一數(shù)據(jù)讀取命令的時間早于接收到第二數(shù)據(jù)讀取命令的時間。又由于現(xiàn)有技術(shù)中服務(wù)器端網(wǎng)卡僅僅是透傳數(shù)據(jù)寫入請求命令,且在接收到第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令發(fā)送給客戶端處理器,以使客戶端處理器向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù)??梢姡蛻舳颂幚砥鹘邮盏奖景l(fā)明實施例中第一數(shù)據(jù)讀取命令的時間早于現(xiàn)有技術(shù)中接收到第二數(shù)據(jù)讀取命令的時間,進而客戶端處理器可以更早的開始向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù),從而節(jié)省了整個數(shù)據(jù)寫入過程的時間,降低了數(shù)據(jù)寫入時的時延。

圖4為本發(fā)明實施例提供的一種服務(wù)器端網(wǎng)卡的結(jié)構(gòu)示意圖。

基于相同構(gòu)思,本發(fā)明實施例提供一種服務(wù)器端網(wǎng)卡,用于執(zhí)行上述方法流程,如圖4所示,服務(wù)器端網(wǎng)卡400包括接收器405、發(fā)送器404、處理器401和存儲器402,其中,接收器405和發(fā)送器404也可統(tǒng)稱為收發(fā)器403;

處理器401,用于讀取存儲器402中的程序,執(zhí)行下列過程:

通過接收器405接收客戶端處理器401發(fā)送的數(shù)據(jù)寫入請求命令;在成功解析數(shù)據(jù)寫入請求命令之后,生成第一數(shù)據(jù)讀取命令;通過發(fā)送器404向客戶端處理器401返回第一數(shù)據(jù)讀取命令,并向服務(wù)器端處理器401透傳數(shù)據(jù)寫入請求命令;通過接收單元接收客戶端處理器401在接收到發(fā)送器404發(fā)送的第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),以及接收服務(wù)器端處理器401在接收到發(fā)送器404發(fā)送的數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令;在通過接收器405接收到待寫入數(shù)據(jù)之后,將待寫入數(shù)據(jù)存儲于第一目標(biāo)地址所指的存儲區(qū),并將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū);

接收器405,用于接收客戶端處理器401發(fā)送的數(shù)據(jù)寫入請求命令;接收客戶端處理器401在接收到發(fā)送器404發(fā)送的第一數(shù)據(jù)讀取命令后發(fā)送的待寫入數(shù)據(jù),以及接收服務(wù)器端處理器401在接收到發(fā)送器404發(fā)送的數(shù)據(jù)寫入請求命令后返回的第二數(shù)據(jù)讀取命令;

發(fā)送器404,用于向客戶端處理器401返回第一數(shù)據(jù)讀取命令,并向服務(wù)器端處理器401透傳數(shù)據(jù)寫入請求命令;

存儲器402,還用于存儲待寫入數(shù)據(jù);

其中,數(shù)據(jù)寫入請求命令中攜帶待寫入數(shù)據(jù)位于客戶端的存儲區(qū)的源地址,第一數(shù)據(jù)讀取命令攜帶待寫入數(shù)據(jù)要寫入的第一目標(biāo)地址,第一目標(biāo)地址為服務(wù)器端網(wǎng)卡的存儲區(qū)的地址;第二數(shù)據(jù)讀取命令中攜帶待寫入數(shù)據(jù)的第二目標(biāo)地址,第二目標(biāo)地址為服務(wù)器的存儲區(qū)的地址。

本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,服務(wù)器端網(wǎng)卡為現(xiàn)場可編程門陣列FPGA網(wǎng)卡。如此,服務(wù)器端網(wǎng)卡具有編程能力,一方面服務(wù)器端網(wǎng)卡接收到數(shù)據(jù)寫入請求命令之后,不僅僅像現(xiàn)有技術(shù)一樣,將該數(shù)據(jù)寫入請求命令透傳至服務(wù)器端,而且FPGA網(wǎng)卡還對數(shù)據(jù)寫入請求命令進行解析,并向客戶端返回第一數(shù)據(jù)讀取命令。

可選地,數(shù)據(jù)寫入請求命令的格式為符合NOF協(xié)議的聚散鏈SGL格式。如此,可更好的改善NOF協(xié)議下數(shù)據(jù)寫入過程時延較大的問題。且SGL格式的數(shù)據(jù)寫入請求命令中包括待寫入數(shù)據(jù)的源地址,從而可減少基于SGL格式進行數(shù)據(jù)寫入方法的時延。

可選地,第一數(shù)據(jù)讀取命令攜帶源地址;第二數(shù)據(jù)讀取命令中攜帶源地址;

處理器401,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)之前,還用于:

確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致。

也就是說,本發(fā)明實施例中,服務(wù)器端網(wǎng)卡確定第二數(shù)據(jù)讀取命令中攜帶的源地址與第一數(shù)據(jù)讀取命令中攜帶的源地址一致之后,將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,通過該方案,可以使服務(wù)器端網(wǎng)卡準(zhǔn)確找出第二數(shù)據(jù)讀取命令所對應(yīng)的待寫入數(shù)據(jù),從而更加準(zhǔn)確的將待寫入數(shù)據(jù)從第一目標(biāo)地址所指的存儲區(qū)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)。

可選地,處理器401,在通過發(fā)送器404向客戶端處理器401返回第一數(shù)據(jù)讀取命令之前,還用于:

確定服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量不小于待寫入數(shù)據(jù)的數(shù)據(jù)量。

如此,服務(wù)器端網(wǎng)卡避免了在服務(wù)器端網(wǎng)卡的存儲區(qū)的空閑存儲空間容量較小的情況下,去獲取待寫入數(shù)據(jù)所造成的無法將待寫入數(shù)據(jù)存儲至服務(wù)器端網(wǎng)卡所連接的服務(wù)器端的存儲區(qū)的問題,從而使整個方案更加合理、高效。

其中,總線架構(gòu)可以包括任意數(shù)量的互聯(lián)的總線和橋,具體由處理器401代表的一個或多個處理器401和存儲器402代表的存儲器402的各種電路鏈接在一起??偩€架構(gòu)還可以將諸如外圍設(shè)備、穩(wěn)壓器和功率管理電路等之類的各種其他電路鏈接在一起,這些都是本領(lǐng)域所公知的,因此,本文不再對其進行進一步描述??偩€接口提供接口。收發(fā)器可以是多個元件,即包括發(fā)送機和收發(fā)機,提供用于在傳輸介質(zhì)上與各種其他裝置通信的單元。處理器401負責(zé)管理總線架構(gòu)和通常的處理,存儲器402可以存儲處理器401在執(zhí)行操作時所使用的數(shù)據(jù)。

從上述內(nèi)容可看出,本發(fā)明實施例中,由于服務(wù)器端網(wǎng)卡在接收到客戶端服務(wù)器發(fā)送的數(shù)據(jù)寫入請求命令之后,一方面服務(wù)器端網(wǎng)卡直接進行解析,并向客戶端處理器返回第一數(shù)據(jù)讀取命令,以便將待寫入數(shù)據(jù)存儲于服務(wù)器端網(wǎng)卡的存儲區(qū);另一方面服務(wù)器端網(wǎng)卡向服務(wù)器透傳數(shù)據(jù)寫入請求命令,從而在接收到服務(wù)器返回的第二數(shù)據(jù)讀取命令時,可以直接從服務(wù)器端網(wǎng)卡的存儲區(qū)將待寫入數(shù)據(jù)發(fā)送至第二目標(biāo)地址所指的存儲區(qū)??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡在解析數(shù)據(jù)寫入請求之后,即生成第一數(shù)據(jù)讀取命令,但是第二數(shù)據(jù)讀取命令是在服務(wù)器端網(wǎng)卡解析數(shù)據(jù)寫入請求之后、且將數(shù)據(jù)寫入請求命令透傳給服務(wù)器端處理器、服務(wù)器端處理器生成第二數(shù)據(jù)讀取命令,以及服務(wù)器端處理器向服務(wù)器端網(wǎng)卡發(fā)送之后才得到的??梢?,本發(fā)明實施例中服務(wù)器端網(wǎng)卡生成第一數(shù)據(jù)讀取命令的時間早于接收到第二數(shù)據(jù)讀取命令的時間。又由于現(xiàn)有技術(shù)中服務(wù)器端網(wǎng)卡僅僅是透傳數(shù)據(jù)寫入請求命令,且在接收到第二數(shù)據(jù)讀取命令之后,將第二數(shù)據(jù)讀取命令發(fā)送給客戶端處理器,以使客戶端處理器向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù)??梢姡蛻舳颂幚砥鹘邮盏奖景l(fā)明實施例中第一數(shù)據(jù)讀取命令的時間早于現(xiàn)有技術(shù)中接收到第二數(shù)據(jù)讀取命令的時間,進而客戶端處理器可以更早的開始向服務(wù)器端網(wǎng)卡傳輸待寫入數(shù)據(jù),從而節(jié)省了整個數(shù)據(jù)寫入過程的時間,降低了數(shù)據(jù)寫入時的時延。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。

顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
东辽县| 宜君县| 阜南县| 探索| 叙永县| 湘西| 南溪县| 德化县| 鹤岗市| 成都市| 古田县| 孙吴县| 从江县| 额尔古纳市| 沙河市| 萨迦县| 永嘉县| 黄大仙区| 靖西县| 桑植县| 蓬莱市| 奎屯市| 乌拉特后旗| 冀州市| 溧阳市| 赣州市| 金堂县| 攀枝花市| 怀集县| 普兰县| 无为县| 昭觉县| 来安县| 三穗县| 桐乡市| 嘉义市| 南京市| 安国市| 彭州市| 临潭县| 通渭县|