JP5294568B2 - アウトオブオーダー発行待ち行列中の依存命令をバックツーバックに発行する方法及び装置 - Google Patents

アウトオブオーダー発行待ち行列中の依存命令をバックツーバックに発行する方法及び装置 Download PDF

Info

Publication number
JP5294568B2
JP5294568B2 JP2007103519A JP2007103519A JP5294568B2 JP 5294568 B2 JP5294568 B2 JP 5294568B2 JP 2007103519 A JP2007103519 A JP 2007103519A JP 2007103519 A JP2007103519 A JP 2007103519A JP 5294568 B2 JP5294568 B2 JP 5294568B2
Authority
JP
Japan
Prior art keywords
instruction
cycle
instructions
during
order issue
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
JP2007103519A
Other languages
English (en)
Other versions
JP2007293842A (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 JP2007293842A publication Critical patent/JP2007293842A/ja
Application granted granted Critical
Publication of JP5294568B2 publication Critical patent/JP5294568B2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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

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サイクル中に複数の命令を考慮することができるようにし、そして、直後のサイクル中にそれらのうちの一つの命令をその待ち行列から発行するために選択できる方法に関する。
コンピュータ分野の当業者には良く知られているように、複数の命令を順次に発行し実行するために、それらの命令は、連続したサイクルで、発行待ち行列中に置かれる。しかし、アウトオブオーダー発行待ち行列では、幾つかの命令を、古い命令又は初期の命令に先立って発行するように選択できる。更によく知られているように、今日利用できるアウトオブオーダー発行待ち行列は、一つおきのサイクルよりも頻繁にはならないように依存命令を発行しており、従って依存命令がバックツーバックに発行することはサポートしていない。依存命令は、先行する命令を発行し実行するまで待機しなければならないものであり、それはその依存命令が必要とする不可欠なデータが利用できるようになるのを確実にするためである。バックツーバックの発行とは、待ち行列動作の2つの連続するサイクルの夫々の期間にその待ち行列から命令を発行することをいう。
今日利用できる設計のアウトオブオーダー発行待ち行列を説明するために、下記のコード・シーケンスを考えてみよう。(「Add」は「加算」命令を意味する。)
1)Add 1,x,x,
2)Add x,1,x
今日の設計のアウトオブオーダー発行待ち行列は、命令1の初期選択に続き、これらの両方の命令を発行するのに3つのサイクルをとる。連続するパイプライン・ステージを示すこの待ち行列のタイミング・ダイアグラムは下記のとおりである。
サイクル 0 1 2 3
1)Add 1,x,x, 選択 発行
2)Add x,1,x cmp 選択 発行
命令1はサイクル0中に発行のために選択され、サイクル1中に発行される。またサイクル1中に、その発行待ち行列中の全ての命令につき、宛て先とソースとの比較を通じて、依存性を解明する(前述の「cmp」)。この動作から、命令2のソース・レジスタが命令1のターゲット宛て先レジスタと一致すると判断される。その結果、命令2のソースが利用可能状態にセットされ、命令2のために必要なデータが利用可能になったことを示す。サイクル2では、命令2が発行のために選択され、サイクル3中に命令2を発行する。
前述の今日の設計を改良するために、そしてこれによって無駄なサイクル・タイムを回避するために、依存命令をバックツーバックに発行することを許容できるアウトオブオーダー発行待ち行列を提供するのが有益であろう。特に、サイクル2ではなくサイクル1中に命令2を選択させ、その結果、命令2をサイクル3中ではなくサイクル2中に発行するのが明らかに有益であろう。
従って、依存命令のバックツーバックの発行をサポートし、同時に最小量のハードウエアの追加しか必要としないアウトオブオーダー発行待ち行列を提供できるのが望ましい。
本発明の実施例では、アウトオブオーダー発行待ち行列中に含まれる2つまたはそれよりも多い命令が、その待ち行列の特定のサイクル中に評価される。これはそれに続く次のサイクル中に一つの命令を発行するよう命令を選択するためである。もし一つの命令がその特定のサイクル中に発行するように以前に指定されたなら、待ち行列中の1つ若しくはそれより多い命令のいずれかがその指定された命令に依存しているかどうかを判定するために、それらの命令が評価される。その評価を実行するために、待ち行列中に置かれる各命令が対応する論理エレメントのセットを伴う。所与の命令の論理エレメントは宛て先とソースとの比較をその命令のために提供する。本発明の一つの実施例において、特定のサイクル中に、その次のサイクル中に発行するための命令を選択する方法は、待ち行列中の最も古い発行可能な命令をその特定のサイクル中に識別する。或る命令がその特定のサイクル中に発行するように以前に指定されたとき、その待ち行列中の少なくとも第1の命令が一組の条件の各条件に適合するか判定される。一組の条件は第1の命令がその指定された命令に依存し且つ第1の命令がその最も古い発行可能な命令よりも古いという条件を少なくとも含む。第1の命令が各条件に適合する場合にのみその第1の命令は次の後続するサイクル中に発行するように選択される。
図1には、本発明を実施するのに使用できる汎用的なデータ処理システム100のブロック図を示す。データ処理システム100は本発明のプロセスを実施するためのコードや命令を有することができるようなコンピュータの典型例である。データ処理システム100はPCIローカル・バス・アーキテクチャを使用する。AGPやISAなど他のバス・アーキテクチャもPCIの代わりに使用できる。図1は、プロセッサ102及びメインメモリ104がホスト/PCIキャッシュ/ブリッジ108を介してPCIローカル・バス106に接続されていることを示す。ホスト/PCIキャッシュ/ブリッジ108はまたプロセッサ102のために統合メモリ・コントローラ及びキャッシュ・メモリを含むことができる。
更に図1には、LANアダプタ112、SCSIホスト・バス・アダプタ110及び拡張バス・インターフェース114が夫々PCIローカル・バス106に直接コンポーネント接続により接続されていることを示す。オーディオ・アダプタ116、グラフィックス・アダプタ118及びオーディオ/ビデオ・アダプタ122がPCIローカル・バス106に、拡張スロット中に挿入されたアドイン・ボードによって接続されている。SCSIホスト・バス・アダプタ110はハード・ディスク・ドライブ120およびCD−ROMドライブ124をシステムに接続する。
プロセッサ102上で稼動するオペレーティング・システムはマイクロソフト社から入手できるWINDOWS(登録商標) XPなど、市販されているオペレーティング・システムであってよい。オペレーティング・システム及びアプリケーションのための命令又はプログラムは、ハード・ディスク・ドライブ120などの記憶装置に置かれ、プロセッサ102により実行するためにメインメモリ104にロードできる。
本発明では、アウトオブオーダー発行待ち行列(以下、単に待ち行列ということがある)の中に挿入され若しくはそこで受け取られた各命令は、それに対応する論理エレメントのセットを伴う。一つの命令のための論理エレメントはその命令のために宛て先とソースとの比較情報を提供し、またその命令を発行する準備ができたことを示すための他の情報を提供する。論理エレメントのセットは、対応する命令がその待ち行列に挿入される直前に形成され若しくは発生され、そしてその対応する命令と一緒にその待ち行列中を移動される。論理エレメントのセットについては、図3と関連して詳細に説明する。論理エレメントのセットを提供することによって、或る命令と他の以前に選択された命令との間にバックツーバック依存性があるか調べるためには最少量の比較だけを行えばよいことが分かった。
本発明の実施例では、待ち行列中の3若しくはそれより多い命令を、現在のサイクル中で考慮することができ、その直後のサイクル中に発行するように選択できる。具体的には、もしも或る命令が直前のサイクル中に指定されていて、現在のサイクル中に発行するようになっていたら、その指定された命令の直後に順次位置づけられた複数の命令はそれらがその指定された命令に対してバックツーバック依存性を有しているかどうかを調べるために評価される。その評価される命令に対応する論理エレメントのセットがこの手順で使用される。現在のサイクル中に、その評価された命令のうちの、発行可能であると判明した一つの命令か、そうでなければ最も古い発行可能な命令が選択されてその直後のサイクルで発行される。この評価手順は図2に関連して詳しく説明する。
図2は、本発明の実施例の一連のステップを示すフローチャートであり、アウトオブオーダー発行待ち行列で発行するための命令を選択する方法を示す。図2の方法を開始すると、まずステップ202では、何らかの命令が直前のサイクル中に選択又は指定されたか否かを判定する。これは現在のサイクル中にその命令を発行するためである。何の命令も選択されていなければ、ステップ204で、現在のサイクルで発行可能になっている最も古い命令が発行待ち行列で選択される。他方、もし直前のサイクル中にある命令が選択されたなら、ステップ206を実行する必要がある。すなわち、直前のサイクル中に選択された命令に第1の命令が依存するか判定する。ここで、第1の命令とは、現在のサイクル中に発行するために、直前のサイクル中に選択された命令の一つ上の行または位置にある命令である。従って、第1の命令は発行待ち行列中において直前のサイクルで選択された命令にすぐ続く。もしステップ206がイエスであれば、第1の命令の発行可能状態を確立するための重要な条件が満たされたことになる。従って、ステップ208に進むことが必要となる。
ステップ208は、第1の命令が、直前のサイクルで選択された命令以外の命令と関連する他の何らかのソースに依存するかどうかを判定することを必要とする。もしイエスであれば、すべてのこれらのソースが利用可能か判定する必要がある。もし利用可能であれば、ステップ208の結果はイエスであり、第1の命令の発行準備が完了する。その上、ステップ210が実行される必要がある。ステップ210では、ステップ204で選択された最も古い発行可能な命令に関して第1の命令が評価される。即ち、その2つの命令のうちどちらが実際に最も古いかを判定するように評価される。もし第1の命令が古いと判明したら、ステップ212で示すように、それは待ち行列の次のサイクル中に発行するように選択され、図2の方法が終了する。
ステップ206又は208のいずれかでもし発行不可と判明したら第1の命令は選択できない。もしそれが発行可能であっても、ステップ210で最も古い命令でないと判明したら、それは選択できない。図2は更に、ステップ206乃至210のいずれかがノーなら、図2の方法はステップ214に進むことを示す。ステップ214は前述のステップ206に似ているが、直前のサイクル中に選択された命令より二つ上の行に位置づけられた命令である第2の命令が対象になっている点が異なる。ステップ214は第2の命令が直前のサイクル中に選択された命令に依存するか判定する。もしステップ214の結果がイエスであれば、ステップ216に進む必要がある。
ステップ216では、直前のサイクルで選択された命令以外の命令に関連する他の何らかのソースに第2の命令が依存するか判定することを必要とする。もしイエスであれば、これらのソースの全てが利用可能であるか判定する必要がある。利用可能なら、ステップ216の結果はイエスであり、第2の命令を発行する準備が整ったことを示す。その上で、ステップ218を実行する必要がある。ステップ218では、第2の命令が、ステップ204で選択された最も古い発行可能な命令に関し評価され、その2つの命令のうちどちらが古いかを判定する。もし第2の命令の方が古いと判明したなら、ステップ220で示すように、それが待ち行列の次のサイクル中に発行するように選択され、図2の方法が終了する。
第1の命令と同様に、第2の命令は、もしステップ214乃至218のいずれかがノーであれば、選択できない。これは第2の命令を発行する準備が整っていないか、又はその最も古い発行可能な命令ほど古くはないかのいずれかであることを示す。このように、ステップ214乃至218のいずれかがノーの結果を生じるなら、ステップ204の最も古い発行可能な命令が、次に続くサイクル中に発行するように選択されることを図2は示す。
図3には、図2の方法の個々のステップを実施するように構成された論理コンポーネント及びマルチプレクサプレクサを示す。図3は、命令(a)乃至(f)を含む命令セット302を含む。これらの命令は、後で発行され実行されるために、アウトオブオーダー発行待ち行列に位置づけられる。命令セット302中の命令は、図3でセット302の頂部から底部に進むにつれ徐々に古くなる。従って命令(d)はどの命令(a)乃至(c)よりも古く、従って長く待ち行列にいる。
前述のとおり、命令は待ち行列から発行される前に発行可能状態でなければならない。従って、図3は制御論理を含むブロック304を示している。ブロック304の各行(a)乃至(f)が命令(a)乃至(f)の一つに対応しており、またそのための論理エレメントのセットを含む。この制御論理は個々の命令のソースが利用可能であるかどうかを示す。そこではそれらの命令は待ち行列中のもっと古い命令即ち命令セット302における下方の行の命令に依存している。論理ブロック304中のフィールドは以下のとおりである。
V=有効
S0 RDY=S0が利用可能
S1 RDY=S1が利用可能
S0 IR=ソース0が現在行の一つ下の行にバックツーバック依存性を有する
S1 IR=ソース1が現在行の一つ下の行にバックツーバック依存性を有する
S0 2R=ソース0が現在行の二つ下の行にバックツーバック依存性を有する
S1 2R=ソース1が現在行の二つ下の行にバックツーバック依存性を有する
ブロック304に含まれる論理エレメントのセットから、論理コンポーネント306が個々の依存命令が発行可能か判定することができる。この情報から、マルチプレクサ制御発生器308はマルチプレクサプレクサ(MUX)310に向けられる情報信号Eを提供する。情報信号Eは待ち行列の現在のサイクル中に、最も古い発行可能な命令であると判明した命令を識別する。図3は、マルチプレクサ310が命令セット302の個々の命令にも接続されている様子を示す。その結果、情報信号Eに応答して、マルチプレクサ310は最も古い発行可能な命令を選択し、そのような命令をマルチプレクサ312への入力として供給する。
図3は情報信号Eがマルチプレクサ314への入力として提供されることを示す。マルチプレクサ314はもう一つの入力としてマルチプレクサ316の出力を受ける。マルチプレクサ314の出力はラッチ318に提供される。以下で更に詳述するが、ラッチ318は、現在のサイクル中に発行するため直前のサイクル中に選択若しくは指定された命令セット302中の命令を示す情報を含む。ラッチ318は論理コンポーネント320及び322に接続され、両コンポーネント320及び322に直前のサイクルで選択された命令を識別するか、または直前のサイクル中に発行のために選択された命令がないことを示す。
ラッチ318により提供される情報に応答して、論理コンポーネント320はマルチプレクサ選択信号Aを発生する。この選択信号Aは、直前のサイクルで選択された命令の直ぐ上の行にある命令を第1の命令として選択する。具体的には、論理コンポーネント320は、セット302の個々の命令に接続されるマルチプレクサ324にマルチプレクサ選択信号Aを送る。選択信号Aを受け取ると、マルチプレクサ324は第1の命令を一つの出力として提供し、そのような出力をマルチプレクサ328にそこへの入力として提供する。例えば、もし命令(d)が現在のサイクル中に発行するために直前のサイクル中に選択された命令であった場合、ブロック302においてその直ぐ上の命令(c)が第1の命令である。
同様にして、論理コンポーネント322はラッチ318によって提供される情報に応答し、マルチプレクサ選択信号Bを発生する。信号Bは、直前のサイクルで選択された命令の2行上にある命令を第2の命令として選択する。このマルチプレクサ選択信号Bはマルチプレクサ326に向けられる。マルチプレクサ326もセット302の個々の命令にも接続される。選択信号Bを受け取ると、マルチプレクサ326は出力として第2の命令を提供し、マルチプレクサプレクサ328にそのような出力をそこへの第2の入力として提供する。もし直前のサイクルで選択された命令が命令(d)であったなら、命令(b)が第2の命令となろう。
図3には、論理ブロック304に結合された論理コンポーネント330を示す。コンポーネント330中のレディ論理は、個々の命令がレディすなわち発行可能であるか否かをソース比較に基づいて判定し、この情報が両マルチプレクサ332及び334に提供される。マルチプレクサ332及び334は更にマルチプレクサ選択信号A及びBを夫々受け取る。
選択信号Aに応答して、マルチプレクサ332は前述の第1の命令に関係する出力を提供する。マルチプレクサ332は、もし第1の命令のための論理エレメントのセットがその第1の命令が発行可能であることを示すなら、1という出力信号Cを提供する。そうでないなら、その出力信号は0になる。信号Cは、その出力が1か0かに従って、夫々マルチプレクサ324又はマルチプレクサ326の出力のいずれかを選択するために、マルチプレクサ328に選択信号として供給される。マルチプレクサ328の出力は、もし第1の命令が発行可能であると判明するなら、第1の命令に関係する。そうなでければ、マルチプレクサ328の出力は第2の命令に関係する。マルチプレクサ328の出力は、最も古い発行可能な命令を表す信号を第1の入力に受け取るマルチプレクサ312への第2の入力として機能する。
選択信号Bに応答して、マルチプレクサ334は、第2の命令が発行可能か否かを示すために、第2の命令に関係する出力を提供する。マルチプレクサ334の出力は論理コンポーネント336への入力として与えられる。論理コンポーネント336はまた信号C及びEを入力として受け取り、マルチプレクサ312への出力としてマルチプレクサ選択信号Dを生じる。
論理コンポーネント336は、第1の命令が発行可能であることを出力信号Cが示すとき、第1の命令が最も古い発行可能な命令よりも古いかどうか判定するよう動作する。この判定の結果はマルチプレクサ選択信号Dによって表され、もしも第1の命令の方が古いと判明したら、この選択信号Dはマルチプレクサ328の出力をマルチプレクサ312に選択させる。そうでなければ、マルチプレクサ312はマルチプレクサ310の出力を選択する。
第1の命令が発行可能でないことを出力信号Cが示すとき論理コンポーネント336は第2の命令が発行可能か、そしてもしそうなら、それが最も古い発行可能な命令よりも古いか判定するように動作する。この判定の結果は再び選択信号Dによって表される。もし第2の命令が発行可能であれば、信号Dはマルチプレクサ312に、マルチプレクサ328か又は310のいずれかを選択させるようにする。そのいずれが選択されるかは第2の命令及び最も古い発行可能な命令のいずれが古いかが判明することに従う。
マルチプレクサ332及び334から論理コンポーネント336に送られる出力は、現在のサイクル中に発行するための命令が直前のサイクルで何も選択されなかったか、又は第1及び第2の命令のいずれも発行可能でないことを示すことがある。このいずれかの事象が生じる場合は、論理コンポーネント336がマルチプレクサ312にマルチプレクサ310の出力を選択させ、その結果最も古い発行可能な命令を選択させるようにマルチプレクサ選択信号Dを送る。
図3に示されるラッチ338は、マルチプレクサ312の出力によって提供される命令を受け取り、且つその命令がFPU340に発行されるまでその命令を保持するように配設される。図3は、選択された命令をラッチ318にロードして、次に続くサイクル中に使用できるようにするために、選択信号C及びDによって夫々動作されるマルチプレクサ316及び314を更に示す。
本発明の前述の実施例は直前のサイクルで選択された行の上の2つの行を見て、バックツーバック依存性を判定する。しかし、本発明の他の実施例はバックツーバック依存命令を発行するために、もっと多くの行を見るようにすることができる。
本発明は完全にハードウエアの実施例、完全にソフトウエアの実施例、あるいはハードウエア及びソフトウエアを組み合わせた実施例といった形態をとることができる。好適な実施例では、本発明は、以下に限定されるものではないが、集積回路、ファームウエア、マイクロコードなどを含むハードウエアで実施される。
また本発明は、コンピュータ若しくは任意の命令実行システムにより、又はそれに関連して使用されるプログラム・コードを提供する、コンピュータ可用媒体又はコンピュータ可読媒体からアクセス可能なコンピュータ・プログラムの形態をとることができる。この説明の目的上、コンピュータ可用媒体又はコンピュータ可読媒体は、命令実行システム、装置若しくはデバイスにより、又はそれに関連して使用されるプログラムの内蔵、記憶、通信、伝播、又は移送が可能な任意の有形装置であってよい。
この媒体は、電子的、磁気的、光学的、電磁的、赤外線の、若しくは半導体のシステム(若しくは装置、デバイス)或いは伝送媒体であってよい。コンピュータ可読媒体の例は半導体若しくは固体素子のメモリ、磁気テープ、取り外し可能なフレキシブル・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、磁気ハードディスク及び光ディスクを含む。今日の光ディスクの例は、CD−ROM、CD−R/W及びDVDを含む。
プログラム・コードを記憶したり、実行したりするのに適するデータ処理システムは、メモリ素子にシステム・バスを介して直接的又は間接的に結合された少なくとも一つのプロセッサを含む。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、及び少なくとも幾つかのプログラム・コードを一時的に記憶するキャッシュ・メモリを含むことができる。キャッシュ・メモリは実行中にそのようなコードを大容量記憶装置から何回も取り出す必要性を少なくする。
入出力装置即ちI/O装置(以下に制限されるものではないが、キーボード、ディスプレイ、ポインティング・デバイスなど)をこのシステムに直接的に若しくはI/Oコントローラを介して結合することができる。
ネットワーク・アダプタもこのシステムに結合することができ、それによりデータ処理システムは、他のデータ処理システム、遠隔のプリンタ、記憶装置などに使用ネットワーク又は公衆ネットワークを介して結合することができる。モデム、ケーブル・モデム及びEthernet(登録商標)カードが、現在利用できる型のネットワーク・アダプタのほんの一例である。
本発明の記述は説明目的で行われたものであり、ここに開示した特定の形態に本発明を制限する意図はない。多くの変形例は当業者には容易に考えられるであろう。実施例は本発明の原理、実用的な応用例をもっとも良く示すために選んで記述した。これはまたこの分野の当業者が特定の使用目的に合わせていろいろな変形を加えたいろいろな実施例を理解できるようにするためである。
本発明の実施例を実施するのに使用できるコンピュータ又はデータ処理装置のブロック図である。 本発明の実施例に従う方法の個々のステップを示すフローチャートである。 図2の実施例を実施するのに使用されるマルチプレクサ及び関連コンポーネントの構成を示すブロック図である。
符号の説明
302 命令セット
304 論理ブロック
306 レディ論理
308 マルチプレクサ制御発生器
312 マルチプレクサ(MUX)
318、338 ラッチ
320、322 論理コンポーネント
330 レディ論理
336 論理コンポーネント

