文章目录

  • 0x01 Cache 的意义
  • 0x02 局部性原理
  • 0x03 Cache 应用实例

0x01 Cache 的意义


目前,计算机所使用的内存大都为 DRAM/SDRAM,此类存储器访存时间较长,将会引起流水线长时间的停顿,这个时间比起时钟周期是个非常大的数字。当访存指令占据较大一部分时,平均 CPI 会因此而大幅升高。

有时 data 和 code 都在同一存储器中,例如初始化C语言环境的过程就需要将 code 段和 data 段(或只有 data 段)从 Flash/SD 卡拷贝到内存中。这个过程中流水线的 IF 和 MEM 阶段会同时访问 Flash/SD 卡,导致结构冒险。现代处理器的 core 通常为哈佛结构,使用 D-cache 和 I-cache 分别缓存 data 和 code ,这样从 core 的角度来看,就消除了访存过程的结构冒险。

0x02 局部性原理


局部性原理分为时间局部性空间局部性
● 时间局部性是指当某一时刻访问了存储器中的一个数据元素,那么在之后的一段时间内会经常再次访问此元素。
● 空间局部性是指当某一时刻访问了存储器中的一个数据元素,那么也会经常访问相邻地址的数据元素。

总结来说就是 CPU 访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。一个利用好局部性原理的程序会更高效地执行。

例如如下 C 程序:

int DataBuff[500] = {0};
for( int i; i<500; i++ )DataBuff[i] = i;

此代码是常用的为数组初始化数据的方式,数组本身在内存空间中是连续的,而访问这一段内存的过程就满足空间局部性原理。
我们写算法代码时常常一个变量在一个范围内(比如子函数)多次存储和读取,这一习惯就是满足时间局部性原理的。

Cache 的设计原理针对了基于局部性原理的优化,会使满足局部性原理的程序访存效率更高,具体将会在后续的博客中说明。

0x03 Cache 应用实例



上图为 STM32F407 的 SoC 架构图,其中右面红框部分包括了 Flash 和 Cache,可以看到,这个 Cache 分成了两个接口接入 AHB 总线,分别通过 AHB fabric 最终接到了左面红框部分的 D-BUS 和 I-BUS 处,作为独立的取指和访存通道接入 CM4 内核。

Cache 设计原理(一)Cache 存在的意义相关推荐

  1. 【翻译】Chromium 网络栈 disk cache 设计原理

    英文原文链接 1.概览 The disk cache stores resources fetched from the web so that they can be accessed quickl ...

  2. Cache 工作原理,Cache 一致性,你想知道的都在这里

    欢迎关注方志朋的博客,回复"666"获面试宝典 可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查了一下LRU缓存机制最近有哪些企业喜欢 ...

  3. Cache 工作原理、Cache 一致性,你想知道的都在这里

    作者 | 桔里猫 来源 | https://zhuanlan.zhihu.com/p/386919471 可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查 ...

  4. Cache工作原理,Cache一致性,你想知道的都在这里

    可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查了一下LRU缓存机制最近有哪些企业喜欢考察,超级大热门! 今天给大家分享一篇关于 Cache 的硬核的技术 ...

  5. 计组之存储系统:5、cache(cache功能、cache工作原理、cache性能分析)

    5.cache 思维导图 为什么要cache? Cache的工作原理 局部性原理 性能分析(加入cache) 空间局部性中的"附近"怎么定义? 待解决的问题? 思维导图 为什么要c ...

  6. 4路组相连cache设计_浅谈 Cache

    1. Cache的历史 在科研领域,C. J. Conti等人于1968年在描述360/85和360/91系统性能差异时最早引入了高速缓存(cache)一词.Alan Jay Smith于1982年的 ...

  7. 深入理解 Cache 工作原理

    欢迎关注方志朋的博客,回复"666"获面试宝典 大家好,今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到. 关于 Cach ...

  8. 4路组相连cache设计_Cache组织方式

    经过下面文章的介绍,我们已经知道cache的基本工作原理. smcdef:图说Cache - Cache的基本原理​zhuanlan.zhihu.com 但是,我们一直避开了一个关键问题.我们都知道c ...

  9. 深入理解Cache工作原理

    大家好,今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到. 关于 Cache 这方面内容图比较多,不想自己画了,所以图都来自<Compu ...

最新文章

  1. 《算法竞赛中的初等数论》(四)正文 0x40反演(ACM / OI / MO)(十五万字符数论书)
  2. 58同城招聘|三维重建、图像图形学算法工程师(校招/社招)
  3. 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵、Li‘s have a solution and plan.
  4. PHP绕过disable_function限制(一)
  5. oraclexe支持商用吗_商用车线控制动系统项目 技术研发
  6. 网站bin目录下的不可以放配置文件或其他可写文件
  7. commons-lang3工具类学习(一)
  8. 编译原理—词法分析器(Java)
  9. clsq客户端android,Android NDK开发之 arm_neon.h文件ABI说明
  10. 关于lucene2.2部分代码
  11. 数值分析:Hermite多项式
  12. 【渝粤教育】国家开放大学2018年秋季 0529-21T高级英语阅读(1) 参考试题
  13. 科学问题表述是机理与机制的区别
  14. 01-SQL基本语句
  15. 阿里巴巴矢量图标的应用
  16. 无需重装系统,Windows Server 2019系统硬盘无损从MBR转换为GPT格式
  17. 计算机软件系统崩溃,系统崩溃,解决系统崩溃的方法全集
  18. 计算机的任务管理器在哪,怎么打开任务管理器 多种方法详细教学
  19. c语言用switch编写春夏秋冬,利用switch实现春夏秋冬
  20. mount的挂载远程服务器文件夹

热门文章

  1. 无人驾驶系统是个复杂的计算机系统,无人驾驶汽车安全行驶的三大系统
  2. windows下的.DLL文件
  3. ECharts常用图例
  4. GitHub上史上最全的Android开源项目分类汇总 (转)
  5. React 安装 node-sass失败解决方案
  6. 计算机与我的生活英语作文,描写一天的生活英语作文(通用7篇)
  7. js 中的单目运算符,双目运算符与三目运算符区别
  8. 基于Event Sourcing和DSL的积分规则引擎设计实现案例
  9. 地产爆雷,洋河“出局”
  10. android canvas广告牌,亚马逊广告后台创建CPC站内广告教程