【王道计组笔记】高速缓存器:局部性原理及性能分析
背景:
随着CPU的工作速度成指数级增长,但是主存速度跟不上,所以要提升主存速度非常重要。
m个模块采用低位交叉编址的方式可以基本上将主存的带宽提升m倍,但是这依旧与CPU差距很大。
【王道计组笔记】双口RAM和多模块存储器_m0_52043808的博客-CSDN博客
(1)可以优化每一个存储元的存储设计,价格上升,容量下降。
(2)局部性原理:CPU访问到存储器的地方是很小的一块,如果把很小的一块放在优化的存储设计的存储单元中,就可以提升整个工作系统的存储速度
基于以上两点,引入层序化的理念“ cache --主存 ”
局部性原理:
主存用来存储数据和指令,数据常常存放在相邻的存储单元中
空间局部性:
在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息存储空间上是邻近的。
时间局部性:
在最近的未来要用到的信息,很可能是现在正在使用的信息
局部性原理的具体代码案例:
for(int i=0;i<=9;i++){temp=i;for(int j=0;j<=i;j++){temp*=a[j];sum+=temp;}
}
时间局部性:访问过a[i]后过一段时间,很可能再访问a[i]
空间局部性:访问过a[i]后很可能访问与a[i]相临近的元素
好的程序员会合理利用局部性原理,提高效率。
时间分析:
假设主存存/取一次要1000ns,CPU进行加法运算需要5ns
那么执行一次 a[ i ] = a[ i ] + 2,故每个周期耗时2005ns,1000个a[i]共耗时2005ns*1000=2005us
利用存储速度块的Cache提速:
当CPU要访问其中的一个数据的时候,把它旁边的数据顺便存放在高速的Cache中。
(CPU与主存直接数据传输是一个一个的,因为CPU中的寄存器位数有限。
而主存与缓存直接没有这样的限制,数据的交换是以块为单位的)
时间分析:
(粗略)
性能分析:
命中率H: CPU与访问的信息已在Cache中的比率
设一个程序执行期间,Cache的总命中次数为Nc,访问主存的总次数为Nm,则H=Nc/(Nc+Nm)
缺失率 : M=1-H
设tc为命中时Cache的访问时间,tm为未命中时的访问时间
Cache-主存系统的平均访问时间Ta=H*tc+(1-H)*tm
(未访中有两种情况,主存-Cache-CPU 主存-CPU)
例题:
【王道计组笔记】高速缓存器:局部性原理及性能分析相关推荐
- 【王道计组笔记】Cache高速缓存基本工作原理
缓存器 的引入: [王道计组笔记]高速缓存器:局部性原理及性能分析_muse_age的博客-CSDN博客 1.主存的块放到Cache中哪个位置?CPU向缓存中读取一个数据过程? (1)空位随意放:全相 ...
- 王道计组笔记: 3.6高速缓冲存储器
目录 高速缓冲存储器 1. Cache的工作原理 2.局部性原理 3.性能分析 4.映射(类比哈希) 5.Cache替换算法 6.Cache块写策略 高速缓冲存储器 1. Cache的工作原理 当在手 ...
- 【王道计组笔记】数制、编码、校验
数制: 主要为计数进位制:常用有二进制,八进制,十六进制,十进制 其中二进制位计算机内部的编码方法,八进制和十六进制作为二进制的缩写形式. 原因: ①物理:用两种稳定状态的物理器件表示二进制数比较容易 ...
- 【王道计组笔记】输入/输出设备磁盘
外部设备:除了主机(CPU和主存)之外的,能直接或间接与计算机交换信息的装置 输入设备:用于向计算机系统输入命令和文本.数据等信息的部件. 鼠标(了解) 键盘(了解) 键盘是最常用的输入设备,通过它可 ...
- 【王道计组笔记】储存系统(1):基本概念
储存器的分类: 层次(离CPU的距离): 高速缓存存储器(cache),主存储器(主存.内存),辅助存储器(构成三级存储系统) 设立缓存目的:提高访问速度(硬件自动完成) 设立辅存目的:扩大存储容量( ...
- 【王道计组笔记】半导体存储器RAM ROM
知识回顾: 存储器芯片的逻辑结构: 存储矩阵: 由大量相同的位储存单元阵列构成 译码驱动: 将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对选中单元的读/写操 ...
- 【王道计组笔记】总线(3):总线仲裁的基本概念
同一时刻只能有一个设备控制总线传输操作,可以有一个或多个设备从总线接受数据 主设备:获得总线控制权的设备 从设备:被主设备访问的设备.只能响应主设备发来的各种总线命令 为什么要进行仲裁? 总线作为一种 ...
- 【王道计组笔记】总线(1):总线的概念和分类
总线:一组能为多个部件分时共享的公共信息传送线路 共享:总线上可以挂接多个部件,多个部件之间互相交换信息可以通过这组线路分时共享 分时:同一时刻只允许有一个部件向总线发出信息,如果系统中有多个部件,则 ...
- 【王道计组笔记】I/O查询方式
程序查询方式: CPU一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序. CPU有"踏步"等待现象,CPU与I/O串行工作 优点:接口设计简单.设备量少 缺点: ...
最新文章
- 读书笔记|如何让用户为你的产品尖叫
- 记一次小的51CTO聚会
- My97DatePicker日历插件
- 官网PYthon语言参考手册The Python Language Reference
- Linux下的文件共享全攻略系列之一:Samba服务器简介与快速配置指南
- ubuntu卸载nvidia驱动_解决Ubuntu18.04循环登录问题 - 卸载NVIDIA驱动 启用Nouveau(1)
- 【DP】Mod Mod Mod(CF889E)
- Modbus协议栈开发笔记之五:Modbus RTU Slave开发
- yii不能没有提示验证错误信息_安装Mac系统时提示”应用程序副本不能验证 它在下载过程...”的解决方法...
- Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are解决方法
- 诡异的编码和字节长度
- oracle tcp 上限,操作系统用户最大进程数限制maxuproc
- linux程序运行段错误,Linux下的段错误产生的原因及调试方法
- 计算机爱好者协会义务维修的目的,计算机协会义务维修活动总结范文
- 从内容/用户画像到如何做算法研发
- python命令窗口代码如何调整大小_如何调整python窗口(Tkinter)大小
- linux定时任务nodejs,让Nodejs来管理定时任务later
- 计算机科学与技术专业师范与非师范,同一个专业,师范和非师范到底有啥区别?...
- Hadoop项目实战---黑马论坛日志分析
- excel组合汇总_Excel汇总20160229
热门文章
- (sql补充)关于游标
- 系统化交易与量化交易理论与书籍
- POJ NOI0105-30 含k个3的数【数制】
- 位运算应用及其注意事项
- 单位与单位的换算(二)
- Matlab Tricks(六)—— 矩阵乘法的实现
- C++基础::运算符重载
- C++基础::函数、类、类型所在的头文件 接口的介绍
- html经历了几个版本,HTML 的上一个版本诞生于 1999 年. 自从那以后, Web 世界已经经历了巨变....
- rtpengine集群_ubuntu 安装 rtpengine