计算机组成原理二轮(第三章)

第三章

半导体随机存取存储器

  1. 存储器的层次
    在这里插入图片描述在这里插入图片描述

  2. 存储器的分类
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

可读可写的:磁盘、内存、Cache
只能读的:实体音乐专辑通常采用 CD-ROM,实体电影采用蓝光光碟,BIOS通常写在ROM中
断电后,存储信息消失的存储器——易失性存储器(主存、Cache)
断电后,存储信息依然保持的存储器——非易失性存储器(磁盘、光盘)
RAM芯片——易失性,断电后数据消失
ROM芯片——非易失性,断电后数据不会丢失
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

信息读出后,原存储信息被破坏——破坏性读出(如DRAM芯片,读出数据后要进行重写)
信息读出后,原存储信息不被破坏——非破坏性读出(如SRAM芯片、磁盘、光盘)
Static Random Access Memory,即静态RAM
Dynamic Random Access Memory,即动态RAM
SRAM芯片:使用双稳态触发器存储信息
DRAM芯片:使用栅极电容存储信息
在这里插入图片描述
SRAM集成度低,存储容量小,SRAM它所对应的行列地址的地址位数也比较少,所以可以同时把行列地址给送出去

DRAM中,电容里面的数据只能保持2ms,2ms后数据就丢失了,所以电容需要每隔2ms刷新一次
在这里插入图片描述

DRAM刷新
每刷新一行需要0.5us的时间
在这里插入图片描述刷新的意思就是说,在一个刷新周期内,要保证对每一行数据都刷新一次。
异步刷新就是将这个死区分散到各个部分。

主存储器与CPU的连接

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

低位交叉存储器

  1. 理解存取时间和存取周期
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述注意低位交叉编址的地址格式:低位表示存储体的体号,这就使得连续的多个地址存放在不同的存储体中,使得CPU可以连续的访问每一个存储体
在这里插入图片描述

  1. 低位交叉编址,就是说CPU访问了一个存储体之后,这个存储体需要经过一段恢复时间,才能允许CPU进行下一次的访问,恢复时间段内,CPU是可以去访问其他的存储体的,这也就确定了,如果一个存储器的存取周期为T,存取时间为r,那么T/r就表示当有T/r个存储体时,CPU可以一直连续不断的访问存储体
  2. 当存储体的个数为T/r个时,访问n个存储字,需要T+(n-1)r的时间
    因为前n-1个存储字访问都需要一个存取时间r,当访问最后一个存储字的时候,除了访问这个字以外,还要加上恢复时间,所以最后一个字需要T的时间
    在这里插入图片描述

在这里插入图片描述

Cache存储器

  1. 双端口RAM、多模块存储器提高存储器的工作速度
    优化后访存的速度与CPU差距依然很大

  2. 空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的。
    Eg:数组元素、顺序执行的指令代码

  3. 时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息
    Eg:循环结构的指令代码

  4. 基于局部性原理,不难想到,可以把CPU目前访问的地址“周围”的部分数据放到Cache中
    在这里插入图片描述

  5. 如何界定周围:将主存的存储空间分块,主存与Cache之间以“”为单位进行数据交换

  6. CPU与Cache之间的数据交换以为单位
    在这里插入图片描述
    注意:每次被访问的主存块,一定会被立即调入Cache
    在这里插入图片描述
    在这里插入图片描述

映射方式

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

什么是按字编址和按字节编址

按字节编址即每个存储单元大小为1个字节(8bit)
在这里插入图片描述

在这里插入图片描述
2.按字节寻址,指的是存储空间的最小编址单位是字节,按字编址,是指存储空间的最小编址单位是字,以上题为例,总的存储器容量是一定的,按字编址和按字节编址所需要的编码数量是不同的,按字编址由于编址单位比较大(1字=32bit=4B),从而编码较少,而按字节编址由于编码单位较小(1字节=1B=8bit),从而编码较多。

替换策略

在这里插入图片描述替换算法只会被应用到全相联组相联映射
注意:每次被访问的主存块,一定会被立即调入Cache

下面以全相联映射为例
在这里插入图片描述

在这里插入图片描述

采用LRU算法,对于Cache块,

  1. 注意计数器的逻辑,他记录的是这个cache块多久没有被访问了
  2. cache命中时,所命中这个cache块的计数器清零,同时只对那些计数器值小于它小的计数器加1,
  3. Cache块不命中且无空闲的时候,替换计数器值最大的Cache块
    在这里插入图片描述
    在这里插入图片描述

采用LFU算法
计数器用于记录这个Cache块被访问了多少次,这样的话,这个计数器可能需要很长的比特位来表示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Cache写策略(解决cache和主存数据一致性问题)

在这里插入图片描述

在这里插入图片描述

写回法:要在Cache中添加一个脏位,用于记录这个Cache块有没有被修改过。当要淘汰某个Cache块时,未被修改的块不必写回,写回是需要时间的。
在这里插入图片描述

全写法:

  1. 注意:Cache块被替换时无需写回,因为CPU直接对cache和主存的数据都进行了更新
  2. 当CPU对Cache写命中时,CPU必须把数据同时写入Cache和主存,而写入主存的时间是非常慢的,这时有个方法就是使用写缓冲
  3. 当CPU对Cache写命中时,CPU把数据同时写入Cache和些缓冲(写缓冲是STAM实现的先进先出的队列),这比直接往主存写入速度要快,CPU完成写操作后,就可以去干其他的操作,CPU在干其他事情的期间,写缓冲会在一个专门的电路控制下面将数据写入主存。
    注意:如果CPU进行持续的写操作,可能会造成写缓冲饱和,这时候,CPU只能阻塞等待
    在这里插入图片描述
    在这里插入图片描述

对于非写分配法,如果写未命中,那么cpu会将数据直接写入主存,而不会将这个主存块调入Cache,只有在读未命中,才会将主存块调入Cache
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 按字节编址:块的大小是4*32bit=16B=24B,由于按照字节编址,一个存储单元内含有一个1B,所以一共需要4个bit来保存字块内地址;
  2. 在这里插入图片描述

Cache中存放的是主存块中的副本
在这里插入图片描述

在这里插入图片描述

虚拟存储器

TLB中存放的是某一些页表项的数据
TLB完成从虚拟地址–》物理地址的变换,确定了物理地址之后,才会去访问Cache
Cache存放的是主存块的存储数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sparky*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值