目录

  • 1、主存中的块放到cache(高速缓冲存储器)中哪个位置?
  • 2、标记位、有效位、命中是什么?
    • 2.1 标记位
    • 2.2 有效位
    • 2.3 命中
  • 3、全相联映射
  • 4、直接映射
    • 4.1优化标记位
  • 5、组相连映射
  • 6、课后习题

1、主存中的块放到cache(高速缓冲存储器)中哪个位置?

全相联映射:主存中的块在cache中随意放(就是想放cache中的哪一行就放哪一行)

直接映射:主存块号%cache有多少行,通过这样计算出来的结果,就是主存块在cache中存放的位置。

组相连映射:主存块号%cache中有多少组,通过这样计算出来的结果,就是主存块在cache中存放的组,至于在组中可以随意放。

2、标记位、有效位、命中是什么?

2.1 标记位

标记位=主存块号,当主存块中的东西放到cache中后,会将相应的主存块号设置为标记位。这样做的话,下次CPU要访问这个位置的主存时,就不用直接去访问主存了,只要在cache中就可以找到。

比如:CPU要访问主存中地址A,首先会去看看cache中有没有A,由于这里A地址放到了cache中,那么就直接找cache就行,就不用专门跑去主存中了。
而这期间具体是这样子的,CPU先找到cache中的标记位,找到标记位后,也就是找到了相应的cache行,再通过块内地址在相应的cache行中找到相应的位置。
(主存地址A = 主存块号+块内地址)

2.2 有效位

cache中没有放东西的行会默认置0,这时候可能就会出现很多个0的情况,而且如果主存块号0放入cache中还会与之混淆,所以就引入了有效位这个概念。在放入后,有效位就设置为1,没有放入就设置为0,这样就算放入的是主存块号0,也不会混淆了。

2.3 命中

命中是什么意思呢?我个人理解是:CPU在cache中找到了它想要在主存中找到的东西。如果在cache中没有找到,就是未命中。未命中的话,CPU就需要去访问主存,虽然这样会慢一点,但是没办法,毕竟cache中没有,就只能去主存找了。

3、全相联映射

这是王道考研中的一个截图,感兴趣的可以看看王道的讲解。
链接: https://pan.baidu.com/s/1dkDtZxbSP0OHvJDaoKR5rg 提取码: ngc1

这里需要注意:1MB = 210 KB = 220 B
所以256MB = 228 B
又因为每行长64B = 26B
所以cache的块内地址为26
因为cache块的大小是和主存块的大小是相等的,也就是cache和主存的每一行大小相等,所以主存的块内地址是6位

228/26 = 222

所以主存块号为22位

4、直接映射


直接映射有一个很大的缺点就是,只能放在固定位置,灵活性差,会使大片内存无法得到充分利用。
比如图中所示一样,主存块号8的那个要放到cache中,对应的是0的那一行,但是其他地方明显空了很多,却不用,而且放到0的那里,还会覆盖掉原来的

4.1优化标记位

主存块号的后三位与cache中行数的二进制数相对应

这里通过优化后,标记位的位数可以少3位,其实就是将主存块号进行细分,细分出了标记位和行号。

5、组相连映射

6、课后习题

设某计算机主存容量位4MB,Cache容量为16KB,每块包含8个字,每字32位,设计一个4路组相连映像(即Cache每组内共有4个块)的Cache组织,要求:
(1)画出主存地址字段中各字段的位数
(2)设Cache的初态为空,CPU依次从主存第0,1,2,……,99号单元读出100个字(主存依次读出一个字),并重复按此次序读8次,问命中率是多少?
(3)若Cache的速度是主存的6倍,试问有Cache和无Cache相比,速度提高多少倍?

关于主存地址的例题
关于主存地址的详细讲解
这两篇文章看了之后,来做第一小问应该会比较轻松。

(1)主存地址 = 区号+组号+组内块号+块内地址号

因为Cache容量位16KB,即214 B,每个B(字节)里面有8位
Cache的容量 = 16KB/(8*32)位 =( 214*8)/28 = 29
又因为每4块一组,所以共有29/4 = 27组,通过二进制来表示27 组,所以需要7位,故组号是7。(21组的话,就是需要1位二进制数,0和1;22组=4组,就需要2位二进制数,00 = 0,01 = 1,10 = 3,11 = 4)

组内块号就是指有多少块一组,这里是4块一组,是22 组,所以转换成二进制需要两位,所以组内块号 = 2

如果没有明确指明的话,默认是按字节编址,那么每个字就是32位/8 = 4字节,又因为每块包含8个字,所以一个块有8*4 = 32字节 = 25 字节
故块内地址号 = 5

因为主存容量是4MB = 222 B,所以主存地址共有22位
最后,区号 = 22 - 7 - 2 - 5 = 8

主存地址格式如下:

区号 组号 组内块号 块内地址
8位 7位 2位 5位

