编者按:今天这篇文章有给Intel做广告嫌疑,但我真的一分钱没收:)。软硬件融合逐步深化并体系化后,逐渐形成很多观点。比如超异构计算,比如开放生态,比如“软件定义一切,硬件加速一切”,比如完全可编程等等。当这些观点想去寻求共鸣的时候,发现Intel已经在做了很多相关的布局。看了之后,唯有点赞。

 

0 先来看看软硬件融合的观点

 

 

上图节选自软硬件融合幻灯片。

 

1、Intel超异构计算拼图

 

1.1 Intel提出超异构概念

 

 

2019年3月27日,英特尔中国研究院院长宋继强在2019新智元AI技术峰会上,针对未来多元化的计算需求问题,做了题为《AI计算迈入超异构时代》的精彩演讲。

 

 

Intel认为超异构计算拥有三大要素:

 

超异构计算首先要有多种架构的芯片。超异构,异构的就是不同种类、不同功能的芯片;

其次,在多个节点上面都需要部署已经生产好的芯片;

最后,需要统一的异构计算软件来开发人员更好的对其进行利用。

 

 

Intel进一步提出要用六个不同的技术支柱来应对未来数据的多样化、数据量的爆发式增长,还有处理方式的多样性。这六大技术支柱就是:制程和封装、架构、内存和存储、互连、安全、软件。它们是互相相关、紧密耦合的。Intel认为:这六大技术支柱会带来指数级的创新,也是英特尔未来十年甚至未来五十年的主要驱动力。

 

1.2 XPU和OneAPI

 

 

数据爆炸时代来临,使用单一架构来处理数据的时代已经过去。爆炸的数据规模:个人互联网用户每天产生约1GB数据,智能汽车每天约50GB,智能医院每天约3TB数据,智慧城市每天约50PB数据。数据的数量和多样性令人震惊,而且数据处理的地点、时间和方式也在迅速变化。无论工作任务是在边缘还是在云中,不管是人工智能工作任务还是存储工作任务,需要有正确的架构和软件来充分利用这些特点。Intel在努力为开发人员提供硬件架构和软件的正确组合,以便为他们的特定用例构建最佳解决方案:

 

Intel的XPU 策略和开放的、基于标准的跨架构编程模型:oneAPI,两者共同协作来做到这点。

 

什么是XPU?它不是一个新的处理器或产品,而是一个架构组合,包括CPU、GPU、FPGA 和其他加速器。

 

什么是OneAPI?OneAPI是Intel构建的一套开源的跨平台编程框架,底层可以运行CPU、GPU、FPGA或其他DSA加速器,通过OneAPI为应用提供一致性的编程接口,使得应用能够轻松实现跨平台复用。

 

以最低的功耗处理最多的数据一直是大多数计算架构的目标。近年来,还有一个重要的考虑因素是时间。数据的价值转瞬即逝,如果没有在正确的时间处理这些数据,它就会变得毫无价值。开发人员在硬件中寻找一些关键特性,并且架构师努力提供这些特性。它们具有高性能、低延迟和低功耗。

 

不幸的是,数据的多样性,使得不再有一种万能的架构。专业架构表明,它们可以根据需要优化性能、功率或延迟,但为游戏GPU获得适当的平衡与电池供电的安全摄像头所需的平衡大不相同。随着数据类型和工作任务的多样化,架构也在不断发展。创建针对更广泛工作负载的广泛架构的能力是英特尔 XPU 战略的精髓。为正确的应用程序提供正确的架构对于客户的成功至关重要。CPU及其通用计算能力的广泛适用性是XPU战略的核心。

 

Intel还提供已经成功的GPU、FPGA、VPU和其他架构类型阵容,以满足当今和未来存在的大量不同工作负载的处理需求。不过,拥有多种架构只是其中一部分。更大的挑战是快速确定哪种架构最适合所需的工作负载。评估工作负载的最佳方式是在不同架构上尝试该工作负载并进行比较,但架构之间的迁移过程可能非常耗时且容易出错。

 

