一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于GPU的可重构Cache系统、访存系统及访存方法与流程

2022-11-13 12:33:23 来源:中国专利 TAG:

基于gpu的可重构cache系统、访存系统及访存方法
技术领域
1.本发明涉及缓存技术领域,尤其是涉及一种基于gpu的可重构cache系统、访存系统及访存方法。


背景技术:

2.随着计算机技术的发展和应用领域的需求,gpu(graphics processing unit,图形处理器)高性能并行计算在ai(artificial intelligence,人工智能)计算、图形渲染、高速计算等领域比cpu更有优势,甚至于在通用性计算上gpgpu(general-purpose computing on graphics processing units,通用图形处理器)的出现也迎来了巨大的市场。gpu可以通过同时执行大量的线程来发挥资源并行的优点,从而实现高性能的并行计算。
3.gpu的核心处理单元的运算速度和片下主存之间的访问速度有很大的差距,因此需要多层结构的cache(高速缓冲存储器)来弥补这两者之间的差距,通过分层的cache结构来实现数据的最大化命中率,其中,层级越高的cache的访问速度越高,相对来说容量的大小也越小,比如层级最高的l1 cache(一级缓存)通常都是核心处理单元私有的,而诸如l2 cache(二级缓存)或l3 cache(三级缓存)等较低层级的cache通常作为共享的缓存结构便于核心处理单元或核心处理单元组(与上述诸如l2 cache或l3 cache对应)之间的数据交换和通信。
4.由于gpu的核心处理单元中的cache容量较小,在大量线程的瞬时并行执行的时候,每个线程所分得的缓存空间将十分有限,缓存争用是一个不可避免的问题,频繁的缓存替换会导致有效数据的丢失,数据的命中率会大大下降,继而导致流水线和其他相关的缓存资源严重阻塞。


技术实现要素:

