用于隱式存儲(chǔ)器注冊的顯式流控制的制作方法
【專利摘要】本文公開了用于使用隱式存儲(chǔ)器注冊來促成對(duì)RDMA傳輸?shù)娘@式流控制的方法、裝置和系統(tǒng)。為了建立RDMA數(shù)據(jù)傳輸,源RNIC發(fā)送針對(duì)使用隱式存儲(chǔ)器注冊在目標(biāo)RNIC處分配目標(biāo)緩沖區(qū)的請(qǐng)求。在隱式存儲(chǔ)器注冊中,將被注冊的一個(gè)或多個(gè)頁不是由源RNIC所顯式標(biāo)識(shí)的,并且可以對(duì)應(yīng)于被頁出到虛擬存儲(chǔ)器的頁。作為結(jié)果,對(duì)這種頁的注冊導(dǎo)致頁錯(cuò)誤,這帶來了在完成對(duì)頁的注冊和釘扎之前的頁錯(cuò)誤延遲。響應(yīng)于檢測到頁錯(cuò)誤,目標(biāo)RNIC返回確認(rèn),該確認(rèn)指示頁錯(cuò)誤延遲正在發(fā)生。響應(yīng)于接收到該確認(rèn),源RNIC暫時(shí)停止發(fā)送分組,并且在重傳超時(shí)期滿之前不重傳針對(duì)其沒有接收到ACK的分組。
【專利說明】用于隱式存儲(chǔ)器注冊的顯式流控制
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明的領(lǐng)域通常涉及計(jì)算機(jī)聯(lián)網(wǎng),具體但非排他地涉及用于使用隱式存儲(chǔ)器注冊執(zhí)行對(duì)RDMA傳輸?shù)牧骺刂啤?br>
【背景技術(shù)】
[0002]遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)是一種直接存儲(chǔ)器訪問機(jī)制,其使計(jì)算機(jī)能夠訪問另一臺(tái)計(jì)算機(jī)的存儲(chǔ)器,而不涉及這些計(jì)算機(jī)的操作系統(tǒng)。RDMA通過使網(wǎng)絡(luò)適配器能夠向或從應(yīng)用存儲(chǔ)器直接傳輸數(shù)據(jù)來支持零拷貝聯(lián)網(wǎng),從而消除了在應(yīng)用存儲(chǔ)器與操作系統(tǒng)中的數(shù)據(jù)緩沖區(qū)之間拷貝數(shù)據(jù)的需要。這種傳輸不需要CPU、高速緩存或者上下文切換進(jìn)行工作,并且傳輸持續(xù)與其它系統(tǒng)操作并行。當(dāng)一應(yīng)用執(zhí)行RDMA讀或?qū)懻?qǐng)求時(shí),應(yīng)用數(shù)據(jù)被直接遞送給網(wǎng)絡(luò),從而降低了時(shí)延并加快了消息傳輸。
[0003]為了經(jīng)由用戶空間(S卩,由操作系統(tǒng)分配給應(yīng)用的非核心存儲(chǔ)器空間)與遠(yuǎn)程系統(tǒng)高效通信,傳統(tǒng)的RDMA設(shè)備需要預(yù)注冊的、預(yù)釘扎(pre-pinnd)的存儲(chǔ)器區(qū)域用于通過光纖通道網(wǎng)絡(luò)(fabric)或網(wǎng)絡(luò)進(jìn)行所有數(shù)據(jù)傳輸。這耗費(fèi)大量的能夠由其它應(yīng)用使用的系統(tǒng)存儲(chǔ)器。為了避免頁錯(cuò)誤,通??梢詫⒋鎯?chǔ)器過度分配以(希望)解決較差情形的業(yè)務(wù)狀況。然而,在業(yè)務(wù)負(fù)載較重時(shí),即便這種方法可能失敗,導(dǎo)致與分配給預(yù)釘扎的存儲(chǔ)器區(qū)域的存儲(chǔ)器量不足對(duì)應(yīng)的頁錯(cuò)誤,致使暫時(shí)使用從本地或遠(yuǎn)程輔助存儲(chǔ)設(shè)備訪問的虛擬存儲(chǔ)器而不是系統(tǒng)存儲(chǔ)器;諸如硬盤驅(qū)動(dòng)器之類的這些設(shè)備也具有與典型系統(tǒng)存儲(chǔ)器相比慢一個(gè)數(shù)量級(jí)或更慢的訪問速度。在傳統(tǒng)方法中,頁錯(cuò)誤對(duì)于RDMA發(fā)送方是透明的,否則在該頁錯(cuò)誤發(fā)生后被較好地間接識(shí)別(例如,在超時(shí)時(shí)段內(nèi)缺少確認(rèn)可以表明某種類型的錯(cuò)誤或擁塞)。
[0004]在當(dāng)今市場上有多款支持RDMA的網(wǎng)絡(luò)接口卡(RNIC),其提供開放源碼方法和私有方法兩者用于隱式存儲(chǔ)器注冊。它們都試圖移除為RDMA傳輸而預(yù)釘扎(pre-pinning)存儲(chǔ)器區(qū)域的需要。在這些情形中,RNIC本質(zhì)上充當(dāng)存儲(chǔ)器管理單元并提供與系統(tǒng)MMU的特定形式的同步。這種MMU同步雖然有許多形式,但本質(zhì)上都保證了:適配器將參與所有用戶存儲(chǔ)器區(qū)域訪問并將容忍數(shù)據(jù)傳輸期間的頁錯(cuò)誤和頁釘扎(page pinning)。這些分頁事件是不確定的并可能明顯延遲數(shù)據(jù)流,特別是當(dāng)系統(tǒng)忙時(shí)或當(dāng)所述錯(cuò)誤需要從本地或網(wǎng)絡(luò)附著的驅(qū)動(dòng)器分頁時(shí)。
【專利附圖】
【附圖說明】
[0005]通過結(jié)合附圖來參照下面的詳細(xì)描述,本發(fā)明的前述方面和多種附帶優(yōu)點(diǎn)變得被較好地理解,從而將變得更易了解,其中,除非另有規(guī)定,否則同樣的附圖標(biāo)記在各個(gè)方面指代同樣的部分:
[0006]圖1是示出與根據(jù)使用標(biāo)準(zhǔn)的傳送流控制機(jī)制的傳統(tǒng)方法的,針對(duì)RDMA目標(biāo)緩沖區(qū)的隱式存儲(chǔ)器注冊有關(guān)的頁錯(cuò)誤的結(jié)果的示意圖;
[0007]圖2是示出根據(jù)一個(gè)實(shí)施例的,如何使用顯式流控制處理與針對(duì)RDMA目標(biāo)緩沖區(qū)的隱式存儲(chǔ)器注冊有關(guān)的頁錯(cuò)誤的示意圖;
[0008]圖3是示出可以被用以實(shí)現(xiàn)本文所描述的各實(shí)施例的各方面的平臺(tái)配置的示意圖;
[0009]圖4是示出根據(jù)一個(gè)實(shí)施例的,利用隱式存儲(chǔ)器注冊和管道式緩沖區(qū)預(yù)分配的RDMA數(shù)據(jù)傳輸?shù)母鞣矫娴南⒘魇疽鈭D;以及
[0010]圖5是示出可以被用以實(shí)現(xiàn)本文所描述的各實(shí)施例的各方面的RNIC的架構(gòu)的示意圖。
【具體實(shí)施方式】
[0011]本文描述了用于使用隱式存儲(chǔ)器注冊來對(duì)RDMA傳輸執(zhí)行流控制的方法和裝置的實(shí)施例。在下面的描述中,大量具體的細(xì)節(jié)被給出以提供對(duì)本發(fā)明的各實(shí)施例的全面理解。然而,一名相關(guān)領(lǐng)域內(nèi)的熟練技術(shù)人員將認(rèn)識(shí)到,本發(fā)明可以不用這些具體的細(xì)節(jié)中的一個(gè)或多個(gè)、或者用其它方法、組件、材料等來實(shí)現(xiàn)。在其它情形中,公知的結(jié)構(gòu)、材料或操作未被詳細(xì)地示出或描述,以避免使本發(fā)明的各方面模糊不清。
[0012]貫穿說明書對(duì)“一個(gè)實(shí)施例”或“一實(shí)施例”的引用意味著結(jié)合該實(shí)施例描述的特定的特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。因而,短語“在一個(gè)實(shí)施例中”或“在一實(shí)施例中”在本說明書各個(gè)地方的出現(xiàn)并不都指同一個(gè)實(shí)施例。此外,特定的特征、結(jié)構(gòu)或特性可以在一個(gè)或多個(gè)實(shí)施例中以任何恰當(dāng)方式合并。
[0013]根據(jù)當(dāng)前描述的各實(shí)施例的各方面,提供了一種新穎的通信方法,其使RDMA設(shè)備能避免預(yù)釘扎并能較好地容忍頁錯(cuò)誤,這通過在線纜上提供顯式數(shù)據(jù)流確認(rèn)以避免對(duì)不必要的分組的傳輸和擁塞來實(shí)現(xiàn)。本文公開內(nèi)容描述了用于顯式流控制的架構(gòu)和方法,允許對(duì)一個(gè)或多個(gè)遠(yuǎn)程RDMA設(shè)備的優(yōu)化回壓。
[0014]顯式存儲(chǔ)器注冊和存儲(chǔ)器頁釘扎
[0015]為了較好地理解和了解各實(shí)施例的優(yōu)點(diǎn),與現(xiàn)行傳統(tǒng)方法的比較被首先提供。如上所討論地,RDMA使得以繞過系統(tǒng)CPU和操作系統(tǒng)的方式對(duì)遠(yuǎn)程系統(tǒng)上的存儲(chǔ)器能進(jìn)行直接存儲(chǔ)器訪問。RDMA通過使RNIC能向或從與由操作系統(tǒng)使用的核心存儲(chǔ)器分開維護(hù)的應(yīng)用存儲(chǔ)器(即,系統(tǒng)存儲(chǔ)器中分配給應(yīng)用的存儲(chǔ)器空間)直接傳輸數(shù)據(jù)來支持零拷貝聯(lián)網(wǎng),從而消除了在應(yīng)用存儲(chǔ)器與由該操作系統(tǒng)使用的核心存儲(chǔ)器中的數(shù)據(jù)緩沖區(qū)之間拷貝數(shù)據(jù)的需要。這是經(jīng)由DMA操作來促成的,在該DMA操作中,RNIC上的DMA引擎被使能直接寫入和讀出系統(tǒng)存儲(chǔ)器中已分配給RNIC的數(shù)據(jù)緩沖區(qū)。
[0016]現(xiàn)代操作系統(tǒng)通過分配虛擬存儲(chǔ)器中的頁、并處理由虛擬存儲(chǔ)器地址空間利用的邏輯地址與同物理存儲(chǔ)器對(duì)應(yīng)的物理地址(即,系統(tǒng)存儲(chǔ)器硬件地址)之間的映射,來實(shí)現(xiàn)存儲(chǔ)器管理。這提供了多種優(yōu)勢,包括擴(kuò)展存儲(chǔ)器的尺寸超過系統(tǒng)中的物理存儲(chǔ)器的能力。另外,每個(gè)進(jìn)程在其自身的邏輯地址空間中運(yùn)行。典型地,頁表被用以將由應(yīng)用所見的虛擬地址翻譯成由硬件用以處理指令的物理地址;通常處理此特定翻譯的硬件是存儲(chǔ)器管理單元(MMU)。頁表中的每項(xiàng)持有一標(biāo)記,該標(biāo)記指示對(duì)應(yīng)的頁是否在真實(shí)(物理)存儲(chǔ)器中。如果該對(duì)應(yīng)的頁在真實(shí)存儲(chǔ)器中,頁表項(xiàng)將包含該頁所存儲(chǔ)在的真實(shí)存儲(chǔ)器地址。
[0017]當(dāng)頁被硬件引用時(shí),如果針對(duì)該頁的頁表項(xiàng)指示其當(dāng)前不在真實(shí)存儲(chǔ)器中,那么硬件發(fā)出頁錯(cuò)誤異常,從而激活操作系統(tǒng)的分頁管理器部件。響應(yīng)于頁錯(cuò)誤,分頁管理器訪問輔助存儲(chǔ)(或者虛擬存儲(chǔ)器所映射到的任意存儲(chǔ))、返回具有導(dǎo)致了頁錯(cuò)誤的虛擬地址的頁、更新頁表以反映虛擬地址的物理位置、并通知翻譯機(jī)制以重新開始請(qǐng)求。當(dāng)所有物理存儲(chǔ)器都已在使用中,分頁管理器必須釋放物理存儲(chǔ)器中的頁以持有換入的(即,“頁入的(paged in) ”)頁。同時(shí),對(duì)于被頁入的每個(gè)頁,物理存儲(chǔ)器中的現(xiàn)存頁必須被頁出(pagedout)。實(shí)質(zhì)上,頁出(paging out)存儲(chǔ)器頁涉及將該存儲(chǔ)器頁中的數(shù)據(jù)從其在物理存儲(chǔ)器中的位置拷貝到在輔助存儲(chǔ)設(shè)備中存儲(chǔ)的文件。頁入(paging in)存儲(chǔ)器頁完成了頁出的相反操作-在該情形中,與在輔助存儲(chǔ)設(shè)備文件中存儲(chǔ)的頁對(duì)應(yīng)的數(shù)據(jù)被拷貝到物理存儲(chǔ)器中的頁。分頁管理器使用多種頁替換算法中的一種頁替換算法,諸如至少最近被用以確定釋放哪個(gè)頁的那種頁替換算法。理想情況下,雖然使用率低的頁先被頁出,但是分頁的結(jié)果定會(huì)增加存儲(chǔ)器訪問延遲。如果情況變得足夠糟,磁盤“振蕩”可能發(fā)生,其中,頁被不斷地頁入和頁出存儲(chǔ)器。
[0018]如上所討論地,零拷貝存儲(chǔ)器訪問被設(shè)計(jì)成繞過CPU,這意味著其也繞過MMU(至少在RDMA存儲(chǔ)器寫和讀期間)。這產(chǎn)生了與普通的虛擬存儲(chǔ)器使用情況相關(guān)的問題,該問題是通過對(duì)顯式存儲(chǔ)器注冊以及被分配供RDMA使用的“釘扎(pinning) ”存儲(chǔ)器頁的使用來解決的。
[0019]RDMA聯(lián)盟已發(fā)布了 RDMA協(xié)議動(dòng)詞規(guī)范,其描述了 RNIC主機(jī)(即,在其中實(shí)現(xiàn)RNIC的計(jì)算機(jī)系統(tǒng)或平臺(tái))所見的RNIC硬件、固件和軟件的行為。該行為描述是以RNIC接口和一組RNIC動(dòng)詞的形式來規(guī)定的。RNIC接口定義了由支持RNIC動(dòng)詞規(guī)范的RNIC提供的RDMA服務(wù)的語義,并且可以通過硬件、固件和軟件的組合來實(shí)現(xiàn)。動(dòng)詞是期望RNIC接口執(zhí)行的操作。當(dāng)前起草中的RDMA動(dòng)詞規(guī)范被發(fā)布在http://tools.1etf.0rg/html/draft-hiIland-rddp-verbs-ΟΟ上。如本文下面所使用地,該規(guī)范被稱為RDMA動(dòng)詞。
[0020]RDMA動(dòng)詞定義了稱為存儲(chǔ)器注冊的用于分配存儲(chǔ)器的機(jī)制。存儲(chǔ)器注冊使由特定的RNIC能訪問存儲(chǔ)器區(qū)域。綁定一存儲(chǔ)器窗口使該特定的RNIC訪問由那個(gè)存儲(chǔ)器窗口表示的存儲(chǔ)器。存儲(chǔ)器注冊提供了這樣的機(jī)制,其允許消費(fèi)方(即,利用RDMA以用于數(shù)據(jù)傳輸?shù)哪切?yīng)用)描述一組虛擬際連續(xù)存儲(chǔ)器位置或一組物理連續(xù)位置給RI,以便允許RNIC使用指引標(biāo)簽(STag)和帶標(biāo)簽的偏移來作為虛擬連續(xù)緩沖區(qū)來訪問任一者。存儲(chǔ)器注冊向RNIC提供Stag和帶標(biāo)簽的偏移與物理存儲(chǔ)器地址之間的映射。其還向RNIC提供對(duì)與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的訪問控制的描述。已被注冊的存儲(chǔ)器位置的集合被稱為存儲(chǔ)器區(qū)域。在RNIC可以使用存儲(chǔ)器區(qū)域之前,與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的資源必須被分配并且存儲(chǔ)器區(qū)域必須被注冊到RNIC。
[0021 ] 在對(duì)RDMA的傳統(tǒng)使用中,在RDMA通信信道的兩端處的RDMA組件(即,發(fā)送和接收計(jì)算機(jī)平臺(tái)處的組件,諸如服務(wù)器)為給定的應(yīng)用分配系統(tǒng)存儲(chǔ)器中的緩沖區(qū)(或從OS請(qǐng)求對(duì)緩沖區(qū)的分配)。應(yīng)用之間的數(shù)據(jù)傳輸是通過將發(fā)送方的計(jì)算機(jī)的源緩沖區(qū)中的數(shù)據(jù)拷貝到接收方的計(jì)算機(jī)上的目標(biāo)緩沖區(qū)來執(zhí)行的。由于在傳輸期間不涉及0S、CPU和MMU,所以在傳輸期間不能改變緩沖區(qū)的地址。這是通過釘扎與存儲(chǔ)器區(qū)域相關(guān)聯(lián)的存儲(chǔ)器頁來實(shí)現(xiàn)的。被釘扎的存儲(chǔ)器頁不可以被交換到輔助存儲(chǔ)中。特別而言,在傳統(tǒng)的使用情況中,當(dāng)IO操作正在進(jìn)行時(shí),由使用直接存儲(chǔ)器訪問或輸入-輸出(IO)信道的外圍設(shè)備直接訪問的數(shù)據(jù)緩沖區(qū)必須駐留在被釘扎的頁中,這是因?yàn)檫@類設(shè)備和其被連接到的總線期望找到位于物理存儲(chǔ)器地址處的數(shù)據(jù)緩沖區(qū);不管總線是否具有用于IO的存儲(chǔ)器管理單元,當(dāng)頁錯(cuò)誤發(fā)生時(shí)傳輸都不能被終止,并且當(dāng)頁錯(cuò)誤已被處理時(shí)傳輸不能隨后重新開始。相應(yīng)地,在零拷貝RDMA系統(tǒng)中不釘扎頁可能導(dǎo)致存儲(chǔ)器的內(nèi)容的損壞。
[0022]在顯式存儲(chǔ)器注冊中,在發(fā)起真實(shí)的數(shù)據(jù)傳輸前,用于RDMA數(shù)據(jù)傳輸?shù)木彌_器被向RNIC注冊。這是部分地通過使用工作請(qǐng)求(WR)來促成的。每個(gè)WR定義了:1)數(shù)據(jù)傳輸操作類型(發(fā)送、接收、RDMA讀、RDMA寫等);2)用于發(fā)送、RDMA讀和RDMA寫的源緩沖區(qū);以及3)用于接收、RDMA讀和RDMA寫的目標(biāo)緩沖區(qū)。然后,源緩沖區(qū)和目標(biāo)緩沖區(qū)中的每個(gè)在被釘扎的存儲(chǔ)器區(qū)域都具有顯式定義的位置(即,地址范圍)。在注冊后,這些緩沖區(qū)被稱為“帶標(biāo)簽的緩沖區(qū)”并由唯一的STag所標(biāo)識(shí),如上所討論地。
[0023]對(duì)顯式存儲(chǔ)器注冊和被釘扎的存儲(chǔ)器在歷史上已是用于實(shí)現(xiàn)RDMA的最普通方式,然而其具有顯著的缺陷。具體而言,釘扎存儲(chǔ)器花費(fèi)時(shí)間和額外的存儲(chǔ)器去設(shè)立,減少了操作系統(tǒng)可以分配給其它進(jìn)程的存儲(chǔ)器的量,限制了存儲(chǔ)器系統(tǒng)適應(yīng)時(shí)間的總體靈活性,并甚至可能導(dǎo)致當(dāng)過程不必要地釘扎頁時(shí)對(duì)存儲(chǔ)器的不充分使用。
[0024]具有傳統(tǒng)流控制的隱式存儲(chǔ)器注冊
[0025]為了彌補(bǔ)針對(duì)需要被釘扎的存儲(chǔ)器區(qū)域的一些缺陷,已經(jīng)研究出了隱式存儲(chǔ)器注冊。在隱式存儲(chǔ)器注冊方法中,RDMA數(shù)據(jù)傳輸可以在對(duì)目標(biāo)緩沖區(qū)的分配之前被發(fā)起,其中,該緩沖區(qū)是被實(shí)時(shí)地分配的。這可能導(dǎo)致頁錯(cuò)誤,如果分配給該緩沖區(qū)的一個(gè)或多個(gè)存儲(chǔ)器頁被頁出給輔助存儲(chǔ)。在這種頁錯(cuò)誤事件下,在將數(shù)據(jù)寫到目標(biāo)存儲(chǔ)區(qū)之前,存儲(chǔ)器頁或頁必須先被頁入到系統(tǒng)存儲(chǔ)器中。
[0026]圖1示出了被配置以支持響應(yīng)于頁錯(cuò)誤事件的隱式存儲(chǔ)器注冊和傳統(tǒng)流控制的架構(gòu)的例子。該架構(gòu)包括計(jì)算機(jī)平臺(tái)100,其具有經(jīng)由相應(yīng)的互連105和107耦合到系統(tǒng)存儲(chǔ)器104和IO芯片集106的中央處理單元(CPU) 102,而IO芯片集106經(jīng)由互連109被操作地耦合到系統(tǒng)存儲(chǔ)器104。IO芯片集106還經(jīng)由外圍部件互連(PCI)總線(PCIe)鏈路諸如之類的PCI互連100被連接到RNIC108。同樣,IO芯片集106經(jīng)由PCI互連113被連接到包括輔助存儲(chǔ)112的大容量存儲(chǔ)設(shè)備(例如,硬盤或固態(tài)盤)。平臺(tái)100還包括用于促成存儲(chǔ)器管理和存儲(chǔ)器訪問的組件,如CPU102上的存儲(chǔ)器管理單元114、包括MMU同步邏輯118的RNIC驅(qū)動(dòng)器116、和操作系統(tǒng)(OS) 120所描繪地。
[0027]如上所討論地,啟用了 RDMA的系統(tǒng)支持以繞過系統(tǒng)CPU的方式對(duì)遠(yuǎn)程系統(tǒng)(例如,平臺(tái)100)上的存儲(chǔ)器的直接存儲(chǔ)器訪問。這是經(jīng)由DMA操作來實(shí)現(xiàn)的,在該DMA操作中,RNIC108上的DMA引擎被使能直接寫入和讀出系統(tǒng)存儲(chǔ)器104中的RDMA存儲(chǔ)器區(qū)域122中的緩沖區(qū)。RNIC108與系統(tǒng)存儲(chǔ)器104之間的連接是經(jīng)由IO芯片集106、互連109、和PCI鏈路110來促成的,其中,IO芯片集用作RNIC108與系統(tǒng)存儲(chǔ)器104之間的IO接口。
[0028]由于傳統(tǒng)RDMA存儲(chǔ)器訪問繞過CPU,所以其也繞過MMU。這在用于存儲(chǔ)器區(qū)域122中的緩沖區(qū)的所有頁都被釘扎時(shí)是沒有問題的。然而,為了使緩沖區(qū)能被分配給虛擬存儲(chǔ)器中的頁,需要提供一種這樣的機(jī)制,該機(jī)制向RNIC通告:何時(shí)發(fā)生頁錯(cuò)誤,以及一旦緩沖區(qū)被頁入回系統(tǒng)存儲(chǔ)器時(shí)MMU在虛擬存儲(chǔ)器與物理存儲(chǔ)器之間如何映射頁。這是通過對(duì)RNIC驅(qū)動(dòng)器116中的與由MMUl 14執(zhí)行的操作相結(jié)合的MMU同步邏輯118的使用以及對(duì)系統(tǒng)存儲(chǔ)器104的核心空間中的頁表125的使用,來促成的。
[0029]為了發(fā)起隱式存儲(chǔ)器注冊,第二 RDMA主機(jī)(未示出)發(fā)送緩沖區(qū)注冊請(qǐng)求消息126,緩沖區(qū)注冊請(qǐng)求消息126包括分組流128中的第一分組‘P1’,第一分組‘P1’與包括第二和第三分組‘P2’與‘P3’的RDMA數(shù)據(jù)傳輸相關(guān)聯(lián),第二和第三分組‘P2’與‘P3’包含要被寫到該緩沖區(qū)請(qǐng)求的要被分配的數(shù)據(jù)。在一個(gè)實(shí)施例中,分組Pl中的緩沖區(qū)地址信息包括地址、針對(duì)緩沖區(qū)所請(qǐng)求的長度(Ien)、以及被稱為‘rkey’的密鑰值,‘rkey’被用以驗(yàn)證訪問權(quán)限并提供適配器側(cè)地址翻譯。與顯式存儲(chǔ)器注冊的情形不同,在開始RDMA數(shù)據(jù)傳輸之前預(yù)注冊針對(duì)目標(biāo)緩沖器的存儲(chǔ)器頁在的情況下,隱式存儲(chǔ)器注冊可能導(dǎo)致頁錯(cuò)誤,如果當(dāng)針對(duì)對(duì)目標(biāo)緩沖區(qū)的分配的請(qǐng)求被做出時(shí),所請(qǐng)求的緩沖區(qū)的所標(biāo)識(shí)的位置(地址)和尺寸(Ien)不能從存儲(chǔ)器區(qū)域122的已用部分分配(或者不能存在于物理系統(tǒng)存儲(chǔ)器中)的話。圖1描繪了這種情形的例子,其示出了響應(yīng)于頁錯(cuò)誤事件,緩沖區(qū)124(對(duì)應(yīng)于請(qǐng)求的緩沖區(qū)分配)正被從輔助存儲(chǔ)112頁入到存儲(chǔ)器區(qū)域122。
[0030]現(xiàn)行的RNIC實(shí)現(xiàn)方式依賴于標(biāo)準(zhǔn)傳送流控制機(jī)制以及現(xiàn)行鏈路級(jí)定時(shí)器,以提供線纜上的回壓。在與隱式存儲(chǔ)器注冊相關(guān)的頁錯(cuò)誤事件中,這可能導(dǎo)致不成熟的分組重傳、擁塞以及可靠連接的終端。進(jìn)一步講,圖1示出了在使用標(biāo)準(zhǔn)傳送流控制機(jī)制的傳統(tǒng)方法中,與利用隱式存儲(chǔ)器注冊的RDMA數(shù)據(jù)傳送相關(guān)的頁錯(cuò)誤的結(jié)果的例子,并按如下進(jìn)行。
[0031]響應(yīng)于接收分組P1,針對(duì)所請(qǐng)求的緩沖區(qū)的隱式存儲(chǔ)器注冊被發(fā)起。這導(dǎo)致存儲(chǔ)器頁錯(cuò)誤,并且輔助存儲(chǔ)中的虛擬存儲(chǔ)器的頁必須在分組流128中的任何數(shù)據(jù)可以被寫到緩沖區(qū)124之前被頁入到物理存儲(chǔ)器。如上討論地,存儲(chǔ)器頁入涉及在其期間數(shù)據(jù)可以不被寫進(jìn)存儲(chǔ)器的時(shí)延;該時(shí)延被描述為圖1中的頁入時(shí)間(Ptime)。
[0032]根據(jù)通用類型的可靠的標(biāo)準(zhǔn)傳送協(xié)議,對(duì)接收到分組或分組序列的證實(shí)是使用ACK消息等來確認(rèn)的。在這種方法中,源或發(fā)送端重傳其在重傳超時(shí)時(shí)段期滿時(shí)沒有接收到ACK消息所對(duì)應(yīng)的分組。在諸如TCP的一些協(xié)議中,重傳超時(shí)時(shí)段的長度起初作為針對(duì)連接的往返時(shí)間計(jì)算的 函數(shù)開始(例如,被設(shè)為平均往返計(jì)算上的一定增量或者通過對(duì)利用往返時(shí)間計(jì)算的算法的使用),隨后是指數(shù)超時(shí)回退序列,在該指數(shù)超時(shí)回退序列中,針對(duì)每個(gè)后續(xù)重傳的超時(shí)時(shí)段被加倍。響應(yīng)于超時(shí)期滿,分組被排隊(duì)用于重傳。給定分組可以被重傳多次,直到針對(duì)該分組的ACK被發(fā)送方接收為止或者直到連接自身超時(shí)(需要重設(shè))為止。
[0033]如圖1所進(jìn)一步描述地,第一 ACK消息130 (對(duì)應(yīng)于分組Pl)不從RNIC108發(fā)送,直到對(duì)針對(duì)目標(biāo)緩沖區(qū)的存儲(chǔ)器頁進(jìn)行的頁入已完成為止,這導(dǎo)致頁錯(cuò)誤延遲Ptime。在此Ptime頁錯(cuò)誤延遲的時(shí)段期間,分組Pl或分組序列P1、P2及P3被重傳多次(取決于使用的協(xié)議;兩種情形都由帶灰色背景的標(biāo)記為‘Ρ1'的分組描述),隨后是連接重設(shè)(RST)。
[0034]前述的傳統(tǒng)方法是非常浪費(fèi)和低效的。任何時(shí)間分組都必須被重傳,網(wǎng)絡(luò)帶寬的對(duì)應(yīng)部分流失。另外,無論分組是否被重傳,發(fā)送RNIC和接收RNIC中的一方或雙方可能都需要額外的緩沖和/或操作-特別是當(dāng)相同的分組在擴(kuò)展的Ptime時(shí)段期間被重傳多次時(shí)。
[0035]具有顯式流控制的隱式存儲(chǔ)器注冊
[0036]根據(jù)經(jīng)由本文的實(shí)施例而公開的教導(dǎo)和原理,前述不足經(jīng)由對(duì)顯式流控制機(jī)制的使用而被解決,顯式流控制機(jī)制是響應(yīng)于隱式注冊頁錯(cuò)誤來實(shí)現(xiàn)的并且被配置使得必定明顯減少或消除Ptime時(shí)段期間對(duì)分組的重傳。所述教導(dǎo)和原理還通過提供與為RDMA目的而對(duì)存儲(chǔ)器頁的分配相關(guān)的較高粒度,來提供增強(qiáng)的存儲(chǔ)器管理。[0037]根據(jù)一個(gè)方面,較為高效的數(shù)據(jù)流是通過對(duì)利用了作為傳送線纜協(xié)議的部分來提供的新型ACK消息的顯式流控制機(jī)制的使用,來促成的。在造成分頁事件的隱式存儲(chǔ)器注冊期間,稱為接收確認(rèn)(RACK)的這種新ACK被用以對(duì)接收到對(duì)應(yīng)的RDMA隱式存儲(chǔ)器注冊消息進(jìn)行確認(rèn),并表明頁錯(cuò)誤“延遲”事件正在發(fā)生。除了執(zhí)行確認(rèn)功能,RACK包括基于由基礎(chǔ)的光纖通告網(wǎng)絡(luò)或網(wǎng)絡(luò)協(xié)議定義的標(biāo)準(zhǔn)ACK定時(shí)器超時(shí)值的所計(jì)算的回退時(shí)間。作為結(jié)果,遠(yuǎn)程RNIC中的傳送引擎將暫時(shí)地調(diào)整針對(duì)連接的數(shù)據(jù)流的ACK超時(shí),直到普通的ACK被接收為止。如果回退太明顯,發(fā)送RNIC可以選擇中止。一旦存儲(chǔ)器頁錯(cuò)誤頁入被完成并且頁被釘扎,普通的ACK將被發(fā)送并且遠(yuǎn)程RNIC將基于為可靠的數(shù)據(jù)信道設(shè)定的原始的ACK超時(shí)來重新進(jìn)行發(fā)射。
[0038]圖2示出了對(duì)RACK確認(rèn)的使用的例子,其描繪了具有與平臺(tái)100相比共享共同附圖標(biāo)記的類似組件的平臺(tái)100a。平臺(tái)100和IOOa之間的區(qū)別包括:包含基于硬件的MMU同步邏輯202的經(jīng)修改的RNIC200以及包含MMU同步驅(qū)動(dòng)器206的RNIC驅(qū)動(dòng)器204。
[0039]如前所述,分組Pl、P2以及P3的流被從遠(yuǎn)程發(fā)送RNIC (未示出)發(fā)送并被RNIC200接收,這導(dǎo)致了存儲(chǔ)器頁錯(cuò)誤事件。響應(yīng)于檢測到存儲(chǔ)器錯(cuò)誤,RNIC200返回包括Ptime值的RACK消息206。Ptime值對(duì)應(yīng)于回退時(shí)間,在該回退時(shí)間期間,發(fā)送RNIC被請(qǐng)求不發(fā)送(即,放棄發(fā)送)額外的分組。在錯(cuò)誤的存儲(chǔ)器頁被頁入到系統(tǒng)存儲(chǔ)器104中(從而為分組P2和P3中的數(shù)據(jù)分配了緩沖區(qū)空間)后,RNIC200返回傳統(tǒng)的ACK消息208,其指示分組P1、P2和P3已被成功地接收。此刻,發(fā)送RNIC重新發(fā)送與所述分組流對(duì)應(yīng)的分組,如標(biāo)記為‘P4-數(shù)據(jù)’的數(shù)據(jù)分組所描繪地。
[0040]為了支持顯式流控制,MMU同步邏輯202和MMU同步驅(qū)動(dòng)器206被配置使得MMU同步邏輯將與系統(tǒng)MMU114同步并且辨識(shí)與RDMA存儲(chǔ)器使用情況(即,如部分地通過為存儲(chǔ)器區(qū)域120分配的頁所描繪地)有關(guān)的存儲(chǔ)器映射的當(dāng)前狀態(tài)。在一個(gè)實(shí)施例中,MMU同步邏輯202在其本地高速緩存頁表125a中設(shè)置一比特用于表示系統(tǒng)存儲(chǔ)器104中的活躍的RDMA地址空間的釘扎狀態(tài)。如虛線框126所示出地,本地高速緩存頁表125a對(duì)應(yīng)于與由MMU114維護(hù)的關(guān)于RDMA緩沖區(qū)使用情況的對(duì)應(yīng)的頁表信息同步的頁表信息。在一些實(shí)施例中,本地高速緩存頁表還包括在先的用于動(dòng)態(tài)控制數(shù)據(jù)流的分頁事件的最小/最大次數(shù)。當(dāng)RDMA寫或讀操作開始時(shí),RNIC使用其高速緩存頁表的項(xiàng)來檢查RDMA地址的映射狀態(tài)。如果其被映射并且頁被釘扎,RNIC將立即以普通的ACK做出響應(yīng)。如果其未被釘扎,RNIC將返回RACK消息并經(jīng)由MMU114請(qǐng)求頁釘扎。RACK消息可以包括回退次數(shù),該回退次數(shù)在一個(gè)實(shí)施例中是基于先前的分頁事件的最小/最大次數(shù)。一旦數(shù)據(jù)流開始,便假定頁在傳輸?shù)纳芷趦?nèi)保持被釘扎且其將不被頁出或被移除。這種凍結(jié)映射狀態(tài)就RDMA數(shù)據(jù)傳輸?shù)陌葱蛐枨蠖允侵匾摹?br>
[0041]圖3示出了平臺(tái)IOOa的架構(gòu),其是平臺(tái)100的將CPU102和IO芯片集106替換成包括集成IO接口集106a的CPU102a的變體,集成IO接口集106a被配置成執(zhí)行與上面討論的由IO芯片集106執(zhí)行的那些操作類似的操作。在一個(gè)實(shí)施例中,CPU102a包括片上系統(tǒng)(SoC)架構(gòu),其包括多個(gè)處理器核210以及用于連接SoC上的正在通信的各組件和邏輯的多個(gè)互連(諸如由一致性互連212所例示地)。通常,IO接口 106a代表一個(gè)或多個(gè)IO接口,其可以被配置為支持直接地或經(jīng)由另一組件間接地對(duì)系統(tǒng)存儲(chǔ)器104、輔助存儲(chǔ)112和RNIC200的訪問。如圖所示,在一個(gè)實(shí)施例中,IO接口中的至少一部分被配置為基于PCI的接口,其支持PCI互連,諸如PCIe接口。
[0042]在一些實(shí)施例中,RNIC200和系統(tǒng)存儲(chǔ)器104之間的DMA數(shù)據(jù)通信可以涉及CPU102a上的(被用以訪問系統(tǒng)存儲(chǔ)器104的)存儲(chǔ)器控制器216與IO接口 106a之間的額外的內(nèi)部接口及互連214。在各實(shí)施例中,該內(nèi)部互連包括Intel?QuickPath Interconnect? (QPI) or an Intel? Keizer Technology Interconnect?
(KTI)。在一個(gè)實(shí)施例中,核210和存儲(chǔ)器控制器216被耦合到利用了 QPI或KTI互連線纜和利用了 QPI或KTI協(xié)議的環(huán)形互連,并且10接口 106a中的10接口被配置成接收PCIe存儲(chǔ)器寫分組讀請(qǐng)求,并將它們轉(zhuǎn)換成QPI或KTI存儲(chǔ)器寫事務(wù)和存儲(chǔ)器讀事務(wù)。雖然用于這些DMA操作的消息/寫分組通過CPU102a,但是它們繞過核210并且不涉及對(duì)在平臺(tái)IOOa上運(yùn)行的操作系統(tǒng)的使用。
[0043]圖4是示出了在利用了上面描述的顯式流控制機(jī)制的RDMA數(shù)據(jù)傳輸期間由源RNIC和目標(biāo)RNIC執(zhí)行的各操作和邏輯的方法流和處理圖。源RNIC上的過程在框402中開始,在框402中,做出緩沖區(qū)需要被分配用于即將開始的RDMA數(shù)據(jù)傳輸?shù)拇_定。在框404中,做出緩沖區(qū)分配是否對(duì)應(yīng)于數(shù)據(jù)傳輸?shù)拈_始的確定,或者做出與在數(shù)據(jù)傳輸期間發(fā)生的動(dòng)態(tài)的額外的緩沖區(qū)分配有關(guān)的確定。
[0044]如果緩沖區(qū)分配對(duì)應(yīng)于傳輸?shù)拈_始,那么源RNIC在框406中發(fā)送針對(duì)目標(biāo)緩沖區(qū)分配的請(qǐng)求,并在框408中開始以流方式發(fā)送(streaming)分組。與這兩種操作對(duì)應(yīng)的分組在目標(biāo)RNIC的輸入緩沖區(qū)409處被接收,其中,所述分組是使用分組處理邏輯和RDMA處理邏輯來處理的,如由輸入緩沖區(qū)409中示出的處理塊所描繪地。
[0045]如框410所示出地,目標(biāo)RNIC接收目標(biāo)緩沖器請(qǐng)求并發(fā)起對(duì)要被用于緩沖區(qū)的一個(gè)或多個(gè)存儲(chǔ)器頁的注冊。與存儲(chǔ)器注冊操作有關(guān)地,頁錯(cuò)誤可能在對(duì)應(yīng)的頁被頁出時(shí)產(chǎn)生,如上所討論地。相應(yīng)地,在判決框412中做出頁錯(cuò)誤是否發(fā)生的確定。如果頁錯(cuò)誤發(fā)生,邏輯進(jìn)行到框414,在框414中,Ptime回退計(jì)算被執(zhí)行。如上所討論地,在一個(gè)實(shí)施例中,此計(jì)算是基于先前的頁錯(cuò)誤事件的,諸如這種事件的最小和最大持續(xù)時(shí)間。如在高速緩存頁表125a中所示出地,對(duì)每個(gè)存儲(chǔ)器頁,可以有最小和最大值??蛇x地,最小和最大值和/或其它統(tǒng)計(jì)數(shù)據(jù)可以被維護(hù)用于一組存儲(chǔ)器頁或整個(gè)存儲(chǔ)器區(qū)域。Ptime計(jì)算還可以包括對(duì)鏈路往返時(shí)間或從其導(dǎo)出的值的考慮。
[0046]—旦Ptime被計(jì)算出,在框416中,包括Ptime回退的RACK確認(rèn)消息便被從目標(biāo)RNIC發(fā)送給源RNIC。響應(yīng)于接收到RACK消息,源RNIC設(shè)置回退時(shí)間,并保持發(fā)送額外的分組,直到此時(shí)間期滿為止,如在框418中所示出地。當(dāng)此時(shí)間期滿時(shí),從源RNIC到目標(biāo)RNIC的對(duì)分組的以流方式的發(fā)送被中止。
[0047]在Ptime時(shí)段期間,被分配用于目標(biāo)緩沖區(qū)的一個(gè)或多個(gè)存儲(chǔ)器頁被頁入到系統(tǒng)存儲(chǔ)器,然后它們被注冊和釘扎,如在框420中所描繪地。在此階段,目標(biāo)緩沖區(qū)準(zhǔn)備好接收數(shù)據(jù),如在框424中由DMA寫數(shù)據(jù)到緩沖區(qū)所描繪地。除了處理來自框422的以流方式發(fā)送的分組,來自框408的先前以流方式發(fā)送的已被暫時(shí)緩存在輸入緩存區(qū)409中的分組也被處理。根據(jù)RDMA規(guī)范,這些分組是按序以流方式發(fā)送的,并且是按其流方式發(fā)送的順序?qū)懭氲摹H绻斜匾?,源RNIC可能必須重發(fā)送來自這些分組當(dāng)中的在框408中發(fā)送的分組,如果其被目標(biāo)RNIC所丟棄的話。
[0048]源和目標(biāo)RNIC還可以被配置為(例如,使用管道方法)支持對(duì)與相同的數(shù)據(jù)傳輸(即,相同的工作請(qǐng)求)對(duì)應(yīng)的緩沖區(qū)的動(dòng)態(tài)分配。在一個(gè)實(shí)施例中,針對(duì)緩沖區(qū)的請(qǐng)求在針對(duì)該緩沖區(qū)的預(yù)期需要之前被發(fā)出,使得如果頁錯(cuò)誤事件延遲了對(duì)用于該緩沖區(qū)的一個(gè)或多個(gè)存儲(chǔ)器頁的注冊,那么該一個(gè)或多個(gè)存儲(chǔ)器頁仍將在被需要之前被注冊和釘扎。
[0049]圖4描繪了支持此功能的操作和邏輯,這在判決框426中開始于確定下一緩沖區(qū)是否要被分配。如果是,那么邏輯返回框402以開始緩沖區(qū)分配過程。然而,在此情形中,對(duì)緩沖區(qū)的分配不再對(duì)應(yīng)于數(shù)據(jù)傳輸?shù)拈_始,并從而判決框404為否,使得邏輯進(jìn)行到框428,在框428中,針對(duì)對(duì)緩沖區(qū)的預(yù)分配的請(qǐng)求被發(fā)送給目標(biāo)RNIC。在一個(gè)實(shí)施例中,針對(duì)對(duì)緩沖區(qū)的分配或?qū)彌_區(qū)的預(yù)分配的請(qǐng)求是同一的-從目標(biāo)RNIC的角度看來它們是相同的。在另一個(gè)實(shí)施例中,緩沖區(qū)預(yù)分配請(qǐng)求被用標(biāo)志等標(biāo)記,以向目標(biāo)RNIC通告其是何種類型的緩沖分配請(qǐng)求。相應(yīng)地,在一個(gè)實(shí)施例中,響應(yīng)于檢測到頁錯(cuò)誤事件,目標(biāo)RNIC將不返回RACK消息,這是因?yàn)樵碦NIC沒有計(jì)劃將流式分組存儲(chǔ)在(要被分配的)緩沖區(qū)中,直到預(yù)計(jì)緩沖區(qū)要被注冊和被釘扎(假定頁錯(cuò)誤將產(chǎn)生)之后為止??蛇x地,目標(biāo)RNIC可以返回RACK,其將僅被源RNIC所忽略。在與預(yù)期的頁錯(cuò)誤延遲對(duì)應(yīng)的時(shí)段期間,源RNIC開始以流方式發(fā)送數(shù)據(jù)中的將被存儲(chǔ)在預(yù)分配緩沖區(qū)中的部分?jǐn)?shù)據(jù),如框430所描繪地。優(yōu)選地,對(duì)緩沖區(qū)預(yù)分配的定時(shí)將使得針對(duì)數(shù)據(jù)傳輸?shù)倪B續(xù)的分組流不中斷地進(jìn)行。同時(shí),緩沖區(qū)被預(yù)分配最好不會(huì)顯著早于其被需要的時(shí)間,使得對(duì)用于進(jìn)行RDMA緩沖的存儲(chǔ)區(qū)空間的利用率較為高效。
[0050]除了前述實(shí)施例,其它方法也可以被實(shí)施,以優(yōu)化數(shù)據(jù)流并限制對(duì)回退時(shí)段的使用。例如,RNIC適配器可以請(qǐng)求對(duì)RDMA存儲(chǔ)器區(qū)域的段而不是對(duì)整個(gè)區(qū)域釘扎,只要順序被保存并且隨后的釘扎在數(shù)據(jù)到來之前安排好(類似于上面的管線式例子)。作為另一選擇,協(xié)議也可以在建立期間提供可靠連接屬性,以表明對(duì)隱式存儲(chǔ)器注冊的使用。這會(huì)告知源RNIC延遲數(shù)據(jù)流的開始,直到第一 ACK被接收、或者當(dāng)開始新的RDMA傳輸操作時(shí)RACKPtime期滿為止。
[0051]圖5示出了針對(duì)RNIC500的示例性系統(tǒng)架構(gòu)。RNIC500包括NIC系統(tǒng)板502,在NIC系統(tǒng)板502上安放了網(wǎng)絡(luò)處理器/控制器504和包含動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM) 506和SRAM 508的存儲(chǔ)器。在一個(gè)實(shí)施例中,SRAM 508是被集成在處理器/控制器504上的。在各實(shí)施例中,NIC系統(tǒng)板502代表以太網(wǎng)控制器卡、子插件板、多芯片模塊板或基板,或者其可以是諸如針對(duì)計(jì)算機(jī)服務(wù)器的主板或母板之類的計(jì)算機(jī)系統(tǒng)板的一部分。處理器/控制器504代表以太網(wǎng)處理和/或控制單元,并且可以以各種形式被嵌入,包括被嵌入成以太網(wǎng)控制器芯片或網(wǎng)絡(luò)處理單元(NPU)。
[0052]在示出的實(shí)施例中,處理器/控制器504包括指令存儲(chǔ)510、處理器引擎集群512、SRAM控制器514、DRAM控制器516、寫DMA塊518、讀DMA塊520、PCIe接口 522、暫時(shí)存儲(chǔ)器524、哈希單元526、串行器/解串器(SerDes) 528和530、以及物理層(PHY)接口 532和534。這些組件中的每個(gè)都經(jīng)由被共同描繪為內(nèi)部互連云535的可應(yīng)用的互連結(jié)構(gòu)和邏輯而被互連到一個(gè)或多個(gè)其它組件。
[0053]指令存儲(chǔ)510包括由處理器引擎集群執(zhí)行的各種指令,包括分組標(biāo)識(shí)/分類指令536,RDMA主邏輯538、MMU同步邏輯202和分組組合邏輯540。處理器引擎集群512包括多個(gè)微引擎542,每個(gè)微引擎都被耦合到本地控制存儲(chǔ)544。在一個(gè)實(shí)施例中,諸如分組標(biāo)識(shí)和分類的各種操作可以使用諸如圖5中所示出的管道式架構(gòu)而被執(zhí)行,其中每個(gè)微引擎在管道中執(zhí)行關(guān)聯(lián)的操作?;蛘?,處理器引擎集群512代表中央處理單元或控制器中的一個(gè)或多個(gè)處理器核。作為另一選擇,處理器引擎512和指令存儲(chǔ)510的組合可以被實(shí)現(xiàn)成嵌入的邏輯,諸如經(jīng)由現(xiàn)場可編程門陣列(FPGA)等。
[0054]在一個(gè)實(shí)施例中,指令存儲(chǔ)510被實(shí)現(xiàn)成片上存儲(chǔ),諸如在圖5中所描繪地??蛇x地,指令存儲(chǔ)510中的指令的部分或全部可以被存儲(chǔ)在SRAM 508中(如果在片外的話),并可以經(jīng)由接口 546使用SRAM控制器514而被訪問。SRAM 508還可以用于存儲(chǔ)與分組處理操作以及高速緩存頁表項(xiàng)有關(guān)的經(jīng)選擇的數(shù)據(jù)和/或指令。
[0055]DRAM 506被用于實(shí)現(xiàn)一個(gè)或多個(gè)輸入緩沖區(qū)409和一個(gè)或多個(gè)輸出緩沖區(qū)548,并且經(jīng)由接口 550使用DRAM控制器516而被訪問。根據(jù)本文描述的實(shí)施例,寫DMA塊518和讀DMA塊520被分別配置成支持DMA寫和讀操作。在所示出的實(shí)施例中,DRAM 506和平臺(tái)主機(jī)電路之間的DMA通信是經(jīng)由被耦合到PCIe互連或PCIe擴(kuò)展槽554的PCIe鏈路522、通過PCIe接口 522而被促成的,這使能使用PCIe協(xié)議進(jìn)行DRAM 506和主機(jī)556的系統(tǒng)存儲(chǔ)器之間的DMA寫和讀傳輸。
[0056]暫時(shí)存儲(chǔ)器524和哈希單元526示出為由NIC用于促成與分組處理有關(guān)的暫時(shí)存儲(chǔ)和哈希操作的組件。例如,哈希操作可以被實(shí)現(xiàn)用于導(dǎo)出流ID并用于分組標(biāo)識(shí)。
[0057]PHY532和534促成用于RNIC的物理層操作,并用作由RNIC邏輯和組件利用的數(shù)字域與被用于經(jīng)由電子信號(hào)、光學(xué)信號(hào)或有線信號(hào)發(fā)射數(shù)據(jù)的模擬域之間的橋。例如,在圖5的所示出的實(shí)施例中,PHY532和534中的每個(gè)都被耦合到一對(duì)IO端口,該對(duì)端口被配置為通過諸如Cat5e或Cat6線之類的線纜發(fā)送電子信號(hào)。光學(xué)和無線信號(hào)的實(shí)施例將利用額外的電路和接口,用于促成經(jīng)由光學(xué)和無線信號(hào)的連接(未示出)。與PHY操作相結(jié)合,SerDes528和530被用以將輸出的分組流串行化以及將進(jìn)入的分組流解串行化。
[0058]除了指令存儲(chǔ)510中示出的指令,其它指令可以經(jīng)由對(duì)處理器引擎512或其它處理單元的執(zhí)行而被實(shí)施,以促成額外的操作。例如,在一個(gè)實(shí)施例中,NIC500被配置為實(shí)現(xiàn)在RNIC自身上的TCP/IP棧。RNIC500還可以被配置為以從操作系統(tǒng)TCP設(shè)施轉(zhuǎn)卸負(fù)載的方式促成TCP操作,由此一旦分組被外發(fā),RNIC500便負(fù)責(zé)處理ACK消息并當(dāng)ACK消息在可應(yīng)用的TCP超時(shí)時(shí)段內(nèi)未被接收時(shí)重發(fā)該分組。
[0059]RDMA主邏輯536包括用于促成RDMA數(shù)據(jù)傳輸操作的指令和邏輯,其可以包括除對(duì)本文描述的RDMA數(shù)據(jù)傳輸?shù)脑鰪?qiáng)操作之外的傳統(tǒng)RDMA操作。MMU同步邏輯202被配置為實(shí)現(xiàn)本文描述的MMY同步邏輯和操作。
[0060]除了支持RDMA操作,RNIC可以被配置為執(zhí)行傳統(tǒng)的NIC操作,包括與分組轉(zhuǎn)發(fā)有關(guān)的操作。相應(yīng)地,RNIC500可以被配置為在本地或使用系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器映射IO(MMIO)地址空間來存儲(chǔ)用于促成分組標(biāo)識(shí)和分類的數(shù)據(jù),包括轉(zhuǎn)發(fā)過濾器和規(guī)則。當(dāng)在本地存儲(chǔ)時(shí),該數(shù)據(jù)可以被存儲(chǔ)在DRAM 506或SRAM 508。在MMO地址空間中存儲(chǔ)的數(shù)據(jù)可以被RNIC 500經(jīng)由讀DMA操作來訪問。通常,建立麗IO地址空間映射可以由RNIC設(shè)備驅(qū)動(dòng)器協(xié)同操作系統(tǒng)來促成。RNIC設(shè)備驅(qū)動(dòng)器還可以被配置為使能指令存儲(chǔ)510中的指令經(jīng)由操作系統(tǒng)而被更新??蛇x地,指令存儲(chǔ)中的指令可以包括被存儲(chǔ)在諸如閃存之類的非記憶性存儲(chǔ)器中的固件指令,該非記憶性存儲(chǔ)器可以被集成在處理器/控制器504上或者被安放到NIC系統(tǒng)板502 (未示出)。
[0061]通常,本文描述的各實(shí)施例的各方面可以適用于支持RDMA實(shí)現(xiàn)方案和流控制的任何現(xiàn)行的或未來的網(wǎng)絡(luò)協(xié)議。這些協(xié)議包括但不限于通過以太網(wǎng)、iWARP和Infiniband的TCP或其它可靠傳送協(xié)議。此外,被用以促成物理通信傳輸?shù)娜魏维F(xiàn)行的物理傳送層可以被利用,包括有線傳輸、光學(xué)傳輸和無線傳輸。
[0062]雖然已參照特定的實(shí)現(xiàn)方案描述了一些實(shí)施例,但是根據(jù)一些實(shí)施例的其它實(shí)現(xiàn)方案也是可行的。另外,在附圖中示出的和/或本文描述的元件或者其它特征的布置和/或順序無需按照示出和描述的特定方式而被布設(shè)。根據(jù)一些實(shí)施例,許多其他布置是可行的。
[0063]在附圖中示出的每個(gè)系統(tǒng)中,每個(gè)元件在一些情形中可以都具有相同的附圖標(biāo)記或不同的附圖標(biāo)記,以暗示所表示的元件可以不同和/或相同。然而,元件可以足夠靈活地具有不同的實(shí)現(xiàn)方式,并與本文所示出或描述的系統(tǒng)中的一些或全部一起工作。附圖中示出的各元件可以是相同的或不同的。哪個(gè)元件被稱為第一元件以及哪個(gè)元件被稱為第二元件是任意的。
[0064]在上述描述和權(quán)利要求中,可以利用術(shù)語“被耦合”和“被連接”以及它們的派生詞。應(yīng)該理解,這些術(shù)語并不表示彼此的同義詞。相反,在特定實(shí)施例中,“被連接”可被用于表示兩個(gè)或多個(gè)元件是互相直接的物理或電接觸。“被耦合”可表示兩個(gè)或多個(gè)元件是直接的物理或電接觸。但是,“被耦合”還可表示兩個(gè)或多個(gè)元件不是互相直接接觸,但是仍可相互協(xié)作或相互作用。
[0065]這里有一種算法,并且通常被認(rèn)為是導(dǎo)致所需結(jié)果的動(dòng)作或操作的自給序列(self-consistent sequence)。這些動(dòng)作或操作包括對(duì)物理量的物理處理。通常,但不是必要的,這些物理量表現(xiàn)為能夠被存儲(chǔ)、傳送、組合、比較以及其它處理的電子或電磁信號(hào)的形式。已證實(shí),主要出于公共應(yīng)用的原因,將這些信號(hào)稱為比特、值、元件、符號(hào)、字符、術(shù)語、數(shù)字等常常是方便的。但是,應(yīng)該理解,所有這些和類似的術(shù)語與適當(dāng)?shù)奈锢砹坑嘘P(guān),并且僅僅是應(yīng)用于這些量的方便標(biāo)記。
[0066]實(shí)施例是本發(fā)明的實(shí)現(xiàn)方案或例子。在說明書中對(duì)“實(shí)施例”、“ 一個(gè)實(shí)施例”、“一些實(shí)施例”或“其它實(shí)施例”的引用意指結(jié)合這些實(shí)施例描述的特定的特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一些實(shí)施例而不必是所有實(shí)施例中。各處的“實(shí)施例”、“一個(gè)實(shí)施例”或“一些實(shí)施例”不必都指同樣的實(shí)施例。
[0067]本文描述和示出的所有組件、特征、結(jié)構(gòu)、特性等不必都被包括在一個(gè)或多個(gè)特定的實(shí)施例中。如果說明書聲明了組件、特征、結(jié)構(gòu)或特性例如“可以”、“可”、“能夠”或“能”被包括,那么該特定的組件、特征、結(jié)構(gòu)或特性不是需要被包括的。如果說明書或權(quán)利要求提到“一”或“一個(gè)”元件,那么這并不意指僅有這一個(gè)元件。如果說明書或權(quán)利要求提到“一額外的”元件,那么這并不排除有一個(gè)以上的額外的元件。
[0068]如本文的文字和附圖所展現(xiàn)地,一些實(shí)施例的各方面可以被實(shí)現(xiàn)在RNIC中,該RNIC包括一個(gè)或多個(gè)集成組件(例如,半導(dǎo)體芯片),用于促成RDMA有關(guān)的操作的邏輯經(jīng)由該一個(gè)或多個(gè)集成組件來實(shí)現(xiàn)。此外,本文描述的各實(shí)施例可以被實(shí)現(xiàn)在不僅半導(dǎo)體芯片內(nèi),還可以被實(shí)現(xiàn)在機(jī)器可讀介質(zhì)中。例如,上面描述的設(shè)計(jì)可以被存儲(chǔ)在和/或嵌入到與被用于設(shè)計(jì)半導(dǎo)體設(shè)備的設(shè)計(jì)工具相關(guān)聯(lián)的機(jī)器可讀介質(zhì)。實(shí)例包括以VHSIC硬件描述語言(VHDL)語言、Verilog語言或SPICE語言為格式的網(wǎng)表。一些網(wǎng)表實(shí)例包括:行為層網(wǎng)表,寄存器轉(zhuǎn)移層(RTL)網(wǎng)表,門層網(wǎng)表以及晶體管層網(wǎng)表。機(jī)器可讀媒質(zhì)也包括具有布置信息,諸如GPS-1I文件的媒質(zhì)。此外,網(wǎng)表文件或其他用于半導(dǎo)體芯片設(shè)計(jì)的機(jī)器可讀媒質(zhì)可以在模擬環(huán)境中使用以執(zhí)行上述教導(dǎo)的方法。
[0069]另外,本文的一些實(shí)施例的各方面可以通過諸如但不限于RNIC驅(qū)動(dòng)器、MMU同步驅(qū)動(dòng)器和在RNIC上實(shí)現(xiàn)的固件之類的對(duì)應(yīng)的軟件和/或固件組件和應(yīng)用來促成。因而,本發(fā)明的實(shí)施例可以被用作或支持在某種形式的處理核(例如計(jì)算機(jī)的CPU、或多核計(jì)算機(jī)的一個(gè)或多個(gè)核)上執(zhí)行的軟件程序、軟件模塊、固件、和/或分布式軟件,在處理器或核上運(yùn)行的虛擬機(jī),或者以其它方式在機(jī)器可讀媒質(zhì)之上或之中執(zhí)行或?qū)崿F(xiàn)。機(jī)器可讀媒質(zhì)包括任何以可被機(jī)器(如計(jì)算機(jī))讀取的形式儲(chǔ)存或發(fā)射信息的機(jī)制。例如,機(jī)器可讀媒質(zhì)可包括例如只讀儲(chǔ)存器(ROM);隨機(jī)存取儲(chǔ)存器(RAM);磁盤存儲(chǔ)媒質(zhì);光學(xué)存儲(chǔ)媒質(zhì);和閃存器件等等。
[0070]本發(fā)明的所示出的實(shí)施例的上述描述,包括摘要中的描述,并不是要窮舉或限制于所揭示的精確形態(tài)。雖然為了說明的目的在此描述了本發(fā)明的具體實(shí)施例或示例,但如本領(lǐng)域熟練技術(shù)人員會(huì)意識(shí)到地,各種等效更改方案在本發(fā)明的范圍內(nèi)是可能的。
[0071]這些更改可以根據(jù)以上對(duì)本發(fā)明實(shí)施例的具體描述進(jìn)行。所附權(quán)利要求書中使用的術(shù)語不應(yīng)當(dāng)被解釋為把本發(fā)明局限于在詳細(xì)說明書和權(quán)利要求書中所揭示的具體實(shí)施例。相反,本發(fā)明的范圍完全由所附權(quán)利要求書確定,而權(quán)利要求將根據(jù)權(quán)利要求書的通用規(guī)則來被解釋。
【權(quán)利要求】
1.一種方法,包括: 在第一遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)網(wǎng)絡(luò)接口控制器(RNIC)處,接收第一消息,所述第一消息包含針對(duì)對(duì)用作目標(biāo)緩沖區(qū)的存儲(chǔ)器的注冊的請(qǐng)求,該目標(biāo)緩沖區(qū)是關(guān)于使用可靠傳送協(xié)議從第二 RNIC向所述第一 RNIC進(jìn)行的RDMA數(shù)據(jù)傳輸而將被利用的;以及 響應(yīng)于關(guān)于所述請(qǐng)求并導(dǎo)致頁錯(cuò)誤事件的存儲(chǔ)器注冊操作,發(fā)送第一確認(rèn)消息給所述第二 RNIC,所述第一確認(rèn)消息確認(rèn)所述第一消息已被接收并包含指示頁錯(cuò)誤事件正在發(fā)生的信息。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述第一確認(rèn)消息包括回退時(shí)間,并包括針對(duì)所述第二 RNIC不發(fā)送與所述RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的分組,直到所述回退時(shí)間期滿為止的請(qǐng)求。
3.根據(jù)權(quán)利要求1或2所述的方法,還包括: 在所述頁錯(cuò)誤延遲期間從所述第二 RNIC接收多個(gè)分組; 當(dāng)所述頁錯(cuò)誤延遲正在發(fā)生時(shí),將所述分組暫時(shí)緩存在所述第一 RNIC上;以及 在所述頁錯(cuò)誤延遲結(jié)束后,發(fā)送第二確認(rèn)消息給所述第二 RNIC,所述第二確認(rèn)消息指示所述多個(gè)分組已被接收。
4.根據(jù)前述權(quán)利要求中的任意權(quán)利要求所述的方法,其中,所述第一RNIC被安裝在主機(jī)平臺(tái)中,所述主機(jī)平臺(tái)具有用于RDMA緩沖區(qū)的系統(tǒng)存儲(chǔ)器和包括被用以管理對(duì)所述系統(tǒng)存儲(chǔ)器的訪問的存儲(chǔ)器 管理單元(MMU)的處理器,并且其中,利用了虛擬存儲(chǔ)器的操作系統(tǒng)正在所述主機(jī)平臺(tái)上運(yùn)行,所述方法還包括:實(shí)現(xiàn)一種機(jī)制以將由所述MMU用于被分配給RDMA目標(biāo)緩沖區(qū)的頁的頁表信息的一部分與由所述第一 RNIC在本地訪問的所述頁表信息的高速緩存拷貝同步。
5.根據(jù)權(quán)利要求4所述的方法,其中,與請(qǐng)求對(duì)應(yīng)的要被注冊的存儲(chǔ)器包括一個(gè)或多個(gè)存儲(chǔ)器頁,所述方法還包括:向所述MMU提供標(biāo)記,所述標(biāo)記請(qǐng)求對(duì)所述一個(gè)或多個(gè)存儲(chǔ)器頁的釘扎。
6.根據(jù)權(quán)利要求5所述的方法,還包括:在所述RDMA數(shù)據(jù)傳輸已經(jīng)完成后向所述MMU提供標(biāo)記,所述標(biāo)記標(biāo)識(shí)所述一個(gè)或多個(gè)存儲(chǔ)器頁可能是未被釘扎的。
7.根據(jù)前述權(quán)利要求中的任意權(quán)利要求所述的方法,其中,所述第一RNIC被安裝在主機(jī)平臺(tái)中,所述主機(jī)平臺(tái)具有用于RDMA緩沖區(qū)的系統(tǒng)存儲(chǔ)器和包括被用以管理對(duì)所述系統(tǒng)存儲(chǔ)器的訪問的存儲(chǔ)器管理單元(MMU)的處理器,并且其中,利用了虛擬存儲(chǔ)器的操作系統(tǒng)正在所述主機(jī)平臺(tái)上運(yùn)行并利用了核心存儲(chǔ)器中的分頁表,所述方法還包括:經(jīng)由所述第一 RNIC更新所述分頁表中的頁表項(xiàng)以標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)器頁是被釘扎的。
8.根據(jù)權(quán)利要求7所述的方法,還包括:經(jīng)由所述第一RNIC更新頁表項(xiàng),以標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)器頁在完成對(duì)利用了所述存儲(chǔ)器頁的RDMA目標(biāo)緩沖區(qū)的使用后是未被釘扎的。
9.根據(jù)前述權(quán)利要求中的任意權(quán)利要求所述的方法,其中,所述第一RNIC被安裝在主機(jī)平臺(tái)中,所述主機(jī)平臺(tái)具有用于RDMA緩沖區(qū)的系統(tǒng)存儲(chǔ)器和包括被用以管理對(duì)所述系統(tǒng)存儲(chǔ)器的訪問的存儲(chǔ)器管理單元(MMU)的處理器,并且其中,利用了虛擬存儲(chǔ)器的操作系統(tǒng)正在所述主機(jī)平臺(tái)上運(yùn)行并利用了核心存儲(chǔ)器中的分頁表,所述方法還包括:經(jīng)由所述第一 RNIC檢測所述頁錯(cuò)誤已經(jīng)發(fā)生。
10.根據(jù)前述權(quán)利要求中的任意權(quán)利要求所述的方法,還包括:確定頁錯(cuò)誤將在嘗試注冊將被用于所述目標(biāo)緩沖區(qū)的存儲(chǔ)器之前產(chǎn)生。
11.根據(jù)前述權(quán)利要求中的任意權(quán)利要求所述的方法,還包括: 接收針對(duì)在與單個(gè)RDMA工作請(qǐng)求對(duì)應(yīng)的正在進(jìn)行的RDMA數(shù)據(jù)傳輸期間,分配目標(biāo)緩沖區(qū)或擴(kuò)展現(xiàn)有目標(biāo)緩沖區(qū)的尺寸的請(qǐng)求;以及 使用存儲(chǔ)器的當(dāng)前被頁出的一個(gè)或多個(gè)頁來分配所述目標(biāo)緩沖區(qū)或擴(kuò)展所述現(xiàn)有目標(biāo)緩沖區(qū)的尺寸,其中,所述一個(gè)或多個(gè)頁被頁入、被注冊并被釘扎。
12.根據(jù)前述權(quán)利要求中的任意權(quán)利要求所述的方法,其中,針對(duì)分配所述目標(biāo)緩沖區(qū)或擴(kuò)展所述現(xiàn)有目標(biāo)緩沖區(qū)的尺寸的請(qǐng)求包含將所述請(qǐng)求標(biāo)識(shí)為緩沖區(qū)預(yù)分配請(qǐng)求的標(biāo)記,并且對(duì)存儲(chǔ)器的已頁出的頁的使用導(dǎo)致頁錯(cuò)誤,所述方法還包括:響應(yīng)于所述頁錯(cuò)誤,不向所述第二 RNIC發(fā)送包括回退時(shí)間的確認(rèn)消息。
13.一種裝置,包括: 網(wǎng)絡(luò)接口,其配置為使用可靠傳送協(xié)議來發(fā)送和接收分組化的數(shù)據(jù);以及 遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)邏輯,其配置為被用以當(dāng)所述裝置正在工作時(shí)促成執(zhí)行包括如下的操作: 接收第一消息,所述第一消息包含針對(duì)對(duì)用作目標(biāo)緩沖區(qū)的存儲(chǔ)器的注冊的請(qǐng)求,該目標(biāo)緩沖區(qū)是關(guān)于使用可靠傳送協(xié)議從遠(yuǎn)程裝置進(jìn)行的RDMA數(shù)據(jù)傳輸而將被利用的;以及 響應(yīng)于關(guān)于所述請(qǐng)求并導(dǎo)致頁錯(cuò)誤事件的存儲(chǔ)器注冊操作,發(fā)送第一確認(rèn)消息給所述第二裝置,所述第一確認(rèn)消息確認(rèn)所述第一消息已被接收并包含指示頁錯(cuò)誤延遲事件正在發(fā)生的信息,其中,所述第一確認(rèn)消息包括回退時(shí)間,并包括針對(duì)所述遠(yuǎn)程裝置不發(fā)送與所述RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的分組,直到所述回退時(shí)間期滿為止的請(qǐng)求。
14.根據(jù)權(quán)利要求13所述的裝置,其中,所述裝置包括啟用了RDMA的網(wǎng)絡(luò)接口控制器(RNIC)。
15.根據(jù)權(quán)利要求13或14所述的裝置,其中,所述裝置被配置為被安裝在主機(jī)平臺(tái)中,所述主機(jī)平臺(tái)具有用于RDMA緩沖區(qū)的系統(tǒng)存儲(chǔ)器和包括被用以管理對(duì)所述系統(tǒng)存儲(chǔ)器的訪問的存儲(chǔ)器管理單元(MMU)的處理器,其中,在所述主機(jī)平臺(tái)工作期間,利用了虛擬存儲(chǔ)器的操作系統(tǒng)正在所述主機(jī)平臺(tái)上運(yùn)行,并且其中,所述裝置還包括:一種機(jī)制,用以將由所述MMU用于被分配給RDMA目標(biāo)緩沖區(qū)的頁的頁表信息的一部分與由所述第一 RNIC在本地訪問的所述頁表信息的高速緩存拷貝同步。
16.根據(jù)權(quán)利要求13-15中的任意權(quán)利要求所述的裝置,其中,所述裝置被配置為被安裝在主機(jī)平臺(tái)中,所述主機(jī)平臺(tái)具有用于RDMA緩沖區(qū)的系統(tǒng)存儲(chǔ)器和包括被用以管理對(duì)所述系統(tǒng)存儲(chǔ)器的訪問的存儲(chǔ)器管理單元(MMU)的處理器,其中,在所述主機(jī)平臺(tái)工作期間,利用了虛擬存儲(chǔ)器的操作系統(tǒng)正在所述主機(jī)平臺(tái)上運(yùn)行并利用了核心存儲(chǔ)器中的分頁表,并且其中,所述裝置還被配置為:更新所述分頁表中的頁表項(xiàng)以標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)器頁是被釘扎的。
17.根據(jù)前述權(quán)利要求13-15中的任意權(quán)利要求所述的裝置,其中,所述裝置還被配置為當(dāng)工作時(shí)執(zhí)行包括如下的操作: 接收針對(duì)在與單個(gè)RDMA工作請(qǐng)求對(duì)應(yīng)的正在進(jìn)行的RDMA數(shù)據(jù)傳輸期間,動(dòng)態(tài)分配目標(biāo)緩沖區(qū)或擴(kuò)展現(xiàn)有目標(biāo)緩沖區(qū)的尺寸的請(qǐng)求;以及 使用存儲(chǔ)器的當(dāng)前被頁出的一個(gè)或多個(gè)頁來分配所述目標(biāo)緩沖區(qū)或擴(kuò)展所述現(xiàn)有目標(biāo)緩沖區(qū)的尺寸,其中,所述一個(gè)或多個(gè)頁被頁入、被注冊并被釘扎。
18.—種方法,包括: 從第一遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)網(wǎng)絡(luò)接口控制器(RNIC)向第二 RNIC發(fā)送第一消息,所述第一消息包含針對(duì)對(duì)用作目標(biāo)緩沖區(qū)的存儲(chǔ)器的注冊的請(qǐng)求,該目標(biāo)緩沖區(qū)是關(guān)于使用可靠傳送協(xié)議從所述第一 RNIC向所述第二 RNIC進(jìn)行的RDMA數(shù)據(jù)傳輸而將被利用的; 從所述第一 RNIC向所述第二 RNIC以流方式發(fā)送與所述RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的第一組多個(gè)分組; 從所述第二 RNIC接收第一確認(rèn)消息,所述第一確認(rèn)消息確認(rèn)所述第一消息已被接收,并包含指示頁錯(cuò)誤延遲事件正在發(fā)生的信息以及回退時(shí)間;以及 作為響應(yīng),利用所述回退時(shí)間以供回退定時(shí)器使用,并且不從所述第一 RNIC向所述第二 RNIC發(fā)送針對(duì)所述RDMA數(shù)據(jù)傳輸?shù)娜魏晤~外的分組,直到所述回退定時(shí)器期滿為止。
19.根據(jù)權(quán)利要求18所述的方法,還包括:在與對(duì)所述回退時(shí)間的使用相關(guān)聯(lián)的回退時(shí)段期間,不重發(fā)所述第一組多個(gè)分組中的任何一個(gè)。
20.根據(jù)權(quán)利要求18或19所述的方法,其中,所述RDMA數(shù)據(jù)傳輸對(duì)應(yīng)于針對(duì)傳輸具有文件尺寸的文件的RDMA工作請(qǐng)求,并且其中,在所述第一消息中針對(duì)其請(qǐng)求對(duì)存儲(chǔ)器的注冊的所述目標(biāo)緩沖區(qū)具有比所述文件尺寸小的尺寸,并且包括第一目標(biāo)緩沖區(qū),所述方法還包括: 從所述第一 RNIC向所述第二 RNIC發(fā)射與所述文件的RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的分組流; 在所述文件的所述RDMA數(shù)據(jù)傳輸期間,發(fā)送第二消息,所述第二消息包含針對(duì)對(duì)用作第二目標(biāo)緩沖區(qū)的存儲(chǔ)器的隱式注冊的請(qǐng)求,該第二目標(biāo)緩沖區(qū)是關(guān)于所述文件的所述RDMA數(shù)據(jù)傳輸而將被利用的。
21.根據(jù)權(quán)利要求20所述的方法,其中,所述第二消息是使用提前時(shí)段在所述第二目標(biāo)緩沖區(qū)被需要之前被發(fā)送的,所述提前時(shí)段大于預(yù)計(jì)的頁錯(cuò)誤延遲,所述預(yù)計(jì)的頁錯(cuò)誤延遲可能在對(duì)用于所述第二目標(biāo)緩沖區(qū)的所述存儲(chǔ)器的所述隱式注冊期間產(chǎn)生。
22.—種裝置,包括: 網(wǎng)絡(luò)接口,其配置為使用可靠傳送協(xié)議來發(fā)送和接收分組化的數(shù)據(jù);以及 遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)邏輯,其配置為被用以當(dāng)所述裝置正在工作時(shí)促成執(zhí)行包括如下的操作: 從所述裝置向遠(yuǎn)程裝置發(fā)送第一消息,所述第一消息包含針對(duì)對(duì)用作目標(biāo)緩沖區(qū)的存儲(chǔ)器的注冊的請(qǐng)求,該目標(biāo)緩沖區(qū)是關(guān)于使用可靠傳送協(xié)議從所述裝置向所述遠(yuǎn)程裝置進(jìn)行的RDMA數(shù)據(jù)傳輸而將被利用的; 向所述遠(yuǎn)程裝置以流方式發(fā)送與所述RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的第一組多個(gè)分組; 從所述遠(yuǎn)程裝置接收第一確認(rèn)消息,所述第一確認(rèn)消息確認(rèn)所述第一消息已被接收,并包含指示頁錯(cuò)誤延遲事件正在發(fā)生的信息以及回退時(shí)間;以及 作為響應(yīng),利用所述回退時(shí)間以供回退定時(shí)器使用,并且不向所述遠(yuǎn)程裝置發(fā)送針對(duì)所述RDMA數(shù)據(jù)傳輸?shù)娜魏晤~外的分組,直到所述回退定時(shí)器期滿為止。
23.根據(jù)權(quán)利要求22所述的裝置,其中,所述裝置還被配置為:在與對(duì)所述回退時(shí)間的使用相關(guān)聯(lián)的回退時(shí)段期間,不重發(fā)所述第一組多個(gè)分組中的任何一個(gè)。
24.根據(jù)權(quán)利要求22或23所述的裝置,其中,所述RDMA數(shù)據(jù)傳輸對(duì)應(yīng)于針對(duì)傳輸具有文件尺寸的文件的RDMA工作請(qǐng)求,并且其中,在所述第一消息中針對(duì)其請(qǐng)求對(duì)存儲(chǔ)器的注冊的所述目標(biāo)緩沖區(qū)具有比所述文件尺寸小的尺寸,并且包括第一目標(biāo)緩沖區(qū),所述方法還包括: 向所述遠(yuǎn)程裝置發(fā)射與所述文件的RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的分組流; 在所述文件的所述RDMA數(shù)據(jù)傳輸期間,發(fā)送第二消息,所述第二消息包含針對(duì)對(duì)用作第二目標(biāo)緩沖區(qū)的存儲(chǔ)器的隱式注冊的請(qǐng)求,該第二目標(biāo)緩沖區(qū)是關(guān)于所述文件的所述RDMA數(shù)據(jù)傳輸而將被利用的。
25.根據(jù)權(quán)利要求24所述的裝置,其中,所述第二消息是使用提前時(shí)段在所述第二目標(biāo)緩沖區(qū)被需要之前被發(fā)送的,所述提前時(shí)段大于預(yù)計(jì)的頁錯(cuò)誤延遲,所述預(yù)計(jì)的頁錯(cuò)誤延遲可能在對(duì)用于所述第二目標(biāo)緩沖區(qū)的所述存儲(chǔ)器的所述隱式注冊期間產(chǎn)生。
26.一種計(jì)算機(jī)系統(tǒng),包括: 系統(tǒng)存儲(chǔ)器,其包括多個(gè)存儲(chǔ)器頁; 處理器,其被操作地耦合到所述系統(tǒng)存儲(chǔ)器,包括用于管理對(duì)系統(tǒng)存儲(chǔ)器的頁訪問的存儲(chǔ)器管理單元(MMU) ‘ 輔助存儲(chǔ)設(shè)備; 輸入輸出(IO)接口組件,其被操作地耦合到或集成在所述處理器中,并且被操作地耦合到所述存儲(chǔ)器和所述輔 助存儲(chǔ)設(shè)備;以及 網(wǎng)絡(luò)適配器,其被操作地耦合到所述IO接口組件,并且包括被配置為經(jīng)由驅(qū)動(dòng)器與所述MMU通過接口進(jìn)行連接的邏輯,其中,所述網(wǎng)絡(luò)適配器還包括用于執(zhí)行包括如下的遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)網(wǎng)絡(luò)操作的邏輯: 從遠(yuǎn)程計(jì)算機(jī)系統(tǒng)接收第一消息,所述第一消息包含針對(duì)對(duì)存儲(chǔ)器緩沖區(qū)的注冊的請(qǐng)求,所述存儲(chǔ)器緩沖區(qū)將被用于存儲(chǔ)與使用可靠傳送協(xié)議從所述遠(yuǎn)程計(jì)算機(jī)系統(tǒng)向所述計(jì)算機(jī)系統(tǒng)進(jìn)行的第一 RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的數(shù)據(jù); 關(guān)于注冊要被用于所述緩沖區(qū)的存儲(chǔ)器,標(biāo)識(shí)頁錯(cuò)誤已發(fā)生;以及向所述遠(yuǎn)程計(jì)算機(jī)系統(tǒng)發(fā)送第一確認(rèn)消息,所述第一確認(rèn)消息確認(rèn)所述第一消息已被接收,并包含指示頁錯(cuò)誤延遲事件正在發(fā)生的信息。
27.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)系統(tǒng),其中,所述第一確認(rèn)消息包括回退時(shí)間,并包括針對(duì)所述遠(yuǎn)程計(jì)算機(jī)系統(tǒng)不發(fā)送與所述第一 RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的分組,直到所述回退時(shí)間期滿為止的請(qǐng)求。
28.根據(jù)權(quán)利要求26或27所述的系統(tǒng),其中,被用以與所述MMU通過接口進(jìn)行連接的所述邏輯被配置為:將由所述MMU用于被分配給RDMA目標(biāo)緩沖區(qū)的頁的頁表信息的一部分與由所述網(wǎng)絡(luò)適配器在本地訪問的所述頁表信息的高速緩存拷貝同步。
29.根據(jù)權(quán)利要求26-28中的任意權(quán)利要求所述的系統(tǒng),其中,所述網(wǎng)絡(luò)適配器經(jīng)由外圍組件互連高速(PCIe)鏈路而被操作地耦合到所述IO接口組件。
30.根據(jù)權(quán)利要求26-29中的任意權(quán)利要求所述的系統(tǒng),其中,所述網(wǎng)絡(luò)適配器被配置為執(zhí)行包括如下的操作: 發(fā)送第二消息,所述第二消息包含針對(duì)對(duì)用作目標(biāo)緩沖區(qū)的存儲(chǔ)器的注冊的請(qǐng)求,該目標(biāo)緩沖區(qū)是關(guān)于使用可靠傳送協(xié)議從所述系統(tǒng)向所述遠(yuǎn)程裝置進(jìn)行的第二 RDMA數(shù)據(jù)傳輸而將被利用的; 向所述遠(yuǎn)程裝置以流方式發(fā)送與所述第二 RDMA數(shù)據(jù)傳輸對(duì)應(yīng)的第一組多個(gè)分組;從所述遠(yuǎn)程裝置接收第一確認(rèn)消息,所述第一確認(rèn)消息確認(rèn)所述第二消息已被接收,并包含指示頁錯(cuò)誤延遲事件正在發(fā)生的信息以及回退時(shí)間;以及 作為響應(yīng),利用所述回退時(shí)間以供回退定時(shí)器使用,并且不向所述遠(yuǎn)程裝置發(fā)送針對(duì)所述第二 RDMA數(shù)據(jù)傳輸?shù)娜魏晤~外的分組,直到所述回退定時(shí)器期滿為止。
【文檔編號(hào)】G06F12/00GK104011696SQ201380004588
【公開日】2014年8月27日 申請(qǐng)日期:2013年6月25日 優(yōu)先權(quán)日:2012年12月11日
【發(fā)明者】A·R·戴維斯, R·J·伍德拉夫 申請(qǐng)人:英特爾公司