计算需求的增速,正快得让人有些出乎意料。毕竟,年增长率高达 50%的数据总量[1], 渴求有更强的数据处理能力与之相匹配;不断发展和演变的应用场景,如仿真模拟、金融分析、深度学习等,也形成了更多、更大的密集型计算负载,所有这些,都对处理器的算力提出了严峻的挑战。
要应战,处理器就要练好“内功”,即在硬件层面上做出特定的优化或革新,其中最为关键的举措,就是特定加速指令集或运算单元的持续引入及改进。
早期通用处理器的工作模式,一般都是基于 SISD(单指令单数据流)指令,即每个核心中,一个指令单次操作一条数据。如图一所示,这就如同一条繁忙的道路上,每辆车(指令)都只装载一件货物(数据),并按照时钟周期前进。处理器主频越高,时钟周期越短,单个核心(道路)的工作效率(车速)就越快。
图一 SISD 指令工作模式图示
随着算力需求的不断提升,人们发现上述方式在某些场景中效率很低。例如图二所展示的,在图像处理、游戏、AI 应用中常见的数组运算,其数组乘操作在 SISD 指令下,需要分解为 3 个运算指令,但这些乘法操作实际都是相同的。
图二 数组运算分解图示
为此,处理器开始引入新的 SIMD(单指令多数据流)指令来提升运算效率,这种技术革新让一个指令能够单次操作多条数据(如图二中,数组乘可通过一条指令完成),这就仿佛道路上的车(指令)可以同时装载多份相同的货物(数据)。
英特尔在 1996 年就推出了 MMX 指令集,率先加入了对 SIMD 指令的支持,同时英特尔还为其配备了专门的 64 位寄存器。如图三所示,这意味着在主道路之外,还为繁忙的交通(计算需求)开辟了更宽畅的专用通道(寄存器)。不仅如此,英特尔还加入了 FMA (融合乘加)指令集,让处理器一次能同时完成加法和乘法两种基本操作,效率再次翻番。
图三 英特尔® 架构处理器中集成的 SIMD 指令工作模式
在此后的二十多年中,如图四所示,英特尔一直在不断更新升级 SIMD 指令集,从 MMX 到 SSE,再到 SSE2、SSE3 和 SSE4,直到 2008 年,英特尔在其 Sandy Bridge 微架构中引入了全新的高级矢量扩展(Advanced Vector Extensions,AVX)指令集,不仅使矢量计算能力扩展到 256 位,也加入了数据重排等新的数据处理增强型功能。
而今,在英特尔® 至强® 可扩展处理器家族中集成的 AVX-512 指令集,寄存器已由最初的 64 位升级到了 512 位,且具备两个 512 位的 FMA 单元,这意味着应用程序可同时执行 32 次双精度、64 次单精度浮点运算,或操作八个 64 位和十六个 32 位整数。
图四 英特尔 SIMD 指令集发展历程
正是由于 AVX-512 指令集的加入,让英特尔® 至强® 可扩展处理器家族在音视频处理、游戏、科学计算、数据加密压缩及深度学习等场景中都有出色的表现。
例如在视频编解码、转码等处理流程中,应用程序需要执行大规模的重复性浮点计算,AVX-512 指令集正可尽显所长。腾讯视频云的服务场景就曾采用集成 AVX-512 指令集的英特尔® 至强® 可扩展处理器来替代原来使用的英特尔® 至强® E5-2699 v4 处理器(集成 AVX-2)。如图五所示,在单任务延迟上,这个处理器的升级换代带来了高达 2 倍的性能提升;而在全吞吐量上,转码性能也借此实现了高达 1.4-1.5 倍的提升[2]。
图五 腾讯视频云利用 AVX-512 实现的性能提升
国外知名的云服务提供商 Synesis 也选择了英特尔 AVX-512 指令集与 Aleph 压缩算法的优化组合,来提升云平台中处理器、内存和存储资源的利用效率,以更低的总体拥有成本(TCO)帮助客户在智慧城市、公共安全等领域高效部署其云服务。据 Synesis 评估,在相同需求下,英特尔 AVX-512 指令集的引入,可帮助他们将平台的处理器节点数在上一代 AVX2 指令集的基础上再减少 50%[3]。
[1] 数据引自新浪财经新闻报道:
http://finance.sina.com.cn/7x24/2018-05-26/doc-ihcaqueu3264721.shtml
[2] 案例链接:
https://www.intel.cn/content/www/cn/zh/cloud-computing/cloud-service-provider-resources-intel-offer-tencent-cloud-innovative-and-efficient-live-video-cloud-platform-solutions.html
[3] 案例链接:
https://www.intel.cn/content/www/cn/zh/cloud-computing/synesis-builds-massive-ai-based-smart-city-video-applications.html