知识诅咒(Curse of Knowledge),是指我们掌握了某知识,就很难体会没有它的感觉,不理解获得知识以前的状态及还未获得该知识的人,从而产生沟通障碍。
计算机体系结构正在消亡 (Architecture is dying)?其背后可能是对传统的冯·诺伊曼体系结构在应对多样化应用时局限的无奈,以及对摩尔定律的放缓甚至终结的担心。那么,计算机体系结构又将面对怎样的未来呢?
1. 关于计算机体系结构
计算机体系架构(Computer Architecture)泛指计算机硬件系统设计的各个方面,包括指令集架构(Instruction Set Architecture,ISA),微体系结构(Microarchitecture),内存系统(Memory System),存储设备(Storage De- vice),网络设备(Networking Device)等。
半导体技术与计算机体系结构是推动信息技术创新的两个核心技术,都是幕后英雄,往往不为大众所知。摩尔定律的终结使得芯片设计师再也不能“无偿地”每18个月将设计中的晶体管数量提高一倍。而计算机体系架构演进导致了性能的增长,带来的各种好处显而易见。自1985年以来,计算机体系结构的革新贡献了约80倍 的性能增长,与半导体技术进步的贡献相当。
由于大多数半导体技术与计算机体系结构的创新是对上层应用透明的,应用与软件的开发人员们无需参与底层技术创新就能体验这些技术进步带来的各种好处。
尽管依然能够制造出更多更小的晶体管,但已不像过去那样了,单个晶体管的功耗已不能很好地按比例缩小。由于传感器、移动设备、终端与数据中心等大多数产品都不能容忍功耗的不断增长,必须考虑各种手段来缓解功耗增长。纳米级特征的制造偏差,严重地降低了晶体管的长期可靠性。随着新技术(如芯片堆叠技术) 与新挑战(如数据中心)的出现,必须通过局部性原理来管理计算部件之间的通信,从而实现合理的成本和能耗目标。设计、验证、制造和测试的一次性成本不断增加,导致这些成本更难被分摊。
也就是说,在失去几近完美的工艺技术按比例缩小所带来的好处时,该如何构建从传感器到云端的基础设施,如何从性能到隐私等多个角度去让计算机体系结构来增加价值?
2. 对计算机体系结构的需求是什么?
新应用场景的不断涌现,对计算能力的需求在日益增长。在物联网时代,嵌入式传感器产生的连续数据流和由大量多媒体内容无处不在,数字化信息在爆炸式增长。出于健康、商业和其他目,处理此类数据需要高效地平衡计算、通信和存储的关系。为传感器提供足够的能力以便在生成/ 收集数据的地方筛选和处理它们,以达到最优能效,通信所需的能量大大超过计算。很多数据流产生数据如此之快,以至存储在成本上不可行,数据必须被立即处理掉。在其他情况下,环境的限制和聚合不同数据源的需求影响了在哪儿执行这些任务。此类的权衡提出了对混合架构的需求,在节约能耗的同时有效地降低数据传输。
为了保护服务的边界、环境和服务自身,计算资源必须随时可用,并随时准备高效地提供服务。这样的可用性需要底层的硬件和软件提供可靠性、安全性和自我管理功能,而这些特征是目前大多数系统都不能提供的。虽然当前大型机和医疗设备都在努力实现5个9的可用性(每年仅5分钟的不可用时间),但实现这一目标仍然花费巨大。这就要求计算机体系结构在很多层面上实现这样的可用性,而且成本低廉。
随着我们对数据的依赖不断增加,会变得更加依赖对计算性能的权衡,以确保可用、隐私和安全的交易。信息安全要优先考虑,而目前的计算系统极易受攻击。网络信息战不再是假象,通过互联网,对政府网站的攻击早已司空见惯。这就需要新的硬件系统、体系结构、固件和操作系统,以便为上面的应用中所需分布式信息安全提供保障。
3. 对计算体系结构的挑战
各种新兴的应用需要体系结构保障数据的安全性和隐私性,容忍日益变得不可靠的晶体管带来的故障,以及增强可编程性、可验证性和可移植性。保证软硬件可靠性比以往任何时候都重要;对一些植入式医疗设备而言, 尤其事关生死。重新考虑安全和隐私的问题,并且定义系统结构级界面,以使硬件作为可信源更高效地支持安全服务。
3.1将计算机体系结构作为基础设施
计算机体系结构必须超越那种优化每一个孤立设备的情况,接受跨环境协同设计带来的挑战。在智能感知领域,核心的约束是在非常严格的能量、尺寸和成本的限制下完成计算。大规模计算的需求只能通过将成百上千个处理器的能力合并成为一个大规模分布式计算机才能完成,互联网搜索引擎已经展示出这种计算范式的社会重要性。
由于用户界面对于计算能力的要求越来越高,例如多点触控、语音识别、AR/VR、全息影像、3D场景重建等等,甚至移动应用也正向数据和计算密集型转变,这些应用将需要现有设备的单位能量运算率从现在的约百亿次运算/瓦提升若干个数量级。对于运行时而言,计算机体系结构要允许程序功能被分别划分到端边云,并且这种划分还要能够动态地适应云端上行可靠性和能效的变化。
也就是说,计算机体系结构将作为基础设施,是覆盖从传感器延伸到云的生态系统体系结构。
3.2 能耗优先的挑战
针对服务器领域的能耗解决方案与针对便携设备领域的解决方案有着显著的差异。然而,无论是对高端的服务器领域还是便携、传感器设备领域,对计算性能永无止境的需求都将使得功耗、能耗和散热成为计算机体系结构的掣肘因素。
在体系结构层,需要提出更高效、更合理的多核体系结构。在软件层,需要研究如何最大限度减少不必要的通信。在编程模型层次,需要编程环境既可以支持专家级的程序员对整个机器进行控制,又可以对普通程序员提供简单的局部性模型。在应用层,需要高能效的算法级策略来减少操作数量、访存数量和处理器间的通信量,充分利用异构系统的优势。 在编译层,需要新的法有效地在功耗效率与性能之间做出权衡,同时兼顾二进制代码的可靠性。
也就是说,降低能耗可能需要从三个途径加以解决:跨层次的能效优化,对“并行”的重构和有效利用“专用计算”。
3.3 工艺技术的挑战
新技术和新工艺驱动了电路、功能单元、微结构和计算机系统的新型设计。非易失性存储技术可以提供很高的存储密度和功 率效率,但需要针对器件能力重新设计内存和外存系统结构。裸片堆叠技术虽然拥有降低连线延迟,提高片上带宽等多种优势,但仍需面对电子设计自动化、设计和工艺支持等多种挑战。新工具必须要满足新技术的要求,能够支持功能综合、逻辑综合、版图设计等;异构计算更是挑战着在寄存器传输级设计之前对系统建模的能力,还要面对着结构的多样性和加速部件数量的急遽增加。
3.4 跨层次接口的挑战
计算机体系结构中的可编程性是指研制的软件应满足性能、能耗、可靠性以及安全性等指标。
过去,人们关注的是软件工程技术, 以性能和能耗为代价提高编程者的生产率。当能效以及其他目标变得更加重要时,需要新的技术来削减编程抽象层次,从而消除不必要的低效。已有的改善可编程性的技术(包括DSL、动态脚本语言如Python和Javascript等)只是部分的解决方案。
然而,当前的指令集不能提供有效的方式来捕获软件意图或将关键的高层信息传递给硬件。新的高层接口需要封装并将编程者和编译器的知识传递给硬件,从而获得更高的效率与有价值的新功能。可以使程序员能在更高层次表达并行度、局部性、计算依赖以及关键的共享和通信模式的接口。这种接口可使硬件更简单和有效,并具有高效的通信能力且能最大程度减少数据移动的同步原语,支持异构并行。
当然,这需要能够清晰地识别长期数据及程序依赖关系,以便软硬件调度器能够动态地识别代码中的关键路径。没有分析、管理与优化通信的能力,则没有办法保证性能、能耗与服务质量的目标。当考虑大数据应用场景时,由于涉及众多庞大系统之间的数据协作,数据管理会变得更加复杂。现有的系统缺乏合适的软硬件抽象层来描述通信关系。
对可靠性而言,要求跨层次接口能够在单一应用中为不同模块之间指明细粒度的保护边界,能够把安全当成一级公民,并且能确定应用的弹性需求与期望。应用的某些部分也许要能容忍硬件故障,以便运行起来能效更高。所有的这些接口都可以从合适的计算机体系结构中获益,比如信息流的追踪、不变量的生成和检查、事务恢复块、可重构等等。
4. 计算体系结构的发展趋势
4.1 硬件设计大众化
开发硬件必须像开发软件一样简单、便宜和灵活。与在通用处理芯片相比,专用硬件方案单位操作上可提高能效 10000 倍 ,此类能效的提升对于物联网应用至关重要。“大众化”的硬件设计, 也就是让硬件设计变得像软件设计那样敏捷、便宜和开放。软件开发团队可以利用丰富的、拥有现成 的可重用部件的生态系统, 使用高级语言加速提高单个开发者的能力,并依靠强大和自动化的程序分析、综合、测试和调试来保 证品质。
4.2 云计算是对计算机体系结构创新的抽象
云计算利用规模化不仅是为了自身业 务,也是为了投资 IT 的客户利益,已经前所未有地使用了专用计算机架构。无论是高端的超级计算 机,还是商业的云端产品,GPU 变得无处不在,FPGA也促进其数据中心的计算专用化。专用集成电路云 展示了如何协同开发大量高度专用的处理器,从而让关键应用得到明显加速。
虚拟化这类技术将硬件和软件创新透明地引入到了现有的软件系统。虚拟化使得云提供商可以为了更快、 更便宜的技术替换处理器、存储器和网络部件,而不必与消费者沟通协调,也促成了资源的超额认购,在消费者对特定资源的需求具有时变、 碎片化特征的情况下,在消费者之间进行透明的资源共享。超额订购对云计算的成本结构很重要,和单独的消费者购买专属资源比较,它使得云供应商以极低的价格提供 IT资源。
4.3 垂直化趋势
3D 集成为芯片设计提供了一个新的扩展维度, 尽管摩尔定律终结了,仍然可以在一个单系统上集成更多的晶体管,可以从 3个维度缩减互联开销, 并实现各种混合制造技术的紧密集成。因此,3D 结构内部的系统组件具有更高的能效、更宽的带宽和更低的延迟。
4.4 计算机体系结构“更接近物理层”
新的存储器件正在进入商用化,与传统存储层次部件相比,这些新器件在开销、密度、延迟、吞吐量、可靠性和寿命等方面完全不同。碳纳米管可以保证更高的密度和更低的功耗,并且可用在三维基底上,这使得碳纳米管成为体系结构方案是非常可行的。量子计算和超导逻辑,能够提供 “免费”的通信,传输信号几乎不消耗能量 。DNA 计算已经演示了简单的逻辑操作,许多成果也表明了 DNA 作为存储器和纳米结构自组装的数字媒介具备潜力。
4.5 机器学习作为核心负载
目前的重点是支持云端的机器学习,但是在诸如智能手机和超低功耗传感器节点等低功耗设备中支持机器学习应用也非常重要。幸运的是,许多机器学习内核具有相对规整的结构,能够在准确率和资源需求之间进行权衡。因此,它们适用于专用硬件、重构和近似计算等技术。
5. 一句话小结
计算机体系结构是计算机硬件系统的表达,发展趋势是弥合应用领域和器件领域之间的鸿沟,确保信息技术有一个坚实的未来。
【参考资料与关联阅读】
计算机体系结构国家重点实验室 译自http://www.cra.org/ccc/docs/init/21stcenturyarchitecturewhitepaper.pdf. 《中国计算机学会通讯》第 8 卷 第 12 期 2012 年 12 月
鄢贵海 王 颖 刘宇航译,“计算机体系结构2030:未来15年的研究愿景” 《中国计算机学会通讯》第 13 卷 第 7 期 2017 年 7 月
计算机体系结构的一知半解
从操作系统看Docker
感知人工智能操作系统
Linux 内核裁剪框架初探
IoT中的Linux选择
嵌入式Linux的网络连接管理
探索嵌入式应用框架(EAF)
嵌入式中的人工神经网络
IoT产品的10个最佳实践