(57)【要約】【課題】有効なデータが準備できないチャネルがある場合でも、ライト処理効率の低下を招くことなく、確実に誤り訂正符号データを生成できるデータ記憶装置を提供することにある。【解決手段】実施形態によれば、データ記憶装置は、ライトコントローラと、誤り訂正コントローラと、データコントローラとを具備する。ライトコントローラは、複数チャネルの各不揮発性メモリにデータを並列に書き込む。誤り訂正コントローラは、前記ライトコントローラによる書き込み動作の前に、前記各チャネル毎に準備されるデータを使用して誤り訂正符号データを生成する。データコントローラは、不揮発性メモリの書き込み対象のデータが準備されないチャネルに対して、当該不揮発性メモリの初期値データを前記誤り訂正コントローラの生成処理に使用するデータとして準備する。【選択図】図１
2012113476.tif 000002
【特許請求の範囲】
【請求項１】
複数チャネルの各不揮発性メモリにデータを並列に書き込むライト制御手段と、
前記ライト制御手段による書き込み動作の前に、前記各チャネル毎に準備されるデータを使用して誤り訂正符号データを生成する誤り訂正制御手段と、
不揮発性メモリの書き込み対象のデータが準備されないチャネルに対して、当該不揮発性メモリの初期値データを前記誤り訂正制御手段の生成処理に使用するデータとして準備するデータ制御手段と
を具備するデータ記憶装置。
【請求項２】
前記データ制御手段は、
前記初期値データとして、前記不揮発性メモリに対する消去処理後の記憶値データを使用する請求項１に記載のデータ記憶装置。
【請求項３】
前記複数チャネルの中で前記誤り訂正符号データが書き込まれる不揮発性メモリのチャネルが設定されており、
前記ライト制御手段は、
前記書き込み対象のデータが準備されないチャネルを除く各チャネルの不揮発性メモリに対して、前記書き込み対象のデータ及び前記誤り訂正符号データを並列に書き込むように構成されている請求項１または請求項２のいずれか１項に記載のデータ記憶装置。
【請求項４】
前記データ制御手段は、
前記ライト制御手段がフラッシュコマンドに応じたライト制御を実行するときに、前記初期値データを準備する処理を実行する請求項１から請求項３のいずれか１項に記載のデータ記憶装置。
【請求項５】
前記データ制御手段は、
前記誤り訂正制御手段に対して、前記誤り訂正符号データの生成に必要なデータとして前記書き込み対象のデータ及び前記初期値データの準備が完了したことを通知する手段を含む請求項１から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
複数チャネルの不揮発性メモリを有するデータ記憶装置に適用するメモリ制御装置であって、
前記複数チャネルの各不揮発性メモリにデータを並列に書き込むライト制御手段と、
前記ライト制御手段による書き込み動作の前に、前記各チャネル毎に準備されるデータを使用して誤り訂正符号データを生成する誤り訂正制御手段と、
前記ライト制御手段に対して不揮発性メモリの書き込み対象のデータをチャネル毎に準備し、当該書き込み対象のデータを準備できないチャネルに対して不揮発性メモリの初期値データを準備するデータ制御手段と
を具備するメモリ制御装置。
【請求項７】
前記データ制御手段は、
前記初期値データとして、前記不揮発性メモリに対する消去処理後の記憶値データを使用する請求項６に記載のメモリ制御装置。
【請求項８】
前記複数チャネルの中で前記誤り訂正符号データが書き込まれる不揮発性メモリのチャネルが設定されており、
前記ライト制御手段は、
前記書き込み対象のデータが準備されないチャネルを除く各チャネルの不揮発性メモリに対して、前記書き込み対象のデータ及び前記誤り訂正符号データを並列に書き込むように構成されている請求項６または請求項７のいずれか１項に記載のメモリ制御装置。
【請求項９】
前記データ制御手段は、
前記ライト制御手段がフラッシュコマンドに応じたライト制御を実行するときに、前記初期値データを準備する処理を実行する請求項６から請求項８のいずれか１項に記載のメモリ制御装置。
【請求項１０】
複数チャネルの不揮発性メモリを有するデータ記憶装置に適用するメモリ制御方法であって、
複数チャネルの各不揮発性メモリにデータを並列に書き込むために、前記各チャネル毎に書き込み対象のデータを準備し、
前記書き込み対象のデータが準備されないチャネルに対して、当該不揮発性メモリの初期値データを準備し、
前記各チャネル毎に準備される書き込み対象のデータ及び前記初期値データを使用して誤り訂正符号データを生成するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置に関する。
【背景技術】
【０００２】
近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を記憶媒体とするＳＳＤ（solid state drive）の開発が推進されている。
【０００３】
一般的に、ＳＳＤでは、複数のチャネル単位に設けられる各フラッシュメモリに対して、データを並列に書き込むマルチチャネル方式のライト動作が行なわれる。このライト動作時に、各チャネルに書き込むデータ（ユーザデータ）を使用して、チャネル間で誤り訂正処理（ＥＣＣ:error checking and correcting）が可能な誤り訂正符号データ（またはパリティデータ）が生成される。この誤り訂正符号データは、複数チャネルの中から設定されたＥＣＣ用チャネルのフラッシュメモリに格納される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１６３２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のＳＳＤにおいて、マルチチャネル方式のライト動作時に、全チャネルの中で書き込み対象として有効なデータが準備できないチャネルがある場合に、誤り訂正符号データを生成するために、一種の補間データを準備する必要がある。この場合、マルチチャネル方式のライト動作により、補間データは、当該チャネルのフラッシュメモリに書き込まれることになる。この補間データを書き込むライト動作は、ライトアクセス速度に関係するライト処理時間の増大や、フラッシュメモリの寿命に関係するライト回数の増大を招き、ライト処理効率の低下の要因となる。
【０００６】
そこで、本発明の目的は、有効なデータが準備できないチャネルがある場合でも、ライト処理効率の低下を招くことなく、確実に誤り訂正符号データを生成できるデータ記憶装置を提供することにある。
【課題を解決するための手段】
【０００７】
実施形態によれば、データ記憶装置は、ライト制御手段と、誤り訂正制御手段と、データ制御手段とを具備する。ライト制御手段は、複数チャネルの各不揮発性メモリにデータを並列に書き込む。誤り訂正制御手段は、前記ライト制御手段による書き込み動作の前に、前記各チャネル毎に準備されるデータを使用して誤り訂正符号データを生成する。データ制御手段は、不揮発性メモリの書き込み対象のデータが準備されないチャネルに対して、当該不揮発性メモリの初期値データを前記誤り訂正制御手段の生成処理に使用するデータとして準備する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に関するデータ記憶装置の構成を説明するためのブロック図。
【図２】実施形態に関するフラッシュメモリコントローラの構成を説明するためのブロック図。
【図３】実施形態に関するライト動作を説明するための概念図。
【図４】実施形態に関するライト動作を説明するためのフローチャート。
【発明を実施するための形態】
【０００９】
以下図面を参照して、実施形態を説明する。
【００１０】
［データ記憶装置の構成］
図１は、実施形態のデータ記憶装置の構成を示すブロック図である。
【００１１】
図１に示すように、実施形態のデータ記憶装置はＳＳＤ（solid state drive）であり、ＳＳＤコントローラ１０と、NAND型フラッシュメモリ（フラッシュメモリ）２０と、ＤＲＡＭ（dynamic random access memory）からなるバッファメモリ２１とを有する。
【００１２】
フラッシュメモリ２０は、ＳＳＤのデータ記憶媒体であり、複数のフラッシュメモリチップから構成されている。本実施形態のＳＳＤは、便宜的に４チャネルＣＨ０〜ＣＨ３のマルチチャネル方式であり、各チャネルＣＨ０〜ＣＨ３のそれぞれに対応するフラッシュメモリ２０１〜２０４を有する。
【００１３】
ＳＳＤコントローラ１０は、フラッシュメモリコントローラ１１と、バッファマネージャモジュール１２と、ホストインターフェースコントローラ１３と、サブシステムモジュール１４とを有する。
【００１４】
フラッシュメモリコントローラ１１は、チャネルＣＨ０〜ＣＨ３毎にフラッシュメモリ２０１〜２０４のリード／ライト動作の制御及びデータ転送制御を実行する（図２を参照）。バッファマネージャモジュール１２は、バッファメモリ２１を制御し、バッファメモリとのデータ転送を制御する。ホストインターフェースコントローラ１３は、ホストインターフェース１５を介して、ホストシステム３０とＳＳＤとのデータやコマンドの転送を制御する。ホストシステム３０は、例えばパーソナルコンピュータや各種のデジタル機器のＣＰＵ等である。
【００１５】
サブシステムモジュール１４は、マイクロプロセッサ（ＭＰＵ）から構成されており、ＳＳＤコントローラ１０の全体的制御を実行する。サブシステムモジュール１４は、例えばホストシステム３０からのコマンドに応じて、データのライト動作及びリード動作に必要なコマンドをフラッシュメモリコントローラ１１に出力する。
【００１６】
（フラッシュメモリコントローラの構成）
図２に示すように、フラッシュメモリコントローラ１１は、データ転送コントローラ（ＩＯＰＳアクセラレーション・エンジン・モジュールとも呼ばれる）１００と、チャネルＣＨ０〜ＣＨ３毎のメモリコントローラ（以下、便宜的にＮＡＮＤコントローラと表記する）１０１〜１０４と、チャネル間パリティコントローラ（以下、ＥＣＣコントローラと表記する）１１０とを含む。
【００１７】
データ転送コントローラ１００は、ＮＡＮＤコントローラ１０１〜１０４及びＥＣＣコントローラ１１０に対するデータ転送制御及び動作制御を実行する。ＮＡＮＤコントローラ１０１〜１０４はそれぞれ、チャネルＣＨ０〜ＣＨ３毎のフラッシュメモリ２０１〜２０４に対するリード／ライトアクセス制御及びデータ転送制御を実行する。
【００１８】
ＥＣＣコントローラ１１０は、後述するように、チャネル間で誤り訂正処理（ＥＣＣ:error checking and correcting）が可能な誤り訂正符号（error correcting code）データを生成する。誤り訂正符号データ（以下、ＥＣＣデータ）は、例えばパリティデータであり、ＥＣＣコントローラ１１０によるチャネル間の誤り訂正処理に使用される。
【００１９】
［フラッシュメモリコントローラの動作］
まず、マルチチャネル方式のＳＳＤにおける通常のライト動作を説明する。
【００２０】
マルチチャネル方式のＳＳＤでは、ＳＳＤコントローラ１０は、ホストシステム３０から発行されるライトコマンドに応じて、バッファメモリ２１に格納される書き込み対象のデータをフラッシュメモリコントローラ１１に転送する。
【００２１】
フラッシュメモリコントローラ１１では、図２に示すように、データ転送コントローラ１００は、チャネルＣＨ０〜ＣＨ３毎に書き込み対象として有効なデータが準備されると、ＮＡＮＤコントローラ１０１〜１０４に対してデータ転送制御信号１２０を出力し、ライト動作のためのデータ転送を指示する。ＮＡＮＤコントローラ１０１〜１０４は、準備されたデータをフラッシュメモリ２０１〜２０４に転送する。これにより、チャネルＣＨ０〜ＣＨ３毎のフラッシュメモリ２０１〜２０４に対して、準備されたデータが並列に書き込まれる。
【００２２】
ここで、本実施形態では、チャネルＣＨ０〜ＣＨ２のＮＡＮＤコントローラ１０１〜１０３には、バッファマネージャモジュール１２から転送されるデータが有効なデータとして準備される。このデータは、ホストシステム３０から転送されて、バッファメモリ２１に格納されるユーザデータである。
【００２３】
一方、チャネルＣＨ３のＮＡＮＤコントローラ１０４には、有効なデータとして、ＥＣＣコントローラ１１０により生成されたＥＣＣデータ（パリティデータ）が準備される。従って、他のフラッシュメモリ２０１〜２０３にデータが並列に書き込まれるときに、チャネルＣＨ３のフラッシュメモリ２０４にはＥＣＣデータが書き込まれる。
【００２４】
ＥＣＣコントローラ１１０は、チャネルＣＨ０〜ＣＨ２のＮＡＮＤコントローラ１０１〜１０３に準備された各ユーザデータを使用して、チャネル間の誤り訂正処理に使用されるＥＣＣデータを生成し、チャネルＣＨ３のＮＡＮＤコントローラ１０４に転送する。
【００２５】
次に、図３及び図４のフローチャートを参照して、本実施形態のライト動作及びＥＣＣデータ生成処理を説明する。
【００２６】
本実施形態では、フラッシュコマンドの発行時におけるライト動作の場合について説明する。なお、図４に示すように、通常のライトコマンドの発行時には、前述の通常のライト動作が実行される（ブロック４０５）。
【００２７】
フラッシュコマンドは、例えば電源オフ時に、フラッシュメモリ２０１〜２０４に書き込まれていないデータを保護するために、サブシステムモジュール１４のＭＰＵから発行される（ブロック４００のＹＥＳ）。フラッシュメモリコントローラ１１は、フラッシュコマンドが発行されると、書き込み対象として有効なデータが準備されていないチャネルが存在する場合でも、強制的に各チャネルに対してライト動作を実行させる。
【００２８】
フラッシュメモリコントローラ１１では、データ転送コントローラ１００は、チャネルＣＨ０〜ＣＨ２の中で、書き込み対象として有効なデータが準備されていないチャネル（ここではＣＨ２とする）を検出する（ブロック４０１）。なお、前述したように、チャネルＣＨ３は、有効なデータとしてＥＣＣデータが割り当てられるチャネルである。
【００２９】
ここで、図３は、フラッシュコマンドの発行時におけるライト動作をステップ（STEP1,STEP2,STEP3）毎に示す概念図である。即ち、ステップSTEP1において、チャネルＣＨ０，ＣＨ１のＮＡＮＤコントローラ１０１，１０２には、有効なデータとしてユーザデータ３０１，３０２がそれぞれ準備されている。一方、チャネルＣＨ２のＮＡＮＤコントローラ１０３には、ユーザデータが準備されておらず、書き込み対象として有効なデータがない状態である。
【００３０】
ＥＣＣコントローラ１１０は、フラッシュコマンドの発行に応じて、ＥＣＣデータを生成し、チャネルＣＨ３のＮＡＮＤコントローラ１０４に転送する処理を実行する（ステップSTEP2）。このとき、ＥＣＣコントローラ１１０は、データ転送コントローラ１００からチャネルＣＨ０〜ＣＨ２のデータの準備が完了されたことを通知される。これにより、ＥＣＣコントローラ１１０は、フラッシュメモリ２０１〜２０４に対するライト動作が行なわれる前に、ＥＣＣデータを生成してチャネルＣＨ３のＮＡＮＤコントローラ１０４に転送できる。
【００３１】
データ転送コントローラ１００は、ユーザデータが準備されないチャネルＣＨ２のＮＡＮＤコントローラ１０３に対して、初期値データを準備する（ブロック４０２）。この初期値データとは、消去処理直後のフラッシュメモリの記憶状態であり、通常ではオール１の記憶値である。ＳＳＤでは、フラッシュメモリにデータを書き込む前に、消去処理が実行される。従って、ライト動作の直前では、フラッシュメモリは初期値（オール１）が記憶されている状態となる。
【００３２】
ＥＣＣコントローラ１１０は、チャネルＣＨ０〜ＣＨ２において、書き込み対象のユーザデータ及び初期値データの準備が完了すると、これらのデータを使用してＥＣＣデータを生成する（ブロック４０３）。即ち、図３に示すように、ＥＣＣコントローラ１１０は、チャネルＣＨ０，ＣＨ１の有効なデータであるユーザデータ３０１，３０２及び初期値データ３０３を使用して、ＥＣＣデータを生成してチャネルＣＨ３のＮＡＮＤコントローラ１０４に転送する（ステップSTEP2）。
【００３３】
データ転送コントローラ１００は、チャネルＣＨ０，ＣＨ１，ＣＨ３のＮＡＮＤコントローラ１０１，１０２，１０４に対してデータ転送制御信号１２０を出力し、ライト動作のためのデータ転送を指示する（ブロック４０４）。
【００３４】
即ち、図３に示すように、ＮＡＮＤコントローラ１０１，１０２，１０４は、準備されたデータ３０１，３０２及びＥＣＣデータをフラッシュメモリ２０１，２０２，２０４に転送する（ステップSTEP3）。これにより、チャネルＣＨ０，ＣＨ１，ＣＨ３のフラッシュメモリ２０１，２０２，２０４に対して、準備されたデータ３０１，３０２及びＥＣＣデータが並列に書き込まれる。
【００３５】
ここで、図３に示すように、チャネルＣＨ２には書き込み対象として有効なデータは準備されていないため、当該チャネルＣＨ２のフラッシュメモリ２０３には、ライト動作は実行されない。即ち、チャネルＣＨ２のフラッシュメモリ２０３は、消去処理直後の記憶状態、即ち初期値データが記憶されている状態である。
【００３６】
ＥＣＣコントローラ１１０は、リード動作によりチャネルＣＨ０〜ＣＨ３のフラッシュメモリ２０１〜２０４からデータが読み出されたときに、チャネルＣＨ３のフラッシュメモリ２０４に格納されているＥＣＣデータを使用してチャネル間の誤り訂正処理を実行することができる。
【００３７】
以上のように本実施形態によれば、マルチチャネル方式のＳＳＤにおいて、例えばフラッシュコマンドの発行時に、書き込み対象の有効なデータ（ユーザデータ）が準備されていないチャネルが存在する場合でも、当該チャネルに対していわば補間データとして初期値データを準備する。これにより、ＥＣＣコントローラ１１０は、各チャネルで準備された有効なデータと初期値データを使用して、チャネル間の誤り訂正処理に有効なＥＣＣデータを生成することができる。
【００３８】
更に、本実施形態では、各チャネルのフラッシュメモリにデータを並列に書き込む場合に、書き込み対象の有効なデータが準備されていないチャネル（ＣＨ２）に対してはライト動作を実行する必要がない。即ち、当該チャネル（ＣＨ２）に準備されているデータは初期値データであるため、フラッシュメモリ（２０３）に対するライトアクセスは不要となる。従って、マルチチャネル方式のライト動作において、当該チャネル（ＣＨ２）のライト動作を省略できるため、結果としてライト動作の速度を高速化を実現することができる。また、フラッシュメモリに対するライト回数を削減できるため、フラッシュメモリの寿命も延命できる効果もある。
【００３９】
即ち、補間データとして初期値データ以外の任意のデータを準備した場合、チャネル間の誤り訂正処理に有効なＥＣＣデータを生成するには、当該任意のデータをチャネル（ＣＨ２）のフラッシュメモリ（２０３）に書き込むことが必要となる。本実施形態では、補間データとして、フラッシュメモリ（２０３）に書き込む必要がない初期値データを使用するため、ライト動作を省略できる。換言すれば、初期値データは、ライト動作を実行せずに、そのフラッシュメモリから読み出すことができるデータである。
【００４０】
要するに、補間データとして初期値データを使用することにより、ライトアクセス速度に関係するライト処理時間を削減し、かつフラッシュメモリの寿命に関係するライト回数の削減を実現できるため、ＳＳＤのライト処理効率の向上を図ることができる。
【００４１】
なお、本実施形態において、初期値データは、データ転送コントローラ１００により準備されるが、ＥＣＣコントローラ１１０により予め固定データとして用意されている構成でも良い。この場合には、ＥＣＣコントローラ１１０は、データ転送コントローラ１００からデータが準備されていないチャネル（ＣＨ２）の通知に応じて、当該チャネル（ＣＨ２）の補間データとして予め用意された初期値データを使用してＥＣＣデータを生成する。
【００４２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４３】
１０…ＳＳＤコントローラ、１１…フラッシュメモリコントローラ、
１２…バッファマネージャモジュール、１３…ホストインターフェースコントローラ、
１４…サブシステムモジュール、１５…ホストインターフェース、
２０，２０１〜２０４…NAND型フラッシュメモリ、２１…バッファメモリ（ＤＲＡＭ）、
３０…ホストシステム、１００…データ転送コントローラ、
１０１〜１０４…メモリコントローラ（ＮＡＮＤコントローラ）、
１１０…チャネル間パリティコントローラ（ＥＣＣコントローラ）。
【図１】
2012113476.tif 000003
【図２】
2012113476.tif 000004
【図３】
2012113476.tif 000005
【図４】
2012113476.tif 000006