用于单指令多数据处理器的高效硬件指令制造技术

技术编号:12653262 阅读:63 留言:0更新日期:2016-01-06 11:07
给出了用于在单指令多数据(“SIMD”)体系架构中高效处理各种格式的数据的方法和装置。具体而言,给出了在SIMD体系架构中将位流中固定宽度的位值解包成固定宽度字节流的方法。给出了在SIMD体系架构中解包字节流中可变长度字节的打包值的方法。给出了在SIMD体系架构中解压运行长度编码的压缩位向量的方法。给出了在SIMD体系架构中返回位向量中被设置为一的每一位的偏移量的方法。给出了在SIMD体系架构中相对于基数在指定的偏移量从位向量读取位的方法。给出了比较存储在两个SIMD寄存器中的值的方法。

【技术实现步骤摘要】
【国外来华专利技术】用于单指令多数据处理器的高效硬件指令对相关申请的交叉引用;权益保护本申请依据35U.S.C.§119(e)要求于2013年3月15日提交的临时申请No.61801207的权益。该申请作为后续申请依据35U.S.C.§120要求于2013年9月10日提交的非临时申请序列No.14023064的优先权。这个申请作为后续申请依据35U.S.C.§120要求于2013年9月10日提交的非临时申请序列No.14023249的优先权。这个申请作为后续申请依据35U.S.C.§120要求于2013年9月10日提交的非临时申请序列No.14023265的优先权。这些文献当中每一个的全部内容都通过引用被结合于此,就像在本文完全阐述一样。
本专利技术涉及单指令多数据指令,并且更具体而言涉及用于单指令多数据处理器的高效硬件指令。
技术介绍
数据格式被设计为启用各种不同数据集特性的高效处理和存储。处理这些格式的数据的算法是关键的。不幸的是,当前的处理器不是总能高效地对特定数据格式工作。处理器设计者在历史上提供了对特定于应用的指令的最小直接支持。因此,软件开发者依靠增加现有处理器执行指令集的速度来提高特定算法的性能。但是,典型处理单元的性能不以相同的速率增加。因此,软件开发者不能够同样多地依靠增加计算机能力来更快地处理特定的数据格式。单指令多数据(“SIMD”)处理器同时对多个数据项执行相同的操作。通过对多个寄存器或子寄存器中的数据执行单条指令,SIMD处理器利用数据级并行化。因此,每条指令的吞吐量可以相应增加。SIMD处理器通常被用于图形和其它多媒体应用。相应地,可能难以使用SIMD体系架构来高效地处理特定的数据格式。本节中所描述的方法是可以推行的方法,但不一定是先前已经构想或推行的方法。因此,除非另外指出,否则不应当由于仅仅它们被包含在本节中就假设在本节中描述的任何方法有资格作为现有技术。术语和记号为了解释,以下术语和惯例在本文中被用来描述本专利技术的实施例:术语“字节”在本文描述连续存储的位的数量。虽然常见用法暗示八位,但是字节的尺寸可以从实现到实现有所变化。例如,字节可以指任何尺寸,包括但决不限于:八位、十六位、三十二位、六十四位,等等。记号<XY>在本文描述位的向量,例如,<10>。空格可以在位之间添加,这仅仅为了增加阅读向量内容的能力,例如,<1111000011110000>。记号[J,K]在本文描述一组连续的值,其中J是第一个值并且K是第二个值,它们可以相等或者不同。记号“0x”可以被用来表示十六进制数。例如,0x2C可以被用来代表数字四十四。在其中位表示可能难操纵的一些实施例中,十六进制表示可以被用来增加阅读和理解描述的能力。术语“寄存器”是可以包括一个或多个更小子寄存器的寄存器或子寄存器。除非另外指定,否则寄存器可以是SIMD寄存器或者通常在标量处理器中使用的寄存器。附图说明在附图中:图1示出了在实施例中的一组SIMD寄存器以及在执行固定宽度位解包指令的各个步骤SIMD寄存器的状态。图2示出了在实施例中执行可变长度字节解包指令的一组SIMD寄存器。图3示出了在实施例中执行Burst指令的一组SIMD寄存器。图4示出了在实施例中执行OnesIdx指令的一组SIMD寄存器。图5示出了在实施例中执行GatherB指令的一组SIMD寄存器和步骤。图6示出了在实施例中执行BitVecCmpRes指令的一组SIMD寄存器。图7是示出本专利技术实施例可以在其上实现的计算机系统的框图。具体实施方式在以下描述中,为了解释,阐述了各种具体细节,以便提供对本专利技术的透彻理解。但是,很显然,本专利技术没有这些具体细节也可以实践。在其它情况下,众所周知的结构和设备以框图形式示出,以避免不必要地模糊本专利技术。一般概述给出了利用SIMD体系架构处理特定数据格式的几条指令。具体而言,描述了在SIMD处理器上解包固定宽度位值、解包可变长度字节值、解压运行长度编码的位向量、找出位向量中设置为一的位的移位量、从位向量收集特定的位以及比较两个值向量的指令。给出的许多指令对于对存储器中的特定数据格式执行操作可能是特别有用的。指令可以对存储器、寄存器或者立即操作数操作。此外,具有存储器操作数的指令可以对具有不同粒度的数据操作,诸如高速缓存行或页面尺寸的块。SIMD指令SIMD指令是在被处理时会使操作对多个不同的数据值,同时和/或并行地,执行多次的指令。为了说明更清楚的例子,假设四个整数值要被递增一。还假设SIMD处理器接收到单个SIMD递增一指令。响应于接收到这单个SIMD指令,SIMD处理器可以同时递增四个整数值当中每一个。作为对比,标量指令是当被处理时会使操作执行一次的指令。多个标量指令可以在标量处理器、处理单元或处理核心中串行处理。为了说明清楚的例子,假设前面例子中的相同的四个值要在标量处理器上被递增一。标量处理器可以执行第一标量递增一指令,使第一个值递增一;然后,标量处理器可以执行第二标量递增一指令,使第二个值递增一,依此类推。因此,在这个例子中,标量处理器必须比前面例子中的SIMD处理器多执行三条递增一指令。此外,假设标量处理器与SIMD处理器执行SIMD递增一指令同样快地执行标量递增一指令。因为标量处理器串行执行标量指令,而SIMD处理器并行地对多个数据对象执行SIMD指令,所以标量处理器会花SIMD处理器四倍长的时间来处理所有四个值。用于实现SIMD操作的一种方法是使用每个都能存储多个不同数据值的一个或多个寄存器。这种寄存器在本文被称为SIMD寄存器。为了说明清楚的例子,假设SIMD寄存器能够存储256位。因此,SIMD寄存器能够存储八个不同的32位值,每个值在32位的子寄存器中;四个不同的64位值,每个值在64位的子寄存器中;或者两个不同的128位值,每个值在128位的子寄存器中。此外或者作为替代,可以使用不是2的幂的尺寸的子寄存器。SIMD操作在硬件中实现并且可以花费一个或多个机器循环来执行。例如,响应于接收到递增一指令,标量处理器可以在单个循环中递增加载到寄存器中的值。同样,响应于接收到递增一指令,SIMD处理器可以在单个循环中并行地递增加载到多个寄存器,或SIMD子寄存器,中的多个值。此外或者作为替代,一个或多个SIMD指令可以花费多于一个循环来执行。既实现SIMD又实现非SIMD指令的计算机系统可以包括一个或多个SIMD寄存器和一个或多个非SIMD寄存器。此外或者作为替代,寄存器可以是用于执行SIMD指令的SIMD寄存器和用于执行非SIMD指令的非SIMD寄存器。此外或者作为替代,SIMD寄存器可以在与非SIMD寄存器驻留在其上的硬件元件不同的硬件元件(例如,不同的协处理器)上。固定宽度位解包SIMD指令,固定宽度位解包(“bunpk”),可以被用来将固定宽度位值解包成固定宽度字节。为了高效地使用一些SIMD指令,寄存器中的每个值可以存储在其自己的子寄存器中并且与其对齐。因此,通过将位向量中的每个位打包值拷贝到其自己的子寄存器中并与其对齐,这个指令可以被用作一些后续SIMD处理的使能器。具体而言,执行这个指令将SIMD寄存器中最初被格式化为一系列连续位的值存储到单独的连续子寄存器中。此外,每个本文档来自技高网...
用于单指令多数据处理器的高效硬件指令

