CN103810133B - 用于管理对共享读缓冲器资源的访问的方法和装置 - Google Patents

用于管理对共享读缓冲器资源的访问的方法和装置 Download PDF

Info

Publication number
CN103810133B
CN103810133B CN201310540769.8A CN201310540769A CN103810133B CN 103810133 B CN103810133 B CN 103810133B CN 201310540769 A CN201310540769 A CN 201310540769A CN 103810133 B CN103810133 B CN 103810133B
Authority
CN
China
Prior art keywords
request
read
data
buffer
bus
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.)
Expired - Fee Related
Application number
CN201310540769.8A
Other languages
English (en)
Other versions
CN103810133A (zh
Inventor
B.M.巴斯
K.A.劳里塞拉
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103810133A publication Critical patent/CN103810133A/zh
Application granted granted Critical
Publication of CN103810133B publication Critical patent/CN103810133B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/37Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

在多处理器计算机系统中在请求读访问的多个总线代理之中分配读缓冲器的结构和方法。基于正执行的当前功能动态限制请求者可以具有的未完成的读的数目,而非基于可用的或固定分配的本地缓冲器空间,这提高了共享缓冲器的请求者的整体带宽。请求总线代理可以控制何时读数据可以从共享缓冲器返回,以最小化为每个请求代理分配的本地缓冲器空间的量,同时保持对于本地缓冲器的高带宽输出。能够通过超额订购物理缓冲器并且控制读数据对缓冲器的返回而对虚拟缓冲器做出请求。

Description

用于管理对共享读缓冲器资源的访问的方法和装置
技术领域
这里的实施例涉及在多处理器计算机系统中的共享缓冲器资源的管理,并且更具体地,涉及用于动态地限制对于读数据的未完成的请求的数量的系统和方法,而请求处理器或总线代理可以基于它正执行的当前功能而累积,而非基于本地缓冲器空间的可用或固定的分配。
背景技术
在计算机系统和网络中,缓冲器是在从一个位置到另一个的转换中存储命令、请求和数据的便利方式。缓冲器在各种应用中使用,包括用于SMP和交换结构系统的处理流控制。缓冲器也可以用于存储器和数据分配,诸如读/写请求缓冲器用于管理在多个源之间的读写访问操作。利用共享缓冲器空间的系统的共同缺点是在用于相同的共享资源的几个总线代理之中的竞争和参加拥堵问题,以及通过高带宽处理的共享缓冲器的支配。
在采用多处理器核的计算机系统中,有利的是采用硬件加速器协处理器来满足对于特定应用的吞吐量要求。用于硬件加速的协处理器经由桥接器传送地址和数据块信息。然后主系统总线将桥接器与其他节点连接,所述其他节点连接到主存储器和一般具有本地专用高速缓冲存储器的单独的处理器核。
在多处理器系统中使用的硬件加速器引擎或协处理器具有与正在执行的特定功能关联的带宽要求。因此,一个硬件加速器引擎的存储器访问操作的数目可以基本上大于或小于相邻的硬件加速器引擎的协处理功能,使得可用缓冲器地址空间的同等更大或更小的使用成为必要。
为了防止数据丢失,当无可用空间时,多处理器系统不应传送数据、命令或请求到缓冲器,因为数据将极可能需要被重新发送,从而进一步加重系统带宽的负担。对缓冲器地址空间的访问也必须公平地分配,以确保较低的带宽处理没有被完全忽略。平等的访问通常是不必要的,因为有些处理将能够利用比高带宽处理低得多的访问来可靠地执行。可以将优先访问分配给更高的带宽处理,但是系统仍需要一种方法,以防止一个处理器或总线代理对缓冲器资源的全部主导,从而具有较低的带宽要求的处理将不会停滞。
对于有效的缓冲器分配问题的先前的解决方案包括对特定应用或处理的缓冲器的专门划分。例如,如果缓冲器有16条字线并且在4个数据通道或应用之间共享,则每个通道可以被分配4条缓冲器字线。虽然公平,但是对于来自单个通道的突发业务量,这种分配方案可能是低效的,因为即使是闲置的,由于分配的固定性质,高带宽通道将无法使用其他缓冲器位置。
对于缓冲器分配的另一解决方案是由缓冲器对其服务的数据通道发出的停止和进行(stop and go)命令。当新数据可以被接受或当空间减少时,缓冲器通过信令来管理其资源。在低容量业务的时间段期间,每个通道接收指示空间可用的“进行”信号,而当空间变得受限以预期溢出状况时接收“停止”信号。该方法提供了整个缓冲器空间的更好利用,因为用户不限于固定的空间分配。但是,该方法也存在风险,因为在当缓冲器发送停止命令时与用户接收并响应该命令之间的等待时间会带来这样的情形:其中,仍将数据发送到接近峰值容量的缓冲器,由此导致溢出和数据丢失。为了防止该情形,在缓冲器填满容量之前适当地发送停止命令。结果,如果所有发送者是对于缓冲器的突发数据,则停止命令将被定时,以防止在缓冲器到达完全容量之前将数据发送给缓冲器。早发送停止命令的缺点在于,缓冲器的最大容量在峰值业务量期间将不会被利用到,但是,虽然如此,可以避免溢出的状况。
在任何分布式或多处理器计算机系统中,数据和地址路径必须通过系统总线提供来互连系统的各个部分。总线可以对于单个IC而言是内部的,或是外部的基于电路板的互连结构。遍历总线的数据的容量以及总线的物理长度和连接设备的类型将带来多个设计限制。由于不同类型的设备具有不同级别的吞吐容量和等待时间,因此如果设备没有准备好接收数据,或不能按发送速率接收数据,则总线必须提供用于流控制的机制,以防止设备被过度使用。
流量控制的已知解决方案是基于额度(credit)的方法,其中发送设备接收额度的分配以在总线上发送数据。额度分配可以表示在接收设备处的缓冲器的容量。当发送器在总线上发送数据时,其额度分配递减。当接收器恢复容量以接收额外的数据时,其向发送器返回额度。这种方法消除了有数据要发送给其缓冲器不具有足够容量的接收器的潜在问题,并允许发送器立即发送数据,而不是等待接收器的许可。如果发送器耗尽其额度的供应,则其暂时被禁止在总线上发送数据。
基于额度的流控制要求发送器维持可用的额度数量的本地记录,这是随数据在总线上向外发送而不断更新的。额度通常由接收器作为单个脉冲或通过接收器的定期更新而返回。由于与其他总线代理的冲突,因此在发送器维持的本地记录和在接收器可用的实际额度之间时常可能发生差异,这被描述为“额度损失”。
多处理器系统的总线代理可以在物理上分布于远程子系统和由交换结构相互连接的节点上。这种模块化系统还可以被配置用于容纳或补偿共享存储器的分布性质。对称多处理(SMP)系统常常要求总线代理传递数据分组到交换结构的不同节点。为了提高系统的效率,数据分组被组合在一起,并映射到虚拟通道,这需要广泛使用缓冲器以维持完全不同的总线处理的各种元素。
虚拟通道必须具备对于共享公共接口和缓存资源的总线处理的独立流控制限制,因此被用于分开在一组通用的物理链路上的业务。
因此,现有技术中存在一种需要,以克服上述的不足和限制。
发明内容
鉴于以上,这里公开的是涉及在多处理器计算机系统中管理共享的存储缓冲器资源的实施例。在各个实施例中,硬件加速引擎耦合到合并本地存储器缓冲器的直接存储器访问(DMA)通道,其保持由硬件加速引擎执行处理功能所需要的数据。在DMA通道中为对于任何单个硬件加速引擎类型可用的读访问请求的数量设置可编程的限度。允许的范围在1和m之间,其中m是在用于请求总线代理的本地读缓冲器中缓冲器空间的总量。具有高带宽要求的硬件加速引擎被分配总缓冲器空间的较大比例,而较低的带宽加速引擎将利用较低的可用缓冲器容量。一旦已经达到可编程的限度,如果需要取得更多读数据,则即使请求DMA通道具有要使用的可用本地缓冲器,请求DMA通道也必须等待直到读已经完成(读数据返回到该请求DMA通道)。
请求者可以具有的未完成读请求的最大数目基于请求者当前正在执行的功能而是动态的。如果其正在执行具有低输入带宽要求的功能,则对于该功能的限度将被编程为请求的低数目。如果请求者正在执行具有相对高输入带宽要求的功能,则对于该功能的限度将被编程为请求的较高数目。对于每个功能的限度被预先编程并且基于请求者正在执行的当前功能来动态地选择。
根据实施例,实现请求仲裁器来确保在对共享缓冲器的分配和访问中的公平。请求仲裁器在服务不同硬件加速引擎的多个请求DMA通道之间使用循环仲裁方案。仲裁器也可以使用来自请求DMA通道的优先级信号的更复杂系统,以对其中功能引擎急需数据的请求给予比仅预取另外的数据的请求更高的优先级。
某些硬件加速器功能要求能够被m个本地读缓冲器容纳的读数据请求的较高吞吐量。为了减少要求的本地缓冲器的数量,第一实施例的修改允许请求者做出比其具有的缓冲器更多的读请求,对于m个缓冲器高达2*m个请求,并且由请求总线代理控制对于每个请求的来自桥接器的读数据的返回。当多个读请求对于相同请求者读缓冲器是未完成时,关于该缓冲器的读数据必须按顺序返回,并且一旦当缓冲器清空时,任何先前接收到的数据已经被转发到硬件加速引擎。每个缓冲器读请求在作为读请求的一部分的两个缓冲器ID之一间拨动。
从每个请求者向读数据控制逻辑发送信号,其指示与该缓冲器ID关联的读数据是否可以被返回给请求者。读数据控制逻辑转换请求者ID和本地缓冲器ID为桥接器中的(映射到对应的)缓冲器的ID,并向桥接器发送类似的信号,其指示桥接器中的哪个读缓冲器能够返回读数据到请求者。当读数据返回到系统总线上的桥接器时,如果该缓冲器标记为准备返回数据,则桥接器将数据转发给请求者。
请求仲裁器防止如果所有桥接器缓冲器分配有未准备使读数据返回的“第二缓冲器读请求”则可能发生的死锁。当空闲或准备返回读数据的共享缓冲器的数目小于阈值限度时,请求仲裁器向请求者发信号,以便仅发送准备使读数据返回的读请求,即,在相关联的本地缓冲器中存在可用的空间。
在实施例的另一方面中,能够调整未完成的读请求限度,以便与请求者读缓冲器关联的第二请求的读数据不会占用桥接器缓冲器很长时间,从而腾出由另一读请求要使用的缓冲器。
每个请求者具有一组专用的、不能由其他请求者使用的本地缓冲器。然而,全都共享在桥接器中的相同的缓冲器。即使请求者可能仍然需要获取更多的输入数据,并使得本地缓冲器可用于做出请求,但是如果请求者具有比其他处理执行相对较低的带宽要求,并且已经具有足够的读请求以满足带宽要求(对于当前正执行的功能的可编程限度),则防止请求者做出将使用在桥接器中可用的更多限制数量的共享缓冲器的额外的读请求。这使得需要获取更多的输入数据的另一请求者满足其带宽要求,以利用那些可用的共享缓冲器。
DMA引擎对于高速缓存线边界内的读数据做出请求并且读请求仲裁器和控制逻辑在多个协处理器之间进行仲裁,以传递读请求到总线桥接器逻辑并且将来自高速缓存或系统存储器的读数据移动到桥接器。
附图说明
参考附图,从以下具体描述中,这里公开的实施例将会被更好地理解,其中附图没必要按照比例绘制,以及其中:
图1是图示具有通过耦接到主总线的桥接器代理连接的共享存储器资源的分布式多处理器计算机系统的实施例的示意框图。
图2是根据本发明的各方面的具有共享存储器资源和采用硬件加速引擎协处理器的通用多处理器计算机系统中读数据缓存元件的代表图的示意框图。
图3是图示根据第一实施例的、请求总线代理的逻辑元件和采取来限制对协处理器硬件加速器引擎的未完成的读数据请求的数量的步骤的示意框图和简化流程图。
图4是图示根据第二实施例的、逻辑元件和采取来限制对协处理器硬件加速器引擎的未完成的读数据请求的数量的步骤的示意框图和简化流程图。
图5示出用于促进在桥接器控制器和请求总线代理之间的读数据的步调的读数据控制逻辑的框图。
图6示出用于促进从仲裁器到请求总线代理的第二读缓冲器请求的读控制逻辑的框图。
具体实施方式
参考在附图中示出且在以下描述中具体描述的非限制实施例,这里的实施例及其各种特征和有利细节将被更充分地解释。
采用专用协处理器资源用于硬件加速的计算机架构的一个示例是IBM电力服务器系统。但是,本领域的技术人员将理解,这里描述的实施例一般适用于具有共享存储器资源的基于总线的多处理器系统。在图1中示出了在电力服务器系统中的硬件加速数据流的简化框图。电力处理器芯片100具有多个CPU核(0-n)和关联的高速缓存110、111、112,其连接电力总线109。存储器控制器113提供在电力总线109和外部系统存储器114之间的链路。I/O控制器115提供在电力总线109和外部I/O设备116之间的接口。电力总线109是促进在各种互连组件之间的数据、地址和控制移动的总线结构。
协处理器综合设备101通过电力总线接口(PBI)桥接器103连接到电力总线109(这里使用的“协处理器”与“协处理器硬件加速器”、“硬件加速器”、“硬件加速引擎”等类似术语同义)。桥接器包含从CPU核110、111、112接收到的、要发布到协处理器综合设备101的协处理器请求的队列。它也包含由协处理器综合设备101发布的读和写命令和数据的队列,并且将它们转换为系统总线109使用的合适的总线协议。协处理器综合设备101包含协处理器的多个通道,每个由DMA引擎和执行协处理器功能的一个或多个引擎组成。
协处理器加速引擎101可以执行密码功能和存储器压缩/解压缩或任何其他专用硬件功能。DMA引擎102代表协处理器引擎101读写数据和状态。电力总线接口(PBI)103缓存在DMA引擎102和电力总线109之间路由的数据,并且使能支持与硬件加速处理关联的协处理器数据移动、中断和存储器管理I/O所需的总线处理。
高级加密标准(AES)和安全散列算法(SHA)密码加速器105、106两两地连接到DMA通道,允许待处理的结合的AES-SHA操作仅移动数据一次。不对称数学函数(AMF)107执行RSA加密和ECC(椭圆曲线加密)。842加速器协处理器108执行存储器压缩/解压缩。本领域的技术人员将会理解,硬件加速器的各种组合可以按照并行或流水线形式被配置而不偏离此处的实施例的范围。
为了加速器执行系统的工作,协处理器综合设备101必须被给予来自管理程序和虚拟机管理器(VMM)(未示出)的工作,其以软件实现来管理在协处理器综合设备101上运行的作业的执行。当由PBI桥接器103接收到协处理器请求命令时,发起对协处理器硬件加速的请求。如果成功地排队请求,则当协处理器可用时,作业将被派发到DMA引擎,即,PBI桥接器103信号通知DMA引擎102对其存在要执行的工作并且DMA引擎102将从作业请求队列的头部移除该作业,并开始处理该请求。
然后,DMA引擎102将协处理器请求分配给连接到所请求类型的协处理器的适当的DMA通道。DMA 102告诉协处理器来启动并且也开始获取与作业请求关联的数据。
当协处理器具有要向存储器写回的输出数据或状态时,它做出对DMA102的输出请求,DMA 102将数据从协处理器移出到本地缓冲存储器,并从那里到PBI 103,然后再到存储器。完成后,协处理器准备接受另一作业请求。
表1-DMA读请求(Read Request)配置寄存器
参照上述表1,示出了与每个DMA通道相关联的配置寄存器的设置。每个DMA通道服务一个或多个硬件加速引擎,它们可以或可以不具有类似的功能。表1的第一项示出了关于高级加密标准(AES)和安全散列算法(SHA)密码加速器(两两连接到DMA通道,允许待处理的结合的AES-SHA操作)的配置设置。对于该配置寄存器存在8个有效项,并且在该范围之外的值是无效的。本领域的技术人员将会理解,可以设计出多种编码方案用于该配置设置,并且不仅限于这里所示的那些实现。不对称的数学函数(AMF)执行RSA加密和ECC(椭圆曲线加密),且同样地,分配最多八个挂起的请求。842加速器协处理器执行存储器压缩和解压缩,并且具有与每个功能关联的配置寄存器和最大数量15的未完成请求。本领域的技术人员将会理解,硬件加速器的各种组合可以按照并行或流水线形式被配置而不偏离此处的实施例的范围,并且可以容纳更少或更多的挂起的读数据请求。
图2示出利用共享存储器资源203、205、206、208和采用硬件加速引擎协处理器213、214的通用多处理器计算机系统200中读数据缓存元件的框图。系统总线201提供在主存储器206、处理器核202、204和桥接器控制器207之间的数据路径,这促进在系统存储器206或处理器高速缓冲存储器203、205和DMA控制器209之间并且最终到硬件加速引擎213和214的数据传送。桥接器控制器207包括n个共享的读缓冲器208,用于暂时存储读数据请求和从存储器或高速缓存中检索的数据。请求者0:L-1通过DMA通道对由硬件加速器执行的作业所需要的读数据发送请求。请求者211、212每个包括在与其连接的硬件加速器213、214之间共享的m个本地读缓冲器。请求仲裁器和读控制元件210管理读数据请求的传递、从属性和优先级。在桥接器207中的共享读缓冲器208由协处理器DMA控制209中的读数据控制逻辑210管理。
在实施例中,协处理器请求块(CRB)是描述正在执行什么协处理器功能的数据的高速缓存线,并且还包含对于用于至加速引擎的输入数据的多个数据区域或用于由加速引擎产生的输出数据以及报告协处理器操作的最终状态的目的地的指针。
在实施例中,协处理器参数块(CPB)包含引擎所使用的、用于配置要执行的操作的输入区以及能够由引擎使用的、用于基于执行的操作,向外写出将由另一CRB使用的中间结果或最终结果的输出区。
来自协处理器硬件加速引擎的输出数据表示加速器对输入数据的计算结果。与协处理器输出的数据关联的指针是目标数据描述符条目(TGTDDE)-具有对数据的单个块或数据的多个块的列表(其中由协处理器产生的输出数据将存储在此)的字节计数的指针。TGTDDE行为类似于源数据描述符条目(SRCDDE),尽管用于写出由协处理器加速引擎产生的目标数据。当DDE计数不为零时,顺序遍历该列表,使用来自列表的如需要一样多的目标DDE,由协处理器加速器引擎产生的目标数据的流将被向外写出。
进入的读数据请求由DMA通道控制器(请求者211、212)发起,以获取协处理器CPB数据、源数据以及目标和源DDE两者的数据。使用循环优先级方案来在做出请求的多个通道之间进行仲裁。关于读数据的挂起的请求的数量受到桥接器中共享的读缓冲器的数量n的限制。
通道控制器(请求者211和212)做出请求,并提供所请求的读数据的起始地址,请求的字节数-其组合不应该超过单个高速缓存线。请求者识别在数据应当返回的DMA控制器内的目的地,该控制器可以包括DDE寄存器或属于该请求者的高速缓存线缓冲器。一旦缓冲器变为可用,该请求的目的地准备好接受返回的数据。请求者也表明它是将接收整个缓存线,还是仅仅半个字。
请求仲裁器210将选择在桥接器207中的闲置桥接器缓冲器208之一来用于读数据请求。仲裁器将桥接器缓冲器与通道控制器和用于该通道控制器的目的地关联,并且将请求转发到桥接器控制器207。
为了防止死锁,向桥接器控制器207发送的n个读请求中的至少一个必须能够使数据返回到DMA 209。当闲置或能够返回读数据到DMA 209的共享缓冲器的数目小于阈值时,请求仲裁器信号通知请求者只发送准备好让读数据返回的读请求。桥接器207在系统总线201上做出读请求,并当数据返回时缓存该数据。请求者211、212向DMA进入读控制逻辑209指示它们的高速缓存线中的哪个已准备好接受读数据。每个高速缓存线缓冲器具有多个位,每一位用于使用该高速缓存线缓冲器的每个可能的未完成的请求。根据实施例,每个缓冲器存在最多两个请求。只有对应于缓冲器的最旧的请求的该位能够被断言为对于缓冲器必须按照被请求的顺序加载的数据。本领域的技术人员会明白,另外的实施例可以指定每个缓冲器的更高或更低数目的请求和非FIFO缓冲方案。
DMA进入读控制逻辑210将来自通道控制器请求者211、212的缓冲器准备信号映射为对桥接器207的缓冲器读使能信号,其指示n个读请求中的哪个已准备使数据返回到DMA209(即,不是对进入高速缓存线缓冲器的第二读请求)。桥接器207将选择包含数据的n个共享缓冲器208中的一个,并且来自DMA的读使能被断言并且每个周期以128位(对于DDE数据)或256位(对高速缓存线缓冲器的数据)返回该数据到DMA 209,直到所有请求的数据已被发送到DMA 209为止。在数据已被传送到目的地后,保持读数据的桥接器缓冲器再度可用以用于另一读请求。
参考第一实施例,图3示出说明逻辑元件和用于限制对请求总线代理的未完成的读数据请求的数量的处理步骤的示意框图和简化流程图。请求者逻辑300,与专用DMA通道关联,服务一个或多个硬件加速引擎协处理器304a-304m,并且提供从0到m-1的本地缓冲器302以维持从桥接器控制器207接收的数据的高速缓存线,并且存储指示本地缓冲器302是否空闲或持有有效数据的状态位。本地缓冲器也将指示读数据的请求是否对于桥接器控制器207挂起的状态。按先入先出(FIFO)的方式服务该请求,从而没有请求或数据不按顺序发送。然而,在本领域的技术人员将会理解,各种排序方案和优先级功能可以被实现来服务于不按顺序的请求。请求者可以服务具有相同功能的硬件加速器或具有不同功能的硬件加速器。在这方面,请求者逻辑300包含配置寄存器303,其与请求者服务的硬件加速器关联,该请求者设定对于对应的硬件加速器可允许的未完成的读请求的最大数量。
仍参照图3,示出请求者逻辑的部分流程301。读数据可基于高速缓存线或按更大的格式取得。请求者逻辑将需要的读数据请求解析为任何的帧转换并且发布足够数量的请求,以接收要求的输入源数据。如果没有进一步要求读数据305,则该处理结束。否则,请求者逻辑检查以查看在请求者内的本地缓冲器是否可用306,以从桥接器接收所请求的数据。如果不是,则系统等待,直到本地缓冲器空闲以接受来自桥接器的数据。请求者逻辑接下来确定对于与该硬件加速器关联的读数据的挂起的请求的数目是否小于选定的限度307。如果没有,则系统再次等待,直到在向桥接器308发送请求之前一个或多个挂起的数据请求被服务308。最后,当向桥接器转发请求时,请求者逻辑向将以确认来答复的桥接器发布请求信号309并且该过程重复。
依据第二实施例,图4也示出说明逻辑元件和用于限制对请求总线代理的未完成的读数据请求的数量的处理步骤的示意框图400和简化流程图401。请求者逻辑400和图3中所示的第一实施例一致,除了m个本地缓冲器402指示对于每个硬件加速引擎404a-m的读数据的每个本地缓冲器的最大两个挂起的请求。如在第一实施例中,对于读数据的请求必须按顺序返回。因此,在第二请求被服务之前,第一请求的结果必须被转发到请求硬件加速器404a-m。
在图4的部分处理流程中示出与每个缓冲器的第二读请求关联的处理步骤401。请求者首先确定是否需要更多的读数据405。然后请求者检查空闲的本地缓冲器是否可用406。如果空闲的本地缓冲器可用,则请求者确定该请求计数是否在规定的限制内407,这是基于正在执行的功能。如果在限制内,则读请求被转发到桥接器控制器408,并且系统等待来自仲裁器210的确认信号409,并且重复上述处理。在空闲的本地缓冲器仍然不可用时,请求者逻辑300检查对于单个挂起的请求是否存在可用的本地缓冲器。如果是,则请求者逻辑检查仲裁者210是否允许第二请求被挂起或不依赖于使能向请求者发送回数据或空闲的、桥接器207中的缓冲器的数目。如果具有一个请求挂起的缓冲器不可用,或者如果仲裁者210不允许排队第二请求,则请求者等待另外的缓冲器变得可用。
参考图5,示出根据第二实施例的、用于从桥接器207到请求者的读数据的控制逻辑500。当读请求被分配到共享缓冲器时,根据请求的请求者ID(0:L-1)和本地缓冲器ID(0:2m-1)信息被存储在控制寄存器501中。共享缓冲器控制寄存器0:n-1将请求者ID(0:L-1)和本地缓冲器ID(0:2m-1)信息提供给选择mux逻辑,其转发缓冲器准备信号到桥接器207。选择mux逻辑提供相同的缓冲器准备信号给共享缓冲器控制寄存器,以反映哪个请求者和相应的本地缓冲器准备接收所请求的读数据。缓冲器准备信号利用表示为虚拟缓冲器的总的缓冲器空间的一定比例进行编码,这允许系统容纳比可用的本地缓冲器更多的读请求,因为存在与在桥接器和请求者控制逻辑之间传播的数据和请求关联的等待时间。在图5中,比例示出为2:1,因为索引符号loc_buf_rdy信号表示0:2m-1或两倍于m个本地缓冲器。发送到桥接器的读请求到桥接器缓冲器中可用的读数据的等待时间将确定可能需要在何种程度上超额订购一组本地缓冲器。换句话说,让单个请求者的一部分本地读缓冲器表示为额外的虚拟缓冲器使能系统容纳更多的挂起的读数据请求,允许更高的读数据带宽,而不会在物理上产生额外的本地缓冲器的成本。
参看图6,示出根据第二实施例的、用于对读数据发出第二请求的请求者的读数据控制逻辑。读数据控制逻辑管理来自请求者0:(L-1)的读数据请求,并对于驻存在桥接器控制器的全部共享缓冲器资源保持状态寄存器。空闲或buf_rdy(0:N-1)信号从状态寄存器输出。该信号指示缓冲器空闲或准备接收来自共享的桥缓冲器的数据。这些信号在累加器中相加并且结果与阈值计数进行比较。如果累加器的值小于阈值门限,则比较器向请求者发出块信号Arb-block_2nd_req。Arb-block_2nd_req的作用是防止如下状况,其中所有共享的桥接器缓冲器已分配有第二读请求,其不能够从桥接器缓冲器接收数据,从而导致停滞的状况。当信号被断言时,请求者被禁止做出还没有准备好接受读数据的请求,但是,请求者仍可以做出准备接受读数据的请求。
仲裁器210接收来自请求者0:(L-1)的对读数据的请求,并使用循环仲裁器向桥接器控制器接口转发对最低编号的空闲桥接器缓冲器的选择的请求。仲裁器210关于共享缓冲器状态寄存器(0:N-1)的每个是否分配到特定的读数据请求,向共享缓冲器状态寄存器(0:N-1)的每个发送信号。共享缓存器状态寄存器也向仲裁器通知空闲状态,这提供了选择将被转发到桥接器控制器接口的下一个请求的基础,该接口随后发出确认信号返回到仲裁器。
虽然已经参考优选实施例或各实施例描述了本发明,本领域的技术人员将理解各种修改可以被做出并且等价物可以替换其元件,而不脱离本发明的范围。此外,可以实现许多修改以将特定情况或材料适配于本发明的教示而不脱离本发明的本质范围。因此,本发明无意于限制到作为实现本发明所预期的最佳模式而公开的特定实施例,相反,本发明将包括落入所附权利要求的范围的全部实施例。
应该进一步理解,这里使用的术语仅用于描述和公开实施例的目的,而不是用于限制。如这里所用,除非上下文清楚地指示外,单数形式“一个”和“该”旨在同时包含复数形式。还应当理解,术语“包含”和/或“包括”在说明书中使用时,表示所述特征、整体、步骤、操作、元件和或组件的存在,但并不排除一个或更多个其它特征、整体、步骤、操作、元件、组件和/或其组的存在或增加。另外,应该理解,在下面权利要求的所有部件的对应结构、材料、动作和等价物或步骤加功能元件意图包括用于结合如具体声明的其他请求的元件执行功能的任何结构、材料或动作。
以上描述已经基于说明和描述的目的被展示,但是无意穷举或限制按照公开形式的实施例。对本领域的技术人员而言,对公开实施例的许多修改和变化将是明显的,而不脱离公开实施例的精神和范围。

Claims (16)

1.在具有促进在耦接到等级总线的多个代理之间的数据传递的该总线架构的多处理器计算机系统中,一种管理对桥接器控制器中的共享缓冲器资源的访问的方法,包括:定义对于请求读数据的总线代理的挂起读数据请求的限度,1到m,其中m等于在请求总线代理中缓冲器的数量;在取得关于请求总线代理的另外的读数据之前,一旦挂起读数据请求的数量达到该限度则等待直到读操作完成;并且采用循环仲裁方案以确保共享存储器资源不被第一请求总线代理支配,从而没有第二总线代理的执行处理因为缺乏读数据而停滞。
2.根据权利要求1所述的方法,其中请求仲裁器使用循环仲裁方案以基于请求的类型而服务多个读数据请求。
3.根据权利要求1所述的方法,其中,挂起读数据请求包括预先取得另外的读数据或取得对于由多个总线代理中的一个服务的可执行处理所要求的数据。
4.根据权利要求1所述的方法,其中所述循环仲裁方案还包括基于功能执行的类型而建立关于挂起读数据请求的优先级,并且所述循环仲裁方案在获得对共享缓冲器资源的访问中确保在各请求总线代理之中的公平。
5.根据权利要求1所述的方法,其中读数据的完成包括向请求总线代理返回读数据。
6.根据权利要求1所述的方法,其中共享缓冲器资源驻留在桥接器控制器中。
7.根据权利要求1所述的方法,其中,挂起读数据请求的限度直接与对应于请求总线代理的执行功能的输入带宽要求成比例。
8.根据权利要求1所述的方法,还包括基于多个读请求者的处理带宽要求,在多个读请求者之间分配多个共享读数据缓冲器。
9.根据权利要求1所述的方法,还包括基于正执行的功能的临时带宽要求,动态地限制请求者可以具有的未完成的读请求的数目。
10.根据权利要求1所述的方法,还包括通过利用在桥接器控制器中的共享缓冲器资源来增加在请求总线代理中的有效读缓存。
11.根据权利要求1所述的方法,还包括通过请求总线代理控制来自共享缓冲器资源的读数据的返回。
12.在多处理器计算机系统中,一种管理来自多个总线代理的读数据请求的方法,包括:轮询第一总线代理是否需要数据以执行功能;如果需要另外的读数据,则检查空闲的本地缓冲器是否可用,以及如果不需要另外的数据,则终止处理;如果没有空闲的本地缓冲器可用,则确定当前是否存在具有一个读数据请求挂起的本地缓冲器;如果没有具有一个读数据请求挂起的本地缓冲器可用,则等待直到本地缓冲器空闲,如果本地缓冲器具有一个读数据请求挂起,则允许前进到第二挂起读请求,监视对于第一总线代理的挂起读数据请求的数量是否小于定义的限度;当对于第一总线代理的挂起读数据请求的数量小于定义的限度时,处理第一总线代理的读数据请求;并且在该请求已经被确认之后确定是否存在另外的读数据请求。
13.一种请求总线代理,包括:多个本地缓冲器,用于存储由耦接到请求总线代理的多个硬件加速器引擎中的一个使用的读数据;和读请求选择逻辑,包括:多个寄存器,用于存储关于由请求总线代理服务的多个可执行功能的分配的读请求限度,其中,分配的读请求限度由通过请求总线代理服务的硬件加速器功能确定;第一复用器,用于选择多个寄存器之一,当前挂起请求寄存器,和具有来自第一复用器的输入的比较器,以及挂起请求计数寄存器,用于选择下一个允许的读数据请求。
14.一种管理从请求总线代理发布的读数据请求的方法,包括:确定第一请求总线代理是否具有挂起的读数据请求,如果是,如果需要另外的读数据则监视空闲的本地缓冲器是否可用,如果不需要另外的读数据则终止处理;监视对于第一总线代理的请求计数是否小于定义的限度;如果对于第一总线代理的请求计数小于定义的限度则处理关于第一总线代理的读请求;并且在已经确认读数据请求之后确定是否存在另外的读数据请求。
15.一种具有共享存储器资源的多处理器计算机系统,包括:总线,促进在耦接到该总线的多个代理之间的地址和数据的传递;多个多处理器节点,每个节点具有与其连接的一个或多个处理器核;与多个多处理器节点的每个关联的存储器子系统;本地高速缓存,与一个或多个处理器核的每个关联;桥接器控制器,促进在共享存储器资源之间数据的传递,其中桥接器控制器包括用于对存储器的读请求的一组共享的读数据缓冲器;多个协处理器硬件加速器,每个协处理器硬件加速器具有一个或多个专用的处理功能和用于记录读请求限度的设置的配置寄存器;直接访问存储器(DMA)控制器,用于管理往返于多个协处理器硬件加速器的数据流;以及与多个协处理器硬件加速器的每个关联的多个本地读缓冲器。
16.根据权利要求15所述的系统,其中在请求者中包含关于未完成的读请求的数量的读请求限度。
CN201310540769.8A 2012-11-05 2013-11-05 用于管理对共享读缓冲器资源的访问的方法和装置 Expired - Fee Related CN103810133B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/668,527 US9251108B2 (en) 2012-11-05 2012-11-05 Managing access to shared buffer resources
US13/668,527 2012-11-05

Publications (2)

Publication Number Publication Date
CN103810133A CN103810133A (zh) 2014-05-21
CN103810133B true CN103810133B (zh) 2017-09-12

Family

ID=50623467

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310540769.8A Expired - Fee Related CN103810133B (zh) 2012-11-05 2013-11-05 用于管理对共享读缓冲器资源的访问的方法和装置

Country Status (2)

Country Link
US (1) US9251108B2 (zh)
CN (1) CN103810133B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9385962B2 (en) * 2013-12-20 2016-07-05 Intel Corporation Method and system for flexible credit exchange within high performance fabrics
EP3206339B1 (en) * 2014-10-31 2018-12-12 Huawei Technologies Co., Ltd. Network card configuration method and resource management center
CN106980595B (zh) * 2014-12-05 2019-08-13 三星半导体(中国)研究开发有限公司 共享物理内存的多处理器通信系统及其通信方法
CN104536804A (zh) * 2014-12-23 2015-04-22 西安电子科技大学 面向关联任务请求的虚拟资源调度系统及调度和分配方法
CN105988874B (zh) 2015-02-10 2020-08-28 阿里巴巴集团控股有限公司 资源处理方法及装置
EP3274829A4 (en) * 2015-03-26 2018-11-21 Intel Corporation Cross-level prefetch for shared multi-level libraries
CN104932942B (zh) * 2015-05-29 2018-11-13 华为技术有限公司 缓冲资源的分配方法和装置
US11467769B2 (en) 2015-09-28 2022-10-11 Sandisk Technologies Llc Managed fetching and execution of commands from submission queues
US9927983B2 (en) * 2015-09-28 2018-03-27 Sandisk Technologies Llc Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues
US10642500B2 (en) * 2015-09-28 2020-05-05 Sandisk Technologies Llc Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues
US10866910B2 (en) 2015-09-28 2020-12-15 Sandisk Technologies Llc Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments
EP3358468B1 (en) * 2015-10-01 2020-12-09 Renesas Electronics Corporation Semiconductor device
CN105468546B (zh) * 2015-11-17 2017-04-12 中国科学院计算技术研究所 互连电路的数据处理装置和方法
US10289587B2 (en) * 2016-04-27 2019-05-14 Arm Limited Switching device using buffering
CN105930519A (zh) * 2016-05-23 2016-09-07 浪潮电子信息产业股份有限公司 一种基于集群文件系统的全局共享读缓存方法
US11012378B2 (en) * 2016-08-02 2021-05-18 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for shared buffer allocation in a transport node
US20180181186A1 (en) * 2016-12-27 2018-06-28 Paul S. Diefenbaugh Buffering data from high-speed i/o to enable longer reduced power consumption state residency
JP6992295B2 (ja) * 2017-07-11 2022-01-13 富士フイルムビジネスイノベーション株式会社 電子装置
US10671323B2 (en) * 2017-08-29 2020-06-02 SK Hynix Inc. Memory system with shared buffer architecture for multiple decoders and method of operating such memory system
CN109814940A (zh) * 2017-11-21 2019-05-28 展讯通信(上海)有限公司 配置硬件加速器的方法、装置及处理器
TWI659359B (zh) 2018-04-27 2019-05-11 慧榮科技股份有限公司 控制儲存裝置之方法
US10782916B2 (en) * 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US10963172B2 (en) 2018-08-09 2021-03-30 Apple Inc. Systems and methods for providing a back pressure free interconnect
CN109922015A (zh) * 2019-01-23 2019-06-21 珠海亿智电子科技有限公司 一种多路数据流共享缓冲器方法和系统
CN114556314A (zh) * 2019-10-31 2022-05-27 华为技术有限公司 处理非缓存写数据请求的方法、缓存器和节点
US11054998B1 (en) * 2019-12-12 2021-07-06 Facebook, Inc. High bandwidth memory system with distributed request broadcasting masters
CN111723924B (zh) * 2020-05-28 2022-07-12 西安交通大学 一种基于通道共享的深度神经网络加速器
US12013806B2 (en) 2020-08-19 2024-06-18 Intel Corporation I3C pending read with retransmission
CN115309694A (zh) * 2021-05-07 2022-11-08 脸萌有限公司 片上集成电路、数据处理装置和方法
US12119335B2 (en) 2021-12-16 2024-10-15 International Business Machines Corporation Interconnection structures for high bandwidth data transfer
CN117149442B (zh) * 2023-10-30 2024-02-20 山东浪潮数据库技术有限公司 一种基于分布式架构数据库的硬件加速方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1221919A (zh) * 1997-11-06 1999-07-07 阿尔卡塔尔公司 在处理器单元之间交换数据的系统
CN1503947A (zh) * 1999-12-28 2004-06-09 ض� 动态优先级外部事务处理系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3411300B2 (ja) * 1992-02-18 2003-05-26 株式会社日立製作所 情報処理装置
FR2771573B1 (fr) * 1997-11-27 2001-10-19 Alsthom Cge Alkatel Element de commutation de paquets a memoires tampons
US7213087B1 (en) 2000-08-31 2007-05-01 Hewlett-Packard Development Company, L.P. Mechanism to control the allocation of an N-source shared buffer
US6877048B2 (en) * 2002-03-12 2005-04-05 International Business Machines Corporation Dynamic memory allocation between inbound and outbound buffers in a protocol handler
US7096307B2 (en) * 2002-12-18 2006-08-22 Freescale Semiconductor, Inc. Shared write buffer in a peripheral interface and method of operating
US7356648B2 (en) * 2003-10-02 2008-04-08 International Business Machines Corporation Shared buffer having hardware controlled buffer regions
US7493426B2 (en) 2005-01-31 2009-02-17 International Business Machines Corporation Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control
US20060174050A1 (en) * 2005-01-31 2006-08-03 International Business Machines Corporation Internal data bus interconnection mechanism utilizing shared buffers supporting communication among multiple functional components of an integrated circuit chip
US7136954B2 (en) 2005-01-31 2006-11-14 International Business Machines Corporation Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism
US7643410B2 (en) * 2006-03-29 2010-01-05 Intel Corporation Method and apparatus for managing a connection in a connection orientated environment
US8037213B2 (en) * 2007-05-30 2011-10-11 International Business Machines Corporation Replenishing data descriptors in a DMA injection FIFO buffer
US7840751B2 (en) * 2007-06-29 2010-11-23 Seagate Technology Llc Command queue management of back watered requests
US7594047B2 (en) * 2007-07-09 2009-09-22 Hewlett-Packard Development Company, L.P. Buffer circuit
US9064050B2 (en) * 2010-10-20 2015-06-23 Qualcomm Incorporated Arbitrating bus transactions on a communications bus based on bus device health information and related power management
US9128925B2 (en) * 2012-04-24 2015-09-08 Freescale Semiconductor, Inc. System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines
US9009370B2 (en) * 2013-03-04 2015-04-14 Lsi Corporation Intelligent data buffering between interfaces

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1221919A (zh) * 1997-11-06 1999-07-07 阿尔卡塔尔公司 在处理器单元之间交换数据的系统
CN1503947A (zh) * 1999-12-28 2004-06-09 ض� 动态优先级外部事务处理系统

Also Published As

Publication number Publication date
CN103810133A (zh) 2014-05-21
US9251108B2 (en) 2016-02-02
US20140129749A1 (en) 2014-05-08

Similar Documents

Publication Publication Date Title
CN103810133B (zh) 用于管理对共享读缓冲器资源的访问的方法和装置
US10817184B2 (en) Control node for multi-core system
US11907528B2 (en) Multi-processor bridge with cache allocate awareness
US10169080B2 (en) Method for work scheduling in a multi-chip system
WO2018035856A1 (zh) 实现硬件加速处理的方法、设备和系统
US7676588B2 (en) Programmable network protocol handler architecture
US6751684B2 (en) System and method of allocating bandwidth to a plurality of devices interconnected by a plurality of point-to-point communication links
US20020146022A1 (en) Credit-based flow control technique in a modular multiprocessor system
US20010055277A1 (en) Initiate flow control mechanism of a modular multiprocessor system
JP2002510079A (ja) メモリ・インタフェース間で読み書きの順序付けられた実行を強制する方法と装置
US20150253997A1 (en) Method and Apparatus for Memory Allocation in a Multi-Node System
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US20150254207A1 (en) Method and system for ordering i/o access in a multi-node environment
CN111290983A (zh) Usb传输设备及传输方法
JPH10187635A (ja) バッファ・スペース動的割り当てシステム
US9727499B2 (en) Hardware first come first serve arbiter using multiple request buckets
US7844758B1 (en) Dynamic resource allocation scheme for efficient use of a queue
US10917198B2 (en) Transfer protocol in a data processing network
CN109145397A (zh) 一种支持并行流水访问的外存仲裁结构
JP2001067298A (ja) ハブ及びポート・アーキテクチャーを有する転送制御装置における低速ポートについての障害を防止するための書込み要求キューの使用

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170912