下面几道题涉及到直接映射、组相联映射、全相联映射

将通过下面几道题的讲解,彻底教会Cache总容量的求法

一、概念了解

1.1 首先,我们需要知道有关Cache的一些概念

Cache为高速缓冲存储器,其工作的方式是,当主存中有内容需要执行时,将其内容复制到cache中,能够加快运行。

有简单学习过这部分内容的同学肯定知道,
一个主存块对应一个Cache行 以及 一个主存块的大小一个Cache行的大小相等,

1.2 那么怎么让主存块对应Cache行呢?(Cache与主存的映射方式)

1.2.1 在这里先介绍一下主存块的内容

既然主存属于存储器,那么他一定有数据部分,如果想找到这样一个主存块,那么他一定有地址部分
可以简单的理解为:主存块 就是 一个有地址的数据。
那么我们只要知道地址,就能快速获取里面的内容。
所以接下来我们就不讨论主存的数据,而是主要讨论主存地址。

1.2.2 讨论主存地址

将主存想象成一栋楼,一个主存块就是某一层,一个主存块内还有若干个字节,其对应于某一层的某一个房间。
想象一下,如果你要想找到一个确定的房间需要一个什么样的过程。

16层501,像这样的一个访问方式就找到了所要寻找的房间,
那么对应寻找主存数据的过程也是这样,先寻找你需要的主存块(主存块号),再确定主存块内的具体地址(块内地址)。

1.2.3 主存地址的构成

所以主存地址由两部分组成:主存块号+块内地址

1.2.4 Cache行的构成

Cache由 Cache标记(其目的是找到对应的主存块)+数据(对应主存中的数据)构成
(为什么要引入cache标记,而不直接使用主存块号进行对应?
答:因为在cache与主存的映射中,cache通过不同的映射方式可以使用主存块号的部分位数精确的找到某主存块,而不需要使用全部。 这里看不懂没关系,在下面映射部分会深刻体会,见直接映射最后部分)
需要注意:在下面计算时会常常用到这样的概念cache行位数
所以就可以知道cache行位数 = cache标记位数 + 数据位数 +其他注意这里的其他是指一些有效位、修改位之类的

那么cache行和主存块究竟是如何对应的呢?

1.2.5 cache行和主存块的三种映射方式

直接映射、全相联映射、组相联映射

1⃣️ 直接映射

一个主存块对应固定的一个cache行如下图

直接映射的地址结构(看完直接映射就会理解,具体代入见该部分问题2)

如果cache行数为8,那么主存块和cache行对应关系如下表、下图,

主存块号 对应的cache行
0 0
1 1
2 2
3 3
4 4
…… ……
60 4
61 5
62 6
…… ……
101 5
102 6
103 7

这里有两个问题。

  1. 你能否很快速的知道二进制地址为1010011011的主存块 对应的 cache行是哪一个吗?
    答:011 = 3,你太棒了,你发现了里面的规律吗,最后的三位就是对应的cache行
  2. 假如在大小为8的cache中,第3行的cache行知道有一个主存块的前(n-3)位为1001011,那么你能知道这个主存块的精确地址吗
    答:3 = 011. 所以精确地址为1001011 后面 加上011,即1001011011【cache是知道自己的地址的】

解决了根据上面的两个问题,相信你已经理解了直接映射的映射方式。
同时对于在1.2.4中所提到的cache行的标记位,相信你也有了不错的理解,cache行中的标记位就是问题2中的1001011,能够节省3bit的空间

那么再次考虑上述第二题,是否可以理解主存块号=标记+cache行号这个公式了呢

2⃣️全相联映射

每一个主存块能够对应到任意cache行中
先不要看下图,
考虑一下对于这种情况下,cache行中的标记位存储哪些内容,你才能找到精确的主存块?
3
2
1
答:因为我不存在对应关系,所以我必须知道主存块确切的主存块号才能找到一个精确的主存块。
所以 全相联映射的地址结构:主存地址 = 标记 + 块内地址

3⃣️组相联映射

上面两种的结合体
对cache进行分组,主存块放入特定分组块的任意位置,如下图

不好理解的话可以这样去考虑
假如cache行位16采用2路组相联映射的话
将cache号 0,1分为第零组;2,3分为第一组;4,5分为第二组;6,7分为第三组……14,15分为第七组,

现在我给一个主存地址,在组之间进行直接映射关系
【意思就是 0=>第0组;1=>第一组;……60=>第四组;61=>第五组;……】

而对于进入进入第0组的0,8,16……这些主存块来说,我是不管你对应的是0号cache还是1号cache的

组相联映射的理解可以类比理解直接映射的理解

因为对于cache来说自己的cache组号是已知的,所以在对主存地址进行划分时,就不用再将cache组号划分进标记字段中了。
所以 全相联映射的地址结构:主存地址 = 标记 + cache组号+ 块内地址(主存块号=标记+cache组号)

开始进行题目的讲解了

经过了基础知识的学习,相信已经对概念比较熟悉了。
下面进行题目实战

题目一:有关全相联映射的题目


【解】

Cache总容量 = Cache行数 ✖️ Cache行位数

Cache行数

