(57)【特許請求の範囲】
【請求項１】
複数の命令フィールドを有する長命令語（Very Long Instruction Word：ＶＬＩＷ）を実行するＶＬＩＷプロセッサにおいて、
複数のレジスタファイルと、
この複数のレジスタファイルの中から、長命令語中の各命令フィールドのフィールド番号の第１の所定部分をもとに、その命令フィールドの命令で参照するソースオペランドの読み出しが可能なレジスタファイルを割り当てると共に、前記各命令フィールドのフィールド番号の前記第１の所定部分とは少なくとも一部が異なる第２の所定部分をもとに、その命令フィールドの命令の実行結果の書き込みが可能なレジスタファイルを割り当てる割り当て手段とを具備することを特徴とするＶＬＩＷプロセッサ。
【請求項２】
複数の命令フィールドを有する長命令語（Very Long Instruction Word：ＶＬＩＷ）を実行するＶＬＩＷプロセッサにおいて、
それぞれ固有のレジスタ番号のレジスタの群からなる複数のレジスタファイルと、
長命令語中の各命令フィールドのソースレジスタ指定部の示すレジスタ番号を、その命令フィールドのフィールド番号の第１の所定部分により修飾し、前記各命令フィールドのデスティネーションレジスタ指定部の示すレジスタ番号を、その命令フィールドのフィールド番号の前記第１の所定部分とは少なくとも一部が異なる第２の所定部分により修飾することで、前記複数のレジスタファイルの中から、前記各命令フィールド毎に、その命令フィールドの命令で参照するソースオペランドの読み出しが可能なレジスタファイルを割り当てると共に、その命令フィールドの命令の実行結果の書き込みが可能なレジスタファイルを割り当てる割り当て手段とを具備することを特徴とするＶＬＩＷプロセッサ。
【請求項３】
前記割り当て手段は、前記各命令フィールドのソースレジスタ指定部の示すレジスタ番号の上位に、その命令フィールドのフィールド番号の前記第１の所定部分を付加し、前記各命令フィールドのデスティネーションレジスタ指定部の示すレジスタ番号の上位に、その命令フィールドのフィールド番号の前記第２の所定部分を付加するレジスタ番号修飾を行うことを特徴とする請求項２記載のＶＬＩＷプロセッサ。
【請求項４】
複数の命令フィールドを有する長命令語（Very Long Instruction Word：ＶＬＩＷ）を実行するＶＬＩＷプロセッサにおいて、
長命令語の各命令フィールドにそれぞれ対応して設けられ、対応する命令フィールドの命令の指定する演算を実行する演算器と、
長命令語の各命令フィールドのフィールド番号に対応付けられた複数のレジスタファイルと、
この複数のレジスタファイルの中から、長命令語中の各命令フィールドのフィールド番号の第１の所定部分をもとに、その命令フィールドの命令で参照するソースオペランドの読み出しが可能なレジスタファイルを割り当てると共に、前記各命令フィールドのフィールド番号の前記第１の所定部分とは少なくとも一部が異なる第２の所定部分をもとに、その命令フィールドの命令の実行結果の書き込みが可能なレジスタファイルを割り当てる割り当て手段とを具備し、
前記割り当て手段は、実行すべき長命令語中の各命令フィールドの命令をデコードするデコード手段であって、ソースオペランドを使用する命令の場合には、その命令フィールドのフィールド番号の前記第１の所定部分をもとに決定される前記レジスタファイルからその命令フィールドに対応する前記演算器で用いるソースオペランドの読み出しを行うデコード手段と、前記各演算器にそれぞれ対応して設けられ、対応する演算器の演算結果を、その演算器に対応する命令フィールドのフィールド番号の前記第２の所定部分をもとに決定されるレジスタファイルへの書き込み用に一時保持する複数のバッファ手段とを含むことを特徴とするＶＬＩＷプロセッサ。
【請求項５】
前記割り当て手段は、前記各レジスタファイルにそれぞれ対応して設けられた複数の第１のバイパス回路と、この各第１のバイパスパス回路にそれぞれ対応して設けられた複数の第２のバイパス回路とを更に含んでおり、前記第１のバイパス回路は、当該バイパス回路に対応する前記レジスタファイルから読み出されるソースオペランドを用いる前記各演算器にそれぞれ対応して設けられる複数の第１のマルチプレクサであって、そのソースオペランド及び当該バイパス回路に対応する前記レジスタファイルへの書き込みに用いられる前記各バッファ手段の保持データのうちの１つをソースオペランドとして選択する複数の第１のマルチプレクサから構成され、
前記第２のバイパス回路は、当該バイパス回路に対応する前記第１のバイパス回路内の前記各第１のマルチプレクサにそれぞれ対応して設けられる複数の第２のマルチプレクサであって、その第１のマルチプレクサにより選択されたソースオペランド及びその第１のバイパス回路に対応する前記レジスタファイルへの書き込みに用いられる前記各バッファ手段の保持データのうちの１つをソースオペランドとして選択して対応する前記演算器に出力する複数の第２のマルチプレクサから構成されていることを特徴とする請求項４記載のＶＬＩＷプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の命令フィールドを有する長命令語（Very Long Instruction Word：ＶＬＩＷ）を実行するＶＬＩＷプロセッサに関する。
【０００２】
【従来の技術】
従来より、プロセッサの性能を向上させるために、プロセッサの動作周波数を速くするための試みが行われてきたが、回路の集積度、消費電力、素子のスピードなどから、物理的限界に近づいてきている。そこで今日では、より高速な処理を実現するために、スーパースカラや、長命令語（ＶＬＩＷ）といった複数の命令を同時（並列）に実行するアーキテクチャを採用しているプロセッサが開発され、広く利用されるようになっている。
【０００３】
さて、長命令語を実行するプロセッサ（ＶＬＩＷプロセッサ）では、その長命令語中の各命令（単位命令）で使用可能なレジスタ数を２n とした場合、その命令（命令フィールド）中で１つのレジスタ（デスティネーションレジスタまたはソースレジスタ）を指定するにはｎビットのレジスタ指定部を必要とする。このため、例えば３つのオペランドを扱う命令の例では、図１６（ａ）に示すように、ｎビットのレジスタ指定部を３オペランド分必要とし、１命令全体ではレジスタ指定のために必要なビット数は３ｎビットとなる。
【０００４】
もし、メモリアクセス回数を少なくして高速処理を実現するために、扱えるレジスタ数を２倍の２n+1 個にしようとすると、各命令中のレジスタ指定部（ここでは３つのレジスタ指定部ＯＰ１〜ＯＰ３）のビット数を、図１６（ａ）に示すｎビットから、図１６（ｂ）に示すようにｎ＋１ビットに増やす必要があり、３オペランドの例では、１命令全体で３ビット増やさなければならない。
【０００５】
一方、上記の長命令語を実行するプロセッサ（ＶＬＩＷプロセッサ）で、より高い性能を実現しようとすると、同時実行可能命令（単位命令）数を増やして、並列度を上げる必要がある。並列度を上げるには、長命令語長を伸ばして命令フィールド数を増やせばよい。しかし、長命令語中の命令フィールド数（命令数）を増やすと、一度に（１サイクルで）読み出さなければならないレジスタ数（レジスタファイルのポート数）も増大し、またパイプライン処理に必要なバイパス回路（例えば、演算結果をパイプラインの書き込みステージを経ずに演算器側に導くためのバイパス回路）の規模も大きくなる。このため、ハードウェアの複雑度が増大し、動作周波数を速くするのを妨げる要因となる。
【０００６】
図１７は、このような例を、４命令並列に実行可能なＶＬＩＷプロセッサのパイプライン構成について示す。ここでは、並列実行可能な命令数４に一致する数の２入力１出力の演算器２２１-0〜２２１-3と、その演算器２２１-0〜２２１-3の演算結果を一時保持するバッファ２２２-0〜２２２-3からなるラッチ回路２２２と、このバッファ２２２-0〜２２２-3の出力を演算器２２１-0〜２２１-3の左側入力（Ｌ入力）または右側入力（Ｒ入力）に選択的にバイパスするためのバイパス回路２２３と、並列実行可能な命令数４に一致する数の入力ポート並びにその２倍の数の出力ポートを持つレジスタファイル２２４とが設けられる。
【０００７】
バイパス回路２２３は、演算器２２１-0〜２２１-3の左側入力に対応して設けられたマルチプレクサ（ＭＰＸ）２２３Ｌ0 〜２２３Ｌ3 と、演算器２２１-0〜２２１-3の右側入力に対応して設けられたマルチプレクサ２２３Ｒ0 〜２２３Ｒ3 とから構成される。マルチプレクサ２２３Ｌ0 〜２２３Ｌ3 ，２２３Ｒ0 〜２２３Ｒ3 は、レジスタファイル２２４のそれぞれ異なる出力ポートと１対１で対応しており、対応する出力ポートからの出力及びバッファ２２２-0〜２２２-3の出力の１つを選択して演算器２２１-0〜２２１-3の対応する入力側に出力する。
【０００８】
このように、並列実行可能な命令数が４の場合、バイパス回路を構成するマルチプレクサの数は２×４、各マルチプレクサの入力数は４＋１＝５となる。したがって、バイパス回路内の全マルチプレクサの総入力数、即ちバイパス回路の入力ポート数は５×２×４＝４０となる。
【０００９】
一般に、従来のＶＬＩＷプロセッサでは、実行すべき長命令語の命令フィールド数、即ち同時実行命令数（並列度）がＮの場合、３つのオペランドを扱う命令形式の例では、レジスタファイルのポート数は入力ポートがＮ、出力ポートが２Ｎとなり、バイパス回路のポート数は入力ポートが（Ｎ＋１）×２Ｎ（バイパス回路を構成する２Ｎ個のマルチプレクサの入力数はＮ＋１）、出力ポートが２Ｎとなる。
【００１０】
【発明が解決しようとする課題】
上記したように、従来のＶＬＩＷプロセッサでは、扱えるレジスタ数を増やそうとすると、命令（単位命令）中のレジスタ指定部のビット数を増やさなければならず、長命令語（ＶＬＩＷ）長を伸ばさなければならないという問題があった。
【００１１】
また従来のＶＬＩＷプロセッサでは、高並列度にすると、一度に読み出さなければならないレジスタ数が増加してレジスタファイルのポート数の増加を招き、更にパイプライン処理に必要なバイパス回路の規模が大きくなってハードウェアの複雑度が増大するという問題があった。
【００１２】
本発明は上記事情を考慮してなされたものでその目的は、扱えるレジスタ数が長命令語（ＶＬＩＷ）長を伸ばすことなく増やすことができ、しかもハードウェア構成の複雑化を招かないで済む高性能なＶＬＩＷプロセッサを提供することにある。
【００１３】
【課題を解決するための手段】
本発明は、複数の命令フィールドを有する長命令語（ＶＬＩＷ）を実行するＶＬＩＷプロセッサにおいて、複数のレジスタファイルと、長命令語中の各命令フィールドのフィールド番号の第１の所定部分をもとに、その命令フィールドの命令で参照するソースオペランドの読み出しが可能なレジスタファイルを割り当てると共に、上記各命令フィールドのフィールド番号の上記第１の所定部分とは少なくとも一部が異なる第２の所定部分をもとに、その命令フィールドの命令の実行結果の書き込みが可能なレジスタファイルを割り当てる割り当て手段とを備えたことを特徴とする。また、書き込みが可能なレジスタファイルの割り当てを例にとると、上記第１の所定部分と、各命令フィールドのデスティネーションレジスタ指定部の一部（上位ビット）との連結情報によりレジスタファイルの割り当てを行うことも可能である。更に、上記第１の所定部分と第２の所定部分の一部を重複させることも可能である。
【００１４】
上記複数のレジスタファイル内の各レジスタには、それぞれ固有のレジスタ番号が付けられている。そこで、この固有のレジスタ番号を持つレジスタの指定のためには、長命令語中の各命令フィールドのソースレジスタ指定部の示すレジスタ番号を、その命令フィールドのフィールド番号の上記第１の所定部分により修飾し、上記各命令フィールドのデスティネーションレジスタ指定部の示すレジスタ番号を、その命令フィールドのフィールド番号の前記第１の所定部分とは異なる第２の所定部分により修飾するとよい。また、このレジスタ番号の修飾には、命令フィールドのソースレジスタ指定部の示すレジスタ番号の上位に、その命令フィールドのフィールド番号の第１の所定部分を付加し、各命令フィールドのデスティネーションレジスタ指定部の示すレジスタ番号の上位に、その命令フィールドのフィールド番号の第２の所定部分を付加する方法を適用するとよい。
【００１５】
上記構成のＶＬＩＷプロセッサにおいては、長命令語の各命令フィールド（の命令）のフィールド番号により、その命令フィールドの命令で参照するソースオペランドの読み出しが可能なレジスタファイルと、その命令フィールドの命令の実行結果の書き込みが可能なレジスタファイルとが決められるため、各命令フィールドのレジスタ指定部（ソースレジスタ指定部、デスティネーションレジスタ指定部）では、そのレジスタファイル内のレジスタ位置（相対位置、相対レジスタ番号）を指定するだけでよく、長命令語全体で扱えるレジスタ数を増やしても、命令フィールドのレジスタ指定部の構成ビット数を増やさなくても済む。また、レジスタファイルの決定に、フィールド番号だけでなく、レジスタ指定部の一部（上位ビット）を用いる場合には、命令フィールドのレジスタ指定部の構成ビット数を増やす必要があるが、フィールド番号を利用しない場合に比べれば、増加するビット数は少なくて済む。
【００１６】
しかも上記構成のＶＬＩＷプロセッサにおいては、長命令語の各命令フィールド毎に、ソース指定とデスティネーション指定のそれぞれについて、対象となるレジスタファイルを制限しているため、従来に比べてレジスタファイルの入力ポート数及び出力ポート数を減らすことが可能となる。同様の理由で、バイパス回路についても、入力ポート数及び出力ポート数を減らすことが可能となる。これにより、並列度を上げても（長命令語中の命令フィールド数を増やしても）ハードウェアの複雑度が著しく増大するのを防ぐことができる。
【００１７】
更に、上記構成のＶＬＩＷプロセッサにおいては、長命令語の各命令フィールド毎に使用可能なレジスタファイルを制限していながら、ソース指定では、各命令フィールドのフィールド番号の第１の所定部分を用いたレジスタ修飾が、デスティネーション指定では、この第１の所定部分とは異なる第２の所定部分を用いたレジスタ修飾が適用されることから、ある命令フィールドの命令の演算結果を他の命令フィールドの命令でも参照できる。
【００１８】
このようなＶＬＩＷプロセッサで実行可能なプログラム（オブジェクトプログラム）、即ち長命令語中の各命令フィールドのフィールド番号によるレジスタ番号の修飾により、各命令フィールド毎に（ソース指定とデスティネーション指定のそれぞれについて）使用可能なレジスタファイルを制限することを可能とする命令語形式に従ったオブジェクトプログラムを生成するには、以下に述べる命令スケジュールとレジスタアロケーション（レジスタ割り当て）を行うコンパイル機能を用意すればよい。
【００１９】
例えば、トップダウン方式で命令スケジュールを行う場合には、スケジュールの対象を命令Ｉであるとすると、当該命令Ｉが参照するソースオペランドを定義した命令（が既に配置されている命令フィールド）のフィールド番号を調べて、そのフィールド番号とソースオペランドがマッチしているか否か（３オペランドを扱う命令の例では、２つのソースオペランドを定義した２つの命令のフィールド番号で決まるデスティネーション先としてのレジスタファイルが一致しているか否か）を判断し、マッチしていれば、命令Ｉを、当該レジスタファイル内レジスタがソース指定可能な命令フィールドに配置し、マッチしていなければ、マッチするように、ソースオペランドをレジスタファイル間でコピーするコピー命令を生成して、そのコピー命令を、そのソース先とデスティネーション先で決まる命令フィールドに配置し、しかる後に、コピー命令のコピー先（デスティネーション先）レジスタファイルをソースレジスタファイルとして指定可能な命令フィールドに、命令Ｉを配置する。
【００２０】
また、ボトムアップ方式で命令スケジュールを行う場合には、スケジュールの対象を命令Ｉであるとすると、当該命令Ｉが定義する仮想レジスタ（変数）を使用する全ての命令（が既に配置されている命令フィールド）のフィールド番号を調べ、上記仮想レジスタを使用する命令のフィールド番号で決まるソース指定可能なレジスタファイルが、その命令数に無関係に１つだけである（この状態を、仮想レジスタとフィールド番号がマッチしていると呼ぶ）か否かを判断し、仮想レジスタとフィールド番号がマッチしているならば、ａを使う命令のフィールド番号で決まる命令フィールドに命令Ｉを配置し、マッチしていなければ、ａを使う全ての命令のフィールド番号で決まるレジスタファイルにａが存在するように、ａを目的のレジスタファイルにコピーするコピー命令を生成して、そのコピー命令を、そのソース先とデスティネーション先で決まる命令フィールドに配置し、しかる後に、コピー命令のコピー元レジスタファイルがデスティネーション指定可能な命令フィールドに、命令Ｉを配置する。
【００２１】
以上の命令スケジュール処理を、トップダウン方式の場合であれば始端命令から順に終端命令まで行い、ボトムアップ方式であれば終端命令から始端命令まで行うと、スケジュールされた各命令をスキャンして、各変数（仮想レジスタ）が参照或いは定義される命令のフィールド番号から、全ての変数をレジスタファイル別にクラス分けし、各クラスの各変数について、クラス別に、そのクラスに対応するレジスタファイル内の物理レジスタを割り当てるレジスタアロケーション処理を行えばよい。
【００２２】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
［第１の実施形態］
図１は本発明の第１の実施形態に係るＶＬＩＷプロセッサの概略構成を示すブロック図である。
【００２３】
図１に示すＶＬＩＷプロセッサは、例えば３オペランド命令形式の４つの命令フィールド＃０〜＃３を持つ４並列の長命令語（４並列ＶＬＩＷ）を実行する演算プロセッサであり、命令フェッチ機構１０１、命令デコード機構１０２、パイプラインレジスタ（ＰＲ）１０３〜１０５、演算器１０６-0〜１０６-3、レジスタファイル１０７-0，１０７-1、デコード（Ｄ）ステージのバイパス回路１０８-0，１０８-1、実行（Ｅ）ステージのバイパス回路１０９-0，１０９-1、及びラッチ回路１１０，１１１を備えている。
【００２４】
命令フェッチ機構１０１は、（図示せぬ命令キャッシュ等から）パイプラインで長命令語をフェッチする（読み出す）Ｉステージ（命令フェッチステージ）を司る。
【００２５】
命令デコード機構１０２は、命令フェッチ機構１０１によりフェッチされた長命令語の命令フィールド＃０〜＃３に配置されている各命令（単位命令）をパイプラインで解読するＤステージ（命令デコードステージ）を司る。本実施形態では、３オペランドの命令形式の命令、即ち３つのレジスタ指定部（デスティネーションレジスタ指定部、第１及び第２ソースレジスタ指定部）を持つ命令（例えば演算命令）が用いられる。したがって、命令デコード機構１０２により演算命令がデコードされた場合、そのデコード結果には、演算結果の格納先を示すディスティネーションレジスタ番号（ＯＰ１）、及び演算に使用するソースオペランドが格納されているレジスタを指定する２つのソースレジスタ番号（第１及び第２ソースレジスタ番号ＯＰ２，ＯＰ３）が含まれる。
【００２６】
パイプラインレジスタ１０３は、命令フェッチ機構１０１によりフェッチされた長命令語をＤステージの期間保持しておくのに用いられ、パイプラインレジスタ１０４は、命令デコード機構１０２のデコード結果をＤステージに後続するＥステージ（命令実行ステージ）の期間保持しておくのに用いられ、パイプラインレジスタ１０５は、パイプラインレジスタ１０３の出力をＥステージに後続するＷステージ（書き込みステージ）の期間保持しておくのに用いられる。
【００２７】
演算器１０６-0〜１０６-3は、長命令語中の命令フィールド＃０〜＃３の命令の指示する演算の実行（Ｅステージ）を司る。
レジスタファイル１０７-0（＃０），１０７-1（＃１）は、ＶＬＩＷプロセッサでの演算結果を記憶するための、それぞれ２n 個のレジスタから構成される。レジスタファイル１０７-0内の２n 個のレジスタには、それぞれ０〜２n −１のレジスタ番号が割り当てられ、レジスタファイル１０７-1内の２n 個のレジスタには、それぞれ２n 〜２×２n −１のレジスタ番号、即ち２n 〜２n+1 −１のレジスタ番号が割り当てられている。ここで、レジスタ番号のビット数はｎ＋１ビットであり、最上位ビットにより該当するレジスタが存在するレジスタファイルが指定され（“０”の場合はレジスタファイル１０７-0、“１”の場合はレジスタファイル１０７-1）、残りのｎビット（下位ｎビット）により、そのレジスタファイル内のレジスタ位置が指定される。
【００２８】
一方、図１のＶＬＩＷプロセッサで適用される長命令語中の各命令の３つのレジスタ指定部のビット長はｎビットである。この場合、レジスタ指定部だけでは、レジスタファイル１０７-0，１０７-1により提供される合計２n+1 個のレジスタを指定することはできない。
【００２９】
そこで本実施形態では、以下に述べるように、長命令語の各命令フィールド＃０〜＃３毎（で且つソース指定とデスティネーション指定の別毎）に使用可能なレジスタをレジスタファイル１０７-0または１０７-1の一方に制限し、その命令フィールドの命令中のｎビットの各レジスタ指定部により、その制限されたレジスタファイル内のレジスタ位置（ｎ＋１ビットのレジスタ番号の最上位ビットを除くｎビット）が示される構成とすることにより、レジスタ指定部のビット長がｎビットでありながら、長命令語全体で２n+1 個のレジスタを指定できるようにしている。
【００３０】
まず本実施形態では、命令フィールド＃０，＃１（フィールド番号０，１）の命令の指示する演算に用いるソースオペランドの参照先には、レジスタファイル１０７-0が固定的に割り当てられ、命令フィールド＃２，＃３（フィールド番号２，３）の命令の指示する演算に用いるソースオペランドの参照先には、レジスタファイル１０７-1が固定的に割り当てられる。
【００３１】
また、命令フィールド＃０，＃２（フィールド番号０，２）の命令の指示する演算の実行結果、即ち演算器１０６-0〜１０６-3のうちの演算器１０６-0，１０６-2の演算結果の書き込み先には、レジスタファイル１０７-0が固定的に割り当てられ、命令フィールド＃１，＃３（フィールド番号１，３）の命令の指示する演算の実行結果、即ち演算器１０６-0〜１０６-3のうちの演算器１０６-1，１０６-3の演算結果の書き込み先には、レジスタファイル１０７-1が固定的に割り当てられる。
【００３２】
以上の割り当ては、演算器１０６-0，１０６-2の出力をレジスタファイル１０７-0の入力ポートに、演算器１０６-1，１０６-3の出力をレジスタファイル１０７-0の入力ポートに、それぞれ（ラッチ回路１１１を介して）接続すると共に、レジスタファイル１０７-0の出力ポートを（バイパス回路１０８-0、ラッチ回路１１０、バイパス回路１０９-0を介して）演算器１０６-0，１０６-1の入力側に、レジスタファイル１０７-1の出力ポートを（バイパス回路１０８-1、ラッチ回路１１０、バイパス回路１０９-1を介して）演算器１０６-2，１０６-3の入力側に、それぞれ接続することで実現される。また演算器１０６-0，１０６-2の出力はバイパス回路１０８-0，１０９-0にも接続され、演算器１０６-1，１０６-3の出力はバイパス回路１０８-1，１０９-1にも接続される。
【００３３】
以上の構成により本実施形態では、長命令語中の各命令のｎビットのレジスタ指定部により、レジスタファイル内のレジスタ位置、即ちｎ＋１ビットのレジスタ番号の最上位ビットを除くｎビットが指定され、そのレジスタ位置のレジスタが存在するレジスタファイルの情報（レジスタファイル１０７-0または１０７-1のいずれに存在するかの情報）、即ちｎ＋１ビットのレジスタ番号の最上位ビットは、命令位置（命令フィールド番号）により決定されることになる。
【００３４】
これは、各命令フィールドの３つのレジスタ指定部（デスティネーションレジスタ指定部、第１及び第２ソースレジスタ指定部）で指定されるｎビットのレジスタ番号（ＯＰ１，ＯＰ２，ＯＰ３）を命令位置（命令フィールド番号）により修飾して、ｎ＋１ビットのレジスタ番号として指定することと等価である。
【００３５】
ここでは、長命令語の命令フィールド＃０〜＃３のフィールド番号０（“００”）〜３（“１１”）を２ビット“Ｂ0 Ｂ1 ”で表すと、ビットＢ0 をソースレジスタ番号の修飾（レジスタファイル指定）に、ビットＢ1 をデスティネーションレジスタ番号の修飾（レジスタファイル指定）に用いていることになる。この場合、ソースレジスタとしては、ビットＢ0 が“０”の命令フィールド＃０，＃１ではレジスタファイル１０７-0内のレジスタが、ビットＢ0 が“１”の命令フィールド＃２，＃３ではレジスタファイル１０７-1内のレジスタが指定される。一方、デスティネーションレジスタとしては、ビットＢ1 が“０”の命令フィールド＃０，＃２ではレジスタファイル１０７-0内のレジスタが、ビットＢ1 が“１”の命令フィールド＃１，＃３ではレジスタファイル１０７-1内のレジスタが指定される。
【００３６】
レジスタファイル１０７-0は、並列実行可能な命令数４の半分である２つの入力ポートと、入力ポート数の２倍の４つの出力ポート（Ｐ00，Ｐ01，Ｐ02，Ｐ03）とを持つ。レジスタファイル１０７-1もまた、並列実行可能な命令数４の半分である２つの入力ポートと、入力ポート数の２倍の４つの出力ポート（Ｐ10，Ｐ11，Ｐ12，Ｐ13）とを持つ。
【００３７】
バイパス回路１０８-0はＤステージに対応するもので、演算器１０６-0，１０６-1での演算（命令フィールド＃０，＃１の命令の指示する演算）に用いられる４つのソースオペランドとして、基本的には命令フィールド＃０，＃１の命令中の各ソースレジスタ指定部の示すレジスタファイル１０７-0内のレジスタから読み出されるデータを選択する。但し、ソースレジスタが演算器１０６-0または１０６-2の演算結果の格納先レジスタ（デスティネーションレジスタ）に一致するものについては、バイパス回路１０８-0は、そのレジスタのデータではなくて、その演算結果、即ち２サイクル前の命令の演算結果を選択するＤステージバイパスを行う。
【００３８】
バイパス回路１０８-1もバイパス回路１０８-0と同様にＤステージに対応するもので、演算器１０６-2，１０６-3での演算（命令フィールド＃２，＃３の命令の指示する演算）に用いられる４つのソースオペランドとして、基本的には命令フィールド＃２，＃３の命令中の各ソースレジスタ指定部の示すレジスタファイル１０７-1内のレジスタから読み出されるデータを選択する。但し、ソースレジスタが演算器１０６-1または１０６-3の演算結果の格納先レジスタ（デスティネーションレジスタ）に一致するものについては、バイパス回路１０８-1は、そのレジスタのデータではなくて、その演算結果、即ち２サイクル前の命令の演算結果を選択するＤステージバイパスを行う。
【００３９】
バイパス回路１０９-0はＥステージに対応するもので、演算器１０６-0，１０６-1での演算（命令フィールド＃０，＃１の命令の指示する演算）に用いられる４つのソースオペランドとして、基本的にはバイパス回路１０８-0からラッチ回路１１０を介して導かれるデータを選択する。但し、命令フィールド＃０，＃１の命令中の各ソースレジスタ指定部の示すソースレジスタのうち、演算器１０６-0または１０６-2の演算結果の格納先レジスタ（デスティネーションレジスタ）に一致するものについては、バイパス回路１０９-0は、そのレジスタのデータ（バイパス回路１０８-0からラッチ回路１１０を介して導かれるデータ）ではなくて、その演算結果、即ち１サイクル前（直前）の命令の演算結果を選択するＥステージバイパスを行う。
【００４０】
バイパス回路１０９-1もバイパス回路１０９-0と同様にＥステージに対応するもので、演算器１０６-2，１０６-3での演算（命令フィールド＃２，＃３の命令の指示する演算）に用いられる４つのソースオペランドとして、基本的にはバイパス回路１０８-1からラッチ回路１１０を介して導かれるデータを選択する。但し、命令フィールド＃２，＃３の命令中の各ソースレジスタ指定部の示すソースレジスタのうち、演算器１０６-1または１０６-3の演算結果の格納先レジスタ（デスティネーションレジスタ）に一致するものについては、バイパス回路１０９-1は、そのレジスタのデータ（バイパス回路１０８-1からラッチ回路１１０を介して導かれるデータ）ではなくて、その演算結果（１サイクル前の命令の演算結果）を選択するＥステージバイパスを行う。
【００４１】
ラッチ回路１１０は、バイパス回路１０８-0，１０８-1によって選択されたソースオペランドをＥステージの期間保持しておくのに用いられ、ラッチ回路１１１は、バイパス回路１０９-0，１０９-1によって選択されたソースオペランドをＷステージの期間保持しておくのに用いられる。
【００４２】
図２は、バイパス回路１０９-0，１０９-1の内部構成を、その周辺の構成と共に示す。
バイパス回路１０９-0は、演算器１０６-0，１０６-1の左側入力に対応して設けられたマルチプレクサ（ＭＰＸ）１１９Ｌ0 ，１１９Ｌ1 と、演算器１０６-0，１０６-1の右側入力に対応して設けられたマルチプレクサ（ＭＰＸ）１１９Ｒ0 ，１１９Ｒ1 とから構成される。
【００４３】
マルチプレクサ１１９Ｌ0 ，１１９Ｒ0 ，１１９Ｌ1 ，１１９Ｒ1 は、レジスタファイル１０７-0の出力ポートＰ00，Ｐ01，Ｐ02，Ｐ03と１対１で対応しており、対応する出力ポートから読み出されて（図１中のバイパス回路１０８-0、ラッチ回路１１０を介して）導かれるデータ及び（ラッチ回路１１１を介して導かれる）演算器１０６-0，１０６-2の演算結果の１つを選択して演算器１０６-0，１０６-1の対応する入力側に出力する。
【００４４】
バイパス回路１０９-1は、演算器１０６-2，１０６-3の左側入力に対応して設けられたマルチプレクサ（ＭＰＸ）１１９Ｌ2 ，１１９Ｌ3 と、演算器１０６-2，１０６-3の右側入力に対応して設けられたマルチプレクサ（ＭＰＸ）１１９Ｒ2 ，１１９Ｒ3 とから構成される。
【００４５】
マルチプレクサ１１９Ｌ2 ，１１９Ｒ2 ，１１９Ｌ3 ，１１９Ｒ3 は、レジスタファイル１０７-1の出力ポートＰ10，Ｐ11，Ｐ12，Ｐ13と１対１で対応しており、対応する出力ポートから読み出されて（図１中のバイパス回路１０８-1、ラッチ回路１１０を介して）導かれるデータ及び（ラッチ回路１１１を介して導かれる）演算器１０６-1，１０６-3の演算結果の１つを選択して演算器１０６-2，１０６-3の対応する入力側に出力する。
【００４６】
ラッチ回路１１１は、演算器１０６-0〜１０６-3の演算結果をＷステージの期間保持しておくバッファ１１１-0〜１１１-3から構成される。バッファ１１１-0，１１１-2の保持データはレジスタファイル１０７-0への書き込みに用いられ、バッファ１１１-1，１１１-3の保持データはレジスタファイル１０７-1への書き込みに用いられる。
【００４７】
なお、図２では、バイパス回路１０８-0，１０８-1及びラッチ回路１１０が省略されているが、そのハードウェア構成は、バイパス回路１０９-0，１０９-1及びラッチ回路１１１と同様である。
【００４８】
次に、図１及び図２の構成における動作を説明する。
図１のＶＬＩＷプロセッサで適用されるパイプラインは、（１）命令フェッチが行われるＩステージ、（２）命令デコードとデコード結果に基づくレジスタ読み出し（ソースオペランド読み出し）が行われるＤステージ、（３）命令実行（演算）が行われるＥステージ、（４）演算結果のレジスタへの書き込みが行われるＷステージ、の４ステージで構成されるものとする。なお、命令デコード及びレジスタ読み出しや、レジスタ書き込みに２ステージを必要とする、５ステージや６ステージで構成されるパイプラインもある。
【００４９】
まず、Ｉステージでは、命令フェッチ機構１０１により命令キャッシュ等から長命令語（ＶＬＩＷ）がフェッチされる。この命令フェッチ機構１０１によりフェッチされた長命令語はパイプラインレジスタ１０３に保持され、命令デコード機構１０２によるＤステージでの命令デコードに供される。
【００５０】
このＤステージでは、命令デコード機構１０２によりデコードされた命令フィールド＃ｉ（ｉ＝０〜３）の命令が例えば演算命令の場合には、その命令のフィールド番号（２ビット）を“Ｂ0 Ｂ1 ”とすると、その上位側ビットＢ0 の値で決まるレジスタファイル（Ｂ0 ＝０であればレジスタファイル１０７-0、Ｂ0 ＝１であればレジスタファイル１０７-1）を対象に、その命令の第１及び第２ソースレジスタ指定部で指定される（当該レジスタファイル内の）レジスタからのデータ（ソースオペランド）読み出しが行われる。
【００５１】
したがって、フィールド番号“Ｂ0 Ｂ1 ”中のＢ0 が“０”、即ちフィールド番号が０（“００”），１（“０１”）の命令フィールド＃０，＃１の命令についてはレジスタファイル１０７-0を対象に、Ｂ0 が“１”、即ちフィールド番号が２（“１０”），３（“１１”）の命令フィールド＃２，＃３の命令についてはレジスタファイル１０７-1を対象に、それぞれその命令フィールドの第１及び第２ソースレジスタ指定部で指定される（当該レジスタファイル内の）レジスタからのソースオペランド読み出しが行われる。
【００５２】
このことは、各命令フィールド＃０〜＃３の第１及び第２ソースレジスタ指定部の示すｎビットのレジスタ番号（ＯＰ２，ＯＰ３）の上位に、その命令フィールド＃０〜＃３のフィールド番号“Ｂ0 Ｂ1 ”中のビットＢ0 を付加するレジスタ番号修飾が行われ、そのＢ0 が付加されたｎ＋１ビットのソースレジスタ番号（第１及び第２ソースレジスタ番号）によりソースレジスタが指定されて、そのソースレジスタからのデータ読み出しが行われることと等価である。ここで、ｎ＋１ビットのソースレジスタ番号の最上位ビット、即ちビットＢ0 は“０”でレジスタファイル１０７-0を、“１”でレジスタファイル１０７-1を指定し、当該最上位ビットを除くｎビット、即ちソースレジスタ指定部の示すｎビットは、そのレジスタファイル内のソースレジスタ位置を示す。
【００５３】
なお、本実施形態では、第１ソースレジスタ指定部により、演算器の左側入力用のソースオペランドのレジスタ指定が、第２ソースレジスタ指定部により、演算器の右側入力用のソースオペランドのレジスタ指定が行われるものとする。
【００５４】
以上の命令フィールドのフィールド番号によるソースレジスタ番号の修飾について、主としてフィールド番号が１（“０１”）の命令フィールド＃１を例に、後述するデスティネーションレジスタ番号の修飾と共に図３に示す。このレジスタ番号修飾により、命令中のソースレジスタ指定部がｎビット長であっても、長命令語全体で２n+1 個のレジスタを扱うことができる。
【００５５】
さて、命令フィールド＃０，＃１の命令の第１ソースレジスタ指定部で指定された（レジスタファイル１０７-0内の）レジスタからの読み出しデータは、演算器１０６-0，１０６-1の左側入力に対応するレジスタファイル１０７-0の出力ポートＰ00，Ｐ02から、第２ソースレジスタ指定部で指定された（レジスタファイル１０７-0内の）レジスタからの読み出しデータは、演算器１０６-0，１０６-1の右側入力に対応するレジスタファイル１０７-0の出力ポートＰ01，Ｐ03から、それぞれ出力されてバイパス回路１０８-0の対応する入力ポートに導かれる。
【００５６】
同様に、命令フィールド＃２，＃３の命令の第１ソースレジスタ指定部で指定された（レジスタファイル１０７-1内の）レジスタからの読み出しデータは、演算器１０６-2，１０６-3の左側入力に対応するレジスタファイル１０７-1の出力ポートＰ10，Ｐ12から、第２ソースレジスタ指定部で指定された（レジスタファイル１０７-1内の）レジスタからの読み出しデータは、演算器１０６-2，１０６-3の右側入力に対応するレジスタファイル１０７-1の出力ポートＰ11，Ｐ13から、それぞれ出力されてバイパス回路１０８-1の対応する入力ポートに導かれる。
【００５７】
バイパス回路１０８-0には、命令デコード機構１０２によりデコードされた現在Ｄステージにある長命令語中のデコード結果のうちの命令フィールド＃０，＃１の第１及び第２ソースレジスタ指定部のデコード結果、即ち第１及び第２ソースレジスタ番号（の下位ｎ−１ビット）と、パイプラインレジスタ１０５に保持されている現在Ｗステージにある長命令語中のデコード結果のうちの命令フィールド＃０，＃２のデスティネーションレジスタ指定部のデコード結果、即ちデスティネーションレジスタ番号（の下位ｎ−１ビット）とが導かれる。
【００５８】
一方、バイパス回路１０８-1には、命令デコード機構１０２によりデコードされた現在Ｄステージにある長命令語中のデコード結果のうちの命令フィールド＃２，＃３の第１及び第２ソースレジスタ指定部のデコード結果、即ち第１及び第２ソースレジスタ番号（の下位ｎ−１ビット）と、パイプラインレジスタ１０５に保持されている現在Ｗステージにある長命令語中のデコード結果のうちの命令フィールド＃１，＃３のデスティネーションレジスタ指定部のデコード結果、即ちデスティネーションレジスタ番号（の下位ｎ−１ビット）とが導かれる。
【００５９】
バイパス回路１０８-0は、Ｄステージにある命令の命令フィールド＃０，＃１で指定される第１及び第２ソースレジスタ番号（の下位ｎ−１ビット）を、Ｗステージにある命令（Ｄステージにある命令より２サイクル前の命令）の命令フィールド＃０，＃２で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）とそれぞれ比較する。
【００６０】
そしてバイパス回路１０８-0は、デスティネーションレジスタ番号に一致していないソースレジスタ番号の指定するソースオペランドとして、レジスタファイル１０７-0内の当該ソースレジスタ番号の指定するレジスタからの読み出しデータを選択する。
【００６１】
またバイパス回路１０８-0は、デスティネーションレジスタ番号に一致しているソースレジスタ番号の指定するソースオペランドとして、（ラッチ回路１１１を介して導かれる）当該デスティネーションレジスタ番号の指定するレジスタへの書き込みに用いられる演算器（演算器１０６-0または１０６-2）の演算結果を選択するＤステージバイパスを行う。もし、このＤステージバイパスが行われないならば、２サイクル前の長命令語（の命令フィールド＃０または＃２）の指定により実行された演算器１０６-0または１０６-2の演算結果がレジスタファイル１０７-0内のデスティネーションレジスタ番号の指定するレジスタに書き込まれるまでは、現在Ｄステージにある命令の長命令語（の命令フィールド＃０または＃１）で指定される当該レジスタからのデータ読み出しを待たなければならず、パイプラインの流れが乱れる。
【００６２】
一方、バイパス回路１０８-1は、Ｄステージにある命令の命令フィールド＃２，＃３で指定される第１及び第２ソースレジスタ番号（の下位ｎ−１ビット）を、Ｗステージにある長命令語（Ｄステージにある長命令語より２サイクル前の長命令語）の命令フィールド＃１，＃３で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）とそれぞれ比較する。
【００６３】
そしてバイパス回路１０８-1は、デスティネーションレジスタ番号に一致していないソースレジスタ番号の指定するソースオペランドとして、レジスタファイル１０７-1内の当該ソースレジスタ番号の指定するレジスタからの読み出しデータを選択する。
【００６４】
またバイパス回路１０８-1は、デスティネーションレジスタ番号に一致しているソースレジスタ番号の指定するソースオペランドとして、（ラッチ回路１１１を介して導かれる）当該デスティネーションレジスタ番号の指定するレジスタへの書き込みに用いられる演算器（演算器１０６-1または１０６-3）の演算結果を選択するＤステージバイパスを行う。
【００６５】
バイパス回路１０８-0により選択された、Ｄステージにある長命令語の命令フィールド＃０，＃１の指定する４つのソースオペランド、及びバイパス回路１０８-1により選択された、Ｄステージにある長命令語の命令フィールド＃２，＃３の指定する４つのソースオペランドは、ラッチ回路１１０に保持されて、Ｅステージの期間、対応するバイパス回路１０９-0，１０９-1に導かれる。
【００６６】
このとき、当該長命令語に対する命令デコード機構１０２でのデコード結果がパイプラインレジスタ１０４に移される。同時に、このパイプラインレジスタ１０４に保持されていた、１サイクル前の長命令語のデコード結果はパイプラインレジスタ１０５に移される。
【００６７】
バイパス回路１０９-0には、パイプラインレジスタ１０４に保持されている現在Ｅステージにある長命令語中のデコード結果のうちの命令フィールド＃０，＃１の第１及び第２ソースレジスタ指定部のデコード結果、即ち第１及び第２ソースレジスタ番号と、パイプラインレジスタ１０５に保持されている現在Ｗステージにある長命令語中のデコード結果のうちの命令フィールド＃０，＃２のデスティネーションレジスタ指定部のデコード結果、即ちデスティネーションレジスタ番号とが導かれる。
【００６８】
一方、バイパス回路１０９-1には、パイプラインレジスタ１０４に保持されている現在Ｅステージにある長命令語中のデコード結果のうちの命令フィールド＃２，＃３の第１及び第２ソースレジスタ指定部のデコード結果、即ち第１及び第２ソースレジスタ番号（の下位ｎ−１ビット）と、パイプラインレジスタ１０５に保持されている現在Ｗステージにある長命令語中のデコード結果のうちの命令フィールド＃１，＃３のデスティネーションレジスタ指定部のデコード結果、即ちデスティネーションレジスタ番号（の下位ｎ−１ビット）とが導かれる。
【００６９】
バイパス回路１０９-0は、Ｅステージにある命令の命令フィールド＃０，＃１で指定される第１及び第２ソースレジスタ番号（の下位ｎ−１ビット）を、Ｗステージにある命令（Ｅステージにある命令の直前の命令）の命令フィールド＃０，＃２で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）とそれぞれ比較する。
【００７０】
そしてバイパス回路１０９-0は、デスティネーションレジスタ番号に一致していないソースレジスタ番号の指定するソースオペランドとして、バイパス回路１０８-0により選択されてラッチ回路１１０を介して導かれる該当するソースオペランドを選択する。
【００７１】
またバイパス回路１０９-0は、デスティネーションレジスタ番号に一致しているソースレジスタ番号の指定するソースオペランドとして、（ラッチ回路１１１を介して導かれる）当該デスティネーションレジスタ番号の指定するレジスタへの書き込みに用いられる演算器（演算器１０６-0または１０６-2）の演算結果を選択するＥステージバイパスを行う。
【００７２】
一方、バイパス回路１０９-1は、Ｅステージにある命令の命令フィールド＃２，＃３で指定される第１及び第２ソースレジスタ番号（の下位ｎ−１ビット）を、Ｗステージにある命令（Ｅステージにある命令の直前の命令）の命令フィールド＃１，＃３で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）とそれぞれ比較する。
【００７３】
そしてバイパス回路１０９-1は、デスティネーションレジスタ番号に一致していないソースレジスタ番号の指定するソースオペランドとして、バイパス回路１０８-1により選択されてラッチ回路１１０を介して導かれる該当するソースオペランドを選択する。
【００７４】
またバイパス回路１０９-1は、デスティネーションレジスタ番号に一致しているソースレジスタ番号の指定するソースオペランドとして、（ラッチ回路１１１を介して導かれる）当該デスティネーションレジスタ番号の指定するレジスタへの書き込みに用いられる演算器（演算器１０６-1または１０６-3）の演算結果を選択するＥステージバイパスを行う。
【００７５】
以上のバイパス回路１０９-0，１０９-1の選択動作の詳細を説明する。
まず、バイパス回路１０９-0内のマルチプレクサ１１９Ｌ0 ，１１９Ｌ1 は、Ｅステージにある命令の命令フィールド＃０，＃１で指定される第１ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃０及び＃２で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）のいずれにも一致していない場合には、バイパス回路１０８-0により演算器１０６-0，１０６-1の左側入力用として選択されてラッチ回路１１０を介して導かれるソースオペランドを選択する。
【００７６】
またマルチプレクサ１１９Ｌ0 ，１１９Ｌ1 は、Ｅステージにある命令の命令フィールド＃０，＃１で指定される第１ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃０で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-0を介して導かれる演算器１０６-0の演算結果を選択し、Ｗステージにある命令の命令フィールド＃２で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-2を介して導かれる演算器１０６-2の演算結果を選択する。
【００７７】
マルチプレクサ１１９Ｌ0 ，１１９Ｌ1 により選択されたデータ（ソースオペランド）は演算器１０６-0，１０６-1の左側入力（Ｌ入力）に供給される。
次に、バイパス回路１０９-0内のマルチプレクサ１１９Ｒ0 ，１１９Ｒ1 は、Ｅステージにある命令の命令フィールド＃０，＃１で指定される第２ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃０及び＃２で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）のいずれにも一致していない場合には、バイパス回路１０８-0により演算器１０６-0，１０６-1の右側入力用として選択されてラッチ回路１１０を介して導かれるソースオペランドを選択する。
【００７８】
またマルチプレクサ１１９Ｒ0 ，１１９Ｒ1 は、Ｅステージにある命令の命令フィールド＃０，＃１で指定される第２ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃０で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-0を介して導かれる演算器１０６-0の演算結果を選択し、Ｗステージにある命令の命令フィールド＃２で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-2を介して導かれる演算器１０６-2の演算結果を選択する。
【００７９】
マルチプレクサ１１９Ｒ0 ，１１９Ｒ1 により選択されたデータ（ソースオペランド）は演算器１０６-0，１０６-1の右側入力（Ｒ入力）に供給される。
一方、バイパス回路１０９-1内のマルチプレクサ１１９Ｌ2 ，１１９Ｌ3 は、Ｅステージにある命令の命令フィールド＃２，＃３で指定される第１ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃１及び＃３で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）のいずれにも一致していない場合には、バイパス回路１０８-1により演算器１０６-2，１０６-3の左側入力用として選択されてラッチ回路１１０を介して導かれるソースオペランドを選択する。
【００８０】
またマルチプレクサ１１９Ｌ2 ，１１９Ｌ3 は、Ｅステージにある命令の命令フィールド＃２，＃３で指定される第１ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃１で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-1を介して導かれる演算器１０６-1の演算結果を選択し、Ｗステージにある命令の命令フィールド＃３で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-3を介して導かれる演算器１０６-3の演算結果を選択する。
【００８１】
マルチプレクサ１１９Ｌ2 ，１１９Ｌ3 により選択されたデータ（ソースオペランド）は演算器１０６-2，１０６-3の左側入力（Ｌ入力）に供給される。
次に、バイパス回路１０９-1内のマルチプレクサ１１９Ｒ2 ，１１９Ｒ3 は、Ｅステージにある命令の命令フィールド＃２，＃３で指定される第２ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃１及び＃３で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）のいずれにも一致していない場合には、バイパス回路１０８-1により演算器１０６-2，１０６-3の右側入力用として選択されてラッチ回路１１０を介して導かれるソースオペランドを選択する。
【００８２】
またマルチプレクサ１１９Ｒ2 ，１１９Ｒ3 は、Ｅステージにある命令の命令フィールド＃２，＃３で指定される第２ソースレジスタ番号（の下位ｎ−１ビット）が、Ｗステージにある命令の命令フィールド＃１で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-1を介して導かれる演算器１０６-1の演算結果を選択し、Ｗステージにある命令の命令フィールド＃３で指定されるデスティネーションレジスタ番号（の下位ｎ−１ビット）に一致している場合には、ラッチ回路１１１内のバッファ１１１-3を介して導かれる演算器１０６-3の演算結果を選択する。
【００８３】
マルチプレクサ１１９Ｒ2 ，１１９Ｒ3 により選択されたデータ（ソースオペランド）は、演算器１０６-2，１０６-3の右側入力（Ｒ入力）に供給される。
演算器１０６-0，１０６-1は、バイパス回路１０９-0から供給されるソースオペランド間のデータの演算を行い、演算器１０６-2，１０６-3は、バイパス回路１０９-1から供給されるソースオペランド間のデータの演算を行う。演算器１０６-0〜１０６-3の演算結果はラッチ回路１１１（内のバッファ１１１-0〜１１１-3）に保持される。
【００８４】
このとき、演算器１０６-0〜１０６-3での演算を指定した長命令語のデコード結果（現在Ｅステージにある長命令語のデコード結果）がパイプラインレジスタ１０４からパイプラインレジスタ１０５に移され、同時に当該長命令語の直後の長命令語に対する命令デコード機構１０２でのデコード結果（現在Ｄステージにある長命令語のデコード結果）がパイプラインレジスタ１０４に移される。
【００８５】
ラッチ回路１１１（内のバッファ１１１-0〜１１１-3）に保持された演算器１０６-0〜１０６-3の演算結果のうち、演算器１０６-0，１０６-2の演算結果（命令フィールド＃０，＃２の命令の演算結果）はレジスタファイル１０７-0の各入力ポートに、演算器１０６-1，１０６-3の演算結果（命令フィールド＃１，＃３の命令の演算結果）はレジスタファイル１０７-1の各入力ポートに、それぞれ導かれる。
【００８６】
レジスタファイル１０７-0に導かれた演算器１０６-0，１０６-2の演算結果は、当該レジスタファイル１０７-0内のレジスタのうち、パイプラインレジスタ１０５に保持されている現在Ｗステージにある長命令語中のデコード結果に含まれている対応する命令フィールド＃０，＃２のデスティネーションレジスタ指定部の指定するレジスタに書き込まれる。
【００８７】
また、レジスタファイル１０７-1に導かれた演算器１０６-1，１０６-3の演算結果は、当該レジスタファイル１０７-1内のレジスタのうち、パイプラインレジスタ１０５に保持されている現在Ｗステージにある長命令語中のデコード結果に含まれている対応する命令フィールド＃１，＃３のデスティネーションレジスタ指定部の指定するレジスタに書き込まれる。
【００８８】
このように、ラッチ回路１１１（内のバッファ１１１-0〜１１１-3）に保持された演算器１０６-0〜１０６-3の演算結果は、パイプラインレジスタ１０５に保持されている現在Ｗステージにある長命令語中のデコード結果のうちの命令フィールド＃０〜＃３のデスティネーションレジスタ指定部と、その命令フィールド＃０〜＃３のフィールド番号“Ｂ0 Ｂ1 ”の下位側ビットＢ1 とで決まるｎ＋１ビットのデスティネーションレジスタ番号の示すレジスタに書き込まれる。
【００８９】
即ち本実施形態では、図３に示すように、命令フィールド＃０〜＃３のデスティネーションレジスタ指定部の示すｎビットのレジスタ番号（ＯＰ１）の上位に、その命令フィールド＃０〜＃３のフィールド番号“Ｂ0 Ｂ1 ”のビットＢ1 が付加されるレジスタ番号修飾が行われ、そのビットＢ1 が付加されたｎ＋１ビットのデスティネーションレジスタ番号により、（レジスタ番号０〜２n+1 −１の）２n+1 個のデスティネーションレジスタのいずれかが指定され、そのデスティネーションレジスタへの演算器１０６-0〜１０６-3の演算結果の書き込みが行われる。ここで、ｎ＋１ビットのデスティネーションレジスタ番号の最上位ビット、即ちビットＢ1 は“０”でレジスタファイル１０７-0を、“１”でレジスタファイル１０７-1を指定し、当該最上位ビットを除く下位ｎビット、即ちデスティネーションレジスタ指定部の示すｎビット（ＯＰ１）は、そのレジスタファイル内のデスティネーションレジスタ位置を示す。
【００９０】
したがって、ビットＢ1 が“０”の命令フィールド、即ちフィールド番号が０（“００”），２（“１０”）の命令フィールド＃０，＃２の命令に対しては、レジスタファイル１０７-0を対象に、当該命令のデスティネーションレジスタ指定部で指定されたレジスタへの、当該命令の演算結果（演算器１０６-0，１０６-2の演算結果）の書き込みが行われる。また、ビットＢ1 が“１”の命令フィールド、即ちフィールド番号が１（“０１”），３（“１１”）の命令フィールド＃１，＃３の命令に対しては、レジスタファイル１０７-1を対象に、当該命令のデスティネーションレジスタ指定部で指定されたレジスタへの、当該命令の演算結果（演算器１０６-1，１０６-3の演算結果）の書き込みが行われる。
【００９１】
以上に述べたように本実施形態においては、２n 個のレジスタからなる２つのレジスタファイル１０７-0，１０７-1を設け、４並列の長命令語中の各命令フィールド＃０〜＃３のフィールド番号によるレジスタ番号の修飾を行い、各命令フィールド毎に（ソース指定とデスティネーション指定のそれぞれについて）使用可能なレジスタをレジスタファイル１０７-0または１０７-1の一方に制限することにより、レジスタ指定部のビット長を（従来と同じ）ｎビットとしながらも（即ち長命令語長を伸ばさないにも拘らず）、長命令語全体として、使用可能なレジスタ数を従来の２n 個から、その２倍の２n+1 個とすることができる。
【００９２】
また本実施形態においては、レジスタファイル１０７-0，１０７-1の入出力ポート数を、レジスタ数が従来と同じ２n 個でありながら、入力ポート数２、出力ポート数４と、従来の半分にすることができる。
【００９３】
以上に述べたレジスタファイル１０７-0，１０７-1と長命令語の各命令フィールド＃０〜＃３（のフィールド番号“００”〜“１１”）との間の関係、具体的には命令フィールド＃０〜＃３と当該命令フィールド＃０〜＃３の命令が参照するレジスタファイル（ソース側レジスタファイル）との関係、及び命令フィールド＃０〜＃３と当該命令フィールド＃０〜＃の命令の指定する演算結果の書き込み先レジスタファイル（デスティネーション側レジスタファイル）との関係を図４に示す。なお、図４ではレジスタファイル１０７-0と１０７-1がいずれも２つ示されているが、参照時と結果書き込み時の関係を表すためであり、物理的には図１及び図２に示したように１つだけ存在する。
【００９４】
この他、本実施形態においては、各命令フィールド毎に使用可能なレジスタを制限したことから、バイパス回路１０８-0，１０８-1の１演算器当たりの入力ポート数（マルチプレクサの入力数）を、従来の５から３に減らすことができ、ハードウェア構成の簡略化が図れる。
【００９５】
なお、以上に述べた実施形態では、図２からも明らかなように、演算器１０６-0，１０６-1での演算（４並列の長命令語の命令フィールド＃０，＃１の命令の指定する演算）で使用可能なソースレジスタはレジスタファイル１０７-0のレジスタに、演算器１０６-2，１０６-3での演算（命令フィールド＃２，＃３の命令の指定する演算）で使用可能なソースレジスタはレジスタファイル１０７-1にそれぞれ制限され、演算器１０６-0，１０６-2の演算結果（命令フィールド＃０，＃２の命令の指定する演算の演算結果）の書き込み先として使用可能なデスティネーションレジスタはレジスタファイル１０７-0のレジスタに、演算器１０６-1，１０６-3の演算結果（命令フィールド＃１，＃３の命令の指定する演算の演算結果）の書き込み先として使用可能なデスティネーションレジスタはレジスタファイル１０７-1のレジスタにそれぞれ制限されている場合について説明したが、これに限るものではない。
【００９６】
そこで、各命令フィールド毎に（ソース指定とデスティネーション指定のそれぞれについて）使用可能なレジスタの制限が、以上の実施形態とは異なる第２の実施形態について図面を参照して説明する。
［第２の実施形態］
図５は本発明の第２の実施形態に係るＶＬＩＷプロセッサの概略構成を図２と同様の形式で示すブロック図であり、図２と同一部分には同一符号を付してある。
【００９７】
図５において、バイパス回路２０９-0は、演算器１０６-0，１０６-1の左側入力に対応して設けられたマルチプレクサ（ＭＰＸ）２１９Ｌ0 ，２１９Ｌ1 と、演算器１０６-0，１０６-1の右側入力に対応して設けられたマルチプレクサ（ＭＰＸ）２１９Ｒ0 ，２１９Ｒ1 とから構成される。
【００９８】
バイパス回路２０９-0内のマルチプレクサ２１９Ｌ0 ，２１９Ｌ1 ，２１９Ｒ1 は、レジスタファイル１０７-0の出力ポートＰ00，Ｐ02，Ｐ03と１対１で対応しており、対応する出力ポートから読み出されるデータ及び（ラッチ回路１１１を介して導かれる）演算器１０６-0，１０６-2の演算結果の１つを選択して演算器１０６-0，１０６-1の対応する入力側に出力する。
【００９９】
一方、バイパス回路２０９-0内のマルチプレクサ２１９Ｒ0 はレジスタファイル１０７-1の出力ポートＰ13と１対１で対応しており、当該出力ポートＰ13から読み出されるデータ及び（ラッチ回路１１１を介して導かれる）演算器１０６-1，１０６-3の演算結果の１つを選択して演算器１０６-0の右側入力に出力する。
【０１００】
バイパス回路２０９-1は、演算器１０６-2，１０６-3の左側入力に対応して設けられたマルチプレクサ（ＭＰＸ）２２９Ｌ2 ，２２９Ｌ3 と、演算器１０６-2，１０６-3の右側入力に対応して設けられたマルチプレクサ（ＭＰＸ）２２９Ｒ2 ，２２９Ｒ3 とから構成される。
【０１０１】
バイパス回路２０９-1内のマルチプレクサ２２９Ｌ2 ，２２９Ｒ2 ，２２９Ｌ3 は、レジスタファイル１０７-1の出力ポートＰ10，Ｐ11，Ｐ12と１対１で対応しており、対応する出力ポートから読み出されるデータ及び（ラッチ回路１１１を介して導かれる）演算器１０６-1，１０６-3の演算結果の１つを選択して演算器１０６-2，１０６-3の対応する入力側に出力する。
【０１０２】
一方、バイパス回路２０９-1内のマルチプレクサ２２９Ｒ3 はレジスタファイル１０７-0の出力ポートＰ01と１対１で対応しており、当該出力ポートＰ01から読み出されるデータ及び（ラッチ回路１１１を介して導かれる）演算器１０６-0，１０６-2の演算結果の１つを選択して演算器１０６-3の右側入力に出力する。
【０１０３】
この図５の構成が、図２の構成と異なる点は、図５中で演算器１０６-0，１０６-3の右側入力に対応するマルチプレクサ２１９Ｒ0 ，２１９Ｒ3 の各入力が、図２中で演算器１０６-0，１０６-3の右側入力に対応するマルチプレクサ１１９Ｒ0 ，１１９Ｒ3 の各入力と逆になっていることである。
【０１０４】
この図５の構成では、命令フィールド＃０〜＃３を持つ４並列の長命令語（４並列ＶＬＩＷ）のフィールド番号を“Ｂ0 Ｂ1 ”とすると、デスティネーションレジスタ番号は、図６に示すように、命令フィールド＃０〜＃３の命令のデスティネーションレジスタ指定部の示すレジスタ番号（ＯＰ１）の上位にビットＢ1 が付加されたものとなる。また、第１ソースレジスタ番号は、図６に示すように、命令フィールド＃０〜＃３の命令の第１ソースレジスタ指定部の示すレジスタ番号（ＯＰ２）の上位にビットＢ0 が付加されたものとなる。ここまでは、前記第１の実施形態と同様である。
【０１０５】
次に第２ソースレジスタ番号は、図６に示すように、命令フィールドのフィールド番号によって異なり、フィールド番号が“００”（＝０），“１１”（＝３）の命令フィールド＃０，＃３の命令では、その命令の第２ソースレジスタ指定部の示すレジスタ番号（ＯＰ３）の上位にビットＢ0 のレベル反転ビットが付加されたものとなり、フィールド番号が“０１”（＝１），“１０”（＝２）の命令フィールド＃１，＃２の命令では、その命令の第２ソースレジスタ指定部の示すレジスタ番号（ＯＰ３）の上位にビットＢ0 が付加されたものとなる。
【０１０６】
この場合、本実施形態におけるレジスタファイル１０７-0，１０７-1と長命令語の各命令フィールド＃０〜＃３（のフィールド番号“００”〜“１１”）との間の関係、具体的には命令フィールド＃０〜＃３と当該命令フィールド＃０〜＃３の命令が参照するレジスタファイル（ソース側レジスタファイル）との関係、及び命令フィールド＃０〜＃３と当該命令フィールド＃０〜＃の命令の指定する演算結果の格納先レジスタファイル（デスティネーション側レジスタファイル）との関係は図７のようになる。
【０１０７】
このように、４並列の長命令語の命令フィールド＃０〜＃３（のフィールド番号“００”〜“１１”）の命令で指定された演算の演算結果の書き込み先として、命令フィールド＃０，＃２についてはレジスタファイル１０７-0（内のレジスタ）に、命令フィールド＃１，＃３についてはレジスタファイル１０７-1（内のレジスタ）に制限すると共に、命令フィールド＃０〜＃３の命令の参照先を、命令フィールド＃０，＃３については２つのレジスタファイル１０７-0，１０７-1（内のレジスタ）に、命令フィールド＃１についてはレジスタファイル１０７-0（内のレジスタ）に、命令フィールド＃２についてはレジスタファイル１０７-1（内のレジスタ）に制限することでも、レジスタ指定部のビット長を（従来と同じ）ｎビットとしながらも（即ち長命令語長を伸ばさないにも拘らず）、長命令語全体として、使用可能なレジスタ数を従来の２n 個から、その２倍の２n+1 個とすることができる。
【０１０８】
なお、以上に述べた第１及び第２の実施形態では、長命令語の命令フィールド＃０〜＃３のフィールド番号“Ｂ0 Ｂ1 ”の上位側ビットＢ0 をソースレジスタ番号修飾に、下位側ビットＢ1 をデスティネーションレジスタ番号修飾に用いる場合について説明したが、これに限るものではなく、Ｂ0 をデスティネーションレジスタ番号修飾に、Ｂ1 をソースレジスタ番号修飾に用いるようにしても構わない。この場合、命令フィールド＃０〜＃３とレジスタファイル１０７-0，１０７-1との関係は、ソース指定とデスティネーション指定とで、以上の実施形態の逆になり、ＶＬＩＷプロセッサの構成（例えば第１の実施形態では図２の構成、第２の実施形態では図５の構成）もそれに適合するように変更する必要がある。
【０１０９】
また、以上に述べた第１及び第２の実施形態では、本発明を、命令フィールド＃０〜＃３を持つ４並列の長命令語を実行するＶＬＩＷプロセッサに適用した場合について説明したが、本発明は、例えば命令フィールド＃０〜＃７（フィールド番号“０００”〜“１１１”）を持つ８並列の長命令語を実行するＶＬＩＷプロセッサ、更には命令フィールド＃０〜＃１５（フィールド番号“００００”〜“１１１１”）を持つ１６並列の長命令語を実行するＶＬＩＷプロセッサ等にも適用可能である。そこでまず、本発明を８並列の長命令語を実行するＶＬＩＷプロセッサに適用した第３の実施形態につき説明する。
［第３の実施形態］
図８は、本発明を８並列の長命令語を実行するＶＬＩＷプロセッサに適用した第３の実施形態におけるレジスタファイルと長命令語の各命令フィールドとの間の関係を示す。
【０１１０】
図８において、４つのレジスタファイル２０７-0（＃０）〜２０７-3（＃３）は、図１中のレジスタファイル１０７-0，１０７-1と同様に２n 個のレジスタから構成される。レジスタファイル２０７-0内の２n 個のレジスタには０〜２n −１のレジスタ番号が、レジスタファイル２０７-1内の２n 個のレジスタには２n 〜２×２n −１のレジスタ番号、即ち２n 〜２n+1 −１のレジスタ番号が、レジスタファイル２０７-2内の２n 個のレジスタには２n+1 〜３×２n −１のレジスタ番号が、そしてレジスタファイル２０７-3内の２n 個のレジスタには３×２n 〜４×２n −１のレジスタ番号、即ち３×２n 〜２n+2 −１のレジスタ番号が、それぞれ割り当てられている。
【０１１１】
本実施形態においては、８並列の長命令語の各命令フィールド＃０〜＃７の命令は３オペランド形式の命令（演算命令の場合）であり、デスティネーションレジスタ指定部（ＯＰ１）のビット長は（前記第１及び第２の実施形態の場合より１ビット多い）ｎ＋１ビット、第１及び第２ソースレジスタ指定部（ＯＰ２，ＯＰ３）のビット長は（前記第１及び第２の実施形態の場合と同じ）ｎビットである。デスティネーションレジスタ指定部（ＯＰ１）の最上位ビット（Ｂ）の値は、命令フィールド（のフィールド番号）によって予め定められており、フィールド＃０〜＃３（フィールド番号“０００”〜“０１１”）では“０”、フィールド＃４〜＃７（フィールド番号“１００”〜“１１１”）では“１”である。
【０１１２】
ここで、各命令フィールド＃ｉ（ｉ＝０〜７）の命令（演算命令）の演算結果の書き込み先のレジスタファイルは、その命令フィールド＃ｉのフィールド番号（３ビット）を“Ｂ0 Ｂ1 Ｂ2 ”とすると、そのフィールド番号中の最下位ビットＢ2 と、その命令フィールド中のｎ＋１ビットのデスティネーションレジスタ指定部（ＯＰ１）の最上位ビット（Ｂ）からなる２ビット“Ｂ2 Ｂ”により決定される。
【０１１３】
また、決定されたレジスタファイル内の書き込み先レジスタは、デスティネーションレジスタ指定部（ＯＰ１）の最上位ビットを除くｎビットにより指定される。即ち命令フィールド＃ｉの命令（演算命令）の演算結果の書き込み先レジスタは、図９に示すように、その命令のデスティネーションレジスタ指定部で指定されるｎ＋１ビットのレジスタ番号（ＯＰ１）の上位に、その命令フィールドのフィールド番号の最下位ビットＢ2 が付加されたｎ＋２ビットのデスティネーションレジスタ番号により指定される。
【０１１４】
一方、命令フィールド＃ｉの命令（演算命令）の参照先のレジスタファイルは、そのフィールド番号中の上位側の２ビット“Ｂ0 Ｂ1 ”により決定される。また、決定されたレジスタファイル内の参照先レジスタは、その命令フィールド＃ｉ中のｎビットの第１及び第２ソースレジスタ指定部（ＯＰ２，ＯＰ３）により指定される。
【０１１５】
即ち命令フィールド＃ｉの命令（演算命令）の演算で参照する２つのソースレジスタは、図９に示すように、その命令の第１及び第２ソースレジスタ指定部で指定されるｎビットのレジスタ番号（ＯＰ２，ＯＰ３）の上位に、その命令フィールドのフィールド番号の上位側２ビット“Ｂ0 Ｂ1 ”が付加されたｎ＋２ビットのソースレジスタ番号（第１及び第２ソースレジスタ番号）により指定される。
【０１１６】
本実施例において、上記ｎ＋２ビットのレジスタ番号の上位２ビットは、“００”でレジスタファイル２０７-0を、“０１”でレジスタファイル２０７-1を、“１０”でレジスタファイル２０７-2を、“１１”でレジスタファイル２０７-3を指定し、当該上位２ビットを除くｎビットは、そのレジスタファイル内のレジスタ位置を示す。
【０１１７】
したがって、図８に示すように、フィールド番号“Ｂ0 Ｂ1 Ｂ2 ”中の上位側２ビット“Ｂ0 Ｂ1 ”が“００”、即ちフィールド番号が０（“０００”），１（“００１”）の命令フィールド＃０，＃１の命令についてはレジスタファイル２０７-0を対象に、“Ｂ0 Ｂ1 ”が“０１”、即ちフィールド番号が２（“０１０”），３（“０１１”）の命令フィールド＃２，＃３の命令についてはレジスタファイル２０７-1を対象に、“Ｂ0 Ｂ1 ”が“１０”、即ちフィールド番号が４（“１００”），５（“１０１”）の命令フィールド＃４，＃５の命令についてはレジスタファイル２０７-2を対象に、そして“Ｂ0 Ｂ1 ”が“１１”、即ちフィールド番号が６（“１１０”），７（“１１１”）の命令フィールド＃６，＃７の命令についてはレジスタファイル２０７-3を対象に、それぞれその命令フィールドの第１及び第２ソースレジスタ指定部で指定される（当該レジスタファイル内の）レジスタからのソースオペランド読み出しが行われる。
【０１１８】
また、フィールド番号“Ｂ0 Ｂ1 Ｂ2 ”中の最下位ビットＢ2 が“０”でデスティネーションレジスタ指定部の最上位ビットＢが“０”の命令フィールド、即ちフィールド番号が０（“０００”），２（“０１０”）の命令フィールド＃０，＃２の命令についてはレジスタファイル２０７-0を対象に、ビットＢ2 が“０”でビットＢが“１”の命令フィールド、即ちフィールド番号が４（“１００”），６（“１１０”）の命令フィールド＃４，＃６の命令についてはレジスタファイル２０７-1を対象に、ビットＢ2 が“１”でビットＢが“０”の命令フィールド、即ちフィールド番号が１（“００１”），３（“０１１”）の命令フィールド＃１，＃３の命令についてはレジスタファイル２０７-2を対象に、そしてビットＢ2 が“１”でビットＢが“１”の命令フィールド、即ちフィールド番号が５（“１０１”），７（“１１１”）の命令フィールド＃５，＃７の命令についてはレジスタファイル２０７-3を対象に、当該命令のデスティネーションレジスタ指定部で指定されたレジスタへの、当該命令の演算結果の書き込みが行われる。
【０１１９】
以上に述べたように本実施形態においては、２n 個のレジスタからなる４つのレジスタファイル２０７-0〜２０７-3を設け、８並列の長命令語中の各命令フィールド＃０〜＃７のフィールド番号によるレジスタ番号の修飾を行い、各命令フィールド毎に（ソース指定とデスティネーション指定のそれぞれについて）使用可能なレジスタをレジスタファイル２０７-0〜２０６-3のいずれかに制限することにより、デスティネーションレジスタ指定部のビット長をｎ＋１ビット、第１及び第２ソースレジスタ指定部のビット長をｎビットとしながらも、長命令語全体として、使用可能なレジスタ数を２n+2 個とすることができる。
【０１２０】
しかも本実施形態においては、レジスタファイル２０７-0〜２０７-3の入出力ポート数を、レジスタ数が従来と同じ２n 個でありながら、入力ポート数２、出力ポート数４とすることができる（８並列の長命令語の場合、従来は入力ポート数８、出力ポート数１６）。
【０１２１】
また、図８では省略されているが、レジスタファイル２０７-0〜２０７-3にそれぞれ対応して設けられることになる、図１中のバイパス回路１０８-i，１０９-i（ｉ＝０，１）に相当するバイパス回路の１演算器の１入力当たりの入力ポート数（マルチプレクサの入力数）を３とすることができる（８並列の長命令語の場合、従来は９）。
【０１２２】
なお、前記実施形態（第３の実施形態）では、長命令語の命令フィールド＃０〜＃７のフィールド番号“Ｂ0 Ｂ1 Ｂ2 ”の上位側の２ビット“Ｂ0 Ｂ1 ”をソースレジスタ番号修飾に、下位側の１ビットＢ2 を（デスティネーション指定部の最上位ビットＢと合わせて）デスティネーションレジスタ番号修飾に用いる場合について説明したが、これに限るものではない。例えば、Ｂ1 をソースレジスタ番号修飾とデスティネーションレジスタ番号修飾の一部のビットとして共通に用い、“Ｂ0 Ｂ1 ”を（前記実施形態と同様に）ソースレジスタ番号修飾に用いると共に、“Ｂ1 Ｂ2 ”をデスティネーション番号修飾に用いるようにしても構わない。この場合、デスティネーションレジスタ指定部のビット長は、前記実施形態と異なってｎビットで済む。
【０１２３】
このようなレジスタ番号修飾では、命令フィールド＃０〜＃７と、その命令フィールド＃０〜＃７（のデスティネーションレジスタ指定部）でデスティネーション先として指定可能なレジスタファイルとの対応関係は前記実施形態と異なり、命令フィールド＃０，＃４がレジスタファイル２０７-0（＃０）に、命令フィールド＃１，＃５がレジスタファイル２０７-1（＃１）に、命令フィールド＃２，＃６がレジスタファイル２０７-2（＃２）に、そして命令フィールド＃３，＃７がレジスタファイル２０７-3（＃３）に、それぞれ対応付けられる。
【０１２４】
次に本発明を１６並列の長命令語を実行するＶＬＩＷプロセッサに適用した第４の実施形態につき説明する。
［第４の実施形態］
図１０は、本発明を１６並列の長命令語を実行するＶＬＩＷプロセッサに適用した第４の実施形態におけるレジスタファイルと長命令語の各命令フィールドとの間の関係を示す。
【０１２５】
図１０に示すように、本実施形態においても、前記第３の実施形態と同様に、それぞれ２n 個のレジスタからなる４つのレジスタファイル２０７-0（＃０）〜２０７-3（＃３）が用いられる。
【０１２６】
本実施形態において、１６並列の長命令語の各命令フィールド＃０〜＃１５の命令は３オペランド形式の命令（演算命令の場合）であり、デスティネーションレジスタ指定部（ＯＰ１）、並びに第１及び第２ソースレジスタ指定部（ＯＰ２，ＯＰ３）のビット長は、いずれもｎビットである。ここで、デスティネーションレジスタ指定部（ＯＰ１）が、前記第３の実施形態で適用された８並列の長命令語の各命令フィールド＃０〜＃７のデスティネーションレジスタ部のビット数より１ビット少ないことに注意されたい。
【０１２７】
本実施形態においては、各命令フィールド＃ｉ（ｉ＝０〜１５）の命令（演算命令）の演算結果の書き込み先のレジスタファイルは、その命令フィールド＃ｉのフィールド番号（４ビット）を“Ｂ0 Ｂ1 Ｂ2 Ｂ3 ”とすると、そのフィールド番号中の下位側の２ビット“Ｂ2 Ｂ3 ”により決定される。また、決定されたレジスタファイル内の書き込み先レジスタは、デスティネーションレジスタ指定部（ＯＰ１）のｎビットにより指定される。即ち命令フィールド＃ｉの命令（演算命令）の演算結果の書き込み先レジスタは、図１１に示すように、その命令のデスティネーションレジスタ指定部で指定されるｎビットのレジスタ番号（ＯＰ１）の上位に、その命令フィールドのフィールド番号の下位側の２ビット“Ｂ2 Ｂ3 ”が付加されたｎ＋２ビットのデスティネーションレジスタ番号により指定される。
【０１２８】
一方、命令フィールド＃ｉの命令（演算命令）の参照先のレジスタファイルは、そのフィールド番号中の上位側の２ビット“Ｂ0 Ｂ1 ”により決定される。また、決定されたレジスタファイル内の参照先レジスタは、その命令フィールド＃ｉ中のｎビットの第１及び第２ソースレジスタ指定部（ＯＰ２，ＯＰ３）により指定される。即ち命令フィールド＃ｉの命令（演算命令）の演算で参照する２つのソースレジスタは、図１１に示すように、その命令の第１及び第２ソースレジスタ指定部で指定されるｎビットのレジスタ番号（ＯＰ２，ＯＰ３）の上位に、その命令フィールドのフィールド番号の上位側２ビット“Ｂ0 Ｂ1 ”が付加されたｎ＋２ビットのソースレジスタ番号（第１及び第２ソースレジスタ番号）により指定される。
【０１２９】
本実施例において、上記ｎ＋２ビットのレジスタ番号の上位２ビットは、“００”でレジスタファイル２０７-0を、“０１”でレジスタファイル２０７-1を、“１０”でレジスタファイル２０７-2を、“１１”でレジスタファイル２０７-3を指定し、当該上位２ビットを除くｎビットは、そのレジスタファイル内のレジスタ位置を示す。
【０１３０】
したがって、図１０に示すように、フィールド番号“Ｂ0 Ｂ1 Ｂ2 Ｂ3 ”中の上位側２ビット“Ｂ0 Ｂ1 ”が“００”、即ちフィールド番号が０（“００００”），１（“０００１”），２（“００１０”），３（“００１１”）の命令フィールド＃０，＃１，＃２，＃３の命令についてはレジスタファイル２０７-0を対象に、“Ｂ0 Ｂ1 ”が“０１”、即ちフィールド番号が４（“０１００”），５（“０１０１”），６（“０１１０”），７（“０１１１”）の命令フィールド＃４，＃５，＃６，＃７の命令についてはレジスタファイル２０７-1を対象に、“Ｂ0 Ｂ1 ”が“１０”、即ちフィールド番号が８（“１０００”），９（“１００１”），１０（“１０１０”），１１（“１０１１”）の命令フィールド＃８，＃９，＃１０，＃１１の命令についてはレジスタファイル２０７-2を対象に、そして“Ｂ0 Ｂ1 ”が“１１”、即ちフィールド番号が１２（“１１００”），１３（“１１０１”），１４（“１１１０”），１５（“１１１１”）の命令フィールド＃１２，＃１３，＃１４，＃１５の命令についてはレジスタファイル２０７-3を対象に、それぞれその命令フィールドの第１及び第２ソースレジスタ指定部で指定される（当該レジスタファイル内の）レジスタからのソースオペランド読み出しが行われる。
【０１３１】
また、フィールド番号“Ｂ0 Ｂ1 Ｂ2 Ｂ3 ”中の下位側２ビット“Ｂ2 Ｂ3 ”が“００”、即ちフィールド番号が０（“００００”），４（“０１００”），８（“１０００”），１２（“１１００”）の命令フィールド＃０，＃４，＃８，＃１２の命令についてはレジスタファイル２０７-0を対象に、“Ｂ2 Ｂ3 ”が“０１”、即ちフィールド番号が１（“０００１”），５（“０１０１”），９（“１００１”），１３（“１１０１”）の命令フィールド＃１，＃５，＃９，＃１３の命令についてはレジスタファイル２０７-1を対象に、フィールド番号が２（“００１０”），６（“０１１０”），１０（“１０１０”），１４（“１１１０”）の命令フィールド＃２，＃６，＃１０，＃１４の命令についてはレジスタファイル２０７-2を対象に、そして“Ｂ2 Ｂ3 ”が“１１”、即ちフィールド番号が３（“００１１”），７（“０１１１”），１１（“１０１１”），１５（“１１１１”）の命令フィールド＃３，＃７，＃１１，＃１５の命令についてはレジスタファイル２０７-3を対象に、当該命令のデスティネーションレジスタ指定部で指定されたレジスタへの、当該命令の演算結果の書き込みが行われる。
【０１３２】
以上に述べたように本実施形態においては、２n 個のレジスタからなる４つのレジスタファイル２０７-0〜２０７-3を設け、１６並列の長命令語中の各命令フィールド＃０〜＃１５のフィールド番号によるレジスタ番号の修飾を行い、各命令フィールド毎に（ソース指定とデスティネーション指定のそれぞれについて）使用可能なレジスタをレジスタファイル２０７-0〜２０６-3のいずれかに制限することにより、デスティネーションレジスタ指定部、並びに第１及び第２ソースレジスタ指定部のビット長をそれぞれｎビットとしながらも、長命令語全体として、使用可能なレジスタ数を２n+2 個とすることができる。
【０１３３】
しかも本実施形態においては、レジスタファイル２０７-0〜２０７-3の入出力ポート数を、レジスタ数が従来と同じ２n 個でありながら、入力ポート数２、出力ポート数４と従来より大幅に削減できる（１６並列の長命令語の場合、従来は入力ポート数１６、出力ポート数３２）。
【０１３４】
また、図１０では省略されているが、レジスタファイル２０７-0〜２０７-3にそれぞれ対応して設けられることになる、図１中のバイパス回路１０８-i，１０９-i（ｉ＝０，１）に相当するバイパス回路の１演算器の１入力当たりの入力ポート数（マルチプレクサの入力数）を５とすることができる（１６並列の長命令語の場合、従来は１７）。
【０１３５】
なお、前記第３及び第４の実施形態では、ソースレジスタの修飾方法が第１ソースレジスタと第２ソースレジスタとで同じ場合について説明したが、前記第２の実施形態と同様に、第１ソースレジスタと第２ソースレジスタとで異なる修飾方法を適用しても構わない。
【０１３６】
また、前記第１乃至第４の実施形態では、長命令語の各命令フィールドのフィールド番号毎に（ソース指定とデスティネーション指定のそれぞれについて）アクセス可能なレジスタファイルが制限されており、したがって各命令フィールドからアクセス可能（ソース指定及びデスティネーション指定可能）なレジスタも、その命令フィールド（のフィールド番号）によって制限されていたが、予め定められたレジスタ番号のレジスタ（例えばレジスタ番号が０〜７までの８個のレジスタ）については、全ての命令フィールドから共通にアクセス可能としても（即ちフィールド番号によるレジスタ修飾の対象外としても）よく、前記実施形態に限定されない種々の変形が可能である。
【０１３７】
次に、以上に述べた第１乃至第４の実施形態で適用した命令語形式、即ち長命令語中の各命令フィールドのフィールド番号によるレジスタ番号の修飾により、各命令フィールド毎に（ソース指定とデスティネーション指定のそれぞれについて）使用可能なレジスタファイルを制限することを可能とする命令語形式に従ったオブジェクトを生成するためのコンパイラ（並列最適化コンパイラ）について説明する。
【０１３８】
図１２は本コンパイラの一実施形態を示すブロック構成図である。
同図において、並列最適化コンパイラ３１０は、字句解析・構文解析部３１１、スカラ最適化部３１２、命令スケジュール部３１３、レジスタアロケーション部３１４及びコード出力部３１５の各機能要素から構成される。
【０１３９】
並列最適化コンパイラ３１０は、ソースファイル３２０に格納されている原始プログラムを対象に字句解析・構文解析部３１１により周知の字句解析及び構文解析を行ってプログラムエラーを検出すると共に第１の内部形式のプログラム（中間コード）に変える。
【０１４０】
次に並列最適化コンパイラ３１０は、字句解析・構文解析部３１１により生成された中間コードを対象にスカラ最適化部３１２により周知の最適化を行い、冗長な処理を含まないような実行時間がより少なくて済む第２の内部形式のプログラムを生成する。このプログラムは、シリアルな命令列からなる。
【０１４１】
ここまでの並列最適化コンパイラ３１０での処理は、通常のコンパイラ処理と同様であり、ＶＬＩＷとは無関係である。
次に並列最適化コンパイラ３１０は、スカラ最適化部３１２により生成された第２の内部形式のプログラムの各命令をスケジュールする命令スケジューリングを命令スケジュール部３１３により行う。この命令スケジュール部３１３による例えば前記第１の実施形態で適用した命令語形式（図３参照）を前提とする命令スケジューリングについて、“ａ←ｂ＋ｃ”の演算を指定する命令Ｉをトップダウン方式でスケジュールする場合を例に、図１３のフローチャートを参照して説明する。
【０１４２】
まず、命令スケジュール部３１３は、スケジュールの対象となる命令Ｉのソースオペランド（ｂ，ｃ）を定義した命令（が既に配置されている命令フィールド位置）のフィールド番号を調べる（ステップＳ１）。
【０１４３】
次に命令スケジュール部３１３は、調べたフィールド番号とソースオペランド（ｂ，ｃ）とがマッチしているか否か、即ちソースオペランドｂを定義した命令のフィールド番号で決まる（デスティネーション先としての）レジスタファイルと、ソースオペランドｃを定義した命令のフィールド番号で決まるデスティネーション先としてのレジスタファイルとが一致しているか否かを判断する（ステップＳ２）。
【０１４４】
もし上記レジスタファイルが一致している場合には、命令スケジュール部３１３は、命令Ｉを、当該レジスタファイル内レジスタがソース指定可能な命令フィールドに配置する（ステップＳ３）。
【０１４５】
これにより、ソースオペランドｂを定義した命令とソースオペランドｃを定義した命令のフィールド番号がいずれも０または２であるならば、そのフィールド番号で決まるデスティネーション先としてのレジスタファイルは、いずれもレジスタファイル１０７-0（＃０）であることから、命令Ｉは命令フィールド＃０または＃１（の空きフィールド）に配置される。同様に、ソースオペランドｂを定義した命令とソースオペランドｃを定義した命令のフィールド番号がいずれも１または３であるならば、そのフィールド番号で決まるデスティネーション先としてのレジスタファイルは、いずれもレジスタファイル１０７-1（＃１）であることから、命令Ｉは命令フィールド＃２または＃３（の空きフィールド）に配置される。
【０１４６】
これに対して上記レジスタファイルが不一致の場合には、命令スケジュール部３１３は、ソースオペランドｂ，ｃのうちの一方を、そのソースオペランドが存在するレジスタファイルから他方のソースオペランドが存在するレジスタファイルにコピーする命令（ＭＯＶＥ命令）を生成し、そのコピー命令を、そのソース先とデスティネーション先で決まる命令フィールドに配置する（ステップＳ４）。
【０１４７】
これにより、例えばソースオペランドｂがレジスタファイル１０７-0（＃０）に、ソースオペランドｃがレジスタファイル１０７-1（＃１）に存在し、このソースオペランドｃをレジスタファイル１０７-0（＃０）に変数ｄとしてコピーする場合であれば、ソース先がレジスタファイル１０７-1（＃１）、デスティネーション先がレジスタファイル１０７-0（＃０）であることから、そのためのコピー命令（ｄ←ｃ）は、命令フィールド＃２に配置される。
【０１４８】
命令スケジュール部３１３はコピー命令を生成して配置すると（ステップＳ４）、命令Ｉに相当する“ａ←ｂ＋ｄ”の命令Ｉ′を、コピー命令のコピー先（デスティネーション先）レジスタファイルをソースレジスタファイルとして使用可能な命令フィールド（ここでは＃０または＃１）に配置する（ステップＳ５）。
【０１４９】
次に、命令スケジュール部３１３による前記第１の実施形態で適用した命令語形式（図３参照）を前提とする命令スケジューリングについて、レジスタ（変数）ａを定義する命令Ｉをボトムアップ方式でスケジュールする場合を例に、図１４のフローチャートを参照して説明する。
【０１５０】
まず、命令スケジュール部３１３は、スケジュールの対象となる命令Ｉが定義するレジスタ（仮想レジスタ、変数）ａを（ソースとして）使う命令（が既に配置されている命令フィールド位置）のフィールド番号を調べる（ステップＳ１１）。
【０１５１】
次に命令スケジュール部３１３は、調べたフィールド番号と命令Ｉが定義する仮想レジスタ（デスティネーション先）ａとがマッチしているか否か、具体的には、調べたフィールド番号から、仮想レジスタ（デスティネーション先）ａがレジスタファイル１０７-0（＃０）または１０７-1（＃１）のいずれになければならないか、或いはその両方になければならないかを判断する（ステップＳ１２）。
【０１５２】
この判断の条件は、ａを使う全ての命令が、命令フィールド＃０または＃１と、命令フィールド＃２または＃３のいずれか一方だけにあるか、或いは両方にあるか、即ちａを使う命令のフィールド番号で決まるソース指定可能なレジスタファイルが、その命令数に無関係に１つだけである（この状態を、デスティネーションレジスタａとフィールド番号がマッチしていると呼ぶ）か否かである。
【０１５３】
もし、ａを使う全ての命令が命令フィールド＃０または＃１だけにある場合（デスティネーションレジスタａとフィールド番号がマッチしている場合）には、ａはレジスタファイル１０７-0（＃０）になければならず、命令フィールド＃２または＃３だけにある場合には、ａはレジスタファイル１０７-1（＃１）になければならない。ａを使う命令が１つの場合には、その命令は、命令フィールド＃０または＃１と、命令フィールド＃２または＃３のいずれか一方にしか存在しない。
【０１５４】
一方、ａを使う命令が複数で、しかもその複数の命令が命令フィールド＃０または＃１側と、命令フィールド＃２または＃３側に分散配置されている場合（デスティネーションレジスタａとフィールド番号がマッチしていない場合）には、ａはレジスタファイル１０７-0（＃０）及び１０７-1（＃１）の両方になければならない。
【０１５５】
命令スケジュール部３１３は、命令Ｉが定義する変数（仮想レジスタ）ａがレジスタファイル１０７-0（＃０）になければならないと判断した場合には、その命令Ｉを命令フィールド＃０または＃２に配置し、レジスタファイル１０７-1（＃１）になければならないと判断した場合には、その命令Ｉを命令フィールド＃１または＃３に配置する（ステップＳ１３）。
【０１５６】
これに対し、命令Ｉが定義する変数（仮想レジスタ）ａがレジスタファイル１０７-0（＃０）及び１０７-1（＃１）の両方になければならないと判断した場合には、ａをレジスタファイル１０７-0（＃０）からレジスタファイル１０７-1（＃１）、またはレジスタファイル１０７-1（＃１）からレジスタファイル１０７-0（＃０）に変数ｘとしてコピーする命令（ｘ←ａ）を生成し、そのコピー命令を命令フィールド＃１または＃２に配置する（ステップＳ１４）。
【０１５７】
ここでは、命令Ｉを命令フィールド＃０または＃２に配置しようとするならば、ａをレジスタファイル１０７-0（＃０）からレジスタファイル１０７-1（＃１）にコピーする命令が命令フィールド＃１に配置され、命令Ｉを命令フィールド＃１または＃３に配置しようとするならば、ａをレジスタファイル１０７-1（＃１）からレジスタファイル１０７-0（＃０）にコピーする命令が命令フィールド＃２に配置される。
【０１５８】
命令スケジュール部３１３はコピー命令を生成して配置すると（ステップＳ１４）、命令フィールド＃１にコピー命令を配置した場合であれば、命令Ｉを命令フィールド＃０または＃２に配置し、命令フィールド＃２にコピー命令を配置した場合であれば、命令Ｉを命令フィールド＃１または＃３に配置する（ステップＳ１５）。
【０１５９】
このとき命令スケジュール部３１３は、命令フィールド＃１にコピー命令を配置した場合であれば、既に配置済みのａを使う命令のうち、命令フィールド＃２，＃３にある命令のａをｘに変更し、命令フィールド＃２にコピー命令を配置した場合であれば、既に配置済みのａを使う命令のうち、命令フィールド＃０，＃１にある命令のａをｘに変更する。
【０１６０】
並列最適化コンパイラ３１０は、以上のスケジュール処理を、スカラ最適化部３１２により生成された第２の内部形式のプログラムの各命令について、始端命令から順に終端命令まで（トップダウン方式の場合）、或いは終端命令から順に始端まで（ボトムアップ方式の場合）命令スケジュール部３１３により実行すると、そのスケジュール済みの各命令中の変数に対する物理レジスタ割り当て（レジスタアロケーション）をレジスタアロケーション部３１４により行う。このレジスタアロケーション部３１４によるレジスタアロケーションについて、図１５のフローチャートを参照して説明する。
【０１６１】
レジスタアロケーション部３１４は、命令スケジュール部３１３によりスケジュールされた各命令をスキャンして、各変数（仮想レジスタ）が参照或いは定義される命令のフィールド番号から、全ての変数をレジスタファイル別にクラス分けする（ステップＳ２１）。ここでは、レジスタファイル１０７-0（＃０）に存在すべき変数と、レジスタファイル１０７-1（＃１）に存在すべき変数の２つのクラスに分けられる。
【０１６２】
次にレジスタアロケーション部３１４は、各クラスの各変数について、クラス別に、そのクラスに対応するレジスタファイル内の物理レジスタの割り当てを行う（ステップＳ２２）。
【０１６３】
並列最適化コンパイラ３１０はレジスタアロケーション部３１４によるレジスタアロケーションを終了すると、このレジスタアロケーションが施された内部形式の各命令から計算機（ここではＶＬＩＷプロセッサ）で実行可能なコード（オブジェクトコード）をコード出力部３１５により生成し、オブジェクトファイル３３０として出力する。
【０１６４】
【発明の効果】
以上詳述したように本発明によれば、複数のレジスタファイルを設け、長命令語（ＶＬＩＷ）中の各命令フィールドのフィールド番号によるレジスタ番号の修飾を行い、各命令フィールド毎に（ソース指定とデスティネーション指定のそれぞれについて）使用可能なレジスタをいずれかのレジスタファイルに制限する構成とすることにより、長命令語全体で扱えるレジスタ数を長命令語長を伸ばすことなく増やすことができ、しかもハードウェア構成の複雑化を招かないで済む。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るＶＬＩＷプロセッサの概略構成を示すブロック図。
【図２】図１中のバイパス回路１０９-0，１０９-1の内部構成を、その周辺の構成と共に示すブロック図。
【図３】上記第１の実施形態における命令フィールドのフィールド番号によるレジスタ番号の修飾について、主としてフィールド番号が１（“０１”）の命令フィールド＃１を例に説明するための図。
【図４】上記第１の実施形態におけるレジスタファイル１０７-0，１０７-1と長命令語の各命令フィールド＃０〜＃３（のフィールド番号“００”〜“１１”）との間の関係を示す図。
【図５】本発明の第２の実施形態に係るＶＬＩＷプロセッサの概略構成を図２と同様の形式で示すブロック図。
【図６】上記第２の実施形態における命令フィールドのフィールド番号によるレジスタ番号の修飾を説明するための図。
【図７】上記第２の実施形態におけるレジスタファイル１０７-0，１０７-1と長命令語の各命令フィールド＃０〜＃３（のフィールド番号“００”〜“１１”）との間の関係を示す図。
【図８】本発明を８並列の長命令語を実行するＶＬＩＷプロセッサに適用した第３の実施形態におけるレジスタファイルと長命令語の各命令フィールドとの間の関係を示す図。
【図９】上記第３の実施形態における命令フィールドのフィールド番号によるレジスタ番号の修飾を説明するための図。
【図１０】本発明を１６並列の長命令語を実行するＶＬＩＷプロセッサに適用した第４の実施形態におけるレジスタファイルと長命令語の各命令フィールドとの間の関係を示す図。
【図１１】上記第４の実施形態における命令フィールドのフィールド番号によるレジスタ番号の修飾を説明するための図。
【図１２】上記第１乃至第４の実施形態で適用した命令語形式に従ったオブジェクトを生成するためのコンパイラの一実施形態を示すブロック構成図。
【図１３】図１２中のコンパイラにおける命令スケジュール処理をトップダウン方式でスケジュールする場合について説明するためのフローチャート。
【図１４】図１２中のコンパイラにおける命令スケジュール処理をボトムアップ方式でスケジュールする場合について説明するためのフローチャート。
【図１５】図１２中のコンパイラにおけるレジスタアロケーション処理を説明するためのフローチャート。
【図１６】従来のＶＬＩＷプロセッサにおける、長命令語の各命令フィールドの命令で使用可能なレジスタ数と、その命令中ののレジスタ指定部のビット数との関係を、レジスタ数が２n 個の場合と、その２倍の２n+1 個の場合とについて示す図。
【図１７】従来のＶＬＩＷプロセッサの概略構成を示すブロック図。
【符号の説明】
１０１…命令フェッチ機構、
１０２…命令デコード機構、
１０６-0〜１０６-3…演算器、
１０７-0，１０７-1，２０７-0〜２０７-3…レジスタファイル、
１０８-0，１０８-1，１０９-0，１０９-1，２０９-0，２０９-1…バイパス回路、
１１０，１１１…ラッチ回路、
１１９Ｌ0 〜１１９Ｌ3 ，１１９Ｒ0 〜１１９Ｒ3 ，２１９Ｌ0 〜２１９Ｌ3 ，２１９Ｒ0 〜２１９Ｒ3 …マルチプレクサ（ＭＰＸ）
【図１】
0003737573.tif 000002
【図２】
0003737573.tif 000003
【図３】
0003737573.tif 000004
【図４】
0003737573.tif 000005
【図５】
0003737573.tif 000006
【図６】
0003737573.tif 000007
【図７】
0003737573.tif 000008
【図８】
0003737573.tif 000009
【図９】
0003737573.tif 000010
【図１０】
0003737573.tif 000011
【図１１】
0003737573.tif 000012
【図１２】
0003737573.tif 000013
【図１３】
0003737573.tif 000014
【図１４】
0003737573.tif 000015
【図１５】
0003737573.tif 000016
【図１６】
0003737573.tif 000017
【図１７】
0003737573.tif 000018