JP2013205853A - フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム - Google Patents

フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム Download PDF

Info

Publication number
JP2013205853A
JP2013205853A JP2012070595A JP2012070595A JP2013205853A JP 2013205853 A JP2013205853 A JP 2013205853A JP 2012070595 A JP2012070595 A JP 2012070595A JP 2012070595 A JP2012070595 A JP 2012070595A JP 2013205853 A JP2013205853 A JP 2013205853A
Authority
JP
Japan
Prior art keywords
data
ecc
flash memory
disk device
memory disk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012070595A
Other languages
English (en)
Inventor
Tomohiro Takahashi
知宏 高橋
Yasusuke Toda
庸介 戸田
Seiichi Amagasaki
誠一 尼崎
Shiro Sakurada
史郎 桜田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
NEC Engineering Ltd
Original Assignee
NEC Corp
NEC Engineering Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp, NEC Engineering Ltd filed Critical NEC Corp
Priority to JP2012070595A priority Critical patent/JP2013205853A/ja
Publication of JP2013205853A publication Critical patent/JP2013205853A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】単体の装置内部でデータのエラー訂正ができ、データの信頼性を確保することを可能とするフラッシュメモリディスク装置等を提供する。
【解決手段】フラッシュメモリディスク装置10は、フラッシュメモリによる複数の記憶素子16〜17と、上位装置との間のデータの送受信を行うインターフェイスコントローラ12と、インターフェイスコントローラを介して上位装置から受信した書き込みデータを記憶素子に記憶させると共に、記憶素子に記憶されたデータを読み出してこれをインターフェイスコントローラを介して読み出しデータとして上位装置に送信するマイクロプロセッサ14と、書き込みデータに対して縦方向および横方向ECCコードを生成および付加すると共にECCコードによって読み出しデータのエラーの検出および訂正を行うECCコントローラ15とを備える。
【選択図】図1

Description

