專利名稱:消息通信技術(shù)的制作方法
技術(shù)領(lǐng)域:
本文公開的主題總體上涉及用于發(fā)送數(shù)據(jù)的技術(shù)。
背景技術(shù):
在數(shù)據(jù)網(wǎng)絡(luò)中,通過識別數(shù)據(jù)的存儲位置并允許接收方訪問該存儲位置的數(shù)據(jù)而發(fā)生某些數(shù)據(jù)傳輸。一個實例是軟交換虛擬機(jī)將以太網(wǎng)分組傳送至虛擬平臺中的客戶虛擬機(jī)(VM)。該軟交換和客戶VM可以使用頁翻轉(zhuǎn)(page flipping),即通過共享的分級緩沖器的雙復(fù)制或管理程序復(fù)制來傳輸分組。另一個實例是在Jeff Hilland, RDMA protocol verbs specification(版本 1. 0) (2003)中描述的 iWARP 規(guī)范。這些可替換方案中的每一個均帶來了與移動數(shù)據(jù)的簡單目標(biāo)不成比例的高處理成本。此外,共享存儲空間可能會產(chǎn)生問題。當(dāng)存儲空間被破壞時,訪問該存儲空間的每個軟件或硬件均可能出故障。此外,隨著中央處理單元(CPU)中的核心數(shù)量的增加,有效的中間存儲器存在的可能性降低。例如,發(fā)送機(jī)和接收機(jī)之間的共享高速緩存可能不存在,使得在DRAM中進(jìn)行交互。作為另一個實例,考慮從發(fā)送機(jī)到接收機(jī)的傳統(tǒng)的緩沖器數(shù)據(jù)復(fù)制。如果發(fā)送機(jī)執(zhí)行該復(fù)制,那么目標(biāo)緩沖器成為發(fā)送機(jī)數(shù)據(jù)高速緩存中的純高速緩存污染。如果接收機(jī)進(jìn)行復(fù)制,那么源緩沖器成為接收機(jī)數(shù)據(jù)高速緩存中的純高速緩存污染。在現(xiàn)今的CPU架構(gòu)中,消除這種高速緩存濫用是困難的或不可能的。在一些情況中,期望允許在不共享存儲空間的情況下傳輸數(shù)據(jù)。
在附圖中以實例的方式而非限制的方式示出了本發(fā)明的實施例,并且在附圖中, 相似的參考標(biāo)記指示相似的元件。圖1描述了根據(jù)實施例的系統(tǒng)。圖2描述了根據(jù)實施例的消息引擎之間的通信的實例。圖3描述了根據(jù)實施例的用于從VMTE到VMRE的消息段發(fā)送的初始化處理的實例。圖4A描述了根據(jù)實施例的消息引擎的簡化框圖。圖4B以框圖形式描述了根據(jù)實施例的使用消息引擎與外部設(shè)備進(jìn)行通信的網(wǎng)絡(luò)通信系統(tǒng)。圖5描述了根據(jù)實施例的消息引擎的高級框圖。圖6描述了根據(jù)實施例的用于定義可用VMRE的上下文的示例性格式。
圖7描述了根據(jù)實施例的發(fā)送隊列中的空操作命令的示例性格式。圖8描述了根據(jù)實施例的發(fā)送隊列中的命令的示例性格式。圖9描述了根據(jù)實施例的示例性接收隊列格式。圖10描述了根據(jù)實施例的示例性消息段格式。圖11描述了根據(jù)實施例的示例性請求發(fā)送(RTQ消息格式。圖12描述了根據(jù)實施例的示例性清除發(fā)送(CTS)消息格式。圖13A描述了根據(jù)實施例的使用消息引擎從IO設(shè)備傳輸消息的處理的示例性流程圖。圖1 描述了根據(jù)實施例的在IO設(shè)備處使用消息引擎接收消息的處理的示例性流程圖。
具體實施例方式本說明書全文中對“一個實施例”或“實施例”的引用意味著結(jié)合該實施例描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因此,本說明書全文各個位置中出現(xiàn)的短語“在一個實施例中”或“實施例”不必都指同一實施例。此外,可以將該特定的特征、結(jié)構(gòu)或特性組合在一個或多個實施例中。圖1描述了根據(jù)實施例的使用消息引擎(ME)的系統(tǒng)的高級概述。參照其它附圖描述了消息引擎功能的其它更詳細(xì)的方面。在該實例中,第一消息引擎MEl能夠使用互連將消息發(fā)送到第二消息引擎ME2,而不需要MEl和ME2使用同一存儲空間。在一些實施例中,“消息”封裝任意類型的數(shù)據(jù),但是可能不包含數(shù)據(jù)的源存儲器緩沖器的存儲器地址,并且可能不識別數(shù)據(jù)的目標(biāo)存儲器地址。在一個實施例中,MEl可能知道ME2的虛擬消息引擎地址(VMEA),但是不知道ME2用來存儲MEl發(fā)送的數(shù)據(jù)的存儲器緩沖器的目標(biāo)存儲器地址。此外,ME2可能知道MEl的VMEA,但是不知道使用MEl從其發(fā)送數(shù)據(jù)的存儲器地址。如后面將描述的,VMEA可以識別特定的消息引擎。VMEA可以與存儲器地址不同。不共享存儲空間的好處是可以維持對不同應(yīng)用程序的存儲器隔離。存儲器隔離的好處是存儲空間的失效或破壞僅影響使用該存儲空間的應(yīng)用程序,而不影響其它應(yīng)用程序。存儲器隔離的另一好處是消除用來在存儲空間之間永久地或暫時地創(chuàng)建共享存儲器、 或者在存儲空間之間傳輸存儲器的頁的所有權(quán)、或者轉(zhuǎn)換到在存儲空間之間直接復(fù)制數(shù)據(jù)所需要的更高軟件特權(quán)級的硬件和軟件開銷。在實施例中,消息引擎可以不維持存儲器的一致性。一致性是確保存儲器的多個存取器使用相同的地址讀取相同的數(shù)據(jù)的協(xié)議。因此,通過不維持存儲器的一致性,不同的消息引擎不會帶來一致性協(xié)議的開銷。單獨的消息引擎可以在不同的一致性域中操作??梢栽诿總€端點處維持一致性。例如,可以在線程和消息引擎之間維持一致性。在實施例中,消息引擎不共享同一物理存儲器。例如,可以不允許消息引擎訪問同一 RAM芯片。虛擬消息引擎(VME)是到主機(jī)物理消息引擎(HPME)的虛擬化接口的實例。VME支持來自虛擬存儲器的消息發(fā)送和接收。消息引擎還可以支持RDMA寫和RDMA讀操作。VME 是虛擬消息發(fā)送引擎(VMTE)或虛擬消息接收引擎(VMRE)。管理程序或其它特權(quán)系統(tǒng)實體 (例如,本機(jī)OS中的內(nèi)核)可以在單個HPME上一次調(diào)度一個VMTE,但是可以同時調(diào)度多個VMRE。該管理程序或其它特權(quán)實體可以是由處理器執(zhí)行的軟件例程。只要在VMTE發(fā)送時VMRE能夠接收,那么兩個虛擬機(jī)就可以繼續(xù)進(jìn)行其通信。管理程序可以以細(xì)粒度方式調(diào)度VMTE,例如通過將VMTE與相關(guān)聯(lián)的軟件線程協(xié)同調(diào)度。VMTE 可以在不被管理程序調(diào)度時停止發(fā)送。HPME可以同時支持多個VMRE??梢元毩⒂谂cVMTE 或VMRE相關(guān)聯(lián)的CPU線程來調(diào)度VMRE。VMRE的持續(xù)性可以促進(jìn)調(diào)度量的進(jìn)展。在一些實施例中,VMRE或VMTE可以使用處理器虛擬地址來接收和發(fā)送消息。這些虛擬地址可以與軟件線程使用相同的存儲器轉(zhuǎn)換機(jī)制。用于消息傳送的虛擬地址的使用有助于地址空間隔離,而沒有對現(xiàn)有軟件存儲器轉(zhuǎn)換機(jī)制而言多余的分離存儲器控制機(jī)制的開銷。管理程序可以利用源自VME邏輯上存在于其中的地址空間的虛擬地址來為 VME (例如,VMRE和VMTE)構(gòu)建描述符。VME可以邏輯地存在于任何虛擬地址空間中,例如 本機(jī)操作系統(tǒng)(0 的內(nèi)核模式、半虛擬非VT客戶機(jī)OS的內(nèi)核模式、完全虛擬客戶機(jī)OS的內(nèi)核模式、本機(jī)OS的用戶模式、半虛擬非VT客戶機(jī)OS的用戶模式、完全虛擬客戶機(jī)OS的用戶模式或管理程序。虛擬消息引擎地址(VMEA)可以識別與消息相關(guān)聯(lián)的VMTE或VMRE。在圖1的實例中,MEl表示主機(jī)物理消息引擎(HPME)。MEl可以物理地或邏輯地與數(shù)據(jù)源或數(shù)據(jù)宿相關(guān)聯(lián),例如計算元件或輸入/輸出(10或I/O)設(shè)備(例如,網(wǎng)絡(luò)接口 )。 MEl可以合并到IO設(shè)備中。與MEl相關(guān)聯(lián)的虛擬消息發(fā)送引擎(VMTE)可以使用目標(biāo)VMRE 的VMEA來將消息發(fā)送到目標(biāo)VMRE。因此,在發(fā)送時,MEl將VMEA映射到合適的鏈路,其中, 段在所述合適的鏈路上流動并且這些段通過所述合適的鏈路到達(dá)正確的VMRE。在該實例中,ME2也表示HPME。為了接收段,ME2使用VMEA來從在ME2處調(diào)度的所有VMRE的集合中找到進(jìn)入消息段的VMRE。ME2能夠接收消息以用于由多個硬件線程HTO 和HTl來進(jìn)行處理。ME2可以合并到具有一個或多個超線程的核心中。在該實例中,超線程HTO和HTl是能夠處理所接收的消息的兩個超線程。ME2可以位于該核心的外部,或者可以與多于一個的核心相關(guān)聯(lián)。消息引擎可以存在于CPU插槽的外部,例如在分立的IO設(shè)備中,只要中間物理和鏈路層互連能夠適當(dāng)?shù)貍鬏斚?。ME2可以將接收的消息放置于高速緩存分層或存儲器的各個級中。例如,可以將接收的消息存儲在數(shù)據(jù)高速緩存單元(DCU)、中間級高速緩存(MLC)、所有核心共享的末級高速緩存(LLC)或主存儲器(例如,DRAM或SRAM)中的任何一個中。D⑶可以是最接近軟件流水線的最快的高速緩存??梢蕴摂M化ME2。與軟件線程一樣,核心的消息引擎可以經(jīng)由如傳統(tǒng)的存儲器管理單元(MMU)頁表定義的虛擬地址來與系統(tǒng)軟件進(jìn)行交互。盡管系統(tǒng)軟件可以為消息引擎構(gòu)建專用的頁表集合,但是消息引擎也可以與一個或多個線程共享虛擬地址空間。消息引擎可以將消息分為適合通過消息互連傳輸?shù)囊粋€或多個消息段。消息段可以具有不相關(guān)聯(lián)的存儲器地址,可以相對于存儲器事務(wù)是無序的,并且可以相對于高速緩存分層在帶外傳輸。用來處理接收的消息段的應(yīng)用程序或其它軟件可以指定目標(biāo)存儲器地址,接收消息引擎可以將消息段存儲在所述目標(biāo)存儲器地址中?;ミB可以為消息段提供從發(fā)送消息引擎到接收消息引擎的傳輸介質(zhì)。該互連可以與一致性存儲器互連共享物理資源,但是提供相對于一致性存儲器邏輯上不同并且在帶外的傳輸。示例性互連包括環(huán)、交叉開關(guān)矩陣(crossbar)和/或網(wǎng)格。互連還可以包括外部總線,例如快速PCI。盡管沒有描述,但是圖1的系統(tǒng)還可以具有使用存儲適配器來訪問存儲設(shè)備的能力。例如,存儲適配器能夠遵守下列任意協(xié)議來與存儲設(shè)備進(jìn)行通信小型計算機(jī)系統(tǒng)接口 (SCSI)、光纖通道(FC)和/或串行高級技術(shù)附件(S-ATA)。存儲設(shè)備可以被實現(xiàn)為非易失性存儲設(shè)備,例如但不限于是磁盤驅(qū)動器、光盤驅(qū)動器、磁帶驅(qū)動器、內(nèi)部存儲設(shè)備、附接的存儲設(shè)備、閃速存儲器、電池備份SDRAM(同步DRAM)和/或網(wǎng)絡(luò)可訪問存儲設(shè)備。圖2描述了根據(jù)實施例的消息弓丨擎之間的通信的實例。虛擬消息發(fā)射機(jī)弓丨擎 (VMTE-A)與主機(jī)物理消息引擎HPME-A相關(guān)聯(lián)。管理程序(未描述)負(fù)責(zé)發(fā)送和接收消息隊列之間的連接的一次(one-time)建立。此后,VME的地址空間中的無特權(quán)軟件可以用緩沖器填充隊列。一旦軟件在發(fā)送隊列(SQ)中創(chuàng)建發(fā)送隊列條目,那么VMTE可以開始圖2 的實施例中描述的發(fā)送處理。在201處,VMTE-A通過向VMRE發(fā)送請求發(fā)送(RTS)消息來發(fā)起到接收機(jī)消息引擎的消息段傳輸。RTS消息可以具有關(guān)于圖11描述的格式。在該實例中,物理接收消息引擎是HPME-B。虛擬接收消息引擎VMRE-B與HPME-B相關(guān)聯(lián)。 HPME-A可以使用以下處理來發(fā)送RTS消息。1.分配用于返回的清除發(fā)送(CTS)消息的存儲。該存儲可以是針對該消息SQ條目占據(jù)的存儲器的部分。發(fā)射機(jī)可以將請求ID(RID)值與該CTS存儲相關(guān)聯(lián),以正確地處理返回的CTS消息。2.利用目標(biāo)和源VME地址、隊列號(QN)、消息序列號(MSN)和請求ID(RID)來對 RTS消息進(jìn)行初始化。3.發(fā)送該RTS消息。在202處,HPME-B可以對所接收的消息執(zhí)行以下檢查1)目標(biāo)VME地址屬于在該 PME上調(diào)度的VMRE ;2) QN存在并且小于或等于VMRE的最大容許QN ;3)允許源VME地址發(fā)送到目標(biāo)VMRE地址處的指定QN ;4) MSN大于或等于QN的最小MSN值;以及5) MSN小于或等于QN的最大MSN值。如果所有的驗證檢查都成功,那么HPME-B請求用來重組所接收的消息段的重組時隙(slot)。分配重組時隙的處理可以如下。1.將源VME地址、QN和MSN、RID值提供給重組保留站(未描述)。2.重組保留站嘗試分配重組時隙。如果時隙是可用的,則重組保留站將重組標(biāo)簽和RID提供給CTS發(fā)送處理程序(未描述)。重組保留站可以將諸如源VME地址、QN和MSN 值之類的相關(guān)本地信息存儲在與重組標(biāo)簽相關(guān)聯(lián)的上下文中。3. CTS發(fā)送處理程序準(zhǔn)備分段和重組層以處理與RT相關(guān)聯(lián)的入站數(shù)據(jù)段。4. CTS發(fā)送處理程序構(gòu)建和發(fā)送CTS消息。RID字段包括在相關(guān)聯(lián)的RTS消息中從發(fā)送機(jī)接收的逐個(vertatim)值。CTS消息的發(fā)送機(jī)的分段和重組層(未描述)可以在發(fā)送CTS消息時立即準(zhǔn)備好接受針對相關(guān)聯(lián)的重組標(biāo)簽的進(jìn)入數(shù)據(jù)段。在203處,VMRE-B通過發(fā)起經(jīng)由與HPME-B相關(guān)聯(lián)的虛擬消息發(fā)射機(jī)引擎(未描述)的清除發(fā)送(CTS)消息的發(fā)送,來允許來自VMTE-A的消息的發(fā)送。CTS消息包括重組標(biāo)簽(RT)值,VMRE使用該重組標(biāo)簽(RT)值來從其它正在處理的消息中識別出該消息。
VMRE-A (未描述)與HPME-A相關(guān)聯(lián),并且用于處理接收的消息。在204處, VMRE-A(未描述)識別出來自HPME-B的CTS消息。VMRE-A可以使用CTS消息中的RID值來識別相關(guān)聯(lián)的消息。在205處,VMRE-A將該消息標(biāo)記為準(zhǔn)備發(fā)送。如果當(dāng)前調(diào)度了 VMTE-A,則VMTE-A 開始使用數(shù)據(jù)移動程序?qū)⒈疚拿枋鰹榘Q為TX和TX-L的兩個段的消息從存儲區(qū)A(存儲器-A)發(fā)送到存儲區(qū)B (存儲器-B)。諸如無特權(quán)的軟件(未描述)的數(shù)據(jù)接收機(jī)用指向存儲器中的緩沖器的描述符填充接收隊列(RQ),其中,所述數(shù)據(jù)接收機(jī)用來處理消息的內(nèi)容。重組層從消息段中讀取描述符、重組標(biāo)簽(RT)和消息段偏移(MSO),并且通知數(shù)據(jù)移動程序?qū)⑦@些段放置到緩沖器指定的存儲器-B中。描述符、RT和MSO識別段的目標(biāo)為存儲器-B。當(dāng)消息的所有段已經(jīng)放置到存儲器中時,重組層可以通知VMRE-B。VMTE-A相對于其它正在處理的消息發(fā)送操作按照發(fā)送優(yōu)先級來發(fā)送段。如果當(dāng)VMRE-A將消息標(biāo)記為準(zhǔn)備發(fā)送時VMTE-A當(dāng)前沒有被調(diào)度,則可以在管理程序重新調(diào)度 VMTE-A之后恢復(fù)消息的發(fā)送。在206處,消息段TX和TX-L到達(dá)存儲區(qū)B。消息段包括由VMRE-B用來識別該段所屬的消息上下文的RT字段。該上下文可以包括源和目標(biāo)虛擬消息引擎地址、隊列號(QN) 字段和消息序列號字段(MSN)。接收方PME找到與RT相關(guān)聯(lián)的VMRE。如果PME不能找到接收上下文,則PME丟棄該段。接收方PME還驗證該段中指定的MSO在正在被接收的消息的范圍內(nèi)。如果MSO不在范圍內(nèi),則PME丟棄該段。VMTE可以按順序發(fā)送段,但是可能發(fā)生消息內(nèi)段的重排序。在消息目的地處,重組層(未描述)可以1)將段放置在存儲器中;幻僅當(dāng)滿足下列所有條件時可以指示消息到達(dá)VMRE:a)消息的所有段已經(jīng)被放置在存儲器中以及b)所有之前消息的所有段已經(jīng)被放置在存儲器中;以及3)當(dāng)指示消息到達(dá)時,重組層可以向VMRE指示消息是控制消息還是數(shù)據(jù)消息。消息段的接收方可以確保段被放置在消息中的正確位置,而不管到達(dá)的順序。消息中的MSO字段使得將段放置到正確位置成為VMRE中方便的操作。然而,接收方可以確保在指示消息可用于處理之前該消息的所有段已經(jīng)到達(dá)。VMRE接口可以進(jìn)行以下斷言。1)在軟件登記接收隊列條目(RQE)之后,但是在VMRE指示重構(gòu)消息已經(jīng)到達(dá)并且可用于處理之前,VMRE可以以任何方式操作消息數(shù)據(jù)緩沖器中的存儲器。軟件可以不依賴于數(shù)據(jù)緩沖器中的任何特定的數(shù)據(jù)訪問行為。2) VMRE可以以任意方式操作RQE中的存儲器。軟件可以不依賴于RQE中的任何特定的數(shù)據(jù)訪問行為。3) VMRE可以操作RQ頭中的存儲器以使頭字段遞增1或更多。4)在VMRE指示消息已經(jīng)到達(dá)之后,軟件(例如,處理所接收消息的軟件)可以假設(shè)如RQ頭的頭字段所指示的,所有完整的消息已經(jīng)被放置到存儲器中。圖3描述了根據(jù)實施例的用于從VMTE到VMRE的消息段發(fā)送的示例性初始化處理。在301處,內(nèi)核/操作系統(tǒng)(OS)向管理程序請求使用消息引擎的連接。在302處,管理程序構(gòu)建具有描述可用VMRE的上下文的表。上下文可以由消息引擎訪問。在一些實施例中,合適的上下文是關(guān)于圖6描述的那些上下文。在303處,管理程序?qū)⑦B接的虛擬消息接收引擎(VMRE)和虛擬消息發(fā)送引擎 (VMTE)的邏輯地址傳輸至內(nèi)核。VMRE和VMTE對應(yīng)于用作到涉及消息引擎連接的物理消息引擎的邏輯接口的地址。在304處,內(nèi)核請求管理程序?qū)⑵浒l(fā)送隊列(SQ)連接到遠(yuǎn)程接收隊列(RQ)。在305處,控制消息接收的消息接收機(jī)指示準(zhǔn)備好接收消息。消息接收機(jī)可以但不限于是應(yīng)用程序軟件、內(nèi)核、軟交換或固定功能加速器。在306處,管理程序分配SQ、RQ和完整隊列(CQ),并且向內(nèi)核指示所分配的SQ、RQ 和CQ。此后,物理發(fā)射機(jī)消息引擎將部分地使用SQ識別的內(nèi)容傳輸至部分地使用RQ識別的位置。RQ可以存在于可分頁存儲器中。在一個實施例中,發(fā)送消息引擎使用數(shù)據(jù)移動程序來從由SQ識別的線性地址的內(nèi)容形成消息段。發(fā)送消息引擎使用數(shù)據(jù)移動程序來將消息段放置到該消息互連上的內(nèi)部緩沖掛起傳輸中。接收消息引擎使用數(shù)據(jù)移動程序來將消息段放置到由RQ識別的線性地址中。線性地址是被映射到CPU頁表中的連續(xù)地址,并且這些線性地址可以由軟件本地訪問。完整隊列(CQ)允許VME來通知軟件活動,例如接收或發(fā)送消息。CQ可以與一個或多個SQ或者一個或多個RQ相關(guān)聯(lián)。CQ及其相關(guān)聯(lián)的RQ或SQ可以與VME存在于相同的地址空間中。CQ可以位于連續(xù)的虛擬地址空間中。CQ可以存在于可分頁存儲器中并且 VME可能引起嘗試讀或?qū)慍Q的頁失效。可能在VME訪問用來針對特定隊列發(fā)送和接收消息的虛擬緩沖器時發(fā)生頁失效。 具有要發(fā)送的消息的VMTE將開始對消息進(jìn)行分段并且將這些段提供給PME。PME將段發(fā)送到由鏈路信用限制的接收方并且遵守發(fā)送隊列優(yōu)先級。如果VMTE在讀取消息緩沖器時遇到頁失效,則VMTE采取下列動作1)針對該SQ 將其當(dāng)前上下文推入失效上下文緩沖器(未描述)中;幻停止從失效發(fā)送隊列的消息發(fā)送;3)中斷與VME相關(guān)聯(lián)的線程以解決該失效;以及4)恢復(fù)對所有其它發(fā)送隊列的正常處理。對于該部分,失效處理程序線程可以采取下列動作1.讀失效上下文緩沖器并且將失效頁加載到存儲器中。2.寫失效SQ的VME門鈴(doorbell)以恢復(fù)消息發(fā)送。當(dāng)檢測到門鈴時,VME可以采取下列動作1.繼續(xù)正常處理更高優(yōu)先級SQ。2.在沒有更高優(yōu)先級的SQ具有要發(fā)送的消息之后,VMTE針對失效的SQ加載失效的上下文緩沖器。3.從第一失效段開始恢復(fù)對消息進(jìn)行分段。VMRE通過將從PME接收的段寫入存儲器中的相應(yīng)消息緩沖器中來對這些段進(jìn)行重組。如果VMRE在寫接收隊列時遇到頁失效,則VMRE可以采取下列動作。1.針對該RQ將其當(dāng)前上下文推入失效上下文緩沖器中。2.將FAULT消息發(fā)送到發(fā)送VMTE。該FAULT消息指示失效消息段的MSN。3.中斷與VMRE相關(guān)聯(lián)的線程以解決該失效。
4.丟棄針對該消息接收的任何進(jìn)一步的消息段。5.繼續(xù)正常接受和放置針對其它隊列(非頁失效)的消息段。失效處理程序線程可以采取下列動作1.將失效上下文緩沖器和失效頁讀取到存儲器中。2.構(gòu)建到發(fā)送機(jī)的消息以通知發(fā)送機(jī)恢復(fù)對失效消息的發(fā)送。該消息的內(nèi)容取決于VMTE的具體性質(zhì)。圖4A描述了根據(jù)實施例的消息引擎的簡化框圖。例如,消息引擎400可以用來將消息發(fā)送到任何其它的消息引擎,例如可以包含在網(wǎng)絡(luò)接口中的消息引擎。消息引擎400 還可以用來從另一消息引擎接收消息。網(wǎng)絡(luò)接口能夠發(fā)送和接收網(wǎng)絡(luò)協(xié)議單元。如本文中所使用的,“網(wǎng)絡(luò)協(xié)議單元”可以包括任意分組或幀或具有根據(jù)任何協(xié)議規(guī)范形成的頭和有效載荷部分的其它格式的信息。I/O接口 402可以對接收的以太網(wǎng)幀執(zhí)行介質(zhì)訪問控制(MAC)、過濾和循環(huán)冗余校驗(CRC)操作以及對要發(fā)送的以太網(wǎng)幀執(zhí)行介質(zhì)訪問控制。在其它實施例中,I/O接口 402 可以針對其它規(guī)范的幀和分組執(zhí)行協(xié)議編碼和解碼。緩沖器403-A可以存儲由I/O接口 402處理的所接收的以太網(wǎng)幀,而緩沖器403-B 可以在由I/O接口 402處理之前存儲要被發(fā)送的以太網(wǎng)幀。消息分段塊404能夠?qū)碜跃彌_器403-A的以太網(wǎng)幀分段成與基礎(chǔ)消息互連兼容的大小的消息。消息分段塊404可以查詢消息路由表410來確定以其來傳輸消息的虛擬消息接收引擎(VMRE)、隊列號(QN)和消息序列號(MSN),其中所述消息傳輸所接收的以太網(wǎng)幀的內(nèi)容。消息分段塊404可以傳輸要被發(fā)送到緩沖器407-A中的消息段??梢允褂冒l(fā)送隊列(SQ)來識別緩沖器407-A。消息分段塊404可以使用數(shù)據(jù)移動程序(未描述)將消息段從緩沖器407-A傳輸至與VMRE、QN和MSN相關(guān)聯(lián)的位置。緩沖器407-B可以存儲通過互連接收的消息段。可以使用接收隊列(RQ)部分地識別緩沖器407-B。消息重組塊406可以使用數(shù)據(jù)移動程序(未描述)來將消息段傳輸至緩沖器407-B。消息重組塊406能夠?qū)⒕彌_器407-B中的消息段重組成完整的消息并且將這些內(nèi)容提供到緩沖器403-B中以用于在一個或多個網(wǎng)絡(luò)協(xié)議單元中進(jìn)行發(fā)送。接口 408可以將消息從消息分段塊404傳輸?shù)交ミB并且將消息從互連傳輸?shù)较⒅亟M塊406。圖4B以框圖形式描述了根據(jù)實施例的使用消息引擎來與外部設(shè)備進(jìn)行通信的網(wǎng)絡(luò)通信系統(tǒng)。例如,系統(tǒng)450可以具有使用接收(RX)消息引擎妨4傳輸接收的以太網(wǎng)幀的以太網(wǎng)兼容網(wǎng)絡(luò)接口的能力。系統(tǒng)450還使用發(fā)送(TX)消息引擎456來接收以太網(wǎng)網(wǎng)絡(luò)接口的消息,所述消息包括要在以太網(wǎng)幀中發(fā)送的數(shù)據(jù)或控制或管理信息。系統(tǒng)450可以對其它類型的網(wǎng)絡(luò)協(xié)議單元進(jìn)行編碼和解碼,所述其它類型的網(wǎng)絡(luò)協(xié)議單元例如但不限于是串行ATA和無限帶寬(Infiniband)。在該實例中,MAC RX塊接受來自外部以太網(wǎng)介質(zhì)PHY的以太網(wǎng)幀。MAC RX塊對原始分組執(zhí)行組幀和以太網(wǎng)CRC操作。過濾器塊丟棄與過濾器規(guī)則不匹配的分組。小型接收 (RX)緩沖器塊提供緩沖來處理消息互連抖動。消息映射塊452為來自小型RX緩沖器的業(yè)務(wù)確定目標(biāo)消息引擎和隊列的地址。例如,消息映射塊452可以考慮以太網(wǎng)幀的源地址、目標(biāo)地址和/或有效載荷,以識別該業(yè)務(wù)的目標(biāo)消息引擎和隊列。可以基于虛擬消息接收引擎(VMRE)的標(biāo)識符、隊列號(QN)和消息序列號(MSN)來識別目標(biāo)消息引擎和隊列。多個目標(biāo)消息引擎可以是可用的,其中每個目標(biāo)消息引擎與一核心相關(guān)聯(lián)。消息映射塊452可以使用類似于接收端調(diào)節(jié)(RSS)或應(yīng)用程序目標(biāo)路由的分配方案來向核心分配以太網(wǎng)幀的內(nèi)容,但是也可以使用其它方案。消息映射塊452可以使用查找操作來確定消息段頭(例如,非數(shù)據(jù)部分)的內(nèi)容。接收(RX)消息引擎妨4可以形成消息段并且使用互連將消息發(fā)送到目標(biāo)消息引擎(未描述)。目標(biāo)消息引擎(未描述)可以接收消息以用于由核心、硬件加速器或網(wǎng)絡(luò)協(xié)議卸載處理器(例如,iSCSI)進(jìn)行處理。發(fā)送(TX)消息引擎456可以接收來自源消息引擎的消息。TX消息引擎456可以從管芯上(on-die)互連接收消息段。TX消息引擎456可以檢查所接收消息的有效載荷以確定該消息是否包含控制、數(shù)據(jù)或管理內(nèi)容。TX消息引擎456將控制段指向控制塊,將管理段指向管理塊,以及將數(shù)據(jù)段指向數(shù)據(jù)塊??梢允褂孟戆l(fā)送控制信息,以替代使用基于存儲器的交互(例如,PCI)。例如,消息中的控制信息可以用來配置和指導(dǎo)運行時行為。例如,控制消息可以設(shè)置鏈路速度??刂茐K實現(xiàn)I/O橋控制功能,例如控制其它功能塊和外部以太網(wǎng)介質(zhì)PHY。數(shù)據(jù)塊可以從消息段形成以太網(wǎng)數(shù)據(jù)幀。管理塊可以從消息段形成例如PAUSE之類的以太網(wǎng)控制幀或其它幀。控制塊可以與核心或平臺中的其它設(shè)備交換控制消息。例如,控制塊可以支持允許I/O橋中其它塊的配置的控制消息。小型發(fā)送(TX)緩沖器塊提供緩沖以處理消息互連抖動。MAC發(fā)送(TX)塊在向以太網(wǎng)介質(zhì)PHY發(fā)送分組之前執(zhí)行組幀和CRC操作。在一些實施例中,系統(tǒng)450在平臺中提供比傳統(tǒng)的分立網(wǎng)絡(luò)接口更少的專用硅。 在一些實施例中,系統(tǒng)450在以太網(wǎng)線路和核心之間提供精益路徑(lean path),并且與執(zhí)行直接存儲器訪問(DMA)的傳統(tǒng)網(wǎng)絡(luò)接口相比消除了延遲。在一些實施例中,軟件可以實現(xiàn)OSI層2特征而非傳統(tǒng)網(wǎng)絡(luò)接口中的固定硅門。在一些實施例中,與具有DMA的傳統(tǒng)網(wǎng)絡(luò)接口不同,系統(tǒng)450不需要與處理分組的核心共享的一致性存儲器。圖5描述了根據(jù)實施例的消息引擎的高級框圖。消息引擎500應(yīng)處理器、核心或硬件線程的請求提供消息段的發(fā)送,以及提供消息段的接收以用于由處理器、核心或硬件線程進(jìn)行處理。對于消息發(fā)送,消息分段塊504可以對使用發(fā)送隊列512識別的消息進(jìn)行分段以用于通過互連進(jìn)行發(fā)送。盡管沒有描述,但是消息分段塊504可以使用數(shù)據(jù)移動程序?qū)⑹褂冒l(fā)送隊列512識別的消息段傳輸?shù)绞褂媒邮贞犃?未描述)識別的位置。因此,使用一個本地SQ和一個本地RQ的內(nèi)容進(jìn)行存儲器到存儲器的傳輸,并且消息引擎可以不與另一消息引擎的隊列進(jìn)行直接交互。對于從互連接收的消息段,消息重組塊506可以重組消息并且將消息存儲在接收隊列510中。盡管沒有描述,但是消息重組塊506可以使用數(shù)據(jù)移動程序來將消息段從與另一消息引擎相關(guān)聯(lián)的發(fā)送隊列(二者均未描述)傳輸?shù)绞褂媒邮贞犃?10識別的位置。讀/寫塊502允許從使用虛擬存儲器中的發(fā)送隊列512識別的位置讀取用于傳輸?shù)南?,其中使用由轉(zhuǎn)換后援緩沖器(TLB) 514提供的虛擬-物理地址轉(zhuǎn)換來使用發(fā)送隊列 512識別位置。讀/寫塊502允許將消息寫入使用虛擬存儲器中的接收隊列510識別的位置,其中使用由轉(zhuǎn)換后援緩沖器(TLB) 514提供的虛擬-物理地址轉(zhuǎn)換來使用接收隊列510 識別位置。在一個實施例中,讀/寫塊502能夠以與硬件線程相同的方式將消息段寫入一致性存儲器以及從一致性存儲器讀取消息段。讀/寫塊502可以與核心中的硬件線程共享高速緩存分層和存儲器管理單元(MMU)。轉(zhuǎn)換后援緩沖器(TLB) 514和頁未命中處理程序(PMH) 516提供存儲器管理單元 (MMU)功能。響應(yīng)于讀/寫塊502提供的虛擬地址,TLB 514將虛擬地址轉(zhuǎn)換成物理地址。 超線程HTO或HTl可以對PMH 516中的條目執(zhí)行地址轉(zhuǎn)換。如果TLB 514中沒有可用的條目,則PMH 516從頁表地址檢索地址并且將地址存儲在TLB 514中。PMH 516可以和與核心相關(guān)聯(lián)的硬件線程共享。PMH 516還可以由一個或多個消息引擎專用。接口 508可以在互連和消息分段塊504與消息重組塊506之間提供物理層接口。圖6描述了根據(jù)實施例的用于定義可用虛擬消息接收引擎(VMRE)的上下文的示例性格式。版本字段(位7-0)指示協(xié)議的版本。ASID字段指定由轉(zhuǎn)換后援緩沖器(TLB) 用于虛擬到物理地址轉(zhuǎn)換的應(yīng)用程序空間標(biāo)識符。CR3字段指定由頁未命中處理程序用于虛擬到物理地址轉(zhuǎn)換的頁表地址。隊列表地址字段指定該VMRE支持的隊列陣列的可分頁存儲器地址。物理消息引擎(PME)使用至少發(fā)送和接收消息的虛擬消息引擎(VME)來向硬件線程提供虛擬化接口。PME還向硬件線程提供物理接口以用于消息引擎硬件的控制和配置。 到PME的物理接口可以不執(zhí)行虛擬存儲器轉(zhuǎn)換。相反,PME的物理接口可以與主機(jī)物理地址空間中的固定(pinned)存儲器進(jìn)行交互。PME的物理接口也可以與核心中的寄存器進(jìn)行交互。虛擬消息引擎(VME)可以使用MMU頁表執(zhí)行存儲器轉(zhuǎn)換并且與虛擬存儲器進(jìn)行交互。與軟件線程一樣,VME訪問與指向頁表結(jié)構(gòu)頂部的ASID和CR3指針相關(guān)聯(lián)的存儲器。 VME可以與和地址空間相關(guān)聯(lián)的軟件線程共享ASID和CR3值,盡管這并不是必需的。系統(tǒng)軟件可以將VME視為由ASID識別的地址空間中的線程。例如,只要VMTE或VMRE可以發(fā)送或接收消息,那么系統(tǒng)軟件就可以將VME使用的頁表保持為一致狀態(tài)。與軟件線程一樣,可以應(yīng)用標(biāo)準(zhǔn)TLB擊落規(guī)則。圖7描述了根據(jù)實施例的用于發(fā)送隊列中的空操作命令的示例性格式。發(fā)送隊列 (SQ)條目指導(dǎo)VMTE執(zhí)行不發(fā)送消息的空操作。命令字段(位7-0)針對空操作命令為0。 當(dāng)設(shè)置了立即中斷(II)字段時,該立即中斷(II)字段指導(dǎo)VME立即生成CQ中斷,而不考慮中斷延遲間隔。圖8描述了根據(jù)實施例的用于發(fā)送隊列中的命令的示例性格式。該命令命令VMTE 發(fā)送消息。命令字段(位7-0)針對發(fā)送命令為1。當(dāng)設(shè)置了立即中斷(II)字段時,該立即中斷(II)字段指導(dǎo)VME立即生成CQ中斷,而不考慮中斷延遲間隔。VME地址字段指定消息的目標(biāo)VMRE。隊列號字段指定該消息的目標(biāo)隊列號。大小字段指定要發(fā)送的連續(xù)虛擬存儲器中的字節(jié)數(shù)。地址字段指定可緩存可分頁存儲器中要發(fā)送的數(shù)據(jù)的虛擬地址。圖9描述了根據(jù)實施例的接收隊列中的示例性條目。命令字段(位7-0)針對接收命令為0。當(dāng)設(shè)置了立即中斷(II)字段時,該立即中斷(II)字段指導(dǎo)VME立即生成CQ中斷,而不考慮中斷延遲間隔。大小字段指定接收緩沖器的連續(xù)虛擬存儲器的字節(jié)數(shù)。當(dāng)針對該描述符的消息接收操作完成時,VMRE更新大小字段以包含接收的消息段的實際數(shù)量。 地址字段指定接收緩沖器的可緩存可分頁存儲器中的虛擬地址。圖10描述了根據(jù)實施例的示例性消息段格式。RT字段指定CTS消息中返回的重組標(biāo)簽。目標(biāo)VME地址字段指定段的目標(biāo)VMRE。MSO字段指定字段的消息段偏移。MSO包含該段相對于消息開始處的位置。整個消息的第一段被編號為0。該段的數(shù)據(jù)部分包含該段的數(shù)據(jù)有效載荷。有效載荷的長度是鏈路層指定的。盡管沒有描述,但是消息段格式還可以包括指示段是消息的最后段的最后字段。圖11描述了根據(jù)實施例的示例性請求發(fā)送(RTQ消息格式。針對RTS消息將命令字段設(shè)置為1。目標(biāo)VME地址字段指定消息的目標(biāo)VMRE。源VME地址字段指定消息的源 VMTE0 QN字段指定所指定的地址空間標(biāo)識符中的目標(biāo)隊列號。MSN字段指定所指定的隊列號中的消息序列號。RID字段指定接收方可以在與該請求相關(guān)聯(lián)的CTS消息中逐個返回的請求ID。最大消息大小可以小于巨型幀大小。在實施例中,可以針對屬于同一連接的若干相鄰消息來發(fā)送單個RTS消息,其中所述相鄰消息用于發(fā)送巨型幀??梢詫ⅰ跋?shù)量”字段添加至RTS消息中以識別與單個RTS消息和巨型幀相關(guān)聯(lián)的消息數(shù)量。例如,圖11中的當(dāng)前保留字段的部分可以包括消息數(shù)量字段。此外,在圖10中,MSO字段的一小部分可以用來識別一個RTS或RT中的消息數(shù)量。圖12描述了根據(jù)實施例的示例性清除發(fā)送(CTS)消息格式??梢葬槍TS消息將命令字段設(shè)置為2。目標(biāo)VME地址字段指定消息的目標(biāo)VMRE。源VME地址字段指定消息的源VMTE。RT字段指定重組標(biāo)簽。對于隨后的消息段,VMTE將該值放入該消息的每個段的RT字段中。RT值的高位字節(jié)被設(shè)置為0。RID字段指定由VMTE在RTS消息中提供的請求ID。RID字段允許VMTE將CTS消息與未完成的RTS消息相關(guān)聯(lián)。圖13A描述了根據(jù)實施例的使用消息引擎從IO設(shè)備傳輸消息的處理1300的示例性流程圖???302可以包括從網(wǎng)絡(luò)接收網(wǎng)絡(luò)協(xié)議單元。例如,框1302可以包括接收以太網(wǎng)幀???304可以包括識別與接收的幀相關(guān)聯(lián)的虛擬消息接收引擎(VMRE)和目標(biāo)隊列。VMRE可以與用于接收由核心處理的消息的消息引擎相關(guān)聯(lián)??梢匀珀P(guān)于圖2描述的那樣識別VMRE和目標(biāo)隊列(QN)???306可以包括對消息進(jìn)行分段以用于發(fā)送到VMRE。虛擬消息發(fā)送引擎(VMTE) 可以對消息進(jìn)行分段。消息段的格式可以如關(guān)于圖10所描述的那樣???308可以包括將每個段發(fā)送到目標(biāo)位置??梢杂商幚砻總€接收的段的邏輯部分地基于來自該段的接收隊列中的描述符、重組標(biāo)簽(RT)和消息段偏移(MSO)來識別虛擬存儲器中的目標(biāo)位置。圖1 描述了根據(jù)實施例的在IO設(shè)備處使用消息引擎接收消息的處理1350的示例性流程圖???352可以包括將接收的消息段重組成完整的消息??梢詿o序地接收消息。消息中的消息段偏移(MSO)字段可以用來將這些段適當(dāng)?shù)嘏判虺上ⅰ??3M可以包括確定消息內(nèi)容的類型。例如,內(nèi)容可以是控制、數(shù)據(jù)或管理內(nèi)容。
14
框1356可以包括準(zhǔn)備具有數(shù)據(jù)或控制內(nèi)容的網(wǎng)絡(luò)協(xié)議單元以用于發(fā)送。例如,框 1356可以包括準(zhǔn)備具有數(shù)據(jù)或控制內(nèi)容的以太網(wǎng)幀以用于發(fā)送。本發(fā)明的實施例可以被提供為例如可以包括一個或多個機(jī)器可讀介質(zhì)的計算機(jī)程序產(chǎn)品,所述機(jī)器可讀介質(zhì)存儲有機(jī)器可執(zhí)行指令,所述機(jī)器可執(zhí)行指令在由諸如計算機(jī)、計算機(jī)網(wǎng)絡(luò)或其它電子設(shè)備執(zhí)行時,可以使一個或多個機(jī)器執(zhí)行根據(jù)本發(fā)明實施例的操作。機(jī)器可讀介質(zhì)可以包括但不限于是軟盤、光學(xué)盤、CD-ROM(光盤-只讀存儲器)、 磁光盤、R0M(只讀存儲器)、RAM(隨機(jī)存取存儲器)、EPROM(可擦除可編程只讀存儲器)、 EEPROM(電可擦除可編程只讀存儲器)、磁或光卡、閃速存儲器或適于存儲機(jī)器可執(zhí)行指令的其它類型的介質(zhì)/機(jī)器可讀介質(zhì)。附圖和以上描述給出了本發(fā)明的實例。盡管被描述為多個不同的功能項,但是本領(lǐng)域技術(shù)人員將意識到,一個或多個這種元件可以被很好地組合到單個功能元件中??商鎿Q地,某些元件可以被分為多個功能元件。一個實施例中的元件可以添加到另一實施例。 例如,本文描述的處理的順序可以改變并且不限于本文描述的方式。此外,任何流程圖中的動作不需要以示出的順序來實現(xiàn);也不是所有的動作一定需要執(zhí)行。此外,不依賴于其它動作的那些動作可以與其它動作并行地執(zhí)行。然而,本發(fā)明的范圍不限制于這些具體的實例。無論是否在說明書中明確給出,例如材料的結(jié)構(gòu)、尺度和使用的不同之類的多種變型是可能的。本發(fā)明的范圍至少與所附權(quán)利要求給出的范圍一樣寬。
權(quán)利要求
1.一種方法,包括 接收網(wǎng)絡(luò)協(xié)議單元;確定用于處理所述網(wǎng)絡(luò)協(xié)議單元的虛擬消息發(fā)送引擎; 確定用于接收所述網(wǎng)絡(luò)協(xié)議單元的虛擬消息接收引擎; 將所述網(wǎng)絡(luò)協(xié)議單元的內(nèi)容轉(zhuǎn)換成一個或多個消息段;以及將所述消息段發(fā)送到與所述虛擬消息接收引擎相關(guān)聯(lián)的隊列。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述發(fā)送包括將所述消息段發(fā)送到所述隊列,而不需要識別所述隊列的目標(biāo)存儲器地址。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述消息段包括重組標(biāo)簽字段和消息段偏移字段,并且所述方法還包括基于所述重組標(biāo)簽字段識別所述隊列; 基于所述重組標(biāo)簽字段識別所述隊列中的緩沖器;以及部分地基于所述消息段偏移字段來識別用于存儲所述消息段中的至少一個消息段的所述緩沖器中的位置。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述消息段中的至少一個消息段包括 鏈路級地址;所述虛擬消息接收引擎的地址; 重組標(biāo)簽字段; 消息段偏移字段;以及數(shù)據(jù)部分。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述網(wǎng)絡(luò)協(xié)議單元是以太網(wǎng)兼容的。
6.根據(jù)權(quán)利要求1所述的方法,還包括 接收消息段;將消息段重組為消息;以及基于所述消息的內(nèi)容形成第二網(wǎng)絡(luò)協(xié)議單元。
7.根據(jù)權(quán)利要求6所述的方法,其中,所接收的消息段的內(nèi)容包括控制、數(shù)據(jù)和管理信息中的至少一個。
8.根據(jù)權(quán)利要求6所述的方法,其中,所接收的消息段來自于與核心相關(guān)聯(lián)的消息引擎。
9.一種裝置,包括用于接收網(wǎng)絡(luò)協(xié)議并且對所述網(wǎng)絡(luò)協(xié)議單元執(zhí)行介質(zhì)訪問控制、過濾和緩沖的邏輯; 消息映射器,用于確定與所述網(wǎng)絡(luò)協(xié)議單元相關(guān)聯(lián)的目標(biāo)虛擬消息引擎;以及消息引擎,用于使用至少一個消息將所述網(wǎng)絡(luò)協(xié)議單元的內(nèi)容發(fā)送到與所述目標(biāo)虛擬消息引擎相關(guān)聯(lián)的隊列,而不需要所述至少一個消息識別所述隊列的存儲器地址。
10.根據(jù)權(quán)利要求9所述的裝置,其中,所述消息映射器用于基于接收端調(diào)節(jié)分配目標(biāo)虛擬消息引擎。
11.根據(jù)權(quán)利要求9所述的裝置,其中,所述目標(biāo)虛擬消息引擎是與核心相關(guān)聯(lián)的。
12.根據(jù)權(quán)利要求9所述的裝置,其中,所述消息引擎用于從所述至少一個消息形成至少一個段。
13.根據(jù)權(quán)利要求12所述的裝置,其中,所述至少一個段包括 鏈路層;目標(biāo)虛擬消息引擎地址; 重組標(biāo)簽字段; 消息段偏移字段;以及數(shù)據(jù)部分。
14.根據(jù)權(quán)利要求13所述的裝置,其中,所述隊列是基于所述重組標(biāo)簽字段的,并且還包括基于所述重組標(biāo)簽字段的所述隊列中的緩沖器;以及部分地基于所述消息段偏移字段的用于存儲所述消息段中的至少一個消息段的所述緩沖器中的位置。
15.根據(jù)權(quán)利要求9所述的裝置,還包括 用于準(zhǔn)備網(wǎng)絡(luò)協(xié)議單元以用于發(fā)送的邏輯;以及第二消息引擎,用于接收至少一個消息,并且將所接收的至少一個消息的內(nèi)容提供給所述用于準(zhǔn)備網(wǎng)絡(luò)協(xié)議單元以用于發(fā)送的邏輯。
16.一種系統(tǒng),包括 存儲設(shè)備;網(wǎng)絡(luò)接口,用于接收網(wǎng)絡(luò)協(xié)議單元;以及第一消息引擎,用于從所述網(wǎng)絡(luò)協(xié)議單元的內(nèi)容形成至少一個消息,并且將所述至少一個消息發(fā)送到第二消息引擎,而不需要知道所述消息的目標(biāo)存儲器地址。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述第一消息引擎和所述第二消息引擎不維持存儲器一致性。
18.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述第一消息引擎和所述第二消息引擎不訪問同一物理存儲器。
19.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述第一消息引擎包括消息映射器,用于確定與所述網(wǎng)絡(luò)協(xié)議單元相關(guān)聯(lián)的目標(biāo)虛擬消息引擎;以及用于使用至少一個消息將所述網(wǎng)絡(luò)協(xié)議單元的內(nèi)容發(fā)送到與所述目標(biāo)虛擬消息引擎相關(guān)聯(lián)的隊列的邏輯。
20.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述第一消息引擎用于從所述至少一個消息形成至少一個段。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其中,所述至少一個段包括 鏈路層;目標(biāo)虛擬消息引擎地址; 重組標(biāo)簽字段; 消息段偏移字段;以及數(shù)據(jù)部分。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述隊列是基于所述重組標(biāo)簽字段的,并且還包括基于所述重組標(biāo)簽字段的所述隊列中的緩沖器;以及部分地基于所述消息段偏移字段的用于存儲所述消息段中的至少一個消息段的所述緩沖器中的位置。
全文摘要
描述了網(wǎng)絡(luò)協(xié)議單元接口,其使用消息引擎將接收的網(wǎng)絡(luò)協(xié)議單元的內(nèi)容以消息段形式傳輸?shù)侥繕?biāo)消息引擎。該網(wǎng)絡(luò)協(xié)議單元接口使用消息引擎來接收其內(nèi)容要在網(wǎng)絡(luò)協(xié)議單元中發(fā)送的消息。消息引擎將消息段發(fā)送到目標(biāo)消息引擎,而不需要消息引擎發(fā)射機(jī)和接收機(jī)共享存儲空間。此外,與存儲器地址相反,發(fā)射機(jī)消息引擎可以通過使用與接收機(jī)消息和隊列標(biāo)識符相關(guān)聯(lián)的虛擬地址來將消息段發(fā)送到接收機(jī)消息引擎。
文檔編號H04L12/58GK102301671SQ200980155570
公開日2011年12月28日 申請日期2009年12月17日 優(yōu)先權(quán)日2008年12月30日
發(fā)明者A·庫馬爾, F·貝里, M·梅蒙, N·巴德瓦伊, R·哈加德黑里, S·金, T·維爾克二世, X·朱 申請人:英特爾公司