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(高速缓存)的三种地址映像方式相关推荐

  1. ASP.NET缓存中Cache过期的三种策略

    ASP.NET缓存中Cache过期的三种策略 原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. ...

  2. 网页中的三种地址详解

    网页中的a标签具有地址跳转的功能,href属性指向跳转的地址. 一.三种地址模式 网络地址分为两种,一种是绝对地址,一种是相对地址. 但是相对地址又可以细分为两种,一种是基于当前目录的相对地址,一种是 ...

  3. zynq学习03 zynq中三种实现GPIO的方式

    http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...

  4. SSO单点登录三种情况的实现方式详解

    SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...

  5. HTML三种引入样式的方式

    HTML三种引入样式的方式 1.外部样式:是通过link元素引入 <link rel="stylesheet" type="text/css" href= ...

  6. SpringBoot 三种拦截http请求方式Filter,interceptor和aop

    SpringBoot 三种拦截http请求方式Filter,interceptor和aop. 这三种拦截方式的拦截顺序是:filter->Interceptor-->ControllerA ...

  7. Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

    一.三种文件导入的方式比较:   类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...

  8. 浅淡Webservice、WSDL三种服务访问的方式(附案例)

    Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...

  9. Python中的urllib,urllib三种不同的请求方式

    1.urllib获取服务器的资源 自定义爬虫的重要组件 获取百度首页的资源: #3.x的标准写法 import urllib.request import urllib.parse#百度的首页 fro ...

最新文章

  1. Spring Boot——Maven使用SystemPath引用本地jar:ClassNotFoundException
  2. 数据采集之解析Mysql的binlog日志发送至Kafka实时消费(转:https://blog.csdn.net/liguohuabigdata/article/details/79472777)
  3. cell 各自的高度不同的时候
  4. java容器02--ArrayList源码分析
  5. CCF202009-1 称检测点查询
  6. CodeFirst Update-Database 出现对象'DF__**__**__**' 依赖于 列'**'。
  7. jQuery 事件的命名空间
  8. zabbix-agent自定义监控项
  9. VS2008下编译C++程序,找不到 stdint.h,原因及解决方案
  10. Node.js学习入门
  11. MCS51单片机的输入/输出接口
  12. html多个div横向排列居中,多个div垂直居中横向排列的示例分析
  13. RGB色彩之间的过渡参考
  14. linux脚本设置字体颜色,xshell设置字体及背景颜色方法详细教程
  15. 医院预约挂号mysql_医院预约挂号系统代码 mysql+myeclipse
  16. SSD源码解读1-数据层AnnotatedDataLayer
  17. unix/Linux BSD以及System V---认知
  18. java和scala代码可以混合编写吗_Scala字符串插值的妙用,以及java+scala混合编程
  19. 中国剩余定理 即 孙子定理
  20. Django解决css样式失效问题最终方法

热门文章

  1. idea 怎么换主题,如何换主题颜色
  2. Excel课程学习第二课单元格格式设置
  3. mac识别不了硬盘怎么回事 mac识别不了硬盘怎么解决
  4. AC-DC单相全波可控整流电路
  5. linux添加用户和用户组
  6. 学习virtuoso软件过程-Linux基本命令篇
  7. Intel Core i7 - 8086K 四十周年纪念版 开箱图赏
  8. JS变量、属性、方法、函数的相同点和区别
  9. 计算机磁盘无法打开到桌面怎么办,win7系统磁盘管理器被限制无法打开怎么办...
  10. 量化交易python入门书籍_张杨飞《Python量化交易入门》PDF下载