(57)【要約】 【課題】不揮発性ランダムアクセスメモリにおいて、符号化率を向上できるとともに、スループットの低下を防止することが可能な半導体記憶装置を提供する。【解決手段】不揮発性ＲＡＭ１９は、ランダムアクセスが可能な複数の不揮発性メモリセルにより構成されている。ＥＣＣ回路１８は、不揮発性ＲＡＭに対する最小アクセス単位より大きいデータに、パリティデータを付与して、ＥＣＣフレームを生成する。制御部１１ａは、パリティデータが有効であることを示すフラグをＥＣＣフレームに付与する。制御部１１ａは、定期的にＥＣＣ回路により、ＥＣＣフレームのパリティデータを更新させ、フラグを再設定する。【選択図】図１
2013134595.tif 000002
【特許請求の範囲】
【請求項１】
ランダムアクセスが可能な複数の不揮発性メモリセルにより構成された不揮発性ＲＡＭと、
前記不揮発性ＲＡＭに対する最小アクセス単位より大きいデータに、パリティデータを付与して、ＥＣＣフレームを生成するＥＣＣ回路と、
前記パリティデータが有効であることを示すフラグを前記ＥＣＣフレームに付与する制御部と、を具備し、
前記制御部は、定期的に前記ＥＣＣ回路により、前記ＥＣＣフレームのパリティデータを更新させ、前記フラグを再設定することを特徴とする半導体記憶装置。
【請求項２】
ランダムアクセスが可能な複数の不揮発性メモリセルにより構成された不揮発性ＲＡＭと、
前記不揮発性ＲＡＭに対する最小アクセス単位より大きいデータに、パリティデータを付与して、ＥＣＣフレームを生成するＥＣＣ回路と、
前記パリティデータが有効であることを示すフラグを前記ＥＣＣフレームに付与する制御部と
を具備することを特徴とする半導体記憶装置。
【請求項３】
前記制御部は、定期的に前記ＥＣＣ回路により、前記ＥＣＣフレームのパリティデータを更新させ、前記フラグを再設定することを特徴とする請求項２記載の半導体記憶装置。
【請求項４】
前記制御部は、前記不揮発性ＲＡＭがビジー状態でなく、前記フラグが前記パリティデータの無効を示すとき、前記ＥＣＣ回路により、前記ＥＣＣフレームのパリティデータを再計算させ、前記フラグを有効状態に設定することを特徴とする請求項３記載の半導体記憶装置。
【請求項５】
前記制御部は、前記半導体記憶装置が接続されるホスト装置がスタンバイ状態であるとき、又は、前記不揮発性ＲＡＭがアイドル状態であるとき、前記ＥＣＣ回路により、前記ＥＣＣフレームのパリティデータを再計算させ、前記フラグを有効状態に設定する請求項４記載の半導体記憶装置。
【請求項６】
前記不揮発性ＲＡＭは、磁気ランダムアクセスメモリ（ＭＲＡＭ）と、抵抗性ランダムアクセスメモリ（ＲｅＲＡＭ）のいずれかであることを特徴とする請求項１又は５記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えば磁気ランダムアクセス（ＭＲＡＭ）や抵抗性ランダムアクセスメモリ（ＲｅＲＡＭ）のようなランダムアクセスが可能な不揮発性の半導体記憶装置に関する。
【背景技術】
【０００２】
次世代の不揮発性ＲＡＭとしてのＭＲＡＭやＲｅＲＡＭは、ランダムアクセスが可能なダイナミックＲＡＭ（ＤＲＡＭ）やスタティックＲＡＭ（ＳＲＡＭ）の代替技術として期待されている。
【０００３】
ところで、ランダムアクセスが可能なＤＲＡＭやＳＲＡＭにおいて、データのエラー訂正は、ワード単位に実行されている。つまり、ＤＲＡＭやＳＲＡＭは、ランダムアクセスが主体であるため、アクセス単位としてのワード単位でＥＣＣ処理が行なわれている。１ワードが３２ビットの場合、１ワードに４ビットのパリティビットが付加される。具体的には、例えば８ビットのデータに対して１ビットのパリティビットが用意され、例えば奇数パリティの場合、８ビットのデータに含まれる“１”の個数が偶数である場合、パリティデータとして“０”が付与され、“１”の個数が奇数である場合、パリティデータとして“１”が付与される。パリティ・チェックにおいて、データに含まれる“１”の個数が奇数である場合、そのデータはエラーとして検出される。エラーが検出された際、ＲＡＭがコンピュータのメインメモリである場合、システムが緊急停止され、例えばハードディスクからデータがＲＡＭに再転送される。
【０００４】
このように、ランダムアクセスメモリの場合、エラー訂正は、ワード単位であるため、ＮＡＮＤフラッシュメモリのように、ワード単位より大きなページ単位（又はブロック単位）でエラー訂正する場合に比べて、符号化率が低い。しかし、ランダムアクセスメモリにおいて、アクセス単位より大きなブロック単位でＥＣＣ処理を行う場合、ＥＣＣ処理を実行するために、ブロック単位にアクセスする必要がある。このため、ランダムアクセスが主体のメモリにも関わらず、結果としてメモリのスループットが低下してしまう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２３０４７５号公報
【特許文献２】特開２００６−２８５９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施形態は、不揮発性ランダムアクセスメモリにおいて、符号化率を向上できるとともに、スループットの低下を防止することが可能な半導体記憶装置を提供しようとするものである。
【課題を解決するための手段】
【０００７】
本実施形態の半導体記憶装置は、ランダムアクセスが可能な複数の不揮発性メモリセルにより構成された不揮発性ＲＡＭと、前記不揮発性ＲＡＭに対する最小アクセス単位より大きいデータに、パリティデータを付与して、ＥＣＣフレームを生成するＥＣＣ回路と、前記パリティデータが有効であることを示すフラグを前記ＥＣＣフレームに付与する制御部と、を具備し、前記制御部は、定期的に前記ＥＣＣ回路により、前記ＥＣＣフレームのパリティデータを更新させ、前記フラグを再設定することを特徴とする。
【図面の簡単な説明】
【０００８】
【図１】第１、第２の実施形態に適用されるメモリシステムを概略的に示す構成図。
【図２】図２（ａ）（ｂ）は、ＥＣＣ不揮発性ＲＡＭのＥＣＣフレームを示す図。
【図３】第１の実施形態に係るＥＣＣ処理の一例を示すフローチャート。
【図４】第２の実施形態に係るＥＣＣ処理の他の例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、実施の形態について、図面を参照して説明する。
【００１０】
図１は、第１、第２の実施形態に適用されるメモリシステムを概略的に示している。
【００１１】
メモリシステムは、例えばＳＤカードのような、半導体記憶装置としてのメモリデバイス１１と、ホスト２０により構成される。
【００１２】
メモリデバイス１１は、ホスト２０に接続されたときに電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。このメモリデバイス１１は、コントローラ１１ａを有している。
【００１３】
コントローラ１１ａは、例えばホストインタフェース（Ｉ／Ｆ）１２、ＣＰＵ１３、ＲＯＭ（Read only Memory）１４、ＲＡＭ（Random Access Memory）１５、バッファ１６、メモリインターフェース（Ｉ／Ｆ）１７、ＥＣＣ回路１８により構成されている。これらは、バスにより接続されている。メモリインターフェース１７には、不揮発性ＲＡＭ１９が接続されている。この不揮発性ＲＡＭ１９は、例えばＭＲＡＭ、又はＲｅＲＡＭにより構成されている。しかし、不揮発性ＲＡＭ１９は、ＭＲＡＭやＲｅＲＡＭに限定されるものではなく、その他の不揮発性ＲＡＭであってもよい。
【００１４】
ホストインタフェース１２は、コントローラ１１ａとホスト２０との間のインターフェース処理を行う。
【００１５】
メモリインターフェース１７は、コントローラ１１ａと不揮発性ＲＡＭ１９との間のインターフェース処理を行う。
【００１６】
ＣＰＵ１３は、メモリデバイス１１全体の動作を司るものである。このＣＰＵ１３は、ＲＯＭ１４の中に格納されているファームウェア（制御プログラム等）に基づき、所定の処理を実行する。すなわち、ＣＰＵ１３は、ホスト２０から例えばライト（書き込み）コマンド、リード（読み出し）コマンドを受けて不揮発性ＲＡＭ１９上の領域をアクセスしたり、バッファ１６を介してデータ転送処理を制御したり、ＥＣＣ回路１８を制御する。
【００１７】
ＲＯＭ１４は、ＣＰＵ１３により使用される制御プログラムなどのファームウェアを格納する。ＲＡＭ１５は、ＣＰＵ１３の作業エリアとして使用され、制御プログラムや各種のテーブルなどを記憶する。
【００１８】
バッファ１６は、ホスト２０から送られてくるデータを、例えば不揮発性ＲＡＭ１９へ書き込む際、一定量のデータを一時的に記憶したり、不揮発性ＲＡＭ１９から読み出されたデータをホスト２０へ送り出す際、一定量のデータを一時的に記憶したりする。
【００１９】
ＥＣＣ回路１８は、後述するように、通常のデータの書き込み動作、又はデータ読み出し動作以外の期間などで、不揮発性ＲＡＭ１９がビジー状態ではない期間において、不揮発性ＲＡＭ１９に書き込まれた例えば数百バイトのデータに、パリティデータ、及びパリティデータが有効であるかどうかを示すバリッドフラグを付与してＥＣＣフレームを生成する。
【００２０】
不揮発性ＲＡＭ１９は、例えばワード単位で、データの書き込み又は読み出しが実効される。すなわち、不揮発性ＲＡＭ１９の最小アクセス単位は、ワードである。１ワードは、例えば３２ビットにより構成されている。また、１ワードは、４バイトにより構成され、１バイトは、例えば８ビットにより構成されている。
【００２１】
ホスト２０は、例えばパーソナルコンピュータ、デジタルカメラ、又は携帯電話機などにより構成される。ホスト２０は、ホストコントローラ２１、ＣＰＵ２２、ＲＯＭ２３、ＲＡＭ２４、例えばハードディスク２５、又はＳＳＤ（Solid-State Drive）により構成されている。これらはバスにより接続されている。
【００２２】
ＣＰＵ２２は、ホスト全体を制御する。ＲＯＭ２３は、ＣＰＵ２２の動作に必要なファームウェアを記憶している。ＲＡＭ２４は、例えばＣＰＵ２２の作業領域として使用されるが、ＣＰＵ２２が実行可能なプログラムもここにロードされ実行される。ハードディスク２５は、各種データを記憶する。ホストコントローラ２１は、メモリデバイス１１が接続された状態において、メモリデバイス１１とのインターフェース処理を行う。
【００２３】
図２（ａ）は、不揮発性ＲＡＭ１９内に形成されるＥＣＣフレーム１９ａの一例を示している。
【００２４】
ＥＣＣフレーム１９ａは、ユーザデータブロックＵＤＢと、パリティデータＰＤにより構成されている。各ＥＣＣフレーム１９ａには、１ビットのバリッドフラグＶＦが付与される。このバリッドフラグＶＦは、パリティデータＰＤが有効であるか無効であるかを示している。
【００２５】
前述したように、不揮発性ＲＡＭ１９は、最小アクセス単位としてのワード単位で、データの書き込み又は読み出しが実行される。これに対して、ユーザデータブロックＵＤＢは、最小アクセス単位より大きなデータとされており、例えば５１２バイトにより構成されている。また、例えばＥＣＣの符号化方式をＢＣＨ符号（Bose-Chaudhuri-Hocquenghem code）とし、訂正能力を１２ビットとすると、５１２バイトのユーザデータブロックＵＤＢに対して１５６ビット＝１９．５バイトのパリティデータＰＤが設定されている。
【００２６】
バリッドフラグＶＦは、後述するように、初期化動作時に全パリティデータＰＤが有効であることを示す“１”に設定される。
【００２７】
また、不揮発性ＲＡＭ１９がランダムアクセスされることにより、図２（ｂ）に斜線で示すように、不揮発性ＲＡＭ１９のユーザデータブロックＵＤＢの一部にデータが書き込まれた場合、そのデータを含むユーザデータブロックＵＤＢに対応するバリッドフラグＶＦが無効を示す“０”に設定される。すなわち、データの書き込みにより、ユーザデータブロックＵＤＢに対応するパリティデータの再計算が必要となるため、バリッドフラグＶＦが無効とされる。このバリッドフラグＶＦは、コントローラ１１ａにより制御される。
【００２８】
上記構成において、第１の実施形態に係るＥＣＣ処理について説明する。第１の実施形態において、ＥＣＣ処理は、通常のワード単位の書き込み、又は読み出し動作時に実行されず、所定の期間毎に定期的に実行される。
【００２９】
図３は、第１の実施形態に係るＥＣＣ処理の一例を示すフローチャートであり、このＥＣＣ処理は、コントローラ１１ａの制御の下でＥＣＣ回路１８により実行される。
【００３０】
例えばメモリカード１１がホスト２０に接続された状態において、ホスト２０からの指令により、ＥＣＣの初期化動作が実行される（Ｓ１１）。この初期化動作は、例えば全ユーザデータブロックＵＤＢに対してＥＣＣがエンコードされる。すなわち、ＥＣＣ回路１８により、不揮発性ＲＡＭ１９内の全ユーザデータブロックＵＤＢのパリティデータが演算され、全ユーザデータブロックＵＤＢにパリティデータが付与される。さらに、各ユーザデータブロックＵＤＢのバリッドフラグＶＦが有効であることを示す“１”に設定される。
【００３１】
この初期化動作は、メモリカード１１のフォーマット動作として実行したり、メモリカード１１がホスト２０に接続された状態において、不揮発性ＲＡＭ１９にデータが書き込まれた後、ホスト２０からの指令により実行してもよい。
【００３２】
次いで、不揮発性ＲＡＭ１９に対してＥＣＣ処理を行うタイミングを設定するＥＣＣタイマーが初期化されるとともに（Ｓ１２）、ＥＣＣフレーム１９ａの数をカウントするＥＣＣフレームカウンタが初期化される（Ｓ１３）。ＥＣＣタイマーは、ＥＣＣ処理を実行するための割り込みタイミングを設定するものである。ＥＣＣタイマーは、例えばソフトウェアにより構成されたカウンタであり、このＥＣＣタイマーのカウント値が予め設定された規定値に達した場合、割り込み信号を発生する。この割り込み信号が発生された場合、ＥＣＣ回路１８を用いてＥＣＣ処理が実行される。また、ＥＣＣフレームカウンタも、例えばソフトウェアにより構成されたカウンタであり、ＥＣＣフレーム１９ａの数をカウントする。
【００３３】
上記初期化動作の後、ＥＣＣタイマーのカウント値が規定値に達したかどうかが判別される（Ｓ１４）。このＥＣＣタイマーが動作している間に、不揮発性ＲＡＭ１９に対して、データの書き込み、又は読み出しが実行される。ステップＳ１４の判別の結果、ＥＣＣタイマーのカウント値が規定値に達した場合、割り込みが発生され、コントローラ１１ａは、ＥＣＣ回路１８を用いてＥＣＣ処理を実行する。
【００３４】
ＥＣＣ処理において、先ず、ＥＣＣタイマーが再度初期化される（Ｓ１５）。この後、不揮発性ＲＡＭ１９がビジー状態であるかどうかが判別される（Ｓ１６）。すなわち、不揮発性ＲＡＭ１９が書き込み又は読み出し動作を実行しているかどうかが判別される。不揮発性ＲＡＭ１９が書き込み又は読み出し動作の実行中でない場合、ＥＣＣフレームカウンタにより指示されたＥＣＣフレーム１９ａに付与されたバリッドフラグＶＦが有効（“１”）であるかどうかが判別される（Ｓ１７）。この結果、バリッドフラグＶＦが有効であると判別された場合、ＥＣＣフレームカウンタにより指示されたＥＣＣフレーム１９ａが不揮発性ＲＡＭ１９から読み出され、ＥＣＣ回路１８によりデコードされ、エラー訂正処理が実行される（Ｓ１８）。
【００３５】
また、ステップＳ１７において、バリッドフラグＶＦが無効（“０”）であると判別された場合、ＥＣＣ回路１８を用いてＥＣＣフレームカウンタにより指示されたＥＣＣフレーム１９ａが不揮発性ＲＡＭ１９から読み出されてエンコードされる。すなわち、読み出されたＥＣＣフレーム１９ａに対してパリティデータが再計算される（Ｓ１９）。この後、パリティデータが再計算されたＥＣＣフレーム１９ａのバリッドフラグＶＦが、有効であることを示す“１”に設定される（Ｓ２０）。
【００３６】
上記デコードされたＥＣＣフレームや、エンコードされたＥＣＣフレーム、及びバリッドフラグは、不揮発性ＲＡＭ１９に書き込まれる。
【００３７】
次いで、ＥＣＣフレームカウンタが更新され（Ｓ２１）、ＥＣＣフレームカウンタのカウント値が予め設定された規定値に達したかどうかが判別される（Ｓ２２）。この結果、カウント値が規定値に達していない場合、制御がステップＳ１６に移行され、上記動作が繰り返される。また、カウント値が規定値に達している場合、制御がステップＳ１４に移行され、割り込み待ち状態となる。
【００３８】
上記第１の実施形態によれば、不揮発性ＲＡＭ１９のアクセス単位より大きな単位のユーザデータブロックＵＤＢにパリティデータＰＤを付与してＥＣＣフレーム１９ａを生成し、さらに、パリティデータＰＤの有効性を示すバリッドフラグＶＦを設定している。このため、ランダムアクセスされるデータの符号化率を向上することが可能である。
【００３９】
しかも、ＥＣＣフレーム１９ａに対して、通常の書き込みや読み出しが実行されていないとき、バックグラウンドにおいて、ＥＣＣ処理が実行され、バリッドフラグＶＦが有効なＥＣＣフレームに対してエラー訂正が行われ、バリッドフラグＶＦが無効とされたＥＣＣフレームの場合、再度パリティデータを付与し、バリッドフラグを有効としている。このため、ランダムアクセスにより、頻繁にデータが書き換えられる場合においても、データがアクセスされる都度ＥＣＣ処理を実行する必要がないため、通常アクセスの効率の低下を防止でき、スループットを向上することが可能である。
【００４０】
また、ＥＣＣタイマーを設け、このＥＣＣタイマーにより、定期的に割り込みを発生させ、ＥＣＣ処理を実行している。このため、ＥＣＣフレーム１９ａのパリティデータＰＤ、及びバリッドフラグＶＦを定期的にリフレッシュすることができるため、ビットエラーレートが所定のレンジであれば、ユーザデータブロックＵＤＢの信頼性を向上することが可能である。
【００４１】
尚、上記第１の実施形態の場合、ＥＣＣタイマーにより定期的にＥＣＣフレームのパリティデータＰＤ、及びバリッドフラグＶＦをリフレッシュしたが、これに限定されるものではない。例えば不揮発性ＲＡＭ１９に対して、バースト転送等のブロックアクセスのアプリケーションが実行される場合、アプリケーションの実行中に、ＥＣＣフレーム単位でＥＣＣ処理を実行することも可能である。
【００４２】
（第２の実施形態）
図４は、第２の実施形態を示しており、図４において、図３と同一部分には同一符号を付し、異なる部分についてのみ説明する。
【００４３】
上記第１の実施形態は、ＥＣＣタイマーにより割り込みを発生させて、ＥＣＣ処理を実行した。これに対して、第２の実施形態は、ホスト２０がスタンバイモードであることをメモリカード１１に通知することにより、メモリカード１１において、ＥＣＣ処理が実行される。
【００４４】
すなわち、図４に示すように、例えば不揮発性ＲＡＭ１９の全ユーザデータブロックＵＤＢに対してＥＣＣの初期化動作が実行され（Ｓ１１）、ＥＣＣフレームカウンタが初期化された後（Ｓ１３）、ホスト２０のアイドル期間を検知するアイドル期間検知タイマーが初期化される（Ｓ３１）。アイドル期間検知タイマーは、例えばソフトウェアにより構成されたカウンタであり、コントローラ１１ａから不揮発性ＲＡＭ１９に対してコマンドやチップイネーブル信号が予め設定された期間に発行されない場合、すなわち、不揮発性ＲＡＭ１９が一定期間アクセスされないアイドル状態である場合、割り込み信号を発生する。
【００４５】
この後、ホスト２０からスタンバイモード信号がアサート（表明）されたか否かが判別される（Ｓ３２）。ここで、スタンバイモードとは、ホスト２０が、アイドル状態となり、通常より消費電力が少なくなっている状態であり、不揮発性ＲＡＭ１９の情報は、ホスト２０のハードディスク２５には保存されていない状態である。
【００４６】
上記判別の結果、ホスト２０から、スタンバイモード信号がアサートされた場合、制御がステップＳ１６に移行され、前述した動作により、ＥＣＣフレームに対してＥＣＣ処理が実行され、パリティデータＰＤや、バリッドフラグＶＦがリフレッシュされる（Ｓ１６〜Ｓ２２）。
【００４７】
一方、上記判別の結果、ホスト２０から、スタンバイモード信号がアサートされていない場合、アイドル期間検知タイマーのカウント値が予め設定された規定値に達したかどうかが判別される（Ｓ３３）。この結果、アイドル期間検知タイマーが規定値に達した場合、割り込みが発生され、アイドル期間検知タイマーが初期化された後（Ｓ３４）、ステップＳ１６〜Ｓ２２に示すＥＣＣ処理が実行される。
【００４８】
上記第２の実施形態によれば、ホスト２０がスタンバイ状態の場合や、不揮発性ＲＡＭ１９がアイドル状態の場合において、不揮発性ＲＡＭ１９のＥＣＣ処理を実行することができる。このため、通常アクセスの効率の低下を防止でき、スループットを向上することが可能であるとともに、不揮発性ＲＡＭ１９内のデータの信頼性を向上することが可能である。
【００４９】
尚、上記第１、第２の実施形態は、不揮発性ＲＡＭ１９をメモリカード１１に適用した場合について説明したが、これに限定されるものではない。例えば不揮発性ＲＡＭ１９をキャッシュメモリとして使うシステムの場合、キャッシュのエントリーサイズでＥＣＣのエンコードを行ってもよい。
【００５０】
さらに、不揮発性ＲＡＭ１９を例えばＳＳＤ（Solid-State Drive）に適用する場合においても実施可能である。
【００５１】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５２】
１１…メモリカード、１１ａ…コントローラ、１８…ＥＣＣ回路、１９…不揮発性ＲＡＭ、２０…ホスト、１９ａ…ＥＣＣフレーム、ＵＤＢ…ユーザデータブロック、ＰＤ…パリティデータ、ＶＦ…バリッドフラグ。
【図１】
2013134595.tif 000003
【図２】
2013134595.tif 000004
【図３】
2013134595.tif 000005
【図４】
2013134595.tif 000006