(57)【特許請求の範囲】
【請求項１】
ａ）相互に並列に処理を実行するための、３以上である第１の数の機能ユニットと、
ｂ）２以上で第１の数より小さい第２の数の命令を保持するため、及び、命令と機能ユニットとの対応を特定するためのコードを保持するための命令レジスタと、
ｃ）適切な１つの機能ユニットに命令レジスタで並列に命令を実行させるための実行制御手段とを具えたプロセッサであって、そのプロセッサが、命令レジスタの命令に関するオペランドを格納するためのマルチポートレジスタファイルを具え、該マルチポートレジスタファイルが、並列にオペランドにアクセスするための第３の数の読出しポートを有するプロセッサにおいて、
該第３の数は、第２の数の機能ユニットからなる機能ユニットのサブセットのいずれかによってレジスタファイルから要求されるオペランドの最大数以上であり、該第３の数は、機能ユニット全体によって要求されるオペランドの総数より小さい数であり、前記プロセッサが、
ｄ）読出しポートに並列にアクセスして命令を実行することを指示された機能ユニットの読出しアクセスを選択的に行わせるための読出しアクセス供与手段を具えることを特徴とするプロセッサ。
【請求項２】
該読出しポートが読出しポートの群を構成すること、少なくとも１つの特定の群が少なくとも２つの読出しポートを有すること、該読出しアクセス供与手段が群毎に機能ユニットに与えられた読出しポートを選択するように構成されること、少なくとも１つの機能ユニットがそれぞれのオペランドを同時に受信するための少なくとも２つの入力部を有すること、及び、特定の群が機能ユニットの群として選択される度毎に、該入力部が該特定の群からのそれぞれ所定の読出しポートに接続されることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
命令レジスタが命令を送出するための各送出スロットについて第２の数に構成されること、各送出スロットが読出しポートの少なくとも１つの各群に対応すること、及び、特定の機能ユニットが特定の送出スロットからの命令を実行する度毎に該特定の送出スロットに対応する群からの読出しポートにアクセスするように構成されることを特徴とする請求項１又は２に記載のプロセッサ。
【請求項４】
各特定の群が第４の数の所定のポートを含むこと、及び、該第４の数が機能ユニットのいずれか１つによって要求されるオペランドの最大数に等しいことを特徴とする請求項２又は３に記載のプロセッサ。
【請求項５】
各特定の送出スロットが、該特定の送出スロットに対応する群の読出しポートのそれぞれのアドレス入力部に接続された同じ所定数のアドレスフィールドを含み、該特定の送出スロットからの命令を実行する機能ユニットが、アドレスされたオペランドを要求するか否かに拘わらず、該読出しポートでアドレスされたオペランドにアクセスするように構成されたことを特徴とする請求項３又は４に記載のプロセッサ。
【請求項６】
少なくとも１つの機能ユニットが、１つの命令を実行することを指示された場合、更に、該１つの命令を送出する送出スロットのアドレスフィールドから情報を受信し、該少なくとも１つの機能ユニットが実行の間該情報をオペランドとして使用することを特徴とする請求項５に記載のプロセッサ。
【請求項７】
該マルチポートレジスタファイルが少なくとも１つの書込みポートを有すること、及び、プロセッサが、並列に命令を実行し結果を生成することを指示された機能ユニットに対する書込みポートに選択的にアクセスするための書込みアクセス供与手段を有することを特徴とする請求項１乃至６のいずれか１項に記載のプロセッサ。
【請求項８】
命令レジスタが命令を送出するための各送出スロットについて第２の数に構成されること、各送出スロットが同じそれぞれの数の結果アドレスフィールドを含むこと、及び、書込みアクセス供与手段が該アドレスフィールドの内容を書込みポートのアドレス入力部にルーチングするように構成されることを特徴とする請求項７に記載のプロセッサ。
【請求項９】
該書込みアクセス供与手段が、該機能ユニットが命令を実行することを指示された後のレイテンシー期間に、該結果アドレスフィールドの内容に基づいて、機能ユニットの１つの出力部を書込みポートに接続するように構成されることを特徴とする請求項８に記載のプロセッサ。
【請求項１０】
レジスタファイルが少なくとも２つの書込みポートを持ち、書込み選択手段が予備的割当て手段を有し、該予備的割当て手段がその予備的割当ての後１クロックサイクルの間特定の書込みポートを機能ユニットの１つに予備的に割当て、そのクロックサイクルの中で該機能ユニットの１つの実行の結果が有効になり、更に、該予備的割当て手段が機能ユニットの１つの出力を該特定の書込みポートに接続し、該結果アドレスフィールドの内容を該クロックサイクルの間該特定の書込みポートに送るように構成されることを特徴とする請求項９に記載のプロセッサ。
【請求項１１】
該予備的割当て手段が、該クロックサイクルの間、特定の書込みポートが以前に該機能ユニットの１つに割当てられていないとの制約の下に書込みポートから該特定の書込みポートを選択するように構成されることを特徴とする請求項１０に記載のプロセッサ。
【請求項１２】
該予備的割当て手段がレジスタのマトリクスを含むことを特徴とする請求項１１に記載のプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ａ）相互に並列に処理を実行するための、３以上である第１の数の機能ユニットと、ｂ）２以上で第１の数より小さい第２の数の命令を保持するため、及び、命令と機能ユニットとの対応を特定するためのコードを保持するための命令レジスタと、ｃ）命令レジスタ中の命令を並列に実行することを適切な機能ユニットに指示するための実行制御手段とを具えたプロセッサに関するものである。
【０００２】
【従来の技術】
前記のようなプロセッサは、論文「プログラマブル命令フォーマットのＶＬＩＷアーキテクチャへの拡張」（"A programmable Instruction format extension to VLIW architectures", A.De Gloria著、コンプユーロ（CompEuro）1992議事録「コンピュータシステム及びソフトウェアエンジニアリング」"Computer system and software engineering", IEEE computer society press 発行）から既知である。ＶＬＩＷとは「大変長い命令語」（Very Long Instruction Word）を意味する。ＶＬＩＷアーキテクチャを有するプロセッサは、乗算器、加算器、ＡＬＵ、定数発生ユニット、メモリー等の機能ユニットを具える。ＶＬＩＷアーキテクチャを有するプロセッサは、コンパイラによってプランニングされる命令の拡張における並列化を可能にする。
【０００３】
これは次のようにして実現される。各クロックサイクルで多くの命令がプログラムメモリーから命令レジスタに並列にロードされる。レジスタ中の命令は、全ての機能ユニットに対する明示オプコード及びオペランド仕様を含む。レジスタからの命令は並列に機能ユニットに供給される。
【０００４】
しかしながら、実際の応用では、機能ユニットの全てが同時に活性状態になることは極めて稀である。この事実は、全ての機能ユニットに対して同時に必要とするより少ないオプコード及びオペランド仕様を各命令の中に具えたアーキテクチャを可能にする。マルチプレクサを用いることによって、各命令は、活性化されるべき選択された機能ユニットに向く。このように、性能を損なうことなく命令メモリーのサイズを節減することが可能になる。命令が元のＶＬＩＷアーキテクチャにおけるように極めて長くない場合には、これを”ノットソーＶＬＩＷ”アーキテクチャと呼んでもよい。
【０００５】
このアーキテクチャでは、命令レジスタは異なったクロックサイクルに異なった機能ユニットに命令を出さなければならない。このため、従来のアーキテクチャは、どの命令がどの機能ユニットに導かれるかを選択するマルチプレクサを具え、そのオプコード及びそのオペランド仕様をこの選択された機能ユニットに送り出している。
【０００６】
オペランド仕様は、オペランド自身（直接モード）又はレジスタファイル中のオペランドのアドレス（レジスタモード）を含む。後者のモードについては、各機能ユニットがレジスタファイルに対して少なくとも１つの読出しポートを持つ。命令がレジスタモードのときは、オペランド仕様が読出しポートのアドレス入力に供給される。これに応答してアドレスレジスタの内容が読出しポートに出力される。
【０００７】
処理の並列実行を支持するために、レジスタは、レジスタから並列に読出すことができる読出しポートを具えたマルチポートレジスタファイルに集められる。レジスタファイルは、各機能ユニットの各オペランド入力に対してそれぞれのポートを持つ。例えば各乗算器機能ユニットはそれぞれ２つの読出しポートに接続される。これと反対に、命令によって定められる定数が供給される”定数”ユニットは、読出しポートには接続されない。
【０００８】
【発明が解決しようとする課題】
集積化されたプロセッサでは、上記のようなレジスタファイルはシリコンの大きな面積を必要とし、かなりの電力を消費する。
本発明は、特に、シリコンの面積を減少させ、電力の消費を減少させることを目的とするものである。
【０００９】
【課題を解決するための手段】
本発明は、プロセッサが、命令レジスタ中の命令に関するオペランドを格納するためのマルチポートレジスタファイルを有すること、該マルチポートレジスタファイルが、オペランドに対する並列アクセスを可能にするために、第３の数の読出しポートを有すること、該第３の数は、第２の数の機能ユニットからなるいずれかの機能ユニットのサブセットによってレジスタファイルの中から要求されるオペランドの最大数以上であること、該第３の数は、機能ユニット全体によって要求されるオペランドの総数より小さい数であること、及び、プロセッサが、読出しポートに並列にアクセスして命令を実行することを指示される機能ユニットを選択的に定めるための読出しアクセス供与手段を具備することを特徴とするプロセッサを提供するものである。
【００１０】
レジスタファイルの面積と電力消費はポートの数に比例するので、ポートの数を減らせば必要な面積と電力消費を減らすことができる。並列に使用されるポートの数は、並列にスタートするために実行できる命令の数によって決まる。この数は、全ての機能ユニットが同時に要求するオペランドの全数より少ない。機能ユニットとレジスタファイルへのポートとの間にプログラマブルな接続を設けることによって、プロセッサによって達成される並列処理の処理量を減らすことなしに、レジスタファイルへのポートの数をこのポートの全数より小さくすることができる。
【００１１】
本発明の１つの実施例においては、読出しポートが読出しポートの群を構成すること、少なくとも１つの特定の群が少なくとも２つの読出しポートを有すること、読出しアクセス供与手段が群毎に機能ユニットに与えられた読出しポートを選択するように構成されること、少なくとも１つの機能ユニットがそれぞれのオペランドを同時に受信するための少なくとも２つの入力部を有すること、及び、特定の群が機能ユニットの群として選択される度毎に、該入力部が該特定の群からのそれぞれ所定の読出しポートに接続されることを特徴とする。プログラムの命令は群のみを識別すればよいので、命令の中でポート選択のために占拠される部分は、各ポートが個々に識別される場合に必要になるより小さい部分が占拠されるに過ぎない。
【００１２】
本発明の１つの実施例においては、命令レジスタが命令を送出するための各送出スロットについて第２の数に構成されること、各送出スロットが読出しポートの少なくとも１つの各群に対応すること、及び、特定の機能ユニットが特定の送出スロットからの命令を実行する度毎に該特定の送出スロットに対応する群からの読出しポートにアクセスするように構成されることを特徴とする。このように、送出スロット及び機能ユニットに接続されたポートの群の個々の識別が不要であり、これは、命令が送出スロット及び群の個別の識別を含む場合より、選択のためにはより小さい命令で充分であることを意味する。
【００１３】
本発明の１つの実施例においては、各特定の群が第４の数の所定のポートを含むこと、及び、該第４の数が機能ユニットのいずれか１つによって要求されるオペランドの最大数に等しいことを特徴とする。各群がいずれの機能ユニットをも供給できるようにするため、各群のポートの数はいずれかの機能ユニットによって必要とされるオペランドの最大数に等しい。実際には、一部の機能ユニットはそのように多くのオペランドをレジスタファイルから要求しないかも知れない。
【００１４】
例えば、要求されるオペランドの最大数が（乗算器の場合のように）２とすると、機能ユニットに対して準備される群のポートの数は２である。全くポートを必要としない定数を供給する機能ユニットに対しても、同様に、この数のポートが適用される。
【００１５】
本発明の他の実施例においては、各特定の送出スロットが、該特定の送出スロットに対応する群の読出しポートのそれぞれのアドレス入力部に接続された同じ所定数のアドレスフィールドを含み、該特定の送出スロットからの命令を実行する機能ユニットが、アドレスされたオペランドを要求するか否かに拘わらず、該読出しポートでアドレスされたオペランドにアクセスするように構成されることを特徴とする。このように、どの機能ユニットがポートにアクセスしようとするかに関係なしに、その機能ユニットがポートを全く使用しないかどうかに拘わらず、アドレスフィールドが直接レジスタファイルに出力される。これは、レジスタファイルのためのアドレスデコードが、その送出スロットの命令を実行すべき機能ユニットの選択が行われる直前に開始されるため、処理を高速化する。
【００１６】
命令レジスタの構成が固定フォーマットを持つことが望ましい。即ち、命令レジスタのそれぞれの固有部分の一般の機能（オプコード、オペランドアドレス、命令を実行すべき機能ユニットを識別するためのコード、その他）は、命令の実行に使用される機能ユニットに関係なく、並列に実行するために選択された機能ユニットの組み合わせに関係なく、或いは命令自身に関係なく、少なくとも複数の機能ユニット及び命令については同じであることが望ましい。命令がデコードされるより前にアドレスデコードが開始されるため、これは利点である。更に、例えば、命令レジスタと命令をルーチングするための他のユニットとの間に設けられるスイッチング回路を簡単にする利点もある。
【００１７】
本発明の１つの実施例においては、少なくとも１つの機能ユニットが、１つの命令を実行することを指示されたとき、更に、該１つの命令を送出する送出スロットのアドレスフィールドから情報を受信し、該少なくとも１つの機能ユニットが実行の間該情報をオペランドとして使用することを特徴とする。このように、オペランドは、直接オペランドを必要とする処理に対しては直接オペランド（例えば定数）としても使用される。オプコードがデコードされる前には、或いは少なくともオプコードが指向する機能ユニットの識別がデコートされる前には、そのオペランドが定数かアドレスかいずれであるかは分からない。従って機能ユニットにオペランドが供給されると同時に、レジスタファイルはオペランドをアドレスとしてデコードを開始する。デコードを待つことは処理の速度を低下させる。オペランドが直接オペランドである場合は、レジスタファイルからアクセス可能のデータは無視される。
【００１８】
本発明の１つの実施例においては、マルチポートレジスタファイルが少なくとも１つの書込みポートを有すること、及び、プロセッサが、並列に命令を実行し結果を生成することを指示された機能ユニットに対する書込みポートに選択的にアクセスするための書込みアクセス供与手段を有することを特徴とする。このようにして、レジスタファイルに対して機能ユニットより少ない書込みポートを使用することが可能であり、これは面積と電力消費を低減する。書込みポートの選択は、送出スロットからの明示の選択なしに計画することができる。オプコードの送出と結果の生成との間に利用できる若干の時間があるため、これが処理速度を低下させることはない。
【００１９】
本発明の１つの実施例においては、書込みアクセス供与手段が、機能ユニットが命令を実行することを指示された後のレイテンシー期間に、結果アドレスフィールドの内容に基づいて、機能ユニットの１つの出力部を書込みポートに接続するように構成されることを特徴とする。このように、レジスタファイルへの書込みポートの数は、機能ユニットの数より小さく保つことができる。
【００２０】
本発明の１つの実施例においては、命令レジスタが命令を送出するための各送出スロットについて第２の数に構成されること、各送出スロットが同じそれぞれの数の結果アドレスフィールドを含むこと、及び、書込みアクセス供与手段が該アドレスフィールドの内容を書込みポートのアドレス入力部にルーチングするように構成されることを特徴とする。
【００２１】
本発明の１つの実施例においては、書込みアクセス供与手段が、機能ユニットが命令を実行することを指示された後のレイテンシー期間に、結果アドレスフィールドの内容に基づいて、機能ユニットの１つの出力部を書込みポートに接続するように構成される。機能ユニットが処理を実行するとき、処理の開始と結果が有効になるまでとの間に１クロックサイクル以上のレイテンシーがあることがある。このレイテンシーは使用される機能ユニットによって変化する。
【００２２】
本発明の１つの実施例においては、レジスタファイルが少なくとも２つの書込みポートを持ち、書込み選択手段が予備的割当て手段を有し、該予備的割当て手段がその予備的割当ての後１クロックサイクルの間特定の書込みポートを機能ユニットの１つに予備的に割当て、そのクロックサイクルの中で該機能ユニットの１つの実行の結果が有効になり、更に、該予備的割当て手段が機能ユニットの１つの出力を該特定の書込みポートに接続し、該結果アドレスフィールドの内容を該クロックサイクルの間該特定の書込みポートに送るように構成されることを特徴とする。この実施例によれば、プロセッサが有効になるであろう結果についてのトラックを確保し、結果が書込まれる前に書込みポートの割当てを計画する。
【００２３】
本発明の他の実施例においては、予備的割当て手段が、クロックサイクルの間、特定の書込みポートが以前に機能ユニットの１つに割当てられていないとの制約の下に書込みポートから該特定の書込みポートを選択するように構成されることを特徴とする。このように、これらの結果を生じる処理が異なった時刻に開始されたとしても同時に結果を生成する機能ユニット間の衝突を避けることができる。
【００２４】
【実施例】
次に図面を用いて本発を詳細に説明する。
ＶＬＩＷのＣＰＵは、種々の用途、即ち、スーパーコンピュータからワークステーション及びパーソナルコンピュータに至る用途に使われる。更に、ワークステーション、パーソナルコンピュータ、ビデオ或いはオーディオ製品に専用又はプログラマブルなプロセッサとして使われる。
【００２５】
図１は、従来のＶＬＩＷ装置を示す。命令は命令メモリー102から命令出力レジスタＩＩＲにロードされる。各クロックサイクルに、新しい極めて長い命令が命令出力レジスタＩＩＲから送出される。この命令は、ＶＬＩＷ型ＣＰＵ中の各機能ユニット（CONTROL,CONST,ALU1,ALU2,MUL,FPU,MEM）について１つの送出スロットを含む。ＶＬＩＷマシンは機能ユニットのどのような有用な組み合わせをも包含し得るが、ここではその１つを例示する。そこにはいくつかの機能ユニットと、更に必要とする処理に依存する種々の型の機能ユニットとがある。機能ユニットに対するオペランドは、接続先を分担する複数のポートを持つレジスタファイル101から読出される。機能ユニットからの結果はまたこのファイルに書込まれる。
【００２６】
送出スロットは、機能ユニットの最新のクロックサイクルでスタートする処理を特定する。図２は、CONTROL処理、CONST処理、ALU1処理、ALU2処理、MUL処理、FPU処理、及びMEM処理を含むＶＬＩＷ命令201を示す。言い換えれば、ＶＬＩＷ命令は、図１のＶＬＩＷ型ＣＰＵ中の各機能ユニットについて１つの送出スロットを含む。
【００２７】
202はCONTROL処理に特定された送出スロットの内容を示す。この送出スロットはCONTROLオプコード及び２つのレジスタ仕様Ｒsrc1及びＲsrc2を含む。これらのレジスタはそれぞれソースレジスタ１及びソースレジスタ２である。
203はCONST処理に特定された送出スロットの内容を示す。この送出スロットは、定数値及びレジスタ仕様Ｒdestを含む。このレジスタはデスティネーションレジスタである。
【００２８】
204はALU処理を含む送出スロットの内容を示す。この送出スロットはALUオプコード及び３つのレジスタ仕様Ｒsrc1、Ｒsrc2及びＲdestを含む。
205はMUL処理を含む送出スロットの内容を示す。この送出スロットはMULオプコード及び３つのレジスタ仕様Ｒsrc1、Ｒsrc2及びＲdestを含む。
206はFPU処理を含む送出スロットの内容を示す。この送出スロットはFPUオプコード及び３つのレジスタ仕様Ｒsrc1、Ｒsrc2及びＲdestを含む。
【００２９】
207はMEM処理を含む送出スロットの内容を示す。この送出レジスタはMEMオプコード及び２つのレジスタ仕様Ｒsrc1及びＲsrc2又はＲdestを含む。
これらの送出スロットは例示であり、機能ユニットの他の有用な構成に修正してもよい。
【００３０】
殆どの従来のマシンでは、処理は各サイクルで全ての機能ユニットでスタートさせることが可能である。サイクル”ｉ”でスタートした処理は、１サイクルで又は複数のサイクルで完結する。完結は、処理の結果をデスティネーションレジスタに書込むことによって証明される。結果のない処理（"STORE" のような処理）については、処理の完結は処理に対応する状態の変化が生起する時である。
【００３１】
図１の殆どの機能ユニットは、例えばCONST（定数発生ユニット）のように単純である。このユニットは、デスティネーションレジスタに置かれる定数を生成する。ALU,MUL及びFPUユニットは、１つ又は２つの引数について数学的、論理的及びシフト処理を実行し、デスティネーションレジスタに１つの結果を生成する。
【００３２】
CONTROL及びMEMユニットは若干異なっている。
CONTROLユニットは命令が送出される順序を決める。CONTROLユニットにNOP（処理せず）が送出される場合には、命令は命令メモリーから連続した順序で送出される。CONTROLユニットにCJMPF又はCJMPT（それぞれ、条件ジャンプ偽及び条件ジャンプ真）処理が送出される場合は、Ｒsrc1レジスタの内容が真値、即ちブール関数値を持つと判断され、Ｒsrc2の内容がアドレスとして用いられ、特定の条件に合致したときのみそこから命令の送出が続けられ、他の場合は、命令の送出は連続的に行われる。
【００３３】
MEMユニットはロード処理及び格納処理を実行する。換言すれば、データワードがレジスタファイルとシステム主メモリーとの間を動く。ロード処理は、ロードされるべきデータワードの主メモリーにおけるアドレスとしてＲsrc1を用い、Ｒdestがロードされた値が格納されるべきレジスタを決める。格納処理は、アドレスとしてＲsrc1の定数を用い、格納されるべき値としてＲsrc2の内容を用いる。勿論、ロード処理及び格納処理については多くの変形がある。ロード命令はＲsrc2を必要とせず、格納命令はＲdestを必要としないため、送出スロットはただ２つのレジスタフィールドを必要とするに過ぎない。
【００３４】
ソフトウェアプログラムがＶＬＩＷマシン上で動作するためには、”微粒子並列”翻訳又は”命令レベル並列”翻訳が行われなければならない。これは、ＡＮＳＩＣ等の通常の高水準プログラミング言語をＶＬＩＷマシンのための命令に翻訳するコンパイラによって行われる。ＶＬＩＷマシンで使われるコンパイラは、ジョン・アール・エリス（John R. Ellis ）による「ブルドッグ：ＶＬＩＷアーキテクチャのためのコンパイラ」（BULLDOG:A compiler for VLIW architectures, MIT Press 1985, ISBN 0-262-05034-X ）に記述されている。
【００３５】
図１のＶＬＩＷをピークの処理速度で動作させるためには、１CONTROL,１CONSTANT,２INTEGER ALU,１INTEGER MULTIPLY,１FLOATING POINT及び１MEMORYの処理が各サイクル毎に送出されなければならない。高水準言語で表された実際のプログラムの性質によって、このピークでの実行を維持する処理の適切な混合を見出すことができない。コンパイルの後、与えられたクロックサイクルの中で並列に実行できる一連の処理は、利用できる機能ユニットの型にマッチしない型の混合である。或る場合は、マシンのユニットの数より少ない並列処理が行われるフェーズを通ってプログラムが進む。
これは、種々の問題を生じる。
【００３６】
第１の問題は、レジスタファイルのポートの利用が不充分であることである。中央レジスタファイルのシリコン面積及び電力消費はポートの総数に比例する。従って、このポートの利用度が高いことは重要である。
【００３７】
第２の問題は、ＶＬＩＷ型ＣＰＵをピーク又はピーク付近の性能に維持するために必要な命令の帯域幅が高いことである。NOPコードを含む空スロットがこの帯域幅に寄与する。帯域幅は、直接Ｉキャッシュ（命令キャッシュ）サイズに、そして、バス及び他のメモリーシステムの部品のコストに跳ね返る。
【００３８】
第３の問題は、ＶＬＩＷのために翻訳されたプログラムのためのコードのサイズは、ＲＩＳＣ型ＣＰＵのために翻訳された同一プログラムのサイズより大きいことである。ＶＬＩＷの性能はＲＩＳＣのそれより高いとはいえ、ＶＬＩＷのコストの効率はＲＩＳＣのそれより低いのである。
【００３９】
図３は、本発明によるＶＬＩＷ型ＣＰＵを示す。ＩＩＲはマシンの機能ユニットより少ない送出スロットを持つ。例えば、７つの機能ユニットのマシンに対して３つの送出スロットで足りる。一般に、或る数及び型の機能ユニットに対する送出スロットの数は、平均効率とコストとの間の関係で決まる。しかし、Ｎユニットのマシンは、Ｎ／４と２Ｎ／３との間の送出スロットを持つとするのが合理的である。
【００４０】
ＣＰＵは、複数の群の読出しポート（（Ｒ1a,Ｒ1b）（Ｒ2a,Ｒ2b）（Ｒ3a,Ｒ3b））を有するレジスタファイル403を含む。適切なレジスタファイルの例は、インテルｉＷＡＲＰ＆ｉ９６０チップの中に見出すことができる。それには、ＩＩＲの各スロットのための読出しポートの群がある。読出しポートはレジスタファイルの中のレジスタの内容を読むためのものである。各群のポートの数は、いずれかの機能ユニットが必要とするソースレジスタの最大数と同じである。この場合、２つを超えるソースレジスタを必要とする機能ユニットはないので、読出しポートの各群は２つの読出しポートを有する。このように、２つの読出しポートの群が３つあり、都合６つの読出しポートがある。
【００４１】
入力スイッチ制御902（図６Ｂ）によって制御されるスイッチマトリクス401が、どの読出しポートをどの機能ユニットの入力に接続するかを決める。
【００４２】
レジスタファイルは更に書込みポートの複数の群（Ｗ1,Ｗ2,Ｗ3,Ｗ4）を有する。ＩＩＲの各スロットに対して少なくとも１つの書込みポート群がある。各群の書込みポートの数は、どの機能ユニットも必要とするデスティネーションレジスタの最大数である。この例では、１つを超えるデスティネーションレジスタを必要とする機能ユニットはないので、各群の書込みポートはただ１つである。
【００４３】
第２のスイッチマトリクス402 が、書込み制御ユニット（ＲＦＷＣ）の制御の下で、機能ユニットの出力を書込みポートに接続する。
【００４４】
図４は、新しいＶＬＩＷ命令410のフォーマットを示す。この命令は、処理のための３つのスロットを持つ。各スロットはどのような型の処理をも含む。前記のように６つの型の処理があり、各型は機能ユニットCONTROL,CONST,ALU,MUL,FPU,及びMEMのそれぞれの型である。
【００４５】
この送出スロットは前記の送出スロットとは種々の点で異なる。
第１は、送出スロットはスロット全て同じ長さである。送出スロットの内容のフォーマットは、CONTROL,CONST,ALU,MUL,FPU,及びMEMのそれぞれに対して420,430,440,450,460及び470に示されている。スロットが一定長のため、CONTROL型の処理420の終端に若干のブランクスペースを挿入する必要が生じる。
【００４６】
第２は、送出スロットの全てがどの機能ユニットが処理を実行するかを識別する手段を有する。図では、全ての送出スロットがユニット識別フィールドunit-idを持ち、これが処理を予定している機能ユニットを識別する。８つまでの機能ユニットを持つマシンについては、ユニット識別フィールドは３ビット幅を必要とするに過ぎない。
【００４７】
これらの通常の技術では、ユニットを識別する方法は多くの他の方法で置き換えることができる。１つの代替方法は、オプコードにユニットを含ませることである。もう１つの代替方法は、オプコードにユニットの型を含ませ、ハードウェアをその型のユニットに割り当てることである。
【００４８】
図３のＶＬＩＷ型ＣＰＵでは、各クロックサイクルに３つの処理命令がＩＩＲから送出される。送出スロットのソースレジスタフィールド（Ｒsrc1, Ｒsrc2）は、レジスタファイルの読出しポート（（Ｒ1a,Ｒ1b）（Ｒ2a,Ｒ2b）（Ｒ3a,Ｒ3b））をアドレスするために使用される。ユニット識別フィールドに基づいて、オプコード制御は定められた機能ユニットにルーチングされる。
【００４９】
全ての送出スロットのデスティネーションレジスタは書込み制御ユニット（ＲＦＷＣ）にルーチングされる。この書込み制御ユニットは、各機能ユニットのレイテンシーを知り、結果が生成されたときにトラックを確保する。この書込み制御ユニットは、レジスタファイル中に結果を書込むために適当なバスを割り当てる。３送出スロットマシンでは、ユニットレイテンシーが等しくないことによるトラヒックのバーストを処理するために３つ以上の書込みバスがある。ここでは、４つの書込みバスがある。
【００５０】
前記の例は１つの実施例に過ぎない。設計者は、予想される仕事量に基づいて機能ユニットの数と型を選ぶ必要がある。設計者はまた、ＩＩＲの中の送出スロットの数とコストパフォーマンスを最良にする書込みバスの数も選ばなければならない。
【００５１】
好ましい実施例のアーキテクチャは、容易な上方互換性を与える。例えば、追加のFPU,ALU及びCONSTを含み、ＩＩＲのスロットの数を４つに増すことによって、高度の性能のＣＰＵを作る場合を仮定する。古いユニット識別フィールド値が新しいマシンの同じユニットの型にマップする限りは、新しいマシンは、古いマシンからのバイナリーのユニットＩＤを用いることができる。古いマシンのコードイメージは、従って新しいマシン上でも動作する。例えば、プログラムのロードフェーズの間追加のNOP処理を加える。新しいマシンが古いマシンより広いフィールドを持つ場合は、ユニット識別フィールドにゼロを追加するだけでよい。しかしながら、再コンパイル、再スケジューリング、コードの再アセンブル等は必要なく、全ての互換性出力はプログラムロードの時に解決できる。
【００５２】
図５は、レジスタファイルの読出しポート（（Ｒ1a,Ｒ1b）（Ｒ2a,Ｒ2b）（Ｒ3a,Ｒ3b））と機能ユニットの入力との間のスイッチングマトリクスの実施例を示す。このスイッチングマトリクスに対しては、多くの代替技術がある。
マルチプレクサ801は、対応する機能ユニットの入力ポートに接続されており、各レジスタファイルの読出しポートは全てのマルチプレクサ801の入力に接続されている。例えばポートＲ1bは、全ての機能ユニットのマルチプレクサのＢ入力に接続されている。
【００５３】
命令が送出段に到達すると、ＩＩＲがその命令のバイナリーコードを含む。命令が送出されると、各送出スロットのＲsrc1及びＲsrc2のフィールドがレジスタファイル読出しポート（（Ｒ1a,Ｒ1b）（Ｒ2a,Ｒ2b）（Ｒ3a,Ｒ3b））に対するアドレスを読出すために使用される。これにより、６つのレジスタの全てが読出される。実際にはこれらのレジスタが全て必要ではない場合もある。例えばスロット１が定数型の処理を送出する場合もある。この場合はレジスタファイルのアドレスはランダムである。しかしながら、送出された処理がＲsrc1又はＲsrc2又は両者を必要とする場合は、適宜のレジスタ値が機能ユニットの全てのＭＵＸ入力で、特に処理が実行されるべき機能ユニットのＭＵＸで有効になる。
【００５４】
図６Ａは、レジスタファイル403とその読出しポート及びアドレッシングポートを示す。図６Ｂは、入力スイッチ制御論理ブロック902を示す。
図示したように、レジスタファイル403に対する読出しアドレス入力（（ＡＲ1a,ＡＲ1b）（ＡＲ2a,ＡＲ2b）（ＡＲ3a,ＡＲ3b））は、全て６ビット幅で命令送出レジスタＩＩＲのレジスタソースフィールドから供給される。即ち、それぞれ、IIR.issue1.Ｒsrc1、IIR.issue1.Ｒsrc2、IIR.issue2.Ｒsrc1、IIR.issue2.Ｒsrc2、IIR.issue3.Ｒsrc1、IIR.issue3.Ｒsrc2である。これらのアドレスを基にして、オペランドがそれを必要とする機能ユニットに対して読出しポート（（Ｒ1a,Ｒ1b）（Ｒ2a,Ｒ2b）（Ｒ3a,Ｒ3b））から供給される。
【００５５】
書込みアドレス入力（Ｗ1.wa,Ｗ2.wa,Ｗ3.wa,Ｗ4.wa）及び書込みエネーブル入力（Ｗ1.we,Ｗ2.we,Ｗ3.we,Ｗ4.we）が図９ＡのＲＦＷＣから供給される。処理の結果は、図８のマルチプレクサ801,802,803及び804からＷ1,Ｗ2,Ｗ3及びＷ4に供給される。
【００５６】
入力スイッチ制御902に対するアドレッシング入力、即ちIIR.issue1.unitID、IIR.issue2.unitID、IIR.issue3.unitIDは、命令送出レジスタのユニット識別フィールドから供給される。これらのアドレッシング入力から、入力スイッチ制御902が２ビット信号M0C,M1C,M2C,M3C,M4C,M5C及びM6Cを決める。これらのマルチプレクサ制御信号はマルチプレクサ801に供給され、レジスタファイルからそれぞれの機能ユニット入力に対してオペランドを供給する読出しバスを選択する。
【００５７】
図７は、全ての機能ユニットのための全てのオプコードを発生するオプコードの生成及び送信論理の例を示す。
【００５８】
入力スイッチ制御902は、例えば標準セル論理、ＰＬＡ又はＲＯＭルックアップテーブルのような、既知の種々の方法で実現できる機能論理ブロックである。ここでは、以下のユニットＩＤ割当てを仮定する。即ち、ユニット０＝control，ユニット１＝CO，ユニット２＝ALU1，ユニット３＝ALU2，ユニット４＝MUL，ユニット５＝FPU，ユニット６＝MEMである。更に、マルチプレクサ制御フィールドの１が最左側入力を、２が中央の入力を、そして３が最右側の入力を選択すると仮定する。これらの仮定から、任意のユニットＩＤの割当ての組み合わせから必要なマルチプレクサ制御フィールドの組み合わせへの変換テーブルを構成できる。このテーブルから若干の入力及び出力ベクトルを次に例示する。
【００５９】
【表１】
0003916680.tif 000002
【００６０】
注（１）：送出スロットissue１がCONST(定数)ユニットの処理を送出する。CONSTユニットは入力を持たないのでマルチプレクサ制御を受けない。しかしながら、図７のオプコードルーチング論理は、COユニットオプコード結果マルチプレクサを制御するためにM1C信号を必要とする。送出スロットissue２はMUL処理、即ちここではM4C＝２を送出し、これにより、MUL(乗算器)ユニットの２つのマルチプレクサがＲ2ポート値を選択するようにセットされる。他の全てのマルチプレクサは位置０にセットされ、これがオプコード送信論理上で特定の用途を持つ。送出スロットissue３によって送出されたユニット６の処理がロードされると、Ｒsrc2オペランドはロード処理によって使用されないので、MEMユニットにルーチングされたオプコードに基づいてＲ3bバスの値は無視される。
【００６１】
注（２）：処理が送出される１つのユニットに対する全てのマルチプレクサが、これらの処理を送出する送出スロットに対応するレジスタポートを選択する。これは入力スイッチ制御ブロックの論理式を作るための一般則である。
【００６２】
レジスタ読出しポート値のスイッチングに並行して、図７の回路が個々の機能ユニットオプコードを発生する。図５と同一のマルチプレクサ制御信号がこの回路で使われる。規則は、送出スロットＸがユニットＹに対する処理を含む場合はユニットＹがマルチプレクサ制御信号値Ｘを受信し、Ｙのマルチプレクサは送出スロットＸの中のオプコードフィールドをその処理のためのオプコードとして選択する、とするものである。
【００６３】
何も送出されないユニットは、マルチプレクサ選択信号ゼロを受信する。そうすると、そのユニットに対して無処理(NOP)オプコードを発生する。これは、その無処理コード（図示せず）を受信するマルチプレクサに対して追加の入力を加えるか、或いはオプコードマルチプレクサユニットの論理式を変更するかによって行われる。
【００６４】
図７では、CONSTユニットが特別である。これは実際にはダミーユニットである。それは、COユニット処理が送出された送出スロットのオプコード、Ｒsrc1及びＲsrc2フィールドの連鎖であるバイナリー値を発生し出力する。
【００６５】
図５−７の実施例の多くの代替技術が考えられる。例えば、高パフォーマンスのマシンは多分パイプラインになろう。このような場合、パイプラインレジスタ及びバイパス回路がこの基礎設計に付加される。更に、１つの処理におけるユニット識別フィールド及びオプコードフィールドは、フィールド間の可動境界を持つ単一のフィールドに結合することができる。この可動境界は、種々の機能ユニットに要求される種々の数のオプコードビットに適応する。例えば、ALUはMLU又はMEMユニットに比較してかなり多くのオプコードビットを必要とする。この場合は、ALUに対してはMUL及びMEMに対してより、ユニット識別フィールドは短く、オプコードフィールドは長くなる。この場合、オプコード送信論理が最長の可能なオプコードを表すビットの組を受信するのと同時に、入力スイッチ制御ブロックが、最長の可能なユニットＩＤを表すビットの組を受信できる。
【００６６】
他の変形も可能である。ユニット識別フィールドを使わなくてもよい。ハードウェアとしては、どのオプコードをどの機能ユニットの型にマップするかについてテーブルを使い、ユニット識別フィールドをダイナミックに割り当てることができる。
【００６７】
図８は、出力マトリクス402を更に詳細に示す。機能ユニットは実行した処理の結果を出力レジスタ806,807,808,809及び810に書込む。レジスタ806,807,808,809及び810は、書込みポートマルチプレクサ801,802,803及び804に接続される。図７に示すように、CONSTユニットの中ではオプコードと結果の導出との間に時間の経過はないので、CONSTユニットオプコードは直接マルチプレクサ801,802,803及び804に接続される。マルチプレクサ801,802,803及び804は、制御入力W1MC,W2MC,W3MC及びW4MCに基づいてそれらの出力Ｗ1,Ｗ2,Ｗ3及びＷ4にそれぞれにつながる入力を選択する。出力Ｗ1,Ｗ2,Ｗ3及びＷ4は、それぞれ３２ビット幅でレジスタファイル403の書込みポートに接続される。制御入力W1MC, W2MC, W3MC及びW4MCは、レジスタファイル書込み制御ユニット（ＲＦＷＣ）によって供給される。
【００６８】
図９Ａは、レジスタファイル書込み制御ユニット（ＲＦＷＣ）を示す。ＲＦＷＣの入力は、ＩＩＲからのユニットＩＤ（issue1.unitID、issue2.unitID、issue3.unitID）及びデスティネーションレジスタアドレス（issue1.Ｒdest、issue2.Ｒdest、issue3.Ｒdest）である。
ＲＦＷＣは、出力として、４つのマルチプレクサ制御信号（W1MC, W2MC, W3MC及びW4MC）、レジスタファイルをアドレスするための４つの書込みアドレス（Ｗ1.wa, Ｗ2.wa, Ｗ3.wa, Ｗ4.wa）及びレジスタファイルを指向する更に４つの書込みポート書込みエネーブル信号（Ｗ1.we, Ｗ2.we, Ｗ3.we, Ｗ4.we）を生成する。
【００６９】
図９Ｂは、ＲＦＷＣ／ＷＥエンコーダーを示す。ユニットＩＤ及びオプコードを取り入れ、ＲＦＷＣのための書込みエネーブル入力を生成する。エンコーダーは、ＲＯＭ，ＰＬＡ又は論理であってもよい。エンコーダーは、処理が次の処理、即ちCONST,ALU,MUL,FPU及びMEMのロードについての結果を持つ場合は”１”を得る。エンコーダーは、CONTROL及びMEMの格納について結果がない場合は”０”を得る。
【００７０】
図１０は、ＲＦＷＣブロックの１つの実行例を示す。この例は、２つのサブブロック、即ちＳＬＯＴブロック1001及びＬＡＴブロック1002を含む。ＳＬＯＴには４つの行と４つの列がある。４つの列は、レジスタファイルの４つの書込みポートＷ1,Ｗ2,Ｗ3 及びＷ4に対して必要である。４つの行は、機能ユニットの４つの可能なレイテンシーに対して必要である。表にレイテンシーの値を示した。機能ユニットのレイテンシーは、そのユニットの処理のスタートからその処理の結果が書込みマルチプレクサの入力点で有効になるまでの間のクロックサイクルの数である。
【００７１】
【表２】
0003916680.tif 000003
【００７２】
例えばMULのような各ユニットＩＤについて、対応する入力書込みエネーブル信号が真の場合は、ＲＦＷＣのＬＡＴブロックによってレイテンシーが見出される。MULユニットの場合はレイテンシーは２である。ＲＦＷＣはそれにより見出されたレイテンシーに対応するレイテンシー行に対してエネーブルフラグをセットする。MUL機能ユニットについてはフリーのＳＬＯＴがレイテンシー行２に位置しており、そこにユニットＩＤ書込みアドレス及び書込みエネーブル情報が格納される。続く２クロックサイクルの間、この情報は１つの列に沿ってレイテンシー行０に送られる。
【００７３】
各ＳＬＯＴ行は特定のレイテンシーのために用いられる。最上行はレイテンシー３のために使われ、最下行はレイテンシー０のために使われる。各行はクロックサイクル毎にデータを下の行へ送る。送られるデータは、ユニットＩＤ、書込みアドレス及び書込みエネーブル表示である。レイテンシー行０の出力は、ＲＦＷＣブロックの出力である。
【００７４】
各行は、ＬＡＴサブブロック1002で生成された３つの書込みエネーブル制御信号を得る。行の最右側ＳＬＯＴがこれらの制御入力を得る。若干の論理処理の後、この最右側ＳＬＯＴは３つの制御処理を同一行の左側の次のＳＬＯＴブロックに送る。例えば、ＳＬＯＴ33は３つの書込みエネーブル信号（Ｌ1.we,Ｌ2.we,Ｌ3.we）をＬＡＴブロックから得る。ＳＬＯＴ33の制御出力はスロット23に送られる。ＳＬＯＴ33のデータ出力はＳＬＯＴ32に送られる。
【００７５】
各ＬＡＴユニットは、ユニットＩＤ（unitid）及び書込みエネーブル信号（we）をＩＩＲの送出スロットから得る。この例のＩＩＲには３つのスロットがあるので、３つのＬＡＴユニットがある。ＬＡＴユニットは４つの書込みエネーブル信号（we0,we1,we2,we3）を生成する。ユニットＩＤがCONST（レイテンシー＝０）であり且つ対応するweが真の場合は、we0が真になる。ユニットＩＤがALU1,ALU2又はMEM（レイテンシー＝１）であり且つ対応するweが真の場合は、we1が真になる。ユニットＩＤがMUL（レイテンシー＝２）であり且つissue.weが真の場合は、we2が真になる。ユニットＩＤがFPU（レイテンシー＝３）であり且つissue.weが真の場合は、we3が真になる。
【００７６】
図１１は、ＳＬＯＴサブブロックの１つの実行例を示す。各ＳＬＯＴはＩＩＲから４つのデータ入力（in1,in2,in3,in4）を得て、１つのデータ出力（out）を生成する。in1,in2,in3,in4及びoutはそれぞれ９線を持ち、そのうち３線はユニットＩＤを送り、６線は書込みアドレス（wa）を送る。第１の入力（in1）はIIR.issue1.unitid及びIIR.issue1.Rdestである。第２の入力（in2）はIIR.issue2.Rdest及びIIR.issue2.unitidである。第３の入力（in3）はIIR.issue3.Rdest及びIIR.issue3.unitidである。第４の入力（in4）は、最上行を除いて、上の行スロットの出力に接続されている。最上行ではこの入力は全てゼロの受信に接続される。
【００７７】
各ＳＬＯＴは、４つの制御信号（"we indicator in",i1.we,i2.we及びi3.we）を得る。信号i1.we,i2.we,及びi3.weは、行の最右側のブロックを除いて、右側の次のブロックから来る。行の最右側のブロックには、対応するＬＡＴブロックから来る。信号"we indicator in" は、最上のブロックを除いて、上のブロックから来る。最上のブロックには”０”の線が接続されている。
加えて、１つの行スロットの"we indicator in" は、上のＳＬＯＴの"we indicator out" に接続されている。最上行のＳＬＯＴは"0""we indicator in"を受信する。
【００７８】
各ＳＬＯＴは４つの制御信号（o1.we,o2.we,o3.we,"we indicator out"）を生成する。信号o1.we,o2.we及びo3.weは、最左側のスロットを除いて、左側の次のブロックに供給される。最左側のスロットはどこにも接続されていない。信号"we indicator out"は、最下側のスロットを除いて、下の次のブロックに供給される。最下側のスロットからは、書込みポートエネーブル信号（Ｗ1.we,Ｗ2.we,Ｗ3.we,Ｗ4.we）としてレジスタファイルに供給される。最下行のout.unitid信号は、図８のマルチプレクサ801,802,803及び804に供給されるW1MC,W2MC,W3MC及びW4MC信号である。最下行のout.wa信号は、図６Ｂのレジスタファイル403に供給されるレジスタファイル書込みアドレス（Ｗ1.wa,Ｗ2.wa,Ｗ3.wa,Ｗ4.wa）である。
【００７９】
各ＳＬＯＴは４つのサブブロックを持つ。４：１マルチプレクサＭＵＸは、we1,we2,we3及びweの制御の下でin1,in2,in3及びin4の１つを選択する。優先的エンコーダーＰＲＥＮは、入力we,i1.we,i2.we及びi3.weからwe1,we2,we3,we, o1.we,o2.we及びo3.weを生成する。４入力論理ＯＲゲートは、入力としてwe1,we2,we3及びweを有する。ＭＵＸはレジスタＲＥＧ１に出力し、ＯＲはレジスタＲＥＧ２に出力する。レジスタの出力は、ブロックの出力になる。最下行のスロットは、格納する必要がないためこれらのレジスタを持たない。
【００８０】
ＰＲＥＮユニットにより、全てのレイテンシーに対する書込みエネーブルの全ての可能な組み合わせについて、必要なレイテンシー行でフリースロットが確実に見出される。ＰＲＥＮについての真値テーブルを次に示す。
【００８１】
【表３】
0003916680.tif 000004
【００８２】
図１１のＭＵＸは、"we indicator in" 信号が活性化されている場合に、in4をoutに接続する。we3が活性化されている場合にin3を、we2が活性化されている場合にin2を、we1が活性化されている場合にin1を、それぞれoutに接続する。ＰＲＥＮユニットは、或る時刻にはその中の１つだけを活性化("１"に)する。
【００８３】
図９−１１に示したＲＦＷＣ書込み制御ユニットハードウェアは、プログラマー又はコンパイラが、４つを超える書込みの同時生起を防ぐことを必要としている。例えば、次の処理シーケンスは禁止される。
time ｉ    ：ＦＰＵ ...
ｉ＋１：ＭＵＬ ...
ｉ＋２：ＡＬＵ1,ＡＬＵ2 ...
ｉ＋３：ＣＯ ...
【００８４】
この例示シーケンスは、５つのレジスタファイルへの書込みバスを必要とする。即ち、サイクルｉ＋３で完結するＣＯ処理の結果を書込むために１つ、ｉ＋２で処理がスタートしてｉ＋３で完結するＡＬＵ1処理及びＡＬＵ2処理のために２つ、ＭＵＬ処理のために１つ、及び、ＦＰＵ処理のために１つである。
【００８５】
処理のある種の稀なシーケンスの禁止がシステムの効率とハードウェアのコスト低減に明らかに影響している。この特別な例においては、４つの書込みポートを持つレジスタファイルが、ずっと高価な５つの書込みポートを持つレジスタファイルに代わって充分効果があることが明確になった。
【図面の簡単な説明】
【図１】  従来のＶＬＩＷ型ＣＰＵを示す図である。
【図２】  従来のＶＬＩＷ命令語のフォーマットを示す図である。
【図３】  本発明のＶＬＩＷ型ＣＰＵを示す図である。
【図４】  本発明のＶＬＩＷ命令語のフォーマットを示す図である。
【図５】  スイッチングマトリクス401の細部を示す図である。
【図６Ａ】  レジスタファイルへの入力及びそれからの出力を示す図である。
【図６Ｂ】  スイッチ制御への入力及びそれからの出力を示す図である。
【図７】  オプコード送信論理を示す図である。
【図８】  出力マトリクス402の細部を示す図である。
【図９Ａ】  レジスタファイルの書込制御ユニットを示す図である。
【図９Ｂ】  ＲＦＷＣ／ＷＥエンコーダーを示す図である。
【図１０】  レジスタファイルの書込制御ユニットの細部を示す図である。
【図１１】  図１０のＳＬＯＴブロックの細部を示す図である。
【符号の説明】
１０１  レジスタファイル
１０２  メモリー
２０１−２０７  送出スロット
４０１、４０２  スイッチマトリクス
４０３  レジスタファイル
４１０  新しいＶＬＩＷ命令のフォーマット
４２０−４７０  送出スロットの内容のフォーマット
８０１−８０４  マルチプレクサ
８０６−８１０  出力レジスタ
９０２  入力スイッチ制御
１００１  ＳＬＯＴブロック
１００２  ＬＡＴブロック
【図１】
0003916680.tif 000005
【図２】
0003916680.tif 000006
【図３】
0003916680.tif 000007
【図４】
0003916680.tif 000008
【図５】
0003916680.tif 000009
【図６】
0003916680.tif 000010
【図７】
0003916680.tif 000011
【図８】
0003916680.tif 000012
【図９】
0003916680.tif 000013
【図１０】
0003916680.tif 000014
【図１１】
0003916680.tif 000015