(57)【特許請求の範囲】
【請求項１】
複数の命令流をそれぞれ形成する複数の命令コードが格納される命令キャッシュと、前記各命令流に対応する複数のプログラムカウンタを有し、いずれかのプログラムカウンタのカウント値に基づいて前記命令キャッシュから対応する命令コードを出力させるＰＣユニットと、該出力された命令コードをデコードし、デコード命令の供給すべき演算ユニットを決定するデコーダとを備えるプロセッサの命令実行制御システムにおいて、
前記デコーダは前記命令で示すソースレジスタ及び該レジスタに対応させたディスティネーションレジスタを指定し、
前記ＰＣユニットに前記複数の命令流を設定順に選択する選択信号を出力すると共に選択した命令流を識別するための識別タグを生成するプログラムカウンタ制御部と、
前記各命令流の識別タグ毎に識別タグと前記ディスティネーションレジスタとによって決定するエントリに、演算ユニットの演算結果を示す演算値を保持し、前記識別タグと前記ソースレジスタを用いて決定するエントリの値を出力するリネーミングレジスタと、
該出力されたソースレジスタの値と演算値及び前記デコード命令を受けるとこれらを前記演算ユニットに出力するリザベーションステーションと、
を含むことを特徴とするプロセッサの命令実行制御システム。
【請求項２】
前記プログラムカウンタ制御部は、前記複数の命令流を巡回選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【請求項３】
前記プログラムカウンタ制御部は、命令流を連続的に選択する回数値が設定される更新タイミングレジスタを有し、前記複数の命令流をそれぞれ前記回数値だけ連続的に選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【請求項４】
前記プログラムカウンタ制御部は、前記複数の命令流にそれぞれ対応させた異なるタイミング回数値の設定されている複数のタイミングレジスタを有し、各タイミングレジスタのタイミング回数値の減算を繰り返し、「０」となったタイミングレジスタに対応する命令流を選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【請求項５】
前記プログラムカウンタ制御部は、前記複数の命令流にそれぞれ対応させた異なるタイミング回数値の設定されている複数のタイミングレジスタを有し、各タイミングレジスタのタイミング回数値の減算を繰り返し、最も小さい値のタイミングレジスタに対応する命令流を選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【請求項６】
前記プログラムカウンタ制御部は、前記命令キャッシュからミスヒット信号を受ける毎にミスヒット対応の命令流以外の命令流を選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の命令列の実行機能を備えた複数命令流パイプライン計算機におけるプロセッサの命令実行制御システムに関する。
【０００２】
【従来の技術】
パイプライン計算機において、その処理性能を向上させるために同時に複数の命令を実行するスーパースカラ方式や、命令の発行順序を変えて実行するアウトオブオーダ発行が用いられている。
【０００３】
その際に、性能低下の原因となる命令間のデータ依存を回避するための技術としてレジスターリネーミング（ｒｅｇｉｓｔｅｒ  ｒｅｎａｍｉｎｇ  ：レジスタ名前替え）が用いられる。このレジスターリネーミングを用いることにより、命令依存のうち、先行の命令がそのレジスタの値をリードしてからでないとレジスタに新しい値を書き込めないといった逆依存と、同じレジスタに同時に書き込もうとしたという出力依存という二つの依存を取り除くことができる。これにより依存による性能の低下を抑えることが可能となる。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記のようなパイプライン計算機であっても、真の依存、即ち、命令依存のうち、先行の命令の結果を利用して次の命令の演算を行うといった場合は、その実行が待たされるのは避けられず、この場合は、プロセッサの演算資源が使われずに無駄になるという問題があった。
【０００５】
このような点から、演算ユニットの有効利用が図れ、演算処理能力を向上させることのできるプロセッサの命令実行制御システムの実現が望まれていた。
【０００６】
【課題を解決するための手段】
本発明は、前述の課題を解決するため次の構成を採用する。
〈請求項１の構成〉
複数の命令流をそれぞれ形成する複数の命令コードが格納される命令キャッシュと、前記各命令流に対応する複数のプログラムカウンタを有し、いずれかのプログラムカウンタのカウント値に基づいて前記命令キャッシュから対応する命令コードを出力させるＰＣユニットと、該出力された命令コードをデコードし、デコード命令の供給すべき演算ユニットを決定するデコーダとを備えるプロセッサの命令実行制御システムにおいて、前記デコーダは前記命令で示すソースレジスタ及び該レジスタに対応させたディスティネーションレジスタを指定し、前記ＰＣユニットに前記複数の命令流を設定順に選択する選択信号を出力すると共に選択した命令流を識別するための識別タグを生成するプログラムカウンタ制御部と、前記各命令流の識別タグ毎に識別タグと前記ディスティネーションレジスタとによって決定するエントリに、演算ユニットの演算結果を示す演算値を保持し、前記識別タグと前記ソースレジスタを用いて決定するエントリの値を出力するリネーミングレジスタと、該出力されたソースレジスタの値と演算値及び前記デコード命令を受けるとこれらを前記演算ユニットに出力するリザベーションステーションと、を含むことを特徴とするプロセッサの命令実行制御システム。
【０００７】
〈請求項１の説明〉
複数の命令流とは、互いに独立に実行可能な命令流を意味している。例えば、このような命令流として二つの命令流があった場合、演算ユニットに対して、これらを交互に与える。これにより、一方の命令流において、真の依存関係のため、次の命令の実行が待たされる場合であっても、他方の命令流の命令を実行する間に、一方の命令流の命令を完了させることができ、その結果、真の依存関係による性能低下を減少させることができる。
【０００９】
プログラムカウンタは、命令流と等しい数だけ設けられ、対応した命令流の実行を管理するものである。プログラムカウンタ制御部は、これらのプログラムカウンタに対して、順次有効になるよう制御する。これにより、有効となったプログラムカウンタに対応した命令流が選択され、演算ユニットに与えられる。そして、順次命令流が切り替わるため、真の依存関係による性能低下を減少させることができる。
【００１０】
〈請求項３の構成〉
前記プログラムカウンタ制御部は、命令流を連続的に選択する回数値が設定される更新タイミングレジスタを有し、前記複数の命令流をそれぞれ前記回数値だけ連続的に選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【００１１】
〈請求項３の説明〉
請求項３の発明は、命令流の切り替えタイミングが複数の命令実行単位となっている点を特徴としている。これにより、一つの命令流が連続して選択される長さを自由に変更することができ、システムに応じて適切な長さとすることにより、プロセッサのスループットを向上させることができる。
【００１４】
〈請求項４の構成〉
前記プログラムカウンタ制御部は、前記複数の命令流にそれぞれ対応させた異なるタイミング回数値の設定されている複数のタイミングレジスタを有し、各タイミングレジスタのタイミング回数値の減算を繰り返し、「０」となったタイミングレジスタに対応する命令流を選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【００１５】
〈請求項４の説明〉
請求項４の発明は、命令流の切り替えタイミングが複数の命令実行単位で、かつ、それぞれの命令流に対して重み付けした命令実行単位となっている点を特徴としている。これにより、複数の命令流に対して、実行の優先度を与えることができる。
【００１８】
〈請求項５の構成〉
前記プログラムカウンタ制御部は、前記複数の命令流にそれぞれ対応させた異なるタイミング回数値の設定されている複数のタイミングレジスタを有し、各タイミングレジスタのタイミング回数値の減算を繰り返し、最も小さい値のタイミングレジスタに対応する命令流を選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【００２０】
〈請求項６の構成〉
前記プログラムカウンタ制御部は、前記命令キャッシュからミスヒット信号を受ける毎にミスヒット対応の命令流以外の命令流を選択することを特徴とする請求項１記載のプロセッサの命令実行制御システム。
【００２１】
〈請求項６の説明〉
命令キャッシュは、複数の命令流におけるそれぞれの命令を格納するためのキャッシュメモリである。そして、各命令は、この命令キャッシュより読み出されて、演算ユニットで実行される。ここで、命令キャッシュでミスヒットした命令は選択されず、キャッシュヒットした命令のみが読み出されるため、命令キャッシュへの命令読み込みの時間待ちをすることなく、効率的な実行が可能となる。
【００２２】
【発明の実施の形態】
以下、本発明の実施の形態を図面を用いて詳細に説明する。
図１は本発明のプロセッサの命令実行制御方法およびシステムの具体例１を示す要部の構成図であるが、これに先立ち、本発明の全体構成について説明する。
【００２３】
《全体の構成》
図２は、本発明の全体構成としてのパイプライン計算機の構成図である。
図の装置は、命令メモリ１、命令キャッシュ２、デコーダ３、プログラムカウンタ制御部４、プログラムカウンタユニット（ＰＣユニット）５、リネーミングレジスタ６、データキャッシュ７、データメモリ８、リザベーションステーション１０〜１３、演算ユニット２０〜２３からなる。
【００２４】
命令メモリ１は、複数の命令を格納するメモリであり、命令キャッシュ２を通じてデコーダ３に接続されている。命令キャッシュ２は、命令メモリ１より、例えば４ワード分といったように命令を一次格納するキャッシュメモリである。
【００２５】
デコーダ３からの出力、およびプログラムカウンタ制御部４の出力は、各演算ユニット２０〜２３のリザベーションステーション１０〜１３と、リネーミングレジスタ６に接続されている。プログラムカウンタ制御部４は、命令流識別タグ生成ユニットであり、その出力は、命令流の個数分のプログラムカウンタ（ＰＣ）を持つプログラムカウンタユニット（以下、ＰＣユニットという）５と、リネーミングレジスタ６に接続されている。
【００２６】
図３は、リネーミングレジスタ６の構成説明図である。
リネーミングレジスタ６は、レジスタリネーミング（レジスタ名前替え）を行うための連想メモリであり、ｖフィールド、ｄｅｓｔフィールド、ＩＮフィールド、ｄａｔａフィールド、Ｃフィールド、ＩＣフィールドを備えたテーブルである。ここで、ｖフィールドは１ビットからなる値で、そのエントリが有効か否かを示すフィールド、ｄｅｓｔフィールドは、そのエントリが実際にはどのレジスタの値を保持しているかを表すフィールドである。また、ＩＮフィールドは、命令流指示ビットフィールドで、［ｌｏｇ２ｎ  ］（小数点以下切り上げ。ただし、ｎ＞１で命令流の数。）ビットからなり、そのエントリの値がどの命令流であるかを識別するための値を示している。ｄａｔａフィールドは、そのレジスタの持つ値、または結果タグを保持するためのフィールドである。Ｃフィールドは、そのエントリのｄａｔａフィールドが実際の値を持っているのか、または、実行完了待ち、即ち結果タグを持っているのかを区別するための１ビットからなるフラグである。更に、ＩＣフィールドは、完了フラグフィールドであり、これは割り込みに対処するためのフィールドである。
【００２７】
図２に戻って、各リザベーションステーション１０〜１３は、対応する各演算ユニット２０〜２３に接続されており、ロードストアユニット２３を除く各演算ユニット２０〜２２の出力はリネーミングレジスタ６に接続されている。
【００２８】
ロードストアユニット２３の出力は、データキャッシュ７を通じてデータメモリ８と接続されている。また、各演算ユニット２０〜２３は、例えば、分岐（Ｂｒａｎｃｈ）、算術演算（ＡＬＵ  ）、シフタ（Ｓｈｉｆｔｅｒ  ）、ロード／ストア（Ｌｏａｄ／Ｓｔｏｒｅ）ユニットである。
【００２９】
《全体の動作》
最初に、複数の命令流について説明する。
図４は、複数の命令流の説明図である。
この例は、二つのアプリケーションＡＰ１、ＡＰ２の命令列を示しており、それぞれの命令（１Ａ）〜（４Ａ）と、命令（１Ｂ）〜（４Ｂ）とはプログラムの実行順序としては全く無関係である。このような複数の命令流がある場合は、各命令流を同時に実行できれば、演算ユニット２０〜２３の有効利用が図れ、プロセッサの性能向上に寄与することができる。そこで、リネーミングレジスタ６を用いて以下のように制御を行う。
【００３０】
先ず、プログラムカウンタ制御部４が、ＰＣユニット５に、命令流個あるプログラムカウンタのうちの一つを選択する信号を出す。ＰＣユニット５は、選ばれたプログラムカウンタの値で命令キャッシュ２にアクセスし、命令キャッシュ２からの出力は、デコーダ３に送られる。デコーダ３は、命令を解釈し、どの演算ユニット２０〜２３に送るかを決定し、対応するリザベーションステーション１０〜１３に出力を送る。同時に、プログラムカウンタ制御部４から［ｌｏｇ２ｎ  ］（小数点以下切り上げ）ビットの命令流識別タグが、同一リザベーションステーションに送られる。同時に、デコーダ３からは、命令のソースレジスタの値とデスティネーションレジスタの値が、また、プログラムカウンタ制御部４からは命令流識別タグが、それぞれリネーミングレジスタ６に送られる。
【００３１】
リネーミングレジスタ６は、このソースレジスタの値と命令流識別タグをキーとして連想メモリを引き、合致するもののなかで、最新の値を対応するリザベーションステーションに送る。この時、もし、合致したエントリのＣフィールドが無効だった場合、値の代わりに結果タグの値を送る。また、リネーミングレジスタ６はデスティネーションレジスタの値を新しいエントリのｄｅｓｔフィールドに、命令流識別タグをＩＮフィールドに加え、更に、ｖフィールドを有効にし、ＣフィールドとＩＣフィールドを無効にし、結果タグを生成してｄａｔａフィールドに保持する。また、このリネーミングレジスタ６のエントリの値をリザベーションステーション１０〜１３に送る。
【００３２】
図５は、リネーミングレジスタ６の内容説明図である。
即ち、これは、図３に示した二つのアプリケーションＡＰ１とＡＰ２との命令列が入力されたものであり、アプリケーションＡＰ１およびＡＰ２のそれぞれのＲ３ａ  とＲ５ａ  の値がｄａｔａフィールドに書き込まれており、従って、Ｃフィールドが有効（＝１）であり、また、ＩＣフィールドも、前の命令での結果を保持しているエントリのＩＣフィールドが全て有効であるため、有効（＝１）となっている。このように、ＡＰ１とＡＰ２とは、ＩＮフィールドの値が異なるため、これらの命令は同時に実行することが可能となる。尚、ｄａｔａフィールドの「２」「３」「５」「６」は値であり、「１０５」〜「１０８」および「２０１」〜「２０４」は、結果タグの値である。
【００３３】
リザベーションステーション１０〜１３では、これらのデコードされた命令と命令流識別タグ、リネーミングレジスタ３３のエントリの値、ソースレジスタの値（もしくは、タグの値）を保持しており、該当する演算ユニット２０〜２３が空いていて、かつ、ソースレジスタの値が揃っていれば、その演算ユニット２０〜２３に送られる。
【００３４】
演算ユニット２０〜２３で実行された結果と命令流識別タグは、ストア命令を除き、リネーミングレジスタ６の先ほどのエントリへ送られ、ｄａｔａフィールドに結果を書き込み、Ｃフィールドを有効にする。その際ｄａｔａフィールドに書かれていた、結果タグの値と一致するタグを持っているものが、リザベーションステーション１０〜１３にいないかを探し、もし一致するものがあれば、そのリザベーションステーション１０〜１３にも結果を書き込む。
【００３５】
また、ＩＣフィールドは、実行が実際の命令順において前の命令での結果を保持しているエントリのＩＣフィールドが全て有効であれば、有効にする。更に、ＩＣフィールドが有効なもののうちｄｅｓｔエントリが同一なエントリが存在した場合、古い方のエントリのｖフィールドを無効にする。
【００３６】
このようなプロセッサでは、複数の命令流がお互い共通のパイプラインを使用して実行される。そのため、ある時間内での全体のスループットが向上するかは、複数の命令流をどのように選択するかにかかっている。そこで、以下の各具体例において、複数の命令流の制御機構について説明する。
【００３７】
《具体例１》
〈構成〉
図１は、上述したように、本発明のプロセッサの命令実行制御方法およびシステムの要部を示す構成図である。
図のシステムは、命令キャッシュ２と、プログラムカウンタ制御部４と、ＰＣユニット５とを示している。命令キャッシュ２のキャッシュコントローラ２ａは、ＰＣユニット５からの信号に基づき、命令を格納しているキャッシュメモリへのアクセスを制御するコントローラである。
【００３８】
プログラムカウンタ制御部４は、カウンタ４１と現命令識別タグレジスタ４２とを備えている。カウンタ４１は、ｎ進（ｎはプログラムカウンタの個数と等しい値）の巡回カウンタであり、クロック１０１に対応してカウントを行う。現命令識別タグレジスタ４２は、現在有効なプログラムカウンタの番号（命令流識別子）を保持するレジスタである。
【００３９】
ＰＣユニット５は、複数のプログラムカウンタ（ＰＣ）５１ａ、５１ｂと、これらプログラムカウンタ５１ａ、５１ｂのゲート５２ａ、５２ｂからなる。これらゲート５２ａ、５２ｂは、ＰＣ制御線４０を介してプログラムカウンタ制御部４で制御されるよう構成されている。尚、本具体例では、プログラムカウンタ（ＰＣ）５１ａ、５１ｂと、ゲート５２ａ、５２ｂの例として２個の場合を示しているが、この数は命令流に対応して種々の値に構成される。
【００４０】
また、図中、１０２は、キャッシュコントローラ２ａからのアック信号、即ち、選択された命令流がキャッシュヒットしたことを示す信号である。
【００４１】
〈動作〉
カウンタ４１は、クロック１０１に従って毎サイクルカウントを進める。この出力は、現命令識別タグレジスタ４２に保持される。そして、プログラムカウンタ制御部４は、この現命令識別タグレジスタ４２の値により、これに該当するプログラムカウンタ５１ａ（５１ｂ）の出力のみがキャッシュコントローラ２ａに送られるよう、ＰＣ制御線４０を介してゲート５２ａ（５２ｂ）を制御する。これにより、キャッシュコントローラ２ａは、キャッシュメモリにアクセスし、キャッシュメモリからは、プログラムカウンタ５１ａ（５１ｂ）の値に対応した命令が読み出される。従って、本具体例１では、１サイクル毎に命令流が切り替えられることになる。尚、カウンタ４１は、キャッシュコントローラ２ａからアック信号１０２が返ってこない場合は、そのカウントアップを行わない。即ち、キャッシュミスした場合は、そのカウント値が継続して出力され、従って、キャッシュコントローラ２ａは、キャッシュミスした命令流のデータが命令キャッシュ２に読み込まれるまで、そのアクセスを行う。
【００４２】
〈効果〉
以上のように、本具体例１では、命令流が順次切り替えられるため、一つの命令流の真の依存のために実行が待たされる可能性を減少させ、効率のよい命令の実行が可能となる。即ち、一つの命令流のうち、ある命令（これを命令１とする）に対して、次の命令（命令２とする）が真の依存関係となっており、かつ命令１の実行が２サイクル必要であるとする。このような場合、本具体例では、命令１の次のサイクルでは、他の命令流の命令を実行するため、命令２の実行までには命令１の実行が完了していることになる。このように、ある命令流で真の依存関係があった場合でも、これによる次の命令の実行待ちの可能性を減少させることができる。
【００４３】
《具体例２》
〈構成〉
図６は、具体例２の構成図である。
図のシステムは、命令キャッシュ２と、プログラムカウンタ制御部４ａと、ＰＣユニット５とを示している。ここで、命令キャッシュ２とＰＣユニット５とは具体例１と同様であるため、ここでの説明は省略する。
【００４４】
プログラムカウンタ制御部４ａは、カウンタ４１、現命令識別タグレジスタ４２を備えると共に、更新タイミングレジスタ４３、減算器４４、レジスタ４５からなる。更新タイミングレジスタ４３は、予め設定した命令流の更新タイミングとなる値を格納するレジスタである。減算器４４は、更新タイミングレジスタ４３の値をクロック１０１に基づき毎サイクル減算し、その値を減算器４４の入力とレジスタ４５に出力するよう構成されている。カウンタ４１は、減算器４４の出力が“０”即ち、レジスタ４５の値が０となった場合にカウントアップするカウンタであり、現命令識別タグレジスタ４２は、具体例１と同様に、現在有効なプログラムカウンタの番号（命令流識別子）を保持するレジスタである。
【００４５】
〈動作〉
更新タイミングレジスタ４３に設定された値が減算器４４に送られ、毎サイクル減算される。そして、この値が０になるとカウンタ４１はその値をカウントアップする。ＰＣユニット５では、このカウンタ４１の値に対応したプログラムカウンタの出力をキャッシュコントローラ２ａに送るため、それぞれの命令流は、更新タイミングレジスタ４３に設定された値のサイクル分連続して実行されることになる。尚、本具体例においても、キャッシュコントローラ２ａからのアック信号１０２が返ってこなかった場合は、減算器４４の動作を停止するが、後述する具体例４と同様に、次の命令流を選択するよう構成してもよい。
【００４６】
〈効果〉
本具体例では、一つの命令流が連続してフェッチされる長さを更新タイミングレジスタ４３に与えることにより、自由に変更することが可能である。これにより、例えば、更新タイミングを、命令キャッシュ２におけるキャッシュのラインサイズに合わせるといった構成にすることにより、効率のよいアクセスが可能となる。即ち、通常、命令はアドレスが連続していることが多いため、ある命令が命令キャッシュ２に存在すれば、次の命令もヒットする可能性が高い。例えば、命令キャッシュ２が、一度に４命令分のデータを読み込む場合、先頭の命令でキャッシュヒットすれば、残りの３命令も必ずヒットすることになる。そこで、更新タイミングレジスタ４３の値を４としておくことにより、一つの命令流で、ある命令がヒットすれば、必ず４命令がヒットすることになり、効率のよいアクセスが可能となる。
【００４７】
《具体例３》
〈構成〉
図７は、具体例３の構成図である。
この具体例では、上記具体例２において、更新タイミングを命令流毎に重み付けを行ったものである。図７において、プログラムカウンタ制御部４ｂは、現命令識別タグレジスタ４２と、プログラムカウンタの個数分の更新タイミングレジスタ４３ａ、４３ｂと、これに対応した個数分設けられたテンポラリレジスタ４６ａ、４６ｂと、減算器４４と、比較器４７とからなる。即ち、更新タイミングレジスタ４３ａ、４３ｂの出力は、それぞれテンポラリレジスタ４６ａ、４６ｂを通して減算器４４と比較器４７に入力される。また、減算器４４の出力はテンポラリレジスタ４６ａ、４６ｂへ入力され、比較器４７の出力は、現命令識別タグレジスタ４２に入力されるよう構成されている。
【００４８】
〈動作〉
各プログラムカウンタ５１ａ、５１ｂに対応して設定された更新タイミングレジスタ４３ａ、４３ｂの値は、それぞれのテンポラリレジスタ４６ａ、４６ｂに送られる。テンポラリレジスタ４６ａ、４６ｂの値は、減算器４４で交互あるいは同時に毎サイクル減算され、結果は、それぞれのテンポラリレジスタ４６ａ、４６ｂに書き戻される。また、このテンポラリレジスタ４６ａ、４６ｂの値は比較器４７に送られ、０になった方のプログラムカウンタ５１ａ（５１ｂ）の識別子が現命令識別タグレジスタ４２に送られる。または、それぞれのテンポラリレジスタ４６ａ、４６ｂの値が比較器４７で比較され、小さい方のプログラムカウンタ識別子が現命令識別タグレジスタ４２に送られる。
【００４９】
図８は、それぞれの方法の説明図であり、（ａ）が、０になった方のプログラムカウンタ５１ａ（５１ｂ）の識別子を選択する場合、（ｂ）が、テンポラリレジスタ４６ａ、４６ｂの値を比較器４７で比較し、小さい方のプログラムカウンタ識別子を選択する場合を示している。
【００５０】
図８の例は、更新タイミングレジスタ４３ａの値が５、更新タイミングレジスタ４３ｂの値が３である場合を示し、図面右側の数字がテンポラリレジスタ４６ａ、４６ｂの値を示している。尚、テンポラリレジスタ４６ａ、４６ｂの値は矢印方向に変化していくものとする。また、（ａ）の場合、０になった次のサイクルから、他方のテンポラリレジスタの値が０になるまでの間を、そのテンポラリレジスタに対応したプログラムカウンタの識別子を選択するものとする。尚、双方が０になった場合は、公知のバスアービトレーションの手法と同様に、それまで選択していた以外の識別子を選択するものとする。これにより、（ａ）の場合、プログラムカウンタ５１ａ、５１ｂの更新タイミングが、図中の太線で示すサイクルの割合で行われることとなる。
【００５１】
また、（ｂ）で示す例においても、テンポラリレジスタ４６ａ、４６ｂの値が等しくなった場合は、それまで選択していた以外の識別子を選択するものとする。従って、（ｂ）の場合もプログラムカウンタ５１ａ、５１ｂの更新タイミングは、図中、太線で示す割合となる。
【００５２】
〈効果〉
以上のように、具体例３では、複数の命令流に対して、実行の優先度を自由に与えることが可能となる。
【００５３】
《具体例４》
〈構成〉
図９は、具体例４の構成図である。
この具体例では、命令キャッシュ２において、キャッシュミスした命令流は選択しないようにしたものである。
【００５４】
図９において、プログラムカウンタ制御部４ｃは、カウンタ４１、現命令識別タグレジスタ４２と共に、ミスヒット中識別子レジスタ４８を備えている。このミスヒット中識別子レジスタ４８は、現在ミスヒット中とそうでない識別子を保持するレジスタであり、信号１０２を通じてキャッシュコントローラ２ａから送られてきたミスヒット識別子、完了識別子の信号により更新する。即ち、現命令識別タグレジスタ４２で保持する現命令識別子は、信号１０３を通してキャッシュコントローラ２ａに送られる。キャッシュコントローラ２ａではアクセスが完了した識別子を信号１０２を通してプログラムカウンタ制御部４ｃに返す。これにより、ミスヒット中識別子レジスタ４８は、ミスヒット識別子、完了識別子を保持するよう構成されている。
【００５５】
〈動作〉
カウンタ４１は、クロック１０１に基づき、毎サイクル（あるいは毎アクセス）ごとにカウントアップを行うが、ミスヒット中識別子レジスタ４８を参照し、その命令流がミスヒット中であった場合は、これに対応したプログラムカウンタ５１ａ（５１ｂ）の識別子を送らず、次のプログラムカウンタ５１ｂ（５１ａ）の識別子をＰＣユニット５に送る。即ち、現命令識別タグレジスタ４２が保持する現命令識別子がキャッシュコントローラ２ａに送られ、これがキャッシュミスであった場合は、その命令がミスヒット中識別子レジスタ４８に保持される。これによりカウンタ４１は、カウントアップを行い、次のプログラムカウンタ５１ｂ（５１ａ）の識別子を選択する。従って、ミスヒット中の命令は選択されず、次の命令の実行に進むよう処理される。
【００５６】
〈効果〉
以上のように、キャッシュミスヒット中の命令流は選択されず、キャッシュミスヒット処理時間中は、他の命令流（他のプログラムカウンタ）の処理を進めることができ、効率的な命令の実行が可能となる。
【図面の簡単な説明】
【図１】本発明のプロセッサの命令実行制御方法およびシステムの具体例１を示す要部の構成図である。
【図２】本発明の全体構成としてのパイプライン計算機の構成図である。
【図３】リネーミングレジスタ６の構成説明図である。
【図４】複数の命令流の説明図である。
【図５】リネーミングレジスタの内容説明図である。
【図６】本発明のプロセッサの命令実行制御方法およびシステムにおける具体例２の構成図である。
【図７】本発明のプロセッサの命令実行制御方法およびシステムにおける具体例３の構成図である。
【図８】本発明のプロセッサの命令実行制御方法およびシステムにおける具体例３の更新タイミングの説明図である。
【図９】本発明のプロセッサの命令実行制御方法およびシステムにおける具体例４の構成図である。
【符号の説明】
２  命令キャッシュ
２ａ  キャッシュコントローラ
４、４ａ、４ｂ、４ｃ  プログラムカウンタ制御部
５  ＰＣユニット
４１  カウンタ
４２  現命令識別タグレジスタ
４３、４３ａ、４３ｂ  更新タイミングレジスタ
４４  減算器
４５  レジスタ
４６ａ、４６ｂ  テンポラリレジスタ
４７  比較器
４８  ミスヒット中識別子レジスタ
５１ａ、５１ｂ  プログラムカウンタ
【図１】
0003625586.tif 000002
【図２】
0003625586.tif 000003
【図３】
0003625586.tif 000004
【図４】
0003625586.tif 000005
【図５】
0003625586.tif 000006
【図６】
0003625586.tif 000007
【図７】
0003625586.tif 000008
【図８】
0003625586.tif 000009
【図９】
0003625586.tif 000010