内部存储器
1、存储器
存储器由一定数量的单元构成,每个单元可以被唯一标识,每个单元都有存储一个数值的能力。
- 地址:单元的唯一标识符
- 地址空间:可唯一标识的单元总数(你用这几位最多可以表示出几个地址)
- 寻址能力:存储在每个单元中信息的位数,即内存中能被单独识别并独立存放一个数据的最小空间(一个地址指向的空间中包含了多少位)
2、存储器层次结构
1、主板内存储器
- 寄存器
- Cache(高速缓存)
- 主存
2、主板外存储器 - 磁盘
- CD-ROM
- CD-RW
- DVD-RW
- DVD-RAM
3、离线存储器 - 磁带
3、寄存器基本原理
一个时钟周期分为两个部分:时钟上升沿和时钟下降沿
只有在时钟前半部分可以改变触发器中存储着的数据
图中两条红色虚线之间都是时钟上升沿。第一条红线时,Din是高电平,于是Qout在经历一段时间的延迟后也变成了高电平,与Din保持一致。之后紧接着的时钟上升沿,Din仍然为高电平,因此Qout没有改变。直到第二根红线的位置,Din变成了低电平,于是Qout在经历一段时间的延迟后就变回了低电平。
半导体存储器
半导体芯片做主存储器是主流选择
位元:半导体存储器的基本元件,存储1位数据
- 呈现表示0和1的稳态或半稳态
- 能至少被写入一次,能被读取
4、随机存取存储器(RAM)
随机访问:访问数据时间与数据位置无关
特性
- 可以简单快速进行读写操作
- 易失的
类型
- 静态RAM
- 动态RAM
SRAM
信息的保持:字选择线低电平,阻断T5和T6
信息的读取:字选择线打开,如果存1,则左边线高电平,T2阻断,右端会产生负脉冲;如果存0则相反
信息的写入:字选择线打开,如果想要存1,那么右端低电平,使左端电位上升,T2阻断
可以想象为两个游泳池,每个游泳池底下有排水管,上面有一个水位传感器,可以控制另一个游泳池的排水管的打开与关闭(如果感应到了水位就会打开对面泳池的排水管使得对面的水被排走)。而两个泳池同时也各自有入水管。
信息的保持:入水管关闭,泳池内部保持原有状态
信息的读取:入水管打开,如果哪边的水位高,那么就会导致另一边泳池的排水管被打开,从而泳池一直漏水(在这种情况下漏水的那边没法除法上面的水传感器,也就没法让水位高的那边漏水,就可以维持这种状态),因而入水管流入的水一直在被漏走,我们就可以根据哪边的加进来的水在被漏走判断是1还是0
信息的写入:入水管打开,如果想要写入1,那么可以主动把右边的水抽干,使得右边的传感器失效,左边的排水管关闭,水不会被排走,一直累计水直到碰到水传感器,打开右边的排水管,使得右边本不富裕的水更是雪上加霜,也就改变了水池的状态。
DRAM
通过电容来存储数据,读数据时直接读取电容中的电平,写数据时给电容充电或不充。
SRAM和DRAM的对比
可以把SRAM想象为C++,DRAM想象为Java,C++集成度低(偏底层),功耗高(写起来很痛苦),但是速度快,不用刷新(没有自动释放内存的操作),价格低;而Java集成度高(很多功能都被封装起来了,不那么底层),功耗低(写起来比较轻松),但是速度慢(比较一下Java和基岩版的我的世界就知道,Java垃圾回收机制等大大降低了程序速度),需要刷新(得不停检测垃圾),价格高
5、只读存储器(ROM)
可以长期保存信息的存储器,断电后信息仍可保存,工作时只可读取不可写入
非易失的,用户无法写入数据
可编程ROM(PROM)
只能被写入一次,写过程用电信号执行,需要特殊设备完成写过程
6、主要进行读操作的存储器
写操作和读操作相比较为困难
光可擦除/可编程只读存储器EPROM
电写入(1->0),光擦除(0->1)
电可擦除/可编程只读存储器EEPROM
电写入(1->0),电擦除(0->1)
快闪存储器
电可擦除,可以在块级擦除,不能在字节级擦除,需要先擦除再写入
分类:NOR Flash(数据线和地址线分开,可以读任意字节),NAND Flash(数据线和地址线共有,只能按页读取)
各类ROM对比
6、存储阵列
如何寻址?
第一步先获得总线控制权,然后发送地址,从地址中读出行地址和列地址,然后将其分别发出,分别从行译码器和列译码器中选出行和列,(先处理行,处理完毕后再处理列,有先后顺序)
刷新方式
- 集中式刷新:停止读写,逐行刷新,此时无法操作内存
- 分散式刷新:读写完成时刷新,一次读写完成刷新一行,增加每个存储周期时间
- 异步刷新:固定间隔刷新,DRAM在译码阶段刷新,有效利用时间
7、高级的DRAM架构
传统DRAM是异步的,处理器必须等待存取延迟
高级DARM架构是同步的
同步DRAM,双速率SDRAM
- SDRAM:先行选,然后列选,然后每个时钟周期发送一次数据。
- DDR SDRAM:发送数据时,每个时钟周期发送两次数据。因此,频率也会增加。
8、模块组织
三种扩展:
- 位扩展:地址线不变,数据线增加(相当于每个地址能够表示的数据量增加了,芯片看上去变的更“厚”)(使用8块4K*1的芯片组成4K*8的芯片)
- 字扩展:地址线增加,数据线不变(增加了地址的总量,而每个地址能够表示的位数不变,芯片看上去变的更“宽”)(使用4个16K*8的芯片构成64K*8的芯片)
- 字、位同时扩展:地址线增加,数据线增加(使用8个16K*4bit的芯片组成64K*8bit的存储器)