(57)【要約】【課題】多様なインターフェースに好適に対応すること。【解決手段】実施形態のコントローラは、記憶部に接続され、前記記憶部に対して１つ以上の基本動作を定められた順序で行うコマンドを実行するインターフェース部と、前記基本動作が属するカテゴリ毎に、前記カテゴリに属する前記基本動作の実行時における前記インターフェース部と前記記憶部との間の信号の制御手順を保持する制御部と、を備える。前記制御部は、前記インターフェース部が実行する前記コマンドを構成する前記基本動作を、前記コマンドを構成する基本動作およびその実行の順序を示す第１の情報に基づいて求め、求めた前記基本動作を前記第１の情報に示された順に前記基本動作が属する前記カテゴリを示す第２の情報に基づいて前記インターフェース部に実行させる。【選択図】図１
2015099570.tif 000002
【特許請求の範囲】
【請求項１】
記憶部に接続され、前記記憶部に対して１つ以上の基本動作を定められた順序で行うコマンドを実行するインターフェース部と、
前記基本動作が属するカテゴリ毎に、前記カテゴリに属する前記基本動作の実行時における前記インターフェース部と前記記憶部との間の信号の制御手順を保持する制御部と、
を備えるコントローラであって、
前記制御部は、前記インターフェース部が実行する前記コマンドを構成する前記基本動作を、前記コマンドを構成する基本動作およびその実行の順序を示す第１の情報に基づいて求め、求めた前記基本動作を前記第１の情報に示された順に前記基本動作が属する前記カテゴリを示す第２の情報に基づいて前記インターフェース部に実行させる
コントローラ。
【請求項２】
前記制御部は、前記第１および第２の情報に対応するテーブルを情報保持部に保持させる
請求項１に記載のコントローラ。
【請求項３】
前記第１および第２の情報は、
前記基本動作のラベルである第１ラベルと前記カテゴリとの対応を示す第１テーブルと、
連続して実行可能な前記基本動作を動作順に並べた集合のラベルである第２ラベルと前記集合との対応を示す第２テーブルと、
前記コマンドと前記コマンドを構成する前記集合の前記第２ラベルとの対応を示す第３テーブルと、
を含む
請求項１又は２に記載のコントローラ。
【請求項４】
前記コマンドを複数回実行する上位コマンドのラベルである第３ラベルと前記コマンドおよびその繰り返し回数との対応を記載する第４テーブル
をさらに保持する
請求項３に記載のコントローラ。
【請求項５】
前記記憶部は、並列動作可能な複数のプレーンを備え、
前記第３テーブルは、前記コマンドの繰り返し毎の前記記憶部におけるアドレスの増加値を保持し、
前記制御部は、前記コマンドの繰り返し毎に前記増加値を加算するアドレスカウンタを保持し、
前記情報保持部は、前記アドレスカウンタの値と前記プレーンおよび前記プレーン内でのアドレスとの対応を示す情報を保持する
請求項３に記載のコントローラ。
【請求項６】
記憶部と、
前記記憶部に接続されるコントローラと、を備え、
前記コントローラは、
前記記憶部に接続され、前記記憶部に対して１つ以上の基本動作を定められた順序で行うコマンドを実行するインターフェース部と、
前記基本動作が属するカテゴリ毎に、前記カテゴリに属する前記基本動作の実行時における前記インターフェース部と前記記憶部との間の信号の制御手順を保持する制御部と、
を備え、
前記制御部は、前記インターフェース部が実行する前記コマンドを構成する前記基本動作を、前記コマンドを構成する基本動作およびその実行の順序を示す第１の情報に基づいて求め、求めた前記基本動作を前記第１の情報に示された順に前記基本動作が属する前記カテゴリを示す第２の情報に基づいて前記インターフェース部に実行させる
記憶装置。
【請求項７】
１つ以上の基本動作を定められた順序で行うコマンドを実行するインターフェース部を介して記憶部を制御する記憶装置での制御方法であって、
前記基本動作が属するカテゴリ毎に、前記カテゴリに属する前記基本動作の実行時における前記インターフェース部と前記記憶部との間の信号の制御手順を保持し、
前記インターフェース部が実行する前記コマンドを構成する前記基本動作を、前記コマンドを構成する基本動作およびその実行の順序を示す第１の情報に基づいて求め、
求めた前記基本動作を前記第１の情報に示された順に前記基本動作が属する前記カテゴリを示す第２の情報に基づいて前記インターフェース部に実行させる
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コントローラ、記憶装置、および制御方法に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、世代によりチップ構成が変化し、チップ構成によって記録方式(ＳＬＣ，ＭＬＣ，ＴＬＣ等)やアレイ構成（４プレーン,２プレーン,１プレーン等）、ページサイズ(８ＫＢ，１６ＫＢ等)などの違いがある。そして、チップ構成に応じてインターフェースプロトコルが異なる。このため、特定のチップ構成のＮＡＮＤ型フラッシュメモリに対応したコントローラＬＳＩではそれとは異なるチップ構成のＮＡＮＤ型フラッシュメモリを制御することができない。したがって、ＮＡＮＤ型フラッシュメモリを使用する記憶装置の開発においては、ＮＡＮＤ型フラッシュメモリのチップ構成の変更に柔軟に対応可能なコントローラが求められる。このような要望は、ＮＡＮＤ型フラッシュメモリに対するインターフェースに限らず、無線通信やＬＡＮといったインターフェースプロトコルなどにおいても同様である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第６，８８６，０８３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、多様なインターフェースに好適に対応することができるコントローラ、記憶装置、および記憶装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態のコントローラは、記憶部に接続され、前記記憶部に対して１つ以上の基本動作を定められた順序で行うコマンドを実行するインターフェース部と、前記基本動作が属するカテゴリ毎に、前記カテゴリに属する前記基本動作の実行時における前記インターフェース部と前記記憶部との間の信号の制御手順を保持する制御部と、を備える。前記制御部は、前記インターフェース部が実行する前記コマンドを構成する前記基本動作を、前記コマンドを構成する基本動作およびその実行の順序を示す第１の情報に基づいて求め、求めた前記基本動作を前記第１の情報に示された順に前記基本動作が属する前記カテゴリを示す第２の情報に基づいて前記インターフェース部に実行させる。
【図面の簡単な説明】
【０００６】
【図１】図１は、本実施形態にかかる記憶装置の構成を示すブロック図である。
【図２】図２は、本実施形態にかかる情報保持部の構成を示す図である。
【図３】図３は、本実施形態のコマンド発行サイクルにおけるインターフェース信号の時間変化を示す図である。
【図４】図４は、本実施形態のアドレス発行サイクルにおけるインターフェース信号の時間変化を示す図である。
【図５】図５は、本実施形態のデータライトサイクルにおけるインターフェース信号の時間変化を示す図である。
【図６】図６は、本実施形態のデータリードサイクルにおけるインターフェース信号の時間変化を示す図である。
【図７】図７は、本実施形態の第１テーブル（ＩＤ０テーブル）の構成を示す図である。
【図８】図８は、本実施形態の第２テーブル（ＩＤ１テーブル）の構成を示す図である。
【図９】図９は、本実施形態の第３テーブル（ＩＤ２テーブル）の構成を示す図である。
【図１０】図１０は、本実施形態の第４テーブル（ＩＤ３テーブル）の構成を示す図である。
【図１１】図１１は、本実施形態のアレイ構成の違いにおけるページカウンタ（Page Counter）からブロックアドレス（Block Address）およびページアドレス（Page Address）を求める対応表である。
【図１２】図１２は、本実施形態におけるＮＡＮＤチップのコンフィギュレーションの設定から、ＮＡＮＤコマンドの発行までのコントローラの動作を示すフローチャートである。
【図１３】図１３は、本実施形態のＮＡＮＤコマンドの基本動作の動作順序を示すタイムチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるコントローラ、記憶装置、および制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
図１は、本実施形態にかかる記憶装置１００の構成を示すブロック図である。記憶装置１００は、不揮発性メモリであるＮＡＮＤチップ２０およびそれを制御するコントローラ１０を備える。コントローラ１０は、ＣＰＵ５、ホストインターフェース２、ＮＡＮＤインターフェース７、情報保持部３、およびロジック回路を含む制御回路４を備える。コントローラ１０は、ホストインターフェース２を介してＰＣなどのホスト１と接続し、ＮＡＮＤインターフェース７を介してＮＡＮＤチップ２０と接続する。情報保持部３は、図２に示すように、後述する第１テーブル３１、第２テーブル３２、第３テーブル３３、および第４テーブル３４を備える。
【０００９】
ＮＡＮＤインターフェース７におけるインターフェースプロトコルの基本構成であるプリミティブ（ｐｒｉｍｉｔｉｖｅ）は、ＮＡＮＤインターフェース７の基本動作に対応する。これらのプリミティブは、例えば、インターフェース仕様である“Ｔｏｇｇｌｅ  ＤＤＲ（Ｄｏｕｂｏｌｅ  Ｄａｔａ  Ｒａｔｅ）  ２．０”により規定されている。ＮＡＮＤインターフェース７の基本動作は、以下に説明する複数のインターフェース信号の制御手順の違いに対応して、複数のカテゴリに分類可能である。例えば、各カテゴリをサイクルと名付ければ、ＮＡＮＤインターフェース７の基本動作は、コマンド発行サイクル（図３）、アドレス発行サイクル（図４）、データライトサイクル（図５）、データリードサイクル（図６）、およびＮＯＰサイクルの５つカテゴリに分類可能である。ＮＯＰサイクルは遅延を指示するサイクルなので図示していない。図３〜図６には、各カテゴリの動作状態における、ＮＡＮＤインターフェース７とＮＡＮＤチップ２０との間の制御信号であるインターフェース信号（アクティブなチップを指示するチップイネーブル（ＣＥＢ）信号、コマンド信号をラッチするコマンドラッチイネーブル（ＣＬＥ）信号、アドレス信号をラッチするアドレスラッチイネーブル（ＡＬＥ）信号、書き込みを可能にするライトイネーブル（ＷＥＢ）信号、読み出しを可能にするリードイネーブル（ＲＥＢ）信号、データ信号の同期信号であるデータストローブ信号（ＤＱＳ）、データを示すデータ信号（ＤＱ）、など）の時間変化を示している。データストローブ信号（ＤＱＳ）、データ信号（ＤＱ）は双方向の信号であるが、残りの信号はＮＡＮＤインターフェース７からＮＡＮＤチップ２０への制御信号である。なお、ＤＱ［７：０］は、データ信号が８ビットであることを示す。
【００１０】
さらに、各サイクルに属する基本動作はプリミティブに対応するように細分化可能である。図７の第１テーブル３１（ＩＤ０テーブル）は、プリミティブに対応するＩＤである“ＩＤ０”ごとに、その基本動作のサイクルおよびデータを示した図である。第１テーブル３１において、“ＩＤ０”は各プリミティブに対応するＩＤを示し、“動作”はサイクルを示し、“データ”はデータ信号（ＤＱ）の内容を示す。
【００１１】
例えば、コマンド発行サイクルは、[８０ｈコマンド]や[００ｈコマンド]などのようにプリミティブに対応する基本動作のレベルまで分類が可能である。コマンド発行サイクルの基本動作においては、例えば、データ信号（ＤＱ）を直接指定するモードがある。指定されたデータ信号（ＤＱ）が[８０ｈコマンド]である場合、図３に示したコマンド発行サイクルのデータ信号（ＤＱ）がＣｏｍｍａｎｄ＝８０ｈとなるよう各インターフェース信号を動作させる。即ち、“ＩＤ０”が“ｃ８０”であった場合、インターフェース信号は、ＣＥＢ＝０、ＣＬＥ＝１（イネーブル状態）、ＡＬＥ＝０、ＷＥＢ＝ストローブ動作（信号が一旦１から０に下がって、その後０から１に上がる動作）、ＲＥＢ＝１（非使用状態）、ＤＱＳ＝非ドライブ状態（不定値）、ＤＱ＝８０ｈとして一意に決定される。なお、図３〜図６に示される各信号の網掛け部分は不定値＜０又は１＞を示している。
【００１２】
図４に示したアドレス発行サイクルの基本動作においては、データ信号（ＤＱ）でＡｄｄｒｅｓｓを直接指定するモードと、８ビットより大きいＮＡＮＤアドレスを指定するＮＡＮＤアドレスモードがある。通常使用するＮＡＮＤアドレスモードでは、例えばＮＡＮＤチップ２０の記憶領域を４０ｂｉｔアドレスで指定する場合、制御回路４により４０ｂｉｔ分のアドレスを生成し、４０ｂｉｔ中の８ｂｉｔ（［７：０］，［１５：８］，［２３：１６］，［３１：２４］，［３９：３２］）をそれぞれ図７のテーブルに“ａ０”，“ａ１”，“ａ２”，“ａ３”，“ａ４”のように登録する。“ＩＤ０”が“ａ０”であった場合、インターフェース信号は、ＣＥＢ＝０、ＣＬＥ＝０、ＡＬＥ＝１（イネーブル状態）、ＷＥＢ＝ストローブ動作、ＲＥＢ＝１、ＤＱＳ＝非ドライブ状態（不定値）、ＤＱ＝ＮＡＮＤ  ＡＤＤＲＥＳＳ［７：０］として一意に決定される。
【００１３】
図５に示したデータライトサイクルの基本動作においては、データ信号（ＤＱ）を直接指定できるモードと、データ転送モードがある。通常使用するデータ転送モードでは、ホスト１からのデータをデータ信号（ＤＱ）とすることでＮＡＮＤチップ２０へのデータ転送が可能となる。データライトのデータ転送モードの場合、即ち、“ＩＤ０”が“ｗｄ”の場合、インターフェース信号は、ＣＥＢ＝０、ＣＬＥ＝０、ＡＬＥ＝０、ＷＥＢ＝１、ＲＥＢ＝１、ＤＱＳ＝トグル（Ｔｏｇｇｌｅ）状態、ＤＱ＝ＷＤａｔａとして一意に決定される。トグル（Ｔｏｇｇｌｅ）状態とは、信号が０から１に変化し、その後１から０に変化する状態である。図５において、データストローブ信号（ＤＱＳ）のトグルにより、ＤＱＳが０から１に変化したときのＤＱの値であるＷＤａｔａの値と、１から０に変化したときのＤＱの値であるＷＤａｔａの値とがＮＡＮＤチップ２０へ転送される。図５は、８ビット×２のデータ転送の様子を示してあるが、トグルの回数を増やせば、８ビット×２×（トグルの回数）のデータ転送が可能である。
【００１４】
図６に示したデータリードサイクルの基本動作においては、ＮＡＮＤチップ２０からのデータをレジスタで保持するレジスタモードと、データ転送モードがある。通常使用するデータ転送モードでは、ＮＡＮＤチップ２０からのリードデータをホスト１へ転送するように制御する。データリードのデータ転送モードの場合、即ち、“ＩＤ０”が“ｒｄ”の場合、インターフェース信号はＣＥＢ＝０、ＣＬＥ＝０、ＡＬＥ＝０、ＷＥＢ＝１、ＲＥＢ＝トグル（Ｔｏｇｇｌｅ）状態、ＤＱＳ＝Ｈｉ−Ｚ、ＤＱ＝Ｈｉ−Ｚとして一意に決定される。この場合、ＤＱＳとＤＱはＮＡＮＤチップ２０からの入力信号となる。図６において、ＲＥＢのトグルに応じてＤＱＳもトグル状態となり、ＤＱＳのトグルにより、ＤＱＳが０から１に変化したときのＤＱの値であるＲＤａｔａの値と、１から０に変化したときのＤＱの値であるＲＤａｔａの値をデータとして受け取る。図６は、８ビット×２のデータ転送の様子を示してあるが、トグルの回数を増やせば、８ビット×２×（トグルの回数）のデータ転送が可能である。ＮＡＮＤチップ２０からのデータをレジスタで保持するモードとしては、ＣＰＵ５にＮＡＮＤチップ２０の状態を知らせるステータスリードなどがある。このプリミティブは、図７の“ＩＤ０”が“ｓｔｒ”で示される。
【００１５】
ＮＯＰサイクルの基本動作の場合、指定した動作サイクル数分の間においてはＮＡＮＤインターフェース７を動作させないように制御する。“ＩＤ０”が“ｔＲＲ”のＮＯＰサイクルの場合、ｔＲＲ時間保障できるようなサイクル数を設定する。各インターフェース信号は、ＮＯＰサイクルの期間中前の状態を保持するように制御する。
【００１６】
上述した図３から図６に示したカテゴリごとのインターフェース信号の制御手順は制御回路４に保持されており、制御回路４はプリミティブのＩＤであるＩＤ０（第１ラベル）と第１テーブル３１（ＩＤ０テーブル）の情報に基づいて、各プリミティブをＮＡＮＤインターフェース７に実行させることができる。
【００１７】
このようにＩＤ（“ＩＤ０”）が確定し、プリミティブが特定された段階で、ＮＡＮＤインターフェース７の制御信号の動作を一意に決定することができる。このプリミティブに対するＩＤは、図７に示すように全カテゴリを通じてユニークなＩＤとなるようにすることができる。従って、例えば、アドレス発行サイクルのカテゴリに属するプリミティブとして、“ａ０”，“ａ１”，“ａ２”，“ａ３”，“ａ４”を纏めて、５Ｂｙｔｅ分のアドレス発行を一つのプリミティブとしてそれに対してＩＤを付与して、図７の第１テーブル３１に登録してもよい。
【００１８】
また、連続して実行可能な基本動作に対応するプリミティブのＩＤ（“ＩＤ０”）を動作順に並べた最小単位の集合に対してＩＤ（“ＩＤ１”）（第２ラベル）を付した表を作成する。これを図８の第２テーブル３２（ＩＤ１テーブル）として示す。この集合は、ＮＡＮＤインターフェース７のプロトコルに従ったフォーマットのコマンドを発行するために定義した集合である。図８の第２テーブル３２（ＩＤ１テーブル）の“ＩＤ０構成”には、連続して実行可能な基本動作に対応するプリミティブのＩＤ（“ＩＤ０”）は動作順に示される。最少単位の例としては、例えば、最初に実行される基本動作からＮＡＮＤチップ２０の動作状態を示すＲＥＡＤＹ／ＢＵＳＹ信号がＢＵＳＹ状態（“０”）になるタイミングまでに実行される基本動作までである。従って、少なくともこの最小単位の間はＲＥＡＤＹ／ＢＵＳＹ信号はＲＥＡＤＹ状態（“１”）である。ＲＥＡＤＹ／ＢＵＳＹ信号もＮＡＮＤインターフェース７とＮＡＮＤチップ２０との間の制御信号であるインターフェース信号の１つである。
【００１９】
さらに、ＮＡＮＤインターフェース７のプロトコル（例えば、“Ｔｏｇｇｌｅ  ＤＤＲ  ２．０”）に従ったフォーマットのコマンド（“ＩＤ２”）にそれを実現するために図８に示した集合（“ＩＤ１”）を動作順に並べた表を作成する。これを図９の第３テーブル３３（ＩＤ２テーブル）として示す。図９の第３テーブル３３（ＩＤ２テーブル）の“ＩＤ１構成”には、“ＩＤ１”の実行順序が示されている。第１テーブル３１〜第３テーブル３３は、ファームウェアを実行するＣＰＵ５が情報保持部３に設定するものである。第１テーブル３１〜第３テーブル３３により、コマンドを構成する基本動作およびその実行の順序（第１の情報）および基本動作のカテゴリ（第２の情報）を制御回路４が知ることができるので、ＮＡＮＤインターフェース７のプロトコルに従ったフォーマットのコマンドを生成することができる。
【００２０】
以上説明した一例のように、図７〜図９に示した３つの階層の第１テーブル３１〜第３テーブル３３を作成するようにしても、ＮＡＮＤインターフェース７のインターフェースプロトコルとして、 “Ｔｏｇｇｌｅ  ＤＤＲ  ２．０”を実行することが可能である。さらに、このようなテーブル構成とすることで、図７の第１テーブル３１の変更だけで新たなプリミティブの追加が可能となる。また、追加した新たなプリミティブを用いた上述した最小単位や、その最小単位を用いたコマンドの作成もテーブルの変更によって容易に可能となる。
【００２１】
そしてさらに、複数の“ＩＤ２”に対応する動作の順番を定めて実行することや“ＩＤ２”に対応する動作を繰り返し実行することを上位コマンドとして定義することも可能である。この上位コマンドを定義した表が図１０である。図１０は、上位コマンドを示すＩＤ（“ＩＤ３”）（第３ラベル）に対応させて“ＩＤ２構成”および“繰り返し回数”を示している。このような第４テーブル３４（ＩＤ３テーブル）を設けることで、“ＩＤ３”で指定される一つの命令セットで２５６ページプログラム（１ページプログラムを２５６回繰り返す）などの上位コマンドを定義すること、およびその実行が可能となる。
【００２２】
ＮＡＮＤインターフェース７のインターフェースプロトコルにおいては、ＮＡＮＤチップ２０のアドレス指定が必要である。しかし、図９の第３テーブル３３（ＩＤ２テーブル）にページアドレス（Ｐａｇｅ  Ａｄｄｒｅｓｓ）の“アドレスインクリメンタ”の情報を付加することにより、アクセスするＮＡＮＤチップ２０のアドレスを容易に生成することができる。“アドレスインクリメンタ”とは、繰り返して実行されるコマンドに対して、次の同一コマンドの実行時における、実行対象となるＮＡＮＤチップ２０のページアドレスの増加量を示す。
【００２３】
以下、アドレス発行サイクルの際の処理を例として説明する。“ＩＤ２”のテーブルの情報としてページカウンタ（Ｐａｇｅ  Ｃｏｕｎｔｅｒ）（アドレスカウンタ）を＋１インクリメントする動作モードを付加する。具体的には、“ＩＤ２”が“ｐａｇｅ  ｐｒｏｇｒａｍ”のときに“アドレスインクリメンタ”に“１”を記載しておく。ページカウンタは制御回路４が備えており、これにより開始アドレスからのシーケンシャルなページアドレスを使用したＮＡＮＤチップ２０へのアクセスが可能となる。
【００２４】
しかし、このままでは、ＮＡＮＤチップ２０内において並列動作可能なプレーン（Ｐｌａｎｅ）の数が異なるＮＡＮＤチップ２０などに対応することができない。なぜならば、ＮＡＮＤチップ２０の消去単位であるブロックのブロックアドレス（Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）は、プレーンの数が複数の場合は、異なるプレーンに跨ってナンバリングされており、アドレスがインクリメントされていくときに、ブロックアドレスとページアドレス（Ｐａｇｅ  Ａｄｄｒｅｓｓ）を指定することが必要となるからである。
【００２５】
そこで、ページカウンタからブロックアドレスとページアドレスを計算する機能を制御回路４に持たせる。これは接続されるＮＡＮＤチップ２０が備えるプレーンの構成によって定まるものである。図１１（ａ）〜（ｃ）に、プレーンの構成に依存した、ページカウンタからブロックアドレスおよびページアドレスを求める対応表の例を示す。ここで、ページアドレスは、各プレーン内のブロックにおけるアドレスを示す。図１１（ａ）は４プレーンの場合、図１１（ｂ）は２プレーンの場合、図１１（ｃ）は１プレーンの場合の対応表をそれぞれ示す。この機能により幅広い世代のＮＡＮＤチップ２０に対し指定数ページのページプログラムを実行することができる。
【００２６】
以下、図１２に示したフローチャートを用いて、コントローラ１０におけるＮＡＮＤチップ２０のコンフィギュレーションの設定から、ＮＡＮＤチップ２０へのＮＡＮＤコマンドの発行までの動作を説明する。
【００２７】
まず、ファームウェアを実行するＣＰＵ５が、ＮＡＮＤチップ２０のコンフィギュレーションを制御回路４に設定し、第１〜第４テーブルを情報保持部３に設定する（ステップＳ１）。具体的には、コントローラ１０に接続するＮＡＮＤチップ２０の記録方式(ＳＬＣ，ＭＬＣ，ＴＬＣ等)やプレーンの数などを制御回路４に設定する。次に、ＣＰＵ５はＮＡＮＤチップ２０に対する実行命令（コマンド）を制御回路４に設定する（ステップＳ２）。ここで設定した実行命令（コマンド）は、例えば上述した“ＩＤ３”で指定したものである。
【００２８】
次に、制御回路４は、ステップＳ２で設定された実行命令を“ＩＤ３”として、情報保持部３が保持する第４テーブル３４（ＩＤ３テーブル）（図１０）を参照して、それに対応する“ＩＤ２構成”および“繰り返し回数”を制御回路４へ返す（ステップＳ３）。例えば、“ＩＤ３が“２５６  ｐａｇｅ  ｐｒｏｇｒａｍ”ならば、“ｐａｇｅ  ｐｒｏｇｒａｍ”および“繰り返し回数”として２５６が得られる。
【００２９】
次に、制御回路４は、ステップＳ３で得られた“ＩＤ２構成”を構成する“ＩＤ２”それぞれに対して、情報保持部３が保持する第３テーブル３３（ＩＤ２テーブル）（図９）を参照して、それに対応する“ＩＤ１構成”を求める（ステップＳ４）。このとき上述したように“アドレスインクリメンタ”の値を求めて、ページカウンタのインクリメントを実行することも可能である。
【００３０】
次に、制御回路４は、ステップＳ４で得られた“ＩＤ１構成”を構成する“ＩＤ１”それぞれに対して、情報保持部３が保持する第２テーブル３２（ＩＤ１テーブル）（図８）を参照して、それに対応する“ＩＤ０構成”を求める（ステップＳ５）。
【００３１】
次に、制御回路４は、ステップＳ５で得られた“ＩＤ０構成”を構成する“ＩＤ０”で示されるプリミティブそれぞれに対して、情報保持部３が保持する第１テーブル３１（ＩＤ０テーブル）を参照して、そのプリミティブに対応する“動作”および“データ”を求める（ステップＳ６）。
【００３２】
以上のステップＳ３〜Ｓ６により、制御回路４は、図１３（ａ）〜（ｄ）に示すようなＮＡＮＤコマンドのプリミティブの構成を把握することが出来るので、ＮＡＮＤチップ２０のコンフィギュレーションに応じ、且つＮＡＮＤインターフェース７のプロトコルに従ったＮＡＮＤコマンドの実行が可能となる。図１３（ａ）〜（ｄ）は、それぞれ、“Ｐａｇｅ  Ｐｒｏｇｒａｍ  Ｏｐｅｒａｔｉｏｎ”，“Ｐａｇｅ  Ｒｅａｄ  Ｏｐｅｒａｔｉｏｎ”，“Ｂｌｏｃｋ  Ｅｒａｓｅ  Ｏｐｅｒａｔｉｏｎ”，“２５６  Ｐａｇｅ  Ｐｒｏｇｒａｍ  Ｏｐｅｒａｔｉｏｎ”のプリミティブの動作のタイムチャートである。ＮＡＮＤインターフェース７は図１３（ａ）〜（ｄ）に示したような情報を制御回路４から与えられることにより、ＮＡＮＤチップ２０に対してＮＡＮＤコマンドを実行する（ステップＳ７）。図１３（ａ）〜（ｄ）に示したそれぞれのプリミティブは、図３〜図６に示したようなインターフェース信号としてＮＡＮＤインターフェース７からＮＡＮＤチップ２０に対して実行される。
【００３３】
本実施形態にかかるコントローラ、記憶装置、および記憶装置の制御方法によれば、与えられたインターフェースプロトコルに従ったフォーマットのコマンドとプリミティブとの関係を示す情報をコントローラが備える。具体的には、ＮＡＮＤコマンドとプリミティブとの関係を、少なくとも３段階の階層的な構成のテーブルで表現し、与えられたコマンドに対して順次テーブルを引くことで、１ページプログラム、１ページリード、１ブロック消去、さらに上位概念として256ページプログラムなどのコマンドに対して、それに対応するＮＡＮＤインターフェースプロトコルに従ったプリミティブの集合を求めることができる。これにより、ＮＡＮＤチップ２０へのコマンド発行が最終的に可能となる。
【００３４】
即ち、３段階構成のテーブルを書き換えるファームウェアの変更だけで、新たなプリミティブの追加も可能で、ハードウェアの変更なしに幅広い世代のＮＡＮＤインターフェースプロトコルに対応することができ、幅広い世代のＮＡＮＤチップを制御することが可能になる。
【００３５】
なお、上記実施形態においては、ハードウェアに適用されるインターフェースプロトコルとしてＮＡＮＤインターフェースを例として説明したが、これに限定されず、プロトコルが規定されているコマンドインターフェースであれば、無線通信や、ＬＡＮ等を対象としてもかまわない。
【００３６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３７】
１  ホスト、２  ホストインターフェース、３  情報保持部、４  制御回路、５  ＣＰＵ、７  ＮＡＮＤインターフェース、１０  コントローラ、１００  記憶装置。
【図１】
2015099570.tif 000003
【図２】
2015099570.tif 000004
【図３】
2015099570.tif 000005
【図４】
2015099570.tif 000006
【図５】
2015099570.tif 000007
【図６】
2015099570.tif 000008
【図７】
2015099570.tif 000009
【図８】
2015099570.tif 000010
【図９】
2015099570.tif 000011
【図１０】
2015099570.tif 000012
【図１１】
2015099570.tif 000013
【図１２】
2015099570.tif 000014
【図１３】
2015099570.tif 000015