当前位置: 首页 > 专利查询>英特尔公司专利>正文

提供向量压缩和旋转功能的指令和逻辑制造技术

技术编号:10053688 阅读:215 留言:0更新日期:2014-05-16 02:24
指令和逻辑提供向量压缩和旋转功能。对指定向量源、掩码、向量目的地和目的地偏移的指令做出响应,一些实施例读取所述掩码并且将相对应的未掩蔽向量元素从所述向量源拷贝到所述向量目的地中在所述向量目的地偏移单元处开始的相邻顺序单元。在一些实施例中,将来自所述向量源的未掩蔽向量元素拷贝到以所述向量目的地中的元素单元的总数量为模的相邻顺序元素单元。在一些可选实施例中,每当所述向量目的地为满时,就停止拷贝,并且在将未掩蔽向量元素从所述向量源拷贝到所述向量目的地中的相邻顺序元素单元时,将所述掩码中的相对应字段的值改变到掩蔽值。可选实施例使其中没有拷贝来自所述向量源的元素的向量目的地的元素归零。

【技术实现步骤摘要】
提供向量压缩和旋转功能的指令和逻辑
本公开涉及处理逻辑、微处理器和相关联的指令集架构的领域,当由所述处理器或其它处理逻辑执行时,所述相关联的指令集架构执行逻辑、算术或其它功能操作。具体地说,本公开涉及用于提供向量压缩和旋转功能的指令和逻辑。
技术介绍
现代处理器经常包括用于提供操作的指令,这些操作是计算密集的,但是提供能够经过使用例如以单指令多数据(SIMD)向量寄存器为例的各种数据存储设备的有效实现来开发的高级数据并行性。中央处理单元(CPU)可以然后提供并行硬件以支持处理向量。向量是保持多个连续数据元素的数据结构。具有尺寸M的向量寄存器可以包含具有尺寸O的N个向量元素,其中N=M/O。例如,可以将64字节向量寄存器划分为(a)64个向量元素,每一个元素保持占据1个字节的数据项,(b)32个向量元素以保持每一个占据2个字节(或一个“字”)的数据项,(c)16个向量元素以保持每一个占据4个字节(或一个“双字”)的数据项,或(d)8个向量元素以保持每一个占据8个字节(或一个“四倍字”)的数据项。使应用或软件代码向量化可以包括使应用在例如以宽的或大的宽度向量架构为例的特定系统或指令集架构上编译、安装和/或运行。计算行业发展了各种编程基准以测试架构和诸如向量化、同时多线程、预测等等的计算技术的效率。一组这样的基准来自标准性能评估公司(SPEC)。SPEC基准广泛用于“检测”处理器和平台架构的性能。构成SPEC基准的程序由行业专业人员进行描绘和分析,试图发现新的编译和计算技术以改善计算机性能。被称为CPU2006的SPEC基准组之一包括被选择以强调系统的处理器、存储器子系统和编译器的整数和浮点CPU密集的基准。CPU2006包括根据NAMD的数据布局和内环推导的被称为444.NAMD的程序,一种用于模拟由伊利诺伊大学厄巴纳-尚佩恩分校的理论和计算生物组的JimPhillips开发的大生物分子系统的并行程序。将NAMD的几乎所有运行时间都花费在计算小组功能中的原子间交互上。这一组与大量代码分离以形成对于CPU2006的紧凑基准。计算核心在宽范围的机器架构上实现良好的性能,但是不包含平台特定的优化。程序NAMD是2002年GordonBell并行可扩展性奖金的获胜者,但是串行性能同样重要。在人们例如对基准的大多数并行部分中的全部进行向量化之后,不可向量化的串行部分典型地代表基准的运行时间的甚至更显著的部分。这一情况是对于具有高并行可扩展性的计算密集程序的通常情况的典型示例。在使用向量化来加速大多数并行部分之后,还存在移除性能限制问题和瓶颈以改善程序的另外的不可向量化或串行部分的性能的艰难工作。目前为止,还没有充分探究对于这样的性能限制问题和瓶颈的潜在解决方案。附图说明在附图中通过示例而非限制的方式说明了本专利技术。图1A是执行用于提供向量压缩和旋转功能的指令的系统的一个实施例的方框图。图1B是执行用于提供向量压缩和旋转功能的指令的系统的另一实施例的方框图。图1C是执行用于提供向量压缩和旋转功能的指令的系统的另一实施例的方框图。图2是执行用于提供向量压缩和旋转功能的指令的处理器的一个实施例的方框图。图3A说明了根据一个实施例的压缩数据类型。图3B说明了根据一个实施例的压缩数据类型。图3C说明了根据一个实施例的压缩数据类型。图3D说明了根据一个实施例用于提供向量压缩和旋转功能的指令编码。图3E说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。图3F说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。图3G说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。图3H说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。图4A说明了用于执行提供向量压缩和旋转功能的指令的处理器微架构的一个实施例的元素。图4B说明了用于执行提供向量压缩和旋转功能的指令的处理器微架构的另一实施例的元素。图5是执行提供向量压缩和旋转功能的指令的处理器的一个实施例的方框图。图6是执行提供向量压缩和旋转功能的指令的计算机系统的一个实施例的方框图。图7是执行提供向量压缩和旋转功能的指令的计算机系统的另一实施例的方框图。图8是执行提供向量压缩和旋转功能的指令的计算机系统的另一实施例的方框图。图9是执行提供向量压缩和旋转功能的指令的片上系统的一个实施例的方框图。图10是执行提供向量压缩和旋转功能的指令的处理器的实施例的方框图。图11是提供向量压缩和旋转功能的IP核心开发系统的一个实施例的方框图。图12说明了提供向量压缩和旋转功能的架构仿真系统的一个实施例。图13说明了翻译提供向量压缩和旋转功能的指令的系统的一个实施例。图14A说明了用于提供向量压缩和旋转功能的指令的一个实施例的流程图。图14B说明了用于提供向量压缩和旋转功能的指令的另一实施例的流程图。图15A说明了使用指令以提供向量压缩和旋转功能的处理的实施例的流程图。图15B说明了使用指令以提供向量压缩和旋转功能的处理的另一实施例的流程图。图16A说明了提供向量压缩和旋转功能的处理的一个实施例的流程图。图16B说明了提供向量压缩和旋转功能的处理的可选实施例的流程图。图17说明了提供向量压缩和旋转功能的处理的另一实施例的流程图。图18说明了在基准应用中提供向量压缩功能的处理的实施例的流程图。图19A说明了在基准应用中提供向量压缩和旋转功能的处理的实施例的流程图。图19B说明了在基准应用中提供向量压缩和旋转功能的处理的可选实施例的流程图。具体实施方式下面的描述公开了用于在处理器、计算机系统或其它处理装置内或与该处理器、计算机系统或其它处理装置相关联地提供向量压缩和旋转功能的指令和处理逻辑。本文公开了用于提供向量压缩和旋转功能的指令和逻辑。对指定向量源、掩码、向量目的地和目的地偏移的指令做出响应,一些实施例读取该掩码,并且将相对应的未掩蔽向量元素从向量源拷贝到向量目的地中在向量目的地偏移单元处开始的相邻顺序元素单元。可选实施例使其中没有拷贝来自向量源的元素的向量目的地的元素归零。在一些实施例中,将来自向量源的未掩蔽向量元素拷贝到以向量目的地中的元素单元的总数量为模的相邻顺序元素单元。在一些可选实施例中,每当向量目的地为满时,拷贝就停止。在将未掩蔽向量元素从向量源拷贝到向量目的地中的相邻顺序元素单元时,也可以将掩码中的相对应的字段的值改变到掩蔽值。因而,掩码值可以用于跟踪进展和/或完成,并且在将变为满的目的地存储到存储器之后,能够重新执行指令。然后,可以使用修改的掩码和为零的向量目的地偏移来重新执行指令,以仅压缩仍然需要执行向量压缩和旋转指令的元素,从而允许改善的指令吞吐量。将认识到,SIMD压缩和旋转指令可以用于在否则不容易被向量化的应用中提供向量压缩功能,例如在以在SPEC基准组的444.NAMD的内环中为例的基准应用中,从而减少到外部存储器的昂贵顺序存储的数量,增加性能和指令吞吐量,并且降低功率使用。在下面的描述中,阐述了诸如处理逻辑、处理器类型、微架构条件、事件、使能机制等等的各种具体细节,以便提供对本专利技术实施例的更加全面的理解。然而,本领域中的技术人员将认识到,可以在没有这样的具体细节的情况下来实践本专利技术。此外,没有详细地示出一些公知的结构、电路等等,以避免不必要本文档来自技高网...
提供向量压缩和旋转功能的指令和逻辑

