绑定手机号
获取验证码
确认绑定
提问
0/255
提问
订阅开课提醒需关注服务号
回答成功
知道了
扫码关注智猩猩服务号登录
请使用微信扫描二维码
扫描二维码分享给微信好友
您已订阅成功,有新课程,我们将第一时间提醒您。
知道了
发送提问成功
回答可在
“我的——我的提问”中查看
知道了
失败
欢迎来智东西
关注我们
智东西
车东西
芯东西
智猩猩
0
0
软硬件融合缘起:从CPU、DSA到软硬件融合
分类: 智能计算
2022-04-23 15:42:25

本文是《软硬件融合》图书前言部分的改写。前言可以说是整个图书成文的大背景,作为2022年新年的第一篇,我们回到原点,重新思考“我是谁?我从哪里来?我要到哪里去?”(这里的我指的是软硬件融合):

  • 我是谁?软硬件融合是要软件和硬件深度协同,兼顾软件的灵活性和硬件的高性能。

  • 我从哪里来?软件热点层出不穷并且快速迭代;CPU性能瓶颈,摩尔定律失效;ASIC/DSA的灵活性依然不足以满足复杂计算场景的需要。

  • 我要到哪里去?面向未来,算力再上1-2个数量级。既必须软件定义一切(通用的、灵活的、快速的可编程能力),又必须硬件加速一切(给用户最极致的性能),还必须拥抱开源(用户无感迁移,多领域开放生态)。

IT行业变化太快,不变的唯有变化。近年来,物联网、云计算、大数据、人工智能、区块链、自动驾驶、5G/6G通信、隐私计算、元宇宙等新技术层出不穷,并且已有的技术仍在快速迭代。软件技术日新月异,快速演进,对支撑这一切的硬件计算平台提出了更高的要求。但是,目前支撑这一切的硬件,依然是以CPU计算为主的通用服务器。

CPU

越是复杂的场景,对软件灵活性的要求越高,而只有CPU能够提供云场景所需的灵活性。CPU作为云计算场景的主力计算平台有其合理性,主要体现在四个方面:

  • 硬件的灵活性。软件应用迭代很快,支持软件运行的硬件处理引擎要能够很好的支持这些迭代。ASIC这样绝对定制的处理引擎不太适合云计算场景,而CPU因为其灵活的基础指令编程的特点,可以认为是最适合云计算的处理引擎。

  • 硬件的通用性。云计算厂家购买硬件服务器,然后把服务器打包成云服务器卖给不同的用户,很难预测这些硬件服务器会运行哪类工作任务。最好的办法是采用完全通用的服务器,用在哪里都可以。这样,CPU由于其通用性,成为云计算场景最优的选择。

  • 硬件的利用率。云计算的基础技术是虚拟化,通过虚拟化把资源切分,实现资源共享,以此提高资源利用并降低成本。而目前,只有CPU能够实现非常友好的硬件级别的虚拟化支持。

  • 硬件的一致性。在终端场景,软件依赖硬件,成为软硬一体。在云计算数据中心,软件和硬件是需要相互脱离的。在云计算场景,各种复杂系统交织在一起,形形色色各种任务混合运行,这些任务随时可能被创建、复制、迁移和销毁。同一个软件实体会在不同的硬件实体迁移,同样的同一个硬件实体也需要运行不同的软件实体。这对硬件平台的一致性提出了很高的要求。

因此,在性能满足要求的情况下,CPU就成了数据中心计算平台的最佳选择。

但很不幸的是,CPU已经达到了性能瓶颈。当前,云计算面临的基本矛盾是:CPU的性能,越来越无法满足上层软件的需要。CPU性能瓶颈的原因主要如下:

  • CPU的微架构已经非常成熟,不考虑半导体工艺及封装技术进步以及多核的情况,仅靠提升单核CPU性能在多年前就已经非常困难;

  • 在半导体行业发展前期,工艺进步是提升CPU和芯片性能的决定性因素,但随着工艺进入10nm以下,越来越逼近半导体工艺的物理极限,工艺进步带来的性能提升在急剧减少;

  • 登纳德缩放比例定律表明,随着工艺进步,单位面积所能容纳的晶体管越多,单位面积的功耗也就越大,功耗会限制晶体管数量的进一步增加;

  • 受限于连接CPU核的总线效率、芯片面积及功耗等,CPU核集成数量的提升空间也在逐渐缩小。

总而言之,受边际效应的影响,即使投入很多的晶体管资源和付出很多的设计代价,努力的提升CPU的性能,但收效依然甚微。

DSA

作为计算机体系结构领域的泰山北斗,John Hennessy与David Patterson在获得2017年图灵奖时的获奖演说中指出:“未来十年,将是计算机体系结构的黄金年代”。针对计算机性能瓶颈,两人给出的解决方案是DSA(Domain Specific Architecture,特定领域架构)。DSA是一种以硬件处理为中心的解决方案,可针对特定应用场景定制处理引擎甚至芯片,支持部分软件可编程。DSA与ASIC(Application Specific Integrated Circuit,专用集成电路)在同等晶体管资源下性能接近,两者最大的不同在于是否可软件编程。ASIC由于其功能确定,软件只能通过一些简单的配置控制硬件运行,其功能比较单一。而DSA则支持一些可编程能力,使得其功能覆盖的领域范围相比ASIC要大很多。DSA本质上和ASIC一样,都是一种加速器,可以实现非常好的性能。但与通用CPU执行应用程序相比,DSA只会加速某些特定领域的应用程序。例如:用于深度学习的神经网络处理器以及用于SDN(Software Defined Network,软件定义网络)的网络可编程处理器。那么,DSA会是云计算未来的算力解决方案吗?

