热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Cache与Scratchpadmemory(spm)的区别

目录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中的固定位置


直接相联

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存储量越大,命中率越高,失效率越低,内存访问(片外访存)量越少。

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

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


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • windows便签快捷键_用了windows十几年,没想到竟然这么好用!隐藏的功能你知道吗?
    本文介绍了使用windows操作系统时的一些隐藏功能,包括便签快捷键、截图功能等。同时探讨了windows和macOS操作系统之间的优劣比较,以及人们对于这两个系统的不同看法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
author-avatar
我从不在乎O心痛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有