ICS-Chap6-Memory

2025-11-08

ICS

6.1 存储技术

SRAM:每个位存储在一个双稳态存储器单元,每个单元由六个晶体管电路组成.

DRAM:每个单位由一个电容和一个晶体管组成,会漏电且敏感,需要定期刷新.

SRAM 作为高速缓存存储器,DRAM 作为主存和帧缓存区.

传统 DRAM被分为 \(d\) 个 supercell,每个 supercell 有 \(w\) 个 DRAM 单位. 每个 DRAM 单位是一个方阵,\(d=rc\),读的时候先从 addr 引脚读行,将一个 supercell 存到内部行缓冲区,然后再读列,通过 data 引脚将 \(w\) 位传出去 / 传进来.

内存模块:有多个 DRAM,然后每次将地址转化为 \((i,j)\) 之后同步广播到每个 DRAM,然后这些 DRAM 的所有位合起来得到信息.


读:

  1. CPU 将地址放到 system bus 上,然后 IO bridge 将信号传递到 memory bus
  2. 主存感受到 memory bus 上的地址信号,读取,然后将数据写到 memory bus
  3. IO bridge 将 memory bus 的东西翻译成 system bus 信号
  4. CPU 感受到 system bus 的信号,进行读取

写:

  1. CPU 将地址放到 system bus 上,然后 IO bridge 将信号传递到 memory bus
  2. 主存感受到 memory bus 上的地址信号,等待写入
  3. CPU 将数据放到 system bus 上,然后 IO bridge 将信号传递到 memory bus
  4. 主存感受到 memory bus 上的数据信号,等待写入

磁盘容量:

  • 每个磁盘的盘片数
  • 每个盘面的表面数(2)
  • 每个表面的磁道数(柱面数)
  • 每个磁道的平均扇区数
  • 每个扇区的字节数

计算存储速度太 trivial 了.

SSD:一个闪存由 \(B\) 个块组成,每个块由 \(P\) 页组成,每页存储若干数据.

数据以页为单位读写,但是一页所属的整个块被擦除了才能写一页. 很多很多次重复写在之后,块会磨损.

6.2 局部性

trivial.

6.3 Memory Hierachy

cold miss:空的缓存一定 miss.

conflict miss:缓存足够大,但是由于对象被映射到了同一个缓存块,miss.

capacity miss:不够大.

6.4 Cache

\((s,E,b,m)\)\(2^s\) 组,每组 \(E\) 行,每行 \(2^b\) 字节.

地址有 \(m\) 位,最高 \(t=m-s-b\) 为标记位,中间 \(s\) 位为组索引位,最低 \(b\) 位为块偏移位.

\(E\) 路组相连:\(E=E\).

LFU:替换策略为替换过去一段时间最少被使用的.

LRU:替换上一次使用最早的.

全相连:\(s=0\)\(E=C/B\).

直写:直接往下一路写下去写到内存;非写分配:写 miss 的时候直接写到更低的缓存.

写回:推迟更新,需要 dirty bit 存是否被修改过;写分配:写 miss 需要 load 到当前缓存.

L1 cache: 保存指令的缓存为 i-cache,保存数据的为 d-cache. L2 cache 则两者公用. L3 cache 则所有的 CPU 核共用.


卡 cache:卡车 lab 早就做过了.

6.6 Memory Mountain

read throughput: n/s.

stride=1 的时候平坦的原因:prefetching 机制,识别 stride=1 的模式进行 prefetch.

4 条山脊对应各个缓存/主存时间局部性;stride的影响则体现空间局部性.