(57)【要約】【課題】単体の装置内部でデータのエラー訂正ができ、データの信頼性を確保することを可能とするフラッシュメモリディスク装置等を提供する。【解決手段】フラッシュメモリディスク装置１０は、フラッシュメモリによる複数の記憶素子１６〜１７と、上位装置との間のデータの送受信を行うインターフェイスコントローラ１２と、インターフェイスコントローラを介して上位装置から受信した書き込みデータを記憶素子に記憶させると共に、記憶素子に記憶されたデータを読み出してこれをインターフェイスコントローラを介して読み出しデータとして上位装置に送信するマイクロプロセッサ１４と、書き込みデータに対して縦方向および横方向ＥＣＣコードを生成および付加すると共にＥＣＣコードによって読み出しデータのエラーの検出および訂正を行うＥＣＣコントローラ１５とを備える。【選択図】図１
2013205853.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリによる複数の記憶素子と、
上位装置との間のデータの送受信を行うインターフェイスコントローラと、
前記インターフェイスコントローラを介して前記上位装置から受信した書き込みデータを前記記憶素子に記憶させると共に、前記記憶素子に記憶されたデータを読み出してこれを前記インターフェイスコントローラを介して読み出しデータとして前記上位装置に送信するマイクロプロセッサと、
前記書き込みデータに対してＥＣＣコードを生成および付加すると共に前記ＥＣＣコードによって前記読み出しデータのエラーの検出および訂正を行うＥＣＣコントローラとを備えると共に、
前記ＥＣＣコントローラが前記書き込みデータから縦方向ＥＣＣコードを生成する縦方向ＥＣＣ生成回路と、前記書き込みデータから横方向ＥＣＣコードを生成する横方向ＥＣＣ生成回路からなることを特徴とするフラッシュメモリディスク装置。
【請求項２】
前記マイクロプロセッサが、前記ＥＣＣコードを付加された前記書き込みデータをバイト単位に分散させて前記複数の記憶素子の各々に記憶させることを特徴とする、請求項１に記載のフラッシュメモリディスク装置。
【請求項３】
データを一時的に記憶するローカルメモリを備え、
前記マイクロプロセッサが前記書き込みデータおよび読み出しデータを前記ローカルメモリに一時記憶させることを特徴とする、請求項１に記載のフラッシュメモリディスク装置。
【請求項４】
前記ＥＣＣコントローラの前段に、前記書き込みデータに対してＣＲＣコードを生成および付加するＣＲＣコントローラを備えることを特徴とする、請求項１に記載のフラッシュメモリディスク装置。
【請求項５】
フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し、
受信された前記書き込みデータに対してＥＣＣコントローラが縦方向および横方向ＥＣＣコードを生成して付加し、
前記ＥＣＣコードを付加された前記書き込みデータを前記マイクロプロセッサが前記複数の記憶素子に記憶させることを特徴とするデータ記憶制御方法。
【請求項６】
前記上位装置からの読み出し命令に応じて、前記マイクロプロセッサが前記複数の記憶素子に記憶されている読み出しデータを読み出し、
前記読み出しデータの前記縦方向および横方向ＥＣＣコードを前記ＥＣＣコントローラがチェックしてエラーの検出および訂正を行い、
前記エラーの検出および訂正の行われた前記読み出しデータを前記マイクロプロセッサが前記インターフェイスコントローラを介して前記上位装置に送信することを特徴とする、請求項５に記載のデータ記憶制御方法。
【請求項７】
フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
前記フラッシュメモリディスク装置の備えるコンピュータに、
上位装置から書き込みデータを受信する手順、
受信された前記書き込みデータに対して縦方向および横方向ＥＣＣコードを生成して付加する手順、
および前記ＥＣＣコードを付加された前記書き込みデータを前記複数の記憶素子に記憶させる手順
を実行させることを特徴とするデータ記憶制御プログラム。
【請求項８】
前記上位装置からの読み出し命令に応じて、前記複数の記憶素子に記憶されている読み出しデータを読み出す手順、
前記読み出しデータの前記縦方向および横方向ＥＣＣコードをチェックしてエラーの検出および訂正を行う手順、
および前記エラーの検出および訂正の行われた前記読み出しデータを前記上位装置に送信する手順
をさらに実行させることを特徴とする、請求項７に記載のデータ記憶制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラムに関し、特に当該装置に記憶されるデータの信頼性（インテグリティ）を向上させるフラッシュメモリディスク装置等に関する。
【背景技術】
【０００２】
コンピュータが社会の基盤としてすっかり浸透した現代では、データの損失はそれだけで重大な損失となる。そのため、特に業務において必要なデータを保護するために、複数台のハードディスクドライブを組み合わせたＲＡＩＤ（Redundant Arrays of Inexpensive Disks、またはRedundant Arrays of Independent Disks）構成が利用されることが多い。
【０００３】
一般にハードディスクドライブ（以後ＨＤＤ）単体では、ハードディスクドライブ内にデータのインテグリティ（Integrity: 完全性、信頼性）を向上させる仕組み、例えばデータに対するパリティ付加やチェック機能を持っていない。そのため、複数のＨＤＤを組み合わせて、冗長化された一台のＨＤＤとして管理する技術であるＲＡＩＤ構成が用いられる。
【０００４】
図１０は、一般的なＲＡＩＤ５構成について示す説明図である。ここでは４台のＨＤＤ９０１〜９０４を利用し、これらにＡ〜Ｃの３つのデータファイルを分散させて記憶させている。データファイルＡをＡ１〜Ａ４、データファイルＢをＢ１〜Ｂ４、データファイルＣをＣ１〜Ｃ４に各々分割し、分割したこれらのファイルをデータの誤り訂正符号であるパリティデータＰ１〜Ｐ４と共にＨＤＤ９０１〜９０４に分散させて記憶させている。
【０００５】
このようにデータを分散させて記憶させることにより、ＨＤＤ９０１〜９０４のうちどれか１台が故障してデータの読み出しができなくなったとしても、データファイルＡ〜Ｃを復旧することができるというものである。ただし、ＨＤＤ９０１〜９０４のうち２台以上が同時に故障すると、データは復旧できない。
【０００６】
その一方で、フラッシュメモリの記憶容量当たりの単価が安くなってきたことから、ＨＤＤをフラッシュメモリを利用したフラッシュメモリディスク装置に置き換えようとする動きが出てきている。フラッシュメモリディスク装置にはＨＤＤと違って機械的な可動部が存在しないため、データの読み書きにかかる時間が短く、小型軽量であり、また機械的な故障が発生しにくいという利点がある。
【０００７】
フラッシュメモリディスク装置などに関連して、次のような各文献がある。その中でも特許文献１には、データを分割してＥＣＣコードを付加して複数のフラッシュメモリ素子に記憶するという記憶装置が記載されている。特許文献２には、垂直パリティをデータとは別の素子に記憶するという電子ディスク装置が記載されている。特許文献３には、ＥＣＣ（Error Correcting Code）コードとＣＲＣ（Cyclic Redundancy Code）コードとを利用する電子ディスク装置が記載されている。
【０００８】
特許文献４には、フラッシュメモリではなくＨＤＤであるが、ストライピングとＣＲＣコードを利用したディスクアレイ装置が記載されている。特許文献５には、ストライピングとミラーリングを利用して複数のフラッシュメモリ素子にデータを記憶するというデジタルカメラが記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０００−０２０４０９号公報
【特許文献２】特開２０００−２１５０７３号公報
【特許文献３】特開２００１−１６７００２号公報
【特許文献４】特開２００４−０９４５４７号公報
【特許文献５】特開２００４−３２０４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＨＤＤをフラッシュメモリディスク装置に置き換える場合に、記憶素子の劣化によって書き込み可能回数が数万回〜数十万回程度に制限されるという問題がある。この書き込み可能回数は、ＨＤＤのそれと比べても大きく劣っている。これはフラッシュメモリ素子の原理上、不可避の問題である。
【００１１】
しかしながら、フラッシュメモリディスク装置にはそのような記憶素子の劣化によるデータの破損を補う構造は、通常は特にない。特に、間欠的なデータ化けに弱く、そのようなデータ化けが発生した場合、すぐにメディアエラーとなる。
【００１２】
これに図１０に示したＲＡＩＤ構造を組み合わせてデータの信頼性を確保するということも一応は考えられる。しかしながら、このような構成でも、１つのドライブでデータ化けが発生した場合でも上位装置によるデータ復旧が必要になり、これはレスポンスの低下につながる。また、同時に複数のドライブでデータ化けが発生した場合、やはり上記と同様のメディアエラーとなる。従って、フラッシュメモリディスク装置をＲＡＩＤ構造としても、ＨＤＤとの比較で書き込み可能回数の問題を解決するということにはならない。加えて、このような構造を構成するにはコストがかかる。以上の問題を解決しうる構成は、前述の特許文献１〜５には記載されていない。
【００１３】
本発明の目的は、単体の装置内部でデータのエラー訂正ができ、データの信頼性を確保することを可能とするフラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、本発明に係るフラッシュメモリディスク装置は、フラッシュメモリによる複数の記憶素子と、上位装置との間のデータの送受信を行うインターフェイスコントローラと、インターフェイスコントローラを介して上位装置から受信した書き込みデータを記憶素子に記憶させると共に、記憶素子に記憶されたデータを読み出してこれをインターフェイスコントローラを介して読み出しデータとして上位装置に送信するマイクロプロセッサと、書き込みデータに対してＥＣＣコードを生成および付加すると共にＥＣＣコードによって読み出しデータのエラーの検出および訂正を行うＥＣＣコントローラとを備えると共に、ＥＣＣコントローラが書き込みデータから縦方向ＥＣＣコードを生成する縦方向ＥＣＣ生成回路と、書き込みデータから横方向ＥＣＣコードを生成する横方向ＥＣＣ生成回路からなることを特徴とする。
【００１５】
上記目的を達成するため、本発明に係るデータ記憶制御方法は、フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し、受信された書き込みデータに対してＥＣＣコントローラが縦方向および横方向ＥＣＣコードを生成して付加し、ＥＣＣコードを付加された書き込みデータをマイクロプロセッサが複数の記憶素子に記憶させることを特徴とする。
【００１６】
上記目的を達成するため、本発明に係るデータ記憶制御プログラムは、フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、フラッシュメモリディスク装置の備えるコンピュータに、上位装置から書き込みデータを受信する手順、受信された書き込みデータに対して縦方向および横方向ＥＣＣコードを生成して付加する手順、およびＥＣＣコードを付加された書き込みデータを複数の記憶素子に記憶させる手順を実行させることを特徴とする。
【発明の効果】
【００１７】
本発明は、上述したように、書き込みデータに対して縦方向および横方向ＥＣＣコードを付加してから複数の記憶素子に記憶させるように構成したので、ＲＡＩＤと同等のデータ信頼性を単体のディスクドライブ内部で確保することが可能となる。これによって、単体の装置内部でデータのエラー訂正ができ、データの信頼性を確保することを可能であるという、優れた特徴を持つフラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態に係るフラッシュメモリディスク装置の構成を示す説明図である。
【図２】図１に示したフラッシュメモリディスク装置で、上位装置からフラッシュメモリディスク装置に入力されたデータを記憶素子に記憶する際の動作について示すフローチャートである。
【図３】図１に示したフラッシュメモリディスク装置で、記憶素子からデータを読み出す際の動作について示すフローチャートである。
【図４】図１に示したフラッシュメモリディスク装置で、ＥＣＣコントローラが縦方向および横方向ＥＣＣコードを付加して記憶素子に記憶させるデータのデータ構造の詳細な構成を示す説明図である。
【図５】図１に示したフラッシュメモリディスク装置で、ＥＣＣコントローラによる横方向ＥＣＣ生成の動作を説明する説明図である。
【図６】図１に示したフラッシュメモリディスク装置で、横方向ＥＣＣ生成回路が横方向ＥＣＣコードのチェックに使用するＧＦ（２＾８）変換表である。
【図７】本発明の第２の実施形態に係るフラッシュメモリディスク装置の構成を示す説明図である。
【図８】図７に示したフラッシュメモリディスク装置で、上位装置からフラッシュメモリディスク装置に入力されたデータを記憶素子に記憶する際の動作について示すフローチャートである。
【図９】図７に示したフラッシュメモリディスク装置で、記憶素子からデータを読み出す際の動作について示すフローチャートである。
【図１０】一般的なＲＡＩＤ５構成について示す説明図である。
【発明を実施するための形態】
【００１９】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るフラッシュメモリディスク装置１０は、フラッシュメモリによる複数の記憶素子１６〜１７と、上位装置との間のデータの送受信を行うインターフェイスコントローラ１２と、に記憶させると共に、記憶素子に記憶されたデータを読み出してこれをインターフェイスコントローラを介して読み出しデータとして上位装置に送信するマイクロプロセッサ（ＭＰＵ１４）と、書き込みデータに対してＥＣＣコードを生成および付加すると共にＥＣＣコードによって読み出しデータのエラーの検出および訂正を行うＥＣＣコントローラ１５とを備えると共に、ＥＣＣコントローラが書き込みデータから縦方向ＥＣＣコードを生成する縦方向ＥＣＣ生成回路１５ａと、書き込みデータから横方向ＥＣＣコードを生成する横方向ＥＣＣ生成回路１５ｂからなる。
【００２０】
また、マイクロプロセッサ１４は、ＥＣＣコードを付加された書き込みデータをバイト単位に分散させて複数の記憶素子１６〜１７の各々に記憶させる。そして、データを一時的に記憶するローカルメモリ１３を備え、マイクロプロセッサ１４が書き込みデータおよび読み出しデータをローカルメモリに一時記憶させる。
【００２１】
この構成を備えることにより、フラッシュメモリディスク装置１０は、単体の装置内部でデータのエラー訂正を行い、データの信頼性を確保することが可能となる。
以下、これをより詳細に説明する。
【００２２】
図１は、本発明の第１の実施形態に係るフラッシュメモリディスク装置１０の構成を示す説明図である。フラッシュメモリディスク装置１０は、フラッシュメモリで構成される複数の記憶素子１６および１７を持つ。
【００２３】
フラッシュメモリディスク装置１０は、記憶素子１６および１７の他には、上位装置（コンピュータ）との間のデータの入出力インターフェイスであるポート１１と、インターフェイスコントローラ１２と、ローカルメモリ１３と、ＭＰＵ（Micro Processing Unit）１４と、ＥＣＣ（Error Correcting Code）コントローラ１５とを備える。
【００２４】
インターフェイスコントローラ１２は、ポート１１を経由したデータの転送をコントロールする。ローカルメモリ１３は、転送されるデータを転送中に一時的に記憶する。ＭＰＵ１４は、ＤＭＡ（Direct Memory Access）コントロールを行うプロセッサであり、インターフェイスコントローラ１２とローカルメモリ１３との間、ローカルメモリ１３と記憶素子１６および１７との間のデータ転送を行う。
【００２５】
ＥＣＣコントローラ１５は、ＭＰＵ１４からの指令により、ＭＰＵ１４から送られた書き込みデータから後述の縦方向ＥＣＣコードおよび横方向ＥＣＣコードを生成して該データに付加して出力する。ＥＣＣコントローラ１５は、縦方向ＥＣＣ生成回路１５ａおよび横方向ＥＣＣ生成回路１５ｂからなり、入力されたデータからそれぞれ縦方向ＥＣＣコードおよび横方向ＥＣＣコードを生成して付加する。この縦方向および横方向ＥＣＣコードを付加されたデータが、記憶素子１６および１７に記憶される。
【００２６】
その際、ＭＰＵ１４は、縦方向および横方向ＥＣＣコードを付加された対象データをバイト単位に分散させて、記憶素子１６および１７に記憶させる。これはいわゆるストライピング（ＲＡＩＤ０）に相当する構成であり、この処理をバイト単位で行うという意味で、本明細書ではこれをバイトストライピングという。
【００２７】
図２は、図１に示したフラッシュメモリディスク装置１０で、上位装置からフラッシュメモリディスク装置１０に入力されたデータを記憶素子１６および１７に記憶する際の動作について示すフローチャートである。上位装置からのデータがポート１１−インターフェイスコントローラ１２−ＭＰＵ１４を経て入力されると（ステップＳ１０１）、ＭＰＵ１４はこのデータをローカルメモリ１３に一時キャッシュとして記憶する（ステップＳ１０２）。
【００２８】
全てのデータがローカルメモリ１３に一時記憶されるのを待ち合わせてから（ステップＳ１０３）、ＭＰＵ１４はこのデータを今度はＥＣＣコントローラ１５に入力して縦方向および横方向ＥＣＣコードを付加させ（ステップＳ１０４）、そして記憶素子１６および１７にバイトストライピングで記憶させる（ステップＳ１０５）。
【００２９】
図３は、図１に示したフラッシュメモリディスク装置１０で、記憶素子１６および１７からデータを読み出す際の動作について示すフローチャートである。上位装置からデータの読み出しを要求するコマンドが入力されると、ＭＰＵ１４は記憶素子１６および１７からデータを読み出し（ステップＳ２０１）、このデータをＥＣＣコントローラ１５に入力して縦方向および横方向ＥＣＣコードをチェックさせる（ステップＳ２０２〜２０３）。
【００３０】
このデータに誤りがなければそのままローカルメモリ１３に一時キャッシュとして記憶され（ステップＳ２０５）、誤りがあればＥＣＣコントローラ１５がデータ訂正の処理を行ってからローカルメモリ１３に一時記憶される（ステップＳ２０４〜２０５）。そしてＭＰＵ１４は、ローカルメモリ１３に一時記憶されたデータをインターフェイスコントローラ１２−ポート１１を介して上位装置に対して出力する（ステップＳ２０６）。
【００３１】
図４は、図１に示したフラッシュメモリディスク装置１０で、ＥＣＣコントローラ１５が縦方向および横方向ＥＣＣコードを付加して記憶素子１６および１７に記憶させるデータのデータ構造の詳細な構成を示す説明図である。
【００３２】
図４上部の、ＬＢＡ（Logical Block Addressing）００〜３１で示した部分は、元となる入力データである。ＬＢＡ単体は５２０バイトである。またＬＢＡ００〜０３などのように連続する４個のＬＢＡは、それぞれ２キロバイト（５２０×４バイト）ごとのデータのかたまりである。ＥＣＣコントローラ１５には、２ＫＢ単位でデータが入力される。
【００３３】
図４下部で、０００００〜２０００７の数字５桁で表されるブロックは、元となる入力データが格納されるアドレスを表す。＃０〜５１９行のチップ０〜７の各ブロックには、それぞれ１バイトのデータが格納される。
【００３４】
図４において、＃５２０〜５２３行のＣｈｉｐ０〜７の、Ｓ００〜Ｓ７３で示した部分には横方向（チップ０〜７）の各列毎に、縦方向（＃０〜＃５１９列）の５２０バイトのデータから生成された縦方向ＥＣＣコード（Ｓ００〜Ｓ７３）が、各々格納される。たとえばチップ０ではＳ００〜０３の４バイトがＥＣＣコードであり、これがチップ０〜７の各チップ毎にそれぞれある。
【００３５】
図４において、チップ８〜Ａの各列、Ｅ００，Ｅ１０，Ｅ２０で示した部分には縦方向（＃０〜＃５１９行）ごとに横方向（チップ０〜７）の各１バイトデータから生成された横方向ＥＣＣコード（Ｅ００，Ｅ１０，Ｅ２０）が格納される。たとえば＃０行では、チップ０〜７の８バイトのデータ（０００００，００００１，００００２，００００３，００００４，００００５，００００６，００００７）から、チップ８〜Ａの横方向ＥＣＣコード（Ｅ００，Ｅ１０，Ｅ２０）が生成されている。これが各行毎にそれぞれある。
【００３６】
図５は、図１に示したフラッシュメモリディスク装置で、ＥＣＣコントローラ１５による横方向ＥＣＣ生成の動作を説明する説明図である。８バイトのデータ（データ０〜７までの各横一列づつ）が入力された横方向ＥＣＣ生成回路１５ｂは、この８バイトのデータから横方向ＥＣＣコードを生成して付加し、記憶素子１６および１７に出力する。
【００３７】
次に、この横方向ＥＣＣコードの生成方法を説明する。図５のＤａｔａ０〜７で１が立っているビットを横列で全てｘｏｒ（排他的論理和）したものが、ＥＣＣ０〜２で１が立っているビットに対応している。従って、各横列で１ビットのＥＣＣコードが生成され、ＥＣＣ０〜２で全部で２４ビットのＥＣＣコードとなる。
【００３８】
Ｄａｔａ０〜７とＥＣＣ０〜２を送信データとする。例えば、ＥＣＣ０のビット７の計算を行うと、ＥＣＣ０［７］＝Ｄ０［７］＾Ｄ１［７］＾Ｄ２［７］＾Ｄ３［７］＾Ｄ４［７］＾Ｄ５［７］＾Ｄ６［７］＾Ｄ７［７］＝０となり、この解である０がＥＣＣ０［７］＝１である場所に格納される。なお、本明細書の文中では「ＡのＢ乗」を「Ａ＾Ｂ」のように表記する。
【００３９】
次に、この横方向ＥＣＣコードのチェック方法を説明する。受信したデータとＥＣＣコードから、誤りの場所を特定するためのベクトルであるシンドローム（Syndrome）を生成する。シンドロームの生成方法は、受信したデータとＥＣＣコードのｘｏｒを求めることによって行う。例えば、Ｓｙｎｄｒ０の計算を行うと、Ｓｙｎｄｒ０［７］＝Ｄ０［７］＾Ｄ１［７］＾Ｄ２［７］＾Ｄ３［７］＾Ｄ４［７］＾Ｄ５［７］＾Ｄ６［７］＾Ｄ７［７］＾ＥＣＣ０［７］＝０
Ｓｙｎｄｒ０〜２から、以下のようにエラー状態を推定することができる。ＳｕｎｄｒＳｙｎｄｒ０〜２が全て「０」であればエラー無しと推定できる。Ｓｙｎｄｒ０〜２のうちの２つが「０」で１つだけが「１」ならばＥＣＣ自身の化けと推定できる。それ以外の場合はデータ化けと推定できる。
【００４０】
図６は、図１に示したフラッシュメモリディスク装置１０で、横方向ＥＣＣ生成回路１５ｂが横方向ＥＣＣコードのチェックに使用するＧＦ（２＾８）変換表である。図６のＧＦ（２＾８）変換表と、前述のシンドロームから、エラー位置と、エラーがシングル（１箇所エラー）であるかマルチ（複数個所エラー）であるかを判別することができる。
【００４１】
Ｓｙｎｄｒ０〜２の各値から、ＧＦ（２＾８）変換表で対応するαの指数部分をＳｘとし、ｉをデータ化けブロック位置、シングル／マルチ判断式をｉ＝ｊとすると、ｉとｊはＩ＝Ｓ１−Ｓ０、ｊ＝２５４＋Ｓ０−Ｓ２となり、ｉ＝ｊの場合１ブロックエラー、ｉ≠ｊの場合マルチエラーとなる。
【００４２】
次にチェック後、１ブロックエラー箇所のデータとＳｙｎｄｒ０をｘｏｒした結果が訂正後データとなる。図４の縦方向ＥＣＣも同様な方法で生成・チェックを行う。
【００４３】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係るデータ記憶制御方法は、フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置１０にあって、上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し（図２・ステップＳ１０１）、受信された書き込みデータに対してＥＣＣコントローラが縦方向および横方向ＥＣＣコードを生成して付加し（図２・ステップＳ１０４）、ＥＣＣコードを付加された書き込みデータをマイクロプロセッサが複数の記憶素子に記憶させる（図２・ステップＳ１０５）。
【００４４】
また、上位装置からの読み出し命令に応じて、マイクロプロセッサが複数の記憶素子に記憶されている読み出しデータを読み出し（図３・ステップＳ２０１）、読み出しデータの縦方向および横方向ＥＣＣコードをＥＣＣコントローラがチェックしてエラーの検出および訂正を行い（図３・ステップＳ２０４〜５）、エラーの検出および訂正の行われた読み出しデータをマイクロプロセッサがインターフェイスコントローラを介して上位装置に送信する（図３・ステップＳ２０６）。
【００４５】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるＭＰＵ１４に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
【００４６】
第１の効果は、単体ディスクドライブ内部のデータ化け発生頻度低減、データ損失低減によりデータの信頼性を高めることが可能なことである。その理由は、単体ディスクドライブ内部の記憶素子を磁気ディスクからフラッシュメモリに置き換え、このフラッシュメモリディスクドライブを用いてＥＣＣ生成及びデータの正当性確認及びデータ訂正をしており、これによりディスクドライブ内部にＲＡＩＤを構成しているのと同等の効果が得られるからである。
【００４７】
第２の効果は、上位ＲＡＩＤでのメディアエラー低減、延いてはサーバ・ストレージ全体のデータ損失低減を実現できることである。その理由は、単体ディスクドライブ自体で、従来のＲＡＩＤを構成したものと同等の効果が得られるので、単体ディスクドライブ内部でのデータ信頼性が極めて高くなっているからである。
【００４８】
第３の効果は、データ転送の高速化も同時に実現できることである。その理由は、データのリード及びライト動作においてデータをバイトストライピングしているからである。さらに、バイトストライピングにより、特定の記憶素子の故障があっても書き込まれたデータを保護することも可能となる。
【００４９】
（第２の実施形態）
本発明の第２の実施形態は、第１の実施形態の構成に加えて、ＥＣＣコントローラの前段に、書き込みデータに対してＣＲＣ（Cyclic Redundancy Check）コードを生成および付加するＣＲＣコントローラを備えるものとした。
【００５０】
この構成によっても、第１の実施形態と同一の効果が得られるのに加えて、縦方向および横方向ＥＣＣコードだけでは検出できないエラーをＣＲＣコードによって検出し、データの信頼性をさらに向上させることが可能となる。
以下、これをより詳細に説明する。
【００５１】
図７は、本発明の第２の実施形態に係るフラッシュメモリディスク装置３１０の構成を示す説明図である。フラッシュメモリディスク装置３１０は、第１の実施形態に係るフラッシュメモリディスク装置１０の、ＥＣＣコントローラ１５の前段にＣＲＣコントローラ３１８を付加した構成となっている。
【００５２】
ＣＲＣコントローラ３１８は、ＭＰＵ１４からの指令により、ＭＰＵ１４から送られた書き込みデータからＣＲＣ（Cyclic Redundancy Check）コードを生成して該データに付加して出力する。ＥＣＣコントローラ１５は、そのＣＲＣコードの付加されたデータに対してさらに、前述の縦方向ＥＣＣコードおよび横方向ＥＣＣコードを生成して該データに付加する。このＣＲＣコードと（縦方向および横方向）ＥＣＣコードとが生成されたデータが、ＭＰＵ１４からの指令により、前述のバイトストライピングで記憶素子１６および１７に記憶させる。
【００５３】
図８は、図７に示したフラッシュメモリディスク装置３１０で、上位装置からフラッシュメモリディスク装置３１０に入力されたデータを記憶素子１６および１７に記憶する際の動作について示すフローチャートである。図８は、図２に示した第１の実施形態の動作のステップＳ１０３と１０４との間に、ＣＲＣコントローラ３１８によって２ＫＢまたは４ＫＢごとの単位のデータからＣＲＣコードを生成する（ステップＳ４０１）処理が付加されている以外は、図２と同一の工程で処理を行う。
【００５４】
図９は、図７に示したフラッシュメモリディスク装置３１０で、記憶素子１６および１７からデータを読み出す際の動作について示すフローチャートである。図９は、図３に示した第１の実施形態の動作のステップＳ２０５の前に、ＥＣＣコントローラ１５から出力されたデータに対してＣＲＣコントローラ３１８がＣＲＣコードをチェックして（ステップＳ５０１）誤りが無ければローカルメモリ１３に一時キャッシュとして記憶し、誤りがあればＣＲＣコントローラ３１８がこれを訂正する処理を行って（ステップＳ５０２〜５０３）、やはりローカルメモリ１３に記憶する処理が付加されている以外は、図３と同一の工程で処理を行う。
【００５５】
第１の実施形態では、書き込みデータに対して縦方向および横方向ＥＣＣコードを生成してから記憶素子１６および１７に書き込み、読み出し時にはこのＥＣＣコードによってデータエラーの有無をチェックし、エラーがある場合にはこれを訂正する。しかしながら、ＥＣＣコードではすべてのデータパターンにおいてエラーを１００％検出できるわけではない。
【００５６】
そこで、第２の実施形態では、縦方向および横方向ＥＣＣコードとは異なるデータ単位でＣＲＣコードを生成するＣＲＣコントローラ３１８をさらに付加する構成とした。これによって、ＥＣＣコードでエラーを検出できないデータの組み合わせがあった場合でも、ＣＲＣコードからそのデータエラーを検出して訂正することが可能となる。
【００５７】
（実施形態の拡張）
以上の通り説明した第１および第２の実施形態には、その趣旨を改変しない範囲でさまざまな拡張が考えられる。以下、これについて説明する。
まず、前述の第１および第２の実施形態では、記憶素子を２つのみ備えるものとして説明したが、これを３つ以上としてもよい。その場合も、もちろん前述のバイトストライピングで、対象データをバイト単位に分散させて記憶させる。
また、フラッシュメモリ以外の種類の記憶素子に対して、これと同様の構造を備えるようにしてもよい。
【００５８】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【００５９】
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【００６０】
（付記１）  フラッシュメモリによる複数の記憶素子と、
上位装置との間のデータの送受信を行うインターフェイスコントローラと、
前記インターフェイスコントローラを介して前記上位装置から受信した書き込みデータを前記記憶素子に記憶させると共に、前記記憶素子に記憶されたデータを読み出してこれを前記インターフェイスコントローラを介して読み出しデータとして前記上位装置に送信するマイクロプロセッサと、
前記書き込みデータに対してＥＣＣコードを生成および付加すると共に前記ＥＣＣコードによって前記読み出しデータのエラーの検出および訂正を行うＥＣＣコントローラとを備えると共に、
前記ＥＣＣコントローラが前記書き込みデータから縦方向ＥＣＣコードを生成する縦方向ＥＣＣ生成回路と、前記書き込みデータから横方向ＥＣＣコードを生成する横方向ＥＣＣ生成回路からなることを特徴とするフラッシュメモリディスク装置。
【００６１】
（付記２）  前記マイクロプロセッサが、前記ＥＣＣコードを付加された前記書き込みデータをバイト単位に分散させて前記複数の記憶素子の各々に記憶させることを特徴とする、付記１に記載のフラッシュメモリディスク装置。
【００６２】
（付記３）  データを一時的に記憶するローカルメモリを備え、
前記マイクロプロセッサが前記書き込みデータおよび読み出しデータを前記ローカルメモリに一時記憶させることを特徴とする、付記１に記載のフラッシュメモリディスク装置。
【００６３】
（付記４）  前記ＥＣＣコントローラの前段に、前記書き込みデータに対してＣＲＣコードを生成および付加するＣＲＣコントローラを備えることを特徴とする、付記１に記載のフラッシュメモリディスク装置。
【００６４】
（付記５）  フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し、
受信された前記書き込みデータに対してＥＣＣコントローラが縦方向および横方向ＥＣＣコードを生成して付加し、
前記ＥＣＣコードを付加された前記書き込みデータを前記マイクロプロセッサが前記複数の記憶素子に記憶させることを特徴とするデータ記憶制御方法。
【００６５】
（付記６）前記上位装置からの読み出し命令に応じて、前記マイクロプロセッサが前記複数の記憶素子に記憶されている読み出しデータを読み出し、
前記読み出しデータの前記縦方向および横方向ＥＣＣコードを前記ＥＣＣコントローラがチェックしてエラーの検出および訂正を行い、
前記エラーの検出および訂正の行われた前記読み出しデータを前記マイクロプロセッサが前記インターフェイスコントローラを介して前記上位装置に送信することを特徴とする、付記５に記載のデータ記憶制御方法。
【００６６】
（付記７）  フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
前記フラッシュメモリディスク装置の備えるコンピュータに、
上位装置から書き込みデータを受信する手順、
受信された前記書き込みデータに対して縦方向および横方向ＥＣＣコードを生成して付加する手順、
および前記ＥＣＣコードを付加された前記書き込みデータを前記複数の記憶素子に記憶させる手順
を実行させることを特徴とするデータ記憶制御プログラム。
【００６７】
（付記８）  前記上位装置からの読み出し命令に応じて、前記複数の記憶素子に記憶されている読み出しデータを読み出す手順、
前記読み出しデータの前記縦方向および横方向ＥＣＣコードをチェックしてエラーの検出および訂正を行う手順、
および前記エラーの検出および訂正の行われた前記読み出しデータを前記上位装置に送信する手順
をさらに実行させることを特徴とする、付記７に記載のデータ記憶制御プログラム。
【産業上の利用可能性】
【００６８】
本発明は、コンピュータの外部記憶装置に対して幅広く適用して、データの信頼性を向上させる効果を発揮することが可能である。
【符号の説明】
【００６９】
１０、３１０  フラッシュメモリディスク装置
１１  ポート
１２  インターフェイスコントローラ
１３  ローカルメモリ
１４  ＭＰＵ
１５  ＥＣＣコントローラ
１５ａ  縦方向ＥＣＣ生成回路
１５ｂ  横方向ＥＣＣ生成回路
１６、１７  記憶素子
３１８  ＣＲＣコントローラ
【図１】
2013205853.tif 000003
【図２】
2013205853.tif 000004
【図３】
2013205853.tif 000005
【図４】
2013205853.tif 000006
【図５】
2013205853.tif 000007
【図６】
2013205853.tif 000008
【図７】
2013205853.tif 000009
【図８】
2013205853.tif 000010
【図９】
2013205853.tif 000011
【図１０】
2013205853.tif 000012