JP2008527559A - プロセッサ及びその命令発行方法 - Google Patents

プロセッサ及びその命令発行方法 Download PDF

Info

Publication number
JP2008527559A
JP2008527559A JP2007550896A JP2007550896A JP2008527559A JP 2008527559 A JP2008527559 A JP 2008527559A JP 2007550896 A JP2007550896 A JP 2007550896A JP 2007550896 A JP2007550896 A JP 2007550896A JP 2008527559 A JP2008527559 A JP 2008527559A
Authority
JP
Japan
Prior art keywords
instruction
target operand
stage
operand
cycle
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.)
Withdrawn
Application number
JP2007550896A
Other languages
English (en)
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.)
NXP BV
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Publication of JP2008527559A publication Critical patent/JP2008527559A/ja
Withdrawn legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3824Operand accessing
    • 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, 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, 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Abstract

処理されるための命令をデコードして、ある種類の命令を取得するステップと、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算するステップと、前記サイクル数に従って、その命令がライトバックステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けするステップとを含み、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした命令発行方法。

Description

本発明は、プロセッサに関し、特に、プロセッサが使用する命令発行方法及びプロセッサの対応する命令発行回路に関する。
電子技術の開発により、プロセッサのデータ処理速度を更に増大させる方法についてコンピュータ・アーキテクチャ研究の最もホットな問題の1つになっている。
IPC(1サイクル単位で遂行される命令)の平均数は、プロセッサのデータ処理速度を算定するのに重要な目安である。通常のパイプライン式のスカラプロセッサは、1サイクルあたり1つの命令の最大処理速度を達成することができる(即ち、IPC=1)。ただし、多くの場合、パイプライン式のスカラプロセッサのIPCは1未満である。
現在、パイプライン式のスーパースカラプロセッサが、プロセッサ性能を改善するために応用されている。パイプライン式のスーパースカラプロセッサにおいて、複数の命令フェッチ部、複数の命令デコード部、対応するアルゴリズムを実行するための複数の関数部、及び複数の結果書き込み部を設けることで、1サイクルで、動的スケジュールを用いることにより、複数の命令をあるパイプラインステージから次のパイプラインステージへと移行することができるので、パイプライン式のスーパースカラプロセッサは1サイクルあたり複数の命令を実行できる(IPC>1)。
図1に、パイプラインを表す7つのステージのうち、命令実行ステージの命令nを概略的に示す。その7つのステージは、それぞれIF(命令フェッチ)ステージ、ID(命令デコード及びリネーム)ステージ、IS(命令発行)ステージ、RR(レジスタ読み出し)ステージ、EX(命令実行)ステージ、WB(ライトバック)ステージ、及びRET(命令リタイアメント)ステージである。
以下、その7つのステージを一例として取りあげ、スーパースカラプロセッサの動作原理を簡単に説明する。
まず、複数の命令フェッチ部は、IFステージで命令キャッシュから複数の命令を同時にフェッチし、次に、対応する命令デコード部は、IDステージで複数のデコードする命令を、デコードするとともにリネームし、その複数のデコードした命令を発行キューへと置く。次に、決定手順(即ち、発行ロジックの決定手順)がISステージで複数のデコードした命令に対して実行され、発行キューの各デコードした命令を発行できるか否かについて決定し、RRステージに入る。
パイプライン式のスーパースカラプロセッサのIPC性能を改善するために、発行キューのそのデコードした命令は、続くEXステージでより多くの命令を実行するように可能な限り多く同時に発行すべきである。
デコードした命令を発行することができるか否かに影響する要素は、主に、デコードした命令を実行する上で必要とされるソースオペランドが準備されているか否か、及び、関数部(例えば、浮動小数点加算部及び乗算/除算部)が利用可能か否かを含む。その2つの要素に対応して、ISステージで実行すべき発行ロジックの決定手順は、ウェイクアップロジックの決定手順及び選択ロジックの決定手順からなる。
1.ウェイクアップロジックの決定手順
通常、発行キューの同時実行のために検出すべき1組の命令グループは、ウィンドウ(又は、発行ウィンドウ)と称される。パイプライン式のスーパースカラプロセッサでは、発行ウィンドウ内の検出すべき命令のソースオペランドは、そのパイプラインで実行された命令から生成される目的オペランドによって決定される。従って、そのパイプラインのEXステージで実行される命令の結果(即ち、実行した命令の目的オペランド)がサイクル毎にデータバスを介して送信されると、発行ウィンドウ内の検出すべき各命令は、それ自身のソースオペランドと送信された目的オペランドとをそれぞれ比較し、送信された目的オペランドが、その命令が必要とするソースオペランドであるか否かを判別する。この比較の決定手順がウェイクアップロジックの決定手順である。
検出すべき命令により必要とされるソースオペランドの1つが、送信された目的オペランドと対応する場合には、検出すべき命令のソースオペランドが準備されているか否かを示す、対応するタグが“取得可能”に設定され、検出すべき命令により必要とされるソースオペランドの全てが、準備済み、即ち全てのソースオペランドのタグが“取得可能”である場合には、検出すべき命令は、発行すべき状態に入る。
ウェイクアップロジックの決定手順の実行中、発行ウィンドウが大きいほど、検出すべき命令の数が多くなり、発行すべき状態に入る命令の可能性が高くなり、発行キューのデコードした命令の発行数の増大に味方することになる。しかしながら、発行ウィンドウのサイズがむやみに増大すると、送信する目的オペランドに対するデータバスの長さをそれに応じてより長くすることが必要とされ、目的オペランドを送信することによってもたらされるレイテンシの延長を生じさせることになる。更に、発行ウィンドウ内の検出すべき命令の数を増大させて、実行される比較動作の数も増大し、更にウェイクアップロジックの決定手順を実行する時間を長引かせることになる。従って、発行ウィンドウのサイズは、命令発行数を適切に増大させるように設定される必要がある。
2.選択ロジックの決定手順
ウェイクアップロジックの決定手順の後、発行すべき状態に入る各命令は、次のRRステージに入る前に選択ロジックの決定手順を必要とする。その理由は、(1)発行すべき状態に入る命令の数は、プロセッサの関数部の数より多いことがありうること、及び(2)幾つかの命令を関数部のサブ組によってのみ実行できることがあり、例えば、プロセッサに1つの乗算器のみがある場合に、全ての乗算演算をこの乗算器で実行しなければならない。それ故、命令が、選択ロジックの決定手順を経て発行すべき状態の命令から選択的に発行されると、次のEXステージでのリソースコンフリクトを効果的に抑制することができる。
更に、選択ロジックの決定手順の後に、その命令に依存する次の命令(例えば、次の命令の実行に必要とされるソースオペランドは発行された命令を実行することにより生成される目的オペランドから来ている)は、発行すべき状態に既に入っている命令が発行される後でのみ、そのウェイクアップロジックの決定手順を有効とできる。パイプライン式のスーパースカラプロセッサでは、ウェイクアップロジックの決定手順及び選択ロジックの決定手順からなる“クリティカルループ”として知られるその方式は、依存性の命令間のデータコンフリクトを効果的に抑制することができる。
上述のウェイクアップロジックの決定手順及び選択ロジックの決定手順を経てISステージで同時に発行される命令に関して、それら命令は、RRステージで、レジスタファイルの対応する物理レジスタから、それぞれのソースオペランドを読み取り、次に選択ロジックの決定手順の際に選択された関数部にて、続くEXステージで対応する関数演算を実行する。ここで、異なる演算は異なるサイクルを必要としうる。例えば、整数加算演算を実行するのに必要とされるサイクル数は、通常、浮動少数点の乗算演算のサイクル数よりも短い。従って、RRステージからEXステージへと同時に移行する命令は、EXステージで生成した命令の演算結果を得るのに異なるサイクルとなりうる。
それぞれのEXステージで演算結果を得た後、実行した命令の各々は、それぞれWBステージでレジスタファイルの対応する物理レジスタへと演算結果(即ち、目的オペランド)を格納し、そのパイプラインにおける発行ウィンドウのISステージでの次の命令がウェイクアップロジックの決定手順を実行するように、上述したデータバスを介して目的オペランドを送信する。
WBステージの後、実行された命令は、最終的にRETステージでそのパイプラインの全ての操作手順を終了することになる。
発行ウィンドウ内の検出すべきデコードした命令の数を増大することにより、IPCを改善することは、明らかに効果的な方法であることは上述の説明から容易に分かる。しかしながら、上述したように、デコードした命令の数の増大で、ウェイクアップロジックの決定手順を実行する時間も著しく増大し、それはIPC性能の劣化に確実に通じるものとなる。
従って、この矛盾を解決するために、命令を発行する新規な方法を提案することが必要とされる。そして、これが本発明の目的である。
本発明の目的の1つは、命令発行方法を提供することにあり、その方法によって、ウェイクアップロジックの決定手順を実行する時間を減少させ、プロセッサのIPC性能を改善する。
本発明によるパイプライン式のプロセッサにて用いられる命令発行方法を提供し、本発明による命令発行方法は、処理されるための命令をデコードして、ある種類の命令を取得するステップと、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算するステップと、前記サイクル数に従って、その命令がライトバックステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けするステップとを含み、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした方法である。
本発明によるパイプライン式のプロセッサにて用いられる命令発行装置を提供し、本発明による命令発行装置は、処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算する計算部と、前記サイクル数に従って、その命令がライトバックステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けする制御部とを備え、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした装置である。
本発明によるパイプライン式のプロセッサを提供し、本発明によるプロセッサは、処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算する計算部と、前記サイクル数に従って、その命令がWBステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けする制御部であって、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、前記制御部と、前記命令に対して対応する演算を実行し、前記命令の前記目的オペランドを生成する実行部とを備える。
本発明による、上述及び他の目的、特徴及び他の利点は、図面に伴う以下の詳細な説明により明確に理解される。
本発明の好適な実施例に関して、以下、各図を参照して詳細に説明する。
各図では、同一又は同様な要素には同一の参照番号を付している。
本発明にて提案される命令発行方法に関して、まず、デコードした命令によってEXステージで占有されるサイクル数は、デコードした命令の演算種類に従って計算され、占有されるサイクルは、デコードした命令がRRステージに対して発行されるときにカウントされ、発行キューの命令にまだ依存する次の命令は、WBステージに入る後でのみ、その次の命令が発行すべき状態に入ることが許容されるわけではなく、EXステージの最後のサイクルの1サイクル前に、発行すべき状態に入ることが許容される。
本発明にて提案される命令発行方法をより明確にするために、1秒あたり何百万もの命令を実行できる既存のマイクロプロセッサMIPS R100を例として、図2A及び図2Bを参照して、スーパースカラプロセッサのウェイクアップロジックの実行手順を説明する。
図2Aに、10サイクルのパイプラインの各ステージで命令nからn+7をそれぞれ示す。ここで、命令n+3により必要とされる各ソースオペランドは、それぞれ以前に実行した命令n+1及びn+2の目的オペランドから来ている。
図2Bに,プロセッサに設けられるルックアップテーブルの一群のタグを示す。ここで、命令n、n+1、n+2及びn+3の目的オペランドが、それぞれ物理レジスタp、p+1、p+2及びp+3に格納されると仮定すると、その一群のタグは、それぞれ命令n、n+1、n+2及びn+3の目的オペランドが対応する物理レジスタに格納されているか否かを示すために用いられる。タグが0であれば、対応する目的オペランドは、まだ対応する物理レジスタに格納されていない(即ち、対応する目的オペランドは取得可能ではない。)ことを意味するものと仮定し、逆に、タグが1であれば、対応する目的オペランドは、対応する物理レジスタに格納されている(即ち、対応する目的オペランドは取得可能である。)ことを意味する。ハードウェアに実現されるときに、ルックアップテーブルを(mx1)ビットマルチポートRAM(ランダムアクセスメモリ)とでき、ここに、mは、レジスタファイルの物理レジスタの数である。
一般に、命令が発行キューへとディスパッチされるときに、そのディスパッチ時点で、ルックアップテーブル内の対応するタグは、全て“取得不可”状態にある。その状態は、命令がEXステージを経て対応する演算を実行した後、演算結果(目的オペランド)がWBステージでレジスタファイルの対応する物理レジスタへと書き込まれるときに、タグが“取得可能”状態に設定されるまで維持される。従って、その目的オペランドを必要とする次の命令が、上述のスーパースカラプロセッサの動作原理に従って、タグの指標に基づいて、全てのソースオペランドが準備されているときに、発行すべき状態に入ることになり、選択ロジックの決定手順を経てRRステージへと発行される。
図2A及び図2Bに示すように、各命令がそれぞれのWBステージに入る前では、その対応するタグは0である。命令n、n+1及びn+2が、それぞれ6番目、7番目、8番目のサイクルで、WBステージに入るときに、それら対応するタグはそれぞれ1に設定される。
命令を発行することが許容されるか否かは、命令によって必要とされるソースオぺランドに対応するタグがルックアップテーブルにて“取得可能”とマーク付けされているか否かによって決定され、更に、ソースオペランドが“取得可能”であるか否かは、以前に実行した依存性の命令がWBステージで既に目的オペランドをターゲットレジスタへと書き込んでいたか否かによって決定される。従って、図2Bに示すように、命令n+3のソースオペランドは、それぞれ命令n+1及びn+2から来ており、8番目のサイクルまでに全てのソースオペランドが得られ、そしてその命令n+3が、発行すべき状態に入り、且つ、選択ロジックの決定手順を経て発行されることが許容されている後であることを、ウェイクアップロジックの決定手順を経て検出できる。それ故、命令n+3は、7番目及び8番目のサイクルにてISステージで残留していなければならず、対応するソースオペランドがルックアップテーブルにて“取得可能”であることについての情報を取得するために、2つのウェイクアップロジックの決定手順が、命令n+1が目的オペランドを生成する時の7番目のサイクルで、及び、命令n+2が目的オペランドを生成する時の8番目のサイクルで、それぞれ実行される。
しかし、スーパースカラプロセッサにて通常用いられるバイパス回路の構成原理によれば、命令n+1及びn+2が双方とも1サイクル内で実行できる命令である場合には、命令n+3は7番目のサイクルにてRRステージに入ることができる(即ち、ISステージでの命令n+3は、6番目のサイクルにて発行されることが許容される。)。特に、命令n+3が7番目のサイクルでRRステージに入るときに、命令n+1はWBステージに入っているので、命令n+3は、レジスタファイルの対応する物理レジスタの値を読み出すことにより、命令n+1によって生成した目的オペランドを得ることができる。ここで、命令n+2がまだEXステージであっても、命令n+3は、バイパス回路を経て命令n+2によって生成した目的オペランドを得ることができる。それ故、命令n+3は、このようにRRステージで必要とされるソースオペランドを得た後、10番目のサイクルまでEXステージに入ることを待つことなく、8番目のサイクルで対応する演算をスムーズに実行できる。
この際、図2A及び図2Bの場合に、ISステージで命令n+3のみが、発行されることができるか否かについて決定されるときに、もはやルックアップテーブルのタグの指標に依存していないのであれば、即ち、もはやそのWBステージで以前の関連する命令によってライトバックした演算結果に依存していない場合に、命令n+3は、確実により早くRRステージに入ることができることが分かる。その際、命令n+1、n+2は、まだWBステージに入っていない場合でさえ、命令n+3は、発行すべき状態に入り、且つ、選択ロジックの決定手順を経てRRステージへと発行されることが許容されることに対して、障害が確実にないものである。
この点に基づいて、本発明の新規な命令発行方法を提供している。本発明の方法では、発行可能化テーブルを確立し、発行可能化テーブルは、ISステージでの各命令によって必要とされる情報を正しく反映することを可能にし、ISステージでの命令がウェイクアップロジックの決定手順を実行するときに、命令を発行することが可能か否かを発行可能化テーブルから読み出すことにより決定することができる。ルックアップテーブルから読み出すことによる従来の命令発行方法と比較して、本発明は、ウェイクアップロジック動作を実行する時間を減少させ、これによりウェイクアップロジック動作を実行することによりもたらされるレイテンシをより低減させることができる。
本発明の提案される命令発行方法を、図3A及び図3Bを参照して詳細に説明する。
図3Aに、本発明の命令発行方法によるパイプラインの各ステージで10サイクルにおける命令nからn+9を示す。ここで、命令n+3の各ソースオペランドは、それぞれ以前に実行された命令n+1及びn+2からの目的オペランドである。
図3Bに、本発明の命令発行方法によるプロセッサに新たに設けられた発行可能化テーブルの一群のタグを示す。また、発行可能化テーブルは、mx1ビットマルチポートRAMを用いることにより実現することができ、ここで、mは、レジスタファイルの物理レジスタの数に対応する。
図3Bに示すように、発行可能化テーブルでは、各タグの値は、対応する目的オペランドが対応する物理レジスタに書き込まれているか否かを示すために用いるものではないが、RRステージへと以前に発行された命令が、その命令に依存する次の命令の制限を無効化し、その次の命令が発行すべき状態に入ることを許容するために用いられる。その次の命令が発行すべき状態に入ることができるか否かは、ソースオペランドをその次の命令に与える全ての以前の命令が、その次の命令が発行すべき状態に入ることを許容するか否かによって決定される。そして、その次の命令を発行すべき状態に入った後に発行できるか否かは、選択ロジックの決定手順を更に実行することによって決定される。さらに、対応するタグの指標が1である場合、それは、その命令が、その関連する次の命令に対して発行すべき状態に入ることを許容することを意味しており、つまり、以前に発行された命令の目的オペランドが、ソースオペランドとしてその次の命令によって用いられるときに、発行可能化テーブルの目的オペランドに対応するタグが1であれば、その次の命令によって必要とされるソースオペランドは、“取得可能”状態にあると見える。
本発明の好適な実施例によれば、RRステージへと以前に発行された命令は、その関連する次の命令が発行すべき状態に入ることを許容するために、可能なかぎり早くそのタグを発行可能化テーブルに設定すべきであり、これにより、その次の命令が発行されることを許容する可能性を増大させ、不要なウェイクアップロジック動作を省くことになる。
デコードされた後、デコードした命令に示される演算種類に従ってEXステージで演算結果を生成するために、命令は、その命令によって必要とされるサイクル数を正確に決定できる。例えば、一般のプロセッサの関数部では、通常1サイクルのみが整数の加算又は減算演算を実行するのに必要とされるが、浮動少数点の乗算又は除算演算に対しては、通常、数サイクルが必要とされる。種々のプロセッサが、浮動少数点の乗算又は除算演算を実行するのに種々のサイクル数を必要とするが、あらゆるプロセッサが比較的一定数のサイクルで浮動少数点の乗算又は除算演算を実行する。従って、RRステージへと以前に発行された命令は、EXステージの最後のサイクルの1サイクル前より早くないときに、対応するタグを発行可能化テーブルに設定することができ、このことは、以下のセクションで説明する。
図3A及び図3Bに示されるように、本発明の方法によれば、1サイクルのみが命令nの実行を完了するのに必要とされるので(即ち、EXステージでは1サイクルのみがある)、そのサイクルの1サイクル前(4番目のサイクル)に命令nがRRステージ入るときに、発行可能化テーブルの対応するタグを1に設定でき、このようにして、その命令nに依存する、ISステージでの次の命令は、命令nからの制限を押しのけて、4番目のサイクルで発行すべき状態に入ることができる。ソースオペランドを次の命令に与える、以前に発行された関連する命令の各々が、その次の命令が4番目のサイクルで発行すべき状態に入ることを許容し、その次の命令を実行する関数部が、選択ロジックの決定手順を経て利用可能とされる場合には、その次の命令を4番目のサイクルで発行することができる。
同様に、命令n+1及びn+2は、5番目及び6番目のサイクルで、発行可能化テーブルのそれぞれのタグを1に設定する。
前述したように、命令n+3は命令n+1及びn+2に依存し、つまり、命令n+3の各ソースオペランドは、それぞれ命令n+1及びn+2の目的オペランドから来ている。6番目のサイクルで、命令n+1及びn+2に対応するタグは、双方とも1であるので、EXステージでの命令n+1とRRステージでの命令n+2の双方は、この時点でまだWBステージへと入っておらず、目的オペランドがレジスタファイルの対応する物理レジスタへと格納されていないが、命令n+1及びn+2は、本発明の方法によって、命令n+3が発行すべき状態に入ることを妨げなくなる。
命令n+3は、選択ロジックの決定手順を経て6番目のサイクルで、RRステージへと発行されることが許容されると、命令n+3は7番目のサイクルでRRステージに入り、命令n+1及びn+2は、それぞれパイプラインのWBステージ及びEXステージに入る。この時点で、RRステージでの命令n+3は、命令n+1に対応する物理レジスタの値を読み取ることによって、必要とされるソースオペランドを得るとともに、バイパス回路を経て命令n+2を実行する演算結果を得て、別のソースオペランドを取得し、8番目のサイクルで2つのソースオペランドを用いて、関数部の対応する演算をスムーズに実行する。
図2Aと比較して、命令n+3は、2サイクルより早く、RRステージ及びEXステーにそれぞれ入ることになり、パイプラインのISステージで命令n+3のバブル、及び、そのバブルでウェイクアップロジック動作を実行することによってもたらされるレイテンシ及び電力消費を省くことになる。
他方では、命令n+3が、6番目のサイクルで選択ロジックの決定手順を経てRRステージに入ることを許容されない場合には、命令n+3は、7番目のサイクルで待機しなければならず、従って7番目のサイクルはバブルになる。このバブルでは、命令n+3のウェイクアップロジックの決定手順を、発行可能化テーブルの対応するタグを再度参照することにより、実行することができる。或いは又、命令n+3のウェイクアップロジックの決定手順を、前述した従来のルックアップテーブルを参照することにより実行することができ、ウェイクアップロジック動作を完了した後、選択ロジックの決定手順を継続し、命令n+3が7番目のサイクルでRRステージに発行することが許容されるか否かを決定することができる。
命令n+3が7番目のサイクルでRRステージへと発行されることが許容される場合に、8番目のステージで、命令n+1は既にRETステージに入っており、命令n+2はWBステージに既に入っている。この時点で、RRステージでの命令n+3は、命令n+1及びn+2に対応する物理レジスタの値を読み出すことによって必要とされるその2つのソースオペランドを得て、その2つのソースオペランドを用いることにより、次の9番目のサイクルで関数部の対応する演算を実行する。
上述の図3Aにおいて、命令例n、n+1及びn+3は、全て、1サイクル内で実行できる命令である。それ故、本発明によれば、これら命令は、それぞれのRRステージで、関連する次の命令が発行すべき状態になることを許容する。実行のために数サイクルを必要とする命令に関して、以下の方法は、正しく発行すべき状態に入る次の命令における命令制限を無効化するのに用いられる。
図4を参照して、EXステージで命令が対応する演算を完了するために必要とするサイクル数を、命令の演算種類に従ってまず計算する(ステップS10)。例えば、EXステージでの命令は、目的オペランドを得るのにkサイクルを必要とする。
次に、その命令に対してカウンタを設定し、カウンタの初期値はk−1に設定される(ステップS20)。
命令がRRステージに入ると、カウンタの値が0であるか否かをチェックする(ステップS30)。その値が0であれば、その命令が1サイクル内で実行できるものであることを意味しており、次に発行可能化テーブルにおけるその命令に対応するタグが図3A及び図3Bに示される動作手順を経て設定される(ステップS60)。その値が0でなければ、カウンタの値を、サイクルの終わりで自動的に1だけ減算する(ステップS40)。
次の新たなサイクルに入ると、カウンタの減算した値が0であるか否かをチェックする(ステップS50)。そのカウンタの値が0であれば、ステップS60で、発行可能化テーブルにおけるその命令に対応するタグを設定することが実行され、そのカウンタの値が0でなければ、ステップS40で、そのカウンタの値を、サイクルの終わりで自動的に1だけ減算するように続けられる。
スーパースカラプロセッサに関して、ウェイクアップロジックの決定手順及び選択ロジックの決定手順からなる発行ロジックの決定手順は、不要なバブルの挿入を抑制するために1サイクル内で実行すべきである。それ故、その命令は、(k−1)番目のサイクルで発行可能化テーブルの対応するタグを設定するが、つまり、選択ロジックの決定手順を実行するために関連する次の命令が発行すべき状態に入ることを許容して、(k−2)番目のサイクルで、即ちカウンタが1だけ減算されるときに、その命令は、ウェイクアップロジックの決定手順を有効化することからの、次の命令における制限を実際に無効化している。従って、(k−1)番目のサイクルが来るときに、次の命令は、ウェイクアップロジックの決定手順を実行し、発行可能化テーブルのタグの指標に従って次の命令に関連付けられた以前に発行された全ての命令に対応するタグを検索し、次の命令が発行すべき状態に入ることができるか否かを決定して、選択ロジックの決定手順を実行する。
表1は、完了するのに異なるサイクル数を必要とする命令をリストしており、それら命令が、演算種類に基づいてカウンタ設定の初期値に従ってRRステージへと発行されるときの或るサイクルでウェイクアップロジックの決定手順を有効化することからの、関連する次の命令の制限を如何にして無効化するかについて、及び、それら命令が対応するサイクルで発行可能化テーブルの対応するタグを如何にして設定するかについて、リストしている。
上述した本発明の好適な実施例において、発行可能化テーブル内の命令のタグは、関連付けられた次の命令が発行すべき状態に入ることを許容するために、EXステージの(k−1)番目のサイクルで設定される。或いは又、本発明の別の実施例では、発行可能化テーブル内の命令に対応するタグは、関連付けられた次の命令が発行すべき状態に入ることを許容するために、EXステージのk番目のサイクルで設定される。WBステージでルックアップテーブル内のタグを更新する既存のプロセッサと比較して、発行可能化テーブル内の対応するタグがk番目のサイクルで更新されるとしても、まだ、パイプラインのISステージで検出すべき命令がそのソースオペランドを待つときに発生する、起こりうるバブルを効果的に低減させることができるようになる。
上述した本発明の命令発行方法は、ソフトウェア又はハードウェア、或いはその双方の組み合わせで実現することができる。
ハードウェアで、即ち命令発行回路で実現するときには、デコード部、発行可能化テーブルを格納するメモリ、発行可能化テーブル内のタグの値を読み出す読出部、発行ロジック手順の実行で関数部が利用可能か否かを決定する決定部、及び、RRステージに命令を発行する発行部は、全て既存のマイクロプロセッサと同一又は同様なコンポーネントを用いることができる。
本発明の命令発行回路には、デコードした命令の演算種類に従って命令の演算を実行するのに必要とされるサイクル数を計算する計算部、カウンタ(そのカウンタの初期値及び動作原理は、前述した命令発行方法のものと同一である)、及び、カウンタの値が0まで減算したときにメモリ内の対応するレジスタの値を設定する制御部が加えられる。それ故、本発明による命令発行回路は、既存のスーパースカラプロセッサに対して大きな変更をすることなく適用することが容易である。
本発明の命令発行回路の様々なコンポーネントによって実行される演算は、提案した命令発行方法についての上述の説明において述べられており、その説明は省略する。
本発明の利点
本発明の命令発行方法及び命令発行回路についての上述の説明に関して、従来技術のルックアップテーブルを発行可能化テーブルで置き換えられることは、容易に理解できる。発行キューの検出すべき命令が、発行すべき状態に入ることが許容されるか否かを決定するときに、実行した命令がWBステージに入っていたか否か、及び、目的オペランドを物理レジスタに書き込んでいたか否かに基づくことは、本発明ではもはや当てにしていない。以前に発行された命令は、WBステージに入る前に、対応するサイクルで発行可能化テーブル内の対応するタグを設定し、検出すべき命令が発行すべき状態に入ることが許容されるか否かに基づいて、以前の命令制限を無効化する。従って、既存のスーパースカラプロセッサと比較して、本発明は、パイプラインのISステージで検出すべき命令がそのソースオペランドを待つときに発生する、起こりうるバブルを減少させ、そのバブルでウェイクアップロジック動作を実行することによってもたらされるレイテンシ及び電力消費を抑制する。
本発明の命令発行方法及び命令発行回路は、パイプライン式のスーパースカラプロセッサの使用に好適であり、更に、同じくマルチスレッドプロセッサ及び組み込みプロセッサにも好適である。
本発明にて開示される方法及び回路は、特許請求の範囲によって規定されるように、本発明の趣旨及び範囲を逸脱することなく様々に変更できることは当業者に明らかである。
パイプラインの実行ステージでの命令を示す概略図である。 従来のスーパースカラプロセッサのパイプラインの複数の命令を示す概略図である。 ルックアップテーブル内の図2Aの幾つかの命令に対応するタグを示す概略図である。 本発明の実施例によるスーパースカラプロセッサのパイプラインの複数の命令を示す概略図である。 発行可能化テーブル内の図3Aの幾つかの命令に対応するタグを示す概略図である。 本発明による命令発行方法の一実施例を示すフローチャートである。

