(57)【要約】【課題】記憶装置の信頼性を向上させる。【解決手段】複数の不揮発性メモリと複数の不揮発性メモリを制御するメモリ制御部とを備え、メモリ制御部と複数の不揮発性メモリとは共通のアドレス／データバスで結ばれており、メモリ制御部と複数の不揮発性メモリの各々とは複数の不揮発性メモリの中からいずれか所定の不揮発性メモリを選択するための選択用信号線でそれぞれ個別に接続されており、メモリ制御部は、ホストから受領した第１ライトデータを書き込む場合、選択用信号線を用いて複数の不揮発性メモリの中から書き込み先の不揮発性メモリを選択し、選択した書き込み先の不揮発性メモリを識別するための識別情報を含む冗長データを第１ライトデータに付加して第２ライトデータを生成し、第２ライトデータを共通のアドレス／データバスを介して書き込み先の不揮発性メモリに書き込む。【選択図】図１
2013218565.tif 000002
【特許請求の範囲】
【請求項１】
複数の不揮発性メモリと、前記複数の不揮発性メモリを制御するメモリ制御部と、を備える記憶装置であって、
前記メモリ制御部と前記複数の不揮発性メモリとは、共通のアドレス／データバスで結ばれており、
前記メモリ制御部と前記複数の不揮発性メモリの各々とは、前記複数の不揮発性メモリの中からいずれか所定の不揮発性メモリを選択するための選択用信号線でそれぞれ個別に接続されており、
前記メモリ制御部は、ホストから受領した第１ライトデータを不揮発性メモリに書き込む場合、前記選択用信号線を用いて前記複数の不揮発性メモリの中から書き込み先の不揮発性メモリを選択し、選択した前記書き込み先の不揮発性メモリを識別するための識別情報を含む冗長データを前記第１ライトデータに付加して第２ライトデータを生成し、前記第２ライトデータを前記共通のアドレス／データバスを介して前記書き込み先の不揮発性メモリに書き込む
記憶装置。
【請求項２】
前記メモリ制御部は、前記第２ライトデータを不揮発性メモリから読み出す場合、前記選択用信号線を用いて読み出し先の不揮発性メモリを選択し、Ａ）前記共通のアドレス／データバスを通じて前記読み出し先として選択した不揮発性メモリから取得した前記第２ライトデータの前記冗長データに含まれる識別情報が、前記読み出し先として選択した不揮発性メモリの識別情報と一致するか否かを判定し、当該判定が一致する場合、前記第２ライトデータを正常と判定し、当該判定が一致しない場合、前記第２ライトデータを異常と判定する
請求項１記載の記憶装置。
【請求項３】
前記冗長データには、前記第１ライトデータ及び前記識別情報を含むデータの誤りを検出するための誤り検出情報が更に含まれており、
前記メモリ制御部は、Ｂ）前記誤り検出情報を用いて前記第１ライトデータ及び前記識別情報を含むデータに誤りが有るか否かを判定し、当該判定において誤りが無いと判定された場合に、上記Ａ）を実行する
請求項２記載の記憶装置。
【請求項４】
前記冗長データには、前記第１ライトデータと前記識別情報と前記誤り検出情報とを含むデータの誤りを訂正するための誤り訂正情報が更に含まれており、
前記メモリ制御部は、前記誤り訂正情報を用いて前記第１ライトデータと前記識別情報と前記誤り検出情報とを含むデータの誤りを訂正した後に、上記Ｂ）を実行する
請求項３記載の記憶装置。
【請求項５】
前記識別情報は、前記複数の不揮発性メモリの各々に対応するビットフラグの列であり、
前記メモリ制御部は、前記第１ライトデータを不揮発性メモリに書き込む場合、書き込み先に選択した不揮発性メモリに対応するビットフラグのみを有効にした識別情報を生成し、
前記メモリ制御部は、前記第２ライトデータを不揮発性メモリから読み出す場合、上記Ａ）において、前記共通のアドレス／データバスを通じて取得した前記識別情報の有効ビットフラグが、読み出し先として選択した不揮発性メモリに対応するビットフラグであるか否かを判定する
請求項２乃至４の何れかに記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置の技術に関する。
【背景技術】
【０００２】
フラッシュメモリを備える記憶装置が存在する。しかし、フラッシュメモリは、構造上、読み出したデータに誤りが含まれる可能性がある。そこで、フラッシュメモリデバイスから読み出すデータ内容の誤りを検出及び訂正する技術がある。例えば、フラッシュメモリに書き込むデータに誤り訂正符号（ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）)を付加して書き込み、フラッシュメモリからデータを読み出す場合にその誤り訂正符号を用いてデータ内容の誤りを訂正する技術がある。また、例えば、２つのフラッシュメモリを用いてミラーリング構成を作り、各フラッシュメモリデバイスからデータを読み出す際、それら２つのデータを比較し、一致した場合にそのデータを正常なデータと判断する技術がある（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２５７５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
フラッシュメモリ等の不揮発性メモリを複数備える記憶装置の場合、上述のように読み出したデータ内容に誤りが含まれる可能性に加えて、次のような障害が発生する可能性が考えられる。つまり、複数の不揮発性メモリを備える記憶装置において、選択した不揮発性メモリにデータを書き込む場合に、障害により、別の不揮発性メモリにもそのデータが誤って書き込まれてしまう可能性がある。もしこのような障害が発生すると、記憶装置の別の不揮発性メモリからデータを読み出した場合に、その誤って書き込まれたデータが正しいデータとして読み出されてしまう虞がある。
【０００５】
本発明の目的は、不揮発性メモリから読み出すデータの信頼性を高める記憶装置を提供することにある。本発明の他の目的は、不揮発性メモリから読み出したデータが、誤って書き込まれたデータであるか否かを検知する記憶装置を提供することにある。
【課題を解決するための手段】
【０００６】
記憶装置は、複数の不揮発性メモリと、複数の不揮発性メモリを制御するメモリ制御部と、を備える。メモリ制御部と複数の不揮発性メモリとは、共通のアドレス／データバスで結ばれている。メモリ制御部と複数の不揮発性メモリの各々とは、複数の不揮発性メモリの中からいずれか所定の不揮発性メモリを選択するための選択用信号線でそれぞれ個別に接続されている。メモリ制御部は、ホストから受領した第１ライトデータを書き込む場合、選択用信号線を用いて複数の不揮発性メモリの中から書き込み先の不揮発性メモリを選択し、選択した書き込み先の不揮発性メモリを識別するための識別情報を含む冗長データを第１ライトデータに付加して第２ライトデータを生成し、第２ライトデータを共通のアドレス／データバスを介して書き込み先の不揮発性メモリに書き込む。
【図面の簡単な説明】
【０００７】
【図１】記憶装置１１のハードウェア構成の一例を示すブロック図である。
【図２】ＦＭチップ２５からデータを読み出す際に発生し得る問題を説明するための模式図である。
【図３】ＦＭチップ２５に記憶されるデータの構成図の一例である。
【図４】ＦＭチップ２５にデータを書き込む処理を示すフローチャートである。
【図５】ＦＭチップ２５からデータを読み出す処理を示すフローチャートである。
【発明を実施するための形態】
【０００８】
本実施形態は、複数の不揮発性半導体メモリの或る１つの不揮発性半導体メモリからデータを読み出す際、そのデータが正しい不揮発性半導体メモリから読み出されたものであるか否かを判定できるようにすることを特徴とする。以下、本発明に係る一実施形態を、図面を用いて説明する。
【０００９】
図１は、記憶装置１１のハードウェア構成の一例を示すブロック図である。記憶装置１１は、コンピュータプログラム（以下「プログラム」という）を実行するＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０と、ホスト１０との通信を制御するホストＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）制御部２２とを備える。記憶装置１１は、プログラムを格納するプログラム格納用メモリ２３と、プログラム実行時にデータを保持するメインメモリ２４とを備える。記憶装置１１は、記憶媒体としてデータを記憶する複数のＦＭ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）チップ２５と、複数のＦＭチップ２５との通信を制御するメモリＩ／Ｆ制御部２１とを備える。
【００１０】
ホストＩ／Ｆ制御部２２と、ＭＰＵ２０と、プログラム格納用メモリ２３と、メモリＩ／Ｆ制御部２１と、メインメモリ２４とは、双方向にデータ伝送可能な制御用バス３２で結ばれている。制御用バス３２は、シリアルバス及びパラレルバスの何れであっても良い。
【００１１】
メモリＩ／Ｆ制御部２１と複数のＦＭチップ２５ａ、２５ｂ、２５ｃとは、双方向にデータ伝送可能な共通のアドレス／データバスであるＦＭチップ用バス３０で結ばれている。ＦＭチップ用バス３０は、シリアルバス及びパラレルバスの何れであっても良い。パラレルバスの場合、アドレスとデータを別のバスで伝送する構成であっても、アドレスとデータを共通のバスで伝送する構成であっても良い。ＦＭチップ２５ａ、２５ｂ、２５ｃをまとめてＦＭチップ２５ということがある。
【００１２】
メモリＩ／Ｆ制御部２１と、各ＦＭチップ２５ａ、２５ｂ、２５ｃとは、それぞれ独立したＣＥ信号線（ＦＭチップ２５の選択用の信号線）２９ａ、２９ｂ、２９ｃで結ばれている。ＣＥ信号線２９ａ，２９ｂ，２９ｃをまとめてＣＥ信号線２９ということがある。ＣＥ信号線２９が有効（アクティブ）な状態にあることをアサートと言い、無効（インアクティブ）な状態にあることをネゲートと言う。ＣＥ信号線２９は、電圧レベルの高い状態をアサート、電圧レベルの低い状態をネゲートと設定されても良いし、逆に、電圧レベルの低い状態をアサート、電圧レベルの高い状態をネゲートと設定されても良い。
【００１３】
ホストＩ／Ｆ制御部２２は、記憶装置１１の外部のホスト１０と、双方向にデータ伝送可能なホスト用バス１２で結ばれている。ホスト用バス１２は、シリアルバス及パラレルバスの何れであっても良い。
【００１４】
プログラム格納用メモリ２３には、ＭＰＵ２０で実行されるプログラムが格納される。プログラム格納用メモリ２３は、例えば、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−ｏｎｌｙ  Ｍｅｍｏｒｙ）又はＦＭチップ等の不揮発性半導体メモリで構成される。
【００１５】
メインメモリ２４は、ＭＰＵ２０においてプログラムが実行される際に、ワークメモリとして使用される。メインメモリ２４は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性半導体メモリで構成される。
【００１６】
ＭＰＵ２０は、記憶装置１１全体の制御を行う。ＭＰＵ２０は、プログラム格納用メモリ２３からプログラムを読み出して実行する。
【００１７】
ホストＩ／Ｆ制御部２２は、ホスト１０と記憶装置１１との間でホスト用バス１２を介して伝送されるデータを制御する。ホストＩ／Ｆ制御部２２は、例えば、次のような処理をする。ホストＩ／Ｆ制御部２２は、ホスト用バス１２を介して、ホスト１０からデータを受信すると、その旨をＭＰＵ２０に通知する。ＭＰＵ２０は、ホストＩ／Ｆ制御部２２の所定のレジスタを確認してホスト１０からの要求を解釈し、その解釈に基づいてホストＩ／Ｆ制御部２２に指示を出す。
【００１８】
ホストＩ／Ｆ制御部２２は、例えば、ＭＰＵ２０からデータの読み出し指示を受けた場合、メモリＩ／Ｆ制御部２１に対して、そのデータの読み出し指示を出す。メモリＩ／Ｆ制御部２１は、その読み出し指示を受けて、ＦＭチップ２５からデータを読み出す。そして、ホストＩ／Ｆ制御部２２は、メモリＩ／Ｆ制御部２１が読み出したデータを、ホスト用バス１２を介して、ホスト１０に送信する。
【００１９】
ホストＩ／Ｆ制御部２２は、例えば、ＭＰＵ２０からデータの書き込み指示を受けた場合、メモリＩ／Ｆ制御部２１に対して、そのデータの書き込み指示を出す。メモリＩ／Ｆ制御部２１は、その書き込み指示を受けて、ＦＭチップ２５にデータを書き込む。メモリＩ／Ｆ制御部２１は、書き込みの成否をホストＩ／Ｆ制御部２２に返す。ホストＩ／Ｆ制御部２２は、その成否応答を、ホスト用バス１２を介して、ホスト１０に送信する。
【００２０】
ＦＭチップ２５は、不揮発性半導体メモリで構成され、電力が供給されない状態であってもデータを保持することができる。ＦＭチップ２５は、当該ＦＭチップ２５がメモリＩ／Ｆ制御部２１に選択された場合のみデータの書き込み、読み出し及び消去をする。以下、書き込み、読み出し及び消去をまとめて「書き込み等」という場合がある。つまり、ＦＭチップ２５は、当該ＦＭチップ２５に結ばれているＣＥ信号線２９がアサートされた場合のみ、データの書き込み等をする。ＦＭチップ２５に対する書き込み等の処理については後述する。本実施形態は、ＮＡＮＤ型のＦＭチップ２５を想定している。しかし、ＦＭチップ２５は、他の構成（例えば、ＮＯＲ型）であっても良い。
【００２１】
メモリＩ／Ｆ制御部２１は、ＭＰＵ２０の指示に従って、ホストＩ／Ｆ制御部２２及びプログラム格納用メモリ２３及びメインメモリ２４と、複数のＦＭチップ２５との間のデータの送受信を制御する。メモリＩ／Ｆ制御部２１と、複数のＦＭチップ２５とは、共通のＦＭチップ用バス３０で接続されている。つまり、メモリＩ／Ｆ制御部２１から送信されたデータは、共通のＦＭチップ用バス３０に接続されている全てのＦＭチップ２５に到達する。したがって、メモリＩ／Ｆ制御部２１は、データの書き込み等の対象のＦＭチップ２５を選択する。つまり、メモリＩ／Ｆ制御部２１は、データの書き込み等の対象のＦＭチップ２５に接続されているＣＥ信号線２９をアサートする。これにより、アサートされたＦＭチップ２５のみが書き込み等を行う。次に、書き込み等の処理について更に説明する。
【００２２】
メモリＩ／Ｆ制御部２１が、或るＦＭチップ２５に記憶されている記憶データ７０を読み出す場合について説明する。記憶データ７０は、後に図３で説明するように、論理ブロック７１と冗長データ７２とを含む。メモリＩ／Ｆ制御部２１は、記憶データ７０を保持するＦＭチップ２５に接続されているＣＥ信号線２９をアサートする。
【００２３】
そして、メモリＩ／Ｆ制御部２１は、ＦＭチップ用バス３０を介して、読み出しを要求するデータ（以下「読み出し要求」という）を送信する。この送信された読み出し要求は、ＦＭチップ用バス３０に接続されている全てのＦＭチップ２５に到達する。アサートされているＦＭチップ２５は、この読み出し要求を実行する。アサートされていないＦＭチップ２５は、この読み出し要求を実行しない。つまり、アサートされているＦＭチップ２５は、読み出し要求が示す記憶データ７０を自己のＦＭチップ２５から読み出し、ＦＭチップ用バス３０を介して、メモリＩ／Ｆ制御部２１に送信する。
【００２４】
これにより、メモリＩ／Ｆ制御部２１は、ＦＭチップ２５から所望の記憶データ７０を読み出すことができる。メモリＩ／Ｆ制御部２１は、記憶データ７０に含まれる冗長データ７２についてＥＣＣ処理及びＣＲＣ処理等を実行し、論理ブロック７１を抽出する。メモリＩ／Ｆ制御部２１は、読み出した論理ブロック７１を復元してメインメモリ２４に格納する。メモリＩ／Ｆ制御部２１は、復元したデータをホストＩ／Ｆ制御部２２に転送する旨の指示をＭＰＵ２０から受けると、メインメモリ２４に格納した復元データをホストＩ／Ｆ制御部２２に転送する。
【００２５】
メモリＩ／Ｆ制御部２１が、或るＦＭチップ２５の記憶データ７０を消去する場合は、上述の読み出し要求を送信する代わりに、消去を要求するデータを送信することによって、アサートされたＦＭチップ２５の所定の領域のデータが消去される。
【００２６】
メモリＩ／Ｆ制御部２１が、或るＦＭチップ２５にデータを書き込む場合について説明する。ここでは、書き込み用のデータがメインメモリ２４に格納された後からの処理を説明する。メモリＩ／Ｆ制御部２１は、メインメモリ２４から書き込み用のデータを読み出す。メモリＩ／Ｆ制御部２１は、ＣＲＣ処理及びＥＣＣ処理等を実行して、論理ブロック７１に冗長データ７２を付加した記憶データ７０を生成する。メモリＩ／Ｆ制御部２１は、記憶データ７０を書き込みたいＦＭチップ２５のＣＥ信号線２９をアサートする。
【００２７】
そして、メモリＩ／Ｆ制御部２１は、ＦＭチップ用バス３０を介して、書き込みを要求するデータ（以下「書き込み要求」という）と、記憶データ７０を送信する。この書き込み要求及び記憶データ７０は、ＦＭチップ用バス３０に接続されている全てのＦＭチップ２５に到達する。アサートされているＦＭチップ２５は、この書き込み要求を実行する。アサートされていないＦＭチップ２５は、この書き込み要求を実行しない。つまり、アサートされているＦＭチップ２５のみが、書き込み要求と共に送信された記憶データ７０を自己のＦＭチップ２５に書き込む。
【００２８】
メモリＩ／Ｆ制御部２１は、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）回路２１３を備える。ＣＲＣ回路２１３は、ＣＲＣ７５の生成処理と、ＣＲＣ７５を用いた誤り検出処理を行う。ＣＲＣ７５は、誤り検出情報と言っても良い。メモリＩ／Ｆ制御部２１は、ＦＭチップ２５にデータを書き込む際、ＣＲＣ回路２１３を用いてＣＲＣを生成し、冗長データ７２に含ませる。メモリＩ／Ｆ制御部２１は、ＦＭチップ２５からデータを読み出す際、冗長データ７２からＣＲＣを抽出し、ＣＲＣ回路２１３を用いてデータの誤りを検出する。
【００２９】
メモリＩ／Ｆ制御部２１は、ＥＣＣ回路２１２を備える。ＥＣＣ回路２１２は、ＥＣＣ７６の生成処理と、ＥＣＣ７６を用いた誤り訂正処理を行う。ＥＣＣ７６は、誤り訂正情報と言っても良い。メモリＩ／Ｆ制御部２１は、ＦＭチップ２５にデータを書き込む際、ＥＣＣ回路２１２を用いてＥＣＣ７６を生成し、冗長データ７２に含ませる。メモリＩ／Ｆ制御部２１は、ＦＭチップ２５からデータを読み出す際、冗長データ７２からＥＣＣを抽出し、ＥＣＣ回路２１２を用いてデータ誤りを訂正する。
【００３０】
この図１に示すような構成において、或る問題が発生し得る。以下、その問題について説明する。
【００３１】
図２は、ＦＭチップ２５からデータを読み出す際に発生し得る問題を説明するための模式図である。図２は、障害によってＣＥ信号線２９ｃが短絡している状態である。つまり、図２に示すＦＭチップ２５ｃは、常に選択状態（アサート状態）となっている。
【００３２】
図２（ａ）は、ＣＥ信号線２９ｃが短絡しているときに、ＦＭチップ２５ａの所定領域のデータを消去する場合の動作である。メモリＩ／Ｆ制御部２１は、ＣＥ信号線２９ａをアサートした後、ＦＭチップ用バス３０に所定領域の消去要求を送信する。しかし、ＣＥ信号線２９ｃが障害によりアサートされているため、その所定領域の消去要求は、ＦＭチップ２５ａだけでなく、ＦＭチップ２５ｃでも実行されてしまう。つまり、ＦＭチップ２５ｃにおいて、本来消去されるべきでない所定領域のデータが消去されてしまう。
【００３３】
図２（ｂ）は、上記図２（ａ）の後、ＦＭチップ２５ａの消去した所定領域に新たにデータを書き込む場合の動作である。メモリＩ／Ｆ制御部２１は、ＣＥ信号線２９ａをアサートした後、ＦＭチップ用バス３０に所定領域への書き込み要求を送信する。しかし、ＣＥ信号線２９ｃが障害によりアサートされているため、その所定領域への書き込み要求は、ＦＭチップ２５ａだけでなく、ＦＭチップ２５ｃでも実行されてしまう。つまり、ＦＭチップ２５ｃに、本来書き込まれるべきでない誤ったデータが所定領域に書き込まれてしまう。
【００３４】
図２（ｃ）は、上記図２（ｂ）においてＦＭチップ２５ｃの誤ったデータが書き込まれている所定領域からデータを読み出す場合の動作である。メモリＩ／Ｆ制御部２１は、ＣＥ信号線２９ｃをアサートした後、ＦＭチップ２５ｃ用バスに、所定領域からの読み出し要求を送信する。この場合、メモリＩ／Ｆ制御部２１は、ＦＭチップ２５ｃの所定領域から誤ったデータを読み出してしまう。なぜなら、ＦＭチップ２５ｃの所定領域に本来存在すべき正しいデータは、上記図２（ａ）によって誤って消去されており、その所定領域には上記図２（ｂ）において誤ったデータが書き込まれてしまっているからである。
【００３５】
この図２（ｃ）において読み出された誤ったデータは、ＥＣＣ回路２１２でもＣＲＣ回路２１３でもそのデータが誤ったものであることを検出できない。なぜなら、読み出したデータの値に誤りが存在しているわけではないからである。したがって、上述のようなＣＥ信号線２９の短絡の障害が発生した記憶装置１１は、ホスト１０に本来の正しいデータとは全く異なる誤ったデータを返してしまう虞がある。そこで、以下に、この問題を解決する本発明に係る実施形態を説明する。
【００３６】
図３は、ＦＭチップ２５に記憶されるデータ構成の一例を示すデータ構成図である。ＦＭチップ２５に書き込まれる「第２ライトデータ」としての記憶データ７０は、論理ブロックデータ（以下「論理ブロック」という）７１と冗長データ７２とから構成される。
【００３７】
ホスト１０から書き込み要求された「第１ライトデータ」としてのライトデータは、所定のサイズ（例えば、５１２ｂｙｔｅ）の論理ブロック７１を１つ以上含む。図３では、１つの論理ブロックのみ示す。ライトデータを構成するデータ単位とＦＭチップ２５への書込み単位とは、異なる。例えば、ＦＭチップ２５は、複数のブロック（論理ブロックとは異なる）を有し、各ブロックは複数のページを有し、それらページ単位でデータを読み書きできるようになっている。データの消去は、複数ページから成るブロックの単位で行われる。
【００３８】
冗長データ７２は、論理ブロック７１毎に付与される所定のサイズのデータである。冗長データ７２は、ＣＥ信号線２９の短絡をチェックするためのＣＥ短絡チェックコード７３と、論理ブロック７１を管理するための相対ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）７４と、ＣＲＣ７５と、ＥＣＣ７６とから構成される。
【００３９】
ＣＥ短絡チェックコード７３は、上記図２において説明したように、ＣＥ信号線２９の短絡をチェックするためのコードである。ＣＥ短絡チェックコード７３は、各ＦＭチップ２５を識別するための識別情報を保持する。つまり、メモリＩ／Ｆ制御部２１は、データを書き込む際に、書き込み先のＦＭチップ２５に対応する識別情報をＣＥ短絡チェックコード７３に保持させる。そして、メモリＩ／Ｆ制御部２１は、データを読み出す際に、読み出し先として選択（アサート）したＦＭチップ２５に対応する識別情報と、読み出したデータのＣＥ短絡チェックコード７３に保持されている識別情報とを比較して、読み出したデータが正しいＦＭチップ２５に書き込まれたものであるか否かを判定する。メモリＩ／Ｆ制御部２１は、識別情報が一致する場合は、読み出したデータは正しいＦＭチップ２５から読み出したデータであると判定し、識別情報が不一致の場合は、読み出したデータは誤った（つまり、障害によりアサートされた）ＦＭチップ２５から読み出したデータであると判定する。
【００４０】
ＣＥ短絡チェックコード７３は、例えば、各ＦＭチップ２５に対応するビットフラグ列７７で構成される。つまり、ビットフラグ列７７の各ビットフラグ７８ａ，７８ｂ，７８ｃにそれぞれ、ＦＭチップ２５ａ、２５ｂ、２５ｃを対応付ける。例えば、メモリＩ／Ｆ制御部２１は、ＦＭチップ２５ａにデータを書き込む際に、書き込み先として選択（アサート）したＦＭチップ２５ａに対応するビットフラグ７８ａのみに「１」を設定し、他のビットフラグ７８ｂ及び７８ｃに「０」を設定してデータを書き込む。メモリＩ／Ｆ制御部２１は、ＦＭチップ２５ａからデータを読み出す際、読み出し先として選択したＦＭチップ２５ａに対応するビットフラグ７８ａのみに「１」が設定されているか否かを判定する。メモリＩ／Ｆ制御部２１は、この判定が肯定的な場合は、読み出したデータは正しいＦＭチップ２５から読み出したデータであると判断し、この判定が否定的な場合は、読み出したデータは誤ったＦＭチップ２５から読み出したデータであると判定する。なお、各ＦＭチップ２５を区別できる限り、ＣＥ短絡チェックコード７３はどのようなデータ構成であっても良い。例えば、ＣＥ短絡チェックコード７３に、ＦＭチップ２５に割り当てた番号等を記憶させても良い。
【００４１】
相対ＬＢＡ７４は、論理ブロック７１を管理するための情報である。つまり、相対ＬＢＡ７４は、論理ブロック７１からホスト１０に提供するデータを復元する際に用いられる。
【００４２】
ＣＲＣ７５は、データの誤りを検出するために用いられるコードである。ＣＲＣ回路２１３は、論理ブロック７１、ＣＥ短絡チェックコード７３、及び相対ＬＢＡ７４に対するＣＲＣ７５を生成する。つまり、ＣＲＣ回路２１３は、論理ブロック７１、ＣＥ短絡チェックコード７３、及び相対ＬＢＡ７４におけるデータの誤りを検出することができる。
【００４３】
ＥＣＣ７６は、データの誤りを訂正するために用いられるコードである。ＥＣＣ回路２１２は、論理ブロック７１、ＣＥ短絡チェックコード７３、相対ＬＢＡ７４、及びＣＲＣ７５に対するＥＣＣ７６を生成する。つまり、ＥＣＣ回路２１２は、論理ブロック７１、ＣＥ短絡チェックコード７３、相対ＬＢＡ７４、及びＣＲＣ７５におけるデータの所定のビット誤りを訂正することができる。
【００４４】
図４は、ＦＭチップ２５にデータを書き込む処理を示すフローチャートである。
【００４５】
メモリＩ／Ｆ制御部２１は、相対ＬＢＡ７４を作成する（Ｓ１０１）。メモリＩ／Ｆ制御部２１は、ＣＥ短絡チェックコード７３を作成する。つまり、書き込み先として選択したＦＭチップ２５に対応するビットフラグ７８に「１」を設定する（Ｓ１０２）。
【００４６】
メモリＩ／Ｆ制御部２１は、ＣＲＣ回路２１３を用いて、ＣＲＣ７５を作成する（Ｓ１０３）。メモリＩ／Ｆ制御部２１は、ＥＣＣ回路２１２を用いて、ＥＣＣ７６を作成する（Ｓ１０４）。
【００４７】
メモリＩ／Ｆ制御部２１は、冗長データ７２を論理ブロック７１に付加した記憶データ７０を生成する（Ｓ１０５）。
【００４８】
メモリＩ／Ｆ制御部２１は、書き込み先のＦＭチップ２５のＣＥ信号線２９をアサートする（Ｓ１０６）。メモリＩ／Ｆ制御部２１は、書き込み要求と記憶データ７０を、ＦＭチップ用バス３０に出力する（Ｓ１０７）。
【００４９】
以上の処理により、ＣＥ信号線２９のアサートによって選択されたＦＭチップ２５に、記憶データ７０が書き込まれる。
【００５０】
図５は、ＦＭチップ２５からデータを読み出す際のデータチェック処理を示すフローチャートである。
【００５１】
メモリＩ／Ｆ制御部２１は、読み出し先のＦＭチップ２５のＣＥ信号線２９をアサートする（Ｓ２０１）。メモリＩ／Ｆ制御部２１は、読み出し要求をＦＭチップ用バス３０に出力する（Ｓ２０２）。そして、メモリＩ／Ｆ制御部２１は、ＦＭチップ用バス３０を介して、記憶データ７０を受け取る（Ｓ２０３）。
【００５２】
メモリＩ／Ｆ制御部２１は、ＥＣＣ回路２１２を用いて、ＥＣＣ７６の処理を実行し（Ｓ２０４）、データの内容に誤りが有るか否かを判定する（Ｓ２０５）。このステップＳ２０５において、データの内容に誤りが有ると判定した場合（Ｓ２０５：ＹＥＳ）、メモリＩ／Ｆ制御部２１は、ＥＣＣ回路２１２を用いて、誤り訂正処理を実行（Ｓ２０６）した後、ステップＳ２０７の処理に進む。ステップＳ２０５において、データの内容に誤りが無いと判定した場合（Ｓ２０５：ＮＯ）、メモリＩ／Ｆ制御部２１は、そのままステップＳ２０７の処理に進む。
【００５３】
ステップＳ２０７において、メモリＩ／Ｆ制御部２１は、ＣＲＣ回路２１３を用いて、ＣＲＣ７５の処理を実行し（Ｓ２０７）、データの内容に誤りが有るか否かを判定する（Ｓ２０８）。このステップＳ２０８において、データの内容に誤りが有ると判定した場合（Ｓ２０８：ＹＥＳ）、メモリＩ／Ｆ制御部２１は、ＣＲＣ７５が異状である（データの内容に誤りが有る）と判定し（Ｓ２０９）、当該処理を終了する。
【００５４】
ステップＳ２０８において、データの内容に誤りが無いと判定した場合（Ｓ２０８：ＮＯ）、メモリＩ／Ｆ制御部２１は、次に、ＣＥ短絡チェックコード７３は正しいか否かを判定する（Ｓ２１０）。つまり、メモリＩ／Ｆ制御部２１は、選択したＦＭチップ２５の識別情報と、ＣＥ短絡チェックコード７３に含まれる識別情報とが一致するか否かを判定する。このステップＳ２１０において、ＣＥ短絡チェックコード７３は正しいと判定した場合（Ｓ２１０：ＹＥＳ）、メモリＩ／Ｆ制御部２１は、読み出したデータは正常であると判断し（Ｓ２１１）、当該処理を終了する。ステップＳ２１０において、ＣＥ短絡チェックコード７３は正しくないと判定した場合（Ｓ２１０：ＮＯ）、メモリＩ／Ｆ制御部２１は、ＣＥ信号線２９の短絡異状と判断し（Ｓ２１２）、当該処理を終了する。
【００５５】
記憶装置１１は、ホスト１０からの読み出し要求に対して、上記ステップＳ２１１において正常と判断したデータのみを返す。つまり、記憶装置１１は、データの内容に誤りが無く、且つデータの読み出し先にも誤りが無いと判断したデータのみをホスト１０に返す
【００５６】
本実施形態によれば、例えば、以下のような効果を奏する。
（１）或るＣＥ信号線２９が障害によって短絡した場合に発生し得る、誤ったＦＭチップ２５から誤ったデータを読み出してホスト１０に返してしまうという問題を防止できる。つまり、記憶装置１１の信頼性を高めることができる。
【００５７】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【００５８】
１１…記憶装置  ２１…メモリＩ／Ｆ制御部  ２５…フラッシュメモリ用バス  ＣＥ信号線２９  ７３…ＣＥ短絡チェックコード
【図１】
2013218565.tif 000003
【図２】
2013218565.tif 000004
【図３】
2013218565.tif 000005
【図４】
2013218565.tif 000006
【図５】
2013218565.tif 000007