数据转换方法、装置、设备及存储介质与流程

文档序号:18142483发布日期:2019-07-10 11:13阅读:406来源:国知局
数据转换方法、装置、设备及存储介质与流程

本申请涉及计算机技术领域,具体涉及一种数据转换方法、装置、设备及存储介质。



背景技术:

在自动化验证平台中,测试用例生成器通常会将大量的测试用例同时输入到非周期精确的功能参考模型和基于周期精确的实际寄存器传输级(registertransferlevel,rtl)电路装置中,由功能参考模型生成理论参考值,由实际rtl电路装置生成实际计算值,然后将理论参考值和实际计算值按照周期精确的时序关系进行自动比较,从而根据比较结果进行错误功能定位,根据错误功能定位的结果对rtl电路进行修改和完善。

定浮点数的数据转换包括向量模式和标量模式下的多种32/64位的浮点数和定点数的转换操作,在设计定浮点数的数据转换的自动化验证平台时,测试用例生成的每个测试用例中包含了随机/定向约束的源操作数、随机功能操作码和浮点控制寄存器配置信息等组合参数,由于测试用例数量较多,数据转换操作功能较为复杂,因此针对定浮点数的数据转换的功能参考模型难以实现。

基于上述原因,相关技术中是通过人工方式计算得到测试用例的理论参考值,再根据该理论参考值对对rtl电路进行修改和完善。



技术实现要素:

本申请实施例提供了一种数据转换方法、装置、设备及存储介质,可以解决相关技术中采用人工方式计算得到测试用例的理论参考值速度较慢的问题。

一方面,本申请实施例提供了一种数据转换方法,包括:

获取目标数据的操作码,所述操作码用于指示数据的转换功能类型,所述目标数据包括待转换的浮点数,和/或,待转换的定点数;

根据所述目标数据的操作码,在至少两个功能函数中确定所述目标数据的操作码对应的目标功能函数,所述功能函数包括对所述目标数据执行数据转换操作的指令集合;

通过所述目标功能函数对所述目标数据执行目标数据转换操作,得到所述目标数据的目标转换结果;

当需要更新虚拟寄存器组中的结果寄存器时,更新所述结果寄存器,得到更新所述结果寄存器后所述虚拟寄存器组的第一状态信息,将所述第一状态信息确定为当前状态信息;或者,当不需要更新所述结果寄存器时,更新所述虚拟寄存器组中的控制寄存器,得到更新所述控制寄存器后的所述虚拟寄存器组的第二状态信息,将所述第二状态信息确定为当前状态信息。

在一个可选的实施例中,所述通过所述目标功能函数对所述目标数据执行目标数据转换操作,得到所述目标数据的目标转换结果,包括:

将所述目标数据转换为中间数据,所述中间数据是位数大于64位的数据;

通过所述目标功能函数对所述中间数据执行所述数据转换操作,得到所述目标转换结果。

在一个可选的实施例中,所述虚拟寄存器组还包括浮点状态/控制寄存器,所述目标功能函数包括第一功能函数,所述目标数据包括第一64位双精度浮点数;

所述将所述目标数据转换为中间数据,包括:

将所述第一64位双精度浮点数转换为第一中间数据;

所述通过所述目标功能函数对所述中间数据执行所述数据转换操作,得到所述目标转换结果,包括:

当所述第一中间数据是非数时,通过所述第一功能函数将所述第一中间数据转换为双精度格式的单精度浮点数,得到第一非数异常标志信息,根据所述第一非数异常标志信息,通过所述浮点状态/控制寄存器对所述第一中间数据进行异常处理,得到第一非数异常数据,将所述双精度格式的单精度浮点数和所述第一非数异常数据确定为所述目标转换结果;或者

当所述第一中间数据不是非数时,通过所述第一功能函数将所述第一中间数据转换为所述双精度格式的单精度浮点数,将所述双精度格式的单精度浮点数确定为所述目标转换结果。

在一个可选的实施例中,所述虚拟寄存器组还包括浮点状态/控制寄存器,所述目标功能函数包括第二功能函数,所述目标数据包括第二64位双精度浮点数;

所述将所述目标数据转换为中间数据,包括:

通过所述第二功能函数将所述第二64位双精度浮点数转换为第二中间数据;

所述通过所述目标功能函数对所述中间数据执行所述数据转换操作,得到所述目标转换结果,包括:

当所述第二中间数据是非数时,通过所述第二功能函数将所述第二中间数据转换为第三64位双精度浮点数,得到第二非数异常标志信息,根据所述第二非数异常标志信息,调用所述浮点状态/控制寄存器对所述第二中间数据进行异常处理,得到第二非数异常数据,将所述第三64位双精度浮点数转换为第三中间数据,通过所述第二功能函数将所述第三中间数据转换为32位单精度浮点数,将所述32位单精度浮点数和所述第二非数异常数据确定为所述目标转换结果;或者,

当所述第二中间数据不是非数时,通过所述第二功能函数将所述第二中间数据转换为所述第三64位双精度浮点数,通过所述第二功能函数将所述第三64位双精度浮点数转换为第三中间数据,通过所述第二功能函数将所述第三中间数据转换为32位单精度浮点数,将所述32位单精度浮点数确定为所述目标转换结果。