Claims (16)

  1. パイプライン式のプロセッサにて用いられる命令発行方法であって、
    (a)処理されるための命令をデコードして、ある種類の命令を取得するステップと、
    (b)前記種類の命令に従って、前記命令に対して実行ステージで占有されるサイクル数を計算するステップと、
    (c)前記サイクル数に従って、前記命令がライトバックステージに入る前の所定のサイクルで、前記命令の目的オペランドを、取得可能としてマーク付けするステップとを含み、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、命令発行方法。
  2. 前記所定のサイクルが、前記目的オペランドを生成するサイクル直前のサイクルである、請求項1に記載の命令発行方法。
  3. 前記所定のサイクルが、前記目的オペランドを生成するサイクルである、請求項1に記載の命令発行方法。
  4. 前記ステップ(c)が、ある命令の目的オペランドが前記所定のサイクルで取得可能であるか否かをマーク付けするために発行可能化テーブルを用いるステップを含む、請求項1〜3のいずれかに記載の命令発行方法。
  5. 前記命令が発行ステージに入るときに、前記命令のソースオペランドとして関連付けられた前記目的オペランドが、前記発行可能化テーブルにて取得可能であるか否かを検出するステップを更に含み、
    前記関連付けられた目的オペランドが取得可能である場合に、選択ロジックの決定手順を実行するように前記命令が発行すべき状態に入る、請求項4に記載の命令発行方法。
  6. 前記命令がRRステージに入るときに、前記関連付けられた目的オペランドがレジスタファイルに格納されているか否かを検出するステップと、
    前記関連付けられた目的オペランドがレジスタファイルにまだ格納されていない場合には、前記命令に対して対応する目的オペランドを、バイパス方法によって取得するステップと、
    を更に含む、請求項5に記載の命令発行方法。
  7. パイプライン式のプロセッサにて用いられる命令発行装置であって、
    処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、
    前記種類の命令に従って、前記命令に対して実行ステージで占有されるサイクル数を計算する計算部と、
    前記サイクル数に従って、前記命令がライトバックステージに入る前の所定のサイクルで、前記命令の目的オペランドを、取得可能としてマーク付けする制御部と、
    を備え、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、命令発行装置。
  8. 前記所定のサイクルが、前記目的オペランドを生成するサイクル直前のサイクルである、請求項7に記載の命令発行装置。
  9. 前記所定のサイクルが、前記目的オペランドを生成するサイクルである、請求項7に記載の命令発行装置。
  10. 各指標がある命令の目的オペランドが取得可能であるか否かを示す、発行可能化テーブルを格納する格納部を更に備える、請求項7〜9のいずれかに記載の命令発行装置。
  11. 前記命令が発行ステージに入るときに、前記命令のソースオペランドとして関連付けられた前記目的オペランドが、前記発行可能化テーブルにて取得可能であるか否かを読み出す読出部を更に備え、
    前記関連付けられた目的オペランドが取得可能である場合に、前記制御部が、選択ロジックの決定手順を実行するために前記命令が発行すべき状態に入るように制御する、請求項10に記載の命令発行装置。
  12. パイプライン式のプロセッサであって、
    処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、
    前記種類の命令に従って、前記命令に対して実行ステージで占有されるサイクル数を計算する計算部と、
    前記サイクル数に従って、前記命令がライトバックステージに入る前の所定のサイクルで、前記命令の目的オペランドを、取得可能としてマーク付けする制御部であって、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、前記制御部と、
    前記命令に対して対応する演算を実行し、前記命令の前記目的オペランドを生成する実行部とを備えるプロセッサ。
  13. 前記所定のサイクルが、前記目的オペランドを生成するサイクル直前のサイクルである、請求項12に記載のプロセッサ。
  14. 前記所定のサイクルが、前記目的オペランドを生成するサイクルである、請求項12に記載のプロセッサ。
  15. 各指標がある命令の目的オペランドが取得可能であるか否かを示す、発行可能化テーブルを格納する格納部を更に備える、請求項12〜14のいずれかに記載のプロセッサ。
  16. 前記命令が発行ステージに入るときに、前記命令のソースオペランドとして関連付けられた前記目的オペランドが、前記発行可能化テーブルにて取得可能であるか否かを読み出す読出部を更に備え、
    前記関連付けられた目的オペランドが取得可能である場合に、前記制御部が、選択ロジックの決定手順を実行するために前記命令が発行すべき状態に入るように制御する、請求項15に記載のプロセッサ。
