Fallacies and Pitfalls

我们的少数谬误集中在预测性能和能源效率以及从时钟频率或 CPI 等单一指标进行推断的难度上。 我们还表明,对于不同的基准测试,不同的架构方法可能具有完全不同的行为。

Fallacy——It is easy to predict the performance and energy efficiency of two different versions of the same instruction set architecture, if we hold the technology constant.

英特尔为低端上网本和 PMD 领域提供了称为 Atom 230 的处理器,它实现了 x86 架构的 64 位和 32 位版本。 Atom 是静态调度的 2 问题超标量,其微体系结构与 ARM A8(A53 的单核前身)非常相似。 有趣的是,Atom 230 和 Core i7 920 都采用相同的 45 nm Intel 技术制造。 Figure 3.42 总结了英特尔酷睿 i7 920、ARM CortexA8 和英特尔凌动 230。这些相似之处提供了一个难得的机会,可以直接比较相同指令集的两种截然不同的微架构,同时保持底层制造技术不变。 在进行比较之前,我们需要多说一下 Atom 230。

Atom 处理器使用将 x86 指令转换为类 RISC 指令的标准技术来实现 x86 架构(正如 1990 年代中期以来的每个 x86 实现所做的那样)。 Atom 使用了一个稍微强大的微操作,它允许一个算术操作与一个加载或一个存储配对;通过使用macrofusion,此功能被添加到了后来的i7中。这意味着平均而言,对于典型的指令组合,只有4%的指令需要一个以上的微操作。然后在 16 层深的流水线中执行微操作,每个时钟能够按顺序发出两条指令,就像在 ARM A8 中一样。有双整数ALU,FP加法和其他FP操作的独立流水线,以及两条内存操作流水线,支持比ARM A8更通用的双重执行,但仍然受到顺序发布能力的限制。 Atom 230 具有 32 KiB 指令缓存和 24 KiB 数据缓存,两者均由同一芯片上的共享 512 KiB L2 提供支持。 (Atom 230还支持具有两个线程的多线程,但是我们将仅考虑单线程比较。)

我们可能期望这两个以相同技术和相同指令集实现的处理器在相对性能和能耗方面表现出可预测的行为,这意味着功率和性能将接近线性扩展。 我们使用三组基准来检验这个假设。 第一组是来自 DaCapo 基准测试和 SPEC JVM98 基准测试的一组 Java 单线程基准测试(参见 Esmaeilzadeh 等人 (2011) 对基准测试和测量的讨论)。 第二组和第三组基准测试来自 SPEC CPU2006,分别由整数和 FP 基准测试组成。

正如我们在Figure 3.43 中看到的,i7 明显优于 Atom。 在 i7 上,所有基准测试至少快四倍,两个 SPECFP 基准测试快 10 倍以上,一个 SPECINT 基准测试运行速度快八倍! 由于这两款处理器的时钟频率比为 1.6,因此 i7 920 的大部分优势来自更低的 CPI:Java 基准测试的因子为 2.8,SPECINT 基准测试的因子为 3.1,以及因子为 4.3 SPECFP 基准。

但 i7 920 的平均功耗略低于 43 W,而 Atom 的平均功耗为 4.2 W,大约是功率的十分之一! 将性能和功率相结合,可以为 Atom 带来能源效率优势,通常提高 1.5 倍以上,通常提高 2 倍! 这种使用相同底层技术的两个处理器的比较清楚地表明,具有动态调度和推测的激进超标量的性能优势与能效方面的显着劣势有关。

Fallacy——Processors with lower CPIs will always be faster.

Fallacy——Processors with faster clock rates will always be faster.

关键在于决定性能的是CPI和时钟频率的乘积。 通过深度流水线处理器获得的高时钟频率必须保持低 CPI,才能充分利用更快的时钟。 类似地,具有高时钟速率但低 CPI 的简单处理器可能会更慢。

正如我们在前面的谬论中看到的那样,即使在具有相同 ISA 的情况下,针对不同环境设计的处理器之间的性能和能效也会存在显着差异。 事实上,即使在同一家公司为高端应用而设计的一系列处理器中,也会出现性能上的巨大差异。 Figure 3.44 显示了 Intel 的 x86 架构的两种不同实现以及同样由 Intel 提供的 Itanium 架构版本的整数和 FP 性能。

Pentium 4 是英特尔有史以来最积极的流水线处理器。 它使用了超过 20 个阶段的流水线,有七个功能单元,并缓存了微操作而不是 x86 指令。 考虑到积极的实施,其相对较差的性能清楚地表明,利用更多 ILP(很容易有 50 条指令在运行)的尝试失败了。 Pentium 的功耗与 i7 相似,但其晶体管数量较少,因为其一级缓存是 i7 的一半,并且仅包含 2 MiB 二级缓存,没有三级缓存。

