JP5403973B2 - アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置 - Google Patents

アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置 Download PDF

Info

Publication number
JP5403973B2
JP5403973B2 JP2008230625A JP2008230625A JP5403973B2 JP 5403973 B2 JP5403973 B2 JP 5403973B2 JP 2008230625 A JP2008230625 A JP 2008230625A JP 2008230625 A JP2008230625 A JP 2008230625A JP 5403973 B2 JP5403973 B2 JP 5403973B2
Authority
JP
Japan
Prior art keywords
instruction
predicated
predicate
instructions
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008230625A
Other languages
English (en)
Other versions
JP2009070378A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009070378A publication Critical patent/JP2009070378A/ja
Application granted granted Critical
Publication of JP5403973B2 publication Critical patent/JP5403973B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

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

Description

本発明は、一般的には、述語型の実行(predicated execution)に関し、特に、アウト・オブ・オーダ(out-of-order)・プロセッサにおける述語型の実行のための技術に関するものである。
現在、ブランチ命令は、コンピュータ・プログラム(プログラム)においてどれだけの数のオペレーションを同時に実行し得るかに関する1つの尺度である命令レベル並列度(ILP)の活用にとって大きな障害と考えられる。一般に、コンパイラおよびハードウェアは、十分なILPを達成するために、頻繁且つ正確なブランチ予測を行うことを要求される。一般に、ブランチ誤予測は、命令ストリームに取り込まれる不用なサイクルのためにパフォーマンスの低下を生じさせる。スーパースカラ・プロセッサおよび超長命令語(VLIW)プロセッサにおけるブランチ誤予測は、各不用なサイクルが複数の命令によりスループットを減少させることがあるスカラ・プロセッサにおけるブランチ誤予測よりもはるかに大きくパフォーマンスを低下させる。
ブール・ソース・オペランド(命令の述語(predicate)として知られている)の値に基づいた命令の条件付き実行と呼ばれる述語型の実行は、命令ストリームからブランチを除去するための技術を提供する。典型的な実施方法では、述語型の実行を使用するコンパイラは、条件付きのブランチを述語定義(predicate defining)命令に変換するために、および代替パスに沿った命令ストリームを述語付き命令に変換するためにif変換アルゴリズムを使用する。典型的な場合では、述語付き命令は、それらの述語値に関係なくフェッチされる。真の述語を有する命令は正常に実行されるが、偽の述語値を有する命令はヌル化にされ、従ってそのヌル化された命令はプロセッサ状態を修正することを妨げられる。一般に、述語型の実行は、コンパイラが複数の実行パスに沿って、低い命令フェッチ効率ではあるが、ハードウェアにILPを施すことを可能にする。
アウト・オブ・オーダ実行は、データ依存性を損なわない任意の順で命令が実行されることを可能にする。アウト・オブ・オーダ実行は、パイプライン処理およびスーパースカラ技術と関連して使用されてもよく、或いは、使用されなくてもよい。アウト・オブ・オーダ実行は、多くの高性能プロセッサにおいてプロセッサ・サイクルを利用するために使用され、それ以外には利用されないであろう。アウト・オブ・オーダ実行の主要な注目点は、オペレーションを遂行するために必要なデータが得られないときに生じるストールをプロセッサが回避することを可能にすることである。アウト・オブ・オーダ・プロセッサでは、命令はデータ順に、即ち、データ・オペランドがプロセッサのレジスタにおいて利用可能になる順に処理される。アウト・オブ・オーダ・プロセッサは、データが関連の命令にとって利用可能でないとき、実行する準備ができている他の命令でもってスロットを満たす。その後、アウト・オブ・オーダ・プロセッサは、命令がアウト・オブ・オーダで実行されたことをアーキテクチャ状態に対してコミットする前に、命令がプログラム順に、即ち、オリジナル・プログラムにおける命令の順に処理されたように見えるよう、結果を再順序付ける。
命令を成功裡に再順序付けするために、現在のアウト・オブ・オーダ・プロセッサは、リネーミングと呼ばれる技術を使用する。リネーミングは、命令によって生成された各結果レジスタに一意的な物理的位置を割当てることを含む。実施方法は、一般に、予約ステーション、レジスタ更新ユニット(RUU)、物理的レジスタ・ファイル等を使用する。アウト・オブ・オーダ・プロセッサは、生成する命令の結果オペランドの可用性を追跡し、結果オペランドを得るべき一意的な物理的ロケーションを(従属的な消費命令(consumer instruction)に)指定する。叙述化(predication)は、各々がアウト・オブ・オーダ・プロセッサにおける一意的な物理的ロケーションにリネームされる複数の命令を同じアーキテクチャ上のレジスタに導入することが可能である。その結果、アウト・オブ・オーダ・プロセッサは、ソース・オペランドの正確なロケーションを(待機する消費命令にとっては)一意的に識別することができないであろう。従って、そのような状況を扱う明確なサポートがない場合、すべての作動時(in-flight)の生成命令(producerinstruction)が完了するまで、アウト・オブ・オーダ・プロセッサはストールしており、その結果、非効率的なパフォーマンスを生じる。述語予測を使用するプロセッサは多くの米国特許に開示されている(例えば、米国特許第7,085,919号、同第6,513,109号、および同第6,442,679号参照)。
米国特許第7,085,919号、 米国特許第6,513,109号、 米国特許第6,442,679号
本発明の目的は、アウト・オブ・オーダ・プロセッサにおいて予測実行するための方法および装置を提供することにある。
本発明の種々の実施態様によれば、アウト・オブ・オーダ・プロセッサにおいて述語付きコードを扱うための技術は、述語付きコード領域と関連した述語定義命令を検出することを含む。更に、述語付き定義命令の述語が解明されるまで、述語付きコード領域内の述語付き命令のリネーミングはストールされる。
当業者には明らかなように、本発明は、方法、システム、装置、或いはコンピュータ・プログラムとして具体化することが可能である。従って、本発明は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、或いは、「回路」、「モジュール」、または「システム」として本明細書において一般的に参照されるソフトウェアおよびハードウェアを組み合わせた実施例の形態を取ることが可能である。本発明は、例えば、コンピュータ使用可能プログラム・コードを有するコンピュータ使用可能記憶媒体上でコンピュータ・プログラムの形、例えば、その媒体において具現化された1つまたは複数の設計ファイルの形を取ることが可能である。
任意の適当なコンピュータ使用可能記憶媒体またはコンピュータ可読記憶媒体が利用可能である。コンピュータ使用可能または可読記憶媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線、或いは、半導体システム、装置、またはデバイスであってもよいが、それに限定されない。コンピュータ可読媒体の更に特定な例(非網羅的なリスト)は、下記のもの、即ち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブルROM(EPROMまたはフラッシュ・メモリ)、ポータブル・コンパクト・ディスクROM(CD−ROM)、光学的記憶装置、または磁気記憶装置を含む。
オペランド・リネーミング前に述語値を予測するために、種々の技術を使用することが可能である。この場合、通常は、予測され且つ選定されたパス(predicted-takenpath)命令が処理されるが、予測され且つ選定されなかったパス(predicted non-taken path)命令はプロセッサ・バッファに保持される。述語値の実際の解明時に、述語予測が適正であるとわかった場合、余分なアクションは取られず、プロセッサ・バッファに保持された予測され且つ選定されなかったパスからの命令が廃棄される。予測が不適正であるとわかった場合、すべての予測され且つ選定された命令およびディスパッチされたその後のいずれの命令も廃棄される(即ち、予測され且つ選定された命令およびその後のいずれの命令もアーキテクチャ上の状態を更新することを許されない)。しかる後、ルーチン処理は、プロセッサ・バッファに保持された予測され且つ選定されなかった命令でもって再開する。少なくともいくつかの実施態様では、述語付きコード領域から命令を再フェッチする必要を回避するために、ロジックを使用することも可能である。
一般に、消費命令がそれのオペランドを得なければならないロケーションを、即ち、レジスタ・ファイルまたはバイパス・ロジックから正確に指定することが、プロセッサの適正なオペレーションには必要である。更に、アウト・オブ・オーダ実行は、一般に、そのオペランドを使い尽くすことを待っているすべての命令をウェイク・アップするために、レジスタ・オペランドの生成を明瞭に識別する技術を必要とする。残念ながら、叙述化(predication)は条件付きの書込み機能を導入し、それ自体で、アウト・オブ・オーダ・プロセッサにおけるウェイク・アップ・プロセスおよびバイパス・ロジックを混乱させる。本発明の種々の実施態様によれば、述語付きコード領域(選定されたパスおよび選定されなかったパスに関連した述語付き命令を含む)の処理は、対応する述語が解明されるまでストールされる。述語の解明時に、レジスタ・リネーミングが適正なパス(即ち、選定されたパス)に関連した述語付き命令に関して遂行され、不適正なパス(即ち、選定されなかったパス)に関連した述語付き命令は廃棄される。
本明細書において開示された技術は、ブランチ・パイプラインの実行ステージおよびブランチ・パイプラインのリネーム・ステージの間にデータ・パスを加えることによって具現化される。一般に、レジスタ・リネーム・ステージは、述語付きコード領域を認識し、解明された述語をブランチ・パイプラインの実行ステージから受け取り、選定されなかったパスに関連した述語付き命令を廃棄するように修正される。本実施例で使用されるように、述語定義命令は、述語の値をセットする命令を含み、その値に基づいてその後の命令(述語付きコード領域に含まれる)の実行が述語付きにされる。例えば、インテルIA-64アーキテクチャのような明確な叙述化のサポートを備えた命令セット・アーキテクチャ(ISA)では、比較命令が述語定義命令である。
本発明の1つの実施態様によれば、アウト・オブ・オーダ・プロセッサにおいて述語付きコードを扱うための技術は、述語付きコード領域に関連した述語定義命令を検出することを含む。述語付きコード領域内の述語付き命令のリネーミングは、述語定義命令の述語が解明されるまでストールされる。
本発明のもう1つの実施態様によれば、アウト・オブ・オーダ・プロセッサはデコーダおよびパイプライン・ステージを含む。デコーダは、述語付き命令を含む述語付きコード領域に関連した述語定義命令をデコードするように構成される。パイプライン・ステージは、述語定義命令を検出するように、および、述語定義命令の述語が解明されるまで述語付き命令のリネーミングをストールするように構成される。パイプライン・ステージは、述語の解明時に、選定されなかったパスに関連する述語付き命令を廃棄するように、または、選定されなかったパスに関連する述語付き命令を、アーキテクチャ状態を変更しないノー・オペレーション(NOP)命令に変換するようにも構成され得る。
本発明の1つの実施例によれば、プロセッサ・システムはメモリ・サブシステムおよびアウト・オブ・オーダ・プロセッサを含み、アウト・オブ・オーダ・プロセッサはメモリ・サブシステムに接続されたデコーダおよびパイプライン・ステージを含む。デコーダは、述語付き命令を含む述語付きコード領域に関連した述語定義命令をデコードするように構成される。パイプライン・ステージは、述語定義命令を検出するように、および述語定義命令の述語が解明されるまで述語付き命令のリネーミングをストールするように、構成される。パイプライン・ステージは、述語の解明時に、選定されなかったパスに関連する述語付き命令を廃棄するように、または、選定されなかったパスに関連する述語付き命令を、アーキテクチャ状態を変更しないノー・オペレーション(NOP)命令に変換するようにも構成され得る。
本明細書に開示された技術は、間接的な叙述化サポート(ARM Thumbアーキテクチャのような)を備えたアーキテクチャと同様に明示的な叙述化サポートを備えたISAに等しく適用可能である。1つの例として、既存のISAは、Thumbアーキテクチャのif-then命令と同様の述語定義命令(例えばemask命令)によって拡大し得る(例えば、米国特許第7,178,011号参照)。叙述化を含まない例示的な擬似コードは下記のように記述される。
isequal cr7, 0, r10
branch cr7, ELSE
sub r1=r1, r2
load r4=[r1]
jump MERGE
ELSE: add r1=r1, r2
load r3=[r1]
add r5=r3, r4
MERGE: store r5, [r1]
上記の擬似コードは、次のような述語付きコードと置換することが可能である。
isequal cr7, 0, r10
emaskcr7, 11001b, 5
add r1=r1, r2
load r3=[r1]
sub r1=r1, r2
load r4=[r1]
add r5=r3, r4
MERGE: store r5, [r1]
上記述語付きコードでは、emask命令が叙述化セマンティックスを提供する責任を負う。 特に、emask命令は、1番目、2番目、および5番目の述語付き命令が第1パスに属し、3番目および4番目の述語付き命令が第2パスに属することによって、5つの後続する命令(述語付きコード領域内に含まれる)の実行を制御しなければならない実行マスクを指定する。戻された述語値(状態レジスタ7(cr7))に従って、第1パスの述語付き命令または第2パスの述語付き命令のいずれかが実行され、逆に、第2パスの述語付き命令または第1パスの述語付き命令のいずれかが廃棄されるか、ノー・オペレーション(NOP)命令に変換される。
図1を参照すると、2つのチップ・レベル・マルチプロセッサ(CMP)102を含む例示のプロセッサ・システム100が示され、各マルチプロセッサ102は2つのプロセッサ104を含む。少なくとも1つの実施例では、プロセッサ104の各々は第1レベル(L1)キャッシュ・メモリ(個別に示されていない)を含み、そのL1キャッシュは共有第2レベル(L2)キャッシュ・メモリ(キャッシュ)106に接続される。L2キャッシュ106は、第3レベル(L3)キャッシュ114およびファブリック・コントローラー108に接続される。ファブリック・コントローラー108は、メモリ・サブシステム112に接続されたメモリ・コントローラ110に接続される。メモリ・サブシステム112は、アプリケーションに適した量の揮発性および不揮発性メモリを含む。ファブリック・コントローラー108は、種々のCMP102の間およびプロセッサ104とメモリ・サブシステム112との間のコミュニケーションを容易にし、この場合、インターフェースとして機能する。
図2を参照すると、本発明に従って構成されるプロセッサ104の1つの例示的な命令パイプライン200が示される。プロセッサ104は、例えば、同時的マルチスレッディング(SMT)モードまたはシングル・スレッド(ST)モードで作動し得る。プロセッサ104がSMTモードで作動しているとき、プロセッサ104は、複数のスレッドのためのプログラム・カウンタを格納するために、複数の個別の命令フェッチ・アドレス・レジスタを使用し得る。この場合、命令フェッチ(IF)ステージ202における命令フェッチは複数のスレッドの間で交互になる。STモードでは、一般に、プロセッサ104は1つのプログラム・カウンタしか使用せず、各プロセッサ・サイクル当たり単一のスレッドのための命令をフェッチする。1つの実施例では、プロセッサ104は、(命令キャッシュ(IC)ステージ204において)各プロセッサ・サイクル当たり8個までの命令を命令キャッシュからフェッチするように構成されてもよい。SMTモードでは、複数の(例えば2個の)スレッドが命令キャッシュおよび命令変換機構を共用し得る。
1つの所与のプロセッサ・サイクルでは、一般に、すべてのフェッチされた命令が同じスレッドに関連付けられる。1つの実施例では、プロセッサ104は、ブランチ予測(BP)ステージ206においてブランチに関するフェッチされた命令をスキャンする。ブランチがBPステージ206において検出される場合、プロセッサ104は、例えば、2つのスレッドにより共用される3つのブランチ履歴テーブル(BHT)を使用してブランチ方向を予測し得る。1つの実施例では、BHTのうちの2つが、ブランチ方向を予測するために2モードの且つパス相関のブランチ予測機構を使用する。適正な方向を予測するためにどの予測機構がより適当であるかを予測するように第3のBHTが構成され得る。フェッチされた命令が複数のブランチを含む場合、BPステージ206はすべてのブランチを同時に予測するように構成されてもよい。ブランチ方向の予測に加えて、BPステージ206は現命令グループ・サイクルにおいて選択されたブランチのターゲットを予測するようにも構成されてもよい。プロセッサ104は、サブルーチン・リターンのターゲットを予測するためのリターン・スタックを、例えば、各スレッドに対して1つのリターン・スタックを使用し得る。
プロセッサ104は、他のブランチのターゲットを予測するために共用ターゲット・キャッシュを使用し得る。選択されたブランチが存在する場合、プロセッサ104は、ブランチのターゲット・アドレスをプログラム・カウンタにロードするように構成される。選択されたブランチが存在しない場合、プロセッサ104は、次の順次命令のアドレスをプログラム・カウンタにロードするように構成される。プロセッサ104は、第1デコード(D0)ステージ208において、予測されたパスにおけるフェッチされた命令を複数のスレッドに対する個別の命令フェッチ・キューに入れるように構成される。スレッド優先順位に基づいて、プロセッサ104は、命令フェッチ・キューの1つから命令を選び、デコード・ステージD1(210)、デコード・ステージD2(212)、およびデコード・ステージD3(214)において1つのグループを形成ように構成される。述語付き命令を識別するためのロジックが、例えば、デコード・ステージD1(210)およびデコード・ステージD2(212)において使用されてもよい。1つの実施例では、1つのグループ内のすべての命令が同じスレッドから生じ、並行してデコードされる。プロセッサ104は、命令のグループがディスパッチされるような資源が使用可能になるまで、命令を(転送(Xfer)ステージ216における)キュー内に入れる。
1つの実施例では、各ディスパッチされた命令グループは、グローバル完了テーブル(GCT)におけるエントリに対応し、そのグループ内の各命令は、適切な発行キュー内のエントリに対応する。各ロードおよびストア命令は、アウト・オブ・オーダ実行ハザードを検知するために、ロード再順序付けキューおよびストア再順序付けキュー内のエントリをそれぞれ占有する。ディスパッチに必要なすべての資源が命令グループにおいて使用可能になるとき、その命令グループはグループ・ディスパッチ(GD)ステージ218においてディスパッチされる。命令は、IFステージ202とGDステージ218との間のパイプライン・ステージをプログラム順に流れる。ディスパッチの後、各命令は、命令における論理的なレジスタ番号を物理的なレジスタにマップするリネーミング・ステージ(またはマッピング(MP)ステージ)228を流れる。
本発明の種々の実施態様によれば、述語付き命令のためのレジスタ・リネーミングは、述語定義命令に関連した述語が解明されるまで(即ち、述語定義命令が実行され、述語が解明されるまで)、MPステージ228においてストールされる。1つの実施例では、MPステージ228は、述語定義命令に関連したマスクを格納するマスク・シフト・レジスタ(個別的に示されていない)を使用する。述語が解明され、MPステージ228に戻されるとき、どの述語付き命令を実行しなければならないか決めるために述語およびマスクに関して論理的機能(例えば、排他的NOR)が遂行される。レジスタ・リネーミングは、実行されるべき述語付き命令(即ち、選択されたパスに沿った述語付き命令)に関して遂行され、実行されるべきではない述語付き命令(即ち、選択されなかったパスに沿った述語付き命令)は廃棄される。
1つの実施例では、プロセッサ104は、120個の物理的汎用レジスタ(GPR)および120の物理的浮動小数点レジスタ(FPR)を実装している。複数のスレッドが実行されるとき、プロセッサ104は、それら複数のスレッドがレジスタ・ファイルを動的に共用するように構成される。STモードにおけるアウト・オブ・オーダ・プロセッサ処理を容易にするために、プロセッサ104は、すべての物理的レジスタを単一スレッドにとって利用可能にして、より高い命令レベル並列度を促進するように構成される。レジスタ・リネーミングの後、命令は、複数のスレッドによって共用される発行キューに入る。プロセッサ104は複数の発行キューを使用し得る。浮動小数点発行キューは、1つまたは複数の浮動小数点パイプライン(実行ユニット)226を入力するために使用され、ブランチ発行キューはブランチ・パイプライン(実行ユニット)220を入力するために使用され、状態レジスタ論理的キューは状態レジスタ論理演算パイプライン(実行ユニット)(図示されていない)を入力するために使用され、結合発行キューは1つまたは複数の固定小数点(整数)パイプライン(実行ユニット)に224および1つまたは複数のロード・ストア・パイプライン(実行ユニット)222を入力するために使用され得る。1つの実施例では、プロセッサ104は8個の実行ユニット(図2にはそれらのすべてが示されているわけではない)を含み、その各々は各サイクルで命令を実行することができる。
パイプライン220〜226を通して命令を追跡するためのロジックを単純化するために、プロセッサ104は、命令をグループとして追跡するように構成されてもよい。この場合、ディスパッチされた命令の各グループは、ディスパッチ時にGCTにおけるエントリを占有する。この場合、そのグループがコミットされるとき、エントリはGCTから割振り解除される。GCTにおけるエントリはプログラム順であり且つ所与のスレッドからのものであるが、連続したエントリが異なるスレッドに属することも可能である。1つの命令に対する入力オペランドがすべて利用可能であるとき、それは発行の資格を有するようになる。発行ロジックは、発行キューにおける適格の命令の中から1つを選択し、発行(ISS)ステージにおける実行のためにそれを発行する。命令発行に関しては、通常、2つのスレッドからの命令の間に区別は存在しない。
命令は、それが発行されると、レジスタ・ファイル(RF)ステージにおいて1つまたは複数の関連入力物理的レジスタを読取り、実行(EX)ステージにおいて実行し、書き戻し(WB)ステージにおいて関連出力物理的レジスタに結果を書き戻す。1つの実施例では、各浮動小数点パイプライン226が6サイクル実行パイプ(F1乃至F6ステージ)を有する。各ロード・ストア・パイプライン222において、加算器が、計算アドレス(EA)ステージにおいて読取るまたは書込むべきアドレスを計算し、データ・キャッシュがデータ・キャッシュ(DC)ステージにおいてアクセスされる。ロード命令に関しては、一旦データが戻されると、フォーマッタが、フォーマット(Fmt)ステージにおいてキャッシュ・ラインから適正なバイトを選び、しかる後、WBステージにおいてデータをレジスタに書込む。グループにおけるすべての命令が(例外を生じることなく)実行されてしまい且つそのグループが所与のスレッドのうちの最も古いグループであるとき、そのグループは完了(CP)ステージ232においてアーキテクチャ的状態にコミットされる。1つの実施例では、2つの命令グループがサイクル毎に、即ち、2つのスレッドの各々から1つをコミットし得る。1つの実施例では、プロセッサ104は、64KバイトのL1命令キャッシュおよび32Kバイトのデータ・キャッシュ(個別に示されてなく、それぞれ、2ウェイおよび4ウェイ関連性有する)を含む。或る実施例では、第1レベルのデータ変換テーブル(個別に示されていない)が完全に連想的なものであり、128個のエントリを含んでいる。
図3を参照すると、本発明の種々の実施態様に従って、アウト・オブ・オーダ・プロセッサにおいて述語付きコードを処理する例示的プロセス300が示される。ブロック302において、プロセス300が開始され、その時点で、制御が判断ブロック304に移る。ブロック304では、述語定義命令(既知の操作コード(OPコード)に相当する)が、例えば、プロセッサ・パイプライン200のMPステージ228において検出されない場合、制御はブロック316に移る。ブロック304において、述語定義命令が検出される場合、制御はブロック306に移る。ブロック306では、述語定義命令に関連したマスクが、その後の使用のためにマスク・シフト・レジスタ(例えば、MPステージ228に含まれる)に格納される。マスクは、述語付き命令の各々が2つの代替パス(即ち、選択されたパスまたは選択されなかったパス)のどちらに属するかを表わす。しかる後、判断ブロック308において、その述語定義命令に関連した述語値が使用可能であるかどうかが決定される。
図2に示されるように、述語が、ブランチ・パイプライン220のEXステージの出力からMPステージ228に返送される。ブロック308において述語定義命令の述語が利用可能でない場合、制御はブロック310に移り、そこでは、述語付き命令のリネーミングがストールされる。ブロック310に続いて、制御はブロック308に移る。ブロック308において、述語定義命令の述語が使用可能である場合、制御はブロック312に移る。上述のように、述語定義命令を実行した結果 (即ち、状態レジスタの値)が、ブランチ・パイプライン220のEXステージの出力からMP(リネーム)ステージ228に返送される。ブロック312において、後続の述語付き命令のうちのどれがリネームされ且つ実行されるべきか、およびその述語付き命令のうちのどれが廃棄されまたはNOP命令に変換されるべきかを決定するために、マスクおよび述語に関して論理的機能(例えば、排他的NOR機能)が遂行される。次に、ブロック314において、(その論理的機能に従って)リネームされると思われる述語付き命令がリネームされ、(その論理的機能に従って)リネームされると思われない述語付き命令が廃棄されるかまたはNOP命令に変換される。しかる後、リネームされた命令が実行されてもよい。ブロック314に続いて、制御はプロセス316に移り、そこでは次の述語定義命令が検出されるまでプロセスは停止する。
本明細書において開示された技術は、プロセッサ・コアおよび関連の命令セット・アーキテクチャに対する最小の修正でもって具現化することが可能である。従って、アウト・オブ・オーダ・プロセッサにおける述語付きコードの効率的な処理を容易にする技術が開示された。
添付図面におけるフローチャートおよびブロック図は、本発明の種々の実施例に従って、システム、方法、およびコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、およびオペレーションを示す。これに関して、フローチャートまたはブロック図における各ブロックはモジュール、セグメント、またはコード部分を表わし得る。そのコード部分は、指定された論理機能を具現化するための1つまたは複数の実行可能命令を含む。或る代替方法では、ブロックにおいて示された機能は、図面に示された順序を外れて生じ得るということに留意すべきである。例えば、連続して示された2つのブロックは、実は、実質的に同時に実行され得るし、或いは、関連する機能次第で、逆順に実行されてもよいことがある。更に、ブロック図および/またはフローチャートの各ブロック、並びにブロック図および/またはフローチャートにおけるブロックの組合せが、指定された機能または動作を遂行する特殊目的のハードウェア・ベースのシステム、或いは特殊目的のハードウェアおよびコンピュータ命令の組合せによって具現化され得ることも留意すべきであろう。
本明細書において使用される用語は、特定の実施例のみを説明することを目的とするものであり、発明を限定することを意図するものではない。
「特許請求の範囲」の各請求項におけるすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および均等物は、他の請求項における他の要素と組み合わせてその機能を遂行するための任意の構造、材料、または動作を含むように意図される。本発明の説明は、図解および記述を目的として示されたが、網羅的であることまたは開示された形式に限定されることを意図したものではない。本発明の範囲および趣旨から逸脱することなく、多くの修正および変更が当業者には明らかであろう。実施例は、本発明の原理および実用的な応用例を最適に説明するために、および当業者が、特定の意図された用途に適するように様々な修正を含む様々な実施例に関しても本発明を理解することを可能にするために、選択および記述された。
従って、本発明を詳細に且つ好適な実施例を参照して説明したが、「特許請求の範囲」において定義された発明の範囲を逸脱することなく、修正および変更が可能であることは明らかであろう。
本発明の種々の実施態様に従って構成され得る例示的なプロセッサ・システムのブロック図である。 本発明の種々の実施例に従って、図1のプロセッサ・システムのプロセッサにおいて使用され得る例示的なプロセッサ命令パイプラインのブロック図である。 図2における例示的なプロセッサ命令パイプラインにおいて使用される例示的なプロセスのフローチャートである。

