考点概述:1.汉明码与数据可靠性(必考);2.磁盘原理与RAID,简单的光盘、磁带概念;3.cache命中、替换、相联;4.虚拟存储器,TLB;5.替换算法与相联度。
存储器层级结构图。
局部性原理
- 时间局部性
- 空间局部性
存储器技术
- SRAM,访问时间最短,价格最高。
- DRAM,在电容上保存电荷,不能长久地保持数据,需要周期性刷新。
- 闪存,一种电可擦除的可编程只读存储器
- 磁盘存储器。系统为了访问数据需要对磁盘进三步操作:1.将磁头移动到适当的磁道之上,寻道;2.等待要访问的扇区转动到读写头下,旋转延迟;3.传输时间,即传输一块数据的耗时。
磁盘列阵:RAID(独立磁盘冗余列阵)
镜像:一种冗余技术,防止磁盘故障而造成数据丢失。RAID中会在阵列产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。
数据条带:将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。
数据校验:一种冗余技术,校验数据来提供数据的安全,可以检测数据错误。RAID要在写入数据同时进行校验计算,并将得到的校验数据存储在RAID成员磁盘中。
- RAID0 数据条带化技术,但是数据损坏无法修复(空间利用率100%)
- RAID1 镜像,将数据完全一致写入工作磁盘和镜像磁盘(磁盘空间利用率50%)
- RAID5 校验数据分布在阵列中的所有磁盘上,没有专门的校验磁盘
- RAID10 RAID0+RAID1
大容量、高性能、可靠性、可管理性。
数据可靠性
度量方法:平均无故障时间(MTTF)、年失效率(AFR);服务中断用维修平均时间来度量(MTTR)
可用性=MTTF/(MTTF+MTTR)
汉明码
- 从左到右进行编号
- 编号为2的整数次幂的未标记为奇偶校验位(1、2、4、8)
- 剩余位置作数据位
汉明码设置规则:通过各个校验位上补充0/1,校验位负责的位置满足偶校验(或奇校验)的规则
校验规则:判断各个校验位是否出错,出错则设为1,最后校验位从高到低组合起来的二进制数就是出错的翻转位。
Cache
直接映射:每个存储器地址仅仅对应到cache中的一个位置。
(块地址)mod(cache块数)
实际上就是取块地址的低地址部分。
cache中的tag字段,包含地址信息用于判断cache中的字是否是所请求的字,其实就是包含了地址的高位。有效位:标识一个块是否含有一个有效地址。
如何计算一个cache占用的总位数?
cache块数*(块大小+标记域大小+有效位大小)
其中,标记域大小=32-m-n-2(块大小为2^m字,共2^n块)
cache缺失处理:
3c模型:1.被迫缺失,冷启动失配;2.容量缺失,因cache不能容纳所有存储块,当程序再次访问到曾装入cache又已被替换出去的某块时,出现容量失配。 与关联度无关,容量增大,容量失配率减少;3.冲突失配,在采用组关联和直接映象方式的cache中,主存的很多块都将对应cache的同一块。因这一原因,当程序再次访问到曾装入cache又已被替换出去的某块时,出现冲突失配
需要阻塞CPU流水线,等待访存主存或下一级cache完成,再继续。指令cache缺失和数据cache缺失。
优化访存:旁路读法,CPU和内存直接相连,同时读cache、内存,if在cache hit,抛弃内存;miss:读内存数据。
cache写操作
写直达:写操作总是同时更新cache和下一存储器层次,保证数据一致性
写缓冲:数据写回主存时,写入写缓冲中,处理器继续执行,当写回操作完毕写缓冲释放
写回:当发生写操作新值仅被写入cache,只有修改过的块被替换时才写到较低层存储结构中
写分配:数据块从主存取回,并且在该块中的恰当区域重写数据
写不分配:只更新主存中块的一部分,而不写入cache中
颠簸:1对n冲突导致,块经常被替换
污染:块太大但部分块中的数据无用
直相联:直接映射
全相联(直接映射的另一种极端):一个块可以放置在cache中的任何位置。在全相联cache中找指定一个块,需要检索cache中的所有项,通常为了加速检索,由一个与cache每个项都相关的比较器并行完成。但硬件代价很大。
组相联:每个块有n个位置可放的cache称作n路组相联。根据索引域,存储器中的每个块对应到cache中唯一的组,并且可以放在这个组中的任何一个位置上。
提高相联度好处在于它通常能够降低缺失率,但缺点是增加了命中时间。
较大的cache块能更好地利用空间局部性以降低缺失率,但是块大小太大缺失率也会随之增大(污染)因为cache块数量很少,有大量竞争发生。同时更大的cache块意味着命中时间更长、缺失时的代价更大。
替换块的算法
LRU:最近最少使用法
FIFO:先进先出
多级cache:一级cache致力于减少命中时间获得较短的时钟周期或较少的流水级;二级cache针对改善缺失率以减少长时间的访存代价。二级cache的相联度更高。
虚拟存储器
虚拟存储器:一种将主存用辅助存储器高速缓存的技术
逻辑上位于内存和磁盘之间。
缺页:访问的页不再主存储器中
虚拟地址:虚拟空间的地址,当需要访问主存时需要通过地址映射转化为物理地址
地址转换:在访问内存时将虚拟地址映射为物理地址的过程
重定位:虚拟存储器提供的功能。简化执行程序的加载过程,在用地址访存前重定位将程序所用的虚拟地址映射到不同的物理地址。允许将程序加载到主存中的任何位置。
虚拟存储器中地址划分为虚页号和页偏移
存储器中的页以全相联方式放置
页表:索引存储器的表来定位页,成为页表。存放在存储器(主存)中,页表以虚拟地址的页号作为索引,以找到相应的物理页号。
页表寄存器:指向页表首项地址的寄存器
缺页发生:
缺页故障,操作系统获得控制权,控制的转移由异常机制完成,必须从下一级存储器层次中找到该页,然后决定将其放入主存。
交换区:为进程的全部虚拟地址空间所预留的磁盘空间。
当缺页发生,会根据LRU策略将最近访问最少的页写入磁盘交换区,LRU的一种近似是用引用位,当该页被访问引用位置位,操作系统定期清除引用位。
虚拟存储器必须使用写回机制,对存储器中的页进行单独的写操作,并且在该页被替换出存储器时再被复制到磁盘。脏位:当页中任何字被写就置位;脏页:一个被写过的页。
TLB
快表(TLB):用于记录最近使用地址的映射信息的高速缓存
TLB缺失分两种:1.页在主存,那么TLB缺失只是一次转换缺失。此时处理器可以通过将页表的转换加载到TLB中并且重新访问来进行缺失处理;2.该页不再主存,是一次真的缺页。此时处理器调用操作系统异常处理,先更新页表,再拷贝到TLB。
因为TLB很小,使用全相联映射的成本不会太高。