Cache(高速缓冲存储器)

news/2024/11/24 20:26:24/


高速缓存位于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小,速度比主存
高得多,接近于CPU的速度,单位成本比内存高·Cache存储了频繁访问内存的数据。


1.Cache原理、命中率、失效率
使用Cache改善系统性能的主要依据是程序的局部性原理
(1)程序局部性原理
时间局部性
当前访问的指令,不久的将来可能还会访问空间局部性
当前访问了此条指令,有可能马上会访问它附近的指令
()命中率
访问的指令能够在Cache中找到,称之为命中。单位时间内在Cache 中命中的数量与执行指令的数量比称为命中率
Cache的访问命中率为h(通常1-h就是Cache的失效率) ,Cache的访问周期时间是t1,主存储器的
访问周期时间是t2,则整个系统的平均访存时间就是:t3=h*t1+(1-h)*t2

2.Cache存储器的映射机制
分配给Cache的地址存放在一个相联存储器(CAM)中·CPU发生访存请求时,会先让CAM判断所要
访问的数据是否在Cache中,如果命中就直接使用·这个判断过程就是Cache地址映射,这个速度应该尽可能快◎常见的映射方法有:
直接映射
是一种多对一的映射关系,但一个主存块只能够复制到Cache的一个特定位置上去。Cache的行号i和主存的块号j有函数关系: i=j%m(其中m为Cache总行数)
例:某Cache容量为16KB(可用14位表示),每行的大小为16B(即可用4位表示)
则说明其可分
为1024行(可用10位表示)·主存地址的低4位为Cache的行内地址,中间10位为Cache行号。
如果内存地址为1234E8F8H,那么最后4位就是1000 (对应十六进制数的最后一位),而中间10位
则应从E8F(1110 1000 1111)中获取,得到10 1000 1111·内存地址为1234E8F8H的单元装入的Cache地址为10 1000 1111 1000
全相联映射
将主存中任一主存块能映射到Cache中任意行(主存块的容量等于Cache行容量)。
根据主存地址不能直接提取Cache页号,而是将主存块标记与Cache各页的标记逐个,直到找到标记符
合的页(访问Cache命中),或者全部比较完后仍无符合的标记(访问Cache失败)·
主存块标记与Cache各页的标记逐个比较,所以这种映射方式速度很慢,失掉了高速缓存的作用,这是
全相联映射方式的最大缺点·如果让主页标记与各Cache标记同时比较,则成本太高。
组相联映射
是前两种方式的折中方案·它将Cache中的块再分成组,各组之间是直接映像,而组内各块之间则是全
相联映像。
主存地址=区号+组号+组内块号+块内地址号
例:容量为64块的Cache采用组相联方式映射,字块大小为128个字,每4块为一组·若主存容量为
4096块,且以字编址,那么主存地址应该为多少位?主存区号为多少位?
首先根据主存块与Cache块的容量必须一致,得出内存块的大小也是128个字,因此共有128*4096个
字,即219(27*212)个字,因此需19位主存地址;其中:块内地址号为7位,以表示128个字·一组为4块,则组内块号用2位表示·Cache容量为64块,共分16组,故组号需要4位地址表示·剩余的即为区号,为6位。

3.Cache淘汰算法
当Cache数据已满,并且出现未命中情况时,就要淘汰- - 些老的数据,更新- - 些新的数据进入Cache。
选择淘汰哪些数据的方法就是淘汰算法。常见的方法有三种: 
随机淘汰算法
先进先出淘汰算法(FIFO)
最近最少使用淘汰算法(LRU)
其中平均命中率最高的是LRU算法


4.Cache存储器的写操作(与主存同步的问题)
在使用Cache时,需要保证其数据与主存- -致,因此在写Cache时就要考虑与主存间的同步问题,通常
使用以下三种算法:
写直达:当Cache写命中时,Cache与主存同时发生写修改
写回:当CPU对Cache写命中时,只修改Cache的内容而不立即写入内存,当此行被换出才写回主

标记法:数据进入Cache后,有效位置1;当CPU对该数据修改时,数据只写入主存并将该有效位置
0.当要从Cache中读取数据时要测试其有效位,若为1则直接从Cache中取数,否则从主存中取数。.
 

 


http://www.ppmy.cn/news/507026.html

相关文章

Android: /cache中的文件是怎么消失的

自己放某个文件到/cache分区,重启后发现文件消失了,那么是怎么消失的呢? Step 1. packages\providers\DownloadProvider\src\com\android\providers\downloads\StorageManager.java: /*** Removes files in the systemcache and downloads data dir …

浏览器缓存Cache

首先缓存的优点是:缓解服务端压力;快。 强缓存和协商缓存 强缓存是从本地缓存数据表中去取资源,不向服务端发送请求;协商缓存意思是每次使用缓存前都要和服务端进行确认。 从Response Header的Cache-Control的值看缓存规则&…

各种浏览器的缓存文件的位置和修改缓存目录的方法

一、手动清空缓存1、Opera清除Opera浏览器的缓存的方法:打开Opera,工具->首选项->高级->历史->点击立即清空按钮就可以清除Opera浏览器的缓存。2、IE浏览器的缓存清空打开IE浏览器,工具->Internet选项->常规->Internet临…

Android 获取cache缓存的目录路径

转发请备注原文地址:https://www.niwoxuexi.com/blog/android00/article/224.html Android开发中,有时需要知道cache缓存的路径。我写了一个静态类,供大家能参考 public class CommonUtil {/*** 获取cache路径** param context* return*/pu…

cache是什么文件?

转自:https://zhidao.baidu.com/question/27865855.html 通常人们所说的Cache就是指缓存SRAM。 SRAM叫静态内存,“静态”指的是当我们将一笔数据写入SRAM后,除非重新写入新数据或关闭电源,否则写入的数据保持不变。 由于CPU的速度…

Vue中的cache缓存,原来是这样啊

上篇文章写了arrify转数组,无论传给arrify什么样的数据都是返回一个数组,相对而言还是比较简单的。这篇文章分享一个比较有意思的东西,那就是Vue中如何实现cache缓存的。提前揭晓答案–闭包。下面我们就来手写一个吧。第一步,毫无…

各种浏览器的cache文件夹

Windows xp firefox: c:\Documents and Settings\administrator\Application Data\Mozilla\Firefox\Profiles chrome: C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\User Data\Default\Cache IE:(360等国内浏览器) …

DNDC模型四:土壤碳储量与作物产量、农田减排潜力分析

查看原文>>>双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的实践应用 由于全球变暖、大气中温室气体浓度逐年增加等问题的出现,“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会…