用于解决通用ai处理器存储带宽效率的动态缓存方法

文档序号:748842 发布日期:2021-04-23 浏览:7次 >En<

阅读说明:本技术 用于解决通用ai处理器存储带宽效率的动态缓存方法 (Dynamic caching method for solving storage bandwidth efficiency of general AI processor ) 是由 蔡浩田 沈亚明 葛悦飞 于 2021-03-25 设计创作,主要内容包括:本发明涉及用于解决通用AI处理器存储带宽效率的动态缓存方法,在缓存行中增加一个bit标志位C,数据段被连续储存在常规的缓存行数据中,按照以下步骤进行数据读取:S1根据CPU读取指令判断,若是数据段读取则进入S2;S2根据index域确定数据段的位置;S3对比数据段的tag和缓存中的tag,若一致则进入S4;S4检查V位,若V位为1则进入S5;S5检查C位,若C位为1则进入S6;S6根据读取指令需要读取的数据长度,检查起始地址后面缓存中的C位,如果连续存储数据的C位都被置为1,并且数据长度满足读取数据长度,则进行连续读取,否则出现缓存未命中。能同时满足CPU和AI处理器的运算需求。(The invention relates to a dynamic cache method for solving the storage bandwidth efficiency of a general AI processor, which adds a bit zone bit C in a cache line, continuously stores data segments in conventional cache line data, and reads data according to the following steps: s1, judging according to the CPU reading instruction, if the data segment is read, entering S2; s2, determining the position of the data segment according to the index field; s3 comparing the tag of the data segment with the tag in the cache, if the tag is consistent, entering S4; s4 checking the V bit, if the V bit is 1, then entering S5; s5 checking C bit, if C bit is 1, then enter S6; s6, according to the data length needed to be read by the reading instruction, checking the C bit in the cache behind the initial address, if the C bit of the continuous storage data is set to 1 and the data length meets the reading data length, then carrying out continuous reading, otherwise, the cache miss occurs. The operation requirements of the CPU and the AI processor can be simultaneously met.)

用于解决通用AI处理器存储带宽效率的动态缓存方法

技术领域

本发明涉及一种数据缓存,尤其是用于解决通用AI处理器存储带宽效率的动态缓存方法。

背景技术

目前,人工智能广泛应用到各个领域, 深度神经网络技术已经成为人工智能领域的代表性算法,基于深度神经网络技术的字符识别、图像分类或语音识别等关键技术,已经广泛应用于搜索引擎和智能手机等产品中。

深度神经网络技术的核心计算单元是乘加运算,乘法累加器阵列常用于矩阵乘法运算,因此MAC(乘累加器)阵列是为AI计算的核心,越来越多的通用计算芯片为了迎合的AI计算的需求,专门加入了MAC阵列来提高计算能力。但是这个给本来已经是瓶颈的数据通路增加更多的数据流量,使得MAC硬件经常处于等待数据的状态,得不到有效的利用,从而影响实际的计算能力。

常规的数据缓存和内存之间交换数据的单位是缓存行,缓存行的大小根据不同的缓存设计会不同。我们在这里可以假设我们的缓存行大小为128比特。确定这个之后,第二个问题是当缓存的数据从内存中读出之后,应该如何放入数据缓存。现有技术中主要包括两种常规数据缓存和数据读取:直接映射缓存和关联缓存。

直接映射缓存:

假设缓存行大小是128比特。如图1所示,现在我们假设数据缓存大小是2kByte。那么一共可以放下16个缓存行。假设内存大小是2Mbyte,可以放下16284个缓存行。2Mbyte的内存地址长度应该是21位。由于缓存行大小是128比特,就是16byte,那么地址的后4位就作为缓存行内的偏移地址。剩下16为,其中4位是在缓存中寻址的index。最后剩下的13位作为tag,被保存使用。用于判断在缓存中读取数据是否命中。

