Cache与Scratch-pad-memory(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中的固定位置

直接相联

0

1

2

3

4

5

6

7

全相联:

全相方式将内存中的数据映射到cache中的任何位置

全相联

0

1

2

3

4

5

6

7

组相联:

组相联有两路组相联、四路组相联等。以两路组相联为例, 每个数据有两个位置可以存放,例如内存地址中地址16的数据可以放到cache中0,1两个位置,内存地址0.8.24的数据也可以放到cache中0,1位置。Cache中位置0处存放发数据到底是哪个内存地址数据,需要用cache标签来记录。

组相联

0

1

2

3

4

5

6

7

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与Scratch-pad-memory(spm)的区别_第1张图片

如上图所示

Cache存储量越大,命中率越高,失效率越低,内存访问(片外访存)量越少。

        当spm用于深度学习应用时,如全连接层,spm的内存访问量有两个拐点。全连接层的输入和输出神经元是可以重用的,而权重是不可重用的。Spm上可以优先存放输入神经元和输出神经元,当spm容量足够大时,能够放下所有的输入、输出神经元时,片外访存量就会降下来。但随着spm的容量的增加,权重也可以放到spm上,但权重没有重用,因此片外访存量会保持在一个阈值。当spm容量足够大,能够放下所有的输入、输出神经元以及权重时,片外访存会出现拐点,片外访存量极低。此时,整个计算过程除了输入图片需要访存,没有其他片外访存,片外访存量会很低。此时整个计算过程除了输入图片需要访存,没有其他片外访存,片外访存量会很低。

       实践上可以根据神经网络应用的特点来制定spm的大小,以提高片上存储的利用率,同时减少非必要的片上利用存储面积。

你可能感兴趣的:(存储器,大数据,memcached)