JP3655908B2 - 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム - Google Patents
命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム Download PDFInfo
- Publication number
- JP3655908B2 JP3655908B2 JP2003049933A JP2003049933A JP3655908B2 JP 3655908 B2 JP3655908 B2 JP 3655908B2 JP 2003049933 A JP2003049933 A JP 2003049933A JP 2003049933 A JP2003049933 A JP 2003049933A JP 3655908 B2 JP3655908 B2 JP 3655908B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- rollback
- cache
- procedure
- unit
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 66
- 238000013500 data storage Methods 0.000 claims description 38
- 230000008014 freezing Effects 0.000 claims 2
- 238000007710 freezing Methods 0.000 claims 2
- 230000000415 inactivating effect Effects 0.000 claims 2
- 238000005096 rolling process Methods 0.000 claims 1
- 230000007704 transition Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 101001071363 Homo sapiens Probable G-protein coupled receptor 21 Proteins 0.000 description 3
- 102100036934 Probable G-protein coupled receptor 21 Human genes 0.000 description 3
- 101100282455 Arabidopsis thaliana AMP1 gene Proteins 0.000 description 2
- 102000015347 COP1 Human genes 0.000 description 2
- 108060001826 COP1 Proteins 0.000 description 2
- 101100218464 Haloarcula sp. (strain arg-2 / Andes heights) cop2 gene Proteins 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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)
- Memory System Of A Hierarchy Structure (AREA)
- Retry When Errors Occur (AREA)
Description
【発明の属する技術分野】
本発明は、パイプライン処理をする計算機に係り、特に低コストで高性能な命令ロールバックプロセッサシステム、また命令ロールバック方法及び命令ロールバックプログラムに関する。
【0002】
【従来の技術】
中央演算処理装置(CPU)は、パイプラインの段数が増大すると共に並列処理の速度が増加できるため、パイプラインの段数を増加する傾向は強い。一方において、パイプラインの段数が増大すると、パイプラインのリスタートに時間を要する。このため、かえって処理速度が遅くなるという欠点も存在する。アウトオブオーダーCPUにおいて、ディスパッチ不能時、或いはインオーダーCPUにおいて、実行された命令が終了できない時、ロード命令でキャッシュミス時、データをリフィルした後に、再発行する必要がある。再発行の可能性ある命令を終了できるかどうかが問題となるが、従来例においても、再発行の可能性ある命令を命令ウインドウバッファに蓄積しておくという動作を行っている。この動作は、ロールバック制御の一部である。ロード命令とその後続命令において、エントリーの深さにも関係するが、一定期間命令を保持し、リザーブしておくことが必要になる。
【0003】
従来のマイクロプロセッサシステムの構成例は、図12に示すように、命令フェッチユニット1と、命令ウインドウバッファ(IWB)2と、第1の命令デコーダ(A)6,第2の命令デコーダ(B)7、パイプラインレジスタ(PLG)3,4,5と、制御ユニット8とを備える。
【0004】
命令フェッチユニット1から命令COMがIWB2に供給され、保持される。データハザード、リソースハザードが解決したらIWB2から命令INSが発行される。命令INSは、制御ユニット8、PLG3,PLG4,PLG5、第1の命令デコーダ(A)6,第2の命令デコーダ(B)7に供給され、命令INSが実行パイプラインを流れて実行されていく。制御ユニット8は、第1の命令デコーダ(A)6からのロード命令LCOM,第2の命令デコーダ(B)7からの信号及びIWB2からの命令INSを受信する。制御ユニット8は、既知の汎用レジスタファイル、ファンクションユニット、データキャッシュユニット、バイパスネットワーク、バイパスコントロールブロック、及びパイプラインレジスタ等から構成される。ここで例えば、ロード命令LCOMは制御ユニット8内において、データキャッシュユニットにアクセスしてデータをフェッチするが、キャッシュミスを起こした場合、データは得られない。そのときはロード命令LCOMとその後続命令の実行をキャンセルする。そしてレベル2(L2)キャッシュ等にアクセスしてデータをフェッチしデータが得られたら、ロード命令LCOMとその後続命令をIWB2から再発行して実行しなおす。今度はキャッシュがヒットするので後続命令の実行を続行することができる。
【0005】
このとき、ロード命令LCOMとその後続命令を再発行するために、それらをIWB2に保存しておく必要がある。また、ロードミスが判明するのは命令発行後、数サイクル後になるのでその間IWB2に命令が保持されたままになる。その数サイクル間はたとえキャッシュがヒットする場合においても、キャッシュがヒットすることの事実がわからないため、常に発行した命令をIWB2に保持し続ける必要がある。
【0006】
従来のマイクロプロセッサシステムの動作は、図13に示すように表される:
(a)ステップS1において、命令フェッチユニット1から命令COMがIWB2に供給された状態から開始する。
【0007】
(b)次に、ステップS2に進み、IWB2から命令INSを発行する。
【0008】
(c)次に、ステップS3に進み、命令INSを実行する。
【0009】
(d)次に、ステップS4に進み、ロード命令LCOMを実行してキャッシュミスが発生するかどうかを判断する。
【0010】
(e)キャッシュミスが発生しないならば、ステップS5に進み、実行を完了する。
【0011】
(f)キャッシュミスが発生するならば、ステップS6に進み、キャッシュリフィルをトリガーする。
【0012】
(g)次に、ステップS7に進み、自己命令(ロード命令)と実行途中の後続命令をパイプラインから消去する。
【0013】
(h)次に、ステップS8に進み、無効化した命令に対してIWBを発行前状態に戻す。
【0014】
(i)次に、ステップS9に進み、キャッシュリフィルを完了するかどうかを判断する。
【0015】
(j)NOであるならば、ステップS9を繰り返す。
【0016】
(k)YESであるならば、ステップS10に進み、発行済命令をループ中で回転する。
【0017】
(l)次に、ステップS2、ステップS3、ステップS4と進み、ステップS4においてロード命令LCOMでキャッシュミスが発生しなくなるまで一連の動作を繰り返す。
【0018】
IWB2は命令INSを発行するための複雑な発行ロジック構成を保持しており、コストの高いIWBを発行済みの命令INSが占有するため、IWB2のロジックの利用効率が悪くなる。
【0019】
【非特許文献1】
T・サトー他“命令再発行メカニズムの総合的な評価(Comprehensive Evaluation of Instruction Reissue Mechanism.)”,パラレルアーキテクチャー、アルゴリズム及びネットワークに関するインターナショナルシンポジウム,プロシーディング(Proceedings of International Symposium on Parallel Architectures, Algorithms and Networks)2000年,P.78−85.
【0020】
【非特許文献2】
グレン・ヒントン他“ペンティアム(登録商標)4プロセッサのマイクロアーキテクチャー(The Microarchitecture of the Pentium(登録商標)4 Processor)”,http://developer.intel.com,2001
【0021】
【発明が解決しようとする課題】
従来のマイクロプロセッサシステムにおいては、命令の発行後、データキャッシュミスなどによって命令を再実行することが必要になる場合がある。このため従来は命令の発行後もIWB2に命令を残しておき、再実行が必要だと判明した時に、IWB2から命令を演算器に再発行していた。そのため、IWB2に命令を一定期間保持しておく必要があり、面積コストの大きいIWB2の貴重なエントリーを費やすという問題があった。
【0022】
本発明の目的は、PLGをリング状に接続して、再実行するための命令を保持し、ロールバック動作時にはリング状PLGに再実行するための命令を内に保持し、命令再発行動作時にはPLGから命令などを再発行する機能を有する、低コストで、高性能な命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラムを提供することにある。
【0023】
【課題を解決するための手段】
上記目的を達成するために、本発明の第1の特徴は、(イ)一定の順番で配列された複数の実行前命令を発行するウインドウバッファと、(ロ)命令ウインドウバッファの出力を一方の入力に入力するマルチプレクサと、(ハ)マルチプレクサの出力と、マルチプレクサの他方の入力との間に接続されたロールバックユニット、(ニ)ロールバックユニットに接続されたデコーダユニットと、(ホ)デコーダユニットに接続された制御ユニットと、(へ)制御ユニットに接続され、マルチプレクサにロールバック制御信号を発行するロールバックコントロールユニットとを備える命令ロールバックプロセッサシステムであることを要旨とする。
【0024】
本発明の第2の特徴は、(イ)キャッシュミス発生時には、ロールバックユニットにおいて、未完了命令をループで回転させて保持するロールバック手順と、(ロ)キャッシュミスが解消されず、ロールバックが正常に終了しない時には、ロールバック手順を繰り返す手順と、(ハ)ロールバックが正常に終了する時には、ロールバック制御信号をマルチプレクサに発行して、命令ウインドウバッファから未発行命令を発行する命令再発行手順とを備える命令ロールバック方法であることを要旨とする。
【0025】
本発明の第3の特徴は、(イ)一定の順番で配列された複数の実行前命令を格納した命令ウインドウバッファと、命令ウインドウバッファの出力を一方の入力とするマルチプレクサと、マルチプレクサに接続されたロールバックユニットとを備え、ロールバックユニットの出力をマルチプレクサの他方の入力に接続した命令ロールバックプロセッサシステムにおいて、(ロ)未完了命令をロールバックする時はロールバックユニット側の入力を選択するロールバック手順と、(ハ)未発行命令発行時は、命令ウインドウバッファからの入力を選択する命令再発行手順とを備える命令ロールバック方法であることを要旨とする。
【0026】
本発明の第4の特徴は、(イ)命令ウインドウバッファから発行された実行前命令を実行させる手順と、(ロ)キャッシュミスの発生時、キャッシュリフィル回路を駆動し、パイプラインレジスタ中のロード命令と後続命令を不活性とし、命令ウインドウバッファをキャッシュミスの発生時の状態にフリーズさせる手順と、(ハ)キャッシュリフィル回路が完了しかつロード命令がキャッシュミスの発生時直前の位置にあるならば、ロード命令とその後続命令を実行する手順に戻す手順と、(ニ)キャッシュリフィル回路が完了しないならば、命令ウインドウバッファから発行された発行済命令をループ回転して保持させる手順と、(ホ)更に、キャッシュリフィル回路が完了しかつロード命令がキャッシュミスの発生時直前の位置にないならば、発行済命令をループ回転させる手順とを備える命令ロールバック方法であることを要旨とする。
【0027】
本発明の第5の特徴は、(イ)命令ウインドウバッファから発行された実行前命令を実行させる手順と、(ロ)キャッシュミスの発生時、キャッシュリフィル回路を駆動し、パイプラインレジスタ中のロード命令と後続命令を不活性とし、命令ウインドウバッファをキャッシュミスの発生時の状態にフリーズさせる手順と、(ハ)キャッシュリフィル回路が完了しかつループ回転命令がキャッシュミスの発生時直前の位置にあるならば、ロード命令と後続命令を実行する手順に戻す手順と、(ニ)キャッシュリフィル回路が完了しないならば、命令ウインドウバッファから発行された発行済命令をループ回転して保持させる手順と、(ホ)キャッシュリフィル回路が完了しかつループ命令がキャッシュミスの発生時直前の位置にないならば、発行済命令をループ回転させる手順とからなるアルゴリズムを命令ロールバックプロセッサシステムに実行させる命令ロールバックプログラムであることを要旨とする。
【0028】
【発明の実施の形態】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想は、構成部品の構造、配置等を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【0029】
本発明において「命令ロールバックプロセッサシステム」とは、命令ロールバック機能或いは命令ロールバック装置を備えた、プロセッサシテムをいう。「命令ロールバックプロセッサシステム」は命令ロールバック方法及び命令ロールバックプログラムによって動作するプロセッサシステムである。本発明において「命令ロールバック」とは、リング状に縦続接続されたPLG群内において、発行済命令をループ状に回転させる動作をいう。
【0030】
本発明の実施の形態に係る命令ロールバックプロセッサシステムは、図1に示すように、一定の順番で配列された複数の命令を格納した命令ウインドウバッファ(IWB)2と、命令ウインドウバッファ2の出力を一方の入力に入力するマルチプレクサ(MUX)11と、MUX11の出力とMUX11の他方の入力との間に接続されたロールバックユニット9とを備える。命令フェッチユニット1からは命令COMがIWB2に供給される。MUX11の出力は、PLG13,14,15,16を備えるロールバックユニット9に接続されている。更に、ロールバックユニット9は、第1の命令デコーダ(A)6と第2の命令デコーダ(B)7とを備えるデコーダユニット12に接続されている。更に、デコーダユニット12は、制御ユニット8に接続されている。更に制御ユニット8とMUX11との間には、ロールバックコントロールユニット10が接続されている。PLG13,14,15,16の内部にはそれぞれ命令の第1ソースレジスタ値Rsを格納するデータ格納部171,172,173,174、命令の第2ソースレジスタ値Rtを格納するデータ格納部181,182,183,184、命令のデスティネーション番号Rdを格納するデータ格納部191,192,193,194、命令のオペレーションコードを格納するデータ格納部201,202,203,204、が含まれている。これらの命令の第1ソースレジスタ値Rsを格納するデータ格納部171,172,173,174、命令の第2ソースレジスタ値Rtを格納するデータ格納部181,182,183,184、命令のデスティネーション番号Rdを格納するデータ格納部191,192,193,194、及び命令のオペレーションコードOpを格納するデータ格納部201,202,203,204、はPLG内に命令を分けて格納するためのデータ格納部を構成している。動作の詳細については後述する。
【0031】
図1に示すPLG13乃至PLG16内のそれぞれ命令の第1ソースレジスタ値Rsを格納するデータ格納部171,172,173,174、命令の第2ソースレジスタ値Rtを格納するデータ格納部181,182,183,184、命令のデスティネーション番号Rdを格納するデータ格納部191,192,193,194、命令のオペレーションコードOpを格納するデータ格納部201,202,203,204等はデータ格納部を表す。
【0032】
命令の第1ソースレジスタ値Rsを格納するデータ格納部171,172,173,174は命令のソースレジスタ値Rsが格納されるデータ格納部である。
【0033】
命令の第2ソースレジスタ値Rtを格納するデータ格納部181,182,183,184は命令のソースレジスタ値Rtが格納されるデータ格納部である。
【0034】
命令のデスティネーション番号Rdを格納するデータ格納部191,192,193,194は命令のデスティネーションレジスタ番号Rdが格納されるデータ格納部である。
【0035】
命令のオペレーションコードを格納するデータ格納部201,202,203,204は命令のオペレーションコードOpが格納されるデータ格納部である。命令のオペレーションコードOpをデコードして、命令の種類を判定することができる。
【0036】
図12に示した従来例と異なる点は、IWB2の出力とPLG群との間にMUX11を配置し、ロールバックコントロールユニット10によってマルチプレクサ11を制御して、最終段のPLG16の出力がロールバックライン60を介して、命令発行段側に戻されて、マルチプレクサ11の一方の入力とされ、またIWB2の出力はマルチプレクサ11の他方の入力に接続されている点である。また、マルチプレクサ11を制御するためのロールバックコントロールユニット10が必要になる。尚、図1に示すPLG群は4段の例が示されているが、必ずしも4段に限定されるものではない。図6乃至8に示すように、3段にて構成してもよい。或いは又、図9に示すように、任意の段数nをもって構成されていてもよい。
【0037】
図1に示した命令ロールバックプロセッサシステムを構成する制御ユニット8は、図2に示すように、汎用レジスタファイル(GPR)21と、キャッシュリフィル回路22と、TLB(Translation Look-aside Buffer)23と、データキャッシュユニット24と、ロード命令格納レジスタ27と、加算器30と、キャッシュヒットレジスタ31と、TLBヒットレジスタ32と、及びロードデータレジスタ33と、命令の第1ソースレジスタ値Rsを格納するデータ格納部28、命令の第2ソースレジスタ値Rtを格納するデータ格納部29とから構成されている。ロード命令格納レジスタ27は第1の命令デコーダ(A)6からのロード命令LCOMを受信して加算器30に送信する。加算器30は、ロード命令格納レジスタ27の仮想アドレスを計算する。一般に、ロードストア命令のアクセスすべきメモリの仮想アドレスは、ソースレジスタの内容に別のレジスタの内容や既知の値などが加算して算出される。ここでは、既知の値の加算については記載されていない。ソースレジスタとソースレジスタの加算で仮想アドレスを算出するパスだけを記載している。従って、加算器30はロード命令格納レジスタ27、命令の第1ソースレジスタ値Rsを格納するデータ格納部28及び命令の第2ソースレジスタ値Rtを格納するデータ格納部29からのデータを受信して、加算し、データキャッシュユニット24及びTLB23に送信する。データキャッシュユニット24は、TLB23及び加算器30からのデータを受信し、キャッシュリフィル回路22との間でデータを送受信しつつ、ロードデータレジスタ33及びキャッシュヒットレジスタ31に送信する。ロードデータレジスタ33はデータキャッシュユニット24からのデータを受信して、GPR21に送信する。GPR21は、ロードデータレジスタ33、第1の命令デコーダ(A)6、PLG13内の命令の第1ソースレジスタ値Rsを格納するデータ格納部171および命令の第2ソースレジスタ値Rtを格納するデータ格納部181からのデータを受信してそれぞれ命令の第1ソースレジスタ値Rsを格納するデータ格納部28及び命令の第2ソースレジスタ値Rtを格納するデータ格納部29に送信する。一方、TLB23は、加算器30からの仮想アドレスを受信し、キャッシュリフィル回路22との間においてデータの送受信を実行し、かつ、データキャッシュユニット24及びTLBヒットレジスタ32に対してデータを送信する。TLBヒットレジスタ32は、TLB23からのTLBヒット情報を受信し、キャッシュリフィル回路22にデータを送信すると共に、ロールバックコントロールユニット10内のロールバック判定回路26に対してTLBヒット情報を送信する。同様に、キャッシュリフィル回路22はキャッシュヒットレジスタ31及びTLBヒットレジスタ32からデータを受信し、TLB23及びデータキャッシュユニット24との間でデータを送受信しつつ、ロールバックコントロールユニット10内のロールバック制御回路25に対してデータを送信する。また、図2中に示されるように、データキャッシュユニット24とキャッシュリフィル回路22との間においてもデータの送受信が行なわれる。
【0038】
尚、図1に示したデコーダユニット12内には第1の命令デコーダ(A)6及び第2の命令デコーダ(B)7の2個の命令デコーダが示されているが、第1の命令デコーダ(A)6だけで機能させることも可能である。即ち、例えば、図2に示すように、ロード命令LCOMを含む、すべての命令に対する制御を第1の命令デコーダ(A)6でデコードして、このデコード済の情報を制御ユニット8の中で保持してGPR21、或いはTLB23、加算器30等に提供するように動作させることもできる。
【0039】
図1に示した命令ロールバックプロセッサシステムを構成するロールバックコントロールユニット10は、図3に示すように、ロールバック制御回路25と、ロールバック判定回路26と、ヘッドポインタ(HP)用PLG34,35,36,37と、イネーブル信号(EN)用PLG38,39,40,41と、バリッド信号(VL)用PLG42,43,44,45と、ANDゲート回路46,47,48と、MUX49と、バリッドバッファ(Valid Buffer)50とから構成されている。
【0040】
ロールバック制御回路25は、制御ユニット8内のキャッシュリフィル回路22からリフィル完了信号RFCを受信し、またロールバック判定回路26からロールバック開始信号RBSを受信し、またヘッドポインタ(HP)用PLG37からの信号を受信する。また、ロールバック制御回路25は、ヘッドポインタ(HP)用PLG34及びイネーブル信号(EN)用PLG38に対して信号を送信すると共に、MUX11及びMUX49に対してロールバック制御信号RBCを送信する。一方、ロールバック判定回路26は制御ユニット8内のTLBヒットレジスタ32内に格納されたヒットミス信号HMT、キャッシュヒットレジスタ31内に格納されたヒットミス信号HMCを受信する。また、命令デコーダ(B)7からのフラグ信号FLAも受信する。また、ロールバックコントロールユニット10内においては、ANDゲート48からの出力信号を受信し、ロールバック制御回路25に対しては、ロールバック開始信号RBSを送信する。MUX49はバリッドバッファ50からの信号とバリッド信号(VL)用PLG45からの信号を受信し、バリッド信号(VL)用PLG42に対してデータを送信する。ここで、バリッド信号(VL)用PLG42からバリッド信号(VL)用PLG43,44及び45へのデータシフトは、ヘッドポインタ(HP)用PLG34からヘッドポインタ(HP)用PLG35,36及び37へのデータシフト、イネーブル信号(EN)用PLG38からイネーブル信号(EN)用PLG39,40及び41へのデータシフトに対応している。更に、このようなデータシフトのタイミングは図1において、PLG13からPLG14,15及び16へのデータシフトに対応している。PLG13からPLG14の間がPLG42とPLG43の間に対応し、PLG14からPLG15の間がPLG43とPLG44の間に対応し、PLG44からPLG45の間がPLG15とPLG16との間に対応している。これらのステージをそれぞれ「IDステージ」、「EXステージ」、「WBステージ」と定義する。更に、バリッドバッファ50からMUX49を介してPLG42までのステージはIWB2からMUX11を介してPLG13までのステージに対応し、「ISステージ」と定義する。更に、データが命令フェッチユニット1からIWB2に入力するまでを、「IFステージ」と定義する。
【0041】
ここで、図1乃至3を参照しながら、本発明の実施の形態に係る命令ロールバックプロセッサシステムにおける、ロールバック制御の動作を説明する。
【0042】
はじめに言葉の説明をする。以下の説明において、フラグ(Flag:FLA)信号、バリッド(VAL)信号、ヒット信号、デコード出力はすべて正論理で、“0”の時、「無効」、“1”の時、「有効」を意味するものとする。また、「アサ−ト」とは、その信号が「有効」状態、即ち“1”を出力すること、「ネゲート」とは、その信号が「無効」状態、即ち“0”を出力することを意味する。また、バリッド信号VAL等はループ状に構成されており、各ステージに存在している。ステージ毎に区別するために例えば、「IDステージのバリッド信号」、「EXステージのバリッド信号」、「WBステージのバリッド信号」と表現する。
【0043】
「バリッド信号(VAL)」は、各ステージに存在し、有効な命令がステージ中に存在する時“1”となる。ロールバック中かどうかに関わらず、命令が存在する時は“1”である。「イネーブル信号(ENA)」は、PLGのステージ毎に存在し、そのステージにおける命令を実行すべきかどうかを示す。「イネーブル信号」が“1”であり、かつ「バリッド信号」が“1”であるステージでは、命令を実行する。「ヘッドポインタ(HP)信号」は、通常動作時は全ステージ“0”になる。ロールバック中は、ロールバックを開始すべき先頭の命令に対してだけ“1”がセットされる。先頭ではない命令には、“0”がセットされる。
【0044】
「IFステージ」では、命令フェッチユニット(命令キャッシュ)1から命令を読み出し、IWB2に書き込む。命令を書き込んだ時は、バリッド信号VALとして“1”をバリッドバッファ50に書き込む。バリッドバッファ50は、IWB2の各エントリーに対応したエントリーを持ち、有効な命令がIWB2に格納されている時は、“1”、格納されていない時には、“0”が書き込まれている。
【0045】
「ISステージ」では、バリッドバッファ50が“1”、即ち「有効」である命令を命令の古い順に発行する。IWB2に存在する命令のハザードを検出し、命令発行可能かどうかを調査する。命令発行可能ならば、命令を実行する。命令ロールバック中は、命令バッファからではなく、ロールバックされているPLGの命令を発行する。
【0046】
「IDステージ」では、命令をデコードする。ソースレジスタをGPR21から読み出す。データバイパスを行なう。
【0047】
「EXステージ」では、命令を実行する。ロード命令の場合は、ソースレジスタの値からメモリアドレスを計算する。そのアドレスにおいてTLB23を参照し、仮想アドレスから物理アドレスへ変換する。TLB23がヒットした場合は、正しい物理アドレスが得られる。TLB23がヒットミスした場合は正しい物理アドレスは得られない。ヒットしたかヒットミスしたかはTLB23が出力するTLBヒット信号で判定される。TLBヒット信号はTLBヒットレジスタ32に格納される。
【0048】
変換された物理アドレスでデータキャッシュユニット24を参照する。データキャッシュユニット24がヒットした場合は、データキャッシュユニット24はヒット信号を「アサ−ト」する。ヒット信号をキャッシュヒットレジスタ31に格納する。ヒットした場合は、データキャッシュはデータを出力する。そのデータをロードデータレジスタ33に格納する。加算などの算術演算命令もこのステージで実行される。
【0049】
「WBステージ」では、バリッド信号VALが“1”であり、かつイネーブル信号ENAが“1”の時は、演算結果、ロードデータをGPR21へ書き込む(Write Back)。TLBヒットレジスタ32、キャッシュヒットレジスタ31の値が共に“1”の場合、即ち、TLBヒットでかつ、キャッシュヒットの場合、データが正常にロードできているので、PLG(データレジスタ)33の値をGPR21へ書き込む。
【0050】
TLBヒットレジスタ32、キャッシュヒットレジスタ31の値のどちらかが“0”、即ち、ヒットミスの場合には正常にロードできていないので、ロールバック動作を行なう。命令デコーダ(B)7は命令の命令のオペレーションコードを格納するデータ格納部20をデコードし、実行中の命令がロード命令であるかどうかを示すフラグ信号FLAを出力する。ロールバック判定回路26は、このフラグ信号FLAと、TLBレジスタ32に格納された信号と、キャッシュヒットレジスタ31に格納された信号と、イネーブル信号ENAと、バリッド信号VALを入力とし、以下の動作を行なう。即ち、TLBヒットが“1”かつ、キャッシュヒットが“0”かつ、イネーブル信号が“1”でかつ、バリッド信号が“1”である時、ロールバック開始信号RBSをアサ−トする。
【0051】
更に、キャッシュリフィル回路22は、この時、キャッシュリフィル動作を開始する。即ち、外部メモリ70からのデータの読み込みを開始し、読み込んだデータをデータキャッシュユニット24やTLB23へ書き込む。データキャッシュユニット24やTLB23への書き込みが終了すると、リフィル完了信号RFCをアサートする。
【0052】
バリッド信号VAL、ヘッドポインタ信号HPは各ステージ間でリング状に接続されている。命令がパイプラインステージを移動するのに伴って、内容を次のステージに伝達してい行く。
【0053】
(ロールバック動作)
本発明の実施の形態に係るロールバックプロセッサシステムは、図4に示すように、その内部状態を遷移しつつロールバック動作を実行している。図4において、ST0、ST1、ST2、ST3、ST4はそれぞれ状態遷移を表す。「通常動作」、「ロールバック動作」、「先頭命令アライン動作」及び「命令再発行動作」はそれぞれの動作状態を表現しており、C1、C2、C3、C4はそれぞれの動作状態内部における状態遷移を示す。即ち、ST0は、初期化を表しており、初期状態から「通常動作」への状態遷移を表す。ST1は、ロールバック開始信号RBSがアサートして、かつ、「ヘッドポインタ」が「1」になり、「通常動作」から「ロールバック動作」への状態遷移を表す。
【0054】
ST2は、リフィル完了信号RFCがアサートして、「ロールバック動作」から「先頭命令アライン動作」への状態遷移を表す。ST3は、「先頭命令アライン動作」から「命令再発行動作」への状態遷移を表す。ST4は、ヘッドポインタが「0」になり、「命令再発行動作」から「通常動作」への状態遷移を表す。また、C1は、「通常動作」における内部状態遷移を表し、C2は、「ロールバック動作」における内部状態遷移を表し、C3は、「先頭命令アライン動作」における内部状態遷移を表し、C4は、「命令再発行動作」における内部状態遷移を表す。
【0055】
以下にロールバック動作を説明する。
【0056】
(1)WBステージにおいて、ロールバック開始信号RBSがアサートされた場合に、ロールバック制御回路25が動作を開始する。
【0057】
(i)ロールバック制御回路25は、ロールバック開始信号RBSが“1”の時、内部状態を「ロールバック動作」の動作状態に遷移させる。
【0058】
(ii)ISステージのヘッドポインタ(HP)用のPLG34に格納される信号として、“1”を出力する。これにより、ロールバックの先頭命令に対するヘッドポインタ(HP)が“1”にセットされる。但し、その次のサイクルからはループ側(WBステージ)の値を受け取り、それをそのままスルーさせるように出力する動作を行なう。
【0059】
(iii)IWB2、バリッドバッファ50の出力に接続されるMUX11、49がループ側を出力するように制御する。2つのMUX11、49は、それぞれともにISステージからの信号とループ側(WBステージ)からの信号が入力となっている。非ロールバック動作(通常動作)中はISステージ側を選択して出力するように動作している。ロールバック動作時は、ループ側を選択するように動作し、命令や、バリッド信号をループ動作させる。
【0060】
(iv)ISステージのイネーブル信号として、“0”を出力する。これにより、順次各ステージのイネーブル信号が“0”になる。
【0061】
ロールバック動作を開始すると、上記状態を保ちつつ、命令などをループさせて保持する。
【0062】
(2)キャッシュリフィル回路22がデータを外部メモリ70からリードして、データキャッシュユニット24やTLB23へのリフィルを完了すると、リフィル完了信号RFCをアサートする。ロールバック制御回路25はリフィル完了信号RFCがアサートされたら、次の動作を行なう。
【0063】
(i)内部状態を「先頭命令アライン動作」状態に遷移させる。
【0064】
(ii)ヘッドポインタ(HP)用のPLG34,35,36、37はWBステージの値をスルーして出力する。
【0065】
(iii)ISステージのイネーブル信号として引き続き、“0”を出力し、各ステージの動作を停止させたままにする。
【0066】
(iv)MUX11,49に対してループ側を選択するように制御する。
【0067】
(v)WBステージ(ループ側)のヘッドポインタ(HP)信号を監視し、“1”になるまで状態を保持する。
【0068】
(3)WBステージ(ループ側)のヘッドポインタ(HP)信号が“1”になったら、次の動作を実行する。
【0069】
(i)内部状態を「命令再発行動作」状態に遷移させる。
【0070】
(ii)ヘッドポインタ(HP)用のPLG34,35,36、37はWBステージの値をスルーして出力する。
【0071】
(iii)ISステージのイネーブル信号として“1”を出力し、順次、ステージの動作をさせる。
【0072】
(iv)MUX11,49に対して、ループ側を選択するように制御する。
【0073】
再実行される命令がループを一周して、再びWBステージのヘッドポインタ(HP)用のPLG34、35,36、37に格納される情報がが“1”になるまで、再実行を続ける。
【0074】
(4)WBステージのヘッドポインタ(HP)が再び“1”になったら、次の動作を行ない、通常モードに復帰する。
【0075】
(i)内部状態を「通常動作」状態に遷移させる。
【0076】
(ii)ヘッドポインタ(HP)信号として“0”を出力する。
【0077】
(iii)ISステージのイネーブル信号として“1”を出力する。
【0078】
(iv)MUX11,49に対して、ステージ側、即ち、IWB2側を選ぶように制御する。
【0079】
本発明の実施の形態に係るロールバックプロセッサシステムの動作を説明するフローチャートは、図5に示すように、ステップS1からステップS12で表される。
【0080】
(a)ステップS1において、命令フェッチユニット1から命令COMがIWB2に供給された状態から開始する。
【0081】
(b)次に、ステップS2において、IWB2から実行前命令INSを発行する。
【0082】
(c)次に、ステップS3において、実行前命令INSを実行する。
【0083】
(d)次に、ステップS4において、実行前命令INSがロード命令LCOMであった場合は、キャッシュミスが発生するかどうかを判断する。
【0084】
(e)ロード命令LCOMによって、キャッシュミスが発生しないならば、ステップS5に進み、命令を完了する。
【0085】
(f)ロード命令LCOMによって、キャッシュミスが発生したならば、ステップS6に進み、キャッシュリフィル回路22をトリガー信号HMCにより駆動する。
【0086】
(g)次に、ステップS7に進み、パイプラインレジスタ群中のロード命令と後続命令を不活性とする(情報は保持)。
【0087】
(h)次に、ステップS8に進み、IWB2をキャッシュミス発生時の状態にフリーズする。
【0088】
(i)次に、ステップS9に進み、キャッシュリフィル回路22を完了するかどうかを判断する。
【0089】
(j)キャッシュリフィル回路22を完了できないならば、ステップS10に進み、発行済命令をループで回転ながら保持する。
【0090】
(k)次に、ステップS9に戻り、キャッシュリフィル回路22を完了するかどうかの判断を繰り返す。
【0091】
(l)キャッシュリフィル回路22を完了できるならば、ステップS11に進み、ループで回転しているロード命令が、キャッシュミス発生の直前の位置にあるかどうかを判断する。
【0092】
(m)ステップS11において、ループで回転している命令が、キャッシュミス発生の直前の位置にあるならば、ステップS3に戻り、命令INSを実行する。
【0093】
(n)ステップS11において、ループで回転している命令が、キャッシュミス発生の直前の位置にないならば、ステップS12に進み、発行済命令をループ中で回転する。
【0094】
(o)次に、ステップS11に戻り、ループで回転している発行済命令が、キャッシュミス発生の直前の位置にあるかどうかを判断する。
【0095】
(p)ステップS11において、ループで回転している命令が、キャッシュミス発生の直前の位置にあるならば、ステップS3に戻り、命令INSを実行し、ステップS4において、ロード命令LCOMによって、キャッシュミスが発生しないならば、ステップS5に進み、命令を完了する。
【0096】
従来、命令のパイプライン実行と同期して、命令と使用するリソースの種類、オペランド制御情報などがPLG間でステージされ、PLGに保持されている。本発明の命令ロールバックプロセッサシステムでは、この保持された情報が、命令を再実行するためにも必要十分な情報であることに着目して、それを再実行が必要なときに命令発行部を構成するマルチプレクサ11に戻して再利用することが特徴となっている。このため、制御ユニット8においては、データキャッシュユニット24のヒットミス信号をキャッシュヒットレジスタ31に保持し、TLB23のヒットミス信号をTLBヒットレジスタ32に保持し、ロールバックコントロールユニット10ではロールバックの原因となるこれらのトリガー信号が入力され、命令の実行と同期してトリガー信号をサンプリングし、ロールバックが必要かどうかを判定する。ここで、トリガー信号とは、図2及び図3に示すように、キャッシュヒットレジスタ内に格納されたヒットミス信号HMC及びTLBヒットレジスタ内に格納されたヒットミス信号HMTに相当する。キャッシュヒットレジスタ内に格納されたヒットミス信号HMCは、キャッシュヒットレジスタ31からキャッシュリフィル回路22及びロールバック判定回路26に入力される。TLBヒットレジスタ内に格納されたヒットミス信号HMTは、TLBヒットレジスタ32から同じくキャッシュリフィル回路22及びロールバック判定回路26に入力される。
【0097】
次に、図6乃至図8を使用して本発明の命令ロールバックプロセッサシステムの動作を説明する。図6はデータキャッシュミスが発生した状態、図7はロールバック動作状態、図8はロールバック終了状態をそれぞれ示している。図6乃至図8に示す命令ロールバックプロセッサシステムの構成は、基本的には、図1の構成において、PLGが3段の場合に対応している。図6乃至図8中には、デコーダユニット12及び制御ユニット8についても記載されている通りである。図6乃至図8及び後述する図9に示される命令は、図1及び図2に示したデコーダユニット12及び制御ユニット8において、パイプライン処理されている。
【0098】
データキャッシュミス発生状態においては、図6に示すように、IWB2内に「命令4」,「命令5」,「命令6」が順に格納され、MUX11の先に配置された3段のPLG1,PLG2,PLG3には、それぞれ「命令3」,「命令2」,「命令1」が格納されている。IWB2の出力はMUX11に入力される。PLG3の出力はMUX11の入力にループ状に戻されている。MUX11にはロールバックコントロールユニット10が接続されている。ここで、「命令1」がロード命令であり、「命令2」、「命令3」はその後続命令であるとする。図6はPLG3において、「命令1」がデータキャッシュミスを発生し、ロールバック動作を開始する瞬間を示している。従って、以後、MUX11において「命令1」を選択するモードに遷移する。
【0099】
ロールバックが必要な場合、図7及び図8に示すように、その命令が最終段のPLG3に到達した時、ロールバックの先頭である「命令1」は最終段のPLG3に到達しており、この時、最終段のPLG3の出力側をMUX11が選択して出力するようにロールバックコントロールユニット10は制御信号を設定する。すると、PLG3,PLG2,PLG1に保持されていた「命令1」、「命令2」、「命令3」が順にMUX11を通ってPLG群で構成されるパイプラインレジスタに再び戻され、再びPLGに保持される。ロールバックの最初の命令とその時点ですでにPLGに存在する命令(「命令1」〜「命令3」)は、ループを巡るようにように次々とロールバックされる(図7)。次に、キャッシュリフィル回路22がキャッシュのリフィル終了をロールバック制御回路25に通知すると、「命令1」が再びPLG3の位置に戻るまでロールバックを続ける。
【0100】
そしてロールバックを開始した「命令1」が再び最終段のPLG3に到達し、ロールバックが正常に終了したと判明した場合には、図8に示すように、その後はIWB2側からの新規命令である「命令4」を選択するようにMUX11の制御を行ない、以降通常に命令を発行する。
【0101】
このとき、キャッシュミスからリカバーされてなく、再びロールバックが必要であった場合は、MUX11の制御信号はPLG側を引き続き選ぶように制御し、更にロールバック動作を続行させることができる。そしてロールバックが成功するまで「命令1」〜「命令3」を繰り返し実行する。
【0102】
また、図6乃至図8ではPLG1,PLG2,PLG3に命令がすべて詰まっていることを仮定しているが、パイプラインハザードなどで毎サイクル命令を発行できない場合もある。その場合は、PLG1,PLG2,PLG3の一部が「バブル(空)」となる。そして、この「バブル」は、パイプラインハザード解消のためにタイミング制御を行なう上で必要なものである。したがって、たとえロールバック動作時においてもほとんど同一なハザードが発生する(一部そうでない場合もある)ため、「通常実行」と同じように「バブル」が必要である。本発明の実施の形態に係る命令ロールバックプロセッサシステムにおいて、命令ロールバック方法を採用した場合、この「バブル」は既に挿入されているので、新たにハザード解消のための制御は不要である。このため、単純にPLGに保持された命令を順番に再発行するだけで簡単にロールバックを実現できることになる。
【0103】
MUX11に接続されるPLGの段数は3段に限られることは無い。nを自然数として、n段存在する場合には、図9に示すように、構成され、命令は各PLG1,PLG2,PLG3,…,PLGnとシフトされる。最終段のPLGnの出力はMUX11に戻されている。ロールバックコントロールユニット10による制御によって、ロールバック動作或いはIWB2から新たな命令が発行される命令再発行動作が選択される。PLGの段数nが増えると並列処理の速度が上がるため、CPUの処理能力は上昇する。一方、各PLG内には、一定期間命令が保持されることから、PLGの段数nが増えて、エントリーの深さが深くなると、パイプラインのリスタート処理に時間を要する。そのため、命令の実行処理速度が遅くなる。そこで、現実に使用されるnの段数としては、例えば16段、32段程度が選ばれている。
【0104】
本発明の実施の形態に係る命令ロールバックプロセッサシステムに適用するキャッシュメモリを構成するデータキャッシュユニット24の構成は図10に示すように、加算器30に接続される仮想アドレス格納部51と、TLB23と、物理的アドレス格納部54と、キャッシュメモリ部55とから構成される。加算器30の出力は仮想アドレス格納部51に接続され、仮想アドレス格納部51の出力がTLB23に入力される。TLB23はこの仮想アドレス格納部51に格納される仮想アドレスを次のように物理アドレスに変換する。TLB23には複数のエントリーがあり、それぞれにバリッド(valid),ダーティー(dirty),タグ(TAG),物理的ページ番号(Physical Page Number)のフィールドがある。TLB23は、仮想アドレス格納部51の仮想ページ番号(VPN:Virtual Page Number)をキーにして、TLB23を検索し、複数のエントリーから1つを取り出す。取り出されたエントリーのタグ(TAG)フィールドの値と仮想アドレス格納部51内の仮想ページ番号とを一致比較器52で比較する。それが一致すると、一致比較器52は「1」を出力する。更に、そのエントリーの内、バリッド(valid)が「1」(有効)であるときに、ANDゲート53の出力は「1」となり、TLB23がヒットし、必要なエントリーがTLB23中に発見されたことになる。一致しなかった場合は、TLB23のヒットは「0」となり、必要なエントリーがTLB23中に見つからなかったことになるので、必要なエントリーをメモリから読み出し、TLB23に書き込む。この動作はTLBリフィルと呼ばれる。その後、再度TLB23を検索すれば、必要なエントリーが発見されるので、TLB23はヒットとなり、データキャッシュの検索を次に行う。
【0105】
ヒットしたTLB23のエントリーに、物理的ページ番号のフィールドがあり、これがロード命令LCOMの物理アドレスの上位ビットとなる。これと、物理アドレスの下位ビットとなる、仮想アドレス格納部51内のページオフセット(Page Offset)とを連結して物理アドレス54を生成する。
【0106】
キャッシュメモリ部55は複数のエントリーからなり、それぞれのエントリーにバリッド(valid),タグ(TAG),データ(Data)のフィールドがある。物理アドレスの下位ビットをインデックス(INDEX)キーとして、キャッシュを検索する。検索されたキャッシュのエントリーのタグ(TAG)フィールドの値と物理アドレスの上位ビットであるタグ(TAG)部とを比較する。一致比較器52の出力が「1」(一致を示す)であり、バリッド(valid)が「1」(有効)である場合に、ANDゲート53の出力が「1」となり、キャッシュがヒットする。
【0107】
エントリーが一致しなかった場合は、キャッシュヒットが「0」となりキャッシュミスとなり、キャッシュリフィル回路22がメモリからデータを読み出してキャッシュメモリのエントリーに書き込む。その後、再度キャッシュにアクセスすればヒットし、データを出力することができる。
【0108】
本発明の実施の形態に係る命令ロールバックプロセッサシステムにおいて、パイプライン処理するCPUの構成は、図10に示すように、命令キャッシュ(ICHACHE)101と、命令キャッシュ101に接続されるIWB2と、GPR21と、LD/STパイプ102,分岐パイプ103,整数パイプ0,整数パイプ1,COP1パイプ107及びCOP2パイプ108とからなる実行パイプラインと、仮想アドレス計算部109と、DTLB(Data TLB)110と、DCACHE(Data Cache)111と、レスポンスバッファ112、バスインタフェースユニット(BIU:Bus Interface Unit)113とから構成される。命令キャッシュ(ICACHE)101から実行すべき命令をリードする。リードした命令をIWB2に書き込む。次に、命令で指定されたソースレジスタ値RsとRtとをGPR21から読み出す。次に、読み出したソースレジスタ値を実行部(実行パイプライン)に送信する。実行パイプラインは複数あり、ここでは、ロードストア命令を実行するLD/STパイプ102、分岐命令を実行する分岐パイプ103、整数演算命令を実行する整数パイプ0と整数パイプ1、コプロセッサ1の命令を実行するCOP1パイプ107、コプロセッサ2の命令を実行するCOP2パイプ108とがある。実行される命令はその命令の種類に従って、ソースレジスタ値とともにいずれかの適切な実行パイプラインに送信される。LD/STパイプ102は、仮想アドレス計算部109、DTLB110、DCACHE(Data Cache)111と連係して動作する。即ち、GPR21から与えられたソースレジスタ値を仮想アドレス計算部109に入力し、データの仮想アドレス51を生成する。次に、DTLB110において、仮想アドレス51を物理アドレス54に変換し、DCACHE111をアクセスしてロードストア命令を実行する。キャッシュミスした場合は、ロード命令LCOMの物理アドレスをレスポンスバッファ112に転送し、更に、BIU(Bus Interface Unit)113に外部メモリへのデータロードを行なわせる。BIU113が外部メモリから読み出したデータはレスポンスバッファ112に書き込み、続いてDCACHE111に書き込む。この動作は、キャッシュリフィル動作と呼ばれる。書き込んだ後、再度キャッシュミスした命令を再実行する。
【0109】
次に、各実行パイプラインは命令の結果、即ち、演算結果や、ロードデータを結果バス114に出力し、それはGPR21に書き戻され、命令の実行を終了する。
【0110】
本発明のロールバック方式は次の利点がある。
【0111】
従来から存在するPLGを利用するため、ハードウエアの追加としては、MUX11とその制御ロジックであり、システム全体を低コストで実現できる。
【0112】
ロールバック動作のためにIWB2のいくつかのエントリーを占有する必要がなく、IWBエントリーを本来の命令発行のために使用することができる。更に又、先読みできる命令数が増えるために命令レベル並列性(Instruction Level Parallelism:ILP)を有効に活用できるようになり、性能が向上する。
【0113】
ロールバック動作時には、パイプラインハザード(データハザード、リソースハザード、コントロールハザード)を検出する必要がないので、制御が簡単になり、低コストで実現できる。
【0114】
(その他の実施の形態)
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【0115】
【発明の効果】
本発明によれば、従来からあるパイプラインレジスタを利用し、IWBを命令発行のために占有でき、命令レベル並列性を有効活用でき、制御が簡単で、低コストで高性能な命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラムを実現することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る命令ロールバックプロセッサシステムの模式的全体ブロック構成図。
【図2】本発明の実施の形態に係る命令ロールバックプロセッサシステムの制御ユニットの模式的ブロック構成図。
【図3】本発明の実施の形態に係る命令ロールバックプロセッサシステムのロールバックコントロールユニットの模式的ブロック構成図。
【図4】本発明の実施の形態に係る命令ロールバックプロセッサシステムにおけるロールバック動作の説明のための内部状態遷移図。
【図5】本発明の実施の形態に係る命令ロールバックプロセッサシステムの動作説明のためのフローチャート図。
【図6】本発明の実施の形態に係る命令ロールバックプロセッサシステムの動作の模式的ブロック説明図であって、はデータキャッシュミスが発生した状態の説明図。
【図7】本発明の実施の形態に係る命令ロールバックプロセッサシステムの動作の模式的ブロック説明図であって、ロールバック動作状態の説明図。
【図8】本発明の実施の形態に係る命令ロールバックプロセッサシステムの動作の模式的ブロック説明図であって、ロールバック終了状態の説明図。
【図9】本発明の実施の形態に係る命令ロールバックプロセッサシステムの模式的ブロック構成図であって、パイプラインレジスタの段数がn段の例における構成図。
【図10】本発明の実施の形態に係る命令ロールバックプロセッサシステムに適用するキャッシュメモリを構成するデータキャッシュユニットの模式的構成図。
【図11】本発明の実施の形態に係る命令ロールバックプロセッサシステムにおいて、パイプライン処理するCPUの構成図。
【図12】従来のマイクロプロセッサシステムの模式的ブロック構成図。
【図13】従来のマイクロプロセッサシステムの動作説明のためのフローチャート図。
【符号の説明】
1…命令フェッチユニット
2…命令ウインドウバッファ(IWB)
3,4,5,13,14,15,16…パイプラインレジスタ(PLG)
6…第1の命令デコーダA
7…第2の命令デコーダB
8…制御ユニット
9…ロールバックユニット
10…ロールバックコントロールユニット
11,49…マルチプレクサ(MUX)
12…デコーダユニット
171,172,173,174,28…命令の第1ソースレジスタ値Rsを格納するデータ格納部
181,182,183,184,29…命令の第2ソースレジスタ値Rtを格納するデータ格納部
191,192,193,194…命令のデスティネーション番号Rdを格納するデータ格納部201,202,203,204…命令のオペレーションコードを格納するデータ格納部
21…汎用レジスタ(GPR)
22…キャッシュリフィル回路
23…TLB
24…データキャッシュユニット
25…ロールバック制御回路
26…ロールバック判定回路
27…ロード命令格納レジスタ
30…加算器
31…キャッシュヒットレジスタ
32…TLBヒットレジスタ
33…ロードデータレジスタ
34,35,36,37…ヘッドポインタ(HP)用PLG
38,39,40,41…イネーブル信号(EN)用PLG
42,43,44,45…バリッド信号(VL)用PLG
46,47,48、53…ANDゲート
50…バリッドバッファ
51…仮想アドレス格納部
52…一致比較器
54…物理的アドレス格納部
55…キャッシュメモリ部
60…ロールバックライン
70…外部メモリ
100…CPU
101…命令キャッシュ(ICACHE)
102…LD/STパイプ
103…分岐パイプ
106a…整数パイプ0
106b…整数パイプ1
107…COP1パイプ
108…CPO2パイプ
109…仮想アドレス計算部
110…データTLB(DTLB:Data TLB)
111…データキャッシュ(DCACHE:Data Cache)
112…レスポンスバッファ
113…バスインタフェースユニット(BIU)
S1,S2,S3,…,S12…ステップ
ST0…初期状態から「通常動作」への状態遷移
ST1…「通常動作」から「ロールバック動作」への状態遷移
ST2…「ロールバック動作」から「先頭命令アライン動作」への状態遷移
ST3…「先頭命令アライン動作」から「命令再発行動作」への状態遷移
ST4…「命令再発行動作」から「通常動作」への状態遷移
C1…「通常動作」における内部状態遷移
C2…「ロールバック動作」における内部状態遷移
C3…「先頭命令アライン動作」における内部状態遷移
C4…「命令再発行動作」における内部状態遷移
PLG,PLG1,PLG2,PLG3,PLG4,…,PLGn…パイプラインレジスタ
LCOM…ロード命令
COM…命令
INS…命令
FLA…フラグ信号
ENA…イネーブル信号
VAL…バリッド信号
RFC…リフィル完了信号
RBS…ロールバック開始信号
RBC…ロールバック制御信号
HMC…キャッシュヒットレジスタ内に格納されたヒットミス信号
HMT…TLBヒットレジスタ内に格納されたヒットミス信号
Claims (9)
- 一定の順番で配列された複数の実行前命令を格納した命令ウインドウバッファと、
前記命令ウインドウバッファの出力を一方の入力に入力するマルチプレクサと、
前記マルチプレクサの出力と前記マルチプレクサの他方の入力との間に接続されたロールバックユニット
前記ロールバックユニットに接続されたデコーダユニットと、
前記デコーダユニットに接続された制御ユニットと、
前記制御ユニットに接続され、前記マルチプレクサにロールバック制御信号を発行するロールバックコントロールユニット
とを備えることを特徴とする命令ロールバックプロセッサシステム。 - 前記ロールバックユニットは、実行段パイプラインの長さ分だけ前記マルチプレクサの出力を保持するパイプラインレジスタを備えることを特徴とする請求項1記載の命令ロールバックプロセッサシステム。
- 前記ロールバックユニットは、リング状に縦続接続される複数段のパイプラインレジスタを備えることを特徴とする請求項1記載の命令ロールバックプロセッサシステム。
- 前記パイプラインレジスタは、
命令の第1ソースレジスタ値を格納するデータ格納部と、
命令の第2ソースレジスタ値を格納するデータ格納部と、
命令のデスティネーション番号を格納するデータ格納部と、
命令のオペレーションコードを格納するデータ格納部
とを備えることを特徴とする請求項2又は3記載の命令ロールバックプロセッサシステム。 - 前記デコーダユニットは、
前記複数段のパイプラインレジスタの内、第1段目のパイプラインレジスタからの命令をデコードする第1の命令デコーダ
を備えることを特徴とする請求項1記載の命令ロールバックプロセッサシステム。 - キャッシュミス発生時には、ロールバックユニットにおいて、未完了命令をループで回転させて保持するロールバック手順と、
キャッシュミスが解消されず、ロールバックが正常に終了しない時には、ロールバック手順を繰り返す手順と、
ロールバックが正常に終了する時には、ロールバック制御信号をマルチプレクサに発行して、命令ウインドウバッファから未発行命令を発行する命令再発行手順
とを備えることを特徴とする命令ロールバック方法。 - 一定の順番で配列された複数の実行前命令を格納した命令ウインドウバッファと、前記命令ウインドウバッファの出力を一方の入力とするマルチプレクサと、前記マルチプレクサに接続されたロールバックユニットとを備え、前記ロールバックユニットの出力を前記マルチプレクサの他方の入力に接続した命令ロールバックプロセッサシステムにおいて、
未完了命令をロールバックする時は前記ロールバックユニット側の入力を選択するロールバック手順と、
未発行命令発行時は、前記命令ウインドウバッファからの入力を選択する命令再発行手順とを備えることを特徴とする命令ロールバック方法。 - 命令ウインドウバッファから発行された実行前命令を実行させる手順と、
キャッシュミスの発生時、キャッシュリフィル回路を駆動し、パイプラインレジスタ中のロード命令と後続命令を不活性とし、前記命令ウインドウバッファを前記キャッシュミスの発生時の状態にフリーズさせる手順と、
前記キャッシュリフィル回路が完了しかつロード命令が前記キャッシュミスの発生時直前の位置にあるならば、前記ロード命令と前記後続命令を実行する手順に戻す手順と、
前記キャッシュリフィル回路が完了しないならば、前記命令ウインドウバッファから発行された発行済命令をループ回転して保持させる手順と、
更に、前記キャッシュリフィル回路が完了しかつ前記ロード命令が前記キャッシュミスの発生時直前の位置にないならば、前記発行済命令をループ回転させる手順
とを備えることを特徴とする命令ロールバック方法。 - 命令ウインドウバッファから発行された実行前命令を実行させる手順と、
キャッシュミスの発生時、キャッシュリフィル回路を駆動し、パイプラインレジスタ中のロード命令と後続命令を不活性とし、前記命令ウインドウバッファを前記キャッシュミスの発生時の状態にフリーズさせる手順と、
前記キャッシュリフィル回路が完了しかつ前記ロード命令が前記キャッシュミスの発生時直前の位置にあるならば、前記ロード命令と前記後続命令を実行する手順に戻す手順と、
前記キャッシュリフィル回路が完了しないならば、前記命令ウインドウバッファから発行された発行済命令をループ回転して保持させる手順と、
更に、前記キャッシュリフィル回路が完了しかつ前記ロード命令が前記キャッシュミスの発生時直前の位置にないならば、前記発行済命令をループ回転させる手順
とからなるアルゴリズムを命令ロールバックプロセッサシステムに実行させることを特徴とする命令ロールバックプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003049933A JP3655908B2 (ja) | 2003-02-26 | 2003-02-26 | 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム |
US10/449,082 US7213130B2 (en) | 2003-02-26 | 2003-06-02 | Instruction rollback processor system, an instruction rollback method and an instruction rollback program |
TW093104291A TWI251774B (en) | 2003-02-26 | 2004-02-20 | Instruction rollback processing system, instruction rollback method, and instruction rollback program |
CNB2004100076257A CN1322416C (zh) | 2003-02-26 | 2004-02-25 | 指令转回处理器系统和指令转回方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003049933A JP3655908B2 (ja) | 2003-02-26 | 2003-02-26 | 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004259049A JP2004259049A (ja) | 2004-09-16 |
JP3655908B2 true JP3655908B2 (ja) | 2005-06-02 |
Family
ID=32866640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003049933A Expired - Lifetime JP3655908B2 (ja) | 2003-02-26 | 2003-02-26 | 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US7213130B2 (ja) |
JP (1) | JP3655908B2 (ja) |
CN (1) | CN1322416C (ja) |
TW (1) | TWI251774B (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050138290A1 (en) * | 2003-12-23 | 2005-06-23 | Intel Corporation | System and method for instruction rescheduling |
US7555634B1 (en) | 2004-04-22 | 2009-06-30 | Sun Microsystems, Inc. | Multiple data hazards detection and resolution unit |
DE102004058288A1 (de) * | 2004-12-02 | 2006-06-08 | Robert Bosch Gmbh | Vorrichtung und Verfahren zur Behebung von Fehlern bei einem Prozessor mit zwei Ausführungseinheiten |
US7886112B2 (en) * | 2006-05-24 | 2011-02-08 | Sony Computer Entertainment Inc. | Methods and apparatus for providing simultaneous software/hardware cache fill |
US7941641B1 (en) | 2007-10-01 | 2011-05-10 | Yong-Kyu Jung | Retargetable instruction decoder for a computer processor |
GB2491156B (en) * | 2011-05-25 | 2019-08-07 | Advanced Risc Mach Ltd | Processing pipeline control |
JP2014006807A (ja) * | 2012-06-26 | 2014-01-16 | Fujitsu Ltd | 演算処理装置、キャッシュメモリ制御装置及びキャッシュメモリの制御方法 |
CN103914523A (zh) * | 2014-03-24 | 2014-07-09 | 小米科技有限责任公司 | 页面回退控制方法及装置 |
US9679076B2 (en) | 2014-03-24 | 2017-06-13 | Xiaomi Inc. | Method and device for controlling page rollback |
GB2539411B (en) * | 2015-06-15 | 2017-06-28 | Bluwireless Tech Ltd | Data processing |
GB2539410B (en) * | 2015-06-15 | 2017-12-06 | Bluwireless Tech Ltd | Data processing |
EP3173935B1 (en) * | 2015-11-24 | 2018-06-06 | Stichting IMEC Nederland | Memory access unit |
US11372972B2 (en) * | 2018-03-19 | 2022-06-28 | Intel Corporation | Side-channel exploit detection |
CN109347474B (zh) * | 2018-09-28 | 2022-09-23 | 深圳忆联信息系统有限公司 | 信号时序配置方法、装置、计算机设备及存储介质 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE454730B (sv) * | 1986-09-19 | 1988-05-24 | Asea Ab | Forfarande och datorutrustning for stotfri omkoppling av funktionen fran aktiva enheter till beredskapsenheter i en centralenhet |
JPH05120012A (ja) | 1991-10-30 | 1993-05-18 | Matsushita Electric Ind Co Ltd | 例外処理装置 |
US5572682A (en) * | 1992-04-03 | 1996-11-05 | Cyrix Corporation | Control logic for a sequential data buffer using byte read-enable lines to define and shift the access window |
US5568380A (en) * | 1993-08-30 | 1996-10-22 | International Business Machines Corporation | Shadow register file for instruction rollback |
JPH07319693A (ja) | 1994-05-30 | 1995-12-08 | Hitachi Ltd | パイプライン処理方式 |
US5860000A (en) * | 1996-01-31 | 1999-01-12 | Hitachi Micro Systems, Inc. | Floating point unit pipeline synchronized with processor pipeline |
US6665792B1 (en) * | 1996-11-13 | 2003-12-16 | Intel Corporation | Interface to a memory system for a processor having a replay system |
US5872990A (en) * | 1997-01-07 | 1999-02-16 | International Business Machines Corporation | Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment |
US5928355A (en) * | 1997-06-27 | 1999-07-27 | Sun Microsystems Incorporated | Apparatus for reducing instruction issue stage stalls through use of a staging register |
US6065110A (en) * | 1998-02-09 | 2000-05-16 | International Business Machines Corporation | Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue |
US6012134A (en) * | 1998-04-09 | 2000-01-04 | Institute For The Development Of Emerging Architectures, L.L.C. | High-performance processor with streaming buffer that facilitates prefetching of instructions |
US6247118B1 (en) * | 1998-06-05 | 2001-06-12 | Mcdonnell Douglas Corporation | Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry |
US7117342B2 (en) * | 1998-12-03 | 2006-10-03 | Sun Microsystems, Inc. | Implicitly derived register specifiers in a processor |
US6192466B1 (en) * | 1999-01-21 | 2001-02-20 | International Business Machines Corporation | Pipeline control for high-frequency pipelined designs |
US6460133B1 (en) * | 1999-05-20 | 2002-10-01 | International Business Machines Corporation | Queue resource tracking in a multiprocessor system |
US6748589B1 (en) * | 1999-10-20 | 2004-06-08 | Transmeta Corporation | Method for increasing the speed of speculative execution |
US6629271B1 (en) * | 1999-12-28 | 2003-09-30 | Intel Corporation | Technique for synchronizing faults in a processor having a replay system |
US6832308B1 (en) * | 2000-02-15 | 2004-12-14 | Intel Corporation | Apparatus and method for instruction fetch unit |
US6826573B1 (en) * | 2000-02-15 | 2004-11-30 | Intel Corporation | Method and apparatus for queue issue pointer |
US6751711B1 (en) * | 2000-10-27 | 2004-06-15 | Nortel Networks Limited | Methods and systems for process rollback in a shared memory parallel processor computing environment |
US6983358B2 (en) * | 2001-10-23 | 2006-01-03 | Ip-First, Llc | Method and apparatus for maintaining status coherency between queue-separated functional units |
-
2003
- 2003-02-26 JP JP2003049933A patent/JP3655908B2/ja not_active Expired - Lifetime
- 2003-06-02 US US10/449,082 patent/US7213130B2/en not_active Expired - Fee Related
-
2004
- 2004-02-20 TW TW093104291A patent/TWI251774B/zh not_active IP Right Cessation
- 2004-02-25 CN CNB2004100076257A patent/CN1322416C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1322416C (zh) | 2007-06-20 |
US20040168046A1 (en) | 2004-08-26 |
US7213130B2 (en) | 2007-05-01 |
JP2004259049A (ja) | 2004-09-16 |
CN1525309A (zh) | 2004-09-01 |
TW200500943A (en) | 2005-01-01 |
TWI251774B (en) | 2006-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7461238B2 (en) | Simple load and store disambiguation and scheduling at predecode | |
US6691220B1 (en) | Multiprocessor speculation mechanism via a barrier speculation flag | |
US6748518B1 (en) | Multi-level multiprocessor speculation mechanism | |
US6609192B1 (en) | System and method for asynchronously overlapping storage barrier operations with old and new storage operations | |
JP3494736B2 (ja) | 分岐先バッファを用いた分岐予測システム | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
US5471598A (en) | Data dependency detection and handling in a microprocessor with write buffer | |
JP3655908B2 (ja) | 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム | |
TWI531967B (zh) | 微處理器及其執行之方法 | |
US5907860A (en) | System and method of retiring store data from a write buffer | |
US6625660B1 (en) | Multiprocessor speculation mechanism for efficiently managing multiple barrier operations | |
US6963967B1 (en) | System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture | |
KR100237985B1 (ko) | 추론적 로드 명령을 실행하는 프로세서, 그 방법 및 데이터 처리 시스템 | |
US20070288725A1 (en) | A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism | |
US20030005266A1 (en) | Multithreaded processor capable of implicit multithreaded execution of a single-thread program | |
US6606702B1 (en) | Multiprocessor speculation mechanism with imprecise recycling of storage operations | |
US10310859B2 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
US20060218351A1 (en) | Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory | |
US5615402A (en) | Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch | |
JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
JP2003280896A (ja) | 命令発行装置及び命令発行方法 | |
US6725340B1 (en) | Mechanism for folding storage barrier operations in a multiprocessor system | |
US11099849B2 (en) | Method for reducing fetch cycles for return-type instructions | |
US6728873B1 (en) | System and method for providing multiprocessor speculation within a speculative branch path | |
US20090240914A1 (en) | Recycling long multi-operand instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050131 |
|
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: 20050222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050304 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080311 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090311 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100311 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100311 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110311 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120311 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130311 Year of fee payment: 8 |