(57)【特許請求の範囲】
【請求項１】
第２のメモリとの間でデータを入力および／または出力可能な第１のメモリと、
少なくとも１つのデータフローが形成され、その少なくとも１つのデータフローの少なくとも１部を再構成可能な処理ユニットとを有し、
この処理ユニットは、前記第１のメモリとの間で入力および／または出力されるデータを処理するデータ処理区画と、
前記第１のメモリと前記データ処理区画との間で入力および／または出力されるデータの第１のアドレスを出力する第１のアドレス出力区画と、
前記第２のメモリと前記第１のメモリとの間で入力および／または出力されるデータの第２のアドレスを出力する第２のアドレス出力区画と、を備えており、
前記データ処理区画に形成されるデータフローの構成または処理結果により、前記第１のアドレス出力区画および／または前記第２のアドレス出力区画に関わるデータフローの少なくとも１部を再構成し、前記第１のメモリおよび／または第２のメモリに対するアクセス方法を決定する集積回路装置。
【請求項２】
前記第１のアドレスは前記第１のメモリのアドレスであり、前記第２のアドレスは前記第２のメモリのアドレスである、請求項１の集積回路装置。
【請求項３】
前記第１のアドレス出力区画および前記第２のアドレス出力区画に関わるデータフローの少なくとも一部を再構成し、前記第２のアドレス出力区画と前記第１のアドレス出力区画とが関連して機能する構成と、前記第２のアドレス出力区画と前記第１のアドレス出力区画とが独立して機能する構成とに変更可能である、請求項１の集積回路装置。
【請求項４】
前記第１のメモリは独立に入出力可能な複数の格納区画を備えている、請求項１の集積回路装置。
【請求項５】
前記第１のメモリは、前記データ処理区画に入力されるデータを格納する第１の入力メモリと、前記データ処理区画から出力されたデータを格納する第１の出力メモリとを備えている、請求項１の集積回路装置。
【請求項６】
前記第１のメモリと前記データ処理区画との間の入力および／または出力を管理する第１の調停ユニットを有する、請求項１の集積回路装置。
【請求項７】
前記第１の調停ユニットは、前記データ処理区画との間の入力または出力の条件を満たさない場合にストップ信号を前記データ処理区画に出力する機能を備えている、請求項６の集積回路装置。
【請求項８】
前記データ処理区画は、前記ストップ信号により、当該データ処理区画に形成された少なくとも１つのデータフローの処理を停止する機能を備えている、請求項７の集積回路装置。
【請求項９】
前記第１のメモリは、前記データ処理区画に入力されるデータを格納する第１の入力メモリと、前記データ処理区画から出力されたデータを格納する第１の出力メモリとを備えており、
前記第１の調停ユニットは、前記第１の入力メモリから前記データ処理区画へのデータの転送を管理する第１の入力調停ユニットと、前記データ処理区画から前記第１の出力メモリへのデータの転送を管理する第１の出力調停ユニットとを備えている、請求項６の集積回路装置。
【請求項１０】
前記第１のメモリは独立に入出力可能な複数の格納区画を備えており、
前記第１の調停ユニットは、前記複数の格納区画のそれぞれを独立して管理する機能を備えている、請求項６の集積回路装置。
【請求項１１】
前記第１のメモリは独立に入出力可能な複数の格納区画を備えており、
前記第１の調停ユニットは、前記複数の格納区画を関連付けして管理する機能を備えている、請求項６の集積回路装置。
【請求項１２】
前記データ処理区画には複数のデータフローを構成可能であり、さらに
複数の前記第１のメモリを有し、
前記処理ユニットには、各々の前記第１のメモリに対応する前記第１および第２のアドレス出力区画が形成される、請求項１の集積回路装置。
【請求項１３】
前記第２のメモリと前記複数の第１のメモリとの間の入出力を管理する第２の調停ユニットを有し、前記第２のアドレスは前記第２の調停ユニットに供給される、請求項１２の集積回路装置。
【請求項１４】
前記処理ユニットは、機能を変更可能な複数の単一種類の論理要素と、これらの論理要素を接続する配線群とを備えている、請求項１の集積回路装置。
【請求項１５】
前記処理ユニットは、それぞれ異なる特定の処理に適した内部データパスを備えた複数種類の専用処理要素と、これらの専用処理要素を接続する配線群とを備えている、請求項１の集積回路装置。
【請求項１６】
前記処理ユニットは、アドレスを出力するのに適した前記内部データパスを備えた前記専用処理要素を備えている、請求項１５の集積回路装置。
【請求項１７】
前記専用処理要素は、前記内部データパスの一部を選択する手段と、前記内部データパスの選択を記憶するコンフィグレイションメモリとを備えている、請求項１５の集積回路装置。
【請求項１８】
前記コンフィグレイションメモリの内容を書き換える制御ユニットを有する、請求項１７の集積回路装置。
【請求項１９】
前記処理ユニットのデータフローの少なくとも１部の変更を指示する制御ユニットを有する、請求項１の集積回路装置。
【請求項２０】
前記制御ユニットは、前記データ処理区画、第１のアドレス出力区画、または前記第２のアドレス出力区画のデータフローの変更を独立に指示可能である、請求項１９の集積回路装置。
【請求項２１】
前記制御ユニットを制御するプログラムコードを記憶するコードメモリを有する、請求項１９の集積回路装置。
【請求項２２】
前記第２のメモリを有し、この第２のメモリは、第３のメモリとの間でデータを入力および／または出力可能であり、
前記第３のメモリと前記第２のメモリとの間で入力および／または出力されるデータの第３のアドレスを出力する第３のアドレス出力手段を有する、請求項１の集積回路装置。
【請求項２３】
少なくとも１つのデータフローが形成され、その少なくとも１つのデータフローの少なくとも１部を再構成可能な処理ユニットであって、
第２のメモリとの間でデータを入力および／または出力可能な第１のメモリとの間で入力および／または出力されるデータを処理するデータ処理区画と、
前記第１のメモリと前記データ処理区画との間で入力および／または出力されるデータの第１のアドレスを出力する第１のアドレス出力区画と、
前記第２のメモリと前記第１のメモリとの間で入力および／または出力されるデータの第２のアドレスを出力する第２のアドレス出力区画と、を有し、
前記データ処理区画に形成されるデータフローの構成または処理結果により、前記第１のアドレス出力区画および／または前記第２のアドレス出力区画に関わるデータフローの少なくとも１部を再構成し、前記第１のメモリおよび／または第２のメモリに対するアクセス方法を決定する処理ユニット。
【請求項２４】
前記第１のアドレス出力区画および前記第２のアドレス出力区画に関わるデータフローの少なくとも一部を再構成し、前記第２のアドレス出力区画と前記第１のアドレス出力区画とが関連して機能する構成と、前記第２のアドレス出力区画と前記第１のアドレス出力区画とが独立して機能する構成とに変更可能である、請求項２３の処理ユニット。
【請求項２５】
前記データ処理区画には複数のデータフローを構成可能であり、さらに、
複数の前記第１のメモリの各々に対応する前記第１および第２のアドレス出力区画を備えている、請求項２３の処理ユニット。
【請求項２６】
それぞれ異なる特定の処理に適した内部データパスを備えた複数種類の専用処理要素と、これらの専用処理要素を接続する配線群とを有する、請求項２３の処理ユニット。
【請求項２７】
アドレスを出力するのに適した前記内部データパスを備えた前記専用処理要素を有する、請求項２６の処理ユニット。
【請求項２８】
請求項２６に記載の処理ユニットと、
前記第１のメモリとを有する処理装置。
【請求項２９】
前記処理ユニットのデータフローの少なくとも１部の変更を指示する制御ユニットをさらに有する、請求項２８の処理装置。
【請求項３０】
第２のメモリとの間でデータを入力および／または出力可能な第１のメモリと、少なくとも１つのデータフローが形成され、その少なくとも１つのデータフローの少なくとも１部を再構成可能な処理ユニットとを有する集積回路装置の制御方法であって、
前記処理ユニットに対し、前記第１のメモリとの間で入力および／または出力されるデータを処理するデータ処理区画と、前記第１のメモリと前記データ処理区画との間で入力および／または出力されるデータの第１のアドレスを出力する第１のアドレス出力区画と、前記第２のメモリと前記第１のメモリとの間で入力および／または出力されるデータの第２のアドレスを出力する第２のアドレス出力区画とを構成するように指示し、前記データ処理区画に形成されるデータフローの構成または処理結果により、前記第１のアドレス出力区画および／または前記第２のアドレス出力区画に関わるデータフローの少なくとも１部を再構成し、前記第１のメモリおよび／または第２のメモリに対するアクセス方法を決定する工程を有する集積回路装置の制御方法。
【請求項３１】
前記指示する工程は、前記データ処理区画、前記第１のアドレス出力区画、または、第２のアドレス出力区画のデータフローの変更を独立して指示する工程を備えている、請求項３０の制御方法。
【請求項３２】
前記指示する工程では、前記第１のアドレス出力区画および前記第２のアドレス出力区画に関わるデータフローの少なくとも１部を再構成し、第２のアドレス出力区画と前記第１のアドレス出力区画とが関連して機能する、または、前記第２のアドレス出力区画と前記第１のアドレス出力区画とが独立して機能するように指示する、請求項３０の制御方法。
【請求項３３】
前記データ処理区画には複数のデータフローを構成可能であり、さらに、
前記指示する工程では、複数の前記第１のメモリの各々に対応する前記第１および第２のアドレス出力区画を形成するように指示する、請求項３０の制御方法。
【請求項３４】
前記データ処理区画に少なくとも１つのデータフローを形成し、前記第１のメモリと入力および／または出力するデータに関連する処理を実行する工程を有し、この実行する工程では、前記第１のメモリと前記データ処理区画との間の入力および／または出力を管理する第１の調停ユニットが入力または出力の条件を満たさない場合に出力するストップ信号により、当該データ区画に形成された少なくとも１つのデータフローの処理を停止する、請求項３０の制御方法。
【発明の詳細な説明】
技術分野
本発明は、データフローを再構成可能な集積回路装置に関するものである。
背景技術
ＲＡＭ、ＲＯＭあるいは磁気ディスクなどのメモリに格納されたデータあるいは命令（以降においては、特に命令とデータを区別する必要がないときはデータと称する）をＣＰＵなどで処理する場合、キャッシュあるいはキャッシュメモリと呼ばれる比較的小容量ではあるが高速なメモリを用い、データの時間的局所性あるいは空間的局所性を利用してデータへのアクセス速度を向上するようにしている。したがって、プロセッサあるいはプロセッサコアを搭載した、ＶＬＳＩ、システムＬＳＩあるいはシステムＡＳＩＣなどと称される集積回路装置においては、キャッシュメモリとそれを制御するＭＭＵなどの回路を備えたキャッシュシステムが搭載されている。
キャッシュメモリを利用する場合は、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）およびＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）を用いて、ＣＰＵコアから出力される仮想あるいは論理アドレスに対応したデータがキャッシュメモリにあれば、ＣＰＵコアに対してはキャッシュメモリのデータが入出力される。キャッシュメモリにデータがない場合は、ＭＭＵおよびＴＬＢによって仮想アドレスが物理アドレスに変換されて外部のメモリに対して入出力が発生し、キャッシュメモリのデータも更新される。したがって、ＭＭＵなどを備えたキャッシュ制御機構により、ＣＰＵコアで動作するソフトウェアに対しては、キャッシュメモリは透過的な存在となるように構成されている。このため、ソフトウェアはハードウェアに依存しない仮想アドレスに基づき動作するように開発すれば良く、開発および設計にかかる時間およびコストを低減することができる。また、同一のソフトウェアを、異なるハードウェアでも稼動させることができ、ソフトウェア資産を有効に利用できる。
ＣＰＵコアから出力された仮想アドレスのデータがキャッシュメモリに存在しない、すなわち、キャッシュメモリにヒットしないときは外部メモリに対して入出力処理が発生する。したがって、キャッシュメモリのヒット率が少ない場合は、キャッシュメモリは単にオーバヘッドになるだけであり、プログラムの実行時間に悪影響を及ぼす。このため、ヒット率を改善するために、命令キャッシュとデータキャッシュを分離したり、キャッシュを多階層化したり、機械的にあるいはソフトウェア的にプリフェッチするなどの技術が検討されている。
しかしながら、命令キャッシュとデータキャッシュを分離する場合は、１つのブロックに命令とデータが同時に存在すると、その取り扱いが難しくなる。たとえば、命令を書き換える処理があるとソフトウェアの処理に支障をきたす可能性がある。さらに、命令とデータへのアクセスが均等でないソフトウェアでは、単にキャッシュを分離しても効率は向上しない。たとえば、データへのアクセスが離散的であれば、データキャッシュの利用効率が低くなり、オーバヘッドになってしまう可能性もある。
多階層キャッシュは、キャッシュと外部メモリとのアクセス時間や記憶容量の差が大きい場合は有効である。しかしながら、多階層化することによりメモリにアクセスする回数は必然的に増加するので、ソフトウェアの構成や、処理するデータの入出力メディアなどの条件によってはオーバヘッドになる可能性は常にある。
プリフェッチした場合でも、分岐などのときのペナルティーを解消することはできない。数値計算プログラムにおいて配列要素の参照が多く、アクセスする要素が予め予想できるソフトウェアであると、プリフェッチ命令を用いてキャッシュのペナルティーは減少できるが、プリフェッチ命令を実行するためにＣＰＵの時間を費やすことになり、効果的に利用できるソフトウェアは限定される。
上述したように、いずれの技術も、ＣＰＵで実行するソフトウェアと、データが格納されているメディアなどの条件がキャッシュメモリの方式と合致する場合は、キャッシュメモリのヒット率を向上することは可能である。しかしながら、キャッシュメモリは外部メモリとの間に中間的に配置されるハードウェアであるために、実行されるソフトウェアの処理内容や、そのソフトウェアの処理対象となるデータが格納されたハードウェアの環境などが異なると、予定しているキャッシュ効率が得られなかったり、逆にオーバヘッドになり、プロセッサの実行時間を低下させる要因となる。特定のアプリケーションに特化したプロセッサであれば最適なキャッシュメモリシステムを採用できるかもしれない。しかしながら、ある程度の汎用性を目指したプロセッサであると、キャッシュメモリを活かすためには、それほど効果的ではないとしても、オーバヘッドになることの少ないキャッシュメモリシステムを導入することになる。したがって、キャッシュメモリシステムがあってもそれほど性能が向上しないということになる。
そこで、本発明においては、プロセッサで実行されるソフトウェアの処理内容やハードウェア環境に対応して、キャッシュとして最も効率良く利用することができるメモリを有する集積回路装置を提供することを目的としている。また、メモリを、キャッシュとして最も効率良く利用することができる制御機能を備えた集積回路装置を提供することを目的としている。そして、様々なソフトウェアをさらに効率良く実行することができる集積回路装置を提供することを目的としている。
発明の開示
近年、データパスの構成またはデータフローの少なくとも１部を変更可能な処理ユニットが登場している。ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）は、単一な構成で論理を変更可能な論理エレメントまたは論理ブロックをアレイ状に敷き詰めてその間の結線を自由に変更し、データパスの構造を変更することができる集積回路装置である。また、命令セットにより種々の処理を行う中規模な単一構成の基本機能ユニットを用いてデータパスの構造を変更可能とした集積回路装置も検討されている。さらに、本願の出願人は、それぞれ異なる特定の処理に適した内部データパスを備えた複数種類の専用処理要素と、これらの専用処理要素を接続する配線群とを備えた処理ユニットを開発している。そこで、これらのデータフローを変更または再構成可能な処理ユニットの一部によりキャッシュメモリを制御する回路を構成する。
すなわち、本発明の集積回路装置は、第２のメモリとの間でデータを入力および／または出力可能な第１のメモリと、少なくとも１つのデータフローが形成され、そのデータフローの少なくとも１部を変更可能な処理ユニットとを有し、この処理ユニットは、第１のメモリとの間で入力および／または出力されるデータを処理するデータ処理区画と、第１のメモリとデータ処理区画との間で入力および／または出力されるデータの第１のアドレスを出力する第１のアドレス出力区画と、第２のメモリと第１のメモリとの間で入力および／または出力されるデータの第２のアドレスを出力する第２のアドレス出力区画とを備えている。データフローを変更可能な処理ユニットの一部により第１および第２のアドレス出力区画を構成することにより、データ処理区画のハードウェア構成あるいはデータ処理区画で実行するソフトウェアにより、第１のアドレス出力区画または第２のアドレス出力区画のデータフローを変更したり、それぞれの区画の出力を制御することが可能となる。したがって、この集積回路装置で実行する処理に最も適したキャッシュメモリシステムをこの集積回路装置に構成できる。あるいは、集積回路装置で実行する処理に最も適したキャッシュメモリの制御を行うように、キャッシュメモリの制御回路を集積回路装置に構成することができる。
本発明の集積回路装置では、キャッシュメモリとなる第１のメモリを、第２のメモリに対する第２のアドレス、すなわち、データの第２のメモリにおける物理アドレス、または物理アドレスに変換可能な論理アドレスあるいは仮想アドレスにより受動的に制御することも可能である。この制御により、第２のメモリおよび／またはデータ処理区画に対して第１のメモリが透過的に存在するように構成することも可能である。それに加えて、データ処理区画および／または第１のアドレス出力区画からのデータあるいは信号により、さらには、データ処理区画および第１のアドレス出力区画のいずれからも独立して、第２のアドレス出力区画が能動的にデータの入出力を制御することが可能である。また、データ処理区画および第１のアドレス出力区画と並列に、第１および第２のメモリ間におけるデータの入出力動作を制御することも可能である。したがって、第２のアドレス出力区画により、データ処理区画および第１のアドレス出力区画のデータのアクセス先を決定するような構成も可能となり、従来のＣＰＵに対し透過的なキャッシュではなく、逆に処理ユニットにおける処理を制御するようなキャッシュを構成することが可能となる。
すなわち、従来のキャッシュのアーキテクチャは、ＣＰＵコアあるいはＤＳＰコアなどの画一的なハードウェア構成の処理機構で動作するソフトウェアに対して、平均的に実行速度を向上できるように、ユニホームで透過的なインターフェイスを提供するように構成されている。これに対し、本発明の集積回路装置においては、ＦＰＧＡなどのデータパスの構成そのものを変更可能なアーキテクチャにより、コアとなるデータ処理区画が提供されるので、それにあわせて、キャッシュの構成もデータ処理区画の構成、およびそこで実行されるソフトウェアに最適な構成に動的に変更可能にするものである。したがって、ユニホームで透過的である必要はなく、コアあるいは実行部であるデータ処理区画に対して、従来のキャッシュとまったく異なったインターフェイスあるいはサービスを提供することが可能となる。
このため、本発明の集積回路装置では、処理ユニットで実行されるソフトウェアの処理内容やハードウェア環境に応じて、第１のメモリをキャッシュとして最も効率良く利用することができる。そして、種々のソフトウェアを実行する際に、高いヒット率が得られるようにキャッシュシステムを構成でき、キャッシュメモリの入出力がソフトウェアを実行する際のオーバヘッドとならない集積回路装置を提供することができる。
たとえば、データ処理区画で実行されるデータの第２のメモリにおけるアドレスが判明している場合は、第１のメモリのデータ残存量などによって第２のアドレス出力区画が独立してデータをプリフェッチすることが可能である。したがって、データ処理区画の処理時間を消費せずにキャッシュとなる第２のメモリにデータをハードウェア的に、あるいは第２のアドレス出力区画を制御するソフトウェアによりプリフェッチすることができる。たとえば、第１のアドレス出力区画からは第１のアドレスとして第１のメモリのアドレス、すなわち、第１のメモリの物理アドレス、あるいは物理アドレスに変換可能な仮想あるいは論理アドレスを出力し、第２のアドレス出力区画からは第２のアドレスとして第２のメモリのアドレス、すなわち、第１のメモリの物理アドレス、あるいは物理アドレスに変換可能な仮想あるいは論理アドレスを出力する。さらに、データ処理区画では、キャッシュメモリとなる第１のメモリのアドレスで処理が進むようにハードウェアあるいはソフトウェアを構成することができる。
さらに、第２のアドレス出力区画を、データ処理区画および／または第１のアドレス出力区画とは非同期に、すなわち独立して動作可能とすることが望ましく、これにより、データ処理区画とは独立して並列処理でプリフェッチすることが可能となる。第２のメモリに対する入力と出力を並列に独立して処理できるように、第１のメモリは非同期に、すなわち、独立に入出力可能な複数の格納区画、たとえば複数のメモリバンクを備えていることが望ましい。
また、第２のアドレス出力区画が独自で、あるいはデータ処理区画との組み合わせにより、第１のメモリのデータに基づいて第２のアドレスを出力するように構成することも可能であり、間接アドレッシングによるデータ処理を何らの制限もなく実行することができる。
キャッシュとして動作する第１のメモリは、データ処理区画に入力されるデータを格納する第１の入力メモリと、データ処理区画から出力されたデータを格納する第１の出力メモリとを備えていることが望ましい。これにより、データ処理区画に形成されるデータフローに対するデータの入力と出力とを独立して制御できる。第１のアドレス出力区画からは第１のメモリのアドレスが出力されるが、第１のメモリに第１のアドレスに対応するデータがなかったり、第１のアドレスに対応するデータを格納するスペースがないと、データ処理区画に形成されるデータフローの処理の障害となる。したがって、第１のメモリとデータ処理区画との間の入力および／または出力を管理する第１の調停ユニットを設けることが望ましい。
第１の調停ユニットには、第１のアドレスに対応するデータがない、または、第１のアドレスに対応するデータを格納するスペースがないなどのデータ処理区画との間の入力または出力の条件を満たさない場合は、ストップ信号をデータ処理区画に出力する機能を持たせることができる。そして、データ処理区画には、ストップ信号により、当該データ処理区画に形成された少なくとも１つのデータパスまたはデータフローの処理を停止する機能を持たせることにより、第１の調停ユニットによりデータパスまたはデータフローのオンオフを制御できる。したがって、データ処理区画に形成されたデータパスまたはデータフローを、処理対象となるデータが揃うのを待って稼動させるような制御を容易に実現できる。
第１のメモリが、第１の入力メモリと第１の出力メモリとを備えているのであれば、第１の調停ユニットとして、第１の入力メモリからデータ処理区画へのデータの転送を管理する第１の入力調停ユニットと、データ処理区画から第１の出力メモリへのデータの転送を管理する第１の出力調停ユニットとを設けることが望ましい。これにより、データ処理区画に形成されるデータフローの制御を入力側と出力側とから独立に行うことができる。
さらに、第１のメモリが、独立に入出力可能な複数の格納区画を備えている場合は、第１の調停ユニットに、複数の格納区画のそれぞれを独立に管理する機能を備えていることが可能である。データ処理区画に形成される複数のデータフローのそれぞれを、対応する格納区画の状態により第１の調停ユニットにより独立して制御できる。一方、第１の調停ユニットに、複数の格納区画を関連付けして管理する機能を設けることも可能である。これにより、データ処理区画に形成されたデータフローが、所定の格納区画に外部メモリから入力されたデータを優先して処理したり、データフローからの出力を所定の格納区画を介して外部メモリに対して優先的に出力したりする制御が容易に実現できる。
さらに、データ処理区画に複数のデータフローが構成可能であるときには、複数の第１のメモリを設け、処理ユニットには、各々の第１のメモリに対応する第１および第２のアドレス出力区画が形成されるようにすることが望ましい。これにより、データ処理区画および第１のアドレス出力区画を適切に構成することにより多階層キャッシュを構成することも可能となる。また、集積回路装置で実行するプログラムによっては、複数の第１のメモリを命令キャッシュとデータキャッシュとして使い分けたり、さらには、複数のデータ処理区画を設けたときにそれらで処理するデータをキャッシュするために複数の第１のメモリを使い分け、第２のアドレス出力区画によりそれぞれの第１のメモリにキャッシュされるデータを適切に制御することが可能となる。
複数の第２のアドレス出力区画を設ける場合は、第２のメモリと複数の第１のメモリとの間の入出力を管理する第２の調停ユニットを用意し、第２のアドレスは第２の調停ユニットに供給されるようにすることが望ましい。これにより、第２のメモリが外部メモリであるときに、その外部メモリに対して従来と同様に本発明の集積回路装置はアクセスできる。また、第２のメモリが同一チップ内に形成された集積回路装置においては、第２のメモリが第３のメモリとの間でデータを入力および／または出力可能として、第３のメモリと第２のメモリとの間で入力および／または出力されるデータの第３のアドレスを出力する第３のアドレス出力手段も設けてキャッシュメモリを多階層化することが可能である。すなわち、第３のメモリが外部メモリであれば、第１および第２のメモリによりキャッシュメモリが構成される。この第３のアドレス出力手段は、ＭＭＵなどの従来のキャッシュ制御機構であっても良く、第２のアドレス出力区画と同様に構成することも可能である。第４あるいはそれ以上の階層のメモリ（ＲＯＭ、ＲＡＭに限らず、ディスクなどの様々なタイプの記録媒体を含む）を対象として制御する場合も同様である。
データフローを変更あるいは再構成可能な処理ユニットは、機能を変更可能な複数の単一種類の論理要素と、これらの論理要素を接続する配線群とを備えているもの、すなわち、上述したＦＰＧＡや、中規模な単一構成の基本機能ユニットを用いてデータパス構造またはデータフローを変更可能としたものであっても良い。それぞれ異なる特定の処理に適した内部データパスを備えた複数種類の専用処理要素と、これらの専用処理要素を接続する配線群とを備えている処理ユニットを採用することが可能である。そして、このような再構成可能な処理ユニットであれば、アドレスを出力するのに適した内部データパスを備えた専用処理要素を予め組み込むことが可能であり、アドレスを発生する処理効率を高め、処理速度をさらに向上できる。また、余剰な回路要素の存在を低減できるので、データフローを変更するために選択する要素も低減でき、ＡＣ特性も向上でき、さらに、スペース効率も高くなる。
したがって、処理ユニットのデータフローの少なくとも１部の変更を指示する制御ユニットが、処理ユニットに対し、上述したデータ処理区画と、第１のアドレス出力区画と、第２のアドレス出力区画とを構成するように指示する工程を実行することにより、データフローをフレキシブルに、そして短時間にダイナミックに変更できる。そして、フレキシブルなキャッシュシステムを備えた、コンパクトで経済的な集積回路装置を提供できる。
処理ユニットのデータフローの変更を容易にするために、専用処理要素間の接続を変更可能とすると共に、専用処理要素の内部データパスの一部を選択する手段と、内部のデータパスの選択を記憶するコンフィグレイションメモリとを設けることが望ましい。制御ユニットは、コンフィグレイションメモリの内容を書き換えたり、処理ユニットのデータフローの少なくとも１部の変更を指示することによりデータフローを再構成できる。さらに、専用処理要素を備えた処理ユニットであれば、この制御ユニットにより、データ処理区画、第１のアドレス出力区画、または、第２のアドレス出力区画のデータフローの変更を非同期または独立して指示することが可能となる。これにより、第１のメモリに対してデータを入出力している間は、データ処理区画および／または第１のアドレス出力区画を構成する専用処理要素を、別の目的のデータフローを構成するために使用したり、逆に、データ処理区画で処理を実行している間は、第２のアドレス出力区画の専用処理要素を異なるメモリの制御に用いたり、あるいは異なる目的で利用したりすることが可能となり、処理ユニットのリソースをフレキシブルに効率良く活用できる。
さらに、制御ユニットに上記の処理を行わせるプログラムコードを記憶するコードメモリを搭載することにより、ワンチップのシステムＬＳＩなどの集積回路装置を構成することが可能となる。したがって、様々な目的のソフトウェアに対し、キャッシュがオーバヘッドとならず、効率的に利用し、実行速度を向上できる集積回路装置を提供できる。また、データフローを再構成可能な処理ユニットを単体のチップあるいはプロセッサコアとして提供したり、キャッシュメモリとなる第１のメモリを搭載した状態でチップとして提供することも可能であり、本発明を実現可能な形態は様々であり、それらの形態を含む処理装置も本発明に含まれる。
発明を実施するための最良の形態
以下に図面を参照しながら、本発明についてさらに説明する。図１に、本発明に係るシステムＬＳＩ１０の概略構成を示してある。このＬＳＩ１０は、プログラムなどによって与えられる命令セットに基づきエラー処理を含めた汎用的な処理を行う汎用な構成のプロセッサ部（以降では基本プロセッサまたはプロセッサ）１１と、マトリクス状に配置された演算あるいは論理エレメントにより特定のデータ処理に適合したデータフローあるいは擬似データフローがバリアブルに形成されるＡＡＰ（Ａｄｏｐｔｉｖｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｃｅｓｓｏｒ）部あるいはＡＡＰユニット（以降ではＡＡＰ）２０と、このＡＡＰ２０からの割り込み処理を制御する割り込み制御部１２と、ＡＡＰ２０に作動用のクロック信号を供給するクロック発生部１３と、このＬＳＩ１０で提供可能な演算回路のフレキシビリティーをさらに向上するためのＦＰＧＡ部１４と、外部に対するデータの入出力を制御するバス制御部１５とを備えたデータ処理システムである。ＦＰＧＡ部１４は、このＬＳＩ１０の外部に設けられたＦＰＧＡチップとのインターフェイスであり、以降ではオフチップＦＰＧＡあるいはＦＰＧＡとして参照する。本発明の集積回路装置であるＬＳＩ１０では、基本プロセッサ１１とＡＡＰ２０は、基本プロセッサ１１とＡＡＰ２０との間でデータを交換可能なデータバス１７と、基本プロセッサ１１からＡＡＰ２０の構成および動作を制御するための命令バス１８とにより接続されている。また、ＡＡＰ２０から割り込み制御部１２に信号線１９を介して割り込み信号が供給され、ＡＡＰ２０における処理が終了したり、処理中にエラーが発生したときはＡＡＰ２０の状態を基本プロセッサ１１にフィードバックできるようになっている。
ＡＡＰ２０とＦＰＧＡ１４との間もデータバス２１により接続されており、ＡＡＰ２０からＦＰＧＡ１４にデータを供給して処理を行い、その結果をＡＡＰ２０に返せるようになっている。さらに、ＡＡＰ２０は、ロードバス２２およびストアバス２３によってバス制御ユニット１５と接続されており、ＬＳＩ１０の外部のデータバスとの間でデータを交換できるようになっている。したがって、ＡＡＰ２０は、外部のＤＲＡＭ２やその他のデバイスからデータを入力でき、そのデータをＡＡＰ２０で処理した結果を再び外部のデバイスに出力できる。基本プロセッサ１１もデータバス１１ａとバス制御ユニット１５を介して外部のデバイスとデータを入出力できる。
図２にＡＡＰユニット２０の概要を示してある。本例のＡＡＰユニット２０は、複数の算術および／または論理演算を行う論理ブロック、論理ユニットあるいは論理要素（以降ではエレメント）がマトリクス状に配置されたマトリクス部２８と、そのマトリクス部２８に対してデータを供給する入力バッファ２６と、マトリクス部２８から出力されるデータを格納する出力バッファ２７を備えている。これら入力バッファ２６および出力バッファ２７は、それぞれ４つの小容量の入力メモリ（ＲＡＭ）２６ａ〜２６ｄと、出力メモリ（ＲＡＭ）２７ａ〜２７ｄとを備えている。ＡＡＰ２０は、さらに、これらの複数のメモリから構成される入力バッファ２６および出力バッファ２７とバス制御ユニット１５との間におけるデータの入出力動作を制御する外部アクセス調停ユニット（第２の調停ユニット）２５とを備えている。
本例の入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄは、各々が１ｋバイトの２ポートＲＡＭとして機能し、６４ｋビット幅で５１２バイトの深さのある２バンク形式のＲＡＭ８１および８２として使用できるようになっている。したがって、メモリに対する入力と出力で異なるバンクを使用することにより入出力を独立した動作として処理することが可能である。さらに、ＲＡＭ８１および８２に対する入出力を管理する調停ユニット（第１の調停ユニット）８５を備えており、入力および出力の回数をカウントすることにより各バンクのフルおよびエンプティーをチェックできるようになっている。
これら入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄの入出力を制御するために、マトリクス部２８とそれぞれのＲＡＭおよび調停ユニット８５との間で複数種類の制御信号が交換される。まず、各入力ＲＡＭ２６ａ〜２６ｄ毎に、入力ＲＡＭ２６ａ〜２６ｄからマトリクス部２８が読み出すデータを制御するための１６ビットの入力読み出しアドレスデータ（ｉｒａ、第１のアドレス）６１が出力される。この入力読み出しアドレス６１は、各入力ＲＡＭ２６ａ〜２６ｄの論理あるいは物理アドレスである。また、各入力ＲＡＭ２６ａ〜２６ｄの調停ユニット８５からマトリクス部２８に、フルおよび／またはエンプティーによりアドレスデータ６１の供給を制御する入力読み出しアドレスストップ信号（ｉｒａ＿ｓｔｏｐ）６２が出力される。また、調停ユニット８５からは、マトリクス部２８から供給されたアドレスデータ６１に対応するデータがないなどの、マトリクス部２８に対する入力条件が整わない場合も入力読み出しアドレスストップ信号６２が出力される。
マトリクス部２８では、このストップ信号６２によりマトリクス部２８に形成されるデータフローをオンオフする。したがって、マトリクス部２８にデータフローが形成された後の実行工程においては、データフローで定義された処理の実行を各入力ＲＡＭ２６ａ〜２６ｄの調停ユニット８５により制御することができる。したがって、入力ＲＡＭ２６に、入力読み出しアドレスデータ６１に対応するデータがなければ、データフローの処理は待ち状態になる。また、入力ＲＡＭ２６に、入力読み出しアドレスデータ６１に対応するデータがあれば、３２ビットの入力読み出しデータ（ｉｒｄ）６３がマトリクス部２８に供給され、形成されたデータフローにより処理され、出力ＲＡＭ２７のいずれかに出力される。また、マトリクス部２８からは入力読み出しデータ６３を制御するストップ信号（ｉｒｄ＿ｓｔｏｐ）６４が各入力ＲＡＭ２６ａ〜２６ｄに出力され、マトリクス部２８のデータフローの動作が、たとえば、出力側による原因で停止したときは読み出しを停止する。
各入力ＲＡＭ２６ａ〜２６ｄの調停ユニット８５は、基本的には、各ＲＡＭ２６ａ〜２６ｄを独立して制御する。したがって、各入力ＲＡＭ２６ａ〜２６ｄとマトリクス部２８との間のデータ交換は、入力ＲＡＭ２６ａ〜２６ｄ毎に制御および実行され、入力ＲＡＭ２６ａ〜２６ｄに対応して形成されたマトリクス部２８のデータフローが独立して制御される。以下で説明する出力ＲＡＭ２７ａ〜２７ｄについても同様である。一方、これら入力ＲＡＭ２６ａ〜２６ｄの調停ユニット８５は、入力ＲＡＭ２６ａ〜２６ｄの間の配線により、または、マトリクス部２８を介した配線により接続することも可能であり、複数の入力ＲＡＭ２６ａ〜２６ｄを関連付けして管理することも可能である。複数の入力ＲＡＭ２６ａ〜２６ｄを関連付けして管理することにより、マトリクス部２８に形成されるデータフローに対して複数の入力ＲＡＭを割り付けることが可能である。そして、調停ユニット８５により、複数の入力ＲＡＭ２６ａ〜２６ｄに優先順位をつけて、優先度の高いＲＡＭのデータからデータフローに供給するといった制御が実現できる。
また、入力ＲＡＭ２６ａ〜２６ｄ毎に、バス制御ユニット１５を介して外部メモリ２から読み出して各入力ＲＡＭ２６ａ〜２６ｄに書き込むデータを制御するための３２ビットの入力書き込みアドレスデータ（ｉｗａ、第２のアドレス）６５と、そのデータタイプなどを指定可能な４ビットの制御信号（ｉｗｄ＿ｔｙｐｅ）６６がマトリクス部２８から出力される。各入力ＲＡＭ２６ａ〜２６ｄに対応するこれらの入力書き込みアドレスデータ６５および制御信号６６は、すべて外部アクセス調停ユニット２５に出力される。この入力書き込みアドレス６５は、外部メモリであるＲＡＭ２の物理アドレス、あるいは物理アドレスに相当する論理または仮想アドレスとなる。これに対し、外部アクセス調停ユニット２５からアドレスデータ６５の出力を制御するストップ信号（ｉｗａ＿ｓｔｏｐ）６７がマトリクス２８に供給される。
さらに、外部アクセス調停ユニット２５に供給された入力書き込みアドレスデータ６５に呼応した６４ビットの入力書き込みデータ（ｉｗｄ）６８が調停ユニット２５から各入力ＲＡＭ２６ａ〜２６ｄに供給され、各入力ＲＡＭ２６ａ〜２６ｄからは入力書き込みデータ６８を制御するストップ信号（ｉｗｄ＿ｓｔｏｐ）６９が外部アクセス調停ユニット２５に出力される。
マトリクス部２８からの出力を制御するためには、各出力ＲＡＭ２７ａ〜２７ｄ毎に、マトリクス部２８から読み出して出力ＲＡＭ２７ａ〜２７ｄに書き込むデータを制御するための１６ビットの出力書き込みアドレスデータ（ｏｗａ、第１のアドレス）７１が出力される。この出力書き込みアドレス７１は、各出力ＲＡＭ２７ａ〜２７ｄの論理または物理アドレスとなる。また、各出力ＲＡＭ２７ａ〜２７ｄの調停ユニット８５からマトリクス部２８に、フルおよび／またはエンプティーによりアドレスデータ７１の供給を制御する出力書き込みアドレスストップ信号（ｏｗａ＿ｓｔｏｐ）７２が出力される。すなわち、調停ユニット８５からは、マトリクス部２８からの出力を受ける条件を満たさない場合に、出力書き込みアドレスストップ信号７２が出力される。マトリクス部２８では、このストップ信号７２によりマトリクス部２８に形成されるデータフローをオンオフし、データフローで定義された処理の実行を制御する。出力ＲＡＭ２７にスペースがあれば、出力書き込みアドレスデータ７１と共に３２ビットの出力書き込みデータ（ｏｗｄ）７３がマトリクス部２８から出力される。また、各出力ＲＡＭ２７ａ〜２７ｄの調停ユニット８５からマトリクス部２８に出力書き込みデータ７３を制御するストップ信号（ｏｗｄ＿ｓｔｏｐ）７４が供給される。
また、出力ＲＡＭ２７ａ〜２７ｄ毎に、バス制御ユニット１５を介して各入力ＲＡＭ２６ａ〜２６ｄから読み出して外部メモリ２に書き込むデータを制御するための３２ビットの出力読み出しアドレスデータ（ｏｒａ、第２のアドレス）７５と、そのデータタイプなどを指定可能な４ビットの制御信号（ｏｒｄ＿ｔｙｐｅ）７６がマトリクス部２８から出力される。これらの出力読み出しアドレスデータ７５と制御信号７６はすべて外部アクセス調停ユニット２５に出力される。この出力読み出しアドレス７５は、外部メモリであるＤＲＡＭ２の物理アドレス、あるいは物理アドレスに相当する論理または仮想アドレスとなる。これに対し、外部アクセス調停ユニット２５からアドレスデータ７５の出力を制御するストップ信号（ｏｒａ＿ｓｔｏｐ）７７がマトリクス２８に供給される。
さらに、出力読み出しアドレスデータ７５と共に、６４ビットの出力読み出しみデータ（ｏｒｄ）７８が各出力ＲＡＭ２７ａ〜２７ｄから外部アクセス調停ユニット２５に供給され、外部アクセス調停ユニット２５から各出力ＲＡＭ２７ａ〜２７ｄに出力読み出しデータ６８を制御するストップ信号（ｏｒｄ＿ｓｔｏｐ）７９が供給される。
したがって、本例のＡＡＰ２０においては、マトリクス部２８の入力データ６３は、複数の入力ＲＡＭ２６ａ〜２６ｄと、外部アクセス調停ユニット２５とを経て外部メモリ２とのインターフェイスとなるバス制御ユニット１５から供給される。また、マトリクス部２８の出力データ７３は、複数の出力ＲＡＭ２７ａ〜２７ｄと、外部アクセス調停ユニット２５とを経て外部メモリ２とのインターフェイスとなるバス制御ユニット１５に供給される。そして、入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄは、各々が２バンク構成になっているので、入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄとマトリクス部２８との間の処理と、入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄと外部アクセス調停ユニット２５との間、すなわち、外部ＲＡＭ２との間の処理とを独立してあるいは非同期で並列に実行できる。
また、外部アクセス調停ユニット２５とバス制御ユニット１５との間には、高速でブロック単位でデータを入出力できるように、３２ビットのアドレスバスと２５６ビットのデータバスによりロードバス２２およびストアバス２３が構成されている。そして、アドレスバスを介して入力アドレス信号２２ａおよび出力アドレス信号２３ａが伝達され、データバスを介して入力データ２２ｂおよび出力データ２３ｂが伝達される。また、５ビットのコマンド２２ｃおよび２３ｃを伝達する信号線と、バス制御ユニット１５のビジー信号２２ｄおよび２３ｄを伝達する信号線と、バス制御ユニット１５のレディー信号２２ｅを伝達する信号線も用意されている。
図３に、本例のマトリクス部２８と小容量ＲＡＭ２６ａ〜２６ｄおよび２７ａ〜２７ｄを含んだ構成２９の概要を示してある。このマトリクス部２８が、本発明における処理ユニットに対応するデータパスあるいはデータフローを再構成可能なシステムである。マトリクス部２８は、複数の演算ユニットであるエレメント３０を備え、それらのエレメント３０が縦方向に４つのラインを構成するようにアレイ状あるいはマトリクス状に配置されている。また、マトリクス部２８は、これらのエレメント３０の間に配置された、横方向に延びた行配線群５１と、縦方向に延びた列配線群５２とを備えている。列配線群５２は、列方向に並んだ演算ユニット３０の左右に分かれて配置された配線群５２ｘおよび５２ｙが１対になっており、これらの配線群５２ｘおよび５２ｙからデータが各々のエレメント３０に供給される。
行配線群５１および列配線群５２との交点にはスイッチングユニット５５が配置されており、行配線群５１の任意のチャンネルを、列配線群５２の任意のチャンネルに切り替えて接続できるようになっている。各々のスイッチングユニット５５は、設定を記憶するコンフィグレイションＲＡＭを備えており、プロセッサ部１１から供給されるデータによりコンフィグレイションＲＡＭの内容を書き換えることにより、行配線群５１と列配線群５２の接続を動的に任意に制御できる。このため、本例のマトリクス部２８においては、複数のエレメント３０の全部あるいは一部が配線群５１および５２により接続されて形成されるデータフローの構成を任意に動的に変更することができる。
各エレメント３０は、１組の列配線群５２ｘおよび５２ｙのそれぞれから入力データを選択するための１組のセレクタ３１と、選択された入力データｄｉｘおよびｄｉｙに特定の算術および／または論理演算処理を施し、出力データｄｏとして行配線群５１に出力する内部データパス部３２を備えている。そして、本例のマトリクス部２８には、各行毎に異なる処理を行うための内部データパス部３２を備えたエレメント３０が並んで配置されている。さらに、これらの配線群５１および５２には、キャリー信号を伝送する配線も用意されている。キャリー信号は、桁上げ用の信号や真偽を示す信号として使用することが可能であり、本例のマトリクス部２８では、各エレメント３０において算術演算および論理演算を制御したり、結果を他のエレメント３０に伝達するためなどに利用される。
まず、第１行目に配列されたエレメント３０は、入力バッファ２６からのデータを受信する処理に適したデータパス部３２ｉを備えている。ロード用のデータパス部（ＬＤ）３２ｉは、単にデータを受け入れるだけであれば、論理ゲートは不要であり、ロードバス２２からデータを受信して、行配線群５１に出力する。本例のマトリクス部２８においては、ロード用のデータパス部３２ｉは、入力ＲＡＭ２６のＲＡＭ調停ユニット８５からストップ信号６２を受けると、このデータパス部３２ｉのエレメント３０に繋がったデータフローの処理を停止する機能を備えている。さらに、マトリクス部２８の内部要因や、出力側の要因によりデータパス部３２ｉのエレメントに繋がったデータフローを停止するときは、対応する入力ＲＡＭ２６の調停ユニット８５に対してストップ信号６４を出力する機能を備えている。
第２行目に配置されたエレメント３０ａは、入力バッファ２６の入力ＲＡＭ２６ａ〜２６ｄの各々に外部ＲＡＭ２からデータを書き込むためのエレメントであり、第２のアドレス出力区画に対応する。したがって、ブロックロードするためのアドレス（第２のアドレス）を発生するのに適した内部データパスを具備するデータパス部３２ａを備えている。このデータパス部３２ａは、ＢＬＡ（Ｂａｃｋ  Ｇｒｏｕｎｄ  Ｌｏａｄ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）と称される。図４は、データパス部３２ａの一例であり、カウンタなどからなるアドレス発生回路３８を備えており、そのアドレス発生回路３８からアドレスが出力信号ｄｏとして出力される。出力信号ｄｏは、行配線群５１および列配線群５２を介して、そのまま、あるいは、他のエレメント３０によって処理された後に入力信号ｄｉｘあるいはｄｉｙとしてデータパス部３２に供給され、供給されたアドレスのいずれかがセレクタＳＥＬで選択されてフリップフロップＦＦを介してマトリクス部２８からアクセス調停ユニット２５に入力書き込みアドレス６５として出力される。
マトリクス２８を構成する全てのエレメント３０と同様に、このアドレスを発生するエレメント３０もアドレス発生回路３８やセレクタＳＥＬの状態を設定するコンフィグレイションＲＡＭ３９を備えており、このコンフィグレイションメモリ３９のデータは基本プロセッサ１１よりの制御信号１８によりセットされる。
図５にアドレス発生回路３８の一例を示してある。このアドレス発生回路３８は、複数のカウンタ３８ａと、これらのカウンタ３８ａからの出力を演算してアドレスとして出力する加算器３８ｂとを備えている。各々のカウンタ３８ａは、図６に示したように、算術演算ユニットＡＬＵ３８ｃと、コンパレータ３８ｄとが組み合わされた構成となっており、ＡＬＵ３８ｃは、ＡＤＤ、ＳＵＢ、ＢＩＴシフト、ＯＲ、ＸＯＲやそれらを組み合わせた演算を行うようにセットすることが可能である。したがって、クロックが来る度に値を発生する関数発生回路としての機能があり、このカウンタ３８ａの機能はコンフィグレイションＲＡＭ３９を介してプロセッサ部１１からセットすることができる。
また、ＡＬＵ３８ｃの制御信号ｅｎを他のカウンタ３８ａから供給されるキャリー信号ｃｙによりセットしたり、コンパレータ３８ｄの出力をキャリー信号ｃｙとして他のカウンタ３８ａに伝達できる。このようにキャリー信号を利用することにより、カウンタ３８ａの状態により他のカウンタ３８ａの状態をセットし、任意のアドレスを発生させることができる。さらに、本図には示されていないが、カウンタ３８ａの制御信号ｅｎを他のエレメント３０から供給されるキャリー信号ｃｙによりセットしたり、他のエレメント３０に伝達できる。
したがって、この入力書き込みアドレス６５を出力するエレメント（ＢＬＡ）３０ａは、内部データパス３２ａとしてアドレス発生回路３８を備えたアドレス発生に適した構成であると共に、コンフィグレイションＲＡＭ３９を通じてプロセッサ１１からアドレス発生の処理内容を制御することが可能であり、さらに、他のエレメント３０との関連性も自由にセットすることができる。ＢＬＡ３２ａに含まれる複数のカウンタ３８ａは、たとえば、３２ビットのカウンタであり、外部メモリ２からローカルストアバッファであるＲＡＭ２６ａ〜２６ｂへＤＭＡ転送するためのアドレスを発生する。
図３の第３行目に配置されたエレメント３０ｂは、入力ＲＡＭ２６ａ〜２６ｄの各々より所望のデータをマトリクス部２８へロードする入力読み出しアドレス６１を発生するデータパス部３２ｂを備えており、第１のアドレス出力区画に対応する。このデータパス部３２ｂは、ＬＤＡ（Ｌｏａｄ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）と称される。このデータパス部３２ｂの構成は、出力されるアドレスが３２ビットではなく１６ビットであることを除き、基本的には上記のアドレス発生用の内部データパス部３２ａの構成と同じである。したがって、データパス部３２ｂの基本的構成は図４に示した通りである。
ＬＤＡ３２ｂに含まれるアドレス発生回路３８の一例を図７に示してある。このアドレス発生回路３８は、４つの１６ビットカウンタ３８ａを備えており、ローカルストアバッファであるＲＡＭ２６ａ〜２６ｂからマトリクス部２８へデータを転送するためのアドレスを発生する。また、カウンタ３８ａの制御信号ｅｎは他のエレメント３０から供給されるキャリー信号ｃｙによりセットでき、さらに、他のエレメント３０に伝達できるように構成されている。このエレメント３０から出力された入力読み出しアドレス６１により、入力ＲＡＭ２６ａ〜２６ｄよりマトリクス部２８へデータが供給され、マトリクス部２８を構成する他の論理および演算エレメントにより演算処理される。
第４行目および第５行目に配列されたエレメント３０ｃは、算術演算および論理演算に適したデータパス部（ＳＭＡ）３２ｃを備えている。このデータパス部３２ｃは、たとえば、シフト回路、マスク回路、論理演算ユニットＡＬＵおよびＡＬＵで処理する演算をセットするコンフィグレイションＲＡＭ３９を備えている。したがって、プロセッサ１１が書き込んだ命令により、入力データｄｉｘおよびｄｉｙを加算あるいは減算したり、比較したり、論理和あるいは論理積を取ったりすることができ、その結果が出力信号ｄｏとして出力される。
その下の行に配列されたエレメント３０ｄは、データが伝送されるタイミングを遅延する処理に適したデータパス部（ＤＥＬ）３２ｄを備えている。このデータパス部３２ｄには、たとえば、複数のセレクタとフリップフロップＦＦとの組み合わせで構成されたデータパスが用意されており、コンフィグレイションＲＡＭ３９のデータによりセレクタで選択されたパスを入力信号ｄｉｘおよびｄｉｙが通ることにより、任意のクロック数だけ遅延して出力信号ｄｏｘおよびｄｏｙとして出力される。
その下の行に配列されたエレメント３０ｅは、乗算器などを含む乗算処理に適したデータパス部（ＭＵＬ）３２ｅを備えている。さらに異なるエレメント３０ｆとしては、マトリクス部２８の外部に用意されたＦＰＧＡ１４とのインターフェイス用のデータパス部３２ｆを備えたエレメントも用意されており、データをいったんＦＰＧＡ１４に供給して処理した後、再びマトリクス部２８に戻して処理を継続することができる。
これらのデータ処理区画に相当するエレメントが配列された領域のさらに下方には、ストア用のアドレスを発生するのに適したデータパス部３２ｇおよび３２ｈをそれぞれ備えたエレメント３０ｇおよび３０ｈが配置されている。これらのデータパス部３２ｇおよび３２ｈは、上記にて図４から図７を参照しながら説明したアドレスを発生するデータパス部３２ｂおよび３２ａと基本的に同一の構成となっている。データパス部３２ｇを備えたエレメント３０ｇは第１のアドレス出力区画であり、マトリクス２８から出力されるデータを出力ＲＡＭ２７ａ〜２７ｄに書き込むための出力書き込みアドレス７１を出力する。そして、上述した各種類のエレメント３０ｃ〜３０ｆにより構成されたデータ処理系列から出力されたデータを出力ＲＡＭ２７ａ〜２７ｄに書き込む。このデータパス部３２ｇは、ＳＴＡ（Ｓｔｏｒｅ  ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）と称され、ＬＤＡ３２ｂと同様の構成となる。
このエレメント（ＳＴＡ）３０ｇの下方に配置され、データパス部３２ｈを備えたエレメント３０ｈは、第２のアドレス出力区画であり、出力ＲＡＭ２７ａ〜２７ｄのデータを読み出して外部ＲＡＭ２に書き込むための出力読み出しアドレス７５を出力し、外部ＲＡＭ２にマトリクス部２８で処理されたデータを書き込む。このデータパス部３２ｈは、ＢＳＡ（Ｂａｃｋ  Ｇｒｏｕｎｄ  Ｓｔｏｒｅ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）と称され、ＢＬＡ３２ａと同様の構成となる。
そして、最下段には、ストア用にデータを出力するのに適したデータパス部３２ｓを備えたエレメント３０が配列されている。このデータパス部３２ｓはＳＴと称されており、算術演算用のデータパス部３２ｃとほぼ同様の構成のデータパス部を採用できる。さらに、本例においては、この出力用のデータパス部３２ｓは、出力ＲＡＭ２７の調停回路８５からストップ信号７４を受けると、この出力用のエレメント３０に繋がったデータフローの処理を停止する機能を備えている。
このように、本例のマトリクス２８は、外部ＲＡＭ２から入力ＲＡＭ２６ａ〜２６ｄにデータを入力（ブロックロードする）ためのアドレスを発生する内部データパス（ＢＬＡ）３２ａを備えたエレメント３０ａと、それら入力ＲＡＭ２６ａ〜２６ｄからマトリクス部２８へデータを入力するためのアドレスを発生する内部データパス（ＬＤＡ）３２ｂを備えエレメント３０ｂを備えている。さらに、マトリクス部２８から出力ＲＡＭ２７ａ〜２７ｄへデータを出力するためのアドレスを発生する内部データパス（ＳＴＡ）３２ｇを備えたエレメント３０ｇと、出力ＲＡＭ２７ａ〜２７ｄのデータを外部ＲＡＭ２に出力する（ブロックロードする）ためのアドレスを発生する内部データパス（ＢＳＡ）３２ｈを備えたエレメント３０ｈとを備えている。これらのエレメント３０ａ、３０ｂ、３０ｇおよび３０ｈは、上述したようにいずれもアドレスを発生させるのに適したデータパスを備えていると共に、その構成あるいは機能をコンフィグレイションＲＡＭ３９のデータを書き換えることにより変更できる。そして、マトリクス部２８の他のエレメント３０との接続環境も配線群５１および５２の接続を変えることにより変更できる。したがって、プロセッサ１１、あるいは、マトリクス部２８の他のエレメント３０からアドレス発生のデータを提供したり、アドレスを発生するタイミングをフレキシブルに制御することが可能である。
したがって、様々な条件および／または構成で、外部ＲＡＭ２からキャッシュとなる入力ＲＡＭ２６ａ〜２６ｄに対しデータをロードすることができる。また、その処理とは別に、非同期で、あるいは独立して、異なる条件で入力ＲＡＭ２６ａ〜２６ｄからマトリクス部２８へデータをロードすることが可能である。そして、エレメント３０ａおよび３０ｂが独立しているので、これらの処理を並列に実行することが可能である。したがって、これら複数の入力ＲＡＭ２６ａ〜２６ｄは、それぞれが独立で入出力可能な格納区画となっている。
さらに、入力ＲＡＭ２６ａ〜２６ｄは２バンク構成になっているので、入力ＲＡＭ２６ａ〜２６ｄに対する入力および出力も並列に行うことが可能であり、入力ＲＡＭ２６ａ〜２６ｄに対するデータの入出力が極めて効率良く行える構成となっている。出力ＲＡＭ２７ａ〜２７ｄも同様であり、それぞれが独立で入出力可能な格納区画となり、さらに、個々のＲＡＭ２７ａ〜２７ｄに対する入力および出力も独立で並列に行うことが可能である。したがって、このシステムでは、キャッシュとして動作するＲＡＭ２６ａ〜２６ｄおよび２７ａ〜２７ｄに対してデータの入出力を極めて効率良く行うことができる。
本例のマトリクス２８は、基本的にアドレス発生に適したデータパス部３２ａ、３２ｂ、３２ｇおよび３２ｈをそれぞれ備えたエレメント３０ａ、３０ｂ、３０ｇおよび３０ｈを備えており、それぞれの動作は基本プロセッサ１１から指示により決定される。すなわち、制御ユニットである基本プロセッサ１１から制御バス２８を介して供給される指示により、第１のメモリであるＲＡＭ２６ａ〜２６ｄおよび２７ａ〜２７ｄへのアクセスする回路が決定され、さらに、主メモリ（第２のメモリ）となるＤＲＡＭ２へのアクセスする回路が決定される。
さらに、それらメモリへのアクセスを制御する回路がマトリクス内に構成されるので、それらの回路の動作に、マトリクス２８の内部における条件、たとえば、データフローの構成あるいは処理結果さらには、マトリクス２８の他のエレメントを用いた処理の結果が直接あるいは間接的に反映することは極めて容易である。アドレスを発生させるのに適したエレメント３０ａ、３０ｂ、３０ｇおよび３０ｈは他のエレメントと同様に、配線５１および５２により、マトリクス部２８の他のエレメントに対して自由に配線できる。このため、マトリクス部２８の中でデータ処理区画となる他のエレメントにより構成されるデータフローあるいはデータ処理区画で実行するソフトウェアにより、エレメント３０ａ、３０ｂ、３０ｇおよび３０ｈのパラメータあるいは処理内容を変えることにより出力を制御できる。さらには、エレメント３０ａ、３０ｂ、３０ｇおよび３０ｈと他のエレメントでデータフローを構成することにより、他のエレメントの機能をアドレス発生用に利用することも可能である。したがって、キャッシュシステムを構成する第１のメモリであるＲＡＭ２６ａ〜２６ｄおよび２７ａ〜２７ｄへのアクセス方法、さらに、主メモリ（第２のメモリ）となるＤＲＡＭ２へのアクセス方法をマトリクス２８の内部における条件、たとえば、データフローの構成あるいは処理結果によりフレキシブルに決定できる。
さらに、マトリクス部２８は基本プロセッサ１１からの制御により再構成可能な構成なので、これらアドレスを発生するエレメント３０ａ、３０ｂ、３０ｇおよび３０ｈの内部のデータパスおよび機能を動的に再構成することが可能であり、外部の他のエレメントとの接続も動的に再構成することができる。もちろん、マトリクス部２８の内部にエレメント内およびエレメント間の接続を再構成できる機能を持ち込むことも可能である。したがって、マトリクス部２８で実行する処理内容によってマトリクス部２８の他のエレメント３０の接続を変更してデータフローあるいはデータパス構造を再構成する際に、入力ＲＡＭからなるバッファ２６および出力ＲＡＭからなるバッファ２７にデータを入出力する構成も変更することが可能である。
このため、マトリクス部２８で実行する処理に最も適した構成でデータを入力バッファ２６および出力バッファ２７に入出力するように構成することが可能であり、キャッシュとしてのヒット率を高めたり、キャッシュの書き換えの回数を削減したりすることが可能となる。また、アドレスを発生するエレメント３０ａ、３０ｂ、３０ｇおよび３０ｈの内部およびこれに関連するデータパス構造を、エレメント毎に再構成することも可能であり、それぞれのＲＡＭ２６ａ〜２６ｄおよび２７ａ〜２７ｄの単位でキャッシュシステムを再構成することも可能である。このため、フレキシビリティーは非常に高い。したがって、マトリクス部２８に他のエレメント３０によりデータ処理系列が構成される前に、そのデータ処理系列に適したデータ入力構造を実現して、データのロードを先行して開始したり、データ処理系列が他の処理のために再構成された後もデータ出力構造を維持してデータの出力だけを継続するなどの従来では考えられなかった処理も極めてフレキシブルに実行できる。すなわち、第１のメモリであるＲＡＭ２６および２７、さらには第２のメモリであるＤＲＡＭ２に対する処理を、他のエレメントあるいはデータフローに従属した状態でも、独立した状態でも自由に実行することができる。もちろん、アドレスを発生するエレメント３０ａ、３０ｂ、３０ｇおよび３０ｈを関連して動作させることも可能であり、複数のエレメント３０ａあるいは３０ｂを関連して動作させ、複数のＲＡＭ２６を１つの大容量のキャッシュとしてマトリクス部に利用させることも可能である。
また、エレメント３０ａは、入力ＲＡＭ２６ａがエンプティーになると入力書き込みアドレス６５を出力してＲＡＭ２からデータを書き込む処理を行い、エレメント３０ｂは、入力ＲＡＭ２６ａにデータがあると、そのデータをマトリクス部２８にロードする処理を行うことも可能である。これにより、エレメント３０ａおよび３０ｂを独立に並列に動かすことが可能であり、データ処理系列の処理時間を浪費することなく外部ＲＡＭ２のデータを入力ＲＡＭ２６ａにプリフェッチすることができる。また、エレメント３０ａが外部ＲＡＭ２からデータを入力するアドレスを制御すれば、エレメント３０ｂおよびマトリクス部２８に構成されるデータ処理系列においては、内部ＲＡＭ２６ａのアドレスだけで処理を進めることも可能である。さらに、マトリクス部２８の他の複数のエレメント３０によりデータフロータイプの処理系が定義されているようであれば、アドレスを除いたデータだけでマトリクス部２８ではデータ処理を進めることも可能である。
マトリクス部２８のデータ処理系列からは仮想アドレスが出力され、それをエレメント３０ｂで入力ＲＡＭ２６ａの物理アドレスに変換してデータを供給し、入力ＲＡＭ２６ａにデータがない場合はエレメント３０ａで外部ＲＡＭ２の物理アドレスに変換して外部ＲＡＭ２からロードする構成にすることも可能である。
また、エレメント（ＢＬＡ）３０ａが、入力ＲＡＭ２６ｂから入力されたデータによりアドレスを発生し、それにより外部ＲＡＭ２から入力ＲＡＭ２６ａにデータをロードするように構成することも可能である。したがって、マトリクス部２８に構成されるデータ処理系列とは独立して、入力ＲＡＭ２６あるいは出力ＲＡＭ２７に対する入出力を処理する機構だけで、完全な間接アドレッシングの制御を行うことができる。さらに、複数の入力ＲＡＭ２６ａ〜２６ｄ、出力ＲＡＭ２７ａ〜２７ｄさらにはアクセス調停ユニット２５を連動させることにより複数の階層構造を備えたキャッシュ構造を実現することも可能である。
また、本例のＡＡＰ２０では、エレメント３０を４列に並べているのに対応させて４つの入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄを用意している。したがって、これらの入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄをマトリクス部２８に、他のエレメント３０により構成される複数のデータ処理系列に個別に対応したキャッシュメモリとして利用することができる。このため、マトリクス部２８で複数のジョブあるいはアプリケーションが実行されている場合に、それらのジョブあるいはアプリケーションにそれぞれ最適なキャッシュとして各入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄを利用できる。エレメント３０は４列に配列しているが、エレメント３０により構成されるデータ処理系列は４列に限定されることはない。マトリクス部２８に構成されるデータ処理系列が３列以下であれば、入力ＲＡＭ２６ａ〜２６ｄおよび出力ＲＡＭ２７ａ〜２７ｄのうちの複数のＲＡＭを１つのデータ処理系列に割り当てることにより、キャッシュメモリの容量を増やすことができる。データ処理系列が５列以上であれば、キャッシュメモリとして１つのＲＡＭを複数のデータ処理系列に割り当てることになるが、最悪でも、ＲＡＭを共用するデータ処理系列で、現状のＣＰＵコアでマルチタスクのキャッシュ処理が行われているのと同様の状況が発生するだけである。
図８に概要を示すように、本発明の集積回路装置または処理装置であるシステムＬＳＩ１０は、処理ユニットであるマトリクス部と小容量のＲＡＭとを備えた構造あるいはアセンブリ２９を備えており、マトリクス部から外部のＲＡＭ２に出力されるアドレスは調停回路２５を経て外部のＲＡＭ２に供給される。そして、小容量のＲＡＭの入出力を制御するアドレス発生機構はデータフローを再構成可能なマトリクス部で実現されているので、キャッシュメモリとして機能する小容量のＲＡＭを制御するアーキテクチャも再構成可能であり、マトリクス部で実行されるソフトウェアに最適な構成に変更することができる。したがって、本発明の集積回路装置あるいは処理装置となるシステムＬＳＩ１０では、実行されるソフトウェアの処理内容やハードウェア環境に応じて、小容量のＲＡＭをキャッシュメモリとして最も効率良く利用することができる。そして、種々のソフトウェアを実行する際に、高いヒット率が得られるようにキャッシュメモリおよびそれを制御する回路を構成でき、キャッシュメモリの入出力がソフトウェアを実行する際のオーバヘッドとならないシステムＬＳＩあるいはＡＳＩＣといった集積回路装置あるいは処理装置を提供することができる。
また、システムＬＳＩ１０で制御可能な外部メモリ、すなわち、第２のメモリはＲＡＭに限定されるものではない。入力ＲＡＭあるいは出力ＲＡＭに対して外部メモリとなるものは、ＲＡＭやＲＯＭ、さらにはハードディスク装置のような記録装置に限定されることはなく、アドレスを指定することによりデータを入出力可能なデバイスは全て含まれる。たとえば、図９に示したように、ＬＳＩ１０が大容量ＲＡＭ２とプリンタやディスプレイなどの周辺デバイス３を外部メモリとして制御する場合は、マトリクス部２８のブロックロードするエレメントＢＬＡ３０ａおよびＢＳＡ３０ｈにおいて、周辺デバイス３に割り当てられた物理アドレスを発生すれば良い。
また、図１０に示したように、ＬＳＩ１０が複数のバスコントローラを経て複数の大容量ＲＡＭ２および周辺デバイス３を制御する場合は、調停回路２５を多重化するなどの変形も可能である。さらに、大容量ＲＡＭ２をＬＩＳ１０の内部に搭載することも可能であり、その大容量ＲＡＭ２を周辺デバイス３に対するキャッシュメモリとして利用するような構成も可能である。また、大容量ＲＡＭ２をプロセッサ部１１のコードＲＡＭとして利用することも可能である。
また、上述したマトリクス部２８の構成は例示であり、これに限定されるものではない。演算を行う特定の内部データパス３２を上述したエレメントはアドレス発生、算術演算、論理演算、乗算、遅延などの特定の処理に適したデータパスを備えているものの例であり、データパスの機能や、構成は本例に限定されるものではない。本発明の集積回路装置またはデータ処理装置であるＬＳＩ１０で実行されるアプリケーションに適した機能のデータパスを備えたエレメントをマトリクスあるいはアレイ状に配置することにより、データフローを変更あるいは再構成できる処理ユニットを提供することができる。また、マトリクス部２８は複数であっても良く、複数のマトリクス部を平面的に配置したり、立体的に配置することにより、さらに多数のエレメントを備えた集積回路装置を構築することが可能である。また、本発明の集積回路装置は、電子回路に限定されることはなく、光回路あるいは光電子回路にも適用できるものである。
さらに、上記では、ＡＡＰ２０、基本プロセッサ１１およびバス制御ユニット１５を組み込んでシステムＬＳＩ１０として提供する例により本発明を説明しているが、どの範囲を１つのチップとして提供するか実装するアプリケーションなどの条件により異なる。ＡＡＰ２０を１つのチップとして提供することも可能であるし、キャッシュとなるＲＡＭ２６および２７とマトリクス部２８を含めた範囲２９をチップ化することも可能である。さらには、基本プロセッサ１５に加えて複数のＡＡＰあるいは他の専用回路などを含めていっそう大きなシステムＬＳＩあるいはＡＳＩＣとして提供することも可能である。
また、図１１に示すように、ＦＰＧＡをマトリクス部２８に代わる処理ユニットとし、本発明のデータ処理区画に加え、入力ＲＡＭ２６および出力ＲＡＭ２７をキャッシュとして機能させる本発明の第１および第２のアドレス出力区画をプログラミングあるいはマッピングすることにより、本発明の集積回路装置または処理装置を実現することも可能である。ＦＰＧＡは、トランジスタレベルで汎用性を備えたデータパス構造を変更可能なアーキテクチャである。さらに、トランジスタレベルではないが、単一的な構成要素を備え、命令セットにより種々の処理を行う中規模な単一構成の基本機能ユニットを用いてデータパス構造またはデータフローを変更可能とした集積回路装置も検討されている。そのようなアーキテクチャで構成された処理ユニットに対しても、データ処理区画に加え、入力ＲＡＭ２６および出力ＲＡＭ２７をキャッシュとして機能させる本発明の第１および第２のアドレス出力区画を構成する、あるいは構成するように指示することにより、本発明の集積回路装置または処理装置を実現できる。
しかしながら、これらの単一構成の基本ユニットを並べたアーキテクチャと異なり、上述したマトリクス部に基づくアーキテクチャは、複数種類の内部データパスの異なるエレメントを備えたものである。したがって、トランジスタレベルの汎用性を要求するアーキテクチャではないので、実装密度も向上でき、コンパクトで経済的なシステムを提供できる。そして、各々のエレメント３０が特定のデータ処理に特化したデータパス部３２を備えているので、冗長な構成を極力削減することができ、ＦＰＧＡや他の単一構成の基本機能ユニットを並べた処理ユニットに比べて大幅に処理速度を高速化でき、ＡＣ特性も向上できる。また、スペース効率も高くなるので、コンパクトなレイアウトを採用し、配線長も短くできる。したがって、本発明で開示している効率の良いキャッシュ構造を、確実に活かせる集積回路装置および処理装置には最適であり、高速処理が可能な処理装置を低コストで提供できる。
さらに、トランジスタレベルで回路をマッピングするＦＰＧＡと異なり、予め特定の処理に適したデータパス部３２を備えたエレメント３０の組み合わせを変えるので、短時間で、ほとんど１クロックでデータ処理ユニット、すなわちマトリクス部２８に構成されるデータ処理系列の構成や機能を変更することができるというメリットもある。さらに、各々のエレメント３０では、データパス部３２を構成するセレクタやＡＬＵなどの論理ゲートの機能もコンフィグレイションメモリ３９を介してプロセッサ１１によって独立してセットすることが可能であり、各エレメント３０のデータパス部３２がサービスする機能の範囲内でフレキシブルに変更することができる。このため、本例のマトリクス部２８でデータフロー型のデータ処理で実行可能な機能の範囲は非常に広い。また、ネットワーク処理や、画像処理などのＬＳＩ１０が用いられるアプリケーションに適した種類の演算ユニット３０を選択し、配列することが可能であり、さらに実装効率が良く、実行速度の速い集積回路装置を提供することが可能である。
以上に説明したように、本発明は、キャッシュメモリとして使用できる第１のメモリを制御する第１のアドレス出力区画および第２のアドレス出力区画とデータフローを変更可能な処理ユニットに形成している。このため、キャッシュシステムの構成を、データ処理区画の構成と、そこで実行されるソフトウェアに最適な構成に動的に変更でき、種々のソフトウェアを実行する際に、高いヒット率が得られるキャッシュシステムを構成できる。したがって、様々なソフトウェアあるいはアプリケーションをさらに短い処理時間で実行することができる集積回路装置を提供できる。
産業上の利用可能性
本発明の処理ユニットおよび集積回路装置は、様々なデータ処理を実行可能なシステムＬＳＩあるいはＡＳＩＣなどとして提供することが可能である。また、本発明の処理ユニットおよび集積回路装置は、電子回路に限定されることはなく、光回路あるいは光電子回路にも適用できるものである。本発明の集積回路装置は、再構成可能なハードウェアによりデータ処理を高速に実行できるので、ネットワーク処理や、画像処理などの高速性およびリアルタイム性が要求されるデータ処理装置に好適なものである。
【図面の簡単な説明】
図１は、本発明の実施の形態に係る集積回路装置の概略構成を示すブロック図である。
図２は、処理ユニットであるＡＡＰの概略構成を示す図である。
図３は、マトリクス部の概略構成を示す図である。
図４は、アドレスを出力する処理に適したデータパス部の例である。
図５は、図４に示したデータパス部のアドレス発生回路の構成を示す図である。
図６は、図５に示したカウンタの構成を示す図である。
図７は、図５と異なるアドレス発生回路の構成を示す図である。
図８は、大容量ＲＡＭを外部メモリとして制御する様子を示す図である。
図９は、大容量ＲＡＭおよび周辺デバイスを外部メモリとして制御する様子を示す図である。
図１０は、複数の大容量ＲＡＭおよび周辺デバイスを外部メモリとして制御する様子を示す図である。
図１１は、本発明の異なる集積回路装置により大容量ＲＡＭを外部メモリとして制御する様子を示す図である。
【図１】
0004188233.tif 000002
【図２】
0004188233.tif 000003
【図３】
0004188233.tif 000004
【図４】
0004188233.tif 000005
【図５】
0004188233.tif 000006
【図６】
0004188233.tif 000007
【図７】
0004188233.tif 000008
【図８】
0004188233.tif 000009
【図９】
0004188233.tif 000010
【図１０】
0004188233.tif 000011
【図１１】
0004188233.tif 000012