随机数高速实时处理器及其实现方法与流程

文档序号:11828760阅读:726来源:国知局
随机数高速实时处理器及其实现方法与流程

本发明涉及数据后处理技术领域,尤其涉及一种随机数高速实时处理器及其实现方法。



背景技术:

随机数是一种广泛使用的基础资源,性能良好的随机数在众多领域比如量子通信、密码学、博彩业、蒙特卡洛模拟、数值计算、随机抽样等都有着广泛而重要的应用。用来产生随机数序列的器件,即随机数发生器通常先产生原始随机数据,再经过后处理提纯之后,才可以得到性能良好的随机数序列。

随机数的后处理方法通常基于哈希函数实现,常见的哈希函数有SHA、Universal2等。Toeplitz矩阵是Universal2类哈希函数的一种,基于该矩阵的后处理算法,其安全性是信息理论可证的,被广泛用于对安全性要求较高的随机数,特别是量子随机数的后处理。

目前,基于Toeplitz矩阵的后处理算法通常在软件中实现,其算法复杂度高,需要大量的CPU运算,处理速度慢,通常只能达到1Mbps量级,这个速度也远远达不到实际需要,而且因为需要依赖计算机做离线处理,随机数发生器装置无法实时化、小型化。



技术实现要素:

本发明的目的是提供一种随机数高速实时处理器及其实现方法,极大的提高了数据后处理速度。

本发明的目的是通过以下技术方案实现的:

一种随机数高速实时处理器,包括:

Toeplitz矩阵构造模块、原始数据预处理模块、矩阵相乘模块以及累加模块,其中:

所述Toeplitz矩阵构造模块,用于使用m+n-1个种子数据构造一个m×n的Toeplitz矩阵,并将其分解为n/k个m×k的子矩阵,依次输入到矩阵相乘模块;

所述原始数据预处理模块,用于将长度为n的原始数据分解为n/k个长度为k的子数据,依次输入到矩阵相乘模块;

所述矩阵相乘模块,用于将所述m×k的子矩阵与所述长度为k的子数据相乘,获得长度为m的中间数据并输入到累加模块;

所述累加模块,用于将所述长度为m的中间数据进行累加n/k次,获得的累加结果即为处理后的最终数据。

m与n的比例由原始数据的随机性决定,所述随机性由最小熵H来量化,其定义为:H=-log2Pmax;其中,Pmax为最有可能出现的结果的概率;

m与n的满足以下关系:m/n≤H,且m≤n、m与n均为正整数以及n为k的整数倍。

所述矩阵相乘模块中的乘法通过按位与运算实现,所述累积模块中的加法通过按位或运算实现。

各模块的工作时钟均为同一系统时钟,时钟信号通过全局时钟路径送入各个模块,时钟的频率影响处理的速度;

各模块在系统时钟控制下采取流水线的工作形式:

m×k的子矩阵成与长度为k的子数据的输入同步进行,作为流水线的一级;

m×k的子矩阵成与长度为k的子数据相乘作为流水线的一级;

长度为m的中间数据的累加作为流水线的一级;

一个流水周期结束时得到的结果就是m×n的Toeplitz矩阵与长度为n的原始数据相乘后得到的长度为m的最终数据,之后进入下一个流水周期。

所述Toeplitz矩阵构造模块、原始数据预处理模块、矩阵相乘模块以及累加模块均在FPGA内由硬件描述语言规定的硬件结构实现或在其他类似的具有硬件并行计算能力的平台实现。

一种随机数高速实时处理方法,包括:

使用m+n-1个种子数据构造一个m×n的Toeplitz矩阵,并将其分解为n/k个m×k的子矩阵;

将长度为n的原始数据分解为n/k个长度为k的子数据;

将所述m×k的子矩阵与所述长度为k的子数据相乘,获得长度为m的中间数据;

将所述长度为m的中间数据进行累加n/k次,获得的累加结果即为处理后的最终数据。

m与n的比例由原始数据的随机性决定,所述随机性由最小熵H来量化,其定义为:H=-log2Pmax;其中,Pmax为最有可能出现的结果的概率;

m与n的满足以下关系:m/n≤H,且m≤n、m与n均为正整数以及n为k的整数倍。

乘法通过按位与运算实现,加法通过按位或运算实现。

该方法各步骤的工作时钟均为同一系统时钟,各步骤在系统时钟控制下采取流水线的工作形式:

m×k的子矩阵成与长度为k的子数据的输入同步进行,作为流水线的一级;

m×k的子矩阵成与长度为k的子数据相乘作为流水线的一级;

长度为m的中间数据的累加作为流水线的一级;

一个流水周期结束时得到的结果就是m×n的Toeplitz矩阵与长度为n的原始数据相乘后得到的长度为m的最终数据,之后进入下一个流水周期。

由上述本发明提供的技术方案可以看出,可以大幅降低了算法对FPGA硬件资源的使用量,使得在有限资源的FPGA内能够实现大规模的Toeplitz矩阵乘法;同时利用FPGA硬件电路处理速度快、能够并行运算的特点,可以大幅提高数据后处理速度。同时,随机数高速实时处理器,不仅可以在FPGA硬件中实现,同时可以在ASIC、CPLD等类似的硬件中实现。此外,本发明的方案数据处理速率达到了4Gbps,相比于基于软件的实现方法,速率提高了三个量级。

附图说明

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

图1为本发明实施例提供的随机数高速实时处理器的结构示意图;

