CN113496283A - 基于优先级的仲裁 - Google Patents

基于优先级的仲裁 Download PDF

Info

Publication number
CN113496283A
CN113496283A CN202110294801.3A CN202110294801A CN113496283A CN 113496283 A CN113496283 A CN 113496283A CN 202110294801 A CN202110294801 A CN 202110294801A CN 113496283 A CN113496283 A CN 113496283A
Authority
CN
China
Prior art keywords
bits
vector
priority
node
bit
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.)
Withdrawn
Application number
CN202110294801.3A
Other languages
English (en)
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN113496283A publication Critical patent/CN113496283A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • 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/3625Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a time dependent access
    • 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/372Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a time-dependent priority, e.g. individually loaded time counters or time slot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

描述了在请求者与共享资源之间进行仲裁的方法。该方法包括生成每个请求者一位的向量,每个向量初始地被设置为一。基于多个选择信号(二元决策树的第一层中的每个决策节点一个,其中每个选择信号被配置为由对应的决策节点使用以选择两个子节点中的一个),向量中对应于未选择的请求者的位被设置为零。基于用于那些层中的决策节点的选择信号,对二元决策决策树中的每个后续层重复该方法。所得向量是独热向量(其中仅单个位具有值一)。对于当前处理周期,向对应于具有值一的位的请求者准予对共享资源的访问。

Description

