JP6088655B2 - 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法 - Google Patents

単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法 Download PDF

Info

Publication number
JP6088655B2
JP6088655B2 JP2015533050A JP2015533050A JP6088655B2 JP 6088655 B2 JP6088655 B2 JP 6088655B2 JP 2015533050 A JP2015533050 A JP 2015533050A JP 2015533050 A JP2015533050 A JP 2015533050A JP 6088655 B2 JP6088655 B2 JP 6088655B2
Authority
JP
Japan
Prior art keywords
xor
instruction
value
bits
rotation
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.)
Active
Application number
JP2015533050A
Other languages
English (en)
Other versions
JP2015535982A (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 JP2015535982A publication Critical patent/JP2015535982A/ja
Application granted granted Critical
Publication of JP6088655B2 publication Critical patent/JP6088655B2/ja
Active 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
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明の分野は、概して、コンピュータプロセッサアーキテクチャに関し、より詳細には、実行された場合に特定の結果をもたらす複数の命令に関する。
Blakeセキュアハッシュアルゴリズムは、新たなNIST SHA−3規格となる5つのアルゴリズムの1つである。BLAKEは、4つのハッシュ関数、BLAKE−224、BLAKE−256、BLAKE−384及びBLAKE−512からなるファミリーである。BLAKE−256及びBLAKE−224は、32ビットワードに基づき、BLAKE−512及びBLAKE−384は、64ビットワードに基づく。BLAKE−256は、32ビットワード、14ラウンド及び256ビット出力のBLAKEであり、BLAKE−512は、64ビットワード、16ラウンド及び512ビット出力のBLAKEである。
BLAKEの圧縮関数は、32ビットまたは64ビットワードのいずれかの4X4行列で表される状態に基づく。BLAKEのラウンドは、独立した列の複数の更新の実行と、それに続く、状態行列の複数の対角線要素の独立した複数の更新とから構成される。各列及び対角線の更新のために、2つのメッセージワード及び2つの予め定められた定数が、状態に入力される。
16ワードの状態v0からv15は、行列形式の中で以下のように表される。
|v0 v1 v2 v3|
|v4 v5 v6 v7|
|v8 v9 v10 v11|
|v12 v13 v14 v15|
BLAKEのラウンドは、v0からv15の状態行列の関数を用いた変形である。
G(a,b,c,d)は、最初に状態行列の複数の列G0(v0,v4,v8,v12)G1(v1,v5,v9,v13)G2(v2,v6,v10,v14)G3(v3,v7,v11,v15)を更新し、次に状態行列の複数の対角線G4(v0,v5,v10,v15)G5(v1,v6,v11,v12)G6(v2,v7,v8,v13)G7(v3,v4,v9,v14)を更新する。これを、図1に示す。
G関数は、以下の、8つの従属的な複数の段階から構成される。
a=a+b+(m_r(2i)Λc_r(2i+1))
d=(dΛa)>>>16
c=c+d
b=(bΛc)>>>12
a=a+b+(m_r(2i+1)Λc_r(2i))
d=(dΛa)>>>8
c=c+d
b=(bΛc)>>>7
ここで、m_r(2i及びm_r(2i+1)は、各ラウンドで入力された16のメッセージワードの中の2つであり、c_r(2i)及びc_r(2i+1)は、16の定数の中の2つである。
列の更新関数G0、G1、G2、G3は、独立であり、並行に実行可能である。複数の列の更新が完了すると、対角線の更新関数G4、G5、G6、G7が実行される。G4、G5、G6、G7も、完全に独立であり、並行に実行可能である。
G関数は、図2に示すように、6回のXOR、6回の加算及び4回の回転を必要とする。8つのG関数から構成されるラウンドは、したがって、48回のXOR、48回の加算及び32回の回転、1ラウンドあたり合計128の演算を必要とする。さらに28回のXORが、初期化及び処理完結のために必要となる。例として、BLAKE−512は、16ラウンド、16*128=2048+28=2076の演算を必要とする。
Skeinアルゴリズムは、NIST SHA3セキュアハッシュ規格の残る5つの中の他のアルゴリズムである。Skeinは、MIX、Permute及びサブキー加算の、3つの主な関数からなる。MIX関数は、64ビットワードのペアに対し、XOR、回転及びcarry−propagate加算の3つの数学的演算のみを用いる。例示的なMIX関数を、図3に示す。
各MIX関数は、結果の中の第1の64ビットを生成する2つの64ビット入力、及び第2の入力を回転させたバージョンを加算した結果のXORを加算することにより、結果の中の第2の64ビットを生成する。MIX関数は、128ビット幅であり、Skein−256では1ラウンドあたり2つのMIX関数、Skein−512では1ラウンドあたり4つのMIX関数、Skein−1024では1ラウンドあたり8つを必要とする。
Skeinアルゴリズムのラウンドは、256、512または1024ビットにわたる複数のMIX関数、その後、64ビットワードのPermuteである。第1のラウンド前と、4ラウンド毎にその終了後、サブキー加算を伴うMlX/Permuteの72ラウンドがある。Skein-256の4ラウンドの図4は、Skeinハッシュ関数ファミリー文書からのものである。
本発明は、例として示されるものであり、同様の参照符号が同様の要素を示す複数の添付の図面の図における限定ではない。
Blakeセキュアハッシュアルゴリズムの一部を示す。 Blakeセキュアハッシュアルゴリズムの一部を示す。 Skeinセキュアハッシュアルゴリズムの一部を示す。 Skeinセキュアハッシュアルゴリズムの一部を示す。 例示的なROTATEandXOR命令の例示的な動作の例を示す。 他の例示的なROTATEandXOR命令の例示的な動作の例を示す。 プロセッサにおけるROTATEandXOR命令の実行の異なる実施形態を示す。 プロセッサにおけるROTATEandXOR命令の実行の異なる実施形態を示す。 プロセッサにおけるROTATEandXOR命令の実行の異なる実施形態を示す。 ROTATEandXOR命令を処理するための方法の複数の実施形態を示す。 ROTATEandXOR命令を処理するための方法の複数の実施形態を示す。 ROTATEandXOR命令を処理するための方法の複数の実施形態を示す。 ROTATEandXOR命令のための疑似コードの実施形態を示す。 本発明の一実施形態に係るレジスタアーキテクチャ1000のブロック図である。 本発明の複数の実施形態に係る例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。 本発明の複数の実施形態に係るプロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。 より具体的な、例示的なインオーダコアアーキテクチャのブロック図を示し、ここで、コアは、いくつかの論理ブロックの1つである(チップにおいて、同じタイプ及び/または複数の異なるタイプの複数のコアを含む)。 より具体的な、例示的なインオーダコアアーキテクチャのブロック図を示し、ここで、コアは、いくつかの論理ブロックの1つである(チップにおいて、同じタイプ及び/または複数の異なるタイプの複数のコアを含む)。 本発明の複数の実施形態に係る1より多くのコアを有してもよく、集積メモリコントローラを有してもよく、集中画像表示を有してもよいプロセッサ1300のブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 本発明の複数の実施形態に係るソース命令セットの複数のバイナリ命令をターゲット命令セットの複数のバイナリ命令に変換するソフトウェア命令変換器の利用を対比させるブロック図である。
以下の説明では、数々の具体的な詳細が記載される。しかしながら、本発明の複数の実施形態は、これらの具体的な詳細がなくとも実施可能であることを理解されたい。他の例では、この説明の理解の妨げとならないよう、周知の回路、構造及び技術は、詳細には示さない。
本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」等の言及は、記載された実施形態が、特有の機能、構造または特性を含んでもよいが、あらゆる実施形態がその特有の機能、構造または特性を必ずしも含むとは限らないことを示す。さらに、そのような文言は、必ずしも同じ実施形態を指すとは限らない。さらに、ある実施形態に関して特有の機能、構造または特性が記載される場合、明示的に記載されているか否かに関わらず、他の実施形態に関してそのような機能、構造または特性に影響することは当業者の知識の範囲内であるとされる。
SHA1/2のような既存の複数の暗号ハッシュアルゴリズムも、回転及びXOR演算ならびにBlake及びSkeinハッシュアルゴリズムを用い、専用の回転及びXOR命令の利益を享受する。XOR及びRotate演算を組み合わせた整数命令によれば、G関数の演算回数が4回(16回から12回へ)減少し、すなわち、最大25%が節約される。複数の演算がこれらの複数のタイプのハッシュ関数の中で連続化されるものとして、XOR−回転演算がデータ処理のクリティカルパス上にあり、性能利得が増大可能となる。複数の整数IA命令を伴うSkein−512の4ラウンドの処理は、16の加算、16の回転、16のXOR及び12のサブキー加算(サブキーを確立するために4の加算、及び4ラウンド毎に状態を更新するために8の加算)、合計で60の命令を必要とする。回転及びXOR演算を組み合わせる命令により、合計が44に減少し、すなわち最大36%が節約される。
図5は、例示的なROTATEandXOR命令の例示的な演算の例を示す。この例では、8ビットのソースレジスタが2つ存在する(SRC1 501及びSRC2 503)。理解を容易化するために、これらの複数のレジスタの内容を、SRC1 501のxAB及びSRC2 503のxB0という16進値として示す。以下に詳述するように、本発明の複数の実施形態は、8ビットの複数のソースに限定されるものではなく、限定されるものではないが、8ビット、16ビット、32ビット、64ビット、128ビット等を含む任意のサイズのソースにより利用可能である。
この例では、2つのソース501、503は、XORロジック505を用いて、共に排他的論理和が演算される(XORされる)。XORの結果は、次に回転ロジック507により、位置設定数だけ回転される。例示された実施形態では、回転は、複数のビット位置の設定数の左回転であるが、しかしながら他の実施形態では、回転は、複数のビット位置の設定数の右回転であってもよい。回転のためのビット位置の数は、ROTATEandXOR命令の即値の中の多数のビットによって決定される。この例では、即値の最下位6ビットが、回転するビット数及びこれらのビット値が1であることを決定するために用いられる。XORからのx1B値自体は1ビットだけ左回転し、デスティネーション509に記憶されたx37という新たな値を与える。更に、いくつかの実施形態では、XORの複数のビットがシフトアウト(例えば、全ての0または1がシフトイン)する場合、回転は、設定値を与えるシフトである。この命令の実行は、特にBlakeセキュアハッシュアルゴリズムで有用である。
図6は、例示的なROTATEandXOR命令の演算の例示的な他の例を示す。この例は、回転があらゆるXOR演算の前に行われる点で、前述の例と異なる。この例では、8ビットのソースレジスタ(SRC1 601及びSRC2 603)が2つ存在する。理解を容易化するために、これらの複数のレジスタの内容を、SRC1 601のxAB及びSRC2 603のxB0という16進値として示す。以下に詳述するように、本発明の複数の実施形態は、8ビットの複数のソースに限定されるものではなく、限定されるものではないが、8ビット、16ビット、32ビット、64ビット、128ビット等を含む任意のサイズのソースにより利用可能である。
この例では、第1のソース601は、回転ロジック605によって命令の即値から決定される複数のビット位置の設定数だけ左回転する。前述の例と同様に、他の実施形態では、回転は、複数のビット位置の設定数だけの右回転であってもよい。この例では、即値の最下位6ビットが、回転するビット数及びこれらのビット値が1であることを決定するために用いられる。第1のソース601からのxAB値自体は、1ビットだけ左回転し、x57という新たな値を与える。更に、いくつかの実施形態では、XORの複数のビットがシフトアウトする(例えば、全ての0または1がシフトイン)する場合、回転は、設定値を与えるシフトである。
回転結果は、次にXORロジック607を用いて、第2のソース603からのデータによりXORされる。従って、x57は、xB0によりXORされてxE7という結果を与え、デスティネーション609に記憶される。この命令の実行は、Skeinハッシュアルゴリズムの一部として特に有用である。
[例示的なフォーマット]
この命令の例示的なフォーマットは、「ROTATEandXOR DEST、SRC1、SRC2、IMM」であり、ここで、オペランドDESTは(8ビット、16ビット、32ビット、64ビット等のレジスタのような)デスティネーションレジスタまたはメモリ位置であり、SRC1及びSRC2は、複数のレジスタ、複数のメモリ位置またはデスティネーションと同じサイズの両方の組み合わせのいずれかであり得る複数のソースである。IMMは、命令の即値であり、任意の数のビットであってもよいが、しかしながら一実施形態では、IMMは、8ビットの値である。ROTATEandXORは、命令のオペコードである。
[実行の例示的な複数の方法]
図7A−Cは、プロセッサにおけるROTATEandXOR命令の実行のいくつかの異なる実施形態を示す。
図7Aでは、2つのソースオペランド(複数のレジスタ、複数のメモリ位置または両方)、デスティネーションオペランド(レジスタまたはメモリ位置のいずれか)、オペコード及び即値を有するROTATEandXOR命令は、701でフェッチされる。
ROTATEandXOR命令は、703で復号ロジックによって復号化される。命令のフォーマットに応じて、書き込み及び取得を行う複数のレジスタ、アクセスするメモリアドレス等のような様々なデータが、この段階で解釈されてもよい。
複数のソースオペランドの値は、705で取得/読み出しが行われる。例えば、複数のソースレジスタが、読み出される。いずれかのソースオペランドがメモリオペランドである場合、そのオペランドと関連づけられたデータが、取得される。
ROTATEandXOR命令(または、複数のマイクロオペレーションのような命令を備える複数の演算)は、ROTATEandXOR命令を実行することにより2つのモードの中の1つを実行する707の1または複数の機能ユニットのような複数の実行リソースによって実行され、ここで、2つのモードは、第1及び第2のソースオペランドの値をXORすることによってXORされた値を生成し、次に(図5に示したような)XORされた値を回転させる第1のモード、または第1のソースオペランドの値を回転させ、次に、(図6に示したような)第2のオペランドの値によって回転された値をXORする第2のモードのいずれかである。上述したように、回転は、実装に応じて、左または右のいずれであってもよい。
回転のためのビット位置の数は、即値の1または複数の値によって決定される。いくつかの実施形態では、即値の下位6ビットは、この決定のために用いられる。これらの実施形態では、これらのビットの10進値は、回転のためのビット位置の数である。
更に、用いるモードの決定は、即値の1または複数のビットによって設定される。いくつかの実施形態では、即値の最上位ビットは、この目的のために用いられる。例えば、値が1の場合は第1のモードが選択され、値が0の場合は第2のモードが選択される。勿論、逆の規約を用いることは可能である。
709では、(いずれかのモードの)XOR及び回転の結果が、デスティネーションオペランドに関連付けられた位置に記憶される。707および709は別々に例示したが、いくつかの実施形態では、これらが命令の実行の一部として、共に実行される。
図7Bでは、2つのソースオペランド(複数のレジスタ、複数のメモリ位置または両方)、デスティネーションオペランド(レジスタまたはメモリ位置のいずれか)、オペコード及び即値を有するROTATEandXOR命令は、711でフェッチされる。
ROTATEandXOR命令は、713で復号ロジックによって復号化される。命令のフォーマットに応じて、書き込み及び取得を行う複数のレジスタ、アクセスするメモリアドレス等のような様々なデータが、この段階で解釈されてもよい。
複数のソースオペランドの値は、715で取得/読み出される。例えば、複数のソースレジスタが、読み出される。いずれかのソースオペランドがメモリオペランドである場合は、そのオペランドと関連づけられたデータが、取得される。
ROTATEandXOR命令(または、複数のマイクロオペレーションのような命令を備える複数の演算)は、717で第1及び第2のソースオペランドの複数の値をXORすることによってXORされた値を生成し、次に(図5に示したような)XORされた値を回転させるROTATEandXOR命令を実行する、1または複数の機能ユニットのような複数の実行リソースによって実行される。上述したように、回転は、実装に応じて、左または右のいずれであってもよい。
回転のためのビット位置の数は、即値の1または複数の値によって決定される。いくつかの実施形態では、即値の下位6ビットは、この決定のために用いられる。これらの実施形態では、これらのビットの10進値は、回転のためのビット位置の数である。
719では、XOR及び回転の結果は、デスティネーションオペランドに関連付けられた位置に記憶される。717および719は別々に例示したが、いくつかの実施形態では、これらが命令の実行の一部として、共に実行される。
図7Cでは、2つのソースオペランド(複数のレジスタ、複数のメモリ位置または両方)、デスティネーションオペランド(レジスタまたはメモリ位置のいずれか)、オペコード及び即値を有するROTATEandXOR命令は、721でフェッチされる。
ROTATEandXOR命令は、723で復号ロジックによって復号化される。命令のフォーマットに応じて、書き込み及び取得を行う複数のレジスタ、アクセスするメモリアドレス等のような様々なデータが、この段階で解釈されてもよい。
複数のソースオペランドの値は、725で取得/読み出される。例えば、複数のソースレジスタが、読み出される。いずれかのソースオペランドがメモリオペランドである場合、そのオペランドと関連づけられたデータが、取得される。
ROTATEandXOR命令(または、複数のマイクロオペレーションのような命令を備える複数の演算)は、727でROTATEandXOR命令を実行することにより、第1のソースオペランドの値を回転させ、次に(図6に示したような)第2のオペランドの値によってその回転された値をXORする、1または複数の機能ユニットのような複数の実行リソースによって実行される。上述したように、回転は、実装に応じて、左または右のいずれであってもよい。
回転のためのビット位置の数は、即値の1または複数の値によって決定される。いくつかの実施形態では、即値の下位6ビットは、この決定のために用いられる。これらの実施形態では、これらのビットの10進値は、回転のためのビット位置の数である。
729では、XOR及び回転の結果が、デスティネーションオペランドに関連付けられた位置に記憶される。727および729は別々に例示したが、いくつかの実施形態では、これらが命令の実行の一部として、共に実行される。
図8A−Cは、ROTATEandXOR命令を処理するための方法の複数の実施形態を示す。これらの実施形態では、複数の演算であるフェッチ、復号化及び取得段階のうち、全てではないとしてもいくつかが先に実行されたと仮定するが、しかしながらこれらは、以下に示す詳細の妨げとならないよう図示されない。
図8Aでは、801において、ROTATEandXOR命令の即値が、XOR/回転または回転/XOR演算が実行されなければならないことを示すか否かの決定がなされる。いくつかの実施形態では、(詳細に前述したように)即値の最上位ビットが、モードを決定する。
XOR/回転モードが示される場合は、第1及び第2のソースからのデータがXORされることにより、803で中間結果を生成する。この中間結果は、805でXビット位置だけ回転される。ビット位置の数Xは、詳細に前述したように、即値の1または複数のビットによって決定される。例えば、最下位6ビットの10進値は、数Xを与えてもよい。
XOR及び回転演算の結果は、811でデスティネーションオペランドによって示されるデスティネーション位置に記憶される。
回転/XORモードが示される場合は、第1のソースのデータは、807においてXビット位置だけ回転される。ビット位置の数Xは、詳細に前述したように、即値の1または複数のビットによって決定される。例えば、最下位6ビットの10進値が、数Xを与えてもよい。
この回転された値は、809で第2のソースのデータによってXORされる。
XOR及び回転演算の結果は、811でデスティネーションオペランドによって示されるデスティネーション位置に記憶される。
図8Bでは、813において、第1及び第2のソースからのデータがXORされることにより、中間結果を生成する。この中間結果は、815においてXビット位置だけ回転される。ビット位置の数Xは、詳細に前述したように、即値の1または複数のビットによって決定される。例えば、最下位6ビットの10進値が、数Xを与えてもよい。
XOR及び回転演算の結果は、816でデスティネーションオペランドによって示されるデスティネーション位置に記憶される。
図8Cでは、第1のソースのデータは、817において、Xビット位置だけ回転される。ビット位置の数Xは、詳細に前述したように、即値の1または複数のビットによって決定される。例えば、最下位6ビットの10進値が、数Xを与えてもよい。
この回転された値は、819で第2のソースのデータによってXORされる。
XOR及び回転演算の結果は、820でデスティネーションオペランドによって示されるデスティネーション位置に記憶される。
図9は、ROTATEandXOR命令のための疑似コードの実施形態を示す。
[例示的なレジスタアーキテクチャ]
図10は、本発明の一実施形態に係るレジスタアーキテクチャ1000のブロック図である。例示された実施形態では、512ビット幅のベクトルレジスタ1010が32個存在し、これらの複数のレジスタは、zmm0−zmm31と称される。下位16の複数のzmmレジスタの下位256ビットは、複数のレジスタymm0−16上にオーバーレイされる。下位16の複数のzmmレジスタの下位128ビット(複数のymmレジスタの下位128ビット)は、複数のレジスタxmm0−15にオーバーレイされる。
[複数の汎用レジスタ1025]
例示された実施形態では、複数のメモリオペランドにアドレスするための既存の複数のx86アドレス指定モードと共に用いられる64ビットの汎用レジスタが、16個存在する。これらの複数のレジスタは、RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及びR8−R15という名で称される。
[MMXパック型整数フラットレジスタファイル1050がエイリアスされるスカラ浮動小数点スタックレジスタファイル(x87スタック)1045]
例示された実施形態では、x87スタックは、x87命令セット拡張を用いて32/64/80ビットの浮動小数点データに対する複数のスカラ浮動小数点演算を実行するために用いられる、8個の要素のスタックであり、複数のMMXレジスタは、64ビットパック型整数データに対する複数の演算を実行し、MMX及びXMMレジスタ間で実行されるいくつかの演算のための複数のオペランドを保持するために用いられる。
本発明の複数の代替的な実施形態は、より広い、またはより狭いレジスタを用いてもよい。
更に、本発明の複数の代替的な実施形態は、より多くの、より少ない、または異なるレジスタファイル及びレジスタを用いてもよい。
[例示的な複数のコアアーキテクチャ、複数のプロセッサ及び複数のコンピュータアーキテクチャ]
複数のプロセッサコアは、異なる態様で、異なる目的のために、かつ異なるプロセッサに実装されてもよい。例えば、そのような複数のコアの実装は、1)汎用演算用の汎用インオーダコア、2)汎用演算用の高性能汎用アウトオブオーダコア、3)主にグラフィック及び/または科学的(スループット)演算用の特殊用途向けコアを含んでもよい。複数の異なるプロセッサの実装は、1)汎用演算用の1または複数の汎用インオーダコア及び/または汎用演算用の1または複数の汎用アウトオブオーダコアを含むCPU、ならびに2)主にグラフィック及び/または科学的(スループット)用の1または複数の特殊用途コアを含むコプロセッサを含んでもよい。そのような複数の異なるプロセッサにより、異なる複数のコンピュータシステムアーキテクチャが構成され、コンピュータシステムアーキテクチャは、1)CPUからの個別のチップ上のコプロセッサ、2)CPUと同じパッケージ内の個別のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、場合により、集中画像表示及び/または科学的(スループット)ロジックのような特殊用途ロジック、または特殊用途コアと称される)、及び4)説明されたCPU(場合によりアプリケーションコアまたはアプリケーションプロセッサと称される)、上述のコプロセッサ及び追加機能を同じダイ上に含み得るチップ上のシステムを含んでもよい。
例示的な複数のコアアーキテクチャを次に説明した後、例示的な複数のプロセッサ及び複数のコンピュータアーキテクチャの説明を行う。
[例示的な複数のコアアーキテクチャ]
[インオーダ及びアウトオブオーダコアのブロック図]
図11Aは、本発明の複数の実施形態に係る例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図11Bは、本発明の複数の実施形態に係るプロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。図11A−Bの複数の実線のボックスは、インオーダパイプライン及びインオーダコアを示し、選択的に追加された複数の破線のボックスは、レジスタリネーミング、アウトオブオーダ発行/実行パイプライン及びコアを示す。インオーダ態様がアウトオブオーダ態様のサブセットであるとして、アウトオブオーダ態様について説明する。
図11Aでは、プロセッサパイプライン1100は、フェッチステージ1102、長さ復号ステージ1104、復号ステージ1106、配分ステージ1108、リネームステージ1110、スケジューリング(ディスパッチまたは発行としても知られる)ステージ1112、レジスタ読み出し/メモリ読み出しステージ1114、実行ステージ1116、ライトバック/メモリ書込みステージ1118、例外処理ステージ1122及びコミットステージ1124を含む。
図11Bは、実行エンジンユニット1150に結合されるフロントエンドユニット1130を含むプロセッサコア1190を示し、両方ともメモリユニット1170に結合される。コア1190は、縮小命令セットコンピュータ(RISC)コア、複合命令セットコンピュータ(CISC)コア、超長命令語(VLIW)コアもしくはハイブリッドまたは代替的なコアタイプであってもよい。さらに他のオプションとして、コア1190は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用演算画像処理ユニット(GPGPU)コア、グラフィックコアなどのような特殊用途コアであってもよい。
フロントエンドユニット1130は、命令キャッシュユニット1134に結合された分岐予測ユニット1132を含み、命令キャッシュユニット1134は、命令トランスレーションルックアサイドバッファ(TLB)1136に結合され、TLB1136は、命令フェッチユニット1138に結合され、命令フェッチユニット1138は、復号ユニット1140に結合される。復号ユニット1140(またはデコーダ)は、複数の命令を復号化し、出力として、1または複数のマイクロ演算、マイクロコードエントリポイント、マイクロ命令、他の命令もしくは元の複数の命令から復号化された、または他の方法で反映する、または導出された他の制御信号を生成してもよい。復号ユニット1140は、複数の様々な異なるメカニズムを用いて実装されてもよい。適した複数のメカニズムの例は、限定されるものではないが、ルックアップテーブル、ハードウェア実装、プログラム可能ロジックアレイ(PLA)、マイクロコードリードオンリメモリ(ROM)等を含む。一実施形態では、コア1190は、マイクロコードROMまたは(例えば、復号ユニット1140、さもなければフロントエンドユニット1130内で)特定の複数のマクロ命令に対するマイクロコードを記憶する他のメディアを含む。復号ユニット1140は、実行エンジンユニット1150内のリネーム/アロケータユニット1152に結合される。
実行エンジンユニット1150は、リタイアメントユニット1154及び1または複数のスケジューラユニット1156のセットに結合されたリネーム/アロケータユニット1152を含む。スケジューラユニット1156は、予約ステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表す。スケジューラユニット1156は、物理レジスタファイルユニット1158に結合される。物理レジスタファイルユニット1158のそれぞれは、1または複数の物理レジスタファイルを表し、異なる物理レジスタファイルが、スカラ整数、スカラ浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、次に実行されるべき命令のアドレスである命令ポインタ)などの、1または複数の異なるデータ型を記憶する。一実施形態では、物理レジスタファイルユニット1158は、ベクトルレジスタユニット及びスカラレジスタユニットを備える。これらのレジスタユニットは、複数のアーキテクチャベクトルレジスタ、複数のベクトルマスクレジスタ及び複数の汎用レジスタを提供してもよい。物理レジスタファイルユニット1158は、リタイアメントユニット1154と重複することにより、レジスタリネーミング及びアウトオブオーダ実行が実装され得る様々な複数の態様(例えば、リオーダバッファ及びリタイアメントレジスタファイルを用いて、フューチャファイル、ヒストリバッファ及びリタイアメントレジスタファイルを用いて、レジスタマップ及び複数のレジスタのプールを用いて、等)を示す。リタイアメントユニット1154及び物理レジスタファイルユニット1158は、実行クラスタ1160に結合される。実行クラスタ1160は、1または複数の実行ユニット1162のセット及び1または複数のメモリアクセスユニット1164のセットを含む。複数の実行ユニット1162は、複数の様々な型のデータ(例えば、スカラ浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して、様々な複数の演算(例えば、複数のシフト、加算、減算、乗算)を実行してもよい。いくつかの実施形態は、具体的な複数の機能または複数の機能の複数のセット専用の多数の実行ユニットを含んでもよく、複数の他の実施形態は、1つだけの実行ユニットまたは全ての機能を全てが実行する複数の実行ユニットを含んでもよい。スケジューラユニット1156、物理レジスタファイルユニット1158及び実行クラスタ1160は、場合によっては複数として示されるが、その理由は、特定の複数の実施形態は、特定の複数のデータ型/複数の演算(例えば、各々が自己のスケジューラユニット、物理レジスタファイルユニット及び/または実行クラスタを有するスカラ整数パイプライン、スカラ浮動小数点/パック型整数/パック型浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン及び/またはメモリアクセスパイプライン、及び、個別のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット1164を有する特定の複数の実施形態が実装される)に対して個別の複数のパイプラインを形成するからである。個別の複数のパイプラインが用いられる場合、これらのパイプラインのうちの1または複数がアウトオブオーダ発行/実行であり、残りがインオーダであってもよいことも理解されたい。
メモリアクセスユニット1164のセットは、データTLBユニット1172を含むメモリユニット1170に結合され、データTLBユニット1172は、データキャッシュユニット1174に結合され、データキャッシュユニット1174は、二次(L2)キャッシュユニット1176に結合される。例示的な一実施形態では、メモリアクセスユニット1164は、読み込みユニット、記憶アドレスユニット及び記憶データユニットを含んでもよく、これらのそれぞれは、メモリユニット1170内のデータTLBユニット1172に結合される。命令キャッシュユニット1134は、メモリユニット1170内の二次(L2)キャッシュユニット1176にさらに結合される。L2キャッシュユニット1176は、1または複数の他のレベルのキャッシュ、及び最終的にはメインメモリに結合される。
例として、例示的なレジスタリネーミング、アウトオブオーダ発行/実行コアアーキテクチャは、パイプライン1100を以下のとおり実装してもよい。1)命令フェッチ1138が、フェッチステージ1102及び長さ復号ステージ1104を実行し、2)復号ユニット1140が、復号ステージ1106を実行し、3)リネーム/アロケータユニット1152が、配分ステージ1108及びリネームステージ1110を実行し、4)スケジューラユニット1156が、スケジューリングステージ1112を実行し、5)物理レジスタファイルユニット1158及びメモリユニット1170が、レジスタ読み出し/メモリ読み出しステージ1114を実行し、実行クラスタ1160が、実行ステージ1116を実行し、6)メモリユニット1170及び物理レジスタファイルユニット1158が、ライトバック/メモリ書込みステージ1118を実行し、7)様々な複数のユニットが、例外処理ステージ1122に関与してもよく、かつ8)リタイアメントユニット1154及び物理レジスタファイルユニット1158が、コミットステージ1124を実行する。
コア1190は、本明細書に記載された命令を含む1または複数の命令セット(例えば、x86命令セット(複数のより新しいバージョンに追加されたいくつかの拡張を有する)、カリフォルニア州サニーベールのMIPSテクノロジーズのMIPS命令セット、カリフォルニア州サニーベールのARMホールディングスのARM命令セット(NEONなどの複数の選択的なさらなる拡張を有する))をサポートしてもよい。一実施形態では、コア1190は、パックデータ命令セット拡張(例えば、AVX1、AVX2及び/または先述したジェネリックなベクトル向け命令フォーマットのいくつかの形式(U=0及び/またはU=1))をサポートするロジックを含むことによって、多くのマルチメディアアプリケーションによって用いられる複数の演算が、パックデータを用いて実行される。
理解するべきことは、コアは、マルチスレッディング(複数の演算または複数のスレッドの2またはそれより多くの並列セットを実行すること)をサポートしてもよく、時分割マルチスレッディング、同時マルチスレッディング(単一の物理的コアが複数のスレッドのそれぞれに対して論理的コアを提供することにより、物理的コアが同時マルチスレッディングを実行すること)またはこれらの組み合わせ(例えば、時分割フェッチ及び復号化、その後、インテル(登録商標)ハイパースレッディング・テクノロジーなどでの同時マルチスレッディング)を含む様々な態様で、マルチスレッディングを実行してもよい。
レジスタリネーミングについて、アウトオブオーダ実行との関連で説明しているが、理解するべきことは、インオーダアーキテクチャにおいて、レジスタリネーミングが用いられてもよい。プロセッサの例示された実施形態は、個別の命令キャッシュユニット1134及びデータキャッシュユニット1174と共有のL2キャッシュユニット1176とをさらに含むが、代替的な複数の実施形態は、例えば、一次(L1)内部キャッシュまたは複数のレベルの内部キャッシュのような、複数の命令及びデータの両方のための単一の内部キャッシュを有してもよい。いくつかの実施形態では、システムは、内部キャッシュとコア及び/またはプロセッサの外部にある外部キャッシュとの組み合わせを含んでもよい。代替的に、全てのキャッシュは、コア及び/またはプロセッサの外部にあってもよい。
[具体的な、例示的なインオーダコアアーキテクチャ]
図12A−Bは、より具体的な、例示的なインオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかの論理ブロック(同じ型及び/または異なる型の他の複数のコアを含む)の中の1つであってもよい。複数のロジックブロックは、用途に応じて、高帯域幅相互接続ネットワーク(例えば、リングネットワーク)を介して、いくつかの固定機能ロジック、メモリI/Oインターフェース及び他の必要なI/Oロジックと通信を行う。
図12Aは、本発明の複数の実施形態に係る単一のプロセッサコアのブロック図であり、オンダイの相互接続ネットワーク1202との接続及び二次(L2)キャッシュローカルサブセット1204と共に示される。一実施形態では、命令デコーダ1200は、パックデータ命令セット拡張を有するx86命令セットをサポートする。L1キャッシュ1206によれば、スカラ及びベクトルユニットに対して、キャッシュメモリへの低レイテンシアクセスが可能である。一実施形態では(設計の単純化のために)、スカラユニット1208及びベクトルユニット1210は、個別のレジスタセット(それぞれ、複数のスカラレジスタ1212及び複数のベクトルレジスタ1214)を用い、これらの間で転送されるデータは、一次(L1)キャッシュ1206のメモリに書き込まれてから再読み出しされるが、本発明の代替的な複数の実施形態は、異なるアプローチ(例えば、単一のレジスタセットを用いる、または書き込み及び再読み出しを行うことなく、2つのレジスタファイル間でデータを転送させる通信パスを含む)を用いてもよい。
L2キャッシュローカルサブセット1204は、プロセッサコアあたり1つの個別のローカルサブセットに分割されるグローバルL2キャッシュの一部である。各プロセッサコアは、自己のL2キャッシュローカルサブセット1204に対するダイレクトアクセスパスを有する。プロセッサコアに読み出されたデータは、自己のL2キャッシュサブセット1204に記憶され、迅速かつ、自己の複数のローカルL2キャッシュサブセットにアクセスする他の複数のプロセッサコアと並行に、アクセスされることができる。プロセッサコアに書き込まれたデータは、自己のL2キャッシュサブセット1204に記憶され、必要な場合には、他の複数のサブセットからフラッシュされる。リングネットワークは、共有のデータに対するコヒーレンシを保証する。リングネットワークが双方向であることにより、複数のプロセッサコア、複数のL2キャッシュ及び他の複数のロジックブロックなどのエージェントは、チップ内で互いに通信を行うことができる。各リングデータパスは、1方向あたり1012ビット幅である。
図12Bは、本発明の複数の実施形態に係る図12Aのプロセッサコアの一部の拡大図である。図12Bは、L1キャッシュ1206の一部であるL1データキャッシュ1206Aと、併せて、ベクトルユニット1210及び複数のベクトルレジスタ1214に関するさらなる詳細とを含む。具体的には、ベクトルユニット1210は、整数、単精度浮動及び倍精度浮動命令のうちの1または複数を実行する16幅ベクトル処理ユニット(VPU)(16幅ALU1228を参照)である。VPUは、再構成ユニット1220による複数のレジスタ入力の再構成、数字変換ユニット1222A−Bによる数字変換、及び複製ユニット1224によるメモリ入力に対する複製をサポートする。
[集積メモリコントローラ及びグラフィックを有するプロセッサ]
図13は、本発明の複数の実施形態に係るプロセッサ1300のブロック図であり、プロセッサ1300は、1より多くのコアを有してもよく、集積メモリコントローラを有してもよく、集中画像表示を有してもよい。図13の複数の実線のボックスは、単一のコア1302A、システムエージェント1310、1または複数のバスコントローラユニット1316のセットを有するプロセッサ1300を示し、選択的に追加された複数の破線のボックスは、複数のコア1302A−Nを有する代替的なプロセッサ1300、システムエージェントユニット1310内の1または複数の集積メモリコントローラユニット1314のセット及び特殊用途ロジック1308を示す。
したがって、プロセッサ1300の異なる複数の実装は、1)集中画像表示及び/または科学的(スループット)ロジック(1または複数のコアを含んでもよい)である特殊用途ロジック1308を有するCPU、及び1または複数の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、この2つの組み合わせ)であるコア1302A−N、2)主にグラフィック及び/または科学的(スループット)用として意図された多数の特殊用途コアであるコア1302A−Nを有するコプロセッサ、及び3)多数の汎用インオーダコアであるコア1302A−Nを有するコプロセッサを含んでもよい。したがって、プロセッサ1300は、汎用プロセッサ、コプロセッサまたは、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU(汎用画像処理ユニット)、ハイスループット多集積コア(MIC)コプロセッサ(30またはそれより多くのコアを含む)、組込みプロセッサなどのような特殊用途プロセッサであってもよい。プロセッサは、1または複数のチップ上に実装されてもよい。プロセッサ1300は、例えば、BiCMOS、CMOSまたはNMOSなどの多数の処理技術のいずれかを用いて、1または複数の基板の一部であってもよく、及び/またはその上に実装されてもよい。
メモリ階層は、複数のコア、1または複数の共有キャッシュユニット1306またはそのセット、及び複数の集積メモリコントローラユニット1314のセットに結合される外部メモリ(不図示)内に、1または複数のレベルのキャッシュを含む。複数の共有キャッシュユニット1306のセットは、二次(L2)、三次(L3)、四次(L4)または他の複数のレベルのキャッシュなどの1または複数の中レベルキャッシュ、ラストレベルキャッシュ(LLC)及び/またはこれらの組み合わせを含んでもよい。一実施形態では、リングベースの相互接続ユニット1312が、集中画像表示ロジック1308、複数の共有キャッシュユニット1306のセット及びシステムエージェントユニット1310/集積メモリコントローラユニット1314を相互接続するが、代替的な複数の実施形態は、そのような複数のユニットを相互接続するための任意の数の周知技術を用いてもよい。一実施形態では、1または複数のキャッシュユニット1306と複数のコア1302A−Nとの間で、コヒーレンシが保持される。
いくつかの実施形態では、コア1302A−Nのうちの1または複数は、マルチスレッディングが可能である。システムエージェント1310は、コア1302A−Nの調整及び操作を行うこれらのコンポーネントを含む。システムエージェントユニット1310は、例えば、電力制御ユニット(PCU)及びディスプレイユニットを含んでもよい。PCUは、コア1302A−N及び集中画像表示ロジック1308の電力状態を調整するために必要なロジック及び複数のコンポーネントであってもよく、またはこれらを含んでもよい。ディスプレイユニットは、1または複数の外部接続ディスプレイを駆動するためのものである。
コア1302A−Nは、アーキテクチャ命令セットに関してホモジニアスまたはヘテロジニアスであってもよく、すなわち、コア1302A−Nのうちの2またはそれより多くは、同じ命令セットを実行可能であってもよいが、他は、その命令セットまたは異なる命令セットのサブセットのみを実行可能であってもよい。
[例示的なコンピュータアーキテクチャ]
図14−17は、例示的な複数のコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルド型PC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組込みプロセッサ、デジタルシグナルプロセッサ(DSP)、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス及び様々な他の電子デバイス用の当技術分野で公知の他の複数のシステム設計及び複数の構成も、適している。概して、本明細書で開示されるように、プロセッサ及び/または他の実行ロジックを組み込み可能な多様なシステムまたは電子デバイスが、概して適している。
ここで、図14を参照すると、本発明の一実施形態に係るシステム1400のブロック図が示される。システム1400は、コントローラハブ1420に結合される1または複数のプロセッサ1410、1415を含んでもよい。一実施形態では、コントローラハブ1420は、(個別のチップ上にあってもよい)グラフィックメモリコントローラハブ(GMCH)1490及び入出力ハブ(IOH)1450を含み、GMCH1490は、メモリ1440及びコプロセッサ1445が結合されるメモリ及び複数のグラフィクスコントローラを含み、IOH1450は、複数の入出力(I/O)デバイス1460をGMCH1490に結合する。代替的に、メモリ及び複数のグラフィクスコントローラの一方または両方は、プロセッサ内に集積され(本明細書に記載されたように)、メモリ1440及びコプロセッサ1445は、プロセッサ1410及び単一のチップ内でIOH1450を有するコントローラハブ1420に直接結合される。
追加的なプロセッサ1415の選択的な性質を、図14に複数の破線で示す。各プロセッサ1410、1415は、本明細書に記載された複数のプロセッサコアのうちの1または複数を含んでもよく、いくつかのバージョンのプロセッサ1300であってもよい。
メモリ1440は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、位相変化メモリ(PCM)またはこれら2つの組み合わせであってもよい。少なくとも1つの実施形態について、コントローラハブ1420は、フロントサイドバス(FSB)のようなマルチドロップバス、クイックパス相互接続(QPI)のようなポイントツーポイントインターフェースまたは同様の接続1495を介して、プロセッサ1410、1415と通信を行う。
一実施形態では、コプロセッサ1445は、例えば、ハイスループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、組込みプロセッサなどのような特殊用途プロセッサである。一実施形態では、コントローラハブ1420は、集中画像表示アクセラレータを含んでもよい。
物理的リソース1410、1415の間には、アーキテクチャ、マイクロアーキテクチャ、温度、電力消費特性等を含む様々な利益の基準に関して、数々の違いが存在しうる。
一実施形態では、プロセッサ1410は、一般的なタイプの複数のデータ処理動作を制御する複数の命令を実行する。複数の命令内に、複数のコプロセッサ命令が組み込まれていてもよい。プロセッサ1410は、これらの複数のコプロセッサ命令を、取り付けられたコプロセッサ1445によって実行されるべきタイプのものと認識する。従って、プロセッサ1410は、これらの複数のコプロセッサ命令(または複数のコプロセッサ命令を表す複数の制御信号)を、コプロセッサバスまたは他の相互接続上で、コプロセッサ1445に対して発行する。コプロセッサ1445は、受信された複数のコプロセッサ命令を受け付けて実行する。
ここで、図15を参照すると、本発明の実施形態に係る第1のより具体的な例示的なシステム1500のブロック図が示される。図15に示されるように、マルチプロセッサシステム1500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1550を介して結合される第1のプロセッサ1570及び第2のプロセッサ1580を含む。プロセッサ1570および1580のそれぞれは、いくつかのバージョンのプロセッサ1300であってもよい。本発明の一実施形態では、プロセッサ1570および1580は、それぞれプロセッサ1410および1415であり、コプロセッサ1538は、コプロセッサ1445である。他の実施形態では、プロセッサ1570および1580は、それぞれプロセッサ1410、コプロセッサ1445である。
プロセッサ1570および1580は、集積メモリコントローラ(IMC)ユニット1572および1582をそれぞれ含むものとして示される。プロセッサ1570は、自己のバスコントローラユニットの一部として、複数のポイントツーポイント(P−P)インターフェース1576および1578をさらに含み、同様に、第2のプロセッサ1580は、複数のP−Pインターフェース1586および1588を含む。複数のプロセッサ1570、1580は、複数のP−Pインターフェース回路1578、1588を用いたポイントツーポイント(P−P)インターフェース1550を介して、情報を交換してもよい。図15に示されるように、IMC1572および1582は、複数のプロセッサを個別のメモリ、すなわち、個別のプロセッサにローカルに取り付けられたメインメモリの一部となり得るメモリ1532及びメモリ1534に結合する。
複数のプロセッサ1570、1580の各々は、複数のポイントツーポイントインターフェース回路1576、1594、1586、1598を用いる個々のP−Pインターフェース1552、1554を介して、チップセット1590と情報を交換してもよい。チップセット1590は、高性能インターフェース1539を介して、コプロセッサ1538と任意選択的に情報を交換してもよい。一実施形態では、コプロセッサ1538は、例えば、ハイスループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、組込みプロセッサなどのような特殊用途プロセッサである。
共有キャッシュ(不図示)は、いずれかのプロセッサの内部に含まれ、または両方のプロセッサの外部にあってもよいが、プロセッサが低電力モードであっても、いずれかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに記憶され得るように、P−P相互接続を介して複数のプロセッサに接続される。
チップセット1590は、インターフェース1596を介して、第1のバス1516に結合されてもよい。一実施形態では、第1のバス1516は、ペリフェラルコンポーネントインターコネクト(PCI)バスもしくはPCI Expressバスまたは他の第3世代I/O相互接続バスなどのバスであってもよいが、本発明の範囲はこれに限定されない。
図15に示されるように、様々なI/Oデバイス1514が、第1のバス1516を第2のバス1520に結合するバスブリッジ1518と共に、第1のバス1516に結合されてもよい。一実施形態では、コプロセッサ、ハイスループットMICプロセッサ、GPGPUのアクセラレータ(例えば、グラフィックアクセラレータまたはデジタル信号処理(DSP)ユニットなど)、フィールドプログラマブルゲートアレイもしくは任意の他のプロセッサなどの1または複数の追加的なプロセッサ1515が、第1のバス1516に結合される。一実施形態では、第2のバス1520は、ローピンカウント(LPC)バスであってもよい。
例えば、キーボード及び/またはマウス1522、通信デバイス1527、及びディスクドライブ、または複数の命令/コード及びデータ1530を含みうる他の大容量ストレージデバイスなどの記憶ユニット1528を含む様々な複数のデバイスが、一実施形態では、第2のバス1520に結合されてもよい。
さらに、オーディオI/O1524が、第2のバス1520に結合されてもよい。なお、他の複数のアーキテクチャが、適用可能である。例えば、図15のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装してもよい。
ここで、図16を参照すると、本発明の実施形態に係る第2のより具体的な、例示的なシステム1600のブロック図が示される。図15及び16における同様の複数の要素には、同様の参照番号が付され、図15の複数の特定の態様は、図16の他の複数の態様を不明瞭にすることを防ぐために、図16では省略されている。
図16は、複数のプロセッサ1570、1580は、それぞれ集積メモリ及びI/O制御ロジック(「CL」)1572及び1582を含んでもよいことを示す。したがって、CL1572、1582は、複数の集積メモリコントローラユニットを含み、かつ、I/O制御ロジックを含む。図16は、メモリ1532、1534のみがCL1572、1582に結合されるのではなく、複数のI/Oデバイス1614も、複数の制御ロジック1572、1582に結合されることを示す。複数のレガシーI/Oデバイス1615は、チップセット1590に結合される。
ここで、図17を参照すると、本発明の実施形態に係るSoC1700のブロック図が示される。図13における同様の複数の要素には、同様の参照番号が付される。また、複数の破線のボックスは、より進化したSoC上のオプションの機能である。図17では、相互接続ユニット1702は、1または複数のコア202A―N及び共有キャッシュユニット1306のセットを含むアプリケーションプロセッサ1710、システムエージェントユニット1310、バスコントローラユニット1316、集積メモリコントローラユニット1314、集中画像表示ロジック、画像プロセッサ、オーディオプロセッサ及びビデオプロセッサを含み得る1または複数のコプロセッサ1720またはそのセット、スタティックランダムアクセスメモリ(SRAM)ユニット1730、ダイレクトメモリアクセス(DMA)ユニット1732及び1または複数の外部ディスプレイに結合するためのディスプレイユニット1740に結合される。一実施形態では、コプロセッサ1720は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、GPGPU、ハイスループットMICプロセッサ、組込みプロセッサなどのような特殊用途プロセッサを含む。
本明細書に開示される複数のメカニズムの複数の実施形態は、ハードウェア、ソフトウェア、ファームウェアまたはそのような複数の実装アプローチの組み合わせで実装されてもよい。本発明の複数の実施形態は、少なくとも1つのプロセッサ、ストレージシステム(揮発性及び不揮発性メモリ及び/または複数の記憶要素を含む)、少なくとも1つの入力デバイスおよび少なくとも1つの出力デバイスを備えるプログラム可能な複数のシステム上で実行する複数のコンピュータプログラムまたはプログラムコードとして実装されてもよい。
図15に示すコード1530などのプログラムコードは、本明細書に記載された複数の機能を実行し、出力情報を生成するべく、複数の入力命令に適用されてもよい。出力情報は、1または複数の出力デバイスに、公知の態様で適用されてもよい。この適用のために、処理システムは、例えば、デジタルシグナルプロセッサ(DSP)、マイクロコントローラ、特殊用途集積回路(ASIC)またはマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
プログラムコードは、処理システムと通信を行うべく、高水準の手順型またはオブジェクト指向プログラミング言語で実装されてもよい。プログラムコードは、必要に応じて、アセンブリ言語または機械言語でさらに実装されてもよい。実際には、本明細書に記載された複数のメカニズムは、その範囲において、任意の特定のプログラム言語に限定されるものではない。いずれの場合であっても、言語は、コンパイル言語またはインタプリタ型言語であってもよい。
少なくとも1つの実施形態のうち1または複数の態様は、機械可読媒体に記憶された、プロセッサ内の様々なロジックを表す複数の表現命令によって実装されてもよく、このような命令は、機械に読み出された場合に、本明細書に記載される複数の技術を実行するべく、機械にロジックを組み立てさせる。「IPコア」として知られるそのような複数の表現は、有形の機械可読媒体上に記憶され、様々な顧客または製造工場に供給されて、実際にロジックまたはプロセッサを作り出す製造機械に読み込まれてもよい。
そのような機械可読記憶媒体は、限定的ではないが、ハードディスク、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD−ROM)、書き換え可能コンパクトディスク(CD−RW)及び磁気光ディスクを含む任意の他のタイプのディスク、リードオンリメモリ(ROM)などの半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、消去可能プログラマブルROM(EEPROM)、位相変化メモリ(PCM)、磁気または光カードなどのランダムアクセスメモリ(RAM)、もしくは複数の電子的命令を記憶するために適した任意の他のタイプのメディアなどの記憶媒体を含む、機械またはデバイスによって製造または形成される複数の物品の非一時的かつ有形の構成を含んでもよい。
従って、本発明の複数の実施形態は、複数の命令を含む、または本明細書に記載される複数の構造、複数の回路、複数の装置、複数のプロセッサ及び/または複数のシステム機能を定義するハードウェア記述言語(HDL)などの設計データを含む非一時的かつ有形の機械可読媒体をさらに含む。そのような複数の実施形態は、プログラム製品と称されてもよい。
[エミュレート(バイナリ変換、コードモーフィング等を含む)]
場合によっては、命令変換部は、ソース命令セットからターゲット命令セットへと命令を変換するために用いられてもよい。例えば、命令変換部は、命令をコアによって処理されるべき1または複数の他の命令に、(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて)変換、モーフィング、エミュレートまたは他の方法で変換してもよい。命令変換部は、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組み合わせで実装されてもよい。命令変換部は、プロセッサ上にあってもよく、プロセッサ外にあってもよく、または一部がプロセッサ上かつ一部がプロセッサ外にあってもよい。
図18は、ソース命令セットの複数のバイナリ命令をターゲット命令セットの複数のバイナリ命令に変換する、本発明の複数の実施形態に係るソフトウェア命令変換器の利用を対比させるブロック図である。例示された実施形態では、命令変換部は、ソフトウェア命令変換器であるが、代替的に、命令変換部は、ソフトウェア、ファームウェア、ハードウェアまたはこれらの様々な複数の組み合わせで実装されてもよい。図18は、少なくとも1つのx86命令セットコア1816を有するプロセッサによってネイティブで実行され得るx86バイナリコード1806を生成するために、x86コンパイラ1804を用いてコンパイルされ得る高水準言語1802のプログラムを示す。少なくとも1つのx86命令セットコア1816を有するプロセッサは、少なくとも1つのx86命令セットコアを有するインテル社製プロセッサと実質的に同じ結果を出すべく、(1)インテル社製x86命令セットコアの命令セットの大部分、もしくは(2)複数のアプリケーションのオブジェクトコードバージョンまたは少なくとも1つのx86命令セットコアを有するインテル社製プロセッサ上で実行されることが想定された他のソフトウェアを互換可能に実行または他の方法で処理することにより、少なくとも1つのx86命令セットコアを有するインテル社製プロセッサと実質的に同じ複数の機能を実行可能な任意のプロセッサを表す。x86コンパイラ1804は、さらなるリンク処理の有無に関わらず、少なくとも1つのx86命令セットコアを有するプロセッサ1816上で実行可能なx86バイナリコード1806(例えば、オブジェクトコード)を生成するように動作可能なコンパイラを表す。同様に、図18は、少なくとも1つのx86命令セットコアを有さないプロセッサ1814(例えば、カリフォルニア州サニーベールのMIPSテクノロジーズ(MIPS Technologies)のMIPS命令セットを実行する、及び/またはカリフォルニア州サニーベールのARMホールディングス(ARM Holdings)のARM命令セットを実行する複数のコアを有するプロセッサ)によってネイティブで実行され得る、代替的な命令セットバイナリコード1810を生成するべく、代替的な命令セットコンパイラ1808を用いてコンパイルされ得る高水準言語1802のプログラムを示す。命令変換部1812は、x86バイナリコード1806を、x86命令セットコアを有さないプロセッサ1814によってネイティブで実行され得るコードに変換するために用いられる。この変換されたコードは、このような変換が可能な命令変換部の製造は難しいため、代替的な命令セットバイナリコード1810と同じとなる可能性は低いが、しかしながら変換されたコードは、全般的な演算を達成し、代替的な命令セットからの複数の命令により補完される。したがって、命令変換部1812は、エミュレート、シミュレーションまたは任意の他の処理を介して、プロセッサもしくはx86命令セットプロセッサまたはコアを有さない他の電子デバイスにx86バイナリコード1806を実行させるソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表す。

