标注*则不太重要 标注!则加强注意
第六章 存储器结构层次
1.存储技术
1.1.随机访问存储器(RAM)
- 静态RAM(SRAM)比动态RAM(DRAM)快而贵
1.1.1.静态RAM(SRAM)
- SRAM用作高速缓存存储器
- 每位6晶体管
- 每个位存储在双稳态存储器单元里,干扰难以不影响其状态
1.1.2.动态RAM(DRAM)
- DRAM用作主存及图形系统的帧缓冲区
- 每位1晶体管
- 每个位对应一个电容的充电
1.1.2.1.传统的DRAM*
- 分为d个超单元,每个有w位
- 超单元被组织成r行c列的阵列,rc=d
- 内存控制器可一次从DRAM传入或传出w位
- 传入行地址i称为RAS请求,传入列地址j称为CAS请求
- RAS将整行内容复制到内部行缓冲区,CAS取出对应列
- DRAM芯片在内存模块中排成阵列,对RAS和CAS统一反应并取出
1.1.2.2.增强的DRAM*
- 快页模式DRAM:对同行内容允许直接读取行缓冲区
- 扩展数据输出DRAM: 快页的加强版,CAS信号更靠近
- 同步DRAM:用外部相同的时钟上升沿取代异步的控制信号
- 双倍数据速率同步DRAM:对同步的加强,用两个时钟沿作为信号
- 视频RAM:思想与快页类似,但输出是对内部缓冲区移位得到,允许对内存并行的读和写
1.1.3.非易失性存储器
- ROM,PROM,EEPROM,FlashMemory
- 存储在ROM设备中的程序被称为固件(firmware)
1.1.4.访问主存
- 总线事务:读事务,写事务
- 读事务:总线接口–地址A–>主存–x-->总线接口–x-->寄存器文件
- 写事务:总线接口–地址A->主存;寄存器文件–y-->主存
1.2.磁盘存储
- 容量大,访问慢,比DRAM慢10万倍,比SRAM慢100万倍
1.2.1.磁盘构造!
- 盘片,表面,主轴,磁道,柱面,扇区
- 通常5400~15000 RPM(转每分钟)
- 记录密度:每英寸可放入位数
- 磁道密度:从中心出发半径每英寸磁道数
- 面密度:记录密度与磁道密度的乘积
- 磁盘容量:盘片数x表面数x磁道数x扇区数x字节数
- 磁盘/IO设备容量:1KB = 103 byte; 1MB = 106 byte; 1GB = 109 byte
- RAM容量:1KiB = 210byte; 1MB = 220 byte; 1GB = 230 byte
1.2.2.磁盘操作!
- 访问时间:寻道时间,旋转时间,传送时间
- 旋转时间max = 1/RPM x 60s;旋转时间avg = 1/RPM x 60s x 0.5
- 传送时间 = 1/RPM x 60s x (1/平均每磁道扇区数)
1.2.3.逻辑磁盘块
- 磁盘控制器通过编号映射到盘面,磁道,扇区三元组,隐藏磁盘构造的复杂性
- 磁盘控制器必须对磁盘格式化才能在磁盘上存储数据。这包括用标示扇区的信息填写扇区间隙,标示故障柱面并不再使用,预留一组柱面作为备用。由于备用柱面,格式化容量小于最大容量。
1.2.4.访问磁盘
- 从总线获取地址,读取内容到主存,然后发送中断信号
1.3.固态硬盘(SSD)
- 由B个块组成,每块有P个页
- 以页为单位读写,只有页所属的整块被擦除后才能写这一页
- 一个块被擦除后,每一个页都可以不需要再进行擦除就写一次
- 读快于写
- 随机写很慢,擦除需要时间,已有数据的块被写时要复制到新块
2.局部性
- 时间局部性:倾向于反复使用不久前的数据
- 空间局部性:倾向于使用访问数据周围的数据
- 每隔k个元素的访问称为步长为k的引用模式
- 评价一个程序关于取指令的局部性,程序指令存放在内存中,循环体多次执行时,也会具有良好的时间局部性
- 循环体越小,循环迭代次数越多,局部性越好
3.存储器层次结构
3.1.缓存
- 第k层是第k+1层的缓存
- 数据以块大小为传送单元,相邻层次的块大小确定,但不同层之间可以有区别。
- 离CPU越远,块大小越大
3.1.1.缓存命中
- 需要k+1层对象d时先在k层中查询,命中则读取d
3.1.2.缓存不命中
- 需要k+1层对象d时先在k层中查询,第k层中没有对象d
- 从k+1层中取出d,放入k层,k层满时根据替换策略覆盖一个现存的块
3.1.2.1.缓存不命中的种类
- 冷不命中:k层缓存是空的,暖身之后不会出现
- 冲突不命中:抖动,由于替换策略,两个块交替出现
- 容量不命中:缓存太小,无法处理工作集
4.高速缓存存储器!
4.1.读取与写回
- 机器存储器地址有m位,其高速缓存S=2s组,每组E行,每行1个有效位,t=m-(b+s)个标记位,B=2b字节
- 地址分为标记,组索引,块偏移三个部分
- 直接映射高速缓存和全相联高速缓存是组相联高速缓存的特殊情况
- 全相连高速缓存只适合小容量
- 直写-非写分配 写回-写分配
- i-cache和d-cache的分开解决了冲突不命中,但是增加了容量不命中
4.2.参数对性能的影响
- 不命中率:不命中数量/引用数量
- 命中时间,不命中处罚
- 高速缓存增加:命中时间和命中率
- 块大小增加:强化空间局部性,行数减少,减弱时间局部性
- 高相联度:减少抖动,提高成本,增加不命中处罚,不命中处罚低时(高层次高速缓存)用低相联,反之用高相联
- 写策略:直写传送次数多,写回少,越往下走传送时间越长,越可能用写回
5.高速缓存对程序性能的影响
5.1.存储器山
5.2.重排循环提高空间局部性
*详见ICS课本P448