CN110297782B - 仲裁系统和方法 - Google Patents
仲裁系统和方法 Download PDFInfo
- Publication number
- CN110297782B CN110297782B CN201910223726.4A CN201910223726A CN110297782B CN 110297782 B CN110297782 B CN 110297782B CN 201910223726 A CN201910223726 A CN 201910223726A CN 110297782 B CN110297782 B CN 110297782B
- Authority
- CN
- China
- Prior art keywords
- priority
- requester
- cycle
- requesters
- resource
- 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 111
- 230000004044 response Effects 0.000 claims abstract description 12
- 230000000694 effects Effects 0.000 claims description 87
- 238000004519 manufacturing process Methods 0.000 claims description 49
- 238000003066 decision tree Methods 0.000 claims description 27
- 230000000737 periodic effect Effects 0.000 claims 1
- 241001522296 Erithacus rubecula Species 0.000 description 22
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 238000010187 selection method Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority 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/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
-
- 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
-
- 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
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
-
- 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]
-
- 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
-
- 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
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Bus Control (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于基于分配给请求者的优先级在多个排序请求者和共享资源之间进行仲裁的方法和仲裁器。所述方法包括:确定是否存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者;响应于确定存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者,选择在当前周期中请求了访问并且在当前周期中具有优先权的最低排序请求者;以及响应于确定不存在在当前周期中请求了访问并且在当前周期中具有优先权的请求者,选择在当前周期中请求了访问的最高排序请求者。
Description
背景技术
许多计算机系统具有在特定周期中可接收比在该周期中可处理的更多请求的资源。这通常在多个请求者之间共享资源时发生。例如,每个周期只能执行或处理一个请求的高速缓冲存储器(memory cache),可以由可同时请求访问该高速缓存器(cache)的四个请求者共享。在这种情况下,可以使用仲裁器来确定处理请求的顺序。具体地,仲裁器接收来自请求者的请求,并根据仲裁方案(例如规则或规则集)选择资源要处理哪个请求。在许多情况下,仲裁方案基于分配给请求者的优先级,使得在来自较低优先级请求者的请求之前授予来自较高优先级请求者的请求。然而,其他仲裁方案也可用于根据指定的仲裁方案对请求者和/或请求进行优先级排序。
通常希望仲裁方案确保所有请求者最终获得对共享资源的访问(即,没有一个请求者被饿死)。通常还希望仲裁方案最小化请求者可能必须等待以获得对资源的访问的最长时间。在许多情况下,还希望仲裁是公平的(即,请求者被大致同等地授予访问权)。
由于请求者不能获得对共享资源的访问,直到仲裁器选择了当前周期中资源要处理哪个请求,因此仲裁器能够快速选择要处理的请求是重要的。
以下描述的实施例仅通过示例的方式被提供,并不限制解决已知仲裁器和/或仲裁方案的任何缺点或所有缺点的实现方式。
发明内容
为了介绍将在以下详细描述中进一步描述的概念的选择,提供本发明内容。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
这里描述的是用于基于分配给请求者的优先级在共享资源的多个排序请求者之间进行仲裁的方法和仲裁器。所述方法包括:确定是否存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者;响应于确定存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者,选择在当前周期中请求了访问并且在当前周期中具有优先权的最低排序请求者;以及响应于确定不存在在当前周期中请求了访问并且在当前周期中具有优先权的请求者,选择请求了访问的最高排序请求者。
第一方面提供了一种用于在计算系统中的多个排序请求者和资源之间进行仲裁的仲裁器,所述仲裁器包括:请求者选择逻辑,其被配置为:接收指示多个请求者中的哪个请求者在一周期中访问了资源的活动信息;接收指示所述多个请求者中的哪个请求者在该周期中具有优先权的优先权信息;基于活动信息和优先权信息,通过以下方式来选择所述多个请求者中的一个:确定是否存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者;响应于确定存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者,选择在当前周期中请求了访问并且在当前周期中具有优先权的最低排序请求者;以及响应于确定不存在在当前周期中请求了访问并且在当前周期中具有优先权的请求者,选择在当前周期中请求了访问的最高排序请求者;以及输出识别所选择的请求者的信息。
第二方面提供了一种用于在计算系统中的多个排序请求者和共享资源之间进行仲裁的方法,所述方法包括:接收指示多个请求者中的哪个请求者在一周期中访问了资源的活动信息;接收指示所述多个请求者中的哪个请求者在该周期中具有优先权的优先权信息;基于活动信息和优先权信息,通过以下方式来选择请求了访问的所述多个请求者中的一个:确定是否存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者;响应于确定存在在当前周期中请求了访问并且在当前周期中具有优先权的至少一个请求者,选择在当前周期中请求了访问并且在当前周期中具有优先权的最低排序请求者;以及响应于确定不存在在当前周期中请求了访问并且在当前周期中具有优先权的请求者,选择在当前周期中请求了访问的最高排序请求者;以及输出识别所选择的请求者的信息。
本文描述的仲裁器、仲裁器系统和逻辑块可以被体现在集成电路上的硬件中。可以提供一种在集成电路制造系统中制造本文描述的仲裁器、仲裁器系统和/或逻辑块的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集将系统配置为制造本文描述的仲裁器、仲裁器系统和/或任何逻辑块。可以提供一种非暂时性计算机可读存储介质,其上存储有本文描述的仲裁器、仲裁器系统和/或任何逻辑块的计算机可读描述,当在集成电路制造系统中处理时,所述计算机可读描述将集成电路制造系统配置为制造本文描述的仲裁器、仲裁器系统和/或逻辑块。
可以提供一种集成电路制造系统,所述集成电路制造系统包括:非暂时性计算机可读存储介质,其上存储有本文描述的仲裁器、仲裁器系统或逻辑块的计算机可读描述;布局处理系统,其被配置为处理计算机可读描述,以便生成体现仲裁器、仲裁器系统或逻辑块的集成电路的电路布局描述;集成电路生成系统,其被配置为根据电路布局描述制造仲裁器、仲裁器系统或逻辑块。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供一种非暂时性计算机可读存储介质,其上存储有计算机可读指令,当在计算机系统处执行时,计算机可读指令使计算机系统执行如本文所述的方法。
对于技术人员来说是显而易见的是,可以适当地组合上述特征,并且可以将上述特征与本文描述的示例的任何方面组合。
附图说明
现在将参照附图详细描述示例,在附图中:
图1是包括控制对共享资源的访问的仲裁器的示例系统的框图;
图2是包括请求者选择逻辑的图1的示例仲裁器的示意图;
图3是可以由图2的请求者选择逻辑接收和/或由其生成的示例信息的示意图;
图4是用于从多个请求者中选择请求者的示例二元决策树的示意图;
图5是被配置为实现第一示例组请求者数据的循环法方案的图4的二元决策树的示意图;
图6是用于基于分配给请求者的优先级从多个请求者中选择请求者的示例性方法的流程图;
图7是用于填充被配置为实现图6的方法的二元决策树的决策节点的示例性方法的流程图;
图8是被配置为针对第一示例组请求者数据实现图6的请求者选择方法的二元决策树的示意图;
图9是被配置为实现第二示例组请求者数据的循环法方案的图4的二元决策树的示意图;
图10是被配置为针对第二示例组请求者数据实现图6的请求者选择方法的图8的二元决策树的示意图;
图11是用于生成下一周期的优先权信息的第一示例方法的流程图;
图12是用于生成下一周期的优先权信息的第二示例方法的流程图;
图13是用于生成下一周期的优先权信息的第三示例方法的流程图;
图14是用于生成下一周期的优先权信息的第四示例方法的流程图;
图15是包括控制对多个共享资源的访问的仲裁器系统的系统的框图;
图16是包括公共优先权选择逻辑的图15的仲裁器系统的示例实现方式的框图;
图17是图16的公共优先权选择逻辑的示例实现方式的框图;
图18是示出生成公共优先权信息的示例方法的流程图;
图19是示出针对示例场景生成公共优先权信息的示意图;
图20是其中可以实现本文描述的仲裁器、仲裁器系统和逻辑块的示例计算机系统的框图;以及
图21是用于生成体现本文描述的任何仲裁器、仲裁器系统和逻辑块的集成电路的示例集成电路制造系统的框图。
附图示出了各种示例。技术人员将理解,附图中示出的元件边界(例如,框,框组或其他形状)代表边界的一个示例。在一些示例中,可以将一个元素设计为多个元素,或者可以将多个元素设计为一个元素。在适当的情况下,在整个附图中使用共同的附图标记来指示类似的特征。
具体实施方式
通过示例的方式呈现以下描述以使得本领域技术人员能够制造和使用本发明。本发明不限于本文描述的实施例,并且对所公开的实施例的各种修改对于本领域技术人员来说是显而易见的。仅通过示例的方式描述了实施例。
本文描述了用于在共享公共资源的多个请求者之间进行仲裁的仲裁方案和实现这种仲裁方案的仲裁器。请求者被排序,并且在各周期,各请求者被分配优先权(或高优先级)或不被分配。根据所描述的仲裁方案,被授予对资源的访问权的请求者是在该周期中请求了访问资源并且被分配了优先权的最低排序请求者。如果不存在在该周期中请求了访问并且被分配了优先权的请求者,则被授予对资源的访问权的请求者是请求了访问资源的最高排序请求者。如下面更详细描述的,与诸如循环仲裁方案的其他仲裁方案相比,这种仲裁方案可以在硬件上(例如,在逻辑门的数量方面)更有效地实现。
术语“周期”在本文中用于表示资源的处理周期。资源的处理周期可以是但不限于是时钟周期。
如上所述,许多计算机系统包括一个或多个共享资源,其可以在特定周期中接收比在该周期中可由资源处理的更多的请求。例如,图1示出了示例计算机系统100,其包括由多个请求者104A-H共享的资源102。资源102可以是,例如,但不限于共享存储器、网络交换结构、专用状态机或复杂计算元件等。在任何周期中,多个请求者104A-H中没有一个、其中的一个或多于一个可以请求访问资源102。如图1所示,请求者i(Ri)通过拉高信号活动[i]来请求访问资源102。然而,这仅是一个示例,并且请求者可以以其他方式作出请求。当请求者在一周期中请求了访问资源时,请求者在该周期中被认为是活动的或有效的。可能存在与要由资源102处理的请求相关联的数据。与请求者i相关联的数据表示为数据[i]。
由于资源102在各周期中只能处理一个请求,因此仲裁器106在请求者之间进行仲裁。具体地,仲裁器106接收来自请求者的请求,并且各周期选择被授予访问资源102的活动请求者之一。仲裁器106然后向资源提供识别所选择的请求者(RS)的信息(例如,请求者ID或编号)和与所选择的请求者相关联的任何数据(数据[RS])。
现在参照图2,图2示出了示例仲裁器106。在该示例中,仲裁器106包括请求者选择逻辑202,其被配置为根据仲裁方案选择请求者104A-H,在当前周期中请求者104A-H将被授予对资源102的访问权。在各周期中,请求者选择逻辑202接收指示哪些请求者在当前周期中请求了访问资源102的活动信息,以及指示哪些请求者在当前周期中具有优先权(或高优先级)的优先权信息。请求者选择逻辑202基于活动信息、优先权信息和由仲裁器106实现的仲裁方案,选择当前周期中要被授予对资源的访问权的活动请求者之一。仲裁器106还可以包括数据选择逻辑206,其被配置为接收识别所选择的请求者的信息,并且选择与所选择的请求者相关联的数据并将其转发到资源102。数据选择逻辑206可以被实现为多路复用器。
活动信息可以被实现为活动掩码或向量,其包括用于各请求者的指示该请求者在当前周期中是否请求了访问资源的一位。例如,活动掩码的第i位可以指示第i请求者在当前周期中根据请求者的预定排序是否请求了访问资源。可以使用任何标准来对请求者进行排序。例如,请求者可以按数字顺序或以任何其他合适的顺序排序。在一些情况下,“1”可以指示对应的请求者请求了访问资源,并且“0”可以指示对应的请求者尚未请求访问资源。然而,显而易见的是,这仅是示例,并且在其他情况下,“0”可以指示对应的请求者请求了访问资源,并且“1”可以指示对应的请求者尚未请求访问资源。
现在参照图3,图3示出了示例活动信息302,其中存在从0到7编号的八个请求者,并且请求者按数字顺序排序。在该示例中,活动信息302包括八位,其中活动信息302的第i位对应于请求者i(Ri)。具体地,第0位对应于请求者0,第1位对应于请求者1,第2位对应于请求者2,等等。在该示例中,“1”指示对应的请求者请求了访问,因此[0 1 0 0 1 1 00]的示例活动信息302指示请求者1、4和5是活动的(即在当前周期中请求了访问资源)。
类似地,优先权信息可以被实现为优先权掩码,该优先权掩码包括用于各请求者的指示该请求者是否具有优先权的一位。具体地,优先权掩码的第i位可以指示第i请求者在当前周期中根据请求者的预定顺序是否具有优先权。优选地,对于活动信息和优先权信息,使用请求者的相同排序,使得活动掩码的第i位和优先权掩码的第i位对应于同一请求者。在一些情况下,“1”可以指示对应的请求者具有优先权(或具有高优先级),并且“0”可以指示对应的请求者没有优先权(或具有低优先级)。然而,对于本领域技术人员来说显而易见的是,这仅是示例,并且在其他情况下,“0”可以指示对应的请求者具有优先权(或具有高优先级)并且“1”可以指示对应的请求者没有优先权(或具有低优先级)。如下面更详细描述的,各周期的优先权信息可以由优先权选择逻辑204根据仲裁方案动态确定,优先权选择逻辑204可以形成如图2所示的仲裁器106的一部分,或是可以在仲裁器106外部。优先权选择逻辑204可以被配置为将在一周期中生成的优先权信息存储在诸如寄存器208的存储单元中。
再次参照图3,图3示出了示例优先权信息304,其中存在从0到7编号的八个请求者,并且请求者按数字顺序排序。类似于图3中所示的活动信息302,优先权信息304包括8位,其中优先权信息304的第i位对应于请求者i(Ri)。在该示例中,“1”指示对应的请求者具有优先权(或高优先级),因此[0 0 0 0 1 1 1 1]的示例优先权信息304指示请求者4、5、6和7具有优先权(或者具有高优先级)。
在一些情况下,请求者选择逻辑202可以被配置为从活动信息302和优先权信息304生成活动_优先权信息,其指示哪个请求者在当前周期中既是活动的又具有优先权。如下面更详细描述的,这可以帮助请求者选择逻辑202更快速、有效地选择被授予访问权的请求者。与活动信息和优先权信息一样,活动_优先权信息可以被实现为掩码,该掩码具有用于各请求者的指示该请求者是否既是活动的又具有优先权(或高优先级)的位。在活动信息是活动掩码的形式并且优先权信息是优先权掩码的形式的情况下,可以通过对活动掩码和优先权掩码执行逐位“与”(AND)来生成活动_优先权信息。
再次参照图3,图3示出了示例活动_优先权信息306,其中存在从0到7编号的八个请求者,并且请求者按数字顺序排序。活动_优先权信息306包括八位,其中活动_优先权信息306的第i位对应于请求者i(Ri)。由于活动信息和优先权信息指示只有请求者4和5既是活动的又具有优先权,所以活动_优先权信息仅将第4位和第5位设置为“1”。
仲裁方案是定义在一周期中接收到的请求的相对优先级的规则或规则集。换句话说,仲裁方案是用于确定在各周期中哪个请求者被授予对资源的访问权的规则或规则集。在本文描述的示例中,仲裁方案包括定义如何基于优先权信息选择请求者的一个或多个选择规则,以及定义在各周期中使用什么优先权信息(或者在各周期中如何生成优先权信息)的一个或多个优先权规则。
示例仲裁方案是循环法方案。在循环法方案中,请求者根据一个或多个标准从最低到最高被排序(例如,从左到右,从右到左等),并且在任何周期中,具有优先权的最低排序的活动请求者被授予对资源的访问权,并且,如果不存在具有优先权的活动请求者,则最低排序的活动请求者被授予对资源的访问权。在下一周期中,相对于在当前周期中被授予访问权的请求者的所有较高排序请求者被赋予优先权(或高优先级),并且其余的请求者没有被赋予优先权(或被赋予低优先级)。因此,循环法方案的优先权信息将包括具有优先权(或高优先级)的请求者的连续块310(其也可以被称为优先权块或优先权区域)和没有优先权(或低优先级)的请求者的连续块308。
例如,在从左到右对请求者进行排序,使得最左边的请求者是最低排序请求者,并且最右边的请求者是最高排序请求者的情况下,在任何周期中,选择具有优先权的最左边的活动请求者。然而,如果不存在具有优先权的活动请求者,则选择最左边的活动请求者。在此示例中,在下一周期中,在当前周期中被授予对资源的访问权的请求者的右边的所有请求者都被赋予优先权(或高优先级),并且其余的请求者没有被赋予优先权(或者被赋予低优先级)。
被配置为根据所描述的循环法方案选择请求者的请求者选择逻辑202可以被实现为二元决策树。如图4所示,二元决策树400是可以被配置为通过比较成对的元素从多个元素中选择一个元素的结构。被配置为从多个元素中选择一个元素的二元决策树包括多个叶节点402A-H,其连接到一层或多层的决策节点404A-D、406A-B、408。通常存在log2(N)层的决策节点,其中N是元素的数量。例如,在存在八个元素(即八个请求者)的图4的示例中,存在三个级别的决策节点,即,1级决策节点404A-D,2级决策节点406A-B和3级决策节点408。
各节点用与多个元素之一相关的数据填充。各叶节点402A-H最初用关于多个元素中的不同元素的信息填充,并且基于元素的特征和预定标准来填充决策节点,使得根据预定标准的“最佳”元素上升到树的顶部(即顶部决策节点408)。具体地,各决策节点404A-D、406A-B、408连接到下面的层中的两个节点(例如,左节点和右节点),其在本文中可以称为子节点,并且各决策节点404A-D、406A-B、408根据一个或多个预定标准被其子节点之一的数据填充。特别地,1级决策节点404A-D连接到两个叶节点402A-H,并且用连接的叶节点之一的数据填充;2级决策节点406A-B连接到两个1级决策节点404A-D,并且用连接的1级节点之一的数据填充;并且3级决策节点408连接到两个2级决策节点,并且用连接的2级节点之一的数据填充。
为了使用这样的决策树实现上述循环法方案,各节点402A-H、404A-D、406A-B、408可以被配置为保持识别请求者的信息(例如,请求者i的请求者ID),指示所识别的请求者在当前周期中是否请求了访问资源的信息(例如,活动[i]),以及指示所识别的请求者在当前周期中是否请求了访问并且具有优先权的信息(例如,活动_优先权[i])。叶节点402A-H的各周期用对应于请求者的信息按用于活动信息和优先权信息的相同的顺序填充。然后,决策节点404A-D、406A-B和408被配置为根据该方案选择“最佳”请求者。例如,在从左到右对请求者进行排序,使得最左边的请求者是最低排序请求者,最右边的请求者是最高排序请求者的情况下,各决策节点被配置为根据以下规则选择要填充哪个子节点:
换句话说,如果左子节点用活动的且具有优先权的请求者填充,或者如果左子节点被活动的请求者填充,并且右子节点未用活动的且具有优先权的请求者填充,则各决策节点用左子节点填充。否则,决策节点用右子节点填充。以这种方式,决策树将选择活动的且具有优先权的最左边的请求者,或者如果不存在这样的请求者,则它将选择活动的最左边的请求者。
图5中示出了这种决策树的操作的示例。在该示例决策树500中,存在从0到7编号的八个请求者,其中Ri用于表示第i请求者,优先权掩码是[0 0 0 0 0 1 1 1],其指示请求者5、6和7(R5,R6和R7)在当前周期中具有优先权,并且活动掩码为[0 1 1 0 1 0 1 0],其指示请求者1、2、4和6(R1,R2,R4和R6)在当前周期中是活动的(例如,请求了访问资源)。这些优先权和活动掩码导致[0 0 0 0 0 1 0]的活动_优先权掩码,其指示只有请求者6(R6)在当前周期中是活动的且具有优先权。基于上述循环法方案,这意味着应该选择请求者6作为被授予对资源的访问权的请求者。从图5中可以看出,确实发生了这种情况。
叶节点402A-H分别用请求者0-7填充。1级决策节点404A-D分别用请求者1、2、4和6填充,因为请求者1是活动的而请求者0不是;请求者2是活动的而请求者3不是;请求者4是活动的而请求者5不是;并且请求者6是活动的且具有优先权,而请求者7不是活动的。2级决策节点406A-B分别用请求者1和6填充,因为请求者1是最左边的活动请求者,并且请求者6是活动的且具有优先权而请求者4没有优先权。3级决策节点408用请求者6填充,因为请求者6是活动的且具有优先权而请求者1没有优先权。
所描述的用于实现循环法仲裁方案的二元决策树针对各决策节点需要两个逻辑门来控制选择。例如,可以存在用于确定的第一逻辑门(即,单个逻辑门可以执行“与”和“非”(NOT))以及用于确定左·活动_优先权V第一逻辑门的输出的第二逻辑门(即,单个逻辑门可以执行“或”)。由于二元决策树将具有层的决策节点,因此关键路径将包括大致的逻辑门。然而,发明人确定了可以通过实现包括修改的选择规则的仲裁方案来简化控制逻辑,而不影响仲裁的公平性,所述选择规则指定,在不存在具有优先权的活动请求者时选择最高排序的活动请求者,而不是在不存在具有优先权的活动请求者时选择最低排序的活动请求者。换句话说,修改的选择规则指定,选择具有优先权的最低排序活动请求者,或者如果不存在具有优先权的活动请求者,则选择最高排序的活动请求者。
这意味着,在从左到右对请求者进行排序,使得最左边的请求者是最低排序请求者,并且最右边的请求者是最高排序请求者的情况下,选择具有优先权的最左边的活动请求者,或者如果不存在具有优先权的活动请求者,则选择最右边的活动请求者。
现在参照图6,图6示出了示例方法600,其可以由图2的请求者选择逻辑202执行,以便根据修改的选择规则选择请求者。方法600开始于框602和604,其中请求者选择逻辑分别接收当前周期的活动信息和优先权信息。尽管在图6的示例方法600中,顺序地接收活动信息和优先权信息,但是在其他示例方法中,可以在活动信息之前接收优先权信息,或者可以同时或并行地接收优先权信息和活动信息。一旦接收到活动信息和优先权信息,方法600就前进到框606。
在框606处,请求者选择逻辑202根据活动信息和优先权信息确定在当前周期中是否存在具有优先权(或高优先级)的任何活动请求者。在一些情况下,这可以包括基于活动信息和优先权信息生成活动_优先权掩码,并且基于活动_优先权掩码是否具有任何“1”来确定是否存在具有优先权(或高优先级)的任何活动请求者。例如,如果活动_优先权掩码不具有任何“1”,则请求者选择逻辑202可以确定不存在具有优先权的活动请求者。相反,如果活动_优先权掩码确实具有至少一个“1”,则请求者选择逻辑202可以确定存在具有优先权的至少一个活动请求者。如果请求者选择逻辑202确定在当前周期中存在具有优先权的至少一个请求者,则方法600前进到框608。然而,如果请求者选择逻辑202确定在当前周期中不存在具有优先权的活动请求者,则方法600前进到框610。
在框608处,在请求者选择逻辑202确定了存在具有优先权(或高优先级)的至少一个活动请求者之后,请求者选择逻辑202选择具有优先权(或高优先级)的最低排序活动请求者,作为要被授予对资源的访问权的请求者。在从左到右对请求者进行排序,使得最左边的请求者是最低排序请求者,并且最右边的请求者是最高排序请求者的情况下,将选择具有优先权的最左边的活动请求者。一旦选择了具有优先权的最低排序的活动请求者,方法600就结束。
在框610处,在请求者选择逻辑202确定了不存在具有优先权(或高优先级)的活动请求者之后,请求者选择逻辑202根据活动信息确定是否存在任何活动请求者。在通过活动掩码实现活动信息的情况下,请求者选择逻辑202可以基于活动掩码是否具有任何“1”来确定是否存在任何活动请求者。例如,如果活动掩码不具有任何“1”,则请求者选择逻辑202可以确定当前周期中不存在活动请求者。相反,如果活动掩码具有至少一个“1”,则请求者选择逻辑202可以确定在当前周期中存在至少一个活动请求者。如果请求者选择逻辑202确定当前周期中存在至少一个活动请求者,则方法600前进到框612。然而,如果请求者选择逻辑202确定不存在活动请求者,则不选择任何请求,并且方法600结束。
在框612处,在请求者选择逻辑202确定了不存在具有优先权(或高优先级)的活动请求者之后,但是存在至少一个活动请求者,请求者选择逻辑202选择最高排序的活动请求者作为要被授予对资源的访问权的请求者。在从左到右对请求者进行排序,使得最左边的请求者是最低排序请求者,并且最右边的请求者是最高排序请求者的情况下,选择最右边的活动请求者。一旦选择了最高排序的活动请求者,方法600就结束。
上面描述的修改的选择规则(并且由图6的方法600实现)可以使用诸如以上关于图4描述的决策树400的决策树来实现。除了当按照从左到右的顺序用请求者填充叶节点时决策节点404A-D、406A-B、408根据上述规则选择要被哪个子节点填充之外,决策节点可以被配置为根据以下规则选择要被哪个子节点填充:
由于叶节点将由请求者依次地(从左到右或从右到左)填充,所以各决策节点将具有用对应于较高排序请求者的信息填充的子节点(可以称为高子节点)和用对应于较低排序请求者的信息填充的子节点(可以称为低子节点)。当叶节点用请求者从左到右依次地填充时,左子节点是低子节点,并且右子节点是高子节点。然而,如果叶节点用请求者从右到左依次地填充时,左子节点是高子节点,并且右子节点是低子节点。因此,决策节点实现的规则可以概括为:
在各决策节点处实现的该通用规则通过方法700总结于图7中。具体地,在框处702,决策节点接收子节点的活动信息,在框704处,决策节点接收子节点的活动_优先权信息。在框处706,决策节点根据活动信息和活动_优先权信息确定低节点具有活动_优先权还是高节点不是活动的。如果满足这些条件中的任何一个,则用来自低子节点的信息填充决策节点(框708)。否则,用来自高子节点的信息填充决策节点(框710)。
与上面针对循环法方案规定的规则相反,将决策节点配置为使用修改的选择规则,允许各决策节点的逻辑门的数量从两个减少到一个。这是因为可以用单个逻辑门确定选择条件因为“非”功能可以与“或”功能合并。减少各决策节点的门数,减少了请求者选择逻辑202中的门的总数,这可以减少实现请求者选择逻辑202的区域。减少各决策节点的门数也减少了关键路径中的逻辑门的数量,这可以显著地减少请求者选择逻辑202产生结果(即进行选择)的时间量。具体地,如上所述,在循环法二进制决策树实现方式中,各决策节点有两个门,因此在关键路径中有个逻辑门。通过各决策节点仅具有一个逻辑门,关键路径中的逻辑门的数量减少到这可以显著地改善请求者选择逻辑202的定时。
在一些情况下,根据修改的选择规则选择请求者可以导致相对于循环法方案选择相同的请求者。具体地,在存在具有优先权的至少一个活动请求者的情况下,循环法方案和修改的选择规则都将选择相同的请求者,即具有优先权的最低排序的活动请求者。例如,图8示出了二元决策树800的示例,其与图4的决策树400相同,它包括八个叶节点802A-H,即,四个1级决策节点804A-D,两个2级决策节点806A-B和一个3级决策节点或顶部决策节点808,除了决策节点804A-D、806A-B、808根据修改的选择规则配置。
在图8中,决策树800设置有与图5中所示的示例相同的输入,具体地,存在从0到7编号的八个请求者,其中Ri用于表示第i请求者,优先权掩码是[0 0 0 0 0 1 1 1],其指示请求者5、6和7(R5,R6和R7)在当前周期中具有优先权,并且活动掩码为[0 1 1 0 1 0 10],其指示请求者1、2、4和6(R1,R2,R4和R6)在当前周期中是活动的(例如,请求了访问资源)。
与图5的示例一样,叶节点802A-H分别用请求者0到7填充。在该示例中,1级决策节点804A-D分别用请求者1、2、4和6填充,因为请求者1是活动的而请求者0不是;请求者2是活动的而请求者3不是;请求者4是活动的而请求者5不是;并且请求者6是活动的且具有优先权,而请求者7不是活动的。2级决策节点806A-B分别用请求者2和6填充,因为请求者2是最高排序的活动请求者,并且请求者6是活动的且具有优先权而请求者4没有优先权。3级决策节点808用请求者6填充,因为请求者6是活动的且具有优先权而请求者2没有优先权。
可以看出,尽管图8的所有决策节点并非都用与图5所示的循环法二元决策树中的决策节点相同的请求者填充(例如,图8的决策节点806A用与图5的决策节点406A不同的请求者填充),但是结果是相同的,即,选择请求者6。当不存在具有优先权的活动请求者并且只有一个没有优先权的活动请求者时,循环法方案和修改的仲裁方案也都将选择相同的请求者。具体地,它们都会选择没有优先权的活动请求者。
然而,在其他情况下,使用修改的选择规则可以导致相对于循环法方案选择不同的请求者。例如,在不存在具有优先权的活动请求者并且存在两个或更多个没有优先权的活动请求者的情况下,循环法方案和修改的选择规则将选择不同的请求者。循环法方案将选择没有优先权的最低排序的活动请求者,并且修改的选择规则将选择没有优先权的最高排序的活动请求者。这在图9和图10中示出,图9和图10示出了分别实现循环法方案和修改的选择规则的二元决策树900、1000。在这两种情况下,存在从0到7编号的八个请求者,其中Ri用于表示第i请求者,优先权掩码是[0 0 00 0 1 1 1],其指示请求者5、6和7(R5,R6和R7)在当前周期中具有优先权,并且活动掩码为[0 1 1 0 1 0 1 0],其指示请求者1、2和4(R1,R2和R4)在当前周期中是活动的(例如,请求了访问资源)。
在图9中,叶节点402A-H分别用请求者0到7填充。在该示例中,1级决策节点404A-D分别用请求者1、2、4和7填充,因为请求者1是活动的而请求者0不是;请求者2是活动的而请求者3不是;请求者4是活动的而请求者5不是;并且请求者6和7都不是活动的或者都没有优先权,而请求者7是最高排序请求者。2级决策节点406A-B分别用请求者1和4填充,因为请求者2是最低排序的活动请求者,并且请求者4是活动的而请求者7不是。3级决策节点408用请求者1填充,因为请求者1是最低排序的活动请求者。
在图10中,叶节点802A-H分别用请求者0到7填充。在该示例中,1级决策节点804A-D分别用请求者1、2、4和7填充,因为请求者1是活动的而请求者0不是;请求者2是活动的而请求者3不是;请求者4是活动的而请求者5不是;并且请求者6和7都不是活动的或者都没有优先权,而请求者7是最高排序请求者。2级决策节点806A-B分别用请求者2和4填充,因为请求者2是最高排序的活动请求者,并且请求者4是活动的而请求者7不是。3级决策节点808用请求者4填充,因为请求者4是最高排序的活动请求者。
从图9中可以看出,在循环法方案中,请求者1(R1)中被选择,因为这是最低排序的活动请求者,并且从图10可以看出,使用修改的选择规则,请求者4(R4)被选择,因为这是最高排序的活动请求者。尽管修改的选择规则不会导致选择与循环法方案中完全相同的请求者的事实,但测试表明这两种方案可以实现类似水平的公平性。
如上所述,请求者选择逻辑202的各周期接收要在该周期中使用的优先权信息。各周期的优先权信息可以由优先权选择逻辑204根据仲裁方案的优先权规则生成。优先权选择逻辑204可以是仲裁器106的一部分,如图2所示,或者它可以在仲裁器外部并与请求者选择逻辑202通信。在上述的循环法方案中,优先权选择逻辑204被配置为仅基于当前周期的所选择的请求者生成下一周期的优先权信息。具体地,在上述的循环法方案中,优先权选择逻辑204被配置为生成下一周期的优先权信息,使得相对于在当前周期中选择的请求者的所有较高排序请求者具有优先权(或高优先级)并且其余的请求者(即所选择的请求者和所有较低排序请求者)没有优先权(或具有低优先级)。然而,如果在使用修改的选择规则时以这种方式生成优先权信息,则可能达到最低排序请求者未获得对资源的访问权的情况。
因此,在本文描述的实施例中,可以至少基于当前周期中使用的优先权信息来生成优先权信息。下面参考图11至图14描述用于基于当前周期中使用的优先权信息生成下一周期的优先权信息的四种示例方法。然而,对于本领域技术人员来说显而易见的是,这些仅是示例,并且可以基于当前周期中使用的优先权信息来以任何合适的方式生成下一周期的优先权信息。
现在参照图11,图11示出了用于生成下一周期的优先权信息的第一示例方法1100,其可以由优先权选择逻辑204实现。在该方法1100中,下一周期的优先权信息基于在当前周期中选择的请求者和该请求者是否具有优先权。具体地,在该方法中,如果所选择的请求者具有优先权,则在下一周期中,相对于所选择的请求者的所有较高排序请求者都被赋予优先权,并且所有其他请求者不被赋予优先权,并且如果所选择的请求者没有优先权,则在下一周期中,所有请求者都被赋予优先权。
方法1100开始于框1102,其中优先权选择逻辑204接收指示在当前周期中选择了哪个请求者的信息。在一些情况下,请求者选择逻辑202可以被配置为提供识别所选择的请求者的信息(例如,请求者ID)。在框1104处,优先权选择逻辑204还接收指示在当前周期中选择的请求者是否具有优先权的信息。在一些情况下,优先权选择逻辑204可以被配置为将在各周期中生成的优先权信息存储在诸如寄存器208的存储单元中。在这些情况下,优先权选择逻辑204从所存储的优先权信息确定所选择的请求者是否具有优先权。在其他情况下,请求者选择逻辑202可以被配置为向优先权选择逻辑204提供当前周期的全部或部分优先权信息。例如,请求者选择逻辑202可以仅提供与所选择的请求者有关的优先权信息。在另外其他情况下,请求者选择逻辑202可以被配置为提供所选择的请求者的活动_优先权信息(例如,活动_优先权[RS]),因为这将在二进制决策树的顶部与所选择的请求者ID一起输出。一旦优先权选择逻辑204接收到指示在当前周期中选择的请求者的优先权的信息,方法1100就前进到框1106。
在框1106处,优先权选择逻辑204基于所接收的信息确定在当前周期中选择的请求者是否具有优先权。如果确定所选择的请求者具有优先权,则方法1100前进到框1108。然而,如果确定所选择的请求者没有优先权,则方法1100前进到框1110。
在框1108处,在确定在当前周期中选择的请求者具有优先权之后,优先权选择逻辑204生成下一周期的优先权信息,该优先权信息对于相对于所选择的请求者的所有较高排序请求者给予优先权(或高优先级),而对于其余的请求者不给予优先权。例如,如果有被编号为0到7并按数字顺序排序的8个请求者,并且请求者5在当前周期中被授予访问权,则优先权选择逻辑可以生成对请求者6和7给予优先权(或高优先级)而对请求者0、1、2、3、4、5不给予优先权(或给予低优先级)的下一周期的优先权信息。实现此的优先权掩码可以是[00 0 0 0 0 1 1]。然后方法1100结束。
在框1110处,在确定在当前周期中选择的请求者没有优先权之后,优先权选择逻辑204生成对所有请求者给予优先权(或高优先级)的下一周期的优先权信息。为八个请求者实现此的优先权掩码可以是[1 1 1 1 1 1 1 1]。然后方法1100结束。
基于上面参照图6描述的修改的请求者选择方法和参照图11描述的优先权选择方法的仲裁方案都是公平的(即,请求者通常被大致等同地授予访问权),并且,请求者在其被授予对资源的访问权之前必须等待的最大周期数相对较低。具体地,请求者只需要等待最多N个周期,其中N是请求者的数量。
现在参照图12,图12示出了用于生成下一周期的优先权信息的第二示例方法1200,其可以由图12的优先权选择逻辑204实现。在该方法1200中,优先权选择逻辑204在各周期将优先权区域移位一个请求者。此方法被设计成适用于以下情况:(i)任何周期中的优先权信息有0的块后跟1的块或全是1的块;或(ii)只有单个请求者在任何特定周期内都具有优先权。
方法1200开始于框1202,其中优先权选择逻辑204接收当前周期的优先权信息。在一些情况下,优先权选择逻辑204可以被配置为存储各周期生成的优先权信息。在这些情况下,优先权选择逻辑204可以从存储的优先权信息获得当前周期的优先权信息。在其他情况下,请求者选择逻辑202可以被配置为向优先权选择逻辑204提供当前周期的优先权信息。一旦优先权选择逻辑204接收到当前周期的优先权信息,方法1200就前进到方框1204。
在框1204处,优先权选择逻辑204将当前周期的优先权信息中的优先权区域(或优先权块)移位一个请求者以生成下一周期的优先权信息。优先权区域是具有高优先级的一个或多个请求者的连续块。将优先权区域移位一个请求者可以包括将优先权区域的开始移位一个请求者到下一个最高优先级请求者。优先权区域的开始可以是优先权区域中的最低排序请求者。请求者可以被认为是环绕的,使得如果优先权区域的开始是最高排序请求者,则通过使最低排序请求者成为下一周期中的优先权区域的开始,优先权区域被移位一个请求者。
例如,在优先权信息被配置为具有0的块之后跟1的块或全是1的块的情况下,将优先权区域移位一个请求者可以包括从优先权区域中的最低排序请求者移除优先权并且让所有其他优先级保持相同。在优先权区域中最低排序请求者是按顺序的最高排序请求者的情况下,所有请求者可以在下一周期中被给予优先权。例如,如果优先权掩码是[0 0 0 0 11 1 1],则优先权区域包括请求者4、5、6和7。如果请求者按数字顺序排序,则优先权区域中的最低排序请求者是请求者4,因此,将优先权区域移位一个请求者可以包括从请求者4中取走优先权并且使所有其他优先级保持相同,这导致下一周期的优先权掩码为[0 0 0 0 01 1 1]。然而,如果优先权掩码是[0 0 0 0 0 0 0 1],则优先权区域包括请求者7。如果请求者按数字顺序排序,则优先权区域中的最低排序请求者是请求者7,并且因为请求者7是最高排序请求者,因此所有请求者在下一周期中被给予优先权,导致下一周期的优先权掩码为[1 1 1 1 1 1 1 1]。
在单个请求者仅在一周期中被给予优先权的情况下,将优先权区域移位一个请求者可以包括在下一周期中仅有相对于在当前周期中具有优先权的请求者的下一个最高排序请求者被给予优先权。请求者的顺序可以被认为是环绕的,使得最高排序请求者的下一个最高排序请求者可以是最低排序请求者。例如,如果优先权掩码是[0 0 0 1 0 0 0 0],则优先权区域包括请求者3。如果请求者按数字顺序排序,则将优先权区域移位一个请求者可以包括仅授予优先权给下一个最高请求者(请求者4),导致下一周期中的优先权掩码为[0 0 0 0 1 0 0 0]。例如,如果优先权掩码是[0 0 0 0 0 0 0 1],则优先权区域包括请求者7。如果请求者按数字顺序排序,则将优先权区域移位一个请求者可以包括在下一周期中仅授予优先权给下一个最高请求者(请求者0),导致下一周期的优先权掩码为[1 0 0 0 00 0 0]。一旦生成了下一周期的优先权信息,方法1200就结束。
基于上面参照图6描述的修改的请求者选择方法和参照图12描述的优先权选择方法的仲裁方案允许优先权选择逻辑在硬件上很小。它还确保没有请求者必须等待超过N-1个周期才能被授予对资源的访问权,其中N是请求者的数量。然而,图12的方法的缺点是,它可以构造其中一个请求者比其他请求者更频繁地被授予对资源的访问权的序列,因此它不像基于图11的方法的仲裁方案那样“公平”,例如,较高排序请求者将比较低排序请求者将更频繁地被授予访问权。
现在参照图13,图13示出了用于生成下一周期的优先权信息的第三示例方法1300,其可以由图2的优先权选择逻辑204实现。在该方法1300中,下一周期的优先权信息基于当前周期中的优先权信息和所选择的请求者是否具有优先权。具体地,如果所选择的请求者具有优先权,则下一周期的优先权信息与当前周期相同,除了所选择的请求者没有优先权,并且如果所选择的请求者没有优先权,则在下一周期中除所选择的请求者以外的所有请求者都具有优先权。
方法1300开始于框1302,其中优先权选择逻辑接收识别在当前周期中选择的请求者的信息。在一些情况下,请求者选择逻辑202可以被配置为提供识别所选择的请求者的信息(例如,请求者ID)。在框1304处,优先权选择逻辑204接收当前周期的优先权信息。在一些情况下,优先权选择逻辑204可以被配置为存储各周期生成的优先权信息。在这些情况下,优先权选择逻辑204可以从存储的优先权信息获得当前周期的优先权信息。在其他情况下,请求者选择逻辑202可以被配置为向优先权选择逻辑204提供当前周期的优先权信息。一旦优先权选择逻辑204接收到当前周期的优先权信息和识别所选择的请求者的信息,方法1300就前进到方框1306。
在框1306处,优先权选择逻辑204基于所接收的信息确定在当前周期中选择的请求者是否具有优先权。如果确定所选择的请求者具有优先权,则方法1300前进到框1308。然而,如果确定所选择的请求者没有优先权,则方法1300前进到框1310。
在框1308处,在确定所选择的请求者具有优先权之后,优先权选择逻辑204通过获取当前周期的优先权信息并从所选择的请求者中取走优先权(例如,所选择的请求者的优先权位可以被设置为“0”)来生成下一周期的优先权信息。例如,如果当前周期的优先权掩码是[0 0 0 0 1 1 1 1]并且选择了请求者6,则下一周期的优先权掩码可以是[0 0 0 0 11 0 1]。一旦生成了下一周期的优先权信息,方法1300就结束。
在框1310处,在确定所选择的请求者没有优先权之后,优先权选择逻辑204生成下一周期的优先权信息,其中除了所选择的请求者之外的所有请求者都具有优先权。例如,如果请求者2是所选择的请求者,则下一周期的优先权掩码可以是[1 1 0 1 1 1 1 1]。一旦生成了下一周期的优先权信息,方法1300就结束。
基于上面参照图6描述的修改的请求者选择方法和参照图13描述的优先权选择方法的仲裁方案确保,没有请求者必须等待超过2N个周期的顺序才能被授予对资源的访问权,其中N是请求者的数量。然而,实现优先权选择逻辑所需的硬件比实现图12的方法1200所需的硬件更复杂。
现在参照图14,图14示出了用于生成下一周期的优先权信息的第四示例方法1400,其可以由图2的优先权选择逻辑204实现。在该方法1400中,下一周期的优先权信息基于当前周期中的优先权信息和所选择的请求者是否具有优先权。具体地,如果所选择的请求者具有优先权,则下一周期的优先权信息与当前周期相同,除了所选择的请求者没有优先权,并且如果所选择的请求者没有优先权,则在下一周期中除所选择的请求者以外的在当前周期中活动的所有请求者都具有优先权。
方法1400开始于框1402,其中优先权选择逻辑204接收识别在当前周期中选择的请求者的信息。在一些情况下,请求者选择逻辑202可以被配置为提供识别所选择的请求者的信息(例如,请求者ID)。在框1404处,优先权选择逻辑204接收当前周期的优先权信息。在一些情况下,优先权选择逻辑204可以被配置为存储各周期生成的优先权信息。在这些情况下,优先权选择逻辑204可以从存储的优先权信息获得当前周期的优先权信息。在其他情况下,请求者选择逻辑202可以被配置为向优先权选择逻辑204提供当前周期的优先权信息。在框1406处,优先权选择逻辑204接收当前周期的活动信息。在一些情况下,请求者选择逻辑202可以被配置为向优先权选择逻辑202提供当前周期的活动信息。一旦优先权选择逻辑204接收到当前周期的优先权信息、当前周期的活动信息和识别所选择的请求者的信息,方法1400就前进到方框1408。
在框1408处,优先权选择逻辑204基于所接收的信息确定在当前周期中选择的请求者是否具有优先权。如果确定所选择的请求者具有优先权,则方法1400前进到框1410。然而,如果确定所选择的请求者没有优先权,则方法1400前进到框1412。
在框1410处,在确定所选择的请求者具有优先权之后,优先权选择逻辑204通过获取当前周期的优先权信息并从所选择的请求者中取走优先权(例如,所选择的请求者的优先权位可以被设置为“0”)来生成下一周期的优先权信息。例如,如果当前周期的优先权掩码是[0 0 0 0 1 1 1 1]并且选择了请求者6,则下一周期的优先权掩码可以是[0 0 0 0 11 0 1]。一旦生成了下一周期的优先权信息,方法1400就结束。
在框1412处,在确定所选择的请求者没有优先权之后,优先权选择逻辑204生成下一周期的优先权信息,其中在当前周期中活动的所有请求者(除了所选择的请求者之外)被给予优先权并且所有其他请求者都没有优先权。例如,如果活动掩码为指示请求者1、2和3是活动的[0 1 1 1 0 0 0 0],并且请求者3是所选择的请求者,则只有请求者1和2被给予优先权,因为它们是活动的,但是未选中,导致下一周期的优先权掩码为[0 1 1 0 0 0 00]。一旦生成了下一周期的优先权信息,方法1400就结束。
基于上面参照图6描述的修改的请求者选择方法和参照图14描述的优先权选择方法的仲裁方案确保,没有请求者必须等待超过2N个周期的顺序才能被授予对资源的访问权,其中N是请求者的数量。然而,实现优先权选择逻辑所需的硬件比实现图12的方法1200所需的硬件更复杂。
发明人已经确定,对于其中在必须选择低优先级请求者之前可以选择的优先级请求者的数量有上限的任何优先权方案(例如但不限于由图11至图14的方法1100、1200、1300、1400实现的优先权方案),通过将最高排序请求者视为从没有优先权,可以将请求者必须等待被授予对资源的访问权的最大周期数减少一个周期。这意味着最高排序请求者永远不能是具有优先权的最低排序的活动请求者。这可以防止最高排序请求者在多个连续周期中被授予对资源的访问权(一旦它是具有优先权的最低排序的活动请求者,以及一旦它是最高排序的活动请求者),除非它是唯一的活动请求者,在这种情况下无论如何,没有其他请求者正在被延迟。请注意,任何其他请求者仍然可以在两个连续周期内被授予对资源的访问权,但在这种情况下,最高排序请求者将不会请求访问,因此最大延迟仍然减少了一个周期。这可以通过以下方式实现:(i)修改优先权方案,使得针对周期生成的优先权信息总是指示最高排序请求者没有优先权,或者通过(ii)修改请求者选择逻辑202以将最高排序请求者视为没有优先权,无论该周期的优先权信息如何。
在一些情况下,优先权选择逻辑204可以被配置为只有在确定当前周期中存在活动请求者之后执行上面关于图11至图14描述的方法1100、1200、1300、1400中的一个。如果优先权选择逻辑204确定当前周期中没有活动请求者,则优先权选择逻辑204可以生成与当前周期中的优先权信息相同的下一周期的优先权信息,或者优先权选择逻辑204可以为下一周期生成新的优先权信息。由于当前没有请求者等待服务,因此与下一周期的优先权信息为什么无关。例如,在一些情况下,优先权选择逻辑204可以被配置为生成下一周期的优先权信息,使得在当前周期中没有活动请求者时所有请求者被给予优先权(例如,全1的优先权掩码,例如[1 1 1 1 1 1 1 1])。这在硬件中实现可能比输出与当前周期相同的优先权信息更简单。然而,对于本领域技术人员来说显而易见的是,这仅是示例,并且优先权选择逻辑204可以被配置为当在当前周期中没有活动请求者时以另一种方式生成下一周期的优先权信息。
尽管图1的仲裁器106被示为与资源102分离的组件,但是在其他示例中,仲裁器106中的一些或全部可以形成资源102的一部分,或者可以是资源102的不可分割的。例如,在一些情况下,请求者选择逻辑202、优先权选择逻辑204和/或数据选择逻辑206可以形成资源102的一部分。
在一些情况下,可能存在共享多个资源的多个请求者。例如,图15示出了示例计算机系统1500,其包括由多个请求者1504A-1504H共享的两个资源1502A-B。在该示例中,存在编号为0和1的两个共享资源以及编号为0到7的八个请求者,然而,对于本领域技术人员来说显而易见的是,本文描述的方法和技术可以应用于其中存在共享两个或多个资源的两个或多个请求者的任何系统。在任何周期中,多个请求者1504A-H中的没有一个、一个或多于一个可以请求访问资源1502A、1502B。在此示例中,当请求者i想要请求访问资源0时,请求者将活动_0[i]信号拉高,并且当请求者i想要请求访问资源1时,请求者将活动_1[i]信号拉高。当请求者请求了访问资源时,则该请求者被认为对该资源是活动的。如上所述,可能存在与要由相关资源处理的请求相关联的数据。与请求者i相关联的数据表示为数据[i]。在某些情况下,如图15所示,在适当的时候各请求者可能只有一个数据流被转发到资源0或资源1。然而,在其他情况下,各资源的各请求者可能有一个数据流。
仲裁器系统1506在请求者1504A-H和共享资源1502A-B之间进行仲裁。具体地,在各时钟周期,仲裁器系统1506根据仲裁方案为各资源选择活动请求者,并向各资源提供识别该资源的所选择的请求者的信息(例如,所选择的请求者的ID)以及所选择的请求者的关联数据。
在许多情况下,在多个请求者和多个资源之间进行仲裁的仲裁器系统将具有执行并行和独立仲裁的多个仲裁器(各资源一个)。在这些情况下,在各周期中,各仲裁器接收该资源的优先权信息,并基于优先权信息和仲裁器实现的仲裁方案为对应的资源选择一个活动请求者。在某些情况下,仲裁者可以实施不同的仲裁方案。由于在前一周期中计算特定周期的优先权信息(例如,在周期4中计算周期5的优先权信息),所以优先权信息通常存储在存储设备或单元中,所述存储设备或单元例如为但不限于寄存器。在各仲裁器存在一组优先权信息的情况下,仲裁器系统1506将针对各资源具有一个存储设备(例如,寄存器)。
然而,如果仲裁器能够使用相同的优先权信息,则可能仅需要一个存储元件(例如,寄存器)来存储仲裁器系统1506的优先权信息。发明人识别出共同的优先权信息可以用于在请求者无法在一个周期中请求多个资源的系统中为多个资源选择适当的请求者,并且如果未授予请求,则请求者继续请求访问相同的资源,直到它被授予对该资源的访问权为止。可以在这样的系统中使用公共优先权信息,因为在这样的系统中,没有请求者将在同一周期中请求访问两个不同的资源,从而优先权信息的相关部分,即指示在当前周期中请求访问资源但未被授予对该资源的访问权的请求者的优先权的部分是独立的,因此可以通过组合各资源的优先权信息的相关部分来生成公共优先权信息集。
因此,本文描述了用于生成单个公共优先权信息集的方法和系统,其可以用于在下一周期中在多个请求者和多个资源之间进行仲裁。具体地,在本文描述的方法和系统中,通过以下方式生成公共优先权信息:根据仲裁方案(其可能特定于该资源)为各资源生成下一周期的优先权信息;基于该资源的下一周期的优先权信息为各资源生成下一周期的相关优先权信息,其中相关优先权信息是与相关请求者(在当前周期中请求访问资源但未被授予对资源的访问权的请求者)有关的优先权信息;然后为各资源组合下一周期的相关优先权信息。这是有效的,因为各资源都有不同组的相关请求者,即在当前周期中请求了访问资源但在当前周期中未被授予对资源的访问权的请求者,因此各资源的相关优先权信息不会重叠。由于仅使用一组优先权信息来在多个资源的请求者之间进行选择,因此可以减少仲裁器系统中的存储设备(例如寄存器)的数量。通常,资源越多,节省的资源就越显著。
已经表明,将几组优先权信息压缩成单组优先权信息不会增加最大可能的等待时间,并且与并行运行若干独立仲裁相比,它不会显著地改变仲裁方案。实际上,生成单个公共优先权信息集可以减小区域而不增加延迟。
现在参照图16,图16示出了示例仲裁器系统1506,其中使用单组优先权信息来在多个请求者和多个资源之间进行仲裁。在该示例中,仲裁器系统1506被配置为在共享两个资源的八个请求者之间进行仲裁,但是对于本领域技术人员来说显而易见的是,本文描述的方法和技术可以同样地应用于其中存在至少两个请求者和至少两个资源的任何系统。仲裁器系统1506包括各资源的仲裁器1602A、1602B和公共优先权选择逻辑1604。在各周期,各仲裁器1602A和1602B接收指示在该周期中哪些请求者请求了访问资源的对应的资源的活动信息,以及指示哪些请求者在该周期中具有优先权的共同优先权信息,并基于公共优先权信息、活动信息和仲裁方案选择要被授予对资源的访问权的活动请求者。仲裁者可以使用相同或不同的仲裁方案。一旦仲裁器1602A、1602B选择了对应资源的活动请求者之一,仲裁器1602A、1602B就向对应资源提供识别所选择的请求者的信息(例如,所选择的请求者的ID)以及与所选择的请求者相关联的任何相关数据(数据[RS_0]或数据[RS_1])。
仲裁器1602A、1602B中的一个或多个可以包括上述的请求者选择逻辑202和/或数据选择逻辑206。具体地,仲裁器1602A、1602B中的一个或多个可以被配置为根据上面参照图6描述的方法600来选择请求者。
公共优先权选择逻辑1604被配置为在各周期生成在下一周期中由所有仲裁器1602A、1602B使用的公共优先权信息。公共优先权选择逻辑1604可以将所生成的用于下一周期的公共优先权信息存储在可由仲裁器1602A和1602B访问的存储单元或设备(例如寄存器1606)中。公共优先权选择逻辑1604通过如下方式来生成下一周期的公共优先权信息:根据仲裁方案(其可能特定于该资源)为各资源生成下一周期的优先权信息;基于该资源的下一周期的优先权信息为各资源生成下一周期的相关优先权信息,其中资源的相关优先权信息是与该资源的相关请求者(在当前周期中请求访问资源但未被授予对资源的访问权的请求者)相关的优先权信息;然后为各资源组合下一周期的相关优先权信息。
这现在将通过示例的方式进行解释。在该示例中,有编号为0到7的八个请求者以及编号为0和1的两个共享资源,请求者0-3在一周期中请求访问资源0,请求者0在该周期中被授予对资源0的访问权,并且请求者4-7在该周期中请求访问资源1,而请求者6被授予对资源1的访问权。在此示例中,资源0的相关请求者是请求者1-3,因为它们请求访问资源0但未被授予对资源0的访问权,并且请求者4-5和7是资源1的相关请求者,因为它们请求访问资源1但未被授予对资源1的访问权。在该示例中,公共优先权选择逻辑1604根据资源0的仲裁方案确定下一周期中资源0的请求者的优先权,并根据资源1的仲裁方案确定下一周期中资源1的请求者的优先权。公共优先权选择逻辑1604然后将资源0的请求者1-3的优先权与资源1的请求者4、5和7的优先权组合以生成公共优先权信息。所有其他不相关的请求者(未请求访问任何资源或被授予对资源的访问权的那些请求者)都没有被给予优先权(例如,被设置为零)。下面参照图17描述公共优先权选择逻辑1604的示例实现方式,下面参照图18描述用于生成可以由公共优先权选择逻辑1604实现的公共优先权信息的示例方法,并且下面参照图19描述公共优先权信息的示例生成。
现在参照图17,图17示出了图16的公共优先权选择逻辑1604的示例实现方式。在该示例中,公共优先权选择逻辑1604包括用于各资源的优先权选择逻辑1702A、1702B,用于各资源的修改逻辑1704A、1704B以及一个组合逻辑块1706。各优先权选择逻辑块1702A、1702B被配置为根据仲裁方案生成对应资源的下一周期的优先权信息。优先权选择逻辑块1702A、1702B可以实现相同或不同的仲裁方案。在一些情况下,优先权选择逻辑块1702A、1702B中的一个或多个可以实现为上述优先权选择逻辑204。具体地,一个或多个优先权选择逻辑块1702A、1702B可以被配置为根据以上关于图11至图14描述的方法1100、1200、1300、1400中的任何一个来生成优先权信息。在图17所示的示例中,各优先权选择逻辑块1702A、1702B接收识别所选择的请求者的信息和公共优先权信息,并基于该信息生成关联资源的下一周期的优先权信息,然而,对于技术人员来说将是显而易见的是,这仅是示例,并且优先权选择逻辑块1702A、1702B可以接收附加信息和/或不同信息,并且/或者不同的优先权选择块可以接收不同信息。
各修改逻辑块1704A、1704B接收对应资源的下一周期的优先权信息,并生成该资源的下一周期的相关优先权信息。如上所述,相关优先权信息是与相关请求者有关的优先权信息。换句话说,修改逻辑1704A、1704B基本上剥离了与不相关请求者有关的优先权数据。在一些情况下,修改逻辑1704A、1704B可以通过将非相关请求者的优先权信息设置为零来实现此。在一些情况下,修改逻辑块1704A、1704B中的一个或多个可以被配置为通过如下来生成资源的下一周期的相关优先权信息,在由优先权选择逻辑1702A、1702B生成的该资源的下一周期的优先权信息(优先权_下一个周期_i)和如式(1)所示的当前周期的该资源的活动信息(活动_i)之间执行逐位“与”运算:
相关优先权_下一个周期_i=优先权_下一个周期_i∧活动_i (1)
组合逻辑1706接收各资源的下一周期的相关优先权信息,并且组合各资源的下一周期的相关优先权信息以生成公共优先权信息。在一些情况下,组合逻辑1706被配置为通过在如式(2)所示的各资源的下一周期的相关优先权信息之间执行逐位“或”运算来生成下一周期的公共优先权信息,其中S是所有资源的集合:
公共优先权_下一个周期=Vi∈S相关优先权_下一个周期_i (2)
现在参照图18,图18示出了可以由公共优先权选择逻辑1604实现的生成下一周期的公共优先权信息的示例方法1800。方法1800开始于框1802,其中公共优先权选择逻辑1604根据仲裁方案(其可能特定于资源)为各资源生成下一周期的优先权信息。在框1804处,公共优先权选择逻辑1604基于该资源的下一周期的优先权信息为各资源生成下一周期的相关优先权信息,其中相关优先权信息是与相关请求者(在当前周期中请求访问资源但未被授予对资源的访问权的请求者)相关的优先权信息。在框1806处,公共优先权选择逻辑1604组合各资源的下一周期的相关优先权信息。然后方法1800结束。
现在参照图19,图19示出了针对示例情形的公共优先权信息的生成,在该示例情形中存在编号和排序为0到7的八个请求者以及编号为0和1的两个资源。在这种情形下,根据图6的方法600选择在特定周期中被授予对资源的访问权的请求者(即,选择具有优先权的最低排序的活动请求者或选择最高排序的活动请求者),并且根据图11的方法1100生成资源的下一周期的优先权(即,如果选择了具有优先权的请求者,则在下一周期中,相对于所选择的请求者的所有较高排序的请求者都具有优先权,否则所有请求者在下一周期中都具有优先权),除非所选择的请求者没有优先权,则所选择的请求者在下一周期中不被给予优先权。
在第一示例周期(周期1)中,资源0的活动掩码是[1 1 1 0 0 0 0 0],其指示请求者0、1和2对资源0是活动的,资源1的活动掩码是[0 0 0 0 0 1 1 1],其指示请求者5、6和7对资源1是活动的,而周期1的公共优先权掩码为[0 0 0 0 1 1 1 1],其指示请求者4、5、6和7具有优先权(或高优先级)。根据方法600,资源0的所选择的请求者是请求者2,因为不存在对资源0具有优先权的活动请求者,并且请求者2是最高排序的活动请求者。对于资源1,请求者5是所选择的请求者,因为它是具有优先权的最低排序的活动请求者。
根据修改的方法1100,资源0的下一个优先权是[1 1 0 1 1 1 1 1],因为选择了没有优先权的请求者,因此除了所选择的请求者(请求者2)之外的所有请求者将在下一周期中具有优先权。资源1的下一个优先权是[0 0 0 0 0 0 1 1],因为选择了具有优先权的请求者,因此只有相对于所选择的请求者的较高排序请求者的那些请求者在下一周期中具有优先权。
资源0的相关请求者是请求者0和1,因为它们是请求访问资源0但未被授予对资源0的访问权的唯一请求者。因此,资源0的下一周期的相关优先权信息是[1 1 0 0 0 0 00],即所有不相关请求者的优先权被设置为零。类似地,资源1的相关请求者是请求者6和7,因为它们是请求访问资源1但未被授予对资源1的访问权的唯一请求者。因此,资源1的下一周期的相关优先权信息是[0 0 0 0 0 0 1 1],即所有不相关请求者的优先权被设置为零。
然后,下一周期的公共优先权是[1 1 0 0 0 0 1 1],即资源0和1的相关优先权信息的“或”组合。
在第二示例周期(周期2)中,资源0的活动掩码是[1 1 0 1 1 0 0 0],其指示请求者0、1、3和4对资源0是活动的,资源1的活动掩码是[0 0 1 0 0 0 1 1],其指示请求者2、6和7对资源1是活动的,而周期2的公共优先权掩码为[1 1 0 0 0 0 1 1],其指示请求者0、1、6和7具有优先权(或高优先级)。根据方法600,资源0的所选择的请求者是请求者0,因为它是具有优先权的最低排序的活动请求者。对于资源1,请求者6是所选择的请求者,因为它是具有优先权的最低排序的活动请求者。
根据修改的方法1100,资源0的下一个优先权是[0 1 1 1 1 1 1 1],因为选择了具有优先权的请求者,因此相对于所选择的请求者的所有较高排序请求者在下一个周期中具有优先权。资源1的下一个优先权是[0 0 0 0 0 0 0 1],因为选择了具有优先权的请求者,因此所有的相对于所选择的请求者的较高排序请求者的那些请求者在下一周期中都具有优先权。
资源0的相关请求者是请求者1、3和4,因为它们是请求访问资源0但未被授予访问权的唯一请求者。因此,资源0的下一周期的相关优先权信息是[0 1 0 1 1 0 0 0],即,所有非相关请求者的优先权被设置为零。类似地,资源1的相关请求者是请求者2和7,因为它们是请求访问资源1但未被授予对资源1的访问权的唯一请求者。因此,资源1的下一周期的相关优先权信息是[0 0 0 0 0 0 0 1],即所有不相关请求者的优先权被设置为零。
然后,下一周期的公共优先权是[0 1 0 1 1 0 0 1],即资源0和1的相关优先权信息的“或”组合。
图20示出了计算机系统,其中可以实现本文描述的仲裁器、仲裁器系统和/或逻辑块。计算机系统包括CPU2002、GPU2004、存储器2006和其他设备2014,例如显示器2016、扬声器2018和照相机2020。逻辑块2010(对应于本文描述的仲裁器、仲裁器系统或任何其他逻辑块)在GPU2004上实现。在其他示例中,逻辑块2010可以在CPU2002上实现。计算机系统的组件可以经由通信总线2022彼此通信。
图2、图16和图17的仲裁器、仲裁器系统和逻辑块被示为包括多个功能块。这仅是示意图,并不旨在定义这些实体的不同逻辑元件之间的严格划分。可以以任何合适的方式设置各功能块。应当理解,本文描述的由特定块形成的中间值不需要在任何点由特定块物理地生成,并且可以仅表示方便地描述由块在其输入和输出之间执行的处理的逻辑值。
本文描述的仲裁器、仲裁器系统和逻辑块可以被体现在集成电路上的硬件中。本文描述的仲裁器、仲裁器系统和逻辑块可以被配置为执行本文描述的任何相关方法。通常,上述任何功能、方法、技术或组件可以用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。本文中可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、组件、元件、单元、块或逻辑表示在处理器上执行时执行指定任务的程序代码。本文描述的算法和方法可以通过一个或多个处理器执行使处理器执行算法/方法的代码来执行。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁、光学和其他技术存储指令或其他数据并可由机器访问的其他存储器设备。
如本文中使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何类型的可执行代码,其包括用机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用诸如C、Java或OpenCL的编程语言表达的代码。可执行代码可以是,例如,任何类型的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中适当地执行、处理、解释、编译、执行时,其使得支持可执行代码的计算机系统的处理器执行代码指定的任务。
处理器、计算机或计算机系统可以是任何类型的设备、机器或专用电路,或其集合或部分,具有处理能力,使得它可以执行指令。处理器可以是任何类型的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
还旨在包括定义如本文所述的硬件配置的软件,例如HDL(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片,以执行所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理(即运行)时,其将该系统配置为制造被配置为执行本文描述的任何相关方法的仲裁器、仲裁器系统或逻辑块,或者制造包括本文描述的任何装置的仲裁器、仲裁器系统或逻辑块。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统中制造本文描述的仲裁器、仲裁器系统和/或任何逻辑块的方法。此外,可以提供集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集使得执行制造仲裁器、仲裁器系统或逻辑块的方法。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在任何级别的集成电路中制造的硬件的硬件描述语言,其包括作为寄存器传输级(RTL)代码,作为诸如Verilog或VHDL等的高级电路表示,并且作为诸如OASIS(RTM)和GDSII等的低级电路表示。逻辑上定义适合于在集成电路(例如RTL)中制造的硬件的较高级表示可以在计算机系统处理,该计算机系统被配置用于在包括定义电路元件和用于组合这些元件的规则的软件环境的情景下生成集成电路的制造定义,以生成由表示定义的集成电路的制造定义。通常情况下,软件在计算机系统上执行以便定义机器,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码,以生成该集成电路的制造定义。
现在将参照图21描述在集成电路制造系统处处理集成电路定义数据集以便配置系统制造仲裁器的示例。类似的处理可用于制造本文描述的仲裁器系统或任何逻辑块。
图21示出了集成电路(IC)制造系统2102的示例,其被配置为制造如本文的任何示例中所述的仲裁器。特别地,IC制造系统2102包括布局处理系统2104和集成电路生成系统2106。IC制造系统2102被配置为接收IC定义数据集(例如,如本文的任何示例中所述定义仲裁器),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其体现如本文任何示例中所述的仲裁器)。IC定义数据集的处理将IC制造系统2102配置为制造体现如本文任何示例中所述的仲裁器的集成电路。
布局处理系统2104被配置为接收和处理IC定义数据集以确定电路布局。从IC定义数据集中确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如,在逻辑组件(例如,“与非”、“与或”、“与”、“或”、“多路复用”和“触发”组件)方面。通过确定逻辑组件的位置信息,可以从电路的门级表示确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统2104确定了电路布局时,它可以将电路布局定义输出到IC生成系统2106。电路布局定义可以是例如电路布局描述。
如本领域中已知的,IC生成系统2106根据电路布局定义生成IC。例如,IC生成系统2106可以实现半导体器件制造工艺以生成IC,其可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩模的形式,其可以在光刻工艺中用于根据电路定义生成IC。可选地,提供给IC生成系统2106的电路布局定义可以是计算机可读代码的形式,IC生成系统2106可以使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统2102执行的不同处理可以全部在一个位置处实现,例如由一方实现。可选地,IC制造系统2102可以是分布式系统,使得一些处理可以在不同位置处执行,并且可以由不同方执行。例如,可以在不同的位置处和/或由不同方执行以下一些阶段:(i)合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置为在没有处理IC定义数据集的情况下制造仲裁器以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置处理器(例如FPGA)的配置,并且该数据集的处理可以将IC制造系统配置为生成具有所定义配置的可重新配置处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集的以上面参照图21描述的方式的集成电路制造系统的配置可以使得制造如本文所述的设备。
在一些示例中,集成电路定义数据集可以包括在数据集定义的硬件上运行的软件,或者与在数据集定义的硬件组合运行的软件。在图21所示的示例中,IC生成系统还可以由集成电路定义数据集配置,以在制造集成电路时,根据在集成电路定义数据集定义的程序代码将固件加载到该集成电路上,或者以其他方式用集成电路提供程序代码,以便与集成电路一起使用。
与已知实现方式相比,本申请中阐述的设备、装置、模块和/或系统(以及本文实现的方法)中阐述的概念的实现方式可以引起性能改善。性能改善可以包括增加计算性能、减少等待时间、增加吞吐量和/或降低功耗中的一个或多个。在制造这种设备、装置、模块和系统(例如集成电路)期间,性能改善可以与物理实现方式相抵消,从而改进了制造方法。例如,可以针对布局区域交换性能改善,从而与已知实现方式的性能相匹配但使用较少的硅。例如,这可以通过以串行方式重新使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,为了改善性能,可以交换本申请中阐述的引起设备、装置,模块和系统的物理实现方面的改善(例如减小硅面积)的概念。例如,这可以通过在预定义区域预算内制造模块的多个实例来完成。
申请人在此在一定程度上独立地公开了本文描述的每个单独的特征以及两个或更多个这样的特征的任何组合,使得这些特征或组合能够根据本领域技术人员的公知常识基于本说明书作为整体而被实现,不管这些特征或特征组合是否解决了本文所公开的任何问题。鉴于前面的描述,对于本领域技术人员来说显而易见的是,可以在本发明的范围内进行各种修改。
Claims (20)
1.一种用于在计算系统中的多个请求者和资源之间进行仲裁的仲裁器,所述多个请求者根据一个或多个标准从最低到最高被排序,所述仲裁器被配置为:
接收指示所述多个请求者中的哪个请求者在周期中请求了访问所述资源的活动信息;
接收指示所述多个请求者中的哪个请求者在所述周期中具有优先权的优先权信息;
基于所述活动信息和所述优先权信息,通过以下方式来选择所述多个请求者中的一个:
确定是否存在在所述周期中请求了访问所述资源并且在所述周期中具有优先权的至少一个请求者;
响应于确定存在在所述周期中请求了访问所述资源并且在所述周期中具有优先权的至少一个请求者,如果在所述周期中仅有一个请求者请求了访问所述资源并且在所述周期中具有优先权,则选择该请求者,如果在所述周期中有至少两个请求者请求了访问所述资源并且在所述周期中具有优先权,则选择在所述周期中请求了访问所述资源并且在所述周期中具有优先权的最低排序请求者;以及
响应于确定不存在在所述周期中请求了访问所述资源并且在所述周期中具有优先权的请求者,选择在所述周期中请求了访问所述资源的最高排序请求者;以及
输出识别所选择的请求者的信息。
2.根据权利要求1所述的仲裁器,其中,所述选择是通过二元决策树执行的。
3.根据权利要求2所述的仲裁器,其中,所述二元决策树包括多个决策节点,并且每个决策节点仅包括控制该决策节点的填充的一个逻辑门。
4.根据权利要求2所述的仲裁器,其中,所述二元决策树包括连接到一层或多层的决策节点的多个叶节点,并且所述仲裁器被配置为利用与所述多个请求者中的一个请求者相对应的信息填充每个叶节点,并且所述决策节点被配置为基于所述叶节点中的信息执行所述选择。
5.根据权利要求4所述的仲裁器,其中,每个节点被配置为填充有识别请求者的信息、指示该请求者是否在所述周期中请求了访问所述资源的信息以及指示该请求者是否在所述周期中请求了访问所述资源并在所述周期中具有优先权的信息。
6.根据权利要求4所述的仲裁器,其中,所述仲裁器被配置为利用与所述请求者相对应的信息依次地填充所述叶节点。
7.根据权利要求6所述的仲裁器,其中,每个决策节点连接到两个子节点,一个子节点填充有与较高排序请求者相对应的信息,而另一个子节点填充有与较低排序请求者相对应的信息,并且每个决策节点被配置为在所述较低排序请求者请求了访问所述资源并具有优先权或者所述较高排序请求者尚未请求访问所述资源时,填充有与所述较低排序请求者相对应的信息,并且被配置为在其他情况下填充有与所述较高排序请求者相对应的信息。
8.根据权利要求1所述的仲裁器,其中,所述周期的优先权信息基于前一周期的优先权信息。
9.根据权利要求8所述的仲裁器,其中:
如果在前一周期中选择的请求者在前一周期中具有优先权,则所述周期的优先权信息指示第一组请求者中相对于在前一周期中选择的请求者的所有较高排序请求者具有优先权;并且
如果在前一周期中选择的请求者在前一周期中没有优先权,则所述周期的优先权信息指示所述第一组请求者中的所有请求者都具有优先权。
10.根据权利要求8所述的仲裁器,其中:
如果在前一周期中选择的请求者在前一周期中具有优先权,则所述周期的优先权信息指示第一组请求者中除在前一周期中选择的请求者之外的同一组请求者在所述周期中具有与在前一周期中相同的优先权,并且
如果在前一周期中选择的请求者在前一周期中没有优先权,则所述周期的优先权信息指示第一组请求者中除在前一周期中选择的请求者之外的所有请求者都具有优先权。
11.根据权利要求8所述的仲裁器,其中:
如果在前一周期中选择的请求者在前一周期中具有优先权,则所述周期的优先权信息指示第一组请求者中除在前一周期中选择的请求者之外的同一组请求者在所述周期中具有与在前一周期中相同的优先权,并且
如果在前一周期中选择的请求者在前一周期中没有优先权,则所述周期的优先权信息指示第一组请求者中在前一周期中请求访问所述资源但不是所选择的请求者的请求者都具有优先权。
12.根据权利要求8所述的仲裁器,其中,所述周期的优先权信息包括优先权区域,并且所述优先权区域的开始相对于前一周期的优先权信息的优先权区域的开始被移位了一个请求者。
13.根据权利要求12所述的仲裁器,其中,所述周期的优先权信息的优先权区域的开始是相对于前一周期的优先权信息的优先权区域的开始的下一个最高优先权请求者。
14.根据权利要求9所述的仲裁器,其中,所述第一组请求者包括所述多个请求者中的所有请求者。
15.根据权利要求9所述的仲裁器,其中,所述第一组请求者包括所述多个请求者中的除最高排序请求者之外的所有请求者,并且所述周期的优先权信息指示所述最高排序请求者没有优先权。
16.根据权利要求1所述的仲裁器,其中,所述仲裁器被配置为将最高排序请求者视为没有优先权。
17.根据权利要求1所述的仲裁器,其中,所述仲裁器被配置为生成所述周期的优先权信息。
18.一种非暂时性计算机可读存储介质,其上存储有计算机可读程序代码,所述计算机可读程序代码在集成电路制造系统中被处理时,使得所述集成电路制造系统制造包含如权利要求1中所述的仲裁器的集成电路。
19.一种用于在计算系统中的多个请求者和共享资源之间进行仲裁的方法,所述多个请求者根据一个或多个标准从最低到最高被排序,所述方法包括:
接收指示所述多个请求者中的哪个请求者在周期中访问了所述资源的活动信息;
接收指示所述多个请求者中的哪个请求者在所述周期中具有优先权的优先权信息;
基于所述活动信息和所述优先权信息,通过以下方式来选择请求了访问所述资源的所述多个请求者中的一个请求者:
确定是否存在在所述周期中请求了访问所述资源并且在所述周期中具有优先权的至少一个请求者;
响应于确定存在在所述周期中请求了访问所述资源并且在所述周期中具有优先权的至少一个请求者,如果在所述周期中仅有一个请求者请求了访问所述资源并且在所述周期中具有优先权,则选择该请求者,如果在所述周期中有至少两个请求者请求了访问所述资源并且在所述周期中具有优先权,则选择在所述周期中请求了访问所述资源并且在所述周期中具有优先权的最低排序请求者;以及
响应于确定不存在在所述周期中请求了访问所述资源并且在所述周期中具有优先权的请求者,选择在所述周期中请求了访问所述资源的最高排序请求者;以及
输出识别所选择的请求者的信息。
20.一种非暂时性计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令在计算机系统上被执行时,使得所述计算机系统执行如权利要求19中所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1804750.6 | 2018-03-23 | ||
GB1804748.0 | 2018-03-23 | ||
GB1804748.0A GB2567027B (en) | 2018-03-23 | 2018-03-23 | Common priority information for multiple resource arbitration |
GB1804750.6A GB2568124B (en) | 2018-03-23 | 2018-03-23 | Arbitration systems and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297782A CN110297782A (zh) | 2019-10-01 |
CN110297782B true CN110297782B (zh) | 2022-07-22 |
Family
ID=65904305
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910223726.4A Active CN110297782B (zh) | 2018-03-23 | 2019-03-22 | 仲裁系统和方法 |
CN201910222612.8A Active CN110297710B (zh) | 2018-03-23 | 2019-03-22 | 用于多资源仲裁的公共优先级信息 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910222612.8A Active CN110297710B (zh) | 2018-03-23 | 2019-03-22 | 用于多资源仲裁的公共优先级信息 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10901922B2 (zh) |
EP (2) | EP3543861B1 (zh) |
CN (2) | CN110297782B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2605283B (en) * | 2020-03-20 | 2023-03-22 | Imagination Tech Ltd | Priority based arbitration |
GB2593210B (en) * | 2020-03-20 | 2022-06-01 | Imagination Tech Ltd | Priority based arbitration |
GB2593211B (en) | 2020-03-20 | 2022-06-01 | Imagination Tech Ltd | Priority based arbitration |
GB2605282B (en) * | 2020-03-20 | 2023-04-19 | Imagination Tech Ltd | Priority based arbitration |
GB2617688B (en) * | 2020-03-20 | 2024-05-08 | Imagination Tech Ltd | Priority based arbitration |
US11720404B2 (en) * | 2020-07-16 | 2023-08-08 | Samsung Electronics Co., Ltd. | Systems and methods for arbitrating access to a shared resource |
CN115378810A (zh) * | 2022-08-22 | 2022-11-22 | 深圳奇迹智慧网络有限公司 | 一种规则动态更新方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097505A1 (en) * | 2001-11-20 | 2003-05-22 | Nec Corporation | Bus arbiter and bus access arbitrating method |
US20050204085A1 (en) * | 2004-03-12 | 2005-09-15 | Matsushita Electric Industrial Co., Ltd. | Resource management device |
US7382794B1 (en) * | 2003-07-24 | 2008-06-03 | Alcatel Lucent | Parallel round-robin arbiter system and method |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4663756A (en) | 1985-08-29 | 1987-05-05 | Sperry Corporation | Multiple-use priority network |
US5068782A (en) | 1987-02-02 | 1991-11-26 | Unisys Corp. | Accessing control with predetermined priority based on a feedback arrangement |
DE19603442A1 (de) | 1996-01-31 | 1997-08-07 | Siemens Ag | Verfahren und Anordnung zum Zuteilen von Zugriffszyklen auf einen Bus eines Mikroprozessorsystems |
US6026459A (en) | 1998-02-03 | 2000-02-15 | Src Computers, Inc. | System and method for dynamic priority conflict resolution in a multi-processor computer system having shared memory resources |
JP2000040061A (ja) * | 1998-05-20 | 2000-02-08 | Oki Data Corp | バス使用権調停システム |
US6467002B1 (en) * | 1999-10-19 | 2002-10-15 | 3Com Corporation | Single cycle modified round-robin arbitration with embedded priority |
US7518993B1 (en) * | 1999-11-19 | 2009-04-14 | The United States Of America As Represented By The Secretary Of The Navy | Prioritizing resource utilization in multi-thread computing system |
US20030088722A1 (en) | 2001-11-02 | 2003-05-08 | David Price | System and method for managing priorities in a PCI bus system |
US7979615B1 (en) * | 2004-03-08 | 2011-07-12 | Pmc-Sierra Us, Inc. | Apparatus for masked arbitration between masters and requestors and method for operating the same |
US7827555B2 (en) * | 2004-09-13 | 2010-11-02 | Integrated Device Technology, Inc. | Scheduler for a multiprocessing computing system |
US7302510B2 (en) * | 2005-09-29 | 2007-11-27 | International Business Machines Corporation | Fair hierarchical arbiter |
US7447817B1 (en) * | 2006-05-09 | 2008-11-04 | Qlogic Corporation | Method and system for processing arbitration requests |
US8676976B2 (en) * | 2009-02-25 | 2014-03-18 | International Business Machines Corporation | Microprocessor with software control over allocation of shared resources among multiple virtual servers |
US8589934B2 (en) * | 2011-04-01 | 2013-11-19 | Arm Limited | Controlling priority levels of pending threads awaiting processing |
US9367498B2 (en) * | 2011-09-14 | 2016-06-14 | Panasonic Intellectual Property Management Co., Ltd. | Resource request arbitration device, resource request arbitration system, resource request arbitration method, integrated circuit, and program |
CN102752844B (zh) * | 2012-07-23 | 2014-10-08 | 重庆大学 | 一种无线传感器网络信道资源多级分配方法 |
US8949841B2 (en) * | 2012-12-27 | 2015-02-03 | Nvidia Corporation | Approach for a configurable phase-based priority scheduler |
CN104123288B (zh) * | 2013-04-24 | 2018-06-01 | 阿里巴巴集团控股有限公司 | 一种数据查询方法及装置 |
US9417923B2 (en) * | 2013-12-17 | 2016-08-16 | International Business Machines Corporation | Optimization of workload placement |
US9772959B2 (en) * | 2014-05-30 | 2017-09-26 | Apple Inc. | I/O scheduling |
US9769050B2 (en) * | 2014-12-23 | 2017-09-19 | Intel Corporation | End-to-end datacenter performance control |
-
2019
- 2019-03-22 CN CN201910223726.4A patent/CN110297782B/zh active Active
- 2019-03-22 CN CN201910222612.8A patent/CN110297710B/zh active Active
- 2019-03-22 EP EP19164571.2A patent/EP3543861B1/en active Active
- 2019-03-22 EP EP19164736.1A patent/EP3543862B1/en active Active
- 2019-03-25 US US16/362,902 patent/US10901922B2/en active Active
- 2019-03-25 US US16/362,960 patent/US12008397B2/en active Active
-
2021
- 2021-01-20 US US17/153,620 patent/US11422953B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097505A1 (en) * | 2001-11-20 | 2003-05-22 | Nec Corporation | Bus arbiter and bus access arbitrating method |
US7382794B1 (en) * | 2003-07-24 | 2008-06-03 | Alcatel Lucent | Parallel round-robin arbiter system and method |
US20050204085A1 (en) * | 2004-03-12 | 2005-09-15 | Matsushita Electric Industrial Co., Ltd. | Resource management device |
Also Published As
Publication number | Publication date |
---|---|
US10901922B2 (en) | 2021-01-26 |
US12008397B2 (en) | 2024-06-11 |
CN110297782A (zh) | 2019-10-01 |
US11422953B2 (en) | 2022-08-23 |
US20210141745A1 (en) | 2021-05-13 |
US20190294475A1 (en) | 2019-09-26 |
US20190294564A1 (en) | 2019-09-26 |
EP3543861B1 (en) | 2022-12-14 |
EP3543862A1 (en) | 2019-09-25 |
CN110297710B (zh) | 2022-05-10 |
EP3543862B1 (en) | 2021-07-28 |
EP3543861A1 (en) | 2019-09-25 |
CN110297710A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297782B (zh) | 仲裁系统和方法 | |
US10353747B2 (en) | Shared memory controller and method of using same | |
GB2567027A (en) | Common priority information for multiple resource arbitration | |
GB2568124A (en) | Arbitration systems and methods | |
JP4266619B2 (ja) | 調停回路 | |
KR100899951B1 (ko) | 캐시 메모리 버스트 싸이클 동안 버스 중재를 제어하는시스템 및 방법 | |
CN114138706B (zh) | 一种多功能仲裁器、仲裁方法、芯片以及产品 | |
US11829305B2 (en) | Priority based arbitration | |
US20230085669A1 (en) | Priority based arbitration between shared resource requestors using priority vectors and binary decision tree | |
US20240078194A1 (en) | Sorting memory address requests for parallel memory access using input address match masks | |
US7814253B2 (en) | Resource arbiter | |
US7574547B1 (en) | Ring counter based starvation free weighted priority encoded arbiter | |
US7685345B2 (en) | Apparatus and method for fairness arbitration for a shared pipeline in a large SMP computer system | |
US10949258B1 (en) | Multistage round robin arbitration in a multiuser system | |
GB2605282A (en) | Priority based arbitration | |
US20070204083A1 (en) | Bus arbitration method and computer-readable medium | |
JP2007026022A (ja) | バス調停装置及びバス調停方法 | |
GB2605283A (en) | Priority based arbitration | |
GB2617688A (en) | Priority based arbitration | |
CN115437780A (zh) | 从项目池中选择要与给定请求相关联的选定项目 | |
JPH05257873A (ja) | 優先判定方法および優先判定回路 |
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 |