第六章 存储器层次结构

L0: 寄存器,CPU一个时钟周期能访问到

L1~L3: 高速缓存(SRAM),CPU几个时钟周期内能访问到

L4:主存(DRAM),CPU几十到几百个时钟周期才能访问到

高速缓存组织结构

高速缓存(S, E, B, m):

  • 高速缓存将m个地址划分成S组
  • 每组包含E行
  • 每行包含一个有效位,一些标志位,以及一个数据块
  • 数据块大小B字节
  • t位标志位 + s位组索引 + b位块偏移组成高速缓存索引地址,索引到高速缓存中的一行/块

高速缓存读

  1. 组选择
  2. 行匹配
  3. 字抽取
  4. 不命中行替换,随机选择/Least-Frequently-Used/Least-Recently-Used等替换算法

分类

  • 直接映射高速缓存:每组只有1行,即E == 1
  • 组相联高速缓存:每组有多行,即E > 1
  • 全相联高速缓存:只有一组,即S == 1,构造困难,昂贵,通常只用做小的高速缓存,如Translation-Lookaside-Buffer
  • 按照保存的内容:
    • i-cache: 只保存指令的高速缓存
    • d-cache: 只保存数据的高速缓存
    • unified-cache: 既保存数据也保存指令的高速缓存

高速缓存写

  • 写命中(write hit)
    • 直写(write-through):立即将高速缓存块写回到紧接着的低一层中
    • 写回(write-back):尽可能推迟更新,只有当替换算法要驱逐这个更新过的块时,才把它写回到紧接着的低一层中。高速缓存行必须为每个高速缓存行维护一个额外的修改位(dirty bit),表明这个高速缓存行是否被修改过。
  • 写不命中
    • 写分配(write-allocate):加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块
    • 非写分配(not-write-allocate):避开高速缓存,直接把这个字写到低一层中。

高速缓存参数对性能影响

  • 不命中率/命中率(miss/hit rate): 程序执行内存引用不命中/命中的比率
  • 命中时间(hit time): 从高速缓存传送一个字到CPU所需时间,包括组选择、行确认、字选择时间。L1高速缓存在几个时钟周期
  • 不命中处罚(miss penalty): 不命中所需要额外的时间,L1不命中从L2得到服务的处罚数十个周期,从L3得到服务的处罚50个周期,从主存得到服务的处罚200个周期
Copyright © Jason 2019-2024 all right reserved,powered by Gitbook本书发布时间: 2022-03-21 22:01:04

results matching ""

    No results matching ""