第五章:存储器层次结构(防遗忘)

目录

一、基础知识

二、写操作处理

三、主存与Cache的地址映射

直接映射

全相联映射

组相联映射

四、cache的缺失代价

五、问题

六、习题


一、基础知识

①局部性原理:

(1)时间局部性:某个数据项在被访问之后可能很快被再次访问的特性。

(2)空间局部性:某个数据项在被访问之后,与其地址相近的数据项可能很快被访问的特性。

②存储器层次结构:

一种由多存储器层次组成的结构,存储器的容量和访问时间随着离处理器距离增加而增加。

层次结构的局部性体现:

时间局部性:将最近被访问的数据项放在靠近处理器的地方

空间局部性:将一些包含连续字的块移至存储器层次结构的较高层次。

越高层的存储器每bit的成本越高。

1ab6e91917a04c1cba230710e55d1bf7.png

③主存(DRAM)、cache(SRAM)

cache的基础知识:

①cache含有一个有效位,标识该块是否含有一个有效数据。

也可以有引用位和脏位,比如采用写回机制需要脏位,LRU原则替换可能需要引用位。

二、写操作处理

写直达:写操作总是同时更新cache和下一存储器层次,以保持二者一致性。(耗时)

93e32b327ccd4ee8871cd36baf353abe.png

写缺失:要写的内容对应地址的数据不在cache上,产生缺失。(在写缓冲写回操作中都不得不)首先从主存中取出该地址原块中的字,数据块被取回并存入cache中后,再同时对cache和主存进行写入操作。

写缓冲:当一个数据在等待被写入主存时,先将它放入写缓冲中(注意这里不是从cache中取出数据放入写缓冲,而是直接放入)。当数据被写入cache和写缓冲中后,CPU可以继续执行,同时写缓冲写入内存。 如果写缓冲满了,处理器又要有写操作就不得不停下来直到写缓冲中有一个空位。

写回:当发生写操作时,新值仅仅被写入cache块中,只有当被修改过的块 要被替换时,才写到主存中 保存。

9f169c72eadd46aca7daa268ed84bd98.png

三、主存与Cache的地址映射

注:cache存储的是主存内的一个块,块包含一个块的数据,所以查找cache中是否包含所需的字,实际上只需要判断该字对应的块是否在cache中即可。

直接映射

2f74841cd6a041de96d42a1e2b1f5d8b.jpeg

主存地址划分

①主存地址划分:将主存地址分为三个部分:标记,块号和块内地址。块内地址与一个块的大小有关;块号的位数与cache中有多少个块有关;剩下块地址的位就用作标记。

②映射方式:直接映射,通过一个主存地址的块号 直接找到cache中的对应块号的数据项;然后通过对比标记,如果标记相同则命中,标记不同说明这两个块虽然块号相同但是标记不同也即是块地址不同,所以缺失。

③例如:cache中一共有16个块,每个块大小为8个字节,主存地址为32位。

bb39b18a1f0e420996e682f0a67dab95.jpeg

 由于cache中有16(2^4)个块,所以块号一共4位。

块号在直接映射中作为索引,直接对应到具体的数据项。

对于一个具体的块号,即Index确定,有2^26种不同的Tag。

④直接映射的缺点:直接映射将相同块号的块,映射到同一个位置,很容易被替换。若刚被访问的数据项的块号和现在被访问的数据项的块号相同而被替换,使得刚被访问的数据项再次被访问时产生缺失,存在时间局部性问题。

全相联映射

d67962e039f24caab26ae405999bcd0f.jpeg

 主存地址划分

①主存地址划分:全相联映射没有索引,将主存地址分为两部分:标记和块内地址;相当于块号就是整个标记;块内地址跟块的大小有关,剩下的就是标记。此时划分跟cache有多少个块无关,但是块越多cache的容量冲突越少。

②映射方式:全相联映射,直接将主存块任意存放到一个可能的cache块,全相联映射没有特定的映射方式,若cache块满了,可采用替换原则进行替换;一个块是否在cache中只需要看是否有标记相同的项即可。

③例如:cache一个块为8个字节,主存地址32位。

90f204efd95544f0a35318ecbc38baf6.png

优先替换有效位为0的项,再用替换原则。

 ④缺点:标记太长;比较电路难于实现

组相联映射

2feb842d878c4a4a82c71f3eb48eb933.jpeg

 主存地址划分

①主存地址划分:将主存地址分为三个部分:标记,组号和块内地址。块内地址与一个块的大小有关;组号的位数与cache中有多少个组有关;剩下块地址的位就用作标记。

组相联映射相当于 直接映射+全相联映射,通过索引找到组,再在组内全相联映射。

②映射方式:对于一个主存块,它会存入cache中的对应组内,然后再在组内用全相联映射的方式,存放块。

组相联映射相当于 直接映射+全相联映射,通过索引找到组,再在组内全相联映射。

③例如:cache一共有16组,一组有两个块,一个块8个字节,主存地址32位。

5fa9261ded8248e48066fa9017f216f1.jpeg

ea20611c819c415e8586cbeafc99fb02.jpeg

四、cache的缺失代价

 a4d3ef618ecb46feadf381b7f8890898.png7463883bac6945b0a2c84eda4a862e2d.png

 be44c17348e642eba2fc33dabb174e80.png

五、问题

虚拟存储和TLB

个人理解:为什么主存是磁盘的cache?

        虚拟存储器将主存作为外存的cache,实际上虚拟地址对应的是磁盘中的内容,而页表的存在将虚拟地址对应到了主存的物理地址。

        我们说,虚拟地址一般都比物理地址要大,为什么?假设,现在页表里的有效位全为0,假设主存中没有任何内容,那么现在给的虚拟地址划分的虚页号找到的页表项有效位为0,所以此时产生页缺失,需要从虚页号对应的磁盘位置找出对应的页,通过全相联的方式存入主存,并把主存的实页号存在页表对应的位置。(注意这里是全相联的方式,并且这里访问的是磁盘的数据。   很像访问主存 再通过全相联的方式放入cache) 

        既然访问的是磁盘中的数据,那么虚页号的个数会比实页号大,并且当主存满的时候,会发生替换。

六、习题

4e422bb9e35540b6a61c14423360ecb4.png

19.

2703e94366db4bbf88b72e1357003cb8.png

17.

20a2baa50deb4d6ebbdd8487934279ad.png

 4ca88a6edc22400184a42a6e188632c3.png

 80c92bba6e7040b4b6533a5f3d426a67.png

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yorelee.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值