CN115858430B - 图形处理器的访存优化方法、设备及计算机可读介质 - Google Patents
图形处理器的访存优化方法、设备及计算机可读介质 Download PDFInfo
- Publication number
- CN115858430B CN115858430B CN202310051281.2A CN202310051281A CN115858430B CN 115858430 B CN115858430 B CN 115858430B CN 202310051281 A CN202310051281 A CN 202310051281A CN 115858430 B CN115858430 B CN 115858430B
- Authority
- CN
- China
- Prior art keywords
- data access
- module
- mask
- bus interface
- modules
- 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 40
- 238000005457 optimization Methods 0.000 title claims abstract description 20
- 230000004044 response Effects 0.000 claims description 8
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Bus Control (AREA)
Abstract
公开了图形处理器的访存优化方法、设备及计算机可读介质。一种GPU的访存优化方法,包括:针对每个轮询周期,总线接口模块在轮询周期的一时刻,接收一个或多个数据访问模块向数据缓存模块的一个或多个访存请求,轮询仲裁器对一个或多个访存请求进行仲裁,总线接口模块基于仲裁结果,允许一个或多个数据访问模块中的相应数据访问模块对数据缓存模块的资源进行访存,总线接口模块更新与数据访问模块相对应的掩码和计数器的计数,以及在掩码指示在该轮询周期中已经对全部数据访问模块进行了响应,或计数器的计数超过预定阈值的情况下,结束该轮询周期,开始下一轮询周期。该方法有助于在不同数据访问模块之间更公平地分配资源,提升管理效率。
Description
技术领域
本公开涉及访存优化技术领域,具体地,涉及一种用于图形处理器的访存优化方法、设备和计算机可读介质。
背景技术
目前,越来越多的在线服务使用图形处理器GPU(Graphics Processing Unit)资源来处理在线任务。GPU作为较为复杂的图像处理系统,存在许多内部模块。内部模块在对系统级缓存SLC(System Level Cache)进行读写时,因为SLC的输入和输出带宽有限而无法在同一时间访问SLC进行读写。另一方面,在两个或多个模块对SLC同一物理地址上的数据进行读写操作时,在先读取后写入的情况下,也存在被读取的数据因为在后续写操作中被覆盖而超时,即读到脏数据(dirtydata)的情况。
发明内容
有鉴于此,本公开提供了一种用于图形处理器的访存优化方法、设备和计算机可读介质,可以缓解、减轻或甚至消除上述问题。
根据本公开的第一方面,提供了一种图形处理器GPU的访存优化方法,应用于GPU,所述GPU包括数据访问模块、总线接口模块和数据缓存模块,所述总线接口模块包括轮询仲裁器,其特征在于,包括:针对所述轮询仲裁器的每个轮询周期:所述总线接口模块在所述轮询周期的一时刻,接收一个或多个数据访问模块向数据缓存模块的一个或多个访存请求,所述轮询仲裁器对所述一个或多个访存请求进行仲裁,所述总线接口模块基于所述仲裁结果,允许一个或多个数据访问模块中的相应数据访问模块对所述数据缓存模块的资源进行访存,以及所述总线接口模块更新与所述数据访问模块相对应的掩码和计数器的计数;在所述掩码指示在该轮询周期中已经对全部数据访问模块进行了响应,或所述计数器的计数超过预定阈值的情况下,结束该轮询周期,开始下一轮询周期。
在一些实施例中,仲裁结果是基于在所述轮询周期该时刻的上一时刻与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的。
在一些实施例中,所述与所述数据访问模块相对应的掩码包括掩码序列,所述掩码序列的每个比特与一个所述数据访问模块相对应,该比特为0标识相应数据访问模块在所述轮询周期中未被所述轮询仲裁器选中过,并且该比特为1标识相应数据访问模块在所述轮询周期中已被所述轮询仲裁器选中过。
在一些实施例中,仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的包括:在参与仲裁的一个或多个数据访问模块对应的掩码序列中比特既有0,又有1的情况下,基于所述掩码序列中对应的比特为0的数据访问模块得出仲裁结果。
在一些实施例中,一个或多个数据访问模块中的每一个具有一个索引,所述索引与所述数据访问模块的优先级相关联,所述仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的包括:在参与仲裁的一个或多个数据访问模块对应的掩码序列中比特全为0,或全为1的情况下,基于数据访问模块的索引得出仲裁结果。
在一些实施例中,索引与所述数据访问模块的优先级负相关,所述基于数据访问模块的索引得出仲裁结果包括:选择索引较小的数据访问模块作为仲裁结果。
在一些实施例中,所述访存请求包括:专用资源访问请求或不限定资源访问请求,所述专用资源包括:专用读通道资源和专用写通道资源。
在一些实施例中,仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的包括:在所述数据访问模块的访问请求为专用资源访问请求的情况下,确定专用资源的资源占用情况;响应于所有专用资源均被占用,所述数据访问模块不参与仲裁。
在一些实施例中,针对每个轮询周期,在该轮询周期的初始时刻对所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数进行初始化。在一些实施例中,对所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数进行初始化包括:将与所述数据访问模块相对应的掩码设置为所有比特均为0的序列,以及将所述计数器的计数设置为起始计数。
在一些实施例中,所述更新所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数包括:基于仲裁结果,响应于仲裁结果对应的数据访问模块上一时刻的掩码比特为0,更新掩码比特为1 ,所述计数器的计数不变;响应于掩码序列未发生变化,所述计数器的计数加1。
在一些实施例中,基于所述GPU的资源占用情况对所述预定阈值进行调整。
在一些实施例中,所述掩码为全1序列指示在该轮询周期中已经对全部数据访问模块进行了响应。
根据本公开的第二方面,提供了一种图形处理器,包括:数据访问模块,数据缓存模块,以及总线接口模块,所述总线接口模块包括轮询仲裁器,其特征在于,其被配置成:针对所述轮询仲裁器的每个轮询周期:所述总线接口模块在所述轮询周期的一时刻,接收一个或多个数据访问模块向数据缓存模块的一个或多个访存请求,所述轮询仲裁器对所述一个或多个访存请求进行仲裁,得到仲裁结果。所述总线接口模块基于所述仲裁结果,允许一个或多个数据访问模块中的相应数据访问模块对所述数据缓存模块的资源进行访存,所述总线接口模块更新与所述数据访问模块相对应的掩码和计数器的计数;以及在所述掩码指示在该轮询周期中已经对全部数据访问模块进行了响应,或所述计数器的计数超过预定阈值的情况下,结束该轮询周期,开始下一轮询周期。
根据本公开的第三方面,提供了一种用于图形处理器的访存优化设备,包括:处理器;以及存储器,可通信地连接到所述处理器且被适配成存储指令,所述指令在由所述处理器执行时使所述设备执行根据上述第一方面所述的方法的操作。
根据本公开的第四方面,提供了一种其上存储有指令的计算机可读介质,所述指令在被执行时使处理器执行根据上述第一方面所述的方法。
本公开提供的用于图形处理器GPU的访存优化方法对总线接口模块中的轮询仲裁器使用的掩码方案进行了优化。该方法在仲裁情景复杂的情况下,能有通过改进的掩码和计数器的计数阈值提高了在请求拥挤时的系统稳定性,确保能够满足高带宽数据访问模块的需要,改进了其他数据访问模块之间利用访问总线资源的公平性。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示例性示出了内存管理架构的示意图;
图2示意性示出了根据本公开实施例的用于图形处理器GPU的访存优化方法的流程图;
图3示意性示出了根据本公开实施例的一个示例;
图4示意性示出了根据本公开实施例的图形处理器;
图5示意性地示出了根据本公开实施例的用于图形处理器GPU的访存优化设备的框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的计数方案进行清楚、完整地描述。应理解,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示例性示出了内存管理架构100的示意图。如图1所示,内存管理架构100包括数据访问模块101,总线接口模块102和系统级缓存模块103。系统级缓存模块103的带宽有限,无法对多个数据访问模块101在同一时刻访问进行处理。此外,在两个或多个数据访问模块101对系统级缓存模块103同一物理地址上的数据进行读写操作时,读写的先后顺序也非常重要。在对该物理地址先进行读操作,后进行写操作的情况下,所读取的数据在写操作时随即被覆盖,因此所读取的数据很快成为超时失效的脏数据。为解决上述问题,在数据访问模块101与系统级缓存模块103之间加入了总线接口模块102。总线接口模块102用于控制数据访问模块101对系统级缓存模块103的访问先后顺序,限制访问带宽。在内存管理架构100中,总线接口模块102被配置成用于对其他模块访问系统级缓存模块103的时序进行管理。总线接口模块102还被配置成对系统级缓存模块103返回数据访问模块101的数据进行缓存,并且对这些数据进行排序。总线接口模块102能过通过其包含的仲裁器对其他数据访问模块101访问系统级缓存模块103的资源进行调度。在图1中,仲裁器示意性示出为轮询仲裁器(Round Robin)104,如本领域技术人员所理解的,其也可以是定先仲裁器等其他类型的仲裁器。
在相关技术中,仲裁器中的定先仲裁器指的是根据系统要求对所有数据访问模块101的优先级进行从高到低的排序。在具有不同优先级的数据访问模块101同时举手时,定先仲裁器根据可用资源数量优先选择优先级较高的数据访问模块101。例如,假设总线接口模块102上具有四个数据访问模块101,分别具有索引0,1,2,3,并且索引为0~3的数据访问模块的优先级依次递减。则具有0号数据访问模块时,仲裁器无法选择1,2,3号数据访问模块,具有1号数据访问模块时,仲裁器无法选择2,3号数据访问模块。
另一方面,轮询仲裁器将全部数据访问模块101指定为均等公平的优先级,在一个轮询周期内依序访问总线资源。对于在一个轮次轮询中已经获得过总线资源的数据访问模块,在本轮轮询中再次举手申请访问总线资源时,响应于同一时刻有其他数据访问模块申请总线资源,轮询仲裁器会优先将优先级分配给在本轮轮询中没有获得过系统资源的数据访问模块101。响应于同一时刻不存在其他数据访问模块101举手,而仅有在本次轮询中已被选择过的数据访问模块101,则可以再次依次选择各个数据访存模块。这是通过生成用于对访问系统资源进行限制的掩码(mask)来实现的。掩码中包含与各个数据访问模块相对应的比特,通过将已经访问过系统资源的数据访问模块暂时屏蔽,来基于数据访问模块的举手情况进行选择。在一个示例中,在4个数据访问模块同时举手时,总线接口模块102依次选择0,1,2,3号数据访问模块,在四次仲裁中使用的掩码分别是0000,0001,0011和0111。在第四次仲裁选择3号数据访问模块之后,对掩码进行重置,使其回到初始状态0000。在掩码中0比特代表相应数据访问模块被允许参加本轮仲裁,1则表示屏蔽相应数据访问模块的请求。如本领域技术人员所理解的,数据访问模块的数量不限于4个,可以是任意合适数量。
然而,因为数据缓存模块对读请求和写请求的处理效率以及容限不同,存在不同数据访问模块之间分配不均匀的情况。GPU中存在大量模块,数据量大,为了避免写与读操作之间相互拥塞造成性能降低,总线接口模块通常对读和写进行分离处理。为提高效率,GPU允许数据访问模块在没有准备好全部写请求时,可以预先向数据缓存模块发送写请求。这种情形下的写请求被称为outstanding写请求。然而,因为总线接口模块下游的数据缓存模块处理outstanding写请求的能力有限,过多的outstanding写请求造成暂存了过多未完成的请求。在较多请求同时向总线接口模块发出请求时,总线资源紧张。特别地,在读或写中的一种资源耗尽时,上述轮询机制会造成更大的影响。下面以4个数据访问模块为例,说明不公平轮询的情况。
总线接口模块上有四个数据访问模块持续的同时举手,其索引(arb index)分别为0,1,2,3 ,其中0号数据访问模块一直发送写请求,而1,2,3号数据访问模块一直发送读请求。假设在某一轮仲裁中,总线接口模块选择的序列依次是0,1,2,但资源分配到2号数据访问模块时读通道资源耗尽,写通道尚有可用资源。即,接下来总线接口模块只能选取发起写请求的数据访问模块,直到有读通道资源被释放。下一时刻Tn+1,总线接口模块检测到0号数据访问模块发起的恰好是写请求,而未被仲裁到的3号数据访问模块发起的是读请求,则依据轮询仲裁原理,总线接口模块将会选择0号数据访问模块并刷新掩码为0001。若在Tn+2时刻,总线接口模块检测到读通道资源被释放,且1号、2号、3号数据访问模块发起的都是读请求,则总线接口模块会在1,2,3三个数据访问模块中选择1号。若选择1号数据访问模块后,读通道资源再次被耗尽,总线接口模块只好再次选择发起写请求的0号数据访问模块。最坏情况下,总线接口模块将会在0号和1号数据访问模块之间轮询,而3号数据访问模块将会非常难以被轮询到。也就是说,对于目前GPU内使用的轮询仲裁器,在总线接口模块内资源有限的不理想状态下,索引序号较大的数据访问模块难以被轮询到。
图2示意性示出了根据本公开的图形处理器GPU的访存优化方法200的流程图。方法200对当前轮询仲裁器生成掩码的机制进行了优化,只将当前数据访问模块对应位置的索引在掩码中对应的比特变为1,而不是每次仲裁出请求后立即生成一个屏蔽当前数据访问模块以及更小索引的数据访问模块的掩码。而当所有的数据访问模块都轮询过一次后,即检测到下一循环中的掩码的各个比特为全1序列时,自动替换掩码为全0序列。另一方面,GPU内部并非所有数据访问模块都会在同一时间段集中举手访问总线资源,若仅在掩码的各个比特为全1序列时开启下一次轮询会造成掩码重置频率过低,也会影响轮询仲裁的公平性,因此需要在总线接口模块内加一个计数器,当掩码全为0时,计数器重置回0;随后,每输出一次重复的仲裁结果,计数器加一,当输出未重复的仲裁结果时,计数器清0。依据实际总线数据访问模块数量以及访问SLC频率设计计数器的刷新阈值,当计数器自增到刷新阈值时,对掩码强制清0。
具体地,在仲裁器为轮询仲裁器的情况下,针对每个轮询周期,在该轮询周期的初始时刻T0对所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数进行初始化,并且:
在步骤S201中,所述总线接口模块在所述轮询周期的一时刻,接收一个或多个数据访问模块向数据缓存模块的一个或多个访存请求。具体的,总线接口模块接收一个或多个数据访问模块向数据缓存模块的一个或多个读取资源的请求和/或写入资源的请求。
在步骤S202中,轮询仲裁器对所述一个或多个访存请求进行仲裁。在具有的数据访问模块中选择索引最小的作为本轮仲裁结果。
与所述数据访问模块相对应的掩码包括掩码序列,所述掩码序列的每个比特与一个所述数据访问模块相对应,该比特为0标识相应数据访问模块在所述轮询周期中未被所述轮询仲裁器选中过,并且该比特为1标识相应数据访问模块在所述轮询周期中已被所述轮询仲裁器选中过。所述仲裁结果是基于在所述轮询周期该时刻的上一时刻与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的。具体地,包括下述场景:场景1:在参与仲裁的一个或多个数据访问模块对应的掩码序列中比特既有0,又有1的情况下,基于所述掩码序列中对应的比特为0的数据访问模块得出仲裁结果。场景2:所述一个或多个数据访问模块中的每一个具有一个索引,所述索引与所述数据访问模块的优先级相关联,在参与仲裁的一个或多个数据访问模块对应的掩码序列中比特全为0,或全为1的情况下,基于数据访问模块的索引得出仲裁结果。在场景2中,具体地,所述索引与所述数据访问模块的优先级负相关,所述基于数据访问模块的索引得出仲裁结果包括:选择索引较小的数据访问模块作为仲裁结果。
在一个示例中,对数据访问模块的读写访存进行区分。访存请求包括:专用资源访问请求或不限定资源访问请求,所述专用资源包括:专用读通道资源和专用写通道资源。在另一个示例中,响应于读和/或写中的一种资源用尽,仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的包括:在所述数据访问模块的访问请求为专用资源访问请求的情况下,确定专用资源的资源占用情况;响应于所有专用资源均被占用,所述数据访问模块不参与仲裁。
在步骤S203中,总线接口模块基于所述仲裁结果,允许一个或多个数据访问模块中的相应数据访问模块对所述数据缓存模块的资源进行访存。
在步骤S204中,总线接口模块更新与所述数据访问模块相对应的掩码和计数器的计数。在初始化时,将每个数据访问模块相对应的掩码的所有比特设置为0,以及将所述计数器的计数设置为起始计数。所述更新所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数包括:基于仲裁结果,响应于仲裁结果对应的数据访问模块上一时刻的掩码比特为0,更新掩码比特为1,所述计数器的计数不变;响应于掩码序列未发生变化,所述计数器的计数加1。
在步骤S205中,在所述掩码指示在该轮询周期中已经对全部数据访问模块进行了响应,或所述计数器的计数超过预定阈值的情况下,结束该轮询周期,开始下一轮询周期。
具体地,设置所述计数器的预定阈值,在所述计数器的计数超过所述预定阈值时,结束该轮询周期,开始下一轮询周期。在一个示例中,可以基于所述GPU的资源占用情况对所述预定阈值进行调整。在另一实施例中,在所述掩码的每个比特均为1时,指示在该轮询周期中已经对全部数据访问模块进行了响应。
方法200通过改进轮询仲裁器生成掩码的方案,降低了在请求拥挤的状态下稳定性失控概率。采用优化方案后,可以确保满足高带宽数据访问模块需求外,能个给其他数据访问模块之间的总线资源更为公平。
图3示意性示出了应用本公开方法200的一个示例。这里将数据访问模块表示为Datamaster。图3中虚线高电平表示写操作,实线高电平表示读操作。以假定当前有6个数据访存模块需要通过总线接口模块访问SLC,其读写配置如下:
Datamaster0 | 可读可写,读操作无需总线接口模块提供资源排序 |
Datamaster1 | 只读,读操作无需总线接口模块提供资源排序 |
Datamaster2 | 只写 |
Datamaster3 | 只读,读操作需要总线接口模块提供资源排序 |
Datamaster4 | 可读可写,读操作需要总线接口模块提供资源排序 |
Datamaster5 | 可读可写,读操作需要总线接口模块提供资源排序 |
表1 Datamaster的读写配置。
假定设计的仲裁器轮询阈值为4,即在掩码不变后,计数器每计数4次需要重置一次掩码。
下面的波形展示了计数器、掩码刷新以及仲裁的机制,该轮询仲裁器每个时刻仲裁一次,T0时刻发生读通道资源耗尽,T8时刻发生写通道资源耗尽。红色信号表示当前时刻发送的是写请求,蓝色信号表示当前时刻发送的是读请求。表格内逐行展示了当前时刻仲裁器选择的数据访存模块,计数器计数结果以及仲裁后掩码的值。
数据访存模块 | 计数器 | 掩码 | |
T0 | 3 | 0 | 001111 |
T1 | 0 | 1 | 001111 |
T2 | 5 | 0 | 101111 |
T3 | 1 | 1 | 101111 |
T4 | 0 | 2 | 101111 |
T5 | 1 | 3 | 101111 |
T6 | 2 | 4 | 000000 |
T7 | 3 | 0 | 001000 |
T8 | 5 | 0 | 101000 |
T9 | N/A | 0 | 101000 |
T10 | 3 | 1 | 101000 |
表2 总线的轮询波形图。
结合波形图和表格可以看到:
T0时刻仲裁器允许数据访存模块3访问SLC,并分配总线接口模块内读通道资源给它,随后发生了读通道资源耗尽。
在T1时刻,共有0,1,5三个数据访存模块举手发起读请求,但由于总线接口模块内没有足够的读通道资源提供排序,因此尽管在这一轮仲裁中,5号数据访存模块尚未被仲裁过,但因为不符合参与仲裁的条件,举手请求被忽略。而0和1号数据访存模块虽然发送的也是读请求,但无需总线接口模块为其提供额外资源,因此仲裁器将会在0和1号中进行选择。由于仲裁器总会选择序号更小的数据访存模块,因此T1时刻选择了0号数据访存模块,此时掩码不更新,计数器加一。
T2时刻,读通道资源被释放,此时总线接口模块内参与举手的有1,2,3,5号数据访存模块,由于在本轮仲裁中5号数据访存模块尚未被选择过,因此仲裁器选择5号,掩码刷新为101111,重置计数器。
T3时刻,仲裁器上有1,2,3号数据访存模块举手申请访问SLC,由于三个数据访存模块在本轮均已参与过仲裁,仲裁器从中选择序号更小1号数据访存模块,掩码不更新,计数器加一,当前计数器为1。
T4时刻,仲裁器上有0,2,3号数据访存模块举手申请访问SLC,由于三个数据访存模块在本轮均已参与过仲裁,仲裁器从中选择序号更小0号数据访存模块,掩码不更新,计数器加一,当前计数器为2。
T5时刻,1,2,3号数据访存模块举手,仲裁器选择1号数据访存模块,掩码不更新,计数器加1,当前计数器为3。
T6时刻,2,3号数据访存模块举手,仲裁器选择2号,掩码不更新,计数器加1,此时为4,掩码被重置为000000。
T7时刻,3,5号数据访存模块举手,仲裁器选择3号,掩码更新为001000。
T8时刻,仅有5号数据访存模块举手,仲裁器选择5号,掩码更新为101000,随后发生写通道资源耗尽,接下来总线接口模块将不再接受写请求。
T9时刻,0,2号数据访存模块举手,但由于两者都是写请求,因此这一轮仲裁器不进行仲裁,掩码不变,但计数器不递增。
T10时刻,0,2,3号数据访存模块举手,由于依然没有写通道资源的释放,0,2号发送的写请求继续被忽略,仲裁器选择发送读请求的3号数据访存模块,掩码不更新,计数器递增1。
本公开提供的用于图形处理器GPU的访存优化方法对总线接口模块中的轮询仲裁器使用的掩码方案进行了优化。该方法在仲裁情景复杂的情况下,能有通过改进的掩码和计数器的计数阈值提高了在请求拥挤时的系统稳定性,确保能够满足高带宽数据访问模块的需要,改进了其他数据访问模块之间利用访问总线资源的公平性。
图4示意性示出了根据本公开实施例的图形处理器400。图形处理器400包括数据访问模块401,数据缓存模块402和总线接口模块403。总线接口模块,其被配置成:针对所述轮询仲裁器404的每个轮询周期:所述总线接口模块在所述轮询周期的一时刻,接收一个或多个数据访问模块向数据缓存模块的一个或多个访存请求,所述轮询仲裁器对所述一个或多个访存请求进行仲裁得到仲裁结果,所述总线接口模块基于所述仲裁结果,允许一个或多个数据访问模块中的相应数据访问模块对所述数据缓存模块的资源进行访存,以及所述总线接口模块更新与所述数据访问模块相对应的掩码和计数器的计数;其中所述仲裁结果是基于在所述轮询周期该时刻的上一时刻与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的。
图5示意性地示出了根据本公开实施例的用于图形处理器GPU的访存优化的设备500的框图。
参考图5,用于图形处理器GPU的访存优化的设备500可以至少包括处理器501、存储器502、接口503和通信介质504。处理器501、存储器502和接口503可以经由通信介质504而彼此通信耦合。
处理器501可以包括一个或多个处理单元。处理单元可以是物理设备或制品,其包括从计算机可读介质(诸如,存储器502)读取数据和指令并选择性地执行指令的一个或多个集成电路。在各种实施例中,处理器501可以以各种方式实现。作为示例,处理器501可以被实现为一个或多个处理核。作为另一示例,处理器501可以包括一个或多个分离的微处理器。在又一示例中,处理器501可以包括提供特定功能的专用集成电路(ASIC)。在再一个示例中,处理器501可以通过使用ASIC和/或通过执行计算机可执行指令来提供特定功能。
存储器502可以包括能够存储数据和/或计算机可执行指令的一个或多个计算机可使用或计算机可读存储介质。应当理解,优选地,存储介质可以是非瞬变存储介质。
接口503可以是使用于图形处理器GPU的访存优化的设备500能够向外部设备发送数据或从外部设备接收数据的设备或制品。
通信介质504可以促进处理器501、存储器502和接口503之间的通信。通信介质504可以以各种方式实现。例如,通信介质504可以包括外围组件互连(PCI)总线、PCI Express总线,加速图形端口(AGP)总线、串行高级技术附件(ATA)互连,并行ATA互连、光纤通道互连、USB总线、小型计算系统接口(SCSI)接口或其他类型的通信介质。
在图5的示例中,存储在存储器502中的指令可以包括在由处理器501执行时使用于图形处理器GPU的访存优化的设备500实现关于图2描述的方法的指令。
本公开的实施例可以是制品,其中非瞬变机器可读介质(诸如微电子存储器)上存储有对一个或多个信号处理组件(这里一般称为“处理器”)进行编程以执行上述操作的指令(例如,计算机代码)。在其他实施例中,这些操作中的一些可能由包含硬连线逻辑的特定硬件组件(例如,专用数字滤波器块和状态机)来执行。可替换地,这些操作可能由经编程的信号处理组件和固定硬连线电路组件的任何组合来执行。
应当认识到,为了清楚起见,在分离的实施例的上下文中描述的本公开的某些特征还可以在单个实施例中以组合的方式提供。相反,为了简便起见,在单个实施例的上下文中描述的本公开的各种特征还可以分离地或以任何适当的子组合或在本公开的任何其他实施例中适当地提供。不应将在各种实施例的上下文中描述的某些特征视为那些实施例的必要特征,除非该实施例在没有那些元素的情况下无效。
在以上详细描述中,已经参考本公开的特定示例性实施例描述了本公开的实施例。很明显,在不脱离所附权利要求中阐述的本公开的精神和范围的情况下,可以对本公开的实施例进行各种修改。因此,说明书和附图应被视为说明性的而非限制性的。
在整个说明书中,已经通过流程图呈现了本公开的一些实施例。应当理解,这些流程图中描述的操作的顺序仅用于图示目的,而不意图作为对本公开的限制。本领域技术人员将认识到,在不脱离所附权利要求中阐述的本公开的精神和范围的情况下,可以做出流程图的变型。
Claims (15)
1.一种图形处理器GPU的访存优化方法,所述GPU包括数据访问模块、总线接口模块和数据缓存模块,所述总线接口模块包括轮询仲裁器,其特征在于,包括:
针对所述轮询仲裁器的每个轮询周期:
所述总线接口模块在所述轮询周期的一时刻,接收一个或多个数据访问模块向所述数据缓存模块的一个或多个访存请求,
所述轮询仲裁器对所述一个或多个访存请求进行仲裁,得到仲裁结果,所述仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的,
所述总线接口模块基于所述仲裁结果,允许所述一个或多个数据访问模块中的相应数据访问模块对所述数据缓存模块的资源进行访存,
所述总线接口模块更新与所述数据访问模块相对应的掩码和计数器的计数,所述与所述数据访问模块相对应的掩码包括掩码序列,所述掩码序列的每个比特与所述一个或多个数据访问模块中的一个相对应,以及
在所述掩码指示在该轮询周期中已经对全部数据访问模块进行了响应,或所述计数器的计数超过预定阈值的情况下,结束该轮询周期,开始下一轮询周期。
2.根据权利要求1所述的方法,其特征在于,对于掩码序列的每个比特,该比特为0标识相应数据访问模块在所述轮询周期中未被所述轮询仲裁器选中过,并且该比特为1标识相应数据访问模块在所述轮询周期中已被所述轮询仲裁器选中过。
3.根据权利要求1所述的方法,其特征在于,所述仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的包括:
在参与仲裁的一个或多个数据访问模块对应的掩码序列中比特既有0,又有1的情况下,基于所述掩码序列中对应的比特为0的数据访问模块得出仲裁结果。
4.根据权利要求2所述的方法,其特征在于,所述一个或多个数据访问模块中的每一个具有一个索引,所述索引与所述数据访问模块的优先级相关联,所述仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的包括:
在参与仲裁的一个或多个数据访问模块对应的掩码序列中比特全为0,或全为1的情况下,基于数据访问模块的索引得出仲裁结果。
5.根据权利要求4所述的方法,其特征在于,所述索引与所述数据访问模块的优先级负相关,所述基于数据访问模块的索引得出仲裁结果包括:选择索引小的数据访问模块作为仲裁结果。
6.根据权利要求1所述的方法,其特征在于,所述访存请求包括:
专用资源访问请求或不限定资源访问请求,所述专用资源包括:专用读通道资源和专用写通道资源。
7.根据权利要求6所述的方法,其特征在于,所述仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及所述GPU的资源占用情况得出的包括:
在所述数据访问模块的访问请求为专用资源访问请求的情况下,确定专用资源的资源占用情况;
响应于所有专用资源均被占用,所述数据访问模块不参与仲裁。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对每个轮询周期,在该轮询周期的初始时刻对所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数进行初始化。
9.根据权利要求5所述的方法,其特征在于,对所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数进行初始化包括:
将与所述数据访问模块相对应的掩码设置为所有比特均为0的序列,以及将所述计数器的计数设置为起始计数。
10.根据权利要求2所述的方法,其特征在于,所述更新所述总线接口模块中与所述数据访问模块相对应的掩码和计数器的计数包括:
基于仲裁结果,响应于仲裁结果对应的数据访问模块上一时刻的掩码比特为0,更新掩码比特为1 ,所述计数器的计数不变;
响应于掩码序列未发生变化,所述计数器的计数加1。
11.根据权利要求1所述的方法,其特征在于,基于所述GPU的资源占用情况对所述预定阈值进行调整。
12.根据权利要求1所述的方法,其特征在于:
所述掩码为全1序列指示在该轮询周期中已经对全部数据访问模块进行了响应。
13.一种图形处理器,包括:
数据访问模块,
数据缓存模块,以及
总线接口模块,所述总线接口模块包括轮询仲裁器,其特征在于,其被配置成:
针对所述轮询仲裁器的每个轮询周期:
所述总线接口模块在所述轮询周期的一时刻,接收一个或多个数据访问模块向数据缓存模块的一个或多个访存请求,
所述轮询仲裁器对所述一个或多个访存请求进行仲裁,得到仲裁结果,所述仲裁结果是基于与所述一个或多个数据访问模块相对应的掩码以及GPU的资源占用情况得出的,
所述总线接口模块基于所述仲裁结果,允许所述一个或多个数据访问模块中的相应数据访问模块对所述数据缓存模块的资源进行访存,
所述总线接口模块更新与所述数据访问模块相对应的掩码和计数器的计数,所述与所述数据访问模块相对应的掩码包括掩码序列,所述掩码序列的每个比特与所述一个或多个数据访问模块中的一个相对应,以及
在所述掩码指示在该轮询周期中已经对全部数据访问模块进行了响应,或所述计数器的计数超过预定阈值的情况下,结束该轮询周期,开始下一轮询周期。
14.一种图形处理器的访存优化设备,其特征在于,包括:
处理器;以及
存储器,可通信地连接到所述处理器且被适配成存储指令,所述指令在由所述处理器执行时使所述设备执行根据权利要求1至12中任一项所述的方法的操作。
15.一种其上存储有指令的计算机可读介质,其特征在于,所述指令在被执行时使处理器执行根据权利要求1至12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310051281.2A CN115858430B (zh) | 2023-02-02 | 2023-02-02 | 图形处理器的访存优化方法、设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310051281.2A CN115858430B (zh) | 2023-02-02 | 2023-02-02 | 图形处理器的访存优化方法、设备及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115858430A CN115858430A (zh) | 2023-03-28 |
CN115858430B true CN115858430B (zh) | 2023-05-09 |
Family
ID=85657454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310051281.2A Active CN115858430B (zh) | 2023-02-02 | 2023-02-02 | 图形处理器的访存优化方法、设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858430B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117807000B (zh) * | 2024-02-29 | 2024-05-28 | 浪潮电子信息产业股份有限公司 | 通道总线仲裁电路、加速装置、方法、系统、装置及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776371B (zh) * | 2015-12-14 | 2019-11-26 | 上海兆芯集成电路有限公司 | 跨距参考预取器、处理器和将数据预取到处理器的方法 |
US10969978B2 (en) * | 2018-09-25 | 2021-04-06 | Micron Technology, Inc. | Configurable buffer manager arbitration request throttling mechanism |
CN114911727A (zh) * | 2022-05-26 | 2022-08-16 | 上海美仁半导体有限公司 | 总线仲裁方法和装置、计算机可读存储介质及主控芯片 |
-
2023
- 2023-02-02 CN CN202310051281.2A patent/CN115858430B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115858430A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7765350B2 (en) | Method and system for bus arbitration | |
US7685346B2 (en) | Demotion-based arbitration | |
US9626309B1 (en) | Method and controller for requesting queue arbitration and coalescing memory access commands | |
CN115858430B (zh) | 图形处理器的访存优化方法、设备及计算机可读介质 | |
US20080288689A1 (en) | Opportunistic granting arbitration scheme for fixed priority grant counter based arbiter | |
JP4142068B2 (ja) | 情報処理装置およびアクセス制御方法 | |
US9223373B2 (en) | Power arbitration for storage devices | |
US7373467B2 (en) | Storage device flow control | |
US7231475B1 (en) | Advanced bandwidth allocation in PCI bus architecture | |
JP4142069B2 (ja) | 情報処理装置およびアクセス制御方法 | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
WO2003040936A1 (en) | System and method for managing priorities in a pci bus system | |
US20050289278A1 (en) | Apparatus and method for programmable completion tracking logic to support multiple virtual channels | |
CN115481048A (zh) | 一种内存系统及芯片 | |
US11221971B2 (en) | QoS-class based servicing of requests for a shared resource | |
US10705985B1 (en) | Integrated circuit with rate limiting | |
US8533377B2 (en) | System and method for allocating transaction ID in a system with a plurality of processing modules | |
US5805836A (en) | Method and apparatus for equalizing grants of a data bus to primary and secondary devices | |
KR102334473B1 (ko) | 적응형 딥러닝 가속 장치 및 방법 | |
CN117078495A (zh) | 图形处理器的内存分配方法、装置、设备及存储介质 | |
CN110035021B (zh) | 针对原子数据访问请求进行的资源分配 | |
WO2018094620A1 (zh) | 一种内存分配方法和设备 | |
CN108012333B (zh) | 一种lte系统中下行控制信道的资源分配方法及装置 | |
US10002099B2 (en) | Arbitrated access to resources among multiple devices | |
US11429437B2 (en) | System for arbitrating between multiple flows |
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 |