Cache与主存的地址映像

Cache 和主存都被分成若干个大小相等的块,每块由若干个字节组成,主存和 Cache 的数据交换是以块为单位。

地址映像

把主存地址空间映像到 Cache 地址空间,即按某种规则把主存的块复制到 Cache 中。

地址映射方式

Cache 与主存分成大小相等若干块。

假设某台计算机主存容量为 1MB ,被分为 2048 块,每块为 512B 。

Cache 容量为 8KB,被分为 16 块,每块也是 512B 。

直接映射

主存中的一个块只能映射到 Cache 中唯一指定的块中。就如每个人的停车位是固定分配好的,可以直接找到。

直接映射的缺点:因为人多车位少,很可能几个人争用同一个车位,导致 Cache 淘汰换出频繁,需要频繁的从主存读取数据到 Cache 。

直接映射的 Cache 如下图所示。主存中的一个块只能映射到Cache的某一特定块中去。例如:

主存的第 0 块、第 16 块、第 32 块、第 48 块、……、第 2032 块等 128 块,只能映射到 Cache 的第 0 块;

主存的第 1 块、第 17 块、第 33 块、第 49 块、……、第 2033 块等 128 块,只能映射到 Cache 的第 1 块;

以此类推,主存的第 15 块、第 31 块、第 47 块、……、第 2047 块等 128 块,只能映射到 Cache 的第 15 块中。

映射完毕, Cache 总共有 16 块,主存中的每 128(2048 / 16)块,只能映射到 Cache 中的某一个块中。

直接映射是最简单的地址映射方式,它的硬件简单,成本低,地址变换速度快,而且不涉及替换算法问题

但是这种方式不够灵活,Cache 的存储空间得不到充分利用,每个主存块只有一个固定位置可存放,容易产生冲突,使 Cache 效率下降,因此只适合大容量 Cache 采用。

例如,如果一个程序需要重复引用主存中第 0 块与第 16 块,最好将主存第 0 块与第 16 块同时复制到 Cache 中,但由于它们都只能复制到 Cache 的第 0 块中去,所以即使 Cache 中别的存储空间空着也不能占用,因此这两个块会不断地交替装入 Cache 中,导致命中率降低。

全相联映射

主存中的一个块可被映射进任意 Cache 的块中。

但这造成了一个问题,当寻找一个地址是否已经被放入 Cache 时,需要遍历每一个 Cache 中的每一块来寻找,这个代价很高。

就像停车位可以大家随便停一样,停的时候简单,找车的时候需要一个一个停车位的找了。

全相联映射的 Cache 如下图所示。主存中的一个块可被映射进任意 Cache 的块中。

全相联映射方式比较灵活,主存的各块可以映射到 Cache 的任一块中, Cache 的利用率高,块冲突概率低,只要淘汰 Cache 中的某一块,即可调入主存的任一块。

但是,由于 Cache 比较电路的设计和实现比较困难,这种方式只适合于小容量 Cache 采用。

组相联映射

Cache 和主存都分组,主存中一个组内的块数与 Cache 中的分组数相同组间采用直接映射,组内采用全相联映射

也就是说,将 Cache 分成 2u 组,每组包含 2v 块,主存块存放到哪个组是固定的,至于存到该组哪一块则是灵活的。

即主存的某块只能映射到 Cache 的特定组中的任意一块。主存的某块 b 与 Cache 的组 k 之间满足以下关系:k=bk= bk=b % 2u2^u2u。

例如: Cache 分为 8 组(u = 3),每组 2 块(v = 1),主存分为 128 个区,每个区 16 块。

下面这个图中间部分总共 16 块,0~15,是从主存中取了和 Cache 同样大小的,16 块分为 2 组,0~7 块是第 1 组, 8~15 块是第 2 组。

即将一个区分为了 2 组。块 0 映射到 Cache 中的组 1 ,块 1 映射组 1 ,以此类推,块 7 映射组 7 。

组相联映射的 Cache 如下图所示。Cache 和主存都分组,主存中一个组内的块数与 Cache 中的分组数相同,组间采用直接映射,组内采用全相联映射。

主存中的各块与 Cache 的组号之间有固定的映射关系,但可自由映射到对应 Cache 组中的任何一块。例如,主存中的第 0 块、第 8 块……均映射于 Cache 的第 0 组,但可映射到 Cache 第 0 组中的第 0 块或第 1 块;主存的第 1 块、第 9 块……均映射于Cache的第 1 组,但可映射到 Cache 第 1 组中的第 2 块或第 3 块。

常采用的组相联结构 Cache,每组内有 2、4、8、16 块,称为 2 路、4 路、8 路、16 路组相联 Cache。组相联结构 Cache 是前两种方法的折中方案,适度兼顾二者的优点,尽量避免二者的缺点,因而得到普遍采用。

