• 移民专家

    威鲨移民首席专家

    添加移民专家微信,为您提供专属1V1咨询服务
  • 海房专家

    鲲洲海外置业专家

    为您提供海外最新房产投资资讯,定制专属海外置业方案

7*24小时客服热线:

4009-933-922
  • 海那边服务热线电话:
  • 深圳公司:0755-86541970(客户服务)
    地址:深圳市南山区深南大道9819号深铁金融科技大厦19A层
  • 北京公司:010-85951808(客户服务)
    地址:北京市朝阳区光华路soho2期C座C5-3
  • 上海公司:021-61769601(客户服务)
    地址:上海市浦东新区世纪大道1501号国华人寿大厦307-308室
  • 杭州公司:0571-88016401(客户服务)
    地址:浙江省杭州市上城区五星路198号瑞晶国际商务中心2205-1室

新计算机架构,黄金十年爆发(2)

来自:水畔网行 0 0 2019-07-08

 处理器架构当前的挑战

 虽然上一节的重点是指令集体系结构(ISA)的设计,但大多数计算机架构师并不设计新的ISA,而是在当前的实现技术中实现现有的ISA。自20世纪70年代末以来,技术的选择一直是基于金属氧化物半导体(MOS)的集成电路,首先是n型金属氧化物半导体(nMOS),然后是互补金属氧化物半导体(CMOS)。MOS技术惊人的改进速度(Gordon Moore的预测中已经提到这一点)已经成为驱动因素,使架构师能够设计更积极的方法来实现给定ISA的性能。摩尔在1965年26年的最初预测要求晶体管密度每年翻一番;1975年,他对其进行了修订,预计每两年翻一番。这最终被称为摩尔定律。由于晶体管密度呈二次增长,而速度呈线性增长,架构师们使用了更多的晶体管来提高性能。

 摩尔定律和 Dennard Scaling的终结

 尽管摩尔定律已经存在了几十年(见图2),但它在2000年左右开始放缓,到2018年,摩尔的预测与目前的能力之间的差距大约是15倍。目前的预期是,随着CMOS技术接近基本极限,差距将继续扩大。

 

 与摩尔定律相伴而来的是罗伯特·登纳德(Robert Dennard)的预测,称为“登纳德缩放比例”(Dennard Scaling)。该定律指出,随着晶体管密度的增加,每个晶体管的功耗会下降,因此每平方毫米硅的功耗几乎是恒定的。由于硅的计算能力随着每一代新技术的发展而提高,计算机将变得更加节能。Dennard Scaling在2007年开始显著放缓,到2012年几乎变为零(见图3)。

 

 在1986年到2002年之间,指令级并行(ILP)的开发是提高性能的主要架构方法,并且随着晶体管速度的提高,每年的性能增长大约50%。Dennard Scaling的结束意味着架构师必须找到更有可以考虑一个像ARM、Intel和AMD这样的现代处理器核心。假设它有一个15-stage的pipeline,每个时钟周期可以发出四条指令。因此,它在任何时刻都有多达60条指令在pipeline中,包括大约15个分支,因为它们代表了大约25%的执行指令。为了使pipeline保持完整,需要预测分支,并推测地将代码放入pipeline中以便执行。投机性的使用是ILP性能和效率低下的根源。当分支预测完美时,推测可以提高性能,但几乎不需要额外的能源成本——甚至可以节省能源——但是当它“错误地预测”分支时,处理器必须扔掉错误推测的指令,它们的计算工作和能量就被浪费了。处理器的内部状态也必须恢复到错误预测分支之前的状态,这将花费额外的时间和精力。

 要了解这种设计的挑战性,请考虑正确预测15个分支的结果的难度。如果处理器架构师希望将浪费的工作限制在10%的时间内,那么处理器必须在99.3%的时间内正确预测每个分支。很少有通用程序具有能够如此准确预测的分支。

 为了理解这些浪费的工作是如何累加起来的,请考虑下图中的数据,其中显示了有效执行但由于处理器的错误推测而被浪费的指令的部分。在Intel Core i7上,这些基准测试平均浪费了19%的指令。

 但是,浪费的能量更大,因为处理器在推测错误时必须使用额外的能量来恢复状态。这样的度量导致许多人得出结论,架构师需要一种不同的方法来实现性能改进。多核时代就这样诞生了。

 多核将识别并行性和决定如何利用并行性的责任转移给程序员和语言系统。多核并不能解决由于登纳德缩放比例定律结束而加剧的节能计算的挑战。无论有源堆芯对计算的贡献是否有效,有源堆芯都会消耗能量。

 一个主要的障碍是Amdahl定律,它指出并行计算机的加速受到连续计算部分的限制。 为了理解这一观察的重要性,请考虑下图,其中显示了假设串行执行的不同部分(其中只有一个处理器处于活动状态),在最多64个内核的情况下,应用程序的运行速度要比单个内核快得多。例如,当只有1%的时间是串行的,64处理器配置的加速大约是35。不幸的是,所需的功率与64个处理器成正比,因此大约45%的能量被浪费了。

 当然,真正的程序有更复杂的结构,其中部分允许在任何给定的时间点使用不同数量的处理器。尽管如此,定期通信和同步的需求意味着大多数应用程序的某些部分只能有效地使用一部分处理器。尽管Amdahl定律已有50多年的历史,但它仍然是一个困难的障碍。

 随着Dennards Scaling定律的结束,芯片上内核数量的增加意味着功率也在以几乎相同的速度增长。不幸的是,进入处理器的能量也必须以热量的形式被移除。因此,多核处理器受到热耗散功率(TDP)的限制,即封装和冷却系统可以移除的平均功率。虽然一些高端数据中心可能会使用更先进的软件包和冷却技术,但没有电脑用户愿意在办公桌上安装一个小型热交换器,或者在背上安装散热器来冷却手机。TDP的限制直接导致了“暗硅”时代,处理器会降低时钟速率,关闭空闲内核以防止过热。另一种看待这种方法的方法是,一些芯片可以重新分配他们宝贵的权力,从空闲的核心到活跃的。

 一个没有Dennards Scaling,摩尔定律减速、Amdahl法则完全有效的时代,意味着低效率限制了性能的提升,每年只有几个百分点的提升(见图6)。实现更高的性能改进需要新的架构方法,更有效地使用集成电路功能。在讨论了现代计算机的另一个主要缺点后,我们将回到可能起作用的方法上来。

 

 被忽视的安全问题

 20世纪70年代,处理器架构师将重点放在通过保护环等概念来增强计算机安全性上。这些架构师充分认识到大多数错误将出现在软件中,但是他们相信架构支持可以提供帮助。这些特性在很大程度上没有被操作系统所采用,这些操作系统被有意地集中在所谓的良性环境中(比如个人电脑),并且成本很高,所以很快被放弃了。在软件社区中,许多人认为正式验证机制和微内核这样的技术,将为构建高度安全的软件提供有效的机制。遗憾的是,规模化软件系统和对性能的追求,使得这些技术无法跟上处理器的性能。其结果是,大型软件系统仍然存在许多安全缺陷,由于在线个人信息的大量增加,以及云计算的大规模应用,这种缺陷的影响被进一步放大了。

 尽管计算机架构师们安全性的重要意识方面进展缓慢,但他们也已经开始为虚拟机和加密硬件提供安全支持。遗憾的是,这也可能为不少处理器带来了一个未知、但重要的安全缺陷。尤其是,Meltdown和Spectre安全缺陷导致了新的漏洞,这些漏洞会利用微架构中的漏洞,使得本来受保护的信息迅速泄露。Meltdown和Spectre使用所谓的侧通道攻击(Side-channel attacks),通过观察任务所需时间,将ISA级别上不可见的信息转换为时间上可见的属性,从而泄露信息。

 2018年,研究人员展示了如何利用Spectre的变种在网络上泄露信息,而攻击者并不需要将代码加载到目标处理器上。尽管这种被称为NetSpectre的攻击泄漏信息速度很慢,但它可以让同一局域网(或云中的同一集群)上的任何机器受到攻击,这又产生了许多新的漏洞。随后有报告称发现了虚拟机体系结构中的另外两个漏洞。其中一种被称为“预见”(hadow),可以渗透英特尔旨在保护高风险数据(如加密密钥)的安全机制。此后每月都有新的漏洞被发现。

 侧通道攻击并不新鲜,但在早期,软件缺陷导致这种攻击往往能够成功。在Meltdown和Spectre和其他攻击中,导致受保护信息泄露的是硬件实现中的一个缺陷。处理器架构师在如何定义ISA的正确实现上存在基本的困难,因为标准定义中并没有说明执行指令序列对性能的影响,只是说明了执行指令的ISA可见的体系结构状态。处理器架构师们需要重新考虑ISA的正确实现的定义,以防范此类安全缺陷。同时,架构师们应该重新考虑他们对计算机安全性的关注程度,以及如何与软件设计人员合作来打造更安全的系统。从目前来看,架构师过于依赖于信息系统,并不愿意将安全性问题视为设计时的首要关注焦点。

 

 计算机体系结构新机遇

 “我们面前的一些令人叹为观止的机会被伪装成不可解决的问题。” ——John Gardner,1965年

 通用处理器固有的低效率,无论是由ILP技术还是多核所致,加上登纳德缩放定律(Dennard Scaling)和摩尔定律的终结,使我们认为处理器架构师和设计人员在一般情况下难以继续保持通用处理器性能实现显著的提升。而鉴于提高处理器性能以实现新的软件功能的重要性,我们必须要问:还有哪些其他可行的方法?

 有两个很清楚的机会,以及将两者结合起来所创造出的第三个机会。首先,现有的软件构建技术广泛使用具有动态类型和存储管理的高级语言。不幸的是,这些语言的可解释性和执行效率往往非常低。Leiserson等人用矩阵乘法运算为例来说明这种低效率。如图7所示,简单地用动态高级语言Python重写C语言代码,将性能提高了47倍。使用多核并行循环处理将性能提升了大约7倍。优化内存布局提高缓存利用率,将性能提升了20倍,最后,使用硬件扩展来执行单指令多数据(SIMD)并行操作每条指令能够执行16个32位操作,让性能提高了9倍。总而言之,与原始Python版本相比,最终的高度优化版在多核英特尔处理器上的运行速度提高了62,000倍。这当然只是一个小的例子,程序员应该使用优化后的代码库。虽然它夸大了通常的性能差距,但有许多软件都可以实现这样性能100倍到1000倍的提升。

 一个有趣的研究方向是关于是否可以使用新的编译器技术来缩小某些性能差距,这可能有助于体系结构的增强。尽管高效编译和实现Python等高级脚本语言的难度很大,但潜在的收益也是巨大的。哪怕编译性能提升25%的潜在收益都可能使Python程序运行速度提高数十乃至数百倍。这个简单的例子说明了在注重程序员效率的现代语言与传统方法之间有多大的差距。

 领域特定结构(DAS)。一个更加以硬件为中心的方法,是设计针对特定问题域定制的体系结构,并为该领域提供显著的性能(和能效)增益,这也被称之为“领域特定结构”(DSA),是一种为特定领域可编程且通常是图灵完整的,但针对特定应用程序类别进行了定制。从这个意义上说,DSA与专用集成电路(ASIC)不同,后者通常用于单一功能,代码很少发生变化。DSA通常称为加速器,因为与在通用CPU上执行整个应用程序相比,它们只会加速某些应用程序。此外,DSA可以实现更好的性能,因为它们更贴近应用程序的需求;DSA的例子包括图形处理单元(GPU),用于深度学习的神经网络处理器和用于软件定义网络(SDN)的处理器。

  DSA可以实现更好的性能和更高的能效,主要有以下四个原因:

 首先也是最重要的一点,DSA利用了特定领域中更有效的并行形式。例如,单指令多数据并行(SIMD)比多指令多数据(MIMD)更有效,因为它只需要获取一个指令流并且处理单元以锁步操作。虽然SIMD不如MIMD灵活,但它很适合许多DSA。DSA也可以使用VLIW方法来实现ILP,而不是推测性的无序机制。如前所述,VLIW处理器与通用代码不匹配,但由于控制机制更简单,因此对于数量有限的几个领域更为有效。特别是,大多数高端通用处理器都是乱序超标量执行,需要复杂的控制逻辑来启动和完成指令。相反,VLIW在编译时会进行必要的分析和调度,这非常适用于运行显式并行程序。

 其次,DSA可以更高效地利用内存层次结构。正如Horowitz所指出的,内存访问比加减计算成本要高得多。例如,访问32K字节缓存块所需的能量成本比32位整数相加高约200倍。这种巨大的差异使得优化存储器访问对于实现高能效至关重要。通用处理器在运行代码的时候,存储器访问往往表现出空间和时间局部性,但这在编译时非常难以预测。因此,CPU使用多级高速缓存来增加带宽,并隐藏相对较慢的片外DRAM的延迟。这些多级高速缓存通常消耗大约一半的处理器能量,但几乎都不需要对片外DRAM的所有访问,导致这些访问需要大约10倍于最后一级高速缓存访问的能量。

 缓存有两大明显缺点:

 数据集非常大时:当数据集非常大并且时间或空间位置较低时,缓存根本不能很好工作;

 当缓存工作得很好时:当缓存运行良好时,位置非常高,这意味着,根据定义,大多数缓存大部分时间都处于空闲状态。

 在编译时可以很好地定义和发现应用程序中的内存访问模式,这对于典型的DSL来说是正确的,程序员和编译器可以比动态分配缓存,更好地优化内存的使用。因此,DSA通常使用由软件明确控制的动态分层存储器,类似于矢量处理器的操作。对于合适的应用,用户控制的存储器可以比高速缓存消耗更少的能量。

 第三,DSA可以适度使用较低的精度。通用CPU通常支持32位和64位整数和浮点(FP)数据。机器学习和图形学中的许多应用不需要计算得这样精确。例如,在深度神经网络(DNN)中,推理通常使用4位,8位或16位整数,从而提高数据和计算吞吐量。同样,对于DNN训练应用,FP很有用,但32位足够了,一般16位就行。

 最后,DSA受益于以领域特定语言(DSL)编写的目标程序,这些程序可以利用更多的并行性,改进内存访问的结构和表示,并使应用程序更有效地映射到特定领域处理器。

 领域特定语言

 DSA要求将高级运算融入到体系结构里,但尝试从Python,Java,C或Fortran等通用语言中提取此类结构和信息实在太难了。领域特定语言(DSL)支持这一过程,并能有效地对DSA进行编程。例如,DSL可以使向量、密集矩阵和稀疏矩阵运算显式化,使DSL编译器能够有效地将将运算映射到处理器。常见的DSL包括矩阵运算语言Matlab,编程DNN的数据流语言TensorFlow,编程SDN的语言P4,以及用于指定高级变换的图像处理语言Halide。

 使用DSL的难点在于如何保持足够的架构独立性,使得在DSL中编写的软件可以移植到不同的架构,同时还可以实现将软件映射到底层DSA的高效率。例如,XLA系统将Tensorflow编译到使用Nvidia GPU和张量处理器单元(TPU)的异构处理器。权衡DSA可移植性以及效率是语言设计人员、编译器创建者和DSA架构师面临的一项有趣的研究挑战。

 DSA TPU v1。以Google TPU v1作为DSA的一个例子,Google TPU v1旨在加速神经网络推理。TPU自2015年开始投入生产,应用范围从搜索查询到语言翻译再到图像识别,再到DeepMind的围棋程序AlphaGo和通用棋类程序AlphaZero,其目标是将深度神经网络推理的性能和能效提高10倍。

(未完待续)

 


喜欢 0
收藏 0
0条评论
查看更多评论

移民工具箱

海那边公众号

新时代移民内参,为您开启 海外优质生活

微信 扫一扫

海那边移民

无需下载看项目,专家答疑

微信 扫一扫