65.9K
CodeProject 正在变化。 阅读更多。
Home

Intel AVX:性能改进和能效的新前沿

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (2投票s)

2008 年 6 月 19 日

CPOL

11分钟阅读

viewsIcon

19973

本文将简要介绍 ISA 的背景,然后概述 Intel AVX 的新指令和功能,以及这些创新指令在各种应用程序和编程模型中的优势。

引言

随着行业各细分领域对更高计算性能的需求不断增长,英特尔持续引领创新,提供更强大的计算能力,以支持这些日益增长的需求和不断演进的使用模型。英特尔在创新方面拥有悠久的历史,并始终走在扩展全球最流行、应用最广泛的计算机架构——Intel® 架构的能力的最前沿。通过引入推动行业发展的 Intel® 高级矢量扩展 (Intel® AVX) 指令,英特尔延续了这一创新传统,将 Intel® SSE4 的性能、灵活性和能效提升到新的水平。

为了惠及广大消费者和商业客户,英特尔将于 2010 年左右推出一套名为 Intel AVX 的新指令集,该指令集将得到广泛的英特尔平台的支持。Intel AVX 以 Intel SSE4 和 Intel® 64 指令集架构 (ISA) 的丰富遗产为基础,为满足金融分析、媒体内容创作、自然资源产业和高性能计算等应用日益增长的需求提供了基础设施和构建模块。Intel AVX 将引入指令集扩展,以实现灵活的编程环境、对矢量和标量数据集的高效编码,以及跨宽窄矢量数据处理的节能性能。

本文将简要介绍 ISA 的背景,然后概述 Intel AVX 的新指令和功能,以及这些创新指令在各种应用程序和编程模型中的优势。

指令集架构和微架构

为了更好地理解这些新指令的重要性,了解用于开发当今现代微处理器及其用途的不同架构非常有帮助。

  • ISA 是计算机体系结构中与编程相关的一部分。该集合包括本机数据类型、指令、寄存器、寻址模式、内存架构、中断和异常处理以及外部 I/O。ISA 定义了一个特定微处理器设计实现的函数(机器命令)的规范。在处理器家族中,ISA 经常会随着时间的推移而得到增强,引入新指令以提供更好的性能并公开新功能,同时保持与现有应用程序的兼容性。
  • 微架构 指的是 ISA 在硅片上的实际设计、布局和实现。它包括整体的块设计、核心、执行单元和类型(如浮点、整数、分支预测、SIMD 等)、流水线定义、缓存内存设计和外围支持。在处理器家族中,微架构经常会随着时间的推移而得到增强,以提高性能、能效和功能,同时保持与 ISA 的兼容性。

引领指令集革命——ISA 的悠久历史

英特尔利用 ISA 来提供其微架构的卓越功能,同时保持处理器代际之间必要的应用程序级兼容性。保持指令集兼容性的一个很好的例子是新款 Intel® Core™2 系列处理器。与上一代的 Intel Core 2 Duo 和 Intel Pentium D 处理器一样,Intel Core 2 处理器实现了几乎相同的 ISA 版本,并提供应用程序级兼容性。然而,其内部设计是全新且经过改进的。为 Intel Pentium D 处理器构建的几乎所有应用程序都可以在 Intel Core 2 Duo 处理器和 Intel Core 2 处理器上运行,而无需任何修改。更妙的是,其中几乎所有这些应用程序都能自动受益于这些处理器卓越的性能和能效。

随着英特尔的工艺技术和微架构以我们新的节奏不断演进,英特尔的指令集也在不断演进。在每一次演进中

  1. 英特尔将优化现有指令,使其能够从最新的微架构改进中获得最大好处,并在不修改的情况下为现有应用程序提供更高的性能和更低的功耗。
  2. 英特尔还将引入一套新的指令集,旨在优化一系列现有和新应用程序的性能并降低其功耗需求。为了最大限度地发挥这些新指令的优势,应使用更新的编译器重新编译现有应用程序(有关更多详细信息,请参阅此处)。

正如您所见,在每种情况下,随着我们指令集的演进和新指令的添加,现有软件将继续正确运行。同样重要的是,包含这些指令的新应用程序——以及为利用这些指令而重新编译的现有应用程序——将看到令人兴奋的性能提升。