本発明は、フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラムに関し、特に当該装置に記憶されるデータの信頼性(インテグリティ)を向上させるフラッシュメモリディスク装置等に関する。
コンピュータが社会の基盤としてすっかり浸透した現代では、データの損失はそれだけで重大な損失となる。そのため、特に業務において必要なデータを保護するために、複数台のハードディスクドライブを組み合わせたRAID(Redundant Arrays of Inexpensive Disks、またはRedundant Arrays of Independent Disks)構成が利用されることが多い。
一般にハードディスクドライブ(以後HDD)単体では、ハードディスクドライブ内にデータのインテグリティ(Integrity: 完全性、信頼性)を向上させる仕組み、例えばデータに対するパリティ付加やチェック機能を持っていない。そのため、複数のHDDを組み合わせて、冗長化された一台のHDDとして管理する技術であるRAID構成が用いられる。
図10は、一般的なRAID5構成について示す説明図である。ここでは4台のHDD901〜904を利用し、これらにA〜Cの3つのデータファイルを分散させて記憶させている。データファイルAをA1〜A4、データファイルBをB1〜B4、データファイルCをC1〜C4に各々分割し、分割したこれらのファイルをデータの誤り訂正符号であるパリティデータP1〜P4と共にHDD901〜904に分散させて記憶させている。
このようにデータを分散させて記憶させることにより、HDD901〜904のうちどれか1台が故障してデータの読み出しができなくなったとしても、データファイルA〜Cを復旧することができるというものである。ただし、HDD901〜904のうち2台以上が同時に故障すると、データは復旧できない。
その一方で、フラッシュメモリの記憶容量当たりの単価が安くなってきたことから、HDDをフラッシュメモリを利用したフラッシュメモリディスク装置に置き換えようとする動きが出てきている。フラッシュメモリディスク装置にはHDDと違って機械的な可動部が存在しないため、データの読み書きにかかる時間が短く、小型軽量であり、また機械的な故障が発生しにくいという利点がある。
フラッシュメモリディスク装置などに関連して、次のような各文献がある。その中でも特許文献1には、データを分割してECCコードを付加して複数のフラッシュメモリ素子に記憶するという記憶装置が記載されている。特許文献2には、垂直パリティをデータとは別の素子に記憶するという電子ディスク装置が記載されている。特許文献3には、ECC(Error Correcting Code)コードとCRC(Cyclic Redundancy Code)コードとを利用する電子ディスク装置が記載されている。
特許文献4には、フラッシュメモリではなくHDDであるが、ストライピングとCRCコードを利用したディスクアレイ装置が記載されている。特許文献5には、ストライピングとミラーリングを利用して複数のフラッシュメモリ素子にデータを記憶するというデジタルカメラが記載されている。
特開2000−020409号公報 特開2000−215073号公報 特開2001−167002号公報 特開2004−094547号公報 特開2004−320488号公報
HDDをフラッシュメモリディスク装置に置き換える場合に、記憶素子の劣化によって書き込み可能回数が数万回〜数十万回程度に制限されるという問題がある。この書き込み可能回数は、HDDのそれと比べても大きく劣っている。これはフラッシュメモリ素子の原理上、不可避の問題である。
しかしながら、フラッシュメモリディスク装置にはそのような記憶素子の劣化によるデータの破損を補う構造は、通常は特にない。特に、間欠的なデータ化けに弱く、そのようなデータ化けが発生した場合、すぐにメディアエラーとなる。
これに図10に示したRAID構造を組み合わせてデータの信頼性を確保するということも一応は考えられる。しかしながら、このような構成でも、1つのドライブでデータ化けが発生した場合でも上位装置によるデータ復旧が必要になり、これはレスポンスの低下につながる。また、同時に複数のドライブでデータ化けが発生した場合、やはり上記と同様のメディアエラーとなる。従って、フラッシュメモリディスク装置をRAID構造としても、HDDとの比較で書き込み可能回数の問題を解決するということにはならない。加えて、このような構造を構成するにはコストがかかる。以上の問題を解決しうる構成は、前述の特許文献1〜5には記載されていない。
本発明の目的は、単体の装置内部でデータのエラー訂正ができ、データの信頼性を確保することを可能とするフラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラムを提供することにある。
上記目的を達成するため、本発明に係るフラッシュメモリディスク装置は、フラッシュメモリによる複数の記憶素子と、上位装置との間のデータの送受信を行うインターフェイスコントローラと、インターフェイスコントローラを介して上位装置から受信した書き込みデータを記憶素子に記憶させると共に、記憶素子に記憶されたデータを読み出してこれをインターフェイスコントローラを介して読み出しデータとして上位装置に送信するマイクロプロセッサと、書き込みデータに対してECCコードを生成および付加すると共にECCコードによって読み出しデータのエラーの検出および訂正を行うECCコントローラとを備えると共に、ECCコントローラが書き込みデータから縦方向ECCコードを生成する縦方向ECC生成回路と、書き込みデータから横方向ECCコードを生成する横方向ECC生成回路からなることを特徴とする。
上記目的を達成するため、本発明に係るデータ記憶制御方法は、フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し、受信された書き込みデータに対してECCコントローラが縦方向および横方向ECCコードを生成して付加し、ECCコードを付加された書き込みデータをマイクロプロセッサが複数の記憶素子に記憶させることを特徴とする。
上記目的を達成するため、本発明に係るデータ記憶制御プログラムは、フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、フラッシュメモリディスク装置の備えるコンピュータに、上位装置から書き込みデータを受信する手順、受信された書き込みデータに対して縦方向および横方向ECCコードを生成して付加する手順、およびECCコードを付加された書き込みデータを複数の記憶素子に記憶させる手順を実行させることを特徴とする。
本発明は、上述したように、書き込みデータに対して縦方向および横方向ECCコードを付加してから複数の記憶素子に記憶させるように構成したので、RAIDと同等のデータ信頼性を単体のディスクドライブ内部で確保することが可能となる。これによって、単体の装置内部でデータのエラー訂正ができ、データの信頼性を確保することを可能であるという、優れた特徴を持つフラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラムを提供することができる。
本発明の第1の実施形態に係るフラッシュメモリディスク装置の構成を示す説明図である。 図1に示したフラッシュメモリディスク装置で、上位装置からフラッシュメモリディスク装置に入力されたデータを記憶素子に記憶する際の動作について示すフローチャートである。 図1に示したフラッシュメモリディスク装置で、記憶素子からデータを読み出す際の動作について示すフローチャートである。 図1に示したフラッシュメモリディスク装置で、ECCコントローラが縦方向および横方向ECCコードを付加して記憶素子に記憶させるデータのデータ構造の詳細な構成を示す説明図である。 図1に示したフラッシュメモリディスク装置で、ECCコントローラによる横方向ECC生成の動作を説明する説明図である。 図1に示したフラッシュメモリディスク装置で、横方向ECC生成回路が横方向ECCコードのチェックに使用するGF(2^8)変換表である。 本発明の第2の実施形態に係るフラッシュメモリディスク装置の構成を示す説明図である。 図7に示したフラッシュメモリディスク装置で、上位装置からフラッシュメモリディスク装置に入力されたデータを記憶素子に記憶する際の動作について示すフローチャートである。 図7に示したフラッシュメモリディスク装置で、記憶素子からデータを読み出す際の動作について示すフローチャートである。 一般的なRAID5構成について示す説明図である。
(第1の実施形態)
以下、本発明の第1の実施形態の構成について添付図1に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るフラッシュメモリディスク装置10は、フラッシュメモリによる複数の記憶素子16〜17と、上位装置との間のデータの送受信を行うインターフェイスコントローラ12と、に記憶させると共に、記憶素子に記憶されたデータを読み出してこれをインターフェイスコントローラを介して読み出しデータとして上位装置に送信するマイクロプロセッサ(MPU14)と、書き込みデータに対してECCコードを生成および付加すると共にECCコードによって読み出しデータのエラーの検出および訂正を行うECCコントローラ15とを備えると共に、ECCコントローラが書き込みデータから縦方向ECCコードを生成する縦方向ECC生成回路15aと、書き込みデータから横方向ECCコードを生成する横方向ECC生成回路15bからなる。
また、マイクロプロセッサ14は、ECCコードを付加された書き込みデータをバイト単位に分散させて複数の記憶素子16〜17の各々に記憶させる。そして、データを一時的に記憶するローカルメモリ13を備え、マイクロプロセッサ14が書き込みデータおよび読み出しデータをローカルメモリに一時記憶させる。
この構成を備えることにより、フラッシュメモリディスク装置10は、単体の装置内部でデータのエラー訂正を行い、データの信頼性を確保することが可能となる。
以下、これをより詳細に説明する。
図1は、本発明の第1の実施形態に係るフラッシュメモリディスク装置10の構成を示す説明図である。フラッシュメモリディスク装置10は、フラッシュメモリで構成される複数の記憶素子16および17を持つ。
フラッシュメモリディスク装置10は、記憶素子16および17の他には、上位装置(コンピュータ)との間のデータの入出力インターフェイスであるポート11と、インターフェイスコントローラ12と、ローカルメモリ13と、MPU(Micro Processing Unit)14と、ECC(Error Correcting Code)コントローラ15とを備える。
インターフェイスコントローラ12は、ポート11を経由したデータの転送をコントロールする。ローカルメモリ13は、転送されるデータを転送中に一時的に記憶する。MPU14は、DMA(Direct Memory Access)コントロールを行うプロセッサであり、インターフェイスコントローラ12とローカルメモリ13との間、ローカルメモリ13と記憶素子16および17との間のデータ転送を行う。
ECCコントローラ15は、MPU14からの指令により、MPU14から送られた書き込みデータから後述の縦方向ECCコードおよび横方向ECCコードを生成して該データに付加して出力する。ECCコントローラ15は、縦方向ECC生成回路15aおよび横方向ECC生成回路15bからなり、入力されたデータからそれぞれ縦方向ECCコードおよび横方向ECCコードを生成して付加する。この縦方向および横方向ECCコードを付加されたデータが、記憶素子16および17に記憶される。
その際、MPU14は、縦方向および横方向ECCコードを付加された対象データをバイト単位に分散させて、記憶素子16および17に記憶させる。これはいわゆるストライピング(RAID0)に相当する構成であり、この処理をバイト単位で行うという意味で、本明細書ではこれをバイトストライピングという。
図2は、図1に示したフラッシュメモリディスク装置10で、上位装置からフラッシュメモリディスク装置10に入力されたデータを記憶素子16および17に記憶する際の動作について示すフローチャートである。上位装置からのデータがポート11−インターフェイスコントローラ12−MPU14を経て入力されると(ステップS101)、MPU14はこのデータをローカルメモリ13に一時キャッシュとして記憶する(ステップS102)。
全てのデータがローカルメモリ13に一時記憶されるのを待ち合わせてから(ステップS103)、MPU14はこのデータを今度はECCコントローラ15に入力して縦方向および横方向ECCコードを付加させ(ステップS104)、そして記憶素子16および17にバイトストライピングで記憶させる(ステップS105)。
図3は、図1に示したフラッシュメモリディスク装置10で、記憶素子16および17からデータを読み出す際の動作について示すフローチャートである。上位装置からデータの読み出しを要求するコマンドが入力されると、MPU14は記憶素子16および17からデータを読み出し(ステップS201)、このデータをECCコントローラ15に入力して縦方向および横方向ECCコードをチェックさせる(ステップS202〜203)。
このデータに誤りがなければそのままローカルメモリ13に一時キャッシュとして記憶され(ステップS205)、誤りがあればECCコントローラ15がデータ訂正の処理を行ってからローカルメモリ13に一時記憶される(ステップS204〜205)。そしてMPU14は、ローカルメモリ13に一時記憶されたデータをインターフェイスコントローラ12−ポート11を介して上位装置に対して出力する(ステップS206)。
図4は、図1に示したフラッシュメモリディスク装置10で、ECCコントローラ15が縦方向および横方向ECCコードを付加して記憶素子16および17に記憶させるデータのデータ構造の詳細な構成を示す説明図である。
図4上部の、LBA(Logical Block Addressing)00〜31で示した部分は、元となる入力データである。LBA単体は520バイトである。またLBA00〜03などのように連続する4個のLBAは、それぞれ2キロバイト(520×4バイト)ごとのデータのかたまりである。ECCコントローラ15には、2KB単位でデータが入力される。
図4下部で、00000〜20007の数字5桁で表されるブロックは、元となる入力データが格納されるアドレスを表す。#0〜519行のチップ0〜7の各ブロックには、それぞれ1バイトのデータが格納される。
図4において、#520〜523行のChip0〜7の、S00〜S73で示した部分には横方向(チップ0〜7)の各列毎に、縦方向(#0〜#519列)の520バイトのデータから生成された縦方向ECCコード(S00〜S73)が、各々格納される。たとえばチップ0ではS00〜03の4バイトがECCコードであり、これがチップ0〜7の各チップ毎にそれぞれある。
図4において、チップ8〜Aの各列、E00,E10,E20で示した部分には縦方向(#0〜#519行)ごとに横方向(チップ0〜7)の各1バイトデータから生成された横方向ECCコード(E00,E10,E20)が格納される。たとえば#0行では、チップ0〜7の8バイトのデータ(00000,00001,00002,00003,00004,00005,00006,00007)から、チップ8〜Aの横方向ECCコード(E00,E10,E20)が生成されている。これが各行毎にそれぞれある。
図5は、図1に示したフラッシュメモリディスク装置で、ECCコントローラ15による横方向ECC生成の動作を説明する説明図である。8バイトのデータ(データ0〜7までの各横一列づつ)が入力された横方向ECC生成回路15bは、この8バイトのデータから横方向ECCコードを生成して付加し、記憶素子16および17に出力する。
次に、この横方向ECCコードの生成方法を説明する。図5のData0〜7で1が立っているビットを横列で全てxor(排他的論理和)したものが、ECC0〜2で1が立っているビットに対応している。従って、各横列で1ビットのECCコードが生成され、ECC0〜2で全部で24ビットのECCコードとなる。
Data0〜7とECC0〜2を送信データとする。例えば、ECC0のビット7の計算を行うと、ECC0[7]=D0[7]^D1[7]^D2[7]^D3[7]^D4[7]^D5[7]^D6[7]^D7[7]=0となり、この解である0がECC0[7]=1である場所に格納される。なお、本明細書の文中では「AのB乗」を「A^B」のように表記する。
次に、この横方向ECCコードのチェック方法を説明する。受信したデータとECCコードから、誤りの場所を特定するためのベクトルであるシンドローム(Syndrome)を生成する。シンドロームの生成方法は、受信したデータとECCコードのxorを求めることによって行う。例えば、Syndr0の計算を行うと、Syndr0[7]=D0[7]^D1[7]^D2[7]^D3[7]^D4[7]^D5[7]^D6[7]^D7[7]^ECC0[7]=0
Syndr0〜2から、以下のようにエラー状態を推定することができる。SundrSyndr0〜2が全て「0」であればエラー無しと推定できる。Syndr0〜2のうちの2つが「0」で1つだけが「1」ならばECC自身の化けと推定できる。それ以外の場合はデータ化けと推定できる。
図6は、図1に示したフラッシュメモリディスク装置10で、横方向ECC生成回路15bが横方向ECCコードのチェックに使用するGF(2^8)変換表である。図6のGF(2^8)変換表と、前述のシンドロームから、エラー位置と、エラーがシングル(1箇所エラー)であるかマルチ(複数個所エラー)であるかを判別することができる。
Syndr0〜2の各値から、GF(2^8)変換表で対応するαの指数部分をSxとし、iをデータ化けブロック位置、シングル/マルチ判断式をi=jとすると、iとjはI=S1−S0、j=254+S0−S2となり、i=jの場合1ブロックエラー、i≠jの場合マルチエラーとなる。
次にチェック後、1ブロックエラー箇所のデータとSyndr0をxorした結果が訂正後データとなる。図4の縦方向ECCも同様な方法で生成・チェックを行う。
(第1の実施形態の全体的な動作)
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係るデータ記憶制御方法は、フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置10にあって、上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し(図2・ステップS101)、受信された書き込みデータに対してECCコントローラが縦方向および横方向ECCコードを生成して付加し(図2・ステップS104)、ECCコードを付加された書き込みデータをマイクロプロセッサが複数の記憶素子に記憶させる(図2・ステップS105)。
また、上位装置からの読み出し命令に応じて、マイクロプロセッサが複数の記憶素子に記憶されている読み出しデータを読み出し(図3・ステップS201)、読み出しデータの縦方向および横方向ECCコードをECCコントローラがチェックしてエラーの検出および訂正を行い(図3・ステップS204〜5)、エラーの検出および訂正の行われた読み出しデータをマイクロプロセッサがインターフェイスコントローラを介して上位装置に送信する(図3・ステップS206)。
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるMPU14に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、DVD、CD、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
第1の効果は、単体ディスクドライブ内部のデータ化け発生頻度低減、データ損失低減によりデータの信頼性を高めることが可能なことである。その理由は、単体ディスクドライブ内部の記憶素子を磁気ディスクからフラッシュメモリに置き換え、このフラッシュメモリディスクドライブを用いてECC生成及びデータの正当性確認及びデータ訂正をしており、これによりディスクドライブ内部にRAIDを構成しているのと同等の効果が得られるからである。
第2の効果は、上位RAIDでのメディアエラー低減、延いてはサーバ・ストレージ全体のデータ損失低減を実現できることである。その理由は、単体ディスクドライブ自体で、従来のRAIDを構成したものと同等の効果が得られるので、単体ディスクドライブ内部でのデータ信頼性が極めて高くなっているからである。
第3の効果は、データ転送の高速化も同時に実現できることである。その理由は、データのリード及びライト動作においてデータをバイトストライピングしているからである。さらに、バイトストライピングにより、特定の記憶素子の故障があっても書き込まれたデータを保護することも可能となる。
(第2の実施形態)
本発明の第2の実施形態は、第1の実施形態の構成に加えて、ECCコントローラの前段に、書き込みデータに対してCRC(Cyclic Redundancy Check)コードを生成および付加するCRCコントローラを備えるものとした。
この構成によっても、第1の実施形態と同一の効果が得られるのに加えて、縦方向および横方向ECCコードだけでは検出できないエラーをCRCコードによって検出し、データの信頼性をさらに向上させることが可能となる。
以下、これをより詳細に説明する。
図7は、本発明の第2の実施形態に係るフラッシュメモリディスク装置310の構成を示す説明図である。フラッシュメモリディスク装置310は、第1の実施形態に係るフラッシュメモリディスク装置10の、ECCコントローラ15の前段にCRCコントローラ318を付加した構成となっている。
CRCコントローラ318は、MPU14からの指令により、MPU14から送られた書き込みデータからCRC(Cyclic Redundancy Check)コードを生成して該データに付加して出力する。ECCコントローラ15は、そのCRCコードの付加されたデータに対してさらに、前述の縦方向ECCコードおよび横方向ECCコードを生成して該データに付加する。このCRCコードと(縦方向および横方向)ECCコードとが生成されたデータが、MPU14からの指令により、前述のバイトストライピングで記憶素子16および17に記憶させる。
図8は、図7に示したフラッシュメモリディスク装置310で、上位装置からフラッシュメモリディスク装置310に入力されたデータを記憶素子16および17に記憶する際の動作について示すフローチャートである。図8は、図2に示した第1の実施形態の動作のステップS103と104との間に、CRCコントローラ318によって2KBまたは4KBごとの単位のデータからCRCコードを生成する(ステップS401)処理が付加されている以外は、図2と同一の工程で処理を行う。
図9は、図7に示したフラッシュメモリディスク装置310で、記憶素子16および17からデータを読み出す際の動作について示すフローチャートである。図9は、図3に示した第1の実施形態の動作のステップS205の前に、ECCコントローラ15から出力されたデータに対してCRCコントローラ318がCRCコードをチェックして(ステップS501)誤りが無ければローカルメモリ13に一時キャッシュとして記憶し、誤りがあればCRCコントローラ318がこれを訂正する処理を行って(ステップS502〜503)、やはりローカルメモリ13に記憶する処理が付加されている以外は、図3と同一の工程で処理を行う。
第1の実施形態では、書き込みデータに対して縦方向および横方向ECCコードを生成してから記憶素子16および17に書き込み、読み出し時にはこのECCコードによってデータエラーの有無をチェックし、エラーがある場合にはこれを訂正する。しかしながら、ECCコードではすべてのデータパターンにおいてエラーを100%検出できるわけではない。
そこで、第2の実施形態では、縦方向および横方向ECCコードとは異なるデータ単位でCRCコードを生成するCRCコントローラ318をさらに付加する構成とした。これによって、ECCコードでエラーを検出できないデータの組み合わせがあった場合でも、CRCコードからそのデータエラーを検出して訂正することが可能となる。
(実施形態の拡張)
以上の通り説明した第1および第2の実施形態には、その趣旨を改変しない範囲でさまざまな拡張が考えられる。以下、これについて説明する。
まず、前述の第1および第2の実施形態では、記憶素子を2つのみ備えるものとして説明したが、これを3つ以上としてもよい。その場合も、もちろん前述のバイトストライピングで、対象データをバイト単位に分散させて記憶させる。
また、フラッシュメモリ以外の種類の記憶素子に対して、これと同様の構造を備えるようにしてもよい。
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
(付記1) フラッシュメモリによる複数の記憶素子と、
上位装置との間のデータの送受信を行うインターフェイスコントローラと、
前記インターフェイスコントローラを介して前記上位装置から受信した書き込みデータを前記記憶素子に記憶させると共に、前記記憶素子に記憶されたデータを読み出してこれを前記インターフェイスコントローラを介して読み出しデータとして前記上位装置に送信するマイクロプロセッサと、
前記書き込みデータに対してECCコードを生成および付加すると共に前記ECCコードによって前記読み出しデータのエラーの検出および訂正を行うECCコントローラとを備えると共に、
前記ECCコントローラが前記書き込みデータから縦方向ECCコードを生成する縦方向ECC生成回路と、前記書き込みデータから横方向ECCコードを生成する横方向ECC生成回路からなることを特徴とするフラッシュメモリディスク装置。
(付記2) 前記マイクロプロセッサが、前記ECCコードを付加された前記書き込みデータをバイト単位に分散させて前記複数の記憶素子の各々に記憶させることを特徴とする、付記1に記載のフラッシュメモリディスク装置。
(付記3) データを一時的に記憶するローカルメモリを備え、
前記マイクロプロセッサが前記書き込みデータおよび読み出しデータを前記ローカルメモリに一時記憶させることを特徴とする、付記1に記載のフラッシュメモリディスク装置。
(付記4) 前記ECCコントローラの前段に、前記書き込みデータに対してCRCコードを生成および付加するCRCコントローラを備えることを特徴とする、付記1に記載のフラッシュメモリディスク装置。
(付記5) フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し、
受信された前記書き込みデータに対してECCコントローラが縦方向および横方向ECCコードを生成して付加し、
前記ECCコードを付加された前記書き込みデータを前記マイクロプロセッサが前記複数の記憶素子に記憶させることを特徴とするデータ記憶制御方法。
(付記6)前記上位装置からの読み出し命令に応じて、前記マイクロプロセッサが前記複数の記憶素子に記憶されている読み出しデータを読み出し、
前記読み出しデータの前記縦方向および横方向ECCコードを前記ECCコントローラがチェックしてエラーの検出および訂正を行い、
前記エラーの検出および訂正の行われた前記読み出しデータを前記マイクロプロセッサが前記インターフェイスコントローラを介して前記上位装置に送信することを特徴とする、付記5に記載のデータ記憶制御方法。
(付記7) フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
前記フラッシュメモリディスク装置の備えるコンピュータに、
上位装置から書き込みデータを受信する手順、
受信された前記書き込みデータに対して縦方向および横方向ECCコードを生成して付加する手順、
および前記ECCコードを付加された前記書き込みデータを前記複数の記憶素子に記憶させる手順
を実行させることを特徴とするデータ記憶制御プログラム。
(付記8) 前記上位装置からの読み出し命令に応じて、前記複数の記憶素子に記憶されている読み出しデータを読み出す手順、
前記読み出しデータの前記縦方向および横方向ECCコードをチェックしてエラーの検出および訂正を行う手順、
および前記エラーの検出および訂正の行われた前記読み出しデータを前記上位装置に送信する手順
をさらに実行させることを特徴とする、付記7に記載のデータ記憶制御プログラム。
本発明は、コンピュータの外部記憶装置に対して幅広く適用して、データの信頼性を向上させる効果を発揮することが可能である。
10、310 フラッシュメモリディスク装置
11 ポート
12 インターフェイスコントローラ
13 ローカルメモリ
14 MPU
15 ECCコントローラ
15a 縦方向ECC生成回路
15b 横方向ECC生成回路
16、17 記憶素子
318 CRCコントローラ

Claims (8)

  1. フラッシュメモリによる複数の記憶素子と、
    上位装置との間のデータの送受信を行うインターフェイスコントローラと、
    前記インターフェイスコントローラを介して前記上位装置から受信した書き込みデータを前記記憶素子に記憶させると共に、前記記憶素子に記憶されたデータを読み出してこれを前記インターフェイスコントローラを介して読み出しデータとして前記上位装置に送信するマイクロプロセッサと、
    前記書き込みデータに対してECCコードを生成および付加すると共に前記ECCコードによって前記読み出しデータのエラーの検出および訂正を行うECCコントローラとを備えると共に、
    前記ECCコントローラが前記書き込みデータから縦方向ECCコードを生成する縦方向ECC生成回路と、前記書き込みデータから横方向ECCコードを生成する横方向ECC生成回路からなることを特徴とするフラッシュメモリディスク装置。
  2. 前記マイクロプロセッサが、前記ECCコードを付加された前記書き込みデータをバイト単位に分散させて前記複数の記憶素子の各々に記憶させることを特徴とする、請求項1に記載のフラッシュメモリディスク装置。
  3. データを一時的に記憶するローカルメモリを備え、
    前記マイクロプロセッサが前記書き込みデータおよび読み出しデータを前記ローカルメモリに一時記憶させることを特徴とする、請求項1に記載のフラッシュメモリディスク装置。
  4. 前記ECCコントローラの前段に、前記書き込みデータに対してCRCコードを生成および付加するCRCコントローラを備えることを特徴とする、請求項1に記載のフラッシュメモリディスク装置。
  5. フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
    上位装置からインターフェイスコントローラを介してマイクロプロセッサが書き込みデータを受信し、
    受信された前記書き込みデータに対してECCコントローラが縦方向および横方向ECCコードを生成して付加し、
    前記ECCコードを付加された前記書き込みデータを前記マイクロプロセッサが前記複数の記憶素子に記憶させることを特徴とするデータ記憶制御方法。
  6. 前記上位装置からの読み出し命令に応じて、前記マイクロプロセッサが前記複数の記憶素子に記憶されている読み出しデータを読み出し、
    前記読み出しデータの前記縦方向および横方向ECCコードを前記ECCコントローラがチェックしてエラーの検出および訂正を行い、
    前記エラーの検出および訂正の行われた前記読み出しデータを前記マイクロプロセッサが前記インターフェイスコントローラを介して前記上位装置に送信することを特徴とする、請求項5に記載のデータ記憶制御方法。
  7. フラッシュメモリによる複数の記憶素子を備えたフラッシュメモリディスク装置にあって、
    前記フラッシュメモリディスク装置の備えるコンピュータに、
    上位装置から書き込みデータを受信する手順、
    受信された前記書き込みデータに対して縦方向および横方向ECCコードを生成して付加する手順、
    および前記ECCコードを付加された前記書き込みデータを前記複数の記憶素子に記憶させる手順
    を実行させることを特徴とするデータ記憶制御プログラム。
  8. 前記上位装置からの読み出し命令に応じて、前記複数の記憶素子に記憶されている読み出しデータを読み出す手順、
    前記読み出しデータの前記縦方向および横方向ECCコードをチェックしてエラーの検出および訂正を行う手順、
    および前記エラーの検出および訂正の行われた前記読み出しデータを前記上位装置に送信する手順
    をさらに実行させることを特徴とする、請求項7に記載のデータ記憶制御プログラム。
JP2012070595A 2012-03-27 2012-03-27 フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム Pending JP2013205853A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012070595A JP2013205853A (ja) 2012-03-27 2012-03-27 フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012070595A JP2013205853A (ja) 2012-03-27 2012-03-27 フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2013205853A true JP2013205853A (ja) 2013-10-07

Family

ID=49524931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012070595A Pending JP2013205853A (ja) 2012-03-27 2012-03-27 フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2013205853A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021092877A (ja) * 2019-12-09 2021-06-17 Necプラットフォームズ株式会社 サーバシステム、検出方法及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218754A (ja) * 1996-02-13 1997-08-19 Ekushingu:Kk データ記憶システム
JP2005202957A (ja) * 2004-01-12 2005-07-28 Hewlett-Packard Development Co Lp エラー訂正のためのデータの分割
JP2009080651A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 半導体記憶装置、及びその制御方法
JP2009211209A (ja) * 2008-02-29 2009-09-17 Toshiba Corp 半導体記憶装置、その制御方法、および誤り訂正システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218754A (ja) * 1996-02-13 1997-08-19 Ekushingu:Kk データ記憶システム
JP2005202957A (ja) * 2004-01-12 2005-07-28 Hewlett-Packard Development Co Lp エラー訂正のためのデータの分割
JP2009080651A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 半導体記憶装置、及びその制御方法
JP2009211209A (ja) * 2008-02-29 2009-09-17 Toshiba Corp 半導体記憶装置、その制御方法、および誤り訂正システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021092877A (ja) * 2019-12-09 2021-06-17 Necプラットフォームズ株式会社 サーバシステム、検出方法及びプログラム

Similar Documents

Publication Publication Date Title
US11941257B2 (en) Method and apparatus for flexible RAID in SSD
JP6882115B2 (ja) Ddr sdramインタフェイスのためのdram支援エラー訂正方法
US7984325B2 (en) Storage control device, data recovery device, and storage system
US8694865B2 (en) Data storage device configured to reduce buffer traffic and related method of operation
KR102102728B1 (ko) 스케일러블 스토리지 보호
KR101778782B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US8589761B2 (en) Apparatus and methods for providing data integrity
KR101298827B1 (ko) 반도체 디스크 및 시스템
CA2532766C (en) Data storage array
US9086983B2 (en) Apparatus and methods for providing data integrity
EP2171586B1 (en) System and method for error correction and detection in a memory system
US9063869B2 (en) Method and system for storing and rebuilding data
JP4114877B2 (ja) 不正データを検出するための装置、方法、及びプログラム
US8713410B2 (en) Data storage apparatus, memory control apparatus and method for controlling flash memories
US20100293418A1 (en) Memory device, data transfer control device, data transfer method, and computer program product
US20150143187A1 (en) Implementing enhanced performance with read before write to phase change memory
US20150200685A1 (en) Recording and reproducing device, error correction method, and control device
JP4469822B2 (ja) ディスクアレイ装置およびディスクアレイ装置のデータ管理方法
JP7249719B2 (ja) 共通の高ランダム・ビット・エラーおよび低ランダム・ビット・エラー修正ロジック
US20150143024A1 (en) Redundant array of independent modules
JP2011141857A (ja) Raidシステム
JP2013205853A (ja) フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム
JP2006323434A (ja) データ処理装置及びそのメモリ訂正方法
US7526714B2 (en) Apparatus for checking data coherence, raid controller and storage system having the same, and method therefor
WO2015134262A1 (en) Computing system with data protection mechanism and method of operation thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130711

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140311

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140708