JP2007550896A 2005-01-13 2006-01-10 プロセッサ及びその命令発行方法 Withdrawn JP2008527559A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN200510005709 2005-01-13
PCT/IB2006/050082 WO2006075286A2 (en) 2005-01-13 2006-01-10 A processor and its instruction issue method

Publications (1)

Publication Number Publication Date
JP2008527559A true JP2008527559A (ja) 2008-07-24

Family

ID=36587277

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007550896A Withdrawn JP2008527559A (ja) 2005-01-13 2006-01-10 プロセッサ及びその命令発行方法

Country Status (5)

Country Link
US (1) US7934079B2 (ja)
EP (1) EP1839129A2 (ja)
JP (1) JP2008527559A (ja)
CN (1) CN100590592C (ja)
WO (1) WO2006075286A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217154A (ja) * 2007-02-28 2008-09-18 Nara Institute Of Science & Technology データ処理装置、データ処理方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI569205B (zh) * 2012-08-31 2017-02-01 威盛電子股份有限公司 一種微處理器及其操作方法
US20140129805A1 (en) * 2012-11-08 2014-05-08 Nvidia Corporation Execution pipeline power reduction
WO2016028410A1 (en) * 2014-07-14 2016-02-25 Mill Computing, Inc. Execution and scheduling of software pipelined loops
US9898292B2 (en) * 2015-02-25 2018-02-20 Mireplica Technology, Llc Hardware instruction generation unit for specialized processors
CN111258657B (zh) * 2020-01-23 2020-11-20 上海燧原智能科技有限公司 流水线控制方法及相关设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
US6393550B1 (en) * 1993-12-30 2002-05-21 Intel Corporation Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
US6101597A (en) * 1993-12-30 2000-08-08 Intel Corporation Method and apparatus for maximum throughput scheduling of dependent operations in a pipelined processor
JP3113792B2 (ja) 1995-04-27 2000-12-04 松下電器産業株式会社 最適化装置
US5884059A (en) * 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US6119219A (en) * 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
US6609193B1 (en) 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US6601162B1 (en) * 2000-01-19 2003-07-29 Kabushiki Kaisha Toshiba Processor which executes pipeline processing having a plurality of stages and which has an operand bypass predicting function
AU2001245511A1 (en) * 2000-03-10 2001-09-24 Arc International Plc Method and apparatus for enhancing the performance of a pipelined data processor
US7007270B2 (en) * 2001-03-05 2006-02-28 Cadence Design Systems, Inc. Statistically based estimate of embedded software execution time
EP1462934A1 (en) 2003-03-29 2004-09-29 Deutsche Thomson-Brandt Gmbh Method and apparatus for forwarding of results
US7617385B2 (en) * 2007-02-15 2009-11-10 International Business Machines Corporation Method and apparatus for measuring pipeline stalls in a microprocessor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217154A (ja) * 2007-02-28 2008-09-18 Nara Institute Of Science & Technology データ処理装置、データ処理方法

