【技术实现步骤摘要】
用于确定两个最小值和两个最大值的处理器指令
技术介绍
霍夫曼代码(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.一种具有包括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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。