1.存储系统层次结构的概念,掌握缓存-主存和主存-辅存层次作用,以及程序访问的局部性原理与存储系统层次结构的关系。
存储器分类
- 按存储介质分类:存储介质是指能寄存”0”、“1”两种代码并能区分两种状态的物质或元器件。
- 半导体存储器(易失):TTL、MOS
- 磁表面存储器(非易失):磁头、载磁体
- 磁芯存储器(非易失):硬磁材料、环装原件
- 光盘存储器(非易失)
- 按存取方式分类
- 存取时间与物理地址无关(随机访问)
- 随机存储器RAM在程序执行过程中可读可写
- 只读存储器ROM在程序的执行过程中只读
- 存取时间与物理地址有关(串行访问)
- 按在计算机的作用分类
存储器的层次结构
- 存储器三个特性的重要关系
- 缓存-主存层次和主存-辅存层次
缓存-主存层次主要解决CPU和主存速度不匹配问题;
主存-辅存层次主要解决存储系统的容量问题.
主存与Cache之间的信息调度功能全部由硬件自动完成. 而主存与辅存之间的信息调度目前广泛采用虚拟存储技术实现, 即将主存与辅存的一部分通过软硬结合的技术组成虚拟存储器, 程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程.
程序访问的局部性
程序访问的局部性原理是指在一小段时间内, 最近被访问过的程序和数据很可能再次被访问; 在空间上, 这些被访问的程序和数据往往集中在一小片存储区; 在访问顺序上, 指令顺序执行比转移执行的可能性大( 大约5: 1). 存储系统中Cache-主存层次采用了程序访问的局部性原理.
2.熟知主存储器的基本组成;掌握主存中存储单元地址的分配(对于一定容量的存储器,按字节访问和按字访问的寻址范围是不同的。)、主存的技术指标以及提高访存速度的措施。
主存的基本组成
主存与CPU的联系
主存中存储单元地址的分配
主存各存储单元的空间位置是由单元地址号来表示的,而地址总线是用来指出存储单元地址号的,根据该地址可读出或写入一个存储字。
- 高位字节地址为字地址和低位字节地址为字地址
求按字节寻址和按字寻址范围的方法
主存技术指标
主存的主要技术指标是存储容量和存储速度
- 存储容量: 主存 存放二进制代码的总位数
$存储容量 = 存储单元个数 \times 存储字长 $
存 储 容 量 ( 字 节 总 数 ) = 储 存 单 元 的 个 数 × (存 储 字 长/8)
- 存储速度
存储速度是由存取时间和存取周期表示的.
- 存取时间: 是指启动一次存储器操作(读或写)到完成该操作所需的全部时间.
- 存取周期: 是指存储器进行两次连续独立的存储操作(读或写)所需的最小间隔时间.
- 存取器带宽
单位时间内存储器存取的信息量. 单位,位/秒或字节/秒或字/秒
存储器与CPU的连接
存储容量扩展
1K×8位: 1K表示10根地址线, 8位表示8根数据线.
4K×8位: 4K表示12根地址线, 8位表示8根数据线.
- 位扩展(增加存储字长):例如,用两片1K×4位芯片可组成一片1K×8位的存储器
- 字扩展(增加存储字的数量):例如,用两片1K×8位芯片可组成一片2K×8位的存储器
- 字、位扩展(既增加存储字的数量,又增加存储字长):例如,用8片1K×4位芯片可组成一片4K×8位的存储器
存储器与CPU的连接
- 地址线的连接:存储芯片的容量不同,其地址线数也不同,CPU的地址线数往往比存储芯片地址线多很多。通常总是将CPU地址线的低位与存储芯片的地址线相连。
- 数据线的连接:CPU的数据线数与存储芯片的数据线数也不一定相等。
- 读/写命令线的连接:CPU读/写命令线一般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写。
- 片选线的连接:片选线的连接是CPU与存储芯片正确工作的关键。
- 合理选择存储芯片:合理选择存储芯片主要是指存储芯片类型(RAM或ROM)和数量的选择。
提高访存速度的措施
- 采用高速器件
- 采用层次结构 Cache-主存
- 调整主存结构
- 单体多字系统
采用这种方法的前提是: 指令和数据在主存内必须是连续存放的, 一旦遇到转移指令, 或者操作数不能连续存放, 这种方法效果就不明显.
- 多体并行系统
- 高位交叉 顺序编址, 各个体并行工作
- 数据组织特点: 相邻地址的数据处于同一存储体
- 一个地址寄存器
- 多模块串行(局部性原理)
- 性能无提升
- 扩充容量方便
- 低位交叉 各个体轮流编址
- 数据组织特点: 相邻地址处于不同存储器中
- 每个存储体均需地址寄存器
- 多模块并行(局部性原理)
- 性能提升
- 扩充容量方便
3.掌握Cache的工作原理以及Cache的基本结构。
Cache工作原理
- 主存和缓存的编址
- 命中与未命中
缓存共有C块, 主存共有M块 M >> C
- 命中 主存块调入缓存
主存块与缓存块建立了对应关系
用标记记录与某缓存块建立了对应关系的主存块号
- 未命中 主存块未调入缓存
主存块与缓存块未建立对应关系
- Cache的命中率和平均访问时间
Cache命中率: CPU欲访问信息在Cache中的比率, 命中率与Cache容量与块长有关.
- Cache-主存系统的效率
效率与命中率有关
Cache的基本结构
- Cache存储体
Cache存储体以块为单位与主存交换信息, 为加速Cache与主存之间的调动, 主存大多采用多体结构, 且Cache访问的优先级最高.
- 地址映射变换机构
地址映射变换机构是将CPU传来的主存地址转换为Cache地址.
- 替换机构
当Cache内容已满, 无法接受来自主存块的信息时, 就由Cache内的替换机构按一定的替换算法来确定应从Cache内移出哪个块返回主存, 而把新的主存块调入Cache.
- Cache读写操作
- 读
- 写
- 写直达法
写操作时数据既写入Cache又写入主存
写操作时间就是访问主存的时间,读操作时不涉及对主存的写操作,更新策略比较容易实现。
- 写回法
写操作时只要把数据写入Cache而不写入主存,当Cache数据被替换出去时才写回主存。
写操作时间就是访问Cache的时间,读操作Cache失效发生数据替换时,被替换的块需要写回主存,增加了Cache的复杂性。
Cache的改进
- 增加Cache的级数
- 单一缓存:片载(片内)Cache
- 两级缓存:片外Cache
- 统一缓存和分立缓存
- 统一缓存:是指指令和数据都存放在同一缓存内的Cache;
- 分立缓存:是指指令和数据分别存放在两个缓存中,一个称为指令Cache,一个称为数据Cache。
4.深刻理解Cache-主存地址映射(包括直接映射、全相联映射和组相联映射),能熟练设计主存地址字段的分配和计算Cache-主存系统的命中率以及效率。
直接映射
工作原理
- 主存分块, Cache行, 两者大小相同;
- 主存分块后还将以Cache行数据为标准进行分区, Cache分为4行, 第61个字的主存地址为:
000011 11 01 ( 区号, 区内块号, 块内地址), 主存地址从一维变为三维;
- 映射算法: Cache共n行, 主存地j块号映射到Cache的行号为:
i = j mod n , 即主存的数据块映射到Cache特定行.
直接映射的特点
应用场合
全相联映射
工作原理
- 主存分块, Cache行, 两者大小相同;
- 设每块4个字, 主存大小为1024字, 则第61个字的主存地址为:00001111 01 (块号 块内地址)
- 主存分块后地址就从一维变成二维
- 映射算法: 主存的数据块可映射到Cache任意行, 同时将该数据块地址对应行的标记存储体中保存.
特点
应用场合
组相联映射
工作原理
- 主存分块, Cache行, 两者大小相同;
- Cache分组(每组中包含k行), 本例假定k=4
- 主存分块后还将以Cache组数为标准进行分组;
- 每块4个字, 主存大小为1024个字, Cache分为2组, 第61个字的主存地址为:
0000111 1 01 (主存组号, Cache组号, 块内地址) ,主存地址从一维变为三维;
- 映射算法: Cache共n组, 主存第j块号映射到Cache的组号为:
i = j mod n, 即主存的数据块映射到Cache特定组的任意行
特点
应用场景
替换策略
- 先进先出
- 近期最少使用
- 随机法