在一个可选的实施例中,所述虚拟寄存器组还包括浮点状态/控制寄存器,所述目标功能函数包括第三功能函数,所述目标数据包括第三64位双精度浮点数;

所述将所述目标数据转换为中间数据,包括:

通过将所述第三64位双精度浮点数转换为第四中间数据;

所述通过所述目标功能函数对所述中间数据执行所述数据转换操作,得到所述目标转换结果,包括:

当所述第四中间数据包括特殊数时,通过所述第三功能函数将所述第四中间数据转换为有符号双字整数,得到特殊数异常标志信息,根据所述特殊数异常标志信息,通过所述浮点状态/控制寄存器对所述特殊数进行异常处理,得到特殊数数据,将所述有符号双字整数和所述特殊数数据确定为所述目标转换结果;或者,

当所述第四中间数据不包括所述特殊数时,通过所述第三功能函数将所述第四中间数据转换为有符号双字整数,将所述有符号双字整数确定为所述目标转换结果。

在一个可选的实施例中,所述虚拟寄存器组还包括浮点状态/控制寄存器,所述目标功能函数包括第四功能函数,所述目标数据包括32位单精度浮点数;

所述将所述目标数据转换为中间数据,包括:

通过将所述32位单精度浮点数转换为第五中间数据;

所述通过所述目标功能函数对所述中间数据执行所述数据转换操作,得到所述目标转换结果,包括:

当所述第五中间数据是非数时,通过所述第四功能函数置位所述浮点状态/控制寄存器,得到第三非数异常标志信息,调用所述浮点状态/控制寄存器对所述第五中间数据赋予特殊值得到第三非数异常数据,根据所述第三非数异常标志信息,通过所述第四功能函数将所述第五中间数据转换为32位无符号整数,将所述32位无符号整数和所述第三非数异常数据确定为所述目标转换结果;或者,

当所述第五中间数据不包括非数时,通过所述第四功能函数将所述第五中间数据转换为所述32位无符号整数,将所述32位无符号整数确定为所述目标转换结果。

一方面,本申请实施例提供了一种数据转换装置,包括:

查询模块,用于获取目标数据的操作码,所述操作码用于指示数据的转换功能类型,所述目标数据包括待转换的浮点数,和/或,待转换的定点数;根据所述目标数据的操作码,在至少两个功能函数中确定所述目标数据的操作码对应的目标功能函数,所述功能函数包括对所述目标数据执行数据转换操作的指令集合;

功能模块,用于通过所述目标功能函数对所述目标数据执行目标数据转换操作,得到所述目标数据的目标转换结果;当需要更新虚拟寄存器组中的结果寄存器时,更新所述结果寄存器,得到更新所述结果寄存器后所述虚拟寄存器组的第一状态信息,将所述第一状态信息确定为当前状态信息;或者,当不需要更新所述结果寄存器时,更新所述虚拟寄存器组中的控制寄存器,得到更新所述控制寄存器后的所述虚拟寄存器组的第二状态信息,将所述第二状态信息确定为当前状态信息。

在一个可选的实施例中,所述功能模块,还用于将所述目标数据转换为中间数据,所述中间数据是位数大于64位的数据;通过所述目标功能函数对所述中间数据执行所述数据转换操作,得到所述目标转换结果;

其中,所述中间数据是位数大于64位的数据。

一方面,本申请实施例提供了一种计算机设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的数据转换方法。

一方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上所述的数据转换方法。

本申请实施例提供的技术方案,至少包括如下有益效果:

通过获取目标数据的操作码,根据目标数据的操作码,在至少两个功能函数中确定目标数据的操作码对应的目标功能函数,通过目标功能函数对目标数据执行数据转换操作,得到目标数据的目标转换结果,通过判定是否需要更新结果寄存器得到虚拟寄存器组的当前状态信息,由于能够输出目标转换结果和当前状态信息,从而实现了对定浮点数据的功能参考模型的构建,提高了对定浮点数据的转换装置进行验证的验证速度。

附图说明

为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一个示例性实施例提供的数据转换方法的流程图;

图2为本申请一个示例性实施例提供的功能参考模型的架构示意图;

图3为本申请一个示例性实施例提供的双精度浮点数转换为双精度格式的单精度浮点数的数据转换方法的流程图;

图4为本申请一个示例性实施例提供的双精度浮点数转换为单精度浮点数的数据转换方法的流程图;

图5为本申请一个示例性实施例提供的双精度浮点数转换为有符号双字整数的数据转换方法的流程图;

图6为本申请一个示例性实施例提供的单精度浮点数转换为32位无符号整数的数据转换方法的流程图;

图7为本申请一个示例性实施例提供的数据转换装置的结构框图;

图8为本申请一个示例性实施例提供的计算机设备的结构框图。

具体实施方式

下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。

此外,下面所描述的本申请不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

图1,示出了本申请一个示例性实施例提供的数据转换方法的方法流程图。该方法可由计算机设备执行,该方法包括:

步骤101,获取目标数据的操作码。

其中,操作码用于指示数据的转换功能类型。目标数据包括待转换的浮点数,和/或,待转换的定点数。

可选的,待转换的浮点数包括符合电气和电子工程师协会(instituteofelectricalandelectronicsengineers,ieee)754标准格式的32位单精度浮点数、64位双精度浮点数以及双精度格式的单精度浮点数;待转换的定点数包括符合ieee754标准格式的有无符号数、带符号数以及定点整数。

