CN102549555A - 主机存储器的基于通知协议的端点高速缓存 - Google Patents

主机存储器的基于通知协议的端点高速缓存 Download PDF

Info

Publication number
CN102549555A
CN102549555A CN200980161851.1A CN200980161851A CN102549555A CN 102549555 A CN102549555 A CN 102549555A CN 200980161851 A CN200980161851 A CN 200980161851A CN 102549555 A CN102549555 A CN 102549555A
Authority
CN
China
Prior art keywords
memory address
mainframe memory
endpoint device
data
notice
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
CN200980161851.1A
Other languages
English (en)
Other versions
CN102549555B (zh
Inventor
M.克劳泽
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN102549555A publication Critical patent/CN102549555A/zh
Application granted granted Critical
Publication of CN102549555B publication Critical patent/CN102549555B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Abstract

响应于从端点设备(14)接收到针对主机存储器地址的内容状态的改变的通知的请求,与所述主机存储器地址相关联地登记所述端点设备(14)。响应于所述主机存储器地址的内容状态的改变,向所述端点设备(14)发送表明所述主机存储器地址已改变内容状态的通知。响应于由所述端点设备(14)接收到所述通知,通过数据规划(42)确定与所述主机存储器地址的内容状态的改变相关联的语义,并且根据所确定的语义由所述端点设备(14)执行动作。

Description

主机存储器的基于通知协议的端点高速缓存
背景技术
计算机系统通常包括中央处理单元(CPU)、高速设备(例如主机高速缓冲存储器和图形控制器)、以及外围总线(例如外围部件互连(PCI)或PCI Express(PCIe)总线)和片上集成外围部件(例如网络接口控制器、通用串行总线端口、闪速存储器、以及音频设备)。一些计算机系统具有主机接口,其包括存储器控制器集线器和输入/输出(I/O)控制器集线器。存储器控制器集线器经由一致性(coherent)互连把CPU连接到计算机系统的各高速部件,所述一致性互连可以由前端总线或串行接口来实施,比如QPI(Intel® QuickPath互连)或cHT(一致性超传输)。I/O控制器集线器经由集线器互连把存储器控制器集线器连接到外围总线和集成外围部件。外围部件根据外围总线协议与I/O控制器集线器进行通信。举例来说,在现代Intel®集线器架构中,外围部件通常经由PCI通信协议或PCIe通信协议与CPU进行通信。
主机高速缓冲存储器(也被称作“高速缓存”)是本地高速存储器,其通过从低级别高速缓存或主存储器取出并存储其位置与所请求的数据片段邻近的数据而提高系统性能。主机高速缓冲存储器通常包括状态比特,其指示每条高速缓存线路的状态以便在整个计算机系统中保持数据一致性。举例来说,根据“MOESI”高速缓存一致性协议,所述状态比特指示相关联的高速缓存线路的状态(例如自有(O)、修改(M)、排他(E)、共享(S)、或无效(I))。
在许多计算机系统中,利用I/O操作将数据从CPU传送到外围部件,所述I/O操作通常涉及把数据移动到主存储器,并且随后由CPU或外围部件从主存储器中读取所述数据。举例来说,在把输出数据从CPU传送到I/O设备时,CPU通常创建输出数据、将输出数据传送到主存储器,并且把指向输出数据的指针(也被称作描述符)存储在已知的位置。CPU随后发出“门铃”事件,其向I/O设备通知已经准备好发送所述输出数据。响应于所述门铃事件,I/O设备使用所述指针来把输出数据从主存储器传送到I/O设备。新的处理器和I/O集线器架构除了主存储器之外还允许从高速缓存直接进行传送。
需要的是在减少CPU参与的情况下提供改进的I/O通信的装置和方法。
发明内容
在一个方面中,本发明的特征在于方法,根据所述方法,响应于从端点设备接收到针对主机存储器地址的内容状态的改变的通知的请求,与所述主机存储器地址相关联地登记所述端点设备。响应于所述主机存储器地址的内容状态的改变,向端点设备发送表明所述主机存储器地址已改变内容状态的通知。响应于由端点设备接收到所述通知,通过数据规划(schema)确定与所述主机存储器地址的内容状态的改变相关联的语义,并且由端点设备根据所确定的语义来执行动作。
本发明的特征还在于可操作用来实施上述的方法的装置、以及存储使计算机实施上述的方法的计算机可读指令的计算机可读介质。
附图说明
图1是包括连接到端点设备的主机CPU的计算机系统架构的一个实施例的框图。
图2是根据通知协议的一个实施例的主机高速缓冲存储器的端点高速缓存的方法的一个实施例的流程图。
图3是计算机系统架构的一个实施例的框图。
图4是应用(application)与端点设备之间的计算机软件栈的一个实施例的图示。
图5是计算机系统架构的一个实施例的框图。
图6A是根据通知协议的一个实施例的高速缓存代理与存储器代理之间的交互图。
图6B是根据通知协议的一个实施例的高速缓存代理与存储器代理之间的交互图。
图7示出根据通知协议的一个实施例的无效化消息的一个示例性实施例。
图8是包括连接到图形处理单元的CPU的计算机系统布置的一个实施例的框图。
图9是包括连接到网络接口控制器的CPU的计算机系统布置的一个实施例的框图。
图10是包括连接到多个端点设备的CPU的计算机系统布置的一个实施例的框图。
图11是包括连接到数据存储系统的CPU的计算机系统布置的一个实施例的框图。
图12是包括连接到多个存储设备的多个CPU的计算机系统布置的一个实施例的框图。
图13是包括虚拟化设备驱动器、管理程序和端点设备的I/O虚拟化架构的一个实施例的图示。
图14是包括经由互连而连接到多个存储设备的多个CPU的计算机系统架构的一个实施例的框图。
具体实施方式
在下面的描述中,相同的附图标记被用来标识相同的元件。此外,附图意图以图示的方式说明示例性实施例的主要特征。附图不意图描绘实际实施例的每项特征和所描绘元件的相对尺寸,并且不是按比例绘制的。
I. 术语的定义
“计算机”是根据临时地或永久地存储在计算机可读介质上的计算机可读指令来处理数据的任何机器、设备、或装置。“操作系统”是计算机系统的软件部件,其管理并协调各项任务的执行以及计算和硬件资源的共享。“软件应用”(也被称作软件、应用、计算机软件、计算机应用、程序、以及计算机程序)是计算机可以解释并执行来执行一项或多项特定任务的指令集合。“数据文件”是耐久地存储数据以供软件应用使用的信息块。
中央处理单元(CPU)是可以执行软件应用的电子电路。CPU可以包括一个或多个处理器(或处理核心)。“主机CPU”是控制其他设备或为其他设备提供服务的CPU,所述其他设备包括I/O设备和其他外围设备。
术语“处理器”指代通常在单个芯片上的电子电路,其执行操作,包括但不限于数据处理操作、控制操作、或者数据处理操作和控制操作这二者。
术语“机器可读介质”指代能够携带可由机器(例如计算机)读取的信息的任何物理介质。适于有形地包括这些指令和数据的存储设备包括但不限于所有形式的非易失性计算机可读存储器,例如包括半导体存储器设备(比如EPROM、EEPROM和闪速存储器设备)、磁盘(比如内部硬盘和可移除硬盘)、磁光盘、DVD-ROM/RAM、以及CD-ROM/RAM。
存储器地址的“内容状态”指的是存储在计算机可读介质中的所述存储器地址处的内容的状态。
“主机高速缓冲存储器”指的是存储来自主存储器的数据的拷贝以便减少CPU的访问等待时间的高速存储器。主机高速缓冲存储器可以是单个存储器或分布式存储器。举例来说,主机高速缓冲存储器可以存在于以下地点中的一项或多项:在CPU芯片上;在存储器控制器前方;以及在I/O集线器内。所有这些高速缓存都可以被一致性地保持并被用作DMA操作的来源/目的地。
“端点”是由通信实体在通信链路的一端所暴露出的接口。
“端点设备”是处于通信链路的一端的物理硬件实体。
“I/O设备”是连接到主机CPU但是与主机CPU分开并分立的物理硬件实体。I/O设备可以位于或者可以不位于与主机CPU相同的电路板上。I/O设备可以位于或者可以不位于与主机CPU相同的硬件管芯或封装上。
“PCIe高速缓存代理”(PCA)是通过利用Rcoh协议的PCIe管理存储器的高速缓存的客户端子系统。
“PCIe存储器代理”(PMA)是通过利用Rcoh协议的PCIe管理可高速缓冲存储器的导出的服务子系统。
受限一致性(Rcoh)是支持在PCIe上的主机高速缓冲存储器的高速缓存的PCIe协议。
如在这里所使用的那样,术语“包括”意味着包括但不限于,以及术语“包括”意味着包括但不限于。术语“基于”意味着至少部分地基于。
II. 总览
在这里所描述的实施例在减少CPU参与的情况下提供改进的I/O通信。这些实施例利用了主机高速缓冲存储器的基于通知协议的端点高速缓存以便在I/O通信中减少CPU参与。所述基于高速缓存的通知协议使I/O等待时间和所消耗的I/O带宽能够被显著地减少。另外,该协议还允许主机软件与端点设备之间的直接信令。
图1示出包括连接到端点设备14的主机CPU 12的计算机系统架构10的一个实施例。主机CPU 12包括一个或多个处理核心16、主机高速缓冲存储器18、主机互连20、以及主机接口22。
主机互连20互连(一个或多个)处理核心16和主机高速缓冲存储器18。主机互连20可以通过多种互连技术中的任一种来实施。举例来说,在一些实施例中,主机互连20可以通过纵横交换结构来实施。
主机接口22把主机CPU 12连接到端点设备14。主机接口22可以通过多种不同的互连机制来实施。举例来说,根据Intel®集线器架构,主机接口20由通过集线器互连而链接的存储器控制器集线器和I/O控制器集线器来实施。存储器控制器集线器经由一致性互连(例如前端总线或串行互连)把主机CPU 12连接到计算机系统的更高速部件,所述一致性互连被用来经由一致性协议交换信息。I/O控制器集线器把存储器控制器集线器连接到更低速设备,其中包括诸如端点设备14之类的外围设备。
一般来说,外围设备根据外围总线协议与I/O控制器集线器进行通信。外围设备中的一些可以根据标准外围通信协议与I/O控制器集线器进行通信,比如PCI通信协议或PCIe通信协议。外围总线协议通常是包括事务层、路由层、链路层和物理层的多层通信协议。事务层通常包括形成、排序、以及处理具有系统互连报头的分组的各种协议引擎。示例性的事务层协议引擎类型包括一致性引擎、中断引擎、以及I/O引擎。分组被提供到路由层,该路由层例如利用基于目的地的路由(其基于路由表)在路由层内将分组从来源路由到目的地。路由层将分组传递到链路层。链路层在两个直接连接的代理之间可靠地传送数据并且提供流控制。链路层还使设备之间的物理信道能够被虚拟化(例如虚拟化成多个消息类别和虚拟网络),这允许在多条虚拟信道之间对所述物理信道进行多路复用。物理层例如经由点对点互连在两个直接连接的代理之间传送信息。
其他外围设备(包括端点设备14)被配置成根据通知协议与I/O集线器控制器进行通信,所述通知协议使这些外围部件能够高速缓存主机高速缓冲存储器18的各条线路,并且能够被通知所述高速缓存线路的内容状态的任何后续改变。所述通知协议使端点设备14能够高速缓存数据而不是对于每次访问通过外围总线传送所述数据,从而对于一些使用模型减少了I/O等待时间和所消耗的带宽。I/O带宽消耗的减少还减少主机存储器带宽消耗。所述通知协议还使主机软件能够通过更新高速缓存线路而不是执行所编程的I/O(PIO)操作来用信号通知端点设备14,从而避免高的软件开销以及同步和流控制问题。
根据所述通知协议进行通信的实体通常包括实施标准外围总线协议(例如PCIe)的经修改的版本的相应代理。除了实施标准外围总线协议的功能之外,这些代理还被配置成管理由端点高速缓存的数据。举例来说,在一些实施例中,端点14包括管理在端点14内高速缓存的数据的高速缓存代理,并且路由部件和/或主机CPU 12包括跟踪主机高速缓冲存储器18的哪些线路已被高速缓存的存储器代理。这些代理通常可以位于端点设备14、路由部件、以及主机CPU 12的多种不同部件中的任何部件中。在一些实施例中,主机CPU 12把存储器代理包括在主机接口22中。
在一些实施例中,所述代理执行PCIe事务,所述PCIe事务包括使端点登记对于特定高速缓存线路(主机存储器地址)的兴趣以及使主机CPU向端点通知特定高速缓存线路的内容状态已发生改变的机制。在这些实施例中的一些中,所述通知机制通过对于连线(wire)协议的较小修改来实施,其允许端点14中的高速缓存代理向主机CPU 12中的存储器代理通知,所述设备对特定高速缓存线路感兴趣。在这些实施例中的一些中,高速缓存代理在与存储器代理的链路连接上的事务中设置比特。存储器代理把所设置的比特解释为针对向端点设备14中的高速缓存代理通知特定主机存储器地址的内容状态的任何改变(例如内容的改变)的请求,其中所述特定主机存储器地址被标识在所述事务中所描述的相关联的DMA访问请求(例如读取或写入)中。作为响应,存储器代理登记端点设备以便与所述主机存储器地址的内容状态的改变相关联地通知。当存储器代理确定所述特定高速缓存线路已被更新时(例如已经向其写入新值),存储器代理识别出已经登记了对于该高速缓存线路的兴趣的所有实体,并且为对于其内容状态发生了改变的高速缓存线路感兴趣的每个端点生成相应的通知消息。所述消息通常简单地指示,所述特定高速缓存线路的内容的状态已经改变。
图2示出根据基于通知协议的使用模型的一个实施例的主机高速缓冲存储器的端点高速缓存的方法的一个实施例。根据该方法,存储器代理响应于接收到来自端点设备14的请求而与主机存储器地址相关联地登记端点设备(图2,框24),其中所述请求是针对所述主机存储器地址的内容状态的改变进行通知。响应于所述主机存储器地址的内容状态的改变,存储器代理向端点设备14发送表明所述主机存储器地址已经改变了内容状态的通知(图2,框26)。响应于由端点设备14接收到所述通知,高速缓存代理通过数据规划确定与所述主机存储器地址的内容状态的改变相关联的语义,并且端点设备14根据所确定的语义执行动作(图2,框28)。
正如下面详细地解释的那样,可以基于所述通知协议所允许的轻量型通知来实施多种多样的使用模型。举例来说,被配置成根据所述通知协议进行通信的一个或多个实体可以通过共享数据规划来协调其动作,所述共享数据规划把主机高速缓冲存储器中的地址集合与对主机存储器地址的内容状态的改变的通知给出含义的语义相关联。举例来说,对应于特定主机存储器地址的内容状态改变通知可以触发由接收实体执行以下动作中的任一项:前进到下一工作请求,获得下一存储器块以用于数据移动,前进到下一计算回合,以及返回计算的结果。各个使用模型可以采用对于给定数据规划所允许的一种或多种可能的语义;例如对于数据规划的一部分的更新翻译成语义A,而对于一个不同部分的更新翻译成语义B。使用模型可以利用宽范围的语义来加速计算、减少处理器/存储器总线利用等等,这除了其他好处之外还可以导致更高效的操作和潜在的电力节省。
图3示出附加地包括内核模式部件32和用户模式部件38的计算机系统架构10(图1)的一个实施例30。内核模式部件包括设备驱动器34和库36。用户模式部件38包括读取数据规划42的应用40,所述数据规划42把语义与主机存储器地址相关联。可以以多种不同格式中的任一种来规定数据规划42。在一些实施例中,以扩展标记语言(XML)格式来规定数据规划42。数据规划42可以是适用于多种应用环境的标准化规划,或者其对于特定应用环境可以是唯一的。
应用40通过经由库36所提供的应用编程接口(API)调用函数或服务来实施特定使用模型。作为响应,所述库生成由设备驱动器34读取的一系列API调用。在这一过程中,设备驱动器34利用数据规划42的基地址来对端点设备14进行编程。端点设备14读取数据规划42,以便确定分别与表明特定主机存储器地址的内容状态已发生改变的通知相关联的语义。举例来说,在一些实施例中,数据规划42可以指示:与基地址的偏移地址X相关联的内容状态改变通知意味着,应当在该地址处读取数据规划42,并且应当采取动作A1;与基地址的偏移地址Y相关联的内容状态改变通知意味着,数据规划42已被更新,并且应当采取动作A2;与基地址的偏移地址Z相关联的内容状态改变通知意味着,应当把计算结果写回到基地址的偏移地址Z,并且向另一个端点设备通知所述结果已准备好用于处理。
图4是由所述通知协议实现的应用40与端点设备14之间的概念计算机软件栈43的一个实施例的图示。如图4中所示,所述通知协议提供了对应于通过应用40以及通过传统操作系统部件的直接硬件访问的多个选项,所述传统操作系统部件比如是套接字服务44、文件/块服务45、网络协议栈46、以及存储协议栈47。所述通知的这些特征提供了消除软件开销的新机会,并且允许新的通信范例(例如并行及无锁定通信)。另外,所述通知协议使主数据路径中的传统设备驱动器能够由一个或多个管理设备驱动器48、49来替代,所述管理设备驱动器代表提供更直接的硬件访问的规范端点设备定义(例如以USB/类别驱动器风格的方式)。
III. 示例性通知协议
A. 总览
正如上面所解释的那样,所述通知协议使外围端点设备能够高速缓存主机高速缓冲存储器18的各条线路,并且能够被通知所述高速缓存线路的内容状态的任何后续改变。本章节描述一种示例性通知协议(在这里被称作“受限一致性”或“Rcoh”协议),其对应于PCIe协议的增强的版本(例如参见PCI-ExpressTM Base Specification version 2.0,2006年12月20日,其全部内容被结合在此以作参考)。
Rcoh协议允许跨越PCIe互连的存储器的高速缓存。具体来说,使端点能够高速缓存主机存储器高速缓存线路(在这里也被称作“线路”),并且在某一实体(例如CPU或设备)对所述端点已经高速缓存的线路进行写入的情况下能够通知所述端点。虽然所述协议允许多个端点同时高速缓存任何给定线路,但是所述协议受到的限制在于,决不为端点给出对于线路的排他所有权,因此单凭所述协议无法协调多个写入者的同时更新。
所述Rcoh协议由端点中的PCIe高速缓存代理(PCA)和主机系统中的PCIe存储器代理(PMA)来实施。PCA是端点中的通过PCIe管理对于存储器的高速缓存的客户端子系统。PMA是主机中的通过PCIe导出可高速缓存的存储器的服务子系统。Rcoh协议提供了当高速缓存线路被修改时的通知服务。对于读取,PCA向具有相关联的PMA的存储器空间范围发送Rcoh读取,从而请求高速缓存线路或“线路”的拷贝。PMA将所请求的线路返回给PCA,并且记录PCA具有所述线路的高速缓存的拷贝。稍后,如果另一实体更新所述线路,则PMA经由Rcoh无效化消息通知所述PCA,因此PCA可以无效化所述线路的其拷贝。类似的通知服务对于写入也存在,其中如果线路被更新,则对所述线路进行写入的PCA可以请求稍后被通知。
Rcoh是受限一致性协议,这是因为决不为PCA给出对于线路的排他所有权。Rcoh协议允许多个PCA同时分别具有任何给定线路的共享拷贝,但是Rcoh协议不协调由多个写入者执行的更新。具有PCA的端点被允许在任何时间对线路进行写入,而不管该PCA是否具有对应于该线路的未决通知。如果需要多个写入者之间的协调,则必须通过落在本说明书范围之外的其他协议来实现。
Rcoh通知协议定义了Rcoh读取和Rcoh写入,其在大多数方面分别类似于PCIe存储器读取和PCIe存储器写入。最明显的差异在于,Rcoh读取/写入导致在未来更新了所高速缓存的线路的情况下,经由主机发送Rcoh无效化消息来通知端点。在一些实施例中,所述协议支持两个高速缓存线路尺寸(CLS),即64字节和128字节。对于每个CLS的支持是可选的,对于主机和端点来说都是如此。
Rcoh协议支持可选地是规范性的,并且适用于根复合体(RC)、交换机、以及具有端点功能的部件。Rcoh路由支持不适用于PCIe到PCI/PCI-X桥。Rcoh协议是针对设备对主机存储器请求而构建的,并且只有在端点、RC和所有中间路由元件都支持必要的Rcoh能力的情况下才应当由软件实现。
具有Rcoh请求者能力的端点必须支持生成Rcoh读取请求、Rcoh写入请求或全部二者。这样的端点必须还支持接收Rcoh无效化消息,并且相应地无效化所高速缓存的任何线路。PCA管理在端点内高速缓存的数据。
具有Rcoh路由能力的路由元件(交换机和RC)必须支持对于Rcoh读取和Rcoh写入请求的正确转发。这样的路由元件还必须正确地转发Rcoh无效化消息,其包括针对单个端点的定向版本和针对给定根端口之下的所有部件的广播版本。下游端口必须阻止尝试去往下游的任何Rcoh读取或Rcoh写入请求,从而在AER(高级错误报告;参见下文)中报告新的Rcoh出口受阻错误。
具有Rcoh完成者能力的根复合体(RC)必须支持接收Rcoh读取和Rcoh写入请求,并且适当地生成Rcoh无效化消息。RC或主机中的一个或多个PMA跟踪哪些线路已被端点高速缓存。
支持Rcoh协议的软件发现哪些部件支持Rcoh协议以及其支持哪些CLS。如果主机、端点和路由元件支持必要的Rcoh能力,则软件使端点能够使用Rcoh协议,从而规定要使用哪个CLS。
B. 基本Rcoh协议
图5是包括主机处理器、主机存储器、主机内部结构、根端口、交换机、以及端点的示例性计算机系统架构50的一个实施例的框图。图5示出这些元件的简化视图并且示出其如何被互连以提供用于理解Rcoh协议如何操作的情境。在上图中,端点X、端点Z和RCIE 0分别包含PCA。根复合体包含PMA。
图6A是根据通知协议的一个实施例的高速缓存代理与存储器代理之间的交互图。在上图中示出基本Rcoh协议。对于左侧示出的读取的情况:(1)PCA利用Rcoh读取请求从主机存储器请求线路的拷贝;(2)PMA在完成中返回所述线路并且记录该PCA具有拷贝;以及(3)如果PMA稍后需要PCA无效化其拷贝,则PMA利用Rcoh无效化消息来通知PCA。
图6B示出根据通知协议的一个实施例的高速缓存代理与存储器代理之间的交互图。对于右侧示出的写入的情况:(1)PCA利用Rcoh写入请求将其对于线路的拷贝写入到主机存储器;(2)PMA记录该PCA具有对应于该线路的未决通知;以及(3)如果稍后必要的话,PMA利用Rcoh无效化消息通知PCA。
如果所高速缓存的线路被某一实体(例如CPU或设备)写入,或者如果PMA简单地将不再跟踪该线路的内容状态,则PMA将发送Rcoh无效化消息。图7示出Rcoh无效化消息52的一个示例性实施例。Rcoh无效化消息52中的EV比特指示,所述消息是由于收回(EV是设置的)还是由于所述线路被写入(EV是清除的)而被发送的。一旦PMA发送了对应于线路的Rcoh无效化,则除非其接收到新的Rcoh读取或Rcoh写入请求,否则其将不发送对应于该线路的附加Rcoh无效化。
如果具有对应于线路的未决通知的请求者发送了对应于该相同线路的新的Rcoh读取或Rcoh写入请求,则请求者通常无法确定其对于该线路接收到的后续Rcoh无效化是对应于最近的Rcoh读取/写入请求还是对应于前一个。由于Rcoh无效化的无响应性质,Rcoh协议自身不足以使PCA实施一致性直写(write-through)高速缓存。
C. Rcoh协议概要
下面描述Rcoh协议的规则和要求再加上一些独特的要求。
□ Rcoh读取和Rcoh写入请求被视为分别是PCIe存储器读取和PCIe存储器写入请求的附加形式。
□ 除非另有明确地声明,否则PCIe存储器读取请求的所有要求都适用于Rcoh读取请求。
○ 除了类型字段码之外,Rcoh读取请求TLP格式与PCIe存储器读取请求TLP格式完全相同。
○ 正如Rcoh系统CLS所确定的那样,Rcoh读取请求必须访问不多于单条高速缓存线路。完成者必须检查这种错误情况,并且除非完成者检测到更高优先级的错误,否则将其作为完成者中止来处理。允许部分高速缓存线路读取,其中包括零长度读取。
○ 如果完成者将Rcoh读取请求处理为不可校正错误或劝告性非致命错误,则PMA不可设置对应于该请求的通知服务。
○ Rcoh读取请求的排序和流控制规则与存储器读取请求的完全相同。
○ Rcoh读取请求的完成与PCIe存储器读取请求的完成完全相同。
□ 除非另有明确地声明,否则PCIe存储器写入请求的所有要求都适用于Rcoh写入请求。
○ 除了类型字段码之外,Rcoh写入请求TLP格式与PCIe存储器写入请求TLP格式完全相同。
○ 正如Rcoh系统CLS所确定的那样,Rcoh写入请求必须访问不多于单条高速缓存线路。完成者必须检查这种错误情况,并且除非完成者检测到更高优先级的错误,否则将其作为完成者中止来处理。
○ 如果完成者将Rcoh写入请求处理为不可校正错误,则PMA不可设置对应于该请求的通知服务。
○ Rcoh写入请求的排序、流控制和数据中毒规则与PCIe存储器写入请求的完全相同。
○ 请求者不可生成对应于MSI或MSI-X中断的Rcoh写入请求。完成者不可将Rcoh写入请求接受为合法中断。
○ 如果完成者将Rcoh写入接收到所述完成者在该处将把存储器写入处理为MSI或MSI-X中断的位置,则除非完成者检测到更高优先级的错误,否则必须把这种情况处理为不受支持请求(UR)。
○ Rcoh写入请求不可被处理为多播TLP。
□ 对于Rcoh读取和Rcoh写入请求,地址必须是正确的类型,正如地址类型(AT)字段所指示的那样。正确的类型取决于是否正在使用翻译代理(TA)。参见Address Translation Services(ATS)Specification,Revision 1.0(可以从www.pcisig.com/specifications/iov/ats/获得),其全文被结合在此以作参考。
○ 如果正在使用TA,则所述地址必定是已翻译地址。PCA请求者必须支持ATS以便获取及使用已翻译地址。
○ 如果没有在使用TA,则所述地址必定是默认/未翻译地址。
□ 对于交换机或RC,当Rcoh读取或Rcoh写入请求的目标是离开下游端口时,出口端口必须将该请求处理为Rcoh出口受阻错误(参见下文)。对于Rcoh读取请求,出口端口必须还返回具有UR的完成状态的完成,并且如果Rcoh出口受阻错误的严重性是非致命的,则必须将这种情况处理为劝告性非致命错误,正如在PCIe规范中所描述的那样。
□ 如果多功能设备中的任何端点功能支持Rcoh请求者能力,则该设备中的所有功能必须正确地解码所形成的Rcoh读取或Rcoh写入请求,并且将其所接收到的任何这样的请求处理为不受支持请求(UR)。
□ 如果具有PCA的端点功能经历常规重置或FLR,则所述PCA必须将其已经高速缓存的任何高速缓存线路无效化。
D. Rcoh协议排序考虑
Rcoh读取请求具有与PCIe存储器读取请求相同的排序要求,并且Rcoh写入请求具有与PCIe存储器写入请求相同的排序要求。对应于Rcoh读取的完成具有与对应于PCIe存储器读取的完成相同的排序要求。
事务排序规则允许Rcoh无效化消息传递读取完成。在逻辑上,Rcoh请求者可能假设,对应于Rcoh读取请求的完成将总是在与相同的Rcoh读取请求相关联的Rcoh无效化到达之前到达。然而,由于Rcoh无效化可能传递完成,因此请求者不可做出这一假设。
由于请求者不可假设完成总是在相关联的Rcoh无效化之前到达,因此对应于Rcoh读取请求的完成者被允许按照任一种顺序来发送所述完成及其相关联的Rcoh无效化。
Rcoh协议自身足以使PCA实施一致性只读高速缓存。对于其中PMA具有未决Rcoh读取并且对应于该读取的Rcoh无效化在相关联的完成之前到达的情况,PMA不应当在数据到达时对其高速缓存。然而,对于一些使用模型,在所返回的数据到达时立即对其进行使用可能仍然是有意义的。
E. Rcoh软件配置
在一些实施例中,Rcoh协议支持两个高速缓存线路尺寸(CLS),即64字节和128字节。对于每个CLS的支持是可选的,对于根复合体和端点来说都是如此。系统所使用的CLS由主机确定,并且由适用的根端口和RCRB中的Rcoh系统CLS字段来指示。指示Rcoh完成者支持的所有根端口和RCRB都应当指示相同的CLS,否则结果是未定义的。在任何操作系统正在运行的同时,主机不应当改变Rcoh系统CLS,否则结果是未定义的。
支持Rcoh协议的端点可以支持任一个或者全部两个CLS,并且经由Rcoh-64请求者受支持和Rcoh-128请求者受支持能力比特来指示其支持哪个。在使能每个Rcoh请求者之前,软件应当确保相关联的Rcoh请求者CLS控制比特被配置成匹配Rcoh系统CLS,否则结果是未定义的。仅支持一个CLS的Rcoh请求者被允许将其Rcoh请求者CLS控制比特硬连线到对应值。
除非其Rcoh请求者使能控制比特是清除的并且没有高速缓存的线路,否则软件不应当改变请求者中的Rcoh请求者CLS控制比特的值;否则,结果是未定义的。
除非给定的Rcoh请求者与主机之间的所有路由元件都支持Rcoh路由能力,否则软件不应当使能给定的Rcoh请求者。否则,不具有Rcoh路由能力的任何路由元件都将把任何接收到的Rcoh请求处理为错误形式的TLP。
F. 能力和控制
PCIe设备能力2寄存器中的四个新比特允许软件发现端点中的Rcoh请求者能力、路由元件中的Rcoh路由能力、以及主机中的Rcoh完成者能力。
表1:设备能力2寄存器。
设备控制2寄存器中的两个新比特允许软件使请求者能够使用Rcoh协议,从而规定要使用哪个CLS。下游端口阻止尝试去往下游的任何Rcoh读取或Rcoh写入请求,从而在AER中报告新的Rcoh出口受阻错误。
Figure 856320DEST_PATH_IMAGE002
表2:设备控制2寄存器。
IV. 主机高速缓冲存储器使用模型的基于示例性通知协议的端点高速缓存
A. 介绍
在这里所描述的通知协议的实施例提供多种不同的机会来消除软件开销,实现新的通信范例(例如并行、无锁定通信),并且实现利用通过使用所述通知协议而成为可能的更直接的硬件访问的新的解决方案(例如使用规范设备定义(例如USB/类别驱动器风格)),从而消除主数据路径中的传统设备驱动器。本章节描述通过在这里所描述的通知协议的实施例而实现的几种示例性使用模型。
B. 使用模型-图形
图8是包括连接到图形处理单元58的主机CPU 12的一个实施例56的计算机系统布置54的一个实施例的框图。在该实施例中,主机CPU 12的主机接口22(参见图1)包括存储器控制器60和I/O集线器62。I/O集线器62包括PCIe存储器代理(PMA),以及图形处理单元58包括PCIe高速缓存代理(PCA),二者经由上述的Rcoh通知协议彼此通信。
在操作中,图形处理单元58根据数据规划来登记对于存储器高速缓存线路集合的兴趣,其中用户模式应用使所述存储器高速缓存线路集合可用于图形处理单元58。应用程序向图形处理单元58发出工作请求。取代经由所编程的I/O通过主机CPU I/O端口向存储器以及从存储器传送数据(其需要鸣响门铃),所述应用经由Rcoh协议通知消息直接访问图形处理单元58。这允许所述应用不断地生成工作请求,并且不断地检查规定的高速缓存线路,以便查看图形处理单元58是否完成了工作,就好像图形处理单元58完全可用于所述应用那样。然而,在这种操作模式下,图形处理单元58的资源决不暴露于用户模式应用,从而消除在别的情况下可能由应用写入到错误的存储器地址而导致的失败的风险。代之以,用户模式应用写入到高速缓存线路以指示,其已经完成了工作请求或者其已经完成了对于图形处理单元58写入到规定主机存储器地址的结果数据的使用。举例来说,在一些实施例中,所述数据规划规定,与I/O集线器62中的PMA所写入的高速缓存线路相关联的语义和意味着所述主机存储器地址空闲的语义相关联。每当PMA写入到所述主机存储器地址时,该PMA就生成指示高速缓存线路缓冲器已被释放的Rcoh通知,并且图形处理单元58可以根据所述数据规划而自由地对其进行使用或改变其用途。这样,图形处理单元58可以表现得就像完全可用于用户模式应用那样而不必暴露其资源。
在另一示例性实施例中,数据规划可以规定,所述通知意味着应用已经完成了对于高速缓存线路的使用,并且图形处理单元58应当向所述高速缓存线路写入新数据。响应于由图形处理单元58接收到所述通知,图形处理单元58发送针对向主机存储器地址写入数据的请求。响应于由PMA接收到针对写入数据的所述请求,PMA把所述数据写入到主机存储器地址,并且作为响应向应用发送表明所述主机存储器地址的内容状态已发生改变的通知。响应于由应用接收到所述通知,所述应用发送针对读取被写入到所述主机存储器地址的数据的请求。
可以定义其他数据规划以实现主机CPU 56与图形处理单元58之间的多种其他交互和行为。
C. 使用模型-高速I/O
图9是包括连接到网络接口控制器68的主机CPU 12的一个实施例66的计算机系统布置64的一个实施例的框图。在该实施例中,CPU 12的主机接口22(参见图1)包括存储器控制器70和I/O集线器72。I/O集线器72包括PCIe存储器代理(PMA),并且网络接口控制器68包括PCIe高速缓存代理(PCA),二者经由上述的Rcoh通知协议彼此通信。
在操作中,网络接口控制器68根据数据规划来登记对于存储器高速缓存线路集合的兴趣,其中用户模式应用使所述存储器高速缓存线路集合可用于网络接口控制器68。应用程序向网络接口控制器68发出工作请求。取代必须移动大量情境(存储网络状态信息的存储器高速缓存线路集合)以理解连接的状态以及如何对其进行更新,应用经由Rcoh协议通知消息直接访问网络接口控制器68。这允许应用仅仅移动发生了改变的高速缓存线路,而不必下拉整个情境。举例来说,在这种操作模式下,应用向网络接口控制器提供指向当前正在其上进行工作的情境元素以及指示所述应用在正被传送的字节流中所处的位置的序列号的工作68请求指针。应用将所述指针和序列号值存储在由数据规划所规定的特定高速缓存线路中,并且网络接口控制器68只需要下拉包含这两个数据值的特定高速缓存线路。这样,减少了对于每次I/O所消耗的存储器带宽,这是因为应用只需要向网络接口控制器68通知所述数据被置于何处。网络接口控制器68不必请求DMA读取以便检索针对完成的工作请求,也不必请求后续DMA读取以便检索实际数据。代之以,网络接口控制器68能够直接对数据流进行DMA读取,从而允许网络接口控制器68更高效且快速地传送数据。
在这种操作模式下,网络接口控制器68接收关于有关数据已被更新的Rcoh通知,并且将所述通知解释为针对从由所述规划指定的高速缓存线路读取所述指针和序列号值的工作请求。基于这些值,网络接口控制器68可以确定要移动的数据块。
举例来说,在一些实施例中,所述数据规划规定,与特定主机存储器地址相关联的语义意味着,主机高速缓冲存储器包含指向某一数据存储位置的指针,并且将要移动从所述指针偏移的固定尺寸的数据块(例如1千字节块)。网络接口控制器68跟踪各指针,并且每次它看到新的指针值时,网络接口控制器68自动地读取从该指针偏移的固定尺寸的数据块,并且发送该块。在一个示例性实施例中,PMA从应用接收针对向主机存储器地址写入所述指针的请求,以及作为响应,PMA将指针写入到所述主机存储器地址,并且向网络接口控制器68发送表明所述主机存储器地址的内容状态已发生改变的通知。响应于由PCA接收到所述通知,网络接口控制器68向PMA发送针对读取所述主机存储器地址的请求。响应于接收到所述读取请求,PMA从所述主机存储器地址向网络接口控制器68发送所述指针的拷贝,并且向应用发送表明所述主机存储器地址已发生改变的通知。响应于由PCA接收到所述指针的拷贝,网络接口控制器68移动从该指针偏移的固定尺寸的数据块。
可以定义其他数据规划以实现主机CPU 66与网络接口控制器单元68之间的多种其他交互和行为。
D. 使用模型-嵌入式设备
图10是包括连接到四个嵌入式端点设备78、80、82、84的主机CPU 12的一个实施例76的计算机系统布置74的一个实施例的框图。在该实施例中,主机CPU 12的主机接口22(参见图1)包括存储器控制器86和I/O集线器88。嵌入式设备78、80被直接连接到I/O集线器72,并且嵌入式设备82、84经由交换机90被间接连接到I/O集线器88。I/O集线器72和交换机90包括相应的PCIe存储器代理(PMA),并且嵌入式设备78-84中的每个包括相应的PCIe高速缓存代理(PCA)。嵌入式设备78-84经由上述的Rcoh通知协议与I/O集线器88进行通信。
在操作中,嵌入式设备78-84中的每个根据数据规划来登记对于存储器高速缓存线路集合的兴趣。Rcoh通知协议连同数据规划一起可以实现嵌入式设备之间的多种交互,而无需支持对等交互,并且无需管理供应商关系。特别是,所有嵌入式设备78-84简单地使用在数据规划中定义的数据结构,并且经由对于主机存储器地址的更新,根据在数据规划中规定的语义利用Rcoh协议彼此通信。这允许各设备彼此交互而无需显示保密信息。
在一个示例性实施例中,所述数据规划规定,与特定主机存储器地址相关联的语义意味着所述主机存储器地址包含指向将要处理的数据的指针,并且经处理的数据将被写回到另一主机存储器地址。端点设备78-84中的第一端点设备可以登记对于特定主机存储器地址的兴趣。PMA可以从端点设备78-84中的第二端点设备接收针对把所述指针写入到所述特定主机存储器地址的请求。作为响应,PMA把指针写入到所述主机存储器地址,与该主机存储器地址相关联地登记第二端点设备,并且向第一端点设备发送表明所述主机存储器地址的内容状态已发生改变的通知。响应于由第一端点设备接收到所述通知,第一端点设备上的PCA发送针对读取所述主机存储器地址的请求。响应于接收到针对读取主机存储器地址的所述请求,PMA从所述主机存储器地址向第一端点设备发送所述指针的拷贝,并且向与该主机存储器地址相关联地登记的每个实体发送关于所述主机存储器地址已发生改变的相应通知。响应于由第一端点设备接收到所述指针的拷贝,第一端点设备处理由所述指针索引的数据以产生经处理的数据,并且发送针对将所述经处理的数据写入到其他主机存储器地址的请求。PMA接收针对将经处理的数据写入到其他主机存储器地址的所述请求。作为响应,PMA把经处理的数据写入到所述其他主机存储器地址,并且向与该其他主机存储器地址相关联地登记的每个实体发送关于所述其他主机存储器地址已发生改变的相应通知。
在前面的段落中描述的交互可以被使用并且可选地扩展来协调嵌入式端点设备78-84之间的多种不同交互。举例来说,在一个示例性实施例中,一个嵌入式以太网设备接收一帧。所述以太网设备确定该帧被加密,并且基于数据规划把指向该帧的指针写入到与一个嵌入式加密设备相关联地登记的适当的主机存储器地址。响应于所得到的内容状态改变通知,所述加密设备读取所述指针,检索所述帧,解密该帧,并且把已解密帧写入到由数据规划所设计的主机存储器地址。经由Rcoh通知消息向所述以太网设备通知所述已解密帧已经被写入到所指定的主机存储器地址。此时,所述以太网设备可以把所述已解密帧转交给另一嵌入式设备,将其上交给用户模式应用,或者通过网络将其发送出去。
可以定义其他数据规划以实现主机CPU 76与嵌入式端点设备78-84之间的多种其他交互和行为。
E. 使用模型-远地存储器附着
图11是包括连接到存储器设备96的主机CPU 12的一个实施例94的计算机系统布置92的一个实施例的框图。存储器设备96例如可以是固态存储器,其被配置为将设备可见虚拟地址映射到物理地址的输入/输出存储器管理单元(IOMMU)。主机接口22(图1)包括存储器控制器98和I/O集线器100。存储器设备96包括经由互连104连接到I/O集线器100的I/O端口102,所述互连104例如可以是基于点对点PCIe交换的拓扑或者是光源注入互连。I/O集线器72包括PCIe存储器代理(PMA),并且存储器设备96包括PCIe高速缓存代理(PCA)。存储器设备96还包括在逻辑上被划分成功能(功能0,…,功能N)的集合的存储器空间106,其根据远地存储器规范而实现单独的或共享的分配或访问控制。
在一个示例性实施例中,存储器设备96根据数据规划来登记对于存储器高速缓存线路集合(包括特定的主机存储器地址)的兴趣,所述数据规划建立共享存储器段,从而使得多个分立的一致性域或多个过程使用所述共享存储器以作为通信介质。与其他使用模型一样,所述数据规划使语义与给定更新相关联。CPU 94可以更新特定主机存储器地址。响应于表明特定主机存储器地址已被更新的通知,存储器设备96可以从所述存储器地址读取数据,并且根据与所述通知相关联的语义把所读取的数据发送到另一CPU。
在计算机系统布置92的一个示例性实施例中,多个主机CPU(例如具有刀片服务器的形式)被附着到基于PCIe交换的拓扑,并且远地存储器被向上导出到每个服务器以作为存储器映射的I/O空间,使得处理器可以经由加载-存储范例访问该存储器。所述处理器使用数据移动器技术,从而通过数据移动器或者被编程来执行实际数据传送的DMA主引擎(例如I/O设备)将数据拷贝入/拷贝出远地存储器。与上述的嵌入式设备使用模型一样,当一个服务器更新存储器时,自动地将通知向下生成到运行该远地存储器的设备。当所述设备接收到内容状态改变通知时,与所述通知相关联的一种示例性语义是从生成所述通知的服务器读取数据,并且随后将该数据发送到另一服务器。这样,所述远地存储器不仅充当共享存储器段,而且还在没有处理器参与的情况下充当消息传递接口。
F. 使用模型-分布式应用
图12是包括连接到多个存储设备116、118、120、122、124、126的多个CPU 112、114的计算机系统布置110的一个实施例的框图。CPU 112、114中的每个可以是相应簇节点的部件。存储设备116-126可以是专用的或共享的PCIe附属存储设备。CPU 112、114通过共享互连128(例如共享PCIe结构)被彼此连接并且被连接到存储设备116-126。存储设备116-126中的每个包括相应的PCIe存储器代理(PMA),并且CPU 114、116中的每个包括相应的PCIe高速缓存代理(PCA)。
计算机系统布置110对应于使用上述的远地存储器附着使用模型的另一实例。在该情况下,不再需要在CPU 112、114之间必须具有高速簇互连。代之以,CPU 112、114可以都使用Rcoh通知机制来彼此通信,并且当存储器改变相应的其中一个存储设备时可以在CPU 112、114之间进行代理,以便实施由控制数据规划规定的交互。
Rcoh通知机制避免了消息传递开销,并且消除了复杂的通信范例。这种方法允许能够由多个节点访问基于高速固态设备或忆阻器的存储。在操作中,应用触及存储器位置以便导致发送出Rcoh通知,并且各存储设备在没有进一步软件参与的情况下拉动应用存储器。所述存储设备确定应当向哪个CPU通知内容状态的改变,并且向适当的节点发出通知。这种方法还允许可选地直接放置到节点存储器中或者等待后续存储读取。
Rcoh通知方法消除了复杂的通信信道配置和管理。它还消除了阻止达成低等待时间消息交换的缩放瓶颈(例如过程/线程调度),消除了软件开销和维护,并且在实现了数据持久性的同时简化了通信,从而降低了发生故障或硬件失败的几率(例如通过较低的CAPEX/OPEX)。
G. 使用模型-虚拟化
图13是包括访客操作系统(OS)上的虚拟化设备驱动器132(VDD)、管理程序134、以及端点设备136的I/O虚拟化架构130的一个实施例的图示。虚拟化设备驱动器132和管理程序134在包括PCIe高速缓存代理(PCA)的主机上操作,并且端点设备136包括PCIe存储器代理(PMA)。
在该实施例中,虚拟化设备驱动器132向端点设备136暴露出访客存储器(假设IOMMU可用于隔离/翻译)。特别是,虚拟化设备驱动器132暴露出规范的虚拟化设备表示。该表示可以是主数据路径元件的实际的/工业标准存储器布局,从而焦点是在工作请求定义上。非主数据路径被保持在管理程序134内,管理程序134除了其他标准管理程序任务之外还处理资源管理、错误处理、以及硬件访问控制。虚拟化设备驱动器132防止直接暴露访客内的特定于设备的功能,并且防止直接暴露访客内的特定于设备的资源。Rcoh通知方法使端点设备136能够读取及处理工作请求从而按照需要翻译成特定于设备的。Rcoh通知方法避免需要访客OS来执行设备驱动器。另外,不存在将要管理或集成的软件。
在操作中,虚拟化设备驱动器132向Rcoh可访问已暴露工作队列产生规范的虚拟工作请求/张贴。向工作队列的张贴根据数据规划而触发内容状态改变,并且触发对应的Rcoh协议通知。端点设备136刷新存储器以获取虚拟化工作队列条目138(VWQE)。所述端点设备将VWQE变换成特定于设备的工作队列条目140(WQE)。端点设备136对访客存储器执行WQE DMAr/DMAw。VDD管理通道142被用来与管理程序134进行交互。所述管理程序包括特定于独立硬件供应商(IHV)的管理设备驱动器144(IHVM),其被用来访问特定于设备的硬件结构和服务。
在访客迁移期间,虚拟化设备驱动器132以规范的形式保持访客I/O资源。所有存储器和控制都被迁移到新的目标。在该目标处,虚拟化设备驱动器管理通道142被用来把目标的访客信息(包括I/O访客存储器)绑定到目标硬件。IHVM 144与管理程序134和VDD 132相结合地工作来提供所有特定于设备的配置。
如上所述,Rcoh通知方法允许端点设备通过Rcoh通知将其资源导出到访客OS,其中所述Rcoh通知具有在数据规划(例如以太网规划)中定义的语义。在访客OS上执行的应用根据所述数据规划与端点设备136进行通信,以便操纵数据或者控制端点设备136(例如导致移动以太网帧或移动存储缓冲器)。Rcoh通知协议抽离了端点设备136的底层硬件。端点设备136简单地登记对于在数据规划中规定的有关主机存储器地址的兴趣,而无需导出其所有硬件资源。这允许在访客OS上执行的应用直接访问端点设备136(就好像设备驱动器正操作在访客OS上一样)而无需将设备驱动器置于访客中。代之以,应用与端点设备136的规范表示进行通信。当应用更新在数据规划中定义的特定主机存储器地址时,端点设备136已被配置成获知,以规范形式当该地址已被操纵时,端点设备136执行特定任务(例如从以太网生出特定事务)。
H. 使用模型-检查点重启
图14是包括经由互连168被连接到多个存储设备156、158、160、162、164、166的多个CPU 152、154的计算机系统架构150的一个实施例的框图。在所示实施例中,存储设备156-162是非一致性固态存储器设备。存储设备164、166通常由存储阵列实施。存储设备156-166中的每个包括相应的PCIe存储器代理(PMA),并且CPU 152、154中的每个包括PCIe高速缓存代理(PCA)。
在操作中,CPU 152、154在特定应用上并行操作。周期性地取得CPU 152、154中的每个中的应用的执行状态的快照。每个快照被存储在非一致性固态存储器设备156-162的相应一个中。CPU 152、154中的每个的固态存储器视图按照需要被使得可用于其他CUP,这是通过将所述固态存储设备配置成在另一个核心下的I/O设备而实现的。这允许另一CPU再填充其应用状态,这是通过中继事件以把另一CPU重新同步回到完全应用核心集合中而实现的。这使应用能够仅仅在有限时间段内的适度性能降低的情况下继续,而不是需要完全重启所有核心并且随后在状态复原时使所有应用核心都能够全速操作。
所有CPU 152、154一将相应的应用执行状态数据备份到本地固态存储设备156、158,CPU 152、154就可以恢复应用的执行。存储在固态存储设备156-162上的执行状态被异步地备份到安全的长期数据存储设备164、166。如果发生故障,则CPU可以从长期存储设备164、166读回(重启)对应于最近的快照的数据。Rcoh通知协议被用来将应用执行状态数据从固态存储器设备156-162传送到长期存储设备164、166。特别是,每个固态。
存储设备156-166利用Rcoh通知协议进行通信,以便把存储应用状态数据从固态存储设备156-162传送到长期存储设备164-166。在操作中,存储设备156-162中的每个根据数据规划来登记对于相应的主机存储器地址集合的兴趣。Rcoh通知协议与数据规划一起使存储应用状态数据能够从固态存储设备156-162被传送到长期存储设备164-166,而无需支持对等交互,并且无需管理供应商关系。代之以,所有存储设备156-162简单地使用在数据规划中定义的数据结构,并且经由对于主机存储器地址的更新,根据在数据规划中规定的语义利用Rcoh协议彼此进行通信。在这一过程中,固态存储设备156-162使用主机高速缓冲存储器把数据推送到长期存储设备164-166中,其中主机系统上的长期存储设备驱动器把数据写出到长期存储设备164、166的接口控制器。
I. 使用模型-电力管理
在一些实施例中,Rcoh协议被用来实施电力管理过程,其中主机CPU可以将其电力状态传送到一个或多个端点设备。在这些实施例中,数据规划规定,与一个或多个主机存储器地址相关联的语义意味着主机CPU正操作在一个或多个电力状态下。在操作中,端点设备登记对于由数据规划指定的主机存储器地址的兴趣。每当主机CPU确定是时候进入特定的其中一个电力状态时,主机CPU就更新与所述特定电力状态相关联的主机存储器地址。操作在主机CPU上的PMA向与经更新的主机存储器地址相关联地登记的每个端点设备发送通知。响应于接收到所述通知,每个端点设备根据主机处理器的操作的电力状态把所述通知翻译成动作,并且所述端点执行所述动作。
在一些实施例中,在数据规划中规定的每个主机存储器地址对应于一个不同的功能区域,或者代表一个主机或设备资源集合(产生更可伸缩的解决方案)。每个地址还可指示,什么程度的端点设备唤醒被暗示。举例来说,如果地址代表工作队列深度,则所述设备对于浅的深度可以执行部分唤醒,或者如果深度深的话则执行完全唤醒。电力管理规划还可以被联系到与外部链路相关联的电力节省。举例来说,如果所述设备仅仅部分苏醒,则外部链路可以操作在较低带宽速率下,而如果其完全苏醒,则所述设备可能希望把链路一直带到完全带宽。在一些实施例中,端点设备可选地写入到指示其正进入低电力状态的存储器位置。
在一些实施例中,在主机系统上执行的用户模式应用或操作系统在确定是用信号通知唤醒还是仅仅验证设备状态之前检查在数据规划中规定的存储器位置。当所述应用/OS变为激活时,它们更新先验的存储器地址,这导致唤醒所述设备的Rcoh通知被生成。
下面是该使用模型的优点。用户模式应用和操作系统可以不知晓特定于设备的控制结构;它们只需要理解存储器地址并且进行相应的更新。这对于虚拟化环境也是理想的,因为硬件细节不暴露于访客OS。这种方法不使处理器停顿(stall),处理器在别的情况下必须等待端点设备加电等等,以便完成诸如PIO写入之类的操作。这一使用模型是可伸缩的,因为可以从单个更新通知多个设备或者选择性地更新。这将允许复杂的系统调整其电力消耗,从而为顾客节省电力和金钱。Rcoh存储器地址还可以被用来理解哪个系统存储器被加电并且正由I/O设备访问。
V. 结论
在这里描述的实施例在减少CPU参与的情况下提供改进的I/O通信。这些实施例利用了主机高速缓冲存储器的基于通知协议的端点高速缓存,以便在I/O通信中减少CPU参与。所述基于高速缓存的通知协议使I/O等待时间和所消耗的I/O带宽能够被显著减少。另外,该协议还允许主机软件与端点设备之间的直接信令。
其他实施例在权利要求书的范围内。

Claims (20)

1. 一种方法,包括:
响应于从端点设备(14)接收到针对主机存储器地址的内容状态的改变的通知的请求,与所述主机存储器地址相关联地登记所述端点设备(14);
响应于所述主机存储器地址的内容状态的改变,向所述端点设备(14)发送表明所述主机存储器地址已改变内容状态的通知;以及
响应于由所述端点设备(14)接收到所述通知,通过数据规划(42)确定与所述主机存储器地址的内容状态的改变相关联的语义,并且根据所确定的语义由所述端点设备(14)执行动作。
2. 根据权利要求1所述的方法,其中,所述登记是响应于从所述端点设备(14)接收到访问请求而执行的,并且所述访问请求包括针对访问所述主机存储器地址的请求和针对所述通知的请求。
3. 根据权利要求2所述的方法,其中,所述访问请求包括针对读取存储在所述主机存储器地址中的数据的请求,并且所述方法还包括:响应于针对读取数据的所述请求,向所述端点设备(14)发送存储在所述主机存储器地址中的所述数据的拷贝;以及由所述端点设备(14)存储所述数据的拷贝。
4. 根据权利要求3所述的方法,还包括:在接收到所述访问请求的同时,从第二端点设备接收针对读取存储在所述主机存储器地址中的数据的第二请求;以及响应于针对读取数据的第二请求,向第二端点设备发送所述数据的第二拷贝;以及把所述数据的第二拷贝存储在第二端点设备中。
5. 根据权利要求3或4所述的方法,还包括:响应于接收到表明所述主机存储器地址已经改变内容状态的通知,使由所述端点设备(14)存储的所述数据的拷贝无效化。
6. 根据在前权利要求中的任何一项所述的方法,其中,所述访问请求包括针对向所述主机存储器地址写入数据的请求,并且所述方法还包括:响应于针对写入数据的所述请求,将数据写入到所述主机存储器地址。
7. 根据在前权利要求中的任何一项所述的方法,其中,各计算部件(78-82)根据对在所述数据规划(42)中规定的语义进行索引的已编程指令彼此进行通信,这是通过以下操作来实现的:发送针对向所述主机存储器地址进行写入的请求,接收从所述写入请求得到的所述主机存储器地址的内容状态的改变的通知,以及根据所述语义执行动作。
8. 根据权利要求7所述的方法,其中,所述确定包括:把响应于针对与所述数据规划(42)的第一部分相对应的一个或多个主机存储器地址的更新而接收到的通知翻译成第一语义,并且把响应于针对与所述数据规划(42)的第二部分相对应的一个或多个主机存储器地址的更新而接收到的通知翻译成第二语义。
9. 根据权利要求8所述的方法,其中,所述通知的翻译包括把所述通知翻译成从以下各项中选择的至少一个动作:前进到下一工作请求,获得下一存储器块以用于移动,前进到下一计算回合,以及返回计算的结果。
10. 根据在前权利要求中的任何一项所述的方法,其中,所述发送包括向与所述主机存储器地址相关联地登记的多个计算部件(78-82)中的每个发送表明所述主机存储器地址的内容状态已发生改变的相应通知。
11. 根据权利要求1-10中的任何一项所述的方法,其中,所述数据规划(42)规定,与所述主机存储器地址相关联的语义意味着所述主机存储器地址是空闲的;并且所述方法还包括:
从应用接收针对向所述主机存储器地址进行写入的请求,并且作为响应,向所述端点设备(58)发送表明所述主机存储器地址的内容状态已发生改变的通知;
响应于由所述端点设备(58)接收到所述通知,从所述端点设备(58)发送针对向所述主机存储器地址写入数据的请求;
响应于接收到由所述端点设备(58)发送的针对写入数据的所述请求,将数据写入到所述主机存储器地址,并且作为响应,向所述应用发送表明所述主机存储器地址的内容状态已发生改变的通知;
响应于由所述应用接收到所述通知,从所述应用发送针对读取被写入到所述主机存储器地址的数据的请求。
12. 根据权利要求1-10中的任何一项所述的方法,其中,所述数据规划(42)规定,与所述主机存储器地址相关联的语义意味着,所述主机存储器地址包含指向数据存储位置的指针并且将要移动从所述指针偏移的固定尺寸的数据块;并且所述方法还包括:
从应用接收针对将所述指针写入到所述主机存储器地址的请求,以及作为响应,把所述指针写入到所述主机存储器地址,并且向所述端点设备(68)发送表明所述主机存储器地址的内容状态已发生改变的通知;
响应于由所述端点设备(68)接收到所述通知,从所述端点设备(68)发送针对读取所述主机存储器地址的请求;
响应于从所述端点设备(68)接收到针对读取的所述请求,从所述主机存储器地址向所述端点设备(68)发送所述指针的拷贝,并且向所述应用发送表明所述主机存储器地址的内容状态已发生改变的通知;以及
响应于由所述端点设备接收到所述指针的拷贝,移动从所述指针偏移的固定尺寸的数据块。
13. 根据权利要求1-10中的任何一项所述的方法,其中,所述数据规划(42)规定,与所述主机存储器地址相关联的语义意味着,所述主机存储器地址包含指向要处理的数据的指针,并且将要把经处理的数据写回到另一主机存储器地址;并且所述方法还包括:
从第二端点设备(80)接收针对把所述指针写入到所述主机存储器地址的请求,以及作为响应,将所述指针写入到所述主机存储器地址,与所述主机存储器地址相关联地登记第二端点设备(80),并且向第一端点设备(78)发送表明所述主机存储器地址的内容状态已发生改变的通知;
响应于由第一端点设备(78)接收到所述通知,从第一端点设备(78)发送针对读取所述主机存储器地址的请求;
响应于接收到由第一端点设备(78)发送的针对读取的请求,从所述主机存储器地址向第一端点设备(78)发送所述指针的拷贝,并且向与所述主机存储器地址相关联地登记的每个实体发送表明所述主机存储器地址已发生改变的相应通知;
响应于由第一端点设备(78)接收到所述指针的拷贝,处理由所述指针索引的数据以产生经处理的数据,并且发送针对把经处理的数据写入到所述另一主机存储器地址的请求;以及
接收针对把经处理的数据写入到所述另一主机存储器地址的所述请求,以及作为响应,把所述经处理的数据写入到所述另一主机存储器地址,并且向与所述另一主机存储器地址相关联地登记的每个实体(78-82)发送表明所述另一主机存储器地址已发生改变的相应通知。
14. 根据权利要求1-10中的任何一项所述的方法,
还包括由第一处理器(94)更新所述主机存储器地址;
其中,所述确定包括把响应于所述主机存储器地址的更新而接收到的通知翻译成从第一处理器(94)读取数据的动作并且根据所确定的语义把所读取的数据发送到第二处理器,以及所述执行包括由所述端点设备(96)从第一处理器(94)读取所述数据并且把由所述端点设备(96)所读取的数据发送到第二处理器。
15. 根据权利要求1-10中的任何一项所述的方法,
还包括由操作在与共享存储器(116-126)相连的节点簇中的第一节点(112)上的应用的第一实例访问所述主机存储器地址;并且
其中,所述确定包括把响应于所述主机存储器地址的更新而接收到的通知翻译成更新存储在所述共享存储器中的数据的动作并且根据所确定的语义把表明所述共享存储器(116-126)的内容状态的改变的通知发送到操作在所述节点簇中的第二节点(114)上的所述应用的第二实例,以及所述执行包括更新存储在所述共享存储器中的数据并且把表明所述共享存储器(116-126)的内容状态的改变的通知发送到所述应用的第二实例。
16. 根据权利要求1-10中的任何一项所述的方法,
还包括由与主机操作系统同时执行在共享主机计算系统上的访客操作系统更新所述主机存储器地址;并且
其中,所述确定包括根据所确定的语义把响应于所述主机存储器地址的更新而接收到的通知翻译成动作,以及所述执行包括由所述端点设备(136)执行所述动作。
17. 根据权利要求1-10中的任何一项所述的方法,
还包括:把应用的当前执行状态存储在本地存储设备(156)中,响应于所述当前执行状态的存储而由所述本地存储设备(156)写入到所述主机存储器地址,以及把所存储的执行状态的块写入到另一主机存储器地址;并且
其中,所述确定包括把响应于由所述本地存储设备(156)写入到所述主机存储器地址而接收到的通知翻译成从所述另一主机存储器地址读取所述应用的所存储的执行状态的块的动作,以及所述执行包括从所述另一主机存储器地址读取所述应用的所存储的执行状态的块。
18. 根据权利要求1-10中的任何一项所述的方法,其中,所述数据规划(42)规定,与所述主机存储器地址相关联的语义意味着主机处理器(12)正操作在特定电力状态下;
所述方法还包括由所述主机处理器(12)更新所述主机存储器地址;并且
其中,所述确定包括根据所述主机处理器(12)的操作的电力状态把响应于所述主机存储器地址的更新而接收到的通知翻译成动作,以及所述执行包括由所述端点设备(14)执行所述动作。
19. 一种装置,包括:
端点设备(14);
存储计算机可读指令的计算机可读介质;以及
耦合到所述计算机可读介质的数据处理器(12),其可操作用来执行所述指令,并且至少部分地基于所述指令的执行而可操作用来执行包括下述的操作:
响应于从所述端点设备(14)接收到针对主机存储器地址的内容状态的改变的通知的请求而与所述主机存储器地址相关联地登记所述端点设备(14);以及
响应于所述主机存储器地址的内容状态的改变,向所述端点设备(14)发送表明所述主机存储器地址已改变内容状态的通知;并且
其中,响应于由所述端点设备(14)接收到所述通知,所述端点设备可操作用来执行包括下述的操作:通过数据规划(42)确定与所述主机存储器地址的内容状态的改变相关联的语义,并且根据所确定的语义由所述端点设备(14)执行动作。
20. 至少一种计算机可读介质,具有在其中包括的计算机可读程序代码,所述计算机可读程序代码适于由计算机执行以实施包括下述的方法:
响应于从端点设备(14)接收到针对主机存储器地址的内容状态的改变的通知的请求,与所述主机存储器地址相关联地登记所述端点设备(14);
响应于所述主机存储器地址的内容状态的改变,向所述端点设备(14)发送表明所述主机存储器地址已改变内容状态的通知;以及
响应于由所述端点设备(14)接收到所述通知,通过数据规划(42)确定与所述主机存储器地址的内容状态的改变相关联的语义,并且根据所确定的语义由所述端点设备(14)执行动作。
CN200980161851.1A 2009-10-07 2009-10-07 主机存储器的基于通知协议的端点高速缓存 Expired - Fee Related CN102549555B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2009/059779 WO2011043769A1 (en) 2009-10-07 2009-10-07 Notification protocol based endpoint caching of host memory

Publications (2)

Publication Number Publication Date
CN102549555A true CN102549555A (zh) 2012-07-04
CN102549555B CN102549555B (zh) 2015-04-22

Family

ID=43857033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980161851.1A Expired - Fee Related CN102549555B (zh) 2009-10-07 2009-10-07 主机存储器的基于通知协议的端点高速缓存

Country Status (4)

Country Link
US (1) US8838907B2 (zh)
EP (1) EP2486487B1 (zh)
CN (1) CN102549555B (zh)
WO (1) WO2011043769A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714911A (zh) * 2013-12-13 2015-06-17 英特尔公司 至少部分地提供数据的至少一部分可供处理的至少一个指示
CN106533992A (zh) * 2014-03-25 2017-03-22 Dssd股份有限公司 用于全连接网格拓扑结构的高速pci架构路由
CN109997117A (zh) * 2016-12-28 2019-07-09 英特尔公司 用于将门铃合并在请求消息中的技术
CN110119374A (zh) * 2018-02-05 2019-08-13 三星电子株式会社 应用处理器、汽车电子处理器和计算装置
CN112106029A (zh) * 2018-05-31 2020-12-18 Arm有限公司 用于触发动作的装置和方法
CN112805949A (zh) * 2018-10-01 2021-05-14 华为技术有限公司 处理快照创建请求的方法以及存储设备

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7634584B2 (en) 2005-04-27 2009-12-15 Solarflare Communications, Inc. Packet validation in virtual network interface architecture
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US8116312B2 (en) 2006-02-08 2012-02-14 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US9948533B2 (en) 2006-07-10 2018-04-17 Solarflare Communitations, Inc. Interrupt management
EP2632109B1 (en) 2006-07-10 2017-05-10 Solarflare Communications Inc Data processing system and method therefor
US9686117B2 (en) 2006-07-10 2017-06-20 Solarflare Communications, Inc. Chimney onload implementation of network protocol stack
GB0621774D0 (en) 2006-11-01 2006-12-13 Level 5 Networks Inc Driver level segmentation
GB0723422D0 (en) 2007-11-29 2008-01-09 Level 5 Networks Inc Virtualised receive side scaling
GB0802126D0 (en) 2008-02-05 2008-03-12 Level 5 Networks Inc Scalable sockets
GB0823162D0 (en) 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions
US9256560B2 (en) 2009-07-29 2016-02-09 Solarflare Communications, Inc. Controller integration
US9210140B2 (en) 2009-08-19 2015-12-08 Solarflare Communications, Inc. Remote functionality selection
EP2309680B1 (en) 2009-10-08 2017-07-19 Solarflare Communications Inc Switching API
US10158702B2 (en) * 2009-11-15 2018-12-18 Mellanox Technologies, Ltd. Network operation offloading for collective operations
US8743877B2 (en) 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US9003053B2 (en) 2011-09-22 2015-04-07 Solarflare Communications, Inc. Message acceleration
US9600429B2 (en) 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
US10873613B2 (en) 2010-12-09 2020-12-22 Xilinx, Inc. TCP processing for devices
US9258390B2 (en) 2011-07-29 2016-02-09 Solarflare Communications, Inc. Reducing network latency
US9674318B2 (en) 2010-12-09 2017-06-06 Solarflare Communications, Inc. TCP processing for devices
US8996644B2 (en) 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US9384071B2 (en) 2011-03-31 2016-07-05 Solarflare Communications, Inc. Epoll optimisations
US8763018B2 (en) 2011-08-22 2014-06-24 Solarflare Communications, Inc. Modifying application behaviour
US20130173837A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for implementing pci express lightweight notification protocols in a cpu/memory complex
DE102012102198A1 (de) * 2012-03-15 2013-09-19 Fujitsu Technology Solutions Intellectual Property Gmbh Modulares Serversystem, I/O-Modul und Switching-Verfahren
US9391840B2 (en) 2012-05-02 2016-07-12 Solarflare Communications, Inc. Avoiding delayed data
US9391841B2 (en) 2012-07-03 2016-07-12 Solarflare Communications, Inc. Fast linkup arbitration
US10505747B2 (en) 2012-10-16 2019-12-10 Solarflare Communications, Inc. Feed processing
US8914550B2 (en) * 2013-03-15 2014-12-16 Freescale Semiconductor, Inc. System and method for transferring data between components of a data processor
US10742604B2 (en) 2013-04-08 2020-08-11 Xilinx, Inc. Locked down network interface
US9426124B2 (en) 2013-04-08 2016-08-23 Solarflare Communications, Inc. Locked down network interface
EP2809033B1 (en) 2013-05-30 2018-03-21 Solarflare Communications Inc Packet capture in a network
US10394751B2 (en) 2013-11-06 2019-08-27 Solarflare Communications, Inc. Programmed input/output mode
US20160275026A1 (en) * 2015-03-20 2016-09-22 Intel Corporation Weakly ordered doorbell
US20160371222A1 (en) * 2015-06-22 2016-12-22 Qualcomm Incorporated COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER
US10284383B2 (en) 2015-08-31 2019-05-07 Mellanox Technologies, Ltd. Aggregation protocol
US10521283B2 (en) 2016-03-07 2019-12-31 Mellanox Technologies, Ltd. In-node aggregation and disaggregation of MPI alltoall and alltoallv collectives
US20200319897A1 (en) * 2016-05-23 2020-10-08 William Jason Turner Hyperconverged system including a core layer, a user interface, and a services layer equipped with a container-based user space
US10802982B2 (en) * 2018-04-08 2020-10-13 Mellanox Technologies, Ltd. Trusted out-of-band memory acquisition for IOMMU-based computer systems
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US11163486B2 (en) 2019-11-25 2021-11-02 Micron Technology, Inc. Memory sub-system-bounded memory function
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966728A (en) * 1992-01-02 1999-10-12 International Business Machines Corp. Computer system and method for snooping date writes to cacheable memory locations in an expansion memory device
US5953538A (en) * 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
US6725281B1 (en) * 1999-06-11 2004-04-20 Microsoft Corporation Synchronization of controlled device state using state table and eventing in data-driven remote device control model
US20030101190A1 (en) * 2001-03-14 2003-05-29 Microsoft Corporation Schema-based notification service
US7120758B2 (en) * 2003-02-12 2006-10-10 Hewlett-Packard Development Company, L.P. Technique for improving processor performance
US7024521B2 (en) * 2003-04-24 2006-04-04 Newisys, Inc Managing sparse directory evictions in multiprocessor systems via memory locking
US6981123B2 (en) * 2003-05-22 2005-12-27 Seagate Technology Llc Device-managed host buffer
US7483973B2 (en) * 2003-08-28 2009-01-27 International Business Machines Corporation Gateway for service oriented state
US7287037B2 (en) * 2003-08-28 2007-10-23 International Business Machines Corporation Method and apparatus for generating service oriented state data mapping between extensible meta-data model and state data including logical abstraction
US20060004837A1 (en) 2004-06-30 2006-01-05 Genovker Victoria V Advanced switching peer-to-peer protocol
US7784065B2 (en) * 2005-02-07 2010-08-24 Microsoft Corporation Interface for consistent program interaction with auxiliary computing devices
US8521912B2 (en) * 2006-01-12 2013-08-27 Broadcom Corporation Method and system for direct device access
US7587575B2 (en) * 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US7860930B2 (en) * 2006-12-19 2010-12-28 International Business Machines Corporation Communication between host systems using a transaction protocol and shared memories
JP5020774B2 (ja) * 2007-10-24 2012-09-05 株式会社日立製作所 先読みを用いたストレージ消費電力削減方法及びその方法を用いた計算機システム
US8775790B2 (en) * 2007-10-30 2014-07-08 Honeywell International Inc. System and method for providing secure network communications
US8107361B2 (en) 2008-03-26 2012-01-31 Avaya Inc. Simultaneous active registration in a SIP survivable network configuration

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714911A (zh) * 2013-12-13 2015-06-17 英特尔公司 至少部分地提供数据的至少一部分可供处理的至少一个指示
CN104714911B (zh) * 2013-12-13 2018-05-22 英特尔公司 至少部分地可用于与至少一个主机相关联的装置、方法及计算机可读存储器
CN106533992A (zh) * 2014-03-25 2017-03-22 Dssd股份有限公司 用于全连接网格拓扑结构的高速pci架构路由
CN106533992B (zh) * 2014-03-25 2020-01-17 Emc知识产权控股有限公司 用于全连接网格拓扑结构的高速pci架构路由
CN109997117A (zh) * 2016-12-28 2019-07-09 英特尔公司 用于将门铃合并在请求消息中的技术
CN109997117B (zh) * 2016-12-28 2023-09-05 英特尔公司 用于将门铃合并在请求消息中的技术
CN110119374A (zh) * 2018-02-05 2019-08-13 三星电子株式会社 应用处理器、汽车电子处理器和计算装置
CN112106029A (zh) * 2018-05-31 2020-12-18 Arm有限公司 用于触发动作的装置和方法
CN112805949A (zh) * 2018-10-01 2021-05-14 华为技术有限公司 处理快照创建请求的方法以及存储设备

Also Published As

Publication number Publication date
US20120117331A1 (en) 2012-05-10
EP2486487A1 (en) 2012-08-15
EP2486487A4 (en) 2013-11-06
WO2011043769A1 (en) 2011-04-14
EP2486487B1 (en) 2014-12-03
US8838907B2 (en) 2014-09-16
CN102549555B (zh) 2015-04-22

Similar Documents

Publication Publication Date Title
CN102549555B (zh) 主机存储器的基于通知协议的端点高速缓存
US11657015B2 (en) Multiple uplink port devices
US11663135B2 (en) Bias-based coherency in an interconnect fabric
CN107111576B (zh) 发布的中断架构
CN101206633B (zh) 用事务协议和共享存储器在主机系统间通信的系统和方法
CN100583046C (zh) 用于单根无状态虚拟功能迁移的系统和方法
CN101206629B (zh) 在运行的PCIe架构中热插/拔新组件的系统和方法
CN104021109B (zh) 用于在计算机系统中传递中断的技术
CN101206634B (zh) 用于初始化共享存储器的系统和方法
CN101206632B (zh) 用套接字连接和共享存储器在主机系统间通信的系统和方法
KR101700261B1 (ko) 고성능 인터커넥트 코히어런스 프로토콜
US8055805B2 (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
US9043521B2 (en) Technique for communicating interrupts in a computer system
US20090182893A1 (en) Cache coherence in a virtual machine managed system
US20220414020A1 (en) Software interface to xpu address translation cache
WO2014083442A1 (en) Coherent proxy for attached processor
CN115686769A (zh) 根据cxl协议处理一致存储器事务的系统、装置和方法
US20230350812A1 (en) Architectural interface for address translation cache (atc) in xpu to submit command directly to guest software

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20161223

Address after: American Texas

Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Patentee before: Hewlett-Packard Development Company, L.P.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150422

Termination date: 20201007

CF01 Termination of patent right due to non-payment of annual fee