【技术保护点】

【技术特征摘要】
2012.10.30 US 13/664,4011.一种处理器,包括:掩码寄存器,包括第一多个数据字段,其中,所述掩码寄存器中的所述第一多个数据字段中的每一个与向量中的元素单元相对应;解码级,用于对指定向量源操作数、所述掩码寄存器、向量目的地操作数和向量目的地偏移的第一指令进行解码;以及一个或多个执行单元,用于响应于解码的第一指令来执行以下操作:读取所述掩码寄存器中的所述第一多个数据字段的多个值;对于所述掩码寄存器中的所述第一多个数据字段中的第一值,将相对应的第一向量元素从所述向量源操作数拷贝到所述向量目的地操作数中的第一相邻顺序元素单元,所述第一向量元素在所述向量目的地偏移单元处;在将相对应的第一向量元素从所述向量源操作数拷贝到所述向量目的地操作数中的所述第一相邻顺序元素单元之后,将所述掩码寄存器中的所述第一值从第一未掩蔽值改变到第一掩蔽值;对于所述掩码寄存器中的所述第一多个数据字段中的第二值,将相对应的第二向量元素从所述向量源操作数拷贝到所述向量目的地操作数中的第二相邻顺序元素单元;以及在将相对应的第二向量元素从所述向量源操作数拷贝到所述向量目的地操作数中的所述第二相邻顺序元素单元之后:将所述掩码寄存器中的所述第二值从第二未掩蔽值改变到第二掩蔽值,所述第一掩蔽值和所述第二掩蔽值用于跟踪解码的第一指令的完成进展;确定所述向量目的地操作数已满并且将所述向量目的地操作数存储到存储器中;将所述向量目的地偏移单元设置为零;以及使用所述第一掩蔽值、所述第二掩蔽值和所述向量目的地偏移单元来重新执行所述第一指令以压缩第三向量元素。2.如权利要求1所述的处理器,其中,来自所述向量源操作数的相对应的第一和第二向量元素被拷贝到以所述向量目的地操作数中的元素单元的总数量为模的相邻顺序元素单元。3.如权利要求2所述的处理器,其中,所述第一指令是向量压缩和旋转指令。4.如权利要求1所述的处理器,其中,来自所述向量源操作数的相对应的第一和第二向量元素被拷贝到在所述向量目的地偏移单元处开始的相邻顺序元素单元,仅直到填充了最高有效向量目的地元素单元为止。5.如权利要求4所述的处理器,其中,所述第一指令是向量压缩、填充和旋转指令。6.如权利要求1所述的处理器,其中,所述第一未掩蔽值为一。7.如权利要求5所述的处理器,其中,所述第二掩蔽值为零。8.如权利要求1所述的处理器,其中,拷贝到所述向量目的地操作数中的所述第一向量元素和所述第二向量元素是32位数据元素。9.如权利要求1所述的处理器,其中,拷贝到所述向量目的地操作数中的所述第一向量元素和所述第二向量元素是64位数据元素。10.如权利要求1所述的处理器,其中,所述向量目的地操作数是128位向量寄存器。11.如权利要求1所述的处理器,其中,所述向量目的地操作数是256位向量寄存器。12.如权利要求1所述的处理器,其中,所述向量目的地操作数是512位向量寄存器。13.一种执行第一指令的方法,包括:读取掩码寄存器中的第一多个数据字段的多个值;对于所述掩码寄存器中的所述第一多个数据字段中的第一值,将相对应的第一向量元素从向量源操作数拷贝到向量目的地操作数中的第一相邻顺序元素单元,所述第一向量元素在向量目的地偏移单元处;在将相对应的第一向量元素从所述向量源操作数拷贝到所述向量目的地操作数中的所述第一相邻顺序元素单元之后,将所述掩码寄存器中的所述第一值从第一未掩蔽值改变到第一掩蔽值;对于所述掩码寄存器中的所述第一多个数据字段中的第二值,将相对应的第二向量元素从所述向量源操作数拷贝到所述向量目的地操作数中的第二相邻顺序元素单元;以及在将相对应的第二向量元素从所述向量源操作数拷贝到所述向量目的地操作数中的所述第二相邻顺序元素单元之后:将所述掩码寄存器中的所述第二值从第二未掩蔽值改变到第二掩蔽值,所述第一掩蔽值和所述第二掩蔽值用于跟踪所述第一指令的完成进展;确定所述向量目的地操作数已满并且将所述向量目的地操作数存储到存储器中;将所述向量目的地偏移单元设置为零;以及使用所述第一掩蔽值、所述第二掩蔽值和所述向量目的地偏移单元来重新执行所述第一指令以压缩第三向量元素。14.如权利要求13所述的方法,其中,来自所述向量源操作数的相对应的第一和第二向量元素被拷贝到以所述向量目的地操作数中的元素单元的总数量为模的相邻顺序元素单元。15.如权利要求13所述的方法,其中,来自所述向量源操作数的相对应的第一和第二向量元素被拷贝到在所述向量目的地偏移单元处开始的相邻顺序元素单元,仅直到填充了最高有效向量目的地元素单元为止。16.如权利要求13所述的方法,其中,存储到所述向量目的地操作数中的所述第一向量元素和所述第二向量元素是32位数据元素。17.如权利要求13所述的方法,其中,存储到所述向量目的地操作数中的所述第一向量元素和所述第二向量元素是64位数据元素。18.如权利要求13所述的方法,其中,所述向量目的地操作数是128位向量寄存器。19.如权利要求13所述的方法,其中,所述向量目的地操作数是256位向量寄存器。20.如权利要求13所述的方法,其中,所述向量目的地操作数是512位向量寄存器。21.一种处理器,包括:解码级,用于对指定向量源操作数、掩码寄存器、向量目的地操作数和向量目的地偏移的第一单指令多数据(SIMD)指令进行解码;以及一个或多个执行单元,用于响应于解码的第一SIMD指令来执行以下操作:读取所述掩码寄存器中的第一多个数据字段的多个值;对于所述掩码寄存器中的所述第一多个数据字段中的第一值,将相对应的第一向量元素从所述向量源操作数拷贝到所述向量目的地操作数中在所述向量目的地偏移单元处开始的以所述向量目的地操作数中的元素单元的总数量为模的第一...

【专利技术属性】
技术研发人员:T·乌利尔E·乌尔德艾哈迈德瓦勒R·瓦伦丁
申请(专利权)人:英特尔公司
类型:发明
国别省市:

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

1