(57)【要約】【課題】データの読み出しを効率的に行うことが可能なメモリコントローラ及びデータ読出方法を提供する。【解決手段】データの読み出し対象となるページ毎に当該ページの誤り検出訂正データを格納したフラッシュメモリを制御するメモリコントローラであって、前記フラッシュメモリが有する複数のページのうち、読み出し対象のページから所定データサイズ分のデータを読み出す第１読出手段と、前記第１読出手段が前記データを読み出したページから、当該ページの前記誤り検出訂正データを読み出す第２読出手段と、前記第２読出手段が読み出した前記誤り検出訂正データのうち、前記第１読出手段が読み出したデータに対応する部分を用いて、当該データの誤り検出訂正を行う誤り検出訂正手段と、を備える。【選択図】図４
2013246645.tif 000002
【特許請求の範囲】
【請求項１】
データの読み出し対象となるページ毎に当該ページの誤り検出訂正データを格納したフラッシュメモリを制御するメモリコントローラであって、
前記フラッシュメモリが有する複数のページのうち、読み出し対象のページから所定データサイズ分のデータを読み出す第１読出手段と、
前記第１読出手段が前記データを読み出したページから、当該ページの前記誤り検出訂正データを読み出す第２読出手段と、
前記第２読出手段が読み出した前記誤り検出訂正データのうち、前記第１読出手段が読み出したデータに対応する部分を用いて、当該データの誤り検出訂正を行う誤り検出訂正手段と、
を備えるメモリコントローラ。
【請求項２】
前記読み出し対象となるページと、データサイズとの指定を受け付ける受付手段を更に備え、
前記第１読出手段は、前記フラッシュメモリが有する複数のページのうち、前記受付手段で指定を受け付けたページから、前記受付手段で指定を受け付けた前記データサイズ分のデータを読み出す請求項１に記載のメモリコントローラ。
【請求項３】
前記第２読出手段は、前記第１読出手段が読み出したページのアドレスを、前記誤り検出訂正データの格納アドレスにオフセットしたオフセットアドレスに基づいて、当該ページ内から前記誤り検出訂正データを読み出す請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記第２読出手段は、前記第１読出手段が読み出したページのアドレスを、前記誤り検出訂正データの格納アドレスに変更するコマンドを前記フラッシュメモリに発行することで、当該格納アドレスから前記誤り検出訂正データを読み出す請求項１〜３の何れか一項に記載のメモリコントローラ。
【請求項５】
前記誤り検出訂正手段は、前記第１読出手段が読み出したデータに対応する部分以外を無効化した前記誤り検出訂正データを用いて、当該データの誤り検出訂正を行う請求項１に記載のメモリコントローラ。
【請求項６】
データの読み出し対象となるページ毎に当該ページの誤り検出訂正データを格納したフラッシュメモリを制御するメモリコントローラで実行されるデータ読出方法であって、
第１読出手段が、前記フラッシュメモリが有する複数のページのうち、読み出し対象のページから所定データサイズ分のデータを読み出す第１読出工程と、
第２読出手段が、前記第１読出工程で前記データの読み出しが行われたページから当該ページの前記誤り検出訂正データを読み出す第２読出工程と、
誤り検出訂正手段が、前記第２読出工程で読み出された前記誤り検出訂正データのうち、前記第１読出工程で読み出されたデータに対応する部分を用いて、当該データの誤り検出訂正を行う誤り検出訂正工程と、
を含むデータ読出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリコントローラ及びデータ読出方法に関するものである。
【背景技術】
【０００２】
近時、データの記憶に用いられる記憶装置として、ＮＡＮＤ型等のフラッシュメモリが用いられている。係るフラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【０００３】
また、フラッシュメモリでは、ＥＣＣ（Error  Check  and  Correct）によるデータの保護が一般的に行われている。ＥＣＣ用のデータは、データ読み出しの単位となるページ毎に保持されており、このＥＣＣデータを用いることで、ページ単位で誤り検出訂正を行うことが可能となっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１０−５００６９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、ページ単位で誤り検出訂正を行うため、ページ内に格納されたデータのデータサイズが当該ページのサイズ未満の場合であっても、ページ内の全領域を読み出すことになり、パフォーマンスの観点において非効率であるという問題があった。
【課題を解決するための手段】
【０００６】
実施の形態のメモリコントローラは、データの読み出し対象となるページ毎に当該ページの誤り検出訂正データを格納したフラッシュメモリを制御するメモリコントローラであって、第１読出手段と、第２読出手段と、誤り検出訂正手段とを備える、第１読出手段は、フラッシュメモリが有する複数のページのうち、読み出し対象のページから所定データサイズ分のデータを読み出す。第２読出手段は、第１読出手段がデータを読み出したページから、当該ページの誤り検出訂正データを読み出す。誤り検出訂正手段は、第２読出手段が読み出した誤り検出訂正データのうち、第１読出手段が読み出したデータに対応する部分を用いて、当該データの誤り検出訂正を行う。
【図面の簡単な説明】
【０００７】
【図１】図１は、本実施形態に係るデータ記憶装置の構成例を示すブロック図である。
【図２】図２は、図１に示したＮＡＮＤ型フラッシュメモリのメモリチップ構成を模式的に示す図である。
【図３】図３は、本実施形態に係るメモリ制御部の第１リード動作を説明するためのシーケンス図である。
【図４】図４は、本実施形態に係るメモリ制御部の第２リード動作を説明するためのシーケンス図である。
【図５】図５は、本実施形態に係るメモリ制御部の第２リード動作の他の動作例を説明するためのシーケンス図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリコントローラ及びデータ読出方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００９】
図１は、本実施形態に係るデータ記憶装置の構成例を示すブロック図である。図１に示すように、本実施形態のデータ記憶装置２０は、ＡＴＡやＵＳＢ等のインタフェース２１を介して、ＣＰＵ（Central  Processing  Unit）１１、ＲＯＭ（Read  Only  Memory）１２、ＲＡＭ（Random  Access  Memory）１３等のコンピュータ構成を備えたホスト装置１０と接続され、ホスト装置１０の補助記憶装置又は外部記憶装置として機能する。
【００１０】
ここで、ホスト装置１０は、例えば、ＰＣ（Personal  Computer）等の情報処理装置である。ホスト装置１０のＣＰＵ１１は、インタフェース２１を介して、データの読み出しを要求するリード要求、データの書き込みを要求するライト要求、データの消去を要求するイレース要求のそれぞれをデータ記憶装置２０に出力することで、ＮＡＮＤ２２に対するデータの読み出し、書き込み、消去をコントローラ２４に指示する。
【００１１】
データ記憶装置２０は、インタフェース２１と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤと略す）２２と、ＮＡＮＤ２２よりも高速アクセスが可能な半導体メモリであるＲＡＭ２３と、コントローラ２４とを備える。
【００１２】
ＮＡＮＤ２２は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、コントローラ２４の制御の下、データの書き込み（記憶）や、データの読み出し、データの消去等を行う。ＮＡＮＤ２２は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位であるイレースブロックを複数配列して構成される。
【００１３】
図２は、ＮＡＮＤ２２のメモリチップ構成を模式的に示す図である。図２に示すように、ＮＡＮＤ２２は、独立して消去することが可能なイレースブロックＢ１を複数配列することで構成されている。ここで、イレースブロックＢ１の各々は、データの読み出し及び書き込みの単位となる複数のページＰ１で構成される。ページＰ１の各々は、任意のデータを格納することが可能なユーザ領域Ｕ１と、当該ページＰ１（ユーザ領域Ｕ１）の誤り検知訂正を行うためのＥＣＣ用のデータ（以下、ＥＣＣデータという）や不良ブロックを示す情報を格納するための冗長領域Ｒ１とを有している。
【００１４】
ところで、ＮＡＮＤ２２を、ソフトウェアであるオペレーティングシステム（ドライバ、ファイルシステム）の管理下で使用する場合、ＮＡＮＤ２２のイレースブロックＢ１毎に、当該イレースブロックＢ１の状態を管理するための管理情報Ｍ１が、何れか一のページＰ１（例えば、先頭のページＰ１）に格納される。管理情報Ｍ１は、ページＰ１のサイズ（例えば、２５６バイト〜８キロバイト）よりも小さなデータサイズ（例えば、数バイト〜数十バイト）を有し、物理／論理アドレスを変換するための変換データや消去（イレース）回数等を保持している。なお、本実施形態のホスト装置１０では、ＮＡＮＤ２２をオペレーティングシステムの管理下で使用するものとする。
【００１５】
ホスト装置１０のＣＰＵ１１は、ＮＡＮＤ２２の使用開始時に、各イレースブロックＢ１の現在の状態を把握するため、全てのイレースブロックＢ１から管理情報Ｍ１を読みだす。ここで使用開始時とは、ホスト装置１０がデータ記憶装置２０の接続を認識した時を意味し、例えば、起動中にあるホスト装置１０にデータ記憶装置２０が接続された場合や、データ記憶装置２０に記憶されたデータに基づきホスト装置１０が起動する場合に該当する。
【００１６】
また、ホスト装置１０のＣＰＵ１１は、データのリード要求、ライト要求又はイレース要求をインタフェース２１に出力することで、ＮＡＮＤ２２に対するデータの読み出し、データの書き込み、データの消去をコントローラ２４に指示する。ここで、ホスト装置１０のＣＰＵ１１は、ＮＡＮＤ２２からのデータの読み出しに際し、そのデータのページ内での格納状態に応じて、二種類のリード要求（第１リード要求、第２リード要求）を切り替えて使用する。
【００１７】
第１リード要求は、ページＰ１の単位で読み出しを指示するものであり、読み出し対象のページＰ１を指定したページアドレスを少なくとも含んでいる。ページアドレスは、物理アドレス又は論理アドレスであって、例えば、読み出し対象のページＰ１の先頭アドレスを指定している。この第１リード要求は、一般的に使用されている従来の読み出し方法であり、例えば複数のページＰ１に亘って格納されたデータの読み出し等に使用される。
【００１８】
第２リード要求は、ページＰ１内に格納されたデータの個別読み出しを指示するものであり、読み出し対象のページＰ１を指定したページアドレスと、読み出しを行うデータサイズ（例えば、セクタ数）とを少なくとも含んでいる。この第２リード要求は、読み出し対象のページＰ１に当該ページＰ１のページサイズ未満のデータしか格納しない又は格納されていないことが予め判明している場合に使用され、例えば、上述したＮＡＮＤ２２の使用開始時（管理情報Ｍ１の読み出し時）に用いられる。なお、ライト要求及びイレース要求については、一般に使用されている公知の書込み方法及び消去方法を用いるものとする。
【００１９】
コントローラ２４は、ＮＡＮＤ２２のメモリコントローラであって、要求受付部２４１と、メモリ制御部２４２とを機能部として備えている。
【００２０】
要求受付部２４１は、ホスト装置１０から受け付けた要求を解析し、その解析結果をメモリ制御部２４２に通知する。
【００２１】
メモリ制御部２４２は、要求受付部２４１での解析結果に応じて、データの読み出し（リード）や書き込み（ライト）、消去（イレース）等の動作をＮＡＮＤ２２に対し実行する。例えば、ホスト装置１０から受け付けた要求が第１リード要求であった場合、要求受付部２４１は、この第１リード要求に含まれたページアドレスに対応するＮＡＮＤ２２のページＰ１の全領域（ユーザ領域Ｕ１）からデータを読み出す。また、メモリ制御部２４２は、データの読み出し後、当該データの誤り検出訂正を行うため、そのページＰ１内の冗長領域Ｒ１を読み出す。そして、メモリ制御部２４２は、読み出した冗長領域Ｒ１内のデータに含まれたＥＣＣデータを用いて、先に読み出したデータの誤り検出訂正を行った後、そのデータをホスト装置１０に出力する。
【００２２】
以下、図３を参照して、第１リード要求に伴うメモリ制御部２４２のリード動作（以下、第１リード動作）について説明する。図３は、メモリ制御部２４２の第１リード動作を説明するためのシーケンス図である。まず、ホスト装置１０において、データの読み出しが開始されると（ステップＳ１１）、ＣＰＵ１１は、その読み出し対象となるページアドレスを設定し（ステップＳ１２）、このページアドレスを含む第１リード要求を、データ記憶装置２０のコントローラ２４に出力する（ステップＳ１３）。
【００２３】
一方、コントローラ２４では、要求受付部２４１が要求の受付を待機している（ステップＳ２１）。要求受付部２４１は、ホスト装置１０から第１リード要求の入力を受け付けると、その旨をメモリ制御部２４２に通知する。
【００２４】
メモリ制御部２４２は、要求受付部２４１から第１リード要求が通知されると、読み出し対象のアドレスの通知開始を宣言する第１リードコマンドをＮＡＮＤ２２に発行した後（ステップＳ２２）、第１リード要求に含まれたページアドレスをＮＡＮＤ２２に通知する（ステップＳ２３）。続いて、メモリ制御部２４２は、アドレスの通知完了を宣言する第２リードコマンドをＮＡＮＤ２２に発行した後（ステップＳ２４）、このページアドレスに対応するページＰ１の全領域（ユーザ領域Ｕ１）からデータを読み出す（ステップＳ２５）。
【００２５】
続いて、メモリ制御部２４２は、ページＰ１の冗長領域Ｒ１を読み出すと（ステップＳ２６）、冗長領域Ｒ１内のデータに含まれたＥＣＣデータを用いて、ステップＳ２５で読み出したデータの誤り検出訂正を実行する（ステップＳ２７）。そして、メモリ制御部２４２は、誤り検出訂正を施したデータを、読み出し完了通知としてホスト装置１０に出力した後（ステップＳ２８）、ステップＳ２１に再び戻る。
【００２６】
ホスト装置１０のＣＰＵ１１は、第１リード要求の出力後、当該第１リード要求に対するデータ記憶装置２０の応答を待機しており（ステップＳ１４）、読み出し完了通知をデータ記憶装置２０からの応答として受け付ける。
【００２７】
このように、ホスト装置１０のＣＰＵ１１から第１リード要求が出力された場合、メモリ制御部２４２は、第１リード動作として、この第１リード要求に含まれたページアドレスに対応するＮＡＮＤ２２のページＰ１の全領域からデータを読み出し、そのページＰ１のＥＣＣデータを用いて誤り検出訂正を行う。そのため、第１リード動作では、例えば複数のページＰ１に亘って格納されたデータ等、ページＰ１のページサイズを満たすデータを読み出す場合に有用である。
【００２８】
しかしながら、上記第１リード動作では、例えば、上述した管理情報Ｍ１等、ページＰ１のページサイズ未満のデータが当該ページＰ１に格納されている場合には、データ値が空（ｎｕｌｌ）等の不要なデータ部分をも読み出すことになるため、パフォーマンスの観点において非効率であるという問題がある。
【００２９】
そこで、本実施形態のメモリ制御部２４２では、ホスト装置１０からページアドレスと、データサイズとを含む第２リード要求が指示された場合、上記の第１リード動作とは異なる第２リード動作を実行することで、ページサイズ未満のデータの読み出しに係る効率を向上させる。
【００３０】
具体的に、メモリ制御部２４２は、ホスト装置１０からのリード要求（第２リード要求）にページアドレスと、データサイズとが含まれる場合、このページアドレスに対応するＮＡＮＤ２２のページＰ１内から、データサイズ分のデータを読み出す。ここで、データサイズ分のデータの読み出しは、ページアドレスのアドレス位置を基準（起点）に行われるものとする。
【００３１】
また、メモリ制御部２４２は、データの読み出し後、当該データの誤り検出訂正を行うため、第２リード要求で指示されたページアドレスを、冗長領域Ｒ１の開始アドレスにオフセットしたオフセットアドレスに基づき、このオフセットアドレスに対応するアドレス位置からデータの読み出しを開始することで、冗長領域Ｒ１内のデータを読み出す。
【００３２】
メモリ制御部２４２は、読み出した冗長データのうち、リードコマンドで指示されたデータサイズに満たないデータ部分、つまり、データサイズに基づき読み出したデータに関するＥＣＣデータ以外のデータ部分を無効化した冗長データを用いて、そのデータの誤り検出訂正を行う。そして、メモリ制御部２４２は、誤り検出訂正を施したデータを、ホスト装置１０のＣＰＵ１１に出力する。なお、冗長データの無効化は、例えば該当するデータ部分を“０ｘｆｆ”とすることで、そのデータ部分を誤り検出訂正の計算対象から除外する。
【００３３】
以下、図４を参照して、第２リード動作について説明する。ここで、図４は、メモリ制御部２４２の第２リード動作を説明するためのシーケンス図である。ホスト装置１０において、データの読み出しが開始されると（ステップＳ３１）、ＣＰＵ１１は、その読み出し対象となるページアドレスとそのデータサイズとを設定し（ステップＳ３２、Ｓ３３）、これらページアドレス及びデータサイズを含む第２リード要求を、データ記憶装置２０のコントローラ２４に出力する（ステップＳ３４）。
【００３４】
一方、コントローラ２４の要求受付部２４１は、ホスト装置１０からの要求受付を待機しており（ステップＳ４１）、ホスト装置１０から第２リード要求の入力を受け付けると、その旨をメモリ制御部２４２に通知する。
【００３５】
メモリ制御部２４２は、要求受付部２４１から第２リード要求が通知されると、読み出し対象のアドレスの通知開始を宣言する第１リードコマンドをＮＡＮＤ２２に発行した後（ステップＳ４２）、第２リード要求に含まれたページアドレスをＮＡＮＤ２２に通知する（ステップＳ４３）。続いて、メモリ制御部２４２は、アドレスの通知完了を宣言する第２リードコマンドをＮＡＮＤ２２に発行すると（ステップＳ４４）、このページアドレスに対応するＮＡＮＤ２２のページＰ１から、第２リード要求に含まれたデータサイズ分のデータを読み出す（ステップＳ４５）。
【００３６】
次に、メモリ制御部２４２は、読み出し対象のアドレスの通知開始を宣言する第１リードコマンドを再度発行し（ステップＳ４６）、第２リード要求に含まれたページアドレスを冗長領域Ｒ１の開始アドレスにオフセットしたオフセットアドレスを、ＮＡＮＤ２２に通知する（ステップＳ４７）。続いて、メモリ制御部２４２は、アドレスの通知完了を宣言する第２リードコマンドをＮＡＮＤ２２に発行すると（ステップＳ４８）、先に通知したオフセットアドレスに対応するページＰ１中のアドレス位置から読み出しを開始することで、冗長領域Ｒ１を読み出す（ステップＳ４９）。
【００３７】
メモリ制御部２４２は、ステップＳ４９で読み出した冗長領域Ｒ１内のデータに含まれるＥＣＣデータのうち、ステップＳ４５で読み出したデータに対応する部分以外を無効化すると、このＥＣＣデータを用いて、ステップＳ４５で読み出したデータの誤り検出訂正を実行する（ステップＳ５０）。そして、メモリ制御部２４２は、誤り検出訂正を施したデータを、読み出し完了通知としてホスト装置１０に出力した後（ステップＳ５１）、ステップＳ４１に再び戻る。
【００３８】
ホスト装置１０のＣＰＵ１１は、第２リード要求の出力後、当該第２リード要求に対するデータ記憶装置２０の応答を待機しており（ステップＳ３５）、読み出し完了通知をデータ記憶装置２０からの応答として受け付ける。
【００３９】
このように、ホスト装置１０のＣＰＵ１１から第２リード要求が出力された場合、メモリ制御部２４２は、第２リード動作として、この第２リード要求で指示されたページアドレスに対応するＮＡＮＤ２２のページＰ１から、当該第２リード要求で指示されたデータサイズ分のデータを読み出す。また、メモリ制御部２４２は、第２リード要求で指示されたページアドレスを冗長領域Ｒ１の開始アドレスにオフセットしたオフセットアドレスに基づいて、データの読み出しを行ったページＰ１のＥＣＣデータを読み出し、このＥＣＣデータのうち読み出したデータに対応する部分を用いて誤り検出訂正を行う。
【００４０】
これにより、ＮＡＮＤ２２のページＰ１から、当該ページＰ１のサイズに満たないデータを読み出す場合であっても、そのデータを個別に読み出すことが可能であるとともに、当該データの誤り検出訂正を個別に行うことが可能であるため、データの読み出しを効率的に行うことができる。また、上記した第２リード動作をデータ記憶装置２０の使用開始時に行うことで、第１リード動作を使用した場合と比較し、各イレースブロックＢ１からの管理データの読み出しを効率的に行うことができるため、データ記憶装置２０が使用可能になるまでの待機時間を短縮することができる。
【００４１】
なお、本実施形態では、メモリ制御部２４２からオフセットアドレスを明示的に通知することで、冗長データの読み出しを行う形態としたが、これに限らないものとする。例えば、ＮＡＮＤ２２が、同じページＰ１内での読み出し先となるアドレスを変更することが可能な機能を具備する場合には、メモリ制御部２４２からオフセットを通知することで、ＮＡＮＤ２２側でページアドレスからオフセットアドレス（ページアドレス＋オフセット）に読み出し先を変更させる形態としてもよい。以下、この形態について図５を参照して説明する。
【００４２】
図５は、メモリ制御部２４２の第２リード動作の他の動作例を説明するためのシーケンス図である。なお、上述した図４でのステップＳ４６〜Ｓ４８に代わるステップＳ６１、Ｓ６２以外の他の処理は図４と同様となるため、これら他の処理については図４と同一のステップ番号を付与し、その説明を省略する。
【００４３】
メモリ制御部２４２は、ステップＳ４５でデータを読み出すと、読み出し対象となるアドレスの変位量（オフセット値）の通知を宣言する変更コマンドをＮＡＮＤ２２に発行する（ステップＳ６１）。続いて、メモリ制御部２４２は、ステップＳ４３で通知しておいたページアドレスを、冗長領域Ｒ１の開始アドレスに変更するオフセット値をＮＡＮＤ２２に通知する（ステップＳ６２）。
【００４４】
ここで、ＮＡＮＤ２２では、ステップＳ６１、Ｓ６２の処理に応じ、先に通知されていたページアドレスに、ステップＳ６１で通知されたオフセット値を加味することで、ステップＳ４５でデータの読み出しが行われたページＰ１内での、オフセットアドレスからの読み出しを可能とする。これにより、メモリ制御部２４２は、続くステップＳ４９において、オフセットアドレスに対応するページＰ１中のアドレス位置から読み出しを開始することで、冗長領域Ｒ１の読み出しを行う。
【００４５】
このように、ＮＡＮＤ２２が、同じページＰ１内での読み出し先アドレスを変更することが可能な機能を有する場合には、図５に示したシーケンス図の第２リード動作を行うことで、図４のシーケンス図に示した第２リード動作と比較し、冗長データの読み出しに係る処理を短縮することが可能であるため、データの読み出しをより効率的に行うことができる。
【００４６】
以上、本発明の実施形態を説明したが、上記の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。上記の実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、追加等を行うことができる。また、上記の実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４７】
１０…ホスト装置、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、２０…データ記憶装置、２１…インタフェース、２２…ＮＡＮＤ型フラッシュメモリ（ＮＡＮＤ）、２３…ＲＡＭ、２４…コントローラ、２４１…要求受付部、２４２…メモリ制御部
【図１】
2013246645.tif 000003
【図２】
2013246645.tif 000004
【図３】
2013246645.tif 000005
【図４】
2013246645.tif 000006
【図５】
2013246645.tif 000007