如图2所示,如何把内存从中读到的缓存行放到缓存中:缓存每次会从内存中读一个缓存行,缓存行的地址只需要前17位,0~16283。缓存中的16个index,0~15。之后我们用缓存行地址和16进行取余。得到的余数也是0~15。这样,就把缓存行放到余数和缓存的index相同的位置。

所以,放入的位置的index可以用以下公式得出:

(缓存行地址) mod (缓存中可以存放的缓存行的数量)

CPU读取直接映射缓存中的数据时按照以下步骤:

假设CPU发给缓存的地址也是21位。那么缓存会先对比index对应的位域,然后从缓存中对应的位置读出tag,把CPU发出的地址中和tag对应的位域和tag相比对,如果相同说明缓存命中,可以根据剩下的偏移地址从缓存行中把数据读出;如果tag不相同那么就是缓存未命中,需要从内存中读取数据。

以上是直接映射缓存的读取的工作方式。

如图3所示,用一个例子说明如何读取缓存,在这之前,我们需要多加一个细节。在每个缓存项加一个bit用来指示这个缓存是否有效。之后得到的过程如下:

直接映射缓存读取的过程:

1)根据index的值找到对应的缓存项。

2)比较tag域中的值是否和目标地址的tag域相同,相同进行下一步,不相同出现缓存未命中。

3)看有效位V是否只是这个缓存项有效,如果有效,那么进行下一步,否则出现缓存未命中。

4)根据数据偏移地址从缓存块中取出相应的数据。

关联缓存:

关联缓存有一种极端的情况,就是把从内存中读到的缓存行直接放到一个缓存的缓存行中。如果有空的就优先放空的位置,如果都有数据那就用一种方法挑一个位置的数据把他替换掉。但这样做有个问题就是CPU读取缓存的数据时,每次都会把缓存中所有的数据检查一遍,这需要大量的资源,于是出现了集合关联缓存。常见的有两路集合关联缓存、四路集合关联缓存和八路集合关联缓存。这意味着CPU每次读取只需要检查两个、四个或者八个缓存行的tag。从内存读取的数据也不是每个位置都可以方,而是只有两个、四个或者八个位置可以放。

关联缓存和直接映射缓存的区别在于:每个index下可以放几个不同tag的缓存行,上面介绍的直接映射缓存中每个index只能放一个tag的缓存行。

下面用一个两路关联缓存的例子说明:

如图4所示,关联缓存的特征,每个index代表一个集合,集合里面可以放多个tag和tag对应的缓存块。这样做的好处是当两个地址不同,但index的值相同的两个缓存块对同一个缓存项的争用会减少。可以提高一些情况下的缓存读写命中概率。

如图5所示,四路关联缓存的读取过程:

对比前面的直接关联缓存,他们的区别在于每次读取缓存时,需要比较四个tag的值。读取数据的步骤与直接缓存大致相同:

1)根据index的值找到对应的缓存项。

2)比较四个tag域中的值是否和目标地址的tag域相同,此处比较的次数比直接映射缓存多。多个比较中如果有一个tag和目标tag相同,那么进行下一步,否则出现缓存未命中。

3)看有效位V是否只是这个缓存项有效,如果有效,那么进行下一步,否则出现缓存未命中。

4)根据数据偏移地址从缓存块中取出相应的数据。

关联缓存的好处在于解决了相同index的缓存块对同一个缓存项的争用,代价是每次读取缓存项要消耗的硬件资源更多。

针对通用AI处理器对高带宽的数据流量的需求,现有的数据缓存都需要以缓存行为基本单位进行数据传输,每次交换的数据是单个缓存行的大小,这显然不能满足新型通用AI处理器的需求。

发明内容

为解决上述问题,本发明提供一种既能满足常规CPU的运算需求,也能满足AI处理器的需求的用于解决通用AI处理器存储带宽效率的动态缓存方法,具体技术方案为:

用于解决通用AI处理器存储带宽效率的动态缓存方法,在缓存行中增加一个bit的标志位C,数据段被连续储存在几个常规的缓存行数据中;读取缓存数据时按照以下步骤进行数据读取:

