物联网、大数据以及人工智能等新兴技术,推动着云计算持续快速发展,底层硬件越来越无法满足上层软件的发展和迭代。本书通过探寻软硬件的技术本质,寻找能够结合软件灵活性和硬件高效性的解决方法。帮助有软件背景的读者更深刻地认识硬件,加深对软硬件之间联系的理解,并且更好地驾驭硬件;同时也帮助有硬件背景的读者,有一个更全面的视角,更加宏观地看待问题,理解需求、产品、系统、架构等多方面问题的权衡。
本书共9章内容:第1章介绍了云计算面临的底层技术挑战,接着第2、3章介绍了软硬件相关的概念和计算机基础知识,并引出了软硬件融合的概念。第4~7章分别介绍了软硬件融合的四类技术:软硬件接口、算法加速和任务卸载、虚拟化的硬件加速、异构计算。第8章介绍应用这些技术的综合案例。第9章则是具体实现方面的思考。
本书立意新颖,结合业界最新案例,内容从浅入深,并且展望未来。帮助广大互联网及IT行业的软硬件工程师,更好地理解软件、硬件以及软硬件之间的内在联系,也可以作为计算机相关专业本科高年级以及研究生的技术拓展读物。
第一本软硬件融合著作,让读者更深刻地认识硬件,更理解软硬件之间的联系,提高工作效率
推荐序1
从20 世纪70 年代开始使用大规模集成电路计算机以来,计算机系统的规模化发展速度呈指
数级增长,并且极大地改变了我们的生活。在这种加速发展的背后,有两个定律发挥着巨大的作
用:一个是英特尔联合创始人戈登·摩尔在1965 年提出的摩尔定律,该定律指出集成电路的集成
度每隔18~24 个月就会翻一番;另一个是有“小型机之父”之称的戈登·贝尔在1972 年提出的
贝尔定律,该定律预测每10 年就会产生新一代计算设备,并且设备数量会增加10 倍。我从20 世
纪90 年代初进入计算机领域后,亲身体验到了计算机从286 到586 的快速更新换代,但并没有真
正发现这种指数式发展的威力。在我进入计算机领域之后的20 年里,手机移动互联网和智能物联
网依次登场,将世界带入了万物互联的时代,预计到2025 年将有500 亿个设备连入互联网。
计算设备的多样化和算力成本的迅速下降让硬件和软件的关系发生了深刻的变化。当计算
硬件单一、计算力昂贵的时候,软件必须以硬件为中心进行设计和折中。当计算硬件有多种选
择、算力成本足够低的时候,就可以按照软件的需求来设计甚至定制硬件。这样,我们就进入
了一个软硬件融合的时代,在整个计算机系统中,软硬件的分层可以根据需求灵活变化,业务
处理流程中的计算、存储、传输也涉及软件和加速硬件的多重交互。未来10 年,摩尔定律还将
继续发挥效用,先进的3D 晶体管设计和3D 封装技术使一个集成电路内部可以包含多种计算架
构,以更低的成本提供更强大的算力。2020 年,英特尔已经可以在10nm 的工艺节点上稳定地
使用SuperFin 晶体管技术和Foveros 3D 封装技术,并且有清晰的技术路线图继续向7nm、5nm
推进。此外,组合多种集成电路架构设计(CPU、GPU、FPGA、ASIC 和神经拟态计算等)的
异构计算快速发展,但它在提供多种选项的同时显著增加了计算机系统架构设计的复杂度和软
件优化的难度。
黄朝波老师编著的这本书非常及时地给读者揭示了软硬件融合的趋势,并且从多个角度讲解
了实现软硬件融合的技术。黄朝波老师的学习和工作经历很好地覆盖了集成电路设计、软件开发
和云计算系统架构等,这使得本书的内容很全面,并且提供了硬件基础知识,适合读者迅速扩大
知识面。
预计2020 年之后的下一个10 年,万物都将是计算机。如今,得益于5G 移动通信技术和人工
智能技术的广泛应用,智能互联计算已经成为主流。随着近年来智能手机、智能城市、智能制造
和自动驾驶等领域相关技术的不断进步,以视觉、声音、激光雷达、毫米波雷达为代表的多种传
感器正在加速整个世界的数字化进程,需要处理的数据量正在极速增长。同时,进入互联网和计
算中心的数据从量变到质变,大量描述自然界的非人工数据需要用人工智能算法来处理,并且通
常有实时性要求。数据的量变和质变带来了对智能边缘计算的强烈需求,也催生了云—边—端融
合的新计算架构。如果能把握好这个趋势,就能顺势而上,充分享受智能互联计算的红利;否则,
就有可能被淘汰。
这是一个技术发展日新月异的时代:一方面,软件定义一切;另一方面,硬件加速一切。同
时,网络无处不在。本书是站在2020 年这个时间节点上的总结与展望,我期待黄朝波老师的下一
本著作继续带着我们驾驭软硬件融合的技术大潮。
——英特尔中国研究院院长 宋继强
2020 年12 月20 日写于北京
推荐序2
软件还是硬件,这是一个问题。软件的灵活性和硬件的高性能都是我们希望得到的,但是,
考虑到实现代价,我们必须在软件实现和硬件实现之间进行折中选择。
传统上,软件和硬件有一个相对明晰的区分:但凡通用处理器能够高效处理的功能,都用软
件实现(并在通用处理器硬件上执行);但凡通用处理器不能高效处理的功能,都用专用硬件实现,
如各种基于ASIC 或FPGA 的硬件加速器。
但是,随着需求的多样化和系统的复杂化,尤其是云计算环境的出现,我们需要将不同功能
的软件和不同种类的硬件集成起来,使它们协同工作。在这种情况下,采用软件还是硬件,同时
采用哪种软件或硬件来进行实现,就变得异常复杂。而分层抽象则是一种解决复杂问题行之有效
的方法。
黄朝波老师长期从事云计算架构相关工作,并且颇有心得,他从实际云计算工作需求出发,
尝试采用软硬件多级分层抽象和接口标准化的方法来解决软硬件协同工作的问题,这个问题体现
在如下两个方面。
(1)多级分层模型。随着系统变得越来越复杂,我们已经不能简单地采用软件和硬件两个层
次来对复杂系统进行分层,而应该对传统的软件层和硬件层进行进一步分层。目前,软件多级分
层的思想已经被广泛接受,而硬件多级分层的驱动力来自日益多样性的硬件(如不同类型的处理
器和面向不同目的的加速器)。为了能够从全系统的角度更好地进行硬件资源的分配与调度,我们
应该进一步对不同的硬件进行分层抽象。?
(2)接口标准化。软件接口标准化可以带来互操作性方面的好处,而某类硬件接口的标准化
(如硬件总线协议)也可以带来互操作性方面的极大便利。如何基于多样性硬件的分层抽象来定义
层间的标准化接口以支持高效的互操作性,是一个值得深入并持续探讨的问题。硬件接口标准化
目前已经有了一些趋势,如RISC-V。RISC-V 尝试定义一套标准化的ISA,以使不同硬件厂商的
处理器硬件和不同软件厂商的操作系统、编译器及应用软件都能实现互操作,从而摆脱二进制翻
译和虚拟机等复杂且不高效的互操作机制。
随着技术的进步,传统意义上的硬件加速器可能会逐渐成为标准化的功能,从而进入通用处
理领域(被通用处理器吸收,如向量和多媒体功能),采用软件实现。同时,随着需求的变化,传
统意义上可以由软件实现的功能也会有更高的性能要求,从而需要用专用硬件实现。软硬件的多
级分层抽象和接口标准化的另一个好处在于,我们可以在不影响其他层次的前提下,根据技术的
进步或需求的变化,自由地替换某一层次的具体实现方式。
本书系统地探讨了以上问题,并将相关思想实际应用于包含复杂软硬件的云计算系统,提出
了多级分层抽象的软硬件融合系统模型,对云计算的架构设计有着实际的指导意义。
——NVIDIA Principal Architect 蒋江
前言
互联网行业发展迅速,2010 年以来,随着物联网、云计算、大数据、人工智能等互联网技术
的快速发展,相关的产品和服务层出不穷,快速迭代。虽然软件技术日新月异,快速演进,但是
相应的硬件体系结构却没有本质的改变,比如,目前支撑云端系统运行的依然是以CPU 为核心的
通用服务器。
软硬件之间本质上的需求矛盾是CPU的性能越来越无法满足软件的发展需要,主要原因如下。
? CPU 的微架构已经非常成熟,不考虑工艺进步和多核技术,仅提升单核CPU 的性能在多
年前就已经非常困难。
? 在互联网行业初期,工艺进步是提升CPU 和芯片性能的主要手段,但随着半导体工艺突
破 10nm 以来,依靠工艺进步来提升CPU 和芯片性能的空间急剧缩小,摩尔定律逐渐走向
终结。
? 登纳德缩放比例定律表明,随着工艺进步,单位面积所能容纳的晶体管越多,单位面积的
功耗也会越大,功耗会限制晶体管数量的进一步增加。
? 受限于连接CPU 核的总线效率、芯片面积及功耗等,CPU 核集成数量的提升空间逐渐
缩小。
作为计算机体系结构领域的领军人物,David Patterson 与John Hennessy 在获得2017 年图灵奖
的演说中提到未来十年将是计算机体系结构的黄金十年,两人给出的解决方案是DSA(Domain
Specific Architecture,特定领域架构)。DSA 是一种以硬件为中心的解决方案,可针对特定应用场
景定制芯片,支持软件可编程,并且通常都是图灵完备的。从图灵完备的意义来看,DSA 与ASIC
(Application Specific Integrated Circuit,专用集成电路)不同,后者通常用于单一功能,软件代码
很少发生变化。DSA 也是一种加速器,具有很好的加速性能,与通用CPU 执行应用程序相比,
DSA 只能加速某些特定的应用程序。例如,用于深度学习的神经网络处理器及用于软件定义网络
(SDN)的处理器等。
在云计算场景下,软硬件融合问题变得更加复杂。云计算不仅需要虚拟化技术来共享物理
服务器,还需要管理物理服务器切分出来的虚拟服务器,以此服务成千上万的用户。云计算需
要提供基于虚拟网络技术的VPC 服务来进行租户隔离,为巨量的数据提供高可用的存储服务
等,还需要为各种用户性能敏感的业务(如大数据分析、视频图像处理、机器学习/深度学习
等)进行加速。云计算软硬件融合最大的挑战在于,需要把多种多样的功能融合到一整套软硬
件平台方案中。虽然DSA 提供了比传统ASIC 更多的灵活性,但它在云计算领域依然存在以
下问题。
? 与传统ASIC 一样,DSA 通常也要封装成一个具体的IC 芯片,从一个应用场景的系统算法
到IC 芯片量产需要2~3 年时间,而互联网的业务发展速度非常快,DSA 是否能够满足未
来2~3 年的软件需求?硬件的使用周期一般是3~5 年,在此期间,DSA 是否能支撑软件
的持续迭代?
? 从系统的角度来看,DSA 用于解决特定问题A,如果有A、B、C 等多个问题同时需要解
决,那么多个DSA 如何共存?成本如何?或者重新设计一种DSA 芯片解决所有问题?重
新设计的DSA 芯片的通用性和灵活性又如何?
? 云计算场景的DSA 方案通常选择基于经典的CPU+xPU 异构计算架构,而不选择图灵完备
的集成架构。CPU+xPU 异构计算架构把特定场景算法的加速放在xPU,通过CPU 的协调
处理来完成整体任务。CPU+xPU 异构计算架构可以让CPU 侧的软件大幅度降低CPU 资源
消耗,从而提升CPU 性能,但仍然需要CPU 的参与。
在云计算的场景下,我们希望为用户提供一个标准的业务环境,后台管理的工作任务数据面
和控制面都能够完整卸载。为了实现这些目标,我们就需要为云计算场景提供一个“宏架构”,统
筹各种系统的硬件加速和任务卸载,并且能够为用户提供功能强大且简单的运行环境,让用户专
注于自身业务的创新。
就互联网云计算而言,芯片公司距离市场和业务场景较远,虽然其对芯片级微观系统的理解
非常深入,但对宏观的互联网系统缺乏深层次的敏感度,对热点方向布局不重视,这就导致很多
高精尖技术难以落地。而传统的互联网公司虽然距离用户较近,有系统视角,但缺乏芯片及相关
硬件技术储备,对芯片的理解比较肤浅,局限于硬件的浅层优化,犹如隔靴搔痒。
基于上述问题,互联网公司纷纷通过自研或与芯片公司合作的方式,更深层次地融合软件和
硬件,研发符合互联网场景的新型芯片及硬件产品,以此支撑结构更加复杂、规模更加庞大、管
理更加自动化的智能化互联网基础设施和应用系统。这种趋势当前还处于“八仙过海,各显神通”
的阶段,有必要通过体系结构层面深度地理解、分析和思考,将这些新型技术和平台进行系统性
的梳理、整合、重构,逐步演进成能够满足未来发展需求的新型云计算体系结构。
互联网新技术的快速发展带来翻天覆地的变化,要解决新的上层业务场景需求问题,离不开
体系结构的创新发展。通常2~3 年会出现一个新的技术热点,系统迭代速度越来越快,体系结构
在系统快速迭代的节奏下,如何才能够拥有较长的生命周期,并且在整个生命周期都能很好地支
撑业务发展,是需要深入思考的问题。
本书主要介绍如何通过软硬件融合的创新来构建能够应对未来业务挑战的云计算体系结构,
核心理念是把软件的灵活性和硬件的高效性深度融合在一起。本书各章介绍的内容如下。
第1 章为云计算底层软硬件。
第2 章为软硬件融合综述。
第3 章为计算机体系结构基础。本章内容与后续章节的核心内容是密切相关的,是核心内容
的前导知识。
第4 章为软硬件接口。软硬件融合首先面对的就是软硬件接口,需要重点掌握如何实现高效
的软硬件数据交互。
第5 章为算法加速和任务卸载。算法加速即某个算法的硬件实现;任务卸载以算法加速为内
核,更加系统化、平台化,通常需要有快速构建特定任务卸载的基本软硬件框架。
第6 章为虚拟化硬件加速。虚拟化硬件加速的核心是高性能虚拟化硬件处理,以及如何兼顾
软件的灵活性和硬件的高效性。
第7 章为异构加速。异构计算架构适合云计算场景业务加速,有较多的成熟方案。
第8 章为云计算体系结构趋势。
第9 章为融合的系统。本章内容是对云计算数据中心体系结构的总结。
感谢我的家人,在本书的编写过程中,我占用了许多用于陪伴家人的时间,是她们的支持让
我有动力和毅力来完成本书的编写工作;感谢我所在公司的上级领导及同事,是公司提供了如此
好的平台,让我有机会去实现创新的想法,上级领导和同事们也为我提供了很多帮助和支持;感
谢我的大学老师和同学,毕业多年,老师依然关心我们这些学生的工作和生活,同学们的帮助也
促进我一直成长。
受限于个人知识背景和技术水平,也因为这个快速发展的行业和时代,本书难免存在不足。
集体的智慧是无穷的,希望大家提出意见和建议,我会不定期地修订、完善、更新本书,为大家
呈现一本拥有更高价值的图书。
黄朝波