Claims (12)

  1. 複数の命令を含むアウトオブオーダー発行待ち行列を有し、前記アウトオブオーダー発行待ち行列が一連のサイクル中の少なくとも幾つかのサイクル中に命令を発行するように動作するコンピュータ・システムにいて、前記一連のサイクル中の特定のサイクル中に、当該特定のサイクルの直後のサイクル(以下、直後のサイクルという)中に発行するための命令を選択する方法であって、
    前記特定のサイクルの直前のサイクルで命令が選択されたかどうかを判定するステップと、
    前記直前のサイクルで前記命令が選択されていることに応じて、
    前記アウトオブオーダー発行待ち行列中の、最も古い発行可能な命令を、前記特定のサイクル中に識別するステップと、
    記アウトオブオーダー発行待ち行列中の少なくとも第1の命令が前記選択された命令に依存するという条件、及び前記第1の命令が前記識別された最も古い発行可能な命令よりも古いという条件を少なくとも含む、一組の条件の各条件に適合するか前記特定のサイクル中に判定するステップと、
    前記第1の命令が前記各条件のいずれにも適合する場合に、前記直後のサイクル中に前記第1の命令を発行するように当該第1の命令を前記特定のサイクル中に選択するステップと
    を含む、前記方法。
  2. 前記第1の命令が、前記選択された命令夫々関連付けられた複数の命令中に含まれ、
    前記方法は、
    前記複数の命令のうちのいずれかの命令が前記各条件に適合するか判定するために前記複数の命令を順次に評価するステップを更に含む、
    請求項1に記載の方法。
  3. 前記複数の命令のうちの所与の命令が前記各条件に適合すると判定されるとき、前記所与の命令が前記直後のサイクル中に発行するように選択され、前記複数の命令のうちの所与の命令が前記各条件に適合しないと判定されるとき、前記最も古い発行可能な命令が選択される、請求項2に記載の方法。
  4. 前記複数の命令の各命令が対応する論理エレメントのセットを有し、
    前記複数の命令のうちの所与の命令に対応する論理エレメントのセットを使用して、前記所与の命令が前記選択され命令に依存するかどうかを判定する、請求項2に記載の方法。
  5. 前記所与の命令に対応する論理エレメントのセットは、前記所与の命令が前記アウトオブオーダー発行待ち行列中に入る直前に発生される、請求項4に記載の方法。
  6. 前記所与の命令が前記一組の条件のうちの少なくとも幾つかの条件に適合するか判定するために、マルチプレクサ及び論理ゲートが前記所与の命令の論理エレメント・セットとともに作動される、請求項5に記載の方法。
  7. 前記一組の条件は、前記複数の命令のうちの一つの命令が前記選択された命令に依存しなければならないという条件と、もし前記一つの命令が前記前記選択された命令以外の一つ若しくはそれよりも多い他のソースに依存するなら、前記他のソースが全て利用可能でなければいけないという条件とを更に含む、請求項2に記載の方法。
  8. 前記直前のサイクルで前記命令が選択されていないことに応じて、
    前記アウトオブオーダー発行待ち行列中の、最も古い発行可能な命令を、前記特定のサイクル中に選択するステップと、
    当該選択された最も古い発行可能な命令を前記直後のサイクル中に発行するステップと
    を更に含む、請求項1に記載の方法。
  9. 複数の命令が前記アウトオブオーダー発行待ち行列中の順次に配列される位置に夫々位置づけられ、且つ前記複数の命令の各命令の位置が前記選択された命令の位置と特定の関係を有する、請求項2に記載の方法。
  10. 前記複数の命令のうちの前記第1の命令及び第2の命令が、前記アウトオブオーダー発行待ち行列の順次配列にける前記命令の位置に対し、夫々一つ後ろの位置及び二つ後ろの位置に置かれている、請求項9に記載の方法。
  11. 複数の命令を含むアウトオブオーダー発行待ち行列を有し、前記アウトオブオーダー発行待ち行列が一連のサイクル中の少なくとも幾つかのサイクル中に命令を発行するように動作するコンピュータ・システムにいて、前記一連のサイクル中の特定のサイクル中に、当該特定のサイクルの直後のサイクル(以下、直後のサイクルという)中に発行するための命令を選択するためのコンピュータ・プログラムであって、コンピュータに、請求項1〜10のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
  12. 複数の命令を含むアウトオブオーダー発行待ち行列を有し、前記アウトオブオーダー発行待ち行列が一連のサイクル中の少なくとも幾つかのサイクル中に命令を発行するように動作するコンピュータ・システムにいて、前記一連のサイクル中の特定のサイクル中に、当該特定のサイクルの直後のサイクル(以下、直後のサイクルという)中に発行するための命令を選択するための装置であって、
    前記特定のサイクルの直前のサイクルで命令が選択されたかどうかを判定し、前記直前のサイクルで前記命令が選択されていることに応じて、前記アウトオブオーダー発行待ち行列中の、最も古い発行可能な命令を、前記特定のサイクル中に識別するための第1の論理コンポーネントと、
    記アウトオブオーダー発行待ち行列中の少なくとも第1の命令が前記選択された命令に依存するという条件、及び前記第1の命令が前記識別された最も古い発行可能な命令よりも古いという条件を少なくとも含む、一組の条件の各条件に適合するか前記特定のサイクル中に判定するための、マルチプレクサ及び論理ゲートを含む構成と、
    前記第1の命令が前記各条件のいずれにも適合する場合に、前記直後のサイクル中に前記第1の命令を発行するように当該第1の命令を前記特定のサイクル中に選択するための第2の論理コンポーネントと
    を含む、前記装置。
