CN112925727B - Tensor高速缓存及访问结构及其方法 - Google Patents
Tensor高速缓存及访问结构及其方法 Download PDFInfo
- Publication number
- CN112925727B CN112925727B CN202110280834.2A CN202110280834A CN112925727B CN 112925727 B CN112925727 B CN 112925727B CN 202110280834 A CN202110280834 A CN 202110280834A CN 112925727 B CN112925727 B CN 112925727B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- tensor
- core
- slice
- 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
Images
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/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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种Tensor高速缓存及访问结构及其方法,包括:S1.获取Tensor高速缓存的Tensor结构变量与关联矩阵的映射关系;S2.根据映射关系执行a)或b):a)将主存中关联矩阵的数据加载到Tensor高速缓存中;b)将Tensor高速缓存中的数据写入主存中的关联矩阵处。本方案将主存中关联矩阵的数据映射提取到Tensor高速缓存片中,并且将关联矩阵的数据切割分别放置在不同的缓存片中,便于后续的数据转换及并行运算,同时能够提高有限的片上存储器的利用率;Tensor高速缓存的数据多维分布,并且数据多维并行处理,能够有效提高数据处理效率,同时能够有效避免存储体访问冲突的问题;实现数据的缓存访问及并行处理,避免片上存储空间的浪费以及数据访问延迟不一致的问题。
Description
技术领域
本发明属于数据缓存和访问技术领域,尤其是涉及一种Tensor高速缓存及访问方法。
背景技术
深度学习和图像处理等算法具有访存和计算规整的特点,目前,针对深度学习和图像处理等算法的数据缓存及访问主要有以下三种方式:
1)私有Cache,共享地址空间
2)独立的便签式存储器
3)共享Cache
但是在共享Cache的情况下采用多个计算引擎进行处理容易产生访存调度复杂和存储体访问冲突的问题。而在采用私有Cache/独立的便签式存储器时,由于同一数据在片上存在多份拷贝,会导致有限的片上存储空间的浪费以及数据访问延迟不一致的问题。
发明内容
本发明的目的是针对上述问题,提供一种Tensor高速缓存及访问结构及其方法。
为达到上述目的,本发明采用了下列技术方案:
一种Tensor高速缓存及访问方法,包括:
S1.获取Tensor高速缓存的Tensor结构变量与关联矩阵的映射关系;
S2.根据映射关系执行a)或b):
a)将主存中关联矩阵的数据加载到Tensor高速缓存中;
b)将Tensor高速缓存中的数据写入主存中的关联矩阵处。
在上述的Tensor高速缓存及访问方法中,所述的Tensor结构变量包括访问Tensor高速缓存所需要的多维坐标,每个多维坐标项唯一确定一个存储体;
且在步骤S2的指令a)中,通过关联矩阵到多维坐标的映射关系确定一个或多个存储体,并将主存中关联矩阵对应的数据加载到所确定的存储体中;
在步骤S2的指令b)中,根据给定的一个或多个多维坐标项确定相应的一个或多个存储体,并根据映射关系将所确定存储体中的数据写入主存中相应的关联矩阵处。
在上述的Tensor高速缓存及访问方法中,所述的Tensor高速缓存包括至少一个缓存块,每个缓存块上具有二维阵列分布的多个缓存片,每个缓存片上具有二维阵列分布的多个存储体,且每个缓存片对应有一个计算核心以进行缓存片维度上的并行处理和存储体维度上的并行处理。
在上述的Tensor高速缓存及访问方法中,每个计算核心均包括访存部件以使每个缓存片对应于独立的访存部件;
每个计算核心包括寄存器以使每个计算核心均能够暂存数据;
且步骤S2还包括,进一步根据执行指令执行c)-g)的任意一项或多项:
c)由访存部件将Tensor高速缓存中的数据加载到寄存器中;
d)将寄存器中的数据保存到Tensor高速缓存中;
e)将某一列计算核心的数据广播到其他列上;
f)将某一行计算核心的数据广播到其他行上;
g)将某一个计算核心的数据广播到其他计算核心上。
在上述的Tensor高速缓存及访问方法中,在步骤S1中,同时获取二维空间上关联矩阵与Tensor结构变量两者顶点之间的偏移关系,且在步骤S2中,同时根据偏移关系执行相应指令。
在上述的Tensor高速缓存及访问方法中,在指令c)执行过程中,首先判断本计算核心的访存部件所访存的缓存片是否是本计算核心所需要的,若是,则直接访问,否则获取本计算核心所需要的缓存片,并将该缓存片的数据转存至本计算核心;
在指令d)执行过程中,当本计算核心的访存部件所访存的缓存片不是本计算核心所需要时,将本计算核心寄存器中的处理数据保存至本计算核心所需要的缓存片,否则直接保存至本计算核心对应的缓存片。
一种Tensor高速缓存及访问结构,包括数据多维分布的Tensor高速缓存,且所述Tensor高速缓存的多维坐标与主存中的关联矩阵具有映射关系,且所述的Tensor高速缓存连接有Tensor加载/存储部件,所述的Tensor加载/存储部件用于根据映射关系将主存中关联矩阵的数据加载到Tensor高速缓存中或将Tensor高速缓存中的数据写入到主存中的关联矩阵处。
在上述的Tensor高速缓存及访问结构中,所述的Tensor高速缓存连接有阵列计算单元,所述的阵列计算单元包括计算核心,所述的Tensor高速缓存包括二维或多维阵列分布的多个缓存片,且每个缓存片对应有一个所述的计算核心。
在上述的Tensor高速缓存及访问结构中,所述的计算核心包括寄存器和访存部件,所述的寄存器用于暂存数据以为计算提供数据或暂存计算所得的处理数据,所述的访存部件用于访存相应的缓存片,且阵列单元中的计算核心4通过核间通信模块实现计算核心之间的数据交换。
在上述的Tensor高速缓存及访问结构中,所述的Tensor高速缓存从二维或三维上被切分为多个缓存块,每个缓存块上具有二维阵列分布的多个缓存片,每个缓存片上具有二维阵列分布的多个存储体,所述Tensor高速缓存的多维坐标的每个多维坐标项唯一对应一个存储体。
本发明的优点在于:把主存中关联矩阵的数据映射提取到Tensor高速缓存片中,并且将关联矩阵的数据切割分别放置在不同的缓存片中,便于后续的数据转换及并行运算,同时能够提高有限的片上存储器的利用率;Tensor高速缓存的数据多维分布,并且数据多维并行处理,能够有效提高数据处理效率,同时能够有效避免存储体访问冲突的问题;实现数据的缓存访问及并行处理,避免片上存储空间的浪费以及数据访问延迟不一致的问题。
附图说明
图1为本发明中Tensor高速缓存的数据多维分布示意图;
图2为本发明中Tensor高速缓存的架构图;
图3是本发明中计算核心所对应的缓存片不是本计算核心所需要数据情况的示意图;
图4是本发明卷积网络应用中的数据块加载示意图。
附图标记:Tensor高速缓存1;缓存片11;Tensor加载/存储部件2;主存3;阵列计算单元40;计算核心4;寄存器41;访存部件42。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步详细的说明。
本实施例公开了一种Tensor高速缓存及访问结构及其方法,主要针对二维/三维规整式数据访问与处理的一种数据缓存、访问及并行处理方案。
如图1所示,本方案包括数据多维分布的Tensor高速缓存1,具体地,Tensor高速缓存1从三维上被切分为多个Block缓存块,每个缓存块上具有二维阵列分布的多个Slice缓存片,每个缓存片上具有二维阵列分布的多个存储体。
Tensor结构变量tensor的参数如下:
第三维上的长度:DIM;
二维上包含的Block缓存块阵列:BLOCK={BLOCK_ROW,BLOCK_COLUMN};
每个缓存块包含的Slice缓存片阵列:SLICE={SLICE_ROW,SLICE_COLUMN};
每个缓存片11上具有Core存储体阵列:CORE={CORE_ROW,CORE_COLUMN};
BLOCK_ROW、BLOCK_COLUMN分别指缓存块在二维阵列上的x轴坐标与y轴坐标的最大值;
SLICE_ROW,SLICE_COLUMN分别指缓存片在一块缓存块上的x轴坐标与y轴坐标的最大值;
CORE_ROW,CORE_COLUMN分别指存储体在一片缓存片上的x轴坐标与y轴坐标的最大值。
在实际投入应用时,为了简化地址映射的计算,BLOCK_ROW、BLOCK_COLUMN、SLICE_ROW、SLICE_COLUMN、CORE_ROW、CORE_COLUMN可以取2的幂。在实际实现中,BLOCK由用户指定,SLICE通常与计算核心阵列相对应,此时可以根据上述两项得到CORE_ROW和CORE_COLUMN。
所以,对Tensor的访问需要如下七维坐标:
(dim,block.x,block.y,slice.x,slice.y,core.x,core.y)
Tensor高速缓存1多维坐标的每一个多维坐标项唯一对应一个存储体。
具体地,Tensor高速缓存1的多维坐标与主存3中的关联矩阵具有映射关系。且如图2所示,Tensor高速缓存1连接有Tensor加载/存储部件2,Tensor加载/存储部件2用于根据映射关系将主存3中关联矩阵的数据(整个关联矩阵或关联矩阵中某个关联矩阵块的数据,具体由指令指定的范围确定)加载到Tensor高速缓存1中,或将Tensor高速缓存1中的数据(全部或部分数据,同样由指令指定范围)写入到主存3中的关联矩阵处,执行关联矩阵和Tensor高速缓存1之间的相互映射关系,当所访问的Tensor高速缓存的地址超过关联矩阵的边界时,如果是存储到关联矩阵中去,则将数据舍弃,如果是从关联矩阵中加载,那么补0,并将Tensor高速缓存中相应的有效标志位置位,表示该数据无效。
Tensor加载/存储部件2至少包括Tensor缓存控制器和访存总线,还可以包括DMA和片上高速缓存等部件。
在投入应用前,先根据应用定义一个或多个关联矩阵,如定义关联矩阵matrix[N1][N2][N3],同时定义Tensor高速缓存1的Tensor结构变量tensor(DIM,BLOCK,SLICE,CORE),以及Tensor结构变量与关联矩阵的映射关系,以及二维空间上两者顶点之间的偏移关系(V_OFFSET,H_OFFSET),偏移关系为矩阵左上顶点相对于Tensor左上顶点之间的距离,该值可正可负,这样定义的目的主要是为了边界处理的方便,因为,通常矩阵或图像边界上的点的处理方式与位于中间位置的点不同。
Tensor高速缓存1的多维坐标与主存3中的关联矩阵之间的具体映射关系根据具体的算法确定,如,可以为如下的映射关系:
1、关联矩阵到Tensor的地址映射关系
matrix[i][j][k]->tensor(dim,block.x,block.y,slice.x,slice.y,core.x,core.y)
dim=i;
j’=(j+V_OFFSET);
k’=(k+H_OFFSET);
block.x=j’/(SLICE_ROW*CORE_ROW);
block.y=k’/(SLICE_COLUMN*CORE_COLUMN);
slice.x=(j’-block.x*SLICE_ROW*CORE_ROW)/CORE_ROW=j’/CORE_ROW-block.x*SLICE_ROW;
slice.y=(k’-block.y*SLICE_COLUMN*CORE_COLUMN)/CORE_COLUMN=k’/CORE_COLUMN-block.y*SLICE_COLUMN;
core.x=j’%CORE_ROW;
core.y=k’%CORE_COLUMN;
2、Tensor到关联矩阵的映射关系
tensor(dim,block.x,block.y,slice.x,slice.y,core.x,core.y)->matrix[i][j][k]
i=dim;
j=block.x*SLICE_ROW*CORE_ROW+slice.x*CORE_ROW+core.x+V_OFFSET;
k=block.y*SLICE_COLUMN*CORE_COLUNM+slice.y*CORE_COLUMN+core.y+H_OFFSET;
上面的计算中,“/”表示整除,“%”表示取模运算;
针对不同的算法还可以使用其他不同的映射关系,在此不进行赘述。
进一步地,如图2所示,Tensor高速缓存1连接有阵列计算单元40,与阵列计算单元40一起使用以加速卷积网络和矩阵乘等算法。阵列计算单元40包括计算核心4,每个计算核心4对应一个缓存片11。并且阵列计算单元40中通过核间通信模块实现计算核心4之间的数据交换,核间通信模块主要包括垂直通信网络和水平通信网络,其中垂直通信网络用于数据的水平循环移动和/或水平广播,垂直通信网络用于数据的垂直循环移动和/或垂直广播。当然也可以进一步增加一维或两维通信网络以实现更高维度上计算核心4之间的通信,从而进一步提高并行性。
本方案所有的缓存片11统一编码,保存关联矩阵中的不同内容。Tensor高速缓存的目录项中地址编码方式如下,每个项所占的位数与具体硬件实现相关。
slice.x | slice.y | Tensor编号 | dim | block.x | block.y | core.x | core.y |
能够将关联矩阵的数据切割分别放置在不同的缓存片11中,便于后续的数据转换及并行运算,同时能够提高有限的片上存储器的利用率。
进一步地,计算核心4包括寄存器41和访存部件42,寄存器41用于暂存数据以为计算核心进行计算提供所需的数据或暂存计算核心11计算所得的处理数据。每个访存部件42访存本计算核心对应的缓存片11,使每个缓存片对应于一个独立的访存部件42,实现每个缓存片11与计算核心4之间的独立访存带宽。但是本计算核心4需要的数据可能在其他计算核心4对应的缓存片11上,而自身的访存部件42访问的是另外的计算核心4所需要的缓存片11。所以寄存器41与缓存片11之间的相互访问需要先判断本计算核心4的访存部件42所访存的缓存片11是否是本计算核心4所需要的,若否,则获取本计算核心4所需要的缓存片11,在将数据从缓存片11加载至计算核心4时,通过目标计算核心4处的访存部件42访问相应的缓存片11,然后通过核间通信模块将数据移动至本计算核心,数据可以直接移动至本计算核心4的寄存器用于计算,也可以移动至本计算核心4能够直接访问的缓存片11中;在将数据从计算核心4加载至缓存片11时,将计算核心4中寄存器41的数据通过核间通信模块移动至目标计算核心4,然后通过目标计算核心4上的访存部件42将数据加载至相应的缓存片11。
如图3中,a计算核心需要的数据在b计算核心对应的b缓存片上,而a计算核心的a访存部件所访问的是c计算核心所需要的a缓存片,当a计算核心需要从缓存片11加载数据时,通过核间通信模块将b缓存片中的数据转换到a计算核心4。当a计算核心a需要将数据加载至缓存片11时,将a寄存器中的数据通过核间通信模块移动至b计算核心,然后通过b访存部件将数据加载至b缓存片。
具体地,通过以下方式判断本计算核心4的访存部件42所访存的缓存片11是否是本计算核心4所需要的:
Tensor结构变量中所包含的信息有:DIM
BLOCK={BLOCK_ROW,BLOCK_COLUMN}
SLICE={SLICE_ROW,SLICE_COLUMN}
CORE={CORE_ROW,CORE_COLUMN}
显式给出的坐标信息有:dim、block={block.x,block.y}、slice_offset={slice_offset.x,slice_offset.y}、core={core.x,core.y};
访存部件42所处的计算核心编号给出slice={slice.x,slice.y};
计算过程如下:
(1)首先计算访问的地址位于哪一个缓存片(slice)上
modify_slice.x=((core.x/CORE_ROW)+slice_offset.x)%SLICE_ROW
modify_slice.y=((core.y/CORE_COLUMN)+slice_offset.y)%SLICE_COLUNM
(2)利用修正信息计算新访问地址的缓存片
new_slice.x=(slice.x-modify_slice.x)%SLICE_ROW
new_slice.y=(slice.y-modify_slice.y)%SLICE_COLUMN
(3)计算新访问地址的core
new_core.x=core.x%CORE_ROW
new_core.y=core.y%CORE_COLUMN
(4)计算新访问地址的block
new_block.x=block.x+(new_slice.x+core.x/CORE_ROW)/SLICE_ROW
new_block.y=block.y+(new_slice.y+core.y/CORE_COLUMN)/SLICE_COLUMN
(5*5,45*5,5*5/40)%8=1;
modify_slice.y=(45*5%40=5*5%40=5*5/40)/8=1;
new_block.y=0+(7+45*5,5*5)将某一列计算核心上的数据广播到其他列上去(水平广播)
TENSOR_HBROADCAST tensor,dim,block,slice,core,register
该指令将由dim、block、slice.y和core指定坐标的tensor中的数据广播到其他列的register中去,忽略slice.x。
(6)将某一个行计算核心访问的数据广播到其他行上去(垂直广播)
TENSOR_VBROADCAST tensor,dim,block,slice,core,register
该指令将由dim、block、slice.x和core指定坐标的tensor中的数据广播到其他行的register中去,忽略slice.y。
(7)将某一个计算核心访问的数据广播到其他计算核心上去(全局广播)
TENSOR_BROADCAST tensor,dim,block,slice,core,register
该指令将由dim、block、slice和core指定坐标的tensor中的数据广播到其他所有计算核心的register中去。
上面是本方案进行数据缓存和访问的一些相关指令,当然,在投入使用时除了上面的指令还需要其他的一些指令,不在此赘述,上面指令的具体格式也可以进行一些变动,本方案对此不限制。
下面使用具体的应用例对本方案进行可行性分析:
1)卷积网络
在矩阵matrix[1280][1280]上进行3*3的卷积,卷积参数为filter[3][3]。首先,建立一个Tensor变量结构变量tensor,将该tensor与matrix关联,并设置tensor的参数为:DIM=1、BLOCK_ROW=5*5、SLICE_ROW=8、SLICE_COLUMN=8、CORE_ROW=32、CORE_COLUMN=32,将矩阵划分为5*5个的块。
建立一个用于保存计算结果的矩阵matrix_res[1278][1278],及与其关联的tensor_res,设置参数为:DIM=1、BLOCK_ROW=5*5、SLICE_ROW=8、SLICE_COLUMN=8、CORE_ROW=32、CORE_COLUMN=32,将矩阵划分为5*5个的块。
然后,采用TENSOR_LOAD指令将关联矩阵中的某个块加载到Tensor高速缓存中去,为了保证计算,加载的矩阵部分应该比一个块稍大,如图4所示。
采用伪代码描述的算法为:
所有的计算核心并行执行该代码。
2)矩阵乘
首先假设
A=[A00,A01,A02,A03;A10,A11,A12,A13;A20,A21,A22,A23;A30,A31,A32,A33];
B=[B00,B01;B10,B11;B20,B21;B30,B31];
C=[C00,C01;C10,C11;C20,C21;C30,C31]=A×B;
那么:
C=[A00,A10,A20,A30]T×[B00,B01]+[A01,A11,A21,A31]T×[B10,B11]+[A02,A12,A22,A32]T×[B20,B21]+[A03,A13,A23,A33]T×[B30,B31]
因此,在矩阵乘算法中,我们现定义3个矩阵matrixA、matrixB和matrixC,分别与三个Tensor关联tensorA、tensorB和tensorC。每个矩阵均匀分布在每个计算核心和每个Tensor高速缓冲片上。计算时,matrixA的列广播到其他的列上,matrixB的行广播到其他行上,第一列和第一行进行点乘,第二列和第二行进行点乘,依次类推,点乘结果相加,即可得到最总的结果matrixC。
采用伪代码描述如下:
对于向量乘,可以将多个向量组合成矩阵的形式进行计算,这样会得到较好的效果。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
尽管本文较多地使用了Tensor高速缓存1;缓存片11;Tensor加载/存储部件2;主存3;阵列计算单元40;计算核心4;寄存器41;访存部件42等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。
Claims (7)
1.一种Tensor高速缓存及访问方法,其特征在于,包括:
S1.获取Tensor高速缓存的Tensor结构变量与关联矩阵的映射关系;所述的Tensor结构变量包括访问Tensor高速缓存所需要的多维坐标,每个多维坐标项唯一确定一个存储体;S2.根据映射关系执行a)或b):
a)通过关联矩阵到多维坐标的映射关系确定一个或多个存储体,并将主存中关联矩阵对应的数据加载到所确定的存储体中;
b)根据给定的一个或多个多维坐标项确定相应的一个或多个存储体,并根据映射关系将所确定存储体中的数据写入主存中相应的关联矩阵处;
所述的Tensor高速缓存包括至少一个缓存块,每个缓存块上具有二维阵列分布的多个缓存片,每个缓存片上具有二维阵列分布的多个存储体,且每个缓存片对应有一个计算核心以进行缓存片维度上的并行处理和存储体维度上的并行处理;
每个计算核心均包括访存部件以使每个缓存片对应于独立的访存部件;
每个计算核心包括寄存器以使每个计算核心均能够暂存数据;
且步骤S2还包括,进一步根据执行指令执行c)-g)的任意一项或多项:
c)由访存部件将Tensor高速缓存中的数据加载到寄存器中;
d)将寄存器中的数据保存到Tensor高速缓存中;
e)将某一列计算核心的数据广播到其他列上;
f)将某一行计算核心的数据广播到其他行上;
g)将某一个计算核心的数据广播到其他计算核心上。
2.根据权利要求1所述的Tensor高速缓存及访问方法,其特征在于,在步骤S1中,同时获取二维空间上关联矩阵与Tensor结构变量两者顶点之间的偏移关系,且在步骤S2中,同时根据偏移关系执行相应指令。
3.根据权利要求1所述的Tensor高速缓存及访问方法,其特征在于,在指令c)执行过程中,首先判断本计算核心的访存部件所访存的缓存片是否是本计算核心所需要的,若是,则直接访问,否则获取本计算核心所需要的缓存片,并将该缓存片的数据转存至本计算核心;
在指令d)执行过程中,当本计算核心的访存部件所访存的缓存片不是本计算核心所需要时,将本计算核心寄存器中的处理数据保存至本计算核心所需要的缓存片,否则直接保存至本计算核心对应的缓存片。
4.一种Tensor高速缓存及访问结构,其特征在于,包括数据多维分布的Tensor高速缓存,且所述Tensor高速缓存的多维坐标与主存中的关联矩阵具有映射关系,且所述的Tensor高速缓存连接有Tensor加载/存储部件,所述的Tensor加载/存储部件用于根据映射关系将主存中关联矩阵的数据加载到Tensor高速缓存中或将Tensor高速缓存中的数据写入到主存中的关联矩阵处;
所述的Tensor高速缓存从三维上被切分为多个缓存块,每个缓存块上具有二维阵列分布的多个缓存片,每个缓存片上具有二维阵列分布的多个存储体,所述Tensor高速缓存的多维坐标的每个多维坐标项唯一对应一个存储体。
5.根据权利要求4所述的Tensor高速缓存及访问结构,其特征在于,所述的Tensor高速缓存连接有阵列计算单元,所述的阵列计算单元包括计算核心,所述的Tensor高速缓存包括二维或多维阵列分布的多个缓存片,且每个缓存片对应有一个所述的计算核心。
6.根据权利要求5所述的Tensor高速缓存及访问结构,其特征在于,所述的计算核心包括寄存器和访存部件,所述的寄存器用于暂存数据以为计算提供数据或暂存计算所得的处理数据,所述的访存部件用于访存相应的缓存片,且阵列单元中的计算核心4通过核间通信模块实现计算核心之间的数据交换。
7.根据权利要求6所述的Tensor高速缓存及访问结构,其特征在于,核间通信模块包括垂直通信网络和水平通信网络,其中垂直通信网络用于数据的水平循环移动和/或水平广播,垂直通信网络用于数据的垂直循环移动和/或垂直广播。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110280834.2A CN112925727B (zh) | 2021-03-16 | 2021-03-16 | Tensor高速缓存及访问结构及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110280834.2A CN112925727B (zh) | 2021-03-16 | 2021-03-16 | Tensor高速缓存及访问结构及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112925727A CN112925727A (zh) | 2021-06-08 |
CN112925727B true CN112925727B (zh) | 2023-03-03 |
Family
ID=76175491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110280834.2A Active CN112925727B (zh) | 2021-03-16 | 2021-03-16 | Tensor高速缓存及访问结构及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112925727B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667787B (zh) * | 2024-01-30 | 2024-05-03 | 北京壁仞科技开发有限公司 | 运算装置及其操作方法和机器可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659068A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于张量置换引擎的装置和方法 |
CN111104459A (zh) * | 2019-08-22 | 2020-05-05 | 华为技术有限公司 | 存储设备、分布式存储系统以及数据处理方法 |
CN111783933A (zh) * | 2019-04-04 | 2020-10-16 | 北京芯启科技有限公司 | 一种对深度卷积神经网络计算加速的、结合主存储器的数据载入装置的硬件电路设计及方法 |
CN112119459A (zh) * | 2018-03-16 | 2020-12-22 | 赛灵思公司 | 用于张量数据的存储器布置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963384B2 (en) * | 2018-12-19 | 2021-03-30 | SimpleMachines Inc. | Method, computer program product, and apparatus for acceleration of simultaneous access to shared data |
CN109815162A (zh) * | 2019-01-28 | 2019-05-28 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
-
2021
- 2021-03-16 CN CN202110280834.2A patent/CN112925727B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112119459A (zh) * | 2018-03-16 | 2020-12-22 | 赛灵思公司 | 用于张量数据的存储器布置 |
CN110659068A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于张量置换引擎的装置和方法 |
CN111783933A (zh) * | 2019-04-04 | 2020-10-16 | 北京芯启科技有限公司 | 一种对深度卷积神经网络计算加速的、结合主存储器的数据载入装置的硬件电路设计及方法 |
CN111104459A (zh) * | 2019-08-22 | 2020-05-05 | 华为技术有限公司 | 存储设备、分布式存储系统以及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112925727A (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3069185C (en) | Operation accelerator | |
CN109214504B (zh) | 一种基于fpga的yolo网络前向推理加速器设计方法 | |
US11783170B2 (en) | Spatially sparse neural network accelerator for multi-dimension visual analytics | |
CN112506567B (zh) | 数据读取方法和数据读取电路 | |
CN111984189B (zh) | 神经网络计算装置和数据读取、数据存储方法及相关设备 | |
CN106846235A (zh) | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
CN111814957B (zh) | 神经网络运算方法及相关设备 | |
CN112925727B (zh) | Tensor高速缓存及访问结构及其方法 | |
CN112416433A (zh) | 一种数据处理装置、数据处理方法及相关产品 | |
CN112799599A (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
DE102023105565A1 (de) | VERFAHREN UND VORRICHTUNG FÜR EFFIZIENTEN ZUGRIFF AUF MEHRDIMENSIONALE DATENSTRUKTUREN UND/ODER ANDERE GROßE DATENBLÖCKE | |
US10963390B2 (en) | Memory-adaptive processing method for convolutional neural network and system thereof | |
US10769004B2 (en) | Processor circuit, information processing apparatus, and operation method of processor circuit | |
CN113191491B (zh) | 多维度并行的人工智能处理器架构 | |
US9727476B2 (en) | 2-D gather instruction and a 2-D cache | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
CN116185937B (zh) | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 | |
CN116680073A (zh) | 一种面向GPU和DCU架构的Flash Sort算法优化方法 | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 | |
US20210117100A1 (en) | Hybrid first-fit k-choice insertions for hash tables, hash sets, approximate set membership data structures, and caches | |
US20230195651A1 (en) | Host device performing near data processing function and accelerator system including the same | |
US20240134553A1 (en) | Data storage | |
WO2021241460A1 (ja) | メモリ内蔵装置、処理方法、パラメータ設定方法及びイメージセンサ装置 |
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 |