Cache与主存的地址映像相关推荐

  1. Cache(高速缓存)的三种地址映像方式

    1.直接映像方式 直接相连映像:每一个内存区都是和一个Cache块相对应的,也就是说,Cache块里有多少块,一个内存区里就有多少Cache块,每一块都是相互对应的.假设cache里有32块,那么内存 ...

  2. 有关cache、主存地址结构的问题,终于不用再怕了

    Cache和主存的映射方式 下面所提到的字指的是存储字,与容量密切相关. 直接映射 主存: 区 块 字 Cache: 块 字 计算出主存.Cache的总位数. 主存:区+块+字 Cache:块+字 计 ...

  3. 3.6.3 Cache和主存的映射方式

    棒棒哒加油哦 (*^▽^*) 在这个小学中我们要学习cache和主存的三种映射方式,那上小杰的没为我们留下了这样的几个问题,由于开始他保存的是储存里边的某一些数据块的副本,那么我们必须考虑到的一个问题 ...

  4. Cache与主存的三种地址映射详细解读

    前言 我们知道,Cache又叫做高速缓冲存储器, 它保存的是主存中的一部分数据.当CPU要访问数据时,它会同时发送地址给Cache和主存,如果在Cache中找到了想要的数据,则由Cache直接返回数据 ...

  5. 计算机组成原理——Cache与主存的地址映射

    Cache–主存的地址映射 由主存地址映象到cache地址称为地址映射 cache的基本结构: Cache的工作过程: CPU发出一个地址,同时发给主存和cache的地址映射机构,CPU会从主存中取出 ...

  6. 【计算机组成原理】Cache和主存的映射方式

    Cache和主存的关系 Cache行中的信息是主存中某个块的副本,将内存以块为单位调入Cache供快速访问.内存的数据将被调入到Cache行的数据块中,Cache用于缓和主存和CPU之间的速度矛盾. ...

  7. Cache与主存的地址映射

    Cache结构图 Cache和主存被划分为很多块, 块(Cache Block ) 作为映射的最小单元,块大小(Cache Block size) 反应块内所包含的字节数. 以256byte大小Cac ...

  8. 计组 | 【Cache】主存映射cache容量及cache写策略

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

  9. (计算机组成原理)第三章存储系统-第六节2:Cache和主存的映射方式(全相联映射、直接映射和组相连映射)

    文章目录 一:全相联映射 二:直接映射 三:组相连映射 前面说过,Cache中实际保存的是主存中的数据副本,所以这里会涉及一个很重要的问题:Cache和主存是如何映射的?所谓映射是指把主存地址空间映射 ...

最新文章

  1. PHP微信开发之获取access_token
  2. 将HTML5 Canvas的内容保存为图片
  3. 导出toolStrip1中的图标
  4. java工程师考试题目_成功拿到Offer,Java工程师笔试题及答案!
  5. qt android 应用程序图标大小,vs+qt 设置应用程序图标
  6. Python+matplotlib设置y轴标签距离、位置、竖排
  7. coreldraw x4忽略视图样式补丁_Coreldraw x4忽略颜色样式和视图样式补丁
  8. 永中Office遭遇厄运
  9. P2495 [SDOI2011]消耗战(虚树+DP)
  10. 判断闰年的3种方法(判断+范围输出)
  11. excel宏根据表格自动计算机,Excel使用宏录制自动将输入内容排到另一张表的操作方法...
  12. 显示器分辨率的英文(XGA、SXGA、UXGA、WSXGA等等来表示)
  13. 【算法学习】笨拙的奶牛
  14. Spring源代码分析(11)---JDBC Dao(老树发新芽)
  15. 5分钟读懂UML类图
  16. Hive 数据倾斜问题定位排查及解决(实际案例)
  17. APP项目开发-需求分析
  18. java线程池的应用_Java线程池的使用
  19. Python吴恩达深度学习作业4 -- 构建深度神经网络
  20. 使用rsync删除大文件

热门文章

  1. 容器服务(四): Kubernetes 搭建与核心原理
  2. win10 家庭中文版打开本地组策略编辑器
  3. 基于Geomesa服务查询轨迹数据无法根据空间和时间范围进行查询的问题解决办法
  4. 计算机网络技术赚钱,计算机网络技术-.ppt
  5. 探寻红色印记,传承红色基因
  6. UWB的三种算法详解
  7. 【C库函数】 strstr函数详解
  8. Mozilla 开源稍后阅读应用 Pocket 代码
  9. python暴力破解excel_使用 Python 读写 Excel 文件(一)
  10. 用树莓派DIY波士顿机器狗,帮你省下50万:教程开源,人人皆可上手