執(zhí)行偽隨機(jī)數(shù)產(chǎn)生操作的指令的制作方法
【專利說明】執(zhí)行偽隨機(jī)數(shù)產(chǎn)生操作的指令
【背景技術(shù)】
[0001] -個或多個方面一般地涉及在計算環(huán)境中的處理,更具體地涉及與在計算機(jī)程序 或其他類型的程序中使用的產(chǎn)生偽隨機(jī)數(shù)相關(guān)的處理。
[0002] 偽隨機(jī)數(shù)是表現(xiàn)為隨機(jī)但并不真實(shí)隨機(jī)的數(shù)。它們是由提供統(tǒng)計上隨機(jī)數(shù)的確定 性計算過程產(chǎn)生的數(shù)。由于這些數(shù)被確定性過程產(chǎn)生后,如果起始點(diǎn)是已知的,給定的數(shù)據(jù) 序列可以在之后被產(chǎn)生。也就是說,給定具體的函數(shù)和種子值,同樣的數(shù)據(jù)序列由該函數(shù)產(chǎn) 生。
[0003] 偽隨機(jī)數(shù)被用于許多計算機(jī)應(yīng)用程序中,例如,仿真、密碼學(xué)、以及過程產(chǎn)生等。存 在多種方式來產(chǎn)生可用于這些應(yīng)用程序中的偽隨機(jī)數(shù)。這些方式包括,例如,程序庫子例 程,以及具有在一些處理器(例如能用于IBM? Z/架構(gòu)的處理器)上可用的鏈?zhǔn)街噶畹拿?碼消息的受限函數(shù)。
【發(fā)明內(nèi)容】
[0004] 通過提供一種用于執(zhí)行機(jī)器指令的方法、系統(tǒng)和計算機(jī)程序,如所要求的,現(xiàn)有技 術(shù)的不足被克服,并且優(yōu)勢被提供。
[0005] 通過一個或多個方面的技術(shù)手段,附加的特征和優(yōu)勢可以被實(shí)現(xiàn)。其他的實(shí)施例 和方面在本文中被詳細(xì)描述并且被認(rèn)為是權(quán)利要求的一部分。
【附圖說明】
[0006] 作為說明書結(jié)尾的權(quán)利要求中的示例,一個或多個方面被具體地指出并且清楚地 被要求。從以下與附圖相結(jié)合的詳細(xì)說明,上述的以及其他對象、特征和優(yōu)勢是明顯的,其 中:
[0007] 圖IA描述了用來結(jié)合和使用一個或多個方面的計算環(huán)境的一個示例;
[0008] 圖IB描述了圖IA的處理器的進(jìn)一步的細(xì)節(jié);
[0009] 圖2A描述了用來結(jié)合和使用一個或多個方面的計算環(huán)境的另一個示例;
[0010] 圖2B描述了圖2A的存儲器的進(jìn)一步的細(xì)節(jié);
[0011] 圖3A描述了執(zhí)行偽隨機(jī)數(shù)操作指令的格式的一個實(shí)施例;
[0012] 圖3B描述了被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令使用的通用寄存器O(GRO)的內(nèi)容 的一個示例;
[0013] 圖3C描述了被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令使用的通用寄存器I(GRl)的內(nèi)容 的一個示例;
[0014] 圖3D描述了一個方面中被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令使用的寄存器Rl的內(nèi) 容的一個實(shí)施例;
[0015] 圖3E描述了一個方面中被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令使用的寄存器R1+1的 內(nèi)容的一個實(shí)施例;
[0016] 圖3F描述了一個方面中被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令使用的寄存器R2的內(nèi) 容的一個實(shí)施例;
[0017] 圖3G描述了一個方面中被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令使用的寄存器R2+1的 內(nèi)容的一個實(shí)施例;
[0018] 圖3H描述了與被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令指定的函數(shù)代碼相關(guān)的處理的一 個示例;
[0019] 圖31描述了與檢查被圖3A的執(zhí)行偽隨機(jī)數(shù)操作指令指定的修飾指示符相關(guān)的處 理的一個示例;
[0020] 圖4A描述了被具有為0的函數(shù)代碼的執(zhí)行偽隨機(jī)數(shù)操作指令使用的參數(shù)塊的格 式的一個不例;
[0021] 圖4B描述了被具有為3的函數(shù)代碼的執(zhí)行偽隨機(jī)數(shù)操作指令使用的參數(shù)塊的格 式的一個實(shí)施例;
[0022] 圖5A描述了用于實(shí)例化操作的種子材料的構(gòu)建的一個實(shí)施例;
[0023] 圖5B描述了用于重設(shè)種子操作的種子材料的構(gòu)建的一個實(shí)施例;
[0024] 圖6描述了產(chǎn)生Vnew的邏輯的一個實(shí)施例;
[0025] 圖7描述了產(chǎn)生Cnew的邏輯的一個實(shí)施例;
[0026] 圖8A描述了產(chǎn)生偽隨機(jī)數(shù)的邏輯的一個實(shí)施例;
[0027] 圖8B描述了創(chuàng)建在產(chǎn)生偽隨機(jī)數(shù)中使用的哈希值的一個示例;
[0028] 圖9描述了基于偽隨機(jī)數(shù)產(chǎn)生操作的普通完成的更新參數(shù)塊的邏輯的一個實(shí)施 例;
[0029] 圖10描述了結(jié)合一個或多個方面的計算機(jī)程序產(chǎn)品的一個實(shí)施例;
[0030] 圖11描述了托管計算機(jī)系統(tǒng)的一個實(shí)施例;
[0031] 圖12描述了計算機(jī)系統(tǒng)的進(jìn)一步示例;
[0032] 圖13描述了包括計算機(jī)網(wǎng)絡(luò)的計算機(jī)系統(tǒng)的另一個示例;
[0033] 圖14描述了計算機(jī)系統(tǒng)的多個元件的實(shí)施例;
[0034] 圖15A描述了圖14的計算機(jī)系統(tǒng)的執(zhí)行單元的一個實(shí)施例;
[0035] 圖15B描述了圖14的計算機(jī)系統(tǒng)的分支單元的一個實(shí)施例;
[0036] 圖15C描述了圖14的計算機(jī)系統(tǒng)的加載/存儲單元的一個實(shí)施例;以及
[0037] 圖16描述了被仿真的托管計算機(jī)系統(tǒng)的一個實(shí)施例。
【具體實(shí)施方式】
[0038] 在一個方面,機(jī)器指令被提供用于產(chǎn)生偽隨機(jī)數(shù)。所述指令,被稱為執(zhí)行偽隨機(jī)數(shù) 操作指令,具有能力來實(shí)例化用來產(chǎn)生偽隨機(jī)數(shù)的一個或多個種子值;重設(shè)種子一個或多 個種子值,和/或產(chǎn)生偽隨機(jī)數(shù)。例如,使用美國國家標(biāo)準(zhǔn)技術(shù)研究所(National Institute of Standards and Technology,NIST)定義的 512-比特安全哈希算法(SHA-512)。其符合 用于偽隨機(jī)數(shù)產(chǎn)生的最新的NIST建議。然而,出于性能原因,所述指令運(yùn)行在右-到-左 模式,而不是如NIST定義的左-到-右模式。在進(jìn)一步的實(shí)施例中,所述指令可擴(kuò)展到使 用替代的編碼算法(也被稱為技術(shù)手段)。
[0039] 參考圖1A,結(jié)合和使用一個或多個方面的計算環(huán)境的實(shí)施例被描述。計算環(huán)境 100包括,例如,處理器102 (例如中央處理單元),存儲器104 (例如主存儲器),以及通過例 如一個或多個總線108和/或其他連接而互相連接的一個或多個輸入/輸出(I/O)設(shè)備和 /或接口 106。
[0040] 在一個示例中,處理器102是基于國際商業(yè)機(jī)器公司提供的Z/架構(gòu)的,并且是 服務(wù)器(例如系統(tǒng)z服務(wù)器)的一部分,系統(tǒng)z服務(wù)器也是國際商業(yè)機(jī)器公司提供的 并且實(shí)施z/架構(gòu)。z/架構(gòu)的一個實(shí)施例被描述在一 IBM?出版物中,標(biāo)題為"z/Archi tecture Pr inciples of <^6抑^〇11",131^出版號為3厶22-7832-09,第10版,2012年9 月。在一個示例中,處理器執(zhí)行操作系統(tǒng),例如z/OS,z/OS也是國際商業(yè)機(jī)器公司提供的。 『BMP·、Z/ARCHTTECTURE,以及Z/0S:l<是美國紐約阿蒙克的國際商業(yè)機(jī)器公司的注冊商 標(biāo)。本文中使用的其他名字可能是國際商業(yè)機(jī)器公司或其他公司的注冊商標(biāo)、商標(biāo)、或產(chǎn)品 名。
[0041] 在進(jìn)一步的實(shí)施例中,處理器102是基于國際商業(yè)機(jī)器公司提供的Power架構(gòu)的。 Power架構(gòu)的一個實(shí)施例被描述在"Power ISA? Version 2. 06Revision B",國際商業(yè)機(jī)器 公司,2010年7月23日。power archttecturex是國際商業(yè)機(jī)器公司的注冊商標(biāo)。
[0042] 在進(jìn)一步的實(shí)施例中,處理器102是基于英特爾公司提供的英特爾架構(gòu)的。英 特爾架構(gòu)的實(shí)施例被描述在"Intel? 64 and IA-32 Architectures Developer's Manual:Vol.2B, Ins truct ions Set Reference, A_L",順序號 253666_045US,2013 年 I 月, 以及"Illtel/? 64 and IA-32 Archi tectures Developer's Manual:Vol.2B,Instructions Set Reference, M-Z",順序號 253667-045US,2013 年 I 月。Intel?是加利福尼亞圣克拉 拉的英特爾公司的注冊商標(biāo)。
[0043] 處理器102包括用于執(zhí)行指令的多個功能組件。如圖IB中描述的,這些功能組 件包括,例如,用于提取將被執(zhí)行的指令的指令提取組件120 ;用于解碼獲取到的指令以及 獲取被解碼的指令的操作數(shù)的指令解碼單元122 ;用于執(zhí)行被解碼的指令的指令執(zhí)行組件 124 ;如果需要的話,用于為指令執(zhí)行訪問存儲器的存儲器訪問組件126 ;以及用于提供被 執(zhí)行的指令的結(jié)果的回寫組件130。這些組件中的一個或多個可以,按照一個方面,通過包 括至少一部分的或具有到種子/產(chǎn)生組件136的訪問,提供偽隨機(jī)數(shù)種子和/或產(chǎn)生功能。 這個功能下面將被更詳細(xì)地描述。
[0044] 在一個實(shí)施例中,處理器102還包括被功能組件中的一個或多個所使用的一個或 多個寄存器140。
[0045] 參考圖2A,用于結(jié)合和使用一個或多個方面的計算環(huán)境的另一個實(shí)施例被描述。 在這個示例中,計算環(huán)境200包括,例如,原生(native)中央處理單元(CPU) 202,存儲器 204,以及通過例如一個或多個總線208和/或其他連接而互相連接的一個或多個輸入/輸 出(1/0)設(shè)備和/或接口 206。作為示例,計算環(huán)境200可以包括由紐約阿蒙克的國際商業(yè) 機(jī)器公司提供的PowerPC處理器,pSeries服務(wù)器或者xSeries服務(wù)器;由加利福尼亞帕洛 阿爾托的惠普公司提供的具有英特爾安騰II處理器的惠普Superdome ;和/或基于國際商 業(yè)機(jī)器公司、惠普、英特爾、甲骨文或其他公司提供的架構(gòu)的其他機(jī)器。
[0046] 原生中央處理單元202包括在所述環(huán)境中處理期間使用的一個或多個原生寄存 器210,例如一個或多個通用寄存器和/或一個或多個專用寄存器。這些寄存器包括代表在 任何特定時間點(diǎn)的所述環(huán)境的狀態(tài)的信息。
[0047] 此外,原生中央處理單元202執(zhí)行存儲器204中存儲的指令和代碼。在一個具體 的示例中,中央處理單元執(zhí)行存儲器204中存儲的仿真器代碼212。這一代碼使得在一個架 構(gòu)下配置的計算環(huán)境能夠模仿另一個架構(gòu)。例如,仿真器代碼212允許基于不同于z/架構(gòu) 的架構(gòu)(例如PowerPC處理器、pSeries服務(wù)器、xSeries服務(wù)器、惠普Superdome服務(wù)器或 者其他)的機(jī)器仿真z/架構(gòu)并執(zhí)行基于z/架構(gòu)開發(fā)的軟件或指令。
[0048] 參考圖2B,涉及仿真器代碼212的進(jìn)一步細(xì)節(jié)將被描述。存儲器240中存儲的訪 客指令250包括被開發(fā)用于在不同于原生CPU202的架構(gòu)中執(zhí)行的軟件指令(例如與機(jī)器 指令相關(guān)的)。例如,訪客指令250可以已經(jīng)被設(shè)計在z/架構(gòu)處理器102上執(zhí)行,但是替代 地,正在原生CPU202(其可以是例如英特爾安騰II處理器)上被仿真。在一個示例中,仿 真器代碼212包括指令獲取例程252以從存儲器204獲取一個或多個訪客指令,并可選地 為獲取到的指令的提供緩存。其還包括指令轉(zhuǎn)譯例程254以確定已被獲取到的訪客指令的 類型以及將該訪客指令轉(zhuǎn)譯為一個或多個對應(yīng)的原生指令256。這一轉(zhuǎn)譯包括,例如,識別 將被訪客指令執(zhí)行的函數(shù)并選擇原生指令來執(zhí)行該函數(shù)。
[0049] 此外,仿真器212包括仿真控制例程260以引起原生指令被執(zhí)行。仿真控制例程 260可以引起原生CPU202來執(zhí)行模仿一個或多個之前獲取到的訪客指令的原生指令的例 程,并且在這一執(zhí)行結(jié)束時,返回控制到指令獲取例程以模仿下一個訪客指令或一組訪客 指令的獲取。原生指令256的執(zhí)行可以包括從存儲器204加載數(shù)據(jù)到寄存器;從寄存器回 存數(shù)據(jù)到存儲器;或如轉(zhuǎn)譯例程所確定地,執(zhí)行一些類型的算法或邏輯操作。
[0050] 每個例程,例如,被在存儲器中存儲的并被原生中央處理單元202執(zhí)行的軟件中 實(shí)現(xiàn)。在其他示例中,例程或操作中的一個或多個可以被實(shí)現(xiàn)在固件、硬件、軟件或者它們 的一些組合中。使用原生CPU的寄存器210或通過使用存儲器204中的位置,仿真處理器 的寄存器可以被模仿。在實(shí)施例中,訪客指令250、原生指令256和仿真器代碼212可以內(nèi) 置在相同的存儲器中或者可以分布在在不同的存儲設(shè)備中。
[0051] 如本文中使用的,固件包括,例如處理器的微代碼、迷你代碼和/或宏代碼。其包 括,例如,在更高級別機(jī)器代碼的實(shí)施中使用的硬件級別指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個實(shí)施 例中,其包括,例如,典型地被作為微代碼傳遞的專有代碼,該專有代碼包括針對承載硬件 以及控制訪問系統(tǒng)硬件的操作系統(tǒng)的受信任的軟件或微代碼。
[0052] 在一個示例中,被獲取、轉(zhuǎn)譯、和執(zhí)行的訪客指令250是本文中描述的執(zhí)行偽隨機(jī) 數(shù)操作指令。該指令,其是一種架構(gòu)(例如z/架構(gòu)),被從存儲器中獲取、轉(zhuǎn)譯和再現(xiàn)為另 一種架構(gòu)(例如PowerPC、pSeries、xSeries、英特爾等)的原生指令256的序列。這些原 生指令接著被執(zhí)行。
[0053] 與執(zhí)行偽隨機(jī)數(shù)操作指令相關(guān)的細(xì)節(jié),包括指令的顯式的和隱含的字段,以及由 中央處理單元的執(zhí)行(在原生或者仿真系統(tǒng)中)在這里被描述。執(zhí)行偽隨機(jī)數(shù)操作指令包 括產(chǎn)生操作以產(chǎn)生偽隨機(jī)數(shù),以及種子操作以啟動或者重設(shè)用于產(chǎn)生偽隨機(jī)數(shù)的一個或多 個種子值。種子值被存儲在該指令訪問的參數(shù)塊中。
[0054] 首先參考圖3A,執(zhí)行偽隨機(jī)數(shù)操作指令的一個實(shí)施例被描述。在一個示例中,執(zhí) 行偽隨機(jī)數(shù)操作指令300包括具有指示偽隨機(jī)數(shù)操作的操作代碼(例如B93C)的操作代碼 字段302(例如比特0-15),用于指明至少一個第一寄存器(R1)的第一寄存器字段304(例 如比特24-27),以及用于指明至少一個第二寄存器(R2)的第二寄存器字段306 (例如比特 28-31)。在一個示例中,字段304-306中的每一個是與操作代碼字段相分離并且獨(dú)立的。此 外,在一個實(shí)施例中,它們是彼此分離并且獨(dú)立的,然而,在其他實(shí)施例中,一個以上的字段 可以被組合。
[0055] 在一個示例中,操作代碼字段302指明的操作代碼中選中的比特(例如開始的 兩個比特)具體指定指令的長度。在這一具體示例中,選中的比特指示長度為兩個半字 (halfword)。此外,指令的格式是具有擴(kuò)展的操作代碼字段的寄存器-和-寄存器操作。具 有這一格式,由R1指明的寄存器的內(nèi)容被稱作第一操作數(shù)。包含第一操作數(shù)的寄存器有時 被稱作第一操作數(shù)位置。此外,R2字段指明具有第二操作數(shù)的寄存器,并且R 2可以與R :字 段指明相同的寄存器。
[0056] 指令中編碼的&和R2之外,指令的一個實(shí)施使用一個或多個隱含寄存器,隱含寄 存器包括,例如,通用寄存器O(GRO)和通用寄存器I(GRl)。在下面參考圖3B-3G,每個寄存 器被進(jìn)一步描述。
[0057] 首先參考圖3B,通用寄存器0(320)的格式的一個實(shí)施例被描述。在一個示例中, 通用寄存器〇包括修飾(M)比特322(例如比特56),以及函數(shù)代碼(FC)字段324(例如比 特57-63)。函數(shù)代碼字段包括指定將被執(zhí)行的函數(shù)的函數(shù)代碼。在一個示例中,指派的 函數(shù)代碼包括:用于查詢函數(shù)的代碼〇,代碼〇具有大小為16的指派的參數(shù)塊,以及用于 SHA-512-DRNG (確定性隨機(jī)數(shù)產(chǎn)生器)函數(shù)的代碼3,代碼3具有大小為240的指派的參數(shù) 塊。通用寄存器0的Should比特57-63指明未指派或未安裝的函數(shù)代碼,規(guī)范異常被識別。
[0058] 查詢函數(shù)(函數(shù)代碼0)提供表明其他函數(shù)的可用性的方式,所述其他函數(shù)包括但 不限于其他隨機(jī)或偽隨機(jī)數(shù)產(chǎn)生器函數(shù)。針對查詢函數(shù),Rl和R2字段以及通用寄存器1的 內(nèi)容被忽略。
[0059] 在這一實(shí)施例中,對于查詢函數(shù)之外的函數(shù),比特56是用來表明將被執(zhí)行的具體 操作的修飾比特。例如,當(dāng)修飾比特為〇時,產(chǎn)生操作被執(zhí)行,以及當(dāng)修飾比特為1時,種子 操作被執(zhí)行。對于查詢函數(shù),修飾