音视频与CPU架构
超视频时代音视频架构建设与演进
如果说,在以音视频为载体传输信息、进行交互的技术领域,始终飘着一朵“乌云”,那么这朵“乌云”的名字,很可能既不是低延时,也不是高可靠,而是不断变化的应用场景。
从 Web 2.0 到移动端基础设施全面建成,完成了文字信息的全面数字化;而从 2016 “直播元年”至今,图像、语音信息的全面数字化则仍在推进中。最简单的例证是,对于早期的流媒体直播而言,1080P 是完全可接受的高清直播;但对于今天的流媒体而言,在冬奥会这样的直播场景下,8k 可能是个刚性需求,相比于 1080P,像素数量增长 16 倍。
而且,今天的流媒体业务,对视频流的要求不仅停留在分辨率上,也表现在帧率上。以阿里文娱 2019 年底推出的“帧享”解决方案为例,将画面帧率推至 120 FPS,同时对动态渲染的要求也很高。过往人们总说,帧率超过 24 FPS,人眼就无法识别,因此高帧率没有实际意义。但高帧率是否能提升观看效果,与每帧信息量密切相关,近几年游戏开发技术的进步,以及以李安为代表的一众电影导演,已经彻底打破这一误解。
对于 RTC 来说,问题情境和对应的软件架构又截然不同。早期大家看赛事直播,20s 的延迟完全可以接受。但在 RTC 场景下,人与人的即时互动让使用者对延迟的忍耐度急剧降低,从 WebRTC 方案到自研传输协议,相关尝试从未停止。
当以为,所谓的场景问题,终于可以被抽象为有限的几个技术问题,并将延迟压入 100ms 以内,可靠性提升至 99.99%,新的场景又出现了。全景直播、VR 全球直播,云游戏……其中又以云游戏最为典型——云游戏简直是过去那些音视频场景性能要求的集大成者:有的游戏要求延时低至 50ms 以内;有的要求 FPS 60 以上;分辨率不消说,肯定是越高越好。同时云游戏场景夹杂着大量的动态渲染任务,无一不在消耗着服务器资源,增大着全链路的传输延时。
那么,如果从云游戏场景的性能要求出发,进而扩展至整个超视频时代的架构体系,该以怎样的思路来进行架构设计呢关注软件,可能不太行的通;硬件成为必须纳入考虑的一环。
以软件为中心并非最佳选择
要解释这个问题,必须重新回顾下常规的云游戏技术架构。下图主要参考自英特尔音视频白皮书、华为云游戏白皮书,并做了相应调整,基本与当前环境下,大部分云游戏架构的设计相符。
3D 游戏渲染画面
而更为复杂的游戏性能以及整体时延的控制,则对整个处理、传输链路提出了要求。仅以时延为例,要求在编码、计算、渲染、传输等任何一个环节的处理时间都控制在较低范围内。同样是在 3 – 4 年前,有业界专家分享,对 RPG 类云游戏的传输时延容忍度是 1000 ms,但事实证明,玩家并不能忍受长达 1s 的输入延迟。反观今日,无论是通过公有云 + GA 方案,还是通过自建实时传输 络方案,即便是传输普通音视频流的 RTC 服务也只能保证延时 100ms 以内,而云游戏的计算量和带宽需求数倍于普通音视频服务。
以上仅仅是冰山一角。对于架构设计而言,除了高性能、高可用、可扩展性三类设计目标外,成本也是必须要考虑的平衡点——需要 1000 台服务器的架构,和需要 100 台服务器的架构,压根不是一个概念。2010 年前后,云游戏基本不存在 C 端商业化可能,虽然整体时延和性能指标可以满足当时的要求,但代价是一台服务器只能服务一个玩家,单个玩家服务成本上万。云游戏“元老” Onlive 公司的失败,在当时非常能说明问题。
而到了 2020 年,行业硬件的整体性能提升后,一台服务器可支持 20 – 50 路并发,性能提升了几十倍。
那么,如果将硬件变成架构设计的核心考虑要素,会是什么样的呢致如下图所示(为了不让图示过于复杂,只保留了云游戏核心服务链路,以作代表)。
图一:基础设施层
英特尔 CPU 另外一个值得关注的特点,在于其配套软件层面,主要是 AVX-512 指令集。AVX-512 指令集发布于 2013 年,属于扩展指令集。老的指令集只支持一条指令操作一个数据,但随着场景需求的变化,单指令多数据操作成为必选项,AVX 系列逐渐成为主流。目前,AVX-512 指令集的主要使用意义在于使程序可同时执行 32 次双精度、64 次单精度浮点运算,或操作八个 64 位和十六个 32 位整数。理论上可以使浮点性能翻倍,整数计算性能增加约 33%,且目前只在 Skylake、 Ice Lake 等三代 CPU 上提供支持,因此也较为独特。
在视频编解码、 转码等流程中,因为应用程序需要执行大规模的整型和浮点计算,所以对 AVX-512 指令集的使用也相当关键。
而 GPU 方案在云游戏场景中,通常更加引人瞩目,英特尔服务器 GPU 是基于英特尔 Xe 架构的数据中心的第一款独立显卡处理单元。英特尔服务器 GPU 基于 23W 独立片上系统(SoC)设计,有 96 个独立执行单元、128 位宽流水线、8G 低功耗内存。
所谓片上系统 SoC,英文全称是 System on Chip,也就是系统级芯片,SoC 包括但不仅限于 CPU、GPU。就在今年,前 Mac 系统架构团队负责人、苹果 M1 芯片的“功臣” Jeff Wilcox 宣布离开苹果,担任英特尔院士(Intel Fellow)、设计工程事业群(Design Engineering Group)CTO,并负责客户端 SoC 架构设计,也在行业内引起了众多关注。
当然,只有 GPU 硬件本身是不够的,英特尔Media SDK 几乎是搭配 GPU 的必选项。英特尔Media SDK 提供的是高性能软件开发工具、库和基础设施,以便基于英特尔架构的硬件基础设施上创建、开发、调试、测试和部署企业级媒体解决方案。
其构成可参考下图:
在这张架构图中,横向是从源码流输入到分发的整个流程,期间包含了编码、分析等处理动作;而纵向则展示了要服务于这条音视频处理流程,需要搭配的硬件和软件体系。
OneAPI 作为异构算力编程模型,是桥接基础设施和上层负载的关键一层,这不必多言。而到了负载层,软件则分成了蓝色和紫色两个色块。蓝色代表直接开源软件,紫色则代表经过英特尔深度优化,再回馈(Upstream)给开源 区的开源软件。
在蓝色部分,OpenVino 是个很有意思的工具套件,围绕深度学习推理做了大量的性能优化,并且可以兼容 TensorFlow、Caffe、MXNet 和 Kaldi 等深度学习模型训练框架。当音视频体系需要加入 AI 技术栈以服务超分辨率等关键需求时,OpenVino 会起到关键作用。
紫色部分的 x.264/x.265 是一个典型。作为音视频行业最主流的编码标准,英特尔使其开源的主要贡献者,而且 AVX-512 指令集也专门围绕 x.264/x.265 做了优化和性能测试。
另一个值得关注的核心是编码器,横跨了蓝色区域和紫色区域,既有行业通用的 ffmpeg,也有英特尔自研的 SVT,二者同样引人关注。
关于编解码器的选型思考
在流媒体时代,著名开源多媒体框架 ffmpeg 是业界在做编解码处理时,绝对的参考对象。说白了,很多编解码器就是 ffmpeg 的深度定制版本。到了 RTC 时代,出于更加严苛的及时交互需求,自研编解码器尽管难度颇高,但也在研发能力过硬的企业中形成了不小的趋势。
可归根结底,在推进以上工作时,软件始终是思考的出发点,从业者们多少有些忽略对硬件的适配。
SVT 的全称是 Scalable Video Technology ,是开源项目 Open Visual Cloud 的重要组成部分,针对英特尔多个 CPU 进行了高度优化,因此在英特尔硬件体系上,性能表现非常突出。SVT 设计最朴素的初衷,是针对现代 CPU 的多个核进行利用率方面的提升,比如依仗硬件上的多核设计并行对多个帧同时处理,或对一张图像分块进而并行处理,大大加快处理速度,避免多核 CPU 空转。
后摩尔定律时代,单靠制程工艺的提升带来的性能受益已经十分有限,Dennard Scaling规律约束,芯片功耗急剧上升,晶体管成本不降反升;单核的性能已经趋近极限,多核架构的性能提升亦在放缓。AIoT时代来临,下游算力需求呈现多样化及碎片化,通用处理器难以应对。
以多核提升性能功耗比:多核处理器把多个处理器核集成到同一个芯片之上,每个单元的计算性能密度得以大幅提升。同时,原有的外围部件可以被多个CPU系统共享,可带来更高的通信带宽和更短的通信时延,多核处理器在并行性方面具有天然的优势,通过动态调节电压/频率、负载优化分布等,可有效降低功耗,提升性能。
以多线程提升总体性能:通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可以极小的硬件代价获得相当比例的总体性能和吞吐量提高。
微架构的改进
众多算数单元、逻辑单元、寄存器在三态总线和单项总线,以及各个控制线的连接下共同组成CPU微架构。不同的微架构设计,对CPU性能和效能的提升发挥着直观重要的作用。
微架构的升级,一般涉及到指令集拓展、硬件虚拟化、大内存、乱序执行等等一系列复杂的工作,还涉及到编译器、函数库等软件层次的修改,牵一发而动全身。
摩尔定律放缓
摩尔定律于上世纪60年代提出,直至2011年前,计算机元器件的小型化是提升处理性能的主要因素。2011年后,摩尔定律开始放缓,制硅工艺的改进将不再提供显著的性能提升。
“Tick-Tock”模式失效
自2007年开始,英特尔开始实施“Tick-Tock”发展模式,以两年为周期,在奇数年(Tick)推出新制成工艺,在偶数年(Tock)推出新架构的微处理器。
FPGA,从架构上来说,可以用来实现定制的ASIC引擎,但因为硬件可编程的能力,可以切换到其他ASIC引 擎,具有一定的弹性可编程能力。
DSA,是接近于ASIC的设计,但具有一定程度上的可编程。覆盖的领域和场景比ASIC要大,但依然存在太多的领域需要特定的DSA去覆盖。
ASIC,是完全不可编程的定制处理引擎,理论上最复杂的“指令”以及最高的性能效率。因为覆盖的场景非常小,因此需要数量众多的ASIC处理引擎,才能覆盖各类场景。
后摩尔定律时代,展望CPU未来发展之路
不可逆转的SoC集成:由于集成电路集成度不断提高,将完整计算机所有不同的功能块一次直接集成于一颗芯片上的 SoC 片上就成为整个半导体行业发展的一个趋势,可以显著降低系统成本和功耗,提高系统可靠性。M1 并不是传统意义上的 CPU,而是一颗SoC。CPU采用了8核心,包括4个高性能核心和4个高能效核心。每个高性能核心都提供出色的单线程任务处理性能,并在允许的范围内将能耗降至最低。
市场规模爆发式增长。根据IDC,中国边缘计算服务器整体市场规模达到33.1亿美元,较2020年增长23.9%,预计2020-2025年CAGR将达到22.2%,高于全球的20.2%。
定制服务器快速增加。当前通用服务器和边缘定制服务器占比分别为87.1%和12.9%,随着边缘应用场景的逐渐丰富,为适应复杂多样的部署环境和业务需求,对于具有特定外形尺寸、低能耗、更宽工作温度以及其他特定设计的边缘定制服务器的需求将快速增加。IDC预计边缘定制服务器将保持76.7%的复合增速,2025年渗透率将超过40%。
根据业务场景多样定制,集成化是趋势
区别于数据中心服务器,边缘服务器配置并不一味追求最高计算性能、最大存储、最大扩展卡数量等参数,而是在有限空间里面尽量提供配置灵活性。当前边缘服务器多用于工业制造等领域,需根据具体环境(高压、低温、极端天气)等选择主板、处理器等,下游需求呈现碎片化,未有统一的标准。
伴随越来越多的计算、存储需求被下放至边缘端,当前趋势通常涉及更紧密的加速集成,以满足包括AI算力在内的多种需求。超大规模云提供商正在开始研究分类体系结构,为了减少熟悉的多租户方法不可避免的碎片化,其中计算、存储、 络和内存成为一组可组合的结构,机柜式架构(RSA)分别部署了CPU、GPU、硬件加速、RAM、存储和 络容量。
云服务器正在全球范围内取代传统服务器
云服务器的发展使中国成为全球服务器大国。随着移动终端、云计算等新一代信息技术的发展和应用,企业和政府正陆续将业务从传统数据中心向云数据中心迁移。虽然目前中国云计算领域市场相比美国相对落后,但近年来中国的云计算发展速度显著高于全球云计算市场增长速度,预计未来仍将保持这一趋势。
Nitro架构不仅性能强大,而且特别灵活,可以基于一些常用的Hypervisor(如qemu-kvm,vmware)运行虚拟机,甚至可以直接裸跑操作系统,可节省30%CPU资源。
ARM或成重要挑战者,英伟达推出首款数据中心专属CPU GRACE
公有云巨头价格竞争激烈,国内一线城市能耗管控严格,ARM移动端的优势和低能耗特征是超大型数据中心解决节能和成本问题的重要方案之一;国内自主可控趋势背景下,若能够搭建强有力的生态联盟,是未来可能颠覆原有格局的最有力挑战者。
2013年,AWS研发的的Nitro和阿里云研发的X-Dragon均可看作DPU前身;英伟达在2020年正式发布一款命名为“DPU”的产品,将其定义为CPU和GPU之后的第三颗主力芯片,DPU的出现是异构计算的另一个阶段性标志。
DPU是CPU和GPU的良好补充,据英伟达预测,每台服务器可能没有GPU,但必须有DPU,用于数据中心的DPU的量将达到和数据中心服务器等量的级别。
从CPU到CPU+XPU
AI模型通过数千亿的参数进行训练,增强包含数万亿字节的深度推荐系统,其复杂性和规模正呈现爆炸式增长。这些庞大的模型正在挑战当今系统的极限,仅凭CPU的优化难以满足其性能需求。
因此,AI服务器主要采用异构形式,表现形态多为机架式。在异构方式上,可以为CPU+GPU、CPU+FPGA、CPU+TPU、CPU+ASIC或CPU+多种加速卡。
现在市面上的AI服务器普遍采用CPU+GPU的形式,因为GPU与CPU不同,采用的是并行计算的模式,擅长梳理密集型的数据运算,如图形渲染、机器学习等。继续扩展模型以实现高度准确性和实用性,需要能够快速访问大型内存池并使 CPU 和 GPU 紧密耦合。
从CPU到CPU+TPU
TPU,即张量处理单元(Tensor Processing Unit),是Google为加速深度学习所开发的专用集成电路(DSA),采用专用CISC指令集,自定义改良逻辑、线路、运算单元、内存系统架构、片上互联等,并针对Tensorflow等开源框架进行优化。

2015年起,谷歌发布TPUv1,应用于Alpha Go等特定内部项目;2018年,谷歌发布TPUv3,开始向第三方出售,TPU开始逐渐走向商用。
2021年,谷歌发布TPUv4i,其性能相较第三代TPU提升2.7倍;256块TPU仅用1.82分钟便完成NLP领域著名的“BERT”模型训练,而同样条件下,利用Nvdia A100 GPU则需要3.36分钟。
参考文献链接
https://mp.weixin.qq.com/s/UY4K9xCnEM8GCNDAnRRN1Q
https://mp.weixin.qq.com/s/ScpFA_Agby9hnriPzxLhig
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!