图2为本发明实施例提供的随机数高速实时处理器工作流程图。

具体实施方式

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

图1为本发明实施例提供的随机数高速实时处理器的结构示意图。如图1所示,其主要包括:Toeplitz矩阵构造模块、原始数据预处理模块、矩阵相乘模块以及累加模块。

其工作过程如图2所示:

所述Toeplitz矩阵构造模块1,用于使用m+n-1个种子数据构造一个m×n的Toeplitz矩阵,并将其分解为n/k个m×k的子矩阵,依次输入到矩阵相乘模块3。

本发明实施例中,Toeplitz矩阵是一种Universal2类哈希函数,如下式表示:

Toeplitz矩阵的特点是矩阵中所有对角元素均相同,所以可以使用m+n-1个种子数据构造一个m×n的Toeplitz矩阵,矩阵的每一行均为上一行右移一位并加入一个新的随机数得到的。所述构成Toeplitz矩阵的m+n-1个种子数据,为无偏量子随机数序列。

本发明实施例中,m与n的比例由原始数据的随机性决定,所述随机性由最小熵H来量化,其定义为:H=-log2Pmax;其中,Pmax为最有可能出现的结果的概率;

m与n的满足以下关系:m/n≤H,且m≤n、m与n均为正整数以及n为k的整数倍。

所述原始数据预处理模块2,用于将长度为n的原始数据分解为n/k个长度为k的子数据,依次输入到矩阵相乘模块3。

所述矩阵相乘模块3,用于将所述m×k的子矩阵与所述长度为k的子数据相乘,获得长度为m的中间数据并输入到累加模块4;其中的乘法通过按位与运算实现。

所述累加模块4,用于将所述长度为m的中间数据进行累加n/k次,获得的累加结果即为处理后的最终数据;其中的加法通过按位或运算实现。

本发明实施例中,所述Toeplitz矩阵构造模块、原始数据预处理模块、矩阵相乘模块以及累加模块均在FPGA内由硬件描述语言规定的硬件结构实现或在其他类似的具有硬件并行计算能力的平台实现。

此外。如图2所示,各模块的工作时钟均为同一系统时钟,时钟信号通过全局时钟路径送入各个模块,时钟的频率影响处理的速度;

各模块在系统时钟控制下采取流水线的工作形式:

m×k的子矩阵成与长度为k的子数据的输入同步进行,作为流水线的一级;

m×k的子矩阵成与长度为k的子数据相乘作为流水线的一级;

长度为m的中间数据的累加作为流水线的一级;

一个流水周期结束时得到的结果就是m×n的Toeplitz矩阵与长度为n的原始数据相乘后得到的长度为m的最终数据,之后进入下一个流水周期。

本发明实施例中,参数m、n、k以及系统工作时钟频率f的选取,受限于所用的硬件资源,实时处理速率S由参数k与系统工作时钟频率f决定,即:S=f·k·m/n。

本实施例中待处理的原始随机数据,其最小熵:H>0.8bits/bit。

本实施例中,取m=1024,n=1280,即m/n=0.8≤H。取k=80,则一个流水周期为16个时钟周期,也即平均16个时钟周期产生1024位处理之后的数据。

各模块的工作时钟均为同一时钟,时钟信号通过全局时钟路径送入各个模块,本实施例中工作时钟频率f选择为62.5MHz,那么本实例中基于FPGA和Toeplitz矩阵的随机数高速实时处理器实时处理速率达到了4Gbps。

如果选用更高性能的FPGA或者ASIC、CPLD等硬件实现,参数k与系统工作时钟频率f可以更大,实时处理速率可以更高。

另一方面,为了解决子矩阵乘法运算时子矩阵生成元和原始数据扇出较大的问题,在矩阵相乘模块的入口处把扇出大的信号各自锁存到多个同类寄存器中,扇出时,每个同类寄存器只负责扇出到一部分负载,从而解决扇出过大的问题;此外,在编写硬件电路时,用时序约束来满足建立保持时间。

本发明的另一实施例还提供一种随机数高速实时处理方法,该方法基于前述处理器来实现。同样的参见附图2,其主要包括:

使用m+n-1个种子数据构造一个m×n的Toeplitz矩阵,并将其分解为n/k个m×k的子矩阵;

将长度为n的原始数据分解为n/k个长度为k的子数据;

将所述m×k的子矩阵与所述长度为k的子数据相乘,获得长度为m的中间数据;

将所述长度为m的中间数据进行累加n/k次,获得的累加结果即为处理后的最终数据。

本发明实施例中,m与n的比例由原始数据的随机性决定,所述随机性由最小熵H来量化,其定义为:H=-log2Pmax;其中,Pmax为最有可能出现的结果的概率;

m与n的满足以下关系:m/n≤H,且m≤n、m与n均为正整数以及n为k的整数倍。

本发明实施例中,乘法通过按位与运算实现,加法通过按位或运算实现。

本发明实施例中,该方法各步骤的工作时钟均为同一系统时钟,各步骤在系统时钟控制下采取流水线的工作形式:

m×k的子矩阵成与长度为k的子数据的输入同步进行,作为流水线的一级;

m×k的子矩阵成与长度为k的子数据相乘作为流水线的一级;

长度为m的中间数据的累加作为流水线的一级;

一个流水周期结束时得到的结果就是m×n的Toeplitz矩阵与长度为n的原始数据相乘后得到的长度为m的最终数据,之后进入下一个流水周期。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

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