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

用于确定两个最小值和两个最大值的处理器指令制造技术

技术编号:18349910 阅读:35 留言:0更新日期:2018-07-01 22:46
用于确定两个最小值和两个最大值的处理器指令及关联装置和方法。指令包括用于确定三或四个输入值中的两个最小值/最大值的2MIN/2MAX指令。2MIN指令采用两个操作数,第一操作数将并置的min1和min2值存储在第一寄存器中且将src2比较值或两个src2并置的src2值存储在第二寄存器中。比较器被用来实现用于确定src2值是否小于min1和min2中的每个的硬件逻辑。基于硬件逻辑,将min1、min2和src2中的两个最小值作为并置值存储在第一寄存器中。以类似方式实现2MAX指令,除了该比较是src2值是否大于max1和max2值中的每个。还提供了128位2MIN和2MAX SIMD指令。

【技术实现步骤摘要】
用于确定两个最小值和两个最大值的处理器指令
技术介绍
霍夫曼代码(https://en.wikipedia.org/wiki/Huffman_coding)是可变长度代码,其表示具有使表示一连串符号所需要的位的总数目最小化的目标的一组符号。它们通过向较频繁地发生的符号指派较短长度的代码并且向较罕见的符号指派较长的代码来实现这一点。霍夫曼代码的使用的一个示例在“DEFLATE”压缩算法中,其形成诸如gzip和Zlib以及Winzip和PKZIP之类的格式的基础。DEFLATE数据格式包括使用LZ77算法和霍夫曼编码的组合进行压缩的一系列块。霍夫曼编码还被用于其它目的,诸如用在JPEG、MPEG和MP3编解码器中。至少在DEFLATE压缩的背景内,霍夫曼代码的生成包括取得直方图数据(权重)的数组,其中每个条目是符号或令牌出现在输出中的次数的计数,以及然后计算使权重和令牌长度的点积最小化的该令牌的对应代码长度。通常,保证权重的和小于64k,因此可以将权重存储为16位整数。计算代码所需要的时间是存在多少非零权重的函数。在DEFLATE中,对于距离代码(D树)而言存在多达30个值,但对于文字长度代码(LL树)而言存在多达286个值,因此用于LL数生成的时间一般是最大的。计算霍夫曼代码的经典方式使用堆数据结构(https://en.wikipedia.org/wiki/Heap_(data_structure))。这是相当高效的,但传统的软件实现包含许多分支,其是数据相关的并且因此对于通用CPU硬件而言难以进行预测。在利用深度流水线或超标量执行的现代处理器上,这些分支误预测的代价可能变成性能限制者。附图说明在结合附图理解时,本专利技术的前述方面和许多伴随的优点将随着其通过参考以下具体实施方式变得更好理解而变得更容易领会,其中贯穿各种视图相同的参考数字指代相同的部分,除非另外指定:图1是图示根据一个实施例的用来有序地返回三个输入值之中的最小的两个值的Compute-2MIN-v1r64srcdst,r32src2指令的基于硬件的实现的示意图;图1a是图示根据一个实施例的用来有返回三个输入值之中的最大的两个有序值的Compute-2MAX-v1r64srcdst,r32src2指令的基于硬件的实现的示意图;图2是图示根据一个实施例的用来有序地返回四个输入值之中的最小的两个值的Compute-2MIN-v2r64srcdst,r64src2指令的基于硬件的实现的示意图;图2a是图示根据一个实施例的用来有序地返回四个输入值之中的最大的两个值的Compute-2MAX-v2r64srcdst,r64src2指令的基于硬件的实现的示意图;图3是图示根据一个实施例的用来返回四个输入值之中(无序的)最小的两个值的Compute-2MIN-v3r64srcdst,r32src2指令的基于硬件的实现的示意图;图3a是图示根据一个实施例的用来返回四个输入值之中的最大的两个值的Compute-2MAX-v3r64srcdst,r32src2指令的基于硬件的实现的示意图;图4是图示基于Arm的微架构的示例的示意框图;图5是图示根据一个实施例的用来有序地返回三个输入值之中的最小的两个值的A64_Compute-2MIN-v1_GPRXd,Dm指令的基于64位ARM的硬件实现的示意图;图5a是图示根据一个实施例的用来有序地返回三个输入值之中的最大的两个值的A64_Compute-2MAX-v1_GPRXd,Dm指令的基于64位ARM的硬件实现的示意图;图6是图示根据一个实施例的用来并行地针对两个64位数据路径有序地返回三个输入值之中的最小的两个值的A64_Compute-2MIN-v1_VFPVd.2D,Vm.2DSIMD指令的基于64位ARM的硬件实现的示意图;图6a是图示根据一个实施例的用来并行地针对两个64位数据路径有序地返回三个输入值之中的最大的两个值的A64_Compute-2MAX-v1_VFPVd.2D,Vm.2DSIMD指令的基于64位ARM的硬件实现的示意图;图7是图示用于通过使用由A64_Compute-2MIN-v1_VFPVd.2D,Vm.2DSIMD指令处理的两个64位数据路径来并行地处理数组元素而确定数组中的两个最小值的方法的图;以及图7a是图示对图7的方法的增强的图,根据其使用A64_Compute-2MIN-v1_GPRXd,Dm指令来从自并行处理阶段输出的一对两个最小值之中确定两个最小值。具体实施方式在本文中描述了用于确定两个最小值和两个最大值的处理器指令以及关联的装置和方法的实施例。在以下描述中,阐述了众多特定细节以提供对本专利技术的实施例的透彻理解。然而,相关领域技术人员将认识到,可以在没有特定细节中的一个或多个的情况下或者利用其它方法、组件、材料等实践本专利技术。在其它实例中,未详细地示出或描述公知的结构、材料或操作以避免模糊本专利技术的各方面。贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在本专利技术的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在贯穿本说明书的各种地方中的出现不一定都指代相同实施例。此外,可以在一个或多个实施例中以任何适合的方式组合特定特征、结构或特性。为了清楚,本文中的图中的单独组件还可以通过其在图中的标签而不是通过特定参考号码来指代。另外,可以用随后是意味着“典型”的“(typ)”的参考号码示出指代(如与特定组件相对的)特定组件类型的参考号码。将理解,这些组件的配置将是可能存在但为了简单和清楚而未在绘图中示出的类似组件或没有被标注单独的参考号码的别的类似组件的特征。相反地,“(typ)”将不被解释为意味着通常将组件、元件等用于其公开的功能、实现、目的等。可以将基本霍夫曼算法概括为:1.将具有非零权重的条目插入到堆数组中。2.添加(每个具有权重1的)额外元素直到堆具有至少两个元素为止。3.将数组转换成堆。4.当在堆中存在不止一个元素时:a.从堆中移除两个元素(具有两个最小权重的元素)。b.创建新元素,所述新元素是这些元素的父母。c.将该新元素添加到堆。5.计算每个元素的代码长度,作为其在树中的深度。6.如果最大(max)代码长度太大,则调整树以使得其深度在限制内。7.根据长度而生成代码值。4.a中的主要步骤要求找到集合中的两个最小元素。比如堆之类的结构保持数据以使得易于访问最小(min)元素的方式组织;然而,添加/删除和更新堆要求遍历数据结构和执行操作,所述操作因为其趋向于是非常数据相关的而没有被良好地预测。代之以,我们仅保持元素列表作为数组未排序。这意味着在每个步骤(4.a)处,我们将需要找到未排序数组中的两个最小元素。虽然这要求更多操作,但是操作被良好地预测并且不是数据相关的,如将是具有堆或其它排序的结构的情况那样。我们因此定义可以找到元素数组中的两个最小元素的指令。当前指令仅必须支持找到集合的最小元素,暗示在用以找到两个最小元素的每个步骤处的两遍扫描算法和最小值计算。用于计算两个最小值的指令在大部分应用中,用于符号的权重可以适应16位整数。为了使得能够包括其它位字段连同权重,我们可以假定每个元素是32位宽。假定64位标本文档来自技高网...
用于确定两个最小值和两个最大值的处理器指令

【技术保护点】
1.一种具有包括2MIN指令的指令集架构(ISA)的处理器,所述2MIN指令具有两个操作数,其中在2MIN指令的执行期间加载包括第一和第二当前最小值以及至少一个比较值的数据参数,其中2MIN指令输出在第一和第二当前最小值以及所述至少一个比较值之中的两个最小值。

【技术特征摘要】
2016.12.22 US 15/3878231.一种具有包括2MIN指令的指令集架构(ISA)的处理器,所述2MIN指令具有两个操作数,其中在2MIN指令的执行期间加载包括第一和第二当前最小值以及至少一个比较值的数据参数,其中2MIN指令输出在第一和第二当前最小值以及所述至少一个比较值之中的两个最小值。2.权利要求1的处理器,其中有序地输出两个最小值。3.权利要求1或2的处理器,其中无序地输出两个最小值。4.前述权利要求中的任一个的处理器,其中将第一和第二当前最小值加载到单个寄存器中,作为第一当前最小值之后是第二最小值的并置。5.前述权利要求中的任一个的处理器,其中ISA包括多个微代码指令,并且其中经由从所述多个微代码指令之中的微代码指令的使用而至少部分地实现2MIN指令。6.前述权利要求中的任一个的处理器,其中所述至少一个比较值是第一和第二比较值,并且2MIN指令输出在第一和第二当前最小值以及第一和第二比较值之中的两个最小值。7.前述权利要求中的任一个的处理器,其中在硬件电路中实现2MIN指令,所述硬件电路包括:具有较高[63:32]和较低[31:0]32位部分的64位寄存器,64位寄存器用以将第一最小值min1存储在较高[63:32]部分中并且将第二最小值min2存储在较低[31:0]部分中;32位寄存器,用以存储比较值src2;第一比较器,其耦合到32位寄存器以接收src2值并且耦合到64位寄存器的较低[31:0]部分以接收min2值;第二比较器,其耦合到32位寄存器以接收src2值并且耦合到64位寄存器的较高[63:32]部分以接收min1值;以及多路复用器,其具有耦合到64位寄存器的较高[63:32]部分以接收min1值的第一输入、耦合到32位寄存器以接收src2值的第二输入、分别耦合到第一和第二比较器的输出的第一和第二控制输入、耦合到64位寄存器的较高[63:32]部分的第一输出,以及耦合到64位寄存器的较低[31:0]部分的第二输出。8.权利要求7的处理器,其中min1≤min2,指令的输出被存储作为存储在64位寄存器中的第一和第二输出最小值的并置,并且硬件电路包括逻辑,所述逻辑被配置成:如果src2≥min2,则输出min1并上min2;如果src2<min2且src2≥min1,则输出min1并上src2;以及如果src2<min2且src2<min1,则输出src2并上min1。9.前述权利要求中的任一个的处理器,其中在硬件电路中实现2MIN指令,所述硬件电路包括:具有较高[63:32]和较低[31:0]32位部分的64位srcdst寄存器,srcdst寄存器用以将第一最小值min1存储在较高[63:32]部分中并且将第二最小值min2存储在较低[31:0]部分中;具有较高[63:32]和较低[31:0]32位部分的64位src2寄存器,src2寄存器用以将第一比较值el1存储在较低32位部分[31:0]中并且将第二比较值el2存储在较高32位[63:32]中;src2选择器逻辑,其耦合到第二64位寄存器以选择src2寄存器的或者较高[63:32]部分或者较低[31:0]部分;第一比较器,其耦合到src2选择器逻辑的输出以接收el1或el2值并且耦合到64位srcdst寄存器的较低[31:0]部分以接收min2;第二比较器,其耦合到src2选择器逻辑的输出以接收el1或el2值并且耦合到64位srcdst寄存器的较高[63:32]部分以接收min1值;以及多路复用器,其具有耦合到64位srcdst寄存器的较高[63:32]部分以接收min1的第一输入、耦合到src2寄存器的较高[63:32]部分以接收el2值的第二输入、耦合到src2寄存器的较低[31:0]部分以接收el1值的第三输入、分别耦合到第一和第二比较器的输出的第一和第二控制输入、用以接收src2低或src2高信号的第三控制输入、耦合到64位srcdst寄存器的较高[63:32]部分的第一输出,以及耦合到64位srcdst寄存器的较低[31:0]部分的第二输出。10.权利要求9的处理器,其中min1≤min2,指令的输出被存储作为存储在64位srcdst寄存器中的第一和第二输出最小值的并置,并且硬件电路包括逻辑,所述逻辑被配置成:在第一时间帧期间,如果el1≥min2,则输出min1并上min2;如果el1<min2且el1≥min1,则输出min1并上src2;以及如果el1<min2且el1<min1,则输出src2并上min1;将min1和min2设置成与64位srcdst寄存器的较高[63:32]部分和较低[31:0]部分对应;在第二时间帧期间,如果el2≥min2,则输出min1并上min2;如果el2<min2且el2≥min1,则输出min1并上src2;以及如果el2<min2且el2<min1,则输出src2并上min1。11.前述权利要求中的任一个的处理器,其中在硬件电路中实现2MIN指令,所述硬件电路包括:具有较高[63:32]和较低[31:0]32位部分的64位寄存器,64位寄存器用以将第一最小值min1存储在较高[63:32]部分中并且将第二最小值min2存储在较低[31:0]部分中;32位寄存器,用以存储比较值src2;第一比较器,其耦合到32位寄存器以接收src2值并且耦合到64位寄存器的较低[31:0]部分以接收min2值;第二比较器,其耦合到32位寄存器以接收src2值并且耦合到64位寄存器的较高[63:32]部分以接收min1值;逻辑或门,其耦合到第一比较器的输出和第二比较器的输出;进位标志(CF);以及多路复用器,其具有耦合到64位寄存器的较高[63:32]部分以接收min1值的第一输入、耦合到32位寄存器以接收src2值的第二输入、分别耦合到逻辑或门和进位标志的输出的第一和第二控制输入;耦合到64位寄存器的较高[63:32]部分的第一输出,以及耦合到64位寄存器的较低[31:0]部分的第二输出。12.权利要求11的处理器,其中指令的输出被存储作为存储在64位寄存器中的第一和第二输出最小值的并置,并且硬件电路包括逻辑,所述逻辑被配置成:如果...

【专利技术属性】
技术研发人员:V戈帕尔J吉尔福特
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

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

1