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