Claims (21)

  1. 単一のXOR及び回転命令または単一のXOR及びシフト命令に応じてXOR回転またはシフトとを実行するコンピュータプロセッサで実行する方法であって、前記XOR及び回転命令または前記XOR及びシフト命令は、第1及び第2のソースオペランド、デスティネーションオペランド、オペコード及び即値を示し、前記方法は、
    第1及び第2のモードの中の1つを実行するべく、単一の前記XOR及び回転命令または単一の前記XOR及びシフト命令を実行する段階と、
    前記第1または第2のモードのいずれかからの結果を、前記デスティネーションオペランドに関連付けられたデスティネーション位置に記憶する段階とを備え、
    前記第1のモードが実行されると、XORされた値を生成するべく、前記第1及び第2のソースオペランドの複数の値をXORし、次に、前記XORされた値をット位置の数Xだけ回転またはシフトさせ、前記第2のモードが実行されると、前記第1のソースオペランドの値をット位置の数Xだけ回転またはシフトさせ、前記第2のソースオペランドからの値で前記回転またはシフトされた値をXORする、方法。
  2. 前記ビット位置の数Xは、前記即値のうちの1または複数のビットにより示されるものである、請求項1に記載の方法。
  3. 前記即値のうちの1または複数のビットは、前記即値のうちの最下位6ビットである、請求項2に記載の方法。
  4. 前記回転またはシフトは、左回転または左シフトである、請求項1から3のいずれか1項に記載の方法。
  5. 前記XOR及び回転命令または前記XOR及びシフト命令は、Skeinハッシュアルゴリズムの一部である、請求項1から4のいずれか1項に記載の方法。
  6. 前記XOR及び回転命令または前記XOR及びシフト命令は、Blakeハッシュアルゴリズムの一部である、請求項1から4のいずれか1項に記載の方法。
  7. 前記第1及び第2のソースオペランドの各々は、レジスタと関連付けられ、複数の前記レジスタのサイズは、8ビット、16ビット、32ビットまたは64ビットの中の1つである、請求項1から6のいずれか1項に記載の方法。
  8. 前記第1及び第2のモードのいずれが前記即値のビット値に基づいて実行されるべきかを決定する段階をさらに備える、請求項1から7のいずれか1項に記載の方法。
  9. 令のフォーマット第1及び第2のソースオペランド、デスティネーションオペランド、即値及びオペコードを規定し、
    コンピュータに、
    XORと回転またはシフトとの単一の前記命令に応答して、第1及び第2のモードのうちの1つを実行させて、前記第1及び第2のモードのいずれかからの結果を、前記デスティネーションオペランドに関連付けられたデスティネーション位置に記憶させ
    前記第1のモードでは、実行により、前記第1及び第2のソースオペランドの複数の値をXORすることにより、XORされた値を生成し、次に、前記XORされた値をット位置の数Xだけ回転またはシフトさせ、
    前記第2のモードでは、実行により、前記第1のソースオペランドの値をット位置の数Xだけ回転またはシフトさせ、前記回転またはシフトされた値を前記第2のソースオペランドからの値でXORする、プログラム
  10. 前記ビット位置の数Xは、前記即値のうちの1または複数のビットにより示されるものである、請求項9に記載のプログラム
  11. 前記即値のうちの1または複数のビットは、前記即値のうちの最下位6ビットである、請求項10に記載のプログラム
  12. 前記回転またはシフトは、左回転または左シフトである、請求項9から11のいずれか1項に記載のプログラム
  13. 前記命令は、Skeinハッシュアルゴリズムの一部である、請求項9から12のいずれか1項に記載のプログラム
  14. 前記命令は、Blakeハッシュアルゴリズムの一部である、請求項9から12のいずれか1項に記載のプログラム
  15. 前記第1及び第2のソースオペランドの各々は、レジスタと関連付けられ、複数の前記レジスタのサイズは、8ビット、16ビット、32ビットまたは64ビットの中の1つである、請求項9から14のいずれか1項に記載のプログラム
  16. 前記コンピュータに、前記即値のビット値に基づいて、前記第1及び第2のモードのいずれが実行されるべきかを決定させる、請求項9から15のいずれか1項に記載のプログラム
  17. 第1及び第2のソースオペランド、デスティネーションオペランド、オペコード及び即値を示す単一のXOR及び回転命令または単一のXOR及びシフト命令を復号化するハードウェアデコーダと、
    第1及び第2のモードのうちの1つを実行し、前記第1または第2のモードのいずれかからの結果を、前記デスティネーションオペランドに関連付けられたデスティネーション位置に記憶する実行ロジックであって、前記第1のモードでは、実行により、XORされた値を生成するべく、前記第1及び第2のソースオペランドの複数の値をXORし、次に、前記XORされた値をット位置の数Xだけ回転またはシフトさせ、前記第2のモードでは、実行により、前記第1のソースオペランドの値をット位置の数Xによって回転またはシフトさせ、前記回転またはシフトされた値を前記第2のソースオペランドからの値でXORする実行ロジックとを備える、装置。
  18. 前記ビット位置の数Xは、前記即値のうちの1または複数のビットにより示されるものである、請求項17に記載の装置。
  19. 前記即値のうちの1または複数のビットは、前記即値のうちの最下位6ビットである、請求項18に記載の装置。
  20. 前記回転またはシフトは、左回転または左シフトである、請求項17から19のいずれか1項に記載の装置。
  21. 請求項9から16のいずれか1項に記載のプログラムを記憶したコンピュータ可読記録媒体。
