编者按
跟很多朋友交流,当提到软硬件融合的时候,他们会这么说:“软硬件融合,难道不是显而易见吗?我感觉在二三十年前就已经有这个概念了。”在他们的想法里,其实:软硬件融合等同于软硬件协同,甚至等同于软硬件结合。他们混淆了软硬件结合、软硬件协同和软硬件融合的概念。
今天这篇文章,就跟大家详细介绍一下软硬件融合的概念和内涵,以及软硬件融合和软硬件协同、软硬件结合之间的区别和联系。
1、背景知识:软硬件协同的发展
传统的系统设计,软硬件划分不够仔细,软硬件是紧耦合的,相互掣肘。这即是我们经常说的“软硬件结合”的设计思路。在系统规模较小的时候,遇到的问题不多,即使遇到问题,调整的代价也不高,可以承受。
但随着系统的规模逐渐扩大,软硬件结合的设计方法开始暴露问题:
硬件/软件划分在还未充分理解系统的情况下进行,很容易产生设计错误;
软硬件划分的设计错误,会对系统产生巨大的负面影响;
而受开发周期和纠正代价的影响,难以纠正在软硬件划分阶段的错误。
系统规模逐步扩大,量变引起质变,传统的软硬件结合设计的问题逐渐凸显。需要升级设计方法论,需要从软硬件结合,走向软硬件协同。
软硬件协同是1990s提出的概念,强调在系统划分之前,需要深刻的理解系统,并且经过非常仔细的系统分析和架构映射,慎重而准确的进行系统的软硬件划分。
软硬件划分是为了软硬件协同,因此软硬件协同设计的关键是在划分之前,而不是在划分之后。划分之前,深度思考软硬件工作划分的准确,确保“接口”清晰、高效,确保软硬件充分地协同。划分(解耦)之后,没有了相互掣肘,软硬件都可以充分创新,实现更加强大的功能/性能。
传统的软硬件结合设计,适合于小系统;而软硬件协同设计,适合于大系统。软硬件协同,是用于大系统的、统一的设计方法论。软硬件协同可以充分利用已有软硬件资源,使得效率最大化,缩短产品上市时间。
2、软硬件融合的根基
2.1 软硬件划分,暨处理器类型划分
世间万物由基本粒子组成,复杂处理由基本计算组成。软硬件划分指的是,软件和硬件通过一定的“接口”解耦,而指令(集)则是软件和硬件的“接口”。指令的复杂度(计算粒度或密度)决定了系统的软硬件解耦程度。
ISA(指令集架构)之下,CPU、GPU等各种处理器是硬件;ISA之上,各种程序、数据集、文件等是软件。
按照指令的复杂度,典型的处理器平台大致分为CPU、协处理器、GPU、FPGA、DSA、ASIC。从左往右,单位计算越来越复杂。性能越来越好,而灵活性越来越低。
CPU、GPU、DSA等各种类型的处理器,本质上是在不同层次的软硬件解耦基础上的软硬件协同。
2.2 分层分块的系统
系统由分层分块的各个组件,即工作任务(Workloads),有机组成。整个系统,是一个分层的体系:每一层都建立在下面一层的基础之上,每一层再通过特定的接口向上一层提供服务;同一层中,模块也可以通过接口向其他模块提供服务。
多个小系统组成大系统,多个大系统再组成宏系统;反过来,宏系统可以分解成多个大系统,每个大系统还可以再分解成多个小系统。
3、软硬件融合
3.1 首先,软硬件融合是一种设计理念
CPU、GPU等标准化的处理器已经成为我们主流的计算平台,也已经拥有了非常庞大的生态。在这些软硬件标准化解耦的平台上,芯片工程师仅需要关注芯片的设计实现,软件工程师仅需要关注软件开发。大家并行不悖的各种努力工作,平台“长年不变”,是一种非常舒服但又不可能的理想的状态。
事物发展不会停滞。CPU已经存在了50多年,性能早已见顶;GPU也有20多年的历史,性能增长也相当缓慢。大模型应用通常需要上万张GPU加速卡,据说GPT5需要5万张GPU卡。上层业务应用日新月异,已有的硬件平台已经无法满足我们的需要。
是时候打破已有的软硬件界限了!
没有条条框框的限制,回到系统的本源,重新思考系统的设计,重新构建新的更复杂的软硬件协同。这就是我们所强调的软硬件融合!
3.2 从软硬件结合、软硬件协同到软硬件融合
软硬件协同是上世纪90年代的产物,到现在已经有了30年左右的时间。上层的业务系统早已经翻天地覆,系统规模增加了成百上千倍,很难对如此复杂的系统进行准确的软硬件划分。
于是,软硬件融合应运而生。
我们把软硬件结合面向的系统称之为小系统,把软硬件协同面向的系统称之为大系统,那么软硬件融合则面向宏系统。
宏系统可以拆分成系统,每个系统需要软硬件协同,并且各个系统间还需要再协同,众多的软硬件协同组成的新的软硬件交互机制,即为软硬件融合。
软硬件协同,面向单个系统的计算场景;软硬件融合,面向多个系统混合的复杂计算场景。因此,软硬件融合面向的系统规模,通常是软硬件协同面向的系统规模的10+倍。
从软硬件协同到软硬件融合:软硬件协同,是单系统软硬件设计的方法学;软硬件融合,是多系统复杂计算软硬件设计的方法学。
3.3 软硬件融合的内涵
如果我们把工作任务映射到一个或多个处理引擎:
定义一个一维的坐标系:在这个坐标系里,CPU是100%的软件,ASIC是100%的硬件。其他处理器引擎介于两者之间,是不同比例软硬件的混合态。
动态均衡+极限拉扯:根据任务的特点,把之映射到最合适的处理器引擎。类似拔河一样动态的、极限的拉扯到极致,而不是简单的天平一般的平衡。
工作任务处理器引擎的动态性:工作任务最合适的处理引擎,并非一成不变,而是随着系统发展有可能下沉(Offload)/上浮(Onload)。
需要注意的是,这里的基于软硬件引擎的工作任务分层,跟系统工作任务的分层是不同的概念。
软硬件融合不改变系统层次结构和组件间交互关系,但打破传统软硬件的界限,系统的、动态的重构软硬件划分/协同,达到整体最优。
在传统软硬件的系统里,分层是非常清晰的:下层硬件上层软件。软硬件融合的分层分块,每个任务都是不同层次软硬件解耦基础上的再协同;并且,在不同工作任务的软硬件协同基础上,再实现工作任务之间的协同。
从全局看,整个系统呈现出:软件中有硬件,硬件中有软件,软硬件融合成一个有机的整体。
3.4 软硬件融合的趋势
受限于目前:
一方面,业务对算力的强劲需求;
另一方面,CPU、GPU等传统的灵活型的处理器性能逐渐瓶颈;
此外,量子等颠覆性新技术进展缓慢,短期内芯片底层工艺不太可能颠覆式创新。
因此,在未来一定时期内,软硬件融合的主要趋势,是工作任务逐渐从软件向硬件卸载。
哪些工作任务适合卸载?“无规模,不卸载(Offload) ”,超大的规模是工作任务卸载的前提。因此,我们可以总结适合卸载的工作任务的两个基本特征:(1)性能敏感,占据较多CPU资源;(2)广泛部署,运行于众多计算设备。
宏观的看,分层的系统,越上层越灵活软件成分越多,越下层越固定硬件成分越多;与此同时,随着系统规模越来越大,复杂分层的系统,其“二八定律”的特征越发明显。于是,许多底层的工作任务逐渐稳定并且逐步卸载到硬件(被动趋势)。
此外,通过软硬件融合的架构设计,可以使得“硬件”更加灵活,功能也更加强大,从而更多的层次功能加速向“硬件”卸载(主动抢占)。
4、软硬件融合总结
软硬件融合,既是理论和理念,也是方法和解决方案。
软硬件融合系统中的每一个工作任务,都是在软硬件均衡/解耦基础上的再协同。软硬件融合系统的每个工作任务之间的连接(软件之间、软硬件之间以及硬件之间的连接)和调用均具有极致的性能和灵活性。软硬件融合系统,能够兼顾软件的灵活性和硬件的高性能,实现既要又要。
软硬件融合落地为CPU、GPU、DSA等多种处理引擎充分协同的异构融合计算。
软硬件融合承上启下,从产品定义和系统架构开始,逐步拓展到整个系统栈。
软硬件融合的必要性和必然性:
理论根基:①CPU到ASIC的不同层次的软硬件划分,②系统的分层分块。
落地条件:③“二八规律”广泛存在;④超大规模的计算。
驱动力量:⑤算力需求数量级提升,⑥先进工艺和封装支撑超大规模的芯片。
软硬件融合的意义:
让硬件更加灵活、弹性、可扩展,弥补硬件和软件之间的鸿沟;
解决芯片一次性成本过高导致的设计风险;
等等。