Claims (11)

  1. アウト・オブ・オーダ・プロセッサにおいて述語付き命令を処理するための方法であって、
    述語付き命令を含む述語付きコード領域に関連した述語定義命令を検出するステップと、
    前記述語定義命令の述語が解明されるまで、前記述語付きコード領域内に含まれた述語付き命令のリネーミングをストールするステップと、
    前記述語が解明されたという表示を受け取るステップと、
    選択されたパスに関連する述語付き命令をリネームするステップと、
    選択されなかったパスに関連する述語付き命令を、リネームされた前記述語付き命令を実行する前に、廃棄するステップと、
    を含む、方法。
  2. 前記述語定義命令を検出するステップは、前記述語付きコード領域に関連した述語定義命令を前記アウト・オブ・オーダ・プロセッサのリネーム・ステージにおいて検出するステップを更に含む、請求項1に記載の方法。
  3. 前記述語定義命令に関連したマスクをマスク・シフト・レジスタに格納するステップと、
    前記述語付き命令のうちのどれをリネームおよび実行すべきかを決定するために前記述語および前記格納されたマスクに関して論理機能を遂行するステップと、
    を更に含む、請求項2に記載の方法。
  4. 前記述語は状態レジスタ値に基づいている、請求項1に記載の方法。
  5. 前記述語定義命令をデコードするステップと、
    前記述語付き命令をデコードするステップと、
    を更に含む、請求項1に記載の方法。
  6. 述語付き命令を含む述語付きコード領域に関連した述語定義命令をデコードするように構成されたデコーダと、
    前記述語定義命令を検出するように、および、前記述語定義命令の述語が解明されるまで前記述語付き命令のリネーミングをストールするように構成されたパイプライン・ステージと、を含み、
    前記パイプライン・ステージは、更に、
    前記述語が解明されたという表示を受け取り、
    選択されたパスに関連する述語付き命令をリネームし、
    選択されなかったパスに関連する述語付き命令を、リネームされた前記述語付き命令を実行する前に、廃棄する、
    アウト・オブ・オーダ・プロセッサ。
  7. 前記パイプライン・ステージはリネーム・ステージに含まれる、請求項6に記載のアウト・オブ・オーダ・プロセッサ。
  8. 前記リネーム・ステージは、更に、 前記述語定義命令に関連するマスクをマスク・シフト・レジスタに格納し、
    前記述語付き命令のうちのどれをリネームおよび実行すべきかを決定するために前記述語および前記格納されたマスクに関して論理機能を遂行する
    ように構成される、請求項7に記載のアウト・オブ・オーダ・プロセッサ。
  9. 前記述語は状態レジスタ値に基づいている、請求項6に記載のアウト・オブ・オーダ・プロセッサ。
  10. メモリ・サブシステムと、
    前記メモリ・サブシステムに接続されたアウト・オブ・オーダ・プロセッサと、を含み、
    前記アウト・オブ・オーダ・プロセッサは、
    述語付き命令を含む述語付きコード領域に関連した述語定義命令をデコードするように構成されたデコーダと、
    前記述語定義命令を検出するように、および、前記述語定義命令の述語が解明されるまで前記述語付き命令のリネーミングをストールするように構成されたリネーム・ステージとを含み、
    前記リネーム・ステージは、更に、
    前記述語が解明されたという表示を受け取り、
    選択されたパスに関連する述語付き命令をリネームし、
    選択されなかったパスに関連する述語付き命令を、リネームされた前記述語付き命令を実行する前に、廃棄する、
    プロセッサ・システム。
  11. 前記リネーム・ステージは、更に、
    前記述語定義命令に関連したマスクをマスク・シフト・レジスタに格納し、
    前記述語付き命令のうちのどれを実行すべきかを決定するために前記述語および前記格納されたマスクに関して論理機能を遂行し、
    前記論理機能の結果に基づいて前記述語付き命令の少なくとも1つをリネームする
    ように構成される、請求項10に記載のプロセッサ・システム。
