用于生成随机数的方法及其相关产品与流程

文档序号:32437473发布日期:2022-12-06 19:49阅读:57来源:国知局
1.本披露一般地涉及随机数领域。更具体地,本披露涉及一种用于生成随机数的装置、集成电路芯片、板卡、电子设备和方法。
背景技术
::2.在类似于统计应用、试验测试等多个场景中,随机数有着广泛的应用基础。随着统计或测试的数据量增加,对生成随机数的数据量大小和生成效率也提出更高的要求。通常,随机数的生成算法中涉及大量的数据迭代运算,这就要求生成随机数的硬件架构能够适应这样的运算要求。然而,在现有的随机数生成方式中,硬件架构并不支持流水操作并且由此导致随机数的生成效率相对较低。技术实现要素:3.为了至少解决上述现有技术中存在的问题,本披露提供一种以流水方式生成随机数的方案。本披露的方案可以在包括增强硬件的处理性能、减小功耗、提高计算操作的执行效率和避免计算开销等多个方面获得技术优势。4.在第一方面中,本披露提供一种用于生成随机数的装置,包括:指令译码单元,其配置成接收随机数指令并且对所述随机数指令进行译码;运算单元,其配置成根据所述译码后的随机数指令来执行基于单个种子或多个种子的随机数生成操作,其中针对于每个所述种子,所述随机数生成操作包括以流水方式执行的生成操作和更新操作,其中所述生成操作用于生成随机数并且所述更新操作用于更新状态向量;以及存储器,其配置成根据译码后的所述随机数指令来设置状态空间,其中所述状态空间配置成存储用于生成所述随机数的状态向量并且接受来自运算单元对所述状态空间的状态向量更新,其中所述状态空间的大小设置成:在单个种子下,支持以流水方式执行所述生成操作和更新操作;或者在多个种子下,支持以流水方式执行各个种子的随机数生成操作。5.在第二方面中,本披露提供一种集成电路芯片,其包括如上所述并且将在下面多个实施例中描述的用于生成随机数的装置。6.在第三方面中,本披露提供一种板卡,其包括如上所述并且将在下面多个实施例中描述的集成电路芯片。7.在第四方面中,本披露提供一种电子设备,其包括如上所述并且将在下面多个实施例中描述的集成电路芯片。8.在第五方面中,本披露提供一种用于生成随机数的方法,包括:接收随机数指令并且对所述随机数指令进行译码;根据译码后的所述随机数指令来设置状态空间,其中所述状态空间配置成存储用于生成所述随机数的状态向量并且接受对所述状态空间的状态向量更新;以及根据所述译码后的随机数指令来执行基于单个种子或多个种子的随机数生成操作,其中针对于每个所述种子,所述随机数生成操作包括以流水方式执行的生成操作和更新操作,其中所述生成操作用于生成随机数并且所述更新操作用于更新状态向量,其中所述状态空间的大小设置成:在单个种子下,支持以流水方式执行所述生成操作和更新操作;或者在多个种子下,支持以流水方式执行各个种子的随机数生成操作。9.通过利用本披露的用于生成随机数的装置、集成电路芯片、板卡、电子设备和方法,可以实现硬件以流水的方式来执行随机数的生成操作。由此,本披露的方案可以借助于流水操作来高效地生成随机数,从而提升硬件的整体性能并减小计算开销。进一步,本披露的方案不仅支持单个种子下的随机数生成操作,还支持多个种子下的随机数生成操作,从而随机数的生成方式更为灵活并且效率更高。特别地,在多种子的随机数生成操作中,硬件的流水操作性能将得到进一步提升。附图说明10.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:11.图1是示出根据本披露实施例的用于生成随机数的装置的框图;12.图2是示出根据本披露一个实施例的用于生成随机数的初始化过程的示意图;13.图3是示出根据本披露又一个实施例的用于生成随机数的初始化过程的示意图;14.图4是示出根据本披露一个实施例的用于生成随机数的状态空间变化示意图;15.图5a是示出根据本披露又一个实施例的用于生成随机数的部分状态空间变化的示意图;16.图5b是示出根据本披露又一个实施例的用于生成随机数的另一部分状态空间变化的示意图;17.图6是示出根据本披露实施例的用于生成随机数的方法的流程图;18.图7是示出根据本披露实施例的单种子模式下生成随机数的方法的流程图;19.图8是示出根据本披露实施例的双种子模式下生成随机数的方法的流程图;20.图9是示出根据本披露实施例的一种组合处理装置的结构图;以及21.图10是示出根据本披露实施例的一种板卡的结构示意图。具体实施方式22.本披露提供一种以并行流水或乒乓方式来高效生成随机数的方案。为此,在一个实施例中,本披露提出对存储用于生成随机数的状态向量的状态空间进行有效设置,从而使得该状态空间满足流水操作时的硬件要求。特别地,在利用单个种子和多个种子来生成随机数的场景中,本披露提出将状态空间进行扩展,以便使其支持在前述的两种场景中,以流水方式来执行生成随机数过程中的生成操作和更新操作。结合对状态空间的改进,本披露的方案还提出利用解析后得到的多条微指令的随机数指令来执行前述的生成操作和更新操作。借助于本披露的硬件设置和随机数指令,可以高效地生成随机数,从而提升计算系统的整体性能并且减小了生成随机数的开销。23.下面将结合附图对本披露实施例中的技术方案进行清楚和完整地描述。可以理解的是下文所描述的实施例仅仅是本公开的一部分实施例,而并不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露旨在保护的范围。24.图1是示出根据本披露实施例的用于生成随机数的装置100的框图。如图1所示,本披露的装置100包括指令译码单元101、运算单元102和存储器103,三者相互交互和配合,从而实现以流水方式来生成随机数。在一个实施场景,该指令译码单元可以配置成接收随机数指令并且对该随机数指令进行译码。在一个实施例中,本披露的随机数指令根据实现场景的不同可以包括以下中的一项或多项:生成随机数的数目、状态空间的大小和地址、用于生成随机数的一个或多个种子信息、用于拼接随机数的拼接参数和输出随机数的地址等。在一个实施例中,随机数指令可以是单个的指令,并且在经指令译码单元解析后得到多个或多条微指令。在另一个实施例中,种子信息可以包括具体的种子(例如32位长的初始数值)或者指示种子是否来自于特殊功能寄存器的信息。关于前述的用于拼接随机数的拼接参数,在应用两个种子的情形中,其可以包括存储与第一种子关联的随机数的首地址以及地址偏移(也即利用第一种子生成所有随机数后的存储地址跨度)。由此,运算单元可以确定用于存储与第二种子关联的随机数的首地址,也即前述第一种子的首地址加上其地址偏移。25.在一个实施场景中,运算单元可以配置成根据译码后的随机数指令来执行基于单个种子或多个种子的随机数生成操作。具体地,针对于每个种子,本披露的随机数生成操作可以包括以流水方式执行的生成操作和更新操作。这里,生成操作可以用于生成随机数并且更新操作可以用于更新状态向量。根据不同的应用场景,本披露的运算单元可以具有不同的实现方式。当应用于人工智能领域的硬件架构时,本披露的运算单元可以实现为人工智能处理器或处理器中的计算核。26.在一个实施场景中,存储器可以配置成根据译码后的随机数指令来设置状态空间。在本披露的上下文中,状态空间可以配置成存储用于生成随机数的状态向量并且接受来自运算单元对状态空间的状态向量更新。进一步,本披露的状态空间的大小可以设置成使得在单个种子下,支持以流水方式执行所述生成操作和更新操作;或者在多个种子下,支持以流水方式执行各个种子的随机数生成操作。在一个实施方式中,本披露的状态空间的大小可以通过软件来配置。通过软件来进行配置状态空间大小的配置,可以使得状态空间大小的设置更为灵活和方便,从而也使得状态空间可以更好地支持本披露随机数生成方案在单个种子和多个种子模式下的流水操作。27.在生成随机数的过程中,运算单元可以从状态空间(其可以视为一个循环利用的存储空间)读取至少一个状态向量来生成随机数,并且可以通过基于所述至少一个状态向量的更新操作来生成更新后的状态向量。进一步,可以利用该更新后的状态向量来对状态空间进行更新。下面将结合前文提到的随机数指令来对本披露的随机数生成操作进行详细的描述。28.如前所述,本披露的随机数指令可以实现为单个指令并且在经指令译码单元进行解析后,可以得到用于执行流水操作的多条微指令。根据该多条微指令,运算单元可以配置成以循环移位的方式沿状态空间来执行生成随机数的生成操作和更新状态空间的更新操作。具体地,根据微指令,运算单元可以利用状态空间中划分的多段空间区段中的一段空间区段上存储的状态向量来执行随机数的生成操作,以生成预定部分数目的随机数。接着,可以利用前述空间区段上存储的状态向量来生成新的状态向量,并且将该新的状态向量存储于状态空间的多段空间区段中的另一段空间区段上。为了实现流水操作并且减小数据之间的地址依赖性,本披露提出将前述两段空间区段布置的足够远,并且在状态向量更新后立即利用与前述两个空间区段的不同区段来执行生成随机数操作,从而最小化运算单元的等待时间并由此提升运算单元在生成随机数方面的运算效率。29.在一个实施方式中,用于随机数生成的状态空间可以实施为一个循环利用的存储空间。由此,上述的多个空间区段根据要执行的生成操作和更新操作而可变地操作于读取空间区段或写入空间区段。换句话说,随着生成操作和更新操作的迭代循环执行,先前用于读取的空间区段在后续的操作中转换成写入区段,以用于新的状态向量的写入,即执行本披露的状态空间的更新。进一步,为了实现随机数的生成操作和状态向量的更新操作以流水方式执行,可以在状态空间中将前述的读取空间区段和写入空间区段设置成具有预定的地址间隔,以最小化后续生成操作和更新操作中状态向量之间的地址依赖性。30.在一个实施场景中,为了实现随机数指令的连续调用和执行,本披露的指令译码单元可以配置成向存储器中的状态空间输出状态指针,该状态指针可以指示用于生成操作的第一状态向量在所述状态空间中的位置(如稍后结合附图描述的y[i+n]在状态空间中的坐标)和用于更新操作的第一更新状态向量在状态空间中的位置(如稍后结合附图描述的x[i]在状态空间中的坐标)。基于该状态指针,运算单元可以知晓前次执行随机数指令后第一状态向量和第一更新状态向量在状态空间中的位置,从而可以在该位置起执行下一随机数指令的生成操作和更新操作。[0031]在一个实施场景中,本披露的状态空间可以包括n个连续分布的读取空间区段和n个连续分布的写入空间区段,并且n个读取空间区段和所述n个写入空间区段在流水操作中形成对应关系,其中n是大于或等于2的正整数。基于前述的预设条件(例如通过随机数指令来配置),在流水操作过程中,运算单元可以配置成根据预生成的随机数的数目循环执行以下的操作,其中i=1,…n:[0032]在用于生成随机数的生成操作中,运算单元可以从第i读取空间区段中读取多个状态向量,以生成对应的第i多个随机数;以及[0033]在用于更新状态空间的更新操作中,运算单元可以根据第i读取空间区段中的多个状态向量来生成用于更新状态空间的多个状态更新向量,并且将该多个状态更新向量写入所述第i写入空间区段。[0034]如前所述,本披露的运算单元可以根据随机数指令来生成预定数目的随机数。当随机数指令由指令译码单元解析成多条微指令(包括一个或多个生成微指令和更新微指令)时,则运算单元可以根据不同的微指令组合来分若干次生成部分数目的随机数并且更新部分数目的状态向量,直至最终生成预期数目的随机数。具体来说,本披露的运算单元可以根据一条生成微指令来生成部分数目的随机数,并且根据一条更新微指令来更新部分数目的状态向量。或者,运算单元可以根据一条生成微指令来生成部分数目的随机数,并且根据多条更新微指令来分别更新部分数目的状态向量。附加地,运算单元可以根据多条生成微指令来分别生成部分数目的随机数,并且根据一条更新微指令来更新部分数目的状态向量。此处关于不同微指令的组合使用方式仅仅是示例性的和概括性的,稍后将结合附图对该组合操作方式进行更为具体的描述。[0035]为了最大程度地减小微指令的读操作(如从状态空间读取状态向量以生成随机数)和写操作(如向状态空间写入新的状态向量以更新状态空间)在地址上的交叠,本披露提出在每条微指令中包括指示针对状态空间的读取操作或写入操作的地址范围项,并且对于地址范围项存在地址交叠的两条连续微指令,运算单元将被配置成仅在执行完其中一条微指令的读取操作或写入操作后,才执行下一条微指令的读取操作或写入操作。[0036]在一个实施例中,在对状态空间的初始化过程中,本披露提出将状态空间划分成大小相同的第一状态子空间和第二状态子空间。在该情形中,运算单元可以配置成利用存储于第一状态子空间中的状态向量来执行针对第二状态子空间的更新操作,以生成用于第二状态子空间的所有状态向量。当以前文的n来表示状态空间中的第一状态子空间的状态向量数目(此时n表示第一状态子空间中的n个连续区段,每个区段包括一个状态向量),则通过利用第一状态子空间中的0~n-1总计n个状态向量来仅执行状态空间的更新操作以生成新的n个状态向量,从而可以得到包括0~2n-1总计n个状态向量的状态空间。在生成第二状态子空间的所有状态向量中,运算单元还可以配置成顺序地执行多条微指令,以生成用于更新第二状态子空间的所有状态向量(即前例中从n~2n-1共计n个状态向量),其中每条微指令的执行生成对应数目的状态向量。[0037]如前所述,本披露的方案提供了单种子模式和多种子模式的随机数生成方案。在单个种子下,本披露的运算单元可以配置成利用单个种子生成的状态向量来执行前述的生成操作以生成所述随机数,并且执行前述的更新操作以更新状态空间的相关状态向量。具体地,在单个种子的情形下,运算单元可以配置成根据多条微指令来连续地交替执行生成所述随机数的生成操作和用于更新状态空间的更新操作,直至生成预定数目的随机数。在一个实施场景中,每次生成操作生成部分数目的随机数并且每次更新操作更新所述状态空间中对应数目的状态向量。[0038]替代地或附加地,在多个种子的情形下,每个种子可以具有其关联的状态空间,也即针对每个种子来设置其状态空间。在该情形下,运算单元可以配置成分别利用多个种子中的各个种子生成的状态向量来执行与各个种子关联的生成操作,以生成与各个种子关联的所述随机数,并且执行与各个种子关联的更新操作以更新与各个种子关联的状态空间的相关状态向量。当多个种子包括第一种子和第二种子时,本披露的存储器设置有与第一种子和第二种子各自关联的所述状态空间。基于此,在执行用于生成随机数的流水操作中,本披露的运算单元可以配置成根据随机数指令来循环执行如下操作,直至生成预定数目的随机数。具体来说,运算单元可以利用第一种子关联的状态空间来生成部分随机数,并且更新对应数目的状态向量。接着,运算单元可以利用第二种子关联的状态空间来生成部分随机数,并且更新对应数目的状态向量。通过反复迭代地执行第一种子关联的生成操作和更新操作以及第二种子关联的生成操作和更新操作,本披露的方案明显提升了生成预期数目随机数的速度和效率,实现了硬件的流水执行,从而提升了硬件的整体性能。[0039]图2是示出根据本披露一个实施例的用于生成随机数的初始化过程的示意图。为了便于理解,图中以直线表示设置于图1中存储器内的状态空间的大小,而以圆点表示状态空间中的状态向量。如前所述,状态向量用于一定数目的随机数的生成和状态向量的更新。进一步,为了实现硬件的流水执行,本披露提出对状态空间进行扩展,例如将原有支持n个状态向量的状态空间扩展到支持2n个状态向量的状态空间。[0040]如图2中上部所示,在初始化过程中,根据译码后的随机数指令,运算单元可以利用种子来生成包含n个状态向量的状态空间。例如,可以生成n=351个(即从第0个~第350个)状态向量的状态空间。当一个状态向量占用4个字节时,则该n=351的初始状态空间占用1404个字节。在使用例如“用于图形处理器动态生成器的梅森旋转”(mersennetwisterforgraphicprocessordynamiccreator,“mtgpdc”)随机数生成算法时,图2中还示出用于生成更新状态空间的三个状态向量x[i]、x[i+1]和x[i+m],三者通过如下操作来生成用于更新的状态向量x[i+n]:[0041]t=x[i+1]^(x[i]|mask);[0042]t=t^(t《《sh1);[0043]u=t^(x[i+m]》》sh2);[0044]x[i+n]=u^(r_table[u&0xf])。[0045]通过反复执行例如如上的操作,可以将0~n-1的状态空间扩展到如图2下部所示出的0~2n-1的状态空间,从而完成本披露的初始化过程。在一些实施方式中,0~n-1的状态空间的初始化可以由通用处理器(“cpu”)来执行,而n~2n-1的状态空间的初始化可以由智能处理器来执行。仍以上述的n=351为例,当生成351个状态向量后,可以利用四条微指令来完成将状态向量从n个扩展到2n个。具体地,以第一条微指令来更新96个状态向量;接着,以第二条微指令来更新(n-m-96)个状态向量;又接着,更新min(96,m)个状态向量,其中如果m≤96个状态,则更新m个状态向量,从而完成初始化n~2n-1个状态向量;反之,当m》96时,则存在第四条微指令,其用于更新(m-96)个状态向量,从而完成初始化n~2n-1个状态向量。[0046]可以理解的是上述的初始化过程适用于本披露的单个种子模式或多个种子模式下的初始化过程。特别地,对于多个种子的模式,本披露的方案提出针对多个种子中的每个种子来初始化n个状态,并且接着例如按照如上所述方式将n个状态扩展到2n个状态,从而将包含n个状态向量的状态空间扩展到包含2n个状态向量的状态空间。在一个实施场景中,上述的初始化过程适用于处理或运算能力相对较小的处理器核(简称“小核”)的方案。下面结合图3来描述处理或运算能力相对较大(也即在每个时钟周期执行相对较多的运算操作)的处理器核(简称“大核”)下的初始化过程。[0047]图3是示出根据本披露又一个实施例的用于生成随机数的初始化过程的示意图,也即上文提到的“大核”方案的初始化过程。需要注意的是,0~n-1个状态向量的初始化过程与前文的“小核”方案类似,其例如可以由片外系统(如cpu)来生成。接着,从如图3的上部所示的具有0~n-1个状态向量的状态开始,首先利用随机数算法(如前面的“mtgpdc”)中的更新操作来生成(n-m)个状态向量,从而从n开始更新(n-m)个状态向量,如图3中部从“n”至“2n-m-1”的带箭头的线段所示出的。此后,再接着更新m个状态,如图3下部从“2n-m-1”至“2n-1”的带箭头的线段所示出的。在一个实施场景中,前述从“n”至“2n-m-1”和从“2n-m-1”至“2n-1”的状态向量的初始化可以通过两条微指令来实现,从而最终将包含n个状态向量的状态空间扩展到具有2n个状态向量的状态空间,以支持后续的生成随机数的流水操作。[0048]图4是示出根据本披露一个实施例的用于生成随机数的状态空间变化示意图。为了便于理解本披露的生成操作和更新操作,图中示出状态空间的第①个~第⑦个状态,其中标识出用于更新状态向量的状态向量x[i]、x[i+1]和x[i+m]和用于生成随机数的状态向量y[i+m-1]和y[i+n]在状态空间中的位置(或者说空间地址)变化。具体地,如前所述,可以基于前述的“mtgpdc”随机数生成算法,通过利用图中所示状态向量y[i+(m-1)]和y(i+n)来执行如下操作,以生成随机数o[i]:[0049]t=y[i+(m-1)]^(y[i+(m-1)]);[0050]t=t^(t》》8);[0051]o[i]=y[i+n]^t_table[t&0x4]。[0052]接着,可以再基于前述的“mtgpdc”随机数生成算法从状态空间中分别读取前述3个状态向量x[i]、x[i+1]和x[i+m],以生成用于更新的状态向量y(i+n),其中i、i+1、i+m为该状态向量到状态空间的首地址的距离(即每个状态向量的地址指针)。可以看出,本披露为了实现随机数的流水生成,提出了先执行生成随机数的生成操作,并且接着再执行更新状态向量的更新操作。在一个实施场景中,考虑到运算单元的处理能力和对数据的访存性能,针对于预定(或者称目标)数目的随机数,本披露提出基于多条微指令来交替执行生成操作和更新操作,从而生成预定数目的随机数。[0053]结合上述内容来具体参考图4,在状态空间的第①状态中,此时状态空间已经完成如前文所述的初始化过程,即从0~n-1个状态向量扩展生成n~2n-1个状态向量,从而获得大小为0~2n-1的状态空间。接着,在所述状态空间的第②状态中,运算单元可以利用状态向量y[i+m-1]和y[i+n]来生成96个随机数。为此,第①状态中的状态向量y[i+m-1]和y[i+n]在生成随机数的过程中不断向右移,直至状态向量y[i+n]到达状态空间中“n+96”的空间位置。在生成96个随机数后,接着运算单元可以利用状态向量x[i]、x[i+1]和x[i+m]来生成96个新的状态向量,以更新状态空间,如图中状态空间的第③状态中箭头指示的0~96的区段所示。[0054]如前所述,本披露的状态空间可以分为多个连续分布的读取空间区段和写入空间区段。鉴于此,就图4所示例子而言,状态向量y[i+m-1]和y[i+n]在状态空间从第②状态到第③状态期间所移动经过的区段可以视为前述的读取空间区段,而第③状态中所示出的更新96个状态的区段也即前述的写入空间区段。[0055]接着,在第④状态中,运算单元可以接着沿空间状态向右顺序读取y[i+m-1]和y[i+n],以生成96个随机数。由此,第③状态中的y[i+m-1]将从空间位置“96+m-1”到达第④状态中的空间位置“192+m-1”。相应地,第③状态中的y[i+n]将从空间位置“n+96”到达第④状态中的空间位置“n+192”。接着,与第③状态类似,在第⑤状态中,运算单元可以利用x[i]、x[i+1]和x[i+m]来生成96个新的状态向量,以更新状态空间,如第⑤状态中箭头指示的“96~192”的区段所示。与上文描述类似,此处的“96~192”区段也即本披露上下文的写入空间区段。[0056]与上面的第④状态和第⑤状态相类似,在第⑥状态和第⑦状态中,运算单元可以生成159个随机数,并且更新(n-m-192)个状态向量,也即第⑦状态中箭头指示的“192~(n-m)”的区段所示出的。尽管图4中未进一步示出,可以理解的是此处对于更新(n-m-192)个状态向量,可以根据(m-1)与96的数值比较来采取不同的实现方式。具体地,当(m-1)《=96时,则运算单元可以通过一条微指令来更新(m-1)个状态向量(由此x[i+1]循环返回至状态空间“0”位置处),并且接着利用一条微指令来更新1个状态(由此x[i]循环返回至状态空间“0”位置处)。相对地,当m-1》96时,则可以利用三条微指令来完成更新操作,例如首先更新96个状态,接着更新m-1-96个状态(由此x[i+1]循环返回至状态空间“0”位置处),并且最后更新1个状态(由此x[i]循环返回至状态空间“0”位置处)。[0057]通过利用上面结合图4所描述的本披露的随机数方案,可以克服现有对存储器的读和写操作期间的空闲等待时间(例如更新后需等待一定时间才能读取),从而可以利用该时间来执行生成随机数的操作。具体地,本披露通过扩展状态空间并且将其划分成克服地址依赖性的不同访存区段,并且通过先执行生成操作而后执行更新操作,从而实现硬件流水并且高效地生成随机数。[0058]图5a是示出根据本披露又一个实施例的用于生成随机数的部分状态空间变化的示意图,而图5b是示出根据前述实施例的用于生成随机数的另一部分状态空间变化的示意图。在一个实施方式中,图5a和图5b中所示出的生成操作和更新操作可以由前述的“大核”来执行。相较而言,图4中所示出的生成操作和更新操作可以由前述的“小核”来执行。[0059]如图5a所示,在第①和第②状态中,运算单元可以利用两条微指令来首先生成192个随机数,并且接着更新状态空间中的192个状态向量,其位置如图第②状态中的箭头所示区段。接着,运算单元可以顺序执行四条微指令,从而在第③状态中生成159个随机数,并且在第④状态到第⑥状态中分别更新(n-m-192)、(m-1)和1个状态向量。[0060]接着,如图5b所示,在第⑦和第⑧状态中,运算单元接着可以生成192个随机数,并且接着更新192个状态向量。与上文描述相同,运算单元可以借助于两条微指令来分别完成前述操作。接着,在第⑨状态到第状态期间,运算单元可以依次完成生成(160-m)个随机数,生成(m-1)个随机数,以及更新159个状态向量的操作。[0061]鉴于在前已经结合图4对用于生成随机数的状态向量和用于更新状态空间的状态向量在状态空间中的地址变化进行了描述,此处为了简明的目的而不再赘述。另外,尽管图4和图5以n=351(即2n=702)为例来描述本披露的生成操作和更新操作,本领域技术人员基于本披露的教导可以理解此处n的数值可以依硬件(如运算单元和存储器)的处理能力来进行改变。进一步,用于执行生成操作和更新操作的微指令及其数目也可以根据硬件架构来进行相应的适配。[0062]图6是示出根据本披露实施例的用于生成随机数的方法600的流程图。基于前文结合图1-图5对本披露方案的描述,本领域技术人员可以理解图6所示方法可以由图1所示的装置100来实现,因此关于装置100的操作所进行的描述也同样适用于方法600的步骤操作,并且相同的内容将不再赘述。[0063]如图6所示,在步骤s602处,接收随机数指令并且对该随机数指令进行译码。这里,随机数指令包括关于生成随机数的各类信息,并且译码可以涉及对随机数指令的解析,从而可以获得多条微指令。接着,在步骤s604处,可以根据译码后的所述随机数指令来设置状态空间,其中状态空间配置成存储用于生成随机数的状态向量并且接受对状态空间的状态向量更新。这里,状态空间可以具有前文结合图4、图5a和图5b所描述的示例形式。最后,在步骤s606处,可以根据译码后的随机数指令来执行基于单个种子或多个种子的随机数生成操作,其中针对于每个所述种子,随机数生成操作包括以流水方式执行的生成操作和更新操作,其中生成操作用于生成随机数并且所述更新操作用于更新状态向量。在一个实施例中,状态空间的大小可以设置成在单个或多个种子下支持以流水方式执行所述生成操作和更新操作。[0064]图7是示出根据本披露实施例的单种子模式下生成随机数的方法700的流程图。为了便于理解和讨论该流程,图中还示意性的示出单个种子下的状态空间,其包括0~2n-1个状态向量。[0065]如图7所示,在步骤s702处,可以首先利用种子来生成n个状态向量,从而初始化状态空间中的n个状态。接着,在步骤s704处,可以利用随机数生成算法中的更新操作来更新状态,从而将0~n-1的状态子空间扩展到n~2n-1的状态子空间,由此得到具有2n个状态向量的状态空间。接着,可以在步骤s706处和s708处执行前述的生成操作和更新操作,以生成随机数并且更新状态空间。当还未生成预定数目的随机数时,则可以接着执行步骤s710和s712,以接着生成预定部分数目的随机数。类似地,还可以反复执行生成操作和更新操作,直到生成预定数目的随机数。[0066]图8是示出根据本披露实施例的双种子模式下生成随机数的方法800的流程图。基于前文的描述,可以理解的是图8所示方法800可以由图1所示的装置100来执行,因此前文对装置100及其生成操作和更新操作的描述也同样适用于方法800的下面描述。另外,为了便于描述,图8中还示出了与第一种子和第二种子各自相关的状态空间,并且每个状态空间具有容纳0~2n-1共2n个状态向量。[0067]如图8所示,在步骤s802和s804处,可以初始化第一种子状态空间中的n个状态向量,并且接着仅执行更新操作以将n个状态向量扩大到2n个状态向量。类似地,在步骤s806和s808处,也执行关于第二种子的状态空间的初始化操作,以得到包含2n个初始状态的状态向量。[0068]接着,在步骤s810和s812处,分别执行关于第一种子的生成随机数的生成操作和用于更新状态空间的更新操作。在执行完第一种子后,接着在步骤s814和s816处执行关于第二种子的生成随机数的操作和更新状态空间的操作。假定此时还未达到与第一种子和第二种子关联的随机数的预定数目,可以接着在步骤s818和s820处,接着生成部分数目的随机数并且相应地更新相同部分数目的状态向量。同样地,在步骤s822和s824处,接着执行关于第二种子的生成随机数的操作和更新状态空间。当仍未达到预定数目的随机数时,关于第一种子和第二种子的生成随机数和更新状态空间的操作将仍交替执行,直到生成预定数目的随机数为止。[0069]在一个实施场景中,当针对于第一种子和第二种子同时执行生成随机数的操作时,可以在本披露的随机数指令中设置与第一种子关联的随机数的存储地址。这样,运算单元就可以在生成与第二种子关联的随机数时,根据前述的存储地址将与第二种子关联的随机数放置在与第一种子关联的随机数之后。特别地,由于运算单元会以乒乓流水的方式来生成第一种子和第二种子的随机数,因此可以提前基于第一种子随机数的存储地址和生成的数目来计算出用于存储第二种子所生成的随机数的首地址。[0070]在一个实施场景中,对于后续将不再使用的种子,本披露的随机数指令中也可以包含关于启用或禁用种子的设置项。基于此,在启用时(例如将启用标志位设为1),可以对该种子的状态空间进行初始化(例如从n个状态扩大至2n个状态);相对地,当禁用时(例如将禁用标志位设为1),则在利用该种子生成预定数目的随机数后,删除与该种子相关的设置和状态空间。在另一个实施场景中,还可以在随机数指令中设置跳过的状态数。基于此,当执行基于第一种子和/或第二种子的生成随机数的操作中时,可以跳过或放弃状态空间中的一些状态向量,例如生成用于更新的状态向量,但并不向状态空间写入,直到获得预期位置的状态向量,并且在该位置开始执行生成操作和更新操作。[0071]图9是示出根据本披露实施例的一种组合处理装置900的结构图。如图9中所示,该组合处理装置900包括计算处理装置902、接口装置904、其他处理装置906和存储装置908。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置910,该计算装置可以配置用于执行本文结合附图1-图8所描述的用于生成随机数的生成操作和用于更新状态空间的更新操作。[0072]在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。[0073]在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(centralprocessingunit,cpu)、图形处理器(graphicsprocessingunit,gpu)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。[0074]在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。[0075]在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。[0076]附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。[0077]在一些实施例里,本披露还公开了一种芯片(例如图10中示出的芯片1002)。在一种实现中,该芯片是一种系统级芯片(systemonchip,soc),并且集成有一个或多个如图9中所示的组合处理装置。该芯片可以通过对外接口装置(如图10中示出的对外接口装置1006)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如dram接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡或一种电子设备,其包括上述的芯片封装结构。下面将结合图10对该板卡进行详细地描述。[0078]图10是示出根据本披露实施例的一种板卡1000的结构示意图。如图8中所示,该板卡包括用于存储数据的存储器件1004,其包括一个或多个存储单元1010。该存储器件可以通过例如总线等方式与控制器件1008和上文所述的芯片1002进行连接和数据传输。进一步,该板卡还包括对外接口装置1006,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1012(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准pcie接口等。[0079]在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(microcontrollerunit,mcu),以用于对所述芯片的工作状态进行调控。[0080]根据上述结合图9和图10的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。[0081]根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。[0082]需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。[0083]在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。[0084]在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。[0085]在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。[0086]在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如cpu、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistiverandomaccessmemory,rram)、动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)、增强动态随机存取存储器(enhanceddynamicrandomaccessmemory,edram)、高带宽存储器(highbandwidthmemory,hbm)、混合存储器立方体(hybridmemorycube,hmc)、rom和ram等。[0087]依据以下条款可更好地理解前述内容:[0088]条款a1、一种用于生成随机数的装置,包括:[0089]指令译码单元,其配置成接收随机数指令并且对所述随机数指令进行译码;[0090]运算单元,其配置成根据所述译码后的随机数指令来执行基于单个种子或多个种子的随机数生成操作,其中针对于每个所述种子,所述随机数生成操作包括以流水方式执行的生成操作和更新操作,其中所述生成操作用于生成随机数并且所述更新操作用于更新状态向量;以及[0091]存储器,其配置成根据译码后的所述随机数指令来设置状态空间,其中所述状态空间配置成存储用于生成所述随机数的状态向量并且接受来自运算单元对所述状态空间的状态向量更新,[0092]其中所述状态空间的大小设置成:[0093]在单个种子下,支持以流水方式执行所述生成操作和更新操作;或者[0094]在多个种子下,支持以流水方式执行各个种子的随机数生成操作。[0095]条款a2、根据条款a1所述的装置,其中所述随机数指令包括以下中的一项或多项:生成随机数的数目、状态空间的大小和地址、用于生成随机数的一个或多个种子信息、用于拼接随机数的拼接参数和输出随机数的地址。[0096]条款a3、根据条款a1所述的装置,其中所述随机数指令是单个指令并且经所述指令译码单元解析后得到用于执行流水操作的多个微指令,其中所述运算单元配置成:[0097]根据所述微指令,以循环移位的方式沿所述状态空间来执行生成随机数的生成操作和更新所述状态空间的更新操作。[0098]条款a4、根据条款a3所述的装置,其中所述微指令包括用于所述生成操作的生成微指令和用于所述更新操作的更新微指令,并且所述生成微指令和更新微指令与所述生成操作和更新操作所涉及的状态空间位置相关,并且所述运算单元配置成以下面操作之一来生成部分数目的随机数:[0099]根据一个生成微指令来生成部分数目的随机数,并且根据一个更新微指令来更新部分数目的状态向量;或者[0100]根据一个生成微指令来生成部分数目的随机数,并且根据多个更新微指令来分别更新部分数目的状态向量;或者[0101]根据多个生成微指令来分别生成部分数目的随机数,并且根据一个更新微指令来生成部分数目的随机数。[0102]条款a5、根据条款a3所述的装置,其中每个所述微指令包括指示针对状态空间的读取操作或写入操作的地址范围项,并且对于地址范围项存在地址交叠的两条连续微指令,所述运算单元配置成:[0103]仅在执行完其中一条微指令的读取操作或写入操作后,才执行下一条微指令的读取操作或写入操作。[0104]条款a6、根据条款a1所述的装置,其中所述状态空间的大小由软件来配置,以便使得在单个种子下的所述生成操作和更新操作以流水方式执行,并且使得在多个种子下的随机数生成操作以流水方式执行。[0105]条款a7、根据条款a1所述的装置,其中所述状态空间还配置成存储来自于所述指令译码单元的状态指针,其中所述状态指针指示用于生成操作的第一状态向量在所述状态空间中的位置和用于所述更新操作的第一更新状态向量在所述状态空间中的位置。[0106]条款a8、根据条款a1所述的装置,其中所述状态空间包括多个空间区段,并且在所述流水操作中,所述多个空间区段根据要执行的生成操作和更新操作而可变地操作于读取空间区段或写入空间区段,其中所述读取空间区段和写入空间区段在所述状态空间中具有预定的地址间隔,以便支持所述生成操作和更新操作以流水方式执行。[0107]条款a9、根据条款a1所述的装置,其中所述状态空间包括n个连续分布的读取空间区段和n个连续分布的写入空间区段,并且所述n个读取空间区段和所述n个写入空间区段在流水操作中形成对应关系,其中n是大于或等于2的正整数,并且在所述流水操作过程中,所述运算单元配置成根据预生成的随机数的数目循环执行以下的操作,其中i=1,…n:[0108]在所述生成操作中,从第i读取空间区段中读取多个状态向量,以生成对应的第i多个随机数;以及[0109]在所述更新操作中,根据所述第i读取空间区段中的所述多个状态向量来生成用于更新状态空间的多个状态更新向量,并且将所述多个状态更新向量写入所述第i写入空间区段。[0110]条款a10、根据条款a1所述的装置,其中在所述状态空间的初始化过程中,所述状态空间划分成大小相同的第一状态子空间和第二状态子空间,所述运算单元配置成:[0111]利用存储于所述第一状态子空间中的状态向量来执行针对所述第二状态子空间的更新操作,以生成用于第二状态子空间的所有状态向量。[0112]条款a11、根据条款a10所述的装置,其中在生成第二状态子空间的所有状态向量中,所述运算单元还配置成:[0113]顺序地执行多条微指令,以生成用于更新第二状态子空间的所有状态向量,其中每条微指令的执行生成对应数目的状态向量。[0114]条款a12、根据条款a1-a11的任意一项所述的装置,其中:[0115]在单个种子下,所述运算单元配置成利用单个种子生成的状态向量来执行所述生成操作以生成所述随机数,并且执行所述更新操作以更新状态空间的相关状态向量;或者[0116]在多个种子下,每个种子具有其关联的状态空间,并且所述运算单元配置成分别利用多个种子中的各个种子生成的状态向量来执行与各个种子关联的生成操作,以生成与各个种子关联的所述随机数,并且执行与各个种子关联的更新操作以更新与各个种子关联的状态空间的相关状态向量。[0117]条款a13、根据条款a12所述的装置,其中在单个种子下,所述运算单元配置成:[0118]根据多条微指令来连续地交替执行生成所述随机数的生成操作和用于更新状态空间的更新操作,直至生成预定数目的随机数,[0119]其中每次生成操作生成部分数目的随机数并且每次更新操作更新所述状态空间中对应数目的状态向量。[0120]条款a14、根据条款a12所述的装置,其中多个种子包括第一种子和第二种子,其中所述存储器设置有与第一种子和第二种子各自关联的所述状态空间,并且在执行用于生成随机数的流水操作中,所述运算单元配置成根据所述随机数指令来循环执行如下操作,直至生成预定数目的随机数:[0121]利用所述第一种子关联的状态空间来生成部分随机数,并且更新对应数目的状态向量;以及[0122]利用所述第二种子关联的状态空间来生成部分随机数,并且更新对应数目的状态向量。[0123]条款a15、一种集成电路芯片,包括根据条款a1-a14的任意一项所述的装置。[0124]条款a16、一种板卡,包括根据条款a15所述的集成电路芯片。[0125]条款a17、一种电子设备,包括根据条款a16所述的集成电路芯片。[0126]条款a18、一种用于生成随机数的方法,包括:[0127]接收随机数指令并且对所述随机数指令进行译码;[0128]根据译码后的所述随机数指令来设置状态空间,其中所述状态空间配置成存储用于生成所述随机数的状态向量并且接受对所述状态空间的状态向量更新;以及[0129]根据所述译码后的随机数指令来执行基于单个种子或多个种子的随机数生成操作,其中针对于每个所述种子,所述随机数生成操作包括以流水方式执行的生成操作和更新操作,其中所述生成操作用于生成随机数并且所述更新操作用于更新状态向量,[0130]其中所述状态空间的大小设置成:[0131]在单个种子下,支持以流水方式执行所述生成操作和更新操作;或者[0132]在多个种子下,支持以流水方式执行各个种子的随机数生成操作。[0133]条款a19、根据条款a18所述的方法,其中所述随机数指令包括以下中的一项或多项:生成随机数的数目、状态空间的大小和地址、用于生成随机数的一个或多个种子信息、用于拼接随机数的拼接参数和输出随机数的地址。[0134]条款a20、根据条款a18所述的方法,其中所述随机数指令是单个指令并且经解析后得到用于执行流水操作的多个微指令,所述方法还包括:[0135]根据所述微指令,以循环移位的方式沿所述状态空间来执行生成随机数的生成操作和更新所述状态空间的更新操作。[0136]条款a21、根据条款a20所述的方法,其中所述微指令包括用于所述生成操作的生成微指令和用于所述更新操作的更新微指令,并且所述生成微指令和更新微指令与所述生成操作和更新操作所涉及的状态空间位置相关,并且所述方法包括以下面操作之一来生成部分数目的随机数和更新部分数目的状态向量:[0137]根据一条生成微指令来生成部分数目的随机数,并且根据一条更新微指令来更新部分数目的状态向量;或者[0138]根据一个生成微指令来生成部分数目的随机数,并且根据多条更新微指令来分别更新部分数目的状态向量;或者[0139]根据多条生成微指令来分别生成部分数目的随机数,并且根据一条更新微指令来更新部分数目的状态向量。[0140]条款a22、根据条款a20所述的方法,其中每个所述微指令包括指示针对状态空间的读取操作或写入操作的地址范围项,并且对于地址范围项存在地址交叠的两条连续微指令,所述方法还包括:[0141]仅在执行完其中一条微指令的读取操作或写入操作后,才执行下一条微指令的读取操作或写入操作。[0142]条款a23、根据条款a18所述的方法,其中所述状态空间的大小由软件来配置,以便使得在单个种子下的所述生成操作和更新操作以流水方式执行,并且使得在多个种子下的随机数生成操作以流水方式执行。[0143]条款a24、根据条款a18所述的方法,其中所述状态空间还配置成存储状态指针,其中所述状态指针指示用于生成操作的第一状态向量在所述状态空间中的位置和用于所述更新操作的第一更新状态向量在所述状态空间中的位置。[0144]条款a25、根据条款a18所述的方法,其中所述状态空间包括多个空间区段,并且在所述流水操作中,所述多个空间区段根据要执行的生成操作和更新操作而可变地操作于读取空间区段或写入空间区段,其中所述读取空间区段和写入空间区段在所述状态空间中具有预定的地址间隔,以便支持所述生成操作和更新操作以流水方式执行。[0145]条款a26、根据条款a18所述的方法,其中所述状态空间包括n个连续分布的读取空间区段和n个连续分布的写入空间区段,并且所述n个读取空间区段和所述n个写入空间区段在流水操作中形成对应关系,其中n是大于或等于2的正整数,并且在所述流水操作过程中,所述方法根据预生成的随机数的数目循环执行以下的操作,其中i=1,…n:[0146]在所述生成操作中,从第i读取空间区段中读取多个状态向量,以生成对应的第i多个随机数;以及[0147]在所述更新操作中,根据所述第i读取空间区段中的所述多个状态向量来生成用于更新状态空间的多个状态更新向量,并且将所述多个状态更新向量写入所述第i写入空间区段。[0148]条款a27、根据条款a18所述的方法,其中在所述状态空间的初始化过程中,所述状态空间划分成大小相同的第一状态子空间和第二状态子空间,所述方法还包括:[0149]利用存储于所述第一状态子空间中的状态向量来执行针对所述第二状态子空间的更新操作,以生成用于第二状态子空间的所有状态向量。[0150]条款a28、根据条款a27所述的方法,其中在生成第二状态子空间的所有状态向量中,所述方法还包括:[0151]顺序地执行多条微指令,以生成用于更新第二状态子空间的所有状态向量,其中每条微指令的执行生成对应数目的状态向量。[0152]条款a29、根据条款a18-a28的任意一项所述的方法,其中:[0153]在单个种子下,利用单个种子生成的状态向量来执行所述生成操作以生成所述随机数,并且执行所述更新操作以更新状态空间的相关状态向量;或者[0154]在多个种子下,每个种子具有其关联的状态空间,并且所述方法分别利用多个种子中的各个种子生成的状态向量来执行与各个种子关联的生成操作,以生成与各个种子关联的所述随机数,并且执行与各个种子关联的更新操作以更新与各个种子关联的状态空间的相关状态向量。[0155]条款a30、根据条款a29所述的方法,其中在单个种子下,所述方法还包括:[0156]根据多条微指令来连续地交替执行生成所述随机数的生成操作和用于更新状态空间的更新操作,直至生成预定数目的随机数,[0157]其中每次生成操作生成部分数目的随机数并且每次更新操作更新所述状态空间中对应数目的状态向量。[0158]条款a31、根据条款a29所述的方法,其中多个种子包括第一种子和第二种子,其中所述方法包括设置有与第一种子和第二种子各自关联的所述状态空间,并且在执行用于生成随机数的流水操作中,所述方法包括根据所述随机数指令来循环执行如下操作,直至生成预定数目的随机数:[0159]利用所述第一种子关联的状态空间来生成部分随机数,并且更新对应数目的状态向量;以及[0160]利用所述第二种子关联的状态空间来生成部分随机数,并且更新对应数目的状态向量。[0161]应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。[0162]还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。[0163]如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。[0164]虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1