CN108628764B - 用于对存储器缓冲区存取进行细粒度完成跟踪的技术 - Google Patents

用于对存储器缓冲区存取进行细粒度完成跟踪的技术 Download PDF

Info

Publication number
CN108628764B
CN108628764B CN201810148369.5A CN201810148369A CN108628764B CN 108628764 B CN108628764 B CN 108628764B CN 201810148369 A CN201810148369 A CN 201810148369A CN 108628764 B CN108628764 B CN 108628764B
Authority
CN
China
Prior art keywords
counter
computing device
pair
request
memory buffer
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.)
Active
Application number
CN201810148369.5A
Other languages
English (en)
Other versions
CN108628764A (zh
Inventor
J·迪南
K·D·安德伍德
S·苏尔
C·A·吉费尔
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108628764A publication Critical patent/CN108628764A/zh
Application granted granted Critical
Publication of CN108628764B publication Critical patent/CN108628764B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

用于对存储器缓冲区存取进行细粒度完成跟踪的技术包括计算设备。该计算设备用于建立针对存储器缓冲区的多个计数器对。每个计数器对包括本地管理的偏移量和完成计数器。该计算设备还用于:接收来自远程计算设备的对存储器缓冲区进行存取的请求,将计数器对中的一个计数器对分配给该请求,使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量,以及在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进。还描述并要求保护其它实施例。

Description

用于对存储器缓冲区存取进行细粒度完成跟踪的技术
背景技术
高性能计算(HPC)通信方法典型地在用于远程直接存储器存取(RDMA)的进程内暴露用户级存储器的区域。一些***暴露存储器的相对较大的部分(例如,相对较大的缓冲区)用于远程存取(例如,通过远程计算设备),并且使用被称为本地管理的偏移量(LMO)的接收方管理的数据存取指针,以指示存储器缓冲区中的下一可用位置。然而,单单本地管理的偏移量无法指示远程存储器存取操作的完成状态,该远程存储器存取操作使得LMO前进到存储器缓冲区中的新位置。因此,一些***另外使用被称为完成计数器(CC)的单独的指针,其指示从存储器缓冲区读取或写入存储器缓冲区的已完成字节的数量。然而,当多个远程存储器存取操作未决时,无序的消息和重传使得难以确定哪些未决的操作已经完成。因此,即使利用完成计数器,也可能无法确定存储器缓冲区的哪些区域已经稳定(即,不再由远程存储器存取操作存取)。一般地,进程仅能在LMO和CC相等时针对给定存储器缓冲区保证数据稳定性。因此,远程存取请求的持续到达可能导致CC持续地滞后于LMO,导致在确定存储器缓冲区的哪些部分不再被远程存取操作使用时有长的延迟。
附图说明
本文所描述的概念在附图中仅通过示例的方式而非通过限制的方式来进行说明。为了使说明简化和清晰,图中所示的元素不一定按比例绘制。在认为适当的情况下,附图标记在图中重复,以指示对应或相似的元素。
图1是用于执行对存储器缓冲区存取的细粒度跟踪的***的至少一个实施例的简化框图;
图2是图1的***中的计算设备的至少一个实施例的简化框图;
图3是可以由图1和图2的计算设备建立的环境的简化框图;
图4-图6是可以由图1和图2的计算交换机执行的、用于对存储器缓冲区存取的完成状态进行跟踪的方法的至少一个实施例的简化流程图;以及
图7-图10是在多个存储器存取操作由图1和图2的计算设备进行处理时对存储器缓冲区存取的完成进行跟踪的顺序阶段的简化框图。
具体实施方式
虽然本公开的概念易于进行各种修改和替代形式,但是其具体实施例已经在附图中通过示例的方式示出,并且将在本文中进行详细描述。然而,应当理解,并非旨在将本公开的概念限制为所公开的特定形式,而是相反,意图在于覆盖与本公开和所附权利要求一致的所有修改、等同方案以及替代方案。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的提及指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以或可以不一定包括该特定的特征、结构或特性。此外,这样的措辞不一定指代相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否明确描述的其它实施例来实现这样的特征、结构或特性是在本领域技术人员的知识内的。另外,应当意识到,以“A、B以及C中的至少一个”的形式的列表中包括的项可以表示(A);(B);(C):(A和B);(A和C);(B和C);或(A、B以及C)。类似地,以“A、B或C中的至少一个”的形式列出的项可以表示(A);(B);(C);(A和B);(A和C);(B和C);或(A、B以及C)。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以实现为由暂时性或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可由一个或多个处理器读取并执行。机器可读存储介质可以体现为用于以机器可读的形式存储或传输信息的任何存储设备、机构、或其它物理结构(例如,易失性或非易失性存储器、介质盘或其它介质设备)。
在附图中,可以以具体的布置和/或排序示出一些结构特征或方法特征。然而,应当意识到,可能不需要这种具体的布置和/或排序。相反,在一些实施例中,这些特征可以以与说明性附图中所示的不同的方式和/或次序来布置。另外,在特定附图中包括结构或方法特征并不意味着暗指在所有实施例中都需要这样的特征,并且在一些实施例中可以不包括这样的特征或者可以将这样的特征与其它特征组合。
如图1所示,用于执行对存储器缓冲区存取的细粒度跟踪的说明性***100包括经由网络120进行通信的一组计算设备110。该组计算设备110包括计算设备112、114以及116。虽然在该组中示出了三个计算设备110,但是应当理解,在其它实施例中,该组可以包括不同数量的计算设备110。***100可以位于数据中心并且代表一个或多个客户端设备(未示出)来提供存储和计算服务(例如,云服务)。这样做时,计算设备110中的一个或多个计算设备可以通过网络120来对计算设备110中的另一计算设备的存储器中的缓冲区进行存取。在操作中,存储器被远程存取的计算设备110维护计数器对的池和稳定指针。在操作中,计算设备110将计数器对分配给对存储器缓冲区进行存取的一个或多个请求。每个计数器对包括本地管理的偏移量(LMO)和完成计数器,本地管理的偏移量(LMO)指示针对与LMO相关联的(多个)请求被预留的存储器的总量(例如,字节数),完成计数器对结合请求被处理(例如,写入或读取)的实际数据量进行跟踪。通过将计数器对分配给不同的存储器存取请求,可以与在典型***中相比更精确地且以更高的分辨率来跟踪该进程或请求的完成(即,与请求相关联的存取操作的完成)。特别地,通过利用不同的计数器对来跟踪不同的请求,与计数器对相关联的完成计数器最终可以到达存储器缓冲区中与对应的本地管理的偏移量相同的位置,而不是随着附加的请求被接收和服务而持续地“跟随”本地管理的偏移量。当完成计数器处于与本地管理的偏移量相同的位置时,在说明性实施例中,计算设备110将计数器对退回(retire),使其返回到待用于对其它存储器存取请求的进程进行跟踪的可用计数器对的池中。另外,通过如上所述地将计数器对退回,计算设备110可以更高效地识别存储器缓冲区中的不再***作的区域,并且相应地更新稳定指针(SP),从而使得这些区域可用于由其它操作(例如,远程或本地的读取操作或写入操作)使用。为了进一步提高协调对存储器缓冲区的远程存取的效率,在说明性实施例中计算设备110包括专用电路,例如,用于执行上述功能的主机结构接口中的专用计数器逻辑单元,而不依赖于通用CPU来协调对存储器缓冲区的远程存取。
现在参考图2,计算设备110可以体现为能够执行本文所描述的功能的任何类型的计算设备,这些功能包括接收来自其它计算设备110的对存储器缓冲区进行存取的请求,使用多个计数器对来跟踪对存储器缓冲区的多个并发远程存储器存取的状态,以及维护指示存储器缓冲区中的已经稳定(即,不再被远程存储器存取进程操作)的区域的稳定指针。如图2所示,说明性计算设备110包括中央处理单元(CPU)202、主存储器204、输入/输出(I/O)子***206、通信电路208以及一个或多个数据存储设备214。当然,在其它实施例中,计算设备110可以包括其它或附加的组件,例如,常见于计算机中的那些组件(例如,显示器、***设备等)。另外,在一些实施例中,说明性组件中的一个或多个可以并入另一组件或以其它方式形成另一组件的一部分。例如,在一些实施例中,主存储器204、或其部分可以并入CPU202中。
CPU 202可以体现为能够执行本文所描述的功能的任何类型的处理器。CPU 202可以体现为单核或多核处理器、微控制器、或其它处理器或处理/控制电路。在一些实施例中,CPU 202可以体现为、包括、或耦合到现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可重构硬件或硬件电路、或其它有助于本文所描述的功能的执行的专用硬件。类似地,主存储器204可以体现为能够执行本文所描述的功能的任何类型的易失性(例如,动态随机存取存储器(DRAM)等)或非易失性存储器或数据存储装置。在一些实施例中,主存储器204的全部或一部分可以集成到CPU 202中。在操作中,主存储器204可以存储在操作期间使用的各种软件和数据,例如,请求数据、计数器数据、操作***、应用、程序、库以及驱动程序。
I/O子***206可以体现为有助于与CPU 202、主存储器204以及计算设备110的其它组件的输入/输出操作的电路和/或组件。例如,I/O子***206可以体现为或以其它方式包括存储器控制器中心、输入/输出控制中心、集成传感器中心、固件设备、通信链路(例如,点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或有助于输入/输出操作的其它组件和子***。在一些实施例中,I/O子***206可以形成片上***(SoC)的一部分,并且与CPU 202、主存储器204以及计算设备110的其它组件中的一个或多个一起并入单个集成电路芯片。
通信电路208可以体现为能够通过网络120实现计算设备110与另一计算设备110之间的通信的任何通信电路、设备或其集合。通信电路208可以被配置为使用任何一种或多种通信技术(例如,有线或无线通信)以及相关联的协议(例如,以太网、
Figure GDA0004053409360000051
WiMAX等)来实现这样的通信。
说明性通信电路208包括主机结构接口(HFI)210,其还可以被称为网络接口控制器(NIC)。通信电路208可以位于与CPU 202分离的硅上,或者通信电路208可以与CPU 202一起包括在多芯片封装中,或者甚至包括在与CPU 202相同的管芯上。HFI 210可以体现为一个或多个附加板、子板、网络接口卡、控制器芯片、芯片组、诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)的专用组件、或可以由计算设备110使用来与另一计算设备110连接并执行远程存储器存取操作的其它设备。在一些实施例中,HFI 210可以体现为包括一个或多个处理器的片上***(SoC)的一部分,或者包括在另外包含一个或多个处理器的多芯片封装上。在一些实施例中,HFI 210可以包括本地处理器(未示出)和/或本地存储器(未示出),这两者均在HFI 210本地。在这样的实施例中,HFI 210的本地处理器可以能够执行本文所描述的CPU 202功能中的一个或多个功能。另外地或可替代地,在这样的实施例中,HFI 210的本地存储器可以在板级、插口级、芯片级、和/或其它级集成到计算设备110的一个或多个组件中。在说明性实施例中,HFI 210包括计数器逻辑单元212,其可以体现为能够使用多个计数器对来跟踪对存储器204的缓冲区的多个并发远程存取的状态并且维护指示存储器缓冲区中的已经稳定(例如,不再被远程存储器存取进程操作)的区域的稳定指针的任何电路或设备。在一些实施例中,计数器逻辑单元212可以体现为诸如FPGA或ASCI的一个或多个专用组件,以比通用处理器更高效地执行计数器逻辑单元212的操作。
一个或多个说明性数据存储设备214可以体现为被配置用于数据的短期或长期存储的任何类型的设备,举例来说,例如存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其它数据存储设备。每个数据存储设备214可以包括***分区,其存储用于数据存储设备214的数据和固件代码。每个数据存储设备214还可以包括操作***分区,其存储用于操作***的数据文件和可执行文件。
另外,计算设备110可以包括一个或多个***设备216。这些***设备216可以包括计算设备中常见的任何类型的***设备,例如,显示器、扬声器、鼠标、键盘、和/或其它输入/输出设备、接口设备、和/或其它***设备。
如上所述,计算设备110说明性地经由网络120进行通信,网络120可以体现为任何类型的有线或无线通信网络,包括全球网络(例如,互联网)、局域网(LAN)或广域网(WAN)、蜂窝网络(例如,全球移动通信***(GSM)、3G、长期演进(LTE)、全球微波接入互操作性(WiMAX)等)、数字订户线(DSL)网络、电缆网络(例如,同轴网、光纤网等)或其任何组合。
现在参考图3,在说明性实施例中,计算设备110可以在操作期间建立环境300。说明性环境300包括网络通信器320和计数器管理器330。环境300的组件中的每个组件可以体现为硬件、固件、软件或其组合。因此,在一些实施例中,环境300的组件中的一个或多个组件可以体现为电路或电气设备的集合(例如,网络通信器电路320、计数器管理器电路330等)。应当意识到,在这样的实施例中,网络通信器电路320或计数器管理器电路330中的一个或多个可以形成通信电路208、HFI 210、计数器逻辑单元212、CPU 202、主存储器204、I/O子***206、和/或计算设备110的其它组件中的一个或多个的一部分。在说明性实施例中,环境300包括请求数据302,其可以体现为指示计算设备110所服务的每个远程存储器存取请求的标识符(例如,进程编号、字母数字标签等)以及与请求关联地对存储器204进行存取的计算设备110的标识符(例如,介质访问控制(MAC)地址、互联网协议(IP)地址等)的任何数据。另外,在说明性实施例中,环境300包括计数器数据304,其可以体现为指示一组计数器对、每个计数器对的状态(例如,在使用中、被退回等)、每个完成计数器和本地管理的偏移量在存储器缓冲区中的位置(例如,值)以及稳定指针的位置(例如,值)的任何数据。
在说明性环境300中,网络通信器320可以体现为硬件、固件、软件、虚拟化硬件、仿真架构、和/或如上所述的其组合,网络通信器320被配置为有助于分别去往和来自计算设备110的入站和出站网络通信(例如,网络业务、网络分组、网络流等),包括对存储器204的缓冲区进行存取的请求。为此,网络通信器320被配置为接收并处理来自一个***或计算设备110的数据分组,并且准备并发送数据分组到另一计算设备110。因此,在一些实施例中,网络通信器320的功能的至少一部分可以由通信电路208执行,并且在说明性实施例中由HFI 210执行。
计数器管理器330可以体现为硬件、固件、软件、虚拟化硬件、仿真架构、和/或如上所述的其组合,计数器管理器330被配置为建立计数器对的池(一组多个计数器对),使用多个计数器对来跟踪对存储器204的缓冲区的多个并发远程存取的状态,以及持续地更新指示存储器缓冲区中的已经稳定(例如,不再由远程存储器存取进程操作)的区域的稳定指针。为此,在说明性实施例中,计数器管理器330包括计数器池管理器332、本地管理的偏移量(LMO)管理器334、完成计数器管理器336以及稳定指针管理器338。在说明性实施例中,计数器池管理器332被配置为建立计数器对的池,确定每个计数器对的状态(例如,在使用中、被退回等),以及确定哪个计数器对要分配给远程存储器存取请求。在说明性实施例中,LMO管理器334被配置为针对在使用中(例如,分配给一个或多个远程存储器存取请求)的每个计数器对更新LMO的位置(例如,值)。这样做时,LMO管理器334可以识别与请求相关联的数据的量(例如,待写入或读取的数据的量)并且使对应的LMO的位置(例如,值)前进该量。在说明性实施例中,与远程存储器存取请求相关联的数据的量作为请求的参数被包括。
在说明性实施例中,完成计数器管理器336被配置为更新在使用中(例如,分配给一个或多个远程存储器存取请求)的每个计数器对的位置(例如,值)。这样做时,当远程存储器存取请求被完成时,完成计数器管理器336可以使完成计数器前进与对应的远程存储器存取请求相关联的数据的量。完成计数器管理器336可以这样来确定对应的远程存储器存取请求何时已完成:通过将初始指定为请求的参数的数据的量与实际被处理(例如,由通信电路208接收并且写入到存储器204中的缓冲区,或者从缓冲区读取并且由通信电路208发送)的数据的量进行比较,通过接收来自计算设备110的本地软件栈的、请求完成的消息,和/或通过接收来自远程计算设备110的、对存储器204进行了远程存取的类似消息。在说明性实施例中,稳定指针管理器338被配置为持续地更新稳定指针的位置(例如,值),以指示存储器缓冲区中的不再被远程计算设备110操作(例如,写入或从其读取)的区域。在说明性实施例中,稳定指针管理器338可以响应于检测到计数器对已被退回(例如,当完成计数器等于计数器对的本地管理的偏移量时)而确定是否使稳定指针前进。在其它实施例中,稳定指针管理器338可以周期性地(例如,以预定义的频率)确定是否使稳定指针前进,而不是响应于计数器对的退回来这样做。
应当意识到,计数器池管理器332、LMO管理器334、完成计数器管理器336以及稳定指针管理器338中的每一个可以单独地体现为硬件、固件、软件、虚拟化硬件、仿真架构、和/或其组合。例如,计数器池管理器332可以体现为硬件组件,而LMO管理器334、完成计数器管理器336以及稳定指针管理器338体现为虚拟化硬件组件或体现为硬件、固件、软件、虚拟化硬件、仿真架构、和/或其组合的一些其它组合。
现在参考图4,在使用中,计算设备110可以执行用于对存储器缓冲区存取的完成状态进行跟踪的方法400。方法400开始于框402,其中计算设备110确定是否执行完成跟踪。在说明性实施例中,如果计算设备110上电并且通过网络120与至少一个其它计算设备110通信,则计算设备110确定执行完成跟踪。在其它实施例中,计算设备110可以基于其它准则来确定是否执行完成跟踪。无论如何,响应于执行完成跟踪的确定,方法400前进到框404,其中计算设备建立计数器对的池。在建立计数器对的池时,计算设备110可以预留存储器或识别寄存器来存储每个计数器对的完成计数器和本地管理的偏移量的值。在说明性实施例中,在建立计数器对的池时,计算设备110建立至少两个计数器对,如框406中所指示的。因此,如下文更详细地说明的,计算设备110能够独立地跟踪多个并发远程存储器存取请求的完成状态。如框408中所指示的,在建立至少两个计数器对时,计算设备110可以建立预定义数量的计数器对(例如,在配置文件中指定的计数器对的数量等)。如框410中所指示的,计算设备110可以根据期望的跟踪粒度来建立多个计数器对。例如,如果计算设备110的管理员确定期望独立地跟踪特定数量(例如,三个)的并发远程存储器存取请求的完成状态,则管理员可以指定该数量(例如,通过用户接口),并且计算设备110可以建立对应数量的计数器对。另外地或可替代地,如框412中所指示的,计算设备110可以根据可用***资源的量来建立该数量的计数器对,例如,可用于(例如,在专用计数器逻辑单元212)存储每个计数器对的完成计数器和本地管理的偏移量的值的寄存器的数量或存储器的量。如框414中所指示的,在建立计数器对的池时,计算设备110建立每个计数器对的本地管理的偏移量和完成计数器。在说明性实施例中,计算设备110使用HFI 210的专用计数器电路(例如,计数器逻辑单元212)来建立计数器对的池,如框416所指示的。在建立计数器对时,计算设备110可以将本地管理的偏移量和完成计数器的初始值(例如,位置)设定为可用于远程存取的存储器缓冲区的开头位置(例如,存储器204的开始地址)。
仍然参考图4,计算设备110另外建立稳定指针来指示存储器缓冲区中的未进行远程存取请求操作的区域,如框418中所指示的。在说明性实施例中,在建立稳定指针时,计算设备110将稳定指针的值设定为等于在框404中建立的完成计数器和本地管理的偏移量的值(例如,以指向存储器缓冲区的开始地址)。在说明性实施例中,计算设备110使用HFI 210的专用计数器电路(例如,计数器逻辑单元212)来建立稳定指针,如框420中所指示的。随后,在框422中,计算设备110接收来自远程计算设备110的(例如,通过网络120)对存储器缓冲区进行存取的请求。这样做时,计算设备110可以接收写入存储器缓冲区或从存储器缓冲区进行读取的请求,如框424中所指示的。此外,如框426中所指示的,计算设备110可以接收要***作(例如,写入或读取)的数据的量(例如,字节数)的指示作为请求的参数。随后,方法400前进到图5的框428,其中计算设备110确定是否将未使用的计数器对分配给请求。
现在参考图5,在确定是否将未使用的计数器对分配给请求时,计算设备110可以确定未使用的计数器对在池中是否可用,如框430中所指示的。另外地或可替代地,计算设备110可以确定预定义数量的请求或数据的量是否与当前活跃的计数器对相关联,如框432所指示的。例如,在一些实施例中,如果已经接收到新请求并且计数器对可用且当前未分配给任何远程存储器存取请求,则计算设备110可以确定将当前可用的计数器对分配给请求(例如,“贪婪算法”)。相比而言,在其它实施例中,仅当当前分配的计数器对(如果有)当前各自对阈值数量(例如,多于一个)的远程存储器存取请求或与任何数量的远程存储器存取请求相关联的阈值量的数据(例如,阈值数量的字节)进行跟踪并且至少一个未使用的计数器对在池中可用时,计算设备110才可以将未使用的计数器对分配给新接收到的请求。在说明性实施例中,如框434中所指示的,计算设备110利用HFI 210的专用计数器电路(例如,计数器逻辑单元212)来执行是否分配未使用的计数器对的确定。
在框436中,方法400基于计算设备110是否被确定为将未使用的计数器对分配给新接收到的请求而沿着两条路径之一前进。如果计算设备110被确定为分配未使用的计数器对,则方法400前进到框438,其中计算设备110将新分配的计数器对的本地管理的偏移量和完成计数器设定为活跃(例如,当前分配的)计数器对(如果有)的最大本地管理的偏移量,如框440中所指示的。另外,在说明性实施例中,并且如框442中所指示的,计算设备110使与新分配的计数器对相关联的本地管理的偏移量前进要***作的数据的量(例如,在请求中指示的数据的量,如结合图4的框426所描述的)。如框444中所指示的,在说明性实施例中,计算设备110使用HFI 210的专用计数器电路(例如,计数器逻辑单元212)来分配未使用的计数器对。返回参考框436,如果计算设备110相反被确定为不将未使用的计数器对分配给请求,则方法400进行到框446,其中计算设备110使活跃计数器对的本地管理的偏移量前进要***作的数据的量(例如,在请求中指示的数据的量,如结合图4的框426所描述的)。这样做时,计算设备110使当前在使用中的本地管理的偏移量中的在存储器缓冲区中向前最远(例如,具有最大值)的本地管理的偏移量前进。在说明性实施例中,计算设备110使用HFI210的专用计数器电路(例如,计数器逻辑单元212)使本地管理的偏移量前进,如框450中所指示的。无论计算设备110是分配未使用的计数器对还是已经在使用中的计数器对,方法400随后都前进到图6的框452,其中计算设备110对存储器缓冲区进行操作以完成请求以及可能未决的任何其它先前接收到的请求。
现在参考图6,在说明性实施例中,在对存储器缓冲区进行操作时,计算设备110可以接收数据并且将与(多个)请求相关联的数据写入存储器缓冲区,如框454中所指示的。如框456中所指示的,计算设备110可以另外地或可替代地根据一个或多个接收到的请求从存储器缓冲区读取数据并且发送所读取的数据。在说明性实施例中,在对存储器缓冲区进行操作时,计算设备110使每个活跃的计数器对的完成计数器在相关联的数据被写入存储器缓冲区或从存储器缓冲区读取时前进,如框458中所指示的。另外,在说明性实施例中,计算设备110将其中完成计数器等于对应的本地管理的偏移量的任何计数器对退回,如框460中所指示的。此外,如框462中所指示的,计算设备110将稳定指针设定到存储器缓冲区中的已经完成了远程存取操作(例如,无数据被远程计算设备写入或读取)的部分。如框464中所指示的,在说明性实施例中,计算设备110使用HFI 210的专用计数器电路(例如,计数器逻辑单元212)来管理计数器对和稳定指针。随后,方法400循环回到框422,其中计算设备110等待来自远程计算设备110的对存储器缓冲区进行存取的另一请求。
现在参考图7,在跟踪一组示例远程存储器缓冲区存取请求的一个阶段700中,计算设备110已经接收到对存储器204的缓冲区进行写入的两个单独的远程存储器存取请求R0和R1。两个计数器对之一已经被分配用于跟踪这两个存取请求的完成。因此,所分配的计数器对的LMO(即,LMO1)已经前进了待写入存储器缓冲区的字节数,而对应的CC(即,CC1)尚未前进,因为请求R0和R1中的任一个均没有完成。另外,稳定指针位于存储器缓冲区的开头处。现在参考图8,在后续阶段800中,计算设备110已经接收到两个附加的存取请求R2和R3,并且存取请求R1已经完成。因此,计算设备110已经使CC1前进由R1操作的数据的量,并且计算设备110已经将来自池中的其它可用计数器对分配用于跟踪R2和R3的完成。这样做时,计算设备110初始地将LMO(即,LMO0)和对应的CC(即,CC0)设定为LMO1的位置,并且然后使LMO0前进要由R2和R3操作的数据的量(例如,字节数)。现在参考图9,在后续阶段900中,R0请求已经完成,并且计算设备110已经使CC1前进针对R0请求在存储器缓冲区中操作的数据的量。响应于CC1现在等于LMO1的确定,计算设备110退回计数器对(即,CC1和LMO1),并且将其返回到可用(即,被退回的)计数器对的池。另外,假定没有远程存储器存取请求对存储器缓冲区的开头与CC0的位置之间的区域进行操作,计算设备110使稳定指针前进到CC0的位置。现在参考图10,在后续阶段1000中,计算设备110接收另一存取请求R4。作为响应,计算设备110将先前退回的计数器对LMO1和CC1分配给该请求。这样做时,计算设备110初始地将LMO1和CC1的值设定为LMO0的值,并且然后使LMO1前进要针对R4请求进行操作的数据的量。
示例
以下提供本文公开的技术的说明性示例。该技术的实施例可以包括以下描述的示例中的任何一个或多个及其任何组合。
示例1包括一种用于跟踪对存储器缓冲区的存取的完成的计算设备,该计算设备包括:存储器缓冲区;以及主机结构接口,其包括计数器逻辑单元,其中,计数器逻辑单元用于:建立针对存储器缓冲区的多个计数器对,其中,每个计数器对包括本地管理的偏移量和完成计数器;接收来自远程计算设备的对存储器缓冲区进行存取的请求,其中,请求包括待读取或写入的数据的量;将多个计数器对中的一个计数器对分配给请求;使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量;以及在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进。
示例2包括示例1的主题,并且其中,计数器逻辑单元还用于:确定所分配的计数器对的完成计数器是否等于所分配的计数器对的本地管理的偏移量;以及响应于完成计数器等于本地管理的偏移量的确定,将所分配的计数器对退回。
示例3包括示例1和示例2的主题,并且其中,计数器逻辑单元还用于对稳定指针进行设定,以指示存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
示例4包括示例1-3中的任一示例的主题,并且其中,请求是第一请求,所分配的计数器对是第一计数器对,并且计数器逻辑单元还用于:接收对存储器缓冲区进行存取的第二请求;响应于第一计数器对尚未被退回并且第二计数器对可用的确定,将第二计数器对分配给第二请求;以及将第二计数器对的完成计数器和本地管理的偏移量设定为第一计数器对的本地管理的偏移量。
示例5包括示例1-4中的任一示例的主题,并且其中,计数器逻辑单元还用于,在与第二请求相关联的数据被从存储器缓冲区读取或被写入存储器缓冲区时使第二计数器对的完成计数器前进。
示例6包括示例1-5中的任一示例的主题,并且其中,计数器逻辑单元还用于:接收对存储器缓冲区进行存取的第二请求;确定预定义数量的存取请求是否已经与计数器对相关联;以及响应于预定义数量的存取请求尚未与计数器对相关联的确定,将计数器对分配给接收到的第二请求。
示例7包括示例1-6中的任一示例的主题,并且其中,计数器逻辑单元还用于,使计数器对的本地管理的偏移量前进在第二请求中待读取或写入的数据的量。
示例8包括示例1-7中的任一示例的主题,并且其中,建立多个计数器对包括建立预定义数量的计数器对。
示例9包括示例1-8中的任一示例的主题,并且其中,建立多个计数器对包括根据期望的粒度来建立多个计数器对。
示例10包括示例1-9中的任一示例的主题,并且其中,建立多个计数器对包括根据可用***资源的量来建立多个计数器对。
示例11包括示例1-10中的任一示例的主题,并且还包括一个或多个处理器;其中,主机结构接口位于与计算设备的一个或多个处理器分离的芯片上。
示例12包括示例1-11中的任一示例的主题,并且还包括一个或多个处理器;其中,主机结构接口与计算设备的一个或多个处理器被包括在多芯片封装中。
示例13包括示例1-12中的任一示例的主题,并且还包括一个或多个处理器;其中,主机结构接口被集成到一个或多个处理器中的至少一个处理器中。
示例14包括示例1-13中的任一示例的主题,并且还包括:一个或多个处理器;以及存储器;其中,存储器缓冲区位于存储器中。
示例15包括一种用于跟踪对存储器缓冲区的存取的完成的方法,该方法包括:由计算设备建立针对存储器缓冲区的多个计数器对,其中,每个计数器对包括本地管理的偏移量和完成计数器;由计算设备接收来自远程计算设备的对存储器缓冲区进行存取的请求,其中,请求包括待读取或写入的数据的量;由计算设备将计数器对中的一个计数器对分配给请求;由计算设备使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量;以及由计算设备在数据从存储器缓冲区被取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进。
示例16包括示例15的主题,并且还包括:由计算设备确定所分配的计数器对的完成计数器是否等于所分配的计数器对的本地管理的偏移量;以及由计算设备并且响应于完成计数器等于本地管理的偏移量的确定而将所分配的计数器对退回。
示例17包括示例15和示例16的主题,并且还包括对稳定指针进行设定,以指示存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
示例18包括示例15-17中的任一示例的主题,并且其中,请求是第一请求,并且所分配的计数器对是第一计数器对,该方法还包括:由计算设备接收对存储器缓冲区进行存取的第二请求;由计算设备响应于第一计数器对尚未被退回并且第二计数器对可用的确定而将第二计数器对分配给第二请求;以及由计算设备将第二计数器对的完成计数器和本地管理的偏移量设定为第一计数器对的本地管理的偏移量。
示例19包括示例15-18中的任一示例的主题,并且还包括:由计算设备在与第二请求相关联的数据被从存储器缓冲区读取或被写入存储器缓冲区时使第二计数器对的完成计数器前进。
示例20包括示例15-19中的任一示例的主题,并且还包括:由计算设备接收对存储器缓冲区进行存取的第二请求;由计算设备确定预定义数量的存取请求是否已经与计数器对相关联;以及由计算设备响应于预定义数量的存取请求尚未与计数器对相关联的确定而将计数器对分配给接收到的第二请求。
示例21包括示例15-20中的任一示例的主题,并且还包括,由计算设备使计数器对的本地管理的偏移量前进在第二请求中待读取或写入的数据的量。
示例22包括示例15-21中的任一示例的主题,并且其中,建立多个计数器对包括建立预定义数量的计数器对。
示例23包括示例15-22中的任一示例的主题,并且其中,建立多个计数器对包括根据期望的粒度来建立多个计数器对。
示例24包括示例15-23中的任一示例的主题,并且其中,建立多个计数器对包括根据可用***资源的量来建立多个计数器对。
示例25包括示例15-24中的任一示例的主题,并且其中,建立多个计数器对包括利用计算设备的主机结构接口的专用计数器电路来建立多个计数器对。
示例26包括示例15-25中的任一示例的主题,并且还包括利用专用计数器电路来对稳定指针进行设定,以指示存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
示例27包括示例15-26中的任一示例的主题,并且其中,将计数器对中的一个计数器对分配给请求包括利用专用计数器电路将计数器对中的一个计数器对分配给请求。
示例28包括示例15-27中的任一示例的主题,并且其中,使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量包括:利用专用计数器电路使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量。
示例29包括示例15-28中的任一示例的主题,并且其中,在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进包括:利用专用计数器电路在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进。
示例30包括一种或多种机器可读存储介质,包括存储于其上的多个指令,该多个指令响应于被执行而使计算设备执行示例15-29中的任一示例的方法。
示例31包括一种用于跟踪对存储器缓冲区的存取的完成的计算设备,该计算设备包括一个或多个处理器;一个或多个存储器设备,其中存储有多个指令,该多个指令当被执行时使得计算设备执行示例15-29中的任一示例的方法。
示例32包括一种用于跟踪对存储器缓冲区的存取的完成的计算设备,该计算设备包括用于执行15-29中的任一示例的方法的模块。
示例33包括一种跟踪对存储器缓冲区的存取的完成的计算设备,该计算设备包括:计数器管理器电路,其用于建立针对存储器缓冲区的多个计数器对,其中,每个计数器对包括本地管理的偏移量和完成计数器;网络通信器电路,其用于接收来自远程计算设备的对存储器缓冲区进行存取的请求,其中,该请求包括待读取或写入的数据的量;其中,计数器管理器电路还用于将计数器对中的一个计数器对分配给请求,使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量,以及在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进。
示例34包括示例33的主题,并且其中,计数器管理器电路还用于:确定所分配的计数器对的完成计数器是否等于所分配的计数器对的本地管理的偏移量;以及响应于完成计数器等于本地管理的偏移量的确定,将所分配的计数器对退回。
示例35包括示例33和示例34的主题,并且其中,计数器管理器电路还用于对稳定指针进行设定,以指示存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
示例36包括示例33-35中的任一示例的主题,并且其中,请求是第一请求,所分配的计数器对是第一计数器对,网络通信器还用于接收对存储器缓冲区进行存取的第二请求;并且计数器管理器电路还用于响应于第一计数器对尚未被退回并且第二计数器对可用的确定而将第二计数器对分配给第二请求;以及将第二计数器对的完成计数器和本地管理的偏移量设定为第一计数器对的本地管理的偏移量。
示例37包括示例33-36中的任一示例的主题,并且其中,计数器管理器电路还用于,在与第二请求相关联的数据被从存储器缓冲区读取或被写入存储器缓冲区时使第二计数器对的完成计数器前进。
示例38包括示例33-37中的任一示例的主题,并且其中,网络通信器电路还用于接收对存储器缓冲区进行存取的第二请求,并且计数器管理器电路还用于确定预定义数量的存取请求是否已经与计数器对相关联;以及响应于确定预定义数量的存取请求尚未与计数器对相关联,将计数器对分配给接收到的第二请求。
示例39包括示例33-38中的任一示例的主题,并且其中,计数器管理器电路还用于,使计数器对的本地管理的偏移量前进在第二请求中待读取或写入的数据的量。
示例40包括示例33-39中的任一示例的主题,并且其中,建立多个计数器对包括建立预定义数量的计数器对。
示例41包括示例33-40中的任一示例的主题,并且其中,建立多个计数器对包括根据期望的粒度来建立多个计数器对。
示例42包括示例33-41中的任一示例的主题,并且其中,建立多个计数器对包括根据可用***资源的量来建立多个计数器对。
示例43包括示例33-42中的任一示例的主题,并且还包括:包括专用计数器电路的主机结构接口,其中,建立多个计数器对包括利用专用计数器电路来建立多个计数器对。
示例44包括示例33-43中的任一示例的主题,并且其中,计数器管理器电路还用于利用专用计数器电路来对稳定指针进行设定,以指示存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
示例45包括示例33-44中的任一示例的主题,并且其中,将计数器对中的一个计数器对分配给请求包括利用专用计数器电路将计数器对中的一个计数器对分配给请求。
示例46包括示例33-45中的任一示例的主题,并且其中,使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量包括利用专用计数器电路使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量。
示例47包括示例33-46中的任一示例的主题,并且其中,在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进包括,利用专用计数器电路在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进。
示例48包括一种用于跟踪对存储器缓冲区的存取的完成的计算设备,该计算设备包括:用于建立针对存储器缓冲区的多个计数器对的电路,其中,每个计数器对包括本地管理的偏移量和完成计数器;用于接收来自远程计算设备的对存储器缓冲区进行存取的请求的电路,其中,请求包括待读取或写入的数据的量;用于将计数器对中的一个计数器对分配给请求的模块;用于使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量的电路;以及用于在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进的电路。
示例49包括示例48的主题,并且还包括:用于确定所分配的计数器对的完成计数器是否等于所分配的计数器对的本地管理的偏移量的电路;以及用于响应于完成计数器等于本地管理的偏移量的确定而将所分配的计数器对退回的电路。
示例50包括示例48和示例49的主题,并且还包括用于对稳定指针进行设定的电路,以指示存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
示例51包括示例48-50中的任一示例的主题,并且其中,请求是第一请求,并且所分配的计数器对是第一计数器对,该计算设备还包括:用于接收对存储器缓冲区进行存取的第二请求的电路;用于响应于第一计数器对尚未被退回并且第二计数器对可用的确定而将第二计数器对分配给第二请求的模块;以及用于将第二计数器对的完成计数器和本地管理的偏移量设定为第一计数器对的本地管理的偏移量的电路。
示例52包括示例48-51中的任一示例的主题,并且还包括:用于在与第二请求相关联的数据被从存储器缓冲区读取或被写入存储器缓冲区时使第二计数器对的完成计数器前进的电路。
示例53包括示例48-52中的任一示例的主题,并且还包括:用于接收对存储器缓冲区进行存取的第二请求的电路;用于确定预定义数量的存取请求是否已经与计数器对相关联的电路;以及用于响应于预定义数量的存取请求尚未与计数器对相关联的确定而将计数器对分配给接收到的第二请求的模块。
示例54包括示例48-53中的任一示例的主题,并且还包括:用于使计数器对的本地管理的偏移量前进在第二请求中待读取或写入的数据的量的电路。
示例55包括示例48-54中的任一示例的主题,并且其中,用于建立多个计数器对的电路包括用于建立预定义数量的计数器对的电路。
示例56包括示例48-55中的任一示例的主题,并且其中,用于建立多个计数器对的电路包括用于根据期望的粒度来建立多个计数器对的电路。
示例57包括示例48-56中的任一示例的主题,并且其中,用于建立多个计数器对的电路包括用于根据可用***资源的量来建立多个计数器对的电路。
示例58包括示例48-57中的任一示例的主题,并且其中,用于建立多个计数器对的电路包括用于建立多个计数器对的主机结构接口的专用计数器电路。
示例59包括示例48-58中的任一示例的主题,并且还包括用于对稳定指针进行设定的专用计数器电路,以指示存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
示例60包括示例48-59中的任一示例的主题,并且其中,用于将计数器对中的一个计数器对分配给请求的电路包括用于将计数器对中的一个计数器对分配给请求的专用计数器电路。
示例61包括示例48-60中的任一示例的主题,并且其中,用于使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量的电路包括用于使所分配的计数器对的本地管理的偏移量前进待读取或写入的数据的量的专用计数器电路。
示例62包括示例48-61中的任一示例的主题,并且其中,用于在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进的电路包括:用于在数据被从存储器缓冲区读取或被写入存储器缓冲区时使所分配的计数器对的完成计数器前进的专用计数器电路。

Claims (30)

1.一种用于跟踪对存储器缓冲区的存取的完成的计算设备,所述计算设备包括:
存储器缓冲区;以及
主机结构接口,其包括计数器逻辑单元,其中,所述计数器逻辑单元用于:
建立针对所述存储器缓冲区的多个计数器对,其中,每个计数器对包括本地管理的偏移量和完成计数器;
接收来自远程计算设备的对所述存储器缓冲区进行存取的请求,其中,所述请求包括待读取或写入的数据的量;
将所述多个计数器对中的一个计数器对分配给所述请求;
使所分配的计数器对的所述本地管理的偏移量前进所述待读取或写入的数据的量;以及
在所述数据被从所述存储器缓冲区读取或被写入所述存储器缓冲区时,使所分配的计数器对的所述完成计数器前进。
2.根据权利要求1所述的计算设备,其中,所述计数器逻辑单元还用于:
确定所分配的计数器对的所述完成计数器是否等于所分配的计数器对的所述本地管理的偏移量;以及
响应于所述完成计数器等于所述本地管理的偏移量的确定,将所分配的计数器对退回。
3.根据权利要求1所述的计算设备,其中,所述计数器逻辑单元还用于对稳定指针进行设定,以指示所述存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
4.根据权利要求1所述的计算设备,其中,所述请求是第一请求,所分配的计数器对是第一计数器对,并且所述计数器逻辑单元还用于:
接收对所述存储器缓冲区进行存取的第二请求;
响应于所述第一计数器对尚未被退回并且第二计数器对可用的确定,将所述第二计数器对分配给所述第二请求;以及
将所述第二计数器对的完成计数器和本地管理的偏移量设定为所述第一计数器对的本地管理的偏移量。
5.根据权利要求4所述的计算设备,其中,所述计数器逻辑单元还用于,在与所述第二请求相关联的数据被从所述存储器缓冲区读取或被写入所述存储器缓冲区时,使所述第二计数器对的完成计数器前进。
6.根据权利要求1所述的计算设备,其中,所述计数器逻辑单元还用于:
接收对所述存储器缓冲区进行存取的第二请求;
确定预定义数量的存取请求是否已经与所述计数器对相关联;以及
响应于所述预定义数量的存取请求尚未与所述计数器对相关联,将所述计数器对分配给接收到的第二请求。
7.根据权利要求6所述的计算设备,其中,所述计数器逻辑单元还用于,使所述计数器对的本地管理的偏移量前进在所述第二请求中待读取或写入的数据的量。
8.根据权利要求1所述的计算设备,其中,建立多个计数器对包括建立预定义数量的计数器对。
9.根据权利要求1所述的计算设备,其中,建立多个计数器对包括根据期望的粒度来建立多个计数器对。
10.根据权利要求1所述的计算设备,其中,建立多个计数器对包括根据可用***资源的量来建立多个计数器对。
11.根据权利要求1所述的计算设备,还包括:
一个或多个处理器;
其中,所述主机结构接口位于与所述计算设备的所述一个或多个处理器分离的芯片上。
12.根据权利要求1所述的计算设备,还包括:
一个或多个处理器;
其中,所述主机结构接口与所述计算设备的所述一个或多个处理器被包括在多芯片封装中。
13.根据权利要求1所述的计算设备,还包括:
一个或多个处理器;
其中,所述主机结构接口被集成到所述一个或多个处理器中的至少一个处理器中。
14.根据权利要求1所述的计算设备,还包括:
一个或多个处理器;以及
存储器;
其中,所述存储器缓冲区位于所述存储器中。
15.一种或多种机器可读存储介质,包括存储在其上的多个指令,所述多个指令响应于被执行而使得计算设备:
建立针对存储器缓冲区的多个计数器对,其中,每个计数器对包括本地管理的偏移量和完成计数器;
接收来自远程计算设备的对所述存储器缓冲区进行存取的请求,其中,所述请求包括待读取或写入的数据的量;
将所述计数器对中的一个计数器对分配给所述请求;
使所分配的计数器对的所述本地管理的偏移量前进所述待读取或写入的数据的量;以及
在所述数据被从所述存储器缓冲区读取或被写入所述存储器缓冲区时,使所分配的计数器对的所述完成计数器前进。
16.根据权利要求15所述的一种或多种机器可读存储介质,其中,所述多个指令当被执行时还使得所述计算设备:
确定所分配的计数器对的所述完成计数器是否等于所分配的计数器对的所述本地管理的偏移量;以及
响应于所述完成计数器等于所述本地管理的偏移量的确定,将所分配的计数器对退回。
17.根据权利要求15所述的一种或多种机器可读存储介质,其中,所述多个指令当被执行时还使得所述计算设备:对稳定指针进行设定,以指示所述存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
18.根据权利要求15所述的一种或多种机器可读存储介质,其中,所述请求是第一请求,所分配的计数器对是第一计数器对,并且所述多个指令当被执行时还使得所述计算设备:
接收对所述存储器缓冲区进行存取的第二请求;
响应于所述第一计数器对尚未被退回并且第二计数器对可用的确定,将所述第二计数器对分配给所述第二请求;以及
将所述第二计数器对的完成计数器和本地管理的偏移量设定为所述第一计数器对的本地管理的偏移量。
19.根据权利要求18所述的一种或多种机器可读存储介质,其中,所述多个指令当被执行时还使得所述计算设备:在与所述第二请求相关联的数据被从所述存储器缓冲区读取或被写入所述存储器缓冲区时,使所述第二计数器对的完成计数器前进。
20.根据权利要求15所述的一种或多种机器可读存储介质,其中,所述多个指令当被执行时还使得所述计算设备:
接收对所述存储器缓冲区进行存取的第二请求;
确定预定义数量的存取请求是否已经与所述计数器对相关联;以及
响应于所述预定义数量的存取请求尚未与所述计数器对相关联,将所述计数器对分配给接收到的第二请求。
21.根据权利要求20所述的一种或多种机器可读存储介质,其中,所述多个指令当被执行时还使得所述计算设备:使所述计数器对的本地管理的偏移量前进在所述第二请求中待读取或写入的数据的量。
22.根据权利要求15所述的一种或多种机器可读存储介质,其中,建立多个计数器对包括建立预定义数量的计数器对。
23.根据权利要求15所述的一种或多种机器可读存储介质,其中,建立多个计数器对包括根据期望的粒度来建立多个计数器对。
24.根据权利要求15所述的一种或多种机器可读存储介质,其中,建立多个计数器对包括根据可用***资源的量来建立多个计数器对。
25.根据权利要求15所述的一种或多种机器可读存储介质,还包括:
主机结构接口,其包括专用计数器电路,
其中,建立所述多个计数器对包括利用所述专用计数器电路来建立所述多个计数器对。
26.根据权利要求25所述的一种或多种机器可读存储介质,其中,所述多个指令当被执行时还使得所述计算设备:利用所述专用计数器电路来对稳定指针进行设定,以指示所述存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
27.一种用于跟踪对存储器缓冲区的存取的完成的计算设备,所述计算设备包括:
用于建立针对存储器缓冲区的多个计数器对的电路,其中,每个计数器对包括本地管理的偏移量和完成计数器;
用于接收来自远程计算设备的对所述存储器缓冲区进行存取的请求的电路,其中,所述请求包括待读取或写入的数据的量;
用于将所述计数器对中的一个计数器对分配给所述请求的模块;
用于使所分配的计数器对的所述本地管理的偏移量前进所述待读取或写入的数据的量的电路;以及
用于在所述数据被从所述存储器缓冲区读取或被写入所述存储器缓冲区时使所分配的计数器对的所述完成计数器前进的电路。
28.一种用于跟踪对存储器缓冲区的存取的完成的方法,所述方法包括:
由计算设备建立针对存储器缓冲区的多个计数器对,其中,每个计数器对包括本地管理的偏移量和完成计数器;
由所述计算设备接收来自远程计算设备的对所述存储器缓冲区进行存取的请求,其中,所述请求包括待读取或写入的数据的量;
由所述计算设备将所述计数器对中的一个计数器对分配给所述请求;
由所述计算设备使所分配的计数器对的所述本地管理的偏移量前进所述待读取或写入的数据的量;以及
由所述计算设备在所述数据被从所述存储器缓冲区读取或被写入所述存储器缓冲区时使所分配的计数器对的所述完成计数器前进。
29.根据权利要求28所述的方法,还包括:
由所述计算设备确定所分配的计数器对的所述完成计数器是否等于所分配的计数器对的所述本地管理的偏移量;以及
由所述计算设备并且响应于所述完成计数器等于所述本地管理的偏移量的确定而将所分配的计数器对退回。
30.根据权利要求28所述的方法,还包括对稳定指针进行设定,以指示所述存储器缓冲区中的针对远程计算设备的所有存储器存取请求已经被完成的区域。
CN201810148369.5A 2017-03-20 2018-02-13 用于对存储器缓冲区存取进行细粒度完成跟踪的技术 Active CN108628764B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/463,005 2017-03-20
US15/463,005 US10963183B2 (en) 2017-03-20 2017-03-20 Technologies for fine-grained completion tracking of memory buffer accesses

Publications (2)

Publication Number Publication Date
CN108628764A CN108628764A (zh) 2018-10-09
CN108628764B true CN108628764B (zh) 2023-05-23

Family

ID=61131950

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810148369.5A Active CN108628764B (zh) 2017-03-20 2018-02-13 用于对存储器缓冲区存取进行细粒度完成跟踪的技术

Country Status (3)

Country Link
US (1) US10963183B2 (zh)
EP (1) EP3379423A1 (zh)
CN (1) CN108628764B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11593281B2 (en) * 2019-05-08 2023-02-28 Hewlett Packard Enterprise Development Lp Device supporting ordered and unordered transaction classes

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1667088A1 (ru) * 1989-07-03 1991-07-30 Предприятие П/Я Г-4181 Устройство дл сопр жени абонента с каналом св зи
CN1522402A (zh) * 2001-06-29 2004-08-18 �ʼҷ����ֵ������޹�˾ 多处理器***及运行多处理器***的方法
WO2007003985A1 (en) * 2005-06-30 2007-01-11 Freescale Semiconductor, Inc. Device and method for controlling multiple dma tasks
US8521934B1 (en) * 2010-02-25 2013-08-27 Fresco Logic, Inc. Multi-port context-based host controller
CN104221000A (zh) * 2012-03-28 2014-12-17 英特尔公司 用于网络设备上的处理元件的共享的缓冲区
US9069672B2 (en) * 2009-06-12 2015-06-30 Intel Corporation Extended fast memory access in a multiprocessor computer system
CN104885070A (zh) * 2013-01-17 2015-09-02 英特尔公司 控制片上***(SoC)中的带宽分配

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3601955B2 (ja) * 1997-10-23 2004-12-15 株式会社日立製作所 データ転送方法およびそれに適した計算機システム
US7836226B2 (en) * 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US20110246686A1 (en) 2010-04-01 2011-10-06 Cavanagh Jr Edward T Apparatus and system having pci root port and direct memory access device functionality

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1667088A1 (ru) * 1989-07-03 1991-07-30 Предприятие П/Я Г-4181 Устройство дл сопр жени абонента с каналом св зи
CN1522402A (zh) * 2001-06-29 2004-08-18 �ʼҷ����ֵ������޹�˾ 多处理器***及运行多处理器***的方法
WO2007003985A1 (en) * 2005-06-30 2007-01-11 Freescale Semiconductor, Inc. Device and method for controlling multiple dma tasks
US9069672B2 (en) * 2009-06-12 2015-06-30 Intel Corporation Extended fast memory access in a multiprocessor computer system
US8521934B1 (en) * 2010-02-25 2013-08-27 Fresco Logic, Inc. Multi-port context-based host controller
CN104221000A (zh) * 2012-03-28 2014-12-17 英特尔公司 用于网络设备上的处理元件的共享的缓冲区
CN104885070A (zh) * 2013-01-17 2015-09-02 英特尔公司 控制片上***(SoC)中的带宽分配

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Dongkyun Ahn et al..Countering code injection attacks with TLB and I/O monitoring.《2010 IEEE International Conference on Computer Design》.2010,1-5. *
S.A. Baird et al..A PMC based ADC card for CMS tracker readout.《IIEEE Transactions on Nuclear Science》.2000,1-4. *
汤显 等.FClock:一种面向SSD的自适应缓冲区管理算法 .《计算机学报》.2010,第33卷(第8期),1460-1471. *
王得利 等.存储器行缓冲区命中预测研究.《计算机科学》.2010,第37卷(第6期),297-302. *

Also Published As

Publication number Publication date
US10963183B2 (en) 2021-03-30
US20180267742A1 (en) 2018-09-20
EP3379423A1 (en) 2018-09-26
CN108628764A (zh) 2018-10-09

Similar Documents

Publication Publication Date Title
US20240171507A1 (en) System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic)
US10908841B2 (en) Increasing throughput of non-volatile memory express over fabric (NVMEoF) via peripheral component interconnect express (PCIe) interface
EP3605347B1 (en) Systems and methods for i/o prioritization in nvme-compliant storage devices
US8838864B2 (en) Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system
US8838865B2 (en) Hot plug ad hoc computer resource allocation
CN109690512A (zh) 具有触发操作的gpu远程通信
US20050228922A1 (en) Interrupt scheme for an input/output device
WO2019233322A1 (zh) 资源池的管理方法、装置、资源池控制单元和通信设备
BR112017009045B1 (pt) Método de acesso de recurso de armazenamento suportado por virtualização de entrada/saída de raiz única sr-iov, controlador de armazenamento suportado por virtualização de entrada/saída de raiz única e dispositivo de armazenamento
US20150067695A1 (en) Information processing system and graph processing method
JP2019053591A (ja) 通知制御装置、通知制御方法及びプログラム
US11966585B2 (en) Storage device and storage system
US7552232B2 (en) Speculative method and system for rapid data communications
US11671382B2 (en) Technologies for coordinating access to data packets in a memory
CN108628764B (zh) 用于对存储器缓冲区存取进行细粒度完成跟踪的技术
CN109614264B (zh) 一种数据备份方法、装置及***
US10367886B2 (en) Information processing apparatus, parallel computer system, and file server communication program
CN107925593B (zh) 用于聚合消息处理的计算节点、方法、设备和可读介质
CN115904259B (zh) 非易失性存储器标准NVMe指令的处理方法及相关装置
CN112463027B (zh) 一种i/o处理方法、***、设备及计算机可读存储介质
US20140112346A1 (en) System and method providing forward compatibility between a driver module and a network interface
WO2018106392A1 (en) Technologies for multi-core wireless network data transmission
CN112463028A (zh) 一种i/o处理方法、***、设备及计算机可读存储介质
CN113031849A (zh) 直接内存存取单元及控制部件
CN112231250B (zh) 存储设备的性能隔离

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant