一、存储器的基本概念
1、存储器的分类
2、存储器的性能指标
3、存储器的层次化结构
Cache——主存 主要解决CPU和主存速度不匹配的问题。
主存——辅存 主要解决存储系统的容量问题。
二、存储器的基本结构和寻址方式
2.1 存储器的基本结构
存储元:通常把存放一个二进制位的物理器件称为存储元,它是存储器的基本构建。
存储单元:地址码相同的多个存储元构成一个存储单元。
存储体:若干个存储单元的集合构成存储体。
2.2 寻址方式
注意寻址方式:按字节、字、半字、双字。
一个格子是一个字节,一个字节是8个二进制位;一行四个格子,所以可以存放32位;因为16进制的一位相当于4个二进制位,所以写成16进制的话,就有8个16进制位,两个为一组并占一个字节。将这样的16进制数据放到一行中有两种方式。
如图中如12345678H存放的两种方式:
大端方式:以高位字节为字地址。即存储单元内先存储高位字节、后存储低位字节的顺序。
小端方式:以低位字节为字地址。即存储单元内先存储低位字节、后存储高位字节的顺序。
三、半导体随机存储器
3.1 半导体存储芯片的基本结构
- 存储矩阵:大量相同的存储单元阵列构成。(存储器芯片的逻辑结构)
- 译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号。
- 读写电路:包括读出放大器和写入电路,用来完成读/写操作。
- 读/写控制线:决定芯片进行读/写操作。
- 片选线:确定哪个存储芯片被选中。
- 地址线:单向输入,位数与存储字的个数有关。
- 数据线:双向的,位数与读出或写入的数据位数有关。
- 数据线数和地址线数共同反映存储芯片容量的大小。如地址线10根,数据线8根,则芯片容量=
X 8 = 8K位。
译码器是将输入的3位二进制码,映射为8种状态。
3.2 SRAM 存储器和DRAM 存储器
SRAM:触发器存储信息,速度快,成本高,集成度低,常用作高速缓存。
DRAM:电容存储信息,需刷新,速度慢,成本低,集成度高,常用作主存(同步动态随机存储器SDRAM)
3.3 DRAM存储器的刷新
DRAM刷新注意以下问题:
- 不需要CPU控制
- 以行位单位,仅需要行地址
- 存储器中所有芯片同时刷新
易失性存储器和刷新的区别:
易失性存储器是指断电后数据丢失,SRAM和DRAM都满足断电内容消失,但需要刷新的只要DRAM,而SRAM不需要刷新。
3.4 ROM 只读存储器
四、主存与CPU的连接
4.1 连接原理
主存储器通过数据总线、地址总线和控制总线与CPU连接。
- 数据总线的位数与工作频率的乘积正比于数据传输率。
- 地址总线的位数决定了可寻址的最大内存空间。
- 控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻。
4.2 主存容量的扩展
位扩展 :用多个存储器件对字长进行扩充,增加存储字长,使其数据位数与CPU的数据线相等。
如下图,用8片8K X 1位的 RAM芯片组成8K X 8 位的存储器。
注意:位扩展时,各芯片连接地址线的方式相同,但连接数据线的方式不同,在某一时刻选中所有的芯片,所以片选线要连接到所有芯片。
字扩展:增加存储器中字的数量,而位数不变。(存储器字的数量和地址线位数有关)
如下图,用4片 8K X 8 位 的RAM芯片组成 32K X 8的存储器。将A13和A14用做片选信号,当A13A14=00,译码器输出端0有效,选中最左边的0号芯片,当A13A14==01,译码器输出端1有效,选中1号芯片,以此类推。(同一时间只能一个芯片被选中)。
注意:仅采用字扩展时,各芯片连接地址线和数据线的方式相同,但某一时刻只需选中部分芯片,所以通过译码器设计连接到相应的芯片。
字位同时扩展:既增加存储字的数量,又增加存储字长。(在计算机系统概述中对存储器描述的那张图中有对存储字和存储字长的解释)。
五、双端口RAM和和多模块存储器
都是为了提高CPU访问存储器的速度,同属于并行技术,前者是空间并行,后者为时间并行。
5.1 双端口RAM
双端口RAM是指同一个存储器有左、右两个独立的端口,地址线、数据线、读写控制线,允许两个独立的控制器同时异步访问存储单元。当两个端口同时存取存储器的同一地址单元时,就会因数据冲突造成数据存储或读取错误。
5.2 多模块存储器
1. 单体多字存储器
2. 多体并行存储器
多体并行存储器由多体模块组成,每个模块都有相同发容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。
多体并行存储器分为高位交编址(顺序)和低位交叉编址(交叉方式)两种。
六 、高速缓冲存储器
6.1.Cache 的基本工作原理
1. 主存中块放到Cache中哪个位置?
- 空位随意放:全相联映射
- 对号入座:直接映射
- 按号分组,组内随意放:组相联映射
2. 对于1中,Cache满了如何处理?
3. 修改Cache中的内容后,如何保持主存中相应内容的一致性?
命中
写回法:当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。
全写法:当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)。
未命中
写分配法:把住存中的块调入Cache,在Cache中修改。搭配写回法使用。
非写分配法:只写入主存,不调入Cache。搭配全写法使用。
现代计算机的Cache通常设位3级Cache,按离CPU远近可命名L1 Cache,L2 Cache,L3 Cache。离CPU越远,访问速度越慢,容量越大。
如图是一个两级Cache系统,L1 Cache对L2 Cache使用全写法,L2 Cache对主存使用写回法,由于L2 的存在,其访问速度大于主存,就避免了频繁写时造成的写缓冲饱和,和溢出。