计组 | 【Cache】主存映射cache容量及cache写策略_cache的产生-程序员宅基地

技术标签: 408  考研  计算机组成原理  Cache  

 

预备知识

1.cache的产生背景

在多体并行存储器中讲过,外部设备的优先级最高,这样就会导致CPU等待外部设备访存的现象,致使CPU空等一段时间,甚至可能等待几个主存周期,从而降低了CPU的工作效率。

为了避免CPU与I/O设备争抢访存,可在 CPU与主存之间加一个Cache。

这样一来,如果外部设备正在和主存交换信息,CPU就可以不用等待,直接从Cache中取所需信息。当然,考生会提出质疑,Cache那么小,每次访问 CPU的数据都有吗?解释:

2.局部性原理

通过大量典型程序的分析,发现 CPU从主存取指令或取数据,在一定时间内,只是对主存局部地址区域的访问(如循环程序、一些常数)。

于是人们就想到一个办法,将CPU近期需要的程序提前存放到Cache中。

这样CPU只需访问Cache就可以得到所需要的数据了。

一般Cache采用高速的SRAM制作(主存一般使用DRAM),其价格比主存高,容量远比主存小。

补充:局部性原理一般有两种,即时间局部性原理和空间局部性原理。

  • 1)  时间局部性原理。如果某个数据或指令被使用,那么不久将可能再被使用。
  • 2)空间局部性原理。如果某个数据或指令被使用,那么附近数据也可能被使用。

3.主存与Cache的编址

 

前提:如果主存要和Cach

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47187147/article/details/124015177

智能推荐

Windows驱动开发之日志打印 - TraceEvents_windows驱动开发 日志-程序员宅基地

文章浏览阅读3.6k次。《Windows驱动开发技术详解》一书中,介绍了一种“Windows驱动程序日志打印和查看的方法”,具体就是:在需要打印日志的地方,调用“KdPrint”函数,该函数类似标准C的printf(print file)函数。然后用“DebugView.exe”软件查看日志。一、引入事实上,微软也提供了一个日志打印和日志查看机制,它可以查看指定的驱动文件的日志,并..._windows驱动开发 日志

游戏玩家的程序猿之路-程序员宅基地

文章浏览阅读2.9k次,点赞6次,收藏2次。目录一.自我介绍二.编程目标三.学习编程的方法四.分配编程的时间五.最想进入的IT公司一.自我介绍大家好,这里是ONE_KICK,一名一名普通的大二学生,这是我的第一篇blog,现在还是一名编程小白,因为自己对于游戏的热爱决定开始学习基础的编程,来到CSDN,一方面是可以学习到很多的知识,另一方面是想要记录一下自己的学习历程。二.编程目标从零开始学习编程,打算先学习C语言,而后开始学习C++,近期的目标是在一年时间内掌握C++的用法。三.学习编程的方法打算稳扎稳打的学习C++,每天会有固定的时间

VC+API模拟键盘按键(详解篇)_vc模拟键盘输入-程序员宅基地

文章浏览阅读1.6w次。模拟键盘按键━━━━━━━━━━━━━━━━━━━━━━━━以前就想过如何模拟键盘按键向其他程序发送控制命令,但总是无功而返,这次也不例外。模拟按键的方法很多,如PostMessage(不能用SendMessage),SendInput,keybd_event。但最要命的是以上方法基本上都要窗口获取焦点时才有效。也就是想后台模拟键盘按键难度是很高的。当然有些特殊_vc模拟键盘输入

Docer容器客户端在启动的镜像的时候报错Error invoking remote method ‘docker-start-container‘: Error: (HTTP code 500_error invoking remote method 'docker-run-container-程序员宅基地

文章浏览阅读6.7k次,点赞8次,收藏3次。打开docker容器,启动redis镜像,报错:Error invoking remote method 'docker-start-container': Error: (HTTP code 500) server error - Ports are not available: listen tcp 0.0.0.0:2181: bind: An attempt was made to access a socket in a way forbidden by its access per._error invoking remote method 'docker-run-container': error: (http code 400)

数论模板-程序员宅基地

文章浏览阅读64次。组合数  递推void get_C(){ for(int i=0;i<=2005;i++) { C[0][i]=C[i][i]=1; for(int j=1;j<i;j++) { C[j][i]=(C[j-1][i-1]+C[j][i-1])%MOD; ..._inv2 数论

铜仁:实施大数据战略行动 打好经济社会跨越突围战-程序员宅基地

文章浏览阅读100次。近年来,铜仁市抢抓国家大数据战略和网络强国战略机遇,发挥创建大数据综合试验区和扶贫攻坚区域政策的叠加优势,将大数据与大扶贫两大战略融合发展,强化铜仁在武陵山片区的综合竞争力,以建设一个公共数据综合服务平台为核心,以提升产业发展能力、政府治理能力为目的,加快完善产业政策体系、数据标准体系、基础配套体系三大支撑,重点实施数据集聚、智慧铜仁、数据产业、生态文化..._铜仁市公共数据综合服务平台

随便推点

100个免费可商用字体,你总有一天用到它-程序员宅基地

文章浏览阅读636次。我一个一个查授权、筛选证实可商用。你知道吗?你平时在电脑轻轻一点就能用的字体,属于法律保护的美术作品!当我们习惯于在网上搜刮各种字体,以为可以随便用在自己的设计图、网页(比如H5广告)上时,可能一直无意间伤害着创作者、版权人。以下整合出可能是最全的免费可商用字体,下载方式见文末——都是我一个一个查授权、筛选证实可以用的啊。最后提醒一下..._点字灵动体字体免费商用吗

openssl 1.1.1L /1.1.1o/1.1.1t rpm包制作——筑梦之路_libcrypto 1.1.1t-程序员宅基地

文章浏览阅读4.2k次,点赞6次,收藏11次。https://www.openssl.org/source/openssl-1.1.1l.tar.gzhttps://www.openssl.org/source/openssl-1.1.1l.tar.gzopenssl.spec文件内容Summary: OpenSSL 1.1.1l for CentOSName: opensslVersion: %{?version}%{!?version:1.1.1l}Release: 1%{?dist}Obsoletes: %{name} <=_libcrypto 1.1.1t

将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)_ubyte.gz用什么打开-程序员宅基地

文章浏览阅读1.2k次,点赞6次,收藏12次。将MNIST手写数字数据集导入NumPy数组下载MNIST数据集(使用urllib.request.urlretrieve()函数)打开下载得到的.gz压缩文件(使用gzip.open()函数)并导入NumPy数组(使用np.frombuffer()函数)完整实例(能直接运行):可能遇到的问题:下载MNIST数据集(使用urllib.request.urlretrieve()函数)os.path.exists(path)可以判断是否存在以path为地址的文件。urllib.request.urlre_ubyte.gz用什么打开

【剧前爆米花--C语言篇】C语言数组底层原理详解_数组的底层逻辑-程序员宅基地

文章浏览阅读1k次,点赞15次,收藏13次。对C语言数组的详细剖析,以及底层理解,相信你一定有所收获_数组的底层逻辑

java--html(6)框架_h|keycount| html-程序员宅基地

文章浏览阅读950次。框架标签:< frameset> < frameset rows=”10%,*”> < frame src=”1.html” name=”top” /> < frameset cols=”30%,*”> < frame src=”2.html” name=”left_h|keycount| html

虚机修改yum源_虚拟机如何优化yum源-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏7次。修改yum的下载源_虚拟机如何优化yum源