S1、根据CPU给出的读取指令,判断是常规数据读取还是数据段读取,若是常规数据则按照常规数据读取步骤读取,若是数据段读取则进入S2;

S2、根据数据段起始地址中的index域确定数据段在缓存中的位置;

S3、对比数据段起始地址的tag和缓存中的tag,若一致则进入S4,若不一致则出现缓存未命中;

S4、检查V位,若V位值为1则是有效缓存数据,进入S5,否则出现缓存未命中;

S5、检查C位,若C位值为1则是连续储存的数据段,否则出现缓存未命中;

S6、根据读取指令需要读取的数据长度,检查起始地址后面缓存中的C位,如果连续存储数据的C位都被置为1,并且数据长度满足读取数据长度,则进行连续读取,否则出现缓存未命中。

优选的,所述数据段的连续存储包括直接映射缓存和关联缓存。

优选的,所述直接映射缓存中,C位bit值为1时则缓存行储存的数据是连续数据段的一部分,所述数据段的长度根据设计来调节。

优选的,所述关联缓存中在使用数据段缓存时,把一个tag和index组成的地址作为数据段的起始地址,由C位的值来指示数据段在缓存中的位置。

优选的,所述关联缓存中,步骤S3对缓存中的多个tag和目标tag进行比较。

与现有技术相比本发明具有以下有益效果:

本发明提供的用于解决通用AI处理器存储带宽效率的动态缓存方法用于通用人工智能(AI)处理,通过数据段的加入可以使缓存和内存交换数据时,可以通过更长的突发传输,传输大量的数据,每次交换多个缓存行的数据;与此同时,总线上的控制信息只需要传输一次,这样就可以增加总线的利用率,在相同的设计下达到更大的数据带宽。其次,新型的通用AI处理器可以通过一次读入指令和起始地址读取大量的数据到处理器中,提高了处理器交换数据的带宽。通过采用本发明的数据搬运和数据读取可以有效提高数据搬运的效率,满足AI计算的数据要求,同时也无需在存储器中开辟两份数据存储空间,降低存储器开销。

附图说明

图1是直接映射中的缓存行的结构示意图;

图2是直接映射中的缓存行的index的结构示意图;

图3是直接映射读取数据的流程图;

图4是关联缓存的结构示意图;

图5是关联缓存读取数据的流程图;

图6是本发明的缓存行的结构示意图;

图7是当有一长段连续的数据被储存在缓存中时效果在灰色的阴影中表示的示意图;

图8是四路关联的数据缓存的结构示意图。

具体实施方式

现结合附图对本发明作进一步说明。

如图1至图7所示,用于解决通用AI处理器存储带宽效率的动态缓存方法,在缓存行中增加一个bit的标志位C,形成数据段缓存,所述数据段被连续储存在几个常规的缓存行数据中;读取缓存数据时按照以下步骤进行数据读取:

S1、根据CPU给出的读取指令,判断是常规数据读取还是数据段读取,若是常规数据则按照常规数据读取步骤读取,若是数据段读取则进入S2;

S2、根据数据段起始地址中的index域确定数据段在缓存中的位置;

S3、对比数据段起始地址的tag和缓存中的tag,若一致则进入S4,若不一致则出现缓存未命中;

S4、检查V位,若V位值为1则是有效缓存数据,进入S5,否则出现缓存未命中;

S5、检查C位,若C位值为1则是连续储存的数据段,否则出现缓存未命中;

S6、根据读取指令需要读取的数据长度,检查起始地址后面缓存中的C位,如果连续存储数据的C位都被置为1,并且数据长度满足读取数据长度,则进行连续读取,否则出现缓存未命中。

数据段的连续存储包括直接映射缓存和关联缓存。

标志位C表示该缓存行存放的数据是连续数据的一部分。

直接映射缓存中,C位bit值为1表示一个长段数据的开始,数据段的长度可以根据设计来调节。

