计算机体系结构-量化研究方法(第六版)-汉化
  • 关于翻译
  • 前言
    • 我们为什么写这本书
    • 当前版本
    • 选材与组织
    • 内容概述
    • 阅读导览
    • 章节结构
    • 案例研究与习题
    • 补充材料
    • 帮助改进这本书
    • 结语
  • 第一章 量化设计和分析的基础知识
    • 摘要
    • 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. 第一章 量化设计和分析的基础知识
  2. 1.9 计算机量化设计原则

阿姆达尔定律

Previous关注常见情况Next处理器性能方程

Last updated 2 years ago

通过改进计算机的某些部分可以获得的性能增益可以用阿姆达尔定律来计算。阿姆达尔定律指出,通过使用某种更快的执行模式所获得的性能改进,受到可以使用这个更快模式的时间长度的限制。

阿姆达尔定律定义了通过使用一个特定的功能可以获得的速度提升。什么是速度提升?假设我们可以对计算机做一个改进,当它被使用时,会提高性能。加速具体指一种比率:

或者:

加速比告诉我们,与原来的计算机相比,使用带有增强功能的计算机,一项任务的运行速度将提高多少。

阿姆达尔定律给了我们一个快速的方法来找到一些增强的速度,这取决于两个因素:

  1. 原有计算机的计算时间中可以转换为利用增强的部分--例如,如果一个总共需要100秒的程序的执行时间中有40秒可以利用增强,那么这个分数就是40/100。这个值,我们称之为FractionenhancedFraction_{enhanced}Fractionenhanced​,总是小于或等于1。

  2. 增强的执行模式获得的改进,也就是说,如果在整个程序中使用增强的模式,任务的运行速度会快多少--这个值是原始模式的时间超过增强模式的时间。如果增强模式在部分程序中需要4秒,而在原始模式中需要40秒,那么改进就是40/4或10。我们把这个总是大于1的值称为 speedenhancedspeed_{enhanced}speedenhanced​。

使用具有增强模式的原始计算机的执行时间将是使用计算机未增强部分的时间加上使用增强部分的时间:

总体速度的提高是执行时间的比率:​

示例:假设我们想加强用于网络服务的处理器。新的处理器在网络服务应用中的计算速度是旧处理器的10倍。假设原来的处理器40%的时间在忙于计算,60%的时间在等待I/O,那么加入改进后获得的整体速度是多少?

答案:

阿姆达尔定律蕴含了收益递减的规律。只对一部分计算进行改进所获得的提升会随着改进的增加而减少。阿姆达尔定律的一个重要推论是,如果某个改进只适用于任务的一部分,那么我们对该任务的加速不能超过某个值,这个值是1减去这个部分百分比的倒数。

在应用阿姆达尔定律时,一个常见的错误是混淆了 "转换为使用增强功能的时间百分比 "和 "增强功能使用后的时间的百分比"。如果我们不测量在计算中可以使用增强功能的时间,而是测量增强功能使用后的时间,那么结果将是不正确的!

阿姆达尔定律可以作为一个指南,指导一个增强功能会在多大程度上提高性能,以及如何分配资源以提高成本效益。显然,我们的目标是将资源的使用与时间的使用成正比。阿姆达尔定律对于比较两个备选方案的整体系统性能特别有用,但它也可以应用于比较两个处理器设计方案,正如下面的例子所示。

示例:图形处理器中需要的一个常见转换是平方根。浮点(FP)平方根的实现在性能上差异很大,特别是在为图形设计的处理器中。假设FP平方根(FSQRT)在一个关键图形基准的执行时间中占了20%。一种建议是增强FSQRT硬件,将该操作的速度提高10倍。另一个方案只是试图使图形处理器中的所有FP指令的运行速度提高1.6倍;FP指令负责该应用的一半执行时间。设计团队认为,他们可以用与快速平方根相同的努力使所有FP指令运行快1.6倍。比较这两种设计方案。

答案:我们可以通过比较加速比来对这两种选择进行比较:

由于FP指令出现的频率高,提高FP指令的性能总体上稍好。

示例:磁盘子系统的故障率的计算是:

可以改进的故障率基本上是每百万小时5,总时间为23,那么比率为0.22。

答案:可靠性的提高将是:

尽管一个模块的可靠性有了令人印象深刻的4150×的提高,但从系统的角度来看,这种变化的好处是可衡量的,但很小。

在前面的例子中,我们需要新版本和改进版本的某一项所占的百分比;通常情况下,很难直接测量这些时间。在下一节中,我们将看到另一种进行这种比较的方法,它是基于使用一个将CPU执行时间分解为三个独立部分的方程式。如果我们知道一个替代方案如何影响这三个部分,我们就可以确定其整体性能。此外,在实际设计硬件之前,通常有可能建立模拟器来测量这些部分。

阿姆达尔定律在性能之外也是适用的。让我们重做可靠性例子,在通过冗余提高电源的可靠性后,从200,000小时提高到830,000,000小时的MTTF,或4150倍的改善。

1.7节