王道计组复习(3.5开始)

3.5双口RAM和多模块存储器(看不懂)

双口RAM做了解即可
多模块存储器

3.6.1局部性原理及性能分析

引入cache-主存的原因
在这里插入图片描述
cache可以更快的从主存中取出元素(相比于cpu从主存中去元素)
在这里插入图片描述
性能分析:
在这里插入图片描述
eg:
在这里插入图片描述
在这里插入图片描述
效率:只访问cache的时间和实际访问时间相比
在这里插入图片描述
总结:
在这里插入图片描述

3.6.2Cache的地址映射

cache的命中率,平均访问时间,访问效率(含例题)
Cache的基本工作原理
在这里插入图片描述
主存中的块应该放在Cache的哪个位置
在这里插入图片描述
随机映射
在这里插入图片描述
直接映射
有效位+
在这里插入图片描述
按号分组
在这里插入图片描述
图示
()位组相联,就是每一组内有多少个内存单元
在这里插入图片描述

Cache的替换算法

在这里插入图片描述
eg:
在这里插入图片描述
做题时用表格来画,放数据是从下往上放(替换是就是替换最上面的数据)
在这里插入图片描述
在这里插入图片描述

Cache浅析

cache是干啥的?
在以前,CPU的主频比较慢,CPU和内存DRAM之间速度差别不是很大,存储数据或者指令还OK。但是CPU的飞速发展,CPU大哥速度已经飞快,而内存速度却跟不上大哥的步伐,所以大哥每次要读取或者写入内存的时候都要等一等小弟,这个时候怎么办。cache就出来了,它类似与一个第三方。位于内存和CPU之间,速度非常快,所以CPU就把数据直接写入cache,然后CPU就可以干其他的了,剩下的事情就交给cache这个跑腿的,cache在合适的时机可以慢慢的把数据写入内存,也就是相当于解了CPU的燃眉之急。

说白了,CPU要读数据首先是在cache中读,如果cache命中,也叫cache hit,CPU就可以极快的得到该地址处的值。如果cache miss 也就是没有命中,它就会通过总线在内存中去读,并把连续的一块单元加载到cache中,下次好使用。

==cache大多是SRAM(静态RAM),而内存大多是DRAM(动态随即存储)==或者DDR(双倍动态随机存储)。
cache容量一般非常小,因为价格贵,所以cache小是有道理的。一级cache一般就几KB,cache 的单位又分成cache line ,它是从内存单元加载到cache中的最小单元,一般为几个字大小,32字节或者64字节偏多。(因为时间局部性和空间局部性所以加载一次是以一个cache单元为最小单位)

cache有两种模式(写回模式) 和 (写通模式)
写回?写通? 回哪儿?通哪儿?
当然是内存啊!!!
简单介绍,写通也就是当CPU写入cache的时候,将数据再从cache 中写到内存中,这两个过程要都结束后,CPU的写入操作才算完成,也就是时刻保持内存和缓存的同步,这显然是很耗时的。

写回也就是当CPU写入cache中的时候,数据不会马上从cache中写到内存里面,而是等待时机成熟后写入(比如 发生cache miss,其他内存要占用该cache line的时候将该单元写回到内存中,或者一定周期后写入到内存中 ,或者其它地核需要读取该内存的时候)。

缓存(cache)大小是CPU的重要指标之一,其结构与大小对CPU速度的影响非常大简单地讲,缓存就是用来存储一些常用或即将用到的数据或指令,当需要这些数据或指令的时候直接从缓存中读取,这样比到内存甚至硬盘中读取要快得多,能够大幅度提升cpu的处理速度。

CPU与cache之间的数据交换是以”字”为单位,而cache与主存之间的数据交换是以”块”为单位,一个块由若干字组成,是定长的,以体现”保存下级存储器刚才被存取过的数据及其邻近小范围的数据”这一概念。

CPU进行存储器读操作时,根据主存地址可分成命中和未命中两种情况。对于前者,从Cache中可直接读到所需的数据;对于后者,需访问主存,并将访问单元所在的整个块从内存中全部调入Cache,接着要修改Cache标记。若Cache已满,需按一定的替换算法,替换掉一个旧块。

Cache/主存系统的读操作原理:

当CPU试图读取主存一个字时,发出此字内存地址同时到达cache和主存,此时cache控制逻辑依据地址的标记部分进行判断此字当前是否在cache中若是(命中),此字立即递交给CPU,若否(未命中),则要用主存读取周期把这个字从主存读出送到CPU,与此同时把含有这个字的整个数据块从主存读出送到cache中。由于程序的存储器访问具有局部性,当为满足一次访问需求而取来一个数据块时,下面的多次访问很可能是读取此块中的其它字。在这里插入图片描述

Cache与主存的地址映射

1.全相联映射(灵活性大的映象关系)
主存中的任一块映象到缓存中的任一块,将主存中一个块的地址(块号)与块的内容(字)一起存与cache的行中,其中块地址存与cache行的标记部分。cache的数据块大小称为行主存的数据块大小称为块cache与主存之间的数据交换以块为单位,CPU与cache之间的数据交换以字为单位

优点:灵活,命中率高
缺点:主存字块标记为全部块标记,访问cache时,主存的字块标记要和cache的全部标记位进行比较,所需的逻辑电路很多,成本较高,实际的cache还要采用各种措施来减少地址的比较次数。

例题:某内存64块,cache有4块,一个块为4个字节,按字节编址,采用全相联映射方式,写出cache和主存地址格式。

全相联映射方式中主存的主存块标记是全部块标记,根据主存和cache的对应关系,一个块为4个字节,能得出主存和cache的块内地址的位数都是2位,根据cache的块数是4,得出cache块的位数是2。因为主存的块数为64块,得出主存块标记的位数是6位。

在这里插入图片描述
直接映射
主存中的任意块映射到缓存中的唯一块,每个主存块只与一个缓存块相对应。

i为缓存块号,j为主存块号,C为缓存块数,映射关系式:i = j mod C
特点:不灵活,每个主存块只能与固定对应某个缓存块,即使还空着许多位置也不能使用。
在这里插入图片描述
例题:某内存64块,cache有4块,一个块为4个字节,按字节编址,采用直接映射方式,写出cache和主存地址格式。

我们一个个的分析,先分析cache
cache:4块=16字节=2的4次方字节,cache的总位数是4。

主存:64块=64*4字节=2的8次方字节,主存的总位数是8

由题意得:一个块4个字节,就是2的2次方,可以得出cache的块内地址为2位,又因为cache的总位数是4,所以得出cache块有(4-2)位

主存块标记的位数就相当于主存的总位数减去cache的总位数0.,就是4位,最后就求出cache和主存的地址格式

在这里插入图片描述

cache总结

在这里插入图片描述
cache中,一个cache块中存放的是一串存储单元

例题

在这里插入图片描述
1.全相联映射的情况
在这里插入图片描述
当cache没有装满时,就不存在替换的问题,所以采用三种替换算法的结果一样
直接映射:
在这里插入图片描述
组相联情况

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值