热门标签 | 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的大小,以提高片上存储的利用率,同时减少非必要的片上利用存储面积。


推荐阅读
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • TechStride 网站
    TechStride 成立于2014年初,致力于互联网前沿技术、产品创意及创业内容的聚合、搜索、学习与展示。我们旨在为互联网从业者提供更高效的新技术搜索、学习、分享和产品推广平台。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 分享一个简化版的Silverlight链接图项目:Link Map Simplified
    本文介绍了一个使用Silverlight开发的可视化工具,主要用于展示和操作复杂的实体关系图(Graph)。该工具在犯罪调查系统中得到了广泛应用,帮助用户直观地获取和理解相关信息。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • NVIDIA Titan RTX深度评测
    NVIDIA的Titan RTX被誉为当前最强大的桌面显卡之一,其卓越的性能和高昂的价格吸引了众多专业人士和技术爱好者的关注。本文将详细介绍Titan RTX的技术规格、性能表现及应用场景。 ... [详细]
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社区 版权所有