用于减少具有步幅式访问模式的向量寄存器中的元素的指令的制作方法

文档序号:8491689阅读:354来源:国知局
用于减少具有步幅式访问模式的向量寄存器中的元素的指令的制作方法
【技术领域】
[0001] 本公开涉及处理逻辑、微处理器、以及相关联的指令集架构的领域,所述处理逻 辑、微处理器、以及相关联的指令集架构当由处理器或其它处理逻辑执行时,实施逻辑、数 学、或其它功能操作。
【背景技术】
[0002] 指令集、或指令集架构(ISA)是与编程相关的计算机体系结构的部分,并且其可 以包括本地数据类型、指令、寄存器体系结构、寻址方式、存储器体系结构、中断和异常处 理、以及外部输入和输出(I/O)。术语指令在本文中通常指宏指令,即被提供给处理器(或 将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真、 或另外转换为由处理器处理的一个或多个其它指令的指令转换器)用于执行的指令,其与 微指令或微操作(micro-ops)不同,微指令或微操作是处理器的解码器对宏指令进行解码 的结果。
[0003] ISA与微体系结构不同,其是实现指令集的处理器的内部设计。具有不同微体系 结构的处理器能够共享公共指令集。例如,Intel?Core?处理器和来自SunnyvaleCA的 AdvancedMicroDevices,Inc.的处理器几乎实现相同版本的x86指令集(一些扩展已经 被添加到新版本),但是具有不同的内部设计。例如,ISA的相同的寄存器体系结构可以在 不同的微体系结构中使用公知的技术以不同的方式实现,包括专用物理寄存器、使用寄存 器重命名机制的一个或多个动态分配的物理寄存器等。
[0004] 许多现代ISA支持单指令、多数据(SIMD)操作。不是仅操作只有一个数据元素或 一对数据元素的标量指令,矢量指令(还被称为紧缩数据指令或SMD指令)可以同时或并 行地操作多个数据元素或多对数据元素。处理器可以具有并行执行硬件,以响应于矢量指 令来同时或并行地执行多个操作。
[0005] SMD操作在一个操作中对封装在一个寄存器或存储器位置中的多个数据元素进 行操作。这些数据元素被称为紧缩数据或矢量数据。矢量数据元素中的每一个都可以呈现 可以单独地或独立于其它而被操作的数据的单独独立的片(例如,像素的颜色等)。SMD 体系结构依赖于编译器来使循环矢量化以用于执行。执行各种形式的相关联的归约操作 (例如,加、乘、逻辑操作等)的循环通常在通用应用、系统软件以及在浮点数密集的和多媒 体应用中被找到。归约操作可以在标量上或具有单元步幅或非单元步幅的访问模式的阵列 上有条件地或无条件地执行。具有小于矢量长度的访问步幅距离的阵列归约操作可能不能 由当前的编译器进行矢量化,这是因为词汇后向循环承载的流相关性的存在。
[0006] 现有的指令不能够封装具有非单元步幅的相关联的阵列归约操作,并且不能封装 有条件地执行的具有单元步幅的相关联的阵列归约操作。现有指令的局限性妨碍了特定类 型的归约循环的矢量化,并且因此可能导致性能损失。
【附图说明】
[0007] 实施例作为示例示出,并且不被限制在附图的图中:
[0008] 图1示出了根据一个实施例的矢量归约指令的示例。
[0009] 图2A到图2C示出了根据一个实施例的矢量归约指令的进一步示例。
[0010] 图3示出了根据一个实施例的将矢量归约操作应用在矢量的两个不同的移位版 本上的示例。
[0011] 图4是根据一个实施例的示出了用于执行矢量归约操作的硬件单元的框图。
[0012] 图5是根据一个实施例的示出了响应于矢量归约指令而被执行的操作的流程图。
[0013]图6是根据一个实施例的示出了使用软件转换器将源指令集中的二进制指令转 换为目标指令集中的二进制指令的框图。
[0014] 图7A是根据一个实施例的有序和乱序流水线的框图。
[0015] 图7B是根据一个实施例的有序和乱序核心的框图。
[0016]图8A到图8B是根据一个实施例的更具体的示例有序核心体系结构的框图。
[0017] 图9是根据一个实施例的处理器的框图。
[0018] 图10是根据一个实施例的系统的框图。
[0019] 图11是根据一个实施例的第二系统的框图。
[0020] 图12是根据一个实施例的第三系统的框图。
[0021] 图13是根据一个实施例的芯片上系统(SoC)的框图。
【具体实施方式】
[0022] 在下面的描述中,阐述了各种具体的细节。然而,应当理解,本发明的实施例可以 在没有这些具体细节的情况下实施。在其它实例中,公知的电路、结构、以及技术没有被详 细示出,以避免使对本描述的理解不清楚。
[0023]本文描述的实施例提供了一类新指令(也被称为"矢量归约指令"),其执行矢量 寄存器内的数据相关性存在的相关联的归约操作。数据相关性距离(还被称为"步幅距 离")是可以比一更大的正整数。比一更大的步幅距离在本文中被称为"非单元"步幅距离。 非单元步幅距离被指定为矢量归约指令的输入,并且被用于计算潜在的互相关性的归约结 果。此外,矢量归约指令允许有条件地以及正确地执行相关联的归约操作,所述相关联的归 约操作是对使用值传播方法的现有硬件归约技术的改进。所述值传播方法通常阻止对预期 的阵列归约进行矢量化。因此,本文描述的实施例在更宽范围的相关联的归约循环中具有 可能的增强性能。
[0024] 矢量归约指令能够表达可以有条件地在数据元素的阵列上执行的广泛使用的相 关联的归约操作。所述矢量归约指令还适用于具有非单元步幅的存储器参考模式的归约操 作。所述矢量归约指令向编译器提供了对各种类型的相关联的归约循环进行矢量化的能 力。
[0025] 下面是被执行的循环的示例,其中步幅距离为一:
[0026]
【主权项】
1. 一种装置,包括: 多个矢量寄存器,其包括第一矢量寄存器、第二矢量寄存器、以及第三矢量寄存器; 掩码寄存器,以及 耦合到所述多个矢量寄存器和所述掩码寄存器的执行电路,所述执行电路能够操作用 于: 接收矢量归约指令来在所述第一矢量寄存器的数据元素上执行相关联的归约操作;以 及 基于所述掩码寄存器的值和正被处理的当前元素位置,顺序地将所述第一矢量寄存器 的一个或多个数据元素设置为由被应用于所述第一矢量寄存器的之前的数据元素和所述 第
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1