CSAPP Chapter6

这篇笔记将记录我在ICS课上学习CSAPP第六章The Memory Hierarchy的过程。已完结。

The Memory Hierarchy

Memory Hierarchy

Memory

RAM:基础存储单元是一个cell,一个cell存储一个bit。

  • Static RAM:更稳定、更快、更贵
  • Dynamic RAM:需要持续充电保证内部状态稳定

SRAM和DRAM都是volatile memories,断电后数据会丢失。

ROM:nonvolatile memories,断电后数据不会丢失。

Firmware:存储在ROM中的程序,可编程。

CPU和memory通过bus连接起来。

Disk

一个platter有两个surface,一个surface上有很多track,每个track会切成一个个间隔开的sector。

Disk geometry

磁盘自身会旋转,手臂的head在不同track之间移动。

Disk dynamics

Memory-mapped I/O

内存映射区域:I/O设备映射到地址空间的一部分区域。

CPU访问这部分区域,通过总线向外部设备的port发送读写指令。

通常CPU会进行异步I/O,将后续事情交给disk controller来做。磁盘通过DMA将数据从磁盘写入memory。当DMA transfer完成后,disk controller会通过中断通知CPU的pin(引脚)。

Solid State Disk (SSD)

– 基于flash memory

– Flash translation layer = disk controller

SSD

一个page只能写一次,重新写要先擦掉。一次性会擦掉一整个block(因为擦除操作开销很大)。

一个block重复写多次(100000次)后会wear out。

顺序读写很快 随机写很慢。

Locality

  • Temporal locality(时间局部性)

最近被访问的数据,倾向于很快会再次被访问。

  • Spatial locality(空间局部性)

访问的数据临近的其他数据,倾向于会一起访问。

Caches

金字塔的越上面越小、越快、越贵。

每个上面一层都是下一层的cache。

An example memory hierarchy

Cache Misses:

  1. Cold miss:cache为空
  2. Capcity miss:cache已满
  3. Conflict miss:cache中有空间,但是有多个数据映射到cache的相同位置,与硬件设计相关

Cache Memory在CPU芯片上:

Cache Memory

Generic Cache Memory Organization

Cache由一组set组成,每个set包含一条或多条line。

General organization of cache

先通过set index确定set,然后匹配tag,最后访问block offset:

Address

Direct-mapped cache: 一个set只包含一条line。L1 cache最早会用这种设计。速度较快,但是thrashing(conflict)会比较严重。

Set associative cache: 一个set包含多条line,line match的时候一起匹配。

越上层的cache的associate越小。

Line Replacement on Misses

如何选择要驱逐的line?

  • LFU (least-frequently-used)

  • LRU (least-recently-used)

Write cache-friendly code

有better locality的程序会有较低的miss rate。

A memory mountain

CSAPP Chapter6
http://oooscar8.github.io/2025/03/03/CSAPP-Chapter6/
作者
Alex Sun
发布于
2025年3月3日
许可协议