CN117687598A - 多项式乘加处理电路和芯片 - Google Patents
多项式乘加处理电路和芯片 Download PDFInfo
- Publication number
- CN117687598A CN117687598A CN202311762671.7A CN202311762671A CN117687598A CN 117687598 A CN117687598 A CN 117687598A CN 202311762671 A CN202311762671 A CN 202311762671A CN 117687598 A CN117687598 A CN 117687598A
- Authority
- CN
- China
- Prior art keywords
- result
- exclusive
- data
- bit
- target
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 367
- 238000003860 storage Methods 0.000 claims description 52
- 238000003825 pressing Methods 0.000 claims description 24
- 230000001360 synchronised effect Effects 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 13
- 239000000047 product Substances 0.000 description 48
- 239000010432 diamond Substances 0.000 description 16
- 229910003460 diamond Inorganic materials 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011022 operating instruction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Detection And Correction Of Errors (AREA)
Abstract
本申请涉及一种多项式乘加处理电路和芯片。所述多项式乘加处理电路包括:获取模块,用于获取待处理的两个目标数据;处理模块,至少包括按位与单元以及包括第一处理单元的第二处理单元,按位与单元用于根据两个目标数据生成按位与结果,第一处理单元用于根据第一操作指令和按位与结果生成第一位宽类型的第一异或结果,第二处理单元用于根据第二操作指令、按位与结果和第一异或结果,生成第二位宽类型的第二异或结果;生成模块,用于根据接收的多个类型使能信号、第一异或结果和第二异或结果生成两个目标数据的目标结果。本申请能够减少逻辑电路资源的占用,提高多项式乘加的处理速度。
Description
技术领域
本申请涉及电路技术领域,特别是涉及一种多项式乘加处理电路和芯片。
背景技术
现代生活中,多项式乘加无论在理论研究中还是生活生产中都有应用。像通信中对信号进行分析时,都需要对信号进行展开分析,展开后就是多项式乘加。因此为了提高处理器中对多项式相关问题的处理速度,一些处理器的指令集中都添加了相应的操作指令。
针对8位、16位、32位和64位的多项式乘加,传统的处理方式是在软件层次去处理,但此方案在要求高性能时就捉襟见肘了。因此为提高处理速度,都是在硬件电路中添加单独的模块进行处理。传统的电路设计方法是将每种位宽的多项式按照指令流程一步一步展开处理,这种方案消耗的逻辑电路资源多,同时处理速度也不能满足高性能的要求。
发明内容
基于此,有必要提供一种多项式乘加处理电路和芯片,通过嵌套复用处理单元,能够减少逻辑电路资源的占用,提高多项式乘加的处理速度,从而满足高性能的处理需求。
第一方面,本申请实施例提供了一种多项式乘加处理电路,包括:
获取模块,用于获取待处理的两个目标数据;
处理模块,至少包括按位与单元以及包括第一处理单元的第二处理单元,所述按位与单元与所述获取模块连接,所述按位与单元用于根据所述两个目标数据生成按位与结果,所述第一处理单元与所述按位与单元连接,所述第一处理单元用于根据第一操作指令和所述按位与结果,生成第一位宽类型的第一异或结果,所述第二处理单元与所述按位与单元连接,所述第二处理单元用于根据第二操作指令、所述按位与结果和所述第一异或结果,生成第二位宽类型的第二异或结果;其中,所述第一位宽类型的数据位宽小于所述第二位宽类型的数据位宽;
生成模块,与所述处理模块连接,用于根据接收的多个类型使能信号、所述第一异或结果和所述第二异或结果,生成所述两个目标数据对应目标位宽类型的多项式乘加的目标结果;其中,目标位宽类型包括所述第一位宽类型和所述第二位宽类型中的至少一种。
在其中一个实施例中,所述处理模块还包括:
第三处理单元,包括所述第二处理单元,与所述按位与单元连接,用于根据第三操作指令、所述按位与结果和所述第二异或结果,生成第三位宽类型的第三异或结果;其中,所述第三位宽类型的数据位宽大于所述第二位宽类型的数据位宽。
在其中一个实施例中,所述处理模块还包括:
第四处理单元,包括所述第三处理单元,与所述按位与单元连接,用于根据第四操作指令、所述按位与结果和所述第三异或结果,生成第四位宽类型的第四异或结果;其中,所述第四位宽类型的数据位宽大于所述第三位宽类型的数据位宽。
在其中一个实施例中,所述处理模块还包括存储单元,与所述按位与单元连接,用于存储所述按位与结果,所述按位与结果包括所述两个目标数据按位与的多个乘积结果;其中,
所述第一处理单元与所述存储单元连接,所述第一处理单元用于根据所述第一操作指令从所述存储单元中获取对应所述第一位宽类型的部分所述乘积结果,并对部分所述乘积结果进行按列异或处理,生成所述第一异或结果并存储于所述存储单元;
所述第二处理单元与所述存储单元连接,所述第二处理单元用于根据所述第二操作指令从所述存储单元中获取所述第一异或结果和对应所述第二位宽类型的部分所述乘积结果,并对所述第一异或结果和部分所述乘积结果进行按列异或处理,生成所述第二异或结果并存储于所述存储单元。
在其中一个实施例中,所述生成模块还包括:
选择单元,分别与所述第一处理单元、所述第二处理单元连接,用于根据接收的所述多个类型使能信号,从所述第一异或结果和所述第二异或结果中确定所述目标位宽类型的目标异或结果;
异或单元,与所述选择单元连接,用于根据目标操作指令对所述目标异或结果进行异或处理,生成所述两个目标数据对应所述目标位宽类型的多项式乘加的目标结果。
在其中一个实施例中,所述多项式乘加处理电路还包括:
译码模块,用于对接收的类型选择信号进行译码,生成所述多个类型使能信号;其中,
所述选择单元与所述译码模块连接,所述选择单元用于在目标使能信号有效的情况下,从多个异或结果中确定所述目标位宽类型的目标异或结果;其中,所述目标使能信号为所述多个类型使能信号中的一个,所述多个异或结果至少包括所述第一异或结果和所述第二异或结果。
在其中一个实施例中,所述多项式乘加处理电路还包括第一同步模块,分别与所述译码模块、所述第一处理单元、所述第二处理单元、所述选择单元连接,用于将所述多个类型使能信号、所述第一异或结果和所述第二异或结果进行同步处理后输出至所述选择单元。
在其中一个实施例中,所述获取模块包括第一获取单元和第二获取单元,其中,
所述第一获取单元用于对接收的第一初始数据,生成目标位宽的第一子数据和第二子数据,并根据接收的第一数据使能信号和所述第一子数据生成第一候选数据,以及根据接收的第二数据使能信号和所述第二子数据生成第二候选数据,所述第一子数据和所述第二子数据的数位不同;
所述第二获取单元用于对接收的第二初始数据,生成目标位宽的第三子数据和第四子数据,并根据接收的第三数据使能信号和所述第三子数据生成第三候选数据,以及根据接收的第四数据使能信号和所述第四子数据生成第四候选数据,所述第三子数据和所述第四子数据的数位不同;其中,
所述获取模块用于将数位相同的所述第一候选数据和所述第三候选数据确定为所述两个目标数据,以及将所述第二候选数据和所述第四候选数据确定为所述两个目标数据。
在其中一个实施例中,所述多项式乘加处理电路还包括第二同步模块,分别与所述获取模块、所述按位与单元连接,用于对所述获取模块输出的目标数据进行同步处理并输出至所述获取模块。
在其中一个实施例中,所述多项式乘加处理电路还包括:
拼接模块,与所述生成模块连接,用于按照数位对第一目标结果和第二目标结果进行拼接,生成所述第一初始数据和所述第二初始数据对应所述目标位宽类型的多项式乘加的拼接结果;其中,所述第一目标结果为所述第一候选数据和所述第三候选数据对应所述目标位宽类型的多项式乘加的结果,所述第二目标结果为所述第二候选数据和所述第四候选数据对应所述目标位宽类型的多项式乘加的结果。
在其中一个实施例中,所述多项式乘加处理电路还包括第三同步模块,与所述拼接模块连接,用于对所述拼接模块输出的拼接结果进行延迟处理并输出。
第二方面,本申请实施例提供了一种芯片,包括如上述的多项式乘加处理电路。
上述多项式乘加处理电路和芯片,通过获取模块获取待处理的两个目标数据,并通过处理模块中的按位与单元对两个目标数据进行按位与处理生成按位与结果,然后通过处理模块中的第一处理单元根据第一操作指令和按位与结果生成对应第一位宽类型的第一异或结果,并通过处理模块中的第二处理单元根据第二操作指令、按位与结果和第一异或结果生成对应第二位宽类型的第二异或结果,从而通过生成模块根据接收的多个类型使能信号、第一异或结果和第二异或结果,生成两个目标数据对应目标位宽类型的多项式乘加的目标结果,其中,第二处理单元在生成第二异或结果的过程中,通过复用第一处理单元的第一异或结果,无需再次重复第一处理单元的异或处理过程以获取第一异或结果,实现了第二处理单元对第一处理单元的复用,也即,通过大位宽的异或结果复用小位宽的异或结果,实现处理大位宽的处理单元嵌套复用处理小位宽的处理单元,减少了处理大位宽的处理单元对逻辑电路资源的消耗,从而提高了多项式乘加的处理效率,能够满足高性能的处理需求。
附图说明
为了更清楚地说明本申请实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一实施例的多项式乘加处理电路的结构示意图;
图2为另一实施例的多项式乘加处理电路的结构示意图;
图3为一实施例的两个目标数据进行按位与处理后生成的按位与结果的示意图;
图4为一实施例的多项式乘积处理的流程示意图。
附图标记说明:
获取模块10,第一获取单元101,第二获取单元102,处理模块20,第一子处理模块21,第二子处理模块22,按位与单元201,第一处理单元202,第二处理单元203,第三处理单元204,第四处理单元205,存储单元206,生成模块30,第一子生成模块31,第二子生成模块32,选择单元301,异或单元302,译码模块40,第一同步模块50,第二同步模块60,拼接模块70,第三同步模块80。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的实施例。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使本申请的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一处理单元称为第二处理单元,且类似地,可将第二处理单元称为第一处理单元。第一处理单元和第二处理单元两者都是处理单元,但其不是同一处理单元。
可以理解,以下实施例中的“连接”,如果被连接的电路、模块、单元等相互之间具有电信号或数据的传递,则应理解为“电连接”、“通信连接”等。
可以理解,“至少一个”是指一个或多个,“多个”是指两个或两个以上。“元件的至少部分”是指元件的部分或全部。
在此使用时,单数形式的“一”、“一个”和“所述/该”也可以包括复数形式,除非上下文清楚指出另外的方式。还应当理解的是,术语“包括/包含”或“具有”等指定所陈述的特征、整体、步骤、操作、组件、部分或它们的组合的存在,但是不排除存在或添加一个或更多个其他特征、整体、步骤、操作、组件、部分或它们的组合的可能性。同时,在本说明书中使用的术语“和/或”包括相关所列项目的任何及所有组合。
在一个实施例中,如图1所示,提供了一种多项式乘加处理电路,包括获取模块10、处理模块20和生成模块30。其中,获取模块10用于获取待处理的两个目标数据。其中,目标数据为待进行多项式乘加处理的二进制数据,两个目标数据具有相同的位宽类型。在本申请实施例中,目标数据为二进制乘加处理过程中实际进行按位与处理和异或处理的数据,目标数据可以通过获取模块10对接收的初始数据进行预处理后获取得到,其中,初始数据是获取模块10接收的数据。例如,获取模块10接收两个128位的初始数据vra[0:127]和vrb[0:127],并对vra[0:127]和vrb[0:127]进行拆分处理后,获取两个64位的目标数据分别为vra[0:63]和vrb[0:63]。
处理模块20至少包括按位与单元201和第二处理单元203。其中,按位与单元201与获取模块10连接,按位与单元201用于根据两个目标数据生成按位与结果。按位与结果包括两个目标数据每一位进行逻辑与处理后的乘积结果,例如,两个64位的目标数据vra[0:63]和vrb[0:63]进行按位与处理后,生成的按位与结果包括64*64=4096个乘积结果,用列表可以表示为List[0][0:63]、List[1][0:63],List[2][ 0:63]…List[63][0:63],其中,List[0][0:63]=vra[0]&vrb[0:63],List[0][0:63]=vra[1]&vrb[0:63],…,List[63][0:63]=vra[63]&vrb[0:63]。
第二处理单元203包括第一处理单元202。第一处理单元202与按位与单元201连接。第一处理单元202用于根据第一操作指令和按位与结果,生成第一位宽类型的第一异或结果。其中,第一操作指令是预先设置的,用于指示对两个目标数据进行第一位宽类型的多项式乘加处理。示例性的,第一操作指令为Power指令集中对应第一位宽类型的多项式乘加指令。第二处理单元203与按位与单元201连接。第二处理单元203用于根据第二操作指令、按位与结果和第一异或结果,生成第二位宽类型的第二异或结果。其中,第二操作指令是预先设置的,用于指示对两个目标数据进行第二位宽类型的多项式乘加处理。示例性的,第二操作指令为Power指令集中对应第二位宽类型的多项式乘加指令。不同位宽类型的数据位宽不同,并且第一位宽类型的数据位宽小于第二位宽类型的数据位宽。例如,第一位宽类型为字节(Byte),第二位宽类型为半字(halfword);其中,字节的数据位宽为8比特(bit),半字的数据位宽为16bit。
生成模块30与处理模块20连接,生成模块30用于根据接收的多个类型使能信号、第一异或结果和第二异或结果,生成两个目标数据对应目标位宽类型的多项式乘加的目标结果。其中,类型使能信号用于使能对应位宽类型的异或结果,也即,在类型使能信号有效的情况下,将对应位宽类型的异或结果确定为目标异或结果。多个类型使能信号至少包括第一类型使能信号和第二类型使能信号,其中,在第一类型使能信号有效的情况下,将第一异或结果确定为目标异或结果;在第二类型使能信号有效的情况下,将第二异或结果确定为目标异或结果。目标位宽类型根据类型使能信号确定。目标位宽类型包括第一位宽类型和第二位宽类型中的至少一种。应用中,生成模块30接收到多个类型使能信号后,根据多个类型使能信号确定目标异或结果,然后根据目标异或结果生成两个目标数据对应目标位宽类型的多项式乘加的目标结果。例如,第一位宽类型为字节,第二位宽类型为半字,目标位宽类型包括字节和半字,则在第一类型使能信号和第二类型使能信号都有效的情况下,根据第一异或结果生成两个目标数据对应字节的多项式乘加的目标结果,并根据第二异或结果生成两个目标数据对应半字的多项式乘加的目标结果。
上述多项式乘加处理电路,通过获取模块10获取待处理的两个目标数据,并通过处理模块20中的按位与单元201对两个目标数据进行按位与处理生成按位与结果,然后通过处理模块20中的第一处理单元202根据第一操作指令和按位与结果生成对应第一位宽类型的第一异或结果,并通过处理模块20中的第二处理单元203根据第二操作指令、按位与结果和第一异或结果生成对应第二位宽类型的第二异或结果,从而通过生成模块30根据接收的多个类型使能信号、第一异或结果和第二异或结果,生成两个目标数据对应目标位宽类型的多项式乘加的目标结果,其中,第二处理单元203在生成第二异或结果的过程中,通过复用第一处理单元202的第一异或结果,无需再次重复第一处理单元202的异或处理过程以获取第一异或结果,实现了第二处理单元203对第一处理单元202的复用,也即,通过大位宽的异或结果复用小位宽的异或结果,实现处理大位宽的处理单元嵌套复用处理小位宽的处理单元,减少了处理大位宽的处理单元对逻辑电路资源的消耗,从而提高了多项式乘加的处理效率,能够满足高性能的处理需求。
在一个实施例中,第一位宽类型包括字节、半字、字中的一种,第二位宽类型包括半字、字、双字中的一种。其中,字节(byte)的数据位宽为8位(bit),半字(halfword)的数据位宽为16bit,字(word)的数据位宽为32bit,双字(doubleword)的数据位宽为64bit。例如,第一位宽类型为字节,第二位宽类型为半字、字或双字;第一位宽类型为半字,第二位宽类型为字或双字;第一位宽类型为字,第二位宽类型为双字。如此,对于位宽类型为双字的异或结果可以复用位宽类型为字、半字或字节的异或结果,对于位宽类型为字的异或结果可以复用位宽类型为半字或字节的异或结果,对于位宽类型为半字的异或结果可以复用位宽类型为字节的异或结果,达到减少逻辑电路资源消耗的目的,以提高基于多项式乘加操作指令(如基于Power指令集中的多项式乘加指令)对不同位宽类型的多项式乘加处理速度,满足高性能的处理需求。
在一个实施例中,如图2所示,处理模块20还包括第三处理单元204。第三处理单元204包括第二处理单元203。第三处理单元204与按位与单元201连接。第三处理单元204用于根据第三操作指令、按位与结果和第二异或结果,生成第三位宽类型的第三异或结果。其中,第三操作指令是预先设置的,用于指示对两个目标数据进行第三位宽类型的多项式乘加处理。示例性的,第三操作指令为Power指令集中对应第三位宽类型的多项式乘加指令。第三位宽类型的数据位宽大于第二位宽类型的数据位宽。示例性的,第一位宽类型为字节,第二位宽类型为半字,第三位宽类型为字或双字;第一位宽类型为半字,第二位宽类型为字,第三位宽类型为双字。
上述多项式乘加处理电路,处理模块20包括按位与单元201、第一处理单元202、第二处理单元203和第三处理单元204,其中,第三处理单元204包括第二处理单元203,第二处理单元203包括第一处理单元202,第一处理单元202用于根据第一操作指令和按位与结果生成第一异或结果,第二处理单元203用于根据第二操作指令、按位与结果和第一异或结果生成第二异或结果,第三处理单元204用于根据第三操作指令、按位与结果和第二异或结果生成第三异或结果,该处理电路通过复用第一异或结果计算第二异或结果,实现了第二处理单元203对第一处理单元202的复用,并通过复用第二异或结果计算第三异或结果,实现了第三处理单元204对第二处理单元203的复用,也即,实现了处理次小位宽的第二处理单元203嵌套复用处理最小位宽的第一处理单元202,以及处理大位宽的第三处理单元204嵌套复用处理次小位宽的第二处理单元203,也即,实现了各处理单元依位宽由小到大的逐层嵌套复用,减少了逻辑电路资源的消耗,提高了多项式乘加的处理效率,能够满足高性能的处理需求。
请继续参阅图2,在一个实施例中,处理模块20还包括第四处理单元205,第四处理单元205包括第三处理单元204。第四处理单元205与按位与单元201连接。第四处理单元205用于根据第四操作指令、按位与结果和第三异或结果,生成第四位宽类型的第四异或结果。其中,第四操作指令是预先设置的,用于指示对两个目标数据进行第四位宽类型的多项式乘加处理。示例性的,第四操作指令为Power指令集中对应第四位宽类型的多项式乘加指令。第四位宽类型的数据位宽大于第三位宽类型的数据位宽。示例性的,第一位宽类型为字节,第二位宽类型为半字,第三位宽类型为字,第四位宽类型为双字。
上述多项式乘加处理电路,其中处理模块20还包括第四处理单元205,第四处理单元205包括第三处理单元204,第四处理单元205用于根据第四操作指令、按位与结果和第三异或结果生成第四异或结果,该处理电路通过复用第三异或结果计算第四异或结果,实现了第四处理单元205对第三处理单元204的复用,进一步实现了处理更大位宽的第四处理单元205嵌套复用处理大位宽的第三处理单元204,也即,实现了各处理单元依位宽由小到大的逐层嵌套复用,减少了逻辑电路资源的消耗,提高了多项式乘加的处理效率,能够满足高性能的处理需求。
在一个实施例中,请继续参阅图2,处理模块20还包括存储单元206。存储单元206与按位与单元201连接,存储单元206用于存储按位与结果。示例性的,存储单元206可以为寄存器(Register)或存储器如静态随机存储器(Static Random Access Memory,SRAM)、查找表(Lookup Table,LUT)存储阵列等。其中,按位与结果包括两个目标数据按位与的多个乘积结果。例如,按位与单元201对两个64位的目标数据vra[0:63]和vrb[0:63]进行按位与处理后,生成的按位与结果包括64*64=4096个乘积结果,则存储单元206将存储这4096个乘积结果,如图3所示,其中,一个格子用于存储一个乘积结果。
本申请对存储单元206存储多个乘积结果的形式不做限定。示例性的,存储单元206可以按列存储各个乘积结果,例如,对于两个目标数据vra[0:63]和vra[0:63],存储单元206按照列表List[0][0:63]、List[1][0:63]、…、List[63][0:63]存储其按位与处理后的4096个乘积结果,在图3所示,List[n][0:63]对应一行64个格子存储的数据,0≤n≤63。又一示例性的,存储单元206也可以按行存储各个乘积结果,例如,对于两个目标数据vra[0:63]和vra[0:63],存储单元206按照列表List[0:63][0]、List[0:63][1]、…、List[0:63][63]存储其按位与处理后的4096个乘积结果,List[0:63][0]=vra[0:63]&vrb[0],List[0:63][1]=vra[0:63]&vrb[1],…,List[0:63][63]=vra[0:63]&vrb[63]。另一示例性的,存储单元206也可以分别对各个乘积结果单独进行存储。
其中,第一处理单元202与存储单元206连接,第一处理单元202用于根据第一操作指令从存储单元206中获取对应第一位宽类型的部分乘积结果,并对部分乘积结果进行按列异或处理,生成第一异或结果并存储于存储单元206。第一处理单元202从存储单元206获取的乘积结果是根据第一操作指令确定的,各乘积结果对应的列位置也是根据第一操作指令确定的。
第二处理单元203与存储单元206连接,第二处理单元203用于根据第二操作指令从存储单元206中获取第一异或结果和对应第二位宽类型的部分乘积结果,并对第一异或结果和部分乘积结果进行按列异或处理,生成第二异或结果并存储于存储单元206。第二处理单元203从存储单元206获取的乘积结果与第一处理单元202从存储单元206获取的乘积结果不同,并且第二处理单元203从存储单元206获取的乘积结果是根据第二操作指令确定的,各乘积结果对应的列位置也是根据第二操作指令确定的。
可以理解的是,在处理模块20包括第三处理单元204的情况下,第三处理单元204与存储单元206连接,第三处理单元204用于根据第三操作指令从存储单元206中获取第二异或结果和对应第三位宽类型的部分乘积结果,并对第二异或结果和部分乘积结果进行按列异或处理,生成第三异或结果并存储于存储单元206。第三处理单元204从存储单元206获取的乘积结果分别与第一处理单元202、第二处理单元203从存储单元206获取的乘积结果不同,并且第三处理单元204从存储单元206获取的乘积结果是根据第三操作指令确定的,各乘积结果对应的列位置也是根据第三操作指令确定的。
在处理模块20包括第四处理单元205的情况下,第四处理单元205与存储单元206连接,第四处理单元205用于根据第四操作指令从存储单元206中获取第三异或结果和对应第四位宽类型的部分乘积结果,并对第三异或结果和部分乘积结果进行按列异或处理,生成第四异或结果并存储于存储单元206。第四处理单元205从存储单元206获取的乘积结果分别与第一处理单元202、第二处理单元203、第三处理结果从存储单元206获取的乘积结果不同,并且第四处理单元205从存储单元206获取的乘积结果是根据第四操作指令确定的,各乘积结果对应的列位置也是根据第四操作指令确定的。
上述多项式乘加处理电路,其中,处理模块20能够通过存储单元206将按位与单元201生成的按位与结果以及各处理单元生成的异或结果进行存储,以便多个处理单元能够从存储单元206中获取相应的结果进行异或操作,保证数据的可溯性,提高了多项式乘加处理电路的可靠性。
在一个实施例中,请继续参阅图2,生成模块30还包括选择单元301和异或单元302。其中,选择单元301分别与第一处理单元202、第二处理单元203连接。选择单元301用于根据接收的多个类型使能信号,从第一异或结果和第二异或结果中确定目标位宽类型的目标异或结果。其中,类型使能信号用于确定目标异或结果,多个类型使能信号至少包括第一类型使能信号和第二类型使能信号,目标异或结果包括第一异或结果和第二异或结果中的至少一个。
异或单元302与选择单元301连接。异或单元302用于根据目标操作指令对目标异或结果进行异或处理,生成两个目标数据对应目标位宽类型的多项式乘加的目标结果。其中,目标操作指令包括第一操作指令和第二操作指令中的至少一个,目标位宽类型包括第一位宽类型和第二位宽类型中的至少一个,目标异或结果分别与目标操作指令、目标位宽类型对应。在目标异或结果包括多个异或结果的情况下,异或单元302用于分别根据各操作指令对对应的异或结果进行异或处理,对应生成不同位宽类型的目标结果。
需要说明的是,在处理模块20还包括第三处理单元204的情况下,选择单元301还与第三处理单元204连接,多个类型使能信号还包括第三类型使能信号,在第三类型使能信号有效的情况下,将第三异或结果确定为目标异或结果。在处理模块20还包括第四处理单元205的情况下,选择单元301还与第四处理单元205连接,多个类型使能信号还包括第四类型使能信号,在第四类型使能信号有效的情况下,将第四异或结果确定为目标异或结果。示例性的,四个位宽类型分别为字节、半字、字和双字,则分别与之对应的四个类型使能信号可以记为byte_en、hword_en、word_en和dword_en。
上述多项式乘加处理电路,其中,生成模块30能够通过选择单元301根据接收的多个类型使能信号,从多个异或结果中确定目标位宽类型对应的目标异或结果,并通过异或单元302根据目标操作指令对目标异或结果进行异或处理,生成两个目标数据对应目标位宽类型的多项式乘加的目标结果,如此能够通过类型使能信号选择两个目标数据对应目标位宽类型的多项式乘加的目标结果,避免对不存在需求的其他位宽类型的异或结果的二次异或处理,降低了对于电路资源的占用,进一步提高了多项式乘加的处理效率。
在一个实施例中,请继续参阅图2,多项式乘加处理电路还包括译码模块40,译码模块40用于对接收的类型选择信号进行译码,生成多个类型使能信号。不同位宽类型对应不同的类型使能信号。在本申请实施例中,将类型选择信号记为mode_select。其中,选择单元301与译码模块40连接,选择单元301用于在目标使能信号有效的情况下,从多个异或结果中确定目标位宽类型的目标异或结果。其中,目标使能信号为多个类型使能信号中的一个。多个异或结果至少包括第一异或结果和第二异或结果。示例性的,多个异或结果还可以包括第三异或结果,或者,多个异或结果还可以包括第三异或结果和第四异或结果。
上述多项式乘加处理电路,能够通过译码模块40对接收的类型选择信号进行译码,生成多个类型使能信号,从而能够通过选择单元301在目标使能信号有效的情况下,从多个异或结果中确定目标位宽类型的目标异或结果,以通过异或单元302根据目标操作指令对目标异或结果进行异或处理,生成两个目标数据对应目标位宽类型的多项式乘加的目标结果,避免对不存在需求的其他位宽类型的异或结果的二次异或处理,降低了电路资源的消耗和占用,进一步提高了多项式乘加的处理效率。
在一个实施例中,多项式乘加处理电路还包括第一同步模块50,第一同步模块50分别与译码模块40、第一处理单元202、第二处理单元203、选择单元301连接,第一同步模块50用于将多个类型使能信号、第一异或结果和第二异或结果进行同步处理后输出至选择单元301。示例性的,第一同步模块50可以为D类触发器(D Flip-flop,DFF)。如此能够保证选择单元301接收的各类型使能信号、各异或结果的时序保持一致,避免输入延迟对处理性能的影响,使多项式乘加处理电路能够达到较高的运行频率,以满足高性能的处理需求。
在一个实施例中,请继续参阅图2,获取模块10包括第一获取单元101和第二获取单元102。其中,第一获取单元101用于对接收的第一初始数据,生成目标位宽的第一子数据和第二子数据,并根据接收的第一数据使能信号和第一子数据生成第一候选数据,以及根据接收的第二数据使能信号和第二子数据生成第二候选数据,第一子数据和第二子数据的数位不同。示例性的,第一子数据和第二子数据的目标位宽为第一初始数据的位宽的一半。
第二获取单元102用于对接收的第二初始数据,生成目标位宽的第三子数据和第四子数据,并根据接收的第三数据使能信号和第三子数据生成第三候选数据,以及根据接收的第四数据使能信号和第四子数据生成第四候选数据,第三子数据和第四子数据的数位不同。示例性的,第一初始数据和第二初始数据的位宽相同。示例性的,第三子数据和第四子数据的目标位宽为第二初始数据的位宽的一半。其中,获取模块10用于将数位相同的第一候选数据和第二候选数据确定为两个目标数据,以及将第二候选数据和第四候选数据确定为两个目标数据。
其中,数据使能信号用于使能对应的子数据,在数据使能信号有效的情况下,候选数据与对应的子数据相同;在数据使能信号无效的情况下,将候选数据置为0。在本申请实施例中,将四个数据使能信号分别记为vra_low、vra_high、vrb_low、vrb_high。
例如,针对第一初始数据vra[0:127]和第二初始数据vrb[0:127],分别将其拆分为四个64位的第一子数据vra[0:63]、第二子数据vra[64:127]、第三子数据vrb[0:63]和第四子数据vrb[64:127],若四个数据使能信号均有效也即vra_low、vra_high、vrb_low、vrb_high均为1,则获取模块10可以获取两个目标数据组,其中第一目标数据组包括vra[0:63]和vrb[0:63],第二目标数据组包括vra[64:127]和vrb[64:127];若两个数据使能信号有效,如vra_low和vrb_low有效为1,vra_high和vrb_high无效为0,则第一目标数据组包括vra[0:63]和vrb[0:63],第二目标数据组中的两个目标数据均为0。
需要说明的是,在获取模块10获取两个目标数据组有效的情况下,处理模块20和生成模块30可以分别对各目标数据组的两个目标数据进行处理,对应获取各目标数据组的多项式乘加的目标结果,也即采用串行处理的方式对两个目标数据组进行多项式乘加处理。可以理解的是,处理模块20和生成模块30也可以采用并行处理的方式对两个目标数据组进行多项式乘加处理。
示例性的,请继续参阅图2,处理模块20可以包括第一子处理模块21和第二子处理模块22,生成模块30包括第一子生成模块31和第二子生成模块32。其中,第一子处理模块21的按位与单元201用于对第一目标数据组的两个目标数据进行按位与处理,生成第一按位与结果。第一子处理模块21的第一处理单元202用于根据第一操作指令和第一按位与结果,生成第一位宽类型的第一子异或结果,第一子处理模块21的第二处理单元203用于根据第二操作指令、第一按位与结果和第一子异或结果,生成第二位宽类型的第二子异或结果。第一子生成模块31分别与第一子处理模块21的第一处理单元202、第二处理单元203连接,第一子生成模块31用于根据接收的多个类型使能信号、第一子异或结果和第二子异或结果,生成第一目标数据组中两个目标数据对应目标位宽类型的多项式乘加的第一目标结果。
第二子处理模块22的按位与单元201用于对第二目标数据组的两个目标数据进行按位与处理,生成第二按位与结果。第二子处理模块22的第一处理单元202用于根据第一操作指令和第二按位与结果,生成第一位宽类型的第三子异或结果,第二子处理模块22的第二处理单元203用于根据第二操作指令、第二按位与结果和第三子异或结果,生成第二位宽类型的第四子异或结果。第二子生成模块32分别与第二子处理模块22的第一处理单元202、第二处理单元203连接,第二子生成模块32用于根据接收的多个类型使能信号、第三子异或结果和第四子异或结果,生成第二目标数据组中两个目标数据对应目标位宽类型的多项式乘加的第二目标结果。
上述多项式乘加处理电路,通过两个获取单元分别将两个初始数据拆分为四个相同位宽的子数据,并通过两个获取单元分别根据四个数据使能信号和四个子数据对应生成四个候选数据,从而可以通过改变数据使能信号选择需要进行多项式乘加处理的两个目标数据,并且在四个数据使能信号均有效的情况下,两个目标数据组可以并行处理,进一步提高了多项式乘加的处理效率,有助于实现更高性能的处理需求。
在一个实施例中,请继续参阅图2,多项式乘加处理电路还包括第二同步模块60,第二同步模块60分别与获取模块10、按位与单元201连接,第二同步模块60用于对获取模块10输出的目标数据进行同步处理并输出至获取模块10。示例性的,第二同步模块60可以为DFF。以图2所示的多项式乘加电路为例,第二同步模块60用于对获取模块10输出的四个目标数据进行同步处理,并将同步处理后的第一目标数据组的两个目标数据传输至第一子处理模块21的按位与单元201,以及将同步处理后的第二目标数据组的两个目标数据传输至第二子处理模块22的按位与单元201,以便两个子处理模块20对各目标数据组的两个目标数据并行进行多项式乘加处理。如此能够保证获取模块10接收的各数据的时序保持一致,避免输入延迟对处理性能的影响,使多项式乘加处理电路能够达到较高的运行频率,以满足高性能的处理需求。
在一个实施例中,请继续参阅图2,多项式乘加处理电路还包括拼接模块70,拼接模块70与生成模块30连接,拼接模块70用于按照数位对第一目标结果和第二目标结果进行拼接,生成第一初始数据和第二初始数据对应目标位宽类型的多项式乘加的拼接结果。其中,第一目标结果为第一候选数据和第三候选数据对应目标位宽类型的多项式乘加的结果,第一目标结果为第二候选数据和第四候选数据对应目标位宽类型的多项式乘加的结果。例如,目标位宽类型为字节,针对第一目标数据组中的vra[0:63]和vrb[0:63],第二目标数据组中的vra[64:127]和vrb[64:127],基于处理模块20和生成模块30可以分别获取第一目标数据组对应字节类型的多项式乘加的第一目标结果为result[0:63],第二目标数据组对应字节类型的多项式乘加的第二目标结果为result[64:127],拼接模块70将result[0:63]和result[64:127]进行拼接后生成vra[0:127]和vrb[0:127]对应字节类型的多项式乘加的拼接结果result[0:127]。
上述多项式乘加处理电路,通过获取模块10的两个获取单元将两个初始数据拆分为两个不同数位的目标数据组,从而能够分成两路对两个目标数据组的目标数据分别并行进行多项式乘加处理,进而通过拼接结果按照数位对第一目标结果和第二目标结果进行拼接,生成第一初始数据和第二初始数据对应目标位宽类型的多项式乘加结果,如此,相较于直接对两个初始数据进行按位与再进行两次异或处理生成多项式乘加结果的方式,本申请实施例提供的拆分为两路采用并行处理的方式,提高了对于两个初始数据进行多项式乘加的处理速度,能够满足更高性能的处理需求。
在一个实施例中,请继续参阅图2,多项式乘加处理电路还包括第三同步模块80,第三同步模块80与拼接模块70连接,第三同步模块80用于对拼接模块70输出的拼接结果进行延迟处理并输出,从而保证输出的结果中无逻辑部分,并且在时序上无输入延迟,使得多项式乘加处理电路能够达到较高的运行频率,以满足高性能的处理需求。
为了更好的理解,请继续参阅图2,以第一初始数据为vra[0:127]、第二初始数据为vrb[0:127]、第一位宽类型为字节、第二位宽类型为半字、第三位宽类型为字、第四位宽类型为双字为例,对本申请提供的多项式乘加电路进行说明。
其中,四个操作指令分别为基于Power指令集中四个位宽类型的多项式乘加指令,具体地,第一操作指令如下:
do i = 0 to 15
prod[i].bit[0:14]←0
srcA ← VR[VRA].byte[i]
srcB ← VR[VRB].byte[i]
do j = 0 to 7
do k = 0 to j
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
do j = 8 to 14
do k = j-7 to 7
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
end
do i = 0 to 7
VR[VRT].hword[i] ← 0b0 || {prod[2*i] ^ prod[2*i+1]}
end
第二操作指令如下:
do i = 0 to 7
prod[i].bit[0:30]←0
srcA ← VR[VRA].byte[i]
srcB ← VR[VRB].byte[i]
do j = 0 to 15
do k = 0 to j
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
do j = 16 to 30
do k = j-15 to 15
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
end
do i = 0 to 3
VR[VRT]. word[i] ← 0b0 || {prod[2*i] ^ prod[2*i+1]}
end
第三操作指令如下:
do i = 0 to 3
prod[i].bit[0:62]←0
srcA ← VR[VRA].byte[i]
srcB ← VR[VRB].byte[i]
do j = 0 to 31
do k = 0 to j
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
do j = 32 to 62
do k = j-31 to 31
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
end
do i = 0 to 1
VR[VRT]. dword[i] ← 0b0 || {prod[2*i] ^ prod[2*i+1]}
end
第四操作指令如下:
do i = 0 to 1
prod[i].bit[0:126]←0
srcA ← VR[VRA].byte[i]
srcB ← VR[VRB].byte[i]
do j = 0 to 63
do k = 0 to j
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
do j = 64 to 126
do k = j-63 to 63
gbit ← srcA.bit[k] & srcB.bit[j-k]
prod[i].bit[i] ← prod[i].bit[i] ^ gbit
end
end
end
VR[VRT] ← 0b0 || {prod[0] ^ prod[1]}
多项式乘加电路的获取模块10中的第一获取单元101对第一初始数据为vra[0:127]进行拆分,并根据数据使能信号vra_low和vra_high,生成两个候选数据vra[0:63]和vra[64:127],获取模块10中的第二获取单元102对第二初始数据为vrb[0:127]进行拆分,并根据数据使能信号vrb_low和vrb_high,生成两个候选数据vrb[0:63]和vrb[64:127]。然后,经过第一级DFF打一拍后,将第一目标数据组的vra[0:63]和vrb[0:63]输出至第一子处理模块21中的按位与单元201,并将第二目标数据组的vra[64:127]和vrb[64:127]输出至第二子处理模块22中的按位与单元201。
以第一目标数据组的vra[0:63]和vrb[0:63]作为示例,第一子处理模块21的按位与单元201对vra[0:63]和vrb[0:63]进行按位与处理后生成64*64=4096个乘积结果vra[0:63]&vrb[0:63],并存储于存储单元206如LUT中,如图3所示一个格子存储一个乘积结果。然后,第一子处理模块21的第一处理单元202根据第一操作指令从存储单元206中获取字节类型对应的部分乘积结果进行按位异或操作,生成的异或结果Byte[0:127]具体如下:
Byte[0]=List[0][0];
Byte[1]=List[0][1]^List[1][0];
Byte[2]=List[0][2]^List[1][1]^List[2][0];
…
Byte[126]=List[63][63];
Byte[127]=0;
其中,第一子处理模块21的第二处理单元203根据第二操作指令从存储单元206中获取半字类型对应的部分乘积结果和异或结果Byte[0:127]进行异或操作,生成的异或结果Hword[0:127]具体如下:
Hword[0:7]=Byte[0:7];
Hword[8]=List[0][8]^List[8][0]^Byte[8];
Hword[9]=List[0][9]^List[1][8]^ List[8][1]^ List [9][0]^Byte[9];
…
Hword[127]=0;
其中,第一子处理模块21的第三处理单元204根据第三操作指令从存储单元206中获取字类型对应的部分乘积结果和异或结果Hword[0:127]进行异或操作,生成的异或结果Word[0:127]具体如下:
Word[0:15]=Hword[0:15];
Word[16]=List[0][16]^List[16][0]^ Hword [16];
Word[17]=List[0][17]^List[1][16]^List[16][1]^List[17][0]^Hword[17];
…
Word[127]=0;
其中,第一子处理模块21的第四处理单元205根据第四操作指令从存储单元206中获取双字类型对应的部分乘积结果和异或结果Word[0:127]进行异或操作,生成的异或结果Dword[0:127]具体如下:
Dword[0:31]=Hword[0:31];
Dword[32]=List[0][32]^List[32][0]^Word[32];
Dword[33]=List[0][33]^List[1][32]^List[32][1]^List[33][0]^Word[33];
…
Dword [127]=0;
其中,Byte/Hword/Word/Dword[i]表示对应位宽类型的异或结果中的第i位,List[j][k]表示列表List第j行第k列的数,^表示异或,0≤i≤127,0≤j,k≤63。如上述式子和图3可知,异或结果Byte[0:127]对应图3中各最小菱形(第一级:8*8个格子,其中1个格子代表1bit数据)按列异或的结果,异或结果Hword[0:127]对应图3中次小菱形(第二级:16*16个格子)按列异或的结果,异或结果Word [0:127]对应图3中各中菱形(第三级:32*32个格子)按列异或的结果,异或结果Dword[0:127]对应图3中次最大菱形(第四级:64*64个格子)按列异或的结果。其中,对于异或结果Hword[0:127],其中,Hword[0:7]复用了Byte[0:7](也即图3中最左端的第二级菱形的左侧8列异或结果复用了最左端的第一级最小菱形左侧8列异或结果),Hword[8]复用了Byte[8]并补充了List[0][8]和List[8][0],依次类推;对于异或结果Word[0:127],其中,Word[0:15]复用了Hword[0:15],Word[16]复用了Hword[16]并补充了List[0][16]和List[16][0],依次类推;对于异或结果Dword[0:127],其中,Dword[0:31]复用了Word[0:31],Dword[32]复用了Word[32]并补充了List[0][32]和List[32][0],依次类推。
由图3可知,每个第二级菱形复用了两个第一级菱形,每个第三级菱形复用了两个第二级菱形,每个第四级菱形复用了两个第三级菱形。如图3和图4可知,基于上述按位与处理后,每一路可以得到8个字节类型的第一级菱形(边长16bit),4个半字类型的第二级菱形(边长32bit),2个字类型的第三级菱形(边长64bit)和1个双字类型的第四级菱形(边长128bit)。
同样的,对于第二处理子单元,执行上述对应的异或操作,可以分别得到字节的异或结果Byte[128:255]、半字对应的异或结果Hword[128:255]、字对应的异或结果Word[128:255]和双字的异或结果Dword[128:255]。
译码模块40对类型选择信号mode_select进行译码,生成四个类型使能信号byte_en、hword_en、word_en和dword_en,对于译码模块40生成的四个类型使能信号和上述两个子处理模块并行处理生成的八个异或结果,经过第二级DFF打一拍后,将四个类型使能信号和第一子处理模块21输出的四个异或结果Byte/Hword/Word/Dword[0:127]输出至第一子生成模块31,并将四个类型使能信号和第二子处理模块22输出的四个异或结果Byte/Hword/Word/Dword[128:255]输出至第二子生成模块32。
以类型使能信号byte_en=1有效为例,则第一子生成模块31的选择单元301根据类型使能信号byte_en和异或结果Byte[0:127]进行逻辑与处理后,输出异或结果Byte[0:127]至第一子生成模块31的异或单元302,然后第一子生成模块31的异或单元302根据第一操作指令将Byte[0:15]与Byte[16:31]、Byte[32:47]与Byte[48:63]、Byte[64:79]与Byte[80:95]、Byte[96:111]与Byte[112:127]分别进行异或操作,生成vra[0:63]与vra[0:63]对应字节类型的多项式乘加的第一目标结果prod_byte[0:63],同样地,第二子生成模块32生成vra[64:127]与vrb[64:127]对应字节类型的多项式乘加的第二目标结果prod_byte[64:127],继而拼接模块70将两个目标结果拼接后生成vra[0:127]与vrb[0:127]对应字节类型的多项式乘加的拼接结果result[0:127],再经过第三级DFF打一拍后输出。类似地,半字、字和双字的处理过程与上述字节类型相似,在此不再赘述。
上述多项式乘加处理电路支持8位、16位、32位和64位多项式乘加指令的运算,逻辑电路资源消耗小,处理速度快,能够满足高性能的工作频率如4Ghz。
在一个实施例中,提供了一种芯片,该芯片包括前述任一实施例提供的多项式乘加处理电路。示例性的,芯片为基于Power指令集的IP(Intellectual Property,知识产权)核,可内嵌到微处理器中,也可实现根据微处理器功能进行模块化裁剪与功能融合,在此不做限定。
上述芯片,其多项式乘加处理电路通过获取模块10获取待处理的两个目标数据,并通过处理模块20中的按位与单元201对两个目标数据进行按位与处理生成按位与结果,然后通过处理模块20中的第一处理单元202根据第一操作指令和按位与结果生成对应第一位宽类型的第一异或结果,并通过处理模块20中的第二处理单元203根据第二操作指令、按位与结果和第一异或结果生成对应第二位宽类型的第二异或结果,从而通过生成模块30根据接收的多个类型使能信号、第一异或结果和第二异或结果,生成两个目标数据对应目标位宽类型的多项式乘加的目标结果,其中,第二处理单元203在生成第二异或结果的过程中,通过复用第一处理单元202的第一异或结果,无需再次重复第一处理单元202的处理过程以获取第一异或结果,实现了第二处理单元203对第一处理单元202的复用,也即,通过大位宽的异或结果复用小位宽的异或结果,实现处理大位宽的处理单元嵌套复用处理小位宽的处理单元,减少了处理大位宽的处理单元对逻辑电路资源的消耗,从而提高了多项式乘加的处理效率,能够满足高性能的处理需求。
在本说明书的描述中,参考术语“有些实施例”、“其他实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特征包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性描述不一定指的是相同的实施例或示例。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (12)
1.一种多项式乘加处理电路,其特征在于,包括:
获取模块,用于获取待处理的两个目标数据;
处理模块,至少包括按位与单元以及包括第一处理单元的第二处理单元,所述按位与单元与所述获取模块连接,所述按位与单元用于根据所述两个目标数据生成按位与结果,所述第一处理单元与所述按位与单元连接,所述第一处理单元用于根据第一操作指令和所述按位与结果,生成第一位宽类型的第一异或结果,所述第二处理单元与所述按位与单元连接,所述第二处理单元用于根据第二操作指令、所述按位与结果和所述第一异或结果,生成第二位宽类型的第二异或结果;其中,所述第一位宽类型的数据位宽小于所述第二位宽类型的数据位宽;
生成模块,与所述处理模块连接,用于根据接收的多个类型使能信号、所述第一异或结果和所述第二异或结果,生成所述两个目标数据对应目标位宽类型的多项式乘加的目标结果;其中,目标位宽类型包括所述第一位宽类型和所述第二位宽类型中的至少一种。
2.根据权利要求1所述的多项式乘加处理电路,其特征在于,所述处理模块还包括:
第三处理单元,包括所述第二处理单元,与所述按位与单元连接,用于根据第三操作指令、所述按位与结果和所述第二异或结果,生成第三位宽类型的第三异或结果;其中,所述第三位宽类型的数据位宽大于所述第二位宽类型的数据位宽。
3.根据权利要求2所述的多项式乘加处理电路,其特征在于,所述处理模块还包括:
第四处理单元,包括所述第三处理单元,与所述按位与单元连接,用于根据第四操作指令、所述按位与结果和所述第三异或结果,生成第四位宽类型的第四异或结果;其中,所述第四位宽类型的数据位宽大于所述第三位宽类型的数据位宽。
4.根据权利要求1所述的多项式乘加处理电路,其特征在于,所述处理模块还包括存储单元,与所述按位与单元连接,用于存储所述按位与结果,所述按位与结果包括所述两个目标数据按位与的多个乘积结果;其中,
所述第一处理单元与所述存储单元连接,所述第一处理单元用于根据所述第一操作指令从所述存储单元中获取对应所述第一位宽类型的部分所述乘积结果,并对部分所述乘积结果进行按列异或处理,生成所述第一异或结果并存储于所述存储单元;
所述第二处理单元与所述存储单元连接,所述第二处理单元用于根据所述第二操作指令从所述存储单元中获取所述第一异或结果和对应所述第二位宽类型的部分所述乘积结果,并对所述第一异或结果和部分所述乘积结果进行按列异或处理,生成所述第二异或结果并存储于所述存储单元。
5.根据权利要求1所述的多项式乘加处理电路,其特征在于,所述生成模块还包括:
选择单元,分别与所述第一处理单元、所述第二处理单元连接,用于根据接收的所述多个类型使能信号,从所述第一异或结果和所述第二异或结果中确定所述目标位宽类型的目标异或结果;
异或单元,与所述选择单元连接,用于根据目标操作指令对所述目标异或结果进行异或处理,生成所述两个目标数据对应所述目标位宽类型的多项式乘加的目标结果。
6.根据权利要求5所述的多项式乘加处理电路,其特征在于,所述多项式乘加处理电路还包括:
译码模块,用于对接收的类型选择信号进行译码,生成所述多个类型使能信号;其中,
所述选择单元与所述译码模块连接,所述选择单元用于在目标使能信号有效的情况下,从多个异或结果中确定所述目标位宽类型的目标异或结果;其中,所述目标使能信号为所述多个类型使能信号中的一个,所述多个异或结果至少包括所述第一异或结果和所述第二异或结果。
7.根据权利要求6所述的多项式乘加处理电路,其特征在于,所述多项式乘加处理电路还包括第一同步模块,分别与所述译码模块、所述第一处理单元、所述第二处理单元、所述选择单元连接,用于将所述多个类型使能信号、所述第一异或结果和所述第二异或结果进行同步处理后输出至所述选择单元。
8.根据权利要求1所述的多项式乘加处理电路,其特征在于,所述获取模块包括第一获取单元和第二获取单元,其中,
所述第一获取单元用于对接收的第一初始数据,生成目标位宽的第一子数据和第二子数据,并根据接收的第一数据使能信号和所述第一子数据生成第一候选数据,以及根据接收的第二数据使能信号和所述第二子数据生成第二候选数据,所述第一子数据和所述第二子数据的数位不同;
所述第二获取单元用于对接收的第二初始数据,生成目标位宽的第三子数据和第四子数据,并根据接收的第三数据使能信号和所述第三子数据生成第三候选数据,以及根据接收的第四数据使能信号和所述第四子数据生成第四候选数据,所述第三子数据和所述第四子数据的数位不同;其中,
所述获取模块用于将数位相同的所述第一候选数据和所述第三候选数据确定为所述两个目标数据,以及将所述第二候选数据和所述第四候选数据确定为所述两个目标数据。
9.根据权利要求8所述的多项式乘加处理电路,其特征在于,所述多项式乘加处理电路还包括第二同步模块,分别与所述获取模块、所述按位与单元连接,用于对所述获取模块输出的目标数据进行同步处理并输出至所述获取模块。
10.根据权利要求8所述的多项式乘加处理电路,其特征在于,所述多项式乘加处理电路还包括:
拼接模块,与所述生成模块连接,用于按照数位对第一目标结果和第二目标结果进行拼接,生成所述第一初始数据和所述第二初始数据对应所述目标位宽类型的多项式乘加的拼接结果;其中,所述第一目标结果为所述第一候选数据和所述第三候选数据对应所述目标位宽类型的多项式乘加的结果,所述第二目标结果为所述第二候选数据和所述第四候选数据对应所述目标位宽类型的多项式乘加的结果。
11.根据权利要求10所述的多项式乘加处理电路,其特征在于,所述多项式乘加处理电路还包括第三同步模块,与所述拼接模块连接,用于对所述拼接模块输出的拼接结果进行延迟处理并输出。
12.一种芯片,其特征在于,包括如权利要求1-11任一项所述的多项式乘加处理电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311762671.7A CN117687598A (zh) | 2023-12-19 | 2023-12-19 | 多项式乘加处理电路和芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311762671.7A CN117687598A (zh) | 2023-12-19 | 2023-12-19 | 多项式乘加处理电路和芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687598A true CN117687598A (zh) | 2024-03-12 |
Family
ID=90136902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311762671.7A Pending CN117687598A (zh) | 2023-12-19 | 2023-12-19 | 多项式乘加处理电路和芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687598A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732220A (zh) * | 2019-10-14 | 2021-04-30 | 安徽寒武纪信息科技有限公司 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
CN113031916A (zh) * | 2019-12-24 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、装置及芯片 |
CN114666038A (zh) * | 2022-05-12 | 2022-06-24 | 广州万协通信息技术有限公司 | 一种大位宽数据处理方法、装置、设备及存储介质 |
WO2023029464A1 (zh) * | 2021-08-31 | 2023-03-09 | 上海商汤智能科技有限公司 | 数据处理装置、方法、芯片、计算机设备及存储介质 |
CN116400883A (zh) * | 2023-03-09 | 2023-07-07 | 华南理工大学 | 一种可切换精度的浮点乘加器 |
CN116661734A (zh) * | 2023-07-26 | 2023-08-29 | 深存科技(无锡)有限公司 | 支持多输入多格式的低精度乘加运算器 |
-
2023
- 2023-12-19 CN CN202311762671.7A patent/CN117687598A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732220A (zh) * | 2019-10-14 | 2021-04-30 | 安徽寒武纪信息科技有限公司 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
CN113031916A (zh) * | 2019-12-24 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、装置及芯片 |
WO2023029464A1 (zh) * | 2021-08-31 | 2023-03-09 | 上海商汤智能科技有限公司 | 数据处理装置、方法、芯片、计算机设备及存储介质 |
CN114666038A (zh) * | 2022-05-12 | 2022-06-24 | 广州万协通信息技术有限公司 | 一种大位宽数据处理方法、装置、设备及存储介质 |
CN116400883A (zh) * | 2023-03-09 | 2023-07-07 | 华南理工大学 | 一种可切换精度的浮点乘加器 |
CN116661734A (zh) * | 2023-07-26 | 2023-08-29 | 深存科技(无锡)有限公司 | 支持多输入多格式的低精度乘加运算器 |
Non-Patent Citations (3)
Title |
---|
HYUNWOO KIM 等: "Efficient Hardware Acceleration of Chinese Remainder Theorem for Fully Homomorphic Encryption", 2023 INTERNATIONAL CONFERENCE ON ELECTRONICS, INFORMATION, AND COMMUNICATION (ICEIC), 10 March 2023 (2023-03-10) * |
刘洋徐瑞: "高性能DSP中SIMD关键计算部件的研究", 中国优秀硕士学位论文全文数据库 信息科技辑, 15 January 2015 (2015-01-15) * |
王楠 等: "一种支持高效加法的FPGA嵌入式DSP IP设计", 太赫兹科学与电子信息学报, no. 05, 25 October 2017 (2017-10-25) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8468439B2 (en) | Speed-optimized computation of cyclic redundancy check codes | |
EP3291479B1 (en) | Hardware masked substitution box for the data encryption standard | |
JP4764973B2 (ja) | Crc値の算出装置 | |
US8270558B2 (en) | Electronic device, barrel shifter unit and method of barrel shifting | |
US8462028B2 (en) | Parallel to serial conversion apparatus and method of converting parallel data having different widths | |
JPH0697838A (ja) | 復号化装置 | |
JP2009528559A (ja) | Sms4暗号アルゴリズムを実現する暗号化および復号化処理方法とそのシステム | |
CN111563281B (zh) | 一种支持多种加解密算法的处理器及其实现方法 | |
WO2004036413A3 (en) | Efficient arithmetic in finite fields of odd characteristic on binary hardware | |
US8856197B2 (en) | System and method for processing data using a matrix of processing units | |
US20080195915A1 (en) | Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs | |
Wang | Hamiltonian embedding in crossed cubes with failed links | |
US20140237013A1 (en) | Pseudo-random bit sequence generator | |
CN117687598A (zh) | 多项式乘加处理电路和芯片 | |
US7627764B2 (en) | Apparatus and method for performing MD5 digesting | |
JP2007174312A (ja) | 符号化回路およびデジタル信号処理回路 | |
US10171108B1 (en) | Parallel CRC calculation for multiple packets without requiring a shifter | |
US10009041B2 (en) | BCH decorder in which folded multiplier is equipped | |
KR20150078866A (ko) | 데이터 처리 장치 및 데이터 처리 방법 | |
CN114063972A (zh) | 乘法器装置 | |
Pérez-Celis et al. | An fpga architecture to accelerate the burrows wheeler transform by using a linear sorter | |
KR100954843B1 (ko) | 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체 | |
CN217034730U (zh) | 多位选择器及运算电路及芯片 | |
US7353371B2 (en) | Circuit to extract nonadjacent bits from data packets | |
US20160132332A1 (en) | Signal processing device and method of performing a bit-expand operation |
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 |