CN107301031B - 一种规格化浮点数据筛选电路 - Google Patents
一种规格化浮点数据筛选电路 Download PDFInfo
- Publication number
- CN107301031B CN107301031B CN201710452911.1A CN201710452911A CN107301031B CN 107301031 B CN107301031 B CN 107301031B CN 201710452911 A CN201710452911 A CN 201710452911A CN 107301031 B CN107301031 B CN 107301031B
- Authority
- CN
- China
- Prior art keywords
- multiplexer
- input
- gate
- output
- register
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/10—Selecting, i.e. obtaining data of one kind from those record carriers which are identifiable by data of a second kind from a mass of ordered or randomly- distributed record carriers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
Abstract
本发明公开了一种规格化浮点数据筛选电路,包括规格化浮点数据比较器、上升沿监测电路、输入电路和输出电路;浮点数据流Ain和浮点数据流Ain所对应的地址流Bin由输入电路输入,经规格化浮点数据比较器后输出结果R至输出电路,输出求得的最大/小值数据MData、数据所对应的地址MAddr、使能信号MEn、阈值比较结果ThresholdData以及当前阈值比较有效信号ThresholdEn。本发明能够以数据流方式实现对大量规格化浮点数据的筛选,能够给出满足指定条件的数据或者对应的地址。在ALU中设计这样的筛选装置,能够快速完成浮点数据的筛选,简化软件程序的设计,降低处理器的执行能耗,弥补普通的数据比较指令只能对较少的几个数(一般两个数)进行比较的不足。
Description
【技术领域】
本发明属于数字电路技术领域,涉及一种规格化浮点数据筛选电路。
【背景技术】
在数字信号处理芯片中,广泛存在着对大量浮点数据的处理。在这些浮点数据的处理中,除了进行最基本的加减乘之外,还存在着对浮点数据的比较。对已经规格化的两个浮点数进行比较,首先比较符号位,如果符号位相同,再比较指数大小,如果指数也相等则进一步比较尾数大小,这是对两个规格化浮点数进行比较的最基本的方法。随着处理数据规模的不断扩大,经常需要从一组数量较多的数据中筛选出数满足一定大小关系的数据,给出满足条件的数据值以及数据所对应的地址。目前市场上的芯片较少直接提供对这种数据筛选功能的硬件支持。如果需要从大量数据中找出满足一定大小关系的数据,需要采用多条指令形成一个指令集合,采用若干次循环来完成数据的比较,这种方式在实现过程中,资源开销较大,指令执行时间较长。常见的处理器都包含数据比较指令,在浮点比较过程中,一般单条指令只能比较两个数据的大小。如果要找到一组浮点数中的最大值,可以利用一条浮点数据比较指令,先将最前面两个数做个比较,得到一个较大的值,然后将这个较大值写回寄存器,接着用这个较大的值继续和后续数据比较,如果有更大的值出现,那么就将更大的值写回寄存器,更新以前的较大值,完成所有数据比较的时候,可以得到该组数据中的最大值。这种方式采用一个循环代码段的方式来实现一组数据的比较,利用前一次执行比较的结果与后续的数据进行比较,整个比较过程,需要程序人员来详细的设计。采用这种方式,为了完成一组数据的筛选,需要占用较多的寄存器资源,而且由多条指令形成的代码集合需要占用较大的程序存储器空间,需要不断的执行取值、译码、执行等操作,代码执行时间较长,而且会造成较多的能量消耗。实际上在数字芯片的ALU中只需添加一个很简单的浮点数比较单元,依次比较两个浮点数的符号位、指数、尾数的大小就能够比较容易的实现大量数据的数据流式筛选。
【发明内容】
本发明的目的在于克服上述现有技术的缺点,提供一种规格化浮点数据筛选电路,该电路在支持浮点数据处理的ALU中添加一个尽可能简单的浮点数比较器,实现规格化浮点数的流式筛选;浮点数据筛选类指令属于向量类指令,能够用单条指令实现大量规格化浮点数据的筛选操作。
为达到上述目的,本发明采用以下技术方案予以实现:
一种规格化浮点数据筛选电路,包括规格化浮点数据比较器、上升沿监测电路、输入电路和输出电路;浮点数据流Ain和浮点数据流Ain所对应的地址流Bin由输入电路输入,经规格化浮点数据比较器后输出结果R至输出电路,输出求得的最大/小值数据MData、最大/小值数据MData所对应的存储器地址MAddr、使能信号MEn、阈值比较结果ThresholdData以及当前阈值比较有效信号ThresholdEn。
本发明进一步的改进在于:
规格化浮点数据比较器包括7个反相器、13个与门、3个或门、2个减法器以及2个尾数比较器;规格化浮点数据比较器的输入端输入2个待比较数据DataA和DataB以及1个控制信号T;SA和SB分别为DataA和DataB的符号位,其中,0表示正数,1表示负数;EA和EB分别为DataA和DataB的指数,MA和MB分别为DataA和DataB的尾数;
控制信号T分别与第一反相器、第一与门、第四与门以及第七与门的输入端相连;SA分别输入到第三反相器、第一与门、第七与门以及第八与门的输入端;SB分别输入到第二反相器、第二与门、第七与门以及第八与门的输入端;
第一减法器执行EA减EB的操作,输出信号A至第七反相器和第三或门的输入端;第二减法器执行EB减EA的操作,输出信号B至第六反相器和第二或门的输入端;第一尾数比较器判断MA是否大于等于MB,输出信号C至第五反相器和第五与门的输入端;第二尾数比较器判断MA是否等于MB,输出信号D至第四反相器;
第一反相器的输出端分别与第二与门、第八与门以及第三与门的输入端相连;第二反相器的输出端分别与第三与门和第四与门的输入端相连;第三反相器的输出端分别与第三与门和第四与门的输入端相连;第四反相器和第七反相器的输出端均与第五与门的输入端相连;第五反相器和第六反相器的输出端均与第六与门的输入端相连;
第一与门和第二与门的输出端均与第一或门的输入端相连;第三与门的输出端与第九与门的输入端相连;第四与门的输出端与第十二与门的输入端相连;第五与门的输出端与第二或门的输入端相连;第六与门的输出端与第三或门的输出端相连;第七与门与第十与门的输入端相连;第八与门与第十一与门的输入端相连;第九与门、第十与门、第十一与门和第十二与门的输出端均与第十三与门的输入端相连;第十三与门的输出端输出比较结果R;
第一或门的输出端与第十三与门的输入端相连;第二或门的输出端分别与第九与门和第十与门的输入端相连;第三或门的输出端分别与第十一与门和第十二与门的输入端相连。
上升沿监测电路包括第一寄存器,第一寄存器的输入端D输入控制信号C0,输出端Q与第九反相器的输入端相连;第八反相器的输入端接控制信号C1;第八反相器和第九反相器的输出端以及控制信号C0均连接到第十四与门的输入端;第十四与门的输出端输出输入电路的控制信号;控制信号C0为1时表示数据筛选功能有效,为0则无效;控制信号C1为1时表示执行阈值比较操作,为0时表示执行求最大/小值操作。
输入电路包括8个多路选择器,Ain分别输入至规格化浮点数比较器、第一多路选择器、第十六多路选择器以及第十八多路选择器的输入端上;Bin分别输入至第十六多路选择器和第十九多路选择器的输入端上;第一多路选择器的另一个输入端输入MData;第一多路选择器的输出端与第二多路选择器的输入端上,第二多路选择器的另一个输入端输入0;第二多路选择器的输出端与第三多路选择器的输入端相连,第三多路选择器的另一个输入端输入DR0;第三多路选择器的输出端分别输出至规格化浮点数比较器和第十八多路选择器的输入端上;第十九多路选择器的另一个输入端输入0;
第十六多路选择器和第十八多路选择器的输出端分别与第十七多路选择器的输入端相连,第十七多路选择器的输出端输出信号至第三寄存器的输入端D;第十九多路选择器的输出端与第二十多路选择器的输入端相连,第二十多路选择器的另一个输入端输入0;第二十多路选择器的输出端输出信号至第四寄存器的输入端D;
第二寄存器、第三寄存器、第四寄存器、第五寄存器以及第六寄存器的输出端Q均与输出电路相连;
控制信号C0输入到第二多路选择器的控制端、第五寄存器的输入端D以及第三寄存器、第四寄存器第六寄存器的使能端En;
控制信号C1输入到第三多路选择器、第十七多路选择器以及第二十多路选择器的控制端;
控制信号C3输入到第十六多路选择器的控制端;
信号R输入至第六寄存器的输入端D以及第十八多路选择器和第十九多路选择器的控制端。
输出电路包括12个多路选择器,第四多路选择器和第五多路选择器的输入端分别输入1和0,第四多路选择器的输出端与第八多路选择器的输入端相连,第八多路选择器的另一个输入端输入0,输出端与第十二多路选择器的输入端相连,第十二多路选择器的另一个输入端输入0,输出端输出当前阈值比较有效信号ThresholdEn;
第五多路选择器的输出端与第九多路选择器的输入端相连,第九多路选择器的另一个输入端输入0,输出端与第十三多路选择器的输入端相连,第十三多路选择器的另一个输入端输入0,输出端输出使能信号MEn;
第三寄存器的输出端Q与第六多路选择器和第十多路选择器的输入端相连,同时输出阈值比较结果ThresholdData;第六多路选择器的另一个输入端输入0,输出端与第十多路选择器的另一个输入端相连,第十多路选择器的输出端与第十四多路选择器的输入端相连,第十四多路选择器的另一个输入端输入0,输出端与第一多路选择器的另一个输入端相连,同时输出最大/小值数据MData;
第四寄存器的输出端Q与第七多路选择器和第十一多路选择器的输入端相连,第七多路选择器的另一个输入端输入0,输出端与第十一多路选择器的另一个输入端相连,第十一多路选择器的输出端与第十五多路选择器的输入端相连,第十五多路选择器的另一个输入端输入0,输出端输出地址MAddr;
第二寄存器的输出端Q分别与第四多路选择器、第五多路选择器、第六多路选择器以及第七多路选择器的控制端相连;
第六寄存器的输出端Q分别与第八多路选择器、第九多路选择器、第十多路选择器以及第十一多路选择器的控制端相连;
第五寄存器的输出端Q分别与第十二多路选择器、第十三多路选择器、第十四多路选择器以及第十五多路选择器的控制端相连。
与现有技术相比,本发明具有以下有益效果:
本发明能够筛选出满足一定条件的浮点数据,能够实现四种浮点数据筛选功能,包括:求一组浮点数中的最大值指令,求一组浮点数中的最小值指令,阈值比大指令,阈值比小指令。阈值比大指令,即是给出一个阈值,从一组数据中筛选出大于等于该阈值的数的指令。阈值比小指令,即是给出一个阈值,从一组数据中筛选出小于该阈值的数的指令。执行求最大/小值指令之后,本发明会同时给出所筛选出的最大/小数据值及其对应地址,如果该组数据中出现了几个相同的最大/小值,那么求得的最大/小值地址为最后一个值所在的地址,最大/小值指令执行时总是只有一个数据被筛选出来。执行阈值比较指令时,可以有用户通过配置寄存器来选择输出满足条件的数值或是输出满足条件的数值的地址。
本发明能够以数据流方式实现对大量规格化浮点数据的筛选,能够给出满足指定条件的数据或者对应的地址。在ALU中设计这样的筛选装置,能够快速完成浮点数据的筛选,简化软件程序的设计,降低处理器的执行能耗,弥补普通的数据比较指令只能对较少的几个数(一般两个数)进行比较的不足。
【附图说明】
图1为规格化浮点数据比较器。
图2为用规格化浮点数据比较器实现的浮点数据流筛选电路结构。
其中,101-第一反相器;102-第二反相器;103-第三反相器;104-第四反相器;105-第五反相器;106-第六反相器;107-第七反相器;201-第一与门;202-第二与门;203-第三与门;204-第四与门;205-第五与门;206-第六与门;207-第七与门;208-第八与门;209-第九与门;210-第十与门;211-第十一与门;212-第十二与门;213-第十三与门;301-第一或门;302-第二或门;303-第三或门;401-第一减法器;402-第二减法器;403-第一尾数比较器;404-第二尾数比较器;501-第一多路选择器;502-第二多路选择器;503-第三多路选择器;504-第四多路选择器;505-第五多路选择器;506-第六多路选择器;507-第七多路选择器;508-第八多路选择器;509-第九多路选择器;510-第十多路选择器;511-第十一多路选择器;512-第十二多路选择器;513-第十三多路选择器;514-第十四多路选择器;515-第十五多路选择器;516-第十六多路选择器;517-第十七多路选择器;518-第十八多路选择器;519-第十九多路选择器;520-第二十多路选择器;601-第一寄存器;602-第二寄存器;603-第三寄存器;604-第四寄存器;605-第五寄存器;606-第六寄存器;
【具体实施方式】
下面结合附图对本发明做进一步详细描述:
参见图1,本发明中为了实现浮点数据比较功能,设计了一个规格化浮点数据比较器。规格化浮点数据比较器的输入包含两个待比较的数据DataA、DataB,以及一个表示比大或是比小的控制信号T。比较器的输出为比较结果R,当输出R为1时,表示DataA不满足由T指定的比较条件,当输出R为0时,表示DataA满足由T指定的比较条件。
输入的待比较数据DataA和DataB是规格化表示的浮点数据。输入的控制信号T为1bit宽度。当T为1时,表示执行比大操作,也即是判断DataA是否大于等于DataB,如果DataA大于等于DataB,输出R为0,否则输出R为1。当T为0时,表示执行比小操作,如果DataA小于等于DataB,输出R为0,否则输出R为1。
比较器内部用SA和SB分别为DataA和DataB的符号位(0表示正数,1表示负数),用EA和EB分别表示DataA和DataB的指数,用MA和MB分别表示DataA和DataB的尾数。
比较器对DataA和DataB进行比较时,根据两个输入操作数的符号位分类进行比较。
如果DataA和DataB异号,即SA和SB的取值不同(一个为0,则另一个必为1)。这时如果判断DataA是否大于等于DataB(即T为1),只需要判断DataA是否为正数,即判断SA是否为0,如果SA为0,则输出R为0,如果SA为1,则输出R为1。如果判断DataA是否小于等于DataB(即T为0),只需要判断DataB是否为正数,即判断SB是否为0,如果SB为0,则输出R为0,如果SB为1,则输出R为1。总结起来可以将DataA和DataB异号情况下的比较结果R用逻辑函数表示为:
实现DataA和DataB异号情况下的比较电路用图1中第一与门201、第二与门202和第一或门301来完成。
如果DataA和DataB同号,则比较的时候首先比较指数大小,为此设置第一减法器401和第二减法器402。第一减法器401执行EA减EB的操作,输出信号A为差值的符号位,当A为0时表示EA不小于EB,否则EA小于EB。第二减法器402执行EB减EA的操作,输出信号B为差值的符号位,当B为0时表示EB不小于EA,否则EB小于EA。当A和B相等时(此时A和B只可能都为0)EA和EB相等。通过信号A和B可以判断DataA和DataB的指数的大小,指数大则对应的数较大。如果指数相等,需要再去判断尾数的大小,为此设置了第一尾数比较器403和第二尾数比较器404,其中第一尾数比较器403判断MA是否大于等于MB,如果MA≥MB则输出信号C为1,否则输出信号C为0,第二尾数比较器404判断MA是否等于MB,如果MA=MB,则输出信号D为1,否则输出信号为0。DataA和DataB同号情况下的比较的具体施方式分为以下四种情况:
一、如果DataA和DataB同为正数,且执行比大操作,即T、SA、SB的值分别为1,0,0。
此时DataA小于DataB时输出R无效,也就是A为1或者A和B均为0且C为0时,输出R为1,这种情况可以用逻辑函数表示为:
此功能由图1中的第四与门204、第五与门205、第七与门207以及第三或门306完成。
二、如果DataA和DataB同为负数,且执行比大操作,即T、SA、SB的值都为1。
此时DataA小于DataB时输出R无效,也就是B为1或者A和B均为0且C和D分别为1、0时,输出R为1,这种情况可以用逻辑函数表示为:
此功能由图1中的第七与门207、第十与门210、第十一与门211以及第二或门302完成。
三、如果DataA和DataB同为正数,且执行比小操作,即T、SA、SB的值都为0。
此时DataA大于DataB时输出R无效,也就是B为1或者A和B均为0且C和D分别为1、0时,输出R为1,这种情况可以用逻辑函数表示为:
此功能由图1中的第五与门205、第三与门203、第九与门209以及第二或门302完成。
四、如果DataA和DataB同为负数,且执行比小操作,即T、SA、SB的值分别为0、1、1。
此时DataA大于DataB时输出R无效,也就是A为1或者A和B均为0且C为0时,输出R为1,这种情况可以用逻辑函数表示为:
此功能由第六与门206、第十一与门211、第八与门208以及第三或门303完成。
以上DataA和DataB异号和同好的比较情况总共有五类,总共产生五路输出,把这五个结果相与(由第十三与门213完成)形成最终的结果R,当执行某一种比较时,只要DataA满足相应的比较条件,就有一路会输出0,其余的全为1,最终的输出R为0。
如图2所示,采用图1所示的规格化浮点数据比较器可以设计浮点数据流筛选电路。
下面结合图2,对本发明的具体实现方式做进一步的介绍。
本发明在求所给浮点数据流的最大/小值时,可以同时给出所求得的最大/小值数据及其对应的地址,当所给的数据流中同时存在多个最大/小值时,给出最后一个最大/小值所在的地址。当求阈值比较时,可以选择满足阈值条件的数据或者对应地址作为输出。
如图2所示,本发明包括两个输入操作数Ain和Bin。其中Ain为规格化的浮点数据流,Bin为浮点数据流所对应的地址流。Ain和Bin的数据宽度都可以任意指定。待比较的数据流Ain直接由DataA输入到规格化浮点数比较器内部。
本发明输入的控制信号包括C0、C1、C2、C3。
控制信号C0为1时表示数据筛选功能有效,为0则无效。C0用于控制第一多路选择器502,同时还作为第三寄存器603、第四寄存器604、第六寄存器606的使能信号。另外C0还通过第五寄存器605延迟一个时钟周期之后用于控制第十二多路选择器512、第十三多路选择器513、第十四多路选择器514、第十五多路选择器515。
控制信号C1为1时表示执行阈值比较操作,为0时表示执行求最大/小值操作。C1信号根据所给出的指令产生,用于控制第三多路选择器503、第十七多路选择器517和第二十多路选择器520。C1信号还经过第二寄存器602延迟一个时钟周期后,用于控制第四多路选择器504、第五多路选择器505、第六多路选择器506、第七多路选择器507。
控制信号C2为1时表示执行比大操作,为0时表示执行比小操作。C2信号根据所给出的指令产生,并作为规格化浮点比较器的输入控制信号T,用于指示规格化浮点比较器执行比大还是比小操作。
控制信号C3为1时表示在阈值比较时选择数据输出,为0时表示选择地址输出。C3由配置寄存器DR2的值产生,DR2为0时,C3为1,DR2为非0时,C3为0。C3主要用于控制第十六多路选择器516。第十六多路选择器516的两个输入信号分别连接输入数据流和数据流对应的地址流。如果所给的指令不是阈值比较指令,则C3信号不用。
另外,本发明还具有时钟输入信号Clk和复位输入信号Reset,分别用于寄存器的时钟和复位信号。图2中所有的寄存器被复位之后Q端均输出0。
本发明的输出信号包括所求得的最大/小值数据MData、数据所对应的地址MAddr、及其使能信号MEn。MEn用于控制寄存器DR0和DR1的写操作,将当前所求得的最值及其对应的地址写入寄存器DR0和DR1中。本发明的输出信号还包括阈值比较结果ThresholdData(满足阈值条件的数据或满足阈值条件的数据在存储器中的地址)和当前阈值比较有效信号ThresholdEn。ThresholdEn用于控制外部存储器的写操作,将ThresholdData的值写到外部存储器。同时ThresholdEn还触发一个计数器的加1操作,用于统计数据流中满足阈值筛选条件的数据的个数。
本发明具有由第一寄存器601,第十四与门214,第八反相器108、第九反相器109构成的C0的上升沿检测电路,该上升沿检测电路在执行求最大/小值时(C1为0),检测C0的上升沿,当C0从0变为1时,由第十四与门214输出一个时钟周期的高脉冲。
本发明具有由第一多路选择器501、第二多路选择器502、第三多路选择器503所形成的DataB的数据选择通路,其中第一多路选择器501由第十四与门214的输出控制,第二多路选择器502和第三多路选择器503分别由C0和C1控制。第一多路选择器501、第二多路选择器502和第三多路选择器503的连接关系见图2所示。
本发明中的规格化浮点数据比较器根据C2信号指示的比较方式,对DataA和DataB进行比较,输出比较结果R,R用于控制第十八多路选择器518和第十九多路选择器519。当比较有效时,R为0,表示当前的DataA满足比较条件,这时第十八多路选择器518选择第0路数据(Ain)通过,第十九多路选择器519选择第0路数据(Bin)通过。R还通过寄第六寄存器606延迟一个时钟周期后,用于控制第八多路选择器518、第九多路选择器519、第十多路选择器510、第十一多路选择器511。
当执行求最大值的操作时,输入数据Ain和Bin以及控制信号C0、C1、C2同时有效,且C0、C1、C2的值分别为1、0、1。当开始执行求最大值操作时,第十四与门214输出C0的上升沿脉冲,使得第一多路选择器501选择第1路打开,这时数据线Ain上的第一个数据会通过第二多路选择器502、第三多路选择器503到达比较器的DataB端,同时Ain上的第一个数据直接到达比较器的DataA端,比较器将两个相等的数据进行比较输出R为0,表示比较有效。这时由R控制的第十八多路选择器518、第十九多路选择器519均选择第0路输出,因此数据Ain通过第十八多路选择器518和第十七多路选择器517到达第三寄存器603的输入端。Ain数据所对应的地址(由Bin输入)通过第十九多路选择器519和第二十多路选择器520到达第四寄存器604的输入端,当下一个时钟沿到来时,数据和地址将分别通过第三寄存器603和第四寄存器604输出,而这时第六多路选择器506、第十多路选择器510、第十四多路选择器514、第七多路选择器507、第十一多路选择器511、第十五多路选择器515的控制信号也相应的有效,其中第六多路选择器506和第十多路选择器510选择第0路输出,第十四多路选择器514选择第1路输出,第七多路选择器507和第十一多路选择器511选择第0路输出,第十五多路选择器515选择第1路输出。这样,由Ain输入的第一个数据将通过第十八多路选择器518、第十七多路选择器517、第三寄存器603、第六多路选择器506、第十多路选择器510、第十四多路选择器514所组成的通路到达输出端MData,同时由Bin输入的第一个数据所对应的地址将通过第十九多路选择器519、第二十多路选择器520、第四寄存器604、第七多路选择器507、第十一多路选择器511、第十五多路选择器515所组成的通路到达输出端MAddr。另一方面,第五多路选择器505、第九多路选择器509选择第0路输出,而第十三多路选择器513选择第1路输出,即由第五多路选择器505、第九多路选择器509、第十三多路选择器513组成的最值使能信号通路将输出1,使输出端口MEn有效,且与MData和MAddr对应的有效值对齐,因此数据流的第一个数据及其对应的地址会被写入DR0和DR1保存,这个过程中ThresholdEn始终处于无效状态。数据流中第一个数据从MData输出的同时还会反馈回第一多路选择器501的第0输入端,而这时第一多路选择器501选择第0路输出,使得第一个数据通过第一多路选择器501、第二多路选择器502、第三多路选择器503到达比较器的DataB输入端,而这时从Ain输入到DataA端的数据恰好是数据流中的第二个数据,因此比较器将数据流的第一个数据和第二个数据做比较,比较结果由R输出。如果DataA不小于DataB,就会重复上述过程,将DataA所代表的数据(即当前Ain的数据)及其对应的地址(即当前Bin的数据)写入到DR0和DR1覆盖原来的值。如果DataA小于DataB,不会使能MEn,比较器输出的R为1,第十八多路选择器518选择第1路输出,也就是DataB的数据将通过由第十八多路选择器518、第十七多路选择器517、第三寄存器603、第十多路选择器510、第十四多路选择器514、第一多路选择器501、第二多路选择器502、第三多路选择器503所组成的通路最终返回到比较器的DataB输入端,使得比较器的DataB输入端的数据维持不变,这时从Ain端输入到比较器DataA端口的数据恰好是数据流中的第三个数据,继续执行后续的比大操作。整个过程中DataB上的数一直是当前所求得的最大值,当有新的更大值到来的时候,会将这个更大的值及其对应的地址写入寄存器DR0和DR1,并且DataB的数据会被更新,当数据流输送完成的时候,从DR0和DR1中可以得到数据流的最大值及其对应的地址,当数据流中同时存在多个相等的最大值时,所得的地址为数据流中最后一个最大值所对应的地址。
当执行求最小值的操作时,输入数据Ain和Bin以及控制信号C0、C1、C2同时有效,且C0、C1、C2的值分别为1、0、0。规格化浮点数据比较器执行比小操作。当DataA所代表的数据不大于DataB所代表的数据时,输出R为0(有效),并将DataA所代表的值及其地址分别写入DR0和DR1,整个过程与执行求最大值的操作类似,最后在DR0和DR1中得到数据流中最小值及其对应的地址。当数据流中同时存在多个相等的最小值时,所得的地址为数据流中最后一个最小值所对应的地址。
当执行阈值比大操作时,输入数据Ain和Bin以及控制信号C0、C1、C2、C3同时有效,且C0、C1、C2的值分别为1、1、1。C3的值由事先配置好的DR2决定,用于选择满足阈值条件的数据输出或者地址输出。因为C1的值为1,所以第三多路选择器503固定的选择第1路输出,将比较器DataB端的数据固定的置为阈值(由DR0给出)。求阈值比大的操作开始时,待筛选的数据流由Ain输入到比较器的DataA端。比较器将来自Ain的数据流与阈值进行比较。如果当前数据流中的数据不小于阈值,则比较器输出的结果R为0(比较有效)。R通过第六寄存器606之后控制第八多路选择器508选择第0路输出。由于第八多路选择器508的第0路来自第四多路选择器504的第一路输出(因为C1为1,且C1通过第二寄存器602控制第四多路选择器504选择第1路输出),而第四多路选择器504的第一路输出为1,所以由第四多路选择器504、第八多路选择器508、第十二多路选择器512组成的阈值比较使能信号通路最终会输出1,使输出的使能信号ThresholdEn为有效。而于此同时,这个使能信号所对应的数据或者地址(由C3的值来确定)会通过第十六多路选择器516、第十七多路选择器517、第三寄存器603组成的通路达到ThresholdData端口,由ThresholdEn控制存储器写信号,将ThresholdData按照目的寻址寄存器所指定的访存模式写入到存储器中,并且用ThresholdEn去触发一个计数器执行一次加1操作,用于统计满足阈值筛选条件的数的个数,并将满足阈值条件的数据个数写入寄存器DR1。整个过程中MEn一直处于无效状态。当数据流输送完毕时,从存储器中可以获得该数据流中不小于设定阈值的所有数据,而满足阈值条件的数据个数从寄存器DR1中获得。
当执行阈值比小操作时,输入数据Ain和Bin以及控制信号C0、C1、C2、C3同时有效,且C0、C1、C2的值分别为1、1、0。C3的值由事先配置好的DR2决定,用于选择满足阈值条件的数据输出或者地址输出。阈值比小操作和阈值比大操作过程类似,只是当前Ain的数据不大于阈值时,比较器输出的值R为0(比较有效)。最后从存储器中获得该数据流中不大于设定阈值的所有数据,而满足阈值条件的数据个数从寄存器DR1中获得。
本发明的原理:
为了支持本发明的正确运行,需要利用一定数量的寄存器,这些寄存器包括寻址寄存器和数据寄存器。
寻址寄存器包括源操作数寻址寄存器AR0、IR0、IMR0和目的操作数寻址寄存器AR1、IR1。源操作数寻址寄存器中AR0用于保存原操作数的起始地址。IR0用于保存源操作数的访存步长,也即前后两次取操作数的地址间隔。IMR0用于保存源操作数的个数。目的操作数寻址寄存器只用于阈值比较指令,其中AR1用于保存筛选出的目的操作数的起始地址,IR1用于保存筛选出的目的操作数的存储步长。目的操作数寻址寄存器AR1、IR1只用于阈值比较指令的目的操作数寻址,这是由于执行阈值比较指令之后所得的筛选结果可能不只一个数据和地址值,因此需要配置AR1、IR1便于将目的操作数存放到存储器中。
数据寄存器一共包括三个,这三个数据寄存器直接采用ALU中的本地寄存器DR0、DR1和DR2来实现。求最大/小值指令和阈值比较指令复用ALU中的两个数据寄存器DR0和DR1。当执行求最大/小值指令的时候,DR0和DR1分别保存筛选出的数据及其对应的地址,等到求最大/小值指令执行结束之后再去读取这两个寄存器以获取数据和地址值。当执行阈值比较指令时,DR0和DR1分别用来保存用户设置的阈值和操作执行后满足阈值条件的数据个数,而筛选出的结果的存储位置由配置的目的寻址寄存器决定。DR2用于阈值比较指令选择满足条件的数据还是数据地址作为输出,DR2中配置数据为0时选择数据输出,否则为地址输出。
本发在ALU中设置一个专门的规格化浮点数据比较器,用以完成最基本的两个浮点数的比较。由于需要给出最终结果所对应的地址,所以需要的操作数据流包括输入数据流,及其数据对应的地址流。当前执行的是求最大/小值,在比较的过程中一旦发现有满足条件的数据出现,就保存该数据及其对应的地址,如果后续还有更大/小的值出现,则更新该值。如果执行的是阈值比较,就根据当前是选择数据输出还是地址输出(由DR1配置确定)来给出相应的地址或者数据。
在完成有关寄存器的配置之后,就可以执行所需的浮点数据筛选指令。执行筛选过程中,源操作数按源操作数寻址寄存器所指定的寻址方式,源源不断的被读入ALU中,当完成源操作数的输送之后,筛选过程也就执行完毕。
本发明在内部执行筛选的时候,采用一个专用的规格化浮点数据比较器,对相比较的两个浮点数据作比较,输出一个指示结果信号。当执行求浮点最大/小值指令时,先将第一个数及其对应的地址分别写入寄存器DR0和DR1中,作为当前已经获取的最大/小值。下一个时钟周期开始,用这个值与后续输入数据作比较,如果有更大/小的值出现,就用这个更大/小的值替代之前获得的较大/小的值,同时产生一个写寄存器DR0和DR1的脉冲,将这个更大/小值及其对应的地址分别写入DR0和DR1中覆盖之前获取的值,后续比较用这个新的值进行,最终从DR0和DR1获得该组数据中最大/小值及其对应的地址。当执行浮点阈值比较指令的时候,输入的数据流与DR0中的阈值作比较,将满足阈值条件的数据或者对应的地址输出到数据总线上,同时产生一个写存储器的有效信号,将输出值写入目的寻址寄存器所指定的存储器中。满足阈值条件的数据的个数根据写存储器的有效信号来统计,一旦写存储器有效,将当前统计的数据量加1,统计个数最后保存到ALU的本地寄存器DR1中。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (4)
1.一种规格化浮点数据筛选电路,其特征在于,包括规格化浮点数据比较器、上升沿监测电路、输入电路和输出电路;浮点数据流Ain和浮点数据流Ain所对应的地址流Bin由输入电路输入,经规格化浮点数据比较器后输出结果R至输出电路,输出求得的最大/小值数据MData、最大/小值数据MData所对应的存储器地址MAddr、使能信号MEn、阈值比较结果ThresholdData以及当前阈值比较有效信号ThresholdEn;使能信号MEn用于控制寄存器DR0和DR1的写操作,将当前所求得的最值及其对应的地址写入寄存器DR0和DR1中;当前阈值比较有效信号ThresholdEn用于控制外部存储器的写操作,将ThresholdData的值写到外部存储器;
上升沿监测电路包括第一寄存器(601),第一寄存器(601)的输入端D输入控制信号C0,输出端Q与第九反相器(109)的输入端相连;第八反相器(108)的输入端接控制信号C1;第八反相器(108)和第九反相器(109)的输出端以及控制信号C0均连接到第十四与门(214)的输入端;第十四与门(214)的输出端输出输入电路的控制信号;控制信号C0为1时表示数据筛选功能有效,为0则无效;控制信号C1为1时表示执行阈值比较操作,为0时表示执行求最大/小值操作。
2.根据权利要求1所述的规格化浮点数据筛选电路,其特征在于,规格化浮点数据比较器包括7个反相器(101~107)、13个与门(201~213)、3个或门(301~303)、2个减法器(401~402)以及2个尾数比较器(403~404);规格化浮点数据比较器的输入端输入2个待比较数据DataA和DataB以及1个控制信号T;SA和SB分别为DataA和DataB的符号位,其中,0表示正数,1表示负数;EA和EB分别为DataA和DataB的指数,MA和MB分别为DataA和DataB的尾数;
控制信号T分别与第一反相器(101)、第一与门(201)、第四与门(204)以及第七与门(207)的输入端相连;SA分别输入到第三反相器(103)、第一与门(201)、第七与门(207)以及第八与门(208)的输入端;SB分别输入到第二反相器(102)、第二与门(202)、第七与门(207)以及第八与门(208)的输入端;
第一减法器(401)执行EA减EB的操作,输出信号A至第七反相器(107)和第三或门(303)的输入端;第二减法器(402)执行EB减EA的操作,输出信号B至第六反相器(106)和第二或门(302)的输入端;第一尾数比较器(403)判断MA是否大于等于MB,输出信号C至第五反相器(105)和第五与门(205)的输入端;第二尾数比较器(404)判断MA是否等于MB,输出信号D至第四反相器(104);
第一反相器(101)的输出端分别与第二与门(202)、第八与门(208)以及第三与门(203)的输入端相连;第二反相器(102)的输出端分别与第三与门(203)和第四与门(204)的输入端相连;第三反相器(103)的输出端分别与第三与门(203)和第四与门(204)的输入端相连;第四反相器(104)和第七反相器(107)的输出端均与第五与门(205)的输入端相连;第五反相器(105)和第六反相器(106)的输出端均与第六与门(206)的输入端相连;
第一与门(201)和第二与门(202)的输出端均与第一或门(301)的输入端相连;第三与门(203)的输出端与第九与门(209)的输入端相连;第四与门(204)的输出端与第十二与门(212)的输入端相连;第五与门(205)的输出端与第二或门(302)的输入端相连;第六与门(206)的输出端与第三或门(303)的输出端相连;第七与门(207)与第十与门(210)的输入端相连;第八与门(208)的输出端与第十一与门(211)的输入端相连;第九与门(209)、第十与门(210)、第十一与门(211)和第十二与门(212)的输出端均与第十三与门(213)的输入端相连;第十三与门(213)的输出端输出比较结果R;
第一或门(301)的输出端与第十三与门(213)的输入端相连;第二或门(302)的输出端分别与第九与门(209)和第十与门(210)的输入端相连;第三或门(303)的输出端分别与第十一与门(211)和第十二与门(212)的输入端相连。
3.根据权利要求1所述的规格化浮点数据筛选电路,其特征在于,输入电路包括8个多路选择器(501~503,516~520),Ain分别输入至规格化浮点数比较器、第一多路选择器(501)、第十六多路选择器(516)以及第十八多路选择器(518)的输入端上;Bin分别输入至第十六多路选择器(516)和第十九多路选择器(519)的输入端上;第一多路选择器(501)的另一个输入端输入MData;第一多路选择器(501)的输出端与第二多路选择器(502)的输入端上,第二多路选择器(502)的另一个输入端输入0;第二多路选择器(502)的输出端与第三多路选择器(503)的输入端相连,第三多路选择器(503)的另一个输入端输入DR0;第三多路选择器(503)的输出端分别输出至规格化浮点数比较器和第十八多路选择器(518)的输入端上;第十九多路选择器(519)的另一个输入端输入0;
第十六多路选择器(516)和第十八多路选择器(518)的输出端分别与第十七多路选择器(517)的输入端相连,第十七多路选择器(517)的输出端输出信号至第三寄存器(603)的输入端D;第十九多路选择器(519)的输出端与第二十多路选择器(520)的输入端相连,第二十多路选择器(520)的另一个输入端输入0;第二十多路选择器(520)的输出端输出信号至第四寄存器(604)的输入端D;
第二寄存器(602)、第三寄存器(603)、第四寄存器(604)、第五寄存器(605)以及第六寄存器(606)的输出端Q均与输出电路相连;
控制信号C0输入到第二多路选择器(502)的控制端、第五寄存器(605)的输入端D以及第三寄存器(603)、第四寄存器(604)第六寄存器(606)的使能端En;
控制信号C1输入到第三多路选择器(503)、第十七多路选择器(517)以及第二十多路选择器(520)的控制端;
控制信号C3输入到第十六多路选择器(516)的控制端;
信号R输入至第六寄存器(606)的输入端D以及第十八多路选择器(518)和第十九多路选择器(519)的控制端。
4.根据权利要求1所述的规格化浮点数据筛选电路,其特征在于,输出电路包括12个多路选择器(504~515),第四多路选择器(504)和第五多路选择器(505)的输入端分别输入1和0,第四多路选择器(504)的输出端与第八多路选择器(508)的输入端相连,第八多路选择器(508)的另一个输入端输入0,输出端与第十二多路选择器(512)的输入端相连,第十二多路选择器(512)的另一个输入端输入0,输出端输出当前阈值比较有效信号ThresholdEn;
第五多路选择器(505)的输出端与第九多路选择器(509)的输入端相连,第九多路选择器(509)的另一个输入端输入0,输出端与第十三多路选择器(513)的输入端相连,第十三多路选择器(513)的另一个输入端输入0,输出端输出使能信号MEn;
第三寄存器(603)的输出端Q与第六多路选择器(506)和第十多路选择器(510)的输入端相连,同时输出阈值比较结果ThresholdData;第六多路选择器(506)的另一个输入端输入0,输出端与第十多路选择器(510)的另一个输入端相连,第十多路选择器(510)的输出端与第十四多路选择器(514)的输入端相连,第十四多路选择器(514)的另一个输入端输入0,输出端与第一多路选择器(501)的另一个输入端相连,同时输出最大/小值数据MData;
第四寄存器(604)的输出端Q与第七多路选择器(507)和第十一多路选择器(511)的输入端相连,第七多路选择器(507)的另一个输入端输入0,输出端与第十一多路选择器(511)的另一个输入端相连,第十一多路选择器(511)的输出端与第十五多路选择器(515)的输入端相连,第十五多路选择器(515)的另一个输入端输入0,输出端输出地址MAddr;
第二寄存器(602)的输出端Q分别与第四多路选择器(504)、第五多路选择器(505)、第六多路选择器(506)以及第七多路选择器(507)的控制端相连;
第六寄存器(606)的输出端Q分别与第八多路选择器(508)、第九多路选择器(509)、第十多路选择器(510)以及第十一多路选择器(511)的控制端相连;
第五寄存器(605)的输出端Q分别与第十二多路选择器(512)、第十三多路选择器(513)、第十四多路选择器(514)以及第十五多路选择器(515)的控制端相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710452911.1A CN107301031B (zh) | 2017-06-15 | 2017-06-15 | 一种规格化浮点数据筛选电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710452911.1A CN107301031B (zh) | 2017-06-15 | 2017-06-15 | 一种规格化浮点数据筛选电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107301031A CN107301031A (zh) | 2017-10-27 |
CN107301031B true CN107301031B (zh) | 2020-08-04 |
Family
ID=60134822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710452911.1A Active CN107301031B (zh) | 2017-06-15 | 2017-06-15 | 一种规格化浮点数据筛选电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107301031B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258634B (zh) * | 2018-11-30 | 2022-11-22 | 上海寒武纪信息科技有限公司 | 数据选择装置、数据处理方法、芯片及电子设备 |
CN111258632B (zh) * | 2018-11-30 | 2022-07-26 | 上海寒武纪信息科技有限公司 | 数据选择装置、数据处理方法、芯片及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7191202B2 (en) * | 2001-05-25 | 2007-03-13 | Sun Microsystems, Inc. | Comparator unit for comparing values of floating point operands |
CN101539852A (zh) * | 2008-03-21 | 2009-09-23 | 富士通株式会社 | 处理器和信息处理设备 |
CN102520903A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的长度可配置的向量最大/最小值网络 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4461135B2 (ja) * | 2006-12-25 | 2010-05-12 | 富士通株式会社 | 演算回路及び演算方法並びに情報処理装置 |
-
2017
- 2017-06-15 CN CN201710452911.1A patent/CN107301031B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7191202B2 (en) * | 2001-05-25 | 2007-03-13 | Sun Microsystems, Inc. | Comparator unit for comparing values of floating point operands |
CN101539852A (zh) * | 2008-03-21 | 2009-09-23 | 富士通株式会社 | 处理器和信息处理设备 |
CN102520903A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的长度可配置的向量最大/最小值网络 |
Also Published As
Publication number | Publication date |
---|---|
CN107301031A (zh) | 2017-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230196065A1 (en) | Methods and devices for programming a state machine engine | |
TWI515668B (zh) | 用於一狀態機中偵測之方法及系統 | |
US9934034B2 (en) | Instruction insertion in state machine engines | |
US9665083B2 (en) | Counter operation in a state machine lattice | |
TWI489779B (zh) | 狀態機晶格中之布林邏輯 | |
US10521366B2 (en) | System and method for individual addressing | |
US9075428B2 (en) | Results generation for state machine engines | |
US10698697B2 (en) | Adaptive routing to avoid non-repairable memory and logic defects on automata processor | |
US10430210B2 (en) | Systems and devices for accessing a state machine | |
CN107301031B (zh) | 一种规格化浮点数据筛选电路 | |
US20220261257A1 (en) | Systems and devices for accessing a state machine | |
CN107340992B (zh) | 一种定点数据筛选电路 | |
EP3234768B1 (en) | System and method for fast modification of register content | |
US9310829B2 (en) | System with feature of saving dynamic power of flip-flop banks | |
CN105874712B (zh) | 可跳过的一比特全加器和fpga器件 | |
CN110781118B (zh) | 实现并行总线从模式的方法及装置、计算机设备、介质 | |
CN110705192B (zh) | 一种fpga的输出功耗配置电路、系统及fpga | |
US7266581B2 (en) | Arithmetic circuit | |
US9292365B2 (en) | Prioritising events to which a processor is to respond | |
JP4073829B2 (ja) | プログラマブル論理回路及び半導体集積回路 | |
US7620760B2 (en) | Non-high impedence device and method for reducing energy consumption |
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 |