CN103827842A - 向控制器存储器空间写入消息 - Google Patents

向控制器存储器空间写入消息 Download PDF

Info

Publication number
CN103827842A
CN103827842A CN201180073803.4A CN201180073803A CN103827842A CN 103827842 A CN103827842 A CN 103827842A CN 201180073803 A CN201180073803 A CN 201180073803A CN 103827842 A CN103827842 A CN 103827842A
Authority
CN
China
Prior art keywords
message
controller
data
write
storage space
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
Application number
CN201180073803.4A
Other languages
English (en)
Other versions
CN103827842B (zh
Inventor
V·马克赫威克斯
R·O·夏普
K·G·基尔斯
B·S·豪赛厄
S·K·拉森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN103827842A publication Critical patent/CN103827842A/zh
Application granted granted Critical
Publication of CN103827842B publication Critical patent/CN103827842B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • G06F5/14Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

实施例可以包括可以将消息从主机中的系统存储器写入到主机中的输入/输出(I/O)控制器中的存储器空间的电路。主机操作系统可以至少部分地驻留在系统存储器中。消息可以包括数据和与数据相关联的至少一个描述符。数据可以被包括在至少一个描述符中。电路还可以向I/O控制器发出信号,指出已经发生了写入。许多替代方案、变化,以及修改也是可以的。

Description

向控制器存储器空间写入消息
领域
本发明涉及向输入/输出(I/O)控制器存储器空间写入消息。
背景
在一个常规计算配置中,客户端和服务器包括能够使用远程直接存储器访问(RDMA)协议来相互进行通信的相应的I/O控制器。为了从服务器向客户端传输数据,数据和指向该数据的描述符两者都被写入到服务器的主系统存储器中。此后,响应于提供给服务器的I/O控制器的门铃,服务器的I/O控制器读取该描述符。然后,服务器的I/O控制器读取由描述符所指向的数据。然后,服务器的I/O控制器向客户端传输数据。可以理解,从服务器向客户端传输的数据中涉及的延迟随着由服务器的I/O控制器实施的主存储器读取操作的数量而增大。
为了试图减少与服务器主存储器读取操作相关联的等待时间,有人建议将数据内联(例如,在或附近)描述符放置在服务器的主系统存储器中。然而,即使使用此技术,执行从服务器向客户端的数据传输时涉及的等待时间仍可能大于所希望的。
附图简述
随着下列“详细描述”的进行并参考附图,各实施例的特征和优点将变得显而易见,其中,相同编号描绘了相同的部分,其中:
图1示出了一个实施例中的特征。
图2示出了一个实施例中的特征。
图3示出了一个实施例中的特征。
图4示出了一个实施例中的特征。
图5示出了一个实施例中的特征。
图6示出了一个实施例中的特征。
虽然下列“详细描述”将参考说明性实施例来进行,但是,许多替代方案、修改以及其变体将对所属领域的技术人员显而易见。相应地,所要求保护的主题应该从广义上来看待。
具体实施方式
图1示出了系统实施例100。系统100可以包括通过网络50可通信地耦合到服务器20的客户端10。在此实施例中,术语“主机计算机”、“主机”、“服务器”、“客户端”、“网络节点”以及“节点”可以可互换地使用,并可以无限制地表示,例如一个或多个终端站、移动因特网设备、智能电话、媒体设备、输入/输出I/O设备、平板电脑、电器、中间站、网络接口、客户端、服务器和/或其一些部分。虽然客户端10、服务器20以及网络50将以单数引用的,但是应该理解,每一这样的相应的组件都可以包括一个或多个(例如,多个)这样的相应的组件,而不会偏离此实施例。在此实施例中,“网络”可以是或包括至少部分地允许、促进和/或使两个或更多实体可通信地耦合在一起的任何机制、手段、特征和/或其一部分。也在此实施例中,如果第一实体能够向第二实体传输和/或从第二实体接收一个或多个命令和/或数据,则第一实体可以“可通信地耦合”到第二实体。在此实施例中,数据和信息可以可互换地使用,并可以是或包括一个或多个命令(例如,一个或多个程序指令),和/或一个或多个这样的命令可以是或包括数据和/或信息。也在此实施例中,“指令”可以包括数据和/或一个或多个命令。
主机20可以包括电路118,该电路可以包括一个或多个主机处理器(HP)12、主机主系统存储器21和/或I/O控制器120。一个或多个主机处理器12可以是或包括一个或多个多核主机处理器,这些主机处理器可以包括多个主机处理器核(HPC)中央处理单元(CPU)12A...12N。虽然在图中未示出,但是,服务器20还可以包括一个或多个芯片集(包括,例如,存储器、网络和/或I/O控制器电路)。控制器120可以包括远程直接存储器访问(RDMA)网络接口控制器(NIC)210。当然,在不偏离此实施例的情况下,控制器120有利地可以(另选地或另外地)是或包括另一种类型(例如,存储器和/或NIC)的控制器(例如,RDMA NIC之外的和/或作为其补充)。控制器120和/或RDMA NIC(RNIC)210可以至少部分地包括存储器空间60。另选地或另外地,存储器空间60可以至少部分地与控制器120和/或RNIC210相关联(例如,至少部分地以这样的方式,以便紧密耦合到控制器120和/或RNIC210)。在此实施例中,存储器空间可以包括存储器中的一个或多个相邻的和/或非相邻的位置。在此示例性实施例中,存储器空间60可以是或包括,例如,一个或多个存储器映射的I/O(MMIO)空间,这些空间可以使用与用于访问存储器21的那些命令相同或类似的命令来访问,和/或可以包括其他和/或额外的类型的存储器(例如,不可缓存的和/或写入组合),因为可以包含在存储器21中(例如,写回)。在此实施例中,存储器空间60可以包括可以被映射到HP存储器空间的一个或多个控制器地址空间。这些一个或多个控制器地址空间可以与可以通过一个或多个MMIO操作实现和/或控制的资源集相关联。可以动态地管理和/或分配(例如,在运行时)可以指派给资源集的特定地址,并且资源集可以不分配、广告到至少某些软件实体或队列。也在此实施例中,存储器中的位置可以是或包括存储器的能够至少部分地被访问的一个或多个部分。在此实施例中,对存储器的访问可以包括一个或多个对存储器的读取和/或向存储器的写入。NIC210、控制器120、HP12和/或HPC12A...12N能够访问存储器21和/或通过一个或多个这样的芯片集相互进行通信。在此实施例中,客户端10可以至少部分地与主机20远离(例如,在地理位置上远离)。
在此实施例中,“电路”可以包括,例如,单独地或以任何组合地,模拟电路、数字电路、硬连线电路、可编程电路、协处理器电路、状态机电路和/或可以包括可以由可编程电路执行的程序指令的存储器。也在此实施例中,处理器、HP、CPU、处理器核(PC)、HPC、核和控制器中的每一个都可以包括能够至少部分地执行一个或多个算术和/或逻辑操作和/或至少部分地执行一个或多个指令的相应的电路。虽然在图形中未示出,但是,服务器20可以包括图形用户界面系统,该系统可以包括,例如,相应的键盘、指示设备以及可以允许个人用户向服务器20和/或系统100输入命令以及监测服务器20和/或系统100的操作的显示系统。也在此实施例中,存储器可以包括下列类型的存储器中的一种或多种:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存、磁盘存储器、光盘存储器和/或其他或未来开发的计算机可读和/或可写存储器。
一个或多个机器可读程序指令可以至少部分地存储在存储器21中。在服务器20的操作中,这些机器可读的指令可以由一个或多个主机处理器12、一个或多个HPC12A...12N、控制器120和/或NIC210来访问和执行。当如此执行时,这些一个或多个机器可读的指令可以导致一个或多个操作系统(OS)31、一个或多个驱动程序33和/或一个或多个应用程序进程121A...121N至少部分地由一个或多个HP12和/或HPC12A...12N执行,也变得至少部分地驻留在存储器21中。也当这些机器可读指令由一个或多个主机处理器12、一个或多个HPC12A...12N、控制器120和/或NIC210执行时,这些一个或多个指令可以至少部分地导致这些组件中的一个或多个,一个或多个驱动程序33,和/或一个或多个OS31,至少部分地在存储器21中至少部分地建立和/或维护一个或多个消息190A...190N、一个或多个队列119,和/或一个或多个跟踪表151。在此实施例中,一个或多个队列119可以包括一个或多个完成队列(CQ)和/或一个或多个发送队列(SQ)126(参见图3)。在此实施例中,消息可以包括一个或多个符号和/或值,诸如,例如,要被写入到MMIO空间的描述符。作为示例,在此实施例中,消息可以是或包括由一个或多个HPC向一个或多个I/O控制器MMIO空间写入的一个或多个结构。例如,在此实施例中,代替存储在存储器21中,这样的消息可以至少部分地作为首先存储在未示出的CPU寄存器中并直接从寄存器写入到I/O控制器MMIO空间中的结果被实例化。
在此实施例中,一个或多个驱动程序33可以至少部分地与一个或多个OS31相互不同。另选地或另外地,在不偏离此实施例的情况下,一个或多个OS31和/或驱动程序33的一个或多个相应的部分可以至少部分地相互不同,和/或可以至少部分地包括在彼此中。一个或多个OS31可以至少部分地促进一个或多个应用程序进程121A...121N在存储器21中的执行和/或驻留。同样,在不偏离此实施例的情况下,I/O控制器120和/或RNIC210可以不同于(至少部分地),或者可另选地,可以(至少部分地)包含在一个或多个未示出的芯片集和/或HP12中。也在不偏离此实施例的情况下,存储器21的一个或多个部分可以包含在RNIC210、控制器120和/或HP12中。
在此实施例中,实体的一部分或子集可以包括实体的全部或少于实体的全部。同时,在此实施例中,进程、线程、守护进程(daemon)、程序、驱动程序、操作系统、应用程序、内核和/或虚拟机监视器中的每一个都可以(1)至少部分地包括,和/或(2)至少部分地导致和/或来源于,一个或多个操作和/或程序指令的执行。在此实施例中,驱动程序可以至少部分地是,包括和/或源于一个或多个内核驱动程序和/或用户空间库。
在此实施例中,队列、缓冲器和/或门铃可以包括存储器中的其中可以至少临时地存储数据和/或一个或多个命令的一个或多个位置(例如,至少部分地由一个或多个地址指定的和/或指出的)。在此实施例中,门铃消息可以是或包括可以至少部分地指出至少部分地已经发生,和/或至少部分地将要发生的一个或多个事件、操作、发生和/或事务的数据和/或一个或多个命令。此外,在此实施例中,队列元素可以是或包括要被存储和/或存储在一个或多个队列中的数据和/或一个或多个命令,诸如,例如,一个或多个描述符和/或一个或多个命令。另外,在此实施例中,指针可以至少部分地指出,寻址,和/或指定存储器中的一个或多个位置和/或一个或多个项。同时,在此实施例中,描述符可以包括(1)数据,以及(2)一个或多个命令(例如,一个或多个RDMA命令)和/或至少部分地与数据相关联的信息。此实施例中的描述符的示例可以包括发送队列元素、分散收集列表、分散收集元素,和/或其他结构,诸如,例如,包括命令、内联数据和/或引用的数据的结构。
在此实施例中,主机20和/或其组件的结构和/或操作可以至少部分地与客户端10和/或客户端10的组件的结构和/或操作类似或相同。可另选地,在不偏离此实施例的情况下,主机20和/或其组件的结构和/或操作可以至少部分地不同于客户端10和/或客户端10的组件的结构和/或操作。
I/O控制器120和/或RNIC210可以通过一个或多个I/O操作(例如,一个或多个I/O操作130和/或132),通过网络50,与客户端10交换数据和/或命令。在此实施例中,此交换和/或这些一个或多个I/O操作可以根据可以符合和/或兼容于RDMA(例如,iWARP)协议、以太网协议,和/或传输控制协议/网际协议(TCP/IP)协议的一个或多个协议。例如,RDMA协议可以符合和/或兼容于Recio等人所著的“An RDMA ProtocolSpecification”(Internet Draft Specification,Internet Engineering Task Force(IETF),2002年10月21日)。还例如,以太网协议可以符合和/或兼容于电气与电子工程师学会,Inc.(IEEE)标准802.3-2008,2008年12月26日。另外,例如,TCP/IP协议可以符合和/或兼容于在1981年9月发布的因特网工程任务组(IETF)征求意见资料(RFC)791和793中所描述的协议。许多不同的,额外的,和/或其他协议可以用于这样的数据和/或命令交换,而不会偏离此实施例(例如,如上所述的,相关的,和/或其他协议的以前的和/或以后开发的版本)。
在操作中,电路118(例如,一个或多个HPC12A和/或由一个或多个HPC12A执行的一个或多个驱动程序33)可以执行一个或多个RDMA I/O操作130和/或132,这些RDMA I/O操作130和/或132可以以绕过和/或独立于(1)主机20中的OS31和/或(2)可以驻留在客户端10中和/或在客户端10中执行的未示出的OS的参与的方式,从控制器120和/或RNIC210向客户端10中的存储器(未示出)传输和写入数据(例如,数据199A)。为了促进,发起,和/或执行这些一个或多个操作130和/或132,电路118(例如,一个或多个HPC12A和/或由一个或多个HPC12A执行的一个或多个驱动程序33)可以从系统存储器21向I/O控制器120和/或RNIC210中的存储器空间60写入一个或多个消息190A。如图2所示,一个或多个消息190A可以包括数据199A和一个或多个描述符181A。数据199A可以被包括在一个或多个描述符181A中。在此将一个或多个消息190A写入到存储器空间60之后(或至少部分地同时),电路118(例如,一个或多个HPC12A和/或由一个或多个HPC12A执行的一个或多个驱动程序33)可以向I/O控制器120和/或RNIC210发出信号,发生了此写入。在此实施例中,此信号发出可以通过任何机制来完成和/或包括任何机制,诸如,例如,向存储器空间60中的一个或多个位置208写入一个或多个门铃消息212A。在此实施例中,此信号发出可以为了和/或可以导致清空一个或多个写入组合的缓冲器,和/或可以使数据对I/O控制器120可用。在此实施例中,一个或多个位置208可以是或包括一个或多个至少部分地与控制器120和/或RNIC210相关联的门铃。
例如,在此实施例中,一个或多个消息190A的这种写入可以使用单个写入操作202A(例如,涉及主机20中的未示出的主机总线系统的一个或多个写入相关的事务)来实施,以将涉及(例如,在此情况下,来自)与一个或多个HPC12A相关联的一个或多个写入组合的缓冲器(WCB,例如,WCB214A)的数据和/或至少部分地由一个或多个HPC12A所生成的数据写入到存储器空间60中的一个或多个位置206。例如,WCB214A可以至少部分地存储可以包含在一个或多个消息190A中的数据199A,一个或多个消息190A可以使用写入操作202A被写入到一个或多个位置206。在此实施例中,WCB可以至少临时存储收集到的和/或组合的数据,例如,用于通过一个或多个猝发模式事务和/或总线操作来进行传输。
在将一个或多个消息190A写入到一个或多个位置206之前,电路118(例如,一个或多个HPC12A和/或由一个或多个HPC12A执行的一个或多个驱动程序33)可以将一个或多个队列元素(QE,例如,一个或多个发送队列元素(SQE)196A)写入(参见图6中的操作602)到一个或多个队列(例如,一个或多个SQ126)。在下列情况下:(1)I/O控制器120和/或RNIC210至少部分地丢弃一个或多个消息190A和/或(2)数据199A将从I/O控制器120和/或RNIC210重新传输到客户端10,一个或多个SQE196A可以至少部分地请求由控制器120和/或RNIC210执行一个或多个I/O操作130。在此实施例中,在写入到一个或多个位置206时,一个或多个消息190A可以至少部分地请求由控制器120和/或RNIC210执行一个或多个I/O操作132,这些I/O操作132可以至少部分地对应于和/或等同于(例如,本质上和/或结果)可以至少部分地由一个或多个SQE196A在一个或多个SQE196A被写入到SQ126时请求的一个或多个I/O操作130。相应地,在此实施例中,一个或多个消息190A可以至少部分地对应于和/或等同于一个或多个SQE196A。
为了用信号通知控制器120和/或RNIC210,一个或多个消息190A已经被(或正在被同时)写入到存储器空间60中的一个或多个位置206,电路118(例如,一个或多个HPC12A和/或由一个或多个HPC12A执行的一个或多个驱动程序33)可以通过一个或多个写入操作204A(参见图6中的操作604)将一个或多个门铃消息212A写入到一个或多个位置208。这些一个或多个写入操作204A可以涉及主机20中的未示出的主机总线系统的一个或多个写入相关的事务,并可以构成与一个或多个位置208相关联的一个或多个门铃的响铃。在被信号通知一个或多个消息190A已经被写入到存储器空间60中的一个或多个位置206之后,控制器120和/或RNIC210可以判断控制器120和/或RNIC210中是否有足够的资源同时存在和/或可用,以允许执行一个或多个I/O操作132。控制器120和/或RNIC210可以至少部分地基于包含在一个或多个跟踪表151中的信息和/或如果一个或多个消息190A中的一个或多个描述符181A包含的和/或指出的一个或多个RDMA命令将被执行而可预期使用的资源,来作出此判断。在此实施例中,资源可以是,涉及,指定,和/或包括一个或多个物理、逻辑,和/或虚拟(1)能力、设施、功能、操作、电路的部分,和/或进程,和/或(2)使用这样的能力、设施、功能、操作,电路的部分,和/或进程的许可和/或调度。如果控制器120和/或RNIC210判断没有足够的资源存在和/或目前可用以允许控制器120和/或RNIC210能够实施一个或多个操作132,则控制器120和/或RNIC210可以丢弃一个或多个消息190A。在此实施例中,实体的丢弃可以包括实体的删除和/或改写,和/或指出实体可用和/或有义务被删除和/或覆写。控制器120和/或RNIC210可以在一个或多个表151中至少部分地指定和/或跟踪控制器120和/或RNIC210的一个或多个资源的分配,以实施被请求由控制器120和/或RNIC210实施的一个或多个操作132(和/或其他RDMA操作)。如果一个或多个消息190A被控制器120和/或RNIC210丢弃,则控制器120和/或RNIC210可以稍后执行一个或多个对应的操作132,至少部分地作为对一个或多个SQE196A的随后处理的结果。
相反,如果控制器120和/或RNIC210判断有足够的这样的资源存在以允许一个或多个操作132被实施,那么,控制器120和/或RNIC210可以执行由一个或多个消息190A请求的一个或多个操作132。在此情况下,控制器120和/或RNIC210可以不执行由一个或多个SQE196A请求的一个或多个操作130,除非由客户端10以后请求数据199A的重新传输(例如,在数据199A通过一个或多个操作132向客户端10的传输中发生错误的情况下和/或在由客户端10接收到这样的数据199A时)。
例如,在操作中,在此实施例中,HPC12A...12N可以执行指令,这些指令可以至少部分地导致HPC12A...12N和/或一个或多个驱动程序33至少部分地同时从存储器21向存储器空间60写入多个相应的消息190A...190N。这些消息181N...190N中的每一个都可以包括相应的数据199A...199N和相应的描述符181A...181N。相应的数据199A...199N可以包含在相应的描述符181A...181N中,而相应的描述符181A...181N包含在相应的消息190A...190N中。相应的描述符181A...181N和/或消息190A...190N可以请求I/O控制器120和/或NIC210执行相应的RDMA事务和/或操作,以将相应的数据199A...199N传输到和写入到客户端10中未示出的存储器。消息190A...190N的这种并行写入可以使用相应的,单写入操作202A...202N(例如,涉及主机20中的未示出的主机总线系统的相应的写入相关的事务)来实施,以将涉及(例如,在此情况下,来自)与(例如,相应的)HPC12A...12N相关联的相应的WCB214A...214N的相应的数据和/或至少部分地由(例如,相应的)HPC12A...12N所生成的相应的数据写入到存储器空间60中的一个或多个相应的位置206。例如,WCB214N可以至少部分地存储可以包含在一个或多个消息190N中的数据199N,且一个或多个消息190N可以使用写入操作202N被写入到一个或多个相应的位置206。
在将消息190A...190N写入到一个或多个相应的位置206之前,HPC12A...12N和/或一个或多个驱动程序33可以将相应的SQE196A...196N写入到SQ126。在下列情况下:(1)由I/O控制器120至少部分地相应的丢弃相应的消息181N...190N和/或(2)相应的数据199A...199N从控制器120和/或RNIC210相应的重新传输到客户端10,SQE196A...196N可以至少部分地请求由控制器120和/或RNIC210执行相应的RDMA I/O操作。在此实施例中,在写入到一个或多个相应的位置206时,相应的消息190A...190N可以至少部分地请求由控制器120和/或RNIC210执行一个或多个相应的RDMA I/O操作,这些I/O操作可以至少部分地对应于和/或等同于(例如,本质上和/或结果)可以至少部分地由相应的SQE196A...196N在相应的SQE196A...196N被写入到SQ126时请求的一个或多个相应的RDMAI/O操作130。相应地,在此实施例中,相应的消息190A...190N可以至少部分地对应于和/或等同于相应的SQE196A...196N。
为了用信号通知控制器120和/或RNIC210,相应的消息190A...190N已经被写入到存储器空间60中的一个或多个相应的位置206,HPC12A...12N和/或一个或多个驱动程序33可以通过相应的写入操作204A...204N,将相应的门铃消息212A...212N写入到一个或多个相应的位置208。这些相应的写入操作204A...204N可以涉及主机20中的未示出的主机总线系统的相应的写入相关的事务,并可以构成与一个或多个相应的位置208相关联的相应门铃的相应响铃。被用信号通知相应的消息190A...190N已经被写入到存储器空间60中的一个或多个相应的位置206(至少部分地)之后,同时,和/或之前,控制器120和/或RNIC210可以作出是否有足够的相应资源在控制器120和/或RNIC210中同时存在和/或可用(例如,在相应的门铃响铃的相应的时间或附近)的相应判断,以允许由相应的描述符181A...181N和/或相应的消息190A...190N请求的相应的RDMA I/O操作被执行。控制器120和/或RNIC210可以至少部分地基于包含在一个或多个跟踪表151中的信息和/或如果相应的描述符181A...181N包含的和/或指出的相应RDMA命令将被执行而可预期使用的相应资源,来作出这些相应的判断(例如,在相应的门铃响铃的相应的时间或附近)。
如果控制器120和/或RNIC210判断没有足够的相应的资源存在和/或可用于执行相应的消息和/或相应的描述符,则控制器120和/或RNIC210可以丢弃该相应的消息和/或相应的描述符。控制器120和/或RNIC210可以在一个或多个表151中至少部分地指派和/或跟踪控制器120和/或RNIC210的相应的资源的分配,以实施被相应的消息和/或相应的描述符请求由控制器120和/或RNIC210实施的相应的RDMA操作(和/或其他操作)。如果相应的消息被控制器120和/或RNIC210丢弃,则控制器120和/或RNIC210可以以后执行由SQ126中的相应的对应SQE请求的一个或多个对应的RDMA操作,至少部分地作为对该相应的对应SQE的随后处理的结果。
相反,如果控制器120和/或RNIC210判断有足够的相应的资源存在用于执行相应的消息和/或相应的描述符,则控制器120和/或RNIC210可以执行由该相应的消息和/或相应的描述符请求的一个或多个相应的RDMA操作。在此情况下,控制器120和/或RNIC210可以不执行由SQ126中的相应的对应SQE请求的一个或多个相应的对应RDMA操作,除非由客户端10请求随后重新传输与该相应的对应SQE相关联的相应的数据(例如,在涉及该相应的数据的传输和/或接收错误的情况下)。
在此实施例中,消息190A...190N可以只对应于SQ126中的SQE的子集。总计起来,在取总和时,此子集可以消耗比可以由SQ126中的SQE请求的较少的存储器和/或请求和/或涉及较少的总的RDMA I/O相关的操作。有利地,存储器空间60的大小可以缩小(例如,与在SQ126中的每个SQE在SQ126中具有对应的相应SQE的情况下可能要求的大小相比)。另选地或另外地,在此实施例中,存储器空间60的大小可以至少部分地由和/或参考可以被给予同时对存储器空间60的写访问的软件实体(例如,链接进程)的数量定义的。有利地,这可以允许存储器空间60的大小涉及希望支持的处理速率,和/或可以允许存储器60的大小基本上独立于发送队列的数量和/或大小。相应的SQE196A...196N可以包括相应的指示110A...110N,指出相应的消息181N...190N是否将被写入(例如,由HPC12A...12N和/或一个或多个驱动程序33)到存储器空间60中的至少部分地对应于相应的SQE196A...196N的一个或多个相应的位置206。例如,如果一个或多个消息(例如,一个或多个消息190A)将被写入到存储器60中的至少部分地对应于SQ126中的一个或多个SQE(例如,一个或多个SQE196A)的一个或多个位置206,那么,一个或多个指示110A(例如,包括在那些一个或多个SQE196A中和/或与之相关联)可以如此指出。相反,如果没有消息将被写入到存储器60中的至少部分地对应于SQ126中的特定SQE(例如,一个或多个SQE196B)的一个或多个位置206,那么,一个或多个指示110B(例如,包括在那些一个或多个SQE196B中和/或与之相关联)可以如此指出。
在控制器120和/或RNIC210完成相应的请求的RDMA I/O操作之后,控制器120和/或RNIC210向一个或多个驱动程序33和/或HPC12A...12N中的一个或多个提供相应的完成消息。相应的完成消息可以包括相应的指示,指出相应的RDMA I/O操作是否由对应于存储器空间60中的已经丢弃的相应的消息的相应的SQE的执行所产生。此信息可以在CQ302中以相应的完成队列元素(CQE)124A...124N的形式的被跟踪(例如,由HPC12A...12N和/或一个或多个驱动程序33)。例如,相应的CQE124A...124N可以包括可以指出这样的信息的相应的指示165A...165N。例如,如果与一个或多个CQE124B相关联的一个或多个相应的I/O操作是由与已被写入到存储器空间60中的但是被控制器120和/或RNIC210丢弃的一个或多个相应的消息(例如,一个或多个消息190B)对应的一个或多个SQE(例如,一个或多个SQE196B)的执行产生的,那么,一个或多个指示符165B可以如此指出。相反,如果没有发生这样的丢弃,那么,一个或多个指示符165B可以如此指出。控制器120和/或RNIC210可以至少部分地基于控制器120和/或RNIC210是否执行相应的SQE(例如,SQE196A),该SQE包括指出对应的消息(例如,消息190A)已经被写入到存储器空间60,但是没有执行的指示,至少部分地判断是否发生了这样的丢弃。在此情况下,假设对应的消息190A以前被控制器120和/或RNIC210丢弃,并且控制器120和/或RNIC210可以判断发生了这样的丢弃是合乎逻辑的。
在此实施例中,默认条件(取决于此处所描述的约束)可以是,HPC12A...12N和/或一个或多个驱动程序33可以试图向存储器空间60写入尽可能多的对应于SQE196A...196N的消息。相应地,HPC12A...12N和/或一个或多个驱动程序33可以继续试图将随后的消息190B(例如,在写入一个或多个初始消息190A之后)写入到存储器空间60,除非和/或直到(1)控制器120和/或RNIC210已经丢弃了一个或多个消息,和/或(2)在一个或多个位置206没有额外的空间可用于接收任何额外的消息。在条件(1)和/或(2)发生之后,HPC12A...12N和/或一个或多个驱动程序33可以在SQ126变空之后恢复随后的消息写入。这可以,例如,基于SQ126中是否存在任何相应的SQE不对应于CQ302中的相应的CQE来确定。有利地,在此实施例中,向存储器空间60直接推送消息190A...190N的此机会性方法可以允许写入组合用于各种不同的使用模型、通信流量和/或环境中,而不会降低效率或不合乎需要地增大复杂性。进一步有利地,在此实施例中,一方面由HPC12A...12N和/或一个或多个驱动程序另一方面通过控制器120和/或RNIC210对相应的操作集的相应的执行可以基本上彼此独立地进行。有利地,这两个相应的操作集的这种实质性的分离可以允许每一个相应的集作出基本上独立的转发处理过程,而不会停止主机20中的未示出的系统总线,并且不会引入实质性的硬件-软件流量控制问题。进一步有利地,软件进程可以独立地向存储器空间60写入消息,无需在这方面协调它们的动作。
在此实施例中,进程121A...121N可以至少部分地生成将通过RDMA操作传输到客户端10的数据和/或可以启动生成对这样的数据传输的请求。相应地,为了促进由进程121A...121N对存储器空间60的安全和/或独立的访问,进程121A...121N可以属于不同的相应的安全域404A...404N(参见图4)。例如,存储器空间60可以包括应用程序进程121A...121N可以被指派到和/或映射到的多个相应的页402A...402N。在此配置中,没有属于不同的相应的安全域(例如,分别是域404A和404B)的两个相应的进程(例如,进程121A和121B)可以共享页402A...402N中的单个的相应的一个页,然而,属于同一个安全域的进程可以共享一个或多个这样的页。如此,例如,单个相应的页(例如,页402A)可不被映射到两个不同的相应的进程(例如,两者都映射到进程121A和121B)。在此实施例中,由相应的进程所生成的相应的数据,和/或其生成是由相应的进程发起的一个或多个相应的消息,将只被写入到属于相应的进程和/或其相应的安全域(和/或与它们相关联的)一个或多个相应的页。例如,如果数据199A是由进程121A所生成的,和/或一个或多个消息181N的生成至少部分地是由进程121A发起的,那么数据199A和/或一个或多个消息190A可以只被写入到存储器60中的属于进程121A和/或安全域404A(和/或与它们相关联的)一个或多个页402A,而不写入到其他和/或额外的页(例如,页402B...402N)。这样的对指派的页的安全访问可以至少部分地通过使用一个或多个相应的安全引用和/或到相应的页(这些页可以与,例如,与指派给相应的页的相应的进程相关联的相应的队列对(QP)相关联)的句柄来促进。
另外,页中的一个或多个(例如,402A)可以包括多个部分414A...414N。这些相应的部分中的每一个(例如,一个或多个部分414A)都可以接纳一个或多个要被写入到这些一个或多个相应的部分414A的相应的消息(例如,一个或多个消息190A)。在此实施例中,这些一个或多个消息190A可以对应于,例如,整个相应的队列元素(例如,SQE196A)。有利地,通过将一个或多个页402A分割为多个这样的部分414A...414N,多个消息可以(例如,同时)被写入到相同的一个或多个页402A,而不获取一个或多个页402A上的锁。有利地,按此实施例的方式使用多个安全域可以允许多个并发流和/或可以使多个软件实体能够同时向存储器空间60写入,无需协调它们对存储器空间60的访问。
在此实施例中,安全域可以包括一个或多个可以与一个或多个实体相关联和/或属于它们的特权和/或权限,所述一个或多个实体可以属于安全域,与安全域相关联,和/或被分派给安全域。也在此实施例中,存储器的页可以包括一个或多个相邻的和/或不相邻的存储器位置。
控制器120和/或RNIC210可以使用一个或多个跟踪表151,来至少部分地跟踪控制器120和/或RNIC210的一个或多个资源(例如,通过图1中的元件141象征性地示出的)的一个或多个分派,以实施可以至少部分地通过一个或多个消息(例如,一个或多个消息190A)请求的一个或多个I/O操作(通过图1中的元件133象征性地示出的)。在此实施例中,表可以包括一个或多个数据结构和/或元件,包括,但不仅限于,本质上可以是表格的那些。一个或多个表151可以充分地大,以允许对多个消息190A...190N的正进行的处理的并行跟踪。一个或多个表151中的条目可以通过将下列各项与传入的消息相关联,来允许跟踪写入到存储器空间60中的每一个传入的消息:(1)其页索引(例如,指定它被写入到其中的页402A...402N中的哪一个),(2)索引页内的偏移,和/或(3)被指派执行传入的消息的控制器/RNIC资源。如果相关联的消息已经在一个或多个表151中正在被跟踪,则可以更新可以对应于相关联的消息的一个或多个条目,以包括与传入的消息相关联的参数。相反,如果没有这样的相关联的消息正在被跟踪,则可以添加一个或多个新条目(如果存在足够的资源),以跟踪传入的消息。进一步相反,如果没有足够的资源存在(包括,例如,没有足够的跟踪资源和/或与一个或多个表151相关联的资源)以允许添加一个或多个这样的新条目,那么,可以由控制器120和/或RNIC210丢弃传入的消息。另外,控制器120和/或RNIC210可以丢弃传入的消息(例如,消息190A),除非当控制器120和/或RNIC210开始对消息181N的初始处理时,对应于消息190A的队列元素(例如,SQE196A)当前处于SQ126的头部。有利地,这可以允许对相对于SQE196A...196N的被写入到存储器空间60的消息190A...190N的有序处理。此外,如果传入的消息190A属于流量控制启用的和/或断言的类别的通信量,则可以丢弃消息181N,以便降低存储器空间60的否则可能被分配给以存储属于该类别的通信的消息的量。
也在此实施例中,可以被跟踪和/或由控制器120和/或RNIC210指派给传入的消息190A的资源可以包括,例如,传输调度额度(credits)向传入的消息190A,数据199A,和/或操作132的分配。例如,在此实施例中,控制器120和/或RNIC210可以向预期被调度用于从主机20、控制器120和/或RNIC210传输到客户端10的总通信量506的子集505预先分配总的可用的传输额度的数量(和/或量)504的子集502(参见图5)。此子集502可以是至少部分地预定的,和/或可以至少部分地动态地确定的。此子集505可以与预期由消息190A...190N的执行所产生的通信量相关联和/或与其相对应。在由控制器120和/或RNIC210对传入的消息190A(和/或为实施一个或多个操作132指派的一个或多个资源)的初始处理和/或跟踪的过程中和/或至少部分地同时,控制器120和/或RNIC210可以至少部分地确定在子集502中是否存在足够数量510的未分配的额度,以使得数据199A的传输(例如,通过一个或多个操作132)发生。如果控制器120和/或RNIC210判断不存在足够数量510的未分配的额度(例如,未分配的额度的数量不足,难以使数据199A传输),则控制器120和/或RNIC210可以丢弃传入的消息190A。在此实施例中,传输额度可以分配、指派,指出,提供,和/或暗示至少部分地与传输相关联的许可,调度和/或特权。有利地,通过适当地选择子集502中的额度的数量,和/或此实施例中涉及的通信类别的带宽和/或优先级,可以避免传入的消息的不适当的丢弃和/或消息处理的停止,而不会显著地干扰发射调度的规则性。
还有利地,此实施例中的额度补充可以使用标准调度技术来执行,独立于对消息190A...190N的处理。在此实施例中,额度可以累积(例如,直到可配置的限制),如果预先分配的额度的数量低于可配置的阈值,则未示出的调度器可以请求额度补充。
在此实施例中,相应的消息190A...190N和/或相应的SQE196A...196N可以包括多个相应的处理器缓存线(未示出)。HP12可以停止WCB214A...214N中的数据,可以使用同步事件来清空它们。门铃的写入(例如,使用控制器120和/或RNIC210中的非缓存的存储器)可以导致WCB214A...214N的清空。可另选地,取决于HP12的结构和/或操作,可以不使用WCB214A...214N的清空结合这样的停止,而不会偏离此实施例。然而,在此实施例中,使用这样的非缓存的门铃写入可以允许WCB214A...214N的清空,并可以指出事务完成(例如,与清空排序和/或消息190A...190N向存储器空间60的写入一起)。也在此实施例中,虽然在图中只示出了单个QP(例如,包括CQ302和SQ126),但是,可以使用多个相应的QP,每一个这样的QP都可以与可以被写入到存储器空间60的相应的消息相关联。
如此,实施例可以包括可以将消息从主机中的系统存储器写入到主机中的I/O控制器中的存储器空间的电路。主机操作系统可以至少部分地驻留在系统存储器中。消息可以包括数据和与数据相关联的至少一个描述符。数据可以被包括在至少一个描述符中。电路还可以向I/O控制器发出信号,指示已经发生了写入。有利地,在此实施例中,在从控制器和/或RNIC向客户端的RDMA数据传输中可以不涉及由主机中的控制器和/或RNIC的主机系统存储器读取。有利地,这可以显著地缩小向客户端的RDMA数据传输中涉及的等待时间。进一步有利地,在此实施例中,可以动态地管理和/或分配(例如,由RNIC硬件“在运行时”,不用主机软件参与)可以与这样的消息一起使用的RNIC资源,而不会导致主机总线接口停止,和/或无需这样的硬件与主机软件的实质协调。
在不偏离此实施例的情况下,许多其他和/或额外的修改方案、变体,和/或替代方案也是可以的。例如,虽然结合网络连接、通信,和/或控制功能主要描述了I/O控制器120,但是,另外或者可另选地,控制器120还可以包括存储器(例如,存储网络)功能和/或与该功能一起使用。
其他变体也是可以的。例如,虽然在图形中未示出,但是,一个或多个跟踪表151和/或一个或多个资源141可以被至少部分地包括在未示出的专有存储器中(例如,可以包括在RNIC210和/或控制器120(例如,芯片内和/或在本地动态随机存取存储器中),和/或可以可一个或多个HP12被访问的或无法访问)。另选地或另外地,一个或多个跟踪表151和/或一个或多个资源141可以至少部分地被包括在存储器21中,至少部分地被缓存在控制器120和/或RNIC210中。更进一步地,另选地或另外地,为了有利地允许保留发送队列元素的预期处理顺序,只有在给定消息当前处于消息的对应的发送队列的头部的情况下,RNIC210才可以处理该消息。
还存在许多其他变体。相应地,此实施例应该被广泛地视为包含所有这样的替代方案、修改方案,以及变体。

Claims (24)

1.一种设备,包括:
用于执行以下操作的电路:
将消息从主机中的系统存储器写入到所述主机中的输入/输出(I/O)控制器中的存储器空间,主机操作系统到至少部分地驻留在所述系统存储器中,所述消息包括数据和与所述数据相关联的至少一个描述符,所述数据被包括在所述至少一个描述符中;以及
向所述I/O控制器发出信号,指出已经发生了写入。
2.如权利要求1所述的设备,其特征在于:
使用涉及与主机处理器核相关联的写入组合的缓冲器的单个写入操作,实施所述消息向所述存储器空间的写入;以及
所述电路还在所述消息的所述写入之前,向队列中写入队列元素,所述队列元素至少部分地请求在由所述I/O控制器丢弃所述消息的情况下,由所述I/O控制器执行涉及所述数据的I/O操作,所述I/O操作对应于至少部分地通过向所述存储器空间写入所述消息来请求的另一个I/O操作。
3.如权利要求1所述的设备,其特征在于:
所述主机包括执行指令的主机处理器核,所述指令至少部分地导致多个相应的消息至少部分地被同时写入到所述存储器空间,所述相应的消息中的每一消息都包括相应的数据以及与所述相应的数据相关联的相应的描述符,所述相应的数据被包括在所述相应的描述符中;以及
所述I/O控制器包括远程直接存储器访问(RDMA)网络接口控制器(NIC),所述相应的消息是请求由所述ROMANIC(RNIC)执行相应的RDMA事务。
4.如权利要求1所述的设备,其特征在于:
所述电路还在所述消息向所述存储器空间的所述写入之前,向发送队列中写入队列元素,所述队列元素至少部分地请求在发生下列两项中的任一项的情况下:(1)由所述I/O控制器丢弃所述消息以及(2)所述数据的重新传输,由所述I/O控制器执行涉及所述数据的I/O操作;以及
所述发送队列包括多个元素,所述发送队列中的所述多个元素中的每一相应的元素都包括相应的指示,指出至少部分地对应于所述相应的元素的相应的消息是否由所述电路向所述存储器空间写入,所述相应的消息包括相应的数据以及与所述相应的数据相关联的相应的描述符,所述相应的描述符包括所述相应的数据。
5.如权利要求4所述的设备,其特征在于:
所述电路继续向所述存储器空间写入一个或多个随后的消息,除非发生通过所述I/O控制器的丢弃;
在发生所述丢弃之后,所述电路在所述发送队列变空之后恢复随后的消息写入;以及
所述发出信号包括使与所述I/O控制器相关联的至少一个门铃响铃。
6.如权利要求1所述的设备,其特征在于:
应用程序进程也至少部分地驻留在所述主机存储器中;
所述存储器空间包括所述进程将向其中映射的多个页;
属于不同的相应的安全域的两个相应的进程不共享所述页中的单个相应的一个页;以及
所述页中的一个或多个包括多个部分,每一相应的部分将接纳要被写入到所述相应的部分的至少一个相应的消息,所述至少一个相应的消息对应于整个相应的队列元素,并包括相应的数据和与所述数据相关联的相应的描述符。
7.如权利要求1所述的设备,其特征在于:
所述I/O控制器将至少部分地跟踪所述I/O控制器的一个或多个资源的分派,以实施至少部分地由所述消息请求的一个或多个I/O操作;
如果没有足够的资源存在于所述I/O控制器中,以允许所述一个或多个I/O操作被实施,则所述I/O控制器将丢弃所述消息;以及
所述I/O控制器将丢弃所述消息,除非,当所述I/O控制器处理所述消息时,对应于所述消息的队列元素当前位于发送队列的头部,至少部分地在所述消息已经被写入到所述存储器空间之前,所述队列元素已经被写入到所述队列。
8.如权利要求7所述的设备,其特征在于:
所述一个或多个I/O操作包括所述数据的传输;
所述I/O控制器将总的可用传输额度数量的子集分配到总通信量的子集,所述总通信量的所述子集至少部分地与所述数据的所述传输相关联;
所述I/O控制器将至少部分地与对所述一个或多个资源的初始跟踪同时确定在传输额度的总数的所述子集中是否存在足够数量的未分配的额度,以允许传输;以及
如果所述I/O控制器判断不存在所述足够数量的未分配的额度,则所述I/O控制器将丢弃所述消息。
9.一种方法,包括:
由电路将消息从主机中的系统存储器写入到主机中的输入/输出(I/O)控制器中的存储器空间,主机操作系统至少部分地驻留在所述系统存储器中,所述消息包括数据和与所述数据相关联的至少一个描述符,所述数据被包括在所述至少一个描述符中;以及
由所述电路向所述I/O控制器发出信号,指出已经发生了所述写入。
10.如权利要求9所述的方法,其特征在于:
使用涉及与主机处理器核相关联的写入组合的缓冲器的单个写入操作,实施所述消息向所述存储器空间的写入;以及
所述电路还在所述消息的所述写入之前,向队列中写入队列元素,所述队列元素至少部分地请求在由所述I/O控制器丢弃所述消息的情况下,由所述I/O控制器执行涉及所述数据的I/O操作,所述I/O操作对应于至少部分地通过向所述存储器空间写入所述消息来请求的另一个I/O操作。
11.如权利要求9所述的方法,其特征在于:
所述主机包括执行指令的主机处理器核,所述指令至少部分地导致多个相应的消息至少部分地被同时写入到所述存储器空间,所述相应的消息中的每一消息都包括相应的数据以及与所述相应的数据相关联的相应的描述符,所述相应的数据被包括在所述相应的描述符中;以及
所述I/O控制器包括远程直接存储器访问(RDMA)网络接口控制器(NIC),所述相应的消息请求由所述ROMANIC(RNIC)执行相应的RDMA事务。
12.如权利要求9所述的方法,其特征在于:
所述电路还在所述消息向所述存储器空间的所述写入之前,向发送队列中写入队列元素,所述队列元素至少部分地请求在发生下列两项中的任一项的情况下:(1)由所述I/O控制器丢弃所述消息以及(2)所述数据的重新传输,由所述I/O控制器执行涉及所述数据的I/O操作;以及
所述发送队列包括多个元素,所述发送队列中的所述多个元素中的每一相应的元素都包括相应的指示,指出至少部分地对应于所述相应的元素的相应的消息是否由所述电路向所述存储器空间写入,所述相应的消息包括相应的数据以及与所述相应的数据相关联的相应的描述符,所述相应的描述符包括所述相应的数据。
13.如权利要求12所述的方法,其特征在于:
所述电路继续向所述存储器空间写入一个或多个随后的消息,除非发生通过所述I/O控制器的丢弃;
在发生所述丢弃之后,所述电路在所述发送队列变空之后恢复随后的消息写入;以及
所述发出信号包括使与所述I/O控制器相关联的至少一个门铃响铃。
14.如权利要求9所述的方法,其特征在于:
应用程序进程也至少部分地驻留在所述主机存储器中;
所述存储器空间包括所述进程将向其中映射的多个页;
属于不同的相应的安全域的两个相应的进程不共享所述页中的单个相应的页;以及
所述页中的一个或多个包括多个部分,每一相应的部分将接纳要被写入到所述相应的部分的至少一个相应的消息,所述至少一个相应的消息对应于整个相应的队列元素,并包括相应的数据和与所述数据相关联的相应的描述符。
15.如权利要求9所述的方法,其特征在于:
所述I/O控制器将至少部分地跟踪所述I/O控制器的一个或多个资源的分派,以实施至少部分地由所述消息请求的一个或多个I/O操作;
如果没有足够的资源存在于所述I/O控制器中,以允许所述一个或多个I/O操作被实施,则所述I/O控制器将丢弃所述消息;以及
所述I/O控制器将丢弃所述消息,除非,当所述I/O控制器处理所述消息时,对应于所述消息的队列元素当前位于发送队列的头部,至少部分地在所述消息已经被写入到所述存储器空间之前,所述队列元素已经被写入到所述队列。
16.如权利要求15所述的方法,其特征在于:
所述一个或多个I/O操作包括所述数据的传输;
所述I/O控制器将总的可用传输额度数量的子集分配到总通信量的子集,所述总通信量的所述子集至少部分地与所述数据的所述传输相关联;
所述I/O控制器将至少部分地与对所述一个或多个资源的初始跟踪同时确定在传输额度的总数的所述子集中是否存在足够数量的未分配的额度,以允许传输;以及
如果所述I/O控制器判断不存在所述足够数量的未分配的额度,则所述I/O控制器将丢弃所述消息。
17.存储当由机器执行时导致包括下列各项的操作的执行的一个或多个指令的计算机可读取的存储器:
由电路将消息从主机中的系统存储器写入到主机中的输入/输出(I/O)控制器中的存储器空间,主机操作系统到至少部分地驻留在所述系统存储器中,所述消息包括数据和与所述数据相关联的至少一个描述符,所述数据被包括在所述至少一个描述符中;以及
由所述电路向所述I/O控制器发出信号,指出发生了所述写入。
18.如权利要求17所述的计算机可读介质,其特征在于:
使用涉及与主机处理器核相关联的写入组合的缓冲器的单个写入操作,实施所述消息向所述存储器空间的写入;以及
所述电路还在所述消息的所述写入之前,向队列中写入队列元素,所述队列元素至少部分地请求在由所述I/O控制器丢弃所述消息的情况下,由所述I/O控制器执行涉及所述数据的I/O操作,所述I/O操作对应于至少部分地通过向所述存储器空间写入所述消息来请求的另一个I/O操作。
19.如权利要求17所述的计算机可读介质,其特征在于:
所述主机包括执行指令的主机处理器核,所述指令至少部分地导致多个相应的消息至少部分地被同时写入到所述存储器空间,所述相应的消息中的每一消息都包括相应的数据以及与所述相应的数据相关联的相应的描述符,所述相应的数据被包括在所述相应的描述符中;以及
所述I/O控制器包括远程直接存储器访问(RDMA)网络接口控制器(NIC),所述相应的消息是请求由所述ROMANIC(RNIC)执行相应的RDMA事务。
20.如权利要求17所述的计算机可读介质,其特征在于:
所述电路还在所述消息向所述存储器空间的所述写入之前,向发送队列中写入队列元素,所述队列元素至少部分地请求在发生下列两项中的任一项的情况下:(1)由所述I/O控制器丢弃所述消息以及(2)所述数据的重新传输,由所述I/O控制器执行涉及所述数据的I/O操作;以及
所述发送队列包括多个元素,所述发送队列中的所述多个元素中的每一相应的元素都包括相应的指示,指出至少部分地对应于所述相应的元素的相应的消息是否由所述电路向所述存储器空间写入,所述相应的消息包括相应的数据以及与所述相应的数据相关联的相应的描述符,所述相应的描述符包括所述相应的数据。
21.如权利要求20所述的计算机可读介质,其特征在于:
所述电路继续向所述存储器空间写入一个或多个随后的消息,除非发生通过所述I/O控制器的丢弃;
在发生所述丢弃之后,所述电路在所述发送队列变空之后恢复随后的消息写入;以及
所述发出信号包括使与所述I/O控制器相关联的至少一个门铃响铃。
22.如权利要求17所述的计算机可读介质,其特征在于:
应用程序进程也至少部分地驻留在所述主机存储器中;
所述存储器空间包括所述进程将向其中映射的多个页;
属于不同的相应的安全域的两个相应的进程不共享所述页中的单个相应的一个页;以及
所述页中的一个或多个包括多个部分,每一相应的部分将接纳要被写入到所述相应的部分的至少一个相应的消息,所述至少一个相应的消息对应于整个相应的队列元素,并包括相应的数据和与所述数据相关联的相应的描述符。
23.如权利要求17所述的计算机可读介质,其特征在于:
所述I/O控制器将至少部分地跟踪所述I/O控制器的一个或多个资源的分派,以实施至少部分地由所述消息请求的一个或多个I/O操作;
如果没有足够的资源存在于所述I/O控制器中,以允许所述一个或多个I/O操作被实施,所述I/O控制器将丢弃所述消息;以及
所述I/O控制器将丢弃所述消息,除非,当所述I/O控制器处理所述消息时,对应于所述消息的队列元素当前位于发送队列的头部,至少部分地在所述消息已经被写入到所述存储器空间之前,所述队列元素已经被写入到所述队列。
24.如权利要求23所述的计算机可读介质,其特征在于:
所述一个或多个I/O操作包括所述数据的传输;
所述I/O控制器将总的可用的传输额度数量的子集分配到总通信量的子集,所述总通信量的所述子集至少部分地与所述数据的所述传输相关联;
所述I/O控制器将至少部分地与对所述一个或多个资源的初始跟踪同时确定在传输额度的总数的所述子集中是否存在足够数量的未分配的额度,以允许传输;以及
如果所述I/O控制器判断不存在所述足够数量的未分配的额度,则所述I/O控制器将丢弃所述消息。
CN201180073803.4A 2011-09-29 2011-09-29 向控制器存储器空间写入消息 Expired - Fee Related CN103827842B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/053988 WO2013048409A1 (en) 2011-09-29 2011-09-29 Writing message to controller memory space

Publications (2)

Publication Number Publication Date
CN103827842A true CN103827842A (zh) 2014-05-28
CN103827842B CN103827842B (zh) 2017-07-07

Family

ID=47996152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180073803.4A Expired - Fee Related CN103827842B (zh) 2011-09-29 2011-09-29 向控制器存储器空间写入消息

Country Status (3)

Country Link
US (1) US9405725B2 (zh)
CN (1) CN103827842B (zh)
WO (1) WO2013048409A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298617A (zh) * 2014-08-20 2015-01-21 深圳大学 一种numa平台中非核部件数据流缓冲管理的优化方法及系统
CN106527967A (zh) * 2015-09-10 2017-03-22 蜂巢数据有限公司 减小存储设备中的读命令时延

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405725B2 (en) * 2011-09-29 2016-08-02 Intel Corporation Writing message to controller memory space
US10394751B2 (en) 2013-11-06 2019-08-27 Solarflare Communications, Inc. Programmed input/output mode
US10936200B2 (en) 2014-07-30 2021-03-02 Excelero Storage Ltd. System and method for improved RDMA techniques for multi-host network interface controllers
US10979503B2 (en) * 2014-07-30 2021-04-13 Excelero Storage Ltd. System and method for improved storage access in multi core system
US9658782B2 (en) 2014-07-30 2017-05-23 Excelero Storage Ltd. Scalable data using RDMA and MMIO
US10133580B2 (en) * 2014-12-14 2018-11-20 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US10146540B2 (en) * 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US9892071B2 (en) * 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US10452279B1 (en) * 2016-07-26 2019-10-22 Pavilion Data Systems, Inc. Architecture for flash storage server
US11449272B1 (en) * 2021-03-09 2022-09-20 Micron Technology, Inc. Operation based on consolidated memory region description data
US11620245B2 (en) * 2021-05-09 2023-04-04 Mellanox Technologies, Ltd. Multi-socket network interface controller with consistent transaction ordering

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6747949B1 (en) * 1999-05-21 2004-06-08 Intel Corporation Register based remote data flow control
US7281030B1 (en) * 1999-09-17 2007-10-09 Intel Corporation Method of reading a remote memory
CN101101586A (zh) * 2006-07-06 2008-01-09 大唐移动通信设备有限公司 一种处理器间传递消息的方法和装置
US20080244134A1 (en) * 2004-07-02 2008-10-02 Nec Corporation Multiprocessor System and Method for Processing Memory Access
US20090210584A1 (en) * 2008-02-14 2009-08-20 International Business Machines Corporation Exception condition determination at a control unit in an i/o processing system
US20100070658A1 (en) * 2008-09-12 2010-03-18 Etrend Electronics, Inc. Method of communication between a protocol-processing unit and an input/output (i/o) device through a device interface controller
US20110145474A1 (en) * 2009-12-14 2011-06-16 Symwave, Inc. Efficient Use Of Flash Memory In Flash Drives
CN102255794A (zh) * 2010-05-17 2011-11-23 塔塔咨询服务有限公司 远程消息收发吞吐量优化和等待时间缩短用系统和方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571276B1 (en) * 2000-02-23 2003-05-27 International Business Machines Corporation System for managing asset access in a distributed storage system
AU2001243463A1 (en) * 2000-03-10 2001-09-24 Arc International Plc Memory interface and method of interfacing between functional entities
US20030043794A1 (en) * 2001-09-06 2003-03-06 Cayton Phil C. Data stream multiplexing in data network
US6847968B2 (en) * 2002-02-08 2005-01-25 William M. Pitts Method for facilitating access to remote files
US7171495B2 (en) * 2002-05-06 2007-01-30 Silverstorm Technologies, Inc. System and method for implementing virtual adapters and virtual interfaces in a network system
US6721806B2 (en) * 2002-09-05 2004-04-13 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
US7953819B2 (en) * 2003-08-22 2011-05-31 Emc Corporation Multi-protocol sharable virtual storage objects
US20060048162A1 (en) * 2004-08-26 2006-03-02 Bull Hn Information Systems Inc. Method for implementing a multiprocessor message queue without use of mutex gate objects
US7308539B2 (en) * 2004-12-17 2007-12-11 International Business Machines Corporation Concurrent read access and exclusive write access to data in shared memory architecture
US20060236063A1 (en) * 2005-03-30 2006-10-19 Neteffect, Inc. RDMA enabled I/O adapter performing efficient memory management
US7765187B2 (en) * 2005-11-29 2010-07-27 Emc Corporation Replication of a consistency group of data storage objects from servers in a data network
WO2007141082A1 (en) * 2006-06-08 2007-12-13 International Business Machines Corporation Method and system of providing multi-user access in a single-user based client-server environment with distributed repositories
US7680988B1 (en) * 2006-10-30 2010-03-16 Nvidia Corporation Single interconnect providing read and write access to a memory shared by concurrent threads
US7657710B2 (en) * 2006-11-17 2010-02-02 Sun Microsystems, Inc. Cache coherence protocol with write-only permission
US8140493B2 (en) * 2007-06-15 2012-03-20 Oracle International Corporation Changing metadata without invalidating cursors
US20080320459A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Concurrency Control For Addressable Entities
US7809875B2 (en) * 2008-06-30 2010-10-05 Wind River Systems, Inc. Method and system for secure communication between processor partitions
CN103562882B (zh) * 2011-05-16 2016-10-12 甲骨文国际公司 用于提供消息传送应用程序接口的系统和方法
US8819357B2 (en) * 2011-07-12 2014-08-26 Vmware, Inc. Method and system for ensuring cache coherence of metadata in clustered file systems
US9405725B2 (en) 2011-09-29 2016-08-02 Intel Corporation Writing message to controller memory space

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6747949B1 (en) * 1999-05-21 2004-06-08 Intel Corporation Register based remote data flow control
US7281030B1 (en) * 1999-09-17 2007-10-09 Intel Corporation Method of reading a remote memory
US20080244134A1 (en) * 2004-07-02 2008-10-02 Nec Corporation Multiprocessor System and Method for Processing Memory Access
CN101101586A (zh) * 2006-07-06 2008-01-09 大唐移动通信设备有限公司 一种处理器间传递消息的方法和装置
US20090210584A1 (en) * 2008-02-14 2009-08-20 International Business Machines Corporation Exception condition determination at a control unit in an i/o processing system
US20100070658A1 (en) * 2008-09-12 2010-03-18 Etrend Electronics, Inc. Method of communication between a protocol-processing unit and an input/output (i/o) device through a device interface controller
US20110145474A1 (en) * 2009-12-14 2011-06-16 Symwave, Inc. Efficient Use Of Flash Memory In Flash Drives
CN102255794A (zh) * 2010-05-17 2011-11-23 塔塔咨询服务有限公司 远程消息收发吞吐量优化和等待时间缩短用系统和方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298617A (zh) * 2014-08-20 2015-01-21 深圳大学 一种numa平台中非核部件数据流缓冲管理的优化方法及系统
CN104298617B (zh) * 2014-08-20 2017-12-08 深圳大学 一种numa平台中非核部件数据流缓冲管理的优化方法及系统
CN106527967A (zh) * 2015-09-10 2017-03-22 蜂巢数据有限公司 减小存储设备中的读命令时延

Also Published As

Publication number Publication date
WO2013048409A1 (en) 2013-04-04
CN103827842B (zh) 2017-07-07
US20130262614A1 (en) 2013-10-03
US9405725B2 (en) 2016-08-02

Similar Documents

Publication Publication Date Title
CN103827842A (zh) 向控制器存储器空间写入消息
CN107690622B (zh) 实现硬件加速处理的方法、设备和系统
CN101535958B (zh) 用于跨越保护域边界的对象调用的方法、系统和设备
JP4740897B2 (ja) 仮想ネットワーク構成方法及びネットワークシステム
CN114780458A (zh) 数据处理的方法和存储系统
CN103810133A (zh) 动态共享读缓冲器管理
AU2021269201B2 (en) Utilizing coherently attached interfaces in a network stack framework
US9940020B2 (en) Memory management method, apparatus, and system
CN108319496A (zh) 资源访问方法、业务服务器、分布式系统及存储介质
CN105357042B (zh) 一种高可用集群系统及其主节点和从节点
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN103763173A (zh) 数据传输方法和计算节点
CN104731635A (zh) 一种虚拟机访问控制方法,及虚拟机访问控制系统
EP3077914B1 (en) System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface
CN105302489B (zh) 一种异构多核远程嵌入式存储器系统与方法
CN116302617B (zh) 共享内存的方法、通信方法、嵌入式系统以及电子设备
US20140351550A1 (en) Memory management apparatus and method for threads of data distribution service middleware
CN104571934B (zh) 一种内存访问的方法、设备和系统
US8364879B2 (en) Hierarchical to physical memory mapped input/output translation
CN103533090A (zh) 单个物理网口模拟为多个逻辑网口的映射方法与装置
CN107908365A (zh) 用户态存储系统数据交互的方法、装置及设备
CN107209643B (zh) 虚拟化环境中的存储资源管理
CN108780387A (zh) 虚拟化环境中的存储资源管理
CN101196833B (zh) 用于存储器利用的方法和装置
CN105988871B (zh) 一种远端内存分配方法、装置和系统

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: 20170707

Termination date: 20190929