CO-3-存储系统
2021-07-29 20:19:29 0 举报
AI智能生成
计算机组成原理 第三章 存储系统 知识点梳理
作者其他创作
大纲/内容
SRAM和DRAM
高频考点
高频考点
存储元件不同导致性能差异
适合用于主存:DRAM
栅极电容
读取是破坏性的,需要重写
成本低,集成度高,功耗低,慢
即使不断电,电容电荷也只能维持2ms
适合用于Cache:SRAM
双稳态触发器
A高B低:1
A低B高:0
A低B高:0
需要两根线读写数据,读取不破坏原数据
成本高,功耗高,集成度低,快
只要不断电,触发器状态不改变
DRAM的刷新
即使不断电,电容电荷也只能维持2ms
默认一般2ms刷新一次,一次刷新一行(行列地址的行)
硬件自动完成,无需CPU控制
专用刷新电路,读一行重新写入,
占用一个读写周期
要在2ms内保证每行至少刷新一次
占用一个读写周期
要在2ms内保证每行至少刷新一次
集中刷新(有死区)
每2ms逐行刷新一次
每2ms逐行刷新一次
分散刷新(无死区,但存取周期变长)
每存取一次刷新一次,
每次刷新新的一行
每存取一次刷新一次,
每次刷新新的一行
异步刷新(有死区,但是缩短了)
利用专用电路每隔一段时间t刷新一行
t=2ms/行数
利用专用电路每隔一段时间t刷新一行
t=2ms/行数
既避免了CPU连续等待时间过长
又充分利用2ms刷新周期减少了刷新次数
又充分利用2ms刷新周期减少了刷新次数
DRAM的地址线复用技术
SRAM行列地址同时发送,需要占用n位地址线
DRAM行列地址分两次分别发送,占用n/2位地址线
并引入新的行选通/列选通控制线RAS、CAS
并引入新的行选通/列选通控制线RAS、CAS
引脚减半
RAS/CAS线也可整合为1根
片选线借用行选通/列选通实现
主存↔CPU连接
任何时候地址总线引出的线,都是低位接入芯片地址线
高位作为片选线和控制线
单块芯片↔CPU
存储器芯片的信号线一般有:
:高电平有效
:低电平有效
:低电平有效
多块存储芯片↔CPU
数据总线宽度>存储芯片字长→位扩展法
所谓位扩展,就是扩展了每个存储芯片的位数,字数不变(8K*4b→8K*8b)
不同芯片的读出数据可以同时经由DB传输
同时读取不同芯片的同一个地址的数据
数据总线宽度=存储芯片字长→字扩展法
可以理解为在“有多少字”这一维度上扩展了芯片的容量。实际上增加了主存的字数(8K*8b→16K*8b)
线选法
额外的地址线1对1地连接对应的存储芯片
地址空间不连续
片选法
额外的地址线产生的种组合与等量的芯片一一对应
需要一个n-译码器
地址空间连续。但电路复杂(译码器)
字位扩展法
译码器补充
通常译码器(如)还有类似的使能引脚,可以提供:全1,全0,是否接受输入的功能
芯片是考点
CPU的AB产生地址信号后,可能不稳定,CPU可以等AB稳定后再向
译码器发出(主存访问请求)信号以保证译码器选片是稳定的
译码器发出(主存访问请求)信号以保证译码器选片是稳定的
Cache与主存的映射方式(3)
全相联映射
任何一个主存块,可以存在任何一个Cache块中
CPU访问时...
用地址的块号部分,逐个检查Cache中的标记
若存在,且有效位=1,则命中
按地址的块内地址访问Cache块内数据
存储空间利用充分,命中率高
查找标记最慢,最慢要对比所有块的标记
直接映射
任意主存块只能存放在某个特定的Cache块
目标Cache块号=主存块数%Cache总块数
当Cache块数为时,主存块号低n位直接对应其在Cache中的位置
借此可以优化标记
(去掉标记低n位(反正一样))
(去掉标记低n位(反正一样))
主存块号也可分为标记、Cache块号两部分
速度最快
空间利用率低
即使Cache有空位,数据也不一定能调入Cache,命中率低
CPU访问时...
用主存地址块号的低n位,查找对应的Cache块
若有,且标记位与原块号(标记位部分)相同,且有效位=1,则命中
按地址的块内地址访问Cache块内数据
组相联映射
按Cache每组块数,可称为
n路组相联映射
按Cache每组块数,可称为
n路组相联映射
任意一部分主存快只能存放在某组特定的Cache块
组号=主存块号%组数,目标Cache块号=目标Cache组空位
折中
当每组块数为时,主存块号低n位对应其在Cache中的组号
借此可以优化标记
(去掉标记低n位(反正一样))
(去掉标记低n位(反正一样))
主存块号也可分为标记、Cache组号两部分
CPU访问时...
用主存地址块号的组号部分,寻找目标Cache组
若Cache组内有标记位与原块号(标记位部分)相同,且其有效位=1,则命中
按地址的块内地址访问Cache块内数据
标记
用于标记当前Cache块内数据来自于哪个主存块
初始为0,但并非意味着保存了0号主存的数据
有效位
用于表示标记是否有效,1有效
Cache替换算法(4)
场景
全相联
只有Cache全满才需要替换
要在全局选择替换对象
直接映射
对应位置非空则直接替换
组相连
组满需要替换
在分组内选择替换对象
算法
随机RAND
若已满,随机选择一个替换
不考虑局部性原理,导致H降低,效果不稳定
先进先出FIFO
不考虑局部性原理,即使最先调入Cache访问也可能最频繁
实现简单
抖动
刚被换出的块很快又被换入,频繁换出换入导致抖动
近期最少使用LRU
设置计数器记录块“已经未被访问”的时间,替换时替换计数器最大的
考虑了局部性原理,命中率高
若频繁访问的主存块数量大于Cache块数则还是存在抖动
机器实现
为Cache块添加一个计数器位
访问时...
命中时,命中块计数器清零,比其原值低的其他计数器+1,其余不变
未命中但还有空闲块时,新装入块记为0,其余非空闲+1
未命中且无空闲块时,计数器最大的调出,新装入置0,其余全+1
手算技巧
若未命中,从访问点往前看每个块最后一次被访问的位置,远者换出
最近不经常使用LFU
设置计数器记录块“已经访问”次数,替换时替换计数器最小的
并非效果更佳
若一段时间内频繁访问,则计数器非常大,不再访问后也会长时间占据Cache
即不遵循时间局部性
机器实现
为Cache块添加一个计数器位
访问时...
新调入时,计数器=0,每访问其一次,其计数器+1
替换时替换计数器最小的
存在多个最小时,按行递增或FIFO进行替换
Cache写策略(2*2)
写命中
目标主存单元在Cache有副本
目标主存单元在Cache有副本
写回法
只修改Cache,当换出时再写回主存
Cache块脏位
当cache被写过,脏位为1表示写过
全写法
写直通法
写直通法
同时修改
使用写缓冲
使用写缓冲
用SRAM实现的FIFO队列
CPU向Cache和写缓冲写入数据
CPU完成写入后去执行其他工作
此时专用电路控制写缓冲将数据写回主存
写操作不频繁,效果好
写操作频繁,写缓冲饱和导致阻塞
写操作频繁,写缓冲饱和导致阻塞
写不命中
目标主存单元在Cache无副本
目标主存单元在Cache无副本
写分配法
先将目标块调入Cache
CPU在Cache中写完
搭配写回法使用
非写分配法
直接写回主存
搭配全写法使用
虚拟存储系统
和OS.ep3高度重合
和OS.ep3高度重合
页式存储器
背景
块式存储要求数据必须存放在连续的物理块中,这导致了主存利用率的下降
将进程分为与物理块等大的“页面”,并进行编号,允许离散的存储到主存中
虚地址 & 实地址
程序员使用的地址:(逻辑地址)虚地址
逻辑页号:页内地址
实际主存中的地址:(物理地址)实地址
主存块号:块内地址
页表基址寄存器(CPU)
指明页表在主存中的存放地址
页表
(慢表)
(慢表)
页表项
记录逻辑页号和主存块号的对应关系
逻辑页号:主存块号
页表项被访问时...
相当于一次访存(慢)
相当于一次访存(慢)
把该项对应的块放入Cache
把该项放入快表
快表TLB
SRAM
相联存储器
SRAM
相联存储器
快表项
逻辑页号:主存块号
查询成功(命中)...
直接得到主存块号
与Cache的区别
Cache存主存块的副本
快表存页表项的副本(很小)
替换
得到物理地址后...
Cache中寻找副本...
...
虚拟存储器(3)
背景
由于程序运行可以只将部分内容调入内存,用户感知的内存容量比实际内存容量大
辅存→内存
虚拟页式存储器
改进页表
增加有效位
有效位为1表示页面已经调入主存
增加外存块号
有效位为0时去外存中调取
增加访问位
用于页面替换算法
(参照OS)
(参照OS)
记录页面访问次数
脏位
段式虚拟存储器
段的大小不总一样
分段需要按照逻辑
交由OS确定将哪一段调入主存
页表基址寄存器(CPU)
指明页表在主存中的存放地址
虚拟地址
段内地址
段号
段表
段号:段首址:装入位:段长
段页式虚拟存储器
先按逻辑结构将程序分段
每段再继续分页
虚拟地址
段号:端内页号:页内地址
基本概念
层次结构
BIOS也看做主存的一部分,虽然用的是ROM芯片
一般BIOS和RAM是统一编址的
主存↔辅存:硬件+OS(负责页面置换算法)
实现虚拟存储系统
解决了主存容量不足的问题
Cache↔主存:硬件自动完成
解决了主存与CPU速度不匹配的问题
Cache和主存均可直接被CPU读写
分类
介质
半导体:一般比较快
磁性材料
光存储器:CD
存取方式
随机存取(RAM)
顺序存取(SAM)(Sequential Access Memory)(磁带)
直接存取(DAM):直接选取区域,再顺序读取(磁盘)
相联存储(CAM):通过内容直接检索到存储位置,无需指定地址(快表)
信息可更改性
读写
只读(ROM)
ROM也不是完全不能写,比较麻烦耳
EPROM
BIOS是ROM,存储的“自举装入程序”负责引导装入操作系统(开机)
U盘是ROM(Flash)
信息可保存性
易失性(Cache)
非易失性
读出是否破坏原数据
破坏性读出(DRAM):需要重写
非破坏性读出(SRAM、磁盘、光盘)
度量性能的指标
存储容量
字数×字长
字节数
存储速度:数据传输率=数据宽度/存储周期
存取周期:启动一次存储器到完成操作经历的时间,
分为读出时间和写入时间
分为读出时间和写入时间
存取周期:亦称读写周期/访问周期,
指进行一次完整的读写操作的全部时间,
即连续两次独立访问(R/W)之间需要的最小时间间隔
指进行一次完整的读写操作的全部时间,
即连续两次独立访问(R/W)之间需要的最小时间间隔
=存取时间+恢复时间
数据传输率即是:主存带宽,单位为字/秒,字节/秒,位/秒
单位成本:每1bit需要的价格
主存储器的基本组成
半导体元件原理
存储元
物理结构:电容(接地)+MOS(输入电压达到阈值导通(电容充电),否则断开)
用电容是否保存电荷表示1/0
存储芯片原理
基本结构
存储字
多个存储元的排列(字选线接MOS,位线读数据)(一次读一行)
存储字长:字长为一行的bit数(图中为8)
存储体
(存储矩阵):多个存储字的排列
(存储矩阵):多个存储字的排列
总容量=存储字数×存储字长
有时记为a×b位的芯片
工作逻辑
译码器:根据MAR送来的地址,
将其转化为某一位具体字的字选线导通
将其转化为某一位具体字的字选线导通
n位地址,个存储字
行列地址:存储字的排列从一维到二维,分行列地址,
由行译码器、列译码器共同完成译码寻址,可减少字选线的数量(√n)
由行译码器、列译码器共同完成译码寻址,可减少字选线的数量(√n)
位线读出的数据传送到MDR中
CPU通过数据总线从MDR中取走数据
数据总线宽度=字长
控制电路:控制整个流程
:低电平有效
表示磁存储芯片启用
表示磁存储芯片启用
读写控制线
两种方案引脚数不同
封装好的结构:每一根线都会引出一根金属引脚
现代计算机通常已经把MAR,MDR集成在CPU内部,
存储芯片只需要普通的寄存器用于暂存输入输出数据
存储芯片只需要普通的寄存器用于暂存输入输出数据
寻址方式
对于一个总容量1KB,字长为4B的存储器
按字节寻址1K单元,每单元1B
按字寻址:256单元,每单元4B
按半字寻址:512单元,每单元2B
按双字寻址:128单元,每单元8B
ROM
非易失性
只读存储器
非易失性
只读存储器
掩膜式只读存储器MROM
生产中直接写入,任何情况不可重写
可靠性高
可编程只读存储PROM
可用专门的PROM写入器写入,但只能写一次
可擦除可编程只读存储EPROM
允许写入,也允许用某种方式擦除,可多次重写
紫外光照8-20min,全部擦除:UVEPROM
电擦除特定字:EEPROM(EPROM)
闪存Flash
发展自EEPROM,可多次快速擦写
写比读慢,先擦再写
存储元使用单个MOS管,位密度高于RAM
SSD
控制单元与Flash不同
存储介质类似
存储介质类似
双端口RAM &
多模块存储器
多模块存储器
提升主存速度:需求
DRAM读取是破坏性的,需要重写,导致恢复时间过长
(数倍于存取时间),从而延长存取周期
(数倍于存取时间),从而延长存取周期
双端口RAM
即两组完全独立的数据线、地址线
CPU、RAM中控制电路更复杂
优化多核CPU访问同一内存的速度
冲突控制
(OS线程安全)
(OS线程安全)
不同地址存取
同时读
同时写
一读一写
多模块存储器
解决恢复时间长的问题
解决恢复时间长的问题
单体多字存储
即位扩展
一次读一行,不能拆分:灵活性较差
多体并行存储
用高位区分具体访问哪个内存条:高位交叉编址
跳跃访问也有很好的性能
跳跃访问不符合程序读写的局部性,实际性能不稳定
用低位区分具体访问哪个内存条:低位交叉编址
连续访问性能很好
满足
即可保证流水线不间断,尽量取等以免闲置。
即可保证流水线不间断,尽量取等以免闲置。
注意地址编号
内存内地址连续编号:高位交叉编址
内存间同位置地址连续编号:低位交叉编址
可以逐字读取,灵活性很好
每个存储体存取周期为T,存取时间为r,设T=4r :可见效率提高了
低位交叉编址的多体存储——双通道内存:实际应用
内存主频=1/T
Cache基本原理
目标
匹配内存和CPU的速度差距
基于
程序局部性原理
空间局部性
最近未来用到的指令和数据很可能与正在使用的在存储空间上临近
时间局部性
最近未来用到的指令和数据很可能是现在正在使用的信息
实现
把CPU目前访问的地址“周围”部分数据放到Cache中
每次被访问的块一定被立即调入Cache
映射方式
若Cache已满?
替换算法
如何保存Cache中数据和主存中的一致性?
Cache写策略
多级Cache
离CPU越近,越快,越小
离CPU越远,越慢,越大
离CPU越远,越慢,越大
内存地址分块
编址方案采用:块号+块内地址
高位块号,低位块内地址
高位块号,低位块内地址
OS中,主存中的一块通常
称为“页、页面、页框”
称为“页、页面、页框”
Cache中的块也称“行”
性能
命中率H
CPU欲访问的信息已在Cache中的比例
缺失率M=1-H
设为访问一次Cache所需时间
为访问一次主存需要的时间
为访问一次主存需要的时间
不允许同时访问,先访问Cache,再访问主存:平均访问时间
允许同时访问:平均访问时间
若cache命中则立即停止访问主存
0 条评论
下一页