用于将多个位向左移并将多个1拉入较低有效位的指令的制作方法

文档序号:9204227阅读:291来源:国知局
用于将多个位向左移并将多个1拉入较低有效位的指令的制作方法
【技术领域】
[0001] 本公开涉及处理逻辑、微处理器以及相关联的指令集架构的领域,该指令集架构 在被处理器或其它处理逻辑所执行时运行逻辑、数学或其它功能性操作。
【背景技术】
[0002] 指令集或指令集架构(ISA)是计算机架构中与编程有关的部分,并且可包括原生 数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输 出(I/O)。术语指令在本申请中一般表示宏指令,宏指令是被提供给处理器(或指令转换 器,该指令转换器(利用静态二进制转换、包括动态编译的动态二进制转换)转换、变形、 仿真或以其它方式将指令转换成将由处理器处理的一个或多个其它指令)以供执行的指 令一一作为对比,微指令或微操作(微操作)是处理器的解码器解码宏指令的结果。
[0003] ISA与微架构不同,微架构是实现该指令集的处理器的内部设计。具有不同微架构 的处理器可共享共同的指令集。例如,丨ntel·?酷睿(Core?)处理器、以及来自加利福尼亚州 桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices, Inc.)的诸多处 理器实现几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内 部设计。例如,可利用公知技术(包括专用物理寄存器、利用寄存器重命名机制的一个或多 个动态分配的物理寄存器等等)在不同的微架构中以不同的方式实现该ISA的同一寄存器 架构。
[0004] 许多现代ISA支持向量操作(也称为紧缩数据操作或单指令多数据(SIMD)操 作)。取代仅对一个数据元素或一对数据元素进行操作的标量指令,向量指令(也称为紧缩 数据指令或SMD指令)可同时或并行地对多个数据元素或多对数据元素进行操作。处理 器可具有并行的执行硬件,以响应于该向量指令同时或并行地执行多个操作。
[0005] 向量操作在一个操作中对紧缩在一个寄存器或存储器位置之内的多个数据元素 进行操作。这些数据元素被称为向量数据元素或紧缩数据元素。每一向量数据元素可表示 单独的个体数据片(例如,像素的颜色等),该数据片可单独地被操作或独立于其他数据被 操作。
[0006] 附图简述
[0007] 在附图中的诸个图中通过示例而非限制地示出各个实施例:
[0008] 图1是根据一个实施例的包括向量寄存器和掩码寄存器的指令处理装置的框图。
[0009] 图2A-2C示出根据一个实施例的掩码产生指令的诸个示例。
[0010] 图3A和3B示出根据一个实施例的数组数据对齐的诸个示例。
[0011] 图3C示出根据一个实施例的使用掩码的掩码向量指令的示例。
[0012] 图4示出根据一个实施例的用于给定的向量寄存器宽度和数据元素宽度的掩码 位的数量。
[0013] 图5是示出根据一个实施例的用于响应于掩码产生指令而执行的诸个操作的流 程图。
[0014] 图6是示出根据一个实施例的使用软件指令转换器将源指令集中的二进制指令 转换成目标指令集中的二进制指令的框图。
[0015] 图7A是根据一个实施例的有序和无序流水线的框图。
[0016] 图7B是根据一个实施例的有序和无序核的框图。
[0017] 图8A-B是根据一个实施例的更具体的示例性有序核架构的框图。
[0018] 图9是根据一个实施例的处理器的框图。
[0019] 图10是根据一个实施例的系统的框图。
[0020] 图11是根据一个实施例的第二系统的框图。
[0021] 图12是根据本发明的实施例的第三系统的框图。
[0022] 图13是根据一个实施例的芯片上系统(SoC)的框图。
【具体实施方式】
[0023] 在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细 节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模 糊对本描述的理解。
[0024] 本申请中描述的诸个实施例提供掩码产生指令,这些掩码产生指令能用于引起或 导致处理器产生由经掩码向量指令使用的掩码。经掩码向量指令可应用于如下情形:计算 循环的行程计数(即迭代的次数)不能被适配到向量寄存器中的元素的数量所整除。因此, 需要单独地处理余下的迭代。为了处理余下的迭代中的元素,掩码产生指令产生适当的断 言掩码(predicate mask),该掩码将向量寄存器的部分(例如最高有效位的元素)从计算 中忽略或屏蔽,从而将不会产生异常(例如由于访问被分配的在后存储器或/和未定义的 结果而引起的异常)。
[0025] 该掩码产生指令也可用于其它情形。例如,该指令可用于更新数据累积中的控制 掩码以用于稀疏向量计算。可通过多次迭代执行数据累积。在这些迭代中的一些迭代中, 一些数据元素可能退出计算,而一些新数据元素可能加入计算。该控制掩码被更新以跟踪 需要进一步计算的元素。可在掩码向量中利用该控制掩码以提高向量计算的效率。
[0026] 与向量指令类似,掩码向量指令能用于引起或导致处理器对一个或多个向量操作 数的数据元素执行向量操作。此外,每个掩码向量指令使用掩码来掩码、断言或条件地控制 向量操作。掩码能用于按数据元素粒度来掩码或有条件地控制向量处理。例如,掩码能用 于对是否将在来自单个源向量操作数的各个数据元素或来自两个源向量操作数的各个相 应的数据元素对执行向量操作的结果存储在目的地中进行掩码。掩码向量指令允许对与数 据元素单独地且独立地断言或有条件控制的每个数据元素或相应的数据元素对进行向量 处理。掩码向量指令、操作和掩码可提供某些优点,诸如增加的代码密度和/或更高的指令 吞吐量。
[0027] 图1是指令处理装置115的实施例的框图,该指令处理装置具有执行单元140,该 执行单元包括能用于执行指令(包括本申请中描述的掩码产生指令)的电路。在一些实施 例中,指令处理装置115可以是处理器、多核处理器的处理器核、或者电子系统中的处理元 件。
[0028] 解码器130接收高级机器指令或宏指令形式的传入指令,并且解码所述指令以生 成低级微操作、微代码进入点、微指令或其它低级指令或控制信号,它们反映了原始的高级 指令和/或从原始的高级指令导出。低级指令或控制信号可通过低级(例如,电路级或硬 件级)操作来实现高级指令的操作。可使用各种不同的机制来实现解码器130。合适机制 的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域 已知的解码器的其它机制等。
[0029] 解码器130可接收针对高速缓存110、存储器120或其它源的传入指令。经解码的 指令被发送到执行单元140。执行单元140可从解码器130接收一个或多个微操作、微代码 进入点、微指令、其它指令或其它控制信号,它们反映了所接收的指令或者是从所接收的指 令导出的。执行单元140从寄存器组170、高速缓存110和/或存储器120接收数据输入并 向它们生成数据输出。
[0030] 在一个实施例中,寄存器组170包括架构寄存器,架构寄存器也被称为寄存器。短 语"架构寄存器"、"寄存器组"、以及"寄存器"在本文中用于表示对软件和/或编程器可见 (例如,软件可见的)和/或由宏指令指定来标识操作数的寄存器,除非另外予以规定或清 楚明显可知。这些寄存器不同于给定微架构中的其它非架构式寄存器(例如,临时寄存器、 重排序缓冲器、引退寄存器等)。
[0031] 或者,在一个或多个其它实施例中,并非具有解码器130,指令处理装置115可替 代地具有指令仿真器、转换器、变形器(morpher)、解释器或者其他指令变换逻辑。各种不 同类型的指令变换逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实 现。指令变换逻辑可接收多个掩码产生指令中的一个或多个,并且仿真、转换、变形、解释、 或者以其他方式将指令变换成一个或多个对应的导出指令或控制信号。在又一个其它实施 例中,指令处理装置115可既具有解码器又具有附加的指令变换逻辑。例如,指令处理装置 115可具有指令变换逻辑和解码器,该指令变换逻辑用于将多个掩码产生指令中的一个或 多个变换成一个或多个中间指令,该解码器用于将一个或多个中间指令解码成能由指令处 理装置的原生硬件执行的一个或多个较低级的指令或控制信号。指令变换逻辑中的一些或 全部可位于指令处理装置的余下部分的管芯外,诸如在单独的管芯上或在管芯外的存储器 中。
[0032] 根据一个实施例,寄存器组170包括一组向量寄存器175和一组掩码寄存器185, 向量寄存器和掩码寄存器都可用于存储掩码产生指令的操作数。每个向量寄存器175可以 是512位、256位或128位宽,或者可以使用不同的向量宽度。每个掩码寄存器185包含多 个掩码位,其中每个掩码位对应于多个向量寄存器175中的一个向量寄存器的一个数据元 素。由于每个掩码位用于对向量寄存器的数据元素进行掩码,所以64位的掩码寄存器可用 于对512位寄存器的六十四个8位数据元素进行掩码。对于具有不同宽度(例如256位或 128位)的向量寄存器和不同尺寸(例如16位、32位或64位)的数据元素,可结合向量操 作来使用不同数量的掩码位。
[0033] 为了避免混淆描述,已示出和描述了相对简单的指令处理装置115。应当理解,其 它实施例可具有超过一个执行单元。例如,装置115可包括多个不同类型的执行单元,诸如 例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。指令处理装置或处理器的再 其它实施例可具有多个核、逻辑处理器或执行引擎。稍后将参考图7-13提供指令处理装置 115的多个实施例。
[0034] 根据本发明的实施例,本申请中描述的掩码产生指令通过移动该指令的寄存器操 作数中的多个位来产生掩码。该寄存器操作数可以是掩码寄存器或通用寄存器。图2A-2C 示出用于多个掩码产生指令的伪代码的示例。在这些附图中,rl、r2表示独立尺寸的通用 寄存器(例如rl可以是32位,而r2是64位),并且kl表示掩码寄存器。值KL表示多个 掩码位的数量,该值KL可根据附加至该指令末尾的助记符B/W/D/Q而确定。
[0035] 图2A示出掩码产生指令KSHLONES [B/W/D/Q] kl,r2的示例。助记符B/W/D/Q表示 指令 KSHL0NES 具有四种形式
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1