【计组原理学习笔记】Cache的映射

本文详细介绍了三种Cache映射方式:直接映射、全相联映射和组相连映射。直接映射结构简单,但空间利用率低;全相联映射冲突概率低,命中率高,但电路复杂;组相连映射结合两者优点,是实际系统中的常见选择。文章通过工作图、地址构成和工作流程阐述了每种映射方法的特性和操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

一、直接映射

直接映射工作图

地址构成

工作流程

直接映射中Cache地址和主存地址对比(重点注意)

二、全相联映射

全相连映射工作图

地址构成

三、组相连映射

组相连映射工作图

地址构成

工作流程


一、直接映射

  • 定义:主存中任一给定的块,只能映射/装载到某一个指定的Cache块中
  • 构成:根据cache存储体和主存储体的大小,将主存划分为若干个与cache存储体相等的区,每个区的大小与cache大小相同
  • 映射规则:主存各区的字块数=cache内的字块数。进行映射时,各个区的 第零块 只能放在cache存储体的 第零块 当中,第n块只能放在cache的第n块中
  • 特点
    • 结构简单,速度较快
    • 可以通过cache块的地址直接找到cache块
    • cache空间利用率最低,cache块调入时最容易冲突
根据题意,Cache 大小为 4 行,每行存放 1 个字,所以 Cache 的总大小为 4 个字。采用 2 路组相连映射方式,意味着每组有 2 个 Cache 行,而每个组映射到主存中的 2 个字。 首先访问主存地址 0,此时 Cache 中没有数据,需要从主存中取出 0 号字块,并将其存放在 Cache 中第一行。此时 Cache 中为: ``` 0 ``` 接下来访问主存地址 4,由于采用了 2 路组相连映射方式,4 号字块映射到了第二组,因此需要将第二组的两个 Cache 行都检查一遍。发现 Cache 中没有 4 号字块,需要从主存中取出 4 号字块,并将其存放在第二组的第一行。此时 Cache 中为: ``` 0 4 ``` 再访问主存地址 8,同样映射到了第二组。此时第二组已经存放了 4 号字块,因此可以直接将 8 号字块存放在第二组的第二行。此时 Cache 中为: ``` 0 4 8 ``` 接下来访问主存地址 2,映射到了第一组。由于采用了 LRU 替换策略,因此需要将第一组中最近最少使用的 Cache 行替换掉。此时第一组中仅有一个 Cache 行,因此直接将 2 号字块存放在第一组的第一行。此时 Cache 中为: ``` 2 4 8 ``` 再次访问主存地址 0,映射到了第一组。由于第一组中已经存放了 0 号字块,因此可以直接命中 Cache。此时 Cache 中为: ``` 2 4 8 0 ``` 然后访问主存地址 6,映射到了第二组。由于采用了 LRU 替换策略,需要将第二组中最近最少使用的 Cache 行替换掉。此时第二组中的第一行是最近最少使用的,因此需要将其替换掉。由于 6 号字块还没有被存放在 Cache 中,因此需要从主存中取出 6 号字块,并将其存放在第二组的第一行。此时 Cache 中为: ``` 2 6 8 0 ``` 接下来访问主存地址 8,映射到了第二组。由于第二组中已经存放了 8 号字块,因此可以直接命中 Cache。此时 Cache 中为: ``` 2 6 8 0 ``` 再次访问主存地址 6,映射到了第二组。由于第二组中已经存放了 6 号字块,因此可以直接命中 Cache。此时 Cache 中为: ``` 2 6 8 0 ``` 然后访问主存地址 4,同样映射到了第二组。由于第二组中已经存放了 4 号字块,因此可以直接命中 Cache。此时 Cache 中为: ``` 2 6 8 0 4 ``` 最后访问主存地址 8,同样映射到了第二组。由于第二组中已经存放了 8 号字块,因此可以直接命中 Cache。此时 Cache 中为: ``` 2 6 8 0 4 ``` 因此,命中 Cache 的次数为 7 次。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值