(57)【要約】【課題】キャッシュとプリフェッチがより有効となるメモリシステムを提供する。【解決手段】実施形態のメモリシステムは、メモリと読み出した所定サイズデータを保持するキャッシュを有すチップと、キャッシュの出力を記憶するバッファと、キャッシュのデータのメモリ上の第１アドレスを管理するＩ／Ｆと、Ｉ／Ｆとバッファを制御する制御部を持つ。Ｉ／Ｆは、第２アドレスを受け取ると第１アドレスと一致を判定し、一致の時は、第１アドレスと一致するキャッシュのデータをバッファへ転送し、メモリの第２アドレスに所定サイズ分アドレスを加算したアドレスのデータのキャッシュでの存在を判断し、存在しない時は加算後アドレスのデータを所定キャッシュへ読み出し、不一致の時は、メモリの第２アドレスのデータを所定キャッシュを経てバッファへ転送し、メモリの第２アドレスに所定サイズ分のアドレスを加算したアドレスのデータを所定キャッシュに読み出す。【選択図】図１
2012133416.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性のメモリセルアレイと、前記メモリセルアレイから読み出した所定サイズのデータを一時的に保持するキャッシュ領域とを備えるメモリチップと、
前記キャッシュ領域が保持しているデータが記憶されている前記メモリセルアレイ上の物理アドレスをアドレス情報履歴として管理するＮＡＮＤインタフェースと、
ホスト装置から受け取ったコマンドを解釈して前記ＮＡＮＤインタフェースを制御し、前記ホスト装置と前記ＮＡＮＤインタフェースとの間のデータ転送を制御するコントローラと、を備え、
前記ＮＡＮＤインタフェースは、前記メモリセルアレイ上の物理アドレスである読み出し物理アドレスを含む読み出し要求を前記コントローラから受けて、前記読み出し物理アドレスが前記アドレス情報履歴と一致する否かを判定し、
前記読み出し物理アドレスが前記アドレス情報履歴と一致する場合は、前記キャッシュ領域が保持しているデータを、前記一時記憶バッファへ転送し、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定サイズ分のアドレスを加算した物理アドレスのデータが前記キャッシュに存在するかどうかを判断し、存在しない場合には前記算出した物理アドレスのデータを、予め定めた方法に従って決定したキャッシュへ対して読み出し、
前記読み出し物理アドレスが前記キャッシュ物理アドレスのいずれとも一致しない場合は、前記メモリセルアレイ上の前記読み出し物理アドレスのデータを前記予め定めた方法に従って決定したキャッシュを経由して前記一時記憶バッファへ転送し、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定サイズ分のアドレスを加算した物理アドレスのデータを前記予め定めた方法に従って決定したキャッシュに読み出す
ことを特徴とするメモリシステム。
【請求項２】
不揮発性のメモリセルアレイと、前記メモリセルアレイから読み出した所定サイズのデータを一旦保持する第１キャッシュと、前記第１キャッシュから転送された前記所定サイズのデータを一旦保持して出力する第２キャッシュを備えるメモリチップと、
前記第２キャッシュから出力されたデータを一時的に記憶する一時記憶バッファと、
前記第１キャッシュが保持しているデータが記憶されている前記メモリセルアレイ上の物理アドレスである第１キャッシュ物理アドレスと、前記第２キャッシュが保持しているデータが記憶されている前記メモリセルアレイ上の物理アドレスである第２キャッシュ物理アドレスを管理するＮＡＮＤインタフェースと、
ホスト装置から受け取ったコマンドを解釈して前記ＮＡＮＤインタフェースを制御し、前記一時記憶バッファに記憶されたデータの前記ホスト装置への出力を制御するコントローラと、
を備え、
前記ＮＡＮＤインタフェースは、前記メモリセルアレイ上の物理アドレスである読み出し物理アドレスを含む読み出し要求を前記コントローラから受け取ると、前記読み出し物理アドレスが前記第１或いは第２キャッシュ物理アドレスと一致するかどうかを判定し、
前記読み出し物理アドレスが前記第１キャッシュ物理アドレスと一致する場合は、前記第１キャッシュが保持しているデータを前記第２キャッシュにコピーし、前記コピーされたデータを前記第２キャッシュから前記一時記憶バッファへ転送し、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定サイズ分のアドレスを加算した物理アドレスのデータを前記第１キャッシュに読み出し、
前記読み出し物理アドレスが前記第２キャッシュ物理アドレスと一致する場合は、前記第２キャッシュが保持しているデータを前記一時記憶バッファへ転送し、
前記読み出し物理アドレスが前記第１及び第２キャッシュ物理アドレスのいずれとも一致しない場合は、前記メモリセルアレイ上の前記読み出し物理アドレスのデータを前記第１及び第２キャッシュを経由して前記一時記憶バッファへ転送し、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定サイズ分のアドレスを加算した物理アドレスのデータを前記第１キャッシュに読み出す
ことを特徴とするメモリシステム。
【請求項３】
不揮発性のメモリセルアレイと前記メモリセルアレイから読み出した所定サイズのデータを一旦保持するキャッシュを備えるメモリチップと、
前記キャッシュから出力されたデータを一時的に記憶する一時記憶バッファと、
前記キャッシュが保持しているデータが記憶されている前記メモリセルアレイ上の物理アドレスであるキャッシュ物理アドレスを管理するＮＡＮＤインタフェースと、
ホスト装置から受け取ったコマンドを解釈して前記ＮＡＮＤインタフェースを制御し、前記一時記憶バッファに記憶されたデータの前記ホスト装置への出力を制御するコントローラと、
を備え、
前記ＮＡＮＤインタフェースは、前記メモリセルアレイ上の物理アドレスである読み出し物理アドレスを含む読み出し要求を前記コントローラから受け取ると、前記読み出し物理アドレスが前記キャッシュ物理アドレスに含まれるかどうかを判定し、
含まれる場合は前記キャッシュが保持している前記所定サイズ以下の所定単位のデータを前記一時記憶バッファへ転送し、
含まれない場合は前記メモリセルアレイ上の前記読み出し物理アドレスのデータを前記キャッシュを経由して前記一時記憶バッファへ転送し、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定単位分のアドレスを加算した物理アドレスのデータを前記キャッシュに読み出す
ことを特徴とするメモリシステム。
【請求項４】
前記ホスト装置から書き込み要求がされた場合に、前記メモリセルアレイへの書き込みに前記キャッシュを使用したときの前記キャッシュ物理アドレスを前記ＮＡＮＤインタフェースが管理する
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載のメモリシステム。
【請求項５】
前記ＮＡＮＤインタフェースはコントローラの指示に従い、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定サイズ分のアドレスを加算した物理アドレスのデータを前記第１キャッシュを読み出す処理を行わない機能を備え、
前記コントローラは、前記ホスト装置から読み出し要求がされた場合に、前記読み出し要求がシーケンシャルアクセスかランダムアクセスかを判断するアクセス予測機能を備え、
前記コントローラのアクセス予測機能がランダムアクセスと判断した場合に、前記ＮＡＮＤインタフェースに対して前記読み出し処理を禁止する指示を出す
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載のメモリシステム。
【請求項６】
前記コントローラは、前記ホスト装置から受け取った書き込みデータを、前記ホスト装置が前記書き込みデータに使用する論理アドレスの順番に前記書き込みデータを整列させ、前記メモリセルアレイ上の物理アドレスが低いページから順番に、前記整列させた書き込みデータの先頭データから書き込みを行う
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載のメモリシステム。
【請求項７】
前記ホスト装置が前記書き込みデータに使用する論理アドレスの順番に前記書き込みデータを整列させる整列処理において、連続した論理アドレスとして抜けがある場合には、抜けている論理アドレスのデータを読み出し、前記読み出したデータを含めて前記書き込みデータを整列させる
ことを特徴とする請求項６に記載のメモリシステム。
【請求項８】
前記コントローラは、前記メモリシステム内でデータのコピーを実行する際に、前記ホスト装置が使用する論理アドレスの順番に前記コピーデータを整列させ、前記メモリセルアレイ上の物理アドレスが低いページから順番に、前記整列させたコピーデータの先頭データから書き込みを行う
ことを特徴とする請求項６または請求項７に記載のメモリシステム。
【請求項９】
前記コントローラは、前記ホスト装置から受け取った書き込みデータを、前記ホスト装置から受け取った順番に前記書き込みデータを整列させ、前記メモリセルアレイ上の物理アドレスが低いページから順番に、前記整列させた書き込みデータの先頭データから書き込みを行う
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
従来のＮＡＮＤ型フラッシュメモリを利用したＳＳＤ等のストレージシステムにおいては、ＮＡＮＤ型フラッシュメモリからデータを読み出す際の待ち時間を隠ぺいするために、あらかじめホストから要求されると予想できるデータをＮＡＮＤ型フラッシュメモリから読み出しておくプリフェチを行っており、シーケンシャルリード（Sequential Read）などのアクセスパターンで性能を向上させている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１１２１７号公報
【特許文献２】特開２００７−２１３８０６号公報
【特許文献３】特開２００９−１５８０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、データの再利用をするキャッシュとデータの先読みをするプリフェッチとがより有効に機能するメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態のメモリシステムは、１つ以上の不揮発性のメモリセルアレイと、前記メモリセルアレイから読み出した所定サイズのデータを一旦保持する一つ以上のキャッシュとを備えるメモリチップと、前記キャッシュから出力されたデータを一時的に記憶する一時記憶バッファと、前記１つ以上のキャッシュが保持しているデータが記憶されている前記メモリセルアレイ上の物理アドレスである一つ以上のキャッシュ物理アドレスを管理するＮＡＮＤインタフェースと、ホスト装置から受け取ったコマンドを解釈して前記ＮＡＮＤインタフェースを制御し、前記一時記憶バッファに記憶されたデータの前記ホスト装置への出力を制御するコントローラと、を備える。
【０００６】
前記ＮＡＮＤインタフェースは、前記メモリセルアレイ上の物理アドレスである読み出し物理アドレスを含む読み出し要求を前記コントローラから受け取ると、前記読み出し物理アドレスが前記キャッシュ物理アドレスと一致するかどうかを判定し、前記読み出し物理アドレスが前記キャッシュ物理アドレスと一致する場合は、前記キャッシュ物理アドレスと一致する前記キャッシュが保持しているデータを、前記一時記憶バッファへ転送し、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定サイズ分のアドレスを加算した物理アドレスのデータが前記キャッシュに存在するかどうかを判断し、存在しない場合には前記算出した物理アドレスのデータを、予め定めた方法に従って決定したキャッシュへ対して読み出し、前記読み出し物理アドレスが前記キャッシュ物理アドレスのいずれとも一致しない場合は、前記メモリセルアレイ上の前記読み出し物理アドレスのデータを前記予め定めた方法に従って決定したキャッシュを経由して前記一時記憶バッファへ転送し、前記メモリセルアレイ上の前記読み出し物理アドレスに前記所定サイズ分のアドレスを加算した物理アドレスのデータを前記予め定めた方法に従って決定したキャッシュに読み出す。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態にかかるメモリシステムの構成を示すブロック図である。
【図２】図２は、第１の実施形態のＮＡＮＤメモリチップの構成の一例を示す図である。
【図３】図３は、第１の実施形態の読み出し時におけるアドレス判定の様子を示すフローチャートである。
【図４】図４は、アドレス判定がヒットした場合のメモリシステムの動作を示すフローチャートである。
【図５】図５は、アドレス判定がヒットした場合のメモリシステムの動作を示す別のフローチャートである。
【図６】図６は、アドレス判定がヒットした場合のＩ／Ｏ信号の状態、Ｒｙ／Ｂｙ信号の状態、ＮＡＮＤメモリチップ１００の動作状態の変化を示す図である。
【図７】図７は、アドレス判定がミスした場合のメモリシステムの動作を示すフローチャートである。
【図８】図８は、アドレス判定がミスした場合のＩ／Ｏ信号の状態、Ｒｙ／Ｂｙ信号の状態、ＮＡＮＤメモリチップ１００の動作状態の変化を示す図である。
【図９】図９は、第２の実施形態の読み出し時におけるアドレス判定の様子を示すフローチャートである。
【図１０】図１０は、アドレス判定がヒットした場合のメモリシステムの動作を示すフローチャートである。
【図１１】図１１は、アドレス判定がミスした場合のメモリシステムの動作を示すフローチャートである。
【図１２】図１２は、第３の実施形態のＮＡＮＤメモリチップの構成の一例を示す図である。
【図１３】図１３は、第３の実施形態の読み出し時におけるアドレス判定の様子を示すフローチャートである。
【図１４】図１４は、アドレス判定がヒットした場合のメモリシステムの動作を示すフローチャートである。
【図１５】図１５は、アドレス判定がミスした場合のメモリシステムの動作を示すフローチャートである。
【図１６】図１６は、プリフェッチ時のメモリシステムの動作を示すフローチャートである。
【図１７】図１７は、パーソナルコンピュータの外観を示す斜視図である。
【図１８】図１８は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【０００８】
従来技術では、データの再利用を図るためにキャッシュしたデータまたはアクセス性能向上のためにプリフェッチしたデータを記録するためのバッファ量が多くなり、さらに性能を向上させるため複数の連続データの読み出しに対応しようとすると、バッファ量が巨大になるほか内部バンド幅の圧迫、バッファ管理の複雑化などが深刻になる。また、ホストＩ／Ｆの高速化に伴いプリフェッチの管理をするために許される処理時間が非常に短くなっており、性能を向上させるための処理が逆に性能を抑制するといった問題も発生する。
【０００９】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１０】
（第１の実施形態）
図１は、本実施形態にかかるメモリシステム１の構成を示すブロック図である。ここでは、メモリシステム１の一例としてＳＳＤ（Solid  State  Drive）を例に挙げて説明するが、本実施形態の適用対象はＳＳＤに限定しない。例えば、不揮発にデータを記憶する半導体メモリおよびコントローラを搭載したメモリカード等の補助記憶装置に対しても、本実施の形態を適用することが可能である。図１では、概ね、データ線を実線で示し、制御線を破線で示している。
【００１１】
また、各実施形態における各機能ブロックは、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
【００１２】
メモリシステム１は、パーソナルコンピュータなどのホスト装置６０とホストインターフェース（ホストＩ／Ｆ）５０で接続され、ホスト装置６０の外部記憶装置として機能する。メモリシステム１は、ホストＩ／Ｆ５０と、ホスト装置６０からリード／ライトされるデータを記憶する不揮発性半導体メモリであるＮＡＮＤメモリチップ１００〜４００と、メモリシステム１とホスト装置６０とのデータ転送制御にかかる各種制御を実行するコントローラ３０と、コントローラ３０がデータ転送のための転送データを一次格納するために使用され、例えばＤＲＡＭなどの揮発性半導体メモリで構成される一時記憶バッファ４０と、ＮＡＮＤメモリチップ１００〜４００と一時記憶バッファ４０との間のデータ転送制御を実行するＮＡＮＤインタフェース（ＮＡＮＤＩ／Ｆ）２０とを備える。
【００１３】
コントローラ３０は、アドレス管理部３１、及びＳＲＡＭまたはＤＲＡＭなどの揮発性半導体メモリ（図示せず）を備えている。アドレス管理部３１は、揮発性半導体メモリ上で、ホスト装置６０が指定する論理アドレスとしてのＬＢＡ（Logical Block Addressing）とＮＡＮＤメモリチップ１００〜４００上でのデータ記憶位置である物理アドレスとの対応関係を示す論物変換テーブルを管理する。
【００１４】
ホスト装置６０から送信されてきたデータは、コントローラ３０の制御の基に、ホストＩ／Ｆ５０を経由して一時記憶バッファ４０に一旦格納され、その後、一時記憶バッファ４０から読み出されてＮＡＮＤＩ／Ｆ２０を経由してＮＡＮＤメモリチップ１００〜４００に書き込まれる。ＮＡＮＤメモリチップ１００〜４００から読み出されたデータは、ＮＡＮＤＩ／Ｆ２０を経由して一時記憶バッファ４０に一旦格納され、その後、一時記憶バッファ４０から読み出されてホストＩ／Ｆ５０を経由してホスト装置６０に転送される。
【００１５】
ＮＡＮＤメモリチップ１００〜４００は、ホスト装置６０によって指定されたユーザデータを記憶したり、アドレス管理部３１で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリチップ１００〜４００は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有している。各メモリチップ１００〜４００は、データ消去の単位である物理ブロックを複数配列して構成される。例えば、ＮＡＮＤメモリチップ１００では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１６】
ホストＩ／Ｆ５０は、例えばＡＴＡ（Advanced  Technology  Attachment）規格の通信インタフェースを有し、コントローラ３０の制御にしたがってメモリシステム１とホスト装置６０との通信を制御する。ホストＩ／Ｆ５０は、ホスト装置６０から送信されたコマンドを受信し、当該コマンドによって論理アドレス（ＬＢＡ）が指定されたデータの書き込みが要求されている場合、当該コマンド（ライトコマンド）をコントローラ３０に送る。その際、書き込みが要求されたデータを一時記憶バッファ４０に送る。
【００１７】
一時記憶バッファ４０は、データ転送用の一時記憶部として使用される。すなわち、ホスト装置６０から書込み要求があったデータをＮＡＮＤメモリチップ１００〜４００に書込む前に一時的に保存したり、ホスト装置６０から読出し要求があったデータをＮＡＮＤメモリチップ１００〜４００から読出して一時的に保存したりするために使用される。ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００〜４００と一時記憶バッファ４０との間のデータ転送制御を実行するものである。
【００１８】
コントローラ３０は、ホストＩ／Ｆ５０を介してホスト装置６０から受け取ったコマンドを解釈し、それに応じてＮＡＮＤＩ／Ｆ２０を制御する機能を有する。コントローラ３０は、読み出し制御部３２および書き込み制御部３３をさらに備える。読み出し制御部３２は、ホストＩ／Ｆ５０から受け取った読み出し要求を解釈し、ＮＡＮＤＩ／Ｆ２０に読み出しにかかるＮＡＮＤ制御コマンドを発行する。書き込み制御部３３は、ホストＩ／Ｆ５０から受け取った書き込み要求を解釈し、ＮＡＮＤＩ／Ｆ２０に書き込みにかかるＮＡＮＤ制御コマンドを発行する。
【００１９】
ＮＡＮＤメモリチップ１００〜４００は、ホストコマンドにより書き込み要求されたデータを記憶する。ＮＡＮＤメモリチップ１００〜４００はＮＡＮＤ型の不揮発性の記憶素子から構成される。各ＮＡＮＤメモリチップの構成の一例としてＮＡＮＤメモリチップ１００を例として図２に説明する。ＮＡＮＤメモリチップ１００は、読み書きの単位（ページ）とブロックと呼ばれる複数のページをまとめた消去単位とを有するメモリセルアレイ１０を備えている。１ページのデータは、例えばセクタサイズの整数倍のデータ部と、誤り訂正などに使用する冗長部とを加算したサイズを有している。ＮＡＮＤメモリチップ１００は、ＮＡＮＤＩ／Ｆ２０を介してコントローラ３０から受信したＮＡＮＤ制御コマンドに基づいて、ホスト装置６０から書き込み／読み出し要求された１または複数セクタサイズのデータをページ単位で入出力する。
【００２０】
また、ＮＡＮＤメモリチップ１００は、ＮＡＮＤＩ／Ｆ２０との間でページサイズの転送データを送受信するための一次バッファであるデータキャッシュ１２と、データキャッシュ１２とメモリセルアレイ１０との間に介在する二次バッファであるページバッファ１１とを備えている。ページバッファ１１およびデータキャッシュ１２は図１ではまとめてキャッシュ１１０として示してある。ページバッファ１１およびデータキャッシュ１２は、例えばＳＲＡＭにより構成される。
【００２１】
ＮＡＮＤメモリチップ１００は、書き込み時には、ＮＡＮＤＩ／Ｆ２０から送信されてきたデータをデータキャッシュ１２に格納し、格納したデータをページバッファ１１に転送し、転送完了後に、ページバッファ１１に格納されたデータをメモリセルアレイ１０にページ単位で書き込む。ＮＡＮＤメモリチップ１００は、読み出し時には、読み出し要求されたデータをメモリセルアレイ１０からページ単位でページバッファ１１に読み出して、読み出し完了後にページバッファ１１からデータキャッシュ１２にデータを転送し、データキャッシュ１２からＮＡＮＤＩ／Ｆ２０にデータを転送する。
【００２２】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００〜４００における各ページバッファ１１およびデータキャッシュ１２に現在格納されているページサイズのデータが、メモリセルアレイ１０においてどの物理アドレス（ページアドレス）に対応するものであるかを示すアドレス情報（以下、アドレス情報履歴と呼ぶ）を記憶し、後述する書き込み及び読み出し要求に応じて、このアドレス情報履歴を更新する機能を有する。
【００２３】
本実施形態においては、ＮＡＮＤＩ／Ｆ２０が備えるキャッシュ管理部２１が、ページバッファ１１およびデータキャッシュ１２に現在格納されているページサイズのデータの物理アドレスを管理している。これにより、ＮＡＮＤＩ／Ｆ２０は、以下に説明する読み出し時の動作が可能となる。
【００２４】
コントローラ３０は、ホストＩ／Ｆ５０を介してホスト装置６０から読み出し要求を受け取る。当該読み出し要求には読み出しアドレスとして論理アドレス（ＬＢＡ）が指定されている。コントローラ３０の読み出し制御部３２は、ホストＩ／Ｆ５０から受け取った読み出し要求を解釈し、ＮＡＮＤＩ／Ｆ２０に読み出しにかかるＮＡＮＤ制御コマンドを発行する。具体的には、アドレス管理部３１が管理する論物変換テーブルを用いて読み出し要求に指定された論理アドレス（ＬＢＡ）に対応する物理アドレスを求め、当該物理アドレス（以下、読み出しアドレスと呼ぶ）を読み出し要求と共にＮＡＮＤ制御コマンドとしてＮＡＮＤＩ／Ｆ２０に発行する。
【００２５】
以下、読み出し要求と読み出しアドレスとを含むＮＡＮＤ制御コマンドがコントローラ３０の読み出し制御部３２からＮＡＮＤＩ／Ｆ２０に発行されてからのメモリシステム１の動作、特にＮＡＮＤＩ／Ｆ２０の動作を図３乃至図６のフローチャートを用いて説明する。
【００２６】
まず、図３のフローチャートについて説明する。図３では、ＮＡＮＤメモリチップ１００が備えるキャッシュリード機能を使用してページバッファ１１とデータキャッシュ１２との両方を考慮した制御を行う場合を想定する。
【００２７】
本実施形態では、キャッシュリードは、ページバッファ１１及びデータキャッシュ１２を利用して、データキャッシュ１２から外部へデータ出力を行っている最中に、連続するページアドレスあるいは指定したページアドレスのデータをメモリセルアレイ１０からページバッファ１２に先行して読みだす（プリフェッチする）動作を意味し、キャッシュリードコマンドは当該動作を指示するコマンドを示す。本実施形態では、後続するページアドレスのデータをページバッファ１１にプリフェッチする動作をシーケンシャルキャッシュリードと呼び、指定したページアドレスのデータをページバッファ１１にプリフェッチする動作をランダムキャッシュリードと呼ぶ。
【００２８】
ＮＡＮＤメモリチップ１００は、シーケンシャルキャッシュリード及びランダムキャッシュリードの少なくとも一方を実行することが可能である。キャッシュリードコマンドを使用する場合には、一般的に、読み出し対象最終ページのアドレス入力時に終了コマンド（例えば、“３Ｆｈ”）を入力し、後続ページのページバッファ１１への読み出しを中止する。しかし、本実施形態では、ＮＡＮＤＩ／Ｆ２０は、そのような終了コマンドを入力せずに、常に後続するページアドレスあるいは指定したページアドレスのデータをページバッファ１１へ先行して読み出し、かつその物理アドレス（ページアドレス）を管理することで、ページバッファ１１をプリフェッチ用のバッファとして利用している。
【００２９】
キャッシュ管理部２１は、ＮＡＮＤＩ／Ｆ２０に発行されたＮＡＮＤ制御コマンドが読み出し要求であるか否かを判定する（図３、ステップＳ１０）。読み出し要求でない場合（ステップＳ１０：Ｎｏ）、キャッシュ管理部２１は、ＮＡＮＤＩ／Ｆ２０に発行されたＮＡＮＤ制御コマンドが書き込み要求か否かを判定する（ステップＳ７）。
【００３０】
ＮＡＮＤＩ／Ｆ２０に発行されたＮＡＮＤ制御コマンドが書き込み要求である場合（ステップＳ７：Ｙｅｓ）、キャッシュ管理部２１は、書き込みコマンドの実行完了までに、メモリセルアレイ１０に書き込まれるページバッファ１１およびデータキャッシュ１２に保持されているデータのメモリセルアレイ１０上での物理アドレス（ページアドレス）をアドレス情報履歴として記憶する（ステップＳ８）。
【００３１】
これにより、下記で説明する読み出し要求時に読み出しアドレスがアドレス情報履歴にヒットした場合において、ページバッファ１１およびデータキャッシュ１２に書き込みのために保持されたデータをキャッシュとして再利用できる。ステップＳ７において、ＮＡＮＤ制御コマンドが書き込み要求でもないと判定された場合（ステップＳ７：Ｎｏ）、キャッシュ管理部２１は、当該コマンドを実行するとともに、アドレス情報履歴をクリアする（ステップＳ９）。
【００３２】
ステップＳ１０の判定で読み出し要求である場合（ステップＳ１０：Ｙｅｓ）、ＮＡＮＤ制御コマンドは読み出し要求および読み出しアドレスを含んでいる。キャッシュ管理部２１は、アドレス情報履歴を参照するためステップＳ１１に進む。ここでは、読み出しアドレスはＮＡＮＤメモリチップ１００のメモリセルアレイ１０上でのデータ記憶位置である物理アドレスであるとして説明する。読み出しアドレスはより詳細には、読み出すページ位置と当該ページ内のカラム位置とを示している。
【００３３】
ステップＳ１１では、キャッシュ管理部２１は、読み出しアドレスを含むページのアドレス（以下、読み出しページアドレスと呼ぶ）が、アドレス情報履歴として記憶されているデータキャッシュ１２に格納されたデータの物理アドレス（ページアドレス）と一致しているか否かを判定する。読み出しページアドレスがデータキャッシュ１２に格納されているデータのページアドレスと一致する場合は（ステップＳ１１：Ｙｅｓ）、「ヒット（ケース０）」（ステップＳ１２）へと進む。
【００３４】
読み出しページアドレスがデータキャッシュ１２に格納されているデータのページアドレスと一致しない場合は（ステップＳ１１：Ｎｏ）、キャッシュ管理部２１は、読み出しページアドレスが、アドレス情報履歴として記憶されているページバッファ１１に格納されているデータの物理アドレス（ページアドレス）と一致しているか否かを判定する（ステップＳ１３）。
【００３５】
読み出しページアドレスがページバッファ１１に格納されているデータのページアドレスと一致する場合は（ステップＳ１３：Ｙｅｓ）、「ヒット（ケース１）」（ステップＳ１４）へと進む。それ以外の場合（ステップＳ１３：Ｎｏ）は「ミス」（ステップＳ１５）へと進む。
【００３６】
「ヒット（ケース０）」（図３のステップＳ１２）の場合、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、データキャッシュ１２からの読み出しを要求するリードコマンドを発行する。データキャッシュ１２にキャッシュされているデータにヒットした場合のメモリシステム１の動作を図４のフローチャートに示す。
【００３７】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、データキャッシュ１２に保持されているページサイズのデータのうち、読み出しアドレスに対応する範囲のデータをデータキャッシュ１２から出力させるためのコマンド（例えば、“０５ｈ”−カラムアドレス−“Ｅ０ｈ”）を発行する。ＮＡＮＤメモリチップ１００は、／ＲＥクロックの入力を受けて、指定されたカラムアドレスに対応する範囲のデータをデータキャッシュ１２から出力する。ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００から出力されたデータを一時記憶バッファ４０に転送する（ステップＳ２０）。なお、ページアドレス先頭からデータを出力する場合は、コマンド入力無しに／ＲＥクロックをトグルすれば良い。
【００３８】
次に、キャッシュ管理部２１は、アドレス情報履歴を更新する（ステップＳ２１）。ここでは、データキャッシュ１２のアドレス情報履歴を無効化する。あるいは、アドレス情報履歴と共に当該アドレスのデータが出力済みかどうかを示すフラグ情報を保持している場合は、データキャッシュ１２のデータがデータ出力済みであるとのフラグ情報を付加することなどが考えられる。
【００３９】
なお、データキャッシュ１２およびページバッファ１１の内容に変化は無いので、キャッシュ管理部２１は、アドレス情報履歴に対して何もしないという選択も可能である。また、この場合ページバッファ１１には連続するページアドレスあるいは指定したページアドレスのデータが既にプリフェッチされた状態であるため、ＮＡＮＤメモリチップへの新規のコマンドは発行されない。
【００４０】
「ヒット（ケース１）」（図３のステップＳ１４）の場合、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、ページバッファ１１からの読み出しを要求するリードコマンドを発行する。ページバッファ１１にキャッシュされたデータにヒットした場合のメモリシステム１の動作を図５のフローチャートに示す。さらにこの場合の、ＮＡＮＤメモリチップ１００のＩ／Ｏ信号の状態、Ｒｙ／Ｂｙ信号の状態、及び内部の動作状態の変化を図６に示す。
【００４１】
ページバッファ１１からデータキャッシュ１２へのデータ転送、データキャッシュ１２からのデータ出力、及び後続のページアドレスあるいは指定したページアドレスのデータをページバッファ１１にプリフェッチするために、図６に示すように、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へキャッシュリードコマンドを入力する。後続の連続するページアドレスに対応するデータをプリフェッチする場合は、シーケンシャルキャッシュリードコマンド（例えば、“３１ｈ”）を入力し、プリフェッチするページアドレスを指定する場合は、ランダムキャッシュリードコマンド（例えば、“００ｈ”−ページアドレス−“３１ｈ”）を入力する。
【００４２】
ＮＡＮＤメモリチップ１００は、キャッシュリードコマンドを受けて、ページバッファ１１のデータをデータキャッシュ１２に転送する（図５、ステップＳ３０）（図６(ａ)）。この間のレイテンシをｔＤＣＢＹと表記し、ＮＡＮＤメモリチップ１００は、Ｒｙ／Ｂｙ信号をＢｙ状態とする。ｔＤＣＢＹについては後述する。
【００４３】
ページバッファ１１からデータキャッシュ１２へのデータ転送（ステップＳ３０）が完了するとＲｙ／Ｂｙ信号はＲｙ状態になる。その後、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、データキャッシュ１２に保持されているページサイズのデータのうち、読み出しアドレスに対応する範囲のデータをデータキャッシュ１２から出力させるためのコマンド（例えば、“０５ｈ”−カラムアドレス−“Ｅ０ｈ”）を発行する。ＮＡＮＤメモリチップ１００は、／ＲＥクロックの入力を受けて、指定されたカラムアドレスに対応する範囲のデータをデータキャッシュ１２から出力する。ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００から出力されたデータを一時記憶バッファ４０に転送する（ステップＳ３１）（図６(ｂ)）。なお、ページアドレス先頭からデータを出力する場合は、コマンド入力無しに／ＲＥクロックをトグルすれば良い。
【００４４】
データキャッシュ１２からのデータ出力と並行して、ＮＡＮＤメモリチップ１００は、シーケンシャルキャッシュリードの場合、後続するページアドレスのデータをメモリセルアレイ１０からページバッファ１１へと読み出し（プリフェッチ）、ランダムキャッシュリードの場合、指定されたページアドレスのデータをメモリセルアレイ１０からページバッファ１１へと読み出す（ステップＳ３２）（図６(ｂ)）。
【００４５】
最後に、キャッシュ管理部２１は、アドレス情報履歴を、データキャッシュ１２およびページバッファ１１が新たに保持することになったデータに対応する物理アドレス（ページアドレス）に更新する（ステップＳ３３）。
【００４６】
ＮＡＮＤＩ／Ｆ２０が発行するキャッシュリードコマンドが上述したシーケンシャルキャッシュリードである場合、ＮＡＮＤメモリチップ１００内部の２つのバッファであるデータキャッシュ１２とページバッファ１１に保持されたデータのページアドレスは連続している。従って、ＮＡＮＤメモリチップ１００内部の２つのバッファに保持されたデータのうち、ページアドレスが大きい方のデータ（ページＮ）を格納するバッファにヒットした場合は、自動的に後続のページアドレスのデータ（ページＮ＋１）をプリフェッチするようにすれば、本実施形態と同様の効果を達成できる。
【００４７】
なお、ＮＡＮＤＩ／Ｆ２０がランダムキャッシュリードコマンドを発行する場合、コントローラ３０の読み出し制御部３２が、次に読み出すアドレスを予測するアドレス予測機能を備え、ＮＡＮＤＩ／Ｆ２０が複数の要求を受け取る機能を備え、ＮＡＮＤメモリチップ１００がランダムキャッシュリードコマンドを解釈できることが必要である。この場合は以下のような動作となる。
【００４８】
即ち、コントローラ３０がＮＡＮＤＩ／Ｆ２０に対して読み出しにかかるＮＡＮＤ制御コマンドを発行するとともに、次に読み出すデータのアドレスを予測して発行し、ＮＡＮＤＩ／Ｆ２０は要求されたデータ転送を実行するとともに、ランダムキャッシュリードコマンドを利用して指定されたアドレスをＮＡＮＤメモリチップ１００へ発行し、次に読み出されると予測したデータをページバッファ１１内に準備（プリフェッチ）する。
【００４９】
ここで、ＮＡＮＤＩ／Ｆ２０は、ホスト装置６０から次に読み出すアドレスを受け取っているか否かで動作の切り替えを行っても良い。具体的には、ＮＡＮＤＩ／Ｆ２０は、次に読み出すアドレスを受け取った場合には、ランダムキャッシュリードコマンドを利用して指定されたアドレスをＮＡＮＤメモリチップ１００へ発行し、次に読み出されると予測したデータをページバッファ１１内に準備する。一方、次に読み出すアドレスを受け取らなかった場合には、ＮＡＮＤＩ／Ｆ２０は、シーケンシャルキャッシュリードコマンドを利用して、後続するページアドレスのデータをページバッファ１１内に準備する。
【００５０】
「ミス」（図３のステップＳ１５）の場合のメモリシステム１の動作を図７のフローチャートに示す。さらにこの場合の、ＮＡＮＤメモリチップ１００のＩ／Ｏ信号の状態、Ｒｙ／Ｂｙ信号の状態、及び内部の動作状態の変化を図８に示す。
【００５１】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へ、読み出し動作を開始する旨を通知するリードコマンド（“００ｈ”）と、読み出し対象のページアドレスと、内部読み出し動作を開始させる旨を通知するリード開始コマンド（“３０ｈ”）とを送信する。読み出しコマンド、アドレス、読み出し開始コマンドは全体でノーマルリードコマンドを構成する（例えば、“００ｈ”−ページアドレス−“３０ｈ”）。
【００５２】
ＮＡＮＤメモリチップ１００は、図８に示すように、リード開始コマンドを受信した後、Ｒｙ／Ｂｙ信号をＲｙからＢｙに遷移させる。そして、メモリセルアレイ１０のページＮからデータを読み出して、読み出したデータをページバッファ１１に格納する。ＮＡＮＤメモリチップ１００は、ページバッファ１１に格納されたデータをデータキャッシュ１２へ転送する（ステップＳ４０）（図８(ａ)）。ＮＡＮＤメモリチップ１００は、ページＮから読み出したデータをデータキャッシュ１２に格納すると、Ｒｙ／Ｂｙ信号をＢｙ状態からＲｙ状態に遷移させる。なお、ここで、Ｒｙ／Ｂｙ信号がＢｙ状態となっている間の時間（レイテンシ）はｔＲである。
【００５３】
Ｒｙ／Ｂｙ信号がＲｙに復帰した後、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へ、キャッシュリードコマンドを送信する。キャッシュリードコマンドを受信すると、ＮＡＮＤメモリチップ１００は、図８(ｂ)に示すように、ページバッファ１１に格納されているページＮにかかるデータをデータキャッシュ１２へ再度転送する（ステップＳ４１）。この間、ＮＡＮＤメモリチップ１００は、Ｒｙ／Ｂｙ信号をｔＤＣＢＹの間Ｂｙ状態とする。データをページバッファ１１からデータキャッシュ１２へ転送する処理は、レジスタ間のデータ転送であるため、メモリセルアレイ１０に対するアクセスを伴う内部リードよりも著しく短い時間で実行される。すなわち、ｔＤＣＢＹはｔＲよりも著しく小さい。
【００５４】
ページバッファ１１からデータキャッシュ１２へのデータ転送（ステップＳ４１）が完了するとＲｙ／Ｂｙ信号はＲｙ状態になる。その後、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、データキャッシュ１２に保持されているページサイズのデータのうち、読み出しアドレスに対応する範囲のデータをデータキャッシュ１２から出力させるためのコマンド（例えば、“０５ｈ”−カラムアドレス−“Ｅ０ｈ”）を発行する。ＮＡＮＤメモリチップ１００は、／ＲＥクロックの入力を受けて、指定されたカラムアドレスに対応する範囲のデータをデータキャッシュ１２から出力する。ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００から出力されたデータを一時記憶バッファ４０に転送する（ステップＳ４２）（図８(ｃ)）。なお、ページアドレス先頭からデータを出力する場合は、コマンド入力無しに／ＲＥクロックをトグルすれば良い。
【００５５】
データキャッシュ１２からのデータ出力と並行して、ＮＡＮＤメモリチップ１００は、シーケンシャルキャッシュリードの場合、後続の連続するページアドレスのデータをメモリセルアレイ１０からページバッファ１１へと読み出し（プリフェッチ）、ランダムキャッシュリードの場合、指定されたページアドレスのデータをメモリセルアレイ１０からページバッファ１１へと読み出す（ステップＳ４３）（図８(ｃ)）。
【００５６】
最後に、キャッシュ管理部２１は、アドレス情報履歴を、データキャッシュ１２およびページバッファ１１が新たに保持することになったデータに対応する物理アドレス（ページアドレス）に更新する（ステップＳ４４）。
【００５７】
ここでは簡単のため読み出しアドレスはＮＡＮＤメモリチップ１００上の物理アドレスである場合に限定して説明したが、読み出しアドレスがＮＡＮＤメモリチップ１００以外の場合は、ＮＡＮＤメモリチップ２００〜４００に対して上記同様の操作を実行すればよい。即ち、図１に示した複数のＮＡＮＤメモリチップ１００〜４００それぞれにデータキャッシュおよびページバッファが備えられている場合、それらに保持されるデータの物理アドレスをキャッシュ管理部２１が全て管理することにより、上記同様プリフェッチを伴う読み出し制御が可能となる。
【００５８】
物理アドレスが連続した複数ページのデータがホスト装置６０からの読み出し対象となっている場合において、ノーマルリードコマンド（例えば、“００ｈ”−ページアドレス−“３０ｈ”）をページアドレス毎に実行すると、ノーマルリードを実行する毎に内部リードにかかる上述したレイテンシｔＲが発生する。
【００５９】
これに対し、本実施形態で用いたキャッシュリードコマンドを実行すると、最初のページアドレスのデータの読み出し時に内部リードにかかるレイテンシｔＲが発生するものの、１ページ分のデータを転送完了する頃には次のページアドレスのデータをページバッファ１１に先読み（プリフェッチ）しているので、ｔＲのように大きなレイテンシを発生させることなく当該次のページアドレスのデータの転送を開始することができる。
【００６０】
すなわち、次の読み出しアドレスがページバッファ１１にプリフェッチしたデータにヒットする場合は、キャッシュリードを用いることで内部リードにかかる待ち時間を隠蔽することができ、結果として効率よくホスト装置６０とメモリシステム１との間でデータ転送を行うことができるようになる。
【００６１】
一方で、キャッシュリードには、後続のページをキャッシュメモリに読み出しておくためのキャッシュビジー時間（ｔＤＣＢＹ）が存在し、その間は、次のリードを実行することはできないため、オーバヘッドとなりリードの間隔が空く。言い換えると、単一のコマンドに関しては、ノーマルリードの方がレスポンスタイムは短い。この特性の違いを活かすために、シーケンシャルリード要求に対してはキャッシュリード、ランダムリード要求に対してはノーマルリードというように使い分けると性能が向上する。
【００６２】
キャッシュリードとノーマルリードとの使い分けの判断は、例えば、コントローラ３０の読み出し制御部３２が行えば良い。例えば、読み出し制御部３２は、ホスト装置６０からの読み出し要求のデータサイズや、読み出し要求が論理アドレス（ＬＢＡ）的に連続か否か、さらにはホスト装置６０から発行されたコマンドのキューイング数などをもとに、ランダムリード或いはシーケンシャルリードかを推測して、上記使い分けの判断基準とする機能を備えれば良い。なおこの場合、ＮＡＮＤＩ／Ｆ２０は、コントローラ３０からの要求に従って、プリフェッチ動作を中止する（ノーマルリードに動作を切り替える）機能を備える必要がある。
【００６３】
例えば、ホスト装置６０からの読み出し要求にかかるデータサイズが所定の閾値以下の場合には、読み出し制御部３２は、プリフェッチ禁止リード要求を含むＮＡＮＤ制御コマンドをＮＡＮＤＩ／Ｆ２０に発行する。即ち、データサイズが小さいときはランダムリード要求とみなして、キャッシュリードは使用しない。この時、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、ノーマルリードコマンドを発行してデータ読み出しを実行する。
【００６４】
また例えば、ホスト装置６０からの読み出し要求が論理アドレス（ＬＢＡ）的に連続でなかった場合、即ちシーケンシャルリード要求でないと読み出し制御部３２が判断した場合にも、読み出し制御部３２は、プリフェッチ禁止リード要求を含むＮＡＮＤ制御コマンドをＮＡＮＤＩ／Ｆ２０に対して発行する。この時、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、ノーマルリードコマンドを発行してデータ読み出しを実行する。
【００６５】
また例えば、ホスト装置６０から発行されたコマンドのキューイング数が閾値以上の場合、読み出し制御部３２は、ランダムリード要求とみなして、プリフェッチ禁止リード要求を含むＮＡＮＤ制御コマンドをＮＡＮＤＩ／Ｆ２０に対して発行する。この時、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、ノーマルリードコマンドを発行してデータ読み出しを実行する。
【００６６】
反対に、ホスト装置６０からの読み出し要求がシーケンシャルリード要求であると読み出し制御部３２が判断した場合には、本実施形態で説明した通りＮＡＮＤＩ／Ｆ２０の機能を期待して、ホスト装置６０から要求された読み出し要求のみを含むＮＡＮＤ制御コマンドをＮＡＮＤＩ／Ｆ２０へ通知する。
【００６７】
例えば、ホスト装置６０からの読み出し要求にかかるデータサイズが所定の閾値より大きい場合には、読み出し制御部３２は、シーケンシャルリード要求とみなして、ホスト装置６０から要求されたアドレスの読み出し要求のみを含むＮＡＮＤ制御コマンドをＮＡＮＤＩ／Ｆ２０に対して発行する。この時、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、キャッシュリードコマンドを発行してデータ読み出しを実行する。
【００６８】
また例えば、ホスト装置６０からの読み出し要求が論理アドレス（ＬＢＡ）的に連続だった場合、読み出し制御部３２は、シーケンシャルリード要求とみなして、ホスト装置６０から要求されたアドレスの読み出し要求のみを含むＮＡＮＤ制御コマンドをＮＡＮＤＩ／Ｆ２０に対して発行する。この時、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、キャッシュリードコマンドを発行してデータ読み出しを実行する。
【００６９】
また例えば、ホスト装置６０から発行されたコマンドのキューイング数が閾値未満の場合には、読み出し制御部３２は、シーケンシャルリード要求とみなして、ホスト装置６０から要求されたアドレスの読み出し要求のみを含むＮＡＮＤ制御コマンドをＮＡＮＤＩ／Ｆ２０に対して発行する。この時、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、キャッシュリードコマンドを発行してデータ読み出しを実行する。
【００７０】
以上説明したように、本実施形態においてはデータ読み出し時にデータキャッシュ１２およびページバッファ１１に保持されているデータのメモリセルアレイ１０上での物理アドレスを考慮して読み出しを実行する。
【００７１】
即ち、読み出し時における再利用を期待して、データキャッシュ１２及びページバッファ１１にキャッシュされているデータのページアドレス（アドレス情報履歴）をキャッシュ管理部２１が記憶しているため、既にメモリセルアレイ１０からデータキャッシュ１２またはページバッファ１１に格納されているデータは、メモリセルアレイ１０へのアクセス無しに高速に読み出すことが可能である。
【００７２】
また、キャッシュリードコマンドを利用してページバッファ１１をプリフェッチ用のバッファとして利用するようにしたので、次の読み出しアドレスがページバッファ１１に格納されているデータのページアドレスに対応する場合、メモリセルアレイ１０へのアクセス無しに高速に読み出すことが可能である。
【００７３】
即ち、ＤＲＡＭなどからなる一時記憶バッファ４０ではなくＮＡＮＤメモリチップ内に既存のデータキャッシュ１２およびページバッファ１１を利用することにより、キャッシュとプリフェッチとがより有効に機能するメモリシステムを複雑な制御をすることなしに提供することが可能となる。更に、メモリチップ外部にキャッシュ用またはプリフェッチ用のバッファを必ずしも設ける必要が無くなり、メモリシステム１の面積削減及びコスト削減にも寄与する。
【００７４】
（第２の実施形態）
本実施形態においては、コントローラ３０などの上位モジュールからＮＡＮＤＩ／Ｆ２０が明示的にプリフェッチの実行を指示された場合のメモリシステム１の動作について説明する。本実施形態のメモリシステム１の構成は図１および図２と同様である。
【００７５】
プリフェッチ要求およびプリフェッチが要求された物理アドレス（以下、プリフェッチアドレス）を含むＮＡＮＤ制御コマンドがコントローラ３０（上位モジュール）からＮＡＮＤＩ／Ｆ２０に発行されてからのメモリシステム１の動作を、図９乃至図１１のフローチャートを用いて説明する。
【００７６】
まず、図９のフローチャートのステップＳ５１においてプリフェッチアドレスが、キャッシュ管理部２１がアドレス情報履歴として記憶しているデータキャッシュ１２に格納されたデータの物理アドレス（ページアドレス）と一致しているか否かを判定する。プリフェッチアドレスがデータキャッシュ１２に格納されているデータのページアドレスと一致する場合は（ステップＳ５１：Ｙｅｓ）、何もせず終了する。この後、読み出し要求が来て、例えば、読み出しアドレスがデータキャッシュ１２に格納されているデータのページアドレスと一致すれば、上述した第１の実施形態の図３のステップＳ１２の「ヒット（ケース０）」となるので好適だからである。
【００７７】
プリフェッチアドレスがデータキャッシュ１２に格納されているデータのページアドレスと一致しない場合は（ステップＳ５１：Ｎｏ）、キャッシュ管理部２１は、プリフェッチアドレスが、アドレス情報履歴として記憶されているページバッファ１１に格納されているデータの物理アドレス（ページアドレス）と一致しているか否かを判定する（ステップＳ５３）。
【００７８】
プリフェッチアドレスがページバッファ１１に格納されているデータのページアドレスと一致する場合は（ステップＳ５３：Ｙｅｓ）、「ヒット（ケース１）」（ステップＳ５４）へと進む。それ以外の場合（ステップＳ５３：Ｎｏ）は「ミス」（ステップＳ５５）へと進む。
【００７９】
「ヒット（ケース１）」（図９のステップＳ５４）の場合、すなわち、コントローラ３０からＮＡＮＤＩ／Ｆ２０に対して、ページバッファ１１に格納されているデータに対するプリフェッチを要求するコマンドが発行された場合のメモリシステム１の動作を図１０のフローチャートに示す。
【００８０】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へキャッシュリードコマンドを入力する。後続するページアドレスに対応するデータをプリフェッチする場合は、シーケンシャルキャッシュリードコマンド（例えば、“３１ｈ”）を入力し、プリフェッチするページアドレスを指定する場合は、ランダムキャッシュリードコマンド（例えば、“００ｈ”−ページアドレス−“３１ｈ”）を入力する。
【００８１】
ＮＡＮＤメモリチップ１００は、キャッシュリードコマンドを受けて、ページバッファ１１のデータをデータキャッシュ１２に転送する（ステップＳ６０）。ページバッファ１１からデータキャッシュ１２へのデータ転送が完了するとＲｙ／Ｂｙ信号はＲｙ状態になるが、ここではプリフェッチを要求されたデータをデータキャッシュ１２に準備しておけばよいので、データキャッシュ１２に格納されたデータは外部に出力されない。
【００８２】
ＮＡＮＤメモリチップ１００は、シーケンシャルキャッシュリードの場合、後続するページアドレスのデータをメモリセルアレイ１０からページバッファ１１へとプリフェッチし、ランダムキャッシュリードの場合、指定されたページアドレスのデータをメモリセルアレイ１０からページバッファ１１へとプリフェッチする（ステップＳ６１）。
【００８３】
最後に、キャッシュ管理部２１は、アドレス情報履歴を、データキャッシュ１２およびページバッファ１１が新たに保持することになったデータに対応する物理アドレス（ページアドレス）に更新する（ステップＳ６２）。以上により、明示的に要求されたプリフェッチアドレスに対応するデータをデータキャッシュ１２に準備（プリフェッチ）することが可能となる。
【００８４】
「ミス」（図９のステップＳ５５）の場合のメモリシステム１の動作を図１１のフローチャートに示す。
【００８５】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へ、読み出し動作を開始する旨を通知するリードコマンド（“００ｈ”）と、プリフェッアドレスと、内部読み出し動作を開始させる旨を通知するリード開始コマンド（“３０ｈ”）とを送信する。これらは上述した通りノーマルリードコマンドを構成する。
【００８６】
ＮＡＮＤメモリチップ１００は、リード開始コマンドを受信した後、Ｒｙ／Ｂｙ信号をＲｙからＢｙに遷移させる。そして、メモリセルアレイ１０のプリフェッアドレスに対応する位置からデータを読み出して、読み出したデータをページバッファ１１に格納する（ステップＳ７０）。ＮＡＮＤメモリチップ１００は、ページバッファ１１に格納されたデータをデータキャッシュ１２へ転送する（ステップＳ７１）。ＮＡＮＤメモリチップ１００は、ページＮから読み出したデータをデータキャッシュ１２に格納すると、Ｒｙ／Ｂｙ信号をＢｙ状態からＲｙ状態に遷移させる。
【００８７】
Ｒｙ／Ｂｙ信号がＲｙに復帰した後、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へ、キャッシュリードコマンドを送信する。キャッシュリードコマンドを受信すると、ＮＡＮＤメモリチップ１００は、ページバッファ１１に格納されているプリフェッアドレスにかかるデータをデータキャッシュ１２へ再度転送する（ステップＳ７１）。この間、ＮＡＮＤメモリチップ１００は、Ｒｙ／Ｂｙ信号をｔＤＣＢＹの間Ｂｙ状態とする。
【００８８】
ページバッファ１１からデータキャッシュ１２へのデータ転送が完了する（ステップＳ７１）とＲｙ／Ｂｙ信号はＲｙ状態になるが、ここではプリフェッチを要求されたデータをデータキャッシュ１２に準備しておけばよいので、データキャッシュ１２に格納されたデータは外部に出力されない。
【００８９】
ＮＡＮＤメモリチップ１００は、シーケンシャルキャッシュリードの場合、後続の連続するページアドレスのデータをメモリセルアレイ１０からページバッファ１１へとプリフェッチし、ランダムキャッシュリードの場合、指定されたページアドレスのデータをメモリセルアレイ１０からページバッファ１１へとプリフェッチする（ステップＳ７２）。
【００９０】
最後に、キャッシュ管理部２１は、アドレス情報履歴を、データキャッシュ１２およびページバッファ１１が新たに保持することになったデータに対応する物理アドレス（ページアドレス）に更新する（ステップＳ７３）。以上により、明示的に要求されたプリフェッチアドレスに対応するデータをデータキャッシュ１２に準備（プリフェッチ）することが可能となる。
【００９１】
以上により、上位モジュールからＮＡＮＤＩ／Ｆ２０が明示的にプリフェッチの実行を指示された場合に、プリフェッチアドレスで指定されたデータをデータキャッシュ１２に格納することが可能となる。これにより、以降の読み出しでプリフェッチアドレスに含まれる範囲の読み出し要求があった場合に、メモリセルアレイ１０へのアクセス無しに、データキャッシュ１２に格納されたデータを高速に読み出すことが可能になる。
【００９２】
（第３の実施形態）
本実施形態のメモリシステム１の構成は図１と同様である。本実施形態においては、図１のキャッシュ１１０は図２のようにデータキャッシュ１２とページバッファ１１の二つに分かれておらず、図１２に示すように、キャッシュ１１０が１バッファのデータキャッシュとして機能するものとする。なお、ＮＡＮＤメモリチップ自体はデータキャッシュ１２とページバッファ１１との両方を備えているが、ＮＡＮＤメモリチップ１００が備えるキャッシュリード機能を使用せずに、データキャッシュ１２のみを考慮した制御を行う場合についても本実施形態と同様に理解される。
【００９３】
以下、読み出し要求と読み出しアドレスを含むＮＡＮＤコマンドがコントローラ３０の読み出し制御部３２からＮＡＮＤＩ／Ｆ２０に発行されてからのメモリシステム１の動作を、図１３乃至図１５のフローチャートを用いて説明する。
【００９４】
本実施形態においては、ＮＡＮＤＩ／Ｆ２０が備えるキャッシュ管理部２１が、キャッシュ１１０に読み出されているデータの物理アドレス（ページアドレス）を管理している。これにより、ＮＡＮＤＩ／Ｆ２０は以下に説明する読み出し時の動作が可能となる。
【００９５】
まず、図１３のフローチャートにおいてキャッシュ管理部２１は、ＮＡＮＤＩ／Ｆ２０に発行されたＮＡＮＤ制御コマンドが読み出し要求であるか否かを判定する（図１３、ステップＳ８０）。読み出し要求でない場合（ステップＳ８０：Ｎｏ）、キャッシュ管理部２１は、ＮＡＮＤＩ／Ｆ２０に発行されたＮＡＮＤ制御コマンドが書き込み要求か否かを判定する（ステップＳ８１）。
【００９６】
ＮＡＮＤＩ／Ｆ２０に発行されたＮＡＮＤ制御コマンドが書き込み要求である場合（ステップＳ８１：Ｙｅｓ）、キャッシュ管理部２１は、書き込みコマンドの実行完了までに、メモリセルアレイ１０に書き込まれるキャッシュ１１０に保持されているデータのメモリセルアレイ１０の上での物理アドレス（ページアドレス）をアドレス情報履歴として記憶する（ステップＳ８２）。
【００９７】
これにより、下記で説明する読み出し要求時に読み出しアドレスがアドレス情報履歴にヒットした場合において、キャッシュ１１０に書き込みのために保持されたデータを再利用できる。ステップＳ８１において、ＮＡＮＤ制御コマンドが書き込み要求でもないと判定された場合（ステップＳ８１：Ｎｏ）、キャッシュ管理部２１は、当該コマンドを実行するとともに、アドレス情報履歴をクリアする（ステップＳ８３）。
【００９８】
ステップＳ８０の判定で読み出し要求である場合（ステップＳ８０：Ｙｅｓ）、ＮＡＮＤ制御コマンドは読み出し要求および読み出しアドレスを含んでいる。キャッシュ管理部２１は、アドレス情報履歴を参照するためステップＳ８４に進む。ここでは、読み出しアドレスはＮＡＮＤメモリチップ１００のメモリセルアレイ１０上でのデータ記憶位置である物理アドレスであるとして説明する。読み出しアドレスはより詳細には、読み出すページ位置と当該ページ内のカラム位置を示している。
【００９９】
ステップＳ８４では、キャッシュ管理部２１は、読み出しページアドレスが、アドレス情報履歴として記憶されているキャッシュ１１０に格納されたデータの物理アドレス（ページアドレス）と一致しているか否かを判定する。読み出しページアドレスがキャッシュ１１０に格納されているデータのページアドレスと一致する場合は（ステップＳ８４：Ｙｅｓ）、「ヒット（ケース０）」（ステップＳ８５）へと進む。それ以外の場合（ステップＳ８４：Ｎｏ）は「ミス」（ステップＳ８６）へと進む。
【０１００】
「ヒット（ケース０）」（図１３のステップＳ８５）の場合、すなわち、ＮＡＮＤＩ／Ｆ２０からＮＡＮＤメモリチップ１００に対して、キャッシュ１１０からの読み出しを要求するリードコマンドが発行された場合のメモリシステム１の動作を図１４のフローチャートに示す。本実施形態においては、すでにキャッシュ１１０に読み出したデータを再利用することにより、読み出し時の時間節約が可能となる。
【０１０１】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、キャッシュ１１０に保持されているページサイズのデータのうち、読み出しアドレスに対応する範囲のデータをキャッシュ１１０から出力させるためのコマンド（例えば、“０５ｈ”−カラムアドレス−“Ｅ０ｈ”）を発行する。ＮＡＮＤメモリチップ１００は、／ＲＥクロックの入力を受けて、指定されたカラムアドレスに対応する範囲のデータをキャッシュ１１０から出力する。ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００から出力されたデータを一時記憶バッファ４０に転送する（ステップＳ９０）。なお、ページアドレス先頭からデータを出力する場合は、コマンド入力無しに／ＲＥクロックをトグルすれば良い。
【０１０２】
次に、キャッシュ管理部２１は、アドレス情報履歴を更新する（ステップＳ９１）。ここでは、キャッシュ１１０のアドレス情報履歴を無効化する。あるいは、アドレス情報履歴と共に当該アドレスのデータが出力済みかどうかを示すフラグ情報を保持している場合は、キャッシュ１１０のデータがデータ出力済みであるとのフラグ情報を付加することなどが考えられる。キャッシュ１１０の内容に変化は無いので、アドレス情報履歴に対して何もしないという選択も可能である。
【０１０３】
なお、キャッシュ１１０から一時記憶バッファ４０にデータを出力した後、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００にノーマルリードコマンドを入力して、次に読み出されると見込まれるデータをプリフェッチし、プリフェッチしたデータのアドレスをアドレス情報履歴として記録しても良い。具体的には、以下の動作を実行する。
【０１０４】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へ、読み出し動作を開始する旨を通知するリードコマンド（“００ｈ”）と、プリフェッアドレスと、内部読み出し動作を開始させる旨を通知するリード開始コマンド（“３０ｈ”）とを送信する。これらは上述した通りノーマルリードコマンドを構成する。プリフェッアドレスとしては、後続するページアドレスであっても良いし、コントローラ３０から明示的に指定されたアドレスであっても良い。
【０１０５】
ＮＡＮＤメモリチップ１００は、リード開始コマンドを受信した後、Ｒｙ／Ｂｙ信号をＲｙからＢｙに遷移させる。そして、メモリセルアレイ１０のプリフェッアドレスに対応する位置からデータを読み出して、読み出したデータをキャッシュ１１０へ転送する。ＮＡＮＤメモリチップ１００は、読み出したデータをキャッシュ１１０に格納すると、Ｒｙ／Ｂｙ信号をＢｙ状態からＲｙ状態に遷移させる。ここでは次に読み出されると見込まれるデータをキャッシュ１１０へ準備すれば良いので、データ出力は行わない。キャッシュ管理部２１は、アドレス情報履歴としてプリフェッチアドレスを記憶する。
【０１０６】
「ミス」（図１３のステップＳ８６）の場合のメモリシステム１の動作を図１５のフローチャートに示す。
【０１０７】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へ、読み出し動作を開始する旨を通知するリードコマンド（“００ｈ”）と、読み出しページアドレスと、内部読み出し動作を開始させる旨を通知するリード開始コマンド（“３０ｈ”）とを送信する。これらは上述した通りノーマルリードコマンドを構成する。ＮＡＮＤメモリチップ１００は、リード開始コマンドを受信した後、Ｒｙ／Ｂｙ信号をＲｙからＢｙに遷移させる。そして、メモリセルアレイ１０の読み出しページアドレスに対応する位置からデータを読み出して、読み出したデータをキャッシュ１１０へ転送する。ＮＡＮＤメモリチップ１００は、読み出したデータをキャッシュ１１０に格納すると、Ｒｙ／Ｂｙ信号をＢｙ状態からＲｙ状態に遷移させる（ステップＳ１００）。
【０１０８】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００に対して、キャッシュ１１０に保持されているページサイズのデータのうち、読み出しアドレスに対応する範囲のデータをキャッシュ１１０から出力させるためのコマンド（例えば、“０５ｈ”−カラムアドレス−“Ｅ０ｈ”）を発行する。ＮＡＮＤメモリチップ１００は、／ＲＥクロックの入力を受けて、指定されたカラムアドレスに対応する範囲のデータをキャッシュ１１０から出力する。ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００から出力されたデータを一時記憶バッファ４０に転送する（ステップＳ１０１）。なお、ページアドレス先頭からデータを出力する場合は、コマンド入力無しに／ＲＥクロックをトグルすれば良い。
【０１０９】
最後に、キャッシュ管理部２１は、アドレス情報履歴を、キャッシュ１１０が新たに保持することになったデータに対応する物理アドレス（ページアドレス）に更新する（ステップＳ１０２）。
【０１１０】
なお、ヒット（ケース０）」の場合と同様に、キャッシュ１２から一時記憶バッファ４０にデータを出力した後、ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００にノーマルリードコマンドを入力して、次に読み出されると見込まれるデータをプリフェッチし、プリフェッチしたデータのアドレスをアドレス情報履歴として記録しても良い。この場合、キャッシュ管理部２１は、アドレス情報履歴としてプリフェッチアドレスを記憶する。
【０１１１】
次に、一時記憶バッファ４０への読み出し要求無しに、コントローラ３０などの上位モジュールからＮＡＮＤＩ／Ｆ２０が明示的にプリフェッチの実行を指示された場合のフローチャートを図１６に示す。
【０１１２】
ＮＡＮＤＩ／Ｆ２０は、ＮＡＮＤメモリチップ１００へ、読み出し動作を開始する旨を通知するリードコマンド（“００ｈ”）と、プリフェッチアドレスと、内部読み出し動作を開始させる旨を通知するリード開始コマンド（“３０ｈ”）とを送信する。これらは上述した通りノーマルリードコマンドを構成する。プリフェッチアドレスとしては、後続するページアドレスであっても良いし、コントローラ３０から明示的に指定されたアドレスであっても良い。図１６は、例えば、後続するページアドレスのデータをプリフェッチする場合について示している。
【０１１３】
ＮＡＮＤメモリチップ１００は、リード開始コマンドを受信した後、Ｒｙ／Ｂｙ信号をＲｙからＢｙに遷移させる。そして、メモリセルアレイ１０のプリフェッチアドレスに対応する位置からデータを読み出して、読み出したデータをキャッシュ１１０へ転送する（ステップＳ１１０）。ＮＡＮＤメモリチップ１００は、ページＮから読み出したデータをデータキャッシュ１２に格納すると、Ｒｙ／Ｂｙ信号をＢｙ状態からＲｙ状態に遷移させる。ここではプリフェッチを要求されたデータをデータキャッシュ１２に準備しておけばよいので、キャッシュ１１０に格納されたデータは外部に出力されない。
【０１１４】
最後に、キャッシュ管理部２１は、アドレス情報履歴を、キャッシュ１１０がプリフェッチにより新たに保持することになったデータに対応する物理アドレス（プリフェッチアドレス）に更新する（ステップＳ１１１）。
【０１１５】
以上により、読み出し時における再利用を期待して、キャッシュ１１０にキャッシュされているデータのページアドレス（アドレス情報履歴）をキャッシュ管理部２１が記憶しているため、既にメモリセルアレイ１０からキャッシュ１１０に読み出してあるデータはメモリセルアレイ１０へのアクセス無しに高速に読み出すことが可能である。
【０１１６】
また、キャッシュ１１０に格納されたデータを一時記憶バッファ４０に出力した後に、後続のページアドレスに対応するデータをキャッシュ１１０にプリフェッチする場合、次の読み出しアドレスがプリフェッチされたデータのページアドレス（プリフェッチアドレス）にヒットすれば、メモリセルアレイ１０へのアクセス無しに高速に読み出すことが可能である。
【０１１７】
なお、上記第１乃至３の実施形態においては、キャッシュが１つまたは２つのキャッシュ領域である場合について説明したが、３つ以上であってもかまわない。また、ＮＡＮＤメモリチップ内のメモリセルが複数の領域（Plane/District）に分割され、分割されているそれぞれのメモリセルにキャッシュ領域が存在する場合であっても構わない。さらに、メモリシステム内に複数のＮＡＮＤメモリチップが存在し、それぞれのＮＡＮＤメモリチップ毎にキャッシュ領域が存在してもかまわない。キャッシュ領域が３つ以上の場合でも、メモリセルアレイからキャッシュ領域に読み出したデータのアドレスを管理することと、データ転送した次のページのデータがキャッシュ領域に存在しない場合にメモリセルアレイからあらかじめデータ読み出す処理を行うことで上記と同様な効果を得ることができる。
【０１１８】
（第４の実施形態）
本実施形態のメモリシステム１の構成は図１と同様である。本実施形態においては、メモリセルアレイ１０へのデータの書き込み時において、メモリセルアレイ１０の物理ブロック内の連続するページに対して、連続で読み出される可能性が高い状態を作り出すようにコントローラ３０の書き込み制御部３３がデータを書き込んで行く。例えば、ホスト装置６０からメモリシステム１に到着した順にデータを配置する。即ち、ホスト装置６０から受け取った順でデータをメモリセルアレイ１０の物理ブロック内のページ順に書き込む。これは、ホスト装置６０からの書き込み順に読み出す可能性があるからである。
【０１１９】
また、例えば、ホスト装置６０が使用するアドレスであるＬＢＡ（論理アドレス）の順にデータを記録する。即ち、物理ブロック内のページ順にＬＢＡ順に並べなおしたデータを書き込む。これは、ホスト装置６０からの要求がＬＢＡ順に連続に発行されることが多いからである。さらにこの場合、ホスト装置６０から受け取ったデータをＬＢＡ順に並べなおして書き込む際に、ホスト装置６０から受け取ったデータ以外にＮＡＮＤメモリチップから読み出したデータを合わせて１ページ以上の連続データがＬＢＡ順に並ぶように書き込みを制御してもよい。同様に内部のデータコピー処理を行う際にも、ＬＢＡ順に１ページ以上のデータが並ぶようにコピー処理を制御する。
【０１２０】
また、図１に示した複数のＮＡＮＤメモリチップ１００〜４００を備えた場合にも、物理ブロック内の連続するページに対して、連続で読み出される可能性が高い状態を作り出すことが可能である。この場合、ＮＡＮＤメモリチップ１００〜４００間に跨ってインターリーブした書き込みが行われる場合があるが、インターリーブを考慮した上で、上記したように到着した順或いはＬＢＡ順に書き込んでいけばよい。
【０１２１】
このような順番でデータを書き込んだ状態において、第１乃至３の実施形態で説明した読み出し動作を実行する。これにより、読み出しアドレス判定時におけるキャッシュヒット率を高めることが可能となる。
【０１２２】
（第５の実施の形態）
図１７は、メモリシステム１を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【０１２３】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びメモリシステム１等が収容されている。
【０１２４】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１２５】
メモリシステム１は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１２６】
図１８は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、メモリシステム１、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【０１２７】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、メモリシステム１から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１２８】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１２９】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１３０】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１３１】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【０１３２】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１３３】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【０１３４】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるメモリシステム１を、ＡＴＡインタフェースを介して制御する。
【０１３５】
パーソナルコンピュータ１２００は、セクタ単位でメモリシステム１へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がメモリシステム１に入力される。
【０１３６】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【０１３７】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１３８】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１３９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４０】
１  メモリシステム、１０  メモリセルアレイ、１１  ページバッファ、１２  データキャッシュ、２０  ＮＡＮＤインタフェース、３０  コントローラ、４０  一時記憶バッファ、５０  ホストＩ／Ｆ、６０  ホスト装置、１００〜４００  ＮＡＮＤメモリチップ、１１０  キャッシュ。
【図１】
2012133416.tif 000003
【図２】
2012133416.tif 000004
【図３】
2012133416.tif 000005
【図４】
2012133416.tif 000006
【図５】
2012133416.tif 000007
【図６】
2012133416.tif 000008
【図７】
2012133416.tif 000009
【図８】
2012133416.tif 000010
【図９】
2012133416.tif 000011
【図１０】
2012133416.tif 000012
【図１１】
2012133416.tif 000013
【図１２】
2012133416.tif 000014
【図１３】
2012133416.tif 000015
【図１４】
2012133416.tif 000016
【図１５】
2012133416.tif 000017
【図１６】
2012133416.tif 000018
【図１７】
2012133416.tif 000019
【図１８】
2012133416.tif 000020
【手続補正書】
【提出日】平成23年4月19日(2011.4.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性のメモリセルアレイと、前記メモリセルアレイから読み出した所定サイズのデータを一時的に保持する第１及び第２キャッシュ領域とを備えるメモリチップと、
前記第１キャッシュ領域が保持するデータが記憶されている前記メモリセルアレイ上の物理アドレスである第１アドレス情報履歴と、前記第２キャッシュ領域が保持するデータが記憶されている前記メモリセルアレイ上の物理アドレスである第２アドレス情報履歴とを管理するメモリインタフェースと、
前記メモリセルアレイ上の物理アドレスを指定する読み出しアドレスを含む読み出し要求を前記メモリインタフェースに発行するコントローラと、
前記メモリチップから読み出されたデータを一時的に保持するバッファメモリと、
を具備し、前記メモリインタフェースは、
前記読み出しアドレスが前記第１アドレス情報履歴と一致する場合は、前記読み出しアドレスに対応するデータを前記メモリセルアレイから読み出すことなく、前記第１キャッシュ領域が保持するデータを前記バッファメモリへ転送し、
前記読み出しアドレスが前記第２アドレス情報履歴と一致する場合は、前記読み出しアドレスに対応するデータを前記メモリセルアレイから読み出すことなく、前記第２キャッシュ領域が保持するデータを前記バッファメモリへ転送し、
前記読み出しアドレスが前記第１及び第２アドレス情報履歴の何れとも一致しない場合は、前記読み出しアドレスに対応するデータを前記メモリセルアレイから読み出し、前記バッファメモリへ転送する、
ことを特徴とするメモリシステム。
【請求項２】
前記メモリインタフェースは、前記コントローラから読み出し要求を受けた場合に、前記読み出しアドレスに後続する物理アドレスのデータを前記メモリセルアレイから前記第１または第２キャッシュ領域にプリフェッチすることを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記メモリインタフェースは、前記コントローラから読み出し要求を受けた場合に、前記コントローラが指定する物理アドレスのデータを、前記メモリセルアレイから前記第１または第２キャッシュ領域にプリフェッチすることを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記コントローラは、前記メモリセルアレイ上の物理アドレスを指定するプリフェッチアドレスを含むプリフェッチ要求を前記メモリインタフェースに発行し、
前記メモリインタフェースは、
前記プリフェッチアドレスが前記第１または第２アドレス情報履歴と一致する場合は、前記プリフェッチアドレスに対応するデータを前記メモリセルアレイから読み出すことなく、前記プリフェッチ要求の処理を終了し、
前記プリフェッチアドレスが前記第１及び第２アドレス情報履歴の何れとも一致しない場合は、前記プリフェッチアドレスに対応するデータを前記メモリセルアレイから前記第１または第２キャッシュ領域にプリフェッチすることを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記メモリインタフェースは、前記コントローラからプリフェッチ要求を受けた場合に、前記プリフェッチアドレスに対応するデータに加えて、前記プリフェッチアドレスに後続する物理アドレスのデータを前記メモリセルアレイから前記第１または第２キャッシュ領域にプリフェッチすることを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記メモリインタフェースは、前記コントローラからプリフェッチ要求を受けた場合に、前記プリフェッチアドレスに対応するデータに加えて、前記コントローラが指定する物理アドレスのデータを、前記メモリセルアレイから前記第１または第２キャッシュ領域にプリフェッチすることを特徴とする請求項４に記載のメモリシステム。
【請求項７】
前記第１キャッシュ領域は前記メモリセルアレイから読み出したデータを一時的に保持し、前記第２キャッシュ領域は前記第１キャッシュ領域から転送されるデータを一時的に保持し、前記バッファメモリは前記第２キャッシュ領域から転送されるデータを一時的に保持することを特徴とする請求項１に記載のメモリシステム。
【請求項８】
前記メモリインタフェースは、前記読み出しアドレスが前記第２アドレス情報履歴と一致する場合に、前記メモリセルアレイから前記第１キャッシュ領域へのプリフェッチを実行しないことを特徴とする請求項７に記載のメモリシステム。
【請求項９】
前記メモリインタフェースは、前記読み出しアドレスが前記第１アドレス情報履歴と一致する場合に、前記第１キャッシュ領域の保持するデータを、前記第２キャッシュ領域を介して前記バッファメモリへ転送し、更に前記読み出しアドレスに後続する物理アドレスのデータを前記メモリセルアレイから前記第１キャッシュ領域へプリフェッチすることを特徴とする請求項７に記載のメモリシステム。
【請求項１０】
前記メモリインタフェースは、前記読み出しアドレスが前記第１アドレス情報履歴と一致する場合に、前記第１キャッシュ領域の保持するデータを、前記第２キャッシュ領域を介して前記バッファメモリへ転送し、更に前記コントローラが指定する物理アドレスのデータを前記メモリセルアレイから前記第１キャッシュ領域へプリフェッチすることを特徴とする請求項７に記載のメモリシステム。
【請求項１１】
前記メモリインタフェースは、前記読み出しアドレスが前記第１及び第２アドレス情報履歴の何れとも一致しない場合に、前記メモリセルアレイから読み出したデータを前記第１及び第２キャッシュ領域を介して前記バッファメモリへ転送し、更に前記読み出しアドレスに後続する物理アドレスのデータを前記メモリセルアレイから前記第１キャッシュ領域へプリフェッチすることを特徴とする請求項７に記載のメモリシステム。
【請求項１２】
前記メモリインタフェースは、前記読み出しアドレスが前記第１及び第２アドレス情報履歴の何れとも一致しない場合に、前記メモリセルアレイから読み出したデータを前記第１及び第２キャッシュ領域を介して前記バッファメモリへ転送し、更に前記コントローラが指定する物理アドレスのデータを前記メモリセルアレイから前記第１キャッシュ領域へプリフェッチすることを特徴とする請求項７に記載のメモリシステム。
【請求項１３】
前記コントローラは、ホスト装置から受け取った読み出しコマンドに含まれる論理アドレスを前記メモリセルアレイ上の物理アドレスに変換し、当該物理アドレスを含む読み出し要求を前記メモリインタフェースに発行することを特徴とする請求項１に記載のメモリシステム。
【請求項１４】
前記メモリインタフェースは、前記コントローラの指示に従って前記プリフェッチを中止する機能を備えることを特徴とする請求項２に記載のメモリシステム。
【請求項１５】
前記コントローラは、ホスト装置からの読み出し要求がランダムアクセスであると判断した場合に、前記メモリインタフェースに対して前記プリフェッチを中止させることを特徴とする請求項１４に記載のメモリシステム。
【請求項１６】
前記コントローラは、前記ホスト装置からの読み出し要求で指定されるデータサイズが所定の閾値以下の場合に、ランダムアクセスであると判断することを特徴とする請求項１５に記載のメモリシステム。
【請求項１７】
前記コントローラは、前記ホスト装置からの複数の読み出し要求で指定される論理アドレスが互いに連続でない場合に、ランダムアクセスであると判断することを特徴とする請求項１５に記載のメモリシステム。
【請求項１８】
前記コントローラは、前記ホスト装置から発行されたコマンドのキューイング数が所定の閾値以上の場合に、ランダムアクセスであると判断することを特徴とする請求項１５に記載のメモリシステム。
【請求項１９】
前記コントローラは、ホスト装置からの読み出し要求がシーケンシャルアクセスであると判断した場合に、前記メモリインタフェースに対して前記プリフェッチを中止させないことを特徴とする請求項１４に記載のメモリシステム。
【請求項２０】
前記コントローラは、前記ホスト装置からの読み出し要求で指定されるデータサイズが所定の閾値以上の場合に、シーケンシャルアクセスであると判断することを特徴とする請求項１９に記載のメモリシステム。
【請求項２１】
前記コントローラは、前記ホスト装置からの複数の読み出し要求で指定される論理アドレスが互いに連続である場合に、シーケンシャルアクセスであると判断することを特徴とする請求項１９に記載のメモリシステム。
【請求項２２】
前記コントローラは、前記ホスト装置から発行されたコマンドのキューイング数が所定の閾値以下の場合に、シーケンシャルアクセスであると判断することを特徴とする請求項１９に記載のメモリシステム。
【請求項２３】
前記メモリインタフェースは、前記メモリセルアレイに所定サイズのデータを書き込む際に、前記第１及び第２キャッシュ領域に保持されたデータに対応する物理アドレスを、前記第１及び第２アドレス情報履歴として管理することを特徴とする請求項１に記載のメモリシステム。
【請求項２４】
前記コントローラは、ホスト装置から受け取った書き込みデータを受け取った順番に整列させ、前記メモリセルアレイ上の物理アドレス順に、前記整列させた書き込みデータの先頭データから書き込みを行うことを特徴とする請求項１に記載のメモリシステム。
【請求項２５】
前記コントローラは、ホスト装置から受け取った書き込みデータを論理アドレスの順番に整列させ、前記メモリセルアレイ上の物理アドレス順に、前記整列させた書き込みデータの先頭データから書き込みを行うことを特徴とする請求項１に記載のメモリシステム。
【請求項２６】
不揮発性のメモリセルアレイと、前記メモリセルアレイから読み出した所定サイズのデータを一時的に保持するキャッシュ領域とを備えるメモリチップと、
前記キャッシュ領域が保持するデータが記憶されている前記メモリセルアレイ上の物理アドレスであるアドレス情報履歴を管理するメモリインタフェースと、
前記メモリセルアレイ上の物理アドレスを指定する読み出しアドレスを含む読み出し要求を前記メモリインタフェースに発行するコントローラと、
前記メモリチップから読み出されたデータを一時的に保持するバッファメモリと、
を具備し、前記メモリインタフェースは、
前記読み出しアドレスが前記アドレス情報履歴と一致する場合は、前記読み出しアドレスに対応するデータを前記メモリセルアレイから読み出すことなく、前記キャッシュ領域が保持するデータを前記バッファメモリへ転送し、
前記読み出しアドレスが前記アドレス情報履歴と一致しない場合は、前記読み出しアドレスに対応するデータを前記メモリセルアレイから読み出して前記バッファメモリへ転送する、
ことを特徴とするメモリシステム。
【請求項２７】
前記メモリインタフェースは、前記読み出しアドレスが前記アドレス情報履歴と一致する場合に、前記キャッシュ領域の保持するデータを前記バッファメモリへ転送した後、前記読み出しアドレスに後続する物理アドレスのデータを前記メモリセルアレイから前記キャッシュ領域にプリフェッチすることを特徴とする請求項２６に記載のメモリシステム。
【請求項２８】
前記メモリインタフェースは、前記読み出しアドレスが前記アドレス情報履歴と一致する場合に、前記キャッシュ領域の保持するデータを前記バッファメモリへ転送した後、前記コントローラが指定する物理アドレスのデータを、前記メモリセルアレイから前記キャッシュ領域にプリフェッチすることを特徴とする請求項２６に記載のメモリシステム。
【請求項２９】
前記メモリインタフェースは、前記読み出しアドレスが前記アドレス情報履歴と一致しない場合に、前記メモリセルアレイから読み出したデータを前記キャッシュ領域を介して前記バッファメモリへ転送した後、前記読み出しアドレスに後続する物理アドレスのデータを前記メモリセルアレイから前記キャッシュ領域へプリフェッチすることを特徴とする請求項２６に記載のメモリシステム。
【請求項３０】
前記メモリインタフェースは、前記読み出しアドレスが前記アドレス情報履歴と一致しない場合に、前記メモリセルアレイから読み出したデータを前記キャッシュ領域を介して前記バッファメモリへ転送した後、前記コントローラが指定する物理アドレスのデータを前記メモリセルアレイから前記キャッシュ領域へプリフェッチすることを特徴とする請求項２６に記載のメモリシステム。
【請求項３１】
前記コントローラは、前記メモリセルアレイ上の物理アドレスを指定するプリフェッチアドレスを含むプリフェッチ要求を前記メモリインタフェースに発行し、
前記メモリインタフェースは、
前記プリフェッチアドレスが前記アドレス情報履歴と一致する場合は、前記プリフェッチアドレスに対応するデータを前記メモリセルアレイから読み出すことなく、前記プリフェッチ要求の処理を終了し、
前記プリフェッチアドレスが前記アドレス情報履歴と一致しない場合は、前記プリフェッチアドレスに対応するデータを前記メモリセルアレイから前記キャッシュ領域にプリフェッチすることを特徴とする請求項２６に記載のメモリシステム。
【請求項３２】
前記コントローラは、ホスト装置から受け取った読み出しコマンドに含まれる論理アドレスを前記メモリセルアレイ上の物理アドレスに変換し、当該物理アドレスを含む読み出し要求を前記メモリインタフェースに発行することを特徴とする請求項２６に記載のメモリシステム。
【請求項３３】
前記メモリインタフェースは、前記コントローラの指示に従って前記プリフェッチを中止する機能を備えることを特徴とする請求項２７に記載のメモリシステム。
【請求項３４】
前記コントローラは、ホスト装置からの読み出し要求がランダムアクセスであると判断した場合に、前記メモリインタフェースに対して前記プリフェッチを中止させることを特徴とする請求項３３に記載のメモリシステム。
【請求項３５】
前記コントローラは、前記ホスト装置からの読み出し要求で指定されるデータサイズが所定の閾値以下の場合に、ランダムアクセスであると判断することを特徴とする請求項３４に記載のメモリシステム。
【請求項３６】
前記コントローラは、前記ホスト装置からの複数の読み出し要求で指定される論理アドレスが互いに連続でない場合に、ランダムアクセスであると判断することを特徴とする請求項３４に記載のメモリシステム。
【請求項３７】
前記コントローラは、前記ホスト装置から発行されたコマンドのキューイング数が所定の閾値以上の場合に、ランダムアクセスであると判断することを特徴とする請求項３４に記載のメモリシステム。
【請求項３８】
前記コントローラは、ホスト装置からの読み出し要求がシーケンシャルアクセスであると判断した場合に、前記メモリインタフェースに対して前記プリフェッチを中止させないことを特徴とする請求項３３に記載のメモリシステム。
【請求項３９】
前記コントローラは、前記ホスト装置からの読み出し要求で指定されるデータサイズが所定の閾値以上の場合に、シーケンシャルアクセスであると判断することを特徴とする請求項３８に記載のメモリシステム。
【請求項４０】
前記コントローラは、前記ホスト装置からの複数の読み出し要求で指定される論理アドレスが互いに連続である場合に、シーケンシャルアクセスであると判断することを特徴とする請求項３８に記載のメモリシステム。
【請求項４１】
前記コントローラは、前記ホスト装置から発行されたコマンドのキューイング数が所定の閾値以下の場合に、シーケンシャルアクセスであると判断することを特徴とする請求項３８に記載のメモリシステム。
【請求項４２】
前記メモリインタフェースは、前記メモリセルアレイに所定サイズのデータを書き込む際に、前記第１及び第２キャッシュ領域に保持されたデータに対応する物理アドレスを、前記第１及び第２アドレス情報履歴として管理することを特徴とする請求項３８に記載のメモリシステム。
【請求項４３】
前記コントローラは、ホスト装置から受け取った書き込みデータを受け取った順番に整列させ、前記メモリセルアレイ上の物理アドレス順に、前記整列させた書き込みデータの先頭データから書き込みを行うことを特徴とする請求項２６に記載のメモリシステム。
【請求項４４】
前記コントローラは、ホスト装置から受け取った書き込みデータを論理アドレスの順番に整列させ、前記メモリセルアレイ上の物理アドレス順に、前記整列させた書き込みデータの先頭データから書き込みを行うことを特徴とする請求項２６に記載のメモリシステム。