JP2008230625A 2007-09-17 2008-09-09 アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置 Expired - Fee Related JP5403973B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/856170 2007-09-17
US11/856,170 US9946550B2 (en) 2007-09-17 2007-09-17 Techniques for predicated execution in an out-of-order processor

Publications (2)

Publication Number Publication Date
JP2009070378A JP2009070378A (ja) 2009-04-02
JP5403973B2 true JP5403973B2 (ja) 2014-01-29

Family

ID=40455835

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008230625A Expired - Fee Related JP5403973B2 (ja) 2007-09-17 2008-09-09 アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置

Country Status (2)

Country Link
US (1) US9946550B2 (ja)
JP (1) JP5403973B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065505B2 (en) * 2007-08-16 2011-11-22 Texas Instruments Incorporated Stall-free pipelined cache for statically scheduled and dispatched execution
US8819399B1 (en) 2009-07-31 2014-08-26 Google Inc. Predicated control flow and store instructions for native code module security
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8433885B2 (en) * 2009-09-09 2013-04-30 Board Of Regents Of The University Of Texas System Method, system and computer-accessible medium for providing a distributed predicate prediction
CN102789377B (zh) 2011-05-18 2015-09-30 国际商业机器公司 处理指令分组信息的方法和装置
US11693883B2 (en) 2012-12-27 2023-07-04 Teradata Us, Inc. Techniques for ordering predicates in column partitioned databases for query optimization
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor
US11042381B2 (en) * 2018-12-08 2021-06-22 Microsoft Technology Licensing, Llc Register renaming-based techniques for block-based processors

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0287229A (ja) 1988-09-24 1990-03-28 Nec Corp 実行命令の先取り制御方式
JPH10283185A (ja) 1997-04-10 1998-10-23 Matsushita Electric Ind Co Ltd プロセッサ
US6367004B1 (en) 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6442679B1 (en) 1999-08-17 2002-08-27 Compaq Computer Technologies Group, L.P. Apparatus and method for guard outcome prediction
US6513109B1 (en) 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6883089B2 (en) 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
GB2402510A (en) 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system
KR100628573B1 (ko) 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법