(2)由于每个字块有8个字,所以主存第0,1,2,……,99号单元分别在0~12中,采用四路组相连分别映像到第0组至12组中,但由于Cache起始为空,所以第一次读取的时候,读每一块的第一个单元都是为空,都没命中,但后7次每个单元都能命中。

命中率 = (100-13 + 7x100) / 8x100 = 98.4%

(3)设Cache的存取周期为T,则主存的存取周期为6T。
有Cache的访存时间 = H × Tc + (1 - H) × (Tm + Tc)= Tc + (1 - H) × Tm = T + (1 - 98.4%) × 6T= 1.096T

全相联映射、直接映射、组相连映射相关推荐

  1. 直接映射缓存,全相联映射缓存,组相连映射与tag,index,offset的理解

    知乎大佬的文章 tag,index,offset的理解 这篇文章并不是真正介绍这些缓存地址映射方法的实现,而是基于上面大佬的文章的一些可能不好理解的地方的一些个人的理解. 直接相联映射 我们一共有8行 ...

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

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

  3. 计组之存储系统:6、Cache-主存映射方式(全相连映射、直接映射、组相连映射)

    6.Cache-主存映射方式 思维导图 待解决问题 三种Cache-主存映射方式 全相联映射(随意放) 直接映射(只能放固定位置) 组相联映射(可放到特定分组) 各种映射的优缺点: 思维导图 待解决问 ...

  4. Cache之组相连映射

    简单说就是,组相连映射是直接映射和全相连映射的一种折中. 具体的执行策略是:将Cache进行分组,数量记为Q,每组有R个字块. 设i是Cache的组号,j是主存的块号,那么一个主存块怎么映射到组中呢? ...

  5. 直接映射,组相连映射以及全相连映射

    Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块为单位的.为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射.在信息按 ...

  6. 【操作系统】cache直接映射、组相连映射以及全相连映射

    Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块为单位的.为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射.在信息按 ...

  7. 4路组相连cache设计_Cache组织方式

    经过下面文章的介绍,我们已经知道cache的基本工作原理. smcdef:图说Cache - Cache的基本原理​zhuanlan.zhihu.com 但是,我们一直避开了一个关键问题.我们都知道c ...

  8. 多路组相连cache(缓存)结构(multi-way set associate cache)

    1 物理地址tag/set/block_offset说明: 1.1 以 2路组相连cache为例子介绍cache行和物理地址行的构成 上图是2路组相连的cache(引自https://www.scie ...

  9. 存储器里面的一个采用直接映射方式的32KB缓存-一个四路组相连的缓存,容量为16KB

    1,一个采用直接映射方式的32KB缓存,假设块长为8个32位的字,且CPU访问缓存命中, 则主存地址为ABCDEFH的单元在缓存的第(H)块内. 转换: ABCDEF(16)=1010 1011 11 ...

最新文章

  1. Python自动化测试白羊座-week3切片+元组
  2. R语言定量变量组间差异检验
  3. php单例模式的实例,PHP的单例模式的一个实例_php
  4. Caffe学习系列(15):计算图片数据的均值
  5. Sqli-labs less 45
  6. ReviewForJob——最小生成树(prim + kruskal)源码实现和分析
  7. ASP.NET中使用非托管DLL
  8. lambda函数以及对 items.sort(key = lambda y:y[1], reverse = True) 的理解。
  9. 马化腾首次回应反垄断;乔布斯 1973 年求职申请表被拍出22.24万美元;英特尔新CEO表示很乐意为苹果代工 | 极客头条...
  10. Mac 环境endnote 各种问题解决方法和word各种技巧汇总
  11. Nginx配置Basic_Auth登录认证
  12. 浅析AI边缘计算的车辆/车牌识别技术研发及场景应用
  13. 飞猪大数据:85后带来春节旅行新气氛
  14. 一文读懂微信之父张小龙:失败天才、颠覆者、独裁者、人性操控师
  15. JS中的NaN和isNaN
  16. [深度学习] 使用LSTM实现股票预测
  17. 中国计算机发展史 博客,“博客”(Blog)在中国的发展历程
  18. c语言输入一个三位数由小到大排序,c语言程序设计练习题.doc
  19. 蓝牙HCI剖析(一)
  20. 直播电商软件开发,实现窗体抖动

热门文章

  1. English trip V1 - B 5.Is It Cold Outside? 外面很冷? Teacher:Corrine Key: weather
  2. 用英语描述计算机操作,描述计算机RAM ROM的英语单词
  3. UTC时间, GMT时间 ,夏令时
  4. 对TCP重传的进一步认识
  5. autorun.inf 配置说明
  6. 谷歌13年提出来的类似于lr的算法 - ftrl论文翻译(七)
  7. java token使用方式_使用 Java 和 web3j 进行 Token 开发[概述][译]
  8. 贝塞尔曲线(Bezier)之花束直播爱心点赞动画效果
  9. sel system event log 情况分析
  10. 纸上谈兵: 算法与数据结构