CN113032326A - 一种用于fpga的数据类型转换装置、方法、设备及存储介质 - Google Patents
一种用于fpga的数据类型转换装置、方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113032326A CN113032326A CN202110318414.9A CN202110318414A CN113032326A CN 113032326 A CN113032326 A CN 113032326A CN 202110318414 A CN202110318414 A CN 202110318414A CN 113032326 A CN113032326 A CN 113032326A
- Authority
- CN
- China
- Prior art keywords
- numerical value
- data
- floating point
- price data
- value
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/02—Comparing digital values
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种用于FPGA的数据类型转换装置、方法、设备及存储介质。该数据类型转换装置包括:接收模块,用于通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据预设倍数确定出对应的目标乘数;数值计算模块,用于基于价格数据和目标乘数计算得到价格数据的整数部分数值,并根据价格数据、整数部分数值、预设倍数和目标扩大倍数计算得到价格数据的小数部分数值;数据转换模块,用于通过并行处理将小数部分数值转换为小数部分浮点数据;双精度浮点数生成模块,用于基于整数部分数值、小数部分浮点数据,以及整数部分数值和小数部分数值分别占用的比特位长度,得到价格数据对应的双精度浮点数。能够提高数据类型转换的速度。
Description
技术领域
本发明涉及数据类型转换领域,特别涉及一种用于FPGA的数据类型转换装置、方法、设备及存储介质。
背景技术
当前,在证券和期货交易领域,对高频交易的专业投资者来说,处理订单信息的速度对交易策略盈亏结果影响巨大,投资者从客户端发送订单到交易所‘0延时’一直是高频交易系统速度方面追求的目标。证券及期货市场一般支持的价格或数量均为双精度浮点类型,而客户输入的价格或数量一般为整数类型,因此订单处理中数据类型的转换速度是系统速度的重要因素。现有技术中,通过外部软件进行数据类型转换之后,通过通信传输给FPGA(field programmable gate array)内部,完成数据类型的转换,但异步处理订单复杂性较高,同步性较差;现有技术中,还通过提前预存,事后通过补误差补回精确度,但异步补偿方式误差较大。为解决上述问题,现有技术中还通过FPGA硬件实现数据类型的转换,订单信息处理及管理全部由FPGA内部完成,而在FPGA整数型转为双精度浮点型费时较多,降低了数据处理的速度,由此,如何提高数据从整数型到双精度浮点型的转换速度是目前亟需解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种用于FPGA的数据类型转换装置、方法、设备及介质,能够提高数据类型转换的速度。其具体方案如下:
第一方面,本申请公开了一种用于FPGA的数据类型转换装置,包括:
接收模块,用于通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据所述预设倍数确定出对应的目标乘数;
数值计算模块,用于基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值;
数据转换模块,用于通过并行处理将所述小数部分数值转换为小数部分浮点数据;
双精度浮点数生成模块,用于基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。
可选的,所述数值计算模块,包括:
第一乘法单元,用于将所述价格数据乘以所述目标乘数,得到相乘后价格数据;
目标移位参数确定单元,用于根据所述目标乘数和所述预设倍数确定出目标移位参数;
移位单元,用于根据所述目标移位参数对所述相乘后价格数据在二进制域进行右移操作,并将移位后数据的整数部分作为所述整数部分数值。
可选的,所述数值计算模块,包括:
第二乘法单元,用于将所述整数部分数值乘以所述预设倍数得到第一运算结果;
差值计算单元,用于计算所述价格数据和所述第一运算结果的差值,得到第二运算结果;
小数部分数值确定单元,用于计算所述目标扩大倍数和所述预设倍数的倍数比值,将所述第二运算结果乘以所述倍数比值,得到以整数型显示的所述小数部分数值。
可选的,所述数据类型转换装置,还包括:
第一比特位长度计算单元,用于根据所述整数部分数值在二进制域的首个有效比特位和分割长度,对所述整数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述整数部分数值占用的比特位长度;
第二比特位长度计算单元,用于根据所述小数部分数值在二进制域的首个有效比特位和分割长度,对所述小数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述小数部分数值占用的比特位长度。
可选的,所述双精度浮点数生成模块,包括:
符号位确定单元,用于根据所述价格数据的正负性质生成符号位;
指数位确定单元,用于根据所述整数部分数值,基于所述整数部分数值占用的比特位长度或所述小数部分数值占用的比特位长度,计算得到指数位比特串;
浮点数确定单元,用于基于所述整数部分数值、所述小数部分数值占用的比特位长度和所述小数部分浮点数据,通过移位操作和或运算计算得到浮点数比特串;
双精度浮点数生成单元,用于基于所述符号位、所述指数位比特串和所述浮点数比特串,得到所述价格数据对应的双精度浮点数。
可选的,所述数据转换模块,包括:
并行移位单元,用于并行对所述小数部分数值进行不同长度的左移位操作,得到对应的多个移位后数据;
比较单元,用于将所述移位后数据与目标扩大倍数进行比较,根据比较结果得到对应的结果比特值;
小数部分浮点数据确定单元,用于基于所述结果比特值生成所述小数部分浮点数据。
第二方面,本申请公开了一种用于FPGA的数据类型转换方法,包括:
通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据所述预设倍数确定出对应的目标乘数;
基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值;
通过并行处理将所述小数部分数值转换为小数部分浮点数据;
基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。
可选的,所述基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,包括:
将所述价格数据乘以所述目标乘数,得到相乘后价格数据;
根据所述目标乘数和所述预设倍数确定出目标移位参数;
根据所述目标移位参数对所述相乘后价格数据在二进制域进行右移操作,并将移位后数据的整数部分作为所述整数部分数值。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的用于FPGA的数据类型转换方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述的用于FPGA的数据类型转换方法。
本申请中,通过接收模块接收到客户端发送的扩大预设倍数后的整数型价格数据后,根据预设倍数确定出对应的目标乘数,然后基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值,再通过并行处理将所述小数部分数值转换为小数部分浮点数据,最后基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。可见,通过目标乘数和价格数据通过乘法运算得到价格数据的整数部分数值,由于FPGA中乘法运算的速度远高于除法运算,由此提高了确定出整数部分数值和小数部分数值的速度,大大提高了功能实现的效率,然后通过并行处理将小数部分数值转换为小数部分浮点数据,提高了数据从整数型到双精度浮点型的转换速度,进一步缩短了订单处理时间,提升了高频交易整体报单的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种用于FPGA的数据类型转换装置结构示意图;
图2为本申请提供的一种具体的用于FPGA的数据类型转换装置结构示意图;
图3为本申请提供的一种用于FPGA的数据类型转换方法流程示意图;
图4为本申请提供的一种电子设备结构图。
具体实施方式
现有技术中,通过FPGA硬件实现数据类型的转换,订单信息处理及管理全部由FPGA内部完成,而在FPGA整数型转为双精度浮点型费时较多,降低了数据处理的速度。为克服上述技术问题,本申请提出一种用于FPGA的数据类型转换装置,能够提高数据类型转换的速度。
本申请实施例公开了一种用于FPGA的数据类型转换装置,参见图1所示,该装置可以包括:
接收模块11,用于通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据所述预设倍数确定出对应的目标乘数。
本实施例中,首先接收模块11通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据上述预设倍数确定出对应的目标乘数。可以理解的是,由于FPGA硬件处理特点,接收到的数据为真实价格数据扩大了预设倍数后的整型数据,其中,上述价格数据也可以为数量数据。
数值计算模块12,用于基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值。
本实施例中,基于上述价格数据和目标乘数计算得到上述价格数据的整数部分数值,并根据上述价格数据、整数部分数值、预设倍数和目标扩大倍数计算得到上述价格数据的小数部分数值。可以理解的是,为了将价格数据转换为双精度浮点数据,需要先将价格数据的整数部分和小数部分分割出来,通常情况下,整数部分可以通过除法取商的运算计算得到,但由于硬件处理中,除法运算的速度较慢,因此本实施例中通过用目标乘数进行乘法运算得到整数部分数值,具体的通过对价格数据乘以一个较大的参数,再将乘后得到的数据在二进制域进行移位,实现整数部分数值的计算。在得到整数部分数值后,通过调用减法运算得到小数部分数值,并且,为转换后数据的精确度达到目标误差精确度,还需要根据预设倍数和目标倍数对小数部分进行扩大,此时的小数部分数值为通过整数型表征的原本价格数据的小数部分。
数据转换模块13,用于通过并行处理将所述小数部分数值转换为小数部分浮点数据。
本实施例中,数据转换模块13通过并行处理将上述小数部分数值转换为小数部分浮点数据。具体的,根据十进制转二进制的转换原理,并行对小数部分数值进行移位和比较操作,以得到转换后的小数部分浮点数据。
双精度浮点数生成模块14,用于基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。
本实施例中,基于上述整数部分数值、上述小数部分浮点数据,以及上述整数部分数值和上述小数部分数值分别占用的比特位长度,得到上述价格数据对应的双精度浮点数(double float)。可以理解的是,双精度浮点型数据具有53位有效数字,主要的组成格式包括符号位(S_value)、指数位(E_value)和浮点数(F_value)。基于上述整数部分数值、上述小数部分浮点数据,以及上述整数部分数值和上述小数部分数值分别占用的比特位长度,计算得到符号位数据、指数位数据和浮点数,以得到价格数据对应的双精度浮点数。
本实施例中,所述用于FPGA的数据类型转换装置,还可以包括:第一比特位长度计算单元,用于根据所述整数部分数值在二进制域的首个有效比特位和分割长度,对所述整数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述整数部分数值占用的比特位长度;第二比特位长度计算单元,用于根据所述小数部分数值在二进制域的首个有效比特位和分割长度,对所述小数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述小数部分数值占用的比特位长度。可以理解的是,在计算双精度浮点数据之前,还可以通过第一比特位长度计算单元和第二比特位长度计算单元分别计算整数部分数值和小数部分数值所占用的比特位的长度,利用FPGA并行处理的特点,通常一个时钟可以完成整数部分数值的比特位长度的计算。
本实施例中,所述双精度浮点数生成模块13,可以包括:符号位确定单元,用于根据所述价格数据的正负性质生成符号位;指数位确定单元,用于根据所述整数部分数值,基于所述整数部分数值占用的比特位长度或所述小数部分数值占用的比特位长度,计算得到指数位比特串;浮点数确定单元,用于基于所述整数部分数值、所述小数部分数值占用的比特位长度和所述小数部分浮点数据,通过移位操作和或运算计算得到浮点数比特串;双精度浮点数生成单元,用于基于所述符号位、所述指数位比特串和所述浮点数比特串,得到所述价格数据对应的双精度浮点数。
具体的,根据价格数据的正负性质生成符号位,如价格为正数,此时符号位取0,进一步,若整数部分数值非0,那么指数位E_value=1024+IN_BIT_LEN,其中IN_BIT_LEN为整数部分数值的比特位长度;若整数部分数值为0,即价格数据为纯小数,则指数位E_value=1024—FL_BITS_LEN,其中FL_BITS_LEN为小数部分数值的比特位长度。然后,通过或运算计算浮点数,具体运算公式为:IN_M_P<<(64—IN_BITS_LEN)|F_DEC>>IN_BITS_LEN,其中,IN_M_P为整数部分数值,F_DEC为上述小数部分浮点数据,“<<”为左移运算符,“>>”为右移运算符,“|”为或运算符号,由此,得到上述价格数据对应的双精度浮点数。
由上可见,本实施例中通过接收模块接收到客户端发送的扩大预设倍数后的整数型价格数据后,根据预设倍数确定出对应的目标乘数,然后基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值,再通过并行处理将所述小数部分数值转换为小数部分浮点数据,最后基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。可见,通过目标乘数和价格数据通过乘法运算得到价格数据的整数部分数值,由于FPGA中乘法运算的速度远高于除法运算,由此提高了确定出整数部分数值和小数部分数值的速度,大大提高了功能实现的效率,然后通过并行处理将小数部分数值转换为小数部分浮点数据,提高了数据从整数型到双精度浮点型的转换速度,进一步缩短了订单处理时间,提升了高频交易整体报单的速度。
本申请实施例公开了一种具体的用于FPGA的数据类型转换装置,参见图2所示,该装置可以包括:
接收模块11,用于通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据所述预设倍数确定出对应的目标乘数。
数值计算模块12,用于基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值。
本实施例中,所述数值计算模块12,包括:第一乘法单元111,用于将所述价格数据乘以所述目标乘数,得到相乘后价格数据;目标移位参数确定单元112,用于根据所述目标乘数和所述预设倍数确定出目标移位参数;移位单元113,用于根据所述目标移位参数对所述相乘后价格数据在二进制域进行右移操作,并将移位后数据的整数部分作为所述整数部分数值。
例如,中金所期货要求报单的价格为双精度浮点数类型,并且误差不大于107,而接收到客户端的价格为整数类型,并且为真实价格扩大预设倍数后的数据。例如,设接收到客户端的整数型数据为M_P,M_P为真实价格扩大为104后的数据,首先需要把整数类型的价格分为整数部分及小数部分;
其中,整数部分为IN_M_P,IN_M_P=M_P*(260/105)>>60,即为乘以一个常数然后进行右移操作,其中目标乘数,即260/105为根据实际需求验证得到。可以理解的是,由于整数部分的求解需要在FPGA中调用除法,而除法在FPGA中是一个非常慢、非常费时的过程。因此,本实施例中将原本的除法运算IN_M_P=M_P/104转为乘法和移位操作IN_M_P=M_P*(260/105)>>60,得到与除法相同精度的值,提高了数据类型转换的速度。
其中,小数部分为DEC_M_P,DEC_M_P=(M_P—IN_M_P*104)*103;小数部分其实是实际值扩大预设倍数104后的值,而目标倍数的误差要求不大于107,因此需要根据预设倍数和目标倍数的比值对小数部分进行扩大,得到小数部分数值。
数据转换模块13,用于通过并行处理将所述小数部分数值转换为小数部分浮点数据。
本实施例中,所述数据转换模块,包括:并行移位单元131,用于并行对所述小数部分数值进行不同长度的左移位操作,得到对应的多个移位后数据;比较单元132,用于将所述移位后数据与目标扩大倍数进行比较,根据比较结果得到对应的结果比特值;小数部分浮点数据确定单元133,用于基于所述结果比特值生成所述小数部分浮点数据。
可以理解的是,小数据部分数值转浮点数原理上为十进制小数部分转二进制数据,按照连续乘2并满1取1的规则,实现进制间的转换,而二进制域每左移1位即为数值乘2,因此并行移位单元131通过并行对小数部分数值进行不同长度的左移位操作,得到对应的多个移位后数据,然后由比较单元132利用多个比较器将移位后数据与目标扩大倍数进行比较,根据比较结果得到对应的结果比特值,以便小数部分浮点数据确定单元133基于结果比特值生成小数部分浮点数据。
下面以误差不大于2—10,十进制数0.01为例,转为二进制小数原理如下:
0.01*2=0.02,b—1=0;
0.02*2=0.04,b—2=0;
0.04*2=0.08,b—3=0;
0.08*2=0.16,b—4=0;
0.16*2=0.32,b—5=0;
0.32*2=0.64,b—6=0;
0.64*2=1.28,b—7=1;
0.28*2=0.54,b—8=0;
0.54*2=1.08,b—9=1;
由于最后的小数小于0.5,根据四舍五入的原则,b—10=0,最后得到0.01的二进制表达,(0.01)D=(0.0000001010)B。
基于以上的原理,本实施例中将小数部分扩大了107,即小数部分数值乘2,即左移1,然后与107相比较,如果乘的结果大于107,当前bit位为f0=1,相反为f0=0,循环重复此过程直到最右bits移至最左bits,得到小数部分浮点数据F_DEC,即{f0,f1,f2,…fn};通过FPGA硬件并行处理,提高小数部分转为浮点数的速度,把左移1,改为同时左移位数这1位、2位、3位、4位、5位、6位、7位和8位,根据具体的设计需求左移位数可以进行调整,那么原来小数部分,分别扩大了21倍、22倍、23倍、24倍、25倍、26倍、27倍和28倍,移位后扩大的多个数据同时与107同时相比较,从8个比较的结果中选出比107的大的最小值。例如,若只有DEC_M_P*26<107&&DEC_M_P*27>107那么,可以得知,f0=0,f1=0,f2=0,f3=0,F4=0,f5=0,f6=0,f7=1,此一次的计算完成了7次的比较,速度上提高了7倍。根据FPGA的并行处理的特点,通常将整数型数据转为双精度浮点数仅需要几个时钟的时间,在高频交易系统中非常适用。
进一步,为了更快的实现数值转换,可以将107扩展2*107、3*107、…n*107根据具体的使用场景设定n的大小,以达到较高的使用效率,然后根据以上的小数部分数值计算浮点数的方案,分别与以上107扩展值相比较,这样可以非常快的知道,下一次需要移的位数,提高了数据转换速度,但由于107的n倍与多次移位和比较,需要大量的比较器。
双精度浮点数生成模块14,用于基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。
由上可见,本实施例中利用目标乘数乘以价格数据,然后对相乘后价格数据在二进制域进行右移操作,得到价格数据的整数部分数值,通过调用乘法预算和移位操作代替原本的除法操作,提高了数据类型转换的速度,并且,在计算小数部分浮点数据时,FPGA通过并行移位和比较操作,提高了小数部分浮点数据的计算,提高了数据从整数型到双精度浮点型的转换速度。
相应的,本申请实施例还公开了一种用于FPGA的数据类型转换方法,参见图3所示,该方法可以包括以下步骤:
步骤S11:通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据所述预设倍数确定出对应的目标乘数。
步骤S12:基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值。
本实施例中,所述基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,可以包括:将所述价格数据乘以所述目标乘数,得到相乘后价格数据;根据所述目标乘数和所述预设倍数确定出目标移位参数;根据所述目标移位参数对所述相乘后价格数据在二进制域进行右移操作,并将移位后数据的整数部分作为所述整数部分数值。可见,利用目标乘数乘以价格数据,然后对相乘后价格数据在二进制域进行右移操作,得到价格数据的整数部分数值,通过调用乘法预算和移位操作代替原本的除法操作,提高了数据类型转换的速度
本实施例中,所述根据所述整型数据、所述整数部分数值和目标扩大倍数计算得到小数部分数值,可以包括:将所述整数部分数值乘以所述预设倍数得到第一运算结果;计算所述整型数据和所述第一运算结果的差值,得到第二运算结果;计算所述目标扩大倍数和所述预设倍数的倍数比值,将所述第二运算结果乘以所述倍数比值,得到以整数型显示的所述小数部分数值。
步骤S13:通过并行处理将所述小数部分数值转换为小数部分浮点数据。
本实施例中,所述通过并行处理将所述小数部分数值转换为小数部分浮点数据,可以包括:并行对所述小数部分数值进行不同长度的左移位操作,得到对应的多个移位后数据;将所述移位后数据与目标扩大倍数进行比较,根据比较结果得到对应的结果比特值;基于所述结果比特值生成所述小数部分浮点数据。可见,在计算小数部分浮点数据时,FPGA通过并行移位和比较操作,提高了小数部分浮点数据的计算,提高了数据从整数型到双精度浮点型的转换速度。
步骤S14:基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。
本实施例中,所述基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数之前,还可以包括:根据所述整数部分数值在二进制域的首个有效比特位和分割长度,对所述整数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述整数部分数值占用的比特位长度;根据所述小数部分数值在二进制域的首个有效比特位和分割长度,对所述小数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述小数部分数值占用的比特位长度。
本实施例中,所述基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述整型数据对应的双精度浮点数,可以包括:根据所述价格数据的正负性质生成符号位;根据所述整数部分数值,基于所述整数部分数值占用的比特位长度或所述小数部分数值占用的比特位长度,计算得到指数位比特串;基于所述整数部分数值、所述小数部分数值占用的比特位长度和所述小数部分浮点数据,通过移位操作和或运算计算得到浮点数比特串;基于所述符号位、所述指数位比特串和所述浮点数比特串,得到所述价格数据对应的双精度浮点数。
由上可见,本实施例中通过接收模块接收到客户端发送的扩大预设倍数后的整数型价格数据后,根据预设倍数确定出对应的目标乘数,然后基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值,再通过并行处理将所述小数部分数值转换为小数部分浮点数据,最后基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。可见,通过目标乘数和价格数据通过乘法运算得到价格数据的整数部分数值,由于FPGA中乘法运算的速度远高于除法运算,由此提高了确定出整数部分数值和小数部分数值的速度,大大提高了功能实现的效率,然后通过并行处理将小数部分数值转换为小数部分浮点数据,提高了数据从整数型到双精度浮点型的转换速度,进一步缩短了订单处理时间,提升了高频交易整体报单的速度。
进一步的,本申请实施例还公开了一种电子设备,参见图4所示,图中的内容不能被认为是对本申请的使用范围的任何限制。
图4为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的用于FPGA的数据类型转换方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及包括整数型价格数据在内的数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的用于FPGA的数据类型转换方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的用于FPGA的数据类型转换方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种用于FPGA的数据类型转换装置、方法、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种用于FPGA的数据类型转换装置,其特征在于,包括:
接收模块,用于通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据所述预设倍数确定出对应的目标乘数;
数值计算模块,用于基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值;
数据转换模块,用于通过并行处理将所述小数部分数值转换为小数部分浮点数据;
双精度浮点数生成模块,用于基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。
2.根据权利要求1所述的用于FPGA的数据类型转换装置,其特征在于,所述数值计算模块,包括:
第一乘法单元,用于将所述价格数据乘以所述目标乘数,得到相乘后价格数据;
目标移位参数确定单元,用于根据所述目标乘数和所述预设倍数确定出目标移位参数;
移位单元,用于根据所述目标移位参数对所述相乘后价格数据在二进制域进行右移操作,并将移位后数据的整数部分作为所述整数部分数值。
3.根据权利要求1所述的用于FPGA的数据类型转换装置,其特征在于,所述数值计算模块,包括:
第二乘法单元,用于将所述整数部分数值乘以所述预设倍数得到第一运算结果;
差值计算单元,用于计算所述价格数据和所述第一运算结果的差值,得到第二运算结果;
小数部分数值确定单元,用于计算所述目标扩大倍数和所述预设倍数的倍数比值,将所述第二运算结果乘以所述倍数比值,得到以整数型显示的所述小数部分数值。
4.根据权利要求1所述的用于FPGA的数据类型转换装置,其特征在于,还包括:
第一比特位长度计算单元,用于根据所述整数部分数值在二进制域的首个有效比特位和分割长度,对所述整数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述整数部分数值占用的比特位长度;
第二比特位长度计算单元,用于根据所述小数部分数值在二进制域的首个有效比特位和分割长度,对所述小数部分数值在二进制域进行分割,并行计算分割后数值段含有的比特位数量,得到所述小数部分数值占用的比特位长度。
5.根据权利要求1所述的用于FPGA的数据类型转换装置,其特征在于,所述双精度浮点数生成模块,包括:
符号位确定单元,用于根据所述价格数据的正负性质生成符号位;
指数位确定单元,用于根据所述整数部分数值,基于所述整数部分数值占用的比特位长度或所述小数部分数值占用的比特位长度,计算得到指数位比特串;
浮点数确定单元,用于基于所述整数部分数值、所述小数部分数值占用的比特位长度和所述小数部分浮点数据,通过移位操作和或运算计算得到浮点数比特串;
双精度浮点数生成单元,用于基于所述符号位、所述指数位比特串和所述浮点数比特串,得到所述价格数据对应的双精度浮点数。
6.根据权利要求1至5任一项所述的用于FPGA的数据类型转换装置,其特征在于,所述数据转换模块,包括:
并行移位单元,用于并行对所述小数部分数值进行不同长度的左移位操作,得到对应的多个移位后数据;
比较单元,用于将所述移位后数据与目标扩大倍数进行比较,根据比较结果得到对应的结果比特值;
小数部分浮点数据确定单元,用于基于所述结果比特值生成所述小数部分浮点数据。
7.一种用于FPGA的数据类型转换方法,其特征在于,包括:
通过IO接口接收客户端发送的扩大预设倍数后的整数型价格数据,并根据所述预设倍数确定出对应的目标乘数;
基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,并根据所述价格数据、所述整数部分数值、所述预设倍数和目标扩大倍数计算得到所述价格数据的小数部分数值;
通过并行处理将所述小数部分数值转换为小数部分浮点数据;
基于所述整数部分数值、所述小数部分浮点数据,以及所述整数部分数值和所述小数部分数值分别占用的比特位长度,得到所述价格数据对应的双精度浮点数。
8.根据权利要求7所述的用于FPGA的数据类型转换方法,其特征在于,所述基于所述价格数据和所述目标乘数计算得到所述价格数据的整数部分数值,包括:
将所述价格数据乘以所述目标乘数,得到相乘后价格数据;
根据所述目标乘数和所述预设倍数确定出目标移位参数;
根据所述目标移位参数对所述相乘后价格数据在二进制域进行右移操作,并将移位后数据的整数部分作为所述整数部分数值。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求7或8所述的用于FPGA的数据类型转换方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中计算机程序被处理器执行时实现如权利要求7或8所述的用于FPGA的数据类型转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110318414.9A CN113032326B (zh) | 2021-03-25 | 2021-03-25 | 一种用于fpga的数据类型转换装置、方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110318414.9A CN113032326B (zh) | 2021-03-25 | 2021-03-25 | 一种用于fpga的数据类型转换装置、方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032326A true CN113032326A (zh) | 2021-06-25 |
CN113032326B CN113032326B (zh) | 2022-05-10 |
Family
ID=76473613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110318414.9A Active CN113032326B (zh) | 2021-03-25 | 2021-03-25 | 一种用于fpga的数据类型转换装置、方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032326B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6178435B1 (en) * | 1998-06-30 | 2001-01-23 | International Business Machines Corporation | Method and system for performing a power of two estimation within a data processing system |
US20040128331A1 (en) * | 2002-12-27 | 2004-07-01 | Hinds Christopher N. | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
CN1577250A (zh) * | 2003-06-26 | 2005-02-09 | 国际商业机器公司 | 用于实现2的幂的浮点估计的系统与方法 |
US20180217813A1 (en) * | 2017-01-27 | 2018-08-02 | International Business Machines Corporation | Shift and divide operations using floating-point arithmetic |
CN110515584A (zh) * | 2019-08-09 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 浮点计算方法及系统 |
CN111767025A (zh) * | 2020-08-04 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 包括乘累加器的芯片、终端及浮点运算的控制方法 |
CN111796870A (zh) * | 2020-09-08 | 2020-10-20 | 腾讯科技(深圳)有限公司 | 数据格式转换装置、处理器、电子设备及模型运行方法 |
CN112506935A (zh) * | 2020-12-21 | 2021-03-16 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
-
2021
- 2021-03-25 CN CN202110318414.9A patent/CN113032326B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6178435B1 (en) * | 1998-06-30 | 2001-01-23 | International Business Machines Corporation | Method and system for performing a power of two estimation within a data processing system |
US20040128331A1 (en) * | 2002-12-27 | 2004-07-01 | Hinds Christopher N. | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
CN1577250A (zh) * | 2003-06-26 | 2005-02-09 | 国际商业机器公司 | 用于实现2的幂的浮点估计的系统与方法 |
US20180217813A1 (en) * | 2017-01-27 | 2018-08-02 | International Business Machines Corporation | Shift and divide operations using floating-point arithmetic |
CN110515584A (zh) * | 2019-08-09 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 浮点计算方法及系统 |
CN111767025A (zh) * | 2020-08-04 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 包括乘累加器的芯片、终端及浮点运算的控制方法 |
CN111796870A (zh) * | 2020-09-08 | 2020-10-20 | 腾讯科技(深圳)有限公司 | 数据格式转换装置、处理器、电子设备及模型运行方法 |
CN112506935A (zh) * | 2020-12-21 | 2021-03-16 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Non-Patent Citations (1)
Title |
---|
程婷婷: "浮点运算中前导0预测算法的前缀模型的研究与实现", 《中国优秀硕士学位论文电子期刊.信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113032326B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR920010183B1 (ko) | Rom테이블을 갖춘 역수연산회로 | |
KR100756137B1 (ko) | 제산 및 제곱근 연산 유닛 | |
EP0821303A2 (en) | Method and apparatus for performing microprocessor integer division operations using floating point hardware | |
CN112506935B (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN102043760B (zh) | 数据处理方法及系统 | |
CN115062877B (zh) | 电力设备材料信息调整方法、装置、设备和计算机介质 | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
US6480873B1 (en) | Power operation device | |
US6917956B2 (en) | Apparatus and method for efficient modular exponentiation | |
US20010025293A1 (en) | Divider | |
CN113032326B (zh) | 一种用于fpga的数据类型转换装置、方法、设备及存储介质 | |
US9767073B2 (en) | Arithmetic operation in a data processing system | |
CN110119265A (zh) | 乘法运算实现方法、装置、计算机存储介质及电子设备 | |
Patankar et al. | Division algorithms-from past to present chance to improve area time and complexity for digital applications | |
US20060224648A1 (en) | Method and apparatus for providing a base-2 logarithm approximation to a binary number | |
US20230086090A1 (en) | Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit | |
CN115686436A (zh) | 定点数除法的计算方法及装置 | |
CN109756291A (zh) | 一种基于查表法的混沌扩频码生成方法及系统 | |
CN113625990B (zh) | 浮点转定点装置、方法、电子设备及存储介质 | |
CN113391787B (zh) | 一种除法器及除法处理方法 | |
CN114895744B (zh) | 一种直接数字频率合成方法及装置 | |
WO2022222882A1 (zh) | 信息处理方法及计算设备 | |
EP4455859A1 (en) | Operation method of multiplier, operation apparatus, electronic device, and storage medium | |
KR100257124B1 (ko) | 공통 피승수 모듈라 곱셈을 이용한 고속 멱승 방법 | |
Patankar et al. | Divider Implementation Based on USP-Awadhoot Division Algorithm For Area Optimization |
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 |