一种面向粗粒度可重构阵列的可配置便笺式缓存设计方法

文档序号:28970179发布日期:2022-02-19 15:27阅读:81来源:国知局
一种面向粗粒度可重构阵列的可配置便笺式缓存设计方法

1.本发明涉及可重构阵列的片上缓存领域,尤其涉及一种面向粗粒度可重构阵列的可配置便笺式缓存设计方法。


背景技术:

2.可重构阵列处理器是一种具备优秀的自定义配置能力的新型处理器,可以承担数据密集型运算,也能够相较fpga(field programmable gate array)获得更好的工作频率,实现高性能运算。作为一种灵活性与专用性的折中方案
1.,可重构阵列处理器既可以保持相对于专用集成电路(asic)的较高性能,又可以实现类似fpga一样的高自由度
2.。数据流驱动的可重构阵列每一次运行前首先接收配置信息,配置控制模块将配置信息送入每一个执行单元和每一个互连资源上,应用程序正式启动之后,每个执行单元按照配置好的流程进行运算。
3.粗粒度可重构阵列(coarse-grained reconfigurable array,cgra)指的是阵列中基本计算单元的数据处理宽度是比较大的位宽,例如32比特,这是相对于fpga的单比特的细粒度而言的。粗粒度可重构处理器能够处理各种计算密集型的应用算法,但是由于存储墙问题的广泛性
3.以及静态cgra的算力规模,访存性能对cgra的性能至关重要。在静态cgra中,尽管能够通过丰富的互连资源实现更多的处理单元(processing element,pe)间数据复用,但大量的pe单元在运行中的每个周期仍然需要片上存储系统提供多个新数据,以满足数据流计算的需要。
4.在通用处理器领域,往往使用高速缓存(cache)作为片上存储组织方式。cache的软件透明性使它易于编程,但cache有几个低效率的问题。首先,cache使用间接的、硬件管理的寻址,cache在加载和存储数据时指定了硬件必须转换的地址,并确定其在片上内存中的物理位置。在这种方式下,从性能方面来说,如果同时需要的数据被映射到相同的位置上,则数据会被反复替换、重新载入,即产生冲突缺失问题;从功耗方面来说,每次访问cache,无论是否命中,都会产生标记(tag)比较的开销,以及在电路面积上的损耗。此外,cache从动态随机存储器(dynamic random access memory,dram)中载入(load)数据是被动的,即产生强制缺失问题,发生访存缺失(miss)后才会向发出load请求,这导致计算与dram访存操作一定程度上是耦合的,严重堵塞了数据流,阻碍了阵列计算。
5.同样,因为应用访存特点引入的请求冲突是影响存储性能的另一大重要因素,片上缓存在物理上被分为多组(multi-bank),在同一时钟周期不能访问存储在同一bank但地址不同的数据。若同一bank的两个或多个数据在同一周期被请求,则会发生bank冲突(bank conflict),此时数据无法在同一时钟周期返回,导致数据流阻塞,严重降低性能。
6.由于cgra主要面向如神经网络等计算密集型任务,其输入输出数据一般为图像或张量格式,这意味着任务中往往包含大量线性地址计算,使用包含浮点计算单元的pe执行定点数计算是对算力的一种极大浪费,该问题也可以使用片上访存系统辅助解决。
7.针对可重构阵列的高数据需求量及流水线停顿带来的性能损失,可编程的片上缓
存系统越来越被重视,这种存储系统被视为应对存储墙的重要解决方案。英伟达设计的gpu和一些实时系统中使用暂存器
4.。暂存器可以通过程序员或通过编译器支持在软件中进行管理。与高速缓存不同,暂存器是直接寻址的,因此它们没有标签比较产生的开销,这可以节省大量资源:面积减少34%,功耗降低40%或更多
[5][6]
。直接寻址还消除了冲突未命中的情况,并具有固定的访问延迟。暂存器中存放的均是有效数据,充分利用存储资源。但是,暂存器也存在一些效率低下的问题。首先,暂存器无法全局寻址,它使用与全局地址空间不相交的单独的地址空间,两者之间没有硬件映射。因此,必须在两个空间之间显式地移动数据,从而导致性能和能量开销,数据搬移同样会污染了片上寄存器堆等资源并可能替换掉有用的数据。
[0008]
因此,在片上访存系统中,存储空间的利用、寻址方式、数据的命中率、bank冲突都是影响片上存储性能的因素,在可重构阵列中,都会导致数据流的停顿,从而降低阵列的数据吞吐量。
[0009]
因此,本领域的技术人员致力于开发一种面向粗粒度可重构阵列的可配置便笺式缓存设计方法,能够解决传统片上缓存与异构阵列数据吞吐量不匹配的问题,提升阵列使用性能。
[0010]
参考文献
[0011]
[1].周理.高效可重构阵列计算:体系结构,设计方法与程序映射技术研究[d].国防科学技术大学,2014.
[0012]
[2].galanis m d,theodoridis g,tragoudas s,et al.a reconfigurable coarse-grain data-path for accelerating computational intensive kernels[j].journal of circuits,systems,and computers,2005,14(04):877-893.
[0013]
[3].赵佳良.异构多核网络处理器中高性能共享存储器系统关键技术研究[d].西安电子科技大学.
[0014]
[4].owens j d,houston m,luebke d,et al.gpu computing[j].proceedings of the ieee,2008,96(5):879-899.
[0015]
[5].banakar r,steinke s,lee b s,et al.scratchpad memory:a design alternative for cache on-chip memory inembedded systems[c]//proceedings of the tenth international symposium on hardware/software codesign.codes 2002(ieee cat.no.02th8627).ieee,2002.
[0016]
[6].chao l,yi y,dai h,et al.understanding the tradeoffs between software-managed vs.hardware-managed caches in gpus[c]//ieee international symposium on performance analysis of systems&software.ieee,2014.


