计算机体系结构-量化研究方法(第六版)-汉化
  • 关于翻译
  • 前言
    • 我们为什么写这本书
    • 当前版本
    • 选材与组织
    • 内容概述
    • 阅读导览
    • 章节结构
    • 案例研究与习题
    • 补充材料
    • 帮助改进这本书
    • 结语
  • 第一章 量化设计和分析的基础知识
    • 摘要
    • 1.1 介绍
    • 1.2 计算机的类别
      • 物联网/嵌入式计算机
      • 个人移动终端
      • 桌面计算机
      • 服务器
      • 集群/数据仓库规模的计算机
      • 并行性和并行架构的类别
    • 1.3 计算机体系结构的定义
      • 指令集架构:计算机体系结构的“狭隘”观点
      • 名副其实的计算机体系结构:设计组织(Organization)和硬件以满足设计指标和功能需求
    • 1.4 技术趋势
      • 性能趋势:带宽的提升大于延迟
      • 晶体管性能和导线的扩大
    • 1.5 集成电路中功率和能耗的发展趋势
      • 电源和能耗,一个系统的视角
      • 微处理器内的能耗和功率
      • 由于能耗的限制,计算机架构的转变
    • 1.6 成本的发展趋势
      • 时间、数量和商品化的影响
      • 集成电路的成本
      • 成本与价格
      • 制造成本与运营成本
    • 1.7 可靠性
    • 1.8 评测、报告和总结性能
      • 基准评测
        • 桌面应用基准
        • 服务器应用基准
      • 报告性能结果
      • 总结性能结果
    • 1.9 计算机量化设计原则
      • 利用并行化的优势
      • 局部性原理
      • 关注常见情况
      • 阿姆达尔定律
      • 处理器性能方程
    • 1.10 把它们放在一起:性能、价格和功耗
    • 1.11 谬误和陷阱
    • 1.12 结论
    • 1.13 历史观点和引用
    • 案例研究和习题
  • 第二章 内存层次结构设计
  • 第三章 指令级并行及其应用
  • 第四章 矢量、SIMD和GPU架构中的数据级并行性
  • 第五章 线程级并行
  • 第六章 大规模数据中心级计算机的并行性:请求级并行(RLP)和数据级并行
  • 第七章 领域特定架构(DSA)
  • 附录A-指令集设计原则
  • 附录B-内存层次结构的回顾
    • 摘要
    • B.1 介绍
      • 缓存性能回顾
      • 四个内存层次的问题
      • 一个例子:Opteron的数据缓存
  • 附录C-流水线:初级和中级概念
  • 附录D-存储系统
  • 附录E-嵌入式系统
  • 附录F-多机互联
  • 附录G-深入向量处理器
  • 附录H-VLIW和EPIC的硬件和软件
  • 附录I-大规模多处理器和科学计算的应用
  • 附录J-计算机算数(Arithmetic)相关
  • 附录K-指令集架构的回顾
  • 附录L-地址翻译(Address Translation)的高级概念
  • 附录M-历史观点和参考文献
Powered by GitBook
On this page
  1. 附录B-内存层次结构的回顾

B.1 介绍

本附录是对内存层次结构的快速复习,包括缓存和虚拟内存的基础知识、性能方程和简单优化。第一节回顾以下36个术语:

缓存(cache)

全相连(fully associative)

写分配(write allocate)

虚拟内存(virual memory)

脏位(dirty bit)

统一缓冲区(unified cache)

内存滞怠周期 memory stall cycles

block offset

misses per instruction

direct mapped

write back

块(block)

valid bit

data cache

locality

block address

hit time

address trace

write through

缓存未命中(cache miss)

set

instruction cache

page fault

random replacement

average memory access time

miss rate

index field

缓存命中(cache hit)

n-way set associative

no-write allocate

page

least recently used

write buffer

miss penalty

tag field

write stall

如果这篇回顾说得太快,你可能想看看《计算机组织与设计》中的第7章,那是我们为经验不足的读者写的。

缓存是对地址离开处理器后遇到的内存层次结构的最高或第一层的称呼。由于局部性原则适用于许多层次,而且利用局部性来提高性能是很流行的,所以现在只要采用缓冲来重用经常出现的项目,就会用到缓存这个词。这方面的例子包括文件缓存、名称缓存等等。

当处理器在缓冲区中找到一个请求的数据项时,它被称为缓存命中(cache hit)。当处理器在高速缓存中没有找到它所需要的数据项目时,就会发生缓存未命中(cache miss)。一个固定大小的包含所要求的字(word)的数据集合,被称为块(block)或行运行(line run),从主存储器中检索出来并放入高速缓存。时间局部性告诉我们,我们很可能在不久的将来再次需要这个字,所以把它放在高速缓存中是很有用的,因为它可以被快速访问。由于空间局部性,该块中的其他数据很有可能很快就会被需要。

缓存未命中所需的时间取决于内存的延迟和带宽两个因素。延迟决定了检索该块的第一个字的时间,而带宽决定了检索该块的其余部分的时间。缓存未命中由硬件处理,并导致使用顺序执行的处理器暂停,或停顿,直到数据可用。在非顺序执行中,使用该结果的指令仍然必须等待,其他指令可以未命中期间执行。

同样,并不是所有被程序引用的对象都需要驻留在主存储器中。虚拟内存意味着一些对象可能驻留在磁盘上。地址空间通常被分割成固定大小的块,称为页(pages)。在任何时候,每个页都驻留在主存或磁盘上。当处理器引用一个不在缓存或主存中的页内的目标时,就会发生页面故障(page fault),整个页面会从磁盘移到主存。由于页面故障需要很长时间,它们在软件中被处理,处理器不会停滞。在磁盘访问发生时,处理器通常会切换到其他任务。从高层次的角度来看,对引用局部性的依赖,以及缓存与主存的相对大小和每比特的相对成本,与主存与磁盘的关系相似。

图B.1显示了从高端台式机到低端服务器的计算机在内存层次结构中每一级的大小和访问时间的范围。

Previous摘要Next缓存性能回顾

Last updated 2 years ago

图B.1 当我们远离大型工作站或小型服务器的处理器时,层次结构中的典型级别就会变慢和变大。 嵌入式计算机可能没有磁盘存储,内存和缓存小得多。对于第一层的文件存储而言,越来越多的FLASH正在取代磁盘。当我们移动到较低的层次时,访问时间会增加,这使得管理传输的响应速度降低是可行的。实现技术( implementation technology)显示了用于这些功能的典型技术。访问时间以纳秒为单位给出了2017年的典型值;这些时间将随着时间的推移而减少。带宽是以内存层次结构中各层之间的兆字节/秒为单位给出的。磁盘/FLASH存储的带宽包括介质和缓冲接口。