Also Published As

Publication number Publication date
JP2009070378A (ja) 2009-04-02
US9946550B2 (en) 2018-04-17
US20090077354A1 (en) 2009-03-19

Similar Documents

Publication Publication Date Title
Akkary et al. A dynamic multithreading processor
US10296346B2 (en) Parallelized execution of instruction sequences based on pre-monitoring
JP5403973B2 (ja) アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
US7032101B2 (en) Method and apparatus for prioritized instruction issue queue in a processor
US9286072B2 (en) Using register last use infomation to perform decode-time computer instruction optimization
US6918032B1 (en) Hardware predication for conditional instruction path branching
JP5853303B2 (ja) レジスタ初期化動作の最適化
US9361111B2 (en) Tracking speculative execution of instructions for a register renaming data store
US9135015B1 (en) Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US10013255B2 (en) Hardware-based run-time mitigation of conditional branches
US7711934B2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
WO2020024759A1 (en) System and method for store instruction fusion in a microprocessor
EP3103302A1 (en) Method and apparatus for enabling a processor to generate pipeline control signals
US9952871B2 (en) Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry
US20150039862A1 (en) Techniques for increasing instruction issue rate and reducing latency in an out-of-order processor
WO2016170438A1 (en) Run-time parallelization of code execution based on an approximate register-access specification
EP3306468A1 (en) A method and a processor
CN108920190B (zh) 用于确定从其恢复指令执行的恢复点的装置和方法
US11803388B2 (en) Apparatus and method for predicting source operand values and optimized processing of instructions
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
EP3278212A1 (en) Parallelized execution of instruction sequences based on premonitoring
WO2016103092A1 (en) Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US10296350B2 (en) Parallelized execution of instruction sequences
KR100953986B1 (ko) 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치
WO2017199106A1 (en) Single-thread speculative multi-threading

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130308

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130805

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130812

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131029

R150 Certificate of patent or registration of utility model

Ref document number: 5403973

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees