Cache 设计原理(一)Cache 存在的意义
文章目录
- 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 存在的意义相关推荐
- 【翻译】Chromium 网络栈 disk cache 设计原理
英文原文链接 1.概览 The disk cache stores resources fetched from the web so that they can be accessed quickl ...
- Cache 工作原理,Cache 一致性,你想知道的都在这里
欢迎关注方志朋的博客,回复"666"获面试宝典 可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查了一下LRU缓存机制最近有哪些企业喜欢 ...
- Cache 工作原理、Cache 一致性,你想知道的都在这里
作者 | 桔里猫 来源 | https://zhuanlan.zhihu.com/p/386919471 可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查 ...
- Cache工作原理,Cache一致性,你想知道的都在这里
可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查了一下LRU缓存机制最近有哪些企业喜欢考察,超级大热门! 今天给大家分享一篇关于 Cache 的硬核的技术 ...
- 计组之存储系统:5、cache(cache功能、cache工作原理、cache性能分析)
5.cache 思维导图 为什么要cache? Cache的工作原理 局部性原理 性能分析(加入cache) 空间局部性中的"附近"怎么定义? 待解决的问题? 思维导图 为什么要c ...
- 4路组相连cache设计_浅谈 Cache
1. Cache的历史 在科研领域,C. J. Conti等人于1968年在描述360/85和360/91系统性能差异时最早引入了高速缓存(cache)一词.Alan Jay Smith于1982年的 ...
- 深入理解 Cache 工作原理
欢迎关注方志朋的博客,回复"666"获面试宝典 大家好,今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到. 关于 Cach ...
- 4路组相连cache设计_Cache组织方式
经过下面文章的介绍,我们已经知道cache的基本工作原理. smcdef:图说Cache - Cache的基本原理zhuanlan.zhihu.com 但是,我们一直避开了一个关键问题.我们都知道c ...
- 深入理解Cache工作原理
大家好,今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到. 关于 Cache 这方面内容图比较多,不想自己画了,所以图都来自<Compu ...
最新文章
- 《算法竞赛中的初等数论》(四)正文 0x40反演(ACM / OI / MO)(十五万字符数论书)
- 58同城招聘|三维重建、图像图形学算法工程师(校招/社招)
- 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵、Li‘s have a solution and plan.
- PHP绕过disable_function限制(一)
- oraclexe支持商用吗_商用车线控制动系统项目 技术研发
- 网站bin目录下的不可以放配置文件或其他可写文件
- commons-lang3工具类学习(一)
- 编译原理—词法分析器(Java)
- clsq客户端android,Android NDK开发之 arm_neon.h文件ABI说明
- 关于lucene2.2部分代码
- 数值分析:Hermite多项式
- 【渝粤教育】国家开放大学2018年秋季 0529-21T高级英语阅读(1) 参考试题
- 科学问题表述是机理与机制的区别
- 01-SQL基本语句
- 阿里巴巴矢量图标的应用
- 无需重装系统,Windows Server 2019系统硬盘无损从MBR转换为GPT格式
- 计算机软件系统崩溃,系统崩溃,解决系统崩溃的方法全集
- 计算机的任务管理器在哪,怎么打开任务管理器 多种方法详细教学
- c语言用switch编写春夏秋冬,利用switch实现春夏秋冬
- mount的挂载远程服务器文件夹
热门文章
- 无人驾驶系统是个复杂的计算机系统,无人驾驶汽车安全行驶的三大系统
- windows下的.DLL文件
- ECharts常用图例
- GitHub上史上最全的Android开源项目分类汇总 (转)
- React 安装 node-sass失败解决方案
- 计算机与我的生活英语作文,描写一天的生活英语作文(通用7篇)
- js 中的单目运算符,双目运算符与三目运算符区别
- 基于Event Sourcing和DSL的积分规则引擎设计实现案例
- 地产爆雷,洋河“出局”
- android canvas广告牌,亚马逊广告后台创建CPC站内广告教程