CN102023890B - 一种用于设置事务优先级的数据处理装置和方法 - Google Patents
一种用于设置事务优先级的数据处理装置和方法 Download PDFInfo
- Publication number
- CN102023890B CN102023890B CN201010539273.5A CN201010539273A CN102023890B CN 102023890 B CN102023890 B CN 102023890B CN 201010539273 A CN201010539273 A CN 201010539273A CN 102023890 B CN102023890 B CN 102023890B
- Authority
- CN
- China
- Prior art keywords
- priority
- affairs
- circuit
- indication
- handling capacity
- 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
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种用于设置事务优先级的数据处理装置和方法。所述数据处理装置具有用于处理事务的共享资源,以及用于发布事务至共享资源的至少一个主设备。所述至少一个主设备提供所述事务的多个源,并且所述事务中的每一个具有与之相关联的优先级。仲裁电路被用于应用仲裁策略以从发布至共享资源的多个事务中选择事务,所述仲裁策略在执行选择时使用与所述多个事务中的每一个相关联的优先级。自适应优先电路与至少一个源相关联,该自适应优先电路监视来自相关联源的先前发布的事务的吞吐量指示数据,并且根据所述吞吐量指示数据,针对来自相关联源的每个新事务将优先级设置为多个预定优先级中的一个。
Description
技术领域
本发明涉及一种用于设置事务(transaction)优先级的数据处理装置和方法。
背景技术
众所周知,数据处理系统提供用于处理该系统中主设备所发布(issue)的事务的一个或多个资源。此类资源的例子是:一个或多个从设备,所述一个或多个从设备被提供来响应于由系统中的主设备对其发布的事务而执行操作。从设备可采用各种形式,并且一个例子是存储控制器,其用于处理与基于数据处理系统中的各种主设备发布的读写事务的相关联存储器读写访问。
通常用于处理事务的资源在多个事务的源之间共享。例如,在片上系统(SoC)中,多个主设备共享系统资源是众所周知的。无论何处存在这样的共享资源,通常在沿互连共享资源和主设备的路径都存在一个或多个仲裁点,这样的包含仲裁电路的仲裁点应用仲裁策略以便在发布至相同共享资源的多个挂起事务之间进行仲裁。因此,分配到每个主设备的共享系统资源的比例将由仲裁策略确定。单独主设备的性能继而取决于它们所获得的系统资源的份额。
存在多个已知类型的仲裁策略。比如,可以应用固定仲裁策略,但是采用这种方法时,任何特定主设备获得的系统资源的份额都取决于其他主设备的活动,其他主设备的活动性随着时间而变化。因此,此类固定仲裁策略将针对取决于系统中其他主设备活动性的任何特定主设备而执行。对于在特定时间段内执行特定任务的主设备(例如需要在帧周期内处理帧的图形数据值的图形处理单元),需要固定级别的系统资源。然而利用固定仲裁策略,不可能固定该系统资源级别,所以任一主设备被安排成接收过多的(excess)系统资源以至对整个系统不利,由此剥夺了其他主设备获得该资源的机会,或者主设备所接收的系统资源不足而不能在允许的时间内完成特定任务。在许多系统中后一种情况是不能接受的,因此,通常情形是,设置仲裁策略以在最坏的条件下也能提供对系统资源的充足访问,这意味着在正常操作条件下,某些主设备接收的系统资源多于它所需要的系统资源,由此剥夺了其他主设备提高其性能的机会。
一些已知的仲裁策略,例如加权循环仲裁策略,在主设备之间分割可用带宽,以使得所有主设备在所有操作条件下都能保证获得最小带宽。然而这样的策略必须为主设备分配比实现其最小带宽所必需的共享系统资源更大份额的共享系统资源,这将具有增大系统中其他主设备的等待时间的效应,相应地降低了那些其他主设备的性能。
索尼公司W Weber等人写的文章“A Quality-of-Service Mechanism forInterconnection Networks in System-on-Chips”1530-1591/05$20.002005IEEE,该文章描述了一种仲裁机制,用于在若干试图通过互连访问单个共享目标的发布者之间进行仲裁。所描述的解决方案将用于目标的仲裁分为两部分,即位于互连核心的仲裁将来自不同发起者的请求递送至目标,以及位于互连边缘的仲裁实施对不同发起者的带宽分配。通向目标的线程(在本文中指虚拟通道)可被指派为三种服务质量级之一,即优先级线程、带宽线程以及尽力服务(best-effort)线程。优先级线程针对短等待时间服务而被优化,带宽线程在固定抖动界限内接收吞吐量保证,以及尽力服务线程在其他线程剩余带宽时接收服务。优先级线程和带宽线程具有与之相关联的某一绝对目标带宽分配。只要优先级线程请求服务的速率低于它们的带宽分配,它们就接收绝对优先级。同样,只要带宽线程请求服务的速率低于它们的带宽分配,它们在尽力服务线程之前被提供服务。然而当优先级线程或带宽线程请求服务的速率高于它们的带宽分配时,它们降为尽力服务线程。
因此通过这种机制,如果较高优先级的线程请求服务的速率高于它们的带宽分配,则该较高优先级的线程被降级。然而当采用这种方法时,由于使用这种方案,给特定线程分配的服务质量级别高于使得这些线程能够实现其所要求的任务而绝对必需的服务质量级别,因此降低了系统中其它主设备的性能潜力,例如中央处理单元(CPU)。
因此,需要提供一种改进的技术来用于仲裁从数据处理装置内的多个源发布的事务对共享资源的访问。
发明内容
从第一个方面来看,本发明提供一种数据处理装置,包括:用于处理事务的共享资源,用于发布所述事务至所述共享资源的至少一个主设备,所述至少一个主设备提供所述事务的多个源,以及所述事务中的每一个具有与之相关联的优先级;仲裁电路,用于应用仲裁策略以从发布至所述共享资源的多个事务中选择事务,该仲裁策略在执行选择时使用与所述多个事务中的每一个相关联的优先级;以及与所述多个源中的至少一个相关联的自适应优先电路,该自适应优先电路被安排成监视来自相关联源的先前发布事务的吞吐量指示数据,以及根据所述吞吐量指示数据,针对来自相关联源的每个新事务将优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级。
根据本发明,自适应优先电路与至少一个源相关联并且接收来自该源的先前发布的事务的吞吐量指示数据。基于在将从相关联源发布新事务时可用的吞吐量指示数据,并且考虑要实现的指定目标吞吐量,于是自适应优先电路被安排成为该新事务设置优先级。特别地,自适应优先电路能够将优先级设置为多个预定优先级中的一个,以及对于每个新事务,从所述多个预定优先级中将该事务的相关联优先级设置为能实现指定目标吞吐量的最低优先级。
因此,本发明的自适应优先电路采用反馈环的方式进行操作,由于新事务的优先级设置取决于对于先前发布事务所观测的吞吐量指示数据,以及为该新事务所设置的优先级将继而影响自适应优先电路随后观测到的吞吐量,这继而将会影响后续新事务的优先级设置。
采用这种反馈机制来控制分配到来自源的每个新事务的优先级,该自适应电路能够找到实现指定目标吞吐量所必需的最低优先级,而与数据处理装置中其他事务源的活动无关。由于与自适应优先电路相关联的源所发布的事务被设置为满足该源的指定目标吞吐量所需的最低优先级,这使得系统中其他源的性能得以提高,因为与自适应电路相关联的源仅占用了满足其指定目标吞吐量所需要的共享资源的最小份额。
吞吐量指示数据可采用各种形式。然而在一个实施例中,吞吐量指示数据包括等待时间指示数据,用于指示与先前发布的事务相关联的等待时间,以及指定目标吞吐量是指定目标等待时间。通常,事务源具有带宽-等待时间特性,这样在等待时间值的范围内,随着等待时间值的减小,从设备的带宽以及由此吞吐量增加,并且相似地,随着等待时间的增加,从设备的带宽以及由此吞吐量减小。考虑到源的期望吞吐量,可以参考带宽-等待时间特性来确定目标等待时间。根据所观测到的先前发布的事务的等待时间指示数据与指定目标等待时间的比较情况,自适应优先电路于是能够改变每个新事务的优先级。
特别地,如果所观测到的先前发布的事务的等待时间平均上高于指定目标等待时间,则自适应优先电路能够提高新事务的优先级设置。这将趋于使得由该源观测到的等待时间下降,由此随着时间的流逝,这将使得自适应优先电路接收的等待时间指示数据中观测的平均等待时间减少。同样地,如果观测到的先前事务的等待时间平均上低于目标等待时间,自适应优先电路将降低每个新事务的优先级,由此随着时间的流逝,这将使得该源观测到的等待时间增加,并且因此自适应优先电路所接收的等待时间指示数据中观测到的平均等待时间增加。
通过这种方式,指定目标等待时间确保自适应优先电路将事务的优先级设置为确保相关联源的最小处理速率所必需的最低优先级,而与系统中其他业务变化情况无关。
自适应优先电路可采用各种形式。然而在一个实施例中,自适应优先电路包括:活动事务计数电路,用于从吞吐量指示数据确定进行中的事务的数量的指示;以及累加器电路,用于保持优先级控制值,所述累加器电路根据进行中的事务的数量的指示来增大优先级控制值。因此,在这种实施例中,优先级控制值由累加器电路保持,并且所取的值依赖于自累加器电路启动后对所有先前发布的事务所累加的吞吐量指示数据。
在一个实施例中,为了阻止优先级控制值随时间而未抑制地增长,还通过一种机制来周期性地降低优先级控制值。特别在一个实施例中,自适应优先电路被安排成从吞吐量指示数据检测进行中的事务何时到达预定点,并且每次检测到所述预定点时,累加器电路被安排成减小优先级控制值。预定点可采用各种形式,但是在一个实施例中预定点是事务结束点。事务结束点能以各种方式配置,但在一个实施例中,对于读事务,该点就是该读事务的第一个读数据返回至源的时间,或者对于写事务,该点就是从源输出最后一个写数据项的时间。
在检测到每一个预定点时累加器电路减小的量可以根据实施方式而改变。然而在一个实施例中,为自适应优先电路提供指示所述指定目标吞吐量的目标吞吐量指示,以及每次检测到所述预定点时,累加器电路被安排成根据所述目标吞吐量指示将优先级控制值减小一定量。通过这样的方式,当达到稳定状态时,由此观测到的先前发布的事务的吞吐量指示数据匹配指定目标吞吐量,在检测到的每个预定点之间优先级控制值的增大量将被在检测到每一个预定点时应用于优先级控制值的减小量所抵消。然而,当该吞吐量指示数据指示吞吐量开始偏离目标吞吐量时,这将会引起优先级控制值随时间增大或减小,这取决于偏离的方向。
累加器电路根据进行中事务的数量的指示增大优先级控制值的频率可根据实施方式而改变。然而在一个实施例中,在每个时钟周期内当活动事务计数电路指示存在至少一个进行中的事务时,累加器电路被安排成增大优先级控制值。
在一个特定实施例中,目标吞吐量指示提供每一事务的目标平均等待时间指示,以及在每个时钟周期内,当该活动事务计数电路指示存在至少一个进行中的事务时,累加器电路被安排成根据活动事务计数电路所指示的处于进行中的事务的数量将优先级控制值增大一定量。进一步,每次检测到所述预定点时,累加器电路被安排成根据所述每一事务的目标平均等待时间指示将优先级控制值减小一定量。这种方式具有以恒定等待时间为目标的效果。
在可替换实施例中,目标吞吐量指示提供在所述预定点的出现之间的目标平均等待时间的指示,以及在每个时钟周期内,当活动事务计数电路指示存在至少一个进行中的事务时,累加器电路被安排成将优先级控制值增大固定整数量。进一步,每次检测到所述预定点时,该累加器电路被安排成根据所述预定点的出现之间的所述目标平均等待时间将优先级控制值减小一定量。这种方式具有以恒定处理速率而不是恒定等待时间为目标的效果。
在实施例中,其中吞吐量指示数据包括等待时间指示数据,对于所述先前发布的事务中的每一个,自适应优先电路接收第一和第二定时指示作为所述等待时间指示数据。第一和第二定时指示可采用各种形式,但在一个实施例中,所述第一定时指示为事务开始指示,以及所述第二定时指示为事务结束指示。尽管触发第一和第二定时指示的条件可以是固定的,但在一个实施例中它们是可编程的。
在一个实施例中,活动事务计数电路使用事务开始指示和事务结束指示来保持处于进行中的事务的数量的记录。事务开始和事务结束指示的使用提供了一种简单有效的用来记录进行中的事务的数量的机制。
在一个实施例中,自适应优先电路进一步包括优先值确定电路,优先值确定电路针对每个新事务,根据累加器电路当前所保持的优先级控制值为该事务设置优先级。在这种实施例中,优先级控制值不直接提供用于新事务的新优先级,而是优先值确定电路对优先级控制值应用一个或多个处理操作以便产生优先级。
例如,在一个实施例中,优先值确定电路包括循环增益(loop gain)电路,所述循环增益电路用于控制优先级控制值的改变所引起的每个新事务的优先级设置的改变的范围。在一个特定实施例中,循环增益电路将优先级控制值乘以循环增益值,该增益值一般将被设置成足够高的值以确保对优先级控制值的改变具有合理的响应,而同时设置成足够低以确保稳定的操作。
在一个实施例中,优先值确定逻辑还将包括饱和电路,以确保循环增益电路所输出的值范围被约束在可与多个可用的预定优先级范围等同的范围内。
在一个实施例中,如果随着时间推移,监视到的吞吐量指示数据指示吞吐量超过了指定目标吞吐量,则累加器电路的操作使优先级控制值降到低于与所述多个预定优先级中的最低优先级相关联的值,以便使优先级控制值捕获(capture)由相关联源观测到的过多吞吐量,以及优先值确定电路包括饱和电路,以确保在这种情况下将优先级设置为所述多个预定优先级中的最低优先级。因此,在这种实施例中,尽管饱和电路确保优先级将不下降到低于所述多个预定优先级中的最低优先级,但由累加器保持的该优先级控制值被允许进一步下降。这种方式是有益的,因为其使累加器有效存储提供给相关联源的过多带宽的水平。随后当较少带宽可用时,累加器将需要一定时间使得优先级控制值升到它然后将开始使得分配到新事务的优先级增大的水平,从而有效偿还先前分配给它的过多带宽,以及使得系统中其他事务源具有更好的性能。
与自适应优先电路关联的源可采用各种形式。然而在一个实施例中相关联源执行离散处理块,每个处理块需要在指定时间内完成,以及为自适应优先电路提供指示所述指定目标吞吐量的目标吞吐量指示,所述目标吞吐量指示标识每一事务的平均目标吞吐量,如果达到平均目标吞吐量,将使得每个处理块在指定时间内执行。存在各种将执行离散处理块的源的例子,例如图形处理器、视频处理器以及音频处理器等。另一个例子,直接存储器存取(DMA)引擎也可执行这样的离散处理块。
在一个实施例中,累加器电路的操作可被允许从一个处理块运行到另一个块处理,以使得当新处理块开始时,优先级控制值的起始值将由当先前的处理块完成时所获取的最后优先级控制值给出。然而在可替换实施例中,累加器电路可被安排成在每个离散处理块之间重置。一般至少在下面的实施例中采用这样的方式,在所述实施例中由累加器电路保持的优先级控制值被允许捕获相关联源所观测到的过多的吞吐量的度量,因为偿还过多带宽的能力一般不能在离散处理块之间延伸。
累加器电路的重置有多种方式。比如在一个实施例中,累加器电路可以接收相关联源所产生的重置信号。例如考虑一个实施例,在这个实施例中相关联源是图形处理单元,所述图形处理单元可被安排成在每一帧完成时产生中断信号,以及中断信号可被用于产生重置信号至累加器电路。在可替换实施例中,在数据处理装置中执行的软件可被安排成产生这样的重置信号,比如在数据处理装置中的CPU上执行的软件。
在一个实施例中,至少一个主设备包括多个主设备,每个主设备提供所述事务的至少一个源。在一个这种实施例中,所述多个主设备中的至少一个是执行批处理操作的批处理设备,并且自适应优先电路与所述批处理设备相关联。
批处理设备可采用各种形式,例如图形处理单元、视频处理单元或音频处理单元等。在一个实施例中,在该装置中的另一个主设备是中央处理单元,并且中央处理单元没有与之相关联的自适应优先电路。而是一般情形是,中央处理单元具有与之相关联的固定优先级,该优先级高于通常与批处理设备相关联的优先级。然而,通过利用与批处理设备相关联的自适应优先电路,在为了确保实现指定目标吞吐量而需要时与由该批处理设备发布的事务相关联的优先级可增加。然而,由于自适应优先电路的操作方式,仅仅在绝对必需时才执行批处理设备中的优先级的增加,以及相应地这种方式使系统中诸如中央处理单元之类的其他主设备的性能达到最佳。
在一个实施例中,多个源由在单个主设备上执行的多个处理线程形成,以及自适应优先电路与所述处理线程中的至少一个相关联。在一个实施例中,这样的主设备可以是图形处理单元,以及多个处理线程可以包括至少顶点处理线程和像素处理线程。
在一个实施例中,多个源由在至少一个主设备上执行的不同类型的事务形成,这种不同类型的事务的例子是写事务和读事务。
在一个实施例中,目标吞吐量指示是可编程的,因此允许目标吞吐量指示变化,例如根据相关联源的活动。如特定的例子,在相关联源执行图形处理操作的情况下,需要的处理量从一帧到一帧可以是不同的,因此如果图形处理器开始处理的帧需要比先前帧明显更多的处理操作,则当处理这些计算密集的帧时,为了图形处理单元获得更多带宽,可以增大目标吞吐量。
共享资源可采用各种形式,但在一个实施例中共享资源可以采用存储控制器的形式。
在数据处理装置内的各种位置可提供仲裁电路。例如,通常通过互连结构将一个或多个共享资源与主设备耦合,以及通常将在互连结构中提供多个仲裁点。因此,在互连结构中的多个仲裁点中的每一个处可以复制这种仲裁电路使得在那些仲裁点处执行基于优先级的仲裁。
可替换地,或除此之外,共享资源本身可以包括仲裁点,因此也可在共享资源中提供仲裁电路。例如,考虑共享资源是存储控制器的实施例,存储控制器通常包括存储挂起的读和写访问的队列。可以将基于优先级的仲裁机制与该队列相关联,以便在考虑与存储在队列中的多个事务中每一个相关联的优先级的情况下来选择下一个转发到存储器的事务。
实际上在某些实施例中,在互连结构中存在仲裁电路的实例,和在一个或多个共享资源中存在仲裁电路的一个或多个实例,并且在这种实施例中,互连结构中和这些共享资源中都采用相同的仲裁策略。
从第二个方面来看,本发明提供了用于与根据本发明第一方面的数据处理装置中的事务源关联使用的自适应优先电路,该自适应优先电路被安排成监视来自相关联源的先前发布的事务的吞吐量指示数据,以及根据所述吞吐量指示数据,针对来自相关联源的每个新事务将该事务的相关联优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级。
从第三个方面来看,本发明提供了一种在数据处理装置中设置事务优先级的方法,该数据处理装置包括用于处理事务的共享资源,用于发布所述事务至所述共享资源的至少一个主设备,所述至少一个主设备提供所述事务的多个源,以及所述事务中的每一个具有与之相关联的优先级,以及应用仲裁策略以从发布至所述共享资源的多个事务中选择事务的仲裁电路,该仲裁策略在执行选择时使用与所述多个事务中的每一个相关联的优先级,对于所述多个源中的至少一个,该方法包括步骤:监视来自该源的先前发布的事务的吞吐量指示数据;以及根据所述吞吐量指示数据,针对来自该源的每个新事务,将优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级。
从第四个方面来看,本发明提供了一种数据处理装置,包括:用于处理事务的共享资源装置;用于发布所述事务至所述共享资源的至少一个主装置,该至少一个主装置提供所述事务的多个源,以及所述事务中的每一个具有与之相关联的优先级;应用仲裁策略以从发布至所述共享资源装置的多个事务中选择事务的仲裁装置,该仲裁策略在执行选择时使用与所述多个事务中的每一个相关联的优先级;以及与所述多个源中的至少一个相关联的自适应优先装置,该自适应优先装置监视来自相关联源的先前发布的事务的吞吐量指示数据,以及该自适应优先装置根据所述吞吐量指示数据,针对来自相关联源的每个新事务,将优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级。
附图说明
进一步通过举例来描述本发明,关于实施例的参考如附图所示,其中:
图1是根据一个实施例的数据处理装置框图;
图2是根据一个实施例的数据处理装置框图;
图3是根据一个实施例说明多个自适应优先电路如何可以与单个主设备关联使用的框图;
图4是根据可替换实施例说明多个自适应优先电路如何可以与单个主设备关联使用的框图;
图5是根据一个实施例说明自适应优先电路中提供的组件的图;
图6是根据一个实施例说明图5的自适应优先电路的操作的流程图;
图7A是说明由诸如图形处理单元之类的主设备观测到的带宽-等待时间特性的曲线图。
图7B说明如何给不同类型的主设备分配优先级,以及说明在必要时可以如何使用实施例的自适应优先电路来提高诸如图形处理单元之类的批处理设备的优先级。
图8是说明图5的自适应优先电路的累加器保持的累加值在自适应优先电路操作期间可以如何升高和降低的图。
图9A和9B说明在利用实施例的自适应优先电路时主设备的可用带宽在批处理操作期间如何变化。
图10A和10B根据一个实施例说明当在一段时间内允许累加值变成负数时由自适应优先电路设置的优先级可以如何随着累加值而变化。
具体实施方式
图1为一个实施例的数据处理装置的框图。在所示出的例子中,多个主设备10、20、30通过互连结构40耦合至多个从设备50、60、70。当各种主设备发布事务时,优先级关联到这些事务,其中在装置中的各个点处,在声明(assert)的多个事务之间执行仲裁时利用这些优先级。例如,互连结构40一般包括多个仲裁点45,以及在每个点处能够应用仲裁策略以执行基于优先级的仲裁。此外,一个或多个从设备本身可以包括仲裁点。例如,如果从设备370将采用存储控制器的形式,这种存储控制器一般包括能够将挂起的事务置于其中的队列75,队列中每个事务被安排成保存有其相关联的优先级的记录。仲裁器80然后能够用于根据队列中的事务条目,确定哪一个事务应该下一个发布至存储器,这种仲裁器应用基于优先级的仲裁以便确定下一个发布至存储器的事务。对于这种在从设备中执行的基于优先级的仲裁,需要将优先级信息从互连结构40传播至从设备70。然而对于任何不执行任何内部仲裁的从设备,该优先级信息无需被传播至这些从设备,因此,图1所示的例子中不需要将优先级信息从互连结构传播至从设备50和60这二者。
根据本发明实施例,自适应优先电路可以被提供给一个或多个主设备以用于确定与该主设备发布的每个事务相关联的优先级。因此,在图1所示的例子中,主设备20和30这二者具有相关联的自适应优先电路25和35,以分别用于设置这些主设备发布的每个事务的优先级。本发明实施例的自适应优先电路可与各种不同主设备关联使用,但在一个实施例中与执行批处理的主设备一起使用。一个例子是图形处理器、视频处理器或音频处理器,其中离散处理块被执行,每个处理块需要在指定时间内完成。例如,考虑图形处理器,图形数据的帧值需要在每个帧周期内被处理。在图1的示例中,假设主设备30是图形处理器、视频处理器或音频处理器。
另一个例子,该自适应优先电路可以与可能需要在分配的时间段内传输数据块的直接存储器存取(DMA)引擎20一起使用。
然而,自适应优先电路一般不与装置中的每个主设备相关联,因此例如可存在其他主设备,这些主设备采用其他方案来为其事务分配优先级。一个例子是中央处理单元(CPU),中央处理单元一般具有与之相关联的固定优先级。另一个例子是LCD控制器,该LCD控制器执行流处理以便产生输出至显示器。和CPU一样,LCD控制器一般具有固定优先级,以及一般CPU和LCD控制器这二者的优先级高于与诸如图形处理器、DMA引擎等之类的批处理设备相关联的默认优先级。
然而,从本发明实施例自适应优先电路的进一步讨论,很明显的是,自适应优先电路采用反馈机制来控制为来自相关联源的每个新事务分配的优先级,以便达到该源的指定吞吐量目标,以及通过该反馈机制找到实现吞吐量目标所必需的最低优先级,而与系统中其他事务源的活动无关。这意味着必要时,诸如主设备20和30之类的主设备的优先级可升高到以下级别,其中它们等于或大于与主设备10相关联的优先级,但是这种状态将仅仅保持实现该主设备20、30的目标吞吐量所必需的最小时间量。
这种方式确保诸如主设备20或主设备30之类的主设备占用满足其指定目标吞吐量所需要的共享资源的最小份额(例如从设备50、60、70),以及这允许提高诸如主设备10之类的其他事务源的性能。
进一步,这种方式使得系统中所有的仲裁点都采用相同的仲裁策略。因此互连结构中的每个仲裁点可应用基于优先级的仲裁,并且类似地诸如从设备70之类的相关从设备中的本地仲裁点也可应用相同的基于优先级的仲裁策略作为其默认的仲裁机制。因此用于确定从队列75获取哪一个事务的仲裁器80可以使用与互连结构中使用的相同的仲裁策略。然而应理解,考虑到与存储控制器交互的存储器的结构和容量,存储控制器也可采用附加机制来增加它的吞吐量,例如在存储器中优化不同芯片的使用等。这种优化可位于基于事务优先级的默认仲裁策略之上。
图2说明了特定示例性实施方式,其中CPU 100和图形处理单元(GPU)110共享对存储控制器135的访问,以及通过互连120连接到存储控制器。CPU或GPU发布的每个事务涉及从CPU或GPU传送地址到目标从设备,在这个例子中存储控制器135,以及在CPU或GPU和存储控制器之间传送的一个或多个数据块,数据传送的方向取决于事务是写事务还是读事务。在图2的示意图中,示出了单向地址路径和双向数据路径。然而应注意地址路径和数据路径的实际结构可根据实施方式不同而改变,特别是根据互连所采用的事务协议而改变。例如,在采用拆分(split)事务协议的情况下,例如采用由英国剑桥的ARM有限公司开发的AXI(高级扩展接口)协议,存在多个独立的地址路径和多个独立的数据路径,特别地为读事务和写事务而提供的独立路径。
如图2所示的例子,CPU 100为其事务采用固定的优先级,以及该优先级的指示和启动事务的每个地址一起发布。然而GPU 110不采用固定的优先级,而是利用自适应优先电路115为发布的每个事务声明优先级。特别如接下来的详细描述,自适应优先电路115监视地址和数据路径以便获得GPU 110先前发布的事务的吞吐量指示数据,以及根据该吞吐量指示数据确定要为从GPU 110发布的每个新事务声明的合适的优先级。
在互连120中,一般存在多个仲裁点,以及每一个仲裁点将根据CPU和GPU设置的优先级来应用仲裁策略。在图2中示意性示出一个仲裁点,即用于产生转发给存储控制器135的地址和优先级信号的最终仲裁点。如图2所示,复用器(multiplexer)130针对每个事务从CPU和GPU接收地址和优先级信息,并且复用器130由基于优先级的仲裁器125的输出进行控制,该仲裁器125针对相关事务从CPU和GPU接收相关联优先级信息作为其输入。一般,CPU的优先级将高于GPU的优先级,因此在存在来自CPU和GPU这二者的同时声明的事务时,基于优先级的仲裁器125将选择CPU作为要转发给存储控制器的事务。然而当需要满足GPU的吞吐量目标时,如果CPU和GPU同时声明事务至存储控制器135,自适应优先电路115可提升GPU的事务的优先级至某一点,在这一点上GPU的优先级高于CPU的优先级,在这一点上基于优先级的仲裁器125将在CPU事务之前输出GPU事务。
从互连120转发给存储控制器135的每个事务都位于队列140中,以及每次存储控制器发布事务至存储器时,基于优先级的仲裁器145分析队列140的当前内容以便确定队列中哪一个挂起的事务具有最高的优先级。然后具有最高优先级的事务被转发给存储器,特别地该事务的地址被转发到存储器以便使得进行相关读或写操作。这种数据处理以标准方式发生。
在一个实施例中,单个主设备可提供多个不同事务源,以及可以为每个这种源提供独立的自适应优先电路。例如图3说明了一个实施例,在该实施例中为GPU 110发布的读和写事务提供独立的自适应优先电路。在该实施例中,采用拆分事务协议,在GPU 110和互连之间的通信包括5条独立的通信通道,即用于承载写事务的地址传送的写地址(WA)通道,用于承载写事务的数据传送的写数据(W)通道,用于在写事务的结束时返回事务状态信息至主设备的写响应(B)通道(例如指示是否成功完成事务,或是否出现错误等),用于承载读事务的地址传送的读地址(RA)通道以及用于承载读事务的数据传送的读数据(R)通道。
如图3所示,自适应写优先电路160可被安排成为每一个新的写事务产生写优先级,该写优先级与写地址一起沿着路径一起传送至目标从设备,以在任何仲裁点处使用。由自适应写优先电路观测到的先前发布的写事务的吞吐量指示数据可从如图3所示的写地址通道和写数据通道取得。特别在一个实施例中,吞吐量指示数据可采用等待时间指示数据的形式,该等待时间指示数据提供事务开始指示和事务结束指示。事务开始和结束指示可以多种方式确定,但是在一个特定实施例中,来自GPU 110的写地址的发布被视为是事务的开始,来自GPU 110的最后的写数据值的发布被视为是结束指示。在可替换实施例中,事务结束指示可从写响应通道上传递的信号得到,特定事务的写响应数据一般在写数据通道上传送最后的写数据值之后的某个时间出现。
如图3所示,自适应读优先电路165可从读地址和读数据通道得到先前发布的读事务的吞吐量指示数据。在这个实施例中,其中吞吐量指示数据提供事务开始和事务结束信息,事务开始信息可由为每个事务发布的读地址确定,以及在一个实施例中,对于每个事务,事务结束信息可由返回到主设备的第一个读数据值的出现来确定。
参照拆分事务协议,在图3中说明了对写事务和读事务使用独立的自适应优先电路,该拆分事务协议具有独立的用于写事务信息和读事务信息的通道,因此不需要提供此类独立的通道。实际上,在任何系统中可为读事务和写事务提供单独的自适应优先电路,以及如果该系统为读和写事务采用共享地址总线和/或共享数据总线,则每个自适应优先电路将利用与信息一起在那些地址和数据总线上传递的相关联控制信号来确定与读事务或写事务相关的信息的存在,从而允许自适应写优先电路与写事务相关联进行操作以及自适应读优先电路与读事务相关联进行操作。
在一个实施例中,单个主设备以在该主设备上执行的多个处理线程的形式提供多个事务源,以及可以分别为那些处理线程中的每一个提供自适应优先电路。图4中说明了这样一个例子,在这个例子中GPU 110包括用于执行顶点处理操作的顶点处理器200,以及多个用于执行像素处理操作的多个像素处理器205、210。这些各种不同的处理线程中的每一个将具有与之相关联的ID值,其中电路215被提供以将各种处理线程发布的信号复用至输出路径上,以及将GPU接收的信号解复用至合适的处理线程。对于输出业务,电路215在通过输出路径将其发布之前,向数据添加合适的ID值,以及对于输入数据,将利用相关联的ID值来确定该输入数据的目的地是哪个处理线程。为了说明,示出单向地址路径及相关联的ID信号路径,以及示出双向数据路径及相关联的双向ID路径,但应注意这些路径中的每一个可由一个或多个独立的通信通道形成,这是由实施例,尤其是由所使用的事务协议决定。
如图4所示,为每一个独立的处理线程200、205、210分别提供独立的自适应优先电路225、230、235,以及基于ID的路由电路220被用于将这些独立的自适应优先电路与承载地址和数据信息的总线对接。特别地,通过使用伴随每个地址或数据项的ID值,该基于ID的路由电路220可确定哪一个自适应优先电路应该接收从地址和数据项得到的吞吐量指示数据。在一个实施例中,该基于ID的路由电路220可以向相关的自适应优先电路通知与相关联ID有关的所有地址和数据项,或者改为可以在内部执行为每一个事务检测开始和结束指示所需的处理,以及仅仅转发这些开始和结束指示到相关的自适应优先电路。对于每一个新事务,相关自适应优先电路然后将生成优先值,该优先值通过基于ID的路由电路220被路由以发布带有相关地址信号的边带信号。
在本实施例中GPU 110可以连接到包括至少一个仲裁点(例如在存储控制器中提供的仲裁点)的从设备,或更常见地通过包括有一个或多个仲裁点的互连结构连接到这种从设备。在后一种情况中,如同之前参照图1所讨论的,除了互连结构具有一个或多个仲裁点,从设备也可单独包括仲裁点。
图5是根据本发明一个实施例说明在自适应优先电路中提供的组件的图。在这个例子中,需要调控的总线主设备(bus master requiring regulation)300通过连接路径305发起事务至系统互连310,在这个例子中,假设连接路径305采用ARM公司的AXI协议。然而如同之前所讨论的,本发明实施例的技术可与任何通信协议关联使用,因此没有对使用AXI协议的要求。
自适应优先电路315被安排成监听(snoop)发生在连接路径305上的活动,以便获得先前发布的事务的吞吐量指示数据,并检测何时开始新事务并为该新事务生成优先级。
特别地,事务开始电路320检测事务的开始,作为来自于主设备300的请求,而事务结束电路325检测事务的完成。在一个实施例中,对于读事务在第一读数据返回到主设备300时,该事务结束电路325检测到事务结束,而对于写事务在从总线主设备300传输最后的写数据项时事务结束电路325检测到事务结束。
活动事务计数组件330利用这两个事件来计算来自总线主设备300的处于进行中的事务数量。在每一个时钟周期内,未完成事务的数量的该指示通过加法器350路由到累加器355,在累加器中将等于未完成事务的数量加到其当前累加器值。
进一步,标识每一事务的目标平均等待时间的目标等待时间值340被存储在目标等待时间值存储装置340中。每次在事务结束时,通过乘法器335、反向器(inverter)345以及加法器350从累加值中减去目标等待时间值。
在乘法器360处,累加器355的输出乘以编程的循环增益值,该循环增益值存储在循环增益存储装置365中以供选择循环增益,并且结果值穿过饱和(saturation)块370,在该饱和块中编程范围之外的值被饱和到该范围的限度(limit)。然后该块的输出被用于设置来自主设备的后续事务的优先级。
注意由电路320和325观测到的每个事务开始和事务结束指示之间的时间确定了每个事务的等待时间。如果观测到的先前发布的事务的平均等待时间少于存储装置340中的目标平均等待时间值,则累加器值将减小,这将降低后续事务的优先级,这样继而将增加随后观测到的平均等待时间。相反如果观测到的平均等待时间大于存储装置340中的目标平均等待值,则累加器值将增大,因此提高与后续事务相关联的优先级,这样继而将减少随后观测到的平均等待时间。
选择存储在循环增益存储装置365中的循环增益项,以确保在系统中存在等待时间的情况下,循环是稳定的。这可通过标准控制理论技术以及设置循环增益的上限来确定。下限由主设备执行的活动的持续时间来确定。例如,GPU操作图形数据帧,所以循环时间常量应小于帧周期。
饱和块370采用的饱和限度可如下设置。如果在任何点都没有来自目标从设备(例如存储控制器)的足够带宽,则系统的设计者必须确定迫切需要带宽的主设备次序。最高的优先级值由这个次序确定。进一步,如果存在来自目标从设备的过多带宽,则累加器值将到低于最低优先级。饱和限度应设置为最低优先级。
然而在一个实施例中,允许累加器进一步下降是有益的,因为允许这样的下降,累加器的值将有效地存储提供给主设备的过多带宽的水平。随后当系统可用的带宽较少时,累加器值在优先级返回到其中优先级然后将移动到最小优先级之上的点之前需要一定时间,以及在这个期间总线主设备将有效偿还之前接收的带宽,因此使得系统中其他事务具有更好的性能。然而偿还过多带宽的能力一般不能在GPU的帧之间延伸,因此在一个实施例中与累加器355相关联地提供了重置功能,以允许累加器在帧之间重置。
发布至累加器的重置信号可以多种形式提供。在一个实施例中,累加器电路355可以接收由相关联的总线主设备300产生的重置信号。例如,考虑以下实施例,在该实施例中相关联的总线主设备是图形处理单元,该图形处理单元可以被安排成在每一帧完成时产生中断信号,以及该中断信号可用于产生重置信号至该累加器电路355。在可替换实施例中,在数据处理装置的另一主设备中执行的软件可被安排成产生这样的重置信号,比如在数据处理装置中的CPU上执行的软件。
在一个实施例中,触发事务开始和事务结束指示的条件是可编程的。同样,存储在存储装置340中的目标等待时间值可以是可编程的,例如使得目标等待时间根据相关联的总线主设备300的活动而变化。
在可替换实施例中,取代在每一个时钟周期内将等于未完成事务的数量的值加到累加器值,自适应优先电路可以被安排成在每一个时钟周期内增加一固定整数,例如逻辑值1。在这种实施例中,存储在存储装置340中的目标等待时间值可被安排成提供事务结束点的出现之间的目标平均等待时间的指示,而不是在事务开始点和事务结束点之间的目标平均等待时间的指示。在这种实施例中,自适应优先电路具有以恒定处理速率而不是恒定等待时间为目标的效果。
图6是说明图5中自适应优先电路315的操作的流程图。在步骤372,确定是否开始新时钟周期,并且当开始新时钟周期时,该过程进行到步骤374,在步骤374中确定在该时钟周期内是否观测到结束事务指示。如果是,则并行执行步骤376和378。特别地,在步骤376,减小组件330保持的活动事务计数值,活动事务计数值一般减一。在步骤378,从由累加器355保持的累加器值中减去存储装置340中的目标等待时间值。
在步骤376和378之后,该过程进行到步骤380或者如果在当前时钟周期内没有检测到结束事务指示,则直接从步骤374进行到步骤380。在步骤380中,确定在当前时钟周期内是否已经观测到事务开始,如果是,则并行执行步骤382和384。特别地,在步骤382中,增大活动事务计数值,一般活动事务计数值加一。在步骤384中,基于当前的累加值给新事务分配优先级,如同之前参照图5所讨论的,对累加器的输出执行循环增益修正以及饱和操作后获得这样的优先级值。
在步骤382和384之后,该过程进行到步骤386或者如果在当前时钟周期内没有检测到事务开始指示,则直接从步骤380进行到步骤386。在步骤386中,当前事务计数值被加到累加器值,以使累加器值增加一个量,该量等于未完成事务的数量。在步骤386之后,该过程返回到步骤372并等待下一个时钟周期的开始。
图7A是说明由诸如GPU之类的批处理设备观测到的带宽-等待时间特性的曲线图。如图7A所示,当等待时间从零开始增加时,GPU的带宽最初是不受影响的。这是由于GPU能够处理多个未完成的事务,意味着GPU最初对等待时间的变化相对不敏感。然而,在某一点,等待时间的增加开始对带宽有影响,以及带宽-等待时间特性开始沿着曲线400变化。从曲线400的区域中可以看出等待时间的增加引起带宽的减小,并且同样等待时间的减小引起带宽的增加。由此可见,如果可以确定设备所需的目标带宽,则可以将该目标带宽换算成相应的目标等待时间。
如虚线410所示,读和写操作的带宽-等待时间特性可改变,特别是曲线400可能适合于读事务,独立的曲线410与写事务相关。进一步,设备一般对于读和写操作具有的不同的目标带宽,这继而将导致不同的读和写目标等待时间。这是为什么在某些实施例中为写事务和读事务分别提供独立的自适应优先电路是有益的原因。
图7B示意性地说明可与不同类型的设备相关联的优先级。在低的优先级端,优先级的范围420可与批处理设备相关联,GPU是所述批处理设备的例子。一个或多个更高优先级425然后可与流处理设备相关联,例如LCD控制器,因为诸如LCD控制器之类的流处理控制设备的操作与批处理设备的操作相比时间上更为关键(more time critical)。一个或多个更高优先级430然后可与CPU设备相关联,在一个系统中可以有多个CPU设备。最后可提供保留优先级435,并且流处理设备偶尔可被允许利用保留优先级以便获得足够的带宽,从而使流处理设备以所要求的速率产生输出数据。
根据本发明的实施例为一个或多个批处理设备提供相关联的自适应优先电路,仅当所观测到的平均等待时间大于目标等待时间时,所述自适应优先电路才进行操作以提高相关联的批处理设备的优先级,因此需要更多带宽。这可以使得批处理设备的优先级在一定时间段内提高至CPU和/或流处理设备优先级范围。然而自适应优先电路的操作使得实现指定等待时间目标所必需的最低优先级被使用,而与其他事务源的活动无关,相应地这允许系统中其他事务源的性能得以提高,由于与自适应优先电路相关联的源仅占用为了满足其指定等待时间目标所需的(一个或多个)共享资源的最小份额。
图8是示意性说明,对于读事务,累加器355保持的累加值在每一个事务开始和事务结束之间如何升高和降低的图。在出现发信号通知事务开始的地址500时,事务开始电路320产生事务开始指示515,该事务开始电路320引起活动事务计数值的增加。每一个时钟周期,活动事务计数值被加到累加器值,这使得该累加器值沿着线530上升。几个时钟周期后,当观测到第一读数据值510时,这使得事务结束电路325产生事务结束指示520。事务开始指示515和事务结束指示520之间的过去的时间段标识事务的等待时间段525。当产生事务结束指示时,从累加器值中减去等于存储于存储装置340中的目标平均等待时间值的值以使累加值下降。如果等待时间段525等于目标等待时间,则下降后的结束点将在B点。然而如果等待时间段525大于目标等待时间,则结束点将在在B点上方,如图8中A点示意性示出的那样。同样如果等待时间段525小于目标等待时间,则结束点将在B点下面,如图8中C点示意性地示出的那样。
因此,注意如果对于先前发布的事务所观测的平均等待时间大于目标平均等待时间,则累加器值的值将随着时间而增加,因而引起与后续事务相关联的优先级的增加。同样如果对于先前发布的事务所观测的平均等待时间小于目标等待时间,则累加器值将随着时间减小,因而引起与后续事务相关联的优先级的减小。
注意图8说明了一个相对简单的例子,然而实际上在任何时间点多个挂起的事务可以在进行中,因此在观测到与之前的事务之一相关联的数据之前能够发布用于多个事务的地址,这意味着在事务开始点515和事务结束点520之间,可观测到一个或多个另外的事务开始点和事务结束点。然而观测到同样的基本现象,如果观测到的事务的平均等待时间段大于目标等待时间,累加值将随着时间增加,,以及如果观测到的平均等待时间小于目标等待时间,则累加器值将随着时间减小。
图9A和9B示例性说明了在特定处理周期内GPU所观测的带宽,对于一个特定示例情况而言。特别地,图9A示出带宽随着时间如何变化,而图9B示出处理的百分比随着时间如何增加。在处理周期的结束时,必须完成100%的所需处理。处理周期一般会小于帧周期。特别地,考虑到每一帧所需的处理量是变化的,因此设定一目标带宽以使得仅仅很小比例的帧在帧周期内不能完成其处理。所以对于几乎所有的帧,该处理将在帧周期结束点前一点时间完成。
如虚线552所示,如果GPU观测到等于其目标带宽的恒定带宽,则将在处理周期结束时完成任务。如图9B所示,在这样的情况下,处理完成的百分比将从0%开始沿着虚线577稳步地增长,在处理周期结束时达到100%。
然而在图9A和9B说明的例子中,假设在帧周期的初期,GPU接收的带宽明显多于目标带宽,特别地接收的带宽由线550示出。这意味着在帧周期的初期,处理完成的百分比沿着线565而行,因此在帧周期的初期期间完成的处理明显超过预期完成的处理。在t1时间GPU突然停止接收任何带宽,并相应地不能执行任何进一步的处理。因此带宽降低到零并沿着线555而行,而完成处理的百分比沿着线570而行。在这期间,允许累加值变成负数,从而在帧周期初期存储提供给主设备的过多带宽的水平的指示。当带宽变成GPU可用时,在GPU将开始提高与来自GPU的新事务相关联的优先级之前需要一定时间。
在t2时间GPU开始获得其目标带宽,并且因此带宽在剩下的处理周期内沿着线560而行。因此,处理完成百分比开始沿着线575增加,这样在处理周期的结束时已经执行了100%的处理。
应该理解,如果累加值尚未被允许变成负数以便存储提供给主设备的过多带宽的水平的指示,新事务的优先级将更早提高,以及GPU将更早开始获得带宽,由此导致处理的完成百分比在所示处理周期结束之前就达到100%。而通过使累加器值变成负数这种机制存储过多带宽量是一种完全可接受的操作自适应优先电路的方式,这种方式确保100%完成处理所花的时间段与GPU在整个周期内接收目标带宽的情形相同。因此,这通过避免GPU占用多于绝对必需的带宽实现了系统中其他主设备的性能的最大化。
图10A和10B说明了通常优先级如何随着累加值的变化而变化,除了其中在累加值变成负数以便存储所提供的过多带宽的水平的情形。在周期600期间,由于观测到的等待时间小于目标等待时间,使得累加值下降,由此这引起优先级的减小。在某一点时,所观测到的等待时间开始大于目标等待时间,并且这引起累加值沿着路径605增加,其中优先级对应上升。在之后的某一点,所观测到的等待时间变得小于目标等待时间,并且累加值开始沿着路径610下降。最初,优先级也沿着类似的路径行进,但是一旦累加值在点615处变成负数,在时段630内优先级保持在零优先级。当累加值在点617再次开始沿着线620增加时,优先级没有马上开始升到高于零优先级,而是在零优先级上保持直到到达点627,之后它开始沿着路径625增加。
在可替换实施例中,可阻止累加器沿着线615下降,并且在这种情况下当累加值在时间点617一开始增加时,优先级就再次开始增加。然而如之前所讨论的,通过使累加值变成负数,这有效存储了提供给主设备的过多带宽的水平的指示,以及允许保持自然处理周期,而不是使批处理任务在所需完成时间之前完成。
从以上所描述的实施例中,将会理解到这些实施例提供自适应优先电路,该自适应优先电路采用反馈机制来控制分配给来自相关联源的每一个新事务的优先级,以便以该源的指定吞吐量为目标,以及通过这种机制找到实现吞吐量目标所必需的最低优先级而与系统中其他源的活动无关。因此这种机制调控对系统资源的访问,以提供与其他主设备活动无关的性能,从而允许系统资源的最优分配以最大化系统中主设备的性能和从设备的利用,例如存储控制器。
虽然在此描述了特定的实施例,但是应理解本发明不限于此,并且可以在本发明的范围内对这些实施例进行许多修改和添加。例如,下列从属权利要求的特征可以与独立权利要求的特征进行各种组合而不背离本发明的范围。
Claims (31)
1.—种数据处理装置,包括:
用于处理事务的共享资源;
至少一个主设备,用于发布所述事务至所述共享资源,所述至少一个主设备提供所述事务的多个源,并且所述事务中的每一个具有与之相关联的优先级;
仲裁电路,用于应用仲裁策略以从发布至所述共享资源的多个事务中选择事务,所述仲裁策略在执行选择时使用与所述多个事务中的每一个相关联的优先级;以及
与所述多个源中的至少一个相关联的自适应优先电路,所述自适应优先电路被安排成监视来自相关联源的先前发布的事务的吞吐量指示数据,以及根据所述吞吐量指示数据,针对来自相关联源的每个新事务,将优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级,
其中,所述自适应优先电路包括:
活动事务计数电路,用于从吞吐量指示数据确定进行中的事务的数量的指示;以及
累加器电路,用于保持优先级控制值,所述累加器电路根据进行中的事务数量的指示来增大优先级控制值,
其中,自适应优先电路被安排成从吞吐量指示数据检测进行中的事务何时达到预定点,以及每次检测到所述预定点时,累加器电路被安排成减小所述优先级控制值。
2.如权利要求1所述的数据处理装置,其中为自适应优先电路提供指示所述指定目标吞吐量的目标吞吐量指示,以及每次检测到所述预定点时,累加器电路被安排成根据所述目标吞吐量指示将优先级控制值减小一定量。
3.如权利要求1所述的数据处理装置,其中所述预定点为事务结束点。
4.如权利要求1所述的数据处理装置,其中对于每个时钟周期,当活动事务计数电路指示存在至少一个进行中的事务时,累加器电路被安排成增大优先级控制值。
5.如权利要求1所述的数据处理装置,其中为自适应优先电路提供指示所述指定目标吞吐量的目标吞吐量指示,以及每次检测到所述预定点时,累加器电路被安排成根据所述目标吞吐量指示将优先级控制值减小一定量,其中:
所述目标吞吐量指示提供每一事务的目标平均等待时间的指示;
在每个时钟周期,当活动事务计数电路指示存在至少一个进行中的事务时,累加器电路被安排成根据活动事务计数电路所指示的处于进行中的事务数量将优先级控制值增大一定量;以及
每次检测到所述预定点时,累加器电路被安排成根据所述每一事务的目标平均等待时间指示将优先级控制值减小一定量。
6.如权利要求1所述的数据处理装置,其中为自适应优先电路提供捐示所述指定目标吞吐量的目标吞吐量指示,以及每次检测到所述预定点时,累加器电路被安排成根据所述目标吞吐量指示将所述优先级控制值减小一定量,其中:
目标吞吐量指示提供所述预定点的出现之间的目标平均等待时间的指示;
在每个时钟周期,当活动事务计数电路指示存在至少一个进行中的事务时,累加器电路被安排成将优先级控制值增大固定整数量;以及
每次检测到所述预定点时,累加器电路被安排成根据所述预定点的出现之间的所述目标平均等待时间将优先级控制值减小一定量。
7.如权利要求1所述的数据处理装置,其中:
所述吞吐量指示数据包括等待时间指示数据,其指示与所述先前发布的事务相关联的等待时间,以及所述指定目标吞吐量是指定目标等待时间。
8.如权利要求7所述的数据处理装置,其中对于所述先前发布的事务中的每一个,所述自适应优先电路接收第一和第二定时指示作为所述等待时间指示数据。
9.如权利要求8所述的数据处理装置,其中所述第一定时指示为事务开始指示,以及所述第二定时指示为事务结束指示。
10.如权利要求9所述的数据处理装置,其中自适应优先电路包括:
活动事务计数电路,用于从吞吐量指示数据确定进行中的事务的数量的指示;以及
累加器电路,用于保持优先级控制值,所述累加器电路根据进行中的事务的数量的指示来增大优先级控制值,其中所述活动事务计数电路使用事务开始指示和事务结束指示来保持处于进行中的事务数量的记录。
11.如权利要求1所述的数据处理装置,其中自适应优先电路进一步包括:
优先值确定电路,所述优先值确定电路针对每个新事务,根据累加器电路当前保持的优先级控制值为该新事务设置优先级。
12.如权利要求11所述的数据处理装置,其中优先值确定电路包括循环增益电路,所述循环增益电路用于控制优先级控制值的改变所引起的每个新事务的优先级设置的改变的范围。
13.如权利要求11所述的数据处理装置,其中:
如果随着时间推移,监视到的吞吐量指示数据指示吞吐量超过了指定目标吞吐量,则累加器电路的操作使得优先级控制值降到低于与所述多个预定优先级中的最低优先级相关联的值,以便使优先级控制值捕获由相关联源观测到的过多吞吐量的度量;以及
优先值确定电路包括饱和电路,以确保在这种情况下,将优先级设置为所述多个预定优先级中的最低优先级。
14.如权利要求1所述的数据处理装置,其中:
相关联源执行离散处理块,每个处理块需要在指定时间内完成;以及
为自适应优先电路提供目标吞吐量指示以指示所述指定目标吞吐量,所述目标吞吐量指示用于标识每一事务的平均目标吞吐量,如果达到所述平均目标吞吐量,将使得每个处理块能够在指定时间内被执行。
15.如权利要求14所述的数据处理装置,其中所述相关联源执行图形处理操作,并且每个离散处理块涉及图形数据的帧。
16.如权利要求14所述的数据处理装置,其中所述自适应优先电路包括:
活动事务计数电路,用于从吞吐量指示数据确定进行中的事务的数量的指示;以及
累加器电路,用于保持优先级控制值,所述累加器电路根据进行中的事务的数量的指示来增大所述优先级控制值,其中所述累加器电路在每个离散处理块之间重置。
17.如权利要求1所述的数据处理装置,其中所述至少一个主设备包括多个主设备,每个主设备提供所述事务的至少一个源。
18.如权利要求17所述的数据处理装置,其中所述多个主设备中的至少一个是执行批处理操作的批处理设备,并且所述自适应优先电路与所述批处理设备相关联。
19.如权利要求18所述的数据处理装置,其中所述批处理设备是图形处理单元,并且所述多个主设备中的另一主设备是中央处理单元,所述中央处理单元没有与之相关联的自适应优先电路。
20.如权利要求1所述的数据处理装置,其中所述多个源由在单个主设备上执行的多个处理线程形成,并且所述自适应优先电路与所述处理线程中的至少一个相关联。
21.如权利要求20所述的数据处理装置,其中所述单个主设备是图形处理单元,并且所述多个处理线程包括至少顶点处理线程和像素处理线程。
22.如权利要求1所述的数据处理装置,其中多个源由在至少一个主设备上执行的不同类型的事务形成。
23.如权利要求22所述的数据处理装置,其中所述不同类型的事务包括写事务和读事务。
24.如权利要求8所述的数据处理装置,其中触发所述第一和第二定时指示的条件是可编程的。
25.如权利要求2所述的数据处理装置,其中所述目标吞吐量指示是可编程的。
26.如权利要求1所述的数据处理装置,其中所述共享资源是存储控制器。
27.如权利要求1所述的数据处理装置,其中在数据处理装置中提供所述仲裁电路的多个实例。
28.如权利要求27所述的数据处理装置,其中在所述共享资源中提供所述仲裁电路的一个实例。
29.—种自适应优先电路,用于与如权利要求1所述的数据处理装置中的事务的源相关联地使用,所述自适应优先电路被安排成监视来自相关联源的先前发布的事务的吞吐量指示数据,以及根据所述吞吐量指示数据,针对来自相关联源的每个新事务将该事务的相关联优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级。
30.一种在数据处理装置中设置事务优先级的方法,所述数据处理装置包括用于处理事务的共享资源,用于发布所述事务至所述共享资源的至少一个主设备,所述至少一个主设备提供所述事务的多个源,并且所述事务中的每一个具有与之相关联的优先级,以及用于应用仲裁策略以从发布至所述共享资源的多个事务中选择事务的仲裁电路,所述仲裁策略在执行选择时使用与所述多个事务中的每一个相关联的优先级,对于所述多个源中的至少一个,所述方法包括步骤:
监视来自该源的先前发布的事务的吞吐量指示数据;
从吞吐量指示数据确定进行中的事务的数量的指示;以及
保持优先级控制值,其中,优先级控制值是根据进行中的事务数量的指示来增大的;
从吞吐量指示数据检测进行中的事务何时达到预定点,以及每次检测到所述预定点时减小所述优先级控制值;以及
根据所述吞吐量指示数据,针对来自该源的每个新事务,将优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级。
31.一种数据处理装置,包括:
用于处理事务的共享资源装置;
用于发布所述事务至所述共享资源装置的至少一个主装置,所述至少一个主装置用于提供所述事务的多个源,并且所述事务中的每一个具有与之相关联的优先级;
用于应用仲裁策略以从发布至所述共享资源装置的多个事务中选择事务的仲裁装置,所述仲裁策略在执行选择时使用与所述多个事务中的每一个相关联的优先级;以及
与所述多个源中的至少一个相关联的自适应优先装置,所述自适应优先装置用于监视来自相关联源的先前发布的事务的吞吐量指示数据,并且所述自适应优先装置根据所述吞吐量指示数据,针对来自相关联源的每个新事务,将优先级设置为多个预定优先级中的一个,以便从所述多个预定优先级中设置能实现指定目标吞吐量的最低优先级,
其中,所述自适应优先装置包括:
活动事务计数装置,用于从吞吐量指示数据确定进行中的事务的数量的指示;以及
累加器装置,用于保持优先级控制值,所述累加器装置根据进行中的事务数量的指示来增大优先级控制值,
其中,自适应优先装置被安排成从吞吐量指示数据检测进行中的事务何时达到预定点,以及每次检测到所述预定点时,累加器装置被安排成减小所述优先级控制值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0916200.9A GB2473505B (en) | 2009-09-15 | 2009-09-15 | A data processing apparatus and a method for setting priority levels for transactions |
GB0916200.9 | 2009-09-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102023890A CN102023890A (zh) | 2011-04-20 |
CN102023890B true CN102023890B (zh) | 2014-11-12 |
Family
ID=41277763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010539273.5A Active CN102023890B (zh) | 2009-09-15 | 2010-09-15 | 一种用于设置事务优先级的数据处理装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8549199B2 (zh) |
JP (2) | JP2011065649A (zh) |
CN (1) | CN102023890B (zh) |
GB (1) | GB2473505B (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8250197B2 (en) * | 2008-10-28 | 2012-08-21 | Vmware, Inc. | Quality of service management |
US8260991B2 (en) * | 2009-09-15 | 2012-09-04 | Arm Limited | Data processing apparatus and method for measuring a value of a predetermined property of transactions |
US8868855B2 (en) * | 2011-02-28 | 2014-10-21 | Hewlett-Packard Development Company, L.P. | Request management system and method for dynamically managing prioritized requests |
KR101855399B1 (ko) * | 2011-03-24 | 2018-05-09 | 삼성전자주식회사 | 데이터 트래픽을 개선한 SoC 및 이의 동작 방법 |
US8583844B2 (en) * | 2011-05-31 | 2013-11-12 | Lsi Corporation | System and method for optimizing slave transaction ID width based on sparse connection in multilayer multilevel interconnect system-on-chip architecture |
US20120331034A1 (en) * | 2011-06-22 | 2012-12-27 | Alain Fawaz | Latency Probe |
US8490107B2 (en) | 2011-08-08 | 2013-07-16 | Arm Limited | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels |
US9141568B2 (en) | 2011-08-25 | 2015-09-22 | Apple Inc. | Proportional memory operation throttling |
US8706925B2 (en) | 2011-08-30 | 2014-04-22 | Apple Inc. | Accelerating memory operations blocked by ordering requirements and data not yet received |
US20130124805A1 (en) * | 2011-11-10 | 2013-05-16 | Advanced Micro Devices, Inc. | Apparatus and method for servicing latency-sensitive memory requests |
US20130205051A1 (en) * | 2012-02-07 | 2013-08-08 | Qualcomm Incorporated | Methods and Devices for Buffer Allocation |
KR101949382B1 (ko) * | 2012-04-04 | 2019-02-18 | 삼성전자주식회사 | 서비스 품질의 향상을 위한 시스템 온 칩 및 시스템 온 칩의 제어 방법 |
US9015424B2 (en) * | 2012-08-15 | 2015-04-21 | Arm Limited | Write transaction management within a memory interconnect |
US20140082307A1 (en) * | 2012-09-17 | 2014-03-20 | Mobileye Technologies Limited | System and method to arbitrate access to memory |
CN103929732B (zh) * | 2013-01-11 | 2018-07-13 | 中兴通讯股份有限公司 | 一种管理终端外设的方法及m2m网关 |
US9684633B2 (en) | 2013-01-24 | 2017-06-20 | Samsung Electronics Co., Ltd. | Adaptive service controller, system on chip and method of controlling the same |
JP6075121B2 (ja) * | 2013-03-04 | 2017-02-08 | 富士通株式会社 | ネットワーク監視システム |
GB2522057B (en) * | 2014-01-13 | 2021-02-24 | Advanced Risc Mach Ltd | A data processing system and method for handling multiple transactions |
US9530174B2 (en) * | 2014-05-30 | 2016-12-27 | Apple Inc. | Selective GPU throttling |
US9864551B2 (en) * | 2014-08-29 | 2018-01-09 | Hewlett Packard Enterprise Development Lp | Determining throughput based on system busy level |
US9864647B2 (en) * | 2014-10-23 | 2018-01-09 | Qualcom Incorporated | System and method for dynamic bandwidth throttling based on danger signals monitored from one more elements utilizing shared resources |
US10102031B2 (en) * | 2015-05-29 | 2018-10-16 | Qualcomm Incorporated | Bandwidth/resource management for multithreaded processors |
KR102416465B1 (ko) * | 2015-11-30 | 2022-07-04 | 삼성전자주식회사 | 공유 자원을 효율적으로 관리하는 데이터 처리 시스템 |
US10055809B2 (en) | 2016-05-09 | 2018-08-21 | Apple Inc. | Systems and methods for time shifting tasks |
US10073629B2 (en) | 2016-12-13 | 2018-09-11 | International Business Machines Corporation | Memory transaction prioritization |
US10956205B2 (en) * | 2017-01-03 | 2021-03-23 | Arm Limited | Data processing |
JP2018136866A (ja) * | 2017-02-23 | 2018-08-30 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
US10481944B2 (en) * | 2017-08-09 | 2019-11-19 | Xilinx, Inc. | Adaptive quality of service control circuit |
CN107908577B (zh) * | 2017-11-24 | 2021-03-26 | 中国航空工业集团公司西安航空计算技术研究所 | 一种具有仲裁功能的多通路访问存储控制器的电路 |
FR3076370B1 (fr) * | 2017-12-30 | 2020-11-27 | Bull Sas | Procede et systeme pour l'optimisation de l'ordonnancement de traitements par lot |
US10496593B1 (en) * | 2018-06-01 | 2019-12-03 | Nxp Usa, Inc. | Inter-processor communication and signaling system and method |
US10496594B1 (en) | 2018-06-01 | 2019-12-03 | Nxp Usa, Inc. | Inter-processor communication method for access latency between system-in-package (SIP) dies |
WO2020185623A1 (en) * | 2019-03-08 | 2020-09-17 | Mobileye Vision Technologies Ltd. | Priority based management of access to shared resources |
US11687244B2 (en) * | 2019-10-24 | 2023-06-27 | Micron Technology, Inc. | Quality of service for memory devices using weighted memory access operation types |
US11620053B2 (en) * | 2019-10-24 | 2023-04-04 | Micron Technology, Inc. | Quality of service for the multiple functions in memory devices |
US11237731B2 (en) | 2019-10-24 | 2022-02-01 | Micron Technology, Inc. | Quality of service for memory devices using suspend and resume of program and erase operations |
TWI760690B (zh) | 2020-02-03 | 2022-04-11 | 瑞昱半導體股份有限公司 | 一種資料傳輸系統及其資源配置方法 |
CN113259977B (zh) * | 2020-02-07 | 2024-08-30 | 瑞昱半导体股份有限公司 | 一种数据传输系统及其资源配置方法 |
CN113760472A (zh) * | 2020-06-03 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 推数任务调度的方法和装置 |
CN113141321B (zh) * | 2021-03-31 | 2023-01-13 | 航天云网数据研究院(广东)有限公司 | 一种基于边缘计算的数据传输方法及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1060166A (zh) * | 1990-09-21 | 1992-04-08 | 国际商业机器公司 | 共用每个周期的动态总线仲裁与授权 |
US6006303A (en) * | 1997-08-28 | 1999-12-21 | Oki Electric Industry Co., Inc. | Priority encoding and decoding for memory architecture |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0589034A (ja) * | 1991-09-27 | 1993-04-09 | Nec Corp | バス制御回路 |
US5805840A (en) * | 1996-03-26 | 1998-09-08 | Advanced Micro Devices, Inc. | Bus arbiter employing a transaction grading mechanism to dynamically vary arbitration priority |
JPH11345165A (ja) * | 1997-12-05 | 1999-12-14 | Texas Instr Inc <Ti> | アクセス待ち時間を減少するため優先度とバースト制御を使用するトラフィック・コントローラ |
US6363445B1 (en) * | 1998-10-15 | 2002-03-26 | Micron Technology, Inc. | Method of bus arbitration using requesting device bandwidth and priority ranking |
US7917903B2 (en) * | 2003-03-27 | 2011-03-29 | Hewlett-Packard Development Company, L.P. | Quality of service controller and method for a data storage system |
CN100593777C (zh) * | 2005-01-31 | 2010-03-10 | 松下电器产业株式会社 | 存取仲裁装置和可仲裁条件验证装置 |
US7249210B2 (en) | 2005-03-01 | 2007-07-24 | Qualcomm Incorporated | Bus access arbitration scheme |
JP2006350573A (ja) * | 2005-06-14 | 2006-12-28 | Sharp Corp | データ転送制御装置,データ転送制御方法,データ転送装置,画像形成装置,データ転送制御プログラム、および該制御プログラムを記録したコンピュータ読み取り可能な記録媒体 |
WO2008023218A1 (en) * | 2006-08-23 | 2008-02-28 | Freescale Semiconductor, Inc. | Device having priority upgrade mechanism capabilities and a method for updating priorities |
US20080077720A1 (en) * | 2006-09-27 | 2008-03-27 | Blaise Fanning | Isochronous memory access with variable channel priorities and timers |
-
2009
- 2009-09-15 GB GB0916200.9A patent/GB2473505B/en active Active
-
2010
- 2010-09-14 JP JP2010205440A patent/JP2011065649A/ja active Pending
- 2010-09-15 US US12/923,350 patent/US8549199B2/en active Active
- 2010-09-15 CN CN201010539273.5A patent/CN102023890B/zh active Active
-
2013
- 2013-08-14 US US13/966,711 patent/US9201816B2/en active Active
-
2015
- 2015-05-13 JP JP2015098127A patent/JP6054464B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1060166A (zh) * | 1990-09-21 | 1992-04-08 | 国际商业机器公司 | 共用每个周期的动态总线仲裁与授权 |
US6006303A (en) * | 1997-08-28 | 1999-12-21 | Oki Electric Industry Co., Inc. | Priority encoding and decoding for memory architecture |
Also Published As
Publication number | Publication date |
---|---|
US20140047148A1 (en) | 2014-02-13 |
JP2015187874A (ja) | 2015-10-29 |
JP6054464B2 (ja) | 2016-12-27 |
CN102023890A (zh) | 2011-04-20 |
US9201816B2 (en) | 2015-12-01 |
GB2473505A (en) | 2011-03-16 |
US20110072178A1 (en) | 2011-03-24 |
GB0916200D0 (en) | 2009-10-28 |
GB2473505B (en) | 2016-09-14 |
US8549199B2 (en) | 2013-10-01 |
JP2011065649A (ja) | 2011-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023890B (zh) | 一种用于设置事务优先级的数据处理装置和方法 | |
US10942778B2 (en) | Concurrent program execution optimization | |
US7769936B2 (en) | Data processing apparatus and method for arbitrating between messages routed over a communication channel | |
US8155134B2 (en) | System-on-chip communication manager | |
US20080065801A1 (en) | Resource management device | |
US20110145461A1 (en) | Method and device for balancing interrupt load of multicore processor | |
US7907610B2 (en) | Integrated circuit with internal communication network | |
US8725873B1 (en) | Multi-server round robin arbiter | |
US9961005B2 (en) | Bus system and computer program | |
EP2192496B1 (en) | Arbitration in multiprocessor device | |
US9606945B2 (en) | Access controller, router, access controlling method, and computer program | |
CN101395586A (zh) | 基于任务的执行阶段动态调整高速缓存分区大小的方法和设备 | |
US20090323532A1 (en) | Network system with quality of service management and associated management method | |
US20110016247A1 (en) | Multiprocessor system and multiprocessor system interrupt control method | |
JPWO2014103144A1 (ja) | インタフェース装置、およびメモリバスシステム | |
KR20170033643A (ko) | 반도체 시스템 및 그의 동작 방법 | |
US7287061B2 (en) | Data transfer apparatus and data transfer method | |
US9330038B2 (en) | Computer arbitration system, bandwidth, allocation apparatus, and method thereof | |
JP2016066278A (ja) | データ転送制御システム、データ転送制御方法、及び、データ転送制御プログラム | |
CN115114215A (zh) | 高速外围组件互连接口装置及其操作方法 | |
US20110296434A1 (en) | Techniques for Dynamically Sharing a Fabric to Facilitate Off-Chip Communication for Multiple On-Chip Units | |
US10942775B2 (en) | Modified central serialization of requests in multiprocessor systems | |
JP5239985B2 (ja) | バッファ制御システム及びバッファ制御方法 | |
JP2009205573A (ja) | バッファ制御装置およびバッファ制御方法 | |
CN107835137B (zh) | 用于交换机的输出端口调度系统及该交换机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180530 Address after: cambridge Co-patentee after: Anne science and Technology (China) Co., Ltd. Patentee after: Advanced Risc Machines Ltd. Address before: Cambridge County Patentee before: Advanced Risc Machines Ltd. |
|
TR01 | Transfer of patent right |