(57)【要約】【課題】誤り訂正能力を向上させたメモリシステムを提供すること。【解決手段】実施形態のメモリシステムは、第１の不揮発性メモリと、前記第１の不揮発性メモリよりアクセスレイテンシが長い第２の不揮発性メモリと、第１の誤り訂正部と、第２の誤り訂正部と、インターフェイスを備える。前記第１の不揮発性メモリには、第１のデータと、前記第１のデータに対して生成された第１の誤り訂正符号を格納する。前記第２の不揮発性メモリには、前記第１のデータに対して生成され前記第１の誤り訂正符号より訂正能力の高い第２の誤り訂正符号を格納する。前記第１の誤り訂正部は、前記第１の誤り訂正符号を用いて前記第１のデータに対して誤り訂正を行う。前記第２の誤り訂正部は、前記第２の誤り訂正符号を用いて前記第１のデータに対して誤り訂正を行う。前記インターフェイスは、誤り訂正後の前記第１のデータをホストに送信する。【選択図】図１
2014092973.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータと、前記第１のデータに対して生成された第１の誤り訂正符号とを格納す
る第１の不揮発性メモリと、
第１のデータに対して生成され、前記第１の誤り訂正符号より訂正能力の高い第２の誤
り訂正符号を格納する、前記第１の不揮発性メモリよりアクセスレイテンシが長い第２の
不揮発性メモリと、
前記第１の不揮発性メモリに格納された前記第１の誤り訂正符号を用いて前記第１のデ
ータに対して誤り訂正処理を実行する第１の誤り訂正部と、
前記第２の不揮発性メモリに格納された前記第２の誤り訂正符号を用いて前記第１のデ
ータに対して誤り訂正処理を実行する第２の誤り訂正部と、
誤り訂正後の前記第１のデータをホストに送信するインターフェイスと、
を備えたメモリシステム。
【請求項２】
前記第２の不揮発性メモリは、前記第１の不揮発性メモリより信頼性が高い請求項１に
記載のメモリシステム。
【請求項３】
前記第１の誤り訂正部による前記第１のデータの誤り訂正が不可であるか否かを判定す
る判定部をさらに備え、
前記第１の誤り訂正部によるデータの誤り訂正が不可であると前記判定部が判定した場
合、前記第２の誤り訂正部が前記第１のデータに対して誤り訂正処理を実行する請求項１
乃至請求項２の何れか１項に記載のメモリシステム。
【請求項４】
前記判定部が前記第１の誤り訂正部による前記第１のデータの誤り訂正が可であると判
定した場合、前記インターフェイスが前記第１の誤り訂正部による誤り訂正処理後の前記
第１のデータを前記ホストに送信する請求項３に記載のメモリシステム。
【請求項５】
前記第２の誤り訂正部が、前記第１のデータに対して誤り訂正処理を実行した場合、前
記インターフェイスが前記第２の誤り訂正部による誤り訂正処理後の前記第１のデータを
前記ホストに送信する請求項３に記載のメモリシステム。
【請求項６】
前記第１の誤り訂正部による誤り訂正処理後の前記第１のデータを前記第１の不揮発性
メモリに書き込む請求項４に記載のメモリシステム。
【請求項７】
前記第２の誤り訂正部による誤り訂正処理後の前記第１のデータを前記第１の不揮発性
メモリに書き込む請求項５に記載のメモリシステム。
【請求項８】
前記ホストから受信する論理アドレスにより指定される第１のデータが前記第１の不揮
発性メモリと前記第２の不揮発性メモリの両方に格納されている場合、前記判定部が、前
記第１の不揮発性メモリに格納されている前記第１のデータの誤り訂正が不可であると判
定した場合、前記第２の不揮発性メモリに格納されている前記第１のデータを前記ホスト
に送信する請求項３乃至７の何れか１項に記載のメモリシステム。
【請求項９】
前記ホストから受信する論理アドレスにより指定される第１のデータが前記第１の不揮
発性メモリと前記第２の不揮発性メモリの両方に格納されている場合、前記判定部が、前
記第１の不揮発性メモリに格納されている前記第１のデータの誤り訂正が不可であると判
定した場合、前記第２の不揮発性メモリに格納されている前記第１のデータを前記第１の
不揮発性メモリに書き込む請求項８に記載のメモリシステム。
【請求項１０】
前記第１の誤り訂正符号は、前記第１のデータ毎に生成される請求項１乃至請求項９の
何れか１項に記載のメモリシステム。
【請求項１１】
前記第２の誤り訂正符号は、前記第１のデータと前記第１の誤り訂正符号で構成される
第２のデータを複数集めたデータ毎に生成される請求項１乃至請求項１０の何れか１項に
記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
近年、コンピュータシステムに搭載されるメモリドライブとしてＳＳＤ（Solid State 
Drive）の開発が種々行われている。ＳＳＤは不揮発性フラッシュメモリを搭載しており
、ハードディスクと比較して高速であり、かつ軽量であるという特徴を持つ。
【０００３】
ＳＳＤに搭載される不揮発性フラッシュメモリ、特にＮＡＮＤ型フラッシュメモリは、
書き換え回数が制限されるため、特定の領域に頻繁にデータがアクセスすることを避ける
ようにしなければならない。そのため、メモリドライブに、ＤＲＡＭ（Dynamic Random A
ccess Memory）等の揮発性ランダムアクセスメモリを搭載し、不揮発性フラッシュメモリ
へのアクセスを抑制することでメモリドライブの信頼性を確保している。また、アクセス
頻度の高いユーザデータやシステムデータを、ＮＡＮＤ型フラッシュメモリに対してアク
セスレイテンシの短いＤＲＡＭに置き、メモリドライブのアクセス性能を向上する場合も
ある。ＤＲＡＭの代わりに、ＭＲＡＭ（Magnetoresistive Random Access Memory）、Ｆ
ｅＲＡＭ（Ferroelectric Random Access Memory）を使う可能性もある。
【０００４】
また、ＳＳＤの信頼性確保のために、ＮＡＮＤ型フラッシュメモリや不揮発性メモリへ
のデータ書き込みの際、誤り訂正符号（以下、ＥＣＣデータと称する）を付与し、データ
読み出し時、ＥＣＣデータによりデータの誤り検出を行い、誤りを検出した場合には、そ
のデータを訂正するように構成されている（特許文献１、特許文献２）。
【０００５】
しかし、ＭＲＡＭ、ＦｅＲＡＭその他将来的な不揮発性メモリが製品化後間もないメモ
リである場合には、製造工場のライン立ち上げ後しばらくの間は、不揮発性メモリに格納
されたデータの信頼性が劣る傾向にあり、同じ不揮発性メモリに格納されたＥＣＣデータ
のみではデータを訂正できない可能性が高くなり、従来技術だけでは装置の信頼性が低下
する可能性がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１６５８０５号公報
【特許文献２】特開２０１０−１４６３８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、誤り訂正能力を向上させたメモリシステムを提供す
ることである。
【課題を解決するための手段】
【０００８】
上記課題を達成するために、実施形態のメモリシステムは、第１の不揮発性メモリと、
前記第１の不揮発性メモリよりアクセスレイテンシが長い第２の不揮発性メモリと、第１
の誤り訂正部と、第２の誤り訂正部と、インターフェイスを備える。前記第１の不揮発性
メモリには、第１のデータと、前記第１のデータに対して生成された第１の誤り訂正符号
を格納する。前記第２の不揮発性メモリには、前記第１のデータに対して生成され前記第
１の誤り訂正符号より訂正能力の高い第２の誤り訂正符号を格納する。前記第１の誤り訂
正部は、前記第１の誤り訂正符号を用いて前記第１のデータに対して誤り訂正を行う。前
記第２の誤り訂正部は、前記第２の誤り訂正符号を用いて前記第１のデータに対して誤り
訂正を行う。前記インターフェイスは、誤り訂正後の前記第１のデータをホストに送信す
る。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係るメモリシステムの構成を示すブロック図。
【図２】第１の実施形態に係るメモリシステムで使用するデータ単位を示す図。
【図３】第１の実施形態に係るメモリシステムで使用するセクタアドレスから不揮発性メモリアドレスを解決するためのテーブルを示す図。
【図４】第１の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの読み出し処理のフローチャート。
【図５】第２の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの読み出し処理のフローチャート。
【図６】第３の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの読み出し処理のフローチャート。
【図７】第４の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの読み出し処理のフローチャート。
【図８】第５の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの読み出し処理のフローチャート。
【発明を実施するための形態】
【００１０】
以下、発明を実施するための実施形態について図面を参照して説明する。
【００１１】
（第１の実施形態）
図１は、第１の実施形態に係るメモリシステム１の構成を示すブロック図である。第１
の実施形態に係るメモリシステム１は、第１の不揮発性メモリ５０、第２の不揮発性メモ
リ６０、および第１の不揮発性メモリ５０と第２の不揮発性メモリ６０を制御するメモリ
コントローラ１０を備えている。第１の不揮発性メモリ５０はアクセスレイテンシが短い
ＦｅＲＡＭ又はＭＲＡＭが用いられるが、将来的に利用可能となるような不揮発性メモリ
であっても良い。第２の不揮発性メモリ６０は、第１の不揮発性メモリ５０よりも、信頼
性が高いメモリであり、例えば、ＮＡＮＤ型フラッシュメモリが用いられる。
【００１２】
メモリシステム１は、ホストＩ／Ｆ２１を介して、コンピュータ等のホスト２と接続さ
れ、ホスト２の外部メモリとして機能する。
【００１３】
メモリコントローラ１０は、ＣＰＵ１１、ＲＯＭ１２、ホストＩ／Ｆ２１、ＥＣＣ１エ
ンコーダ２２、ＥＣＣ１デコーダ２３、ＥＣＣ２エンコーダ２４、ＥＣＣ２デコーダ２５
、ＡｄｄｒＲｅｓｏｌｖｅ２６、ＡｒｅａＡｌｌｏｃａｔｏｒ２７、ＳＲＡＭ４１、第１
の不揮発性メモリ用コントローラ４２、第２の不揮発性メモリ用コントローラ４３を備え
ている。
【００１４】
ホストＩ／Ｆ２１、ＥＣＣ１エンコーダ２２、ＥＣＣ１デコーダ２３、ＥＣＣ２エンコ
ーダ２４、ＥＣＣ２デコーダ２５、ＡｄｄｒＲｅｓｏｌｖｅ２６、ＡｒｅａＡｌｌｏｃａ
ｔｏｒ２７、ＳＲＡＭ４１、第１の不揮発性メモリ用コントローラ４２、第２の不揮発性
メモリ用コントローラ４３は、互いに、データを扱うデータ用バス３１を介して接続され
ている。
【００１５】
ＣＰＵ１１、ＲＯＭ１２、ＳＲＡＭ４１、第１の不揮発性メモリ用コントローラ４２、
第２の不揮発性メモリ用コントローラ４３は、互いに、制御用バス３２を介して接続され
ている。
【００１６】
ＣＰＵ１１は、メモリシステム１全体の動作を制御する。ＣＰＵ１１は、メモリシステ
ム１が電源供給を受けたときに、ＲＯＭ１２に格納されているファームウェア（制御プロ
グラム）をＳＲＡＭ４１上に読み出して所定の処理を実行する。
【００１７】
ＲＯＭ１２は、ＣＰＵ１１により制御される制御プログラム等を格納する。ＳＲＡＭ４
１は、ＣＰＵ１１の作業エリアとして使用され、ＲＯＭ１２からロードされた制御プログ
ラムや各種テーブルを格納する。
【００１８】
第１の不揮発性メモリ用コントローラ４２はメモリコントローラ外部に接続された第１
の不揮発性メモリ５０のデータ読み出し、データ書き込み等の処理の制御を行う。
【００１９】
第２の不揮発性メモリ用コントローラ４３はメモリコントローラ外部に接続された第２
の不揮発性メモリ６０のデータ読み出し、データ書き込み、データ消去等の処理の制御を
行う。
【００２０】
ＡｄｄｒＲｅｓｏｌｖｅ２６はホスト２から通知された論理的なデータアドレス（以下
、ＬＢＡと称する）を、第１の不揮発性メモリ５０や第２の不揮発性メモリ６０の物理ア
ドレスに変換し、ホスト２からの要求を処理するためにどの不揮発性メモリのどのアドレ
スをアクセスすればよいかを解決する。
【００２１】
ＡｒｅａＡｌｌｏｃａｔｏｒ２７は、第１の不揮発性メモリ５０や第２の不揮発性メモ
リ６０にデータを書き込む際、データ書き込み先エリアの割り当てを行う。
【００２２】
ＥＣＣ１エンコーダ２２は、第１の不揮発性メモリ５０に格納されるデータに対して、
誤り訂正符号（以下、ＥＣＣ１データと称する）を生成し、第１の不揮発性メモリ用コン
トローラ４２を経由してＥＣＣ１データを第１の不揮発性メモリ５０に書き込む。ＥＣＣ
１データは、小規模なデータ単位毎に生成される。小規模なデータ単位とは、例えばホス
ト２からＬＢＡで指定される最小アクセス単位であるセクタ単位をいう。セクタのサイズ
は、例えば５１２バイトである。
【００２３】
ＥＣＣ１デコーダ２３は、第１の不揮発性メモリ５０から読み出されるデータに対して
、ＥＣＣ１データに基づいて誤り検出と誤り訂正を行う。
【００２４】
ＥＣＣ２エンコーダ２４は、第１の不揮発性メモリ５０に格納されるデータに対して、
誤り訂正符号（以下、ＥＣＣ２データと称する）を生成し、第２の不揮発性メモリ用コン
トローラ４３を経由してＥＣＣ２データを第２の不揮発性メモリ６０に書き込む。ＥＣＣ
２データは、前記小規模なデータ単位のデータにＥＣＣ１データを付加したデータを複数
まとめたデータ毎に生成される。具体的なデータ単位については後述する。
【００２５】
ＥＣＣ２デコーダ２５は、第１の不揮発性メモリ５０から読み出されるデータに対して
、ＥＣＣ２データに基づいて誤り検出と誤り訂正を行う。
【００２６】
図２は、メモリシステム１で使用するデータ単位を示す図である。ホスト２からＬＢＡ
で指定される最小単位のデータをセクタデータ、セクタデータにＥＣＣ１データを付加し
たデータの単位を第１のデータ単位とする。セクタを特定するアドレスをセクタアドレス
と呼ぶ。セクタアドレスはＬＢＡと一致する。クラスタは、セクタアドレスが連続した複
数のセクタデータとセクタデータ毎に作成されたＥＣＣ１データをまとめたもので、通常
２の累乗個の第１のデータ単位のデータから構成される。クラスタを特定するアドレスを
クラスタアドレス（以下、ＬＣＡと称する）と呼び、これはセクタアドレスをクラスタ内
に含まれるセクタ数で割ったもので表現される。ページを複数まとめたものを仮想ページ
と呼ぶ。また、仮想ページは、クラスタを複数まとめたデータと、このデータを元に計算
されたＥＣＣ２データからなる。仮想ページを複数まとめたものを仮想ブロックと呼び、
仮想ブロックを特定するアドレスを仮想ブロックアドレスと呼ぶ。
【００２７】
図３は、ＡｄｄｒＲｅｓｏｌｖｅ２６による、セクタアドレスから不揮発性メモリアド
レスを解決するためのテーブルを示す図である。まず、ホスト２から通知されたＬＢＡを
元にＬＣＡを計算する。ＬＣＡテーブル３０１は、このＬＣＡがどの仮想ブロック内であ
るかを示す仮想ブロックＩＤ３０１ａと、仮想ブロックＩＤ３０１ａが示す仮想ブロック
のどの仮想ページに格納されているかを示す仮想ページＩＤ３０１ｂと、仮想ページＩＤ
３０１ｂが示した仮想ページの何番目のクラスタかを示すクラスタオフセット３０１ｃの
情報を保持している。
【００２８】
次に、仮想ブロックＩＤ３０１ａ、仮想ページＩＤ３０１ｂ、Ｌ２Ｐテーブル３０２を
使用して、仮想ページがどの不揮発性メモリに含まれるかを取得する。Ｌ２Ｐテーブル３
０２は、仮想ブロックＩＤ３０１ａに含まれる仮想ページＩＤ３０１ｂがどの不揮発性メ
モリのどのアドレスに含まれるかを格納するテーブルであり、Ｌ２Ｐテーブル３０２のエ
ントリには、第１の不揮発性メモリフィールド３０２ａ、第２の不揮発性メモリフィール
ド３０２ｂ、第２の不揮発性メモリのキャッシュフィールド３０２ｃ、第１の不揮発性メ
モリのアドレスフィールド３０２ｄ、第２の不揮発性メモリのアドレスフィールド３０２
ｅがある。第１の不揮発性メモリフィールド３０２ａは、その仮想ページが第１の不揮発
性メモリ上に書き込まれていることを示し、第１の不揮発性メモリのアドレスフィールド
３０２ｄを読むことで、第１の不揮発性メモリ上のアドレスを特定することができる。第
２の不揮発性メモリフィールド３０２ｂは、その仮想ページが第２の不揮発性メモリ上に
書き込まれていることを示し、第２の不揮発性メモリのアドレスフィールド３０２ｅを読
むことで、第２の不揮発性メモリ上のアドレスを特定することができる。第２の不揮発性
メモリのキャッシュフィールド３０２ｃは、その仮想ページが第１の不揮発性メモリ上に
も第２の不揮発性メモリ上にも存在し、第１の不揮発性メモリ上のデータが第２の不揮発
性メモリ上のデータのキャッシュとなっていることを示す。以上により、ＡｄｄｒＲｅｓ
ｏｌｖｅ２６は、ＬＣＡテーブル３０１から仮想ブロックＩＤ３０１ａ、仮想ページＩＤ
３０１ｂを取得し、Ｌ２Ｐテーブル３０２を検索することで、どの不揮発性メモリをアク
セスすればよいかを解決できる。
【００２９】
図４は、第１の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの
読み出し処理のフローチャートである。このフローチャートは、ホスト２からデータのリ
ード要求を受け、要求のあったデータを読み出し、ホスト２へ送信する処理を示している
。
【００３０】
ホスト２からデータリード要求を受けると、メモリコントローラ１０は、ホスト２から
受領したＬＢＡをＬＣＡに変換し（ステップ４０１）、このＬＣＡを基に、ＡｄｄｒＲｅ
ｓｏｌｖｅ２６により、仮想ブロックＩＤ、仮想ページＩＤ、クラスタオフセットを取得
する（ステップ４０２）。その後、メモリコントローラ１０は、Ｌ２Ｐテーブル４０２を
使用して不揮発性メモリの格納場所を特定し（ステップ４０３）、ＬＣＡに対応する仮想
ページが第１の不揮発性メモリ５０上に存在するか否かを判定する（ステップ４０４）。
【００３１】
ＬＣＡに対応する仮想ページが、第１の不揮発性メモリ５０上に存在しない場合（ステ
ップ４０４：Ｎｏ）、メモリコントローラ１０は、第２の不揮発性メモリ６０へアクセス
し、データを取得した後（ステップ４１３）、そのデータをホスト２へ送信する（ステッ
プ４１２）。
【００３２】
ＬＣＡに対応する仮想ページが、第１の不揮発性メモリ５０上にのみ存在するか、第１
の不揮発性メモリ５０上に第２の不揮発性メモリ６０のコピーとして存在する場合（ステ
ップ４０４：Ｙｅｓ）には、メモリコントローラ１０は、第１の不揮発性メモリ５０から
セクタデータとＥＣＣ１データを読み出し（ステップ４０５）、ＥＣＣ１データを用いて
誤り検出を行い（ステップ４０６）、誤りが検出されたか否かを判定する（ステップ４０
７）。
【００３３】
誤りを検出しなかった場合（ステップ４０７：Ｎｏ）、メモリコントローラ１０は、読
み出したデータをホスト２へ送信する（ステップ４１２）。
【００３４】
誤りを検出した場合（ステップ４０７：Ｙｅｓ）、メモリコントローラ１０は、ＥＣＣ
１データを用いて誤り訂正を行う（ステップ４０８）。
【００３５】
ＥＣＣ１データで誤り訂正できた場合（ステップ４０９：Ｙｅｓ）、メモリコントロー
ラ１０は、訂正後のセクタデータをホスト２へ送信する（ステップ４１２）。
【００３６】
ＥＣＣ１データで誤り訂正できなかった場合（ステップ４０９：Ｎｏ）、メモリコント
ローラ１０は、仮想ページのデータを第１の不揮発性メモリ５０又は第２の不揮発性メモ
リ６０又はその両方から読み出し（ステップ４１０）、第２の不揮発性メモリ６０から読
み出したＥＣＣ２データを用いて誤り訂正を行い（ステップ４１１）、訂正後のセクタデ
ータをホスト２へ送信する（ステップ４１２）。
【００３７】
以上のように、第１の実施形態によれば、メモリシステム１において、セクタデータ及
びＥＣＣ１データを第１の不揮発性メモリ５０へ格納し、ＥＣＣ１データよりも誤り訂正
能力の高いＥＣＣ２データを第１の不揮発性メモリ５０ではなく第２の不揮発性メモリ６
０へ格納する。第１の不揮発性メモリ５０上にあるクラスタの各セクタにはＥＣＣ１デー
タが付加されており、ＥＣＣ１データを用いて誤り訂正処理を行う。ＥＣＣ１データによ
り誤り訂正できた場合には、第２の不揮発性メモリ６０へのアクセスが不要になる分だけ
、高速にセクタデータを取り出すことが可能となる。ＥＣＣ１データにより誤り訂正でき
なかった場合、第１の不揮発性メモリ５０又は第２の不揮発性メモリ６０上にある他のク
ラスタと、第２の不揮発性メモリ６０に格納されているＥＣＣ２データを使用して誤り訂
正を行う。
【００３８】
第１の不揮発性メモリ５０に格納されているデータが、ＥＣＣ１データによる訂正能力
を上回るデータ誤りを含む場合であったとしても、ＥＣＣ１データよりも訂正能力が高い
ＥＣＣ２データを用いて第１の不揮発性メモリ５０のセクタデータを訂正できる可能性が
、第１の不揮発性メモリ５０に格納されたＥＣＣ１データのみを使用する場合に比べて高
くなる。
【００３９】
（第２の実施形態）
図５は、第２の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの
読み出し処理のフローチャートである。図５において、図４の構成と同一部分は同一符号
で示す。また、第２の実施形態によるメモリシステムの構成は図１に示した第１の実施形
態のメモリシステム１の構成と同一である。
【００４０】
この第２の実施形態が、第１の実施形態と異なる点は、ステップ４０９でＥＣＣ１デー
タにより誤り訂正できた場合（ステップ４０９：Ｙｅｓ）、メモリコントローラ１０が、
訂正後のデータを第１の不揮発性メモリ５０に書き戻す処理（ステップ５０１）を実行す
ることにある。この処理は第１の不揮発性メモリ５０の該当する領域に対するリフレッシ
ュ動作に相当し、以降に同じセクタを読み出した際に、読み出したデータにエラーが含ま
れる可能性が低くなり、ＥＣＣ１データやＥＣＣ２データによる誤り訂正を行う可能性を
減少させることができる。
【００４１】
上述した第２の実施形態によれば、メモリシステム１において、第１の実施形態と同様
に、第１の不揮発性メモリ５０のクラスタを読み出し、第１の不揮発性メモリ５０上に存
在するクラスタの各セクタに付加されているＥＣＣ１データを用いて誤り訂正処理を行う
ことができる。また、誤り訂正を行った場合、誤りが検出されたセクタに対し訂正後のデ
ータを書き戻すことにより、以降に同じセクタを読み出した際の誤り訂正を行う可能性を
減少させることができる。
【００４２】
（第３の実施形態）
図６は、第３の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの
読み出し処理のフローチャートである。図６において、図４の構成と同一部分は同一符号
で示す。また、第３の実施形態によるメモリシステムの構成は図１に示した第１の実施形
態のメモリシステム１の構成と同一である。
【００４３】
この第３の実施形態が、第１の実施形態と異なる点は、ステップ４０７でＥＣＣ１デー
タによる誤りを検出した場合（ステップ４０７：Ｙｅｓ）、メモリコントローラ１０が、
誤りが検出されたセクタと同じ仮想ページ内の全セクタに対して誤り訂正処理を行い（ス
テップ６０１）、訂正が行われたセクタデータを第２の不揮発性メモリ６０に書き戻す処
理（ステップ６０２）を実行することにある。誤りが検出されたセクタと同じ仮想ページ
内のデータは、誤りが検出されたセクタと同じ期間だけリテンションされているため、誤
りが検出されたセクタと同様に誤りが発生している可能性が高く、一括してリフレッシュ
を行うことで以降に発生する可能性のあるリ訂正処理を少なくできる可能性がある。ある
セクタデータについて誤りが検出された場合に、さらに誤り訂正処理を行う範囲は、任意
に定めてよく、仮想ページ内の全セクタであっても一部セクタであってもよい。
【００４４】
上述した第３の実施形態によれば、メモリシステム１において、ホスト２からリード要
求を受けたデータについて誤りが検出された場合、誤りが検出されたセクタ以外のセクタ
のデータについても誤り訂正処理を行い、誤りが検出されたセクタに対して訂正後のデー
タを書き戻すことにより、その後に発生する可能性のある訂正処理を少なくすることがで
きる。
【００４５】
（第４の実施形態）
図７は、第４の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの
読み出し処理のフローチャートである。図７において、図４の構成と同一部分は同一符号
で示す。また、第４の実施形態によるメモリシステムの構成は図１に示した第１の実施形
態のメモリシステム１の構成と同一である。
【００４６】
この第４の実施形態が、第１の実施形態と異なる点は、メモリコントローラ１０が、Ｅ
ＣＣ２データによる誤り訂正を行った後（ステップ４１１）、訂正後のデータを第１の不
揮発性メモリ５０に書き戻す処理（ステップ７０１）を実行することにある。この処理は
、第１の不揮発性メモリ５０の該当する領域に対するリフレッシュ動作に相当し、以降に
同じセクタを読み出した際、読み出したデータにエラーが含まれる可能性が低くなり、Ｅ
ＣＣ１データやＥＣＣ２データによるデータの誤り訂正を行う可能性を減少させることが
できる。
【００４７】
上述した第４の実施形態によれば、メモリシステム１において、第１の実施形態と同様
に、第１の不揮発性メモリ５０に格納されているＥＣＣ１データや第２の不揮発性メモリ
６０に格納されているＥＣＣ２データを用いて誤り訂正処理を行うことができる。また、
ＥＣＣ２データにより誤り訂正を行った場合、誤りが検出されたセクタに対し訂正後のデ
ータを書き戻すことにより、以降に同じセクタを読み出した際の誤り訂正を行う可能性を
減少させることができる。
【００４８】
（第５の実施形態）
図８は、第５の実施形態に係るメモリシステムの不揮発性メモリに格納されたデータの
読み出し処理のフローチャートである。図８において、図４の構成と同一部分は同一符号
で示す。また、第５の実施形態によるメモリシステムの構成は図１に示した第１の実施形
態のメモリシステム１の構成と同一である。
【００４９】
この第５の実施形態が、第１の実施形態と異なる点は、ステップ４０９でＥＣＣ１デー
タにより誤り訂正できなかった場合（ステップ４０９：Ｎｏ）、メモリコントローラ１０
が、第１の不揮発性メモリ５０に格納されているデータが第２の不揮発性メモリ６０に格
納されているデータのキャッシュとなっているか否かを判定する処理（ステップ８０１）
と、第２の不揮発性メモリ６０からクラスタを読み出す処理（ステップ８０２）と、この
クラスタ内のセクタデータを第１の不揮発性メモリ５０に書き戻す処理（ステップ８０３
）を実行することにある。第１の不揮発性メモリ５０に格納されているデータが第２の不
揮発性メモリ６０に格納されているデータのキャッシュとなっているか否かは、図３に示
したアドレス解決の結果により判定できる。
【００５０】
図８に示すように、メモリコントローラ１０は、ホスト２からデータリード要求を受け
ると、ホスト２から受領したＬＢＡをＬＣＡに変換し（ステップ４０１）、このＬＣＡを
基に、ＡｄｄｒＲｅｓｏｌｖｅ２６を用いて、仮想ブロックＩＤ、仮想ページＩＤ、クラ
スタオフセットを取得する（ステップ４０２）。図３に示したアドレス解決の結果、クラ
スタに対応する仮想ページが第２の不揮発性メモリ上にのみ存在するか、第１の不揮発性
メモリ５０上に第２の不揮発性メモリ６０のコピーとして存在する場合（ステップ４０４
：Ｙｅｓ）、メモリコントローラ１０は、第１の不揮発性メモリ５０からセクタデータと
ＥＣＣ１データを読み出す（ステップ４０５）。
【００５１】
ＥＣＣ１データで誤り訂正できなかった場合であって（ステップ４０９：Ｎｏ）、クラ
スタに対応する仮想ページが、第１の不揮発性メモリ５０上に第２の不揮発性メモリ６０
のコピーとして存在する場合（ステップ８０１：Ｙｅｓ）、メモリコントローラ１０は、
第２の不揮発性メモリ６０から仮想ページを読み出し、その仮想ページからクラスタを取
り出し（ステップ８０２）、クラスタを構成する各セクタの中から該当セクタのデータを
第１の不揮発性メモリ５０の該当アドレスに書き込む（ステップ８０３）。このようにす
ることで、ＥＣＣ２データによる訂正が不要になり、ＥＣＣ２データによる誤り訂正のオ
ーバヘッドを削減できる。
【００５２】
第１の不揮発性メモリ５０上のデータが第２の不揮発性メモリ６０のコピーでない場合
（ステップ８０１：Ｎｏ）、メモリコントローラ１０は、仮想ページのデータを第１の不
揮発性メモリ５０から読み出し（ステップ４１０）、ＥＣＣ２データによる誤り訂正を行
い（ステップ４１１）、訂正後のセクタデータをホスト２へ送信する（ステップ４１２）
。
【００５３】
上述した第５の実施形態によれば、メモリシステム１において、第１の実施形態と同様
に、第１の不揮発性メモリ５０のクラスタを読み出し、第１の不揮発性メモリ５０上にあ
るクラスタの各セクタに付加されているＥＣＣ１データを用いて誤り訂正処理を行うこと
ができる。また、クラスタに対応する仮想ページが、第１の不揮発性メモリ５０上に第２
の不揮発性メモリ６０のコピーとして存在する場合、ＥＣＣ１データで誤りを訂正できな
い場合であっても、ＥＣＣ２データによる誤り訂正が不要になり、ＥＣＣ２データによる
誤り訂正のオーバヘッドを削減できる。また、誤りが検出されたセクタに対し訂正後のデ
ータを書き戻すことにより、以降に同じセクタを読み出した際の誤り訂正を行う可能性を
減少させることができる。
【００５４】
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱
しない範囲内において種々変更を加え得ることは勿論である。
【００５５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したも
のであり、発明の範囲を限定することは意図していない。これらの実施形態は、その他の
さまざまな形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の
省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲
や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれ
るものである。
【符号の説明】
【００５６】
１・・・メモリシステム
２・・・ホスト
１０・・・メモリコントローラ
１１・・・ＣＰＵ
１２・・・ＲＯＭ
２１・・・ホストＩ／Ｆ
２２・・・ＥＣＣ１エンコーダ
２３・・・ＥＣＣ１デコーダ
２４・・・ＥＣＣ２エンコーダ
２５・・・ＥＣＣ２デコーダ
２６・・・ＡｄｄｒＲｅｓｏｌｖｅ
２７・・・ＡｒｅａＡｌｌｏｃａｔｏｒ
３１・・・データ用バス
３２・・・制御用バス
４１・・・ＳＲＡＭ
４２・・・第１の不揮発性メモリ用コントローラ
４３・・・第２の不揮発性メモリ用コントローラ
５０・・・第１の不揮発性メモリ
６０・・・第２の不揮発性メモリ
３０１・・・ＬＣＡテーブル
３０２・・・Ｌ２Ｐテーブル
【図１】
2014092973.tif 000003
【図２】
2014092973.tif 000004
【図３】
2014092973.tif 000005
【図４】
2014092973.tif 000006
【図５】
2014092973.tif 000007
【図６】
2014092973.tif 000008
【図７】
2014092973.tif 000009
【図８】
2014092973.tif 000010