作者:我从不在乎O心痛 | 来源:互联网 | 2023-07-13 15:36
目录Cache1、cache的三种相联方式2、cache中数据的替换策略3、更新cache内容时的写策略Scratch-pad-memory1、spm的定义2、spm
目录
Cache
1、cache的三种相联方式
2、cache中数据的替换策略
3、更新cache内容时的写策略
Scratch-pad-memory
1、spm的定义
2、spm与cache相比的不同之处
Cache
1、cache的三种相联方式
假设内存地址空间是0—31,cache地址的空间是0—7,现在需要将内存中地址16的数据存放在cache中。
如图所示
内存 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
直接相联:
直接相联方式将内存中的数据按地址映射到cache中的固定位置。
全相联:
全相方式将内存中的数据映射到cache中的任何位置。
组相联:
组相联有两路组相联、四路组相联等。以两路组相联为例, 每个数据有两个位置可以存放,例如内存地址中地址16的数据可以放到cache中0,1两个位置,内存地址0.8.24的数据也可以放到cache中0,1位置。Cache中位置0处存放发数据到底是哪个内存地址数据,需要用cache标签来记录。
2、cache中数据的替换策略
随机替换:随机选取一个位置进行替换。
FIFO(FIRST IN FIRST OUT,先进先出):把最先进来的数据替换出去。
LRU(LEAST RECENTLY USED,近期最少使用):将最近最少使用的数据替换出去,因为最早进来的数据不一定的最没用的数据。
3、更新cache内容时的写策略
整体来说,处理器在更新cache内容时,需要分别考虑写命中和写失效两种情况下的写策略。
写命中时,即要写的地址在cache中,有写回和写穿两种策略。写穿策略,既写cache也写内存;写回策略,只写cache,并用dirty标志位记录cache是否修改过,当被修改的cache块被替换时,才将修改后的内容写回内存。
当写失效时,即要写的地址不在cache中,有写分配和写不分配两种策略。写分配策略。把要写的地址所在的块从内存调入cache中,再写cache;写不分配策略,把要写的内容直接写回内存。
Scratch-pad-memory
1、spm的定义
Scratch-pad-memory简称SPM中文叫遍笺(jian)式存储器。它可以把数据放在不同的片上存储器上(可解耦性),几个存储器是可以独立被访问的,从而达到较高的访问效率。
2、spm与cache相比的不同之处
(1)是否有硬件来管理存放的数据
Cache是通过硬件来管理每个位置上存放的数据;
spm没有硬件管理的替换策略,由程序员来管理数据的存放位置。因此,spm的控制逻辑比较简单,能耗也比较低,。
(2)根据访存行为的复杂程度cache与spm的选取不同
当访存行为不规则时,cache中的硬件管理机制可以有效的管理数据,比如Windows中的数据很多,访存行为难以分析清楚,于是cache是很好的选择;
但当程序中的访存行为可以很容易的描述出来时,程序员可以根据程序的访存行为设计spm的数据存取方式,从而提高访存效率。
(3)cache与spm在存储容量和片外访存量上面也有很大差距。
如上图所示
Cache存储量越大,命中率越高,失效率越低,内存访问(片外访存)量越少。
当spm用于深度学习应用时,如全连接层,spm的内存访问量有两个拐点。全连接层的输入和输出神经元是可以重用的,而权重是不可重用的。Spm上可以优先存放输入神经元和输出神经元,当spm容量足够大时,能够放下所有的输入、输出神经元时,片外访存量就会降下来。但随着spm的容量的增加,权重也可以放到spm上,但权重没有重用,因此片外访存量会保持在一个阈值。当spm容量足够大,能够放下所有的输入、输出神经元以及权重时,片外访存会出现拐点,片外访存量极低。此时,整个计算过程除了输入图片需要访存,没有其他片外访存,片外访存量会很低。此时整个计算过程除了输入图片需要访存,没有其他片外访存,片外访存量会很低。
实践上可以根据神经网络应用的特点来制定spm的大小,以提高片上存储的利用率,同时减少非必要的片上利用存储面积。