CN117609106A - 一种基于访问模式图案变形的存储划分方法及装置 - Google Patents
一种基于访问模式图案变形的存储划分方法及装置 Download PDFInfo
- Publication number
- CN117609106A CN117609106A CN202311152543.0A CN202311152543A CN117609106A CN 117609106 A CN117609106 A CN 117609106A CN 202311152543 A CN202311152543 A CN 202311152543A CN 117609106 A CN117609106 A CN 117609106A
- Authority
- CN
- China
- Prior art keywords
- bank
- memory
- line
- address
- distance
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000006870 function Effects 0.000 claims abstract description 48
- 238000004364 calculation method Methods 0.000 claims abstract description 29
- 238000000638 solvent extraction Methods 0.000 claims description 46
- 238000005192 partition Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 7
- 230000011218 segmentation Effects 0.000 claims description 7
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 abstract description 9
- 238000005265 energy consumption Methods 0.000 abstract description 4
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000003491 array Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提出一种基于访问模式图案变形的存储划分方法,包括,基于传统内存划分方式构建用于存储划分的新型划分函数;通过调度算子的执行时间以调整流水执行时数组的访问模式,对新型划分函数进行简化;根据简化后的新型划分函数设计地址生成单元,通过地址生成单元,对地址计算进行加速。本发明提出的方法,通过简化地址计算、设计专用地址计算单元,减小硬件的开销,从而在性能没有损失的前提下,减小能耗。
Description
技术领域
本发明属于存储优化领域。
背景技术
粗粒度可重构阵列(CGRA)具有运行时可配置的数据路径,是一种很有前途的加速器,可以在灵活性、性能和功率之间提供良好的平衡。配备了粗粒度处理元件(PE)和PE之间的稀疏连接,与细粒度FPGA相比,CGRA的配置开销要小得多。因此,本发明所设计的装置将基于CGRA进行实现。
CGRA通常由处理单元阵列(PEA,Processing Element Array)、灵活的片上网络和多组片上bank组成。通常,从计算密集型应用程序中提取的数据流图(DFG,Data FlowGraph)被映射到处理元素阵列上进行加速。通过直接存储器访问(DMA,Direct MemoryAccess)操作,外部存储器可以与片上数据存储器交换数据。片上数据存储器通常以bank形式组织,使得PE可以通过加载-存储单元(LSU,Load-Store Unit)并行访问数据。PE包含一个功能单元(FU,Function Unit)、一个本地寄存器堆(LRF,Local Register File)和一个输出寄存器。根据多组数据存储器访问地址的方式,CGRA可以分为两大类:耦合访存-计算的CGRA和解耦合访存-计算的CGRA。在耦合访存-计算的CGRA中,访问内存单元的地址是通过PEA中的PE计算得出的,这样的方式是的芯片在面积和功率方面保持了较低的开销,但是它的计算性能也被降低了,因为由于地址生成的额外操作将使用更多的PE来完成。在解耦合访存-计算的CGRA中,存在专用的LSU来确定访问地址。因为在PEA没有地址计算部分,因此它可以达到更好的性能,但其需要设计专用的LSU,硬件能耗较大。
为了加速CGRA上的循环内核(Loop kernels),模调度是一种常用的技术,用于使循环体的DFG以流水线方式执行。通过在资源和依赖性约束最小化相邻迭代之间的初始间隔(II,Initiation Interval)。然而,较小的II也会导致更多的同时内存访问操作。当一个循环包括具有多个引用的数组时,该数组的同时存储器访问次数很容易超过bank的端口数量,甚至超过bank的数量,这将导致访问冲突以及性能上的损失。
为了打破bank的端口限制,通常使用内存分区将原始数据阵列拆分为多个内存组。常规内存分区方法可分为3种类型,块分区、循环分区和块循环分区。在FPGA的高级综合中,内存划分已经得到了很好的研究。在J.Cong等人提出的工作中试图以循环分区的方式将同一迭代中的数据阵列的多个内存访问划分并调度到多个bank。然后,在P.Li等人工作中,调度不同循环迭代中内存访问,以找到接近最优的划分。尽管这些工作为循环流水线的高效内存分区迈出了第一步,但它们仅限于一维数据阵列,而许多实际应用程序通常包括具有多维阵列的嵌套循环。Y.Wang等人的研究提出了一种用于多维内存划分的基于线性变换(LTB)的方法。然而,这种方法仅限于循环划分,在某些情况下可能导致次优解。为了解决LTB存在的缺陷,Y.Wang等人后来又提出了一种基于线性变化的存储划分(GMP)方法来支持多维阵列上的块循环分区,以便在大多数情况下都能找到最优值。但是在GMP所提出的方法中,地址计算公式比较复杂,含有较多的乘除运算,导致地址计算的开销增大。
当存储划分问题来到CGRA时,内存分区更具挑战性,原因有两个:1)CGRA的bank数量非常有限(例如,4至8个bank);2)CGRA对复杂地址生成的容忍度较低。对于数量较少的bank,它迫切需要一种能够实现全局最优(即最小化bank数量)的分区策略。然而,简化的地址生成将失去找到全局优化解决方案的机会。为了解决上述挑战,此前已经提出了几种关于CGRA的存储器分区方案。在S.Yin等人的工作中,通过考虑LTB存储器划分和模调度,提出了一种无冲突循环映射算法。然而,由于只考虑迭代内的内存引用,而忽略了块分区,这项工作受到了局部最小值的影响。此外,如果LTB的地址生成是使用专用LSU来实现的,那么它将在芯片面积和功率方面具有显著的开销。为了简化地址生成的复杂性,D.Wijerathne等人的工作提供了一种解耦的访问执行CGRA(FMP),支持多组存储器的一维阵列分区。对于多维数组,FMP首先通过硬件将其展平为一维数组,然后对展平的数组进行块循环划分。然而,阵列扁平化后的分区取决于阵列大小。对于不同的阵列大小,会生成不同的分区方案,其中许多是次优的。此外,FMP利用平坦化之后的数据进行存储划分导致其划分质量低,大多数时候其算法需要的bank数量远大于实际所需要的bank数量,同时为了满足FMP的bank内地址计算的方便,FMP还需要padding较多的数据在bank中,导致了存储空间的浪费。
综上所述,如何平衡地址生成的开销和划分结果的质量是解决内存划分问题的关键。现有的一些研究为了提高划分结果的质量(GMP),提出了多种划分策略,使得划分函数变得更加复杂,然而复杂的划分函数将导致地址计算变得更加复杂,从而导致实际性能低于预期。另外一些研究则关注地址生成的开销(FMP),通过简化划分函数以及特定的LSU来减小地址生成的开销,忽视了加速器映射过程中其他关键因素的影响,从而导致bank空间的浪费。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的目的在于提出一种基于访问模式图案变形的存储划分方法,用于提升流水性能,降低芯片能耗。
为达上述目的,本发明第一方面实施例提出了一种基于访问模式图案变形的存储划分方法,包括:
基于传统内存划分方式构建用于存储划分的新型划分函数;
通过调度算子的执行时间以调整流水执行时数组的访问模式,对所述新型划分函数进行简化;
根据简化后的新型划分函数设计地址生成单元,通过所述地址生成单元,对地址计算进行加速。
另外,根据本发明上述实施例的一种基于访问模式图案变形的存储划分方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述基于传统内存划分方式构建用于存储划分的新型划分函数,包括:
对于二维数组,定义如下:
其中,为内存划分函数之一,表示将数据映射到存储库bank中,得到bankID;为内存划分函数之一,表示产生数据在bank内部的偏移量地址;N表示需要使用的bank数量,存在于划分函数/>和/>中,di表示数组第i维的宽度。
进一步地,在本发明的一个实施例中,所述通过调度算子的执行时间以调整流水执行时数组的访问模式,包括:
初始化最大移动距离maxDis、最后一行的最小值lastMin、每个元素的实际移动距离列表listDistance,bank信息列表listBankInfo以及控制步列表CS;
计算在资源约束下的最小初始间隔;
对输入数据流图执行逐行分割,并生成总共的访问模式行列表,根据所述访问模式行列表以逐行的方式执行元件移动;
在确定了当前行中的所有元素之后,最小坐标被记录为下一行的lasMin;
对于每个bank,用零初始化相对控制步骤;对于listBankInfo[bank]中的每个元素,按相反的顺序,根据其移动距离、最大距离和II确定相应的控制步长;
在调度了所有内存访问操作之后,在所述初始间隔及其他资源的约束之下,使用整数线性规划进一步调度其他运算操作。
进一步地,在本发明的一个实施例中,所述以逐行的方式执行元件移动,包括:
定义元素向右移动的距离为dis,则根据内存划分函数的计算公式计算相应的bankID;
若新位置与其他元素重叠,并且对应的bank已经被分配了初始间隔个元素,或者对应的坐标小于最后一行的最小坐标和1之间的差,则将移动距离增加1,并试图移动到下一个位置;
否则,将元素添加到listBankInfo[bank],移动距离记录在listDistance中,并更新最大移动距离,同时打破while循环,将元素分配给所获得的bankID;若元素在遍历所有位置后无法分配给一个组,那么初始间隔将增加1,并从头开始重新进行分配。
进一步地,在本发明的一个实施例中,所述地址生成单元包括一个主机控制器、一个DMA单元、一个具有8个存储体的数据存储器以及一个包括时钟分频器和8个LSU的4×4PEA,其中每个PE由支持定点运算的功能单元、本地寄存器文件、输出寄存器和配置缓冲器组成,通过两个多路复用器,为FU选择来自相邻PE或LSU的数据。
为达上述目的,本发明第二方面实施例提出了一种基于访问模式图案变形的存储划分装置,包括以下模块:
划分模块,用于基于传统内存划分方式构建用于存储划分的新型划分函数;
简化模块,用于通过调度算子的执行时间以调整流水执行时数组的访问模式,对所述新型划分函数进行简化;
加速模块,用于根据简化后的新型划分函数设计地址生成单元,通过所述地址生成单元,对地址计算进行加速。
进一步地,在本发明的一个实施例中,所述简化模块,还用于:
初始化最大移动距离maxDis、最后一行的最小值lastMin、每个元素的实际移动距离列表listDistance,bank信息列表listBankInfo以及控制步列表CS;
计算在资源约束下的最小初始间隔;
对输入数据流图执行逐行分割,并生成总共的访问模式行列表,根据所述访问模式行列表以逐行的方式执行元件移动;
在确定了当前行中的所有元素之后,最小坐标被记录为下一行的lasMin;
对于每个bank,用零初始化相对控制步骤;对于listBankInfo[bank]中的每个元素,按相反的顺序,根据其移动距离、最大距离和II确定相应的控制步长;
在调度了所有内存访问操作之后,在所述初始间隔及其他资源的约束之下,使用整数线性规划进一步调度其他运算操作。
进一步地,在本发明的一个实施例中,所述简化模块,还用于:
定义元素向右移动的距离为dis,则根据内存划分函数的计算公式计算相应的bankID;
若新位置与其他元素重叠,并且对应的bank已经被分配了初始间隔个元素,或者对应的坐标小于最后一行的最小坐标和1之间的差,则将移动距离增加1,并试图移动到下一个位置;
否则,将元素添加到listBankInfo[bank],移动距离记录在listDistance中,并更新最大移动距离,同时打破while循环,将元素分配给所获得的bankID;若元素在遍历所有位置后无法分配给一个组,那么初始间隔将增加1,并从头开始重新进行分配。
为达上述目的,本发明第三方面实施例提出了一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的一种基于访问模式图案变形的存储划分方法。
为达上述目的,本发明第四方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的一种基于访问模式图案变形的存储划分方法。
本发明实施例提出的基于访问模式图案变形的存储划分方法,通过调度算子的执行时间,以调整流水执行时数组的访问模式(Pattern),再通过设计的特定LSU装置达到地址生成开销和计算性能之间的平衡,提升流水性能,降低芯片能耗。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种基于访问模式图案变形的存储划分方法的流程示意图;
图2是本发明的调度算法伪代码图;
图3是本发明的所设计的硬件结构图;
图4是本发明的实施示例图;
图5为本发明实施例所提供的一种基于访问模式图案变形的存储划分装置示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的基于访问模式图案变形的存储划分方法。
实施例1
图1为本发明实施例所提供的一种基于访问模式图案变形的存储划分方法的流程示意图。
如图1所示,该基于访问模式图案变形的存储划分方法包括以下步骤:
S101:基于传统内存划分方式构建用于存储划分的新型划分函数;
S102:通过调度算子的执行时间以调整流水执行时数组的访问模式,对新型划分函数进行简化;
S103:根据简化后的新型划分函数设计地址生成单元,通过地址生成单元,对地址计算进行加速。
再对本发明进行详细说明之前,对对一些定义、参数以及相关函数进行明确的说明,以确保整个问题的结构清晰和易于理解,定义如下:
M:M表示数据域,是所有内存元素的集合;
表示一个元素的在n维数据域中的坐标;
di:di表示数组第i维的宽度;
P:表示在一次迭代中,需要访问数组中m个临近的元素;
作为内存划分函数之一,将数据映射到bank中,得到bankID;
作为内存划分函数之一,产生数据在bank内部的偏移量地址;
N:N表示需要使用的bank数量,存在于划分函数和/>中;
表示划分函数中划分超平面的变换系数;
All-one Hyperplane:All-one Hyperplane表示一种对数据域的划分方式,当时,就称之为全一超平面;
Stepped Pattern:Stepped Pattern表示一个可以由全一超平面覆盖的pattern,且对于每一个平面而言,其遍历的元素不超过II个数据元素。
进一步地,在本发明的一个实施例中,基于传统内存划分方式构建用于存储划分的新型划分函数,包括:
对于二维数组,定义如下:
其中,为内存划分函数之一,表示将数据映射到存储库bank中,得到bankID;为内存划分函数之一,表示产生数据在bank内部的偏移量地址;N表示需要使用的bank数量,存在于划分函数/>和/>中,di表示数组第i维的宽度。
从上述公式可以看出,当N是2的幂次方时,%和/可以转换为更为简单的移位和与运算,从而大大减少地址计算的开销。因此,在N是2的幂次方时,地址计算中只有一个乘法计算、两个加法、一个移位和一个与运算。其计算复杂度大大降低,对硬件资源和能量的要求也就更少。
根据初始pattern和阶梯式pattern之间的差异,利用调度算法,使得在流水执行时的pattern变为阶梯式pattern,因此本发明首先调度访问内存操作的算子,然后再调度其余算子。调度算法整体流程如图2所示。以下先对调度算法中各个变量进行解释说明:
maxDis:最大移动距离;
lastMin:最后一行的最小x1值;
listDistance:每个元素的实际移动距离列表;
listBankInfo:bank信息列表;
CS:控制步列表;
M:P中分配给一个bank的元素的最大数目;
patternRows:总共的访问模式行列表;
minPos:当前行的最小位置。
图2给出了本发明提出的调度算法的伪代码,该算法以DFG(D)、访问模式(P)和最大bank数量N为输入,以划分结果、使用的bank数量和调度结果为输出。
首先,本发明初始化maxDis、lastMin、listDistance,listBankInfo以及CS。然后计算在资源约束下的最小II。接下来,对输入DFG执行逐行分割,并生成patternRows。然后,它以逐行的方式从小x_0的行到大x_0的列执行元件移动。之后对于每个patternRows中的每个元素,它首先用零初始化元素的移动距离(dis),再进入while循环以执行单向(向右)元素移动,直到它移动到数据域的边界(d1)之外。假设元素向右移动了dis,它根据的计算公式计算相应的bankID。如果新位置与其他元素重叠,并且对应的bank已经被分配了II个元素,或者对应的x1坐标小于最后一行的最小x1坐标(lastMin)和1之间的差,则它将移动距离增加1,并试图移动到下一个位置。否则,它将元素添加到listBankInfo[bank],移动距离记录在listDistance中,并更新maxDis,同时打破while循环,来将元素分配给所获得的bankID。如果元素在遍历所有位置后无法分配给一个组,那么II将增加1,并从头开始重新进行分配。在每个元素的移动尝试中,当前行的minPos也被更新。在确定了当前行中的所有元素之后,最小x1坐标被记录为下一行的lasMin。在所有元素被成功地分配给bank之后,它根据记录的移动距离来进一步确定控制步。对于每个bank,首先用零初始化相对控制步骤(步骤)。然后,对于listBankInfo[bank]中的每个元素,按相反的顺序,它根据其移动距离、最大距离和II(第30行)确定相应的控制步长,然后将步长增加1。在调度了所有内存访问操作之后,在II及其他资源的约束之下,使用整数线性规划(ILP)进一步调度其他运算操作。
进一步地,在本发明的一个实施例中,通过调度算子的执行时间以调整流水执行时数组的访问模式,包括:
初始化最大移动距离maxDis、最后一行的最小值lastMin、每个元素的实际移动距离列表listDistance,bank信息列表listBankInfo以及控制步列表CS;
计算在资源约束下的最小初始间隔;
对输入数据流图执行逐行分割,并生成总共的访问模式行列表,根据访问模式行列表以逐行的方式执行元件移动;
在确定了当前行中的所有元素之后,最小坐标被记录为下一行的lasMin;
对于每个bank,用零初始化相对控制步骤;对于listBankInfo[bank]中的每个元素,按相反的顺序,根据其移动距离、最大距离和II确定相应的控制步长;
在调度了所有内存访问操作之后,在初始间隔及其他资源的约束之下,使用整数线性规划进一步调度其他运算操作。
进一步地,在本发明的一个实施例中,以逐行的方式执行元件移动,包括:
定义元素向右移动的距离为dis,则根据内存划分函数的计算公式计算相应的bankID;
若新位置与其他元素重叠,并且对应的bank已经被分配了初始间隔个元素,或者对应的坐标小于最后一行的最小坐标和1之间的差,则将移动距离增加1,并试图移动到下一个位置;
否则,将元素添加到listBankInfo[bank],移动距离记录在listDistance中,并更新最大移动距离,同时打破while循环,将元素分配给所获得的bankID;若元素在遍历所有位置后无法分配给一个组,那么初始间隔将增加1,并从头开始重新进行分配。
根据S101中关于内存划分函数的公式,本发明设计了如图3所示的专用LSU。相比之前使用PEA作为地址生成而言,降低了地址计算的复杂度,提高了地址计算的速度同时还提高了PEA的利用率。
进一步地,在本发明的一个实施例中,地址生成单元包括一个主机控制器、一个DMA单元、一个具有8个存储体的数据存储器以及一个包括时钟分频器和8个LSU的4×4PEA,其中每个PE由支持定点运算的功能单元、本地寄存器文件、输出寄存器和配置缓冲器组成,通过两个多路复用器,为FU选择来自相邻PE或LSU的数据。
由于在模调度中仅每II个周期执行一次特定的存储器访问操作,因此clockdivider(DIV)每II个周期生成使能信号传到LSUs。如图3的d部分所示,DIV由累加器(Acc)和maxII比较器组成,其中maxII表示硬件允许的流水线操作的最大II。由于放置在LSU上的存储器存取操作可以在高度为II的流水线窗口中的任何时隙被调度,因此比较器可以用于为在不同时隙工作的LSU生成II使能信号。
图3的b部分展示了可配置LSU的结构。它主要由加载寄存器(LDR)、存储寄存器(STR)、地址生成器(AG)和配置缓冲器组成。如图的e部分所示,AG首先使用由除法器的信号启用的累加器(Accx1),在给定步幅(stride1)和起始值(start1)上生成内存引用的低维分量(x1)。如果x1达到最大值,则Accx1被重置为start1。同时,另一个累加器(Accx0)能够使用独立的步幅(stride0)和起始值(start0)来生成内存引用的高维分量(x0)。然后,根据和/>的计算公式,使用加法器、乘法器、移位器和与门来生成bankID和bank内偏移量。为了简化电路,所使用的bank的数量(N)也被限制为二次幂整数。因此,除法运算被简化为具有常数参数/>的右移器,模运算被简化成具有常数参数N-1的and运算。
在基于访问模式变形的存储器划分中使用全一超平面,可以大大减少硬件中的寻址开销,同时实现最小化的存储体数量。
实施例2
S201:如图4的a部分所示的C++源代码,其中包含4个对B数组的读操作以及三个加法操作。考虑具有4个bank的CGRA。
S202:经过对S201的分析后,可以定义以下相关变量。
S203:经在得到初始pattern之后,本发明就可以通过调度算法来调整流水执行时的pattern形状,具体做法如下:
算法首先初始化参数,然后根据公式得到II的值(II=1)。
在初始化完成之后,就需要遍历pattern中的所有元素点,首先将元素按照行进行划分,在此例中,被划分为3行,因此patternRows=([(x0-1,x1)T],[(x0,x1-1)T,(x0,x1+1)T],[(x0+1,x1)T])。
然后遍历每一行中的所有元素;首先对第一行中的元素(x0-1,x1)T进行判断,将dis初始化为0,然后进入while循环语句,根据的公式可以得到当前元素点对应的bank号,然后判断当前得到的bank号是否满足条件:1)由于元素点在右移dis距离之后,未与当前行中的其他元素重合;2)当前bank中的元素个数小于II;3)当前元素右移dis距离之后,其新的x1位置在lastMin的右边,满足上述三个条件,因此该分配是合法的,将此次分配结果加入到bank分配信息以及距离信息的列表中。
更新minPos。此时第一行中的元素就遍历结束了,紧接着遍历第二行的所有元素,首先遍历(x0,x1-1)T,当dis等于0时,即该点不做任何移动,根据得到的bank号,与(x0-1,x1)T的bank号一样,导致该bank中存放的元素数量超过了II,因此dis=0时不满足,需要继续增加dis,当dis等于1时,满足所有条件,因此将(x0-1,x1)T的划分结果保存,然后继续遍历第二行中的(x0,x1+1)T元素,当dis等于0时,就已经满足了划分的条件,因此将其划分结果保存。最后遍历最后一行的元素(x0+1,x1)T,当dis=0时,根据/>得到的bank号与第二行中的元素(x0,x1+1)T一样,因此需要将dis增加1后再重新进行划分判断,此时满足所有的条件,将其划分结果保存下来。
将以上四个元素点划分完成之后,本发明得到了每一个元素对应的bankID以及其向右移动的距离dis,之后就可以根据dis对每一个load操作进行调度。
调度每一个算子时,本发明按照dis的大小,从大到小依次进行调度,首先本发明对dis等于maxDis(0)的算子((x0,x1+1)T和(x0+1,x1)T)进行调度,将dis为1的算子调度至0时间步;然后将dis等于0的算子,调度至1时间步。此时,本发明就完成了所有bank访问操作的算子的调度;接下来利用ILP对其余算子进行调度,这部分并非本发明的重点,因此其具体细节在此处略过。
S204:在调度完成之后,本发明就可以得到一个如图4的c部分所示的DFG,流水执行后,其同时访问bank的操作如图4的c部分实线方框所示。其次,本发明将此DFG图作为输入,在图3的硬件中流水执行。
经过调度之后,II已经得到了确定,因此DIV可以根据II的值,每II个周期对LSU发送一个使能信号,计算一次地址。如图3的e部分做半部分所示,当使能信号传送到LSU中的AG之后,AG就开始工作,首先Accx1累加器产生x1对应的下标索引,然后判断是否超过了x1的最大值,超过的话,就需要将x0加一,然后x1重置为0,这意味着当前数据行已经被遍历完成。当产生x1和x0之后,图3的e部分的右半部依据和/>的公式计算当前数据的bankID和bank内偏移量。值得注意的是,本发明约定了N的取值为2的次幂,因此可以将/>和/>中的除法和取模运算替换为移位和与操作,这大大降低的运算的复杂度。
当LSU计算出当前需要访问的数据的地址之后,通过LDR将数据传递至PE中进行计算,当PE完成一次计算之后,将计算得到的数据通过LSU中的STR传递至对应的数据位置中即完成了一次迭代运算。
本发明实施例提出的基于访问模式图案变形的存储划分方法,通过调度算子的执行时间,以调整流水执行时数组的访问模式(Pattern),再通过设计的特定LSU装置达到地址生成开销和计算性能之间的平衡,提升流水性能,降低芯片能耗。相对于现有技术,本发明的优点有:
利用整数线性规划将空间加速器上多子图映射的内存分配问题精确地描述为一个双目标优化问题,最终找到适度消耗bank的冲突最小化的解决方案;
将生命周期分析引入到多子图映射的内存分配中,使得过期数据的存储空间能够被及时回收,从而减少了访问冲突和bank的消耗。
为了实现上述实施例,本发明还提出基于访问模式图案变形的存储划分装置。
图5为本发明实施例提供的一种基于访问模式图案变形的存储划分装置的结构示意图。
如图5所示,该基于访问模式图案变形的存储划分装置包括:划分模块100,简化模块200,加速模块300,其中,
划分模块,用于基于传统内存划分方式构建用于存储划分的新型划分函数;
简化模块,用于通过调度算子的执行时间以调整流水执行时数组的访问模式,对新型划分函数进行简化;
加速模块,用于根据简化后的新型划分函数设计地址生成单元,通过地址生成单元,对地址计算进行加速。
进一步地,在本发明的一个实施例中,简化模块,还用于:
初始化最大移动距离maxDis、最后一行的最小值lastMin、每个元素的实际移动距离列表listDistance,bank信息列表listBankInfo以及控制步列表CS;
计算在资源约束下的最小初始间隔;
对输入数据流图执行逐行分割,并生成总共的访问模式行列表,根据访问模式行列表以逐行的方式执行元件移动;
在确定了当前行中的所有元素之后,最小坐标被记录为下一行的lasMin;
对于每个bank,用零初始化相对控制步骤;对于listBankInfo[bank]中的每个元素,按相反的顺序,根据其移动距离、最大距离和II确定相应的控制步长;
在调度了所有内存访问操作之后,在初始间隔及其他资源的约束之下,使用整数线性规划进一步调度其他运算操作。
进一步地,在本发明的一个实施例中,简化模块,还用于:
定义元素向右移动的距离为dis,则根据内存划分函数的计算公式计算相应的bankID;
若新位置与其他元素重叠,并且对应的bank已经被分配了初始间隔个元素,或者对应的坐标小于最后一行的最小坐标和1之间的差,则将移动距离增加1,并试图移动到下一个位置;
否则,将元素添加到listBankInfo[bank],移动距离记录在listDistance中,并更新最大移动距离,同时打破while循环,将元素分配给所获得的bankID;若元素在遍历所有位置后无法分配给一个组,那么初始间隔将增加1,并从头开始重新进行分配。
为达上述目的,本发明第三方面实施例提出了一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的基于访问模式图案变形的存储划分方法。
为达上述目的,本发明第四方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的基于访问模式图案变形的存储划分方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于访问模式图案变形的存储划分方法,其特征在于,包括以下步骤:
基于传统内存划分方式构建用于存储划分的新型划分函数;
通过调度算子的执行时间以调整流水执行时数组的访问模式,对所述新型划分函数进行简化;
根据简化后的新型划分函数设计地址生成单元,通过所述地址生成单元,对地址计算进行加速。
2.根据权利要求1所述的方法,其特征在于,所述基于传统内存划分方式构建用于存储划分的新型划分函数,包括:
对于二维数组,定义如下:
其中,为内存划分函数之一,表示将数据映射到存储库bank中,得到bankID;/>为内存划分函数之一,表示产生数据在bank内部的偏移量地址;N表示需要使用的bank数量,存在于划分函数/>和/>中,di表示数组第i维的宽度。
3.根据权利要求1所述的方法,其特征在于,所述通过调度算子的执行时间以调整流水执行时数组的访问模式,包括:
初始化最大移动距离maxDis、最后一行的最小值lastMin、每个元素的实际移动距离列表listDistance,bank信息列表listBankInfo以及控制步列表CS;
计算在资源约束下的最小初始间隔;
对输入数据流图执行逐行分割,并生成总共的访问模式行列表,根据所述访问模式行列表以逐行的方式执行元件移动;
在确定了当前行中的所有元素之后,最小坐标被记录为下一行的lasMin;
对于每个bank,用零初始化相对控制步骤;对于listBankInfo[bank]中的每个元素,按相反的顺序,根据其移动距离、最大距离和II确定相应的控制步长;
在调度了所有内存访问操作之后,在所述初始间隔及其他资源的约束之下,使用整数线性规划进一步调度其他运算操作。
4.根据权利要求3所述的方法,其特征在于,所述以逐行的方式执行元件移动,包括:
定义元素向右移动的距离为dis,则根据内存划分函数的计算公式计算相应的bankID;
若新位置与其他元素重叠,并且对应的bank已经被分配了初始间隔个元素,或者对应的坐标小于最后一行的最小坐标和1之间的差,则将移动距离增加1,并试图移动到下一个位置;
否则,将元素添加到listBankInfo[bank],移动距离记录在listDistance中,并更新最大移动距离,同时打破while循环,将元素分配给所获得的bankID;若元素在遍历所有位置后无法分配给一个组,那么初始间隔将增加1,并从头开始重新进行分配。
5.根据权利要求1所述的方法,其特征在于,所述地址生成单元包括一个主机控制器、一个DMA单元、一个具有8个存储体的数据存储器以及一个包括时钟分频器和8个LSU的4×4PEA,其中每个PE由支持定点运算的功能单元、本地寄存器文件、输出寄存器和配置缓冲器组成,通过两个多路复用器,为FU选择来自相邻PE或LSU的数据。
6.一种基于访问模式图案变形的存储划分装置,其特征在于,包括以下模块:
划分模块,用于基于传统内存划分方式构建用于存储划分的新型划分函数;
简化模块,用于通过调度算子的执行时间以调整流水执行时数组的访问模式,对所述新型划分函数进行简化;
加速模块,用于根据简化后的新型划分函数设计地址生成单元,通过所述地址生成单元,对地址计算进行加速。
7.根据权利要求6所述的装置,其特征在于,所述简化模块,还用于:
初始化最大移动距离maxDis、最后一行的最小值lastMin、每个元素的实际移动距离列表listDistance,bank信息列表listBankInfo以及控制步列表CS;
计算在资源约束下的最小初始间隔;
对输入数据流图执行逐行分割,并生成总共的访问模式行列表,根据所述访问模式行列表以逐行的方式执行元件移动;
在确定了当前行中的所有元素之后,最小坐标被记录为下一行的lasMin;
对于每个bank,用零初始化相对控制步骤;对于listBankInfo[bank]中的每个元素,按相反的顺序,根据其移动距离、最大距离和II确定相应的控制步长;
在调度了所有内存访问操作之后,在所述初始间隔及其他资源的约束之下,使用整数线性规划进一步调度其他运算操作。
8.根据权利要求7所述的装置,其特征在于,所述简化模块,还用于:
定义元素向右移动的距离为dis,则根据内存划分函数的计算公式计算相应的bankID;
若新位置与其他元素重叠,并且对应的bank已经被分配了初始间隔个元素,或者对应的坐标小于最后一行的最小坐标和1之间的差,则将移动距离增加1,并试图移动到下一个位置;
否则,将元素添加到listBankInfo[bank],移动距离记录在listDistance中,并更新最大移动距离,同时打破while循环,将元素分配给所获得的bankID;若元素在遍历所有位置后无法分配给一个组,那么初始间隔将增加1,并从头开始重新进行分配。
9.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-6中任一所述的基于访问模式图案变形的存储划分方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任意一项所述的基于访问模式图案变形的存储划分方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311152543.0A CN117609106A (zh) | 2023-09-06 | 2023-09-06 | 一种基于访问模式图案变形的存储划分方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311152543.0A CN117609106A (zh) | 2023-09-06 | 2023-09-06 | 一种基于访问模式图案变形的存储划分方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117609106A true CN117609106A (zh) | 2024-02-27 |
Family
ID=89948495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311152543.0A Pending CN117609106A (zh) | 2023-09-06 | 2023-09-06 | 一种基于访问模式图案变形的存储划分方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117609106A (zh) |
-
2023
- 2023-09-06 CN CN202311152543.0A patent/CN117609106A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Roth et al. | Effective jump-pointer prefetching for linked data structures | |
Mittal et al. | A survey of deep learning on cpus: opportunities and co-optimizations | |
US6438747B1 (en) | Programmatic iteration scheduling for parallel processors | |
WO2022068205A1 (zh) | 数据存储和读取方法及系统 | |
Ma et al. | Optimizing tensor contraction expressions for hybrid CPU-GPU execution | |
JP2010033561A (ja) | マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 | |
US6324629B1 (en) | Method for determining an optimized data organization | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Tandri et al. | Automatic partitioning of data and computations on scalable shared memory multiprocessors | |
Kim et al. | Task parallel incomplete cholesky factorization using 2d partitioned-block layout | |
CN112306500A (zh) | 一种针对粗粒度可重构结构的降低多类访存冲突编译方法 | |
CN117609106A (zh) | 一种基于访问模式图案变形的存储划分方法及装置 | |
CN112631610B (zh) | 一种针对粗粒度可重构结构的数据重用消除访存冲突方法 | |
Choi et al. | A lightweight and efficient GPU for NDP utilizing data access pattern of image processing | |
Kandemir et al. | Locality-aware process scheduling for embedded MPSoCs | |
Moon et al. | Generalized multiway branch unit for VLIW microprocessors | |
CN116185377A (zh) | 计算图的优化方法、计算装置及相关产品 | |
Benkner | Optimizing irregular HPF applications using halos | |
Nakano et al. | The super warp architecture with random address shift | |
CN110766150A (zh) | 一种深度卷积神经网络硬件加速器中的区域并行数据载入装置及方法 | |
Kepner et al. | Performance metrics and software architecture | |
US20220100414A1 (en) | Data storage and reading method and device | |
Bi et al. | Efficiently Running SpMV on Multi-Core DSPs for Block Sparse Matrix | |
Li et al. | Memory-Computing Decoupling: A DNN Multitasking Accelerator with Adaptive Data Arrangement |
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 |