ScholarGate
助手

指令集扩展

指令集扩展在基础架构中添加了新的指令——用于向量和SIMD数学、密码学、原子操作或其他专业工作——在扩展功能的同时,保持与现有软件的兼容性。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

指令集扩展是在基础指令集架构之上增加的一组附加指令,旨在提供新功能——通常是数据并行、密码学或原子操作——同时保持现有指令和二进制兼容性不变。

Scope

本主题涵盖指令集如何通过可选或强制扩展随时间发展:用于数据并行的SIMD和向量扩展、密码学和位操作指令、原子和同步原语,以及RISC-V等ISA的模块化扩展模型。它探讨了在不破坏兼容性的前提下扩展ISA的目标和限制。它不包括执行这些指令的底层并行硬件(SIMD和向量处理器)以及基础编码方案(指令格式和编码)。

Core questions

  • 为什么指令集要扩展而不是重新设计?
  • 如何在不破坏现有代码的情况下将扩展适配到固定的编码空间中?
  • 哪些类型的操作通常需要专门的扩展?
  • 模块化扩展模型如何让实现只包含它们所需的功能?

Key concepts

  • SIMD扩展
  • 向量扩展
  • 密码学指令
  • 原子和同步指令
  • 模块化和可选扩展
  • 向后兼容性
  • 操作码空间管理

Mechanisms

扩展占用先前未使用的操作码空间,并定义新的指令、寄存器或状态。软件在运行时检测可用的扩展(例如通过功能标志),并在存在扩展时调度到优化的代码路径。SIMD和向量扩展添加了宽寄存器和将一条指令应用于多个数据元素的操作;RISC-V等模块化ISA标准化了一个小型基础和一系列可选扩展,供实现者组合使用。

Clinical relevance

扩展是指令集在不放弃其软件生态系统的情况下,跟上新工作负载发展的方式。x86 SSE/AVX和ARM NEON等SIMD系列加速了多媒体、科学和机器学习内核;密码学扩展加速了加密;模块化扩展使得单个ISA能够从微型微控制器扩展到超级计算机。

History

SIMD扩展在20世纪90年代后期随英特尔的MMX和SSE(后来的AVX)以及ARM的NEON进入主流CPU。随后出现了用于密码学以及最近用于机器学习的专用扩展。RISC-V ISA从一开始就围绕一个最小基础和标准化的可选扩展进行设计,使模块化扩展模型变得明确和核心。

Key figures

  • John L. Hennessy
  • David A. Patterson
  • Krste Asanović

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

程序如何使用并非所有处理器都具备的扩展?
软件在运行时通过查询功能标志来检测处理器支持哪些扩展,并在扩展存在时选择优化的代码路径,否则回退到基础指令,从而在不同硬件上保持正确性。
RISC-V的模块化意味着什么?
RISC-V定义了一个小的强制性基础整数指令集,以及一组标准化的可选扩展(用于乘法、原子操作、浮点、向量等)。一个实现只包含它所需的扩展,因此同一个ISA可以涵盖从微型嵌入式核心到高性能处理器的范围。

Methods for this concept

Related concepts