CN105378647A - 存储器聚合设备 - Google Patents

存储器聚合设备 Download PDF

Info

Publication number
CN105378647A
CN105378647A CN201380077301.8A CN201380077301A CN105378647A CN 105378647 A CN105378647 A CN 105378647A CN 201380077301 A CN201380077301 A CN 201380077301A CN 105378647 A CN105378647 A CN 105378647A
Authority
CN
China
Prior art keywords
group
input
output
data
fifo memory
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
CN201380077301.8A
Other languages
English (en)
Other versions
CN105378647B (zh
Inventor
亚戎·夏哈
约阿夫·皮莱格
亚历克斯·塔勒
亚历克斯·乌曼斯基
拉米·泽马奇
熊礼霞
陆玉春
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105378647A publication Critical patent/CN105378647A/zh
Application granted granted Critical
Publication of CN105378647B publication Critical patent/CN105378647B/zh
Active 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/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
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Abstract

本发明涉及一种用于存储一个输入数据流组(902)以及将数据取出至一个输出数据流组(904)的存储器聚合设备(990),其中,可操作所述输入数据流组(902)和所述输出数据流组(904)从而在每个时钟周期内均进行发送新数据和停止发送新数据中的任一项,且所述存储器聚合设备(990)包括:一个FIFO存储器组(901a,901b,……,901c),其中,每个FIFO存储器包括输入设备和输出设备;输入互连器(903),用于根据输入互连矩阵,将所述输入数据流组(902)中的每个输入数据流与所述FIFO存储器组(901a,901b,……,901c)中的每个输入设备进行互连;输出互连器(905),用于根据输出互连矩阵,将所述FIFO存储器组(901a,901b,……,901c)中的每个输出设备与所述输出数据流组(904)中的每个输出数据流进行互连;输入选择器(907),用于根据输入数据调度方案,选择所述输入互连矩阵;输出选择器(909),用于根据输出数据调度方案,选择所述输出互连矩阵;内存控制器(911),分别与所述输入选择器(907)和所述输出选择器(909)耦合,其中,所述内存控制器(911)用于:控制所述输入数据调度方案,以使来自所述输入数据流组(902)的数据通过轮询方式在所述FIFO存储器组(901a,901b,……,901c)中分发,以及控制所述输出数据调度方案,以使来自所述FIFO存储器组(901a,901b,……,901c)的数据通过轮询方式取出至所述输出数据流组(904)中。

Description

存储器聚合设备
背景技术
本发明涉及一种存储器聚合设备以及一种用于将多个输入数据流存储至一个FIFO存储器组以及在所述FIFO存储器组中取出多个输出数据流的方法。
高速硬件经常需要将很多数据流聚合成单个数据流。这在当前已普遍使用,其在系统的输入中,以及在一种将流量作为单个数据流调度出的机制中使用多个FIFO。由于不同的FIFO使用不用的存储器,且这些存储器并不共享,故存在缺陷,可能导致芯片存储区域的大幅浪费。
发明内容
本发明的目的在于提供一种单个聚合器FIFO的概念。
该目的通过独立权利要求的特征来实现。通过权利要求、说明书和附图,更易于进一步理解实施形式。
本发明的主要思想在于提供一种通过一个FIFO存储器组以使用共享存储器的单个聚合器FIFO。通过各单个的FIFO存储器的互连机制,使各FIFO存储器如使用共享存储器的单个FIFO一样运行。
所述互连机制包括将输入流量互连至所述FIFO存储器组的输入互连矩阵以及将所述FIFO存储器互连至输出流量的输出互连矩阵。输入互连和输出互连由存储控制器根据数据聚合规则控制。
为详细描述本发明,将使用以下术语、缩写和符号:
FIFO:先进先出存储器(First-InFirst-Outmemory),
VLSL:超大规模集成电路(Verylargescaleintegration),
QoS:服务质量(qualityofservice),
CPU:中央处理器(centralprocessingunit),
RR:轮询(round-robin),
RCS:速率控制选择单元或速率限制单元(ratecontrolselectionunitorratelimitingunit),
LVP:查找向量准备单元(lookupvectorprepareunit),
PFF:前缀森林单元(pre-fixforestunit),
req_vec:请求组或请求向量(setofrequestsorvectorofrequests),
ack_vec:确认组或确认向量(setofacknowledgementsorvectorofacknowledgements),
raw_mask:选择掩码组或选择掩码向量(setofselectionmasksorvectorofselectionmasks),
CMP:比较模块(comparemodule),
NASO:NotAndShiftOnemodule,
TE、Bld和Sel:指定可能有不同优先级的不同队列组(designatedifferentqueuegroupswhichmayhavedifferentpriorities),
PD:传播延迟(propagationdelay),
FA和HA:实现前缀树的加法器(addersimplementingtheprefixtree)。
根据第一方面,本发明涉及一种用于存储一个输入数据流组(setofinputdatastreams)以及将数据取出至一个输出数据流组(setofoutputdatastreams)的存储器聚合设备(memoryaggregationdevice),其中,所述输入数据流组和所述输出数据流组是可操作的从而在每个时钟周期内进行发送新数据和停止发送新数据中的任一项,所述存储器聚合设备包括:一个FIFO存储器组(setofFIFOmemories),其中,每个FIFO存储器包括输入(input)和输出(output);输入互连器(inputinterconnector),用于根据输入互连矩阵(inputinterconnectionmatrix),将所述输入数据流组中的每个输入数据流与所述FIFO存储器组中的每个输入进行互连;输出互连器(outputinterconnector),用于根据输出互连矩阵(outputinterconnectionmatrix),将所述FIFO存储器组中的每个输出与所述输出数据流组中的每个输出数据流进行互连;输入选择器(inputselector),用于根据输入数据调度方案(outputdataschedulingscheme),选择所述输入互连矩阵;输出选择器(outputselector),用于根据输出数据调度方案(outputdataschedulingscheme),选择所述输出互连矩阵;存储控制器(memorycontroller),与所述输入选择器和所述输出选择器耦合,其中,所述存储控制器用于:控制所述输入数据调度方案,以使来自所述输入数据流组的数据通过轮询方式在所述FIFO存储器组中分发(spread),以及控制所述输出数据调度方案,以使来自所述FIFO存储器组的数据通过轮询方式取出至所述输出数据流组中。
通过轮询机制,整个存储器聚合设备,即宽FIFO通过“先进先出”方式运行。每个请求将几乎同时得到处理。因此,存储器聚合设备作为单个聚合器FIFO运行,且所述存储器聚合设备有较高的吞吐量。
当来自所述输入数据流组的数据在所述FIFO存储器组中分发,这些数据均匀加载到所述FIFO存储器上,且不会发生过载,因而提高了所述FIFO存储器的吞吐量。
输入/输出互连器可作为同步硬件电路调度器实现。所述输入/输出互连器能够根据某一调度方案,选择N个请求,例如,输入队列或输出队列,且所述输入/输出互连器能够在每个时钟周期内进行P次选择或发放。因此,所述输入/输出互连器允许以低时延和高于系统时钟的速率来处理请求。
所述输入/输出互连器可用作CPU中的任务调度器,或用于在切换元素或路由元素时对数据包进行调度。为得到复杂的调度方案,所述输入/输出互连器作为存储器聚合设备的构造块。所述输入/输出互连器与若干任务调度器连接,其中,为得到存储器聚合设备的分层调度方案,输入/输出互连器配置不同。这样,存储器聚合设备能如单个共享存储器一样运行,从而能够应用统一设计的FIFO存储器。
根据第一方面,在所述存储器聚合设备的第一种可能的实施形式中,多个FIFO存储器(901a、901b,……,901c)(anumberoftheFIFOmemories)与多个输入数据流(902)(anumberoftheinputdatastreams)对应。
当FIFO存储器的数量与输入数据流的数量对应时,存储器聚合设备的设计较方便。
根据第一方面或根据第一方面的第一种实施形式,在所述存储器聚合设备的第二种可能的实施形式中,所述输入互连器包括一个复用器组(setofmultiplexers),用于实现所述输入互连矩阵,且所述输出互连器包括一个复用器组,用于实现所述输出互连矩阵。
所述复用器组,例如,作为VLSL系统设计中的标准门阵列(standardgatearrays)实现,便于所述存储器聚合设备的设计,且便于移动到不同的硬件平台。
根据第一方面的第二种实施形式,在所述存储器聚合设备的第三种可能的实施形式中,所述输入选择器包括一个门树仲裁器逻辑(gate-tree-arbiterlogic),用于控制所述输入互连器的所述复用器组,且所述输出选择器包括一个门树仲裁器逻辑,用于控制所述输出互连器的所述复用器组。
所述门树仲裁器逻辑是一种用于快速切换的高效硬件结构。
根据第一方面或根据第一方面的上述实施形式中的任意一种,在所述存储器聚合设备的第四种可能的实施形式中,所述输入选择器用于选择所述输入互连矩阵,使得所述输入数据流组中,只有携带有效数据请求的数据流互连至所述FIFO存储器组。
通过这种处理,由于不会对无效数据请求进行处理,也不会将无效数据请求存储至所述存储器聚合设备中,因此,提高了所述存储器聚合设备的吞吐量。
根据第二方面,本发明涉及一种用于存储一个输入数据流组以及将数据取出至一个输出数据流组的存储器聚合设备,其中,所述输入数据流组和所述输出数据流组是可操作的从而在每个时钟周期内进行发送新数据和停止发送新数据中的任一项,且所述存储器聚合设备包括:一个FIFO存储器组,其中,每个FIFO存储器包括输入和输出;输入互连器,用于根据输入互连矩阵,将所述输入数据流组中的每个输入数据流与所述FIFO存储器组中的每个输入进行互连;输出互连器,用于根据输出互连矩阵,将所述FIFO存储器组中的每个输出与所述输出数据流组中的每个输出数据流进行互连;输入选择器,用于选择所述输入互连矩阵,使得所述输入数据流组中,携带有效数据请求(validdatarequests)的数据流压缩成所述FIFO存储器组中一个连续的数据请求组(continuoussetofdatarequests);输出选择器,用于根据输出数据调度方案,选择所述输出互连矩阵;存储控制器,与所述输入选择器和所述输出选择器耦合。
为了使所述FIFO组作为一个宽FIFO运行,有必要对输入数据流进行压缩。
根据第二方面,在所述存储器聚合设备的第一种可能的实施形式中,所述输入选择器用于选择所述输入互连矩阵,使得所述输入数据流组中,携带有效数据请求的所述数据流与指向所述FIFO存储器组的空条目(vacantentry)的FIFO指针(FIFOpointer)对齐。
当只有携带有效数据请求的数据流与指向空FIFO条目的FIFO指针对齐时,由于未对无效数据请求进行互连,因而提高了数据吞吐量。
根据第二方面或根据第二方面的第一种实施形式,在所述存储器聚合设备的第二种可能的实施形式中,所述存储器聚合设备包括:时钟输入(clockinput),用于接收时钟信号,其中,所述输入选择器用于在所述时钟信号的每个时钟周期内,切换所述输入互连矩阵,且所述输出选择器用于在所述时钟信号的每个时钟周期内,切换所述输出互连矩阵。
当在每个时钟周期内切换输入互连矩阵和输出互连矩阵时,在每个时钟周期内,可将新的数据请求存储至FIFO存储器中,从而减少了延迟时间,并提高了存储器聚合设备的吞吐量。
根据第二方面的第二种实施形式,在所述存储器聚合设备的第三种可能的实施形式中,所述输入选择器用于接收指示所述输入数据流组中携带有效数据请求的多个数据流的R位向量(R-bitvector),且用于选择所述输入互连矩阵,使得在所述时钟信号的每个时钟周期内,所述输入数据流组中的所述多个数据流的前G个数据请求(firstGdatarequests)互连至所述FIFO存储器组,其中,R和G为整数。
因此,在每个时钟周期内,G个数据请求由存储器聚合设备进行处理,这提高了吞吐率。
根据第二方面的第二种实施形式或第三种实施形式,在所述存储器聚合设备的第四种可能的实施形式中,所述输出选择器用于接收指示所述输出数据流组中携带有效数据请求的多个数据流的R位向量,且用于选择所述输出互连矩阵,使得在所述时钟信号的每个时钟周期内,所述输出数据流组中的所述多个数据流的前G个数据请求互连至所述FIFO存储器组,其中,R和G为整数。
通过这种处理,提高了所述存储器聚合设备的吞吐量。
根据第二方面的第三种实施形式或第四种实施形式,在所述存储器聚合设备的第五种可能的实施形式中,所述存储控制器用于依据所述FIFO存储器组中的多个空条目,控制R和G。
通过该特征,可依据存储器聚合设备的可用容量,控制数据吞吐量。如果所述存储器聚合设备已满,可将流量转发至其他设备。
根据第三方面,本发明涉及一种方法,用于将一个输入数据流组存储至一个FIFO存储器组中,以及将所述FIFO存储器组中的数据取出至一个输出数据流组中,其中,所述输入数据流组和所述输出数据流组是可操作的从而在每个时钟周期内进行发送新数据和停止发送新数据中的任一项,且所述方法包括:根据输入互连矩阵,将所述输入数据流组中的每个输入数据流与所述FIFO存储器组中的每个输入进行互连;根据输出互连矩阵,将所述FIFO存储器组中的每个输出与所述输出数据流组中的每个输出数据流进行互连;根据输入数据调度方案,选择所述输入互连矩阵;根据输出数据调度方案,选择所述输出互连矩阵;控制所述输入数据调度方案,以使来自所述输入数据流组的数据通过轮询方式在所述FIFO存储器组中分发,以及控制所述输出数据调度方案,以使来自所述FIFO存储器组的数据通过轮询方式取出至所述输出数据流组中。
通过轮询机制,存储和从单个FIFO存储器取出是通过“先进先出”方式进行的。每个请求将几乎同时得到处理。因此,实现了以单个聚合器FIFO运行,并提高了该方法的吞吐量。
根据第三方面,在所述方法的第一种可能的实施形式中,所述选择所述输入互连矩阵基于门树仲裁器逻辑,且所述选择所述输出互连矩阵基于门树仲裁器逻辑。
所述门树仲裁器逻辑是一种用于快速切换的高效硬件结构。
下文中,术语输入/输出选择器指定为输入选择器或输出选择器,也可指定为同时包含输入选择器和输出选择器的设备。
所述输入/输出选择器可作为同步硬件电路调度器实现。所述输入/输出选择器能够根据某一调度方案,选择N个请求,例如,输入队列,且所述输入/输出选择器能够在每个时钟周期内进行P次选择或发放。因此,所述输入/输出选择器允许以低时延和高于系统时钟工作频率的速率来处理请求。
所述输入/输出选择器可用作CPU中的任务调度器,或用于在切换元素或路由元素时对数据包进行调度。为得到更复杂的调度方案,根据第一方面或第二方面,输入/输出选择器也可用作更复杂的调度器,例如,存储器聚合设备的构造块。在此意义上,所述输入/输出选择器可与若干任务调度器连接,其中,为得到分层调度方案,输入/输出选择器配置不同。
本发明的各方面提供的存储器聚合设备建立了聚合的资源库,该资源库可在每个时钟周期内,接收多达N次输入,也可在每个时钟周期内,提取多达M次输出,其中,N和M为常数,在每个时钟周期内,每次输入可插入数据,也可不插入数据。通过有效向量输入,可操作用于接收数据的输出的数量也在变化。在并不是使用所有有效输出的情况下,输出是右对齐的,这说明对于P个有效数据输出,其在输出0到P–1上进行发送。
本发明的各方面提供的存储器聚合设备可用作链路聚合器、需要处理的数据的共享池以及另一种聚合设备。
附图说明
本发明的具体实施方式将结合以下附图进行描述,其中:
图1示出了一实施形式提供的存储器聚合设备的输入互连器的方框图;
图2示出了一实施形式提供的存储器聚合设备的方框图;
图3示出了一实施形式提供的调度方案的方框图;
图4示出了一实施形式提供的输入/输出选择器的方框图;
图5示出了一实施形式提供的输入/输出选择器的方框图;
图6示出了一实施形式提供的输入/输出选择器的速率限制单元的方框图;
图7示出了一实施形式提供的在输入/输出选择器的前缀森林单元中实现的前缀树的示意图;
图8示出了一实施形式提供的用于将多个输入存储至一个FIFO存储器组中,以及从所述FIFO存储器组中取出多个输出的方法示意图;
图9示出了另一实施形式提供的调度设备200的方框图。
具体实施方式
图1示出了一实施形式提供的存储器聚合设备900的输入互连器903的方框图。
所述存储器聚合设备900,也称为“宽聚合器”,通过一组N个标准FIFO901a、901b、901c、901d、901e、901f、901g和901h而建立,其中这些FIFO通过两个互连的网络分别与输入设备和输出设备耦合。在一种实施形式中,所述互连的网络由每个FIFO的入口处的一个复用器(muxes)组到每个输出设备组成。所述输入互连器903,也称为入口互连器,将输入设备902a、902b、902c、902d、902e、902f、902g和902h中的任意一个与所述FIFO存储器901a、901b、901c、901d、901e、901f、901g和901h中的任意一个数据输入设备连接,同时,通过fifo控制逻辑单元,对发送到每个FIFO的地址的控制信号进行控制。通过门树仲裁器,所述门树仲裁器只选择有效的输入/请求,即,通过将请求压缩成FIFO中的一个连续的请求组的方式在每个时钟周期内有数据发送的输入,到每个复用器的所述控制信号通过门树仲裁器实现。这些组与FIFO指针的最后一个位置对齐。
图1描述了一个请求组,即有数据要发送的输入,以及当前存储14个数据条目的N=8个FIFO存储器的宽聚合器。在这种实施形式中,在八个可能的输入中,有三个输入请求发送数据,且所述门树仲裁器将请求转到所述宽聚合器中合适的FIFO。
所述输入互连器903用于在其输入设备902a、902b、902c、902d、902e、902f、902g和902h上接收一个输入数据流组902。在图1描述的实施形式中,可接收八个输入数据流。但是,所述互连器903可用于接收任意其他数量的输入数据流。
第一输入设备902a接收第一数据流“无数据”,第二输入设备902b接收第二数据流“D16”,第三输入设备902c接收第三数据流“无数据”,第四输入设备902d接收第四数据流“D15”,第五输入设备902e接收第五数据流“无数据”,第六输入设备902f接收第六数据流“D14”,第七输入设备902g接收第七数据流“无数据”,第八输入设备902h接收第八数据流“无数据”。
所述输入互连器903用于根据输入互连矩阵,将所述输入数据流组902切换到所述FIFO存储器组901a、901b、901c、901d、901e、901f、901g和901h中的每个输入设备。在一种实施形式中,所述输入互连矩阵由一个复用器组,即复用器实现。在图1描述的实施形式中,描述了八个FIFO存储器。但是,所述存储器聚合设备900可包括任意其他数量的FIFO存储器。
在图1描述的实施形式中,所述第一数据流“无数据”切换到与第三个FIFO存储器901c的输入设备连接的所述输入互连器903的第三输出设备906c,所述第二数据流“D16”切换到与第八个FIFO存储器901h的输入设备连接的所述输入互连器903的第八输出设备906h,所述第三数据流“无数据”切换到与第四个FIFO存储器901d的输入设备连接的所述输入互连器903的第四输出设备906d,所述第四数据流“D15”切换到与第一个FIFO存储器901a的输入设备连接的所述输入互连器903的第一输出设备906a,所述第五数据流“无数据”切换到与第五个FIFO存储器901e的输入设备连接的所述输入互连器903的第五输出设备906e,所述第六数据流“D14”切换到与第二个FIFO存储器901b的输入设备连接的所述输入互连器903的第二输出设备906b,所述第七数据流“无数据”切换到与第六个FIFO存储器901f的输入设备连接的所述输入互连器903的第六输出设备906f,所述第八数据流“无数据”切换到与第七个FIFO存储器901g的输入设备连接的所述输入互连器903的第七输出设备906g。
在一种实施形式中,所述输入互连器903和输出互连器(图1中未示出)的控制逻辑均通过仲裁器逻辑实现。在每个时钟周期内,该仲裁器接收指示请求的R位向量,以及选择/允许前G个请求。在一种实施形式中,门树仲裁器用于在每个时钟周期内进行该任务。在输入仲裁器中,R设置为N;而在宽聚合器中的空条目大于N的情况下,G设置为N,且空条目越少,G越小。在输出仲裁器中,如果宽聚合器至少有N个有效的条目,R设置为N,且有效的条目越少,R越小;而G设置为P(P≤N)。
所述宽聚合器可在每个时钟周期内接收新数据,以及将所述新数据导向正确的FIFO输入设备,同样地,将FIFO的输出导向不同的输出数据流。因此,两个仲裁器在每个时钟周期内均能进行新的仲裁。随着N个常量值的增加,在VLSL系统中,受高时钟频率的限制,该仲裁变得困难。为此,门-森林仲裁器可用在下文结合图4和图5描述的输入选择器和输出选择器中。这类仲裁器在两阶流水线(twostagepipe)中进行选择,所述两阶流水线可在每个时钟周期内接收一个新的请求组。
下图描述了存储器聚合设备990的方框图。当描述存储器聚合设备的与FIFO相关的具体方面,所述存储器聚合设备也可称为“宽FIFO”。
图2示出了一实施形式提供的存储器聚合设备990的方框图。所述存储器聚合设备990用于:存储一个输入数据流组902,以及将数据取出至一个输出数据流组904中。所述存储器聚合设备包括:一个FIFO存储器组901a、901b和901c,其中,每个FIFO存储器包括输入设备和输出设备;输入互连器903;输出互连器905;输入选择器,也称为输入仲裁器907;输出选择器,也称为输出仲裁器909;以及显示为fifo控制逻辑的内存控制器911。
所述输入互连器903用于根据输入互连矩阵,将每个输入数据流902与所述FIFO存储器901a、901b和901c中的每个输入设备进行互连。所述输出互连器905用于根据输出互连矩阵,将所述FIFO存储器901a、901b和901c中的每个输出设备与每个输出数据流904进行互连。所述输入选择器907用于根据输入数据调度方案,选择所述输入互连矩阵。所述输出选择器909用于根据输出数据调度方案,选择所述输出互连矩阵。所述内存控制器911分别与所述输入选择器907和所述输出选择器909耦合,且用于根据数据聚合规则,控制所述输入数据调度方案和所述输出数据调度方案。
在一种实施形式中,所述数据聚合规则使得来自所述输入数据流组902的数据在所述FIFO存储器组901a、901b和901c中分发,以及使得来自所述FIFO存储器组901a、901b和901c的数据取出至所述输出数据流组904中。在一种实施形式中,所述输入数据调度方案和所述输出数据调度方案均为轮询调度方案。在一种实施形式中,所述内存控制器911将所述FIFO存储器组901a、901b和901c作为单个FIFO存储器寻址,其中,所述单个FIFO存储器配有单个写指针918,用于将所述输入数据流组902存储至所述单个FIFO存储器中,且配有单个读指针922,用于将来自所述单个FIFO存储器的数据取出至所述输出数据流组904中。在一种实施形式中,对于所述输入数据流组902的每个数据请求,所述单个写指针918从第一个FIFO存储器901a的空条目移进到最后一个FIFO存储器901c的空条目,如果移进到了最后一个FIFO存储器901c,则跳回至第一个FIFO存储器901a的下一个空条目。在一种实施形式中,对于所述输出数据流组904的每个数据请求,所述单个读指针922从第一个FIFO存储器901a的占用的条目移进到最后一个FIFO存储器901c的占用的条目,如果移进到了最后一个FIFO存储器901c,则跳回至第一个FIFO存储器901a的下一个占用的条目。所述输入互连器903包括一个复用器组,用于实现所述输入互连矩阵,且所述输出互连器905包括一个复用器组,用于实现所述输出互连矩阵。
所述输入选择器907包括门树仲裁器逻辑,用于控制所述输入互连器903的所述复用器组。在一种实施形式中,所述门树仲裁器逻辑与下文结合图4至图10描述的设备对应。通过向所述输入互连器903发送来自所述输入选择器907的控制信号“复用器选择”(muxesselect)926,实现控制。所述输出选择器909包括门树仲裁器逻辑,用于控制所述输出互连器905的所述复用器组。在一种实施形式中,所述门树仲裁器逻辑与下文结合图4至图10描述的设备对应。通过向所述输出互连器905发送来自所述输出选择器909的控制信号“复用器选择”928,实现控制。在一种实施形式中,(输入选择器和输出选择器的)两个门树仲裁器逻辑完全相同。在一种实施形式中,输入选择器的门树仲裁器逻辑包括的门树的大小大于输出选择器的门树仲裁器逻辑包括的门树的大小。
在一种实施形式中,所述输入选择器907选择所述输入互连矩阵,使得所述输入数据流组902中,只有携带有效数据请求的数据流互连至所述FIFO存储器组901。所述输入选择器907用于接收输入的有效比特912,以进行选择。在一种实施形式中,所述输入选择器907用于选择所述输入互连矩阵,使得所述输入数据流组902中,携带有效数据请求的数据流压缩成所述FIFO存储器组901a、901b和901c中的一个连续的数据请求组,其中,所述携带有效数据请求的数据流由所述输入的有效比特912指示。在一种实施形式中,所述输入选择器907选择所述输入互连矩阵,使得所述输入数据流组902中,携带有效数据请求的数据流与指向所述FIFO存储器组901a、901b和901c中的空条目的FIFO指针对齐,其中,所述携带有效数据请求的数据流由所述输入的有效比特912指示。
在一种实施形式中,所述存储器聚合设备990包括时钟输入,用于接收时钟信号。所述输入选择器907在所述时钟信号的每个时钟周期内,切换所述输入互连矩阵,且所述输出选择器909在所述时钟信号的每个时钟周期内,切换所述输出互连矩阵。在一种实施形式中,所述输入选择器907用于:接收以R位向量的形式呈现的所述输入的有效比特912,其中,所述R位向量指示所述输入数据流组902中携带有效数据请求的所述数据流的数量;以及选择所述输入互连矩阵,使得在所述时钟信号的每个时钟周期内,所述输入数据流组902中的数据流的前G个数据请求互连至所述FIFO存储器组901a、901b和901c。所述输出仲裁器909用于接收输出的空比特916,其中,所述空比特916以R(输出数据流的数量)位向量的形式呈现,R位向量指示哪个输出数据流904能从所述FIFO存储器组901a、901b和901c接收数据元素,以及哪个输出数据流不能从所述FIFO存储器组901a、901b和901c接收数据元素。所述输出仲裁器909用于施加(exert)“复用器选择”(muxselect)信号928,其中,所述信号928指示哪个FIFO存储器的输出设备将所述输出互连矩阵905发送给哪个输出数据流904。相应地,所述输出互连矩阵905用于将所述FIFO存储器组901a、901b和901c的输出设备与输出数据流904连接。所述输出仲裁器909还用于提取输出的有效比特914,其中,所述有效比特914指示选择的输出数据流。R和G均为整数。在一种实施形式中,所述内存控制器911从所述输出选择器909接收P个处理过的请求924,以及从所述输入选择器907接收有效和信号920,其中,所述请求924和所述有效和信号920用于控制所述FIFO存储器901a、901b和901c。
在一种实施形式中,所述存储器聚合设备990的功能如下:在所述存储器聚合设备,即仲裁器990选择G个请求,以及将所述G个请求进行右对齐后,所述G个请求根据所述输出选择器,即输出仲裁器909和所述输入选择器,即输入仲裁器907中的所述读指针922较小的lgN个比特和所述写指针918较小的lgN个比特进行移位。
所述内存控制器“fifo控制逻辑”911将所述FIFO组901a、901b和901c作为配有单个写指针918和单个读指针922的单个FIFO进行寻址。然而,这些指针通过轮询方式在所述存储器聚合设备,即所述宽聚合器990上移进。即,当单个数据插入到所述存储器聚合设备,即宽聚合器990中时,所述写指针918水平移进,即指向相邻的FIFO901b;当所述写指针到达最后一个FIFO901c时,所述写指针跳回至第一个FIFO901a,同时垂直移进,即指向第一个FIFO901a中的下一个条目。所述读指针922也执行同样的步骤。由于宽FIFO901a、901b和901c上的推入和弹出操作在每个时钟周期内包括的推入和弹出操作的数量不断变化,因此,指针918和指针922可移进不止一个条目及其围绕的每次数量为N。
图3示出了一实施形式提供的调度方案100的方框图。虽然使用相同的机制能够应用不同类型的调度,在聚合带宽的限制下,所述调度方案100使用不同的流量类型104a、104b和104c,在请求102之间进行轮询(RR)101,也称为成形。
所述调度方案100实现了简单的调度仲裁,包括简单的轮询101和针对固定量的流量类型104a、104b和104c的速率限制机制103a、103b和103c。通过第一整形桶105a,例如,FIFO,针对第一流量类型104a进行第一速率限制机制103a。通过第二整形桶105b,例如,FIFO,针对第二流量类型104b进行第二速率限制机制103b。通过第三整形桶105c,例如,FIFO,针对第三流量类型104c进行第三速率限制机制103c。根据可配置的速率,对每种类型的带宽进行限制。在带宽超过权限的允许带宽的情况下,其请求被屏蔽,且所有剩下的未屏蔽的流量类型均得到准许。
在一种实施形式中,由结合图1和图2描述的输入选择器907应用所述调度方案100。在一种实施形式中,由结合图2描述的所述输出选择器909应用所述调度方案100。
图4示出了一实施形式提供的输入/输出选择器200的方框图。该术语输入/输出选择器200涉及结合图1和图2描述的显示为输入仲裁器的输入选择器907和显示为输入仲裁器的输出选择器909。即,所述输入/输出选择器200可以是输入选择器907或输出选择器909。所述输入选择器907和所述输出选择器909也称为输入/输出调度设备或调度器。
所述输入/输出选择器200用于:接收一个请求组“reqvec”,即请求向量202,以及用于向所述请求组202提供一个权限组“Qsel_1,Qsel_2,……,Qsel_p”204。在图4描述的实施形式中,所述请求组202的数量为N,即N个请求被输入到所述输入/输出选择器200中。在图4描述的实施形式中,所述权限组204的数量为P,即由所述输入/输出选择器200提供P个权限。在一种实施形式中,在每个时钟周期内,所述输入/输出选择器200接收N个请求,并且,在每个时钟周期内,所述输入/输出选择器200提供P个权限。在一种实施形式中,在每个时钟周期内,所述输入/输出选择器200根据所述P个权限204,提供P个确认212。
所述输入/输出选择器200包括速率限制单元、查找向量准备单元(LVP)203以及前缀森林单元(PFF)205,其中,所述速率限制单元也称为速率控制整形器(RCS)201。所述速率限制单元201用于根据调度方案,限制所述请求组202的速率。所述速率限制单元201基于所述请求组202,提供一个限速后的请求组206。所述查找向量准备单元203与所述速率限制单元201耦合,以使所述速率限制单元201的输出设备为所述查找向量准备单元203的输入设备。在一种实施形式中,一个或多个功能单元或逻辑单元耦合到所述速率限制单元201的输出设备和所述查找向量准备单元203的输入设备之间的路径。
所述查找向量准备单元203用于依据所述限速后的请求组206和选择掩码“raw_mask”210的组合,提供一个已准备查找向量的请求组208。依据该组合,所述查找向量准备单元203向所述请求组202提供一个确认组“ack_vec”,即确认向量212。在一种实施形式中,对所述限速后的请求组206和选择掩码210进行合并,以提供所述已准备查找向量的请求组208和所述确认组212。进行该组合或合并的公知方案存在多种。在另一种实施形式中,所述查找向量准备单元203用于:当所述请求组202直接提供给所述查找向量请求单元203时,依据所述请求组202和选择掩码“raw_mask”210的组合,提供一个已准备查找向量的请求组208。
所述前缀森林单元205与所述查找向量准备单元203耦合,以使所述查找向量准备单元203的输出设备为所述前缀森林单元205的输入设备。在一种实施形式中,一个或多个功能单元或逻辑单元耦合到所述查找向量准备单元203的输出设备和所述前缀森林单元205的输入设备之间的路径。
所述前缀森林单元205用于提供所述权限组204,作为所述已准备查找向量的请求组208的函数。所述前缀森林单元205还用于基于所述权限组204,提供所述选择掩码210。下文结合图7和图8,对所述前缀森林单元205的实施形式进行描述。
在一种实施形式中,当有N个请求202,所述输入/输出选择器提供P个权限204,其中,数量P小于数量N。在一种实施形式中,数量P接近数量N,使得在每个时钟周期内,调度N个请求中的多数请求,且只有少数的N–P个请求存储至所述输入/输出选择器200中供进一步处理。在一种实施形式中,所述速率限制单元201用于依据所述确认组212,限制所述请求组202的速率。如果确认的数量很大,且速率限制单元201进行的速率限制很小,则所述输入/输出选择器200的吞吐量很大,且所述输入/输出选择器200处理的请求202的延迟时间很短。如果确认的数量很小,且速率限制单元201进行的速率限制很大,则所述输入/输出选择器200的吞吐量很小,且所述输入/输出选择器200处理的请求202的延迟时间很长。
在一种实施形式中,所述输入/输出选择器200的处理基于队列组,其中,所述请求组202和所述确认组212分配给所述队列组。在一种实施形式中,队列组用于实现优先级队列,即实现具有不同优先级的队列组从而实现依据优先级具有不同的延迟时间。所述请求组202分配了不同的优先级。分配有高优先级的请求202处理得比分配有低优先级的请求快。
在一种实施形式中,所述输入/输出选择器200由从多达N个请求202中选择P个输入的N→1仲裁器构成。在一种实施形式中,请求202在非输入队列状态时建立。系统的输入设备中的每个队列在每个时钟周期内,向所述输入/输出选择器200发送请求202,以及接收确认212,其中,所述确认212指示所述请求202已由调度器200接收且将在后续得到准许。当某个队列已经收到确认212时,该队列可能已经发送了下一个请求202。在一种实施形式中,针对输入队列中的每条消息,请求202都发送至所述调度器200。
所述调度器200基于调度请求和确认请求的分离。该分离使得所述调度器200能够立即向请求方模块提供确认向量212,因而使得所述请求方模块在每个时钟周期内,向所述调度器200提供新的请求202,其中,所述请求方模块也称为请求方。仅在单个时钟周期或者可能若干时钟周期之后进行实际选择,但该选择与已确认的请求分离。
根据负责每个组类型的速率限制的所述速率限制单元201,屏蔽所述请求向量202。将所述结果206发送至所述查找向量准备单元(LVP)203,其中,所述查找向量准备单元203负责将最后选择的请求和新的请求向量206进行合并。所述查找向量准备单元203将向量206和向量210进行合并,向所述前缀森林单元(PFF)205发送新的向量208供选择,以及向请求方发送确认向量212。
图5示出了一实施形式提供的输入/输出选择器300的方框图。所述输入/输出选择器300用于:接收一个请求组“reqvec”,即请求向量202,以及用于向所述请求组202提供一个权限组“Qsel_1,Qsel_2,……,Qsel_p”304。所述输入/输出选择器300包括速率限制单元(RCS)201、查找向量准备单元(LVP)203以及前缀森林单元(PFF)305,其中,所述速率限制单元201可与结合图4描述的速率限制单元201对应,所述查找向量准备单元203可与结合图4描述的查找向量准备单元203对应,且所述前缀森林单元305可为结合图4描述的前缀森林单元205的一种实施形式。
所述速率限制单元201用于根据某种调度方案,限制所述请求组202的速率。所述速率限制单元201基于所述请求组202,提供一个限速后的请求组206。所述查找向量准备单元203与所述速率限制单元201耦合,以使所述速率限制单元201的输出设备为所述查找向量准备单元203的输入设备。在一种实施形式中,一个或多个功能单元或逻辑单元耦合到所述速率限制单元201的输出设备和所述查找向量准备单元203的输入设备之间的路径。所述查找向量准备单元203用于依据所述限速后的请求组206和选择掩码“raw_mask”210的组合,提供一个已准备查找向量的请求组208。依据该组合,所述查找向量准备单元203向所述请求组202提供一个确认组“ack_vec”,即确认向量212。
所述前缀森林单元305包括前缀树307、一个比较(CMP)模块组311a、311b和311c、掩码生成器313以及一个Not_And_Shift_One(NASO)模块组315a、315b和315c。
所述前缀树307为有序的树数据结构,其中,所述结构用于存储关联的数组,且在所述数组中,键通常为字符串。与二叉查找树不同的是,所述树307的结点不存储与该结点关联的键;相反,该结点在所述树307上的位置定义了与该结点关联的键。某结点的所有子结点有与该结点关联的字符串的公共前缀,且根与空字符串关联。键值通常不与每个结点关联,仅与叶子和某些与感兴趣的键对应的内结点关联。
在前缀树307的一种实施形式中,查找长度为m的键为按照O(m)的顺序中最差的情况。在查找期间所述前缀树307使用的简单的操作,例如,通过字符进行数组索引在真实机上速度很快。由于有公共的初始后继的键共享结点,当所述前缀树307包含大量较短的键时,空间利用效率高。所述前缀树307便于最长前缀的匹配。从根到叶的内结点的数量与键的长度相同。因此,平衡所述前缀树307是没有意义的。前缀树307支持有序迭代,且便于最长前缀的匹配。因此,依据实施情况,“最近匹配”查找可与精确查找一样快。与哈希表相反,所述前缀树307的插入平均比哈希表要快,这是由于当哈希表已满时,哈希表必须重建索引,这种操作代价很高。因此,所述前缀树307的最差情况下的时间代价界限要明显得多,这对时延敏感型程序很重要。由于没有使用哈希函数,前缀树307一般比针对小键的哈希表速度要快。
在图5描述的实施形式中,所述前缀树307包括一个比特加法器组309a、309b和309c,以实现该树。在一种实施形式中,产生P个结果的前缀树307实现了如下关于输入向量v(i),即已准备查找向量的向量的函数:
fx(i)和fy(i)为函数表达式。该表达式用于表示物理实现外的数学概念,并表示为每个输出i,计算上述sigma(sum)。通过对fx(i)和fy(i)求和,实现此计算,以得到所需结果。计算出的值为fx(i)和fy(i),从而根据前缀树定理,并结合fx(i)和fy(i)不同的可能的结果,来得到所需结果。前缀树过程的输出由两组2*N个数(每组logN个比特)构成,该两组数代表输入向量的函数结果。对于每组数(x,y),前缀树过程的结果为相加量x+y。所述前缀树过程的延迟复杂度为O(logN)。
前缀森林单元305的输出为一个称为Z的数的组,且针对Z中的每个数Zi,Xi+Yi=Zi。X和Y表示x和y的具体例子,分别的,Xi代表x的第i个具体例子X,Yi代表y的第i个具体例子Y。无需进行实际相加,可选择进行机制的下一阶段,即比较阶段,使用Xi和Yi的原料;无需将Z中的每个数与相关的值进行比较,可将一对数与一个已知的选项组进行比较,由此,能减少将Xi和Yi放入相加设备中带来的时延。
比较模块311a、311b和311c分别接收所有N组,以及提取N位结果向量317。比较模块的数量J的结果向量317包括输入组中的1,这样,输入组中的1的总和为J。比较模块311a、311b和311c通过检查X和Y所有可能的组合,以进行该比较。
在一种实施形式中,根据表1,针对每个数,X和Y可能的变量在该例中为1到8。
表1:针对每个数,X和Y可能的变量
针对每个输出,最多只有两个可能的组合。为了建立要送回给查找向量准备单元203的选择掩码“raw_mask”,掩码生成器313接收结果向量317,以及对输出的剩余部分进行逻辑NOR操作。这使得针对非0到P,即大于P的每个结果,选择掩码“raw_mask”均包含“1”,从而其可作为最后一个向量的掩码。Not_And_Shift_One模块315a、315b和315c用于进行逻辑NAND操作,在该操作后,对其输入向量进行1位的移位操作。所述Not_And_Shift_One模块315a、315b和315c负责找到输入中接收的N位向量中的第一个向量,以及负责将输出提取至请求方。Not_And_Shift_One模块315a、315b和315c的输出形成了结合图2描述的提供给请求方的所述权限组204。
在一种实施形式中,所述输入/输出选择器300的调度过程由与速率限制单元201对应的整形器开始,其中,所述速率限制单元201根据所述整形器201对属于不合格队列的比特进行屏蔽。然后,将与限速后的请求向量206对应的结果发送至查找向量准备单元203,其中,所述查找向量准备单元203根据最后的选择,屏蔽、移位并加入限速后的请求向量206。所述移位用于在请求之间进行轮询。将与已准备查找向量的请求组208对应的移位器的结果发送至比特加法器309a、309b和309c,其中,所述比特加法器作为并行计数森林305实现。所述移位器作为静态移位器实现。最后一个req_vec与掩码向量210一起被屏蔽。
图6示出了一实施形式提供的输入/输出选择器的速率限制单元400的方框图。所述速率限制单元400为结合图2和图3描述的速率限制单元201的一种实施形式。所述速率限制单元400接收结合图2和图3描述的一个请求组202和一个确认组212,以及提供结合图2和图3描述的一个限速后的请求组206。所述速率限制单元400包括一个桶组401a、401b和401c,例如,FIFO缓冲区,其中,所述FIFO缓冲区根据分配了确认212和桶401a、401b和401c的具体的队列组,暂时存储所述确认组212。在另一种实施形式中,组整形器,也称为如图1所描述的整形桶105a、105b和105c,由所述速率限制单元400的组整形器401a、401b和401c实现。
所述速率限制单元400还包括一个比特加法器组403a、403b和403c,用于对输入进行比特相加,其中,根据所述桶401a、401b和401c的分配,将每个比特加法器分配给具体的队列组。所述比特加法器403a、403b和403c用于将分配给各自的队列组的桶模块401a、401b和401c的输出404a、404b和404c添加到分配给对应的队列组的请求102。所述比特加法器403a、403b和403c的输出406a、406b和406c形成了一个新的请求组106。
在图6描述的实施形式中,使用了三个不同的队列组:由TE路径408a处理的第一个队列组“TE”、由建立路径408b处理的第二个队列组“Bld”以及由选择路径408c处理的第三个队列组“Sel”。分配给“TE”队列组的一个确认组212中的确认存储至第一个桶401a中,并由第一比特加法器403a处理,以使“TE”桶401a的输出404a的“TE”路径比特添加到分配给“TE”队列组的请求向量202的对应比特。分配给“Bld”队列组的一个确认组212中的确认存储至第二个桶401b中,并由第二比特加法器403b处理,以使“Bld”桶401b的输出404b的“Bld”路径比特添加到分配给“Bld”队列组的请求向量202的对应比特。分配给“Sel”队列组的一个确认组212中的确认存储至第三个桶401c中,并由第三比特加法器403c处理,以使“Sel”桶401c的输出404c的“Sel”路径比特添加到分配给“Sel”队列组的请求向量202的对应比特。由所述TE路径408a、所述建立路径408b和所述选择路径408c的三个比特加法器403a、403b和403c添加的比特的组合形成了所述限速后的请求组206。
在一种实施形式中,速率控制整形器,即速率限制单元400由3个整形桶401a、401b和401c以及屏蔽不合格的非空闲队列的掩码寄存器,其中,一个整形桶针对每组队列。速率控制整形器400根据其接收的确认向量“ack_vec”212,管理所述整形桶401a、401b和401c。在每个时钟周期内,通过比特加法器403a、403b和403c,将从所述查找向量准备单元203接收的(未屏蔽的)每组确认向量212进行求和,且求和后的值从各组的桶401a、401b和401c中减去。在每个时钟周期内,将表示为“qroup_quanton”的可配置的数量添加到该组的桶401a、401b和401c中。当桶的大小为0或更小,所述组从合格向量中屏蔽。当该组的桶大于表示为“qroup_max_quantom”可配置的数量时,指定该组的桶大小为qroup_max_quantom。
在该实施形式中,输入/输出选择器的前缀森林单元中的门树计算使用下述函数,得出的P个结果的前缀树实现了输入向量v(i)的下述函数:
计算出的值为fx(i)和fy(i),以根据前缀树定理,并结合fx(i)和fy(i)不同的可能的结果,来得到所需结果。前缀树过程的输出由两组2*N个数(每组logN个比特)构成,该两组数代表输入向量的函数结果。对于每组数(x,y),前缀树过程的结果为相加量x+y。所述前缀树过程的延迟复杂度为O(lgn)。由于Y只有两个MSB,因此,X和Y的相关的可能的组合要少得多。
图7示出了一实施形式提供的在输入/输出选择器的前缀森林单元中实现的前缀树800的示意图。所述前缀森林单元可与结合图4描述的前缀森林单元205或结合图5描述的前缀森林单元305对应。
所述前缀树800包括第一层801和第二层802。所述第一层801接收三个输入向量803a、803b和803c,以及向所述第二层802提供输出,其中,每个输入向量在第一算术单元“FA”805a、805b和805c以及第二算术单元807a、807b和807c之间分割。所述第二层802包括第一算术单元“FA”809a、809b、809c和809d以及第二算术单元“HA”811b和811d。所述第一层801的第一算术单元“FA”和所述第二层802的第一算术单元“FA”之间的互连形成了输出x和y,使得所述前缀树800得到P个结果,以实现输入向量v(i)803a、803b和803c的下述函数:
为确定实现前缀树800的输入/输出选择器的性能,需考虑下述问题。设计时,有一条最长的需要寻址的清晰路径。这条最长的路径开始于结合图4和图5描述的查找向量准备单元(LVP)203。所述路径经过图5描述的门树307和图5描述的比较311a、311b和311c单元以及掩码生成器313,并返回到图5描述的LVP203。
在每个阶段,针对下面延迟时间中的N个结果的输入向量,对传播延迟进行估算分析。记录LVP输出,因而认为置零门造成零延迟时间。门树由FA和HA算术单元构成。实际上,这些算术单元由两个简单的门构成,其中,所述两个简单的门导致2*LgN个门的估算延迟。然而,标准库的门较复杂,可在一个复杂的门中进行这些标准函数,从而导致LgN个延迟时间。比较阶段由并行进行的若干比较构成,从而导致4个门的延迟时间。返回到LVP,存在另一个门和样本,从而导致1个门的延迟时间。总之,延迟时间添加至下述值:
GateTreePD+ComparePD+MaskGenPD+MaskPD+MuxShiftPD=LgN+1+3+1+1=Lg(2*N)+6
在最差的情况下,传播延迟估算总计如表2所示:
表2:针对最差的情况以一种实施形式通过前缀树进行的计算
在另一种实施形式中,如图9所示,调度设备200包括接口1110和处理器1120。所述接口1110用于:接收一个请求组202,以及输出一个权限组204和选择掩码210。根据图4至图6的上述实施例中的一个或多个单元以处理器1120的形式呈现。为提供其功能,所述处理器1120执行所述单元的相应步骤。
图8示出了一实施形式提供的用于将多个输入存储至一个FIFO存储器组中,以及从所述FIFO存储器组中取出多个输出的方法1000的示意图。
所述方法1000用于将一个输入数据流组902存储至一个FIFO存储器组901a,901b,……,901c中,以及将所述FIFO存储器组901a,901b,……,901c中的数据取出至一个输出数据流组904中。可操作所述输入数据流组902和所述输出数据流组904从而在每个时钟周期内均进行发送新数据和停止发送新数据中的任一项。所述方法1000包括:根据输入互连矩阵,将所述输入数据流组902中的每个输入数据流与所述FIFO存储器组901a,901b,……,901c中的每个输入设备进行互连1001。所述方法1000包括:根据输出互连矩阵,将所述FIFO存储器组901a,901b,……,901c中的每个输出设备与所述输出数据流组904中的每个输出数据流进行互连1003。所述方法1000包括:根据输入数据调度方案,选择1005所述输入互连矩阵。所述方法1000包括:根据输出数据调度方案,选择1007所述输出互连矩阵。所述方法1000包括:控制1009所述输入数据调度方案,以使来自所述输入数据流组902的数据通过轮询方式在所述FIFO存储器组901a,901b,……,901c中分发,以及控制所述输出数据调度方案,以使来自所述FIFO存储器组901a,901b,……,901c的数据通过轮询方式取出至所述输出数据流组904中。
在上述实施形式中,仅以一组含有三个FIFO存储器901a、901b和901c为例,本发明可应用于含有任意数量的FIFO存储器的组,例如,图1所示的八个存储器。

Claims (13)

1.一种用于将一个输入数据流组(902)存储至以及将数据取出至一个输出数据流组(904)的存储器聚合设备(990),其中,所述输入数据流组(902)和所述输出数据流组(904)是可操作的从而在每个时钟周期内进行发送新数据和停止发送新数据中的任一项,所述存储器聚合设备(990)包括:
一个FIFO存储器组(901a,901b,……,901c),其中,每个FIFO存储器包括输入和输出;
输入互连器(903),用于根据输入互连矩阵,将所述输入数据流组(902)中的每个输入数据流与所述FIFO存储器组(901a,901b,……,901c)中的每个输入进行互连;
输出互连器(905),用于根据输出互连矩阵,将所述FIFO存储器组(901a,901b,……,901c)中的每个输出与所述输出数据流组(904)中的每个输出数据流进行互连;
输入选择器(907),用于根据输入数据调度方案,选择所述输入互连矩阵;
输出选择器(909),用于根据输出数据调度方案,选择所述输出互连矩阵;
存储控制器(911),与所述输入选择器(907)和所述输出选择器(909)耦合,其中,所述存储控制器(911)用于:控制所述输入数据调度方案,以使来自所述输入数据流组(902)的数据通过轮询方式在所述FIFO存储器组(901a,901b,……,901c)中分发,以及控制所述输出数据调度方案,以使来自所述FIFO存储器组(901a,901b,……,901c)的数据通过轮询方式取出至所述输出数据流组(904)中。
2.根据权利要求1所述的存储器聚合设备(990),其特征在于,多个FIFO存储器(901a,901b,……,901c)与多个输入数据流(902)对应。
3.根据权利要求1或2所述的存储器聚合设备(990),其特征在于,所述输入互连器(903)包括一个复用器组,用于实现所述输入互连矩阵,所述输出互连器(905)包括一个复用器组,用于实现所述输出互连矩阵。
4.根据权利要求3所述的存储器聚合设备(990),其特征在于,所述输入选择器(907)包括门树仲裁器逻辑,用于控制所述输入互连器(903)的所述复用器组,所述输出选择器(909)包括门树仲裁器逻辑,用于控制所述输出互连器(905)的所述复用器组。
5.根据上述权利要求任意一项所述的存储器聚合设备(990),其特征在于,所述输入选择器(907)用于选择所述输入互连矩阵,使得所述输入数据流组(902)中,只有携带有效数据请求的数据流互连至所述FIFO存储器组(901)。
6.一种用于存储一个输入数据流组(902)以及将数据取出至一个输出数据流组(904)的存储器聚合设备(990),其中,所述输入数据流组(902)和所述输出数据流组(904)是可操作的从而在每个时钟周期内进行发送新数据和停止发送新数据中的任一项,且所述存储器聚合设备(990)包括:
一个FIFO存储器组(901a,901b,……,901c),其中,每个FIFO存储器包括输入和输出;
输入互连器(903),用于根据输入互连矩阵,将所述输入数据流组(902)中的每个输入数据流与所述FIFO存储器组(901a,901b,……,901c)中的每个输入进行互连;
输出互连器(905),用于根据输出互连矩阵,将所述FIFO存储器组(901a,901b,……,901c)中的每个输出与所述输出数据流组(904)中的每个输出数据流进行互连;
输入选择器(907),用于选择所述输入互连矩阵,使得所述输入数据流组(902)中,携带有效数据请求的数据流压缩成所述FIFO存储器组(901a,901b,……,901c)中一个连续的数据请求组;
输出选择器(909),用于根据输出数据调度方案,选择所述输出互连矩阵;
存储控制器(911),与所述输入选择器(907)和所述输出选择器(909)耦合。
7.根据权利要求6所述的存储器聚合设备(900),其特征在于,所述输入选择器(907)用于选择所述输入互连矩阵,使得所述输入数据流组(902)中,携带有效数据请求的所述数据流与指向所述FIFO存储器组(901a,901b,……,901c)中的空条目的FIFO指针对齐。
8.根据权利要求6或7所述的存储器聚合设备(990),其特征在于,包括:时钟输入,用于接收时钟信号,其中,所述输入选择器(907)用于在所述时钟信号的每个时钟周期内,切换所述输入互连矩阵,且所述输出选择器(909)用于在所述时钟信号的每个时钟周期内,切换所述输出互连矩阵。
9.根据权利要求8所述的存储器聚合设备(990),其特征在于,所述输入选择器(907)用于接收指示所述输入数据流组(902)中携带有效数据请求的多个数据流的R位向量,且用于选择所述输入互连矩阵,使得在所述时钟信号的每个时钟周期内,所述输入数据流组(902)中的所述多个数据流的前G个数据请求互连至所述FIFO存储器组(901a,901b,……,901c),其中,R和G为整数。
10.根据权利要求8或9所述的存储器聚合设备(990),其特征在于,所述输出选择器(909)用于接收指示所述输出数据流组(902)中携带有效数据请求的多个数据流的R位向量,且用于选择所述输出互连矩阵,使得在所述时钟信号的每个时钟周期内,所述输出数据流组(902)中的所述多个数据流的前G个数据请求互连至所述FIFO存储器组(901a,901b,……,901c),其中,R和G为整数。
11.根据权利要求9或10所述的存储器聚合设备(990),其特征在于,所述存储控制器(911)用于依据所述FIFO存储器组(901a,901b,……,901c)中的多个空条目,控制R和G。
12.一种方法(1000),用于将一个输入数据流组(902)存储至一个FIFO存储器组(901a,901b,……,901c)中,以及将所述FIFO存储器组(901a,901b,……,901c)中的数据取出至一个输出数据流组(904)中,其中,所述输入数据流组(902)和所述输出数据流组(904)是可操作的从而在每个时钟周期内进行发送新数据和停止发送新数据中的任一项,且所述方法(1000)包括:
根据输入互连矩阵,将所述输入数据流组(902)中的每个输入数据流与所述FIFO存储器组(901a,901b,……,901c)中的每个输入进行互连(1001);
根据输出互连矩阵,将所述FIFO存储器组(901a,901b,……,901c)中的每个输出与所述输出数据流组(904)中的每个输出数据流进行互连(1003);
根据输入数据调度方案,选择(1005)所述输入互连矩阵;
根据输出数据调度方案,选择(1007)所述输出互连矩阵;
控制(1009)所述输入数据调度方案,以使来自所述输入数据流组(902)的数据通过轮询方式在所述FIFO存储器组(901a,901b,……,901c)中分发,以及控制所述输出数据调度方案,以使来自所述FIFO存储器组(901a,901b,……,901c)的数据通过轮询方式取出至所述输出数据流组(904)中。
13.根据权利要求12所述的方法(1000),其特征在于,所述选择(1005)所述输入互连矩阵是基于门树仲裁器逻辑的,且所述选择(1007)所述输出互连矩阵是基于门树仲裁器逻辑的。
CN201380077301.8A 2013-06-19 2013-06-19 存储器聚合设备 Active CN105378647B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2013/062727 WO2014202129A1 (en) 2013-06-19 2013-06-19 Memory aggregation device

Publications (2)

Publication Number Publication Date
CN105378647A true CN105378647A (zh) 2016-03-02
CN105378647B CN105378647B (zh) 2019-01-15

Family

ID=48746432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380077301.8A Active CN105378647B (zh) 2013-06-19 2013-06-19 存储器聚合设备

Country Status (4)

Country Link
US (1) US9996489B2 (zh)
EP (1) EP3011427A1 (zh)
CN (1) CN105378647B (zh)
WO (1) WO2014202129A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704018A (zh) * 2019-08-26 2020-01-17 深圳芯英科技有限公司 一种数据缓存器及数据处理方法
CN110704019A (zh) * 2019-08-26 2020-01-17 深圳芯英科技有限公司 数据缓存器及数据读取方法
CN110764736A (zh) * 2019-10-29 2020-02-07 深圳芯英科技有限公司 一种矩阵处理装置、方法及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5663910A (en) * 1994-07-22 1997-09-02 Integrated Device Technology, Inc. Interleaving architecture and method for a high density FIFO
CN1552016A (zh) * 2001-09-06 2004-12-01 ض� 向/从缓冲器提取和加载数据的装置和方法
US7149139B1 (en) * 2004-01-28 2006-12-12 Marvell Semiconductor Israel Ltd. Circuitry and methods for efficient FIFO memory
US20090086737A1 (en) * 2007-09-29 2009-04-02 Applied Micro Circuits Corporation System-on-chip communication manager
US7636361B1 (en) * 2005-09-27 2009-12-22 Sun Microsystems, Inc. Apparatus and method for high-throughput asynchronous communication with flow control
CN101622790A (zh) * 2007-03-27 2010-01-06 英特尔公司 用于压缩程序指令的压缩条目最优选择

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
JP5316647B2 (ja) * 2009-11-16 2013-10-16 富士通株式会社 Fifoバッファ及びfifoバッファの制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5663910A (en) * 1994-07-22 1997-09-02 Integrated Device Technology, Inc. Interleaving architecture and method for a high density FIFO
CN1552016A (zh) * 2001-09-06 2004-12-01 ض� 向/从缓冲器提取和加载数据的装置和方法
US7149139B1 (en) * 2004-01-28 2006-12-12 Marvell Semiconductor Israel Ltd. Circuitry and methods for efficient FIFO memory
US7636361B1 (en) * 2005-09-27 2009-12-22 Sun Microsystems, Inc. Apparatus and method for high-throughput asynchronous communication with flow control
CN101622790A (zh) * 2007-03-27 2010-01-06 英特尔公司 用于压缩程序指令的压缩条目最优选择
US20090086737A1 (en) * 2007-09-29 2009-04-02 Applied Micro Circuits Corporation System-on-chip communication manager

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KAM HOI CHENG: ""A Simultaneous Access Queue"", 《JOURNAL OF PARALLES AND DISTRIBUTED COMPUTING》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704018A (zh) * 2019-08-26 2020-01-17 深圳芯英科技有限公司 一种数据缓存器及数据处理方法
CN110704019A (zh) * 2019-08-26 2020-01-17 深圳芯英科技有限公司 数据缓存器及数据读取方法
CN110704018B (zh) * 2019-08-26 2020-11-06 深圳芯英科技有限公司 一种数据缓存器及数据处理方法
CN110764736A (zh) * 2019-10-29 2020-02-07 深圳芯英科技有限公司 一种矩阵处理装置、方法及设备
CN110764736B (zh) * 2019-10-29 2021-11-26 中昊芯英(杭州)科技有限公司 一种矩阵处理装置、方法及设备

Also Published As

Publication number Publication date
US9996489B2 (en) 2018-06-12
US20160103777A1 (en) 2016-04-14
WO2014202129A1 (en) 2014-12-24
CN105378647B (zh) 2019-01-15
EP3011427A1 (en) 2016-04-27

Similar Documents

Publication Publication Date Title
US20210191781A1 (en) Concurrent program execution optimization
US8135004B2 (en) Multi-plane cell switch fabric system
KR101502896B1 (ko) 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
Dally Virtual-channel flow control
JP5343523B2 (ja) ジョブ管理装置、ジョブ管理方法およびジョブ管理プログラム
CN103914399B (zh) 一种并行计算系统中的磁盘缓存方法及装置
CN114138486B (zh) 面向云边异构环境的容器化微服务编排方法、系统及介质
EP3770774A1 (en) Control method for household appliance, and household appliance
CN108132838A (zh) 一种图数据处理的方法、装置及系统
KR102181640B1 (ko) 재구성가능한 분산 처리
Xie et al. Pandas: robust locality-aware scheduling with stochastic delay optimality
Jangiti et al. Scalable and direct vector bin-packing heuristic based on residual resource ratios for virtual machine placement in cloud data centers
CN105378647A (zh) 存储器聚合设备
CN108415912A (zh) 基于MapReduce模型的数据处理方法和设备
EP2912811B1 (en) Traffic engineering system for preventing demand deadlock and achieving uniform link utilization
Fang et al. Grid: Gradient routing with in-network aggregation for distributed training
Ibrahim et al. Improvement of job completion time in data-intensive cloud computing applications
Breitgand et al. Network aware virtual machine and image placement in a cloud
van der Gaast et al. Conveyor merges in zone picking systems: a tractable and accurate approximate model
CN105308918B (zh) 调度装置
CN104468701B (zh) 一种用于异构存储集群系统的i/o服务质量维护方法
Fang et al. GOAT: Gradient Scheduling with Collaborative In-Network Aggregation for Distributed Training
CN115705497A (zh) 一种量子计算机操作系统和量子计算机
Chen et al. Network-aware coordination of virtual machine migrations in enterprise data centers and clouds
Wang et al. Using parallel DRAM to scale router buffers

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