CN117992371A - 用于共享数据路径的分布式仲裁 - Google Patents

用于共享数据路径的分布式仲裁 Download PDF

Info

Publication number
CN117992371A
CN117992371A CN202311382512.4A CN202311382512A CN117992371A CN 117992371 A CN117992371 A CN 117992371A CN 202311382512 A CN202311382512 A CN 202311382512A CN 117992371 A CN117992371 A CN 117992371A
Authority
CN
China
Prior art keywords
data
packet
upstream
pipeline
source
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.)
Pending
Application number
CN202311382512.4A
Other languages
English (en)
Inventor
T·L·德拉本斯托特
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.)
Marvell Asia Pte Ltd
Original Assignee
Marvell Asia Pte 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
Priority claimed from US18/160,127 external-priority patent/US20240152477A1/en
Application filed by Marvell Asia Pte Ltd filed Critical Marvell Asia Pte Ltd
Publication of CN117992371A publication Critical patent/CN117992371A/zh
Pending legal-status Critical Current

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/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
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • 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/0658Controller construction 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

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)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开涉及用于共享数据路径的分布式仲裁器。数据管线上的数据分组的传递沿着管线以分布式方式被仲裁。多个数据仲裁器各自以在管线中的不同点处将来自相应数据源的数据合并到数据管线。在每个级,多路复用器选择性地将来自相应数据源的上游数据分组或本地数据分组传递到数据管线。寄存器存储由多路复用器基于发起数据分组的相应数据源而传递的数据分组的指示。控制器基于由多路复用器传递的数据分组的指示类控制多路复用器以选择上游数据分组或本地数据分组。

Description

