执行伪随机数种子操作的指令的制作方法

文档序号:9438864阅读:509来源:国知局
执行伪随机数种子操作的指令的制作方法
【专利说明】执行伪随机数种子操作的指令
【背景技术】
[0001] -个或多个方面一般地涉及在计算环境中的处理,更具体地涉及与在计算机程序 或其他类型的程序中使用的产生伪随机数相关的处理。
[0002] 伪随机数是表现为随机但并不真实随机的数。它们是由提供统计上随机数的确定 性计算过程产生的数。自从这些数被确定性过程产生后,如果起始点是已知的,给定的数据 序列可以在之后被产生。也就是说,给定具体的函数和种子值,同样的数据序列由该函数产 生。
[0003] 伪随机数被用于许多计算机应用程序中,例如,仿真、密码学、以及过程产生等。存 在多种方式来产生可用于这些应用程序中的伪随机数。这些方式包括,例如,程序库子例 程,以及具有在一些处理器(例如能用于丨BM? Z/架构的处理器)上可获取的链式指令 的密码消息的受限函数。

【发明内容】

[0004] 通过提供一种用于执行机器指令的计算机程序产品,现有技术的不足被克服,并 且优势被提供。所述计算机程序产品包括,例如,可以被处理电路读取并且存储用于被所述 处理电路执行以实现一种方法的指令的计算机可读存储介质。所述方法包括,例如,由处理 器获取用于执行的机器指令,所述机器指令被定义用于根据计算机架构的计算机执行,所 述机器指令包括:提供操作代码的操作代码字段,所述操作代码用于标识执行伪随机数操 作,以及用于标识寄存器的寄存器字段,所述寄存器用于指定所述机器指令使用的第二操 作数的存储器中的位置;以及执行所述机器指令,所述执行包括:获取与所述机器指令相 关联的寄存器的修饰(M)字段,基于具有第一值的所述修饰字段,执行确定性的伪随机数 种子操作,所述确定性的伪随机数种子操作包括:基于在所述第二操作数中存储的信息获 取种子材料;使用512比特安全哈希技术以及所述种子材料来提供一个或多个种子值,以 及在与所述机器指令相关联的参数块中存储所述一个或多个种子值。
[0005] 本文中,与一个或多个方面相关的方法和系统也被描述和要求。此外,本文中,与 一个或多个方面相关的服务也被描述并且可以被要求。
[0006] 通过一个或多个方面的技术手段,附加的特征和优势可以被实现。其他的实施例 和方面在本文中被详细描述并且被认为是权利要求的一部分。
【附图说明】
[0007] 作为说明书结尾的权利要求中的示例,一个或多个方面被具体地指出并且清楚地 被要求。从以下与附图相结合的详细说明,上述的以及其他对象、特征和优势是明显的,其 中:
[0008] 图IA描述了用来结合和使用一个或多个方面的计算环境的一个示例;
[0009] 图IB描述了图IA的处理器的进一步的细节;
[0010] 图2A描述了用来结合和使用一个或多个方面的计算环境的另一个示例;
[0011] 图2B描述了图2A的存储器的进一步的细节;
[0012] 图3A描述了执行伪随机数操作指令的格式的一个实施例;
[0013] 图3B描述了被图3A的执行伪随机数操作指令使用的通用寄存器O(GRO)的内容 的一个示例;
[0014] 图3C描述了被图3A的执行伪随机数操作指令使用的通用寄存器I(GRl)的内容 的一个示例;
[0015] 图3D描述了一方面被图3A的执行伪随机数操作指令使用的寄存器Rl的内容的 一个实施例;
[0016] 图3E描述了一方面被图3A的执行伪随机数操作指令使用的寄存器R1+1的内容 的一个实施例;
[0017] 图3F描述了一方面被图3A的执行伪随机数操作指令使用的寄存器R2的内容的 一个实施例;
[0018] 图3G描述了一方面被图3A的执行伪随机数操作指令使用的寄存器R2+1的内容 的一个实施例;
[0019] 图3H描述了与被图3A的执行伪随机数操作指令指定的函数代码相关的处理的一 个示例;
[0020] 图31描述了与检查被图3A的执行伪随机数操作指令指定的修饰指示符相关的处 理的一个示例;
[0021] 图4A描述了被具有为0的函数代码的执行伪随机数操作指令使用的参数块的格 式的一个不例;
[0022] 图4B描述了被具有为3的函数代码的执行伪随机数操作指令使用的参数块的格 式的一个实施例;
[0023] 图5A描述了用于实例化操作的种子材料的构建的一个实施例;
[0024] 图5B描述了用于重设种子操作的种子材料的构建的一个实施例;
[0025] 图6描述了产生Vnew的逻辑的一个实施例;
[0026] 图7描述了产生Cnew的逻辑的一个实施例;
[0027] 图8A描述了产生伪随机数的逻辑的一个实施例;
[0028] 图8B描述了创建在产生伪随机数中使用的哈希值的一个示例;
[0029] 图9描述了基于伪随机数产生操作的普通完成的更新参数块的逻辑的一个实施 例;
[0030] 图10描述了结合一个或多个方面的计算机程序产品的一个实施例;
[0031] 图11描述了托管计算机系统的一个实施例;
[0032] 图12描述了计算机系统的进一步示例;
[0033] 图13描述了包括计算机网络的计算机系统的另一个示例;
[0034] 图14描述了计算机系统的多个元件的实施例;
[0035] 图15A描述了图14的计算机系统的执行单元的一个实施例;
[0036] 图15B描述了图14的计算机系统的分支单元的一个实施例;
[0037] 图15C描述了图14的计算机系统的加载/存储单元的一个实施例;以及
[0038] 图16描述了被仿真的托管计算机系统的一个实施例。
【具体实施方式】
[0039] 在一个方面,机器指令被提供用于产生伪随机数。所述指令,被称为执行伪随机数 操作指令,具有能力来实例化用来产生伪随机数的一个或多个种子值;重设一个或多个种 子值,和/或产生伪随机数。例如,使用美国国家标准技术研究所(National Institute of Standards and Technology,NIST)定义的512-比特安全哈希算法(SHA-512)。其符合用 于伪随机数产生的最新的NIST建议。然而,出于性能原因,所述指令运行在右-到-左模 式,而不是如NIST定义的左-到-右模式。在进一步的实施例中,所述指令可扩展到使用 替代的编码算法(也被称为技术手段)。
[0040] 参考图1A,结合和使用一个或多个方面的计算环境的实施例被描述。计算环境 100包括,例如,处理器102 (例如中央处理单元),存储器104 (例如主存储器),以及通过例 如一个或多个总线108和/或其他连接而互相连接的一个或多个输入/输出(I/O)设备和 /或接口 106。
[0041] 在一个示例中,处理器102是基于国际商业机器公司提供的z/架构的,并且 是服务器,例如系统z服务器,的一部分,系统z服务器也是国际商业机器公司提供的 并且实施Z/架构。Z/架构的一个实施例被描述在一 IBM?出版物中,标题为"Z/ Architecture Principles of Operation",丨BM:⑩.出版号为 SA22-7832-09,第 10 版, 2012年9月,通过对其整体的引用,该IBM?出版物据此被结合在本文中。在一个示 例中,处理器执行操作系统,例如z/0S,ζ/OS也是国际商业机器公司提供的。丨BM?、 ZZARCHITECTURE?以及Z/OS?是美国纽约阿蒙克的国际商业机器公司的注册 商标。本文中使用的其他名字可能是国际商业机器公司或其他公司的注册商标、商标、或产 品名。
[0042] 在进一步的实施例中,处理器102是基于国际商业机器公司提供的Power架构 的。Power架构的一个实施例被描述在"Power ISA? Version 2. 06 Revision B",国际 商业机器公司,2010年7月23日,这篇文献通过对其整体的引用被据此结合在本文中。 POWER ARCmTECTU RE?是国际商业机器公司的注册商标。
[0043] 在进一步的实施例中,处理器102是基于英特尔公司提供的英特尔架构的。英 特尔架构的实施例被描述在"Intel? 64 and IA-32 Architectures Developer's Manual: Vol. 2B, Instructions Set Reference, A_L",顺序号 253666-045US,2013 年 I 月, 以及"丨ntel? 64 and IA-32 Architectures Developer's Manual:Vol.2B, Instructions Set Reference,M-Z",顺序号253667-045US, 2013年I月,这两篇文献中的每一个都通过 对其整体的引用而据此被结合在本文中。丨ntel?是加利福尼亚圣克拉拉的英特尔公司的 注册商标。
[0044] 处理器102包括用于执行指令的多个功能组件。如图IB中描述的,这些功能组 件包括,例如,用于提取将被执行的指令的指令提取组件120 ;用于解码获取到的指令以及 获取被解码的指令的操作数的指令解码单元122 ;用于执行被解码的指令的指令执行组件 124 ;如果需要的话,用于为指令执行访问存储器的存储器访问组件126 ;以及用于提供被 执行的指令的结果的回写组件130。这些组件中的一个或多个可以,按照一个方面,通过包 括至少一部分的或具有到种子/产生组件136的访问,提供伪随机数种子和/或产生功能。 这个功能下面将被更详细地描述。
[0045] 在一个实施例中,处理器102还包括被功能组件中的一个或多个所使用的一个或 多个寄存器140。
[0046] 参考图2A,用于结合和使用一个或多个方面的计算环境的另一个实施例被描述。 在这个示例中,计算环境200包括,例如,原生(native)中央处理单元(CPU) 202,存储器 204,以及通过例如一个或多个总线208和/或其他连接而互相连接的一个或多个输入/输 出(I/O)设备和/或接口 206。作为示例,计算环境200可以包括由纽约阿蒙克的国际商业 机器公司提供的PowerPC处理器,pSeries服务器或者xSeries服务器;由加利福尼亚帕洛 阿尔托的惠普公司提供的具有英特尔安腾II处理器的惠普Superdome ;和/或基于国际商 业机器公司、惠普、英特尔、甲骨文或其他公司提供的架构的其他机器。
[0047] 原生中央处理单元202包括在所述环境中处理期间使用的一个或多个原生寄存 器210,例如一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括代表在 任何特定时间点的所述环境的状态的信息。
[0048] 此外,原生中央处理单元202执行存储器204中存储的指令和代码。在一个具体 的示例中,中央处理单元执行存储器204中存储的仿真器代码212。这一代码使得在一个架 构下配置的计算环境能够模仿另一个架构。例如,仿真器代码212允许基于不同于z/架构 的架构,例如PowerPC处理器、pSeries服务器、xSeries服务器、惠普Superdome服务器或 者其他,的机器模仿z/架构并执行基于z/架构开发的软件或指令。
[0049] 参考图2B,涉及仿真器代码212的进一步细节将被描述。存储器240中存储的访 客指令250包括被开发用于在不同于原生CPU202的架构中执行的软件指令(例如与机器 指令相关的)。例如,访客指令250可以已经被设计在z/架构处理器102上执行,但是,正 在原生CPU202,其可以是例如英特尔安腾II处理器,上被仿真。在一个示例中,仿真器代 码212包括指令获取例程252以从存储器204获取一个或多个访客指令,并可选地为获取 到的指令提供本地缓存。其还包括指令转译例程254以确定已被获取到的访客指令的类型 以及将该访客指令转译为一个或多个相对应的原生(native)指令256。这一转译包括,例 如,识别将被访客指令执行的函数并选择原生指令来执行该函数。
[0050] 此外,仿真器212包括仿真控制例程260以引起原生指令被执行。仿真控制例程 260可以引起原生CPU202来执行模仿一个或多个之前获取到的访客指令的原生指令的例 程,并且在这一执行结束时,返回控制到指令获取例程以模仿下一个访客指令或一组访客 指令的获取。原生指令256的执行可以包括从存储器204加载数据到寄存器;从寄存器回 存数据到存储器;或如转译例程所确定地,执行一些类型的算法或逻辑操作。
[0051] 每个例程,例如,被在存储器中存储的并被原生中央处理单元202执行的软件中 实现。在其他示例中,例程或操作中的一个或多个可以被实现在固件、硬件、软件或者它们 的一些组合中。使用原生CPU的寄存器210或通过使用存储器204中的位置,仿真处理器 的寄存器可以被模仿。在实施例中,访客指令250、原生指令256和仿真器代码212可以内 置在相同的存储器中或者可以分布在在不同的存储设备中。
[0052] 如本文中使用的,固件包括,例如处理器的微代码、迷你代码和/或宏代码。其包 括,例如,在更高级别机器代码的实施中使用的硬件级别指令和/或数据结构。在一个实施 例中,其包括,例如,典型地被作为微代码传递的专有代码,该专有代码包括针对承载硬件 以及控制访问系统硬件的操作系统的受信任的软件或微代码。
[0053] 在一个示例中,被获取、转译、和执行的访客指令250是本文中描述的执行伪随机 数操作指令。该指令,其是一种架构(例如z/架构),被从存储器中获取、转译和再现为另 一种架构(例如PowerPC、pSeries、xSeries、英特尔等)的原生指令256的序列。这些原 生指令接着被执行。
[0054] 与执行伪随机数操作指令相关的细节,包括指令的显式的和隐含的字段,以及由 中央处理单元的执行(在原生或者仿真系统中)在这里被描述。执行伪随机数操作指令包 括产生操作以产生伪随机数,以及种子操作以启动或者重设用于产生伪随机数的一个或多 个种子值。种子值被存储在该指令访问的参数块中。
[0055] 首先参考图3A,执行伪随机数操作指令的一个实施例被描述。在一个示例中,执 行伪随机数操作指令300包括具有指示伪随机数操作的操作代码(例如B93C)的操作代码 字段302 (例如比特0-15),用于指明至少一个第一寄存器(R1)的第一寄存器字段304 (例 如比特24-27),以及用于指明至少一个第二寄存器(R2)的第二寄存器字段306 (例如比特 28-31)。在一个示例中,字段304-306中的每一个是与操作代码字段相分离并且独立的。此 外,在一个实施例中,它们是彼此分离并且独立的,然而,在其他实施例中,一个以上的字段 可以被组合。
[0056] 在一个示例中,操作代码字段302指明的操作代码中选中的比特(例如开始的 两个比特)具体指定指令的长度。在这一具体示例中,选中的比特指示长度为两个半字 (halfword)。此外,指令的格式是具有扩展的操作代码字段的寄存器-和-寄存器操作。具 有这一格式,由R1指明的寄存器的内容被称作第一操作数。包含第一操作数的寄存器有时 被称作第一操作数位置。此外,R2字段指明具有第二操作数的寄存器,并且R 2可以与R :字 段指明相同的寄存器。
[0057] 指令中编码的&和R2之外,指令的一个实施使用一个或多个隐含寄存器,隐含寄 存器包括,例如,通用寄存器O(GRO)和通用寄存器I(GRl)。在下面参考图3B-3G,每个寄存 器被进一步描述。
[0058] 首先参考图3B,通用寄存器0(320)的格式的一个实施例被描述。在一个示例中, 通用寄存器〇包括修饰(M)比特322(例如比特56),以及函数代码(FC)字段324(例如比 特57-63)。函数代码字段包括指定将被执行的函数的函数代码。在一个示例中,指派的 函数代码包括:用于查询函数的代码〇,代码〇具有大小为16的指派的参数块,以及用于 SHA-512-DRNG (确定性随机数产生器)函数的代码3,代码3具有大小为240的指派的参数 块。通用寄存器0的Should比特57-63指明未指派或未安装的函数代码,规范异常被识别。
[0059] 查询函数(函数代码0)提供表明其他函数的可用性的方式,所述其他函数包括但 不限于其他随机或伪随机数产生器函数。针对查询函数,Rl和R2字段以及通用寄存器1的 内容被忽略。
[0060] 在这一实施例中,对于查询函数之外的函数,比特56是用来表明将被执行的具体 操作的修饰比特。例如,当修饰比特为0时,产生操作被执行,以及当修饰比特为1时,种子 操作被执行。对于查询函数,修饰比特被忽略。在一个实施中,通用寄存器0的所有其他比 特被忽略。在进一步的实施例中,如果其他函数被提供,他们可以使用或者可以不使用修饰 比特。
[0061] 参考图3H和31,函数代码和修饰比特的使用被进一步描述。首先,参考图3H,步骤 379,执行伪随机数操作指令,被获取并且被执行。在一个实施例中,步骤380,在执行期间, 通用寄存器〇中指明的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1