示例性的,计算机设备中包括测试用例生成器,当计算机设备运行测试用例生成器时,生成至少两组数据集,每组数据集包括至少一组待转换的32位数据或待转换的64位数据;可选的,每组数据集包括128位数据,该128位数据包括四组待转换的32位数据,或两组待转换的64位数据。需要说明的是,上述待转换的数据包括浮点数或定点数,上述待转换的数据中包括操作码。

计算机设备中安装有功能参考模型,当计算机设备运行功能参考模型时,通过功能参考模型获取任一数据集中的任一待转换的数据作为目标数据,获取目标数据的操作码。例如,目标数据为64位双精度浮点数a1,其操作码为x1。

步骤102,根据目标数据的操作码,在至少两个功能函数中确定目标功能类型对应的目标功能函数。

其中,功能函数包括对目标数据执行数据转换操作的指令集合。可选的,计算机设备根据目标数据的操作码,在操作码和功能函数的对应关系中查询得到目标数据的操作码对应的功能函数,将该功能函数确定为目标功能函数。

示例性的,功能参考模型中包括至少两个功能函数,每个功能函数对应一种功能类型,计算机设备通过功能参考模型,根据目标功能类型,在至少两个功能函数中确定目标操作码对应的目标功能函数。例如,目标操作码为x1,则计算机设备通过功能参考模型,在至少两个功能函数中确定与x1对应的功能函数,将与x1对应的功能函数确定为目标功能函数。

示例性的,通过功能参考模型中包括71种功能函数,该71种功能函数分别对应表一中的71种功能类型的转换功能。

表一

需要说明的是,表一中的sp32表示符合ieee754标准格式的32位单精度浮点数,dp表示符合ieee754标准格式的64位双精度浮点数,sp64表示符合ieee754标准格式的双精度格式的单精度浮点数。rn、rz、ru、rd分别表示就近舍入、向零舍入、向正无穷大舍入、向负无穷大舍入;括号中的标量表示一组32/64位数据转换,括号中的向量表示四组32位数据,或两组32/64位数据并行转换;uim是介于[0,5]之间的整数;表一转换功能说明栏末尾括号中标注的数字为操作码。

可选的,通过功能参考模型包括操作码和功能函数的索引,计算机设备根据目标数据的操作码,在索引中查询得到操作码对应的功能函数,从而确定目标功能函数。例如,目标数据a1的操作码为299,操作码299对应的是功能函数frsp,则目标数据a1对应的目标功能函数为frsp。

步骤103,通过目标功能函数对目标数据执行数据转换操作,得到目标数据的目标转换结果。

示例性的,目标数据a1对应的目标功能函数为frsp,计算机设备通过调用函数frsp对目标数据a1执行转换操作,得到目标数据a1的目标转换结果b1。

可选的,计算机设备通过目标功能函数将目标数据转换为中间数据包括但不限于:将目标数据转换为中间数据;通过目标功能函数中间数据执行数据转换操作,得到目标转换结果。其中,中间数据是位数大于64位的数据。

示例性的,以中间数据为160位数据,目标功能函数为frsp函数为例进行说明:

计算机设备在运行功能参考模型时,通过调用功能文件调用转换文件将目标数据转换为160位数据。例如,目标数据a1是64位双精度浮点数,计算机设备通过转换文件将目标数据a1由64位双精度浮点数转换为160位浮点数a2;通过frsp函数,对160位浮点数a2执行目标转换操作,将160位浮点数a2转换为64位双精度浮点数a3,将64位双精度浮点数a3作为目标转换结果。

步骤104,判断是否需要更新结果寄存器。

功能参考模型中包括虚拟寄存器组,虚拟寄存器组包括结果寄存器和控制寄存器。计算机设备根据目标转换结果判断是否需要更新结果寄存器,当需要更新结果寄存器时,进入步骤105a;当不需要更新结果寄存器时,进入步骤105b。

步骤105a,更新结果寄存器,得到第一状态信息,将第一状态信息确定为所述当前状态信息。

当需要更新结果寄存器时,计算机设备更新结果寄存器,输出更新结果寄存器后的虚拟寄存器组的第一状态信息,将第一状态信息确定为当前状态信息。

步骤106b,更新控制寄存器,得到第二状态信息,将第二状态信息确定为当前状态信息。

当不需要更新结果寄存器时,计算机设备更新控制寄存器,输出更新控制寄存器后的虚拟寄存器组的第二状态信息,将第一状态信息确定为当前状态信息。

综上所述,本申请实施例中,通过获取目标数据的操作码,根据目标数据的操作码,在至少两个功能函数中确定目标数据的操作码对应的目标功能函数,通过目标功能函数对目标数据执行数据转换操作,得到目标数据的目标转换结果,通过判定是否需要更新结果寄存器得到虚拟寄存器组的当前状态信息,由于能够输出目标转换结果和当前状态信息,从而实现了对定浮点数据的功能参考模型的构建,提高了对定浮点数据的转换装置进行验证的验证速度。

可选的,本申请实施例中,当目标数据为32位数据时,通过将目标数据转换为中间数据,再通过目标功能函数将中间数据转换为目标转换结果,由于中间数据是位数高于64位的数据,提高了数据转换的精确度

在一个示例性的实施例中,本申请实施例中的功能参考模型在执行图1实施例中的方法时需要调用多个端口,本申请实施例涉及的端口下所示:

(1)输入端口:功能参考模型在需要输入数据时调用的端口,在输入数据时调用。当执行标量类操作时,通常将输入端口的左侧64位作为相应操作的输入数据;当执行向量类操作时,根据功能的不同,可执行四组32位数据或两组64位数据的运算。

(2)移位端口:用于配合输入端口进行移位操作,在输入数据时调用。在71类功能中,有四类操作功能使用移位端口:两类左移(单精度浮点数转换为32位定点数)操作功能,两类右移(32位定点数转换为单精度浮点数)操作功能。在功能参考模型涵盖的计算类型中,有四种操作需要5位的立即数常数,移位端口的低5位作为计算的立即数参与运算。

(3)操作码端口:为自定义操作码,在输入数据时调用。示例性的,如表一所示,功能参考模型涵盖的71类功能函数对应的操作码范围为:299-369。

(4)控制位端口:为操作码中的控制(rc)位,在输入数据时调用。同一计算功能对应的dot操作和非dot操作在同一个子功能函数中实现。控制位端口的值决定当前操作是否是dot操作,并决定是否更新控制(conditionregister,cr)寄存器。

(5)浮点状态/控制端口:其对应浮点状态/控制寄存器(fpscr),在输入/输出数据时调用,在定浮点计算单元(vectorandscalarunit,vsu)中的浮点状态/控制寄存器是64位(其中位32-位63有效),系统可对位32-位63相应的功能使能(enable)位进行配置,对各功能状态位或异常(exception)位进行自动更新。

(6)向量控制端口:其对应向量控制寄存器(vectorconditionregister,vscr),在输入/输出数据时调用。该寄存器只有两个功能位:可读写的第一功能位和可读的第二功能位。

(7)输出端口:为计算结果,在输出数据时调用。当执行浮点标量类操作时,仅左侧64位计算结果有效,右侧64位数据无效。

(8)控制寄存器端口:在输出数据时调用。当向量控制端口的参数rc_flag=1时,功能参考模型在输出计算结果的同时,还需要更新控制寄存器字段。

如图2所示,本申请实施例中的功能参考模型200包括主函数文件210、查询文件220、顶层文件230、功能文件240以及转换文件250。

顶层文件230,通过对目标数据的操作码译码,选择相应的功能函数作为目标功能函数,对目标数据进行转换并输出。顶层文件230的主要功能是整个程序的入口,通过操作码调用不同的功能函数,每个功能函数代表一个操作。

功能文件240,是和功能函数相关的文件,功能参考模型200中的71类操作对应该文件中71个功能函数,其包含所有功能函数对应的操作的语义级解释和功能函数描述。在顶层文件230中调用的所有功能函数都包含在功能文件240中。

功能文件240中除了71类与操作直接相关的语义函数,还包括公共函数。公共函数包括两类:

一类公共函数是关于标量向量操作中重复的功能函数,比如在xscvdpsp函数中只把输入端口中的高64位转换为单精度,而在xvcvdpsp函数中把输入端口中的高64位和低64位同时转换为单精度。在xvcvdpsp函数中对两个64位数据的操作和在xscvdpsp函数中对64位数据的操作是一样的,所以xvcvdpsp函数用一个for循环重复两次实现两个64位数据的转换,而在xscvdpsp函数中只循环一次。对一个64位数据转换为但进度的操作即为一个公共功能函数。

另一类公共函数是关于判断是否写会目标寄存器的判断函数,该函数用于在标量和向量操作中根据异常情况判断是否写会寄存器。

转换文件250,是功能参考模型中最核心的文件之一,其包含绝大多数跟160位浮点数相关的计算函数。由于功能参考模型中含有大量的数据类型和操作类型,所以在转换文件250中也包含有大量的子函数和公共函数,本发明中所用到的函数主要有三种类型:

第一种:数据向160位浮点数的转换函数:在操作执行之前需要把不同类型的数据转换为160位浮点数再进行计算,该转换操作都是在转换文件250文件中完成的,其包括双精度整型、单精度整型、双精度格式的单精度浮点数和32位单精度浮点数转换为160位浮点数。在这类函数里会对一些异常状态做判断,并写入到160位结构的数据中。

第二种:160位数据的自操作:160位浮点数有的需要对自身进行一些操作,比如说160位数据的初始化、规格化和非规格化。这些160位数据的自操作有一部分是在转换文件250文件中实现的。

第三种:跟异常相关的操作:在转换文件250中对160位数据中异常位的置位和清零函数是在转换文件250中声明的,但是一般情况下该文件中的异常相关函数只在本文件中被调用。

置位文件的主要的功能是操作运行过程中异常位的置位和一些和异常相关的控制。主要类型有以下四类:

有关异常的转化函数,在功能参考模型中用到的这类函数主要是两个,一个是160位转换为sp32的函数,另一个是160位转换为dp的函数。这两个函数中会对异常做判断和置位。有一些操作的执行会跟异常状态有关,该函数会根据转换文件250中转换函数标志出来的异常状态,改变操作执行机制和置位浮点状态/控制寄存器中相应的异常位。

浮点状态/控制寄存器的置位函数:在转换文件250的转换函数中会根据异常状态位来置位浮点状态/控制寄存器中的状态位,这些置位函数在置位文件中。

简单的数据类型转换函数:包括单精度和双精度之间的互转。

和尾数舍入有关的功能函数:这个功能函数的调用是在转换文件中,其功能是为了实现尾数舍入。

功能参考模型中包含有许多库文件,这些库文件除了一些数据类型声明还有大量的功能函数。转换文件250的子文件中有许多针对160位浮点数操作的一些功能函数,这写功能函数在各个模块中被调用。转换文件中的函数大体分为以下四类函数:

160位数据的判断函数:该类函数的功能主要是对一个160位数据进行数据特征的判断函数,包括数据类型、尾数和指数类型等。例如判断一个160位数据是否为零,是否为无穷大,判断一个数的尾数是否为全0,等等。

160位数据的初始化函数:该类函数的主要功能是对一个160位数据的数据赋初值,或者给指数或尾数赋特殊值。例如,给一个数赋0或无穷大,或者给一个数的尾数或者指数赋0。

160位数据的功能函数:该类函数主要是针对160位类数据的简单操作,例如取反和复制。

调试(debug)函数:故障排除函数一共有两个,都是用于调试数据输出的函数。

如上述表一所示,本申请实施例涉及71种功能函数,该71种功能函数的数据转换操作包括四种类型:第一类是双精度浮点数转换为双精度格式的单精度浮点数的数据转换操作;第二类是向量的双精度浮点数转换为单精度浮点数的数据转换操作;第三类是双精度浮点数转换为有符号双字整数的数据转换操作;第四类是单精度浮点数转换为32位无符号整数的数据转换操作。图3至图6实施例将对该四类数据转换操作进行说明。

图3,示出了本申请一个示例性实施例提供的双精度浮点数转换为双精度格式的单精度浮点数的数据转换方法的流程图。该方法可由计算机设备执行,该方法可以是图1实施例中的步骤103的一种可选的实施方式,该方法包括:

步骤301,将第一64位双精度浮点数转换为第一中间数据。

示例性的,以第一中间数据为第一160位数据为例进行说明:目标数据包括第一64位双精度浮点数,目标功能函数包括第一功能函数,第一功能函数包括frsp函数。计算机设备在运行功能参考模型时,调用功能文件,功能文件运行frsp函数,frsp函数调用转换文件将第一64位双精度浮点数转换为第一中间数据。

步骤302,检测第一中间数据是否是非数(notanumber,nan)。

示例性的,计算机设备检测步骤301中得到的第一中间数据是否是非数,当第一中间数据是非数时,进入步骤303a;当第一中间数据不是非数时,进入步骤303b。

步骤303a,通过第一功能函数将第一中间数据转换为双精度格式的单精度浮点数,得到第一非数异常标志信息。

示例性的,当第一160位数据是非数时,计算机设备通过frsp函数将第一中间数据转换为双精度格式的单精度浮点数,同时生成第一非数异常标志信息。

步骤304a,根据第一非数异常标志信息,通过浮点状态/控制寄存器对第一非数进行异常处理,得到第一非数异常数据,将双精度格式的单精度浮点数和第一非数异常数据确定为目标转换结果。

示例性的,虚拟寄存器包括浮点状态/控制寄存器。当第一160位数据不是非数时,计算机设备通过frsp函数,根据第一非数异常标志信息,调用浮点状态/控制寄存器对第一非数进行异常处理,得到第一非数异常数据,将双精度格式的单精度浮点数和第一非数异常数据确定为目标转换结果。

步骤303b,通过第一功能函数将第一中间数据转换为双精度格式的单精度浮点数,将双精度格式的单精度浮点数确定为目标转换结果。

示例性的,当第一160位数据不是非数时,计算机设备通过frsp函数将第一中间数据转换为双精度格式的单精度浮点数,将双精度格式的单精度浮点数确定为目标转换结果。

综上所述,本申请实施例中,通过将第一64位双精度浮点数转换为第一中间数据,当第一中间数据是非数时,将第一中间数据转换为双精度格式的单精度浮点数,同时生成第一非数异常标志信息,从而得到第一非数异常数据,进而将双精度格式的单精度浮点数和第一非数异常数据确定为目标转换结果;当第一中间数据不是非数时,将第一中间数据转换为双精度格式的单精度浮点数,将双精度格式的单精度浮点数确定为目标转换结果,由于第一中间数据是位数高于64位的数据,从而实现了在功能参考模型中将64位双精度浮点数转换为双精度格式的单精度浮点数的基础上,提高了数据转换的精确度,基于该双精度格式的单精度浮点数的目标输出结果提高了对定浮点数据的转换装置进行验证的验证速度。

图4,示出了本申请一个示例性实施例提供的向量的双精度浮点数转换为单精度浮点数的数据转换方法的流程图。该方法可由计算机设备执行,该方法可以是图1实施例中的步骤103的一种可选的实施方式,该方法包括:

步骤401,将第二64位双精度浮点数转换为第二中间数据。

示例性的,以第二中间数据为第二160位数据为例进行说明:目标数据包括第二64位双精度浮点数,目标功能函数包括第二功能函数,第二功能函数包括xvcvdpsp函数。计算机设备在运行功能参考模型时,调用功能文件,功能文件运行xvcvdpsp函数,xvcvdpsp函数调用转换文件将第二64位双精度浮点数转换为第二中间数据。

步骤402,检测第二中间数据是否是非数。

示例性的,计算机设备检测步骤401中得到的第二160位数据是否是非数,当第二160位数据是非数时,进入步骤403a;当第二中间数据不是非数时,进入步骤403b。

步骤403a,将第二中间数据转换为第三64位双精度浮点数,得到第二非数异常标志信息。

示例性的,当第二160位数据是非数时,计算机设备通过xvcvdpsp函数调用转换文件将第二160位数据转换为第三64位双精度浮点数,同时得到第二非数异常标志信息。

步骤404a,根据第二非数异常标志信息,调用浮点状态/控制寄存器对第二中间数据进行异常处理,得到第二非数异常数据。

示例性的,计算机设备通过xvcvdpsp函数根据第二非数异常标志信息,调用浮点状态/控制寄存器对第二中间数据进行异常处理,得到第二非数异常数据。

步骤405a,将第三64位双精度浮点数转换为第三中间数据。

示例性的,以第三中间数据为第三160位数据进行说明:计算机设备通过xvcvdpsp函数调用转换文件将第三64位双精度浮点数转换为第三160位数据。

步骤406a,通过第二功能函数将第三中间数据转换为32位单精度浮点数,将32位单精度浮点数和第二非数异常数据确定为目标转换结果。

示例性的,计算机设备通过xvcvdpsp函数将第三160位数据转换为32位单精度浮点数,将32位单精度浮点数和第二非数异常数据确定为目标转换结果。

步骤403b,将第二中间数据转换为第三64位双精度浮点数。

示例性的,计算机设备通过xvcvdpsp函数调用转换文件,将第二160位数据转换为第三64位双精度浮点数。

步骤404b,将第三64位双精度浮点数转换为第三中间数据。

示例性的,以第三中间数据为第三160位数据进行说明:计算机设备通过调用转换文件,将第三64位双精度浮点数转换为第三160位数据。

步骤405b,通过第二功能函数将第三中间数据转换为32位单精度浮点数,将32位单精度浮点数确定为目标转换结果。

示例性的,计算机设备通过xvcvdpsp函数将第三160位数据转换为32位单精度浮点数,将32位单精度浮点数确定为目标转换结果。

综上所述,本申请实施例中,通过将第二64位双精度浮点数转换为第二中间数据,当第二中间数据是非数时,将第二中间数据转换为第三64位双精度浮点数,将第三64位双精度转换为第三中间数据,再将第三中间数据转换为32位单精度浮点数,同时调用浮点状态/控制寄存器,根据生成的第二非数异常标志信息得到第二非数异常数据,将32位单精度浮点数和第二非数异常数据确定为目标输出结果;当第二中间数据不是非数时,将第二中间数据转换为第三64位双精度浮点数,将第三64位双精度转换为第三中间数据,再将第三中间数据转换为32位单精度浮点数,将32位单精度浮点数确定为目标输出结果,由于第二中间数据和第三中间数据是位数高于64位的数据,从而在实现了在功能参考模型中将64位双精度浮点数转换为32位单精度浮点数的基础上,提高了数据转换的精确度,基于该32位单精度浮点数的目标输出结果提高了对定浮点数据的转换装置进行验证的验证速度。

图5,示出了本申请一个示例性实施例提供的双精度浮点数转换为有符号双字整数的数据转换方法的流程图。该方法可由计算机设备执行,该方法可以是图1实施例中的步骤103的一种可选的实施方式,该方法包括:

步骤501,将第三64位双精度浮点数转换为第四中间数据。

示例性的,以第四中间数据为第四160位数据进行示例性说明:目标数据包括第三64位双精度浮点数,目标功能函数包括第三功能函数,第三功能函数包括fctidz函数。计算机设备在运行功能参考模型时,调用功能文件,功能文件运行fctidz函数,fctidz函数调用转换文件将第三64位双精度浮点数转换为第四160位数据。

步骤502,检测第四中间数据是否包括特殊数。

示例性的,计算机设备检测步骤501中得到的第四160位数据是否包括特殊数,当第四160位数据包括特殊数时,进入步骤503a;当第四中间数据不包括特殊数时,进入步骤503b。

步骤503a,通过第三功能函数将第四中间数据转换为有符号双字整数,得到特殊数异常标志信息。

示例性的,当第四160位数据包括特殊数时,计算机设备通过fctidz函数将第四160位数据转换为有符号双字整数,同时得到特殊数异常标志信息。

步骤504a,根据特殊数异常标志信息,通过浮点状态/控制寄存器对特殊数进行异常处理,得到特殊数数据,将有符号双字整数和特殊数数据确定为目标转换结果。

示例性的,虚拟寄存器包括浮点状态/控制寄存器。计算机设备通过转换文件,根据特殊数异常标志信息,调用浮点状态/控制寄存器对第四中间数据进行异常处理,得到特殊数数据,将有符号双字整数和特殊数数据确定为目标转换结果。需要说明的是,计算机设备在调用浮点状态/控制寄存器前,需要设置浮点状态/控制寄存器的相关参数,将浮点状态/控制寄存器的fi值设置为0,将浮点状态/控制寄存器的fr值设置为1。

