CN104699525A - 消息通信技术 - Google Patents
消息通信技术 Download PDFInfo
- Publication number
- CN104699525A CN104699525A CN201510157932.1A CN201510157932A CN104699525A CN 104699525 A CN104699525 A CN 104699525A CN 201510157932 A CN201510157932 A CN 201510157932A CN 104699525 A CN104699525 A CN 104699525A
- Authority
- CN
- China
- Prior art keywords
- message
- engine
- section
- network protocol
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 45
- 238000004891 communication Methods 0.000 title description 5
- 230000005540 biological transmission Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 2
- 230000001105 regulatory effect Effects 0.000 claims 1
- 230000009466 transformation Effects 0.000 claims 1
- 238000012546 transfer Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 33
- 239000000872 buffer Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 10
- 239000012634 fragment Substances 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000011218 segmentation Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000014616 translation Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000009432 framing Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013016 damping Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/06—Message adaptation to terminal or network requirements
- H04L51/066—Format adaptation, e.g. format conversion or compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/324—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Abstract
描述了网络协议单元接口,其使用消息引擎将接收的网络协议单元的内容以消息段形式传输到目标消息引擎。该网络协议单元接口使用消息引擎来接收其内容要在网络协议单元中发送的消息。消息引擎将消息段发送到目标消息引擎,而不需要消息引擎发射机和接收机共享存储空间。此外,与存储器地址相反,发射机消息引擎可以通过使用与接收机消息和队列标识符相关联的虚拟地址来将消息段发送到接收机消息引擎。
Description
本申请是申请日为2009年12月17日并且申请号为200980155570.5的中国专利申请的分案申请。
相关申请交叉引用
本申请涉及Kumar等发明人的、于2008年12月30日提交的、名称为“Interrupt Techniques”的、序列号为12/319,033的共同待决美国专利申请(代理人案号P29562)。
技术领域
本文公开的主题总体上涉及用于发送数据的技术。
背景技术
在数据网络中,通过识别数据的存储位置并允许接收方访问该存储位置的数据而发生某些数据传输。一个实例是软交换虚拟机将以太网分组传送至虚拟平台中的客户虚拟机(VM)。该软交换和客户VM可以使用页翻转(page flipping),即通过共享的分级缓冲器的双复制或管理程序复制来传输分组。另一个实例是在Jeff Hilland,RDMA protocol verbs specification(版本1.0)(2003)中描述的iWARP规范。
这些可替换方案中的每一个均带来了与移动数据的简单目标不成比例的高处理成本。此外,共享存储空间可能会产生问题。当存储空间被破坏时,访问该存储空间的每个软件或硬件均可能出故障。此外,随着中央处理单元(CPU)中的核心数量的增加,有效的中间存储器存在的可能性降低。例如,发送机和接收机之间的共享高速缓存可能不存在,使得在DRAM中进行交互。
作为另一个实例,考虑从发送机到接收机的传统的缓冲器数据复制。如果发送机执行该复制,那么目标缓冲器成为发送机数据高速缓存中的纯高速缓存污染。如果接收机进行复制,那么源缓冲器成为接收机数据高速缓存中的纯高速缓存污染。在现今的CPU架构中,消除这种高速缓存滥用是困难的或不可能的。在一些情况中,期望允许在不共享存储空间的情况下传输数据。
附图说明
在附图中以实例的方式而非限制的方式示出了本发明的实施例,并且在附图中,相似的参考标记指示相似的元件。
图1描述了根据实施例的系统。
图2描述了根据实施例的消息引擎之间的通信的实例。
图3描述了根据实施例的用于从VMTE到VMRE的消息段发送的初始化处理的实例。
图4A描述了根据实施例的消息引擎的简化框图。
图4B以框图形式描述了根据实施例的使用消息引擎与外部设备进行通信的网络通信系统。
图5描述了根据实施例的消息引擎的高级框图。
图6描述了根据实施例的用于定义可用VMRE的上下文的示例性格式。
图7描述了根据实施例的发送队列中的空操作命令的示例性格式。
图8描述了根据实施例的发送队列中的命令的示例性格式。
图9描述了根据实施例的示例性接收队列格式。
图10描述了根据实施例的示例性消息段格式。
图11描述了根据实施例的示例性请求发送(RTS)消息格式。
图12描述了根据实施例的示例性清除发送(CTS)消息格式。
图13A描述了根据实施例的使用消息引擎从IO设备传输消息的处理的示例性流程图。
图13B描述了根据实施例的在IO设备处使用消息引擎接收消息的处理的示例性流程图。
具体实施方式
本说明书全文中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,本说明书全文各个位置中出现的短语“在一个实施例中”或“实施例”不必都指同一实施例。此外,可以将该特定的特征、结构或特性组合在一个或多个实施例中。
图1描述了根据实施例的使用消息引擎(ME)的系统的高级概述。参照其它附图描述了消息引擎功能的其它更详细的方面。在该实例中,第一消息引擎ME1能够使用互连将消息发送到第二消息引擎ME2,而不需要ME1和ME2使用同一存储空间。在一些实施例中,“消息”封装任意类型的数据,但是可能不包含数据的源存储器缓冲器的存储器地址,并且可能不识别数据的目标存储器地址。在一个实施例中,ME1可能知道ME2的虚拟消息引擎地址(VMEA),但是不知道ME2用来存储ME1发送的数据的存储器缓冲器的目标存储器地址。此外,ME2可能知道ME1的VMEA,但是不知道使用ME1从其发送数据的存储器地址。如后面将描述的,VMEA可以识别特定的消息引擎。VMEA可以与存储器地址不同。
不共享存储空间的好处是可以维持对不同应用程序的存储器隔离。存储器隔离的好处是存储空间的失效或破坏仅影响使用该存储空间的应用程序,而不影响其它应用程序。存储器隔离的另一好处是消除用来在存储空间之间永久地或暂时地创建共享存储器、或者在存储空间之间传输存储器的页的所有权、或者转换到在存储空间之间直接复制数据所需要的更高软件特权级的硬件和软件开销。
在实施例中,消息引擎可以不维持存储器的一致性。一致性是确保存储器的多个存取器使用相同的地址读取相同的数据的协议。因此,通过不维持存储器的一致性,不同的消息引擎不会带来一致性协议的开销。单独的消息引擎可以在不同的一致性域中操作。可以在每个端点处维持一致性。例如,可以在线程和消息引擎之间维持一致性。
在实施例中,消息引擎不共享同一物理存储器。例如,可以不允许消息引擎访问同一RAM芯片。
虚拟消息引擎(VME)是到主机物理消息引擎(HPME)的虚拟化接口的实例。VME支持来自虚拟存储器的消息发送和接收。消息引擎还可以支持RDMA写和RDMA读操作。VME是虚拟消息发送引擎(VMTE)或虚拟消息接收引擎(VMRE)。管理程序或其它特权系统实体(例如,本机OS中的内核)可以在单个HPME上一次调度一个VMTE,但是可以同时调度多个VMRE。该管理程序或其它特权实体可以是由处理器执行的软件例程。
只要在VMTE发送时VMRE能够接收,那么两个虚拟机就可以继续进行其通信。管理程序可以以细粒度方式调度VMTE,例如通过将VMTE与相关联的软件线程协同调度。VMTE可以在不被管理程序调度时停止发送。HPME可以同时支持多个VMRE。可以独立于与VMTE或VMRE相关联的CPU线程来调度VMRE。VMRE的持续性可以促进调度量的进展。
在一些实施例中,VMRE或VMTE可以使用处理器虚拟地址来接收和发送消息。这些虚拟地址可以与软件线程使用相同的存储器转换机制。用于消息传送的虚拟地址的使用有助于地址空间隔离,而没有对现有软件存储器转换机制而言多余的分离存储器控制机制的开销。
管理程序可以利用源自VME逻辑上存在于其中的地址空间的虚拟地址来为VME(例如,VMRE和VMTE)构建描述符。VME可以逻辑地存在于任何虚拟地址空间中,例如:本机操作系统(OS)的内核模式、半虚拟非VT客户机OS的内核模式、完全虚拟客户机OS的内核模式、本机OS的用户模式、半虚拟非VT客户机OS的用户模式、完全虚拟客户机OS的用户模式或管理程序。虚拟消息引擎地址(VMEA)可以识别与消息相关联的VMTE或VMRE。
在图1的实例中,ME1表示主机物理消息引擎(HPME)。ME1可以物理地或逻辑地与数据源或数据宿相关联,例如计算元件或输入/输出(IO或I/O)设备(例如,网络接口)。ME1可以合并到IO设备中。与ME1相关联的虚拟消息发送引擎(VMTE)可以使用目标VMRE的VMEA来将消息发送到目标VMRE。因此,在发送时,ME1将VMEA映射到合适的链路,其中,段在所述合适的链路上流动并且这些段通过所述合适的链路到达正确的VMRE。
在该实例中,ME2也表示HPME。为了接收段,ME2使用VMEA来从在ME2处调度的所有VMRE的集合中找到进入消息段的VMRE。ME2能够接收消息以用于由多个硬件线程HT0和HT1来进行处理。ME2可以合并到具有一个或多个超线程的核心中。在该实例中,超线程HT0和HT1是能够处理所接收的消息的两个超线程。ME2可以位于该核心的外部,或者可以与多于一个的核心相关联。消息引擎可以存在于CPU插槽的外部,例如在分立的IO设备中,只要中间物理和链路层互连能够适当地传输消息。
ME2可以将接收的消息放置于高速缓存分层或存储器的各个级中。例如,可以将接收的消息存储在数据高速缓存单元(DCU)、中间级高速缓存(MLC)、所有核心共享的末级高速缓存(LLC)或主存储器(例如,DRAM或SRAM)中的任何一个中。DCU可以是最接近软件流水线的最快的高速缓存。
可以虚拟化ME2。与软件线程一样,核心的消息引擎可以经由如传统的存储器管理单元(MMU)页表定义的虚拟地址来与系统软件进行交互。尽管系统软件可以为消息引擎构建专用的页表集合,但是消息引擎也可以与一个或多个线程共享虚拟地址空间。
消息引擎可以将消息分为适合通过消息互连传输的一个或多个消息段。消息段可以具有不相关联的存储器地址,可以相对于存储器事务是无序的,并且可以相对于高速缓存分层在带外传输。用来处理接收的消息段的应用程序或其它软件可以指定目标存储器地址,接收消息引擎可以将消息段存储在所述目标存储器地址中。
互连可以为消息段提供从发送消息引擎到接收消息引擎的传输介质。该互连可以与一致性存储器互连共享物理资源,但是提供相对于一致性存储器逻辑上不同并且在带外的传输。示例性互连包括环、交叉开关矩阵(crossbar)和/或网格。互连还可以包括外部总线,例如快速PCI。
尽管没有描述,但是图1的系统还可以具有使用存储适配器来访问存储设备的能力。例如,存储适配器能够遵守下列任意协议来与存储设备进行通信:小型计算机系统接口(SCSI)、光纤通道(FC)和/或串行高级技术附件(S-ATA)。存储设备可以被实现为非易失性存储设备,例如但不限于是:磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附接的存储设备、闪速存储器、电池备份SDRAM(同步DRAM)和/或网络可访问存储设备。
图2描述了根据实施例的消息引擎之间的通信的实例。虚拟消息发射机引擎(VMTE-A)与主机物理消息引擎HPME-A相关联。管理程序(未描述)负责发送和接收消息队列之间的连接的一次(one-time)建立。此后,VME的地址空间中的无特权软件可以用缓冲器填充队列。一旦软件在发送队列(SQ)中创建发送队列条目,那么VMTE可以开始图2的实施例中描述的发送处理。
在201处,VMTE-A通过向VMRE发送请求发送(RTS)消息来发起到接收机消息引擎的消息段传输。RTS消息可以具有关于图11描述的格式。在该实例中,物理接收消息引擎是HPME-B。虚拟接收消息引擎VMRE-B与HPME-B相关联。
HPME-A可以使用以下处理来发送RTS消息。
1.分配用于返回的清除发送(CTS)消息的存储。该存储可以是针对该消息SQ条目占据的存储器的部分。发射机可以将请求ID(RID)值与该CTS存储相关联,以正确地处理返回的CTS消息。
2.利用目标和源VME地址、队列号(QN)、消息序列号(MSN)和请求ID(RID)来对RTS消息进行初始化。
3.发送该RTS消息。
在202处,HPME-B可以对所接收的消息执行以下检查:1)目标VME地址属于在该PME上调度的VMRE;2)QN存在并且小于或等于VMRE的最大容许QN;3)允许源VME地址发送到目标VMRE地址处的指定QN;4)MSN大于或等于QN的最小MSN值;以及5)MSN小于或等于QN的最大MSN值。如果所有的验证检查都成功,那么HPME-B请求用来重组所接收的消息段的重组时隙(slot)。
分配重组时隙的处理可以如下。
1.将源VME地址、QN和MSN、RID值提供给重组保留站(未描述)。
2.重组保留站尝试分配重组时隙。如果时隙是可用的,则重组保留站将重组标签和RID提供给CTS发送处理程序(未描述)。重组保留站可以将诸如源VME地址、QN和MSN值之类的相关本地信息存储在与重组标签相关联的上下文中。
3.CTS发送处理程序准备分段和重组层以处理与RT相关联的入站数据段。
4.CTS发送处理程序构建和发送CTS消息。RID字段包括在相关联的RTS消息中从发送机接收的逐个(verbatim)值。
CTS消息的发送机的分段和重组层(未描述)可以在发送CTS消息时立即准备好接受针对相关联的重组标签的进入数据段。
在203处,VMRE-B通过发起经由与HPME-B相关联的虚拟消息发射机引擎(未描述)的清除发送(CTS)消息的发送,来允许来自VMTE-A的消息的发送。CTS消息包括重组标签(RT)值,VMRE使用该重组标签(RT)值来从其它正在处理的消息中识别出该消息。
VMRE-A(未描述)与HPME-A相关联,并且用于处理接收的消息。在204处,VMRE-A(未描述)识别出来自HPME-B的CTS消息。VMRE-A可以使用CTS消息中的RID值来识别相关联的消息。
在205处,VMRE-A将该消息标记为准备发送。如果当前调度了VMTE-A,则VMTE-A开始使用数据移动程序将本文描述为包含称为TX和TX-L的两个段的消息从存储区A(存储器-A)发送到存储区B(存储器-B)。诸如无特权的软件(未描述)的数据接收机用指向存储器中的缓冲器的描述符填充接收队列(RQ),其中,所述数据接收机用来处理消息的内容。重组层从消息段中读取描述符、重组标签(RT)和消息段偏移(MSO),并且通知数据移动程序将这些段放置到缓冲器指定的存储器-B中。描述符、RT和MSO识别段的目标为存储器-B。当消息的所有段已经放置到存储器中时,重组层可以通知VMRE-B。
VMTE-A相对于其它正在处理的消息发送操作按照发送优先级来发送段。如果当VMRE-A将消息标记为准备发送时VMTE-A当前没有被调度,则可以在管理程序重新调度VMTE-A之后恢复消息的发送。
在206处,消息段TX和TX-L到达存储区B。消息段包括由VMRE-B用来识别该段所属的消息上下文的RT字段。该上下文可以包括源和目标虚拟消息引擎地址、队列号(QN)字段和消息序列号字段(MSN)。
接收方PME找到与RT相关联的VMRE。如果PME不能找到接收上下文,则PME丢弃该段。接收方PME还验证该段中指定的MSO在正在被接收的消息的范围内。如果MSO不在范围内,则PME丢弃该段。
VMTE可以按顺序发送段,但是可能发生消息内段的重排序。在消息目的地处,重组层(未描述)可以:1)将段放置在存储器中;2)仅当满足下列所有条件时可以指示消息到达VMRE:a)消息的所有段已经被放置在存储器中以及b)所有之前消息的所有段已经被放置在存储器中;以及3)当指示消息到达时,重组层可以向VMRE指示消息是控制消息还是数据消息。
消息段的接收方可以确保段被放置在消息中的正确位置,而不管到达的顺序。消息中的MSO字段使得将段放置到正确位置成为VMRE中方便的操作。然而,接收方可以确保在指示消息可用于处理之前该消息的所有段已经到达。
VMRE接口可以进行以下断言。
1)在软件登记接收队列条目(RQE)之后,但是在VMRE指示重构消息已经到达并且可用于处理之前,VMRE可以以任何方式操作消息数据缓冲器中的存储器。软件可以不依赖于数据缓冲器中的任何特定的数据访问行为。
2)VMRE可以以任意方式操作RQE中的存储器。软件可以不依赖于RQE中的任何特定的数据访问行为。
3)VMRE可以操作RQ头中的存储器以使头字段递增1或更多。
4)在VMRE指示消息已经到达之后,软件(例如,处理所接收消息的软件)可以假设如RQ头的头字段所指示的,所有完整的消息已经被放置到存储器中。
图3描述了根据实施例的用于从VMTE到VMRE的消息段发送的示例性初始化处理。在301处,内核/操作系统(OS)向管理程序请求使用消息引擎的连接。
在302处,管理程序构建具有描述可用VMRE的上下文的表。上下文可以由消息引擎访问。在一些实施例中,合适的上下文是关于图6描述的那些上下文。
在303处,管理程序将连接的虚拟消息接收引擎(VMRE)和虚拟消息发送引擎(VMTE)的逻辑地址传输至内核。VMRE和VMTE对应于用作到涉及消息引擎连接的物理消息引擎的逻辑接口的地址。
在304处,内核请求管理程序将其发送队列(SQ)连接到远程接收队列(RQ)。
在305处,控制消息接收的消息接收机指示准备好接收消息。消息接收机可以但不限于是:应用程序软件、内核、软交换或固定功能加速器。
在306处,管理程序分配SQ、RQ和完整队列(CQ),并且向内核指示所分配的SQ、RQ和CQ。
此后,物理发射机消息引擎将部分地使用SQ识别的内容传输至部分地使用RQ识别的位置。RQ可以存在于可分页存储器中。在一个实施例中,发送消息引擎使用数据移动程序来从由SQ识别的线性地址的内容形成消息段。发送消息引擎使用数据移动程序来将消息段放置到该消息互连上的内部缓冲挂起传输中。接收消息引擎使用数据移动程序来将消息段放置到由RQ识别的线性地址中。线性地址是被映射到CPU页表中的连续地址,并且这些线性地址可以由软件本地访问。
完整队列(CQ)允许VME来通知软件活动,例如接收或发送消息。CQ可以与一个或多个SQ或者一个或多个RQ相关联。CQ及其相关联的RQ或SQ可以与VME存在于相同的地址空间中。CQ可以位于连续的虚拟地址空间中。CQ可以存在于可分页存储器中并且VME可能引起尝试读或写CQ的页失效。
可能在VME访问用来针对特定队列发送和接收消息的虚拟缓冲器时发生页失效。具有要发送的消息的VMTE将开始对消息进行分段并且将这些段提供给PME。PME将段发送到由链路信用限制的接收方并且遵守发送队列优先级。
如果VMTE在读取消息缓冲器时遇到页失效,则VMTE采取下列动作:1)针对该SQ将其当前上下文推入失效上下文缓冲器(未描述)中;2)停止从失效发送队列的消息发送;3)中断与VME相关联的线程以解决该失效;以及4)恢复对所有其它发送队列的正常处理。
对于该部分,失效处理程序线程可以采取下列动作:
1.读失效上下文缓冲器并且将失效页加载到存储器中。
2.写失效SQ的VME门铃(doorbell)以恢复消息发送。
当检测到门铃时,VME可以采取下列动作:
1.继续正常处理更高优先级SQ。
2.在没有更高优先级的SQ具有要发送的消息之后,VMTE针对失效的SQ加载失效的上下文缓冲器。
3.从第一失效段开始恢复对消息进行分段。
VMRE通过将从PME接收的段写入存储器中的相应消息缓冲器中来对这些段进行重组。如果VMRE在写接收队列时遇到页失效,则VMRE可以采取下列动作。
1.针对该RQ将其当前上下文推入失效上下文缓冲器中。
2.将FAULT消息发送到发送VMTE。该FAULT消息指示失效消息段的MSN。
3.中断与VMRE相关联的线程以解决该失效。
4.丢弃针对该消息接收的任何进一步的消息段。
5.继续正常接受和放置针对其它队列(非页失效)的消息段。
失效处理程序线程可以采取下列动作:
1.将失效上下文缓冲器和失效页读取到存储器中。
2.构建到发送机的消息以通知发送机恢复对失效消息的发送。该消息的内容取决于VMTE的具体性质。
图4A描述了根据实施例的消息引擎的简化框图。例如,消息引擎400可以用来将消息发送到任何其它的消息引擎,例如可以包含在网络接口中的消息引擎。消息引擎400还可以用来从另一消息引擎接收消息。网络接口能够发送和接收网络协议单元。如本文中所使用的,“网络协议单元”可以包括任意分组或帧或具有根据任何协议规范形成的头和有效载荷部分的其它格式的信息。
I/O接口402可以对接收的以太网帧执行介质访问控制(MAC)、过滤和循环冗余校验(CRC)操作以及对要发送的以太网帧执行介质访问控制。在其它实施例中,I/O接口402可以针对其它规范的帧和分组执行协议编码和解码。
缓冲器403-A可以存储由I/O接口402处理的所接收的以太网帧,而缓冲器403-B可以在由I/O接口402处理之前存储要被发送的以太网帧。
消息分段块404能够将来自缓冲器403-A的以太网帧分段成与基础消息互连兼容的大小的消息。消息分段块404可以查询消息路由表410来确定以其来传输消息的虚拟消息接收引擎(VMRE)、队列号(QN)和消息序列号(MSN),其中所述消息传输所接收的以太网帧的内容。消息分段块404可以传输要被发送到缓冲器407-A中的消息段。可以使用发送队列(SQ)来识别缓冲器407-A。消息分段块404可以使用数据移动程序(未描述)将消息段从缓冲器407-A传输至与VMRE、QN和MSN相关联的位置。
缓冲器407-B可以存储通过互连接收的消息段。可以使用接收队列(RQ)部分地识别缓冲器407-B。消息重组块406可以使用数据移动程序(未描述)来将消息段传输至缓冲器407-B。
消息重组块406能够将缓冲器407-B中的消息段重组成完整的消息并且将这些内容提供到缓冲器403-B中以用于在一个或多个网络协议单元中进行发送。
接口408可以将消息从消息分段块404传输到互连并且将消息从互连传输到消息重组块406。
图4B以框图形式描述了根据实施例的使用消息引擎来与外部设备进行通信的网络通信系统。例如,系统450可以具有使用接收(RX)消息引擎454传输接收的以太网帧的以太网兼容网络接口的能力。系统450还使用发送(TX)消息引擎456来接收以太网网络接口的消息,所述消息包括要在以太网帧中发送的数据或控制或管理信息。系统450可以对其它类型的网络协议单元进行编码和解码,所述其它类型的网络协议单元例如但不限于是串行ATA和无限带宽(Infiniband)。
在该实例中,MAC RX块接受来自外部以太网介质PHY的以太网帧。MAC RX块对原始分组执行组帧和以太网CRC操作。过滤器块丢弃与过滤器规则不匹配的分组。小型接收(RX)缓冲器块提供缓冲来处理消息互连抖动。
消息映射块452为来自小型RX缓冲器的业务确定目标消息引擎和队列的地址。例如,消息映射块452可以考虑以太网帧的源地址、目标地址和/或有效载荷,以识别该业务的目标消息引擎和队列。可以基于虚拟消息接收引擎(VMRE)的标识符、队列号(QN)和消息序列号(MSN)来识别目标消息引擎和队列。多个目标消息引擎可以是可用的,其中每个目标消息引擎与一核心相关联。消息映射块452可以使用类似于接收端调节(RSS)或应用程序目标路由的分配方案来向核心分配以太网帧的内容,但是也可以使用其它方案。消息映射块452可以使用查找操作来确定消息段头(例如,非数据部分)的内容。
接收(RX)消息引擎454可以形成消息段并且使用互连将消息发送到目标消息引擎(未描述)。目标消息引擎(未描述)可以接收消息以用于由核心、硬件加速器或网络协议卸载处理器(例如,iSCSI)进行处理。
发送(TX)消息引擎456可以接收来自源消息引擎的消息。TX消息引擎456可以从管芯上(on-die)互连接收消息段。TX消息引擎456可以检查所接收消息的有效载荷以确定该消息是否包含控制、数据或管理内容。TX消息引擎456将控制段指向控制块,将管理段指向管理块,以及将数据段指向数据块。
可以使用消息来发送控制信息,以替代使用基于存储器的交互(例如,PCI)。例如,消息中的控制信息可以用来配置和指导运行时行为。例如,控制消息可以设置链路速度。
控制块实现I/O桥控制功能,例如控制其它功能块和外部以太网介质PHY。数据块可以从消息段形成以太网数据帧。管理块可以从消息段形成例如PAUSE之类的以太网控制帧或其它帧。控制块可以与核心或平台中的其它设备交换控制消息。例如,控制块可以支持允许I/O桥中其它块的配置的控制消息。
小型发送(TX)缓冲器块提供缓冲以处理消息互连抖动。MAC发送(TX)块在向以太网介质PHY发送分组之前执行组帧和CRC操作。
在一些实施例中,系统450在平台中提供比传统的分立网络接口更少的专用硅。在一些实施例中,系统450在以太网线路和核心之间提供精益路径(lean path),并且与执行直接存储器访问(DMA)的传统网络接口相比消除了延迟。在一些实施例中,软件可以实现OSI层2特征而非传统网络接口中的固定硅门。在一些实施例中,与具有DMA的传统网络接口不同,系统450不需要与处理分组的核心共享的一致性存储器。
图5描述了根据实施例的消息引擎的高级框图。消息引擎500应处理器、核心或硬件线程的请求提供消息段的发送,以及提供消息段的接收以用于由处理器、核心或硬件线程进行处理。
对于消息发送,消息分段块504可以对使用发送队列512识别的消息进行分段以用于通过互连进行发送。尽管没有描述,但是消息分段块504可以使用数据移动程序将使用发送队列512识别的消息段传输到使用接收队列(未描述)识别的位置。因此,使用一个本地SQ和一个本地RQ的内容进行存储器到存储器的传输,并且消息引擎可以不与另一消息引擎的队列进行直接交互。
对于从互连接收的消息段,消息重组块506可以重组消息并且将消息存储在接收队列510中。尽管没有描述,但是消息重组块506可以使用数据移动程序来将消息段从与另一消息引擎相关联的发送队列(二者均未描述)传输到使用接收队列510识别的位置。
读/写块502允许从使用虚拟存储器中的发送队列512识别的位置读取用于传输的消息,其中使用由转换后援缓冲器(TLB)514提供的虚拟-物理地址转换来使用发送队列512识别位置。读/写块502允许将消息写入使用虚拟存储器中的接收队列510识别的位置,其中使用由转换后援缓冲器(TLB)514提供的虚拟-物理地址转换来使用接收队列510识别位置。在一个实施例中,读/写块502能够以与硬件线程相同的方式将消息段写入一致性存储器以及从一致性存储器读取消息段。读/写块502可以与核心中的硬件线程共享高速缓存分层和存储器管理单元(MMU)。
转换后援缓冲器(TLB)514和页未命中处理程序(PMH)516提供存储器管理单元(MMU)功能。响应于读/写块502提供的虚拟地址,TLB 514将虚拟地址转换成物理地址。超线程HT0或HT1可以对PMH 516中的条目执行地址转换。如果TLB 514中没有可用的条目,则PMH 516从页表地址检索地址并且将地址存储在TLB 514中。PMH 516可以和与核心相关联的硬件线程共享。PMH 516还可以由一个或多个消息引擎专用。
接口508可以在互连和消息分段块504与消息重组块506之间提供物理层接口。
图6描述了根据实施例的用于定义可用虚拟消息接收引擎(VMRE)的上下文的示例性格式。版本字段(位7-0)指示协议的版本。ASID字段指定由转换后援缓冲器(TLB)用于虚拟到物理地址转换的应用程序空间标识符。CR3字段指定由页未命中处理程序用于虚拟到物理地址转换的页表地址。队列表地址字段指定该VMRE支持的队列阵列的可分页存储器地址。
物理消息引擎(PME)使用至少发送和接收消息的虚拟消息引擎(VME)来向硬件线程提供虚拟化接口。PME还向硬件线程提供物理接口以用于消息引擎硬件的控制和配置。到PME的物理接口可以不执行虚拟存储器转换。相反,PME的物理接口可以与主机物理地址空间中的固定(pinned)存储器进行交互。PME的物理接口也可以与核心中的寄存器进行交互。
虚拟消息引擎(VME)可以使用MMU页表执行存储器转换并且与虚拟存储器进行交互。与软件线程一样,VME访问与指向页表结构顶部的ASID和CR3指针相关联的存储器。VME可以与和地址空间相关联的软件线程共享ASID和CR3值,尽管这并不是必需的。系统软件可以将VME视为由ASID识别的地址空间中的线程。例如,只要VMTE或VMRE可以发送或接收消息,那么系统软件就可以将VME使用的页表保持为一致状态。与软件线程一样,可以应用标准TLB击落规则。
图7描述了根据实施例的用于发送队列中的空操作命令的示例性格式。发送队列(SQ)条目指导VMTE执行不发送消息的空操作。命令字段(位7-0)针对空操作命令为0。当设置了立即中断(II)字段时,该立即中断(II)字段指导VME立即生成CQ中断,而不考虑中断延迟间隔。
图8描述了根据实施例的用于发送队列中的命令的示例性格式。该命令命令VMTE发送消息。命令字段(位7-0)针对发送命令为1。当设置了立即中断(II)字段时,该立即中断(II)字段指导VME立即生成CQ中断,而不考虑中断延迟间隔。VME地址字段指定消息的目标VMRE。队列号字段指定该消息的目标队列号。大小字段指定要发送的连续虚拟存储器中的字节数。地址字段指定可缓存可分页存储器中要发送的数据的虚拟地址。
图9描述了根据实施例的接收队列中的示例性条目。命令字段(位7-0)针对接收命令为0。当设置了立即中断(II)字段时,该立即中断(II)字段指导VME立即生成CQ中断,而不考虑中断延迟间隔。大小字段指定接收缓冲器的连续虚拟存储器的字节数。当针对该描述符的消息接收操作完成时,VMRE更新大小字段以包含接收的消息段的实际数量。地址字段指定接收缓冲器的可缓存可分页存储器中的虚拟地址。
图10描述了根据实施例的示例性消息段格式。RT字段指定CTS消息中返回的重组标签。目标VME地址字段指定段的目标VMRE。MSO字段指定字段的消息段偏移。MSO包含该段相对于消息开始处的位置。整个消息的第一段被编号为0。该段的数据部分包含该段的数据有效载荷。有效载荷的长度是链路层指定的。尽管没有描述,但是消息段格式还可以包括指示段是消息的最后段的最后字段。
图11描述了根据实施例的示例性请求发送(RTS)消息格式。针对RTS消息将命令字段设置为1。目标VME地址字段指定消息的目标VMRE。源VME地址字段指定消息的源VMTE。QN字段指定所指定的地址空间标识符中的目标队列号。MSN字段指定所指定的队列号中的消息序列号。RID字段指定接收方可以在与该请求相关联的CTS消息中逐个返回的请求ID。
最大消息大小可以小于巨型帧大小。在实施例中,可以针对属于同一连接的若干相邻消息来发送单个RTS消息,其中所述相邻消息用于发送巨型帧。可以将“消息数量”字段添加至RTS消息中以识别与单个RTS消息和巨型帧相关联的消息数量。例如,图11中的当前保留字段的部分可以包括消息数量字段。此外,在图10中,MSO字段的一小部分可以用来识别一个RTS或RT中的消息数量。
图12描述了根据实施例的示例性清除发送(CTS)消息格式。可以针对CTS消息将命令字段设置为2。目标VME地址字段指定消息的目标VMRE。源VME地址字段指定消息的源VMTE。RT字段指定重组标签。对于随后的消息段,VMTE将该值放入该消息的每个段的RT字段中。RT值的高位字节被设置为0。RID字段指定由VMTE在RTS消息中提供的请求ID。RID字段允许VMTE将CTS消息与未完成的RTS消息相关联。
图13A描述了根据实施例的使用消息引擎从IO设备传输消息的处理1300的示例性流程图。框1302可以包括从网络接收网络协议单元。例如,框1302可以包括接收以太网帧。
框1304可以包括识别与接收的帧相关联的虚拟消息接收引擎(VMRE)和目标队列。VMRE可以与用于接收由核心处理的消息的消息引擎相关联。可以如关于图2描述的那样识别VMRE和目标队列(QN)。
框1306可以包括对消息进行分段以用于发送到VMRE。虚拟消息发送引擎(VMTE)可以对消息进行分段。消息段的格式可以如关于图10所描述的那样。
框1308可以包括将每个段发送到目标位置。可以由处理每个接收的段的逻辑部分地基于来自该段的接收队列中的描述符、重组标签(RT)和消息段偏移(MSO)来识别虚拟存储器中的目标位置。
图13B描述了根据实施例的在IO设备处使用消息引擎接收消息的处理1350的示例性流程图。
框1352可以包括将接收的消息段重组成完整的消息。可以无序地接收消息。消息中的消息段偏移(MSO)字段可以用来将这些段适当地排序成消息。
框1354可以包括确定消息内容的类型。例如,内容可以是控制、数据或管理内容。
框1356可以包括准备具有数据或控制内容的网络协议单元以用于发送。例如,框1356可以包括准备具有数据或控制内容的以太网帧以用于发送。
本发明的实施例可以被提供为例如可以包括一个或多个机器可读介质的计算机程序产品,所述机器可读介质存储有机器可执行指令,所述机器可执行指令在由诸如计算机、计算机网络或其它电子设备执行时,可以使一个或多个机器执行根据本发明实施例的操作。机器可读介质可以包括但不限于是:软盘、光学盘、CD-ROM(光盘-只读存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁或光卡、闪速存储器或适于存储机器可执行指令的其它类型的介质/机器可读介质。
附图和以上描述给出了本发明的实例。尽管被描述为多个不同的功能项,但是本领域技术人员将意识到,一个或多个这种元件可以被很好地组合到单个功能元件中。可替换地,某些元件可以被分为多个功能元件。一个实施例中的元件可以添加到另一实施例。例如,本文描述的处理的顺序可以改变并且不限于本文描述的方式。此外,任何流程图中的动作不需要以示出的顺序来实现;也不是所有的动作一定需要执行。此外,不依赖于其它动作的那些动作可以与其它动作并行地执行。然而,本发明的范围不限制于这些具体的实例。无论是否在说明书中明确给出,例如材料的结构、尺度和使用的不同之类的多种变型是可能的。本发明的范围至少与所附权利要求给出的范围一样宽。
Claims (22)
1.一种方法,包括:
接收网络协议单元;
确定用于处理所述网络协议单元的虚拟消息发送引擎;
确定用于接收所述网络协议单元的虚拟消息接收引擎;
将所述网络协议单元的内容转换成一个或多个消息段;以及
将所述消息段发送到与所述虚拟消息接收引擎相关联的队列。
2.根据权利要求1所述的方法,其中,所述发送包括将所述消息段发送到所述队列,而不需要识别所述队列的目标存储器地址。
3.根据权利要求1所述的方法,其中,所述消息段包括重组标签字段和消息段偏移字段,并且所述方法还包括:
基于所述重组标签字段识别所述队列;
基于所述重组标签字段识别所述队列中的缓冲器;以及
部分地基于所述消息段偏移字段来识别用于存储所述消息段中的至少一个消息段的所述缓冲器中的位置。
4.根据权利要求1所述的方法,其中,所述消息段中的至少一个消息段包括:
链路级地址;
所述虚拟消息接收引擎的地址;
重组标签字段;
消息段偏移字段;以及
数据部分。
5.根据权利要求1所述的方法,其中,所述网络协议单元是以太网兼容的。
6.根据权利要求1所述的方法,还包括:
接收消息段;
将消息段重组为消息;以及
基于所述消息的内容形成第二网络协议单元。
7.根据权利要求6所述的方法,其中,所接收的消息段的内容包括控制、数据和管理信息中的至少一个。
8.根据权利要求6所述的方法,其中,所接收的消息段来自于与核心相关联的消息引擎。
9.一种装置,包括:
用于接收网络协议并且对所述网络协议单元执行介质访问控制、过滤和缓冲的逻辑;
消息映射器,用于确定与所述网络协议单元相关联的目标虚拟消息引擎;以及
消息引擎,用于使用至少一个消息将所述网络协议单元的内容发送到与所述目标虚拟消息引擎相关联的队列,而不需要所述至少一个消息识别所述队列的存储器地址。
10.根据权利要求9所述的装置,其中,所述消息映射器用于基于接收端调节分配目标虚拟消息引擎。
11.根据权利要求9所述的装置,其中,所述目标虚拟消息引擎是与核心相关联的。
12.根据权利要求9所述的装置,其中,所述消息引擎用于从所述至少一个消息形成至少一个段。
13.根据权利要求12所述的装置,其中,所述至少一个段包括:
链路层;
目标虚拟消息引擎地址;
重组标签字段;
消息段偏移字段;以及
数据部分。
14.根据权利要求13所述的装置,其中,所述队列是基于所述重组标签字段的,并且还包括:
基于所述重组标签字段的所述队列中的缓冲器;以及
部分地基于所述消息段偏移字段的用于存储所述消息段中的至少一个消息段的所述缓冲器中的位置。
15.根据权利要求9所述的装置,还包括:
用于准备网络协议单元以用于发送的逻辑;以及
第二消息引擎,用于接收至少一个消息,并且将所接收的至少一个消息的内容提供给所述用于准备网络协议单元以用于发送的逻辑。
16.一种系统,包括:
存储设备;
网络接口,用于接收网络协议单元;以及
第一消息引擎,用于从所述网络协议单元的内容形成至少一个消息,并且将所述至少一个消息发送到第二消息引擎,而不需要知道所述消息的目标存储器地址。
17.根据权利要求16所述的系统,其中,所述第一消息引擎和所述第二消息引擎不维持存储器一致性。
18.根据权利要求16所述的系统,其中,所述第一消息引擎和所述第二消息引擎不访问同一物理存储器。
19.根据权利要求16所述的系统,其中,所述第一消息引擎包括:
消息映射器,用于确定与所述网络协议单元相关联的目标虚拟消息引擎;以及
用于使用至少一个消息将所述网络协议单元的内容发送到与所述目标虚拟消息引擎相关联的队列的逻辑。
20.根据权利要求16所述的系统,其中,所述第一消息引擎用于从所述至少一个消息形成至少一个段。
21.根据权利要求20所述的系统,其中,所述至少一个段包括:
链路层;
目标虚拟消息引擎地址;
重组标签字段;
消息段偏移字段;以及
数据部分。
22.根据权利要求21所述的系统,其中,所述队列是基于所述重组标签字段的,并且还包括:
基于所述重组标签字段的所述队列中的缓冲器;以及
部分地基于所述消息段偏移字段的用于存储所述消息段中的至少一个消息段的所述缓冲器中的位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/319,099 | 2008-12-30 | ||
US12/319,099 US7996548B2 (en) | 2008-12-30 | 2008-12-30 | Message communication techniques |
CN200980155570.5A CN102301671B (zh) | 2008-12-30 | 2009-12-17 | 消息通信技术 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980155570.5A Division CN102301671B (zh) | 2008-12-30 | 2009-12-17 | 消息通信技术 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699525A true CN104699525A (zh) | 2015-06-10 |
CN104699525B CN104699525B (zh) | 2018-04-06 |
Family
ID=42286256
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510157932.1A Expired - Fee Related CN104699525B (zh) | 2008-12-30 | 2009-12-17 | 消息通信技术 |
CN200980155570.5A Expired - Fee Related CN102301671B (zh) | 2008-12-30 | 2009-12-17 | 消息通信技术 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980155570.5A Expired - Fee Related CN102301671B (zh) | 2008-12-30 | 2009-12-17 | 消息通信技术 |
Country Status (6)
Country | Link |
---|---|
US (3) | US7996548B2 (zh) |
EP (1) | EP2382757A4 (zh) |
JP (1) | JP5305549B2 (zh) |
KR (1) | KR101300447B1 (zh) |
CN (2) | CN104699525B (zh) |
WO (1) | WO2010078010A2 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996548B2 (en) | 2008-12-30 | 2011-08-09 | Intel Corporation | Message communication techniques |
US8645596B2 (en) * | 2008-12-30 | 2014-02-04 | Intel Corporation | Interrupt techniques |
US20130141446A1 (en) * | 2011-12-06 | 2013-06-06 | Advanced Micro Devices, Inc. | Method and Apparatus for Servicing Page Fault Exceptions |
US8812438B2 (en) * | 2012-01-20 | 2014-08-19 | Salesforce.Com, Inc. | System, method and computer program product for synchronizing data using data identifying messages |
US9094351B2 (en) * | 2013-03-14 | 2015-07-28 | Red Hat Israel, Ltd. | Implicit and dynamic receive queue assignment in virtualized systems |
US10027604B2 (en) | 2015-11-24 | 2018-07-17 | Red Hat Israel, Ltd. | Implicit dynamic receive queue steering for unidirectional flows in virtualized systems |
CN107204908A (zh) * | 2016-03-17 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种基于通信接口框架的消息发送、接收方法及装置 |
US20180039518A1 (en) * | 2016-08-02 | 2018-02-08 | Knuedge Incorporated | Arbitrating access to a resource that is shared by multiple processors |
US11507404B2 (en) * | 2016-12-28 | 2022-11-22 | Intel Corporation | Virtualized remote direct memory access |
US10439946B2 (en) * | 2017-02-10 | 2019-10-08 | Intel Corporation | Technologies for endpoint congestion avoidance |
JP6954535B2 (ja) * | 2017-10-25 | 2021-10-27 | 日本電信電話株式会社 | 通信装置 |
US11269782B2 (en) * | 2018-03-28 | 2022-03-08 | Intel Corporation | Address space identifier management in complex input/output virtualization environments |
JP7309579B2 (ja) | 2019-11-14 | 2023-07-18 | 株式会社東芝 | 通信装置、通信方法及びプログラム |
US11463547B2 (en) * | 2019-12-12 | 2022-10-04 | Google Llc | Reliable transport protocol and hardware architecture for datacenter networking |
JP2021141536A (ja) * | 2020-03-09 | 2021-09-16 | オムロン株式会社 | 通信制御機器および通信制御機器の制御方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6219728B1 (en) * | 1996-04-22 | 2001-04-17 | Nortel Networks Limited | Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor |
US6332180B1 (en) * | 1998-06-10 | 2001-12-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for communication in a multi-processor computer system |
US6490280B1 (en) * | 1999-03-31 | 2002-12-03 | Advanced Micro Devices, Inc. | Frame assembly in dequeuing block |
US6789156B1 (en) * | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
Family Cites Families (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5454536A (en) | 1977-10-08 | 1979-04-28 | Fujitsu Ltd | Data processor |
US4365294A (en) | 1980-04-10 | 1982-12-21 | Nizdorf Computer Corporation | Modular terminal system using a common bus |
US5613128A (en) | 1990-12-21 | 1997-03-18 | Intel Corporation | Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller |
JP3093543B2 (ja) * | 1993-12-20 | 2000-10-03 | 富士通株式会社 | フレーム通信装置 |
GB2308779B (en) | 1995-12-28 | 1998-06-10 | Nokia Telecommunications Oy | Telecommunications network management system |
US5982783A (en) | 1997-06-16 | 1999-11-09 | Lucent Technologies Inc. | Switch distribution via an intermediary switching network |
US6044415A (en) * | 1998-02-27 | 2000-03-28 | Intel Corporation | System for transferring I/O data between an I/O device and an application program's memory in accordance with a request directly over a virtual connection |
JPH11249978A (ja) * | 1998-03-04 | 1999-09-17 | Nippon Telegr & Teleph Corp <Ntt> | データ転送方法および装置 |
US6148361A (en) | 1998-12-17 | 2000-11-14 | International Business Machines Corporation | Interrupt architecture for a non-uniform memory access (NUMA) data processing system |
US6467007B1 (en) | 1999-05-19 | 2002-10-15 | International Business Machines Corporation | Processor reset generated via memory access interrupt |
US6658522B1 (en) * | 2000-06-16 | 2003-12-02 | Emc Corporation | Method to reduce overhead associated with system I/O in a multiprocessor computer system |
US6898638B2 (en) * | 2001-01-11 | 2005-05-24 | International Business Machines Corporation | Method and apparatus for grouping data for transfer according to recipient buffer size |
US7379475B2 (en) | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
US7620955B1 (en) | 2001-06-08 | 2009-11-17 | Vmware, Inc. | High-performance virtual machine networking |
US20030018828A1 (en) * | 2001-06-29 | 2003-01-23 | International Business Machines Corporation | Infiniband mixed semantic ethernet I/O path |
US7212528B2 (en) * | 2001-12-21 | 2007-05-01 | Alcatel Canada Inc. | System and method for reassembling packets in a network element |
CA2369432A1 (en) * | 2002-01-24 | 2003-07-24 | Alcatel Canada Inc. | System and method for reassembling packets in a network element |
US7219121B2 (en) | 2002-03-29 | 2007-05-15 | Microsoft Corporation | Symmetrical multiprocessing in multiprocessor systems |
WO2003104943A2 (en) * | 2002-06-11 | 2003-12-18 | Ashish A Pandya | High performance ip processor for tcp/ip, rdma and ip storage applications |
US7069438B2 (en) | 2002-08-19 | 2006-06-27 | Sowl Associates, Inc. | Establishing authenticated network connections |
US7724740B1 (en) * | 2002-08-27 | 2010-05-25 | 3Com Corporation | Computer system and network interface supporting class of service queues |
US7269133B2 (en) | 2002-09-03 | 2007-09-11 | Jeremy Benjamin | IS-IS high availability design |
US7181744B2 (en) * | 2002-10-24 | 2007-02-20 | International Business Machines Corporation | System and method for transferring data between virtual machines or other computer entities |
US7784044B2 (en) | 2002-12-02 | 2010-08-24 | Microsoft Corporation | Patching of in-use functions on a running computer system |
US7076802B2 (en) | 2002-12-31 | 2006-07-11 | Intel Corporation | Trusted system clock |
US7000051B2 (en) | 2003-03-31 | 2006-02-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7412536B2 (en) * | 2003-06-27 | 2008-08-12 | Intel Corporation | Method and system for a network node for attachment to switch fabrics |
US7437511B1 (en) * | 2003-06-30 | 2008-10-14 | Storage Technology Corporation | Secondary level cache for storage area networks |
US8984199B2 (en) | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
US7516333B2 (en) | 2003-08-01 | 2009-04-07 | Mamoon Yunis | Hybrid Java-C network appliance |
US7146457B2 (en) | 2003-09-24 | 2006-12-05 | Hewlett-Packard Development Company, L.P. | Content addressable memory selectively addressable in a physical address mode and a virtual address mode |
US7363407B2 (en) * | 2003-09-29 | 2008-04-22 | Microsoft Corporation | Concurrent arbitration of multidimensional requests for interrupt resources |
US7460531B2 (en) | 2003-10-27 | 2008-12-02 | Intel Corporation | Method, system, and program for constructing a packet |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
US7162666B2 (en) | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US7783769B2 (en) | 2004-03-31 | 2010-08-24 | Intel Corporation | Accelerated TCP (Transport Control Protocol) stack processing |
US7089341B2 (en) * | 2004-03-31 | 2006-08-08 | International Business Machines Corporation | Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform |
US7764709B2 (en) | 2004-07-07 | 2010-07-27 | Tran Hieu T | Prioritization of network traffic |
US7548513B2 (en) | 2005-02-17 | 2009-06-16 | Intel Corporation | Techniques to provide recovery receive queues for flooded queues |
US7765405B2 (en) | 2005-02-25 | 2010-07-27 | Microsoft Corporation | Receive side scaling with cryptographically secure hashing |
US20060227788A1 (en) | 2005-03-29 | 2006-10-12 | Avigdor Eldar | Managing queues of packets |
US20060236011A1 (en) | 2005-04-15 | 2006-10-19 | Charles Narad | Ring management |
US7613864B2 (en) | 2005-04-22 | 2009-11-03 | Sun Microsystems, Inc. | Device sharing |
US7409589B2 (en) * | 2005-05-27 | 2008-08-05 | International Business Machines Corporation | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor |
US7370137B2 (en) * | 2005-06-06 | 2008-05-06 | Intel Corporation | Inter-domain data mover for a memory-to-memory copy engine |
JP5048947B2 (ja) | 2005-12-28 | 2012-10-17 | 花王株式会社 | 水性洗浄剤組成物 |
US7912998B2 (en) * | 2006-01-06 | 2011-03-22 | Hewlett-Packard Development Company, L.P. | DMA access systems and methods |
US20070168525A1 (en) * | 2006-01-18 | 2007-07-19 | Deleon Baltazar Iii | Method for improved virtual adapter performance using multiple virtual interrupts |
FR2896368B1 (fr) | 2006-01-18 | 2008-03-14 | Atmel Corp | Appareil pour ameliorer l'efficacite du microprogramme pour une interface serie multitrame |
US7584286B2 (en) | 2006-06-28 | 2009-09-01 | Intel Corporation | Flexible and extensible receive side scaling |
US20080002724A1 (en) | 2006-06-30 | 2008-01-03 | Karanvir Grewal | Method and apparatus for multiple generic exclusion offsets for security protocols |
US8468526B2 (en) * | 2006-06-30 | 2013-06-18 | Intel Corporation | Concurrent thread execution using user-level asynchronous signaling |
US20080059686A1 (en) * | 2006-08-31 | 2008-03-06 | Keith Iain Wilkinson | Multiple context single logic virtual host channel adapter supporting multiple transport protocols |
US8249089B2 (en) * | 2006-09-29 | 2012-08-21 | Intel Corporation | Methods for pushing address translations mappings to PCI express endpoints |
US20080086575A1 (en) * | 2006-10-06 | 2008-04-10 | Annie Foong | Network interface techniques |
US7746223B2 (en) | 2006-12-01 | 2010-06-29 | Embarq Holdings Company, Llc | System and method for receiving security content from wireless cameras |
US20090006521A1 (en) | 2007-06-29 | 2009-01-01 | Veal Bryan E | Adaptive receive side scaling |
US7627706B2 (en) * | 2007-09-06 | 2009-12-01 | Intel Corporation | Creation of logical APIC ID with cluster ID and intra-cluster ID |
US8032681B2 (en) * | 2007-09-06 | 2011-10-04 | Intel Corporation | Processor selection for an interrupt based on willingness to accept the interrupt and on priority |
US7769938B2 (en) * | 2007-09-06 | 2010-08-03 | Intel Corporation | Processor selection for an interrupt identifying a processor cluster |
US20090086736A1 (en) | 2007-09-28 | 2009-04-02 | Annie Foong | Notification of out of order packets |
US20090097495A1 (en) * | 2007-10-11 | 2009-04-16 | Brocade Communications Systems, Inc. | Flexible virtual queues |
US7836195B2 (en) | 2008-02-27 | 2010-11-16 | Intel Corporation | Preserving packet order when migrating network flows between cores |
JP5119994B2 (ja) * | 2008-03-14 | 2013-01-16 | 富士通株式会社 | 性能モニタリングプログラム、性能モニタリング方法、性能モニタリング装置 |
JP2009238001A (ja) * | 2008-03-27 | 2009-10-15 | Texas Instr Japan Ltd | コンピュータシステム |
US20090300629A1 (en) | 2008-06-02 | 2009-12-03 | Mois Navon | Scheduling of Multiple Tasks in a System Including Multiple Computing Elements |
US20100017583A1 (en) | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
US8667187B2 (en) * | 2008-09-15 | 2014-03-04 | Vmware, Inc. | System and method for reducing communication overhead between network interface controllers and virtual machines |
US7962647B2 (en) * | 2008-11-24 | 2011-06-14 | Vmware, Inc. | Application delivery control module for virtual network switch |
US7996548B2 (en) | 2008-12-30 | 2011-08-09 | Intel Corporation | Message communication techniques |
US8645596B2 (en) | 2008-12-30 | 2014-02-04 | Intel Corporation | Interrupt techniques |
US8151027B2 (en) | 2009-04-08 | 2012-04-03 | Intel Corporation | System management mode inter-processor interrupt redirection |
-
2008
- 2008-12-30 US US12/319,099 patent/US7996548B2/en active Active
-
2009
- 2009-12-17 EP EP09836934.1A patent/EP2382757A4/en not_active Withdrawn
- 2009-12-17 JP JP2011543585A patent/JP5305549B2/ja not_active Expired - Fee Related
- 2009-12-17 KR KR1020117017993A patent/KR101300447B1/ko not_active IP Right Cessation
- 2009-12-17 CN CN201510157932.1A patent/CN104699525B/zh not_active Expired - Fee Related
- 2009-12-17 CN CN200980155570.5A patent/CN102301671B/zh not_active Expired - Fee Related
- 2009-12-17 WO PCT/US2009/068396 patent/WO2010078010A2/en active Application Filing
-
2011
- 2011-06-30 US US13/173,459 patent/US8307105B2/en active Active
-
2012
- 2012-10-29 US US13/662,989 patent/US8751676B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6219728B1 (en) * | 1996-04-22 | 2001-04-17 | Nortel Networks Limited | Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor |
US6332180B1 (en) * | 1998-06-10 | 2001-12-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for communication in a multi-processor computer system |
US6490280B1 (en) * | 1999-03-31 | 2002-12-03 | Advanced Micro Devices, Inc. | Frame assembly in dequeuing block |
US6789156B1 (en) * | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
Also Published As
Publication number | Publication date |
---|---|
CN102301671B (zh) | 2015-04-15 |
US8751676B2 (en) | 2014-06-10 |
EP2382757A4 (en) | 2014-01-01 |
US7996548B2 (en) | 2011-08-09 |
US20130055263A1 (en) | 2013-02-28 |
US8307105B2 (en) | 2012-11-06 |
CN104699525B (zh) | 2018-04-06 |
KR20110099796A (ko) | 2011-09-08 |
JP5305549B2 (ja) | 2013-10-02 |
WO2010078010A2 (en) | 2010-07-08 |
JP2012514386A (ja) | 2012-06-21 |
US20100169501A1 (en) | 2010-07-01 |
CN102301671A (zh) | 2011-12-28 |
EP2382757A2 (en) | 2011-11-02 |
US20110258283A1 (en) | 2011-10-20 |
WO2010078010A3 (en) | 2010-09-23 |
KR101300447B1 (ko) | 2013-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102301671B (zh) | 消息通信技术 | |
US8645596B2 (en) | Interrupt techniques | |
Dubnicki et al. | Design and implementation of virtual memory-mapped communication on myrinet | |
EP1358562B8 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
KR100555394B1 (ko) | Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 | |
US6622193B1 (en) | Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system | |
CN101303656B (zh) | 一种Java应用程序远程直接内存访问方法 | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
JP4317365B2 (ja) | 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置 | |
CN101150487A (zh) | 一种零拷贝网络报文发送方法 | |
US11635987B2 (en) | System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries | |
US9288163B2 (en) | Low-latency packet receive method for networking devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180406 Termination date: 20191217 |