技术实现要素:

[0017]
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是传统的片上缓存在粗粒度可重构处理器中使用时存在的bank冲突问题,以及传统的片上缓存在粗粒度可重构处理器中使用时存在的强制缺失、冲突缺失问题。
[0018]
为实现上述目的,本发明提供了一种面向粗粒度可重构阵列的可配置便笺式缓存设计方法,其特征在于,所述方法包括:
[0019]
按数据流和数据流组的方式组织所需要的数据,构建所述数据流和所述数据流组的参数配置;
[0020]
通过计数循环结束标志获取应用执行状态,设置所述数据流组状态切换指令和有限状态机,同步控制缓存中的所述数据流和数据执行相应操作。
[0021]
进一步地,所述数据流为同一个访存单元在时间上串行访问的数据,多个访存单元并行访问的数据存在于多个数据流中;所述数据流组为访问模式类似或者数据相关的几个数据流;不同的所述数据流存储在不同的物理bank上。
[0022]
进一步地,每个所述数据流的配置参数包括:数据流编号、该数据流对应的数据的初始物理地址、该数据流对应的数据的每次更新增加的物理地址、初始状态下该数据流是否与访存单元绑定、初始状态下该数据流对应的访存单元的编号、每次更新后该数据流需要对应的数据流编号、数据是否需要写回。
[0023]
进一步地,每个所述数据流组的配置参数包括:数据流组编号、并行访问该数据流组的访存单元的数量、一段需要串行访问数据的个数、每个数据流组对应的数据流的数量、是否需要预取、每次需要主动预取的数据流的数量。
[0024]
进一步地,通过计数循环结束标志获取应用执行状态指每个所述数据流组内通过计数由访存单元所发出的连续的所述循环结束标志获取应用执行状态,不同数量的所述循环结束标志对应不同的所述状态切换指令。
[0025]
进一步地,所述状态切换指令包括;
[0026]
空指令:不进行操作;
[0027]
滑动指令:进行数据流组内的滑动,每个访存单元对应的数据流进行平移,滑动距离为配置参数;
[0028]
释放指令:释放访存单元对应的数据流组内的数据;
[0029]
重置指令:将访存单元对应的数据流恢复成初始配置,进行下一轮的计算,复用该数据;
[0030]
指定滑动指令:进行组内的滑动,每个访存单元对应的数据流进行平移,滑动距离为显式声明的n;
[0031]
定位指令:直接定位到下一个矩阵,矩阵参数配置在该组内的全局信息中。
[0032]
进一步地,根据不同的访存请求和配置,所述有限状态机决定是否进行预取、更新流寄存器堆的内部数据;所述有限状态机由六个状态组成,包括:空闲态、执行态、收集态、收集完成态、等待态、更新态。
[0033]
进一步地,所述执行态指在此状态下处理普通访存包括load和store请求;
[0034]
所述收集态指当检测到所述循环结束标志时,开始收集所述循环结束标志并计数;
[0035]
所述收集完成态指在此状态下发送所述循环结束标志的计数值;
[0036]
所述等待态指等待同组内的所有数据流均收集齐并发送计数值,并且检查计数值是否全部相等,正常数据流中,同组内的所有计数值应当相等;
[0037]
所述更新态指根据计数值查表得到要执行的更新指令,进行自动的数据迭代更新。
[0038]
进一步地,所述可配置便笺式缓存接收访存单元发来的读取、写入数据请求时仅
需要提供数据的行内偏移地址。
[0039]
进一步地,访存单元所访问的数据在sram的地址由访存单元所绑定的数据流所在的bank地址、数据流内当前的行基地址、行内偏移地址共同决定,由所述可配置便笺式缓存自动计算。
[0040]
与现有技术相比,本发明至少具有如下有益技术效果:
[0041]
本发明设计的可配置便笺式缓存可以解决cache中存在的问题,具有易于使用、可预取、可编程的自动图像边界处理、可消除访存冲突、减少延迟等特征。利用可编程的访存模式,最大化片上数据复用,同时支持访存和计算的解耦合,提高阵列的计算效率。
[0042]
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
[0043]
图1是典型异构可重构阵列的示意图;
[0044]
图2是本发明的一个较佳实施例的片上可配置便笺式缓存结构图;
[0045]
图3是本发明的一个较佳实施例的内部状态及其转换示意图;
[0046]
图4是本发明的一个较佳实施例与普通缓存执行时间对比图;
[0047]
图5是本发明的一个较佳实施例的配置示意图;
[0048]
图6是本发明的一个较佳实施例的数据存储模式示意图。
具体实施方式
[0049]
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
[0050]
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。
[0051]
典型的粗粒度可重构阵列由多个可重构阵列切片组成,每个切片由计算阵列、片上缓存、配置控制器及任务控制器构成。图1为典型异构可重构阵列的示意图。从功能上可以将整个cgra系统划分为三个主要部分:可重构阵列、存储系统和控制模块。基本工作原理是将对应用算法的描述存放在配置存储器中,该配置决定了每个处理单元的功能和互连网络的数据交换方式,类似定制计算中算法到硬件电路的映射。通过改变配置存储器的内容,就可以重新构造处理单元和互连网络。处理单元通常称为pe,承担主要的计算功能,阵列中会有大量pe呈规则排布,根据不同的需要,不同的可重构处理器pe可以执行的功能与结构可能千差万别。
[0052]
本实施例以图1所示的静态异构阵列为基础,在此阵列上对不同应用进行映射,不允许计算单元的时分复用,并通过指示循环结束的last信号实现数据流的循环控制。
[0053]
针对不同算法具有不同的访存模式,本实施例通过显式控制片上数据更新时间,最大化数据在片上的复用,减少不必要的dram访问,降低dram带宽压力,并减少访存功耗。
[0054]
本实施提出片上可配置便笺式缓存(configurable scratchpad memory,cspm),
其结构示意图如图2所示,其中虚线部分是编程人员进行配置的部分。cspm显式控制数据的存放位置,按流的方式组织数据,同一个访存单元lse在时间上串行访问的数据组织为一个流,多个lse并行访问的数据存在于多个流中。不同的流被存储在不同的物理bank上,既解决bank冲突带来的性能损失,又简化程序员的编程映射难度。将访问模式类似或数据相关的几个流组织为一个组,将所有数据组织为若干个组,满足整个算法的需要。
[0055]
针对数据流异构可重构阵列的特点及应用的访存特点,本实施例提出如表1所述每个数据流和数据流组的编程参数。
[0056]
表1可配置便笺式缓存中数据流和数据流组的编程参数表
[0057][0058][0059]
cspm中的每个数据流组内通过计数由lse所发出的连续的last信号获取应用执行状态,不同数量的last信号对应不同的由配置人员指定的操作,存储于更新控制模块的指令表中。每个组内可以根据应用执行状态进行不同的操作,包括切换流、重置数据指针、清除数据等。本实施例设计了一套数据更新指令和完备的编程参数以进行便笺式缓存的配置,其具体指令如下表2所示。配置人员可以根据算法的特性,规定每个数据流组在收集到不同数量连续last信号之后执行不同操作。
[0060]
表2可配置便笺式缓存数据流组状态切换指令表
[0061][0062]
根据不同的访存请求和配置,cspm内部有限状态机决定是否进行预取、更新流寄存器堆的内部数据,包括对应的lse、物理地址信息。当检测到last信号时,进入收集last的状态,根据连续接收到的不同的last信号的数量,查找指令表以执行不同的指令,其状态机内部状态图如图3所示。状态解释见下表3。
[0063]
表3可配置便笺式缓存状态表
[0064][0065][0066]
实施例2:
[0067]
本实施例主要提出一种面向cgra的可配置便笺式缓存架构,通过将经典的卷积神经网络yolov3-tiny中的13个卷积层(卷积层尺寸如表4所示)映射在分别使用可配置便笺式缓存架构和使用两路16组cache的粗粒度可重构阵列处理器上,获取不同片上访存架构下的算力配置情况和算法执行的周期数,体现可配置便笺式缓存的技术效果。
[0068]
表4 yolov3-tiny卷积层尺寸
[0069][0070]
从算力配置情况上来说,采用16个8*8的pe阵列映射上述算法。针对上述13个卷积层,主要采用了3种不同的阵列pe互联结构,对于第一层,将16个输出通道展开在16个阵列上,每个阵列展开3个输入通道的结果并相加写回,用于核心计算的pe数量为36个,使用可配置便笺式缓存节省了1个用于地址计算的pe。对于其他卷积核大小为3*3的卷积层,在16个阵列上展开输出通道,在阵列上同时计算相同输出通道和输入通道的不同行,在使用cache的情况下可以同时计算3行,在使用可配置便笺式缓存时可同时计算4行,造成这种差异的原因是自动数据更新节省了用于地址计算的pe,转而可以用于核心的卷积运算。对于1*1的卷积层,同样在16个阵列上展开输出通道,在阵列上同时计算4个输出通道的4行结果,在阵列上累加若干个输入通道的结果后再写回,这种配置下使用可配置便笺式缓存节省了3个用于地址计算的pe,降低了阵列上的功耗开销。在由于加入了自动数据更新机制,用于核心计算的pe数量平均增加了7.4个,用于地址计算的pe平均减少了6.7个。
[0071]
表5不同配置下用于核心计算和地址计算的pe数量
[0072][0073]
从执行时间上来说,使用上述配置方式,本实施例使用误差率在5%以内的周期精确的模拟器仿真使用缓存和使用可配置便笺式存储器时yolov3-tiny中13个卷积层的执行时间。图4给出了13个卷积层在使用缓存时和使用可配置便笺式缓存时执行时间对比,根据统计,执行时间平均提升4.21倍,极大改善了由于bank冲突、计算访存耦合、缓存强制缺失、cache块冲突缺失等因素造成的性能损失。
[0074]
实施例3:
[0075]
使用整个系统计算卷积,设包含3个输入图像(feature map),每张图的大小为5*
5,计算一张输出图像,卷积核大小为1*1,步长为1。如图5所示,上半部分为pe和lse组成的计算阵列,组织成脉动阵列(systolic arry)的形式计算,下半部分为可配置便笺式缓存,其完整的配置如表6所示。
[0076]
表6可配置便笺式缓存配置
[0077]
last数量1234输入图像组changechange_2restartrealse输出图像组nullchangenullrealse
[0078]
对于输入图像,每次需要取出3行1列的数据用于计算,遍历图像的顺序为:

