欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

向控制器存儲(chǔ)器空間寫入消息的制作方法

文檔序號(hào):6485075閱讀:227來源:國(guó)知局
向控制器存儲(chǔ)器空間寫入消息的制作方法
【專利摘要】實(shí)施例可以包括可以將消息從主機(jī)中的系統(tǒng)存儲(chǔ)器寫入到主機(jī)中的輸入/輸出(I/O)控制器中的存儲(chǔ)器空間的電路。主機(jī)操作系統(tǒng)可以至少部分地駐留在系統(tǒng)存儲(chǔ)器中。消息可以包括數(shù)據(jù)和與數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè)描述符。數(shù)據(jù)可以被包括在至少一個(gè)描述符中。電路還可以向I/O控制器發(fā)出信號(hào),指出已經(jīng)發(fā)生了寫入。許多替代方案、變化,以及修改也是可以的。
【專利說明】向控制器存儲(chǔ)器空間寫入消息
[0001]領(lǐng)域
[0002]本發(fā)明涉及向輸入/輸出(I/O)控制器存儲(chǔ)器空間寫入消息。
[0003]背景
[0004]在一個(gè)常規(guī)計(jì)算配置中,客戶端和服務(wù)器包括能夠使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)協(xié)議來相互進(jìn)行通信的相應(yīng)的I/O控制器。為了從服務(wù)器向客戶端傳輸數(shù)據(jù),數(shù)據(jù)和指向該數(shù)據(jù)的描述符兩者都被寫入到服務(wù)器的主系統(tǒng)存儲(chǔ)器中。此后,響應(yīng)于提供給服務(wù)器的I/O控制器的門鈴,服務(wù)器的I/O控制器讀取該描述符。然后,服務(wù)器的I/O控制器讀取由描述符所指向的數(shù)據(jù)。然后,服務(wù)器的I/O控制器向客戶端傳輸數(shù)據(jù)??梢岳斫?,從服務(wù)器向客戶端傳輸?shù)臄?shù)據(jù)中涉及的延遲隨著由服務(wù)器的I/O控制器實(shí)施的主存儲(chǔ)器讀取操作的數(shù)量而增大。
[0005]為了試圖減少與服務(wù)器主存儲(chǔ)器讀取操作相關(guān)聯(lián)的等待時(shí)間,有人建議將數(shù)據(jù)內(nèi)聯(lián)(例如,在或附近)描述符放置在服務(wù)器的主系統(tǒng)存儲(chǔ)器中。然而,即使使用此技術(shù),執(zhí)行從服務(wù)器向客戶端的數(shù)據(jù)傳輸時(shí)涉及的等待時(shí)間仍可能大于所希望的。
[0006]附圖簡(jiǎn)述
[0007]隨著下列“詳細(xì)描述”的進(jìn)行并參考附圖,各實(shí)施例的特征和優(yōu)點(diǎn)將變得顯而易見,其中,相同編號(hào)描繪了相同的部分,其中:
[0008]圖1示出了一個(gè)實(shí)施例中的特征。
[0009]圖2示出了一個(gè)實(shí)施例中的特征。
[0010]圖3示出了一個(gè)實(shí)施例中的特征。
[0011]圖4示出了一個(gè)實(shí)施例中的特征。
[0012]圖5示出了一個(gè)實(shí)施例中的特征。
[0013]圖6示出了一個(gè)實(shí)施例中的特征。
[0014]雖然下列“詳細(xì)描述”將參考說明性實(shí)施例來進(jìn)行,但是,許多替代方案、修改以及其變體將對(duì)所屬領(lǐng)域的技術(shù)人員顯而易見。相應(yīng)地,所要求保護(hù)的主題應(yīng)該從廣義上來看待。
【具體實(shí)施方式】
[0015]圖1示出了系統(tǒng)實(shí)施例100。系統(tǒng)100可以包括通過網(wǎng)絡(luò)50可通信地耦合到服務(wù)器20的客戶端10。在此實(shí)施例中,術(shù)語“主機(jī)計(jì)算機(jī)”、“主機(jī)”、“服務(wù)器”、“客戶端”、“網(wǎng)絡(luò)節(jié)點(diǎn)”以及“節(jié)點(diǎn)”可以可互換地使用,并可以無限制地表示,例如一個(gè)或多個(gè)終端站、移動(dòng)因特網(wǎng)設(shè)備、智能電話、媒體設(shè)備、輸入/輸出I/O設(shè)備、平板電腦、電器、中間站、網(wǎng)絡(luò)接口、客戶端、服務(wù)器和/或其一些部分。雖然客戶端10、服務(wù)器20以及網(wǎng)絡(luò)50將以單數(shù)引用的,但是應(yīng)該理解,每一這樣的相應(yīng)的組件都可以包括一個(gè)或多個(gè)(例如,多個(gè))這樣的相應(yīng)的組件,而不會(huì)偏離此實(shí)施例。在此實(shí)施例中,“網(wǎng)絡(luò)”可以是或包括至少部分地允許、促進(jìn)和/或使兩個(gè)或更多實(shí)體可通信地耦合在一起的任何機(jī)制、手段、特征和/或其一部分。也在此實(shí)施例中,如果第一實(shí)體能夠向第二實(shí)體傳輸和/或從第二實(shí)體接收一個(gè)或多個(gè)命令和/或數(shù)據(jù),則第一實(shí)體可以“可通信地耦合”到第二實(shí)體。在此實(shí)施例中,數(shù)據(jù)和信息可以可互換地使用,并可以是或包括一個(gè)或多個(gè)命令(例如,一個(gè)或多個(gè)程序指令),和/或一個(gè)或多個(gè)這樣的命令可以是或包括數(shù)據(jù)和/或信息。也在此實(shí)施例中,“指令”可以包括數(shù)據(jù)和/或一個(gè)或多個(gè)命令。
[0016]主機(jī)20可以包括電路118,該電路可以包括一個(gè)或多個(gè)主機(jī)處理器(HP) 12、主機(jī)主系統(tǒng)存儲(chǔ)器21和/或I/O控制器120。一個(gè)或多個(gè)主機(jī)處理器12可以是或包括一個(gè)或多個(gè)多核主機(jī)處理器,這些主機(jī)處理器可以包括多個(gè)主機(jī)處理器核(HPC)中央處理單元(CPU) 12A...12N。雖然在圖中未示出,但是,服務(wù)器20還可以包括一個(gè)或多個(gè)芯片集(包括,例如,存儲(chǔ)器、網(wǎng)絡(luò)和/或I/O控制器電路)。控制器120可以包括遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)網(wǎng)絡(luò)接口控制器(NIC) 210。當(dāng)然,在不偏離此實(shí)施例的情況下,控制器120有利地可以(另選地或另外地)是或包括另一種類型(例如,存儲(chǔ)器和/或NIC)的控制器(例如,RDMA NIC之外的和/或作為其補(bǔ)充)??刂破?20和/或RDMA NIC (RNIC) 210可以至少部分地包括存儲(chǔ)器空間60。另選地或另外地,存儲(chǔ)器空間60可以至少部分地與控制器120和/或RNIC210相關(guān)聯(lián)(例如,至少部分地以這樣的方式,以便緊密耦合到控制器120和/或RNIC210)。在此實(shí)施例中,存儲(chǔ)器空間可以包括存儲(chǔ)器中的一個(gè)或多個(gè)相鄰的和/或非相鄰的位置。在此示例性實(shí)施例中,存儲(chǔ)器空間60可以是或包括,例如,一個(gè)或多個(gè)存儲(chǔ)器映射的I/O (麗10)空間,這些空間可以使用與用于訪問存儲(chǔ)器21的那些命令相同或類似的命令來訪問,和/或可以包括其他和/或額外的類型的存儲(chǔ)器(例如,不可緩存的和/或?qū)懭虢M合),因?yàn)榭梢园诖鎯?chǔ)器21中(例如,寫回)。在此實(shí)施例中,存儲(chǔ)器空間60可以包括可以被映射到HP存儲(chǔ)器空間的一個(gè)或多個(gè)控制器地址空間。這些一個(gè)或多個(gè)控制器地址空間可以與可以通過一個(gè)或多個(gè)MMIO操作實(shí)現(xiàn)和/或控制的資源集相關(guān)聯(lián)。可以動(dòng)態(tài)地管理和/或分配(例如,在運(yùn)行時(shí))可以指派給資源集的特定地址,并且資源集可以不分配、廣告到至少某些軟件實(shí)體或隊(duì)列。也在此實(shí)施例中,存儲(chǔ)器中的位置可以是或包括存儲(chǔ)器的能夠至少部分地被訪問的一個(gè)或多個(gè)部分。在此實(shí)施例中,對(duì)存儲(chǔ)器的訪問可以包括一個(gè)或多個(gè)對(duì)存儲(chǔ)器的讀取和/或向存儲(chǔ)器的寫入。NIC210、控制器120、HP12和/或HPC12A...12N能夠訪問存儲(chǔ)器21和/或通過一個(gè)或多個(gè)這樣的芯片集相互進(jìn)行通信。在此實(shí)施例中,客戶端10可以至少部分地與主機(jī)20遠(yuǎn)離(例如,在地理位置上遠(yuǎn)離)。
[0017]在此實(shí)施例中,“電路”可以包括,例如,單獨(dú)地或以任何組合地,模擬電路、數(shù)字電路、硬連線電路、可編程電路、協(xié)處理器電路、狀態(tài)機(jī)電路和/或可以包括可以由可編程電路執(zhí)行的程序指令的存儲(chǔ)器。也在此實(shí)施例中,處理器、HP、CPU、處理器核(PC)、HPC、核和控制器中的每一個(gè)都可以包括能夠至少部分地執(zhí)行一個(gè)或多個(gè)算術(shù)和/或邏輯操作和/或至少部分地執(zhí)行一個(gè)或多個(gè)指令的相應(yīng)的電路。雖然在圖形中未示出,但是,服務(wù)器20可以包括圖形用戶界面系統(tǒng),該系統(tǒng)可以包括,例如,相應(yīng)的鍵盤、指示設(shè)備以及可以允許個(gè)人用戶向服務(wù)器20和/或系統(tǒng)100輸入命令以及監(jiān)測(cè)服務(wù)器20和/或系統(tǒng)100的操作的顯示系統(tǒng)。也在此實(shí)施例中,存儲(chǔ)器可以包括下列類型的存儲(chǔ)器中的一種或多種:半導(dǎo)體固件存儲(chǔ)器、可編程存儲(chǔ)器、非易失性存儲(chǔ)器、只讀存儲(chǔ)器、電可編程存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器、閃存、磁盤存儲(chǔ)器、光盤存儲(chǔ)器和/或其他或未來開發(fā)的計(jì)算機(jī)可讀和/或可寫存儲(chǔ)器。
[0018]一個(gè)或多個(gè)機(jī)器可讀程序指令可以至少部分地存儲(chǔ)在存儲(chǔ)器21中。在服務(wù)器20的操作中,這些機(jī)器可讀的指令可以由一個(gè)或多個(gè)主機(jī)處理器12、一個(gè)或多個(gè)HPC12A...12N、控制器120和/或NIC210來訪問和執(zhí)行。當(dāng)如此執(zhí)行時(shí),這些一個(gè)或多個(gè)機(jī)器可讀的指令可以導(dǎo)致一個(gè)或多個(gè)操作系統(tǒng)(OS )31、一個(gè)或多個(gè)驅(qū)動(dòng)程序33和/或一個(gè)或多個(gè)應(yīng)用程序進(jìn)程121A...121N至少部分地由一個(gè)或多個(gè)HP12和/或HPC12A...12N執(zhí)行,也變得至少部分地駐留在存儲(chǔ)器21中。也當(dāng)這些機(jī)器可讀指令由一個(gè)或多個(gè)主機(jī)處理器12、一個(gè)或多個(gè)HPC12A...12N、控制器120和/或NIC210執(zhí)行時(shí),這些一個(gè)或多個(gè)指令可以至少部分地導(dǎo)致這些組件中的一個(gè)或多個(gè),一個(gè)或多個(gè)驅(qū)動(dòng)程序33,和/或一個(gè)或多個(gè)OS31,至少部分地在存儲(chǔ)器21中至少部分地建立和/或維護(hù)一個(gè)或多個(gè)消息190A...190N、一個(gè)或多個(gè)隊(duì)列119,和/或一個(gè)或多個(gè)跟蹤表151。在此實(shí)施例中,一個(gè)或多個(gè)隊(duì)列119可以包括一個(gè)或多個(gè)完成隊(duì)列(CQ)和/或一個(gè)或多個(gè)發(fā)送隊(duì)列(SQ)126 (參見圖3)。在此實(shí)施例中,消息可以包括一個(gè)或多個(gè)符號(hào)和/或值,諸如,例如,要被寫入到MMIO空間的描述符。作為示例,在此實(shí)施例中,消息可以是或包括由一個(gè)或多個(gè)HPC向一個(gè)或多個(gè)I/O控制器MMIO空間寫入的一個(gè)或多個(gè)結(jié)構(gòu)。例如,在此實(shí)施例中,代替存儲(chǔ)在存儲(chǔ)器21中,這樣的消息可以至少部分地作為首先存儲(chǔ)在未示出的CPU寄存器中并直接從寄存器寫入到I/O控制器MMIO空間中的結(jié)果被實(shí)例化。
[0019]在此實(shí)施例中,一個(gè)或多個(gè)驅(qū)動(dòng)程序33可以至少部分地與一個(gè)或多個(gè)0S31相互不同。另選地或另外地,在不偏離此實(shí)施例的情況下,一個(gè)或多個(gè)0S31和/或驅(qū)動(dòng)程序33的一個(gè)或多個(gè)相應(yīng)的部分可以至少部分地相互不同,和/或可以至少部分地包括在彼此中。一個(gè)或多個(gè)0S31可以至少部分地促進(jìn)一個(gè)或多個(gè)應(yīng)用程序進(jìn)程121A...121N在存儲(chǔ)器21中的執(zhí)行和/或駐留。同樣,在不偏離此實(shí)施例的情況下,I/O控制器120和/或RNIC210可以不同于(至少部分地),或者可另選地,可以(至少部分地)包含在一個(gè)或多個(gè)未示出的芯片集和/或HP12中。也在不偏離此實(shí)施例的情況下,存儲(chǔ)器21的一個(gè)或多個(gè)部分可以包含在RNIC210、控制器120和/或HP12中。
[0020]在此實(shí)施例中,實(shí)體的一部分或子集可以包括實(shí)體的全部或少于實(shí)體的全部。同時(shí),在此實(shí)施例中,進(jìn)程、線程、守護(hù)進(jìn)程(daemon)、程序、驅(qū)動(dòng)程序、操作系統(tǒng)、應(yīng)用程序、內(nèi)核和/或虛擬機(jī)監(jiān)視器中的每一個(gè)都可以(I)至少部分地包括,和/或(2)至少部分地導(dǎo)致和/或來源于,一個(gè)或多個(gè)操作和/或程序指令的執(zhí)行。在此實(shí)施例中,驅(qū)動(dòng)程序可以至少部分地是,包括和/或源于一個(gè)或多個(gè)內(nèi)核驅(qū)動(dòng)程序和/或用戶空間庫。
[0021]在此實(shí)施例中,隊(duì)列、緩沖器和/或門鈴可以包括存儲(chǔ)器中的其中可以至少臨時(shí)地存儲(chǔ)數(shù)據(jù)和/或一個(gè)或多個(gè)命令的一個(gè)或多個(gè)位置(例如,至少部分地由一個(gè)或多個(gè)地址指定的和/或指出的)。在此實(shí)施例中,門鈴消息可以是或包括可以至少部分地指出至少部分地已經(jīng)發(fā)生,和/或至少部分地將要發(fā)生的一個(gè)或多個(gè)事件、操作、發(fā)生和/或事務(wù)的數(shù)據(jù)和/或一個(gè)或多個(gè)命令。此外,在此實(shí)施例中,隊(duì)列元素可以是或包括要被存儲(chǔ)和/或存儲(chǔ)在一個(gè)或多個(gè)隊(duì)列中的數(shù)據(jù)和/或一個(gè)或多個(gè)命令,諸如,例如,一個(gè)或多個(gè)描述符和/或一個(gè)或多個(gè)命令。另外,在此實(shí)施例中,指針可以至少部分地指出,尋址,和/或指定存儲(chǔ)器中的一個(gè)或多個(gè)位置和/或一個(gè)或多個(gè)項(xiàng)。同時(shí),在此實(shí)施例中,描述符可以包括(I)數(shù)據(jù),以及(2) —個(gè)或多個(gè)命令(例如,一個(gè)或多個(gè)RDMA命令)和/或至少部分地與數(shù)據(jù)相關(guān)聯(lián)的信息。此實(shí)施例中的描述符的示例可以包括發(fā)送隊(duì)列元素、分散收集列表、分散收集元素,和/或其他結(jié)構(gòu),諸如,例如,包括命令、內(nèi)聯(lián)數(shù)據(jù)和/或引用的數(shù)據(jù)的結(jié)構(gòu)。
[0022]在此實(shí)施例中,主機(jī)20和/或其組件的結(jié)構(gòu)和/或操作可以至少部分地與客戶端10和/或客戶端10的組件的結(jié)構(gòu)和/或操作類似或相同??闪磉x地,在不偏離此實(shí)施例的情況下,主機(jī)20和/或其組件的結(jié)構(gòu)和/或操作可以至少部分地不同于客戶端10和/或客戶端10的組件的結(jié)構(gòu)和/或操作。
[0023]I/O控制器120和/或RNIC210可以通過一個(gè)或多個(gè)I/O操作(例如,一個(gè)或多個(gè)I/O操作130和/或132),通過網(wǎng)絡(luò)50,與客戶端10交換數(shù)據(jù)和/或命令。在此實(shí)施例中,此交換和/或這些一個(gè)或多個(gè)I/O操作可以根據(jù)可以符合和/或兼容于RDMA(例如,iffARP)協(xié)議、以太網(wǎng)協(xié)議,和/或傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議的一個(gè)或多個(gè)協(xié)議。例如,RDMA協(xié)議可以符合和/或兼容于Recio等人所著的“An RDMA ProtocolSpecification”(Internet Draft Specification,Internet Engineering Task Force (IETF),2002 年 10月21日)。還例如,以太網(wǎng)協(xié)議可以符合和/或兼容于電氣與電子工程師學(xué)會(huì),Inc.(IEEE)標(biāo)準(zhǔn)802.3-2008,2008年12月26日。另外,例如,TCP/IP協(xié)議可以符合和/或兼容于在1981年9月發(fā)布的因特網(wǎng)工程任務(wù)組(IETF)征求意見資料(RFC)791和793中所描述的協(xié)議。許多不同的,額外的,和/或其他協(xié)議可以用于這樣的數(shù)據(jù)和/或命令交換,而不會(huì)偏離此實(shí)施例(例如,如上所述的,相關(guān)的,和/或其他協(xié)議的以前的和/或以后開發(fā)的版本)。
[0024]在操作中,電路118 (例如,一個(gè)或多個(gè)HPC12A和/或由一個(gè)或多個(gè)HPC12A執(zhí)行的一個(gè)或多個(gè)驅(qū)動(dòng)程序33)可以執(zhí)行一個(gè)或多個(gè)RDMA I/O操作130和/或132,這些RDMAI/O操作130和/或132可以以繞過和/或獨(dú)立于(I)主機(jī)20中的0S31和/或(2)可以駐留在客戶端10中和/或在客戶端10中執(zhí)行的未示出的OS的參與的方式,從控制器120和/或RNIC210向客戶端10中的存儲(chǔ)器(未示出)傳輸和寫入數(shù)據(jù)(例如,數(shù)據(jù)199A)。為了促進(jìn),發(fā)起,和/或執(zhí)行這些一個(gè)或多個(gè)操作130和/或132,電路118 (例如,一個(gè)或多個(gè)HPC12A和/或由一個(gè)或多個(gè)HPC12A執(zhí)行的一個(gè)或多個(gè)驅(qū)動(dòng)程序33)可以從系統(tǒng)存儲(chǔ)器21向I/O控制器120和/或RNIC210中的存儲(chǔ)器空間60寫入一個(gè)或多個(gè)消息190A。如圖2所示,一個(gè)或多個(gè)消息190A可以包括數(shù)據(jù)199A和一個(gè)或多個(gè)描述符181A。數(shù)據(jù)199A可以被包括在一個(gè)或多個(gè)描述符181A中。在此將一個(gè)或多個(gè)消息190A寫入到存儲(chǔ)器空間60之后(或至少部分地同時(shí)),電路118(例如,一個(gè)或多個(gè)HPC12A和/或由一個(gè)或多個(gè)HPC12A執(zhí)行的一個(gè)或多個(gè)驅(qū)動(dòng)程序33)可以向I/O控制器120和/或RNIC210發(fā)出信號(hào),發(fā)生了此寫入。在此實(shí)施例中,此信號(hào)發(fā)出可以通過任何機(jī)制來完成和/或包括任何機(jī)制,諸如,例如,向存儲(chǔ)器空間60中的一個(gè)或多個(gè)位置208寫入一個(gè)或多個(gè)門鈴消息212A。在此實(shí)施例中,此信號(hào)發(fā)出可以為了和/或可以導(dǎo)致清空一個(gè)或多個(gè)寫入組合的緩沖器,和/或可以使數(shù)據(jù)對(duì)I/O控制器120可用。在此實(shí)施例中,一個(gè)或多個(gè)位置208可以是或包括一個(gè)或多個(gè)至少部分地與控制器120和/或RNIC210相關(guān)聯(lián)的門鈴。
[0025]例如,在此實(shí)施例中,一個(gè)或多個(gè)消息190A的這種寫入可以使用單個(gè)寫入操作202A (例如,涉及主機(jī)20中的未示出的主機(jī)總線系統(tǒng)的一個(gè)或多個(gè)寫入相關(guān)的事務(wù))來實(shí)施,以將涉及(例如,在此情況下,來自)與一個(gè)或多個(gè)HPC12A相關(guān)聯(lián)的一個(gè)或多個(gè)寫入組合的緩沖器(WCB,例如,WCB214A)的數(shù)據(jù)和/或至少部分地由一個(gè)或多個(gè)HPC12A所生成的數(shù)據(jù)寫入到存儲(chǔ)器空間60中的一個(gè)或多個(gè)位置206。例如,WCB214A可以至少部分地存儲(chǔ)可以包含在一個(gè)或多個(gè)消息190A中的數(shù)據(jù)199A,一個(gè)或多個(gè)消息190A可以使用寫入操作202A被寫入到一個(gè)或多個(gè)位置206。在此實(shí)施例中,WCB可以至少臨時(shí)存儲(chǔ)收集到的和/或組合的數(shù)據(jù),例如,用于通過一個(gè)或多個(gè)猝發(fā)模式事務(wù)和/或總線操作來進(jìn)行傳輸。[0026]在將一個(gè)或多個(gè)消息190A寫入到一個(gè)或多個(gè)位置206之前,電路118 (例如,一個(gè)或多個(gè)HPC12A和/或由一個(gè)或多個(gè)HPC12A執(zhí)行的一個(gè)或多個(gè)驅(qū)動(dòng)程序33)可以將一個(gè)或多個(gè)隊(duì)列元素(QE,例如,一個(gè)或多個(gè)發(fā)送隊(duì)列元素(SQE) 196A)寫入(參見圖6中的操作602)到一個(gè)或多個(gè)隊(duì)列(例如,一個(gè)或多個(gè)SQ126)。在下列情況下:(I) I/O控制器120和/或RNIC210至少部分地丟棄一個(gè)或多個(gè)消息190A和/或(2)數(shù)據(jù)199A將從I/O控制器120和/或RNIC210重新傳輸?shù)娇蛻舳?0,一個(gè)或多個(gè)SQE196A可以至少部分地請(qǐng)求由控制器120和/或RNIC210執(zhí)行一個(gè)或多個(gè)I/O操作130。在此實(shí)施例中,在寫入到一個(gè)或多個(gè)位置206時(shí),一個(gè)或多個(gè)消息190A可以至少部分地請(qǐng)求由控制器120和/或RNIC210執(zhí)行一個(gè)或多個(gè)I/O操作132,這些I/O操作132可以至少部分地對(duì)應(yīng)于和/或等同于(例如,本質(zhì)上和/或結(jié)果)可以至少部分地由一個(gè)或多個(gè)SQE196A在一個(gè)或多個(gè)SQE196A被寫入到SQ126時(shí)請(qǐng)求的一個(gè)或多個(gè)I/O操作130。相應(yīng)地,在此實(shí)施例中,一個(gè)或多個(gè)消息190A可以至少部分地對(duì)應(yīng)于和/或等同于一個(gè)或多個(gè)SQE196A。
[0027]為了用信號(hào)通知控制器120和/或RNIC210,一個(gè)或多個(gè)消息190A已經(jīng)被(或正在被同時(shí))寫入到存儲(chǔ)器空間60中的一個(gè)或多個(gè)位置206,電路118(例如,一個(gè)或多個(gè)HPC12A和/或由一個(gè)或多個(gè)HPC12A執(zhí)行的一個(gè)或多個(gè)驅(qū)動(dòng)程序33)可以通過一個(gè)或多個(gè)寫入操作204A(參見圖6中的操作604)將一個(gè)或多個(gè)門鈴消息212A寫入到一個(gè)或多個(gè)位置208。這些一個(gè)或多個(gè)寫入操作204A可以涉及主機(jī)20中的未示出的主機(jī)總線系統(tǒng)的一個(gè)或多個(gè)寫入相關(guān)的事務(wù),并可以構(gòu)成與一個(gè)或多個(gè)位置208相關(guān)聯(lián)的一個(gè)或多個(gè)門鈴的響鈴。在被信號(hào)通知一個(gè)或多個(gè)消息190A已經(jīng)被寫入到存儲(chǔ)器空間60中的一個(gè)或多個(gè)位置206之后,控制器120和/或RNIC210可以判斷控制器120和/或RNIC210中是否有足夠的資源同時(shí)存在和/或可用,以允許執(zhí)行一個(gè)或多個(gè)I/O操作132??刂破?20和/或RNIC210可以至少部分地基于包含在一個(gè)或多個(gè)跟蹤表151中的信息和/或如果一個(gè)或多個(gè)消息190A中的一個(gè)或多個(gè)描述符181A包含的和/或指出的一個(gè)或多個(gè)RDMA命令將被執(zhí)行而可預(yù)期使用的資源,來作出此判斷。在此實(shí)施例中,資源可以是,涉及,指定,和/或包括一個(gè)或多個(gè)物理、邏輯,和/或虛擬(I)能力、設(shè)施、功能、操作、電路的部分,和/或進(jìn)程,和/或(2)使用這樣的能力、設(shè)施、功能、操作,電路的部分,和/或進(jìn)程的許可和/或調(diào)度。如果控制器120和/或RNIC210判斷沒有足夠的資源存在和/或目前可用以允許控制器120和/或RNIC210能夠?qū)嵤┮粋€(gè)或多個(gè)操作132,則控制器120和/或RNIC210可以丟棄一個(gè)或多個(gè)消息190A。在此實(shí)施例中,實(shí)體的丟棄可以包括實(shí)體的刪除和/或改寫,和/或指出實(shí)體可用和/或有義務(wù)被刪除和/或覆寫??刂破?20和/或RNIC210可以在一個(gè)或多個(gè)表151中至少部分地指定和/或跟蹤控制器120和/或RNIC210的一個(gè)或多個(gè)資源的分配,以實(shí)施被請(qǐng)求由控制器120和/或RNIC210實(shí)施的一個(gè)或多個(gè)操作132 (和/或其他RDMA操作)。如果一個(gè)或多個(gè)消息190A被控制器120和/或RNIC210丟棄,則控制器120和/或RNIC210可以稍后執(zhí)行一個(gè)或多個(gè)對(duì)應(yīng)的操作132,至少部分地作為對(duì)一個(gè)或多個(gè)SQE196A的隨后處理的結(jié)果。
[0028]相反,如果控制器120和/或RNIC210判斷有足夠的這樣的資源存在以允許一個(gè)或多個(gè)操作132被實(shí)施,那么,控制器120和/或RNIC210可以執(zhí)行由一個(gè)或多個(gè)消息190A請(qǐng)求的一個(gè)或多個(gè)操作132。在此情況下,控制器120和/或RNIC210可以不執(zhí)行由一個(gè)或多個(gè)SQE196A請(qǐng)求的一個(gè)或多個(gè)操作130,除非由客戶端10以后請(qǐng)求數(shù)據(jù)199A的重新傳輸(例如,在數(shù)據(jù)199A通過一個(gè)或多個(gè)操作132向客戶端10的傳輸中發(fā)生錯(cuò)誤的情況下和/或在由客戶端10接收到這樣的數(shù)據(jù)199A時(shí))。
[0029]例如,在操作中,在此實(shí)施例中,HPC12A...12N可以執(zhí)行指令,這些指令可以至少部分地導(dǎo)致HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33至少部分地同時(shí)從存儲(chǔ)器21向存儲(chǔ)器空間60寫入多個(gè)相應(yīng)的消息190A...190N。這些消息181N...190N中的每一個(gè)都可以包括相應(yīng)的數(shù)據(jù)199A...199N和相應(yīng)的描述符181A...181N。相應(yīng)的數(shù)據(jù)199A...199N可以包含在相應(yīng)的描述符181A...181N中,而相應(yīng)的描述符181A...181N包含在相應(yīng)的消息190A...190N中。相應(yīng)的描述符181A...181N和/或消息190A...190N可以請(qǐng)求I/O控制器120和/或NIC210執(zhí)行相應(yīng)的RDMA事務(wù)和/或操作,以將相應(yīng)的數(shù)據(jù)199A...199N傳輸?shù)胶蛯懭氲娇蛻舳?0中未示出的存儲(chǔ)器。消息190A...190N的這種并行寫入可以使用相應(yīng)的,單寫入操作202A...202N (例如,涉及主機(jī)20中的未示出的主機(jī)總線系統(tǒng)的相應(yīng)的寫入相關(guān)的事務(wù))來實(shí)施,以將涉及(例如,在此情況下,來自)與(例如,相應(yīng)的)HPC12A...12N相關(guān)聯(lián)的相應(yīng)的WCB214A...214N的相應(yīng)的數(shù)據(jù)和/或至少部分地由(例如,相應(yīng)的)HPC12A...12N所生成的相應(yīng)的數(shù)據(jù)寫入到存儲(chǔ)器空間60中的一個(gè)或多個(gè)相應(yīng)的位置206。例如,WCB214N可以至少部分地存儲(chǔ)可以包含在一個(gè)或多個(gè)消息190N中的數(shù)據(jù)199N,且一個(gè)或多個(gè)消息190N可以使用寫入操作202N被寫入到一個(gè)或多個(gè)相應(yīng)的位置206。
[0030]在將消息190A...190N寫入到一個(gè)或多個(gè)相應(yīng)的位置206之前,HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33可以將相應(yīng)的SQE196A...196N寫入到SQ126。在下列情況下:
(I)由I/O控制器120至少部分地相應(yīng)的丟棄相應(yīng)的消息181N...190N和/或(2)相應(yīng)的數(shù)據(jù)199A...199N從控制器120和/或RNIC210相應(yīng)的重新傳輸?shù)娇蛻舳?0,SQE196A...196N可以至少部分地請(qǐng)求由控制器120和/或RNIC210執(zhí)行相應(yīng)的RDMA I/O操作。在此實(shí)施例中,在寫入到一個(gè)或多個(gè)相應(yīng)的位置206時(shí),相應(yīng)的消息190A...190N可以至少部分地請(qǐng)求由控制器120和/或RNIC210執(zhí)行一個(gè)或多個(gè)相應(yīng)的RDMA I/O操作,這些I/O操作可以至少部分地對(duì)應(yīng)于和/或等同于(例如,本質(zhì)上和/或結(jié)果)可以至少部分地由相應(yīng)的SQE196A...196N在相應(yīng)的SQE196A...196N被寫入到SQ126時(shí)請(qǐng)求的一個(gè)或多個(gè)相應(yīng)的RDMAI/0操作130。相應(yīng)地,在此實(shí)施例中,相應(yīng)的消息190A...190N可以至少部分地對(duì)應(yīng)于和/或等同于相應(yīng)的SQE196A...196N。
[0031]為了用信號(hào)通知控制器120和/或RNIC210,相應(yīng)的消息190A...190N已經(jīng)被寫入到存儲(chǔ)器空間60中的一個(gè)或多個(gè)相應(yīng)的位置206,HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33可以通過相應(yīng)的寫入操作204A...204N,將相應(yīng)的門鈴消息212A...212N寫入到一個(gè)或多個(gè)相應(yīng)的位置208。這些相應(yīng)的寫入操作204A...204N可以涉及主機(jī)20中的未示出的主機(jī)總線系統(tǒng)的相應(yīng)的寫入相關(guān)的事務(wù),并可以構(gòu)成與一個(gè)或多個(gè)相應(yīng)的位置208相關(guān)聯(lián)的相應(yīng)門鈴的相應(yīng)響鈴。被用信號(hào)通知相應(yīng)的消息190A...190N已經(jīng)被寫入到存儲(chǔ)器空間60中的一個(gè)或多個(gè)相應(yīng)的位置206 (至少部分地)之后,同時(shí),和/或之前,控制器120和/或RNIC210可以作出是否有足夠的相應(yīng)資源在控制器120和/或RNIC210中同時(shí)存在和/或可用(例如,在相應(yīng)的門鈴響鈴的相應(yīng)的時(shí)間或附近)的相應(yīng)判斷,以允許由相應(yīng)的描述符181A...181N和/或相應(yīng)的消息190A...190N請(qǐng)求的相應(yīng)的RDMA I/O操作被執(zhí)行??刂破?20和/或RNIC210可以至少部分地基于包含在一個(gè)或多個(gè)跟蹤表151中的信息和/或如果相應(yīng)的描述符181A...181N包含的和/或指出的相應(yīng)RDMA命令將被執(zhí)行而可預(yù)期使用的相應(yīng)資源,來作出這些相應(yīng)的判斷(例如,在相應(yīng)的門鈴響鈴的相應(yīng)的時(shí)間或附近)。
[0032]如果控制器120和/或RNIC210判斷沒有足夠的相應(yīng)的資源存在和/或可用于執(zhí)行相應(yīng)的消息和/或相應(yīng)的描述符,則控制器120和/或RNIC210可以丟棄該相應(yīng)的消息和/或相應(yīng)的描述符。控制器120和/或RNIC210可以在一個(gè)或多個(gè)表151中至少部分地指派和/或跟蹤控制器120和/或RNIC210的相應(yīng)的資源的分配,以實(shí)施被相應(yīng)的消息和/或相應(yīng)的描述符請(qǐng)求由控制器120和/或RNIC210實(shí)施的相應(yīng)的RDMA操作(和/或其他操作)。如果相應(yīng)的消息被控制器120和/或RNIC210丟棄,則控制器120和/或RNIC210可以以后執(zhí)行由SQ126中的相應(yīng)的對(duì)應(yīng)SQE請(qǐng)求的一個(gè)或多個(gè)對(duì)應(yīng)的RDMA操作,至少部分地作為對(duì)該相應(yīng)的對(duì)應(yīng)SQE的隨后處理的結(jié)果。
[0033]相反,如果控制器120和/或RNIC210判斷有足夠的相應(yīng)的資源存在用于執(zhí)行相應(yīng)的消息和/或相應(yīng)的描述符,則控制器120和/或RNIC210可以執(zhí)行由該相應(yīng)的消息和/或相應(yīng)的描述符請(qǐng)求的一個(gè)或多個(gè)相應(yīng)的RDMA操作。在此情況下,控制器120和/或RNIC210可以不執(zhí)行由SQ126中的相應(yīng)的對(duì)應(yīng)SQE請(qǐng)求的一個(gè)或多個(gè)相應(yīng)的對(duì)應(yīng)RDMA操作,除非由客戶端10請(qǐng)求隨后重新傳輸與該相應(yīng)的對(duì)應(yīng)SQE相關(guān)聯(lián)的相應(yīng)的數(shù)據(jù)(例如,在涉及該相應(yīng)的數(shù)據(jù)的傳輸和/或接收錯(cuò)誤的情況下)。
[0034]在此實(shí)施例中,消息190A...190N可以只對(duì)應(yīng)于SQ126中的SQE的子集??傆?jì)起來,在取總和時(shí),此子集可以消耗比可以由SQ126中的SQE請(qǐng)求的較少的存儲(chǔ)器和/或請(qǐng)求和/或涉及較少的總的RDMA I/O相關(guān)的操作。有利地,存儲(chǔ)器空間60的大小可以縮小(例如,與在SQ126中的每個(gè)SQE在SQ126中具有對(duì)應(yīng)的相應(yīng)SQE的情況下可能要求的大小相比)。另選地或另外地,在此實(shí)施例中,存儲(chǔ)器空間60的大小可以至少部分地由和/或參考可以被給予同時(shí)對(duì)存儲(chǔ)器空間60的寫訪問的軟件實(shí)體(例如,鏈接進(jìn)程)的數(shù)量定義的。有利地,這可以允許存儲(chǔ)器空間60的大小涉及希望支持的處理速率,和/或可以允許存儲(chǔ)器60的大小基本上獨(dú)立于發(fā)送隊(duì)列的數(shù)量和/或大小。相應(yīng)的SQE196A...196N可以包括相應(yīng)的指示110A...110N,指出相應(yīng)的消息181N...190N是否將被寫入(例如,由HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33)到存儲(chǔ)器空間60中的至少部分地對(duì)應(yīng)于相應(yīng)的SQE196A...196N的一個(gè)或多個(gè)相應(yīng)的位置206。例如,如果一個(gè)或多個(gè)消息(例如,一個(gè)或多個(gè)消息190A)將被寫入到存儲(chǔ)器60中的至少部分地對(duì)應(yīng)于SQ126中的一個(gè)或多個(gè)SQE (例如,一個(gè)或多個(gè)SQE196A)的一個(gè)或多個(gè)位置206,那么,一個(gè)或多個(gè)指示IlOA (例如,包括在那些一個(gè)或多個(gè)SQE196A中和/或與之相關(guān)聯(lián))可以如此指出。相反,如果沒有消息將被寫入到存儲(chǔ)器60中的至少部分地對(duì)應(yīng)于SQ126中的特定SQE (例如,一個(gè)或多個(gè)SQE196B)的一個(gè)或多個(gè)位置206,那么,一個(gè)或多個(gè)指示IlOB (例如,包括在那些一個(gè)或多個(gè)SQE196B中和/或與之相關(guān)聯(lián))可以如此指出。
[0035]在控制器120和/或RNIC210完成相應(yīng)的請(qǐng)求的RDMA I/O操作之后,控制器120和/或RNIC210向一個(gè)或多個(gè)驅(qū)動(dòng)程序33和/或HPC12A...12N中的一個(gè)或多個(gè)提供相應(yīng)的完成消息。相應(yīng)的完成消息可以包括相應(yīng)的指示,指出相應(yīng)的RDMA I/O操作是否由對(duì)應(yīng)于存儲(chǔ)器空間60中的已經(jīng)丟棄的相應(yīng)的消息的相應(yīng)的SQE的執(zhí)行所產(chǎn)生。此信息可以在CQ302中以相應(yīng)的完成隊(duì)列元素(CQE) 124A...124N的形式的被跟蹤(例如,由HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33)。例如,相應(yīng)的CQE124A...124N可以包括可以指出這樣的信息的相應(yīng)的指示165A...165N。例如,如果與一個(gè)或多個(gè)CQE124B相關(guān)聯(lián)的一個(gè)或多個(gè)相應(yīng)的I/O操作是由與已被寫入到存儲(chǔ)器空間60中的但是被控制器120和/或RNIC210丟棄的一個(gè)或多個(gè)相應(yīng)的消息(例如,一個(gè)或多個(gè)消息190B)對(duì)應(yīng)的一個(gè)或多個(gè)SQE (例如,一個(gè)或多個(gè)SQE196B)的執(zhí)行產(chǎn)生的,那么,一個(gè)或多個(gè)指示符165B可以如此指出。相反,如果沒有發(fā)生這樣的丟棄,那么,一個(gè)或多個(gè)指示符165B可以如此指出。控制器120和/或RNIC210可以至少部分地基于控制器120和/或RNIC210是否執(zhí)行相應(yīng)的SQE (例如,SQE196A),該SQE包括指出對(duì)應(yīng)的消息(例如,消息190A)已經(jīng)被寫入到存儲(chǔ)器空間60,但是沒有執(zhí)行的指示,至少部分地判斷是否發(fā)生了這樣的丟棄。在此情況下,假設(shè)對(duì)應(yīng)的消息190A以前被控制器120和/或RNIC210丟棄,并且控制器120和/或RNIC210可以判斷發(fā)生了這樣的丟棄是合乎邏輯的。
[0036]在此實(shí)施例中,默認(rèn)條件(取決于此處所描述的約束)可以是,HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33可以試圖向存儲(chǔ)器空間60寫入盡可能多的對(duì)應(yīng)于SQE196A...196N的消息。相應(yīng)地,HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33可以繼續(xù)試圖將隨后的消息190B (例如,在寫入一個(gè)或多個(gè)初始消息190A之后)寫入到存儲(chǔ)器空間60,除非和/或直到(I)控制器120和/或RNIC210已經(jīng)丟棄了一個(gè)或多個(gè)消息,和/或(2)在一個(gè)或多個(gè)位置206沒有額外的空間可用于接收任何額外的消息。在條件(I)和/或(2)發(fā)生之后,HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序33可以在SQ126變空之后恢復(fù)隨后的消息寫入。這可以,例如,基于SQ126中是否存在任何相應(yīng)的SQE不對(duì)應(yīng)于CQ302中的相應(yīng)的CQE來確定。有利地,在此實(shí)施例中,向存儲(chǔ)器空間60直接推送消息190A...190N的此機(jī)會(huì)性方法可以允許寫入組合用于各種不同的使用模型、通信流量和/或環(huán)境中,而不會(huì)降低效率或不合乎需要地增大復(fù)雜性。進(jìn)一步有利地,在此實(shí)施例中,一方面由HPC12A...12N和/或一個(gè)或多個(gè)驅(qū)動(dòng)程序另一方面通過控制器120和/或RNIC210對(duì)相應(yīng)的操作集的相應(yīng)的執(zhí)行可以基本上彼此獨(dú)立地進(jìn)行。有利地,這兩個(gè)相應(yīng)的操作集的這種實(shí)質(zhì)性的分離可以允許每一個(gè)相應(yīng)的集作出基本上獨(dú)立的轉(zhuǎn)發(fā)處理過程,而不會(huì)停止主機(jī)20中的未示出的系統(tǒng)總線,并且不會(huì)引入實(shí)質(zhì)性的硬件-軟件流量控制問題。進(jìn)一步有利地,軟件進(jìn)程可以獨(dú)立地向存儲(chǔ)器空間60寫入消息,無需在這方面協(xié)調(diào)它們的動(dòng)作。
[0037]在此實(shí)施例中,進(jìn)程121A...121N可以至少部分地生成將通過RDMA操作傳輸?shù)娇蛻舳?0的數(shù)據(jù)和/或可以啟動(dòng)生成對(duì)這樣的數(shù)據(jù)傳輸?shù)恼?qǐng)求。相應(yīng)地,為了促進(jìn)由進(jìn)程121A...121N對(duì)存儲(chǔ)器空間60的安全和/或獨(dú)立的訪問,進(jìn)程121A...121N可以屬于不同的相應(yīng)的安全域404A...404N (參見圖4)。例如,存儲(chǔ)器空間60可以包括應(yīng)用程序進(jìn)程121A...121N可以被指派到和/或映射到的多個(gè)相應(yīng)的頁402A...402N。在此配置中,沒有屬于不同的相應(yīng)的安全域(例如,分別是域404A和404B)的兩個(gè)相應(yīng)的進(jìn)程(例如,進(jìn)程121A和121B)可以共享頁402A...402N中的單個(gè)的相應(yīng)的一個(gè)頁,然而,屬于同一個(gè)安全域的進(jìn)程可以共享一個(gè)或多個(gè)這樣的頁。如此,例如,單個(gè)相應(yīng)的頁(例如,頁402A)可不被映射到兩個(gè)不同的相應(yīng)的進(jìn)程(例如,兩者都映射到進(jìn)程121A和121B)。在此實(shí)施例中,由相應(yīng)的進(jìn)程所生成的相應(yīng)的數(shù)據(jù),和/或其生成是由相應(yīng)的進(jìn)程發(fā)起的一個(gè)或多個(gè)相應(yīng)的消息,將只被寫入到屬于相應(yīng)的進(jìn)程和/或其相應(yīng)的安全域(和/或與它們相關(guān)聯(lián)的)一個(gè)或多個(gè)相應(yīng)的頁。例如,如果數(shù)據(jù)199A是由進(jìn)程121A所生成的,和/或一個(gè)或多個(gè)消息181N的生成至少部分地是由進(jìn)程121A發(fā)起的,那么數(shù)據(jù)199A和/或一個(gè)或多個(gè)消息190A可以只被寫入到存儲(chǔ)器60中的屬于進(jìn)程121A和/或安全域404A (和/或與它們相關(guān)聯(lián)的)一個(gè)或多個(gè)頁402A,而不寫入到其他和/或額外的頁(例如,頁402B...402N)。這樣的對(duì)指派的頁的安全訪問可以至少部分地通過使用一個(gè)或多個(gè)相應(yīng)的安全引用和/或到相應(yīng)的頁(這些頁可以與,例如,與指派給相應(yīng)的頁的相應(yīng)的進(jìn)程相關(guān)聯(lián)的相應(yīng)的隊(duì)列對(duì)(QP)相關(guān)聯(lián))的句柄來促進(jìn)。
[0038]另外,頁中的一個(gè)或多個(gè)(例如,402A)可以包括多個(gè)部分414A...414N。這些相應(yīng)的部分中的每一個(gè)(例如,一個(gè)或多個(gè)部分414A)都可以接納一個(gè)或多個(gè)要被寫入到這些一個(gè)或多個(gè)相應(yīng)的部分414A的相應(yīng)的消息(例如,一個(gè)或多個(gè)消息190A)。在此實(shí)施例中,這些一個(gè)或多個(gè)消息190A可以對(duì)應(yīng)于,例如,整個(gè)相應(yīng)的隊(duì)列元素(例如,SQE196A)。有利地,通過將一個(gè)或多個(gè)頁402A分割為多個(gè)這樣的部分414A...414N,多個(gè)消息可以(例如,同時(shí))被寫入到相同的一個(gè)或多個(gè)頁402A,而不獲取一個(gè)或多個(gè)頁402A上的鎖。有利地,按此實(shí)施例的方式使用多個(gè)安全域可以允許多個(gè)并發(fā)流和/或可以使多個(gè)軟件實(shí)體能夠同時(shí)向存儲(chǔ)器空間60寫入,無需協(xié)調(diào)它們對(duì)存儲(chǔ)器空間60的訪問。
[0039]在此實(shí)施例中,安全域可以包括一個(gè)或多個(gè)可以與一個(gè)或多個(gè)實(shí)體相關(guān)聯(lián)和/或?qū)儆谒鼈兊奶貦?quán)和/或權(quán)限,所述一個(gè)或多個(gè)實(shí)體可以屬于安全域,與安全域相關(guān)聯(lián),和/或被分派給安全域。也在此實(shí)施例中,存儲(chǔ)器的頁可以包括一個(gè)或多個(gè)相鄰的和/或不相鄰的存儲(chǔ)器位置。
[0040]控制器120和/或RNIC210可以使用一個(gè)或多個(gè)跟蹤表151,來至少部分地跟蹤控制器120和/或RNIC210的一個(gè)或多個(gè)資源(例如,通過圖1中的元件141象征性地示出的)的一個(gè)或多個(gè)分派,以實(shí)施可以至少部分地通過一個(gè)或多個(gè)消息(例如,一個(gè)或多個(gè)消息190A)請(qǐng)求的一個(gè)或多個(gè)I/O操作(通過圖1中的元件133象征性地示出的)。在此實(shí)施例中,表可以包括一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)和/或元件,包括,但不僅限于,本質(zhì)上可以是表格的那些。一個(gè)或多個(gè)表151可以充分地大,以允許對(duì)多個(gè)消息190A...190N的正進(jìn)行的處理的并行跟蹤。一個(gè)或多個(gè)表151中的條目可以通過將下列各項(xiàng)與傳入的消息相關(guān)聯(lián),來允許跟蹤寫入到存儲(chǔ)器空間60中的每一個(gè)傳入的消息:(I)其頁索引(例如,指定它被寫入到其中的頁402A...402N中的哪一個(gè)),(2)索引頁內(nèi)的偏移,和/或(3)被指派執(zhí)行傳入的消息的控制器/RNIC資源。如果相關(guān)聯(lián)的消息已經(jīng)在一個(gè)或多個(gè)表151中正在被跟蹤,則可以更新可以對(duì)應(yīng)于相關(guān)聯(lián)的消息的一個(gè)或多個(gè)條目,以包括與傳入的消息相關(guān)聯(lián)的參數(shù)。相反,如果沒有這樣的相關(guān)聯(lián)的消息正在被跟蹤,則可以添加一個(gè)或多個(gè)新條目(如果存在足夠的資源),以跟蹤傳入的消息。進(jìn)一步相反,如果沒有足夠的資源存在(包括,例如,沒有足夠的跟蹤資源和/或與一個(gè)或多個(gè)表151相關(guān)聯(lián)的資源)以允許添加一個(gè)或多個(gè)這樣的新條目,那么,可以由控制器120和/或RNIC210丟棄傳入的消息。另外,控制器120和/或RNIC210可以丟棄傳入的消息(例如,消息190A),除非當(dāng)控制器120和/或RNIC210開始對(duì)消息181N的初始處理時(shí),對(duì)應(yīng)于消息190A的隊(duì)列元素(例如,SQE196A)當(dāng)前處于SQ126的頭部。有利地,這可以允許對(duì)相對(duì)于SQE196A...196N的被寫入到存儲(chǔ)器空間60的消息190A...190N的有序處理。此外,如果傳入的消息190A屬于流量控制啟用的和/或斷言的類別的通信量,則可以丟棄消息181N,以便降低存儲(chǔ)器空間60的否則可能被分配給以存儲(chǔ)屬于該類別的通信的消息的量。
[0041]也在此實(shí)施例中,可以被跟蹤和/或由控制器120和/或RNIC210指派給傳入的消息190A的資源可以包括,例如,傳輸調(diào)度額度(credits)向傳入的消息190A,數(shù)據(jù)199A,和/或操作132的分配。例如,在此實(shí)施例中,控制器120和/或RNIC210可以向預(yù)期被調(diào)度用于從主機(jī)20、控制器120和/或RNIC210傳輸?shù)娇蛻舳?0的總通信量506的子集505預(yù)先分配總的可用的傳輸額度的數(shù)量(和/或量)504的子集502 (參見圖5)。此子集502可以是至少部分地預(yù)定的,和/或可以至少部分地動(dòng)態(tài)地確定的。此子集505可以與預(yù)期由消息190A...190N的執(zhí)行所產(chǎn)生的通信量相關(guān)聯(lián)和/或與其相對(duì)應(yīng)。在由控制器120和/或RNIC210對(duì)傳入的消息190A (和/或?yàn)閷?shí)施一個(gè)或多個(gè)操作132指派的一個(gè)或多個(gè)資源)的初始處理和/或跟蹤的過程中和/或至少部分地同時(shí),控制器120和/或RNIC210可以至少部分地確定在子集502中是否存在足夠數(shù)量510的未分配的額度,以使得數(shù)據(jù)199A的傳輸(例如,通過一個(gè)或多個(gè)操作132)發(fā)生。如果控制器120和/或RNIC210判斷不存在足夠數(shù)量510的未分配的額度(例如,未分配的額度的數(shù)量不足,難以使數(shù)據(jù)199A傳輸),則控制器120和/或RNIC210可以丟棄傳入的消息190A。在此實(shí)施例中,傳輸額度可以分配、指派,指出,提供,和/或暗示至少部分地與傳輸相關(guān)聯(lián)的許可,調(diào)度和/或特權(quán)。有利地,通過適當(dāng)?shù)剡x擇子集502中的額度的數(shù)量,和/或此實(shí)施例中涉及的通信類別的帶寬和/或優(yōu)先級(jí),可以避免傳入的消息的不適當(dāng)?shù)膩G棄和/或消息處理的停止,而不會(huì)顯著地干擾發(fā)射調(diào)度的規(guī)則性。
[0042]還有利地,此實(shí)施例中的額度補(bǔ)充可以使用標(biāo)準(zhǔn)調(diào)度技術(shù)來執(zhí)行,獨(dú)立于對(duì)消息190A...190N的處理。在此實(shí)施例中,額度可以累積(例如,直到可配置的限制),如果預(yù)先分配的額度的數(shù)量低于可配置的閾值,則未示出的調(diào)度器可以請(qǐng)求額度補(bǔ)充。
[0043]在此實(shí)施例中,相應(yīng)的消息190A...190N和/或相應(yīng)的SQE196A...196N可以包括多個(gè)相應(yīng)的處理器緩存線(未示出)。HP12可以停止WCB214A...214N中的數(shù)據(jù),可以使用同步事件來清空它們。門鈴的寫入(例如,使用控制器120和/或RNIC210中的非緩存的存儲(chǔ)器)可以導(dǎo)致WCB214A...214N的清空??闪磉x地,取決于HP12的結(jié)構(gòu)和/或操作,可以不使用WCB214A...214N的清空結(jié)合這樣的停止,而不會(huì)偏離此實(shí)施例。然而,在此實(shí)施例中,使用這樣的非緩存的門鈴寫入可以允許WCB214A...214N的清空,并可以指出事務(wù)完成(例如,與清空排序和/或消息190A...190N向存儲(chǔ)器空間60的寫入一起)。也在此實(shí)施例中,雖然在圖中只示出了單個(gè)QP (例如,包括CQ302和SQ126),但是,可以使用多個(gè)相應(yīng)的QP,每一個(gè)這樣的QP都可以與可以被寫入到存儲(chǔ)器空間60的相應(yīng)的消息相關(guān)聯(lián)。
[0044]如此,實(shí)施例可以包括可以將消息從主機(jī)中的系統(tǒng)存儲(chǔ)器寫入到主機(jī)中的I/O控制器中的存儲(chǔ)器空間的電路。主機(jī)操作系統(tǒng)可以至少部分地駐留在系統(tǒng)存儲(chǔ)器中。消息可以包括數(shù)據(jù)和與數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè)描述符。數(shù)據(jù)可以被包括在至少一個(gè)描述符中。電路還可以向I/O控制器發(fā)出信號(hào),指示已經(jīng)發(fā)生了寫入。有利地,在此實(shí)施例中,在從控制器和/或RNIC向客戶端的RDMA數(shù)據(jù)傳輸中可以不涉及由主機(jī)中的控制器和/或RNIC的主機(jī)系統(tǒng)存儲(chǔ)器讀取。有利地,這可以顯著地縮小向客戶端的RDMA數(shù)據(jù)傳輸中涉及的等待時(shí)間。進(jìn)一步有利地,在此實(shí)施例中,可以動(dòng)態(tài)地管理和/或分配(例如,由RNIC硬件“在運(yùn)行時(shí)”,不用主機(jī)軟件參與)可以與這樣的消息一起使用的RNIC資源,而不會(huì)導(dǎo)致主機(jī)總線接口停止,和/或無需這樣的硬件與主機(jī)軟件的實(shí)質(zhì)協(xié)調(diào)。
[0045]在不偏離此實(shí)施例的情況下,許多其他和/或額外的修改方案、變體,和/或替代方案也是可以的。例如,雖然結(jié)合網(wǎng)絡(luò)連接、通信,和/或控制功能主要描述了 I/o控制器120,但是,另外或者可另選地,控制器120還可以包括存儲(chǔ)器(例如,存儲(chǔ)網(wǎng)絡(luò))功能和/或
與該功能一起使用。
[0046]其他變體也是可以的。例如,雖然在圖形中未示出,但是,一個(gè)或多個(gè)跟蹤表151和/或一個(gè)或多個(gè)資源141可以被至少部分地包括在未示出的專有存儲(chǔ)器中(例如,可以包括在RNIC210和/或控制器120 (例如,芯片內(nèi)和/或在本地動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器中),和/或可以可一個(gè)或多個(gè)HP12被訪問的或無法訪問)。另選地或另外地,一個(gè)或多個(gè)跟蹤表151和/或一個(gè)或多個(gè)資源141可以至少部分地被包括在存儲(chǔ)器21中,至少部分地被緩存在控制器120和/或RNIC210中。更進(jìn)一步地,另選地或另外地,為了有利地允許保留發(fā)送隊(duì)列元素的預(yù)期處理順序,只有在給定消息當(dāng)前處于消息的對(duì)應(yīng)的發(fā)送隊(duì)列的頭部的情況下,RNIC210才可以處理該消息。
[0047]還存在許多其他變體。相應(yīng)地,此實(shí)施例應(yīng)該被廣泛地視為包含所有這樣的替代方案、修改方案,以及變體。
【權(quán)利要求】
1.一種設(shè)備,包括: 用于執(zhí)行以下操作的電路: 將消息從主機(jī)中的系統(tǒng)存儲(chǔ)器寫入到所述主機(jī)中的輸入/輸出(I/O)控制器中的存儲(chǔ)器空間,主機(jī)操作系統(tǒng)到至少部分地駐留在所述系統(tǒng)存儲(chǔ)器中,所述消息包括數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè)描述符,所述數(shù)據(jù)被包括在所述至少一個(gè)描述符中;以及 向所述I/o控制器發(fā)出信號(hào),指出已經(jīng)發(fā)生了寫入。
2.如權(quán)利要求1所述的設(shè)備,其特征在于: 使用涉及與主機(jī)處理器核相關(guān)聯(lián)的寫入組合的緩沖器的單個(gè)寫入操作,實(shí)施所述消息向所述存儲(chǔ)器空間的寫入;以及 所述電路還在所述消息的所述寫入之前,向隊(duì)列中寫入隊(duì)列元素,所述隊(duì)列元素至少部分地請(qǐng)求在由所述I/o控制器丟棄所述消息的情況下,由所述I/O控制器執(zhí)行涉及所述數(shù)據(jù)的I/o操作,所述I/O操作對(duì)應(yīng)于至少部分地通過向所述存儲(chǔ)器空間寫入所述消息來請(qǐng)求的另一個(gè)I/o操作。
3.如權(quán)利要求1所述的設(shè)備,其特征在于: 所述主機(jī)包括執(zhí)行指令的主機(jī)處理器核,所述指令至少部分地導(dǎo)致多個(gè)相應(yīng)的消息至少部分地被同時(shí)寫入到所述存儲(chǔ)器空間,所述相應(yīng)的消息中的每一消息都包括相應(yīng)的數(shù)據(jù)以及與所述相應(yīng)的數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符,所述相應(yīng)的數(shù)據(jù)被包括在所述相應(yīng)的描述符中;以及 所述I/o控制器包括遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)網(wǎng)絡(luò)接口控制器(NIC),所述相應(yīng)的消息是請(qǐng)求由所述ROMANIC ·(RNIC)執(zhí)行相應(yīng)的RDMA事務(wù)。
4.如權(quán)利要求1所述的設(shè)備,其特征在于: 所述電路還在所述消息向所述存儲(chǔ)器空間的所述寫入之前,向發(fā)送隊(duì)列中寫入隊(duì)列元素,所述隊(duì)列元素至少部分地請(qǐng)求在發(fā)生下列兩項(xiàng)中的任一項(xiàng)的情況下:(1)由所述I/O控制器丟棄所述消息以及(2)所述數(shù)據(jù)的重新傳輸,由所述I/O控制器執(zhí)行涉及所述數(shù)據(jù)的I/O操作;以及 所述發(fā)送隊(duì)列包括多個(gè)元素,所述發(fā)送隊(duì)列中的所述多個(gè)元素中的每一相應(yīng)的元素都包括相應(yīng)的指示,指出至少部分地對(duì)應(yīng)于所述相應(yīng)的元素的相應(yīng)的消息是否由所述電路向所述存儲(chǔ)器空間寫入,所述相應(yīng)的消息包括相應(yīng)的數(shù)據(jù)以及與所述相應(yīng)的數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符,所述相應(yīng)的描述符包括所述相應(yīng)的數(shù)據(jù)。
5.如權(quán)利要求4所述的設(shè)備,其特征在于: 所述電路繼續(xù)向所述存儲(chǔ)器空間寫入一個(gè)或多個(gè)隨后的消息,除非發(fā)生通過所述I/O控制器的丟棄; 在發(fā)生所述丟棄之后,所述電路在所述發(fā)送隊(duì)列變空之后恢復(fù)隨后的消息寫入;以及 所述發(fā)出信號(hào)包括使與所述I/o控制器相關(guān)聯(lián)的至少一個(gè)門鈴響鈴。
6.如權(quán)利要求1所述的設(shè)備,其特征在于: 應(yīng)用程序進(jìn)程也至少部分地駐留在所述主機(jī)存儲(chǔ)器中; 所述存儲(chǔ)器空間包括所述進(jìn)程將向其中映射的多個(gè)頁; 屬于不同的相應(yīng)的安全域的兩個(gè)相應(yīng)的進(jìn)程不共享所述頁中的單個(gè)相應(yīng)的一個(gè)頁;以及所述頁中的一個(gè)或多個(gè)包括多個(gè)部分,每一相應(yīng)的部分將接納要被寫入到所述相應(yīng)的部分的至少一個(gè)相應(yīng)的消息,所述至少一個(gè)相應(yīng)的消息對(duì)應(yīng)于整個(gè)相應(yīng)的隊(duì)列元素,并包括相應(yīng)的數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符。
7.如權(quán)利要求1所述的設(shè)備,其特征在于: 所述I/o控制器將至少部分地跟蹤所述I/O控制器的一個(gè)或多個(gè)資源的分派,以實(shí)施至少部分地由所述消息請(qǐng)求的一個(gè)或多個(gè)I/o操作; 如果沒有足夠的資源存在于所述I/o控制器中,以允許所述一個(gè)或多個(gè)I/o操作被實(shí)施,則所述I/o控制器將丟棄所述消息;以及 所述I/o控制器將丟棄所述消息,除非,當(dāng)所述I/O控制器處理所述消息時(shí),對(duì)應(yīng)于所述消息的隊(duì)列元素當(dāng)前位于發(fā)送隊(duì)列的頭部,至少部分地在所述消息已經(jīng)被寫入到所述存儲(chǔ)器空間之前,所述隊(duì)列元素已經(jīng)被寫入到所述隊(duì)列。
8.如權(quán)利要求7所述的設(shè)備,其特征在于: 所述一個(gè)或多個(gè)I/O操作包括所述數(shù)據(jù)的傳輸; 所述I/o控制器將總的可用傳輸額度數(shù)量的子集分配到總通信量的子集,所述總通信量的所述子集至少部分地與所述數(shù)據(jù)的所述傳輸相關(guān)聯(lián); 所述I/o控制器將至少部分地與對(duì)所述一個(gè)或多個(gè)資源的初始跟蹤同時(shí)確定在傳輸額度的總數(shù)的所述子集中是否存在足夠數(shù)量的未分配的額度,以允許傳輸;以及 如果所述I/o控制器判斷不存在所述足夠數(shù)量的未分配的額度,則所述I/O控制器將丟棄所述消息。
9.一種方法,包括: 由電路將消息從主機(jī)中的系統(tǒng)存儲(chǔ)器寫入到主機(jī)中的輸入/輸出(I/o)控制器中的存儲(chǔ)器空間,主機(jī)操作系統(tǒng)至少部分地駐留在所述系統(tǒng)存儲(chǔ)器中,所述消息包括數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè)描述符,所述數(shù)據(jù)被包括在所述至少一個(gè)描述符中;以及 由所述電路向所述I/o控制器發(fā)出信號(hào),指出已經(jīng)發(fā)生了所述寫入。
10.如權(quán)利要求9所述的方法,其特征在于: 使用涉及與主機(jī)處理器核相關(guān)聯(lián)的寫入組合的緩沖器的單個(gè)寫入操作,實(shí)施所述消息向所述存儲(chǔ)器空間的寫入;以及 所述電路還在所述消息的所述寫入之前,向隊(duì)列中寫入隊(duì)列元素,所述隊(duì)列元素至少部分地請(qǐng)求在由所述I/o控制器丟棄所述消息的情況下,由所述I/O控制器執(zhí)行涉及所述數(shù)據(jù)的I/o操作,所述I/O操作對(duì)應(yīng)于至少部分地通過向所述存儲(chǔ)器空間寫入所述消息來請(qǐng)求的另一個(gè)I/o操作。
11.如權(quán)利要求9所述的方法,其特征在于: 所述主機(jī)包括執(zhí)行指令的主機(jī)處理器核,所述指令至少部分地導(dǎo)致多個(gè)相應(yīng)的消息至少部分地被同時(shí)寫入到所述存儲(chǔ)器空間,所述相應(yīng)的消息中的每一消息都包括相應(yīng)的數(shù)據(jù)以及與所述相應(yīng)的數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符,所述相應(yīng)的數(shù)據(jù)被包括在所述相應(yīng)的描述符中;以及 所述I/o控制器包括遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)網(wǎng)絡(luò)接口控制器(NIC),所述相應(yīng)的消息請(qǐng)求由所述ROMANIC (RNIC)執(zhí)行相應(yīng)的RDMA事務(wù)。
12.如權(quán)利要求9所述的方法,其特征在于:所述電路還在所述消息向所述存儲(chǔ)器空間的所述寫入之前,向發(fā)送隊(duì)列中寫入隊(duì)列元素,所述隊(duì)列元素至少部分地請(qǐng)求在發(fā)生下列兩項(xiàng)中的任一項(xiàng)的情況下:(1)由所述I/o控制器丟棄所述消息以及(2)所述數(shù)據(jù)的重新傳輸,由所述I/O控制器執(zhí)行涉及所述數(shù)據(jù)的I/O操作;以及 所述發(fā)送隊(duì)列包括多個(gè)元素,所述發(fā)送隊(duì)列中的所述多個(gè)元素中的每一相應(yīng)的元素都包括相應(yīng)的指示,指出至少部分地對(duì)應(yīng)于所述相應(yīng)的元素的相應(yīng)的消息是否由所述電路向所述存儲(chǔ)器空間寫入,所述相應(yīng)的消息包括相應(yīng)的數(shù)據(jù)以及與所述相應(yīng)的數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符,所述相應(yīng)的描述符包括所述相應(yīng)的數(shù)據(jù)。
13.如權(quán)利要求12所述的方法,其特征在于: 所述電路繼續(xù)向所述存儲(chǔ)器空間寫入一個(gè)或多個(gè)隨后的消息,除非發(fā)生通過所述I/o控制器的丟棄; 在發(fā)生所述丟棄之后,所述電路在所述發(fā)送隊(duì)列變空之后恢復(fù)隨后的消息寫入;以及 所述發(fā)出信號(hào)包括使與所述I/o控制器相關(guān)聯(lián)的至少一個(gè)門鈴響鈴。
14.如權(quán)利要求9所述的方法,其特征在于: 應(yīng)用程序進(jìn)程也至少部分地駐留在所述主機(jī)存儲(chǔ)器中; 所述存儲(chǔ)器空間包括所述進(jìn)程將向其中映射的多個(gè)頁; 屬于不同的相應(yīng)的安全域的兩個(gè)相應(yīng)的進(jìn)程不共享所述頁中的單個(gè)相應(yīng)的頁;以及所述頁中的一個(gè)或多個(gè)包括多個(gè)部分,每一相應(yīng)的部分將接納要被寫入到所述相應(yīng)的部分的至少一個(gè)相應(yīng)的消息,所述至少一個(gè)相應(yīng)的消息對(duì)應(yīng)于整個(gè)相應(yīng)的隊(duì)列元素,并包括相應(yīng)的數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符。
15.如權(quán)利要求9所述的方法,其特征在于: 所述I/O控制器將至少部分地跟蹤所述I/O控制器的一個(gè)或多個(gè)資源的分派,以實(shí)施至少部分地由所述消息請(qǐng)求的一個(gè)或多個(gè)I/O操作; 如果沒有足夠的資源存在于所述I/O控制器中,以允許所述一個(gè)或多個(gè)I/O操作被實(shí)施,則所述I/O控制器將丟棄所述消息;以及 所述I/O控制器將丟棄所述消息,除非,當(dāng)所述I/O控制器處理所述消息時(shí),對(duì)應(yīng)于所述消息的隊(duì)列元素當(dāng)前位于發(fā)送隊(duì)列的頭部,至少部分地在所述消息已經(jīng)被寫入到所述存儲(chǔ)器空間之前,所述隊(duì)列元素已經(jīng)被寫入到所述隊(duì)列。
16.如權(quán)利要求15所述的方法,其特征在于: 所述一個(gè)或多個(gè)I/O操作包括所述數(shù)據(jù)的傳輸; 所述I/O控制器將總的可用傳輸額度數(shù)量的子集分配到總通信量的子集,所述總通信量的所述子集至少部分地與所述數(shù)據(jù)的所述傳輸相關(guān)聯(lián); 所述I/o控制器將至少部分地與對(duì)所述一個(gè)或多個(gè)資源的初始跟蹤同時(shí)確定在傳輸額度的總數(shù)的所述子集中是否存在足夠數(shù)量的未分配的額度,以允許傳輸;以及 如果所述I/o控制器判斷不存在所述足夠數(shù)量的未分配的額度,則所述I/O控制器將丟棄所述消息。
17.存儲(chǔ)當(dāng)由機(jī)器執(zhí)行時(shí)導(dǎo)致包括下列各項(xiàng)的操作的執(zhí)行的一個(gè)或多個(gè)指令的計(jì)算機(jī)可讀取的存儲(chǔ)器: 由電路將消息從主機(jī)中的系統(tǒng)存儲(chǔ)器寫入到主機(jī)中的輸入/輸出(I/O)控制器中的存儲(chǔ)器空間,主機(jī)操作系統(tǒng)到至少部分地駐留在所述系統(tǒng)存儲(chǔ)器中,所述消息包括數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)聯(lián)的至少一個(gè)描述符,所述數(shù)據(jù)被包括在所述至少一個(gè)描述符中;以及 由所述電路向所述I/o控制器發(fā)出信號(hào),指出發(fā)生了所述寫入。
18.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于: 使用涉及與主機(jī)處理器核相關(guān)聯(lián)的寫入組合的緩沖器的單個(gè)寫入操作,實(shí)施所述消息向所述存儲(chǔ)器空間的寫入;以及 所述電路還在所述消息的所述寫入之前,向隊(duì)列中寫入隊(duì)列元素,所述隊(duì)列元素至少部分地請(qǐng)求在由所述I/O控制器丟棄所述消息的情況下,由所述I/O控制器執(zhí)行涉及所述數(shù)據(jù)的I/O操作,所述I/O操作對(duì)應(yīng)于至少部分地通過向所述存儲(chǔ)器空間寫入所述消息來請(qǐng)求的另一個(gè)I/O操作。
19.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于: 所述主機(jī)包括執(zhí)行指令的主機(jī)處理器核,所述指令至少部分地導(dǎo)致多個(gè)相應(yīng)的消息至少部分地被同時(shí)寫入到所述存儲(chǔ)器空間,所述相應(yīng)的消息中的每一消息都包括相應(yīng)的數(shù)據(jù)以及與所述相應(yīng)的數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符,所述相應(yīng)的數(shù)據(jù)被包括在所述相應(yīng)的描述符中;以及 所述I/o控制器包括遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)網(wǎng)絡(luò)接口控制器(NIC),所述相應(yīng)的消息是請(qǐng)求由所述R OMANIC (RNIC)執(zhí)行相應(yīng)的RDMA事務(wù)。
20.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于: 所述電路還在所述消息向所述存儲(chǔ)器空間的所述寫入之前,向發(fā)送隊(duì)列中寫入隊(duì)列元素,所述隊(duì)列元素至少部分地請(qǐng)求在發(fā)生下列兩項(xiàng)中的任一項(xiàng)的情況下:(1)由所述I/o控制器丟棄所述消息以及(2)所述數(shù)據(jù)的重新傳輸,由所述I/O控制器執(zhí)行涉及所述數(shù)據(jù)的I/O操作;以及 所述發(fā)送隊(duì)列包括多個(gè)元素,所述發(fā)送隊(duì)列中的所述多個(gè)元素中的每一相應(yīng)的元素都包括相應(yīng)的指示,指出至少部分地對(duì)應(yīng)于所述相應(yīng)的元素的相應(yīng)的消息是否由所述電路向所述存儲(chǔ)器空間寫入,所述相應(yīng)的消息包括相應(yīng)的數(shù)據(jù)以及與所述相應(yīng)的數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符,所述相應(yīng)的描述符包括所述相應(yīng)的數(shù)據(jù)。
21.如權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其特征在于: 所述電路繼續(xù)向所述存儲(chǔ)器空間寫入一個(gè)或多個(gè)隨后的消息,除非發(fā)生通過所述I/O控制器的丟棄; 在發(fā)生所述丟棄之后,所述電路在所述發(fā)送隊(duì)列變空之后恢復(fù)隨后的消息寫入;以及 所述發(fā)出信號(hào)包括使與所述I/o控制器相關(guān)聯(lián)的至少一個(gè)門鈴響鈴。
22.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于: 應(yīng)用程序進(jìn)程也至少部分地駐留在所述主機(jī)存儲(chǔ)器中; 所述存儲(chǔ)器空間包括所述進(jìn)程將向其中映射的多個(gè)頁; 屬于不同的相應(yīng)的安全域的兩個(gè)相應(yīng)的進(jìn)程不共享所述頁中的單個(gè)相應(yīng)的一個(gè)頁;以及 所述頁中的一個(gè)或多個(gè)包括多個(gè)部分,每一相應(yīng)的部分將接納要被寫入到所述相應(yīng)的部分的至少一個(gè)相應(yīng)的消息,所述至少一個(gè)相應(yīng)的消息對(duì)應(yīng)于整個(gè)相應(yīng)的隊(duì)列元素,并包括相應(yīng)的數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)聯(lián)的相應(yīng)的描述符。
23.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于: 所述I/o控制器將至少部分地跟蹤所述I/O控制器的一個(gè)或多個(gè)資源的分派,以實(shí)施至少部分地由所述消息請(qǐng)求的一個(gè)或多個(gè)I/o操作; 如果沒有足夠的資源存在于所述I/o控制器中,以允許所述一個(gè)或多個(gè)I/O操作被實(shí)施,所述I/o控制器將丟棄所述消息;以及 所述I/o控制器將丟棄所述消息,除非,當(dāng)所述I/O控制器處理所述消息時(shí),對(duì)應(yīng)于所述消息的隊(duì)列元素當(dāng)前位于發(fā)送隊(duì)列的頭部,至少部分地在所述消息已經(jīng)被寫入到所述存儲(chǔ)器空間之前,所述隊(duì)列元素已經(jīng)被寫入到所述隊(duì)列。
24.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于: 所述一個(gè)或多個(gè)I/O操作包括所述數(shù)據(jù)的傳輸; 所述I/O控制器將總的可用的傳輸額度數(shù)量的子集分配到總通信量的子集,所述總通信量的所述子集至少部分地與所述數(shù)據(jù)的所述傳輸相關(guān)聯(lián); 所述I/O控制器將至少部分地與對(duì)所述一個(gè)或多個(gè)資源的初始跟蹤同時(shí)確定在傳輸額度的總數(shù)的所述子集中是否存在足夠數(shù)量的未分配的額度,以允許傳輸;以及 如果所述I/O控制器判斷不存在所述足夠數(shù)量的未分配的額度,則所述I/O控制器將丟棄所述消息。`
【文檔編號(hào)】G06F13/16GK103827842SQ201180073803
【公開日】2014年5月28日 申請(qǐng)日期:2011年9月29日 優(yōu)先權(quán)日:2011年9月29日
【發(fā)明者】V·馬克赫威克斯, R·O·夏普, K·G·基爾斯, B·S·豪賽厄, S·K·拉森 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
辽宁省| 兴山县| 甘孜| 和顺县| 内黄县| 罗山县| 房山区| 霞浦县| 宝兴县| 齐齐哈尔市| 太和县| 沙坪坝区| 乌兰察布市| 葵青区| 新晃| 黔西县| 富顺县| 墨江| 华容县| 微博| 汝南县| 武平县| 平利县| 上犹县| 吴忠市| 临海市| 达州市| 阿鲁科尔沁旗| 朝阳区| 邮箱| 靖边县| 麻江县| 清远市| 奉节县| 南汇区| 辽源市| 伊宁县| 冷水江市| 阳原县| 荥阳市| 隆安县|