存储器层次
局部性原理
存储信息交换的最小单元称为块(或行)
缺失代价:将相应的块从低层存储器替换到高层存储器所需的时间,包括访问块、将数据逐层传输、将数据插入发生缺失的曾和将信息传送给请求者的时间。
DRAM
现代DRAM以bank存储块方式组织。每个bank由多个行组成,发送一条Pre(预充电)命令能够打开或关闭一个bank。bank可同时进行读或写操作,“地址交叉”的轮转访问方式。多体(bank)并行
磁盘
磁道、扇区、柱面
扇区:512~4096个字节,扇区号、一个间隙、包含该扇区纠错码的信息、一个间隙、下一个扇区的扇区号
寻道、旋转延时(平均延时通常是磁盘转动一周时间的一半)、
Cache
直接映射:(Block address) modulo (#Blocks in cache)
标记(地址的高位,即 没有用来检索cache的那些位)、有效位
Cache大小固定,块的大小与数量的折中
Cache缺失处理
指令Cache缺失:流水线阻塞,PC-4的值送到存储器中,主存进行读操作,数据写入Cache,并将地址的高位(ALU中得到)写入标记域,设置有效位。重新取指。
写直达
写缓冲,满了就写
策略:写分配,数据块从主存中取回,并且在该块中的恰当区域重写数据(比如循环中的++i)。或直接改(变量初始化)不写入Cache。
写回
Cache被换才写 (dirty),可使用一个写缓冲来保存数据
计算Cache性能
Given:
- I-cache miss rate = 2%
- D-cache miss rate = 4%
- Miss penalty = 100 cycles
- Base CPI (ideal cache) = 2
- Load & stores are 36% of instructions
Miss cycles per instruction:
- I-cache: 0.02 × 100 = 2
- D-cache: 0.36 × 0.04 × 100 = 1.44
Actual CPI = 2 + 2 + 1.44 = 5.44
Ideal CPU is 5.44/2 =2.72 times faster
Average memory access time (AMAT) AMAT = Hit time + Miss rate × Miss penalty
Cache相联
全相联
组相连
替换策略
组相连:LRU或随机
多级Cache
计算CPI
一、二级Cache的任务不同(命中时间、缺失率)
通过分块进行软件优化—==分块算法操作子矩阵(我不会啊)==
可信存储器层次
平均无故障时间mean time to failure (MTTF)
平均维修时间mean time to repair (MTTR)
失效间隔平均时间Mean time between failures (MTBF) =MTTF+MTTR
可用性Availability = MTTF / (MTTF + MTTR)
增加MTTF –> 故障避免技术,故障容忍技术,故障预报技术
减少MTTR –> 采用故障检测、诊断和修复的工具
汉明码
检错
汉明纠错码:
所有编号为2的整数次幂的位标记为奇偶校验位,剩余为数据位
校验码1检查1,3,5,7…(二进制最右1位均为1)
校验码2检查2,3,6,7…(二进制最右2位均为1)
校验码4检查4,5,6,7…(二进制最右3位均为1)
……
计算SEC需要的位数:$2^p≥log(p+d+1)$,p个校验位,d个数据位
虚拟机
似乎不作为考试内容
虚存
页、缺页
虚页号 — 物理页号
页偏移
降低缺页率:使用全相连、先进的替换算法、写回机制
页的存放和查找
页表PTE:存放在存储器中,使用一个索引存储器的表来定位页。硬件包含一个指向页表首地址的寄存器。
每个页表项使用1位有效位、引用位(也叫使用位,周期性清零)、脏位。页表包含了每个可能的虚拟页的映射,因此不需要标记位。索引是用来访问页表的,由整个块地址即虚页号组成。主存中的页和磁盘中的页大小相等。
快表TLB
由于页表存放在主存中,程序每次至少两次访存:获得物理地址+获得数据。
利用页表的访问局部性,特殊的地址转换—>快表(地址变换高速缓存)
TLB每次装单条,是用全相连,需要回写。每个标记项存放虚页号的一部分,每个数据项中存放物理页号。TLB有标记域!
TLB缺失:
如果不是缺页,处理器将页表中的变换装载到TLB中并重新访问
如果是缺页,操作系统更新页表
TLB和Cache实现从虚拟地址导数据项的转换
TLB在Cache的前面,物理页号与页偏移共同形成访问Cache的索引
图中标记和数据RAM是分开的,用Cache索引和块偏移寻址长而窄的数据RAM,无需使用16:1的多路选择器
Cache命中只可能发生在TLB命中之后
缺失的种类
强制缺失
容量缺失:在全相连时不可能容纳所有请求的块
冲突缺失(碰撞缺失)在全相连中不存在。
Design change | Effect on miss rate | Negative performance effect |
---|---|---|
Increase cache size | Decrease capacity misses | May increase access time |
Increase associativity | Decrease conflict misses | May increase access time |
Increase block size | Decrease compulsory misses | Increases miss penalty. For very large block size, may increase miss rate due to pollution. |
有限状态机控制Cache
注意区别字地址和字节地址不应用存储器平均访问时间来评估乱序处理器的存储器层次结构。—- 模拟乱序处理器和存储器层次结构