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. 深度学习之seq2seq、编码器解码器、注意力机制、Transformer
  2. 云计算服务在小企业中的作用?
  3. Darknet_Yolov4实战(一)_安装Ubuntu+cuda+cudnn
  4. Android studio 克隆分支
  5. 如何让word档在同一页上显示两列或更多列
  6. windows服务器网站日志,windows服务器网站日志文件
  7. 用得最多的altium版本_83版《神雕》有多猛?收视率破90%!金庸最满意的版本...
  8. c语言复杂函数转换,详解C语言常用的一些转换工具函数.pdf
  9. js读取html元素scr,了解一下JavaScript中的DOM编程
  10. Django nginx部署
  11. 搜索工具推荐 Windows中的everyting 和 mac下的alfred
  12. 【吐血整理,建议收藏】B站上有哪些值得反复观看的Java视频教程?
  13. 耳机降噪功能(ANC、ENC、CVC、DSP)
  14. android4.4中添加方案,Android4.0-4.4 添加实体按键振动支持的方法(java + smali版本)
  15. 基于Arduino UNO的光驱写字机制作
  16. 无需公网IP,免费内网穿透【cpolar】访问内网服务
  17. cad怎么将图层后置_CAD图层遮挡,如何将CAD图形进行前置或者后置?
  18. 使用vue2实现打印在线word文件,文件流形式打印在线word,预览打印
  19. cf1341 Nastya and Door
  20. word脚注:文字与分隔符间的空格删除

热门文章

  1. NOI2.3.6262 流感传染题解(C++)
  2. Markdown常用语法——Typora软件为例
  3. 只需两步带你轻松使用My97DatePicker日期控件
  4. 设置App桌面图标上显示的角标数字
  5. Linux 安装ssh软件
  6. Python的画画功能turtle
  7. Excel常用技巧--工作中最常用的30个Excel函数公式
  8. 完美解决WIN7系统字体模糊问题(替换字体+更改样式设置+修改注册表)
  9. 散布矩阵(Scatter Matrix)及其与协方差矩阵(The Covariance Matrix)的关系
  10. Android 怎么退出整个应用程序?