(57)【特許請求の範囲】
【請求項１】
超長命令語（ＶＬＩＷ）プロセッサにおいてサブ命令を効率的にエミュレートする方法であって、
該ＶＬＩＷプロセッサが、ＶＬＩＷプログラム内のＶＬＩＷ命令の実行中に例外状態を受け取ることであって、該例外状態は、対応するビットを対応する例外レジスタにセットし、異なるタイプの例外状態の各々について各例外レジスタ内に異なるビットがあり、該ビットは、優先順位に従って各例外レジスタにおいてマッピングされ、該例外状態は、該ＶＬＩＷ命令内の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とすることを示し、各例外レジスタは、対応する１つのサブ命令を実行する１つのハードウェア機能ユニットに対応する、ことと、
該ＶＬＩＷプロセッサが、該少なくとも１つのサブ命令をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶することと、
該ＶＬＩＷプロセッサが、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を、選択的にハードウェアにおいて実行することと、
該ＶＬＩＷプロセッサが、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせることと、
該ＶＬＩＷプロセッサが、該ＶＬＩＷプログラムの実行を再開することと
を含み、
該ソフトウェアにおいてエミュレートすることは、該例外状態を受け取ることの後に該ＶＬＩＷプロセッサがトラップハンドラーを起動することを含み、
該起動することは、
該ＶＬＩＷプロセッサが、命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）内にイネーブル信号を記憶することであって、該記憶されたイネーブル信号の各々は、該ハードウェア機能ユニットのうちの１つに対応する、ことと、
該ＶＬＩＷプロセッサが、対応するサブ命令が例外状態を引き起こしたことを示す例外レジスタを読み出すことと、
該ＶＬＩＷプロセッサが、該例外状態を引き起こした該サブ命令を優先順位に従ってエミュレートすることと
を含み、
該選択的にハードウェアにおいて実行することは、該記憶されたイネーブル信号に基づいて、該ＩＢＭＲが、該ハードウェア機能ユニットによって該残りのサブ命令が実行されることを可能にすることを含み、該記憶されたイネーブル信号は、エミュレートされていない残りのサブ命令に対応する、方法。
【請求項２】
前記少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートする工程が、
前記ＶＬＩＷプロセッサが、該ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存することと、
該ＶＬＩＷプロセッサが、該ＶＬＩＷプロセッサを特権モードに設定することと、
該ＶＬＩＷプロセッサが、該エミュレーションを行うために前記トラップハンドラーを起動することと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記複数のレジスタからのステートを保存することが、前記ＶＬＩＷプロセッサが、該ステートを該複数のレジスタと同じ半導体チップ上に位置する複数のシャドウレジスタに保存することを含む、請求項２に記載の方法。
【請求項４】
前記残りのサブ命令を選択的にハードウェアにおいて実行する工程が、
前記命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）が、エミュレートされる必要のない残りのサブ命令の実行をイネーブルにすることと、
前記ＶＬＩＷプロセッサが、該イネーブルされた残りのサブ命令のみが実行されるように、前記ＶＬＩＷ命令を実行することと、
該ＶＬＩＷプロセッサが、前記例外状態の処理を進めるために、該ＶＬＩＷ命令が実行された後にトラップを発生することと
を含む、請求項１に記載の方法。
【請求項５】
前記ソフトウェアにおいてエミュレートされる少なくとも１つのサブ命令からの前記記憶された結果を組み合わせる工程が、該少なくとも１つのサブ命令の該結果を、前記ＶＬＩＷプロセッサ内のレジスタファイルへ送信することを含む、請求項１に記載の方法。
【請求項６】
前記少なくとも１つのサブ命令をソフトウェアにおいてエミュレートする工程が、前記残りのサブ命令を選択的にハードウェアにおいて実行する工程の前に起こる、請求項１に記載の方法。
【請求項７】
前記ＶＬＩＷ命令内の各サブ命令が、前記ＶＬＩＷプロセッサ内の演算動作を行う異なったハードウェア機能ユニットを制御する、請求項１に記載の方法。
【請求項８】
前記少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートする工程が、該少なくとも１つのサブ命令に対して例外状態を処理することを含む、請求項１に記載の方法。
【請求項９】
超長命令語（ＶＬＩＷ）プロセッサにおいてサブ命令を効率的にエミュレートする方法であって、
該ＶＬＩＷプロセッサが、ＶＬＩＷプログラム内のＶＬＩＷ命令の実行中に例外状態を受け取ることであって、該例外状態は、対応するビットを対応する例外レジスタにセットし、異なるタイプの例外状態の各々について各例外レジスタ内に異なるビットがあり、該ビットは、優先順位に従って各例外レジスタにおいてマッピングされ、該例外状態は、該ＶＬＩＷ命令内の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とすることを示し、各例外レジスタは、対応する１つのサブ命令を実行する１つのハードウェア機能ユニットに対応する、ことと、
該ＶＬＩＷプロセッサが、該少なくとも１つのサブ命令をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶することと、
該ＶＬＩＷプロセッサが、イネーブル信号のパターンを命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）へ記憶することであって、該命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）の各ビットは、対応するサブ命令がイネーブルされるかを示し、該記憶されたイネーブル信号の各々は、該ハードウェア機能ユニットのうちの１つに対応する、ことと、
該ＶＬＩＷプロセッサが、該命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）からの該イネーブル信号のパターンを、該ＶＬＩＷプロセッサ内のハードウェア機能ユニットへ適用し、該ハードウェア機能ユニットが該イネーブルされたサブ命令のみを実行することと、
該ＶＬＩＷプロセッサが、該イネーブルされた残りのサブ命令のみが実行されるように、該ＶＬＩＷ命令を実行することと、
該ＶＬＩＷプロセッサが、該ＶＬＩＷ命令が該例外状態の処理を進めるために実行された後にトラップを発生することと、
該ＶＬＩＷプロセッサが、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせることと、
該ＶＬＩＷプロセッサが、該ＶＬＩＷプログラムの実行を再開することと
を含み、
該エミュレートする工程が、
該例外状態を受け取ることの後に該ＶＬＩＷプロセッサがトラップハンドラーを起動することであって、該起動することは、該ＶＬＩＷプロセッサが、該命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）内にイネーブル信号を記憶することを含む、ことと、
該ＶＬＩＷプロセッサが、該ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存することと、
該ＶＬＩＷプロセッサが、該ＶＬＩＷプロセッサを特権モードに設定することと、
該ＶＬＩＷプロセッサが、対応するサブ命令が例外状態を引き起こしたことを示す例外レジスタを読み出すことと、
該ＶＬＩＷプロセッサが、該例外状態を引き起こした該サブ命令を優先順位に従ってエミュレートすることと
を含み、
該ＶＬＩＷ命令を実行することは、該記憶されたイネーブル信号に基づいて、該ＩＢＭＲが、該ハードウェア機能ユニットによって該残りのサブ命令が実行されることを可能にすることを含み、該記憶されたイネーブル信号は、エミュレートされていない残りのサブ命令に対応する、方法。
【請求項１０】
超長命令語（ＶＬＩＷ）命令内のサブ命令を効率的にエミュレートする装置であって、
該ＶＬＩＷ命令を含むＶＬＩＷプログラムを実行するＶＬＩＷプロセッサと、
該ＶＬＩＷ命令の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とする場合、該ＶＬＩＷ命令の実行中に例外を発生するように構成される例外発生機構であって、該例外状態は、対応するビットを対応する例外レジスタにセットし、異なるタイプの例外状態の各々について各例外レジスタ内に異なるビットがあり、該ビットは、優先順位に従って各例外レジスタにおいてマッピングされ、各例外レジスタは、対応する１つのサブ命令を実行する１つのハードウェア機能ユニットに対応する、例外発生機構と、
該少なくとも１つのサブ命令をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶するように構成されるエミュレーション機構と、
該ＶＬＩＷプロセッサ内のハードウェア機能ユニットを選択的にイネーブルにし、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を実行するように構成されるイネーブル機構と、
該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせるように構成される組み合わせ機構と
を含み、
該エミュレーション機構は、該例外状態を受け取ることの後にトラップハンドラーを起動することをさらに含み、
該起動することは、
命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）内にイネーブル信号を記憶することであって、該記憶されたイネーブル信号の各々は、該ハードウェア機能ユニットのうちの１つに対応する、ことと、
対応するサブ命令が例外状態を引き起こしたことを示す例外レジスタを読み出すことと、
該例外状態を引き起こした該サブ命令を優先順位に従ってエミュレートすることと
を含み、
該イネーブル機構は、
該記憶されたイネーブル信号に基づいて、該ＩＢＭＲが、該ハードウェア機能ユニットによって該残りのサブ命令が実行されることを可能にすることをさらに含み、該記憶されたイネーブル信号は、エミュレートされていない残りのサブ命令に対応する、装置。
【請求項１１】
前記エミュレーション機構が、
前記ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存し、
該ＶＬＩＷプロセッサを特権モードに設定し、
該エミュレーションを行うために前記トラップハンドラーを起動する、
ようにさらに構成される、請求項１０に記載の装置。
【請求項１２】
前記複数のレジスタと同じ半導体チップ上に位置し、該複数のレジスタからのステート情報を保存する複数のシャドウレジスタをさらに含む、請求項１１に記載の装置。
【請求項１３】
前記ＶＬＩＷ命令が、前記ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を実行した後に、トラップを発生するように構成されるトラップ発生機構をさらに含む、請求項１０に記載の装置。
【請求項１４】
前記組み合わせ機構が、前記ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令の前記結果を、前記ＶＬＩＷプロセッサ内のレジスタファイルへ送信するように構成される、請求項１０に記載の装置。
【請求項１５】
前記ＶＬＩＷ命令内の各サブ命令が、前記ＶＬＩＷプロセッサ内の演算動作を行う異なったハードウェア機能ユニットを制御する、請求項１０に記載の装置。
【請求項１６】
前記エミュレーション機構が、前記少なくとも１つのサブ命令の例外状態を処理するように構成される、請求項１０に記載の装置。
【請求項１７】
超長命令語（ＶＬＩＷ）命令内のサブ命令を効率的にエミュレートする装置であって、
該ＶＬＩＷ命令を含むＶＬＩＷプログラムを実行するＶＬＩＷプロセッサと、
該ＶＬＩＷ命令の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とする場合、該ＶＬＩＷ命令の実行中に例外を発生するように構成される例外発生機構であって、該例外状態は、対応するビットを対応する例外レジスタにセットし、異なるタイプの例外状態の各々について各例外レジスタ内に異なるビットがあり、該ビットは、優先順位に従って各例外レジスタにおいてマッピングされ、各例外レジスタは、対応する１つのサブ命令を実行する１つのハードウェア機能ユニットに対応する、例外発生機構と、
該少なくとも１つのサブ命令をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶するように構成されるエミュレーション機構と、
該ＶＬＩＷプロセッサ内のハードウェア機能ユニットを選択的にイネーブルにし、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令のみを実行するように構成されるイネーブル機構と、
該ＶＬＩＷ命令が、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を実行した後に、トラップを発生するように構成されるトラップ発生機構と、
該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせるように構成される組み合わせ機構と、
を含み、
該エミュレーション機構は、
該ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存し、
該ＶＬＩＷプロセッサを特権モードに設定し、
対応するサブ命令が例外状態を引き起こしたことを示す例外レジスタを読み出し、
該例外状態を引き起こしたサブ命令を優先順位に従ってエミュレートする、
ように構成され、
該エミュレーション機構は、該例外状態を受け取ることの後にトラップハンドラーを起動することをさらに含み、該起動することは、命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）内にイネーブル信号を記憶することを含み、該記憶されたイネーブル信号の各々は、該ハードウェア機能ユニットのうちの１つに対応し、
該イネーブル機構は、
該記憶されたイネーブル信号に基づいて、該ＩＢＭＲが、該ハードウェア機能ユニットによって該残りのサブ命令が実行されることを可能にすることを含み、
該記憶されたイネーブル信号は、エミュレートされていない残りのサブ命令に対応し、
該イネーブル機構は、
イネーブル信号のパターンを該命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）へ記憶するように構成され、該命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）の各ビットは、対応するサブ命令がイネーブルされるかを示し、
該イネーブル機構は、
該命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）からの該イネーブル信号のパターンを、該ＶＬＩＷプロセッサ内の該ハードウェア機能ユニットに適用し、該ハードウェア機能ユニットが該イネーブルされたサブ命令のみを実行するように構成される、装置。
【請求項１８】
超長命令語（ＶＬＩＷ）命令内のサブ命令を効率的にエミュレートするコンピュータシステムであって、
二次的なストレージデバイスと、
該ＶＬＩＷ命令を含むＶＬＩＷプログラムを実行するＶＬＩＷプロセッサと、
該ＶＬＩＷプロセッサ内の例外発生機構であって、該例外発生機構は、該ＶＬＩＷ命令の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とする場合、該ＶＬＩＷ命令の実行中に例外を発生するように構成され、該例外状態は、対応するビットを対応する例外レジスタにセットし、異なるタイプの例外状態の各々について各例外レジスタ内に異なるビットがあり、該ビットは、優先順位に従って各例外レジスタにおいてマッピングされ、各例外レジスタは、対応する１つのサブ命令を実行する１つのハードウェア機能ユニットに対応する、例外発生機構と、
該ＶＬＩＷプロセッサ内のエミュレーション機構であって、該少なくとも１つのサブ命令をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶するように構成されるエミュレーション機構と、
該ＶＬＩＷプロセッサ内のイネーブル機構であって、該ＶＬＩＷプロセッサ内のハードウェア機能ユニットを選択的にイネーブルにし、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令のみを実行するように構成されるイネーブル機構と、
該ＶＬＩＷプロセッサ内の組み合わせ機構であって、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせるように構成される組み合わせ機構と
を含み、
該エミュレーション機構は、該例外状態を受け取ることの後にトラップハンドラーを起動することをさらに含み、
該起動することは、
命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）内にイネーブル信号を記憶することであって、該記憶されたイネーブル信号の各々は、該ハードウェア機能ユニットのうちの１つに対応する、ことと、
対応するサブ命令が例外状態を引き起こしたことを示す例外レジスタを読み出すことと、
該例外状態を引き起こした該サブ命令を優先順位に従ってエミュレートすることと
を含み、
該イネーブル機構は、
該記憶されたイネーブル信号に基づいて、該ＩＢＭＲに、該ハードウェア機能ユニットによって該残りのサブ命令が実行されることを可能にさせるようにさらに構成され、該記憶されたイネーブル信号は、エミュレートされていない残りのサブ命令に対応する、コンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステム内のプロセッサの設計に関する。より具体的には、本発明は、超長命令語（ＶＬＩＷ）プロセッサにおいて、効率的にサブ命令をエミュレートする方法および装置に関する。
【０００２】
【従来の技術】
演算性能を高めるため、プロセッサ設計は超長命令語（ＶＬＩＷ）アーキテクチャへ移行し始めており、このアーキテクチャにおいては、複数の機能ユニットが同時に１つのＶＬＩＷ命令を実行する。ＶＬＩＷ命令は、典型的に個々の機能ユニットについての演算を特定する複数の「サブ命令」で構成される。
【０００３】
ＶＬＩＷアーキテクチャについての１つの問題は、例外状態を処理することであり、この例外状態はハードウェア機能ユニット内で実現されず、代わりにソフトウェアにおいてエミュレートされなければならない場合、あるいはデータ入力のセットのせいでハードウェア機能ユニットが例外を発生する場合（例えば、０状態（ｚｅｒｏ  ｃｏｎｄｉｔｉｏｎ）による除算、またはオーバーフロー状態）に起こる。現在のＶＬＩＷアーキテクチャにおいては、ＶＬＩＷ命令内の１つのサブ命令のみが例外状態を起したとしても、そのＶＬＩＷ命令を構成する全てのサブ命令がソフトウェアにおいてエミュレートされなければならない。このことは、コンピュータシステム性能を深刻に低下させる。
【０００４】
さらには、少数のサブ命令のみが例外状態を起こしたとしても、コンピュータシステムは、全ての可能性のあるサブ命令をエミュレートするコードを供給しなければならなず、これはハードウェア内ですでに実施されたサブ命令をエミュレートするコードの供給を含む。これらのサブ命令全てのための書き込みコードは、多くの問題を生み出す。第１に、ハードウェア内ですでに実現されたサブ命令のために命令を書き込むことは、経費がかかり、かつ時間の浪費である。第２に、エミュレーションの正確性を確実にすることは、より大きな問題となる。ハードウェア内で実施されていない少数のサブ命令がソフトウェア内で正確にエミュレートされることを確実にすることでさえ難しいが、ハードウェア内ですでに実施されたものを含む全てのサブ命令が正確にエミュレートされることを確実にすることは、なおより難しい。さらに、サブ命令をエミュレートする追加ルーチンの供給はより多くのコンピュータメモリを使用し、このことはキャッシュ性能を低下させ得、より頻繁にページフォールトを引き起こし得る。
【０００５】
【発明が解決しようとする課題】
ここで必要されることは、ＶＬＩＷ命令内の少数のサブ命令のみが実際にソフトウェアにおいてエミュレーションを必要とする場合に、そのＶＬＩＷ命令内の全てのサブ命令がソフトウェアにおいてエミュレートされる必要をなくす方法および装置、ならびにオーバーフローのような例外状態を処理する効率的な方法である。
【０００６】
【課題を解決するための手段】
本発明の１つの局面において、超長命令語（ＶＬＩＷ）プロセッサにおいてサブ命令を効率的にエミュレートする方法は、ＶＬＩＷプログラム内のＶＬＩＷ命令の実行中に例外状態を受け取り、該例外状態が該ＶＬＩＷ命令内の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とすることを示す工程と、該少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートする工程であって、該エミュレーションの結果を記憶する、工程と、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を、選択的にハードウェアにおいて実行する工程と、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせる工程と、該ＶＬＩＷプログラムの実行を再開する工程とを含む。
【０００７】
本発明の１つの実施形態によると、前記少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートする工程が、前記ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存する工程と、該ＶＬＩＷプロセッサを特権モードに設定する工程と、該エミュレーションを行うためにトラップハンドラーを起動する工程とを含む。
【０００８】
本発明の１つの実施形態によると、前記複数のレジスタからのステートを保存する工程が、該ステートを該複数のレジスタと同じ半導体チップ上に位置する複数のシャドウレジスタに保存する工程を含む。
【０００９】
本発明の１つの実施形態によると、前記トラップハンドラーを起動する工程が、
前記サブ命令のうちのどれが例外状態を引き起こしたかを示す例外レジスタを読み出す工程と、該例外状態を引き起こした該サブ命令を優先順位に従ってエミュレートする工程とを含む。
【００１０】
本発明の１つの実施形態によると、前記残りのサブ命令を選択的にハードウェアにおいて実行する工程が、エミュレートされる必要のない残りのサブ命令の実行をイネーブルにする工程と、該イネーブルされた残りのサブ命令のみが実行されるように、前記ＶＬＩＷ命令を実行する工程と、前記例外状態の処理を進めるために、該ＶＬＩＷ命令が実行された後にトラップを発生する工程とを含む。
【００１１】
本発明の１つの実施形態によると、前記残りのサブ命令の実行をイネーブルにする工程が、イネーブル信号のパターンをイネーブルレジスタへ記憶し、該イネーブルレジスタの各ビットが、対応するサブ命令がイネーブルされるかを示す工程と、該イネーブルレジスタからの該イネーブル信号のパターンを、前記ＶＬＩＷプロセッサ内のハードウェア機能ユニットへ適用し、該ハードウェア機能ユニットが該イネーブルされたサブ命令のみを実行する工程とを含む。
【００１２】
本発明の１つの実施形態によると、前記ソフトウェアにおいてエミュレートされる少なくとも１つのサブ命令からの、前記記憶された結果を組み合わせる工程が、該少なくとも１つのサブ命令の該結果を、前記ＶＬＩＷプロセッサ内のレジスタファイルへ送信する工程を含む。
【００１３】
本発明の１つの実施形態によると、前記少なくとも１つのサブ命令をソフトウェアにおいてエミュレートする工程が、前記残りのサブ命令を選択的にハードウェアにおいてエミュレートする工程の後に起こる。
【００１４】
本発明の１つの実施形態によると、前記ＶＬＩＷ命令内の各サブ命令が、前記ＶＬＩＷプロセッサ内の演算動作を行うそれぞれのハードウェア機能ユニットを制御する。
【００１５】
本発明の１つの実施形態によると、前記少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートする工程が、該少なくとも１つのサブ命令に対して例外状態を処理する工程を含む。
【００１６】
本発明の別の局面において、超長命令語（ＶＬＩＷ）プロセッサにおいてサブ命令を効率的にエミュレートする方法は、ＶＬＩＷプログラム内のＶＬＩＷ命令の実行中に例外状態を受け取り、該例外状態が該ＶＬＩＷ命令内の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とすることを示す工程と、該少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートする工程であって、該エミュレーションの結果を記憶する、工程と、イネーブル信号のパターンをイネーブルレジスタへ記憶し、該イネーブルレジスタの各ビットが、対応するサブ命令がイネーブルされるかを示す工程と、該イネーブルレジスタからの該イネーブル信号のパターンを、該ＶＬＩＷプロセッサ内のハードウェア機能ユニットへ適用し、該ハードウェア機能ユニットが該イネーブルされたサブ命令のみを実行する工程と、該イネーブルされた残りのサブ命令のみが実行されるように、該ＶＬＩＷ命令を実行する工程と、該ＶＬＩＷ命令が該例外状態の処理を進めるために実行された後にトラップを発生する工程と、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせる工程と、該ＶＬＩＷプログラムの実行を再開する工程とを含み、該エミュレートする工程が、該ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存する工程と、該ＶＬＩＷプロセッサを特権モードに設定する工程と、該サブ命令のうちのどれが該例外状態を引き起こしたかを示す例外レジスタを読み出す工程と、該例外状態を引き起こした該サブ命令を優先順位に従ってエミュレートする工程とを含む。
【００１７】
本発明の１つの実施形態によると、超長命令語（ＶＬＩＷ）プロセッサにおいてサブ命令を効率的にエミュレートする装置は、該ＶＬＩＷ命令を含むＶＬＩＷプログラムを実行するＶＬＩＷプロセッサと、該ＶＬＩＷ命令の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とする場合、該ＶＬＩＷ命令の実行中に例外を発生するように構成される、例外発生機構と、該少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶するように構成される、エミュレーション機構と、該ＶＬＩＷプロセッサ内のハードウェア機能ユニットを選択的にイネーブルにし、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を実行するように構成される、イネーブル機構と、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせるように構成される組み合わせ機構とを含む。
【００１８】
本発明の１つの実施形態によると、前記エミュレーション機構が、前記ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存し、該ＶＬＩＷプロセッサを特権モードに設定し、該エミュレーションを行うためにトラップハンドラーを起動するように構成される。
【００１９】
本発明の１つの実施形態によると、前記複数のレジスタと同じ半導体チップ上に位置し、該複数のレジスタからのステート情報を保存する複数のシャドウレジスタをさらに含む。
【００２０】
本発明の１つの実施形態によると、前記エミュレーション機構が、さらに、前記サブ命令のうちのどれが前記例外状態を引き起こしたかを示す例外レジスタを読み出し、該例外を引き起こしたサブ命令を優先順位に従ってエミュレートする、
ように構成される。
【００２１】
本発明の１つの実施形態によると、前記ＶＬＩＷ命令が、前記ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を実行した後に、トラップを発生するように構成される、トラップ発生機構をさらに含む。
【００２２】
本発明の１つの実施形態によると、前記イネーブル機構が、イネーブル信号のパターンをイネーブルレジスタへ記憶し、該イネーブルレジスタの各ビットが、対応するサブ命令がイネーブルされるかを示し、該イネーブルレジスタからの該イネーブル信号のパターンを、前記ＶＬＩＷプロセッサ内の複数のハードウェア機能ユニットに適用し、該複数のハードウェア機能ユニットが該イネーブルされたサブ命令のみを実行するように構成される。
【００２３】
本発明の１つの実施形態によると、前記組み合わせ機構が、前記ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令の前記結果を、前記ＶＬＩＷプロセッサ内のレジスタファイルへ送信するように構成される。
【００２４】
本発明の１つの実施形態によると、前記ＶＬＩＷ命令内の各サブ命令が、前記ＶＬＩＷプロセッサ内の演算動作を行うそれぞれのハードウェア機能ユニットを制御する。
【００２５】
本発明の１つの実施形態によると、前記エミュレーション機構が、前記少なくとも１つのサブ命令の例外状態を処理するように構成される。
【００２６】
本発明のさらに別の局面において、超長命令語（ＶＬＩＷ）命令内のサブ命令を効率的にエミュレートする装置は、該ＶＬＩＷ命令を含むＶＬＩＷプログラムを実行するＶＬＩＷプロセッサと、該ＶＬＩＷ命令の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とする場合、該ＶＬＩＷ命令の実行中に例外を発生するように構成される、例外発生機構と、該少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶するように構成される、エミュレーション機構と、該ＶＬＩＷプロセッサ内のハードウェア機能ユニットを選択的にイネーブルにし、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令のみを実行するように構成される、イネーブル機構と、該ＶＬＩＷ命令が、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令を実行した後に、トラップを発生するように構成される、トラップ発生機構と、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせる組み合わせ機構とを含み、該エミュレーション機構は、該ＶＬＩＷプロセッサ内の複数のレジスタからのステートを保存し、該ＶＬＩＷプロセッサを特権モードに設定し、該サブ命令のうちのどれが該例外状態を引き起こしたかを示す例外レジスタを読み出し、該例外状態を引き起こしたサブ命令を優先順位に従ってエミュレートするように構成され、該イネーブル機構は、イネーブル信号のパターンをイネーブルレジスタへ記憶し、該イネーブルレジスタの各ビットが、対応するサブ命令がイネーブルされるかを示し、該イネーブルレジスタからの該イネーブル信号のパターンを、該ＶＬＩＷプロセッサ内の該ハードウェア機能ユニットに適用し、該ハードウェア機能ユニットが該イネーブルされたサブ命令のみを実行するように構成される。
【００２７】
本発明のさらに別の局面において、超長命令語（ＶＬＩＷ）命令内のサブ命令を効率的にエミュレートするコンピュータシステムは、二次的なストレージデバイスと、該ＶＬＩＷ命令を含むＶＬＩＷプログラムを実行するＶＬＩＷプロセッサと、該ＶＬＩＷ命令の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とする場合、該ＶＬＩＷ命令の実行中に例外を発生するように構成される、該ＶＬＩＷプロセッサ内の例外発生機構と、該少なくとも１つのサブ命令の少なくとも一部をソフトウェアにおいてエミュレートし、該エミュレーションの結果を記憶するように構成される、該ＶＬＩＷプロセッサ内のエミュレーション機構と、該ＶＬＩＷプロセッサ内のハードウェア機能ユニットを選択的にイネーブルにし、該ＶＬＩＷ命令内の、ソフトウェアにおいてエミュレーションを必要としない残りのサブ命令のみを実行するように構成される、該ＶＬＩＷプロセッサ内のイネーブル機構と、該ソフトウェアにおいてエミュレートされた少なくとも１つのサブ命令からの該記憶された結果を、該ハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせるように構成される、該ＶＬＩＷプロセッサ内の組み合わせ機構とを含む。
【００２８】
本発明の１つの実施形態は、超長命令語（ＶＬＩＷ）プロセッサにおいてサブ命令を効率的にエミュレートするシステムを提供する。このシステムは、ＶＬＩＷプログラム内のＶＬＩＷ命令の実行中に例外状態を受け取ることにより動作する。この例外状態は、ＶＬＩＷ命令内の少なくとも１つのサブ命令がソフトウェアアシスタンスまたはソフトウェアにおいてエミュレーションを必要とすることを示す。この例外状態を処理する際、システムはソフトウェアにおいてエミュレーションを必要とするサブ命令をエミュレートし、その結果を記憶する。システムは、ＶＬＩＷ命令内のいかなる残りのサブ命令（ソフトウェアにおいてエミュレーションを必要としないサブ命令）をもまた、選択的にハードウェアにおいて実行する。システムは、最後にソフトウェアにおいてエミュレートされたサブ命令からの結果をハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせし、ＶＬＩＷプログラムの実行を再開する。
【００２９】
本発明の１つの局面によると、エミュレーションプロセスは、ＶＬＩＷプロセッサ内の複数のレジスタからステートを保存する工程と、ＶＬＩＷプロセッサを特権モードに設定する工程と、エミュレーションを行うトラップハンドラーを起動する工程とを含む。トラップハンドラーを起動する工程は、どのサブ命令が例外状態を引き起こしたかを示す例外レジスタを読み出す工程と、その後優先順位に従って例外状態を引き起こしたサブ命令をエミュレートする工程とを含み得る。
【００３０】
本発明の１つの局面によると、エミュレートされる必要ない残りのサブ命令を選択的にハードウェアにおいて実行する工程は、ハードウェア機能ユニットが残りのサブ命令を実行することをイネーブルにする工程を選択的に含む。これは、イネーブル信号のパターンをイネーブルレジスタへ記憶することにより成し遂げられ得、ここでイネーブルレジスタの各ビットは、対応するサブ命令の対応するハードウェア機能ユニットがイネーブルされるかを示す。このイネーブル信号のパターンは、ＶＬＩＷプロセッサ内のハードウェア機能ユニットに適用され、ハードウェア機能ユニットがイネーブルされたサブ命令のみを実行する。次に、ＶＬＩＷ命令は、残りのサブ命令（ソフトウェアにおいてエミュレートされていないもの）のみがハードウェアにおいて実行されるように、実行される。ＶＬＩＷ命令が実行された後、例外状態の処理を完了するためにトラップが発生する。
【００３１】
【発明の実施の形態】
以下の説明は、当業者が本発明を生産および使用することができるように示されており、特定の用途のコンテクストおよびその要件において提供される。開示される実施形態に対する多様な改変は、当業者にとって明らかであり、本明細書中において定義される基本原理が、本発明の精神および範囲から逸脱することなく他の実施形態および用途に適用され得る。従って、本発明は、示される実施形態に限定されることを意図せず、本明細書中に開示される原理および特徴と一致する最大の範囲が与えられる。
【００３２】
（コンピュータシステム）
図１は、本発明の実施形態によるＶＬＩＷ命令を実行するコンピュータシステムを示す。図１に示すコンピュータシステムは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１５０に接続される半導体チップ１００を含む。ＤＲＡＭ１５０は、半導体チップ１００上に位置するＶＬＩＷプロセッサ１０１により実行されるコードおよびデータを記憶する、任意のタイプのランダムアクセスメモリを含み得る。
【００３３】
半導体チップ１００は、ＶＬＩＷプロセッサ１０１を実現するための回路機構を含む。この回路機構は、命令キャッシュ１０２、整列器（ａｌｉｇｎｅｒ）１０４、命令バッファ１０６、パイプライン制御ユニット１０８、データキャッシュ１３４、およびレジスタファイル１１０、１１２、１１４および１１６を含む。ＶＬＩＷプロセッサ１０１は、付加的に汎用機能ユニット１１８、１２０、１２２および１２４を含む。これらの汎用機能ユニットは、例外レジスタ１２６、１２８、１３０および１３２にそれぞれ接続される。
【００３４】
ＶＬＩＷプロセッサ１０１の動作の間、ＶＬＩＷ命令はＤＲＡＭ１５０から命令キャッシュ１０２へフェッチされる。命令キャッシュ１０２は、ＶＬＩＷ命令を記憶する任意のタイプのキャッシュメモリ（指向性マッピング命令キャッシュまたはセットアソシエイティブ命令キャッシュを含む）を含み得る。ＶＬＩＷ命令は整列器１０４へ送られ、この整列器１０４は命令を命令バッファ１０６へ送る前に整列機能を行う。この整列は、ＶＬＩＷ命令にとって必要であり得る。なぜなら、ＶＬＩＷ命令が命令キャッシュ１０２に起因する場合に、ＶＬＩＷ命令内のサブ命令が適切に整列していないかもしれないためである。整列器１０４は、そのような整列が必要である場合に、サブ命令が整列したままであることを確実にする。
【００３５】
命令バッファ１０６は、複数のＶＬＩＷ命令のためのストレージを含む。各ＶＬＩＷ命令は複数のサブ命令で構成されることを想起されたい。現在実行中のＶＬＩＷ命令のサブ命令は、対応する汎用機能ユニット１１８、１２０、１２２および１２４へ送られる。
【００３６】
汎用機能ユニット１１８、１２０、１２２および１２４は、レジスタファイル１１０、１１２、１１４および１１６からのデータ上で算術動作を行うための回路機構をそれぞれ含む。汎用機能ユニット１１８、１２０、１２２および１２４は、フローティングポイント、固定ポイント、整数および飽和データタイプを含む、多くのデータタイプ上で算術動作を支援する。飽和データタイプは、典型的には制御信号を特定するために用いられる。飽和変数は、最高値よりも上にインクリメントされるときには、その最高値のままとなり、最低値よりも下にデクリメントされるときには、その最低値のままとなる。従って、算術動作中のラップアラウンドにより起こる制御信号における突然のスイングによる問題が避けられる。
【００３７】
汎用機能ユニット１１８、１２０、１２２および１２４は、多くの共通した算術動作およびデータ操作動作（加算、積算およびシフト動作、ならびにビット抽出およびバイトシャッフル動作を含む）を行う。汎用機能ユニット１１８は、汎用機能ユニット１２０、１２２および１２４とは異なることに注目されたい。なぜなら、汎用機能ユニット１１８は付加的に、ロード、記憶および分岐命令を対処し、ＶＬＩＷプロセッサ１０１内のフロー制御およびデータ移動を促進する。
【００３８】
レジスタファイル１１０、１１２、１１４および１１６は、関連付けられた汎用機能ユニット１１８、１２０、１２２および１２４により操作されるデータをそれぞれ含む。多くのレジスタは、レジスタファイル１１０、１１２、１１４および１１６に対してローカルであり、ならびに多くのレジスタが複数のレジスタファイルの間で共有される。本発明の１つの実施形態において、所定のレジスタファイルは、１２８個のビジブルレジスタのうち、９６個の共有レジスタおよび３２個のローカルレジスタを含む。
【００３９】
ＶＬＩＷプログラムにより操作されるデータは、ＤＲＡＭ１５０からデータキャッシュ１３４へ流れる。データキャッシュ１３４は、ＶＬＩＷプロセッサ１０１により実行されるデータを記憶する任意のタイプのキャッシュメモリ（セット連想または指向性マッピングキャッシュメモリを含む）を含み得る。ロード動作中、データはデータキャッシュ１３４からレジスタファイル１１０、１１２、１１４および１１６へ送信される。記憶動作中、データはレジスタファイル１１０、１１２、１１４および１１６からデータキャッシュ１３４へ書き込まれ、最終的にはＤＲＡＭ１５０へ戻る。
【００４０】
図１に示すＶＬＩＷプロセッサ１０１は、パイプラインプロセッサであることに注目されたい。このことは、ＶＬＩＷプログラムの実行中、いかなる所定の時点においても、複数のＶＬＩＷ命令が同時に実行しているように、ＶＬＩＷ命令は段階付けられていることを意味する。
【００４１】
パイプライン実行は、パイプライン制御ユニット１０８により制御される。パイプライン制御ユニット１０８は、ＶＬＩＷプロセッサ１０１を介して命令の移動を制御し、例外状態（例えば、割込みおよびトラップ）を付加的に制御する。このことは、ＶＬＩＷ命令内の少なくとも１つのサブ命令がソフトウェアにおいてエミュレーションを必要とする例外状態を対処する工程を含む。
【００４２】
汎用機能ユニット１１８、１２０、１２２および１２４の１つにおいて例外状態が起こった場合、この例外状態により対応するビットは対応する例外レジスタ１２６、１２８、１３０および１３２の１つにそれぞれセットされる。例外状態の各異なるタイプについて、各例外レジスタ内に異なるビットがあることに注目されたい。例えば、１つの例外状態は、現在のサブ命令がソフトウェアにおいてエミュレーションを必要とすることを示し得、別の例外状態は対応するサブ命令が算術動作中にオーバーフローを引き起こしたことを示し得る。
【００４３】
所定のサブ命令の実行中に、複数の例外状態が起こり得ることにもまた注目されたい。これは、例外レジスタ内の複数のビットが同じサブ命令によりセットされ得ることを意味する。一連のＯＲゲート１３５、１３６、１３８、１４０および１４４は、例外レジスタ１２６、１２８、１３０および１３２の内容を、１つの例外信号１４６へ集めるために用いられ、この例外信号１４６はパイプライン制御ユニット１０８へ送られる。より具体的には、例外レジスタ１２６のビットはＯＲゲート１３５の入力へ送られ、例外レジスタ１２８のビットはＯＲゲート１３６の入力へ送られ、例外レジスタ１３０のビットはＯＲゲート１３８の入力へ送られ、例外レジスタ１３２のビットはＯＲゲート１４０の入力へ送られる。次に、ＯＲゲート１３５、１３６、１３８および１４０の出力はＯＲゲート１４４の入力へ送られる。最後に、ＯＲゲート１４４の出力は例外信号１４６となり、これはパイプライン制御ユニット１０８の入力へ送られる。
【００４４】
例外信号１４６は、例外レジスタ１２６、１２８、１３０および１３２内の任意のビットがアサートされる場合はいつでも、アサートされる。アサートされた例外信号１４６に応答して、パイプライン制御ユニット１０８は例外ハンドリングプロセスを起動する。この例外ハンドリングプロセスは、どのタイプの例外が起こったかを決定するために、（中でも特に）例外レジスタ１２６、１２８、１３０および１３２を読み出す工程を含む。
【００４５】
図１に示すＶＬＩＷプロセッサ１０１は単一の半導体チップ上に存在するが、本発明は単一の半導体チップ上に全体的に適合するＶＬＩＷプロセッサに限定されず、むしろ任意のタイプのＶＬＩＷプロセッサに適用され、複数の半導体チップに広がるものにさえも適用される。
【００４６】
（ＶＬＩＷ命令）
図２は、本発明の実施形態による１つのＶＬＩＷ命令２００を示す。ＶＬＩＷ命令２００は、４つのサブ命令２０２、２０４、２０６および２０８を含む。サブ命令２０２は、汎用機能ユニット１１８のロード動作を特定するロードサブ命令である。このロード動作は、データをＤＲＡＭ１５０からレジスタファイル１１０、１１２、１１４および１１６内の少なくとも１つのレジスタへ移動する。サブ命令２０４は、汎用機能ユニット１２０の積算動作を特定する。サブ命令２０６は、汎用機能ユニット１２２の減算動作を特定する。最後に、サブ命令２０８は、汎用機能ユニット１２４の加算動作を特定する。
【００４７】
ＶＬＩＷ命令２００は、４つのサブ命令を含むが、概してＶＬＩＷ命令は任意の数のサブ命令を含み得ることをに注目されたい。
【００４８】
（パイプライン制御ユニット）
図３は、本発明の実施形態よるパイプライン制御ユニット１０８の内部構造の一部を示す。数ある回路機構の中でパイプライン制御ユニット１０８は、命令ブレイクポイントマスクレジスタ３０２およびトラップハンドラー３０４を含む。トラップハンドラー３０４は、ＶＬＩＷ命令の実行中に生じるトラップおよび他の例外状態を対処する回路機構を含む。
【００４９】
トラップハンドラー３０４は、命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）３０２と協調しながら働く。ＩＢＭＲ３０２は、ＶＬＩＷプロセッサ１０１内の汎用機能ユニット１１８、１２０、１２２および１２４の各々に対して、１つのビットを含む。各ビットは、対応する汎用機能ユニットに対してイネーブル信号として働く。従って、ビットがアサートされるとき、対応する機能ユニットはイネーブルされる。図３に示すように、ＩＢＭＲ３０２は、４つのビットを含み、そのうちの３つがアサートされている。これは、対応するＶＬＩＷ命令を実行するとき、４つの汎用機能ユニットの内の３つのみがイネーブルされることを意味する。この選択的イネーブル機構は、図５を参照して以下に説明するように、ソフトウェアにおいてエミュレートされていない命令がハードウェアにおいて実行されることを可能にする。
【００５０】
（シャドウレジスタ）
図４は、本発明の実施形態により、どのようにレジスタファイル１１０がシャドウレジスタ４０２に接続されるかを示す。プロセッサ性能を改善するために、ＶＬＩＷプロセッサ１０１は、レジスタファイル１１０と同じ半導体チップ上に位置するシャドウレジスタ４０２を含む。例外状態の間、レジスタファイル１１０内のレジスタまたはパイプライン制御ユニット１０８内の制御レジスタは、外部メモリ（ＤＲＡＭ１５０）へ保存される代わりに、シャドウレジスタ４０２に一次的に保存されることができる。このことは、例外状態の間のプロセッサ性能を大きく改善することができる。なぜなら、外部メモリへレジスタを保存することは、典型的に多数のクロックサイクルを必要とするためである。
【００５１】
（命令エミュレーションプロセス）
図５は、本発明の実施形態による命令エミュレーションプロセスを示すフローチャートである。ＶＬＩＷプログラムの実行中、ＶＬＩＷ命令が例外状態を発生する（工程５０２）。ＶＬＩＷプロセッサ１０１は、この例外状態を検出し、パイプライン制御ユニット１０８に通知する（工程５０４）。図１に示す本発明の実施形態において、この検出プロセスは、例外レジスタ１２６、１２８、１３０および１３２のうちの少なくとも１つを、起こった例外のタイプを示す値と共にロードする工程を含む。１つよりも多い例外が各機能ユニットに対して同時に起こり得ることに注目されたい。例外レジスタ１２６、１２８、１３０および１３２の内容は、ＯＲゲート１３５、１３６、１３８、１４０および１４４を介して送られ、例外信号１４６を形成し、この例外信号１４６はパイプライン制御ユニット１０８へ送られる。例外信号１４６は、例外レジスタ１２６、１２８、１３０および１３２内で任意のビットがセットされる場合はいつでも、アサートされる。
【００５２】
次に、ＶＬＩＷプロセッサ１０１は、いくつかのレジスタの内容をレジスタファイル１１０、１１２、１１４および１１６に保存する（工程５０６）。本発明の１つ実施形態においては、これはレジスタを外部のメモリへ書き込むことにより成し遂げられる。別の実施形態においては、これはレジスタを図４に示す「シャドウレジスタ」に書き込むことにより成し遂げられる。このことは、レジスタを外部メモリへ書き込むために要する時間を大きく削減できる。
【００５３】
次に、ＶＬＩＷプロセッサ１０１は、特権的モードに設定され、例外状態を処理するためにＶＬＩＷプロセッサ１０１内の全ての内部レジスタにアクセスすることができる（工程５０８）。
【００５４】
システムは、その後トラップハンドラールーチンへ進む（工程５１０）。本発明の１つの実施形態において、これはトラップハンドリングルーチンのアドレスを含むトラップベクトルをルックアップすることにより成し遂げられ、その後そのアドレスへ跳ぶ。この時点で、トラップハンドリングソフトウェアは、パイプライン制御ユニット１０８内のハードウェアから引き継ぐ。このトラップ対処ソフトウェアは、ＶＬＩＷプロセッサ１０１のステートの多くを、最初は外部のメモリへ、またはシャドウレジスタへ記憶し得る。
【００５５】
ＶＬＩＷ命令の例外状態を処理することにより、後の全てのＶＬＩＷ命令はパイプラインからフラッシュされることに注目されたい。従って、例外状態が終了した後、ＶＬＩＷプロセッサ１０１はＶＬＩＷ命令を再ロードしなければならず、例外状態を引き起こしたＶＬＩＷ命令のすぐ後に続く命令から開始する。
【００５６】
トラップハンドリングルーチンは、次に各汎用機能ユニットの例外レジスタを読み出す（工程５１２）。特定のサブ命令が少なくとも１つの例外を引き起こした場合、システムは優先順位に従ってこの例外を処理する（工程５１４）。本発明の１つ実施形態において、サブ命令に関連付けられた汎用機能ユニットの例外レジスタを読み出すこと、ならびに「カウント連続クリアビット」（ＣＣＣＢ）命令を用いて、セットされた例外レジスタ内の最上位ビットを見つけることによりにより成し遂げられる。このプロセスは、例外レジスタ内の各ビットが異なる例外状態に対応するために、最優先順位の例外を識別し、このビットは優先順位に従って例外レジスタへマッピングされる。次に、システムは、その例外状態に対する特定のハンドラーを跳び越す。例えば、例外状態が、サブ命令がソフトウェアにおいてエミュレートされることを必要とする場合、システムはサブ命令をエミュレートするためのコードの一部に跳ぶ。最後に、他の例外がサブ命令のために処理待機中である場合、それらは優先順位に従って処理される。
【００５７】
次に、例外状態の結果は、（もしあるとすれば）外部のメモリへ記憶される（工程５１６）。例えば、例外状態によりサブ命令がエミュレートされる場合、エミュレーション結果は外部のメモリへ書き込まれる。
【００５８】
システムは、次にエミュレートされていない、残り全てのサブ命令についてのイネーブル信号のパターンを、パイプライン制御ユニット１０８内の命令ブレイクポイントマスクレジスタ（ＩＢＭＲ）３０２に記憶する（工程５１８）。ＩＢＭＲ３０２が、システム内の汎用機能ユニット１１８、１２０、１２２および１２４の各々に対するイネーブル信号を含むことを想起されたい。従って、ＩＢＭＲ３０２内のイネーブル信号のパターンを記憶することにより、選択された汎用機能ユニットはイネーブルされる。
【００５９】
次に、システムは例外状態を引き起こしたＶＬＩＷ命令をハードウェアにおいて実行する（工程５２０）。例外状態を引き起こしたサブ命令はイネーブルされないため、ＶＬＩＷ命令は例外状態を発生することなく実行を終了すべきであることに注目されたい。
【００６０】
次に、ＩＢＭＲの少なくとも１つのビットがゼロに等しい場合、トラップはＶＬＩＷ命令の実行後に発生する（逆に、ＩＢＭＲが１１１１に等しくない場合は反対といえる）（工程５２２）。このトラップにより、工程５１６において外部メモリへ記憶された、エミュレートされた結果はメモリから取り出され、レジスタファイル１１０、１１２、１１４および１１６内のそれらの目的位置へ記憶される。
【００６１】
ＶＬＩＷ命令は、ここで首尾よく実行されており、ＶＬＩＷプロセッサ１０１はＶＬＩＷプログラム内の次のＶＬＩＷ命令の実行を開始する。
【００６２】
上記の説明は、ＶＬＩＷプロセッサ１０１により実行される動作について述べていることに注目されたい。これらの動作は、ＶＬＩＷプロセッサ１０１のためのマイクロシーケンサーまたはコントローラの命令のもとで実行され得、これはＶＬＩＷでないプロセッサの場合と言える。このマイクロシーケンサーまたはコントローラは、図１に示す全ての機能要素の動作を調整する。
【００６３】
本発明の１つの実施形態は、超長命令語（ＶＬＩＷ）プロセッサにおいてサブ命令を効率的にエミュレートするシステムを提供する。このシステムは、ＶＬＩＷプログラム内のＶＬＩＷ命令の実行中に例外状態を受け取ることにより動作する。この例外状態は、ＶＬＩＷ命令内の少なくとも１つのサブ命令がソフトウェアアシスタンスまたはソフトウェアにおいてエミュレーションを必要とすることを示す。この例外状態を処理する際、システムはソフトウェアにおいてエミュレーションを必要とするサブ命令をエミュレートし、その結果を記憶する。システムは、ＶＬＩＷ命令内のいかなる残りのサブ命令（ソフトウェアにおいてエミュレーションを必要としないサブ命令）をもまた、選択的にハードウェアにおいて実行する。システムは、最後にソフトウェアにおいてエミュレートされたサブ命令からの結果をハードウェアにおいて実行された残りのサブ命令からの結果と組み合わせし、ＶＬＩＷプログラムの実行を再開する。
【００６４】
上記本発明の実施形態の説明は、例示および説明を目的としてのみ示してきた。この説明は、網羅的であること、あるいは本発明を開示された形態に限定することを意図していない。従って、多様な改変および変更が行われ得ることは、当業者には明らかである。さらに、上記開示は本発明を限定することを意図しない。本発明の範囲は、添付の特許請求の範囲により規定される。
【００６５】
【発明の効果】
本発明によれば、ＶＬＩＷ命令内の少数のサブ命令のみが実際にソフトウェアにおいてエミュレーションを必要とする場合に、そのＶＬＩＷ命令内の全てのサブ命令がソフトウェアにおいてエミュレートされる必要をなくす方法および装置、ならびにオーバーフローのような例外状態を処理する効率的な方法が提供される。
【図面の簡単な説明】
【図１】本発明の実施形態における、ＶＬＩＷ命令を実行するコンピュータシステムを示す。
【図２】本発明の実施形態における、単一のＶＬＩＷ命令を示す。
【図３】本発明の実施形態における、パイプライン制御ユニットの内部構造の一部を示す。
【図４】本発明の実施形態において、どのようにレジスタファイルがシャドウレジスタに接続されるかを示す。
【図５】本発明の実施形態における、命令エミュレーションプロセスを示すフローチャートである。
【符号の説明】
１０１  ＶＬＩＷプロセッサ
１０２  命令キャッシュ
１０８  パイプライン制御ユニット
１１０、１１２，１１４，１１６  レジスタファイル
１１８、１２０、１２２、１２４  汎用機能ユニット
１２６、１２８、１３０、１３２  例外レジスタ
１４６  例外信号
２００  ＶＬＩＷ命令
２０２  サブ命令（ロード）
２０４  サブ命令（乗算）
２０６  サブ命令（減算）
２０８  サブ命令（加算）
３０４  トラップハンドラー
【図１】
0004465081.tif 000002
【図２】
0004465081.tif 000003
【図３】
0004465081.tif 000004
【図４】
0004465081.tif 000005
【図５】
0004465081.tif 000006