Also Published As

Publication number Publication date
CN100590592C (zh) 2010-02-17
CN101151589A (zh) 2008-03-26
WO2006075286A2 (en) 2006-07-20
US7934079B2 (en) 2011-04-26
WO2006075286A3 (en) 2006-11-16
EP1839129A2 (en) 2007-10-03
US20080209174A1 (en) 2008-08-28

Similar Documents

Publication Publication Date Title
EP3516508B1 (en) Memory violation prediction
KR101192814B1 (ko) 로드가 선행하는 스토어에 의존적인지를 예측하는 의존성 매커니즘을 구비한 프로세서
US8521992B2 (en) Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
EP1442364B1 (en) System and method to reduce execution of instructions involving unreliable data in a speculative processor
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
US9367471B2 (en) Fetch width predictor
JP2008527559A (ja) プロセッサ及びその命令発行方法
US8468325B2 (en) Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
EP3767462A1 (en) Detecting a dynamic control flow re-convergence point for conditional branches in hardware
US9223577B2 (en) Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage
JP2021174513A (ja) データ依存脆弱分岐の機会主義的再誘導のための命令セットアーキテクチャベース自動負荷追跡
US6871343B1 (en) Central processing apparatus and a compile method
JP2000322257A (ja) 条件分岐命令の投機的実行制御方法
JP7046087B2 (ja) キャッシュ・ミス・スレッド・バランシング
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
JP2008299729A (ja) プロセッサ
JP2021168036A (ja) 演算処理装置
US6157995A (en) Circuit and method for reducing data dependencies between instructions
US7783692B1 (en) Fast flag generation
US20230315446A1 (en) Arithmetic processing apparatus and method for arithmetic processing
US7281121B2 (en) Pipeline processing device and interrupt processing method
CN115080121A (zh) 指令处理方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090106

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090911