在云计算场景下,软件和硬件的问题变得更加复杂。云计算不仅仅需要各个层次的虚拟化技术来共享物理服务器,还需要管理物理服务器切分出来的虚拟的服务器、容器、函数等软件实体,以此来服务成千上万的用户。云计算需要提供基于虚拟网络技术来进行租户隔离,为巨量的数据提供安全的存储服务等,还需要为各种用户性能敏感的应用(如大数据分析、视频图像处理、机器学习/机器学习等,以及元宇宙等综合应用)提供尽可能通用的加速。而最大的挑战在于,需要把多种多样的功能优化融合到一整套软硬件平台方案中。

在CPU性能不满足要求的情况下,DSA提供了比传统ASIC更多的灵活性,但依然难以担当数据中心主力计算平台的重任。主要原因是:

  • DSA的灵活性具有一定局限。不同用户的场景需求有很大的差别,即使是同一个用户,其场景的应用逻辑和算法仍在快速的迭代。而DSA芯片从设计要落地需要2-3年时间,并且芯片的生命周期大约需要3-5年。这5-8年这么长的周期里,如何支撑众多客户的应用以及众多客户应用的长期迭代。

  • DSA因为其定制性而难以大规模落地。因为DSA面对特定场景,因为不同用户的应用差别,因为用户的应用迭代,这些原因使得DSA芯片所能覆盖的场景越来越少。覆盖的场景少,这就意味着DSA芯片难以大规模量产落地。

  • DSA的通用性不够。数据中心数以万计的服务器数量,需要尽可能通用的服务器,才能确保服务器快速灵活的应用于各种场景。即使是加速服务器,也需要尽可能通用的加速板卡,来提升服务器的通用性。而DSA约束了这种通用性,使得加载了DSA板卡的服务器只能局限于特定领域。

  • 站在系统的角度,DSA解决特定问题A,但如果有A、B、C等多个问题同时需要解决,多个DSA如何共存?是否需要重新设计一款芯片解决所有问题?这颗芯片的性能如何?成本如何?通用性和灵活性又如何去解决?

芯片定制

我们需要为云计算场景提供一个“宏架构”,统筹各种系统的硬件加速和任务卸载,并且能够为用户提供功能强大且简洁的运行环境,让用户专注于自身应用的创新。然而:

  • 一方面,芯片公司距离市场和应用场景较远。虽然其对芯片级微观系统理解非常深入,但对宏观的互联网系统则缺乏深层次的敏感度,对新的热点方向布局有点“闭门造车”,很多高精尖技术难以落地。

  • 另一方面,互联网公司虽然距离用户较近,有宏观大系统的视角,但缺乏芯片及相关硬件技术储备,对芯片的理解比较肤浅,难以驾驭超大规模芯片的复杂设计,局限于一些“隔靴搔痒”的硬件浅层优化。

为了根本性的解决自身面临的底层软硬件的挑战,互联网公司“不得不”加大投入,通过自研或者与芯片公司合作的方式,期望能够更深层次的融合软件和硬件的特点,研发符合互联网场景的新的芯片及硬件产品,以此支撑更加复杂、更加规模庞大、更加自动化管理、更加智能化的互联网基础设施和应用系统。

这个趋势当前还处于“八仙过海,各显神通”的阶段,各个公司给出的设计方案各不相同甚至大相径庭。在尝试的过程中,也遇到了一些问题:

  • 由于跟应用场景深度结合,导致硬件和软件紧密耦合,随着业务快速发展,受限于软硬件的迭代周期差距,硬件设计变得“疲于奔命”,却依然赶不上软件的需求。

  • 并且,与应用场景深度结合,也导致芯片的覆盖面变窄,一直难以形成规模化优势。

云计算场景的芯片及硬件定制,面临各种各样的问题。我们有必要通过体系结构层面深度的理解、分析和思考,将这些新的技术和平台进行系统性的梳理和整合重构,逐步演进成能够满足未来发展需求的通用的云计算架构解决方案。

软硬件融合

最后,我们简单总结一下。软件应用层出不穷,两年左右一个新的热点,已经存在的热点技术依然在快速的演进。而硬件越来越复杂:从工艺(2D)的持续进步,到多层堆叠(3D)技术发展,以及基于不同工艺Chiplet(4D)的互联。芯片的规模越来越大,设计越来越复杂,系统越来越难以驾驭,这使得芯片的一次性成本及研发风险都越来越高。CPU性能瓶颈,但运行于CPU上的工作负载数量和单个负载的算力消耗仍在增加。与此同时,ASIC/DSA的灵活性不够,难以满足应用的多样和变化,芯片无法大规模落地。

软件迭代越来越快,硬件迭代却越来越慢。软硬件之间的鸿沟越来越大。芯片的高投入高风险,制约着软件的进一步快速发展。要满足上层应用越来越苛刻的要求,离不开体系结构的创新发展。如何使得整个软硬件架构能够拥有一个较长的生命周期,并且在整个生命周期里都能很好的支撑应用发展,是一个需要全面并且深入思考的问题。

在这本书中,我们提出了全新的设计理念和方法——软硬件融合,让芯片变得更加灵活、弹性、可扩展,并且兼顾软件的灵活性和硬件的高性能,以此来弥补硬件和软件之间的巨大鸿沟。并且,在确保满足上层应用需要的同时,同时确保设计方案的大范围落地。