基于优先级的仲裁
背景技术
仲裁器(和仲裁方案)用于这样的计算机系统中,其中资源在一个时间(例如,在一个周期中)接收比可同时(例如,在特定周期中)被准予(例如,处理)的请求更多的请求。这经常发生在多个请求实体(或请求者)共享相同资源的情况下,其中共享资源可以是例如计算机系统内的存储器或存储装置或计算资源。仲裁器使用预定义的规则集或其它标准(称为仲裁方案)来决定准予所接收的请求中的哪些请求以及不准予(例如,延迟或拒绝)所接收的请求中的哪些请求。
循环仲裁器可使用旋转优先级方案来确保在一段时间内所有请求者都有一些请求被准予,即,它们被准予对共享资源的一些访问。然而,这由于不是所有请求者都可以在任一周期(例如时钟周期)中提交请求的事实而变得复杂,并且因此不可能在不影响利用和效率的情况下依次严格地准予针对每个请求者的请求。此外,随着请求者的数量增加,仲裁方案导致的延迟和确定在任何时钟周期中准予哪些请求所花费的时间也可能增加,并且这可能降低仲裁方案的吞吐量和效率。或者,为了减轻这些影响,可以要增加硬件的整体尺寸。
下面描述的实施方案仅以举例的方式提供,而不是限制解决已知仲裁器和仲裁方案的任何或所有缺点的实现方式。
发明内容
提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
描述了在请求者与共享资源之间进行仲裁的方法。该方法包括生成每个请求者一位的向量,每个向量初始地被设置为一。基于多个选择信号(二元决策树的第一层中的每个决策节点一个,其中每个选择信号被配置为由对应的决策节点使用以选择两个子节点中的一个),向量中对应于未选择的请求者的位被设置为零。基于用于那些层中的决策节点的选择信号,对二元决策决策树中的每个后续层重复该方法。所得向量是独热向量(其中仅单个位具有值一)。对于当前处理周期,向对应于具有值一的位的请求者准予对共享资源的访问。
第一方面提供了一种在计算系统中的多个有序请求者和共享资源之间进行仲裁的方法,该方法包括:生成包括与每个请求者相对应的一个位的向量,并且将所述向量中的每个位设置为一;基于多个选择信号,每个选择信号对应于在硬件逻辑中实现的二元决策树的第一层中的不同决策节点,将所述向量中对应于未选择的请求者的位设置为零,其中每个选择信号被配置为由所述二元决策树中的对应决策节点使用以选择两个子节点中的一个;以及对于二元决策树中的每个后续层并且基于与二元决策树的后续层中的不同决策节点相对应的一个或多个选择信号,将向量中的与未选择的请求者相对应的位设置为零,其中所得向量是包括具有值零的多个位和具有值一的单个位的独热向量,并且其中该方法还包括:向对应于具有值一的位的请求者准予对共享资源的访问,其中在当前处理周期内准予访问。
第二方面提供了一种仲裁器,其被配置为在计算系统中的多个有序请求者和共享资源之间进行仲裁,所述仲裁器包括请求者选择逻辑,并且所述请求者选择逻辑包括:二元决策树,其以硬件逻辑实现并且包括多个输入节点和多个决策节点,每个输入节点对应于所述请求者之一;以及硬件逻辑,其被布置成生成包括对应于每个请求者的一个位的向量,并且将向量中的每个位设置为一;其中二元决策树中的每个决策节点被布置成基于选择信号来选择两个子节点之一,并且基于选择更新向量中的一个或多个位,使得向量中对应于未选择的请求者的位为零,在由二元决策树中的所有决策节点更新之后,所得向量是包括具有值零的多个位和具有值一的单个位的独热向量,并且仲裁器还被布置成向对应于具有值一的位的请求者准予对共享资源的访问,其中在当前处理周期内准予访问。
仲裁器还可以包括被布置成生成选择信号的选择信号生成逻辑。
仲裁器还可包括输入端,其被布置成接收用于每个处理周期的多个有效位,每个有效位对应于多个请求者之一并且指示在处理周期中请求者是否请求访问共享资源;并且其中所述选择信号生成逻辑包括:输入端,其被布置成接收用于每个处理周期的多个优先级位,每个优先级位对应于多个请求者之一并且指示在处理周期中请求者是否具有优先级;硬件逻辑,其包括多个AND逻辑元件,并且被布置成通过针对每个请求者将对应的有效位和优先级位组合在AND逻辑元件之一中,来生成用于每个处理周期的多个有效_与_优先级位,每个有效_与_优先级位对应于多个请求者之一;第一OR约简树,其被布置成在每个处理周期中对有效位执行成对OR约简,并且在OR约简树的每个级别处生成一个或多个附加有效位,每个附加有效位对应于不同的非重叠请求者集合;第二OR约减树,其被布置成在每个处理周期中对有效_与_优先级位执行成对OR约减,并且在OR约减树的每个级别处生成一个或多个附加有效_与_优先级位,每个附加有效_与_优先级位对应于不同的非重叠请求者集合;以及硬件逻辑,其被布置成针对每个处理周期和每个决策节点:确定包括连接到所述决策节点的左子节点的所有请求者的请求者集合的有效_与_优先级位的值;确定包括连接到所述决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值;响应于确定包括连接到所述决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值等于一,将所述节点的选择信号设置为等于零;响应于确定包括连接到决策节点的左子节点的所有请求者的请求者集合的有效_与_优先级位的值等于一,并且包括连接到决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值等于零,将用于所述节点的选择信号设置为等于一;以及响应于确定包括连接到决策节点的左子节点的所有请求者的请求者集合的有效_与_优先级位的值和包括连接到决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值都等于零,确定包括连接到决策节点的右子节点的所有请求者的请求者集合的有效位的值,并且将所述节点的选择信号设置为等于有效位的倒数。
第三方面提供了一种被配置为执行如本文所述的方法的仲裁器。
仲裁器可以以集成电路上的硬件来实现。提供一种在集成电路制造系统处制造仲裁器的方法。可提供一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中被处理时配置该系统以制造仲裁器。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当被处理时,该计算机可读描述使布局处理系统生成在集成电路制造系统中使用的电路布局描述以制造仲裁器的电路布局描述。
可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有描述仲裁器的计算机可读集成电路描述;布局处理系统,该布局处理系统被配置为处理集成电路描述,以便生成体现仲裁器的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置为根据电路布局描述来制造仲裁器。
可提供用于执行本文中描述的任一方法的计算机程序代码。可提供非暂时性计算机可读存储介质,在其上存储有计算机可读指令,所述计算机可读指令在计算机系统处执行时使所述计算机系统执行本文中描述的任何方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是包括在多个请求者之间共享的资源的计算机系统的示意图;
图2是示出二元决策树的示例的示意图;
图3是示出示例决策节点的示意图;
图4示出示例有效载荷选择逻辑的示意图;
图5A是示出生成独热信号的示例方法的示意图;
图5B是可用于基于选择信号更新公共向量的示例硬件实现的示意图;
图6示出在仲裁器中生成独热信号的示例方法的流程图;
图7是示出使用选择信号选择有效载荷数据的示例方法的示意图;
图8示出在仲裁器中选择有效载荷以转发到共享资源的示例方法的流程图;
图9是可用于基于选择信号更新公共优先级向量的示例硬件实现的示意图;
图10A和10B示出基于当前周期中的选择信号在仲裁器中生成下一个周期的优先级数据的两个示例方法的流程图;
图11A和11B是可用于为二元决策决策树中的决策节点生成选择信号的两个OR约简树的示意图;
图11C是用于为请求者生成有效_与_优先级位的硬件的示意图;
图11D是选择信号生成元件的示意图;
图11E是可用于生成用于二元决策树中的决策节点的选择信号的另一示例OR约简树的示意图;
图12示出其中实现仲裁器的计算机系统;
图13示出用于生成体现仲裁器的集成电路制造系统;并且
图14示出为二元决策树中的决策节点生成选择信号的示例方法的流程图。
附图示出各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其它形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。
现在仅通过示例的方式来描述实施方案。
本文描述了用于改进仲裁器的性能的多种不同技术,所述仲裁器实现基于优先级的仲裁方案,例如循环仲裁器。性能的改进可以是在仲裁器的编译和/或合成时间的减少和/或选择特定请求(即,在仲裁器内执行仲裁)所花费的时间的减少方面。另外,与替代方法相比,仲裁器的物理大小(例如,在硬件面积方面)可减小。本文描述的技术可用于任何数目的请求者,包括在具有大量请求者(例如,数百个请求者或1000个以上的请求者)的计算系统中。这些不同的技术可以彼此独立地使用或以任何组合使用,并且虽然下面参考特定的周期仲裁方案对它们进行了描述,但是它们可以与其它基于优先级的仲裁方案(例如,在使用另一种优先级排序方案的情况下,例如当某些请求者处于活动状态时,在所有时间都给予它们比其它请求者更高的优先级,或者在使用在某些情况下提高请求者的优先级和/或在其它情况下降低请求者的优先级的跟踪机制的情况下,例如当没有匆忙获取对资源的访问时,或者在优先级排序由计算机系统中的任何其它模块控制的情况下)组合使用。
在循环仲裁器中,根据一个或多个标准从最低到最高对请求者排序(例如从左到右、从右到左、从上到下等),并且在任一周期中,一些或所有请求者可以请求访问共享资源。在给定周期中请求访问的那些请求者可以被称为对于该周期是“活动的”。在任何给定的周期中,仲裁器可以选择具有优先级的最低顺序的活动请求者,或者如果没有具有优先级的活动请求者,则选择最低顺序的活动请求者。如上所述,循环仲裁器使用周期优先级方案,因此对于下一个周期(例如,对于周期T+1),比先前选择的请求者(即,在周期T中选择的请求者)更高顺序的请求者被给予优先级,而其余请求者(即,在周期T中选择的请求者和所有更低顺序的请求者)不被给予优先级。为了以下描述的目的,请求者被从右到左排序。
虽然在以上描述中请求者被标记为“优先级”或“无优先级”,但是将理解,在其它示例中,可以备选地使用术语“高优先级”和“低优先级”。此外,在其它示例中,仲裁方案可以实现与上述相反的方案,即,使得在任何给定周期(例如周期T)中,仲裁器选择具有优先级的最高顺序的活动请求者,或者没有活动请求者具有优先级的最高顺序的活动请求者,然后在下一个周期(例如周期T+1)中,比先前选择的请求者(即,来自周期T)的所有较低顺序的请求者被给予优先级,而其余请求者(即,在周期T中选择的请求者和所有较高顺序的请求者)不被给予优先级。还将理解,虽然下面描述的示例示出请求者的一个特定排序,但是在其它示例中,可以以任何方式对请求者重新排序(例如,同时保持特定的基于优先级的仲裁方案,诸如循环方案)。
术语“周期”在这里用来表示资源的处理周期。在各种示例中,资源的处理周期可以是时钟周期,但是在其它示例中,周期可以以其它方式定义。
图1是计算机系统100的示意图,包括在多个请求者104(标记为R0-RN,其中N是整数)之间共享的资源102。共享资源102可以是例如存储器或其它存储元件、网络交换结构、计算资源等。对共享资源的访问由仲裁器106控制,该仲裁器与共享资源102和每个请求者104都通信。虽然图1仅示出单个资源102,但可存在一个以上共享资源,且在此些实例中,可存在多个仲裁器(例如,每一共享资源一个仲裁器)或仲裁器可控制对一个以上资源的存取。
在任一周期中,请求者104中的一个或多个都可以请求对资源102的访问,并且可以以任何方式提交该请求(例如,通过将“有效”信号拉高)。可存在与每一请求相关联的有效载荷,其中此有效载荷可为(例如)数据(例如,待读取的存储器地址)、请求者的ID(例如,其中请求者正处理多个线程且因此其ID不必遵循其索引)或指令,且可由在特定周期中请求存取资源的那些请求者将有效载荷提供到仲裁器106。仲裁器106使用基于优先级的仲裁方案来确定(即选择)在特定周期中请求访问资源102的请求者104中的被准予在该周期中访问,然后将所选择的请求者的有效载荷传递给共享资源102。除了来自所选请求者的有效载荷之外,可以将所选请求者的标识符或标识所选请求者的任何形式的信息传递给资源102。
如图1所示,仲裁器106可以包括请求者选择逻辑108、有效载荷选择逻辑110和优先级控制逻辑112,以及用于从请求者104接收有效信号的输入端114、用于从请求者104接收有效载荷数据的输入端116,以及一个或多个输出端118、120。虽然请求者选择逻辑108和有效载荷选择逻辑110在图1中被示为分离的块,但是在各种示例中,这两个功能块可以部分地或完全地组合。
请求者选择逻辑108接收来自请求者104的有效信号(经由输入端114)和来自优先级控制逻辑112的优先级数据作为输入,并且输出标识所选请求者的数据。标识所选资源的数据可以被输出到有效载荷选择逻辑110和/或资源102(经由输出端118),并且在数据被输出到有效载荷选择逻辑110和资源102两者的情况下,被输出到每一者的数据可以是相同的或者可以是不同的形式。例如,输出到有效载荷选择逻辑110的数据可以是独热信号的形式,该独热信号包括对应于每个请求者的一个位(例如,图1的示例中的n+1位),并且其中对应于所选择的请求者的位被设置为一,而所有其它位被设置为零,并且输出到资源102的数据可以是所选择的资源的索引或独热标识符。除了向资源102发送标识所选请求者的数据之外,或者作为替代,还由仲裁器106(例如,由请求者选择逻辑108)例如以使能信号的形式通知所选请求者。如下所述,由仲裁器106生成的独热信号可以为请求者提供使能信号(例如,使得未选择的请求者接收为零的信号,并且只有被选择的请求者接收为一的信号)。请求者选择逻辑108可以包括如下面更详细描述的二元决策树。
有效载荷选择逻辑110接收来自请求者104的有效载荷数据作为输入(经由输入端116),并且还可以接收以下中的一个或多个:来自请求者的有效信号、来自优先级控制逻辑112的优先级数据和识别所选请求者的数据。有效载荷选择逻辑110可以包括二元决策树,或者可以包括其它硬件逻辑,如以下更详细描述的。
优先级控制逻辑112生成由请求者选择逻辑108以及可选地由有效载荷选择逻辑110使用的优先级数据,并且每个周期根据请求者选择逻辑108选择哪个请求者来更新该数据(例如,如上所述)。将理解,更新优先级数据的操作可能不一定导致每个周期中优先级数据的改变,并且这将取决于优先级控制逻辑112所使用的特定更新规则。这些更新规则形成仲裁器106所使用的仲裁方案的一部分,并且是预定义的。
图2是示出二元决策树200的示例的示意图,例如可以在请求者选择逻辑108和/或有效载荷选择逻辑110内的硬件逻辑中实现。二元决策树200是可以被配置为通过比较元素对从多个元素(例如,多个请求者R0-RN,其中在图2的示例中,N=7)中选择一个元素(例如,一个请求者)的结构。二元决策树200的输入节点202(其可以被称为叶节点)各自对应于多个元素(例如请求者)中的一个并且填充有与对应元素有关的数据(例如与对应请求者有关的数据)。每个叶节点202连接到第一层决策节点中的决策节点,其中第一层中的每个决策节点连接到两个叶节点。决策树包括一层或多层决策节点204,并且这取决于元素的数量,并因此取决于叶节点的数量。对于与N+1个元素相关的二元决策树,使得存在N+1个叶节点,例如可以存在
Figure BDA0002983920300000071
层决策节点。每个决策节点204连接到前一层中的两个节点,并且这些节点可以被称为该特定决策节点的“子节点”。
如上所述,在二元决策树200用于从多个请求者中选择请求者的情况下,每个叶节点被填充以与其对应的请求者相关的数据(其中如下所述,该数据可以包括或不包括有效载荷数据),并且每个决策节点根据预定标准选择其两个子节点之一,并且被填充以所选择的子节点的数据。这样,对应于每个节点处的所选请求者的数据通过决策树传播,直到图2的示例中的最后层-级别3,其中单个决策节点被填充有对应于多个请求者中的单个请求者的数据,并且这是被准予访问资源的请求者。
图3是示出示例决策节点204的示意图。决策节点204包括复用器302,其基于可在节点内(例如,在选择信号生成逻辑304中)生成或可提供到节点的选择信号而选择来自子节点(在图3中称为左节点和右节点)中的一者的数据。在选择信号为单个位的实例中,其可称为左选择信号,因为如果选择信号为一,那么左子节点数据由MUX302选择,且如果选择信号为零,那么右子节点数据由MUX302选择。应当理解,在其它实现方式中,选择信号可以替代地是右选择信号,或者可以包括多于一个位。此外,代替引用左节点和右节点,可以按照节点的排序中它们的相对位置来引用节点,例如,在左节点的排序较低的情况下,可以将其称为“低节点”,并且在右节点的排序较高的情况下,可以将其称为“高节点”。
在每个节点处保存(并且因此通过决策树传播)的信息可以例如包括请求者的标识符(例如,请求者ID)、指示请求者是否已经在当前周期中请求了对资源的访问的信息(例如,当前周期的请求者的有效信号,其可以是单个位)以及指示请求者是否在当前周期中具有优先级的信息(例如,当前周期的请求者的优先级位)。在其中组合有效载荷选择逻辑110和请求者选择逻辑108的各种示例中,该信息还可以包括用于请求者的有效载荷数据。
在一些仲裁器中,在每个节点处保存的信息可包括独热信号(或掩码),并且有效载荷选择逻辑110可包括根据从决策树200输出的独热信号选择有效载荷输入之一的硬件逻辑。独热信号是一串位(例如,向量),其中不多于一位是一(并且剩余的位都是零)。在独热信号被保持在每个节点处的情况下,信号包括N+1位并且根据信号中一位的位置来识别请求者,即,第i个请求者的独热信号包括第i个位位置中的一位(在本文描述的示例中,第1位,i=1,是最右位)。参考图2中的示例,对于请求者R0(第一个请求者),独热信号是00000001,对于请求者R3(第四个请求者),独热信号是00001000,对于请求者R7(最后一个请求者),独热信号是10000000。
图4示出使用从请求者选择逻辑108内的决策树200输出的独热信号的示例有效载荷选择逻辑110的示意图。如图4所示,有效载荷选择逻辑110接收来自每个活动请求者的有效载荷数据402(标记为P0-PN)以及从请求者选择逻辑108输出的独热信号的n+1位(标记为H0-HN)作为输入,并且包括一系列AND逻辑元件404(每个实现AND逻辑功能)和OR约简级406。AND逻辑元件404在独热信号位Hi(其中i=0,…,N)为一的情况下输出有效载荷数据,并在独热信号位Hi为零的情况下输出一系列零。或者,有效载荷选择逻辑110可以使用一个或多个复用器来实现,所述复用器根据来自请求者选择逻辑108输出的独热信号的位来选择有效载荷数据。
在这里描述的第一仲裁器优化技术中,代替在请求者选择逻辑108内的二元决策树200中的每个节点处存储独热信号(或掩码)(其中每个节点处的该独热信号可具有大的位宽)并通过决策树传播独热信号(例如,通过使用每个节点处的复用器选择与子节点相对应的独热信号之一),可为决策树中的每个层存储位的公共向量,并基于特定层中的决策节点中的选择信号更新公共向量。公共向量最初不是独热信号,而是包括全一,并且在决策树的每层,选择信号用于选择性地用零替换向量中剩余一的一半,其中向量在树的每一级保持相同的宽度(即,包括相同数量的位)。来自决策树中最后一层决策节点中的最后决策节点的选择信号将决策节点的数目从两个减少到一个,因此公共向量变为独热向量。这样,由请求者选择逻辑108输出并由有效载荷选择逻辑110使用的独热信号与决策树200分开地但并行地生成。这可显著减少仲裁器的编译和/或合成时间,尤其是在存在大量请求者(例如,1024个请求者或更多)的情况下。此外,所得到的硬件的尺寸(例如,面积)可以小于独热信号传播通过决策树的情况。由于在决策树中的每个级别从向量中移除了一,所以该技术可以被称为“基于消除的独热生成”。
独热信号的生成在图5A中以图形方式示出。图5A在左侧示出示例二元决策树500,其中每个决策节点用该节点所选择的请求者来标记,并且在右侧(如箭头502所示)逐渐地逐层形成独热信号。根据该第一优化技术,公共向量504最初包括n+1个位(其中如上所述,存在标识为R0-RN的n+1个请求者),并且所有位被设置为一。在第一层决策节点中,选择信号506用于选择请求者R0、R3、R4和R6,并且公共向量中的对应位保持不变(如图5A的右侧的向下箭头所示),而公共向量中的其它位被设置为零(如图5A的右侧的X所示),以生成包括(N+1)/2个零(例如4个零,其中N=7)的更新的向量508。在下一层决策节点中,选择信号510被用于选择请求者R0和R6,并且公共向量中的两个对应的位组(其中位组对应于决策树的所选分支,并且包括用于所选分支中的每个请求者的一位,即,用于第二层决策节点的两个位)保持不变(如图5A的右侧的向下箭头所示)。公共向量中的其它位(其中一些已经为零)对应于未选择的请求者,并且因此对应于决策树的未选择的分支,被设置为零(如图5A右侧的X所示),以生成包括(N+1)/4个零(例如2个零,其中N=7)的更新的向量512。在图5A的决策树中,仅有一个另外的决策节点层,并且在该最后层中,选择信号514用于选择请求者R6,并且公共向量中的对应的位组保持不变(如图5A的右侧的向下箭头所指示的),其中每个位组现在包括四个位(一个位用于所选择的分支中的每个请求者),而公共向量中的其它位(其中一些已经为零并且对应于决策树中的未选择的分支)被设置为零(如图5A的右侧的X所指示的),以生成包括(N+1)/8个零(例如单个零,其中N=7)的更新的向量516。由于在树中没有其它层的决策节点,因此更新的向量516被输出为独热信号。
图5B是可用于基于选择信号更新公共向量的示例硬件实现的示意图,在该示例中,选择信号是选择左信号。如图5B所示,硬件布置在每个级别包括每个请求者的一个AND逻辑元件520(即,每个级别n+1个AND逻辑元件)。决策树500中的第一级决策节点包括四个决策节点,因此存在四个选择信号506A-D(下面表示为选择(select),其中在所示的示例中,信号506A和506C是零,信号506B和506D是一),并且每个选择信号涉及对仅包括单个叶节点并因此仅包括单个请求者的分支的选择或未选择。因此,AND逻辑元件520在逻辑上被分组成对522,其中一对中的第一AND逻辑元件更新该位,H在对应于决策节点的左输入节点的公共向量中,每对节点执行以下逻辑(其中H′是公共向量中的更新的位):
H′=H∧选择
该对中的第二AND逻辑元件更新该位,H在对应于决策节点的右输入节点的公共向量中,每对节点执行以下逻辑(其中H′是公共向量中的更新的位):
Figure BDA0002983920300000091
决策树中的第二级决策节点包括两个决策节点,因此存在两个选择信号510A-B,并且每个选择信号涉及包括两个叶节点(因此两个请求者)的分支的选择或未选择。因此,AND逻辑元件520在逻辑上被分组为四个,并且在每组四个中,以相同的方式更新与输入到第二级中的决策节点的左分支相对应的公共向量中的两个位,即:
H′=H∧选择
类似地,以相同的方式更新与输入到该第二级中的决策节点的右分支相对应的公共向量中的两个位,即:
Figure BDA0002983920300000092
在所示的示例中,信号510A是零,信号510B是一。
在第三级决策节点中,其是图5A的示例中的最后级别,决策树包括单个节点,因此仅有一个选择信号514(其是一)。选择信号涉及对包括四个叶节点(并且因此四个请求者)的分支的选择或不选择。因此,以相同的方式更新与输入到决策节点的左分支相对应的公共向量的四个位,即:
H′=H∧选择
类似地,以相同的方式更新与在该第三级中输入到决策节点的右分支相对应的公共向量中的四个位,即:
Figure BDA0002983920300000101
将了解,图5B仅示出可用以基于选择信号更新共同向量的一个实例硬件实施方案,所述选择信号在此实例中为选择左信号。在作为图5B所示的示例的变型的另一示例中,复用器可以用在较低级中以提供更紧凑的表示(例如,信号可以被分组和复用)。
图6示出在仲裁器中生成独热信号的示例方法的流程图,其中独热信号随后可由仲裁器内的有效载荷选择逻辑110使用(例如,如上参考图4所述)。另外地或替代地,在一个周期(例如周期T)中生成的独热信号可用于生成下一个周期(例如周期T+1)的优先级数据,如下文参考图9所描述。另外,独热信号可用于提供被传送回请求者的使能信号,以便通知所选择的请求者它已经被选择(即,被服务)。
如图6所示,该方法包括生成包括与存在请求者相同数量的位(例如,对于图1所示的示例为n+1位)的公共向量,并且将公共向量中的每一位设置为一(框602)。然后,基于用于第一层决策节点的选择信号,将对应于未选择的请求者的位从一改变为零(框604)。如果存在多于一层的决策节点(框606中的“是”),则基于用于第二层决策节点的选择信号来更新公共向量,并且将公共向量中与决策树的未选择分支(以及因此未选择的请求者)相对应的位设置为零(框608)。对每个后续层的决策节点重复该方法(框606中的“是”,后面是框608),直到基于决策树中的每层决策节点的选择信号更新了公共向量(框606中的“否”),并且此时输出公共向量(框610),该公共向量现在只包括单个位,该单个位是一。
如上所述,由图6的方法生成的独热向量然后可以被输入到有效载荷选择逻辑110,诸如图4所示,并且用于选择用于所选择的请求者的有效载荷。
在各种示例中,代替使用独热信号来选择有效载荷或在二元决策树中复用有效载荷数据,用于请求者选择逻辑108的决策树内的决策节点的选择信号可以被输入到有效载荷选择逻辑110,并且被用于选择用于输出到资源102的有效载荷。这在图7中以图形方式示出,并且基于图5A左侧示出的示例二元决策树500。最初,有效载荷数据包括从请求者接收的有效载荷数据,标记为P0-P7。应该理解,不是所有的请求者R0-R7都是有效的,因此仲裁器可以只从有效的请求者接收有效载荷数据。在这样的示例中,虚拟有效载荷数据可用于非活动请求者,其中虚拟有效载荷数据可以被填充以任何数据,因为它将作为有效载荷选择过程的一部分被挑选。如图7所示,来自请求者选择逻辑108的选择信号被用于逐渐地、逐层地用零替换更多的有效载荷数据,直到有效载荷数据仅包括用于单个请求者的有效载荷数据以及许多零。
来自决策树500中的第一层决策节点的选择信号506被配置为选择请求者R0、R3、R4和R6,因此,在有效载荷选择逻辑中,有效载荷数据702的相应部分,即P0、P3、P4和P6保持不变(如图7中向下的箭头所示),而有效载荷数据的其它部分被零替换(如图7中的X所示),以生成更新的有效载荷数据704。在下一层决策节点中,选择信号510被配置为选择请求者R0和R6,并且因此在有效载荷选择逻辑中,有效载荷数据的两个对应部分(其中有效载荷数据的部分对应于决策树的分支中的请求者的有效载荷数据)保持不变(如图7中向下的箭头所示)。对应于未选择的请求者的剩余有效载荷数据(其中一些已经为全零),并且因此对应于决策树的未选择的分支,被设置为全零(如图7中的X所指示的),以生成更新的有效载荷数据706。在图5A的决策树中,仅存在一个另外的决策节点层,并且在该最后层中,选择信号514被配置为选择请求者R6。因此,在有效载荷选择逻辑中,有效载荷数据段保持不变(如图7中向下箭头所示),而其余有效载荷数据(其中一些已经为全零)被设置为全零(如图7中X所示),以生成包括用于所选请求者的原始有效载荷数据和许多零的更新有效载荷数据708。由于在树中没有其它层的决策节点,所以更新的有效载荷数据708被输入到OR约简级710,其去除对应于未选择的请求者的所有数据(现在为全零)并且输出被选择的请求者R6的有效载荷数据P6。更新的有效载荷数据708可以使用如图5B所示和如上所述的AND逻辑元件520、522的类似布置来生成。在这样的示例中,AND逻辑元件520、522对有效载荷数据的每个位执行AND运算。
在进一步的示例中,可以使用混合方法来选择有效载荷数据,该混合方法使用在一些级(例如,如图2和3中)通过决策树复用有效载荷数据和在其它级(如图7中)进行OR约简的组合。
图8示出在仲裁器中选择有效载荷以转发到共享资源的示例方法的流程图。如图8所示,该方法包括接收每个请求者的或者至少每个活动请求者的有效载荷数据(框802)。如上所述,对于非活动请求者,可以不接收有效载荷数据,并且对于这些请求者,可以使用包括全零的虚拟有效载荷数据。然后,基于所接收的请求者选择逻辑中的决策树中的第一层决策节点的选择信号(框804),将对应于未选择的请求者的有效载荷从实际有效载荷改变为全零,以生成更新的有效载荷数据(框806)。如果在决策树中存在多于一层的决策节点(框808中的“是”),则接收(框810)用于决策树中的下一层的选择信号,并且通过将对应于决策树的未选择分支(并且因此未选择的请求者)的有效载荷数据元素设置为全零(框812)来使用该选择信号更新有效载荷数据。对每个后续层的决策节点重复该方法(框808中的“是”,后面是框810-812),直到基于决策树中的每层决策节点的选择信号进一步更新了更新的有效载荷数据(框808中的“否”),并且此时,在OR约简逻辑块中对现在只包括请求者之一的原始有效载荷数据以及许多零的更新的有效载荷数据进行OR约简(框814),并且输出所得到的有效载荷数据(框816)。
优先级控制逻辑112可以另外使用以上参考图5A、5B和6描述的技术的变型来生成更新的优先级数据,以在循环方案中的下一个周期中使用。在这样的示例中,对于决策树中的每个层存储优先级位的公共向量,并且基于来自特定层中的决策节点的选择信号来更新优先级位的公共向量。公共向量最初包括全一,并且在决策树中的每一层,使用选择信号来选择性地不更新向量中的一,使用零来更新向量中的一个或多个一,尽管如图9所示和下面描述的,用于执行该更新的逻辑与图5B所示的不同。在基于来自决策树中的最终决策节点层的选择信号进行更新之后,存在进一步的更新操作,应用该操作以便生成下一个周期的优先级数据。该操作可以包括在选择请求者的顺序的方向上(例如,在所示的示例中以右前顺序)将向量中的所有位移动一个位置,或者对独热向量的反相版本(例如,使用图6的方法生成的)执行逐位AND。优先级位的结果向量包括每个请求者一个位,并且指示对应的请求者是否具有优先级(如上所述,其可以替代地被称为“高优先级”)。用于生成更新的优先级数据的这种技术可以比诸如在独热向量的生成之后和在周期的结束处生成下一个周期的优先级数据的替代方法更快。
图9是可用于基于选择信号来更新公共优先级向量的示例硬件实现的示意图,在该示例中,选择信号是选择左信号。如上所述,优先级向量904最初包括n+1个位(其中存在n+1个如上所述标识为R0-RN的请求者),并且所有位被设置为一。如图9所示,硬件布置在每一级包括每个请求者一个逻辑元件,其中对于除了最后级之外的所有级,一半逻辑元件是AND逻辑元件902,而另一半是OR逻辑元件903。在最后级中,所有逻辑元件都是AND逻辑元件902,并且在所有情况下,对逻辑元件902、903的输入之一求反。
硬件布置的第一级对应于决策树500中的第一级决策节点。决策树500中的决策节点的第一级包括四个决策节点,因此存在四个选择信号506A-D(下面表示为选择(select),并且分别具有值0、1、0、0),并且每个选择信号涉及对仅包括单个叶节点并因此仅包括单个请求者的分支的选择或不选择。因此,逻辑元件被逻辑地分组为包括OR逻辑元件903和AND逻辑元件902的对。该对中的OR逻辑元件903用于更新优先级位,P在对应于决策节点的左输入节点的公共向量中,并实现以下逻辑(其中P′是公共向量中的更新的位):
Figure BDA0002983920300000121
在逻辑对902中的AND逻辑元件被用来更新优先级位,P在对应于决策节点的右输入节点的公共向量中,并且实现以下逻辑(其中P′是公共向量中的更新的位):
Figure BDA0002983920300000131
硬件配置的第一级的输出是更新的优先级向量908。
硬件配置的第二级采用更新的优先级向量908,并基于来自第二级决策节点的选择信号510A-B(在所示的示例中具有值0、1)进一步更新该向量,以生成进一步更新的优先级向量912。如前所述,来自第二级决策节点的这些选择信号中的每一个都涉及对包括两个叶节点(以及因此两个请求者)的分支的选择或不选择。因此,逻辑元件902、903被逻辑分组为四个(两个OR逻辑元件903和两个AND逻辑元件902),并且在每组四个中,以相同的方式更新与输入到第二级中的决策节点的左分支相对应的公共优先级向量中的两个位,即:
Figure BDA0002983920300000132
类似地,以相同的方式更新与输入到该第二层中的决策节点的右分支相对应的公共优先级向量中的两个位,即:
Figure BDA0002983920300000133
在硬件配置的第三级中,来自第二级的更新的优先级向量912基于来自第三级决策节点的选择信号514(在所示的示例中具有值1)被进一步更新,第三级决策节点是图5A的示例中的最后级别。选择信号涉及对包括四个叶节点(并且因此四个请求者)的分支的选择或不选择。因此,以相同的方式更新与输入到决策节点的左分支相对应的公共优先级向量的四个位,即:
Figure BDA0002983920300000134
类似地,以相同的方式更新与在该第三级中输入到决策节点的右分支相对应的公共向量中的四个位,即:
Figure BDA0002983920300000135
硬件配置的第三级的输出是更新的优先级向量916。
硬件布置的最后级与前面的级不同,因为它不涉及任何选择信号。相反,它或者在选择请求者的顺序的方向上(例如,在所示的示例中的右-第一顺序)执行位的移位,或者如在图9所示的示例中,将在前一级中生成的优先级向量916与由请求者选择逻辑108生成的独热向量(例如,如使用图6的方法生成的)组合。来自优先级向量916的每个位Pi(其中i是位索引)与来自独热向量的相应位的求反版本组合,
Figure BDA0002983920300000136
在AND逻辑元件902中,因此根据下式更新:
Figure BDA0002983920300000137
硬件布置的这个最后级的输出是下一个周期的优先级向量920。
在图9所示的示例中,所得优先级向量920是后面跟着七个零的一个向量。在另一种情况下,如果在一个周期内最左(或最后)的请求者已经被选择(给定独热向量10000000),则所得到的优先级向量可以为全零,这样在下一个周期内没有具有高优先级的向量,这意味着最右活动的请求者将被选择。或者,这可以被视为特殊情况,并且在结果向量在移位之后或在与独热向量组合之后具有全零的情况下(如上所述),优先级向量可以替代地被设置为全一。
在其它示例中,可以在不使用图9的硬件的情况下生成用于循环方案中的下一个周期的更新的优先级数据。在这样的示例中,使用当前周期的独热向量(例如,使用图6的方法生成的向量)来生成用于下一个周期的更新的优先级数据。在该示例中,硬件逻辑左移独热向量被左移一位,将最左侧的位回绕以使其变成最右侧的位,然后从零减去左移的独热向量(例如,通过将所有位反相,然后将一加到反相的结果)。这种生成将比使用图9的硬件慢,但是可以在较小的区域中实现。
图10A示出基于当前周期中的选择信号在仲裁器中生成下一个周期的优先级数据的第一示例方法的流程图,其中仲裁器内的请求者选择逻辑108随后可以使用优先级数据来在下一个周期中选择请求者。如图10A所示,该方法包括生成包括与存在请求者相同数量的位(例如,对于图1所示的示例为n+1位)的优先级向量,并且将公共向量中的每一位设置为一(框1002)。然后,基于所接收的请求者选择逻辑中的决策树中的第一层决策节点的选择信号(框804),优先级向量中的无位、一位或多位从一变为零以生成更新的优先级向量(框1006)。如上所述,更新可以使用以下逻辑:
Figure BDA0002983920300000141
Figure BDA0002983920300000142
如果在决策树中存在多于一层的决策节点(框808中的“是”),则接收(框810)用于决策树中的下一层的选择信号,并通过将优先级向量中的无、一个或多个位设置为零或一(框1012)而使用该选择信号来进一步更新的优先级数据。更新可以使用与上述(并且在框1006中使用的)相同的逻辑。对每个后续层的决策节点重复该方法(框808中的“是”,后面是框810和1012),直到基于决策树中每层决策节点的选择信号进一步更新了更新的优先级向量(框808中的“否”),并且此时,基于从请求者选择逻辑108接收的当前周期的独热向量更新的优先级向量(框1014)。优先级向量的更新涉及来自优先级向量的位和来自独热向量的反相版本的位之间的逐位AND运算(框1016),并且输出所得到的优先级向量(框1018)。
图10B示出基于当前周期中的选择信号在仲裁器中生成下一个周期的优先级数据的第二示例方法的流程图,其中仲裁器内的请求者选择逻辑108随后可以使用优先级数据来在下一个周期中选择请求者。图10B的方法与图10A所示的方法(以及上面所述的)相同,除了最后级:代替接收独热向量(在框1014中)并将其与更新的优先级向量(在框1016中)组合,更新的优先级向量(来自框1012)在选择请求者的顺序的方向上(例如,以右-第一顺序)被移位一个位置(框1020),如在所示的示例中,移位是向左一位,并且位绕回。
图2所示的决策树200中的每个节点204,连同图5A-6所示的用于生成独热码向量的方法和硬件、图9、10A和10B所示的用于生成下一个周期的优先级数据的方法和硬件以及图7-8所示的用于选择有效载荷数据的方法和硬件,都使用选择信号。这些选择信号可以完全在决策树200内生成,例如,完全在每个决策节点204中的选择信号生成逻辑304内,基于已经通过决策树200传播到特定决策节点204的关于请求者的信息(即,基于在特定决策节点的每个子节点处保持的信息);然而,这意味着选择信号的生成是在决策树的每个级别中的关键路径中(即,在每个节点处,不能进行对子节点之一的选择,直到在该节点处已经生成了选择信号)。
本文描述了一种与决策树分开地至少部分地预生成选择信号的方法。这减少了每个级别中的关键路径,并因此减少了延迟。另外,该技术导致对于固定延迟而言尺寸较小(即面积较小)的硬件。特别地,可以使用两个OR逻辑元件的约简树来生成选择信号,这固有地比使用复用器更快。除了两个OR约简树之外,每个决策节点还存在少量的逻辑(例如,一个OR逻辑元件和一个AND逻辑元件),并且这可以位于决策节点内(例如,作为选择信号生成逻辑304,由来自OR约简树的输入馈送),或者可以与OR约简树协同定位,与决策树200分离。
可以参考图11A-D描述用于为仲裁器中的决策树生成选择信号的硬件布置,并且在图14中示出该方法的示例流程图。如图14所示,对于每个处理周期,该方法包括:生成多个选择信号(框1402),其中每个选择信号对应于在硬件逻辑中实现的二元决策树中的决策节点;以及使用二元决策树选择多个有序请求者中的一个(框1404),其中每个决策节点被配置为基于与决策节点相对应的选择信号选择两个子节点中的一个,并且传播与所选择的子节点相对应的数据。
生成所述多个选择信号包括:接收多个有效位(框1406),每个有效位对应于多个请求者之一并且指示在处理周期中请求者是否请求对共享资源的访问;接收多个优先级位(框1408),每个优先级位对应于多个请求者之一并且指示在处理周期中请求者是否具有优先级;通过对于每个请求者在AND逻辑元件中组合对应的有效位和优先级位,生成多个有效_与_优先级位(框1410),每个有效_与_优先级位对应于多个请求者之一;使用第一OR约简树来对有效位执行成对OR约简,并且在OR约简树的每个级别处生成一个或多个附加有效位,每个附加有效位对应于不同的非重叠请求者集合(框1412);以及使用第二OR约简树来对有效_与_优先级位执行成对OR约简,并且在OR约简树的每个级别处生成一个或多个附加有效_与_优先级位,每个附加有效_与_优先级位对应于不同的非重叠请求者集合(框1414)。然后,对于每个决策节点,确定以下:包括连接到决策节点的左子节点的所有请求者的请求者集合的有效_与_优先级位的值(框1416),以及包括连接到决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值(框1418)。
响应于确定包括连接到决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值等于一(框1420中的“是”),将节点的选择信号设置为零(框1422)。响应于确定包括连接到决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值等于零(框1420中的“否”)并且包括连接到决策节点的左子节点的所有请求者的请求者集合的有效_与_优先级位的值等于一(框1424中的“是”),将节点的选择信号设置为一(框1426)。最后,响应于确定包括连接到决策节点的左子节点的所有请求者的请求者集合的有效_与_优先级位的值和包括连接到决策节点的右子节点的所有请求者的请求者集合的有效_与_优先级位的值都等于零(在框1420和1424中为“否”),确定包括连接到决策节点的右子节点的所有请求者的请求者集合的有效位的值,并且将节点的选择信号设置为该确定的有效位值的倒数(框1428)。
图11A和11B示出两个OR约简树1102、1104,每个OR约简树包括多个OR逻辑元件1105。图11A中所示的OR约简树1102对每个请求者的有效位执行成对OR约简,并且图11B中所示的第二OR约简树1104对每个请求者的有效_与_优先级位执行成对OR约简。由第一OR简化树1102简化的有效位在下面表示为VX,其中x是请求者的索引,例如x=0用于R0,x=7用于R7,或者标识用于决策树内的第二和后续层中的决策节点的请求者的范围,例如x=30用于请求者R0-R3,x=74用于请求者R4-R7。由第二OR约简树1104减小的有效_与_优先级位在下面表示为VHPX,并且通过使用AND逻辑元件1106组合单个请求者Rx的有效位VX和相同请求者的优先级位PX来生成每个有效_与_优先级位,如图11C所示。除了两个OR简化树1102、1104之外,硬件装置还包括用于每个选择信号,即用于决策树中的每个决策节点的选择信号生成元件1108,并且选择信号生成元件1108的结构在图11D中示出。如上所述,该选择信号生成元件1108可以在每个决策节点内实现(例如,作为图3中所示的信号选择生成逻辑304),或者可以与OR简化树1102、1104位于同一位置。如图11D所示,选择信号生成元件1108包括AND逻辑元件和OR逻辑元件,并且使用以下逻辑生成选择信号:
Figure BDA0002983920300000161
其中VHPR是来自连接到决策节点的右子节点的请求者集合的有效_与_优先级OR约减树1104的有效_与_优先级位,VHPL是来自连接到左子节点的请求者集合的有效_与_优先级OR约减树1104的有效_与_优先级位,VR是来自连接到右子节点的请求者集合的valid_and_reduction树1102的有效位。
参考图2所示的决策树200,其中决策节点204标记为A-G,在下表中示出在用于每个决策节点的选择信号生成元件1108中使用的信号:
Figure BDA0002983920300000171
参考上表,可以看出,使用有效_与_优先级OR约减树1104生成的所有有效_与_优先级位用于生成图2所示的决策树200的选择信号。相比之下,不是使用由有效OR约减树1102生成的所有有效位(具体而言,在OR约减树的每个级别不需要最终VL结果,例如在图2的示例中不需要V76和V74)。因此,可以从OR约简树中省略一些OR逻辑元件(即,在OR约简树的每级中仅生成最终VL结果的那些OR逻辑元件),如图11E所示。然而,在一些示例中,最终的完整的OR约简结果V70的生成可能是有用的,因为它提供了指示至少一个有效位是一(即,至少一个请求器是活动的)的信号,并且在这种情况下,图11A的OR约简树可以由取V74和V30以及输出V70作为输入的另一OR逻辑元件来补充。
选择信号生成元件1108的真值表如下:
Figure BDA0002983920300000172
并且由此可以看出,除非有效_与_优先级位都是零,否则来自有效OR约简树1102、1102'的位不影响选择信号的值(即,来自有效OR约简树1102、1102'的位)是不需要的。
应当理解,虽然在附图中示出特定的逻辑布置并且在上面进行了描述,但是这些逻辑布置的任何一个都可以由各种逻辑等同物来替换,例如用执行位的逆的NAND约简的硬件来替换OR约简树,计算确定是否选择了右分支的选择信号(而不是如上所述指示是否选择了右分支的选择信号)等。
通过使用如上所述的OR简化树来生成选择信号,这附加地去除了选择信号的扇出,否则该选择信号将处于二元决策树的级别之间的关键路径中,并且因此可以帮助提供早于有效载荷数据的准予/使能信号。
上文描述了用于改进仲裁器硬件的各种技术和仲裁方法。这些包括:用于选择有效载荷数据的方法和硬件,如参考图4所描述的;用于选择有效载荷数据的替代方法和硬件,如参考图7-8所描述的;用于生成如参考图5A-6所描述的独热信号的方法和硬件;如参考图9-10所述的用于生成下一个周期的优先级数据的方法和硬件;以及用于生成如参考图11A-E所描述的选择信号的方法和硬件。如上所述,这些技术中的每一个可以独立地使用,或者它们可以与本文所述的其它技术中的一个或多个结合使用。
在各种实例中,仲裁器硬件和仲裁方法可使用上述方法来生成选择信号,且可使用上述方法来生成独热信号(其使用OR约简树生成的选择信号)。通过使用这种组合,可以实现的最小延迟被减小,并且实现特定延迟所需的硬件的尺寸也被减小(假定通常为了减小延迟需要更大面积的硬件逻辑)。然后,所生成的独热信号可用于选择有效载荷数据(如上参考图4所述)和/或生成下一个周期的优先级数据(如上所述)。通过另外使用独热信号来选择有效载荷数据,可以进一步减少实现特定延迟所需的硬件面积,并且这对于更大的延迟而不是更小的延迟可能更有用。
在其它实例中,仲裁器硬件和仲裁方法可使用上文所描述的方法来生成选择信号,且接着可直接使用这些选择信号来选择有效载荷数据(如上文参考图7到8所描述)。独热信号也可以可选地生成并用于生成下一个周期的优先级数据(如上所述)。例如,这可以在用于获得有效载荷数据的定时是关键的但用于获得下一个周期的优先级数据的定时不是关键的情况下使用。
在进一步的示例中,选择有效载荷数据的方法(如上参考图4所述)可以与生成独热信号的任何方法结合使用。
在各种示例中,生成下一个周期的优先级数据的方法(如参考图9所描述的)可与生成独热信号的任何方法一起使用。例如,在获得下一个周期的优先级数据的定时是关键的情况下,可以使用这种方法。
图12示出其中可实施如本文中所描述的仲裁器的计算机系统。计算机系统包括CPU 1202、GPU 1204、存储器1206和其它装置1214,例如显示器1216、扬声器1218及相机1220。仲裁器(或实现本文所描述的方法中的一者的其它逻辑块)1210可实现在GPU 1204上。在其它实例中,仲裁器1210可实现在CPU 1202上。计算机系统的部件可以通过通信总线1222彼此进行通信。
图1中的仲裁器106被示为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,这里描述为由仲裁器106内的任何功能块形成的中间值不需要由特定功能块在任何点物理地生成,并且可以仅表示方便地描述由仲裁器在其输入和输出之间执行的处理的逻辑值。
本文所述的仲裁器可体现在集成电路上的硬件中。本文描述的仲裁器可被配置为执行本文描述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且可以由机器存取的其它存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及用诸如C、Java(RTM)或OpenCL(RTM)的编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如通用GPU)、微处理器、旨在加速CPU之外的任务的任何处理单元等。计算机或计算机系统可以包括一个或多个处理器。本领域技术人员将认识到,这种处理能力被结合到许多不同的设备中,因此术语“计算机”包括机顶盒、媒体播放器、数字收音机、PC、服务器、移动电话、个人数字助理和许多其它设备。
本发明还意图包围限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种在其上编码有形式为集成电路定义数据集的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中被处理(即运行)时,该计算机可读程序代码将该系统配置成制造被配置成执行本文描述的任何方法的仲裁器,或者制造包括本文描述的任何设备的仲裁器。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所描述的仲裁器的方法。此外,可以提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中被处理时,使制造仲裁器的方法被执行。
集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码,作为在任何层级定义集成电路的硬件描述语言,包含作为寄存器传送级(RTL)代码、作为例如Verilog或VHDL的高级电路表示,和作为例如OASIS(RTM)和GDSII的低级电路表示。在逻辑上定义集成电路的更高级表示法(例如RTL)可以在配置为在软件环境的上下文中生成集成电路的制造定义的计算机系统处处理,所述软件环境包括电路元件的定义和用于组合那些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图13描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置成制造仲裁器的示例。
图13示出集成电路(IC)制造系统1302的示例,该IC制造系统被配置成制造如本文任何示例中描述的仲裁器。具体地,IC制造系统1302包括布局处理系统1304和集成电路生成系统1306。IC制造系统1302被配置成接收IC定义数据集(例如,定义如本文任何示例中描述的仲裁器),处理IC定义数据集,并且根据IC定义数据集来生成IC(例如,其体现如本文任何示例中描述的仲裁器)。对IC定义数据集的处理将IC制造系统1302配置成制造体现如本文任何示例中描述的仲裁器的集成电路。
布局处理系统1304被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1304已经确定电路布局时,其可将电路布局定义输出到IC生成系统1306。电路布局定义可以是例如电路布局描述。
如本领域已知的,IC生成系统1306根据电路布局定义来生成IC。例如,IC生成系统1306可实现生成IC的半导体装置制造工艺,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统1306的电路布局定义可呈计算机可读代码的形式,IC生成系统1306可使用所述计算机可读代码来形成用于生成IC的合适掩码。
由IC制造系统1302执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统1302可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下级中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩码来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集进行处理可将系统配置成制造仲裁器,而无需对IC定义数据集进行处理来确定电路布局。例如,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置为(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集,以上文关于图13描述的方式对集成电路制造系统的配置,可制造出如本文中所述的装置。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图13所示的实例中,IC生成系统还可以由集成电路定义数据集另外配置,以在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其它方式向集成电路提供与集成电路一起使用的程序代码。
本领域技术人员将认识到用来存储程序指令的存储装置可分布在网络上。例如,远程计算机可以将所描述的过程的示例存储为软件。本地或终端计算机可以访问远程计算机,并下载软件的一部分或全部以运行程序。或者,本地计算机可以根据需要下载软件的片段,或者在本地终端处执行一些软件指令,而在远程计算机(或计算机网络)处执行另一些软件指令。本领域技术人员还将认识到通过利用本领域技术人员已知的常规技术,软件指令的全部或一部分可以由诸如DSP、可编程逻辑阵列等的专用电路执行。
本文描述的方法可以由配置有存储在有形存储介质上的机器可读形式的软件的计算机执行,例如,软件采用包括用于将计算机配置为执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式,或采用包括计算机程序代码装置的计算机程序的形式,当程序在计算机上运行时以及在计算机程序可以在计算机可读存储介质上实现的情况下,所述代码装置适于执行本文所述任何方法的所有步骤。有形(或非暂态)存储介质的示例包括磁盘、拇指驱动器、存储卡等,并且不包括传播信号。软件可适于在并行处理器或串行处理器上执行,使得所述方法步骤可以任何适当顺序执行或同时执行。
本文描述的硬件部件可以由其上编码有计算机可读程序代码的非暂时性计算机可读存储介质生成。
存储用于实现所公开方面的机器可执行数据的存储器可以是非暂态介质。非暂态介质可以是易失性或非易失性的。易失性非暂态介质的示例包括基于半导体的存储器,诸如SRAM或DRAM。可用于实现非易失性存储器的技术的示例包括光学和磁存储器技术、闪存、相变存储器、电阻RAM。
对“逻辑”的特定引用是指执行一个或多个功能的结构。逻辑的示例包括被布置成执行这些功能的电路。例如,这种电路可以包括在制造过程中可用的晶体管和/或其它硬件元件。这种晶体管和/或其它元件可用于形成实现和/或包含存储器的电路或结构,例如寄存器、触发器或锁存器,逻辑运算器,例如布尔运算,数学运算器,例如加法器、乘法器,或者,移位器和互连,作为示例。这些元件可以作为定制电路或标准单元库、宏来提供或在其它抽象级别提供。这些元件可以特定布置互连。逻辑可以包括具有固定功能的电路,并且电路可以被编程为执行一个或多个功能;可以从固件或软件更新或控制机制提供这样的编程。被识别为执行一个功能的逻辑还可以包括实现组成性功能或子过程的逻辑。在一个示例中,硬件逻辑具有实现一个或多个固定功能操作,状态机或过程的电路。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。这例如可以通过在预定义面积预算内制造模块的多个实例来完成。
如对本领域技术人员显而易见的,可以延长或改变本文给出的任何范围或设备值而不丧失所寻求的效果。
应当理解,上述益处和优点可以涉及一个实施方案,或者可以涉及多个实施方案。实施方案不限于解决任何或所有所述问题的那些或具有任何或所有所述益处和优点的那些。
对“一个”项目的任何引用都指的是这些项目中的一个或多个。术语“包括”在本文中用于表示包括所识别的方法块或元件,但是这些块或元件不包括排他列表,并且设备可包括附加的块或元件,并且方法可包括附加的操作或元件。此外,并不暗示块、元件和操作本身是关闭的。
本文所述的方法的步骤可以任何合适的顺序或在适当时被同时执行。图中框之间的箭头示出方法步骤的一个示例序列,但并不旨在排除其它序列或并行执行多个步骤。另外,在不脱离本文描述的主题的实质和范围的情况下,可以从任何方法中删除单个块。上述任何示例的一些方面可以与所描述的任何其它示例的一些方面组合以形成进一步的示例而不会丧失所寻求的效果。在图的元件被示出通过箭头连接的情况下,应当理解,这些箭头仅示出元件之间的通信(包括数据和控制消息)的一个示例性流向。元件之间的流向可以是任一方向或两个方向。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (20)

1.一种在计算系统中的多个有序请求者和共享资源之间进行仲裁的方法,所述方法包括:
与二元决策树分开地但并行地生成独热向量,所述独热向量包括具有值零的多个位和具有值一的单个位;以及
向对应于具有值一的位的所述请求者准予对所述共享资源的访问,其中在当前处理周期内准予访问,
其中与决策树分开地但并行地生成独热向量包括:
生成包括与每个请求者相对应的一个位的向量,并且将所述向量中的每个位设置为一;
基于多个选择信号,每个选择信号对应于在硬件逻辑中实现的所述二元决策树的第一层中的不同决策节点,将所述向量中对应于未选择的请求者的位设置为零,其中每个选择信号被配置为由所述二元决策树中的对应决策节点使用以选择两个子节点中的一个;以及
对于所述二元决策树中的每个后续层并且基于与所述二元决策树的所述后续层中的不同决策节点相对应的一个或多个选择信号,将所述向量中与未选择的请求者相对应的位设置为零。
2.根据权利要求1所述的方法,其中对于所述二元决策树中的任何决策节点,存在对应的选择信号和所述向量中的两个对应的位集合:左集合和右集合,所述左集合包括与连接到所述决策节点的左输入节点的请求者相对应的位,并且所述右集合包括与连接到所述决策节点的右输入节点的请求者相对应的位,并且其中将所述向量中的与未选择的请求者相对应的位设置为零包括,对于每个选择信号:
如果所述选择信号具有第一预定义值,则将所述右集合中的所有所述位设置为零,并保持所述左集合中的所有所述位不变;以及
如果所述选择信号具有第二预定义值,则将所述左集合中的所有所述位设置为零,并保持所述右集合中的所述位不变。
3.根据权利要求2所述的方法,其中所述第一预定义值是一并且所述第二预定义值是零。
4.根据权利要求1所述的方法,还包括:
从所述多个有序请求者中的一个或多个接收有效载荷数据;以及
使用所述独热向量从所接收的有效载荷数据中选择有效载荷数据以输出到所述共享资源。
5.根据权利要求4所述的方法,其中使用所述独热向量从所接收的有效载荷数据中选择有效载荷数据以输出到所述共享资源包括:
对于每个请求者,在AND逻辑元件中组合来自所述请求者的所述有效载荷数据和来自所述独热向量的对应位,以生成用于所述请求者的更新的有效载荷数据;以及
在OR约简级中组合所述请求者中的每一个的所述更新的有效载荷数据。
6.根据权利要求1所述的方法,还包括:
使用所述独热向量生成下一处理周期的优先级数据。
7.根据权利要求6所述的方法,其中使用所述独热向量生成下一处理周期的优先级数据包括:
生成包括与每个请求者相对应的一个位的优先级向量,并且将所述向量中的每个位设置为一;
基于与所述二元决策树的所述第一层中的不同决策节点相对应的所述多个选择信号,更新所述优先级向量中的一个或多个位;以及
对于所述二元决策树中的每个后续层并且基于与所述二元决策树的所述后续层中的不同决策节点相对应的所述一个或多个选择信号,更新所述优先级向量中的一个或多个位;以及
在输出所述优先级向量之前,对独热向量进行反相,并通过在AND逻辑元件中组合所述优先级向量中的每一位与反相独热向量中的对应位来更新所述优先级向量中的每一位,
其中对于所述二元决策树中的任何决策节点,存在对应的选择信号和所述优先级向量中的两个对应的位集合:左集合和右集合,所述左集合包括与连接到所述决策节点的左输入节点的请求者相对应的位,并且所述右集合包括与连接到所述决策节点的右输入节点的请求者相对应的位,并且其中更新所述优先级向量中的一个或多个位包括,对于所述二元决策树的所述层中的每个选择信号:
如果所述选择信号具有值一,则将所述右集合中的所有所述位设置为零,并保持所述左集合中的所有所述位不变;以及
如果所述选择信号具有值零,则将所述左集合中的所有所述位设置为一,并使所述右集合中的所述位保持不变。
8.根据权利要求6所述的方法,其中使用所述独热向量生成下一处理周期的优先级数据包括:
生成包括与每个请求者相对应的一个位的优先级向量,并且将所述向量中的每个位设置为一;
基于与所述二元决策树的所述第一层中的不同决策节点相对应的所述多个选择信号,更新所述优先级向量中的一个或多个位;以及
对于所述二元决策树中的每个后续层并且基于与所述二元决策树的所述后续层中的不同决策节点相对应的所述一个或多个选择信号,更新所述优先级向量中的一个或多个位;以及
在输出所述优先级向量之前,通过将所述优先级向量中的每一位向左移位一位的位置来更新所述位,
其中对于所述二元决策树中的任何决策节点,存在对应的选择信号和所述优先级向量中的两个对应的位集合:左集合和右集合,所述左集合包括与连接到所述决策节点的左输入节点的请求者相对应的位,并且所述右集合包括与连接到所述决策节点的右输入节点的请求者相对应的位,并且其中更新所述优先级向量中的一个或多个位包括,对于所述二元决策树的所述层中的每个选择信号:
如果所述选择信号具有值一,则将所述右集合中的所有所述位设置为零,并保持所述左集合中的所有所述位不变;以及
如果所述选择信号具有值零,则将所述左集合中的所有所述位设置为一,并使所述右集合中的所述位保持不变。
9.根据权利要求1所述的方法,其中在所述二元决策树的所述节点中生成所述选择信号。
10.根据权利要求1所述的方法,其还包括生成所述多个选择信号。
11.根据权利要求10所述的方法,其中生成所述多个选择信号包括:
接收用于每个处理周期的多个有效位,每个有效位对应于所述多个请求者之一并且指示在所述处理周期中所述请求者是否请求访问所述共享资源;
接收用于每个处理周期的多个优先级位,每个优先级位对应于所述多个请求者之一并且指示在所述处理周期中所述请求者是否具有优先级;
通过对于每个请求者在AND逻辑元件中组合对应的有效位和优先级位,为每个处理周期生成多个有效_与_优先级位,每个有效_与_优先级位对应于所述多个请求者之一;
使用第一OR约简树来对所述有效位执行成对OR约简,并且在每个处理周期中并且在所述OR约简树的每个级别处生成一个或多个附加有效位,每个附加有效位对应于不同的非重叠请求者集合;
使用第二OR约简树来对所述有效_与_优先级位执行成对OR约简,并且在每个处理周期中并且在OR约简树的每个级别处生成一个或多个附加有效_与_优先级位,每个附加有效_与_优先级位对应于不同的非重叠请求者集合;以及
对于每个处理周期和每个决策节点:
确定包括连接到所述决策节点的左子节点的所有所述请求者的请求者集合的所述有效_与_优先级位的值;
确定包括连接到所述决策节点的右子节点的所有所述请求者的请求者集合的所述有效_与_优先级位的值;
响应于确定包括连接到所述决策节点的所述右子节点的所有所述请求者的请求者集合的所述有效_与_优先级位的所述值等于一,将用于所述节点的选择信号设置为等于零;
响应于确定包括连接到所述决策节点的所述左子节点的所有所述请求者的请求者集合的所述有效_与_优先级位的所述值等于一,并且包括连接到决策节点的右子节点的所有所述请求者的请求者集合的所述有效_与_优先级位的所述值等于零,将用于所述节点的所述选择信号设置为等于一;以及
响应于确定包括连接到所述决策节点的所述左子节点的所有所述请求者的请求者集合的所述有效_与_优先级位的所述值和包括连接到所述决策节点的所述右子节点的所有所述请求者的请求者集合的所述有效_与_优先级位的所述值都等于零,确定包括连接到所述决策节点的所述右子节点的所有所述请求者的请求者集合的所述有效位的值,并且将用于所述节点的所述选择信号设置为等于所述有效位的倒数。
12.一种仲裁器,其被配置为在计算系统中的多个有序请求者和共享资源之间进行仲裁,所述仲裁器包括请求者选择逻辑,并且所述请求者选择逻辑包括:
二元决策树,其以硬件逻辑实现并且包括多个输入节点和多个决策节点,每个输入节点对应于所述请求者之一,其中所述二元决策树中的每个决策节点被布置成基于选择信号来选择两个子节点中的一个子节点;以及
硬件逻辑,其被配置为与所述二元决策树分开地但并行地生成独热向量,所述独热向量包括具有值零的多个位和具有值一的单个位,所述硬件逻辑包括:
硬件逻辑,其被布置成生成包括对应于每个请求者的一个位的向量,并且将所述向量中的每个位设置为一;以及
硬件逻辑,其被布置成针对所述二元决策树中的每一层,基于在所述层中的决策节点处进行的选择来更新所述向量中的一个或多个位,使得所述向量中对应于未选择的请求者的位为零。
并且所述仲裁器还被布置成向对应于具有值一的位的所述请求者准予对所述共享资源的访问,其中在当前处理周期内准予访问。
13.根据权利要求12所述的仲裁器,其中对于所述二元决策树中的任何决策节点,存在对应的选择信号和所述向量中的两个对应的位集合:左集合和右集合,所述左集合包括与连接到所述决策节点的左输入节点的请求者相对应的位,并且所述右集合包括与连接到所述决策节点的右输入节点的请求者相对应的位,并且其中每个决策节点被布置成通过以下操作更新所述向量中的一个或多个位:
响应于所述选择信号具有第一预定义值,将所述右集合中的所有所述位设置为零,并保持所述左集合中的所有所述位不变;以及
响应于所述选择信号具有第二预定义值,将所述左集合中的所有所述位设置为零,并保持所述右集合中的所述位不变。
14.根据权利要求12所述的仲裁器,还包括:
输入端,其被配置为从所述多个有序请求者中的一个或多个接收有效载荷数据;以及
有效载荷选择逻辑,其包括被布置成使用所述独热向量从所接收的有效载荷数据中选择有效载荷数据以输出到所述共享资源的硬件逻辑。
15.根据权利要求14所述的仲裁器,其还包括被配置为输出所选有效载荷数据的输出端。
16.根据权利要求14所述的仲裁器,其中所述有效载荷选择逻辑包括:
多个AND逻辑元件,每个AND逻辑元件对应于所述请求者之一,其中每个AND逻辑元件被配置为将来自所述请求者的所述有效载荷数据和来自所述独热向量的对应位组合以生成用于所述请求者的更新的有效载荷数据;以及
OR约简级,其被配置为组合针对所述请求者中的每个请求者的所述更新的有效载荷数据。
17.根据权利要求12所述的仲裁器,还包括优先级控制逻辑,所述优先级控制逻辑被布置成使用所述独热向量生成用于下一处理周期的优先级数据。
18.根据权利要求17所述的仲裁器,其中所述优先级控制逻辑包括:
硬件逻辑,其被布置成:
生成包括与每个请求者相对应的一个位的优先级向量,并且将所述向量中的每个位设置为一;
基于与所述请求者选择逻辑中的所述二元决策决策树的所述第一层中的不同决策节点相对应的所述多个选择信号,更新所述优先级向量中的一个或多个位;
对于所述二元决策树中的每个后续层并且基于与所述二元决策树的所述后续层中的不同决策节点相对应的所述一个或多个选择信号,更新所述优先级向量中的一个或多个位;以及
在输出所述优先级向量之前,对独热向量进行反相,并通过在AND逻辑元件中组合所述优先级向量中的每一位与反相独热向量中的对应位来更新所述优先级向量中的每一位,
其中对于所述二元决策树中的任何决策节点,存在对应的选择信号和所述优先级向量中的两个对应的位集合:左集合和右集合,所述左集合包括与连接到所述决策节点的左输入节点的请求者相对应的位,并且所述右集合包括与连接到所述决策节点的右输入节点的请求者相对应的位,并且其中更新所述优先级向量中的一个或多个位包括,对于所述二元决策树的所述层中的每个选择信号:
如果所述选择信号具有值一,则将所述右集合中的所有所述位设置为零,并保持所述左集合中的所有所述位不变;以及
如果所述选择信号具有值零,则将所述左集合中的所有所述位设置为一,并使所述右集合中的所述位保持不变。
19.根据权利要求17所述的仲裁器,其中所述优先级控制逻辑包括:
硬件逻辑,其被布置成:
生成包括与每个请求者相对应的一个位的优先级向量,并且将所述向量中的每个位设置为一;
基于与所述二元决策树的所述第一层中的不同决策节点相对应的所述多个选择信号,更新所述优先级向量中的一个或多个位;以及
对于所述二元决策树中的每个后续层并且基于与所述二元决策树的所述后续层中的不同决策节点相对应的所述一个或多个选择信号,更新所述优先级向量中的一个或多个位;以及
在输出所述优先级向量之前,通过将所述优先级向量中的每一位向左移位一位的位置来更新所述位,
其中对于所述二元决策树中的任何决策节点,存在对应的选择信号和所述优先级向量中的两个对应的位集合:左集合和右集合,所述左集合包括与连接到所述决策节点的左输入节点的请求者相对应的位,并且所述右集合包括与连接到所述决策节点的右输入节点的请求者相对应的位,并且其中更新所述优先级向量中的一个或多个位包括,对于所述二元决策树的所述层中的每个选择信号:
如果所述选择信号具有值一,则将所述右集合中的所有所述位设置为零,并保持所述左集合中的所有所述位不变;以及
如果所述选择信号具有值零,则将所述左集合中的所有所述位设置为一,并使所述右集合中的所述位保持不变。
20.一种计算机可读代码,其被配置为在运行所述代码时导致根据权利要求1-11中任一项所述的方法被执行。
CN202110294801.3A 2020-03-20 2021-03-19 基于优先级的仲裁 Withdrawn CN113496283A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2004050.7 2020-03-20
GB2004050.7A GB2593210B (en) 2020-03-20 2020-03-20 Priority based arbitration

Publications (1)

Publication Number Publication Date
CN113496283A true CN113496283A (zh) 2021-10-12

Family

ID=70457068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110294801.3A Withdrawn CN113496283A (zh) 2020-03-20 2021-03-19 基于优先级的仲裁

Country Status (4)

Country Link
US (2) US11507436B2 (zh)
EP (1) EP3882764A1 (zh)
CN (1) CN113496283A (zh)
GB (1) GB2593210B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2593211B (en) * 2020-03-20 2022-06-01 Imagination Tech Ltd Priority based arbitration
US11929940B1 (en) * 2022-08-08 2024-03-12 Marvell Asia Pte Ltd Circuit and method for resource arbitration

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519837A (en) * 1994-07-29 1996-05-21 International Business Machines Corporation Pseudo-round-robin arbitration for a shared resource system providing fairness and high throughput
US6978329B1 (en) * 2002-10-08 2005-12-20 Advanced Micro Devices, Inc. Programmable array-based bus arbiter
US7062582B1 (en) * 2003-03-14 2006-06-13 Marvell International Ltd. Method and apparatus for bus arbitration dynamic priority based on waiting period
US20040210696A1 (en) * 2003-04-18 2004-10-21 Meyer Michael J. Method and apparatus for round robin resource arbitration
US8521933B2 (en) * 2010-12-30 2013-08-27 Lsi Corporation Round robin arbiter with mask and reset mask
US8892801B2 (en) * 2012-05-23 2014-11-18 Arm Limited Arbitration circuity and method for arbitrating between a plurality of requests for access to a shared resource
GB2546603B (en) * 2015-01-16 2019-05-08 Imagination Tech Ltd Arbiter verification
US10437757B2 (en) * 2017-10-20 2019-10-08 Hewlett Packard Enterprise Development Lp Determine priority of requests using request signals and priority signals at an arbitration node
GB2568124B (en) * 2018-03-23 2020-07-01 Imagination Tech Ltd Arbitration systems and methods
CN110297710B (zh) 2018-03-23 2022-05-10 畅想科技有限公司 用于多资源仲裁的公共优先级信息
GB2567027B (en) * 2018-03-23 2020-05-06 Imagination Tech Ltd Common priority information for multiple resource arbitration

Also Published As

Publication number Publication date
US20210349769A1 (en) 2021-11-11
US11507436B2 (en) 2022-11-22
GB2593210B (en) 2022-06-01
EP3882764A1 (en) 2021-09-22
GB202004050D0 (en) 2020-05-06
US20230085669A1 (en) 2023-03-23
GB2593210A (en) 2021-09-22
US11853811B2 (en) 2023-12-26

Similar Documents

Publication Publication Date Title
US11829305B2 (en) Priority based arbitration
US11853811B2 (en) Priority based arbitration between shared resource requestors using priority vectors and binary decision tree
US11422953B2 (en) Arbitrating requests for access to a computer resource by ordered requestors
GB2567027A (en) Common priority information for multiple resource arbitration
GB2568124A (en) Arbitration systems and methods
US20240012613A1 (en) Look Ahead Normaliser
GB2605282A (en) Priority based arbitration
EP3696664A1 (en) Allocation of memory
GB2605283A (en) Priority based arbitration
GB2617688A (en) Priority based arbitration
US20200133637A1 (en) Selecting an ith largest or a pth smallest number from a set of n m-bit numbers
US20240134572A1 (en) Allocation of memory by mapping registers referenced by different instances of a task to individual logical memories
GB2592318A (en) Selecting an ith largest or a pth smallest number from a set of n m-bit numbers

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20211012

WW01 Invention patent application withdrawn after publication