英特尔在 ISA 领域的领先地位扩展到了广泛的操作系统生态系统,包括 Microsoft Windows* 和 Vista*、UNIX*、Linux*,以及现在的 Macintosh* 操作系统。我们持续致力于为行业扩展 ISA,包括

  • 通过扩展的行业生态系统支持,开创架构一致性,以实现跨操作系统、应用程序域的软件创新
  • 提供无缝方法,使软件供应商能够应对 32 位和 64 位 ISA 中产品机会的市场动态
  • 在开发新指令时倾听软件开发者和独立软件供应商 (ISV) 的声音,以帮助开发者更轻松地与我们一起取得成功。
  • 确保现有应用程序正确运行并获得更好的性能。
  • 在应用程序使用新指令时保持正确性。
  • 为其他架构供应商提供 ISA 领导地位,使 Intel ISA 保持连贯性并作为标准运行——简化 ISV 社区的工作。

开发者可以在多个性能向量中受益于处理器功能:提高并发执行多条指令的吞吐量,在一条指令中处理多个数据。英特尔长期以来一直鼓励这种编码实践,以帮助提高整体处理器吞吐量和利用率。早期,英特尔启动了一项积极计划,通过开发特殊的指令集来提高英特尔处理器上的应用程序性能。早期示例包括 8086 芯片中定义的浮点 (FP) 指令集扩展。最近的示例包括单指令多数据 (SIMD) 和 MMX™ 技术。使用 MMX 技术指令集,程序员能够对加载到 MMX 技术寄存器中的多个数据元素执行指令,从而在图形、游戏、流媒体视频等媒体应用程序中提高性能。在 P6 处理器中,英特尔引入了 Intel Streaming SIMD Extensions (Intel SSE)。Intel SSE 专为 Intel® Pentium® III 处理器设计,扩展了 MMX 技术,并允许使用 128 位寄存器同时对四个打包的单精度 FP 数据元素执行 SIMD 计算。借助 Intel NetBurst® 微架构,Intel SSE2 通过提供双精度 FP 和 128 位 SIMD 整数处理功能,将 SIMD 指令集扩展到了更广泛的应用领域。Intel SSE2 指令为软件开发者在实现算法方面提供了最大的灵活性,并为 MPEG-2 视频、MP3、3D 图形等软件带来了性能提升。

基于 90 纳米工艺的 Pentium 4 处理器发布带来了 Intel SSE3 扩展。Intel SSE3 添加了 13 条附加的 SIMD 指令,主要用于提高线程同步和 x87-FP 数学运算能力。进一步的改进,Supplemental Intel SSE3,现已在 Intel Core 微架构中提供。Supplemental Intel SSE3 添加了 32 个新操作码——包括对齐和乘加运算——以获得更高的性能。

英特尔最新的 ISA 创新是 2007 年的 Intel SSE4——提供了一系列广泛的指令,以实现显著的性能提升和编程效率。Intel SSE4 具有多种编译器矢量化原语,可提高媒体性能,以及新的创新字符串处理指令。从基于 45 纳米 Intel 微架构的处理器开始,这些新指令已在包括桌面、移动和服务器在内的广泛英特尔平台中开始普及。Intel SSE4 在两大类中提供了数十个新的创新指令:

  • Intel SSE4 矢量化编译器和媒体加速器。
  • Intel SSE4 高效加速字符串和文本处理。

AES-NI 和 PCMULQDQ

英特尔的 ISA 创新在 2009 年继续,引入了七条新指令来加速数据加密和解密。基于 Westmere 代号的英特尔处理器将提供六条用于使用高级加密标准 (AES) 进行对称加密/解密的指令,以及一条执行无进位乘法 (PCMULQDQ) 的指令,用于高级分组密码加密。这些基于硬件的基元通过避免查找表来防止软件侧信道攻击,从而提供额外的安全优势。

Intel® AVX 架构

背景和概述

行业各细分领域对更高计算性能的需求不断增长。为了支持这些日益增长的需求和不断演进的使用模型,英特尔持续引领创新,提供更强大的计算能力。

  • 对于需要计算密集型性能以支持及时决策的金融服务。
  • 对于构建和模拟跨越多个空间和时间维度的软件解决方案的资源和制造业。
  • 对于面向个性化或以客户为中心体验的面向服务软件创新,这些创新需要新的算法来提炼多个数据集、关联历史配置文件、转换/分解特征空间表示,以及需要无处不在的节能计算硬件。

Intel AVX 是 Intel 架构一项新的 256 位 SIMD FP 矢量扩展。它预计将于 2010 年左右在 Sandy Bridge 处理器系列中推出。Intel AVX 加速了通用应用程序(如图像、视频和音频处理)中对 FP 密集型计算的趋势,以及工程应用(如 3D 建模和分析)、科学仿真和金融分析。

