(57)【特許請求の範囲】
【請求項１】
複数個のデータエントリを有しており常にそのトップオブスタックを介してデータエントリが出し入れされるスタック、前記複数個のデータエントリと複数個の仮想レジスタ位置とを対応付ける仮想レジスタ、前記トップオブスタック内のデータエントリと同一のデータエントリに対応する仮想レジスタ位置を指し示すスタックポインタ、前記複数個のデータエントリに対応する複数個の物理データを有している物理レジスタ、前記仮想レジスタの各データエントリを前記各データエントリに対応する物理データが格納されている前記物理レジスタの格納位置へマッピングする参照テーブルを有しており、命令を処理するシステムにおいて、
命令を発生する命令ユニット、
前記命令ユニットから命令を受取り、前記命令をデコードし且つ交換命令を含む命令のタイプを決定するデコードユニット、
前記参照テーブル及びデコードユニットへ結合されており、前記デコードユニットから受取った各交換命令に対して前記参照テーブルをアップデートする論理ユニット、
を有しており、前記各交換命令に対して前記参照テーブルがアップデートされる場合に、前記スタック内の一対のデータエントリをスワップさせると共に前記仮想レジスタ内の対応する一対のデータエントリをスワップさせる一方、前記物理レジスタが前記各交換命令に対して同一の内容を維持することを特徴とするシステム。
【請求項２】
請求項１において、前記命令ユニットが、
命令キャッシュ、
前記キャッシュへ結合している命令パーサ、
前記命令パーサへ結合されており且つ解析した命令を受取る複数個のパーセルレジスタ、
を有することを特徴とするシステム。
【請求項３】
請求項１において、前記命令が浮動小数点命令を包含しており且つ前記論理ユニットが前記命令の何れかのオペランドを得るために前記参照テーブルを参照することを特徴とするシステム。
【請求項４】
請求項１において、前記命令が浮動小数点交換命令を包含していることを特徴とするシステム。
【請求項５】
請求項１において、前記命令が整数命令を包含していることを特徴とするシステム。
【請求項６】
複数個のデータエントリを有しており常にそのトップオブスタックを介してデータエントリが出し入れされるスタック、前記複数個のデータエントリと複数個の仮想レジスタ位置とを対応付ける仮想レジスタ、前記トップオブスタック内のデータエントリと同一のデータエントリに対応する仮想レジスタ位置を指し示すスタックポインタ、前記複数個のデータエントリに対応する複数個の物理データを有している物理レジスタ、前記仮想レジスタの各データエントリを前記各データエントリに対応する物理データが格納されている前記物理レジスタの格納位置へマッピングする参照テーブルを有しており、浮動小数点命令を処理するシステムにおいて、
複数個の命令を発生する命令ユニット、
前記命令ユニットから前記複数個の命令をそれぞれ受取る複数個のデコーダを有しており、前記複数個の命令をデコードし且つ前記命令のうちの何れか一つが浮動小数点交換命令を包含する浮動小数点命令を含むものであるか否かを決定するデコードユニット、
前記参照テーブルへ結合しており且つ前記デコードユニットにおける前記複数個のデコーダへそれぞれ結合している複数個の論理装置を有しており、前記デコードユニットから受取った各浮動小数点交換命令に対してアップデートしたテーブルを発生させ、前記スタック内の一対のデータエントリをスワップさせると共に前記仮想レジスタ内の対応する一対のデータエントリをスワップさせる一方、前記物理レジスタが前記各交換命令に対して同一の内容を維持する論理ユニット、
前記論理ユニットからアップデートされたテーブルを受取り且つ前記アップデートされたテーブルで前記参照テーブルをアップデートさせる制御ユニット、
を有することを特徴とするシステム。
【請求項７】
請求項６において、更に、前記論理ユニット及び前記制御ユニットへ結合されているメモリを有しており、前記メモリは、前記制御ユニットからの制御信号に従って前記メモリ内に格納されている参照テーブルで前記参照テーブルをアップデートさせることを特徴とするシステム。
【請求項８】
請求項７において、更に、前記制御ユニット及び前記メモリへ結合しているマルチプレクサを有しており、前記マルチプレクサは、前記制御ユニットからの制御信号に従って、前記メモリからの前記参照テーブル及び前記論理ユニットからのアップデートされたテーブルのうちの一つで前記参照テーブルをアップデートさせることを特徴とするシステム。
【請求項９】
請求項６において、前記命令ユニットが、
命令キャッシュ、
前記キャッシュへ結合している命令パーサ、
前記命令パーサへ結合しており且つ解析された命令を受取る複数個のパーセルレジスタ、
を有していることを特徴とするシステム。
【請求項１０】
請求項６において、前記論理ユニットが浮動小数点交換命令以外の浮動小数点命令に対して前記参照テーブルを参照することを特徴とするシステム。
【請求項１１】
複数個のデータエントリを有しており常にそのトップオブスタックを介してデータエントリが出し入れされるスタック、前記複数個のデータエントリと複数個の仮想レジスタ位置とを対応付ける仮想レジスタ、前記トップオブスタック内のデータエントリと同一のデータエントリに対応する仮想レジスタ位置を指し示すスタックポインタ、前記複数個のデータエントリに対応する複数個の物理データを有している物理レジスタ、前記仮想レジスタの各データエントリを前記各データエントリに対応する物理データが格納されている前記物理レジスタの格納位置に対してマッピングする参照テーブルを使用して命令を処理する方法において、
命令ユニットから命令を発生し、
前記命令をデコードし且つ前記命令がデコードユニットにおける交換命令を含むものであるか否かを決定し、
前記命令が交換命令である場合に、前記参照テーブルをアップデートし、その場合に前記スタック内の一対のデータエントリをスワップさせると共に前記仮想レジスタ内の対応する一対のデータエントリをスワップさせる一方、前記物理レジスタの内容を不変に維持する、
上記各ステップを有することを特徴とする方法。
【請求項１２】
請求項１１において、前記命令を発生するステップが、前記命令を解析するステップを有していることを特徴とする方法。
【請求項１３】
請求項１１において、更に、前記参照テーブルを使用して浮動小数点命令を実行するステップを有していることを特徴とする方法。
【請求項１４】
請求項１１において、前記命令が浮動小数点交換命令を包含していることを特徴とする方法。
【請求項１５】
請求項１１において、前記命令が整数命令を包含していることを特徴とする方法。
【請求項１６】
請求項１１において、前記参照テーブルをアップデートするステップが、
各浮動小数点交換命令に対して、アップデートしたテーブルを発生し且つ前記物理レジスタの内容を維持し、
前記アップデートしたテーブルで前記参照テーブルをアップデートする、
上記各ステップを有することを特徴とする方法。
【請求項１７】
請求項１１において、更に、制御信号に従ってメモリ内に格納されている参照テーブルで前記参照テーブルをアップデートするステップを有することを特徴とする方法。
【請求項１８】
請求項１７において、前記メモリ内に格納されている参照テーブルで前記参照テーブルをアップデートするステップが、
前記参照テーブルを前記アップデートしたテーブルか又は前記メモリ内に格納されている参照テーブルの何れかでアップデートするかを決定し、
前記決定するステップに従って前記参照テーブルをアップデートする、
上記各ステップを有することを特徴とする方法。
【請求項１９】
複数個のデータエントリを有しており常にそのトップオブスタックを介してデータエントリが出し入れされるスタック、前記複数個のデータエントリと複数個の仮想レジスタ位置とを対応付ける仮想レジスタ、前記トップオブスタック内のデータエントリと同一のデータエントリに対応する仮想レジスタ位置を指し示すスタックポインタ、前記複数個のデータエントリに対応する複数個の物理データを有している物理レジスタ、前記仮想レジスタの各データエントリを前記各データエントリに対応する物理データが格納されている前記物理レジスタの格納位置へ参照させるマップを使用して浮動小数点命令を処理する方法において、
命令が浮動小数点交換命令であるか否かを決定し、
前記命令が浮動小数点交換命令である場合には、前記物理レジスタの内容を不変のまま維持しながら、前記スタック、仮想レジスタ及びマップをアップデートさせ、その場合に前記スタック内の一対のデータエントリをスワップさせると共に前記仮想レジスタ内の対応する一対のデータエントリをスワップさせる、
上記各ステップを有することを特徴とする方法。
【請求項２０】
請求項１９において、更に、
前記命令がプッシュ命令であるか否かを決定し、
前記命令がプッシュ命令である場合には、前記マップの内容を維持しながら、前記スタック、スタックポインタ、仮想レジスタ、物理レジスタをアップデートし、
前記命令がポップ命令であるか否かを決定し、
前記命令がポップ命令である場合には前記マップの内容、仮想レジスタ、物理レジスタを維持しながら、前記スタック及びスタックポインタをアップデートし、
前記命令が浮動小数点交換命令、プッシュ命令、ポップ命令のうちの何れでもない場合に前記命令が浮動小数点レジスタ命令であるか否かを決定し、
前記命令が浮動小数点レジスタ命令である場合に前記物理レジスタを参照するために前記マップを使用して前記命令を処理する、
上記各ステップを有することを特徴とする方法。
【請求項２１】
複数個のデータエントリを有しており常にそのトップオブスタックを介してデータエントリが出し入れされるスタック、前記複数個のデータエントリと複数個の仮想レジスタ位置とを対応付ける仮想レジスタ、前記トップオブスタック内のデータエントリと同一のデータエントリに対応する仮想レジスタ位置を指し示すスタックポインタ、前記複数個のデータエントリに対応する複数個の物理データを有している物理レジスタ、前記仮想レジスタの各データエントリを前記各データエントリに対応する物理データが格納されている前記物理レジスタの格納位置へ参照するマップを使用して浮動小数点演算を実行するシステムにおいて、
命令が浮動小数点交換命令であるか否かを決定する手段、
前記命令が浮動小数点交換命令である場合に、前記物理レジスタの内容を不変のまま維持しながら前記スタック、仮想レジスタ、マップをアップデートし、その場合に前記スタック内の一対のデータエントリをスワップさせると共に前記仮想レジスタ内の対応する一対のデータエントリをスワップさせる手段、
を有することを特徴とするシステム。
【請求項２２】
請求項２１において、更に、
前記命令がプッシュ命令であるか否かを決定する手段、
前記命令がプッシュ命令である場合に、前記マップの内容を維持しながら、前記スタック、スタックポインタ、仮想レジスタ、物理レジスタをアップデートする手段、
前記命令がポップ命令であるか否かを決定する手段、
前記命令がポップ命令である場合には、前記マップ、仮想レジスタ、物理レジスタの内容を維持しながら、前記スタック及びスタックポインタをアップデートする手段、
前記命令が浮動小数点交換命令、プッシュ命令、ポップ命令の何れか一つでない場合に前記命令が浮動小数点レジスタ命令であるか否かを決定する手段、
前記命令が浮動小数点レジスタ命令である場合に前記物理レジスタを参照するために前記マップを使用して前記命令を処理する手段、
を有することを特徴とするシステム。
【請求項２３】
複数個のデータエントリを有しており常にそのトップオブスタックを介してデータエントリが出し入れされるスタック、前記複数個のデータエントリと複数個の仮想レジスタ位置とを対応付ける仮想レジスタ、前記トップオブスタック内のデータエントリと同一のデータエントリに対応する仮想レジスタ位置を指し示すスタックポインタ、前記複数個のデータエントリに対応する複数個の物理データを有している物理レジスタ、前記仮想レジスタの各データエントリを前記各データエントリに対応する物理データが格納されている前記物理レジスタの格納位置へマッピングする参照テーブルであってその内容が物理レジスタ番号を有している参照テーブルを使用して、浮動小数点命令を処理する方法において、
フラッシュ信号が発生したか否かを決定し、
命令を解析して前記フラッシュ信号が発生しなかった場合にパーセルを発生し、
前記パーセルが発行されているか否かを決定し、
前記パーセルが発行されている場合に前記参照テーブルをメモリ内の所定の位置に保存し、
前記パーセルが浮動小数点交換命令であるか否かを決定し、
前記パーセルが浮動小数点交換命令である場合に前記参照テーブルをアップデートし、その場合に前記スタック内の一対のデータエントリをスワップさせると共に前記仮想レジスタ内の対応する一対のデータエントリをスワップさせ、一方前記物理レジスタを不変に維持する、
上記各ステップを有することを特徴とする方法。
【請求項２４】
請求項２３において、前記参照テーブルをアップデートするステップが、前記浮動小数点交換命令のオペランドに従って前記参照テーブル内の物理レジスタ番号をスワッピングするステップを包含していることを特徴とする方法。
【請求項２５】
請求項２３において、更に、
前記パーセルが浮動小数点交換命令でない場合に前記パーセルが浮動小数点レジスタを有しているか否かを決定し、
前記アップデートステップをスキップし且つ前記参照テーブルを使用して命令オペランドを獲得する、
上記各ステップを有することを特徴とする方法。
【請求項２６】
複数個のデータエントリと複数個の仮想レジスタ位置とを対応付ける仮想レジスタ、前記複数個のデータエントリに対応する複数個の物理データを有している物理レジスタ、前記仮想レジスタの各データエントリを前記各データエントリに対応する物理データが格納されている前記物理レジスタの格納位置へマッピングする参照テーブルを包含する命令を処理するシステムにおいて、
複数個の命令を発生する命令ユニット、
前記命令ユニットから前記複数個の命令を受取り、前記命令をデコードし且つ命令が二つのオペランドレジスタの内容をスワップするか否かを決定するデコードユニット、
前記参照テーブル及びデコードユニットへ結合されており、前記デコードユニットから受取った各交換命令に対して前記参照テーブルをアップデートし、その場合に前記スタック内の一対のデータエントリをスワップさせると共に前記仮想レジスタ内の対応する一対のデータエントリをスワップさせ、一方前記物理レジスタが各交換命令に対して同一の内容を維持する論理ユニット、
を有することを特徴とするシステム。
【請求項２７】
請求項２６において、更に、前記物理レジスタの内容を観察する一つの態様を示すスタックであって複数個のデータエントリを有しており常にそのトップオブスタックを介してデータエントリが出し入れされるスタック及び前記トップオブスタック内のデータエントリと同一のデータエントリに対応する仮想レジスタ位置を指し示すスタックポインタを有しており、前記仮想レジスタが前記物理レジスタの内容を観察する別の態様を示していることを特徴とするシステム。
【請求項２８】
請求項２６において、前記命令が浮動小数点交換命令を包含していることを特徴とするシステム。
【請求項２９】
請求項２７において、前記命令が整数交換命令を包含していることを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、浮動小数点演算システム及び方法に関するものであって、更に詳細には、プロセサにおける浮動小数点演算システム及び方法に関するものである。本発明は、整数及び浮動小数点演算の両方を包含する広い範囲の適用場面に対して使用することが可能なものであるが、本発明は、特に、浮動小数点演算に対して有用なものであり、その様な場合に特に注意を払って説明する。
【０００２】
【従来の技術】
今日のマイクロプロセサはオンチップ浮動小数点ユニットを使用することにより、数学的演算能力を次世代レベルとさせている。この様なマイクロプロセサは、インテルコーポレーションからのｘ８６ファミリーのプロセサを包含している。命令スケジューリング及びパイプライン型実行などの特徴によって、浮動小数点ユニットは、二つの浮動小数点命令を単一のクロックで実行することが可能である。例えば、該ユニットに組込まれているものは洗練された八段パイプライン構成である。最初の四つの状態は整数パイプラインと類似しており、一方最後の四つの段階は二段浮動小数点実行、丸め、及びレジスタファイルへの結果の書込み、及びエラー報告から構成されている。更に、加算、乗算、除算などの通常の浮動小数点機能はより高速の実行とするためのハードワイヤード構成とされている。
【０００３】
しかしながら、継承されているｘ８６アーキテクチャの特徴のうちの一つは、スタックとしての浮動小数点レジスタの構成であり、それは、直接的なレジスタ参照を行うことが不可能であることを意味している。従って、ほとんどのアクセスは、オペランドとして、トップオブスタック即ちスタックのトップを使用せねばならない。例えば、何れのオペランドもトップオブスタック（ＴＯＳ）、即ちスタックのトップ（上部）にない場合には、最初に、交換演算（処理）を行って、該オペランドのうちの一つをスタックのトップ即ち上部に配置させねばならない。
【０００４】
交換演算（操作）は問題を提起する。なぜならば、ほとんどのその他の命令と異なり、交換演算は２個のレジスタを読取り且つ書込むからである。交換を行うためには、スタックの物理レジスタ内のデータビットを動き回さねばならない。１個のオペランドがスタックのトップにある場合であっても、３個のレジスタの全データビットが移動されねばならず、即ち、トップオブスタックレジスタ、トップオブスタックレジスタと交換されるべきスタックレジスタ、一時レジスタである。一時レジスタの代わりに、二つの位置を同時的に書込む技術を使用することが可能であり、それはレジスタ間での付加的な書込みを必要とする。従って、交換演算において計算は存在しないが、その演算を実施するために二つのクロックが使用される。更に、その演算を完了するためには一時レジスタも必要とされる。従って、交換演算を実行する従来の技術は、時間がかかり過ぎ且つ多数のデータ線を必要としている。
【０００５】
【発明が解決しようとする課題】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、改良した浮動小数点演算システム及び方法を提供することを目的とする。本発明の別の目的とするところは、必要とされるクロック数を減少させ且つ浮動小数点交換演算を簡単化させた浮動小数点演算システム及び方法を提供することである。
【０００６】
【課題を解決するための手段】
本発明によれば、仮想レジスタ、物理レジスタ、該仮想レジスタを該物理レジスタへマッピングする参照テーブルを有する命令を処理するシステムが提供される。該システムは、複数個の命令を発生する命令ユニットと、該命令ユニットからの複数個の命令を受取り、該命令をデコードし且つ命令がオペランドレジスタを一つの位置から別の位置へ移動させるか否かを決定するデコードユニットと、該参照テーブル及びデコードユニットへ結合されており、該デコードユニットから受取った各交換命令に対して該参照テーブルをアップデートさせる論理ユニットとを有しており、該物理レジスタは、各交換命令に対して同一の内容を維持する。
【０００７】
本発明の別の側面によれば、スタック、仮想レジスタ、該仮想レジスタのうちの一つに対してスタックのトップとして指摘するスタックポインタ、物理レジスタ、該仮想レジスタを該物理レジスタへマッピングする参照テーブルを有しており、浮動小数点命令を処理するシステムであって、複数個の命令を発生する命令ユニット、該命令ユニットからの複数個の命令を受取り、該命令をデコードし且つ命令が浮動小数点交換命令を包含する浮動小数点命令を含んでいるか否かを決定するデコードユニット、該参照テーブル及びデコードユニットへ結合されており該デコードユニットから受取った各浮動小数点交換命令に対して該参照テーブルをアップデートさせる論理ユニット、を有しており、該物理レジスタが各浮動小数点交換命令に対して同一の内容を維持するシステムが提供される。
【０００８】
本発明の別の側面によれば、スタック、仮想レジスタ、該仮想レジスタのうちの一つに対してスタックのトップとして指摘するスタックポインタ、物理レジスタ、該仮想レジスタを該物理レジスタへマッピングする参照テーブル、該参照テーブルにおけるエントリが物理レジスタの位置を指摘する参照テーブルを有しており、浮動小数点命令を処理するシステムであって、複数個の命令を発生する命令ユニット、該命令ユニットからの複数個の命令を受取る複数個のデコーダを有しており、該複数個の命令をデコードし且つ該命令のうちの何れか一つが浮動小数点交換命令を包含する浮動小数点命令を含んでいるか否かを決定するデコードユニット、該参照テーブルへ結合されており且つ該デコードユニットにおける該複数個のデコーダへ結合されている複数個の論理装置を包含しており、該デコードユニットからの各浮動小数点交換命令に対してアップデートしたテーブルを発生し、該各浮動小数点交換命令に対する物理レジスタが同一のまま残存する論理ユニット、該論理ユニットからアップデートされたテーブルを受取り且つ該アップデートされたテーブルで該参照テーブルをアップデートする制御ユニット、を有するシステムが提供される。
【０００９】
本発明の別の側面によれば、スタック、仮想レジスタ、該仮想レジスタのうちの一つに対してスタックのトップとして指摘するスタックポインタ、物理レジスタ、該仮想レジスタを該物理レジスタへマッピングする参照テーブルであって該参照テーブルにおけるエントリが物理レジスタの位置を指摘する参照テーブル、を使用して浮動小数点命令を処理する方法において、命令ユニットから命令を発生し、該命令をデコードし且つ該命令がデコードユニットにおける浮動小数点交換命令を包含する浮動小数点命令を含むものであるか否かを決定し、且つ該命令が浮動小数点交換命令である場合に該参照テーブルをアップデートし且つ該物理テーブルの内容を維持する、上記各ステップを有する方法が提供される。
【００１０】
本発明の別の側面によれば、スタック、仮想レジスタ、スタックポインタ、物理レジスタ、該仮想レジスタを該物理レジスタへ参照するマップであって該マップ内のエントリが物理レジスタ位置を指摘するマップ、を使用して浮動小数点命令を処理する方法において、命令が浮動小数点交換命令であるか否かを決定し、該命令が浮動小数点交換命令である場合には該物理レジスタの内容を維持しながら該スタック、仮想レジスタ、マップをアップデートし、該命令がプッシュ命令であるか否かを決定し、該命令がプッシュ命令である場合には該マップの内容を維持しながら、該スタック、スタックポインタ、仮想レジスタ、物理レジスタをアップデートし、該命令がポップ命令であるか否かを決定し、該命令がポップ命令である場合には該マップ、仮想レジスタ、物理レジスタの内容を維持しながら、該スタック及びスタックポインタをアップデートし、該命令が浮動小数点交換命令、プッシュ命令、ポップ命令のうちの何れか一つでない場合に該命令が浮動小数点レジスタ命令であるか否かを決定し、且つ該命令が浮動小数点レジスタ命令である場合に該物理レジスタを参照するための該マップを使用して該命令を処理する、上記各ステップを有する方法が提供される。
【００１１】
本発明の別の側面によれば、スタック、仮想レジスタ、スタックポインタ、物理レジスタ、該仮想レジスタを該物理レジスタへ参照するマップであって該マップ内のエントリが物理レジスタ位置を指摘するマップを使用して、浮動小数点演算を実行するシステムにおいて、命令が浮動小数点交換命令であるか否かを決定する手段、該命令が浮動小数点交換命令である場合に、該物理レジスタの内容を維持しながら、該スタック、仮想レジスタ、マップをアップデートする手段、該命令がプッシュ命令であるか否かを決定する手段、該命令がプッシュ命令である場合に、該マップの内容を維持しながら、該スタック、スタックポインタ、仮想レジスタ、物理レジスタをアップデートする手段、該命令がポップ命令であるか否かを決定する手段、該命令がポップ命令である場合に、該マップ、仮想レジスタ、物理レジスタの内容を維持しながら、該スタック及びスタックポインタをアップデートする手段、該命令が浮動小数点交換命令、プッシュ命令、ポップ命令の何れか一つでない場合に該命令が浮動小数点レジスタ命令であるか否かを決定し、且つ該命令が浮動小数点レジスタ命令である場合に該物理レジスタを参照する該マップを使用して該命令を処理する、システムが提供される。
【００１２】
本発明の別の側面によれば、スタック、仮想レジスタ、該仮想レジスタのうちの一つをスタックのトップとして指摘するスタックポインタ、物理レジスタ、該仮想レジスタを該物理レジスタへマッピングする参照テーブルであって該参照テーブルの内容が物理レジスタ番号を有している参照テーブル、を使用して、浮動小数点命令を処理する方法において、参照テーブルエラー信号が発生したか否かを決定し、該参照テーブルエラー信号が発生しなかった場合に命令を解析してパーセルを発生し、該パーセルが発行されたか否かを決定し、該パーセルが発行されている場合にメモリ内の所定の位置において該参照テーブルを保存し、該パーセルが浮動小数点交換命令であるか否かを決定し、該パーセルが浮動小数点交換命令である場合に、該参照テーブルをアップデートし且つ該物理レジスタを不変のまま維持する、上記各ステップを有する方法が提供される。
【００１３】
本発明の更に別の側面によれば、仮想レジスタ、物理レジスタ、該仮想レジスタを該物理レジスタへマッピングする参照テーブルを有する、命令を処理するシステムにおいて、複数個の命令を発生する命令ユニット、該命令ユニットからの複数個の命令を受取り、該命令をデコードし且つ一つの命令がオペランドレジスタを一つの位置から別の位置へ移動させるか否かを決定するデコードユニット、該参照テーブル及び該デコードユニットへ結合しており、該デコードユニットから受取った各交換命令に対して該参照テーブルをアップデートし、該物理レジスタが該各交換命令に対して同一の内容を維持する論理ユニット、を有するシステムが提供される。
【００１４】
【発明の実施の形態】
図１は一例として本発明に適用することの可能なシステムアーキテクチャを示している。図１のシステムアーキテクチャは、Ｌ１キャッシュ及びＬ２キャッシュの両方へ接続しているバスインターフェース１２へ接続している外部バスを有している。Ｌ１キャッシュは、ブランチターゲットバッファ（ＲＴＢ）１８へ接続している命令キャッシュ１６と、データキャッシュ２２の両方を有している。命令キャッシュ１６はフェッチ／デコードユニット２０へ接続しており、該ユニット２０はイッシュ（ｉｓｓｕｅ）即ち発行ユニット２４へ接続している。発行ユニット２４はメモリ棚２６へ接続すると共に演算論理ユニット（ＡＬＵ）（２８，３０，３２）及び浮動小数点ユニット（ＦＰＵ）（３４，３６）へ接続している。本発明は、就中、システムアーキテクチャのフェッチ／デコードユニット２０及び発行ユニット２４に焦点を当てるものである。
【００１５】
本発明において、浮動小数点命令は、通常、三つのフェーズ、即ちイッシュフェーズ（ｉｓｓｕｅ  ｐｈａｓｅ）即ち発行フェーズ、エクセキュートフェーズ（ｅｘｅｃｕｔｅ  ｐｈａｓｅ）即ち実行フェーズ、リタイヤフェーズ（ｒｅｔｉｒｅ  ｐｈａｓｅ）即ち回収フェーズで処理される。整数命令フローに類似しているこれらのフェーズを包含する浮動小数点命令のフローを図２に示してある。発行フェーズは、命令を「順番」に処理し且つフェッチ（ｆｅｔｃｈ）４２、パース（ｐａｒｓｅ）４４、デコード（ｄｅｃｏｄｅ）４６、スワップ（ｓｗａｐ）４８、発行（ｉｓｓｕｅ）５０を包含している。実行フェーズは、命令を「順番外」に処理し且つスケジュール（ｓｃｈｅｄｕｌｅ）５２、オペランドフェッチ（ｏｐｅｒａｎｄ  ｆｅｔｃｈ）５４、実行（ｅｘｅｃｕｔｅ）５６、棚置き（ｓｈｅｌｖｅ）５８を包含している。回収（ｒｅｔｉｒｅ）フェーズは、命令を「順番」に処理し且つ完了（ｃｏｍｐｌｅｔｅ）６０、回収（ｒｅｔｉｒｅ）６４、検索（ｒｅｔｒｉｅｖｅ）６６、書戻し（ｗｒｉｔｅｂａｃｋ）６８を包含している。これら三つのフェーズの段はパイプラインで処理される。
【００１６】
順番外実行手法及びその他の本発明の関連性のある部分については以下の三つの文献に詳細に記載されており、これらの文献を引用により本明細書に取込む。（１）Ｐｏｐｅｓｃｕ  ｅｔ  ａｌ．米国特許第５，４８７，１５６号「逐次的に割り当てられ且つフェッチした順番で格納される命令の独立的にフェッチし、発行し且つアップデートする演算を有するプロセサアーキテクチャ（ＰＲＯＣＥＳＳＯＲ  ＡＲＣＨＩＴＥＣＴＵＲＥ  ＨＩＶＩＮＧ  ＩＮＤＥＰＥＮＤＥＮＴＬＹ  ＦＥＴＣＨＩＮＧ  ＩＳＳＵＩＮＧ  ＡＮＤ  ＵＰＤＡＴＩＮＧ  ＯＰＥＲＡＴＩＯＮＳ  ＯＦ  ＩＮＳＴＲＵＣＴＩＯＮＳ  ＷＨＩＣＨ  ＡＲＥ  ＳＥＱＵＥＮＴＩＡＬＬＹ  ＡＳＳＩＧＮＥＤ  ＡＮＤ  ＳＴＯＲＥＤ  ＩＮ  ＯＲＤＥＲ  ＦＥＴＣＨＥＤ）」、１９９０年１２月５日、（２）Ｖａｌ  Ｐｏｐｅｓｃｕ  ｅｔ  ａｌ．「メタフローアーキテクチャ（Ｔｈｅ  ＭｅｔａｆｌｏｗＡｒｃｈｉｔｅｃｔｕｒｅ）」、ＩＥＥＥマイクロ、１９９１年６月、（３）Ｇｕｒｉｎｄａｒ  Ｓ．  Ｓｏｈｉ「高性能インタラプト可能マルチ機能ユニットパイプライン型コンピュータ用命令発行論理（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｉｓｓｕｅ  Ｌｏｇｉｃ  ｆｏｒ  Ｈｉｇｈ−Ｐｅｒｆｏｒｍａｎｃｅ，  Ｉｎｔｅｒｒｕｐｔｉｂｌｅ，  Ｍｕｌｔｉｐｌｅ  Ｆｕｎｃｔｉｏｎａｌ  Ｕｎｉｔ，Ｐｉｐｅｌｉｎｅｄ  Ｃｏｍｐｕｔｅｒｓ）」、ＩＥＥＥ・トランズアクションズ・オン・コンピュータズ、Ｖｏｌ．３９、Ｎｏ．３、１９９０年３月。
【００１７】
次に、図２を参照すると、発行フェーズの命令フェッチステージ（段階）期間中に、キャッシュラインが命令キャッシュから命令フェッチバッファ内に読込まれる。命令フェッチ段階はブランチターゲットキャッシュと関連して動作し、それは命令キャッシュからの次のフェッチアドレスを予測する。発行フェーズの命令パース（解析）段階４４は命令のタイプ及びその境界を検知し且つ適宜の命令バイトを命令デコード段階へパスする。命令デコード段階４６において、パース（解析）段階４４からの命令バイトが、例えば、マイクロコントロールＲＯＭに加えて、４個のデコードへ並列的に供給される。これらのデコーダは、例えば、ｘ８６命令バイトを「パーセル（ｐａｒｃｅｌ）」と呼ばれるＲＩＳＣ演算へ翻訳する。次いで、これらのパーセルは命令発行段階へ供給される。しかしながら、パーセルが命令発行段階へ供給される前に、本発明の浮動小数点命令フローが、浮動小数点交換（ＦＸＣＨ）命令をサポートするスワップ段階４８を包含しており、それはデェスティネーション（宛先）の内容をスタックトップレジスタとスワップする。命令発行段階５０は、それがロード／ストア命令である場合には、メモリ棚と並列している命令棚内にその命令を棚置きする。
【００１８】
実行フェーズのスケジュール段階５２において、ＡＬＵ又はＦＰＵがオペランドの入手可能性及びその年代に基づいて命令を選択する。全てのオペランドが使用可能である最も古い命令が最初に選択される。命令が実行のためにスケジュールされた後に、そのオペランドが結果棚か又はセイン（ｓａｎｅ）レジスタファイルの何れかからフェッチされる。結果棚は、その命令をリタイヤ即ち回収させる前に、命令の結果を一時的に格納するメモリ構造である。セインレジスタファイルは、プログラマに対して見ることの可能な物理的レジスタファイルである。図１の例示的なシステムアーキテクチャにおいて示したように、３個のＡＬＵと２個のＦＰＵを包含する５個の実行ユニットが存在している。ＡＬＵ１は全ての演算処理を行うことが可能であり且つＡＬＵ２は乗算及び除算を除く全ての演算処理を行うことが可能である。ＡＬＵ３はメモリ操作に対する間接的処置を解決するために使用され、即ちそれはメモリ操作に対する全てのアドレス計算を行う。ＦＰＵ１は加算、整数から浮動小数点への変換及びその逆、整数への丸め、減算及びマルチメディア命令を扱うことが可能である。ＦＰＵ２は除算、平方根、乗算及び超越関数を扱うことが可能である。従って、クロック毎に、浮動小数点ユニットに対して、最大で２個の浮動小数点命令を発行することが可能である。実行フェーズの最後の段階は棚置き（ｓｈｅｌｖｅ）段階５８である。実行フェーズは順番外で実行されるが、次のフェーズである回収フェーズは順番通りに実行される。従って、棚置き段階５８において、コミットされていない順番外に実行された命令の結果は結果棚内に格納される。結果棚からのデータは従属命令によって使用することが可能である。
【００１９】
回収フェーズは四つの段階、完了（ｃｏｍｐｌｅｔｉｏｎ）、回収（ｒｅｔｉｒｅ）、検索（ｒｅｔｒｉｅｖｅ）、書戻し（ｗｒｉｔｅｂａｃｋ）を包含している。完了フェーズ６０において、命令の完了が検知され且つ回収段階６４がクロックサイクル当たりに回収されるべき命令の数を決定する。命令が回収されると、結果が検索段階６６において結果棚から読取られる。次いで、結果棚からの結果は書戻し段階６８においてプログラマが見ることの可能なレジスタファイルへコミットされる。
【００２０】
本発明は、上述した三つのフェーズのうちで発行フェーズに焦点を当てたものであり、本発明の浮動小数点演算システムについて更に詳細に説明する。
【００２１】
前述した従来技術の箇所において説明したように、従来技術において浮動小数点交換命令が実行される毎に、物理レジスタの実際のデータビットが動き回され、多数のデータ線（ワイヤ）及びクロックを必要としている。この問題を解消するために、本発明は、物理レジスタの位置に対してポイント即ち指摘する浮動小数点交換（ＦＸＣＨ）マップを使用している。従って、多数のデータビットを動かす代わりに、ＦＸＣＨマップのみをシャッフル即ちあちこちと動かすものであり、それは著しく少ない数のクロック及びワイヤを必要とするに過ぎないものである。一例を図６Ａ−６Ｄに示してある。
【００２２】
図６Ａ−６Ｄは８個のエントリを有するスタック、各々がデータを示す８個のエントリを有する仮想レジスタ、番号０乃至７によってアドレスされる８個のデータ格納位置を有する物理レジスタを具備するレジスタファイル、及び各々が物理レジスタ番号を表わす３ビットデータを有する８個のエントリを具備するＦＸＣＨマップを示している。スタックポインタが仮想レジスタのうちの一つに対してトップオブスタック（ＴＯＳ）即ちスタックのトップ（上部）としてポイント即ち指摘する。スタック及び仮想レジスタは物理レジスタではなく、物理レジスタ内のデータの順番を異なる態様で示すものに過ぎない。実際の物理データはＦＸＣＨマップ及び物理レジスタにおいてのみ格納されている。ＦＸＣＨマップは、物理レジスタの８個のレジスタを表わすために３ビットデータを格納している。レジスタ当たり８０ビットより大きなデータを格納することの可能な物理レジスタは、例えばレジスタ、メモリなどの任意の適宜の格納装置とすることが可能である。従来技術では、単に、スタック、物理レジスタ、物理レジスタのうちの一つをトップオブスタック（ＴＯＳ）即ちスタックのトップ（上部）としてポイント即ち指摘するスタックポインタを有するに過ぎず、それを図９Ａ及び９Ｂに示してある。
【００２３】
図６Ａを参照すると、それはレジスタの初期状態を示しており、８個のスタック要素（３００Ａ）が左側においてＳＴ（０）乃至ＳＴ（７）として示してあり、それぞれデータエントリＤ０乃至Ｄ７を有している。８個の仮想レジスタ３０２Ａは、それぞれデータエントリＤ０乃至Ｄ７で示してある。トップオブスタック（ＴＯＳ）３０１は、仮想レジスタのうちの一つをポイント即ち指摘している。この場合には、ＴＯＳ３０１は初期的に仮想レジスタ「０」をポイントしている。８個の物理レジスタ３０６ＡがデータエントリＤ０乃至Ｄ７で示してある。ＦＸＣＨマップ３０４Ａは、仮想レジスタ３０２Ａと物理レジスタ３０６Ａとの間に示されている。ＦＸＣＨマップ３０４Ａは８個のエントリ０−７を有しており、それは仮想レジスタを物理レジスタ位置に対してマッピングしている。従って、初期的には、上述したエントリが仮定される。
【００２４】
浮動小数点交換命令が実行されて、例えば、ＳＴ（０）とＳＴ（３）とを交換即ちスワップする場合には、本発明に従って、レジスタは図６Ｂに示したように変更される。特に、スタック３００Ｂ及び仮想レジスタ３０２Ｂにおいて、Ｄ３とＤ０とがスワップされる。従って、トップオブスタック（ＴＯＳ）３０１は未だに仮想レジスタ「０」をポイントしており、それは今の状態ではＤ３を収容している。物理レジスタ位置「３」をＦＸＣＨマップエントリ番号０に配置させ且つ物理レジスタ位置「０」をＦＸＣＨマップエントリ番号３に配置させることによって、ＦＸＣＨマップ３０４Ｂがアップデート即ち更新される。物理レジスタ３０６Ｂの内容は不変のままである。従って、スタック３００Ｂ、仮想レジスタ３０２Ｂ、ＦＸＣＨマップは変化したが、物理レジスタ３０６Ｂは同一のままである。従って、この命令の後に、トップオブスタックの内容を検索するために、ＦＸＣＨマップを最初にチェックして、どの物理レジスタがアクセスされるべきであるかを決定する。この場合には、ＴＯＳ３０１はＤ３を収容する仮想レジスタ「０」に対してポイント即ち指摘しており且つＦＸＣＨマップの対応するエントリ「０」はＤ３を有するものとして物理レジスタ「３」に対してポイント即ち指摘している。
【００２５】
図６における本発明の実施例を図９Ｂに示した従来技術における例と比較する。図６Ｂ及び９Ｂは、両方共、同一の初期状態（図６Ａ及び９Ａ）から開始した同一の浮動小数点交換命令からの結果を示している。この場合に、図９Ｂの物理レジスタ６０２Ｂ内のデータの順番は図６Ｂの仮想レジスタ３０２Ｂ内のデータの順番と同一であり、且つ両方の例のスタックポインタは同一のレジスタ番号をポイントしている。しかしながら、両者の差は、本発明の仮想レジスタは実際のレジスタではなく、それらは単に物理レジスタの中のデータを観察する一つの態様であり、本発明においては物理レジスタは変化していない。本発明において変化している唯一の物理的なデータはＦＸＣＨマップにおけるものであり、それらは、エントリ当たり単に３個のビットを有するに過ぎず、物理レジスタ内のレジスタ当たり８０個を超えるビットと対比される。本発明の利点は、８０個を超えるビットの代わりに単に３個のビットが移動されるに過ぎないというにおいて明らかである。
【００２６】
図６Ｃは別の浮動小数点交換命令を例示している。この場合には、ＳＴ（０）がＳＴ（６）と交換される。従って、図６Ｂに示したレジスタ状態から継続して、図６Ｃにおけるスタック３００Ｃは、ＳＴ（０）がＤ６を収容し且つＳＴ（６）がＤ３を収容するように変化される。その他のスタックエントリは図６Ｂにおけるものと同一のままである。仮想レジスタ３０２Ｃはスタック３００Ｃと同じに変化され、ＴＯＳ３０１はその内容としてＤ６を有する仮想レジスタ「０」に対してポイントしている。ＦＸＣＨマップ３０４Ｃが再度アップデート即ち更新される。この場合には、ＦＸＣＨマップの０番目の位置（エントリ番号０）がアップデートされて物理レジスタ位置６に対してポイントし且つＦＸＣＨマップの６番目の位置が物理レジスタ位置３に対してポイントすべくアップデートされる。この場合にも、物理レジスタは不変のままである。
【００２７】
図６Ｄは浮動小数点交換命令の更に別の例を示している。この場合には、ＳＴ（０）がＳＴ（１）と交換される。上述した二つのＦＸＣＨの例と同一のステップに従って、スタック３００Ｄ、仮想レジスタ３０２Ｄ、ＦＸＣＨマップ３０４Ｄにおける変化を図６Ｄに示してある。
【００２８】
従って、図６Ａ−６Ｄにおける例に示したように、唯一の物理データの移動はＦＸＣＨマップにおいて発生し、該マップは、本実施例においては、エントリ当たり３個のビットを有するに過ぎず、それはレジスタ当たり８０を超えるビットを移動させることと対比される（少なくとも二つの物理レジスタ又は一時レジスタが使用される場合には３個の物理レジスタを交換を行う場合に必要とされるので１６０を超えるビットの移動が必要となる）。さらなる例については後に説明する。
【００２９】
次に、本発明の具体例について詳細に説明する。図３は、本発明の一実施例を示した概略ブロック図である。図３を参照すると、命令パーサ（ｐａｒｓｅｒ）１０６が命令キャッシュ１０４から一つ又はそれ以上の命令を検索する。命令パーサ１０６は該命令を「パーセル（ｐａｒｃｅｌ）」と呼ばれる４個の個別的なＲＩＳＣ演算（ＲＩＳＣ  ＯＰＳ）に分解する。これら４個のパーセルはパーセルレジスタ（１０８Ａ，１０８Ｂ，１０８Ｃ，１０８Ｄ）内に格納される。各パーセルレジスタはそのパーセルを対応するデコーダ（１１０Ａ，１１０Ｂ，１１０Ｃ，１１０Ｄ）へ送り、そこで、該パーセルはデコードされて、そのパーセルが浮動小数点交換命令を有するものであるか否かを決定し、更に、そのオペランドレジスタを決定する。次いで、デコードされた命令は対応する論理ユニット（１１２Ａ，１１２Ｂ，１１２Ｃ，１１２Ｄ）へ送られる。
【００３０】
該論理ユニットは、更に、トップオブスタック情報を受取り且つ浮動小数点交換命令が処理されるたびにアップデートされる現在又は既存のＦＸＣＨマップを受取る。ＦＸＣＨマップは、命令が浮動小数点レジスタを使用するたびにルックアップテーブルとして使用される。なぜならば、ＦＸＣＨマップは、上述した例において説明したように、どこに物理データが存在するかのキーを保持しているからである。論理ユニットがＦＸＣＨ命令を受取ると、論理ユニットは、単に、ＦＸＣＨマップをアップデートし且つ物理レジスタは変化されることはない。各アップデートされたＦＸＣＨマップは次のパーセルを処理するために次の論理ユニットへ送られる。注意すべきことであるが、論理ユニット１（１１２Ａ）から開始して論理ユニット４（１１２Ｄ）までを全て１クロックにおいて順番に、パーセルレジスタ１−４からの最大４個のパーセルを処理することが可能である。論理ユニット（１１２Ａ，１１２Ｂ，１１２Ｃ，１１２Ｄ）は、更に、浮動小数点交換マップを使用することにより浮動小数点レジスタを具備する命令に対して、正しいオペランドＳＴ（Ｙ）を獲得する。該オペランドは、図３に示したように発行段階である次の段階へ送られる。
【００３１】
論理ユニットの各々からのアップデートされたＦＸＣＨマップ即ち「新しいマップ」及び論理ユニット１（１１２Ａ）前の現在のＦＸＣＨマップがマルチプレクサ１１４へ入力される。マルチプレクサ１１４はマルチプレクサ１１４のセレクタとして作用する発行信号に従って発行された最後のパーセルを処理した論理ユニットの新しいマップを出力する。例えば、パーセルが発行されない場合には、「古いマップ」（論理ユニット１の既存のマップ）が選択され、１個のパーセルのみが発行される場合には、論理ユニット１の新しいマップが選択され、二つのパーセルが発行される場合には、論理ユニット２の新しいマップが選択される、等々である。注意すべきことであるが、例えば、二つのパーセルが発行され且つ論理ユニット１が浮動小数点交換命令を処理したが論理ユニット２は処理しなかった場合には、論理ユニット２の新しいマップはマルチプレクサ１１４において未だに選択されている。なぜならば、この場合における論理ユニット２の新しいマップは論理ユニット１の新しいマップと同一だからであり、即ち、ＦＸＣＨマップは論理ユニット２内において既存のマップから新しいマップへ変化させていなかったからである。従って、どの論理ユニットも浮動小数点交換命令を受取らなかった場合には、「古い」マップ（論理ユニット１の前）が４個の論理ユニットのうちの各々から出力され且つどの一つ又は複数個のパーセルが発行されたかに拘らずに、該マルチプレクサから出力される。マルチプレクサ１１４が新しいマップを選択すると、それは浮動小数点交換ＦＸＣＨマップレジスタ１０２へ出力され且つ別のマルチプレクサ１２２を介して物理的にアップデートされる。マルチプレクサ１２２は、推測（ｓｐｅｃｕｌａｔｉｖｅ）ユニット１２４からの「フラッシュ信号」に従って、マルチプレクサ１１４からの出力（新しいマップ）とバックアップ状態ＲＡＭ１１６の出力（修復値）との間で選択を行う。
【００３２】
バックアップ状態ＲＡＭ１１６は４個の論理ユニット（１１２Ａ，１１２Ｂ，１１２Ｃ，１１２Ｄ）の各々から既存のＦＸＣＨマップ入力を受取る。これらはマルチプレクサ１１４を参照して上述したのと同様に発行される命令（パーセル）の数に従ってＲＡＭ１１６内に保存される。この場合に、発行用信号は、更に、バックアップ状態ＲＡＭ１１６に対する書込みイネーブル信号としても作用し、従って、どの一つ又はそれ以上のパーセルが発行されるかに依存して、論理ユニットからの対応する既存の一つ又はそれ以上のマップが保存される。バックアップ状態ＲＡＭ内に既存のマップを保存する理由は、「推測実行（ｓｐｅｃｕｌａｔｉｖｅ  ｅｘｅｃｕｔｉｏｎ）」と呼ばれるもののためであり、それは、例えば、上掲した米国特許第５，４８７，１５６号及び「メタフローアーキテクチャ」の文献の両方に詳細に記載されている。
【００３３】
推測実行においては、例えば条件付き分岐命令などの制御依存性に起因するストールをできるだけ多く回避し、候補命令の安定な供給を可能とすることによりパイプラインを満杯状態に維持するものである。これを行うために、ブランチ即ち分岐がＢＴＢ１８（図１参照）によって推測され且つ分岐後の命令が、実際の分岐が行われる前に処理されて、候補命令の安定なプール即ち蓄えを維持する。そうでない場合には、該処理は、分岐命令が処理されるまでストールし、貴重な時間を浪費することとなる。しかしながら、分岐予測を有する発行は、分岐予測が不正確な場合の状態である。従って、誤った分岐後に処理された命令は使用不可能なものとなる。この状態を矯正するために、バックアップ状態ＲＡＭが論理ユニットからの既存のマップを格納し、各既存のマップは該マップを適用することの可能なパーセルの識別（ＩＤ）に対応している。
【００３４】
推測実行からのエラーを解消するための矯正は、好適には、本発明においては、推測ユニット１２４から読取りアドレス（Ｒ）をバックアップ状態ＲＡＭ１１６へ送り且つＩＤ発生器１１８からの書込みアドレス（Ｗ）を送ることによって実行される。ＩＤ発生器は、各パーセルに対して独特のＩＤを発生する。この場合には、ＩＤ発生器１１８は、発行用信号を受取り且つバックアップ状態ＲＡＭ１１６へ書込みアドレスを出力し、それは新しいマップがそのアドレスから開始して連続的に書込まれる箇所の参照アドレスである。ＩＤ発生器については、例えば、上掲した米国特許第５，４８７，１５６号及び「メタフローアーキテクチャ」の文献に詳細に記載されている。
【００３５】
従って、推測ユニット１２４においてエラーが検知される場合には、読取りアドレスがバックアップ状態ＲＡＭ１１６へ送られて、最後に有効なＦＸＣＨマップ即ち「修復値」を探し出し且つフラッシュ信号がマルチプレクサ１２２へ送られる。バックアップ状態ＲＡＭ１１６は該修復値をマルチプレクサ１２２へ出力し、マルチプレクサ１２２はその修復値を浮動小数点交換マップレジスタ１０２へ出力する。
【００３６】
図３における実施例における動作を図４Ａ及び４Ｂのフローチャートを参照して説明する。図４Ａを参照すると、初期化ステップ２０２の後に、フラッシュ信号がステップ２０４において受取られたか否かを決定する。フラッシュ信号が受取られていない場合には、次の命令がステップ２０８においてパース即ち解析される。注意すべきことであるが、ステップ２０６は１クロックにおいて最大で４個のパーセルまで考慮する。ステップ２１０は、問題の命令が２個のパーセルを発生する命令であるか否かを決定する。例えば、命令がオペランドとしてメモリ位置に対する一つの参照とレジスタに対する一つの参照とを有する場合には、同一の命令が二つのパーセルレジスタ内にコピーされる。一つのコピーが該メモリからのロードを取扱い且つ２番目のコピーがロードされた値及び該レジスタに関して動作する。従って、その命令が２個のパーセルを発生するような種類のものでない場合には、その命令はパーサから除去され且つレジスタｉ（ｉ番目の繰返しに依存）をデコードするためにコピーされる（ステップ２１０及び２１６）。しかしながら、その命令が２個のパーセルを発生する場合には、第一のパーセルに対して、その命令はそれをパーサから除去することなしにデコードレジスタｉへコピーする（ステップ２１０，２１２，２１４）。第二パーセルに対しては、その命令はパーサから除去され且つデコードレジスタｉへコピーされる（ステップ２１０，２１２，２１６）。
【００３７】
その命令が適宜のレジスタへコピーされると、一つ又はそれ以上のパーセルがステップ２１８において発行されたか否かが決定される。そうでない場合には、本プロセスは終了する（ステップ２３２）。少なくとも１個のパーセルが発生される場合には、対応する論理ユニットへ入力された既存のマップが位置ＩＤにおいてバックアップ状態ＲＡＭ内に書込まれる（ステップ２１８及び２２０）。
【００３８】
問題のパーセルが２個のレジスタを交換するための交換命令であり且つ好適には、トップオブスタック即ちスタックの上部ＳＴ（０）をＳＴ（ｊ）と交換するための浮動小数点交換命令である場合には、ＦＸＣＨマップがアップデートされる（ステップ２２２及び２２４）。問題のパーセルが浮動小数点交換命令ではない場合には、ＦＸＣＨマップはアップデートされない。しかしながら、問題のパーセルが浮動小数点レジスタを有している場合には、ＦＸＣＨマップを使用して、各オペランドの適宜の物理レジスタ番号を決定する（ステップ２２６及び２２８）。ステップ２２４及び２２８の各々の後に、次のＩＤを使用して次のパーセルが検索される（ステップ２３０）。
【００３９】
ステップ２０４において、フラッシュ信号が発生すると、パーセルＫ（それは、推測ユニットにおけるエラーから発生する第一パーセルである）及び爾後のパーセルがフラッシュ即ち廃棄される（図４Ｂにおけるステップ２３４）。次いで、修復値が位置Ｋにおいてバックアップ状態ＲＡＭから読出され、ＦＸＣＨマップを修復値の内容、即ち、エラーが発生する前のＦＸＣＨマップの内容へ設定する（ステップ２３６及び２３８）。
【００４０】
付加的なサンプル命令を検討する前に、浮動小数点命令におけるレジスタをアップデートする別のプロセスについて図５を参照して説明する。図５は、ＦＸＣＨ，ＰＵＳＨ，ＰＯＰ命令を含む異なるタイプの命令を取扱うためのフローチャートを示している。この場合には、図５のフローチャートは、図４Ａのステップ２２２，２２４，２２６，２２８を置換することが可能である。従って、図４Ａのステップ２２０はステップ２５２へ接続され且つ図５のステップ２７０は図４Ａのステップ２３０へ接続される。
【００４１】
浮動小数点命令のみを考慮すると、問題の命令がＦＸＣＨ命令である場合には、スタック、仮想レジスタ、ＦＸＣＨマップがアップデートされるが、物理レジスタは不変のまま止まる（例えば、図６Ｂ−６Ｄ，７Ｂ，８Ｂ，８Ｅ，８Ｈ参照）（ステップ２５０，２５２，２５４，２５６）。問題の命令がプッシュ（ＰＵＳＨ）命令である場合には、スタック、仮想レジスタ、スタックポインタ、物理レジスタがアップデートされるが、ＦＸＣＨマップは不変のまま止まる（例えば、図７Ａ，８Ｃ，８Ｄ参照）（ステップ２５８及び２６０）。問題の命令がポップ（ＰＯＰ）命令である場合には、スタック及びスタックポインタがアップデートされるが、仮想レジスタ、物理レジスタ、ＦＸＣＨマップは不変のまま止まる（例えば、図７Ｄ及び８Ｆ参照）（ステップ２６２及び２６４）。問題の命令が上述したものの何れでもないが、それが浮動小数点レジスタを包含する場合には、ＦＸＣＨマップを使用して、正しい物理レジスタからオペランドを獲得する（例えば、図７Ｃ及び８Ｇ参照）（ステップ２６６及び２６８）。
【００４２】
次に、本発明に基づく幾つかのさらなるサンプル命令について検討する。図７Ａ−７ＤはＰＵＳＨ，ＦＸＣＨ，ＡＤＤ，ＰＯＰ命令を示しており、且つ図６Ｄに示したレジスタ状態から継続している。図６Ｄのレジスタ状態から開始して、図７Ａは、Ｄ８をスタックのトップ即ち上部へ挿入するためのプッシュ即ちＰＵＳＨ命令に対してアップデートしたレジスタを示している。スタック４００ＡはＳＴ（７）からＤ７を除去し、Ｄ８に対して場所を開ける。スタックポインタはデクリメントし且つ現在はＤ８を収容している仮想レジスタ「７」に対してポイントしている。ＦＸＣＨマップ４０４Ａは変化していないが、物理レジスタ「７」はＤ８へ上書きされている。
【００４３】
図７Ｂはトップオブスタック即ちＳＴ（０）をＳＴ（５）と交換するためのＦＸＣＨ命令に対してアップデートしたレジスタを示している。この命令は、スタック４００Ｂにおいて反映されているように、ＳＴ（０）とＳＴ（５）の内容をスワップする。仮想レジスタ４０２Ｂ内において、仮想レジスタ「７」（ＴＯＳ）と仮想レジスタ「４」（ＳＴ（５））の内容がスワップされている。ＦＸＣＨマップ４０４Ｂもアップデートされており、従ってエントリ４及び７がスワップされて、仮想レジスタ「７」を物理レジスタ「４」へマップし且つ仮想レジスタ「４」を物理レジスタ「７」へマップし、一方物理レジスタ４０６Ｂは不変のまま維持している。
【００４４】
次に、図７Ｃは、トップオブスタック即ちＳＴ（０）の内容をＳＴ（７）の内容と加算させるＡＤＤ命令を示している。ＳＴ（０）の内容はスタック４００Ｃにおいて（Ｄ４＋Ｄ３）へ変化しており且つ仮想レジスタ「７」（ＴＯＳ）の内容も（Ｄ４＋Ｄ３）へ変化している。ＦＸＣＨマップ４０４Ｃは変化していないが、物理レジスタ「４」はこの加算を反映して変化している。図７Ｄは図７ＣにおけるＡＤＤ演算からの加算結果を除去するためのＰＯＰ即ちポップ命令を示している。この場合には、スタック４００Ｄは、ＴＯＳから（Ｄ４＋Ｄ３）を除去することによりＳＴ（７）において空のスロットが形成されていることを示している。スタックポインタ（ＴＯＳ）は仮想レジスタ「７」から仮想レジスタ「０」へ１だけインクリメントされているが、仮想レジスタ４０２Ｄは変化していない。ＰＯＰ命令は、ＦＸＣＨマップ４０４Ｄ又は物理レジスタ４０６Ｄを変化させていない。
【００４５】
従って、図７Ａ−７Ｄの例においては、物理レジスタを変化させた命令は図７Ａ及び７Ｃにおけるプッシュ（ｐｕｓｈ）及び加算（ａｄｄ）命令のみである。ＦＸＣＨもポップ（ＰＯＰ）も何れの命令も物理レジスタを変化させていない。図８Ａ−８ＨはＰＯＰ及びＡＤＤ命令を含むより多様なサンプルを示している。図８Ａは図６Ａ及び７Ａと同様の初期状態を示している。図８ＢはＳＴ（０）とＳＴ（６）とを交換するための別のＦＸＣＨ命令を示している。従って、スタック５００Ｂ、仮想レジスタ５０２Ｂ、ＦＸＣＨマップ５０４Ｂはアップデートされる。図８Ｃ及び８Ｄは図７Ｃ及び７Ｄに類似したＰＵＳＨ命令を示しており、且つその結果が示されている。次に、図８ＥはＳＴ（０）とＳＴ（７）とを交換するためのＦＸＣＨ命令を示している（図８ＤのＰＵＳＨ命令の後）。この場合には、ＴＯＳ５０１は仮想レジスタ「６」にあるので、ＳＴ（７）は仮想レジスタ「５」に位置されている。従って、図８Ｄの仮想レジスタにおけるＤ５及びＤ９は図８Ｅにおいてスワップされる。又、ＦＸＣＨマップ５０４は５と０とをスワッピングすることによって変化される。
【００４６】
図８Ｆは図８Ｅにおけるサンプルから継続するＰＯＰ命令を示している。スタックにおいて、ＰＯＰ命令はトップオブスタック即ちスタックの上部におけるデータを除去し且つ空のスロットが形成される。仮想レジスタにおいては、スタックポインタが仮想レジスタ「６」から「７」へポイントするために１だけインクリメントするが、エントリＤ５は除去されない。又、ＦＸＣＨマップ５０４Ｆ及び物理レジスタ５０６Ｆは変化しない。
【００４７】
図８ＧはＳＴ（２）がトップオブスタックへ加算される場合のＡＤＤ命令を示している。図８Ｆを参照すると、ＳＴ（２）はＤ１の値を有しており且つトップオブスタックはＤ８の値を有している。従って、トップオブスタックは、現在、（Ｄ１＋Ｄ８）を有しており且つＳＴ（２）は同一のまま止まる。このことは、仮想レジスタ５０２Ｆにおいても反映されている。ＦＸＣＨマップ５０４Ｇは変化することがないが、物理レジスタ「７」は新しい番号がエンタされるので（Ｄ１＋Ｄ８）へ変化する。
【００４８】
図８Ｈは、この命令の前に、（Ｄ１＋Ｄ８）を収容するトップオブスタックとＤ９を収容するＳＴ（６）とを交換するための別のＦＸＣＨ命令を示している（図８Ｇ参照）。この命令は、トップオブスタックである仮想レジスタ「７」とトップオブスタックから六つ下側である仮想レジスタ「５」とをスワップさせる。ＦＸＣＨマップ５０４Ｈは、０と７とをスワッピングすることによってアップデートされ、一方物理レジスタは同一のまま止まる。従って、例えば、浮動小数点レジスタＳＴ（６）を必要とする何らかのその後の命令は、正しいオペランドに対し仮想レジスタ「５」を物理レジスタ「７」へマップするＦＸＣＨマップ５０４Ｈを参照する。
【００４９】
従って、本発明によれば、浮動小数点交換演算のために必要とされるクロック数は、仮想レジスタ及び、例えば、アップデートされる８個の物理レジスタ番号を表わす３ビットを含むＦＸＣＨマップ又はルックアップテーブルを使用することによって著しく減少されている。仮想レジスタ（プログラマによって見られる）はＦＸＣＨマップによって物理レジスタに対してマッピングされているので、物理レジスタの実際のデータビットはあちこちと動かす必要はなく、それにより時間が節約され且つ複雑なハードウエア配線は節約される。
【００５０】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。例えば、本発明は、整数交換演算（操作）などのその他の演算即ち処理へ適用することも可能である。
【図面の簡単な説明】
【図１】  本発明において使用するプロセサのシステムアーキテクチャを示した概略ブロック図。
【図２】  浮動小数点演算（操作）の命令の流れを示した概略図。
【図３】  本発明に基づく浮動小数点演算システムの一実施例を示した概略ブロック図。
【図４Ａ】  本発明に基づく浮動小数点演算システムを実施する処理の流れを示したフローチャート。
【図４Ｂ】  本発明に基づく浮動小数点演算システムを実施する処理の流れを示したフローチャート。
【図５】  本発明に基づく浮動小数点演算システムを実施する処理の流れを示したフローチャート。
【図６Ａ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図６Ｂ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図６Ｃ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図６Ｄ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図７Ａ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図７Ｂ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図７Ｃ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図７Ｄ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ａ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ｂ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ｃ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ｄ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ｅ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ｆ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ｇ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図８Ｈ】  本発明に基づく浮動小数点演算の一例を示した概略図。
【図９Ａ】  従来の浮動小数点演算の一例を示した概略図。
【図９Ｂ】  従来の浮動小数点演算の一例を示した概略図。
【符号の説明】
１０  システムアーキテクチャ
１２  バスインターフェース
１６  命令キャッシュ
１８  分岐ターゲットバッファ（ＢＴＢ）
２０  フェッチ／デコードユニット
２２  データキャッシュ
２４  発行ユニット
２６  メモリ棚
２８，３０，３２  演算論理ユニット（ＡＬＵ）
３４，３６  浮動小数点ユニット（ＦＰＵ）
１０２  浮動小数点交換（ＦＸＣＨ）マップレジスタ
１０４  命令キャッシュ
１０６  命令パーサ
１０８  パーセルレジスタ
１１０  デコーダ
１１２  論理ユニット
１１４  マルチプレクサ
１１６  バックアップ状態ＲＡＭ
１２２  マルチプレクサ
１２４  推測ユニット
【図１】
0003841131.tif 000002
【図２】
0003841131.tif 000003
【図３】
0003841131.tif 000004
【図４Ａ】
0003841131.tif 000005
【図４Ｂ】
0003841131.tif 000006
【図５】
0003841131.tif 000007
【図６Ａ】
0003841131.tif 000008
【図６Ｂ】
0003841131.tif 000009
【図６Ｃ】
0003841131.tif 000010
【図６Ｄ】
0003841131.tif 000011
【図７Ａ】
0003841131.tif 000012
【図７Ｂ】
0003841131.tif 000013
【図７Ｃ】
0003841131.tif 000014
【図７Ｄ】
0003841131.tif 000015
【図８Ａ】
0003841131.tif 000016
【図８Ｂ】
0003841131.tif 000017
【図８Ｃ】
0003841131.tif 000018
【図８Ｄ】
0003841131.tif 000019
【図８Ｅ】
0003841131.tif 000020
【図８Ｆ】
0003841131.tif 000021
【図８Ｇ】
0003841131.tif 000022
【図８Ｈ】
0003841131.tif 000023
【図９Ａ】
0003841131.tif 000024
【図９Ｂ】
0003841131.tif 000025