oneAPI,是一个跨行业、开放、基于标准的统一编程模型。使用 oneAPI,开发人员可以自由选择最佳架构来满足他们的工作负载/应用程序需求,同时使用跨多个架构的单一代码库。这使开发人员能够最大限度地提高跨架构性能并最大限度地降低开发成本,同时还让他们能够自由地在不同的 XPU 架构中公开和利用尖端功能。

 

1.3 Intel的IPU/IPDK

 

 

Intel 芯片版本的IPU代号为Mount Evans。关键特征:16核ARM N1,P4可编程网络包处理DSA,RDMA/RoCEv2。

 

 

IPDK(Infrastructure Programmer Development kit,基础设施编程开发套件)是一个社区驱动的、目标无关的用于基础设施层的编程框架,IPDK可以运行在CPU、IPU、DPU或交换机。IPDK的标准接口:

 

基础设施应用接口:用于工作任务应用的设备&服务,把平台的能力提供给管理。

 

目标抽象接口:把硬件的能力提供给IPDK。

 

IPDK三个特点:

开放社区,具有标准接口的开源项目;

目标无关,可以运行在任何CPU、IPU、DPU或交换机上;

用户场景驱动,用户可以通过可编程能力实现业务的自适应性。

 

1.4 开放可编程生态项目OPI

 

开放可编程基础设施项目OPI(Open Programmable Infrastructure Project)的目标是为基于 DPU/IPU 类技术的下一代架构和框架培育一个社区驱动的基于标准的开放生态系统。2022年3月15-16日,由Redhat,Intel和F5发起的Open Programmable Infrastructure Event,邀请了产业界的相关公司共同探讨PU/DPU软件生态建设。

 

大会的主要参与者可以分为几类:芯片厂商Intel, Marvell,服务器厂商Dell,云服务系统软件厂商Red Hat, VMware,网络设备厂商Cisco, F5,混合云厂商IBM,网络服务厂商Meta(Facebook),网络测试仪器厂商Spirent, Keysight(IXIA),通信设备商Ericsson,分布式存储初创公司Lightbits, MLops初创公司Nutanix。但作为IPU/DPU的主要目标客户,公有云服务厂商没有一家在大会上露面。可能因为公有云厂商在忙着构建自己的软件协议栈,对于构建统一的IPU/DPU软件生态兴趣不大。NVIDIA应该是想在自家的DPU上推广DOCA软件平台,暂时还没有参与OPI项目。

 

2 Intel超异构相关技术分析

 

2.1 系统的分层分类

 

 

复杂系统,是由分层分块的一个个工作任务组成的。

 

 

系统的工作任务,可以大体上分为三类:

 

基础设施层,任务相对确定,较适合DSA、ASIC级别的处理引擎处理;

应用层加速部分,应用的业务逻辑和算法变化较大,较适合GPU、FPGA等具有一定弹性的处理引擎;

应用不可加速部分,兜底,所有不适合加速的或者没有合适加速引擎的工作任务,都放到CPU完成。

 

2.2 基础设施+应用加速,全领域可编程框架

 

 

2.3 数据中心完全可编程,全领域可编程框架站到舞台中央

 

 

上图是Intel对整个未来网络演进趋势的看法:从云数据中心、核心网、接入网、边缘计算甚至终端设备,都会演化成完全“软件定义的可编程网络”。

 

 

当然,只是可编程的网络还不够。对数量众多的计算节点来说,对用户来说,完全可编程的计算(网络、存储等其他各类处理都可以归结到计算)才是更本质的,数据中心逐渐进入完全可编程时代。

 

3 为什么说是一盘大棋?

 

3.1 未来,所有计算架构归一到超异构计算

 

 

CPU、GPU和DPU是一个协同的关系;AI处理器通常归属到应用加速,可以看做是和GPU在同一个位置。但是,这并不是说,一定要三个独立的芯片来协同工作。现在Chiplet技术流行可以做更大的芯片,并且大部分场景还是轻量一些的场景,把CPU、GPU和DPU整合成一颗芯片是必然发生的事情。

 

 