Cache行位数

[计算机组成原理,Cache总容量的计算方法]假设主存地址位数是32位,按字节编址,贮存和Cache采用全相联映射的方式,主存块大小为1个字,每字32位,采用回写法和随机替换的策略,则能存放32K字数相关推荐

  1. 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量

    5单选(1分) 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的c ...

  2. 采用链接分配方式进行外存分配时,可采用的两种形式及其特点。假定磁盘块大小为4K,对于128G的硬盘,其文件分配表FAT需占用多少存储空间?

    采用链接分配方式进行外存分配时,可采用的两种形式及其特点.假定磁盘块大小为4K,对于128G的硬盘,其文件分配表FAT需占用多少存储空间? 隐式链接:除文件的最后一个盘快外,每个盘快中都存有指向下一个 ...

  3. 某计算机的主存地址为256MB,某计算机的主存地址空间大小为256MB,按字节编址。指令cache和数据cache分离,均有8个cac - 上学吧课后习题答案...

    为了研究投资率(投资占GDP的比例)与储蓄牢(储蓄占GDP的比例)之间的关系,马丁·费尔德斯坦(MartinFeldstein)和查尔斯堀·冈(CharlesHorioka)得到21个国家的样本数据. ...

  4. 主存地址位数怎么算_两位数乘一位数也能口算?对!你没看错,不是特殊情况也行...

    什么叫四则运算?加.减.乘.除呗.在四则运算中,如果没有括号,运算规则是先算乘.除,后算加.减. 乘法也是算术中最常见的一种运算.它是将相同的数加起来的一种快捷方式.比如说16×8=128.表示:8个 ...

  5. 计算机组成原理笔记|03存储系统

    存储系统基本概念 大端法为高位在低地址,小端法为低位在低地址 小端模式 :强制转换数据不需要调整字节内容 大端模式 :符号位的判定固定为第一个字节,容易判断正负. 存储器的层次结构 高速缓存存储器和主 ...

  6. 计算机组成原理-宝典

    时间单位:s   ms   μs   ns  依次相差1000倍 65536=2^16 目录 1.移码和补码的关系 2.地址映射 3.总线tips 4.规格化浮点数 5. 算术左移的溢出 6.补码一位 ...

  7. 计算机组成原理-错题本

    时间单位:s   ms   μs   ns  依次相差1000倍 65536=2^16 目录 1.移码和补码的关系 2.地址映射 3.总线tips 4.规格化浮点数 5. 算术左移的溢出 6.补码一位 ...

  8. (计算机组成原理)虚拟存储器

    虚拟存储器的容量是虚拟的,实际上并没有这么多容量,之所以能达到这么大容量,是因为借用了外存的存储空间,把当前不需要访问的数据存放在外存,用内外存数据倒换的时间消耗来换取更大的逻辑存储空间. 虚拟存储器 ...

  9. 计算机组成原理第二版期末复习,计算机组成原理复习.doc

    计算机组成原理复习(考试试题:你懂得) 1.某半导体存储器,按字节编址.其中,0000H -07FFH为ROM区,选用EPROM芯片(2KB/片):0800H-13FFH为RAM区,选用RAM芯片(2 ...

最新文章

  1. 售后服务成OA品牌竞争重要因素
  2. maven打包jar单独配置log4j.properites文件记录日志
  3. 《团队作业》五小福团队--UNO的博客链接汇总
  4. 1.3编程基础之算术表达式与顺序执行 12 计算球的体积
  5. Linq语言集成查询
  6. html快捷保存图片,如何使用360浏览器快速保存图片
  7. 95-38-045-Buffer-UnpooledByteBuf
  8. OpenCV读取视频并获得相关属性信息
  9. java520.1314表白_520最新表白公式,拿去不谢!
  10. Jupyter插件的使用
  11. JAVA安装详细教程
  12. MySQL8pdf_Mysql8.0中文参考手册 中英文chm+pdf版
  13. Python语言程序设计基础_实验3 流程控制I_答案_通识教育必修课程_上海师范大学
  14. 【机器学习】十二、一文看懂支持向量机原理
  15. 标准模型与随机预言模型的比较
  16. nginx 访问a 域名跳转到b域名_微信qq域名防红防封,怎么才能避免自己的域名被屏蔽...
  17. vue在调用摄像头扫码(vue-qrcode-reader)
  18. [教程] ESP32+TFT+分光棱镜实现透明小电视
  19. linux 文件系统 panic,Linux kernel panic解决方法
  20. 教你检查Mac电池的健康度

热门文章

  1. 化学计算机专业就业方向,女生就读数学专业、计算机类或化学专业怎么样?考研方向,就业前景?...
  2. Android~获取WiFi MAC地址和IP方法汇总
  3. 低代码里程碑版—JeecgBoot 3.4.3 版本发布,低代码功能专项升级
  4. 软件设计师-1.计算机系统知识
  5. 电脑使用者的眼睛保护
  6. 有一段时间没来了,总结一下
  7. 十年后再读《轻公司》
  8. 软件领域专利申请的特点及案例
  9. blacklist regions:NGS测序数据中的黑名单
  10. CSS层叠性(重要)