国产精品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>

      一種讀數(shù)據(jù)的方法及設(shè)備的制造方法

      文檔序號:10534783閱讀:768來源:國知局
      一種讀數(shù)據(jù)的方法及設(shè)備的制造方法
      【專利摘要】一種讀數(shù)據(jù)的方法及設(shè)備,用于解決因傳輸完成命令消息而造成傳輸資源浪費的技術(shù)問題。第一種讀數(shù)據(jù)的方法包括:第一設(shè)備接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,所述提交命令消息用于請求通過所述第一設(shè)備讀取第一數(shù)據(jù);所述第一設(shè)備根據(jù)所述提交命令消息獲取所述第一數(shù)據(jù);所述第一設(shè)備將所述第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,且所述第一設(shè)備將完成信息攜帶在所述至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成;所述第一設(shè)備向所述第二設(shè)備發(fā)送所述至少一個數(shù)據(jù)包。
      【專利說明】
      _種讀數(shù)據(jù)的方法及設(shè)備
      技術(shù)領(lǐng)域
      [0001 ]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種讀數(shù)據(jù)的方法及設(shè)備。
      【背景技術(shù)】
      [0002]承載在交換網(wǎng)上的非易失存儲系統(tǒng)交互協(xié)議(NVMe over Fabrics,N0F)是承載在以太網(wǎng)上的基于閃存(flash)應用的協(xié)議標準,NOF定義了驅(qū)動軟件與非易失存儲子系統(tǒng)之間交互的命令集、隊列和寄存器的接口?;贜0F,在以遠程直接數(shù)據(jù)存取(Remote DirectMemory Access,RDMA)作為架構(gòu)(Fabrics)承載NVMe交互的架構(gòu)中,客戶端在需要讀取數(shù)據(jù)時,可以向數(shù)據(jù)的存儲端發(fā)送用于讀取數(shù)據(jù)的命令,客戶端發(fā)送的命令一般被封裝成提交命令消息(commond capsule)的格式,通過基于RDMA協(xié)議的網(wǎng)絡完成交換發(fā)送到存儲端的命令提交隊列(Submiss1n Queue,SQ)隊列中,存儲端在讀取數(shù)據(jù)后,會向客戶端發(fā)送讀取的數(shù)據(jù),在數(shù)據(jù)發(fā)送完畢后,存儲端還會向客戶端發(fā)送用于表示讀操作已完成的信息,例如該信息可以被封裝為完成命令消息(response capsule)的格式,通過基于RDMA協(xié)議的網(wǎng)絡發(fā)送給客戶端,以表示操作完成。
      [0003]可見,基于RDMA協(xié)議的網(wǎng)絡需要傳輸多個完成命令消息,特別是在頻繁讀數(shù)據(jù)的場景下,傳輸大量的完成命令消息顯然比較浪費傳輸資源,從而導致系統(tǒng)性能下降,

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明實施例提供一種讀數(shù)據(jù)的方法及設(shè)備,用于解決因傳輸完成命令消息而造成傳輸資源浪費的技術(shù)問題。
      [0005]第一方面,提供一種讀數(shù)據(jù)的方法,該方法可以包括:第一設(shè)備接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請求通過第一設(shè)備讀取第一數(shù)據(jù)。第一設(shè)備根據(jù)該提交命令消息獲取第一數(shù)據(jù),第一設(shè)備將第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,且第一設(shè)備將完成信息攜帶在至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中,完成信息用于指示第一數(shù)據(jù)已讀取完成。第一設(shè)備向第二設(shè)備發(fā)送至少一個數(shù)據(jù)包。
      [0006]本發(fā)明實施例中,第一設(shè)備在讀取第一數(shù)據(jù)后,可以將完成信息攜帶在用于承載數(shù)據(jù)的數(shù)據(jù)包中,即,可以將用于指示讀取完畢的信息,即完成信息,和數(shù)據(jù)放在一起發(fā)送,無需在數(shù)據(jù)發(fā)送完畢后再額外發(fā)送完成信息,這樣可以有效節(jié)省傳輸資源,對于兩個設(shè)備來說也減少了交互過程,減輕設(shè)備負擔,也可以在一定程度上提高系統(tǒng)性能。
      [0007]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,第一設(shè)備將第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,可以通過以下方式實現(xiàn):第一設(shè)備按照最大傳輸單元的大小將第一數(shù)據(jù)分成至少一個子數(shù)據(jù),第一設(shè)備將至少一個子數(shù)據(jù)分別攜帶在與至少一個子數(shù)據(jù)一一對應的至少一個數(shù)據(jù)包中。
      [0008]最大傳輸單元規(guī)定了通信協(xié)議的某一層所能通過的最大的數(shù)據(jù)包的大小,因此數(shù)據(jù)包的大小只有滿足最大傳輸單元才能正常傳輸。而按照最大傳輸單元的大小來將第一數(shù)據(jù)分為至少一個子數(shù)據(jù),可以在滿足通信協(xié)議的規(guī)定的情況下,通過一個數(shù)據(jù)包傳輸盡可能多的數(shù)據(jù),以盡量節(jié)省傳輸資源。
      [0009]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,第一設(shè)備將完成信息攜帶在至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中,可以通過以下方式實現(xiàn):第一設(shè)備將完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中。其中,第一子數(shù)據(jù)為第一數(shù)據(jù)的至少一個子數(shù)據(jù)中的一個子數(shù)據(jù),第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
      [0010]S卩,可以將完成信息攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中。一般來說,完成信息是用于指示第一數(shù)據(jù)已讀取完成,那么將完成信息攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中才最能說明數(shù)據(jù)已讀取完成。另外,在將第一數(shù)據(jù)分為子數(shù)據(jù)時,一般都是按照最大傳輸單元的最大值在進行,例如最大傳輸單元最大支持4096字節(jié),那么可以按照4096字節(jié)來將第一數(shù)據(jù)分成至少一個子數(shù)據(jù),即除了第一數(shù)據(jù)的尾切片之外,其他子數(shù)據(jù)的大小都可以是4096字節(jié),那么,也就尾切片的大小可能會小于或等于4096字節(jié),直接選擇將完成信息攜帶在承載了尾切片的數(shù)據(jù)包中,也是減少了判斷其他數(shù)據(jù)包的大小以確定其他數(shù)據(jù)包是否能攜帶完成信息的過程,減輕設(shè)備的工作量。
      [0011]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,第一設(shè)備在第一數(shù)據(jù)包的包頭中攜帶指示信息,指示信息用于指示完成信息在第一數(shù)據(jù)包中的位置。
      [0012]在第一數(shù)據(jù)包里攜帶完成信息后,可以在第一數(shù)據(jù)包的包頭中攜帶指示信息,這樣接收設(shè)備在接收第一數(shù)據(jù)包后就可以根據(jù)第一數(shù)據(jù)包的包頭的指示信息從第一數(shù)據(jù)包里獲取完成?目息。
      [0013]第二方面,提供另一種讀數(shù)據(jù)的方法,該方法可以包括:第二設(shè)備向第一設(shè)備發(fā)送基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請求通過第一設(shè)備讀取第一數(shù)據(jù)。第二設(shè)備根據(jù)該提交命令消息接收第一設(shè)備發(fā)送的攜帶第一數(shù)據(jù)的至少一個數(shù)據(jù)包。其中,至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中攜帶了完成信息,該完成信息用于指示第一數(shù)據(jù)已讀取完成。
      [0014]第一設(shè)備在讀取第一數(shù)據(jù)后,可以將完成信息攜帶在用于承載數(shù)據(jù)的數(shù)據(jù)包中,即,可以將完成信息和數(shù)據(jù)放在一起發(fā)送,無需在數(shù)據(jù)發(fā)送完畢后再額外發(fā)送完成信息,第二設(shè)備也無需在數(shù)據(jù)接收完成后再額外接收專門承載完成信息的消息,這樣可以有效節(jié)省傳輸資源,對于兩個設(shè)備來說也減少了交互過程,減輕設(shè)備負擔,也可以在一定程度上提高系統(tǒng)性能。
      [0015]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,完成信息攜帶在至少一個數(shù)據(jù)包中的第一數(shù)據(jù)包中,第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為第一數(shù)據(jù)的一個子數(shù)據(jù),第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
      [0016]S卩,完成信息可以攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中。一般來說,完成信息是用于指示第一數(shù)據(jù)已讀取完成,那么將完成信息攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中,第二設(shè)備通過第一數(shù)據(jù)包獲得了第一數(shù)據(jù)的尾切片,又獲得了完成信息,就可以確定數(shù)據(jù)已讀取完成,后面可能無需再接收承載了第一數(shù)據(jù)的其他數(shù)據(jù)包。
      [0017]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,該方法還可以包括:第二設(shè)備獲取第一數(shù)據(jù)包的包頭攜帶的指示信息,第二設(shè)備根據(jù)指示信息確定完成信息在第一數(shù)據(jù)包中的位置,第二設(shè)備根據(jù)確定的位置從第一數(shù)據(jù)包中獲取完成信息。
      [0018]在第一數(shù)據(jù)包里攜帶完成信息后,可以在第一數(shù)據(jù)包的包頭中攜帶指示信息,這樣第二設(shè)備在接收第一數(shù)據(jù)包后就可以根據(jù)第一數(shù)據(jù)包的包頭的指示信息從第一數(shù)據(jù)包的相應位置獲取完成信息。
      [0019]第三方面,提供第一種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括存儲器、處理器、接收器和發(fā)送器。其中,存儲器可以用于存儲處理器執(zhí)行任務所需的指令,接收器可以用于接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請求通過該設(shè)備讀取第一數(shù)據(jù)。處理器可以用于執(zhí)行存儲器所存儲的指令,根據(jù)接收器接收的該提交命令消息獲取第一數(shù)據(jù),將第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,且將完成信息攜帶在至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中,完成信息用于指示第一數(shù)據(jù)已讀取完成,發(fā)送器可以用于向第二設(shè)備發(fā)送至少一個數(shù)據(jù)包。
      [0020]結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,處理器可以用于將第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,可以通過以下方式實現(xiàn):按照最大傳輸單元的大小將第一數(shù)據(jù)分成至少一個子數(shù)據(jù),將至少一個子數(shù)據(jù)分別攜帶在與至少一個子數(shù)據(jù)一一對應的至少一個數(shù)據(jù)包中。
      [0021]結(jié)合第三方面或第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,處理器可以用于將完成信息攜帶在至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中,可以通過以下方式實現(xiàn):將完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中。其中,第一子數(shù)據(jù)為第一數(shù)據(jù)的至少一個子數(shù)據(jù)中的一個子數(shù)據(jù),第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
      [0022]結(jié)合第三方面的第二種可能的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,處理器還可以用于在第一數(shù)據(jù)包的包頭中攜帶指示信息,該指示信息用于指示完成信息在第一數(shù)據(jù)包中的位置。
      [0023]第四方面,提供第二種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括發(fā)送器和接收器。發(fā)送器可以用于向第一設(shè)備發(fā)送基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請求通過第一設(shè)備讀取第一數(shù)據(jù)。接收器可以用于根據(jù)發(fā)送器發(fā)送的該提交命令消息接收第一設(shè)備發(fā)送的攜帶第一數(shù)據(jù)的至少一個數(shù)據(jù)包。其中,至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中攜帶了完成信息,完成信息用于指示第一數(shù)據(jù)已讀取完成。
      [0024]結(jié)合第四方面,在第四方面的第一種可能的實現(xiàn)方式中,完成信息攜帶在至少一個數(shù)據(jù)包中的第一數(shù)據(jù)包中,第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為第一數(shù)據(jù)的一個子數(shù)據(jù),第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
      [0025]結(jié)合第四方面的第一種可能的實現(xiàn)方式,在第四方面的第二種可能的實現(xiàn)方式中,該設(shè)備還可以包括存儲器和處理器。存儲器可以用于存儲處理器執(zhí)行任務所需的指令,處理器可以用于執(zhí)行存儲器所存儲的指令,獲取第一數(shù)據(jù)包的包頭攜帶的指示信息,根據(jù)指示信息確定完成信息在第一數(shù)據(jù)包中的位置,根據(jù)確定的位置從第一數(shù)據(jù)包中獲取完成?目息O
      [0026]第五方面,提供第三種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括用于執(zhí)行第一方面的方法的模塊。
      [0027]第六方面,提供第四種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括用于執(zhí)行第二方面的方法的模塊。
      [0028]第七方面,提供一種計算機存儲介質(zhì),其中,該計算機存儲介質(zhì)可存儲程序,該程序執(zhí)行時包括第一方面中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
      [0029]第八方面,提供另一種計算機存儲介質(zhì),其中,該計算機存儲介質(zhì)可存儲程序,該程序執(zhí)行時包括第二方面中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
      【附圖說明】
      [0030]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所介紹的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0031 ]圖1為本發(fā)明實施例的一種可能的應用場景不意圖;
      [0032]圖2為本發(fā)明實施例提供的進行讀數(shù)據(jù)的一種可能的硬件架構(gòu)示意圖;
      [0033]圖3為本發(fā)明實施例提供的一種讀數(shù)據(jù)的方法的可能的流程圖;
      [0034]圖4為本發(fā)明實施例提供的另一種讀數(shù)據(jù)的方法的可能的流程圖;
      [0035]圖5為本發(fā)明實施例提供的基于圖4和圖5的一種讀數(shù)據(jù)的方法的可能的流程圖;
      [0036]圖6A為本發(fā)明實施例提供的第二數(shù)據(jù)包的幀結(jié)構(gòu)示意圖;
      [0037]圖6B為本發(fā)明實施例提供的第一數(shù)據(jù)包的幀結(jié)構(gòu)示意圖;
      [0038]圖7A為現(xiàn)有技術(shù)中在NOF下讀取數(shù)據(jù)的示意圖;
      [0039]圖7B為本發(fā)明實施例提供的在NOF下讀取數(shù)據(jù)的示意圖;
      [0040]圖8為本發(fā)明實施例提供的第一種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)示意圖;
      [0041 ]圖9為本發(fā)明實施例提供的第二種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)示意圖;
      [0042]圖10為本發(fā)明實施例提供的第一種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)框圖;
      [0043]圖11為本發(fā)明實施例提供的第二種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)框圖。
      【具體實施方式】
      [0044]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明實施例保護的范圍。
      [0045]本文中描述的技術(shù)可用于各種網(wǎng)絡,例如基于RDMA協(xié)議的網(wǎng)絡,或者也可以用于其他可能的網(wǎng)絡。
      [0046]以下,對本發(fā)明實施例中的部分用語進行解釋說明,以便于本領(lǐng)域技術(shù)人員理解。
      [0047]I)終端設(shè)備,是指向用戶提供語音和/或數(shù)據(jù)連通性的設(shè)備,例如可以包括具有無線連接功能的手持式設(shè)備、或連接到無線調(diào)制解調(diào)器的處理設(shè)備。該終端設(shè)備可以經(jīng)無線接入網(wǎng)(Rad1 Access Network,RAN)與核心網(wǎng)進行通信,與RAN交換語音和/或數(shù)據(jù)。該終端設(shè)備可以包括UE、無線終端設(shè)備、移動終端設(shè)備、訂戶單元(Subscriber Unit)、訂戶站(Subscriber Stat1n),移動站(Mobile Stat1n)、移動臺(Mobile)、遠程站(RemoteStat1n)、接入點(Access Point,AP)、遠程終端設(shè)備(Remote Terminal)、接入終端設(shè)備(Access Terminal)、用戶終端設(shè)備(User Terminal)、用戶代理(User Agent)、或用戶裝備(User Device)等。例如,可以包括移動電話(或稱為“蜂窩”電話),具有移動終端設(shè)備的計算機,便攜式、袖珍式、手持式、計算機內(nèi)置的或者車載的移動裝置。例如,個人通信業(yè)務(Personal Communicat1n Service,PCS)電話、無繩電話、會話發(fā)起協(xié)議(SIP)話機、無線本地環(huán)路(Wireless Local Loop,WLL)站、個人數(shù)字助理(Personal Digital Assistant,PDA)等設(shè)備。
      [0048]2)網(wǎng)絡設(shè)備,例如包括基站(例如,接入點),具體可以是指接入網(wǎng)中在空中接口上通過一個或多個扇區(qū)與無線終端設(shè)備通信的設(shè)備?;究捎糜趯⑹盏降目罩袔c網(wǎng)際協(xié)議(IP)分組進行相互轉(zhuǎn)換,作為無線終端設(shè)備與接入網(wǎng)的其余部分之間的路由器,其中接入網(wǎng)的其余部分可包括IP網(wǎng)絡?;具€可協(xié)調(diào)對空中接口的屬性管理。例如,基站可以是無線網(wǎng)絡控制器(Rad1 Network Controller,RNC)或基站控制器(Base Stat1n Controller,BSC),或者也可以是演進的LTE系統(tǒng)(LTE-Advanced,LTE-A)中的演進型基站(NodeBSeNBSe-NodeB,evolut1nal Node B),本發(fā)明實施例并不限定。
      [0049]3)第一設(shè)備,例如可以包括終端設(shè)備,或者也可以包括網(wǎng)絡設(shè)備。
      [0050]第二設(shè)備,例如可以包括終端設(shè)備,或者也可以包括網(wǎng)絡設(shè)備。
      [0051]其中,第一設(shè)備的類型和第二設(shè)備的類型可以相同,或者也可以不同。例如可以兩個設(shè)備都是終端設(shè)備或者兩個設(shè)備都是網(wǎng)絡設(shè)備,或者也可以一個設(shè)備是終端設(shè)備另一個設(shè)備是網(wǎng)絡設(shè)備。
      [0052]4)本發(fā)明實施例中的術(shù)語“系統(tǒng)”和“網(wǎng)絡”可被互換使用。“多個”是指兩個或兩個以上?!昂?或”,描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,字符,如無特殊說明,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
      [0053]請參見圖1,首先介紹本發(fā)明實施例的一種可能的應用架構(gòu)。
      [0054]例如將需請求其他設(shè)備讀取數(shù)據(jù)的設(shè)備稱為客戶端,將需讀取數(shù)據(jù)并將讀取的數(shù)據(jù)發(fā)送給請求數(shù)據(jù)的設(shè)備的設(shè)備稱為存儲端。例如客戶端可以包括NVMe客戶端軟件(NVMeHost software)和RDMA模塊,其中NVMe客戶端軟件可以用于生成用于請求數(shù)據(jù)的提交命令消息,RDMA模塊可以通過基于RDMA協(xié)議的網(wǎng)絡發(fā)送該提交命令消息。例如存儲端可以包括RDMA模塊、NVMe控制器(NVMe controIler)和存儲模塊,數(shù)據(jù)都存儲在存儲模塊中,圖1中以4個存儲模塊為例,在實際應用中存儲模塊的數(shù)量不限于此。另外為了區(qū)分,圖1中將客戶端的RDMA模塊稱為RDMA模塊I,將存儲端的RDMA模塊稱為RDMA模塊2。圖1中,以客戶端和存儲端之間的交換網(wǎng)是基于RDMA協(xié)議的網(wǎng)絡為例。
      [0055]在圖1中可以看到,若按照現(xiàn)有技術(shù)的方式,例如客戶端向存儲端發(fā)送提交命令消息,則存儲端除了向客戶端發(fā)送提交命令消息所請求的數(shù)據(jù)之外,還要向客戶端發(fā)送完成命令消息,較為浪費傳輸資源。
      [0056]可選的,RDMA模塊,可以包括能夠?qū)崿F(xiàn)RDMA協(xié)議的功能模塊。
      [0057]可選的,圖1中的NVMe客戶端軟件、RDMA模塊1、RDMA模塊2、和NVMe控制器,都是既可以通過軟件方式實現(xiàn),也可以通過硬件方式實現(xiàn),存儲模塊一般可以通過硬件方式實現(xiàn)。
      [0058]請參見圖2,介紹本發(fā)明實施例的另一種可能的應用架構(gòu)。圖2中的客戶端可以包括中央處理器(CHJ)和網(wǎng)卡,CI3U和網(wǎng)卡例如可以通過一種總線和接口標準(PeripheralComponent Interconnect-Express,PCIe)連接,當然也可能通過其他方式連接。例如圖2中的CPU能夠?qū)崿F(xiàn)圖1中的NVMe客戶端軟件的功能,圖2中的網(wǎng)卡能夠?qū)崿F(xiàn)圖1中的RDMA模塊I的功能。存儲端可以包括RDMA模塊和NVMe控制器,NVMe控制器連接存儲模塊,為了與圖1保持連續(xù),圖2中存儲端的RDMA模塊繼續(xù)標示為RDMA模塊2。圖2中的RDMA模塊2能夠?qū)崿F(xiàn)圖1中的RDMA模塊2的功能,圖2中的NVMe控制器能夠?qū)崿F(xiàn)圖1中的NVMe控制器的功能。圖2中的存儲模塊也繼續(xù)以4個為例。在圖2中,以RDMA模塊和NVMe控制器都通過FPGA實現(xiàn)為例,即將RDMA的功能和NVMe控制器的功能融合在同一個FPGA內(nèi)部,S卩FPGA兼容對客戶端發(fā)送的基于RDMA協(xié)議的幀的解析以及兼容NVMe控制器,以及還承載向客戶端發(fā)送基于RDMA協(xié)議的幀的功能和對存儲模塊進行讀寫的功能。在實際應用中當然不限于此,存儲端的RDMA模塊和NVMe控制器除了可以通過FPGA實現(xiàn)之外,還可以通過任意可能的硬件實現(xiàn),例如在通過其他硬件實現(xiàn)時,存儲端的RDMA模塊和NVMe控制器可以通過不同的硬件實現(xiàn),或者也可以通過同一硬件實現(xiàn)。
      [0059]可選的,圖2中的存儲模塊以flash為例,在實際應用中不限于此,例如存儲模塊還可以通過雙倍速率同步動態(tài)隨機存儲器(Double Data Rate,DDR)實現(xiàn),或者還可以通過其他可能的硬件模塊實現(xiàn)。圖2中的flash能夠?qū)崿F(xiàn)圖1中的存儲模塊的功能。
      [0060]可選的,存儲端還可以包括CPU,F(xiàn)PGA與CPU例如可以通過PCIe連接,或者也可能通過其他方式連接。交換網(wǎng)例如可以是基于RDMA協(xié)議的網(wǎng)絡。
      [0061 ]可選的,例如客戶端和存儲端分別是兩塊獨立的單板,這兩塊單板通過交換網(wǎng),例如基于RDMA協(xié)議的網(wǎng)絡實現(xiàn)拉遠。在通信過程中,例如客戶端和存儲端可以通過客戶端的CPU和存儲端的CPU完成RDMA鏈路的協(xié)商,同時可以通過PCIe的接口完成對各自單板的硬件配置管理等。存儲端即承載N0F,將RDMA和NVMe融合在同一個現(xiàn)場可編程門陣列(Field —Programmable Gate Array,F(xiàn)PGA)內(nèi)部,兼容客戶端的RDMA協(xié)議解析和flash的控制器,承載客戶端RDMA幀的解析發(fā)送和flash的讀寫功能。
      [0062]可選的,例如客戶端的CPU可以實現(xiàn)圖1中的NVMe客戶端軟件的功能,例如客戶端的網(wǎng)卡可以實現(xiàn)圖1中的RDMA模塊I的功能。當然,在實際應用中也不限于此,例如客戶端也可以通過其他可能的硬件模塊來實現(xiàn)圖1中的NVMe客戶端軟件的功能,例如可以通過微控制單元(MicrocontrolIer Unit,MOJ)來實現(xiàn),客戶端也可以通過其他可能的硬件模塊來實現(xiàn)圖1中的RDMA模塊I的功能,只要能夠?qū)崿F(xiàn)RDMA協(xié)議的硬件模塊即可。
      [0063]可選的,例如存儲端的通過FPGA實現(xiàn)的RDMA模塊可以實現(xiàn)圖1中的RDMA模塊2的功能,存儲端的通過FPGA實現(xiàn)的NVMe控制器能夠?qū)崿F(xiàn)圖1中的NVMe控制器的功能。
      [0064]圖1和圖2均是以將本發(fā)明實施例提供的方案應用在NOF為例,在實際應用中當然不限于此。
      [0065]下面結(jié)合附圖介紹本發(fā)明實施例提供的方法。
      [0066]請參見圖3,提供一種讀數(shù)據(jù)的方法,該方法的流程描述如下:
      [0067]步驟301:第一設(shè)備接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,提交命令消息用于請求通過第一設(shè)備讀取第一數(shù)據(jù);
      [0068]步驟302:第一設(shè)備根據(jù)提交命令消息獲取第一數(shù)據(jù);
      [0069]步驟303:第一設(shè)備將第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,且第一設(shè)備將完成信息攜帶在至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中;完成信息用于指示第一數(shù)據(jù)已讀取完成;
      [0070]步驟304:第一設(shè)備向第二設(shè)備發(fā)送至少一個數(shù)據(jù)包。
      [0071]請參見圖4,提供另一種讀數(shù)據(jù)的方法,該方法的流程描述如下:
      [0072]步驟401:第二設(shè)備向第一設(shè)備發(fā)送基于RDMA協(xié)議的提交命令消息,提交命令消息用于請求通過第一設(shè)備讀取第一數(shù)據(jù);
      [0073]步驟402:第二設(shè)備根據(jù)提交命令消息接收第一設(shè)備發(fā)送的攜帶第一數(shù)據(jù)的至少一個數(shù)據(jù)包;其中,至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中攜帶了完成信息;完成信息用于指示第一數(shù)據(jù)已讀取完成。
      [0074]可選的,圖3和圖4中所述的第一設(shè)備可以是圖1或圖2中的存儲端,圖3和圖4中所述的第二設(shè)備可以是圖1或圖2中的客戶端。
      [0075]圖3和圖4是相應的方法,因此下面一起介紹。
      [0076]請參見圖5,介紹一種比較完整的在NOF下讀取數(shù)據(jù)的例子,圖5的例子可以依托于圖1或圖2的架構(gòu)實現(xiàn),即圖5繼續(xù)以將本發(fā)明實施例提供的方案應用在NOF為例,且在介紹過程中以依托于圖1所示的架構(gòu)為例。另外在下面的介紹過程中,以第一設(shè)備是存儲端、第二設(shè)備是客戶端為例。
      [0077]1、客戶端的NVMe客戶端軟件生成用于讀取數(shù)據(jù)的提交命令信息,并將提交命令信息發(fā)送給客戶端的RDMA模塊,即圖1中的RDMA模塊I。
      [0078]例如,若按照圖2的架構(gòu),那么NVMe客戶端軟件可以承載在CPU中,NVMe客戶端軟件可以通過PCI e將提交命令信息發(fā)送給網(wǎng)卡。
      [0079 ] 2、客戶端的RDMA模塊I將提交命令消息通過基于RDMA協(xié)議的網(wǎng)絡,即客戶端和存儲端之間的交換網(wǎng),發(fā)送給存儲端的RDMA模塊2,則存儲端的RDMA模塊2可以接收提交命令消息。
      [0080 ]例如若按照圖2的架構(gòu),則客戶端的RDMA模塊I可以承載在網(wǎng)卡中,該網(wǎng)卡例如可以是標準網(wǎng)卡,在該網(wǎng)卡中集成了 RDMA的標準協(xié)議。該網(wǎng)卡接收提交命令信息后,可以將接收的提交命令信息按照RDMA協(xié)議進行封裝,得到提交命令消息,之后通過交換網(wǎng)將提交命令消息發(fā)送給存儲端的RDMA模塊2。根據(jù)協(xié)議的要求,被封裝后的幀會攜帶目的地址。即在本實施例中,提交命令消息是基于RDMA協(xié)議的消息。
      [0081 ]提交命令消息是NOF中規(guī)定的命令格式,提交命令消息可以是commond capsule格式的消息,因為客戶端的RDMA模塊I是將提交命令消息發(fā)送給存儲端的SQ隊列,因此又可以將提交命令消息稱為SQ消息。在其他網(wǎng)絡中,提交命令消息自然可以有其他的定義及格式,只要提交命令消息是用于請求其他設(shè)備讀取數(shù)據(jù)的消息即可,提交命令消息的名稱不構(gòu)成對該消息本身的限制。
      [0082]例如RDMA模塊2可以通過發(fā)送(send)操作來發(fā)送封裝后的幀,send操作是RDMA中的一種固有的操作類型。
      [0083]3、存儲端的RDMA模塊2解析接收的提交命令消息,將提交命令消息所攜帶的讀指令發(fā)送給存儲端的NVME控制器,則NVME控制器可以接收該讀指令。
      [0084]其中,讀指令可以理解為提交命令消息攜帶的有效信息,比如NVMe客戶端軟件發(fā)送給RDMA模塊I的提交命令信息就可以用于指示該讀指令,比如提交命令信息可以是該讀指令本身,或者可以其他用于獲得該讀指令的指示信息,則RDMA模塊I根據(jù)提交命令信息就可以獲得該讀指令,并可以將該讀指令攜帶在提交命令消息中。一般來說,一個提交命令消息可以攜帶一個指令,或者攜帶讀指令,或者攜帶寫指令。
      [0085]存儲端的RDMA模塊2接收來自交換網(wǎng)的命令幀,對其進行校驗和解析,可以得到提交命令消息,以及可以從提交命令消息中得到讀指令,從而可以將讀指令發(fā)送給存儲端的NVMe控制器。例如讀指令中可以攜帶需讀取的數(shù)據(jù)的長度、及需讀取的數(shù)據(jù)的地址等信息。
      [0086]4、存儲端的NVMe控制器接收讀指令后,可以從存儲模塊中讀取數(shù)據(jù),例如將該數(shù)據(jù)稱為第一數(shù)據(jù),并將讀取的第一數(shù)據(jù)發(fā)送給存儲端的RDMA模塊2,則RDMA模塊2可以接收第一數(shù)據(jù),即RDMA模塊2獲取第一數(shù)據(jù)。
      [0087]可選的,存儲端的NVMe控制器中設(shè)置了多個并行的SQ處理引擎,也就是說,NVMe控制器在處理指令時可以并行處理,例如可以并行處理多個讀指令和/或?qū)懼噶?,這樣可以提高處理效率。
      [0088]5、存儲端的RDMA模塊2將第一數(shù)據(jù)分成至少一個子數(shù)據(jù),RDMA模塊2將至少一個子數(shù)據(jù)和完成信息承載在數(shù)據(jù)包中。其中,完成信息可以用于指示第一數(shù)據(jù)已讀取完成。
      [0089]存儲端的RDMA模塊2接收第一數(shù)據(jù)后,可以按照RDMA協(xié)議支持的最大傳輸單元(Maximum Transmiss1n Unit,MTU)的大小來將第一數(shù)據(jù)分為至少一個部分,其中每個部分可以稱為一個切片,也可以稱為一個子數(shù)據(jù),即至少一個部分,或者稱為至少一個子數(shù)據(jù),里面的每個子數(shù)據(jù)都是第一數(shù)據(jù)的一部分。RDMA模塊2可以生成至少一個數(shù)據(jù)包,并將至少一個子數(shù)據(jù)分別攜帶在與至少一個子數(shù)據(jù)一一對應的至少一個數(shù)據(jù)包中,這里的一一對應,可以是指每個數(shù)據(jù)包攜帶一個子數(shù)據(jù),而究竟哪個數(shù)據(jù)包攜帶哪個子數(shù)據(jù),比如可以預先設(shè)定,或者也可以隨機,或者還可以有其他分配方式,本發(fā)明實施例不作限制。
      [0090]可選的,RDMA模塊2在發(fā)送攜帶了第一數(shù)據(jù)的數(shù)據(jù)包時,可以將完成信息攜帶在數(shù)據(jù)包的凈荷(payload)中一起發(fā)送給客戶端的RDMA模塊I,即,在數(shù)據(jù)包中可以將完成信息和數(shù)據(jù)放在一起,這種傳輸方式可以稱為RDMA最后的寫切片攜帶立即數(shù)(RDMA WRITE LASTwith Immediate)的方式。
      [0091]存儲端讀取的第一數(shù)據(jù)需按照RDMA協(xié)議配置的MTU的大小進行發(fā)送,第一數(shù)據(jù)分成的每個子數(shù)據(jù)的大小都需小于等于MTU的大小。例如RDMA協(xié)議支持的MTU的大小為4096字節(jié)(Byte),那么如果第一數(shù)據(jù)的大小為2G,則RDMA模塊2可以將第一數(shù)據(jù)分成2G/4096Byte個部分,每一個部分就是一個RDMA寫(RDMA_WRITE)切片,也可以稱為子數(shù)據(jù),S卩,在本發(fā)明實施例中,切片的概念和子數(shù)據(jù)的概念可互換??蛇x的,根據(jù)讀取的數(shù)據(jù)的長度不同,得到的子數(shù)據(jù)的數(shù)量可能不同,另外根據(jù)MTU的大小不同,得到的子數(shù)據(jù)的大小也可能不同。按照MTU來將第一數(shù)據(jù)分為至少一個子數(shù)據(jù),可以在滿足通信協(xié)議的規(guī)定的情況下,通過一個數(shù)據(jù)包傳輸盡可能多的數(shù)據(jù),以盡量節(jié)省傳輸資源。
      [0092]可選的,如果將完成信息封裝在一個單獨的消息中進行發(fā)送,則可以以responsecapsule格式進行封裝,那么封裝后得到的消息就可以是完成命令消息。因此可以認為,本發(fā)明實施例是將需要單獨發(fā)送的完成信息放在數(shù)據(jù)中一并發(fā)送了,這樣可以節(jié)省傳輸資源。
      [0093]可選的,完成命令消息也是NOF中規(guī)定的命令格式,完成命令消息例如可以是response capsule格式的消息,因為存儲端在向客戶端發(fā)送完成命令消息之前,是將完成命令消息先存儲到存儲端的CQ隊列,因此又可以將完成命令消息稱為CQ消息。
      [0094]可選的,RDMA模塊2可以將完成信息攜帶在至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中進行發(fā)送。例如,RDMA模塊2可以將完成信息攜帶在至少一個數(shù)據(jù)包中的最后一個數(shù)據(jù)包中進行發(fā)送,例如將最后一個數(shù)據(jù)包稱為第一數(shù)據(jù)包,例如第一數(shù)據(jù)包攜帶的子數(shù)據(jù)可以稱為第一數(shù)據(jù)的尾切片,這種方式形成新的幀格式(即第一數(shù)據(jù)包的幀格式)可以稱為RDMAWRITE LAST with Immediate,這是RDMA協(xié)議中固有的命名規(guī)范,通俗地講可以認為是搭“順風車”的概念。那么在至少一個數(shù)據(jù)包中,第一數(shù)據(jù)包相當于攜帶了立即數(shù),這中帶立即數(shù)的幀可以攜帶立即數(shù)字節(jié)域,例如可以將立即數(shù)字節(jié)域攜帶在第一數(shù)據(jù)包的幀頭部位,例如該立即數(shù)字節(jié)域的長度可以是4字節(jié),可以用來指示完成信息在第一數(shù)據(jù)包中的位置,以便接收端可以正確讀取完成信息。其中所謂的最后一個數(shù)據(jù)包,可以是指該數(shù)據(jù)包中攜帶的子數(shù)據(jù)的尾地址就是第一數(shù)據(jù)的尾地址,比如將第一數(shù)據(jù)包攜帶子數(shù)據(jù)稱為第一子數(shù)據(jù),那么第一子數(shù)據(jù)的尾地址就是第一數(shù)據(jù)的尾地址,第一子數(shù)據(jù)就是第一數(shù)據(jù)的尾切片。
      [0095]一般來說,完成信息是用于指示第一數(shù)據(jù)已讀取完成,那么將完成信息攜帶在最后一個數(shù)據(jù)包時才最能說明數(shù)據(jù)已讀取完成。另外,RDMA模塊2在將第一數(shù)據(jù)分為子數(shù)據(jù)時,一般都是按照MTU的最大值在進行,例如MTU的最大支持4096字節(jié),那么RDMA模塊2可以按照4096字節(jié)來將第一數(shù)據(jù)分成至少一個子數(shù)據(jù),即除了第一數(shù)據(jù)的尾切片之外,其他子數(shù)據(jù)的大小都可以是4096字節(jié),那么,也就尾切片的大小可能會等于4096字節(jié),或者可能小于4096字節(jié),那么這里也需要分情況,如果尾切片的大小小于4096字節(jié),即小于MTU的最大值,則RDMA模塊2可以將完成信息攜帶在承載尾切片的數(shù)據(jù)包中進行發(fā)送,而如果切分后得到的尾切片的大小等于4096字節(jié),那么RDMA模塊2也可以不將完成信息攜帶在承載最后尾切片的數(shù)據(jù)包中進行發(fā)送,而可以繼續(xù)按照現(xiàn)有技術(shù)的方式,在發(fā)送完數(shù)據(jù)后再發(fā)送完成命令消息,以避免數(shù)據(jù)包的大小超過MTU的最大值。但切分后得到的尾切片的大小等于4096字節(jié)的這種情況畢竟是少數(shù)情況,因此本發(fā)明實施例能夠在很大程度上節(jié)省傳輸資源。
      [0096]當然,存儲端也可以將完成信息攜帶在其他的數(shù)據(jù)包中進行發(fā)送,不限于只能攜帶在承載了尾切片的數(shù)據(jù)包中。
      [0097]其中,RDMA_WRITE、及RDMAWRITE LAST with Immediate都是RDMA協(xié)議中固定的幀格式的名稱,攜帶的內(nèi)容不同,則名稱就可能不同。
      [0098]請參見圖6A,為一種可能的用于承載子數(shù)據(jù)的數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,例如圖6A為至少一個數(shù)據(jù)包中的第二數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,第二數(shù)據(jù)包可以是至少一個數(shù)據(jù)包中除了第一數(shù)據(jù)包之外的任意一個數(shù)據(jù)包,即,第二數(shù)據(jù)包中未承載完成信息??梢钥吹?,該第二數(shù)據(jù)包可以包括RDMA頭,其中,RDMA頭中可以包括媒體接入控制(Media AccessControl,MAC)字段、全局路由報頭(Global Route Header,GRH)字段和基本傳輸報頭(Bacetransport Header,BTH)字段,MAC字段可以用于指示當前的網(wǎng)絡類型,在網(wǎng)絡不同時,MAC字段也可以更換為其他網(wǎng)絡對應的字段,GRH字段可以攜帶該第二數(shù)據(jù)包的源網(wǎng)際協(xié)議(Internet Protocol,IP)地址和目的IP地址,BTH字段可以用于指示該第二數(shù)據(jù)包的操作類型,比如為發(fā)送(send)類型,還可以用于攜帶序列號,以盡量避免出現(xiàn)亂序的情況等。該第二數(shù)據(jù)包還可以包括凈荷(payload)和校驗字段,payload可以用于承載子數(shù)據(jù),校驗字段例如可以包括恒定循環(huán)冗余校驗(Invariant Cyclic Redundancy Check,ICRC)字段和可變循環(huán)冗余校驗(Volatile Cyclic Redundancy Check,VCRC)字段。
      [0099]請參見圖6B,為一種可能的用于承載子數(shù)據(jù)的數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,例如圖6B為第一數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,即,第一數(shù)據(jù)包中承載了完成信息??梢钥吹?,該第一數(shù)據(jù)包可以包括RDMA頭,其中,RDMA頭中可以包括MAC、,GRH字段、BTH字段和擴展傳輸報頭(Extended transport Header,ΕΤΗ)字段,該第一數(shù)據(jù)包還可以包括pay load、即時數(shù)據(jù)(Immediate data,I data)字段和校驗字段,校驗字段例如可以包括ICRC字段和VCRC字段。與第二數(shù)據(jù)包相同的字段不再解釋,I data字段可以用于承載本發(fā)明實施例所述的完成信息,ETH字段可以用于完成如前所述的立即數(shù)字節(jié)域的功能,S卩,ETH可以指示I data在第一數(shù)據(jù)包中的位置。
      [0100]6、存儲端的RDMA模塊I將至少一個數(shù)據(jù)包發(fā)送給客戶端的RDMA模塊I,則客戶端的RDMA模塊I可以接收至少一個數(shù)據(jù)包。其中,至少一個數(shù)據(jù)包中的第一數(shù)據(jù)包中攜帶了完成
      ?目息O
      [0101 ] 7、客戶端的RDMA模塊I接收至少一個數(shù)據(jù)包,可以通過第一數(shù)據(jù)包獲取完成信息。
      [0102]可選的,客戶端的RDMA模塊I接收RDMA WRITE LAST with I_ediate后,可以根據(jù)第一數(shù)據(jù)包的幀頭中的立即數(shù)字節(jié)域的指示從第一數(shù)據(jù)包中讀取完成信息。
      [0103]8、RDMA模塊I將完成信息發(fā)送給客戶端的NVMe客戶端軟件。
      [0104]9、客戶端的NVMe客戶端通過解析完成信息即可知道提交命令消息已經(jīng)執(zhí)行完成,讀取第一數(shù)據(jù)的流程結(jié)束。
      [0105]需注意的是,本發(fā)明實施例中圖3-圖5所介紹的方法中,各個步驟可以按照任意可能的順序執(zhí)行,步驟的編號不代表對步驟的執(zhí)行順序的限制。
      [0106]為了更為明確地說明本發(fā)明實施例能夠?qū)崿F(xiàn)的效果,請參見圖7A,為現(xiàn)有技術(shù)中在NOF下讀取數(shù)據(jù)的示意圖,及請參見圖7B,為本發(fā)明實施例提供的在NOF下讀取數(shù)據(jù)的示意圖。圖7A中,例如客戶端向存儲端發(fā)送提交命令消息,則存儲端除了向客戶端發(fā)送提交命令消息所請求的數(shù)據(jù)之外,還要向客戶端發(fā)送完成命令消息,較為浪費傳輸資源,而圖7B中,例如客戶端向存儲端發(fā)送提交命令消息,則存儲端可以將完成信息攜帶在承載了數(shù)據(jù)的數(shù)據(jù)包中一起發(fā)送給客戶端,即存儲端可以將數(shù)據(jù)和完成信息一并進行發(fā)送,無需再額外專門發(fā)送完成命令消息,節(jié)省了傳輸資源,也減少了兩個設(shè)備的交互過程,有利于提高系統(tǒng)性能。
      [0107]下面結(jié)合附圖介紹讀數(shù)據(jù)的設(shè)備。
      [0108]請參見圖8,提供第一種讀數(shù)據(jù)的設(shè)備,該設(shè)備例如可以是如前所述的第一設(shè)備,例如第一設(shè)備可以是圖1或圖2中的存儲端,若再細化,則也可以將第一設(shè)備理解為圖1或圖2中的RDMA模塊2。該設(shè)備可以包括存儲器801、處理器802、接收器803和發(fā)送器804。
      [0109]其中,處理器802例如可以包括中央處理器(CPU)或特定應用集成電路(Applicat1n Specific Integrated Circuit,ASIC),可以包括一個或多個用于控制程序執(zhí)行的集成電路,可以包括使用現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)開發(fā)的硬件電路??蛇x的,若該設(shè)備是如前所述的RDMA模塊2,則處理器802可以是RDMA模塊2中用于實現(xiàn)RDMA協(xié)議的功能模塊,比如可以通過FPGA實現(xiàn)處理器802的功能。
      [0110]存儲器801的數(shù)量可以是一個或多個。存儲器801可以包括只讀存儲器(Read OnlyMemory,ROM)、隨機存取存儲器(Random Access Memory,RAM)和磁盤存儲器,等等。存儲器801可以用于存儲處理器802執(zhí)行任務所需的指令,還可以用于存儲數(shù)據(jù)等。
      [0111]接收器803可以用于與外部設(shè)備進行網(wǎng)絡通信,例如可以通過以太網(wǎng)、無線接入網(wǎng)、無線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡與外部設(shè)備進行通信。
      [0112]發(fā)送器804可以用于與外部設(shè)備進行網(wǎng)絡通信,例如可以通過以太網(wǎng)、無線接入網(wǎng)、無線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡與外部設(shè)備進行通信。
      [0113]可選的,接收器803和發(fā)送器804可以是一個功能模塊,比如一個功能模塊可以既實現(xiàn)發(fā)送功能又實現(xiàn)接收功能,或者可以是一個功能模塊中的不同的子模塊,或者接收器803和發(fā)送器804也可以是兩個彼此獨立的功能模塊。
      [0114]存儲器801、接收器803和發(fā)送器804可以通過總線800與處理器802相連接(圖8以此為例),或者也可以通過專門的連接線與處理器802連接。
      [0115]通過對處理器802進行設(shè)計編程,將前述所示的方法所對應的代碼固化到芯片內(nèi),從而使芯片在運行時能夠執(zhí)行前述實施例中的所示的方法。如何對處理器802進行設(shè)計編程為本領(lǐng)域技術(shù)人員所公知的技術(shù),這里不再贅述。
      [0116]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是如前所述的第一設(shè)備。因此,對于該設(shè)備中的各單元所實現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
      [0117]請參見圖9,提供第二種讀數(shù)據(jù)的設(shè)備,該設(shè)備例如可以是如前所述的第二設(shè)備,例如第二設(shè)備可以是圖1或圖2中的客戶端,若再細化,則也可以將第二設(shè)備理解為圖1中的RDMA模塊I或圖2中的網(wǎng)卡。該設(shè)備可以包括存儲器901、處理器902、接收器903和發(fā)送器904。
      [0118]其中,處理器902例如可以包括CPU或ASIC,可以包括一個或多個用于控制程序執(zhí)行的集成電路,可以包括使用FPGA開發(fā)的硬件電路??蛇x的,若該設(shè)備是如前所述的RDMA模塊I,則處理器902可以是RDMA模塊I中用于實現(xiàn)RDMA協(xié)議的功能模塊,若該設(shè)備是如前所述的網(wǎng)卡,則處理器902可以是網(wǎng)卡中用于實現(xiàn)RDMA協(xié)議的功能模塊。
      [0119]存儲器901的數(shù)量可以是一個或多個。存儲器901可以包括R0M、RAM和磁盤存儲器,等等。存儲器901可以用于存儲處理器902執(zhí)行任務所需的指令,還可以用于存儲數(shù)據(jù)等。
      [0120]發(fā)送器904可以用于與外部設(shè)備進行網(wǎng)絡通信,例如可以通過以太網(wǎng)、無線接入網(wǎng)、無線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡與外部設(shè)備進行通信。
      [0121]接收器903可以用于與外部設(shè)備進行網(wǎng)絡通信,例如可以通過以太網(wǎng)、無線接入網(wǎng)、無線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡與外部設(shè)備進行通信。
      [0122]可選的,接收器903和發(fā)送器904可以是一個功能模塊,比如一個功能模塊可以既實現(xiàn)發(fā)送功能又實現(xiàn)接收功能,或者可以是一個功能模塊中的不同的子模塊,或者接收器903和發(fā)送器904也可以是兩個彼此獨立的功能模塊。
      [0123]存儲器901、接收器903和發(fā)送器904可以通過總線900與處理器902相連接(圖9以此為例),或者也可以通過專門的連接線與處理器902連接。
      [0124]通過對處理器902進行設(shè)計編程,將前述所示的方法所對應的代碼固化到芯片內(nèi),從而使芯片在運行時能夠執(zhí)行前述實施例中的所示的方法。如何對處理器902進行設(shè)計編程為本領(lǐng)域技術(shù)人員所公知的技術(shù),這里不再贅述。
      [0125]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是如前所述的第二設(shè)備。因此,對于該設(shè)備中的各單元所實現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
      [0126]請參見圖10,提供第一種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括接收模塊1001、處理模塊1002和發(fā)送模塊1003。
      [0127]在實際應用中,接收模塊1001對應的實體設(shè)備可以是圖1中的RDMA模塊2或圖2中的RDMA模塊2,更細一步,接收模塊1001對應的實體設(shè)備可以是圖8中的接收器803,處理模塊1002對應的實體設(shè)備可以是圖1中的RDMA模塊2或圖2中的RDMA模塊2,更細一步,處理模塊1002對應的實體設(shè)備可以是圖8中的處理器802,發(fā)送模塊1003對應的實體設(shè)備可以是圖1中的RDMA模塊2或圖2中的RDMA模塊2,更細一步,發(fā)送模塊1003對應的實體設(shè)備可以是圖8中的發(fā)送器804。
      [0128]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是第一設(shè)備。因此,對于該設(shè)備中的各單元所實現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
      [0129]請參見圖11,提供第二種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括接收模塊1101和發(fā)送模塊1102。可選的,該設(shè)備還可以包括處理模塊1103,在圖11中一并示出。
      [0130]在實際應用中,接收模塊1101對應的實體設(shè)備可以是圖1中的RDMA模塊I或圖2中的網(wǎng)卡,更細一步,接收模塊1101對應的實體設(shè)備可以是圖9中的接收器903,處理模塊1103對應的實體設(shè)備可以是圖1中的RDMA模塊I或圖2中的RDMA模塊I,更細一步,處理模塊1103對應的實體設(shè)備可以是圖9中的處理器902,發(fā)送模塊1102對應的實體設(shè)備可以是圖1中的RDMA模塊I或圖2中的網(wǎng)卡,更細一步,發(fā)送模塊1102對應的實體設(shè)備可以是圖9中的發(fā)送器904。
      [0131]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是第二設(shè)備。因此,對于該設(shè)備中的各單元所實現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
      [0132]本發(fā)明實施例還提供一種計算機存儲介質(zhì),其中,該計算機存儲介質(zhì)可存儲有程序,該程序執(zhí)行時包括上述圖3、圖5或圖7的方法實施例中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
      [0133]本發(fā)明實施例還提供另一種計算機存儲介質(zhì),其中,該計算機存儲介質(zhì)可存儲有程序,該程序執(zhí)行時包括上述圖4、圖5或圖7的方法實施例中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
      [0134]本發(fā)明實施例中,第一設(shè)備在讀取第一數(shù)據(jù)后,可以將用于指示第一數(shù)據(jù)已讀取完成的信息攜帶在用于攜帶數(shù)據(jù)的數(shù)據(jù)包中,即,可以將用于指示讀取完畢的信息和數(shù)據(jù)放在一起發(fā)送,無需在數(shù)據(jù)發(fā)送完畢后再額外發(fā)送用于指示數(shù)據(jù)已讀取完成的信息,這樣可以有效節(jié)省傳輸資源,對于兩個設(shè)備來說也減少了交互過程,減輕設(shè)備負擔,也可以在一定程度上提尚系統(tǒng)性能。
      [0135]在本發(fā)明中,應該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
      [0136]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本發(fā)明實施例。
      [0137]在本發(fā)明實施例中的各功能單元可以集成在一個處理單元中,或者各個單元也可以均是獨立的物理模塊。
      [0138]所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備,例如可以是個人計算機,服務器,或者網(wǎng)絡設(shè)備等,或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:通用串行總線閃存盤(Universal Serial Bus flash drive)、移動硬盤、只讀存儲器(Read-Only Memory,ROM)、隨機存取存儲器(random access memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
      [0139]以上所述,以上實施例僅用以對本發(fā)明的技術(shù)方案進行了詳細介紹,但以上實施例的說明只是用于幫助理解本發(fā)明實施例的方法,不應理解為對本發(fā)明實施例的限制。本技術(shù)領(lǐng)域的技術(shù)人員可輕易想到的變化或替換,都應涵蓋在本發(fā)明實施例的保護范圍之內(nèi)。
      【主權(quán)項】
      1.一種讀數(shù)據(jù)的方法,其特征在于,包括: 第一設(shè)備接收第二設(shè)備發(fā)送的基于遠程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請求通過所述第一設(shè)備讀取第一數(shù)據(jù); 所述第一設(shè)備根據(jù)所述提交命令消息獲取所述第一數(shù)據(jù); 所述第一設(shè)備將所述第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,且所述第一設(shè)備將完成信息攜帶在所述至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成; 所述第一設(shè)備向所述第二設(shè)備發(fā)送所述至少一個數(shù)據(jù)包。2.如權(quán)利要求1所述的方法,其特征在于,所述第一設(shè)備將所述第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,包括: 所述第一設(shè)備按照最大傳輸單元的大小將所述第一數(shù)據(jù)分成至少一個子數(shù)據(jù); 所述第一設(shè)備將所述至少一個子數(shù)據(jù)分別攜帶在與所述至少一個子數(shù)據(jù)一一對應的所述至少一個數(shù)據(jù)包中。3.如權(quán)利要求1或2所述的方法,其特征在于,所述第一設(shè)備將完成信息攜帶在所述至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中,包括: 所述第一設(shè)備將所述完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中;其中,所述第一子數(shù)據(jù)為所述第一數(shù)據(jù)的至少一個子數(shù)據(jù)中的一個子數(shù)據(jù),所述第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 所述第一設(shè)備在所述第一數(shù)據(jù)包的包頭中攜帶指示信息,所述指示信息用于指示所述完成信息在所述第一數(shù)據(jù)包中的位置。5.一種讀數(shù)據(jù)的方法,其特征在于,包括: 第二設(shè)備向第一設(shè)備發(fā)送基于遠程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請求通過所述第一設(shè)備讀取第一數(shù)據(jù); 所述第二設(shè)備根據(jù)所述提交命令消息接收所述第一設(shè)備發(fā)送的攜帶所述第一數(shù)據(jù)的至少一個數(shù)據(jù)包;其中,所述至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中攜帶了完成信息;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成。6.如權(quán)利要求5所述的方法,其特征在于,所述完成信息攜帶在所述至少一個數(shù)據(jù)包中的第一數(shù)據(jù)包中,所述第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為所述第一數(shù)據(jù)的一個子數(shù)據(jù),所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。7.如權(quán)利要求6所述的方法,其特征在于,所述方法還包括: 所述第二設(shè)備獲取所述第一數(shù)據(jù)包的包頭攜帶的指示信息; 所述第二設(shè)備根據(jù)所述指示信息確定所述完成信息在所述第一數(shù)據(jù)包中的位置; 所述第二設(shè)備根據(jù)確定的位置從所述第一數(shù)據(jù)包中獲取所述完成信息。8.一種讀數(shù)據(jù)的設(shè)備,其特征在于,包括: 接收模塊,用于接收第二設(shè)備發(fā)送的基于遠程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請求通過所述第一設(shè)備讀取第一數(shù)據(jù); 處理模塊,用于根據(jù)所述接收模塊接收的所述提交命令消息獲取所述第一數(shù)據(jù),將所述第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,且將完成信息攜帶在所述至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成; 發(fā)送模塊,用于向所述第二設(shè)備發(fā)送所述處理模塊處理后的所述至少一個數(shù)據(jù)包。9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述處理模塊用于將所述第一數(shù)據(jù)攜帶在至少一個數(shù)據(jù)包中,包括: 所述處理模塊按照最大傳輸單元的大小將所述第一數(shù)據(jù)分成至少一個子數(shù)據(jù); 所述處理模塊將所述至少一個子數(shù)據(jù)分別攜帶在與所述至少一個子數(shù)據(jù)一一對應的所述至少一個數(shù)據(jù)包中。10.如權(quán)利要求8或9所述的設(shè)備,其特征在于,所述處理模塊用于將完成信息攜帶在所述至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中,包括: 所述處理模塊將所述完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中;其中,所述第一子數(shù)據(jù)為所述第一數(shù)據(jù)的至少一個子數(shù)據(jù)中的一個子數(shù)據(jù),所述第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。11.如權(quán)利要求10所述的設(shè)備,其特征在于,所述處理模塊還用于: 在所述第一數(shù)據(jù)包的包頭中攜帶指示信息,所述指示信息用于指示所述完成信息在所述第一數(shù)據(jù)包中的位置。12.一種讀數(shù)據(jù)的設(shè)備,其特征在于,包括: 發(fā)送模塊,用于向第一設(shè)備發(fā)送基于遠程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請求通過所述第一設(shè)備讀取第一數(shù)據(jù); 接收模塊,用于根據(jù)所述發(fā)送模塊發(fā)送的所述提交命令消息接收所述第一設(shè)備發(fā)送的攜帶所述第一數(shù)據(jù)的至少一個數(shù)據(jù)包;其中,所述至少一個數(shù)據(jù)包中的其中一個數(shù)據(jù)包中攜帶了完成信息;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成。13.如權(quán)利要求12所述的設(shè)備,其特征在于,所述完成信息攜帶在所述至少一個數(shù)據(jù)包中的第一數(shù)據(jù)包中,所述第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為所述第一數(shù)據(jù)的一個子數(shù)據(jù),所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。14.如權(quán)利要求13所述的設(shè)備,其特征在于,所述設(shè)備還包括處理模塊,用于: 獲取所述第一數(shù)據(jù)包的包頭攜帶的指示信息; 根據(jù)所述指示信息確定所述完成信息在所述第一數(shù)據(jù)包中的位置;根據(jù)確定的位置從所述第一數(shù)據(jù)包中獲取所述完成信息。
      【文檔編號】H04L29/08GK105893323SQ201610343792
      【公開日】2016年8月24日
      【申請日】2016年5月23日
      【發(fā)明人】高棟棟, 石仔良, 王 琦
      【申請人】華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1