(57)【要約】【課題】チャネル間誤り訂正処理の効率化を実現し、リード動作の効率を向上できるデータ記憶装置を提供することにある。【解決手段】実施形態によれば、データ記憶装置は、チャネルコントローラと、誤り訂正コントローラと、追加訂正モジュールとを具備する。チャネルコントローラは、複数チャネルの各不揮発性メモリに対してデータの書き込み、読み出しを制御する。誤り訂正コントローラは、リード動作時に、前記チャネルコントローラにより読み出されるデータの中で指定の訂正対象に対して、チャネル間誤り訂正符号データを使用してチャネル間誤り訂正処理を実行する。追加訂正モジュールは、前記チャネルコントローラにより前記チャネル間誤り訂正処理に必要なデータを読み出す訂正読み出し動作中に、前記チャネルコントローラによるエラー検出に基づいて追加訂正対象を指定し、当該追加訂正対象を前記誤り訂正コントローラに通知する。【選択図】図２
2012155541.tif 000002
【特許請求の範囲】
【請求項１】
複数チャネルの各不揮発性メモリに対してデータの書き込み、読み出しを制御するチャネル制御手段と、
リード動作時に、前記チャネル制御手段により読み出されるデータの中で指定の訂正対象に対して、チャネル間誤り訂正符号データを使用してチャネル間誤り訂正処理を実行する誤り訂正制御手段と、
前記チャネル制御手段により前記チャネル間誤り訂正処理に必要なデータを読み出す訂正読み出し動作中に、前記チャネル制御手段によるエラー検出に基づいて追加訂正対象を指定し、当該追加訂正対象を前記誤り訂正制御手段に通知する追加訂正処理手段と
を具備するデータ記憶装置。
【請求項２】
前記チャネル制御手段、前記誤り訂正制御手段及び前記追加訂正処理手段の各処理をパイプライン処理で実行するように制御するコントローラを有する請求項１に記載のデータ記憶装置。
【請求項３】
前記チャネル制御手段は、チャネル毎の各不揮発性メモリから読み出すデータのエラーを検出し、当該エラー訂正を実行する手段を含み、
前記誤り訂正制御手段は、
前記チャネル制御手段からエラー訂正不能の場合の通知に基づいて、前記チャネル間誤り訂正処理を実行するように構成されている請求項１または請求項２のいずれか１項に記載のデータ記憶装置。
【請求項４】
前記追加訂正処理手段は、
前記訂正読み出し動作中に、前記チャネル制御手段により検出されるエラーの種類に基づいて、前記追加訂正対象の範囲を設定するように構成されている請求項１から請求項３のいずれか１項に記載のデータ記憶装置。
【請求項５】
前記追加訂正処理手段は、
前記エラーの種類がセクタ単位のエラー訂正不能の場合には、前記追加訂正対象の範囲としてセクタ単位の範囲を設定し、
前記エラーの種類がタイムアウトエラーの場合には、前記追加訂正対象の範囲としてプレーン単位の範囲を設定する請求項４に記載のデータ記憶装置。
【請求項６】
複数チャネルの各不揮発性メモリを有するデータ記憶装置に適用するメモリ制御装置であって、
複数チャネルの各不揮発性メモリに対してデータの書き込み、読み出しを制御するチャネル制御手段と、
リード動作時に、前記チャネル制御手段により読み出されるデータの中で指定の訂正対象に対して、チャネル間誤り訂正符号データを使用してチャネル間誤り訂正処理を実行する誤り訂正制御手段と、
前記チャネル制御手段により前記チャネル間誤り訂正処理に必要なデータを読み出す訂正読み出し動作中に、前記チャネル制御手段によるエラー検出に基づいて追加訂正対象を指定し、当該追加訂正対象を前記誤り訂正制御手段に通知する追加訂正処理手段と
を具備するメモリ制御装置。
【請求項７】
前記チャネル制御手段、前記誤り訂正制御手段及び前記追加訂正処理手段の各処理をパイプライン処理で実行するように制御するコントローラを有する請求項６に記載のメモリ制御装置。
【請求項８】
前記チャネル制御手段は、チャネル毎の各不揮発性メモリから読み出すデータのエラーを検出し、当該エラー訂正を実行する手段を含み、
前記誤り訂正制御手段は、
前記チャネル制御手段からエラー訂正不能の場合の通知に基づいて、前記チャネル間誤り訂正処理を実行するように構成されている請求項６または請求項７のいずれか１項に記載のメモリ制御装置。
【請求項９】
前記追加訂正処理手段は、
前記訂正読み出し動作中に、前記チャネル制御手段により検出されるエラーの種類に基づいて、前記追加訂正対象の範囲を設定するように構成されている請求項６から請求項８のいずれか１項に記載のメモリ制御装置。
【請求項１０】
前記追加訂正処理手段は、
前記エラーの種類がセクタ単位のエラー訂正不能の場合には、前記追加訂正対象の範囲としてセクタ単位の範囲を設定し、
前記エラーの種類がタイムアウトエラーの場合には、前記追加訂正対象の範囲としてプレーン単位の範囲を設定する請求項９に記載のメモリ制御装置。
【請求項１１】
複数チャネルの各不揮発性メモリを有するデータ記憶装置に適用するメモリ制御方法であって、
複数チャネルの各不揮発性メモリに対してデータの書き込み、読み出しを制御し、
リード動作時に、前記チャネル制御手段により読み出されるデータの中で指定の訂正対象に対して、チャネル間誤り訂正符号データを使用してチャネル間誤り訂正処理を実行し、
前記チャネル間誤り訂正処理に必要なデータを読み出す訂正読み出し動作中のエラー検出に基づいて追加訂正対象を指定し、当該追加訂正対象を通知するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置に関する。
【背景技術】
【０００２】
近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を記憶媒体とするＳＳＤ（solid state drive）の開発が推進されている。
【０００３】
ＳＳＤでは、複数のフラッシュメモリがチャネル単位に管理されて、各チャネルに対してデータを並列に書き込むマルチチャネル方式が一般的である。このようなマルチチャネル方式では、各チャネルに書き込むデータ（ユーザデータ）を使用して、チャネル間誤り訂正符号（ICP:  Inter Channel Parity）データが生成される。ＳＳＤは、リード動作時に、セクタ単位のエラー訂正が不能な場合に、チャネル間誤り訂正符号を使用するチャネル間誤り訂正処理を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１９０３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のＳＳＤでは、チャネル間誤り訂正符号を生成して保存することにより、チャネル間誤り訂正処理を行なうことが可能である。このチャネル間誤り訂正処理では、読み出し要求の論理ページ内の訂正対象が指定されることにより、当該訂正対象に対する復号処理（データ修復処理）が実行される。
【０００６】
ところで、チャネル間誤り訂正処理では、復号処理に必要なデータの全てを各チャネルから読み出す訂正読み出し動作が実行される。この訂正読み出し動作中に、指定された訂正対象以外でエラー検出された追加訂正対象が発生すると、この追加訂正対象に基づいた再度の復号処理を行なう必要がある。このため、チャネル間誤り訂正処理の処理時間が増大することにより、リード動作の効率低下を招く可能性がある。
【０００７】
本発明の目的は、チャネル間誤り訂正処理の効率化を実現し、リード動作の効率を向上できるデータ記憶装置を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、データ記憶装置は、チャネル制御手段と、誤り訂正制御手段と、追加訂正処理手段とを具備する。チャネル制御手段は、複数チャネルの各不揮発性メモリに対してデータの書き込み、読み出しを制御する。誤り訂正制御手段は、リード動作時に、前記チャネル制御手段により読み出されるデータの中で指定の訂正対象に対して、チャネル間誤り訂正符号データを使用してチャネル間誤り訂正処理を実行する。追加訂正処理手段は、前記チャネル制御手段により前記チャネル間誤り訂正処理に必要なデータを読み出す訂正読み出し動作中に、前記チャネル制御手段によるエラー検出に基づいて追加訂正対象を指定し、当該追加訂正対象を前記誤り訂正制御手段に通知する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に関するデータ記憶装置の構成を説明するためのブロック図。
【図２】実施形態に関するフラッシュメモリコントローラの構成を説明するためのブロック図。
【図３】実施形態に関する各チャネルのブロック構成を説明するための図。
【図４】実施形態に関する論理ブロックの概念を説明するための図。
【図５】実施形態に関する論理ページの概念を説明するための図。
【図６】実施形態に関する論理ページの概念を説明するための図。
【図７】実施形態に関する論理ページの概念を説明するための図。
【図８】実施形態に関する訂正対象の一例を示す図。
【図９】実施形態に関する追加訂正対象の一例を示す図。
【図１０】実施形態に関する訂正読み出し動作の手順を説明するためのタイミングチャート。
【図１１】実施形態に関するパイプライン処理を説明するためのタイミングチャート。
【図１２】実施形態に関するリード動作の手順を説明するためのフローチャート。
【図１３】実施形態に関する訂正読み出し動作の手順を説明するためのフローチャート。
【発明を実施するための形態】
【００１０】
以下図面を参照して、実施形態を説明する。
【００１１】
［データ記憶装置の構成］
図１は、実施形態のデータ記憶装置の構成を示すブロック図である。
【００１２】
図１に示すように、実施形態のデータ記憶装置は、ＳＳＤ（solid state drive）１０である。ＳＳＤ１０は、NAND型フラッシュメモリ（フラッシュメモリ）１１と、ＤＲＡＭ（dynamic random access memory）からなるバッファメモリ１２と、ＳＳＤコントローラ２０とを有する。
【００１３】
フラッシュメモリ１１は、ＳＳＤ１０のデータ記憶媒体である。本実施形態のＳＳＤ１０はマルチチャネル方式であり、後述するように、各チャネルＣＨ０〜ＣＨｎのそれぞれに対応するフラッシュメモリチップから構成されているフラッシュメモリ１１を有する。
【００１４】
ＳＳＤコントローラ２０は、ホストインターフェースコントローラ２１と、ＤＲＡＭコントローラ２２と、マイクロプロセッサ（ＣＰＵ）２３と、フラッシュメモリコントローラ２４と、バス２５とを有する。
【００１５】
ホストインターフェースコントローラ２１は、ＳＳＤ１０とホストシステム３０との間で通信する機能を有し、データやコマンドの入出力（データ転送）を制御する。ホストシステム３０は、例えばパーソナルコンピュータである。ＤＲＡＭコントローラ２２は、バッファメモリ１２を制御し、バッファメモリ１２に対する入出力（データ転送）を制御する。バッファメモリ１２は、ホストシステム３０から受信したデータ（ライトデータ）またはフラッシュメモリ１１から読み出されたデータ（リードデータ）を一時的に保存する。なお、バッファメモリ１２は、フラッシュメモリ１１のアクセス回数の統計情報や、フラッシュメモリ１１に記憶するデータを管理するためのアドレス変換情報なども格納する。
【００１６】
マイクロプロセッサ（ＣＰＵ）２３は、バス２５を介してホストインターフェースコントローラ２１、ＤＲＡＭコントローラ２２及びフラッシュメモリコントローラ２４を制御する。ＣＰＵ２３は、ホストシステム３０からのコマンドに応じて、データのライト動作またはリード動作に必要なコマンド処理を実行する。
【００１７】
また、ＣＰＵ２３は、チャネル間誤り訂正処理を制御する。チャネル間誤り訂正処理は、チャネル間誤り訂正符号（ICP:  Inter Channel Parity）を使用する処理であり、ＩＣＰ処理と表記する場合がある。なお、チャネル間誤り訂正符号は、ＩＣパリティデータと表記する場合がある。また、ＣＰＵ２３は、ハードウェア（ＨＷ）であるフラッシュメモリコントローラ２４に対して、ファームウェア（firmware）を意味するＦＷと表記する場合がある。
【００１８】
フラッシュメモリコントローラ（以下、フラッシュコントローラと表記する場合がある）２４は、複数チャネルＣＨ０〜ＣＨｎのフラッシュメモリチップから構成されているフラッシュメモリ１１のリード、ライト動作の制御及びデータ転送制御を実行する（図２を参照）。ＳＳＤ１０は、ホスト側とフラッシュメモリ側のデータ転送レートが異なるため、ホストシステム３０から受信したデータを一時的に保存するバッファメモリ１２を有する。フラッシュコントローラ２４は、バス２５を介してバッファメモリ１２からフラッシュメモリ１１へのデータ転送要求の形態に変換して、内部のコマンドキューに格納する構成である。
【００１９】
（フラッシュコントローラの構成）
図２に示すように、フラッシュコントローラ２４は、バスインターフェース４０と、チャネルコントローラ４１と、レジスタ４２と、追加訂正モジュール４３と、チャネル間同期コントローラ４４と、チャネル間誤り訂正符号コントローラ（以下、ＩＣＰコントローラと表記する場合がある）４５とを有する。
【００２０】
バスインターフェース４０は、ＳＳＤコントローラ２０のバス２５に接続し、データ転送を制御する。チャネルコントローラ４１は、チャネルＣＨ０〜ＣＨｎ毎に、フラッシュメモリ１１-CH0〜１１-CHnに対する入出力（アクセス）を制御するコントローラ（以下、NANDコントローラと表記する）４１-CH0〜４１-CHnからなる。
【００２１】
チャネル間同期コントローラ４４は、後述する訂正読み出し動作時に、ＩＣＰコントローラ４５に対して各チャネルＣＨ０〜ＣＨｎからのデータを転送するときの同期を取る。具体的には、チャネル間同期コントローラ４４は、復号処理に必要なデータの順番を揃えてＩＣＰコントローラ４５に転送するデータ転送制御を実行する。
【００２２】
ＩＣＰコントローラ４５は、チャネル間誤り訂正符号（ＩＣパリティデータ）を生成するエンコーダ４６、及び当該ＩＣパリティデータを使用して復号処理（データ修復処理）を実行するデコーダ４７を有する。さらに、本実施形態のフラッシュコントローラ２４は、追加訂正モジュール（add correction module）４３を有する。追加訂正モジュール４３は、訂正読み出し動作中に、ＦＷ２３により指定される訂正対象以外でのデータのエラー検出に基づいて、追加訂正対象を指定してＩＣＰコントローラ４５に通知する。
【００２３】
ここで、本実施形態では、フラッシュコントローラ２４は、リード動作時に、ＩＣＰ処理が必要なエラー検出がされた場合に、データの修復処理（復号処理）に必要なデータをフラッシュメモリ１１から読み出す動作を訂正読み出し動作と定義する。即ち、フラッシュコントローラ２４は、訂正読み出し動作の中に、ＩＣＰコントローラ４５により復号処理で使用するデータを全て読み出すフェーズを有する。追加訂正モジュール４３は、当該フェーズで、エラー検出に基づいて追加訂正対象としてＩＣＰコントローラ４５に通知する。
【００２４】
［訂正読み出し動作］
以下、本実施形態のフラッシュコントローラ２４による訂正読み出し動作を説明する。
【００２５】
本実施形態のＳＳＤ１０では、フラッシュコントローラ２４は、論理ページ単位でライト動作を実行する。即ち、フラッシュメモリ１１には、１回のライト動作で論理ページ単位のデータが書き込まれる。この場合、フラッシュコントローラ２４は、各チャネルＣＨ０〜ＣＨｎのフラッシュメモリ１１-CH0〜１１-CHnに対して、論理ページ単位のデータを並列に書き込む。
【００２６】
さらに、本実施形態のＳＳＤ１０では、ＩＣＰコントローラ４５は、ライト動作により書き込む各チャネルＣＨ０〜ＣＨｎのデータを使用して、エンコーダ４６によりチャネル間誤り訂正符号（ＩＣパリティデータ）を論理ページ単位で生成する。フラッシュコントローラ２４は、生成されたＩＣパリティデータを、指定のチャネルＣＨｎのフラッシュメモリ１１-CHnに書き込む。ＩＣパリティデータは、例えばリードソロモン（Reed-Solomon）符号データである。
【００２７】
以下、図３〜７を参照して、論理ブロック及び論理ページの概念を説明する。
【００２８】
ＳＳＤ１０では、フラッシュメモリ１１内でデータを１回の消去動作（erase）で消去する単位としてブロック（Block）が用いられる。図３は、各チャネルＣＨ０〜ＣＨｎのフラッシュメモリ１１-CH0〜１１-CHnの内部を、ブロック（Block）構成として示す図である。ここで、論理ブロックとは、各チャネルＣＨ０〜ＣＨｎのフラッシュメモリ１１-CH0〜１１-CHnから１ブロックずつを選択し、一纏めにして処理できる単位である。
【００２９】
図４（Ａ）〜（Ｃ）は、本実施形態の論理ブロックの構成として、論理ブロック０（ＬＢ０）〜２（ＬＢ２）の具体例を示す。即ち、図３及び図４（Ａ）に示すように、論理ブロック０(ＬＢ０)は、チャネル０のブロック０、チャネル１のブロック３、チャネル２のブロック７、及びチャネルｎのブロック３を一纏めにした構成である。論理ブロック１(ＬＢ１)は、図３及び図４（Ｂ）に示すように、チャネル０のブロック２、チャネル１のブロック１、チャネル２のブロック４、及びチャネルｎのブロック７を一纏めにした構成である。さらに、論理ブロック２(ＬＢ２)は、図３及び図４（Ｃ）に示すように、チャネル０のブロック６、チャネル１のブロック０、チャネル２のブロック１、及びチャネルｎのブロック１を一纏めにした構成である。
【００３０】
次に、図５〜７を参照して、論理ページの概念を説明する。
【００３１】
前述のように、論理ブロック５００は、各チャネル毎のブロック（Block）から構成されている。１つのブロック（Block）５０１は、ブロックより容量的に小さい単位のページ（Page）から構成されている。１つのページ（Page）５０２は、さらに容量的に小さい単位のプレーン６００（plane0），６０１（plane1）から構成される。
【００３２】
図６は、論理ページｍとして、各チャネル毎のページ（Page m）を一纏めにした構成を示す。図５及び図６に示す概念から、論理ページ７００の概念は、図７に示すような構成として表現できる。
【００３３】
ここで、ＳＳＤ１０では、フラッシュコントローラ２４は、クラスタ（cluster）単位でフラッシュメモリ１１からデータを読み出すリード動作を実行する。１クラスタは、例えば８セクタである。また、１プレーン（plane0またはplane1）は、例えば２クラスタ分に相当する。従って、１論理ページ７００は、１チャネル分が４クラスタ（３２セクタ）で、３２セクタにチャネル数を掛けた容量となる。
【００３４】
次に、図１２のフローチャートを参照して、リード動作を説明する。
【００３５】
図１２に示すように、フラッシュコントローラ２４は、ＦＷ２３からのコマンドに応じて、各チャネルＣＨ０〜ＣＨｎのフラッシュメモリ１１-CH0〜１１-CHnをアクセスし、読み出し要求のデータを読み出すリード動作を実行する（ブロック１２０１）。フラッシュコントローラ２４は、NANDコントローラ４１-CH0〜４１-CHnがそれぞれ、チャネルＣＨ０〜ＣＨｎ毎のフラッシュメモリ１１-CH0〜１１-CHnからデータを読み出す場合に、セクタ単位のエラー検出を実行する（ブロック１２０２）。
【００３６】
ここで、フラッシュメモリ１１に記憶されるデータのフォーマットでは、セクタ毎又はクラスタ毎に誤り訂正符号（error correcting code、以下ＥＣＣデータと表記する）が付加されている。NANDコントローラ４１-CH0〜４１-CHnは、このＥＣＣデータを使用して、エラー訂正を行なってデータ修復を実行する（ブロック１２０２のＹＥＳ，１２０３のＹＥＳ）。フラッシュコントローラ２４は、エラー検出されないデータ又はデータ修復されたデータをバス２５を介してＤＲＡＭコントローラ２２に転送する（ブロック１２０５）。
【００３７】
一方、フラッシュコントローラ２４は、リード動作時に、セクタ単位又はクラスタ単位でのエラー訂正が不能である場合には、ＩＣＰ処理が必要であることをＦＷ２３に通知する（ブロック１２０４）。ＩＣＰコントローラ４５は、ライト動作時に生成されたＩＣパリティデータを使用するＩＣＰ処理を実行して、データ修復を実行する。フラッシュコントローラ２４は、ＦＷ２３からのコマンドに応じて、ＩＣＰ処理を含む訂正読み出し動作を実行する（ブロック１３００）。
【００３８】
次に、図１０のタイミングチャート及び図１３のフローチャートを参照して、訂正読み出し動作の手順を説明する。
【００３９】
本実施形態では、ライト動作時に、ＩＣＰコントローラ４５は、２プレーン分のエラー訂正可能なＩＣパリティデータを生成する。この生成されたＩＣパリティデータは、指定のチャネルＣＨｎのフラッシュメモリ１１-CHnに書き込まれる。ここで、１論理ページ内でエラー訂正可能なプレーン（plane）数の最大値は、符号方式に依存するが、例えばリードソロモン符号の場合には２チャネル分のＩＣパリティデータで、２プレーンである。この場合、１論理ページは、例えばチャネル数が１６で計３２プレーン（１６×２）のデータである。このデータに対して付加されるＩＣパリティデータは、符号長が３２Byte相当のリードソロモン符号である。
【００４０】
ＦＷ２３は、フラッシュコントローラ２４からの通知に基づいて、リード動作で読み出される論理ページ内でエラー訂正する訂正対象を指定する（ブロック１００１）。具体的には、ＦＷ２３は、バス２５を介してフラッシュコントローラ２４のレジスタ４２に、訂正対象であるプレーンを設定する。このレジスタ４２を介して、訂正対象プレーンは、ＩＣＰコントローラ４５に通知される（ブロック１００１Ａ）。また、訂正対象プレーンは、追加訂正モジュール４３にも通知される（ブロック１００１Ｂ）。
【００４１】
本実施形態では、ＩＣＰコントローラ４５は、フラッシュメモリ１１の故障モードの一つにあるプレーン（plane０またはplane１）の消失に対するデータ修復も行なう。このため、ＦＷ２３は、プレーン単位（plane０またはplane１）で訂正対象を設定する。
【００４２】
図８（Ａ）〜（Ｄ）は、ＦＷ２３が設定可能な訂正対象パターンの一例を示す図である。即ち、図８（Ａ）は、１論理ページ７０１内で、１プレーン８０１（例えばチャネルＣＨ１のplane0）が訂正対象として設定された場合を示す図である。図８（Ｂ）は、２プレーン８０２Ａ，８０２Ｂが訂正対象として設定された場合を示す図である。この場合、２プレーン８０２Ａ，８０２Ｂは、同一チャネル（例えばＣＨ２）のplane0とplane1である。また、図８（Ｃ）は、訂正対象の２プレーン８０３Ａ，８０３Ｂが、異なるチャネル（例えばＣＨｎ，ＣＨ２）のplane0とplane1の場合である。図８（Ｄ）は、訂正対象の２プレーン８０４Ａ，８０４Ｂが、異なるチャネル（例えばＣＨ１，ＣＨ３）のplane0側のみの場合である。さらに、ＩＣパリティデータが書き込まれたプレーンについても、訂正対象として設定が可能である。
【００４３】
ＦＷ２３は、訂正対象を指定した後に、訂正読み出し動作を指示するコマンドを発行する（ブロック１００２）。このコマンドは、バス２５を介してフラッシュコントローラ２４のレジスタ４２に設定される。NANDコントローラ４１-CH0〜４１-CHnは、レジスタ４２に設定されたコマンドに基づいて、指定の論理ページに対するリード要求を認識する（ブロック１００３）。この訂正読み出し動作では、NANDコントローラ４１-CH0〜４１-CHnが、ＩＣＰコントローラ４５により復号処理で使用する全データを読み出すフェーズが含まれる。
【００４４】
NANDコントローラ４１-CH0〜４１-CHnは、各チャネルＣＨ０〜ＣＨｎのフラッシュメモリ１１-CH0〜１１-CHnに対してリードコマンドを発行する（ブロック１００４）。NANDコントローラ４１-CH0〜４１-CHnは、フラッシュメモリ１１-CH0〜１１-CHnから１セクタ分のデータのリードが完了すると、各セクタデータに付加されているＥＣＣデータを使用したエラー検出を実行する。NANDコントローラ４１-CH0〜４１-CHnは、エラー発生がなければ、チャネル間同期コントローラ４４に全てのセクタデータが準備されたことを通知する（ブロック１００５のＹＥＳ）。
【００４５】
チャネル間同期コントローラ４４は、チャネル間の同期を取りながら、NANDコントローラ４１-CH0〜４１-CHnからＩＣＰコントローラ４５にデータを転送することを指示する（ブロック１００６）。この転送要求に応じて、NANDコントローラ４１-CH0〜４１-CHnはそれぞれ、内部バッファに保持されているセクタデータをＩＣＰコントローラ４５に転送する（ブロック１００７）。ここで、NANDコントローラ４１-CH0〜４１-CHn及びチャネル間同期コントローラ４４は、フラッシュメモリ１１-CH0〜１１-CHnから１論理ページ分のデータ（例えば３２セクタ×チャネル数）が読み出されるまで、前述の処理を繰り返す（ブロック１００９）。
【００４６】
ＩＣＰコントローラ４５は、各チャネルＣＨ０〜ＣＨｎからの全てのセクタデータ（ＩＣパリティデータを含む）及び通知された訂正対象プレーン（エラー訂正位置の情報）に基づいて復号処理を実行し、データ修復処理を開始する（ブロック１０１０）。
【００４７】
ここで、NANDコントローラ４１-CH0〜４１-CHnは、フラッシュメモリ１１-CH0〜１１-CHnからデータをリード中に、各セクタデータのＥＣＣデータを使用したエラー訂正が不可能なエラーを検出すると、チャネル間同期コントローラ４４及び追加訂正モジュール４３に対してエラー検出を通知する（ブロック１００８，１０１３）。追加訂正モジュール４３は、エラー通知によるデータの位置とＦＷ２３から指定された訂正対象プレーンに基づいて、今回のエラー検出がなされたデータも同時に訂正可能か否かを判定する（ブロック１０１４）。即ち、追加訂正モジュール４３は、ＩＣＰコントローラ４５によるＩＣＰ処理での所定の訂正可能数（例えば２プレーン分）と比較して、訂正対象として追加可能か否かを判定する。
【００４８】
追加訂正モジュール４３は、訂正対象として追加可能であると判定すると、エラー検出されたセクタデータを追加訂正対象としてＩＣＰコントローラ４５に通知する（ブロック１０１７）。一方、追加訂正モジュール４３は、エラー検出がなされたデータ数が所定の訂正可能数内に収まらない場合には、訂正不能と判断して訂正読み出し動作を中断させる（ブロック１０１４のＮＯ）。
【００４９】
ここで、図９は、１論理ページ７００において、ＦＷ２３が指定した訂正対象プレーン９００と、エラー検出された追加訂正対象９０１〜９０４を含む訂正対象パターンの一例を示す。図９に示す訂正対象パターンの場合、訂正対象がプレーン単位のみのＩＣＰ処理では、訂正可能数が５プレーンのＩＣＰ方式でなければ対応できない。本実施形態の方式であれば、セクタ単位での最大訂正数を例えば２とすると、訂正可能数が２プレーンのＩＣＰ処理で実現できる。このため、訂正能力を向上させることが可能となる。
【００５０】
また、追加訂正モジュール４３は、NANDコントローラ４１-CH0〜４１-CHnから通知されるエラーの種類がタイムアウトの場合には、エラー訂正対象としてセクタ単位ではなく、プレーン全体を追加訂正対象としてＩＣＰコントローラ４５に通知する（ブロック１０１５，１０１６）。即ち、NANDコントローラ４１-CH0〜４１-CHnは、リードコマンドを発行したときに、フラッシュメモリ１１-CH0〜１１-CHnから応答がない場合には、タイムアウトエラーとして認識する。フラッシュメモリの特性上、そのエラーはプレーンの先頭にあるセクタで検出されて、そのプレーンは全てタイムアウトエラーとなる。従って、追加訂正モジュール４３は、エラーの存在するプレーン全体を追加訂正対象としてＩＣＰコントローラ４５に通知する。
【００５１】
ＩＣＰコントローラ４５は、訂正対象の追加が完了すると、チャネル間同期コントローラ４４に追加完了通知を行なう（ブロック１０１８）。チャネル間同期コントローラ４４は、データ転送要求を再開する。即ち、チャネル間同期コントローラ４４は、チャネル間の同期を取りながら、NANDコントローラ４１-CH0〜４１-CHnからＩＣＰコントローラ４５にデータを転送することを指示する（ブロック１０１９）。この転送要求に応じて、NANDコントローラ４１-CH0〜４１-CHnはそれぞれ、内部バッファに保持されているセクタデータをＩＣＰコントローラ４５に転送する（ブロック１０２０）。
【００５２】
ＩＣＰコントローラ４５は、各チャネルＣＨ０〜ＣＨｎからの全てのセクタデータ（ＩＣパリティデータを含む）及び通知された追加訂正対象（エラー訂正位置の情報）に基づいて復号処理を実行し、データ修復処理を完了するまで実行する（ブロック１０１０）。ＩＣＰコントローラ４５は、データ修復処理により訂正したデータをバス２５を介してＤＲＡＭコントローラ２２に転送する（ブロック１０１１）。この後に、ＩＣＰコントローラ４５は、ＦＷ２３に対して訂正読み出し動作の完了を通知する（ブロック１０１２）。
【００５３】
なお、ＤＲＡＭコントローラ２２は、リード動作により正常に読み出されたデータと共に、ＩＣＰコントローラ４５により修復されたデータをバッファメモリ１２に格納する。ホストインターフェースコントローラ２１は、ＤＲＡＭコントローラ２２を介して、バッファメモリ１２に格納されたリードデータ（修復されたデータを含む）をホストシステム３０に転送する。
【００５４】
以上のようにして本実施形態によれば、フラッシュコントローラ２４は、リード動作時に、セクタ単位又はクラスタ単位でのエラー訂正が不能であるデータを、ＩＣＰコントローラ４５により修復させて読み出す訂正読み出し動作を実行する。本実施形態のフラッシュコントローラ２４は、訂正読み出し動作中にＦＷ２３により指定された訂正対象（プレーン）以外の追加訂正対象が発生した場合、その追加訂正対象を含む訂正読み出し動作を継続させる。従って、実行中の訂正読み出し動作の完了を待って、追加訂正対象に基づいた訂正読み出し動作を再実行する（やり直す）プロセスを無くすことが可能となる。
【００５５】
換言すれば、本実施形態のフラッシュコントローラ２４は、図１１に示すように、NANDコントローラ４１-CH0〜４１-CHnの処理により１１４１、追加訂正モジュール４３の処理１１４３、及びＩＣＰコントローラ４５の処理１１４５を並列に実行することで、訂正読み出し動作をパイプライン処理により実現している。即ち、NANDコントローラ４１-CH0〜４１-CHnは、フラッシュメモリ１１-CH0〜１１-CHnから復号処理用の全データを読み出す処理１１４１を実行する。追加訂正モジュール４３は、セクタエラーの検出に基づいて追加訂正対象をＩＣＰコントローラ４５に通知する。ＩＣＰコントローラ４５は、指定された訂正対象及び追加訂正対象に対する復号処理を実行し、データ修復を実現している。
【００５６】
従って、チャネル間誤り訂正処理の効率化を実現することが可能となり、結果的にリード動作の効率を向上できることになる。
【００５７】
また、本実施形態のＩＣＰコントローラ４５は、プレーン単位の訂正対象に対するＩＣＰ処理だけでなく、セクタ単位又はクラスタ単位での訂正対象を追加したＩＣＰ処理を実行できる。従って、チャネル間誤り訂正処理の性能を向上することができる。さらに、訂正読み出し動作中に発生するエラーの種類、即ちタイムアウトエラーまたはセクタ単位のエラー訂正不能なエラーに応じて、追加訂正対象範囲を変更することができる。このため、ＦＷ２３の処理負担を軽減できる効果がある。
【００５８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５９】
１０…ＳＳＤ（solid state drive）、１１…NAND型フラッシュメモリ、
１２…バッファメモリ（ＤＲＡＭ）、２０…ＳＳＤコントローラ、
２１…ホストインターフェースコントローラ、２２…ＤＲＡＭコントローラ、
２３…マイクロプロセッサ（ＣＰＵまたはＦＷ）、
２４…フラッシュメモリコントローラ、２５…バス、
４０…バスインターフェース、４１…チャネルコントローラ、
４１-CH0〜４１-CHn…NANDコントローラ、４２…レジスタ、
４３…追加訂正モジュール、４４…チャネル間同期コントローラ、
４５…チャネル間誤り訂正符号コントローラ（ＩＣＰコントローラ）。
【図１】
2012155541.tif 000003
【図２】
2012155541.tif 000004
【図３】
2012155541.tif 000005
【図４】
2012155541.tif 000006
【図５】
2012155541.tif 000007
【図６】
2012155541.tif 000008
【図７】
2012155541.tif 000009
【図８】
2012155541.tif 000010
【図９】
2012155541.tif 000011
【図１０】
2012155541.tif 000012
【図１１】
2012155541.tif 000013
【図１２】
2012155541.tif 000014
【図１３】
2012155541.tif 000015