有关存储器

---- 用于学习记录 —
部分参考:https://blog.csdn.net/williamgavin

一、存储器

1.1 存储器概述

1.1.1 存储器分类

在这里插入图片描述

1.1.2 存储器结构

在这里插入图片描述
在这里插入图片描述
主存 - 辅存: 这个层次主要是为了解决容量问题, 信息在这两个层次之间传输是利用软硬件结合的方式, 因为这里对 传输速度的要求不是很大。
主存 - CPU: 这个层次主要是为了解决主存 - CPU之间速度相差过大的问题。信息在这个层次传输是利用纯硬件方式,通过在 主存 - CPU 之间加一个Cache(缓存)来解决这个问题, Cache 速度比CPU慢比主存快很多, 但是Cache功耗 大,内存较小。Cache里面的内容是主存内容的副本, 如果CPU的绝大多数指令能在Cache中找到, 那么计算机运行速度无 疑会快很多。缓存 - 主存之间的地址就是主存的地址, 实地址,物理地址; 主存是按内容查找的。

1.2 主存

1.2.1 主存的基本组成

在这里插入图片描述
地址总线上面的地址保存在MAR里面, 然后经过译码器、驱动器之后在存储体里面找到对应的存储单元地址。
MDR里面存储的是从数据总线过来或者从存储体里面取出的数据。 具体是读还是写是由读写电路控制的。

扩展小知识:MAR是地址寄存器,用来存放存储单元的地址;MDR是数据寄存器,用来存放存储单元中的二进制代码。

1.2.2 主存中存储单元地址分配

分配方式有两种,分为大端模式和小端模式。
大端模式:
字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式:(高低相同)
低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

1.2.3 SRAM & DRAM

(1)静态RAM: 用触发器工作原理存储信息,只要有供电,它保存的数据就不会丢失,且为高速存储器,但电源掉电时,存储信息会丢失具有易失性。如CPU中的高速缓存(cache)。
(2)动态RAM: 靠电容存储电荷的原理存储信息,具有不易失性,有供电,还要根据它要求的刷新时间参数,才能保持存储的数据不丢失,如电脑中的内存条
(3)两者区别: 动态RAM会周期性的刷新,静态RAM不进行刷新。

1.3 Flash

FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势)。近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
NADN FLASH
NOR FLASH
EMMC

1.4 Cache(缓存)

1.4.1 为什么要用cache?

存储器的访问速度跟不上CPU的发展,但是CPU的执行指令和数据均来自内存,计算结果也需要存储到内存中去,当CPU得不到需要的指令和数据时,只能等待,此时就提出Cache来解决这个问题。

1.4.2 Cache的工作原理

(1)主存与Cache的编址
在这里插入图片描述
将主存和Cache的存储空间进行分块, 主存一共M块, Cache一共C块, 显然 M>>C。 主存与Cache的地址都为块号+块内地址。由于Cache与主存数据交换的最小单位是块, 所以块内地址是不变的。注意到Cache旁边有一个“标记”, 这个“标记”是干嘛的呢?“标记”里面是用来保存主存的块号的, CPU如果从主存里面取数据发送的是主存的地址, 那怎么判断Cache里面有没有CPU需要的东西呢? 就是通过“标记”来判断的, 如果CPU取主存里面某块地址的数据, 而Cache里面恰好有这块的内容并且这个Cache块是有效的, 那么就可以直接从Cache里面访问这些信息, 这样可以提高速度。 注意Cache - 主存这个层次里面是按块来进行存储的,按块来进行访问的, 块的大小相同。

(2)命中与未命中
前面已经说到过主存里面的块是远远大于Cache里面的块的, 如果Cache恰好存在CPU需要的指令或者数据, 那么称为命中。反之则为未命中。 如果命中了, Cache就和主存建立了一种对应关系, 这种对应关系就可以利用“标记”来进行标识, 用“标记”记录与某Cache块建立对应关系的主存块号。由此可见, Cache的命中率非常重要, 因为如果Cache命中了, 那么CPU与主存之间访问的速度就会大大加快。

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值