(57)【要約】【課題】各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型のメモリデバイスとの間で転送を制御するためのメモリコントローラおよびメモリ制御方法を提供する。【解決手段】メモリコントローラはメモリコントローラをメモリデバイスにつなぐように動作するメモリデバイス・インタフェース、メモリコントローラによって転送をしようとするメモリデバイスに適したタイミング情報を記憶するようにプログラム可能な複数のプログラマブル・タイミングレジスタ、および各転送の前に、その転送に対して実行すべき明確なフェーズの実際のシーケンスと、その転送に関する１または複数の制御値を定義するようにプログラム可能な複数のプログラマブル制御レジスタを含む。【選択図】　　　図３
2004110785.tif 000002
【特許請求の範囲】
【請求項１】
各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型のメモリデバイスとの間で転送を制御するためのメモリコントローラであって：
前記メモリコントローラを前記メモリデバイスとつなぐように動作するメモリデバイス・インタフェース；
前記メモリコントローラによって転送を制御しようとするメモリデバイスについての適切なタイミング情報を記憶するようにプログラム可能な複数のプログラマブル・タイミングレジスタ；
各転送の前に、その転送に関して実行すべき明確なフェーズの実際のシーケンスと、その転送に関する１または複数の制御値を定義するようにプログラム可能な複数のプログラマブル制御レジスタ；および
前記複数のプログラマブル・タイミングレジスタおよび前記複数のプログラマブル制御レジスタの内容に依存して各転送を生成し、また各転送をメモリデバイス・インタフェースを介して出力するように動作するシーケンス発生器；
を含むメモリコントローラ。
【請求項２】
請求項１に記載のメモリコントローラであって、前記メモリデバイスが各転送の前記明確なフェーズを、前記メモリデバイス・インタフェースにつながれた共通バス上で受信するように構成されているメモリコントローラ。
【請求項３】
請求項１に記載のメモリコントローラであって、前記メモリデバイスがＮＡＮＤフラッシュメモリデバイスであるメモリコントローラ。
【請求項４】
請求項１に記載のメモリコントローラであって、第１の明確なフェーズがコマンドフェーズであって、その間にその転送のタイプを指定する情報が前記メモリデバイスに提供されるメモリコントローラ。
【請求項５】
請求項４に記載のメモリコントローラであって、前記複数のプログラマブル制御レジスタ中にプログラム可能な前記１または複数の制御値が、前記転送のコマンドフェーズに付随する１または複数のコマンド値を含んでいるメモリコントローラ。
【請求項６】
請求項１に記載のメモリコントローラであって、第２の明確なフェーズがオプションのアドレスフェーズであって、その間にその転送に付随するアドレスが提供されるメモリコントローラ。
【請求項７】
請求項６に記載のメモリコントローラであって、前記複数のプログラマブル制御レジスタ中にプログラム可能な前記１または複数の制御値が、その転送に付随するすべてのアドレスを含んでいるメモリコントローラ。
【請求項８】
請求項１に記載のメモリコントローラであって、第３の明確なフェーズがオプションのデータフェーズであって、その間にデータ値が前記メモリデバイスに書き込まれるか、あるいはそこから読み出されるメモリコントローラ。
【請求項９】
請求項１に記載のメモリコントローラであって、更に、前記複数のプログラマブル・タイミングレジスタおよび前記複数のプログラマブル制御レジスタをプログラムするために用いられる制御信号がその上を通って供給されるシステムバスと前記メモリコントローラとをつなぐように動作するシステムバス・インタフェースを含むメモリコントローラ。
【請求項１０】
請求項９に記載のメモリコントローラであって、プロセッサが前記システムバスにつながれ、前記制御信号を生成するためのソフトウエアを実行するように動作するメモリコントローラ。
【請求項１１】
請求項１に記載のメモリコントローラであって、前記シーケンス発生器が、各転送に関して明確なフェーズの対応シーケンスを発生させるように動作する状態機械を含んでいるメモリコントローラ。
【請求項１２】
請求項１に記載のメモリコントローラであって、前記メモリコントローラが、各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する前記型のメモリデバイスの複数のものとの間で転送を制御するように動作するメモリコントローラ。
【請求項１３】
請求項２に記載のメモリコントローラであって、前記メモリコントローラが更に、異なる型の別のメモリデバイスを制御するように動作する制御ロジックを含んでおり、前記別のメモリデバイスがアドレスバスおよび分離したデータバスを介して前記メモリコントローラと交信するように構成されており、また前記共通バスが前記データバスで構成されているメモリコントローラ。
【請求項１４】
請求項１３に記載のメモリコントローラであって、前記別のメモリデバイスとの間の転送が前記メモリデバイスとの間の転送よりも高速であり、また前記共通バスが不活動である前記メモリデバイスとの間の転送中に、前記別のメモリデバイスを制御するための前記制御ロジックが前記データバスを使用して前記別のメモリデバイスとの間で転送を実行することを許容されているメモリコントローラ。
【請求項１５】
各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型のメモリデバイスとの間で転送を制御する方法であって：
複数のプログラマブル・タイミングレジスタをプログラムして、転送を制御しようとする前記メモリデバイスについての適切なタイミング情報を記憶させる工程；
各転送の前に、複数のプログラマブル制御レジスタをプログラムして、その転送に関して実行すべき明確なフェーズの実際のシーケンスと、その転送に関する１または複数の制御値を定義する工程；および
前記複数のプログラマブル・タイミングレジスタおよび前記複数のプログラマブル制御レジスタの内容に依存して各転送を生成する工程；
を含む方法。
【請求項１６】
請求項１５に記載の方法であって、前記メモリデバイスが各転送の前記明確なフェーズを共通バス上で受信するように構成されている方法。
【請求項１７】
請求項１５に記載の方法であって、前記メモリデバイスがＮＡＮＤフラッシュメモリデバイスである方法。
【請求項１８】
請求項１５に記載の方法であって、第１の明確なフェーズがコマンドフェーズであって、その間にその転送のタイプを指定する情報が前記メモリデバイスに提供される方法。
【請求項１９】
請求項１８に記載の方法であって、前記複数のプログラマブル制御レジスタ中にプログラム可能な前記１または複数の制御値が、前記転送のコマンドフェーズに付随する１または複数のコマンド値を含んでいる方法。
【請求項２０】
請求項１５に記載の方法であって、第２の明確なフェーズがオプションのアドレスフェーズであって、その間にその転送に付随するアドレスが提供される方法。
【請求項２１】
請求項２０に記載の方法であって、前記複数のプログラマブル制御レジスタ中にプログラム可能な前記１または複数の制御値が、その転送に付随するすべてのアドレスを含んでいる方法。
【請求項２２】
請求項１５に記載の方法であって、第３の明確なフェーズがオプションのデータフェーズであって、その間にデータ値が前記メモリデバイスに書き込まれるか、あるいはそこから読み出される方法。
【請求項２３】
請求項１５に記載の方法であって、更に、
前記複数のプログラマブル・タイミングレジスタおよび前記複数のプログラマブル制御レジスタをプログラムするために使用される制御信号をシステムバス上に供給する工程
を含む方法。
【請求項２４】
請求項２３に記載の方法であって、プロセッサが前記システムバスにつながれ、前記制御信号を生成するためのソフトウエアを実行するように動作する方法。
【請求項２５】
請求項１５に記載の方法であって、各転送を生成する前記工程が、各転送に関して明確なフェーズの対応シーケンスを発生させる状態機械を採用する工程を含んでいる方法。
【請求項２６】
請求項１５に記載の方法であって、更に、各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する前記型のメモリデバイスの複数のものとの間で転送を制御する工程を含む方法。
【請求項２７】
請求項１６に記載の方法であって、更に、異なる型の別のメモリデバイスを制御する工程を含み、前記別のメモリデバイスとの交信がアドレスバスおよび分離したデータバスを介して発生し、また前記共通バスが前記データバスで構成されている方法。
【請求項２８】
請求項２７に記載の方法であって、前記別のメモリデバイスとの間の転送が前記メモリデバイスとの間の転送よりも高速であり、また前記共通バスが不活動である前記メモリデバイスとの間の転送中に、前記方法が更に、前記別のメモリデバイスとの間で転送を実行するために前記データバスを使用することを許容する工程を含んでいる方法。
【請求項２９】
ＮＡＮＤフラッシュメモリデバイスとの間で転送を制御するためのメモリコントローラであって、各転送が明確なフェーズのシーケンスを含んでおり、前記メモリコントローラが：
前記メモリコントローラを前記ＮＡＮＤフラッシュメモリデバイスとつながるように動作するメモリデバイス・インタフェース；
前記メモリコントローラによって転送を制御しようとするＮＡＮＤフラッシュメモリデバイスについての適切なタイミング情報を記憶するようにプログラム可能な複数のプログラマブル・タイミングレジスタ；
各転送の前に、その転送に関して実行すべき明確なフェーズの実際のシーケンスと、その転送に関する１または複数の制御値を定義するようにプログラム可能な複数のプログラマブル制御レジスタ；および
前記複数のプログラマブル・タイミングレジスタおよび前記複数のプログラマブル制御レジスタの内容に依存して各転送を生成し、また各転送をメモリデバイス・インタフェースを介して出力するように動作するシーケンス発生器；
を含むメモリコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリコントローラとメモリ制御方法とに関するものであって、更に詳細には転送が明確なフェーズ（Ｄｉｓｔｉｎｃｔ　Ｐｈａｓｅ）を含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型のメモリデバイスとの間での転送を制御するためのメモリコントローラとメモリ制御方法とに関する。
【０００２】
【従来の技術】
スタティック・ランダムアクセスメモリ（ＳＲＡＭ）や同期式ダイナミック・ランダムアクセスメモリ（ＳＤＲＡＭ）デバイスのような標準的なメモリデバイスとの間で転送を制御するためのメモリコントローラについては知られている。そのようなメモリデバイスは別々になったアドレスおよびデータ用のバスを使用し、また各種の転送タイプはほぼ固定されたフォーマットを有している。例えば、読出し転送はアドレスバス上へアドレスを発行し、それに続いて１または複数のデータ値をデータバス上へ発行するのが普通であり、他方、書込み転送はアドレスバス上へアドレスを発行し、メモリデバイスが出力した１または複数のデータ値をデータバス上で受信するのが普通である。その転送が読出しであるか書込みであるかを示すために１または複数の制御信号がメモリデバイスに発行されるのが普通である。
【０００３】
しかし、転送が明確なフェーズを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型のメモリデバイスの進歩とともに、各々の転送シーケンスを構築する仕事が非常に複雑化して、そのようなメモリデバイスとの間で、転送を発生および制御するための効率的なメモリコントローラを提供することには問題がある。そのようなメモリデバイスの例はＮＡＮＤフラッシュメモリデバイスであり、そのようなメモリデバイスはアドレスとデータとを組み合せたバスを使用している。ＮＡＮＤフラッシュメモリデバイスに関連する各転送はコマンドフェーズを必要とし、その中では実行すべき転送のタイプを定義するためのコマンド値がＮＡＮＤフラッシュメモリデバイスへ送られ、それに続いて複数の明確なフェーズ、例えば１または複数のアドレスフェーズおよび１または複数のデータフェーズがオプションとして送られる。明確なフェーズの実際のシーケンスが転送のタイプに依存することに加えて、ＮＡＮＤフラッシュメモリデバイス分野では、特別な転送のタイプに関する明確なフェーズの実際のシーケンスが、使用される実際のＮＡＮＤフラッシュメモリデバイスに依存して変化するのが普通である。
【０００４】
ＮＡＮＤフラッシュメモリデバイスにアクセスするための１つの提案されたやり方は、アドバンスト・マイクロ・デバイス（ＡＭＤ（Ｒ））社のウエブサイトから入手できる、発行番号第２２３６３号の”ＵｌｔｒａＮＡＮＤ（Ｒ）フラッシュ用の簡単なシステム・インタフェース（Ｓｉｍｐｌｅ　Ｓｙｓｔｅｍ　Ｉｎｔｅｒｆａｃｅ　ｆｏｒ　ＵｌｔｒａＮＡＮＤ　Ｆｌａｓｈ）”と題するアプリケーションノートに説明されている。これはＳＲＡＭインタフェースの使用について説明しており、それに対して標準的なＳＲＡＭインタフェースを用いて制御されるプログラマブル・ロジック・デバイス（ＰＬＤ）の形の何らかの簡単な外部グルー（Ｇｌｕｅ）ロジックが加えられている。しかし、そのようなやり方では各転送タイプについて必要とされるシーケンスを発生させるために必要なソフトウエアはタイミングを正確に取る必要から複雑なものとなろう。更に、ＮＡＮＤフラッシュ転送シーケンスを発生させるために複数のメモリアクセスを実行しなければならなくなり、それに伴ってシステムプロセッサをＳＲＡＭインタフェースとつなぐシステムバスの拡張利用が必要となろう。
【０００５】
上述のＡＭＤ（Ｒ）の資料に提案されたハードウエアを必要最小限に利用するやり方に対する代替方法として、ソフトウエアを最小限に利用する完全にハードウエアで実現するやり方が可能であることが理解されよう。しかし、ＮＡＮＤフラッシュメモリデバイス間の転送シーケンスは多様であるため、現状で利用可能なデバイスすべてをサポートするためには転送およびコマンドの多くの組合せをハードウエアに組み込むことが必要となり、それに従ってインタフェースのゲート数は膨大なものとなる。更に、転送シーケンスまたはコマンド値がわずかに異なる将来のデバイスをサポートするためにハードウエアにコスト高な更新が必要となる。このように、そのようなやり方はコストが嵩み、もしもコマンド値や転送シーケンスが異なるデバイスが利用可能になった場合は、将来的に保証されたものではなくなる。
【０００６】
【発明の解決しようとする課題】
従って、転送が明確なフェーズを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型の、例えばＮＡＮＤフラッシュメモリデバイスのようなメモリデバイスとの間で転送を制御するためのもっと効率的なメモリコントローラを提供することが望まれる。
【０００７】
【課題を解決するための手段】
第１の態様から眺めると、本発明は各転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型のメモリデバイスとの間で転送を制御するためのメモリコントローラであって：前記メモリコントローラを前記メモリデバイスとつなぐように動作するメモリデバイス・インタフェース；メモリコントローラによって転送を制御しようとするメモリデバイスのために適したタイミング情報を記憶するようにプログラム可能な複数のプログラマブル・タイミングレジスタ；各転送の前に、その転送のために実行すべき明確なフェーズの実際のシーケンスおよびその転送のための１または複数の制御値を定義するようにプログラム可能な複数のプログラマブル制御レジスタ；および前記複数のプログラマブル・タイミングレジスタおよび前記複数のプログラマブル制御レジスタの内容に依存して各転送を発生するように動作し、またメモリデバイス・インタフェースを介して各転送を出力するように動作するシーケンス発生器を含むメモリコントローラを提供する。
【０００８】
本発明に従えば、メモリコントローラには複数のプログラマブル・タイミングレジスタ、複数のプログラマブル制御レジスタ、およびそれらのレジスタの内容に依存して各シーケンスを発生するように動作するシーケンス発生器が備えられる。タイミングレジスタは、メモリコントローラによって転送を制御しようとするメモリデバイスに適したタイミング情報を記憶するようにプログラム可能である。従って、このメモリコントローラは、メモリコントローラによって転送を制御しようとするメモリデバイスに依存して、関連するタイミング情報をプログラマブル・タイミングレジスタ中にプログラムできることから、異なるタイミング特性を有するメモリデバイスに使用できる点で汎用的である。
【０００９】
更に、プログラマブル制御レジスタは、各転送に対して、その転送のために実行すべき明確なフェーズの実際のシーケンスと、その転送のための１または複数の制御値とを定義するようにプログラムされるように構成される。個々の転送のために必要な情報を記憶するために十分な個数の制御レジスタだけが必要とされるため、このやり方は制御レジスタの個数を制限することができる。
【００１０】
制御レジスタはいろんなやり方でプログラムできることを理解されよう。しかし、例えば、システムバスを介してメモリコントローラへつながれるプロセッサ上で実行される適当なソフトウエアによって制御レジスタをプログラムすることもできる。制御レジスタは各転送の前にプログラムされるので、シーケンス発生器がそれらのプログラマブル制御レジスタの内容によって定義される実際の転送を発生する間に、システムバスおよびプロセッサは他の用途のために自由になることができ、従って、システムバスおよびプロセッサのより効率的な利用が可能になる。
【００１１】
従って、本発明は、インタフェースに使用するハードウエアとソフトウエアのバランスを取って、複雑なソフトウエアを用いた基本的ハードウエア・インタフェースより効率的に優れており、またソフトウエアの利用を最小限に抑えた完全なハードウエア方式よりも将来のメモリデバイスとの互換性に優れ、ゲート数も少なくなっていることが分かるであろう。本発明は、詳細な制御信号操作の知識を必要とせずにソフトウエアによって明確なフェーズの正しいシーケンスを各転送用にプログラムできるようにすることによってシステムバスと、メモリデバイスをメモリコントローラとつないでいるバス（ここでは外部バスとも呼ぶ）の効率的な利用を保証するのに十分なハードウエアを使用しており、また実行すべき転送中で使用される制御値および正確なシーケンスを設定するためにソフトウエアを使用することによって、新しいメモリデバイスによって指定されるであろう新しい転送シーケンスをサポートできる。従って、新しいメモリデバイスをサポートするときもハードウエアの変更は一般に不要であり、その代わりに、比較的安価なソフトウエアの更新を行なえばよい。
【００１２】
メモリデバイスは多様なやり方でメモリコントローラとつながれることは理解されよう。しかし、好適な実施の形態では、メモリデバイスはメモリデバイス・インタフェースにつながる共通バス上で、各転送の明確なフェーズを受信するように構成される。
【００１３】
明らかなように本発明は、転送が明確なフェーズを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存するかあるいは事実、実際のメモリデバイスそれ自身に依存する型の任意のメモリデバイスとの間での転送を制御するために利用することができる。しかし、好適な実施の形態では、メモリデバイスはＮＡＮＤフラッシュ・メモリデバイスである。
【００１４】
個々の転送タイプについて定義されるシーケンス内で使用される明確なフェーズは多様な形式を取ることができることは理解されよう。しかし、好適な実施の形態では、第１の明確なフェーズはコマンドフェーズであり、その間に転送タイプを指定する情報がメモリデバイスに供給される。そのような実施の形態では、複数のプログラマブル制御レジスタ中にプログラム可能な１または複数の制御値は、その転送のコマンドフェーズに付随する１または複数のコマンド値を含むことが好ましい。このことから、そのような実施の形態では、制御レジスタは、シーケンス中の１または複数のコマンドフェーズが現れる場所だけでなく、コマンドフェーズ中に出力されるコマンド値も定義する。
【００１５】
好適な実施の形態では、第２の明確なフェーズはオプションのアドレスフェーズであり、その間にその転送に関するアドレスが供給される。好適な実施の形態ではアドレスの生成を要求しない或るタイプの転送が定義されているためアドレスフェーズはオプションとなっている。オプションのアドレスフェーズが指定される状況では、制御レジスタ中にプログラム可能な１または複数の制御値が、その転送に付随するすべてのアドレスを含むことが好ましい。このことから、好適な実施の形態では、制御値は１または複数のコマンド値のほかに転送に付随するすべてのアドレスを含むことができる。転送に関するアドレス生成に関して、制御レジスタがシーケンス中のどこに１または複数のアドレスフェーズが現れるかだけでなく、それらのアドレスフェーズにおいて出力されるアドレス値も定義することを理解されよう。
【００１６】
好適な実施の形態では、第３の明確なフェーズはオプションのデータフェーズであり、そこではメモリデバイスとの間でデータ値の読み書きが行なわれる。アドレスフェーズの場合と同じように、好適な実施の形態ではデータの読み書きを必要としないタイプの転送を指定できるので、データフェーズはオプションとなっている。
【００１７】
プログラマブル・タイミングレジスタおよびプログラマブル制御レジスタをプログラムするやり方はいろいろあることを理解されよう。しかし、好適な実施の形態ではメモリコントローラは更に、複数のプログラマブル・タイミングレジスタおよび複数のプログラマブル制御レジスタをプログラムするために使用される制御信号を送るシステムバスとメモリコントローラとをつなぐように機能するシステムバス・インタフェースを含む。
【００１８】
そのような実施の形態では、プロセッサをシステムバスにつないで、制御信号を生成するためのソフトウエアを実行できることが好ましい。当業者には理解されるように、このソフトウエアはメモリコントローラによって制御される実際のメモリデバイスに依存して書かれよう。
【００１９】
更に、シーケンス発生器は多様な形態を取ることができることを理解されよう。しかし、好適な実施の形態では、シーケンス発生器は各々の転送について対応する明確なフェーズのシーケンスを生成するように動作できる状態機械を含む。そのようなやり方はシーケンス発生器を特に効率よく実現できることが分かった。
【００２０】
本発明のメモリコントローラは単一のメモリデバイスとの間での転送を制御するために使用することができる。しかし、別の実施の形態では、メモリコントローラは、各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型の複数の前記メモリデバイスとの間で転送を制御するように動作できる。そのような実施の形態では、メモリコントローラの関連するハードウエアを複製することによって、そのようなメモリデバイスを複数個、同時に制御することが可能となろう。しかし、不必要にハードウエア量を増やさないことは常に重要であり、そのような実施の形態ではハードウエアは複製されることなく、メモリコントローラは任意の時点において複数のメモリデバイスのうちの単一のものを制御することだけができるのが普通である。
【００２１】
メモリコントローラは、各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型の単一のメモリデバイス、あるいは複数のメモリデバイスとの間で転送を制御するように構成されよう。そのような実施の形態では、明らかなように、そのようなメモリコントローラは異なるタイプのメモリデバイス用に備えられたその他のメモリコントローラと一緒に使用されようし、また各種のコントローラを外部データバスへつなぐために使用される外部データバス・マルチプレクサとも一緒に用いられもしよう。一例として、そのようなメモリコントローラは、独立した、あるいは組み合わされたＳＲＡＭ／ＳＤＲＡＭコントローラと一緒に使用されよう。しかし、別の実施の形態では、メモリコントローラは更に、異なるタイプの別のメモリデバイスを制御するように動作できる制御ロジックを含む。この別のメモリデバイスはアドレスバスおよび分離されたデータバスを介してメモリコントローラと交信するように構成され、前記共通バスは前記データバスで構成される。従って、一例として、メモリコントローラはまた、ＳＲＡＭデバイスやＳＤＲＡＭデバイスのようなその他のメモリデバイスを制御するためにも使用されよう。従って、そのような実施の形態では、複数の異なるタイプのメモリデバイスを制御するために組み合わされたメモリコントローラが設けられる。
【００２２】
好ましくは、そのような実施の形態では、共通バスはデータバスで構成される。しかし、代替の実施の形態では、アドレスバスが双方向性バスとして実現されている場合、共通バスはそのような場合には必要に応じてアドレスバスによって構成できることが理解されよう。
【００２３】
メモリコントローラが、先に述べたような型のメモリデバイスだけでなく、異なるタイプの別のメモリデバイスをも制御するような実施の形態では、そのような別のメモリデバイスとの間の転送は本来のメモリデバイスとの間の転送よりも高速になるのが普通である。例えば、ＳＲＡＭやＳＤＲＡＭデバイスとの間の転送はＮＡＮＤフラッシュメモリデバイスとの間の転送よりはかなり高速である。そのような実施の形態では、好適な実施の形態のメモリコントローラは、メモリデバイスとの間で転送が行なわれる間は共通バスが不活性であって、別のメモリデバイスを制御する制御ロジックは別のメモリデバイスとの間の転送を実行するためにデータバスを使用することを許可されるように構成されることが好ましい。従って、メモリコントローラがＮＡＮＤフラッシュメモリデバイスだけでなく、ＳＲＡＭやＳＤＲＡＭメモリデバイスも制御する例を考慮すると、好適な実施の形態のメモリコントローラは、ＳＲＡＭあるいはＳＤＲＡＭへのアクセスが外部バス上で実行され、その間はＮＡＮＤ転送がアイドル状態にあり、一旦、ＳＲＡＭあるいはＳＤＲＡＭへのアクセスが完了すればＮＡＮＤ転送が継続されることを許容する。これによって、さもなければ外部バスを数ミリ秒間にわたりロックアップする内部演算をＮＡＮＤフラッシュが実行する間に、ＳＲＡＭあるいはＳＤＲＡＭのアクセスが可能になることで、外部メモリ・インタフェースの効率は向上する。
【００２４】
第２の態様から見ると、本発明は、各々の転送が明確なフェーズのシーケンスを含み、明確なフェーズの実際のシーケンスが転送のタイプに依存する型の単一のメモリデバイスとの間で転送を制御する方法を提供する。本方法は：複数のプログラマブル・タイミングレジスタをプログラムして、転送を制御しようとするメモリデバイスに適したタイミング情報を記憶させること；各転送の前に、複数のプログラマブル制御レジスタをプログラムして、その転送のために実行すべき明確なフェーズの実際のシーケンスおよびその転送のための１または複数の制御値を定義すること；および複数のプログラマブル・タイミングレジスタおよび複数のプログラマブル制御レジスタの内容に依存して各転送を発生すること；の工程を含む。
【００２５】
本発明は、添付図面に示された本発明の好適な実施の形態を参照しながら、ほんの一例として更に説明する。
【００２６】
【発明の実施の形態】
本発明の好適な実施の形態を説明する目的で、ＮＡＮＤフラッシュメモリデバイスを制御するためのメモリコントローラについて説明しよう。しかし、好適な実施の形態のメモリコントローラについて説明する前に、まず図１および図２を参照しながら、ＮＡＮＤフラッシュメモリデバイス用の従来技術のインタフェース・デバイスについて説明することにする。図１は従来技術のメモリコントローラのブロック図であるが、これはアドバンスト・マイクロ・デバイス（ＡＭＤ（Ｒ））社のウエブサイトから入手できる、発行番号第２２３６３号の”ＵｌｔｒａＮＡＮＤ（Ｒ）フラッシュ用の簡単なシステム・インタフェース（Ｓｉｍｐｌｅ　Ｓｙｓｔｅｍ　Ｉｎｔｅｒｆａｃｅ　ｆｏｒ　ＵｌｔｒａＮＡＮＤ　Ｆｌａｓｈ）”と題するアプリケーションノートに説明されている。これは外部ＮＡＮＤフラッシュ・インタフェース、すなわち図１のグルーロジック１１０の組み込みについて述べており、これはＳＲＡＭやＳＤＲＡＭを制御するために用いられるような標準的なメモリコントローラ１００を用いて制御される。従って、メモリコントローラ１００は通常のやり方で１または複数のシステムバスへつながれており、更に、分離したアドレスおよびデータバス５２へもつながれる。後者のバスには通常のやり方でＳＲＡＭ９０やＳＤＲＡＭ９５をつなぐことができる。更に、グルーロジック１１０はアドレスおよびデータバス５２へつながれて、ＮＡＮＤフラッシュメモリデバイス８５用を想定しているメモリコントローラ１００のＳＲＡＭ側によって出力される信号を受信する。ＮＡＮＤフラッシュはアドレスとデータの組合せバス１２０を使用するが、ＳＲＡＭおよびＳＤＲＡＭは両方とも別になったアドレスおよびデータバスを使用するので、標準的なメモリコントローラ１００からの信号出力はＮＡＮＤフラッシュメモリ８５へ直接送ることができないことは明らかである。バス・アーキテクチャが違うだけでなく、ＮＡＮＤフラッシュメモリデバイスの動作もＳＲＡＭとＳＤＲＡＭとで違う。これはＮＡＮＤフラッシュメモリデバイスが、実行すべき転送タイプを定義するためにコマンドフェーズの間にＮＡＮＤフラッシュメモリデバイスに対して単一バス１２０上を供給されるコマンド値を必要とするためである。このコマンドフェーズの次には、実行すべき転送のタイプに依存して、可変数個のオプションのアドレスフェーズ、データフェーズ等々が続く。
【００２７】
図２はＮＡＮＤフラッシュメモリデバイスとの間で転送を実行するために、メモリコントローラ１００とグルーロジック１１０との間で実行される各種通信を示すフロー図である。工程２００では、第１のコマンドフェーズのためにＮＡＮＤフラッシュ・インタフェースバス１２０上で外部ＮＡＮＤフラッシュ制御信号をセットアップするために、メモリコントローラ１００とグルーロジック１１０との間で一連のＳＲＡＭ転送が実行される。任意のＮＡＮＤフラッシュ転送での第１の明確なフェーズはコマンドフェーズとなるであろう。プロセスは次に工程２１０へ進み、そこではＮＡＮＤフラッシュ・インタフェースバス１２０上に各アドレスフェーズ用の制御信号をセットアップするために、メモリコントローラ１００とグルーロジック１１０との間でＳＲＡＭ転送が実行される。次に、工程２１０は必要なアドレスフェーズの各々について繰り返される。
【００２８】
その後、実行されるプロセスは実行される転送が読出し転送であるか、書込み転送であるかによって異なる。読出し転送の場合は、プロセスは工程２２０へ分岐する。ここで、オプションの第２のコマンドフェーズが必要な場合には、バス１２０上に外部ＮＡＮＤフラッシュ制御信号をセットアップするために、メモリコントローラ１００とグルーロジック１１０との間で再びＳＲＡＭ転送が実行される。その後、プロセスは工程２３０へ進み、そこでプロセスはＮＡＮＤフラッシュデバイス８５の出力に読出しデータが準備されるまで待機する。
【００２９】
その後、プロセスは工程２４０へ進んで、各々の必要とされる読出しデータフェーズに対してバス１２０上に外部ＮＡＮＤフラッシュ制御信号をセットアップするために、メモリコントローラ１００とグルーロジック１１０との間で再びＳＲＡＭ転送が実行され、各々の要求される読出しデータ移送についてプロセス２４０が繰り返される。次に、プロセスは工程２００へ戻り、複雑な転送の各々のサブコマンドあるいは各外部ＮＡＮＤフラッシュ転送について繰り返される。
【００３０】
書込み転送の場合は、プロセスは工程２１０から工程２５０へ分岐して、書込みデータフェーズのためにバス１２０上に外部ＮＡＮＤフラッシュ制御信号をセットアップするためにメモリコントローラ１００とグルーロジック１１０との間でＳＲＡＭ転送が実行される。これは要求される書込みフェーズの各々について繰り返される。その後、プロセスは工程２６０へ進み、書込み転送のために通常は必要とされる第２のコマンドフェーズのためにバス１２０上に外部ＮＡＮＤフラッシュ制御信号をセットアップするために、ＳＲＡＭ転送が実行される。次に、プロセスは工程２００へ戻り、複雑な転送（例えば、書込み後の状態読出し）の各サブコマンド、あるいは各外部ＮＡＮＤフラッシュ転送についてこのプロセス全体が繰り返される。
【００３１】
図２から明らかなように、正しいタイミングで必要な制御シーケンスを発生することを要求されるソフトウエアは複雑なものとなろう。ＮＡＮＤフラッシュ転送シーケンスを生成するためには複数のメモリアクセスを実行する必要があり、メモリコントローラへのシステムプロセッサあるいはその他の駆動装置を経由したシステムバスの拡張された利用が要求されよう。この結果、グルーロジック１１０が正しいタイミングで正しい制御シーケンスを発生するようにするために、メモリコントローラ１００とグルーロジック１１０との間で外部バスを横切って複数の転送が発生することになり、それによって外部メモリバス５２の使用効率は低下する。残りの図面に関連してもっと詳しく説明するように、本発明の好適な実施の形態のメモリコントローラでは、図１および図２の従来技術の基本的ハードウエア・インタフェースのやり方に比べて効率が大幅に改善される。
【００３２】
【実施例】
図３は好適な実施の形態のメモリコントローラ１０が採用されるデータ処理システムを模式的に示すブロック図である。メモリコントローラ１０はシステムバス３００へつながれ、後者には複数のロジック・ユニットおよびその他のデバイスがつながれよう。本発明の好適な実施の形態を説明する目的のために、興味のある唯一のロジック・ユニットはプロセッサコア３１０であり、これはメモリコントローラ１０をプログラムしてＮＡＮＤフラッシュメモリアクセスを実行許可するための適当なソフトウエアを走らせるために使用することができる。例示として、図３はまた、システムバス３００へつながれた内部メモリデバイス３３０、およびアービタ３２０を示しており、後者は当業者には明らかなように、システムバスへつながれたロジック・ユニットによるシステムバスへの各種アクセス要求相互間の調整をするために用いられる。簡単のために、図３にはシステムバスへつながるこれ以外のデバイスは示していない。しかし当業者には明らかなように、プロセッサコア３１０以外にシステムバスへのアクセスを要求することのできる複数のロジック・ユニットがシステムバス３００へつながれていて、例えばダイレクトメモリアクセス（ＤＭＡ）コントローラ、コプロセッサ、電力管理ユニット等があり、アービタ３２０はこれらの各種要求間の調整を行なうために用いられる。
【００３３】
システムバスは本発明の好適な実施の形態では別々になったアドレスおよびデータバスを含んでおり、実際に特定の実施の形態ではシステムバスは例えば１６回のように、メモリコントローラ１０に備わる入力ポートの個数に対応する複数回だけ複製されて、多重アクセスが並列的に発生することを許容している。
【００３４】
メモリコントローラ１０はまた外部バス５２にもつながれており、後者はこれも別になったアドレスバスおよびデータバスを含んでいる。この外部バス５２に対して、ＳＲＡＭ９０およびＳＤＲＡＭ９５のようなメモリデバイスが従来のやり方でつながれる。本発明の好適な実施の形態に従えば、ＮＡＮＤフラッシュメモリデバイス８５もまた外部バス５２へつながれるが、単一バスライン、好ましくはデータバス上でそれの転送信号すべてを受信する。
【００３５】
図４は本発明の好適な実施の形態に従うメモリコントローラ１０内に設けられた部品をより詳細に示している。システムバス・インタフェース２０が設けられて、１または複数のシステムバス３００とのインタフェースを取っている。ＳＲＡＭ９０あるいはＳＤＲＡＭ９５との間の転送に関して、信号は従来のように処理され、従ってシステムバス・インタフェース２０から経路３２、４２を経てＳＲＡＭメモリ・インタフェース３０またはＳＤＲＡＭメモリ・インタフェース４０へそれぞれ出力される。そこから、ＳＲＡＭまたはＳＤＲＡＭ転送信号がそれぞれ経路３４、４４を経てマルチプレクサ５０へ出力され、そこからそれらは外部バス５２を通ってそれぞれＳＲＡＭデバイス９０、あるいはＳＤＲＡＭデバイス９５へ出力される。アドレス信号は外部バス５２のアドレスバス上を送られ、他方、データ信号は外部バス５２のデータバス上を送られよう。更に、別になった制御信号は適当なＳＲＡＭ９０あるいはＳＤＲＡＭ９５へ迂回されて、発生する転送のタイプを識別し、その他の必要な制御信号をそれらのメモリデバイスへ供給する（簡単のために、それらの制御信号は図４から省略されている）。
【００３６】
ＮＡＮＤフラッシュメモリデバイス８５との間の転送を制御するために、メモリコントローラ１０には３つのロジック部品が設けられている。すなわち、ＮＡＮＤプログラマブル・タイミングレジスタ６０、ＮＡＮＤプログラマブル制御レジスタ７０、およびＮＡＮＤメモリ・インタフェース８０である。どれかのＮＡＮＤフラッシュ転送が実行される前に、１組のタイミングレジスタ６０をコンフィギュア（設定）しなければならない。これらは転送時のＮＡＮＤフラッシュ制御信号のタイミングを制御するために用いられている。このことから、特別なＮＡＮＤフラッシュデバイス８５がメモリコントローラ１０へつながれたときは、関連するタイミング情報をシステムバス・インタフェース２０および経路６２を経てタイミングレジスタ６０へプログラムするために、何らかの対応するソフトウエアをプロセッサコア３１０上で走らせるのが普通である。図４には単一のＮＡＮＤフラッシュメモリデバイス８５しか示されていないが、メモリコントローラ１０は複数のＮＡＮＤフラッシュメモリデバイス８５を制御するために使用することができる。その状況では、メモリコントローラへつながるすべてのＮＡＮＤデバイスに対してタイミングレジスタ６０が適用され、そのため、メモリコントローラ１０へつながれたすべてのＮＡＮＤデバイスが正しくアクセスすることを保証するために、最も遅いタイミング値をタイミングレジスタ６０にプログラムする必要がある。しかし、ＮＡＮＤデバイスが非常に異なるタイミング要求を有する場合は、異なるＮＡＮＤデバイスへアクセスするたびに、タイミングレジスタをプログラムし直すこともできる。
【００３７】
しかし、メモリコントローラ１０へ単一のＮＡＮＤフラッシュメモリデバイス８５だけがつながれている状況を仮定すると、明らかなように、ＮＡＮＤプログラマブル・タイミングレジスタはセットアップ時に一度だけプログラムするのが普通であり、その後は、付加的なＮＡＮＤフラッシュメモリデバイスが接続されない限り再プログラムされることはない。従って、メモリコントローラ１０は、それを許可して正しいタイミングでＮＡＮＤフラッシュ転送シーケンスを発生させるために必要なタイミング情報をすべて内部的に保有している。
【００３８】
ＮＡＮＤプログラマブル・タイミングレジスタ７０は、各転送についてその転送に関して実行すべき明確なフェーズの実際のシーケンスと、その転送に関する１または複数の制御値を定義するために使用される。この場合も、それらのレジスタをプログラムすることは、プロセッサコア３１０上で実行される適当なソフトウエアによって行なわれるのが普通である。そのようなソフトウエアによるこれらの制御レジスタ７０のプログラミングについて、ここで図６を参照しながら説明することにしよう。
【００３９】
図６は各転送についての必要な情報を制御レジスタ７０にプログラムするためのソフトウエアによって実行されるルーチンを概念的に示すフロー図である。工程６００で、初期のコマンドフェーズのために使用すべき第１のコマンド値がプログラムされる。好適な実施の形態では、常に単一の初期コマンドフェーズが存在する。明らかなように、いくつかの実施の形態では、複数の初期コマンドフェーズが存在し得るが、その場合には、工程６００は初期コマンドフェーズ／値の数を識別することおよび各初期コマンド値をプログラムすることを含む工程へ変更されよう。
【００４０】
その後、プロセスは工程６１０へ進み、アドレスフェーズの数がプログラムされる。先に述べたように、アドレスフェーズはオプションであり、実行すべき転送のタイプに依存する。更に、異なる転送タイプに対しては異なる数のアドレスフェーズが必要となろう。
【００４１】
従って次に、プロセスは工程６２０へ進み、アドレスフェーズの数が零よりも大きいかどうかが判定される。もしそうであれば、それらのアドレスフェーズに対する実際のアドレスが工程６３０でプログラムされる。その後、プロセスは工程６４０へ進むか、あるいはもしもアドレスフェーズが存在しなければ工程６２０から直接工程６４０へ進む。工程６４０では、１または複数の第２コマンドフェーズに付随する第２コマンド値の数がプログラムされる。アドレスフェーズと同じように、第２コマンドフェーズもオプションであり、転送のタイプに依存しよう。本発明の好適な実施の形態では、何らかの第２コマンドフェーズが存在する限り、１個だけの第２コマンドフェーズが存在するのが普通であるが、１個よりも多い第２コマンドフェーズを要求するＮＡＮＤフラッシュ転送を定義することも可能である。
【００４２】
次に、工程６５０では、第２コマンド値の数が零よりも大きいかどうかが判定されて、もしもそうであればプロセスは工程６６０へ進み、各々の第２コマンド値がプログラムされる。その後、プロセスは工程６７０へ進むか、あるいは第２コマンドフェーズが存在しない場合には工程６５０から直接工程６７０へ進む。
【００４３】
工程６７０では、その転送によってデータフェーズが必要とされるかどうかの表示がプログラムされ、その後、工程６８０では、その転送が読出しであるか、書込みであるかの表示がプログラムされる。
【００４４】
図６にはソフトウエアによって制御レジスタ７０中に記憶させるために構築すべき個々の情報を示すように工程が逐次的に示されているが、好適な実施の形態ではそれらの値を制御レジスタへ実際にプログラムする作業は図６に示すように逐次的には行なわれない。例えば、コマンド値はすべて単一のレジスタに記憶するのが好ましく、従って工程６００および６６０は、コマンド値を単一のデータブロックとして特別な制御レジスタ７０へ記憶させるように送ることで同時に実行されよう。同様に、アドレスフェーズの数、第２コマンド値の数、データフェーズが必要かどうかの表示、および転送が読出しか書込みかの表示はすべて１組の制御レジスタ７０中の単一の制御レジスタに記憶されるのが好ましい。従って、工程６１０、６４０、６７０、および６８０は関連する制御レジスタへ単一データブロックの情報を送ることによって一緒に実行するのが普通である。更に、工程６３０に関して、好適な実施の形態では、各アドレスは長さが８ビットであるが、各制御レジスタは長さが３２ビットである。従って、同時に４個までのアドレスがシステムバス３００上へ出力されて、単一の制御レジスタに記憶できる。好適な実施の形態では、特定の転送に関して必要な制御値および必要なシーケンス情報のすべてを定義するために、プログラマブル制御レジスタ７０に対して実行する必要があるレジスタ書込みプロセスの数は３または４というのが普通である。
【００４５】
次の表は本発明の好適な実施の形態で上述のプログラム可能な値の各々に対して必要なビット数を示す。
【００４６】
【表１】
2004110785.tif 000003
【００４７】
特定の転送に対して制御レジスタが一旦プログラムされると、ＮＡＮＤメモリ・インタフェース８０はタイミングレジスタ６０および制御レジスタ７０の内容に関連して必要な転送を生成することができる。図７を参照すると、必要な場合はタイミングレジスタ６０中の値がＮＡＮＤメモリ・インタフェース８０中のタイミング・カウンタ７００へロードされる。好適な実施の形態では、プログラマブル・タイミング値の各々に対して別々のカウンタは存在しないが、それはそれらが同時にすべて必要とされることがないためである。従って、好適な実施の形態では、カウンタ７００は共有カウンタであって、必要な場合には実行される転送の現在のフェーズに従って要求されるタイミング値をロードされる。このやり方で、ゲート数を減らすことができる。
【００４８】
一旦制御レジスタがプログラムされると、ＮＡＮＤメモリ・インタフェース８０の入力／出力レジスタ７２０へ経路８２を通って送るようにシステムバス・インタフェース２０に対して単一のシステムバス転送が発行されるのが普通であり、それは次にＮＡＮＤ転送状態機械７１０へ送られ、外部ＮＡＮＤフラッシュメモリアクセスを開始すべきであることを指示する。状態機械７１０は次に、それらの値を制御レジスタ７０から取り出して転送の構築を始める。オプションのアドレス、データ、および第２コマンドフェーズが後に続くコマンドフェーズは、制御レジスタ７０の内容から構築されて、データバスのバッファリングおよび制御ロジック７４０を介して、経路８４上をマルチプレクサ５０へ出力される。更に、ＮＡＮＤフラッシュ転送に関して必要なタイミング信号はすべてタイミング・カウンタ７００の内容に関連する状態機械７１０によって生成される。これらの信号は、ＮＡＮＤフラッシュメモリデバイス８５へ経路８６を通って出力するために入力／出力レジスタ７３０へ出力される。当業者には理解されるであろうように、タイミング値はまたデータバス上へ出力される値のためにも使用されるので、タイミングは経路８４および８６の両出力に適用される。
【００４９】
一旦、上述のようにＮＡＮＤ転送がセットアップされると、各システムバスの読出しまたは書込みはＮＡＮＤデータ転送を引き起こすであろう。従って、読出しアクセスの場合には、読出しデータがＮＡＮＤフラッシュメモリデバイスから利用可能になったときに、各システムバスの読出しはデータの迂回を引き起こし、データはマルチプレクサ５０を介して経路８４上をデータバスのバッファリングおよび制御ロジック７４０中へ戻され、そこから経路８２を通ってシステムバス・インタフェース２０へ出力されて、システムバス３００上へ出力できるようになる。同様に、書込みアクセスの場合は、各システムバスの書込みは必要な書込みデータがプロセッサから出力されるようにし、次にシステムバス・インタフェースから経路８２上をデータバスのバッファリングおよび制御ロジック７４０へ迂回させ、そこからそれは、ＮＡＮＤフラッシュメモリデバイスへ送るのに必要なように、経路８４上を通ってマルチプレクサ８４へ出力できる。
【００５０】
読出しあるいは書込み転送のいずれかに対して、ロジック７４０は必要な任意のサイズ変換を実行し、それによって例えば、８ビットメモリへの３２ビット転送を実行するのであれば、４回の外部ＮＡＮＤデータ転送が実行されよう。
【００５１】
一旦必要な数の読出しあるいは書込みが実行されれば、転送を終了するために、もうひとつの単一のシステムバス転送が必要となる。これはＮＡＮＤ転送を終了するための停止コマンドの発行の形を取る。読出し転送に関しては、読出し操作は直ちに終了しよう。他方、書込み転送に関しては第２コマンドフェーズがまず実行されよう。
【００５２】
図５は上述のように本発明の好適な実施の形態に従ってＮＡＮＤフラッシュ転送を生成するために実行されるプロセスを要約するフロー図である。工程５００で、ＮＡＮＤフラッシュタイミングレジスタ６０は、好ましくはプロセッサコア３１０上で走る適当なソフトウエアによって、デバイスに必要なタイミング値をプログラムされる。先に述べたように、このプロセスはセットアップ時に一度実行されるのが普通である。記憶されるのが一般的なタイミング情報は、信号に関するセットアップ回数、アサート信号の時間長、ホールド時間等の情報を含む。
【００５３】
次にプロセスは工程５１０へ進み、制御レジスタ７０は実行すべき転送に関して必要なパラメータおよび値をプログラムされる。このプロセスは既に先に図６に関して説明した。この後、プロセスは工程５２０へ進み、単一のシステムバス転送が発生して、外部ＮＡＮＤフラッシュメモリアクセスが開始される。先に述べたように、この信号はＮＡＮＤメモリ・インタフェース８０へ迂回されて、ＮＡＮＤメモリ・インタフェースはＮＡＮＤフラッシュメモリアクセスの発生を開始させる。その後、プロセスは工程５２５へ進み、そこでプロセスはメモリコントローラがＮＡＮＤコマンドおよびオプションのアドレスフェーズを実行するまで待機し、読出しの場合には読出しデータが利用可能になるまで待機する。このプロセスが実行されている間、システムバスはアイドル状態で、それ以上の制御信号を発行する必要はなく、メモリコントローラ１０は、そのコマンドを許可し、可変個数のアドレスおよび第２フェーズが生成されるようにするために必要な情報すべてを内部的に有している。その後、プロセスは工程５３０へ進み、適当なシステムバスデータ転送を実行することによって、ＮＡＮＤフラッシュデバイスとの間で必要なデータ読出しあるいは書込みの転送が実行される。工程５３０は必要な各データ転送に対して繰り返される。次にプロセスは工程５１０へ戻って、工程５１０、５２０、および５３０が複雑な転送のサブコマンドの各々について繰り返されるのを許可する。
【００５４】
その後、プロセスは工程５４０へ進み、単一のシステムバス転送によって外部ＮＡＮＤフラッシュメモリアクセスが終了する。この信号は経路８２上でシステムバス・インタフェースを通ってＮＡＮＤメモリ・インタフェース８０へ迂回され、ＮＡＮＤフラッシュメモリアクセスを終了させ、書込み転送に対しては第２コマンドフェーズを実行する。次にプロセスは工程５１０へ戻って、後続の外部ＮＡＮＤフラッシュメモリ転送の各々について、それを繰り返すことを許可する。
【００５５】
図８Ａおよび８Ｂはそれぞれ、読出しアクセスおよび書込みアクセス用のＮＡＮＤフラッシュメモリ転送のフォーマットを示すタイミング図である。最初に図８Ａを見ると、信号ＣＬＥ、ＣＥ、ＷＥ、ＡＬＥ、ＲＥ、およびＲ／Ｂは制御信号であって、それらは状態機械７１０によって入力／出力レジスタ７３０へ発行され、経路８６上をＮＡＮＤフラッシュメモリデバイスへ出力される。当業者には明らかなように、これらはＮＡＮＤフラッシュメモリデバイスで必要とされる標準的な信号であり、ＣＬＥはコマンドラッチ許可信号、ＣＥはチップ許可信号、ＷＥは書込み許可信号、ＡＬＥはアドレスラッチ許可信号、ＲＥは読出し許可信号、そしてＲ／Ｂはレディ（ｒｅａｄｙ）／ビジー表示信号である。
【００５６】
Ｉ／Ｏ信号は入力／出力共通コマンド／アドレス／データバス（好適な実施の形態では外部バス５２のデータバスによって構成される）上に生成される信号を示す。図８Ａの下部に示すように、期間８００中に制御レジスタ７０がプログラムされる、すなわち、図５の工程５１０が実行される。その後、期間８１０では、開始コマンドが発行される（すなわち、図５の工程５２０が実行される）。その後、期間８２０の間にシステムバスはＮＡＮＤ読出しデータが利用可能になるまで待機するアイドル状態になる、すなわち、図５の工程５２５が実行される。次に、期間８３０中に、データを読み出すために多重のシステムバス転送が実行される、すなわち、図５の工程５３０が実行される。最後に、期間８４０中に停止コマンドが発行されて、ＮＡＮＤフラッシュメモリアクセスが終了する、すなわち、工程５４０が実行される。
【００５７】
図８Ａから分かるように、図８Ａに示した読出しアクセスの特別な例にはコマンドフェーズの生成と、それに続く４つのアドレスフェーズ、およびその後の分離した複数のデータ値読出しが続く。
【００５８】
次に図８Ｂを見ると、Ｉ／Ｏ信号は共通コマンド／アドレス／データバス上に発行される信号を示している。これはコマンドフェーズを含み、その後に４つのアドレスフェーズが続き、更に複数データ値の書込みが続き、その後に停止コマンドが生成される第２コマンドフェーズが続く。この特別な例で、読出し状態チェックを実行するため、すなわち、書込みデータが正しく書き込まれたことをチェックするための後続の転送が実行される。
【００５９】
従って、工程９００で、制御レジスタがプログラムされ、その後、期間９１０中に開始コマンドが発行される。更に続いて、期間９２０中にシステムバスはアイドル状態となって、そのコマンドおよびアドレスフェーズが完了するのを待つ。その後、期間９３０中に適当なシステムバス転送によって書込みデータが生成される（図５の工程５３０参照）。その後、期間９４０中に停止コマンドが発行される（図５の工程５４０参照）。期間９５０中に（一時的に記憶されたデータがメモリに書き込まれる）、システムバスは転送間のアイドル状態になって、その後、期間９６０では制御レジスタは読出し状態転送のためにプログラムされる。次に、期間９７０では、開始コマンドが発行され（図５の工程５２０参照）、それに続いて期間９８０ではシステムバスがアイドル状態となってコマンドフェーズが完了するのを待機する期間が続く。その後、期間９９０では、システムバス転送が実行されて、データを読み出す（図５の工程５３０参照）。
【００６０】
明らかなように、”書込みとそれに続く読出し状態”プロセスは図８Ｂに示すように、２つの全く分離した転送として実行するか、あるいは状態読出しが転送全体の後半を構成するようにし、それによって図５の工程５４０と５１０との間の経路ではなく、工程５３０と５１０との間の経路を使用するようにすることもできる。
【００６１】
完全を期するために、本発明の１つの特別な実施の形態に従うＮＡＮＤフラッシュ転送の制御についてここで更に説明することにしよう：
【００６２】
ＮＡＮＤフラッシュメモリコントローラ初期化
任意のＮＡＮＤフラッシュ転送が実行される前に、１組のＮＡＮＤフラッシュ特定タイミングレジスタをコンフィギュアしなければならない。これは転送時のＮＡＮＤフラッシュ制御信号のタイミングを制御するために用いられる。ＮＡＮＤタイミングレジスタのすべてについてデフォルト値は可能な最大値であるが、ほとんどのデバイスはもっと高速のタイミング動作をすることができる。ＮＡＮＤタイミングレジスタはシステム中のすべてのＮＡＮＤデバイスに適用可能であるため、システム中のすべてのデバイスが正しくアクセスされることを保証するために、最も遅いタイミングの値をプログラムしなければならない。もしもデバイスが互いに大きく異なるタイミング要求を有していれば、ＮＡＮＤタイミングレジスタは異なるデバイスへのアクセスごとに、プログラムし直してもよい。
【００６３】
各々の外部ＮＡＮＤフラッシュ転送が実行される前に、その転送に備えて、ＮＡＮＤ制御およびアドレスレジスタをセットアップする必要がある。
【００６４】
ＮＡＮＤ制御レジスタはその転送時に実行されるフェーズ・シーケンスを定義するために用いられる。転送の最初には実行される転送のタイプをメモリに対して示すコマンドフェーズが常に存在する。それに続いて、転送のタイプおよびアクセスされるデバイスに依存して、オプションのアドレス、データ、および第２コマンドフェーズの組合せが続く。
【００６５】
例えば、単純なデータ読出し転送は１つのコマンドフェーズ、３つのアドレスフェーズ、データが内部的にメモリからＮＡＮＤフラッシュデバイスの出力データレジスタへ移動させられる１つのビジーフェーズ、および読み出されるデータ量に依存する複数のデータフェーズである。
【００６６】
ＮＡＮＤ制御レジスタのコマンドビットは２つの８ビットコマンドベクトルを記憶するために用いられる。第１のベクトル値は常にプログラムされなければならないが、第２の値は、転送中に第２コマンドフェーズが実行されるかどうかを示すビットがセットされる場合にのみ用いられる。
【００６７】
すべての接続されているＮＡＮＤフラッシュデバイスを駆動するために用いられるのは１組のＮＡＮＤ制御およびアドレスレジスタだけである。従って、プログラムされた転送に対して、どのチップセレクトを使用するかを選択するために２ビットが使用される。これによって転送は正しいデバイスに対してのみ実行されることが保証される。
【００６８】
アドレスフェーズビットはアドレスフェーズが存在するかどうか、およびアドレスフェーズの間にいくつのアドレスベクトルが実行されるかを定義する。許容される最大のアドレスベクトル数は５である。ＮＡＮＤアドレス値レジスタの各セクションはその転送に必要なアドレスベクトルをプログラムされるべきである。未使用のアドレスベクトルはそれらの値を変更する必要がない。
【００６９】
データフェーズビットはデータフェーズが実行されるかどうかを定義する。システムバス読出し／書込み転送は外部読出し／書込み転送へ変換されるので、データ転送の数は定義されない。
【００７０】
ＩＤ読出しビットは現在の転送がＩＤ読出しであることを示すために使用される。これはＩＤ読出し転送が特殊なタイミング要求を有するために必要である。これは標準的なデータ読出しとは異なるように実行される。
【００７１】
短い読出しビットは、転送のデータフェーズを実行する前にレディー／ビジー出力の状態を読出し転送がチェックする必要がないことを示すために使用される。プログラムされたＣＬＥからＲＥまでの遅延値は読出し転送のタイミングを制御するために使用される。
【００７２】
読出し／書込みビットは実行される転送のタイプ、読出しであるか書込みであるかを示すために使用される。データ読出しを実行する転送は読出しとしてプログラムされる必要がある。データ書込みを実行する転送、あるいはデータフェーズを持たない転送（例えば、ブロック消去）は書込みとしてプログラムされる必要がある。
【００７３】
一旦、ＮＡＮＤ制御およびアドレスレジスタに関連する値がプログラムされると、ＮＡＮＤフラッシュ転送が実行されよう。
【００７４】
ＮＡＮＤフラッシュ転送制御
ＮＡＮＤフラッシュ転送は、ＮＡＮＤ制御レジスタのチップセレクトビット中にプログラムされたチップセレクトへの読出しあるいは書込み転送で制御される。異なるチップセレクトへのアクセスはＮＡＮＤアクセスを実行しないであろう。ＮＡＮＤ転送制御のために使用されるアドレスの下位ビットは次の表に示すように、実行される動作を制御する。
【００７５】
【表２】
2004110785.tif 000004
【００７６】
転送に用いられるアドレス値はＮＡＮＤデバイスのアドレスとは無関係である。それは既にＮＡＮＤアドレス値レジスタ中にプログラムされている。外部バスへのアクセスが一旦認められると、内部制御状態機械は制御信号を駆動してＮＡＮＤフラッシュ転送を発生させる。読出しおよび書込みデータは、通常のＳＲＡＭ転送の場合のように、使用されるＡＨＢ（システムバス）転送およびＮＡＮＤフラッシュデバイスのサイズに依存して、両方向でバッファに収納される。
【００７７】
開始、コマンド２、および停止のアドレスへの転送はシステムバスの読出しあるいは書込みのいずれかを使用して実行されよう。読出しは未定義のデータを返すであろうが、それは無視しなければならない。書込み転送のデータ値はメモリコントローラによって使用されることはない。
【００７８】
開始アドレスは外部ＮＡＮＤ転送を開始するために使用される。プログラムされた制御およびアドレスフェーズは第１のデータフェーズまでは（それは含まない）実行されよう。読出し／書込みビットの値は転送が読出しであるか、書込みであるかを決定するために使用される。
【００７９】
注記
データフェーズなしのＮＡＮＤ転送は、要求されるチップセレクトの開始アドレスへの任意の値の単一システムバス書込みで開始されなければならない。システムバス読出しを使用してデータフェーズなしの転送を開始することによって予期せぬ振る舞いが生ずる可能性がある。
【００８０】
開始アドレスへの第２アクセスを実行することによって、例えばコピーバック・プログラムのように、制御およびアドレスフェーズの複数組を要求するＮＡＮＤ転送の実行が許容される。それらの転送については次の節でより詳細に説明する。
【００８１】
コマンド２アドレスは、転送が終了しなかったときに、書込みデータフェーズの最後に第２コマンドフェーズを挿入するために使用される。また、例えば、キャッシュプログラム転送の間に、更なる制御／アドレスフェーズが実行されよう。このコマンドは読出し転送の間は何ら影響せず（第２コマンドフェーズはデータフェーズの前に実行されるため）、ＮＡＮＤ制御レジスタの第２コマンドビットがセットされていれば、書込み転送の間だけ実行されよう。
【００８２】
停止アドレスは現在の転送を終了させるために使用され、ＮＡＮＤ状態レジスタのＮＡＮＤインタフェース・ビジービットが低レベルとしてサンプリングされ、転送がアイドル状態にあって安全に終了することができることを示すときに実行されなければならない。その転送についてはデータ値は使用されないので、停止アクセスを実行する前にデータフェーズを完了させなければならない。書込み転送の間は、もしもＮＡＮＤ制御レジスタの第２コマンドビットがセットされていれば、第２コマンドフェーズが実行されよう。
【００８３】
通常のデータフェーズ読出しおよび書込み転送は０ｘ０１１あるいはそれ以上のアドレスに対して実行される。これによって読出しおよび書込みがスタティック、ランダム、あるいは増分するアドレスに対して実行されるように許容される。ＮＡＮＤ読出し転送の間は、システムバス読出しのみが実行されよう。ＮＡＮＤ書込み転送の間は、システムバス読出しおよび書込みの両方が実行されて、別になった読出し転送を実行するためにチップセレクトをデアサートすることなしに、状態読出しが実行されることを許容する。
【００８４】
いくつかのＮＡＮＤ転送は、チップセレクトがアサート保持されている間に、複数のコマンドおよびアドレスフェーズが実行されることを要求する。これは、新しいコマンドおよびアドレスフェーズの組が実行されるたびに、開始アドレスにアクセスすることを通して可能であるが、ＮＡＮＤ制御およびアドレスレジスタは後続のフェーズに関する新しい値で更新されるべきである。ＮＡＮＤ状態レジスタのＮＡＮＤインタフェース・ビジービットは、ＮＡＮＤ制御およびアドレスレジスタに対して新しい値を書き込むことが安全である時点を決定するために使用される。このビットが高レベルであるとしてサンプリングされたときは、それはＮＡＮＤインタフェースがビジーで、レジスタは使用中のため更新できないことを示す。一旦、このビットが低レベルであるとしてサンプリングされれば、新しい値はＮＡＮＤ制御およびアドレスレジスタへ書き込まれよう。
【００８５】
注記
８ビットＮＡＮＤフラッシュデバイスに対して書込み転送の任意のシーケンスが許容されるが、１６ビットＮＡＮＤフラッシュデバイスへのバイト書込みは常に偶数個の転送のバーストで実行されなければならない。もしも奇数個のバイトが１６ビットＮＡＮＤフラッシュデバイスへ書き込まれれば、最後の外部データ書込み転送の上位バイトは未知の値となって、ソフトウエアはそのアドレスの半ワードが正しいデータで上書きされることを保証しなければならない。
【００８６】
注記
シーケンシャルな行読出し転送は行間にビジーフェーズを挿入する。これはソフトウエアによってＮＡＮＤフラッシュ状態レジスタを用いてチェックしなければならない。ハードウエアは１つの行の最後の読出しが実行されるときを検出することはできないためである。
【００８７】
ＮＡＮＤフラッシュ転送のタイプ
ＮＡＮＤフラッシュ転送の正確な順序は、それを開始するために使用されるシステムバス転送のタイプおよびＮＡＮＤ制御レジスタ中の設定に依存する：
−アドレスフェーズなしの転送は状態読出しであると推定される。これはデータフェーズのタイミングを制御するためにレディー出力を使用しないため、ＣＬＥからＲＥまでの遅延が使用される。
−第２コマンドフェーズおよびデータフェーズを伴う読出し転送はデータフェーズの前に第２コマンドフェーズを実行しよう。
−第２コマンドフェーズおよびデータフェーズを伴う書込み転送はデータフェーズの後で第２コマンドフェーズを実行しよう。
−状態およびＩＤ読出し以外のすべての読出しは、レディー出力がデアサートされ、ＮＡＮＤ制御レジスタの短い読出しビットがクリアされていれば任意のデータを読み戻す前にアサートされるのを待機する。
−停止アドレスを受信したすべての書込みは、転送を終了してデバイスへチップセレクトをデアサートする前に、すべてのデータおよびコマンドフェーズの後でレディー出力がデアサートされるのを待つ。
【００８８】
ＮＡＮＤフラッシュ転送中の他のメモリへのアクセス
ＳＲＡＭおよびＳＤＲＡＭデバイスと比較してＮＡＮＤデバイスのアクセスが長時間であるため、メモリ・インタフェースはＮＡＮＤ転送中のアイドル時間に他のメモリデバイスへのアクセスを許容する。例えば、ＮＡＮＤデバイスへの長時間のページ読出し／書込み動作の間に、命令あるいはデータのフェッチが実行されるのを許容する。あるいは長時間のページ・プログラム動作の間に他のシステム活動が発生するのを許容する。
【００８９】
注記
一時に１つのＮＡＮＤデバイスのみがアクセスされよう。
【００９０】
ＮＡＮＤ状態レジスタのＮＡＮＤインタフェース・ビジービットがそのインタフェースがアイドルであることを一旦表示すると、内部メモリコントローラのアービトレーションは、もし何らかのペンディングアクセスが存在すれば、ＳＲＡＭあるいはＳＤＲＡＭアクセスの実行を許容しよう。通常のアービトレーション・スキームが適用され、ＮＡＮＤアクセスを実行するシステムバスポートが外部メモリの制御を認められ次第、ＮＡＮＤアクセスが続行されよう。ＮＡＮＤ制御信号およびデバイスのチップセレクトは他のメモリデバイスへのアクセス中、安定の保持されよう。ＮＡＮＤ状態レジスタのＮＡＮＤ転送状態ビットはＮＡＮＤ転送が進行中であることを示す。
【００９１】
注記
一時に１つのシステムバスマスターのみがＮＡＮＤデバイスにアクセスする。ＮＡＮＤインタフェースがいつアイドル状態にあるかを決定するために状態ビットをチェックする。複数のシステムバスマスターによるＮＡＮＤへの同時アクセスは予期せぬ振る舞いを引き起こすかもしれない。
【００９２】
ＮＡＮＤフラッシュ転送エラー応答
次のような転送はシステムバスエラー応答を発生させよう：
−スタティックメモリ・コンフィギュレーションレジスタ中にＮＡＮＤフラッシュとしてセットされているが、ＮＡＮＤ制御レジスタのチップセレクトビットにプログラムされていないチップセレクトへのアクセス。これはＮＡＮＤ制御レジスタが現在のチップセレクトへのアクセスを実行するように正しくコンフィギュアされていないことを意味する。
−ＮＡＮＤインタフェース・ビジー状態レジスタビットがＨＩＧＨであって、ＮＡＮＤインタフェースがビジーで、ＮＡＮＤ制御およびアドレスレジスタが使用中で修正できないことを示しているときに、ＮＡＮＤ制御あるいはアドレスレジスタへ書込みを行なうこと。ＮＡＮＤインタフェース・ビジービットの状態は、ＮＡＮＤ制御あるいはアドレスレジスタへの書込みの前にチェックしなければならない。
−ＮＡＮＤ転送状態ビットがＨＩＧＨであって、ＮＡＮＤ転送が現在進行中であるため、タイミングパラメータが使用中であることを示しているときに、ＮＡＮＤタイミングレジスタに書込みすること。ＮＡＮＤ転送状態ビットの状態は、ＮＡＮＤタイミングレジスタへの書込みの前にチェックしなければならない。
【００９３】
ＮＡＮＤフラッシュ動作の影響
ＮＡＮＤフラッシュデバイスのタイミングは一般にＳＲＡＭおよびＳＤＲＡＭよりずっと低速である。このことは、ＮＡＮＤフラッシュ転送が比較的長時間にわたって、特にマイクロ秒からミリ秒にわたる読出し、プログラム、あるいは消去動作のためにデバイスがビジーである期間において、外部バスを使用するであろうことを意味する。
【００９４】
ＮＡＮＤフラッシュ・インタフェースは、ＮＡＮＤフラッシュ転送中のアイドル期間にＳＲＡＭおよびＳＤＲＡＭアクセスの実行を許容するように設計されているが、ＮＡＮＤアクセスのコマンドおよびアドレスフェーズが実行される間にはなお大きな遅延が存在しよう。ＳＤＲＡＭリフレッシュはＮＡＮＤフラッシュアクセスによって影響されず、必要なときには常に実行されよう。
【００９５】
システム設計者は、高速のＳＲＡＭやＳＤＲＡＭ、およびデータ転送のために外部バスを定常的に使用するデバイスをも含むシステム中でのＮＡＮＤフラッシュアクセスの影響を考慮に入れていなければならない。
【００９６】
以上の説明から明らかなように、本発明の好適な実施の形態のメモリコントローラは、制御値あるいはデバイス特性についてのハード的に符号化された情報を必要とせずに、ＮＡＮＤフラッシュアクセスを実行するために要求される転送の必要なシーケンスを容易に生成できるようにするための十分なハードウエアを構築されて有している。必要な転送シーケンスをインタフェースにデバイスのタイミング要求と一緒にプログラムし、またデバイスに依存するアクセス制御値を供給するためにソフトウエアが用いられる。従って、外部転送を開始するために必要とされるのは、メモリコントローラへの単純な読出しあるいは書込みだけとなり、メモリコントローラ内部のハードウエアは第１データ転送の前に、プログラムされたコマンドおよびアドレスフェーズを自動的に実行する。ＮＡＮＤフラッシュ・インタフェースのハードウエアとソフトウエア制御との間のこのバランスは効率的な転送が実行されることを可能とし、システムバスの利用は外部インタフェースによってより少なく要求され、更に、将来のＮＡＮＤフラッシュデバイスに対するサポートは、ハードウエアを制御するソフトウエアに対する更新を必要とするだけとなる。
【００９７】
本発明の好適な実施の形態では、ＮＡＮＤデバイスのアクセス速度がＳＲＡＭおよびＳＤＲＡＭデバイスと比べて低速なため、インタフェースは、ＮＡＮＤ転送がアイドル状態にあるときにＳＲＡＭおよびＳＤＲＡＭアクセスを外部バス上で実行できるように実現されており、他のメモリへのアクセスが完了次第、ＮＡＮＤ転送が継続されるようになっている。このことによって、さもなければ数ミリ秒にわたって外部バスを占有するであろう内部動作をＮＡＮＤフラッシュが実行する間に、ＳＲＡＭあるいはＳＤＲＡＭアクセスを行なうことが可能となるため、外部メモリ・インタフェースの効率が向上する。例えば、１つの特別な実施例では、読出しビジー時間（ｔＲ−図８Ａ参照）は１０マイクロ秒程度であり、書込みプログラム時間（ｔＰＲＯＧ−図８Ｂ参照）は２００ないし１０００マイクロ秒程度であり、消去時間（ブロック消去コマンドに関して、図８Ａおよび８Ｂには示されていない）は２ないし１０ミリ秒である。更にその他の遅延もある。例えば、状態読出しデータが利用可能になるまでに要する時間は例えば、５０ナノ秒程度である。
【００９８】
まとめると、ＮＡＮＤフラッシュメモリデバイスとの間で転送を制御するための、好適な実施の形態中のメモリコントローラに備えられたハードウエアは１つの状態機械およびＮＡＮＤフラッシュデバイスを制御するための外部ピン、ＮＡＮＤフラッシュ制御信号のタイミングを制御するために使用されるタイミングレジスタのバンク、およびコマンドおよびアドレス値、および必要な転送シーケンスを記憶するために使用される制御レジスタのバンクを含む。次にソフトウエアが用いられて、システム初期化の段階で一度だけタイミングレジスタをコンフィギュアし、各々のＮＡＮＤフラッシュアクセスについて制御レジスタをコンフィギュアし、次にメモリコントローラとの間でデータの書込みまたは読出し転送を実行する。
【００９９】
このメモリコントローラは独立したＮＡＮＤフラッシュメモリコントローラ（すなわち、ＳＲＡＭメモリ・インタフェースおよびＳＤＲＡＭメモリ・インタフェースなしで）として具体化されるか、あるいは図面に示すように、ＳＲＡＭおよびＳＤＲＡＭのようなデバイスもサポートする１つのメモリコントローラの内部に取り込まれることができることを理解されよう。
【０１００】
注意すべき点は好適な実施の形態のメモリコントローラによって提供されるＮＡＮＤフラッシュ・インタフェースは使用されるプロセッサのアーキテクチャやシステムバスとは独立していること、およびメモリコントローラブロックが、デバイスと何らかのＮＡＮＤフラッシュメモリとの間のインタフェースとして使用される任意のシステムに適用できることである。
【０１０１】
特別な実施の形態についてこれまで説明してきたが、本発明はそれらに限定されないこと、またそれらに対する多くの修正および追加が本発明の範囲の中で行い得ることは明らかであろう。例えば、特許請求の範囲に提示する特徴の各種組合せは、本発明のスコープから外れることなしに、独立項の特徴を構成することができる。
【図面の簡単な説明】
【図１】ＮＡＮＤフラッシュメモリデバイスを制御するための従来技術のメモリコントローラを示すブロック図。
【図２】図１の従来技術のデバイスによって実行されるプロセスを示すフロー図。
【図３】本発明の好適な実施の形態に従うメモリコントローラを採用したデータ処理システムを模式的に示すブロック図。
【図４】ＮＡＮＤフラッシュメモリデバイスとの間で転送を制御するための、本発明の好適な実施の形態のメモリコントローラを示すブロック図。
【図５】本発明の好適な実施の形態に従って、ＮＡＮＤフラッシュメモリデバイスとの間で転送を制御するために実行されるプロセスを示すフロー図。
【図６】好適な実施の形態のメモリコントローラの制御レジスタをプログラムするために取られる工程を示すフロー図。
【図７】好適な実施の形態のメモリコントローラのＮＡＮＤメモリ・インタフェースの部品を示すブロック図。
【図８Ａ】本発明の好適な実施の形態に従う、読出し転送を示すタイミング図。
【図８Ｂ】本発明の好適な実施の形態に従う、書込み転送を示すタイミング図。
【符号の説明】
１０　メモリコントローラ
２０　システムバス・インタフェース
３０　ＳＲＡＭメモリ・インタフェース
４０　ＳＤＲＡＭメモリ・インタフェース
３２，４２　経路
５２　アドレスおよびデータバス
６０　ＮＡＮＤプログラマブル・タイミングレジスタ
６２　経路
７０　ＮＡＮＤプログラマブル制御レジスタ
８０　ＮＡＮＤメモリ・インタフェース
８４　経路
８５　ＮＡＮＤフラッシュメモリ
８６　経路
９０　ＳＲＡＭ
９５　ＳＤＲＡＭ
１００　メモリコントローラ
１１０　グルーロジック
１２０　アドレスおよびデータバス
３００　システムバス
３１０　プロセッサコア
３２０　アービタ
３３０　内部メモリデバイス
７００　タイミング・カウンタ
７１０　ＮＡＮＤ転送状態機械
７３０　入力／出力レジスタ
７４０　データバスバッファおよび制御ロジック
【図１】
2004110785.tif 000005
【図２】
2004110785.tif 000006
【図３】
2004110785.tif 000007
【図４】
2004110785.tif 000008
【図５】
2004110785.tif 000009
【図６】
2004110785.tif 000010
【図７】
2004110785.tif 000011
【図８Ａ】
2004110785.tif 000012
【図８Ｂ】
2004110785.tif 000013