步骤503b,通过第三功能函数将第四中间数据转换为有符号双字整数,将有符号双字整数确定为目标转换结果。

示例性的,当第四中间数据不包括特殊数时,计算机设备通过fctidz函数将第四中间数据转换为有符号双字整数,将该有符号双字整数确定为目标转换结果。

综上所述,本申请实施例中,通过将第三64位双精度浮点数转换为第四中间数据,当第四中间数据包括特殊数时,将第四中间数据转换为有符号双字整数,得到特殊数异常标志信息,从而根据特殊数异常标志信息得到特殊数数据,将有符号双字整数和特殊数数据确定为目标输出结果;当第四中间数据不包括特殊数时,将第四中间数据转换为有符号双字整数,将有符号双字整数确定为目标输出结果,由于第四中间数据是位数高于64位的数据,从而在实现了在功能参考模型中将64位双精度浮点数转换为有符号双字整数基础上,提高了数据转换的精确度,基于该有符号双字整数的目标输出结果提高了对定浮点数据的转换装置进行验证的验证速度。

图6,示出了本申请一个示例性实施例提供的单精度浮点数转换为32位无符号整数的数据转换方法的流程图。该方法可由计算机设备执行,该方法可以是图1实施例中的步骤103的一种可选的实施方式,该方法包括:

步骤601,将32位单精度浮点数转换为第五中间数据。

示例性的,以第五中间数据为160位数据进行说明:目标数据包括32位单精度浮点数,目标功能函数包括第四功能函数,第四功能函数包括xvcvspuxws函数。计算机设备在运行功能参考模型时,调用功能文件,功能文件运行xvcvspuxws函数,xvcvspuxws函数调用转换文件将32位单精度浮点数转换为第五中间数据。

步骤602,检测第五中间数据是否是非数。

示例性的,计算机设备检测步骤601中得到的第五160位数据是否是非数,当第五160位数据是非数时,进入步骤603a;当第五160位数据不是非数时,进入步骤603b。

步骤603a,通过第四功能函数置位浮点状态/控制寄存器,得到第三非数异常标志信息。

示例性的,虚拟寄存器包括浮点状态/控制寄存器。计算机设备通过xvcvspuxws函数置位浮点状态/控制寄存器,得到第三非数异常标志信息。

步骤604a,调用浮点状态/控制寄存器对第五中间数据赋予特殊值,得到第三非数异常数据。

示例性的,计算机设备通过xvcvspuxws函数,调用浮点状态/控制寄存器对第五160位数据赋予特殊值,得到第三非数异常数据。

步骤605a,根据第三非数异常标志信息,通过第四功能函数将第五中间数据转换为32位无符号整数,将32位无符号整数和第三非数异常数据确定为目标转换结果。

示例性的,计算机设备通过xvcvspuxws函数将第五160位数据转换为32位无符号整数,将该32位无符号整数确定为目标转换结果,将32位无符号整数和第三非数异常数据确定为目标转换结果。

步骤603b,通过第四功能函数将第五中间数据转换为32位无符号整数,将32位无符号整数确定为目标转换结果。

示例性的,当第五160位数据不是非数时,计算机设备通过xvcvspuxws函数将第五中间数据转换为32位无符号整数,将该32位无符号整数确定为目标转换结果。

综上所述,本申请实施例中,通过将32位单精度浮点数转换为第五中间数据,当第五中间数据是非数时,置位浮点状态/控制寄存器,得到第三非数异常标志信息,对第五中间数据赋予特殊值,得到第三非数异常数据,根据第三非数异常标志信息,将第五中间数据转换为32位无符号整数,将32位无符号整数和第三非数异常数据确定为目标转换结果;当第五中间数据不是非数时,将第五中间数据转换为32位无符号整数,将32位无符号整数确定为目标转换结果,由于第五中间数据是位数大于64位的数据,从而在实现了在功能参考模型中将32位单精度浮点数转换为32位无符号整数基础上,提高了数据转换的精确度,基于该32位无符号整数的目标输出结果提高了对定浮点数据的转换装置进行验证的验证速度。

图7,示出了本申请一个示例性的实施例提供的数据转换装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为图1至图6实施例中的计算机设备,该装置包括查询模块710和功能模块720。

查询模块710,用于获取目标数据的操作码,操作码用于指示数据的转换功能类型,目标数据包括待转换的浮点数,和/或,待转换的定点数;根据目标数据的操作码,在至少两个功能函数中确定目标数据的操作码对应的目标功能函数,功能函数包括对目标数据执行数据转换操作的指令集合。

功能模块720,用于通过目标功能函数对目标数据执行目标数据转换操作,得到目标数据的目标转换结果;当需要更新虚拟寄存器组中的结果寄存器时,更新结果寄存器,得到第一状态信息,将第一状态信息确定为当前状态信息;或者,当不需要更新结果寄存器时,更新虚拟寄存器组中的控制寄存器,得到第二状态信息,将第二状态信息确定为当前状态信息。

在一个可选的实施例中,功能模块720,还用于将目标数据转换为中间数据,中间数据是位数大于64位的数据;通过目标功能函数对中间数据执行数据转换操作,得到目标转换结果。