JP2015533050A 2012-09-28 2013-06-21 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法 Active JP6088655B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/631,242 2012-09-28
US13/631,242 US9128698B2 (en) 2012-09-28 2012-09-28 Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
PCT/US2013/047185 WO2014051763A1 (en) 2012-09-28 2013-06-21 Systems, apparatuses, and methods for performing rotate and xor in response to a single instruction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017019125A Division JP2017134840A (ja) 2012-09-28 2017-02-03 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法

Publications (2)

Publication Number Publication Date
JP2015535982A JP2015535982A (ja) 2015-12-17
JP6088655B2 true JP6088655B2 (ja) 2017-03-01

Family

ID=50386390

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015533050A Active JP6088655B2 (ja) 2012-09-28 2013-06-21 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法
JP2017019125A Pending JP2017134840A (ja) 2012-09-28 2017-02-03 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017019125A Pending JP2017134840A (ja) 2012-09-28 2017-02-03 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法

Country Status (7)

Country Link
US (1) US9128698B2 (ja)
JP (2) JP6088655B2 (ja)
KR (2) KR101934760B1 (ja)
CN (2) CN108563465B (ja)
DE (1) DE112013003735B4 (ja)
GB (2) GB2520855B (ja)
WO (1) WO2014051763A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9100184B2 (en) 2011-12-22 2015-08-04 Intel Corporation Instructions processors, methods, and systems to process BLAKE secure hashing algorithm
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
US20160179523A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
CN108897522A (zh) * 2018-06-14 2018-11-27 北京比特大陆科技有限公司 数据处理方法、数据处理装置以及电子设备
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
CN110515591B (zh) * 2019-08-05 2023-04-11 湖南天河国云科技有限公司 基于区块链的随机数生成方法及装置
US12026516B1 (en) * 2022-12-22 2024-07-02 Intel Corporation Accelerating four-way parallel KECCAK execution on 256-bit vector processor

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04148372A (ja) * 1990-10-11 1992-05-21 Fujitsu Ltd ハッシュ値算出処理方式
US5386531A (en) * 1991-05-15 1995-01-31 International Business Machines Corporation Computer system accelerator for multi-word cross-boundary storage access
US6167419A (en) * 1997-04-01 2000-12-26 Matsushita Electric Industrial Co., Ltd. Multiplication method and multiplication circuit
JP3252954B2 (ja) * 1997-04-01 2002-02-04 松下電器産業株式会社 乗算方法および乗算回路
US5881274A (en) * 1997-07-25 1999-03-09 International Business Machines Corporation Method and apparatus for performing add and rotate as a single instruction within a processor
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US7370180B2 (en) * 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
WO2006040682A2 (en) * 2004-10-13 2006-04-20 Synaptic Laboratories Limited Process of and apparatus for encoding a digital input
US7945729B2 (en) * 2004-11-24 2011-05-17 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts
JP2007178966A (ja) * 2005-12-27 2007-07-12 Shuichi Kamizono 擬似乱数を生成するアルゴリズム
CN100470571C (zh) * 2006-08-23 2009-03-18 北京同方微电子有限公司 一种用于密码学运算的微处理器内核装置
US7895419B2 (en) * 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US8693681B2 (en) * 2008-12-10 2014-04-08 Texas Instruments Incorporated Kasumi cipher executable instructions and circuitry
EP2207090B1 (en) * 2009-01-09 2018-12-19 STMicroelectronics (Research & Development) Limited Apparatus comprising a plurality of arithmetic logic units
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US8504807B2 (en) * 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
US20120030451A1 (en) * 2010-07-28 2012-02-02 Broadcom Corporation Parallel and long adaptive instruction set architecture
US8539206B2 (en) * 2010-09-24 2013-09-17 Intel Corporation Method and apparatus for universal logical operations utilizing value indexing
CN102221991B (zh) * 2011-05-24 2014-04-09 华润半导体(深圳)有限公司 一种4位risc微控制器
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions

Also Published As

Publication number Publication date
JP2015535982A (ja) 2015-12-17
DE112013003735B4 (de) 2022-09-15
KR20150038407A (ko) 2015-04-08
GB2581103A (en) 2020-08-05
GB2520855B (en) 2020-07-01
DE112013003735T5 (de) 2015-08-27
WO2014051763A1 (en) 2014-04-03
GB2520855A (en) 2015-06-03
KR101787615B1 (ko) 2017-10-19
CN108563465B (zh) 2022-09-20
US20140095844A1 (en) 2014-04-03
JP2017134840A (ja) 2017-08-03
KR20170118250A (ko) 2017-10-24
CN108563465A (zh) 2018-09-21
KR101934760B1 (ko) 2019-01-04
US9128698B2 (en) 2015-09-08
CN104583980B (zh) 2018-05-29
CN104583980A (zh) 2015-04-29
GB201500864D0 (en) 2015-03-04
GB202007017D0 (en) 2020-06-24

Similar Documents

Publication Publication Date Title
JP6088655B2 (ja) 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法
US9934032B2 (en) Processors, methods, and systems to implement partial register accesses with masked full register accesses
JP6466388B2 (ja) 方法及び装置
US20200183688A1 (en) Packed data operation mask shift processors, methods, systems, and instructions
US10387149B2 (en) Apparatus and method to reverse and permute bits in a mask register
US9760371B2 (en) Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
US20130326192A1 (en) Broadcast operation on mask register
US9489196B2 (en) Multi-element instruction with different read and write masks
EP2889755A2 (en) Systems, apparatuses, and methods for expand and compress
US9207941B2 (en) Systems, apparatuses, and methods for reducing the number of short integer multiplications
EP2889756A1 (en) Systems, apparatuses, and methods for vector bit test
US9207942B2 (en) Systems, apparatuses,and methods for zeroing of bits in a data element
US20140068227A1 (en) Systems, apparatuses, and methods for extracting a writemask from a register

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160726

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170203

R150 Certificate of patent or registration of utility model

Ref document number: 6088655

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250