Intel Itanium 是一种 VLIW 风格的架构,尽管与动态调度的超标量相比复杂性可能降低,但从未达到与主线 x86 处理器竞争的时钟速率(尽管它似乎实现了与 i7 相似的整体 CPI)。 在检查这些结果时,读者应该意识到它们使用了不同的实现技术,这使 i7 在晶体管速度和等效流水线处理器的时钟速率方面具有优势。 尽管如此,性能的巨大差异——奔腾和 i7 之间的三倍以上——令人惊讶。 下一个陷阱解释了这种优势的主要来源。

Pitfall Sometimes bigger and dumber is better

2000 年代初期的大部分注意力都集中在构建积极的处理器以利用 ILP,包括 Pentium 4 架构,它使用了微处理器中见过的最深的流水线,以及 Intel Itanium,它的每时钟峰值发出率是有史以来最高的 。 很快就清楚的是,利用 ILP 的主要限制往往是内存系统。 尽管推测性乱序管道在隐藏第一级未命中的 10 到 15 周期未命中惩罚中的很大一部分方面相当出色,但对于隐藏二级未命中的惩罚,它们几乎无能为力, 当进入主存时,可能是 50-100 个时钟周期。

结果是这些设计从未接近达到峰值指令吞吐量,尽管有大量晶体管和极其复杂和巧妙的技术。 第 3.15 节讨论了这一困境以及从更激进的 ILP 方案转向多核方案,但还有另一个变化体现了这一缺陷。 设计人员没有试图用 ILP 隐藏更多的内存延迟,而是简单地使用晶体管来构建更大的缓存。 Itanium 2和i7都使用三级缓存,相比奔腾4的二级缓存,三级缓存分别为9和8 MiB,而奔腾的二级缓存为2 MiB。 不用说,构建更大的缓存比设计 20+ 级 Pentium 4 流水线要容易得多,而且根据图 3.44 中的数据,这样做似乎更有效。

Pitfall And sometimes smarter is better than bigger and dumber.

过去十年更令人惊讶的结果之一是分支预测。 混合标记的预测变量的出现表明,更复杂的预测变量可以在位数相同的情况下胜过简单的gshare预测变量(请参见第171页的图3.8)。 这个结果如此令人惊讶的一个原因是带标签的预测器实际上存储的预测较少,因为它也消耗比特来存储标签,而 gshare 只有大量的预测。 尽管如此,通过不误用另一个分支上一个分支的预测所获得的优势似乎比将比特分配给标签与预测相比更合理。

Pitfall Believing that there are large amounts of ILP available, if only we had the right techniques.

尝试利用大量 ILP 失败的原因有很多,但最重要的一个(一些设计人员最初不接受)是即使有推测,也很难在传统结构的程序中找到大量 ILP。 David Wall 在 1993 年进行的一项著名研究(参见 Wall,1993)分析了各种理想条件下可用的 ILP 数量。 我们总结了 2017 年处理器配置的结果,其性能大约是最先进处理器的五到十倍。 Wall的研究广泛记录了各种不同的方法,并且对利用ILP的挑战感兴趣的读者应该阅读完整的研究报告。

我们考虑的激进处理器具有以下特点:

  1. 每个时钟最多 64 条指令发布和调度,没有问题限制,或者是 2016 年最宽处理器(IBM Power8)的总发布宽度的 8 倍,每个时钟允许的加载和存储数量高达 32 倍!正如我们所讨论的,大问题率存在严重的复杂性和功率问题。
  2. 一个有 1K 个条目的锦标赛预测器和一个 16 个条目的函数返回预测器。该预测器可与 2016 年的最佳预测器相媲美;预测器不是主要瓶颈。错误预测在一个周期内得到处理,但它们限制了推测的能力。
  3. 动态完成的内存引用的完美消歧——这是雄心勃勃的,但对于小窗口大小可能是可以实现的。
  4. 使用 64 个额外的整数和 64 个额外的 FP 寄存器重命名寄存器,这比 2011 年最激进的处理器要少一些。因为该研究假设所有指令的延迟只有一个周期(而在 i7 或Power8),重命名寄存器的有效数量大约是任何一个处理器的五倍。

图 3.45 显示了当我们改变窗口大小时此配置的结果。 这种配置比现有的实现更复杂和昂贵,尤其是在指令问题的数量方面。 尽管如此,它给出了未来实现可能产生的有用上限。 由于另一个原因,这些数字中的数据可能非常乐观。 64条指令之间没有问题限制:例如,它们可能都是内存引用。 在不久的将来,甚至没有人会考虑在处理器中使用这种功能。 此外,请记住,在解释这些结果时,没有考虑缓存未命中和非单位延迟,这两种影响都会产生重大影响.

Figure 3.45 中最令人吃惊的观察结果是,由于前面的实际处理器限制,整数程序的窗口大小的影响不如 FP 程序严重。 这个结果指出了这两种程序之间的关键区别。 两个 FP 程序中循环级并行的可用性意味着可以利用的 ILP 数量更高,但对于整数程序 其他因素——例如分支预测、寄存器重命名和较少的并行性——都是重要的限制。 这一观察非常重要,因为过去十年中的大部分市场增长——交易处理、Web 服务器等——都依赖于整数性能,而不是浮点数。

一些人并不相信 Wall 的研究,但 10 年后,现实已经沉没,适度的性能提升与大量硬件资源以及错误推测导致的重大能源问题的结合迫使方向发生了变化。 在结束语中,我们将再次讨论这一问题。

Computer Architectrure: Quantitative Approch 第三章第十三节相关推荐

  1. Computer Architectrure: Quantitative Approch 第三章第九节

    在高性能处理器特别是多issue处理器仅仅有高准确性预测是不够的,还需要高带宽指令流.现在的多issue处理器会一个时钟传递4-8个指令.我们首先考虑如何提高指令传输带宽,再考虑在执行先进推测时的关键 ...

  2. 第一章第十三节:循环语句:for循环

    Python基础入门(全套保姆级教程) 第一章 第十三节:循环语句:for循环 字符串是可迭代的 for循环: for 变量 in 可迭代的东西:代码 把可迭代的东西中的每一项内容拿出来. 挨个的赋值 ...

  3. (软件工程复习核心重点)第三章需求分析-第三节:状态转换图

    文章目录 一:定义(了解) 二:符号表示 一:定义(了解) 状态转换图(状态图) :通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为.状态图还提供了 行为建模机制,指明了作为特定事件的结果系 ...

  4. (计算机组成原理)第三章存储系统-第三节2:ROM芯片

    文章目录 一:只读存储器(ROM)特点 二:ROM的类型 三:计算机内的重要BIOS 一:只读存储器(ROM)特点 前面我们讲了SRAM和DRAM芯片,他们同属RAM芯片,我们知道RAM芯片属于数据易 ...

  5. (计算机组成原理)第三章存储系统-第三节1:主存储器和CPU的连接

    专栏目录首页:[专栏必读]王道考研408计算机组成原理万字笔记.题目题型总结.注意事项.目录导航和思维导图 文章目录 本节思维导图 一:单块存储芯片与CPU的连接 二:多块存储芯片与CPU的连接 (1 ...

  6. 第九章第十三节(无向图求欧拉回路)

    欧拉环游:在图中找到一条路径,从起点开始,依此经过图中的所有边,一个边只能走一次,到达终点,终点和起点可以不同 欧拉回路:在图中找到一条路径,从起点开始,依此经过图中的所有边,最后回到起点,一个边只能 ...

  7. Kotlin学习笔记 第二章 类与对象 第十二 十三节 对象表达式与对象声明 类型别名

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  8. 计算机体系结构流水线数据相关,计算机体系结构PPT教学课件-第三章流水线.ppt...

    计算机体系结构PPT教学课件-第三章流水线 Chapter 3 PIPELINING Basic and Intermediate Concepts流水线:基本概念 Computer Architec ...

  9. CV:翻译并解读2019《A Survey of the Recent Architectures of Deep Convolutional Neural Networks》第一章~第三章

    CV:翻译并解读2019<A Survey of the Recent Architectures of Deep Convolutional Neural Networks>第一章~第三 ...

最新文章

  1. oracle存储while用mysql_oracle存储过程while
  2. 常见OJ评判结果对照表
  3. 1209. 删除字符串中的所有相邻重复项 II
  4. nth_element
  5. jQuery Portamento 滑动定位
  6. ORACLE自增字段创建方法
  7. 《C++ Primer Plus(第六版)》(11)(第八章 函数探幽 复习题答案)
  8. 杭州师范大学计算机考研难度,杭州师范大学网络空间安全考研难吗
  9. cx_Oracle安装教程
  10. [VOSViewer] 合并同义词、删除指定词语
  11. labelimg安装教程(小白都会)
  12. 数据结构之线性表的链式存储结构(C语言)
  13. 产品数据管理(PDM)技术概述
  14. 【Python基础学习】基本数据结构:列表、元组、栈、字典、集合与队列
  15. exe4j打成的exe文件运行时每次弹窗this executable was created with an evaluation version of exe4j
  16. spreadtrum 6600L 开机init流程
  17. asp.net core ABP模板本地化设置
  18. 如何用70行Java代码实现深度神经网络算法
  19. 减一天_减肥好方法 | 减肥食谱一周瘦10斤,小窍门一天减一斤
  20. 最强卸载神器,使你的Windows绝对干净

热门文章

  1. 爬虫项目:获取movie
  2. 写给30岁以下年轻人的话,人生的感悟,不是鸡汤,愿你们的人生少走弯路。
  3. 教苑心语《第56号教室的奇迹》读后感优秀范文
  4. cFosspeed 11.4 — 网络加速器
  5. idea插件之——在markdown复制粘贴图片
  6. 互联网日报 | 5月9日 星期日 | 特斯拉Model3宣布涨价;奈雪回应“6月中上旬上市”;FF91将在纽约与消费者见面...
  7. 用 kali 工具 apache 搭建简易网站 LAMP
  8. 樱花樱花想见你:关于不一样的爱
  9. OPENCV实现色带检测
  10. 2021上岸东南大学网络空间安全学院916学硕心得分享——初试篇