经加速的通道间的向量归约指令的利记博彩app

文档序号:8287864阅读:425来源:国知局
经加速的通道间的向量归约指令的利记博彩app
【技术领域】
[0001] 本公开涉及处理逻辑、微处理器以及相关联的指令集架构的领域,该指令集架构 在被处理器或其它处理逻辑所执行时运行逻辑、数学或其它功能性操作。
【背景技术】
[0002] 指令集或指令集架构(ISA)是计算机架构中与编程有关的部分,并且可包括原生 数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输 出(I/O)。术语指令在本申请中一般表示宏指令,宏指令是被提供给处理器(或指令转换 器,该指令转换器(利用静态二进制转换、包括动态编译的动态二进制转换)转换、变形、 仿真或以其它方式将指令转换成将由处理器处理的一个或多个其它指令)以供执行的指 令--作为对比,微指令或微操作(微操作)是处理器的解码器解码宏指令的结果。
[0003] ISA与微架构不同,微架构是实现该指令集的处理器的内部设计。具有不同微架构 的处理器可共享共同的指令集。例如,丨ntel?酷睿(Core?)处理器、以及来自加利福尼亚州 桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices, Inc.)的诸多处 理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的 内部设计。例如,可利用公知技术(包括专用物理寄存器、利用寄存器重命名机制的一个或 多个动态分配的物理寄存器等等)在不同微架构中以不同方式实现该ISA的同一寄存器架 构。
[0004] 许多现代ISA支持单指令多数据(SIMD)操作。取代仅对一个数据元素或一对数 据元素进行操作的标量指令,向量指令(也称为紧缩数据指令或SIMD指令)可同时或并行 地对多个数据元素或多对数据元素进行操作。处理器可具有并行的执行硬件,以响应于该 向量指令同时或并行地执行多个操作。
[0005] SMD操作在一个操作中对紧缩在一个寄存器或存储器位置之内的多个数据元素 进行操作。这些数据元素被称为紧缩数据或向量数据。向量元素中的每一个可表示单条数 据(例如像素的颜色,等等),可单独或与其它数据无关地操作该单条数据。
[0006] 在一些情形下,一段源代码可指定对数据元素的数组执行归约操作的特定顺序。 归约操作的示例是加法,它将数组中的所有数据元素相加以产生单个和,诸如以下串行源 代码中指定的操作:
[0007] float氺a ;
[0008] float sum = 0. 0 ;
[0009] for(int i = 0 ;i<100xl024 ;++i) {
[0010] sum+ = a[i];
[0011] }
[0012] 上述源代码通过按照升序对数组元素求和来对数组执行归约操作。对于浮点数据 元素,对将数据元素相加的顺序的改变会改变最终和--尽管该改变可以是轻微的。在需 要高精度算术的科学计算中,即使轻微的改变可能也是不可接受的。因此,需要保持对数据 元素进行操作的顺序,以保留由该源代码所指定的精确舍入特性。然而,诸如上述那样的串 行计算是耗时的。如果能对浮点计算进行重新排序,则可通过累加四个部分和(然后在该 循环之外将这四个部分和加到一起)来完成求和。在该情况下,循环主体一次加载四个单 精度值,并将包含:
[0013] movups (% [a],% [i],4),% xmmO// 加载 16B
[0014] addps% xmmO, % [sum]
[0015] 上述汇编代码使用紧缩数据加法(也称为向量加法)'addps',该紧缩数据加法将 向量寄存器(xmmO)的内容累加至和中。该汇编代码由于使用了向量操作而比串行源代码 更高效;然而,该汇编代码未保留如串行源代码中那样的归约操作的顺序,并且可能产生与 该串行源代码的结果不同的结果。
[0016] 附图简述
[0017] 在附图中的诸个图中通过示例而非限制地示出各个实施例:
[0018] 图1是根据一个实施例的包括向量寄存器的指令处理装置的框图。
[0019] 图2是根据一个实施例的寄存器架构的框图。
[0020] 图3A示出根据一个实施例的用于单精度值的向量归约操作的示例。
[0021] 图3B示出根据一个实施例的用于双精度值的向量归约操作的示例。
[0022] 图4A示出根据一个实施例的将不具有向量归约指令的代码转换成具有向量归约 指令的经转化代码的示例。
[0023] 图4B示出根据一个实施例的将不具有向量归约指令的代码转换成具有向量归约 指令的经转化代码的另一示例。
[0024] 图5A示出根据一个实施例的用于执行向量归约指令的计算机系统的组件。
[0025] 图5B是示出根据一个实施例的将响应于向量归约指令而执行的操作的流程图。
[0026] 图6是示出根据一个实施例的使用软件指令转换器将源指令集中的二进制指令 转换成目标指令集中的二进制指令的框图。
[0027] 图7A是根据一个实施例的有序和无序流水线的框图。
[0028] 图7B是根据一个实施例的有序和无序核的框图。
[0029] 图8A-B是根据一个实施例的更具体的示例性有序核架构的框图。
[0030] 图9是根据一个实施例的处理器的框图。
[0031] 图10是根据一个实施例的系统的框图。
[0032] 图11是根据一个实施例的第二系统的框图。
[0033] 图12是根据本发明的实施例的第三系统的框图。
[0034] 图13是根据一个实施例的芯片上系统(SoC)的框图。
【具体实施方式】
[0035] 在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细 节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模 糊对本描述的理解。
[0036] 本申请中描述的实施例提供用于加速归约操作的向量归约指令。归约操作可以是 加法性归约、乘法性或减法性归约。可将向量归约指令应用于能由处理器处理的任何数值 数据格式的任何尺寸的数据元素(诸如64位双精度浮点数、32位单精度浮点数、16位半精 度浮点数或其它数值数据格式)的数组。给定用于执行归约操作的预定义顺序,可安排向 量归约指令以使得处理器利用向量操作(也称为紧缩数据操作)以给定的预定义顺序执行 该归约操作,以提高效率。在一些实施例中,可通过编译器生成向量归约指令,该编译器将 高级语言编写的串行化代码编译成二进制或其它中间格式的向量代码。在一些实施例中, 可通过二进制转化/转换器系统来生成向量归约指令,该二进制转化/转换器系统把更短 向量宽度的向量代码转化或以其它方式转换成更宽向量宽度的另一向量代码,或把不使用 新归约指令的向量代码转化或以其它方式转换至利用新归约指令的另一向量代码。在一些 其它实施例中,可由计算机程序员将向量归约指令写入程序。
[0037] 在一个实施例中,向量归约指令包括用于不同算术操作和不同数值数据格式(例 如单精度、双精度、半精度等等)的VADDREDUCEPS、VMULTREDUCEPS、VSUBREDUCEPS以及他们 的变型。前缀'V'指示向量操作;'ADD'、'MULT'和'SUB'分别指示加法、乘法和减法;后 缀'P'指示紧缩操作(即向量操作),并且后缀'S'指示单精度数据元素。在其它实施例 中,可将不同的符号用于相同或相似指令。为了简化讨论,以下描述可使用术语"向量归约 指令"来表示这些归约指令的任何一个或全部以及他们的变型,除非另有特别声明。在一个 实施例中,这些向量归约指令使处理器对数据元素的数组执行算术操作(例如加法、减法、 乘法等等),并对该数组中的数据元素进行混洗。这些向量归约指令使用一个或多个向量寄 存器作为操作数,其中作为源操作数的向量寄存器与数据元素的数组一起被加载。每个向 量归约指令可对多个数据元素进行操作:对多个数据元素中的一些进行数学操作(例如加 法、减法、乘法等等),并混洗多个数据元素中的一些(例如移位至数组中的不同位置)。向 量归约指令可加速归约操作同时保留相同的操作顺序,以产生与串行源代码或指定任何给 定操作顺序的另一源代码相同的结果。
[0038] 图1是指令处理装置115的实施例的框图,该指令处理装置具有执行单元140,该 执行单元包括能用于执行指令(包括新的归约指令)的电路。在一些实施例中,指令处理 装置115可以是处理器、多核处理器的处理器核、或者电子系统中的处理元件。
[0039] 解码器130接收高级机器指令或宏指令形式的传入指令,并且解码所述指令以生 成低级微操作、微代码进入点、微指令或其它低级指令或控制信号,它们反映了原始的高级 指令和/或从原始的高级指令导出。低级指令或控制信号可通过低级(例如,电路级或硬 件级)操作来实现高级指令的操作。可使用各种不同的机制来实现解码器130。合适机制 的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域 已知的解码器的其它机制等。
[0040] 解码器130可接收针对高速缓存110、存储器120或其它源的传入指令。经解码的 指令被发送到执行单元140。执行单元140可从解码器130接收一个或多个微操作、微代码 进入点、微指令、其它指令或其它控制信号,它们反映了所接收的指令或者是从所接收的指 令导出的。执行单元140从寄存器组170、高速缓存110和/或存储器120接收数据输入并 向它们生成数据输出。
[0041] 在一个实施例中,寄存器组170包括架构寄存器,架构寄存器也被称为寄存器。短 语"架构寄存器"、"寄存器组"、以及"寄存器"在本文中用于表示对软件和/或编程器可见 (例如,软件可见的)和/或由宏指令指定来标识操作数的寄存器,除非另外予以规定或清 楚明显可知。这些寄存器不同于给定微架构中的其它非架构式寄存器(例如,临时寄存器、 重排序缓冲器、引退寄存器等)。
[0042] 为了避免混淆描述,已示出和描述了相对简单的指令处理装置115。应当理解,其 它实施例可具有超过一个执行单元。例如,装置115可包括多个不同类型的执行单元,诸如 例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。指令处理装置或处理器的再 其它实施例可具有多个核、逻辑处理器或执行引擎。稍后将参考图7-13提供指令处理装置 115的多个实施例。
[0043] 根据一个实施例,寄存器组170包括一组向量寄存器175,该组向量寄存器可用于 存储向量归约指令的操作数。每个向量寄存器175可以是512位、256位或128位宽(即 64字节、32字节或16字节宽),或可使用不同的向量宽度。
[0044] 图2示出了支持本文描述的指令的底层寄存器架构200的一个实施例。寄存器架 构200基于]ntel?酷睿(Core?)处理器,该处理器实现包括x86、MMX?、流SMD扩展(SSE)、 SSE2、SSE3、SSE4. 1、和SSE4. 2指令的指令集,以及SMD扩展的附加集,该附加集被称为高 级向量扩展(AVX) (AVX1、AVX2和AVX3)。然而,应理解,也可使用
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1