存储系统
概论
-
局部性原理:在某一段时间内频繁访问某一局部的存储器地址空间,而对此范围外的地址空间则很少访问
-
时间局部性:最近被访问的信息可能还要被访问
-
空间局部性:最近被访问信息的邻近地址信息可能也要被访问
-
-
寄存器,cache,内存,外存
-
存储位元:二进制代码位,存储器中最小的存储单位
-
内存包括cache和主存,能被CPU直接访问的存储器
-
存储器分类:
-
存储介质:半导体器件,磁性材料,光存储器
-
存取方式:随机存储器(RAM),顺序存取存储器(磁带),半顺序(直接)存取存储器(磁盘)
-
读写功能:只读存储器(ROM),读写存储器(RAM, 可读可写)
-
信息易失性:易失性存储器(RAM),非易失性存储器(ROM)
-
与CPU耦合度:内部存储器,外部存储器
-
-
RAM和ROM
-
静态RAM(SRAM),动态RAM(DRAM)
-
只读存储器ROM:掩膜ROM,一次性可编程ROM(PROM),可擦除ROM(EPROM)
-
紫外线擦除EPROM(UV-EPROM)、电擦除EPROM(EEPROM),闪速只读存储器(FLASH)
-
-
-
存储器的编址和端模式
-
存放一个字的存储单元,字存储单元,字地址
-
存放一个字节的存储单元,字节存储单元,字节地址
-
编址方式:按字编址,按字节编址
-
机器字可以包含数字节,一个16位二进制的字存储单元包含两个字节,占两个字节地址
-
-
技术指标
-
存储容量KB, MB, GB, TB
-
存储字数(存储单元数)* 存储字长(每单元的比特数), e.g 1Mbit = 1M * 1bit
-
-
存取周期 $$t_{RC} = t_{WC}$$
-
锁存器
-
AND-OR LATCH锁存器
-
门锁
-
数据输入
-
允许写入,为0时锁住,不允许写入,数据输入线失效
-
-
列地址,行地址唯一启动一个锁存器
-
故所有锁存器共用一条数据线
-
256 = 16 * 16,行地址线和列地址线各16根
-
2*4 = 16,多路复用器,译码
-
-
Random access memory RAM
-
SRAM的锁存器
-
NOR门
-
RS除法器(Rd,Sd)
-
静态随机存取存储器SRAM
SRAM存取速度快,但存储密度和容量不如DRAM大
-
基本的静态存储元阵列
-
64 * 4 = 256个存储位元
-
三组信号线:地址线,控制线,数据线
-
双译码,组织更大的存储容量(存储矩阵)
-
行译码,列译码
-
控制信号:
-
$$\overline{CS}$$:片选信号,低电平有效
-
$$\overline{OE}$$:输出(读出)使能信号,低电平有效
-
$$\overline{WE}$$:写命令, 读操作(1), 写操作(0)
-
三态门中给0则断开,考虑取非则是给1为断开
-
注意读操作时输入缓冲区关闭,输出缓冲器打开,写操作时相反
-
-
-
-
SRAM读/写时序
-
读周期:读出时间$$t_{AQ}$$,读周期时间$$t_{RC}$$
-
写周期:写进时间$$t_{WD}$$, 维持时间$$t_{hD}$$, 写周期时间$$t_{WC}$$
-
存取周期 $$t_{RC}=t_{WC}$$,地址总线才可以改变
-
存取周期:计算机组成原理
-
-
-
存储器容量的扩充
-
所需芯片数d = 设计要求的存储器容量/已知芯片存储容量
-
位扩展
-
地址线、控制线公用,数据线分高低位
-
-
字扩展
-
数据线,读写控制线公用,地址线分开,高位用译码器产生片选信号(代替$$\overline{CS}$$)
-
-
字位扩展
-
动态随机存取存储器DRAM
-
MOS晶体管(金属氧化物半导体场效应晶体管)和电容器组成的单管DRAM记忆电路
-
输入输出缓冲器(三态门)的打开/关闭靠读写控制信号控制
-
刷新缓冲器由单独的刷新线控制
-
存储元由mos管和电容器组成
-
读出过程破坏电容上存储的信息,要重新写入信息,即刷新
-
电容器充满电荷代表存储1,没有电荷为0
-
-
-
存储元
-
DRAM芯片的逻辑结构
-
分时传送行地址,列地址 10位地址码 -> 20位地址线的作用
-
$$\overline{RAS}$$ :行选通信号,先送行 (低电平有效)
-
$$\overline{CAS}$$:列选通信号 (低电平有效)
-
行地址锁存器和列地址锁存器可以分别暂存行地址和列地址
-
-
位线预充电,然后给行地址,整行值存在读出放大器,然后列地址选出需要的列值
-
读写时序
-
先给地址(行地址、列地址)
-
后给控制
-
最后出数据
-
-
DRAM的刷新操作
-
集中式刷新策略
-
分散式刷新策略
-
-
突发传输模式
-
突发Burst
-
突发访问时先激活一行,然后按照一定顺序依次发出列选择信号,访问相应的目标存储单元
-
同步DRAM(SDRAM)
-
逻辑结构
-
新增时钟控制CLK,时钟使能CKE,命令译码器,模式寄存器,控制信号发生器
-
-
特征
-
所有输出信号在系统时钟CLK的上升沿被输出
-
多存储体独立并行操作
-
命令控制,由一组信号的电平编码组合为命令
-
激活:选中是使用哪个存储体
-
-
-
与异步DRAM差异
-
读延迟$$\overline{CAS}$$可编程
-
-
控制方式
-
以时钟信号为依据,所有输出信号在CLK的上升沿输出
-
激活:选择某个存储体
-
预充:准备下一轮操作
-
$$\overline{CAS}$$延迟CL:从列地址被锁存到数据有效输出的时间间隔,可编程
-
SDRAM的操作时序是确定的,CPU需等待事先确定好的一定矢量时钟周期,在此期间可以执行其他任务,不必单独等待,提高系统效率
-
-
SDRAM命令
-
突发长度BL
-
双倍数据率SDRAM(DDR SDRAM)
-
在时钟上升沿和下降沿都能传输数据
-
2n预取结构prefetch
-
DRAM读/写校验
-
奇偶校验
-
纠错码:汉明码
-
F部分为进行奇校验或偶校验的异或运算电路
-
Cached RAM(CDRAM)
附带高速缓冲存储器的动态存储器,集成了一个小容量SRAM作为高速缓冲器
-
SRAM构成cache,保存最近访问的一行数据
-
增加“最后读出行地址锁存器”和“行地址比较器”
-
每次来行地址,做一次比较(首次除外),若命中直接转cache,否则要访问DRAM阵列,并更新最后读出行地址锁存器和cache内容
-
-
优点
-
突发操作速度高
-
SRAM读出期间可同时对DRAM阵列进行刷新
-
允许写操作完成时同时启动一行的读操作,因为数据输出路径和数据输入路径是分开的
-
-
行地址和列地址还是分时传送
只读存储器ROM
-
大部分可以按地址访问,工作时只读出,不写入,有非易失性
-
闪存Flash
-
NOR闪存(线性闪存),可以随机读取,接口方式与SRAM相似,常用于引导加载程序等不经常改变的程序代码
-
NAND闪存(非线性闪存),不能随机读出,有高比特错误率,价格低,如优盘,存储卡,固态盘等
-
-
一般无法取代RAM,因为编程速度远慢于读取或RAM的写入
并行存储器
是为了提高CPU和主存之间的数据交换率的存储器的优化方式
-
芯片技术:提高单个芯片的访问速度
-
结构技术:改进存储器与CPU之间的连接方式
-
系统结构技术:采用分层存储结构解决访问速度问题
双端口存储器
-
空间并行技术优化
-
同一个存储器有两组相互独立的读写控制电路
-
逻辑框图
-
左L、右R两端口
-
高位UB,低位LB控制信号
-
$$\overline{BUSY}$$信号,配合仲裁逻辑解决有冲突的读写控制
-
-
无冲突的读写控制:两个端口地址不相同时,在两个端口上进行读写操作,一定不会发生冲突(访问的存储单元不同)
-
高位,低位字节数据分开控制
-
片选信号,输出使能信号均为低电平有效
-
“X”代表任意,"Z"代表高阻态
-
-
有冲突的读写控制:当两个端口同时存取同一存储单元,且至少有一个端口为写操作时,便发生读写冲突
-
$$\overline{BUSY}$$高电平有效,优先端口$$\overline{BUSY}$$高电平,被延迟的端口$$\overline{BUSY}$$为低电平,低电平的端口不能进行写操作
-
仲裁逻辑:$$\overline{CE}$$判断和地址有效判断
-
有冲突时谁快谁取胜
-
-
“X”是因为片选信号为高电平,地址信号无效
-
多模块交叉存储器
-
时间并行优化
-
线性编址,地址安排方式:
-
顺序方式
-
高位字段选模块
-
各模块串行工作,存储器带宽受到限制
-
-
交叉方式
-
低位字段选模块,可以实现多模块流水式并行存取
-
-
-
多模块交叉存储器基本结构
-
主存被分成4个相互独立、容量相同的模块,每个模块都有子集的读写控制电路、地址寄存器和数据寄存器
-
CPU同时访问四个模块,分时使用数据总线进行信息传递
-
-
流水线方式存取和交叉存取度
-
只有一套总线路,不能同时送地址/发控制/IO数据
-
举例
-
存储体,存储模块内字地址,选择模块
-
每个模块独立的读写控制电路,地址寄存器,数据寄存器
-
-
零等待存取
-
一个模块刷新时另一个模块可存取
-
Cache存储器
-
两级cache
-
cache基本原理
-
包含SRAM和控制逻辑
-
CPU和cache之间的数据交换以字为单位,cache与主存之间的数据交换以块为单位
-
一个块由若干个字组成(cache中的一行)
-
cache命中、cache缺失
-
-
cache:小容量存储器
-
相联存储表CAM:存放cache内容对应的地址,CAM是一个按内容寻址的存储器
-
-
cache命中率h、cache/主存系统平均访问时间$$t_a$$、访问效率e
-
cache结构设计
-
地址映射:主存的地址定位到cache地址
-
替换算法,写一致性
-
主存与cache的地址映射
-
主存块,cache行,都是一个数据块且块大小相同
-
标记:块地址
-
全相联映射:主存的一个块可以映射到cache的任意一行
-
优点:冲突概率小
-
缺点:高速比较器电路难于设计和实现,只适合于小容量cache
-
-
标记位数即为块数的指数幂次
-
直接映射方式:一个主存块只能拷贝到cache的一个特定行位置上去
-
内存地址包含映射到cache哪一行的信息,cache标记位数可以减少
-
对8取余,相当于留下低三位内容
-
-
优点:硬件简单,成本低,地址变换速度快
-
缺点:两个块映射到同一个cache行时,发生冲突要替换,可能出现频繁替换
-
适合于大容量cache,更多的行数可以减少冲突的机会
-
-
标记位数省去去了自动对应的cache行数幂次r
-
组相联映射:一个主存块只能分配到固定一个cache组里,但组内的行任选
-
结合了全相联映射和直接映射的特性
-
-
标记位数:省去了cache区的幂次d
-
每组行数v,又称为v路组相联cache
-
-
替换策略
-
最不经常使用LFU算法:将一段时间内(计数周期限定在两次替换之间的间隔时间内)访问次数最少的那行数据换出
-
近期最少使用LRU算法:将近期内长久未访问过的行换出,每被命中一次,相应计数器清零,每次将数值最大的换出,这样保护了刚复制到cache中的新数据行
-
二路组相联的cache,用一个二进制位代替计数器(组内两行二选一)
-
-
随机替换
-
-
cache的写操作策略
-
写回法(write back, copy back)
-
命中时,只修改cache的内容,直到此行被换出时才写回主存。配置修改位,决定写回还是简单弃去
-
未命中,复制到cache行后修改,但主存的写修改操作统一留到换出时再进行
-
-
全写法(write through)
-
写命中时,cache和主存同时发生写修改
-
未命中时,去主存修改
-
WTWA:修改过的主存块取到cache
-
WTNWA:不取主存块到cache
-
-
-
写一次法(write once)
-
与写回法类似,只是第一次写命中时要同时写入内存
-
-
-
Pentium4的cache组织