【技术保护点】
一种处理器,在该处理器中,将来自值向量的值加载到SIMD寄存器的一系列子寄存器中:其中值向量中的值是连续的;其中值向量中的每个值由固定位数表示;其中SIMD寄存器具有一系列子寄存器,每个子寄存器具有大于被用来表示来自值向量的每个值的固定位数的位数;其中处理器被配置为通过以下对一条或多条指令作出响应:将值向量中的每个值加载到所述一系列子寄存器的单独子寄存器中;及在所述一系列子寄存器的每个子寄存器中,将除存储来自值向量的值的位之外的所有位都设为零。

【技术特征摘要】
【国外来华专利技术】2013.03.15 US 61/801,207;2013.09.10 US 14/023,265;1.一种处理器,在该处理器中,将来自值向量的值加载到SIMD寄存器的一系列子寄存器中:其中值向量中的值是连续的;其中值向量中的每个值由固定位数表示;其中,用于表示值向量中的每个值的固定位数是相同的;其中处理器被配置为通过以下对一条或多条指令作出响应:基于所述一条或多条指令,将所述SIMD寄存器划分为一系列子寄存器;其中,所述一系列子寄存器中的每个子寄存器大于所述固定位数;用来自值向量的对应值加载所述一系列子寄存器的每个子寄存器中;及在所述一系列子寄存器的每个子寄存器中,将除存储来自值向量的、对应于该子寄存器的值的位之外的所有位都设为零。2.如权利要求1所述的处理器,其中处理器还被配置为通过以下对所述一条或多条指令作出响应:在每个子寄存器内偏移对应于该子寄存器的值,直到对应的所述值在该子寄存器中是字节对齐的。3.如权利要求1所述的处理器,其中所述一系列子寄存器的每个子寄存器是八位。4.如权利要求1所述的处理器,其中所述一条或多条指令是单条指令。5.如权利要求4所述的处理器,其中所述单条指令在一个循环中被执行。6.如权利要求1所述的处理器,其中,所述一条或多条指令指定有多少个字节用于所述一系列子寄存器的每个子寄存器。7.如权利要求1所述的处理器,其中,所述值向量中的每个值被加载到所述一系列子寄存器的每个子寄存器中。8.如权利要求1所述的处理器,其中,所述一系列子寄存器的第一子寄存器中的位被偏移与所述一系列子寄存器的第二子寄存器中的位不同的位数。9.一种处理器,被配置为:利用来自长度向量的对应长度加载第一SIMD寄存器中的第一系列子寄存器的每个子寄存器;其中,第一SIMD寄存器驻留在所述处理器中;其中,所述长度向量中的每个长度对应于值向量中的一个值,并且指示所述值向量中的对应的值的长度;将来自值向量的值加载到驻留在所述处理器内的第二SIMD寄存器的第二系列子寄存器中;其中,在所述值向量中的值被加载到第二系列子寄存器中之前,所述值向量中的值是连续的;其中,所述值向量中的值在长度上互相不同;并且其中将来自所述值向量的值加载到第二系列子寄存器中包括:基于一条或多条指令,将第二SIMD寄存器划分为第二系列子寄存器;以及将来自值向量的每个值加载到第二系列子寄存器中的对应子寄存器中,所述加载基于对应于该值的、第一系列子寄存器的子寄存器中加载的长度。10.如权利要求9所述的处理器,其中处理器被配置为在第二系列子寄存器的每个子寄存器中将除存储来自值向量的值的字节之外的所有字节都设为零。11.如权利要求9所述的处理器,其中处理器被配置为清空第二系列子寄存器中的所有位。12.如权利要求9所述的处理器,其中所述一条或多条指令是单条指令。13.如权利要求12所述的处理器,其中所述单条指令在一个循环中被执行。14.如权利要求9所述的处理器,其中,第二系列子寄存器中的每个子寄存器具有相同尺寸。15.如权利要求11所述的处理...

【专利技术属性】
技术研发人员:A·加内什S·K·查万V·玛瓦J·卡姆普A·C·帕蒂哈克M·J·格尔森A·L·霍利维R·麦克尼科尔
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1