一种定浮点运算装置
技术领域
本发明涉及计算机浮点运算领域,具体涉及一种定浮点运算装置。
背景技术
随着计算密集型需求日益广泛,计算复杂度急剧增加,微处理器中的SIMD(单指令多数据流)向量计算也广泛应用,提高了微处理器数据处理的实时性。
在实现自主安全可控的处理器国产化过程中,因国外技术垄断和禁售问题,高性能浮点运算单元需要自主研发和验证。但是现有技术中自主研发的浮点运算单元功能单一,无法实现在一个定浮点运算装置中实现多种浮点运算。
发明内容
因此,本发明要解决的技术问题在于克服现有技术中的浮点运算装置功能单一的缺陷,从而提供一种定浮点运算装置。
本发明第一方面提供了一种定浮点运算装置,该装置包括:数据接收端口,用于接收逻辑控制信号组和操作数;运算模块,用于根据所述逻辑控制信号组对所述操作数进行运算,生成运算结果;锁存器,用于管理对共享资源的并发访问;第一多路选择器,用于选择输出所述运算结果。
在可选实施例中,所述运算模块包括基本运算模块、前导零统计模块、移位模块、1的个数统计模块、浮点软件测试模块、加密模块和逻辑操作模块中的至少一个。
在可选实施例中,数据接收端口还用于接收取反信号和进位信号;基本运算模块包括:截位控制模块子模块,用于根据所述逻辑控制信号组和进位信号输出截位数据;第一并行前缀加法器,用于根据逻辑控制信号组、取反信号和截位数据对所述操作数做加法运算,并输出中间结果和进位位;进位传递子模块,用于根据截位数据、中间结果和进位位进行进位传递;比较模块子模块,用于根据进位传递子模块输出的结果和所述逻辑控制信号组对操作数进行比较,并输出比较结果及所述操作数中的最大值和最小值;平均值子模块,用于根据所述进位传递子模块输出的结果和逻辑控制信号组计算并输出所述操作数的平均值;加减运算子模块,用于根据所述进位传递子模块输出的结果和逻辑控制信号组选择计算并输出相加结果或相减结果;第二多路选择器,用于将比较子模块、平均值子模块和所述加减运算子模块得出的结果进行选择输出,并输出加减法饱和标记。
在可选实施例中,该装置中的前导零统计模块包括:字节前导零统计子模块,用于计算所述操作数的一个字节中第一个1出现的位置;半字前导零统计子模块,用于根据两个所述字节前导零统计子模块的计算结果计算并输出全为0的字节数和第一个1出现的位置;字前导零统计子模块,用于根据两个所述半字前导零统计子模块的计算结果计算并输出全为0的字节数和第一个1出现的位置;双子前导零统计子模块,用于根据两个所述字前导零统计子模块的计算结果计算并输出全为0的字节数和第一个1出现的位置。
在可选实施例中,该装置中的移位模块包括:移位操作子模块,用于根据移位模式选择信号及第一操作数对第二操作数进行循环移位操作,所述第一操作数用于表征所述第二操作数的移位长度;移位结果处理子模块,用于根据移位类型选择信号、所述第一操作数、所述第二操作数和所述移位操作子模块的移位结果进行保留有效位和删除无效位的操作,并输出结果;所述移位模式选择信号和所述移位类型选择信号为所述逻辑控制信号组中所包含的信号。
在可选实施例中,该装置中的1的个数统计模块包括:第一选择器,用于根据控制信号和所述操作数进行触发,所述控制信号为所述逻辑控制信号组中所包含的信号;第一行波进位加法器,用于根据第一选择器输出的数据计算并输出双字中1的个数;第二选择器,用于根据所述控制信号和所述操作数进行触发;8位值累加子模块,用于将所述第二选择器输出的数据的每8位输入值的每一位进行累加,分别计算并输出一个4位的结果;4位值累加模块,用于将每4个所述8位值累加模块输出的所述4位的结果进行累加,计算并输出两个4位的结果;第二行波加法器,用于根据2个所述8位值累加模块或所述4位值累加模块输出的累加结果,计算并输出半字中1的个数;第三行波加法器,用于根据所述4位值累加模块输出的累加结果,计算并输出字中1的个数;第三多路选择器,用于根据所述移位模式选择信号对所述第一行波进位加法器、所述第二行波加法器和所述第三行波加法器的计算结果做选择输出。
在可选实施例中,该装置中的浮点软件测试模块包括:数据规格化检测子模块,用于检测64位单精度浮点数是否为规格化数据;第一状态位计算子模块,用于根据所述操作数的与/或逻辑,计算并输出不同的第一状态位;第二并行前缀加法器,用于对所述操作数进行减法运算并输出计算结果;第二状态位计算子模块,用于根据第一状态位计算子模块输出的第一状态位和第二并行前缀加法器输出的计算结果,计算并输出不同的第二状态位;第四多路选择器,用于根据精度测试信号、精度选择信号和类型选择信号对所述第二状态位进行选择输出;所述精度测试信号、精度选择信号和类型选择信号为所述逻辑控制信号组中所包含的信号。
在可选实施例中,该装置中的加密模块用于根据字移位控制信号、双字移位控制信号和移位数控制信号对所述操作数进行加密运算,并输出加密结果;上述字移位控制信号、双字移位控制信号和移位数控制信号为所述逻辑控制信号组中所包含的信号。
在可选实施例中,该装置中的逻辑操作模块结构包括:多个与运算模块,用于对两个所述操作数的原始值或取反值进行与运算,并输出运算结果;多个第三选择器,通过逻辑功能选择信号对所述第三选择器进行触发,被触发的第三选择器输出与其相连的所述与运算模块的运算结果,未被触发的第三选择器输出0;或运算模块,用于对所述多个第三选择器输出的结果进行或运算,运算结果通过所述锁存器输出;所述逻辑功能选择信号为所述逻辑控制信号组中所包含的信号。
本发明技术方案,具有如下优点:
1.本发明提供的定浮点运算装置,集成了多个不同功能的运算模块,根据接收到的逻辑控制信号组可以实现对操作数的不同运算,且通过第一多路选择器选择性的输出所需运算结果,将本发明提供的定浮点运算装置内嵌在处理器中,实现了处理器功能的完整性。
2.本发明提供的定浮点运算装置,可以实现既支持64位标量浮点操作,又支持4组32位或2组64位向量浮点操作、多组8/16/32/64位向量定点操作,以及SHA加密操作。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中定浮点运算装置的一个具体示例的结构框图;
图2为本发明实施例中定浮点运算装置的一个具体示例的原理框图;
图3为本发明实施例中定浮点运算装置的一个具体示例的原理框图;
图4为本发明实施例中定浮点运算装置的一个具体示例的原理框图;
图5为本发明实施例中定浮点运算装置的一个具体示例的原理框图;
图6为本发明实施例中定浮点运算装置的一个具体示例的原理框图。
图7为本发明实施例中定浮点运算装置的一个具体示例的原理框图;
图8为本发明实施例中定浮点运算装置的一个具体示例的原理框图;
图9为本发明实施例中定浮点运算装置的一个具体示例的原理框图;
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
实施例1
本发明实施例提供一种定浮点运算装置,如图1和图2所示,该定浮点运算装置包括:数据接收端口1,用于接收逻辑控制信号组(ctrl)和操作数,根据不同的运算需求,上述逻辑控制信号组实际发出的控制信号也不同,且根据不同的运算需求,数据接收端口1接收的操作数的数量可以为1个,也可以为多个,可以为标量浮点数,也可以为向量浮点数,也可以为向量定点数等;运算模块2,用于根据逻辑控制信号组对操作数进行运算,生成运算结果,上述运算模块2可包括基本运算模块21、前导零统计模块22、移位模块23、1的个数统计模块24、浮点软件测试模块25、加密模块26和逻辑操作模块27中的至少一个;锁存器3,用于管理对共享资源的并发访问,如基本运算模块21、1的个数统计模块24和浮点软件测试模块25,在一个时钟周期内的逻辑资源无法满足一次完整的运算逻辑,所以需要通过锁存器3(Latch)拆分,使运算为在两个时钟周期内完成;第一多路选择器4,用于选择输出运算结果。
本发明提供的定浮点运算装置,集成了多个不同功能的运算模块2,根据接收到的逻辑控制信号组可以实现对操作数的不同运算,且通过第一多路选择器4选择性的输出所需运算结果,将本发明提供的定浮点运算装置内嵌在处理器中,实现了处理器功能的完整性。
在一实施例中,该定浮点运算装置中的数据接收端口1还可以接收取反信号(inv)和进位信号(ca_in)等。如图3所示,该定浮点运算装置中基本运算模块21包括:截位控制子模块211,用于根据逻辑控制信号组和进位信号输出截位数据。
多个第一并行前缀加法器212,用于根据逻辑控制信号组、取反信号和截位数据对操作数(opa、opb)做加法运算,并输出中间结果和进位位,多个第一并行前缀加法器212输出的结果位数和为128,例如可以如图3所示设置4个可以输出32位中间结果和进位位的第一并行前缀加法器212,也可设置8个可以输出16位中间结果和进位位的第一并行前缀加法器212,本实施例对此不作具体限定。
进位传递子模块213用于根据截位数据、多个中间结果和进位位进行进位传递。由于第一并行前缀加法器212的运算在一个周期内无法完成,所以在经过Latch后对第一并行前缀加法器212进行了第二级运算,输出了128位运算结果。
比较子模块214,用于根据进位传递子模块213输出的结果和逻辑控制信号组对操作数进行比较,并输出比较结果及操作数中的最大值和最小值。
平均值子模块215,用于根据进位传递子模块213输出的结果和逻辑控制信号组计算并输出操作数的平均值。
加减运算子模块216,用于根据进位传递子模块213输出的结果和逻辑控制信号组选择计算并输出相加结果或相减结果。
第二多路选择器217,用于将比较子模块214、平均值子模块215和加减运算子模块216得出的结果进行选择输出,即根据逻辑控制信号组控制操作数经过比较子模块214或平均值子模块215或加减运算子模块216中的一个子模块,并进行运算,运算结果通过第二多路选择器217进行选择输出,并输出加减法饱和标记。
实际应用中,通过该基本运算模块21可以进行向量字节/半字/字/双字整数饱和/进位加运算、向量字节/半字/字/双字整数饱和/进位减运算、向量字节/半字/字/双字整数比较、标量双精度浮点比较、向量单精度/双精度浮点比较、向量整数最大值/最小值、向量单精度浮点最大值/最小值和向量字节/半字/字整数平均值的操作。
在一实施例中,如图4所示,该定浮点运算装置的前导零统计模块22包括:字节前导零统计子模块221,每个字节通过字节前导零统计子模块221进行运算,计算字节第一个1出现的位置并输出。半字前导零统计子模块222,每两个相邻的字节前导零统计子模块221连接一个半字前导零统计子模块222,半字前导零统计子模块222根据字节前导零统计子模块221的运算结果计算全为0的字节数和半字第一个1的位置并输出。字前导零统计子模块223,每两个相邻的半字前导零统计子模块222连接一个字前导零统计子模块223,字前导零统计子模块223根据半字前导零统计子模块222的运算结果计算全为0的字节数和字第一个1的位置并输出。双字前导零统计子模块224,两个字前导零统计子模块连接一个双字前导零统计子模块224,双字前导零统计子模块224根据字前导零统计子模块的运算结果计算全为0的字节数和字第一个1的位置并输出。该前导零统计模块22主要实现字节、半字、字和双字的前导零统计操作,即从第0位开始统计数据中连续0的数量,在首个出现1的位置停止统计。
实际应用中,通过该前导零统计模块22主要实现对字节、半字、字和双字对应的向量整数前导零计算。
在一实施例中,如图5所示,该定浮点运算装置的移位模块23包括移位操作子模块231和移位结果处理子模块232,移位操作子模块231,用于根据移位模式选择信号(width_sel)及第一操作数(opa)对第二操作数(opb)进行循环移位操作,移位模式包括字节移位、半字移位、字移位和双字移位,第一操作数用于表征第二操作数的移位长度,以移位模式为字节移位,第一操作数为1为例,表示将操作数以字节为单位进行移动,移动1个字节的长度;移位结果处理子模块232,用于根据移位类型选择信号(shift_sel)、第一操作数、第二操作数和移位操作子模块231的移位结果进行保留有效位和删除无效位的操作,并输出结果移位类型选择,移位类型包括循环左移、逻辑左移、逻辑右移、算术右移;上述移位模式选择信号和移位类型选择信号均为逻辑控制信号组中所包含的信号。该移位模块23主要实现字节、半字、字和双字对应的移位操作
在一实施例中,如图6所示,该定浮点运算装置的1的个数统计模块24包括:第一选择器241和第二选择器243,用于根据控制信号(crack_iop2)和操作数进行触发并输出数据,控制信号和操作数只能触发其中一个选择器,并通过与被触发的选择器相连的模块进行计算,控制信号为逻辑控制信号组中所包含的信号。
其中,与第一选择器241相连的模块主要包括:
第一行波进位加法器242,与第一选择器241相连,当第一选择器241被触发后,第一行波进位加法器242根据第一选择器241输出的数据计算并输出双字中1的个数。
与第二选择器243相连的模块主要包括:
8位值累加子模块244,用于将第二选择器243输出的数据的每8位输入值的每一位进行累加,分别计算并输出一个4位的结果,得到字节中1的个数;4位值累加子模块245,每4个由8位值累加子模块244输出的4位的结果通过4位值累加子模块245进行累加,计算并输出两个4位的结果;第二行波进位加法器246,将2个8位值累加子模块244输出的累加结果进行运算并输出半字中1的个数;第三行波进位加法器247,将4位值累加子模块245输出的累加结果进行运算并输出字中1的个数;第三多路选择器248,用于根据移位模式选择信号对第一行波进位加法器242、第二行波进位加法器246和第三行波进位加法器247的计算结果做选择输出。
在一实施例中,如图7所示,该定浮点运算装置的浮点软件测试模块25包括:
数据规格化检测子模块251,用于根据操作数的dirty位检测操作数是否为规格化数据,如果操作数为非规格化数则deno_flush信号设置为1,否则设置为0。
第一状态位计算子模块252,用于根据操作数的与/或逻辑,计算并输出不同的第一状态位,上述不同的第一状态位主要包括6种:状态寄存器(CR)、BF(CR中的一个3位的字段)、浮点状态码(FPCC)、浮点异常(FX)、浮点无效比较异常(VXVC)和浮点无效非数操作异常(VXSNAN)。
第二并行前缀加法器255,用于对操作数进行减法运算并输出计算结果,即通过对某一操作数进行取反逻辑,从而得到减法结果。
第二状态位计算子模块253,在经过Latch后,根据第一状态位计算子模块252输出的第一状态位和第二并行前缀加法器255输出的计算结果,进行第二级运算并输出不同的第二状态位,上述不同的第二状态位主要包括6种:CR、BF、FPCC、FX、VXVC和VXSNAN。
第四多路选择器254,用于根据精度测试信号(test_sel)、精度选择信号(precision_sel)和类型选择信号(type_sel(0:1))对第二状态位进行选择输出。
上述的精度测试信号、精度选择信号和类型选择信号为逻辑控制信号组中所包含的信号。
实际应用中,该浮点软件测试模块25主要实现字节、半字、字和双字对应的1的个数统计操作。
在一实施例中,如图8所示,该定浮点运算装置的加密模块26根据字移位控制信号(width_sel_2)、双字移位控制信号(width_sel_3)和移位数控制信号(sh)对操作数进行加密运算,并输出加密结果,该移位数控制信号与上述移位模块23中的第一操作数不同,该加密模块26中的移位数控制信号为立即数;字移位控制信号、双字移位控制信号和移位数控制信号为逻辑控制信号组中所包含的信号。该加密模块26主要实现向量SHA-256/512加密操作。
在一实施例中,如图9所示,该定浮点运算装置的逻辑操作模块27包括:
多个与运算模块271,用于对两个操作数的原始值或取反值进行与运算,并输出运算结果;多个第三选择器272,通过逻辑功能选择信号(logic_func(0-3))对第三选择器272进行触发,被触发的第三选择器272输出与其相连的与运算模块271的运算结果,未被触发的第三选择器272输出0,其中逻辑功能选择信号中只有一个为1,其余三个都为0,当逻辑功能选择信号值为1时,触发第三选择器272;或运算模块273,用于对多个第三选择器272输出的结果进行或运算,运算结果通过锁存器3输出;逻辑功能选择信号为逻辑控制信号组中所包含的信号。实际应用中,该逻辑操作模块27主要实现向量整数逻辑操作对应的逻辑操作。
本发明实施例提供的定浮点运算装置,所有运算模块都预留了128位的运算空间,所以该定浮点运算装置既支持64位标量浮点操作,又支持4组32位或2组64位向量浮点操作、多组8/16/32/64位向量定点操作。
在一实施例中,每次计算后会产生状态数据并且将这些状态数据更新到向量状态寄存器。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。