CPU、GPU和DPU的整合会是趋势,但如果只是简单的把三者拼到一起,那还不够。还需要一个全新的架构来整合各类处理引擎。使其能够充分协同起来,更加高效的工作。所以,CPU、GPU和DPU未来的界限会模糊,形成新的超异构处理器。

 

3.2 Intel已经基本实现各类引擎框架和跨引擎框架全覆盖

 

如2,2节的分析,Intel已经实现了各类引擎和对应框架的全覆盖:

各类处理器引擎,如CPU、GPU、FPGA、各类DSA引擎;

整合芯片:IPU,整合了CPU和基础设施层的各类DSA,只需要再整合FPGA和GPU,即可完成拼图。

基础设施框架IPDK;

应用加速框架OneAPI?

跨平台框架OneAPI;

 

或许就在不久的未来,等这些拼图逐渐成熟之后,就会整合到一个平台和生态:统一的超异构处理芯片和统一的超异构开发框架。

 

3.3 超异构计算必须开源开放

 

 

各种处理器引擎的金字塔和倒金字塔分层特征:

 

CPU,基础指令构成,只有CPU一个子类型。最好的灵活可编程性,可以用在任何领域,但性能相对最低。

 

Co-processor,基于CPU的扩展指令集的运行引擎,如Intel的AVX、AMX。

 

GPU,小处理器众核并行,NP、Graphcore IPU等都在这一层级。较好的软件编程能力,覆盖领域和场景较多,但性能居中无法极致。

 

FPGA,硬件可编程,需要通过逻辑或软件编程。

 

DSA,具有一定程度上的可编程,覆盖的领域和场景比ASIC要大,但仍需要很多面向不同领域的DSA。

 

ASIC,理论上最复杂的“指令”,单个ASIC覆盖的场景非常小,因此存在数量众多的各类ASIC引擎。

 

 

超异构计算必须要开源开放的生态,原因如下:

 

从CPU到ASIC,越来越多的不同领域/场景的处理引擎。即使同领域/场景,不同厂家的实现架构也会不同。

 

领域/场景越来越碎片化,构建生态越来越困难。需要从硬件定义软件,逐步转向软件定义硬件(符合“软件定义一切”大趋势)。

 

软件原生支持硬件加速。软件设计控制平面和计算平面分离,把计算平面下沉到硬件。软件定义一切,硬件加速一切。

 

当异构处理器的引擎架构越来越多,(不同厂家)芯片数量越来越多,所处的环境(云网边端)也越来越多,需要构建高效的、标准的、开放的生态体系。

 

3.4 得框架者得天下

 

 

学过计算机基础知识的人都知道,系统基本分三层:硬件、系统软件、应用软件。最核心的系统软件必然是操作系统,但涉及到在硬件运行的软件开发,最核心的还是框架。框架包括编译器、各类开发库,参考设计等。可以说,框架是承上启下,连接硬件和最终具体的应用。一个得到广泛认可的、开源开放的框架,是超异构能否成功的关键。谁主导开源框架,谁就占据主动。Intel从IPU开始,构建了开放的IPDK框架,并发起了OPI联盟。在一点点构建其超异构计算帝国的宏伟大厦。不谋全局者,不足谋一域;不谋万世者,不足谋一时。Intel的超级战略布局,无出其右。

 

参考文献:

https://medium.com/intel-tech/the-evolution-of-xpu-and-the-critical-role-of-software-c46970dfcbe9

芯片史最成功转型!英特尔靠「六大技术支柱」,超异构计算解锁未来,https://mp.weixin.qq.com/s/IGwoAzG4eRo3rWMePz9r_g

IPU/DPU 软件生态建设(上),https://mp.weixin.qq.com/s/9B-vdHk_l_ApYzorKPLLUA

IPU/DPU 软件生态建设(下),https://mp.weixin.qq.com/s/vfZ_HiIYxI5tlX2b3Y3KUA

IPDK:可编程基础设施时代的开源开发框架(附PPT下载),https://mp.weixin.qq.com/s/GAIrZ-0P2zZT_M_EF54JuQ

https://ipdk.io/documentation/IPDK-io%20-%20Recipes.pdf