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

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

【技术实现步骤摘要】
本申请是申请日为2014年3月12日申请号为201480026982.X(国际申请号:PCT/US2014/024523)专利技术名称为“用于单指令多数据处理器的高效硬件指令”的专利技术专利申请的分案申请。
本专利技术涉及单指令多数据指令,并且更具体而言涉及用于单指令多数据处理器的高效硬件指令。
技术介绍
数据格式被设计为启用各种不同数据集特性的高效处理和存储。处理这些格式的数据的算法是关键的。不幸的是,当前的处理器不是总能高效地对特定数据格式工作。处理器设计者在历史上提供了对特定于应用的指令的最小直接支持。因此,软件开发者依靠增加现有处理器执行指令集的速度来提高特定算法的性能。但是,典型处理单元的性能不以相同的速率增加。因此,软件开发者不能够同样多地依靠增加计算机能力来更快地处理特定的数据格式。单指令多数据(“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寄存器中的一系列子寄存器的对应子寄存器中;通过将所述位向量中的位解压缩到所述处理器中的第二寄存器中来对一条或多条指令进行响应;其中所述位向量中的位是连续的;其中,所述运行长度值向量中的运行长度值是连续的;其中,解压缩所述位向量中的位包括:针对所述一系列子寄存器中的所述运行长度值向量中的一个或多个运行长度值,根据所述运行长度值将第一寄存器中的所述位向量中的所述对应位拷贝到第二寄存器中,以使得所述对应位的拷贝如所述运行长度值指示的那样被连续地存储在第二寄存器中。

【技术特征摘要】
2013.03.15 US 61/801,207;2013.09.10 US 14/023,265;1.一种处理器,被配置为:
将位向量加载到驻留在所述处理器中的第一寄存器中;
将运行长度值向量中的每个运行长度值加载到驻留在所述处理器中的SIMD寄存器中
的一系列子寄存器的对应子寄存器中;
通过将所述位向量中的位解压缩到所述处理器中的第二寄存器中来对一条或多条指
令进行响应;
其中所述位向量中的位是连续的;
其中,所述运行长度值向量中的运行长度值是连续的;
其中,解压缩所述位向量中的位包括:
针对所述一系列子寄存器中的所述运行长度值向量中的一个或多个运行长度值,根据
所述运行长度值将第一寄存器中的所述位向量中的所述对应位拷贝到第二寄存器中,以使
得所述对应位的拷贝如所述运行长度值指示的那样被连续地存储在第二寄存器中。
2.如权利要求1所述的处理器,其中:
所述第一寄存器的宽度不足以保持所述位向量中的全部解压缩的位;以及
所述处理器还被配置为通过以下来对所述一条或多条指令作出响应:
在检测到所述SIMD寄存器是满的时,将第一寄存器中的位存储在存储器中;以及
继续将来自第二寄存器中的所述位向量的位拷贝到第一寄存器中。
3.如权利要求1所述的处理器,其中所述处理器还被配置为通过将第一寄存器中除了
存储解压缩的值的位之外的所有位设置为0来对所述一条或多条指令作出响应。
4.如权利要求1所述的处理器,其中所述一条或多条指令是单条指令。
5.如权利要求4所述的处理器,其中所述单条指令在一个循环中被执行。
6.一种处理器:
其中运行长度值向量中的每个运行长度值代表位向量中的每位应当分别被解压缩成
多少位;
其中所述位向量中的位被连续地存储在存储器中;
其中,所述运行长度值向量中的值被连续地存储在存储器中;
其中,结果被存储在存储器中;
其中,所述处理器被配置为响应于一条或多条指令:
将所述位向量中的位的集合从存储器拷贝到第一寄存器中;以及
将所述运行长度值向量中特定数目的运行长度值从存储器拷贝到SIMD寄存器中的一
系列子寄存器中,其中每个运行长度值被拷贝到所述一系列子寄存器中的不同子寄存器
中;
其中,所述位的集合中的每一位在所述一系列子寄存器中的一子寄存器中具有对应的
运行长度值;
解压缩每一位,以使得每一位的拷贝如所述一系列子寄存器中的所述子寄存器中的所
述对应的运行长度值所指示的那样被连续地存储在第二寄存器中。
7.如权利要求6所述的处理器,其中,结果被连续地存储在存储器中。
8.如权利要求6所述的处理器,其中,存储器是位于包括在处理器中的芯片上的高速缓
存存储器。
9.如权利要求6所述的处理器,其中所述一条或多条指令是单条指令。...

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

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

1