CN1640089A - 用于NGIO/InfiniBandTM应用的远程密钥验证的方法和机制 - Google Patents
用于NGIO/InfiniBandTM应用的远程密钥验证的方法和机制 Download PDFInfo
- Publication number
- CN1640089A CN1640089A CN02810710.1A CN02810710A CN1640089A CN 1640089 A CN1640089 A CN 1640089A CN 02810710 A CN02810710 A CN 02810710A CN 1640089 A CN1640089 A CN 1640089A
- Authority
- CN
- China
- Prior art keywords
- cipher key
- remote cipher
- memory
- remote
- key
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/356—Switches specially adapted for specific applications for storage area networks
- H04L49/358—Infiniband Switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- 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/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
- Selective Calling Equipment (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
- Orthopedics, Nursing, And Contraception (AREA)
- Mechanical Operated Clutches (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
一种配备一个或多个主机结构适配器的主机***,所述主机结构适配器安装在所述主机***中,用于连接到数据网络的交换结构。所述主机结构适配器可包括:至少一个微引擎(ME),被安排成用于经由交换结构建立连接以及支持数据传送操作;串行接口,被安排成接收并传输来自交换结构的用于数据传送操作的数据分组;主机接口,被安排成用于接收并传输来自所述主机***的对数据传送操作的主机数据传送工作请求;前后关系存储器,被安排成用于提供数据传送操作所必需的前后关系信息;门铃管理器,被安排成用于更新所述微引擎(ME)用来处理对数据传送操作的主机数据传送请求所必需的前后关系信息;以及远程密钥管理器,被安排成用于管理远程密钥并检查与未处理的数据传送操作对应的远程密钥的有效性。
Description
技术领域
本发明涉及数据网络,更具体地说,涉及具有用于管理和验证远程密钥的机制的主机结构适配器,所述远程密钥对应于在这种数据网络中未处理(outstanding)的数据事务(例如,读/写操作)。
背景技术
数据网络通常由通过点对点链路连接的多个独立并且群集的节点的网络组成。每个节点都可以是中间节点,诸如交换机/交换元件、中继器以及路由器,或者是所述网络中的终端节点,诸如主机***以及I/O单元(例如,数据服务器、存储器子***以及网络设备)。消息数据往往经由中间节点从源传送到目的地。
现有的互连传输机制,诸如在由PCI专业组(SIG)于1995年6月1日提出的“PCI Local Bus Specification,Revision 2.1(PCI本地总线规范,修订版2.1)”中描述的PCI(Peripheral ComponentInterconnect(***部件互连))总线,可以被利用以经由数据网络来递送往返于I/O设备的消息数据,所述I/O设备也就是存储器子***和网络设备。然而,PCI总线利用共享的存储器映像总线体系结构来递送往返于存储器子***和网络设备的消息数据,其中所述共享的存储器映像总线体系结构包括一条或多条共享的I/O总线。共享的I/O总线会因在存储器以及网络***设备中所要求的总线判优而造成严重的性能制约,以及当需要额外的存储器和网络***设备时引起可靠性、灵活性以及可扩展性的问题。因此,现有的互连技术已经无法跟上计算机的发展和因此产生的增加了的需求,并且无法承受由因特网的迅速发展带来的强加于服务器集群、应用处理以及企业计算的负担。
针对现有PCI总线体系结构的缺陷的出现的解决方案是InfiniBandTM及其前身下一代I/O(Next Generation I/O)(NGIO),所述下一代I/O(NGIO)已经由Intel公司以及其他公司研发出来,用以提供基于标准的I/O平台,所述I/O平台为了在数据网络中的终端节点间传送可靠的数据而使用了交换结构以及独立的I/O通道来代替共享存储器映像总线体系结构,正如NGIO Forum在1999年7月20日“NextGeneration Input/Output(NGIO)Specification(下一代输入/输出(NGIO)规范)”以及InfiniBandTM Trade Association在2000年10月24日提出的“InfiniBandTM Architecture Specification(InfiniBandTM体系结构规范)”所阐述的。使用NGIO/InfiniBandTM,主机***可以使用虚拟接口(VI)结构与一个或多个远程***进行通信,其中所述虚拟接口结构符合由Compaq公司、Intel公司以及Microsoft公司,于1997年12月16日提出的“Virtual Interface(VI)Architecture Specification,Version 1.0(虚拟接口(VI)体系结构规范,第1.0版)”。NGIO/InfiniBandTM以及VI硬件和软件可以常常用来支持两个存储器区域之间的数据传送,特别是支持经由一条或多条指定通道在不同***上的两个存储器区域之间的数据传送。使用VI体系结构的每个主机***可以包括多个VI,也称为工作队列(WQ),所述工作队列成对形成,并包括入站和出站队列,其中工作请求(WR)经由数据网络加以邮送,以描述数据移动操作以及描述要被移动以便处理和/或传输的数据的位置。每个主机***可以用作启动消息数据传送(信息发送操作)的源(启动器)***,或者用作消息传递操作(信息接收操作)的目标***。从用户提交的工作请求使得称为工作队列元件(Work QueueElement“WQE”)的工作指令被邮送到与给定的网络接口卡相关联的工作队列上,用于数据传送操作,其中所述数据传送操作诸如发送/接收操作以及远程存储器直接访问ARDMA@的读/写操作。可以创建和管理在主机***上的通信设备间的通过数据网络一条或多条通道,以便能够执行所请求的操作。
由于NGIO/InfiniBandTM是在市场中尚未出现的新兴互连技术,因而没有用于NGIO/InfiniBandTM应用的已知具体实现接口机制。更具体地说,还不存在已知的用于主机***的网络接口卡,来使用基于通道、交换结构的体系结构将其连接到数据网络上,以支持主机***上通信设备间或者主机***间或者经由数据网络的数据移动操作。现有的用于主机***的网络接口卡不适用于新兴的NGIO/InfiniBandTM互连技术,并且因此无法使NGIO/InfiniBandTM的功能性最优。
由此,需要一种为NGIO/InfiniBandTM应用而特别设计的、性能驱动的如下主机结构适配器,所述主机结构适配器安装在数据网络中的主机***上并使用基于通道、交换结构的体系结构。此外,还需要一种方法或机制,所述方法或机制用于经由基于通道的交换结构在这种数据网络中来管理和验证对应于未完成数据事务(例如,读/写操作)的远程密钥。
附图简述
当结合附图考虑并参考一下的详细描述,将使本发明示范性实施例得到更完全的理解,以及将同样容易理解本发明的多个附带的优点变得更加易于理解,在所述附图中,同样的参考符号表示同一或相似组件,其中:
图1举例说明了依照本发明实施例的示例性数据网络,所述数据网络具有通过基本交换机的相应链路互连的几个节点;
图2举例说明了依照本发明实施例的另一个示例性数据网络,所述数据网络具有通过多级交换结构的相应链路互连的多个节点;
图3A-3D举例说明了在依照本发明实施例的示例性数据网络中的,从源节点传输到目的地节点的消息数据的分组格式以及采用“工作队列元件”(WQE)形式被邮送的对数据传送操的工作请求;
图4A-4B举例说明了依照本发明不同实施例的示例性数据网络的示例性主机***的框图;
图5举例说明依照本发明实施例的主机***的操作***(OS)的示例性软件驱动程序堆栈;
图6举例说明依照本发明实施例的使用NGIO/InfiniBandTM以及VI体系结构的示例性主机***的框图,所述主机***经由交换结构来支持数据传送;
图7举例说明依照本发明实施例的依照NGIO/InfiniBandTM以及VI体系结构加以配置的示例性主机结构适配器,所述主机结构适配器经由交换结构100’来支持数据传送。
图8举例说明依照本发明实施例的示例性主机结构适配器的微引擎(ME);
图9举例说明依照本发明实施例的主机结构适配器的微引擎(ME)的示例性实现方式;
图10举例说明依照本发明实施例的示例性的远程密钥管理器块(RMB),所述块用于检查主机存储器中与未处理的RDMA操作对应的远程密钥的有效性;
图11举例说明依照本发明实施例的示例性高级远程密钥的验证;以及
图12举例说明依照本发明实施例的远程密钥管理器块(RMB)的示例性的单个密钥验证。
图13A-13H举例说明依照本发明实施例的正常远程密钥管理器块(RMB)操作的示例性时序图;
图14A-14H举例说明依照本发明实施例的正常远程密钥管理器块(RMB)操作完成的示例性时序图;
图15A-15H举例说明依照本发明实施例的、在其中存在保护范围(Protection Domain,PD)失配的远程密钥管理器块(RMB)操作的示例性时序图;
图16A-16K举例说明依照本发明实施例的、在其总存在多个密钥失配的远程密钥管理器块(RMB)操作的示例性时序图;
图17A-17M举例说明依照本发明实施例的、在其中存在多个密钥失配于间歇式RQ存储器访问的远程密钥管理器块(RMB)操作的示例性时序图。
在所有的附图描述中,在虚拟接口(VI)体系结构规范中阐述的术语“VI”,也通称为在“Next Generation Input/Output(NGIO)Specification(下一代输入/输出(NGIO)规范)”中阐述的工作队列对(WQP),或者简称为在“InfiniBandTM Architecture Specification(InfiniBandTM体系结构规范)”中所阐述的队列对(QP)。由此,“VI”、“WQP”以及“QP”可互换使用并且它们表示同一意思。
详细描述
本发明适用于所有类型的数据网络、I/O硬件适配器以及芯片组,包括将诸如计算机、服务器、外设、存储器子***以及用于数据通信的通信设备的终端站链接在一起的后继芯片设计(follow-on chipdesign)。这种数据网络的例子可包括局域网(LAN)、广域网(WAN)、校园网(CAN)、城域网(MAN)、全球区域(global area)网(GAN)、无线个人区域网(WPAN)、以及***区域网(SAN),所述***区域网(SAN)包括使用下一代I/O(NGIO)、Future I/O(FIO)、InfiniBandTM的新开发的计算机网络和包括基于通道、交换结构的体系结构的那些网络,所述基于通道、交换结构的体系结构可以随着计算机技术的进步变为可用来提供可扩展的性能。LAN***可包括以太网、FDDI(光纤分布式数据接口)令牌环LAN、异步传输模式(ATM)LAN、光纤通道以及无线LAN。然而,为简单起见,以下的论述将主要集中在包括一个或多个硬件结构适配器的主机***上,用于在具有多个示例性节点(例如,计算机、服务器以及I/O单元)的简单数据网络中为通道连接提供物理链路,所述示例性节点由相应的链路和交换机互连,不过本发明的范围并不限于此。
现在将注意力集中在附图、特别是图1上,在所述图中举例说明了依照本发明实施例的简单数据网络10,所述简单数据网络10具有几个用于数据通信的互连节点。如图1所示,数据网络10例如可包括一个或多个集中交换机100以及4个不同的节点A,B,C和D。每个节点(终端点)可以对应一个或多个I/O单元以及主机***,所述主机***包括计算机和/或服务器,在所述服务器上提供有多种应用程序或服务。I/O单元可包括一个或多个处理器、存储器、一个或多个I/O控制器以及其他与其连接的本地I/O资源,并且所述I/O单元按照复杂性范围可从诸如局域网(LAN)适配器的单个I/O设备到大容量存储器充足的RAID子***。每个I/O控制器(IOC)提供I/O服务或I/O功能,并且可以操作来在本地控制、或者经由例如局域网(LAN)或广域网(WAN)远程地控制诸如存储设备(例如,硬盘驱动器以及磁带驱动器)这样的一个或多个I/O设备。
集中交换机100例如可包括交换机端口0、1、2和3,每个交换机端口经由相应的物理链路110、112、114和116与4个不同节点A,B,C和D的相应节点相连接。每个物理链路可支持多条逻辑点对点通道。每条通道可以是双向通信路径,以用于允许命令和数据在所述网络内部的两个连接的节点(例如,主机***、交换机/交换元件以及I/O单元)间流动。
每条通道可称为单个的点对点连接,其中数据可以在所述终端点(例如,主机***和I/O单元)之间传送。集中交换机100还可包含使用例如显示路由和/或目的地地址路由的路由信息,用于经由相应链路将数据从源节点(数据发送器)路由到目标节点(数据接收器),并且所述集中交换机100还包含用于冗余的重新路由(re-routing)信息。
在图1中示出的终端点或终端站(例如,主机***和I/O单元)、交换机以及链路的特定数目和结构,仅作为示例性的数据网络而提供。在所有类型的数据网络中的多个终端站(例如,主机***和I/O单元)、交换机以及链路的各种实现方式和结构都是可能的。
依照本发明的示例性实施例或实现方式,在图1中示出的示例性数据网络的终端点或终端站(例如,主机***和I/O单元),可以与NGIOForum于1999年7月20日提出的“Next GenerationInput/Output(NGIO)Specification(下一代输入/输出(NGIO)规范)”以及由InfiniBandTM贸易委员会于2000年10月24日提出的InfiniBandTM体系结构规范相兼容。依照NGIO/InfiniBandTM规范,交换机100可以是NGIO/InfiniBandTM交换结构(例如,与多个主机***和I/O单元相连的链路、路由器、交换机和/或交换单元的集合),并且终端点可以是包括一个或多个主机通道适配器(HCA)的主机***,或者是包括一个或多个目标通道适配器(TCA)的远程***,诸如I/O单元。主机通道适配器(HCA)和目标通道适配器(TCA)两者都可以被广泛地视为结构适配器,所述结构适配器被提供以用来使终端点接口至NGIO交换结构,并且能够符合以下规范来实现,这些规范是由NGIO Forum于1999年5月13日提出的“Next Generation I/O Link ArchitectureSpecification:HCA Specification,Revision 1.0(下一代I/O链路体系结构规范:HCA规范,修订版1.0)”和/或InfiniBandTM规范,以用于使终端点(节点)经由NGIO/InfiniBandTM通道并以例如高达每秒2.5千兆位(Gbps)的最小数据传送速率彼此进行通信。
例如,图2举例说明了依照本发明实施例的使用NGIO/InfiniBandTM体系结构的示例性数据网络(即,***区域网络SAN)10’,所述数据网络用于将消息数据从源节点传送到目的地节点。如图2所示,数据网络10’包括NGIO/InfiniBandTM交换结构100’(由多个交换机组成的多级交换结构),用于允许主机***和远程***与大量的其他主机***和远程***经由一条或多条指定通道进行通信。通道连接仅仅是一种抽象概念,它经由交换结构100’建立以允许在源终端点和目的地终端点(例如,主机和远程***以及连接至交换结构100’的I/O单元)上的两个工作队列对(WQP)彼此通信。每条通道可以支持多个不同连接语义之一。物理上,一个通道可被限制为主机***的硬件端口。每条通道可以是要确认的或是不要确认的。要确认的通道可以提供消息和数据以及有关在所述通道的远端检测出的错误信息的可靠传输。通常,主机***和任意一个远程***间有一条通道可能足够了,但是在相邻端口间展开的数据传送速度可以减少等待时间并增加带宽。由此,希望有用于独立的控制流和数据流的独立通道。例如,可以创建一条通道以用于发送请求以及答复信息。可以创建独立的通道或者通道组以用于在主机***和任意一个远程***间移动数据。此外,任何数目的终端站、交换机以及链路可以用来在终端站和交换机之间、经由相应的NGIO/InfiniBandTM链路以分组的组的形式中继数据。
例如,节点A可以代表诸如主计算机或主服务器的主机***130,在所述主机***上提供有多种应用程序或服务。同样地,节点B可以代表另一个网络150,所述网络150包括但并不限于:局域网(LAN)、广域网(WAN)、以太网、ATM以及光纤通道网络,所述网络经由高速串行链路加以连接。节点C代表I/O单元170,所述I/O单元170包括一个或多个I/O控制器以及连接到其上的I/O单元。同样,节点D可代表诸如目标计算机或目标服务器的远程***190,在所述远程***上提供有各种应用程序或服务。作为替代,节点A、B、C和D还可以代表NGIO结构100’的个体交换机,所述个体交换机可用作主机***130和远程***150、170和190间的中间节点。
多级交换结构100’可包括结构管理器250,所述结构管理器与所有交换机相连以用于管理所有的网络管理功能。然而,结构管理器250可替代性地作为主机***130、第二网络150、I/O单元170,或者作为远程***190的一部分被并入,以用于管理所有网络管理功能。在任一情形下,结构管理器250都可被配置成用于学习网络拓扑,确定交换表(switch table)或者转发(forward)数据库,检测和管理网络中的错误或者链路失败以及执行其他网络管理功能。
主机通道适配器(HCA)120可以被使用以便经由高速串行NGIO/InfiniBandTM链路提供主机***130(例如服务器)的存储器控制器(未示出)和交换结构100’之间的接口。同样地,目标通道适配器(TCA)140和160可以被使用以便经由高速串行NGIO/InfiniBandTM链路提供多级交换结构100’和I/O控制器(例如,存储器和联网设备)之间的接口,其中所述I/O控制器是第二网络150或者I/O单元170的I/O控制器。相独立地,另一个目标通道适配器(TCA)180可以被使用以便经由高速串行NGIO/InfiniBandTM链路提供远程***190的存储器控制器(未示出)和交换结构100’之间的接口。主机通道适配器(HCA)以及目标通道适配器(TCA)两者都可以被广泛地认为是结构适配器,所述结构适配器被提供以便将主机***130或者任意一个远程***150、170和190与交换结构100’相接口,并且可以依照由NGIO Forum于1999年5月13日提出的“Next Generation I/O Link Architecture Specification:HCASpecification,Revision 1.0(下一代I/O链路体系结构规范:HCA规范,修订版1.0)”来实现,以用于使终端点(节点)能够经由NGIO/InfiniBandTM通道彼此进行通信。然而,NGIO/InfiniBandTM仅仅是本发明的一个示例性实施例或者实现方式,而本发明并不限于此。更确切地说,本发明可以适用于多种且任意数目的数据网络、主机和I/O单元。例如,可以与Future Input/Output(FIO)一起来实施本发明。FIO规范仍未发布,是由于NGIO随后的合并协议与FIO部分合并成为了InfiniBanrdTM体系结构规范,所述规范是由InfiniBand贸易委员会(1999年8月27日形成)提出的,其因特网网址是http://www.InfiniBandta.org.@。
图3A-3B举例说明了依照由InfiniBandTM贸易委员会于2000年10月24日提出的InfiniBanrdTM结构体系规范、从源节点(数据发送器)经过交换机和/或中间节点传送到目的地节点(数据接收器)的消息数据的分组的格式的实施例。如图3A所示,消息数据300可以代表一序列一个或多个数据分组310(通常从由工作请求定义的数据传送大小中导出)。每个分组310可以包括首部信息312、可变格式分组有效负载314以及循环冗余校验(CRC)信息316。依据由NGIO Forum于1999年7月20日预先提出的“Next Generation Input/Output(NGIO)Specification(下一代输入/输出(NGIO)规范)”,同样的分组也可以称为单元分组,所述单元分组具有作为消息数据的最小公共部分(attheleast common denominator)(LCD)的类似首部信息。然而,NGIO的首部信息所包含的可以小于InfiniBandTM的首部信息。不过,为了本公开内容的目的,在此将通过InfiniBandTM协议在下面描述所述数据分组,但是还可以与通过NGIO协议描述的数据单元进行互换。
如图3B所示,依照InfiniBandTM规范的首部信息312可以包括不同类型的首部,所述不同类型的首部包括:例如,本地路由首部320,全局路由首部322、基区传输首部324以及扩展传输首部,所述扩展传输首部诸如数据扩展传输首部326、RDMA扩展传输首部328以及原子(Atomic)扩展传输首部330。
本地路由首部320包括如下字段,所述字段由在图2所示的示例性数据网络10’中的交换机使用来进行本地路由。本地路由首部320例如可包括但不限于:用于标识InfiniBandTM链路级别协议的链路版本字段331;用于标识数据网络10’中的目的地端口和数据路径的目的地本地ID字段332;用于标识数据分组的大小的分组长度字段333;以及用于标识源端口(注入点)的源本地ID334。
全局路由首部322包括用于在图2所示的示例性数据网络10’的节点间路由数据分组的字段。所述全局路由首部322例如可以包括但不限于:用于以全局服务级别通信的通信量类别字段335;用于以字节的方式表明分组长度的有效负载长度字段336;用于标识将分组注入到数据网络10’中的端口的全局标识符(GID)的源GID字段333;以及用于标识将要从数据网络10’中吸收分组的端口的GID的目的地GID字段338。
基区传输首部324包括用于在图2所示的数据网络10’中进行数据消息传输的字段。所述基区传输首部324例如可以包括但不限于:用于指示分组类型的操作码字段339,所述操作码字段标识所述分组是数据消息的第一个、最后、中间分组还是仅有的一个分组,并标识所述分组是否指定操作(发送、RDMA写操作、RDMA读操作、原子操作);用于表明在目的地的工作队列对(WQP)编号的目的地QP字段340;用于检测丢失或重复的分组的分组序列号(PSN)字段341。
数据扩展传输首部326包括用于数据报服务的附加传输字段。所述数据扩展传输首部326例如可以包括但不限于:用于授权访问接收队列的队列密钥(Q_Key)字段342;以及用于表明在源节点的WQP编号的源QP字段343。
RDMA扩展传输首部328包括用于RDMA操作的附加传输字段。所述RDMA扩展传输首部328例如可以包括但不限于:用于提供RDMA操作的虚拟地址的虚拟地址(VA)字段344;用于授权访问RDMA操作的远程密钥(Rkey)字段345;以及用于表明存储器直接访问操作的长度(以字节表示)的长度字段346。
原子扩展传输首部330包括用于原子分组以及原子操作的附加传输字段。所述原子扩展传输首部330例如可以包括但不限于:用于提供远程虚拟地址的虚拟地址(VA)字段347;用于授权访问远程虚拟地址的远程密钥(Rkey)字段348;以及用于提供在原子操作中的操作数的交换和比较数据字段349。
将工作队列元件“WQE”从主机***130经由交换结构100’邮送到适合的工作队列(WQ)上,以用来描述数据的移动操作以及描述要被移动以便处理和/或传输的数据的位置。这种“WQE”通常提供用于完成发送队列以及接收队列操作所需要的所有信息。
存在几种类别的发送队列操作,包括发送、远程存储器访问(RDMA)以及存储器绑定。对于发送操作来说,WQE在用户硬件的存储器空间中指定一个数据块以发送到目的地,让已经在目的地排队的接收WQE指定将所述数据放置在何处。对于RDMA操作来说,WQE还指定在远程用户存储器中的地址。由此RDMA操作无需包括目的地的接收工作队列。
有三种类型的RDMA操作,分别是RDMA写操作、RDMA读操作以及原子操作。RDMA写操作规定硬件将数据从所述用户存储器传送到远程用户存储器。RDMA读操作规定硬件将数据从远程存储器传送到所述用户存储器。原子操作规定硬件来执行远程存储单元的读取。所述远程***返回读取的值,并且通过将已更新的值写回到同一位置来有条件地修改/替换远程存储器的内容。换言之,原子操作是读操作、修改操作以及写操作的组合操作。原子操作的一个例子是相等条件的比较和交换(Compareand Swap if Equal)操作。WQE指定远程存储单元、比较值以及新值。远程WQP读取指定的存储单元,将所述值与在消息中提供的所述比较值进行比较,并且仅当这些值相等时,WQP才将新值写入同一存储单元。在任一情况下,远程WQP都将它从所述存储单元读取的值返回到提出请求的WQP。另一种原子操作的例子是FetchAdd操作,在该操作下,远程WQP读取指定的存储单元,将读取到的值返回到提出请求的WQP,并给所述值加上在消息中提供的值,然后将结果写入同一存储单元。
存储器绑定指示硬件改变存储器注册关系并且改变存储器窗口的绑定。绑定存储器窗口的操作使预先分配的存储器窗口与现有存储器区域内的指定地址范围、连同一组指定的远程访问特权相关联。
可以只有一个接收队列操作,且它用于指定接收数据的缓冲器。当用户执行发送操作时,接收WQE指定所述硬件将从所述用户那里接收到的数据放置在的位置。远程用户每次成功地执行发送操作时,所述硬件从接收队列获取下一个条目,并将所接收的数据放置在所述接收WQE中指定的存储单元,且在完成队列(CQ)上设置完成队列条目,用于向用户表明已经完成接收操作。由此发送操作的执行引发了远程用户的接收队列操作。
每个发送/接收WQE可以用于控制单个分组的传输或接收。发送“WQE”以及RDMA写“WQE”额外提供了用于描述虚拟地址的“集合”列表,以便从本地***存储器206取出输出数据(所述列表用于确切地描述从本地***存储器206中取出输出数据的位置)。接收“WQE”以及RDMA读“WQE”另一方面提供了用于描述虚拟地址的“分散”列表,以便在本地***存储器206中放置输入数据(所述列表用于确切地描述在本地***存储器206中存储输入数据的位置)。发送“WQE”只有在发送工作队列链路上是有效的。与此相对,接收“WQE”只有在接收工作队列链路上是有效的。
RDMA“WQE”是发送/接收“WQE”的超集,并且可包括表明被传送的信息的远程地址的附加信息。与发送/接收操作不同,其中所述远程***还使用工作请求来确定将消息数据发送到何处并从何处接收,而RDMA“WQE”通过使用发送到远程***的虚拟地址(VA)、存储器处理(MH)以及远程密钥来明确地指示远程***将消息数据发送到何处并从何处接收。远程密钥可以用于在远程***上将虚拟地址转换到物理地址。
通常,每个“WQE”以控制段开始,紧随控制段之后的是可选的地址段以及任意数目的数据段。控制段可包括控制和状态信息。用于读/写RDMA操作的地址段可包括远程缓冲器信息(即,与以接收读/写请求为目标的VI相关联的存储器)。用于发送/接收操作以及读/写RDMA操作这二者的数据段可包括有关本地***存储器206的信息(即,与发出发送/接收或者读/写请求的VI相关联的存储器)。
图3C-3D分别举例说明了依照本发明实施例的示例性的发送/接收型“WQE”350A以及示例性的读/写RDMA型“WQE”350B。如图3C所示,发送/接收“WQE”350A可包括控制段360以及数据段370,所述数据段370包括段长度字段372、存储器处理字段374以及虚拟地址字段376。段长度字段372指定待发送或者待接收的消息数据的长度。存储器处理(MH)字段374可用来验证发送/请求过程(即VI)拥有已注册的存储器区域,所述存储器区域由段长度字段372和虚拟地址(VA)字段376来指示。此外,可以包括本地密钥378以执行在本地生成的虚拟地址到物理地址的转换。对于发送操作来说,虚拟地址(VA)字段376标识将要在发送VI=s的本地存储器空间中发送的消息数据的起始存储器单元。对于接收操作来说,虚拟地址(VA)字段376标识将要在请求VI=s的本地存储器空间中存储所接收的消息数据的位置的起始存储器单元。
如图3D所示,读/写RDMA“WQE”350B可包括控制段360、地址段380以及数据段370。地址段380可包括远程存储器处理字段382以及远程虚拟地址字段384。数据段370可包括段长度字段372、本地存储器处理字段374以及本地虚拟地址字段376。此外,还可以包括本地密钥378,以执行在本地生成的虚拟地址到物理地址的转换。还可包括远程密钥(“Rkey”)386,以便在远程***上执行从远程生成的虚拟地址到物理地址的转换。更具体的说,远程密钥386是指存储器区域或者存储器窗口,与虚拟地址一起用来标识本地***存储器206的适当的页,以便远程***来访问本地***存储器206。
对于RDMA读操作来说,远程虚拟地址(VA)384标识待读取的消息数据在远程过程的存储器空间中的存储单元。本地虚拟地址(VA)376标识将要放置所接收的消息数据的位置在本地过程的存储器空间中的起始存储单元。用来存储消息数据的存储器量可以通过段长度字段372来指定。对于RDMA写操作来说,远程虚拟地址(VA)字段384标识待写入的消息数据在远程过程的存储器空间中的存储单元。本地虚拟地址(VA)字段376标识用于读取待传送分组的消息数据的位置在本地过程的存储器空间中的的起始存储单元。消息数据的大小通过段长度字段372来指定。远程存储器处理(MH)字段382对应于与由远程虚拟地址(VA)字段384标识的存储器相关联的存储器处理(MH)。本地存储器处理字段374对应于与由本地虚拟地址字段376标识的存储器相关联的存储器处理(MH)。
回到论述中,在图4A中示出了主机***130的一个示例性实施例。参考图4A,主机***130可包括一个或多个与主机总线203连接的处理器202A-202N。多个存储器202A-202N的每一个都可以对单一的项(I/O操作)进行操作,并且所述多个处理器202A-202N的全部都可以在同一时间对一个列表上的多个项进行操作。I/O以及存储器控制器204(或芯片组)可与主机总线203相连。主存储器206可与I/O以及存储器控制器204相连。I/O桥208可操作来桥接或接口在I/O和存储器控制器204以及I/O总线205之间。多个I/O控制器可连接到I/O总线205上,包括I/O控制器210以及212。I/O控制器210以及212(包括连接到其上的任一I/O设备)可提供基于总线的I/O资源。
一个或多个主机结构适配器120还可与I/O总线205相连。作为替代,一个或多个主机结构适配器120可直接连接到I/O以及存储器控制器(或芯片组)204,以避免如图4B所示的I/O总线205固有的限制。在图4A-4B所示的任一实施例中,都可以提供一个或多个主机结构适配器120以用于连接主机***130和NGIO/InfiniBandTM的交换结构100’。
图4A-4B仅举例说明了主机***130的示例性实施例。这种主机***130的***配置的宽的阵列是可行的。还可以提供用于主机结构适配器120的软件驱动程序堆栈,以允许主机***130经由NGIO/InfiniBandTM交换结构100’与一个或多个远程***150、170以及190交换消息数据,同时更适宜与多种当前可利用的诸如Windows 2000的操作***相兼容。
图5举例说明主机***130的示例性软件驱动程序堆栈。如图5所示,主机操作***(OS)500可包括内核510、I/O管理器520、用于提供到各种I/O控制器的接口的多个通道驱动程序530A-530N,以及主机结构适配器软件堆栈(驱动程序模块),所述主机结构适配器软件堆栈包括结构总线驱动程序540以及一个或多个结构适配器设备专用驱动程序550A-550N,所述结构适配器设备专用驱动程序用于与连接到交换结构100’(例如I/O控制器)上的设备建立通信,并且执行大部分驱动器的通用功能。这样的主机操作***(OS)500例如可以是Windows 2000,而这样的I/O管理器520例如可以是即插即用的管理器。
通道驱动程序530A-530N提供主机操作***(OS)进行如下活动所必需的抽象,所述活动包括:执行对连接到交换结构100’上的设备的IO操作,封装来自主机操作***(OS)的IO请求,并将所述IO请求跨越交换结构100’发送到相连接的设备上。此外,通道驱动程序530A-530N还分配诸如存储器以及工作队列(WQ)对的必要资源,以便将工作项邮送到附属结构设备。
提供主机结构适配器软件堆栈(驱动程序模块),以用于访问交换结构100’以及有关结构配置、结构拓扑的信息以及连接信息。这种主机结构适配器软件堆栈(驱动程序模块)可用于建立与远程***(例如I/O控制器)间的通信,并且执行大部分驱动器的通用功能,例如包括主机结构适配器初始化以及配置、通道配置、通道抽象、资源管理、结构管理服务和操作、发送/接收IO事务消息、远程直接存储器访问(RDMA)事务(例如,读和写操作)、队列管理、存储器注册、描述符管理、消息流控制以及瞬时错误处理及恢复。这种软件驱动程序模块可以使用诸如C、C++以及Visual Basic等高级编程语言来编写,并且可以被提供在计算机实体介质上,诸如存储器设备;磁盘(硬盘、软盘以及可拆卸盘);诸如磁带的其他磁介质;诸如CD-ROM盘的光介质,或者可以经由因特网下载,所述软件驱动程序模块可以由结构管理员用来方便地***或下载到现有的操作***(OS)中。这种软件驱动程序模块还可与如下的现有操作***(OS)绑定在一起,所述操作***可以由特定的设备驱动程序来启动。
主机结构适配器(另外,也称为主机通道适配器″HCA″)驱动程序模块可由三个功能层组成,这三个功能层是:HCA服务层(HSL)、HCA抽象层(HCAAL)以及HCA设备专用驱动程序(HDSD),这种结构符合Intel于1999年8月6日提出的“Next Generation I/O Architecture):Host ChannelAdapter Software Specification(下一代I/O体系结构:主机通道适配器软件规范)”,“Next Generation I/O:Intel HCA ConnectionServices Layer High Level Design(下一代I/O:Intel HCA连接服务层高层次设计)”,“Next Generation I/O:Intel HCA AbstractionLayer High Level Design(下一代I/O:Intel HCA抽象层高层次设计)”以及“Next Generation I/O:Intel HCA Fabric Services LayerHigh Level Design(下一代I/O:Intel HCA结构服务层高层次设计)”。例如,对于所有通道驱动程序530A-530N来说固有的可以是包括用于提供一组公共服务532A-532N的HCA服务层(HSL)的通道访问层(CAL),包括通道驱动程序530A-530N用于实例化和使用NGIO/InfiniBandTM协议在NGIO/InfiniBandTM通道上执行数据传送所要求的结构服务、连接服务以及HCA服务。结构总线驱动程序540可对应于HCA抽象层(HCAAL),用于管理所有设备专用驱动程序,控制主机***130中所有HCA共用的共享资源以及主机***130中每个HCA的专用资源,并且向HSL发布事件信息并控制对特定设备功能的访问。同样地,一个或多个结构适配器设备专用驱动程序550A-550N可以对应于HCA设备专用驱动程序(所有类型的牌子X设备以及所有类型的牌子Y设备),用于向一个或多个HCA的初始化、配置以及控制接口全部提供抽象接口。当在主机***130中有不同牌子设备的HCA时,可提供多个HCA设备专用驱动程序。
更具体地说,结构总线驱动程序540或者HCA抽象层(HCAAL)可以向主机结构适配器软件堆栈提供所有必要的服务(驱动程序模块),所述服务例如包括:配置和初始化主机***中所有HCA共用的资源,使HCA的配置和初始化与HCA设备专用驱动程序相协调,控制对所有HCA共用资源的访问,控制访问由每个HCA提供的资源,以及从HCA发送事件通知到通道访问层(CAL)的HCA服务层(HSL)。此外,结构总线驱动程序540或者HCA抽象层(HCAAL)还可以向HCA服务层(HSL)输出客户管理功能、资源查询功能、资源分配功能以及资源配置及控制功能,并且向HCA设备专用驱动程序输出事件及错误通知功能。资源队列功能例如包括:查询所有HCA以及单个HCA共用的资源属性,端口的状态,以及端口、工作队列对(WQP)以及完成队列(CQ)的配置。资源分配功能例如包括端口、保护标记、工作队列对(WQP)、完成队列(CQ)以及HCA的控制接口的保存以及释放。资源配置及控制功能例如包括:配置端口,执行HCA控制操作以及端口控制操作,配置工作队列对(WQP),对工作队列对(WQP)的发送或接收队列执行操作,配置完成队列(CQ),以及对完成队列(CQ)执行操作。
主机***130可以与一个或多个远程***150、170以及190通信,包括使用符合由Compaq公司、Intel公司以及Microsoft公司于1997年12月16日提出的“Virtual Interface(VI)ArchitectureSpecification,Version 1.0(虚拟接口(VI)体系结构规范,版本1.0)”的虚拟接口(VI)体系结构直接附连到交换结构100’(即附属结构的I/O控制器)的I/O单元以及I/O控制器(以及附连的I/O设备)。VI体系结构包括4个基本组件:虚拟接口(VI),其中工作请求经由交换结构100’加以邮送,以描述数据移动操作以及描述要被移动以便处理和/或传输的数据的位置;可以是应用程序的VI用户;可以是用于负责实例化VI的硬件以及软件组件的VI提供者;以及完成队列(CQ)。VI是允许VI用于直接访问VI提供者的这样一种机制。每个VI代表通信终端点,并且终端点对可以被逻辑地连接以支持经由数据网络的一个或多个指定通道的双向、点对点的数据传送。依据VI体系结构,主机结构适配器120以及VI内核代理可以组成VI提供者以直接执行终端点虚拟化,并且包括通常由图5中所示的主机操作***(OS)内核510以及设备专用驱动程序550A-550N执行的多路复用、去多路复用以及数据传送调度的任务。然而,其他的体系结构也可以用来实现本发明。在“VirtualInterface(VI)Architecture Specification(虚拟接口(VI)体系结构规范)”中提出的术语“VI”,也可称为如“Next GenerationInput/Output(NGIO)Specification(下一代输入/输出(NGIO)规范)”中提出的工作队列对(WQP),或者简称为如“InfiniBandTMArchitecture Specification(InfiniBandTM体系结构规范)”中提出的队列对(QP)。由此,“VI”、“WQP”以及“QP”本文的下文中可以互换。
图6举例说明使用NGIO/InfiniBandTM以及VI体系结构以支持经由交换结构100’的数据传送的示例性主机***。如图6所示,主机***130除了包括一个或多个包含操作***(OS)堆栈500的处理器202外,还包括主机存储器206以及如图2、4A-4B以及5所示的至少一个主机结构适配器(HCA)120,在符合NGIO/InfiniBandTM以及VI体系结构的主机结构适配器(HCA)120中提供的传输引擎600,所述传输引擎用于经由交换结构100’进行数据传送。一个或多个主机结构适配器(HCA)120可以被方便的利用以扩展冗余用的端口和多个交换结构的数目。
如图6所示,传输引擎600可包括多个成对形成的工作队列(WQ),所述工作队列包括接收队列(用于输入的“RQ”)以及发送队列(用于输出的“SQ”),诸如工作队列对(WQP)610A-610N,其中工作请求“WQE”可以经由交换结构100’加以邮送,以用来描述数据移动操作以及描述要被移动以便处理和/或传输的数据的位置,所述传输引擎600还包括完成队列(CQ)620,所述完成队列620可以用于通知工作请求的完成。作为替代,这种传输引擎600可以是主机存储器206的硬件存储器部件,所述主机存储器206独立于主机结构适配器(HCA)120而存在,以便处理来自多个主机结构适配器(HCA)120的整体,所述传输引擎600还可以作为主机操作***(OS)的内核级设备驱动程序的一部分被提供。所有的工作队列(WQ)可共享经由一个或多个主机结构适配器(HCA)120到交换结构100’的物理端口。
工作队列对(WQP)的发送队列(用于输出请求的“SQ”)可以用作“启动器”,所述“发送队列”经由交换结构100’请求例如到远程VI的正常消息发送,请求远程直接存储器访问ARDMA@的读操作,所述读操作请求消息要从目标***的特定存储单元加以读取,以及经由交换结构100’请求远程直接存储器访问ARDMA@写操作,所述写操作请求消息要被写入到目标***的特定存储单元。
工作队列对(WQP)的接收队列(用于输入请求的“RQ”)可以用作“应答器”,所述“接收队列”经由交换结构100’从目标***接收对来自正常发送、RDMA读操作和RDMA写操作的消息的请求。
在这种示例性的数据网络中,可以使用NGIO/InfiniBandTM以及VI硬件和软件来经由交换结构100’支持两个存储器区域间的数据传送,所述两个存储器区域通常位于不同***上。每个主机***都可以作为启动消息数据传送(消息发送操作)的源(启动器)***,或者作为用于消息传递操作(信息接收操作)的目标***。这种主机***的例子包括如下主机服务器以及如下I/O单元,所述主机服务器提供各种应用程序或服务,而所述I/O单元提供面向存储器以及面向网络的IO服务。对工作的请求可以邮送到与给定的结构适配器(HCA)相关联的工作队列对(WQP)610A-610N上(所述工作是诸如消息发送/接收操作这样的数据移动操作和RDMA读/写操作),一条或多条通道可被创建并有效管理以便能够执行所请求的操作。
现在参考图7,在图7中举例说明了根据本发明实施例的在主机***上安装的且依照NGIO/InfiniBandTM体系结构配置的示例性主机结构适配器120,所述主机结构适配器用于经由交换结构100’支持数据传送。所述示例性主机结构适配器120被特别设计成用来将主机***连接到用于服务的数据网络100的基于通道的交换结构100’上,以便有效地建立并管理NGIO/InfiniBandTM通道,并且支持主机***上的通信设备间的数据移动操作,或者支持直接连接到一起或者经由使用基于通道、交换结构的体系结构的数据网络100’连接的主机***之间的数据移动操作。此外,主机结构适配器120实现了如下的硬件,所述硬件是为增加性能和效率而加以设计的,并且为了但不限于具有最小硬件投资的NGIO/InfiniBandTM应用加以优化,其中所述NGIO/InfiniBandTM应用包括控制NGIO/InfiniBandTM协议以最小的流水线的执行,以及控制以最少等待时间的NGIO/InfiniBandTM数据的处理。
如图7所示,主机结构适配器120可包括如下微控制器子***700以及如下串行接口730,所述微控制器子***700控制NGIO/InfiniBandTM协议的执行,所述串行接口730提供与交换结构100’的接口,通常经由硬件SERDES(串行化/去串行化设备)来实现。微控制器子***700以及串行接口730都可以作为主机结构适配器120的专用集成电路(ASIC)来实现。
微控制器子***700包括称为微引擎(ME)710的一个或多个可独立编程的直接存储器访问(DMA)引擎,所述微引擎(ME)710用于在主机存储器206(参见图6)和串行链路之间建立、发送、接收以及确认NGIO/InfiniBandTM分组,所述微控制器子***700还包括受微引擎(ME)710控制的诸如主机接口712这样的专用硬件接口逻辑块、地址转换接口714、前后关系(context)存储器接口716、本地总线接口718、完成队列/门铃(doorbell)管理器接口720以及先进先出(FIFO)接口722,以用来执行实现NGIO/InfiniBandTM以及VI规范所必需的许多ME功能,例如包括:主机事务处理、前后关系更新、物理地址转换、主机描述符的获取、门铃管理、FIFO数据移动以及完成队列(CQ)的管理。
微引擎(ME)710可执行微代码以协调用于发送和接收NGIO/InfiniBandTM分组的发送队列(SQ)和接收队列(RQ)的操作,并且支持符合NGIO/InfiniBandTM协议的完成队列(CQ)以及通道。微引擎(ME)710还可以通过一组微寄存器的读操作和写操作来控制所有的接口块。微寄存器可以与由多个接口块提供的数据一起使用来帮助加速ME功能。通常,用于控制发送队列(SQ)的微引擎(ME)710可称为SQ微引擎(ME),同样的,用于控制接收队列(RQ)的微引擎(ME)710可称为RQ微引擎(ME)。
主机接口712,为了对数据事务、针对主机***130和促进读操作完成的读和写事务的工作请求,提供至如图4A所示的主机***130的I/O总线205或者至图4B所示的主机***130的I/O及存储器控制器204的接口,所述工作请求来自主机***130,采用如图3B-3C中所示的工作队列元件“WQE”的形式,所述数据事务包括控制不同请求者间的判优以及数据/控制多路复用。
地址转换接口714提供至地址转换块(ATB)(未示出)的接口,负责使用***存储器的转换及保护表(Translation and ProtectionTable,TPT)管理从虚拟地址(用于编址程序空间)到物理地址(用于编址***空间)的转换,并且还负责为不同事务类型(写、RDMA读以及RDMA写)验证对***存储器的访问。在一个示例性的实现方式中,主机存储器206可包括多达227(128兆)的4K字节的页面,其中每个***存储器页面可以被映像到多达16兆兆字节的***存储器地址空间中的任意位置。每个***存储器页面还可以通过转换及保护表(TPT)内的如下条目来访问,其中所述条目包括如下信息,所述信息诸如是对应于物理地址的例如4K字节页面的编号、存储器保护属性(RDMA写允许、RDMA读允许、本地存储器写允许)以及如下的保护范围(PD),所述保护范围的值与分配给转换请求的启动器(请求转换的工作队列对)的值相匹配。
前后关系存储器接口(CMI)716提供至前后关系管理器(未示出)的接口,负责提供用于“VI”或者如下工作队列对“WQP”所必需的前后关系信息,所述工作队列对“WQP”用于发送和接收NGIO/InfiniBandTM分组。所述前后关系信息包括用于所有类型的数据传送操作所必需的所有的控制、状态以及信息。前后关系存储器接口716还提供至主机软件的接口,并且提供了不同类型的存储器映像寄存器组,所述存储器映像寄存器组指定通道配置并且启动通道操作。例如,所述存储器映像寄存器组可包括全局HCA前后关系寄存器,所述全局HCA前后关系寄存器影响发送队列(SQ)以及工作队列(WQ)的操作,并且所述存储器映像寄存器组还包括用于控制通道建立的工作队列对(WQP)寄存器,以及如下完成队列(CQ)寄存器,所述完成队列(CQ)寄存器指定完成队列(CQ)在主机存储器206中的位置和长度,并且控制在写入所述完成队列(CQ)的条目时是否产生中断。
本地总线接口718提供至本地数据总线的接口,负责支持***可访问的前后关系连接以及通道操作,并且负责将信号数据转换为用于微引擎(ME)710的适当形式,包括微代码加载。
完成队列/门铃管理器接口720提供至完成队列(CQ)引擎以及门铃管理器的接口,并且提供VI体系结构的存储器注册规则。完成队列(CQ)引擎(未示出)负责邮送全局事件以及完成队列(CQ)的条目。门铃管理器(未示出)负责跟踪未处理的工作请求的数量。
FIFO接口722提供至串行接口730的接口。所述FIFO接口722可包括接收FIFO接口722A以及发送FIFO接口722B,所述接收FIFO接口722A被安排成用于经由接收FIFO以及串行接口730从交换结构100′接收请求和/或分组,所述发送FIFO接口722B被安排成用于经由发送FIFO以及串行接口730向交换结构100′发送请求和/或分组。
接收FIFO接口722A可由微引擎(ME)710使用以处理经由串行接口730输入的分组,所述处理过程包括检查如图3A所示的每个分组的首部中的错误,以及在将数据传递给主机接口712之前检查是否需要读取额外的数据。发送FIFO接口722B可由微引擎(ME)710使用来为随后的经由串行接口730的传输建立数据分组。
此外,还可以包括调度程序(未示出),以用于安排到前后关系管理器的下一个虚拟接口(VI),并且支持与工作队列对(WQP)的发送队列(SQ)和接收队列(RQ)相关联的数据分组的通信量的优先权。这种调度程序可被提供以用于为被调度的功能而连接前后关系存储器接口716、本地总线接口718以及完成队列/门铃管理器接口720。
图8举例说明依照本发明实施例的示例性的微引擎(ME)710,所述微引擎(ME)710被配置以处理发送队列操作和接收队列操作之一,所述操作包括多个独立的操作(称为任务)以用于实现具有最小硬件投资的性能效率。如图8所示,微引擎(ME)710可包括一个或多个数据多路复用器(MUX)810、算术逻辑单元(ALU)820、指令译码器830、微定序器840以及指令存储器850。所述指令存储器850可存储能够被下载的用于ME指令的微代码。数据MUX 810可以根据ME指令提供适合的接口数据。算术逻辑单元(ALU)820可以执行任意的算术、逻辑和移位操作。指令译码器830可以向微定序器840提供***控制以确定要被执行的下一条指令或地址,执行来自指令存储器850的ME指令,并确定ALU 820的功能。微定序器840可检查ME指令序列,并确定将由指令译码器820执行的下一条指令。
示例性的微引擎(ME)710所包括的数据MUX810、算术逻辑单元(ALU)820、指令译码器830、微定序器840以及指令存储器850的一个示例性实现方式可以参照图9在下面进行描述。
数据MUX810:有两个输入数据MUX,分别为输入MUX-A 810A以及输入MUX-B 810B,这两个数据MUX提供两条输入到ALU 820的32位总线(A-总线和B-总线)。A-总线812可以将基于ME指令的目的地字段的译码的数据提供给ALU 820。同样的,B-总线814可以将基于ME指令的源字段的译码的数据提供给ALU 820。到输入数据MUX 810A和810B中的数据输入可以由外部接口块来提供,所述外部接口单元诸如是控制ME功能所需要的先进先出(FIFO)接口722、主机接口712、地址转换接口714、VI前后关系存储器接口716、本地总线接口718以及完成队列/门铃管理器接口720。输入MUX-B 810B可包括经由2:1多路复用器(MUX)860以及逻辑与门870的、来自于ME指令的立即数。目的地/源字段的译码,产生对MUX-A 810A和MUX-B 810B的输入的选择,可以由指令译码器830加以执行。
算术逻辑单元(ALU)820:ALU 820可包括两个(A和B)32位的数据输入,并执行基于ME指令的操作码(OpCode)字段的功能。所支持的功能包括但不限于:加、减、或、异或、与、比较、循环右移、左移位、位测试以及移动(直通)。指令译码器830译码ME指令,并向ALU 820提供功能选择信号。在执行选择的功能后,ALU 820根据输出来设置标志。所述标志例如可包括0和进位。如果算术功能的结果是0,则设置Z标志。相对而言,如果算术功能导致进位输出,则设置C标志。ALU功能的结果可影响Z标志的状态。
指令存储器850:指令存储器850可以是被提供以用于存储微代码的静态随机访问存储器SRAM,以便经由2:1多路复用器(MUX)860和逻辑与门870提供ME指令。所述微代码能够被下载到SRAM中,以用于今后NGIO/InfiniBandTM规范增强的改变。SRAM可包括2K×44位并且可经由本地总线进行加载。每条ME指令可例如是22位,并且SRAM的每个字允许有两条指令。带有32位立即数的指令共占用44位,作为两条指令来计算。由SRAM提供的微代码可以采用不同的代码格式来利用。
微定序器840:微定序器840可通过ME指令的译码以及标志寄存器信息来确定微引擎(ME)710的地址序列。下一个地址序列可由指令译码器830来控制,所述指令译码器830将控制字段信息的8位(即8个控制字段信号)传递到微定序器840。
实现如图7所示的主机机构适配器的最大挑战将是在处理NGIO/InfiniBandTM分组的过程中使微引擎(ME)710的性能和资源最大化,以及在保持整体传送速率的同时使存储器带宽最优。可将专用的硬件辅助(HWA)逻辑并入到一个或多个专用硬件接口块中,所述专用硬件接口块诸如主机接口712、地址转换接口714、VI前后关系存储器接口716、本地总线接口718、完成队列/门铃管理器接口720以及FIFO接口722,以便辅助它们各自的接口功能,并在处理NGIO/InfiniBandTM分组的过程中通过硬件计算来帮助降低微引擎(ME)710的负载。存储在前后关系存储器接口716的内部前后关系存储器中的用于发送和接收NGIO/InfiniBandTM分组的前后关系信息,在ME周期期间需要以如下方式来加以更新,所述方式使存储器带宽最优并保持整体数据传送速率。通常这种前后关系信息可被更新以提供用于所有类型的数据传送所必需的所有的控制、状态以及信息。前后关系存储器总是使用前后关系信息的最新值加以更新,并且微引擎(ME)710访问前后关系信息的最新值以进行工作(诸如消息发送/接收操作这样的数据移动操作和RDMA读/写操作)。
现在转向图10,在所述图中举例说明了依照本发明实施例的示例性远程密钥管理器块(RMB),所述远程密钥管理器块用于检查对应于在主机存储器206中未处理的RDMA操作的远程密钥(“Rkey”)的有效性。远程密钥(“Rkey”)通常出现在以如参考图3C-3D描述的描述符(“WQE”)的形式的请求消息数据中,并且由微引擎(ME)710使用来为未处理的RDMA读/写操作通过地址转换块(ATB)标识用于虚拟地址到物理地址转换的适合页面。远程密钥(Rkey)能够通过使用在工作队列对(WQP)的发送队列(SQ)上邮送的绑定工作请求或者描述符(“WQE”)而被无效。如先前所描述的典型描述符(“WQE”)是被邮送的对正常数据传送操作的工作请求,所述正常数据传送操作诸如正常发送、RDMA写操作以及RDMA读操作。与正常描述符(WQE)相比,绑定描述符是被邮送的对非数据操作的工作请求,所述非数据操作诸如移动或无效在发送队列(SQ)上的主机存储器206的特定存储器区域内的“存储器窗口”,以限制RDMA数据传送。存储器区域是主机结构适配器120可以访问的、主机存储器206的正常块,通常不小于4K字节,(对应于一个存储页面)。和存储器区域相比,“存储器窗口”指定了更小范围的存储器区域,例如5字节。绑定描述符(“WQE”)允许软件完全关闭(无效)“存储器窗口”以便防止工作队列对(WQP)访问所述“存储器窗口”,或者允许软件移动(放大或缩小)所述“存储器窗口”到主机存储器206的不同存储器区域。
如图10所示,远程密钥管理器块(RMB)1010可包括用于发送队列(SQ)1010A以及用于接收队列(RQ)1010B的相独立的RMB,所述发送队列(SQ)1010A以及接收队列(RQ)1010B分别对应于用于工作队列对(WQP)的发送队列(SQ)的微引擎(ME)710A以及用于工作队列对(WQP)的接收队列(RQ)的微引擎(ME)710B。
SQ RMB 1010A包括微引擎接口(“ME-I/F”)1020A,所述微引擎接口提供至SQ微引擎(ME)710A的接口,并且所述SQ RMB 1010A还包括RMB接口(“RMB-I/F”)1030A,所述RMB接口提供至RQ RMB 1010B的接口。
RQ RMB 1010B包括微引擎接口(“ME-I/F”)1020B、RMB接口1030B以及远程密钥存储器1040,其中所述微引擎接口1020B提供至RQ微引擎(ME)710B的接口,用于允许ME的读操作和写操作;所述RMB接口1030B提供至SQ RMB 1010A的接口,用于接收来自于SQ RMB 1010A的密钥无效请求,以及用于通知SQ RMB 1010A其当前处于繁忙状态还是空闲状态;所述远程密钥存储器1040存储远程密钥(Rkey)。这种远程密钥存储器1040可对应于1280×28的随机访问存储器(RAM),并且可以按照如下进行组织:
VI#或WQP# 0 | 奇偶 | 保护范围(15:0) | |
奇偶 | 有效 | 远程密钥0(26:0) | |
奇偶 | 有效 | 远程密钥1(26:0) | |
奇偶 | 有效 | 远程密钥2(26:0) | |
奇偶 | 有效 | 远程密钥3(26:0) | |
VI#或WQP# 1内容 | |||
Y | |||
最大VI#或最大WQP#内容 |
保护范围(PD)是存储在远程密钥存储器1040中的与包括有完成队列(CQ)的工作队列(WQ)相关的信息。保护范围(PD)的目的在于:将所述工作队列(WQ)仅限制在被注册在所述保护范围(PD)的、主机存储器206(参见图6)的存储单元中。每个完成队列(CQ)620都具有在创建时被分配的保护范围(PD)。分配给完成队列(CQ)的保护范围(PD)必需与转换及保护表(TPT)的转换条目返回的保护范围(PD)匹配,以便使完成队列(CQ)能够访问存储器的新页面。如果保护范围(PD)不匹配,则存储器的所述页是不可访问的,并且完成队列(CQ)产生一个错误。同样的,事件队列也使用保护范围(PD)来进行虚拟地址到物理地址的转换。
SQ微引擎(ME)710A可通过以下步骤来请求密钥无效,所述步骤包括:(1)写入保护范围“PD”寄存器(此步骤将请求PD比较);(2)写远程密钥寄存器(此步骤将产生对RQ RMB 1010B的请求);(3)轮询RQ RMB1010B的繁忙位以确定操作已经完成的时间。
由于ME访问总是具有最高的优先权,因而RQ微引擎710B能够在任意给定的时间上读和写远程密钥(Rkey),由此由状态机进行的远程密钥存储器1040的读操作和写操作在ME访问期间被停止。
RQ微引擎(ME)710B可初始化主机存储器206中的保护范围(PD)。零“0”PD表示所述PD是无效的。Rkey对应于未处理的RDMA操作。RQ微引擎(ME)710B在希望SQ RMB 1010A处理的Rkey上设置有效位。
SQ微引擎(ME)710A将保护范围(PD)以及其想要匹配的Rkey提供给SQ RMB 1010A。SQ微引擎(ME)710A然后通过将SQ起始位写到RMB寄存器中来开始RAM操作。SQ RMB 1010A以VI“0”开始走察远程密钥存储器1040。SQ RMB 1010A检查以便查看远程密钥存储器的“PD”是否与提供给SQ的“PD”相匹配。如果远程密钥存储器的“PD”与提供给SQ的PD不匹配,则SQ RMB 1010A跳过对用于所述VI的Rkey的处理。如果远程密钥存储器的“PD”与提供给SQ的PD匹配,则SQ RMB 1010A从远程密钥存储器1040中读取远程密钥“0”。如果存储器远程密钥“0”不匹配(有效位是非真或者有效位是真而存储器远程密钥“0”不对应于SQ Rkey(提供给SQ的key)),则SQ RMB 1010A移动以检查下一个Rkey。如果存储器远程密钥“0”与提供给SQ的密钥匹配(有效位是真并且存储器远程密钥0=SQ Rkey),则SQ RMB 1010A清除对应于远程密钥存储器1040中的Rkey“0”的有效位。
远程密钥存储器1040可以是单个读和单个写端口存储器。当SQ RMB1010A试图走察远程密钥存储器1040时,可以同时对远程密钥存储器1040进行RQ读操作以及写操作。所以,SQ RMB 1010A在接收队列(RQ)正试图读远程密钥存储器1040的那些时钟周期中,延迟读取存储器的访问,并且在接收队列(RQ)正试图写入远程密钥存储器1040的那些时钟周期中,延迟写访问。
一旦SQ RMB 1010A为了检查用于所有VI的所有Rkey而走察了整个远程密钥存储器1040,就可使发送队列(SQ)的完成信号有效。然后,SQ RMB 1010A等待由发送队列(SQ)开始。
还存在一种实现应该被注意的情形,即读和写都针对远程密钥存储器1040的同一地址。在所述情形下,读数据不是有效的。由此,当读取地址和写入地址相同并且在同一时间周期内对远程密钥存储器1040正在进行写和读操作时,将写数据而不是存储器读取数据直接传送给读总线。
图11举例说明依照本发明实施例的示例性高级远程密钥的验证。远程密钥的验证可由工作队列对(WQP)的发送队列(SQ)来激活,以便检查在远程密钥存储器1040中对应于未处理的RDMA操作的远程密钥(Rkey)的有效性。如先前所描述的,这种远程密钥(Rkey)与虚拟地址一起使用以用来描述授权远程***访问如图4A-4B所示的主机***130的本地存储器206。
如图11所示,在框1110,微引擎(ME)710的微代码确定是否将“描述符”(“WQE”)形式的工作请求邮送到发送队列(SQ)上,即,在发送队列(SQ)上是否有任意VI待处理。描述符(WQE)通常针对正常数据传送操作而加以邮送,诸如正常发送、RDMA写操作以及RDMA读操作。如果在发送队列(SQ)上没有要邮送的工作请求或者没有待处理的VI,则微引擎(ME)710保持空闲。
然而,在框1112,如果在发送队列(SQ)上有已邮送的工作请求或者有待处理的VI,那么微代码确定所述被邮送的描述符是否是绑定描述符。绑定描述符是为非数据操作而邮送的工作请求,所述非数据操作诸如:移动或无效在发送队列(SQ)上的于主机存储器206的存储器区域内的“存储器窗口”,以限制RDMA数据传送。
在框1114,如果所述已邮送的描述符不是绑定描述符,那么微代码能够针对正常数据传送操作进行处理,诸如正常发送、RDMA写操作以及RDMA读操作。通常,如图7中所示的整个微控制器子***700可以操作以用来处理正常数据传送操作,诸如正常发送、RDMA写操作以及RDMA读操作。然而,在框1116,如果已邮送的描述符是绑定描述符,那么微代码确定“存储器窗口”是否被无效。
在框1118,如果“存储器窗口”没有被无效,那么微代码记录所述“存储器窗口”被移动(总是“真”),并且进入框1120,以对主机存储器206执行写操作以便移动所述“存储器窗口”。然而,如果“存储器窗口”被无效,那么地址转换块(ATB)(未示出)前进,在框1122对主机存储器206执行写操作以便破坏所述“存储器窗口”。
在任一情况后,在框1124,RMB 1010可被激活以搜索所有使用所述“存储器窗口”的未处理的RDMA操作。接着,在框1126,RMB 1010标识使用过这一“存储器窗口”的远程密钥(Rkey)。如果使用过这一“存储器窗口”的远程密钥(Rkey)被标识,那么RMB 1010前进,并在框1128使所述远程密钥(Rkey)无效,直到在框1130将所有的远程密钥(Rkey)都无效掉为止。如果任何远程密钥(Rkey)都没有被标识,那么在框1130,RMB 1010以使所有远程密钥(Rkey)都无效而完成并返回到空闲状态。如果所有的远程密钥(Rkey)都没有被无效,那么RMB 101O返回到框1124以搜索所有使用所述“存储器窗口”的未处理的RDMA操作,直到所有的远程密钥(Rkey)都被标记为“无效的”为止,从而使得任何新的远程密钥(Rkey)或新的工作队列对(WQP)都不可以进入并使用所述“存储器窗口”。
图12举例说明了如图11中的框1124-1130中所示的由远程密钥管理器块(RMB)1010执行的示例性的单个密钥的验证。依照InfiniBandTM体系结构规范,存在256个“VI”(也称为“WQP”或“QP”)。所有的256个VI需要被单独地处理,以便为无效操作而比较存储器Rkey(来自于远程密钥存储器1040的远程密钥)和SQ Rkey(来自于发送队列的远程密钥)。然而,“VI”的数目并不限于此。只要主机结构适配器120支持这种“VI”,任意数目的“VI”都可以。
如图12所示,RMB 1010保持空闲状态,直到SQ微引擎(ME)710A请求密钥无效为止。在这期间,RQ微引擎(ME)710B可以是活动的,并且可以随意对所述远程密钥(Rkey)进行读和写。在框1210,如果存在RQ读操作,则RMB 1010等待预定的时间,例如一个时钟周期。
如果没有任何活动的RQ读操作,或者在接收队列(RQ)上不再有任何的活动,则在框1212,RMB 1010启动保护范围(PD)比较,即,将存储器PD(来自于远程密钥存储器1040的PD)和提供给SQ的PD(来自于发送队列的PD)进行比较。如果存储器PD与提供给SQ的PD不匹配,则RMB1010跳过对所述VI的Rkey的处理,并且在框1214继续执行以确定是否所有的VI都已完成。这是因为,如果存储器PD与提供给SQ的PD不匹配,那么没有任何Rkey将匹配。由此,RMB 1010可跳过对所述VI的Rkey的处理,以便节省时间和时钟周期。
然而,如果存储器的PD与提供给SQ的PD匹配,则RMB 1010知道所述工作队列对(WQP)被允许使用所述Rkey。如框1216-1230中所示的,RMB 1010然后前进以便读取远程密钥,并且启动顺序地针对所有与所述特定VI相关联的远程密钥(Rkey)的远程密钥比较。每个VI关联四(4)个远程密钥,所述四个远程密钥包括正在每个工作队列对(WQP)中进行的一(1)个RDMA写和三(3)个RDMA读。然而,与每个VI关联的远程密钥的数目并不限于此。由于在此实施例中每个VI关联四(4)个远程密钥,因而RMB 1010为了密钥无效必须顺序地启动四次不同的远程密钥比较。
具体而言,在框1216,RMB 1010从远程密钥存储器1040读取远程密钥“0”并将其与提供给SQ的密钥进行比较。如果存储器远程密钥“ 0”与提供给SQ的密钥不匹配(有效位非真或者有效位为真而存储器远程密钥“0”不对应于SQ Rkey),则RMB 1010移动以检查下一个Rkey。然而,如果存储器远程密钥“0”与提供给SQ的密钥匹配(有效位是真且存储器远程密钥0=SQ Rkey),则在框1218,RMB 1010清除对应于远程密钥存储器1040中的Rkey“0”的有效位。
接着,在框1220,RMB 1010从远程密钥存储器1040读取远程密钥“1”并将其与提供给SQ的密钥进行比较。如果存储器远程密钥“1”与提供给SQ的密钥不匹配,则RMB 1010移动以检查下一个Rkey。如果存储器远程密钥“1”与提供给SQ的密钥匹配,则在框1222,RMB 1010清除对应于远程密钥存储器1040中的Rkey“1”的有效位。
同样的,RMB 1010前进,在框1224处从远程密钥存储器1040读取远程密钥“2”并将其与提供给SQ的密钥进行比较。如果存储器远程密钥“2”与提供给SQ的密钥不匹配,则RMB 1010移动以检查下一个Rkey。如果存储器远程密钥“2”与提供给SQ的密钥匹配,则在框1226,RMB 1010清除对应于远程密钥存储器1040中的Rkey“2”的有效位。
最后,在框1228处,RMB 1010从远程密钥存储器1040读取远程密钥“3”并将其与提供给SQ的密钥进行比较。如果存储器远程密钥“3”与提供给SQ的密钥不匹配,则在框1214,RMB 1010移动以确定是否所有的VI都完成。如果存储器远程密钥“3”与提供给SQ的密钥匹配,则在框1230,RMB 1010清除对应于远程密钥存储器1040中的Rkey“3”的有效位,并且进入框1214以确定是否所有VI都完成。
图13A-13H举例说明了依照本发明实施例的正常远程密钥管理器块(RMB)操作的示例性时序图。具体而言,图13A示出了以每8ns为时钟周期的示例性时序图。图13B示出了从发送队列(SQ)开始的SQ起始的示例性时序图。图13C示出了对应于发送队列(SQ)完成的示例性时序图。图13D示出了依照本发明实施例的RMB 1010的当前状态的示例性时序图。图13E示出了进行中的当前“VI”或工作队列对(WQP)的示例性时序图。图13F示出了依照本发明实施例的RMB 1010的存储器读操作(rmb_mem_re)的示例性时序图。图13G示出了依照本发明实施例的RMB1010的存储器读地址(rmb_mem_rd_addr)的示例性时序图。图13H示出了依照本发明实施例的存储器读数据(rmb_mem_rd_data)的示例性时序图。
在这一情况下,将讨论RMB对单个“VI”(也称为“WQP”或“WP”)的所有Rkey的处理以及转换到下一个VI。假设存储器PD与提供给SQ的PD匹配。并假设存储器Rkey与提供给SQ的Rkey不匹配。
下面将讨论对所述操作的一个周期接一个周期的说明:
如图13A-13H所示,RMB 1010在周期#1以及周期#2期间保持空闲。在周期#3,当发送队列(SQ)如图13B所示那样开始RMB操作时,RMB 1010如图13F所示那样使远程密钥存储器1040的“读使能”有效,并且驱动正确的地址以读取第一VI、即VI“0”的保护范围(PD),如图13G所示。
在周期#4,将存储器PD与提供给SQ的PD比较。因为存在匹配,所有RMB 1010开始读取对应于所述VI的远程密钥(Rkey)。如图13C所示,使发送队列(SQ)的完成指示(完成信号)无效。
在周期#5,#6和#7,如果来自远程密钥存储器1040的Rkey“0”,“1”和“2”与提供给SQ的Rkey不匹配,则RMB 1010继续读远程密钥存储器1040。
在周期#8,如果从远程密钥存储器1040读取的Rkey“3”与提供给SQ的Rkey不匹配,则结束对当前VI的Rkey的处理。如图13F所示,RMB 1010使远程密钥存储器140的“读使能”无效。
在周期#9,RMB 1010进行检查以查看是否所有的VI都完成(参见图12的框1214)。如果所有的VI还没有完成,并且接收队列(RQ)没有正在访问远程密钥存储器1040,则RMB 1010开始读取下一个VI、即VI“1”的保护范围(PD)。
在周期#10,以与参照周期#4描述的方式相同的方式来再次对存储器PD和提供给SQ的PD进行比较。然而,VI#被加1。
在周期#11,#12以及#13,与参考周期#5,#6和#7所描述的方式一样,如果来自远程密钥存储器1040的Rkey“0”,”1”和“2”与提供给SQ的Rkey不匹配,则RMB 1010继续读远程密钥存储器1040。
图14A-14H举例说明了依照本发明实施例的完成正常远程密钥管理器块(RMB)操作的示例性时序图。图14A示出了以每8ns为时钟周期的示例性时序图。图14B示出了从发送队列(SQ)开始的SQ起始的示例性时序图。图14C示出了对应于发送队列(SQ)完成的示例性时序图。图14D示出了依照本发明实施例的RMB 1010的当前状态的示例性时序图。图14E示出了进行中的当前“VI”或工作队列对(WQP)的示例性时序图。图14F示出了依照本发明实施例的RMB 1010的存储器读操作(rmb_mem_re)的示例性时序图。图14G示出了依照本发明实施例的RMB 1010的存储器读地址(rmb_mem_rd_addr)的示例性时序图。图14H示出了依照本发明实施例的存储器读数据(rmb_mem_rd_data)的示例性时序图。
在这一情况下,将讨论RMB对最后VI的最后两个密钥的处理和到空闲状态的转换。假设存储器Rkey与提供给SQ的Rkey不匹配。
下面将讨论对所述操作的一个周期接一个周期的说明:
如图14A-14H所示,在周期#1和周期#2期间,RMB 1010保持在处理VI Max的中间。在周期#3和周期#4,RMB 1010确定从远程密钥存储器1040中顺序读取的Rkey“2”以及Rkey“3”与提供给SQ的用于VI Max的Rkey不匹配,如图14H所示。
在周期#5,RMB 1010进行检查以查看是否所有的VI都完成(参见图12的框1214)。如果所有的VI都完成,则RMB 1010如图14C所示,在下一个时钟周期转换为空闲。如图14E所示,RMB 1010还使发送队列(SQ)的完成指示(完成信号)有效。
如图14D所示,在周期#6,VI#翻转至零“0”以准备下一个RMB 1010操作的开始。如图14C所示,在周期#7和#8,然后RMB 1010保持空闲。
图15A-15H举例说明了依照本发明实施例的、在其中存在保护范围(PD)失配的远程密钥管理器块(RMB)操作的示例性时序图。在此情况下,RMB 1010开始处理VI。假设存储器PD与提供给SQ的PD不匹配。由此,RMB 1010跳过处理当前VI的Rkey,并转移到下一个VI。图15A示出了以每8ns为时钟周期的示例性时序图。图15B示出了从发送队列(SQ)开始的SQ起始的示例性时序图。图15C示出了依照本发明实施例的RMB1010的当前状态的示例性时序图。图15D示出了来自于RMB 1010的PD失败指示的示例性时序图。图15E示出了进行中的当前“VI”或工作队列对(WQP)的示例性时序图。图15F示出了依照本发明实施例的RMB 1010的存储器读(rmb_mem_re)操作的示例性时序图。图15G示出了依照本发明实施例的RMB 1010的存储器读地址(rmb_mem_rd_addr)的示例性时序图。图15H示出了依照本发明实施例的存储器读数据(rmb_mem_rd_data)的示例性时序图。
下面将论述所述操作的一个周期接一个周期的说明:
如图15A-15H所示,在周期#1和周期#2期间,RMB 1010保持空闲。如图15B所示,在周期#3,当发送队列(SQ)开始RMB操作时,RMB 1010使远程密钥存储器1040的“读使能”有效,并驱动正确的地址以读取第一VI即VI“0”的保护范围(PD)。
如图15C所示,在周期#4,将存储器PD与提供给SQ的PD进行比较。由于存在失配,必须终止对当前VI的Rkey处理。由此,RMB 1010停止读取对应于所述VI的远程密钥(Rkey)。如图15G所示,读取的地址与下一个VI的PD地址一起被加载。
在周期#5,RMB 1010进行检查以查看是否所有的VI都已完成(参见图12的框1214)。如果所有的VI都没有完成,并且接收队列(RQ)没有在访问远程密钥存储器1040,则RMB 1010开始读取下一个VI即VI“1”的保护范围(PD)。
如图15E所示,在周期#6,VI#被加1。如图15C所示,将存储器PD与提供给SQ的PD比较。由于存在匹配,RMB 1010开始读取对应于所述VI的远程密钥(Rkey)。
在周期#7和#8,如果来自远程密钥存储器1040的Rkey“0”和“1”与提供给SQ的Rkey不匹配,则RMB 1010继续读远程密钥存储器1040。
图16A-16K举例说明了依照本发明实施例、在其中存在多个密钥失配的远程密钥管理器块(RMB)操作的示例性时序图。在这种情况下,RMB1010开始处理VI。假设存储器PD与提供给SQ的PD匹配。并假设所有的存储器Rkey与提供给SQ的Rkey匹配。由此,RMB 1010必须清除每个Rkey各自的有效位。此外还示出了到下一个VI的转换。具体而言,图16A示出了以每8ns为时钟周期的示例性时序图。图16B示出了从发送队列(SQ)开始的SQ起始的示例性时序图。图16C示出了依照本发明实施例的RMB 1040的当前状态的示例性时序图。图16D示出了来自RMB1010的PD失败指示的示例性时序图。图16E示出了进行中的当前“VI”或工作队列对(WQP)的示例性时序图。图16F示出了依照本发明实施例的RMB 1010的存储器读(rmb_mem_re)操作的示例性时序图。图16G示出了依照本发明实施例的RMB 1010的存储器读地址(rmb_mem_rd_addr)的示例性时序图。图16H示出了依照本发明实施例的存储器读数据(rmb_mem_rd_data)的示例性时序图。图16I示出了依照本发明实施例的RMB 1010的存储器写(rmb_mem_we)操作的示例性时序图。图16J示出了依照本发明实施例的RMB 1010的存储器写地址(rmb_mem_wr_addr)的示例性时序图。图16K示出了依照本发明实施例的存储器写数据(rmb_mem_wr_data)的示例性时序图。
下面将论述所述操作的一个周期接一个周期的说明:
如图16A-16K所示,在周期#1以及周期#2期间,RMB 1010保持空闲。在周期#3,当发送队列(SQ)如图16B所示那样开始RMB操作时,RMB1010如图16F所示那样使远程密钥存储器1040的“读使能”有效,并且驱动正确的地址以读取第一VI即VI“0”的保护范围(PD),如图16G所示。
在周期#4,将存储器PD与提供给SQ的PD相比较。由于存在匹配,RMB 1010开始读取对应于所述VI的远程密钥(Rkey)。
在周期#5,来自远程密钥存储器1040的RKey“0”与提供给SQ的Rkey匹配。由此,RMB 1010停止读远程密钥存储器1040。
在周期#6,必须清除对应于远程密钥存储器1040中的Rkey“0”的有效位。由此,如图16I所示,RMB 1010使远程密钥存储器1040的“写使能”有效。此外,RMB 1010开始读Rkey“1”。
在周期#7,来自远程密钥存储器1040的Rkey”1”与提供给SQ的Rkey匹配。由此,RMB 1010停止读远程密钥存储器1040。
在周期#8,必须清除对应于远程密钥存储器1040中的Rkey“1”的有效位。由此,如图16I所示,RMB 1010使远程密钥存储器1040的“写使能”有效。RMB 1010并且开始读Rkey“2”。
在周期#9,来自远程密钥存储器1040的Rkey“2”与提供给SQ的Rkey匹配。由此,RMB 1010停止读远程密钥存储器1040。
在周期#10,必须清除对应于远程密钥存储器1040中的Rkey “2”的有效位。由此,如图16I所示,RMB 1010使远程密钥存储器1040的“写使能”有效。RMB 1010并且开始读Rkey“3”。
在周期#11,来自远程密钥存储器1040的RKey“3”与提供到SQ的Rkey匹配。由此,RMB 1010停止读远程密钥存储器1040。
在周期#12,必须清除对应于远程密钥存储器1040中的Rkey“3”的有效位。由此,如图16I所示,RMB 1010使远程密钥存储器1040的“写使能”有效。
在周期#13,RMB 1010进行检查并查看是否所有的VI都完成(参见图12的框1214)。如果所有的VI还没有完成,并且接收队列(RQ)没有在访问远程密钥存储器1040,则RMB 1010开始读取下一个VI即VI“1”的保护范围(PD)。
在周期#14,以参见周期#4所描述的相同的方式,再次将存储器PD与提供给SQ的PD进行比较。然而,VI#被加1。
在周期#15,来自远程密钥存储器1040的Rkey“0”与提供给SQ的Rkey匹配,除了VI不同外,所述过程与参考周期#5所描述的方式一样。
图17A-17M举例说明了依照本发明实施例的远程密钥管理器块(RMB)操作的示例性时序图,在所述操作过程中存在具有与间断的RQ存储器访问的多次密钥失配。在这种情况下,RMB 1010开始处理VI。假设存储器PD与提供给SQ的PD匹配。并假设所有的存储器Rkey与提供给SQ的Rkey匹配。由此,RMB 1010必须清除每个Rkey各自的有效位。但是,RQ微引擎(ME)710B会在RMB 1010正试图访问存储器1040的周期上访问存储器1040。因此,将论述潜在的存储器访问冲突。此外还示出了到下一个VI的转换。
具体而言,图17A示出了以每8ns为时钟周期的示例性时序图。图17B示出了从发送队列(SQ)开始的SQ起始的示例性时序图。图17C示出了来自接收队列(RQ)的RQ源地址的示例性时序图。图17D示出了RMB1010的RQ存储器写操作的示例性时序图。图17E示出了依照本发明实施例的RMB 1040的当前状态的示例性时序图。图17F示出了来自于RMB1010的密钥失败指示的示例性时序图。图17G示出了正在处理的当前“VI”或工作队列对(WQP)的示例性时序图。图17H示出了依照本发明实施例的RMB 1010的存储器读(rmb_mem_re)的示例性时序图。图17I示出了依照本发明实施例的RMB 1010的存储器读地址(rmb_mem_rd_addr)的示例性时序图。图17J示出了依照本发明实施例的存储器读数据(rmb_mem_rd_data)的示例性时序图。图17K示出了依照本发明实施例的RMB 1010的存储器写(rmb_mem_we)操作的示例性时序图。图17L示出了依照本发明实施例的RMB 1010的存储器写地址(rmb_mem_wr_addr)的示例性时序图。图17M示出了依照本发明实施例的存储器写数据(rmb_mem_wr_data)的示例性时序图。
下面将论述所述操作的一个周期接一个周期的说明:
如图17A-17M所示,在周期#1和周期#2期间,RMB 1010保持空闲。在周期#3,如图17所示,发送队列(SQ)开始RMB操作。由此,RMB 1010必须读取对应于VI“0”(也称为“WQP”或“QP”)的保护范围(PD)。然而,在这一时钟上,接收队列(RQ)正试图读远程密钥存储器1040。由此,RMB1010等待,直到接收队列(RQ)不活动为止。
在周期#4,如图17I以及17J所示,当RQ不活动时,RMB 1010使远程密钥存储器1040的“读使能”有效,并且驱动正确的地址以读取第一VI即VI“0”的保护范围(PD)。
在周期#5,将存储器PD与提供给SQ的PD比较。因为存在匹配,RMB1010必须开始读取对应于所述VI的Rkey。但是,在这一时钟上,接收队列(RQ)正试图读远程密钥存储器1040。由此,RMB 1010等待,直到接收队列(RQ)不活动为止。
在周期#6,RMB 1010开始读来自于远程密钥存储器1040的Rkey“0”。在周期#7,来自远程密钥存储器1040的Rkey“0”与提供给SQ的Rkey匹配。由此,RMB 1010停止读远程密钥存储器1040。
在周期#8,必须清除对应于远程密钥存储器1040中的Rkey“0”的有效位。然而,在这一时钟上,接收队列(RQ)正在写入远程密钥存储器1040。由此,RMB 1010等待,直到接收队列(RQ)不活动为止。
在周期#9,当接收队列(RQ)不活动时,RMB 1010清除对应于存储器1040中的Rkey“0”的有效位。而后,RMB 1010开始读Rkey“1”。
在周期#10,来自远程密钥存储器1040的Rkey“1”与提供给SQ的Rkey不匹配。RMB 1010必须读来自于远程密钥存储器1040的Rkey“2”。但是,在这一时钟上,接收队列(RQ)正试图读远程密钥存储器1040。由此,RMB 1010等待,直到接收队列(RQ)不活动为止。
在周期#11,当接收队列(RQ)不活动时,RMB 1010开始读来自于远程密钥存储器1040的Rkey“2”。
在周期#12,来自远程密钥存储器1040的Rkey“1”与提供给SQ的Rkey不匹配。由此,RMB 1010必须读来自于远程密钥存储器1040的Rkey“3”。但是在这一时钟上,接收队列(RQ)正试图读远程密钥存储器1040。由此,RMB 1010等待,直到接收队列(RQ)不活动为止。
在周期#13,当接收队列(RQ)不活动时,RMB 1010开始读来自远程密钥存储器1040的Rkey“3”。
在周期#14,来自远程密钥存储器1040的Rkey“3”与提供给SQ的Rkey匹配。由此,RMB 1010停止从远程密钥存储器1040中读取。
在周期#15,RMB 1010想要清除对应于远程密钥存储器1040中的Rkey“3”的有效位。但是在这一时钟上,接收队列(RQ)正在写远程密钥存储器1040。因而,RMB 1010等待,直到接收队列(RQ)不活动为止。
在周期#16,当接收队列(RQ)不活动时,RMB 1010清除对应于远程密钥存储器1040中的Rkey“0”的有效位。
在周期#17,RMB 1010进行检查并查看是否所有的VI都完成。如果不是所有的VI都完成,并且接收队列(RQ)没有正在访问存储器1040,那么RMB 1010开始读下一个VI即VI#1(也称为“WQP#1”或“QP#1”)的PD。
在周期#18,以参考周期#4所描述的方式相同的方式,RMB 1010使存储器1040的“读使能”有效,并驱动正确的地址以读取VI#1的密钥“0”。但是VI#被加1。
图13A-13H、14A-14H、15A-15H、16A-16K以及17A-17M所示的时序图,是受ASIC工艺以及其它因素的要求而控制的。如果ASIC工艺和技术要求(诸如芯片制造工艺)不同,那么图10-12中所示的这些步骤以及图13A-13H、14A-14H、15A-15H、16A-16K以及17A-17M中所示的时序图的实现将不同地被完成。然而仍要遵照在本申请中所描述的基本原理。
此外,除了参照图10-12所描述的本申请的这些方法外,还有两种(2)其它可能的方式可用来实现远程密钥管理器块(RMB)。这些可能的方式包括:完全以硬件或者完全以微代码的方式来实现远程密钥管理器块(RMB)。如果远程密钥管理器块(RMB)完全以硬件方式来实现,那么将会创建出许多竞争条件(race condition),这是由于SQ绑定描述符及RQ RDMA操作,和主机存储器窗口无效或移动之间复杂的交互。此外,如果InfiniBandTM规范将来会改变,并且这如果并非不可能的话,那么硬件将来的修改或升级会变得非常困难。如果远程密钥管理器块(RMB)完全以微代码的方式来实现,那么每个WQP至少需要9个时钟周期(5个读周期以及4个写周期)。为支持256个WQP,将需要总计为256(WQP)×9(时钟/WQP)×8(ns/时钟)~18us。这意味着在这一时间期间,主机结构适配器将会被完全地停止,并且无法处理SQ分组。这会引起分组超时,以及其它InfiniBandTM相关的一致性问题。
如上所述,依照本发明实施例的、使用基于通道、交换结构的体系结构的、在数据网络中的主机***上安装的主机结构适配器,有效地管理NGIO/InfiniBandTM通道,并且支持主机***上的通信设备间的数据移动操作,或者支持直接连接在一起或经由使用基于通道的、交换结构的体系结构的数据网络连接在一起的主机***之间的数据移动操作。为具有最小硬件投资的NGIO/InfiniBandTM的功能性,而优化所述主机结构适配器,包括控制NGIO/InfiniBandTM协议以最小流水线的执行。主机结构适配器的微控制子***被设计以用于控制NGIO/InfiniBandTM协议以最小流水线的执行。此外,实现了密钥验证机制,以用于在这种数据网络中管理并且无效对应于未处理数据事务(例如,读/写操作)的远程密钥,以便授权远程***经由基于通道的交换结构来有效访问主机存储器。
虽然已经举例说明和描述了被视为本发明的示例性的实施例,但是本领域技术人员将能够理解,随着技术的发展,在不脱离本发明真正范围的情况下,可以进行各种变化和修改,并且可以利用等价物来代替其元件。例如,本发明适用于所有类型的数据网络和LAN***,所述数据网络包括但不限于:局域网(LAN)、广域网(WAN)、校园网(CAN)、城域网(MAN)、全球区域网络(GAN)、以及如下的***区域网络(SAN),所述***区域网络使用下一代I/O(NGIO)、Future I/O(FIO)、InfiniBandTM以及Server Net,所述LAN***包括以太网、FDDI(光纤分布式数据接口)令牌环LAN、异步传输模式(ATM)LAN、光线通道以及无线LAN。此外,在不脱离本发明真实范围的情况下,可以作出其它的修改以使本发明的教导适应特殊的情形。由此,应该意识到本发明并不限于所公开的各种示例性实施例,而是包括在所附权利要求书限定的范围内的所有实施例。
Claims (27)
1.一种主机结构适配器,包括:
一个或多个微引擎,被安排成用于响应来自主机***的对数据传送操作的工作请求,经由交换结构来建立连接以及支持数据传送操作;以及
远程密钥管理器,被安排成用于经由所述交换结构来管理远程密钥以及检查远程密钥的有效性,所述远程密钥对应于未处理的数据传送操作。
2.如权利要求1所述的主机结构适配器,进一步包括:
包含多个工作队列对(WQP)的传输引擎,在所述多个工作队列对中,描述符形式的工作请求经由所述交换结构被邮送,以用来描述数据传送操作以及描述要被移动以便处理和/或传输的数据的位置。
3.如权利要求2所述的主机结构适配器,其特征在于:所述工作队列对(WQP)均包括:
用作“启动器”的发送队列(SQ),所述发送队列经由所述交换结构请求到远程***的远程虚拟接口(VI)的正常消息发送,请求远程直接存储器访问(RDMA)读操作,所述读操作请求消息要从所述远程***的特定存储单元加以读取,以及经由所述交换结构请求远程直接存储器访问(RDMA)写操作,所述写操作请求消息要被写入所述远程***的特定存储单元;以及
用作“应答器”的接收队列,所述接收队列经由所述交换结构从所述远程***接收对来自正常发送、RDMA读操作和RDAM写操作的消息的请求。
4.如权利要求3所述的主机结构适配器,其特征在于:
所述微引擎以及所述远程密钥管理器依照“InfiniBandTM规范”加以配置,并且作为专用集成电路(ASIC)的一部分加以实现。
5.如权利要求3所述的主机结构适配器,其特征在于:所述微引擎包括:
发送队列(SQ)微引擎,被安排成用于控制工作队列对(WQP)的发送队列(SQ)的操作;以及
接收队列(RQ)微引擎,被安排成用于控制工作队列对(WQP)的接收队列(RQ)的操作。
6.如权利要求5所述的主机结构适配器,其特征在于:
所述远程密钥管理器包括远程密钥存储器,所述远程密钥存储器用于存储储存的远程密钥,所述储存的远程密钥用于与包含在用于密钥验证的工作请求中的远程密钥进行比较。
7.如权利要求6所述的主机结构适配器,其特征在于:
所述远程密钥用于为包括RDMA读/写操作的未处理数据传送操作标识用于从虚拟地址到物理地址转换的适当页。
8.如权利要求7所述的主机结构适配器,其特征在于:
所述工作请求以用于正常数据传送操作的描述符的形式而被邮送,所述正常数据传送操作诸如正常发送、RDMA写操作以及RDMA读操作,或者以用于非数据操作的绑定描述符的形式而被邮送,所述非数据操作诸如在发送队列(SQ)上移动或无效所述主机***的主机存储器的特定存储器区域内的“存储器窗口”,以限制RDMA数据传送操作。
9.如权利要求6所述的主机结构适配器,其特征在于:
所述远程密钥存储器是具有单个读端口和单个写端口的随机访问存储器(RAM)。
10.如权利要求8所述的主机结构适配器,其特征在于:所述远程密钥管理器被启动来通过以下操作检查远程密钥的有效性,所述操作包括:
确定在发送队列(SQ)上邮送的描述符是否是用于非数据操作的绑定描述符;
如果所述邮送的描述符不是绑定描述符,那么针对正常数据传送操作,诸如正常发送、RDMA写操作以及RDMA读操作进行处理;
如果所述邮送的描述符是绑定描述符,那么确定所述“存储器窗口”是否是无效的;
如果所述“存储器窗口”不是无效的,那么记录所述“存储器窗口”被移动,并且对所述主机***的主机存储器执行写操作以移动所述“存储器窗口”;
如果所述“存储器窗口”是无效的,那么对所述主机***的主机存储器执行写操作以破坏所述“存储器窗口”;
搜索所有使用所述“存储器窗口”的未处理RDMA操作,以标识使用过所述“存储器窗口”的远程密钥;
如果使用过所述“存储器窗口”的远程密钥被标识了,则使所述远程密钥无效,直到所有远程密钥都被无效为止;
如果任何远程密钥都没有被标识,则完成所有远程密钥的无效,并且返回到空闲状态;以及
如果所有的远程密钥都没有被无效,那么返回以便搜索所有使用所述“存储器窗口”的未处理RDMA操作,直到所有的远程密钥被标记为“无效的”为止,从而使得任何新的远程密钥或者新的工作队列对(WQP)都不可以进入并且使用所述“存储器窗口”。
11.如权利要求10所述的主机结构适配器,其特征在于:所述远程密钥管理器在来自所述SQ微引擎请求密钥无效时被启动,以便通过以下操作来使远程密钥无效,所述操作包括:
启动虚拟接口(VI)的存储器PD和提供给SQ的PD之间的保护范围(PD)比较;
如果存储器PD与提供给SQ的PD不匹配,则跳过对用于所述VI的远程密钥的处理,并且确定是否所有的VI都被处理了;以及
如果存储器PD与提供给SQ的PD匹配,则读取远程密钥,并且启动顺序地针对所有与用于密钥无效的所述VI相关联的远程密钥的远程密钥比较。
12.如权利要求11所述的主机结构适配器,其特征在于:所述远程密钥管理器启动通过以下操作对与所述VI相关联的所有远程密钥的远程密钥比较,所述操作包括:
从远程密钥存储器读取第一远程密钥,并将其与提供给SQ的密钥进行比较;
如果所述第一远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第一远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第一远程密钥的有效位;
从远程密钥存储器读取第二远程密钥,并且将其与提供给SQ的密钥进行比较;
如果所述第二远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第二远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第二远程密钥的有效位;
从远程密钥存储器读取第三远程密钥,并且将其与提供给SQ的密钥进行比较;
如果所述第三存储器远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第三远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第三远程密钥的有效位;
从远程密钥存储器读取最后的远程密钥,并将其与提供给SQ的密钥进行比较;
如果所述最后的远程密钥与提供给SQ的密钥不匹配,则移动以确定是否所有的VI都被处理;以及
如果所述最后的远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的最后的远程密钥的有效位,并确定是否所有的VI都被处理。
13.一种安装在主机***上的、用于连接至数据网络的交换结构的主机结构适配器,包括:
至少一个微引擎(ME),被安排成用于经由所述交换结构来建立连接以及支持数据传送;
串行接口,被安排成用于接收来自所述交换结构的用于数据传送操作的数据分组,并将其传输;
主机接口,被安排成用于接受来自所述主机***的对数据传送操作的工作请求,并以描述符的形式将其传输;
前后关系存储器,被安排成用于存储所述微引擎(ME)用来处理对数据传送操作的工作请求所必需的前后关系信息;
门铃管理器,被安排成用于更新所述微引擎(ME)用来处理对数据传送操作的工作请求所必需的前后关系信息;以及
远程密钥管理器,被安排成用于管理远程密钥,并检查与未处理的数据传送操作对应的远程密钥的有效性。
14.如权利要求13所述的主机结构适配器,进一步包括:
包含多个工作队列对(WQP)的传输引擎,在所述工作队列对中,描述符形式的工作请求经由所述交换结构被邮送,以用来描述数据传送操作以及描述要被移动以便处理和/或传输的数据的位置。
15.如权利要求14所述的主机结构适配器,其特征在于:所述工作队列对(WQP)均包括:
用作“启动器”的发送队列(SQ),所述发送队列经由所述交换结构请求到远程***的远程虚拟接口(VI)的正常消息发送,请求远程直接存储器访问(RDMA)读操作,所述读操作请求消息要从所述远程***的特定存储单元加以读取,以及经由所述交换结构请求远程直接存储器访问(RDMA)写操作,所述写操作请求消息要被写入所述远程***的特定存储单元;以及
用作“应答器”的接收队列,所述接收队列经由所述交换结构从所述远程***接收对来自正常发送、RDMA读操作和RDAM写操作的消息的请求。
16.如权利要求13所述的主机结构适配器,其特征在于:
所述微引擎、主机接口、串行接口、前后关系存储器、门铃管理器以及所述远程密钥管理器依照“InfiniBandTM规范”加以配置,并且作为专用集成电路(ASIC)的一部分加以实现。
17.如权利要求15所述的主机结构适配器,其特征在于:所述微引擎包括:
发送队列(SQ)微引擎,被安排成用于控制工作队列对(WQP)的发送队列(SQ)的操作;以及
接收队列(RQ)微引擎,被安排成用于控制工作队列对(WQP)的接收队列(RQ)的操作。
18.如权利要求17所述的主机结构适配器,其特征在于:
所述远程密钥管理器包括远程密钥存储器,所述远程密钥存储器存储储存的远程密钥,所述储存的远程密钥用于与包含在用于密钥验证的工作请求中的远程密钥进行比较。
19.如权利要求18所述的主机结构适配器,其特征在于:
所述远程密钥用于为包括RDMA读/写操作的未处理数据传送操作标识用于从虚拟地址到物理地址转换的适当页。
20.如权利要求19所述的主机结构适配器,其特征在于:
所述工作请求以用于正常数据传送操作的描述符的形式而被邮送,所述正常数据传送操作诸如正常发送、RDMA写操作以及RDMA读操作,或者以用于非数据操作的绑定描述符的形式而被邮送,所述非数据操作诸如在发送队列(SQ)上移动或无效所述主机***的主机存储器的特定存储器区域内的“存储器窗口”,以限制RDMA数据传送操作。
21.如权利要求18所述的主机结构适配器,其特征在于:
所述远程密钥存储器是1280×28的具有单个读端口和单个写端口的随机访问存储器(RAM)。
22.如权利要求20所述的主机结构适配器,其特征在于:所述远程密钥管理器被启动来通过以下操作来检查远程密钥的有效性,所述操作包括:
确定在发送队列(SQ)上邮送的描述符是否是用于非数据操作的绑定描述符;
如果所述邮送的描述符不是绑定描述符,那么针对正常数据传送操作,诸如正常发送、RDMA写操作以及RDMA读操作进行处理;
如果所述邮送的描述符是绑定描述符,那么确定所述“存储器窗口”是否是无效的;
如果所述“存储器窗口”不是无效的,那么记录所述“存储器窗口”被移动,并且对所述主机***的主机存储器执行写操作以移动所述“存储器窗口”;
如果所述“存储器窗口”是无效的,那么对所述主机***的主机存储器执行写操作以破坏所述“存储器窗口”;
搜索所有使用所述“存储器窗口”的未处理RDMA操作,以标识使用过所述“存储器窗口”的远程密钥;
如果使用过所述“存储器窗口”的远程密钥被标识了,则使所述远程密钥无效,直到所有远程密钥都被无效为止;
如果任何远程密钥都没有被标识,则完成使所有远程密钥的无效,并且返回到空闲状态;以及
如果所有的远程密钥都没有被无效,那么返回以便搜索所有使用所述“存储器窗口”的未处理RDMA操作,直到所有的远程密钥被标记为“无效的”为止,从而使得任何新的远程密钥或者新的工作队列对(WQP)都不可以进入并且使用所述“存储器窗口”。
23.如权利要求22所述的主机结构适配器,其特征在于:所述远程密钥管理器在来自所述SQ微引擎请求密钥无效时被启动,以便通过以下操作来使远程密钥无效,所述操作包括:
启动虚拟接口(VI)的存储器PD和提供给SQ的PD之间的保护范围(PD)比较;
如果存储器PD与提供给SQ的PD不匹配,则跳过对用于所述VI的远程密钥的处理,并且确定是否所有的VI都被处理了;以及
如果存储器PD与提供给SQ的PD匹配,则读取远程密钥,并且启动顺序地针对所有与用于密钥无效的所述VI相关联的远程密钥的远程密钥比较。
24.如权利要求23所述的主机结构适配器,其特征在于:所述远程密钥管理器启动通过以下操作对与所述VI相关联的所有远程密钥的远程密钥比较,所述操作包括:
从远程密钥存储器读取第一远程密钥并将其与提供给SQ的密钥进行比较;
如果所述第一远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第一远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第一远程密钥的有效位;
从远程密钥存储器读取第二远程密钥并且将其与提供给SQ的密钥进行比较;
如果所述第二远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第二远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第二远程密钥的有效位;
从远程密钥存储器读取第三远程密钥并且将其与提供给SQ的密钥进行比较;
如果所述第三存储器远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第三远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第三远程密钥的有效位;
从远程密钥存储器读取最后的远程密钥,并将其与提供给SQ的密钥进行比较;
如果所述最后的远程密钥与提供给SQ的密钥不匹配,则移动以确定是否所有的VI都被处理;以及
如果所述最后的远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的最后的远程密钥的有效位,并确定是否所有的VI都被处理。
25.一种用于在主机***上安装的主机结构适配器中检查如下远程密钥的有效性的方法,所述远程密钥对应于未处理的远程直接存储器访问(RDMA)操作,包括:
确定要在发送队列(SQ)上加以处理的任意虚拟接口(VI)是否是用于非数据操作的绑定描述符;
如果被邮送的描述符不是绑定描述符,则针对正常数据传送操作进行处理;
如果所述邮送的描述符是绑定描述符,那么确定所述“存储器窗口”是否是无效的;
如果所述“存储器窗口”不是无效的,那么记录所述“存储器窗口”被移动,并且对所述主机***的主机存储器执行写操作以移动所述“存储器窗口”;
如果所述“存储器窗口”是无效的,那么对所述主机***的主机存储器执行写操作以破坏所述“存储器窗口”;
搜索所有使用所述“存储器窗口”的未处理RDMA操作,以标识使用过所述“存储器窗口”的远程密钥;
如果使用过所述“存储器窗口”的远程密钥被标识了,则使所述远程密钥无效,直到所有远程密钥都被无效为止;
如果任何远程密钥都没有被标识,则完成所有远程密钥的无效,并且返回到空闲状态;以及
如果所有的远程密钥都没有被无效,那么返回以便搜索所有使用所述“存储器窗口”的未处理RDMA操作,直到所有的远程密钥被标记为“无效的”为止,从而使得任何新的远程密钥或者新的工作队列对(WQP)都不可以进入并且使用所述“存储器窗口”。
26.如权利要求25所述的方法,其特征在于:所述远程密钥通过以下步骤被无效,所述步骤包括:
启动虚拟接口(VI)的存储器PD和提供给SQ的PD之间的保护范围(PD)比较;
如果存储器PD与提供给SQ的PD不匹配,则跳过对用于所述VI的远程密钥的处理,并且确定是否所有的VI都被处理了;以及
如果存储器PD与提供给SQ的PD匹配,则读取远程密钥,并且启动顺序地针对所有与用于密钥无效的所述VI相关联的远程密钥的远程密钥比较。
27.如权利要求26所述的方法,其特征在于:用于与所述VI相关联的所有远程密钥的所述远程密钥比较通过以下步骤加以执行,所述步骤包括:
从远程密钥存储器读取第一远程密钥并将其与提供给SQ的密钥进行比较;
如果所述第一远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第一远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第一远程密钥的有效位;
从远程密钥存储器读取第二远程密钥并且将其与提供给SQ的密钥进行比较;
如果所述第二远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第二远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第二远程密钥的有效位;
从远程密钥存储器读取第三远程密钥并且将其与提供给SQ的密钥进行比较;
如果所述第三存储器远程密钥与提供给SQ的密钥不匹配,则移动以检查下一个远程密钥;
如果所述第三远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的第三远程密钥的有效位;
从远程密钥存储器读取最后的远程密钥,并将其与提供给SQ的密钥进行比较;
如果所述最后的远程密钥与提供给SQ的密钥不匹配,则移动以确定是否所有的VI都被处理;以及
如果所述最后的远程密钥与提供给SQ的密钥匹配,则清除对应于远程密钥存储器中的最后的远程密钥的有效位,并确定是否所有的VI都被处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/816,344 US6917987B2 (en) | 2001-03-26 | 2001-03-26 | Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications |
US09/816,344 | 2001-03-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1640089A true CN1640089A (zh) | 2005-07-13 |
CN100579108C CN100579108C (zh) | 2010-01-06 |
Family
ID=25220334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN02810710.1A Expired - Lifetime CN100579108C (zh) | 2001-03-26 | 2002-02-21 | 一种远程密钥验证的方法和主机结构适配器 |
Country Status (11)
Country | Link |
---|---|
US (1) | US6917987B2 (zh) |
EP (1) | EP1374521B1 (zh) |
KR (1) | KR100555394B1 (zh) |
CN (1) | CN100579108C (zh) |
AT (1) | ATE379912T1 (zh) |
AU (1) | AU2002238136A1 (zh) |
CA (1) | CA2442447A1 (zh) |
DE (1) | DE60223791D1 (zh) |
HK (1) | HK1060947A1 (zh) |
TW (1) | TWI239187B (zh) |
WO (1) | WO2002078254A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104704491A (zh) * | 2012-10-02 | 2015-06-10 | 甲骨文国际公司 | 用于集群内通信的硬件消息队列 |
CN108141357A (zh) * | 2015-10-15 | 2018-06-08 | 罗伯特·博世有限公司 | 用于在网络中生成秘密的电路装置 |
CN109691039A (zh) * | 2018-01-16 | 2019-04-26 | 华为技术有限公司 | 一种报文传输的方法及装置 |
CN116226027A (zh) * | 2023-05-04 | 2023-06-06 | 苏州浪潮智能科技有限公司 | 数据传输***、方法、装置、通信设备及存储介质 |
Families Citing this family (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6917987B2 (en) | 2001-03-26 | 2005-07-12 | Intel Corporation | Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications |
US6948004B2 (en) * | 2001-03-28 | 2005-09-20 | Intel Corporation | Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism |
US7013353B2 (en) * | 2001-03-30 | 2006-03-14 | Intel Corporation | Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem |
US7543290B2 (en) * | 2001-04-11 | 2009-06-02 | Mellanox Technologies Ltd. | Multiple queue pair access with single doorbell |
US7068667B2 (en) * | 2001-04-27 | 2006-06-27 | The Boeing Company | Method and system for path building in a communications network |
US20020198927A1 (en) * | 2001-06-21 | 2002-12-26 | International Business Machines Corporation | Apparatus and method for routing internet protocol frames over a system area network |
US20030018828A1 (en) * | 2001-06-29 | 2003-01-23 | International Business Machines Corporation | Infiniband mixed semantic ethernet I/O path |
US7320033B2 (en) * | 2001-07-27 | 2008-01-15 | Intel Corporation | Dynamic local drive and printer sharing |
US7194540B2 (en) * | 2001-09-28 | 2007-03-20 | Intel Corporation | Mechanism for allowing multiple entities on the same host to handle messages of same service class in a cluster |
US6854032B2 (en) * | 2001-12-04 | 2005-02-08 | Sun Microsystems, Inc. | System for accessing a region of memory using remote address translation and using a memory window table and a memory region table |
US20030131128A1 (en) * | 2002-01-10 | 2003-07-10 | Stanton Kevin B. | Vlan mpls mapping: method to establish end-to-traffic path spanning local area network and a global network |
US7404012B2 (en) * | 2002-05-06 | 2008-07-22 | Qlogic, Corporation | System and method for dynamic link aggregation in a shared I/O subsystem |
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 |
US7447778B2 (en) | 2002-05-06 | 2008-11-04 | Qlogic, Corporation | System and method for a shared I/O subsystem |
US7328284B2 (en) * | 2002-05-06 | 2008-02-05 | Qlogic, Corporation | Dynamic configuration of network data flow using a shared I/O subsystem |
US7356608B2 (en) * | 2002-05-06 | 2008-04-08 | Qlogic, Corporation | System and method for implementing LAN within shared I/O subsystem |
WO2003105413A1 (en) * | 2002-06-11 | 2003-12-18 | Bigbangwidth Inc. | Method and apparatus for switched physical alternate links in a packet network |
US7149821B2 (en) * | 2003-01-29 | 2006-12-12 | International Business Machines Corporation | Predictably defining input/output configurations for environments employing fabrics |
US7502826B2 (en) * | 2003-03-27 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Atomic operations |
US7565504B2 (en) * | 2003-03-27 | 2009-07-21 | Hewlett-Packard Development Company, L.P. | Memory window access mechanism |
US7010633B2 (en) * | 2003-04-10 | 2006-03-07 | International Business Machines Corporation | Apparatus, system and method for controlling access to facilities based on usage classes |
US20040230695A1 (en) * | 2003-05-15 | 2004-11-18 | Anschutz Thomas Arnold | Methods, systems, and computer program products for processing traffic in a communication network based on registration of an access session and/or application flow and specifying a treatment for the access session and/or application flow traffic |
US20040252685A1 (en) * | 2003-06-13 | 2004-12-16 | Mellanox Technologies Ltd. | Channel adapter with integrated switch |
US7565454B2 (en) * | 2003-07-18 | 2009-07-21 | Microsoft Corporation | State migration in multiple NIC RDMA enabled devices |
US8037281B2 (en) * | 2005-04-07 | 2011-10-11 | Advanced Micro Devices, Inc. | Miss-under-miss processing and cache flushing |
US7787892B2 (en) | 2005-10-05 | 2010-08-31 | Via Technologies, Inc. | Method and apparatus for adaptive multi-stage multi-threshold detection of paging indicators in wireless communication systems |
US20090265485A1 (en) * | 2005-11-30 | 2009-10-22 | Broadcom Corporation | Ring-based cache coherent bus |
KR100689606B1 (ko) * | 2006-11-10 | 2007-03-02 | (주)해석 | 공공 하수라인의 오니제거형 배수구조 |
US8499029B1 (en) * | 2008-12-23 | 2013-07-30 | International Business Machines Corporation | Management of process-to-process communication requests |
US8521895B2 (en) * | 2008-12-23 | 2013-08-27 | International Business Machines Corporation | Management of application to application communication requests between data processing systems |
US9098354B2 (en) | 2008-12-23 | 2015-08-04 | International Business Machines Corporation | Management of application to I/O device communication requests between data processing systems |
US8240473B2 (en) * | 2008-12-23 | 2012-08-14 | Honda Motor Co., Ltd. | Headliner packaging system with hinged clamp |
US9009214B2 (en) | 2008-12-23 | 2015-04-14 | International Business Machines Corporation | Management of process-to-process inter-cluster communication requests |
US8122301B2 (en) * | 2009-06-30 | 2012-02-21 | Oracle America, Inc. | Performing remote loads and stores over networks |
US8589603B2 (en) * | 2010-08-30 | 2013-11-19 | International Business Machines Corporation | Delaying acknowledgment of an operation until operation completion confirmed by local adapter read operation |
US8589610B2 (en) * | 2011-05-31 | 2013-11-19 | Oracle International Corporation | Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor |
US8804752B2 (en) | 2011-05-31 | 2014-08-12 | Oracle International Corporation | Method and system for temporary data unit storage on infiniband host channel adaptor |
US8484392B2 (en) | 2011-05-31 | 2013-07-09 | Oracle International Corporation | Method and system for infiniband host channel adaptor quality of service |
US20120331243A1 (en) | 2011-06-24 | 2012-12-27 | International Business Machines Corporation | Remote Direct Memory Access ('RDMA') In A Parallel Computer |
US9021123B2 (en) | 2011-08-23 | 2015-04-28 | Oracle International Corporation | Method and system for responder side cut through of received data |
US8879579B2 (en) | 2011-08-23 | 2014-11-04 | Oracle International Corporation | Method and system for requester virtual cut through |
US8832216B2 (en) * | 2011-08-31 | 2014-09-09 | Oracle International Corporation | Method and system for conditional remote direct memory access write |
US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
WO2013086380A1 (en) | 2011-12-08 | 2013-06-13 | Oracle International Corporation | Techniques for more efficient usage of memory - to - cpu bandwidth |
US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US9384072B2 (en) | 2012-12-20 | 2016-07-05 | Oracle International Corporation | Distributed queue pair state on a host channel adapter |
US9191452B2 (en) | 2012-12-20 | 2015-11-17 | Oracle International Corporation | Method and system for an on-chip completion cache for optimized completion building |
US9069633B2 (en) | 2012-12-20 | 2015-06-30 | Oracle America, Inc. | Proxy queue pair for offloading |
US8937949B2 (en) | 2012-12-20 | 2015-01-20 | Oracle International Corporation | Method and system for Infiniband host channel adapter multicast packet replication mechanism |
US9256555B2 (en) | 2012-12-20 | 2016-02-09 | Oracle International Corporation | Method and system for queue descriptor cache management for a host channel adapter |
US9069485B2 (en) | 2012-12-20 | 2015-06-30 | Oracle International Corporation | Doorbell backpressure avoidance mechanism on a host channel adapter |
US9148352B2 (en) | 2012-12-20 | 2015-09-29 | Oracle International Corporation | Method and system for dynamic repurposing of payload storage as a trace buffer |
US9069705B2 (en) | 2013-02-26 | 2015-06-30 | Oracle International Corporation | CAM bit error recovery |
US8850085B2 (en) | 2013-02-26 | 2014-09-30 | Oracle International Corporation | Bandwidth aware request throttling |
US9336158B2 (en) | 2013-02-26 | 2016-05-10 | Oracle International Corporation | Method and system for simplified address translation support for static infiniband host channel adaptor structures |
US9430390B2 (en) | 2013-09-21 | 2016-08-30 | Oracle International Corporation | Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications |
US9898414B2 (en) | 2014-03-28 | 2018-02-20 | Oracle International Corporation | Memory corruption detection support for distributed shared memory applications |
US10025823B2 (en) | 2015-05-29 | 2018-07-17 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
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 |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US10055358B2 (en) | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US20180004681A1 (en) * | 2016-07-02 | 2018-01-04 | Intel Corporation | Systems, Apparatuses, and Methods for Platform Security |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
US10275180B2 (en) | 2017-05-08 | 2019-04-30 | Samsung Electronics Co., Ltd. | Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch |
US10452547B2 (en) | 2017-12-29 | 2019-10-22 | Oracle International Corporation | Fault-tolerant cache coherence over a lossy network |
US10467139B2 (en) | 2017-12-29 | 2019-11-05 | Oracle International Corporation | Fault-tolerant cache coherence over a lossy network |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625768B1 (en) * | 2000-03-29 | 2003-09-23 | Intel Corporation | Test bus architecture |
JP2001344153A (ja) * | 2000-05-30 | 2001-12-14 | Nec Corp | マルチプロセッサシステムのキャッシュメモリ制御装置 |
US6778548B1 (en) * | 2000-06-26 | 2004-08-17 | Intel Corporation | Device to receive, buffer, and transmit packets of data in a packet switching network |
US6775719B1 (en) * | 2000-09-28 | 2004-08-10 | Intel Corporation | Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network |
US20020071450A1 (en) * | 2000-12-08 | 2002-06-13 | Gasbarro Dominic J. | Host-fabric adapter having bandwidth-optimizing, area-minimal, vertical sliced memory architecture and method of connecting a host system to a channel-based switched fabric in a data network |
US6947970B2 (en) * | 2000-12-19 | 2005-09-20 | Intel Corporation | Method and apparatus for multilevel translation and protection table |
US6578122B2 (en) * | 2001-03-01 | 2003-06-10 | International Business Machines Corporation | Using an access key to protect and point to regions in windows for infiniband |
US6917987B2 (en) | 2001-03-26 | 2005-07-12 | Intel Corporation | Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications |
US6948004B2 (en) * | 2001-03-28 | 2005-09-20 | Intel Corporation | Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism |
US7013353B2 (en) * | 2001-03-30 | 2006-03-14 | Intel Corporation | Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem |
-
2001
- 2001-03-26 US US09/816,344 patent/US6917987B2/en not_active Expired - Lifetime
-
2002
- 2002-02-21 DE DE60223791T patent/DE60223791D1/de not_active Expired - Lifetime
- 2002-02-21 EP EP02704454A patent/EP1374521B1/en not_active Expired - Lifetime
- 2002-02-21 KR KR1020037012508A patent/KR100555394B1/ko not_active IP Right Cessation
- 2002-02-21 AT AT02704454T patent/ATE379912T1/de not_active IP Right Cessation
- 2002-02-21 AU AU2002238136A patent/AU2002238136A1/en not_active Abandoned
- 2002-02-21 CN CN02810710.1A patent/CN100579108C/zh not_active Expired - Lifetime
- 2002-02-21 CA CA002442447A patent/CA2442447A1/en not_active Abandoned
- 2002-02-21 WO PCT/US2002/005858 patent/WO2002078254A2/en active IP Right Grant
- 2002-03-18 TW TW091105065A patent/TWI239187B/zh not_active IP Right Cessation
-
2004
- 2004-05-28 HK HK04103838A patent/HK1060947A1/xx not_active IP Right Cessation
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104704491A (zh) * | 2012-10-02 | 2015-06-10 | 甲骨文国际公司 | 用于集群内通信的硬件消息队列 |
CN104704491B (zh) * | 2012-10-02 | 2018-04-10 | 甲骨文国际公司 | 用于集群内通信的硬件消息队列 |
CN108141357A (zh) * | 2015-10-15 | 2018-06-08 | 罗伯特·博世有限公司 | 用于在网络中生成秘密的电路装置 |
CN108141357B (zh) * | 2015-10-15 | 2022-03-18 | 罗伯特·博世有限公司 | 用于在网络中生成秘密的电路装置 |
CN109691039A (zh) * | 2018-01-16 | 2019-04-26 | 华为技术有限公司 | 一种报文传输的方法及装置 |
CN109691039B (zh) * | 2018-01-16 | 2020-04-28 | 华为技术有限公司 | 一种报文传输的方法及装置 |
US11716409B2 (en) | 2018-01-16 | 2023-08-01 | Huawei Technologies Co., Ltd. | Packet transmission method and apparatus |
CN116226027A (zh) * | 2023-05-04 | 2023-06-06 | 苏州浪潮智能科技有限公司 | 数据传输***、方法、装置、通信设备及存储介质 |
CN116226027B (zh) * | 2023-05-04 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 数据传输***、方法、装置、通信设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20020184392A1 (en) | 2002-12-05 |
WO2002078254A3 (en) | 2002-12-19 |
KR100555394B1 (ko) | 2006-02-24 |
AU2002238136A1 (en) | 2002-10-08 |
WO2002078254A2 (en) | 2002-10-03 |
EP1374521A2 (en) | 2004-01-02 |
KR20030087025A (ko) | 2003-11-12 |
CA2442447A1 (en) | 2002-10-03 |
HK1060947A1 (en) | 2004-08-27 |
ATE379912T1 (de) | 2007-12-15 |
US6917987B2 (en) | 2005-07-12 |
CN100579108C (zh) | 2010-01-06 |
DE60223791D1 (de) | 2008-01-10 |
EP1374521B1 (en) | 2007-11-28 |
TWI239187B (en) | 2005-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1640089A (zh) | 用于NGIO/InfiniBandTM应用的远程密钥验证的方法和机制 | |
TWI331281B (en) | Method and apparatus for shared i/o in a load/store fabric | |
US9025495B1 (en) | Flexible routing engine for a PCI express switch and method of use | |
TWI292123B (en) | Method and computer-readable medium of allowing for single implementation of operations common to both kernel mode processing and user mode processing relative to the hardware adapter | |
CN1253802C (zh) | 计算机组件间直接传输数据的集线器链路 | |
JP4755391B2 (ja) | メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置 | |
CN1256681C (zh) | 从***设备向主计算机***传输中断的方法和装置 | |
WO2013136522A1 (ja) | 計算機システム及び計算機間のデータ通信方法 | |
CN1146804C (zh) | 快速16位分离事务i/o总线 | |
CN1536842A (zh) | 用于根据使用类来控制对设施的访问的装置、***和方法 | |
JP2004523035A (ja) | メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置 | |
US7315542B2 (en) | Handling and discarding packets in a switching subnetwork | |
CN1770110A (zh) | 对I/O完成进行无锁InfiniBandTM轮询的方法、***和存储介质 | |
CN1487418A (zh) | 远端直接存储器存取启用网络适配器的存储器管理卸载 | |
TW200937219A (en) | A network on chip | |
CN1667601A (zh) | 在逻辑分区之间共享网络i/o适配器的装置与方法 | |
US20070073824A1 (en) | Apparatus and method for acquiring identification information when a bus reset occurs | |
Saponara et al. | Design of an NoC interface macrocell with hardware support of advanced networking functionalities | |
US9846662B2 (en) | Chained CPP command | |
CN1199118C (zh) | 计算机*** | |
US9703739B2 (en) | Return available PPI credits command | |
US7107381B2 (en) | Flexible data transfer to and from external device of system-on-chip | |
CN100338593C (zh) | 在计算机部件之间设置改进接口的装置 | |
US7251248B2 (en) | Connection device | |
CN1673993A (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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20100106 |
|
CX01 | Expiry of patent term |