JP2015212804A - 複数のハッシュ動作を効率的に実行する方法および装置 - Google Patents

複数のハッシュ動作を効率的に実行する方法および装置 Download PDF

Info

Publication number
JP2015212804A
JP2015212804A JP2015028528A JP2015028528A JP2015212804A JP 2015212804 A JP2015212804 A JP 2015212804A JP 2015028528 A JP2015028528 A JP 2015028528A JP 2015028528 A JP2015028528 A JP 2015028528A JP 2015212804 A JP2015212804 A JP 2015212804A
Authority
JP
Japan
Prior art keywords
state values
rounds
storage location
hash function
processor
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.)
Granted
Application number
JP2015028528A
Other languages
English (en)
Other versions
JP6051458B2 (ja
Inventor
エム. ウォルリッチ、ギルバート
Gilbert M Wolrich
エム. ウォルリッチ、ギルバート
ゴパル、ビノド
Gopal Vinodh
エス. ヤップ、カーク
S Yap Kirk
エス. ヤップ、カーク
ケー. フェガリ、ワジャディ
K Feghali Wajdi
ケー. フェガリ、ワジャディ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2015212804A publication Critical patent/JP2015212804A/ja
Application granted granted Critical
Publication of JP6051458B2 publication Critical patent/JP6051458B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】プロセッサ上で複数のハッシュ関数を実行する。
【解決手段】ハッシュ関数の複数の状態変数が格納される、第1のストレージ位置と第2のストレージ位置とを含むレジスタセットと、ハッシュ関数を実行し、ハッシュ関数の複数のRoundを計算するために使用される複数の状態値の第1のセットを格納する第1のストレージ位置を最初に指定し、ハッシュ関数の複数のRoundを計算するためにまた使用される複数の状態値の第2のセットを格納する第2のストレージ位置を最初に指定する実行ユニットと、複数のRoundの第1のセットのための複数の状態値の第2のセット及び複数のRoundの第2のセットのための複数の状態値の第1のセットを格納すべく第2のストレージ位置が指定されるように、第1のストレージ位置及び第2のストレージ位置の複数の指定をスワッピングする実行ユニットと、を備える。
【選択図】図10

Description

本発明は概して、複数のコンピュータプロセッサの分野に関する。具体的には、本発明は複数のハッシュ動作を効率的に実行する方法および装置に関する。
セキュアメッセージ(Secure Message:SM)3ハッシュ関数は、Chinese Commercial Cryptography Administrationによって、インターネット技術タスクフォース(IETF)およびインターネット研究タスクフォース(IRTF)コミュニティの便宜のため、発行された新しい暗号関数である。SM3は現在、China Information Security Standardization Technical Committee(略してTC260)の取り組みによって、TCM(Trusted Computing Module)のハッシュアルゴリズムとして指定されている。SM3の設計は、SHA2の場合、1つのメッセージ由来語をフィーディングするのみであるのに対し、2つのメッセージ由来語を各Roundにフィーディングする等、SHA2関数を強化させるべく、複数の機能を追加することによってSecure Hash Algorithm(SHA)2の設計を基に構築されている。
本願発明は、次の複数の図面に照らしつつ、以下の詳細な説明を読むと、より良く理解できる。
本発明の複数の実施形態に係る、インオーダフェッチ、デコード、リタイアパイプラインの一例およびレジスタ名前変更、アウトオブオーダ発行/実行パイプラインの一例の両方を示すブロック図である。 本発明の複数の実施形態に係るプロセッサ内に含まれる、インオーダフェッチ、デコード、リタイアコアの例示的一実施形態およびレジスタ名前変更、アウトオブオーダ発行/実行アーキテクチャコアの一例の両方を示すブロック図である。 本発明の複数の実施形態に係る統合メモリコントローラおよび複数のグラフィックスを有するシングルコアプロセッサおよびマルチコアプロセッサのブロック図である。 本願発明の一実施形態に係るシステムのブロック図を示す。 本願発明の一実施形態に係る第2のシステムのブロック図を示す。 本願発明の一実施形態に係る第3のシステムのブロック図を示す。 本願発明の一実施形態に係るシステムオンチップ(SoC)のブロック図を示す。 本願発明の複数の実施形態に従って、ソース命令セット内の複数のバイナリ命令をターゲット命令セット内の複数のバイナリ命令に変換すべく、ソフトウェア命令コンバータを使用する場合の対比を示すブロック図を示す。 本願発明の複数の実施形態が実装可能なプロセッサアーキテクチャの一実施形態を示す。 SM3(セキュアメッセージ)ハッシュ関数を実施すべく、Round内で実行される複数の動作を示す。 ハッシュ動作の様々な複数のRoundを実行するアーキテクチャおよび複数の関連技術に係る一実施形態を示す。 本願発明の一実施形態に係るハッシュ関数の複数のRoundを実行する方法を示す。
以下の詳細な説明では、以下に記載の本発明に係る複数の実施形態について完全な理解を提供すべく、多くの具体的な詳細が説明目的で記載されている。しかしながら、当業者にとっては本発明の複数の実施形態がこれら具体的な詳細がなくても実施可能であることが明らかであろう。他の複数の例において、本発明の複数の実施形態に係る根本的な複数の原理を不明瞭にするのを回避すべく、周知の複数の構造および複数のデバイスがブロック図の形態で示されている。
[例示的な複数のプロセッサアーキテクチャおよび複数のデータタイプ]
図1Aは、本発明の複数の実施形態に係る、インオーダフェッチ、デコード、リタイアパイプラインの一例およびレジスタ名前変更、アウトオブオーダ発行/実行パイプラインの一例の両方を示すブロック図である。図1Bは、本発明の複数の実施形態に係るプロセッサ内に含まれる、インオーダフェッチ、デコード、リタイアコアの一例示的実施形態およびレジスタ名前変更、アウトオブオーダ発行/実行アーキテクチャコアの一例の両方を示すブロック図である。図1Aおよび図1Bの複数の実線ボックスは、パイプラインおよびコアの複数のインオーダ部分を示す一方で、複数の破線ボックス内の任意の追加操作は、レジスタ名前変更、アウトオブオーダ発行/実行パイプラインおよびコアを示す。
図1Aで、プロセッサパイプライン100は、フェッチステージ102、長さデコードステージ104、デコードステージ106、割当ステージ108、名前変更ステージ110、スケジューリング(ディスパッチまたは発行としても知られる)ステージ112、レジスタ読み取り/メモリ読み取りステージ114、実行ステージ116、ライトバック/メモリ書き込みステージ118、例外処理ステージ122、およびコミットステージ124を含む。
図1Bは、実行エンジンユニット150に連結されたフロントエンドユニット130を含むプロセッサコア190を示し、フロントエンドユニット130および実行エンジンユニット150の両方はメモリユニット170に連結されている。コア190は、縮小命令セットコンピューテイング(RISC)コア、複合命令セットコンピューテイング(CISC)コア、超長命令語(VLIW)コア、またはハイブリッド若しくは代替のコアタイプであってよい。さらに別のオプションとして、コア190は例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、GPGPU(General Purpose Computing Graphics Processing Unit)コア、グラフィックスコア等の特定用途のコアであってよい。
フロントエンドユニット130は、命令キャッシュユニット134に連結された分岐予測ユニット132を含み、命令キャッシュユニット134は命令トランスレーションルックアサイドバッファ(TLB)136に連結され、命令TLB136は命令フェッチユニット138に連結され、命令フェッチユニット138はデコードユニット140に連結される。デコードユニット(またはデコーダ)140は複数の命令をデコード(解読)してよく、またデコードユニット140は、出力として、1または複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、あるいは元の複数の命令からデコードされた他の複数のコントロールシグナル、若しくは元の複数の命令を反映する他の複数のコントロールシグナル、若しくは元の複数の命令から派生された他の複数のコントロールシグナルを生成してよい。デコードユニット140は様々な異なるメカニズムを使用して実装されてよい。複数の好適なメカニズムの複数の例は、限定されないが複数のルックアップテーブル、複数のハードウェア実装、複数のプログラマブルロジックアレイ(PLA)、複数のマイクロコードリードオンリメモリ(ROM)等を含む。一実施形態において、コア190はマイクロコードROMまたは特定の複数のマイクロ命令のためのマイクロコード(例えばデコードユニット140内またはフロントエンドユニット130内)を格納する他の媒体を含む。デコードユニット140は、実行エンジンユニット150内の名前変更/割り当てユニット152に連結されている。
実行エンジンユニット150は、リタイアメントユニット154および一連の1または複数のスケジューラユニット156に連結された名前変更/割り当てユニット152を含む。スケジューラユニット156は、複数の予約ステーション、中央命令ウィンドウを含む、任意の数の様々なスケジューラを表す。スケジューラユニット156は、物理レジスタファイルユニット158に連結されている。複数の物理レジスタファイルユニット158のそれぞれは、1または複数の物理レジスタファイルを表し、物理レジスタファイルの様々なファイルは、1または複数の様々なデータタイプを格納する。1または複数の様々なデータタイプとしては、スカラ整数、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点、状態(実行される次の命令アドレスである命令ポインタ等)等である。一実施形態において、物理レジスタファイルユニット158は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、およびスカラレジスタユニットを備える。これらのレジスタユニットは、アーキテクチャ的な複数のベクトルレジスタ、複数のベクトルマスクレジスタ、および複数の汎用レジスタを提供してよい。レジスタ名前変更およびアウトオブオーダ実行が実装され得る様々な方法を示すべく、物理レジスタファイルユニット158は、リタイアメントユニット154によって重ね合わされる(例えばレオーダバッファおよびリタイアメントレジスタファイルを使用する、フューチャファイル、ヒストリバッファ、およびリタイアメントレジスタファイルを使用する、レジスタマップおよびレジスタプールを使用する等)。リタイアメントユニット154および物理レジスタファイルユニット158は、実行クラスタ160に連結される。実行クラスタ160は、一連の1または複数の実行ユニット162および一連の1または複数のメモリアクセスユニット164を含む。実行ユニット162は、様々なタイプのデータ(例えば、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点)に対し、様々な操作(例えば、複数のシフト、加算、減算、乗算)を実行してよい。一部の実施形態では、特定の複数の関数または複数の関数セット専用の多数の実行ユニットを含んでよい一方で、他の複数の実施形態は1つのみの実行ユニットまたはユニットのすべてが全部の関数を実行する複数の実行ユニットを含んでよい。特定の複数の実施形態は、特定の複数のタイプのデータ/複数の操作用に、複数の個別のパイプラインを形成するので、スケジューラユニット156、物理レジスタファイルユニット158、および実行クラスタ160は複数の場合もあり得るものとして示されている(例えば、スカラ整数パイプライン、スカラ浮動小数点/パック整数/パック浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/または各々が独自のスケジューラユニット、物理レジスタファイルユニット、および/または実行クラスタを有するメモリアクセスパイプライン。個別のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット164を有する特定の複数の実施形態が実装される)。複数の個別のパイプラインが使用される場合、1または複数のこれらのパイプラインはアウトオブオーダ発行/実行および残りがインオーダであってよいことも理解されたい。
一連のメモリアクセスユニット164は、メモリユニット170に連結されており、メモリユニット170は、レベル2(L2)キャッシュユニット176に連結されたデータキャッシュユニット174に連結されたデータTLBユニット172を含む。一実施形態において、メモリアクセスユニット164は、ロードユニット、格納アドレスユニット、および格納データユニットを含んでよく、それらの各々はメモリユニット170内のデータTLBユニット172に連結される。命令キャッシュユニット134はさらに、メモリユニット170内のレベル2(L2)キャッシュユニット176に連結される。L2キャッシュユニット176は、1または複数の他のレベルのキャッシュに連結され、最終的にはメインメモリに連結される。
例示であるが、例示のレジスタ名前変更、アウトオブオーダ発行/実行コアアーキテクチャは、パイプライン100を次のように実装してよい。1.命令フェッチ138がフェッチ段階102および長さデコード段階104を実行する。2.デコードユニット140がデコード段階106を実行する。3.名前変更/割り当てユニット152が割当段階108および名前変更段階110を実行する。4.スケジューラユニット156がスケジューリング段階112を実行する。5.物理レジスタファイルユニット158およびメモリユニット170がレジスタ読み取り/メモリ読み取り段階114を実行する。実行クラスタ160は実行段階116を実行する。6.メモリユニット170および物理レジスタファイルユニット158がライトバック/メモリ書き込み段階118を実行する。7.例外処理段階122に様々なユニットが関与してよい。8.リタイアメントユニット154および物理レジスタファイルユニット158はコミット段階124を実行する。
コア190は本明細書に記載の命令を含め、1または複数の命令セットをサポートしてよい。1または複数の命令セットとして、x86命令セット(さらに複数の新バージョンでいくつかの拡張命令が追加されている)、カリフォルニア州サニーベールにあるMIPS TechnologiesのMIPS命令セット、カリフォルニア州サニーベールにあるARM HoldingsのARM命令セット(NEON等の複数のオプションの追加拡張命令を持つ)がある。一実施形態において、コア190はパックされたデータ命令セット拡張(例えば、後述のAVX1、AVX2および/またはいくつかの形式の汎用で扱いやすいベクトル命令形式(U=0および/またはU=1))をサポートするロジックを含む。これにより、多くのマルチメディアアプリケーションによって使用される複数の操作を、パックされたデータを使用して実行可能にする。
コアはマルチスレッディングをサポートしてよく(複数の操作または複数のスレッドの2又は2より多い並列セットの実行)、かつ、コアはマルチスレッディングのサポートをタイムスライスマルチスレッディング、同時マルチスレッディング(単一の物理コアが、物理コアが同時マルチスレッディングしている複数のスレッドの各々に対しロジカルコアを提供する)、あるいはそれらの組み合わせ(例えばIntel(登録商標)のHyperthreadingテクノロジ等、タイムスライスフェッチおよびデコード並びにその後の同時マルチスレッディング)を含む、様々な方法で行ってよいことが理解されるべきである。
レジスタ名前変更はアウトオブオーダ実行の文脈の中で記載されている一方で、レジスタ名前変更はインオーダアーキテクチャで使用可能であることを理解されたい。プロセッサの例示の実施形態は、個別の命令キャッシュユニット134とデータキャッシュユニット174、および共有されたL2キャッシュユニット176も含む一方で、複数の代替の実施形態は、例えば、レベル1(L1)内部キャッシュ、または複数のレベルの内部キャッシュのように、複数の命令とデータの両方に対し単一の内部キャッシュを有してよい。いくつかの実施形態において、システムは内部キャッシュと、コアおよび/またはプロセッサに外付けされた外部キャッシュとの組み合わせを含んでよい。あるいは、すべてのキャッシュはコアおよび/またはプロセッサに対し外付けされてよい。
図2は、本発明の複数の実施形態に係る、2個以上のコア、統合メモリコントローラ、および複数の統合グラフィックスを有してよい、プロセッサ200のブロック図である。図2の複数の実線ボックスは、単一のコア202A、システムエージェント210、一連の1または複数のバスコントローラユニット216を持つプロセッサ200を示す一方で、複数の破線ボックスの任意の追加操作は複数のコア202AからN、システムエージェントユニット210内の一連の1または複数の統合メモリコントローラユニット214、および特定用途用ロジック208を持つ代替のプロセッサ200を示す。
従って、プロセッサ200の様々な実装には次のものが含まれてよい。1.統合されたグラフィックスおよび/またはサイエンティフィック(スループット)ロジックである特定用途用ロジック208を持つCPU(1または複数のコアを含んでよい)、および1または複数の汎用コア(複数の汎用インオーダコア、複数の汎用アウトオブオーダコア、これら2つの組み合わせ)であるコア202AからN。2.主にグラフィックスおよび/またはサイエンティフィック(スループット)用の多数の特定用途コアであるコア202AからNを持つコプロセッサ。3.多数の汎用インオーダコアであるコア202AからNを持つコプロセッサ。従って、プロセッサ200は例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(General Purpose Graphics Processing Unit)、高スループットMIC(Many Integrated Core)コプロセッサ(30または30より多いコアを含む)、埋め込みプロセッサ等の汎用プロセッサ、コプロセッサまたは特定用途用プロセッサであってよい。プロセッサは1または複数のチップに実装されてよい。プロセッサ200は、例えばBiCMOS、CMOSまたはNMOSといった任意の多数の処理テクノロジを使用する、1または複数の回路基板の一部であってよく、および/または当該回路基板上に実装されてよい。
メモリ階層は、複数のコア内のキャッシュの1または複数のレベル、一連の共有キャッシュユニット206または1または複数の共有キャッシュユニット206、および一連の統合メモリコントローラユニット214に連結された外部メモリ(図示せず)を含む。一連の共有キャッシュユニット206は、レベル2(L2)、レベル3(L3)、レベル4(L4)、他のレベルのキャッシュ、LLC(Last Level Cache)および/またはこれらの組み合わせ等の1または複数のMLC(Mid Level Cache)レベルのキャッシュを含んでよい。
一実施形態で、リングベースの相互接続ユニット212が統合グラフィックスロジック208、一連の共有キャッシュユニット206、およびシステムエージェントユニット210/統合メモリコントローラユニット214を相互接続する一方で、複数の代替の実施形態はそのような複数のユニットを相互接続するための任意の数の既知の技術を使用してよい。一実施形態で、1または複数のキャッシュユニット206と、複数のコア202Aから202Nとの間の一貫性が維持される。
いくつかの実施形態において、コア202Aからコア202Nの1または複数のマルチスレッディングを実行できてよい。システムエージェント210は複数のコア202Aからコア202Nを調整および操作するそれらのコンポーネントを含む。システムエージェントユニット210は例えば、パワーコントロールユニット(PCU)およびディスプレイユニットを含んでよい。PCUはコア202Aから202Nおよび統合グラフィックスロジック208の電源状態を制御するのに必要なロジックおよび複数のコンポーネントであってよい、あるいはPCUは上記ロジックおよび複数のコンポーネントを含んでよい。ディスプレイユニットは1または複数の外部接続されたディスプレイを駆動するためのものである。
コア202Aから202Nはアーキテクチャ命令セットの観点から、同種または異種のいずれであってもよい。つまり、コア202Aから202Nの2又は2より多い同一の命令セットが実行可能であってよい一方で、他の複数のものはその命令セットのサブセットのみまたは異なる命令セットを実行可能であってよい。一実施形態において、コア202Aから202Nは異種なものであり、後述の複数の「小型」コアおよび複数の「大型」コアの両方を含む。
図3から6は、複数の例示のコンピュータアーキテクチャのブロック図である。複数のラップトップ、複数のデスクトップ、複数のノートパソコン、複数の携帯用情報端末、複数のエンジニアリングワークステーション、複数のサーバ、複数のネットワークデバイス、複数のネットワークハブ、複数のスイッチ、複数の埋め込みプロセッサ、複数のデジタルシグナルプロセッサ(DSP)、複数のグラフィックスデバイス、複数のテレビゲームデバイス、複数のセットトップボックス、複数のマイクロコントローラ、複数の携帯電話、複数のポータブルメディアプレーヤ、複数の携帯用デバイス、および様々な他の電子デバイスに係る、複数の技術分野で既知の複数のシステム設計および構成も好ましい。通常、本明細書に記載のプロセッサおよび/または実行ロジックを搭載可能な非常に様々なシステムまたは電子デバイスが概して好ましい。
図3を見ると、本願発明の一実施形態に係るシステム300のブロック図である。システム300は、コントローラハブ320に連結された1または複数のプロセッサ310、315を含んでよい。一実施形態において、コントローラハブ320はグラフィックスメモリコントローラハブ(GMCH)390および入出力ハブ(IOH)350(個別の複数のチップ上にあってよい)を含む。GMCH390はメモリ340およびコプロセッサ345が連結された複数のメモリコントローラおよびグラフィックスコントローラを含む。入出力ハブ350は複数の入出力デバイス360をGMCH390に連結する。あるいは、メモリコントローラおよびグラフィックスコントローラの一方または両方はプロセッサ内に統合されており(本明細書に記載の通り)、メモリ340およびコプロセッサ345はプロセッサ310に直接連結されており、コントローラハブ320は入出力ハブ350とともに単一のチップ内にある。
追加のプロセッサ315のオプション的な性質は図3に点線で示される。各プロセッサ310、315は本明細書に記載のプロセッシングコアの1または複数を含んでよく、かつ、プロセッサ200何らかのバージョンであってよい。
メモリ340は例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、またはこれら2つの組み合わせであってよい。少なくとも一実施形態において、コントローラハブ320は、フロントサイドバス(FSB)等のマルチドロップバス、QPI(QuickPath Interconnect)等のポイントツーポイントインタフェース、または同様の接続395を介して、プロセッサ310、315と通信する。
一実施形態において、コプロセッサ345は、例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、埋め込みプロセッサ等の特定用途用プロセッサである。一実施形態において、コントローラハブ320は統合グラフィックスアクセラレータを含んでよい。
物理リソース310および315間には、アーキテクチャ的特性、マイクロアーキテクチャ的特性、熱的特性、電力消費的特性等、様々な利点の基準範囲の観点より、様々な差異があってよい。
一実施形態において、プロセッサ310は一般タイプの複数のデータ処理操作を制御する複数の命令を実行する。複数の命令内に埋め込まれたものは、複数のコプロセッサ命令であってよい。プロセッサ310はこれらのコプロセッサ命令を取り付けられたコプロセッサ345によって実行されるべきタイプのものであると認識する。従って、プロセッサ310はコプロセッサバスまたは他の相互接続上でこれらのコプロセッサ命令(あるいは複数のコプロセッサ命令を示す複数のコントロールシグナル)をコプロセッサ345に対し発行する。コプロセッサ345は受信される複数のコプロセッサ命令を受け取り、実行する。
図4を見ると、本願発明の一実施形態に係る、より具体的な第1の例示的システム400のブロック図が示されている。図4に示される通り、マルチプロセッサシステム400はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続450を介して連結された第1のプロセッサ470および第2のプロセッサ480を含む。プロセッサ470および480の各々は、プロセッサ200の何らかのバージョンであってよい。本発明の一実施形態において、プロセッサ470および480はそれぞれプロセッサ310および315である一方で、コプロセッサ438はコプロセッサ345である。別の実施形態において、プロセッサ470および480はそれぞれプロセッサ310およびコプロセッサ345である。
プロセッサ470および480はそれぞれ統合メモリコントローラユニット(IMC)472および482を含むよう図示されている。プロセッサ470はそのバスコントローラユニットの一部としてポイントツーポイント(P‐P)インタフェース476および478も含み、同様に第2のプロセッサ480はP‐Pインタフェース486および488を含む。プロセッサ470、480は、ポイントツーポイント(P‐P)インタフェース回路478、488を使用するP‐Pインタフェース450を介して情報を交換してよい。図4に示される通り、IMC472および482は上記複数のプロセッサをそれぞれのメモリ、つまりメモリ432とメモリ434とに連結する。メモリ432とメモリ434とは上記複数のプロセッサの各々にローカルに取り付けられたメインメモリの複数の部分であってよい。
プロセッサ470、480はそれぞれ、ポイントツーポイントインタフェース回路476、494、486、498を使用する個々のP‐Pインタフェース452、454を介してチップセット490と情報を交換してよい。チップセット490はオプションとして、高性能インタフェース439を介してコプロセッサ438と情報を交換してよい。一実施形態において、コプロセッサ438は例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、埋め込みプロセッサ等の特定用途用プロセッサである。
共有キャッシュ(不図示)がP‐P相互接続を介して複数のプロセッサと接続されつつ、一方のプロセッサ内または両方のプロセッサの外部に含まれてよい。これによって、プロセッサが低電力モードに置かれた場合、一方のプロセッサまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納可能になる。
チップセット490はインタフェース496を介して第1のバス416に連結されてよい。本願発明の範囲は限定されないものの、一実施形態において、第1のバス416はPCI(Peripheral Component Interconnect)バス、あるいはPCI Expressバスまたは別の第三世代I/O相互接続バス等のバスであってよい。
図4に図示の通り、第1のバス416を第2のバス420に連結するバスブリッジ418とともに、様々なI/Oデバイス414が第1のバス416に連結されてよい。一実施形態において、複数のコプロセッサ、複数の高スループットMICプロセッサ、複数のGPGPU、複数のアクセラレータ(複数のグラフィックスアクセラレータまたは複数のデジタルシグナルプロセッシング(DSP)ユニット等)、複数のフィールドプログラマブルゲートアレイ、または任意の他のプロセッサ等、1または複数の追加のプロセッサ415が第1のバス416に連結される。一実施形態において、第2のバス420はLow Pin Countバスであってよい。一実施形態において、例えば、キーボードおよび/またはマウス422、複数の通信デバイス427、複数の命令/コードおよびデータ430を含められるディスクドライブまたは他の大容量記憶装置等のストレージユニット428を含め、様々なデバイスが第2のバス420に連結されてよい。さらに、オーディオI/O424が第2のバス420に連結されてよい。他の複数のアーキテクチャが可能であることに留意されたい。例えば、図4のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバスまたは他の同様のアーキテクチャを実装してよい。
図5を見ると、本願発明の一実施形態に係る、具体的な第2の例示的システム500のブロック図が示されている。図4と図5とで同様の要素は、同様の参照番号を付し、図5の他の複数の態様を不明瞭にするのを回避すべく、図4の複数の特定の態様は図5で省略されている。
図5は、プロセッサ470および480はそれぞれ、統合メモリおよびI/O制御ロジック(CL)472および482を含んでよいことを示す。すなわち、CL472、482は複数の統合メモリコントローラユニットを含み、I/O制御ロジックを含む。図5は、CL472、482に連結されるのはメモリ432、434だけでなく、複数のI/Oデバイス514もCL(制御ロジック)472、482に連結されることを示す。レガシI/Oデバイス515が、チップセット490に連結される。
図6を見ると、本願発明の一実施形態に係るSoC600のブロック図が示されている。図2と同様の複数の要素には、同様の複数の参照番号が付されている。また、複数の破線ボックスは、より高度な複数のSoC上の複数のオプションの特徴である。図6で、相互接続ユニット602は次のものに連結される。すなわち、一連の1または複数のコア502Aから502Nおよび共有キャッシュユニット506を含むアプリケーションプロセッサ610。システムエージェントユニット510。バスコントローラユニット516。統合メモリコントローラユニット514。統合グラフィックスロジック、イメージプロセッサ、オーディオプロセッサ、およびビデオプロセッサを含められる一連の1または複数のコプロセッサ620。スタティックランダムアクセスメモリ(SRAM)ユニット630。ダイレクトメモリアクセス(DMA)ユニット632。1または複数の外部ディスプレイに連結されるディスプレイユニット640。一実施形態において、コプロセッサ620は例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、埋め込みプロセッサ等の特定用途用プロセッサを含む。
本明細書に記載の複数のメカニズムに係る複数の実施形態は、ハードウェア、ソフトウェア、ファームウェアまたはそのような実装アプローチの組み合わせとして実装されてよい。本発明の複数の実施形態は、少なくとも1つのプロセッサ、ストレージシステム(揮発性および不揮発性メモリおよび/または複数のストレージ要素を含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを備える、複数のプログラム可能なシステム上で実行される複数のコンピュータプログラムまたはプログラムコードとして実装されてよい。
本明細書に記載の複数の関数を実行し、出力情報を生成すべく、図4に示されるコード430等のプログラムコードが複数の入力命令に適用されてよい。出力情報は既知の方法で、1または複数の出力デバイスに適用されてよい。本願の複数の意図において、処理システムとは例えば、デジタルシグナルプロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)またはマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
処理システムと通信すべく、プログラムコードは高水準の手続き型またはオブジェクト指向型プログラミング言語で実装されてよい。プログラムコードはまた、必要に応じて、アセンブリまたは機械言語で実装されてよい。実際、本明細書に記載の複数のメカニズムは、いかなる特定のプログラミング言語にも範囲限定されない。いかなる場合も、言語はコンパイラ型言語またはインタープリタ型言語であってよい。
少なくとも1つの実施形態に係る1または複数の態様は、様々なロジックをプロセッサ内で示す機械可読媒体上に格納される複数の代表的命令によって実装されてよい。代表的命令とは機械により読み取られると、機械に対し、本明細書に記載の複数の技術を実行させるロジックを作成させるものである。複数の「IPコア」として知られるそのような複数の表現命令が有形の機械可読媒体上に格納されてよく、様々なカスタマまたは製造業の設備に提供され、実際にロジックまたはプロセッサを形成する複数の製造機械にロードされてよい。
そのような機械可読記憶媒体は、限定はされないが、機械またはデバイスによって製造または形成される複数の物品の非一時的かつ有形な複数の構成を含んでよい。そのようなものとして、複数のハードディスク、複数のフロッピー(登録商標)ディスク、複数の光ディスク、複数のCD‐ROM、複数のCD−RW、および複数の光磁気ディスクを含む任意の他のタイプのディスク、複数の読み取り専用メモリ(ROM)、複数のDRAM、複数のSRAM等の複数のランダムアクセスメモリ(RAM)、複数のEPROM,複数のフラッシュメモリ、複数のEEPROM、複数の相変化メモリ(PCM)、複数の磁気カード若しくは光カード等の半導体デバイス、あるいは複数の電子的な命令を格納するのに好ましい、他の任意のタイプの媒体といったストレージ媒体がある。
従って、本発明の複数の実施形態はまた、複数の命令を含む、またはハードウェア記述言語(HDL)等の設計データを含む非一時的で有形な機械可読媒体を含む。ハードウェア記述言語は本明細書に記載の複数の構造、回路、装置、プロセッサおよび/またはシステム機能を定義する。そのような複数の実施形態は複数のプログラム製品と呼ばれることもある。
場合によって、命令コンバータを使用して、ソース命令セットの命令をターゲット命令セットに変換してよい。例えば、命令コンバータは、命令をコアによって処理される1または複数の他の命令に、トランスレート(例えば、スタティックバイナリ変換、ダイナミックコンパイルを含むダイナミックバイナリ変換を使用して)、モーフィング、エミュレート、または変換してよい。命令コンバータはソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせとして実装されてよい。命令コンバータはプロセッサ上、プロセッサの外部、または部分的にプロセッサ上および部分的にプロセッサ外部にあってよい。
図7は、本発明の複数の実施形態に従って、ソース命令セット内の複数のバイナリ命令をターゲット命令セット内の複数のバイナリ命令に変換する、ソフトウェア命令コンバータの使用を対比させるブロック図である。図示の実施形態において、命令コンバータはソフトウェア命令コンバータであるが、代替的に、命令コンバータはソフトウェア、ファームウェア、ハードウェアまたはこれらの様々な組み合わせで実装できる。図7は、少なくとも1つのx86命令セットコアを有するプロセッサ716によってネイティブに実行され得るx86バイナリコード706を生成すべく、x86コンパイラ704を使用してコンパイル可能な高水準言語702のプログラムを示す。少なくとも1つのx86命令セットコアを有するプロセッサ716は、次のような任意のプロセッサを表す。すなわち、そのようなプロセッサとは、少なくとも1つのx86命令セットコアを有するIntel(登録商標)プロセッサと実質的に同一の結果を実現すべく、次の(1)または(2)を互換性のある状態で実行あるいは処理することで、少なくとも1つのx86命令セットコアを有するIntel(登録商標)プロセッサと実質的に同一の複数の機能を実行可能なプロセッサである。(1)Intel(登録商標)x86命令セットコアの命令セットの大部分、または(2)少なくとも1つのx86命令セットコアを有するIntel(登録商標)プロセッサ上での実行用の複数のアプリケーション若しくは他のソフトウェアのオブジェクトコードの複数のバージョン。x86コンパイラ704は、追加のリンケージ処理のあるなしに関わらず、少なくとも1つのx86命令セットコア716を有するプロセッサ上で実行可能なx86バイナリコード706(オブジェクトコード等)を生成すべく動作可能なコンパイラを表す。同様に、図7は、少なくとも1つのx86命令セットコアを有さないプロセッサ714(例えば、カリフォルニア州のサニーベールにあるMIPS TechnologiesのMIPS命令セットを実行するおよび/またはカリフォルニア州のサニーベールのARM HoldingsのARM命令セットを実行する複数のコアを有するプロセッサ)によってネイティブで実行され得る代替の命令セットバイナリコード710を生成すべく、代替の命令セットコンパイラ708を使用してコンパイル可能な高水準言語702のプログラムを示す。x86バイナリコード706を、x86命令セットコアを有さないプロセッサ714によってネイティブで実行され得るコードに変換すべく、命令コンバータ712が使用される。この変換が可能な命令コンバータの作成は難しいので、この変換されたコードは代替の命令セットバイナリコード710と同一でない可能性がある。しかしながら、変換されたコードは全般的な操作を遂行し、代替の命令セットの複数の命令で構成される。よって、命令コンバータ712はエミュレーション、シミュレーションまたは任意の他の処理を介して、x86命令セットプロセッサまたはコアを有さないプロセッサまたは他の電子デバイスがx86バイナリコード706を実行できるようにするソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表す。
[複数のハッシュ動作を効率的に実行する方法および装置]
本発明の一実施形態は、ハッシュ動作を効率的に実行するための新しい命令および支援ハードウェアを含む。以下に記載の複数の実施形態はSM3ハッシュアルゴリズムに重点を置く一方で、本発明の複数の根本的な原理はSM3に提供される特有の実装に限定されない。例えばSM3を実装するための以下に記載の同一の技術が、他の複数のハッシュアルゴリズムおよび/または他の複数のタイプの処理関数を効率的に実行すべく使用されてよい。さらに、一実施形態はIntel Architecture(IA)の拡張として実装される一方で、本発明の根本的な複数の原理は任意の特定のISAに限定されない。
図8に示される通り、本発明に係る複数の実施形態が実装され得る例示のプロセッサ855は、本明細書に記載の効率的な複数のハッシュ技術を実行するハッシュ関数実行ロジック841を持つ実行ユニット840を含む。レジスタセット805は、実行ユニット840が命令ストリームを実行する際、複数のオペランド、制御データおよび他の複数のタイプのデータのためのレジスタストレージを提供する。一実施形態において、レジスタセット805は、IAのストリーミングSIMD拡張命令(SSE)アーキテクチャの一部として指定される複数のXMMのSIMD(Single Instruction Multiple Data)レジスタ等の128ビットの複数のレジスタを含む。あるいは、またはそれに加え、上記複数のレジスタはIAのAVX(Advanced Vector Extensions)2アーキテクチャの一部として指定される複数のYMMのSIMDレジスタ等の256ビットの複数のレジスタを含んでよい。しかしながら、本発明の根本的な複数の原理は特定のレジスタタイプまたはレジスタサイズに限定されない。
わかりやすく、単一のプロセッサコア(「コア0」)の詳細が図8に示されている。しかしながら、図8に示される各コアはコア0と同一のロジックセットを有してよいことを理解されたい。図示の通り、各コアは、特定のキャッシュ管理ポリシーに従い、複数の命令およびデータをキャッシュする、専用のレベル1(L1)キャッシュ812およびレベル2(L2)キャッシュ811も含んでよい。L1キャッシュ812は複数の命令を格納するための個別の命令キャッシュ820およびデータを格納するための個別のデータキャッシュ821を含む。様々なプロセッサキャッシュ内に格納された複数の命令およびデータは、固定サイズ(64、128、512バイト長等)であり得る複数のキャッシュラインの精度で管理される。この例示の実施形態に係る各コアは、メインメモリ800および/または共有レベル3(L3)キャッシュ816から複数の命令をフェッチする命令フェッチユニット810、複数の命令をデコードするデコードユニット820(プログラムの複数の命令を複数のマイクロオペレーションまたは複数の「uop」にデコードする等)、複数の命令を実行する実行ユニット840(例えば、本明細書に記載の複数の述語命令)および複数の命令をリタイアさせ、複数の結果をライトバックするライトバックユニット850を有する。
命令フェッチユニット810は、様々な周知のコンポーネントを含む。これらには、メモリ800(または複数のキャッシュの1つ)からフェッチされる次の命令のアドレスを格納する次の命令ポインタ803、アドレス変換の速度を改善すべく最近使用された仮想命令アドレスに対する物理命令アドレスのマップを格納する命令トランスレーションルックアサイドバッファ(ITLB)804、複数の命令分岐アドレスを推測的に予測する分岐予測ユニット802、および複数の分岐アドレスおよび複数のターゲットアドレスを格納するブランチターゲットバッファ(BTB)801がある。複数の命令はいったんフェッチされると今度は、デコードユニット830、実行ユニット840、ライトバックユニット850を含む、命令パイプラインの残りの複数の段階に送られる。これらのユニットの各々の構造および機能は当業者によって十分理解されており、本発明の様々な実施形態に関する複数の態様を不明瞭にするのを回避すべく、本明細書では詳細に記載されない。
上記の通り、一実施形態において、実行ユニット840内のハッシュ関数ロジック841はSM3ハッシュアルゴリズムをより効率的に処理すべく、様々な技術を実行する。故に、SM3ハッシュアルゴリズムの基本的な複数の原理についての簡単な説明がまず提供され、その後に、本発明の複数の実施形態についての詳細な説明が続く。
本明細書で使用されるように「メッセージ」は、SM3ハッシュが実行されるバイナリコードを意味する。「メッセージダイジェスト」または「ダイジェスト」はハッシュ動作の最終結果である。SM3アルゴリズムは、複数のメッセージを複数の完全な512ビットのブロックにセグメント化する「スタッフィング」方法を指定する。SM3圧縮アルゴリズムは、複数の中間ブロックの出力状態が次の512ビットブロック圧縮の入力状態として機能する状況で、複数の512ビットブロックのシーケンス上で実行される。各ブロックの圧縮の状態および最終ダイジェストは256ビット値である。256ビットの状態値は、ワードA、B、C、D、E、F、GおよびHとして表される8つの32ビット「語」に区画化され、「ビッグエンディアン」形式(Aの次にB等)で指定される。図9は、複数の状態値の第1のセット901が複数の状態値の第2のセット902に変換されるRound処理中に、実行される複数の操作を図示する。初期の状態値は、SM3規格で定義される定数である。特に、512ビットブロックのための圧縮関数は以下のように定義される。
Figure 2015212804
ここで、
Figure 2015212804
変数SS1、SS2、TT1、およびTT2は、各反復処理で使用される複数の内部中間値である。Tjは0≦j≦15の場合、79cc4519および16≦j≦63の場合、7a879d8aと指定される。各Roundの(Tj<<<j)入力はあらかじめ設定されてよく、Round値jによって参照されるテーブルからロードされてよい。P0関数は、
Figure 2015212804
として指定される線形変換順列関数である。
圧縮される512ビットのブロックは、W0からW15までのようなビッグエンディアン形式で参照される32ビットの16語に区画化される。W'入力は、以下のように指定される。
Figure 2015212804
よって、W'0からW'11までは初期ブロックデータからの単一のxor関数で特定され得る。
Round16から63のWj入力およびRound12から63の
Figure 2015212804
入力は、次のように指定される「メッセージ拡張」(メッセージスケジューラ)に従い展開される。
Figure 2015212804
ここで、P1は別の順列関数であり、次のように指定される。
Figure 2015212804
また、Round60から63までの
Figure 2015212804
の展開において
Figure 2015212804
項をサポートすべく、j=64からj=67までのWjが計算される。
IAストリーミングSIMD拡張命令(SSE)アーキテクチャの一部として指定される複数のXMM SIMD(Single Instruction Multiple Data)レジスタ等の128ビットレジスタファイルを持つプロセッサ上でのSM3ハッシュアルゴリズムの性能を向上させるべく、またはIA AVX(Advanced Vector Extensions)2アーキテクチャの一部として指定される複数のYMM SIMDレジスタ等の256ビットのレジスタファイルを持つプロセッサ上でのSM3ハッシュアルゴリズムの性能を向上させるべく、本発明の一実施形態は、複数の新しい命令を含む。128ビットSSEアーキテクチャに指定される命令は、暗黙的なオペランドレジスタの使用を必要とするものの、同一のXXMベースの命令を使用する、電力効率が良く高性能の、さらなる広範囲のコアにおいて、SM3の加速化を可能にするという利点がある。
本発明の一実施形態は、SM3状態はAからHの8つの状態変数を含む一方で、変数B、D、F及びHは前のRoundの変数A、C、E及びGをそれぞれ単純に再利用するだけで更新され、よって、何の計算も必要としないという点をうまく利用する。特に、上記の通り、現在のRoundは以下のようになる。
B(現在のRound)←A(前のRound)
D(現在のRound)←C(前のRound)
F(現在のRound)←E(前のRound)および
H(現在のRound)←G(前のRound)
よって、本発明の一実施形態では、各Roundについて、状態変数A、C、E、Gのみ計算する。具体的には次のようになる。変数AはTT1によって更新される。変数EはP0(TT2)によって更新される。変数CはB<<<9の最後のRound変数によって更新される。変数GはF<<<19の最後のRound変数によって更新される。
残りの状態値B、D、F、およびHは、以下に記載されるように、各処理Roundの複数のレジスタ指定を変更するのみで特定される。
特に、256ビットの全SM3状態は、2つの128ビットXMMレジスタ(例えばxmm1およびxmm2)を必要とするが、残る問題は、8つの変数AからHをいかに理想的に区画化するかというだけである。上記の複数の見解を使用し、本発明の一実施形態は、次のような効率的なレジスタ区画化を使用する。図10に示すように、複数のSM3状態変数が2つのXMMレジスタ、XMM1 1002およびXMM2 1010に保持される。XMM1 1002は複数の奇数のRoundに対するA、C、EおよびGを、複数の偶数のRoundに対するB、D、F及びHを含み、XMM2 1010は複数の奇数のRoundに対するB、D、F、Hを、複数の偶数のRoundに対するA、C、E、Gを含む。図10は、Round1に対して、XMM2 1010に格納される値A1、C1、E1、およびG1に到達するべく、サイクル1から3を使用するRound0(A0からG0の指定で示される)の詳細を示す。
図10は、各サイクルで複数の値を計算する際に関わるロジックを示すが、パイプラインの複数の技術またはパイプライン化プロセッサアーキテクチャ内で採用され得る他の複数の実装に関する詳細は特に示さないことに留意されたい。これらの詳細は当業者によって十分理解されており、本発明の根本的な複数の原理を不明瞭にするのを回避すべく、図10には示さない。
128ビットのデータパスおよびレジスタファイルについて、SM3ハッシュの単一のRoundを更新するための命令に係る一実施形態は、次のように指定される。SM3RND XMMsrcdst, XMMsrc, IMMここで、XMMsrcdstは複数の奇数のRoundのXMM1 1002および複数の偶数のRoundのXMM2 1010であり、XMMsrcは複数の偶数のRoundのXMM1 1002および複数の奇数のRoundのXMM2 1010である。一実施形態において、即値であるIMMは、j=0から15の場合は0に、j=16から63の場合は1に設定される。
図10の具体的な詳細を見ると、一実施形態において、XMM0 1001はRound0のサイクル1に対し、
Figure 2015212804
を含む暗黙的なソースである。これらの値がXMM1 1002からのA0、C0、E0及びG0とともに使用され、サイクル2の複数の値が計算される。内部一時ストレージ1008(非アーキテクチャ的レジスタまたはバッファ等)は、図示のとおり、SS2、SS1、Wj'、およびWjに対する複数の新しい値を格納する。SS1は次のように計算される。値Aは演算子1003を使用し、左に12回回転される。桁上げ保存加算器1004は加算器1005と組み合わされ、A<<<12の結果をEおよびTj<<<Jと結合する。次に、結合された結果が演算子1006を使用し、左に7回回転される。SS2がXOR演算子1007を使用し、A<<<12をSS1とXORすることで計算される。図示の通り、Wj'およびWjに対する複数の値がXMM0 1001を介して渡される。
上記の複数の値、A0、C0、E0、およびG0に対してXMM1 1002に格納された初期値、及びB0、D0、F0、およびH0に対してXMM2 1010に格納された初期値で、サイクル2が開始する。次のように、A、C、E、およびGに対する新しい値(Round1を示すべく、A1、C1、E1およびG1として記載)がサイクル2から3で計算され、XMM2 1010に格納される。演算子1011がA0、B0およびC0を複数の入力として使用し、FFj(A、B、C)を生成し(上記のFFjの方程式を参照)、演算子1013はE0F0G0を複数の入力として使用し、GGj(E、F、G)を生成する(上記のGGjの方程式を参照)。次に、A1に対する値が、桁上げ保存加算器1012および1015、および加算器1017を使い、FFj(A0、B0、C0)+D0+SS2+Wj'を使用し、計算される。C1の値は、演算子1018を介して左に9回転されたB0の値を使用し、計算される。E1の値は、P0をGGj(E0、F0、G0)+H0+SS1+Wjで乗算することで計算される。これは、桁上げ保存加算器1014と1016、および加算器1019で計算される。P0関数は、P0(X)=(X<<<9)xor(X<<<17)で指定される線形変換順列関数である。よって、E1はGGj(E0、F0、G0)+H0+SS1+WjにP0線形変換順列を実行することで計算される。G1の値は演算子1020によってF0を左に9回回転することで計算される。
重要なこととして、A1C1E1およびG1に対する値のみがサイクル2から3で計算される。B1、D1、F1、およびH1に対する値は、A0、C0、E0、およびG0の前の値から取得される。上記の通り、XMMsrcdstは複数の奇数のRoundに対するXMM1 1002および複数の偶数のRoundに対するXMM2 1010であり、XMMsrcは複数の偶数のRoundに対するXMM1 1002および複数の奇数のRoundに対するXMM2 1010である。よって、1つのRoundからのA、C、E及びGの値は独立して計算されず、あるいはこれらの値が次のRoundでB、D、F及びHになる際、1つのRoundからのA、C、E、Gの値は新しい複数のレジスタに物理的に移動されない。そうではなく、XMM1/XMM2レジスタの複数の指定をスワッピングすることで、これらの値は単純にB、D、F、およびHになるので、これにより複数の処理リソースを維持する。
代替の実施形態(例えば、AVX2または複数の256ビットレジスタを持つ他のアーキテクチャ)において、単一のYMM SIMDレジスタ内でSM3のRoundに対し完全な状態更新を実行する、複数の256ビットYMMレジスタを使用する命令は、SM3RND YMM1、YMM2として指定され得る。ここで、YMM1は8×32ビットSM3状態に対するソース/デスティネーションレジスタであり、YMM2は現在のRoundに対する
Figure 2015212804
を含むソースレジスタである。
さらに高性能な代替的な第2の定義は、SM3ハッシュの2つの完全なRoundを5サイクルのSIMDパイプで実行でき、次のように指定される。SM3RNDS2 YMM1, YMM2, YMM3 ここでYMM1は、ソースとしてのRoundjに対するSM3状態を持つソース/デスティネーションレジスタであり、Roundj+2に対する結果のSM3状態は、デスティネーションとしてライトバックされる。この実施形態において、YMM2は
Figure 2015212804
に対するソースレジスタであり、YMM3は
Figure 2015212804
に対するソースレジスタである。一実施形態において、これはすべての
Figure 2015212804
を保持するYMM2を持つ2つのレジスタを用いてのみ指定されることに留意されたい。
単一の場合のSM3Round命令代替および2つの場合のSM3Round命令代替の両方について、Round16から63に対するWjおよびRound12から63までの
Figure 2015212804
の展開は、SM3性能がメッセージ拡張によって影響されないよう、複数のパラメータを複数の入力として使用する複数のRound命令に先行し、および前の複数のRoundの複数のRound命令と並行して計算可能である。
図11は、本発明の一実施形態に係る方法を示す。1101において、SM3等のハッシュ動作がプロセッサ内で初期化される。例えば、本明細書に記載のSM3命令の1つがデコードされ、その結果の複数のuopが実行ユニットの1または複数の実行ポートに提供されてよい。また、複数のハッシュ動作を実行するのに必要な複数の初期値は、複数の適切なストレージ位置に設定される。例えば、上記のように、XMM0は第1のRound処理のための(Tj<<<j)、WjおよびWj'を含むべく、更新されてよい。同様に、図10に図示される一時ストレージ1008はSS2、SS1、Wj'およびWjに対する複数の値と共に更新されてよい。
1102において、複数の状態値の第1のセット(A0、C0、E0、およびG0等)は、複数のロジカルストレージ位置の第1のセット(例えば、XMM1)内に格納され、複数の状態値の第2のセット(B0、D0、F0およびH0等)は複数のロジカルストレージ位置の第2のセット(例えば、XMM2)内に格納される。1103において、処理の「奇数」Roundが複数の状態値の第1のセットおよび第2のセットを使用し実行され、更新された複数の状態値の第1のセットを生成する(例えば、複数の新しい値A1、C1、E1、およびG1が計算される)。
1104において、複数の状態値の第2のセットが、非更新の複数の状態値の第1のセットと等しくなるよう自動的に設定されるように、複数の第1のロジカルストレージ位置および複数の第2のロジカルストレージ位置の複数の指定がスワッピングされる。例えば、図10の実施形態において、複数のSM3の状態変数が2つのXMMレジスタ、XMM1 1002およびXMM2 1010に保持される。ここで、XMM1 1002は複数の奇数のRoundに対するA、C、E及びG並びに複数の偶数のRoundに対するB、D、F及びHを含み、XMM2 1010は複数の奇数のRoundに対するB、D、F及びH並びに複数の偶数のRoundに対するA、C、E及びGを含む。よって、各Roundにおいて、単純に複数のレジスタ指定(即ち、どの複数の状態変数がどの複数のレジスタに格納されるといった指示)をスワッピングするだけで、B、D、F、およびHに対する値は、それぞれA、C、E、およびGの前の値に自動的に設定される。よって、本明細書で使用されるように、複数のストレージ位置の複数の「指定」をスワッピングするとは、複数のストレージ位置に格納されるデータの指示を変更することを意味する。
1105において、新しく計算されたA、C、E、およびGの値が、新しく指定された複数の第2のロジカルストレージ位置に格納される(例えば、図10に示される例示のXMM2内に格納されるA1、C1、E1、およびG1)。1106において、複数の計算の複数の偶数のRoundが複数の状態変数の第1のセットおよび第2のセットを使用し実行され、複数の状態変数(例えば、A、C、E、およびG)の第1のセットを再度更新する。
1107において、複数の状態値の第2のセットが非更新の複数の状態値の第1のセットと等しくなるよう自動的に設定されるように、複数の第1のロジカルストレージ位置および複数の第2のロジカルストレージ位置の複数の指定が再度スワッピングされる。前述の通り、一実施形態において、A、C、E及びG並びにB、D、F及びHを含む複数の指定されたレジスタは奇数のRoundおよび偶数のRoundについて、スワッピングされる。よって、B、D、F、およびHの値は、複数のレジスタ指定をスワッピングすることで、それぞれA、C、E、およびGの前の値に再度、自動的に設定される。1108において、更新された複数の状態値の第1のセットは複数の第1のロジカルストレージ位置(図10のXMM1等)に格納される。次に当該方法は、1108で判断されるハッシュ動作の完了まで1103から1108の間を反復する。
複数の最適なSM3実装は現在、FPGAまたはASIC専用ハードウェアである。ソフトウェアにおけるSM3の性能は、各SM3Roundおよびメッセージ拡張の計算で必要とされる依存操作の数が原因で低い。本明細書に記載された、複数のSM3RND命令を追加することで、5つのプロセッササイクルで実行されるSM3ハッシュ圧縮関数の2つのRound、あるいは3つのプロセッササイクルで完了されるSM3の単一のRoundのいずれかを可能にする。これは複数の最適なソフトウェア実装に対し、4倍を超える改善を提供すると予測される。
他の複数の実施形態において、jを指定すべく、イミディエートバイトが使用される(Tjを含むYMMレジスタの代わり)。これらの実施形態においては、YMM2は複数のW値を含むことができるのに対し、YMM3はW'を含むことができる。さらに、YMM2は上記と同様に定義されてよく、またYMM2はW&W'の組み合わされた複数の値を含んでよい(YMM3を必要としない)。
前述の明細書において、本発明は複数の特定の例示的な実施形態に即して記載された。しかしながら、添付の特許請求の範囲に記載された本発明のさらなる広範な精神および範囲から逸脱することなく、上記実施形態に対し様々な変形および変更を加えられることは明白である。従って、本明細書および複数の図面は、限定的な意味ではなく、例示的な意味としてみなされる。
本発明の複数の実施形態は、上記した様々な段階を含んでよい。上記複数の段階は、一般用途用プロセッサまたは特定用途用プロセッサに対し、上記複数の段階を実行させるべく使用され得る、複数の機械実行可能命令として具現化されてよい。あるいは、これらの段階は、上記段階を実行するための配線論理を含む複数の特定のハードウェアコンポーネントによって、あるいは複数のプログラムされたコンピュータコンポーネントおよび複数のカスタムハードウェアコンポーネントの任意の組み合わせによって実行されてよい。
本明細書に記載の通り、複数の命令は、特定の複数の操作を実行すべく構成された、あるいは所定の機能を有する特定用途向け集積回路(ASIC)等の特定の複数のハードウェア構成を参照してよく、または複数の命令は、非一時的コンピュータ可読媒体に具現されたメモリ内に格納された複数のソフトウェア命令を参照してよい。よって、複数の図面に示された複数の技術は、1または複数の電子デバイス(エンドステーション、ネットワーク要素等)上で格納され実行されるコードおよびデータを使用して実装可能である。そのような複数の電子デバイスは、非一時的コンピュータ機械可読記憶媒体(例えば、複数の磁気ディスク、複数の光ディスク、ランダムアクセスメモリ、リードオンリメモリ、複数のフラッシュメモリデバイス、相変化メモリ)および一時的コンピュータ機械可読通信媒体(複数の搬送波、複数の赤外線信号、複数のデジタル信号等の電子的形式、光学的形式、音響的形式または他の形式の複数の伝搬信号)等のコンピュータ機械可読媒体を使用し、コードおよびデータを格納および通信する(内部的におよび/またはネットワーク上で他の複数の電子デバイスとともに)。また、そのような複数の電子デバイスは通常、1または複数のストレージデバイス(非一時的機械可読記憶媒体)、複数のユーザ入出力デバイス(例えばキーボード、タッチスクリーンおよび/またはディスプレイ)、および複数のネットワーク接続等の1または複数の他のコンポーネントに連結された1または複数のプロセッサのセットを含む。上記プロセッサのセットおよび他の複数のコンポーネントの連結は通常、1または複数のバスおよびブリッジを(バスコントローラとも呼ばれる)介してなされる。ストレージデバイスおよびネットワークトラフィックを搬送する複数の信号はそれぞれ、1または複数の機械可読記憶媒体および機械可読通信媒体を示す。よって、特定の電子デバイスのストレージデバイスは通常、その電子デバイスの1または複数のプロセッサのセット上で実行されるコードおよび/またはデータを格納する。もちろん、本発明の一実施形態に係る1または複数の部分は、ソフトウェア、ファームウェアおよび/またはハードウェアの様々な組み合わせを用いて実装可能である。本詳細な説明の随所において、説明の意図として、本願発明の完全な理解を提供すべく、多くの具体的な詳細が記載された。しかしながら、本願発明は、これらの具体的な詳細の一部がなくても実施可能であることは当業者にとって明白である。特定の複数の例において、本願発明の主題を不明瞭にするのを回避すべく、複数の周知の構造および機能は詳細に記載されていない。従って、本発明の範囲及び精神は以降の特許請求の範囲に照らし、判断されるべきである。

Claims (25)

  1. ハッシュ関数を実行する方法であって、
    前記ハッシュ関数の複数のRoundを計算するために使用される複数の状態値の第1のセットを格納するように第1のストレージ位置をはじめに指定する段階と、
    前記ハッシュ関数の複数のRoundを計算するためにまた使用される複数の状態値の第2のセットを格納するように第2のストレージ位置をはじめに指定する段階と、
    前記複数の状態値の第1のセットおよび前記複数の状態値の第2のセットを使用し、前記ハッシュ関数の複数のRoundを実行する段階とを備え、
    複数のRoundの第1のセットのための前記複数の状態値の第1のセットおよび複数のRoundの第2のセットのための前記複数の状態値の第2のセットを格納すべく前記第1のストレージ位置が指定され、前記複数のRoundの第1のセットのための前記複数の状態値の第2のセットおよび前記複数のRoundの第2のセットのための前記複数の状態値の第1のセットを格納すべく前記第2のストレージ位置が指定されるように、前記実行する段階が、前記第1のストレージ位置および前記第2のストレージ位置の複数の前記指定をスワッピングすることを含む、方法。
  2. 前記複数のRoundの第1のセットが複数の偶数のRoundを有し、前記複数のRoundの第2のセットが複数の奇数のRoundを有する、請求項1に記載の方法。
  3. 前記実行する段階がさらに、
    各Roundにおいて、既存の複数の状態値の第1のセットおよび既存の複数の状態値の第2のセットを使用し、新しい複数の状態値の第1のセットを計算する段階と、
    前記複数の状態値の第2のセットを前記既存の複数の状態値の第1のセットに等しくなるよう設定する段階とを有する、請求項1または2に記載の方法。
  4. 前記複数の状態値の第2のセットを前記既存の複数の状態値の第1のセットに等しくなるよう前記設定する段階の動作が、前記第1のストレージ位置および前記第2のストレージ位置の複数の前記指定を前記スワッピングすることによって自動的に実行される、請求項3に記載の方法。
  5. 前記第1のストレージ位置および前記第2のストレージ位置の各々が、128ビットパックレジスタを有する、請求項4に記載の方法。
  6. 前記第1のストレージ位置および前記第2のストレージ位置の各々が、256ビットパックレジスタを有する、請求項4に記載の方法。
  7. 前記ハッシュ関数がセキュアメッセージ(SM)3ハッシュ関数を有しており、前記複数の状態値の第1のセットは前記SM3ハッシュ関数のA変数、C変数、E変数、およびG変数を有し、前記複数の状態値の第2のセットは前記SM3ハッシュ関数のB変数、D変数、F変数、およびH変数を有する、請求項3に記載の方法。
  8. 前記複数の状態値の第1のセットおよび前記複数の状態値の第2のセットの各値が32ビット値を有する、請求項1から7のいずれか一項に記載の方法。
  9. 前記複数の状態値の第1のセットが、4つの32ビット値を有し、前記複数の状態値の第2のセットが別の4つの32ビット値を有する、請求項8に記載の方法。
  10. プロセッサであって、
    ハッシュ関数の複数の状態変数が格納される、第1のストレージ位置と第2のストレージ位置とを含むレジスタセットと、
    前記ハッシュ関数を実行し、かつ、前記ハッシュ関数の複数のRoundを計算するために使用される複数の状態値の第1のセットを格納するように前記第1のストレージ位置をはじめに指定し、かつ、前記ハッシュ関数の前記複数のRoundを計算するためにまた使用される複数の状態値の第2のセットを格納するように前記第2のストレージ位置をはじめに指定する実行ユニットと、
    前記複数の状態値の第1のセットおよび前記複数の状態値の第2のセットを使用し、前記ハッシュ関数の複数のRoundを実行する前記実行ユニットであって、複数のRoundの第1のセットのための前記複数の状態値の第1のセットおよび複数のRoundの第2のセットのための前記複数の状態値の第2のセットを格納すべく前記第1のストレージ位置が指定され、前記複数のRoundの第1のセットのための前記複数の状態値の第2のセットおよび前記複数のRoundの第2のセットのための前記複数の状態値の第1のセットを格納すべく前記第2のストレージ位置が指定されるように、前記第1のストレージ位置および前記第2のストレージ位置の複数の前記指定をスワッピングすることを実行することが含む前記実行ユニットとを備えるプロセッサ。
  11. 前記複数のRoundの第1のセットが複数の偶数のRoundを有し、前記複数のRoundの第2のセットが複数の奇数のRoundを有する、請求項10に記載のプロセッサ。
  12. 実行することがさらに、
    各Roundにおいて、既存の複数の状態値の第1のセットおよび既存の複数の状態値の第2のセットを使用し、新しい複数の状態値の第1のセットを計算することと、
    前記複数の状態値の第2のセットを前記既存の複数の状態値の第1のセットに等しくなるよう設定することとを含む、請求項10または11に記載のプロセッサ。
  13. 前記複数の状態値の第2のセットを前記既存の複数の状態値の第1のセットに等しくなるよう前記設定する動作が、前記第1のストレージ位置および前記第2のストレージ位置の複数の前記指定を前記スワッピングすることによって自動的に実行される、請求項12に記載のプロセッサ。
  14. 前記第1のストレージ位置および前記第2のストレージ位置の各々が、128ビットパックレジスタを有する、請求項13に記載のプロセッサ。
  15. 前記第1のストレージ位置および前記第2のストレージ位置の各々が、256ビットパックレジスタを有する、請求項13に記載のプロセッサ。
  16. 前記ハッシュ関数がセキュアメッセージ(SM)3ハッシュ関数を有しており、前記複数の状態値の第1のセットは前記SM3ハッシュ関数のA変数、C変数、E変数、およびG変数を有し、前記複数の状態値の第2のセットは前記SM3ハッシュ関数のB変数、D変数、F変数、およびH変数を有する、請求項12に記載のプロセッサ。
  17. 前記複数の状態値の第1のセットおよび前記複数の状態値の第2のセットの各値が32ビット値を有する、請求項10から16のいずれか一項に記載のプロセッサ。
  18. 前記複数の状態値の第1のセットが、4つの32ビット値および前記複数の状態値の第2のセットが別の4つの32ビット値を有する、請求項17に記載のプロセッサ。
  19. システムであって、
    複数の命令とデータとを格納するメモリと、
    前記複数の命令とデータとをキャシュする複数のキャッシュレベルを有するキャッシュサブシステムと、
    ネットワーク上で前記システムを通信可能に連結するネットワークインタフェースと、
    1または複数の周辺機器から複数のコマンドを受信する、少なくとも1つの入出力ユニットと、
    プロセッサとを備え、
    前記プロセッサが
    ハッシュ関数の複数の状態変数が格納される、第1のストレージ位置と第2のストレージ位置とを含むレジスタセットと、
    前記ハッシュ関数を実行し、かつ、前記ハッシュ関数の複数のRoundを計算するために使用される複数の状態値の第1のセットを格納するように前記第1のストレージ位置をはじめに指定し、かつ、前記ハッシュ関数の前記複数のRoundを計算するためにまた使用される複数の状態値の第2のセットを格納するように前記第2のストレージ位置をはじめに指定する実行ユニットと、
    前記複数の状態値の第1のセットおよび前記複数の状態値の第2のセットを使用し、前記ハッシュ関数の複数のRoundを実行する前記実行ユニットであって、複数のRoundの第1のセットのための前記複数の状態値の第1のセットおよび複数のRoundの第2のセットのための前記複数の状態値の第2のセットを格納すべく前記第1のストレージ位置が指定され、前記複数のRoundの第1のセットのための前記複数の状態値の第2のセットおよび前記複数のRoundの第2のセットのための前記複数の状態値の第1のセットを格納すべく前記第2のストレージ位置が指定されるように、前記第1のストレージ位置および前記第2のストレージ位置の複数の前記指定をスワッピングすることを実行することが含む前記実行ユニットとを備える、システム。
  20. 前記複数のRoundの第1のセットが複数の偶数のRoundを有し、前記複数のRoundの第2のセットが複数の奇数のRoundを有する、請求項19に記載のシステム。
  21. 実行することがさらに、
    各Roundにおいて、既存の複数の状態値の第1のセットおよび既存の複数の状態値の第2のセットを使用し、新しい複数の状態値の第1のセットを計算することと、
    前記複数の状態値の第2のセットを前記既存の複数の状態値の第1のセットに等しくなるよう設定することとを含む、請求項19または20に記載のシステム。
  22. 前記複数の状態値の第2のセットを前記既存の複数の状態値の第1のセットに等しくなるよう前記設定する動作が、前記第1のストレージ位置および前記第2のストレージ位置の複数の前記指定を前記スワッピングすることによって自動的に実行される、請求項21に記載のシステム。
  23. 前記第1のストレージ位置および前記第2のストレージ位置の各々が、128ビットパックレジスタを有する、請求項22に記載のシステム。
  24. 前記第1のストレージ位置および前記第2のストレージ位置の各々が、256ビットパックレジスタを有する、請求項22に記載のシステム。
  25. 前記ハッシュ関数がセキュアメッセージ(SM)3ハッシュ関数を有しており、前記複数の状態値の第1のセットは前記SM3ハッシュ関数のA変数、C変数、E変数、およびG変数を有し、前記複数の状態値の第2のセットは前記SM3ハッシュ関数のB変数、D変数、F変数、およびH変数を有する、請求項21に記載のシステム。
JP2015028528A 2014-03-27 2015-02-17 複数のハッシュ動作を効率的に実行する方法および装置 Expired - Fee Related JP6051458B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/228,056 2014-03-27
US14/228,056 US9912481B2 (en) 2014-03-27 2014-03-27 Method and apparatus for efficiently executing hash operations

Publications (2)

Publication Number Publication Date
JP2015212804A true JP2015212804A (ja) 2015-11-26
JP6051458B2 JP6051458B2 (ja) 2016-12-27

Family

ID=52822172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015028528A Expired - Fee Related JP6051458B2 (ja) 2014-03-27 2015-02-17 複数のハッシュ動作を効率的に実行する方法および装置

Country Status (7)

Country Link
US (1) US9912481B2 (ja)
JP (1) JP6051458B2 (ja)
KR (1) KR101732046B1 (ja)
CN (1) CN104951702B (ja)
DE (1) DE102015002254A1 (ja)
GB (1) GB2528343B (ja)
TW (2) TWI575388B (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9317719B2 (en) * 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10020934B2 (en) 2015-11-05 2018-07-10 Intel Corporation Hardware accelerator for cryptographic hash operations
CN106452769B (zh) * 2016-09-13 2019-11-29 杭州华为数字技术有限公司 一种数据处理方法、数据处理装置以及处理器
US10824428B2 (en) 2019-03-29 2020-11-03 Intel Corporation Apparatuses, methods, and systems for hashing instructions
CN114499465A (zh) * 2020-10-23 2022-05-13 北京京东方技术开发有限公司 散列算法及电路、电子设备
US11275726B1 (en) * 2020-12-06 2022-03-15 Kamu Data Inc. Distributed data processing method with complete provenance and reproducibility
CN113721986B (zh) * 2021-07-23 2024-02-09 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004109420A (ja) * 2002-09-18 2004-04-08 Sony Corp 乱数生成装置及び乱数生成方法
WO2006098015A1 (ja) * 2005-03-16 2006-09-21 Mitsubishi Denki Kabushiki Kaisha データ変換装置及びデータ変換方法
JP2012252281A (ja) * 2011-06-06 2012-12-20 Canon Inc 演算処理装置およびその方法、並びに、情報処理装置
WO2013095503A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Method and apparatus to process sha-1 secure hashing algorithm
WO2013147877A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Method and apparatus to process sha-2 secure hashing algorithm

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
US4250483A (en) 1978-01-30 1981-02-10 Rubner Anthony C System for signalized intersection control
DE68926200T2 (de) 1988-08-11 1996-10-17 Ibm Geheime Datenübertragung mittels Steuervektoren
US5339398A (en) 1989-07-31 1994-08-16 North American Philips Corporation Memory architecture and method of data organization optimized for hashing
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5649179A (en) 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5608801A (en) 1995-11-16 1997-03-04 Bell Communications Research, Inc. Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions
US5920900A (en) 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US5897637A (en) 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6067547A (en) 1997-08-12 2000-05-23 Microsoft Corporation Hash table expansion and contraction for use with internal searching
US5960434A (en) 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US6260055B1 (en) 1997-10-15 2001-07-10 Kabushiki Kaisha Toshiba Data split parallel shifter and parallel adder/subtractor
US6226710B1 (en) 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6360218B1 (en) 1998-10-26 2002-03-19 Microsoft Corporation Compact record format for low-overhead databases
US6307955B1 (en) 1998-12-18 2001-10-23 Topaz Systems, Inc. Electronic signature management system
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6578131B1 (en) 1999-04-27 2003-06-10 Microsoft Corporation Scaleable hash table for shared-memory multiprocessor system
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6631419B1 (en) 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search
US6594665B1 (en) 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
US6952770B1 (en) 2000-03-14 2005-10-04 Intel Corporation Method and apparatus for hardware platform identification with privacy protection
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020032551A1 (en) 2000-08-07 2002-03-14 Jabari Zakiya Systems and methods for implementing hash algorithms
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
WO2002056538A2 (en) 2001-01-12 2002-07-18 Broadcom Corporation Implementation of the shai algorithm
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US7249255B2 (en) * 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
KR100423811B1 (ko) 2001-12-12 2004-03-22 한국전자통신연구원 카스미 암호화 알고리즘을 응용한 암호화 장치
US7395412B2 (en) 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7400722B2 (en) 2002-03-28 2008-07-15 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7165135B1 (en) 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
KR100950102B1 (ko) 2002-04-18 2010-03-29 어드밴스드 마이크로 디바이시즈, 인코포레이티드 보호 실행 모드로 동작 가능한 프로세서를 포함한 컴퓨터 시스템 및 상기 컴퓨터 시스템의 초기화 방법
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US7921300B2 (en) 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US7684563B1 (en) 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US7599489B1 (en) 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
US7602905B2 (en) * 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US7725624B2 (en) 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US8020142B2 (en) 2006-12-14 2011-09-13 Intel Corporation Hardware accelerator
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US8923510B2 (en) 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100250965A1 (en) 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
WO2011120421A1 (zh) 2010-03-31 2011-10-06 北京飞天诚信科技有限公司 加密引擎的实现方法
US8583902B2 (en) 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication
US8712039B2 (en) 2011-04-06 2014-04-29 Certicom Corp. Efficient implementation of hash algorithm on a processor
US8855302B2 (en) 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US10198248B2 (en) 2012-07-11 2019-02-05 Intel Corporation Parallel processing of a single data buffer
GB2496934B (en) 2012-08-07 2014-06-11 Imagination Tech Ltd Multi-stage register renaming using dependency removal
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US20140362098A1 (en) 2013-06-10 2014-12-11 Sharp Laboratories Of America, Inc. Display stream compression
CN103457719B (zh) 2013-07-23 2016-06-08 国家密码管理局商用密码检测中心 一种对sm3密码算法hmac模式的侧信道能量分析方法
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
CN103490895B (zh) 2013-09-12 2016-09-14 电小虎能源科技(北京)有限公司 一种应用国密算法的工业控制身份认证方法及装置
US9424209B2 (en) * 2013-09-19 2016-08-23 Intel Corporation Dynamic heterogeneous hashing functions in ranges of system memory addressing space
US9390246B2 (en) * 2013-09-25 2016-07-12 Intel Corporation Creating secure original equipment manufacturer (OEM) identification
US9250914B2 (en) * 2013-12-20 2016-02-02 Intel Corporation Method and apparatus for selecting cache locality for atomic operations
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9361106B2 (en) 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004109420A (ja) * 2002-09-18 2004-04-08 Sony Corp 乱数生成装置及び乱数生成方法
WO2006098015A1 (ja) * 2005-03-16 2006-09-21 Mitsubishi Denki Kabushiki Kaisha データ変換装置及びデータ変換方法
JP2012252281A (ja) * 2011-06-06 2012-12-20 Canon Inc 演算処理装置およびその方法、並びに、情報処理装置
WO2013095503A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Method and apparatus to process sha-1 secure hashing algorithm
WO2013147877A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Method and apparatus to process sha-2 secure hashing algorithm

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016037344; S. Shen, et al.: 'SM3 Hash function' Internet Engineering Task Force Internet-Draft draft-shen-sm3-hash-00, 20111024, p.1-16, [オンライン] *

Also Published As

Publication number Publication date
TWI610184B (zh) 2018-01-01
TWI575388B (zh) 2017-03-21
TW201738773A (zh) 2017-11-01
KR101732046B1 (ko) 2017-05-02
DE102015002254A1 (de) 2015-10-01
GB2528343B (en) 2016-12-14
CN104951702A (zh) 2015-09-30
GB2528343A (en) 2016-01-20
US9912481B2 (en) 2018-03-06
JP6051458B2 (ja) 2016-12-27
KR20150112782A (ko) 2015-10-07
US20150280917A1 (en) 2015-10-01
GB201503156D0 (en) 2015-04-08
CN104951702B (zh) 2018-11-09
TW201546628A (zh) 2015-12-16

Similar Documents

Publication Publication Date Title
JP6051458B2 (ja) 複数のハッシュ動作を効率的に実行する方法および装置
US10503505B2 (en) Read and write masks update instruction for vectorization of recursive computations over independent data
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
US10387149B2 (en) Apparatus and method to reverse and permute bits in a mask register
US20140189288A1 (en) Instruction to reduce elements in a vector register with strided access pattern
KR101787615B1 (ko) 단일 명령어에 응답하여 회전 및 xor을 수행하기 위한 시스템들, 장치들, 및 방법들
US11176278B2 (en) Efficient rotate adder for implementing cryptographic basic operations
KR20140113579A (ko) 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160819

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161004

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161108

R150 Certificate of patent or registration of utility model

Ref document number: 6051458

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees