Cache(高速缓存)的三种地址映像方式
1.直接映像方式
直接相连映像:每一个内存区都是和一个Cache块相对应的,也就是说,Cache块里有多少块,一个内存区里就有多少Cache块,每一块都是相互对应的。假设cache里有32块,那么内存里就会先算着32块总共有多大,在除以自己的容量,就可以得出自己该划分出多少的区,每一个区有n块(cache有多少块,一个内存区里就有多少块)。这样来一一对应。
优点:地址换算快,更好的运行效率。
缺点:冲突率太高,假设0区的第0块在和cache的第0块传递数据,第二区的第0块就不能传输,即使有别的cache块空闲着也不能传输,只能等。太浪费资源了。
2.全相连映像方式
内存中不再分区,而是直接分块,就是你Cache有多大,我内存就按这个大小来分块,假设Cache有512kb,我内存中每一块就是512kb,我内存中每一块都相当于是一个Cache的副本(其实cache是内存的一个副本,这里为了方便理解,故此这样说)。例如,内存中的第0块中就有Cache中的每一块与之相对应。这样就很好的解决了冲突率高的问题,只有Cache中被填满了,才会有冲突产生。
优点:很好的解决了冲突高的问题,资源利用率高
缺点:造价相对昂贵,地址转换速度较慢。
3.组相连映像方式
是前两种的集大成者。它的分区方法是组对组的一种分区方式,每两块是一组。一个Cache对应一个内存中的区,内存区里的组数和Cache中的组数是一一对应的。Cache能够对应每一个内存区。这符合直接映像的优点。然而,每一个组内的数据也是可以自己替换的,比如内存中的第0区中的第8组的第0块中的数据可以替换到Cache第0组中的第0块,也可以去第0组的第一块。这就符合了全相连映像。所以说组采用直接映像,块采用全相连映像。
如果看不懂,或许是关于cache和地址映像的一些知识还没有搞懂。在这里补充一下。
Cache:高速缓存:为了提供计算机的工作效率而存在的,这是因为CPU与内存的读取速度并不一致,所以出现了一个一级缓存Cache。它是内存的副本,一个计算机可能会运行多个程序,这些程序的进程在内存里。而一般人们会使用一个程序,这个可以称为主程序,你不能够要求张三一边打游戏一边写Word文档吧。但是内存的读取速度不够快,这个时候怎么办呢?就把CPU当前正在处理的主程序产生的数据传入Cache中,这样就可以解决内存速度不够的问题了。但是具体要怎么把内存中的数据给到Cache呢?这就需要使用到替换算法,因为Cache中的数据只是内存中的副本,所以需要用到替换算法来把内存中的相关信息替换到Cache中。
地址映像:因为CPU得到的只是内存地址,要从Cache中拿数据,就需要把这个地址转为Cache的地址,这个就叫做地址映像。地址转换完之后Cache得到相应的,有就给,没有再去内存里拿。
个人原创,如有雷同,便是雷同。
Cache(高速缓存)的三种地址映像方式相关推荐
- ASP.NET缓存中Cache过期的三种策略
ASP.NET缓存中Cache过期的三种策略 原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. ...
- 网页中的三种地址详解
网页中的a标签具有地址跳转的功能,href属性指向跳转的地址. 一.三种地址模式 网络地址分为两种,一种是绝对地址,一种是相对地址. 但是相对地址又可以细分为两种,一种是基于当前目录的相对地址,一种是 ...
- zynq学习03 zynq中三种实现GPIO的方式
http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...
- SSO单点登录三种情况的实现方式详解
SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...
- HTML三种引入样式的方式
HTML三种引入样式的方式 1.外部样式:是通过link元素引入 <link rel="stylesheet" type="text/css" href= ...
- SpringBoot 三种拦截http请求方式Filter,interceptor和aop
SpringBoot 三种拦截http请求方式Filter,interceptor和aop. 这三种拦截方式的拦截顺序是:filter->Interceptor-->ControllerA ...
- Objective-C:三种文件导入的方式以及atomic和nonatomic的区别
一.三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...
- 浅淡Webservice、WSDL三种服务访问的方式(附案例)
Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...
- Python中的urllib,urllib三种不同的请求方式
1.urllib获取服务器的资源 自定义爬虫的重要组件 获取百度首页的资源: #3.x的标准写法 import urllib.request import urllib.parse#百度的首页 fro ...
最新文章
- Spring Boot——Maven使用SystemPath引用本地jar:ClassNotFoundException
- 数据采集之解析Mysql的binlog日志发送至Kafka实时消费(转:https://blog.csdn.net/liguohuabigdata/article/details/79472777)
- cell 各自的高度不同的时候
- java容器02--ArrayList源码分析
- CCF202009-1 称检测点查询
- CodeFirst Update-Database 出现对象'DF__**__**__**' 依赖于 列'**'。
- jQuery 事件的命名空间
- zabbix-agent自定义监控项
- VS2008下编译C++程序,找不到 stdint.h,原因及解决方案
- Node.js学习入门
- MCS51单片机的输入/输出接口
- html多个div横向排列居中,多个div垂直居中横向排列的示例分析
- RGB色彩之间的过渡参考
- linux脚本设置字体颜色,xshell设置字体及背景颜色方法详细教程
- 医院预约挂号mysql_医院预约挂号系统代码 mysql+myeclipse
- SSD源码解读1-数据层AnnotatedDataLayer
- unix/Linux BSD以及System V---认知
- java和scala代码可以混合编写吗_Scala字符串插值的妙用,以及java+scala混合编程
- 中国剩余定理 即 孙子定理
- Django解决css样式失效问题最终方法