7.存储器的分类
- 按存储介质分类:
- 磁表面:磁芯、磁带、磁盘
- 半导体存储器
- 光存储器:只读光盘/读写光盘
- 按存取方式分类:
- 随机、顺序存储(磁带)、半顺序(磁盘)
- 按读写功能分类:
- ROM(只读):PROM EPROM EEPROM
- RAM(随机存取):
- SRAM(cache)
- DRAM(内存):DDR GDDR LPDDR
- 按信息的可保存性:
- 易失性:RAM一旦掉电信息丢失
- 非易失性:ROM掉电信息不丢失、磁性材料不易失、Flash(BIOS芯片、U盘、固态硬盘)
- 按存储系统中的作用:
- 内存(主存(RAM、ROM)、缓存(cache))、辅存(外存)、控制存储器(存放微程序)
8.存储器的层次结构
1.SRAM(静态随机存取存储器)
- 优点:和DRAM相比存取速度更快,但存储容量和密度不如SRAM大
- 基本的静态存储元阵列
- SRAM采用锁存器(触发器)作为存储元,如果电源断电,SRAM存储的数据会丢失
- 三组信号线:
- 地址线 6条地址线表示有2^6=64个存储单元
- 双向数据线 4条数据线表示存储器的字长是4位,因此存储位元的总数位64*4=256
- 控制线 如R/~W读写控制线
- 地址译码器:64条地址选择先,称为行线,作用是打开存储位元的输入与非门
- SRAM逻辑结构
- 采用二级译码(x=8,y=7)
- SRAM芯片多采用双译码方式,以便组织更大的存储容量
- 这种方式减少了选择线数目和驱动器数目,单译码方式需要65536条选择线
- 第一级将地址分为x(行译码)、y(列译码)两部分单独译码
- 第二级在存储阵列中完成交叉译码
- 存储阵列问三维结构,即256行×128列×8位
- 通常把各个字的同一位集成在同一个芯片(32K×1bit)内,8块芯片就是32KBytes
- SRAM芯片多采用双译码方式,以便组织更大的存储容量
- 采用二级译码(x=8,y=7)
- 读写时序
- 三个控制信号:~CS片选信号、~OE读出信号、~WE写信号
- 其中OE和WE是互锁的
- 读/写周期(时间顺序):从地址有效到地址失效
- 地址线先有效
- CS和OE/WE有效,开始读出/写入
- 读出/写入有效,地址线上出现数据
- CS和OE恢复
- (写周期:为了写入可靠,数据线写入数据要有维持时间,CS的维持时间也比读周期长)
- 地址线恢复
- 为了控制方便,一般取读/写周期相同,称为读写周期
- 三个控制信号:~CS片选信号、~OE读出信号、~WE写信号
- 容量扩充
- 所需芯片数d=要求的存储容量/芯片的存储容量
- 位扩展:
- 芯片的字数(地址数)符合要求,需要扩展位数
- 地址线数不变,数据线增多
- 字扩展:
- 位数不变,扩充容量
- 地址增多,地址总线的高位译码产生片选信号,片内地址位数+片选信号位数=地址位数
- 字位同时扩展:
- 先位扩展,再字扩展
2.DRAM(动态随机存取存储器)
-
特点
-
简化了存储元的结构,因而存储密度很高,通常用作主存储器
-
存储位元是一个由MOS晶体管和电容器组成的记忆电路,通过刷新电路保持数据
-
-
逻辑电路
- 信号:RAS CAS R/W
- 相对于SRAM,增加了行地址锁存器和列地址锁存器
- 由于存储容量很大,地址线宽度增加,芯片地址线管脚数增加,采用的方法是分时传送地址码
- 行选通信号RAS 列选通信号CAS
- 刷新操作:
- 读操作会使电荷流失,未读写的存储元电荷会逐渐泄漏而减少,因而必须进行刷新
- DRAM芯片通常会在进行读操作后自动刷新,但读操作是不固定的,因此还要进行周期性刷新
- 刷新计数器
- 按行刷新,因此刷新计数器的长度等于行地址锁存器
- 通过2选1多路开关提供刷新地址或读/写地址
- 刷新策略
- 集中式刷新策略 再刷新过程中不允许读写操作,存在”死时间“
- 分散式刷新策略 当前主流的刷新周期位64ms,8192行即每隔7.8us刷新一次
-
读/写周期:
- 从一个RAS下降沿到下一个RAS下降沿为一个周期
- 为控制方便,读写周期相等
-
新型DRAM
- 快速页FPM DRAM(Fast Page Mode)
- 根据程序的局部性原理:
- 时间局部性:程序中的某一条指令一旦执行,不久后可能被再次访问
- 空间局部性:一旦访问了某个存储单元,不久之后附近的存储单元也会被访问
- 允许在选定的行(页)中对每一个列地址进行连续快速读写
- 根据程序的局部性原理:
- 高速缓冲CDRAM(Cached)
- 在DRAM芯片中集成一个小容量SRAM作为高速缓冲器
- 同步DRAM(SDRAM)
- 双倍速率DDR DRAM(Double Date Rate)
- 快速页FPM DRAM(Fast Page Mode)
DRAM和SRAM对比
DRAM | SRAM | |
---|---|---|
能耗 | 高 | 低 |
速度 | 慢 | 快 |
价格 | 低 | 高 |
定期刷新 | 需要 | 不需要 |
存储密度 | 低 | 高 |
晶体管/单元 | 1 | 6 |
工艺 | 简单 | 复杂 |
容量 | 大 | 小 |
3.ROM(只读存储器)
- 特点:
- 非易失性,但访问速度较RAM低
- “只读”的意思是在工作时只能读出,不能写入,因此必须在工作前将数据全部写入
- 工作可靠,保密性强
- 分类:
- 掩模ROM:存储内容固定,通常用户给厂家提供信息代码,厂家提供产品
- 可编程ROM(PROM):用户可写入内容
- 一次性编程ROM(OTPROM)
- 紫外线PROM(UV-PROM)可将电路板拔下擦除数据,能进行多次编程和验证
- 电可擦PROM(EPROM,EEPROM)容量小,单位成本高,但可擦次数多
- Flash存储器(闪存)存储密度高,擦除次数相对较少
- NOR闪存(线性闪存)随机存取,读出速度快,擦除速度较慢
- NAND闪存(非线性闪存)以页为单位,成本低,容量大
4.并行存储器
- CPU很快,内存较慢,从内存读写时,往往需要CPU等待
- 解决措施:
- 提高储存芯片的速率
- 多模块存储器并行技术:多端口存储器(时间并行)、多模块交叉存储器(空间并行)
- 分层存储结构:Cache和虚拟存储器
- 双端口存储器:
- 一个存储器具有两组相互独立的读写控制电路
- 读写控制:
- 有冲突:两个端口同时存取同一个存储单元
- 解决:设置BUSY标志
- 无冲突:地址不相同,每一个端口都有自己的片选控制(CE)金额输出驱动控制(OE)
- 有冲突:两个端口同时存取同一个存储单元
- 多模块交叉存储器:
- 采用交叉方式编址:
-
顺序方式:高位片选地址,低位片内地址
-
交叉方式:高位片内地址。低位片选地址 流水线方式存取
- 每个模块都有自己的读写控制电路、地址寄存器和数据寄存器
- CPU同时访问多个模块,由存储控制部件控制分时使用数据总线
- CPU可以在一个存储周期内连续访问多个模块,读写过程重叠进行
- 存取周期为:t = 存取周期 +(存储模块-1)* 总线传送周期
-
采用交叉方式可以对连续字的成块传送实现多模块流水式并行存取,提高存储器的带宽
-
- 采用交叉方式编址:
5.Cache
-
用来解决CPU和主存之间速度不匹配的问题
-
根据程序的空间局部性原理和时间局部性原理:
- 指令:按顺序存放,循环程序段或在程序段重复执行
- 数据:连续存放,数组元素重复、按顺序访问
- 在CPU和主存之间设置一个容量较小的快速容器,存放最频繁使用的程序块和数据,大多数情况下不必访问主存
-
构成:采用高速SRAM芯片构成,采用一级、两级、多级cache系统
-
数据传送:
- CPU和cache之间传送以字为单位
- 主存和cache之间传送以块为单位
-
命中率:
- 命中:被访问信息在cache中 命中率:所有CPU发出的存储器访问请求中由Cache满足CPU需要的部分所占的比例
- 命中率越接近1,访问效率越高 理想情况下,命中率接近1
- 有关的因素:程序本身的行为、cache的容量、组织方式、映射方式
- cache设计要解决的问题:
- 命中率尽可能高
- cache对CPU透明
- cache设计要解决的问题:
-
主存和cache的映射方式:
-
CPU访问存储器时,给出的内存地址会自动变成cache地址,称为cache地址变换
-
把主存块放入cache中,必须用某种方法把主存地址定位到cache中,称为地址映射
-
映射:把主存分为大小相等的主存块,cache对应有槽/行
-
全相联映射
- cache的每一个槽都可以存储主存中的任意一块
- cache地址:主存块号+块内地址
- 缺点:高速比较器电路难于设计和实现
-
直接映射
- 主存的每一块映射到一个固定的行
- cache行号 = 主存块号 mod Cache行数,即主存的第0,1,2,…m-1,m行存储到cache的第0行
- cache地址:块群地址+群里第几块+块内地址
- 优点:成本低,硬件简单,速度快;缺点:容易造成冲突
-
组相联映射
- 将主存分为不同的组别,cache也进行分组,相当于对直接映射中cache的每一块进行了扩展,主存中每组可以任一在cache每组中存储。是直接映射和全相联映射的结合
- cache组号=主存块号mod cache组数
- cache地址:组群号+块号+块内地址
-
失靶率和关联度:
- 失靶率:直接映射最高,全相联映射最低
- 关联度:全相联映射为cache行数,直接映射为1,N-路组相联映射为N
- 命中时间:直接映射最小,全相联映射最大
-
-
-
替换策略:
-
cache替换问题主要是选择和执行替换算法,以便在不命中时替换cache中的数据
-
全相联映射和N-路组相联映射需要替换策略,其过程为:
- 从主存中取出一个新块
- 选择一个有映射关系的cache行
- cache占满时,从cache中调出一个主存块
-
常用替换算法:
- 先进先出FIFO
- 最近最少LRU 有较高的命中率 命中置零,其余加一
- 最不常用LFU 并不能反映近期使用情况
- 随机替换Random 替换出的块可能是近期要使用的块,但这种缺点随着cache的增大而减少
-
-
数据一致性(读操作):
- cache的写操作策略,重点是在更新时保持主存与cache的一致性
- 写操作策略:
- 写回法:写命中(要写的单元已经在cache中)时,只修改cache,cache被取出时才写回主存
- 全写法:cache与内存一起写
- 写一次法:第一次命中cache时采用全写法,之后的写操作只写cache
6.虚拟存储器
-
借助辅助存储器扩大内存,是一个容量非常大的存储器逻辑模型,不是任何实际的的物理存储器
-
实地址:存储、运行程序的空间的地址
-
虚地址:程序的逻辑地址
-
三级存储体系:cache-内存-辅存
- 虚拟存储和cache的区别:
- 都是为了提高性能价格比而构造的分层存储体系
- 基于局部性原理:把最近常用的部分驻留在高速的存储器中;对用户是透明的;性能接近高速存储器,价格接近低速存储器
- 虚拟存储和cache的区别:
-
虚拟存储器访问过程:
- 将要执行的程序段调入主存,暂不执行的保留在辅存
- 执行某个放在辅存的程序段时,CPU执行某种调度算法调入主存
-
分页式、分段式、段页式(在主存中)
- 分页式:虚地址到实地址之间的变换由页表来实现,页长是固定的
- 物理地址:(实际页号)+页内偏移
- 页表内记录了(虚页号、实页号、装入位)
- 每个进程对应一个页表,页表中存在着逻辑页号和物理页号的对应关系,以及标志是否存入主存的有效位
- 快表:把页表中最活跃的部分存放在高速存储器中,称为转换后缓冲器(TLB),相当于存储系统中的cache
- 分段式:按照程序的自然分界划分段表,可以改变长度
- 物理地址:(段起址)+段内偏移
- 段表内记录了段号(段起址、有效位、段长)
- 段页式:分段存储,每段通过多个页表进行定位
- 逻辑地址:基号(段表基址)、段号(页表基址)、页号(程序页号)、页内地址,每一个段表和页表都需要设置一个有效位
- 分页式:虚地址到实地址之间的变换由页表来实现,页长是固定的