CN101452377A - 一种快速的二元推导检测实现方法 - Google Patents
一种快速的二元推导检测实现方法 Download PDFInfo
- Publication number
- CN101452377A CN101452377A CNA2007101789490A CN200710178949A CN101452377A CN 101452377 A CN101452377 A CN 101452377A CN A2007101789490 A CNA2007101789490 A CN A2007101789490A CN 200710178949 A CN200710178949 A CN 200710178949A CN 101452377 A CN101452377 A CN 101452377A
- Authority
- CN
- China
- Prior art keywords
- dyadic
- mask
- bit
- derivation
- sequence
- 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
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提出了一种基于计算设备字长特征的,对任意二元序列(或等价的其它任意序列)进行快速的二元推导检测的实现方法。本发明适用于在字长为W比特的计算设备上高速计算小于或等于n-1阶的二元推导。通过采用掩码方法,本发明无需逐阶进行推导,而是通过掩码技术,从原始序列直接过滤出与k阶二元推导序列中每一比特相关的多个比特,再对其异或值进行高速计算,从而获得k阶二元推导序列,大幅提高了计算速度,降低了空间开销。
Description
技术领域
本发明提出了一种基于计算设备字长特征的,对任意的二元序列(或能够转换为二元序列的其它形式的任意序列)进行快速的二元推导检测的实现方法。
背景技术
随机数在信息科学的众多应用领域以及工业界中都发挥着极其重要的作用,已被广泛地应用于工业和学术研究领域。例如,工业仿真领域需要用到随机数,娱乐业(博彩、抽奖等)中使用到随机数,商业决策处理过程中需要使用随机数,计算机模拟与软件测试中需要随机数,人工智能研究领域更需要使用大量的随机数等等。
美国联邦政府发布的密码模块评估标准FIPS 140指定了4项基本的随机性检测项目,分别为单比特频数检测、扑克检测、游程总数检测以及块内最大“1”游程检测。除了这4项基本的随机性检测项目之外,我国有关主管部门制定的随机性检测国家标准中还包含了11项扩展的随机性检测项目。
二元推导检测是一种重要的随机性检测方法。二元推导序列是由初始二元序列生成的一个新序列。对长度为n的初始二元序列进行1阶二元推导得到的序列是一个长度为n-1的新的二元序列,它的每一比特通过将初始二元序列中与该比特相同位置和下一位置的两个相邻比特做异或操作获得。k阶二元推导序列是重复执行上述操作k次后所得到的二元序列,其长度为n-k。令Pk为k阶二元推导序列中“1”的比例,构造统计值 由随机性准则可知,一个随机序列的统计值V应该服从标准正态分布N(0,1)。
通常,k阶二元推导检测的采用如下实现方法(本发明称之为“原始方法”):
1.记长度为n比特的初始二元序列为ε0ε1...εn-1(其中,εi∈{0,1},0≤i≤(n-1),下文同),依次将该序列中相邻的两个比特做异或操作,得到一个长度为(n-1)比特的新二元序列记为1阶二元推导序列。在1阶二元推导序列中,有 成立,其中,0≤j≤(n-2);
2.对于每次推导得到的新序列仍然依照步骤1中的方法进行计算,重复k次,得到一个长度为n-k的k阶二元推导序列
3.对k阶二元推导序列 计算累加和
4.计算统计值
5.使用标准余误差函数erfc(x)计算统计值p-value: ;将p-value与显著性水平α比较,如果p-value≥α,则说明初始序列通过k阶二元推导检测;否则,说明初始序列未通过二元推导检测。
上述方法中,前3步是用来获取二元序列中的统计数值(累加和),第4、5步是对该数值进行统计计算。在实际应用中,由于待测的二元序列通常比较长,所以前3步计算的时间和空间开销远大于最后两步,所以对该实现方法的改进往往从前3步着手。
二元序列的数据存储方式通常采用单字节存储8个二进制数的形式。所以在上述方法中,计算(k+1)阶二元推导就需要把k阶二元推导序列(将初始序列视作0阶二元推导序列)的每一比特读取两次,再对其进行异或操作,最后将所计算的结果重新储存。也就是说,对于一个长度为n比特的二元序列,每计算其高一阶的二元推导需要进行大约3×n次数据存取操作和n次异或运算。所以,计算k阶二元推导的时间复杂度为O(nk)。此外,由于每高1阶二元推导的计算依赖于当前阶二元推导的结果,所以需要额外的O(n)大小的储存空间来保存二元推导的中间计算结果,即其空间复杂度为O(n)。
发明内容
记长度为n的初始二元序列为ε0ε1...εn-1。初始二元序列的1阶二元推导序列为该序列第i(0≤i≤n-2)个位置上的比特为;初始序列的2阶二元推导序列为该序列的第i(0≤i≤n-3)个比特为即化简后为类似地,可以得到初始序列的3阶二元推导序列的第i个比特为
在初始序列的各阶二元推导序列中,每一个比特事实上只和初始序列(我们认为初始序列为0阶二元推导序列)某些固定位置的比特有关。因此,如果能够很好地利用这种内在联系,便可以直接从初始序列出发,取出若干固定比特并计算出最终结果序列,而无需逐阶进行计算。
基于上述计算原理,本发明提出掩码方法用于快速计算高阶二元推导。
掩码是一种具有固定长度的二进制串,用于过滤出其它二进制串中某些指定的比特。用掩码MASK对二进制串A进行掩码操作,将结果赋给二进制串B,即B←A & MASK。B中保留了A中某些比特,而将A中的其它所有比特清零。保留的比特和MASK中为“1”的位置相对应,而A中和MASK中为“0”的位置相同的比特都在B中被清除。
对掩码方法的介绍以在32比特字长计算设备上的实现为例。取掩码(Mask)长度为32比特,为掩码赋初始值Mask←1000 0000 0000 0000 0000 0000 0000 0000(二进制),计算初始序列的1阶二元推导时,执行一次 操作,获得掩码Mask的值11000000 0000 0000 0000 0000 0000 0000(二进制)。这时,只需要将新掩码与初始序列由第i比特起的32比特进行逐比特的逻辑与运算,即可过滤出与1阶二元推导序列的第i比特相关的初始序列的第i比特和第i+1比特。同理,计算2阶二元推导序列时,进行第二次 操作,获得Mask的值为1010 0000 0000 0000 0000 0000 0000 0000(二进制),将新掩码与初始序列由第i比特起的32比特进行逐比特的逻辑与运算,即可过滤出与2阶二元推导序列的第i比特相关的初始序列的第i比特和第i+2比特,显然,掩码方法的计算结果与发明原理一致。由此可推出,获取更高阶掩码的方法是重复执行 操作。
取得掩码之后,将原始二元序列的各个子串与掩码进行逻辑与运算的结果保存在TempWord中,TempWord中就包含了与k阶二元推导序列中每一比特相关的原始二元序列中的几个对应比特,我们称这些比特为“有效比特”;称其它比特为“无效比特”。显然,根据掩码计算的特点,“有效比特”可能为“0”或者“1”,而“无效比特”都为“0”。根据发明原理中的描述,下一步则需要求出全部“有效比特”的异或值。
根据异或操作的真值表,一个比特与“0”异或的结果仍是其本身。所以,我们可以忽略“无效比特”,把TempWord的所有比特进行异或。容易得到,计算二元序列中所有比特的异或值等价于统计该二元序列中“1”的个数:当“1”的个数为奇数时,其异或值为1;否则,其异或值为0。利用这一特点,可以通过查表方式快速获取出二元序列中“1”的个数,进而求得其异或值。
根据上述原理,一种快速的二元推导检测实现方法,在字长为W比特的计算设备上,计算长度为n比特的二元序列的k(0≤k≤W-1)阶二元推导的处理步骤如下:
2 初始化统计量s为0;
3 根据二元推导的阶数k,获取其k阶掩码Maskk;
4.1 从当前位置获取当前字CurrentWord和紧接着的下一字NextWord;
4.2 对CurrentWord:NextWord这个双字,记当前位为其最高位(第2W-1位)重复下述步骤W次:
4.2.1 从当前位起,向低位读取长度等于掩码长度W比特的二元串TempWord;
4.2.2 将TempWord与Maskk进行逐位逻辑与运算,结果赋给TempWord;
4.2.3 统计TempWord中“1”的个数,把所得结果进行模2约减后加到统计量s中;
4.2.4 将步骤1.4.2中CurrentWord:NextWord的当前位向低位右移1位;
4.3 将步骤1.4中二元序列的当前位置右移W位;
5 计算统计值
6 使用标准余误差函数erfc(x)计算p-value:将的值赋给p-value;将p-value与显著性水平α比较,如果p-value≥α,说明初始序列通过k阶二元推导检测;否则,说明初始序列未通过二元推导检测。
附图说明
图132位计算设备中,k阶快速二元推导检测的实现方法流程图
图2两种方法消耗CPU时钟周期的对比图
具体实施方式
在字长为32比特的计算设备中,计算长度为n比特的二元序列的k(0≤k≤31)阶二元推导的处理步骤如下(流程图见图1):
2 初始化统计量s为0;
3 根据二元推导的阶数k,获取其k阶掩码Maskk;
4 设当前位置为初始二元序列的最高位。对于待测序列中的每一字长(32比特),重复下述步骤次:
4.1 从当前位置获取当前字CurrentWord和紧接着的下一字NextWord;
4.2 对CurrentWord:NextWord这个双字(约定其最高位为第63位,最低位为第0位),记其当前位为第63位(即最高位),重复下述步骤32次:
4.2.1 从当前位起,向低位读取长度等于掩码长度32比特的二进制串TempWord;
4.2.2 将TempWord与Maskk进行逐位逻辑与运算,结果赋给TempWord,即TempWord←TempWord&Maskk;
4.2.3 统计TempWord中“1”的个数,进行模2计算后加到统计量s中;
4.2.4 将步骤4.2中的当前位向低位右移1位。
4.3 将步骤4中的当前位置右移32比特。
5 计算统计值
6 使用标准余误差函数erfc(x)计算p-value, ,将p-value与显著性水平α比较,如果p-value≥α,则说明待测序列通过k阶二元推导检测。
其中,步骤3获取k阶掩码的方式为:
1 给初始掩码赋值(二进制);
2 设计数器i为0,重复下述操作k次:
2.1将Maski与Maski》1逐比特异或,结果记为Maski+1;
2.2 将i加1。
4.2.3 步骤中的统计TempWord中“1”的方法为:
1 建立长度为28的短整数型统计数组OcTable[256],数组中第i个位置储存“i”转化为二进制数之后其中“1”的个数;
2 初始化“1”总数计数器count为0;
3 初始化临时计数器TempOc为0;
4 TempWord由4个字节组成,记当前字节为TempWord最高位的字节,重复下述步骤4次:
4.1 读取当前字节,记为TempByte;
4.2 将OcTable[TempByte]的值累加到“1”总数计数器count上;
4.3 将TempWord中的当前字节向低位右移1字节;
5 最后得到的Count即为TempWord的二进制表示中“1”的个数。
采用上述快速计算方法,在32比特字长的计算设备中,最高可以直接计算出初始序列的31阶二元推导,且其处理速度基本等同于计算其一阶二元推导。计算一个比特长度为n的二元序列的31阶二元推导时,该方法需读取次32比特长的序列,进行次逻辑与运算,读取次频数统计表,进行n次模2计算,其时间复杂度为O(n)。跟原始方法相比,新方法的计算速度有了显著的提高,且存储空间开销明显降低。
为了说明新方法比原始方法计算效率提高的情况,现以在TMS320C672x DSP的仿真环境中对一个长度为106的二元初始序列计算其不同阶数的二元推导为例,统计并比较掩码方法与原始方法所使用的CPU时钟周期数,其仿真试验结果如表1所示。
表1 两种方法消耗CPU时钟周期数对比(初始二元序列的长度106)
由表1的对比可以看出,掩码方法比原始方法的计算效率有了大幅的提升。在计算3阶二元推导时,已经有了近10倍的提高;随着计算阶数的提高,效率提升效果愈发显著。特别地,计算初始序列的31阶二元推导时,使用掩码方法的性能比使用原始方法的性能提高了近100倍。
此外,由表1还可以看出,使用原始方法计算二元推导时,随着推导阶数的增大,所消耗的CPU时钟周期有了大幅的增加;而使用掩码方法计算二元推导时,所消耗的CPU时钟周期并没有随着推导阶数的增大而显著增大,维持在一个常量附近。
掩码方法的这种显著的计算优势可以从图2更直观地表现出来。使用快速的掩码计算方法,不同阶数二元推导的计算量基本保持在同一个量级的时间复杂度;而使用原始方法时,不同阶数二元推导的计算量则随着计算阶数的增大呈明显的线性增长趋势。
Claims (6)
1 一种快速的二元推导检测实现方法,在字长为W比特的计算设备上,计算长度为n比特的二元序列的k(0≤k≤W-1)阶二元推导的处理步骤如下:
1.2 初始化统计量s为0;
1.3 根据二元推导的阶数k,获取其k阶掩码Maskk;
1.4.1 从当前位置获取当前字CurrentWord和紧接着的下一字NextWord;
1.4.2 对CurrentWord:NextWord这个双字,记当前位为其最高位,重复下述步骤W次:
1.4.2.1 从当前位起,向低位读取长度等于掩码长度W比特的二元串TempWord;
1.4.2.2 将TempWord与Maskk进行逐位逻辑与运算,结果赋给TempWord;
1.4.2.3 统计TempWord中“1”的个数,把所得结果进行模2约减后加到统计量s中;
1.4.2.4 将步骤1.4.2中CurrentWord:NextWord的当前位向低位右移1位;
1.4.3 将步骤1.4中二元序列的当前位置右移W位;
1.5 计算统计值
1.6 使用标准余误差函数erfc(x)计算p-value:将的值赋给p-value;将p-value与显著性水平α比较,如果p-value≥α,初始序列通过k阶二元推导检测;否则,初始序列未通过二元推导检测。
3 如权利要求1所述的一种快速的二元推导检测实现方法,其特征在于:其所述步骤1.4.2.3中,统计TempWord中“1”的个数的方法如下:
3.1 建立长度为28的短整数型统计数组OcTable[256],数组中第i个位置储存“i”转化为二进制数之后其中“1”的个数;
3.2 初始化“1”总数计数器count为0;
3.3 初始化临时计数器TempOc为0;
3.4.1 读取当前字节,记为TempByte;
3.4.2 将OcTable[TempByte]的值累加到“1”总数计数器count上;
3.4.3 将TempWord中的当前字节向低位右移1字节;
3.5最后得到的Count即为TempWord的二进制表示中“1”的个数。
4 如权利要求1所述的一种快速的二元推导检测实现方法,其特征在于:如果若初始序列不是二元序列,首先需要将其转化为等价的二元序列。
5 如权利要求1所述的一种快速的二元推导检测实现方法,其特征在于:对于字长为W比特的计算设备,直接计算初始二元序列最高W-1阶的二元推导。
6 如权利要求1所述的一种快速的二元推导检测实现方法,其特征在于:当需要在字长为W比特的计算设备中计算初始二元序列的高于W-1阶的二元推导时,需要通过适当扩展掩码的长度,采用双字、四字,或其它类似的数据结构来表示掩码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101789490A CN101452377A (zh) | 2007-12-07 | 2007-12-07 | 一种快速的二元推导检测实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101789490A CN101452377A (zh) | 2007-12-07 | 2007-12-07 | 一种快速的二元推导检测实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101452377A true CN101452377A (zh) | 2009-06-10 |
Family
ID=40734628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101789490A Pending CN101452377A (zh) | 2007-12-07 | 2007-12-07 | 一种快速的二元推导检测实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101452377A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861121A (zh) * | 2020-12-23 | 2021-05-28 | 工业信息安全(四川)创新中心有限公司 | 一种块内最大1、0游程检测合并优化实现方法及装置 |
-
2007
- 2007-12-07 CN CNA2007101789490A patent/CN101452377A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861121A (zh) * | 2020-12-23 | 2021-05-28 | 工业信息安全(四川)创新中心有限公司 | 一种块内最大1、0游程检测合并优化实现方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ichihara et al. | Compact and accurate digital filters based on stochastic computing | |
Herman | Probabilistic self-stabilization | |
Ryabko et al. | Compression-based methods of statistical analysis and prediction of time series | |
CN105183424B (zh) | 一种具有高精度低能耗特性的固定位宽乘法器 | |
TWI783295B (zh) | 乘法器及乘法運算方法 | |
CN103236846B (zh) | 一种工业实时数据压缩方法及装置 | |
AU2021200063B2 (en) | Systems and computer-implemented methods for generating pseudo random numbers | |
CN100542029C (zh) | 伪随机序列发生装置 | |
CN102857238B (zh) | 基于求和阵列的深空通信中ldpc编码器和编码方法 | |
CN102201882A (zh) | 一种线性分组码编码参数的盲识别方法 | |
CN102736892A (zh) | 一种非线性伪随机序列发生器 | |
CN101452377A (zh) | 一种快速的二元推导检测实现方法 | |
CN109033596A (zh) | 基于fpga的并行伪随机序列发生器设计方法 | |
CN110825346B (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN103716149A (zh) | 基于混沌网络的高速随机数产生系统 | |
Ryabko et al. | “Book stack” as a new statistical test for random numbers | |
CN111142357A (zh) | 时间数字转换器延迟链内插的多沿变位置编码方法 | |
CN1697366B (zh) | 可控自然数混沌密码序列产生方法及数字芯片核 | |
Ackermann et al. | Parallel random number generator for inexpensive configurable hardware cells | |
CN109460533B (zh) | 一种提高gemm计算性能的方法及装置 | |
Medvedeva et al. | Fast enumeration algorithm for words with given constraints on run lengths of ones | |
CN1230987C (zh) | 码生成电路 | |
CN118337224B (zh) | 基于高层次综合的qc-ldpc编码器、通讯设备及存储产品 | |
CN113296739A (zh) | 一种基于冗余odds数的十进制6:3压缩器结构 | |
CN104980167A (zh) | 基于求和阵列的cdr中qc-ldpc并行编码器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090610 |