关联缓存中在使用数据段缓存时,把一个tag和index组成的地址作为数据段的起始地址,由C位的值来指示数据段在缓存中的位置。

关联缓存中,步骤S3对缓存中的多个tag和目标tag进行比较。

在本发明中,我们可以直接储存数据的地址,从指明的地址开始的限定长度的数据会被连续储存在几个常规的缓存行数据结构中,同时也可以和常规的数据缓存用同样的模式运行。

本发明既可以连续读数据段,也可以以传统方式读数据行。缓存架构可以某一部分或全部设置成连续存读数据段的方式或传统方式,配置成AI方式的部分可以存读数据段,其他部分可以是传统缓存。只用于AI加速模块就可以全部设成连续存续数据段模式,需要和CPU 并用就可分区。

为了区分缓存使用的模式是常规模式还是新的连续模式,我们可以增加一个bit的标志位C,像有效位V一样,这是这个缓存项是连续模式的起始位置还是普通模式的缓存项。对于直接映射缓存会得到如图6所示的结构。当有一长段连续的数据被储存在缓存中时,效果在灰色的阴影中表示,如图7所示。

在直接映射缓存的缓存中C这个bit置为1表示这是一个长段数据的开始,数据段的长度可以根据设计来调节。读取数据的过程:

1)根据CPU给出的读取指令,判断是常规数据读取还是数据段读取,若是常规数据读取,按照直接映射缓存的读取步骤进行操作,若是数据段读取,进行下一步;

2)根据数据段的起始地址中的index域确定数据段在缓存中的位置;

3)对比数据段起始地址的tag和缓存中的tag,若一致说明数据段有可能储存在缓存中,不一致就出现缓存未命中;

4)检查V位,若为1代表这是有效缓存数据,进行下一步,否则出现缓存未命中;

5)检查C位,若为1,表示是连续储存的数据段,否则出现缓存未命中;

6)根据读取指令需要读取的数据长度,检查起始地址后面缓存中的C位,如果连续存储数据的C位都被置为1,并且数据长度满足读取数据长度,那么就认为连续存储的数据段在缓存中长度足够,可以连续读取,否则出现缓存未命中。

其中,常规数据读取的步骤为背景技术中介绍的直接映射缓存的数据读取步骤。

如图8所示,这是一个四路关联的数据缓存,在使用新的数据段模式时,会把一个tag和index组成的地址作为数据段的起始地址,后连续储存一个长度由设计人员指定的数据段,同样由C位的值来指示数据段在缓存中的位置。

读取步骤如下:

1)根据CPU给出的读取指令,判断是常规数据读取还是数据段读取,若是常规数据读取,按照之前的读取步骤进行操作,若是数据段读取,进行下一步;

2)根据数据段的其实地址中的index域,确定数据段在缓存中的位置;

3)对比数据段起始地址的tag和缓存中的tag,若一致说明数据段有可能储存在缓存中,不一致就出现缓存未命中。与直接映射缓存不同的是,这里需要对缓存中的多个tag和目标tag进行比较。

4)检查V位,若为1代表这是有效缓存数据,进行下一步,否则出现缓存未命中;

5)检查C位,若为1,表示是连续储存的数据段,否则出现缓存未命中;

6)根据读取指令需要读取的数据长度,检查起始地址后面缓存中的C位,如果连续存储数据的C位都被置为1,并且数据长度满足读取数据长度,那么就认为连续存储的数据段在缓存中长度足够,可以连续读取,否则出现缓存未命中。

这种数据段的加入可以使缓存和内存交换数据时,可以通过更长的突发传输,传输大量的数据,每次交换多个缓存行的数据;与此同时,总线上的控制信息只需要传输一次,这样就可以增加总线的利用率,在相同的设计下达到更大的数据带宽;其次,新型的通用AI处理器可以通过一次读入指令和起始地址读取大量的数据到处理器中,提高了处理器交换数据的带宽。

以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明权利要求的保护范围之内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器系统、存储器控制器及其操作方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类