(57)【要約】【課題】転送効率を可及的に向上させること。【解決手段】メモリシステムは、不揮発性のメモリセルアレイおよび読み出しバッファを備えるメモリチップと、読み出し要求されたデータを第１単位サイズ毎に前記メモリチップに出力させて、前記出力されたデータをホスト装置に逐次転送するコントローラと、を備える。前記メモリチップは、指定された第１単位サイズのデータを前記読み出しバッファを介して外部に出力する第１の読み出しコマンドと、指定されたデータを外部に出力するとともに当該指定されたデータに物理アドレスが隣接する次の第１単位サイズのデータを前記読み出しバッファに格納する第２の読み出しコマンドとをサポートし、前記コントローラは、読み出し要求に含まれるホストアドレスおよび／またはデータサイズに基づいて使用する読み出しコマンドを決定する。【選択図】図５
2012128815.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性のメモリセルアレイと、前記メモリセルアレイから読み出した第１単位サイズのデータを出力する前に当該データを一時記憶する読み出しバッファと、を備えるメモリチップと、
読み出し対象のデータをホストアドレスおよび読み出しサイズで指定する読み出し要求をホスト装置から受け付けて、前記受け付けた読み出し要求にかかる読み出し対象のデータを第１単位サイズ毎に前記メモリチップに出力させて、前記出力された第１単位サイズ毎のデータを前記ホスト装置に逐次転送するコントローラと、
を備え、
前記メモリチップは、指定された第１単位サイズのデータを前記メモリセルアレイから前記読み出しバッファに転送して、当該読み出しバッファに転送されたデータを外部に出力する第１の読み出しコマンドと、指定された第１単位サイズのデータを前記メモリセルアレイから前記読み出しバッファに転送して、当該読み出しバッファに転送されたデータを外部に出力するとともに当該指定されたデータに物理アドレスが隣接する次の第１単位サイズのデータを前記メモリセルアレイから前記読み出しバッファに転送する第２の読み出しコマンドとをサポートし、
前記コントローラは、読み出し要求に含まれるホストアドレスおよびデータサイズの少なくとも一方に基づいて、前記メモリチップに当該読み出し要求にかかる読み出し対象のデータを出力させるために前記第１の読み出しコマンドを使用するか前記第２の読み出しコマンドを使用するかを決定する、
ことを特徴とするメモリシステム。
【請求項２】
前記コントローラは、前記読み出しサイズと予め設定されたしきい値サイズとを比較し、前記読み出しサイズが前記しきい値サイズよりも小さい場合、前記第１の読み出しコマンドを使用すると決定し、前記読み出しサイズが前記しきい値サイズよりも大きい場合、前記第２の読み出しコマンドを使用すると決定する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
ホストアドレスと前記メモリセルアレイの物理アドレスとホストアドレスとの対応関係を前記メモリセルアレイにおける前記第１単位サイズよりも大きい、連続したデータが連続した物理アドレスに書き込まれる第２単位サイズの領域毎に記述したアドレス変換表を記憶する一時メモリをさらに備え、
前記コントローラは、読み出し対象のデータを記述したホストアドレスおよび読み出しサイズを前記第２単位サイズの領域毎に分割し、前記第２単位サイズの領域毎に、前記分割後の読み出しサイズと前記予め設定されたしきい値サイズとを比較する、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記コントローラは、処理対象の読み出し要求にかかる読み出し対象のデータを出力させるために、当該読み出し要求および当該読み出し要求の前に受け付けた所定数以上の読み出し要求にかかる夫々のアクセス範囲がホストアドレス上で連続しているか否かを判定し、前記夫々のアクセス範囲が連続していない場合、前記第１の読み出しコマンドを使用すると決定し、前記夫々のアクセス範囲が連続している場合、前記第２の読み出しコマンドを使用すると決定する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記コントローラは、処理対象の読み出し要求にかかる読み出し対象のデータを出力させるために、当該読み出し要求および当該読み出し要求の前に連続して受け付けた所定数以上の読み出し要求にかかる夫々のアクセス範囲がホストアドレス上で連続しているか否かを判定するとともに、前記処理対象の読み出し要求にかかる読み出しサイズと予め設定されたしきい値サイズとを比較して、前記夫々のアクセス範囲が連続していないか、または前記処理対象の読み出し要求にかかる読み出しサイズが前記予め設定されたしきい値サイズよりも小さい場合、前記第１の読み出しコマンドを使用すると決定し、前記夫々のアクセス範囲が連続しており、かつ前記処理対象の読み出し要求にかかる読み出しサイズが前記予め設定されたしきい値サイズよりも大きい場合、前記第２の読み出しコマンドを使用すると決定する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項６】
前記コントローラは、前記ホスト装置から受け付けた読み出し要求を蓄積記憶するコマンドキューを備え、処理対象の読み出し要求と前記コマンドキューに記憶されている当該処理対象の読み出し要求の後続の読み出し要求とでアクセス範囲がホストアドレス上で連続しているか否かを判定し、前記夫々のアクセス範囲が連続していない場合、前記第１の読み出しコマンドを使用すると決定し、前記夫々のアクセス範囲が連続している場合、前記第２の読み出しコマンドを使用すると決定する、
ことを特徴とする請求項１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
コンピュータシステムに用いられる外部記憶装置として、ＮＡＮＤ型の不揮発性素子からなるメモリセルアレイを有するフラッシュメモリを搭載したＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が注目されている。フラッシュメモリを搭載したＳＳＤは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【０００３】
従来のＳＳＤにおいては、フラッシュメモリからデータを読み出す際の待ち時間を隠ぺいするために、あらかじめホストから要求されると予想できるデータをフラッシュメモリから読み出しておくプリフェチを行っており、シーケンシャルリード（Sequential  Read）などのアクセスパターンで性能を向上させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２１１２１７号公報
【特許文献２】特開２００７−２１３８０６号公報
【特許文献３】特開２００９−１５８０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、転送効率を可及的に向上させたメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、メモリシステムは、不揮発性のメモリセルアレイと、前記メモリセルアレイから読み出した第１単位サイズのデータを出力する前に当該データを一時記憶する読み出しバッファと、を備えるメモリチップと、読み出し対象のデータをホストアドレスおよび読み出しサイズで指定する読み出し要求をホスト装置から受け付けて、前記受け付けた読み出し要求にかかる読み出し対象のデータを第１単位サイズ毎に前記メモリチップに出力させて、前記出力された第１単位サイズ毎のデータを前記ホスト装置に逐次転送するコントローラと、を備えている。前記メモリチップは、指定された第１単位サイズのデータを前記メモリセルアレイから前記読み出しバッファに転送して、当該読み出しバッファに転送されたデータを外部に出力する第１の読み出しコマンドと、指定された第１単位サイズのデータを前記メモリセルアレイから前記読み出しバッファに転送して、当該読み出しバッファに転送されたデータを外部に出力するとともに当該指定されたデータに物理アドレスが隣接する次の第１単位サイズのデータを前記メモリセルアレイから前記読み出しバッファに転送する第２の読み出しコマンドとをサポートし、前記コントローラは、読み出し要求に含まれるホストアドレスおよび／またはデータサイズに基づいて、前記メモリチップに当該読み出し要求にかかる読み出し対象のデータを出力させるために前記第１の読み出しコマンドを使用するか前記第２の読み出しコマンドを使用するかを決定する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態のＳＳＤの構成を示すブロック図である。
【図２】図２は、ノーマルリードを説明する図である。
【図３】図３は、キャッシュリードを説明する図である。
【図４】図４は、アドレス変換表のデータ構造の一例を示す図である。
【図５】図５は、ホスト装置から受信した読み出し要求を処理する際の第１の実施形態のＳＳＤの動作を説明するフローチャートである。
【図６】図６は、ステップＳ５における分割方式について説明する図である。
【図７】図７は、ホスト装置から受信した読み出し要求を処理する際の第２の実施形態のＳＳＤの動作を説明するフローチャートである。
【図８】図８は、ホスト装置から受信した読み出し要求を処理する際の第３の実施形態のＳＳＤの動作を説明するフローチャートである。
【図９】図９は、ホスト装置から受信した読み出し要求を処理する際の第４の実施形態のＳＳＤの動作を説明するフローチャートである。
【図１０】図１０は、第５の実施形態のＳＳＤの構成を示すブロック図である。
【図１１】図１１は、ホスト装置から受信した読み出し要求を処理する際の第５の実施形態のＳＳＤの動作を説明するフローチャートである。
【発明を実施するための形態】
【０００８】
従来のＳＳＤでは、ホスト装置との間のデータ転送を行なう際に、メモリチップの内部リードにかかる時間がデータ転送開始までのレイテンシとして見え、結果としてデータの転送効率が低下してしまうという場合があった。
【０００９】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。なお、以下の実施形態では、本発明の実施形態にかかるメモリシステムをＳＳＤに適用した例について説明するが、本発明の実施形態にかかるメモリシステムの適用対象はＳＳＤに限定されない。例えば、不揮発にデータを記憶する半導体メモリおよびコントローラを搭載したメモリカード等の補助記憶装置に対しても、本実施の形態を適用することが可能である。
【００１０】
また、各実施形態における各機能ブロックは、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
【００１１】
（第１の実施形態）
図１は、第１の実施形態のＳＳＤの構成を示すブロック図である。図示するように、ＳＳＤ１００は、パーソナルコンピュータなどのホスト装置２００とＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格などの通信インタフェースで接続され、ホスト装置２００の外部記憶装置として機能する。ＳＳＤ１００がホスト装置２００から受信する読み出し／書き込み要求には、ホストアドレス（ここではＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）と読み出し／書き込み要求するデータのサイズ（ここではセクタ数、１セクタは例えば５１２バイト）とが含まれている。
【００１２】
ＳＳＤ１００は、ホストコントローラ１０と、ＮＡＮＤメモリチップ２０と、ＮＡＮＤコントローラ３０と、制御コントローラ４０と、一時メモリ５０とを備えている。ホストコントローラ１０、ＮＡＮＤコントローラ３０、および制御コントローラ４０は、ホスト装置２００から読み出し要求を受け付けて、受け付けた読み出し要求にかかる読み出し対象のデータをページと呼ばれる読み書きの単位（ページ）毎にＮＡＮＤメモリチップ２０に出力させて、前記出力されたページサイズ毎のデータをホスト装置２００に逐次転送するコントローラを構成する。
【００１３】
ホストコントローラ１０は、ホスト装置２００から受け取った書き込み／読み出し要求（以下、ホストコマンド）を制御コントローラ４０に通知する。また、ホストコントローラ１０は、ＮＡＮＤコントローラ３０を介して、ホスト装置２００とＮＡＮＤメモリチップ２０との間でデータ転送を行う。ホスト装置２００とホストコントローラ１０とのデータ転送は、ホスト装置２００からの要求の単位であるセクタサイズ単位で行われる。
【００１４】
制御コントローラ４０は、ホストコントローラ１０を介してホスト装置２００から受け取ったホストコマンドを解釈し、それに応じてＮＡＮＤコントローラ３０を制御する機能を有する。制御コントローラ４０は、読み出し制御部４１を備える。読み出し制御部４１は、ホストコントローラ１０から受け取った読み出し要求を解釈し、ＮＡＮＤコントローラ３０に読み出しにかかるＮＡＮＤコマンドを発行する。
【００１５】
ＮＡＮＤメモリチップ２０は、ホストコマンドにより書き込み要求されたデータを記憶する。ＮＡＮＤメモリチップ２０は、ＮＡＮＤ型の不揮発性の記憶素子からなる、読み書きの単位（ページ）とブロックと呼ばれる複数のページをまとめた消去単位とを有するメモリセルアレイ２１を備えている。１ページのデータは、例えばセクタサイズの整数倍のデータ部と、誤り訂正などに使用する冗長部とを加算したサイズを有している。ＮＡＮＤメモリチップ２０は、ＮＡＮＤコントローラ３０を介して制御コントローラ４０から受信したＮＡＮＤコマンドに基づいて、ホスト装置２００から書き込み／読み出し要求された１または複数セクタサイズのデータをページ単位で入出力する。
【００１６】
また、ＮＡＮＤメモリチップ２０は、ＮＡＮＤコントローラ３０との間でページサイズの転送データを送受信するための一次バッファであるデータキャッシュ２３と、データキャッシュ２３とメモリセルアレイ２１との間に介在する二次バッファであるページバッファ２２（読み出しバッファ）とを備えている。ページバッファ２２およびデータキャッシュ２３は、例えばＳＲＡＭにより構成される。
【００１７】
ＮＡＮＤメモリチップ２０は、書き込み時には、ＮＡＮＤコントローラ３０から送信されてきたデータをデータキャッシュ２３に受け付けて、受け付けたデータをページバッファ２２に転送し、転送完了後に、ページバッファ２２に格納されたデータをメモリセルアレイ２１にページ単位で書き込む。ＮＡＮＤメモリチップ２０は、読み出し時には、読み出し要求されたデータをメモリセルアレイ２１からページ単位でページバッファ２２に読み出して、読み出し完了後にページバッファ２２からデータキャッシュ２３にデータを転送し、データキャッシュ２３からＮＡＮＤコントローラ３０にデータを転送する。
【００１８】
本発明の第１の実施形態によれば、ＮＡＮＤメモリチップ２０は、ＮＡＮＤコマンドにより読み出し要求されたデータのみをメモリセルアレイ２１から読み出して出力するノーマルリードと、ＮＡＮＤコマンドにより読み出し要求されたデータを出力するとともに、読み出し要求されたデータに隣接するアドレスに格納されている１ページのデータをメモリセルアレイ２１からページバッファ２２に読み出しておくキャッシュリードとの２つの読み出し動作を実行することができる。前者の読み出し動作を要求するＮＡＮＤコマンドをノーマルリードコマンド、後者の読み出し動作を要求するＮＡＮＤコマンドをキャッシュリードコマンドということとする。図２は、ノーマルリードを説明する図であり、図３は、キャッシュリードを説明する図である。
【００１９】
図２は、ノーマルリード時におけるＩ／Ｏ信号の状態と、Ｒｙ／Ｂｙ信号の状態と、Ｒｙ／Ｂｙ信号の状態がＢｙであるときのＮＡＮＤメモリチップ２０の動作状態とを示している。図示するように、まず、ＮＡＮＤコントローラ３０は、ＮＡＮＤメモリチップ２０へ、読み出し動作にかかる送受信を開始する旨を通知するコマンドである読み出しコマンドと、読み出し対象のデータが格納されているアドレスと、アドレスの送信が終わり、ＮＡＮＤメモリチップ２０に読み出しにかかる内部動作を開始させる旨を通知するコマンドである読み出し開始コマンドとを送信する。読み出しコマンド、アドレス、読み出し開始コマンドはノーマルリードコマンドを構成する。なお、ここでは、読み出し対象のデータが格納されているアドレスをメモリセルアレイ２１のページＮのアドレスであるとしている。
【００２０】
ＮＡＮＤメモリチップ２０は、読み出し開始コマンドを受信すると、読み出し対象のデータをページバッファ２２に用意する処理（内部リード）を完了するまでＲｙ／Ｂｙ信号をＢｙ状態とする。具体的には、ＮＡＮＤメモリチップ２０は、読み出し開始コマンドを受信した後、Ｒｙ／Ｂｙ信号をＲｙからＢｙに遷移させる。そして、メモリセルアレイ２１のページＮからデータを読み出して、読み出したデータをページバッファ２２に格納する。さらに、ＮＡＮＤメモリチップ２０は、ページバッファ２２に格納されたデータをデータキャッシュ２３へ転送する。
【００２１】
ＮＡＮＤメモリチップ２０は、ページＮから読み出したデータをデータキャッシュ２３に格納すると、Ｒｙ／Ｂｙ信号をＢｙ状態からＲｙ状態に遷移させる。なお、Ｒｙ／Ｂｙ信号がＢｙ状態である間のレイテンシをｔＲと表記する。Ｒｙ／Ｂｙ信号がＲｙ状態に復帰した後、データキャッシュ２３に格納されたページＮから読み出されたデータは、ＮＡＮＤコントローラ３０へ送信される。データキャッシュ２３内のデータは、例えばＮＡＮＤコントローラ３０が発行するＲＥ（Ｒｅａｄ  Ｅｎａｂｌｅ）信号に同期してＮＡＮＤコントローラ３０へ送り出される。
【００２２】
図３は、キャッシュリード時におけるＩ／Ｏ信号の状態と、Ｒｙ／Ｂｙ信号の状態と、読み出し動作中の各時点におけるＮＡＮＤメモリチップ２０内の状態とを示している。ここでは、メモリセルアレイ２１からページＮ〜Ｎ＋２に格納されているデータを読み出すものとする。図示するように、まず、ＮＡＮＤメモリチップ２０は、ＮＡＮＤコントローラ３０から、読み出しコマンドと、読み出し対象のデータが格納されている最初のページであるアドレス（ページＮ）と、読み出し開始コマンドとを受信する。
【００２３】
ここまでにＮＡＮＤメモリチップ２０が受信するコマンドおよびアドレスはノーマルリードコマンドと同じである。したがって、ＮＡＮＤメモリチップ２０は、（ａ）に示すように、読み出し開始コマンドを受信した後、Ｒｙ／Ｂｙ信号をＲｙからＢｙに遷移させる。そして、メモリセルアレイ２１のページＮからデータを読み出して、読み出したデータをページバッファ２２に格納する。そして、ＮＡＮＤメモリチップ２０は、ページバッファ２２に格納されたデータをデータキャッシュ２３へ格納する。ＮＡＮＤメモリチップ２０は、ページＮから読み出したデータをデータキャッシュ２３に格納すると、Ｒｙ／Ｂｙ信号をＢｙ状態からＲｙ状態に遷移させる。なお、Ｒｙ／Ｂｙ信号がＢｙ状態となっている間の時間はｔＲと同一である。
【００２４】
Ｒｙ／Ｂｙ信号がＲｙに復帰した後、ＮＡＮＤコントローラ３０は、ＮＡＮＤメモリチップ２０へ、キャッシュリードを実行する旨を通知するコマンドであるキャッシュ使用コマンドを送信する。キャッシュ使用コマンドを受信すると、ＮＡＮＤメモリチップ２０は、（ｂ）に示すように、ページバッファ２２に格納されているページＮにかかるデータを再び読み出して、読み出したデータを再びデータキャッシュ２３へ格納する。この間、ＮＡＮＤメモリチップ２０は、Ｒｙ／Ｂｙ信号をＢｙ状態とする。なお、この間にＲｙ／Ｂｙ信号がＢｙ状態となっている間のレイテンシをｔＤＣＢＹと表記する。データをページバッファ２２からデータキャッシュ２３へ転送する処理は、レジスタ間のデータ転送であるため、メモリセルアレイ２１に対するアクセスを伴う内部リードよりも著しく短い時間で実行される。すなわち、ｔＤＣＢＹはｔＲよりも著しく小さい。
【００２５】
Ｒｙ／Ｂｙ信号がＲｙ状態に復帰すると、データキャッシュ２３に格納されたページＮから読み出されたデータはＮＡＮＤコントローラ３０へ送信される。このとき、（ｃ）に示すように、ＮＡＮＤメモリチップ２０は、データキャッシュ２３に格納されたデータを送信すると同時に、ページＮに隣接するページであるページＮ＋１からデータを読み出して、読み出したデータをページバッファ２２に格納する。
【００２６】
ページＮにかかるデータがＮＡＮＤコントローラ３０に転送されると、ＮＡＮＤコントローラ３０は再度キャッシュ使用コマンドを送信する。キャッシュ使用コマンドを受信すると、ＮＡＮＤメモリチップ２０は、（ｄ）に示すように、（ｃ）に示す動作によりページバッファ２２に格納されたページＮ＋１にかかるデータを読み出して、読み出したデータをデータキャッシュ２３へ格納する。この間、ＮＡＮＤメモリチップ２０は、Ｒｙ／Ｂｙ信号をＢｙ状態とする。この間のレイテンシはｔＤＣＢＹと同一である。
【００２７】
Ｒｙ／Ｂｙ信号がＲｙ状態に復帰すると、データキャッシュ２３に格納されたページＮ＋１から読み出されたデータはＮＡＮＤコントローラ３０へ送信される。このとき、（ｅ）に示すように、ＮＡＮＤメモリチップ２０は、データキャッシュ２３に格納されたデータを送信すると同時に、ページＮ＋１に隣接するページであるページＮ＋２からデータを読み出して、読み出したデータをページバッファ２２に格納する。
【００２８】
ページＮ＋１にかかるデータがＮＡＮＤコントローラ３０に転送されると、ＮＡＮＤコントローラ３０は、次のページがキャッシュリードによる読み出し対象のデータのうちの最終ページである旨を通知する最終ページ通知コマンドを送信する。最終ページ通知コマンドを受信すると、ＮＡＮＤメモリチップ２０は、（ｆ）に示すように、（ｅ）に示す動作によりページバッファ２２に格納されたページＮ＋２にかかるデータを読み出して、読み出したデータをデータキャッシュ２３へ格納する。この間、ＮＡＮＤメモリチップ２０は、Ｒｙ／Ｂｙ信号をＢｙ状態とする。この間のレイテンシはｔＤＣＢＹと同一である。
【００２９】
Ｒｙ／Ｂｙ信号がＲｙ状態に復帰すると、データキャッシュ２３に格納されたページＮ＋２から読み出されたデータはＮＡＮＤコントローラ３０へ送信され、キャッシュリードが終了する。
【００３０】
なお、読み出しコマンド、アドレス、読み出しコマンド、１以上のキャッシュ使用コマンド、および最終ページ通知コマンドは、キャッシュリードコマンドを構成する。また、最終ページ通知コマンドの代わりにキャッシュ使用コマンドを使用するように構成してもよい。
【００３１】
物理アドレスが連続した複数ページのデータがホスト装置２００からの読み出し対象となっている場合において、図２に示したノーマルリードをページ毎に実行すると、ノーマルリードを実行する毎に内部リードにかかるレイテンシｔＲが発生する。これに対し、図３に示したキャッシュリードを実行すると、最初のページの読み出し時に内部リードにかかるレイテンシｔＲが発生するものの、１ページ分のデータを転送完了する頃には次のページのデータをページバッファ２２に先読みしているので、ｔＲのように大きなレイテンシを発生させることなく当該次のページのデータの転送を開始することができる。すなわち、キャッシュリードを用いると、内部リードにかかる待ち時間を隠蔽することができ、結果として効率よくホスト装置２００とＳＳＤ１００との間でデータ転送を行うことができるようになる。
【００３２】
第１の実施形態によれば、読み出し制御部４１は、ＮＡＮＤコントローラ３０に発行するＮＡＮＤコマンドをノーマルリードコマンドとするかキャッシュリードコマンドとするかをホスト装置２００からの読み出し要求に含まれるセクタサイズ（ＳＣ）に応じて決定する。具体的には、読み出し制御部４１は、しきい値サイズとしてのＳＣｔｈを保持しており、発行するＮＡＮＤコマンドを、ＳＣがＳＣｔｈより大きい場合にはキャッシュリードコマンドとし、ＳＣがＳＣｔｈより小さい場合にはノーマルリードコマンドとする。ＳＣｔｈは１より大きい値であって、複数ページ分のサイズに相当する値が採用される。
【００３３】
ＮＡＮＤコントローラ３０は、制御コントローラ４０から送られてきたＮＡＮＤコマンドをキューイングしておき、ＮＡＮＤメモリチップ２０の動作状態に応じてキューイングしているＮＡＮＤコマンドを順次ＮＡＮＤメモリチップ２０に発行する。ＮＡＮＤコントローラ３０は、ＮＡＮＤメモリチップ２０の動作状態を例えばＲｙ／Ｂｙ信号線などの状態により認識する。また、ＮＡＮＤコントローラ３０は、ＮＡＮＤメモリチップ２０とホストコントローラ１０との間でデータ転送を実行する。
【００３４】
一時メモリ５０は、ＤＲＡＭなどにより構成されており、ホストコマンドに含まれるＬＢＡとメモリセルアレイ２１における対応するデータが格納されている物理アドレスとの対応関係を記述したアドレス変換表５１が格納されている。制御コントローラ４０は、ホスト装置２００から書き込み要求されたデータをＮＡＮＤメモリチップ２０にデータを書き込んだ際にアドレス変換表５１の対応関係を更新し、読み出しにかかるＮＡＮＤコマンドを生成する際に当該アドレス変換表５１を参照して読み出し要求されたデータの格納先の物理アドレスを求める。
【００３５】
アドレス変換表５１に記録されるＬＢＡとメモリセルアレイ２１の物理アドレスの対応関係の最小の管理単位は、セクタサイズの整数倍の単位とし、その単位分のデータは連続してＮＡＮＤメモリチップ２０に記録されるものとする。アドレス変換表５１の管理単位が小さければアドレス変換表５１のサイズが大きくなり、アドレス変換表５１の管理単位が大きければアドレス変換表５１のサイズが小さくなる関係があるため、アドレス変換表５１の管理単位は、アドレス変換表５１を記録する一時メモリ５０の容量を考慮して決定される。例えば、セクタサイズよりも大きな、ブロックサイズ単位、ページサイズ単位、ブロックやページを分割した単位が使用される。
【００３６】
本第１の実施形態では、簡単のために、ＮＡＮＤメモリチップ２０のブロックサイズをアドレス変換単位とする。つまり、ホストアドレスにメモリセルアレイ２１におけるブロックサイズの領域毎の物理アドレスがアラインされ、そのブロックの先頭アドレスがアラインされたホストアドレスからブロックサイズ分の連続したデータは、ＮＡＮＤメモリチップ２０上でもブロック内の連続したページに連続して記録される。
【００３７】
図４は、アドレス変換表５１のデータ構造の一例を示す図である。図示するように、アドレス変換表５１のインデックスはホストアドレス（ＬＢＡ）をブロックサイズで割った商（整数）となる。たとえばブロックサイズがセクタサイズの１００倍である時、ホストアドレス（ＬＢＡ）が１８０のデータは、１８０／１００＝１余り８０であるので、インデックス１に格納されているＢｌｏｃｋ  １００のブロックの先頭から８０セクタ目の位置から格納されていることを示す。
【００３８】
図５は、ホスト装置２００から受信した読み出し要求を処理する際の本発明の第１の実施形態のＳＳＤ１００の動作を説明するフローチャートである。ホスト装置２００がＳＳＤ１００に読み出し要求を送信すると、ホストコントローラ１０は、受信した読み出し要求のパラメータであるホストアドレス（ＬＢＡ）とセクタカウント（ＳＣ）とを読み出し制御部４１に通知する（ステップＳ１）。読み出し制御部４１は、ＳＣの値がＳＣｔｈよりも大きいか否かを判定し（ステップＳ２）、ＳＣがＳＣｔｈよりも大きい場合（ステップＳ２、Ｙｅｓ）、発行するＮＡＮＤコマンドをキャッシュリードコマンドに決定し（ステップＳ３）、ＳＣがＳＣｔｈよりも小さい場合（ステップＳ２、Ｎｏ）、発行するＮＡＮＤコマンドをノーマルリードコマンドに決定する（ステップＳ４）。
【００３９】
ステップＳ３またはステップＳ４の後、読み出し制御部４１は、ＬＢＡとＳＣとをアドレス変換表５１の管理単位であるブロックサイズのアラインメント単位で分割する（ステップＳ５）。ここで、分割数をＮとし、分割されて生じた夫々の範囲にかかるＬＢＡを夫々、ＬＢＡ（１）、ＬＢＡ（２）、〜、ＬＢＡ（Ｎ）と表記し、夫々の範囲のセクタカウントをＳＣ（１）、ＳＣ（２）、〜、ＳＣ（Ｎ）と表記することとする。
【００４０】
図６は、ステップＳ５における分割方式について説明する図である。図示するように、ホスト装置２００からの読み出し対象の範囲は、アドレス変換表５１であるブロックの境界で分割され、合計４つの範囲に分割されている。
【００４１】
ステップＳ５の後、読み出し制御部４１は、ステップＳ７〜ステップＳ１３のループ処理に使用するカウント用のパラメータｎを１で初期化し（ステップＳ６）、ＬＢＡ（ｎ）をブロックサイズで除算することによってアドレス変換表５１におけるインデックス（ＩＤＸ）と、オフセット（ＯＦＦＳＥＴ）とを算出する（ステップＳ７）。具体的には、ＬＢＡ（ｎ）をブロックサイズで除算して求まる商がＩＤＸであり、余りがＯＦＦＳＥＴである。そして、読み出し制御部４１は、アドレス変換表５１におけるＩＤＸ番目のエントリから、対応するメモリセルアレイ２１のブロックアドレス（ＢＡ）を求める（ステップＳ８）。
【００４２】
そして、読み出し制御部４１は、ブロックアドレス（ＢＡ）、オフセット（ＯＦＦＳＥＴ）、およびＳＣ（ｎ）から、読み出し対象のページ（先頭ページのアドレス）とその範囲（例えばページ数）を決定し（ステップＳ９）、ＮＡＮＤコントローラ３０にステップＳ３またはステップＳ４で決定した種類のＮＡＮＤコマンドを発行する（ステップＳ１０）。
【００４３】
例えば、ノーマルリードコマンドを発行することが決定されている場合においては、読み出し制御部４１は、読み出しコマンド、アドレス、および読み出し開始コマンドのセットをステップＳ９で決定されたページ毎に発行する。キャッシュリードコマンドを発行することが決定されている場合においては、読み出し制御部４１は、読み出しコマンド、ステップＳ９で決定された先頭ページのアドレス、読み出しコマンド、ステップＳ９で決定されたページ数から１を減算した数のキャッシュ使用コマンド、および最終ページ通知コマンドにより構成されるキャッシュリードコマンドを発行する。
【００４４】
ＮＡＮＤコントローラ３０は、受信したＮＡＮＤコマンドを順次ＮＡＮＤメモリチップ２０に発行する（ステップＳ１１）。すると、ＮＡＮＤメモリチップ２０からデータが出力され、出力されたデータは順次ホスト装置２００へ転送される。
【００４５】
そして、読み出し制御部４１は、ｎの値を１だけインクリメントし（ステップＳ１２）、ｎの値が分割数Ｎの値以下であるか否かを判定する（ステップＳ１３）。ｎがＮ以下である場合（ステップＳ１３、Ｙｅｓ）、ステップＳ７に移行する。ｎがＮを越える場合（ステップＳ１３、Ｎｏ）、ＳＳＤ１００は、受信した読み出し要求にかかる読み出しの動作を終了する。
【００４６】
なお、以上の説明においては、アドレス変換表５１には、メモリセルアレイ２１におけるブロックサイズの領域毎にホストアドレスと物理アドレスとの対応関係が記述されているとして説明したが、アドレス変換表５１の管理単位はページサイズよりも大きいサイズであればどのようなサイズであっても構わない。
【００４７】
また、ブロックの先頭の物理アドレスがアラインされたホストアドレスからブロックサイズ分の連続したデータはＮＡＮＤメモリチップ２０上でもブロック内の連続したページに連続して記録されるものとして説明したが、書き込みの方式はこれに限定されない。例えば、ＬＢＡとＳＣとにより定義される連続したデータは出来るだけＮＡＮＤメモリチップ２０上の連続したページに記録されるようにしてもよい。
【００４８】
また、読み出しコマンド、アドレス、読み出しコマンド、１以上のキャッシュ使用コマンド、および最終ページ通知コマンドは、キャッシュリードコマンドを構成するとして説明したが、最終ページ通知コマンドの代わりにキャッシュ使用コマンドを使用するように構成してもよい。すなわち、本実施形態においては、キャッシュリードコマンドで一般的に利用される最終ページ通知コマンドを使用することなく、キャッシュリードを行う場合には最終ページの読み出しの場合であっても常にページバッファに２２データを先読みしておく構成としてもよい。これは以下第２乃至第５の実施形態に関しても同様である。
【００４９】
最終ページ通知コマンドを使用しない場合、ＮＡＮＤコントローラ３０に、現在データキャッシュ２３に格納されているデータのアドレスと、受信したノーマルリードコマンドまたはキャッシュリードコマンドのアドレスが連続するか否かを判断する機能を持たせてもよい。ＮＡＮＤコントローラ３０は、アドレスが連続であればＮＡＮＤメモリチップ２０にキャッシュリードコマンドを発行してページバッファ２２からのデータ転送を実行し、アドレスが連続でなければＮＡＮＤメモリチップ２０にリセットコマンドを発行してページバッファに２２及びデータキャッシュ２３に格納されているデータを破棄し、リードシーケンスを最初から実行しなおす。これにより、ホストから装置２００から受け取った複数の読み出し要求間において、連続するページへのアクセスが行われる場合に、内部リードにかかるレイテンシｔＲを隠蔽することができ、さらに転送効率が向上する。
【００５０】
以上述べたように、本発明の第１の実施形態によれば、ＮＡＮＤメモリチップ２０は、指定されたページサイズのデータをメモリセルアレイ２１からページバッファ２２に転送して、当該ページバッファ２２に転送されたデータを外部に出力するノーマルリードコマンドと、指定されたページサイズのデータをメモリセルアレイ２１からページバッファ２２に転送して、当該ページバッファ２２に転送されたデータを外部に出力するとともに当該指定されたデータに物理アドレスが隣接するページサイズのデータをメモリセルアレイ２１からページバッファ２２に転送するキャッシュリードコマンドとをサポートし、コントローラ（ホストコントローラ１０、ＮＡＮＤコントローラ３０、および制御コントローラ４０）は、読み出し要求に含まれるデータサイズ（ＳＣ）に基づいて、ＮＡＮＤメモリチップ２０に送信する読み出しコマンドをノーマルリードコマンドとするかキャッシュリードコマンドとするかを決定するように構成したので、一定以上のデータの読み出し要求を実行する際、ページサイズ毎の読み出しデータの内部リードにかかるレイテンシを隠蔽することができるので、ホスト装置２００との間の転送効率を向上させることができる。
【００５１】
また、コントローラは、ＳＣと予め設定されたしきい値サイズ（ＳＣｔｈ）とを比較し、ＳＣがＳＣｔｈより小さい場合、ノーマルリードコマンドを使用すると決定し、ＳＣがＳＣｔｈよりも大きい場合、キャッシュリードコマンドを使用すると決定するように構成したので、ホストコマンドのみに基づいて使用する読み出しコマンドを決定することができるので、読み出しコマンドの判断を高速に実行することができる。
【００５２】
なお、本発明の第１の実施形態の比較例にかかる技術として、次に読み出されることが予測されるページを先読みして、先読みにより読み出されたデータをＤＲＡＭにキャッシュしておく技術がある。本発明の第１の実施形態によれば、キャッシュ用のＤＲＡＭを用意することなくページを先読みすることができるので、上記比較例に比べて製造コストを低減することができる。
【００５３】
（第２の実施形態）
第２の実施形態のＳＳＤの構成は読み出し制御部を除いて第１の実施形態と同一であるので、当該読み出し制御部を除く第２の実施形態のＳＳＤにかかる構成の詳細な説明を省略する。
【００５４】
第２の実施形態によれば、読み出し制御部４１は、ホスト装置２００からのホストアドレスとセクタサイズとをアドレス変換表５１の管理単位毎に分割した後、分割された領域のセクタサイズＳＣ（ｎ）とＳＣｔｈとの比較に基づいてＮＡＮＤコントローラ３０に発行するＮＡＮＤコマンドを決定する。
【００５５】
図７は、ホスト装置２００から受信した読み出し要求を処理する際の本発明の第２の実施形態のＳＳＤ１００の動作を説明するフローチャートである。ホスト装置２００がＳＳＤ１００に読み出し要求を送信すると、ホストコントローラ１０は、受信した読み出し要求のパラメータであるホストアドレス（ＬＢＡ）とセクタカウント（ＳＣ）とを読み出し制御部４１に通知する（ステップＳ２１）。そして、読み出し制御部４１は、ＬＢＡとＳＣとをアドレス変換表５１の管理単位であるブロックサイズのアラインメント単位で分割する（ステップＳ２２）。分割方式は第１の実施形態と同様である。
【００５６】
そして、読み出し制御部４１は、ステップＳ２４〜ステップＳ３３のループ処理に使用するカウント用のパラメータｎを１で初期化し（ステップＳ２３）、ＳＣ（ｎ）の値がＳＣｔｈよりも大きいか否かを判定し（ステップＳ２４）する。ＳＣ（ｎ）がＳＣｔｈよりも大きい場合（ステップＳ２４、Ｙｅｓ）、読み出し制御部４１は、発行するＮＡＮＤコマンドをキャッシュリードコマンドに決定し（ステップＳ２５）、ＳＣがＳＣｔｈよりも小さい場合（ステップＳ２４、Ｎｏ）、発行するＮＡＮＤコマンドをノーマルリードコマンドに決定する（ステップＳ２６）。
【００５７】
ステップＳ２５またはステップＳ２６の後、ステップＳ２７〜ステップＳ３２において、ステップＳ７〜ステップＳ１２と夫々同じ処理が実行される。
【００５８】
ステップＳ３２の後、読み出し制御部４１は、ｎの値が分割数Ｎの値以下であるか否かを判定する（ステップＳ３３）。ｎがＮ以下であった場合（ステップＳ３３、Ｙｅｓ）、ステップＳ２４に移行する。ｎがＮを越えた場合（ステップＳ３３、Ｎｏ）、ＳＳＤ１００は、受信した読み出し要求にかかる読み出しの動作を終了する。
【００５９】
以上述べたように、ホストアドレスをメモリセルアレイ２１におけるブロックサイズの領域毎に分割した後においても、使用する読み出しコマンドをホストコマンドに基づいて高速に決定することができる。
【００６０】
（第３の実施形態）
第３の実施形態のＳＳＤの構成は読み出し制御部を除いて第１の実施形態と同一であるので、当該読み出し制御部を除く第３の実施形態のＳＳＤにかかる構成の詳細な説明を省略する。
【００６１】
第３の実施形態によれば、読み出し制御部４１は、読み出し対象の領域がホストアドレス上で連続している読み出し要求を所定回数以上受信したか否かに基づいてＮＡＮＤコマンドを切り替える。読み出し制御部４１は、読み出し要求の回数を判定するためのしきい値Ｒｔｈおよび読み出し対象の領域の連続性を判定するためのアドレス情報ＬＢＡｅｘｐを保持している。Ｒｔｈは１以上の値である。また、ここでは、ＬＢＡｅｘｐを次の読み出し要求の予測ホストアドレスとし、読み出し要求を受信したとき、当該受信した読み出し要求のＬＢＡと保持しているＬＢＡｅｘｐとが一致する場合に、当該読み出し要求にかかる読み出し対象の領域と当該読み出し要求の１つ前に受信した読み出し要求にかかる読み出し対象とが連続していると判定されることとする。
【００６２】
図８は、ホスト装置２００から受信した読み出し要求を処理する際の本発明の第３の実施形態のＳＳＤ１００の動作を説明するフローチャートである。ホスト装置２００がＳＳＤ１００に読み出し要求を送信すると、ホストコントローラ１０は、受信した読み出し要求のパラメータであるホストアドレス（ＬＢＡ）とセクタカウント（ＳＣ）とを読み出し制御部４１に通知する（ステップＳ４１）。読み出し制御部４１は、ＬＢＡと予め保持しているＬＢＡｅｘｐとが一致するか否かを判定し（ステップＳ４２）、双方の値が一致しなかった場合（ステップＳ４２、Ｎｏ）、読み出し範囲が連続する読み出し要求のカウント数であるＲの値を０で初期化するとともにＬＢＡｅｘｐをホスト装置２００から指定されることのない無効な値（ここでは−１）とし（ステップＳ４３）、発行するＮＡＮＤコマンドをノーマルリードコマンドに決定する（ステップＳ４４）。
【００６３】
ＬＢＡとＬＢＡｅｘｐとが一致した場合（ステップＳ４２、Ｙｅｓ）、読み出し制御部４１は、Ｒの値を１だけインクリメントし（ステップＳ４５）、Ｒの値がＲｔｈの値以上であるか否かを判定する（ステップＳ４６）。Ｒの値がＲｔｈの値未満であった場合（ステップＳ４６、Ｎｏ）、ステップＳ４４に移行する。Ｒの値がＲｔｈの値以上であった場合（ステップＳ４６、Ｙｅｓ）、読み出し制御部４１は、発行するＮＡＮＤコマンドをキャッシュリードコマンドに決定する（ステップＳ４７）。
【００６４】
ステップＳ４４またはステップＳ４７の後、ステップＳ４８〜ステップＳ５５において、ステップＳ５〜ステップＳ１２と夫々同じ処理が実行される。ステップＳ５５の後、読み出し制御部４１は、ｎの値が分割数Ｎの値以下であるか否かを判定する（ステップＳ５６）。ｎがＮ以下であった場合（ステップＳ４６、Ｙｅｓ）、ステップＳ５０に移行する。ｎがＮを越えた場合（ステップＳ４６、Ｎｏ）、読み出し制御部４１は、ＬＢＡにＳＣを加算した値でＬＢＡｅｘｐを更新し（ステップＳ５７）、ＳＳＤ１００は、受信した読み出し要求にかかる読み出しの動作を終了する。
【００６５】
例えばＳＣｔｈに単位セクタ当たりのサイズを乗じたサイズよりも小さいサイズのデータを読み出し対象とする複数の読み出し要求で、かつ夫々の読み出し要求にかかる読み出し範囲（アクセス範囲）がホストアドレス上で連続している場合、キャッシュリードを選択することができれば、複数の読み出し要求により指定された読み出し範囲を構成する個々のページサイズ単位のデータの内部リードにかかるレイテンシを隠蔽することができる。本発明の第３の実施形態によれば、コントローラは、処理対象の読み出し要求にかかる読み出し対象のデータを出力させるために、当該読み出し要求および当該読み出し要求の前に受け付けた所定数以上の読み出し要求にかかる夫々のアクセス範囲がホストアドレス上で連続しているか否かを判定し、前記夫々のアクセス範囲が連続していない場合、ノーマルリードコマンドを使用すると決定し、前記夫々のアクセス範囲が連続している場合、キャッシュリードコマンドを使用すると決定する、ように構成したので、上記の状況においてキャッシュリードを実行することができ、結果として転送効率を向上させることができる。
【００６６】
（第４の実施形態）
第４の実施形態のＳＳＤの構成は読み出し制御部を除いて第１の実施形態と同一であるので、当該読み出し制御部を除く第４の実施形態のＳＳＤにかかる構成の詳細な説明を省略する。
【００６７】
第４の実施形態によれば、読み出し制御部４１は、読み出し対象の領域がホストアドレス上で連続している読み出し要求を所定回数以上受信したか否か、およびＳＣの値に基づいてＮＡＮＤコマンドを切り替える。すなわち、第４の実施形態にかかるＳＳＤは、第１の実施形態と第３の実施形態とが組み合わせて実装されたものとなっている。
【００６８】
図９は、ホスト装置２００から受信した読み出し要求を処理する際の本発明の第４の実施形態のＳＳＤ１００の動作を説明するフローチャートである。ホスト装置２００がＳＳＤ１００に読み出し要求を送信すると、ホストコントローラ１０は、受信した読み出し要求のパラメータであるホストアドレス（ＬＢＡ）とセクタカウント（ＳＣ）とを読み出し制御部４１に通知する（ステップＳ６１）。読み出し制御部４１は、ＬＢＡと予め保持しているＬＢＡｅｘｐとが一致するか否かを判定し（ステップＳ６２）、双方の値が一致しなかった場合（ステップＳ６２、Ｎｏ）、読み出し範囲が連続する読み出し要求のカウント数であるＲの値を０で初期化するとともにＬＢＡｅｘｐをホスト装置２００から指定されることのない無効な値（ここでは−１）とし（ステップＳ６３）、発行するＮＡＮＤコマンドをノーマルリードコマンドに決定する（ステップＳ６４）。
【００６９】
ＬＢＡとＬＢＡｅｘｐとが一致した場合（ステップＳ６２、Ｙｅｓ）、読み出し制御部４１は、Ｒの値を１だけインクリメントし（ステップＳ６５）、Ｒの値がＲｔｈの値以上であるか否かを判定する（ステップＳ６６）。Ｒの値がＲｔｈの値未満であった場合（ステップＳ６６、Ｎｏ）、ステップＳ６４に移行する。Ｒの値がＲｔｈの値以上であった場合（ステップＳ６６、Ｙｅｓ）、読み出し制御部４１は、ＳＣの値がＳＣｔｈよりも大きいか否かを判定し（ステップＳ６７）、ＳＣがＳＣｔｈよりも大きい場合（ステップＳ６７、Ｙｅｓ）、発行するＮＡＮＤコマンドをキャッシュリードコマンドに決定する（ステップＳ６８）。ＳＣがＳＣｔｈよりも小さい場合（ステップＳ６７、Ｎｏ）、ステップＳ６４へ移行する。
【００７０】
ステップＳ６４またはステップＳ６８の後、ステップＳ６９〜ステップＳ７８において、第３の実施形態におけるステップＳ４８〜ステップＳ５７と夫々同じ処理が実行され、ＳＳＤ１００は、受信した読み出し要求にかかる読み出しの動作を終了する。
【００７１】
このように、第１の実施形態と第３の実施形態とを組み合わせて実装することも可能である。
【００７２】
（第５の実施形態）
図１０は、第５の実施形態のＳＳＤの構成を示すブロック図である。図示するように、第５に実施形態のＳＳＤ３００は、ホストコントローラ６０および読み出し制御部４２の構成が第１の実施形態と異なっている。本第５の実施形態の説明においては、ホストコントローラ６０および読み出し制御部４２を除く構成の詳細な説明を省略する。
【００７３】
ＡＴＡ規格の１つであるＳＡＴＡ規格によれば、ＨＤＤに対するリード／ライトコマンドをキューに格納し、当該キューに格納されたリード／ライトコマンドを効率の良い順番に並べ替えて実行（アウトオブオーダー実行）をするＮＣＱ（Ｎａｔｉｖｅ  Ｃｏｍｍａｎｄ  Ｑｕｅｕｉｎｇ）と呼ばれる機能が規定されている。ホストコントローラ６０は、ホスト装置２００からＮＣＱ機能を利用して送信されてくるホストコマンドをキューイングするためのコマンドキュー６１を備えている。ホストコントローラ６０は、読み出し制御部４２に読み出し要求を送信する際、当該読み出し要求の次にコマンドキュー６１に格納されている読み出し要求に含まれるホストアドレスを読み出して、当該読み出したホストアドレスを読み出し制御部４２に送信する。
【００７４】
読み出し制御部４２は、処理対象の読み出し要求を、ホストコントローラ６０から受信した当該処理対象の読み出し要求の次の読み出し要求に含まれるホストアドレスに基づいて読み出し対象の領域の連続性を判定する。
【００７５】
図１１は、ホスト装置２００から受信した読み出し要求を処理する際の本発明の第５の実施形態のＳＳＤ３００の動作を説明するフローチャートである。ホストコントローラ６０は、受信したホストコマンドを受信した順番でコマンドキュー６１に蓄積記憶している。ホストコントローラ６０は、コマンドキュー６１から処理対象の読み出し要求を取り出して、当該処理対象の読み出し要求のパラメータであるホストアドレス（ＬＢＡ）とセクタカウント（ＳＣ）とを読み出し制御部４２に通知する（ステップＳ８１）。
【００７６】
さらに、ホストコントローラ６０は、当該処理対象の読み出し要求の後続の読み出し要求のパラメータであるホストアドレス（ＬＢＡｎｅｘｔ）を読み出して、読み出したＬＢＡｎｅｘｔを読み出し制御部４２に送信する（ステップＳ８２）。処理対象の読み出し要求の次に後続の読み出し要求がコマンドキュー６１に格納されていない場合には、ホストコントローラ６０はＬＢＡｎｅｘｔをホスト装置２００から指定されることのない無効な値（例えば−１）とするとよい。
【００７７】
読み出し制御部４２は、ＬＢＡとＳＣとの合計の値がＬＢＡｎｅｘｔと一致するか否かを判定し（ステップＳ８３）、双方の値が一致した場合（ステップＳ８３、Ｙｅｓ）、発行するＮＡＮＤコマンドをキャッシュリードコマンドに決定し（ステップＳ８４）、双方の値が一致しなかった場合（ステップＳ８３、Ｎｏ）、発行するＮＡＮＤコマンドをノーマルリードコマンドに決定する（ステップＳ８５）。
【００７８】
ステップＳ８４またはステップＳ８５の後、ステップＳ８６〜ステップＳ９４において、第１の実施形態におけるステップＳ５〜ステップＳ１３と夫々同じ処理が実行され、ＳＳＤ３００は、処理対象の読み出し要求にかかる読み出しの動作を終了する。
【００７９】
このように、コントローラは、ホスト装置２００から受け付けた読み出し要求を蓄積記憶するコマンドキュー６１を備え、処理対象の読み出し要求と前記コマンドキュー６１に記憶されている当該処理対象の読み出し要求の後続の読み出し要求とでアクセス範囲がホストアドレス上で連続しているか否かを判定し、前記夫々のアクセス範囲が連続していない場合、ノーマルリードコマンドを使用すると決定し、前記夫々のアクセス範囲が連続している場合、キャッシュリードコマンドを使用すると決定する、ように構成したので、後続の読み出し要求との関係を考慮してキャッシュリードを利用するか否かを決定することができるので、最初に受け付けた読み出し要求を処理する場合であっても、キャッシュリードにより転送効率の向上が見込めるとき、キャッシュリードにより当該読み出し要求を処理することができるようになる。
【００８０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８１】
１０、６０  ホストコントローラ、２０  ＮＡＮＤメモリチップ、２１  メモリセルアレイ、２２  ページバッファ、２３  データキャッシュ、３０  ＮＡＮＤコントローラ、４０  制御コントローラ、４１、４２  読み出し制御部、５０  一時メモリ、５１  アドレス変換表、６１  コマンドキュー、２００  ホスト装置、１００、３００  ＳＳＤ。
【図１】
2012128815.tif 000003
【図２】
2012128815.tif 000004
【図３】
2012128815.tif 000005
【図４】
2012128815.tif 000006
【図５】
2012128815.tif 000007
【図６】
2012128815.tif 000008
【図７】
2012128815.tif 000009
【図８】
2012128815.tif 000010
【図９】
2012128815.tif 000011
【図１０】
2012128815.tif 000012
【図１１】
2012128815.tif 000013