JP6009608B2 - 条件付き命令が無条件で出力を提供するシステム及び方法 - Google Patents

条件付き命令が無条件で出力を提供するシステム及び方法 Download PDF

Info

Publication number
JP6009608B2
JP6009608B2 JP2015080190A JP2015080190A JP6009608B2 JP 6009608 B2 JP6009608 B2 JP 6009608B2 JP 2015080190 A JP2015080190 A JP 2015080190A JP 2015080190 A JP2015080190 A JP 2015080190A JP 6009608 B2 JP6009608 B2 JP 6009608B2
Authority
JP
Japan
Prior art keywords
instruction
register
condition
conditional instruction
value
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
JP2015080190A
Other languages
English (en)
Other versions
JP2015164048A (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2015164048A publication Critical patent/JP2015164048A/ja
Application granted granted Critical
Publication of JP6009608B2 publication Critical patent/JP6009608B2/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

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

Description

本発明は、一般的には、プロセッサ分野に関するものである。本発明は、より具体的には、条件が満たされていない場合は出力を提供しないように構成された条件付き命令を実行するシステム及び方法に関するものである。
マイクロプロセッサは、非常に様々な用途において計算上のタスクを実行する。マイクロプロセッサの設計における1つの共通目標は、ソフトウェアの発展を通じての動作の高速化及び/又は機能増加を考慮した性能の向上である。現代の多くのプロセッサは、各々が複数の実行ステップを有する逐次命令が実行の際にオーバーラップするパイプライン型アーキテクチャを採用している。より高い命令上のスループットを達成させるためには、命令がパイプライン内を連続的に流れるべきである。パイプライン内において命令をストールさせるいずれの状況も、命令のスループットに対して、そしてその結果としてプロセッサの性能に対して、悪影響を及ぼすことになる。
命令は、メモリから入手されたデータに基づいて動作し、その結果をメモリに書き込む。現代のプロセッサは、幾つかの高速かつ高価なメモリ素子、例えばレジスタ、を最高レベルにおいて具備する階層メモリ構造を利用する。メモリ階層は、それよりも低速であるが低コストであるメモリ技術、例えばキャッシュメモリ(SRAM)、ソリッドステート主メモリ(DRAM)、及びディスク(磁気又は光学媒体)、をより下位のレベルにおいて具備する。ポータブル電子デバイス等のアプリケーションに関しては、DRAMは、しばしばメモリ階層の最低レベルである。
多くのプロセッサ命令セットアーキテクチャ(ISA)は、命令間でのデータのやり取り、及びメモリとの間でのデータの受け渡しのために用いられる構成されたレジスタである一組の汎用レジスタ(GPR)を含む。データに関する論理演算及び算術演算を行う命令は、指定されたGPRからオペランドを読み取り、指定されたGPRにその結果を書き込む。同様に、メモリアクセス命令は、メモリに書き込むべきデータをGPRから読み取り、メモリから読み取られたデータをGPRに書き込む。コンパイラは、ソース及びターゲットのGPR識別子を各命令に割り当て、さらに適切な結果が計算されるように命令に順序を付ける。すなわち、命令は、より早い命令が指定されたGPRに結果を格納するように指示し、より遅い命令がさらなる処理のためにこれらのGPRを読み取ってオペランドを入手するように指示することによって正確な結果を保証する「プログラム上の順序で」手配される。
しかしながら、多くのプロセッサは、「アウトオブオーダーで」、すなわち命令のプログラム上の順序以外の順序で命令を実行する。アウトオブオーダーでの実行が生じる事例の一例は、2つ以上の命令を異なる実行パイプラインにおいて並行して実行することができるスーパースカラー設計の場合である。命令が1つのパイプラインにおいてストールした場合は、後続する命令を直ちに実行するために空いているパイプラインに急送することができる。アウトオブオーダーでの実行は、スーパースカラー設計に限定されておらず、単命令発行(single-issue)設計においても発生する可能性がある。いずれの場合においても、アウトオブオーダーでの実行は、一定の問題を引き起こす。
独立した命令は、原プログラム上の順序に関わりなく実行することができる。しかしながら、多くの命令は、「ハザード」と呼ばれるその他の命令への依存性を呈する。データハザードは、命令の順序再設定(例えば、アウトオブオーダーな命令の発行に起因する命令の順序再設定)が依存性に関わっているオペランドへのアクセス順序を変えるときに発生する。該当するデータハザードは、3つの型に分類することができる。次に、プログラム上の順序でjの前にiが生じる2つの命令i及びjについて検討する。
1つの型のデータハザードは、リードアフターライト(RaW)ハザードである。このハザードは、iがjに関するオペランドソースであるターゲットレジスタに書き込むときに生じる。iがレジスタに書き込む前にjが該レジスタの読み取りを試みた場合は、jは、旧値を不適切に取り出す。ライトアフターライト(WaW)ハザードは、両方の命令i及びjが同じターゲットレジスタに書き込み、iによって書き込まれる前にjがそのターゲットへの書き込みを試みるときに発生する。この場合は、これらの書き込みは誤った順序で実行され、jによって書き込まれた値ではなくiによって書き込まれた値をレジスタ内に残す。ライトアフターリード(WaR)ハザードは、iに関するオペランドソースであるターゲットレジスタをiが読み取る前にjが前記レジスタに書き込んだときに発生する。このハザードは、前の命令によって書き込まれた正確な値ではなくjによって書き込まれた新しい値を不正確にiに取り出させる。リードアフターリード(RaR)事例はデータハザードではなく、読み取りはあらゆる順序で行えることに注目すること。
例えば、以下の代表的なコードフラグメントを検討すること。
AND r2,r10,r12 r10の内容とr12の内容との論理ANDをとり、その結果をr2に入れる
ST r2,mem r2の内容をメモリ記憶場所memに格納する
ADD r2,r5,r6 r5及びr6の内容を加算し、合計をr2に入れる
STは、ANDに対するRaW依存性を有する。このデータハザードは、これらの命令をプログラム上の順序で実行するように要求する。さらに、ADDは、STへのRaW依存性を呈する。意味論的には、ADDは、STがr2の読み取りを完了させるまでその結果をr2に書き込むことができない。その他の場合は、STは、ANDの結果を書き込むべきときにADDの結果をメモリに書き込む。WaR及びWaWデータハザードの場合は、1つの命令から次の命令にデータが渡されていないため、真のデータ依存性ではなく名前上の依存性である(唯一の依存性は、他方の命令がこれから読み取るか又は既に書き込んでいるレジスタの内容を壊さないことである)。名前上の依存性は、レジスタ名変更と呼ばれる技術によって解決することができる。
レジスタ名変更システムにおいては、各々が物理レジスタ番号(PRN)を有する大きな一組の物理レジスタが、論理レジスタ番号(LRN)をこれらの物理レジスタに動的に割り当てることによって管理される。LRNは、例えば、論理GPR識別子(r0、r1、r2、...)を具備することができる。好ましいことに、物理レジスタ数は、LRN数、又は構成されたGPR数よりも多い。名前変更テーブル(RT)は、LRNとPRNとの間における動的マッピングを維持する。
パイプライン内の早期において(例えば、復号段階において又は復号段階に続いて)、命令のレジスタアクセス上の特徴が検査され、該命令と関連するLRN(例えば、GPR識別子)がRTを介してPRNに変換される。レジスタに書き込む命令に関しては、新しいLRN−PRNマッピングがRTに記入されてLRNを未使用のPRNにマッピングし、このため、書き込みは、関連づけられた物理レジスタに向けられる(すなわち、LRNの「名前が変更される」)。レジスタを読み取る命令は、RTルックアップを介してそのLRNをPRNに変換する。PRNは、パイプラインにおける有効期間全体を通じてレジスタ読み取り命令と関連づけられた状態を維持する。
レジスタ書き込み命令は、同じLRNに書き込まれている前の値を「壊さない」。(LRNは、新しいPRNに名前が変更されるため)書き込みは、新しい未使用のPRNが対象になる。プログラム上の順序で書き込み命令に後続する命令は、書き込まれた値を得るために同じPRNに向けられる。プログラム上の順序で書き込み命令に先行する命令は、(名前変更作業前に)RTによって異なる物理レジスタにマッピングされており、その物理レジスタへのアクセスを続ける。従って、所定のLRNを書き込む命令は、前の値をLRN(WaR)から読み取る命令又は前の結果をLRN(WaW)に書き込む命令に先行して実行することができる。この方法により、WaR及びWaWの名前ハザードは回避される。
プロセッサが例外、誤って予測された分岐等から回復するのを可能にするため、データが書き込まれる物理レジスタを(さらなる名前変更のために)利用可能であるかどうかに対して制限が課せられる。例えば、LRNは、PRNに名前を変更することができ、第1の命令の結果はLRNに書き込まれ、従ってPRNに書き込むことができる。第2の命令は、PRNに名前が変更されたLRNにデータを書き込むことができ、従って、PRNは、第2の命令の結果を格納する。この場合は、LRNは、第2の命令がコミットするまで(すなわち、該命令及び該命令に先行する全命令の完全な例外検査が実施済みであり、実行を完了させることが保証されるまで)は、他のLRNの名前をPRNに変更するために解放されない。さらに、LRNを参照する第1と第2の命令の間の全命令(すなわち、PRNを読み取る全命令)が、PRNの読み取りを完了させていなければならないか又は最終的にその値を受け取ることが保証されなければならない。その時点で初めてPRNを解放して他のLRNをその名前に変更するために利用可能になる。
上記のコードセグメント例に戻り、AND命令が復号され、LRN r2への書き込みが検出されたときには、RTにおいて物理レジスタ、例えばPRN xにLRN r2が割り当てられる。ANDの結果は、物理レジスタxに書き込まれる。ST命令が復号されるときには、LNR r2からの読み取りが検出され、RTにアクセスされる。LRN r2はPRN xにマッピングされ、このため、ST命令は、物理レジスタxを読み取り(従って、ANDによって書き込まれた結果を入手する)。ADD命令が復号され、LRN r2への書き込みが検出されたときには、LRN r2は、異なる物理レジスタ、例えばPRN yに再度割り当てられる−すなわち「名前が変更される」。LRN r2を読み取る後続の命令は、RTによって物理レジスタyに向けられる。ADDはSTの前に実行でき、STは依然としてPRN xから正確な結果を取り出し、それによってWARハザードが解決されることに注目すること。
レジスタ名変更システムの1つの問題は、条件付き命令の実行から発生する。条件付き命令は、条件が満たされている場合のみに算術演算又は論理演算を行ってその結果を書き込むように構成されている命令である。条件が評価されるまでは(この評価は、パイプラインの深部においてしばしば行われる)、条件付き命令がレジスタに書き込むかどうか決定することができない。条件が満たされていない場合は、条件付き命令は、実効的に、GPRを変更しないNOP、すなわち非演算命令である。条件付き命令がレジスタに書き込むかどうか不確実であるため、後続する命令は、条件が評価されるまでは条件付き命令への依存性が存在するかどうか確認することができない。例えば、以下のコードフラグメントについて検討する。
CMP r1,r12 r1及びr12の内容を比較する(比較結果を反映させるようにコード又はフラグを設定する)
AND r2,r10,r12 r10の内容をr12の内容に論理ANDし、その結果をr2に入れる
SUBEQ r2,r7,r8 前の比較が等しい場合は、r8の内容をr7から減じてその結果をr2に入れる。等しくない場合は、r2は変更されない。
ST r2,mem r2の内容をメモリ記憶場所memに格納する
ADD r2,r5,r6 r5及びr6の内容を加算し、合計をr2に入れる。
この例においては、STは、EQ条件が評価されまでは、SUBEQに関するデータハザードを有するかどうか確認することができない。すなわち、STは、AND又はSUBEQ命令によってr2に書き込まれるかどうかを決定することができない。意味論的には、及び実際には、常にプログラム上の順序で命令を出すプロセッサにおいては、AND及びSUBEQの両方が常に実行され、SUBEQは、r2レジスタの値を更新できる場合とできない場合があり、STは、このことに「留意」せず、単にr2の内容を格納する。
しかしながら、アウトオブオーダーな設計においては、プロセッサは、STがAND又はSUBEQのいずれに依存するかを決定しなければならない。
特に、レジスタ名変更システムにおいては、プロセッサは、EQ条件が評価されてSUBEQが実際にr2に書き込むかどうかを決定することができるようになるまで、レジスタ名変更段階の早期においてパイプラインをストールさせなければならない。条件はパイプラインの深部において評価されるため、このことは望ましくないパイプラインのストールを引き起こす。代替として、RTは、SUBEQ命令に関して推測的にr2の名前を新しいPRNに変更することができる。この場合は、RTは、EQ条件が満たされない場合は名前変更を取り消す、すなわち、前に名前が付けられたPRNへのLRN r2のマッピングを復元させるためのメカニズムを有していなければならない。このメカニズムが必要な理由は、条件が満たされない場合は、SUBEQが新しいPRNを実際に書き込まず、RTが定義されていないデータを含む物理レジスタへのLRN r2のマッピングを行うことになるためである。この追加の回路は、RTにおける複雑さを増大させて電力消費量を増大させる。
当業において知られており、その出力が条件評価に依存する1つの型の命令は、条件付き選択である。条件付き選択命令は、常に(すなわち無条件で)結果を書き込むために命令セットアーキテクチャによって定義される。出力が書き込まれるどうかではなく、書き込まれた値のみが条件評価に依存する。例えば、条件付き選択ADD命令 ADDSEQ
r2、r3、r4、r5は、EQ条件が満たされている場合にr4とr5の内容を加算してその結果をr2に入れることができる。EQ条件が満たされていない場合は、前記命令は、r3の内容をr2に入れる。この命令は、アーキテクチャ的に及び意味論的に、代替結果(この例においてはr3の読み取り)に関する明示の入力を有する。次に、出力は、条件評価に依存して、演算結果又は代替結果の間で選択する。
条件付き命令は、条件付き選択とは異なる。本明細書において用いられる「条件付き命令」は、条件が満たされている場合に演算の結果をターゲットに書き込み、条件が満たされていない場合はターゲットに書き込まないように構成されている命令である。すなわち、条件が満たされていない場合は、条件付き命令は、実効的にNOPに変換し、レジスタへの書き込みを行わず、オペランドフォワーディング環境においてどのような結果もフォワードしない。条件が評価される(この評価はパイプライン内の遅い段階でしばしば生じる)までレジスタ名変更段階(一般的にはパイプラインの早い段階で生じる)においてプロセッサにパイプラインをストールさせるのは、条件付き命令が出力を提供するかどうかがまさにこのように不確実なことである。条件付き命令が事実上のNOPであるかどうかがわかっているときのみに、後続する命令のデータ依存性を解決することができる。この型の条件付き命令は、現代のプロセッサISAにおいては一般的である。
1つ以上のオペランドを入力として受け取り、条件が満たされている場合はオペランドに関して行われた演算の結果をターゲットに出力し、条件が満たされていない場合は出力を提供しないように構成された条件付き命令が、前記ターゲットに対して無条件で出力を提供するような形で実行される。前記条件付き命令は、前記ターゲットの前の値(すなわち、前記ターゲットを更新させた前記条件付き命令に先行する直近の命令によって生成された値)を入手する。前記条件が評価される。前記条件が満たされている場合は、オペランドに関して行われた演算の結果が前記ターゲットに出力される。前記条件が満たされていない場合は、前記前値が前記ターゲットに出力される。後続する命令は、条件評価前には、(レジスタに書き込まれるか又は命令にフォワードされるかにかかわらず)オペランドソースとして前記ターゲットに依存することができる。
一実施形態は、パイプラインプロセッサ内における条件付き命令であって、1つ以上のオペランドを入力として受け取り、条件が満たされている場合はオペランドに関して行われた演算の結果をターゲットに出力し、条件が満たされていない場合は出力を提供しないように構成された条件付き命令、を実行する方法に関するものである。1つ以上のオペランド値及び前記ターゲットの前値が受け取られ、条件が評価される。前記条件が満たされている場合は、オペランド値に関する演算が行われて結果値が生成され、前記結果が前記ターゲットに出力される。前記条件が満たされていない場合は、前記の前ターゲット値が前記ターゲットに出力される。
他の実施形態は、論理レジスタを物理レジスタに動的にマッピングするレジスタ名変更システムを採用するパイプラインプロセッサにおいて、条件が満たされている場合は論理ターゲットレジスタに演算結果を書き込み、前記条件が満たされていない場合はいずれのレジスタにも書き込まないように構成された条件付き命令を実行する方法に関するものである。前記論理ターゲットレジスタと関連づけられた第1の物理レジスタから第1の値が読み取られる。前記論理ターゲットレジスタの名前が第2の物理レジスタに変更される。
条件が評価される。前記条件が満たされている場合は、演算が行われて結果値が生成され、前記結果値が前記第2の物理レジスタに書き込まれる。前記条件が満たされていない場合は、前記第1の値が前記第2の物理レジスタに書き込まれる。
他の実施形態は、条件が満たされている場合は演算の結果を論理ターゲットレジスタに書き込み、条件が満たされていない場合はいずれのレジスタにも書き込まないように構成された条件付き命令を実行する方法に関するものである。前記方法は、前記論理ターゲットレジスタと関連づけられた第1の物理レジスタから前の値を読み取ることを具備する。
他の実施形態は、条件が満たされている場合は演算の結果を論理ターゲットレジスタに書き込み、条件が満たされていない場合はいずれのレジスタにも書き込まないように構成された条件付き命令を実行する方法に関するものである。前記方法は、前記論理ターゲットレジスタに無条件で値を書き込むことを具備する。
他の実施形態は、複数の物理レジスタと、論理レジスタ識別子を動的にこれらの物理レジスタと関連づけるために動作可能な名前変更テーブルと、を含むプロセッサに関するものである。前記プロセッサは、プログラム上の順序でない順序で命令を実行するために動作可能な命令実行パイプラインも含む。前記パイプラインは、条件の評価前に、条件付き命令に関するターゲットとして及び前記条件付き命令への条件付き依存性を有する命令に関するオペランドソースとして無条件で物理レジスタを割り当てるためにさらに動作可能である。前記条件付き命令は、条件が満たされている場合は演算の結果をターゲットに書き込み、前記条件が満たされていない場合はターゲットに書き込まないように構成されている。
プロセッサの機能ブロック図である。 条件付き命令を実行する方法を描いた流れ図である。 条件付き命令の出力決定を描いた機能ブロック図である。
図1は、プロセッサ10の機能ブロック図である。プロセッサ10は、制御論理14に従って命令実行パイプライン12において命令を実行する。パイプライン12は、12a及び12b等の複数の並列パイプラインを有するスーパースカラー設計であることができる。パイプライン12a、12bは、パイプ段階において構成された様々なレジスタ又はラッチ16と、1つ以上の算術論理演算装置(ALU)18と、を含む。名前変更レジスタファイル(RRF)20は、構成された汎用レジスタ(GPR)の数を超える非常に多数の物理レジスタを提供する。RRF20内のレジスタは、プロセッサメモリ階層の最上層を具備し、命令に関する主オペランドソース及び行先ターゲットとして機能する。RRF20には、論理GPR識別子をRRF20内の物理レジスタと動的に関連づける名前変更テーブル(RT)21が関連づけられている。
パイプライン12a、12bは、命令キャッシュ(I−キャッシュ)22から命令をフェッチし、メモリのアドレッシング及び許可は、命令側変換ルックアサイドバッファ(ITLB)24によって管理される。データは、データキャッシュ(ID−キャッシュ)26からアクセスされ、メモリのアドレッシング及び許可は、主変換ルックアサイドバッファ(TLB)28によって管理される。様々な実施形態においては、ITLBは、TLBの一部分のコピーを具備することができる。代替として、ITLB及びTLBは、統合することができる。同様に、プロセッサ10、I−キャッシュ22及びD−キャッシュ26の様々な実施形態は、統合または統一することができる。I−キャッシュ22及び/又はD−キャッシュ26におけるミスは、バス31を介して通信するメモリインタフェース30の制御下で、主(オフチップ)メモリ32へのアクセスを引き起こす。
プロセッサ10は、様々な周辺装置36へのアクセスを制御する入力/出力(I/O)インタフェース34を含むことができる。当業者は、プロセッサ10の様々な変形が可能であることを認識するであろう。例えば、プロセッサ10は、Iキャッシュ又はDキャッシュのいずれか又は両方に関する第2レベル(L2)のキャッシュを含むことができる。
さらに、プロセッサ10において描かれている機能ブロックのうちの1つ以上を特定の実施形態から省くことができる。
1つ以上の実施形態により、条件付き命令がレジスタに書き込むかどうか不確実であることは−この不確実性は、条件が評価されるまで解決されない−、パイプライン内におけるストールを引き起こさない。前記不確実性は、ターゲットレジスタに常に(無条件で)書き込む条件付き命令によって取り除かれる。ターゲットレジスタに書き込まれる値は、条件評価に依存する。条件付き命令は、自己のターゲットの前値(すなわち、前記ターゲットを更新させた条件付き命令に先行する直近の命令によって生成された値)を読み取り、条件評価に基づき、前記前値(条件が満たされていない場合)又は演算結果(条件が満たされている場合)をターゲットに書き込む。この方法により、条件付き命令に後続する命令は、条件が評価されるのを待たずに、自己のオペランドのソース−条件付き命令のターゲット−が保証される。特に、レジスタ名変更システムは、条件評価後における正確な値(条件付き演算の結果又は前命令又はメモリへのアクセスの結果)を含むPRNに依存して条件付き命令のターゲットLRNの名前をPRNに変更することができる。
条件付き命令を実行する方法の一実施形態が、図2において流れ図の形で描かれている。条件付き命令は、ターゲットの前値を入力する(ブロック40)。この入力は、命令に割り当てられたターゲットLRN(例えば、GPR識別子)を読み取ることを具備することができ、このことは、レジスタ名変更が採用されている場合は、条件付き命令が復号されるときにRTがLRNをマッピングする先であるPRNを読み取ることに相当する。代替として、オペランドフォワーディング動作においては、ターゲットの前値を入力することは、前命令の出力を直接入手することを具備することができる。いずれの場合においても、前値は、前命令又はメモリアクセス動作の結果である。条件付き命令は、本発明の命令実行方法に起因して前値を読み取り、前値は、条件付き命令への構成されたオペランドではない。ターゲットの前値を読み取ることは、図2では方法における第1のステップとして描かれているが、必ずしも必要であるわけではない。ターゲットの前値は、ターゲットの論理識別子の名前変更前のあらゆる時点において、さらには、前値が(例えば、メモリアクセス動作等から)条件付き命令にフォワードされる場合は名前変更後においてさえも読み取ることができる。
条件付き命令に該当する条件が評価される(ブロック42)。この評価は、実行段階等のパイプラインの深部において行うことができる。この理由により、先行技術の条件付き命令が何らかの出力を生成するかどうかは条件評価まで確認できないため、先行技術の条件付き命令は、レジスタ名変更段階においてパイプラインのストールを引き起こした。代替として、条件付き命令によって値が書き込まれることを予想してレジスタ名が変更された場合は、条件が満たされておらず書き込みが行われなかった場合は名前変更動作を取り消さなければならなかった。
条件が満たされている場合は、1つ以上のオペランドが条件付き命令に入力される(ブロック44)。このことは、GPRの読み取り又はオペランドフォワーディング動作を含むことができる。オペランド入力ステップは、条件評価に先行することができ、条件が満たされていない場合はオペランドは単に捨てられることに当業者は注目するであろう。オペランドに関する算術演算又は論理演算が行われて(ブロック46)結果が生成され、その結果が出力される(ブロック48)。出力は、LRN(すなわち、RTを通じてLRNと関連づけられているPRN)に書き込むか又は他の命令に直接結果をフォワードすることによって行うことができる。
条件が満たされていない場合は(ブロック42)、条件付き命令は、(同じくターゲットLRNを書き込むことによって又はオペランドフォワーディングによって)ターゲットから入力された前値を出力し(ブロック50)、それによって、条件が満たされていない場合に確実に前値を提供する。図2に描かれている実施形態においては、条件が満たされていない場合はオペランドが読み取られず、演算も行われない。その他の実施形態においては、オペランドの読み取り、さらには演算さえも、オペランドによる条件評価前に行うことができ、生成された結果は、条件が満たされていない場合は単に捨てられる。条件評価にかかわらず条件付き命令は出力を提供することに注目すること(ブロック48、50)。このことは、命令を構成されているとおりに実行する−すなわち、条件が満たされている場合のみに出力を提供し、条件が満たされていない場合は出力(レジスタ書き込み又はオペランドフォワーディング)を提供しない先行技術の条件付き命令実行方法とは対照的である。
一実施形態による出力選択が、図3において、上記の代表的なコードフラグメント、特にSUBEQ r2、r7、r8命令、を用いて概略的に描かれている。LRN r2の前値が、RT 21マッピング後にPRN xから読み取られる。この値(又は少なくともPRN識別子)は、パイプラインを進行中は条件付き命令によって維持される。レジスタ名変更システムは、条件評価前にRT 21を更新し、LRN r2を新しい物理レジスタPRN yに変更する。オペランドがr7及びr8から読み取られ、減算演算がALU18において行われる。条件が評価され、評価結果は、前値又は演算結果を条件付き命令のターゲットLRNr2(PRN yに名前が変更されている)に書き込むかどうかを決定する。図3は代表例であるにすぎず、他の実施形態においては、r7及びr8の読み取り及び減算演算は条件が満たされている場合のみに行うことができることを当業者は認識するであろう。
1つ以上の実施形態による条件付き命令の実行は、出力−条件評価に依存して演算の結果又はターゲットの前値のいずれか−を無条件で提供するため、パイプラインは、多くの状況において条件評価を待つためにストールさせる必要がない。例えば、RT 21は、条件評価を待たずに、条件付き命令のターゲットLRNの名前をRRF20内の利用可能な物理レジスタに変更することができる。このLRNを読み取る後続の命令は、条件付き命令によって書き込まれた物理レジスタから適切な結果を入手することが保証される。前記物理レジスタは、演算の結果(条件が満たされている場合)又はレジスタ名変更前にLRNと関連づけられていたPRNからの値(条件が満たされていない場合)のうちのいずれかを含むことになる。従って、パイプラインは、条件評価を待つためにレジスタ名変更段階においてストールする必要がない。
一実施形態においては、オペランドフォワーディングは、条件の評価前に、命令のオペランドのうちの1つ以上を条件付き命令によって直接提供できるときに、パイプラインコントローラ14が命令のオペランドのソースを決定するのを可能にすることによって単純化される。当業においてよく知られるように、オペランドフォワーディングは、第1の命令によるレジスタへの書き込み及び第2の命令によるレジスタ読み取りを要求せずに、1つの命令の出力が直接他の命令にフォワードされる技術である。先行技術においては、条件付き命令に後続する命令は、条件付き命令によってフォワードされるか(条件が満たされている場合)又は前命令によってフォワードされ(条件が満たされておらず、条件付き命令が出力を生成しない場合)、従って、条件評価がオペランドソースを決定するのを待たなければならない。出力を無条件で提供することによって、この実施形態の条件付き命令実行方法は、この不確実性を排除し、条件評価前にオペランドのソースに関する判断を行うことを可能にする。特に、条件付き命令実行方法は、無条件で出力をフォワードするため、パイプラインコントローラ14は、後続する命令に関するオペランドソースとして条件付き命令を信頼できる形で割り当てることができる。前記出力は、前の命令によって条件付き命令にフォワードされた前値(条件が満たされていない場合)又は演算の結果(結果が満たされている場合)であることができる。
本発明は、本明細書においては、本発明の特定の特長、側面及び実施形態に関して説明されているが、数多くの変形、修正、及びその他の実施形態が本発明の広範な適用範囲内にあることが明確になり、このため、あらゆる変形、修正及び実施形態が本発明の適用範囲内にあるとみなすべきである。従って、本明細書の実施形態は、あらゆる点において例示的な実施形態であって制限するものではないと解釈すべきであり、添付される特許請求項の意味及び同等の意味の範囲内にあるすべての変更は、前記請求項内に包含されることが意図されている。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
パイプライン方式プロセッサにおいて条件付き命令を実行する方法であって、前記条件付き命令は、1つ以上のオペランドを入力として受け取り、条件が満たされている場合は前記オペランドに関する演算の結果をターゲットに出力し、前記条件が満たされていない場合は出力を提供しないように構成され、
1つ以上のオペランド値を受け取ることと、
前記ターゲットの前値を受け取ることと、
条件を評価することと、
前記条件が満たされている場合は、前記オペランド値に関する演算を行って結果値を生成し、前記結果を前記ターゲットに出力することと、
前記条件が満たされていない場合は、前記前ターゲット値を前記ターゲットに出力すること、
とを具備する、方法。
[C2]
前記ターゲットの前値を受け取ることは、前記前値を第1のレジスタから読み取ることを具備するC1に記載の方法。
[C3]
前記結果又は前記ターゲットの前記前値を出力することは、前記各々の値を第2のレジスタに書き込むことを具備するC2に記載の方法。
[C4]
前記第1及び第2のレジスタは、レジスタ名変更システムにおける物理レジスタであり、論理レジスタは、前記条件の前記評価前に前記第1のレジスタから前記第2のレジスタに無条件で名前が変更されるC3に記載の方法。
[C5]
前記条件付き命令に後続する命令は、前記条件の評価前にオペランドフェッチに関して無条件で前記第2のレジスタに向けられるC4に記載の方法。
[C6]
前記ターゲットの前記前値は、以前に実行された命令の出力であるC1に記載の方法。
[C7]
前記結果値又は前記ターゲットの前記前値は、前記各々の値を後続する命令にフォワーディングすることを具備するC1に記載の方法。
[C8]
前記条件付き命令は、前記条件の前記評価前に前記後続する命令に関するオペランドソースとして無条件で選択されるC7に記載の方法。
[C9]
論理レジスタを物理レジスタに動的にマッピングするレジスタ名変更システムを採用するパイプライン方式プロセッサにおいて、条件が満たされている場合は演算の結果を論理ターゲットレジスタに書き込み、前記条件が満たされていない場合はいずれのレジスタにも書き込まないように構成された条件付き命令を実行する方法であって、
前記論理ターゲットレジスタと関連づけられた第1の物理レジスタから第1の値を読み取ることと、
前記論理ターゲットレジスタの名前を第2の物理レジスタに変更することと、
条件を評価することと、
前記条件が満たされている場合は、演算を行って結果値を生成し、前記結果値を前記第2の物理レジスタに書き込むことと、
前記条件が満たされていない場合は、前記第1の値を前記第2の物理レジスタに書き込むこと、
とを具備する、方法。
[C10]
前記条件の評価前に、前記条件付き命令に後続する命令に関するオペランドソースとして前記第2の物理レジスタを割り当てることをさらに具備するC9に記載の方法。
[C11]
条件が満たされている場合は演算の結果を論理ターゲットレジスタに書き込み、前記条件が満たされていない場合はいずれのレジスタにも書き込まないように構成された条件付き命令を実行する方法であって、
前記論理ターゲットレジスタと関連づけられた第1の物理レジスタから前値を読み取ることを具備する方法。
[C12]
前記論理ターゲットレジスタの名前を第2の物理レジスタに変更することをさらに具備するC11に記載の方法。
[C13]
条件を評価することと、
前記条件が満たされている場合は、演算を行って結果を生成して前記結果を前記第2の物理レジスタに書き込むことと、
前記条件が満たされていない場合は、前記前値を前記第2の物理レジスタに書き込むこと、
とをさらに具備するC12に記載の方法。
[C14]
条件が満たされている場合は演算の結果を論理ターゲットレジスタに書き込み、前記条件が満たされていない場合はいずれのレジスタにも書き込まないように構成された条件付き命令を実行する方法であって、
前記論理ターゲットレジスタに無条件で値を書き込むことを具備する方法。
[C15]
前記論理ターゲットレジスタに値を書き込むことは、前記論理ターゲットレジスタと関連づけられた第2の物理レジスタに値を書き込むことを具備するC14に記載の方法。
[C16]
以前に前記論理ターゲットレジスタと関連づけられた第1の物理レジスタから前値を読み取ることと、前記論理ターゲットレジスタの名前を前記第1の物理レジスタから前記第2の物理レジスタに変更すること、とをさらに具備するC14に記載の方法。
[C17]
無条件で書き込まれた前記データは、条件が満たされている場合は前記条件付き命令によって行われた演算の結果であり、前記条件が満たされていない場合は前記前値であるC16に記載の方法。
[C18]
前記条件評価前に、前記条件付き命令に後続する命令に関するオペランドソースとして前記第2の物理レジスタを無条件で割り当てることをさらに具備するC17に記載の方法。
[C19]
複数の物理レジスタと、
論理レジスタ識別子を前記物理レジスタと動的に関連づけるために動作可能な名前変更テーブルと、
前記条件の評価前に、プログラム上の順序でない順序で命令を実行するために動作可能であり、条件付き命令に関する前記ターゲットとして及び前記条件付き命令への条件付き依存性を有する命令に関するオペランドソースとして論理レジスタ識別子を無条件で割り当てるために動作可能な命令実行パイプラインと、を具備し、前記条件付き命令は、条件が満たされている場合は演算の結果をターゲットに書き込み、前記条件が満たされていない場合は前記ターゲットに書き込まないように構成されている、プロセッサ。
[C20]
前記条件付き命令は、前記論理レジスタ識別子と関連づけられた第1の物理レジスタから前値を読み取るために動作可能であるC19に記載のプロセッサ。
[C21]
前記名前変更テーブルは、前記論理レジスタ識別子の名前を前記第1の物理レジスタから第2の物理レジスタに変更するために動作可能であるC20に記載のプロセッサ。
[C22]
前記条件付き命令は、前記条件が満たされている場合は演算を行って前記第2の物理レジスタに結果を書き込み、前記条件が満たされていない場合は前記第2の物理レジスタに前記前値を書き込むために動作可能であるC20に記載のプロセッサ。
[C23]
前記条件付き命令に後続する命令は、前記条件評価前に前記第2の物理レジスタがオペランドソースとして無条件で割り当てられるC22に記載のプロセッサ。

Claims (9)

  1. パイプライン方式プロセッサを介して単一の条件付命令を実行する方法であって、
    パイプラインにおいて、前記単一の条件付命令とは異なる命令によって生成された前値を受け取ることと、
    結果を生成するために、1つ又は複数のオペランド値に対し前記単一の条件付命令の演算を実行することと、
    前記パイプラインの回路において、前記単一の条件付命令と関連付けられた条件に基づいて、前記結果および前記前値から前記単一の条件付命令の出力値を選択することと、
    ターゲットに前記出力値を出力することであって、前記出力値は、
    前記条件が満たされているとき、前記結果であり、
    前記条件が満たされないとき、前記前値であることと
    を具備する方法。
  2. 前記前値は、前記単一の条件付命令に関連付けられた評価結果に関わりなく受け取られる、請求項に記載の方法。
  3. 前記前値は、第1のレジスタから受け取られ、前記出力値は、前記評価結果に関わりなく前記ターゲットに出力され、前記第1のレジスタは、物理レジスタであり、論理レジスタは、前記条件を評価する前に前記第1のレジスタから第2のレジスタに無条件で名前が変更される、請求項に記載の方法。
  4. 前記前値は、以前に実行された命令の出力であり、前記以前に実行された命令の出力は、レジスタから前記以前に実行された命令の出力を読み取ることを前記単一の条件付命令に要求せずに、前記単一の条件付命令にフォワードされる、請求項に記載の方法。
  5. 前記単一の条件付命令の前記1つ又は複数のオペランド値は、前記前値を含まない、請求項に記載の方法。
  6. 論理レジスタを物理レジスタへ動的にマッピングするように構成される、パイプライン方式プロセッサを介して、単一の条件付命令を実行する方法であって、
    名前変更テーブルにおいて論理ターゲットレジスタ識別子に関連付けられた第1の物理レジスタから、前値を読み取ることであって、前記前値は、前記単一の条件付命令に関連付けられた条件の評価結果に関わりなく読み取られ、前記前値は、前記単一の条件付命令とは異なる命令によって生成されることと、
    前記名前変更テーブルにおいて、前記論理ターゲットレジスタ識別子を第2の物理レジスタと関連付けることと、
    結果値を生成するために、1つ又は複数のオペランド値に対し前記単一の条件付命令の演算を実行することと、
    回路において、前記条件に基づいて前記結果値及び前記前値から前記単一の条件付命令の出力値を選択することと、
    前記単一の条件付命令の出力値を出力することであって、
    前記条件が満たされるとき、前記第2の物理レジスタに前記結果値を書き込むことと、
    前記条件が満たされないとき、前記第2の物理レジスタに前記前値を書き込むことと
    を具備する、前記出力値を出力することと
    を具備する方法。
  7. 単一の条件付命令を実行する方法であって、
    前記単一の条件付命令に関連付けられた条件の評価に関わりなく論理ターゲットレジスタから前値を読み取ることであって、前記前値は、前記単一の条件付命令とは異なる命令によって生成されることと、
    結果を生成するために、1つ又は複数のオペランド値に対し前記単一の条件付命令による演算を実行することと、
    回路において、前記条件に基づいて前記結果及び前記前値から前記単一の条件付命令の出力値を選択することと、
    前記単一の条件付命令から前記出力値を出力することであって、
    前記条件が満たされるとき、前記論理ターゲットレジスタに前記単一の条件付命令によって実行される前記演算の前記結果を書き込むことと、
    前記条件が満たされないとき、前記論理ターゲットレジスタに前記前値を書き込むことと
    を具備する、前記出力値を出力することと
    を具備する方法。
  8. 複数の物理レジスタと、
    論理レジスタ識別子を前記複数の物理レジスタと動的に関連付けるためにアクセス可能な名前変更テーブルと、
    単一の条件付命令を実行するように動作可能な命令実行パイプラインであって、
    前記単一の条件付命令に関連付けられた条件の評価に関わりなく、前記名前変更テーブルにおいて論理ターゲットレジスタ識別子に関連付けられた第1の物理レジスタから前値を読み取り、前記前値は、前記単一の条件付命令とは異なる命令によって生成され前記第1の物理レジスタに書き込まれ、
    結果を生成するために、1つ又は複数のオペランド値に対し前記単一の条件付命令の演算を実行し、
    前記命令実行パイプラインの回路において、前記条件に基づいて前記結果および前記前値から前記単一の条件付命令の値を選択し、
    前記条件が満たされるとき、前記結果を提供し、
    前記条件が満たされないとき、前記前値を提供する
    ことによって前記値を出力する
    ために前記単一の条件付命令を実行するように動作可能な命令実行パイプラインと
    を具備するプロセッサ。
  9. 前記命令実行パイプラインは、前記名前変更テーブルにおいて、前記値を出力する前に、前記論理ターゲットレジスタ識別子を第2の物理レジスタと関連付けるように構成され、前記値は、前記第2の物理レジスタに書き込まれる、請求項に記載のプロセッサ。
JP2015080190A 2005-04-14 2015-04-09 条件付き命令が無条件で出力を提供するシステム及び方法 Active JP6009608B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/106,803 US7624256B2 (en) 2005-04-14 2005-04-14 System and method wherein conditional instructions unconditionally provide output
US11/106,803 2005-04-14

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012097489A Division JP2012212433A (ja) 2005-04-14 2012-04-23 条件付き命令が無条件で出力を提供するシステム及び方法

Publications (2)

Publication Number Publication Date
JP2015164048A JP2015164048A (ja) 2015-09-10
JP6009608B2 true JP6009608B2 (ja) 2016-10-19

Family

ID=37016156

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2008506733A Withdrawn JP2008537231A (ja) 2005-04-14 2006-04-14 条件付き命令が無条件で出力を提供するシステム及び方法
JP2012097489A Withdrawn JP2012212433A (ja) 2005-04-14 2012-04-23 条件付き命令が無条件で出力を提供するシステム及び方法
JP2015080190A Active JP6009608B2 (ja) 2005-04-14 2015-04-09 条件付き命令が無条件で出力を提供するシステム及び方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2008506733A Withdrawn JP2008537231A (ja) 2005-04-14 2006-04-14 条件付き命令が無条件で出力を提供するシステム及び方法
JP2012097489A Withdrawn JP2012212433A (ja) 2005-04-14 2012-04-23 条件付き命令が無条件で出力を提供するシステム及び方法

Country Status (9)

Country Link
US (1) US7624256B2 (ja)
EP (1) EP1869547B1 (ja)
JP (3) JP2008537231A (ja)
KR (1) KR100953856B1 (ja)
CN (1) CN101194225B (ja)
BR (1) BRPI0610222A2 (ja)
IL (1) IL186632A (ja)
TW (1) TWI317906B (ja)
WO (1) WO2006113420A2 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
US8140780B2 (en) * 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
JP5072889B2 (ja) * 2009-03-16 2012-11-14 株式会社東芝 事前条件生成装置および事後条件生成装置、ならびにこれらの方法
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9032189B2 (en) * 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8924695B2 (en) * 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN111209039B (zh) * 2018-11-21 2022-08-02 展讯通信(上海)有限公司 指令处理方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2933027B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US20020112148A1 (en) * 2000-12-15 2002-08-15 Perry Wang System and method for executing predicated code out of order
US6883089B2 (en) * 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
US20050066151A1 (en) 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output

Also Published As

Publication number Publication date
TWI317906B (en) 2009-12-01
BRPI0610222A2 (pt) 2010-06-08
KR20070121842A (ko) 2007-12-27
EP1869547A2 (en) 2007-12-26
US7624256B2 (en) 2009-11-24
IL186632A (en) 2012-04-30
TW200705266A (en) 2007-02-01
JP2008537231A (ja) 2008-09-11
JP2012212433A (ja) 2012-11-01
KR100953856B1 (ko) 2010-04-20
WO2006113420A2 (en) 2006-10-26
CN101194225A (zh) 2008-06-04
WO2006113420A3 (en) 2006-12-21
IL186632A0 (en) 2008-01-20
CN101194225B (zh) 2013-10-23
EP1869547B1 (en) 2016-09-21
US20060236078A1 (en) 2006-10-19
JP2015164048A (ja) 2015-09-10

Similar Documents

Publication Publication Date Title
JP6009608B2 (ja) 条件付き命令が無条件で出力を提供するシステム及び方法
JP6370829B2 (ja) 誤予測された分岐のためにフラッシュするセグメント化パイプライン
Jourdan et al. A novel renaming scheme to exploit value temporal locality through physical register reuse and unification
KR100402185B1 (ko) 컴퓨터 처리 시스템에서 순서화된 시퀀스의 명령어를실행하는 방법 및 장치
US6553480B1 (en) System and method for managing the execution of instruction groups having multiple executable instructions
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
TWI507980B (zh) 最佳化暫存器初始化操作
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
KR20170076564A (ko) 레지스터 리네이밍을 사용한 무브 명령어 처리
JP3577052B2 (ja) 命令発行装置及び命令発行方法
US9454371B2 (en) Micro-architecture for eliminating MOV operations
KR101154628B1 (ko) 확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용
JP7046087B2 (ja) キャッシュ・ミス・スレッド・バランシング
US7783692B1 (en) Fast flag generation
US20090006819A1 (en) Single Hot Forward Interconnect Scheme for Delayed Execution Pipelines
WO2013101323A1 (en) Micro-architecture for eliminating mov operations

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160301

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160617

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160914

R150 Certificate of patent or registration of utility model

Ref document number: 6009608

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250