登纳德缩放定律的终结意味着架构师必须找到利用并行化的更高效方式。
尽管计算机架构师等很晚才意识到安全的重要性,但他们已经开始对虚拟机和加密提供硬件支持。不幸的是,推测给许多处理器带来了一个未知但重要的安全缺陷。具体来看,Meltdown 和 Spectre 安全漏洞给微架构带来了新的缺陷,使受保护信息遭到泄露。这两种漏洞都使用了旁路攻击。2018 年,研究者展示了在攻击者不将代码加载到目标处理器的情况下,如何利用 Spectre 变体导致网络信息泄露。尽管这次名为 NetSpectre 的攻击泄露信息速度较慢,但它使同一局域网中的所有机器都受到攻击,这造成了很多新的难题。虚拟机架构还有两个漏洞。一个是 Foreshadow,会影响专门保护高风险数据(如加密密钥)的英特尔 SGX 安全机制。每个月都会发现新的漏洞。
旁路攻击并非新鲜事,但是在最早期的案例中,促使旁路攻击成功的是软件缺陷。而在 Meltdown、Spectre 等攻击中,硬件实现中的缺陷导致受保护信息泄露。这是处理器架构师定义什么是 ISA 正确实现的一个基本难题,因为标准定义中并未提及执行指令序列的性能影响,而仅仅涉及 ISA-visible 执行架构状态。架构师需要重新思考对 ISA 正确实现的定义,以避免此类安全漏洞。同时,他们还应该重新思考对计算机安全的侧重点,以及架构师如何与软件设计师一道实现更加安全的系统。架构师(以及每个人)都过于依赖信息系统,以至于对安全的重视程度不如对一流设计的关注。
计算机架构的未来机遇
「我们的机遇就在那些『无解问题』之中。」——John Gardner, 1965
通用处理器固有的低效性,以及登纳德缩放定律和摩尔定律的终结,使得处理器架构师和设计师很可能无法维持通用处理器中的显著性能改进。鉴于改进性能对新的软件能力的重要性,我们必须问:有没有其他的有效方法?
现在有两个很明确的机会,把二者结合起来则是第三个机会。首先,现有的软件构建技术广泛使用具备动态类型和存储管理的高级语言。但是,此类语言的解释和执行通常非常低效。Leiserson 等人使用一个小例子(执行矩阵相乘)说明了这种低效性。如图 7 所示,简单地将 Python 语言代码重写为 C 代码就可以将性能提升 46 倍(Python 是典型的高级、动态类型语言)。
在多核上运行并行循环(parallel loops)又将性能提升接近 7 倍。优化内存配置又将性能提升了近 19 倍,而通过单指令多数据(SIMD)并行化操作(一个指令执行 16 个 32-bit 运算)的硬件扩展,性能又提升了 8 倍多。也就是说,最终的高度优化版本在多核英特尔处理器上的运行速度是初始 Python 版本的 62,000 多倍。这当然只是一个很小的例子,但我们会期望程序员使用优化库。尽管这夸大了常见的性能差距,但很多程序的性能差距可能达到 100 到 1000 倍。


图 7. Python 四次优化中矩阵乘法的潜在加速能力。
一个有趣的研究方向有关是否可以使用新的编译器技术来缩短性能差距(可以辅以体系架构增强)。尽管高效编译和实现 Python 这样的高级脚本语言比较困难,但潜在的收益是巨大的。即使实现 25% 的提升潜力,也能让 Python 程序的运行速度提升百倍。这个简单的例子展示了现代语言中,程序员强调生产力和传统方法强调性能之间的巨大差距。
特定领域的体系结构。一种更加以硬件为中心的设计思路是设计针对特定问题和领域的架构,并给与它们强大(且高效)的性能,因此它们是「特定领域的体系结构(DSA)」,这是一种特定领域的可编程处理器,通常是图灵完备的,但针对特定类别的应用进行了定制。从这个意义上来说,它们与专用集成电路(ASIC)不同,后者仅适用于单一功能,代码很少有变化。DSA 通常被称为,因为与在通用 CPU 上执行整个应用程序相比,它们可以加速某些应用程序。此外,DSA 可以实现更好的性能,因为它们更贴近应用的实际需求;DSA 的例子包括图形加速单元(即 GPU),用于深度学习的神经网络处理器,以及软件定义处理器(SDN)。DSA 效率更高,能耗更低是因为以下四个原因:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-94568-8.html
如同2楼这种贪生怕死的人多半会是汉奸