Intel AVX 是 Intel 64 架构的综合性 ISA 扩展。Intel AVX 的主要组成部分是:

  • 支持更宽的矢量数据(最高 256 位)。
  • 高效的指令编码方案,支持 3 操作数和 4 操作数指令语法。
  • 编程环境的灵活性,从分支处理到宽松的内存对齐要求。
  • 新的数据处理和算术计算基元,包括广播、排列、融合乘加等。

虽然任何大量使用浮点或整数 SIMD 的应用程序都可以使用 Intel AVX,但受益最大的应用程序是那些强烈依赖浮点计算密集型且能够进行矢量化的应用程序。示例应用程序包括音频处理和音频编解码器、图像和视频编辑应用程序、金融服务分析和建模软件,以及制造和工程软件。

几年前,当英特尔工程师着手设计 Intel AVX 时,提供一个具有内置可扩展性的全面、向后兼容的解决方案至关重要。我们的三操作数和更宽的矢量语法基于一种适用于所有现有 Intel SSE 指令的指令编码格式。此外,Intel AVX 在编码中增加了 4 操作数语法,以支持 FMA、可变混合和通用洗牌。Intel AVX 的编码非常紧凑——这些指令通常比当前浮点指令的 64 位形式占用更少的字节,但它们有许多为未来功能保留的字段。

Intel® AVX 的主要优势

Intel AVX 是一项全面的 ISA 增强功能,在紧凑的新编码格式之外增加了新功能。

  • 大量(200+)的旧版 Intel SSEx 指令通过增强的指令编码进行了升级,以利用诸如独立的源操作数和灵活的内存对齐等功能。
  • 少量(< 100)的旧版 128 位 Intel SSEx 指令已升级为处理 256 位矢量数据。
  • 英特尔将在 2010 年及以后发布的处理器中添加一些在旧版 Intel SSEx 中不存在的新数据处理和算术运算(< 100)。

Intel AVX 的主要优势是:

  • 性能:Intel AVX 可以提高现有和新应用程序的性能,这些应用程序非常适合高度可矢量化(vectorizable)的数据集。
    • 更宽的矢量数据集可以处理高达 128 位数据集两倍的吞吐量。
    • 应用程序性能可以随着硬件线程数量和核心数量的增加而扩展。
    • 应用程序域可以随着 Intel QPI 等先进平台互连而扩展。
  • 能效:Intel AVX 具有极高的能效。当指令未使用或很少使用时,增加的功耗微不足道。结合其可以提供的出色性能,非常适合使用 Intel AVX 的应用程序可以更加节能,并实现更高的每瓦性能。
  • 可扩展性:Intel AVX 具有强大的内置可扩展性选项,可用于未来,而无需进行代码增长。
    • 操作系统上下文管理 rework 只需进行一次。
    • 未来矢量整数支持高达 256 位和 512 位。
    • 矢量未来 FP 支持高达 512 位甚至 1024 位。
  • 兼容性:Intel AVX 与之前的 ISA 扩展(包括 Intel SSE4)向后兼容。
    • 将现有 Intel SSE 应用程序轻松移植到 Intel AVX-128。
    • 将现有 Intel SSE 轻松移植到 Intel AVX-256。
  • 普遍性:Intel AVX 将在从小型笔记本到多处理器服务器的各种英特尔平台中提供。
  • 支持:英特尔全面的开发者工具以及在 Intel® 软件网络 上的广泛在线支持,使开发者能够轻松开始使用 Intel AVX。

软件开发平台将于 2010 年上半年推出。2010 年之前,ISV 可以开始使用模拟器和其他工具进行开发,这些工具可从 Intel AVX 网站 下载。

英特尔将提供各种工具、白皮书和支持论坛,以帮助 ISV 开始开发。开发有多种途径,同时要记住,对于 Intel AVX:

  • 使用内在函数编写的大多数应用程序只需重新编译。
  • 使用 Intel 库、Intel® Integrated Performance Primitives (Intel® IPP) 等,可以轻松地将现有 Intel SSE 移植到 Intel AVX 256。
  • 所有 Intel SSE/2 指令都通过简单的前缀(“VEX”)进行扩展。

摘要

英特尔在开发 Intel 架构指令集扩展方面的领导地位和持续努力,为提高各种软件的性能、能效和功能提供了一条持续的路径。通过 Intel AVX,我们正继续与 ISV 社区合作,提供真正增强软件产品的指令集扩展,为客户带来切实的收益(从改进性能到大幅节省成本)。

© . All rights reserved.