在一个可选的实施例中,虚拟寄存器组还包括浮点状态/控制寄存器,目标功能函数包括第一功能函数,目标数据包括第一64位双精度浮点数;

功能模块720,还用于将第一64位双精度浮点数转换为第一中间数据;当第一中间数据是非数时,通过第一功能函数将第一中间数据转换为双精度格式的单精度浮点数,得到第一非数异常标志信息,根据第一非数异常标志信息,通过浮点状态/控制寄存器对第一中间数据进行异常处理,得到第一非数异常数据,将双精度格式的单精度浮点数和第一非数异常数据确定为目标转换结果;或者,当第一中间数据不是非数时,通过第一功能函数将第一中间数据转换为双精度格式的单精度浮点数,将双精度格式的单精度浮点数确定为目标转换结果。

在一个可选的实施例中,虚拟寄存器组还包括浮点状态/控制寄存器,目标功能函数包括第二功能函数,目标数据包括第二64位双精度浮点数;

功能模块720,还用于通过第二功能函数将第二64位双精度浮点数转换为第二中间数据;当第二中间数据是非数时,通过第二功能函数将第二中间数据转换为第三64位双精度浮点数,得到第二非数异常标志信息,根据第二非数异常标志信息,调用浮点状态/控制寄存器对第二中间数据进行异常处理,得到第二非数异常数据,将第三64位双精度浮点数转换为第三中间数据,通过第二功能函数将第三中间数据转换为32位单精度浮点数,将32位单精度浮点数和第二非数异常数据确定为目标转换结果;或者,当第二中间数据不是非数时,通过第二功能函数将第二中间数据转换为第三64位双精度浮点数,通过第二功能函数将第三64位双精度浮点数转换为第三中间数据,通过第二功能函数将第三中间数据转换为32位单精度浮点数,将32位单精度浮点数确定为目标转换结果。

在一个可选的实施例中,虚拟寄存器组还包括浮点状态/控制寄存器,目标功能函数包括第三功能函数,目标数据包括第三64位双精度浮点数;

功能模块720,还用于通过将第三64位双精度浮点数转换为第四中间数据;当第四中间数据包括特殊数时,通过第三功能函数将第四中间数据转换为有符号双字整数,得到特殊数异常标志信息,根据特殊数异常标志信息,通过浮点状态/控制寄存器对特殊数进行异常处理,得到特殊数数据,将有符号双字整数和特殊数数据确定为目标转换结果;或者,当第四中间数据不包括特殊数时,通过第三功能函数将第四中间数据转换为有符号双字整数,将有符号双字整数确定为目标转换结果。

在一个可选的实施例中,虚拟寄存器组还包括浮点状态/控制寄存器,目标功能函数包括第四功能函数,目标数据包括32位单精度浮点数;

功能模块720,还用于通过将32位单精度浮点数转换为第五中间数据;当第五中间数据是非数时,通过第四功能函数置位浮点状态/控制寄存器,得到第三非数异常标志信息,调用浮点状态/控制寄存器对第五中间数据赋予特殊值得到第三非数异常数据,根据第三非数异常标志信息,通过第四功能函数将第五中间数据转换为32位无符号整数,将32位无符号整数和第三非数异常数据确定为目标转换结果;或者,当第五中间数据不包括非数时,通过第四功能函数将第五中间数据转换为32位无符号整数,将32位无符号整数确定为目标转换结果。

图8,示出了本申请一个示例性实施例提供的计算机设备的结构框图。该计算机设备包括:处理器810和存储器820。

处理器810可以是中央处理器(英文:centralprocessingunit,cpu),网络处理器(英文:networkprocessor,np)或者cpu和np的组合。处理器810还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,asic),可编程逻辑器件(英文:programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,fpga),通用阵列逻辑(英文:genericarraylogic,gal)或其任意组合。

存储器820通过总线或其它方式与处理器810相连,存储器820中存储有至少一条指令、至少一段程序、代码集或指令集,上述至少一条指令、至少一段程序、代码集或指令集由处理器810加载并执行以实现上述实施例中的数据转换方法。可选的,存储器820中存储有功能参考模型821,功能参考模型821包括查询模块8211和功能模块8212,功能模块8212包括至少两个功能函数。

存储器820可以为易失性存储器(英文:volatilememory),非易失性存储器(英文:non-volatilememory)或者它们的组合。易失性存储器可以为随机存取存储器(英文:random-accessmemory,ram),例如静态随机存取存储器(英文:staticrandomaccessmemory,sram),动态随机存取存储器(英文:dynamicrandomaccessmemory,dram)。非易失性存储器可以为只读存储器(英文:readonlymemoryimage,rom),例如可编程只读存储器(英文:programmablereadonlymemory,prom),可擦除可编程只读存储器(英文:erasableprogrammablereadonlymemory,eprom),电可擦除可编程只读存储器(英文:electricallyerasableprogrammableread-onlymemory,eeprom)。非易失性存储器也可以为快闪存储器(英文:flashmemory),磁存储器,例如磁带(英文:magnetictape),软盘(英文:floppydisk),硬盘。非易失性存储器也可以为光盘。

本申请实施例还提供一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述任一实施例所述的数据转换方法。

本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的数据转换方法。

显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本申请创造的保护范围之中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1