(57)【要約】【課題】集積回路の外部インターフェイスを制御するように構成された周辺コンポーネントを提供する。【解決手段】周辺コンポーネントは、例えば、フラッシュメモリインターフェイスユニットのようなメモリインターフェイスユニットである。周辺コンポーネントへの内部インターフェイスは、外部インターフェイスへの／からのデータ転送と、周辺コンポーネントへのコントロール通信との間で共有される。周辺コンポーネントは、インターフェイスを経て転送を行うためのコマンドのセットを記憶するように構成されたコマンドキューを含む。コントロール回路がコマンドキューに結合されて、コマンドを読み取り、そのコマンドに応答してインターフェイスを経て転送を生じさせるようにインターフェイスコントローラと通信する。【選択図】図１
2011146035.tif 000002
【特許請求の範囲】
【請求項１】
集積回路の外部インターフェイスを制御する装置において、
前記外部インターフェイスを経て通信するように構成されたコントローラと、
前記外部インターフェイスを経ての転送を生じさせる複数のコマンドを記憶するように構成されたコマンドキューと、
前記コマンドキュー及びコントローラに結合され、前記コマンドキューから複数のコマンドを読み取るように構成されると共に、前記転送を遂行するための前記コントローラにおける対応オペレーションを開始するように構成されたコントロール回路と、
を備えた装置。
【請求項２】
前記コントローラ及びコントロール回路に結合された複数のコントロールレジスタを更に備え、前記コントローラは、前記複数のコントロールレジスタのコンテンツに応答して前記外部インターフェイスを経て通信するように構成され、前記複数のコマンドは、前記コントロール回路が前記複数のコントロールレジスタの１つ以上を更新するようにさせる１つ以上のコマンドを含む、請求項１に記載の装置。
【請求項３】
前記コントロール回路は、前記集積回路内の内部インターフェイスを経てオペレーションを受け取るように構成され、前記オペレーションは、前記複数のコントロールレジスタのうちの１つの直接的更新を指示し、前記コントロール回路は、前記オペレーションを受け取るのに応答して前記コントロールレジスタの１つを更新するように構成される、請求項２に記載の装置。
【請求項４】
前記コントロール回路は、更に、前記内部インターフェイスを経て前記複数のコマンドを受け取るように構成され、前記コントロール回路は、前記複数のコマンドを受け取るのに応答して前記コマンドキューへ前記複数のコマンドを書き込むように構成される、請求項３に記載の装置。
【請求項５】
前記外部インターフェイスはメモリインターフェイスであり、前記複数のコマンドは、前記コントローラが、前記メモリインターフェイスに結合された１つ以上のメモリ装置へアドレスを駆動するようにさせる第１コマンドを含む、請求項１に記載の装置。
【請求項６】
前記複数のコマンドは、前記コントローラが、指定の１つ以上のチップイネーブル信号を１つ以上のメモリ装置に駆動するようにさせる第２コマンドを含む、請求項５に記載の装置。
【請求項７】
前記複数のコマンドは、前記コントローラが、前記集積回路と１つ以上のメモリ装置との間でデータのページを転送するようにさせる第２コマンドを含む、請求項５に記載の装置。
【請求項８】
前記メモリインターフェイスは、フラッシュメモリインターフェイスである、請求項５に記載の装置。
【請求項９】
第２の複数のコマンドを記憶するように構成されたマクロメモリを更に備え、前記コマンドキューにおける複数のコマンドは、前記複数のコマンドを遂行するのに応答して前記コマンドキューから除去され、前記第２の複数のコマンドは、前記第２の複数のコマンドが遂行されたときにも前記マクロメモリに留まる、請求項１に記載の装置。
【請求項１０】
前記コマンドキューにおける複数のコマンドのうちの少なくとも１つは、前記マクロメモリにおけるコマンドを遂行させるマクロコマンドである、請求項９に記載の装置。
【請求項１１】
前記マクロコマンドは、実行されるべきマクロメモリにおける第１コマンドのアドレスと、前記第１コマンドで始まる読み取られるべきワードの数とを指定し、前記第２の複数のコマンドは、コマンドキューへ戻るリターンコマンドを除外する、請求項１０に記載の装置。
【請求項１２】
前記マクロコマンドは、更に、遂行されるべき前記第２の複数のコマンドの繰り返し数を指示するループカウントオペランドを指定する、請求項１１に記載の装置。
【請求項１３】
前記第２の複数のコマンドは、マクロメモリ内の第２コマンドの第２アドレス及び読み取られるべきワードの第２の数を指定する第２のマクロコマンドを含み、前記コントロール回路は、前記第２コマンドで始まる前記第２の数のワードにおけるコマンドを遂行するのに続いて前記コマンドキューへ戻るように構成される、請求項１２に記載の装置。
【請求項１４】
前記フラッシュメモリインターフェイスユニットは、前記コマンドキュー及びマクロメモリにおけるコマンドによりアクセス可能なオペランドデータを記憶するように構成されたオペランドキューを備えた、請求項１３に記載の装置。
【請求項１５】
前記複数のコマンドを前記コマンドキューへロードするように構成されたプロセッサを更に備えた、請求項１に記載の装置。
【請求項１６】
第２の複数のコマンドを記憶するように構成されたマクロメモリを更に備え、前記コマンドキュー内の複数のコマンドにおけるマクロコマンドは、前記第２の複数のコマンドを遂行させ、更に、前記プロセッサは、前記第２の複数のコマンドを前記マクロメモリへロードするように構成される、請求項１５に記載の装置。
【請求項１７】
前記コマンドキューにおける複数のコマンド及び前記マクロメモリにおける第２の複数のコマンドに対してアクセス可能な複数のオペランドを記憶するように構成されたオペランドキューを更に備え、前記プロセッサは、前記複数のオペランドを前記オペランドキューにロードするように構成される、請求項１６に記載の装置。
【請求項１８】
集積回路のメモリインターフェイスユニットにおけるコマンドキューから複数のコマンドを読み取るステップと、
コントローラが、前記コマンドキュー内の複数のコマンドに応答して、前記集積回路の外部インターフェイスを経て、その外部インターフェイスに結合された１つ以上のメモリ装置と通信するようにさせるステップであって、前記複数のコマンドは、前記１つ以上のメモリ装置と前記集積回路との間にメモリ転送を生じさせ、そのメモリ転送は、１つ以上のデータページを含むものであるステップと、
を備えた方法。
【請求項１９】
前記複数のコマンドは、前記コントローラが前記１つ以上のメモリ装置へアドレスを送信するようにさせる第１コマンドと、前記コントローラが前記１つ以上のメモリ装置へ１組のチップイネーブルを送信するようにさせる第２コマンドと、前記コントローラがデータのページを転送するようにさせる少なくとも１つの第３コマンドとを含む、請求項１８に記載の方法。
【請求項２０】
前記複数のコマンドは、前記コントローラが、前記インターフェイスを経て１つ以上のメモリ装置へ対応コマンドを送信するようにさせる第１コマンドを含み、その対応コマンドは、１つ以上のメモリ装置に対してメモリインターフェイスプロトコルで定義される、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に係り、より詳細には、集積回路の周辺コンポーネントにおけるコマンド処理に係る。
【背景技術】
【０００２】
顕著なデータ帯域巾をもつ周辺インターフェイスコントローラにおいて、発生する課題の１つは、外部プロセッサから周辺インターフェイスコントローラへコントロール入力を与えることである。典型的に、周辺インターフェイスコントローラとメモリとの間でデータを転送するのと同じ周辺コントローラへの内部インターフェイスを使用して、外部プロセッサからコントロール入力を与えている（例えば、周辺インターフェイスコントローラのレジスタを制御する一連の書き込みを経て）。データ転送が行われる間には、メモリ対周辺インターフェイスがデータ転送で飽和される。従って、現在のデータ転送が完了するまで、データ転送の次のセットをアレンジするコントロール入力が実際上ロックされてしまう。コントロール入力が与えられる間には、周辺インターフェイスコントローラにより制御される外部の周辺インターフェイスがアイドル状態となる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
周辺対メモリインターフェイスにおける競合を減少するための１つのメカニズムは、周辺インターフェイスコントローラのプロセッサが、周辺インターフェイスコントローラのハードウェアを制御するプログラムを実行することを含む。しかしながら、このようなプログラムは、多くの点で高価であり、即ち（個別のコンポーネントとして、又は周辺インターフェイスコントローラ設計へ合体できる知的プロパティとして）プロセッサを取得するための金銭に関して；プロセッサが含まれるときに周辺インターフェイスコントローラによって占有されるスペースに関して；及びプロセッサが消費する電力に関して；高価である。更に、実行されるプログラムは、システムメモリに記憶され、従って、インストラクションのフェッチは、周辺対メモリインターフェイスにおけるデータ転送と競合する。
【課題を解決するための手段】
【０００４】
一実施形態において、集積回路は、集積回路の外部インターフェイスを制御するように構成された周辺コンポーネントを備えている。例えば、周辺コンポーネントは、フラッシュメモリインターフェイスユニットのようなメモリインターフェイスユニットである。周辺コンポーネントへの内部インターフェイスは、外部インターフェイスへの／からのデータ転送と、周辺コンポーネントへのコントロール通信との間で共有される。周辺コンポーネントは、インターフェイスを経て転送を行うためのコマンドのセットを記憶するように構成されたコマンドキューを含む。コントロール回路は、コマンドキューに結合されて、コマンドを読み取り、そのコマンドに応答してインターフェイスを経て転送を生じさせるようにインターフェイスコントローラと通信する。
【０００５】
一実施形態において、コマンドキューのコマンドは、内部インターフェイスを経てデータ転送が行われないときにコマンドキューへダウンロードされる。例えば、現在の転送が完了したときに、次の転送を遂行するために、コマンドキューにコマンドを得ることができる。ある実施形態では、内部インターフェイスにおけるデータ転送とコントロール転送との間の競合に直面しても、内部及び外部インターフェイスを効率的に使用することができる。
【０００６】
以下、添付図面を参照して、本発明を詳細に説明する。
【図面の簡単な説明】
【０００７】
【図１】集積回路、メモリ及びフラッシュメモリの一実施形態のブロック図である。
【図２】図１に示すフラッシュメモリインターフェイスの一実施形態のブロック図である。
【図３】書き込みオペレーションを受けるのに応答する図２に示すフラッシュメモリインターフェイスコントロール回路の一実施形態のオペレーションを示すフローチャートである。
【図４】フラッシュメモリインターフェイスコントロール回路によりサポートされるコマンドの一実施形態を示すテーブルである。
【図５】コマンド先入れ先出しバッファ（ＦＩＦＯ）からコマンドを読み取るのに応答する図２に示すフラッシュメモリインターフェイスコントロール回路の一実施形態のオペレーションを示すフローチャートである。
【図６】マクロメモリの規範的使用のブロック図である。
【図７】図１に示すプロセッサの一実施形態により実行されるフラッシュメモリインターフェイスコードの一実施形態のオペレーションを示すフローチャートである。
【図８】図１に示す装置を備えたシステムの一実施形態のブロック図である。
【図９】コンピュータアクセス可能な記憶媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【０００８】
本発明は、種々の変更や代替を受けるが、その特定の実施形態を一例として図面に示して以下に詳細に説明する。しかしながら、図面及びそれを参照した詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、それどころが、特許請求の範囲に規定された本発明の精神及び範囲内に包含される全ての変更、等効物及び代替物を網羅するものとする。ここに使用する見出しは、編成のためのものに過ぎず、説明の範囲を限定するためのものではない。本出願全体にわたり使用される「してもよい(may)」という語は、寛容な意味（即ち、潜在性をもつという意味）で使用され、強制的な意味（即ち、しなければならないという意味）ではない。同様に、「含む(include)」、「含んでいる(including)」、及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【０００９】
種々のユニット、回路又は他のコンポーネントは、１つ又は複数のタスクを遂行するように「構成される」と記述される。このような状況において、「構成される」とは、オペレーション中に１つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット／回路／コンポーネントは、それが現在オンでなくてもタスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路、及び／又はオペレーションを実施するために実行可能なプログラムインストラクションを記憶するメモリを含む。メモリは、スタティック又はダイナミックランダムアクセスメモリのような揮発性メモリ、及び／又は光学又は磁気ディスク記憶装置、フラッシュメモリ、プログラム可能なリードオンリメモリ、等の不揮発性メモリを含むことができる。同様に、種々のユニット、回路又は他のコンポーネントは、説明の便宜上、１つ又は複数のタスクを遂行すると記述される。このような記述は、「構成される」という句を含むものと解釈されるべきである。１つ以上のタスクを遂行するように構成されるユニット／回路／コンポーネントを表現することは、そのユニット／回路／コンポーネントに対して３５ＵＳＣ§１１２、パラグラフ６の解釈を引用することを特に意図していない。
【００１０】
図１を参照すれば、外部メモリ１２及び１つ以上のフラッシュメモリ装置２８Ａ−２８Ｂに結合された集積回路１０の一実施形態のブロック図が示されている。図示された実施形態では、集積回路１０は、メモリコントローラ１４と、システムインターフェイスユニット（ＳＩＵ）１６と、コンポーネント１８Ａ−１８Ｂのような１組の周辺コンポーネントと、フラッシュメモリインターフェイスユニット３０と、中央ＤＭＡ（ＣＤＭＡ）コントローラ２０と、レベル１（Ｌ１）キャッシュ２４、レベル２（Ｌ２）キャッシュ２６を含むプロセッサ２２と、入力／出力（Ｉ／Ｏ）プロセッサ（ＩＯＰ）３２とを備えている。メモリコントローラ１４は、メモリ１２が結合されるメモリインターフェイスに結合されると共に、ＳＩＵ１６にも結合される。ここに示す実施形態では、ＣＤＭＡコントローラ２０、Ｌ２キャッシュ２６及びプロセッサ２２（Ｌ２キャッシュ２６を経て）もＳＩＵ１６に結合される。Ｌ２キャッシュ２６は、プロセッサ２２に結合され、そしてＣＤＭＡは、コンポーネント１８Ａ−１８Ｂ、フラッシュメモリインターフェイスユニット３０、及びＩＯＰ３２に結合される。１つ以上の周辺コンポーネント１８Ａ−１８Ｂ、例えば、周辺コンポーネント１８Ａは、外部インターフェイスに結合されてもよい。他の実施形態では、他のコンポーネント（例えば、他の周辺コンポーネント）がＳＩＵ１６に直結されてもよい。
【００１１】
ＣＤＭＡコントローラ２０は、メモリ１２、種々の周辺コンポーネント１８Ａ−１８Ｂ及び／又はフラッシュメモリインターフェイスユニット３０の間でＤＭＡオペレーションを遂行するように構成される。種々の実施形態は、ＣＤＭＡコントローラ２０を経て結合された多数の周辺コンポーネント及び／又はフラッシュメモリインターフェイスユニット３０を含むことができる。プロセッサ２２（特に、プロセッサ２２により実行されるインストラクション）は、ＤＭＡオペレーションを遂行するようにＣＤＭＡコントローラ２０をプログラムする。種々の実施形態は、ＣＤＭＡコントローラ２０を種々の仕方でプログラムすることができる。例えば、遂行されるべきＤＭＡオペレーションを記述するＤＭＡ記述子がメモリ１２に書き込まれ、ＣＤＭＡコントローラ２０は、メモリ１２内のＤＭＡ記述子を探索するようにプログラムできるレジスタを含む。ＤＭＡチャンネルに対して複数の記述子が生成され、それら記述子に記述されたＤＭＡオペレーションが、指定されたように遂行される。或いは又、ＣＤＭＡコントローラ２０は、遂行されるべきＤＭＡオペレーションを記述するようにプログラムできるレジスタを含んでもよく、又、ＣＤＭＡコントローラ２０をプログラムすることは、それらレジスタに書き込みすることを含んでもよい。
【００１２】
一般的に、ＤＭＡオペレーションは、インストラクションを実行するプロセッサとは別のハードウェアにより遂行されるソースからターゲットへのデータの転送である。ハードウェアは、プロセッサにより実行されるインストラクションを使用してプログラムできるが、転送それ自体は、プロセッサにおけるインストラクションの実行とは独立してハードウェアにより遂行される。ソース及びターゲットの少なくとも一方は、メモリでよい。メモリは、システムメモリ（例えば、メモリ１２）、フラッシュメモリ装置２８Ａ−２８Ｂでもよいし、又はある実施形態では、集積回路１０の内部メモリでもよい。あるＤＭＡオペレーションは、ソース及びターゲットとしてメモリを有する（例えば、メモリ１２とフラッシュメモリ装置２８Ａ−２８Ｂとの間のＤＭＡオペレーション、或いはメモリ１２の１つのブロックから別のブロックへのコピーオペレーション）。他のＤＭＡオペレーションは、ソースまたはターゲットとして周辺コンポーネントを有する。周辺コンポーネントは、ＤＭＡデータを転送する際に通る又はＤＭＡデータを受信する際に通る外部インターフェイスに結合される。例えば、周辺コンポーネント１８Ａは、ＤＭＡデータを転送する際に通る又はＤＭＡデータを受信する際に通るインターフェイスに結合される。従って、ＤＭＡオペレーションは、ＣＤＭＡコントローラ２０がソースからデータを読み取って、そのデータを行先へ書き込むことを含む。データは、ＤＭＡオペレーションの一部分としてＣＤＭＡコントローラ２０を経て流れる。特に、メモリ１２からのＤＭＡ読み取りのためのＤＭＡデータは、メモリコントローラ１４を経、ＳＩＵ１６を通り、ＣＤＭＡコントローラ２０を経て、周辺コンポーネント１８Ａ−１８Ｂ又はフラッシュメモリインターフェイスユニット３０へ流れる（又、もしあれば、周辺コンポーネントが結合されたインターフェイスも経て）。メモリへのＤＭＡ書き込みのためのデータは、逆方向に流れる。
【００１３】
一実施形態において、プロセッサ２２及び又はＩＯＰ３２によって実行されるインストラクションは、プログラムされた入力／出力（ＰＩＯ）オペレーションと称される読み取り及び／又は書き込みオペレーションを使用して周辺コンポーネント１８Ａ−１８Ｂ及びフラッシュメモリインターフェイスユニット３０とも通信する。ＰＩＯオペレーションは、集積回路１０により周辺コンポーネント１８Ａ−１８Ｂ又はフラッシュメモリインターフェイスユニット３０（より詳細には、コンポーネントのレジスタ又は他の読み取り／書き込み可能なリソース）へマップされたアドレスを有する。このアドレスマッピングは、アドレススペースに固定されてもよいし又はプログラム可能であってもよい。或いは又、ＰＩＯオペレーションは、メモリ読み取り／書き込みオペレーションとは区別できる形態で送信されてもよい（例えば、ＳＩＵ１６におけるメモリ読み取り／書き込みオペレーションとは異なるコマンドエンコーディングを使用して、サイドバンド信号、又はメモリ対ＰＩＯを指示するコントロール信号を使用して、等々）。又、ＰＩＯ送信は、このような実施形態に対して、ＰＩＯアドレススペース内の周辺コンポーネント１８Ａ−１８Ｂ又はフラッシュメモリユニット３０（及びアドレスリソース）を識別するアドレスを含んでもよい。
【００１４】
一実施形態では、ＰＩＯオペレーションは、ＣＤＭＡコントローラ２０と同じ相互接続を使用し、そして周辺コンポーネント１８Ａ−１８Ｂ及びフラッシュメモリインターフェイスユニット３０に対してＣＤＭＡコントローラ２０を通して流れる。従って、ＰＩＯオペレーションは、プロセッサ２２によりＳＩＵ１６を経て（この実施形態では、Ｌ２キャッシュ２６を通して）ＣＤＭＡコントローラ２０へ及びターゲットとする周辺コンポーネント／フラッシュメモリインターフェイスユニットへ発生することができる。同様に、ＩＯＰ３２は、ＰＩＯオペレーションをＣＤＭＡコントローラ２０へ発生し、これは、ＰＩＯオペレーションを、同じ相互接続を経て周辺コンポーネント１８Ａ−１８Ｂ又はフラッシュメモリインターフェイスユニット３０へ送信する。
【００１５】
従って、周辺コンポーネント１８Ａ−１８Ｂ又はフラッシュメモリインターフェイスユニット３０への／からのＤＭＡオペレーションのためのデータ転送は、同じ周辺コンポーネント１８Ａ−１８Ｂ又はフラッシュメモリインターフェイスユニット３０への／からのＰＩＯオペレーションと競合することがある。例えば、フラッシュメモリインターフェイスユニット３０は、フラッシュメモリ装置２８Ａ−２８Ｂへの／からのメモリ転送を遂行するためにＰＩＯオペレーションを経てプログラムされる。書き込みオペレーションについては、ＣＤＭＡコントローラ２０は、フラッシュメモリインターフェイスユニット３０へ書き込むべきデータのＤＭＡを行う。読み取りオペレーションについては、ＣＤＭＡコントローラ２０は、フラッシュメモリインターフェイスユニット３０から読み取るべきデータのＤＭＡを行う。一実施形態では、フラッシュメモリ装置２８Ａ−２８Ｄは、装置への／からのデータページ転送をサポートする。ページのサイズは、装置に依存し、メモリ１２に対する仮想／物理アドレス変換に使用されるページサイズと同じでなくてもよい。例えば、５１２バイト、２０４８バイト、及び４０９６バイトのページサイズがしばしば使用される。従って、この状況では、ページは、メモリ装置に対するデータ転送の単位である。
【００１６】
フラッシュメモリインターフェイスユニット３０は、データページ転送を遂行するようにプログラムされ、ＣＤＭＡユニット２０は、データを転送するためのＤＭＡオペレーションを遂行する。複数のページを転送すべき場合には、付加的なＰＩＯオペレーションを使用して、次の転送を遂行するようにフラッシュメモリインターフェイスユニット３０をプログラムすることができる。しかしながら、ＤＭＡオペレーションは、現在ページが完了するまで付加的なＰＩＯオペレーションを実際上ロックアウトする。従って、次のページのためにフラッシュメモリインターフェイスユニット３０をプログラムする間に経過する時間が、フラッシュメモリ装置へのインターフェイスにアイドル時間を生じさせる。
【００１７】
一実施形態では、フラッシュメモリインターフェイスユニット３０は、コマンドキューをサポートする。転送されるべきページのセットに対してフラッシュメモリインターフェイスユニット３０をプログラムするコマンドは、コマンドキューにキューイングされる。第１ページに対するＤＭＡオペレーションが開始すると、その後のページに対してフラッシュメモリインターフェイスユニット３０をプログラムするためのデータがコマンドキューに予め記憶される。従って、フラッシュメモリインターフェイスユニット３０をプログラムするＰＩＯオペレーションと、データを転送するＤＭＡオペレーションとの間に競合が生じることはない。ＣＤＭＡユニット３０が現在ページに対するＤＭＡオペレーションを完了する間に転送されるべき次のページに対してフラッシュメモリコントローラ３０を構成するためにコマンドキューからのコマンドを処理できることによりフラッシュメモリ装置２８Ａ−２８Ｂへのインターフェイスの利用を増大することができる。
【００１８】
一実施形態において、フラッシュメモリインターフェイスユニット３０は、１つ以上のマクロを記憶するためのマクロメモリをサポートする。マクロは、マクロコマンドを経て呼び出される２つ以上のコマンドのシーケンスである。例えば、マクロコマンドは、コマンドキューに書き込まれ、マクロコマンドがフラッシュメモリインターフェイスユニット３０により遂行されるときにマクロを呼び出すことができる。頻繁に使用されるコマンドシーケンスを実施するマクロは、マクロメモリへダウンロードされ、従って、その後にダウンロードする必要があるのは、少数のコマンドだけである。即ち、マクロコマンドは、マクロに記憶されるコマンドを繰り返し書き込むのではなく、コマンドキューに書き込まれる。一実施形態では、マクロコマンドは、マクロのスタートアドレス及びマクロにおけるワードの数を指定する。ワード数がマクロから読み取られ、それに対応するコマンドが遂行されると、そのマクロコマンド後のコマンドキューの次のコマンドが遂行される。従って、一実施形態では、マクロをより高密度にできるように、マクロにおけるリターンコマンドが回避される。他の実施形態は、スタートアドレス及びコマンドの数をオペランドとして使用する。更に別の実施形態は、リターンコマンドを実施し、マクロコマンドは、スタートアドレスをオペランドとして含む（しかし、ワード／コマンドカウントはそうではない）。一実施形態では、マクロコマンドは、ループカウントオペランドも含む。ループカウントオペランドは、遂行されるべきマクロの繰り返し数を指定する。従って、マクロコマンドを遂行することは、スタートアドレスで始まるワードの数を読み取り、ループカウントの回数だけ繰り返して、コマンドを遂行し、次いで、マクロコマンド後のコマンドキュー内の次のコマンドへと進むことを含む。
【００１９】
コマンドキュー内のコマンド及び／又はマクロメモリ内のコマンドは、それらのオペレーションを制御するためにオペランドを使用する。ある場合には、オペランドは、コマンドキューに記憶される。他の場合には、オペランドは、オペランドキューに記憶される。コマンドキュー又はマクロメモリ内のコマンドは、フラッシュメモリインターフェイスユニット３０がオペランドキューからオペランドをロードしてオペランドに基づいて動作することを指定する。オペランドキューは、一般的マクロに対するインスタンス特有のデータ（例えば、フラッシュメモリアドレス、チップイネーブル、等）を供給するためにマクロと共に使用される。同様に、オペランドキューは、コマンドキュー内のコマンドに対するオペランドを供給する。
【００２０】
ここで使用するメモリ転送とは、（メモリ装置へのインターフェイスを経ての）メモリ装置への／からのデータの転送を指す。従って、フラッシュメモリ装置２８Ａ−２８Ｂへの／からのメモリ転送は、フラッシュメモリ装置２８Ａ−２８Ｂとフラッシュメモリインターフェイスユニット３０との間のインターフェイスを経て行われる。同様に、メモリ１２への／からのメモリ転送は、メモリ１２とメモリコントローラ１４との間のインターフェイスを経て行われる。メモリ転送は、メモリ装置によって規定されたプロトコルを経て行われる。更に、コマンドは、周辺コンポーネント（例えば、フラッシュメモリインターフェイスユニット３０）のハードウェアにより、該ハードウェアで遂行される特定のオペレーションを指定するものと解釈される１バイト以上のデータを指す。
【００２１】
一般的に、周辺コンポーネントは、プロセッサと共に集積回路１０に含まれるべき望ましい回路でよい。周辺コンポーネントは、集積回路１０の他のコンポーネントが周辺コンポーネントと通信するようにする既定の機能及びインターフェイスを有する。例えば、周辺コンポーネントは、ディスプレイコントローラ、グラフィックプロセッサ、等のビデオコンポーネント；デジタル信号プロセッサ、ミクサ、等のオーディオコンポーネント；イーサネットメディアアクセスコントローラ（ＭＡＣ）又はワイヤレス忠実度（ＷｉＦｉ）コントローラのようなネットワーキングコンポーネント；ユニバーサルシリアルバス（ＵＳＢ）、周辺コンポーネント相互接続（ＰＣＩ）又はその変形、例えば、ＰＣＩエクスプレス（ＰＣＩｅ）、シリアル周辺インターフェイス（ＳＰＩ）、フラッシュメモリインターフェイス、等の種々のインターフェイスを経て通信するためのコントローラ；を含む。フラッシュメモリインターフェイスユニット３０は、周辺コンポーネントの一例であり、ここに述べる周辺コンポーネントの一般的プロパティは、フラッシュメモリインターフェイスユニット３０に適用することができる。
【００２２】
プロセッサ２２は、インストラクションセットアーキテクチャーを実施し、そのインストラクションセットアーキテクチャーで規定されるインストラクションを実行するように構成される。プロセッサ２２は、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、アウトオブオーダー、インオーダー、思索的、非思索的、又はその組み合わせを含むマイクロアーキテクチャーを使用する。プロセッサ２２は、回路を含み、又、マイクロコード技術を実施するのも任意である。ここに示す実施形態では、プロセッサ２２は、プロセッサ２２によって使用されるデータ及びインストラクションを記憶するＬ１キャッシュ２４を含む。個別のＬ１データ及びインストラクションキャッシュが存在してもよい。Ｌ１キャッシュは、任意の容量及び編成（群連想、直接マップ、等）を有するものでよい。ここに示す実施形態では、Ｌ２キャッシュ２６も設けられる。Ｌ２キャッシュ２６は、Ｌ１キャッシュと同様の容量及び編成を有する。
【００２３】
同様に、ＩＯＰ３２は、インストラクションセットアーキテクチャーを実施し、そのインストラクションセットアーキテクチャーで規定されたインストラクションを実行するように構成される。ＩＯＰ３２により実施されるインストラクションセットアーキテクチャーは、プロセッサ２２により実施されるインストラクションセットアーキテクチャーと同じである必要はない。一実施形態では、ＩＯＰ３２は、プロセッサ２２より低電力低性能のプロセッサでよい。ＩＯＰ３２は、種々のインターフェイス問題を取り扱う（望ましいオペレーション、あるエラーハンドリング、等を遂行するように周辺コンポーネントを構成する）。ＩＰＯ３２は、フラッシュメモリインターフェイスユニット３０のコマンドキューにコマンドを書き込み、フラッシュメモリインターフェイスユニット３０のマクロメモリにマクロを書き込み、及び／又はフラッシュメモリインターフェイスユニット３０のオペランドキューにオペランドを書き込むためのインストラクションを実行する。ＩＯＰ３２は、更に、他の周辺コンポーネント１８Ａ−１８Ｂにサービスするためのインストラクションも実行する。従って、プロセッサ２２は、他のコンピューティングタスクを遂行してもよいし、又は遂行すべき他のコンピューティングタスクがない場合には電力を保存するためにパワーダウンされてもよい。ＩＯＰ３２は、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、アウトオブオーダー、インオーダー、思索的、非思索的、又はその組み合わせを含むマイクロアーキテクチャーを使用する。ＩＯＰ３２は、回路を含み、又、マイクロコード技術を実施するのも任意である。
【００２４】
ＳＩＵ１６は、メモリコントローラ１４、プロセッサ２２（Ｌ２キャッ数２６を通る）、Ｌ２キャッシュ２６、及びＣＤＭＡコントローラ２０が通信するときに通る相互接続部である。ＳＩＵ１６は、任意の形式の相互接続部（例えば、バス、パケットインターフェイス、ポイント・対・ポイントリンク、等）を実施する。ＳＩＵ１６は、ある実施形態では、相互接続部のハイアラーキーである。
【００２５】
メモリコントローラ１４は、システムインターフェイスユニット１６からメモリ要求を受信するように構成される。メモリコントローラ１４は、アタッチされたメモリ１２に対して規定されたインターフェイスを使用して、要求を完了するためにメモリ１２にアクセスする（書き込み要求については受け取ったデータをメモリ１２へ書き込み、又は読み取り要求に応答してメモリ１２からデータを供給する）ように構成される。メモリコントローラ１４は、任意の形式のメモリ１２、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、２倍データレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、等）ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等にインターフェイスするように構成される。メモリは、デュアルインラインメモリモジュール（ＤＩＭＭ）、シングルインラインメモリモジュール（ＳＩＭＭ）、等の複数メモリバンクとして構成されてもよい。一実施形態では、１つ以上のメモリチップが、パッケージオンパッケージ（ＰＯＰ）又はチップオンチップ（ＣＯＣ）構成で集積回路１０にアタッチされる。
【００２６】
メモリ１２は、１つ以上のメモリ装置を含む。一般的に、メモリ装置は、書き込みオペレーション中にデータと共に与えられるアドレスに基づいてデータを記憶すると共に、読み取りオペレーション中にアドレスが使用されるときにそのデータを供給するように設計されたコンポーネントである。上述したメモリ形式のいずれの例も、メモリ装置において実施され、又、フラッシュメモリ装置２８Ａ−２８Ｂもメモリ装置である。メモリ装置は、プリント回路板のような基板に接続されたチップ、複数チップ（例えば、ＳＩＭＭ又はＤＩＭＭ、或いはＩＣ１０が結合された回路板に直結）、等である。
【００２７】
フラッシュメモリインターフェイスユニット３０は、フラッシュメモリ装置２８Ａ−２８Ｂに対する読み取り及び書き込み要求を受け取るように構成されると共に、読み取り／書き込み要求を完了するためにフラッシュメモリ装置２８Ａ−２８Ｂにインターフェイスするように構成された回路を含む。一実施形態では、読み取り／書き込み要求は、ＣＤＭＡコントローラ２０をソースとする。フラッシュメモリインターフェイスユニット３０は、（例えば、ＰＩＯオペレーションを経て）フラッシュメモリ装置２８Ａ−２８Ｂへの／からのメモリ転送を遂行するように１つ以上のコントロールレジスタ（以下に述べる図２を参照）を経てプログラムすることができる。フラッシュメモリ装置２８Ａ−２８Ｂは、この技術で知られた不揮発性メモリの一形式であるフラッシュメモリである。他の実施形態では、他の形式の不揮発性メモリが使用される。例えば、バッテリバックアップのＳＲＡＭ、種々の形式のプログラマブルＲＯＭ、例えば、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、等が使用される。更に別の実施形態では、メモリ１２と同様に揮発性メモリが使用される。
【００２８】
この実施形態は、フラッシュメモリインターフェイスユニット３０におけるコマンドキュー（ＦＩＦＯ）、マクロメモリ、及び／又はオペランドキュー（ＦＩＦＯ）を使用して説明するが、他の実施形態は、任意の形式のメモリ又は周辺インターフェイスで周辺コンポーネントにおける特徴を実施できる。
【００２９】
他の実施形態は、図１に示すコンポーネント及び／又は他のコンポーネントのサブセット又はスーパーセットを含むコンポーネントの他の組み合わせを包含することに注意されたい。所与のコンポーネントの１つの例が図１に示されているが、他の実施形態は、所与のコンポーネントの１つ以上の例を含むことができる。
【００３０】
図２を参照すれば、フラッシュメモリインターフェイスユニット３０の一実施形態のブロック図が示されている。ここに示す実施形態では、フラッシュメモリインターフェイスユニット３０は、コマンドＦＩＦＯ４０、フラッシュメモリインターフェイス（ＦＭＩ）コントロール回路４２、マクロメモリ４４、オペランドＦＩＦＯ４６、フラッシュメモリコントローラ（ＦＭＣ）４８、１組のＦＭＣコントロールレジスタ５０、データバッファ５２Ａ−５２Ｂ、及びエラーチェック／修正（ＥＣＣ）ユニット５４を備えている。コマンドＦＩＦＯ４０、ＦＭＩコントロール回路４２、マクロメモリ４４、オペランドＦＩＦＯ４６、及びバッファ５２Ａ−５２Ｂは、全て、ＣＤＭＡコントローラ２０への内部インターフェイスに結合される。ＦＭＩコントロール回路４２は、更に、コマンドＦＩＦＯ４０、マクロメモリ４４、オペランドＦＩＦＯ４６、及びＦＭＣコントロールレジスタ５０へ結合される。ＦＭＣコントロールレジスタ５０は、更に、ＦＭＣ４８に結合され、これは、フラッシュメモリ装置への外部インターフェイスに結合される。ＦＭＣ４８は、更に、バッファ５２Ａ−５２Ｂに結合される。又、ＥＣＣユニット５４は、バッファ５２Ａ−５２Ｂに結合される。
【００３１】
ＦＭＩコントロール回路４２は、ＣＤＭＡコントローラ２０からＰＩＯオペレーションを受け取るように構成される。幾つかのＰＩＯオペレーションがコマンドＦＩＦＯ４０、マクロメモリ４４又はオペランドＦＩＦＯ４６に向けられる。例えば、ＰＩＯ書き込みは、コマンドＦＩＦＯ４０にコマンドを書き込み、マクロメモリ４４へマクロをダウンロードし、又はオペランドＦＩＦＯ４６にオペランドを書き込むのに使用される。アドレスは、ＦＩＦＯ４０、マクロメモリ４４及びオペランドＦＩＦＯ４６の各々に指定され、これは、望ましいリソースをアドレスするためにＰＩＯオペランドに使用される。例えば、ＦＩＦＯ４０及び４６は、先入れ先出し式に動作するので、単一の指定アドレスを有する。アドレスへのＰＩＯ書き込みで、ＦＭＩコントロール回路４２は、書き込みと共に与えられるデータをＦＩＦＯ４０、４６の次のオープンエントリーに記憶させる。即ち、データは、ＦＩＦＯ４０又は４６のテールに添付され、ＦＩＦＯ４０又は４６のヘッドからコマンド又はオペランドが除去される。マクロメモリ４４には、ある範囲のアドレスが指定され、例えば、マクロメモリ４４のワード当たりのアドレスが指定される。アドレスへのＰＩＯ書き込みで、与えられたデータワードが、マクロメモリ４４のアドレスされたワードに記憶される。
【００３２】
ＦＭＩコントロール回路４２は、コマンドＦＩＦＯ４０のコマンドを処理し、ＦＭＣ４８がフラッシュメモリ装置２８Ａ−２８Ｂへの／からの特定のメモリ転送を遂行するようにさせるよう種々のＦＭＣコントロールレジスタ５０をプログラムする。一実施形態では、ＦＭＣ４８は、アドレス、チップイネーブル、転送コマンド、等を含む比較的低レベルのコントロールを、ＦＭＣコントロールレジスタ５０を経て受け取るように構成される。コマンドＦＩＦＯ４０のコマンドは、ＦＭＩコントロール回路４２によって解釈され、それに対応するＦＭＣコントロールレジスタ５０がＦＭＩコントロール回路４２により書き込まれる。同様に、ある事象を待機するコマンドは、１つ以上のＦＭＣコントロールレジスタ５０を読み取って事象を検出するようにＦＭＩコントロール回路４２により解釈される。又、コマンドに応答してＦＭＩコントロール回路４２によって駆動され、及び／又はコマンドに応答してＦＭＩコントロール回路４２によって監視されるある実施形態（図２には示さず）では、ＦＭＩコントロール回路４２とＦＭＣ４８との間に直接的なコントロール信号があってもよい。
【００３３】
ＦＭＩコントロール回路４２は、コマンドＦＩＦＯ４０からコマンドを書き込まれた順に読み取るように構成される。より一般的には、コマンドキューがサポートされてもよい（例えば、コマンドＦＩＦＯ４０は、キューの各エントリーがＦＭＩコントロール回路４２を同時に見ることができるように、特にＦＩＦＯとして構成されなくてもよい）。同様に、オペランドＦＩＦＯ４６が、オペランドキューであり、ＦＭＩコントロール回路４２は、コマンドキュー又はマクロメモリ４４のコマンドに応答してオペランドＦＩＦＯ４６からオペランドを、それが書き込まれた順に読み取ることができる。
【００３４】
上述したように、マクロコマンドは、コマンドＦＩＦＯ４０にあり、ＦＭＩコントロール回路４２は、マクロコマンドに応答してマクロメモリ４４からのコマンドを遂行する。他の実施形態では、マクロコマンドは、ＰＩＯオペレーションとしてＦＭＩコントロール回路４２へ送信される。更に別の実施形態では、マクロコマンドには、コマンドＦＩＦＯ４０又はＰＩＯオペレーションにおいて遭遇する。マクロコマンドは、マクロメモリにおけるスタートアドレスと、マクロメモリ４４から読み取るワードの数を指示するワードカウントとを含む。ＦＭＩコントロール回路４２は、マクロのコマンドを遂行した後にコマンドＦＩＦＯ４０における次のコマンドを読み取る。マクロのワードは、一実施形態では、コマンドに加えてオペランドを含む。他の実施形態は、ワードカウントではなく、コマンドカウントを使用する。上述したように、マクロコマンドは、ループカウントも含み、マクロは、ループカウントで指示された回数だけ繰り返される。
【００３５】
コマンドＦＩＦＯ４０及びオペランドＦＩＦＯ４６からワードを読み取ることは、ＦＭＩコントロール回路４２がＦＩＦＯからこれらワードを削除することを含む。他方、マクロメモリ４４からワードを読み取ることは、マクロが繰り返し遂行されるようにワードを削除することを含まない。
【００３６】
ＦＭＣ４８は、ＦＭＣコントロールレジスタ５０のコンテンツに応答してメモリ転送を遂行し、フラッシュメモリ装置２８Ａ−２８Ｂから読み取ったデータをバッファ５２Ａ−５２Ｂへ書き込み、又はバッファ５２Ａ−５２Ｂから読み取ったデータをフラッシュメモリ装置２８Ａ−２８Ｂへ書き込む。バッファ５２Ａ−５２Ｂは、その一方にデータが埋められている間に、その他方からデータが放出されるようなピンポン形態で使用される。例えば、フラッシュメモリ装置２８Ａ−２８Ｂからの読み取りは、ＦＭＣ４８がバッファ５２Ａ−５２Ｂの一方を埋めている間に、バッファ５２Ａ−５２Ｂの他方が、メモリ１２へのＤＭＡオペレーションを遂行するＣＤＭＡコントローラ２０により放出されることを含む。フラッシュメモリ装置２８Ａ−２８Ｂへの書き込みは、ＣＤＭＡコントローラ２０がバッファ５２Ａ−５２Ｂの一方にデータを埋めている間に、ＦＭＣ４８が他方のバッファ５２Ａ−５２Ｂから放出することを含む。ＥＣＣユニット５４は、フラッシュメモリ装置２８Ａ−２８Ｂへ書き込むためのＥＣＣデータを発生し、そしてフラッシュメモリ装置２８Ａ−２８Ｂからの読み取りに対してＥＣＣデータをチェックする。
【００３７】
図３を参照すれば、ＣＤＭＡコントローラ２０からＰＩＯオペレーションを受け取るのに応答するＦＭＩコントロール回路４２の一実施形態のオペレーションのフローチャートが示されている。理解を容易にするためにブロックが特定の順序で示されているが、他の順序を使用してもよい。ブロックは、ＦＭＩコントロール回路４２の組み合わせロジックにおいてパラレルに遂行されてもよい。例えば、図３に示す判断ブロックは、独立したもので、パラレルに遂行されてもよい。ブロック、ブロックの組み合わせ、及び／又は全体としてのフローチャートは、複数のクロックサイクルにわたってパイプライン型とすることができる。ＦＭＩコントロール回路４２は、図３に示すオペレーションを実施するように構成される。
【００３８】
ＰＩＯ書き込みがコマンドＦＩＦＯ４０にアドレスされた場合には（判断ブロック６０の「イエス」岐路）、ＦＭＩコントロール回路４２は、コマンドＦＩＦＯ４０の次のエントリーをＰＩＯ書き込みからのデータで更新するように構成される（ブロック６２）。即ち、ＰＩＯ書き込みからのデータがコマンドＦＩＦＯ４０のテールに添付される。ＰＩＯ書き込みがマクロメモリ４４にアドレスされた場合には（判断ブロック６４の「イエス」岐路）、ＦＭＩコントロール回路４２は、マクロメモリ４４のアドレスされたエントリーをＰＩＯ書き込みからのデータで更新するように構成される（ブロック６６）。ＰＩＯ書き込みがオペランドＦＩＦＯ４６にアドレスされた場合には（判断ブロック６８の「イエス」岐路）、ＦＭＩコントロール回路４２は、オペランドＦＩＦＯ４６の次のエントリーをＰＩＯ書き込みからのデータで更新するように構成される（ブロック７０）。即ち、ＰＩＯ書き込みからのデータがオペランドＦＩＦＯ４６のテールに添付される。ＰＩＯ書き込みがＦＭＣコントロールレジスタ５０内のレジスタ（又は他の実施形態ではフラッシュメモリインターフェイスユニット３０の他のレジスタ）にアドレスされた場合には（判断ブロック７２の「イエス」岐路）、ＦＭＩコントロール回路４２は、アドレスレジスタを更新するように構成される（ブロック７４）。
【００３９】
図４を参照すれば、フラッシュメモリインターフェイスユニット３０、特に、ＦＭＩコントロール回路４２の一実施形態によりサポートされる規範的コマンドセットのテーブル７６が示されている。他の実施形態は、図４に示すコマンドのサブセット、コマンド及び他のコマンドのサブセット、及び／又はコマンド及び他のコマンドのスーパーセットを含む他のコマンドセットをサポートすることができる。このテーブルは、各コマンドを列挙した「コマンド」欄と、所与のコマンドに対するオペランドを示す「オペランド」欄と、コマンドにより占有されるコマンドＦＩＦＯ４０内のワードの数を指示する「ワード」欄とを含む。
【００４０】
コマンドのフォーマットは、実施形態ごとに変化してもよい。例えば、一実施形態では、各コマンドは、コマンドセット内のコマンドを識別するｏｐｃｏｄｅバイトを含む（即ち、テーブル７６の各エントリーは、異なるｏｐｃｏｄｅエンコーディングを経て識別される）。コマンドを形成する１つ又は複数のワードにおける残存バイトを使用して、コマンドに対するオペランドを指定することができる。種々の実施形態では、コマンドは、コマンドＦＩＦＯ４０又はマクロメモリ４４に記憶される。
【００４１】
アドレスコマンド（テーブル７６のａｄｄｒ０からａｄｄｒ７）は、フラッシュメモリ装置２８Ａ−２８Ｂへのインターフェイス（より簡潔には、フラッシュメモリインターフェイスと称される）にアドレスバイトを発行するのに使用される。“ａｄｄｒ”後の数字は、フラッシュメモリインターフェイス上のアドレスのバイト０でスタートして、送信されるアドレスバイトの数を指示する。ＦＭＩコントロール回路４２は、一実施形態では、次のコマンドを遂行する前にアドレスバイトが送信されるまで休止するように構成される。ａｄｄｒＸコマンドは、一実施形態では、次のＦＭＣコントロールレジスタ５０、即ちアドレスバイトを伴う１つ以上のアドレスレジスタをプログラミングすること、及び１つ以上のレジスタにおいて転送数及び読み取り／書き込みモードをプログラミングすることと同等である。読み取り／書き込みモードに応答して、ＦＭＣ４８は、フラッシュメモリインターフェイスを経てアドレスバイトを送信し、そしてＦＭＣコントロールレジスタ５０内の状態レジスタにおいてアドレス終了割り込みを信号する。更に、ａｄｄｒＸコマンドは、状態レジスタにおけるアドレス終了割り込みを待機し及びクリアすることも含む。ａｄｄｒ０コマンドは、アドレスレジスタ及びアドレス転送数レジスタがプログラムされないという点でａｄｄｒ１ないしａｄｄｒ７コマンドとは異なる。むしろ、これらレジスタは、以下に述べるｌｏａｄ＿ｎｅｘｔ＿ｗｏｒｄ又はｌｏａｄ＿ｆｒｏｍ＿ｆｉｆｏコマンドのような他のコマンドを使用して予めプログラムされる。
【００４２】
ｃｍｄコマンドは、フラッシュメモリインターフェイスを経てフラッシュメモリインターフェイスコマンドを送出するのに使用される。一実施形態では、フラッシュメモリインターフェイスコマンドは、１バイトである。従って、ｃｍｄコマンドのオペランドは、フラッシュメモリインターフェイスを経て送信されるコマンドバイトである。ＦＭＩコントロール回路４２は、フラッシュメモリインターフェイスにおいてｃｍｄコマンドが完了するまで休止するように構成される。ｃｍｄコマンドは、ＦＭＣコントロールレジスタ５０のコマンドレジスタをコマンドバイトでプログラミングし、別のＦＭＣコントロールレジスタ５０においてコマンドモードビットをセットし、そしてＦＭＣコントロールレジスタ５０内の状態レジスタにおいてｃｍｄ終了割り込みを待機し及びクリアすることと同等である。コマンドモードビットの設定に応答して、ＦＭＣ４８は、フラッシュメモリインターフェイスを経てコマンドバイトを送信するように構成され、そしてｃｍｄ終了割り込みを状態レジスタに書き込む。
【００４３】
ｅｎａｂｌｅ＿ｃｈｉｐコマンドは、ＦＭＣコントロールレジスタ５０のチップイネーブルレジスタに書き込みを行うのに使用され、これは、ＦＭＣ４８がチップイネーブルオペランドに基づいてフラッシュメモリインターフェイス上のチップイネーブル信号を駆動するようにさせる。
【００４４】
ｘｆｅｒ＿ｐａｇｅコマンドは、フラッシュメモリ装置２８Ａ−２８Ｂへの／からのページ転送を開始するのに使用される。ｘｆｅｒ＿ｐａｇｅコマンドに応答して、ＦＭＩコントロール回路４２は、ＦＭＣコントロールレジスタ５０にスタートビットをセットし、そして別のＦＭＣコントロールレジスタ５０においてページ終了割り込みを待機し及びクリアするように構成される。スタートビットに応答して、ＦＭＣ４８は、指定のページ転送を遂行し、そしてその完了時にページ終了割り込みをセットするように構成される。
【００４５】
ＦＭＩコントロール回路４２によりサポートされる種々の同期コマンドがある。一般的に、同期コマンドは、ＦＭＩコントロール回路４２が監視すべき事象を指定するのに使用され、そしてＦＭＩコントロール回路４２が、次のコマンドを遂行する前に事象の発生を待機する（即ち、ＦＭＩコントロール回路４２が事象を検出するまで待機する）ようにさせる。従って、同期コマンドは、一連のコマンドを予めプログラムできるようにし、又、同期コマンドは、正しいタイミングを確保する上で助けとなる。例えば、複数のページ転送を予めプログラムすることができ、そして同期コマンドを使用して、現在ページに対してレジスタがもはや必要でなくなるまで（例えば、ページから最後のデータが読み取りのためにバッファ５２Ａ−５２Ｂへロードされた後に）次のページに対してＦＭＣコントロールレジスタ５０のプログラミングを遅延することができる。
【００４６】
図４の実施形態において、同期コマンドは、ｗａｉｔ＿ｆｏｒ＿ｒｄｙ、ｐａｕｓｅ、ｔｉｍｅｄ＿ｗａｉｔ、及びｗａｉｔ＿ｆｏｒ＿ｉｎｔを含む。ｗａｉｔ＿ｆｏｒ＿ｒｄｙコマンドは、ページ転送中にフラッシュメモリ装置２８Ａ−２８Ｂの状態を監視するのに使用される。ｗａｉｔ＿ｆｏｒ＿ｒｄｙコマンドは、ＦＭＣコントロールレジスタ５０の状態レジスタにおいて特定の「終了(done)」割り込み（例えば、ページ終了）を待機し、状態レジスタの状態バイトをマスクオペランドでマスクし、そしてマスクされた状態バイトを条件オペランドと比較することを含む。マスクされた状態バイトが条件オペランドに一致する場合には、ＦＭＩコントロール回路４２は、次のコマンドを遂行するように構成される。さもなければ、ＦＭＩコントロール回路４２は、割り込みを信号し（例えば、種々の実施形態では、ＩＯＰ３２又はプロセッサ２２へ）、そしてＩＯＰ３２／プロセッサ２２が割り込みに応じるまで付加的なコマンドの遂行を停止する。
【００４７】
ｐａｕｓｅ（休止）コマンドは、ＦＭＩコントロール回路４２によりコマンドの遂行を休止するのに使用される。ＦＭＩコントロール回路４２は、ＩＯＰ３２／プロセッサ２２において実行されてＦＭＣコントロールレジスタ５０の１つに指定のイネーブルビットを書き込むソフトウェアにより特に休止解除となるまでコマンドの遂行を中止する。
【００４８】
ＦＭＩコントロール回路４２は、ｔｉｍｅｄ＿ｗａｉｔコマンドを経て多数のクロックサイクルの後に休止及び再開するように構成される。クロックサイクルの数は、ｔｉｍｅｄ＿ｗａｉｔコマンドのオペランドとして指定される。ある実施形態では、ｔｉｍｅｄ＿ｗａｉｔコマンドは、フラッシュメモリインターフェイスユニット３０を低速化するのに使用される。というのは、コマンドＦＩＦＯ４０、マクロメモリ４４及びオペランドＦＩＦＯ４６を使用して可能となる遂行が、フラッシュメモリ装置２８Ａ−２８Ｂによりアクティビティが遂行される速度を越えるからである。
【００４９】
ｗａｉｔ＿ｆｏｒ＿ｉｎｔコマンドは、ＦＭＩコントロール回路４２が指定の割り込み値を待機するようにさせるのに使用される。オペランドは、「ビット」オペランドを使用して、待機すべき割り込み（ｉｒｑ）及び待機すべきｉｒｑビットの状態（例えば、セット又はクリア）を指定する。
【００５０】
ｓｅｎｄ＿ｉｎｔｅｒｒｕｐｔコマンドは、ＩＯＰ３２又はプロセッサ２２へ指定の割り込みを送信するのに使用される。ｓｅｎｄ＿ｉｎｔｅｒｒｕｐｔコマンドのオペランドは、ＦＭＣコントロールレジスタ５０の割り込みコードレジスタへ書き込むべき割り込みコードを指定し、これは、割り込みを送信させるものである。
【００５１】
ｌｏａｄ＿ｎｅｘｔ＿ｗｏｒｄ及びｌｏａｄ＿ｆｒｏｍ＿ｆｉｆｏコマンドは、ＦＭＣコントロールレジスタ５０の種々のレジスタをプログラムするのに使用される。これらコマンドのオペランドの１つは、書き込まれるべきコントロールレジスタのレジスタアドレスである。ｌｏａｄ＿ｎｅｘｔ＿ｗｏｒｄコマンドに応答して、ＦＭＩコントロール回路４２は、コマンドＦＩＦＯ４０から次のワードを読み取り、そしてアドレスされたレジスタにワードを書き込む。又、ｌｏａｄ＿ｆｒｏｍ＿ｆｉｆｏコマンドに応答して、ＦＭＩコントロール回路４２は、オペランドＦＩＦＯ４６のヘッドにおいてワードを読み取り、且つアドレスされたレジスタへワードを書き込むように構成される。
【００５２】
ｍａｃｒｏ（マクロ）コマンドは、ＦＭＩコントロール回路４２がマクロメモリ４４からコマンドを読み取るようにさせるために使用される。マクロコマンドは、アドレスオペランド、長さオペランド、及びループカウントオペランドを含む。アドレスは、マクロメモリ４４から読み取られるべき第１ワードを識別し、そして長さは、マクロの長さを（例えば、コマンドの数又はワードの数に関して）識別する。一実施形態では、長さは、ワード数である。ループカウントは、実行されるべきマクロの繰り返し数を指示する。一実施形態では、ループカウントオペランドは、繰り返し数より１だけ小さい（例えば、ゼロのループカウントは、１つの繰り返しであり、１のループカウントは、２つの繰り返しであり、等々である）。マクロが完了すると、次のコマンドＦＩＦＯ４２が読み取られる（即ち、マクロにおいてリターンコマンドはない）。
【００５３】
ｐｏｌｌ（ポール）コマンドは、（マスクフィールドを使用してレジスタから読み取られた値をマスクした後に）特定の値に対してＦＭＣコントロールレジスタ５０のレジスタをポーリングする。ＦＭＩコントロール回路４２は、指定値が検出されるまでレジスタをポーリングし、次いで、次のコマンドへ進む。
【００５４】
上述したように、ＦＭＩコントロール回路４２は、あるコマンドを遂行する一部分としてＦＭＣコントロールレジスタ５０内の１つ以上の状態レジスタに記録された種々の割り込みを監視する。ＦＭＩコントロール回路４２は、割り込みをクリアして、それに対応するコマンドを完了させる。コマンドＦＩＦＯ４０にコマンドがない場合には、割り込みがＩＯＰ３２／プロセッサ２２（もしイネーブルされれば）へ転送される。従って、ＦＭＣコントロールレジスタ５０へのＰＩＯ書き込みオペレーション及びＩＯＰ３２／プロセッサ２２への割り込みは、フラッシュメモリ装置２８Ａ−２８Ｂへの／からのメモリ転送を遂行するための別のメカニズムである。
【００５５】
図５は、コマンドを処理するためのＦＭＩコントロール回路４２の一実施形態のオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。ブロックは、ＦＭＩコントロール回路４２の組み合わせロジックにおいてパラレルに遂行される。ブロック、ブロックの組み合わせ、及び／又は全体としてのフローチャートは、複数のクロックサイクルにわたってパイプライン型とすることができる。ＦＭＩコントロール回路４２は、図５に示すオペレーションを実施するように構成される。
【００５６】
ＦＭＩコントロール回路４２は、コマンドＦＩＦＯ４０からコマンドを読み取るように構成される（ブロック８０）。コマンドがマクロコマンドでない場合には（判断ブロック８２の「ノー」岐路）、ＦＭＩコントロール回路４２は、コマンドを遂行するように構成される（ブロック８４）。コマンドが完了すると、ＦＭＩコントロール回路４２は、マクロがその終了に達したかどうか決定するのに使用されるワードカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ワードカウントはゼロである（判断ブロック８６の「ノー」岐路）。ＦＭＩコントロール回路は、マクロコマンドに関連したループカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ループカウントがゼロである（判断ブロック９５の「ノー」岐路）。ＦＭＩコントロール回路４２は、コマンドＦＩＦＯ４０に別の有効コマンドがあるかどうか決定するように構成される（判断ブロック８８）。即ち、ＦＭＩコントロール回路４２は、コマンドＦＩＦＯ４０が空であるかどうか決定するように構成される。別の有効コマンドがある場合には（判断ブロック８８の「イエス」岐路）、ＦＭＩコントロール回路４２は、次のコマンドを読み取って処理するように構成される。さもなければ、ＦＭＩコントロール回路４２のコマンド処理回路は、別の有効コマンドがコマンドＦＩＦＯ４０に書き込まれるまでアイドル状態である（判断ブロック８８の「ノー」岐路）。
【００５７】
コマンドがマクロコマンドである場合には（判断ブロック８２の「イエス」岐路）、ＦＭＩコントロール回路４２は、ワードカウントをマクロコマンドの長さオペランドに初期化すると共に、ループカウントをマクロコマンドのループカウントオペランドに初期化するように構成される（ブロック９０）。又、ＦＭＩコントロール回路４２は、マクロメモリ４４からコマンドを読み取る（ブロック９２）。より詳細には、この場合、ＦＭＩコントロール回路４２は、マクロコマンドのアドレスオペランドとして設けられたマクロメモリ４４内のアドレスから第１ワードを読み取る。ＦＭＩコントロール回路４２は、コマンドを遂行するように構成され（ブロック８４）、又、ワードカウントをチェックするように構成される。ワードカウントは、ゼロより大きく（判断ブロック８６の「イエス」岐路）、そしてＦＭＩコントロール回路４２は、ワードカウントをデクリメントすると共に、（例えば、アドレスをインクリメントすることで）マクロメモリ４４から次のコマンドを読み取るように構成される（ブロック９４及び９６）。ＦＭＩコントロール回路４２は、（図５のフローチャートの判断ブロック８２へ戻って）次のコマンドを処理するように構成される。ワードカウントがゼロの場合には（判断ブロック８６の「ノー」岐路）、ＦＭＩコントロール回路４２は、ループカウントをチェックするように構成される。ループカウントがゼロより大きい場合には（判断ブロック９５の「イエス」岐路）、マクロの別の繰り返しを遂行すべきとなる。ＦＭＩコントロール回路４２は、ループカウントをデクリメントし（ブロック９７）、ワードカウント及びマクロアドレスを再初期化し（ブロック９９）、そしてマクロメモリ４４から次のコマンド（即ち、マクロの第１コマンド）を読み取る（ブロック９６）。ワードカウント及びループカウントの両方がゼロである場合には（判断ブロック８６及び８８の「ノー」岐路）、マクロが完了し、ＦＭＩコントロール回路４２は、コマンドキュー４０における次の有効コマンドをチェックする（判断ブロック８８）。
【００５８】
各コマンドは、マクロコマンドであることがチェックされるので、マクロコマンドは、マクロメモリ４４にも記憶されることに注意されたい。従って、マクロは、「ネスト状」にされるが、遂行されるべき最後のマクロは、コマンドＦＩＦＯ４０に戻され、従って、マクロがそれをコールしたマクロに戻らないという意味で真のネストは存在しない。
【００５９】
図６は、フラッシュメモリ装置２８Ａ又は２８Ｂへの複数ページ書き込みを遂行するためのマクロの使用例を示すブロック図である。コマンドの３つの区分を含むマクロメモリ４４のコンテンツが示されている。マクロメモリアドレス０とＮ−１との間には、前ページへの書き込みを完了するためのＮワードのマクロ１００が記憶される。マクロメモリアドレスＮとＮ＋Ｍ−１との間には、次のページへの書き込みを開始するためのＭワードのマクロ１０２が記憶される。マクロメモリアドレスＮ＋ＭとＮ＋Ｍ＋Ｐ−１との間には、メモリへの最後のページの書き込みを終了するためのＰワードのマクロ１０４が記憶される。
【００６０】
又、図６にはコマンドＦＩＦＯ４０における１組のコマンドが示され、図６に示すように、ＦＩＦＯのヘッドがコマンドＦＩＦＯ４０の頂部にあって、ＦＩＦＯのその後のコマンドがコマンドＦＩＦＯ４０を下る順に進む。第１のコマンドは、マクロＮ、Ｍである。コマンドは、ワードＮで始めてマクロ１０４をコールし、そしてＭ個のワード（即ち、図６に示すマクロ１０２）を遂行する。従って、第１ページへの書き込みが初期化される。その後のページ書き込みは、マクロ０、Ｎ＋Ｍコマンドを使用して遂行される。これらのコマンドは、マクロ１００及びマクロ１０２を遂行させる。前ページへの書き込みが完了し（マクロ１００）、そして次のページへの書き込みが開始される（マクロ１０２）。最後のページは、マクロ０、Ｎ＋Ｍ＋Ｐコマンドを使用して書き込まれる。このコマンドは、マクロ１００、１０２及び１０４を遂行させ、第２ないし最後のページへの書き込みを完了させ（マクロ１００）、最後のページへの書き込みを遂行し（マクロ１０２）、そして最後のページへの書き込みを完了させてフラッシュメモリ装置２８Ａ又は２８Ｂを閉じる（マクロ１０４）。この例では、各マクロコマンドのループカウントオペランドがゼロである（１つの繰り返し）。しかしながら、図６の第１の例の下に示された別の例では、ループカウントオペランドを使用して、コマンドキューにおけるコマンドをより効率的なものにする。マクロＮのループカウント、第１ページのＭコマンド、及び最後のページのマクロ０、Ｎ＋Ｍ＋Ｐコマンドは、依然、ゼロであり、１つの繰り返しを指定している。しかしながら、書き込みの中間ページは、全て、ループカウントオペランドがページカウント（Ｃ）−３に等しい１つのマクロコマンド（マクロ０、Ｎ＋Ｍ）を使用して達成される。最初と最後のページ、及びこの実施形態ではループカウントオペランドが希望の繰り返し数より１だけ低いことを考慮するために、ループカウントは、Ｃ−３である。マクロ１００、１０２及び１０４が示すように、マクロメモリ４４におけるマクロの入念な構成を通して、高密度で且つ効率的なマクロが得られる。マクロは、ｌｏａｄ＿ｆｒｏｍ＿ｆｉｆｏコマンドを使用して、各ページ書き込みオペランドとして異なるオペランドを使用し、各ページのオペランドは、コマンドＦＩＦＯ４０におけるコマンドを開始する前に、オペランドＦＩＦＯ４６にロードされる。
【００６１】
マクロ１０２に含まれるコマンドは、書き込まれるべきアドレス、チップイネーブル、等を確立する。マクロ１００に含まれるコマンドは、前ページをメモリへ転送するためのｘｆｅｒ＿ｐａｇｅと、エラーをチェックすると共に次のページ転送（マクロ１０２を経て初期化される）を同期化するコマンドとを含む。マクロ１０４は、最終的なｘｆｅｒ＿ｐａｇｅコマンドと、エラーをチェックすると共に、書き込みのターゲットであったフラッシュメモリ装置を閉じて、アクティブページ／領域をデアクチベートし及び／又はフラッシュメモリ装置に対して指定された他のオペレーションを遂行するコマンドとを含む。
【００６２】
図７は、ＩＯＰ３２及び／又はプロセッサ２２により実行されるべきフラッシュコードのオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が指定されてもよい。フラッシュコードは、ＩＯＰ３２及び／又はプロセッサ２２により実行されたときに、図７に示すオペレーションを実施するインストラクションを含む。
【００６３】
フラッシュコードは、集積回路１０の動作中にいつでも実行することができる。例えば、フラッシュコードは、フラッシュメモリインターフェイスユニット３０を初期化するために実行することができる。又、フラッシュコードは、フラッシュメモリ３０がアイドル状態であるがアクセスされねばならないときに実行されて、マクロメモリ４４のマクロ、等を再構成することができる。
【００６４】
フラッシュコードは、望ましいマクロをマクロメモリ４４へダウンロードする（ブロック１１０）。マクロメモリ４４に既に記憶されたマクロが望ましいマクロであるか、又は望ましいマクロがない場合には、ブロック１１０がスキップされる。又、フラッシュコードは、コマンド又はマクロにより使用されるべきオペランドをダウンロードし（ブロック１１２）、そしてブロック１１２は、ダウンロードされるべきオペランドがない場合にはスキップされる。フラッシュコードは、遂行されるべきコマンドをダウンロードし（ブロック１１４）、コマンドの実行は、フラッシュメモリインターフェイスユニット３０において開始される。付加的なコマンドがダウンロードされる準備ができた場合には（判断ブロック１１６の「イエス」岐路）、フラッシュコードは、その付加的なコマンドをダウンロードする（ブロック１１４）。新たなオペランド又はマクロがダウンロードされる準備ができた場合には（判断ブロック１１８の「イエス」岐路）、フラッシュコードは、それらをダウンロードするためにブロック１１０及び／又は１２へ戻る。
【００６５】
システム及びコンピュータアクセス可能な記憶媒体
図８は、システム１５０の一実施形態を示すブロック図である。ここに示す実施形態では、システム１５０は、１つ以上の周辺装置１５４及び外部メモリ１５８に結合された集積回路１０（図１）の少なくとも１つのインスタンスを含む。外部メモリ１５８は、メモリ１２を含む。電源１５６も設けられ、これは、集積回路１０へ供給電圧を供給すると共に、メモリ１５８及び／又は周辺装置１５４へ１つ以上の供給電圧を供給する。ある実施形態では、集積回路１０の２つ以上のインスタンスが含まれる（２つ以上の外部メモリ１５８も含まれる）。
【００６６】
周辺装置１５４は、システム１５０の形式に基づいて望ましい回路を備えている。例えば、一実施形態では、システム１５０は、移動装置（例えば、パーソナルデジタルアシスタント（ＰＤＡ）、スマートホン、等）であり、周辺装置１５４は、種々の形式のワイヤレス通信のための装置、例えば、ＷｉＦｉ、ブルーツース、セルラー、グローバルポジショニングシステム、等を備えている。又、周辺装置１５４は、ＲＡＭ記憶装置、ソリッドステート記憶装置又はディスク記憶装置を含む付加的な記憶装置も備えている。周辺装置１５４は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置も備えている。他の実施形態では、システム１５０は、任意の形式のコンピューティングシステム（例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、等）である。
【００６７】
外部メモリ１５８は、任意の形式のメモリを含む。例えば、外部メモリ１５８は、ＳＲＡＭ、ダイナミックＲＡＭ（ＤＲＡＭ）、例えば、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、等）ＳＤＲＡＭ、ＲＡＭＢＵＳＤＲＡＭ、等である。外部メモリ１５８は、メモリ装置がマウントされた１つ以上のメモリモジュール、例えば、単一インラインメモリモジュール（ＳＩＭＭ）、デュアルインラインメモリモジュール（ＤＩＭＭ）、等を含む。
【００６８】
図９は、コンピュータアクセス可能な記憶媒体２００のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び／又はデータをコンピュータへ与えるために使用中にコンピュータによりアクセス可能な記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク（固定又は取り外し可能）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ又はブルーレイのような記憶媒体を含む。記憶媒体は、更に、揮発性又は不揮発性メモリ媒体、例えば、ＲＡＭ（例えば、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、ＲａｍｂｕｓＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等）、ＲＯＭ、フラッシュメモリ、不揮発性メモリ（例えば、フラッシュメモリ）を含み、これは、ユニバーサルシリアルバス（ＵＳＢ）インターフェイス、フラッシュメモリインターフェイス（ＦＭＩ）、シリアル周辺インターフェイス（ＳＰＩ）、等の周辺インターフェイスを経てアクセス可能なものである。又、記憶媒体は、マイクロエレクトロメカニカルシステム（ＭＥＭＳ）を含むと共に、ネットワーク及び／又はワイヤレスリンクのような通信媒体を経てアクセス可能な記憶媒体も含む。図５のコンピュータアクセス可能な記憶媒体２００は、ＩＯＰ３２及び／又はプロセッサ２２によるコードを含むフラッシュコード２０２を記憶する。フラッシュコード２０２は、実行時に、図７を参照して上述したオペレーションを実施するインストラクションを含む。一般的に、コンピュータアクセス可能な記憶媒体２００は、実行時に、図７に示すオペレーションの一部分又は全部を実施するインストラクションのセットを記憶する。更に、コンピュータアクセス可能な記憶媒体２００は、マクロメモリ４４へダウンロードされるべき１つ以上のマクロ２０４、オペランドＦＩＦＯ３６へダウンロードされるべき１つ以上のオペランド、及び／又はコマンドＦＩＦＯ４０へダウンロードされるべき１つ以上のコマンドを記憶する。キャリア媒体は、コンピュータアクセス可能な記憶媒体、及びワイヤード又はワイヤレス送信のような送信媒体を含む。
【００６９】
以上の開示から、当業者であれば、多数の変更や修正が明らかであろうが、このような変更や修正は、全て、特許請求の範囲に包含されると解釈される。
【符号の説明】
【００７０】
１０：集積回路
１２：外部メモリ
１４：メモリコントローラ
１６：システムインターフェイスユニット（ＳＩＵ）
１８Ａ−１８Ｂ：周辺コンポーネント
２０：中央ＤＭＡコントローラ
２２：プロセッサ
２４、２６：キャッシュ
２８Ａ−２８Ｂ：フラッシュメモリ装置
３０：フラッシュメモリインターフェイスユニット
３２：入力／出力プロセッサ（ＩＯＰ）
４０：コマンドＦＩＦＯ
４２：フラッシュメモリインターフェイス（ＦＭＩ）コントロール回路
４４：マクロメモリ
４６：オペランドＦＩＦＯ
４８：フラッシュメモリコントローラ（ＦＭＣ）
５０：ＦＭＣコントロールレジスタ
５２Ａ−５２Ｂ：データバッファ
５４：エラーチェック／修正（ＥＣＣ）ユニット
１５６：電源
１５８：外部メモリ
１５４：周辺装置
【図１】
2011146035.tif 000003
【図２】
2011146035.tif 000004
【図３】
2011146035.tif 000005
【図４】
2011146035.tif 000006
【図５】
2011146035.tif 000007
【図６】
2011146035.tif 000008
【図７】
2011146035.tif 000009
【図８】
2011146035.tif 000010
【図９】
2011146035.tif 000011
【外国語明細書】
2011146035.tif 000012
2011146035.tif 000013
2011146035.tif 000014
2011146035.tif 000015
2011146035.tif 000016
2011146035.tif 000017
2011146035.tif 000018
2011146035.tif 000019
2011146035.tif 000020
2011146035.tif 000021
2011146035.tif 000022
2011146035.tif 000023
2011146035.tif 000024
2011146035.tif 000025
2011146035.tif 000026
2011146035.tif 000027
2011146035.tif 000028
2011146035.tif 000029
2011146035.tif 000030
2011146035.tif 000031
2011146035.tif 000032
2011146035.tif 000033
2011146035.tif 000034
2011146035.tif 000035
2011146035.tif 000036
2011146035.tif 000037
2011146035.tif 000038
2011146035.tif 000039
2011146035.tif 000040
2011146035.tif 000041
2011146035.tif 000042
2011146035.tif 000043
2011146035.tif 000044
2011146035.tif 000045
2011146035.tif 000046
2011146035.tif 000047
2011146035.tif 000048
2011146035.tif 000049