2022-03-01 , 3662 , 101 , 165
[编按: 转载于 中国计算机学会通讯/孙凝晖, 2022-02期。]
摘要
----
报告从工程科学中的基本方法出发,分析计算机系统中的基本规律,介绍计算机和高性能计算机成为通用计算装备的技术发展过程,最后从当前计算机系统的几个工程科学规律出发探讨未来可能的重要创新。
为什么要从工程科学视角看计算系统?
今天的报告主题是从工程科学(或称技术科学)视角看计算机系统中的规律,与大家一起来探讨指导高性能计算机这样大工程的科学原理或者规律是什么。我们一般从计算机理论和数理基础出发来思考工程科学的规律,我今天试图从工程科学规律视角来看这样大的计算机系统。
2017年底,两院院士郑哲敏先生发表了一篇文章《从钱学森的技术科学思想谈起》,从这篇文章中,我得到一些启示。这篇文章谈到在科学发现的早期,科学和技术没有严格的区分。到了19世纪,科学和工程开始分道扬镳,背后的原因是自然科学本身没有一个完整的体系,加上很多科学理论对工程的实际贡献有限,所以大多工程师只采用纯工程的方法来解决问题。
20世纪中期,自然科学和工程技术再次紧密联系在一起。特别是二战期间,火箭、雷达、核武器这些装备都是大工程,它们不是依靠工程实践积累和经验判断设计出来的,而是需要大量的自然科学作为依据,是科学家和工程师密切合作的产物。所以工程科学、自然科学和工程技术三者之间的联系本质上是非常紧密的(见图1)。
工程技术虽然是对自然界事物的经验累积和对工艺的改进,但把其中的一些共性经验和理论提炼出来,就可以形成工程科学理论或者具有普遍意义的规律;而工程科学对工程技术的成果加以分析和提高就有可能成为自然科学的一部分,比如工程控制论。
郑哲敏先生在这篇文章指出:“技术科学与工程技术的区别在于,每项工程涉及各种各样的具体技术问题,而技术科学是研究其中概念性、关键性、共同性的规律,给出一些工程上解决类似问题的共同方案(见图2) 。就是说,技术科学对工业技术有着引导的作用,能极大地促进和推动工程技术的发展。”简单来看,可以称之为“三性”,分别是概念性、关键性和共同性。
工程科学的规律牵引了计算系统的发展。认识规律,弄清典型系统中概念性、关键性、共同性的规律,是引导计算系统走向繁荣的关键。今天我想用这三大类方法来分析计算机系统中的典型规律,我称它们为“求极致”的规律和“求通用”的规律。
如图3所示,大工程的系统建构主要有两个大目标,一个叫求极致,在特定维度或者核心技术上突破最高、最大、最快的技术极限,开拓科学研究的新疆界。比如最快的超级计算机、最重的重型火箭或者最大口径的望远镜,这类系统通常在学术研究中比较普遍。
另一个叫求通用,这类系统的设计要求约束多,可快速迭代,使用范围广,可兼容性强。比如手机摄像头、汽车工业、民航客机、高性能计算机,这些都是求通用的典型系统,工业界一般对这类系统的建构更感兴趣。同时,这两类系统在相互促进和相互转换的过程中,也存在一些内在规律。
一个求极致的例子是戴琼海院士在《自然·光子学》(Nature Photonics)杂志上发表的一项研究工作,这项研究将光学、微电子、计算机视觉以及信号处理等学科进行交叉,提出了一种显微成像新架构,研制出了“实时超宽场高分辨率成像显微镜”,各项研究指标都达到了极致,比如1厘米×1.2厘米的超宽带视场,1.2微米的高分辨率,51亿像素每秒的数据通量。这一工作为生命科学和医学研究提供了一件“利器”。
一个求通用的例子是我们非常熟悉的手机成像技术,它不追求每一个单项指标都达到极致,而是用软硬一体化来补短板,这项技术占据了除专业相机以外的市场。它通过图像信号处理器(ISP)弥补硬件在单项指标上的不足,让成像器件、图像计算硬件和处理软件协同进步,并通过快速迭代实现性能提升。
我简单总结了建构这两类系统的一些基本方法。
求极致的关键是抓主要矛盾,再结合关键的新科学理论和新工程技术突破指标上的极致,形成紧耦合结构,最后整合所有技术,定制系统内部需要的部件(见图4)。
求通用系统在概念性上面对的是一个多问题,需要对多个问题进行刻画和描述;在结构上通常是松散耦合的,需要对工程结构做最优映射;在共同性上要克服短板,解决技术的时空局限性等问题(见图5)。
从算盘、电子计算机走向HPC的繁荣之路
我们回顾一下通用电子计算机和通用高性能计算机的技术发展过程(见图6)。从较长的历史视角看,我们可以观察到这样一条曲线,从最早的算盘发展到电子计算机,再到现在的高性能计算机,中间出现了三个顶峰和三个山坡。这三个顶峰分别代表机械计算工具、超级计算机和未来Z级计算机。从最早的算盘爬到机械计算工具的顶峰,然后因为有了一些规律,走到了通用计算机的繁荣。但这些系统在演化的过程中,究竟需要什么样的规律?这是我们需要思考的。
从算盘到通用电子计算机
我们首先通过第一段曲线,来回顾从算盘发展到通用电子计算机的历史。我们可以认为,算盘到机械计算工具的发展经历了六个主要的步骤。
第一步,人类历史上第一个人造计算工具算盘诞生于1200年前的中国,在它出现之前,我们只有数学(算术),没有computing(计算)的概念。
第二步,帕斯卡(Pascal)和莱布尼兹(Leibniz)发明了机械式加法器(1642年)和乘法自动计算机(1673年)。
第三步,1801年,杰卡德(Jacquard)发明了首个可编程织布机,通过穿孔卡对织布机进行编程。
第四步,1837年,巴贝奇(Babbage)设计了差分机与分析机,虽然在工程上没有彻底实现,但已经可以完成非常复杂的计算,比如通过多项式逼近对数、指数和三角函数。
第五步,1843年,世界上第一位程序员爱达(Ada)设计了一个算法,用来计算伯努利数列的值。这是第一个利用计算机进行运算的算法程序。
第六步,二战期间,图灵为了破译密码设计出“图灵甜点”解码机。
至此,机械式计算工具达到了工程技术积累的巅峰,直到出现了三位伟大学者,他们的发明奠定了现代通用计算机工程科学的三大基石,分别是:
● 在概念性上的图灵机模型:提出了能够自动执行程序的通用计算装置的科学原理。
● 在关键性上的冯·诺伊曼体系结构:为图灵机的实现提供了一个通用的体系结构——所有计算机都输入设备、存储器、运算器、控制器和输出设备5个部分;采用存储程序方式,将指令和数据存储于同一存储器。
● 在共同性上的肖克莱晶体管:能够实现计算机的数学基础布尔代数的开关器件。
从历史的发展中可以看出,如果工程技术仅仅是一个无限的经验积累,大概会止步于机械计算工具的巅峰,也就是图灵甜点机。然而,在概念性上的图灵机模型、在关键性上的冯·诺伊曼体系结构和在共同性上的肖克莱晶体管,奠定了现代通用计算机工程科学的三大基石,实现了从工程技术无限积累到通用电子计算机繁荣时代的跨越。
从超级计算机到高性能计算机
第二段曲线展示了求极致的超级计算装置演变为求通用的高性能计算装备。人们经常会混淆这两个概念。为什么会发明两个名词来说明一件事?可能是对于计算工具,我们永远希望它的计算速度越快越好。在历史上,高性能计算装置可以简单分成三个时代:在 Cray时代,通过部件的并行向量化来提高性能;在大规模并行处理(MPP)时代,通过大规模并行和定制化组件把机器性能做到极致;在机群时代,利用三大规律把一个高端的装置变成通用的计算装备。
这些过程是如何发生的?一个极致的计算装置是如何变成一个通用的计算装备的呢?
如图7所示,从概念性、关键性和共同性三个方面来看,有以下三点变化:
● 在概念性方面,要有一个牵引型的目标,也就是评价标准从求最大极值转变为最大积分;
● 在关键性方面,机群架构应该是松散耦合结构+标准化的部件;
● 在共同性方面,性能工程要采用通用结构,并达到极致性能。
超级计算机一般以单一的极限指标作为评价指标。对于任何一台计算机,先设计一个目标,谁的性能更高谁的技术就更强。在历史上有很多这样的指标,比如LINPACK(1993年)、Graph500(2010年)、Green500(2013年)、HPCG(2014年)、HPL-AI(2019年)。追求这些单一指标的“极值”显然不是求通用的一个驱动力。超算追求的是计算能力,也就是求一个点的“极值”,让所有指标在访存计算比和饱和性能的二维结构里,一条线达到最高。但真正的通用,是需要反映大量的计算和访存特性的,所以光对一个点求最高是不够的。那么,如果要造一个通用的容量计算系统,从线到面,就需要一个类似于“积分最大”的系统(见图8),高效支撑多种应用。这是第一个变化。
第二个变化体现在关键性,也就是机群结构。机群结构需要有三个基本条件:第一个是结构是松散耦合的;第二个是每个组件要可标准化,如果部件是定制化的,可能不能适应通用的应用场景;第三个是高性能计算的要求,如果采用标准的组件一般不太容易建构出高性能的系统,所以还要有一系列性能可拓展的方法。三者加起来才能做到通用高性能计算机。标准化有三个关键点:第一个是“造”的标准化,把机群基础软硬件货架化,包括软件标准化、硬件标准化、互联标准化;第二个是“送”的标准化,让用户可以“容易”地获取算力;第三个是“用”的标准化,通过屏蔽不同层次的细节实现“用” 的目标。
一般来讲,从基础库和函数抽象,再到框架/领域编程方法来实现标准化,会带来所谓的“软件肿胀”,性能损失非常大,所以我们需要通过性能工程来获取一个极致的性能,这也就是刚才提到的第三个变化。目前,通用结构获取极致性能的调优方法已经历了三个阶段。早年使用的是单一模型方法,即图灵奖得主佛朗西斯·艾伦(Frances E.Allen)在2006年提出的性能优化模型。后来随着负载特征变得更加复杂,美国工程院院士杰克·唐加拉(Jack Dongarra)设计出了软件工程方法。而目前采用的多是智能调优技术,以应对更加碎片化的负载特征。
UfqiLong
计算机系统的未来趋势
第一,如何让计算系统变得“更通用”?我们认为主要是要形成“平台型计算装置”。计算机系统存在一个通用趋势或规律,我们称之为“X as a Computer”,就是每隔10年就会出现一类新的计算机系统,包括新的编程平台、新的网络连接、新的用户接口、新的使用方式。它们更廉价,应用范围更广泛,形成了新的平台型通用计算机装置。
如果把过去60年形成的规律加以总结,通用计算系统的发展大致可以分成三个时代。
首先是IT 1.0 时代,我们把专用计算装置变成了高性能计算机(Calculator as a Computer,CaaC),服务于国家部门,实现了信息化;把专用的制表装置变成了一个通用服务器(Tabulator as a Computer,TaaC),实现了企业的信息化升级。
接着是 IT 2.0 时代,在这个时代里,人类社会和机器在现实世界有了交互,这个时代也被称为Communication时代。我们把专用办公设备用到PC端实现了办公信息化(Office as a Computer,OaaC);把专用通信设备移植到智能手机(Phone as a Computer,PaaC ),实现了消费者的信息化。
我们正处于一个“人机物”三元融合的万物智能互联时代,也可以称为IT 3.0时代。我们将为创造的各种设备(比如人造汽车、人造车床、智能硬件)提供一个“物端通用计算机(thumb computer)”。除了人造设备外,人体和自然物体也可以信息化(Body as a Computer)。这样,社会、信息世界和物理世界统一到同一个庞大的信息网络空间里。
按照上面的规律,我们发现在求通用设备的泛在演化的过程中,形成了当前信息社会的五个成功的平台型计算装置:(1)用于关键部门的高性能计算机;(2)企业级服务器;(3)员工使用的PC;(4)大众智能手机;(5)工控/武器装备使用的嵌入式计算机。未来可能还会出现第六个平台型计算装备。
第二,高性能计算这一类追求极致性能的系统未来的发展有哪些共性方法,是否有章可循?
我们认为关键在于Z级计算机如何提高系统能效。当前求通用的高性能计算机撞上了一堵能耗墙,计算能力每增加10倍,能耗曲线就会上一个台阶,即算力提升过程产生了巨大的能源消耗。2020年Science上曾发表一篇文章,从新结构、新器件、新工艺和应用驱动四个维度总结了几种创新解决方案。
比如,在工艺创新上,从现在的集成电路发展到集成芯片,利用芯粒(chiplet)等技术突破单芯片晶体管数量的上限。
在器件创新上,通过超导电子器件把高频率运行系统的能耗降到最低。比如基于超导约瑟夫森结实现的布尔逻辑计算系统,运行频率可以达到
100 GHz,具有极高的能效。
在模型创新上,通过自然计算将对应问题解演化为最低能量态。这里所说的自然计算,是利用相似性原理模仿自然规律,或利用物理材料构建自适应、自演化的动力系统,近似求解传统计算方法难以解决的高阶复杂问题。
在结构创新上,到底最少有几个XPU?回归到计算机科学的三个基本问题,思考巴贝奇自动计算问题、布什广义关联问题和图灵测试问题,也许我们有三种基础的XPU,比如SPU、DPU、NPU,通过三者组合能够覆盖所有应用场景的计算需求。其中,SPU结构可以解决计算访存特征的差异性; DPU结构解决数据通路的全局有序控制问题;NPU能够对机器学习负载运算以及数据带宽自适应的神经元加以抽象化。
借用1991年布鲁斯·布坎南 (Bruce G. Buchanan)发表的一篇报告,报告中提出任何一个计算系统都可以根据两个维度划分成四个象限(横坐标代表确定性和启发式算法,纵坐标表示符号计算和数值计算),每个求通用系统、求极致系统都是其中的一个圆圈(见图9) 。如果把刚才提到的计算系统发展的3个时代、7个通用系统以及面向不同应用场景的求极致系统汇集在一张表格里 (见表1),就可以从中发现每个系统的一个定位。
最后,如果未来求极致的计算机系统实现了,下一个更加繁荣的通用系统会是什么?这个问题现在来看可能还太遥远,但我们不妨做一个大胆的猜想。从工程科学的三个基本方法来看,我认为在概念上,“系统熵”会让系统从无序变到有序,这是现在人工智能物联网(AIoT)发展带来的一种显著需求;在关键性方面,未来的系统结构应该以数据为中心,实现数据处理的内构安全,可以用“高通量”来代表这类技术;在共同性上,要解决复杂系统的建模问题,并从过去以数据建模为核心的第四范式,转向以建模复杂系统为核心的第五范式。 ■
(本文根据CNCC2021特邀报告整理而成)
🤖 智能推荐