按列遍历,在每一行结束后切行,即lse绑定的流需要切换,对应表6中输入图像组在1个last后执行change操作;

按行遍历,在遍历完所有的行后,需要切换下一张图片,由于一般不同通道的数据在内存中连续存储,因此更新图片数据的方式不变,但切行时共需要切换3行,对应表6中输入图像组在2个last后change_2操作;另一方面,由于需要将不同输入通道的计算结果累加,因此输出通道组在2次last后(一个输入通道计算完成),执行change操作,le3读取上一次计算的部分和结果并与新的结果相加后有se0写回,形成了乒乓缓冲区(ping-pong buffer);

按输入通道遍历,在遍历完所有的输入通道后,一个输出通道计算完成,需要重新开始遍历输入数据,以便计算下一个输出通道,这种需要由表6中输入通道组在3个last后restart操作;

按输出通道遍历,在遍历完所有的输出通道后,计算完成,释放数据,对应表6中输入图像组和输出通道组在4个last后release操作。
[0079]
在开始计算之前,需要配置输入通道组和输出通道组以及其中每个数据流的初始状态等信息,如表7所示。由于输入通道数为3个,因此最终输出结果将存储在数据流4中,因为数据流4的write back项配置为true。组内的数据流需要循环切换,每个数据流的next stream id项设定了当前其绑定的lse下一次切换后应绑定至的数据流id。
[0080]
表7数据流配置
[0081][0082]
基于上述配置,系统可以完成神经网络卷积层的计算,数据在sram中的存储模式将如图6所示,这种存储模式将非常有利于卷积计算,所有阵列需要的数据将完全命中,且
同时需要的数据均存储在了不同的物理bank中,不会发生冲突问题,有效数据同样不会被提前释放或替换。此外,由于相对于cache节省了用于地址计算片上算力,更多的资源用于了核心卷积计算。在整体设计上,删除了cache中大量的地址比较电路和标签存储电路。
[0083]
综上,使用可配置便笺式缓存使得粗粒度可重构阵列的计算性能大大提高,功耗大大降低。
[0084]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1