JP2007103519A 2006-04-25 2007-04-11 アウトオブオーダー発行待ち行列中の依存命令をバックツーバックに発行する方法及び装置 Expired - Fee Related JP5294568B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/380078 2006-04-25
US11/380,078 US7380104B2 (en) 2006-04-25 2006-04-25 Method and apparatus for back to back issue of dependent instructions in an out of order issue queue

Publications (2)

Publication Number Publication Date
JP2007293842A JP2007293842A (ja) 2007-11-08
JP5294568B2 true JP5294568B2 (ja) 2013-09-18

Family

ID=38620825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007103519A Expired - Fee Related JP5294568B2 (ja) 2006-04-25 2007-04-11 アウトオブオーダー発行待ち行列中の依存命令をバックツーバックに発行する方法及び装置

Country Status (4)

Country Link
US (2) US7380104B2 (ja)
JP (1) JP5294568B2 (ja)
CN (1) CN100501666C (ja)
TW (1) TW200813820A (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110004881A1 (en) * 2008-03-12 2011-01-06 Nxp B.V. Look-ahead task management
CN101770357B (zh) * 2008-12-31 2014-10-22 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US8612959B2 (en) 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
US10223126B2 (en) * 2017-01-06 2019-03-05 International Business Machines Corporation Out-of-order processor and method for back to back instruction issue
CN111984387A (zh) * 2020-08-26 2020-11-24 上海兆芯集成电路有限公司 用于调度发布队列中指令的方法及处理器
US11531548B1 (en) * 2021-06-25 2022-12-20 International Business Machines Corporation Fast perfect issue of dependent instructions in a distributed issue queue system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
JPH0820949B2 (ja) * 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp Befehlsablauffolgeplanung von einem risc-superskalarprozessor
US5761476A (en) * 1993-12-30 1998-06-02 Intel Corporation Non-clocked early read for back-to-back scheduling of instructions
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US5802386A (en) * 1996-11-19 1998-09-01 International Business Machines Corporation Latency-based scheduling of instructions in a superscalar processor
US5963723A (en) * 1997-03-26 1999-10-05 International Business Machines Corporation System for pairing dependent instructions having non-contiguous addresses during dispatch
US6249855B1 (en) * 1998-06-02 2001-06-19 Compaq Computer Corporation Arbiter system for central processing unit having dual dominoed encoders for four instruction issue per machine cycle
US6304953B1 (en) * 1998-07-31 2001-10-16 Intel Corporation Computer processor with instruction-specific schedulers
EP1121635B1 (en) * 1998-08-24 2004-11-24 Advanced Micro Devices, Inc. Mechanism for load block on store address generation and universal dependency vector
US6308260B1 (en) * 1998-09-17 2001-10-23 International Business Machines Corporation Mechanism for self-initiated instruction issuing and method therefor
JP3490006B2 (ja) * 1998-12-17 2004-01-26 富士通株式会社 命令制御装置及びその方法
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
US6728866B1 (en) * 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
US7844799B2 (en) * 2000-12-23 2010-11-30 International Business Machines Corporation Method and system for pipeline reduction
US6512397B1 (en) * 2001-08-20 2003-01-28 International Business Machines Corporation Circuit structures and methods for high-speed low-power select arbitration
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
JP3816845B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
US20040139299A1 (en) * 2003-01-14 2004-07-15 International Business Machines Corporation Operand forwarding in a superscalar processor
US7350056B2 (en) * 2005-09-27 2008-03-25 International Business Machines Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system

Also Published As

Publication number Publication date
US7669038B2 (en) 2010-02-23
US7380104B2 (en) 2008-05-27
US20070250687A1 (en) 2007-10-25
CN101063933A (zh) 2007-10-31
US20080209178A1 (en) 2008-08-28
CN100501666C (zh) 2009-06-17
TW200813820A (en) 2008-03-16
JP2007293842A (ja) 2007-11-08

Similar Documents

Publication Publication Date Title
JP5294568B2 (ja) アウトオブオーダー発行待ち行列中の依存命令をバックツーバックに発行する方法及び装置
KR101148495B1 (ko) 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치
US20060174091A1 (en) Instruction grouping history on fetch-side dispatch group formation
US9940133B2 (en) Operation of a multi-slice processor implementing simultaneous two-target loads and stores
JP2007536626A (ja) ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
US9983875B2 (en) Operation of a multi-slice processor preventing early dependent instruction wakeup
US10970079B2 (en) Parallel dispatching of multi-operation instructions in a multi-slice computer processor
US10031757B2 (en) Operation of a multi-slice processor implementing a mechanism to overcome a system hang
US10564691B2 (en) Reducing power consumption in a multi-slice computer processor
US20170329715A1 (en) Hazard avoidance in a multi-slice processor
JP3756410B2 (ja) 述語データを提供するシステム
KR20010001022A (ko) 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치
JP4745960B2 (ja) マイクロプロセッサにおいてデータ推測オペレーションを識別する推測ポインタ
US20170344378A1 (en) Managing an effective address table in a multi-slice processor
US8051275B2 (en) Result path sharing between a plurality of execution units within a processor
US9983879B2 (en) Operation of a multi-slice processor implementing dynamic switching of instruction issuance order
US7475223B2 (en) Fetch-side instruction dispatch group formation
US10296337B2 (en) Preventing premature reads from a general purpose register
US10120683B2 (en) Supporting even instruction tag (‘ITAG’) requirements in a multi-slice processor using null internal operations (IOPs)
EP4208783A1 (en) Alternate path for branch prediction redirect
US7490226B2 (en) Method using vector component comprising first and second bits to regulate movement of dependent instructions in a microprocessor
JP2001243066A (ja) パイプライン処理方法並びにその方法を利用するパイプライン処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121026

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121031

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121121

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121130

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121130

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20121130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130405

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130405

TRDD Decision of grant or rejection written
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130524

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130524

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130611

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees