【计算机组成】Cache与CPU的直接映射、全相联映射与组相联映射

一.Cache与CPU需要映射的原因

        CPU准备访问内存时,会先问问cache存储器有没有已经提前准备好了数据,如果没有则再找内存要:

        如果Cache刚好命中,则直接从Cache中读取数据:

        如果Cache没有命中(Cache失效),则CPU再去找内存要:

        但通常来说,因为Cache(容量小,速度快)和内存的容量(容量大,速度较Cache略慢)不一样,导致Cache和内存记录数据存储方式不一样,而CPU一般只认识内存的记录方法:

        所以就有了Cache与内存的地址映射,方便CPU直接找数据:

二.什么是Cache与CPU的映射

         Cache的地址映射中,会以Cache的容量为标准将内存分成相同大小的块(页或者区),根据映射方法的不同,地址的表达方式也不同,常见的映射方式分为:直接映射、全相联映射和组相联映射。

三.直接映射

        先把映射方式写出来,再详细介绍:

        主存映射如下: 

        直接映射顾名思义,就是直接把内存的地址“直接”原封不动地放到Cache中,但问题来了,Cache可没有主存那么大的容量,怎么“直接”放呢?后来人们就想到一个办法,把内存分成好几区,每一区就刚刚好是Cache的容量大小,根据空间局部性原理时间局部性原理将不同的区放到Cache中去,如果CPU需求的块刚好存在了Cache里,就说这是“命中了”,如果没有,就说是“失效”了。

        如内存容量为1G,Cache容量为8M,采用直接映射方式就可以将内存分为(1G/8M=128)128块,至于128块中要把哪块分到Cache里面去,就是资源调度需要做的事情了。所以,地址映射中就有“区号”(也称之为块)这个部分,让Cache知道这个区块是从CPU哪个地方拿下来的:

       但这样做的一个缺点是,每个区块的页都是固定位置的,如主存中每个区的第 0 页,只能进入到 Cache 的第 0 页。若当前时刻 Cache 中 0 号页已被占据,而 1 到15 页空闲,现在要将 1 区第 0 页(即内存的 16 页)调入 Cache 是会发生冲突的。所以直接映像的区块冲突率非常高

        最后举个例子,如果你想找到一本书里面的某个句子,先找到第几章(区号)后,再找是第几页(页号)中的第几段(页内地址),就能找到你所要的句子,这就是直接映射的地址映射方式。

四.全相联映射

        全相联映像使用相联存储器(什么是相联存储可以参考我之前写的文章:【计算机组成】三分钟了解顺序存储、直接存储、随机存储和相联存储的区别)组成的 Cache 存储器。全相联映像方式很简单,就是主存的每一页可以映像到 Cache 的任一页。如果淘汰 Cache 中某一页的内容 ,则可调入任一主存页的内容:

        没有直接映射方式的分区,是一页一页地放进Cache里面去,所以地址映射比较简单:

        全相联映射最大的缺点是采用了相联存储的方式,也就是按内容访问(要是不懂的快去看看我上面发的那个连接!!)的方式进行搜索,在进行搜索时,主存地址不能直接提取 Cache 页号,而是需要将主存页标记与Cache 各页的标记逐个比较,直到找到标记符合的页(访问 Cache 命中),或者全部比较完后仍无符合的标记(访问 Cache 失败)。因此这种映像方式速度很慢,失掉了高速缓存的作用,这是全相联映像方式的最大缺点。如果让主存页标记与各 Cache 标记同时比较,则成本又太高

五.组相联映射

        组相联映射则是集以上两者映射方式之大成,即分区又分组,组内可以随意调换位置,很好了折中了直接映射和全相联映射的最大缺点,同时又拥有自己的新东西(分组),使得CPU读取变得更为灵活。怎么分组呢?就是在分完区之后,再在区块里面分组,分多少组就得看看Cache的容量有多大,分完组后,组内的页可以随意调换位置,没有特定的限制:

        组相联映像的规则是:主存中的组与Cache 的组形成直接映像关系,而每个组内的页是全相联映像关系。如主存 1区 0页,他在 0组中,所以只能进入 Cache的 0组中,至于进入到 Cache的 0组 0页,还是 0组 1页,并无强制要求,可任意放置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352111.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

计算机中丢失VCRUNTIME140_1怎么办,vcruntime140_1.dll的三个修复方法

vcruntime140_1.dll是一个Windows系统文件,它是Microsoft Visual C Redistributable for Visual Studio 2019软件包的一部分,用于运行使用Visual C开发的应用程序。在我们打开软件或者游戏的时候,提示计算机中丢失VCRUNTIME140_1怎么办&#…

w ndows10玩游戏蓝屏,Windows 10 电脑玩穿越火线蓝屏原因及解决方法

Windows 10 蓝屏是非常常见的,可是面对不同原因出现的蓝屏您又知道如何去处理吗?今天我们就来通过解决穿越火线蓝屏顺便一起看看都是因为什么原因导致的 Windows 10 系统蓝屏吧。 1、显卡驱动导致的蓝屏,由于在 Windows 10 系统中有很多不稳定…

如何下载安装穿越派V3.14版本?

1、启动服务 1.1 在首页或huluer.com任何页面,点击 (数据方舟)。 1.2 点击 启动服务 按钮。 2、安装部署云化环境 (注:一定要到需要部署的个人电脑或服务器上下载并安装。) 2.1 点击确定,下载iChainPi.exe安装程序。(下载及解答 下方点击软件下载也是一样的。)

cf四大服务器位置,CF:从最初的42个服务器到现在的四大战区,穿越火线还能火多久?...

