3-存储系统
1.概述
1.存储器的存储结构
CPU->Cache->主存->辅存->外存
2.存储器的分类
(1)层次
(2)存储介质:半导体存储器–主存,cache;磁性材料—磁盘、磁带;光存储器—光盘
(3)存取方式:随机存取存储器(RAM)、顺序存取存储器(SAM)、直接存取存储器(DAM)、相联存储器(按内容访问的存储器CAM)
(4)信息的可更改性:读写存储器、只读存储器(ROM)
(5)信息的可保存性:异失性存储器(主存、cache)、非异失性存储器(磁盘、光盘)、破坏性读出(DRAM芯片)、非破坏性读出(SRAM)
3.存储器的性能指标
(1)存储容量=存储字数×存储字长=MAR×MDR
(2)单位成本:每位价格=总成本/总容量
(3)存储速度:数据传输率(主存带宽)=数据宽度(存储字长)/存储周期;存储周期=存取时间 恢复时间
1.1 主存储器的基本组成
基本元件:MOS管,电容
存储芯片的结构:译码驱动器、存储矩阵、读写电路、地址线、片选线、数据线、读写控制线
寻址:按字节寻址,也可按字寻址、按半字寻址、按双字寻址
1.2 SRAM&DRAM
DRAM:动态随机存储器—用于主存—使用栅极电容存储(一条数据线)
(1)破坏性读出,读出后应有重写操作,也称“再生”–读写速度慢
(2)成本低,集成度高,功耗低
SRAM::静态随机存储器—用于Cache–使用双稳态触发器存储(1:A高B低;0:A低B高,两条数据线)
(1)非破坏性读出,无需重写—读写速度快
(2)成本高,集成度低,功耗大
DRAM刷新—由存储器独立完成,不需要CPU控制
(1)2ms刷新一次
(2)每次刷新一行存储单元,使用行列地址减少选通线的数量
(3)如何刷新? 有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
(4)在什么时候刷新?分散刷新(每次读写完都刷新一行)、集中刷新(集中安排时间全部刷新,此时无法访问存储器,称为访存“死去”)、异步刷新(2ms内每行刷新一次,可在译码阶段刷新)
DRAM的地址线复用技术–n/2条地址线分两次传送,可使地址线更少,引脚更小。地址引脚减半
1.3 只读存储器ROM
非易失性芯片,断电后数据不会丢失
1.MROM:掩模式只读存储器。厂家按照客户需求定制,任何人不可重写
2.PROM:可编程只读存储器。用户用专门PROM写入器写入信息,写入一次就不可更改
3.EPROM:可擦除可编程只读存储器
(1)UVEPROM:用紫外线照射8-20min,擦除所有信息
(2)EEPROM:可用电擦除,擦除特点的字
4.Flash Memory:闪存存储器,可进行多次快速擦除重写。写速度比读速度更慢。每个存储园只需Mos管,位密度比RAM高
5.SSD:固态硬盘。控制单元 存储单元(Flash芯片),可进行多次快速擦除重写。速度快、功耗低、价格高
6.BIOS芯片:存储量自举装入程序,负责引导开机。逻辑上主存由RAM ROM且二者统一编制
1.4 主存与CPU的连接
CS或CE片选线信号:上有横线代表低电平有效
WE/OE读写控制线信号
1.位扩展。8片8k×1位的扩展成1片8k×8位的芯片
2.字扩展。
(1)线选法,多出的地址线控制片选信号。地址空间不连续
(2)译码器片选法。n条线对应2^n个片选信号。地址空间连续
3.字位同时扩展法:
1.5双端口RAM和多模块存储器
1.双端口RAM,优化多核CPU访问一根内存条的速度
(1)需要有两组完全独立的数据线、地址线、控制线、CPU、RAM中也要有更复杂电路
(2)两个端口对同一主存操作情况:
a两个端口对不同地址单元存取数据
b两个端口对同一地址单元读取数据
c两个端口对同一地址单元写入数据×
d两个端口同时对同一地址单元一个写入数据,一个读出数据×
2.多体并行存储器(m>=T/r)
(1)高位交叉编制:连续取n个存储字,耗时nT
(2)低位交叉编制:连续取n个存储字,耗时T (n-1)r
2.Cache
2.1Cache基本概念
将某些主存块复制到Cache中,缓和CPU和内存之间的速度矛盾
命中率(H):CPU欲访问的信息已在Cache中的比率。
缺失(未命中)率M=1-H
Cache-主存系统的平均访问时间t为
先 访 问 C a c h e 后 访 问 内 存 t = H t c ( 1 − H ) ( t c t m ) 同 时 访 问 C a c h e 和 内 存 t = H t c ( 1 − H ) t m 先访问Cache后访问内存 t=Ht_c (1-H)(t_c t_m)\\ 同时访问Cache和内存 t=Ht_c (1-H)t_m 先访问Cache后访问内存t=Htc (1−H)(tc tm)同时访问Cache和内存t=Htc (1−H)tm
如何界定目标访问地址的“周围”?将主存存储空间分块,主存与Cache以块为单位进行数据交换主存地址可拆分为(主存块号,块内陆址)
2.2 Cache和主存的映射方式
有效位:当前标记位是否有效
标记位:记录主存块的块号
1.全相联映射:存放在Cache任意位置
优点:存储空间利用充分,命中率高
缺点:查找标记慢,可能需要对比所有行的标记
2.直接映射:只能存放到一个特定位置,Cache=主存块号�che总块数
若Cache总块数为2^n,则主存块号末尾n位放映了,它在cache中的位置,因此标记位可以记录主存块号-n末尾
优点:只需对比一个标记,速度最快
缺点:其他地方有空闲Cache块,但只能放到固定位置,命中率低
3.组相联映射:把Cache块分为若干分组,每个主存块可放到特定分组中的任意一个位置,Cache所属分组=主存块号�che分组数。2路组相联映射–2块为一组
优点:另外两种方式,综合效果最好
2.3 Cache替换算法
1.随机算法(RAND)
若Cache已满,则随机选取一块替代
2.先进先出算法(FIFO)–实现简单,易产生抖动现象
若Cache已满,则替换最先被调入cache的块
3.近期最少使用算法(LRU)—实际运行效果优秀,Cache命中率高。但频繁访问的主存块数量>Cache行的数量,也会发生抖动现象
为每一个Cache块设置一个计数器,用于记录Cache已经多久没有被访问过了。当Cache满后替换计数器最大的。块的总数为2^n,则计数器只需要n位
4.最不经常使用算法(LFU)
为每一个Cache块设置一个计数器,用于记录Cache被访问过几次。当Cache满后替换计数器最小的。若有多个则按“行号递增”或“FIFO先进先出”替换
2.4 Cache写策略
1.写命中
写回法(write-back):当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存。只有当此块被换出时才写回主存,一般用脏位(脏位:表示Cache数据是否被更改)
全写法(write-through):当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般用写缓冲(SRAM,实现FIFO的队列)
2.写不命中
写分配法:当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常配合<写回法>使用
非写分配法:当CPU对Cache写不命中时,只写入主存,不调入Cache。搭配<全写法>使用
现代计算机采用多级Cache,靠近CPU速度越快,容量越小。越远离CPU的速度越慢,容量越大。各级Cache之间采用“全写法 非写分配法”,Cache和主存之间采用“写回法 写分配法”
3.虚拟存储器
3.1页式存储器
页表:存放逻辑页号与主存块号映射关系的数据结构
快表存储的是页表项的副本;Cache中存储的是主存块的副本
详见计算机操作系统–内存管理