一种硬件查找方法和系统、电子设备及存储介质技术方案

技术编号:39305361 阅读:8 留言:0更新日期:2023-11-12 15:54
本申请提供了一种硬件查找方法和系统、电子设备及存储介质,属于微电子数字电路设计领域。该方法包括:从原始数据中得到数组;设置第一字符串,使字符串每一位与数组元素对应;从数组中选择一个元素作为轴数据;将数组中的元素与轴数据进行比较,得到多个第一结果、第二结果、和第三结果;对各类结果分别进行排列,得到各类结果向量;对各类结果向量分别进行按位求和,得到第一元素数量、第二元素数量、和第三元素数量;对三类元素数量进行检测,得到检测结果;若检测结果表示硬件查找达到要求,则将轴数据作为目标数据。本申请能够克服现有查找方法计算周期长、难于通过硬件实现的缺点,同时满足消耗资源少、实时性较高的要求。实时性较高的要求。实时性较高的要求。

【技术实现步骤摘要】
一种硬件查找方法和系统、电子设备及存储介质


[0001]本申请涉及微电子数字电路设计领域,尤其涉及一种硬件查找方法和系统、电子设备及存储介质。

技术介绍

[0002]查找一个长度为N的数组中第k(1≤k≤N)小的数,是数据处理中常用的操作之一。随着通信技术的发展,需要处理的数据量增大及处理实时性要求提高,近年来也陆续提出了许多查找方法来解决该问题,查找方法根据实现方式划分为软件方式和硬件方式。
[0003]相关技术中,硬件方式主要有顺序比较、双调排序、递归查找等方法。
[0004]顺序比较方法通过用N个比较器,在第i次迭代中将数组A中的全部元素依次与A[i](i=0,

,N

1)比较,得到A中比A[i]小的元素个数c[i],比较结束后找出c[i]==k

1的元素,从而实现第k小的数的查找。顺序比较方法可用硬件实现,时间复杂度是O(N)。这一方式虽然比较简单,但是当N较大时,平均需要进行N/2次比较才能得到c[i]==k

1的元素,即时间复杂度是O(N),时间复杂度太大。
[0005]双调排序方法采用双调排序网络对数组进行排序,排序后得到的是按从小到大排列的整个数组,排序后的第k个元素就是第k小的元素,时间复杂度为O((logN)2)。这一方式的时间复杂度也比较大。
[0006]递归查找方法在每次递归中先选定轴数据,然后对数组进行划分,将小于轴数据的数据划分到左子数组,将大于或者等于轴数据的数据划分到右子数组。通过划分后轴数据的位置确定第k小元素在左子数组还是右子数组中,然后对第k小元素所在的子数组再次执行递归过程,直到子数组中只剩下1个元素为止。递归结束后,剩下的这一个元素即为第k小的元素。这一方式用软件实现,期望运行时间是O(N),最坏情况下时间复杂度是O(N2)。虽然递归查找方法用软件实现比较简单,但是不适于直接硬件实现。因为在现有直接硬件实现中,每次划分需要将元素进行两两比较交换,才能使小于轴数据的数据划分到左子数组,大于或者等于轴数据的数据划分到右子数组。在硬件实现中这相当于一个N
×
N的交叉网络,将消耗大量的交叉互联线和mux资源,导致硬件复杂度较大。若采用非全交叉互联的串行方式实现,则需要较长的划分时间,使得硬件实现失去意义。
[0007]由此可见,上述查找方式都需要花费较长时间,会影响硬件实现的高效性。另外,由于花费较长时间也会造成资源消耗较大等问题。

技术实现思路

[0008]本申请实施例的主要目的在于提出一种硬件查找方法和系统、电子设备及存储介质,旨在克服现有查找方法计算周期长、难于通过硬件实现的缺点,同时满足消耗资源少、实时性较高的要求。
[0009]为实现上述目的,本申请实施例的第一方面提出了一种硬件查找方法,所述方法包括:
[0010]将原始数据输入至寄存器阵列,得到有序数组,其中,所述有序数组包括依次排列的多个元素,将所述有序数组的第一个元素的下标设置为0,从所述第一个元素开始,所述多个元素的下标依次递增;
[0011]设置第一字符串,所述第一字符串是二进制字符串,所述二进制字符串的每一位数字均为1;其中,所述第一字符串的最末尾的数字对应所述有序数组的第一个元素,从所述最末尾的数字开始,所述第一字符串的每一位数字都依次对应所述有序数组中的一个元素;
[0012]从所述有序数组中的多个元素中,选择一个元素作为轴数据;
[0013]将所述有序数组中的元素与所述轴数据进行比较,得到多个第一结果、第二结果、和第三结果,其中,所述第一结果是根据小于所述轴数据的元素确定的,所述第二结果是根据不小于所述轴数据的元素确定的,所述第三结果是根据等于所述轴数据的元素确定的;
[0014]将多个第一结果进行排列,得到第一结果向量;将多个第二结果进行排列,得到第二结果向量;将多个第三结果进行排列,得到第三结果向量;
[0015]对所述第一结果向量、第二结果向量、和第三结果向量分别进行按位求和,得到与所述第一结果向量对应的第一元素数量、与所述第二结果向量对应的第二元素数量、和与所述第三结果向量对应的第三元素数量;
[0016]对所述第一元素数量、所述第二元素数量和所述第三元素数量进行检测,得到检测结果,所述检测结果用于表示硬件查找是否达到要求;
[0017]若所述检测结果表示硬件查找达到要求,则将所述轴数据作为目标数据,所述目标数据是将所述原始数据中的数进行升序排列时,排在预定名次的数据。
[0018]在一些实施例中,所述将所述有序数组中的元素与所述轴数据进行比较,得到多个第一结果、第二结果、和第三结果,包括:
[0019]针对每一个元素,将所述元素与所述轴数据进行比较;
[0020]若所述元素小于所述轴数据,且所述第一字符串中与所述元素对应的数字为1,则确定所述元素对应的第一结果为1,否则,确定所述元素对应的第一结果为0;
[0021]若所述元素不小于所述轴数据,且所述第一字符串中与所述元素对应的数字为1,则确定所述元素对应的第二结果为1,否则,确定所述元素对应的第二结果为0;
[0022]若所述元素与所述轴数据相等,且所述第一字符串中与所述元素对应的数字为1,则确定所述元素对应的第三结果为1,否则,确定所述元素对应的第三结果为0。
[0023]在一些实施例中,所述从所述有序数组中的多个元素中,选择一个元素作为轴数据,包括:
[0024]将所述第一字符串与预先生成的随机向量进行按位与操作,得到第一向量;
[0025]若所述第一向量为全零向量,则选择所述第一字符串中为1的最低位所对应的元素作为所述轴数据,并生成第二向量,所述第二向量是通过将所述第一字符串中与所述轴数据对应的位置的数字保留为1,将所述第一字符串中不与所述轴数据对应的位置的数字置0得到的;
[0026]若所述第一向量为非全零向量,则选择所述第一向量中为1的最低位所对应的元素作为所述轴数据,并生成第二向量,所述第二向量是通过将所述第一向量中与所述轴数据对应的位置的数字保留为1,将所述第一向量中不与所述轴数据对应的位置的数字置0得
到的。
[0027]在一些实施例中,所述对所述第一元素数量、所述第二元素数量和所述第三元素数量进行检测,得到检测结果,包括:
[0028]若所述第一元素向量、所述第二元素向量和所述第三元素向量满足以下条件中的至少一个,则所述检测结果为所述硬件查找满足要求;
[0029]所述条件包括:
[0030]所述第一元素数量与所述第二元素数量之和等于所述第三元素数量;
[0031]所述第一元素数量与所述第二元素数量之和不大于1;
[0032]所述第一元素数量与1的和等于所述预定名次对应的数值。
[0033]在一些实施例中,若所述检测结果表示所述硬件查找未满足要求,所述方法还包括:
[0034]判断所述数值是否小本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种硬件查找方法,其特征在于,所述方法包括:将原始数据输入至寄存器阵列,得到有序数组,其中,所述有序数组包括依次排列的多个元素,将所述有序数组的第一个元素的下标设置为0,从所述第一个元素开始,所述多个元素的下标依次递增;设置第一字符串,所述第一字符串是二进制字符串,所述二进制字符串的每一位数字均为1;其中,所述第一字符串的最末尾的数字对应所述有序数组的第一个元素,从所述最末尾的数字开始,所述第一字符串的每一位数字都依次对应所述有序数组中的一个元素;从所述有序数组中的多个元素中,选择一个元素作为轴数据;将所述有序数组中的元素与所述轴数据进行比较,得到多个第一结果、第二结果、和第三结果,其中,所述第一结果是根据小于所述轴数据的元素确定的,所述第二结果是根据不小于所述轴数据的元素确定的,所述第三结果是根据等于所述轴数据的元素确定的;将多个第一结果进行排列,得到第一结果向量;将多个第二结果进行排列,得到第二结果向量;将多个第三结果进行排列,得到第三结果向量;对所述第一结果向量、第二结果向量、和第三结果向量分别进行按位求和,得到与所述第一结果向量对应的第一元素数量、与所述第二结果向量对应的第二元素数量、和与所述第三结果向量对应的第三元素数量;对所述第一元素数量、所述第二元素数量和所述第三元素数量进行检测,得到检测结果,所述检测结果用于表示硬件查找是否达到要求;若所述检测结果表示硬件查找达到要求,则将所述轴数据作为目标数据,所述目标数据是将所述原始数据中的数进行升序排列时,排在预定名次的数据。2.根据权利要求1所述的一种硬件查找方法,其特征在于,将所述有序数组中的元素与所述轴数据进行比较,得到多个第一结果、第二结果、和第三结果,包括:针对每一个元素,将所述元素与所述轴数据进行比较;若所述元素小于所述轴数据,且所述第一字符串中与所述元素对应的数字为1,则确定所述元素对应的第一结果为1,否则,确定所述元素对应的第一结果为0;若所述元素不小于所述轴数据,且所述第一字符串中与所述元素对应的数字为1,则确定所述元素对应的第二结果为1,否则,确定所述元素对应的第二结果为0;若所述元素与所述轴数据相等,且所述第一字符串中与所述元素对应的数字为1,则确定所述元素对应的第三结果为1,否则,确定所述元素对应的第三结果为0。3.根据权利要求1或2所述的一种硬件查找方法,其特征在于,所述从所述有序数组中的多个元素中,选择一个元素作为轴数据,包括:将所述第一字符串与预先生成的随机向量进行按位与操作,得到第一向量;若所述第一向量为全零向量,则选择所述第一字符串中为1的最低位所对应的元素作为所述轴数据,并生成第二向量,所述第二向量是通过将所述第一字符串中与所述轴数据对应的位置的数字保留为1,将所述第一字符串中不与所述轴数据对应的位置的数字置0得到的;若所述第一向量为非全零向量,则选择所述第一向量中为1的最低位所对应的元素作为所述轴数据,并生成第二向量,所述第二向量是通过将所述第一向量中与所述轴数据对应的位置的数字保留为1,将所述第一向量中不与所述轴数据对应的位置的数字置0得到
的。4.根据权利要求3所述的一种硬件查找方法,其特征在于,所述对所述第一元素数量、所述第二元素数量和所述第三元素数量进行检测,得到检测结果,包括:若所述第一元素向量、所述第二元素向量和所述第三元素向量满足以下条件中的至少一个,则所述检测结果为所述硬件查找满足要求;所述条件包括:所述第一元素数量与所述第二元素数量之和等于所述第三元素数量;所述第一元素数量与所述第二元素数量之和不大于1;所述第一元素数量与1的和等于所述预定名次对应的数值。5.根据权利要求4所述的一种硬件查...

【专利技术属性】
技术研发人员:刘建德马显卿袁永亮
申请(专利权)人:深圳高芯思通科技有限公司
类型:发明
国别省市:

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

1