3.1存储系统的概述
CPU不直接和辅存交换数据的原因是因为CPU处理速度很快,辅存跟不上,降低CPU的处理速度
所以打开在辅存里的软件要把数据读入主存
辅存的数据只有进入到主存再能被CPU访问
为什么要有Cache因为主存的速度也跟不上CPU,所以会把经常用的代码放在Cache中(目的:缓解主存与CPU之间的速度矛盾)
信息可保存性分类
- 断电后
- 存储信息消失:主存和Cache
- 储存信息依旧保持:磁盘和光盘
- 信息读出后
- 原信息被破坏:DRAM
- 原信息不被破坏:SRAM
3.2.0+3.2.3主储存起的基本组成
注:mos管可以理解为一种电控开关,输入电压达到某个阈值MOS管可以接通
片选线:读取指定那个地址的数据
金属引脚个数:地址线+数据线+片选线+读/写控制线 +(供电+接地)
3.2.1SRAM(静态RAM)和DRAM(动态RAM)
DRAM和SRAM的区别
- DRAM用于主存,SRAM用于Cache
- DRAM使用栅极电容储存信息,SRAM使用双稳态触发器储存信息
- 栅极电容储存:每个储存元件制成本低,集成度高,功耗低
- 双稳态触发器储存:每个储存元件制成本高,集成度低,功耗大
DRAM的刷新
- 刷新周期2ms
- 每次刷新一行的存储单元
- 为啥要用行列地址:减少选通线的数量
- 如何刷新:有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
- 在什么时候刷新:
- 分散刷新:每次读完都刷新一次
- 集中刷新:2ms内集中安排全部刷新,
- 异步刷新:2ms内每行刷新1次刷新
行列地址通过相同的引脚前后分两次输入
3.2.2只读储存器ROM
RAM:断电易失
ROM:断电不易失
BIOS芯片(ROM):储存了自举装入程序,负责引导装入操作系统(开机)
逻辑上看主存是由RAM和ROM组成的
3.2.4双端RAM和多模块储存器
多核CPU都要访存,怎么办?双端口RAM
CPU读写速度比主存快太多,主存回复时间长怎么办?多模块储存器
为啥探讨连续访问的情况:大部分的数据都放在了连续的地址中,比如数组和程序
每个模块都有相同的内存和存储速度,各个模块相互独立,既能并行工作,有能交叉工作
双通道:插入同色的(不同色的相当于扩容)
为啥要选相同主频的内存条:因为高频的会降频
为啥要选相同容量的内存条:因为低地址的内存条会交叉编制变成双通道,高地址的还是单通道
3.3主存和CPU的连接
位扩展
字扩展
线选法
译码片选法
字位同时扩展
3.4.1磁盘存储器
磁表面储存器每次1bit的读或者写
磁盘结构
以扇区为单位读取数据
性能指标
磁盘地址和磁盘的工作过程
磁盘阵列
3.4.2固态硬盘SSD
内存翻译层具有迁移的能力,在复制到新的之后会把映射更改
3.5.1+3.5.2 Cache的基本原理
Cache用SRAM实现
局部性原理
性能分析
如何定界周围:将主存的存储空间“分块”,主存和Cache以“块”为单位进行数据交换
要解决的问题
3.5.3Cache和主存的映射方式
全相联映射(存放在任意的位置)
直接映射(每个主存块存放在Cache中对应的位置)
组相连映射(每个主存块可放到特定分组的任意位置)
3.5.4Cache替换算法
随机算法(RAND)
先进先出(FIFO)
抖动现象:频繁的换入换出
近期最少使用(LRU)
做题的时候可以采用:替换那个cache,从这里往左找在cache里但距离最远的替换掉
最近不经常使用(LFU)
这里如果在替换的时候右多个最小的计数器可以采用两种方法
- 序号最小
- FIFO算法
3.5.5Cache写策略
脏位:表示Cache中的数据被没被修改过
写命中
写回法
当CPU对Cache写命中式,只修改Cache中的内容,而不立即写入主存,只有被换出式才写回主存
全写法
当CPU对Cache写命中式,必须把数据同时写入Cache和主存,一般使用写缓冲(使用SRAM实现的FIFO队列,往写缓冲里写比往主存里写要快的多,等CPU写完,在用专门的控制电路,控制逐一写回,如果写的很频繁,可能会对写缓冲饱和,发生阻塞,CPU进行等待)
写不命中
写分配法
当CPU没有命中,把主存块调入Cache,在Cache中修改,配合写回法
非写分配法
当CPU没有命中,只写主存,不调入Cache,搭配全写法
3.6.1页式储存器
引入页表
页表基址寄存器存放页表基地址,而页表基地址指明了页表在主存中存放的位置
访问物理地址的时候先查Cache
引入快表(TLB)
快表是一种相联存储器,查询很快
3.6.2虚拟储存器
把辅存的部分内容调入主存中
页式虚拟储存系统
有效位:调入主存中为1
访问位:被访问的次数
脏位:被没被修改过