(57)【特許請求の範囲】
【請求項１】
それぞれ異なったローカリティを有する処理部と、
前記各処理部が共通にアクセスするユニファイドメモリと、
前記各処理部が使用するデータを一時的に保持する、各処理部毎に設けられたキャッシュ部と、
前記各処理部からのアクセス要求を前記キャッシュ部を介して受けて、前記ユニファイドメモリに対してメモリアクセスを行うメモリインタフェース部と、
前記各処理部から通知されるアクセスモードに応じて、ユニファイドメモリへアクセスするためのアドレスを変換するアドレス変換部と、
前記アクセスモードに応じて、ユニファイドメモリとやりとりするデータを並べ替えるデータアライナ部と、を備え、
前記キャッシュ部は、前記各処理部からのアクセス要求を受けて、アクセス対象データを保持しているか否かを判断し、保持している場合は当該保持しているデータにより前記アクセス要求を処理し、保持していない場合は、前記アクセスモードとともに前記インタフェース部に対して当該アクセス要求を送信し、
当該キャッシュ部が前記インタフェース部との間で一度にデータの送受信を行うデータバス幅は、前記処理部との間でデータの送受信を行うデータバス幅より大きいこと
を特徴とする情報処理システム。
【請求項２】
前記ユニファイドメモリは、特定のサイズを有するデータ単位でアクセスすることが可能なモジュールをＮ個備え、いずれのアクセスモードであっても、一度にアクセスするＮ個の前記データ単位が異なる前記モジュールに格納されるような格納位置にデータが格納され、
前記キャッシュ部が前記インタフェース部との間でデータの送受信を行うデータバス幅は、前記Ｎ個のデータ単位の幅であり、
前記アドレス変換部は、前記データ単位毎に、前記格納位置と前記各処理部のアクセス要求内のアドレスとのの間で前記アドレスの変換を行い、
前記データアライナ部は、前記データ単位ごとに並び替えを行うこと
を特徴とする請求項１記載の情報処理システム。
【請求項３】
前記ユニファイドメモリには、
前記１つのモジュールがアクセスを受け持つデータ単位の数がＮ個である場合、当該ユニファイドメモリに格納される前記アクセス要求内のデータの各データ単位にＮ×Ｎ個のデータ単位からなる２次元配列としてＸ座標およびＹ座標を付与すると、同一Ｘ座標を有するデータ単位は、すべて異なるモジュールに格納され、かつ、同一Ｙ座標を有するデータ単位は、すべて異なるモジュールに格納されていること、
を特徴とする請求項２記載の情報処理システム。
【請求項４】
前記ユニファイドメモリは、複数のモジュールから構成され、前記アドレス変換部は、当該各モジュール内にあること
を特徴とする請求項１から３いずれか１項記載の情報処理システム。
【請求項５】
前記データアライナ部の代わりに、前記処理部と前記キャッシュ部との間に、前記アクセスモードに応じて、前記処理部が読み出すデータの選択を行うデータ選択部をさらに備えること
を特徴とする請求項１から４いずれか１項記載の情報処理システム。
【請求項６】
前記各処理部のうち１の処理部はＣＰＵであって
前記ユニファイドメモリは、前記ＣＰＵ上で動作するアプリケーションがアクセスするＣＰＵアクセス領域を有し、
当該情報処理システムは、
全てのアクセスモード応じたアクセスが可能なアドレスマッピングに即してデータの管理を行うドライバをさらに備え 
前記アプリケーションが前記ユニファイドメモリの前記ＣＰＵアクセス領域以外の領域にアクセスする場合は、当該ドライバを介してアクセスすること
を特徴とする請求項１から５いずれか１項記載の情報処理システム。
【請求項７】
前記ローカリティは、一次元的なローカリティと二次元的なローカリティとを含み、
前記アクセスモードは、前記ローカリティが前記一次元的なローカリティの場合、アドレス空間に対してリニアにアクセスするリニアアクセスモードと、前記ローカリティが前記二次元的なローカリティの場合、アドレス空間に対してタイル型にアクセスするタイルアクセスモードとを含むこと
を特徴とする請求項１から６いずれか１項記載の情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の処理部が同一のメモリにアクセスする情報処理システムに関し、特に、ユニファイドメモリアーキテクチャ（ＵＭＡ）を採用したシステムにおけるメモリアクセスの高速化に関する。
【０００２】
【従来の技術】
情報処理システムにおける処理部は、その行う処理によって、メモリアクセスに関して、様々なローカリティ（局所性）を持つ。ここでのローカリティとは、主に空間的な局所性を意味し、複数のデータから構成されるデータ構造において、あるデータがアクセスされると、その近くに配置されたデータも近い将来アクセスされる可能性が高いという性質をいう。従来から、処理によって異なるローカリティを有効に利用するための工夫がなされてきた。
【０００３】
例えば、特開平８−２９７６０５号公報には、メモリ空間を小矩形であるタイルに分割し、タイル内でリニアになるようにメモリとキャッシュのアドレスを管理して、ＣＰＵが画像領域にアクセスする際、タイル単位にキャッシュに転送する方式が開示されている。この方式では、テクスチャマッピングのように画像に対して２次元的なローカリティを持った処理、即ち、次のアクセスが画像の２次元的な全ての方向に対してなされる可能性がある処理では、２次元のタイルを単位にキャッシングしているためヒット率が向上する。
【０００４】
一方、近年、システムＬＳＩでは、メモリシステムに、ユニファイドメモリ・アーキテクチャ（ＵＭＡ）が用いられている。ユニファイドメモリ（以下、ＵＭという）とは、従来、別々のメモリに格納されていたデータ（例えば、ＣＰＵの命令やデータと、表示画像データやテクスチャ・データ等）を、統合して格納するメモリをいう。
【０００５】
このようなＵＭＡを採用した場合、ＵＭに対して、様々な処理部からアクセスが行われることになる。つまり、異なるローカリティを有する処理部からのメモリアクセスが、同じＵＭをアクセスする場合が生じることになる。
【０００６】
例えば、ビデオ入力した画像をＵＭに格納し、この画像をテクスチャとしてテクスチャマッピングに使用したり、或いはこの画像にフィルタを掛ける等の処理を行うシステムを考えると、これらの各処理はメモリアクセスに関してそれぞれ独自のローカリティを有する。
【０００７】
図２０は、これらの処理のローカリティを説明する図である。
【０００８】
同図に示すように、ビデオ入力は、画素データが左上から右下へと順に送られてくる。つまり、ビデオ入力部は、メモリアクセスに関して、一次元的な（リニアな）なローカリティを有する。
【０００９】
これに対して、テクスチャマッピングでは、ＵＭに格納された画素データを、はりつけ先の形状等に応じて、縦、横、斜め、とあらゆる方向にアクセスするため、メモリアクセスに関して、二次元的なローカリティを有する。また、ＵＭに格納された画像に対してフィルタリングを施すフィルタリング処理でも、一般に、注目する画素の周囲数画素を重み付け平均するため、メモリアクセスに関して、二次元的なローカリティを有する。
【００１０】
この場合、ＵＭに対しては、一次元的な（リニアな）なローカリティを有する処理部と二次元的なローカリティを有する処理部の両方がアクセスすることになる。
【００１１】
リニアなローカリティを有する処理については、アドレスをリニアに管理し、リニアなアクセスやリニアなキャッシング（バッファリング）を行えるのが望ましい。また、二次元的なローカリティを有する処理については、アドレスをタイル型に管理し、タイル型のアクセスやタイル型のキャッシングを行えるのが望ましい。
【００１２】
【発明が解決しようとする課題】
前記公報記載の技術では、ＣＰＵの命令などリニアなローカリティを有したデータを格納してあるメモリ空間についてはアドレスをリニアに管理している。つまり、図２１に示すように、リニアアクセス（及びリニアキャッシング）を行うか、タイルアクセス（及びタイルキャッシング）を行うかは、アクセスするアドレス領域によって決められており、同一のアドレス空間に対しリニア型アクセスとタイル型アクセスの両方を行うことはできなかった。
【００１３】
例えば、タイル型アドレス領域は、次のアクセスが２次元的な全ての方向になされる可能性が高いことを前提として、タイル型アクセスによってのみアクセス可能としている。この場合、テクスチャマッピングのように２次元的なローカリティを有する処理は、効率的なメモリアクセスが可能で、キャッシュのヒット率の向上も期待できる。しかし、殆ど右となりの画素が次にアクセスされるビデオ入力処理についても、タイル型アドレス領域については、タイル型アクセスによって、アクセスしなければならず、リニアなローカリティを有した処理部のアクセス効率は低下してしまう。
【００１４】
本発明の目的は、メモリアクセスに関して、異なったローカリティ（局所性）を持つ処理部が混在した場合でもそれぞれのローカリティに適したメモリアクセスを可能にする情報処理システムを提供することにある。
【００１５】
【課題を解決するための手段】
本発明に係る第１の情報処理システムは、複数のモジュールで構成されるメモリと、当該メモリに対してアクセスを行う処理部と、当該処理部から発行されたメモリのアドレスを、アクセスモードに従って、各モジュール毎の個別のアドレスに変換するアドレス変換部と、アクセスモード及びアドレスに従って、メモリに読み書きされるデータを並び替えるデータアライナ部とを具備することを特徴とする。
【００１６】
また、本発明に係る第２の情報処理システムは、特定のサイズを有するデータ単位で読み書きすることが可能なモジュールを、Ｎ個備えたメモリと、当該メモリとの間で、Ｎ個の前記データ単位からなるデータの読み書きを行う処理部と、当該処理部からのアクセス要求を受けて、メモリに対してアクセスを行うメモリインタフェース部とを備える。そして、前記メモリインタフェース部は、前記処理部から受け取ったＮ個のデータ単位のそれぞれが、異なるモジュールに格納されるように、アクセスモードに応じて、各データ単位を格納するモジュールと、各モジュールにおける格納位置を決定することを特徴とする。
【００１７】
また、本発明に係る第３の情報処理システムは、特定のサイズを有するデータ単位で、読み書きすることが可能なモジュールを、Ｎ個備えたメモリと、当該メモリとの間で、Ｎ個のデータ単位からなるデータの読み書きを行う処理部と、当該処理部がメモリにアクセスする際に発行したアドレスを、アクセスモードに従って、各モジュール毎の個別アドレスにアドレス変換を行うアドレス変換部と、処理部とメモリとの間でデータのやり取りを行う際、アクセスモードに従って、当該データを構成するデータ単位の並び替えを行うデータアライナ部とを備えることを特徴とする。
【００１８】
この場合において、前記アドレス変換部は、Ｎ×Ｎ個のデータ単位からなる２次元配列において、同一Ｘ座標を有するデータ単位は、すべて異なるモジュールに格納され、かつ、同一Ｙ座標を有するデータ単位は、すべて異なるモジュールに格納されるように、アドレス変換を行い、前記データアライナ部は、前記アドレス変換部の当該アドレス変換に応じて、データ単位の並び替えを行うようにしてもよい。
【００１９】
また、本発明に係る第４の情報処理システムは、それぞれ異なったローカリティを有する処理部と、それぞれの処理部が共通にアクセスするユニファイドメモリと、各処理部が使用するデータを一時的に貯めておくキャッシュ部と、各処理部からのアクセス要求を受けて、ユニファイドメモリに対してメモリアクセスを行うメモリインタフェース部と、各処理部から通知されるアクセスモードに応じて、ユニファイドメモリへアクセスするためのアドレスを変換するアドレス変換部と、前記アクセスモードに応じて、ユニファイドメモリとやり取りするデータを並べ替えるデータアライナ部とから構成されることを特徴とする。
【００２０】
この場合において、前記ユニファイドメモリを複数のモジュールで構成し、前記アドレス変換部は、当該各モジュール内に設けるようにしてもよい。また、前記アドレス変換部は、前記メモリインタフェース部内に設けるようにしてもよい。
【００２１】
また、本発明に係る第５の情報処理システムは、それぞれ異なったローカリティを有する処理部と、それぞれの処理部が共通にアクセスするユニファイドメモリと、各処理部が使用するデータを一時的に貯めておくキャッシュ部と、各処理部からのアクセス要求を受けて、ユニファイドメモリに対してメモリアクセスを行うメモリインタフェース部と、各処理部から通知されるアクセスモードに応じて、ユニファイドメモリへアクセスするためのアドレスを変換するアドレス変換部と、前記処理部と前記キャッシュ部との間に位置し、前記アクセスモードに応じて、前記処理部が読み出すデータの選択を行うデータ選択部とから構成されることを特徴とする。
【００２２】
なお、本発明に係る情報処理システムは、例えば、通常の計算機システムとして、または、１チップ構成のシステムＬＳＩとして実装される。
【００２３】
また、前記処理部には、例えば、ＣＰＵ、ビデオ入力部、ビデオ出力部、テクスチャマッピング部、フィルタリング部などが該当する。
【００２４】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施の形態について詳細に説明する。
【００２５】
図１は、本発明を適用したシステムＬＳＩの構成を示す図である。本システムＬＳＩは、例えば、１チップで構成される。
【００２６】
同図に示すように、本システムＬＳＩは、ＣＰＵ１００と、ビデオ入力部１１０と、テクスチャマッピング部／フィルタリング部１２０と、コネクタ部１０１、１１１、１２１と、メモリインタフェース部１３０と、ユニファイドメモリ（以下、ＵＭという）１４０とを備える。
【００２７】
ＣＰＵ１００は、コネクタ部１０１に接続され、ビデオ入力部１１０は、コネクタ部１１１に接続され、テクスチャマッピング部／フィルタリング部１２０は、コネクタ１２１に接続されている。
【００２８】
コネクタ部１０１、１１１、１２１およびメモリインタフェース部１３０は、それぞれ、メモリバス１５０に接続されている。ここでは、メモリバス１５０のデータ幅は、５１２ビットとする。また、各コネクタ部１０１、１１１、１２１から出力されるアクセスモード選択信号が、メモリインタフェース部１３０に入力されている。
【００２９】
また、メモリインタフェース部１３０は、ＵＭ１４０にも接続されている。
【００３０】
ＣＰＵ１００、ビデオ入力部１１０、テクスチャマッピング部／フィルタリング部１２０は、それぞれ、異なる処理を行う処理部である。なお、テクスチャマッピング部とフィルタリング部は、ともに二次元的なローカリティを有しているため、代表して一つの処理部として示してある。
【００３１】
コネクタ部１０１、１１１、１２１は、各処理部とメモリバス１５０との間のインターフェースをとる機能ブロックである。コネクタ部１０１は、キャッシュ１０２を備え、コネクタ部１１１は、ライトバッファ（以下、Ｗバッファという）１１２を備え、コネクタ部１２１は、キャッシュ１２２を備える。
【００３２】
キャッシュ１０２は、ＣＰＵ１００が最近アクセスしたデータを保持する高速メモリである。例えば、ＣＰＵ１００がメモリ・リードを行う際、アクセス対象データがキャッシュ１０２内にあれば、そのデータがＣＰＵ１００に渡される。一方、アクセス対象データがキャッシュ１０２内になければ、メモリバス１５０およびメモリインタフェース部１３０を介して、ＵＭ１４０からアクセス対象データを含む１キャッシュライン分のデータ（ここでは、５１２バイトのデータとする）が読み出され、アクセス対象データがＣＰＵ１００に渡されると共に、読み出されたキャッシュラインデータがキャッシュ１０２に保持される。
【００３３】
Ｗバッファ１１２は、ビデオ入力部１１０から、例えば、画素単位で入力されるデータを順次格納し、一杯になった時点で、Ｗバッファ１１２内のデータを、メモリバス１５０およびメモリインタフェース部１３０を介して、ＵＭ１４０に書き込む。Ｗバッファ１１２は、ビデオ入力部１１０とコネクタ部１１１との間のデータバス幅と、メモリバス１５０のデータバス幅との間の差を吸収し、メモリバス１５０の使用回数を減らすためのバッファである。つまり、ビデオ入力データをＵＭ１４０に格納する場合、各画素データごとにメモリアクセスを行っていたのでは、メモリバス１５０の利用頻度が非常に高くなるので、複数の画素データをＷバッファにためておいて、あるまとまった単位（ここでは、５１２バイトとする）で、ＵＭ１４０に書き込みを行う。
【００３４】
キャッシュ１２２は、テクスチャマッピング部／フィルタリング部１２０から、例えば、画素単位でのデータアクセス要求があった場合に、アクセス対象データがキャッシュ１２２に既に読み込まれていれば、キャッシュ１２２上のアクセス対象データをテクスチャマッピング部／フィルタリング部１２０に渡す。一方、アクセス対象データがキャッシュ１２２上になければ、メモリバス１５０およびメモリインタフェース部１３０を介して、ＵＭ１４０にアクセスを行い、アクセス対象データを含む１キャッシュライン分のデータ（ここでは、５１２ビットのデータとする）を読み出し、要求されたデータをテクスチャマッピング部／フィルタリング部１２０に渡すと共に、読みだされたキャッシュラインデータを保持する。
【００３５】
メモリインタフェース部１３０は、各処理部１００、１１０、１２０からのアクセス要求を調停し、メモリアクセス要求を出している処理部の中で、実際にメモリバス１５０を使うことができる処理部を決定する。
【００３６】
調停の結果、アクセスを許可された処理部は、メモリバス１５０を通してメモリインタフェース部１３０へアドレスとアクセスモード選択信号を送出し、データの授受を行う。
【００３７】
メモリインタフェース部１３０は、受け取ったアドレス等に従って、所定のタイミングでＵＭ１４０にアクセスを行い、ＵＭ１４０に対してデータの読み書きを行う。
【００３８】
メモリインターフェース部１３０は、アドレス変換部１３１とデータアライナ部１３２とを備える。
【００３９】
アドレス変換部１３１は、メモリバス１５０からメモリインタフェース部１３０が受け取ったアドレスを、アクセスモード選択信号に基づいて、ＵＭ１４０の物理アドレスへ変換する。メモリインタフェース部１３０は、この物理アドレスを用いて、ＵＭ１４０とデータの授受を行う。
【００４０】
メモリインタフェース部１３０がＵＭ１４０とデータの授受を行う際、データアライナ部１３２は、必要に応じて、データを所定のデータ単位で並びかえて、メモリバス１５０上のデータ配列とＵＭ１４０上のデータ配列との間の変換を行う。
【００４１】
次に、ＵＭ１４０の構成について説明する。ここでは、ＵＭ１４０をＤＲＡＭを用いて構成した場合について説明する。
【００４２】
図２は、ＵＭ１４０の構成を示す図である。
【００４３】
同図に示すように、ＵＭ１４０は、２LM個の独立したモジュール５００で構成される。例えば、出力の場合、各モジュール５００からは、２LWバイトのデータが出力され、各モジュール５００からの出力データが２LM個分集まって、全体で、ＵＭ１４０から出力される２(LW+LM)バイトのデータを構成する。
【００４４】
また、各モジュール５００は、バンクセレクタ５１０、および、２LB個の独立したバンク５２０を備える。バンクセレクタ５１０は、LBビットのバンクアドレス（Ｂアドレス）に基づいて、モジュール５００の出力として、２LB個のバンクのうちのいずれかの出力を選択する。
【００４５】
また、各バンク５２０は、ローセレクタ５２１と、カラムセレクタ５２２と、センスアンプ５２３と、２LR×２LC個のメモリセル５２４（１メモリセルは、２LWバイト）とを備える。
【００４６】
ローセレクタ５２１は、LRビットのローアドレス（Ｒアドレス）に基づいて、２LR個の行データ（２(LC+LW)バイトのデータ）の中から、１つの行データを選択して、センスアンプ５２３に出力する。
【００４７】
センスアンプ５２３は、ローセレクタ５２１から出力された２(LC+LW)バイトの行データを検知・増幅して、保持する。
【００４８】
カラムセレクタ５２２は、LCビットのカラムアドレス（Ｃアドレス）に基づいて、センスアンプ５２３に格納されている２LC個のメモリセル・データの内の１つを選択し、バンク５２０からの出力として、２LWバイトのデータを出力する。
【００４９】
なお、図２に示したＵＭ１４０では、すべてのモジュール５００からの出力を平行にＵＭ１４０外部に出力しているが、各モジュール５００からの出力を入力とするセレクタを更に設け、別途供給されるモジュールアドレスに基づいて、一部のモジュールからの出力のみを、ＵＭ１４０の出力とするようにしてもよい。例えば、ＵＭ１４０に４つのモジュール０〜３がある場合、１ビットのモジュールアドレス（Ｍアドレス）が「０」のとき、モジュール０および１の出力を出力し、１ビットのモジュールアドレスが「１」のとき、モジュール２および３の出力を出力するようにしてもよい。
【００５０】
次に、ＵＭ１４０の動作について説明する。これは、一般的なマルチバンク、マルチモジュール構成のシンクロナスＤＲＡＭと同様の動作である。
【００５１】
ＵＭ１４０には、メモリインタフェース部１３０から、バンクアドレス、ローアドレス、カラムアドレスなどのアドレスと、リード（読み出し）、ライト（書込み）を表わすコマンドが入力される。なお、ライトの場合は、書き込むデータも入力される。
【００５２】
まず、リードの際の動作について説明する。
【００５３】
各バンク５２０では、バンクアドレスによって自分が指定されると、ローアドレスに対応する２(LC+LW)バイトの行データが、センスアンプ５２３に読み出される。
【００５４】
センスアンプ５２３に読み出された行データは、カラムセレクタ５２２に入力される。カラムセレクタ５２２は、カラムアドレスに基づいて、センスアンプ５２３に読みだされた行データの中から、２LWバイトのデータを一つ選択し、バンク５２０から出力する。
【００５５】
各バンク５２０から出力された２LWバイトのデータは、バンクセレクタ５１０に入力される。バンクセレクタ５１０は、バンクアドレスに基づいて、２LB個のバンク出力のうちから１つを選択して、モジュール出力として出力する。
【００５６】
前述したように、各モジュール５００から出力された２LM個の２LWバイトのデータ、計２(LM+LW) バイトがＵＭ１４０より出力される。ＵＭ１４０から読み出されたデータは、メモリインタフェース部１３０に渡される。
【００５７】
なお、センスアンプ５２３に行データを読み出すには、所定のサイクル数（例えば、６サイクル）が必要であるが、センスアンプ５２３に既に読み出されているデータをアクセスする場合は、メモリセル５２４から行データを読み出す必要はないので、高速に（例えば、２サイクルで）アクセスすることができる。従って、ローカリティの高いデータは、同時にセンスアンプ５２３に読み出されるようにすることが望ましい。
【００５８】
次に、ライトの際の動作について説明する。
【００５９】
各バンク５２０では、バンクアドレスで自分が指定されると、ローアドレスに対応する２(LC+LW)バイトの行データがセンスアンプ５２３に送られる。
【００６０】
ＵＭ１４０に入力された書込みデータは、各モジュール５００に入力され、バンクアドレスにより指定されたバンクのセンスアンプ１２３上にある行データのうち、カラムアドレスにより選択された２LWバイトのデータが書込みデータにより書き換えられる。
【００６１】
ライトの場合も、リードの場合と同様に、各バンクのセンスアンプ１２３に既に読み出されているデータは高速に（例えば、１サイクルで）アクセスすることができるので、ローカリティの高いデータは同時にセンスアンプに読み出されるようにすることが望ましい。
【００６２】
以下では、ＵＭ１４０の構成として、LM=2、LB=4、LR=8、LC=4、LW=4の場合を考える。すなわち、ＵＭ１４０は、４（＝２2）個の独立したモジュール５００で構成される。また、各モジュール５００は、１６（＝２4）個のバンク５２０を備え、各バンク５２０は、２8×２4個のメモリセル５２４を備える。また、各メモリセル５２４は、２4バイトのデータを格納する。この場合、各モジュール５００からは、それぞれ、１６（＝２4）バイトのデータが出力されるので、ＵＭ１４０からの出力は、４×１６バイト＝６４バイト（＝５１２ビット）となる。
【００６３】
次に、本実施形態で扱われる画像について説明する。
【００６４】
図３は、本実施形態で扱われる５１２×５１２画素サイズの画像の階層構造を示す図である。
【００６５】
画像データは、この階層的な区分に対応した形でメモリ上に格納される。実際にはこの階層とメモリ上のアドレスが対応することになり、この対応をアドレスマッピングという。
【００６６】
同図に示すように、本実施形態においては、５１２×５１２画素の画像１枚は、８×３２のブロックから構成されるものとする。また、各ブロックは、４×４のセルから構成されるものとする。
【００６７】
そして、各セルは、１６×４の画素から構成される。更に、各画素は、Ｒ（赤）、Ｇ（緑）、Ｂ（青）、α（透明度）各１バイトの４成分から構成される。すなわち、１画素は、４バイト＝３２ビットのデータから構成される。従って、５１２×５１２画素の画像１枚は、１Ｍバイトのデータで構成される。
【００６８】
次に、前述したような画像データをＵＭ１４０に格納する際のアドレスマッピングについて説明する。
【００６９】
図４は、画像データをＵＭ１４０に格納する際のアドレスマッピングの例を示す図である。
【００７０】
ここでは、ＵＭ１４０のうち、４Ｍバイトのメモリ領域（以下、画像領域という）が、画像データの格納に使われるものとする。この場合、画像領域は、２２ビットのアドレスによって、アクセスされる。
【００７１】
図４の例は、この２２ビットのアドレスと、ＵＭ１４０における、２ビットのモジュールアドレス（M[1:0]）、４ビットのバンクアドレス（B[3:0]）、８ビットのローアドレス（R[7:0]）、４ビットのカラムアドレス（C[3:0]）、４ビットのバイトアドレス（W[3:0]）との間のアドレスマッピングを示している。
【００７２】
前述したように、５１２×５１２画素の画像１枚は、１Ｍバイトなので、先頭の２ビットは、画像領域内でアクセスすべき画像の先頭アドレスを表わしている。この２ビットは、B[3]、B[2]として使われる。ここで、B[2]という記述は、バンクアドレスの第２ビットを表わす。ただし、Ｂの最下位ビットは、B[0]としている。
【００７３】
次の８ビットは、最上位２ビットで指定された画像内でアクセスすべきブロックの先頭アドレスを示している。ここで、上位５ビットは、画像の縦方向のアドレスＹで、下位３ビットは、画像の横方向のアドレスＸである。この８ビットは、ローアドレスR[7］〜R[0]として使われる。
【００７４】
同様に、その次の４ビットは、指定されたブロック内でアクセスすべきセルの先頭アドレスを示している。ここで、上位２ビットは、縦方向のアドレスＹで、下位２ビットは、横方向のアドレスＸである。この４ビットは、B[1］、C[3]、B[0]、C[2]として使われる。
【００７５】
最後の８ビットは、指定されたセル内部のアドレスであるが、このうち上位２ビットは、セル内のライン（ＵＭ１４０から出力される６４バイトのデータの単位）の先頭アドレスである。また、残り６ビットは、ライン内のバイトアドレスであるが、ＵＭ１４０に対しては、ライン単位でデータがアクセスされるので、この６ビットのライン内バイトアドレスは、ＵＭ１４０に入力する必要はない。
【００７６】
次に、図４に示したアドレスマッピング時のセル内の画素のアドレス割付について具体的に説明する。
【００７７】
図５は、一つのセル（１６×４画素）内の画像データをメモリに格納する際の格納方式を説明する図である。
【００７８】
同図に示すように、セル内の各画素には、横方向（Ｘ方向）４画素のかたまり毎に、２次元のアドレスが付与されている。ここでは、第一座標をＹ、第二座標をＸとして（Ｙ，Ｘ）の形で記す。以下、この２次元のアドレスが付与された４画素のかたまりを、パックと呼ぶ。
【００７９】
パック（０，０）〜（３，３）が、（０，０）〜（０，３），（１，０）〜（１，３），（２，０）〜（２，３），（３，０）〜（３，３）の順に、ＵＭ１４０に格納されているとすると、図４に示したアドレス割付においては、同一のＸ座標を持つ４つのパックが同一モジュール（モジュールアドレス：Ｘ）に格納される。
【００８０】
すなわち、パック（０，０）、（１，０）、（２，０）、（３，０）がモジュール０に格納され、パック（０，１）、（１，１）、（２，１）、（３，１）がモジュール１に格納され、パック（０，２）、（１，２）、（２，２）、（３，２）がモジュール２に格納され、パック（０，３）、（１，３）、（２，３）、（３，３）がモジュール３に格納される。
【００８１】
この時、同一のＹ座標を持つ４つのパック（例えば、パック（０，０）、（０，１）、（０，２）、（０，３））は別々のモジュール５００に格納されているので、横並びの１６画素に対しては同時にアクセスできる。しかし、前述したように同一のＸ座標を持つ４つのパック（例えば、パック（０，０）、（１，０）、（２，０）、（３，０））は同一のモジュール５００に格納されているので、４×４画素に対しては同時にアクセスができない。つまり、この場合は、リニアアクセスには適しているが、タイルアクセスには適していない。
【００８２】
一方、パック（０，０）〜（３，３）が、（０，０）〜（３，０），（０，１）〜（３，３），（０，２）〜（３，２），（０，３）〜（３，３）の順に、ＵＭ１４０に格納されているとすると、図４に示したアドレス割付においては、同一のＹ座標を持つ４つのパックが同一モジュール（モジュールアドレス：Ｙ）に格納される。この場合、タイルアクセスには適しているが、リニアアクセスには適していない。
【００８３】
リニアアクセスとタイルアクセスの両方に適したものにするためには、「同一セル内において、同一Ｘ座標を有するパックは、すべて異なるモジュールに格納されており、かつ、同一Ｙ座標を有するパックは、すべて異なるモジュールに格納されている」必要がある。
【００８４】
図６は、このような条件を満たした格納方式を示す図である。同図において、縦方向（Ｙ方向）に並んだ４つのパックは、同一モジュールに格納される。すなわち、パック（０，０）、（１，３）、（２，２）、（３，１）は、モジュール０に格納され、パック（０，１）、（１，０）、（２，３）、（３，２）は、モジュール１に格納され、パック（０，２）、（１，１）、（２，０）、（３，３）は、モジュール２に格納され、パック（０，３）、（１，２）、（２，１）、（３，０）は、モジュール３に格納される。
【００８５】
図６では、第０行目（Ｙ＝０）のパックは、Ｘ座標が０，１，２，３と並んでいるが、第１行目（Ｙ＝１）のパックは、Ｘ座標が０，１，２，３を一つずらした形、つまり、３，０，１，２と並んでいる。同様に第２行目、第３行目も、さらに一つづつずらした形で並んでいる。
【００８６】
このような形でパックを格納すれば、「同一セル内において、同一Ｘ座標を有するパックは、すべて異なるモジュールに格納され、同一Ｙ座標を有するパックは、すべて異なるモジュールに格納される」という条件を満たし、リニアアクセスとタイルアクセスを両立させることができる。
【００８７】
図７は、このような形でパックを格納する場合のアドレス割付を示す図である。
【００８８】
同図に示すように、図４とほぼ同様のアドレス割付になっているが、セル内のライン選択アドレスが直接的にカラムアドレスとはなっておらず、新たな２ビットのライン選択アドレスL[1]，L[0]に代わっている点が異なる。これはラインを選択する際にモジュール毎に異なるカラムアドレスを指定する必要があるからである。
【００８９】
したがって、図７に示すアドレスは、最終的にメモリセルをアクセスするまでにアドレス変換する必要がある。また、アクセスモードがリニアアクセスモードかタイルアクセスモードかによって、アドレス変換の方法が異なるため、アドレス変換する際にはアクセスモード選択信号を考慮する必要がある。アドレス変換部１３１が、このアドレス変換を行う。
【００９０】
さらに、このようにずらした形で格納されたデータは、処理部でアクセスする際のデータ並びとは異なるため、処理部にデータを渡す前に、ＵＭ１４０から読み出したデータの並び替えをする必要がある。データアライナ部１３２が、このデータの並び替えを行う。
【００９１】
次に、このアドレス変換とデータの並び替えの方法について説明する。
【００９２】
図８は、アクセスモードがリニアアクセスモードの場合の入力アドレス（ライン選択アドレス）に対するアドレス変換結果およびデータアライメントの対応を示す図である。
【００９３】
図８に示した表において、１列目はライン選択アドレスの値、２列目はモジュール番号（モジュールアドレス）を示しており、これらの組み合わせに対して、カラムアドレス（３列目）、ＵＭ１４０の各モジュールに格納されているパックの座標（４列目）、画像本来の画素の並びになるよう並び替えたときのパックの座標（５列目）、及び、パックの並びを正しく並び替えるための置換（６列目）を示している。
【００９４】
６列目にあるＳ１、Ｓ２の記号は、特定の置換を表す。Ｓ１は、（０，１，２，３）という配列を、（１，２，３，０）という配列へと変換する巡回置換を示し、Ｓ２は、（０，１，２，３）という配列を（２，３，０，１）という配列へと変換する巡回置換、即ち、置換Ｓ１を２度施した置換Ｓ１＊Ｓ１を示す。また、１は、配列を変化させない恒等置換を示す。
【００９５】
図８においてアドレス変換に注目すると、カラムアドレス[C1,C0]はライン選択アドレスの値と一致している。
【００９６】
なお、図に示した置換は、読み出し時、すなわち、各モジュール５００に格納されている状態から正しい状態に（元の画素配列のように）並べ替える際の置換である。書込みの際は、６列目の逆置換を施せばよい。１の逆置換は１、Ｓ１の逆置換はＳ１＊Ｓ２、Ｓ２の逆置換はＳ２、Ｓ１＊Ｓ２の逆置換は、Ｓ１である。
【００９７】
図９は、アクセスモードがタイルアクセスモードの場合の入力アドレス（ライン選択アドレス）に対するアドレス変換結果およびデータアライメントの対応を示す図である。
【００９８】
図９に示した表の構成は、図８に示した表の構成と同じで、１列目はライン選択アドレスの値、２列目はモジュール番号を示しており、これらの組み合わせに対して、カラムアドレス（３列目）、ＵＭ１４０の各モジュールに格納されているパックの座標（４列目）、画像本来の画素の並びになるよう並び替えたときのパックの座標（５列目）、及び、パックの並びを正しく並び替えるための置換（６列目）を表わしている。
【００９９】
図９においてアドレス変換に注目すると、カラムアドレス[C1,C0]は２ビットの演算でモジュール番号からライン選択アドレスの値を引いた値になっている。
【０１００】
なお、図８と図９の６列目はすべて同じ置換になっており、この場合にはデータアライナ部１３２は、アクセスモード選択信号を必要としない。
【０１０１】
但し、一般に、「セル内において、同一Ｘ座標を有するパックは、すべて異なるモジュールに格納されており、同一Ｙ座標を有するパックは、すべて異なるモジュールに格納されている」という条件の格納方式をとった場合には、モードによって異なる置換が必要な場合もあり、その場合、データアライナ部１３２は、アクセスモード選択信号に応じて、異なる置換を行う。
【０１０２】
次に、前述したアドレス変換を行うアドレス変換部１３１とＵＭ１４０内の各モジュール５００との間の接続形態について説明する。
【０１０３】
図１０は、メモリインタフェース部１３０内のアドレス変換部１３１とＵＭ１４０内の各モジュール５００との間の接続形態を示す図である。
【０１０４】
同図に示すように、アドレス変換部１３１から、各モジュール５００に対して、カラムアドレスの上位２ビット［C3，C2］が共通に供給される。また、カラムアドレスの下位２ビット［C1，C0］は、各モジュール５００に対して個別に供給される。
【０１０５】
メモリインタフェース部１３０には、アクセスを許可された処理部からメモリバス１５０を通して、アドレス及びアクセスモード選択信号が入力される。なお、同図では、メモリインタフェース部１３０に渡されるアドレスのうち、カラムアドレスの上位２ビット［C3，C2］とライン選択アドレス２ビット［L1，L0］のみを示してある。同図に示していないアドレスは、バンクアドレス及びローアドレスとして、全てのモジュール５００に所定のタイミングでブロードキャストされる。
【０１０６】
メモリインタフェース部１３０は、入力されたアドレスのうち、カラムアドレスの上位２ビットについては、各モジュール５００にブロードキャストする。また、ライン選択アドレス２ビットとアクセスモード選択信号に基づいて、図８及び図９で示したように、カラムアドレスの下位２ビットを生成する。このカラムアドレスの下位２ビットはモジュール５００毎に異なるので、各モジュール５００に個別に分配する。各モジュール５００は、これら４ビットのカラムアドレスに従い、出力すべきデータをセンスアンプ１２３上から選択する。
【０１０７】
以上説明した実施形態では、アドレス変換部１３１は、メモリインタフェース部１３０内に設けられていたが、アドレス変換部１３１を、各モジュール５００に設けるようにしてもよい。
【０１０８】
図１１は、各モジュール５００にアドレス変換部１３１を置いた例を示す図である。同図に示すように、各モジュール５００は、アドレス変換部１３１を備える。また、アドレス変換部１３１は、モジュールアドレス・レジスタ（Ｍｒｅｇ）１４００を備える
Ｍｒｅｇ１４００は、各モジュールのモジュールアドレス（モジュール番号）を格納するレジスタである。例えば、モジュール０のＭｒｅｇ１４００には、「０」が設定され、モジュール１のＭｒｅｇ１４００には、「１」が設定され、モジュール２のＭｒｅｇ１４００には、「２」が設定され、モジュール３のＭｒｅｇ１４００には、「３」が設定される。Ｍｒｅｇ１４００の値は、固定にしても可変にしてもよい。
【０１０９】
図１１の場合、メモリインタフェース部１３０は、メモリバス１５０を介して受け取るアドレスをすべてのモジュール５００に所定のタイミングでブロードキャストする。
【０１１０】
各モジュール５００のアドレス変換部１３１は、各Ｍｒｅｇ１４００に格納されたモジュールアドレスと、メモリインタフェース部１３０から供給されるライン選択アドレス及びアクセスモード選択信号とに基づいて、カラムアドレスの下位２ビットを生成する。
【０１１１】
なお、Ｍｒｅｇ１４００は、各モジュール５００内のアドレス変換部１３１に各モジュール５００のモジュールアドレス（モジュール番号）を知らせるために設けられたものであるので、単に、各モジュール５００のモジュールアドレスを示す信号を各モジュール５００のアドレス変換部１３１に供給するようにしてもよい。
【０１１２】
次に、データアライナ部１３２の構成について説明する。
【０１１３】
図１２は、データアライナ部１３２の構成例を示す図である。
【０１１４】
ここでは、簡単のため、メモリ読み出し方向のデータアライナ部１３２のみを示す。なお、メモリ書込み方向のデータアライナ部も、メモリ読み出し方向の場合と同様にして、巡回置換を２段重ねることで作ることができる。
【０１１５】
図１２（ａ）に示すように、データアライナ部１３２は、Ｓ１部１５００と、Ｓ２部１５１０とを備える。データアライナ部１３２は、ライン選択信号L0、L1に従って、図８及び図９に示したように動作する。Ｓ１部１５００およびＳ２部１５１０は、それぞれ、図８、図９の６列目に示してある置換Ｓ１、Ｓ２を行うユニットである。
【０１１６】
図１２（ｂ）に示すように、Ｓ１部１５００は、セレクタ１５０１〜１５０４を備える。セレクタ１５０１〜１５０４は、選択信号Ｌ０（ライン選択アドレスL[0]）の「０」，「１」に対応して、セレクタの入力のうち０，１の添え字が付いているほうを選択して出力する。すなわち、Ｓ１部１５００は、Ｌ０＝「１」のとき、３，０，１，２の並びを０，１，２，３へ巡回置換する。
【０１１７】
また、図１２（ｃ）に示すように、Ｓ２部１５１０は、セレクタ１５１１〜１５１４を備える。セレクタ１５１１〜１５１４は、選択信号Ｌ１（ライン選択アドレスL[1]）の「０」，「１」に対応して、セレクタの入力のうち０，１の添え字が付いているほうを選択して出力する。すなわち、Ｓ２部１５１０は、Ｌ１＝「１」のとき、２，３，０，１の並びを、０，１，２，３へ巡回置換する。
【０１１８】
以上のような構成を有するデータアライナ部１３２で適宜並び替えられた１ライン分のデータは、キャッシュ１０２、１２２等に格納される。
【０１１９】
図１３は、キャッシュの１ラインに入るパックの並びを示す図である。
【０１２０】
図１３（ａ）は、リニアキャッシングで、ライン選択アドレスがＹのときのキャッシュの内容を表わしている。
【０１２１】
図１３（ｂ）は、タイルキャッシングで、ライン選択アドレスがＸのときのキャッシュの内容を表わしている。
【０１２２】
次に、図６に示した方法とは異なる画像データの格納方式について説明する。
【０１２３】
図１４は、本発明の一実施形態における別の画像格納方式を表す図である。図１４に示す格納方式では、同一のＹ座標を持つ４つのパック、即ち、横並びの１６画素に対して同時にアクセスするリニアアクセスと、同一のＸ座標を持つ４つのパック、即ち、４×４画素に対して同時にアクセスするタイルアクセスに加えて、更に、２×２パック、即ち８×２画素の領域を同時にアクセスするモードをサポートしている。以下、このアクセスを行うモードを、８×２アクセスモードと呼ぶ。
【０１２４】
８×２アクセスモードにおいては、例えば、パック（０，０）、（０，１）、（１，０）、（１，１）を同時にアクセスすることが可能になる。
【０１２５】
同図において、縦方向（Ｙ方向）に並んだ４つのパックは、同一モジュールに格納される。すなわち、パック（０，０）、（１，２）、（２，１）、（３，３）は、モジュール０に格納され、パック（０，１）、（１，３）、（２，０）、（３，２）は、モジュール１に格納され、パック（０，２）、（１，０）、（２，３）、（３，１）は、モジュール２に格納され、パック（０，３）、（１，１）、（２，２）、（３，０）は、モジュール３に格納される。
【０１２６】
図１５〜図１７は、この場合のアドレス変換とデータの並び替えの方法を示す図である。
【０１２７】
図１５〜図１７に示した表の構成は、図８、図９に示した表の構成と同じである。
【０１２８】
図１５は、アクセスモードがリニアアクセスモードの場合を示す図である。
【０１２９】
図１６は、アクセスモードがタイルアクセスモードの場合を示す図である。
【０１３０】
図１７は、アクセスモードが８×２アクセスモードの場合を示す図である。
【０１３１】
なお、図１５〜図１７の置換の欄で、「0⇔2」や「2⇔3」などの記述があるが、これは、それぞれ、（０，１，２，３）の中で、０と２、および、２と３を交換する置換、すなわち、（０，１，２，３）から（２，１，０，３）への置換、及び、（０，１，２，３）から（０，１，３，２）への置換を表わしている。
【０１３２】
次に、本発明の別の実施形態について説明する。
【０１３３】
図１８は、本発明を適用した別のシステムＬＳＩの構成を示す図である。
【０１３４】
同図に示すように、本システムＬＳＩは、データアライナ部１３２が、コネクタ部１０１、１１１、１２１に含まれている点で、図１に示したシステムＬＳＩと異なる。
【０１３５】
各処理部とコネクタ部間のデータ幅がパックのデータ幅以下の場合、必要なデータを含むパックを選択して処理部に渡せばよいので（リードの場合）、データアライナ部１３２は、実質的にセレクタとなりデータを並べ替える処理は不要となる。したがって、この時は、データアライナ部１３２をメモリインタフェース部１３０に置くよりも小さな物量でシステムが構成できる。なお、この場合、キャッシュ１０２、１２２等には、各パックが、例えば、図８、図９、図１５〜図１７の４列目に示した並びで格納されることになる。
【０１３６】
また、更に、アドレス変換部１３１を各コネクタ部１０１、１１１、１２１に含めるようにしてもよい。この場合、各処理部がメモリインタフェース部１３０に送るアドレスの一部がモジュール毎に異なることになる。すなわち、各処理部からメモリインタフェース部１３０に対して、アドレスの一部については、モジュール毎に異なるアドレスが渡される。メモリインタフェース部１３０は、各処理部から渡されたアドレスのうち、モジュール毎に異なるアドレスについては、モジュール毎に個別に送り、残りのアドレスについては、全てのモジュールにブロードキャストする。
【０１３７】
最後に、一般のアプリケーションプログラムが動作するシステムにおける本発明によるメモリ領域の使用例について説明する。
【０１３８】
図１９は、本発明を適用したＵＭ１４０のメモリ領域の使用例を示す図である。
【０１３９】
この場合、ＵＭ１４０を、ＣＰＵ１００上で動作しているアプリケーションが直接アクセスする領域１９００と、表示画像やテクスチャなどを格納しておく画像領域１９１０とに分けている。そして、一般のアプリケーションが画像をテクスチャとして登録したり、ビデオ入力を行う際には、必ず標準のライブラリ（関数の集まり）を使用して、これらの処理を行うようにし、これらのライブラリのドライバ（ライブラリ関数の実体）に対してのみ、画像領域１９１０へのアクセスを許可しておく。この場合、ドライバは、画像領域１９１０にアクセスする際には、図６や図１４に示したようなリニアアクセスやタイルアクセスが可能な格納方式に即してアクセスする。
【０１４０】
このようにしておけば、新しいシステムを提供する際にはライブラリのドライバを共に提供することで、アプリケーションプログラムやコンパイラを変更することなく、画像領域１９１０において異なるアクセス方法（例えば、リニアアクセスとタイルアクセス）を両立させることができる。
【０１４１】
画像以外に音声などを扱う場合にも、一般のアプリケーションプログラムが動作するシステムにおいては、ＣＰＵ上で動作しているアプリケーションがアクセスする領域と、画像や音声などＣＰＵ以外のリソースがアクセスする領域とを分けておくことで、ＣＰＵ以外のリソースがアクセスする領域においてアプリケーションプログラムやコンパイラを変更することなく、ある特定の領域においてリニアアクセス（リニアキャッシング）とタイルアクセス（タイルキャッシング）を両立させることができる。
【０１４２】
【発明の効果】
以上詳細に説明したように、本発明によれば、同一のアドレス空間に対して、リニアアクセスとタイルアクセス等、異なるアクセス方法でアクセスすることが可能となり、これによって、メモリアクセスに関して、異なったローカリティ（局所性）を持つ処理部が混在した場合でも、それぞれのローカリティに適したメモリアクセスが可能になる。
【０１４３】
その結果、異なったローカリティ（局所性）を持つ処理部が混在した場合でも、メモリへのアクセス効率の低下を防止できる。また、各処理部がキャッシュを備えている場合は、ヒット率の向上が期待でき、処理速度の向上が図れる。
【図面の簡単な説明】
【図１】  本発明によるシステムＬＳＩのブロック図である。
【図２】  ユニファイドメモリの構成を示すブロック図である。
【図３】  画像の階層構造を説明する図である。
【図４】  画像データをメモリに格納する際のアドレスマッピングの例を示す図である。
【図５】  画像をメモリに格納する際の格納方式の例を示す図である。
【図６】  本発明による画像格納方式を説明する図である。
【図７】  本発明による画像格納方式で画像データを格納する際のアドレスマッピングを示す図である。
【図８】  リニアアクセスモード時の入力アドレスに対するアドレス変換結果およびデータアライメントの対応を示す図である。
【図９】  タイルアクセスモード時の入力アドレスに対するアドレス変換結果およびデータアライメントの対応を示す図である。
【図１０】  メモリインタフェース部１３０と各モジュール５００との間の接続形態を示す図である。
【図１１】  各モジュール５００にアドレス変換部１３１を置いた例を示す図である。
【図１２】  データアライナ部の構成を示すブロック図である。
【図１３】  キャッシュ内のパックの配置を示す図である。
【図１４】  本発明による別の画像格納方式を説明する図である。
【図１５】  リニアアクセスモード時の入力アドレスに対するアドレス変換結果およびデータアライメントの対応を示す図である。
【図１６】  タイルアクセスモード時の入力アドレスに対するアドレス変換結果およびデータアライメントの対応を示す図である。
【図１７】  ８×２アクセスモードの時の入力アドレスに対するアドレス変換結果およびデータアライメントの対応を示す図である。
【図１８】  本発明による別のシステムＬＳＩのブロック図である。
【図１９】  一般のアプリケーションプログラムが動作するシステムにおけるＵＭの使用例を示す図である。
【図２０】  ローカリティの概念を説明する図である。
【図２１】  従来方式によるメモリアクセスの概要を説明する図である。
【符号の説明】
１００  ＣＰＵ
１１０  ビデオ入力部
１２０  テクスチャマッピング部／フィルタリング部
１０１，１１１，１２１  コネクタ部
１３０  メモリインタフェース部
１３１  アドレス変換部
１３２  データアライナ部
１４０  ユニファイドメモリ（ＵＭ）
【図１】
0003639464.tif 000002
【図２】
0003639464.tif 000003
【図３】
0003639464.tif 000004
【図４】
0003639464.tif 000005
【図５】
0003639464.tif 000006
【図６】
0003639464.tif 000007
【図７】
0003639464.tif 000008
【図８】
0003639464.tif 000009
【図９】
0003639464.tif 000010
【図１０】
0003639464.tif 000011
【図１１】
0003639464.tif 000012
【図１２】
0003639464.tif 000013
【図１３】
0003639464.tif 000014
【図１４】
0003639464.tif 000015
【図１５】
0003639464.tif 000016
【図１６】
0003639464.tif 000017
【図１７】
0003639464.tif 000018
【図１８】
0003639464.tif 000019
【図１９】
0003639464.tif 000020
【図２０】
0003639464.tif 000021
【図２１】
0003639464.tif 000022