CN201510157932.1
2009.12.17
CN104699525A
2015.06.10
授权
有权
授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20091217|||公开
G06F9/455; G06F9/54
G06F9/455
英特尔公司
S·金; R·哈加德黑里; X·朱; M·梅蒙; F·贝里; N·巴德瓦伊; A·库马尔; T·维尔克二世
美国加利福尼亚
12/319,099 2008.12.30 US
永新专利商标代理有限公司72002
王英; 张立达
描述了网络协议单元接口,其使用消息引擎将接收的网络协议单元的内容以消息段形式传输到目标消息引擎。该网络协议单元接口使用消息引擎来接收其内容要在网络协议单元中发送的消息。消息引擎将消息段发送到目标消息引擎,而不需要消息引擎发射机和接收机共享存储空间。此外,与存储器地址相反,发射机消息引擎可以通过使用与接收机消息和队列标识符相关联的虚拟地址来将消息段发送到接收机消息引擎。
权利要求书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所述的系统,其中,所述队列是基于所述重组标 签字段的,并且还包括: 基于所述重组标签字段的所述队列中的缓冲器;以及 部分地基于所述消息段偏移字段的用于存储所述消息段中的至少一个 消息段的所述缓冲器中的位置。
说明书消息通信技术 本申请是申请日为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(电可擦除可编程只读存储器)、磁或光卡、闪速存储器 或适于存储机器可执行指令的其它类型的介质/机器可读介质。 附图和以上描述给出了本发明的实例。尽管被描述为多个不同的功能 项,但是本领域技术人员将意识到,一个或多个这种元件可以被很好地组 合到单个功能元件中。可替换地,某些元件可以被分为多个功能元件。一 个实施例中的元件可以添加到另一实施例。例如,本文描述的处理的顺序 可以改变并且不限于本文描述的方式。此外,任何流程图中的动作不需要 以示出的顺序来实现;也不是所有的动作一定需要执行。此外,不依赖于 其它动作的那些动作可以与其它动作并行地执行。然而,本发明的范围不 限制于这些具体的实例。无论是否在说明书中明确给出,例如材料的结构、 尺度和使用的不同之类的多种变型是可能的。本发明的范围至少与所附权 利要求给出的范围一样宽。
《消息通信技术.pdf》由会员分享,可在线阅读,更多相关《消息通信技术.pdf(24页珍藏版)》请在专利查询网上搜索。
描述了网络协议单元接口,其使用消息引擎将接收的网络协议单元的内容以消息段形式传输到目标消息引擎。该网络协议单元接口使用消息引擎来接收其内容要在网络协议单元中发送的消息。消息引擎将消息段发送到目标消息引擎,而不需要消息引擎发射机和接收机共享存储空间。此外,与存储器地址相反,发射机消息引擎可以通过使用与接收机消息和队列标识符相关联的虚拟地址来将消息段发送到接收机消息引擎。。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1