CN107656756B - 查找第一个目标数的方法和装置、查找单元和处理器 - Google Patents
查找第一个目标数的方法和装置、查找单元和处理器 Download PDFInfo
- Publication number
- CN107656756B CN107656756B CN201710720004.0A CN201710720004A CN107656756B CN 107656756 B CN107656756 B CN 107656756B CN 201710720004 A CN201710720004 A CN 201710720004A CN 107656756 B CN107656756 B CN 107656756B
- Authority
- CN
- China
- Prior art keywords
- searched
- target
- target number
- bit
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 108010001267 Protein Subunits Proteins 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种查找第一个目标数的方法和装置,所述方法包括:提取针对目标数的查找指令,解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数,执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被存储在所述目的操作寄存器标识指定的寄存器位置中,使得可以用一条指令查找两侧第一个目标数,降低了代码空间,提升了执行效率,降低了功耗。
Description
技术领域
本发明涉及微处理器技术领域,特别是涉及一种查找第一个目标数的方法、一种查找第一个目标数的装置、一种查找单元和一种处理器。
背景技术
在微处理器的设计中,通常将应用程序频繁用到的操作设计为一条处理器的指令,以使该操作可以使用一条指令快速完成,而在应用程序中位运算是一类很有用的操作,比如在位图算法、串匹配查找等应用中均会频繁使用。
位运算中有一类设计巧妙,效率较高的统计前导0(或1),或者统计后导0(或1)的指令,也就是查找二进制数左侧第一个1(或0),或者查找二进制数右侧第一个1(或0)的指令,如果处理器中不支持这类指令,在处理相应位运算时往往需要一个循环块去执行,而支持这类指令的话则只需要1条指令即可。
但在位运算中很多时候需要查找左侧和右侧的第一个1(或0),也可能需要连续查找左侧(或右侧)第一个1(或0)。这类运算在使用查找二进制数中第一个1(或0)的指令,依然需要多条指令才能完成。
比如有一种位图算法应用为效率极高的位图排序算法(时间复杂度为O(n)),即用一个二进制数表示所有待排序的数,对于要排序的数,则置上二进制数中的相应bit(比特)位。比如,对于一组待排序的数{5,7,3,9},使用二进制数1010101000就可表示,二进制数中第9bit为1就是表示数字9在待排序数集合中。显然在将待排序数录入到二进制数中就相当于完成了排序,后续需要从二进制数中依照顺序读出待排序的数,这时就需要连续查找左侧(或右侧)第一个1了。从二进制数中读出待排序的数,就算是使用已有的查找二进制数中第一个1的指令,依然需要使用至少2n条指令(n为待排序数的个数)。
再比如位图算法的另一种应用为资源分配表,比如在操作系统内存管理算法中有一种位图标记法,假设总的待分配内存大小为N字节,管理内存的粒度为M字节,并且N=M*K,则使用K位的二进制数就可以表示所有内存单元是否已分配(1表示已分配,0表示未分配)。如果有新内存分配请求过来,假设其需要请求L个M字节的内存单元,则需要在K位二进制数中查找L个连续的0,这时候可以使用从右侧查找第一个1的指令,如果结果大于等于L,就表示查找成功,否则从第一个1向右继续查找下一个1。显然就每条查找第一个1的指令,只能完成一次搜索。
再比如在串匹配应用中需要往往提取不匹配的字符段,比如字符串“abcdef”和字符串“abedcf”匹配,在匹配时可以使用一个6位的二进制数表示是否匹配,本例中6位二进制则为110001,表示前2位和最后一位字符匹配。现发现不匹配后,想提取中间不匹配的段“cde”和“edc”。就算使用已有的查找第一个1的指令,依然需要二条及以上(还需判断查找到的1是否重合)的指令。
发明人经研究发现,如果使用一个循环体从二进制数左侧开始查找第一个1(或0),再使用另一个循环体从二进制数右侧开始查找第一个1(或0)。循环体编译得到的处理器指令极多,占用过多的代码存储空间,而且执行效率很低,需要多拍甚至十几拍处理器周期才能运算完成,因而功耗也很大。而现有部分处理器中支持统计前导0(或1),也就是查找二进制数中左侧第一个1(或0),相应也可能会支持统计后导0(或1),也就是查找二进制数中右侧第一个1(或0)。在这类处理器中,处理相关位运算比方案一高效很多。但一条指令只能完成一次查找,n次查找需要n条指令,执行效率仍然偏低,功耗也偏大。
发明内容
本发明实施例所要解决的技术问题是提供一种查找第一个目标数的方法和装置、一种查找单元和一种处理器,以便解决查找第一个目标数效率低、功耗大的问题。
为了解决上述问题,本发明公开了一种查找第一个目标数的方法,包括:
提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置;
解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数;
执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
可选地,所述在所述待查找数中查找两侧第一个目标数的第一位置和第二位置包括:
在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置。
可选地,所述查找包括至少一级查找;
所述在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置包括:
将所述待查找数按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则一级查找的右输出的值为目标数,所述n为正整数;
根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第一位置,并从最低位向最高位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第二位置。
可选地,当上一级查找的所有全输出的值的位数不低于2n位时,所述在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置还包括:
将上一级查找的所有全输出的值再按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则下一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则下一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则下一级查找的右输出的值为目标数。
可选地,所述查找指令还包括操作码,所述解码所述查找指令还包括:
根据所述操作码确定查找两侧第一个目标数要执行的操作。
相应的,本发明实施例还提供了一种查找第一个目标数的装置,包括:
指令提取模块,用于提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置;
指令解码模块,用于解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数;
指令执行模块,用于执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
可选地,所述指令执行模块包括:
位置查找子模块,用于在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置。
可选地,所述查找包括至少一级查找;
所述位置查找子模块包括:
第一判定单元,用于将所述待查找数按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则一级查找的右输出的值为目标数,所述n为正整数;
位置确定单元,用于根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第一位置,并从最低位向最高位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第二位置。
可选地,当上一级查找的所有全输出的值的位数不低于2n位时,所述位置查找子模块还包括:
第二判定子模块,用于将上一级查找的所有全输出的值再按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则下一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则下一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则下一级查找的右输出的值为目标数。
可选地,所述查找指令还包括操作码,所述指令解码模块还包括:
操作确定单元,用于根据所述操作码确定查找两侧第一个目标数要执行的操作。
相应的,本发明实施例还提供了一种在处理器上实现以执行所述查找指令的查找单元,包括:
执行如下逻辑的电路:
根据查找指令,在待查找数中查找两侧第一个目标数的第一位置和第二位置,所述第一位置和第二位置分别存储在两个目的操作寄存器标识指定的寄存器位置中;所述两个目的操作寄存器标识由所述查找指令携带。
可选地,所述查找单元包括多个查找逻辑子单元和查找结果转换子单元;其中,
每2n位所述待查找数的输入连接一个查找逻辑子单元,所述n为正整数,所述查找逻辑子单元中的每一个均包括执行如下逻辑的电路:
判定输入的2n位数据有至少一个目标数,则置全输出的值为目标数,并且判定2n位数据的高n位有至少一个目标数,则置左输出的值为目标数;并且判定2n位数据的低n位有至少一个目标数,则置右输出的值为目标数;
多个查找逻辑子单元的各个输出连接一个查找结果转换子单元,所述查找结果转换子单元包括执行如下逻辑的电路:
根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定出现的第一个目标数所在的第一位置,并且在最低位向最高位查找出现的第一个目标数所在的n位数据,从查找的n位数据中确定出现的第一个目标数所在的第二位置。
可选地,还包括:
每2n个全输出连接一个查找逻辑子单元。
可选地,当目标数为0时,所述查找逻辑子单元包括全与门电路,左与门电路,右与门电路,当目标数为1时,所述查找逻辑子单元包括全或门电路,左或门电路,右或门电路,其中,
所述全或门电路或全与门电路的2n位输入端连接所述查找逻辑子单元的2n位输入,1位输出端连接所述查找逻辑子单元的全输出;
所述左或门电路或左与门电路的n位输入端连接所述查找逻辑子单元的高n位输入,1位输出端连接所述查找逻辑子单元的左输出;
所述右或门电路或右与门电路的n位输入端连接所述查找逻辑子单元的低n位输入,1位输出端连接所述查找逻辑子单元的右输出。
相应的,本发明实施例还提供了一种处理器,包括:
取指单元,用于提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置;
解码单元,用于从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数;
查找单元,用于在待查找数中查找两侧第一个目标数的第一位置和第二位置,并且将所述第一位置和第二位置分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
依据本发明实施例,通过提取针对目标数的查找指令,解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数,执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被存储在所述目的操作寄存器标识指定的寄存器位置中,使得可以用一条指令查找两侧第一个目标数,降低了代码空间,提升了执行效率,降低了功耗。
附图说明
图1示出了根据本发明实施例一的一种查找第一个目标数的方法的步骤流程图;
图2示出了根据本发明实施例的针对目标数的查找指令的示意图;
图3示出了根据本发明实施例二的一种查找第一个目标数的装置实施例的结构框图;
图4示出了根据本发明实施例四的一种在处理器上实现以执行所述查找指令的查找单元的示意图;
图5示出了根据本发明实施例的查找逻辑子单元的电路示意图;
图6示出了根据本发明实施例五的一种处理器的结构框图;
图7示出了根据本发明实施例的一种处理器的指令执行架构的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
参照图1,示出了根据本发明实施例一的一种查找第一个目标数的方法的步骤流程图,具体可以包括如下步骤:
步骤101,提取针对目标数的查找指令。
在本发明实施例中,目标数包括0或1,也就是本发明可以是针对1的查找指令,或者针对0的查找指令。处理器可以从程序记忆体中检索指令(为数值或一系列数值),由程序计数器(Program Counter,PC)指定程序记忆体的位置,程序计数器保存供识别目前程序位置的数值。例如,按照针对目标数的查找指令在程序中出现的先后次序从内存或指令缓存中提取查找指令,并送入指令解码的阶段。一般是将当前指令取到指令寄存器中。
在本发明实施例中,依据针对目标数的查找指令的格式,查找指令包括一个源操作寄存器标识。依据源操作寄存器标识可以从处理器的寄存器中读出二进制数据作为待查找数。源操作寄存器标识可以是处理器的寄存器地址,指向的寄存器位置存放着二进制的待查找数。
在本发明实施例中,依据针对目标数的查找指令的格式,查找指令包括两个目的操作寄存器标识,依据两个目的操作寄存器标识可以将查找指令的两个结果分别存入处理器的寄存器中。目的操作寄存器标识可以是处理器的寄存器地址,指向的寄存器位置用于存放着存放查找指令的结果。
例如,如图2所示的针对目标数的查找指令的示意图,依据图中所示的查找指令的格式,取出的查找指令包括一个源寄存器号,从源寄存器号指向的寄存器可以获得源操作数作为待查找数,还可以包括两个目的寄存器号,将查找到左侧第一个1(或0)的位置第n位作为目的操作数1存入目的寄存器号1指向的寄存器中,将查找到右侧第一个1(或0)的位置第m位作为目的操作数2存入目的寄存器号2指向的寄存器中,由于左侧为高位,右侧为低位,所以n大于等于m。其中,MSB(Most Significant Bit)为最高有效位,LSB(LeastSignificant Bit)为最低有效位,在32位的处理器中,MSB为第31位,LSB位第0位。
步骤102,解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数。
在本发明实施例中,处理器解码查找指令,指令被拆解为有意义的片断,根据处理器的指令集架构定义将数值解译为指令。对查找指令进行解码,可以从源操作寄存器标识指定的寄存器位置,获取查找指令指向的二进制的待查找数,例如,查找指令的一部分数值为源操作寄存器号,其指示存储待查找数的寄存器。
在一些实施例中,处理器包括硬件解码单元,查找指令被提供给解码单元,具体可以使用各种不同的公知解码单元,本发明实施例对此不作限制。
步骤103,执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
在本发明实施例中,查找指令在提取和解码阶段之后,进入执行阶段。在执行阶段,进行在待查找数中查找两侧第一个目标数的第一位置和第二位置的运算,具体可以同时从待查找数的两侧进行查找,也可以将待查找数分为多段,同时查找目标数的位置再确定位于最高位和最低位的目标数,具体可以包括任意适用的方式,本申请实施例对此不做限制。例如,可以从最高位向最低位查找出现的第一个目标数的第一位置,并且在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置。具体需要连接到各种能够进行所需运算的处理器部件,例如,针对1的查找指令,查找单元将会连接到一组输入和一组输出。输入提供了待查找数,并且在输出将含有两个查找的结果。查找单元内含电路系统,以于输出端完成简单的普通运算和逻辑运算。查找指令执行后得到的结果第一位置和第二位置,可以存储到目的操作寄存器标识指定的寄存器位置,具体可以将第一位置和第二位置按照设定分别存储两个目的操作寄存器标识指定的两个寄存器位置。
例如,待查找数A为“00110010101010001001010100000000”,针对1的查找指令,32位二进制数的最高有效位为31bit,最低有效位为0bit。针对待查找数A,从高到低每4位数字作为一个子部分进行查找,每4个子部分的查找结果作为一个部分进行查找,先确定待查找数A中高16位数和低16位数中都有数字1,在这高16位数中确定高8位数中有1,再在高8位数中确定高4位数中有1,再在高4位数中确定高2位数中没有1且低2位数中有1,在这低2位数中找到较高位的1,从最高位向最低位查找第一个1得到的第一位置为29bit;同时,在低16位数中确定低8位数中没有1且高8位数中有1,再在高8位数中确定低4位数中有1,再在低4位数中确定低2位数中有1,在这低2位数中找到较低位的1,从最低位向最高位查找第一个1得到的第二位置为8bit。
在实际应用中,对于需要连续查找左侧(或右侧)第一个目标数的操作,大部分也可以采用同时查找两侧的第一个目标数的操作来完成。
依据本发明实施例,通过提取针对目标数的查找指令,解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数,执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被分别存储在所述两个目的操作寄存器标识指定的寄存器位置中,使得可以用一条指令查找两侧第一个目标数,降低了代码空间,提升了执行效率,降低了功耗。
在本发明实施例中,优选地,所述在所述待查找数中查找两侧第一个目标数的第一位置和第二位置的一种实现方式为:在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置。查找目标数时,可以分别从最高位向最低位,从最低位向最高位同时进行,以更快地查找到第一位置和第二位置。
在本发明实施例中,优选地,在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置的一种优选实现方案中,所述查找包括至少一级查找,将待查找数分而治之,n为正整数,针对待查找数,按照每2n位划分一组,针对每2n位数,判定2n位数据有至少一个目标数,则一级查找的全输出的值为目标数,并且,判定2n位数据的高n位有至少一个目标数,则一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则一级查找的右输出的值为目标数。
根据一级查找的全输出的值,可以从最高位向最低位查找出现的第一个目标数所在的一级查找的全输出对应的2n位数据,同时可以从最低位向最高位查找出现的第一个目标数所在的一级查找的全输出对应的2n位数据。再根据一级查找的左输出和右输出的值,可以从最高位向最低位查找出现的第一个目标数所在的2n位数据中的n位数据,同时可以从最低位向最高位查找出现的第一个目标数所在的2n位数据中的n位数据。最后从最高位向最低位在查找的n位数据中确定出现的第一个目标数所在的第一位置,同时,从最低位向最高位在查找的n位数据中确定出现的第一个目标数所在的第二位置。
例如,以32位的待查找数A为例,针对1的查找指令,查找可以有一级,按照每4位所述待查找数划分,判定4位数据有至少一个目标数,则一级查找的全输出的值为目标数,得到从高到低的全输出依次为“11111100”。同时,判定4位数据的高两位有至少一个目标数,则一级查找的左输出的值为目标数,得到从高到低的左输出依次为“00111100”,并判定4位数据的低两位是有至少一个目标数,则一级查找的右输出的值为目标数,得到从高到低的右输出依次为“11101100”。根据一级查找的全输出的值,可以从最高位向最低位查找出现的第一个目标数在划分的第一组4位数据中,并且可以从最低位向最高位查找出现的第一个目标数在划分的第6组4位数据中。再根据一级查找的左输出和右输出的值,可以从最高位向最低位查找出现的第一个目标数在划分的第一组4位数据中的低2位数据,以及可以从最低位向最高位查找出现的第一个目标数在划分的第6组4位数据中的低2位数据。最后从最高位向最低位在划分的第一组4位数据中的低2位数据中确定出现的第一个目标数所在的第一位置为29bit,同时,从最低位向最高位在划分的第6组4位数据中的低2位数据中确定出现的第一个目标数所在的第二位置为8bit。
在本发明实施例中,优选地,当上一级查找的所有全输出的值的位数不低于2n位时,在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置的一种优选实现方案中,还可以包括:将上一级查找的所有全输出的值再按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则下一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则下一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则下一级查找的右输出的值为目标数。查找至少可以有一级,随着待查找数的位数增多,当上一级查找的所有全输出的值的位数不低于2n位就可以随之增加查找的级数,具体可以包括任意适用的级数的查找,本申请实施例对此不做限制。
例如,仍以32位的待查找数A为例,针对1的查找指令,查找可以有多于一级,按照每4位所述待查找数划分,判定4位数据有至少一个目标数,则一级查找的全输出的值为目标数,得到从高到低的全输出依次为“11111100”。同时,判定4位数据的高两位有至少一个目标数,则一级查找的左输出的值为目标数,得到从高到低的左输出依次为“00111100”,并判定4位数据的低两位是有至少一个目标数,则一级查找的右输出的值为目标数,得到从高到低的右输出依次为“11101100”。在进行过一级查找后,一级查找的全输出的值的位数为8,不低于2n位,因此可以再进行二级查找。再针对每4个一级查找的全输出的值,判定4个值有至少一个目标数,则二级查找的全输出的值为目标数,得到从高到低的全输出依次为“11”。同时,判定4个值的高2位有至少一个目标数,则二级查找的左输出的值为目标数,得到从高到低的左输出依次为“11”,同时,判定4个值的低2位有至少一个目标数,则二级查找的右输出的值为目标数,得到从高到低的右输出依次为“10”。
根据以上各个二级查找的全输出的值、可以从最高位向最低位查找出现的第一个目标数在高16位数据,同时可以从最低位向最高位查找出现的第一个目标数在低16位数据。再根据二级查找的左输出和右输出的值,可以从最高位向最低位查找出现的第一个目标数在高16位数据中的高8位数据,同时可以从最低位向最高位查找出现的第一个目标数在低16位数据中的高8位数据。再根据一级查找的全输出的值,可以从最高位向最低位查找出现的第一个目标数在高16位数据中的高8位数据中的高4位数据中,同时可以从最低位向最高位查找出现的第一个目标数在低16位数据中的高8位数据低4位数据中。再根据一级查找的左输出和右输出的值,可以从最高位向最低位查找出现的第一个目标数在划分的第一组4位数据中的低2位数据,同时可以从最低位向最高位查找出现的第一个目标数在划分的第6组4位数据中的低2位数据。最后从最高位向最低位在划分的第一组4位数据中的低2位数据中确定出现的第一个目标数所在的第一位置为29bit,同时,从最低位向最高位在划分的第6组4位数据中的低2位数据中确定出现的第一个目标数所在的第二位置为8bit。
上述查找两侧第一个目标数的方法是一种适用的方法,但具体实现方法包括但不限于这种方法。
在本发明实施例中,优选地,依据针对目标数的查找指令的格式,查找指令包括操作码,所述解码所述查找指令还可以包括:根据所述操作码确定查找两侧第一个目标数要执行的操作。操作码其实就是指令序列号,用来告诉处理器需要执行哪一条指令。通过解码可以确定查找指令为同时查找两侧第一个目标数的指令,例如,查找指令的一部分数值为操作码,其指示要进行哪些运算。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例二
参照图3,示出了根据本发明实施例二的一种查找第一个目标数的装置实施例的结构框图,具体可以包括如下模块:
指令提取模块201,用于提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置;
指令解码模块202,用于解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数;
指令执行模块203,用于执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
在本发明实施例中,优选地,所述指令执行模块包括:
位置查找子模块,用于在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置。
在本发明实施例中,优选地,所述位置查找子模块包括:
第一判定单元,用于将所述待查找数按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则一级查找的右输出的值为目标数,所述n为正整数;
位置确定单元,用于根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第一位置,并从最低位向最高位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第二位置。
在本发明实施例中,优选地,当上一级查找的所有全输出的值的位数不低于2n位时,所述位置查找子模块还包括:
第二判定子模块,用于将上一级查找的所有全输出的值再按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则下一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则下一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则下一级查找的右输出的值为目标数。
在本发明实施例中,优选地,所述查找指令还包括操作码,所述指令解码模块还包括:
操作确定单元,用于根据所述操作码确定查找两侧第一个目标数要执行的操作。
依据本发明实施例,通过提取针对目标数的查找指令,解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数,执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被分别存储在所述两个目的操作寄存器标识指定的寄存器位置中,使得可以用一条指令查找两侧第一个目标数,降低了代码空间,提升了执行效率,降低了功耗。
实施例三
本发明实施例的一种在处理器上实现以执行所述查找指令的查找单元执行如下逻辑的电路:
根据查找指令,在待查找数中查找两侧第一个目标数的第一位置和第二位置,所述第一位置和第二位置分别存储在两个目的操作寄存器标识指定的寄存器位置中;所述两个目的操作寄存器标识由所述查找指令携带。
依据本发明实施例,通过在处理器上实现以执行所述查找指令的查找单元执行如下逻辑的电路:根据查找指令,在待查找数中查找两侧第一个目标数的第一位置和第二位置,使得可以用一条指令同时查找两侧第一个目标数,降低了代码空间,提升了执行效率,降低了功耗。
实施例四
根据本发明实施例四的一种在处理器上实现以执行所述查找指令的查找单元的示意图,具体可以包括如下模块:
每2n位所述待查找数的输入连接一个查找逻辑子单元,所述n为正整数,所述查找逻辑子单元中的每一个均包括执行如下逻辑的电路:
每2n位所述待查找数的输入连接一个查找逻辑子单元,所述n为正整数,所述查找逻辑子单元中的每一个均包括执行如下逻辑的电路:
判定输入的2n位数据有至少一个目标数,则置全输出的值为目标数,并且判定2n位数据的高n位有至少一个目标数,则置左输出的值为目标数;并且判定2n位数据的低n位有至少一个目标数,则置右输出的值为目标数;
多个查找逻辑子单元的各个输出连接一个查找结果转换子单元,所述查找结果转换子单元包括执行如下逻辑的电路:
根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定出现的第一个目标数所在的第一位置,并且在最低位向最高位查找出现的第一个目标数所在的n位数据,从查找的n位数据中确定出现的第一个目标数所在的第二位置。
在本发明实施例中,优选地,还包括:
每2n个全输出连接一个查找逻辑子单元。
例如,如图4所示,n为2时,查找逻辑子单元Find4_3电路执行的逻辑为:对于针对1的查找指令,如果在4位输出上找到至少一个1,则置全输出为1,同时如果左侧2位找到至少一个1,则置左输出为1,同时如果右侧2位找到至少一个1,则置右输出为1。而对于针对0的查找指令,如果在4位输出上找到至少一个0,则置全输出为0,同时如果左侧2位找到至少一个0,则置左输出为0,同时如果右侧2位找到至少一个0,则右输出为0。
对于32位的待查找数,将32位数据分成左右两半,同时查找两侧的目标数,对于每一半,再分为4个部分,每个部分连接查找逻辑子单元,每个查找逻辑子单元对4位数据查找两侧的目标数。
查找结果转换子单元则依据所有查找逻辑子单元的输出确定两侧目标数的位置,比如针对0的查找指令,如果Find4_3(i)单元的输出C为1,则说明左侧第一个0不在32位数据的高16位,自然右侧第一个0也不在32位数据的高16位,以此类推。具体实现的逻辑可以参见前述实施例的描述,此处不另赘述。
在本发明实施例中,优选地,针对查找的目标数,当目标数为0时,查找逻辑子单元包括全与门电路,左与门电路,右与门电路,当目标数为1时,查找逻辑子单元包括全或门电路,左或门电路,右或门电路,其中,全或门电路或全与门电路的2n位输入端连接所述查找逻辑子单元的2n位输入,1位输出端连接所述查找逻辑子单元的全输出;左或门电路或左与门电路的n位输入端连接所述查找逻辑子单元的高n位输入,1位输出端连接所述查找逻辑子单元的左输出;右或门电路或右与门电路的n位输入端连接所述查找逻辑子单元的低n位输入,1位输出端连接所述查找逻辑子单元的右输出。
例如,如图5所示的查找逻辑子单元的电路示意图。执行针对0的查找指令的查找单元,引脚A3、A2、A1、A0都连接一个与门电路,输出为C,引脚A3和A2连接一个与门电路,输出为L,引脚A1和A0连接一个与门电路,输出为R。对于与门电路,如果输入的数据中有至少一个0,则输出为0,如果输入的数据中没有一个0,则输出为1。
执行针对1的查找指令的查找单元,4个引脚都连接一个或门电路,输出为C,高位两个引脚连接一个或门电路,输出为L,低位两个引脚连接一个或门电路,输出为R。对于或门电路,如果输入的数据中有至少一个1,则输出为1,如果输入的数据中没有一个1,则输出为0。
依据本发明实施例,查找单元可以包括多个查找逻辑子单元和查找结果转换子单元,每2n位所述待查找数的输入连接一个查找逻辑子单元,多个查找逻辑子单元的各个输出连接一个查找结果转换子单元,查找结果转换子单元根据查找逻辑子单元的各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定出现的第一个目标数所在的第一位置,同时,在最低位向最高位查找出现的第一个目标数所在的n位数据,从查找的n位数据中确定出现的第一个目标数所在的第二位置。,使得可以用一条指令同时查找两侧第一个目标数,降低了代码空间,提升了执行效率,降低了功耗,而且因为查找可以同时在每一小段的二进制数中进行,因而提高了查找的效率。
实施例五
参照图6,示出了根据本发明实施例五的一种处理器的结构框图,具体可以包括如下单元:
取指单元301,用于提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置。
解码单元302,用于从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数。
查找单元303,用于在待查找数中查找两侧第一个目标数的第一位置和第二位置,并且将所述第一位置和第二位置分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
在本发明实施例中,具体实现可以参见前述实施例的描述,此处不另赘述。
如图7所示的一种处理器的指令执行架构的示意图,还包括有重命名单元,发射单元,重排序队列,访存相关单元等。其中重命名单元,发射单元,重排序队列对于非乱序执行的处理器并不需要,本发明实施例中的针对目标数的查找指令对应多个目的操作数,对于非乱序执行的处理器来说,出于精简考虑,指令只会有一个目的操作数,但随着多发射、乱序执行等技术出现,一条指令对应多个目的操作数并不会为设计带来复杂度。
其中,重命名单元是为了避免反向依赖的问题,乱序执行时要进行重命名(Rename)处理。重命名处理将程序中记载的寄存器编号(称为“逻辑寄存器”)对应到物理寄存器编号上。各指令写入结果的逻辑寄存器一定要分配到空闲的物理寄存器上。发射单元可以在一个周期内将多条指令发射到执行单元。重排序队列用于将处理器要执行的指令进行顺序调整,以达到乱序执行的目的。访存相关单元可以将查找指令的结果写入相应的内存中。
依据本发明实施例,通过提取针对目标数的查找指令,解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数,执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被存储在所述目的操作寄存器标识指定的寄存器位置中,使得可以用一条指令查找两侧第一个目标数,降低了代码空间,提升了执行效率,降低了功耗。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
此外,本实施例还提供一种存储介质,其上存储有计算机程序,特别的,该程序被处理器执行时实现上述实施例一种所描述的方法步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种查找第一个目标数的方法和装置、一种查找单元和一种处理器,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (15)
1.一种查找第一个目标数的方法,其特征在于,包括:
提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置,所述查找指令用于连续查找第一个目标数时,同时查找两侧的第一个目标数;
解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数;
执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
2.根据权利要求1所述的方法,其特征在于,所述在所述待查找数中查找两侧第一个目标数的第一位置和第二位置包括:
在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置。
3.根据权利要求2所述的方法,其特征在于,所述查找包括至少一级查找;
所述在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置包括:
将所述待查找数按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则一级查找的右输出的值为目标数,所述n为正整数;
根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第一位置,并从最低位向最高位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第二位置。
4.根据权利要求3所述的方法,其特征在于,当上一级查找的所有全输出的值的位数不低于2n位时,所述在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置还包括:
将上一级查找的所有全输出的值再按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则下一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则下一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则下一级查找的右输出的值为目标数。
5.根据权利要求1所述的方法,其特征在于,所述查找指令还包括操作码,所述解码所述查找指令还包括:
根据所述操作码确定查找两侧第一个目标数要执行的操作。
6.一种查找第一个目标数的装置,其特征在于,包括:
指令提取模块,用于提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置,所述查找指令用于连续查找第一个目标数时,同时查找两侧的第一个目标数;
指令解码模块,用于解码所述查找指令,使得从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数;
指令执行模块,用于执行经解码的查找指令,使得在所述待查找数中查找两侧第一个目标数的第一位置和第二位置,并且所述第一位置和第二位置被分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
7.根据权利要求6所述的装置,其特征在于,所述指令执行模块包括:
位置查找子模块,用于在待查找数中从最高位向最低位查找出现的第一个目标数的第一位置以及,在待查找数中从最低位向最高位查找出现的第一个目标数的第二位置。
8.根据权利要求7所述的装置,其特征在于,所述查找包括至少一级查找;
所述位置查找子模块包括:
第一判定单元,用于将所述待查找数按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则一级查找的右输出的值为目标数,所述n为正整数;
位置确定单元,用于根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第一位置,并从最低位向最高位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定所述第二位置。
9.根据权利要求8所述的装置,其特征在于,当上一级查找的所有全输出的值的位数不低于2n位时,所述位置查找子模块还包括:
第二判定子模块,用于将上一级查找的所有全输出的值再按照每2n位划分,针对每2n位,判定2n位数据有至少一个目标数,则下一级查找的全输出的值为目标数;并判定2n位数据的高n位有至少一个目标数,则下一级查找的左输出的值为目标数,以及判定2n位数据的低n位有至少一个目标数,则下一级查找的右输出的值为目标数。
10.根据权利要求6所述的装置,其特征在于,所述查找指令还包括操作码,所述指令解码模块还包括:
操作确定单元,用于根据所述操作码确定查找两侧第一个目标数要执行的操作。
11.一种在处理器上实现以执行查找指令的查找单元,其特征在于,包括:
执行如下逻辑的电路:
根据查找指令,在待查找数中查找两侧第一个目标数的第一位置和第二位置,所述第一位置和第二位置分别存储在两个目的操作寄存器标识指定的寄存器位置中;所述两个目的操作寄存器标识由所述查找指令携带,所述查找指令用于连续查找第一个目标数时,同时查找两侧的第一个目标数。
12.根据权利要求11所述的查找单元,其特征在于,所述查找单元包括多个查找逻辑子单元和查找结果转换子单元;其中,
每2n位所述待查找数的输入连接一个查找逻辑子单元,所述n为正整数,所述查找逻辑子单元中的每一个均包括执行如下逻辑的电路:
判定输入的2n位数据有至少一个目标数,则置全输出的值为目标数,并且判定2n位数据的高n位有至少一个目标数,则置左输出的值为目标数;并且判定2n位数据的低n位有至少一个目标数,则置右输出的值为目标数;
多个查找逻辑子单元的各个输出连接一个查找结果转换子单元,所述查找结果转换子单元包括执行如下逻辑的电路:
根据各个输出的值,从最高位向最低位查找出现的第一个目标数所在的n位数据,在查找的n位数据中确定出现的第一个目标数所在的第一位置,并且在最低位向最高位查找出现的第一个目标数所在的n位数据,从查找的n位数据中确定出现的第一个目标数所在的第二位置。
13.根据权利要求12所述的查找单元,其特征在于,还包括:
每2n个全输出连接一个查找逻辑子单元。
14.根据权利要求12或13所述的查找单元,其特征在于,当目标数为0时,所述查找逻辑子单元包括全与门电路,左与门电路,右与门电路,当目标数为1时,所述查找逻辑子单元包括全或门电路,左或门电路,右或门电路,其中,
所述全或门电路或全与门电路的2n位输入端连接所述查找逻辑子单元的2n位输入,1位输出端连接所述查找逻辑子单元的全输出;
所述左或门电路或左与门电路的n位输入端连接所述查找逻辑子单元的高n位输入,1位输出端连接所述查找逻辑子单元的左输出;
所述右或门电路或右与门电路的n位输入端连接所述查找逻辑子单元的低n位输入,1位输出端连接所述查找逻辑子单元的右输出。
15.一种处理器,其特征在于,包括:
取指单元,用于提取针对目标数的查找指令,所述目标数包括0或1,所述查找指令包括一个源操作寄存器标识和两个目的操作寄存器标识,其中所述源操作寄存器标识和目的操作寄存器标识指定寄存器位置,所述查找指令用于连续查找第一个目标数时,同时查找两侧的第一个目标数;
解码单元,用于从所述源操作寄存器标识指定的寄存器位置中,获取所述查找指令指向的二进制的待查找数;
查找单元,用于在待查找数中查找两侧第一个目标数的第一位置和第二位置,并且将所述第一位置和第二位置分别存储在所述两个目的操作寄存器标识指定的寄存器位置中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710720004.0A CN107656756B (zh) | 2017-08-21 | 2017-08-21 | 查找第一个目标数的方法和装置、查找单元和处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710720004.0A CN107656756B (zh) | 2017-08-21 | 2017-08-21 | 查找第一个目标数的方法和装置、查找单元和处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107656756A CN107656756A (zh) | 2018-02-02 |
CN107656756B true CN107656756B (zh) | 2020-07-28 |
Family
ID=61128427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710720004.0A Active CN107656756B (zh) | 2017-08-21 | 2017-08-21 | 查找第一个目标数的方法和装置、查找单元和处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107656756B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116227392B (zh) * | 2023-05-09 | 2023-08-11 | 国仪量子(合肥)技术有限公司 | 比特特征位置的查找方法、存储介质和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1143218A (zh) * | 1994-09-29 | 1997-02-19 | 国际商业机器公司 | 确定二进制数据域中前导零或一的数量的方法和装置 |
CN102664637A (zh) * | 2012-04-12 | 2012-09-12 | 北京中科晶上科技有限公司 | 确定二进制数据前导零个数的方法及装置 |
CN103543980A (zh) * | 2013-11-07 | 2014-01-29 | 吴胜远 | 数字数据处理的方法及装置 |
CN105786444A (zh) * | 2014-12-26 | 2016-07-20 | 联想(北京)有限公司 | 一种浮点数尾数前导零检测方法及装置 |
CN105892995A (zh) * | 2016-03-28 | 2016-08-24 | 龙芯中科技术有限公司 | 查找负数的方法、装置及处理器 |
-
2017
- 2017-08-21 CN CN201710720004.0A patent/CN107656756B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1143218A (zh) * | 1994-09-29 | 1997-02-19 | 国际商业机器公司 | 确定二进制数据域中前导零或一的数量的方法和装置 |
CN102664637A (zh) * | 2012-04-12 | 2012-09-12 | 北京中科晶上科技有限公司 | 确定二进制数据前导零个数的方法及装置 |
CN103543980A (zh) * | 2013-11-07 | 2014-01-29 | 吴胜远 | 数字数据处理的方法及装置 |
CN105786444A (zh) * | 2014-12-26 | 2016-07-20 | 联想(北京)有限公司 | 一种浮点数尾数前导零检测方法及装置 |
CN105892995A (zh) * | 2016-03-28 | 2016-08-24 | 龙芯中科技术有限公司 | 查找负数的方法、装置及处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN107656756A (zh) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6163171B2 (ja) | ソート加速プロセッサ、方法、システムおよび命令 | |
JP6930702B2 (ja) | プロセッサ | |
JP6363739B2 (ja) | メモリ階層内に組み込まれたエントロピーエンコーディングされたソフトウェアの記憶および変換のための方法および装置 | |
US10664281B2 (en) | Apparatuses and methods for dynamic asymmetric scaling of branch predictor tables | |
US8904153B2 (en) | Vector loads with multiple vector elements from a same cache line in a scattered load operation | |
US5903760A (en) | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA | |
KR100578439B1 (ko) | 3-바이트 이스케이프 조작 코드를 이용한 명령 세트 확장 | |
US20040139429A1 (en) | System and method for fusing instructions | |
KR101596118B1 (ko) | 다중 데이터 요소-대-다중 데이터 요소 비교 프로세서들, 방법들, 시스템들, 및 명령어들 | |
JP5973507B2 (ja) | 命令を圧縮する方法及び圧縮された命令を実行するプロセッサ | |
CN108292228B (zh) | 用于基于通道的步进收集的系统、设备和方法 | |
US6779103B1 (en) | Control word register renaming | |
US20020199090A1 (en) | Conditional branch execution | |
CN107656756B (zh) | 查找第一个目标数的方法和装置、查找单元和处理器 | |
US20220050680A1 (en) | Tracking load and store instructions and addresses in an out-of-order processor | |
US20140189294A1 (en) | Systems, apparatuses, and methods for determining data element equality or sequentiality | |
EP3340038A1 (en) | Processor instructions for determining two minimum and two maximum values | |
US4977497A (en) | Data processor | |
US20120260062A1 (en) | System and method for providing dynamic addressability of data elements in a register file with subword parallelism | |
US20070022271A1 (en) | Processor with changeable correspondences between opcodes and instructions | |
EP3798825A1 (en) | Instruction length decoder system and method | |
US20230409326A1 (en) | Device, method and system for executing a tile load and expand instruction | |
US12021551B2 (en) | Method and apparatus for efficient deflate decompression using content-addressable data structures | |
Sebastio et al. | Optimized asip architecture for compressed BWT-indexed search in bioinformatics applications | |
CN116414452A (zh) | 一种基于simd指令的查表算法的改进方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP03 | Change of name, title or address |