原标题:CF:从最初的42个服务器到现在的四大战区,穿越火线还能火多久? 穿越火线于近日进行了一波重大的更新,最引人注目的就是“跨区作战”了,也就是我们所说的合区,从2017年开始,穿越…

cf游戏进不去计算机,cf更新之后进不去 穿越火线进不去解决方法

很多穿越玩家在游戏更新后会发现游戏在安全检查过后就没了动静,原本应该出现的游戏界面也是迟迟不出现,万般无奈之下选择重启客户端,然而情况依旧如此。下边小编带您一起来看看为什么cf更新之后进不去,穿越火线进不去解决方法。 1…

echarts折线图使用记录

1项目中引入echarts文档api介绍,链接地址如下 https://echarts.apache.org/handbook/zh/basics/import 2 官网基础样例介绍,链接地址如下 https://echarts.apache.org/handbook/zh/get-started/ 3 基本折线图介绍内容及链接 3.1 最简单的折线图 3.2 笛卡尔坐标系中…

【unity小技巧】常用的方法属性和技巧汇总

学习目标: 最近学习过程经常遇到一些好的方法属性和技巧,但是很容易忘记,单内容都比较少,又不至于开一篇文章单独讲解各个用法,特此单独写一篇做汇总,好记性不如烂笔头,后面收获一些新的知识我还…

NineData,稳定、高效的Redis数据同步解决方案

在 DB-Engines 网站的排名中,Redis 在 Key-value 存储的NoSQL领域连续霸榜多年,是目前最流行的键值对存储数据库,被广泛用于缓存、队列、实时分析等多种高并发的场景中。在生产环境中,我们会遇到对Redis进行版本升级和架构的扩缩容…

保护您的邮件安全:Exchange Reporter Plus 助您全面监控与审计

引言: 在当今数字化时代,电子邮件已成为我们日常生活和工作中不可或缺的沟通工具。然而,随着电子邮件的广泛使用,邮件安全也成为一个备受关注的议题。为了保护组织的敏感信息和防止数据泄露,我们需要一种强大的解决方…

微信如何批量添加好友?

现在营销中,微信已成为一种重要的沟通方式。微信目前是没有自动批量添加好友的功能,需要运营者一个一个手动去添加,这样太过于浪费时间,并且加频繁了还容易被封号,今天给大家介绍几种手动批量加好友的方式以及怎么借助…

怎么把投票链接生成二维码投票链接怎么生成二维码

用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。 而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务,很多用户都很喜欢“活动星投票”这款软件。 “活动星投票”小程序在…

运维小白必学篇之基础篇第十五集:FTP实验

FTP实验 实验者:胡 阳 匿名用户验证: 例:(前提配置,防火墙关闭,yum安装,同模式vmware11) 现有一台计算机huyanggw(视作服务端),IP地址为192.1…

ETLCloud轻松应对CDC实时数据流和维度数据合并的需求,实时监控订单数据

如何实现实时流与批流合并打宽数据 通常情况下我们使用CDC实时监听表销售或订单表数据的LOG时会形成流式的数据,即订单变化时数据是按照变化时间不断的传入到ETL的流程中的,业务希望实时看到订单数据的报表。 CDC每次传入的数据有可能是一条也可能是多…

遇到大数据处理,你会怎么办?快来看一下位图和布隆过滤器(下)

目录 前文 一,为什么有布隆过滤器 二,什么是布隆过滤器 三,布隆过滤器的实现 四,布隆过滤器的优缺点 4.1 布隆过滤器的优点 4.2 布隆过滤器的缺点及其改进方式 4.2.1 查找误判及其改进方式分析 4.2.2 不能删除以及改进方式分…

5月VR大数据:Quest 2下跌超1%,其它变化不大

Hello大家好,每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么?关注这里就对了。我们会统计Steam平台的用户及内容等数据,每月初准时为你推送,不要错过喔! 本数据报告包含:Steam VR硬…

如何打开谷歌地图

1、入口是map.cnmaps.cn是镜像过来的谷歌地图 2、把网站改成。www.google.cn//maps/ ①:map.cnmaps.cn ②:www.google.cn//maps/

BIGEMAP中打开高清卫星影像谷歌地图

说明:批量添加可以同时添加多个在线地图,一次性添加完成 下载安装地球软件: www.bigemap.com 选择立即下载 第一步 : 下载批量添加批处理文件:添加文件 第二步: 查看文件,打开一个txt文件&am…

arcgis加载谷歌地图和天地图

1加载谷歌地图 bug:科学上网和弹窗 1.1.下载插件arcgoogle 选择合适的版本下载链接 1.2.安装软件 双击setup.exe进行安装 1.3.加载工具 自定义>从文件添加……>arcgoole.tlb 1.4.加载地图 右键软件空白,勾选ArcGoogle-ungdungmoi.com&am…

谷歌地图网页版_如何在网站嵌入谷歌地图

为何要在外贸网站嵌入谷歌地图?而不用国内常用地图? 1、国外用户常用工具(老外常用地图软件) 2、嵌入地图为动态,可放大缩小,定位区域 3、用户查看更生动 4、嵌入谷歌地图代码可以根据浏览器语言,自动识别显示对应国家语言,用户体验度高 操作步骤 1、打开Google地图 具体…

集成谷歌地图不显示的问题

最近做了一个项目,要用到谷歌地图,这也是第一次用谷歌地图,当按照文档集成以后,地图就是不显示。最后鼓捣半天,终于出来了。希望能帮助入坑的小伙伴。由于谷歌地图是国外服务器,想必大家都会想办法登录谷歌…