用于共享数据路径的分布式仲裁
相关申请的交叉引用
本申请要求于2022年11月3日提交的第63/422,407号美国临时申请的权益和2023年1月26日提交的第18/160,127号美国专利申请的权益。以上申请的全部教导通过引用并入本文。
背景技术
现代集成电路经常实现将数据从多个源传送到单个接收器的数据路径。例如,常规片上系统(SOC)可以在单个基板上集成若干处理器核心,并且这些核心可以经由共享数据总线访问共享存储器。在另一示例中,SOC可以包括用于与片外器件通信的若干接口,这些片外器件被配置为利用单个片上器件,诸如用于加密或解密数据的密码引擎。仲裁对这样的共享资源的访问被称为多对一通信问题。为了解决这个问题,常规SOC采用总线或接口控制器来缓冲数据或请求,并且根据算法(诸如循环调度过程)来确定传递数据或请求的顺序。
发明内容
示例实施例包括一种用于仲裁数据管线上的数据分组的传递的电路。数据管线可以将多个数据源连接到数据接收器。多个数据仲裁器各自可以被配置为在管线中的不同点处将来自多个数据源中的相应数据源的数据合并到数据管线。多个数据仲裁器中的每个数据仲裁器可以包括多路复用器、寄存器和控制器。多路复用器可以被配置为选择性地将来自相应数据源的上游数据分组或本地数据分组传递到数据管线。寄存器可以被配置为存储由多路复用器基于发起数据分组的相应数据源而传递的数据分组的指示。控制器可以被配置为基于由多路复用器传递的数据分组的指示来控制多路复用器以选择上游数据分组或本地数据分组。
控制器还可以被配置为:1)基于不存在发起上游分组的数据源的条目,选择上游分组并且将数据源的条目添加到寄存器,以及2)基于寄存器包括发起上游分组的数据源的条目,选择本地分组并且清除寄存器。多个数据仲裁器中的每个数据仲裁器还可以包括用于存储上游数据分组和本地数据分组中的至少一者的先进先出(FIFO)缓冲器。控制器还可以被配置为使寄存器存储由多路复用器基于与数据分组中的每个数据分组相关联的相应标签而传递的数据分组的指示,相应标签指示发起数据分组的相应数据源。
上游数据仲裁器可以被配置为合并来自管线上游的点处的多个数据源中的至少两个数据源的数据的上游数据仲裁器,数据仲裁器包括被配置为存储由数据仲裁器基于发起数据分组的相应数据源而传递的数据分组的指示的寄存器。上游数据仲裁器可以是第一上游数据仲裁器,并且第二上游数据仲裁器可以被配置为合并来自第一上游数据仲裁器和在管线上游的另外的点处的多个数据源中的至少一个数据源的数据。数据管线可以包括至少两个并行段,并且该电路还包括被配置为将来自至少两个并行段的数据合并为数据管线的统一段的另外的数据仲裁器。
数据包可以包括以下中的至少一项:1)在数据管线的终点处的设备处读取或写入数据的请求,2)要存储在数字管线的终点处的设备处的数据,以及3)访问数据管线的终点处的资源的请求。寄存器可以保持由多路复用器基于发起数据分组的相应数据源而传递的数据分组的计数,控制器还可以被配置为:1)基于发起上游分组的数据源的计数低于阈值,选择上游分组并且在寄存器处递增数据源的计数,以及2)基于计数超过阈值,选择本地分组并且清除寄存器。控制器还可以被配置基于指示无中断地转发多个数据分组的序列的要求的标志来控制多路复用器选择上游数据分组。
另外的实施例包括一种仲裁数据流量的方法。在将多个数据源连接到数据接收器的数据管线中的多个不同点中的每个点处,可以选择性地将来自相应数据源的上游数据分组或本地数据分组传递到数据管线。可以存储基于发起数据分组的相应数据源而传递的数据分组的指示。可以基于由多路复用器传递的数据分组的指示来选择要被传递的上游数据分组或本地数据分组。
附图说明
根据以下对示例实施例的更具体描述,上述内容将很清楚,如附图所示,在附图中,相同的附图标记在不同的视图中指代相同的部分。附图不一定是按比例绘制的,而是将重点放在图示实施例上。
图1是可以在其中实现示例实施例的片上系统(SOC)的框图;
图2是一个实施例中的数据仲裁器的电路图;
图3是示出一个实施例中的仲裁过程的图;
图4是一个实施例中的仲裁过程的流程图;以及
图5是一个实施例中的多对一归约树电路的框图。
具体实施方式
以下是示例实施例的描述。
示例实施例提供了一种公平高效的手段以用于仲裁由多个启动器共享的单个多级数据路径,每个启动器可以具有目的地为数据路径的末端处的数据宿的数据缓冲器(例如,先进先出(FIFO)缓冲器)。这样的实施例使得数据能够在每个级和每个周期向下游移动,同时还在启动器之间公平地共享数据路径的可用带宽。
图1是可以在其中实现示例实施例的片上系统(SOC)100的框图。在该示例中,SOC100包括用于可以是片上和/或片外的器件的多个接口,包括高速串行接口102a-d、外围部件互连(PCI)接口103a-b、计算快速链路(CXL)接口104和小芯片接口105。连接到这些接口的一些或全部器件可以向密码引擎110发送数据,密码引擎110可以根据给定操作的需要对数据进行加密或解密。在备选实施例中,可以实现任何其他共享资源来代替(或补充)密码引擎110,诸如共享存储器子系统或用于出站通信的接口。此外,由接口转发的数据可以是要处理或存储的数据,或者可以是用于使用共享资源的命令和/或访问请求。
为了仲裁对具有单个输入端口(诸如密码引擎110)的共享资源的访问,常规SOC采用位于中央的总线或接口控制器,并且操作以根据算法缓冲数据并且确定传递数据或请求的顺序。然而,当针对更大数目的源或更长的数据路径实现时,这种方法面临缺点。例如,数据路径远端处的源比靠近接收器的源遭受更大的传输延迟,因此,总线控制器可能在相当大的延迟之后接收数据或请求,从而导致性能和/或效率的损失。
相反,在所示的示例中,数据管线130可以包括用于将数据从多个接口102a-d、103a-b、104、105传送到密码引擎110的多个数据仲裁器120a-h(也称为合并通道混洗(MLS)节点)。数据仲裁器120a-h中的每个数据仲裁器可以被配置为在管线130中的不同点处将来自相应数据源的数据合并到数据管线130。数据仲裁器120a-h中的每个数据仲裁器可以彼此独立地操作,以基于先前由数据仲裁器传递的数据分组的记录来确定是要传递“本地”数据分组(例如,来自附近的数据源)还是传递“上游”数据分组(例如,来自数据管线130中的前一数据仲裁器)。因此,数据管线130可以通过沿着数据管线130中的多个点分布仲裁来公平高效地仲裁对密码引擎110的访问。
另外的实施例可以应用于仲裁对由分布在相对于资源的不同位置的多个请求者共享的资源的访问。例如,片上网络(NoC)可以包括被配置为访问存储器系统的多个设备所包围的网状存储器系统。为了仲裁对存储器系统的访问,与上述数据管线130类似地配置的数据管线可以被实现为围绕存储器系统的一个或多个环,其中这些环被配置为在多个设备之间收集数据/请求,仲裁数据/请求以确定数据/请求的顺序,并且将数据/请求提供给存储器系统。
图2是数据仲裁器120的更详细的电路图。数据仲裁器120可以包括多路复用器126,该多路复用器126与数据管线130串联并且被配置为选择性地沿着数据管线130向下游传递分组。特别地,多路复用器126可以选择来自上游管线FIFO 129的上游数据分组或者来自缓冲在本地FIFO 128处的本地数据源的本地数据分组。寄存器124可以存储由多路复用器126基于发起数据分组的相应数据源而传递的数据分组的指示。控制器122可以基于由多路复用器126传递的数据分组的指示来控制多路复用器126以选择上游数据分组或本地数据分组。
除了数据仲裁器120之外,还示出了数据管线130的其他部件的选择,包括上游源FIFO 138a和将数据转发到上游管线FIFO 129的上游多路复用器136a。类似地,下游多路复用器136b是在多路复用器126的输出(缓冲在下游管线FIFO 139处)与下游源FIFO 138b处的数据之间进行选择的下游数据仲裁器的部件。
图3示出了一个实施例中在仲裁过程期间的数据管线130。所示的数据管线130的子集包括三个级,每个级可以被配置为如上所述的数据仲裁器120。为了清楚起见,仅示出了对上述元件的选择。这三个级分别由相应的多路复用器136a、控制器132a-c、寄存器134a-c、管线FIFO 139a-c和本地FIFO 138a-c表示。第一级多路复用器136a可以连接到类似配置的一个或多个附加级,或者可以从另外的本地FIFO 138d接收数据,如图所示。同样,第三级多路复用器136c和管线FIFO 139c可以将数据输出到接收器,诸如图1的密码引擎110,或者可以将数据输出到类似配置的并且在接收器之前的一个或多个附加级。
不同标识符(ID)标签(例如,n位标签)可以与每个数据源或本地FIFO 138a-d相关联,并且每个本地FIFO 138a-138d或其他电路可以将标签附加到源自该源的数据分组。例如,对于N个源,标签可以是log2(N)比特长。在由相应多路复用器136a-c、管线FIFO 139a-c和上述其他部件定义的数据管线130的每个级,(例如,由图2中的控制器122)做出仲裁决定以决定是选择并且传递来自前一级的数据,还是选择并且弹出来自给定级的多路复用器136a-c之前的管线FIFO139a-c的数据。每个级可以具有N比特的“发送”比特矢量,在该矢量中,它向寄存器134a-c记录它已经仲裁以向下游发送的所有分组的标签。
在一个示例中,每个级处的仲裁可以如下执行:如果寄存器134a-c中的对应标签位为“假”,表示该特定标签尚未发送到下游,则控制器132a-c选择上游管线数据FIFO139a-c。如果对应标签位为“真”,则控制器132a-c可以从当前级的本地FIFO 138a-c中选择数据,并且同时将寄存器134a-c处的整个发送矢量清除为“假”。因此,跟踪分组并且基于起点标签进行仲裁会产生混洗效应,该混洗效应动态并且公平地适应新的分组源,而不会损失总线效率(即,未使用的传输周期)或增加延迟。
上述仲裁过程如图3的每个级所示。在第一级,控制器132a确定是否传递来自上游源FIFO 138d还是本地FIFO 138a的数据分组。为此,控制器132a可以使用上游FIFO 138d的源标签(或指示分组的源的其他信息)以查找寄存器134a处的对应条目。如图所示,寄存器134a包括用于上游FIFO 138d的条目,如复选标记所示。因此,控制器132a可以控制多路复用器136a以传递本地FIFO 138a的下一数据分组140a,并且通过移除所有条目(例如,将所有条目设置为“假”)来清除寄存器134a。在第二级,控制器132b确定是否传递来自上游管线FIFO 139a还是本地FIFO 138b的数据分组。控制器132a可以在寄存器134b处查找与上游管线FIFO 139a中的下一分组的源相对应的条目。如图所示,寄存器134b包括用于该分组的源的条目。作为响应,控制器132b可以控制多路复用器136b以传递本地FIFO 138b的下一数据分组140b,并且清除寄存器134b。在第三级,控制器132c确定是否传递来自上游管线FIFO139b还是本地FIFO 138c的数据分组。控制器132c可以在寄存器134c处查找与上游管线FIFO 139b中的下一分组140c的源相对应的条目。如图所示,寄存器134c不包括分组140c的条目,如未选中的框所示。作为响应,控制器132b可以控制多路复用器136b以传递管线FIFO139b的下一数据分组140c,并且通过添加与分组140c的源(即,FIFO 138b)相对应的条目来更新寄存器134c。
如以上示例中所述,寄存器134a-c中的每个寄存器为每个源保持单个二进制条目的记录,该记录可以由比特矢量(每个源ID一个比特)来实现。在另外的实施例中,寄存器134a-c可以配置有多位计数器的矢量(每个源ID大于1位),并且对于每个上游源具有允许分组的可变阈值,而不是仅单个分组的阈值。这种配置可以帮助更快地清除上游流量,减少实现混洗公平性所需要的时间。对于每个启动器(源),阈值可以是相同的,或者为了保持公平性和效率,阈值可以向上游减少。在一个示例中,在接收到上游分组时,控制器132b将参考寄存器134b以将对应计数器与发起分组的源的阈值进行比较。如果计数小于阈值,则记分板计数器将被递增,并且多路复用器139b将传递上游数据分组。相反,如果计数大于或等于阈值,则控制器132a可以从本地数据FIFO 138b中选择数据达阈值数目的周期,然后清除寄存器134b。
在一个示例中,给定源的阈值可以与下游距离成比例地变大,以保持公平仲裁。此外,为了避免剥夺共享资源的源,仲裁器可以对其允许的上游分组数目进行计数。在允许可配置数目的重复分组之后,可以允许本地源也发送那么多分组。这种方法可以被认为是一种前瞻性的形式,这表示通过允许一些重复分组从上游传递,一些唯一分组可以从上游到达,这些分组可以被混洗进来,并且以更少的延迟实现公平。这种配置对于连续的数据流可能不太有用,而当数据流是断断续续的,在分组之间只有1个或若干周期时,这种配置可能更有用。
在另外的实施例中,诸如高速缓存线访问的仲裁,可能有必要在没有来自另一源的数据分组被混洗的情况下,连续发生来自所选择的源的多次传输。为了满足这一要求,可以将附加信号位或标志“最后分组”与ID标签一起与每个数据分组相关联。如果“最后分组”位被断言,则仲裁过程可以如上所述进行。如果“最后分组”位被取消断言,则即使达到记分板阈值,数据仲裁器也可以继续为后续分组选择给定源,从而保证突发在整个管线和宿处保持连续。如果在记分板中使用上一节中描述的多位计数器,则计数在突发期间可以在阈值处饱和。然而,启动器之间突发的不平衡使用可能会导致在源之间失去公平选择。因此,另外的实施例可以在控制器处采用不允许突发开始的附加逻辑,除非与ID相关联的记分板计数足够低以适应突发大小。
通常需要将带宽的加权份额提供给启动器的子集,以满足不同的系统要求。使用如上所述的多个数据仲裁器,可以通过将分配给每个启动器的单个ID扩展到一系列虚拟ID来实现这种加权,从仲裁器的角度来看,这些虚拟ID似乎源自多个启动器,尽管具有单个公共启动器。这种方法必然会增加记分板矢量的宽度以适应新的ID。附加地,启动器可以被配置为在标记向下游发送的流量时循环遍历其每个虚拟ID。在满载情况下,给定启动器的带宽百分比可以计算为:(分配给启动器的虚拟ID的数目)/(所有启动器的虚拟ID的总数)*100%。
再次参考图3,可以在不使用寄存器134a-c和控制器132a-c操作不同仲裁过程的情况下实现另外的实施例。在该示例中,称为“头”位的单个位可以与每个数据分组相关联,并且可以被设置为标识具有来自上游管线的唯一源的分组序列中的第一分组。因此,头位是通知每一级的控制器132a-c在何时可以将来自本地FIFO 138a-c的分组合并到数据管线130中的标记。因此,控制器132a-c可以使多路复用器136a-c将头==1分组和所有后续上游分组向下游传递,直到它看到另一头==1比特,在这一点上,如果它有一个数据分组,则它传递它自己的数据分组(头=0)。以这种方式,具有唯一源的分组串在每个级增加1。因此,当组合时,唯一源序列的两个串也产生一个唯一源序列串。在这种方法中,可能不需要检查每个节点处的源ID,而是相信上游节点相应地操作相同过程,创建唯一的源分组的串,然后在该串的末端处合并到本地分组中。因此,在每个级处的控制器132a-c可以执行以下仲裁过程:
a)传送上游分组,直到检测到头比特设置为1的分组。此时,传递头比特设置为0的本地分组。
b)如果没有上游分组,则传递头比特设置为1的本地分组。
图4是可以由上述数据仲裁器执行的示例仲裁过程400的流程图。过程400与上面参考图3描述的仲裁过程相当,并且可以由图3的控制器132a-c或图2的控制器122执行。参考图2,控制器122可以首先在每个上游管线FIFO 129处解析下一分组以定位标识下一分组的源的标签(405)。使用该标签,控制器122然后可以搜索寄存器124以定位与上游管线FIFO129中的下一分组的源相对应的条目(410),并且确定这样的条目是否被找到(415)。如果该条目在寄存器124处没有找到,则控制器122可以控制多路复用器126选择下一个要传递的上游分组,并且更新寄存器124以添加与分组的源相对应的条目(420)。如果该条目在寄存器124处被找到,则控制器122可以控制多路复用器126选择下一个要传递的本地分组,并且清除寄存器以移除所有条目(425)。
过程400可以适用于各种不同的仲裁操作。参考图1,例如,数据仲裁器120g被配置为合并来自两个源104、105的数据。为此,数据仲裁器120g可以将一个源104指定为“本地”源,而将另一源105指定为“上游”源,即使这两个源都直接连接到数据仲裁器120g,如图所示。在该配置下,数据仲裁器120g可以执行如上所述的仲裁过程400。在另一示例中,数据仲裁器120f可以合并来自数据管线130的两个并行分支的数据,如图所示,每个分支终止于相应上游数据仲裁器120e、120g。因此,数据仲裁器120f可以将一个数据仲裁器120g指定为“本地”源,而将另一源120e指定为“上游”源。数据仲裁器120f然后可以执行如上所述的仲裁过程400。如果管线的一个分支比另一分支传送更多的数据流量或者传送来自更多源或比其他源优先级更高的源的数据流量。则将该分支指定为“上游”源可以通过赋予该分支更高的优先级来确保更平衡的仲裁。下面参考图5描述了另一备选仲裁过程,该过程在每个仲裁器的输入之间交替评分。
除了仲裁数据读/写请求和/或响应,在另外的实施例中,如上所述的数据仲裁器可以被配置为以固定速率公平高效地向启动器授予请求。这样的应用在存在很多分布式启动器的情况下可以是有用的,这些启动器被配置为利用给定资源,诸如存储器网格,但平均而言,该资源每个周期只能为一个启动器提供服务。数据仲裁器可以被配置为通过仲裁请求令牌来模拟请求/授权仲裁,其中接收器用授权令牌进行响应。一旦请求启动器收到授权令牌,就可以立即开始访问某些共享资源。在高请求活动期间,通过在传递本地请求之前选择性地混洗上游请求,将以与上述相同的方式实现公平性。这样的资源仲裁可以通过每个周期只发布一个授权来保证不会过度利用。此外,在这样的配置中,往返延迟可以是距离资源仲裁点的跳数的两倍。对于为同一资源仲裁的N个适配器串,通过将仲裁点放在中心并且将其设计为以循环方式同时为来自任何一方的请求提供服务,可以将延迟减少一半到N/2跳。
可选地,在低活动或空闲时间期间,资源仲裁点可以在授权响应管线上发出“通配符授权”,获取这些授权的第一启动器可以使用这些授权。这种方法可以以可忽略的成本降低延迟并且提高利用率。虽然上游启动器可能会剥夺下游启动器的通配符授权,但这种影响可以只是暂时的,因为如果启动器未能获取通配符授权,它将提交请求(多个)令牌,并且通过混洗算法保证公平服务。
图5示出了实现多个数据仲裁器的示例多对一归约树电路500。如图所示,多个数据源502a-h向单个数据宿510提供数据(例如,信息、命令、请求等)。为了将每个数据源502a-h的并行数据输出减少到数据宿510的单个输入,如上所述配置的多个数据仲裁器可以在互连层中实现。这些层包括将8个源输出减少到4个的第一层数据仲裁器520a-d、将第一层的4个输出减少到2个的第二层数据仲裁器521a-b、以及包括将第二层的2个输出减少到数据宿510的单个输入的单个数据仲裁器522的第三层。
与上述仲裁过程相反,每个数据仲裁器可以被配置为在来自左右上游支路的数据之间交替,直到寄存器指示达到给定源的阈值,其中阈值可以是1或更大。当达到阈值时,数据仲裁器可以仅从另一支路传递数据,直到达到另一源的阈值,此时寄存器可以被清除,并且过程再次开始。每个源的阈值可以是不同的,并且可以被配置为优先选择源或分支。例如,如果希望源502a具有比数据源502d更高的优先级,则数据仲裁器521a可以被配置为使得其寄存器向源502a分配高于向源502d分配的阈值数目。
与实现如上所述的数据管线130的SOC 100相比,电路500示出了分布式数据仲裁器在拓扑结构中的应用,其中任一支路的数据源是来自先前数据仲裁节点的输出。这种多对一归约结构可以用于存储器交叉开关或通信交叉开关,其中在一个方向上为每个宿实例化树。在另外的实施例中,在一个或多个数据宿向源提供响应数据的情况下,可以实现多个树,其中宿被指定为叶,源被指定为根。
虽然已经特别示出和描述了示例性实施例,但本领域技术人员将理解,在不脱离所附权利要求所涵盖的实施例的范围的情况下,可以对其中的形式和细节进行各种改变。

Claims (21)

1.一种电路,包括:
数据管线,将多个数据源连接到数据接收器;以及
多个数据仲裁器,每个数据仲裁器被配置为在所述管线中的不同点处将来自所述多个数据源中的相应数据源的数据合并到所述数据管线,所述多个数据仲裁器中的每个数据仲裁器包括:
多路复用器,被配置为选择性地将来自所述相应数据源的上游数据分组或本地数据分组传递到所述数据管线;
寄存器,被配置为存储由所述多路复用器基于发起所述数据分组的所述相应数据源而传递的数据分组的指示;以及
控制器,被配置为基于由所述多路复用器传递的所述数据分组的指示来控制所述多路复用器以选择所述上游数据分组或所述本地数据分组。
2.根据权利要求1所述的电路,其中所述控制器还被配置为:
基于不存在发起所述上游分组的所述数据源的条目,选择所述上游分组并且将所述数据源的所述条目添加到所述寄存器,以及
基于所述寄存器包括发起所述上游分组的所述数据源的条目,选择所述本地分组并且清除所述寄存器。
3.根据权利要求1所述的电路,其中所述多个数据仲裁器中的每个数据仲裁器还包括用于存储所述上游数据分组和所述本地数据分组中的至少一者的先进先出(FIFO)缓冲器。
4.根据权利要求1所述的电路,其中所述控制器还被配置为使所述寄存器存储由所述多路复用器基于与所述数据分组中的每个数据分组相关联的相应标签而传递的所述数据分组的指示,所述相应标签指示发起所述数据分组的所述相应数据源。
5.根据权利要求1所述的电路,还包括上游数据仲裁器,所述上游数据仲裁器被配置为合并来自所述管线上游的点处的所述多个数据源中的至少两个数据源的数据,所述数据仲裁器包括寄存器,所述寄存器被配置为存储由所述数据仲裁器基于发起所述数据分组的所述相应数据源而传递的所述数据分组的指示。
6.根据权利要求5所述的电路,其中所述上游数据仲裁器是第一上游数据仲裁器,并且所述电路还包括第二上游数据仲裁器,所述第二上游数据仲裁器被配置为合并来自所述第一上游数据仲裁器和在所述管线上游的另外的点处的所述多个数据源中的至少一个数据源的数据。
7.根据权利要求1所述的电路,其中所述数据管线包括至少两个并行段,并且所述电路还包括被配置为将来自至少两个并行段的数据合并为所述数据管线的统一段的另外的数据仲裁器。
8.根据权利要求1所述的电路,其中所述数据分组包括以下中的至少一项:1)在所述数据管线的终点处的设备处读取或写入数据的请求,2)要存储在所述数字管线的终点处的设备处的数据,以及3)访问所述数据管线的终点处的资源的请求。
9.根据权利要求1所述的电路,其中所述寄存器保持由所述多路复用器基于发起所述数据分组的所述相应数据源而传递的数据分组的计数,并且其中所述控制器还被配置为:
基于发起所述上游分组的所述数据源的计数低于阈值,选择所述上游分组并且在所述寄存器处递增所述数据源的所述计数,以及
基于所述计数超过所述阈值,选择所述本地分组并且清除所述寄存器。
10.根据权利要求1所述的电路,其中所述控制器还被配置为基于指示无中断地转发多个数据分组的序列的要求的标志来控制所述多路复用器以选择所述上游数据分组。
11.一种仲裁数据流量的方法,包括:
在将多个数据源连接到数据接收器的数据管线中的多个不同点中的每个点处:
选择性地将来自相应数据源的上游数据分组或本地数据分组传递到所述数据管线;
存储基于发起所述数据分组的所述相应数据源而传递的数据分组的指示;以及
基于由所述多路复用器传递的所述数据分组的指示来选择所述上游数据分组或所述本地数据分组。
12.根据权利要求11所述的方法,还包括:
基于不存在发起所述上游分组的所述数据源的条目,选择所述上游分组并且将所述数据源的所述条目添加到所述寄存器,以及
基于检测到发起所述上游分组的所述数据源的条目,选择所述本地分组并且清除所述寄存器。
13.根据权利要求11所述的方法,还包括将所述上游数据分组和所述本地数据分组中的至少一者存储到先进先出(FIFO)缓冲器。
14.根据权利要求11所述的方法,还包括存储基于与所述数据分组中的每个数据分组相关联的相应标签而传递的所述数据分组的指示,所述相应标签指示发起所述数据分组的所述相应数据源。
15.根据权利要求11所述的方法,还包括:
合并来自所述管线上游的点处的所述多个数据源中的至少两个数据源的数据;以及
存储基于发起所述数据分组的所述相应数据源而传递的数据分组的指示。
16.根据权利要求15所述的方法,还包括合并来自所述管线的上游的所述点和在所述管线的上游的另外的点处的所述多个数据源中的至少一个数据源的数据。
17.根据权利要求11所述的方法,其中所述数据管线包括至少两个并行段,并且所述方法还包括将来自至少两个并行段的数据合并为所述数据管线的统一段。
18.根据权利要求11所述的方法,其中所述数据分组包括以下中的至少一项:1)在所述数据管线的终点处的设备处读取或写入数据的请求,2)要存储在所述数字管线的终点处的设备处的数据,以及3)访问所述数据管线的终点处的资源的请求。
19.根据权利要求11所述的方法,还包括:
保持由所述多路复用器基于发起所述数据分组的所述相应数据源而传递的数据分组的计数;
基于发起所述上游分组的所述数据源的计数低于阈值,选择所述上游分组并且在所述寄存器处递增所述数据源的所述计数;以及
基于所述计数超过所述阈值,选择所述本地分组并且清除所述寄存器。
20.根据权利要求11所述的方法,还包括基于指示无中断地转发多个数据分组的序列的要求的标志来控制所述多路复用器以选择所述上游数据分组。
21.一种电路,包括:
在将多个数据源连接到数据接收器的数据管线中的多个不同点中的每个点处:
用于选择性地将来自相应数据源的上游数据分组或本地数据分组传递到所述数据管线的部件;
用于存储基于发起所述数据分组的所述相应数据源而传递的数据分组的指示的部件;以及
用于基于由所述多路复用器传递的所述数据分组的指示来选择所述上游数据分组或所述本地数据分组的部件。
CN202311382512.4A 2022-11-03 2023-10-24 用于共享数据路径的分布式仲裁 Pending CN117992371A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US63/422,407 2022-11-03
US18/160,127 US20240152477A1 (en) 2022-11-03 2023-01-26 Distributed arbitration for shared data path
US18/160,127 2023-01-26

