CN117687957B - 一种基于FPGA的Top-k信息处理引擎及其排序方法 - Google Patents

一种基于FPGA的Top-k信息处理引擎及其排序方法 Download PDF

Info

Publication number
CN117687957B
CN117687957B CN202410154556.XA CN202410154556A CN117687957B CN 117687957 B CN117687957 B CN 117687957B CN 202410154556 A CN202410154556 A CN 202410154556A CN 117687957 B CN117687957 B CN 117687957B
Authority
CN
China
Prior art keywords
data
register
comparator
output
signal
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
Application number
CN202410154556.XA
Other languages
English (en)
Other versions
CN117687957A (zh
Inventor
顾佼佼
孙涛
陈健
陆巍巍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Naval Aeronautical University
Original Assignee
Naval Aeronautical University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Naval Aeronautical University filed Critical Naval Aeronautical University
Priority to CN202410154556.XA priority Critical patent/CN117687957B/zh
Publication of CN117687957A publication Critical patent/CN117687957A/zh
Application granted granted Critical
Publication of CN117687957B publication Critical patent/CN117687957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Hardware Redundancy (AREA)

Abstract

本发明涉及一种基于FPGA的Top‑k信息处理引擎及其排序方法,属于CPU数据处理技术领域。为了解决现有的部署在边缘设备上的Top‑k引擎无法进行高效排序的问题,该引擎,包括输入设备,FPGA以及输出设备;其中,所述FPGA内设有比较模块、寄存器队列一和寄存器队列二;所述输入设备输入原始数据,并且将数据发送至FPGA内的比较模块中;所述FPGA将原始数据进行比较、排序;所述输出设备用于输出最后的排序结果。本申请组合逻辑的方法可以很好的提高Top‑k引擎的排序速率,对于不同的数据规模都可以高效地完成排序任务。

Description

一种基于FPGA的Top-k信息处理引擎及其排序方法
技术领域
本发明涉及CPU数据处理技术领域,特别涉及一种基于FPGA的Top-k信息处理引擎及其排序方法。
背景技术
排序是大数据应用的基本计算挑战之一,关于图像识别的特征提取,注意力机制,搜索引擎等应用领域在对数据进行处理的时候,通常都会对数据进行筛选。而对数据的筛选通常都有阈值要求,引入Top-k引擎可以大大加快数据的筛选速率。基于大数据的Top-k引擎通常使用基于FPGA的Top-k引擎设计。FPGA称为现场可编程逻辑门阵列,是在可编程阵列逻辑以及通用阵列逻辑等可编程器件的基础上进一步发展的产物,它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数量有限的缺点。不过现有的Top-k引擎大多消耗奢侈的资源来对大量数据进行处理,从而实现高效的排序。但是这种方式并不适用于所有场景。排序操作在边缘设备上也屡见不鲜,边缘设备并不支持如此奢侈的资源消耗。
发明内容
本发明的目的在于解决现有的部署在边缘设备上的Top-k引擎无法进行高效排序的问题,提出一种基于FPGA的低功耗且能够高效排序的Top-k引擎。
为了解决上述问题,本申请是通过以下技术方案实现的:
一种基于FPGA的Top-k信息处理引擎,其特殊之处在于:包括输入设备,FPGA以及输出设备;
其中,所述FPGA内设有比较模块、寄存器队列一和寄存器队列二;
所述输入设备输入数据,并且将数据发送至FPGA内的比较模块中;
所述比较模块内部设有多个接收数据的比较器,所述比较器的数量与Top-k的k值相等,所述比较模块通过其内部ping_pong信号决定比较器存储寄存器队列一或寄存器队列二的数据来与输入数据进行比较;
所述寄存器队列一或寄存器队列二均包含多个寄存器,所述寄存器的数量与Top-k的k值相等,所述寄存器队列一或寄存器队列二中的寄存器中的数据会被相应比较器存储作为原始数据,并且与输入数据进行比较,并根据比较结果,比较器与寄存器对输入数据与原始数据进行处理;
所述输出设备用于输出最后的排序结果。
优选的,每个所述比较器均有输出端口insert,用来更新前一个位置即i-1位置的寄存器的值,根据ping_pong信号来决定输出的值要传递给哪个寄存器队列,端口insert对应于交换阶段,交换阶段是对应到寄存器上数据的更新。
优选的,所述ping_pong信号包含一个低电平和一个高电平,由低电平到高电平为上升沿,由高电平到低电平为下降沿,当ping_pong信号处于低电平时,用“0”表示,当ping_pong信号处于高电平时,用“1”表示;
优选的,每个所述比较器设有一个renew端口,用来更新对应位置即i位置的寄存器的值,当ping_pong =0时,将寄存器队列一中第i个寄存器中的原始数据输出给寄存器队列二中第i个寄存器中,当ping_pong =1时,将寄存器队列二中第i个寄存器中的原始数据输出给寄存器队列一中第i个寄存器中,减少寄存器队列与比较模块的数据传输路径,由于ping_pong信号不断变化传递,相邻比较器之间比较和更新的队列不同,所以不必担心数据冲突。
优选的,所述比较模块在每个时钟边沿,ping_pong信号都会被输出至下一个比较器,多个比较器并行设置。
优选的,所述寄存器由 D 触发器构成,由时钟脉冲控制,所述 D 触发器,能够存储一位二进制码,在脉冲信号 CLK的上升沿或者下降沿的作用下将信号从输入端送到输出端,能够将数据保持一个时钟周期。
优选的,所述脉冲信号 CLK在 FPGA 当中是晶振产生的时钟脉冲。
一种基于FPGA的Top-k信息处理引擎的排序方法,其特殊之处在于:包括以下步骤:
一、数据输入:
输入设备将数据输入,并将数据发送至FPGA内的比较模块中;
二、数据比较:
根据比较模块中的ping_pong信号决定比较器存储哪一个寄存器队列中寄存器的数据来与输入数据进行比较,然后进行数据比较,得到比较结果;
三、数据输出:
步骤二比较结束以后,输出设备将会输出最后更新的寄存器队列中的数据。
优选的,所述步骤二中根据比较模块中的ping_pong信号决定步骤一中输入的数据与哪一个寄存器队列中寄存器的数据进行比较,具体过程如下:
当ping_pong信号为0时,接收该信号的比较器就存储寄存器队列一的数据来与输入数据进行比较,而更新寄存器队列二的数据;当ping_pong信号为1时,接收该信号的比较器就存储寄存器队列二的数据来与输入数据进行比较,而更新寄存器队列一的数据。
优选的,所述步骤二的数据比较过程如下:
根据ping_pong信号来选择比较模块与哪个寄存器队列进行比较,第i个比较器中存储寄存器队列中的第i个寄存器的数据,称其为原始数据L[i];
若比较器接收到上一个比较器的successful信号时,比较器开始比较输入数据与原始数据,根据比较结果,进行输出;若接收到上一个比较器的fail信号,则输出端口按照比较失败的结果进行输出;最后一个比较器根据其接收的信号确定输出数据端口指向相应寄存器队列的第k个寄存器;
当ping_pong信号为0,接收该信号的比较器就存储寄存器队列一的数据来与输入数据进行比较,若接收到fail信号时,第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列二中的第i个寄存器,输出原始数据;
若接收到successful信号时,
若输入数据小于或等于第i个比较器中的原始数据时,则将第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列二中的第i个寄存器,输出原始数据;
若输入数据大于第i个比较器中的原始数据时,则将第i个比较器中的输入数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果successful,并将原始数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,输出输入数据;
当ping_pong信号为1,接收该信号的比较器就存储寄存器队列二的数据来与输入数据进行比较,若接收到fail信号时,第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列一中的第i个寄存器,输出原始数据;
若接收到successful信号时,
若输入数据小于或等于第i个比较器中的原始数据时,则将第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列一中的第i个寄存器,输出原始数据;
若输入数据大于第i个比较器中的原始数据时,则将第i个比较器中的输入数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果successful,并将原始数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,输出输入数据。
与现有技术相比,本发明具有如下有益效果:
提出新型的比较模块:实现输入的数据和一个列表的数进行对比,并根据比较结果将需要移动的数值输出到另一个列表,以实现通道之间的通信;
通过使用组合逻辑的方法,在每个时钟边沿更新和输出数据及信号,以实现全流水式传输数据的引擎设计,使得输入的数据可以和已更新过的数据进行对比;
采用FPGA即现场可编程逻辑门阵列,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点;
经实验证明,本申请组合逻辑的方法可以很好的提高Top-k引擎的排序速率,对于不同的数据规模都可以高效地完成排序任务。
附图说明
图1:本发明基于FPGA的Top-k信息处理引擎;
图2:本发明的数据处理流程图;
图3:本发明的单个比较器的数据处理流程图;
图4:本发明基于FPGA的Top-k信息处理引擎的波形图。
具体实施方式
以下参照附图,给出本发明的具体实施方式,用来对本发明的构成进行进一步说明。
实施例1。如图1所示的一种基于FPGA的Top-k信息处理引擎,包括输入设备,FPGA以及输出设备;
其中,所述FPGA内设有比较模块、寄存器队列一和寄存器队列二;
所述输入设备输入数据,并且将数据发送至FPGA内的比较模块中;
所述比较模块内部设有多个接收数据的比较器,所述比较器的数量与Top-k的k值相等,所述比较模块通过其内部ping_pong信号决定比较器存储寄存器队列一或寄存器队列二的数据来与输入数据进行比较;
所述寄存器队列一或寄存器队列二均包含多个寄存器,所述寄存器的数量与Top-k的k值相等,所述寄存器队列一或寄存器队列二中的寄存器中的数据会被相应比较器存储作为原始数据,并且与输入数据进行比较,并根据比较结果,比较器与寄存器对输入数据与原始数据进行处理;
所述输出设备用于输出最后的排序结果。
其中,每个所述比较器均有输出端口insert,用来更新前一个位置即i-1位置的寄存器的值,根据ping_pong信号来决定输出的值要传递给哪个寄存器队列,端口insert对应于交换阶段,交换阶段是对应到寄存器上数据的更新;根据ping_pong信号决定比较器与寄存器队列一还是寄存器队列二内的数据进行比较,而将数据更新至另外一组寄存器队列,比较器将输入数据与寄存器队列一或寄存器队列二内对应寄存器的数据进行对比,得到比较结果。
其中,所述ping_pong信号包含一个低电平和一个高电平,由低电平到高电平为上升沿,由高电平到低电平为下降沿,当ping_pong信号处于低电平时,用“0”表示,当ping_pong信号处于高电平时,用“1”表示;
其中,每个所述比较器设有一个renew端口,用来更新对应位置即i位置的寄存器的值,当ping_pong =0时,将寄存器队列一中第i个寄存器中的原始数据输出给寄存器队列二中第i个寄存器中,当ping_pong =1时,将寄存器队列二中第i个寄存器中的原始数据输出给寄存器队列一中第i个寄存器中,减少寄存器队列与比较模块的数据传输路径,由于ping_pong信号不断变化传递,相邻比较器之间比较和更新的队列不同,所以不必担心数据冲突。
其中,所述比较模块在每个时钟边沿,ping_pong信号都会被输出至下一个比较器,多个比较器并行设置,第i个比较器就存储寄存器i的数值,并且在每个时钟边沿,该信号都会被输出至下一个比较器。
其中,所述寄存器由 D 触发器构成,由时钟脉冲控制,所述 D 触发器,能够存储一位二进制码,在脉冲信号 CLK的上升沿或者下降沿的作用下将信号从输入端送到输出端,能够将数据保持一个时钟周期。
其中,所述脉冲信号 CLK在 FPGA 当中是晶振产生的时钟脉冲。
其中,所述FPGA即现场可编程逻辑门阵列,是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA可以通过编程来实现对应电路的功能。
FPGA包括可编程输入/输出单元(I/O单元),基本可编程单元,如查找表和寄存器,嵌入式块RAM和内嵌专用硬核。
实施例2。如图2所示的一种基于FPGA的Top-k信息处理引擎的排序方法,包括以下步骤:
一、数据输入:
输入设备将数据输入,并将数据发送至FPGA内的比较模块中;
二、数据比较:
根据比较模块中的ping_pong信号决定比较器存储哪一个寄存器队列中寄存器的数据来与输入数据进行比较,然后进行数据比较,得到比较结果;
三、数据输出:
步骤二比较结束以后,输出设备将会输出最后更新的寄存器队列中的数据。
其中,所述步骤二中根据比较模块中的ping_pong信号决定步骤一中输入的数据与哪一个寄存器队列中寄存器的数据进行比较,具体过程如下:
当ping_pong信号为0时,接收该信号的比较器就存储寄存器队列一的数据来与输入数据进行比较,而更新寄存器队列二的数据;当ping_pong信号为1时,接收该信号的比较器就存储寄存器队列二的数据来与输入数据进行比较,而更新寄存器队列一的数据。
其中,所述步骤二的数据比较过程如下:
根据ping_pong信号来选择比较模块与哪个寄存器队列进行比较,第i个比较器中存储寄存器队列中的第i个寄存器的数据,称其为原始数据L[i];
若比较器接收到上一个比较器的successful信号时,比较器开始比较输入数据与原始数据,根据比较结果,进行输出;若接收到上一个比较器的fail信号,则输出端口按照比较失败的结果进行输出;最后一个比较器根据其接收的信号确定输出数据端口指向相应寄存器队列的第k个寄存器;
当ping_pong信号为0,接收该信号的比较器就存储寄存器队列一的数据来与输入数据进行比较,若接收到fail信号时,第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列二中的第i个寄存器,输出原始数据;
若接收到successful信号时,
若输入数据小于或等于第i个比较器中的原始数据时,则将第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列二中的第i个寄存器,输出原始数据;
若输入数据大于第i个比较器中的原始数据时,则将第i个比较器中的输入数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果successful,并将原始数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,输出输入数据;
当ping_pong信号为1,接收该信号的比较器就存储寄存器队列二的数据来与输入数据进行比较,若接收到fail信号时,第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列一中的第i个寄存器,输出原始数据;
若接收到successful信号时,
若输入数据小于或等于第i个比较器中的原始数据时,则将第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列一中的第i个寄存器,输出原始数据;
若输入数据大于第i个比较器中的原始数据时,则将第i个比较器中的输入数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果successful,并将原始数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,输出输入数据。
比较器的比较流程如图3所示。
假设需要最大的k个数据,数据比较主要是输入数据和比较器内的数据进行比较。当输入的比较信号为高电平时,比较器进行数据比较阶段。若输入数据赢得比较,则作为输出,输出到下一个比较器,并将比较器单元里存储的原始数据通过insert端口传递给更新寄存器队列的上一个位置也就是i-1位置的寄存器;若输入数据输掉比较,则将输入数据通过insert端口传递给更新寄存器队列的上一个位置也就是i-1位置的寄存器,并将比较器单元内存储的原始数据通过renew端口更新到更新寄存器队列的对应寄存器即i位置的寄存器,由于ping_pong信号不断变化传递,相邻比较器之间比较和更新的队列不同,且renew端口和insert端口将数据输出至不同的寄存器队列,所以不必担心数据冲突。
比较器之间没有依赖关系,能够在一个周期进行多个比较器的比较工作,以此来实现整个结构的并行。
实施例3。如图4所示的基于FPGA的Top-k信息处理引擎的波形图,说明整个引擎的工作流程,以L来命名两个寄存器队列,L0代表寄存器队列一,L1代表寄存器队列二,而L0[i]则代表寄存器队列一的第i个寄存器,L1[i]则代表寄存器队列二的第i个寄存器。
在第一个时钟周期cycle0, ping-pong信号为低电平,输入数据A0与第一个比较器中存储的L0[1]的数据B0,也就是原始数据B0进行比较。若A0> B0, A0与成功信号successful还有ping_pong信号一起输出,并将原始数据B0发送至insert端口。
到达时钟下降沿,此时A0与第二个寄存器中存储的L0[2]数据B1,也就是原始数据B1进行比较。比较完成后,若A0≤B1,比较器输出fail信号并且将A0发送至insert端口传递给寄存器队列二中的第1个寄存器L1[1];若A0>L0[2],比较完成,A0与成功信号successful还有ping_pong信号一起输出,并且将原始数据B1发送至insert端口传递给寄存器队列二中的第1个寄存器L1[1]。
在第二个时钟周期cycle1时钟上升沿, 此时输入第一个比较器的ping_pong信号变为高电平,而L1[1]更新为A0。所以第一个比较器中存储的数据变为L1[1]中的数据A0,即原始数据为A0。此时,输入新数据A1,A1与原始数据A0进行比较。比较结果若是A1≤A0,在下一个时钟边沿通过insert端口输出据A1以及比较结果fail还有ping_pong信号,并通过renew端口将原始数据A0发送至L0[1],输出原始数据A0;比较结果若是A1>A0,在下一个时钟边沿输出insert端口的数据A1以及比较结果successful还有ping_pong信号。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

Claims (7)

1.一种基于FPGA的Top-k信息处理引擎,其特征在于:包括输入设备,FPGA以及输出设备;
其中,所述FPGA内设有比较模块、寄存器队列一和寄存器队列二;
所述输入设备输入数据,并且将数据发送至FPGA内的比较模块中;
所述比较模块内部设有多个接收数据的比较器,所述比较器的数量与Top-k的k值相等,所述比较模块通过其内部ping_pong信号决定比较器存储寄存器队列一或寄存器队列二的数据来与输入数据进行比较;
所述ping_pong信号包含一个低电平和一个高电平,由低电平到高电平为上升沿,由高电平到低电平为下降沿,当ping_pong信号处于低电平时,用“0”表示,当ping_pong信号处于高电平时,用“1”表示;
所述寄存器队列一或寄存器队列二均包含多个寄存器,所述寄存器的数量与Top-k的k值相等,所述寄存器队列一或寄存器队列二中的寄存器中的数据会被相应比较器存储作为原始数据,并且与输入数据进行比较,并根据比较结果,比较器与寄存器对输入数据与原始数据进行处理;
每个所述比较器设有一个renew端口,用来更新对应位置即i位置的寄存器的值,当ping_pong =0时,将寄存器队列一中第i个寄存器中的原始数据输出给寄存器队列二中第i个寄存器中,当ping_pong =1时,将寄存器队列二中第i个寄存器中的原始数据输出给寄存器队列一中第i个寄存器中;
所述输出设备用于输出最后的排序结果。
2.根据权利要求1所述的一种基于FPGA的Top-k信息处理引擎,其特征在于:每个所述比较器均有输出端口insert,用来更新前一个位置的寄存器的值,根据ping_pong信号来决定输出的值要传递给哪个寄存器队列,端口insert对应于交换阶段,交换阶段是对应到寄存器上数据的更新。
3.根据权利要求1或2所述的一种基于FPGA的Top-k信息处理引擎,其特征在于:所述比较模块在每个时钟边沿,ping_pong信号都会被输出至下一个比较器,多个比较器并行设置。
4.根据权利要求3所述的一种基于FPGA的Top-k信息处理引擎,其特征在于:所述寄存器由 D 触发器构成,由时钟脉冲控制,所述 D 触发器,能够存储一位二进制码,在脉冲信号 CLK的上升沿或者下降沿的作用下将信号从输入端送到输出端,能够将数据保持一个时钟周期。
5.根据权利要求4所述的一种基于FPGA的Top-k信息处理引擎,其特征在于:所述脉冲信号 CLK在 FPGA 当中是晶振产生的时钟脉冲。
6.利用根据权利要求1-5所述的一种基于FPGA的Top-k信息处理引擎,进行排序方法,其特征在于:包括以下步骤:
一、数据输入:
输入设备将数据输入,并将数据发送至FPGA内的比较模块中;
二、数据比较:
根据比较模块中的ping_pong信号决定比较器存储哪一个寄存器队列中寄存器的数据来与输入数据进行比较,然后进行数据比较,得到比较结果;
根据ping_pong信号来选择比较模块与哪个寄存器队列进行比较,第i个比较器中存储寄存器队列中的第i个寄存器的数据,称其为原始数据L[i];
若比较器接收到上一个比较器的successful信号时,比较器开始比较输入数据与原始数据,根据比较结果,进行输出;若接收到上一个比较器的fail信号,则输出端口按照比较失败的结果进行输出;最后一个比较器根据其接收的信号确定输出数据端口指向相应寄存器队列的第k个寄存器;
当ping_pong信号为0,接收该信号的比较器就存储寄存器队列一的数据来与输入数据进行比较,若接收到fail信号时,第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列二中的第i个寄存器,输出原始数据;
若接收到successful信号时,
若输入数据小于或等于第i个比较器中的原始数据时,则将第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列二中的第i个寄存器,输出原始数据;
若输入数据大于第i个比较器中的原始数据时,则将第i个比较器中的输入数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果successful,并将原始数据通过insert端口传递给寄存器队列二中的第i-1个寄存器中,输出输入数据;
当ping_pong信号为1,接收该信号的比较器就存储寄存器队列二的数据来与输入数据进行比较,若接收到fail信号时,第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列一中的第i个寄存器,输出原始数据;
若接收到successful信号时,
若输入数据小于或等于第i个比较器中的原始数据时,则将第i个比较器中的原始数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果fail,并将输入数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,将原始数据通过renew端口传递给寄存器队列一中的第i个寄存器,输出原始数据;
若输入数据大于第i个比较器中的原始数据时,则将第i个比较器中的输入数据通过输出数据端口输出到第i+1个比较器中,同时输出比较结果successful,并将原始数据通过insert端口传递给寄存器队列一中的第i-1个寄存器中,输出输入数据;
三、数据输出:
步骤二比较结束以后,输出设备将会输出最后更新的寄存器队列中的数据。
7.根据权利要求6所述的一种基于FPGA的Top-k信息处理引擎排序方法,其特征在于:所述步骤二中根据比较模块中的ping_pong信号决定步骤一中输入的数据与哪一个寄存器队列中寄存器的数据进行比较,具体过程如下:
当ping_pong信号为0时,接收该信号的比较器就存储寄存器队列一的数据来与输入数据进行比较,而更新寄存器队列二的数据;当ping_pong信号为1时,接收该信号的比较器就存储寄存器队列二的数据来与输入数据进行比较,而更新寄存器队列一的数据。
CN202410154556.XA 2024-02-04 2024-02-04 一种基于FPGA的Top-k信息处理引擎及其排序方法 Active CN117687957B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410154556.XA CN117687957B (zh) 2024-02-04 2024-02-04 一种基于FPGA的Top-k信息处理引擎及其排序方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410154556.XA CN117687957B (zh) 2024-02-04 2024-02-04 一种基于FPGA的Top-k信息处理引擎及其排序方法

Publications (2)

Publication Number Publication Date
CN117687957A CN117687957A (zh) 2024-03-12
CN117687957B true CN117687957B (zh) 2024-04-23

Family

ID=90135761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410154556.XA Active CN117687957B (zh) 2024-02-04 2024-02-04 一种基于FPGA的Top-k信息处理引擎及其排序方法

Country Status (1)

Country Link
CN (1) CN117687957B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4095270A (en) * 1976-05-19 1978-06-13 International Business Machines Corporation Method of implementing manual operations
CN103019646A (zh) * 2013-01-09 2013-04-03 西安电子科技大学 并行排序电路及并行排序方法
CN103257341A (zh) * 2013-03-21 2013-08-21 西安电子科技大学 基于fpga的自聚焦算法快速实现方法
CN109460210A (zh) * 2018-10-22 2019-03-12 重庆中科云丛科技有限公司 排序系统及数据处理方法
CN111722829A (zh) * 2020-05-28 2020-09-29 江苏方天电力技术有限公司 一种双并发预读的高性能归并排序方法及应用
CN117348929A (zh) * 2022-06-29 2024-01-05 中科寒武纪科技股份有限公司 指令执行方法、系统控制器及相关产品

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4095270A (en) * 1976-05-19 1978-06-13 International Business Machines Corporation Method of implementing manual operations
CN103019646A (zh) * 2013-01-09 2013-04-03 西安电子科技大学 并行排序电路及并行排序方法
CN103257341A (zh) * 2013-03-21 2013-08-21 西安电子科技大学 基于fpga的自聚焦算法快速实现方法
CN109460210A (zh) * 2018-10-22 2019-03-12 重庆中科云丛科技有限公司 排序系统及数据处理方法
CN111722829A (zh) * 2020-05-28 2020-09-29 江苏方天电力技术有限公司 一种双并发预读的高性能归并排序方法及应用
CN117348929A (zh) * 2022-06-29 2024-01-05 中科寒武纪科技股份有限公司 指令执行方法、系统控制器及相关产品

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种新型低功耗异步比较器的设计方法;姜小波;叶德盛;;电子学报;20120815(第08期);全文 *
应用于SAR ADC中逐次逼近寄存器的设计;张少真;李哲英;;北京联合大学学报(自然科学版);20110620(第02期);全文 *

Also Published As

Publication number Publication date
CN117687957A (zh) 2024-03-12

Similar Documents

Publication Publication Date Title
US20160171045A1 (en) Hierarchical in-memory sort engine
US8166278B2 (en) Hashing and serial decoding techniques
US8190943B2 (en) Systolic merge sorter
JP3188467B2 (ja) 最小値・最大値検索装置
EP0645717A1 (en) System for data synchronization and method therefor
Lin et al. Hardware design of low-power high-throughput sorting unit
KR970076820A (ko) 반도체집적회로
CN117687957B (zh) 一种基于FPGA的Top-k信息处理引擎及其排序方法
US6452864B1 (en) Interleaved memory device for sequential access synchronous reading with simplified address counters
TWI528720B (zh) 用於低擺時脈之免競爭位準轉換正反器
JPH01283625A (ja) データを分類するための固定布線回路
EP1086468B1 (en) Low power linear feedback shift registers
Li et al. PipeBSW: A two-stage pipeline structure for banded Smith-Waterman algorithm on FPGA
WO2004086624A1 (en) Latching dynamic logic structure
CN111103959A (zh) 寄存器复位系统及芯片
CN114239475B (zh) 低频数模混合模块时钟结构及扫描链设计方法
US8264902B2 (en) Memory control method and memory control device
CN110909793B (zh) 一种基于fpga实现的决策森林系统及决策森林推理方法
EP1476828B1 (en) A method and a processor for parallel processing of logic event simulation
US20100318862A1 (en) Scan test circuit, and method and program for designing same
US5919251A (en) Search mechanism for a rotating pointer buffer
RU2469425C2 (ru) Ассоциативная запоминающая матрица маскированного поиска вхождений
Kohutka et al. Heap queue: a novel efficient hardware architecture of MIN/MAX queues for real-time systems
CN110008154B (zh) 提高处理器与访存总线时序的方法及内存属性预测器
EP3745598A1 (en) Circuit with analog-to-digital converters of different conversion resolutions

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