CN113946525B - 用于仲裁对共享资源的访问的系统和方法 - Google Patents
用于仲裁对共享资源的访问的系统和方法 Download PDFInfo
- Publication number
- CN113946525B CN113946525B CN202110366615.6A CN202110366615A CN113946525B CN 113946525 B CN113946525 B CN 113946525B CN 202110366615 A CN202110366615 A CN 202110366615A CN 113946525 B CN113946525 B CN 113946525B
- Authority
- CN
- China
- Prior art keywords
- arbitration
- destination
- data structure
- data
- bits
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000004044 response Effects 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 43
- 238000000605 extraction Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000000644 propagated effect Effects 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 4
- 208000027744 congestion Diseases 0.000 description 4
- 238000009877 rendering Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0064—Latency reduction in handling transfers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Bus Control (AREA)
Abstract
公开了用于仲裁对共享资源的访问的系统和方法。从各种源接收数据并将所述数据存储在各种队列中。基于存储的数据生成第一数据结构。第一数据结构可与两个维度(例如,与源相关联的第一维度和与目的地相关联的第二维度)相关联。基于第一数据结构生成第二数据结构。第二数据结构可与一个维度相关联。所述一个维度可包括第二维度。基于第二数据结构执行第一仲裁以选择目的地。基于第一数据结构和所选的目的地来执行第二仲裁以选择源。检索存储在队列中的与所选的源和所选的目的地相关联的一个队列中的数据,并将检索到的数据提供给所述共享资源。
Description
本申请要求于2020年7月16日提交的标题为“在多级仲裁中使用提示基传播的逆序仲裁”,申请号为63/052,899的美国临时申请的优先权和权益,该申请的全部内容通过引用包含于此。
技术领域
根据本公开的实施例的一个或更多个方面涉及访问共享资源,并且更具体地,涉及一种调解对共享资源的访问的可扩展仲裁系统和方法。
背景技术
存在一个或更多个数据源可能想要通过共享资源访问一个或更多个目的地的各种情况。一个或更多个源可以是例如计算系统的软件应用,并且目的地可以是数据存储装置的存储位置。对存储装置的访问可通过共享数据通信链路,诸如例如,外围组件互连快速(PCIe)链路。虽然多个软件应用可能想要在给定时间访问数据存储装置,但是共享数据通信链路限制一次对一个应用的访问。
因此,期望具有一种用于以高效且可扩展的方式调解/仲裁共享资源的访问的机制。
发明内容
本公开的实施例涉及一种用于仲裁对共享资源的访问的方法。从多个源接收数据并将所述数据存储在多个队列中。基于存储在所述多个队列中的数据生成第一数据结构。第一数据结构与至少两个维度相关联,其中,所述至少两个维度包括与所述多个源相关联的第一维度和与多个目的地相关联的第二维度。基于第一数据结构生成第二数据结构。第二数据结构与至少一个维度相关联,其中,所述至少一个维度包括第二维度。基于第二数据结构执行第一仲裁,其中,第一仲裁用于从所述多个目的地选择目的地。基于第一数据结构和所选的目的地执行第二仲裁,其中,第二仲裁用于从所述多个源选择源。检索存储在所述多个队列中的与所选的源和所选的目的地相关联的一个队列中的数据,并将检索到的数据提供给所述共享资源。
根据一个实施例,所述多个队列中的特定队列与所述多个源中的特定源和所述多个目的地中的特定目的地相关联,其中,所述特定队列存储来自所述特定源的寻址到所述特定目的地的数据。
根据一个实施例,第一数据结构包括多个第一比特,其中,所述多个第一比特中的第一比特与所述特定源和所述特定目的地相关联,其中,所述第一比特是基于所述数据被存储在所述特定队列中而被设置的。
根据一个实施例,第二数据结构包括多个第二比特,其中,所述多个第二比特中的第二比特与所述特定目的地相关联,并且其中,生成第二数据结构的步骤包括:基于第一数据结构的具有所述特定目的地作为第二维度的比特子集执行逻辑OR运算。
根据一个实施例,所述方法还包括:基于所选的目的地,动态地分配用于执行第二仲裁的逻辑。
根据一个实施例,所述共享资源是数据传输链路。
本公开的实施例还涉及一种用于仲裁对共享资源的访问的方法,其中,所述方法包括:从多个源接收数据;将所述数据存储在多个队列中;基于存储在所述多个队列中的数据生成第一数据结构,其中,第一数据结构与至少三个维度相关联,其中,所述至少三个维度包括与所述多个源相关联的第一维度、与多个属性相关联的第二维度以及与多个目的地相关联的第三维度;基于第一数据结构生成第二数据结构,其中,第二数据结构与至少两个维度相关联,其中,所述至少两个维度包括与所述多个属性相关联的第二维度以及与所述多个目的地相关联的第三维度;基于第二数据结构生成第三数据结构,其中,第三数据结构与至少一个维度相关联,其中,所述至少一个维度包括第三维度;基于第三数据结构执行第一仲裁,其中,第一仲裁用于从所述多个目的地选择目的地;基于第二数据结构和所选的目的地执行第二仲裁,其中,第二仲裁用于从所述多个属性选择属性;基于第一数据结构、所选的属性和所选的目的地来执行第三仲裁,其中,第三仲裁用于从所述多个源选择源;检索存储在所述多个队列中的与所选的源、所选的属性和所选的目的地相关联的一个队列中的数据;并且将检索到的数据提供给所述共享资源。
根据一个实施例,所述多个队列中的特定队列与所述多个源中的特定源、所述多个属性中的特定属性和所述多个目的地中的特定目的地相关联,其中,所述特定队列存储具有所述特定属性、所述特定源和所述特定目的地的数据。
根据一个实施例,所述特定属性是多个优先级中的优先级。
根据一个实施例,第一数据结构包括多个第一比特,其中,所述多个第一比特中的第一比特与所述特定源、所述特定属性和所述特定目的地相关联,其中,所述第一比特是基于所述数据被存储在所述特定队列中而被设置的。
根据一个实施例,第二数据结构包括多个第二比特,其中,所述多个第二比特中的第二比特与所述特定属性和所述特定目的地相关联,其中,生成第二数据结构的步骤包括:基于第一数据结构的具有所述特定属性和所述特定目的地分别作为第二维度和第三维度的比特子集来执行逻辑OR运算。
根据一个实施例,第三数据结构包括多个第三比特,其中,所述多个第三比特中的第三比特与所述特定目的地相关联,其中,生成第三数据结构的步骤包括:基于第二数据结构的具有所述特定目的地作为第三维度的比特子集来执行逻辑OR运算。
根据一个实施例,所述方法还包括:基于所选的目的地动态地分配用于执行第二仲裁的逻辑;并且基于所选的属性和所选的目的地动态地分配用于执行第三仲裁的逻辑。
本公开的实施例还涉及一种用于仲裁对共享资源的访问的系统。所述系统包括:存储器,用于存储多个队列,其中,所述多个队列存储来自多个源的数据;以及处理电路,耦接到存储器。所述处理电路可具有进行以下操作的逻辑:基于存储在所述多个队列中的数据来生成第一数据结构,其中,第一数据结构与至少两个维度相关联,其中,所述至少两个维度包括与所述多个源相关联的第一维度和与多个目的地相关联的第二维度;基于第一数据结构生成第二数据结构,其中,第二数据结构与至少一个维度相关联,其中,所述至少一个维度包括第二维度;基于第二数据结构执行第一仲裁,其中,第一仲裁用于从所述多个目的地选择目的地;基于第一数据结构和所选的目的地执行第二仲裁,其中,第二仲裁用于从所述多个源选择源;检索存储在所述多个队列中的与所选的源和所选的目的地相关联的一个队列中的数据;并且将检索到的数据提供给所述共享资源。
如本领域技术人员应认识到的,本公开的实施例提供了一种用于调解/仲裁对共享资源的访问的高效且可扩展的机制。各种实施例的仲裁机制允许消除了在特定级仲裁对多个仲裁器的需要的多级仲裁。各种实施例的仲裁机制还消除了在执行仲裁时将数据复制到中间队列中的需要。数量减少的仲裁器和消除中间队列有助于节省硬件资源、成本、占芯片面积需求和/或电力使用。考虑到本公开的实施例避免了将数据复制到中间队列,还可在延迟和吞吐量方面改善性能。此外,通过消除将数据复制到中间队列中的操作,还可消除中间复制可能需要的任何安全措施。因此,本公开的实施例有助于改善成本-面积-电力和性能两者。
当针对以下详细描述、所附权利要求和附图考虑时,将更全面地理解本公开的实施例的这些和其他特征、方面和优点。当然,本发明的实际范围由所附权利要求来限定。
附图说明
参照以下附图描述本实施例的非限制性和非穷举性实施例,其中,除非另有说明,否则相同的附图标号在各种视图中指代相同的部分。
图1是现有的多级仲裁系统的概念布局图;
图2是用于解决行头阻塞的另一现有的多级仲裁系统的概念布局图;
图3是根据本公开的实施例的仲裁系统的框图;
图4是根据一个实施例的三级仲裁系统的各种组件的概念布局图;
图5是根据一个实施例的可由二级仲裁系统生成的示例性提示图的概念布局图;
图6是根据一个实施例的可由三级仲裁系统生成的示例性提示图的概念布局图;
图7是根据一个实施例的用于在二级仲裁系统中仲裁对共享资源的访问的处理的流程图;以及
图8是根据一个实施例的用于在三级仲裁系统中仲裁对共享资源的访问的处理的流程图。
具体实施方式
在下文中,将参照附图更详细地描述示例实施例,其中,相同的附图标号始终指代相同的元件。然而,本公开可以以各种不同形式被实施,并且不应被解释为仅限于这里所示的实施例。相反,这些实施例是作为示例而被提供的,使得本公开将是彻底和完整的,并且将向本领域技术人员充分传达本公开的方面和特征。因此,可不对为了完全理解本公开的方面和特征对于本领域普通技术人员不必要的处理、元件和技术进行描述。除非另有说明,否则在整个附图和书面描述中相同的附图标号表示相同的元件,因此,可不重复其描述。此外,在附图中,为了清楚,可夸大和/或简化元件、层和区域的相对尺寸。
一般而言,本公开的实施例涉及一种用于提供共享资源(例如,共享串行链路)的仲裁的系统和方法。当多个源试图通过共享资源访问有限数量的目的地时,可能期望这样的仲裁。例如,256个输入源可试图使用共享链路将数据发送到16个目的地。
现有的多级仲裁机制提供第一级仲裁中的不同输入源之中的仲裁、第二级仲裁中的不同流量类别之中的仲裁、以及第三级仲裁中的不同输出目的地之中的仲裁。现有的多级仲裁机制还可在仲裁的每一级中使用不同的队列结构。
图1是现有的多级仲裁系统100的概念布局图。该系统可包括试图通过共享资源106将数据发送到多个目的地104的多个源102。仲裁系统可针对每个支持的数据源102提供输入队列108,并且数据源可将要被发送到目的地的数据存储在与该数据源对应的输入队列108中。
仲裁系统还可包括源仲裁器110、流量仲裁器112和目的地仲裁器114,以分别基于源、流量类别和目的地参数来执行前向仲裁。源仲裁器110可执行第一级仲裁以选择各种输入队列108中的输入队列(源),即,访问共享资源。可根据数据所属的流量类别(例如,优先级)将所选的输入队列108中的数据复制到各种流量队列116中的一个。仲裁系统可针对每个支持的流量类别提供流量队列116。
流量仲裁器112可执行不同流量类别的第二级仲裁,并且基于选择算法来选择各种流量类别队列116中的特定流量类别队列。可根据所选的流量队列中的数据的目的地信息将所选的流量类别队列116中的数据复制到各种目的地队列118中的一个目的地队列。仲裁系统可针对每个支持的目的地104提供目的地队列118。
目的地仲裁器114可执行不同目的地队列118的第三级仲裁,并且基于选择算法来选择各种目的地队列中的特定目的地队列。可将存储在所选的目的地队列中的数据(例如,第一数据包)提供给共享资源106以供服务。就此而言,共享资源可将所选的数据发送到与所选的目的地队列相关联的目的地。
在图1的多级仲裁系统中可能出现的一个问题被称为行头(HOL)阻塞。对于计算系统,当队列中的一行数据包被行中的第一包阻塞时,可能发生HOL阻塞。如果第二包由于例如第一包的目的地处的拥塞而不能被处理,则第一包可阻塞队列中的其他包被处理。其他包(第三包和稍后的包)可被第二包阻塞,即使它们被寻址到不遭受拥塞的目的地。
图2是用于解决HOL阻塞的现有的多级仲裁系统200的概念布局图。如图1中,系统200包括试图通过共享资源206将数据发送到多个目的地的多个源202。由多个源202发送的数据可被存储在多个输入队列208中。图2的仲裁系统200可通过沿三维提供输入队列208来解决HOL阻塞问题。就此而言,可针对输入源、流量类别和目的地的每个组合提供输入队列208。例如,假设仲裁系统200包括256个源202、四个流量类别和16个目的地,则由仲裁系统提供的输入队列208的总数为16,384。
仲裁系统200可提供第一组仲裁器210以并发地执行第一级仲裁。可针对流量类别和目的地的每个组合提供第一组仲裁器210中的仲裁器。与特定流量类别和目的地相关联的仲裁器210可被配置为在与特定流量类别和目的地相关联的输入队列208之中进行仲裁。然后可基于选择算法针对所仲裁的流量类别和目的地选择输入队列208。在仲裁系统200包括四个流量类别和16个目的地的示例中,第一组仲裁器的总数可以是64。
由每个仲裁器210被选为第一级仲裁的获胜者的输入队列208中的数据可被复制到对应的流量队列212中。然后,第二组仲裁器214可基于存储在流量队列212中的数据并发地执行第二级仲裁。第二组仲裁器214中的仲裁器可被配置为在与特定目的地相关联的流量队列之中进行仲裁,并且基于选择算法针对所仲裁的目的地选择流量队列。仲裁系统200可针对由仲裁系统200支持的每个目的地提供仲裁器214。在16个目的地被支持的情况下,仲裁系统可提供16个仲裁器214以执行第二级仲裁。
可将由每个仲裁器214被选为第二级仲裁的获胜者的流量队列212中的数据复制到对应的目的地队列216中。目的地仲裁器218可执行不同目的地队列216的第三级仲裁,并且基于选择算法来选择特定目的地队列。可将存储在所选的目的地队列216中的数据(例如,第一数据包)提供给共享资源206以供服务。就此而言,共享资源可将所选的数据发送到与所选的目的地队列相关联的目的地。
虽然图2的仲裁系统200可解决HOL阻塞问题,但是该解决方案在实现该解决方案可能需要的资源、占芯片面积和处理能力方面可能是昂贵的。因此,需要一种可在资源、占芯片面积和/或处理能力方面更高效的仲裁系统。
图3是根据本公开的实施例的仲裁系统300的框图。该系统可包括试图通过共享资源306将数据发送到多个目的地304的多个源302。例如,N个源(例如,0-255个源)可试图将数据发送到M个目的地(例如,0-15个目的地)。源302、目的地304和共享资源306可以是计算机系统的物理组件或虚拟组件。例如,源可以是不同的软件应用,并且目的地可以是存储装置(例如,固态驱动)的存储位置。对存储装置的访问可通过共享数据通信链路,诸如例如,PCIe链路或开放NAND闪存接口(ONFI)链路。
源302、目的地304和共享资源306也可以是物理世界的位置/组件。例如,源302可以是使用共享航空公司承运商将邮件发送到不同地理位置(目的地304)的不同邮局位置。当涉及这样的物理世界组件时,可通过计算机系统来模拟源、目的地和共享资源,以仲裁对共享资源的访问。
在一个实施例中,仲裁系统300包括通过数据通信链路310被耦接到多个源302的分发器308。数据通信链路310可以是本领域中常规的允许数据独立传输到分发器308的任意数据通信链路。分发器308可从多个源302接收数据,并将该数据发送到多个队列312以进行存储。队列312可以是例如存储装置的静态随机存取存储器(SRAM)。
在一个实施例中,多个队列312中的队列与至少二维(2D)的参数相关联。在一个实施例中,该队列与至少三维(3D)的参数相关联。该参数可标识例如多个源302中的源和多个目的地304中的目的地。在一些实施例中,参数还可标识数据的属性,诸如例如,流量类别(TC)。流量类别可标识数据的优先级。例如,TC 0可标识紧急优先级,TC 1可标识高优先级,TC2可标识中优先级,并且TC 3可标识低优先级。多个队列312中的每个队列可与参数(2D、3D或3D加)的对应组合相关联。
仲裁系统300可针对用于标识队列312的参数的每个组合提供队列312。例如,在2D参数被使用的情况下,仲裁系统300可针对源302和目的地304的每个组合提供队列。在3D参数被使用的情况下,仲裁系统300可针对源302、属性和目的地304的每个组合提供队列。分发器308可基于与数据相关联的参数将该数据存储在一个或更多个合适的队列中。
在一个实施例中,仲裁系统300还包括提示图生成器314和反向仲裁引擎316。提示图生成器314和反向仲裁引擎316可经由硬件、固件或软件或者硬件、固件和/或软件的组合来实现。例如,在仲裁系统300仲裁对存储装置的存储位置的访问的实施例中,提示图生成器314和反向仲裁引擎316可以是该存储装置的控制器子系统的一部分。
在一个实施例中,提示图生成器314被配置为生成用于基于与队列312中的数据相关联的参数执行仲裁的数据结构(被称为提示图)。仲裁系统300可被配置为提供一个或更多个级的仲裁。可在特定级的仲裁考虑数据的特定参数,以选择仲裁参数的获胜值。
在一个实施例中,提示图生成器314被配置为针对每一级的仲裁生成单独的提示图。提示图可包括多个比特,其中,所述多个比特中的比特与一个或更多个参数相关联。与提示图的比特相关联的参数的数量可取决于生成提示图所针对的仲裁的级。例如,假设有两级仲裁,在第一级仲裁中使用的提示图可与两个参数(例如,源和目的地)相关联,并且在第二级仲裁中使用的提示图可与一个参数(例如,目的地)相关联。在另一示例中,假设有三级仲裁,在第一级仲裁中使用的提示图可与三个参数(例如,源、流量类别和目的地)相关联,在第二级仲裁中使用的提示图可与两个参数(例如,流量类别和目的地)相关联,并且在第三级仲裁中使用的提示图可与一个参数(例如,目的地)相关联。
生成的提示图可被存储在提示存储器318中。在一个实施例中,提示图被存储,直到已经针对当前处理周期完成了全部级的仲裁为止。提示存储器318可例如经由SRAM来实现。
在一个实施例中,生成的提示图从一个仲裁级被传播到另一仲裁级,并且可指示在所传播的仲裁级处的仲裁请求。在一个实施例中,通过对与先前级相关联的提示图中的比特子集执行逻辑OR运算来传播提示图。例如,可通过对与不同维(例如,源)相关联的第一级提示图中的比特执行逻辑OR来生成与特定维(例如,特定目的地和流量类别)相关联的第二级提示图。在另一示例中,可通过对与特定目的地相关联的第二级提示图中的提示比特执行逻辑OR来生成与该特定目的地相关联的第三级提示图。
反向仲裁引擎316可被配置为基于与队列312中的数据相关联的参数来执行一个或更多个级的仲裁。在一个实施例中,所述一个或更多个级的仲裁基于由提示图生成器314生成的提示图。使用提示图来执行不同级的仲裁的操作消除了将数据复制到与不同仲裁级相关联的单独队列(诸如参照图2的仲裁系统200描述的队列212、216)中的需要。
在一个实施例中,反向仲裁引擎316从最终/最高仲裁级(例如,最接近目的地304的仲裁)开始到初始/最低仲裁级(例如,最接近源302的仲裁)来执行反向仲裁。在给定仲裁级,已经针对该仲裁级生成的提示图被用于选择要被仲裁的参数的获胜值。所述获胜值随后可被用于为下一更低仲裁级动态地分配仲裁器。然后,分配的仲裁器可基于针对所述更低仲裁级生成的提示图来执行仲裁。反向仲裁处理可继续进行,直到第一级仲裁识别出多个队列312中的获胜队列为止。就此而言,由反向仲裁引擎316选择的获胜队列的获胜ID391被发送到队列提取块392。在一个实施例中,队列提取块392被配置为提取存储在由获胜ID 391标识的获胜队列中的数据。在一个实施例中,获胜队列的行头项被提取并经由数据通信链路320被转发到共享资源306。
图4是根据一个实施例的三级仲裁系统400的各种组件的概念布局图。三级仲裁系统400的各种组件可类似于图3的仲裁系统300的组件。应理解,虽然图4描绘了三级的仲裁,但是仲裁系统400可被修改为支持更少或更高级的仲裁。
仲裁系统400包括多个源402(例如,0-255个源)和多个目的地404(例如,0-15个目的地)。多个源402中的一个或更多个源可试图通过共享资源406将数据(例如,数据分组)发送到多个目的地404中的一个或更多个目的地。共享资源406可以是例如PCIe链路或OFNI链路。
由一个或更多个源402发送的数据被提供给分发器408,以将数据入队到多个队列410中的一个或更多个队列中。就此而言,分发器408可基于与数据相关联的参数来选择队列。在一个实施例中,可使用三个参数来标识数据和相关联的队列。三个参数可标识源、属性(例如,流量类别)和目的地。可针对三个参数的值的每个可能组合提供单独的队列,以存储与所述值相关联的数据。例如,如果存在256个可能的源、4个可能的流量类别和16个可能的目的地,则可能的队列410的总数为16,384(256×4×16)。
读指针412可被用于检索被选择以访问共享资源406的对应队列410中的下一个数据包。
在一个实施例中,提示图生成器314被调用以生成针对每一级仲裁的提示图。在三级仲裁系统中,提示图生成器314可生成第一级提示图414、第二级提示图416和第三级提示图418。第一级提示图414可标识具有排队数据的队列410中的一个或更多个队列。第一级提示图414的每个比特可与三维参数相关联,其中,所述三维参数标识与特定源、特定流量类别和特定目的地相关联的特定队列。可响应于确定对应队列不为空(具有排队数据)来设置提示图414中的比特。例如,可针对与目的地“0”和流量类别“0”相关联的一个或更多个源402设置第一级提示图的比特子集414a中的一个或更多个比特。
第二级提示图416可标识与由第一级提示图414表示的排队数据相关联的属性(例如,流量类别)和目的地中的一个或更多个。就此而言,第二级提示图416的每个比特可与标识特定流量类别和特定目的地的二维参数相关联。可响应于确定存在具有排队数据的针对特定流量类别和特定目的地的至少一个队列来设置第二级提示图416中的比特。就此而言,第一级提示图414中的与特定流量类别和特定目的地相关联的比特被标识,并且针对所标识的比特来执行逻辑OR运算。在一个实施例中,逻辑OR运算的结果被用于设置第二级提示图416中的与特定流量类别和特定目的地对应的比特的值。例如,响应于第一级提示图的对应比特子集414a中的比特中的至少一个比特被设置,可在第二级提示图416中设置与流量类别“0”和目的地“0”对应的比特416a。类似地,响应于第一级提示图的对应比特子集414b中的比特中的至少一个比特被设置,可设置与流量类别“1”和目的地“1”对应的比特416b。
第三级提示图418可标识与由第二级提示图416表示的排队数据相关联的目的地中的一个或更多个目的地。就此而言,第三级提示图418的每个比特可与标识特定目的地的一维参数相关联。响应于确定存在与特定目的地相关联的具有排队数据的至少一个队列,可设置第三级提示图418中的比特。就此而言,第二级提示图416中的与特定目的地相关联的比特被标识,并且针对所标识的比特来执行逻辑OR运算。在一个实施例中,逻辑OR运算的结果被用于设置第三级提示图418中的与特定目的地对应的比特的值。例如,响应于第二级提示图的对应部分416c中的比特中的至少一个比特被设置,可在第三级提示图418中设置与目的地“0”对应的比特418a。类似地,响应于第二级提示图的对应比特子集416d中的比特中的至少一个比特被设置,可设置与目的地“1”对应的比特418b。
在一个实施例中,生成的提示图被用于在每个仲裁级执行仲裁。就此而言,生成的提示图可被用作在对应仲裁级进行仲裁的请求。仲裁可在最接近目的地404的最终级(例如,级三)开始,并向后进行到更低的仲裁级(例如,级二,然后级一)。在一个实施例中,级三仲裁器420(例如,目的地仲裁器)被反向仲裁引擎316分配以执行级三仲裁。级三仲裁器420可使用目的地的第三级提示图418,以选择设置的比特中的一个比特作为级三仲裁的获胜目的地。可基于调度算法来选择获胜目的地。所述调度算法可以是本领域中常规的任意调度算法,诸如例如轮询、加权轮询、固定优先级等。获胜目的地可以是例如由比特418b标识的与目的地“1”对应的目的地。
在一个实施例中,反向仲裁引擎316使用级三仲裁的获胜目的地来为第二仲裁级动态地分配仲裁器422。例如,响应于级三仲裁的获胜目的地为目的地“1”,可动态地分配目的地“1”仲裁器以执行级二仲裁。不需要分配与未选择的目的地相关联的其他目的地仲裁器(例如,目的地“0”仲裁器424)。因此,应理解,当与现有的前向仲裁系统(诸如图2的系统200)相比时,各种实施例的反向仲裁使仲裁器减少。例如,当目的地的数量是16时,图2的前向仲裁系统200可调用16个仲裁器,而本公开的实施例调用单个仲裁器422。
级二仲裁器422可标识将进行级二仲裁的第二级提示图416的参数。例如,如果级二仲裁器422为目的地“1”仲裁器,则级二仲裁可在与目的地“1”相关联的不同流量类别之间进行。就此而言,级二仲裁器422可选择包括目的地“1”作为第一参数和获胜流量类别作为第二参数的第二级提示图中的设置的比特中的一个比特。例如,针对各种目的地“1”比特的与流量类别“1”对应的第二级提示图的比特416b可被选为级二仲裁的获胜者。
可使用调度算法来选择获胜流量类别进行级二仲裁。所述调度算法可与级三仲裁的调度算法相同或不同。在一个实施例中,用于选择获胜流量类别的调度算法基于特定流量类别对共享资源426的历史使用数据/统计423。例如,调度算法可选择具有低历史使用的更低流量类别作为级二仲裁的获胜者,而不是具有更高历史使用的更高流量类别。
在一个实施例中,反向仲裁引擎316使用级二仲裁的获胜者来为第一仲裁级动态地分配仲裁器425。例如,响应于级二仲裁的获胜者为针对各种目的地“1”比特的流量类别“1”,可动态地分配与流量类别“1”和目的地“1”相关联的源仲裁器425以执行级一仲裁。不需要分配针对流量类别和目的地的其他组合的其他仲裁器。在流量类别的数量是4且目的地的数量是16的实施例中,源仲裁器可从64减少到1。
级一仲裁器425可标识将进行级一仲裁的第一级提示图414的参数。例如,如果级一仲裁器425是针对目的地“1”的流量类别“1”仲裁器,则级一仲裁可以是与流量类别“1”和目的地“1”相关联的不同源。就此而言,级一仲裁器425可选择第一级提示图中的设置的比特中的一个比特,其中,第一级提示图包括流量类别“1”和目的地“1”作为第一参数和第二参数以及获胜源作为第三参数。例如,针对各种流量类别“1”和目的地“1”比特的与源“255”对应的第一级提示图的比特426可被选为级一仲裁的获胜者。
可使用调度算法来选择获胜源进行级一仲裁。所述调度算法可与级二或级三仲裁的调度算法相同或不同。在一个实施例中,第一级提示图414的获胜比特426以及第二级提示图416的获胜比特和第三级提示图418的获胜比特的参数可被用于标引多个队列410中的获胜队列428。例如,所述参数可标识获胜队列的获胜ID 491。获胜ID 491可被发送到用于提取获胜队列中的数据的队列提取块492。由获胜队列中的对应读指针412标识的行头项可出队并被转发到共享资源406进行处理。在一个实施例中,可基于由共享资源406对数据进行服务的预测时间量来更新与获胜比特426相关联的流量类别的使用数据/统计423。
图5是根据一个实施例的可由二级仲裁系统生成的示例性提示图的概念布局图。提示图可包括第一级提示图500和第二级提示图502。第一级提示图500可包括多个比特,其中,每个比特对应于二维参数的组合。例如,二维参数可标识目的地(例如,与图3的目的地304中的一个目的地对应的目的地0-15)以及源(例如,与图3的源302中的一个源对应的源0-255)。第一级提示图500的每个比特可对应于被配置为将来自源302的数据入队的队列312中的一个队列。如果在队列312中的针对由第一级提示图500的比特表示的源和目的地的一个队列中存在数据,则第一级提示图500的所述比特可被设置为具有值“1”。否则,所述比特可具有值“0”。
第二级提示图502可包括多个比特,其中,每个比特对应于一维参数。例如,一维参数可标识目的地(例如,目的地0-15)。如果源(例如,源0-255)中的任意一个源提供寻址到由第二级提示图中的比特表示的目的地的数据,则第二级提示图502的该比特可被设置为具有值“1”。在一个实施例中,通过对第一级提示图中的比特执行逻辑OR运算来设置第二级提示图502的比特的值。第一级提示图500中的可被用于执行逻辑OR运算的比特可由第二级提示图502中的将被设置的比特所表示的目的地来标识。例如,可对第一级提示图中的与目的地“0”相关联的比特504执行逻辑OR运算,以设置第二级提示图中的与目的地“0”相关联的比特506。
图6是根据一个实施例的可由三级仲裁系统(例如,图4的仲裁系统400)生成的示例性提示图的概念布局图。提示图可包括第一级提示图600、第二级提示图602和第三级提示图604。第一级提示图600可包括多个比特,其中,每个比特对应于三维参数的组合。例如,三维参数可标识目的地(例如,与图4的目的地404中的一个目的地对应的目的地0-15)、流量类别(例如,流量类别(TC)0-3)和源(例如,与图4的源402中的一个源对应的源0-255)。第一级提示图600的每个比特可对应于图4的队列410中的一个队列,使来自源402的数据入队。如果在针对由第一级提示图的比特表示的源、流量类别和目的地的特定组合的对应队列410中存在数据,则第一级提示图的所述比特可被设置为具有值“1”。否则,所述比特可具有值“0”。
第二级提示图602可包括多个比特,其中,每个比特对应于二维参数的组合。例如,二维参数可标识目的地(例如,目的地0-16)和流量类别(例如,TC 0-3)。如果源(例如,源0-255)中的任意一个源提供与由第二级提示图中的比特表示的目的地和流量类别的特定组合相关联的数据,则第二级提示图602的比特可被设置为具有值“1”。在一个实施例中,通过对第一级提示图600中的比特执行逻辑OR运算来设置第二级提示图602的比特的值。第一级提示图600中的可被用于执行逻辑OR运算的比特可由第二级提示图602中的将被设置的比特所表示的目的地和流量类别来标识。例如,可对第一级提示图中的与目的地“0”和TC“0”相关联的比特606执行逻辑OR运算,以设置第二级提示图中的与目的地“0”相关联的比特608a。
第三级提示图604可包括多个比特,其中,每个比特对应于一维参数。例如,一维参数可标识目的地(例如,目的地0-16)。如果源(例如,源0-255)中的任意一个源提供寻址到由第三级提示图中的比特表示的目的地的数据,则第三级提示图604的比特可被设置为具有值“1”。在一个实施例中,通过对第二级提示图中的比特执行逻辑OR运算来设置第三级提示图604的比特的值。第二级提示图602中的可被用于执行逻辑OR运算的比特可由第三级提示图604中的将被设置的比特中所表示的目的地来标识。例如,可对第二级提示图中的与目的地“0”相关联的比特608a-608d执行逻辑OR运算,以设置第三级提示图中的与目的地“0”相关联的比特610。
图7是根据一个实施例的用于在二级仲裁系统中仲裁对共享资源的访问的处理的流程图。该处理开始,并且在框700,分发器308(图3)从一个或更多个源302接收数据。
在框702,分发器308将数据存储在队列312中的对应一个队列中。队列312可与特定源和目的地相关联,并且可基于接收到的数据的源和目的地将该数据存储在队列中的一个队列中。
在框704,提示图生成器314基于接收到的数据生成第一级提示图和第二级提示图,并将提示图中的提示从第一仲裁级传播到第二仲裁级。就此而言,第一级提示图可以是与标识由系统所支持的源和目的地的二维参数相关联的第一数据结构。在一个实施例中,第一数据结构包括多个比特。所述多个比特中的每个比特与队列相关联,并且还与和该队列相关联的源和目的地相关联。可基于存储有数据的对应队列来设置第一数据结构中的比特。在一个实施例中,第一级提示图经由与针对图5描述的运算相似的第一级提示图的逻辑OR运算被传播到第二仲裁级。
第二级提示图可以是包括多个比特的第二数据结构。第二数据结构的比特中的每个比特可与系统所支持的目的地相关联。在一个实施例中,可通过对第一数据结构中的比特子集执行逻辑OR运算来生成第二级提示图。如果第一数据结构中的比特子集中的任意一个比特被设置,则逻辑OR运算使得第二级提示图中的对应比特被设置。
在框706,反向仲裁引擎316可基于第二级提示图来执行级二仲裁。就此而言,反向仲裁引擎316可选择在第二级提示图中设置的各种目的地中的目的地作为获胜目的地。仲裁可基于调度算法,诸如例如轮询、加权轮询、固定优先级等。
在框708,反向仲裁引擎316可基于第一级提示图来执行级一仲裁。就此而言,反向仲裁引擎可动态地分配用于执行级一仲裁的逻辑(仲裁器)。所述仲裁器可以是基于来自级二仲裁的获胜目的地而分配的源仲裁器。就此而言,源仲裁器可执行与获胜目的地相关联的源的仲裁,以选择获胜源。仲裁可基于调度算法,诸如例如轮询、加权轮询、固定优先级等。
在框710,反向仲裁引擎316使与获胜源和目的地相关联的队列中的数据出队。
在框712,通过数据通信链路320将出队的数据发送到共享资源306。然后,共享资源306可将数据发送到目的地。
图8是根据一个实施例的用于在三级仲裁系统中仲裁对共享资源的访问的处理的流程图。该处理开始,并且在框800,分发器308(图3)从一个或更多个源302接收数据。
在框802,分发器308将数据存储在队列312中的对应一个队列中。队列312可与特定源、目的地和流量类别(优先级)相关联,并且可基于接收到的数据的源、目的地和流量类别将该数据存储在队列中的一个队列中。
在框804,提示图生成器314基于接收到的数据生成第一级提示图、第二级提示图和第三级提示图,并且将提示图中的提示从第一仲裁级传播到第二仲裁级,并从第二仲裁级传播到第三仲裁级。就此而言,第一级提示图可以是与标识由系统所支持的源、目的地和流量类别的三维参数相关联的第一数据结构。在一个实施例中,第一数据结构包括多个比特。所述多个比特中的每个比特可与队列相关联,并且还与和该队列相关联的源、目的地和流量类别相关联。可基于存储有数据的对应队列来设置第一数据结构中的比特。在一个实施例中,第一级提示图经由与针对图6描述的运算相似的第一级提示图的逻辑OR运算被传播到第二仲裁级。
第二级提示图可以是包括多个比特的第二数据结构。第二数据结构的比特中的每个比特可与系统所支持的目的地和流量类别相关联。在一个实施例中,可通过对第一数据结构中的比特子集执行逻辑OR运算来生成第二级提示图。如果第一数据结构中的比特子集中的任意一个比特被设置,则逻辑OR运算使得第二级提示图中的对应比特被设置。在一个实施例中,第二级提示图经由与针对图5描述的运算相似的第二级提示图的逻辑OR运算被传播到第三仲裁级。
第三级提示图可以是包括多个比特的第三数据结构。第三数据结构的比特中的每个比特可与系统所支持的目的地相关联。在一个实施例中,可通过对第二数据结构中的比特子集执行逻辑OR运算来生成第三级提示图。如果第二数据结构中的比特子集中的任意一个比特被设置,则逻辑OR运算使得第三级提示图中的对应比特被设置。
在框806,反向仲裁引擎316可基于第三级提示图来执行级三仲裁。就此而言,反向仲裁引擎316可选择在第三级提示图中设置的各种目的地中的目的地作为获胜目的地。仲裁可基于调度算法,诸如例如轮询、加权轮询、固定优先级等。
在框808,反向仲裁引擎316可基于第二级提示图来执行级二仲裁。就此而言,反向仲裁引擎可动态地分配用于执行级二仲裁的逻辑(仲裁器)。仲裁器可以是基于来自级三仲裁的获胜目的地而分配的流量类别仲裁器。就此而言,流量类别仲裁器可执行与获胜目的地相关联的流量类别的仲裁,以选择获胜流量类别。仲裁可基于可考虑例如各种流量类别对共享资源306的使用数据/统计的调度算法。
在框810,反向仲裁引擎316可基于第一级提示图执行级一仲裁。就此而言,反向仲裁引擎可动态地分配用于执行级一仲裁的逻辑(例如,仲裁器)。仲裁器可以是基于来自级二仲裁的获胜流量类别而分配的源仲裁器。就此而言,源仲裁器可执行与获胜流量类别和获胜目的地相关联的源的仲裁,以选择获胜源。仲裁可基于调度算法,诸如例如轮询、加权轮询、固定优先级等。
在框812,反向仲裁引擎316使与获胜源、目的地和流量类别相关联的队列中的数据出队。
在框814,反向仲裁引擎可基于将数据发送到目的地可能花费的时间量的估计来更新针对获胜流量类别的使用统计。
在框816,通过数据通信链路320将出队的数据发送到共享资源306。然后,共享资源306可将数据发送到目的地。
在一些实施例中,在一个或更多个处理电路中实现以上讨论的仲裁系统300、400的组件。术语“处理电路”在这里被用于表示用于对数据或数字信号进行处理的硬件、固件和软件的任意组合。处理电路硬件可包括例如专用集成电路(ASIC)、通用或专用中央处理器(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、诸如现场可编程门阵列(FPGA)的可编程逻辑器件。在处理电路中,如这里所使用的,每个功能由被配置为执行该功能的(即,硬连线的)硬件来执行,或者由被配置为执行存储在非暂时性存储介质中的指令的更通用的硬件(诸如CPU)来执行。处理电路可被构造在单个印刷电路板(PCB)上或者分布在若干互连的PCB上。处理电路可包含其他处理电路;例如,处理电路可包括PCB上互连的两个处理电路,FPGA和CPU。
应理解,虽然这里可使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应被这些术语限制。这些术语仅被用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离本发明构思的精神和范围的情况下,这里讨论的第一元件、组件、区域、层或部分可被称为第二元件、组件、区域、层或部分。
这里使用的术语仅被用于描述特定实施例的目的,并不旨在限制本发明构思。如这里所使用的,术语“基本上”、“大约”和类似术语被用作近似的术语而不是程度的术语,并且旨在考虑本领域普通技术人员将认识到的测量值或计算值的固有偏差。
如这里所使用的,单数形式“一”和“一个”也旨在包括复数形式,除非上下文另有明确指示。将进一步理解,术语“包括”和/或“包含”,当在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或更多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。如这里所使用的,术语“和/或”包括相关联的所列项中的一个或更多个的任意组合和全部组合。诸如“……中的至少一个”的表述,在一列元素之后时,修饰整列元素,而不修饰该列元素中的单个元素。此外,在描述本发明构思的实施例时使用的“可”是指“本公开的一个或更多个实施例”。此外,术语“示例性”旨在指代示例或说明。如这里所使用的,术语“使用”、“使用……的”和“使用的”可被认为分别与术语“利用”、“利用……的”和“利用的”同义。
应理解,当元件或层被称为“在另一元件或层上”、“连接到”、“耦接到”或“相邻于”另一元件或层时,它可直接在另一元件或层上、连接到、耦接到或相邻于另一元件或层,或者可存在一个或更多个中间元件或层。相反,当元件或层被称为“直接在另一元件或层上”、“直接连接到”、“直接耦接到”或“紧邻于”另一元件或层时,不存在中间元件或层。
这里所叙述的任意数值范围旨在包括包含在所叙述的范围内的相同数值精度的全部子范围。例如,范围“1.0至10.0”旨在包括所叙述的最小值1.0与所叙述的最大值10.0之间(且包括所叙述的最小值1.0和所叙述的最大值10.0)(即,具有等于或大于1.0的最小值以及等于或小于10.0的最大值)的全部子范围,诸如例如,2.4至7.6。这里所叙述的任意最大数值限度旨在包括其中所包含的全部更低数值限度,并且本说明书中所叙述的任意最小数值限度旨在包括其中所包含的全部更高数值限度。
虽然这里已经具体描述和说明了仲裁系统和方法的示例性实施例,但是许多修改和变化对于本领域技术人员将是显而易见的。因此,应理解,根据本公开的原理构建的仲裁系统和方法可以以不同于这里具体描述的方式来实施。本公开还在所附权利要求及其等同物中被限定。
Claims (17)
1.一种用于仲裁对共享资源的访问的方法,所述方法包括:
从多个源接收数据;
将所述数据存储在多个队列中,其中,所述多个队列的第一队列专用于第一源和第一目的地,并且所述多个队列的第二队列专用于第二源和第二目的地;
基于存储在所述多个队列中的数据生成第一数据结构,第一数据结构与至少两个维度相关联,其中,所述至少两个维度包括与所述多个源相关联的第一维度和与多个目的地相关联的第二维度;
基于第一数据结构生成第二数据结构,第二数据结构与至少一个维度相关联,其中,所述至少一个维度包括第二维度;
基于第二数据结构执行第一仲裁,第一仲裁用于从所述多个目的地选择第一目的地;
响应于基于第一仲裁的第一目的地的选择,基于第一数据结构并且进一步基于第一目的地的选择来执行第二仲裁,第二仲裁用于从所述多个源选择第一源;
响应于基于第一仲裁的第一目的地的选择和基于第二仲裁的第一源的选择来识别第一队列;
响应于第一队列的识别,检索存储在第一队列中的数据;以及
将检索到的数据提供给所述共享资源。
2.如权利要求1所述的方法,其中,第一数据结构包括多个第一比特,其中,所述多个第一比特中的第一比特与第一源和第一目的地相关联,其中,所述第一比特是基于所述数据被存储在第一队列中而被设置的。
3.如权利要求2所述的方法,其中,第二数据结构包括多个第二比特,其中,所述多个第二比特中的第二比特与第一目的地相关联,并且其中,生成第二数据结构的步骤包括:基于第一数据结构的具有第一目的地作为第二维度的比特子集来执行逻辑OR运算。
4.如权利要求1所述的方法,还包括:
基于第一目的地的选择,动态地分配用于执行第二仲裁的逻辑。
5.如权利要求1所述的方法,其中,所述共享资源是数据传输链路。
6.一种用于仲裁对共享资源的访问的方法,所述方法包括:
从多个源接收数据;
将所述数据存储在多个队列中,其中,所述多个队列的第一队列专用于第一源、第一属性和第一目的地,并且所述多个队列的第二队列专用于第二源、第二属性和第二目的地;
基于存储在所述多个队列中的数据生成第一数据结构,第一数据结构与至少三个维度相关联,其中,所述至少三个维度包括与所述多个源相关联的第一维度、与多个属性相关联的第二维度以及与多个目的地相关联的第三维度;
基于第一数据结构生成第二数据结构,第二数据结构与至少两个维度相关联,其中,所述至少两个维度包括与所述多个属性相关联的第二维度以及与所述多个目的地相关联的第三维度;
基于第二数据结构生成第三数据结构,第三数据结构与至少一个维度相关联,其中,所述至少一个维度包括第三维度;
基于第三数据结构执行第一仲裁,第一仲裁用于从所述多个目的地选择第一目的地;
响应于基于第一仲裁的第一目的地的选择,基于第二数据结构并且进一步基于第一目的地的选择来执行第二仲裁,第二仲裁用于从所述多个属性选择第一属性;
响应于第一属性的选择,基于第一数据结构、第一属性的选择和第一目的地的选择来执行第三仲裁,第三仲裁用于从所述多个源选择第一源;
响应于基于第一仲裁的第一目的地的选择、基于第二仲裁的第一属性的选择和基于第三仲裁的第一源的选择来识别第一队列;
响应于第一队列的识别,检索存储在第一队列中的数据;以及
将检索到的数据提供给所述共享资源。
7.如权利要求6所述的方法,其中,第一属性是多个优先级中的优先级。
8.如权利要求6所述的方法,其中,第一数据结构包括多个第一比特,其中,所述多个第一比特中的第一比特与第一源、第一属性和第一目的地相关联,其中,所述第一比特是基于所述数据被存储在第一队列中而被设置的。
9.如权利要求8所述的方法,其中,第二数据结构包括多个第二比特,其中,所述多个第二比特中的第二比特与第一属性和第一目的地相关联,其中,生成第二数据结构的步骤包括:基于第一数据结构的具有第一属性和第一目的地分别作为第二维度和第三维度的比特子集来执行逻辑OR运算。
10.如权利要求9所述的方法,其中,第三数据结构包括多个第三比特,其中,所述多个第三比特中的第三比特与第一目的地相关联,其中,生成第三数据结构的步骤包括:基于第二数据结构的具有第一目的地作为第三维度的比特子集来执行逻辑OR运算。
11.如权利要求6所述的方法,还包括:
基于第一目的地,动态地分配用于执行第二仲裁的逻辑;以及
基于第一属性和第一目的地,动态地分配用于执行第三仲裁的逻辑。
12.如权利要求6所述的方法,其中,所述共享资源是数据传输链路。
13.一种用于仲裁对共享资源的访问的系统,所述系统包括:
存储器,用于存储多个队列,所述多个队列存储来自多个源的数据,其中,所述多个队列的第一队列专用于第一源和第一目的地,并且所述多个队列的第二队列专用于第二源和第二目的地;以及
处理电路,耦接到存储器,处理电路具有进行以下操作的逻辑:
基于存储在所述多个队列中的数据来生成第一数据结构,第一数据结构与至少两个维度相关联,其中,所述至少两个维度包括与所述多个源相关联的第一维度和与多个目的地相关联的第二维度;
基于第一数据结构生成第二数据结构,第二数据结构与至少一个维度相关联,其中,所述至少一个维度包括第二维度;
基于第二数据结构执行第一仲裁,第一仲裁用于从所述多个目的地选择第一目的地;
响应于基于第一仲裁的第一目的地的选择,基于第一数据结构并且进一步基于第一目的地的选择来执行第二仲裁,第二仲裁用于从所述多个源选择第一源;
响应于基于第一仲裁的第一目的地的选择和基于第二仲裁的第一源的选择来识别第一队列;
响应于第一队列的识别,检索存储在第一队列中的数据;以及
将检索到的数据提供给所述共享资源。
14.如权利要求13所述的系统,其中,第一数据结构包括多个第一比特,其中,所述多个第一比特中的第一比特与第一源和第一目的地相关联,其中,所述第一比特是基于所述数据被存储在第一队列中而被设置的。
15.如权利要求14所述的系统,其中,第二数据结构包括多个第二比特,其中,所述多个第二比特中的第二比特与第一目的地相关联,并且其中,生成第二数据结构的操作包括:基于第一数据结构的具有第一目的地作为第二维度的比特子集来执行逻辑OR运算。
16.如权利要求13所述的系统,其中,处理电路还包括进行以下操作的逻辑:
基于第一目的地的选择,动态地分配用于执行第二仲裁的逻辑。
17.如权利要求13所述的系统,其中,所述共享资源是数据传输链路。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063052899P | 2020-07-16 | 2020-07-16 | |
US63/052,899 | 2020-07-16 | ||
US17/076,681 | 2020-10-21 | ||
US17/076,681 US11720404B2 (en) | 2020-07-16 | 2020-10-21 | Systems and methods for arbitrating access to a shared resource |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113946525A CN113946525A (zh) | 2022-01-18 |
CN113946525B true CN113946525B (zh) | 2023-12-29 |
Family
ID=79292417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110366615.6A Active CN113946525B (zh) | 2020-07-16 | 2021-04-06 | 用于仲裁对共享资源的访问的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11720404B2 (zh) |
JP (1) | JP2022019547A (zh) |
KR (1) | KR20220009848A (zh) |
CN (1) | CN113946525B (zh) |
TW (1) | TW202219762A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265257A (en) * | 1990-06-22 | 1993-11-23 | Digital Equipment Corporation | Fast arbiter having easy scaling for large numbers of requesters, large numbers of resource types with multiple instances of each type, and selectable queuing disciplines |
CN1913477A (zh) * | 2005-08-10 | 2007-02-14 | 三星电子株式会社 | 仲裁对共享资源的访问的系统、方法和计算机程序产品 |
US7899927B1 (en) * | 2002-01-17 | 2011-03-01 | Juniper Networks, Inc. | Multiple concurrent arbiters |
CN102298539A (zh) * | 2011-06-07 | 2011-12-28 | 华东师范大学 | 一种用于分布式并行处理的共享资源调度方法及系统 |
CN105468459A (zh) * | 2015-12-02 | 2016-04-06 | 上海兆芯集成电路有限公司 | 计算机资源控制器以及控制方法 |
CN106294227A (zh) * | 2016-08-02 | 2017-01-04 | 芯启源(上海)半导体科技有限公司 | 仲裁设备、动态自适应仲裁方法及系统 |
CN107193761A (zh) * | 2016-03-15 | 2017-09-22 | 北京忆芯科技有限公司 | 队列优先级仲裁的方法与装置 |
CN107835989A (zh) * | 2015-07-13 | 2018-03-23 | 华为技术有限公司 | 共享存储控制器及使用共享存储控制器的方法 |
CN110297710A (zh) * | 2018-03-23 | 2019-10-01 | 畅想科技有限公司 | 用于多资源仲裁的公共优先级信息 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001256176A (ja) * | 2000-03-13 | 2001-09-21 | Mitsubishi Electric Corp | ブリッジ装置 |
US7596139B2 (en) * | 2000-11-17 | 2009-09-29 | Foundry Networks, Inc. | Backplane interface adapter with error control and redundant fabric |
US7236490B2 (en) * | 2000-11-17 | 2007-06-26 | Foundry Networks, Inc. | Backplane interface adapter |
US20020091884A1 (en) * | 2000-11-17 | 2002-07-11 | Andrew Chang | Method and system for translating data formats |
US20020141427A1 (en) * | 2001-03-29 | 2002-10-03 | Mcalpine Gary L. | Method and apparatus for a traffic optimizing multi-stage switch fabric network |
US7747086B1 (en) | 2005-07-28 | 2010-06-29 | Teradici Corporation | Methods and apparatus for encoding a shared drawing memory |
US7457245B2 (en) * | 2004-09-07 | 2008-11-25 | Intel Corporation | Directional and priority based flow control mechanism between nodes |
US20060179197A1 (en) * | 2005-02-10 | 2006-08-10 | International Business Machines Corporation | Data processing system, method and interconnect fabric having a partial response rebroadcast |
US8254411B2 (en) * | 2005-02-10 | 2012-08-28 | International Business Machines Corporation | Data processing system, method and interconnect fabric having a flow governor |
US7664901B2 (en) * | 2007-03-27 | 2010-02-16 | Arm Limited | Data processing apparatus and method for arbitrating access to a shared resource |
US7975107B2 (en) | 2007-06-22 | 2011-07-05 | Microsoft Corporation | Processor cache management with software input via an intermediary |
US20150019731A1 (en) * | 2012-04-23 | 2015-01-15 | Google Inc. | Fair Hierarchical Arbitration Of a Shared Resource With Varying Traffic Intensity |
US9158685B2 (en) | 2012-09-11 | 2015-10-13 | Apple Inc. | System cache with cache hint control |
US9652233B2 (en) | 2013-08-20 | 2017-05-16 | Apple Inc. | Hint values for use with an operand cache |
US9378152B2 (en) | 2014-05-09 | 2016-06-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for I/O processing using out-of-band hinting to block driver or storage controller |
US20170075838A1 (en) * | 2015-09-14 | 2017-03-16 | Qualcomm Incorporated | Quality of service in interconnects with multi-stage arbitration |
US10944694B2 (en) * | 2016-12-06 | 2021-03-09 | Hewlett Packard Enterprise Development Lp | Predictive arbitration circuit |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US10503670B2 (en) * | 2017-12-21 | 2019-12-10 | Advanced Micro Devices, Inc. | Dynamic per-bank and all-bank refresh |
US10884920B2 (en) | 2018-08-14 | 2021-01-05 | Western Digital Technologies, Inc. | Metadata-based operations for use with solid state devices |
US20190114281A1 (en) | 2018-12-13 | 2019-04-18 | Intel Corporation | Conveying early hint information for physical link state changes |
US11520626B2 (en) * | 2020-09-22 | 2022-12-06 | Arm Limited | Queueing techniques for a shared computer resource |
-
2020
- 2020-10-21 US US17/076,681 patent/US11720404B2/en active Active
-
2021
- 2021-01-21 KR KR1020210008436A patent/KR20220009848A/ko active Search and Examination
- 2021-04-01 TW TW110112164A patent/TW202219762A/zh unknown
- 2021-04-06 CN CN202110366615.6A patent/CN113946525B/zh active Active
- 2021-05-06 JP JP2021078586A patent/JP2022019547A/ja active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265257A (en) * | 1990-06-22 | 1993-11-23 | Digital Equipment Corporation | Fast arbiter having easy scaling for large numbers of requesters, large numbers of resource types with multiple instances of each type, and selectable queuing disciplines |
US7899927B1 (en) * | 2002-01-17 | 2011-03-01 | Juniper Networks, Inc. | Multiple concurrent arbiters |
CN1913477A (zh) * | 2005-08-10 | 2007-02-14 | 三星电子株式会社 | 仲裁对共享资源的访问的系统、方法和计算机程序产品 |
CN102298539A (zh) * | 2011-06-07 | 2011-12-28 | 华东师范大学 | 一种用于分布式并行处理的共享资源调度方法及系统 |
CN107835989A (zh) * | 2015-07-13 | 2018-03-23 | 华为技术有限公司 | 共享存储控制器及使用共享存储控制器的方法 |
CN105468459A (zh) * | 2015-12-02 | 2016-04-06 | 上海兆芯集成电路有限公司 | 计算机资源控制器以及控制方法 |
CN107193761A (zh) * | 2016-03-15 | 2017-09-22 | 北京忆芯科技有限公司 | 队列优先级仲裁的方法与装置 |
CN106294227A (zh) * | 2016-08-02 | 2017-01-04 | 芯启源(上海)半导体科技有限公司 | 仲裁设备、动态自适应仲裁方法及系统 |
CN110297710A (zh) * | 2018-03-23 | 2019-10-01 | 畅想科技有限公司 | 用于多资源仲裁的公共优先级信息 |
Also Published As
Publication number | Publication date |
---|---|
US20220019471A1 (en) | 2022-01-20 |
US11720404B2 (en) | 2023-08-08 |
TW202219762A (zh) | 2022-05-16 |
CN113946525A (zh) | 2022-01-18 |
KR20220009848A (ko) | 2022-01-25 |
JP2022019547A (ja) | 2022-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101883155B1 (ko) | 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법 | |
US8615629B2 (en) | Access scheduler | |
US5168570A (en) | Method and apparatus for a multiple request toggling priority system | |
US7865647B2 (en) | Efficient resource arbitration | |
US8490107B2 (en) | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels | |
US8190801B2 (en) | Interconnect logic for a data processing apparatus | |
EP0380857A2 (en) | Arbitrating communication requests in a multi-processor computer system | |
US6519666B1 (en) | Arbitration scheme for optimal performance | |
KR100590387B1 (ko) | 네트워크 프로세서에서 메모리 대역폭을 효율적으로공유하기 위한 장치 및 방법 | |
WO2000041076A2 (en) | Circuit arrangement and method with state-based transaction scheduling | |
JPH10228417A (ja) | データ処理システムにおけるメモリリクエスト再順序付け法 | |
JP2016195375A (ja) | 複数のリンクされるメモリリストを利用する方法および装置 | |
US10152434B2 (en) | Efficient arbitration for memory accesses | |
JP2004500667A (ja) | 改良されたメモリリクエスト調停機構を有するメモリコントローラを含むバスブリッジ | |
EP4276640A1 (en) | Storage device and method, electronic device, and storage medium | |
CN117716679A (zh) | 地址转换类型分组的传输 | |
CN113946525B (zh) | 用于仲裁对共享资源的访问的系统和方法 | |
EP3440547B1 (en) | Qos class based servicing of requests for a shared resource | |
CN117078495A (zh) | 图形处理器的内存分配方法、装置、设备及存储介质 | |
WO2001082528A2 (en) | Mechanism for efficient scheduling of communication flows | |
KR100973419B1 (ko) | 버스 중재 방법 및 장치 | |
CN117015767A (zh) | 存储器信道控制器的芯片上互连 | |
CN110543362B (zh) | 一种图形处理器管理方法、装置及服务器 | |
US11914899B2 (en) | System for managing access to a memory resource by multiple users | |
CN117891758B (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 |