(57)【要約】【目的】高性能の計算機システムを実現する。【構成】各々のエントリにデータが書き込まれるようになっているデータ・ファイル６と、各々のエントリにデータ・ファイルのエントリのアドレスが書き込まれるようになっている前進マッピング・ファイル３ａ及び完了マッピング・ファイル３ｃと、各々のエントリに個々のオペレーションの内容が書き込まれるようになっているオペレーション・キュー５と、クロック・サイクル毎のマッピング・ファイルの状態変更の内容が書き込めるようになっている状態変更キューとを具備し、１クロック・サイクルで、複数のオペレーションの内容のオペレーション・キューへの書き込み、前進マッピング・ファイルの内容変更を行い、その変更の内容を状態変更キューに書き込む一方、オペレーション・キューに保持されるオペレーションがｏｕｔ−ｏｆ−ｏｒｄｅｒで実行される構成となっている。【選択図】　　　　図１
2004094533.tif 000002
【特許請求の範囲】
【請求項１】
各々のエントリにデータが書き込まれるようになっているデータ・ファイルと、
各々のエントリに該データ・ファイルのエントリのアドレスが書き込まれるようになっている前進マッピング・ファイル及び完了マッピング・ファイルと、
実行待ちのオペレーションの内容を保持するバッファであるオペレーション・ウインドウと、
クロック・サイクル毎の該前進マッピング・ファイルの状態変更の内容が書き込めるようになっているＦＩＦＯキューの構成となっている状態変更キューと、
オペレーションを実行する機能ユニット群を具備し、
該前進マッピング・ファイル及び該完了マッピング・ファイルがスタックの内容を該スタックの先頭からエントリ・アドレス順に保持するようになっており、
該前進マッピング・ファイルの内容変更、その変更の内容の該状態変更キューへの書き込み、及び該前進マッピング・ファイルの該内容変更と組み合わさったオペレーション群の内容の該オペレーション・ウインドウへの書き込みを各々１クロック・サイクルで行うようになっており、
該オペレーション・ウインドウに保持されている未実行のオペレーションは各々ｏｕｔ−ｏｆ−ｏｒｄｅｒで該機能ユニット群のいずれかによって実行されるようになっており、
該状態変更キューの先頭部の内容で示される該前進マッピング・ファイルの内容変更と組み合わさったオペレーション群に含まれるオペレーションが全て正常終了した後に、該状態変更キューの該先頭部の該内容に基づき該完了マッピング・ファイルの内容変更を行い、該状態変更キューから該先頭部を除外するようになっている計算機システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、高度の命令レベル並列性を実現することにより高性能化の可能な新規な構成の計算機方式に関するものである。
【０００２】
【従来の技術】
従来、汎用の計算機として実用化されてきた計算機方式は、スタック・マシンとレジスタ・ベースのマシンの２つに大きく分けることができる。スタック・マシンは、プログラムのコード・サイズが小さくてすみ、高速な割り込み処理やコンテキスト・スイッチングに優れているが、高速化が困難であった。他方、レジスタ・ベースのマシンは比較的高速化が容易であるが、その他の面ではスタック・マシンに劣る点が多い。
【０００３】
【発明が解決しようとする課題】
スタック・マシンとレジスタ・ベースのマシンは、互いにプログラムの互換性が無く、また上述のように、いずれかが絶対的に優れているというものではない。
【０００４】
本発明の目的は、スタック・マシンの命令形式ともレジスタ・ベースのマシンの命令形式とも親和性があり、かつ、高性能化の可能な計算機方式を実現することにある。
【０００５】
【課題を解決するための手段】
本発明による計算機方式は、基本的にｏｕｔ−ｏｆ−ｏｒｄｅｒ実行の可能なスーパースカラ・アーキテクチャと同様なものであるが、ビット長の長い命令フォーマットを採用し、その中にオペレーション群の内容及び仮想のオペランド・スタックあるいは論理レジスタ群の状態変更の内容を記述するようになっている。
【０００６】
本発明による計算機システムは、各々のエントリにデータが書き込まれるようになっているデータ・ファイルと、各々のエントリにデータ・ファイルのエントリのアドレスが書き込まれるようになっている前進マッピング・ファイル及び完了マッピング・ファイルと、実行待ちのオペレーションの内容を保持するバッファであるオペレーション・ウインドウと、個々の命令によるマッピング・ファイルの状態変更の内容が書き込まれるようになっている状態変更キューと、各種オペレーションを実行する機能ユニット群と、割り付けられていないデータ・ファイルのエントリのアドレスを保持するフリー・リストとを具備する。
【０００７】
本発明の計算機システムは、１クロック・サイクル当り１命令を発行して、オペレーション群の内容をオペレーション・ウインドウに書き込み、前進マッピング・ファイルの内容変更を行い、その変更の内容を状態変更キューに書き込むようになっている。結果データを生ずるオペレーションの場合、結果データを保持すべくデータ・ファイルのエントリが新たに割り付けられ、これがデスティネーション・レジスタとなる。また、各オペレーションにおいて、ソース・レジスタとなるのは、アドレスが前進マッピング・ファイルをアクセスして得られるデータ・ファイルのエントリ、あるいは、同じ命令に含まれるオペレーションにおいてデスティネーション・レジスタとして割り付けられるデータ・ファイルのエントリである。
【０００８】
オペレーション・ウインドウに保持されている未実行のオペレーションは各々ｏｕｔ−ｏｆ−ｏｒｄｅｒでいずれかの機能ユニットによって実行されるようになっている。
【０００９】
状態変更キューの先頭部の内容と同じ命令の発行に基づくオペレーションが全て正常終了した後に、状態変更キューの先頭部の内容に基づき、その命令が発行された際の前進マッピング・ファイルの内容変更を再現すべく、完了マッピング・ファイルの内容変更を行い、状態変更キューから上記先頭部を除外するようになっている。
【００１０】
本発明による計算機システムは、スタック・モードとレジスタ・モードの２つのモードで動作することができる。スタック・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、スタック・モードとなる。他方、ＲＩＳＣあるいはＣＩＳＣのレジスタ・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、レジスタ・モードとなる。スタック・マシンあるいはレジスタ・マシンの複数の命令を、本発明の計算機システムにおける１つの命令に簡単に変換できるので、広範なプログラムを高速処理できる。
【００１１】
スタック・モードにおいては、マッピング・ファイルは、一種のスタックの内容を保持すべく用いられる。従来のスタックマシンにおいて、オペランド・スタックが　．．．，　ｗｏｒｄ３，　ｗｏｒｄ２，　ｗｏｒｄ１（右端がスタックトップ）となっている状態は、本発明による計算機システムにおいて、マッピング・ファイルに保持される内容がエントリ・アドレス順にａ，　ｂ，　ｃ，　．．．　であれば、データ・ファイルにおいてエントリ・アドレスがａ，　ｂ，　ｃ，　．．．　である各エントリに、それぞれ　ｗｏｒｄ１，ｗｏｒｄ２，　ｗｏｒｄ３，　．．．　が保持されている状態に対応する。
【００１２】
レジスタ・モードにおいては、マッピング・ファイルは、レジスタ・ベースのスーパースカラ・プロセッサにおけるレジスタ・マッピング・テーブルと同等なものとして用いられる。
【００１３】
【実施例】
以下に、本発明にかかる好ましい計算機システムについて説明する。
【００１４】
（１）基本構成
まず、本実施例の計算機システムの基本的な構成について説明する。
【００１５】
図１は計算機システムのブロック図であって、１０は命令キャッシュ、１１はデータ・キャッシュ、１２はデータ・バッファ、２０は命令フェッチ・ユニット、２１は命令発行ユニット、３ａは前進マッピング・ファイル、３ｃは完了マッピング・ファイル、４は状態変更キュー、５はオペレーション・キュー、６はデータ・ファイル、７はフリー・リスト、８０及び８１は各々演算ユニット０及び１、８２は分岐ユニット、８３はロード／ストア・ユニットを表している。
【００１６】
本発明の計算機システムは、実行待ちのオペレーションの内容を保持するバッファであるオペレーション・ウインドウを具備する必要がある。オペレーション・ウインドウを実現するには、基本的に集中型と分散型の２通りの方法があるが、本実施例の計算機システムは集中型のオペレーション・キューを備えるものとしている。
【００１７】
本発明による計算機システムは、スタック・モードとレジスタ・モードの２つのモードで動作することができる。スタック・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、スタック・モードとなる。他方、ＲＩＳＣあるいはＣＩＳＣのレジスタ・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、レジスタ・モードとなる。
【００１８】
本発明の計算機システムの具備するマッピング・ファイルは、各々のエントリにデータ・ファイルのエントリのアドレスが書き込まれるような構成となっており、レジスタ・モードにおいては、レジスタ・ベースのｏｕｔ−ｏｆ−ｏｒｄｅｒ実行の可能なスーパースカラ・プロセッサにおけるレジスタ・マッピング・テーブルと同様に機能する。本発明において、マッピング・ファイルは、スタック・モードにおいても同等な機能を有するものである。
【００１９】
（２）命令形式
図２は本発明実施例の計算機システムの命令フォーマットを示す概念図であって、スタック・モードにおいてもレジスタ・モードにおいても、個々の命令のフォーマットは、基本的に、フォーマット情報フィールド１０１、オペレーション・フィールド１０２及び状態変更フィールド１０３からなる。
【００２０】
フォーマット情報フィールド（ＦＩフィールド）では、当該命令の長さや、その命令が含むオペレーションの数などに関する情報が示される。
【００２１】
オペレーション・フィールド（Ｏｐフィールド）には、算術論理演算や分岐、ロード／ストアなどからなるオペレーション群の内容が示される。本実施例においては、個々のオペレーションは、ＲＩＳＣプロセッサにおける命令と同様な形式で記述される。本実施例においては、１つの命令は最大４つまでのオペレーションを含むものとする（分岐オペレーションが含まれるような場合には、あえて１命令に４つのオペレーションを含める必要はない）。
【００２２】
状態変更フィールド（ＳＭフィールド）では、マッピング・ファイルの内容の変更について示される。即ち、スタック・モードにおいては仮想のオペランド・スタック、レジスタ・モードにおいては仮想の論理レジスタ群の状態変更の内容が示される。後述するように、状態変更フィールド内部のフォーマットは、スタック・モードとレジスタ・モードで異なる。
【００２３】
結果データを生ずるオペレーションの場合、結果データを保持すべくデータ・ファイルのエントリが割り付けられるが、そのエントリの論理的な位置づけは、ＳＭフィールドの内容によって示されることになる。
【００２４】
本実施例の計算機システムは、１サイクル当たり上記の形式の１命令を発行できるものである。
【００２５】
（２−１）スタック・モードにおける命令形式
以下に、スタック・モードにおける命令形式について説明する。
【００２６】
本実施例の計算機システムにおけるデータ・ファイルの各エントリが、仮想のスタック・マシンのオペランド・スタックの１エントリの保持するデータを保持できるものとする。本実施例においては、マッピング・ファイルのアドレス０，　１，　２，　．．．　のエントリの内容をそれぞれ　ｓ０，　ｓ１，　ｓ２，　．．．　とおくとき、エントリ・アドレスが　ｓ０，　ｓ１，　ｓ２，　．．．　であるデータ・ファイルの各エントリにそれぞれ保持されるべきデータを順に並べることによって、仮想のスタック・マシンのオペランド・スタックの内容（ｓ０がスタックトップに対応）が構成されるべきものとする。
【００２７】
例えば、Ａ＊Ｘ＋Ｂ／Ｘを計算し、その結果を変数Ｙとしてメモリにストアするプログラムは、スタック・マシンにおいては、次のように書ける。
ＬＯＡＤ　＜４＞　；ローカル変数４のデータをオペランド・スタックにプッシュする
ＤＵＰ　　　　　　；スタックトップのデータをコピーし、そのコピーをスタックに積む
ＬＯＡＤ　＜１＞　；ローカル変数１のデータをオペランド・スタックにプッシュする
ＭＵＬ　　　　　　；２変数分のデータをポップして乗算を行い、結果をプッシュする
ＳＷＡＰ　　　　　；オペランド・スタックにおいて最上位とその次のデータを入れ替える
ＬＯＡＤ　＜２＞　；ローカル変数２のデータをオペランド・スタックにプッシュする
ＳＷＡＰ　　　　　；オペランド・スタックにおいて最上位とその次のデータを入れ替える
ＤＩＶ　　　　　　；２変数分のデータをポップして除算を行い、結果をプッシュする
ＡＤＤ　　　　　　；２変数分のデータをポップして加算を行い、結果をプッシュする
ＳＴＯＲＥ　＜５＞；スタックトップのデータをローカル変数５にストアする
【００２８】
ここで、変数Ａ，　Ｂ，　Ｘ，　Ｙの格納域を、それぞれローカル変数１，　２，　４，　５としている。
【００２９】
上記プログラムがどのように本実施例の計算機システムにおけるスタック・モードの命令に変換されるかを説明する。
【００３０】
上記プログラムを２つの命令群に分割して、個々の命令について、オペレーションの内容とマッピング・ファイルに加えられる変更の内容を分けて書くと、次のようになる。
2004094533.tif 000003
【００３１】
ここで、結果データを保持すべく新たに割り付けられるデータ・ファイルのエントリのアドレスを、各々の命令群において順にｆ１，　ｆ２，　．．．　とおいている。本実施例においては、ｆ１，　ｆ２，　．．．　の各々は、各サイクルにおいてフリー・リストから取り出されるものに対応する。
【００３２】
また、マッピング・ファイルに加えられる変更に関しては、スタックが何エントリ分成長するかという量と、スタックトップ近傍に加えられる変更内容（右端がスタックトップに対応）を示している。
【００３３】
命令１ａの意味は、ローカル変数＜４＞のデータをロードしｆ１に対応するデータ・ファイルのエントリに書き込み、その要素がマッピング・ファイルに保持されるスタックを１エントリ分成長させ、新たにスタックトップとなるエントリの内容をｆ１に対応するデータ・ファイルのエントリのアドレスとする、というものである。命令１ｂの意味は、ｆ１に対応するデータ・ファイルのエントリのデータに０を加え、その結果データをｆ２に対応するデータ・ファイルのエントリに書き込み、その要素がマッピング・ファイルに保持されるスタックを１エントリ分成長させ、新たにスタックトップとなるエントリの内容をｆ２に対応するデータ・ファイルのエントリのアドレスとする、というものであるが、マッピング・ファイルに加えられる変更については、命令１ａによる変更内容も含めて記述している。その他の命令も同様である。
【００３４】
２つの命令群の各々について、その内容をまとめて、オペレーションとマッピング・ファイルの内容の変更に分けて記述すれば次のようになる。
2004094533.tif 000004
【００３５】
これが、上記プログラムを本発明実施例の計算機システムのスタック・モードの命令形式に変換した場合の、２命令の各々のＯｐフィールドとＳＭフィールドの内容である。このように、スタック・モードの命令形式では、ＳＭフィールドにおいて、スタックの成長量と共に、更新後のスタックトップ近傍の内容を表す符号の系列が示されるようになっている。
【００３６】
（２−２）レジスタ・モードにおける命令形式
次に、レジスタ・モードにおける命令形式について説明する。
【００３７】
本実施例の計算機システムにおけるデータ・ファイルの各エントリが、仮想のレジスタ・マシンの１レジスタの保持するデータを保持できるものとする。本実施例においては、マッピング・ファイルのアドレス０，　１，　２，　．．．　のエントリの内容をそれぞれｒ０，　ｒ１，　ｒ２，　．．．　とおくとき、エントリ・アドレスがｒ０，　ｒ１，　ｒ２，　．．．　であるデータ・ファイルの各エントリに、それぞれ仮想のレジスタ・マシンのレジスタＲ０，　Ｒ１，　Ｒ２，　．．．　のデータが保持されるべきものとする。
【００３８】
例えば、メモリから変数Ａ，　Ｂ，　Ｘのデータをレジスタ群にロードして、（Ａ＊Ｘ＋Ｂ／Ｘ）＊２を計算し、その結果を変数Ｙとしてメモリにストアするプログラムは、レジスタ・マシンにおいては、次のように書ける。
2004094533.tif 000005
【００３９】
ここで、変数Ａ，　Ｂ，　Ｘ，　Ｙのメモリにおける格納域のアドレスを、Ｒ０の中身にそれぞれ１００，　２００，　４００，　５００を加えたものとしている。
【００４０】
上記プログラムがどのように本実施例の計算機システムにおけるレジスタ・モードの命令に変換されるかを説明する。
【００４１】
上記プログラムを４命令ずつから成るグループに分割して、個々の命令について、オペレーションの内容とマッピング・ファイルに加えられる変更の内容を分けて書くと、次のようになる。
2004094533.tif 000006
【００４２】
ここで、スタック・モードの場合と同様に、結果データを保持すべく新たに割り付けられるデータ・ファイルのエントリのアドレスを、各々の命令群において順にｆ１，　ｆ２，　．．．　とおいている。
【００４３】
命令１ａの意味は、（ｒ０に対応するデータ・ファイルのエントリのデータ＋１００）番地のデータをロードしｆ１に対応するデータ・ファイルのエントリに書き込み、マッピング・ファイルのアドレス１のエントリの内容をｆ１に対応するデータ・ファイルのエントリのアドレスに置き換える、というものである。命令１ｃの意味は、ｆ１及びｆ２に各々対応するデータ・ファイルのエントリのデータを掛け合わせ、その結果データをｆ３に対応するデータ・ファイルのエントリに書き込み、マッピング・ファイルのアドレス５のエントリの内容をｆ３に対応するデータ・ファイルのエントリのアドレスに置き換える、というものである。その他の命令も同様である。
【００４４】
２つの命令群の各々について、４命令の内容をまとめて、オペレーションとマッピング・ファイルの内容の変更に分けて記述すれば次のようになる。
2004094533.tif 000007
【００４５】
これが、上記プログラムを本発明実施例の計算機システムのレジスタ・モードの命令形式に変換した場合の、２命令の各々のＯｐフィールドとＳＭフィールドの内容である。この２番目の命令に変換する際に、マッピング・ファイルのアドレス５のエントリの内容の置き換えが２つあるが、ＳＭフィールドの内容としては最後のものだけが残されている。このように、レジスタ・モードの命令形式では、ＳＭフィールドにおいて、内容を変更すべきマッピング・ファイルのエントリのアドレスと個々の変更内容を示す符号の組が列挙されるようになっている。
【００４６】
（３）スタック・モード
（３−１）スタック・モードにおける動作に必要な機能と構成
ここでは、本実施例の計算機システムの各構成要素ごとに、スタック・モードの動作において利用される機能と構成について説明する。これらは、一部を除き、レジスタ・モードにおいても必要とされる機能と構成である。
【００４７】
（Ａ）命令フェッチ・ユニット
命令フェッチ・ユニットは、図示してないプログラムカウンタを具備しており、命令キャッシュから命令をフェッチし、命令発行ユニットに渡すようになっている。分岐の予測や分岐の実行も担う。
【００４８】
（Ｂ）命令発行ユニット
命令発行ユニットは、命令フェッチ・ユニットから渡された命令の発行のために、その内容に基づき前進マッピング・ファイルやデータ・ファイルの操作、オペレーション・キューと状態変更キューへの書き込みを行うための各種信号を発生するようになっている。
【００４９】
（Ｃ）マッピング・ファイル
マッピング・ファイルは、各々のエントリにデータ・ファイルのエントリのアドレスが書き込まれるような構成となっている。
【００５０】
本発明実施例の計算機システムのスタック・モードにおいては、マッピング・ファイル及びデータ・ファイルによって、スタック・マシンに具備されるべきスタックの最上位の部分が仮想的に構成されるようになっている。即ち、スタック・モードにおいては、マッピング・ファイルは、一種のスタックの内容を保持すべく用いられる。従来のスタックマシンにおいて、オペランド・スタックが　．．．，　ｗｏｒｄ３，　ｗｏｒｄ２，　ｗｏｒｄ１（右端がスタックトップ）となっている状態は、本発明による計算機システムにおいて、マッピング・ファイルのアドレス０，　１，　２，　．．．　のエントリの内容がそれぞれａ，　ｂ，　ｃ，　．．．　であれば、データ・ファイルにおいてエントリ・アドレスがａ，　ｂ，　ｃ，　．．．　である各エントリに、それぞれｗｏｒｄ１，　ｗｏｒｄ２，　ｗｏｒｄ３，　．．．　が保持されている状態に対応する。オペランド・スタックの規模が大きくなると、残りの部分はデータ・バッファさらにはデータ・キャッシュに格納されるようになっている。
【００５１】
本発明の計算機システムは、前進マッピング・ファイル（ＡＭＦ；Ａｄｖａｎｃｅｄ　Ｍａｐｐｉｎｇ　Ｆｉｌｅ）と完了マッピング・ファイル（ＣＭＦ；Ｃｏｍｐｌｅｔｅｄ　Ｍａｐｐｉｎｇ　Ｆｉｌｅ）の２つの同形のマッピング・ファイルを具備する。
【００５２】
本発明の計算機システムにおいては、命令が発行されるごとに、その命令の内容に応じてＡＭＦの内容を変更する。すなわち、ＡＭＦは発行済みの全ての命令の内容を反映している。
【００５３】
他方、ＣＭＦは、プログラム上の順番で完了済みの全ての命令の内容を反映するものである。本発明の計算機システムは発行済みの命令に含まれるオペレーションのｏｕｔ−ｏｆ−ｏｒｄｅｒ実行を可能とするものであるが、ＣＭＦは、正確な例外処理を保証するため、ｉｎ−ｏｒｄｅｒで完了済の全ての命令に基づく状態を構成するために存在するものである。
【００５４】
各マッピング・ファイルごとにスタックの要素を保持する最下位のエントリを示すボトム・ポインタと呼ぶレジスタが存在する。初期状態あるいはマッピング・ファイルが空の場合には、ボトム・ポインタの値は−１であるものとする。
【００５５】
図３は、本実施例の計算機システムにおける、２組のマッピング・ファイルとボトム・ポインタの関係を示す説明図である。２つのマッピング・ファイルＡＭＦ３ａ及びＣＭＦ３ｃは同数のエントリを有し、各マッピング・ファイルで各々のエントリに上から順に０，　１，　２，　．．．　とアドレスが付けられている。斜線が施されていないＡＭＦ／ＣＭＦのエントリは、スタックの構成要素としてデータ・ファイルのエントリのアドレスを保持しているものとする。図３に示すように、ＡＭＦ及びＣＭＦの各々に対して設けられたボトム・ポインタを、それぞれＢａ及びＢｃと名付けている。
【００５６】
（Ｄ）データ・ファイル（ＤＦ；Ｄａｔａ　Ｆｉｌｅ）
データ・ファイル（ＤＦ）は、各々のエントリに１語分のデータが書き込まれるような構成となっている。
【００５７】
本実施例においては、ＤＦのエントリにはｐ００，　ｐ０１，　ｐ０２，　．．．　のようにアドレスが付けられているものとする。
【００５８】
図４は、本実施例の計算機システムにおける、ＤＦ６の各々のエントリ６（ｉ）の構成を示す説明図である。ここで、ｉはエントリのアドレスである。ＤＦ６の各々のエントリ６（ｉ）はデータ・フィールド６１（ｉ）、及び書込フラグ（ＷＦ；Ｗｒｉｔｅ　Ｆｌａｇ）フィールド６２（ｉ）から成っている。
【００５９】
実際のＤＦのハードウェア上の構成は、上述の各フィールド別に設けられたレジスタ・ファイルの集合体である。
【００６０】
ＤＦの各々のエントリのデータ・フィールドは、１語分のデータが書き込まれるようになっている。
【００６１】
ＤＦの各々のエントリにおいて、ＷＦフィールドは、データ・フィールドにデータの書き込みが完了していれば１、完了していなければ０が書き込まれているようになっている。
【００６２】
（Ｅ）オペレーション・キュー（ＯＱ；Ｏｐｅｒａｔｉｏｎ　Ｑｕｅｕｅ）
オペレーション・キュー（ＯＱ）は、未完了の発行済命令に含まれるオペレーションの内容を保持するバッファであり、循環型のＦＩＦＯキューの構成となっている。
【００６３】
図５は、本実施例の計算機システムにおける、ＯＱ５の各々のエントリ５（ｉ）の構成を示す説明図である。ここで、ｉはエントリのアドレスである。ＯＱ５の各々のエントリ５（ｉ）はオペレーション・フィールド５０（ｉ）、デスティネーション・フィールド５１（ｉ）、オペランド・フィールド５２（ｉ）、第１ソース・フィールド５３（ｉ）、第１ソース書込フラグ（ＳＷＦ１）フィールド５４（ｉ）、第２ソース・フィールド５５（ｉ）、第２ソース書込フラグ（ＳＷＦ２）フィールド５６（ｉ）、リポート・フィールド５７（ｉ）、及びディスパッチ・フラグ・フィールド５８（ｉ）から成っている。
【００６４】
ＯＱの各々のエントリのオペレーション・フィールドはオペレーション・コードが書き込まれるようになっている。
【００６５】
ＯＱの各々のエントリのデスティネーション・フィールドは、結果データを生ずるオペレーションの場合に、その結果データを保持すべく割り付けられるＤＦのエントリのアドレスが書き込まれるようになっている。
【００６６】
ＯＱの各々のエントリのオペランド・フィールドは、命令のＯｐフィールド中にオペランド値が示されるようなオペレーションの場合に、そのオペランド値が書き込まれるようになっている。
【００６７】
ＯＱの各々のエントリの第１、第２ソース・フィールドの各々は、オペレーションのソース・データを保持すべく割り付けられているＤＦのエントリのアドレスが書き込まれるようになっている。
【００６８】
ＯＱの各々のエントリにおいて、第１、第２の各ＳＷＦフィールドは各々第１、第２ソース・フィールドに対応して設けられている。ＳＷＦ１／２フィールドは第１／２ソース・フィールドに示されるＤＦのエントリにデータの書き込みが完了していれば１、完了していなければ０が書き込まれているようになっている。
【００６９】
ＯＱの各々のエントリのリポート・フィールドは、そのオペレーションを含む命令に対応する状態変更キューのエントリのアドレスと識別番号（Ａ，　Ｂ，　Ｃ，　Ｄ　のうちのいずれか）が書き込まれるようになっている。
【００７０】
ＯＱの各々のエントリにおいて、ディスパッチ・フラグ・フィールドは、オペレーションがまだディスパッチされていなければ０、ディスパッチされていれば１が書き込まれているようになっている。
【００７１】
（Ｆ）状態変更キュー（ＳＭＱ；Ｓｔａｔｅ　Ｍｏｄｉｆｉｃａｔｉｏｎ　Ｑｕｅｕｅ）
状態変更キュー（ＳＭＱ）は、未完了の発行済命令の各々によるマッピング・ファイルの状態変更の内容を保持するバッファであり、循環型のＦＩＦＯキューの構成となっている。本実施例においては、ＳＭＱの各々のエントリは１つの命令に対応するものとなっている。
【００７２】
図６は、本実施例の計算機システムにおける、ＳＭＱ４の各々のエントリ４（ｉ）の構成を示す説明図である。ここで、ｉはエントリのアドレスである。ＳＭＱ４の各々のエントリ４（ｉ）は状態変更（ＳＭ）フィールド４０（ｉ）、オペレーション・ステータスＡ（ＯＳ＿Ａ）フィールド４１（ｉ）、オペレーション・ステータスＢ（ＯＳ＿Ｂ）フィールド４２（ｉ）、オペレーション・ステータスＣ（ＯＳ＿Ｃ）フィールド４３（ｉ）、及びオペレーション・ステータスＤ（ＯＳ＿Ｄ）フィールド４４（ｉ）から成っている。
【００７３】
実際のＳＭＱのハードウェア上の構成は、上述の各フィールド別に設けられたレジスタ・ファイルの集合体である。
【００７４】
ＳＭＱの各々のエントリのＳＭフィールドは、対応する命令のＳＭフィールドに示されたマッピング・ファイルの変更内容が書き込まれるようになっている。
【００７５】
ＳＭＱの各々のエントリにおいて、ＯＳ＿Ａ、ＯＳ＿Ｂ、ＯＳ＿Ｃ、ＯＳ＿Ｄの各フィールドは、各々対応するオペレーションの実行状態に関する情報が書き込まれているようになっている。本実施例においては、簡単のため、対応するオペレーションが存在しないか正常終了していれば１、その他の場合には０が書き込まれているものとする。
【００７６】
（Ｇ）データ・バッファ
データ・バッファは、各々のエントリに１語のデータが書き込まれるようになっている循環型のバッファである。
【００７７】
（Ｈ）機能ユニット
本実施例の計算機システムは、図１に示すように、演算ユニット０及び１、分岐ユニット及びロード／ストア・ユニット（ＬＳＵ；Ｌｏａｄ　Ｓｔｏｒｅ　Ｕｎｉｔ）の４つの機能ユニットを具備するものとしている。これらは、各々パイプライン処理が可能で、互いに独立に並行して動作するものである。
【００７８】
スタック・モードにおいては、ＬＳＵはデータ・バッファ及びデータ・キャッシュにアクセスすることができるようになっている。
【００７９】
本発明実施例の計算機システムのスタック・モードにおいては、マッピング・ファイル及びデータ・ファイル（ＤＦ）によって、スタック・マシンに具備されるべきスタックの最上位の部分が仮想的に構成されるが、その下の部分がデータ・バッファ、さらにその下の部分がデータ・キャッシュに格納されるようになっている。ＬＳＵはデータ・バッファに高速にアクセスできるようになっており、アクセスすべき変数データがデータ・バッファに保持されている割合が大きいほど、より効率的な計算が可能となる。また、データ・バッファに適当な語数のデータを溜めておくようにすることによって、後述するＤＦ−データ・バッファ−データ・キャッシュの間のＳｐｉｌｌ／Ｆｉｌｌの動作を効率的に行うことができる。
【００８０】
ＬＳＵは、最初のローカル変数へのポインタを保持する図示してないレジスタ（ｖａｒｓレジスタ）を具備する。本実施例の計算機システムにおいては、ローカル変数の格納域はデータ・バッファあるいはデータ・キャッシュにあるが、ｖａｒｓレジスタには、データ・キャッシュにおける相当するアドレス値が書き込まれているようになっている。つまり、全てあるいは一部のローカル変数のデータが実際にはデータ・バッファに保持されていても、各々のローカル変数に、全てのローカル変数をデータ・キャッシュにＳｐｉｌｌしたと仮定した場合のデータ・キャッシュにおけるアドレス値を対応させることができる。ロード／ストア・オペレーションの処理において、ＬＳＵはｖａｒｓレジスタの値を用いてアドレス計算を行い、対象となるローカル変数の格納域がデータ・バッファかデータ・キャッシュかを判定し、その格納域にアクセスする。
【００８１】
ＬＳＵは、プログラム中に示されるロード／ストア・オペレーションを実行すると共に、オーバーフロー／アンダーフローの回避のため、ＡＭＦ／ＣＭＦ及びＤＦによって構成される仮想の部分スタックの最下位にあたるデータをデータ・バッファとの間で自動的にＳｐｉｌｌ／Ｆｉｌｌするようになっている。
【００８２】
１語分のデータをＤＦからデータ・バッファにＳｐｉｌｌするには、（ａ）ＡＭＦとＣＭＦで各々のボトム・ポインタ（Ｂａ、Ｂｃ）で示されるエントリの内容が一致している、（ｂ）その一致する内容と同じＤＦのエントリのアドレスがいずれかのソース・フィールドに書き込まれたエントリがＯＱに保持されるキュー内に存在しない、という２つの条件が満たされていなくてはならない（そうでない場合は満たされるまで待つ）。条件（ｂ）に関しては、命令に含まれるオペレーションのソース・レジスタとして用いられるＤＦのエントリのアドレスがマッピング・ファイル中に保持された状態で残るケースに一定の制約を設けることによって、常に満たされるようにすることもできる。命令体系にそのような制約を設けない場合には、計算機システムは、ＯＱにおいて各ソース・フィールドで上記一致する内容であるＤＦのエントリのアドレスを照合し、上記条件（ｂ）に関するチェックを行うような機能を備えた構成としなければならない。上記２つの条件が満たされる場合、ＡＭＦ／ＣＭＦのボトム・ポインタＢａ／Ｂｃで示されるエントリの内容で示されるＤＦのエントリに書き込まれている１語分のデータをデータ・バッファにＳｐｉｌｌすることができる。その際、Ｂａ及びＢｃの値から１を引き、上記ＤＦのエントリのアドレスをＦＬに登録する。
【００８３】
逆に、データ・バッファからＤＦに１語分のデータをＦｉｌｌするには、データ・バッファからＦｉｌｌすべき１語分のデータを取り出し、それにフリーなＤＦの１エントリを割り付け、そのデータ・フィールドに書き込む。ＷＣＦフィールドは１とする。さらに、ボトム・ポインタＢａ及びＢｃの値に１を加え、上記割り付けられるＤＦのエントリのアドレスを、ＡＭＦ及びＣＭＦの各々１を加えたボトム・ポインタ値で示されるエントリに各々書き込む。
【００８４】
データ・バッファとデータ・キャッシュの間でも、データ・バッファの空きに応じて適宜Ｓｐｉｌｌ／Ｆｉｌｌの動作が行われるようになっている。
【００８５】
以上では，命令の発行／完了に伴うＡＭＦ／ＣＭＦの操作がないものとして、ＤＦとデータ・バッファの間のＳｐｉｌｌ／Ｆｉｌｌの動作について説明したが、命令の発行／完了とＳｐｉｌｌ／Ｆｉｌｌの動作を合成し、同時に行えるような構成は容易に実現できる。
【００８６】
また、本発明の計算機システムは、ＤＦとデータ・バッファの間及びデータ・バッファとデータ・キャッシュの間で、一度に複数語のデータをＳｐｉｌｌ／Ｆｉｌｌできるような構成とすることも可能である
【００８７】
（Ｉ）フリー・リスト（ＦＬ；Ｆｒｅｅ　Ｌｉｓｔ）
フリー・リスト（ＦＬ）は、フリーな、即ち、割り付けられていないＤＦのエントリのアドレスを保持するもので、本実施例においては、図７に示すように、命令完了用登録バッファ（ＥＢＩＣ；Ｅｎｔｒｙ　Ｂｕｆｆｅｒ　ｆｏｒ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｃｏｍｐｌｅｔｉｏｎ）７１ａ、スタック・スピル用登録バッファ（ＥＢＳＳ；Ｅｎｔｒｙ　Ｂｕｆｆｅｒ　ｆｏｒ　Ｓｔａｃｋ　Ｓｐｉｌｌ）７１ｂ、デスティネーション用割付キュー（ＡＱＤ；Ａｌｌｏｃａｔｉｏｎ　Ｑｕｅｕｅ　ｆｏｒ　Ｄｅｓｔｉｎａｔｉｏｎｓ）７２ａ、及びスタック・フィル用割付キュー（ＡＱＳＦ；Ａｌｌｏｃａｔｉｏｎ　Ｑｕｅｕｅ　ｆｏｒ　Ｓｔａｃｋ　Ｆｉｌｌ）７２ｂを備える。これらは各々適当な数のＤＦのエントリのアドレスを保持でき、ＡＱＤとＡＱＳＦは循環型のＦＩＦＯキューの構成となっている。
【００８８】
初期状態においては、ＤＦの各々のエントリのアドレスはＡＱＤとＡＱＳＦのどちらかに保持されている。新たにＤＦのエントリを割り付ける必要がある場合にＦＬからフリーなＤＦのエントリのアドレスが取り出されるが、命令の発行に伴いオペレーションの結果データを保持すべく割り付けるためにはＡＱＤから、また、その要素がマッピング・ファイルに保持されるスタックのＦｉｌｌのためにはＡＱＳＦから取り出されるようになっている。逆に、割り付けが解除されるＤＦの各々のエントリについてはそのアドレスがＦＬに登録されるようになっているが、命令の完了に伴い割り付けが解除されるものはＥＢＩＣに、また、その要素がマッピング・ファイルに保持されるスタックのＳｐｉｌｌに伴い割り付けが解除されるものはＥＢＳＳに書き込まれるようになっている。ＥＢＩＣ／ＥＢＳＳに書き込まれた各々のＤＦのエントリのアドレスは、すぐに、ＡＱＤ及びＡＱＳＦの保持する内容量に応じて、そのいずれかに移されるようになっている。
【００８９】
（３−２）スタック・モードにおける動作
ついで、本発明実施例の計算機システムのスタック・モードにおける動作を説明する。
【００９０】
本実施例の計算機システムは、基本的に、命令を、▲１▼命令フェッチ、▲２▼命令発行、▲３▼オペレーション実行、▲４▼命令完了の４段階で処理する。以下に各段階ごとに動作内容を説明する。
【００９１】
▲１▼　命令フェッチ
この段階では、命令フェッチ・ユニットが命令キャッシュから命令を取り出すと共に、次にフェッチする命令のアドレスを決定する。次に命令をフェッチするのは通常次アドレス値からであるが、フェッチした命令が無条件分岐オペレーションを含むか、条件分岐オペレーションを含み分岐すると予測した場合、分岐予測が外れた場合、あるいは例外が発生した場合には、フェッチするアドレス値を変更する。
【００９２】
▲２▼　命令発行
この段階では、発行する命令のＯｐフィールドの内容に基づき命令に含まれるオペレーションの内容がオペレーション・キュー（ＯＱ）に書き込まれ、ＳＭフィールドの内容に基づき前進マッピング・ファイル（ＡＭＦ）及びそのボトム・ポインタＢａの内容が変更され、その変更の内容が状態変更キュー（ＳＭＱ）に書き込まれる。この際、命令中のｓ０，　ｓ１，　ｓ２，　．．．　の各々は、スタックの最上位，２番目，３番目，．．．　に対応するが、それぞれ変更前のＡＭＦのアドレス０，　１，　２，　．．．　のエントリの内容に、ｆ１，　ｆ２，　．．．　の各々はそれぞれフリー・リスト（ＦＬ）から順に取り出されるＤＦのエントリのアドレスに、置き換えられる。
【００９３】
ＡＭＦ及びＢａの内容変更に関しては、次のように行われる。まず、命令のＳＭフィールドに示される各符号が上記の要領でそれぞれ適切なＤＦのエントリのアドレスに置き換えられ、それぞれ対応するＡＭＦのエントリに書き込まれる。ここで、ＡＭＦのアドレス０のエントリがスタックトップ即ち命令のＳＭフィールドにおいて右端に示される符号に対応し、以下アドレス順にＡＭＦのエントリとスタックの要素が対応する。命令のＳＭフィールドで変更内容が明示されない部分については、スタックの成長量だけエントリの内容がシフトすることになる。即ち、スタックの成長量をｇとおくと、ＡＭＦのアドレスｉの内容が命令発行によりＡＭＦのアドレス（ｉ＋ｇ）に書き込まれることになる。また、ボトム・ポインタＢａの値にはスタックの成長量が加えられる。
【００９４】
発行される命令に含まれるオペレーションの内容が書き込まれるＯＱの各エントリにおいて、リポート・フィールドには、同じ命令に基づく書き込みが行われるＳＭＱのエントリのアドレスと識別番号（順にＡ，　Ｂ，　Ｃ，　Ｄ　と機械的に付すものとする）が書き込まれる。ＯＱのエントリのディスパッチ・フラグ・フィールドには０が書き込まれる。
【００９５】
命令の発行に伴い（ｆ１，　ｆ２，　ｆ３，　．．．　に対応する）新たに割り付けられるＤＦのエントリにおいては、ＷＦフィールドに０が書き込まれる。
【００９６】
ストア・オペレーションの場合には、その内容が、ＯＱに書き込まれると共に、ＬＳＵに送られる。
【００９７】
ＯＱの書き込みが行われるソース・フィールドに対応するＳＷＦフィールドはまず０とされるが、ｓ０，　ｓ１，　ｓ２，　．．．　のいずれかから置き換えられたＤＦのエントリ・アドレスのソース・フィールドへの書き込みの各々に関しては、次サイクルにおいて、そのアドレスのＤＦのエントリのＷＦフィールドの内容が読み出され、これが１であれば、ＯＱの対応するＳＷＦフィールドが１に変更されるようになっている。
【００９８】
発行される命令に基づき書き込みが行われるＳＭＱのエントリにおいて、対応するオペレーションの存在するオペレーション・ステータス・フィールドには未実行を意味する０が書き込まれ、その他には１が書き込まれる。
【００９９】
▲３▼　オペレーション実行
ＯＱに保持される未実行のオペレーションは、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理されるようになっている。従って、オペレーションの実行順序はｏｕｔ−ｏｆ−ｏｒｄｅｒになる。
【０１００】
ＯＱにおいて、オペレーションに必要なソース・データが全てＤＦの該当するエントリに書き込み済であることが対応するＳＷＦフィールドの内容によって確認されるエントリがあれば、その保持するオペレーションの実行のため、そのエントリの内容がＤＦをアクセスして得られるソース・データと共に適切な機能ユニットに送られるようになっている。この際、そのＯＱのエントリのディスパッチ・フラグ・フィールドが１に変更される。
【０１０１】
ロード・オペレーションや算術論理演算等の結果データを生じるオペレーションに関しては、結果データが正常に得られれば、デスティネーションであるＤＦのエントリのデータ・フィールドに結果データが書き込まれ、ＷＦフィールドが１に変更される。また、ＯＱにおいて各ソース・フィールドで上記デスティネーションであるＤＦのエントリのアドレスが照合され、一致するソース・フィールドに対応するＳＷＦフィールドが１に変更される。
【０１０２】
ストア・オペレーションを書き込みの内容とするＯＱのエントリに関しては、同じ内容が命令発行段階においてＬＳＵに送られている。命令発行段階において確定しなかったアドレス計算に必要なソース・データは、本実施例においては、そのＤＦへの書き込みがＯＱにおいて確認された直後に、ＬＳＵに送られるようになっているものとする。
【０１０３】
いずれのオペレーションも、その実行が正常に終了すれば、リポート・フィールドの内容に基づき、対応するＳＭＱのエントリのオペレーション・ステータス・フィールドが１に変更される。
【０１０４】
ストア・オペレーションに関しては、アドレス計算はオペレーション実行段階においてｏｕｔ−ｏｆ−ｏｒｄｅｒで実行されるが、正確な例外処理を保証するために、ストアの実行は命令完了段階において行われる。従って、ストア・オペレーションの場合、ストア・データとストア・アドレスが共に確定すれば、対応するＳＭＱのエントリのオペレーション・ステータス・フィールドが１に変更されるようになっている。
【０１０５】
あるオペレーションの処理において例外事象が発生した場合には、その情報が、対応するＳＭＱのエントリのオペレーション・ステータス・フィールドに書き込まれると共に、命令フェッチ・ユニットに通知される。
【０１０６】
▲４▼　命令完了
命令の完了はプログラム上の順番で行われる。
【０１０７】
ＳＭＱのキューの先頭のエントリにおいて、全てのオペレーション・ステータス・フィールドの内容が１である、あるいはそうなると、対応する命令の完了が可能となる。命令の完了を実行するには、ＳＭＱの先頭のエントリの内容に基づきＣＭＦおよびＢｃの内容を変更し、ＳＭＱにおいて上記先頭のエントリをキューから除外する。ここで、命令の発行の際にＡＭＦに対して行われた内容変更がＣＭＦにおいて再現されている。
【０１０８】
また、命令の完了に伴い、割り付けを解除すべきＤＦのエントリのアドレスがそれぞれＦＬに登録される。スタック・モードにおいては、割り付けを解除すべきＤＦのエントリ群のアドレスは次の２つのグループからなる。命令の完了に伴う内容変更によりＣＭＦにおいて保持されなくなるもの、及び、命令に含まれるオペレーションを保持していたＯＱのエントリ群のデスティネーション・フィールドに書き込まれていてＣＭＦへの書き込みが行われないもの、である。
【０１０９】
ストア・オペレーションを含む命令を完了する場合には、ＬＳＵにストアの実行を依頼する。こうすれば、データがプログラム上の順番でストアされることが保証できる。
【０１１０】
以上が、本発明実施例の計算機システムのスタック・モードにおける動作の概要である。
【０１１１】
（３−３）スタック・モードにおける動作例
ついで、具体的な動作例について説明する。いま、本実施例の計算機システムで、前述のＹ＝Ａ＊Ｘ＋Ｂ／Ｘを計算する次の２命令からなるプログラム
命令１
Ｏｐ｛　ｌｏａｄ　ｆ１，　＜４＞；　ａｄｄ　ｆ２，　ｆ１，　０；　ｌｏａｄ　ｆ３，　＜１＞；　ｍｕｌ　ｆ４，　ｆ２，　ｆ３　｝
ＳＭ｛　＋２：　ｆ４，　ｆ１　｝
命令２
Ｏｐ｛　ｌｏａｄ　ｆ１，　＜２＞；　ｄｉｖ　ｆ２，　ｆ１，　ｓ０；　ａｄｄ　ｆ３，　ｓ１，　ｆ２；　ｓｔｏｒｅ　＜５＞，　ｆ３　｝
ＳＭ｛　−２：　｝
を実行するものとする。
【０１１２】
図８〜図１４は、本実施例の計算機システムにおいて、上記プログラムを処理する際の状態の変化を時系列に示した説明図であり、以下ではこの図をもとに詳細な動作を説明する。図８〜図１４において、ＤＦ６、ＯＱ５及びＳＭＱ４の各エントリの構成は、それぞれ図４、図５及び図６のものと同じである。マッピング・ファイルのボトム・ポインタが示すエントリより下のエントリや、ＦＩＦＯキューの構成となっている構成要素のキューから外れるエントリなど、書込み内容が意味あるものとして保持されていないような部分には、斜線が施されている。ｐ＃＃が記入されている箇所は、ＤＦのいずれかのエントリのアドレスが書き込まれているが、本動作例の説明において留意する必要がないことを意味する。また、本動作例においては、説明を簡単にするため、ＤＦとデータ・バッファの間のＳｐｉｌｌ／Ｆｉｌｌの動作は行わないものとする。
【０１１３】
ＦＬの構成要素であるデスティネーション用割付キュー（ＡＱＤ）７２ａ及びＡＭＦ３ａの当初の内容が図８に示されるようなものであるとしよう。ここで、循環型のＦＩＦＯキューの構成となっているＡＱＤ７２ａで、キューの先頭からの４エントリが次に発行される命令におけるｆ１，　ｆ２，　ｆ３，　ｆ４にそれぞれ対応することを示している。ＡＭＦ３ａ及びＣＭＦ３ｃでは、各々のエントリに上から順に０，　１，　２，　．．．　とアドレスが付けられていて、それぞれｓ０，　ｓ１，　ｓ２，　．．．　に対応するものとしている。
【０１１４】
計算機システムが図８に示される状態にあるときに、命令１の発行が行われるものとする。
【０１１５】
命令１のＯｐフィールドの内容に基づき命令に含まれるオペレーションの内容がＯＱに書き込まれ、ＳＭフィールドの内容に基づきＡＭＦ及びＢａの内容が変更され、その変更の内容がＳＭＱに書き込まれる。この際、命令中のｆ１，　ｆ２，　ｆ３，　ｆ４の各々はそれぞれフリー・リストから順に取り出されるｐ２６，　ｐ３４，　ｐ４２，　ｐ５１に、置き換えられる。ＡＭＦの内容の変更に関しては、アドレス０，　１のエントリには、それぞれｆ１，　ｆ４から置き換えられるｐ２６，　ｐ５１が書き込まれ、それ以下の部分では、スタックの成長量（２）だけエントリの内容がシフトする（図８におけるＡＭＦのアドレス０，　１，　．．．　の各エントリの内容がアドレス２，　３，　．．．　の各エントリにそれぞれ書き込まれる）。図９のＯＱで書き込み内容を示した４エントリにおいて、リポート・フィールドには、同じ命令１に基づく書き込みが行われるＳＭＱのエントリのアドレス１と識別番号（順にＡ，　Ｂ，　Ｃ，　Ｄ）が書き込まれている。また、これらのＯＱの４エントリのディスパッチ・フラグ・フィールドには０が書き込まれている。
【０１１６】
ｆ１，　ｆ２，　ｆ３，　ｆ４にそれぞれ対応して新たに割り付けられるＤＦのアドレスｐ２６，ｐ３４，　ｐ４２，　ｐ５１の各エントリにおいては、ＷＦフィールドを０とする。
【０１１７】
ＳＭＱの書き込みが行われるエントリの各オペレーション・ステータス・フィールドには、いずれも対応するオペレーションが存在するので、０が書き込まれている。
【０１１８】
こうして、計算機システムは図８の状態から図９に示されるような状態に至る。
【０１１９】
次のサイクルでは、命令１に続いて命令２の発行が行われる。
【０１２０】
命令１の場合と同様に、命令２のＯｐフィールドの内容に基づき命令に含まれるオペレーションの内容がＯＱに書き込まれ、ＳＭフィールドの内容に基づきＡＭＦ及びＢａの内容が変更され、その変更の内容がＳＭＱに書き込まれる。この際、命令中のｓ０，　ｓ１は変更前（図９）のＡＭＦのそれぞれアドレス０，　１のエントリの内容ｐ２６，　ｐ５１に、ｆ１，　ｆ２，　ｆ３の各々はそれぞれフリー・リストから順に取り出されるｐ１６，　ｐ１８，　ｐ５７に、置き換えられる。ＳＭフィールドに負のスタック成長量（−２）しか示されていないので、ＡＭＦに関しては、それだけエントリの内容がシフトする（図９におけるＡＭＦのアドレス２，　３，　．．．　の各エントリの内容がアドレス０，　１，　．．．　の各エントリにそれぞれ書き込まれる）。
【０１２１】
ｆ１，　ｆ２，　ｆ３にそれぞれ対応して新たに割り付けられるＤＦのアドレスｐ１６，　ｐ１８，　ｐ５７の各エントリにおいては、ＷＦフィールドを０とする。
【０１２２】
さらに、命令２はストア・オペレーションを含むので、その内容が、ＯＱに書き込まれると共に、ＬＳＵに送られる。
【０１２３】
こうして、計算機システムは図１０に示されるような状態に至る。
【０１２４】
ＯＱに保持される未実行のオペレーションは、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理される。
【０１２５】
図１１は、数サイクルが経過して、命令１以前に発行された命令が全て完了し、命令１に含まれる４つのオペレーション全てが正常終了した時点の計算機システムの状態を示したものである。命令１に対応するＳＭＱのアドレス１のエントリにおいて、全てのオペレーション・ステータス・フィールドが１となっている。また、この時点のＣＭＦ及びＢｃの内容は、命令１の発行直前（図８）のＡＭＦ及びＢａの内容と同じものとなっている（ＤＦとデータ・バッファの間のＳｐｉｌｌ／Ｆｉｌｌの動作が行われれば、命令発行時のＢａの値と命令完了時のＢｃの値は一致しない）。この状態から命令１の完了が次のように実行される。
【０１２６】
図１１においてＳＭＱのアドレス１のエントリがその時点のキューの先頭であるので、その内容に基づきＣＭＦ及びＢｃの内容が変更される。すなわち、Ｂｃの値に２が加えられ、ＣＭＦのアドレス０，　１のエントリにはそれぞれｐ２６，　ｐ５１が書き込まれ、それ以下の部分では、スタックの成長量（２）だけエントリの内容がシフトする。さらにＳＭＱにおける上記先頭のエントリがキューから除外される。
【０１２７】
また、命令１の完了に伴い割り付けを解除すべきＤＦのエントリのアドレスがＦＬに登録される。この場合、命令１に含まれるオペレーションを保持していたＯＱのエントリ群のデスティネーション・フィールドに書き込まれていてＣＭＦへの書き込みが行われないｐ３４，　ｐ４２がＦＬの構成要素である命令完了用登録バッファ（ＥＢＩＣ）７１ａに書き込まれる。（この場合、命令の完了に伴う内容変更によりＣＭＦにおいて保持されなくなるもの、はない。）こうして、計算機システムは図１２に示されるような状態に至る。
【０１２８】
図１３は、さらに数サイクルが経過して、命令２に含まれる３つのオペレーションが正常終了し、最後のストア・オペレーションに関してはストア・データとストア・アドレスが共に確定済となった時点の計算機システムの状態を示したものである。ＥＢＩＣに書き込まれたｐ３４，　ｐ４２がＡＱＤに移されている。
【０１２９】
図１３の時点から１サイクルで、命令２の完了が命令１の場合と同様に行われる。この場合、命令２がストア・オペレーションを含むので、そのストアの実行がＬＳＵに依頼される。また、命令の完了に伴い割り付けを解除すべきＤＦのエントリのアドレスがＦＬに登録される。この場合、命令の完了に伴う内容変更によりＣＭＦにおいて保持されなくなるものであるｐ５１，　ｐ２６と、命令２に含まれるオペレーションを保持していたＯＱのエントリ群のデスティネーション・フィールドに書き込まれていてＣＭＦへの書き込みが行われないものであるｐ１６，　ｐ１８，　ｐ５７がＥＢＩＣに書き込まれる。こうして、計算機システムは図１４に示されるような状態に至る。
【０１３０】
以上で、本実施例の計算機システムにおいてＹ＝Ａ＊Ｘ＋Ｂ／Ｘの計算が完了したことになる。
【０１３１】
（４）レジスタ・モード
（４−１）レジスタ・モードにおける動作に必要な機能と構成
（３−１）で述べた機能と構成は、一部を除き、レジスタ・モードにおいても必要とされるものである。ここでは、スタック・モードの場合との相違点について説明する。
【０１３２】
まず、マッピング・ファイルは、レジスタ・モードにおいては、レジスタ・ベースのスーパースカラ・プロセッサにおけるレジスタ・マッピング・テーブルと同等なものとして用いられる。
【０１３３】
従って、マッピング・ファイルのボトム・ポインタ、データ・バッファ、ロード／ストア・ユニット（ＬＳＵ）のＳｐｉｌｌ／Ｆｉｌｌに関する機能、フリー・リスト（ＦＬ）中のスタック・スピル用登録バッファ（ＥＢＳＳ）及びスタック・フィル用割付キュー（ＡＱＳＦ）などは、基本的に、必要ではない。
【０１３４】
（４−２）レジスタ・モードにおける動作
ついで、本発明実施例の計算機システムのレジスタ・モードにおける動作を説明する。
【０１３５】
本実施例の計算機システムは、レジスタ・モードにおいてもスタック・モードの場合と同様に、基本的に、命令を、▲１▼命令フェッチ、▲２▼命令発行、▲３▼オペレーション実行、▲４▼命令完了の４段階で処理する。以下に各段階ごとに動作内容を説明する。
【０１３６】
▲１▼　命令フェッチ
この段階では、命令フェッチ・ユニットが命令キャッシュから命令を取り出すと共に、次にフェッチする命令のアドレスを決定する。
【０１３７】
▲２▼　命令発行
この段階では、発行する命令のＯｐフィールドの内容に基づき命令に含まれるオペレーションの内容がオペレーション・キュー（ＯＱ）に書き込まれ、ＳＭフィールドの内容に基づき前進マッピング・ファイル（ＡＭＦ）の内容が変更され、その変更の内容が状態変更キュー（ＳＭＱ）に書き込まれる。この際、命令中のｒ０，　ｒ１，　ｒ２，　．．．　の各々はそれぞれ変更前のＡＭＦのアドレス０，　１，　２，　．．．　のエントリの内容に、ｆ１，　ｆ２，　．．．　の各々はそれぞれフリー・リスト（ＦＬ）から順に取り出されるＤＦのエントリのアドレスに、置き換えられる。
【０１３８】
ＡＭＦの内容変更に関しては、次のように行われる。命令のＳＭフィールドに示されるＡＭＦのエントリ・アドレスと符号の組の各々について、符号が上記の要領でそれぞれ適切なＤＦのエントリ・アドレスに置き換えられ、アドレスが示されるＡＭＦのエントリに書き込まれる。
【０１３９】
発行される命令に含まれるオペレーションの内容が書き込まれるＯＱの各エントリにおいて、リポート・フィールドには、同じ命令に基づく書き込みが行われるＳＭＱのエントリのアドレスと識別番号（順にＡ，　Ｂ，　Ｃ，　Ｄ　と機械的に付すものとする）が書き込まれる。ＯＱのエントリのディスパッチ・フラグ・フィールドには０が書き込まれる。
【０１４０】
命令の発行に伴い（ｆ１，　ｆ２，　ｆ３，　．．．　に対応する）新たに割り付けられるＤＦのエントリにおいては、ＷＦフィールドに０が書き込まれる。
【０１４１】
ストア・オペレーションの場合には、その内容が、ＯＱに書き込まれると共に、ＬＳＵに送られる。
【０１４２】
ＯＱの書き込みが行われるソース・フィールドに対応するＳＷＦフィールドはまず０とされるが、ｒ０，　ｒ１，　ｒ２，　．．．　のいずれかから置き換えられたＤＦのエントリ・アドレスのソース・フィールドへの書き込みの各々に関しては、次サイクルにおいて、そのアドレスのＤＦのエントリのＷＦフィールドの内容が読み出され、これが１であれば、ＯＱの対応するＳＷＦフィールドが１に変更されるようになっている。
【０１４３】
発行される命令に基づき書き込みが行われるＳＭＱのエントリにおいて、対応するオペレーションの存在するオペレーション・ステータス・フィールドには未実行を意味する０が書き込まれ、その他には１が書き込まれる。
【０１４４】
▲３▼　オペレーション実行
ＯＱに保持される未実行のオペレーションは、スタック・モードの場合と同様に、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理されるようになっている。
【０１４５】
▲４▼　命令完了
命令の完了は、以下の点を除き、スタック・モードの場合と同様に、プログラム上の順番で行われる。
【０１４６】
まず、命令の発行の際にＡＭＦに対して行われた内容変更がＣＭＦにおいて再現されるが、それは、レジスタ・モードにおける命令のＳＭフィールド内部のフォーマット、即ち状態変更キュー（ＳＭＱ）の書き込みの形式に即して行われる。
【０１４７】
また、命令の完了に伴い、割り付けを解除すべきＤＦのエントリのアドレスがそれぞれＦＬに登録される。レジスタ・モードにおいては、割り付けを解除すべきＤＦのエントリ群のアドレスは次の２つのグループからなる。命令の完了に伴い内容が書き換えられるＣＭＦの各エントリの変更前の内容を読み出したもの、及び、命令に含まれるオペレーションを保持していたＯＱのエントリ群のデスティネーション・フィールドに書き込まれていてＣＭＦへの書き込みが行われないもの、である。
【０１４８】
以上が、本発明実施例の計算機システムのレジスタ・モードにおける動作の概要である。
【０１４９】
（４−３）レジスタ・モードにおける動作例
ついで、具体的な動作例について説明する。いま、本実施例の計算機システムで、前述のＹ＝（Ａ＊Ｘ＋Ｂ／Ｘ）＊２を計算する次の２命令からなるプログラム
命令１
Ｏｐ｛ｌｏａｄ　ｆ１，　１００［ｒ０］；　ｌｏａｄ　ｆ２，　４００［ｒ０］；　ｍｕｌ　ｆ３，　ｆ１，　ｆ２；　ｌｏａｄ　ｆ４，　２００［ｒ０］｝
ＳＭ｛１：ｆ１，　２：ｆ４，　４：ｆ２，　５：ｆ３｝
命令２
Ｏｐ｛ｄｉｖ　ｆ１，　ｒ２，　ｒ４；　ａｄｄ　ｆ２，　ｒ５，　ｆ１；　ｍｕｌ　ｆ３，　ｆ２，　２；　ｓｔｏｒｅ　５００［ｒ０］，　ｆ３｝
ＳＭ｛４：ｆ１，　５：ｆ３｝
を実行するものとする。
【０１５０】
図１５〜図２１は、本実施例の計算機システムにおいて、上記プログラムを処理する際の状態の変化を時系列に示した説明図であり、以下ではこの図をもとに詳細な動作を説明する。図１５〜図２１において、ＤＦ６、ＯＱ５及びＳＭＱ４の各エントリの構成は、それぞれ図４、図５及び図６のものと同じである。ＦＩＦＯキューの構成となっている構成要素のキューから外れるエントリなどの書込み内容が意味あるものとして保持されていないような部分には、斜線が施されている。ｐ＃＃が記入されている箇所は、ＤＦのいずれかのエントリのアドレスが書き込まれているが、本動作例の説明において留意する必要がないことを意味する。
【０１５１】
ＦＬの構成要素であるデスティネーション用割付キュー（ＡＱＤ）７２ａ及びＡＭＦ３ａの当初の内容が図１５に示されるようなものであるとしよう。ここで、循環型のＦＩＦＯキューの構成となっているＡＱＤ７２ａで、キューの先頭からの４エントリが次に発行される命令におけるｆ１，　ｆ２，　ｆ３，　ｆ４にそれぞれ対応することを示している。ＡＭＦ３ａ及びＣＭＦ３ｃでは、各々のエントリに上から順に０，　１，　２，　．．．　とアドレスが付けられていて、それぞれｒ０，　ｒ１，　ｒ２，　．．．　に対応するものとしている。
【０１５２】
計算機システムが図１５に示される状態にあるときに、命令１の発行が行われるものとする。
【０１５３】
命令１のＯｐフィールドの内容に基づき命令に含まれるオペレーションの内容がＯＱに書き込まれ、ＳＭフィールドの内容に基づきＡＭＦの内容が変更され、その変更の内容がＳＭＱに書き込まれる。この際、命令中のｒ０は変更前（図１５）のＡＭＦのアドレス０のエントリの内容ｐ１２に、ｆ１，　ｆ２，　ｆ３，　ｆ４の各々はそれぞれフリー・リストから順に取り出されるｐ２６，　ｐ３４，　ｐ４２，　ｐ５１に、置き換えられる。ＡＭＦの内容の変更に関しては、アドレス１，　２，　４，　５のエントリに、それぞれｆ１，　ｆ４，　ｆ２，　ｆ３から置き換えられるｐ２６，　ｐ５１，　ｐ３４，　ｐ４２が書き込まれる。図１６のＯＱで書き込み内容を示した４エントリにおいて、リポート・フィールドには、同じ命令１に基づく書き込みが行われるＳＭＱのエントリのアドレス１と識別番号（順にＡ，　Ｂ，　Ｃ，　Ｄ）が書き込まれている。また、これらのＯＱの４エントリのディスパッチ・フラグ・フィールドには０が書き込まれている。
【０１５４】
ｆ１，　ｆ２，　ｆ３，　ｆ４にそれぞれ対応して新たに割り付けられるＤＦのアドレスｐ２６，ｐ３４，　ｐ４２，　ｐ５１の各エントリにおいては、ＷＦフィールドを０とする。（ｒ０に対応するＤＦのアドレスｐ１２のエントリでは、ＷＦフィールドが１でデータ”１０００”がすでに書き込まれていたものとしている。）
【０１５５】
ＳＭＱの書き込みが行われるエントリの各オペレーション・ステータス・フィールドには、いずれも対応するオペレーションが存在するので、０が書き込まれている。
【０１５６】
こうして、計算機システムは図１５の状態から図１６に示されるような状態に至る。
【０１５７】
次のサイクルでは、命令１に続いて命令２の発行が行われる。
【０１５８】
命令１の場合と同様に、命令２のＯｐフィールドの内容に基づき命令に含まれるオペレーションの内容がＯＱに書き込まれ、ＳＭフィールドの内容に基づきＡＭＦの内容が変更され、その変更の内容がＳＭＱに書き込まれる。
【０１５９】
ｆ１，　ｆ２，　ｆ３にそれぞれ対応して新たに割り付けられるＤＦのアドレスｐ１６，　ｐ１８，　ｐ５７の各エントリにおいては、ＷＦフィールドを０とする。
【０１６０】
さらに、命令２は１つのストア・オペレーションを含むので、その内容が、ＯＱに書き込まれると共に、ＬＳＵに送られる。
【０１６１】
また、前サイクルの命令１の発行において、ＯＱのソース・フィールドにｒ０から置き換えられたｐ１２が書き込まれているので、そのアドレスのＤＦのエントリのＷＦフィールドの内容が読み出され、これが１であるので、ＯＱにおいてｐ１２が書き込まれているソース・フィールドに対応するＳＷＦフィールドが１に変更される。
【０１６２】
こうして、計算機システムは図１７に示されるような状態に至る。
【０１６３】
ＯＱに保持される未実行のオペレーションは、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理される。
【０１６４】
図１８は、数サイクルが経過して、命令１以前に発行された命令が全て完了し、命令１に含まれる４つのオペレーション全てが正常終了した時点の計算機システムの状態を示したものである。命令１に対応するＳＭＱのアドレス１のエントリにおいて、全てのオペレーション・ステータス・フィールドが１となっている。また、この時点のＣＭＦの内容は、命令１の発行直前（図１５）のＡＭＦの内容と同じものとなっている。この状態から命令１の完了が次のように実行される。
【０１６５】
図１８においてＳＭＱのアドレス１のエントリがその時点のキューの先頭であるので、その内容に基づきＣＭＦの内容が変更される。すなわち、ＣＭＦのアドレス１，　２，　４，　５のエントリにそれぞれｐ２６，　ｐ５１，　ｐ３４，　ｐ４２が書き込まれる。さらにＳＭＱにおける上記先頭のエントリがキューから除外される。
【０１６６】
また、命令１の完了に伴い割り付けを解除すべきＤＦのエントリのアドレスがＦＬに登録される。この場合、内容が書き換えられるＣＭＦのアドレス１，　２，　４，５の各エントリの変更前の内容（ｐ０２，　ｐ１０，　ｐ２４，　ｐ６０）が読み出され、これらがＦＬの構成要素である命令完了用登録バッファ（ＥＢＩＣ）７１ａに書き込まれる。（この場合、命令１に含まれるオペレーションを保持していたＯＱのエントリ群のデスティネーション・フィールドに書き込まれていてＣＭＦへの書き込みが行われないもの、はない。）こうして、計算機システムは図１９に示されるような状態に至る。
【０１６７】
図２０は、さらに数サイクルが経過して、命令２に含まれる３つのオペレーションが正常終了し、最後のストア・オペレーションに関してはストア・データとストア・アドレスが共に確定済となった時点の計算機システムの状態を示したものである。ＥＢＩＣに書き込まれたｐ０２，　ｐ１０，　ｐ２４，　ｐ６０がＡＱＤに移されている。
【０１６８】
図２０の時点から１サイクルで、命令２の完了が命令１の場合と同様に行われる。この場合、命令２がストア・オペレーションを含むので、そのストアの実行がＬＳＵに依頼される。また、命令の完了に伴い割り付けを解除すべきＤＦのエントリのアドレスがＦＬに登録される。この場合、内容が書き換えられるＣＭＦの各エントリの変更前の内容を読み出したものであるｐ３４，　ｐ４２と、命令２に含まれるオペレーションを保持していたＯＱのエントリ群のデスティネーション・フィールドに書き込まれていてＣＭＦへの書き込みが行われないものであるｐ１８がＥＢＩＣに書き込まれる。こうして、計算機システムは図２１に示されるような状態に至る。
【０１６９】
以上で、本実施例の計算機システムにおいてＹ＝（Ａ＊Ｘ＋Ｂ／Ｘ）＊２の計算が完了したことになる。
【０１７０】
（５）例外回復
ここでは、本発明の計算機システムにおける例外回復について説明する。
【０１７１】
ある命令に含まれるオペレーションの実行において例外事象が発生した場合、その命令の発行時点の状態を回復する必要がある（但し、スタック・モードにおいては、すでに行われたデータ・ファイルＤＦとデータ・バッファの間のＳｐｉｌｌ／Ｆｉｌｌの動作は取り消さない）。
【０１７２】
そのためには、例外が発生した命令以降に発行された命令を全てキャンセルし、その時点の完了マッピング・ファイルＣＭＦ（及びそのボトム・ポインタＢｃ）の内容を前進マッピング・ファイルＡＭＦ（及びそのボトム・ポインタＢａ）にコピーし、さらに、状態変更キューＳＭＱのキューの先頭のエントリから上記例外が発生した命令に対応するエントリまでの各々の内容に基づきＡＭＦ（及びＢａ）の内容変更を行えばよい。
【０１７３】
ある命令以降に発行された命令を全てキャンセルするには、オペレーション・キューＯＱ及びＳＭＱにおいてキャンセルされるべき命令群に対応する範囲のエントリを全てキューから除外し、キャンセルされるべきオペレーションのデスティネーション・レジスタとして割り付けられたＤＦのエントリのアドレスの各々をＦＬに戻せばよい。
【０１７４】
キャンセルされるべきオペレーションのデスティネーション・レジスタとして割り付けられたＤＦのエントリのアドレスの各々をＦＬに戻すには基本的に２つの方法がある。即ち、まともに命令完了用登録バッファＥＢＩＣに順次書き込む方法と、デスティネーション用割付キューＡＱＤのキューの先頭を示すポインタを書き換えるというものである。後者の方法を採用する場合、ＡＱＤのキューの先頭を示すポインタ値として書き込まれる可能性がある値をどこかに保持しておく必要がある。それには、（ａ）ＳＭＱにそのためのフィールドを設け、命令の発行ごとに書き込む、（ｂ）一種の履歴ファイルを設け、条件分岐オペレーションを含む命令の発行ごとに書き込む、というような方法が考えられる。
【０１７５】
以上のように、本発明の計算機システムにおいては、例外が発生した命令が発行された時点のＡＭＦ（及びＢａ）の状態を、基本的に、回復することができるので、正確な例外処理が可能である。
【０１７６】
（６）その他の実施例
本発明の計算機システムは、上述の実施例に限られるものではなく、細部の構成の異なる様々な実施例が存在する。たとえば、以下のようなものをあげることができる。
【０１７７】
（６−１）実施例Ａ
本発明の計算機システムは、従来のスタック・ベースあるいはレジスタ・ベースのプロセッサの命令形式に基づくプログラムを命令キャッシュに蓄えておき、実行時に命令発行段階の前段において、（２）で規定した命令形式に準じるよう変換するような構成とすることもできる。
【０１７８】
（６−２）実施例Ｂ
本発明の計算機システムは、個々の命令の発行の際に、その命令の完了時に割り付けの解除が必要になるＤＦのエントリのアドレス、あるいはそれを定めるための情報を、状態変更キューあるいは専用のキューにあらかじめ記入しておくような構成とすることもできる。
【０１７９】
（６−３）実施例Ｃ
共にボトム・ポインタを備えるスタック型の前進マッピング・ファイル及び完了マッピング・ファイルと、レジスタ型の前進マッピング・ファイル及び完了マッピング・ファイルを具備する構成とし、命令の状態変更フィールドで、スタック型のマッピング・ファイルの内容変更とレジスタ型のマッピング・ファイルの内容変更を共に示すことのできるような計算機システムも実現可能である。
【０１８０】
（６−４）実施例Ｄ
レジスタ・ベースのスーパースカラ・アーキテクチャにおいて考えられる様々な変形の多くが、本発明に基づく計算機システムにおいても適用できる。例えば、以下のようなものがあげられる。
▲１▼　各機能ユニットの入力段にそれぞれリザベーション・ステーションを設けることによってオペレーション・ウインドウを実現したもの。
▲２▼　整数データ用／浮動小数点データ用、あるいは汎用／マルチメディア用というようにデータ型別にデータ・ファイル、オペレーション・キュー、機能ユニット群、フリー・リストを設けたもの。
▲３▼　複数組の前進マッピング・ファイル、完了マッピング・ファイル、オペレーション・キュー、状態変更キュー等を設け、複数のスレッドを並行して処理できる構成としたもの。
【０１８１】
【発明の効果】
本発明によれば、高性能の計算機システムを実現することができる。また、従来のスタック・ベースあるいはレジスタ・ベースのプロセッサの機械語で記述されたプログラムは、本発明の計算機システムの命令形式に容易に変換できる。
【図面の簡単な説明】
【図１】本発明の一実施例の計算機システムの基本構成を示すブロック図である。
【図２】本発明の一実施例の計算機システムの命令フォーマットを示す概念図である。
【図３】本発明の一実施例のスタック・モードにおける、前進マッピング・ファイル、完了マッピング・ファイル、及び２つのボトム・ポインタの関係を示した説明図である。
【図４】本発明の一実施例におけるデータ・ファイル（ＤＦ）６の各々のエントリ６（ｉ）の詳細な構成を示した説明図である。
【図５】本発明の一実施例におけるオペレーション・キュー（ＯＱ）５の各々のエントリ５（ｉ）の詳細な構成を示した説明図である。
【図６】本発明の一実施例における状態変更キュー（ＳＭＱ）４の各々のエントリ４（ｉ）の詳細な構成を示した説明図である。
【図７】本発明の一実施例におけるフリー・リスト７の内部構成を示した説明図である。
【図８】図８〜図１４は、本発明の一実施例のスタック・モードにおける一動作例の、サイクル毎の、前進マッピング・ファイル（ＡＭＦ）３ａ、完了マッピング・ファイル（ＣＭＦ）３ｃ、状態変更キュー（ＳＭＱ）４、オペレーション・キュー（ＯＱ）５、データ・ファイル（ＤＦ）６、及びフリー・リスト（ＦＬ）７の内容を具体的に示した説明図である。図８は当初の内容を示した図である。
【図９】図８に続く段階の内容を示した図である。
【図１０】図８〜図９に続く段階の内容を示した図である。
【図１１】図８〜図１０に続く段階の内容を示した図である。
【図１２】図８〜図１１に続く段階の内容を示した図である。
【図１３】図８〜図１２に続く段階の内容を示した図である。
【図１４】図８〜図１３に続く段階の内容を示した図である。
【図１５】図１５〜図２１は、本発明の一実施例のレジスタ・モードにおける一動作例の、サイクル毎の、前進マッピング・ファイル（ＡＭＦ）３ａ、完了マッピング・ファイル（ＣＭＦ）３ｃ、状態変更キュー（ＳＭＱ）４、オペレーション・キュー（ＯＱ）５、データ・ファイル（ＤＦ）６、及びフリー・リスト（ＦＬ）７の内容を具体的に示した説明図である。図１５は当初の内容を示した図である。
【図１６】図１５に続く段階の内容を示した図である。
【図１７】図１５〜図１６に続く段階の内容を示した図である。
【図１８】図１５〜図１７に続く段階の内容を示した図である。
【図１９】図１５〜図１８に続く段階の内容を示した図である。
【図２０】図１５〜図１９に続く段階の内容を示した図である。
【図２１】図１５〜図２０に続く段階の内容を示した図である。
【符号の説明】
３ａ　　前進マッピング・ファイル（ＡＭＦ）
３ｃ　　完了マッピング・ファイル（ＣＭＦ）
４　　　状態変更キュー（ＳＭＱ）
５　　　オペレーション・キュー（ＯＱ）
６　　　データ・ファイル（ＤＦ）
７　　　フリー・リスト（ＦＬ）
１０　　命令キャッシュ
１１　　データ・キャッシュ
１２　　データ・バッファ
２０　　命令フェッチ・ユニット
２１　　命令発行ユニット
３０ａ　ボトム・ポインタＢａ
３０ｃ　ボトム・ポインタＢｃ
７１ａ　命令完了用登録バッファ（ＥＢＩＣ）
７１ｂ　スタック・スピル用登録バッファ（ＥＢＳＳ）
７２ａ　デスティネーション用割付キュー（ＡＱＤ）
７２ｂ　スタック・フィル用割付キュー（ＡＱＳＦ）
８０　演算ユニット０
８１　演算ユニット１
８２　分岐ユニット
８３　ロード／ストア・ユニット（ＬＳＵ）
【図１】
2004094533.tif 000008
【図２】
2004094533.tif 000009
【図３】
2004094533.tif 000010
【図４】
2004094533.tif 000011
【図５】
2004094533.tif 000012
【図６】
2004094533.tif 000013
【図７】
2004094533.tif 000014
【図８】
2004094533.tif 000015
【図９】
2004094533.tif 000016
【図１０】
2004094533.tif 000017
【図１１】
2004094533.tif 000018
【図１２】
2004094533.tif 000019
【図１３】
2004094533.tif 000020
【図１４】
2004094533.tif 000021
【図１５】
2004094533.tif 000022
【図１６】
2004094533.tif 000023
【図１７】
2004094533.tif 000024
【図１８】
2004094533.tif 000025
【図１９】
2004094533.tif 000026
【図２０】
2004094533.tif 000027
【図２１】
2004094533.tif 000028