5.本发明的目的在于提供一种基于gpu的可重构cache系统、访存系统及访存方法,以提高数据的命中率。
6.第一方面,本发明实施例提供了一种基于gpu的可重构cache系统,包括:cache缓存模块;空间配置模块,用于接收表征空间配置比例的配置指令,并存储所述配置指令对应的配置参数;地址解析模块,与所述cache缓存模块和所述空间配置模块连接;所述地址解析模块用于根据所述空间配置模块中存储的配置参数,将所述cache缓存模块的存储空间划分为与cache请求对应的cache存储空间和与局部请求对应的局部存储空间;所述地址解析模块分别通过cache流水线和局部存储流水线与所述cache缓存模块连接,所述cache流水线与所述cache请求对应,所述局部存储流水线与所述局部请求对应;所述地址解析模块还用于接收当前访存请求,根据所述当前访存请求的寻址结构确定所述当前访存请求所属的目标访存类型,并将所述当前访存请求的寻址信息传输到与所述
目标访存类型对应的目标流水线中进行处理;其中,所述目标访存类型包括所述cache请求或所述局部请求。
7.进一步地,所述当前访存请求的寻址结构中设置有局部性标志位,所述局部性标志位用于存储表征是否为所述局部存储空间的局部数据的标识;所述地址解析模块具体用于根据所述当前访存请求的寻址结构中局部性标志位存储的标识,确定所述当前访存请求所属的目标访存类型。
8.进一步地,所述局部存储流水线包括数据选通过滤模块,所述数据选通过滤模块分别与所述地址解析模块和所述局部存储空间连接;所述数据选通过滤模块用于根据获取到的寻址信息,对所述局部存储空间进行数据加载读取。
9.进一步地,所述局部请求的寻址信息包括特征位存储的路序号、index位存储的index信息和offset位存储的数据位宽大小,其中,所述特征位与所述cache请求的寻址结构中的tag标签位对应;所述数据选通过滤模块还用于根据所述寻址信息中的路序号,从所述局部存储空间中选出相应路,根据所述寻址信息中的index信息,从所述相应路中选出相应cacheline,并根据所述寻址信息中的数据位宽大小对所述相应cacheline中的相应数据进行加载读取。
10.进一步地,所述局部存储流水线还包括局部数据状态存储模块,所述局部数据状态存储模块与所述地址解析模块连接;所述局部数据状态存储模块用于存储所述局部存储空间中局部数据的状态。
11.第二方面,本发明实施例还提供了一种访存系统,包括第一方面的基于gpu的可重构cache系统,还包括与所述基于gpu的可重构cache系统连接的核心处理单元。
12.进一步地,所述核心处理单元包括请求分支模块和一级缓存模块;所述基于gpu的可重构cache系统的层级低于所述一级缓存模块的层级;所述请求分支模块用于接收当前访存请求,根据所述当前访存请求的寻址结构确定所述当前访存请求所属的目标访存类型;当所述目标访存类型为所述局部请求时,将所述当前访存请求传输至所述基于gpu的可重构cache系统;当所述目标访存类型为cache请求时,将所述当前访存请求传输至所述一级缓存模块进行处理,并当所述一级缓存模块至所述基于gpu的可重构cache系统的上一级缓存模块均未命中所述当前访存请求所需的数据时,将所述当前访存请求传输至所述基于gpu的可重构cache系统。
13.第三方面,本发明实施例还提供了一种访存方法,应用于第二方面的访存系统;所述访存方法包括:所述基于gpu的可重构cache系统接收表征空间配置比例的配置指令,并存储所述配置指令对应的配置参数;所述基于gpu的可重构cache系统根据存储的配置参数,将cache缓存模块的存储空间划分为与cache请求对应的cache存储空间和与局部请求对应的局部存储空间;所述基于gpu的可重构cache系统接收当前访存请求;所述基于gpu的可重构cache系统根据所述当前访存请求的寻址结构,确定所述当前访存请求所属的目标访存类型;
所述基于gpu的可重构cache系统将所述当前访存请求的寻址信息传输到与所述目标访存类型对应的目标流水线中,进行相应存储空间的数据加载读取;其中,所述目标访存类型包括所述cache请求或所述局部请求,所述目标流水线包括与所述cache请求对应的cache流水线或与所述局部请求对应的局部存储流水线。
14.进一步地,所述访存系统还包括访存请求分析模块;在所述基于gpu的可重构cache系统接收表征空间配置比例的配置指令之前,所述访存方法还包括:所述访存请求分析模块将所述访存系统中的各个访存请求分为cache请求或局部请求两种访存类型;所述访存请求分析模块根据所述访存系统中两种访存类型对应的请求资源需求,生成表征空间配置比例的配置指令。
15.进一步地,将所述访存系统中的各个访存请求分为cache请求或局部请求两种访存类型,包括:通过对所述访存系统对应的应用程序数据特征或显存访问模式进行分析,将所述访存系统中的各个访存请求分为所述cache请求或所述局部请求两种访存类型。
16.本发明实施例提供的基于gpu的可重构cache系统、访存系统及访存方法中,该可重构cache系统包括cache缓存模块、空间配置模块和地址解析模块,可以根据实时需求对cache存储空间和局部存储空间进行合理化配置,将cache缓存模块中的数据分为cache数据和局部数据两类,减少了对cache发起访存请求的次数,提高了数据的命中率,大大减轻了缓存争用的压力。
附图说明
17.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为本发明实施例提供的一种基于gpu的可重构cache系统的结构示意图;图2为本发明实施例提供的另一种基于gpu的可重构cache系统的结构示意图;图3为本发明实施例提供的一种cache请求的寻址结构;图4为本发明实施例提供的一种局部请求的寻址结构;图5为本发明实施例提供的一种访存系统的结构示意图;图6为本发明实施例提供的另一种访存系统的结构示意图;图7为本发明实施例提供的一种访存方法的流程示意图;图8为本发明实施例提供的一种计算图例;图9为本发明实施例提供的三种显存访问模式;图10为本发明实施例提供的一种访存系统的运作流程图。
19.图标:101
‑ꢀ
cache缓存模块;102-空间配置模块;103-地址解析模块;104-数据输入缓冲模块;105-数据选通过滤模块;106-局部数据状态存储模块;10-基于gpu的可重构cache系统;20-核心处理单元;201-请求分支模块;202-一级缓存模块。
具体实施方式
20.下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
21.在不同的gpu架构中,它的核心处理单元有多种叫法,例如公司a中为sm(streaming multiprocessor,流式多处理器),公司b中为mpx等。以基于sm的gpu架构为例,在sm中还有多个sp(streaming processor,流处理单元),sp是gpu中最基本的处理单元,gpu中对数据进行浮点运算的操作主要由sp负责。本实施例中将sm这一级结构称为核心处理单元,将sp这一级结构称为计算单元。
22.随着gpu通用计算的兴起,gpgpu将用于图形处理的硬件加速单元去掉,保留simt(single instruction multiple thread,单指令多线程)的结构体系和通用计算单元,以满足除了图形渲染之外的需要对大量数据进行计算的通用任务,例如ai训练、矩阵计算等。gpgpu在架构的设计上可能加入了更多的控制单元和缓存结构来帮助通用任务的处理,但是它的本质还是gpu,还是存在着一些不可避免的问题:1.由于gpu的核心处理单元中的cache容量较小,在大量线程的瞬时并行执行的时候,每个线程所分得的缓存空间将十分有限,缓存争用是一个不可避免的问题,频繁的缓存替换会导致有效数据的丢失,数据的命中率会大大下降,继而导致流水线和其他相关的缓存资源严重阻塞,这个问题在l1 cache中尤为严重,其严重损害了gpu的性能,且带来了不必要的功耗。
23.2.通用型gpu为了实现更高的灵活性,满足不同的通用型任务需求,在流水线上没有渲染图形任务长,设计难度相对也没有那么复杂。因此很多新的gpgpu架构在核心处理单元中的并发线程数量没有传统gpu的多,反而层级的数量增大了,在核心处理单元的结构上还出现了cluster即簇的概念,即多个核心处理单元组成一个簇;缓存结构增加了l3 cache作为llc(last level cache,最后一级缓存)。当出现需要大量并发线程的应用程序时,需要多个核心处理单元,甚至是多个簇组合计算才能够实现所需的功能,具有局部性的数据(即局部数据)也采用发起缓存请求的方式,将会降低那些被大量重复使用数据的命中率,而降低了gpu的吞吐量。
24.基于此,本发明实施例提供的一种基于gpu的可重构cache系统、访存系统及访存方法,可以大大减轻并发线程同时执行时对cache的争抢,从而缓解cache命中率下降、缓存抖动和流水线阻塞等问题,以及缓解多核心处理单元合作时,针对局部数据的访问请求仍然访问cache结构带来的缓存抖动和降低数据重复利用率的问题。
25.为便于对本实施例进行理解,首先对本发明实施例所公开的一种基于gpu的可重构cache系统进行详细介绍。
26.如图1和图2所示,本发明实施例提供的一种基于gpu的可重构cache系统包括:cache缓存模块101;空间配置模块102,用于接收表征空间配置比例的配置指令,并存储配置指令对应的配置参数;地址解析模块103,与cache缓存模块101和空间配置模块102连接;地址解析模块
103用于根据空间配置模块102中存储的配置参数,将cache缓存模块101的存储空间划分为与cache请求(缓存请求)对应的cache存储空间和与局部请求对应的局部存储空间;地址解析模块103分别通过cache流水线和局部存储流水线与cache缓存模块101连接,cache流水线与cache请求对应,局部存储流水线与局部请求对应;地址解析模块103还用于接收当前访存请求,根据当前访存请求的寻址结构确定当前访存请求所属的目标访存类型,并将当前访存请求的寻址信息传输到与目标访存类型对应的目标流水线中进行处理;其中,目标访存类型包括cache请求或局部请求。
27.cache缓存模块101包括标准cache结构中的存储阵列,如数据阵列data array、标签阵列tag array、状态阵列state array等,cache缓存模块101用于为基于gpu的可重构cache系统提供存储空间。cache缓存模块101的存储空间分为cache存储空间和局部存储空间两部分,cache存储空间用于存储cache数据,局部存储空间用于存储局部数据(即具有局部性的数据)。
28.cache流水线通过如下方式访问cache缓存模块:根据寻址信息结合cache缓存模块执行cacheline索引、tag比对和命中结果返回等操作。其中,要访问的数据在cache存储空间中有缓存,称为“命中”(hit),反之则称为“缺失”(miss)。局部存储流水线通过如下方式访问cache缓存模块:根据寻址信息查找对应地址进行数据读写操作。
29.空间配置模块102的输入接口连接指令总线,接收配置指令,空间配置模块102用于协助地址解析模块103将不同的访存请求分流处理。地址解析模块103的输入接口连接空间配置模块102的输出接口,基于空间配置模块102存储的配置参数对cache缓存模块101的存储空间进行划分。
30.可以通过如下方式对cache缓存模块101的存储空间进行划分:地址解析模块103根据配置参数确定两种访存类型对应的地址范围,即划分cache存储空间和局部存储空间的映射地址范围。cache存储空间和局部存储空间两者之间的分配比例由配置参数控制。例如,在cache缓存模块101中,一路cache缓存空间总共可以存储128个cacheline(cacheline指一次读取的一组数据),index就需要7位二进制地址进行索引;重构比例按1:1的情况下,cache存储空间的index地址范围为:0000000-0111111,局部存储空间的index地址范围为:1000000-1111111;重构比例按3:1的情况下,cache存储空间的index地址范围为:0000000-1011111,局部存储空间的index地址范围为:1100000-1111111;如此类推。因此,cache请求根据index的地址和tag的比对,就能定位到数据的位置;局部请求根据index的地址和路序号,就能够定位数据的位置。
31.如图1和图2所示,地址解析模块103的输入接口还连接数据输入缓冲模块104,从数据输入缓冲模块104接收访存请求,并将地址区间的地址信息提取传输到相应流水线中进行请求处理。地址解析模块103的输出接口分别连接到不同的流水线,分别做不同的加载任务和读取任务。
32.本实施例通过硬件电路进行分流,根据访存类型分别存储在cache存储空间和局部存储空间中,并且cache存储空间和局部存储空间的分配可根据配置指令重构。
33.本实施例中,通过软硬件结合实现上述基于gpu的可重构cache系统,在编译器编译kernel的阶段,即在程序实施前通过软件部分,可以对函数中数据的访存模式、应用程序的不同需求对访存请求对应数据的局部性进行判别,在访存请求的寻址结构上加以局部性
标志位区分两种访存类型,这样在实施阶段通过简单的比较电路就可以对不同数据的访存请求进行分流处理,在硬件资源上消耗更少,优化的数据范围更广。
34.基于此,在一些可能的实施例中,当前访存请求的寻址结构中设置有局部性标志位,局部性标志位用于存储表征是否为局部存储空间的局部数据的标识;基于此,上述地址解析模块103具体用于根据当前访存请求的寻址结构中局部性标志位存储的标识,确定当前访存请求所属的目标访存类型。
35.优选地,地址解析模块103可以先根据重构后不同存储空间的映射地址范围对访存请求的寻址地址进行判别,再与局部性标志位对比校验访存类型的正确与否。
36.为了减轻代码的编写复杂度和电路结构的复用性,在原有的寻址结构上进行了修改使之适应两种访存类型。cache的地址映射方式有三种:直接映射、组相联映射和全相联映射,本实施例提供的这种寻址结构的修改方式对于三种映射方式都适用。下面以广泛使用的组相联映射结构为例,对该寻址结构的修改方式进行详细介绍。在原有的寻址结构的有效位左边再增添一位局部性标志位,如图3和图4所示,n表示为非局部数据,l表示局部数据,相应地,在电路中用可以用于1表示局部数据,0表示非局部数据。cache寻址结构其余的部分与原来相同,如图3所示,cache请求在组相联模式下的寻址结构从左至右依次包括局部性标志位、有效位、tag标签位、index位和offset位。局部请求的寻址结构与cache请求的非常相似,不同在于原来存储tag标签的地址位(在局部请求的寻址结构中称之为特征位)现在用来存储这个地址所在的路序号(与组相联映射结构对应)、局部数据的特征和留待扩展的有效信息位,如图4所示,局部请求在组相联模式下的寻址结构从左至右依次包括局部性标志位、有效位、特征位(locality character)、index位和offset位。在访存处理上,cache存储结构在地址解析模块103的分流后就按照标准的cache访存方式进行下去,需要注意的是,这里的offset位不仅包含数据的偏移量,还有选取数据的大小,通过这两个参数选取所需访问的数据颗粒大小。局部存储空间的寻址方式是根据路序号选出相应的路,根据index选出对应的cacheline,然后再根据offset中数据位宽大小就可以对特定的数据进行加载读取。两种访存使用相似的寻址结构能够节省大量的开发时间,并且最大的优点就是能够沿用相同的cache结构电路。
37.相应地,如图2所示,cache缓存模块101中cache存储空间的存储结构包括存储局部性标志位(如n)、有效位(如v)、tag标签位(如tag,用于存储tag信息)和数据信息位(如cacheline 0、cacheline 1)等;局部存储空间的存储结构包括存储局部性标志位(如l)、有效位(如v)、路位(如way0,用于存储路序号)和数据信息位(如cacheline 0)等。
38.地址解析模块103在访存请求分类后,可以根据cache请求的寻址结构,对相应访存请求的tag信息、index信息、offset信息等进行提取,并传输至cache流水线做后续处理;根据局部请求的寻址结构,将相应访存请求的局部特征信息(其中包括路序号)、index信息、offset信息等提取并传输至局部存储流水线。
39.如图1和图2所示,上述局部存储流水线包括数据选通过滤模块105,数据选通过滤模块105分别与地址解析模块103和局部存储空间连接;数据选通过滤模块105用于根据获取到的寻址信息,对局部存储空间进行数据加载读取。
40.在一些可能的实施例中,局部请求的寻址信息包括特征位存储的路序号、index位存储的index信息和offset位存储的数据位宽大小,其中,特征位与cache请求的寻址结构
中的tag标签位对应;数据选通过滤模块105还用于根据寻址信息中的路序号,从局部存储空间中选出相应路,根据寻址信息中的index信息,从相应路中选出相应cacheline,并根据寻址信息中的数据位宽大小对相应cacheline中的相应数据进行加载读取。
41.数据选通过滤模块105可以根据寻址信息将对应局部存储空间中的数据cacheline选中,然后通过不同的访存颗粒大小(即数据位宽大小),即细颗粒的访存形式只选取cacheline中的部分位宽输出,例如有的线程取数位宽为32b,但是通常cache的cacheline远不止这个大小,往往为128b甚至更大,因此能够灵活地根据颗粒大小读取数据也很重要,当然这要求存储空间中的数据本就是根据多个32b的有效数据合并的情况,因此在全局加载指令从全局存储即显存中加载数据到局部存储空间的时候就可以加载整个cacheline大小的数据或加载小颗粒的数据。
42.如图1和图2所示,上述局部存储流水线还包括局部数据状态存储模块106,局部数据状态存储模块106与地址解析模块103连接;局部数据状态存储模块106用于存储局部存储空间中局部数据的状态。
43.例如该局部数据共享于哪些核心处理单元或者哪些簇(这将取决于该基于gpu的可重构cache系统的层级),局部数据的使用频率(这也是用于替换局部数据的参考),以及对应局部存储空间是否已经加载数据,数据是否有效等状态存储于局部数据状态存储模块106中,协助局部存储空间的使用。
44.本发明实施例提供的基于gpu的可重构cache系统的工作流程如下:在程序实施前,指令总线发送配置指令到空间配置模块102中,相关的重构参数会存储到空间配置模块102中的寄存器中,然后地址解析模块103就可以根据空间配置模块102中的配置参数,确定cache缓存模块101中的存储空间配置比例,确定两种访存类型对应的地址范围。在程序实施的时候,两种访存类型的访存请求通过数据输入缓冲模块104的数据输入接口和buffer缓冲之后进入到基于gpu的可重构cache系统当中。汇聚的访存请求经过buffer后进去到地址解析模块103中,地址解析模块103将地址位中的有效信息进行解析提取,然后输送到相应流水线中进行访存操作。cache流水线与标准的操作相同,局部存储流水线通过局部数据状态存储模块106将对应的状态进行更新,并通过数据选通过滤模块105对局部存储空间进行数据加载操作或者读取操作。
45.本发明实施例提供的基于gpu的可重构cache系统具有如下有益效果:1.通过将数据分为cache存储空间的数据和局部存储空间中的数据,能够达到两个目的,一个是减少对cache发起访存请求的次数,能够提高cache的命中率,大大减轻了缓存争用的压力;同时在多核心处理单元协同计算的情况下,存储于局部存储空间中的数据也不对cache结构进行请求,共享数据存储于局部存储空间中能加速运算,增大计算的吞吐量。
46.2.设计的可重构cache结构,在存储相同容量的数据的情况下,由于局部存储空间加载和读取数据更简单以及实现的流水线更短,因此避免了更多的电路判断和处理,增大了数据传输的效率,实现了更好的性能。
47.本发明实施例还提供了一种访存系统,如图5所示,该访存系统包括上述基于gpu的可重构cache系统10,还包括与基于gpu的可重构cache系统10连接的核心处理单元20。需要说明的是,核心处理单元20可以是多个。
48.参见图6所示的另一种访存系统的结构示意图,核心处理单元20包括请求分支模块201和一级缓存模块202;基于gpu的可重构cache系统10的层级低于一级缓存模块202的层级;请求分支模块201用于接收当前访存请求,根据当前访存请求的寻址结构确定当前访存请求所属的目标访存类型;当目标访存类型为局部请求时,将当前访存请求传输至基于gpu的可重构cache系统10;当目标访存类型为cache请求时,将当前访存请求传输至一级缓存模块202进行处理,并当一级缓存模块202至基于gpu的可重构cache系统10的上一级缓存模块均未命中当前访存请求所需的数据时,将当前访存请求传输至基于gpu的可重构cache系统10。
49.具体地,基于gpu的可重构cache系统10可以通过连接总线与mesh网络(即无线网格网络)的noc(net on chip,片上网络)节点连接。图6所示的基于gpu的可重构cache系统10位于二级缓存模块的层级(第二层级,即基于gpu的可重构cache系统10相当于l2 cache),但基于gpu的可重构cache系统10不仅限于位于二级缓存模块的层级,往更低层级兼容,如三级缓存模块的层级(第三层级)。在核心处理单元20中,访存请求首先进入请求分支模块201,请求分支模块201本质上就是一个单端输入双端输出的缓冲buffer,对局部性标志位进行判断后,将两类访存请求分不同的总线传输至目的地。若基于gpu的可重构cache系统10位于第三层级,访存类型为cache请求的访存请求可以进入第一层级、第二层级和第三层级(第一层级、第二层级均为命中的情况下),访存类型为局部请求的访存请求则直接进入第三层级(即基于gpu的可重构cache系统10)。
50.本实施例所提供的访存系统,其实现原理及产生的技术效果和前述基于gpu的可重构cache系统实施例相同,为简要描述,访存系统实施例部分未提及之处,可参考前述基于gpu的可重构cache系统实施例中相应内容。
51.本发明实施例还提供了一种访存方法,该方法应用于上述访存系统。参见图7所示的一种访存方法的流程示意图,该访存方法包括如下步骤:步骤s702,基于gpu的可重构cache系统接收表征空间配置比例的配置指令,并存储配置指令对应的配置参数。
52.步骤s704,基于gpu的可重构cache系统根据存储的配置参数,将cache缓存模块的存储空间划分为与cache请求对应的cache存储空间和与局部请求对应的局部存储空间。
53.步骤s706,基于gpu的可重构cache系统接收当前访存请求。
54.步骤s708,基于gpu的可重构cache系统根据当前访存请求的寻址结构,确定当前访存请求所属的目标访存类型。
55.步骤s710,基于gpu的可重构cache系统将当前访存请求的寻址信息传输到与目标访存类型对应的目标流水线中,进行相应存储空间的数据加载读取。
56.其中,目标访存类型包括cache请求或局部请求,目标流水线包括与cache请求对应的cache流水线或与局部请求对应的局部存储流水线。
57.上述访存系统还包括对应于编译阶段的访存请求分析模块,访存请求分析模块位于编译器中。基于此,在步骤s702之前,上述访存方法还包括:访存请求分析模块将访存系统中的各个访存请求分为cache请求或局部请求两种访存类型;访存请求分析模块根据访存系统中两种访存类型对应的请求资源需求,生成表征空间配置比例的配置指令。
58.在一些可能的实施例中,可以通过如下方式对访存请求进行分类:通过对访存系统对应的应用程序数据特征或显存访问模式进行分析,将访存系统中的各个访存请求分为cache请求或局部请求两种访存类型。这两种方式实现起来比较简单,保留的cache请求的命中率较高,可以减少不必要的数据替换,增大核心处理单元的计算吞吐量,使得基于gpu的可重构cache系统带来的增益较大。
59.下面对上述对访存请求进行分类的两种方式进行详细介绍。
60.方式一:对应用程序数据特征进行分析,得到与基于gpu的可重构cache系统对应,且访存系统的各个核心处理单元之间具有共享性、持续性的目标数据,并将针对目标数据的访存请求划分为局部请求,将针对除目标数据之外的其他数据的访存请求划分为cache请求。其中,具有持续性的数据指使用频率大于预设频率的数据。
61.具体地,根据应用程序的数据特征分析出在当前cache层级(基于gpu的可重构cache系统的层级)具有共享性、持续性的数据,将其划分为局部存储空间中存储的数据,将其局部性标志位置为有效位。例如,在一个特殊的应用程序中,需要多个核心处理单元合作计算某个功能函数,该函数的结果为共享参数中的一行数值(如a
i1
····ain
)与核心处理单元中的某一列数值(如b
i1
····bin
)做矩阵运算得到目标结果中的每一行数值,如图8所示。可以得知,共享参数中的这一行数值被多个核心处理单元所共享,共享参数矩阵中的数值在这个应用程序中是持续有效的,假如每一次的运算,每个核心处理单元都需要将这些数据加载进入各自的cache中,在后面又被替换掉,导致cache的命中率下降,这样运算效率很低,而且同样的数值在多个核心处理单元中都需要划分出一片存储空间来存储,会造成资源的浪费。而通过将这些共享性、持续性的数据的访存请求划分为访存类型为局部请求的访存请求,将其存储在局部存储空间中,核心处理单元通过访问局部存储空间直接获取该部分数据,节省了cache结构中tag比对、miss再请求的操作,减轻了核心处理单元中cache的争用压力,否则这些数据也会参与cache的争用。在这个案例中,基于gpu的可重构cache系统位于l2一级,但这种方案对于簇一级的cache(即l3一级)也适用,共享性、持续性的数据则为多个簇之间的共享数据,处理方式同理。
62.方式二:通过对访存系统对应的显存访问模式进行分析,确定访存系统中的各个访存请求之间的合并情况和缓存位置冲突情况;根据合并情况和缓存位置冲突情况,将访存系统中的各个访存请求分为局部请求和cache请求两种访存类型;其中,访存类型为cache请求的访存请求不存在缓存位置冲突,且合并情况优于访存类型为局部请求的访存请求的合并情况。
63.若多个访存请求访问同一cache页的同一行,则合并情况较好,可以合并为一组访存请求。若第一组访存请求均访问第一cache页的第n行,第二组访存请求均访问第二cache页的第n行,则存在缓存位置冲突。
64.具体地,对应用程序常用的显存访问模式进行分析也能够实现对数据进行分类的效果。由于显存的存储空间比cache大得多,显存的空间可以划分为n个cache页,在寻址结构中相同index可以指示不同cache页中对应的同一行,若加载数据都存在显存中不同cache页中的同一行,那核心处理单元的cache结构中的数据需要经常替换,就会导致命中
率极低,吞吐量下降。图9为gpu中常用的显存访问模式的示意图,a对应的访存模式能够从cache结构中获得的效率很低,因为这种访存模式下,cache能够合并的访存地址将会很少,线程调用的数据地址都不相同,将像这种模式的访存请求区分为局部存储空间的请求能够获得更好的效益,直接绕过cache结构。b对应的访存模式,数据都位于同一片cache页中,对于合并访存请求非常友好,因此不会出现cache争用的情况,这种访存模式可以直接区分为cache请求,并能够获得最大的运算带宽和吞吐量。而c则更多是实际应用中常见的访存模式,因为有大量的矩阵运算和复杂的数据映射结构,因此当大量的数据加载到缓存中时,缓存争用和抖动的情况非常严重,其中也不乏一些共享的数据。因此针对这种访问模式,先使用内存合并组件对访存请求进行合并,然后将合并情况较好并且没有缓存位置冲突的数据请求划分为cache请求,剩余部分的请求划分为局部请求。这种实施方案相对更复杂,但是区分的数据请求能够实现较高的cache命中率。
65.下面结合图10对整个可重构cache系统的实现流程做进一步说明。在编译阶段,编译器编译:根据分析算法对数据访存请求进行分类,根据访存请求的资源需求衡量cache存储空间的分配比例。具体地,通过上述可选的实施方案对应用程序的数据特征和显存访问模式进行分析,然后将数据的访存请求区分为cache访存请求和局部存储访存请求两种,并在两种新的寻址结构的局部性标志位上加以区分。通过分析后,也能够得到在当前应用程序下两种访存请求的数量,评估相应所需的存储空间资源大小。
66.编译阶段的工作完成后,程序开始执行,实时系统发送配置指令重新分配cache存储空间,即在初始化阶段将确定的配置参数通过配置指令传输到基于gpu的可重构cache系统的配置指令接口(空间配置模块)上实现对cache结构的重新分配。当核心处理单元发起访存请求时,访存请求进入请求分支模块,判断是否为cache请求。如果是cache请求,则从高层级的cache结构开始逐级判断数据有无命中,高层级cache命中时,高层级cache执行加载,读取;若发生miss则向下一级cache申请访存。如果是局部请求,则绕过cache结构直接进入到可重构的cache结构(即基于gpu的可重构cache系统)中。在本实施例中,除了l1一级的cache不做变动,l2、l3都可以采用可重构的cache结构,因此从可重构的cache结构的上一级miss发出的访存请求和局部请求都会进入到可重构的cache结构中,然后经过地址解析模块区分执行cache流水线还是局部存储流水线,找到对应地址执行加载指令或数据存储,即地址解析模块对访存请求的寻址地址进行分析,然后两种访存请求都可以在各自的流水线中找到对应的地址空间执行加载指令或者读取数据。
67.综上:1.根据应用程序中数据特征和显存访问模式的不同,将核心处理单元的访存请求划分为cache请求和局部请求两种,将局部存储的数据(局部数据)绕过cache缓存结构,直接存储于局部存储空间中。通过这种方式减少对cache缓存结构的请求数量,提高数据的命中率,实现计算吞吐量的最大化。
68.2.gpu中大量的计算单元和寄存器使得它对cache的依赖不像cpu那般大,并且cache的主要作用是帮助线程提高服务,将能够访问相同地址的访存请求合并,再对显存进行访问。但是由于核心处理单元中的并发线程数量大,因此l1 cache的争用还是比较严重的,但是更低层级的cache结构可能在某些应用场景下还留有余量。因此将原始cache缓存结构重构为可分配的cache存储空间和局部存储空间复合的结构,存储于局部存储空间的
数据可以省去cache结构数据命中查询、状态查询及tag比对等一系列的操作,仅需将对应地址的数据读写即可。因此局部存储空间不需要实现一致性操作,并且这种重构的cache结构对l1级以下的结构都适用,如l2、l3等。
69.3.在原有cache的寻址结构上增添局部性标志位和对tag信息位进行修改,达到新的寻址结构兼容访存cache结构和局部存储空间结构,减少代码开发的复杂度,并且能够高度复用原来cache的数据存储电路结构。
70.在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
71.附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
72.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
73.另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
74.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献