Publications (1)

Publication Number Publication Date
CN117992371A true CN117992371A (zh) 2024-05-07

Family

ID=90898280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311382512.4A Pending CN117992371A (zh) 2022-11-03 2023-10-24 用于共享数据路径的分布式仲裁

Country Status (1)

Country Link
CN (1) CN117992371A (zh)

Similar Documents

Publication Publication Date Title
JP4897868B2 (ja) デジタルデータネットワークにおけるメッセージフローを調整するシステムおよび方法
US7295557B2 (en) System and method for scheduling message transmission and processing in a digital data network
JP5335892B2 (ja) パケット交換オンチップ相互接続ネットワークの高速仮想チャネル
CN109684269B (zh) 一种pcie交换芯片内核及工作方法
US20160154756A1 (en) Unordered multi-path routing in a pcie express fabric environment
US10749811B2 (en) Interface virtualization and fast path for Network on Chip
US9954771B1 (en) Packet distribution with prefetch in a parallel processing network device
US10169270B2 (en) Techniques for handling interrupt related information in a data processing system
JPH08265270A (ja) 転送路割り当てシステム
US9185026B2 (en) Tagging and synchronization for fairness in NOC interconnects
US7058053B1 (en) Method and system to process a multicast request pertaining to a packet received at an interconnect device
US10491543B1 (en) Shared memory switch fabric system and method
US6728790B2 (en) Tagging and arbitration mechanism in an input/output node of a computer system
US6807599B2 (en) Computer system I/O node for connection serially in a chain to a host
CN109716719B (zh) 数据处理方法及装置、交换设备
US9148270B2 (en) Method and apparatus for handling data flow in a multi-chip environment using an interchip interface
CN117992371A (zh) 用于共享数据路径的分布式仲裁
US20240152477A1 (en) Distributed arbitration for shared data path
CN112631985B (zh) 一种链路共享的片上网络
US9590924B1 (en) Network device scheduler and methods thereof
US6839784B1 (en) Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel
US10540101B1 (en) Transmit buffer device for operations using asymmetric data widths
TWI730476B (zh) 路由器及路由方法
CN117135107A (zh) 一种网络通信拓扑系统、路由方法、设备及介质
JP2004242336A (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication