acautomaton
acautomaton
Published on 2024-09-14 / 46 Visits
0
0

Chapter 3. 存储系统

Chapter 3. 存储系统

公式与性质

  • 存储速度:数据传输速率(每秒传送信息的位数)= 数据的宽度 / 存取周期 。

    1. 存取时间(T_a):启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
    2. 存取周期(T_m):存储器进行一次完整的读/写操作所需的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔
    3. 主存带宽(B_m):也叫数据传输速率,表示每秒从主存进出信息的最大数量。
  • 主存和 Cache 之间的数据调动是由硬件自动完成的,对所有程序员透明。主存和辅存之间的数据调动是由硬件和操作系统共同完成的,对应用程序员是透明的。

  • RAID

    • RAID 0:无冗余无镜像的磁盘阵列。
    • RAID 1:镜像磁盘阵列(两个磁盘同时读/写,互为备份,容量减半)。
  • Cache 的一致性问题

    • 写操作命中
      • 全写法:同时把数据写入 Cache 和主存。
      • 回写法:只把数据写入 Cache ,而不立即写入主存,只有当此块被替换时才写回主存。
    • 写操作不命中
      • 写分配法:更新主存单元,然后把这个主存块调入 Cache。通常与回写法合用。
      • 非写分配法:只更新主存单元。通常与全写法合用。
  • 特点SRAMDRAM
    存储信息双稳态触发器电容
    破坏性读出
    需要刷新
    送行列地址同时分两次送(复用)
    运行速度
    集成度
    存储成本
    主要用途高速缓存主存
  • SDRAMDRAM 的一种,但与传统 DRAM 不同,与 CPU 采用同步方式交换数据, CPU 在其读/写完成前可进行其他操作,支持突发传输。

  • DRAM 的刷新方式

    • 集中刷新:在一个刷新周期内利用一段固定的时间,依次对所有行逐一刷新,在此期间停止对存储器的读/写操作(称访存死区)。
    • 分散刷新:将一个存储器系统的工作周期分为两部分:前半段正常读/写,后半段用于刷新。
    • 异步刷新:设共有 n 行,刷新周期为 T ,每隔 \frac n T 刷新一行。
  • TLB 命中则 Page 一定命中,不一定在 Cache 中;TLBPage 缺失时 Cache 一定缺失。

概念

  • Cache 的功能全部由硬件实现

  • Cache 只是主存的一个副本,不算在主存空间内。

  • 存储器垃圾回收时,内存被视为一张有向图,不能作为根节点的是堆里的变量

    堆是动态分配内存的区域,可能被回收的目标不能作为根节点。

  • 提高程序的局部性,就能提高缓存命中率,从而优化性能。

    无论缓存如何小,程序局部性提高了就能优化性能。

  • 虚拟页不能从任意的虚拟地址开始划分。

    虚拟地址有限。

  • 多级页表最能节省内存空间。

    单级页表在进程创建时为可能用到的所有的页表项分配空间,而多级页表可以在使用时根据内存的占用为进程分配页表空间,可以实现按需分配而不是预先全部分配。除此之外,多级页表的页表空间采用离散分配的方式,与连续分配相比可以很大程度上提高内存利用率。

  • 虚拟内存发生缺页时,缺页中断由 Memory Management Unit, MMU 触发。

  • 虚拟内存系统中虚拟地址与物理地址之间的关系是多对一

    一个物理地址可能由多个虚拟地址指向,但一个虚拟地址只能对应一个物理地址。

考点

  • 对于某存储芯片,假定其动态刷新间隔为 2ms ,读写周期和刷新周期均为 0.5\mu s ,该芯片中一共包含 128 行,每个刷新周期可以完成 1 行存储单元的刷新,如果该芯片采用异步刷新方式工作,则其读写周期和刷新周期可以安排为 30 次读写周期后,安排 1 次刷新操作

    一个刷新周期 2ms 内可以刷新和读写一共 \frac {2ms}{0.5\mu s}= 4000 次,在一个刷新周期内需要刷新 128 行,故读写周期与刷新周期的比例为 (4000-128):128=30:1

  • Dynamic Random Access Memory, DRAM 芯片默认行列地址复用。

  • Random Access Memory, RAM 一定是易失性存储器; Read Only Memory, ROM 一定是非易失性存储器。

  • Cache 是由 Static Random Access Memory, SRAM 构成的高速缓冲存储器。

  • 闪存存储元由 Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET, MOS 管组成,是一种半导体存储器,用 MOS 管的浮栅上有无电荷来存储信息,写入时必须先擦除原有信息,故写比读慢

  • 某一 DRAM 芯片采用地址复用技术,其容量为 1MB ,按字节编址。除电源和接地端外,该芯片的引脚数最少是 22(读/写控制线两根)。

    1MB=2^{20}B ,行列地址复用,故有 \frac {20} 2 = 10 根地址线,按字节编址, 8 根数据线,2 根读/写控制线,2 根行选通和列选通线。

  • DRAM 芯片中存储阵列的行数为 r ,列数为 c ,若要使其地址引脚数最少,并尽量减少刷新开销,则 r \le c ,且 rc 的差值尽可能小。

  • 交叉存储器实质上是一种模块式存储器,它能并行执行多个独立的读写操作。

  • 某计算机主存按字节编址,由 464M \times 8 位的 DRAM 芯片采用交叉编址方式构成,并与宽度为 32 位的存储器总线相连,主存每次最多读/写 32 位数据。若 double 型变量 x 的主存地址为 804 001AH ,则读取 x 需要的存储周期是 3

    主存每次最多读/写 32 位数据,说明是同时启动方式,一个周期可以读/写一行;与宽度为 32 位的存储器总线相连,类似于位扩展,只是每 8 位都有独立地址,可推出低位交叉编址,故 804 001AH 的最低两位是存储器编号 10B3,故访问 8Bdouble 型变量需要访问 3 行, 3 周期。

    行数00011011
    \cdots
    n\checkmark\checkmark
    n+1\checkmark\checkmark\checkmark\checkmark
    n+2\checkmark\checkmark
    \cdots
  • m 体交叉编址的轮流启动方式:每 \frac 1 m 个周期就启动一个存储器。

  • 对于 m 体交叉编址,模块序号 = 访存地址 % m ;判断访存冲突的规则:给定的访存地址在相邻的 m 次访问中出现在同一个存储模块内。

  • 16 位的计算机 16 位、地址线 24 位,内存按字节编址。选用的某型 SRAM 芯片上有数据线 4 位、地址线 14 位。现希望构成 532 0000H - 532 FFFFH 的内存区域,共需要 8 片该类型的 SRAM 芯片。

    题目问的是构成该内存区域,故数据线 16 位、地址线 24 位为干扰信息;实际上题目给出内存按字节编址,则位扩展的倍数为 8 \div 4=2 ,内存区域的大小为 5320000H - 532FFFFH + 1 = 10000H = 16 ^4 B = 2^{16}B ,按字节编址故需要 16 位地址位,则字扩展的倍数为 2^{16 -14}=4 ,故需要 2\times 4=8 片。

  • 若片选地址为 1010 时,选定某 16k \times 8 的存储芯片工作,则该芯片在存储器中的首地址和末地址分别为 2 8000H2 BFFFFH

    不能看片选地址是 1010 就想当然是 1010 0000 .... ~ 1010 1111 ....
    16k \times 8 的存储芯片的容量为 2^{14}B ,故有 14 位地址,则首地址为 10 1000 0000 0000 (2 8000H),末地址为 10 1011 1111 1111 (2BFFFH)。

  • MAR 的位数与主存地址空间的大小有关,而与单个存储器或芯片无关。

  • 磁盘的平均(旋转)等待时间为旋转一圈的时间的一半。

  • 若磁盘转速为 7200\ r/min ,平均寻道时间为 8ms ,每个磁道包含 1000 个扇区,则访问一个扇区的平均存取时间大约是 12.2ms

    平均旋转等待时间 = \frac 1 2 \times \frac 1 {7200 \div 60} \approx 4.17ms ,传输时间 = \frac 1 {120} \times \frac 1 {1000} \approx 0.01ms8 + 4.17 + 0.01 \approx 12.2ms

  • 有如下 C 语言程序段:

    for (k = 0; k < 1000; k ++)
        a[k] = a[k] + 32;
    

    若数组 a 和变量 k 均为 int 型, int 型数据占 4B ,数据 Cache 采用直接映射方式,数据区大小为 1KB 、块大小为 16B ,该程序段执行前 Cache 为空,则该程序段执行过程中访问数组 aCache 缺失率约为 12.5\%

    Cache 中每一块能存放 \frac {16B}{4B} = 4int 型变量。对于 a[k] = a[k] + 32 ,共对 a[k] 进行了两次操作,第一次读取,第二次将新值写入。在对 4 个变量的 8 次操作中,只有第一次为 Cache 缺失,故缺失率约为 12.5\%

  • 主存与 Cache 间采用全相联映射方式, Cache 容量为 4MB ,分为 4 块,每块 1MB ,主存容量 256MB 。若主存读/写时间为 30nsCache 的读/写时间为 3ns ,平均读/写时间为 3.27ns ,则 Cache 的命中率为 99\%

    设命中率为 x ,则 3x+(3+30)(1-x)=3.27 , x = 0.99Cache 不命中时,所需时间是主存和 Cache 读/写时间之和

  • 若计算机主存地址为 32 位,按字节编址,某 Cache 的数据区容量为 32KB ,主存块大小为 64B ,采用 8 路组相联映射方式,则该 Cache 中比较器的个数为 8 ,位数为 20

    n 路组相联映射的比较器个数为 n
    主存块大小为 64B ,块内地址 6 位;Cache 中总共有 \frac {32KB}{64B} =2^9 块,即 \frac {2^9}{8}=2^6 个分组, 组号 6 位;比较器的位数就是标记位的位数,组相联映射的地址结构为 |标记位|组号|块内地址| ,标记位的个数为 32-6-6=20

  • 假定主存按字节编址, Cache 共有 64 行,采用直接映射方式,主存块大小为 32B ,所有编号都从 0 开始,则主存第 2593 号单元所在主存块对应的 Cache 行号是 17

    行号 6 位,块内地址 5 位,则

    2593 = 0...01 010001 00001
                    17     1    
    
  • 缺页是在地址转换时 CPU 检测到的一种异常,缺页处理程序由操作系统提供


Comment