关键性|工程院院士孙凝晖:计算机系统的演进规律,从求极致到求通用|CNCC 2021( 三 )

  • 在概念性上的图灵机模型:提出了能够自动执行程序的通用计算装置的科学原理。
  • 在关键性上的冯诺依曼体系结构:为图灵机的实现提供了一个通用的体系结构——所有计算机分为输入设备、存储器、运算器、输出设备5个部分;采用存储程序方式,将指令和数据存储于同一存储器。
  • 在共同性上的肖克莱晶体管:能够实现计算机的数学基础布尔代数的开关器件。
从历史的发展中,我们可以看出,如果工程技术仅仅是一个无限的经验积累,大概会止步于机械计算工具的巅峰,也就是图灵甜点机。
第二条曲线,从超级计算机到高性能计算机时代。
我们经常会混淆这两个概念,想一想我们为什么会发明两个名词来说明一件事,可能就是对于计算工具,我们永远希望它的计算速度越快越好。在历史上,高性能计算装置可以简单分成三个时代:在 CRAY时代,通过部件的并行向量化来提高性能;在MPP时代,通过大规模并行和定制化组件,把机器性能做到极致;在机群时代,利用三大规律把一个高端的装置变成通用的计算部件。
这些过程是如何发生的?一个极致的计算装置如何变成一个通用的计算装备呢?

关键性|工程院院士孙凝晖:计算机系统的演进规律,从求极致到求通用|CNCC 2021
文章插图

从概念性、关键性和共同性三个方面来讲,我们认为应该有以下三点变化:
  • 在概念性方面,要有一个牵引型的目标,也就是评价标准从求最大极值转变为最大积分;
  • 在关键性方面,机群架构应该是松散耦合结构+标准化的部件;
  • 在共同性方面,性能工程要采用通用结构,并达到极致性能。
我们超级计算机一般以单一的极限指标作为评价指标,任何一台计算机,先设计一个目标,谁的性能更高,谁的技术就更强。在历史上有很多这样的指标,比如LINPACK(1993)、Graph500(2010)、Green500(2013)、HPCG(2014)、HPL-AI(2019)。追求这些单一指标的“极值”显然不是求通用的一个驱动力。超算追求的是计算能力,也就是求一个点的“极值”,让所有指标在访存计算比和饱和性能的二维结构里,一条线达到最高。但真正的通用,是需要反映非常多的计算和访存特性的,所以光一个点求最高是不够的。那么,如果要造一个通用的容量计算系统,从线到面,我们就需要一个类似于“积分最大”的系统,高效支撑多种应用。这是第一个变化。
第二个变化体现在关键性,也就是机群结构。机群结构需要有三个的基本条件,第一是结构是松散耦合的;第二是每个组件要可标准化。如果部件是定制化的,可能不能适应通用的应用场景;第三是高性能计算的要求,如果采用标准的组件一般不太容易建构出高性能的系统,所以还要有一系列性能可拓展的方法。三者加起来才能做到通用高性能计算机。时间关系,我们简述一下标准化的几个关键点。第一个是“造”标准化,把机群基础软硬件货架化,包括软件标准化、硬件标准化、互联标准化;第二个是“送”标准化,让用户可以“容易”获取算力;第三个是“用”的标准化,通过屏蔽不同层次的细节实现“用” 的目标。
一般来讲,从基础库和函数抽象,再到框架/领域编程方法来实现标准化,会带来所谓的“软件肿胀”,性能损失非常大,所以我们需要通过性能工程来获取一个极致的性能,这也就是刚才提到的第三个变化。到目前,通用结构获取极致性能的调优方法经历了三个阶段。早年使用的是单一模型方法,由图灵奖得主Fra Allen在2006年提出的性能优化模型。后来随着负载特征变得更加复杂,美国工程院院士Jack Dongarra设计出了软件工程方法。而目前采用的多是智能调优技术,以应对更加碎片化的负载特征。
3

计算机系统的未来趋势
首先讲一下通用计算系统,也就是计算系统如何变得“更通用”?我们认为主要是要形成“平台型计算装置”。计算机系统存在一个通用趋势或规律,我们称之为“X as a Computer”,就是每隔10年就会出现一类新的计算机系统,包括新的编程平台、新的网络连接,新的用户接口,新的使用方式。它们更廉价,应用范围更广泛,形成了新的平台型通用计算机装置。
如果我们把过去60年形成的规律加以总结,大致可以分成三个时代。
首先是IT 1.0 时代,我们把专用计算装置变成了高性能计算机(Calculator as a Computer,CaaC),服务国家部门实现了信息化;把专用的制表装置变成了一个通用服务器(Tabulator as a Computer,TaaC),实现了企业的信息化升级。