JP6504679B2 - セキュア暗号ハッシュラウンド機能を提供する命令およびロジック - Google Patents

セキュア暗号ハッシュラウンド機能を提供する命令およびロジック Download PDF

Info

Publication number
JP6504679B2
JP6504679B2 JP2017192078A JP2017192078A JP6504679B2 JP 6504679 B2 JP6504679 B2 JP 6504679B2 JP 2017192078 A JP2017192078 A JP 2017192078A JP 2017192078 A JP2017192078 A JP 2017192078A JP 6504679 B2 JP6504679 B2 JP 6504679B2
Authority
JP
Japan
Prior art keywords
instruction
data
processor
destination register
rounds
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.)
Expired - Fee Related
Application number
JP2017192078A
Other languages
English (en)
Other versions
JP2018013802A (ja
Inventor
ゴパル、ヴィンドー
ケイ. フェグハリ、ワジディ
ケイ. フェグハリ、ワジディ
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 JP2018013802A publication Critical patent/JP2018013802A/ja
Application granted granted Critical
Publication of JP6504679B2 publication Critical patent/JP6504679B2/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/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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Executing Machine-Instructions (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Description

[関連出願に対する相互参照]
本出願は、2012年12月29日に出願された、特許出願番号第13/731,004号、代理人整理番号第P45164、発明の名称「SIMDセキュアハッシュラウンドスライス機能を提供するための命令およびロジック」、および2012年3月30日に出願された、国際出願番号第PCT/US2012/031632号、代理人整理番号第P38728PCT、発明の名称「SHA‐2セキュアハッシュアルゴリズムを処理するための方法および装置」に関連する。
本開示は、プロセッサまたは他のプロセッシングロジックによる実行時に、論理的、数学的、または他の機能的操作を実行するプロセッシングロジック、マイクロオペレーションロセッサ、および関連付けられた命令セットアーキテクチャの分野に関する。特に、本開示は、セキュア暗号ハッシュラウンド機能を提供する複数の命令およびロジックに関する。
ハッシュ関数は、例えば、フィンガープリンティングおよび負荷分散のためのハッシュテーブルのデータのインデックス付け、データベースのデータのルックアップ、重複データの検出またはファイルの一意の識別、および偶発的なデータ破壊を検出するチェックサムとして等、多くの目的に使用され得る。例えば、負荷分散アプリケーションにおいて、ハッシュアルゴリズムはクライアントのインターネットプロトコル(IP)アドレス、またはクライアントのメディアアクセス制御(MAC)アドレス、またはHTTPヘッダの値等をサーバ選択の基礎として使用し得る。そのようなアプリケーションにおいては、利用可能なサーバのリストがクライアントのセッション中に変更されている場合であっても、同一のクライアントは同一のサーバによってサービス提供され得る。そのような特性はまた、複数のcookieのようなサーバ側の状態情報の格納を要求するアプリケーションに対して、このアルゴリズムを有用にし得る。
「一貫性のあるハッシュ」という用語は、Webサーバの変動する個体数にわたり、リクエストを分散する方法を指す。各スロットは次に、分散システム内のノードによって表される。ノードの追加(参加)および除去(離脱/障害)は、スロット/ノード数の変更時にアイテムが再シャッフルされることを要求する。ハッシュ関数は、構造を保存しなくてよい。理想的には、各入力データについて、潜在的な任意の出力データを取得する可能性は、等しくあるべきである。入力データの度数分布における不均等は、出力データの均一的な分布に変換される。
しかしながら、意図的並びに偶然に起因する問題があり得る。偶然による場合、ユーザは異なるグループから構成され、リソースへのアクセスを異なる度合いで要求することがある。これらのグループのバランスが悪い場合、ハッシュ関数によって特定のリソースへ導かれるユーザは、他のユーザより大きな度合いでリソースへのアクセスをリクエストする可能性がある。すると、この特定のリソースは他のリソースよりも大きな負荷を受けることになり、リソース間の偏った負荷分散をもたらす。
意図的な場合、リソース間の偏った負荷分散を引き起こすことを目的とする、いわゆる「ハッシュ攻撃」が発生し得る。ハッシュ攻撃は概して、システムに関する十分な知識を有する攻撃者および/または複数のリソースを含むシステムから出力される情報を使用する攻撃者によって可能とされる。すると攻撃者は、ハッシュ関数を渡す際、リソースに対する各リクエストは全く同一のリソースへと導かれることがわかる。すると、このリソースは異常に高い負荷を受け、次に多かれ少なかれ非効率的に機能し、それにより、いわゆる「サービス拒否」をもたらし得、その場合、当該リソースはユーザをそれ以上受け付けない。このサービス拒否は、システム全体のサービス効率に影響し得る。
暗号学的ハッシュ関数は、ハッシュ関数、すなわち任意のデータブロックを取り、固定サイズのビット列、(暗号学的)ハッシュ値を返すアルゴリズムであり、データに対する(偶発的または意図的)変更はハッシュ値を変更することになる(非常に高い確率で)。エンコードされるデータは通常、「メッセージ」と呼ばれ、ハッシュ値は場合によりメッセージダイジェストまたは「ダイジェスト」と呼ばれる。
暗号学的ハッシュ関数は、特にデジタル署名、メッセージ認証コード(MAC)、および他の形態の認証において情報セキュリティの適用例を多く有する。それらはまた、フィンガープリンティングのためのハッシュテーブル内のデータのインデックス付け、重複データの検出またはファイルの一意的な識別、偶発的なデータ破壊を検出するチェックサムとして等、通常のハッシュ関数として使用され得る。情報セキュリティの文脈において、暗号学的ハッシュ値は、場合により(デジタル)フィンガープリント、チェックサム、または単にハッシュ値と呼ばれ、しかしながら、これらすべての用語はかなり異なる特性および目的を持つ機能を意味する。
最も有名な暗号学的ハッシュ関数のうちの1つは、Ronald Rivestにより開発されたMD5(メッセージダイジェストアルゴリズム5)アルゴリズムである。他の一般的なアルゴリズムは、SHA‐1(セキュアハッシュアルゴリズム1)並びに米国国立標準技術研究所(NIST)により発行された米国連邦情報処理標準(FIPS)としてのバリアントSHA‐2およびSHA‐3である。
暗号学的ハッシュ関数が何らかの数学的関数に基づく場合、それは相変わらずサービス拒否攻撃の影響を受けやすい。というのは、いくつかの場合において、それはいわゆる「ジップの法則」、「べき乗則」、または「パレート分布」のうちの1つを受ける可能性があり得、その場合、何らかの特定のリソースが異常に高い負荷を受けるという意味においてである。この特性または同様の複数の特性が悪意に利用され、サービス拒否をもたらす、リソース間の偏った負荷分散を引き起こす可能性がある。
ルックアップを実行する、あるクラスのハッシュに対する、ハッシュ関数における重要な2つのトレードオフは次のようなものである。(1)複雑度に対する計算速度。あまりに単純であるとハッシュは容易に破壊され、あまりに複雑であるとハッシュは計算に時間がかかりすぎる。(2)ダイジェスト分散およびアバランチの特性。入力内の単一のビット変更は、ハッシュダイジェスト出力値内のnビットの変更を引き起こす必要がある。nがハッシュダイジェスト出力サイズの約半分である場合に最強である。
ある者は、セキュアハッシュアルゴリズム全体を実行可能なプロセッサ(例えば、米国特許第8,255,703)またはコプロセッサ(例えば、米国特許第7,240,203)を提案した。そのようなアプローチの1つの欠点は、特別な割り込み処理、あるいは複数の他の命令の同時スーパースカラ実行といったものに対する特別な考慮を行わずに、それは現在のマイクロオペレーションロセッサの標準的な実行パイプラインに容易に組み込まれないということである。標準的な実行パイプラインとの別のミスマッチは、セキュアハッシュアルゴリズム全体を実行するために要求されるレイテンシである。
現在のプロセッサは通常、計算集約型の操作を提供する命令を含むが、例えば、単一命令複数データ(SIMD)ベクトルレジスタといった様々なデータストレージデバイスを使用する効率的な実装を介して採用され得る、高水準なデータ並列処理を提供する。ベクトルの処理をサポートするために、中央処理装置(CPU)は並列ハードウェアを提供し得る。ベクトルは、複数の連続したデータ要素を保持するデータ構造である。サイズがMのベクトルレジスタは、サイズがOのN個のベクトル要素を含むことができる(N=M/O)。例えば、64バイトのベクトルレジスタは、(a)各要素が1バイトを占有するデータアイテムを保持する、64個のベクトル要素、(b)それぞれが2バイト(または1つの「ワード」)を占有するデータアイテムを保持する、32個のベクトル要素、(c)それぞれが4バイト(または1つの「ダブルワード」)を占有するデータアイテムを保持する、16個のベクトル要素、または(d)それぞれが8バイト(または1つの「クワドワード」)を占有するデータアイテムを保持する、8個のベクトル要素に分割されてよい。SIMDベクトルレジスタにおける並列処理の特性は、セキュアハッシュアルゴリズムの処理に非常に好適であり得る。
今日まで、そのような複雑度、ミスマッチ、性能限定の問題および他のボトルネックに対する潜在的ソリューションは、適切に探究されていない。
本発明は、添付図面の図において限定ではなく、例示を用いて示される。
セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するシステムの一実施形態のブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するシステムの別の実施形態のブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するシステムの別の実施形態のブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するプロセッサの一実施形態のブロック図である。 一実施形態に従う複数のパックされたデータタイプを示す。 一実施形態に従う複数のパックされたデータタイプを示す。 一実施形態に従う複数のパックされたデータタイプを示す。 一実施形態に従う、セキュア暗号ハッシュラウンド機能を提供するための命令エンコーディングを示す。 別の実施形態に従う、セキュア暗号ハッシュラウンド機能を提供するための命令エンコーディングを示す。 別の実施形態に従う、セキュア暗号ハッシュラウンド機能を提供するための命令エンコーディングを示す。 別の実施形態に従う、セキュア暗号ハッシュラウンド機能を提供するための命令エンコーディングを示す。 別の実施形態に従う、セキュア暗号ハッシュラウンド機能を提供するための命令エンコーディングを示す。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのプロセッサマイクロアーキテクチャの一実施形態に係る複数の要素を示す。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのプロセッサマイクロアーキテクチャの別の実施形態に係る複数の要素を示す。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのプロセッサの一実施形態に係るブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのコンピュータシステムの一実施形態に係るブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのコンピュータシステムの別の実施形態に係るブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのコンピュータシステムの別の実施形態に係るブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのシステムオンチップの一実施形態に係るブロック図である。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を実行するためのプロセッサの実施形態に係るブロック図である。 SIMDセキュアハッシュラウンドスライス機能を提供するIPコア開発システムの一実施形態に係るブロック図である。 SIMDセキュアハッシュラウンドスライス機能を提供するアーキテクチャエミュレーションシステムの一実施形態を示す。 セキュア暗号ハッシュラウンド機能を提供する複数の命令を変換するシステムの一実施形態を示す。 セキュア暗号ハッシュラウンド機能を提供する命令の実行のための装置の一実施形態に対する図を示す。 セキュア暗号ハッシュラウンド機能を提供する命令の実行のための装置の代替的な実施形態に対する図を示す。 セキュア暗号ハッシュラウンド機能を提供する処理の実施形態のためのフロー図を示す。 セキュア暗号ハッシュラウンド機能を提供する処理の別の実施形態のためのフロー図を示す。
以下の詳細な説明は、セキュア暗号ハッシュアルゴリズムラウンド機能を提供する複数の命令および処理ロジックを開示する。いくつかの実施形態は、セキュア暗号ハッシュアルゴリズムのための命令をデコードするデコードステージを含むプロセッサを含み、上記第1の命令はソースデータ、および1または複数のキーオペランドを指定する。複数のプロセッサ実行ユニットは、デコードされた命令に応答して、ソースデータに対し、1または複数のキーオペランドを使用して、1または複数のセキュア暗号ハッシュアルゴリズムラウンド反復を実行し、上記命令の結果をデスティネーションレジスタに格納する。上記命令の一実施形態は、DES(データ暗号化標準)またはTDES(Triple DES)のようなFeistel暗号アルゴリズムを使用して、セキュア暗号ハッシュアルゴリズムラウンド反復を指定する。複数の代替的な実施形態は、例えば、Blowfish、SAFER(Secure And Fast Encryption Routine)K−64、CAST5(Carlisle Adams and Stafford Tavaresによる)、FEAL(Fast data Encipherment ALgorithm)等の他の暗号アルゴリズムを使用してよい。一実施形態では、命令の結果は処理リソースのセットにわたる負荷分散リクエストのためのリクエストから、リソース割り当てを生成する際に使用されてよい。いくつかの実施形態は、セキュア暗号ハッシュアルゴリズムを実行するためのラウンド数の範囲を指定してよい(例えば、即値オペランド内で)。例えば、一実施形態では、即値バイトオペランド内の0x0Fの16進数の範囲は、上記命令が暗号ハッシュアルゴリズムのすべての16の反復を実行することを指示し得るのに対し、即値バイトオペランド内の0xFFの16進数の範囲は、命令が16の反復のうち1ラウンドのみ実行することを指示し得る、あるいは即値バイトオペランド内の0xF8の16進数の範囲は、命令が暗号ハッシュアルゴリズムの復号化モードで、16ラウンドのうち9ラウンドまでの反復を実行することを指示し得る。ハッシュアルゴリズムとして暗号を採用する際の予期しない利点の1つは、一方向ハッシュアルゴリズムに対し、それは可逆的であるという点である。それは、攻撃(例えば、サービス拒否攻撃)を阻止するための新しいキーの挿入を許可すると同時に、所望の特性(例えば、持続的および/または一貫性のあるハッシュ)を提供する負荷分散のためのキー設計に寄与し得ることが理解されるであろう。ハッシュアルゴリズムとして、暗号化の指定された反復数のみを実行することの別の予期しない利点は、複数の異なるキーセットが各ラウンドまたはラウンド反復の範囲に対して使用されてよいことであり、それにより標準的なサブキースケジュールを使用することでは不可能な暗号結果をもたらす。
本明細書に記載の複数の実施形態における、セキュア暗号ハッシュアルゴリズムを採用するための複数の命令は、計算の過剰な複雑度または許容不能な遅延を要求することなく、攻撃を阻止するための精選された調整を可能とし、処理における所望のサービス品質を減じることなく、例えば、負荷分散および/またはサービス拒否攻撃に対する防御等を提供するためのアプリケーション内でセキュアハッシュ機能を提供すべく使用され得ることが理解されるであろう。
以下の詳細な説明において、本発明に係る複数の実施形態に対するより完全な理解を提供すべく、処理ロジック、プロセッサタイプ、マイクロアーキテクチャ条件、イベント、有効化メカニズム等の多くの具体的な詳細が記載されている。しかしながら、本発明は、これらの具体的な詳細がなくても、当業者によって実施可能であることが理解されるであろう。また、本発明の実施形態を不要に不明瞭にするのを回避すべく、いくつかの周知の構造、回路等は詳細に示されていない。
以下の複数の実施形態は、プロセッサに関して記載されているが、複数の他の実施形態が他のタイプの集積回路およびロジックデバイスに適用可能である。本発明の複数の実施形態に係る同様の技術および教示は、より高いパイプラインスループットおよび改善された性能から利益を受け得る他のタイプの回路または半導体デバイスに対し適用可能である。本発明の複数の実施形態の教示は、データ操作を実行する任意のプロセッサまたは機械に適用可能である。しかしながら、本発明は512ビット、256ビット、128ビット、64ビット、32ビット、または16ビットのデータ操作を実行するプロセッサまたは機械に限定はされず、データ操作または管理が実行される任意のプロセッサおよび機械に適用され得る。また、以下の詳細な説明は例示を提供しており、添付図面は説明目的から様々な例を示す。しかしながら、これらの例は、本発明の複数の実施形態に係るあらゆる可能性のある実装を網羅的に列挙するのではなく、単に本発明の複数の実施形態の例を提供する意図であって、限定的な意味において解釈されるべきではない。
以下の複数の例示は、実行ユニットおよびロジック回路の文脈で命令処理および分散について記載するが、本発明の複数の他の実施形態は、有形な機械可読媒体上に格納されたデータおよび/または複数の命令を用いて実現され得、当該データおよび/または命令は機械によって実行される際、機械に対して、本発明の少なくとも一実施形態と一貫性のある複数の関数を実行させる。一実施形態では、本発明の複数の実施形態に関連付けられた複数の関数は、複数の機械実行可能な命令の中に具現化される。当該複数の命令は、当該複数の命令とともにプログラムされた汎用または特定用途向けプロセッサに、本発明の複数の段階を実行させるよう使用され得る。本発明の複数の実施形態は、機械またはコンピュータ可読媒体を含み得るコンピュータプログラム製品またはソフトウェアとして提供されてよい。当該機械またはコンピュータ可読媒体は、本発明の複数の実施形態に従う、1または複数の操作を実行させるようコンピュータ(または複数の他の電子デバイス)をプログラムするのに使用され得る格納された複数の命令を有する。あるいは、本発明の複数の実施形態に係る複数の段階は、当該段階を実行するための固定関数ロジックを含む複数の特定のハードウェアコンポーネントによって、あるいは複数のプログラムされたコンピュータコンポーネントおよび固定関数ハードウェアコンポーネントの任意の組み合わせによって実行されてよい。
本発明の複数の実施形態を実行するためのロジックをプログラムすべく使用される複数の命令は、システム内のDRAM、キャッシュ、フラッシュメモリ、または他のストレージ等のメモリ内に格納され得る。更に、複数の当該命令はネットワークを介して、または他のコンピュータ可読媒体を用いて配信され得る。従って、機械可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形態で情報を格納または送信するための任意のメカニズムを含んでよい。そのようなものとして、限定はされないが、複数のフロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD―ROM)、および光磁気ディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気または光カード、フラッシュメモリ、または電気形態、光形態、音響形態若しくは他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)を介したインターネット経由での情報送信に使用される有形の機械可読ストレージが挙げられる。従って、コンピュータ可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形態で複数の電子的命令または情報を格納または送信するのに好適な、任意のタイプの有形の機械可読媒体を含む。
設計は、作成からシミュレーション、製造に至る様々なステージを経るであろう。設計を表わすデータは当該設計を多数の態様で表してよい。第1に、複数のシミュレーションで有用であるように、ハードウェア記述言語または別の機能記述言語を使用してハードウェアが表されてよい。また、ロジックおよび/または複数のトランジスタゲートを備える回路レベルモデルが、設計処理のいくつかのステージで生成されてよい。更に、あるステージにおける大半の設計はハードウェアモデル内の様々なデバイスの物理的配置を表すデータのレベルに到達する。従来の半導体製造技術が使用される場合、ハードウェアモデルを表すデータは、集積回路を生成すべく使用されるマスクのための複数の異なるマスク層上にある様々な特徴の存在または不存在を指定するデータであってよい。設計に係る任意の表現において、データは任意の形態の機械可読媒体に格納されてよい。メモリ、またはディスクなどの磁気若しくは光ストレージは、そのような情報を送信すべく変調あるいは生成された光波または電波を介して送信される情報を格納する機械可読媒体であってよい。コードまたは設計を示す若しくは搬送する電気搬送波が送信される場合、電気信号のコピー、バッファリング、または再送が実行される範囲において、新規コピーが作成される。したがって、通信プロバイダまたはネットワークプロバイダは、本発明の複数の実施形態に係る技術を具現化する、搬送波内にエンコードされた情報のような項目を有形の機械可読媒体上に少なくとも一時的に格納してよい。
現在のプロセッサでは、様々なコードおよび命令を処理および実行すべく、多数の異なる実行ユニットが使用される。すべての命令が等しく作成されているわけではく、より迅速に終了するものもあれば、終了までに多数のクロックサイクルを要するものもある。命令のスループットが速いほど、プロセッサの性能全体がよくなる。したがって、できるだけ高速に実行するにはそれだけ多くの命令を実行させるのが有利であろう。しかしながら、より高い複雑度を有し、実行時間およびプロセッサリソースの見地からより多くのものを要求する特定の命令がある。例えば、浮動小数点命令、ロード/格納操作、データの移動等がこれに相当する。
より多くのコンピュータシステムがインターネット、テキスト、およびマルチメディアアプリケーションで使用されるにあたり、追加のプロセッササポートが経時的に導入されてきた。一実施形態では、命令セットは、データタイプ、命令、レジスタアーキテクチャ、アドレス指定モード、メモリアーキテクチャ、割り込みと例外処理、および外部入出力(I/O)を含む、1または複数のコンピュータアーキテクチャに関連付けられてよい。
一実施形態では、命令セットアーキテクチャ(ISA)は、1または複数の命令セットを実装するのに使用されるプロセッサロジックおよび回路を含む、1または複数のマイクロアーキテクチャによって実装されてよい。従って、異なるマイクロアーキテクチャを有する複数のプロセッサは、共通の命令セットの少なくとも一部を共有できる。例えば、Intel(登録商標)Pentium(登録商標)4プロセッサ、Intel(登録商標)Core(登録商標)プロセッサ、およびカリフォルニア州サニーベールのAdvanced Micro Devices,Incのプロセッサは、異なる内部設計を有するが、x86命令セット(より最新バージョンでは、いくつかの拡張機能が追加されている)とほぼ同一のバージョンを実装する。同様に、ARM Holdings,Ltd.、MIPSのような他のプロセッサ開発会社、またはそれらのラインセンシ若しくは採用者によって設計されたプロセッサは、異なるプロセッサ設計を含んでよいが、共通の命令セットの少なくとも一部を共有してよい。例えば、ISAの同一レジスタアーキテクチャが異なる方法で、複数の専用物理レジスタ、レジスタリネーミングメカニズムを使用する(例えは、レジスタアリアステーブル(RAT)、リオーダバッファ(ROB)の使用)1または複数の動的に割り当てられた物理レジスタ、およびリタイアレジスタファイルを含む、新規または周知技術を使用して、複数の異なるマイクロアーキテクチャ内に実装されてよい。一実施形態では、レジスタは1または複数のレジスタ、レジスタアーキテクチャ、レジスタファイル、あるいはソフトウェアプログラマによってアドレス指定可能であってもなくてもよい他のレジスタセットを含んでよい。
一実施形態では、命令は1または複数の命令フォーマットを含んでよい。一実施形態では、命令フォーマットはとりわけ、実行される操作およびその操作が実行されるオペランドを指定するための様々なフィールド(ビット数、ビットの位置等)を示してよい。いくつかの命令フォーマットは更に、命令テンプレート(またはサブフォーマット)によって、分解されるよう定義されてよい。例えば、特定の命令フォーマットの複数の命令テンプレートは、命令フォーマットのフィールドの異なるサブセットを有するよう定義されてよく、および/または異なって解釈される特定のフィールドを有するよう定義されてよい。一実施形態では、命令は、命令フォーマットを使用して(また、定義されている場合にはその命令フォーマットの命令テンプレートのうちの特定の1つで)表現され、操作およびオ当該操作が行われるオペランドを指定または指示したりする。
科学的アプリケーション、財務アプリケーション、自動ベクトル化汎用アプリケーション、RMS(Recognition(認識)、mining(マイニング)、およびsynthesis(合成))アプリケーション、およびビジュアルとマルチメディアアプリケーション(例えば、2D/3Dグラフィックス、イメージプロセッシング、ビデオ圧縮/圧縮解除、音声認識アルゴリズムおよびオーディオ操作)は、多数のデータアイテム上に同一の操作が実行されることを要求してよい。一実施形態では、単一命令多重データ処理(SIMD)とは、プロセッサに、複数のデータ要素に対して操作を実行させる命令のタイプを指す。SIMD技術は、レジスタ内のビットを、各々が別個の値を表わす、多数の固定サイズまたは可変サイズのデータ要素に論理的に分割できる複数のプロセッサ内において使用されてよい。例えば、一実施形態では、64ビットレジスタのビットは、各々が別個の16ビット値を表わす、4つの別個の16ビットデータ要素を含むソースオペランドとして編成されてよい。このタイプのデータは、「パックされた」データタイプ若しくは「ベクトル」データタイプと称され得、このデータタイプのオペランドは、パックされたデータオペランド若しくはベクトルオペランドとして称される。一実施形態では、パックされたデータアイテムまたはベクトルは、単一のレジスタ内に格納されたパックされたデータ要素のシーケンスであってよく、パックされたデータオペランドまたはベクトルオペランドは、SIMD命令のソースまたはデスティネーションオペランドであってよい(または「パックされたデータ命令」若しくは「ベクトル命令」)。一実施形態では、SIMD命令は、同一または異なるサイズ、同一または異なる数のデータ要素で構成されるデスティネーションベクトルオペランド(または結果のベクトルオペランドとも称される)を同一または異なるデータ要素順序で生成すべく、2つのソースベクトルオペランド上で実行される単一のベクトル操作を指定する。
x86、MMX(登録商標)、Streaming SIMD Extensions(SSE)、SSE2、SSE3、SSE4.1、およびSSE4.2命令を含む命令セットを有するIntel(登録商標)Core(登録商標)プロセッサ、Vector Floating Point(VFP)および/またはNEON命令を含む命令セットを有するARM Coretex(登録商標)ファミリのプロセッサのようなARMプロセッサ、および中国科学院のコンピューティング技術研究所(ICT)によって開発されたLoongsonファミリのプロセッサのようなMIPSプロセッサによって採用されるSIMD技術は、アプリケーション性能における著しい向上を可能にした(Core(登録商標)およびMMX(登録商標)はカリフォルニア州サンタクララのインテルコーポレーションの登録商標または商標である)。
一実施形態では、デスティネーションおよびソースレジスタ/データは、対応するデータまたは操作のソースおよびデスティネーションを表わす総称である。いくつかの実施形態において、これらは、複数のレジスタ、メモリ、または示されるもの以外の他の名前または機能を有する他のストレージ領域で実装されてよい。例えば、一実施形態では、「DEST1」は一時的なストレージレジスタまたは他のストレージ領域であってよい一方で、「SRC1」および「SRC2」は、第1および第2のソースストレージレジスタまたは他のストレージ領域等であってよい。複数の他の実施形態において、2または2より多いSRCおよびDESTストレージ領域は、同一ストレージ領域(例えば、SIMDレジスタ)内の異なるデータストレージ要素に対応してよい。一実施形態では、複数のソースレジスタのうちの1つが例えば、デスティネーションレジスタとして機能する2つのソースレジスタのうちの1つに対し、第1および第2のソースデータ上に実行された操作結果をライトバックすることによって、デスティネーションレジスタとして動作してもよい。
図1Aは、本発明の一実施形態に従う命令を実行するための複数の実行ユニットを含むプロセッサで形成される例示的なコンピュータシステムのブロック図である。システム100は、本明細書に記載の実施形態のような本発明に従う、処理データのための複数のアルゴリズムを実行するためのロジックを含む複数の実行ユニットを採用するプロセッサ102のようなコンポーネントを含む。システム100は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)III、PENTIUM(登録商標)4、Xeon(登録商標)、Itanium(登録商標)、XScale(登録商標)および/またはStrongARM(登録商標)マイクロオペレーションロセッサに基づく複数の処理システムを表わすが、複数の他のシステム(他の複数のマイクロオペレーションロセッサ、エンジニアリングワークステーション、セットトップボックス等を有するPCを含む)も使用されてよい。一実施形態では、サンプルのシステム100は、ワシントン州レドモンドのマイクロソフト社から入手可能なWindows(登録商標)オペレーティングシステムのバージョンを実行可能であってよいが、複数の他のオペレーティングシステム(例えば、UNIX(登録商標)およびLinux(登録商標))、埋め込みソフトウェア、および/または複数のグラフィカルユーザインタフェースも使用されてよい。したがって、本発明の複数の実施形態は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定はされない。
複数の実施形態は、コンピュータシステムに限定はされない。本発明の複数の代替的な実施形態は、ハンドヘルドデバイスおよび埋め込みアプリケーション等の複数の他のデバイスで使用され得る。ハンドヘルドデバイスのいくつかの例は、セルラ電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、およびハンドヘルドPCを含む。複数の埋め込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、または少なくとも一実施形態による1または複数の命令を実行可能な任意の他のシステムを含み得る。
図1Aは、本発明の一実施形態に従う少なくとも1つの命令を実行するためのアルゴリズムを実行する1または複数の実行ユニット108を含む、プロセッサ102で形成されたコンピュータシステム100のブロック図である。一実施形態は、単一のプロセッサデスクトップまたはサーバシステムの文脈で記載され得るが、複数の代替的な実施形態は、マルチプロセッサシステムに含まれ得る。システム100は、「ハブ」システムアーキテクチャの一例である。コンピュータシステム100は、複数のデータ信号を処理するプロセッサ102を含む。プロセッサ102は、複合命令セットコンピュータ(CISC)マイクロオペレーションロセッサ、縮小命令セットコンピューティング(RISC)マイクロオペレーションロセッサ、超長命令語(VLIW)マイクロオペレーションロセッサ、複数の命令セットの組み合わせを実装するプロセッサ、または例えば、デジタル信号プロセッサのような任意の他のプロセッサデバイスであり得る。プロセッサ102は、プロセッサ102とシステム100内の複数の他のコンポーネントとの間でデータ信号を送信可能なプロセッサバス110に連結される。システム100の複数の要素は、当該技術分野に習熟する当業者にとって周知である従来の複数の機能を実行する。
一実施形態では、プロセッサ102は、レベル1(L1)内部キャッシュメモリ104を含む。アーキテクチャに応じて、プロセッサ102は単一の内部キャッシュまたは複数のレベルの内部キャッシュを有し得る。あるいは、別の実施形態では、キャッシュメモリがプロセッサ102の外部に存在し得る。特定の実装およびニーズに応じて、複数の他の実施形態は、内部キャッシュおよび外部キャッシュの両方の組み合わせを含み得る。レジスタファイル106は、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、および命令ポインタレジスタを含む様々なレジスタ内に、複数の異なるタイプのデータを格納できる。
整数および浮動小数点操作を実行するロジックを含む実行ユニット108も、プロセッサ102に存在する。プロセッサ102はまた、複数の特定のマクロ命令のためのマイクロコードを格納するマイクロコード(μコード)ROMを含む。一実施形態について、実行ユニット108は、パックされた命令セット109を処理するロジックを含む。複数の命令を実行するための関連付けられた回路とともに汎用プロセッサ102の命令セット内にパックされた命令セット109を含むことによって、多くのマルチメディアアプリケーションによって使用される複数の操作は、汎用プロセッサ102内のパックされたデータを使用して実行されてよい。したがって、多くのマルチメディアアプリケーションは、パックされたデータに対し複数の操作を実行するための、プロセッサのデータバスの全幅を使用することによって、より効率的に加速および実行され得る。これによって、一度に1データ要素に対し、1または複数の操作を実行すべく、プロセッサのデータバスにわたり、より小さなデータユニットを転送する必要性を除去できる。
実行ユニット108の複数の代替的な実施形態も複数のマイクロコントローラ、埋め込みプロセッサ、グラフィックスデバイス、DSP、および複数の他のタイプのロジック回路内で使用され得る。システム100は、メモリ120を含む。メモリ120は、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、または他のメモリデバイスであり得る。メモリ120は、プロセッサ102によって実行され得る複数のデータ信号によって表される複数の命令および/またはデータを格納できる。
システムロジックチップ116がプロセッサバス110およびメモリ120に連結される。例示された実施形態内のシステムロジックチップ116は、メモリコントローラハブ(MCH)である。プロセッサ102は、プロセッサバス110を介してMCH116と通信し得る。MCH116は、命令およびデータストレージのため、およびグラフィックスコマンド、データおよびテクスチャのストレージのためのメモリ120に対し、高帯域幅メモリパス118を提供する。MCH116は、システム100内のプロセッサ102、メモリ120、および複数の他のコンポーネント間で複数のデータ信号を差し向け、プロセッサバス110、メモリ120、およびシステムI/O122間で複数のデータ信号をブリッジする。いくつかの実施形態において、システムロジックチップ116はグラフィックスコントローラ112に連結するためのグラフィックスポートを提供し得る。MCH116は、メモリインタフェース118を介してメモリ120に連結される。グラフィックスカード112は、アクセラレーテッドグラフィックスポート(AGP)インターコネクト114を介してMCH116に連結される。
システム100は、MCH116をI/Oコントローラハブ(ICH)130に連結すべく、周辺ハブインタフェースバス122を使用する。ICH130は、ローカルI/Oバスを介していくつかのI/Oデバイスへの直接的な接続を提供する。ローカルI/Oバスは、複数の周辺機器をメモリ120、チップセット、およびプロセッサ102に接続するための高速I/Oバスである。いくつかの例は、オーディオコントローラ、ファームウェアハブ(フラッシュBIOS)128、無線送受信機126、データストレージ124、ユーザ入力およびキーボードインタフェースを含むレガシI/Oコントローラ、ユニバーサルシリアルバス(USB)等のシリアル拡張ポート、およびネットワークコントローラ134である。データストレージデバイス124は、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス、または他の大容量ストレージデバイスを含み得る。
システムの別の実施形態としては、一実施形態に従う命令がシステムオンチップで使用され得る。システムオンチップの一実施形態は、プロセッサおよびメモリで構成される。1つのそのようなシステムのためのメモリは、フラッシュメモリである。フラッシュメモリは、プロセッサと複数の他のシステムコンポーネントと同一のダイ上に位置され得る。また、メモリコントローラまたはグラフィックスコントローラ等の他のロジックブロックもシステムオンチップに位置され得る。
図1Bは、本発明の一実施形態の複数の原理を実装するデータ処理システム140を示す。当業者であれば、本明細書に記載の複数の実施形態は、本発明の複数の実施形態の範囲を逸脱することなく、代替的な複数の処理システムと共に使用され得ることを容易に理解するであろう。
コンピュータシステム140は、一実施形態に従う少なくとも1つの命令を実行可能な処理コア159を含む。一実施形態について、処理コア159は限定はされないが、CISC、RISCまたはVLIWタイプのアーキテクチャを含む、任意のタイプのアーキテクチャの処理ユニットを表わす。処理コア159はまた、1または複数の処理技術での製造に好適であってよく、十分に詳細に機械可読媒体上に表されることによって、当該製造を容易化するのに好適であってよい。
処理コア159は、実行ユニット142、レジスタファイルのセット145、およびデコーダ144を含む。処理コア159は、本発明の複数の実施形態の理解には必要でない追加の回路(不図示)も含む。実行ユニット142は、処理コア159によって受信される複数の命令を実行するために使用される。通常の複数のプロセッサ命令の実行に加えて、実行ユニット142は、パックされたデータフォーマットに対し操作を実行するために、パックされた命令セット143内の複数の命令を実行できる。パックされた命令セット143は、本発明の複数の実施形態および他の複数のパックされた命令を実行するための複数の命令を含む。実行ユニット142は内部バスによってレジスタファイル145に連結される。レジスタファイル145は、データを含む情報を処理コア159上に格納するためのストレージ領域を表わす。前述の通り、パックされたデータを格納するために使用されるストレージ領域は重大ではないことが理解される。実行ユニット142は、デコーダ144に連結される。デコーダ144は処理コア159によって受信された複数の命令を複数の制御信号および/またはマイクロコードエントリポイントにデコーディングするために使用される。これらの制御信号および/またはマイクロコードエントリポイントに応答して、実行ユニット142は適切な複数の操作を実行する。一実施形態では、命令内で指示される対応するデータに対し、どの操作が実行されるべきであるかを示す、命令のオペコードを解釈すべくデコーダが使用される。
処理コア159は、様々な他のシステムデバイスと通信するためのバス141に連結され、当該システムデバイスは限定はされないが、例えば、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)制御146、スタティックランダムアクセスメモリ(SRAM)制御147、バーストフラッシュメモリインタフェース148、PCMCIA(personal computer memory card international association)/コンパクトフラッシュ(登録商標)(CF)カード制御149、液晶ディスプレイ(LCD)制御150、ダイレクトメモリアクセス(DMA)コントローラ151、および代替のバスマスタインタフェース152を含んでよい。一実施形態では、データ処理システム140はまた、I/Oバス153を介して様々なI/Oデバイスと通信するためのI/Oブリッジ154を含んでよい。そのようなI/Oデバイスは、限定はされないが例えば、汎用非同期送受信機(UART)155、ユニバーサルシリアルバス(USB)156、Bluetooth(登録商標)無線UART157およびI/O拡張インタフェース158を含んでよい。
データ処理システム140の一実施形態は、モバイル、ネットワーク、および/または無線通信および文字列比較操作を含むSIMD操作を実行可能な処理コア159を提供する。処理コア159は、ウォルシュアダマール変換、高速フーリエ変換(FFT)、離散コサイン変換(DCT)、およびそれらのそれぞれ逆変換等、色空間変換、ビデオエンコードモーション推定またはビデオデコードモーション補償等の圧縮/圧縮解除技術、およびパルス符号変調(PCM)等の変/復調(MODEM)機能といった別個の複数の変換を含む、様々なオーディオ、ビデオ、イメージングおよび通信アルゴリズムとともにプログラムされてよい。
図1Cは、セキュア暗号ハッシュラウンド機能を提供するための複数の命令を実行可能なデータ処理システムの複数の別の代替的な実施形態を示す。1つの代替的な実施形態に従い、データ処理システム160は、メインプロセッサ166、SIMDコプロセッサ161、キャッシュメモリ167、および入/出力システム168を含んでよい。任意に、入/出力システム168は無線インタフェース169に連結されてよい。SIMDコプロセッサ161は、一実施形態に従う複数の命令を含む複数の操作を実行可能である。処理コア170は、1または複数の処理技術における製造に好適であってよく、十分詳細に機械可読媒体上に表されることによって、処理コア170を含むデータ処理システム160の全部または一部の製造を容易化するのに好適であってよい。
一実施形態について、SIMDコプロセッサ161は、実行ユニット162とレジスタファイルのセット164とを含む。メインプロセッサ166の一実施形態は、実行ユニット162による実行のための一実施形態に従う複数の命令を含む命令セット163の複数の命令を認識するデコーダ165を含む。複数の代替的な実施形態について、SIMDコプロセッサ161はまた、命令セット163の複数の命令をデコードするデコーダ165Bの少なくとも一部を含む。処理コア170は、本発明の複数の実施形態の理解には必要でない追加の回路(不図示)も含む。
操作において、メインプロセッサ166はキャッシュメモリ167および入/出力システム168との対話を含む一般的なタイプの複数のデータ処理操作を制御する、ストリームのデータ処理命令を実行する。複数のSIMDコプロセッサ命令は、当該ストリームのデータ処理命令に組み込まれている。メインプロセッサ166のデコーダ165は、これらのSIMDコプロセッサ命令を、付属のSIMDコプロセッサ161によって実行されるべきタイプであると認識する。従って、メインプロセッサ166は、これらのSIMDコプロセッサ命令(または複数のSIMDコプロセッサ命令を表わす複数の制御信号)をコプロセッサバス171上に発行し、そこからそれらは任意の付属のSIMDコプロセッサによって受信される。この場合、SIMDコプロセッサ161は、自身向けの任意の受信された複数のSIMDコプロセッサ命令を受け取り、および実行する。
データは、複数のSIMDコプロセッサ命令による処理のために、無線インタフェース169を介して受信されてよい。一例では、音声通信が、デジタル信号の形態で受信されてよく、これは、音声通信を表わす、複数のデジタルオーディオサンプルを再生成すべく、複数のSIMDコプロセッサ命令によって処理されてよい。別の例では、圧縮されたオーディオおよび/またはビデオが、デジタルビットストリームの形態で受信されてよく、それは複数のデジタルオーディオサンプルおよび/または複数のモーションビデオフレームを再生成すべく、複数のSIMDコプロセッサ命令によって処理されてよい。処理コア170の一実施形態について、一実施形態に従う複数の命令を含む命令セット163の複数の命令を認識すべく、メインプロセッサ166、およびSIMDコプロセッサ161は、実行ユニット162、レジスタファイルのセット164、およびデコーダ165を含む単一のプロセッシングコア170に統合される。
図2は、本発明の一実施形態に従う、複数の命令を実行するための複数のロジック回路を含む、プロセッサ200のためのマイクロアーキテクチャのブロック図である。いくつかの実施形態において、一実施形態に従う命令は、バイト、ワード、ダブルワード、クワドワード等のサイズ並びに単精度整数および倍精度整数および浮動小数点のデータタイプ等のデータタイプを有する複数のデータ要素に対し操作されるよう実装可能である。一実施形態では、インオーダフロントエンド201は、実行される複数の命令をフェッチして、これらが後に、プロセッサパイプラインで使用される準備をするプロセッサ200の一部である。フロントエンド201は、いくつかのユニットを含んでよい。一実施形態では、命令プリフェッチャ226は、メモリから複数の命令をフェッチし、それらを命令デコーダ228にフィードすると、今度は命令デコーダ228がそれらをデコードまたは解釈する。例えば、一実施形態では、デコーダは、受信された命令を「マイクロ命令」または「マイクロオペレーション」(マイクロopまたはμopとも呼ばれる)と呼ばれる、機械が実行可能な1または複数の操作にデコードする。複数の他の実施形態において、一実施形態に従う複数の操作を実行すべく、デコーダは、命令を、マイクロアーキテクチャによって使用されるオペコードおよび対応するデータおよび制御フィールドに解析する。一実施形態では、トレースキャッシュ230は、デコードされた複数のμopを取得し、それらをプログラムで順序付けられたシーケンスに組み立て、または実行のためにμopキュー234にトレースする。トレースキャッシュ230が複合命令に遭遇すると、マイクロコードROM232は、操作を完了させるために必要な複数のμopを提供する。
単一のマイクロオペレーションに変換される命令もあれば、操作全体を完了させるために、いくつかのマイクロオペレーションを必要とする命令もある。一実施形態では、1つの命令を完了させるために4より多いマイクロオペレーションが必要とされる場合、デコーダ228は当該命令を実行すべく、マイクロコードROM232にアクセスする。一実施形態では、命令は、命令デコーダ228における処理のために、少数のマイクロオペレーションにデコードされ得る。別の実施形態では、当該命令を実現すべく、多数のマイクロオペレーションが必要とされる場合、命令はマイクロコードROM232内に格納され得る。トレースキャッシュ230は、一実施形態に従う1または複数の命令を完了すべく、マイクロコードROM232から複数のマイクロコードシーケンスを読み取るための正しいマイクロ命令ポインタを判断すべく、エントリポイントプログラマブルロジックアレイ(PLA)を参照する。マイクロコードROM232が、命令のための複数のマイクロオペレーションのシーケンス処理を終了後、機械のフロントエンド201は、トレースキャッシュ230からの複数のマイクロオペレーションのフェッチを再開する。
アウトオブオーダ実行エンジン203は、複数の命令が実行のための準備をされる場所である。アウトオブオーダ実行ロジックは、命令がパイプラインを下り、実行のためにスケジュールされる際、性能の最適化を行うべく、命令のフローを平滑化および並べ替えをするための多数のバッファを有する。アロケータロジックは、各μopが実行するために必要とする複数のバッファとリソースとを機械に割り当てる。レジスタリネーミングロジックは、複数のロジックレジスタをレジスタファイル内の複数のエントリにリネームする。当該アロケータはまた、命令スケジューラ、すなわちメモリスケジューラ、高速スケジューラ202、低速/一般的浮動小数点スケジューラ204、および簡易浮動小数点スケジューラ206の前に、各μopのエントリを、1つはメモリ操作用およびもう1つは非メモリ操作用である2つのμopキューの一方に対して割り当てる。μopスケジューラ202、204、206は、それらの従属入力レジスタオペランドソースの準備状態および当該複数のμopがそれらの操作を完了させる必要のある複数の実行リソースの利用可能性に基づいて、いつμopが実行の準備が整うかを判断する。一実施形態の高速スケジューラ202は、メインクロックサイクルの各半分でスケジュールできるのに対し、複数の他のスケジューラは、1メインプロセッサクロックサイクルごとに、一度スケジュールできるのみである。当該複数のスケジューラは、複数のμopを実行のためにスケジュールすべく、複数のディスパッチポートを調整する。
レジスタファイル208、210が、スケジューラ202、204、206と、実行ブロック211内の実行ユニット212、214、216、218、220、222、224との間に存在する。それぞれ整数操作用および浮動小数点操作用に、別個のレジスタファイル208、210が存在する。一実施形態の各レジスタファイル208、210は、新たな従属μopへのレジスタファイルにまだ書き込みが行われていない、完了したばかりの複数の結果を迂回または転送できる、バイパスネットワークも含む。整数レジスタファイル208および浮動小数点レジスタファイル210も、互いにデータの通信が可能である。一実施形態では、整数レジスタファイル208は、2つの別個のレジスタファイルに分割され、1つのレジスタファイルがデータの下位32ビット用であり、第2のレジスタファイルが、データの上位32ビット用である。一実施形態の浮動小数点レジスタファイル210は、複数の浮動小数点命令は通常、64から128ビット幅のオペランドを有するので、128ビット幅のエントリを有する。
実行ブロック211は、複数の命令が実際に実行される実行ユニット212、214、216、218、220、222、224を含む。このセクションは、複数のマイクロ命令が実行する必要のある整数および浮動小数点のデータオペランド値を格納するレジスタファイル208、210を含む。一実施形態のプロセッサ200は、アドレス生成ユニット(AGU)212、AGU214、高速ALU216、高速ALU218、低速ALU220、浮動小数点ALU222、浮動小数点移動ユニット224といった、多数の実行ユニットから構成される。一実施形態について、浮動小数点実行ブロック222、224は、浮動小数点、MMX、SIMD、およびSSE、または他の複数の操作を実行する。一実施形態の浮動小数点ALU222は、除算、平方根、および剰余のマイクロオペレーションを実行する、64ビット単位の浮動小数点除算器を含む。本発明の複数の実施形態について、浮動小数点値を伴う複数の命令は、浮動小数点ハードウェアで処理されてよい。一実施形態では、複数のALU操作は、高速ALU実行ユニット216、218に進む。一実施形態の高速ALU216、218は、1クロックサイクルの半分の有効レイテンシで、複数の高速操作を実行できる。一実施形態について、低速ALU220は、乗算、シフト、フラグロジック、および分岐処理等の長いレイテンシタイプの操作のための整数実行ハードウェアを含むので、多くの複雑な整数操作は、低速ALU220に行く。メモリロード/格納操作は、AGU212、214によって実行される。一実施形態について、整数ALU216、218、220は、複数の64ビットのデータオペランドに対して複数の整数操作を実行する文脈において記載されている。複数の代替的な実施態様において、16、32、128、256等を含む様々なデータビットをサポートすべく、ALU216、218、220は実装可能である。同様に、様々な幅のビットを有するオペランドの範囲をサポートすべく、浮動小数点ユニット222、224は実装され得る。一実施形態について、浮動小数点ユニット222、224は、SIMD命令およびマルチメディア命令と連携し、128ビット幅の複数のパックされたデータオペランドに対して操作できる。
一実施形態では、μopスケジューラ202、204、206は、親のロードが実行を終了する前に、複数の従属操作をディスパッチする。複数のμopがプロセッサ200内で推論的にスケジュールおよび実行されるので、プロセッサ200はメモリミスを処理するロジックも含む。データロードがデータキャッシュ内でミスされると、スケジューラに一時的に誤ったデータを残す、複数の従属操作がパイプライン内にインフライトで存在する可能性がある。やり直しメカニズムは、誤ったデータを使用する複数の命令を追跡および再実行する。複数の従属操作のみがやり直しの必要があり、複数の独立操作は完了を許可される。プロセッサの一実施形態に係る複数のスケジューラおよびやり直しメカニズムはまた、セキュア暗号ハッシュラウンド機能を提供する複数の命令を捕獲するよう設計されている。
用語「複数のレジスタ」は、複数のオペランドを識別する複数の命令の一部として使用される複数のオンボードプロセッサストレージの位置を指してよい。換言すれば、複数のレジスタは、プロセッサの外部(プログラマーからの視点から)から使用可能なものであってよい。しかしながら、一実施形態の複数のレジスタは、特定のタイプの回路を意味することに限定されるべきではない。むしろ、一実施形態のレジスタは、データを格納および提供し、本明細書に記載の複数の機能を実行可能である。本明細書に記載の複数のレジスタは、複数の専用物理レジスタ、レジスタリネーミングを使用する動的に割り当てられた物理レジスタ、専用物理レジスタおよび動的に割り当てられた物理レジスタの組み合わせ等といった、任意の数の異なる技術を使用し、プロセッサ内の回路によって実装可能である。一実施形態では、複数の整数レジスタは32ビットの整数データを格納する。一実施形態のレジスタファイルは、パックされたデータに対して、8つのマルチメディアSIMDレジスタを含む。以下の説明において、複数のレジスタは、カリフォルニア州サンタクララのインテルコーポレーションのMMX技術で有効化される複数のマイクロオペレーションロセッサ内の複数の64ビット幅のMMX(登録商標)レジスタ(場合によっては複数の「mm」レジスタとして称される)のようなパックされたデータを保持するよう設計された複数のデータレジスタとして理解される。整数および浮動小数点形態の両方で利用可能なこれらのMMXレジスタは、SIMDおよびSSE命令に伴う複数のパックされたデータ要素とともに操作され得る。同様に、SSE2、SSE3、SSE4、あるいはそれより上(一般的に「SSEx」として称される)に関連する128ビット幅のXMMレジスタ技術も、そのような複数のパックされたデータオペランドを保持すべく使用され得る。一実施形態では、パックされたデータおよび整数データを格納する際、複数のレジスタは、2つのデータタイプ間で区別する必要はない。一実施形態では、整数および浮動小数点は、同一のレジスタファイルまたは異なるレジスタファイルのいずれかに格納される。更に、一実施形態では、浮動小数点および整数データは、複数の異なるレジスタまたは同一のレジスタに格納されてよい。
以下の図面の例では、多数のデータオペランドが記載される。図3Aは、本発明の一実施形態に従う複数のマルチメディアレジスタ内の様々なパックされたデータタイプの表現を示す。図3Aは、複数の128ビット幅のオペランドのための、パックされたバイト310、パックされたワード320、およびパックされたダブルワード(dword)330のためのデータタイプを示す。この例に係るパックされたバイトフォーマット310は128ビット長であり、16のパックされたバイトのデータ要素を含む。1バイトは、ここでは8ビットのデータとして定義される。各バイトのデータ要素の情報は、バイト0用のビット0〜ビット7、バイト1用のビット8〜ビット15、バイト2用のビット16〜ビット23、および最後にバイト15用のビット120〜ビット127に格納される。したがって、すべての利用可能なビットは、レジスタ内で使用される。このストレージ構成は、プロセッサのストレージ効率を上げる。また、16のデータ要素がアクセスされる状態にあるので、1操作が16のデータ要素に対して並列的に実行され得る。
概して、1つのデータ要素は、同一の長さの他の複数のデータ要素とともに、単一のレジスタまたはメモリ位置に格納される個々のデータである。SSEx技術に関連する複数のパックされたデータシーケンスにおいて、1つのXMMレジスタ内に格納されたデータ要素数は、個々のデータ要素のビット長で分割された128ビットである。同様に、MMXおよびSSE技術に関連する複数のパックされたデータシーケンスにおいて、1つのMMXレジスタに格納されたデータ要素数は、個々のデータ要素のビット長で分割された64ビットである。図3Aに示される複数のデータタイプは、128ビット長であるが、本発明の複数の実施形態はまた、64ビット幅、256ビット幅、512ビット幅、または他のサイズのオペランドとともに操作できる。この例に係るパックされたワードフォーマット320は128ビット長であり、8つのパックされたワードのデータ要素を含む。各パックされたワードは、16ビットの情報を含む。図3Aのパックされたダブルワードフォーマット330は128ビット長であり、4つのパックされたダブルワードのデータ要素を含む。各パックされたダブルワードのデータ要素は、32ビットの情報を含む。パックされたクワドワードは128ビット長であり、2つのパックされたクワドワードのデータ要素を含む。
図3Bは、代替のレジスタ内のデータストレージフォーマットを示す。各パックされたデータは、1つより多い独立したデータ要素を含み得る。パックされたハーフ341、パックされたシングル342、パックされたダブル343の3つのパックされたデータフォーマットが示されている。パックされたハーフ341、パックされたシングル342、およびパックされたダブル343の一実施形態は、複数の固定小数点のデータ要素を含む。代替的な実施形態について、パックされたハーフ341、パックされたシングル342、およびパックされたダブル343のうちの1または複数は、浮動小数点のデータ要素を含んでよい。パックされたハーフ341の1つの代替的な実施形態は、8つの16ビットのデータ要素を含む、128ビット長である。パックされたシングル342の一実施形態は128ビット長であり、4つの32ビットのデータ要素を含む。パックされたダブル343の一実施形態は128ビット長であり、2つの64ビットのデータ要素を含む。そのような複数のパックされたデータフォーマットは更に、例えば96ビット、160ビット、192ビット、224ビット、256ビット、512ビットまたはそれより多いビットといった、他のレジスタ長に拡張されてよいことが理解されるであろう。
図3Cは、本発明の一実施形態に従う複数のマルチメディアレジスタ内の様々な符号付きおよび符号なしのパックされたデータタイプの表現を示す。符号なしのパックされたバイト表現344は、SIMDレジスタ内の符号なしのパックされたバイトのストレージを示す。各バイトのデータ要素の情報は、バイト0用のビット0〜ビット7、バイト1用のビット8〜ビット15、バイト2用のビット16〜ビット23等、および最後にバイト15用のビット120〜ビット127に格納される。したがって、すべての利用可能なビットはレジスタ内で使用される。このストレージ構成が、プロセッサのストレージ効率を上げることができる。また、16のデータ要素がアクセスされる状態にあるので、1操作が16のデータ要素に対して並列的に実行され得る。符号付きのパックされたバイト表現345は、符号付きのパックされたバイトのストレージを示す。各バイトのデータ要素の第8番目のビットが符号インジケータである点に留意されたい。符号なしのパックされたワード表現346は、ワード0からワード7がSIMDレジスタにどのように格納されるかを示す。符号付きのパックされたワード表現347は、符号なしのパックされたワードのレジスタ内表現346に類似している。各ワードのデータ要素の第16番目のビットが符号インジケータである点に留意されたい。符号なしのパックされたダブルワード表現348は、ダブルワードのデータ要素がどのように格納されるかを示す。符号付きのパックされたダブルワード表現349は、符号なしのパックされたダブルワードのレジスタ内表現348に類似している。必要な符号ビットは、各ダブルワードのデータ要素の第32番目のビットである点に留意されたい。
図3Dは、カリフォルニア州サンタクララのインテルコーポレーションのworld−wide−web(www)のintel.com/products/processor/manuals/から入手可能な「Intel(登録商標)64 and IA−32 Intel Architecture Software Developer's Manual Combined Volumes 2A and 2B:Instruction Set Reference A−Z」に記載されたオペコードフォーマットタイプに対応する、32ビットまたはそれより多いビットおよびレジスタ/メモリオペランドアドレス指定モードを有する、オペレーションエンコーディング(オペコード)フォーマット360の一実施形態の図である。一実施形態では、命令は、フィールド361および362のうちの1または複数によってエンコードされてよい。最大2つのソースオペランド識別子364および365を含み、1命令につき最大2つのオペランドの位置が識別されてよい。一実施形態について、デスティネーションオペランド識別子366はソースオペランド識別子364と同一であるのに対し、複数の他の実施形態において、それらは異なる。代替的な実施形態について、デスティネーションオペランド識別子366はソースオペランド識別子365と同一であるのに対し、複数の他の実施形態において、それらは異なる。一実施形態では、ソースオペランド識別子364および365によって識別されるソースオペランドのうちの1つが、命令の結果によって上書きされるのに対し、複数の他の実施形態においては、識別子364がソースレジスタ要素に対応し、識別子365がデスティネーションレジスタ要素に対応する。一実施形態では、オペランド識別子364および365が、32ビットまたは64ビットのソースおよびデスティネーションオペランドを識別するために使用されてよい。
図3Eは、40またはそれより多いビットを有する、別の代替的なオペレーションエンコーディング(オペコード)フォーマット370の図である。オペコードフォーマット370は、オペコードフォーマット360に対応し、オプションのプレフィックスバイト378を含む。一実施形態に従う命令は、フィールド378、371、および372のうちの1または複数によってエンコードされてよい。1命令につき最大2つのオペランド位置がソースオペランド識別子374および375によって、およびプレフィックスバイト378によって識別されてよい。一実施形態について、32ビットまたは64ビットのソースオペランドおよびデスティネーションオペランドを識別すべく、プレフィックスバイト378が使用されてよい。一実施形態について、デスティネーションオペランド識別子376は、ソースオペランド識別子374と同一であるのに対し、複数の他の実施形態において、それらは異なる。代替的な実施形態について、デスティネーションオペランド識別子376はソースオペランド識別子375と同一であるのに対し、複数の他の実施形態において、それらは異なる。一実施形態では、命令は、オペランド識別子374および375によって識別された複数のオペランドのうちの1または複数に対して操作され、オペランド識別子374および375によって識別される1または複数のオペランドは、命令の結果によって上書きされるのに対し、複数の他の実施形態においては、識別子374および375によって識別される複数のオペランドは別のレジスタ内の別のデータ要素に書き込まれる。オペコードフォーマット360および370は、レジスタ対レジスタ、メモリ対レジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタ対MODフィールド363と373およびオプションのスケールインデックスベースバイトと変位バイトとによって部分的に指定されるメモリアドレス指定を可能にする。
次に図3Fを参照すると、いくつかの代替的な実施形態において、64ビット(または128ビット、または256ビット、または512ビットまたはそれより多いビット)の単一命令複数データ(SIMD)の複数の算術操作が、コプロセッサデータ処理(CDP)命令を介して実行されてよい。オペレーションエンコーディング(オペコード)フォーマット380は、CDPオペコードフィールド382と389を有する1つのそのようなCDP命令を示す。このタイプのCDP命令に係る複数の代替的な実施形態について、複数の操作がフィールド383、384、387、および388のうちの1または複数によってエンコードされてよい。最大2つのソースオペランド識別子385と390、および1つのデスティネーションオペランド識別子386を含み、1命令につき最大3つのオペランドの位置が識別されてよい。コプロセッサの一実施形態は、8、16、32、および64ビット値に対し、操作できる。一実施形態について、命令は複数の整数のデータ要素に対して実行される。いくつかの実施形態において、命令は条件フィールド381を使用して、条件的に実行されてよい。いくつかの実施形態について、ソースデータのサイズがフィールド383によってエンコードされてよい。いくつかの実施形態において、複数のSIMDフィールドに対し、ゼロ(Z)、負(N)、繰り上げ(C)、およびオーバーフロー(V)の検出がなされ得る。いくつかの命令について、飽和タイプがフィールド384によってエンコードされてよい。
次に図3Gを参照すると、カリフォルニア州サンタクララのインテルコーポレーションのworld−wide−web(www)のintel.com/products/processor/manuals/から入手可能な「Intel(登録商標) Advanced Vector Extensions Programming Reference」に記載されたオペコードフォーマットタイプに対応する、別の実施形態に従うセキュア暗号ハッシュラウンド機能を提供するための別の代替的なオペレーションエンコーディング(オペコード)フォーマット397の図である。
様々なフォーマットのアドレスシラブルを持つ1バイトのオペコードと、追加の複数のバイトに含まれる即値オペランドとのために、元のx86命令セットは提供されており、即値オペランドの存在は、最初の「オペコード」バイトから認識された。また、オペコードに対する複数の修飾子として予約された複数の特定のバイト値が存在した(命令の前に配置される必要があったことから、プレフィックスと称される)。256オペコードバイトの元のパレット(これらの特別なプレフィックス値を含む)が使用され尽くすと、単一のバイトが新しいセットの256オペコードへのエスケープとして専用化された。複数のベクトル命令(例えば、SIMD)が追加されたら、より多くのオペコードの必要性が生じるので、たとえプレフィックスの使用を介して拡張された場合であっても、「2バイト」オペコードマッピングは不十分であった。この目的のために、2バイトに更に、オプションのプレフィックスを識別子として使用する複数の追加のマップ内に、複数の新しい命令が追加された。
また、64ビットモードの追加のレジスタを容易化すべく、プレフィックスとオペコードとの間に追加のプレフィックス(「REX」と称する)が使用されてよい(および、オペコードを判断するために必要な任意のエスケープバイト)。一実施形態では、64ビットモードの複数の追加のレジスタの使用を示すべく、REXは4つの「ペイロード」ビットを有してよい。複数の他の実施形態において、REXは4ビットより少ないまたは多いビットを有してよい。少なくとも1つの命令セットの一般的なフォーマット(フォーマット360および/またはフォーマット370に概して対応する)は一般的に、以下のように示される。[prefixes] [rex] escape [escape2] opcode modrm(等)。
オペコードフォーマット397は、オペコードフォーマット370に対応し、最も一般的に使用される他のレガシ命令プレフィックスバイトおよびエスケープコードに代わるオプションのVEXプレフィックスバイト391(一実施形態では、16進数の「C4」で開始する)を含む。例えば、以下は、命令をエンコードするための2つのフィールドを使用する一実施形態を示す。それは、元の命令内に第2のエスケープコードが存在する場合、またはREXフィールド内で複数の追加のビット(例えば、XBフィールドおよびWフィールド)が使用される必要がある場合に、使用されてよい。以下に示される実施形態では、レガシエスケープが新しいエスケープ値によって表され、複数のレガシプレフィックスは複数の「ペイロード」バイトの一部として全体的に圧縮され、複数のレガシプレフィックスは将来の拡張のために再利用されて利用可能であり、第2のエスケープコードは、利用可能な将来のマップまたは特徴空間とともに「マップ」フィールドに圧縮され、複数の新しい特徴(例えば、増大されたベクトル長および追加のソースレジスタ指定子)が追加される。
Figure 0006504679
一実施形態に従う命令が、フィールド391および392のうちの1または複数によってエンコードされてよい。1命令につき最大4つのオペランド位置が、ソースオペランド識別子374および375との組み合わせ、およびオプションのスケールインデックスベース(SIB)識別子393と、オプションの変位識別子394と、オプションの即値バイト395との組み合わせによるフィールド391によって識別されてよい。一実施形態について、32ビット若しくは64ビットのソースオペランドおよびデスティネーションオペランド、並びに/または128ビット若しくは256ビットのSIMDレジスタオペランドまたはメモリオペランドを識別すべく、VEXプレフィックスバイト391が使用されてよい。一実施形態について、オペコードフォーマット397によって提供される機能は、オペコードフォーマット370と冗長的であってよいのに対して、複数の他の実施形態においては、それらは異なる。オペコードフォーマット370および397は、レジスタ対レジスタ、メモリ対レジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタ対MODフィールド373、およびオプションの(SIB)識別子393と、オプションの変位識別子394と、オプションの即値バイト395とによって部分的に指定されるメモリアドレス指定を可能にする。
次に図3Hを参照すると、別の実施形態に従う、セキュア暗号ハッシュラウンド機能を提供するための別の代替的なオペレーションエンコーディング(オペコード)フォーマット398の図である。オペコードフォーマット398は、オペコードフォーマット370および397に対応し、最も一般的に使用される他の複数のレガシ命令プレフィックスバイトおよびエスケープコードに代わり、追加の機能を提供するためのオプションのEVEXプレフィックスバイト396(一実施形態では、16進数の「62」から開始)を含む。一実施形態に従う命令は、フィールド396および392のうちの1または複数によってエンコードされてよい。1命令につき最大4つのオペランド位置およびマスクが、ソースオペランド識別子374と375との組み合わせ、およびオプションのスケールインデックスベース(SIB)識別子393と、オプションの変位識別子394と、オプションの即値バイト395との組み合わせによるフィールド396によって識別されてよい。一実施形態について、32ビット若しくは64ビットのソースオペランドおよびデスティネーションオペランド、並びに/または128ビット、256ビット若しくは512ビットのSIMDレジスタオペランドまたはメモリオペランドを識別すべく、EVEXプレフィックスバイト396が使用されてよい。一実施形態について、オペコードフォーマット398によって提供される機能は、オペコードフォーマット370または397と冗長的であってよいのに対して、複数の他の実施形態においては、それらは異なる。オペコードフォーマット398は、レジスタ対レジスタ、メモリ対レジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタ対MODフィールド373、およびオプションの(SIB)識別子393と、オプションの変位識別子394と、オプションの即値バイト395とによって部分的に指定される複数のマスク付きのメモリアドレス指定を可能にする。少なくとも1つの命令セットの一般的なフォーマット(フォーマット360および/またはフォーマット370に概して対応する)は一般的に、以下のように示される。evex1 RXBmmmmm WvvvLpp evex4 opcode modrm [sib] [disp] [imm]
一実施形態について、EVEXフォーマット398に従いエンコードされた命令は、追加の新しい特徴とともにセキュア暗号ハッシュラウンド機能を提供すべく使用され得る追加の複数の「ペイロード」ビットを有してよい。追加の新しい特徴としては例えば、ユーザ構成可能マスクレジスタ、または追加のオペランド、または128ビット、256ビット若しくは512ビットのベクトルレジスタからの選択、または選択される、より多くのレジスタ等がある。
例えば、暗黙的なマスクを持つセキュア暗号ハッシュラウンド機能を提供するために、VEXフォーマット397が使用されてよい場合、明示的なユーザ構成可能マスクを持つセキュア暗号ハッシュラウンド機能を提供すべく、EVEXフォーマット398が使用されてよい。また、128ビットまたは256ビットのベクトルレジスタに対しセキュア暗号ハッシュラウンド機能を提供するために、VEXフォーマット397が使用されてよい場合、128ビット、256ビット、512ビットまたはそれより大きい(または小さい)ベクトルレジスタに対しセキュア暗号ハッシュラウンド機能を提供するために、EVEXフォーマット398が使用されてよい。
セキュア暗号ハッシュラウンド機能を提供するための複数の例示的命令が、以下の複数の例によって示される。
Figure 0006504679
例えば、計算の過剰な複雑度または許容不能な遅延を要求することなく、攻撃を阻止するための精選された調整を可能とし、処理における所望のサービス品質を減じることなく、負荷分散および/またはサービス拒否攻撃に対する防御等を提供する複数のアプリケーション内でセキュア暗号ハッシュラウンド機能を提供すべく、上記の例示のようなセキュア暗号ハッシュアルゴリズムを採用するための複数の命令が使用されてよいことが理解されるであろう。いくつかの実施形態は、セキュア暗号ハッシュアルゴリズムを実行するためのラウンド数の範囲を指定してよい(例えば、即値オペランド内で)。例えば、一実施形態では、即値バイトオペランド内の0x0Fの16進数の範囲は、上記命令が暗号ハッシュアルゴリズムのすべての16の反復を実行することを指示し得るのに対し、即値バイトオペランド内の0xFFの16進数の範囲は、命令が16の反復のうち1ラウンドのみ実行することを指示し得る、あるいは即値バイトオペランド内の0xF8の16進数の範囲は、命令が暗号ハッシュアルゴリズムの復号化モードで、16ラウンドのうち9ラウンドまでの反復を実行することを指示し得る。ハッシュアルゴリズムとして暗号を採用する際の予期しない利点の1つは、一方向ハッシュアルゴリズムに対し、それは可逆的であるという点である。それは、攻撃(例えば、サービス拒否攻撃)を阻止するための新しいキーの挿入を許可すると同時に、所望の特性(例えば、持続的および/または一貫性のあるハッシュ)を提供する負荷分散のためのキー設計に寄与し得ることが理解されるであろう。ハッシュアルゴリズムとして、暗号化の指定された反復数のみを実行することの別の予期しない利点は、複数の異なるキーセットが各ラウンドまたはラウンド反復の範囲に対して使用されてよいことであり、それにより標準的なサブキースケジュールを使用することでは不可能な暗号結果をもたらす。
ハッシュラウンドの指定された反復数のみを実行する、複数のセキュア暗号ハッシュラウンド命令を提供することによって、複数のキーの前処理および攻撃を阻止するための予め定められた複数のキーの独自のセットからの1または複数のキーオペランドの選択といった他のプロセッシングと同時に、プロセッサパイプライン内のハッシュアルゴリズムの実行を可能にし得ることも理解されるであろう。つまり、ハッシュラウンドの単一の反復が3サイクル(例えば、1ラウンドにつき3サイクル)のパイプラインレイテンシを有し得る場合、複数の結果をパイプライン経由で戻しバイパスすることによって、2回の反復が4サイクル(例えば、1ラウンドにつき2サイクル)のみのレイテンシを有してよく、4回の反復が6サイクル(例えば、1ラウンドにつき1.5サイクル)のみのレイテンシを有してよく、5回の反復が7サイクル(例えば、1ラウンドにつき1.4サイクル)のみのレイテンシを有してよい。4、6または7サイクルのそれらのパイプラインレイテンシ中、他の有用なプロセッシングが、セキュア暗号ハッシュと並列的または同時に実行されてよい。したがって、暗号アルゴリズムのラウンド反復の合計数より少ない反復数(例えば、2、4または5回の反復)を有する、複数のセキュア暗号ハッシュアルゴリズムラウンドのための命令を提供することによって、スーパースカラ実行パイプライン、および/またはアウトオブオーダプロセッサパイプライン内の他の複数の命令の同時実行を許可し、それによって著しく処理スループットを改善させ、汎用プロセッサに関連付けられた製造処理改善のための度数スケーリングを利用させる。
図4Aは、本発明の少なくとも1つの実施形態に従う、インオーダパイプラインおよびレジスタリネーミングステージ、アウトオブオーダ発行/実行パイプラインを示すブロック図である。図4Bは、本発明の少なくとも1つの実施形態に従う、インオーダアーキテクチャコアおよびレジスタリネーミングロジック、プロセッサ内に含まれるアウトオブオーダ発行/実行ロジックを示すブロック図である。図4Aの実線のボックスは、インオーダパイプラインを示す一方、破線のボックスは、レジスタリネーミング、アウトオブオーダ発行/実行パイプラインを示す。同様に、図4B内の実線のボックスはインオーダアーキテクチャロジックを示す一方、破線のボックスはレジスタリネーミングロジックおよびアウトオブオーダ発行/実行ロジックを示す。
図4Aでは、プロセッサパイプライン400は、フェッチステージ402、長さデコードステージ404、デコードステージ406、割り当てステージ408、リネーミングステージ410、スケジューリング(ディスパッチまたは発行としても知られる)ステージ412、レジスタ読み取り/メモリ読み取りステージ414、実行ステージ416、ライトバック/メモリ書き込みステージ418、例外処理ステージ422およびコミットステージ424を含む。
図4Bでは、矢印は2または2より多いユニット間の連結を示し、矢印の方向は、それらのユニット間のデータフローの方向を示す。図4Bは、実行エンジンユニット450に連結されたフロントエンドユニット430を含むプロセッサコア490を示し、両方ともメモリユニット470に連結されている。
コア490は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コアまたはハイブリッド若しくは代替的なコアタイプであってよい。更に別のオプションとして、コア490は例えば、ネットワークまたは通信コア、圧縮エンジン、グラフィックスコア等の特定用途のコアであってよい。
フロントエンドユニット430は、命令キャッシュユニット434に連結された分岐予測ユニット432を含み、命令キャッシュユニット434は、命令トランスレーションルックアサイドバッファ(TLB)436に連結され、TLB436は、命令フェッチユニット438に連結され、命令フェッチユニット438は、デコードユニット440に連結される。デコードユニットまたはデコーダは、複数の命令をデコードし、出力として1または複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、あるいは他の制御信号を生成してよい。他の制御信号は、複数の元の命令からデコードされ、あるいは複数の元の命令を他のように反映し、あるいは複数の元の命令から派生される。デコーダは、様々な異なるメカニズムを使用して実装されてよい。好適なメカニズムの例は限定はされないが、複数のルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリメモリ(ROM)等を含む。命令キャッシュユニット434は更に、メモリユニット470内のレベル2(L2)キャッシュユニット476に連結される。デコードユニット440は、実行エンジンユニット450内のリネーム/アロケータユニット452に連結される。
実行エンジンユニット450は、リタイアユニット454および1または複数スケジューラユニットのセット456に連結されたリネーム/アロケータユニット452を含む。スケジューラユニット456は、複数の予約ステーション、中央命令ウィンドウ等を含む、任意の数の異なるスケジューラを表わす。スケジューラユニット456は、物理レジスタファイルユニット458に連結される。複数の物理レジスタファイルユニット458の各々は、1または複数の物理レジスタファイルを表し、物理レジスタファイルのうちの異なるそれぞれは、スカラ整数、スカラ浮動小数点、パックされた整数、パックされた浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス(例えば、次に実行されるべき命令のアドレスである命令ポインタ)等のような、1または複数の異なるデータタイプを格納する。物理レジスタファイルユニット458は、リタイアユニット454に重ねられており、レジスタリネーミングおよびアウトオブオーダ実行が実装され得る様々な方法を示す(例えば、リオーダバッファおよびリタイアレジスタファイルを使用する、将来のファイル、履歴バッファ、およびリタイアレジスタファイルを使用する、レジスタマップおよびレジスタプール等を使用する)。概して、複数のアーキテクチャレジスタは、プロセッサの外部から、またはプログラマの視点から可視状態にある。当該レジスタは、任意の既知の特定のタイプの回路に限定はされない。様々な異なるタイプのレジスタが、本明細書の記載通り、データを格納および提供可能な限り、好適である。複数の好適なレジスタの例は限定はされないが、複数の専用物理レジスタ、レジスタリネーミングを使用する動的に割り当てられた物理レジスタ、専用物理レジスタおよび動的に割り当てられた物理レジスタの組み合わせ等を含む。リタイアユニット454および物理レジスタファイルユニット458は、実行クラスタ460に連結される。実行クラスタ460は、1または複数の実行ユニット462のセットおよび1または複数のメモリアクセスユニット464のセットを含む。実行ユニット462は、様々なタイプのデータ(例えば、スカラ浮動小数点、パックされた整数、パックされた浮動小数点、ベクトル整数、ベクトル浮動小数点)に対し、様々な操作(例えば、複数のシフト、加算、減算、乗算)を実行してよい。いくつかの実施形態は、特定の複数の関数または複数の関数セット専用の多数の実行ユニットを含んでよい一方で、複数の他の実施形態は、1つのみの実行ユニットまたはユニットのすべてが全部の関数を実行する複数の実行ユニットを含んでよい。スケジューラユニット456、物理レジスタファイルユニット458、および実行クラスタ460は、複数として示される可能性があるが、その理由は、特定の複数の実施形態は、特定のタイプのデータ/操作に対して複数の個別のパイプラインを作成するからである(例えば、各々が自己のスケジューラユニット、物理レジスタファイルユニット、および/または実行クラスタを有するスカラ整数パイプライン、スカラ浮動小数点/パックされた整数/パックされた浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/またはメモリアクセスパイプライン、および別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット464を有する特定の複数の実施形態が実装される)。複数の個別のパイプラインが使用される場合、これらのパイプラインのうちの1または複数がアウトオブオーダ発行/実行であり、残りがインオーダであってよいことも理解されたい。
メモリアクセスユニット464のセットは、データTLBユニット472を含むメモリユニット470に連結され、データTLBユニット472は、データキャッシュユニット474に連結され、データキャッシュユニット474は、レベル2(L2)キャッシュユニット476に連結される。一例示的な実施形態において、メモリアクセスユニット464は、ロードユニット、格納アドレスユニット、および格納データユニットを含んでよく、それらの各々はメモリユニット470内のデータTLBユニット472に連結される。L2キャッシュユニット476は、1または複数の他のレベルのキャッシュに連結され、最終的にはメインメモリに連結される。
例として、例示的なレジスタリネーミング、アウトオブオーダ発行/実行コアアーキテクチャは、以下のようにパイプライン400を実装してよい。1)命令フェッチ438が、フェッチ402および長さデコーディングステージ404を実行する、2)デコードユニット440が、デコードステージ406を実行する、3)リネーム/アロケータユニット452が、割り当てステージ408およびリネーミングステージ410を実行する、4)スケジューラユニット456が、スケジュールステージ412を実行する、5)物理レジスタファイルユニット458およびメモリユニット470が、レジスタ読み取り/メモリ読み取りステージ414を実行し、実行クラスタ460が、実行ステージ416を実行する、6)メモリユニット470および物理レジスタファイルユニット458が、ライトバック/メモリ書き込みステージ418を実行する、7)様々なユニットが、例外処理ステージ422に関わってよく、並びに8)リタイアユニット454および物理レジスタファイルユニット458が、コミットステージ424を実行する。
コア490は、1または複数の命令セット(例えば、x86命令セット(複数の新バージョンでいくつかの拡張が追加されている)、カリフォルニア州サニーベールにあるMIPS TechnologiesのMIPS命令セット、カリフォルニア州サニーベールにあるARM HoldingsのARM命令セット(NEON等の複数のオプションの追加拡張を持つ)をサポートしてよい。
コアは、マルチスレッディング(操作またはスレッドの2または2より多い並列セットを実行すること)をサポートしてもよく、時分割マルチスレッディング、同時マルチスレッディング(ここで、単一の物理コアは、物理コアが同時マルチスレッディングを実行する複数のスレッドの各々に、論理コアを提供する)、またはこれらの組み合わせ(例えば、時分割フェッチおよびデコーディング、その後、インテル(登録商標)ハイパースレッディングテクノロジ内のような同時マルチスレッディング)を含む複数の様々な態様で、これを実行してもよいことを理解されたい。
レジスタリネーミングはアウトオブオーダ実行の文脈で記載されているが、インオーダアーキテクチャにおいて、レジスタリネーミングが使用されてよいことを理解されたい。プロセッサの例示された実施形態は、別個の命令キャッシュユニット434とデータキャッシュユニット474、および共有L2キャッシュユニット476も含む一方で、複数の代替的な実施形態は、複数の命令とデータの両方に対する、例えば、レベル1(L1)内部キャッシュまたは複数のレベルの内部キャッシュのような単一の内部キャッシュを有してよい。いくつかの実施形態において、システムは内部キャッシュと、コアおよび/またはプロセッサに外付けされた外部キャッシュとの組み合わせを含んでよい。あるいは、すべてのキャッシュはコアおよび/またはプロセッサに対し外付けされてよい。
図5は、本発明の複数の実施形態に従う、統合されたメモリコントローラとグラフィックスを持つシングルコアプロセッサおよびマルチコアプロセッサ500のブロック図である。図5の実線のボックスは、シングルコア502A、システムエージェント510、1または複数のバスコントローラユニットのセット516を持つプロセッサ500を示す一方で、オプションの追加である破線のボックスは複数のコア502Aから502N、システムエージェントユニット510内の1または複数の統合メモリコントローラユニットのセット514、および統合グラフィックスロジック508を持つ代替のプロセッサ500示す。
メモリ階層は、複数のコア内の1または複数のレベルのキャッシュ、1または複数の共有キャッシュユニット506またはそのセット、および複数の統合メモリコントローラユニット514のセットに連結された外部メモリ(不図示)を含む。共有キャッシュユニット506のセットは、レベル2(L2)、レベル3(L3)、レベル4(L4)、または他のレベルのキャッシュ、LLC(Last Level Cache)および/またはこれらの組み合わせ等の1または複数のMLC(Mid‐Level Cache)を含んでよい。一実施形態では、リングベースの相互接続ユニット512が、統合グラフィックスロジック508、共有キャッシュユニット506のセット、およびシステムエージェントユニット510を相互接続する一方で、複数の代替的な実施形態は、そのような複数のユニットを相互接続するための任意の数の周知技術を使用してよい。
いくつかの実施形態において、コア502A〜502Nのうちの1または複数は、マルチスレッディングが可能である。システムエージェント510は、コア502A〜502Nを調整および操作する複数のコンポーネントを含む。システムエージェントユニット510は例えば、パワーコントロールユニット(PCU)およびディスプレイユニットを含んでよい。PCUはコア502Aから502Nおよび統合グラフィックスロジック508の電力状態を制御するのに必要なロジックおよび複数のコンポーネントであってよい、あるいはPCUは上記ロジックおよび複数のコンポーネントを含んでよい。ディスプレイユニットは1または複数の外部接続されたディスプレイを駆動するためのものである。
コア502A−502Nは、アーキテクチャおよび/または命令セットの見地から同種または異種であってよい。例えば、コア502A〜502Nの一部が、インオーダであり、他がアウトオブオーダであってよい。別の例として、コア502A〜502Nの2または2より多いものは同一の命令セットの実行が可能な一方で、他のものはその命令セットのサブセットのみまたは異なる命令セットを実行可能であってよい。
プロセッサは、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なCore(登録商標)i3、i5、i7、2DuoおよびQuad、Xeon(登録商標)、Itanium(登録商標)、XScale(登録商標)またはStrongARM(登録商標)プロセッサ等の汎用プロセッサであってよい。あるいは、プロセッサはARM Holdings, Ltd、MIPS等の別の会社のものであってよい。プロセッサは、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、コプロセッサ、埋め込みプロセッサ等の特定用途向けプロセッサであってよい。プロセッサは、1または複数のチップ上に実装されてよい。プロセッサ500は、例えばBiCMOS、CMOSまたはNMOSといった多数の処理技術のうちの任意のものを使用する、1または複数の回路基板の一部であってよく、および/または当該回路基板上に実装されてよい。
図6から図8は、プロセッサ500を含むために好適な例示的なシステムである一方、図9はコア502のうちの1または複数を含んでよいチップ(SoC)上の例示的なシステムである。複数のラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、テレビゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスに係る技術分野で既知の複数の他のシステム設計および構成も好適である。通常、本明細書に開示のプロセッサおよび/または他の実行ロジックを搭載可能な非常に様々なシステムまたは電子デバイスが概して好適である。
ここで図6を参照すると、本発明の一実施形態に従う、システム600のブロック図が示される。システム600は、1または複数のプロセッサ610、615を含んでよく、それらはグラフィックスメモリコントローラハブ(GMCH)620に連結されている。追加のプロセッサ615のオプションの特性が、図6に破線で示される。
各プロセッサ610、615は、プロセッサ500の何らかのバージョンであってよい。しかしながら、統合グラフィックスロジックおよび統合メモリ制御ユニットがプロセッサ610、615に存在する可能性が低いことに留意されたい。図6は、GMCH620が、例えばダイナミックランダムアクセスメモリ(DRAM)であってよいメモリ640に連結されてよいことを示す。DRAMは、少なくとも一実施形態については、不揮発性キャッシュに関連付けられてよい。
GMCH620はチップセット、またはチップセットの一部であってよい。GMCH620はプロセッサ610、615と通信してよく、プロセッサ610、615とメモリ640との間の対話を制御してよい。またGMCH620は、プロセッサ610、615と、システム600の他の複数の要素との間の加速バスインタフェースとして動作してもよい。少なくとも一実施形態について、GMCH620は、フロントサイドバス(FSB)695などのマルチドロップバスを介してプロセッサ610、615と通信する。
更に、GMCH620はディスプレイ645(フラットパネルディスプレイのような)に連結される。GMCH620は、統合グラフィックスアクセラレータを含んでよい。GMCH620は更に、様々な周辺デバイスをシステム600に連結するのに使用されてよい入/出力(I/O)コントローラハブ(ICH)650に連結される。図6の実施形態においては、別の周辺デバイス670と併せて、ICH650に連結された別個のグラフィックスデバイスであってよい外部グラフィックスデバイス660が例として示されている。
あるいは、追加または異なるプロセッサがシステム600内に存在してもよい。例えば、追加のプロセッサ615はプロセッサ610と同一の追加のプロセッサ、プロセッサ610と異種または非対称の追加のプロセッサ、複数のアクセラレータ(例えば、複数のグラフィックスアクセラレータまたはデジタル信号処理(DSP)ユニット)、フィールドプログラマブルゲートアレイ、または任意の他のプロセッサを含んでよい。アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、電力消費特性等を含む利点のメトリックスの範囲の見地から、物理リソース610、615間には様々な差異があり得る。これらの差異は、プロセッサ610、615間の非対称および異種性として効果的に現れてよい。少なくとも一実施形態について、様々なプロセッサ610、615が、同一のダイパッケージ内に存在してよい。
ここで図7を参照すると、本発明の一実施形態に従う、第2のシステム700のブロック図が示される。図7に示される通り、マルチプロセッサシステム700はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続750を介して連結された第1のプロセッサ770および第2のプロセッサ780を含む。プロセッサ770および780の各々は、プロセッサ610、615のうちの1または複数のようなプロセッサ500の何らかのバージョンであってよい。
2つのプロセッサ770、780のみで示される一方、本発明の範囲はそのように限定されないことを理解されたい。複数の他の実施形態において、1または複数の追加のプロセッサが特定のプロセッサ内に存在してよい。
プロセッサ770および780は、統合メモリコントローラユニット772および782をそれぞれ含むように示される。プロセッサ770は、そのバスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース776および778を含み、同様に第2のプロセッサ780はP−Pインタフェース786および788を含む。プロセッサ770、780は、P−Pインタフェース回路778、788を使用し、ポイントツーポイント(P−P)インタフェース750を介して情報を交換してよい。図7に示されるように、IMC772および782は、当該複数のプロセッサをそれぞれのメモリ、即ちメモリ732とメモリ734とに連結し、メモリ732とメモリ734は複数のそれぞれのプロセッサに局所的に付加されたメインメモリの複数の部分であってよい。
プロセッサ770、780の各々は、ポイントツーポイントインタフェース回路776、794、786、798を使用する個々のP−Pインタフェース752、754を介して、チップセット790と情報を交換してよい。チップセット790はまた、高性能グラフィックスインタフェース739を介して高性能グラフィックス回路738と情報を交換してよい。
共有キャッシュ(不図示)は、いずれかのプロセッサ内または両方のプロセッサ外に含まれ得るが、プロセッサが低電力モードに配置された場合に、いずれかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュ内に格納され得るように、P−P相互接続を介して、複数のプロセッサとさらに接続されてもよい。
チップセット790は、インタフェース796を介して、第1のバス716に連結されてよい。本発明の範囲は限定されないものの、一実施形態では、第1のバス716はPCI(Peripheral Component Interconnect)バス、あるいはPCI Expressバスまたは別の第三世代I/O相互接続バス等のバスであってよい。
図7に示されるように、様々なI/Oデバイス714が、第1のバス716を第2のバス720に連結するバスブリッジ718と共に、第1のバス716に連結されてよい。一実施形態では、第2のバス720はLow Pin Count(LPC)バスであってよい。一実施形態では、例えば、キーボードおよび/またはマウス722、複数の通信デバイス727および複数の命令/コードおよびデータ730を含んでよいディスクドライブまたは他の大容量ストレージデバイスのようなストレージユニット728を含む様々なデバイスが、第2のバス720に連結されてよい。更に、オーディオI/O724が第2のバス720に連結されてよい。他の複数のアーキテクチャが可能であることに留意されたい。例えば、図7のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバスまたは他のそのようなアーキテクチャを実装してよい。
ここで図8を参照すると、本発明の一実施形態に従う、第3のシステム800のブロック図が示される。図7と図8とで同様の要素は、同様の参照符号を付し、図8の複数の他の態様を不明瞭にするのを回避すべく、図7の複数の特定の態様は図8で省略されている。
図8は、プロセッサ870、880は統合メモリおよびI/O制御ロジック(「CL」)872および882をそれぞれ含んでよいことを示す。少なくとも一実施形態について、CL872、882は、図5および図7を参照して上述したような統合メモリコントローラユニットを含んでよい。また、CL872、CL882はI/O制御ロジックも含んでよい。図8は、メモリ832、834がCL872、CL882に連結されるのみでなく、I/Oデバイス814も、制御ロジック872、882に連結されることを示す。レガシI/Oデバイス815が、チップセット890に連結される。
ここで、図9を参照すると、本発明の実施形態に従う、SoC900のブロック図が示される。図5と同様の要素には、同様の参照符号が付されている。また、複数の破線のボックスは、より高度なSoC上の複数のオプションの特徴である。図9において、相互接続ユニット902は、1または複数のコア502A〜502Nのセットと共有キャッシュユニット506とを含むアプリケーションプロセッサ910、システムエージェントユニット510、バスコントローラユニット516、統合メモリコントローラユニット514、統合グラフィックスロジック508と、静止および/またはビデオカメラ機能を提供するためのイメージプロセッサ924と、ハードウェアオーディオアクセラレーションを提供するためのオーディオプロセッサ926と、ビデオエンコード/デコードアクセラレーションを提供するためのビデオプロセッサ928とを含んでよい1または複数のメディアプロセッサ920のセット、スタティックランダムアクセスメモリ(SRAM)ユニット930、ダイレクトメモリアクセス(DMA)ユニット932、および1または複数の外部ディスプレイに連結するためのディスプレイユニット940に連結される。
図10は、中央処理装置(CPU)およびグラフィックス処理ユニット(GPU)を含むプロセッサを示し、それらは一実施形態に従う、少なくとも1つの命令を実行してよい。一実施形態では、少なくとも一実施形態に従う複数の操作を実行するための命令は、CPUによって実行され得る。別の実施形態では、命令はGPUによって実行され得る。更なる別の実施形態において、命令はGPUおよびCPUによって実行される複数の操作の組み合わせを介して実行されてよい。例えば、一実施形態では、一実施形態に従う命令がGPUで受信され、実行のためにデコードされてよい。しかしながら、デコードされた命令内の1または複数の操作がCPUにより実行されてよく、命令の最終的なリタイアのために、その結果がGPUに戻されてよい。逆に、いくつかの実施形態において、CPUがプライマリプロセッサとして、GPUがコプロセッサとして動作してよい。
いくつかの実施形態において、高度に並列的な複数のスループットプロセッサから利益を受ける複数の命令はGPUによって実行されてよい一方で、深くパイプライン化された複数のアーキテクチャから利益を受ける複数のプロセッサの性能から利益を受ける複数の命令は、CPUによって実行されてよい。例えば、複数のグラフィックス、科学技術アプリケーション、財務アプリケーションおよび複数の他の並列的ワークロードは、GPUの性能から利益を受け、それに応じて実行されてよい一方で、オペレーティングシステムカーネル若しくはアプリケーションコード等の、複数のよりシーケンシャルなアプリケーションは、CPUにより好適であってよい。
図10では、プロセッサ1000は、CPU1005、GPU1010、イメージプロセッサ1015、ビデオプロセッサ1020、USBコントローラ1025、UARTコントローラ1030、SPI/SDIOコントローラ1035、ディスプレイデバイス1040、High−Definition Multimedia Interface(HDMI(登録商標))コントローラ1045、MIPIコントローラ1050、フラッシュメモリコントローラ1055、デュアルデータレート(DDR)コントローラ1060、セキュリティエンジン1065、およびIS/IC(Integrated Interchip Sound/Inter−Integrated Circuit)インタフェース1070を含む。さらに多くのCPUまたはGPUおよび他の周辺インタフェースコントローラを含め、他のロジックおよび複数の回路が図10のプロセッサに含まれてよい。
少なくとも一実施形態に係る1または複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体上に格納された代表的データによって実装されてよい。このようなデータが機械により読み取られると、機械に対し、本明細書に記載の複数の技術を実行させるロジックを製造させるものである。複数の「IPコア」として知られるそのような複数の表現は、有形の機械可読媒体(「テープ」)上に格納されて、実際に当該ロジックまたはプロセッサを作成する複数の製造機械にロードすべく、様々な顧客または製造施設に対し供給されてよい。例えば、ARM Holdings, Ltd.により開発されたCortex(登録商標)ファミリのプロセッサおよび中国科学院のコンピューティング技術研究所(ICT)により開発されたLoongson IPコアといった複数のIPコアが、Texas Instruments、Qualcomm、Apple、若しくはSamsung等の様々な顧客またはライセンシに対してライセンス若しくは販売されてよく、これらの顧客またはライセンシによって製造された複数のプロセッサ内に実装されてよい。
図11は、一実施形態に従う、複数のIPコアの開発を示すブロック図を示す。ストレージ1130は、シミュレーションソフトウェア1120および/またはハードウェア若しくはソフトウェアモデル1110を含む。一実施形態では、IPコア設計を表わすデータはメモリ1140(例えば、ハードディスク)、有線接続(例えば、インターネット)1150または無線接続1160を介して、ストレージ1130に提供され得る。シミュレーションツールおよびモデルによって生成されたIPコア情報は次に、製造施設に送信され得、そこにおいて、少なくとも一実施形態に従う少なくとも1つの命令を実行すべく、サードパーティによって、それは製造され得る。
いくつかの実施形態において、1または複数の命令が、第1のタイプまたはアーキテクチャ(例えば、x86)に対応してよく、異なるタイプまたはアーキテクチャ(例えば、ARM)のプロセッサ上で変換またはエミュレーションされてよい。したがって、一実施形態に従う命令はARM、x86、MIPS、GPUまたは他のプロセッサタイプ若しくはアーキテクチャを含む任意のプロセッサ若しくはプロセッサタイプ上で実行されてよい。
図12は、一実施形態に従い、どのように第1のタイプの命令が異なるタイプのプロセッサによってエミュレーションされるかを示す。図12において、プログラム1205は、一実施形態に従う命令と同一または実質的に同一の機能を実行し得るいくつかの命令を含む。しかしながら、プログラム1205の複数の命令は、プロセッサ1215と異なるまたは互換性のないタイプおよび/またはフォーマットであってよく、このことは、プログラム1205内のタイプの当該複数の命令は、プロセッサ1215によってネイティブに実行できないことがあることを意味する。しかしながら、エミュレーションロジック1210を用いることで、プログラム1205に係る複数の命令は、プロセッサ1215によってネイティブに実行可能な複数の命令に変換される。一実施形態では、エミュレーションロジックはハードウェア内に具現化される。別の実施形態では、エミュレーションロジックは、プログラム1205内のタイプの当該複数の命令を、プロセッサ1215によってネイティブに実行可能なタイプに変換するソフトウェアを含む有形の機械可読媒体内に具現化される。複数の他の実施形態において、エミュレーションロジックは、固定関数若しくはプログラマブルハードウェアと、有形な機械可読媒体上に格納されたプログラムとの組み合わせである。一実施形態では、プロセッサはエミュレーションロジックを含む一方、複数の他の実施形態においては、エミュレーションロジックは、プロセッサの外部に存在し、サードパーティによって提供される。一実施形態では、プロセッサは、プロセッサ内に含まれる、またはプロセッサに関連付けられたマイクロコードまたはファームウェアを実行することによって、ソフトウェアを含む有形の機械可読媒体上に具現化されたエミュレーションロジックをロード可能である。
図13は、本発明の複数の実施形態に従う、ソース命令セット内の複数のバイナリ命令をターゲット命令セット内の複数のバイナリ命令に変換するソフトウェア命令コンバータの使用を対比させるブロック図である。例示された実施形態において、命令コンバータはソフトウェア命令コンバータであるが、代替的に、命令コンバータはソフトウェア、ファームウェア、ハードウェアまたはこれらの様々な組み合わせで実装されてよい。図13は、少なくとも1つのx86命令セットコアを有するプロセッサ1316によってネイティブに実行され得るx86バイナリコード1306を生成すべく、x86コンパイラ1304を使用して高水準言語1302のプログラムがコンパイルされてよいことを示す。少なくとも1つのx86命令セットコアを有するプロセッサ1316は、少なくとも1つのx86命令セットコアを有するIntel(登録商標)プロセッサと実質的に同一の結果を実現すべく、(1)Intel(登録商標)x86命令セットコアの命令セットの大部分、または(2)少なくとも1つのx86命令セットコアを有するIntel(登録商標)プロセッサ上での実行用の複数のアプリケーション若しくは他のソフトウェアのオブジェクトコードバージョンを互換性のある状態で実行またはそれ以外の態様で処理することによって、少なくとも1つのx86命令セットコアを有するIntel(登録商標)プロセッサと実質的に同一の複数の機能を実行可能な任意のプロセッサを表わす。x86コンパイラ1304は、追加のリンケージ処理のあるなしに関わらず、少なくとも1つのx86命令セットコア1316を有するプロセッサ上で実行可能なx86バイナリコード1306(例えば、オブジェクトコード)を生成すべく動作可能なコンパイラを表わす。同様に、図13は、高水準言語1302のプログラムが代替の命令セットコンパイラ1308を使用してコンパイルされることにより、少なくとも1つのx86命令セットコアを有さないプロセッサ1314(例えば、カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セットを実行する、および/またはカリフォルニア州サニーベールのARM HoldingsのARM命令セットを実行する複数のコアを有するプロセッサ)によってネイティブに実行され得る代替の命令セットバイナリコード1310が生成されてよいことを示す。x86バイナリコード1306を、x86命令セットコアを有さないプロセッサ1314によってネイティブで実行され得るコードに変換すべく、命令コンバータ1312が使用される。この変換が可能な命令コンバータの作成は難しいので、この変換されたコードは代替の命令セットバイナリコード1310と同一でない可能性がある。しかしながら、変換されたコードは一般的な操作を実現し、代替の命令セットの複数の命令で構成される。したがって、命令コンバータ1312はエミュレーション、シミュレーションまたは任意の他の処理を介して、x86命令セットプロセッサまたはコアを有しないプロセッサまたは他の電子デバイスがx86バイナリコード1306を実行できるようにするソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表わす。
図14は、セキュア暗号ハッシュラウンド機能を提供する命令の実行のための装置1401の一実施形態に対する図を示す。装置1401の複数の実施形態は、セキュア暗号ハッシュラウンド機能を提供する命令の実行のためのパイプライン400(例えば、実行ステージ416)の一部またはコア490(例えば、実行ユニット462)の一部であってよい。装置1401の複数の実施形態は、ハッシュアルゴリズムのラウンド反復合計数より少ない反復数(例えば、1、2または4回の反復、これによってスーパースカラ実行パイプライン内の他の複数の命令の同時実行を許可できる)を有するセキュア暗号ハッシュアルゴリズムラウンド(複数の場合あり)のための命令をデコードする、デコードステージ(例えば、デコード406)またはデコーダ(例えば、デコードユニット440)に連結されてよく、当該命令はソースデータおよび1または複数のキーオペランド1430を指定する。1または複数の実行ユニット(例えば、実行装置1401)はデコードされた第1の命令に応答して、処理ブロック1421内で初期転置1415をソースデータ1410に対して実行し、転置されたソースデータ1420を生成する。転置されたソースデータ1420は、左部分1420Lおよび右部分1420Rを含む。1または複数の実行ユニットは、1または複数のキーオペランド1430を使用して、セキュア暗号ハッシュアルゴリズムの1または複数のラウンド反復を転置されたソースデータ1420に対し実行する。この場合、当該1または複数のラウンド反復は、例えば、一実施形態では16未満のように、ハッシュアルゴリズムのラウンド反復合計数より少ない。右部分1420Rは、オプションの関数ブロックF1440によって処理されてよく、オプションの関数ブロックF1440はいくつかの実施形態において、DESおよび/またはTriple DES(TDES)で使用されるもののような、Feistel暗号ラウンド関数である。複数の代替的な実施形態は、例えば、Blowfish、SAFER K−64、CAST5、FEAL等のような別の暗号アルゴリズムを使用してよい。関数ブロックF1440の一実施形態は、XORロジック1443によって、キー1430の部分(例えば、48ビット)と組み合わされる拡張(例えば48ビット)部分を生成すべく、右(例えば、32ビット)部分1420Rから複数のビットを選択するための関数ブロックE1441を含む。関数ブロックF1440は更に、一実施形態では、各々がXORロジック1443から入力部分(例えば6ビット)を取得し、関数ブロックF1440の出力(例えば、32ビット)を生成する転置関数ブロックP1447に対し部分(例えば、4ビット)を出力するためのS([1]からS[8]の選択関数1445を含む。関数ブロックF1440の出力は、新しい右部分(例えば、32ビット)1450Rを生成すべく、XORロジック1449によって左部分(例えば、32ビット)1420Lと組み合わされる。一実施形態について、新しい左部分(例えば、32ビット)1450Lは、前の右部分(例えば、32ビット)1420Rを単純にコピーすることによって生成される。一実施形態では、新しい左部分1450Lおよび新しい右部分1450Rは、プリ出力1450を構成する。セキュア暗号ハッシュアルゴリズムの1より多いラウンド反復が装置1401によって実行される場合、新しい左部分1450Lおよび新しい右部分1450Rはバイパス1452Lおよび1452Rによってそれぞれ迂回され、セキュア暗号ハッシュアルゴリズムの次の後続のラウンド反復の左部分1420Lおよび右部分1420Rを形成してよいことが理解されるであろう。セキュア暗号ハッシュアルゴリズムの指定された1または複数のラウンド反復の最後が実行された場合、逆初期転置1455が処理ブロック1461内で、暗号化されたプリ出力データ1450に対し実行され、第1の命令の結果をデスティネーションレジスタ内に格納される暗号化された出力データ1460として生成する。装置1401のいくつかの実施形態は、暗号化された出力データ1460を64ビットの汎用デスティネーションレジスタに格納してよい。装置1401のいくつかの代替的な実施形態は、64ビット、128ビット、256ビットまたは512ビットのSIMDベクトルデスティネーションレジスタの64ビット部分内に暗号化された出力データ1460を格納してよい。例えば、装置1401の複数の実施形態は、複数の変動可能なm個の可変サイズのデータ要素の複数の値を格納するための複数の変動可能なm個の可変サイズデータフィールドを含む複数のベクトルレジスタ(例えば、物理レジスタファイルユニット458)に連結されてよい。
図15は、セキュア暗号ハッシュラウンド機能を提供する命令の実行のための装置1501の代替的な実施形態の図を示す。装置1501の複数の実施形態も、セキュア暗号ハッシュラウンド機能を提供する命令の実行のためのパイプライン400(例えば、実行ステージ416)の一部またはコア490(例えば、実行ユニット462)の一部であってよい。装置1501の複数の実施形態は、ハッシュアルゴリズムのラウンド反復合計数より少ない反復数(例えば、1、2または4回の反復、これによってスーパースカラ実行パイプライン内の他の複数の命令の同時実行を許可できる)を有するセキュア暗号ハッシュアルゴリズムラウンド(複数の場合あり)のための命令をデコードする、デコードステージ(例えば、デコード406)またはデコーダ(例えば、デコードユニット440)に連結されてよく、当該命令はソースデータおよび1または複数のキーオペランド1530を指定する。1または複数の実行ユニット(例えば、実行装置1501)はデコードされた第1の命令に応答して、処理ブロック1521内で初期転置1515をソースデータ1510に対して実行し、転置されたソースデータ1520を生成する。転置されたソースデータ1520は、左部分1520Lおよび右部分1520Rを含む。1または複数の実行ユニットは、1または複数のキーオペランド1530を使用して、セキュア暗号ハッシュアルゴリズムの1または複数のラウンド反復を転置されたソースデータ1520に対し実行する。この場合、当該1または複数のラウンド反復は、例えば、一実施形態では16未満のように、ハッシュアルゴリズムのラウンド反復合計数より少ない。右部分1520Rは、オプションの関数ブロックF1540によって処理され、オプションの関数ブロックF1540はいくつかの実施形態において、DESおよび/またはTDESで使用されるもののような、Feistel暗号ラウンド関数である。関数ブロックF1540の一実施形態は、XORロジック1543によって、キー1530の部分(例えば、48ビット)と組み合わされる拡張(例えば48ビット)部分を生成すべく、右(例えば、32ビット)部分1520Rから複数のビットを選択するための関数ブロックE1541を含む。関数ブロックF1540は更に、一実施形態では、各々がXORロジック1543から入力部分(例えば、6ビット)を取得し、関数ブロックF1540の出力(例えば、32ビット)を生成する転置関数ブロックP1547に対し部分(例えば、4ビット)を出力するためのS[1]からS[8]の選択関数1545を含む。関数ブロックF1540の出力は、左MUX1553Lおよび右MUX1553Rに対し、右入力を生成すべく、XORロジック1549によって左部分(例えば、32ビット)1520Lと組み合わされる。左MUX1553Lおよび右MUX1553Rへの左入力は、単純に前の右部分(例えば、32ビット)1520Rをコピーすることによって生成される。セキュア暗号ハッシュアルゴリズムの最終のラウンド反復(例えば、一実施形態では16)が実行された場合、新しい左部分(例えば、32ビット)1550Lおよび新しい右部分(例えば、32ビット)1550Rをそれぞれ生成すべく、左MUX1553Lへの右入力および右MUX1553Rへの左入力が選択されるよう、信号Last1551がアサートされてよい(1)。あるいは、信号Last1551がアサートされない場合(0)、新しい左部分(例えば、32ビット)1550Lおよび新しい右部分(例えば、32ビット)1550Rをそれぞれ生成すべく、左MUX1553Lへの左入力および右MUX1553Rへの右入力が選択される。一実施形態では、新しい左部分1550Lおよび新しい右部分1550Rは、プリ出力1550を構成する。セキュア暗号ハッシュアルゴリズムの1より多いラウンド反復が装置1501によって実行される場合、新しい左部分1550Lおよび新しい右部分1550Rはバイパス1552Lおよび1552Rによってそれぞれ迂回され、セキュア暗号ハッシュアルゴリズムの次の後続のラウンド反復の左部分1520Lおよび右部分1520Rを形成してよいことが理解されるであろう。
セキュア暗号ハッシュアルゴリズムの指定された1または複数のラウンド反復の最終のものが実行された場合、逆初期転置1555が処理ブロック1561内で、暗号化されたプリ出力データ1550に対し実行され、第1の命令の結果を、デスティネーションレジスタ内に格納される暗号化された出力データ1560として生成する。装置1501のいくつかの実施形態は、暗号化された出力データ1560を64ビットの汎用デスティネーションレジスタに格納してよい。装置1501のいくつかの代替的な実施形態は、32ビットの汎用レジスタのペア内に暗号化された出力データ1560を格納してよい。装置1501のいくつかの代替的な実施形態は、64ビット、128ビット、256ビットまたは512ビットのSIMDベクトルデスティネーションレジスタの64ビット部分内に暗号化された出力データ1560を格納してよい。
ハッシュラウンドの指定された反復数のみを実行する、複数のセキュア暗号ハッシュラウンド反復のための命令の実行を提供することによって、複数のキーの前処理および攻撃を阻止する等ための予め定められた複数のキーの独自のセットからの1または複数のキーオペランドの選択といった他のプロセッシングと同時に、プロセッサパイプライン内のハッシュアルゴリズムの実行を可能にしてよいことが理解されるであろう。つまり、ハッシュラウンドの単一の反復が3サイクル(例えば、1ラウンドにつき3サイクル)のパイプラインレイテンシを有し得る場合、複数の結果をパイプライン経由で戻すことをバイパスすることによって、2回の反復が4サイクル(例えば、1ラウンドにつき2サイクル)のみのレイテンシを有してよく、4回の反復が6サイクル(例えば、1ラウンドにつき1.5サイクル)のみのレイテンシを有してよく、5回の反復が7サイクル(例えば、1ラウンドにつき1.4サイクル)のみのレイテンシを有してよい。4、6または7サイクルのそれらのパイプラインレイテンシ中、他の有用なプロセッシングが、セキュア暗号ハッシュと並列的または同時に実行されてよい。したがって、暗号アルゴリズムのラウンド反復の合計数より少ない反復数(例えば、2、4または5回の反復)を有する、複数のセキュア暗号ハッシュアルゴリズムラウンドのための命令を提供することによって、スーパースカラ実行パイプライン、および/またはアウトオブオーダプロセッサパイプライン内の他の複数の命令の同時実行を許可し、それによって著しく処理スループットを改善させ、汎用プロセッサに関連付けられた製造処理改善のための度数スケーリングを利用させる。
図16は、セキュア暗号ハッシュラウンド機能を提供するための処理1601の一実施形態のためのフロー図を示す。処理1601および本明細書に開示された他の複数の処理は、複数の汎用機械または特定用途機械またはそれら両方の組み合わせによって実行可能な、専用ハードウェア若しくはソフトウェア若しくはファームウェアの複数のオペレーションコードを含み得る複数の処理ブロックによって実行される。
処理1601の処理ブロック1610において、セキュア暗号ハッシュのための命令がデコードされ、そこにおいて当該命令のいくつかの実施形態は少なくともソースデータ、および1または複数のキーオペランドを指定してよい。処理ブロック1620において、転置されたソースデータを生成すべく、初期転置がソースデータに対し実行される。処理ブロック1630において、当該命令に応答して、セキュア暗号ハッシュアルゴリズムのラウンド反復が転置されたソースデータに対し、1または複数のキーオペランドを使用して実行される。セキュア暗号ハッシュのいくつかの実施形態は同一の命令に応答して、1回より多いラウンド反復を実行するが、通常、ラウンド反復の総数より少ない回数(例えば、16未満)がセキュア暗号ハッシュに要求されてよい。処理ブロック1640において、当該命令のための指定されたラウンド反復数が終了したか否かが判断される。終了していない場合、処理は処理ブロック1630における開始を繰り返す。あるいは、処理ブロック1650において、逆初期順転置が暗号化されたデータに対し、実行される。次に、処理ブロック1660において、命令によって指定されるフォーマットに従い、命令の結果がデスティネーションに格納され、例えば、命令によって指定されるフォーマットは、最終のラウンド反復または中間のラウンド反復のためのものであってよく、デスティネーションは命令によってレジスタデスティネーションオペランドまたはメモリデスティネーションオペランドとして指定されてよい。命令の一実施形態は、DESまたはTDESのようなFeistel暗号アルゴリズムを使用して、セキュア暗号ハッシュアルゴリズムラウンド反復を指定する。複数の代替的な実施形態は、例えば、Blowfish、SAFER K−64、CAST5、FEAL等のような他の複数の暗号アルゴリズムを使用してよい。
例えば、計算の過剰な複雑度または許容不能な遅延を要求することなく、攻撃を阻止するための精選された調整を可能とし、処理における所望のサービス品質を減じることなく、負荷分散および/またはサービス拒否攻撃に対する防御等を提供する複数のアプリケーション内でセキュア暗号ハッシュラウンド機能を提供すべく、セキュア暗号ハッシュアルゴリズムを採用するための複数の命令が使用されてよいことが理解されるであろう。いくつかの実施形態は、セキュア暗号ハッシュアルゴリズムを実行するためのラウンド数の範囲を指定してよい(例えば、即値オペランド内で)。例えば、一実施形態では、即値バイトオペランド内の0x0Fの16進数の範囲は、上記命令が暗号ハッシュアルゴリズムのすべての16の反復を実行することを指示し得るのに対し、即値バイトオペランド内の0xFFの16進数の範囲は、命令が16の反復のうち1ラウンドのみ実行することを指示し得る、あるいは即値バイトオペランド内の0xF8の16進数の範囲は、命令が暗号ハッシュアルゴリズムの復号化モードで、16ラウンドのうち9ラウンドまでの反復を実行することを指示し得る。ハッシュアルゴリズムとして暗号を採用する際の予期しない利点の1つは、一方向ハッシュアルゴリズムに対し、それは可逆的であるという点である。それは、攻撃(例えば、サービス拒否攻撃)を阻止するための新しいキーの挿入を許可すると同時に、所望の特性(例えば、持続的および/または一貫性のあるハッシュ)を提供する負荷分散のためのキー設計に寄与し得ることが理解されるであろう。ハッシュアルゴリズムとして、暗号化の指定された反復数のみを実行することの別の予期しない利点は、複数の異なるキーセットが各ラウンドまたはラウンド反復の範囲に対して使用されてよいことであり、それにより標準的なサブキースケジュールを使用することでは不可能な暗号結果をもたらす。
図17は、セキュア暗号ハッシュラウンド機能を提供する処理1701の別の実施形態のためのフロー図を示す。処理1701の処理ブロック1710において、セキュア暗号ハッシュのための命令がデコードされ、そこにおいて、当該命令のいくつかの実施形態は、少なくともソースデータ、および1または複数のキーオペランドを指定してよい。処理ブロック1720において、転置されたソースデータを生成すべく、初期転置がソースデータに対し実行される。処理ブロック1730において、当該命令に応答して、セキュア暗号ハッシュアルゴリズムのラウンド反復が転置されたソースデータに対し、当該命令によって指定されたラウンド数に従い、1または複数のキーオペランドを使用して実行される。いくつかの実施形態において、1回のラウンド反復または複数の反復において使用される特定のキーまたは複数のキーは、命令によって指定される1または複数のラウンド数に依存してよい。セキュア暗号ハッシュのいくつかの実施形態は同一の命令に応答して、1回より多いラウンド反復を実行するが、通常、ラウンド反復の総数より少ない回数(例えば、16未満)がセキュア暗号ハッシュに要求されてよい。処理ブロック1740において、当該命令のための指定されたラウンド反復数が終了したか否かが判断される。終了していない場合、処理は処理ブロック1730における開始を繰り返す。あるいは、処理ブロック1750において、逆初期転置が暗号化されたデータに対し、実行される。次に、処理ブロック1760において、命令によって指定されるフォーマットに従い、命令の結果がデスティネーションに格納され、例えば、命令によって指定されるフォーマットは、最終のラウンド反復または中間のラウンド反復のためのものであってよく、デスティネーションは命令によってレジスタデスティネーションオペランドまたはメモリデスティネーションオペランドとして指定されてよい。
本明細書に開示される複数のメカニズムの複数の実施形態は、ハードウェア、ソフトウェア、ファームウェアまたはそのような複数の実装アプローチの組み合わせで実装されてよい。本発明の複数の実施形態は、少なくとも1つのプロセッサ、ストレージシステム(揮発性および不揮発性メモリおよび/または複数のストレージ要素を含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを備える、複数のプログラム可能なシステム上で実行される複数のコンピュータプログラムまたはプログラムコードとして実装されてよい。
本明細書に記載の複数の関数を実行し、出力情報を生成すべく、プログラムコードが複数の入力命令に適用されてよい。当該出力情報は既知の方法で、1または複数の出力デバイスに適用されてよい。本願の複数の目的において、処理システムとは例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロオペレーションロセッサ等のプロセッサを有する任意のシステムを含む。
プログラムコードは、処理システムと通信を行う、高水準の手順型またはオブジェクト指向型のプログラミング言語で実装されてよい。プログラムコードはまた、必要に応じて、アセンブリまたは機械言語で実装されてよい。実際に、本明細書に記載の複数のメカニズムは、いかなる特定のプログラミング言語にも範囲限定はされない。いかなる場合も、言語はコンパイラ型言語またはインタープリタ型言語であってよい。
少なくとも一実施形態の1または複数の態様は、プロセッサ内の様々なロジックを表現する機械可読媒体上に格納された複数の代表的命令によって実装されてよく、ロジックは、機械により読み取られると、機械に、本明細書に記載の複数の技術を実行させるロジックを作成させる。複数の「IPコア」として知られるそのような複数の表現命令が有形の機械可読媒体上に格納されてよく、様々な顧客または製造施設に供給され、実際にロジックまたはプロセッサを作成する複数の製造機械にロードされてよい。
そのような機械可読ストレージ媒体は限定はされないが、機械またはデバイスによって製造または形成される複数の物品の非一時的かつ有形な複数の構成を含んでよい。そのようなものとして、複数のハードディスク、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD‐ROM)、CD−RW、および複数の光磁気ディスクを含む任意の他のタイプのディスク、複数のリードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等の複数のランダムアクセスメモリ(RAM)、複数のプログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気カード若しくは光カード等の半導体デバイス、あるいは複数の電子的命令を格納するのに好適な任意の他のタイプの媒体といったストレージ媒体がある。
従って、本発明の複数の実施形態はまた、複数の命令を含む、または本明細書に記載の複数の構造、回路、装置、プロセッサおよび/またはシステムの特徴を定義するハードウェア記述言語(HDL)などの設計データを含む非一時的かつ有形の機械可読媒体を含む。そのような複数の実施形態はまた、複数のプログラム製品として称されてよい。
いくつかの場合において、ソース命令セットからターゲット命令セットへ命令を変換すべく、命令コンバータが使用されてよい。例えば、命令コンバータは、命令をコアによって処理される1または複数の他の命令に、トランスレート(例えば、スタティックバイナリトランスレーション、ダイナミックコンパイルを含むダイナミックバイナリトランスレーションを使用して)、モーフィング、エミュレーション、または変換してよい。命令コンバータはソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせとして実装されてよい。命令コンバータはプロセッサ上、プロセッサの外部、または部分的にプロセッサ上および部分的にプロセッサ外部にあってよい。
したがって、少なくとも一実施形態に従う1または複数の命令を実行するための複数の技術が開示された。複数の特定の例示的な実施形態が、複数の添付図面で説明および図示されたが、複数のそのような実施形態は単に例示であり、広範な発明を限定するものではなく、当業者であれば、本開示を参照することにより様々な他の変更に想到し得ることから、本発明は、図示および説明された詳細な複数の構造および構成に限定されるものではないことが理解されよう。成長が迅速で更なる進歩が容易に予測できないこのような技術領域においては、開示された複数の実施形態は、本開示の複数の原理または添付の特許請求の範囲から逸脱することなく、技術の進歩を可能にすることによる容易化に伴い、構成および詳細に対し簡単に変形を加えることが可能であり得る。

Claims (28)

  1. Feistel暗号アルゴリズムを使用してセキュア暗号ハッシュアルゴリズムを実行するための第1の命令をデコードするデコードステージと、
    1または複数のハードウェア実行ユニットと、を備えるプロセッサであって、
    前記第1の命令は前記Feistel暗号アルゴリズムに関連するラウンド数の範囲、ソースデータ、および1または複数のキーオペランドを指定し、
    前記1または複数のハードウェア実行ユニットはデコードされた前記第1の命令に応答して、
    前記ソースデータに対して初期転置を実行して、前記ソースデータから転置データを生成し、
    前記置データに対し、前記1または複数のキーオペランドを使用して、前記セキュア暗号ハッシュアルゴリズムの1または複数のラウンドの反復を実行して、暗号化データを生成し、
    前記暗号化データに対して逆初期転置を実行し、
    前記第1の命令の結果をデスティネーションレジスタ内に格納し、
    前記1または複数のラウンドの反復は、前記第1の命令により指定される前記ラウンド数の範囲に従って16未満であり、
    前記第1の命令は、シングルインストラクションマルチプルデータデスティネーションレジスタオペランド(SIMDデスティネーションレジスタオペランド)を用いて前記デスティネーションレジスタを指定する、プロセッサ。
  2. 前記第1の命令は、トリプルデータ暗号化標準(TDES)アルゴリズムを使用して、セキュア暗号ハッシュアルゴリズムの単一ラウンドの反復を実行するためのものである、請求項1に記載のプロセッサ。
  3. 前記1または複数のキーオペランドは、1または複数の48ビットキーを指定する、請求項1または2に記載のプロセッサ。
  4. 前記1または複数のキーオペランドは、1または複数の56ビットキーを指定する、請求項1または2に記載のプロセッサ。
  5. 前記1または複数のキーオペランドは、2つのトリプルデータ暗号化標準(TDES)、モード2キーを指定する、請求項1または2に記載のプロセッサ。
  6. 前記セキュア暗号ハッシュアルゴリズムの前記1または複数のラウンドの反復は、攻撃を阻止するための1または複数の予め定められたキーを使用する1または複数の復号化ラウンドの反復を含む、請求項1から5のいずれか一項に記載のプロセッサ。
  7. 前記1または複数のラウンドの反復は、攻撃を阻止するための1または複数の予め定められたキーを使用する、請求項1から5のいずれか一項に記載のプロセッサ。
  8. 前記第1の命令は、64ビットのデスティネーションオペランドを用いて前記デスティネーションレジスタを指定する、請求項1から7のいずれか一項に記載のプロセッサ。
  9. 前記第1の命令は、32ビットのデスティネーションレジスタのペアとして前記デスティネーションレジスタを指定する、請求項1から7のいずれか一項に記載のプロセッサ。
  10. 前記SIMDデスティネーションレジスタオペランドは、ソースレジスタおよび前記デスティネーションレジスタを指定する、請求項1から9のいずれか一項に記載のプロセッサ。
  11. Feistel暗号アルゴリズムを使用してセキュア暗号ハッシュアルゴリズムを実行するための第1の命令をデコーディングする段階と、
    ースデータに対して初期転置を実行して、前記ソースデータから転置データを生成する段階と、
    前記第1の命令に応答して、前記置データに対し、前記1または複数のキーオペランドを使用して、前記セキュア暗号ハッシュアルゴリズムの1または複数のラウンドの反復を実行して、暗号化されたデータを生成する段階と、
    前記第1の命令に応答して、暗号化された前記データに対して逆初期転置を実行する段階と、
    前記第1の命令の結果を前記第1の命令によって指定されるフォーマットに従い、デスティネーションレジスタ内に格納する段階と、を備える方法であって、
    前記第1の命令は前記Feistel暗号アルゴリズムのラウンド数の範囲、前記ソースデータ、および前記1または複数のキーオペランドを指定し、
    前記1または複数のラウンドの反復は、前記第1の命令により指定される前記ラウンド数の範囲に従って16未満であり、
    前記第1の命令は、シングルインストラクションマルチプルデータデスティネーションレジスタオペランド(SIMDデスティネーションレジスタオペランド)を用いて前記デスティネーションレジスタを指定する、方法。
  12. 前記セキュア暗号ハッシュアルゴリズムの前記1または複数のラウンドの反復は、攻撃を阻止するための1または複数の予め定められたキーを使用する1または複数の復号化ラウンドの反復を含む、請求項11に記載の方法。
  13. 攻撃を阻止するための1または複数の予め定められたキーを使用する1または複数の復号化ラウンドの反復を実行する段階を更に備える、請求項11に記載の方法。
  14. 攻撃を阻止するための予め定められたキーのセットからランダムに選択する段階を更に備える、請求項13に記載の方法。
  15. 攻撃を阻止するための予め定められたキーの独自のセットから選択する段階を更に備える、請求項13に記載の方法。
  16. 前記第1の命令は、64ビットのデスティネーションオペランドを用いて前記デスティネーションレジスタを指定する、請求項11から15のいずれか一項に記載の方法。
  17. 前記第1の命令は、32ビットのデスティネーションレジスタのペアとして前記デスティネーションレジスタを指定する、請求項11から15のいずれか一項に記載の方法。
  18. 前記SIMDデスティネーションレジスタオペランドは、ソースレジスタおよび前記デスティネーションレジスタを指定する、請求項11に記載の方法。
  19. 前記セキュア暗号ハッシュアルゴリズムは、トリプルデータ暗号化標準(TDES)アルゴリズムを含む、請求項11から18のいずれか一項に記載の方法。
  20. 前記デスティネーションレジスタ内に格納された前記第1の命令の前記結果に対し、初期転置を実行して、前記第1の命令の転置された結果を生成する段階と、
    第2の命令に応答して、前記第1の命令の転置された前記結果に対し、第2の1または複数のキーオペランドを使用して、前記セキュア暗号ハッシュアルゴリズムの第2の1または複数のラウンドの反復を復号化モードで実行して、復号された暗号化データを生成する段階と、
    復号された前記暗号化データに対し、逆初期転置を実行する段階と、を更に備え、
    前記第2の1または複数のラウンドの反復は、前記第2の命令により指定されるように16未満である、請求項11に記載の方法。
  21. 前記デスティネーションレジスタ内に格納された前記第1の命令の前記結果に対し、初期転置を実行する段階と、
    第2の命令に応答して、前記デスティネーションレジスタ内に格納された前記第1の命令の結果に対し、第2の1または複数のキーオペランドを使用して、前記セキュア暗号ハッシュアルゴリズムの第2の1または複数のラウンドの反復を暗号化モードで実行して、暗号化された暗号化データを生成する段階と、
    暗号化された前記暗号化データに対し、逆初期転置を実行する段階と、を更に備え、
    前記第2の1または複数のラウンドの反復は、前記第2の命令により指定されるように16未満である、請求項11に記載の方法。
  22. Feistel暗号アルゴリズムを使用してセキュア暗号ハッシュアルゴリズムを実行するための第1の命令をデコードする段階と、
    前記第1の命令に応答して、ソースデータに対して初期転置を実行して、前記ソースデータから転置データを生成する段階と、
    前記第1の命令に応答して、前記置データに対し、1または複数のキーオペランドを使用して、前記セキュア暗号ハッシュアルゴリズムの1または複数のラウンドの反復を前記第1の命令によって指定されるラウンド数に従い実行して、暗号化データを生成する段階と、
    前記暗号化データに対して逆初期転置を実行する段階と、
    前記第1の命令の1または複数の結果を前記第1の命令によって指定されるフォーマットスケジュールに従い、デスティネーションレジスタ内に格納する段階と、を備える方法であって、
    前記第1の命令は前記Feistel暗号アルゴリズムのラウンド数の範囲、前記ソースデータ、および前記1または複数のキーオペランドを指定し、
    前記1または複数のラウンドの反復は、前記第1の命令により指定される前記ラウンド数の範囲に従って16未満であり、
    前記第1の命令は、シングルインストラクションマルチプルデータデスティネーションレジスタオペランド(SIMDデスティネーションレジスタオペランド)を用いて前記デスティネーションレジスタを指定する、方法。
  23. 前記デスティネーションレジスタ内に格納された前記第1の命令の最終結果に対し、初期転置を実行して、前記第1の命令の転置された最終結果を生成する段階と、
    第2の命令に応答して、前記第1の命令の転置された前記最終結果に対し、第2の1または複数のキーオペランドを使用して、前記Feistel暗号アルゴリズムの第2の1または複数のラウンドの反復を復号化モードで実行して、復号された暗号化データを生成する段階と、
    復号された前記暗号化データに対し、逆初期転置を実行する段階と、更に備え、
    前記第2の1または複数のラウンドの反復は、前記第2の命令が指定するように16未満である、請求項22に記載の方法。
  24. 攻撃を阻止するための予め定められたキーの独自のセットから前記第2の1または複数のキーオペランドを選択する段階を更に備える、請求項23に記載の方法。
  25. 処理リソースのセットにわたる複数の負荷分散リクエストのための複数のリソース割り当てを格納するためのメモリと、
    Feistel暗号アルゴリズムを使用してセキュア暗号ハッシュアルゴリズムを実行するための第1の命令をデコードするためのデコードステージおよび1または複数の実行ユニットを含むプロセッサと、を備えるコンピューティングシステムであって、
    前記第1の命令は、前記Feistel暗号アルゴリズムの予め定められたキーのセットからラウンド数の範囲、ソースデータ、および1または複数のキーオペランドを指定し、
    前記1または複数の実行ユニットは、デコードされた前記第1の命令に応答して、
    前記ソースデータに対して初期転置を実行して、前記ソースデータから転置データを生成し、
    前記置データに対し、前記1または複数のキーオペランドを使用して、前記セキュア暗号ハッシュアルゴリズムの1または複数のラウンドの反復を実行して、暗号化データを生成し、
    前記暗号化データに対し、逆初期転置を実行し、
    処理リソースの前記セットにわたる複数の負荷分散リクエストのためのリクエストから、リソース割り当てを生成する際に使用される前記第1の命令の結果をデスティネーションレジスタ内に格納し、
    前記1または複数のラウンドの反復は、前記第1の命令により指定される前記ラウンド数の範囲に従って16未満であり、
    前記第1の命令は、シングルインストラクションマルチプルデータデスティネーションレジスタオペランド(SIMDデスティネーションレジスタオペランド)を用いて前記デスティネーションレジスタを指定する、コンピューティングシステム。
  26. 前記第1の命令は、トリプルデータ暗号化標準(TDES)アルゴリズムを使用して、セキュア暗号ハッシュアルゴリズムの単一ラウンドの反復を実行するためのものである、請求項25に記載のコンピューティングシステム。
  27. 前記第1の命令は、64ビットのデスティネーションオペランドを用いて前記デスティネーションレジスタを指定する、請求項25または26に記載のコンピューティングシステム。
  28. 前記第1の命令は、32ビットのデスティネーションレジスタのペアとして前記デスティネーションレジスタを指定する、請求項25または26に記載のコンピューティングシステム。
JP2017192078A 2013-08-08 2017-09-29 セキュア暗号ハッシュラウンド機能を提供する命令およびロジック Expired - Fee Related JP6504679B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/962,933 2013-08-08
US13/962,933 US10038550B2 (en) 2013-08-08 2013-08-08 Instruction and logic to provide a secure cipher hash round functionality

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016533466A Division JP6220453B2 (ja) 2013-08-08 2014-08-08 セキュア暗号ハッシュラウンド機能を提供する命令およびロジック

Publications (2)

Publication Number Publication Date
JP2018013802A JP2018013802A (ja) 2018-01-25
JP6504679B2 true JP6504679B2 (ja) 2019-04-24

Family

ID=52448689

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016533466A Active JP6220453B2 (ja) 2013-08-08 2014-08-08 セキュア暗号ハッシュラウンド機能を提供する命令およびロジック
JP2017192078A Expired - Fee Related JP6504679B2 (ja) 2013-08-08 2017-09-29 セキュア暗号ハッシュラウンド機能を提供する命令およびロジック

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016533466A Active JP6220453B2 (ja) 2013-08-08 2014-08-08 セキュア暗号ハッシュラウンド機能を提供する命令およびロジック

Country Status (8)

Country Link
US (1) US10038550B2 (ja)
EP (1) EP3031167B1 (ja)
JP (2) JP6220453B2 (ja)
KR (1) KR101821066B1 (ja)
CN (1) CN105409158B (ja)
RU (1) RU2637463C2 (ja)
TW (2) TWI646818B (ja)
WO (1) WO2015021380A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
WO2015077378A1 (en) * 2013-11-19 2015-05-28 Sunrise Tech Group, Llc Block mining methods and apparatus
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) * 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
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
US10409827B2 (en) * 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic
US9960909B2 (en) * 2014-12-08 2018-05-01 Open-Silicon Inc. High speed and low power hashing system and method
EP3356931B1 (en) 2015-09-30 2021-06-23 Hewlett-Packard Development Company, L.P. Bios runtime verification using external device
CN105391546A (zh) * 2015-12-16 2016-03-09 南京航空航天大学 基于双伪随机变换和Feistel结构的轻量级分组密码技术VHF
US10049057B2 (en) * 2015-12-18 2018-08-14 Intel Corporation Instruction and logic for secure instruction execution pipeline
GB2547247B (en) * 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
CN105959099A (zh) * 2016-06-20 2016-09-21 浪潮电子信息产业股份有限公司 一种实现ssr密码加密的方法
US9680653B1 (en) * 2016-10-13 2017-06-13 International Business Machines Corporation Cipher message with authentication instruction
US10209959B2 (en) * 2016-11-03 2019-02-19 Samsung Electronics Co., Ltd. High radix 16 square root estimate
US10374793B2 (en) * 2016-12-09 2019-08-06 Intel Corporation Simon-based hashing for fuse validation
CN108462681B (zh) * 2017-02-22 2020-12-29 中国移动通信集团公司 一种异构网络的通信方法、设备及系统
CN109194461B (zh) * 2018-05-11 2022-02-22 吉林大学 基于双密钥流密码的单向链表顺序加密解密方法
EP3595256A1 (de) * 2018-07-13 2020-01-15 Siemens Aktiengesellschaft Vorrichtung und verfahren zum betreiben einer durch software gestalteten verarbeitungseinheit für ein gerät
US10540207B1 (en) * 2018-07-18 2020-01-21 International Business Machines Corporation Fast, low memory, consistent hash using an initial distribution
KR20200048701A (ko) 2018-10-30 2020-05-08 삼성전자주식회사 사용자 특화 음성 명령어를 공유하기 위한 전자 장치 및 그 제어 방법
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
EP4022593A1 (en) * 2019-08-30 2022-07-06 Telefonaktiebolaget LM Ericsson (publ) A round-free cryptographic hashing device for secure and low-latency communications
TWI705687B (zh) * 2019-09-09 2020-09-21 新唐科技股份有限公司 用於資料加解密的金鑰管理裝置及處理器晶片
TWI731407B (zh) 2019-09-09 2021-06-21 新唐科技股份有限公司 具有旁通通道的金鑰管理裝置及處理器晶片
IT201900025567A1 (it) * 2019-12-24 2021-06-24 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
US11763008B2 (en) 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US11520709B2 (en) 2020-01-15 2022-12-06 International Business Machines Corporation Memory based encryption using an encryption key based on a physical address
CN113742657A (zh) 2020-05-29 2021-12-03 台达电子工业股份有限公司 软件保护方法及其系统
CN112988235B (zh) * 2021-02-06 2022-06-14 华中科技大学 一种高效率第三代安全散列算法的硬件实现电路及方法

Family Cites Families (99)

* 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
JPH10340048A (ja) * 1997-06-06 1998-12-22 Hitachi Ltd ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
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
US6269163B1 (en) 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
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
US7254231B1 (en) * 1999-10-14 2007-08-07 Ati International Srl Encryption/decryption instruction set enhancement
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
KR100377172B1 (ko) * 2000-06-13 2003-03-26 주식회사 하이닉스반도체 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
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
JP2002108691A (ja) * 2000-09-29 2002-04-12 Mitsubishi Electric Corp 半導体記憶装置および半導体記憶装置の制御方法
DE10061998A1 (de) 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
US7299355B2 (en) 2001-01-12 2007-11-20 Broadcom Corporation Fast SHA1 implementation
US6829355B2 (en) 2001-03-05 2004-12-07 The United States Of America As Represented By The National Security Agency Device for and method of one-way cryptographic hashing
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
EP1495401B1 (en) 2002-04-18 2007-01-24 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7392384B2 (en) 2002-06-28 2008-06-24 Hewlett-Packard Development Company, L.P. Method and system for secure storage, transmission and control of cryptographic keys
JP2004109420A (ja) 2002-09-18 2004-04-08 Sony Corp 乱数生成装置及び乱数生成方法
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
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
US7545928B1 (en) 2003-12-08 2009-06-09 Advanced Micro Devices, Inc. Triple DES critical timing path improvement
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
US7496196B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
WO2006010384A1 (en) 2004-07-30 2006-02-02 Telefonaktiebolaget Lm Ericsson (Pub) Secure load balancing in a network
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
US7370050B2 (en) 2005-02-28 2008-05-06 Microsoft Corporation Discoverability and enumeration mechanisms in a hierarchically secure storage system
WO2006098015A1 (ja) 2005-03-16 2006-09-21 Mitsubishi Denki Kabushiki Kaisha データ変換装置及びデータ変換方法
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
US8392174B2 (en) * 2006-08-07 2013-03-05 International Characters, Inc. Method and apparatus for lexical analysis using parallel bit streams
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)
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US20100027781A1 (en) 2007-12-20 2010-02-04 Galbi Duane E Method and apparatus for enhancing performance of data encryption standard (des) encryption/decryption
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
US8788841B2 (en) 2008-10-23 2014-07-22 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems
US8194858B2 (en) * 2009-02-19 2012-06-05 Physical Optics Corporation Chaotic cipher system and method for secure communication
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
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
US8832464B2 (en) 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US9680637B2 (en) 2009-05-01 2017-06-13 Harris Corporation Secure hashing device using multiple different SHA variants and related methods
JP5423217B2 (ja) * 2009-08-04 2014-02-19 富士通株式会社 演算処理装置、情報処理装置、および演算処理装置の制御方法
US8356185B2 (en) 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US8417961B2 (en) 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
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
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
FR2963135B1 (fr) 2010-07-22 2013-02-08 Viaccess Sa Procede de protection d'un contenu
JP5367917B2 (ja) 2011-01-25 2013-12-11 三洋電機株式会社 車載器
CA2830779C (en) 2011-04-06 2017-03-07 Certicom Corp. Efficient implementation of hash algorithm on a processor
JP2012252281A (ja) 2011-06-06 2012-12-20 Canon Inc 演算処理装置およびその方法、並びに、情報処理装置
US8855302B2 (en) 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
EP2724269B1 (en) 2011-06-27 2020-02-19 Jethrodata Ltd. System, method and data structure for fast loading, storing and access to huge data sets in real time
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US8954754B2 (en) 2011-12-22 2015-02-10 Intel Corporation Method and apparatus to process SHA-1 secure hashing algorithm
EP3627764B1 (en) 2012-03-30 2021-07-28 Intel Corporation Method and apparatus to process sha-2 secure hashing algorithm
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
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions

Also Published As

Publication number Publication date
EP3031167B1 (en) 2019-02-06
EP3031167A1 (en) 2016-06-15
KR20160017080A (ko) 2016-02-15
RU2637463C2 (ru) 2017-12-04
TW201642619A (zh) 2016-12-01
TWI646818B (zh) 2019-01-01
EP3031167A4 (en) 2017-03-29
JP2018013802A (ja) 2018-01-25
CN105409158B (zh) 2019-07-02
TWI551104B (zh) 2016-09-21
US20150043729A1 (en) 2015-02-12
JP6220453B2 (ja) 2017-10-25
KR101821066B1 (ko) 2018-01-22
TW201519623A (zh) 2015-05-16
CN105409158A (zh) 2016-03-16
RU2016100274A (ru) 2017-07-14
US10038550B2 (en) 2018-07-31
WO2015021380A1 (en) 2015-02-12
JP2016527569A (ja) 2016-09-08

Similar Documents

Publication Publication Date Title
JP6504679B2 (ja) セキュア暗号ハッシュラウンド機能を提供する命令およびロジック
US11849035B2 (en) Instructions and logic to provide SIMD SM4 cryptographic block cipher
US10592245B2 (en) Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
US10148428B2 (en) Instruction and logic to provide SIMD secure hashing round slice functionality
KR102307105B1 (ko) Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직
KR102456395B1 (ko) Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181003

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: 20190226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190322

R150 Certificate of patent or registration of utility model

Ref document number: 6504679

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees