JP6807383B2 - 転送プレフィックス命令 - Google Patents

転送プレフィックス命令 Download PDF

Info

Publication number
JP6807383B2
JP6807383B2 JP2018517732A JP2018517732A JP6807383B2 JP 6807383 B2 JP6807383 B2 JP 6807383B2 JP 2018517732 A JP2018517732 A JP 2018517732A JP 2018517732 A JP2018517732 A JP 2018517732A JP 6807383 B2 JP6807383 B2 JP 6807383B2
Authority
JP
Japan
Prior art keywords
instruction
transfer
register
prefix
processing
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
JP2018517732A
Other languages
English (en)
Other versions
JP2018534671A (ja
Inventor
ロイ グリセンスウェイト、リチャード
ロイ グリセンスウェイト、リチャード
ジョン スティーブンス、ナイジェル
ジョン スティーブンス、ナイジェル
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
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 エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2018534671A publication Critical patent/JP2018534671A/ja
Application granted granted Critical
Publication of JP6807383B2 publication Critical patent/JP6807383B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本技術は、データ処理の分野に関する。
場合によっては、処理回路は、処理回路が実行するように設計された命令セットアーキテクチャの符号化された命令に直接等価ではない演算をハードウェアでサポートすることができる。例えば、命令セットアーキテクチャにおいて利用可能な限定された符号化空間は、所与の演算が、実行中のプログラムにおいて2つ以上の別個の命令を定義することを必要とする可能性があることを意味し得るが、処理装置は、処理回路によってサポートされる単一の統合命令に相当する2つ以上の命令のグループが存在することを検出することができ、もしそうであれば、統合命令を実行のために処理回路に供給することができる命令統合回路を有することができる。
しかし、統合可能な命令セットが存在するときを検出するためのこのような命令統合回路は、回路面積および電力消費の点で比較的費用がかかり得る。性能よりもエネルギー効率が重要となり得る多くのローエンドシステムでは、命令統合のオーバーヘッドが高すぎる可能性があるため、命令統合の利点はしばしばそのようなシステムでは利用できない。
少なくともいくつかの例は、
命令に応答してデータ処理を実行する処理回路と、
転送プレフィックス命令と、データストアからフェッチされる直後の命令とを統合して、処理回路によって処理される統合データ処理命令を生成する命令統合回路とを備える装置であって、
転送プレフィックス命令は、転送先レジスタと、転送先レジスタに少なくとも部分的にコピーされるべきデータ値を指定する転送元レジスタとを特定し、
上記転送プレフィックス命令を検出することに応答して、命令統合回路は、転送プレフィックス命令の転送先レジスタが、上記直後の命令によって指定される任意のレジスタと同じレジスタであるか否かとは無関係に、上記転送プレフィックス命令および上記直後の命令を統合するべきか否かを決定するように構成されている、装置を提供する。
少なくともいくつかの例は、
データ処理方法であって、
処理回路によって処理するための、データストアからフェッチされる命令の中から、転送先レジスタと、転送先レジスタに少なくとも部分的にコピーされるべきデータ値を指定する転送元レジスタとを特定する転送プレフィックス命令を検出するステップと、
処理回路によって処理されるべき統合データ処理命令を生成するために、転送プレフィックス命令を直後の命令と統合すべきか否かを決定するステップとを含み、
転送プレフィックス命令が検出されるとき、決定するステップは、転送プレフィックス命令の転送先レジスタが、上記直後の命令によって指定される任意のレジスタと同じレジスタであるか否かとは無関係に、上記転送プレフィックス命令および上記直後の命令を統合するべきか否かを決定することを含む、データ処理方法を提供する。
少なくともいくつかの例は、
命令に応答してデータ処理を実行するための手段と、
転送プレフィックス命令と、データストアからフェッチされる直後の命令とを統合して、処理回路によって処理される統合データ処理命令を生成するための手段とを備える装置であって、
転送プレフィックス命令は、転送先レジスタと、転送先レジスタに少なくとも部分的にコピーされるべきデータ値を指定する転送元レジスタとを特定し、
上記転送プレフィックス命令を検出することに応答して、統合するための手段は、転送プレフィックス命令の転送先レジスタが、上記直後の命令によって指定される任意のレジスタと同じレジスタであるか否かとは無関係に、上記転送プレフィックス命令および上記直後の命令を統合するべきか否かを決定するように構成されている、装置を提供する。
少なくともいくつかの例は、データ処理装置によって実行されると、上記の装置に対応する命令実行環境を提供する仮想マシンを提供するコンピュータ可読記憶媒体に格納されたコンピュータプログラムを提供することもできる。記憶媒体は、非一時的記憶媒体であってもよい。
本技術のさらなる態様、特徴および利点は、添付の図面と併せて読まれるべき以下の実施例の説明から明らかになるであろう。
命令統合回路を有するデータ処理装置の一例を概略的に示す図である。 転送プレフィックス命令を、直後の命令と統合することができることを命令統合回路にシグナリングするための転送プレフィックス命令の使用を示す図である。 非プレフィックス転送命令の使用を示す図である。 命令を統合させるか否かを決定する方法を示す図である。 3つの異なるタイプの転送プレフィックス命令と、その直後の命令との併用を示す図である。 例外または他の停止イベントを処理する2つの異なる方法のうちの1つを示す図である。 例外または他の停止イベントを処理する2つの異なる方法のうちの1つを示す図である。 仮想マシンの実施態様を示す図である。
本技術の具体例を以下に示す。本技術はこれらの例に限定されないことは理解されよう。
転送プレフィックス命令の転送先が直後の命令によって指定される任意のレジスタと同じであるか否かをチェックする必要なしに、転送プレフィックス命令と直後の命令とを統合させることが安全であることを命令統合回路にシグナリングするために、直後の命令の前に置くことができる転送プレフィックス命令が提供される。これは、命令統合回路が、それぞれの命令のレジスタを比較するコンパレータを必要とすることを回避し、命令統合のハードウェアにおける実施をより安価にし、したがって、命令統合がハードウェアおよびエネルギー消費に関して以前は高価すぎた下端システムに、命令統合を利用可能にする。
データ処理命令は、建設的命令または破壊的命令のいずれかとして定義することができる。建設的命令は、データ処理命令の転送先レジスタと転送元レジスタとを別々に識別する別個のレジスタ指定子のためのスペースを有する符号化を有する。一方、破壊的命令の場合、符号化は、転送先レジスタと1つの転送元レジスタの両方を識別する単一のレジスタ指定子を有することができる。建設的命令の一例は、演算Rd=Rs1+Rs2を実行するように処理回路をトリガすることができる加算命令ADD Rd,Rs1,Rs2であってもよい。破壊的演算の例は、加算演算Rd=Rd+Rs1を実行するように処理回路をトリガする加算命令ADD Rd,Rs1であってもよい。
建設的形式の命令は、すべての入力オペランドの以前の値を維持し、そのため、複数の命令が同じ入力を必要とする場合、以前の建設的命令と同じ転送元レジスタを参照し続けることができるため、有用であり得る。例えば、上述の建設的な加算演算では、レジスタRs1が別の命令に対して再び必要とされる場合、建設的形式を使用することにより、加算を実行する前にレジスタを操作するためのさらなる命令を必要とせずにこの値を保持することができる。
しかし、いくつかの命令セットアーキテクチャでは、符号化空間は貴重であり、各転送元オペランドのためのレジスタ指定子に加えて、転送先レジスタのための別個のレジスタ指定子を収容するのに十分なスペースがない場合がある。したがって、いくつかの命令セットアーキテクチャは、いくつかの命令に対して建設的符号化を可能にせず、そのため、破壊的符号化が、プログラマまたはコンパイラにとって利用可能な唯一の符号化であり得る。破壊的符号化は、破壊的命令の結果を転送元レジスタの1つに書き込むことによって、命令において符号化する必要のあるレジスタ指定子が少なくなるため、符号化空間を節約する。それにもかかわらず、データフロー分析が、命令が完了した後に入力命令のすべてが生きたままである(再び読み出される)ことを示す場合、プログラマまたはコンパイラは、建設的形式の命令を使用することを所望することが一般的である。所望の演算を実行するための建設的命令が命令セットアーキテクチャで利用可能でない場合、プログラマまたはコンパイラは、レジスタ転送またはコピー命令を破壊的命令の前のどこかに挿入することによってこれに対処することができる。
例えば、次のベクタ操作では、アーキテクチャで利用できる建設的命令がない場合がある。
(1)rd=pg?rs1+rs2:0; //ADD Zd.S,Pg/Z,Zs1.S,Zs2.Sに対応する。
ここで、rdは転送先レジスタ、rs1およびrs2は転送元レジスタ、pgはベクトルレジスタのどの要素がアクティブ要素か非アクティブ要素かを識別する述語値であり、アクティブ要素は転送元レジスタにおいて対応する要素の合計rs1+rs2に設定され、rdの非アクティブ要素は0に設定される。
上記の建設的ADD命令が利用できない場合、プログラマまたはコンパイラは、別々の転送および破壊的加算命令を代わりに使用することができる。
(2)rd=pg?rs1:0; //MOV Zd.S,Pg/Z,Zs1.Sに対応する
rd=pg?rd’+rs2:rd; //ADD Zd.S,Pg/M,Zs2.Sに対応する
(上記のベクトル命令構文では、述語の接尾辞/Zまたは/Mは、ゼロ化予測が使用されるか、または、マージ予測が使用されるかを示す。ゼロ化叙述の場合、結果の非アクティブ要素はゼロに設定され、一方でマージ叙述の場合、非アクティブ要素は転送先レジスタZd.Sの対応する要素に以前に格納されたものと同じ値を保持する)。
したがって、例(2)の2つの命令を使用して、後続の命令によって読み取ることができるように、レジスタの内容Zs1.S(rs1)を保存することができる。しかし、追加の命令を復号して処理する必要があると、パフォーマンスが低下する可能性がある。
実際には、処理回路のハードウェアは、たとえ建設的命令が命令セットアーキテクチャ内で提供されなくても、依然として建設的なデータ処理動作をサポートすることができる。例えば、所与の命令セットアーキテクチャは、符号化空間に最も大きな圧力がかかる命令に対してのみ破壊的符号化を使用することができ、より少ない異なる値が命令において符号化される必要がある他のタイプの命令は、別個の転送先レジスタ指定子のための十分なスペースを有する。したがって、たとえ命令セットアーキテクチャにいくつかの破壊的命令があっても、いくつかの建設的命令もあるという事実は、処理回路自体のハードウェアが依然として別個の転送元および転送先レジスタ指定子を受信するための入力を有し、そのため、相対的に少ない変更によって、破壊的命令を、処理回路に発行されるべき建設的演算に変換することもできることを意味し得る。
したがって、いくつかの実装態様は、実際に対応する建設的データ処理動作を実現することを意図した上記のような転送命令および後続するデータ処理命令のシーケンスがいつ存在するかを認識するための命令統合回路を提供し、そのようなシーケンスが認識されるとき、命令統合回路はそれらを統合して、単一の統合データ処理命令を生成して、建設的演算を実施するように処理回路をトリガすることができる。例えば、処理回路は、例(2)からの別個のベクトルMOVおよびADD命令の代わりに、上記の例(1)に示されるような建設的ベクトルADD命令を発行されてもよい。
しかし、そのような命令統合をより困難にする多くの問題がある。第1に、転送命令と後続のデータ処理命令の対がページ境界またはキャッシュラインまたは命令フェッチ境界にまたがる場合、命令統合回路は、転送命令と同じ命令バッチ内の後続のデータ処理命令に遭遇しない場合があり、これによって、転送命令を見てから後続のデータ処理命令を見るまでの間に何らかの追加の内部状態を維持することなく命令の組み合わせを識別することがより困難になり得る。このような追加の内部状態を維持することは、命令統合回路のハードウェアオーバヘッドを増加させる。
また、転送命令および後続のデータ処理命令を統合することを可能にするために、命令統合回路は、転送およびデータ処理命令のオペランドが統合可能であるように互換性があることをチェックする必要があり得る。例えば、命令統合回路は、転送命令および後続のデータ処理命令の転送先レジスタが同じであること、そのレジスタを上書きする介在する命令が存在しないこと、および命令が、ベクトルオペランドのどのデータ要素がアクティブ要素であるかを識別する述語レジスタを指定するベクトル命令である場合、2つの命令によって指定される述語レジスタも同じであることをチェックする必要があり得る。これらのチェックは、転送命令および後続のデータ処理命令が、同等の建設的演算を実装することを実際に意図されており、独立した動作ではないことを保証する。これらのチェックをすべて実行すると、命令統合回路の複雑さが大幅に増加し、比較的ローエンドの実装ではこれが正当化されないことがある。
統合に関する別の問題は、統合命令が、浮動小数点命令がオーバーフローまたはアンダーフローまたはゼロ割りなどの浮動小数点例外に遭遇する場合など、例外条件をトリガする可能性があることである。このような例外の処理は、統合命令の場合にはより複雑になることがある。
これらの理由のために、一般的に命令統合は、性能がエネルギー効率より重要な要件である比較的ハイエンドの実装における転送およびデータ処理命令に対してのみ可能であった。統合の恩恵をよりローエンドの実装にも利用可能にすることが望ましい。
これらの問題に対処するために、専用の転送プレフィックス命令が提供され、プログラマまたはコンパイラは、転送プレフィックス命令および直後の命令が統合可能であることを知らせるために直後の命令にプレフィックスを付けるためにこれを使用することができる。転送プレフィックス命令は、転送先レジスタと、少なくとも部分的に転送先レジスタにコピーされるデータ値を指定する転送元レジスタとを識別する。転送プレフィックス命令が検出されると、命令統合回路は、転送プレフィックス命令の転送先レジスタが直後の命令によって指定される任意のレジスタと同じであるか否かとは無関係に、転送プレフィックス命令と直後の命令とを統合させるべきか否かを判定することができる。
したがって、転送プレフィックス命令が提供されたという事実は、直後の命令が、転送先レジスタと第1の転送元レジスタとが転送プレフィックス命令の転送先レジスタと同じ命令である破壊的データ処理であることが予想されることのシグナルであるため、命令統合回路は、転送プレフィックス命令と直後の命令のレジスタとを比較する必要はない。要約すると、転送命令と破壊的命令との対が建設的な操作統合を実施することを意図しているときに、プログラマまたはコンパイラに転送プレフィックス命令を選択する責任を与えることによって、これは、融解が可能な場合を検出するために処理回路における複雑なハードウェアの必要を回避し、消費電力および回路面積を節約する。
図1は、複数のパイプライン段を含む処理パイプライン4を含むデータ処理装置2の一例を概略的に示す。この例では、パイプライン段は、データストア(例えば、命令キャッシュまたはメモリ)から命令をフェッチするフェッチ段6と、フェッチされた命令を復号する復号段と、レジスタリネームを実行するためのリネーム段10と、実行のために命令を発行する発行段12と、発行された命令を実行するための実行段14とを含む。実行段14は、複数の異なる種類の命令を実行するための複数の実行ユニット、例えば、スカラデータ処理命令を実行するためのスカラALU(算術論理装置)20、ベクトルデータ処理命令を実行するためのベクトルALU22、浮動小数点命令を実行するための浮動小数点ユニット24(場合によっては別個のスカラ浮動小数点ユニットおよびベクトル浮動小数点ユニットが設けられてもよい)、および、レジスタ30とデータキャッシュまたはメモリなどのデータストアとの間でデータを転送するためのロード/ストア命令を実行するロード/ストアユニット26を含む。ロード/ストア命令によって指定される仮想アドレスを、データキャッシュまたはメモリ内の位置を識別する物理アドレスに変換するためのアドレス変換データをキャッシュするために、変換ルックアサイドバッファ(TLB)32を設けることができる。
レジスタ30は、各々が単一のデータ要素を含むスカラオペランドを格納するためのスカラレジスタ34と、各々が複数のデータ要素を含むベクトルオペランドを格納するベクトルレジスタ36と、ベクトルレジスタ36のどの要素がアクティブまたは非アクティブであるかを識別する述語値を格納するための述語レジスタ38とを含む。ベクトルALU22によって処理されるベクトル命令に応答して、1つまたは複数のベクトルオペランドがベクトルレジスタ36から読み出され得、述語レジスタ38の1つに記憶された述語値が、ベクトルALU22を制御して、述語値によって示される任意のアクティブデータ要素に対する所与のデータ処理演算を実行して、ベクトルレジスタの1つに書き戻される対応する結果データ要素を生成することができ、一方で、述語によって示される非アクティブレーンに対応する任意の要素は、他の値をとることができる。転送先レジスタ内の非アクティブレーンの値をどのように設定するかを決定するために、異なる非アクティブレーン処理モードを定義することができる。例えば、非アクティブな結果データ要素は、所定の値(例えばゼロ)にクリアされ得るか、または転送先レジスタの対応する要素の以前の値を保持することができる。一方、スカラ命令の場合、スカラALU20または浮動小数点ユニット24は、スカラレジスタ34からデータ値を読み出して処理し、結果値をスカラレジスタ34の1つに書き戻すことができる。
図1の例では、パイプライン4は命令がフェッチ段6によってフェッチされたプログラム順序と異なる順序での命令の実行をサポートする順序外パイプラインである。発行段12は、命令のオペランドが利用可能になるのを待つ間に実行されるべき命令を待ち行列化する発行キュー40を有する。命令のオペランドが利用可能になると、たとえプログラム順序における先行する命令がそのオペランドを依然として待っているとしても、実行段40によって実行のために発行され得る。命令の並べ替えが可能である範囲を増大するために、リネーム段10が、フェッチされる命令によって指定されるアーキテクチャレジスタ指定子を、ハードウェア内に設けられた物理レジスタ30を識別する物理レジスタ指定子にマッピングするために提供される。典型的には、提供される物理レジスタの数は、同じアーキテクチャレジスタを異なる命令が異なる物理レジスタにマッピングされることを可能にし、それによって、これらの命令間の依存関係を排除することができるようにするために、命令セットアーキテクチャで利用可能なアーキテクチャレジスタの数よりも多い。これにより、パフォーマンスを向上させるために命令の実行順序を変更するより高い柔軟性が可能になる。リネーム段10は、アーキテクチャレジスタ指定子と物理レジスタ指定子との間のマッピングを追跡するためのリネームテーブル42を維持する。
他の例は、プログラム命令が元のプログラム順序で実行される正順序パイプラインを提供することができることが理解されよう。この場合、リネーム段10は省略されてもよく、発行段12は、そのオペランドが利用可能であり、プログラム順序における任意の先行する命令が発行されたときに所定の命令を発行することができる。
これは、可能なパイプラインアーキテクチャの単なる一例に過ぎず、他の例は、実行段14における実行ユニットの異なる段または異なる組み合わせを有してもよいことが理解されよう。例えば、いくつかのパイプラインは、復号段8と発行段12との間に追加のディスパッチ段を有することができ、それによって、復号段8において他の命令の復号を阻害しないように、発行キュー40がいっぱいになったときに、復号命令はディスパッチ段内で待つことができる。
フェッチ回路6によってデータストアからフェッチされた命令は、「マクロ命令」と呼ばれる場合があり、一方で、実行のために実行段14に渡される復号命令は、「マイクロ命令」または「マイクロ演算」と呼ばれることがある。いくつかのタイプの命令では、キャッシュまたはメモリからフェッチされるマクロ命令と、実行段14によって実行されるマイクロ演算との間に1対1のマッピングが存在し得る。しかし、他のタイプの命令の場合、複雑な命令は、復号段8によって複数のマイクロ演算に復号され、これはその後、実行段14による実行のために別々に発行することができる。例えば、複数ロード命令を、各々がメモリから異なるレジスタにデータをロードするための複数の個々のロードマイクロ演算に復号することができる。
また、2つ以上のマクロ命令を統合して、実行されるべき単一のマイクロ命令を生成することもできる。この例では、復号段8は、命令キャッシュまたはメモリからフェッチ段によってフェッチされる命令ストリーム内で検出される2つ以上の命令からなる様々なグループを統合させ、そのようなグループが検出されると、これらを統合させて、その後処理のために後続の段に転送することができる同等の結果を与える単一の統合データ処理命令を生成するための命令統合回路50を有する。単一の命令は一般的に2つ以上の別々の命令より高速に実行できるため、これにより、パフォーマンスを向上させることが可能である。図1は、命令統合回路50を含む復号段8を示しているが、他の例では、命令統合は、ディスパッチ段または発行段12などの別の段で行うことができる(例えば、復号段8は、最初に、命令グループを別個の復号命令に分割することができるが、発行段における統合回路は、その後、これらを単一のマイクロ演算に統合することができる)。したがって、復号の際に命令統合が行われることは必須ではない。
命令統合回路50は、処理回路14に送られる対応する統合命令(統合マイクロ演算)にマッピングすることができる統合可能な命令グループを検出することができる。各々が対応する統合命令にマッピングすることができるいくつかの異なる統合可能グループが存在する可能性がある。しかしながら、後続の例は、転送プレフィックス命令および直後の命令を含む特定のグループに焦点を当てる。これは、命令統合回路50が他のタイプの命令も統合できることを排除するものではない。
図2は、命令統合回路50によって実行される命令統合の例を示す。図2の上部は、プログラマまたはコンパイラが実際に使用することを所望するが、装置2によってサポートされている命令セットアーキテクチャでは利用できない建設的加算命令を示している。建設的加算命令は、転送先レジスタZdと、述語レジスタPgと、2つの転送元レジスタZs1、Zs2とを指定する。建設的加算命令は、ベクトルレジスタZs1、Zs2からベクトルを読み出し、2つのベクトルの対応するデータ要素の各それぞれの対に対して一連の加算演算を実行して、転送先レジスタZdに書き込まれるべき対応する結果データ要素を生成するように、装置を制御することを意図されている。述語レジスタPgによって非アクティブとして識別される任意の要素は、結果の対応するデータ要素を加算に依存しない何らかの他の値に設定し、一方で、アクティブレーンは転送元ベクトルの対応するデータ要素の加算結果をとる。
しかし、建設的加算命令が利用できないとき、プログラマまたはコンパイラは、代わりに、図2の中央部に示すように、転送プレフィックス命令および破壊的加算命令を提供する。転送プレフィックス命令は、転送先レジスタZdおよび転送元レジスタZs1を指定し、転送先レジスタZdを転送元レジスタZs1に等しく設定するように処理装置をトリガすることを意図している。任意選択的に、転送プレフィックス命令はまた、転送先レジスタZdのどのデータ要素が、転送元レジスタZs1からの対応する要素でポピュレートされるアクティブ要素であるかを制御する述語レジスタPgを指定してもよい。しかし、叙述されていない転送プレフィックス命令も提供されてもよく、この場合、転送元値全体がレジスタZs1から転送先レジスタZdにコピーされてもよい。次の破壊的加算命令は、転送プレフィックス命令と同じ転送先レジスタZdおよび同じ述語Pg(述語が転送プレフィックス命令内で与えられている場合)を指定し、第2の転送元レジスタZs2も指定する。加算命令は、レジスタZdおよびZs2内でそれぞれの要素対を加算し、各結果を転送先レジスタZdの対応する要素に書き込み、転送先レジスタのこれらの要素の以前の値を上書きするように、処理ハードウェアを制御するように意図されている。ここでも、述語レジスタは、どのレーンがアクティブおよび非アクティブであるかを制御し、任意の非アクティブなレーンは加算とは無関係に設定される(例えば、ゼロまたは転送先レジスタの以前の値に設定することができる)。
命令統合回路50は、転送プレフィックス命令および破壊的加算命令を含む命令対を検出し、それらを統合するか否かを決定する。図2の下部に示すように、命令統合回路50はこれらの命令を統合させないことを決定し、その後、統合されていない転送命令および加算命令が別々に実行するためにパイプラインの後続段に発行される。一方、命令が統合される場合、それらは、プログラムまたはコンパイラの本来の意図に従って、統合された建設的加算命令に置き換えられる。
転送プレフィックス命令を後続の命令と統合させるか否かの決定は、後続の命令によってどの特定のデータ処理動作が指定されるかを含み得る様々な要因に依存し得る。したがって、命令が統合されるか否かは、転送プレフィックス命令の異なるインスタンスに対して動的に変化し得る。図2の例では、転送プレフィックス命令の直後の命令は加算命令であるが、同様に、転送プレフィックス命令は他の形式の演算命令(減算、乗算、除算、平方根、乗加算など)、または論理命令(AND、OR、XOR、NANDなど)のような他のタイプのデータ処理命令にプレフィックスを付けることができる。したがって、異なる種類のデータ処理命令のクラス全体が存在してもよく、これらの命令には、転送プレフィックス命令が前置されてもよい。転送プレフィックス命令がデータ処理命令のクラスのいずれかと統合されるとき、命令統合回路50は、直後の命令のオペコードから、対応する統合データ処理命令のクラスのいずれを生成するかを決定することができる。
いくつかの実施形態では、統合回路50は、その転送プレフィックス命令を、それらのすべてではなくそのクラス内の特定のタイプのデータ処理命令についてのみ、直後の命令と統合してもよい。例えば、浮動小数点命令で上述したように、浮動小数点演算が値をゼロ割りしようとする場合、または、浮動小数点結果がオーバーフローする、アンダーフローする、または不正確であるときなど、浮動小数点例外が発生するリスクがあり得る。統合命令が実行されるときにそのような例外条件を処理する複雑さを避けるために、実施態様は、実行されるべき演算が例えば浮動小数点演算である場合に、転送プレフィックスを直後の命令と統合させることを避けることができる。
また、転送プレフィックス命令および後続の命令が異なるキャッシュラインに保持されるか、またはアドレス空間の異なるページに命令アドレスを有する場合、例えば、転送プレフィックス命令は、復号段8が遭遇する1つの命令ブロックの最後の命令であり得、後続の命令は次のブロックの最初の命令になり、そのため、これらの2つの命令は同時に遭遇され得ないため、命令統合回路50はそれらを統合させないことを選択することができる。2つの命令を見ている間に状態を維持するのを避けるために、1つのブロックの最後の命令の転送プレフィックスに遭遇すると、命令統合回路50は、単に次の命令と統合させないことを決定することができる。
しかし、統合するか否かの決定は、直後の命令が建設的命令であるかまたは破壊的命令であるか、転送プレフィックス命令および直後の命令の転送先レジスタが同じであるか否か、転送プレフィックス命令および直後の命令の述語レジスタが同じであるか否か、および、直後の命令の転送元レジスタのうちの1つが転送プレフィックス命令の転送先レジスタと同じであるか否かを含む、いくつかの要因とは無関係である。プログラマまたはコンパイラが専用の転送プレフィックス符号化を使用して(データ値をレジスタ間で転送することができる何らかの他の種類の命令ではなく)転送プレフィックス命令を選択することを選択しているという事実は、転送プレフィックス命令を直後のデータ処理命令と安全にマージすることができることを示すため、命令統合回路50は、これらの条件のいずれかをチェックする必要はない。これらの条件のすべてをチェックする必要性を排除することにより、命令統合回路50はハードウェアの点ではるかにより効率的であり、そのため、これにより命令統合がより簡単なパイプライン実施態様にとって利用可能となり、比較的ローエンドのシステムの性能を高めることができる。
いくつかの実施形態では、命令統合回路50は、直後の命令が実際にデータ処理命令であるか否かさえチェックしなくてもよい。プログラマまたはコンパイラは、予測可能な結果を与えるために、転送プレフィックス命令を限定された破壊的データ処理命令セットと対にする必要があるが、命令統合回路50は、直後の命令が実際にその破壊的データ処理命令セットのうちの1つであるか否かをチェックする必要はなく、プログラマまたはコンパイラがロード、ストア、または分岐命令の直前に転送プレフィックス命令を置く場合、命令統合回路50は依然として命令を統合して統合データ処理命令を生成することができ、その結果は予測できない。後続の命令が、統合されることを意図された許容される破壊的データ処理命令セットの1つであるか否かをチェックする必要性を回避することによって、命令統合回路50のオーバーヘッドを低減することができる。代替的に、他の実施態様は、直後の命令のタイプをチェックして、それが統合すべきではないロード、ストア、分岐、または他のタイプの命令であることを決定してもよい。
図2とは対照的に、図3は、図2に示す転送プレフィックス命令とは異なる方法で符号化される標準転送命令を含む一連の命令を示す。プログラマまたはコンパイラは、後続のデータ処理演算が先行する転送とは無関係であるべきであり、そのため命令対が建設的演算を複製することを意図されていない場合に標準転送命令を選択することができる。標準的な転送命令の場合、命令統合回路50は、転送命令を統合の候補として認識し得ず、後続のデータ処理命令とは別個にパイプラインの後続の段による処理のために単純に転送することができる。
図3に示す標準転送命令の命令符号化は、図2の転送プレフィックス命令の命令符号化とは区別することができる。標準的な転送命令であるか転送プレフィックス命令であるかを指定するフィールドを用いて転送命令を提供することが可能である。しかしながら、実際には、転送プレフィックス命令は、標準(非プレフィックス)転送命令とはまったく異なるオペコードを有することがある。あるレジスタから別のレジスタへのデータ値の転送は、実際には、2つの同一のオペランドに対して論理ORを実行してその結果をレジスタに入れるOR命令、2つの同一のオペランドに対して論理ANDを実行してその結果をレジスタに入れるAND命令、転送されるオペランドにゼロを加算するADD命令、または、その転送元オペランドのうちの1つと同じ結果を与える任意の他の命令のような、他の種類の命令を使用して実施することができる。したがって、既に提供されている別の命令を使用して転送を実際に実施することができるときに、専用転送命令のための命令セットアーキテクチャ内の符号化空間を無駄にする価値はないことが多い。したがって、実際には、図3に示す従来の転送命令は、実際にはその入力オペランドの1つと同じ結果を与える別の命令であり得、これは図2に示す転送プレフィックス命令とは異なるオペコードを有することができる。
統合されていない転送プレフィックス命令が実行されるいくつかの場合において、命令は実行段14に発行され得、実行段14は実際に転送先レジスタに転送元値を書き込むことができる。しかしながら、転送プレフィックス命令がスカラ命令、叙述されていないベクトル命令、または述語がすべての要素をアクティブと識別する叙述ベクトル命令である場合、転送は、単にリネームテーブル42を更新することによってリネーム段10で実行することもでき、それによって、転送先レジスタのアーキテクチャレジスタ指定子が、この時点で、転送元レジスタのアーキテクチャレジスタ指定子に以前にマップされた物理レジスタにマッピングされる。したがって、いくつかのタイプのレジスタ転送は、発行段でスロットが割り当てられるか、または実行段14で任意の動作が割り当てられる必要をなくすことができ、単純にレジスタリネームによって実施することができる。
図4は、命令の統合を制御する方法を示す。ステップ60において、命令統合回路50は、フェッチされた命令が、転送先レジスタR1、転送元レジスタR2、および任意選択で述語レジスタP1を指定する転送プレフィックス命令を含むか否かを検出する。そうでない場合、フェッチされた命令は何らかの他の方法で処理される。転送プレフィックス命令が検出されると、ステップ62において、命令統合回路50は、転送プレフィックス命令の転送先レジスタR1が直後の命令によって指定されるレジスタのいずれかと同じであるか否かとは無関係に、転送プレフィックス命令と直後の命令とを統合させるべきか否かを判定する。いくつかの実施態様では、統合させるべきかの決定は、転送プレフィックス命令が検出されたときに、これが直後の命令と常に統合されるように固定されてもよく、一方、他の場合には、この決定は、特定のタイプのデータ処理が命令によってトリガされるなど、他の要因に依存してもよい(例えば、演算が浮動小数点演算であるか整数演算であるか、または演算が除算または加算であるかなど)。この決定はまた、転送プレフィックス命令および直後の命令が、所定の時間に処理される同じ命令ブロック内にあり、例えばページ境界またはキャッシュライン境界によって分離されていないかにも依存する。正しく使用される場合、直後の命令は、転送先レジスタR3が転送先レジスタR1と同じであり、転送元レジスタの1つが転送先レジスタR3自体であり、述語レジスタP2(指定されている場合)が、転送プレフィックス命令の述語レジスタP1と同じであるクラスのデータ処理動作の1つであるはずである。直後の命令は、少なくとも1つのさらなる転送元レジスタ(例えば、レジスタR4)を指定することもできる。
ステップ64では、転送プレフィックス命令と直後の命令とを統合するか否かが決定される。命令が統合される場合、ステップ66において、実行のために後続の段に渡すために、建設的な形式の統合命令が生成される。統合命令は、転送プレフィックス命令によって指定される転送先R1または直後の命令によって指定される転送先レジスタR3のいずれかと等しい結果レジスタRd、転送プレフィックス命令および直後の命令によって指定されるいずれかの述語レジスタP1、P2と同じである述語レジスタPg、転送プレフィックス命令の転送元レジスタR2および直後の命令のさらなる転送元レジスタR4に等しい少なくとも2つのオペランドレジスタRs1、Rs2を指定する。いくつかのタイプの命令(例えば、乗加算)は、3つ以上の転送元オペランドを有することができ、その場合、統合命令の2つ以上の転送元オペランドは、元の破壊的命令の対応する転送元レジスタと同じであり得る。一方、ステップ64において、命令を統合させないと決定された場合、ステップ68において、別々の転送および処理命令が、パイプラインの残りの段によって別々に処理される。
図4に示す統合命令は、以下を条件として、ステップ60および62に示す2つの別々の転送およびデータ処理命令の組み合わせと同じ結果を生成すると予測される。
・直後の命令がデータ処理命令である(ロード、ストアまたは分岐など何らかの他の命令ではない)
・転送プレフィックス命令および直後の命令が同じ転送先レジスタを指定する(R1=R3)。
・直後の命令が、さらなる転送元オペランドとしてプレフィックス転送先レジスタ(R1)を使用しない。
・転送プレフィックス命令および直後の命令が同じ述語レジスタを指定する(P1=P2)。
・直後の命令が、転送元と転送先の両方として同じレジスタを指定する破壊的命令である。
プログラマまたはコンパイラが転送プレフィックス命令を誤って使用し、次のいずれかが該当する命令の直前に配置する可能性がある。
・後続の命令が、転送先レジスタを転送元オペランドとして使用する破壊的データ処理命令ではない、
・後続の命令が、転送プレフィックス命令と同じ転送先レジスタを指定していない、
・後続の命令は、プレフィックス転送先レジスタをさらなる転送元オペランドとして使用する、または
・後続の命令が、転送プレフィックス命令と同じ述語レジスタを指定しない(転送プレフィックス命令が述語命令である場合)。
命令統合回路50がこれらの条件をチェックしていないため、命令統合回路15は、転送プレフィックス命令と直後の命令とを統合して、統合命令を生成することができ、統合命令は、転送プレフィックス命令および直後の命令が独立に実行された場合に生成される結果とは異なる結果を与えることができる。したがって、転送プレフィックス命令がプログラマまたはコンパイラによって正しく使用されない場合、統合命令の挙動は予測不可能である可能性がある。統合命令(または統合命令の結果を使用する後続の命令)の結果は、所与のハードウェア実装が統合を実施する特定の方法に依存し得る。例えば、統合命令は、転送プレフィックス命令と直後の命令との組み合わせによって実際に意図されたものとは異なる転送元レジスタ対で動作してもよいし、または、リンクされることが決して意図されていない2つの演算を組み合わせてもよい。したがって、プログラマまたはコンパイラが転送プレフィックス命令を誤って使用すると、バグおよび誤った処理結果が発生する可能性がある。正しい使用を確実にするために、プログラマまたはコンパイラは、介在する命令なしにプログラム順序で適用する破壊的データ処理命令の直前に転送プレフィックス命令を置くべきであり、転送プレフィックス命令および直後の命令が、同じ転送先レジスタを指定し、(転送プレフィックス命令が叙述される場合)同じ述語レジスタを指定することを保証し、直後の命令が破壊的命令であることを保証すべきである。転送プレフィックス命令は実効的に、次の命令が統合されるのに適した破壊的命令になることを「約束」し、プログラマまたはコンパイラがこの約束を破った場合、結果が正しいと期待することはできない。
転送プレフィックス命令を使用して書かれたコードは依然として、命令を統合するための命令統合回路50を有しないデータ処理装置によって実行することができる。そのような実施態様では、転送プレフィックス命令は、単に標準転送命令として処理することができ、転送元レジスタZs1から転送先レジスタZdへデータ値を転送するために実行することができる。したがって、命令セットアーキテクチャ内で転送プレフィックス命令を提供する場合、そのアーキテクチャをサポートするすべてのハードウェアが命令統合回路50を有する必要はなく、転送プレフィックス命令を提供することによって、命令統合回路50を提供するハードウェア実施態様が、命令統合をより低コストで実施し、より多くのハードウェア実施態様が統合を可能にすることを選択する可能性を高めることを可能にする。
図5に示すように、複数のデータ要素を含むベクトルオペランドに対して動作する転送プレフィックス命令のベクトル実施態様のために、非アクティブな処理レーンを処理する様々な方法に対応する異なる形式の転送プレフィックス命令を提供することができる。図5のこの例では、3つの形式の命令、すなわち、述語レジスタを指定しない、すなわちベクトルのすべての要素がアクティブであると見なされる叙述されていない転送プレフィックス命令、ならびに、2つの叙述されている形式の命令、すなわち、述語値によって識別される非アクティブレーンが転送先レジスタの対応する要素に格納されている以前の値に設定されるマージ転送プレフィックス命令、および、転送先レジスタの非アクティブレーンが固定値(0など)に設定されるクリア転送プレフィックス命令が提供される。
図5の上部は、スタンドアローン命令(後続のデータ処理命令との統合を伴わない)として転送プレフィックス命令の各形式を実行した結果を示す。叙述されていない転送の場合、統合されていない転送命令を実行する結果として、転送元レジスタZs1からのベクトル全体が転送先レジスタZdにコピーされる。上述したように、実際には、単純に、レジスタZdのアーキテクチャ指定子がこの時点で転送元レジスタZs1に以前にマッピングされた物理レジスタにマッピングされるように、リネームテーブル42を更新することによってこれを達成することができる。
マージ転送プレフィックス命令の場合、転送先レジスタのアクティブレーン(この例では、述語値が1であるレーン0,1,2)は、転送元レジスタZs1からの対応する要素V0、V1、V2と等しく設定され、一方、非アクティブレーン(例えば、述語ビット0を有するレーン3)は、転送先レジスタZdの以前の値D3を維持する。レジスタのリネームにより、たとえ元の転送先レジスタと更新された転送先レジスタとの間で要素D3が変更されないままであっても、転送先レジスタZdの結果値は、実際には転送先レジスタZdに以前にマッピングされている物理レジスタに書き込むことができ、そのため、要素D3は依然としてアクティブ要素V0、V1、V2の値とともに転送先レジスタにコピーする必要があり得る。
一方、クリア転送プレフィックス命令の場合、転送先レジスタZdの任意の非アクティブ要素はゼロに設定され、一方、アクティブ要素は転送元レジスタZs1の対応する要素V0−V2の値をとる。
図5の下部に示されているように、異なるタイプのプレフィックス命令の後にマージ叙述を使用するデータ処理命令が続く場合、結果は、データ処理命令の述語Pgによって示されるアクティブなレーンが、データ処理命令の転送元レジスタZs1および第2の転送元レジスタZs2内の対応する要素の合計Vn+Snに対応することである。一方、非アクティブレーンは、データ処理命令と組み合わされた転送プレフィックス命令のタイプに応じて異なる値をとる。叙述されていない転送プレフィックス命令の場合、非アクティブなレーンは、転送元レジスタZs1の対応する要素からの値V3をとる。マージ転送プレフィックス命令の場合、後続のデータ処理命令の結果として、その非アクティブレーンが元の転送先レジスタZdからの要素D3をポピュレートされ、クリア転送プレフィックス命令では、最終結果の非アクティブレーンはゼロに設定される。これは、3つの例すべてが後続の命令とまったく同じ符号化を使用していても同じである。
したがって、異なる非アクティブレーン処理モードに対して異なる形式のデータ処理命令を提供する必要はない。例えば、先行する転送プレフィックス命令は、マージまたはクリアのいずれの叙述が使用されるかを選択するために、異なる形式で選択することができるため、叙述をクリアすることを可能にする符号化を伴う加算命令を提供する必要はない。これにより、データ処理命令の符号化空間が節約される。データ処理命令は、多くの場合、転送プレフィックス命令よりも多くの、命令符号化において表現されるべき値を有し得るため、非アクティブレーン処理モードの符号化を転送プレフィックス命令にシフトする結果として、データ処理命令の符号化がより効率的になり、これによって、他の情報を符号化するために、データ処理命令において利用可能なより多くのスペースが残る。
したがって、破壊的データ処理命令(転送元レジスタと転送先レジスタの両方として同じレジスタを指定する)は、デフォルトで、非アクティブレーンが転送先レジスタの対応する値を保持するマージ非アクティブレーン処理モードを使用すると仮定することができる。異なる非アクティブレーン処理モードがデータ処理命令(例えば、ゼロ化叙述)に対して所望される場合、異なるタイプの転送プレフィックス命令を命令に前置することによって、データ処理命令の挙動を変更することができる。
図5は、叙述されている加算命令の前に叙述されていない転送プレフィックス命令を実行する例を示しているが、多くの例では、叙述されていない転送プレフィックス命令は、非アクティブなレーンを有しない、叙述されていないデータ処理命令と併用される。この場合、すべてのレーンは、結果要素をレジスタZs1、Zs2の対応する要素Vn、Snの合計に設定することができる。
また、図5は、転送プレフィックスと加算演算とを別々に実行する例を示しているが、これらが統合されたとき、処理回路14は、いかなる方法でも同等の結果を生成することができることは理解されよう。処理回路が実際に2つの演算を連続して実行する必要はなく、転送先レジスタZdおよび2つの転送元レジスタZs1、Zs2の入力値から直接適切な結果値を生成することが可能であり得る。
上で説明したように転送プレフィックス命令を導入するときに生じる1つの問題は、実行を停止させるイベントにどのように応答するかである。イベントを停止させる例は、例えば、例外、割り込み、またはブレークポイントなどである。例えば、命令が異常な結果(例えば、浮動小数点結果が範囲外である)を生成する場合、例外が発生する場合があり、または、外部デバイスが、例えば、ユーザが装置のボタンを押したか、あるいは、外部デバイスがメッセージを送信したことを示す割り込み信号をアサートすると、割り込みがトリガされ得る。例外または割り込みは、処理回路が、処理を中断し、発生したイベントを処理するために例外または割り込み処理ルーチンに切り替えるようにする場合がある。処理ルーチンが完了すると、処理はその後、以前に実行されていたプログラムに戻ることができる。同様に、デバッグの目的で、ブレークポイントアドレスを設定することができ、命令アドレスがブレークポイントアドレスと一致する命令に処理が到達したとき、デバッガが様々なレジスタの内容を検査すること、メモリ内の特定のアドレスからデータ値を読み出すこと、または処理回路の活動を調査するための他の操作のような何らかの診断動作を実行することができるように、処理を保留することができる。
したがって、これらのタイプの停止イベントのすべてについて、停止イベントの発生時に、処理が停止イベントの解決に戻るべき復帰アドレスを記録することができる。復帰アドレスは、複数の異なる方法で記録することができる。例えば、復帰アドレスはレジスタ(例えば、リンクレジスタ)に置くことができ、またはスタックにプッシュすることができ、または他の何らかのメカニズムを使用して記録することができる。図6および図7に示すように、転送プレフィックス命令およびデータ処理命令の対について、後続の命令(統合されていない場合)または統合命令(統合されている場合)の処理中に停止イベントが発生したときに復帰アドレスを決定することができる複数の異なる方法が存在する。
図6に示すように、1つのアプローチは、たとえ例外が後続の命令によって実際にトリガされた場合でも、停止イベント(この場合は例外など)が、転送プレフィックス命令の復帰アドレス#A1のレジスタ(ELR)への記録をトリガすることである。図6の例では、データ処理命令は浮動小数点命令FADDであり、そのため、例外は浮動小数点例外であり得る。したがって、例外ハンドラが例外条件の解決を完了すると、処理は転送プレフィックス命令のアドレス♯A1に戻り、そのため、命令統合回路50は転送プレフィックス命令を後続の命令と統合させるか否かを再び決定することができる。停止イベントの前にその効果が既にアーキテクチャ的に実行されていたとしても、転送プレフィックス命令を繰り返すことができるため、この方法は、後続の命令を再開する前に、任意の状態を維持する必要性を回避する。
一方、図7に示すように、別のアプローチは、停止イベントが、転送プレフィックス命令のアドレスの代わりに、後続の命令の復帰アドレス#A2のELR内への記録をトリガすることであってもよい。この場合、復帰アドレスを設定することに加えて、処理回路は、転送プレフィックス命令の転送先レジスタZdが、転送プレフィックス命令が実行された場合と同じ結果に設定されることを保証することができる。実際には、転送プレフィックス命令が次の命令と統合されていないいくつかの場合、転送プレフィックス命令は既に実行されている可能性があり、したがって、転送先レジスタZdが既に正しい結果を有している可能性がある。一方、転送プレフィックス命令がまだ実行されていない場合、または転送プレフィックス命令が後続の命令と統合された場合、例外に直面すると、転送先レジスタZdを正しい値に設定するための演算を実行することができ、それによって、後に処理がアドレス♯A2に戻るとき、あたかも転送プレフィックス命令が既に完了したかのように、後続の命令FADDを実行することができる。例えば、転送プレフィックス命令を繰り返すか、または、転送プレフィックス転送命令が叙述されていない場合には、アーキテクチャ転送先レジスタZdがこの時点で以前に転送元アーキテクチャレジスタZs1にマッピングされていた物理レジスタにマッピングするように、単純にリネームテーブル42を更新することによって、転送プレフィックス命令がアーキテクチャ的に完了していることを保証することができる。
いくつかのシステムは、図6に示す手法または図7に示す手法に従って永続的に動作することができる。しかしながら、処理回路が、停止イベントに直面している現在の条件に応じて、転送プレフィックス命令のアドレス♯A1またはデータ処理命令のアドレス♯A2のいずれかとして復帰アドレスを記録する柔軟性を提供することが有用であり得る。例えば、復帰アドレス値は、転送プレフィックス命令と後続の命令とが最初に遭遇したときに統合されたか否かに依存してもよい。命令統合回路50がこれらの命令を統合した場合、転送がまだ完了しておらず、そのため、統合命令について発生している例外、割り込み、またはブレークポイントによって、復帰アドレスが、図6に示すように転送プレフィックス命令のアドレス♯A1に設定され得る。これにより、停止イベントが解決された後に処理が再開されたときに、転送が効果的に実行されることを保証する(統合されていない転送命令を使用することによって明示的に、または統合命令の結果の生成において暗黙的に)。
他方、最初にペアの命令が非統合で実行された場合、停止イベントが検出される時点までに、転送プレフィックス命令の転送は既に完了している可能性があり、したがって、転送命令を不必要に繰り返さないようにするために、図7に示す手法がより適切であり得る。したがって、復帰アドレスを設定する際にアドレスA1とアドレスA2との間で選択することを可能にすることにより、転送がまだ実行されていない場合には図6に示すような転送プレフィックス命令を繰り返すことのみが必要となるため、処理性能を改善することができる。
要約すると、直後の命令との統合が可能であることを知らせる転送プレフィックス命令を提供することによって、プログラムまたはコンパイラは、命令対のレジスタが一致するか否かを決定するために命令統合回路を必要とすることなく、安全に統合することができることを処理回路に示唆することができ、統合のオーバーヘッドが大幅に削減される。プログラムまたはコンパイラが命令を正しく使用した場合、直後の命令は、転送先レジスタおよび第1の転送元レジスタの両方を識別する単一のレジスタ指定子を有する破壊的データ処理命令であると予測され、転送プレフィックス命令の転送先レジスタは、後続の命令の転送先レジスタと同じである。この場合、統合回路は、これらの命令を統合して、2つのオペランドレジスタおよび結果レジスタを別個に識別する建設的データ処理命令を形成することができる。
特に、建設的命令は、以下のように指定されたレジスタで形成することができる。建設的命令の結果レジスタは、転送プレフィックス命令の転送先レジスタまたは直後の命令の転送先レジスタのいずれかに対応することができ、建設的命令の少なくとも2つのオペランドレジスタは、転送プレフィックス命令の転送元レジスタおよび直後のデータ処理命令の転送元レジスタの1つに対応して設定することができる。このアプローチでは、プログラマまたはコンパイラが、直後の命令が転送プレフィックス命令と同じ転送先レジスタを指定する破壊的データ処理命令であることを保証することを条件として、統合命令は、2つの転送プレフィックスおよびデータ処理命令を別々に実行するのと同じ結果を有することになる。ベクトル述語が使用される場合、統合命令の述語は、転送プレフィックスおよび直後の命令(プログラマ/コンパイラが命令を正しく使用した場合、同じであるはずである)のいずれかの述語に等しく設定することができる。
転送プレフィックス命令に加えて、第1のレジスタから第2のレジスタへデータ値をコピーするように処理回路を制御することができる少なくとも1つの他のタイプの命令が存在してもよい。例えば、他の命令は、上述したAND命令、OR命令、ADD命令、または専用MOV命令、または転送元オペランドの1つと等しい結果を与える任意の他の種類の命令であってもよい。したがって、典型的には、アーキテクチャ内に、レジスタ転送を既に達成することができる多くの命令が存在することになる。転送プレフィックス命令は、異なる命令符号化を用いて、そのような命令に加えて提供される。他の命令によって既に提供され得るレジスタ転送機能を提供するための専用の命令を提供することが有用であることは驚くべきことであると考えられ得る。しかしながら、これは、転送プレフィックス命令に対して異なる命令符号化を提供することによって、プログラマまたはコンパイラが、独立転送操作とは対照的に、統合建設的命令を形成するために、後続の破壊的命令に先行して転送することを意図するときを知らせることを可能にする。したがって、これは、統合に必要な様々な条件が満たされていることを処理回路がチェックする必要性を排除する。
転送プレフィックス命令は、加算などの特定のタイプのデータ処理命令に固有のものであってもよい。しかし、転送プレフィックス命令を、異なる処理動作に対応するデータ処理命令のクラスのいずれかと結合することは有益であり、その結果、いずれの特定の演算が直後の命令によって表されるかにかかわらず、一般に転送プレフィックスは破壊的命令と統合して、元の破壊的命令と同じ処理演算に対応する統合建設的命令を形成することができる。例えば、データ処理命令のクラスは、加算、減算、乗算、除算、乗加算、平方根、シフト、AND、OR、NOT、NAND、NOR、XORならびに浮動小数点演算およびインターリーブなどのような他のベクトル演算を含む様々な演算を含んでもよい。
転送プレフィックス命令を直後の命令と統合させるか否かの決定は、いくつかの実装では静的である可能性がある。したがって、転送プレフィックス命令が検出されたとき、いくつかの実施態様は常に、他の条件に関係なく、直後の命令とそれをマージすることができる。
しかし、他のシステムは、転送プレフィックス命令と直後の命令との間のレジスタ比較以外の少なくとも1つの基準に依存する命令を統合するか否かを動的に判定することができる。例えば、これらの他の基準は、直後の命令によってどのタイプの処理操作が実行されるか、転送プレフィックス命令および直後の命令が異なるキャッシュラインに保持されるか否か、およびそれらがアドレス空間の異なるページに対応するか否かを含んでもよい。
上記の例では、複数のデータ要素を含むオペランドを使用してベクトル処理をサポートするベクトル処理システムについて説明してきた。しかしながら、単一のデータ要素に対応するスカラデータ値を処理するスカラ処理システムに、同様の転送プレフィックス命令が導入されてもよい。この場合、述語値は提供されず、図5の異なる非アクティブレーン処理モードは提供されない。それ以外、スカラ転送プレフィックス命令は、上述のベクトル実施例と同じように、スカラデータ処理命令に先行することができる。
上述したように、ベクトルオペランドが処理されるとき、統合が可能なときを知らせるとともに、後続の演算の操作が、後続の命令の符号化を一切変更することなく修正されることを可能にするために、異なる非アクティブレーン処理モードに対応して異なる形式の転送プレフィックス命令を提供することができるため、転送プレフィックス命令は非常に有用であり得る。これは、異なる形式の叙述に対応するデータ処理命令の異なるバージョンを提供する必要がないため、命令セットアーキテクチャにおける符号化空間を節約する。
上記の実施形態は、転送プレフィックス命令と直後の命令との統合を論じている。命令対は、フェッチされた命令における単一の倍長命令として考えることもでき、これは、その後、別個の命令に分割するか、または、処理回路によって処理される単一の結合命令として転送することができる。これは、上述した統合手法と完全に同等である(命令統合回路によって実行される実際の動作は同じであり、唯一の違いは、元の命令を1つまたは2つの命令として見なすかの解釈の1つである)。したがって、いくつかの実施形態では、命令統合回路の命令を統合するか否かの決定は、実効的に、(倍長命令の2つの部分の間の任意のレジスタ比較とは無関係に)倍長命令を分割するか否かの決定であり得、特許請求の範囲はこのアプローチを包含する。
図8は、使用することができる仮想マシンの実施態様を示す。前述の実施形態は、関連技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実施するが、ハードウェア装置のいわゆる仮想マシン実施態様を提供することも可能である。これらの仮想マシン実施態様は、仮想マシンプログラム510をサポートするホストオペレーティングシステム520を実行するホストプロセッサ530上で実行される。通常、大規模で強力なプロセッサは、妥当な速度で実行する仮想マシンの実装を可能にする必要があるが、そのようなアプローチは、互換性または再利用の理由のために別のプロセッサに対してネイティブなコードを実行したいという要望がある場合などの特定の状況において正当化され得る。仮想マシンプログラム510は、仮想マシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されるアプリケーションプログラムインターフェースと同じアプリケーションプログラム500にアプリケーションプログラムインターフェースを提供する。したがって、上述したメモリアクセスの制御を含むプログラム命令は、仮想マシンハードウェアとの相互作用をモデル化するために、仮想マシンプログラム510を使用してアプリケーションプログラム500内から実行することができる。
本出願において、「〜ように構成されている」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または方法を意味する。例えば、装置は、規定の動作を提供する専用のハードウェアを有することができ、またはプロセッサもしくは他の処理装置が機能を実行するようにプログラムされてもよい。「〜ように構成されている」は、規定の動作を提供するために装置要素を何らかの方法で変更する必要があることを意味しない。
添付図面を参照して本発明の例示的な実施形態を詳細に説明したが、本発明はこれらの厳密な実施形態に限定されず、添付の特許請求の範囲によって規定される本発明の範囲および精神から逸脱することなく、様々な変更および修正が当業者によって実施され得ることが理解されるべきである。

Claims (30)

  1. 命令に応答してデータ処理を実行する処理回路と、
    転送プレフィックス命令と、データストアからフェッチされる直後の命令とを統合して、前記処理回路によって処理される統合データ処理命令を生成する命令統合回路と
    を備える装置であって、
    前記転送プレフィックス命令は、転送先レジスタと、前記転送先レジスタに少なくとも部分的にコピーされるべきデータ値を指定する転送元レジスタとを特定し、
    前記転送プレフィックス命令を検出することに応答して、前記命令統合回路は、前記転送プレフィックス命令の前記転送先レジスタが、前記直後の命令によって指定される任意のレジスタと同じレジスタであるか否かとは無関係に、前記転送プレフィックス命令および前記直後の命令を統合するべきか否かを決定するように構成されている、装置。
  2. 前記転送プレフィックス命令は、前記直後の命令が、所定の処理動作を少なくとも2つの転送元レジスタによって指定される少なくとも2つの転送元値に適用した結果に対応する結果値に転送先レジスタを設定されるべきであり、前記転送先レジスタおよび前記少なくとも2つの転送元レジスタのうちの1つが前記転送プレフィックス命令の前記転送先レジスタと同じである破壊的データ処理命令であると予測されることを示す、請求項1に記載の装置。
  3. 前記破壊的データ処理命令は、前記転送先レジスタと前記少なくとも2つの転送元レジスタのうちの1つの両方を識別する単一のレジスタ指定子を含む命令符号化を有する、請求項2に記載の装置。
  4. 前記統合データ処理命令は、前記少なくとも2つのオペランドレジスタによって指定される値に処理動作を適用した結果に対応する結果値に設定されるべき、少なくとも2つのオペランドレジスタおよび結果レジスタを別個に識別する建設的データ処理命令を含む、請求項1〜3のいずれか一項に記載の装置。
  5. 前記命令統合回路は、前記建設的データ処理命令を生成するように構成され、
    前記結果レジスタは、前記転送プレフィックス命令の前記転送先レジスタおよび前記直後の命令の転送先レジスタの一方に対応し、
    前記少なくとも2つのオペランドレジスタは、前記転送プレフィックス命令の前記転送元レジスタおよび前記直後の命令の少なくとも1つの転送元レジスタに対応する、請求項4に記載の装置。
  6. 前記転送プレフィックス命令は、第1のレジスタから第2のレジスタへデータ値をコピーするように前記処理回路を制御するための少なくとも1つの他のタイプの命令とは異なる命令符号化を有する、請求項1〜5のいずれか一項に記載の装置。
  7. 前記命令統合回路は、前記直後のデータ処理命令が、実行されるべき異なるタイプの処理動作に対応するデータ処理命令のクラスのいずれかである場合に、前記転送プレフィックス命令と前記直後のデータ処理命令とを統合させるように構成されている、請求項1〜6のいずれか一項に記載の装置。
  8. 前記転送プレフィックス命令を検出したことに応答して、前記命令統合回路は、前記転送プレフィックス命令の前記転送先レジスタが、前記直後のデータ処理命令によって指定される任意のレジスタと同じレジスタであるか否か以外の少なくとも1つの基準に応じて、前記転送プレフィックス命令と前記直後の命令とを統合するべきか否かを決定するように構成されている、請求項1〜7のいずれか一項に記載の装置。
  9. 前記少なくとも1つの基準は、
    前記直後の命令が、少なくとも2つの転送元値に対して所与の処理動作を実行するように前記処理回路を制御するデータ処理命令である場合、どのタイプの処理動作が前記直後の命令に対する前記所与の処理動作であるか、
    前記転送プレフィックス命令と前記直後の命令とが異なるキャッシュラインに保持されているか否か、および
    前記転送プレフィックス命令と前記直後の命令とがアドレス空間の異なるページに対応するか否か
    のうちの少なくとも1つを含む、請求項8に記載の装置。
  10. 前記転送プレフィックス命令および前記直後の命令は、単一のデータ要素を含むスカラデータ値を処理するためのスカラ命令を含む、請求項1〜9のいずれか一項に記載の装置。
  11. 前記転送プレフィックス命令および前記直後の命令は、複数のデータ要素を含むベクトルデータ値を処理するためのベクトル命令を含む、請求項1〜10のいずれか一項に記載の装置。
  12. 前記直後の命令が、結果値を生成するために少なくとも2つの転送元値に対して所与の処理操作を実行するように前記処理回路を制御するデータ処理命令である場合、前記直後の命令は、前記結果値のいずれのデータ要素が、前記少なくとも2つの転送元値の対応するデータ要素に依存する値に設定されるべきアクティブ要素、または、前記少なくとも2つの転送元値に依存しない値に設定されるべき非アクティブ要素であるかを示す述語値を識別する、請求項11に記載の装置。
  13. 前記命令統合回路は、前記転送プレフィックス命令が前記直後のデータ処理命令と同じ述語値を識別するか否かとは無関係に、前記転送プレフィックス命令と前記直後の命令とを統合させるべきか否かを判定するように構成されている、請求項12に記載の装置。
  14. 前記転送プレフィックス命令は、複数のタイプの転送プレフィックス命令のうちの1つを含み、
    前記命令統合回路が前記転送プレフィックス命令を前記直後の命令に統合するとき、前記命令統合回路は、どのタイプの転送プレフィックス命令が前記直後の命令と統合されたかに応じて選択される非アクティブレーン処理モードに従って、前記結果値の前記非アクティブ要素を決定するように前記処理回路を制御するための前記統合データ処理命令を生成するように構成されている、請求項12および13のいずれか一項に記載の装置。
  15. 前記命令統合回路は、前記直後のコードの符号化とは無関係に選択される前記非アクティブレーン処理モードによって前記結果値の前記非アクティブ要素を決定するように前記処理回路を制御するための前記統合データ処理命令を生成するように構成されている、請求項14に記載の装置。
  16. 前記転送プレフィックス命令が叙述されていないタイプの転送プレフィックス命令である場合、前記命令統合回路は、前記転送元レジスタの対応する要素の値を有する前記結果値の前記非アクティブ要素を決定するように前記処理回路を制御するための前記統合データ処理命令を生成するように構成されている、請求項14および15のいずれか一項に記載の装置。
  17. 前記転送プレフィックス命令が叙述されていないタイプの転送プレフィックス命令であり、前記命令統合回路が前記転送プレフィックス命令を前記直後の命令と統合させないと判断した場合、前記処理回路は、前記転送元レジスタからのデータ全体を、前記転送先レジスタにコピーする役割を担う、請求項16に記載の装置。
  18. 前記転送プレフィックス命令がマージタイプの転送プレフィックス命令である場合、前記命令統合回路は、前記転送先レジスタの対応する要素の以前の値に依存する値を有する前記結果値の前記非アクティブ要素を決定するように前記処理回路を制御するための前記統合データ処理命令を生成するように構成されている、請求項14〜17のいずれか一項に記載の装置。
  19. 前記マージタイプの転送プレフィックス命令は、前記転送先レジスタのどの要素がアクティブ要素または非アクティブ要素かを識別する転送述語値を指定し、
    前記転送プレフィックス命令が前記マージタイプの転送プレフィックス命令であり、前記命令統合回路が前記転送プレフィックス命令を前記直後の命令と統合させないと決定した場合、前記処理回路は、前記転送プレフィックス命令に応答して、前記転送先レジスタのアクティブ要素を、前記転送元レジスタの対応する要素の値に設定し、前記転送先レジスタの非アクティブ要素の以前の値を保持する役割を担う、請求項18に記載の装置。
  20. 前記転送プレフィックス命令がクリアタイプの転送プレフィックス命令である場合、前記命令統合回路は、所定の値にクリアされる値を有する前記結果値の前記非アクティブ要素を決定するように前記処理回路を制御するための前記統合データ処理命令を生成するように構成されている、請求項14〜19のいずれか一項に記載の装置。
  21. 前記クリアタイプの転送プレフィックス命令は、前記転送先レジスタのどの要素がアクティブ要素または非アクティブ要素かを識別する転送述語値を指定し、
    前記転送プレフィックス命令が前記クリアタイプの転送プレフィックス命令であり、前記命令統合回路が前記転送プレフィックス命令を前記直後の命令と統合させないと決定した場合、前記処理回路は、前記転送プレフィックス命令に応答して、前記転送先レジスタのアクティブ要素を、前記転送元レジスタの対応する要素の値に設定し、前記転送先レジスタの非アクティブ要素を前記所定の値にクリアする役割を担う、請求項20に記載の装置。
  22. 前記処理回路は、統合されていないデータ処理命令の、転送先レジスタおよび転送元レジスタの両方について同じレジスタを識別して、前記同じレジスタの対応する要素の以前の値に応じた値に設定される非アクティブ要素を有する結果値を生成する役割を担う、請求項12〜21のいずれか一項に記載の装置。
  23. 前記直後の命令または前記統合データ処理命令によってトリガされる停止イベントに応答して、前記処理回路が、前記停止イベントの解決後に処理を再開するための復帰アドレスとして、前記転送プレフィックス命令のアドレスを記録するように構成されている、請求項1〜22のいずれか一項に記載の装置。
  24. 前記直後の命令または前記統合データ処理命令によってトリガされる停止イベントに応答して、前記処理回路が、前記停止イベントの解決後に処理を再開するための復帰アドレスとして、前記直後の命令のアドレスを記録し、前記転送先レジスタのデータが前記転送プレフィックス命令の実行結果と等価であることを保証するように構成されている、請求項1〜22のいずれか一項に記載の装置。
  25. 前記直後の命令または前記統合データ処理命令によってトリガされる停止イベントに応答して、前記処理回路が、前記命令統合回路が前記転送プレフィックス命令および前記直後の命令を統合したか否かに応じて、前記停止イベントの解決後に処理を再開するための復帰アドレスとして、前記転送プレフィックス命令のアドレスまたは前記直後の命令のアドレスを記録すべきか否かを選択するように構成されている、請求項1〜22のいずれか一項に記載の装置。
  26. 前記命令統合回路が前記転送プレフィックス命令と前記直後の命令とを統合したとき、前記処理回路は、前記転送プレフィックス命令の前記アドレスを前記復帰アドレスとして記録するように構成され、前記命令統合回路が前記転送プレフィックス命令と前記直後の命令とを統合させなかったとき、前記処理回路は前記直後の命令の前記アドレスを前記復帰アドレスとして記録するように構成される、請求項25に記載の装置。
  27. 前記停止事象は、例外事象、
    割り込み、および
    ブレークポイント
    のうちの1つを含む、請求項23〜26のいずれか一項に記載の装置。
  28. データ処理方法であって、
    処理回路によって処理するための、データストアからフェッチされる命令の中から、転送先レジスタと、前記転送先レジスタに少なくとも部分的にコピーされるべきデータ値を指定する転送元レジスタとを特定する転送プレフィックス命令を検出するステップと、
    前記処理回路によって処理されるべき統合データ処理命令を生成するために、転送プレフィックス命令を直後の命令と統合すべきか否かを決定するステップとを含み、
    前記転送プレフィックス命令が検出されるとき、前記決定するステップは、前記転送プレフィックス命令の前記転送先レジスタが、前記直後の命令によって指定される任意のレジスタと同じレジスタであるか否かとは無関係に、前記転送プレフィックス命令および前記直後の命令を統合するべきか否かを決定する、データ処理方法。
  29. 命令に応答してデータ処理を実行するための手段と、
    転送プレフィックス命令と、データストアからフェッチされる直後の命令とを統合して、処理回路によって処理される統合データ処理命令を生成するための手段と
    を備える装置であって、
    前記転送プレフィックス命令は、転送先レジスタと、前記転送先レジスタに少なくとも部分的にコピーされるべきデータ値を指定する転送元レジスタとを特定し、
    前記転送プレフィックス命令を検出することに応答して、前記統合するための手段は、前記転送プレフィックス命令の前記転送先レジスタが、前記直後の命令によって指定される任意のレジスタと同じレジスタであるか否かとは無関係に、前記転送プレフィックス命令および前記直後の命令を統合するべきか否かを決定するように構成されている、装置。
  30. データ処理装置によって実行されると、請求項1〜27のいずれか一項に記載の装置に対応する命令実行環境を提供する仮想マシンを提供する、コンピュータ可読記憶媒体に格納されたコンピュータプログラム。
JP2018517732A 2015-10-14 2016-09-14 転送プレフィックス命令 Active JP6807383B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1518156.3 2015-10-14
GB1518156.3A GB2543304B (en) 2015-10-14 2015-10-14 Move prefix instruction
PCT/GB2016/052838 WO2017064456A1 (en) 2015-10-14 2016-09-14 Move prefix instruction

Publications (2)

Publication Number Publication Date
JP2018534671A JP2018534671A (ja) 2018-11-22
JP6807383B2 true JP6807383B2 (ja) 2021-01-06

Family

ID=55131012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018517732A Active JP6807383B2 (ja) 2015-10-14 2016-09-14 転送プレフィックス命令

Country Status (9)

Country Link
US (1) US10795675B2 (ja)
EP (1) EP3362889B1 (ja)
JP (1) JP6807383B2 (ja)
KR (1) KR102629722B1 (ja)
CN (1) CN108139908B (ja)
GB (1) GB2543304B (ja)
IL (1) IL258035B (ja)
TW (1) TWI740844B (ja)
WO (1) WO2017064456A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10061580B2 (en) 2016-02-25 2018-08-28 International Business Machines Corporation Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
US10684856B2 (en) * 2017-07-11 2020-06-16 International Business Machines Corporation Converting multiple instructions into a single combined instruction with an extension opcode
US11150908B2 (en) * 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
JP7183657B2 (ja) * 2018-09-21 2022-12-06 日本電気株式会社 プロセッサ、情報処理方法、プログラム
US11036510B2 (en) * 2018-10-11 2021-06-15 Arm Limited Processing merging predicated instruction with timing permitting previous value of destination register to be unavailable when the merging predicated instruction is at a given pipeline stage at which a processing result is determined
CN111414199B (zh) * 2020-04-03 2022-11-08 中国人民解放军国防科技大学 一种指令融合的实现方法及装置
US11119777B1 (en) 2020-04-22 2021-09-14 International Business Machines Corporation Extended prefix including routing bit for extended instruction format

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303358A (en) * 1990-01-26 1994-04-12 Apple Computer, Inc. Prefix instruction for modification of a subsequent instruction
TW334546B (en) * 1996-03-18 1998-06-21 Hitachi Ltd Data processor
US20050138330A1 (en) * 2003-12-23 2005-06-23 Maxim Integrated Products, Inc. MAXQ microcontroller
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7958181B2 (en) * 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
US8850164B2 (en) * 2010-04-27 2014-09-30 Via Technologies, Inc. Microprocessor that fuses MOV/ALU/JCC instructions
CN101957743B (zh) * 2010-10-12 2012-08-29 中国电子科技集团公司第三十八研究所 并行数字信号处理器
EP2508980B1 (en) * 2011-04-07 2018-02-28 VIA Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9329869B2 (en) * 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9195466B2 (en) 2012-05-16 2015-11-24 Qualcomm Incorporated Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9477476B2 (en) * 2012-11-27 2016-10-25 Qualcomm Incorporated Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9268572B2 (en) * 2012-12-11 2016-02-23 International Business Machines Corporation Modify and execute next sequential instruction facility and instructions therefor
CN107562444B (zh) * 2012-12-26 2020-12-18 英特尔公司 合并相邻的聚集/分散操作
US9672037B2 (en) * 2013-01-23 2017-06-06 Apple Inc. Arithmetic branch fusion
US9886277B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
GB2521019B (en) * 2014-05-27 2016-05-25 Imagination Tech Ltd Decoding instructions that are modified by one or more other instructions
US10394568B2 (en) * 2015-09-30 2019-08-27 International Business Machines Corporation Exception handling for applications with prefix instructions
US20170090922A1 (en) * 2015-09-30 2017-03-30 Futurewei Technologies, Inc. Efficient Instruction Pair for Central Processing Unit (CPU) Instruction Design

Also Published As

Publication number Publication date
KR102629722B1 (ko) 2024-01-26
US20180267798A1 (en) 2018-09-20
GB2543304B (en) 2020-10-28
GB201518156D0 (en) 2015-11-25
CN108139908B (zh) 2022-07-12
GB2543304A (en) 2017-04-19
IL258035A (en) 2018-05-31
EP3362889B1 (en) 2021-04-21
TW201723809A (zh) 2017-07-01
WO2017064456A1 (en) 2017-04-20
CN108139908A (zh) 2018-06-08
US10795675B2 (en) 2020-10-06
IL258035B (en) 2021-05-31
KR20180067583A (ko) 2018-06-20
JP2018534671A (ja) 2018-11-22
EP3362889A1 (en) 2018-08-22
TWI740844B (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
JP6807383B2 (ja) 転送プレフィックス命令
US8386754B2 (en) Renaming wide register source operand with plural short register source operands for select instructions to detect dependency fast with existing mechanism
JP5808348B2 (ja) マシン状態に基づいた命令の分割
US9081564B2 (en) Converting scalar operation to specific type of vector operation using modifier instruction
US9804851B2 (en) Operand size control
US6230259B1 (en) Transparent extended state save
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
TW201741867A (zh) 記憶體複製指令、處理器、方法及系統
EP3329361B1 (en) Vector operand bitsize control
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
KR19990082747A (ko) 압축기억된십진수나눗셈에대한전문밀리코드명령
KR19990082748A (ko) 번역및테스트를위한전문밀리코드명령
JP6882320B2 (ja) ベクトル命令の処理
US11086626B2 (en) Circuitry and methods
US20030084272A1 (en) Handling problematic events in a data processing apparatus
JP7377208B2 (ja) データ処理
US20140365751A1 (en) Operand generation in at least one processing pipeline
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
KR19990082750A (ko) 전문업데이트및브랜치명령을이용하는밀리코드플래그
JPH04287231A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190906

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201207

R150 Certificate of patent or registration of utility model

Ref document number: 6807383

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250