CN103460202A - 至少部分地通过电路来促进对至少一个控制器命令接口的访问 - Google Patents

至少部分地通过电路来促进对至少一个控制器命令接口的访问 Download PDF

Info

Publication number
CN103460202A
CN103460202A CN2012800163347A CN201280016334A CN103460202A CN 103460202 A CN103460202 A CN 103460202A CN 2012800163347 A CN2012800163347 A CN 2012800163347A CN 201280016334 A CN201280016334 A CN 201280016334A CN 103460202 A CN103460202 A CN 103460202A
Authority
CN
China
Prior art keywords
queue
nic
command
another controller
controller
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
CN2012800163347A
Other languages
English (en)
Other versions
CN103460202B (zh
Inventor
E·塔米尔
B-Z·弗里德曼
T·L·威尔克
E·露兹欧恩
M·R·威尔考克斯
D·E·伍德
S·B·麦克高文
R·O·夏普
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 CN103460202A publication Critical patent/CN103460202A/zh
Application granted granted Critical
Publication of CN103460202B publication Critical patent/CN103460202B/zh
Active 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Selective Calling Equipment (AREA)

Abstract

实施例可包括用来至少部分地促进客户端中的第一网络接口控制器(NIC)使其能够经由远离客户端的服务器中的第二NIC并以独立于所述服务器中的操作***环境的方式访问所述服务器中的另一控制器的至少一个命令接口的电路。所述命令接口可包括至少一个控制器命令队列。这样的访问可包括将至少一个队列元素写入所述至少一个命令队列中以命令所述另一控制器执行与所述另一控制器相关联的至少一个操作。所述另一控制器可至少部分地响应于所述至少一个队列元素,执行所述至少一个操作。许多替换方案、变化和修改都是可能的。

Description

至少部分地通过电路来促进对至少一个控制器命令接口的访问
技术领域
本发明涉及至少部分地通过电路来促进对至少一个控制器命令接口的访问。
背景技术
在一个常规计算布置中,客户端和服务器包括各自的能够使用远程直接存储器访问(RDMA)协议互相通信的网络接口控制器(NIC)。服务器包括执行服务器的操作***和相关联的驱动器的主处理器。服务器还包括管理服务器的存储的存储控制器。客户端的NIC向服务器的NIC发出请求以向存储写数据和从存储读数据。服务器的操作***、相关联的驱动器和主处理器处理服务器的NIC所接收的请求,并向存储控制器发出相对应的请求。存储控制器接收并执行这些相对应的请求。在执行相对应的请求之后,存储控制器向服务器的操作***和相关联的驱动器发出请求完成信息(以及在已从存储读取数据的情况下的相关联的数据)。由此,服务器的操作***、相关联的驱动器和主处理器生成相对应的请求完成信息和相关联的数据,并向服务器的NIC发出相对应的请求完成信息和相关联的数据。然后服务器的NIC向客户端的NIC发出相对应的请求完成信息和相关联的数据。
因而,在上述常规布置中,服务器的操作***、相关联的驱动器和主处理器处理服务器的NIC所接收的请求、以及来自存储的完成信息和数据。这消耗大量的操作***和主处理器处理带宽。这还增加主处理器所消耗的能量和散发的热量。此外,这还增加了处理客户端的NIC发出的请求所涉及的等待时间。
附图说明
随着下面的具体实施方式展开并结合附图,实施例的特征和优点将变得显而易见,附图中使用相同的标记指代相同的部分,其中:
图1示出了***实施例。
图2示出了实施例中的特征。
尽管下面的具体实施方式将结合说明性实施例展开,其众多替代方案、修改和变化对于本领域内的普通技术人员应是显而易见的。因此,所要求保护的主题旨在被广义地认识。
具体实施方式
图1示出了***实施例100。***100可包括经由网络50通信耦合到服务器20的客户端10。在此实施例中,术语“主计算机”、“主机”、“服务器”、“客户端”、“网络节点”和“节点”可以互换地使用,并可表示但不限于例如一个或多个终端站、移动互联网设备、智能电话、媒体设备、输入/输出(I/O)设备、平板计算机、电器、中间站、网络接口、客户端、服务器和/或其部分。尽管客户端10、服务器20和网络50将以单数指称,应理解每个这样的相应组件可包括多个这样的相应组件而不背离此实施例。在此实施例中,“网络”可以是或者包括至少部分地许可、促进和/或允许两个或多个实体通信耦合在一起的任何机制、工具、模态和/或其部分。同样在此实施例中,如果第一实体能够向第二实体传输和/或从第二实体接收一个或多个命令和/或数据,则第一实体可“通信耦合”到第二实体。在此实施例中,数据和信息可以互换地使用,而且可以是或者包括一个或多个命令(例如一个或多个程序指令),和/或一个或多个这样的命令可以是或者包括数据和/或信息。同样在此实施例中,“指令”包括数据和/或一个或多个命令。
客户端10包括能远程直接存储器访问(RDMA)的网络接口控制器(RNIC)10和/或一个或多个(在此实施例中为多个)缓冲器13。
服务器20包括一个或多个集成电路(IC)芯片180、存储器21和/或存储150。一个或多个芯片180包括可至少部分地包括RNIC108和/或存储控制器112的电路118。另外,一个或多个芯片180包括一个或多个多核主处理器(HP)和/或中央处理单元(CPU)12。尽管未在图中示出,但服务器20还可包括一个或多个芯片组(包括例如存储器、网络和/或输入/输出控制器电路)。RNIC108、控制器112和/或HP/CPU12能互相通信。另外,RNIC108、存储控制器112和/或HP/CPU12能够经由一个或多个这样的芯片组访问服务器20的一个或多个其它组件(诸如存储器21和/或存储150)和/或与之通信。在此实施例中,客户端10和/或RNIC106至少部分地远离(例如,地理上远离)于服务器20和/或RNIC108。
在此实施例中,“电路”包括例如单个或以任何组合形式的模拟电路、数字电路、硬连线电路、可编程电路、协同处理器电路、状态机电路和/或可包括由可编程电路执行的程序指令的存储器。同样在此实施例中,处理器、HP、CPU、处理器核(PC)、核和控制器中的每一个可包括能够至少部分地执行一个或多个算术和/或逻辑操作,和/或至少部分地执行一个或多个指令的相应的电路。在此实施例中,集成电路芯片可以是或者包括一个或多个微电子器件、衬底和/或管芯。尽管未在图中示出,服务器20包括图形用户界面***,此***包括例如相应的键盘、定点设备和许可人类用户将命令输入到服务器20和/或***100并监视服务器20和/或***100的操作的显示***。同样在此实施例中,存储器可包括一个或多个以下类型的存储器:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电子可编程存储器、随机存取存储器、闪速存储器、磁盘存储器、光盘存储器和/或其它的或后来开发的计算机可读和/或可写存储器。
存储150包括大容量存储156。在此实施例中,存储可以是或者包括一个或多个数据可相应存储进和/或从中读取出的装置。同样,在此实施例中,大容量存储可以是或者包括能够非易失性存储数据的存储。例如,在此实施例中,大容量存储可包括但不限于一个或多个非易失性电机、磁性、光学和/或半导体存储设备。
一个或多个机器可读程序指令至少部分地存储在存储器21中。在服务器20的操作中,这些机器可读指令由一个或多个主处理器12、RNIC108和/或控制器112访问和执行。当由一个或多个HP12执行时,这些一个或多个机器可读指令可导致至少部分地由一个或多个HP12执行并变成至少部分地驻留在存储器21中的一个或多个操作***环境(OSE)32。同样当这些机器可读指令由RNIC108和/或存储控制器112执行时,这些一个或多个指令可产生由RNIC108和/或控制器112建立和/或执行和/或变成驻留在存储器21中的存储控制器112的一个或多个命令接口110、一个或多个门铃192、一个或多个指针202、一个或多个代理194、一个或多个队列124和/或一个或多个队列126。
在此实施例中,一个或多个OSE32可包括一个或多个操作***(OS)31和/或一个或多个RNIC和/或存储控制器驱动器33。一个或多个驱动器33可至少部分地与一个或多个OS31互相不同。作为替换或补充,在不背离此实施例的情况下,一个或多个OS32和/或驱动器33的一个或多个相应部分可至少部分地不与彼此互相不同和/或可至少部分地互相包括。同样,在不背离此实施例的情况下,电路118、RNIC108和/或控制器112可不同于或者另选地被包括进一个或多个未示出的芯片组和/或HP12。同样在不背离此实施例的情况下,存储器21的一个或多个部分可被包括进RNIC108、控制器112、电路118、HP12和/或IC180中。
在此实施例中,实体的部分或子集可包括实体的全部或少于全部。同样,在此实施例中,进程、线程、端口监控、程序、驱动器、操作***、应用、内核和/或虚拟机监视器的每一个可(1)至少部分地包括和/或(2)至少部分地导致一个或多个操作和/或程序指令的执行,和/或由一个或多个操作和/或程序指令的执行所产生。
在此实施例中,命令接口可至少部分地促进、许可和/或实现数据和/或一个或多个命令的交换、传输和/或接收。同样在此实施例中,队列、缓冲器和/或门铃包括数据和/或一个或多个命令至少暂时地存储于其中的存储器中的一个或多个地点(例如,至少部分地由一个或多个地址指定和/或指示)。此外,在此实施例中,队列元素可以是或者包括将要存储和/或已存储于一个或多个队列中的数据和/或一个或多个命令,诸如一个或多个描述符和/或一个或多个命令。另外,在此实施例中,指针可至少部分地指示、寻址和/或指定存储器中的一个或多个地点和/或一个或多个项目。
在此实施例中,RNIC106和RNIC108可根据与RDMA(例如iWARP)协议、以太网协议和/或传输控制协议/网际协议(TCP/IP)相符合和/或兼容的一个或多个协议经由网络50交换数据和/或命令。例如,RDMA协议可与Recio等“RDMA协议规范”,因特网草案规范,因特网工程任务组(IETF),2002年10月21日相符合和/或兼容。还例如,以太网协议可与电气和电子工程师协会(IEEE)802.3-2008,2008年12月26日相符合和/或兼容。另外,例如,TCP/IP协议可与发布于1981年9月的因特网工程任务组(IETF)评定要求文件(RFC)791和793中描述的协议相符合和/或兼容。许多不同的、另外的和/或其它协议可被用于这样的数据和/或命令交换而不背离此实施例(例如,前述、相关和/或其它协议的较早和/或较晚开发版本)。
在此实施例中,电路118可至少部分地许可和/或有助于RNIC106能够经由RNIC108访问一个或多个命令接口110。例如,电路118可至少部分地许可和/或有助于RNIC106能够以独立于服务器20中的OSE32的方式如此访问一个或多个命令接口110。此访问可包括例如将至少一个队列元素(例如,一个或多个队列元素(QE)116)写到一个或多个接口110中的一个或多个命令队列114中。这可命令存储控制器112至少部分地执行涉及与控制器112相关联的存储150和/或大容量存储156的一个或多个操作。至少部分地响应于一个或多个队列元素116(例如,至少部分地响应于被写入一个或多个队列114中的一个或多个元素116及响应之后),控制器112可执行这些一个或多个操作。这些涉及存储150和/或大容量存储156的一个或多个操作可包括至少部分地涉及存储150和/或大容量存储156的一个或多个写操作和/或一个或多个读操作。在此实施例中,访问可包括一个或多个读操作和/或一个或多个写操作,诸如在此示例中的涉及存储150和/或大容量存储156。
作为示例,在***100的操作中,客户端10和/或RNIC106可向服务器20和/或RNIC108认证客户端10和/或RNIC106。这可导致客户端10和/或RNIC106被授予至少部分地访问服务器20(例如,经由RNIC108)的许可。至少部分地在这同时、之后或者之前,RNIC108、控制器112、一个或多个代理194和/或OSE32可至少部分地生成、建立和/或维护至少部分地指示一个或多个接口110和/或其组件位于存储器21中何处(例如,一个或多个地点)的存储器21中的一个或多个接口110和/或一个或多个指示符181。例如,一个或多个指示符181可至少部分地指示一个或多个命令队列114、一个或多个完成队列120、一个或多个门铃170和/或一个或多个缓冲器130A……130N可位于存储器21中的一个或多个地点。RNIC108经由网络50向RNIC106提供一个或多个指示符181。之后,RNIC106可使用一个或多个指示符181中的一个或多个以访问一个或多个接口110和/或一个或多个接口110的一个或多个组件。一个或多个指示符181可至少部分地是或者包括存储器21中一个或多个区域的一个或多个句柄,诸如在此实施例中与RDMA(例如iWARP)协议相符合和/或兼容的一个或多个Stag。
在接收一个或多个指示符181之后,客户端10和/或RNIC106可经由网络50和RNIC108以绕过和/或独立于OSE32的参与的方式向存储控制器112发出给服务器20的一个或多个命令105。一个或多个命令105可命令存储控制器112执行涉及存储150和/或大容量存储156的一个或多个操作。
例如,一个或多个命令105可与RDMA(例如iWARP)协议相符合和/或兼容。一个或多个命令105至少部分地包括和/或指定可至少部分地体现和/或指示涉及被命令的存储150和/或大容量存储156的一个或多个操作。尽管未在图中示出,一个或多个命令105可至少部分地包括、指定和/或指示指示符181中的一个或多个,指示符181中的一个或多个可指示一个或多个命令队列114中的一个或多个地点作为一个或多个队列元素116的一个或多个预期目的地。
在此示例中,一个或多个队列元素116可命令控制器112执行涉及存储150和/或大容量存储156的一个或多个写操作。因此,一个或多个命令105还可至少部分地包括和/或指定作为执行一个或多个队列元素116的结果将由控制器112写到存储150和/或大容量存储156中的数据199。一个或多个命令105可至少部分地包括、指定和/或指示指示符181中的一个或多个,指示符181中的一个或多个可指示数据199将被写入(至少暂时地)的一个或多个缓冲器的一个或多个地点。
至少部分地响应于接收到一个或多个命令105,RNIC108以被一个或多个命令105所命令的方式将一个或多个队列元素116和数据199各自直接写(例如,根据RDMA(例如iWARP)协议和/或以绕过和/或独立于OSE32的方式)到一个或多个命令队列114和一个或多个缓冲器130A中。因此,实际上,通过向RNIC108发出一个或多个命令105,RNIC106将一个或多个队列元素116和数据199各自写到一个或多个命令队列114和一个或多个缓冲器130A中。
一个或多个命令105还可包括和/或指定一个或多个值201和可指示一个或多个值201将被写入其中的一个或多个门铃170的一个或多个地点的指示符181中的一个或多个。至少部分地响应于一个或多个命令105中的这些一个或多个值201和这些指示符181中的一个或多个,RNIC108以被一个或多个命令105所命令的方式将一个或多个值201直接地写(例如,根据RDMA(例如iWARP)协议和/或以绕过和/或独立于OSE32的方式)在门铃170中。将一个或多个值201写入门铃170中可按响门铃170。因此,实际上,通过向RNIC108发出一个或多个命令105,RNIC106按响门铃170。
在此实施例中,按响与实体相关联的门铃可至少部分地包括和/或涉及将一个或多个值写入一个或多个存储器地点(例如关联于、包括和/或体现所述门铃),这可至少部分地导致和/或触发实体至少部分地执行一个或多个操作和/或动作。作为补充或替换,尽管未在图中示出,在不背离此实施例的情况下,一个或多个门铃170可至少部分地被包括在电路118和/或控制器112中。同样作为补充或替换,在不背离此实施例的情况下,一个或多个门铃192至少部分地被包括在电路118和/或控制器108中。在这些补充或替换的布置中,门铃170和/或192在CPU12和/或服务器20看来各自为控制器112和/或控制器118中的相应存储器(未示出)中的一个或多个相应的存储器地点(未示出)。
至少部分地响应于按响门铃170,控制器112可返回到完全操作状态(例如,如果控制器112之前进入了相对于该完全操作状态的降低电源状态),并可读取被写入一个或多个队列114中的一个或多个队列元素116。然后,控制器112至少部分地执行由一个或多个队列元素116指定和/或体现的一个或多个命令。这可导致控制器112至少部分地执行涉及存储150和/或大容量存储156的一个或多个操作(例如,将存储在一个或多个缓冲器130A中的数据199写入存储150和/或大容量存储156的一个或多个写)。
至少部分地在这些涉及存储150和/或大容量存储156的一个或多个操作完成之后,控制器112可至少部分地生成一个或多个完成队列元素(CQE)190并将其写入一个或多个完成队列120。同样至少部分地在这些涉及存储150和/或大容量存储156的一个或多个操作完成之后,控制器112还至少部分地将一个或多个值写入与RNIC108相关联的一个或多个门铃192。这可按响一个或多个门铃192。至少部分地响应于按响一个或多个门铃192,RNIC108可将一个或多个完成队列元素190写入(例如,经由一个或多个RDMA写操作和/或RNIC106)客户端10中的一个或多个缓冲器13(例如,经由一个或多个响应197)。
至少部分地在一个或多个这样的涉及存储150和/或大容量存储156的写和/或读操作被执行之后,一个或多个代理194可执行某些管理功能。例如,一个或多个代理194至少部分地建立与RNIC108相关联的一个或多个命令队列126中的一个或多个命令队列条目/元素(E)196A……196N,和/或表250(见图2)中的一个或多个命令队列条目/元素QE A……QE N。如以下讨论的,这些元素196A……196N和/或QE A……QE N至少部分地在被RNIC108执行时,可至少部分地许可和/或促进将一个或多个其它队列条目(例如一个或多个存储控制器完成条目190)复制到客户端10和/或RNIC106和/或由存储控制器112读取的数据。
这些管理功能还可至少部分地包括由与各自关联于存储控制器112和RNIC108的一个或多个队列对(例如,命令/完成队列对114、120和/或命令/完成队列对126、124)相关联的一个或多个指针(例如环指针PNTR202)的一个或多个代理194进行的更新(例如,适当推进)。这许可队列对的新条目被存储在不会导致对队列对中的其它条目的错误盖写的地点。另外,作为这些管理功能的一部分,一个或多个代理194指示可用来被重用的缓冲器130A……130N中的一个或多个。
作为另一示例,一个或多个队列元素116可命令控制器112执行涉及存储150和/或大容量存储156的一个或多个读操作。因此,一个或多个命令105还至少部分地包括和/或指定存储150和/或大容量存储156中的一个或多个地点,从中控制器112将读取数据199作为执行一个或多个队列元素116的结果。
至少部分地响应于接收到一个或多个命令105,RNIC108以被一个或多个命令105所命令的方式直接将一个或多个队列元素116写入(例如,根据RDMA(例如iWARP)协议和/或以绕过和/或独立于OSE32的方式)一个或多个命令队列114。于是,实际上,通过向RNIC108发出一个或多个命令105,RNIC106可将一个或多个队列元素116相应地写入一个或多个命令队列114和一个或多个缓冲器130A。
在此示例中,一个或多个命令105还可包括和/或指定一个或多个值201和指示符181中的一个或多个,指示符181中的一个或多个可指示一个或多个值201将被写入其中的一个或多个门铃170中的一个或多个地点。至少部分地响应于一个或多个命令105中的这些一个或多个值201和这些指示符181中的一个或多个,RNIC108以被一个或多个命令105所命令的方式将一个或多个值201直接写(例如,根据RDMA(例如iWARP)协议和/或以绕过和/或独立于OSE32的方式)入门铃170。将一个或多个值201写入门铃170可按响门铃170。因此,实际上,通过向RNIC108发出一个或多个命令105,RNIC106可按响门铃170。
至少部分地响应于按响门铃170,控制器112返回到完全操作状态(例如,如果控制器112之前进入了相对于该完全操作状态的降低功率状态),并可读取被写入一个或多个队列114中的一个或多个队列元素116。然后控制器112可至少部分地执行由一个或多个队列元素116指定和/或体现的一个或多个命令。这可导致控制器112至少部分地执行涉及存储150和/或大容量存储156的一个或多个操作(例如,一个或多个为获取数据199对存储150和/或大容量存储156的读)并将数据199存储在一个或多个缓冲器(例如一个或多个缓冲器130A)中。
至少部分地在这些涉及存储150和/或大容量存储156的一个或多个操作完成之后,控制器112可至少部分地生成一个或多个完成队列元素190并将其写入一个或多个完成队列120。同样至少部分地在这些涉及存储150和/或大容量存储156的一个或多个操作完成之后,控制器112还至少部分地将一个或多个值写入与RNIC108相关联的一个或多个门铃192。这可按响一个或多个门铃192。至少部分地响应于按响一个或多个门铃192,RNIC108可将一个或多个完成队列元素190和数据199写(例如经由一个或多个RDMA写操作和/或RNIC106)入客户端10中的一个或多个缓冲器13(例如经由一个或多个响应197)。
在此实施例中,命令接口110是异步的,表现在例如完成队列元素可能不是以一种次序存储在一个或多个完成队列120中,该次序对应于(1)命令队列元素被存储在一个或多个命令队列114中的次序、(2)这样的命令队列元素被存储控制器112执行和/或完成的次序和/或(3)完成队列元素被存储在一个或多个完成队列120中和/或提供给RNIC106和/或客户端10的次序。在操作中,在写命令从客户端10和/或RNIC106发出的情况下,RNIC106和/或客户端10可适当地对从RNIC108接收的相对应的完成队列元素重排序。但是,在读命令的情况下,在此实施例中,为了许可从存储150和/或大容量存储156读取的相应数据适当地与相对应的完成队列元素相关联以传输到客户端10和/或RNIC106,每个由存储控制器112发出的完成队列元素(例如元素190)可包括图2中示出的元素。
如图2所示,完成队列元素(例如元素190)包括一个或多个命令参数304、一个或多个命令队列标识符306、一个或多个命令队列头位置指示符308、状态信息310、一个或多个队列阶段位(P)312和/或一个或多个命令标识符302。一个或多个参数304可以是和/或指示一个或多个命令队列元素116和/或可与一个或多个完成队列元素190相对应和/或相关联的命令105的一个或多个命令特定参数。一个或多个命令队列标识符306可指示和/或指定一个或多个命令队列元素116被写入其中的一个或多个命令队列114。一个或多个命令队列头位置指示符308可指示一个或多个命令队列元素116所位于的当前位置(例如,在由一个或多个标识符306所标识的一个或多个命令队列114中)。状态信息310可指示一个或多个命令105和/或一个或多个命令队列元素116是否由存储控制器112所成功地执行。一个或多个阶段位312可指示一个或多个元素190是否构成一个或多个完成队列120中最新增加的有效条目(例如关于服务)。一个或多个命令标识符302至少部分地指示和/或相同于相应的一个或多个命令队列元素116中的一个或多个相应的命令标识符。此后的字段302可许可一个或多个完成队列元素190被正确地关联于一个或多个相应命令队列元素116和/或从存储150和/或大容量存储156读取的相应数据199,作为执行这些一个或多个相应命令队列元素116的结果。
例如,在此实施例中,可选择一个或多个标识符302以便其不与当前被任何还未由RNIC108提供给客户端10和/或RNIC106的完成队列元素使用的任何其它命令标识符冲突和/或相同。在***100中使用的命令标识符可被预先计算和/或预先生成,并可用作至少部分地被存储在存储器21中的表250中的相应条目ENTRY A……ENTRY N的相应索引INDEX A……INDEX N。表250中的条目ENTRY A……ENTRY N中的每一个可存储可与RNIC108相关联的一个或多个相应的预先计算和/或预先生成的命令队列元素QE A……QE N。每个相应元素QE A……QE N可与一个或多个缓冲器130A……130N中的一个或多个相应缓冲器相关联。控制器112将从存储150和/或大容量存储156中读取的数据存储于其中的一个或多个缓冲器130A……130N中的缓冲器中的每一个还与在***100中使用的一个或多个相应命令标识符和/或相应条目ENTRYA……ENTRY N相关联。
命令队列元素QE A……QE N可由客户端10和/或一个或多个代理194存储和/或维护在表250中。如果一个或多个缓冲器130A……130N是静态分配的,则表250是静态的,并就例如分配特征而言可对应于被分配在客户端10中的一个或多个缓冲器13。
作为示例,在控制器112从存储150和/或大容量存储156中读取数据199之后,控制器112可将数据199存储在与一个或多个命令标识符302相关联的一个或多个缓冲器(例如一个或多个缓冲器130A)中,并将一个或多个完成队列元素190存储在一个或多个完成队列120中。至少部分地响应于控制器112按响一个或多个门铃192,RNIC108可至少部分地基于一个或多个位312确定一个或多个队列120中的一个或多个最新增加的有效完成队列元素190。RNIC108可使用一个或多个元素190中的一个或多个命令标识符302对表250索引以定位表250中至少部分地由一个或多个命令标识符302所关联和/或标识的一个或多个条目(例如一个或多个条目ENTRY A)和一个或多个命令队列元素(例如一个或多个队列元素QE A)。RNIC108至少部分地执行由这些一个或多个命令队列元素QE A所关联和/或体现的一个或多个命令。这可至少部分地导致RNIC108读取一个或多个缓冲器130A以获得数据199,并将数据199和一个或多个完成队列元素190传输到RNIC106和/或客户端10(例如经由一个或多个响应197)。结果,数据199和/或一个或多个完成队列元素190可被复制进一个或多个客户端缓冲器13。
或者,在此实施例中,RNIC108可至少部分地包括状态机(未示出)。此状态机可至少部分地与由RNIC108所关联和/或利用的一个或多个命令队列126独立和/或分开。此状态机至少部分地基于一个或多个命令标识符302定位表250中的一个或多个命令队列元素QE A,并将一个或多个命令队列元素QEA复制进一个或多个队列126中的一个或多个相应的命令队列元素196A。然后此状态机示意RNIC108至少部分地访问和执行一个或多个队列126中的一个或多个元素196A。
又或者,不背离此实施例地,在完成涉及存储150和/或大容量存储156的一个或多个读操作之前,至少部分地基于一个或多个命令标识符302,控制器112在和/或从表250中至少部分地定位和/或选择一个或多个命令队列元素QE A。然后控制器112可将一个或多个完成队列元素190写入一个或多个完成队列120,并可将一个或多个元素QE A写入一个或多个命令队列126中的一个或多个相对应的元素196A。然后控制器112可按响一个或多个门铃192。这可导致RNIC108至少部分地访问和执行一个或多个队列126中的一个或多个元素196A。这可至少部分地导致RNIC108读一个或多个缓冲器130A以获得数据199,并将数据199和一个或多个完成队列元素190传输到RNIC106和/或客户端10(例如经由一个或多个响应197)。结果,数据199和/或一个或多个完成队列元素190可被复制进一个或多个客户端缓冲器13。
在此替换方案中,至少部分地由控制器112执行的固件和/或一个或多个代理194可维护每队列对的上下文信息以指示用于RDMA事务的一个或多个队列对。此上下文信息还包括各种指针(例如,用来将数据从一个或多个缓冲器130A……130N中移到一个或多个缓冲器13的一个或多个元素196A……196N的数组的和/或一个或多个队列126的头的、一个或多个队列126的)、一个或多个门铃192的一个或多个地点和用来按响一个或多个门铃192的一个或多个值和/或一个或多个队列126的头和/或指针的本地拷贝。各种这些指针(例如头和尾指针)可被由控制器112执行的固件动态地更新。
作为补充或另选,不背离此实施例地,RNIC108和/或存储控制器112可至少部分地被包括在未示出的芯片组或未示出的电路板中。同样作为补充或另选,不背离此实施例地,存储150和/或大容量存储156可至少部分地被包括在服务器20内部或外部。
另外,尽管上述描述参考了控制器108是RNIC,和控制器112是存储控制器,然而此实施例的原理可应用于其中不同于RDMA和/或RDMA之外的协议可被采用和/或控制器112可被涉及于不涉及存储150的操作(例如,其它和/或另外的输入/输出和/或通信相关的操作)的执行和/或促进中的一些情况。因此,不背离此实施例地,控制器108可利用不同于RDMA和/或RDMA之外的协议,和/或客户端10与服务器20之间的通信可采用不同于RDMA和/或RDMA之外的协议。同样,不背离此实施例地,控制器112可被涉及于和/或促进这样的其它和/或另外的操作的执行。在这些作为补充和/或替换的布置中,硬件和/或固件电路(未示出)可被包括于至少部分地许可经由例如一个或多个中断机制(例如,一个或多个示意中断(MSI/MSI-X)的消息和/或其它机制)对门铃170和/或192进行写的电路118中。此实施例应被广泛地视为覆盖所有这样的修改、变化和替换。
因此,实施例可包括用来至少部分地促进客户端中的第一NIC能够经由远程于客户端的服务器中的第二NIC并以独立于服务器中的操作***环境的方式访问服务器中的另一(例如,存储和/或另一/另外的类型的)控制器的至少一个命令接口的电路。客户端中的NIC和服务器中的NIC可以是或者包括各自的能远程直接存储器访问的网络接口控制器(例如,至少部分地能够经由RDMA利用和/或通信的控制器)。命令接口包括至少一个(例如,存储和/或另一/另外的类型的)控制器命令队列。这样的访问可包括将至少一个队列元素写到至少一个命令队列以命令另一控制器执行至少一个与所述另一控制器相关联的操作(例如,涉及存储和/或涉及一个或多个其它和/或另外的类型的操作,诸如其它和/或另外的输入/输出操作)。至少部分地响应于所述至少一个队列元素,所述另一控制器可执行所述至少一个操作。许多替换方案、变化和修改都是可能的。
因此,在此实施例中,服务器20中的存储控制器112的一个或多个命令接口110可由客户端的RNIC106经由一个或多个RDMA事务,以绕过、独立于和/或不涉及服务器的OSE32和/或CPU12的方式直接访问。有利地,这可许可存储命令、数据和完成消息在客户端和服务器之间更快更有效地、并且等待时间更少地通信。此外,在此实施例中,RNIC108和控制器112之间的交互可完全或几乎完全地由硬件(例如,利用对等的存储器和门铃写)执行,并同样以绕过、独立于和/或不涉及服务器的OSE32和/或CPU12的方式执行。有利地,这可许可这样的交互更快更有效地、并且等待时间更低地执行。另外,此实施例的以上特征可降低服务器的功耗、热能散发和由OSE32和CPU12消耗的带宽量。
许多其它修改是可能的。例如,如之前陈述的,在此实施例中,客户端10可包括多个客户端。如果服务器20和客户端10之间的通信采用RDMA,在此实施例中,有利地,客户端10可在客户端10之间或之中在执行它们与服务器20、RNIC108和/或控制器112间的通信时动态地将缓冲器130A……130N共享为公共缓冲器池。为了许可这样的缓冲器共享,RNIC108能够至少部分地操纵、调整和/或修改至少部分地在为了允许缓冲器130A……130N和/或其它服务器资源在客户端10之中共享而不导致例如争用相关的问题而由客户端10提供给服务器20的命令105中指示的缓冲器特定信息。
例如,一个或多个指示符181和/或由一个或多个指示符181指示的Stag包括RNIC108与一个或多个缓冲器和/或缓冲器130A……130N中的缓冲器池而不是与一个或多个存储器区域柄和/或除一个或多个存储器区域柄之外相关联的相应信息。在此实施例中,客户端10利用这样的指示符181执行RDMA读操作,且RNIC108可执行对由所述相应信息和/或指示符181所指示的一个或多个缓冲器和/或缓冲器池的写操作。在执行其操作时,RNIC108可适当地调整提供给控制器112的实际命令和/或命令队列元素,以便导致正确的缓冲器等在控制器112执行这样的命令和/或命令队列元素时被控制器112写。
作为替换或补充,不背离此实施例地,RNIC108可包括和/或关联于共享的接收队列(未示出)以接收例如来自多个客户端10的命令105。RNIC108能够至少部分地将一个或多个适当的服务器缓冲器地址、值、和/或其它信息代入所接收的命令105的一个或多个部分(例如,队列元素116、值201、指示符181和/或其它信息),以许可对多个客户端10之间或之中的一个或多个命令接口110中的结构的共享,而不导致争用或其它性能降级。在此布置中,客户端可不被提供和/或将一个或多个Stag用于存储控制器的命令队列和/或门铃的,且对这些结构的写可由服务器的RNIC108执行。有利地,这可许可关联于和/或利用共享的接收队列的多个客户端10,以至少部分地利用和/或共享同一存储控制器命令队列、门铃和/或其它结构。
例如,在写操作的情况下,一个或多个指示符181、一个或多个值201和/或一个或多个命令105中的其它信息可至少部分地指示对写操作(和相关信息)的一个或多个存储控制器Stag,和/或对一个或多个完成队列元素写入其中的一个或多个缓冲器的一个或多个RDMA Stag。至少部分地基于所述一个或多个接收到的命令105和/或存储在RNIC108中的其它信息,RNIC108可选择缓冲器130A……130N中的一个或多个缓冲器和命令队列114中的一个或多个地点,将要被写的数据199和一个或多个相对应的命令队列元素各自张贴于其中用于控制器112。RNIC108根据这样的选择张贴数据199和一个或多个相对应的命令队列元素,并在之后按响门铃170。如由RNIC108所张贴的,一个或多个命令队列元元素可指示一个或多个命令105中所供应的一个或多个存储控制器Stag、命令标识符302、安全上下文信息(例如,为了许可对一个或多个存储控制器Stag的验证)和/或对数据199被张贴其中的一个或多个缓冲器的一个或多个Stag。在控制器112已经至少部分地完成了所请求的一个或多个写操作和所张贴的一个或多个完成队列元素之后,控制器112可按响门铃192。至少部分地基于表250中的信息,RNIC108可生成一个或多个适当的响应197并将其转发给提供了所接收的命令105的一个或多个客户端。
在读操作的情况下,基本相似的信息可在命令105中提供,且基本相似的操作可由RNIC108和/或控制器112执行。但是,在读操作的情况下,由控制器112读取的数据199可由控制器112存储到由RNIC108指定的缓冲器130A……130N中的一个或多个中,且可由RNIC108读取,而不是反之(例如,如写操作中的情况)。RNIC108在一个或多个响应197中将读数据199传输到提供了所接收的命令105的一个或多个客户端。在前述布置中,至少从发起这样的访问的一个或多个客户端执行的应用的视点,命令105与由客户端利用来访问所述客户端本地的存储的命令相似或相同。有利地,这可许可之前描述为对这些一个或多个客户端执行的应用基本透明的类型的远程操作和/或RDMA事务。
因此,在此实施例中,有利地,多个客户端可共享存储控制器的命令队列、门铃和/或服务器的缓冲器,和/或使用RDMA协议对这些结构写(经由服务器的RNIC),而不遭受否则可能发生的资源争用问题(和/或其它缺点)是可能的。服务器的RNIC能够至少部分地修改客户端的命令105所关联和/或包括的信息以促进这样的共享和/或客户端之间或之中的RDMA Stag信息的共享。有利地,这可许可为服务器和多个客户端之间的命令通信和/或完成采用RDMA协议,伴随提高了的可缩放性同时降低用于实现这样的特征的存储器消耗,且没有通信线路速率的降级。
不需背离此实施例,许多其它和/或另外的修改、变化和/或替换是可能的。因此,此实施例应被广泛地视为涵盖所有这样的替换、修改和变化。

Claims (29)

1.一种装置,包括:
用来至少部分地促进客户端中的第一网络接口控制器(NIC)使其能够经由远离所述客户端的服务器中的第二NIC并以独立于所述服务器中的操作***环境的方式访问所述服务器的另一控制器的至少一个命令接口,所述至少一个命令接口包括所述另一控制器的至少一个命令队列,所述访问包括将至少一个队列元素写入所述至少一个命令队列以命令所述另一控制器执行与所述另一控制器相关联的至少一个操作,所述另一控制器至少部分地响应于所述至少一个队列元素执行所述至少一个操作。
2.如权利要求1所述的装置,其特征在于:
所述至少一个操作包括涉及存储的写操作和读操作中的至少一个;
集成电路芯片包括所述第二NIC、所述另一控制器和中央处理单元(CPU),所述CPU将执行所述操作***环境;且
所述存储包括大容量存储。
3.如权利要求1所述的装置,其特征在于:
电路至少部分地包括所述第二NIC和所述另一控制器;
所述至少一个命令接口还包括至少一个完成队列、至少一个门铃和至少一个数据缓冲器;
所述第二NIC将至少部分地将指示符提供给所述第一NIC以至少部分地指示所述至少一个命令队列、所述至少一个完成队列、所述至少一个门铃和所述至少一个数据缓冲器位于何处;且
所述第一NIC将使用所述指示符中的一个或多个以访问所述至少一个命令接口。
4.如权利要求3所述的装置,其特征在于:
所述第一NIC将所述至少一个队列元素写到所述至少一个命令队列中以命令所述另一控制器执行所述至少一个操作;
所述第一NIC将按响所述至少一个门铃;
至少部分地响应于所述至少一个门铃,所述另一控制器将读取所述至少一个队列元素并至少部分地执行所述至少一个操作;
至少部分地在所述至少一个操作完成之后,所述另一控制器将至少一个完成队列元素写到所述至少一个完成队列中并且至少部分地在所述至少一个操作完成之后按响与第二NIC相关联的所述另一门铃;且
至少部分地响应于所述另一门铃,所述第二NIC至少部分地向所述第一NIC提供所述至少一个完成队列元素。
5.如权利要求3所述的装置,其特征在于:
所述服务器中的至少一个代理将至少部分地建立与所述第二NIC相关联的一个或多个队列中的一个或多个条目以许可对与所述另一控制器相关联的一个或多个其它队列条目的复制;
所述至少一个代理将至少部分地更新与所述另一控制器和所述第二NIC相关联的一个或多个队列对所关联的一个或多个指针;且
所述至少一个代理指示将被再用的一个或多个缓冲器。
6.如权利要求3所述的装置,其特征在于:
所述至少一个队列元素包括至少一个命令标识符;
所述另一控制器在至少部分地执行了所述至少一个操作之后把至少一个完成队列元素写到与所述另一控制器相关联的至少一个完成队列中,所述至少一个完成队列元素至少部分地指示所述至少一个命令标识符;且
所述第二NIC至少部分地执行与所述第二NIC相关联的至少一个命令队列元素所关联的至少一个其它命令,所述至少一个命令队列元素至少部分地由所述至少一个命令标识符所标识。
7.如权利要求6所述的装置,其特征在于:
所述至少一个命令队列元素存储在表中的至少一个条目中,该至少一个条目在至少部分地由所述至少一个命令标识符所指示的索引处,所述表中的每个相应条目与包括所述至少一个缓冲器的多个缓冲器中的一个或多个相应缓冲器相关联。
8.如权利要求7所述的装置,其特征在于:
所述至少一个操作包括读存储;
至少部分地在所述至少一个操作完成之前,所述另一控制器将至少部分地基于所述至少一个命令标识符至少部分地从所述表中选择所述至少一个命令队列元素;且
所述另一控制器将把所述至少一个命令队列元素写到与所述第二NIC相关联的至少一个其它命令队列中、对所述至少一个完成队列写并按响至少一个其它门铃。
9.一种方法,所述方法包括:
至少部分地由电路促进经由远离客户端的服务器中的第二NIC并以独立于所述服务器中的操作***环境的方式由所述客户端中的第一网络接口控制器(NIC)对所述服务器的另一控制器的至少一个命令接口的访问,所述至少一个命令接口包括所述另一控制器的至少一个命令队列,所述访问包括将至少一个队列元素写入至少一个命令队列以命令所述另一控制器执行与所述另一控制器相关联的至少一个操作,所述另一控制器至少部分地响应于所述至少一个队列元素执行所述至少一个操作。
10.如权利要求9所述的方法,其特征在于:
所述至少一个操作包括涉及存储的写操作和读操作中的至少一个;
集成电路芯片包括所述第二NIC、所述另一控制器和中央处理单元(CPU),所述CPU执行所述操作***环境;且
所述存储包括大容量存储。
11.如权利要求9所述的方法,其特征在于:
电路至少部分地包括所述第二NIC和所述另一控制器;
所述至少一个命令接口还包括至少一个完成队列、至少一个门铃和至少一个数据缓冲器;
所述第二NIC至少部分地将指示符提供给所述第一NIC以至少部分地指示所述至少一个命令队列、所述至少一个完成队列、所述至少一个门铃和所述至少一个数据缓冲器位于何处;且
所述第一NIC使用所述指示符中的一个或多个访问所述至少一个命令接口。
12.如权利要求11所述的方法,其特征在于:
所述第一NIC将所述至少一个队列元素写到所述至少一个命令队列中以命令所述另一控制器执行所述至少一个操作;
所述第一NIC将按响所述至少一个门铃;
至少部分地响应于所述至少一个门铃,所述另一控制器读取所述至少一个队列元素并至少部分地执行所述至少一个操作;
至少部分地在所述至少一个操作完成之后,所述另一控制器将至少一个完成队列元素写到所述至少一个完成队列中,并且至少部分地在所述至少一个操作完成之后按响与所述第二NIC相关联的另一门铃;且
至少部分地响应于所述另一门铃,所述第二NIC至少部分地向所述第一NIC提供所述至少一个完成队列元素。
13.如权利要求11所述的方法,其特征在于:
所述服务器中的至少一个代理至少部分地建立与所述第二NIC相关联的一个或多个队列中的一个或多个条目以许可对与所述另一控制器相关联的一个或多个其它队列条目的复制;
所述至少一个代理至少部分地更新与所述另一控制器和所述第二NIC相关联的一个或多个队列对所关联的一个或多个指针;且
所述至少一个代理指示将被再用的一个或多个缓冲器。
14.如权利要求11所述的方法,其特征在于:
所述至少一个队列元素包括至少一个命令标识符;
所述另一控制器将在至少部分地执行所述至少一个操作之后把至少一个完成队列元素写到与所述另一控制器相关联的至少一个完成队列中,所述至少一个完成队列元素至少部分地指示所述至少一个命令标识符;且
所述第二NIC将至少部分地执行与所述第二NIC相关联的至少一个命令队列元素所关联的至少一个其它命令,所述至少一个命令队列元素至少部分地由所述至少一个命令标识符所标识。
15.如权利要求14所述的方法,其特征在于:
所述至少一个命令队列元素存储在表中的至少一个条目中,该至少一个条目在至少部分地由所述至少一个命令标识符所指示的索引处,所述表中的每个相应条目与包括所述至少一个缓冲器的多个缓冲器中的一个或多个相应缓冲器相关联。
16.如权利要求15所述的方法,其特征在于:
所述至少一个操作包括读存储;
至少部分地在所述至少一个操作完成之前,所述另一控制器至少部分地基于所述至少一个命令标识符至少部分地从所述表中选择所述至少一个命令队列元素;且
所述另一控制器将所述至少一个命令队列元素写到与所述第二NIC相关联的至少一个其它命令队列中、对所述至少一个完成队列写并按响至少一个其它门铃。
17.存储一个或多个在由机器执行时产生操作的性能的指令的计算机可读存储器,其中操作包括:
至少部分地由电路促进经由远离客户端的服务器中的第二NIC并以独立于所述服务器中的操作***环境的方式由所述客户端的第一网络接口控制器(NIC)对所述服务器的另一控制器的至少一个命令接口的访问,所述至少一个命令接口包括所述另一控制器的至少一个命令队列,所述访问包括将至少一个队列元素写入至少一个命令队列以命令所述另一控制器执行与所述另一控制器相关联的至少一个操作,所述另一控制器至少部分地响应于所述至少一个队列元素执行所述至少一个操作。
18.如权利要求17所述的存储器,其特征在于:
所述至少一个操作包括涉及存储的写操作和读操作中的至少一个;
集成电路芯片包括所述第二NIC、所述另一控制器和中央处理单元(CPU),所述CPU执行所述操作***环境;且
所述存储包括大容量存储。
19.如权利要求17所述的存储器,其特征在于:
所述电路至少部分地包括所述第二NIC和所述另一控制器;
所述至少一个命令接口还包括至少一个完成队列、至少一个门铃和至少一个数据缓冲器;
所述第二NIC至少部分地将指示符提供给所述第一NIC以至少部分地指示所述至少一个命令队列、所述至少一个完成队列、所述至少一个门铃和所述至少一个数据缓冲器位于何处;且
所述第一NIC使用所述指示符中的一个或多个以访问所述至少一个命令接口。
20.如权利要求19所述的存储器,其特征在于:
所述第一NIC将所述至少一个队列元素写到所述至少一个命令队列中以命令所述另一控制器执行所述至少一个操作;
所述第一NIC按响所述至少一个门铃;
至少部分地响应于所述至少一个门铃,所述另一控制器读取所述至少一个队列元素并将至少部分地执行所述至少一个操作;
至少部分地在所述至少一个操作完成之后,所述另一控制器将把所述至少一个完成队列元素写到所述至少一个完成队列中,并且至少部分地在所述至少一个操作完成之后按响与所述第二NIC相关联的另一门铃;且
至少部分地响应于所述另一门铃,所述第二NIC至少部分地向所述第一NIC提供所述至少一个完成队列元素。
21.如权利要求19所述的存储器,其特征在于:
所述服务器中的至少一个代理至少部分地建立与所述第二NIC相关联的一个或多个队列中的一个或多个条目以许可对与所述另一控制器相关联的一个或多个其它队列条目的复制;
所述至少一个代理至少部分地更新与所述另一控制器和所述第二NIC相关联的一个或多个队列对所关联的一个或多个指针;且
所述至少一个代理将指示将被再用的一个或多个缓冲器。
22.如权利要求19所述的存储器,其特征在于:
所述至少一个队列元素包括至少一个命令标识符;
所述另一控制器在至少部分地执行了所述至少一个操作之后把至少一个完成队列元素写到与所述另一控制器相关联的至少一个完成队列中,所述至少一个完成队列元素至少部分地指示所述至少一个命令标识符;且
所述第二NIC至少部分地执行与所述第二NIC相关联的至少一个命令队列元素所关联的至少一个其它命令,所述至少一个命令队列元素至少部分地由所述至少一个命令标识符所标识。
23.如权利要求22所述的存储器,其特征在于:
所述至少一个命令队列元素存储在表中的至少一个条目中,该至少一个条目在至少部分地由所述至少一个命令标识符所指示的索引处,所述表中的每个相应条目与包括所述至少一个缓冲器的多个缓冲器中的一个或多个相应缓冲器相关联。
24.如权利要求23所述的存储器,其特征在于:
所述至少一个操作包括读存储;
至少部分地在所述至少一个操作完成之前,所述另一控制器将至少部分地基于所述至少一个命令标识符至少部分地从所述表中选择所述至少一个命令队列元素;且
所述另一控制器将所述至少一个命令队列元素写到与所述第二NIC相关联的至少一个其它命令队列中、对所述至少一个完成队列写并按响至少一个其它门铃。
25.如权利要求1所述的装置,其特征在于:
所述第一NIC和所述第二NIC包括相应的能远程直接存储器访问(RDMA)的网络接口控制器;
所述另一控制器包括存储控制器;且
所述至少一个操作涉及与所述存储控制器相关联的存储。
26.如权利要求9所述的方法,其特征在于:
所述第一NIC和所述第二NIC包括相应的能远程直接存储器访问(RDMA)的网络接口控制器;
所述另一控制器包括存储控制器;且
所述至少一个操作涉及与所述存储控制器相关联的存储。
27.如权利要求17所述的存储器,其特征在于:
所述第一NIC和所述第二NIC包括相应的能远程直接存储器访问(RDMA)的网络接口控制器;
所述另一控制器包括存储控制器;且
所述至少一个操作涉及与所述存储控制器相关联的存储。
28.如权利要求1所述的装置,其特征在于:
所述客户端包括多个客户端以共享所述至少一个命令队列。
29.如权利要求1所述的装置,其特征在于:
所述客户端包括多个客户端以共享包括在所述服务器中的至少一个缓冲器池。
CN201280016334.7A 2011-03-31 2012-03-27 至少部分地通过电路来促进对至少一个控制器命令接口的访问 Active CN103460202B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/077,725 2011-03-31
US13/077,725 US8677031B2 (en) 2011-03-31 2011-03-31 Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
PCT/US2012/030769 WO2012135234A2 (en) 2011-03-31 2012-03-27 Facilitating, at least in part, by circuitry, accessing of at least one controller command interface

Publications (2)

Publication Number Publication Date
CN103460202A true CN103460202A (zh) 2013-12-18
CN103460202B CN103460202B (zh) 2017-02-15

Family

ID=46928831

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280016334.7A Active CN103460202B (zh) 2011-03-31 2012-03-27 至少部分地通过电路来促进对至少一个控制器命令接口的访问

Country Status (4)

Country Link
US (3) US8677031B2 (zh)
CN (1) CN103460202B (zh)
DE (1) DE112012001526T5 (zh)
WO (1) WO2012135234A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996755B2 (en) 2011-03-31 2015-03-31 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
CN108664335A (zh) * 2017-04-01 2018-10-16 北京忆芯科技有限公司 通过代理进行队列通信的方法与装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996403B2 (en) 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
US9749413B2 (en) * 2012-05-29 2017-08-29 Intel Corporation Peer-to-peer interrupt signaling between devices coupled via interconnects
US11966355B2 (en) * 2013-03-10 2024-04-23 Mellanox Technologies, Ltd. Network adapter with a common queue for both networking and data manipulation work requests
US10452316B2 (en) 2013-04-17 2019-10-22 Apeiron Data Systems Switched direct attached shared storage architecture
US9756128B2 (en) 2013-04-17 2017-09-05 Apeiron Data Systems Switched direct attached shared storage architecture
US9483431B2 (en) 2013-04-17 2016-11-01 Apeiron Data Systems Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA)
US9986028B2 (en) * 2013-07-08 2018-05-29 Intel Corporation Techniques to replicate data between storage servers
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
US10846223B2 (en) * 2017-10-19 2020-11-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Cache coherency between a device and a processor
CN113748648A (zh) 2019-05-23 2021-12-03 慧与发展有限责任合伙企业 权重路由
US11467873B2 (en) * 2019-07-29 2022-10-11 Intel Corporation Technologies for RDMA queue pair QOS management
US11622004B1 (en) * 2022-05-02 2023-04-04 Mellanox Technologies, Ltd. Transaction-based reliable transport

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101365999A (zh) * 2005-02-03 2009-02-11 五级网络公司 发送完成事件批处理
US20090307341A1 (en) * 2008-06-04 2009-12-10 Hitachi, Ltd. Method for managing storage system
US20100312941A1 (en) * 2004-10-19 2010-12-09 Eliezer Aloni Network interface device with flow-oriented bus interface

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298407B1 (en) 1998-03-04 2001-10-02 Intel Corporation Trigger points for performance optimization in bus-to-bus bridges
US6272591B2 (en) 1998-10-19 2001-08-07 Intel Corporation Raid striping using multiple virtual channels
US7165258B1 (en) 2002-04-22 2007-01-16 Cisco Technology, Inc. SCSI-based storage area network having a SCSI router that routes traffic between SCSI and IP networks
US20040252709A1 (en) * 2003-06-11 2004-12-16 Fineberg Samuel A. System having a plurality of threads being allocatable to a send or receive queue
US7439973B2 (en) * 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
KR20090102789A (ko) * 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US8347359B2 (en) 2007-12-28 2013-01-01 Bruce Backa Encryption sentinel system and method
US8677031B2 (en) 2011-03-31 2014-03-18 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100312941A1 (en) * 2004-10-19 2010-12-09 Eliezer Aloni Network interface device with flow-oriented bus interface
CN101365999A (zh) * 2005-02-03 2009-02-11 五级网络公司 发送完成事件批处理
US20090307341A1 (en) * 2008-06-04 2009-12-10 Hitachi, Ltd. Method for managing storage system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996755B2 (en) 2011-03-31 2015-03-31 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
US9244881B2 (en) 2011-03-31 2016-01-26 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
CN108664335A (zh) * 2017-04-01 2018-10-16 北京忆芯科技有限公司 通过代理进行队列通信的方法与装置
CN111625376A (zh) * 2017-04-01 2020-09-04 北京忆芯科技有限公司 通过代理进行队列通信的方法与消息***
CN111625377A (zh) * 2017-04-01 2020-09-04 北京忆芯科技有限公司 代理及向队列添加条目的方法
CN111625377B (zh) * 2017-04-01 2023-11-28 北京忆芯科技有限公司 代理及向队列添加条目的方法

Also Published As

Publication number Publication date
US8996755B2 (en) 2015-03-31
WO2012135234A3 (en) 2013-03-14
WO2012135234A2 (en) 2012-10-04
US20120254480A1 (en) 2012-10-04
US8677031B2 (en) 2014-03-18
DE112012001526T5 (de) 2014-01-02
US9244881B2 (en) 2016-01-26
US20150234776A1 (en) 2015-08-20
CN103460202B (zh) 2017-02-15
US20140136646A1 (en) 2014-05-15

Similar Documents

Publication Publication Date Title
CN103460202A (zh) 至少部分地通过电路来促进对至少一个控制器命令接口的访问
US11755527B2 (en) Techniques for command validation for access to a storage device by a remote client
US9986028B2 (en) Techniques to replicate data between storage servers
US10311002B2 (en) Selectable peripheral logic in programmable apparatus
US20150012735A1 (en) Techniques to Initialize from a Remotely Accessible Storage Device
CN104123262A (zh) 在PCIExpress上启用基于ID的流的方法和装置
CN103827842A (zh) 向控制器存储器空间写入消息
CN113238802A (zh) 中断分发器、数据处理芯片、中断分发及数据处理方法
CN115033352A (zh) 多核处理器任务调度方法、装置及设备、存储介质
CN110083466B (zh) 一种小程序的数据传输方法和装置
CN114691224A (zh) 设备加载***、方法及电子设备
EP4375837A1 (en) Data processing method, apparatus and system based on para-virtualization device
CN115718641A (zh) 存储器模拟方法及装置、存储介质及电子装置
US20110022995A1 (en) Circuit design information generating equipment, function execution system, and memory medium storing program
CN117555669A (zh) 资源调度方法、装置、计算设备集群、介质及程序产品
KR20150116720A (ko) 메모리 시스템 및 이를 포함하는 전자 장치
CN115203107B (zh) 一种总线接口配置方法、***以及电子设备
US20130031547A1 (en) Facilitating compatible interaction, at least in part
CN117412059B (zh) 基于虚拟化的视频编解码***、设备及方法
CN114637458A (zh) 一种数据传输方法及网卡
CN114327751A (zh) 一种面向多域隔离通信的虚拟pci设备及其实现方法
CN115016848A (zh) 指令处理方法、装置、芯片、板卡、设备及介质
CN115494946A (zh) 一种投屏方法、装置、设备及可读存储介质
CN117176837A (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
C14 Grant of patent or utility model
GR01 Patent grant