(57)【要約】ユーザによる構成可能なメモリコントローラ、ローカルブロックＲＡＭ、グローバルブロックＲＡＭ、およびプロセッサコアを有するデータ処理システムは、１つのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）において構成され得る。グローバルブロックＲＡＭのアドレス深さおよび待機状態の数は、ユーザによる選択が可能であり、それらを、ＦＰＧＡの構成前に設定するか、または、プロセッサコアの命令を用いて、プログラムすることができる。ローカルブロックＲＡＭの待機状態の数もまた、ユーザによる選択が可能である。アドレス深さおよび待機状態の数を最適化して、或る性能レベルを達成することのできるアルゴリズムもまた開示される。この発明は、別個の命令側とデータ側とを有する設計に適用することができる。
2004529403.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（１０２）のインターフェイスとなり、かつ、ランダムアクセスメモリ（ＲＡＭ）の１つ以上のブロックを制御する、ユーザプログラマブルなメモリコントローラ（１０４）であって、前記プロセッサは、第１の組のアドレス線を生成し、前記コントローラは、
前記第１の組のアドレス線から第２の組のアドレス線を生成するユーザプログラマブルなアドレスマネージャ（１１６）を含み、前記第２の組のアドレス線は、プログラマブルな深さを有して、前記ＲＡＭの１つ以上のブロックに結合され、前記コントローラはさらに、
前記深さに関連する待機状態を生成するユーザプログラマブルな待機状態マネージャ（１１４）を含む、ユーザプログラマブルなメモリコントローラ（１０４）。
【請求項２】
前記ＲＡＭの１つ以上のブロックの少なくとも１つは、構成可能なアスペクト比を有し、前記深さは、前記アスペクト比と関連する、請求項１に記載のコントローラ（１０４）。
【請求項３】
前記アドレスマネージャ（１１６）は、
前記第１の組のアドレス線の１つを受取る入力と出力とを各々が有する、複数のロジック構成要素（１７０）と、
前記複数のロジック構成要素を活性化または非活性化するためのユーザプログラマブルな状態を有する制御信号の組とを含む、請求項１に記載のコントローラ（１０４）。
【請求項４】
前記ＲＡＭの１つ以上のブロックの少なくとも１つは、構成可能なアスペクト比を有し、前記制御信号の組の前記状態は、前記アスペクト比と関連する、請求項３に記載のコントローラ（１０４）。
【請求項５】
前記複数のロジック構成要素は、デマルチプレクサ（１７２）を含む、請求項３に記載のコントローラ（１０４）。
【請求項６】
前記アドレスマネージャ（１１６）は、前記制御信号の組を生成する複数のマルチプレクサ（１７６）をさらに含む、請求項３に記載のコントローラ（１０４）。
【請求項７】
前記コントローラは、構成メモリ（１２６）を有するフィールドプログラマブルゲートアレイ（２０）において実現され、前記複数のマルチプレクサ（１７６）の各々への１つの入力は、前記フィールドプログラマブルゲートアレイ（２０）の前記構成メモリ（１２６）に結合される、請求項６に記載のコントローラ（１０４）。
【請求項８】
前記プロセッサ（１０２）は、レジスタ（１２８）と関連し、前記複数のマルチプレクサ（１７６）の各々への１つの入力は、前記レジスタに結合される、請求項６に記載のコントローラ（１０４）。
【請求項９】
前記レジスタ（１２８）は、前記プロセッサ（１２０）のソフトウェア命令によってプログラマブルである、請求項８に記載のコントローラ（１０４）。
【請求項１０】
前記コントローラは、構成メモリ（１２６）を有するフィールドプログラマブルゲートアレイにおいて実現され、前記プロセッサ（１０２）はレジスタ（１２８）と関連し、前記複数のマルチプレクサの各々への入力は、前記フィールドプログラマブルゲートアレイ（２０）の前記構成メモリおよび前記レジスタに結合される、請求項６に記載のコントローラ（１０４）。
【請求項１１】
前記レジスタ（１２８）は、前記プロセッサ（２０）のソフトウェア命令によってプログラマブルである、請求項１０に記載のコントローラ（１０４）。
【請求項１２】
前記アドレスマネージャ（１１６）は、前記制御信号の組のそれぞれ１つを前記デマルチプレクサのそれぞれ１つに送信する出力端子を各々が有する複数のマルチプレクサをさらに含む、請求項５に記載のコントローラ（１０４）。
【請求項１３】
前記ＲＡＭの１つ以上のブロックの少なくとも１つは、構成可能なアスペクト比を有し、前記制御信号の組の前記状態は、前記アスペクト比と関連する、請求項１２に記載のコントローラ（１０４）。
【請求項１４】
前記コントローラ（１０４）は、構成メモリ（１２６）を有するフィールドプログラマブルゲートアレイ（２０）において実現され、前記複数のマルチプレクサの各々への１つの入力は、前記フィールドプログラマブルゲートアレイ（２０）の前記構成メモリ（１２６）に結合される、請求項１２に記載のコントローラ（１０４）。
【請求項１５】
前記プロセッサ（１０２）は、レジスタ（１２８）と関連し、前記複数のマルチプレクサの各々への１つの入力は、前記レジスタに結合される、請求項１２に記載のコントローラ（１０４）。
【請求項１６】
前記レジスタ（１２８）は、前記プロセッサ（１０２）のソフトウェア命令によってプログラマブルである、請求項１５に記載のコントローラ（１０４）。
【請求項１７】
前記コントローラは、構成メモリ（１２６）を有するフィールドプログラマブルゲートアレイ（２０）において実現され、前記プロセッサ（１０２）はレジスタ（１２８）と関連し、前記複数のマルチプレクサの各々への入力は、前記フィールドプログラマブルゲートアレイ（２０）の前記構成メモリおよび前記レジスタに結合される、請求項１２に記載のコントローラ（１０４）。
【請求項１８】
前記レジスタ（１２８）は、前記プロセッサ（１０２）のソフトウェア命令によってプログラマブルである、請求項１７に記載のコントローラ（１０４）。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は、一般に、メモリシステム設計に関し、より特定的に、メモリシステムのサイズおよび性能を最適化するためにユーザによる構成が可能なメモリシステムに関する。
【０００２】
【発明の背景】
プログラマブル集積回路（ＩＣ）は、特定のロジック機能を実行するために、ユーザによってプログラムされ得る集積回路の周知のタイプである。プログラマブルＩＣの１つのタイプである、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、容量、柔軟性、およびコストの優れた組合せにより、大変普及している。ＦＰＧＡは一般に、プログラマブル入力／出力ブロック（ＩＯＢ）の環に取り囲まれる、構成可能なロジックブロック（ＣＬＢ）のアレイを含む。ＣＬＢおよびＩＯＢは、プログラマブル相互接続構造によって相互接続される。ＣＬＢ、ＩＯＢ、および相互接続構造は一般に、ＣＬＢ、ＩＯＢ、および相互接続構造がどのように構成されるかを規定する内部構成メモリセル内に、構成データのストリーム（ビットストリーム）をロードすることによってプログラムされる。構成ビットストリームは、外部メモリ（外部ＰＲＯＭ等）から読出すことができる。個々のメモリセルの集合的な状態が、次に、ＦＰＧＡの機能を決定する。
【０００３】
処理技術が改良されるにつれて、ＦＰＧＡ内により多くのＣＬＢ、ＩＯＢ、および相互接続構造を製造することが可能になっている。最近では、ＦＰＧＡ内に、完全なデータ処理システム（中央処理ユニット、メモリ、およびさまざまなコントローラを含む）を構築することができる。いくつかの場合では、データ処理システムを構築するためにＦＰＧＡ内のＣＬＢ、ＩＯＢ、および相互接続構造のすべてを用いずに、それらのいくつかを、他のアプリケーションに用いることができる。
【０００４】
データ処理システム内の最も重要なリソースの１つがメモリである。多くのＦＰＧＡは、各々が数千個のメモリセルを有するランダムアクセスメモリ（ＲＡＭ）のブロック（「ブロックＲＡＭ」と呼ぶ）を設ける。これらのブロックを、異なる構成に組織することができる。一例として、ブロックＲＡＭは、１６キロビットの容量を有し得る。このブロックＲＡＭは、１６Ｋ、８Ｋ、４Ｋ、２Ｋ、１Ｋ、および０．５Ｋのいずれかのアドレス深さを有し、１アドレス当りにそれぞれ１、２、４、８、１６、または３２の対応するビット数を備えるように、ユーザによって構成され得る。ユーザはまた、多数のブロックを組合せて、メモリシステムの全体サイズを拡大することもできる。ブロックＲＡＭに関するより多くの情報は、ザイリンクス・インコーポレイテッド（Ｘｉｌｉｎｘ， Ｉｎｃ．）に譲渡された、「プログラマブルなワード長および幅を有するＲＡＭブロックと、専用アドレスおよびデータ線とを備えたＦＰＧＡアーキテクチャ（ＦＰＧＡ Ａｒｃｈｉｔｅｃｔｕｒｅ Ｈａｖｉｎｇ ＲＡＭ Ｂｌｏｃｋｓ ｗｉｔｈ Ｐｒｏｇｒａｍｍａｂｌｅ Ｗｏｒｄ Ｌｅｎｇｔｈ ａｎｄ Ｗｉｄｔｈ ａｎｄ Ｄｅｄｉｃａｔｅｄ Ａｄｄｒｅｓｓ ａｎｄ Ｄａｔａ Ｌｉｎｅｓ）」と題された米国特許第５，９３３，０２３号に見ることができる。この特許は、この明細書において引用により援用される。
【０００５】
一般に、データ処理システムは、できるだけ多くのメモリへのアクセスを有し得ることが望ましい。その理由の１つは、ソフトウェアモジュールの中に、実行するメモリ量を最小にすることを求めるものがあるためである。別の理由は、より多くのメモリをタスクに割当てることによって、計算の高速化が時として可能になるためである。その一方で、大量のメモリは、多数のブロックＲＡＭを必要とする。各ブロックＲＡＭが追加されると、メモリのメモリデータアクセス時間が延長される。この問題を解決する１つの方法が、メモリアクセスの要求と、アクセスの認可との間に遅延を導入することである。すなわち、「待機状態」の挿入が必要とされる。その結果、メモリインターフェイスでのデータ処理システムの性能が低下する。
【０００６】
データ処理システムに対して大量のメモリを確保することの別の問題とは、ＦＰＧＡ内のブロックＲＡＭの総量が限られていることである。データ処理システムに加え、ＦＰＧＡ内の他のロジックモジュールも、より多くのメモリを有することを必要とし得る。ブロックＲＡＭのすべてまたはほとんどがデータ処理システムに割当てられた場合に、他のロジックモジュールの設計を損なうおそれがある。
【０００７】
最適なメモリ量および待機状態の数は、設計が異なるごとに異なる。たとえば、リアルタイムアプリケーションは、迅速な実行を必要とする傾向がある。なぜなら、データ処理システムが、短い時間内に計算を完了しなければならないためである。したがって、待機状態をなくすことが望ましい。その一方で、汎用設計が、多くのソフトウェアアプリケーションを実行できるようにすることが有利なこともある。したがって、データ処理システムにより多くのメモリを含むことが有利となる。ユーザに対して最大の設計柔軟性をもたらすために、ユーザによるメモリシステムの構成および最適性能の達成を可能にすることが望ましい。
【０００８】
【発明の概要】
この発明は、ユーザによる構成可能なオンチップメモリシステムとオンチッププロセッサコアとを含む、オンチップデータ処理システムを提供する。メモリシステムは、少なくとも、メモリコントローラと、ブロックＲＡＭと、メモリシステムに関連する設計値の記憶装置とを含む。ブロックＲＡＭの数およびブロックＲＡＭに関連するアドレス線の数（すなわちアドレス深さ）は、ユーザによって選択されて、構成され得る。この発明の１つの利点とは、プロセッサコアによって用いられるブロックＲＡＭの必要量のみが、データ処理システムに割当てられることである。割当てられなかったブロックＲＡＭのすべてを、他のオンチップアプリケーションによって用いることができる。その結果、この発明は、貴重なリソース、すなわち、ブロックＲＡＭの使用を最適化する。
【０００９】
メモリコントローラの一実施例は、プロセッサコアから由来するアドレス線のいくつかを非活性化することのできるアドレスマネージャを含む。非活性化されるアドレス線の数は、ユーザによって構成可能である。非活性化は、デマルチプレクサ、マルチプレクサ、およびユーザによってもたらされた情報を記憶するメモリセルの組合せによって達成され得る。
【００１０】
ユーザは、この発明のメモリコントローラを適用して、メモリシステムの待機状態の数を設定することができる。メモリシステムが適切に機能することを確保するために、待機状態の数は、ブロックＲＡＭが要求に応答する時間を有するように選択されなければならない。この発明はまた、待機状態および関連するアドレス深さの最適な組合せをユーザが選択できるようにする、アルゴリズムも含む。
【００１１】
待機状態の数および／またはアドレス線の数は、ＦＰＧＡの構成前に設定されてよい。別の実施例において、これらの２つのパラメータの一方または両方は、プロセッサコアの命令をプログラムすることによって設定されてよい。この発明のメモリシステムを、別個の命令側とデータ側とを有するデータ処理システムに適用することもできる。このシステムでは、命令メモリコントローラが、命令を記憶するために用いられるブロックＲＡＭと関連し、データメモリコントローラが、データを記憶するために用いられるブロックＲＡＭと関連する。一実施例において、命令およびデータのブロックＲＡＭは、物理的に同一であり得る。この場合、メモリ保護のために、メモリ管理ユニット（ＭＭＵ）スキームを用いることが一般に望ましいと考えられる。
【００１２】
データ処理システムは、２つのタイプのブロックＲＡＭ、すなわち、ローカルおよびグローバルなブロックＲＡＭを有し得る。ローカルブロックＲＡＭは、プロセッサコアへの直接接続を有するが、グローバルブロックＲＡＭは、プログラマブルロジックデバイスの相互接続構造を介してプロセッサコアに接続される。その結果、ローカルブロックＲＡＭにアクセスする際の遅延は、グローバルブロックＲＡＭのものよりも、はるかに小さい。したがって、ローカルブロックＲＡＭの待機状態の数は、グローバルブロックＲＡＭのものよりも少ない。
【００１３】
この発明の上述の概要は、この発明の開示された実施例の各々を説明することを意図しない。以下の図面および詳細な説明は、この発明のさらなる実施例および局面をもたらす。
【００１４】
この発明は、同じ参照番号が同様の要素を示す以下の図面および詳細な説明において、限定としてではなく、例示として示される。
【００１５】
［詳細な説明］
この発明は、プログラマブルＩＣを用いてデータ処理システムを構築することに関する。以下の説明には、この発明のより完全な理解をもたらすように、多数の特定の詳細が明記される。しかしながら、当業者には、この発明をこれらの特定の詳細なしに実施できることが明らかであろう。この発明を不明瞭にすることを避けるために、周知の特徴を詳細に記載しない場合がある。
【００１６】
図１Ａは、ＦＰＧＡ２０および関連する外部メモリ１２を含むシステムを示すブロック図である。ＦＰＧＡ２０は、複数のビットを含む構成メモリ２４を含む。各構成ビットは、機能ルックアップテーブルビット、マルチプレクサ入力、または相互接続パストランジスタ等の、ＦＰＧＡの一部を制御する静的メモリセルの状態を規定する。構成とは、内部ブロックおよびそれらの相互接続の機能上の動作を規定するために、設計に固有のデータを、これらの値を構成メモリ内に記憶することによってロードするプロセスである。ＦＰＧＡ２０はさらに、構成メモリ２４内のビットを用いてこの発明のデータ処理システムとして構成され得る、第１の部分２６を含む。データ処理システムは、プロセッサコアと、構成メモリコントローラと、ブロックＲＡＭと、他の補助構成要素とを含む。ＦＰＧＡ２０は、構成メモリ２４内のビットを用いて他のロジックまたはメモリ機能を実行するよう構成され得る、第２の部分２８を任意に含む。ＦＰＧＡの一例は、この発明の譲受人であるザイリンクス・インコーポレイテッドのバーテックス（Ｒ）（Ｖｉｒｔｅｘ）ＦＰＧＡである。このバーテックス（Ｒ）ＦＰＧＡは、この明細書において引用により援用される、ザイリンクスデータブック（「プログラマブルロジックデータブック１９９９（Ｔｈｅ Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ｄａｔａ Ｂｏｏｋ １９９９）」および「プログラマブルロジックデータブック２０００（Ｔｈｅ Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ｄａｔａ Ｂｏｏｋ ２０００）」）の第３章に記載されている。バーテックス（Ｒ）のアーキテクチャの部分は、１９９９年６月２２日に発行された米国特許第５，９１４，６１６号において、ヤング（Ｙｏｕｎｇ）他によって記載される。この特許もまた、この明細書において引用により援用される。この発明において、より高度でより高容量のＦＰＧＡを用いてよいことに注目されたい。
【００１７】
ＦＰＧＡ２０が作動されると、それは、外部メモリ１２から構成ビットを受取る。それに従い、構成メモリ２４内のビットがセットされる。ユーザは、外部メモリ１２内のデータを変更することによって、ＦＰＧＡ２０の構成を変更することができる。以下に説明するように、この発明を用いて、ＦＰＧＡ２０内のデータ処理システムの設計を最適化することができる。
【００１８】
第１の部分２６の一例が、図１Ｂに示される。それは、複数のローカルブロックＲＡＭ（ブロックＲＡＭ４４〜４７等）および複数のグローバルブロックＲＡＭ（ブロックＲＡＭ５２〜５７等）に接続された、プロセッサコアおよびメモリコントローラ４２を含む。グローバルブロックＲＡＭ５２〜５７は一般に、コアおよびコントローラ４２から遠く離れて位置付けられ、コアおよびコントローラ４２に対し、長くかつ時間のかかるＦＰＧＡ接続線を介して接続され得る。その結果、遅延が相対的に長くなる。その一方で、ローカルブロックＲＡＭ４４〜４７は一般に、コアおよびコントローラ４２に近接して位置付けられる。これらのブロックＲＡＭは、接続６２ａ〜６２ｄを介して、コアおよびコントローラ４２に直接に（すなわち、従来のＦＰＧＡ構造を用いずに）接続され得る。その結果、遅延が相対的に短くなる。代替的に、ローカルブロックＲＡＭ４４〜４７は、正規のＦＰＧＡ接続線（線６４ａおよび６４ｂ等）に接続されてもよい。この発明の一局面は、この新規のアーキテクチャを考慮する。図１Ｂでの、コアおよびコントローラ４２に対するさまざまなブロックＲＡＭの位置上の配向が、例示の目的でのみ示されていることに注目されたい。他の配向を用いることもできる。
【００１９】
グローバルブロックＲＡＭのデータバス幅およびアドレス深さは、ユーザによる選択が可能である。一実施例において、ローカルブロックＲＡＭのデータバス幅およびアドレス深さは、予め定められている。しかしながら、ローカルブロックＲＡＭに対するこれらのパラメータもまた、ユーザによる選択が可能であり得る。
【００２０】
図２は、図１Ｂの構造に対応する、この発明のデータ処理システム１００を示す概略図である。システム１００は、プロセッサコア１０２と、構成メモリコントローラ１０４と、メモリコントローラ１０４によって制御されるブロックＲＡＭ（ローカルＢＲＡＭ１０６およびグローバルＢＲＡＭ１０８等）とを含む。コントローラ１０４は、（ａ）プロセッサコア１０２、ＢＲＡＭ１０６、およびＢＲＡＭ１０８のインターフェイスとなる制御ブロック１１２と、（ｂ）ユーザの要件に従って、制御ブロック１１２に待機状態を生じさせる待機状態マネージャ１１４と、（ｃ）ユーザの要件に従って、ブロックＲＡＭのアドレス深さを設定するアドレスマネージャ１１６とを含む。
【００２１】
待機状態マネージャ１１４は、プロセッサコア１０２内のレジスタセット１２４から（Ｓ１と示されたバスを介して）、およびＦＰＧＡ内のメモリ１２２から、入力を受取る。メモリ１２２およびレジスタセット１２４内のデータは、以下により詳細に説明するように、ユーザの要件によって決定される。メモリ１２２が、メモリ１２２内に記憶されなければならないデータのサイズおよび数に依存して、１つ以上のメモリセルを含み得ることに注目されたい。同様に、レジスタセット１２４は、１つ以上のデータ片を記憶することができる。これは、ローカルおよびグローバルなブロックＲＡＭが、異なる待機状態を必要とし得るためである。待機状態マネージャ１１４は制御ブロック１１２に接続され、ブロック１１２に対し、レジスタセット１２４またはメモリ１２２内のデータに対応する待機状態を生じさせる。待機状態マネージャ１１４および制御ブロック１１２の詳細な構造は、以下に説明する。待機状態の数がデータ処理システム１００の性能に影響を及ぼすため、これは、メモリコントローラ１０４の設計において考慮されるべき要素である。
【００２２】
アドレスマネージャ１１６は、ＦＰＧＡのメモリ１２６から、およびプロセッサコア１０２内のレジスタ１２８から（Ｓ２と示されたバスを介して）、入力を受取る。メモリ１２６およびレジスタ１２８内のデータは、以下により詳細に説明するように、ユーザの要件によって決定される。メモリシステム内のアドレス線の最大数に依存して、メモリ１２２が１つ以上のメモリセルを含み得ることに注目されたい。アドレスマネージャ１１６は、制御ブロック１１２からアドレス線を受取り、グローバルブロックＲＡＭをアドレス指定するために、アドレス線（ＡＧｂｒａｍと示される）のすべてまたはいくつかを選択する。この特徴により、ユーザは、プロセッサコア１０２による使用のために、グローバルブロックＲＡＭの最適なサイズおよびアドレス深さを選択することができる。残りのグローバルブロックＲＡＭは、ＦＰＧＡ内の他の目的に用いることができる。アドレスマネージャ１１６は、ローカルブロックＲＡＭに対し、異なるアドレスバス（ＡＬｂｒａｍと示される）も生成する。このアドレスバスにより、ローカルブロックＲＡＭは、最小の遅延でアクセスされ得る。
【００２３】
制御ブロック１１２は、好ましくは、プロセッサコア１０２のメモリ管理ユニット１３２のインターフェイスとなる。メモリ管理ユニット１３２は、データのロードおよび命令フェッチの動作に対する読出アドレスを送信する。それはまた、メモリ内に書込まれるべきデータに対する書込アドレスも送信する。メモリ管理ユニット１３２はまた、適切な制御信号を制御ブロック１１２に生成し、それを制御ブロック１１２から受取る。たとえば、ブロック１１２は、メモリ管理ユニット１３２から、書込データバスＤｗ、制御シグナルバスＣｒｅｑ、およびアドレスバスＡｃｐｕを受取る。それは、プロセッサコア１０２のメモリ管理ユニット１３２に、読出データバスＤｒおよび制御信号バスＣａｃｋを送る。制御ブロック１１２はまた、書込データバスＤｗｏｃｍにデータを伝達し、ブロックＲＡＭ１０６および１０８の制御信号バスＣｂｒａｍに制御信号を伝達する。制御ブロック１１２は、ブロックＲＡＭ１０６および１０８から、読出データバスＤｒｏｃｍを受取る。
【００２４】
図２は、１つの書込データバスがローカルおよびグローバルの両方のブロックＲＡＭに接続されていることを示すが、ローカルおよびグローバルなブロックＲＡＭに対して異なる書込データバスを設計できることに注目されたい。同様に、図２は、１つの読出データバスがローカルおよびグローバルの両方のブロックＲＡＭに接続されていることを示すが、ローカルおよびグローバルなブロックＲＡＭに対し、異なる読出データバスを設計することができる。
【００２５】
ユーザによる構成可能なメモリコントローラ１０４のさらなる詳細が、図３Ａおよび図３Ｂに示される。図３Ａは、待機状態マネージャ１１４と制御ブロック１１２とに論理的に分割されており、図３Ｂは、アドレスマネージャ１１６を示す。これらの分割は、図２の対応する分割と同様である。待機状態マネージャ１１４は、マルチプレクサ１５２と待機状態レジスタセット１５４とを含む。この発明において、ローカルブロックＲＡＭおよびグローバルブロックＲＡＭは、異なる待機状態を有し得る。したがって、待機状態レジスタセット１５４は、２つ以上のレジスタを含み得る。待機状態レジスタセット１５４は、メモリアクセスの際の待機状態の数を示す１つ以上の値を記憶するために用いられる。この情報は、制御ブロック１１２内のステートマシン１６０に与えられ、ステートマシン１６０は、それに従って待機状態を生じる。マルチプレクサ１５２は、２つの入力のうちの１つを選択して（すなわち、レジスタセット１２４またはメモリ１２２のいずれかから）待機状態レジスタセット１５４に結合する、選択信号１５６を受取る。レジスタセット１２４およびメモリ１２２内のデータがユーザによって決定されるために、待機状態の数は、ユーザによる構成が可能である。信号１５６は、ＦＰＧＡ構成ロジックによって制御される。一実施例において、メモリ１２２からのデータは、ＦＰＧＡの作動中に、待機状態レジスタセット１５４内にロードされる。ＦＰＧＡが構成された後に、信号１５６は、待機状態レジスタセット１５４の制御を、レジスタセット１２４に譲渡することができる。このようにして、ユーザは、待機状態レジスタセット１５４に以前にロードされた情報を上書きする必要がある場合に、それを行なうことができる。
【００２６】
この発明の一局面は、待機状態の数が、ハードウェアまたはソフトウェアのいずれかを介して設定され得ることである。一実施例において、メモリ１２２は、ＦＰＧＡの構成前にロードされるよう設計され、その中のデータは、メモリコントローラ１０４を構成するために用いられる。これは、待機状態を設定するハードウェアの方法である。構成後に、ハードウェアによって待機状態の数を変更することはできない。その反対に、レジスタセット１２４は、プロセッサコア１０２の命令を介してプログラムされ得る。したがって、これは、待機状態を設定するソフトウェアの方法である。レジスタセット１２４の値、従って、待機状態の数は、構成後にいつでも繰返して変更することができる。
【００２７】
制御ブロック１１２は、アドレスセレクタ１６２を含む。それは、アドレスバスＡｃｐｕを（メモリ管理ユニット１３２から）受取り、アドレス線のいくつかを選択して新規のバスＡｃｐｕ＊を形成し、アドレスマネージャ１１６に結合する。バスＡｃｐｕ＊内の線の数は、１と、バスＡｃｐｕ内のアドレス線の数との間の任意の数であり得る。この発明の一実施例において、Ａｃｐｕは３０の線を有し、Ａｃｐｕ＊は１６の線を有する。当業者にとって、アドレスセレクタ１６２の設計は容易なはずである。アドレスセレクタ１６２の設計が予め定められているために、バスＡｃｐｕ＊内の線の数をユーザが構成できないことに注目されたい。さらに、バスＡｃｐｕおよびＡｃｐｕ＊内の線の数が同じである場合、アドレスセレクタ１６２は制御ブロック１１２において省略されてよいことにも注目されたい。以下により詳細に説明するように、アドレス線の数は、アドレスマネージャ１１６によってさらに減じることができる。この削減は、ユーザによる構成が可能である。
【００２８】
制御ブロック１１２は、バスＤｗから受取ったデータを、それをバスＤｗｏｃｍに送る前に一時的に記憶するための、一時メモリ１６４を含み得る。書込動作中に読出動作を処理する必要がない場合は、一時メモリ１６４が必要とされないことが考えられる。制御ブロック１１２はまた、バスＤｒｏｃｍを介してブロックＲＡＭから受取ったデータを、それをバスＤｒに送る前に一時的に記憶するための、一時メモリ１６６も含み得る。ブロックＲＡＭ制御ブロック１６８は、制御信号バスＣｂｒａｍにて信号を生成するために用いられる。一例として、それは、ブロックＲＡＭの読出／書込を可能にするロジックを含み得る。ブロックＲＡＭ制御ブロック１６８の設計は、用いられるブロックＲＡＭの仕様に依存しており、当業者がそれを行なうのは容易なはずである。
【００２９】
ステートマシン１６０は、アドレスセレクタ１６２、一時メモリ１６４、一時メモリ１６６、およびブロックＲＡＭ制御ブロック１６８のさまざまな信号および動作を同期させるために用いられる。一例として、それは、制御信号バスＣｒｅｑ（読出、書込、または打切りの動作を要求する）を受取り、データの送信状況（読出および書込の応答、または打切り）に関して制御信号バスＣａｃｋを生成する。ステートマシン１６０の設計は、プロセッサコア１０２およびブロックＲＡＭの仕様とともに、待機状態レジスタセット１５４内の値に依存する。当業者が、これらの情報を用いてステートマシン１６０を設計することは、容易なはずである。
【００３０】
アドレスマネージャ１１６は、バスＡｃｐｕ＊を受取り、ローカルブロックＲＡＭアドレスバスＡＬｂｒａｍとグローバルブロックＲＡＭアドレスバスＡＧｂｒａｍとを生成する。一実施例において、ローカルブロックＲＡＭアドレスバスＡＬｂｒａｍ内のアドレス線の数は、予め定められており、好ましくは、バスＡｃｐｕ＊内のアドレス線の数よりも少ない。その反対に、グローバルブロックＲＡＭバスＡＧｂｒａｍ内のアドレス線の数は、メモリ１２６またはレジスタ１２８のいずれかの内のデータによって決定され、バスＡｃｐｕ＊内のアドレス線の数に等しいか、またはそれよりも少ない。
【００３１】
グローバルアドレス線の生成を扱う、アドレスマネージャ１１６の部分１７０を、次に説明する。それは、複数のアドレス線非活性化ユニットを含み、それらの１つが、図３のユニット１７１として示される。各ユニットは、バスＡｃｐｕ＊のアドレス線を非活性化することができる。ユニット１７１は、バスＡｃｐｕ＊のアドレス線を入力として受取るデマルチプレクサ１７２を含む。デマルチプレクサ１７２の２つの出力の一方（出力１８０等）は、グローバルブロックＲＡＭアドレスバスＡＧｂｒａｍの１つのアドレス線である。デマルチプレクサ１７２の他方の出力（出力１７８等）は用いられない。デマルチプレクサ１７２の入力が、出力１８０に接続される場合に、アドレス線が活性化される。その反対に、デマルチプレクサ１７２の入力が、出力１７８に接続される場合に、アドレス線は非活性化される。出力１８０が非活性化されるかどうかは、別のマルチプレクサ１７４によって制御される。マルチプレクサ１７４の１つの入力は、メモリ１２６のビットであり、別の入力は、レジスタ１２８のビットである。選択信号１７６は、メモリ１２６のビットまたはレジスタ１２８のビットのどちらがデマルチプレクサ１７４に結合されるかを選択するために用いられる。その結果、バスＡｃｐｕ＊のアドレス線が非活性化されるかどうかは、メモリ１２６のビットまたはレジスタ１２８のビットのいずれかによって制御される。複数のアドレス線非活性化ユニットを用いることにより、バスＡｃｐｕ＊のアドレス線のいくつかを非活性化することができ、それによって、グローバルブロックＲＡＭアドレスバスＡＧｂｒａｍのアドレス線の数を減じることができる。信号１７６は、ＦＰＧＡ構成ロジックによって制御される。一実施例において、メモリ１２６からのデータは、ＦＰＧＡの作動中に、デマルチプレクサ１７２の選択線内にロードされる。ＦＰＧＡが構成された後に、信号１７６は、レジスタ１２８が非活性化に影響を及ぼすことができるように、制御を譲渡する。デマルチプレクサブロックは、汎用論理表現としてのみ用いられる。同じ結果を得るために、論理ゲートのどのような組合せを用いてもよいことに注目されたい。
【００３２】
上述の内容から分かるように、メモリ１２６またはレジスタ１２８のいずれかのビットを用いて、バスＡＧｂｒａｍ内のアドレス線の数を決定することができる。この発明の一局面は、ブロックＲＡＭアドレスバスのアドレス線の数を、ハードウェアまたはソフトウェアのいずれかを介して設定し得ることである。一実施例において、メモリ１２６は、ＦＰＧＡの構成前にロードされるよう設計され、その中のデータは、アドレスマネージャ１１６を構成するために用いられる。これは、アドレス線の数を設定するハードウェアの方法である。その反対に、プロセッサコア１０２の命令を介してレジスタ１２８をプログラムすることができる。したがって、これは、アドレス線の数を設定するソフトウェアの方法である。
【００３３】
ローカルアドレス線を扱う、アドレスマネージャ１１６の一部１９０を、次に説明する。それは、各アドレス線につき１つの、複数のマルチプレクサ（マルチプレクサ１８６等）を含む。マルチプレクサ１８６の一方の入力は、バスＡｃｐｕ＊の予め定められたアドレス線の１つを受取り、他方の入力は、グローバルブロックＲＡＭアドレスバスＡＧｂｒａｍのアドレス線の１つを受取る。線１８８に制御信号がもたらされ、所望のアドレス線を選択する。マルチプレクサ１８６の出力は、バスＡＬｂｒａｍのアドレス線の１つである。この構成により、ローカルブロックＲＡＭは、直接接続によって（たとえば接続６２ａ〜６２ｄを介して）、または正規のＦＰＧＡ接続線によって（たとえば線６４ａ〜６５ｄを介して）、アクセス可能となる。
【００３４】
制御ブロック１１２は、クロック信号（Ｃｌｏｃｋ）を受取る。この信号は、待機状態レジスタセット１５４、ステートマシン１６０、およびアドレスセレクタ１６２のタイミングを同期させるために用いられる。
【００３５】
ＦＰＧＡのユーザが、この発明のデータ処理システムをより効率的に設計し得るように、グローバルブロックＲＡＭに関する設計考慮事項のいくつかを自動化することのできるアルゴリズムを開示する。図４は、このようなアルゴリズムのフロー図２００を示す。ステップ２０２において、ユーザは、ユーザ自身の設計基準に基づいたデータ処理システムによって使用されるグローバルブロックＲＡＭの量を決定する（以下の数式では符号「Ｓ」で示す）。ユーザはまた、プロセッサコアのデータバス幅（「Ｄｕ」）およびＦＰＧＡ内のグローバルブロックＲＡＭの最大サイズ（「Ｋ」）も入力する。パラメータＤｕはプロセッサコアの設計に依存し、パラメータＫはＦＰＧＡのアーキテクチャに依存する。これらは、フロー図２００への入力として働く。ステップ２０４では、要件を満たすのに必要とされるグローバルブロックＲＡＭの最小数（「Ｎ」）が、以下の数式を用いて求められる。
【００３６】
Ｎ＝Ｓ／Ｋ
ステップ２０６において、グローバルブロックＲＡＭのアドレス深さ（「ＡＤｏ」）およびデータバス幅（「Ｄｏ」）が計算される。これは、グローバルブロックＲＡＭの最適アスペクト比をもたらす。アドレス深さは、以下の数式によって求められる。
【００３７】
ＡＤｏ＝Ｓ／Ｎ
また、グローバルブロックＲＡＭに対するデータバス幅は、以下の数式によって求められる。
【００３８】
Ｄｏ＝Ｄｕ／Ｎ
予め定められたアスペクト比を得るために、ブロックＲＡＭを構成するための方法は、上述の米国特許第５，９３３，０２３号に開示される。
【００３９】
上の等式を説明するため、次に一例を挙げる。プロセッサコアのデータバス幅（Ｄｕ）が３２ビットであり、必要とされるオンチップメモリのサイズ（Ｓ）が８キロバイトであり、ブロックＲＡＭの最大サイズ（Ｋ）が１６キロビットであると仮定されたい。これらの数を上述の数式に当てはめると、以下の結果が得られる。
【００４０】
Ｎ＝Ｓ／Ｋ＝４、
Ｄｏ＝Ｄｕ／Ｎ＝８、および
ＡＤｏ＝Ｓ／Ｎ＝２キロバイト。
【００４１】
グローバルブロックＲＡＭアドレスバスＡＧｂｒａｍ内のアドレス線の数は、ｌｏｇ２（ＡＤｏ）＝１１と求められる。アスペクト比は、２Ｋ×８である。オンチップメモリの総数は、４×（２Ｋ×８）＝８キロバイトであると確認することができ、これは所望の値である。
【００４２】
上述の計算が完了すると、この発明のメモリシステムの性能に影響を及ぼし得るパラメータの値は、適切なタイミングの測定または適切なデータブックに一覧された仕様からの計算のいずれかによって決定され得る（ステップ２０８）。この発明の一実施例において、性能は以下のものによって影響を受ける。
【００４３】
プロセッサコアのクロック期間（「ＣＰＵｃｌｋ」）、
メモリコントローラ１０４からＦＰＧＡ内の最も遠く離れたブロックＲＡＭへのアドレスルーティング遅延（「Ｔｒａ」）、
ブロックＲＡＭに必要とされるアドレスセットアップ時間（「Ｔｓａ」）、
ブロックＲＡＭアクセス時間（「Ｂａｃｃ」）、
ＦＰＧＡ内の最も遠く離れたブロックＲＡＭから再びプロセッサコアに至るデータルーティング遅延（「Ｔｒｄ」）、
プロセッサコアに必要とされるデータセットアップ時間（「Ｔｓｄ」）、および
アドレスをプロセッサコアからラッチするための、メモリコントローラ１０４を介したアドレス遅延（「Ｔｄ」）。
【００４４】
これらのパラメータを用いて、グローバルブロックＲＡＭおよびメモリコントローラの構成のこの選択に対して必要とされる待機状態の数を決定することができる（ステップ２１２）。待機状態の数（Ｗ）は以下によって求められる。
【００４５】
Ｗ＝Ｒ［（Ｔｒａ＋Ｔｓａ＋Ｂａｃｃ＋Ｔｒｄ＋Ｔｓｄ＋Ｔｄ）／ＣＰＵｃｌｋ］
式中、Ｒは、丸め演算を表わす。演算Ｒは、Ｗが整数値となって性能の要件を満たすように、小数の結果を、次に高位の整数に渡す。
【００４６】
ステップ２１４では、性能がユーザの要件を満たしているかどうかをユーザ自身が確認することによって、性能が評価される。答が否であれば、プロセッサコアのために働くように用いられるグローバルブロックＲＡＭの数を減じなければならない（ステップ２１６）。なぜなら、プロセッサコアと最も遠く離れたグローバルブロックＲＡＭとの間の遅延が、ブロックＲＡＭの数とともに増大するためである。次に、フロー図２００は、分岐をステップ２０２に戻して、新規の組の設計値の性能を再評価する。ステップ２１４の答が是であれば、その結果は容認され、アルゴリズムは終了する。
【００４７】
上述の計算を説明するために、一例を示す。以下のように仮定されたい。
ＣＰＵｃｌｋ＝５ｎｓ（すなわち２００ＭＨｚ）、
Ｔｒａ＝１ｎｓ、
Ｔｓａ＝０．５ｎｓ、
Ｂａｃｃ＝２．５ｎｓ、
Ｔｒｄ＝３ｎｓ、
Ｔｓｄ＝２．５ｎｓ、および
Ｔｄ＝２．５ｎｓ。
【００４８】
これらの数を用いると、
Ｗ＝Ｒ［１２ｎｓ／５ｎｓ］＝Ｒ［２．４］
＝３待機状態。
【００４９】
上で示したように、待機状態は、ローカルブロックＲＡＭにアクセスするためにも挿入されなければならないことが考えられる。待機状態の数は、Ｗに対する上述の数式を用いて計算することができる。ローカルブロックＲＡＭに対する一般値を用いると、待機状態の数は、一般に、グローバルブロックＲＡＭのものよりもはるかに少ない。
【００５０】
設計が完了した後に、この結果を用いてＦＰＧＡを構成する。図５は、この発明のデータ処理システムを設定する際に用いられるステップのフロー図２３０を示す。ステップ２３２では、アルゴリズム２００の結果が他の情報（図１Ａのプロセッサコアおよび部分２８の構造等）と統合されて、ＦＰＧＡに対する構成ビットを生成する。構成ビットは、外部メモリに保存される。ＦＰＧＡが作動されると、外部メモリ内の構成ビットは、ＦＰＧＡ内にロードされる（ステップ２３４）。ステップ２３６では、ＦＰＧＡビットストリームを用いて、メモリ１２６（ブロックＲＡＭのアドレス線の数に影響を及ぼす）を構成する。ステップ２３８では、ＦＰＧＡビットストリームを用いて、メモリ１２２（待機状態の数に影響を及ぼす）を構成する。ステップ２４０では、ビットストリームを用いて、ＦＰＧＡの他の部分を構成する。次に、フロー図２３０が終了する。ステップ２３６、２３８、および２４０の順序を、この発明に影響を及ぼすことなく変更し得ることに注目されたい。
【００５１】
ＦＰＧＡのメモリコントローラ１０４を構成するためにプロセッサコアを用いる方法を、次に、図６のフロー図２５０を用いて説明する。ステップ２５２において、ユーザは、プロセッサコアを用いて待機状態の数を設定することが望ましいかどうかを決定する。答が否であれば、ステップ２５８（以下に示す）が実行される。答が是であれば、待機状態マネージャ１１４内のマルチプレクサ１５２が、プロセッサコア１０２のレジスタセット１２４を待機状態レジスタセット１５４に結合するよう設定される（ステップ２５４）。ステップ２５６では、プロセッサコア１０２のプログラミング命令を用いて、適切な値がレジスタセット１２４内に書込まれる。フロー図２５０は次に、分岐をステップ２５８に進める。
【００５２】
ステップ２５８において、ユーザは、プロセッサコアを用いてアドレスマネージャ１１６の状態を設定することが望ましいかどうかを決定する。答が否であれば、フロー図２５０は終了する。答が是であれば、アドレスマネージャ１１６内のマルチプレクサ１７４は、プロセッサコア１０２のレジスタ１２８をマルチプレクサ１７２に結合するよう設定される（ステップ２６０）。ステップ２６２では、プロセッサコア１０２のプログラミング命令を用いて、適切な値がレジスタ１２８内に書込まれる。次に、フロー図２５０は終了する。
【００５３】
この発明の別の実施例において、ブロックＲＡＭをデュアルポートメモリとして構成することができる。この場合、ブロックＲＡＭの内容は、プロセッサコア１０２およびＦＰＧＡの他の部分（図１Ａの第２の部分２８等）にとってアクセス可能となり得る。
【００５４】
この発明のメモリシステムを、別個の命令側とデータ側とを有するデータ処理システムに拡張することができる。この発明では、図７のデータ処理システム３００に示されるように、各側に、ユーザによる構成可能な別個のメモリコントローラが用いられる。システム３００は、別個のデータ側３０４と命令側３０６とを有するプロセッサコア３０２を含む。データ側３０４は、メモリ管理ユニット３４４、レジスタセット３２２、およびレジスタ３２４を含む。これらのレジスタは、それぞれ図２のレジスタセット１２４および１２８として、同様の機能を果たす。メモリ管理ユニット３４４はさらに、翻訳ルックアサイドバッファ（「ＴＬＢ」）３４８を含む。命令側３０６は、メモリ管理ユニット３４６、レジスタセット３２６、およびレジスタ３２８を含む。これらのレジスタは、それぞれ図２のレジスタセット１２４およびレジスタ１２８として、同様の機能を果たす。メモリ管理ユニット３４６はさらに、ＴＬＢ３５０を含む。
【００５５】
データ処理システム３００は、データ側メモリコントローラ３０８と、命令側メモリコントローラ３１０とを含む。これらの２つのコントローラの構造は、メモリコントローラ１０４のものと実質的に同じであるが、例外として、データ側メモリコントローラ３０８がベースアドレスレジスタおよびコンパレータ３４０を含み、命令側メモリコントローラ３１０がベースアドレスレジスタおよびコンパレータ３４２を含む。これらの２つのベースアドレスレジスタおよびコンパレータを用いて、エイリアシングを行なう。データ側コントローラ３０８は、２つのメモリ３３２および３３４と関連する。これらの２つのメモリは、図２のメモリ１２２および１２６と同様の機能を果たす。命令側コントローラ３１０は、２つのメモリ３３６および３３８と関連する。これらの２つのメモリは、図２のメモリ１２２および１２６として、同様の機能を果たす。
【００５６】
データ処理システム３００は、データ側コントローラ３０８に接続されたローカルブロックＲＡＭ３５６と、命令側コントローラ３１０に接続されたローカルブロックＲＡＭ３５８とを含む。ブロックＲＡＭ３５６および３５８と関連する待機状態は、実質的に同じである。データ処理システム３００はまた、グローバルブロックＲＡＭのバンク３６０を含む。その部分３６２はデータ用に用いられ、別の部分３６４は命令用に用いられ、残る部分３６６は、他の目的で用いられてよい。部分３６２、３６４、および３６６は、異なるアドレス深さおよびメモリサイズを有し得る。
【００５７】
フロー図２００を用いて、データ側メモリコントローラ３０８と、命令側メモリコントローラ３１０との性能を計算することができる。データ側および命令側の待機状態が異なり得るのは、それらの対応するメモリコントローラの各々が、それ自体の待機状態レジスタセットを含むためであることに注目されたい。
【００５８】
この発明の一実施例において、ブロックＲＡＭの部分３６２および３６４は、物理的に同じであり得る（すなわち、それらのベースアドレスが同じである）。このために、プロセッサコア３０２が、命令およびデータの参照を、それぞれ命令メモリコントローラ３１０およびデータメモリコントローラ３０８に分離する場合に、混乱を生じない。この設計は、データおよび命令のメモリブロックに対して別個の保護をもたらすことができないという欠点を有する。たとえば、データメモリ３６２は読出可能および書込可能でなければならないため、命令メモリ３６４のアドレス範囲は書込可能であるようにマッピングされる。これは、一般に望ましくない。なぜなら、命令アドレスのスペースへの書込が、検出され得ないからである。
【００５９】
この問題を解決する１つの方法は、部分的に重複するアドレスを、エイリアシングを用いて、それらがまるで異なるアドレスにあるかのように扱うことである。たとえばベースアドレスが、ともに８′ｈ００に設定されていると、命令メモリがアドレス３２′ｈ００８０００００にあるものとして扱われ得、データメモリがアドレス３２ｈ′００００００００にあるものとして扱われ得る。ベースアドレスレジスタおよびコンパレータ３５２および３５４を用いて、このようなエイリアシングを実行する。これらの２つの構成要素をロードするためのメカニズムは、上述の、待機状態レジスタをロードするためのものと同一である。命令およびデータのメモリコントローラが依然として同じアドレス領域内にあるものの、以前の方法とは対照的に、これにより、命令およびデータのメモリコントローラは、それらに別個の保護をもたらすＴＬＢマッピングを用いることができる。ＴＬＢ保護は、エイリアシングされたあらゆる参照が確実に検出されることを可能にする。たとえば、命令メモリコントローラを実行専用としてマッピングし、データメモリコントローラを非実行としてマッピングすることにとより、不本意な命令参照を防ぐことができる。別個のＴＬＢが各命令およびデータに対して存在する場合、アドレスの分離が必要とされないことに注目することが重要である。
【００６０】
上に述べたことから、新規のオンチップメモリシステムおよびそれを実現するための方法が開示されたことが分かる。この発明の関連技術の当業者は、この明細書における開示の結果として生じ得るさまざまな変更例および追加例を認識するであろう。したがって、このような変更例および追加例のすべては、この発明の範囲内にあると考えられ、この発明は、前掲の請求項およびそれらの等価物によってのみ限定されるべきである。
【図面の簡単な説明】
【図１Ａ】この発明の、ＦＰＧＡシステムを示すブロック図である。
【図１Ｂ】図１ＡのＦＰＧＡシステムの一部のブロック図である。
【図２】ＦＰＧＡ上で実現される、この発明のデータ処理システムを示す概略図である。
【図３Ａ】この発明の、ユーザによる構成可能なオンチップメモリコントローラのブロック図である。
【図３Ｂ】この発明の、ユーザによる構成可能なオンチップメモリコントローラのブロック図である。
【図４】この発明のオンチップメモリコントローラのブロックＲＡＭのサイズおよび関連する待機状態を選択するための、この発明のアルゴリズムのフロー図である。
【図５】この発明のデータ処理システムを構築するために、図４のフローチャートの結果を用いることを示すフロー図である。
【図６】この発明のメモリコントローラを構成するために、プロセッサコアを用いることを示すフロー図である。
【図７】別個の命令側とデータ側とを有する、この発明のデータ処理システムの概略図である。
【図１Ａ】
2004529403.tif 000003
【図１Ｂ】
2004529403.tif 000004
【図２】
2004529403.tif 000005
【図３Ａ】
2004529403.tif 000006
【図３Ｂ】
2004529403.tif 000007
【図４】
2004529403.tif 000008
【図５】
2004529403.tif 000009
【図６】
2004529403.tif 000010
【図７】
2004529403.tif 000011
【国際公開パンフレット】
2004529403.tif 000012
2004529403.tif 000013
2004529403.tif 000014
2004529403.tif 000015
2004529403.tif 000016
2004529403.tif 000017
2004529403.tif 000018
2004529403.tif 000019
2004529403.tif 000020
2004529403.tif 000021
2004529403.tif 000022
2004529403.tif 000023
2004529403.tif 000024
2004529403.tif 000025
2004529403.tif 000026
2004529403.tif 000027
2004529403.tif 000028
2004529403.tif 000029
2004529403.tif 000030
2004529403.tif 000031
2004529403.tif 000032
2004529403.tif 000033
2004529403.tif 000034
2004529403.tif 000035
2004529403.tif 000036
2004529403.tif 000037
2004529403.tif 000038
2004529403.tif 000039
2004529403.tif 000040
2004529403.tif 000041
2004529403.tif 000042
2004529403.tif 000043
2004529403.tif 000044
【国際公開パンフレット（コレクトバージョン）】
2004529403.tif 000045
【国際調査報告】
2004529403.tif 000046
2004529403.tif 000047