CN108459912B - 一种末级缓存管理方法及相关装置 - Google Patents
一种末级缓存管理方法及相关装置 Download PDFInfo
- Publication number
- CN108459912B CN108459912B CN201810315830.1A CN201810315830A CN108459912B CN 108459912 B CN108459912 B CN 108459912B CN 201810315830 A CN201810315830 A CN 201810315830A CN 108459912 B CN108459912 B CN 108459912B
- Authority
- CN
- China
- Prior art keywords
- threshold
- parallelism
- preset
- last
- level cache
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 51
- 238000000034 method Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 11
- 230000000694 effects Effects 0.000 abstract description 3
- 230000035945 sensitivity Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002860 competitive effect Effects 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
- 239000002699 waste material Substances 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/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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种末级缓存管理方法,利用第一执行单元按照数值较低的第一预设并行度阈值控制请求跳过末级缓存,得到对应的第一性能结果,利用第二执行单元按照数值较高的第二预设并行度阈值控制请求跳过末级缓存,得到第二性能结果,通过性能结果的对比可以确定更适合作为全局并行度阈值的数值。因此,每个周期利用第一执行单元、第二执行单元的性能结果动态调整全局并行度阈值,可以使GPU应用程序的请求按照更合适的阈值跳过末级缓存,也就可以有效地利用末级缓存资源。本发明还提供了一种末级缓存管理系统、装置及计算机可读存储介质,同样可以实现上述技术效果。
Description
技术领域
本发明涉及计算机技术领域,更具体地说,涉及一种末级缓存管理方法、系统、装置及计算机可读存储介质。
背景技术
随着半导体工艺技术的进步以及对高能效计算的迫切要求,目前芯片厂商越来越推崇在同一个芯片上除了放置CPU外,还会集成与CPU架构不同的GPU,以构成片上异构处理器系统,比如Intel的沙桥(Sandy Brige)微架构,AMD的融合(Fusion)微架构以及英伟达(Nvidia)的丹佛(Denver)微架构。其中CPU适合复杂控制和数据串行处理,而GPU适合数据并行处理,因此由CPU+GPU构成的片上异构处理器系统,可以对CPU和GPU各自的优势进行结合,以提供能效比更高的计算力。
然而由于GPU和CPU两者具有不同的架构设计,其呈现出的不同特性对片上架构设计提出了挑战,特别是对片上的末级缓存。片上的末级缓存用于存放近期可能被频繁访问的指令和数据,以减少对片外主存的访问。由于访问片外主存延迟高以及带宽比较低,所以能否有效地利用片上缓存空间资源对系统的性能起着至关重要的作用。
由于在片上异构处理器系统环境下,存在不同架构的计算单元(CPU和GPU),他们对片上末级缓存资源具有竞争关系,导致当前的末级缓存管理算法已不能取得很好的效果。
比如,目前被广泛采用的末级缓存管理算法LRU,它并不区分当前访问请求是来自GPU还是CPU,总是把第一次访问的数据插入到缓存的最高优先级而把最近未曾使用的数据替换出缓存。但GPU相比于CPU,其并发运行的线程数目远超过CPU,导致片上末级缓存大部分空间会被GPU所占据而把CPU使用的数据替换出缓存,从而严重降低在CPU上所运行程序的性能。另外,GPU由于其较多的并发线程数目,如果一个线程因访问片外主存发生阻塞,它可以调度另外一个线程执行,所以它对片外主存的访问高延迟容忍度比较高。因此,当有按照上述方法不区分GPU和CPU来处理请求时,会造成末级缓存资源的浪费。
因此,如何有效利用末级缓存资源,是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种末级缓存管理方法、系统、装置及计算机可读存储介质,以有效利用末级缓存资源。
为实现上述目的,本发明实施例提供了如下技术方案:
一种末级缓存管理方法,包括:
S101,利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果;
S102,利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值;
S103,利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存;
S104,利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并返回S101。
其中,所述第一性能结果包括所述第一执行单元执行所述第一访问请求后得到的第一执行单元性能,和与本次GPU周期对应的时间内CPU端末级缓存请求的第一未命中数;
所述第二性能结果包括所述第二执行单元执行所述第二访问请求后得到的第二执行单元性能,和与本次GPU周期对应的时间内CPU端末级缓存请求的第二未命中数。
其中,所述利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,包括:
确定所述第一执行单元性能与所述第二执行单元性能的差值,作为第一差值;
确定所述第一未命中数与所述第二未命中数的差值,作为第二差值;
利用所述第一差值与第一预设阈值的比较结果或所述第二差值与第二预设阈值的比较结果更新所述全局并行度阈值。
其中,所述利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,包括:
确定所述第一执行单元性能与所述第二执行单元性能的差值,作为第一差值;
确定所述第一未命中数与所述第二未命中数的差值,作为第二差值;
利用所述第一差值与所述第一预设阈值的比较结果,和所述第二差值与所述第二预设阈值的比较结果更新所述全局并行度阈值。
其中,所述利用所述第一差值与所述第一预设阈值的比较结果,和所述第二差值与所述第二预设阈值的比较结果更新所述全局并行度阈值,包括:
判断所述第二差值是否大于或等于所述第二预设阈值;
若是,则将所述全局并行度阈值更新为所述第一预设并行度阈值;
若否,则判断所述第一差值是否大于所述第二预设阈值;
若是,则将所述全局并行度阈值更新为所述第二预设并行度阈值;
若否,则判断所述第一差值与所述第一阈值的差值是否大于或等于所述第二差值与所述第二阈值的差值;
若是,则将所述全局并行度阈值更新为第一预设并行度阈值;
若否,则将所述全局并行度阈值更新为第二预设并行度阈值。
其中,所述利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值之后,还包括:
利用所述更新后的全局并行度阈值更新所述第一预设并行度阈值与所述第二预设并行度阈值。
其中,所述利用所述更新后的全局并行度阈值更新所述第一预设并行度阈值与所述第二预设并行度阈值,包括:
确定第一参数、第二参数与第三参数,其中所述第一参数为所述第二参数与所述第三参数的平均值,所述第二参数为所述GPU的最大线程并行度,所述第三参数为所述GPU的最小线程并行度;
当所述更新后的全局并行度阈值大于所述第一参数时,将所述第二参数更新为所述最大线程并行度与所述第二参数的平均值;将所述第三参数设置为所述第一参数;
当所述更新后的全局并行度阈值小于所述第一参数时,将所述第二参数设置为所述第一参数,将所述第三参数设置为所述第三参数与所述最小线程并行度的平均值;
利用更新后的第二参数、第三参数更新所述第二预设并行度阈值与所述第一预设并行度阈值。
本发明还提供了一种末级缓存管理系统,包括:
第一执行模块,用于利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果;
第二执行模块,用于利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值;
第三执行模块,用于利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存;
更新模块,用于利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并继续调用第一执行模块。
本发明还提供了一种末级缓存管理装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述末级缓存管理方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述末级缓存管理法的步骤。
通过以上方案可知,本发明提供的一种末级缓存管理方法,利用第一执行单元按照数值较低的第一预设并行度阈值控制请求跳过末级缓存,得到对应的第一性能结果,利用第二执行单元按照数值较高的第二预设并行度阈值控制请求跳过末级缓存,得到第二性能结果,通过性能结果的对比可以确定更适合作为全局并行度阈值的数值。因此,每个周期利用第一执行单元、第二执行单元的性能结果动态调整全局并行度阈值,可以使GPU应用程序的请求按照更合适的阈值跳过末级缓存,也就可以有效地利用末级缓存资源。
本发明还提供了一种末级缓存管理系统、装置及计算机可读存储介质,同样可以实现上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种末级缓存管理方法流程图;
图2为本发明实施例公开的一种具体的末级缓存管理方法流程图;
图3为本发明实施例公开的一种全局并行度阈值更新方法流程图;
图4为本发明实施例公开的一种具体的末级缓存管理方法流程图;
图5为本发明实施例公开的一种第一预设并行度阈值与第二预设并行度阈值更新方法流程图;
图6为本发明实施例公开的一种末级缓存管理系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种末级缓存管理方法、系统、装置及计算机可读存储介质,以有效利用末级缓存资源。
参见图1,本发明实施例提供的一种末级缓存管理方法,具体包括:
S101,利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果。
在本方案中,在GPU较多的执行单元中选取两个执行单元,即第一执行单元core1与第二执行单元core2;同时设置两个线程级并行度(Thread Level Parallelism,TLP)阈值,即第一预设并行度阈值LowThr与第二预设并行度阈值HighThr,其中,HighThr>LowThr。
在本方案中,每个判定周期作为一个GPU周期,在每个GPU周期中,首先第一执行单元core1使用LowThr作为标准执行Bypassing(旁路技术),旁路技术是指将GPU指令跳过末级缓存来执行,也就是第一执行单元core1控制并行度高于第一预设并行度阈值LowThr的第一访问请求的指令跳过末级缓存。第一执行单元在一个GPU周期内按照LowThr作为标准处理完所有指令后,得到对应第一执行单元的性能结果。其中,第一访问请求是指应由第一执行单元执行,且其在执行单元所呈现的线程级并行度高于第一预设并行度阈值LowThr的请求。
需要说明的是,GPU周期可以是执行的指令数,例如每500million(百万)条指令为一个周期;也可以是运行时间数目,例如100million个CPU周期数为一个GPU周期。
S102,利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值。
具体地,第二执行单元core2使用HighThr作为标准执行Bypassing,也就是利用第二执行单元core2控制并行度高于第二预设并行度阈值HighThr的第二访问请求跳过末级缓存。第二执行单元在一个GPU周期内按照HighThr作为标准处理完所有指令后,得到对应第二执行单元的性能结果。其中,第二访问请求是指应由第二执行单元执行,且其在执行单元所呈现的线程级并行度高于第二预设并行度阈值HighThr的请求。
在本方案中,第一预设并行度阈值可以设置为GPU所能支持的最小线程级并行度的1/4,第二预设并行度阈值可以设置为GPU所能支持的最大线程级并行度的3/4。需要说明的是,由于在GPU上所运行的应用程序不同,以及应用程序在执行的不同阶段其线程级并行度都会有区别,因此在处理请求指令的过程中需要动态的调整第一预设并行度阈值与第二预设并行度阈值。
S103,利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存。
具体地,上述GPU的预设个数执行单元中,预设个数的执行单元可以是GPU的全部执行单元,除第一执行单元、第二执行单元以外的其他执行单元将全局并行度阈值作为标准执行其他访问请求。即其他执行单元控制并行度高于全局并行度阈值的访问请求跳过末级缓存。
需要说明的是,全局并行度阈值的初始值可以根据具体情况设定,例如可以与初始的第一预设并行度阈值LowThr相同,也可以与初始的第二预设并行度阈值HighThr相同,在执行下一周期的指令前,则可以根据本周期第一执行单元、第二执行单元的性能结果来调整下一周期的全局并行度阈值,即调整其他执行单元在下一周期的执行标准。
S104,利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并返回S101。
具体地,第一性能结果反映了执行单元将较低的阈值作为执行标准时,GPU或CPU的性能结果,也就是反映了当将较多的GPU的请求指令跳过末级缓存时,对GPU或CPU的性能的影响;第二性能结果反映了执行单元将较高的阈值作为执行标准时GPU或CPU的性能结果,也就是反映了当将较少的GPU的请求指令跳过末级缓存时,对GPU或CPU的性能的影响。因此利用两个性能结果的差值就可以判断GPU对跳过末级缓存与不跳过末级缓存的敏感度。
例如,可以利用GPU性能的差值来判断跳过末级缓存的指令多与少对GPU执行单元的性能影响是否大,如果影响不大,则说明该申请的运行程序对末级缓存不敏感,则可以较大概率让当前访问请求跳过末级缓存。
需要说明的是,性能结果也可以是CPU的未命中数。具体地,GPU分别以第一预设并行度阈值LowThr和第二预设并行度阈值HighThr作为标准执行Bypassing时,对应的会有CPU端末级缓存的请求的第一未命中数目MissLow和第二未命中数MissHigh。因为采取HighThr作为标准执行Bypassing相比于LowThr,GPU会占据更多末级缓存空间,所以MissHigh肯定要大于MissLow。如果MissHigh和MissLow两者的差距超过某一个阈值,则判定当前CPU上所运行的应用程序为敏感性,否则为非敏感性。因此当CPU上所运行的应用程序为敏感性时,考虑到GPU并行度较高的原因,应优先让CPU使用末级缓存,而使GPU的应用程序跳过末级缓存。
由此可见,本发明实施例提供的一种末级缓存管理方法,利用第一执行单元按照数值较低的第一预设并行度阈值控制请求跳过末级缓存,得到对应的第一性能结果,利用第二执行单元按照数值较高的第二预设并行度阈值控制请求跳过末级缓存,得到第二性能结果,通过性能结果的对比可以确定更适合作为全局并行度阈值的数值。因此,每个周期利用第一执行单元、第二执行单元的性能结果动态调整全局并行度阈值,可以使GPU应用程序的请求按照更合适的阈值跳过末级缓存,也就可以有效地利用末级缓存资源。
下面对本发明实施例提供的一种具体的末级缓存管理方法进行介绍,本发明实施例对上述实施例中利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值做了进一步的限定和说明,其他步骤内容和上述实施例大致相同,具体可以参考上述实施例。
参见图2,本发明实施例提供的一种具体的末级缓存管理方法,具体包括:
S201,利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果。
S202,利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值。
S203,利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存。
S204,确定所述第一执行单元性能与所述第二执行单元性能的差值,作为第一差值。
需要说明的是,应用程序的数据访问特性不同,导致其对末级缓存的敏感性有所区别,可划分为两类,一类是敏感性,另一类是非敏感性。敏感指的是应用程序的性能会随着分配到的末级缓存资源增加而提升,非敏感性与之相反,末级缓存资源的变化并不会对性能产生较大的影响。非敏感性应用程序可细分为三类,计算密集型应用,高TLP(ThreadLevel Parallelism,线程级并行度)型应用和流式应用。计算密集型应用大部分时间处于计算,不会产生较多的访存请求,因而不会对末级缓存造成压力。流式应用会产生大量的访存请求,但其数据不存在重用性,把数据放到末级缓存也不会对性能产生影响。高TLP型应用,因为其对片外访存具有较高的容忍度,所以它也对末级缓存不敏感。因此可以根据敏感性来调整全局并行度阈值。
在本方案中,性能结果可以是执行单元的性能,也可以是执行单元执行请求时,相应的CPU应用程序中未命中末级缓存的数值。
具体地,第一性能结果包括第一执行单元core1执行第一访问请求后得到的第一执行单元性能,和与本次GPU周期对应的时间内CPU端末级缓存请求的第一未命中数;第二性能结果包括第二执行单元执行第二访问请求后得到的第二执行单元性能,和与本次GPU周期对应的时间内CPU端末级缓存请求的第二未命中数。
由于CPU应用程序与GPU应用程序对末级缓存具有竞争关系,因此在GPU访问末级缓存时,CPU就会发生未命中末级缓存的情况,因此,也可以通过CPU未命中数作为性能结果。
具体地,首先确定第一执行单元core1与第二执行单元core2之间的性能差值PGPU,如果PGPU超过某一阈值pThreshod,例如5%,则说明末级缓存旁路技术对GPU的性能有影响,判定当前的应用程序是末级缓存敏感性,如果PGPU没有超过这个阈值,则可以确定当前应用程序是非敏感性。
S205,确定所述第一未命中数与所述第二未命中数的差值,作为第二差值。
具体地,还可以判定当前CPU上所运行程序的末级缓存敏感性,其通过统计GPU分别以LowThr和HighThr作为标准执行旁路技术时,获取CPU端末级缓存的请求未命中数目,即第一未命中数MissLow和第二未命中数MissHigh。因为采取HighThr作为标准执行旁路技术时相比于LowThr,GPU会占据更多末级缓存空间,所以第二未命中数MissHigh肯定要大于第一未命中数MissLow。如果MissHigh和MissLow两者的差距MCPU超过某一个阈值mThreshold,比如10%,则判定当前CPU上所运行的应用程序为敏感性,否则为非敏感性。
S206,利用所述第一差值与第一预设阈值的比较结果,和/或,所述第二差值与第二预设阈值的比较结果更新所述全局并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并返回S201。
具体地,可以通过GPU上运行程序的敏感性或者CPU上运行程序的敏感性来更新全局并行度阈值。作为优选地,可以结合GPU上运行程序的敏感性和CPU上运行程序的敏感性来更新全局并行度阈值。
具体地,参见图3,全局并行度阈值更新方法具体包括:
S301,判断所述第二差值是否大于或等于所述第二预设阈值。
具体地,首先CPU上所运行的程序是否为敏感性,判断第二差值MCPU是否大于或等于第二预设阈值mThreshold。
S302,若是,则将所述全局并行度阈值更新为所述第一预设并行度阈值。
若是,则说明CPU上所运行的程序为敏感性,则设置LowThr作为全局并行度阈值,使GPU应用程序的指令更多的跳过末级缓存,而使CPU应用程序的指令更多的访问末级缓存
S303,若否,则判断所述第一差值是否大于所述第一预设阈值。
若否,则继续判断GPU上的应用程序是否为敏感性,具体地,判断第一差值PGPU是否大于pThreshod。
S304,若是,则将所述全局并行度阈值更新为所述第二预设并行度阈值。
具体地,若是,则说明GPU上所运行的应用程序是敏感性,则设置HighThr作为全局并行度阈值,使跳过末级缓存的指令更少。
S305,若否,则判断所述第一差值与所述第一阈值的差值是否大于或等于所述第二差值与所述第二阈值的差值。
若否,则说明CPU与GPU上的运行程序均不是敏感性,则进一步判断是否满足(Pgpu-pThreshold)≥(Mcpu-mThreshold),也就是判断第一差值与所述第一阈值的差值是否大于或等于所述第二差值与所述第二阈值的差值。
S306,若是,则将所述全局并行度阈值更新为第一预设并行度阈值。
S307,若否,则将所述全局并行度阈值更新为第二预设并行度阈值。
若是,则选取LowThr作为全局并行度阈值,否则设置HighThr为全局并行度阈值。
结合CPU应用程序的敏感性与GPU应用程序的敏感性来调整全局阈值,可以使调整更为合理,使CPU与GPU都可以更有效地利用末级缓存。
由于在GPU上所运行的应用程序不同以及应用程序在执行的不同阶段,其线程级并行度都会有区别,为了动态地设置合理的第一预设并行度阈值LowThr和第二预设并行度阈值HighThr,本发明提出了一种具体的末级缓存管理方法。
参见图4,本发明实施例提供的一种具体的末级缓存管理方法,具体包括:
S401,利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果;
S402,利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值;
S403,利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存;
S404,利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,利用所述更新后的全局并行度阈值更新所述第一预设并行度阈值与所述第二预设并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并返回S401。
在本方案中,在得到更新后的全局并行度阈值后,利用该阈值对第一预设并行度阈值与第二预设并行度阈值进行更新,使下一周期利用更新后的阈值作为标准实现旁路技术,根据更新后全局阈值不断更新第一预设阈值与第二预设阈值可以使这两个阈值在每个周期中都是更合理的。
具体地,参见图5,利用所述更新后的全局并行度阈值更新所述第一预设并行度阈值与所述第二预设并行度阈值,具体包括:
S501,确定第一参数、第二参数与第三参数,其中所述第一参数为所述第二参数与所述第三参数的平均值,所述第二参数为所述GPU的最大线程并行度,所述第三参数为所述GPU的最小线程并行度。
具体地,设置三个参数,分别为第一参数E,第二参数U,第三参数L,其中起始U设置为MaxLimit,L设置为MinLimit,并以他们的平均值E=AVG(U,L)作为判定值。
S502,当所述更新后的全局并行度阈值大于所述第一参数时,将所述第二参数更新为所述最大线程并行度与所述第二参数的平均值;将所述第三参数设置为所述第一参数。
具体地,经过一次判定周期后,得到了更新后的全局并行度阈值(HighThr或LowThr)。如果全局并行度阈值大于第一参数E,则将U更新为AVG(MaxLimit,U)),L更新为E,将E更新为最新的U、L的平均值AVG(U,L)。
S503,当所述更新后的全局并行度阈值小于所述第一参数时,将所述第二参数设置为所述第一参数,将所述第三参数设置为所述第三参数与所述最小线程并行度的平均值。
如果更新后的全局并行度阈值小于第一参数E,则将U更新为E,将L更新为AVG(L,MinLimit),将E为最新的U、L的平均值AVG(U,L)。
如果全局并行度阈值等于E,说明此时U和L设置合理,不需要调整。
S504,利用更新后的第二参数、第三参数更新所述第二预设并行度阈值与所述第一预设并行度阈值。
具体地,可以将HighThr更新为U×3/4,将LowThr更新为L×1/4,每次周期结束后,HighThr与LowThr的值都会根据U和L进行更新。
下面对本发明实施例提供的一种末级缓存管理系统进行介绍,下文描述的一种末级缓存管理系统与上文描述的一种末级缓存管理方法可以相互参照。
参见图6,本发明实施例提供的一种末级缓存系统,具体包括:
第一执行模块601,用于利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果。
第二执行模块602,用于利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值。
第三执行模块603,用于利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存。
更新模块604,用于利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并继续调用第一执行模块。
本实施例的末级缓存管理装置用于实现前述的末级缓存管理方法,因此末级缓存管理装置中的具体实施方式可见前文中的末级缓存管理方法的实施例部分,例如,第一执行模块601,第二执行模块602,第三执行模块603,更新模块604,分别用于实现上述末级缓存管理方法中步骤S101,S102,S103和S104,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。
下面对本发明实施例提供的一种末级缓存管理装置进行介绍,下文描述的一种末级缓存管理装置与上文描述的一种末级缓存管理方法可以相互参照。
本发明实施例提供的一种末级缓存管理装置,具体包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一实施例所述末级缓存管理方法的步骤。
下面对本发明实施例提供的一种计算机可读存储介质进行介绍,下文描述的一种计算机可读存储介质与上文描述的一种末级缓存管理方法可以相互参照。
本发明实施例提供的一种计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一实施例所述末级缓存管理法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的末级缓存管理方法以及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种末级缓存管理方法,其特征在于,包括:
S101,利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果;
S102,利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值;
S103,利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存;
S104,利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并返回S101。
2.根据权利要求1所述的方法,其特征在于,所述第一性能结果包括所述第一执行单元执行所述第一访问请求后得到的第一执行单元性能,和与本次GPU周期对应的时间内CPU端末级缓存请求的第一未命中数;
所述第二性能结果包括所述第二执行单元执行所述第二访问请求后得到的第二执行单元性能,和与本次GPU周期对应的时间内CPU端末级缓存请求的第二未命中数。
3.根据权利要求2所述的方法,其特征在于,所述利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,包括:
确定所述第一执行单元性能与所述第二执行单元性能的差值,作为第一差值;
确定所述第一未命中数与所述第二未命中数的差值,作为第二差值;
利用所述第一差值与第一预设阈值的比较结果,或所述第二差值与第二预设阈值的比较结果更新所述全局并行度阈值。
4.根据权利要求2所述的方法,其特征在于,所述利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,包括:
确定所述第一执行单元性能与所述第二执行单元性能的差值,作为第一差值;
确定所述第一未命中数与所述第二未命中数的差值,作为第二差值;
利用所述第一差值与第一预设阈值的比较结果,和所述第二差值与第二预设阈值的比较结果更新所述全局并行度阈值。
5.根据权利要求4所述的方法,其特征在于,所述利用所述第一差值与第一预设阈值的比较结果,和所述第二差值与第二预设阈值的比较结果更新所述全局并行度阈值,包括:
判断所述第二差值是否大于或等于所述第二预设阈值;
若是,则将所述全局并行度阈值更新为所述第一预设并行度阈值;
若否,则判断所述第一差值是否大于所述第一预设阈值;
若是,则将所述全局并行度阈值更新为所述第二预设并行度阈值;
若否,则判断所述第一差值与所述第一预设阈值的差值是否大于或等于所述第二差值与所述第二预设阈值的差值;
若是,则将所述全局并行度阈值更新为第一预设并行度阈值;
若否,则将所述全局并行度阈值更新为第二预设并行度阈值。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值之后,还包括:
利用更新后的全局并行度阈值更新所述第一预设并行度阈值与所述第二预设并行度阈值。
7.根据权利要求6所述的方法,其特征在于,所述利用更新后的全局并行度阈值更新所述第一预设并行度阈值与所述第二预设并行度阈值,包括:
确定第一参数、第二参数与第三参数,其中所述第一参数为所述第二参数与所述第三参数的平均值,所述第二参数为所述GPU的最大线程并行度,所述第三参数为所述GPU的最小线程并行度;
当更新后的全局并行度阈值大于所述第一参数时,将所述第二参数更新为所述最大线程并行度与所述第二参数的平均值;将所述第三参数设置为所述第一参数;
当更新后的全局并行度阈值小于所述第一参数时,将所述第二参数设置为所述第一参数,将所述第三参数设置为所述第三参数与所述最小线程并行度的平均值;
利用更新后的第二参数、第三参数更新所述第二预设并行度阈值与所述第一预设并行度阈值。
8.一种末级缓存管理系统,其特征在于,包括:
第一执行模块,用于利用GPU的第一执行单元控制并行度高于第一预设并行度阈值的第一访问请求跳过末级缓存,并得到第一性能结果;
第二执行模块,用于利用所述GPU的第二执行单元控制并行度高于第二预设并行度阈值的第二访问请求跳过末级缓存,并得到第二性能结果;其中,所述第一预设并行度阈值小于所述第二预设并行度阈值;
第三执行模块,用于利用所述GPU的其他执行单元控制并行度高于全局并行度阈值的其他访问请求跳过末级缓存;
更新模块,用于利用所述第一性能结果与所述第二性能结果更新所述全局并行度阈值,获取下一GPU周期的第一访问请求、第二访问请求和其他访问请求,并继续调用第一执行模块。
9.一种末级缓存管理装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述末级缓存管理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述末级缓存管理法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810315830.1A CN108459912B (zh) | 2018-04-10 | 2018-04-10 | 一种末级缓存管理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810315830.1A CN108459912B (zh) | 2018-04-10 | 2018-04-10 | 一种末级缓存管理方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108459912A CN108459912A (zh) | 2018-08-28 |
CN108459912B true CN108459912B (zh) | 2021-09-17 |
Family
ID=63235596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810315830.1A Active CN108459912B (zh) | 2018-04-10 | 2018-04-10 | 一种末级缓存管理方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108459912B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101442643B1 (ko) * | 2013-04-30 | 2014-09-19 | 전자부품연구원 | Cpu와 gpu 간의 협업 시스템 및 그 방법 |
CN104471540A (zh) * | 2012-08-17 | 2015-03-25 | 英特尔公司 | 通过统一存储器架构的存储器共享 |
CN106575431A (zh) * | 2014-09-26 | 2017-04-19 | 英特尔公司 | 用于高度高效的图形处理单元(gpu)执行模型的方法和装置 |
CN106708626A (zh) * | 2016-12-20 | 2017-05-24 | 北京工业大学 | 一种面向低功耗的异构多核共享cache划分方法 |
-
2018
- 2018-04-10 CN CN201810315830.1A patent/CN108459912B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104471540A (zh) * | 2012-08-17 | 2015-03-25 | 英特尔公司 | 通过统一存储器架构的存储器共享 |
KR101442643B1 (ko) * | 2013-04-30 | 2014-09-19 | 전자부품연구원 | Cpu와 gpu 간의 협업 시스템 및 그 방법 |
CN106575431A (zh) * | 2014-09-26 | 2017-04-19 | 英特尔公司 | 用于高度高效的图形处理单元(gpu)执行模型的方法和装置 |
CN106708626A (zh) * | 2016-12-20 | 2017-05-24 | 北京工业大学 | 一种面向低功耗的异构多核共享cache划分方法 |
Non-Patent Citations (3)
Title |
---|
"CPU-GPU融合架构上共享Cache的动态划分技术";孙传伟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160315(第03期);第I137-169页 * |
"CPU-GPU融合架构上的缓存性能分析与优化";孙传伟等;《计算机工程与应用》;20170115;第53卷(第02期);第47-57页 * |
"Evaluating the Effect of Last-Level Cache Sharing on Integrated GPU-CPU Systems with Heterogeneous Applications";Victor Garcia等;《2016 IEEE International Symposium on Wrokload Characterization(IISWC)》;20161010;第168-177页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108459912A (zh) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI564719B (zh) | 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品 | |
JP6325243B2 (ja) | 保持優先度に基づくキャッシュ置換ポリシー | |
TWI596479B (zh) | 具有資料預取器的處理器及其運作方法 | |
US7895415B2 (en) | Cache sharing based thread control | |
KR101361945B1 (ko) | 컴퓨터 스레드들의 이종 리소스들로의 맵핑 | |
KR101799253B1 (ko) | 다중 클러스터 이종 프로세서 아키텍처에서 동적 캐시 확장을 제공하기 위한 시스템 및 방법 | |
US9176878B2 (en) | Filtering pre-fetch requests to reduce pre-fetching overhead | |
JP6708657B2 (ja) | トランザクション実行に応じて追跡データを生成する装置及び方法 | |
US20130124826A1 (en) | Optimizing System Throughput By Automatically Altering Thread Co-Execution Based On Operating System Directives | |
US20130013867A1 (en) | Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function | |
US20200382443A1 (en) | System and Methods for Sharing Memory Subsystem Resources Among Datacenter Applications | |
US9037835B1 (en) | Data processing method and apparatus for prefetching | |
JP2008505389A5 (zh) | ||
JP7366122B2 (ja) | プロセッサのフィルタリングされた分岐予測構造 | |
CN109308220B (zh) | 共享资源分配方法及装置 | |
US9836396B2 (en) | Method for managing a last level cache and apparatus utilizing the same | |
JP5730973B2 (ja) | バスアクセス要求の選択的除外 | |
KR20190008274A (ko) | 업/다운 프리페쳐 | |
US11269693B2 (en) | Method, apparatus, and electronic device for improving CPU performance | |
CN108459912B (zh) | 一种末级缓存管理方法及相关装置 | |
Zhu et al. | Improving first level cache efficiency for gpus using dynamic line protection | |
KR101892273B1 (ko) | 스레드 프로그레스 트래킹 방법 및 장치 | |
KR101635816B1 (ko) | 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치 | |
JP5298826B2 (ja) | キャッシュメモリ及びプリフェッチ方法 | |
KR101957855B1 (ko) | 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법 |
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 |