(57)【要約】【課題】符号化方式を動的に切り替える。【解決手段】実施形態によれば、メモリシステムは、第１符号化方式で符号化／復号を実行する第１符号化／復号部と、第１符号化方式よりも誤り訂正能力の高い第２符号化方式で符号化／復号を実行する第２符号化／復号部と、前記メモリ領域から読み出されたデータの信頼性に基づいて前記メモリ領域に保存するためのデータを符号化するための符号化部を前記第１符号化／復号部と前記第２符号化／復号部とから選択する符号化方式選択部と、前記第１符号化／復号部及び前記第２符号化／復号部のうち前記符号化方式選択部で選択された符号化部で符号化されたデータを出力するデータ出力部とを備え、前記出力されたデータを前記メモリ領域へ保存する。【選択図】図２
2019057055.tif 000002
【特許請求の範囲】
【請求項１】
ホストと接続可能であり、前記ホスト内のメモリ領域にデータを保存し、読み出すように構成されたコントローラを備えるメモリシステムであって、
前記コントローラは、
第１符号化方式で符号化／復号を実行する第１符号化／復号部と、
第１符号化方式よりも誤り訂正能力の高い第２符号化方式で符号化／復号を実行する第２符号化／復号部と、
前記メモリ領域から読み出されたデータの信頼性に基づいて前記メモリ領域に保存するためのデータを符号化するための符号化部を前記第１符号化／復号部と前記第２符号化／復号部とから選択する符号化方式選択部と、
前記第１符号化／復号部及び前記第２符号化／復号部のうち前記符号化方式選択部で選択された符号化部で符号化されたデータを出力するデータ出力部と、
を備え、
前記出力されたデータを前記メモリ領域へ保存するメモリシステム。
【請求項２】
前記第２符号化方式は、前記第１符号化方式よりも符号化率が高い請求項１に記載のメモリシステム。
【請求項３】
前記信頼性は、所定時間内に前記メモリ領域から読み出されたデータに対して前記符号化方式選択部で選択された復号部が実行した復号においてビット誤りが検出されたか否かを示す情報であり、
前記符号化方式選択部は、前記所定時間内に前記メモリ領域から読み出されたデータに対して実行された復号によりビット誤りが検出されなかった場合、前記メモリ領域に保存するためのデータを符号化するための符号化部を前記第１符号化／復号部とし、前記所定時間内に前記メモリ領域から読み出されたデータに対して実行された復号によりビット誤りが検出された場合、前記メモリ領域に保存するためのデータを復号するための符号化部を前記第２符号化／復号部とする
請求項１に記載のメモリシステム。
【請求項４】
前記信頼性は、前記メモリ領域から読み出されたデータに対して前記符号化方式選択部で選択された復号部が実行した復号において検出された誤りビットの数であり、
前記符号化方式選択部は、前記メモリ領域から読み出されたデータに対して前記符号化方式選択部で選択された復号部が実行した復号において検出された誤りビットの数が第１閾値以上である場合、前記メモリ領域に保存するためのデータを符号化するための符号化部を前記第２符号化／復号部とし、前記ビットの数が前記第１閾値以下である第２閾値未満である場合、前記メモリ領域に保存するためのデータを符号化するための符号化部を前記第１符号化／復号部とする
請求項１に記載のメモリシステム。
【請求項５】
前記符号化方式選択部は、前記メモリ領域から読み出されたデータの信頼性に基づいて前記メモリ領域に保存するためのデータを符号化するための符号化部を前記第１符号化／復号部から前記第２符号化／復号部に、又は、前記第２符号化／復号部から前記第１符号化／復号部に切り替えた場合、前記メモリ領域から読み出された前記データを切り替え前の前記第１符号化／復号部又は前記第２符号化／復号部で復号した後、切り替え後の前記第２符号化／復号部又は前記第１符号化／復号部で再符号化し、再符号化後の前記データで前記メモリ領域内の前記データを更新する請求項１に記載のメモリシステム。
【請求項６】
前記符号化方式選択部は、前記第１符号化／復号部又は前記第２符号化／復号部が前記メモリ領域から読み出されたデータの復号に失敗した場合、前記メモリ領域内の前記データを破棄する請求項１に記載のメモリシステム。
【請求項７】
前記符号化方式選択部は、前記メモリ領域から読み出されたデータの信頼性が高い場合、前記第１符号化／復号部又は前記第２符号化／復号部による符号化を実行せずに、前記メモリ領域に保存するための前記データを前記メモリ領域に保存する請求項１に記載のメモリシステム。
【請求項８】
前記符号化方式選択部は、前記メモリ領域に保存するためのデータの重要度を管理し、前記重要度に基づいて前記メモリ領域に保存するためのデータを符号化する符号化部を前記第１符号化／復号部と前記第２符号化／復号部とから選択する請求項１に記載のメモリシステム。
【請求項９】
前記メモリ領域は、複数の領域に区画されて管理され、
前記符号化方式選択部は、前記メモリ領域の個々の領域から読み出されたデータの信頼性に基づいて前記メモリ領域の個々の領域に保存するためのデータを符号化するための符号化部を前記第１符号化／復号部と前記第２符号化／復号部とから選択する
請求項１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、メモリシステムに関する。
【背景技術】
【０００２】
ホストに搭載されるメモリをホストとメモリシステムとが使用するメモリアーキテクチャであるＵＭＡ（Unified Memory Architecture）が知られている。ＵＭＡが適用されるシステムでは、ホストに対して外部記憶装置として接続されたメモリシステムがホストに搭載されるメモリの一部を使用する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２９８８２号公報
【非特許文献】
【０００４】
【非特許文献１】Hamming, R. W., "Error detecting and error correcting codes". Bell System Tech. J. 29: pp. 147-160 (1950).
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、符号化方式を動的に切り替えることが可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態によれば、メモリシステムは、ホストと接続可能であり、前記ホスト内のメモリ領域にデータを保存し、読み出すように構成されたコントローラを備えるメモリシステムであって、前記コントローラは、第１符号化方式で符号化／復号を実行する第１符号化／復号部と、第１符号化方式よりも誤り訂正能力の高い第２符号化方式で符号化／復号を実行する第２符号化／復号部と、前記メモリ領域から読み出されたデータの信頼性に基づいて前記メモリ領域に保存するためのデータを符号化するための符号化部を前記第１符号化／復号部と前記第２符号化／復号部とから選択する符号化方式選択部と、前記第１符号化／復号部及び前記第２符号化／復号部のうち前記符号化方式選択部で選択された符号化部で符号化されたデータを出力するデータ出力部とを備え、前記出力されたデータを前記メモリ領域へ保存する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態に係るコンピュータシステムの概略構成例を示すブロック図である。
【図２】図２は、第１の実施形態に係るＥＣＣ部のより詳細な構成例を示すブロック図である。
【図３】図３は、第１の実施形態に係る符号化方式決定動作の一例を示すフローチャートである。
【図４】図４は、第１の実施形態に係る復号時の動作の一例を示すフローチャートである。
【図５】図５は、第２の実施形態に係る符号化方式決定動作の一例を示すフローチャートである。
【図６】図６は、第３の実施形態に係るＥＣＣ部のより詳細な構成例を示すブロック図である。
【図７】図７は、第３の実施形態に係る符号化方式決定動作の一例を示すフローチャートである。
【図８】図８は、第４の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図９】図９は、第５の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、第１の実施形態に係るコンピュータシステムの概略構成例を示すブロック図である。図１に示すように、コンピュータシステム１は、ホスト１０と、ホスト１０に外部記憶装置として接続されたメモリシステム２０とを備える。
【００１０】
ホスト１０は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。ホスト１０は、デジタルスチルカメラ、ビデオカメラなどの撮像装置であってもよいし、タブレットコンピュータ、スマートフォン、ゲーム機器、カーナビゲーションシステム、プリンタ機器、スキャナ機器や、サーバーシステムなどであってよい。
【００１１】
メモリシステム２０は、ホスト１０に接続可能なデバイス、例えば、ＳＳＤ（Solid State Drive）、ＵＳＢ（Universal Serial Bus）メモリなどであってよい。メモリシステム２０は、ホスト１０内に組み込まれていてもよいし、ケーブル又はネットワークを介して、ホスト１０に接続されていてもよい。
【００１２】
ホスト１０とメモリシステム２０とは、所定のインタフェース規格により互いに接続される。所定のインタフェース規格は、例えば、広帯域、低レイテンシ、及び、高い拡張性といった特徴を有するＰＣＩｅ（Peripheral Component Interconnect express）規格や、ＰＣＩｅ規格のインタフェース上において不揮発性メモリ（メモリシステム）を扱う規格としてのＮＶＭｅ（Non-Volatile Memory express）規格などであってよい。若しくは、所定のインタフェース規格は、ＳＡＴＡ（Serial Advanced Technology Attachment）規格、ＵＳＢ規格、ＳＡＳ（Serial Attached SCSI）規格、ＭＩＰＩ（Mobile Industry Processor Interface）規格、ＵｎｉＰｒｏ（Unified Protocol）規格、ＵＦＳ（Universal Flash Storage）規格などであってもよい。
【００１３】
ホスト１０は、ＣＰＵ（以下、ホストＣＰＵともいう）１１と、メインメモリ１２と、ホストコントローラ１３と、これらを接続するバス１４とを備える。
【００１４】
ＣＰＵ１１は、ホスト１０内でのコンポーネントを制御するプロセッサである。ＣＰＵ１１は、例えば、メモリシステム２０からメインメモリ１２にロードされるプログラムを実行する。このプログラムは、例えば、オペレーティングシステム、ファイルシステム、アプリケーションプログラムなどを含む。
【００１５】
メインメモリ１２は、例えば、ランダムアクセスメモリである。メインメモリ１２は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性メモリであってもよいし、ＭＲＡＭ（Magnetic Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などの不揮発性メモリであってもよい。
【００１６】
メインメモリ１２は、ホスト使用領域１２Ａと、デバイス使用領域１２Ｂとを備える。ホスト使用領域１２Ａは、例えば、ホスト１０がオペレーティングシステム（ＯＳ）若しくはユーザプログラムを実行するときのプログラム展開領域として、又は、プログラム展開領域に展開されたプログラムを実行するときのワーキングエリアとして使用される。
【００１７】
デバイス使用領域１２Ｂは、メモリシステム２０が使用可能なエリアであり、ホストメモリバッファやユニファイドメモリ（ＵＭ：Unified Memory）などとも称される。デバイス使用領域１２Ｂのサイズ（メモリ容量）及びレンジは、基本的にはホスト１０により指定されるが、例えばメモリシステム２０からの要求に応じてホスト１０のＯＳが決定する構成など、種々変更することができる。
【００１８】
例えば、ホスト１０におけるＣＰＵ１１又はホストコントローラ１３は、メモリシステム２０から受け取ったロジカルアドレスとフィジカルアドレスとの対応関係を示すアドレス変換テーブル（Address Translation Table）４２をキャッシュデータとしてデバイス使用領域１２Ｂ内に格納する。ここで、ロジカルアドレスとは、ホスト１０が管理する仮想アドレス空間上のアドレスであり、フィジカルアドレスとは、不揮発性メモリ４０における物理アドレス空間上のアドレスである。なお、デバイス使用領域１２Ｂが格納するデータは、アドレス変換テーブル４２に限定されず、例えばＣＰＵ３２が実行するファームウエアや各種テーブルなど、種々のデータであってよい。また、メモリシステム２０によるデバイス使用領域１２Ｂの使用目的は、データのキャッシュに限定されない。すなわち、メモリシステム２０は、種々の目的でホスト１０のメインメモリ１２におけるデバイス使用領域１２Ｂを使用することが可能である。
【００１９】
デバイス使用領域１２Ｂ内にアドレス変換テーブル４２を格納する場合、デバイス使用領域１２Ｂのサイズは、少なくともメモリシステム２０内のＲＡＭ３３のサイズよりも大きいサイズであることが好ましい。このような構成とすることで、以下のような利点を得ることができる。
【００２０】
第一の利点は、メモリシステム２０の低コスト化を実現することが可能になる点である。近年、メモリセルアレイの３次元化などにより、メモリシステム２０内の不揮発性メモリ４０が大容量化されてユーザデータを格納するユーザデータ領域４１のサイズ（メモリ容量）が大きくなったことに伴い、ホスト１０が管理するロジカルアドレスを不揮発性メモリ４０上のフィジカルアドレスに変換するアドレス変換テーブル４２のサイズも大きくなっている。
【００２１】
一方、リード／ライト動作を高速に行うには、ロジカルアドレスからフィジカルアドレスへの変換を高速に行う必要があり、そのためには、アドレス変換テーブル４２を、キャッシュデータとして、例えば、メモリシステム２０内のＲＡＭ３３にリードしておく方法がある。しかし、上述のように、アドレス変換テーブル４２のサイズが大きいため、その全てをＲＡＭ３３に記憶させるとなると、大きなサイズ（メモリ容量）のＲＡＭ３３が必要となる。これは、メモリシステム２０のコストを増加させることを意味する。
【００２２】
そこで、デバイス使用領域１２ＢのサイズをＲＡＭ３３のサイズよりも大きくし、このデバイス使用領域１２Ｂ内にアドレス変換テーブル４２の全て又は一部をキャッシュ変換テーブル（キャッシュデータ）４３として記憶させることにより、メモリシステム２０内のＲＡＭ３３のサイズを増大させることなく、アドレス変換テーブル４２の全て又は一部を高速アクセス可能なメモリ領域（デバイス使用領域１２Ｂ）に配置することが可能となる。その結果、メモリシステム２０の低コスト化を実現することができる。
【００２３】
第二の利点は、メモリシステム２０でのアクセス性能を向上することが可能になる点である。アドレス変換テーブル４２を、キャッシュデータとして、メモリシステム２０内のＲＡＭ３３に記憶させる場合、キャッシュデータとしてＲＡＭ３３にリードできるアドレス変換テーブル４２のサイズは制限される。即ち、アドレス変換テーブル４２の一部が、キャッシュデータとしてＲＡＭ３３に記憶される。これは、ＲＡＭ３３のサイズを大きくすることなく、アクセス性能の向上を図るためである。
【００２４】
この場合、ＲＡＭ３３でのキャッシュヒット率によりアクセス速度が遅くなるケースがある。そして、例えばキャッシュミスしたとき、まず、不揮発性メモリ４０からアドレス変換テーブル４２をリードし、その後、ロジカルアドレスからフィジカルアドレスへのアドレス変換を行い、さらにその後、実際のアクセス動作に入らなければならない。これは、不揮発性メモリ４０へのアクセス性能が悪くなる、即ち、アクセス速度が遅くなることを意味する。
【００２５】
そこで、デバイス使用領域１２ＢのサイズをＲＡＭ３３のサイズよりも大きくすることで、デバイス使用領域１２Ｂにリードできるアドレス変換テーブル４２のサイズをより大きくすることが可能となる。例えば、アドレス変換テーブル４２の全てをキャッシュ変換テーブル４３としてデバイス使用領域１２Ｂ内に記憶させることも可能になる。それにより、キャッシュ変換テーブル４３でのキャッシュヒット率が向上し、不揮発性メモリ４０へのアクセス性能を向上することができる。
【００２６】
ホストコントローラ１３は、ホスト１０及びメモリシステム２０間でデータ通信を行うためのコントローラである。ホストコントローラ１３は、例えば、ファイルシステムに基づき、ライトコマンド又はリードコマンドをメモリシステム２０に発行する。また、ホストコントローラ１３は、メモリシステム２０から、デバイス使用領域１２Ｂ内のデータのリード／ライトを要求するリード／ライト要求を受信する。
【００２７】
メモリシステム２０は、メモリコントローラ３０と、不揮発性メモリ４０と、を備える。不揮発性メモリ４０は、大容量化が可能なストレージメモリ、例えば、ＮＡＮＤ型フラッシュメモリである。不揮発性メモリ４０は、２次元構造のメモリセルアレイを有してもよいし、３次元構造のメモリセルアレイを有してもよい。不揮発性メモリ４０は、スタックされた複数のメモリチップを含んでもよい。
【００２８】
不揮発性メモリ４０は、ユーザデータを記憶するユーザデータ領域４１を備える。また、不揮発性メモリ４０は、ロジカルアドレスとフィジカルアドレスとの関係を示すアドレス変換テーブル４２を記憶してもよい。
【００２９】
メモリコントローラ３０は、例えば不揮発性メモリ４０からアドレス変換テーブル４２の全部又は一部をリードし、これを、ホストＩ／Ｆ３１を介してホスト１０に転送する。ホストコントローラ１３は、メモリコントローラ３０からの指示に従い、アドレス変換テーブル４２の全部又は一部を、キャッシュ変換テーブル４３として、デバイス使用領域１２Ｂ内に記憶する。メモリコントローラ３０がデバイス使用領域１２Ｂのリード／ライト動作を実行する手順は、例えば、Universal flash storage unified memory extensionなどの規格に従ってもよい。
【００３０】
メモリコントローラ３０は、例えば、ホストインタフェース（Ｉ／Ｆ）３１と、ＣＰＵ３２と、ＲＡＭ３３と、ＥＣＣ（Error Correction Code）部３４と、バッファメモリ３５と、メモリインタフェース（Ｉ／Ｆ）３７と、これらを接続する内部バス３８と、を備える。
【００３１】
ホストＩ／Ｆ３１は、ホスト１０からリード／ライトコマンドなどの様々なコマンドを受信する。また、ホストＩ／Ｆ３１は、デバイス使用領域１２Ｂにアクセスするためのコマンド（リード／ライトコマンドなど）をホスト１０に送信することができる。
【００３２】
ＲＡＭ３３は、メモリシステム２０内に設けられたデバイス内蔵ＲＡＭである。ＲＡＭ３３は、メモリコントローラ３０内に設けられるが、これに代えて、メモリコントローラ３０とは独立に設けられてもよい。ＲＡＭ３３は、例えば、ＤＲＡＭ、ＳＲＡＭ（Static Random Access Memory）などの揮発性ＲＡＭであってよい。ＲＡＭ３３は、ＣＰＵ３２の作業エリアとして使用され、ロードされたファームウエアや各種テーブルなどの種々のデータを記憶する。
【００３３】
ＲＡＭ３３は、例えば、テーブルキャッシュタグ３３１を記憶する。テーブルキャッシュタグ３３１は、例えば、デバイス使用領域１２Ｂ内に記憶されたキャッシュ変換テーブル４３を管理するタグ情報である。即ち、テーブルキャッシュタグ３３１は、不揮発性メモリ４０のアクセス時において、ロジカルアドレスをフィジカルアドレスに変換するキャッシュ変換テーブル４３がデバイス使用領域１２Ｂ内に存在するか否かのヒット／ミス判定に使用される。
【００３４】
このように、テーブルキャッシュタグ３３１は、デバイス使用領域１２Ｂ内ではなく、メモリコントローラ３０内のＲＡＭ３３内に記憶しておくのが望ましい。これは、ＣＰＵ３２がＲＡＭ３３内のテーブルキャッシュタグ３３１を参照することで、デバイス使用領域１２Ｂにアクセスすることなく、直ちに、上述のヒット／ミス判定を行うことができるからである。ただし、アドレス変換テーブル４２の全てをホスト１０側のデバイス使用領域１２Ｂにキャッシュする場合、ＲＡＭ３３内のテーブルキャッシュタグ３３１が省略されてもよい。
【００３５】
ＥＣＣ部３４は、不揮発性メモリ４０にデータをライトする場合、ライトデータをエンコード（ＥＣＣエンコード）することによって、ライトデータを誤り訂正符号によって保護する。また、不揮発性メモリ４０からデータをリードする場合、ＥＣＣ部３４は、不揮発性メモリ４０から読出した誤り訂正符号を復号することで、リードデータに対する誤り訂正を実行する（ＥＣＣデコード）。
【００３６】
メモリＩ／Ｆ３７は、不揮発性メモリ４０に対するライト／リードを実行する際のインタフェースとして機能する。
【００３７】
ＣＰＵ３２は、例えばＲＡＭ３３に記憶されているファームウエアをリードして実行することで、メモリコントローラ３０内の各部の動作を制御する。
【００３８】
以上のような構成において、メモリシステム２０がホスト１０のメインメモリ１２におけるデバイス使用領域１２Ｂを使用する場合、メモリシステム２０は、意図的な改竄やビット化け等による破壊を防止するために、デバイス使用領域１２ＢにキャッシュするデータをＥＣＣ部３４を用いて符号化する。図２は、本実施形態に係るＥＣＣ部のより詳細な構成例を示すブロック図である。
【００３９】
図２に示すように、ＥＣＣ部３４は、符号化方式選択部３４２と、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…と、セレクタ３４４と、タイマ３４５と、データ入力部３４１と、データ出力部３４７とを備える。
【００４０】
第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…は、入力されたデータに対する符号化又は復号を実行する。第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…は、それぞれ誤り訂正能力が異なる符号化方式を採用する。例えば、第１符号化／復号部３４３ａが採用する符号化方式による誤り訂正能力は、第２符号化／復号部３４３ｂが採用する符号化方式による誤り訂正能力よりも低い。ただし、１つの符号化／復号部が異なる誤り訂正能力の符号化及び復号を実行可能である場合には、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…をまとめて１つの符号化／復号部とすることも可能である。また、本実施形態は、３つ以上の符号化／復号部を備える場合、それらのうちのいずれか２つ以上が同じ符号化方式を採用することを排除していない。
【００４１】
ここで、誤り訂正能力が低いとは、復号対象のデータに対して訂正することができる誤りビットの数（訂正可能数）が０（誤り検出のみが可能である場合）又は比較的小さい数（例えば訂正可能数が１）であることをいう。これに対し、誤り訂正能力が高いとは、復号対象のデータに対して訂正することができる誤りビットの数（訂正可能数）が比較的大きい数（例えば訂正可能数が２又はそれ以上）であることをいう。一般的には、誤り訂正能力が低い場合には、データに対して付加する冗長部（パリティ等）が小さく、符号化率を低く抑えることができるため、メモリの利用効率（例えばユーザデータに対する実質的なメモリ容量）が高い。一方、誤り訂正能力が高い場合には、データに対して付加する冗長部（パリティ等）が大きく、符号化率が高くなるため、メモリの利用効率が低くなる。そこで本実施形態では、状況に応じて使用する符号化方式（若しくは誤り訂正能力）を選択することで、デバイス使用領域１２Ｂにキャッシュされたデータの信頼性を確保しつつ、デバイス使用領域１２Ｂの利用効率を高める。
【００４２】
符号化方式選択部３４２は、状況に応じて使用する符号化方式（若しくは誤り訂正能力）を選択する。符号化方式選択部３４２は、ホスト１０内のデバイス使用領域１２Ｂに関する信頼性を評価するための情報（以下、エラー情報という）を取得し、取得されたエラー情報に基づいて、デバイス使用領域１２Ｂにキャッシュするデータに対する符号化方式を決定する。具体的には、例えば、符号化方式選択部３４２は、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…から取得したエラー情報に基づいて、データ入力部３４１より入力されたデータ（符号化データ又は復号データ）の出力先を、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…のいずれかに決定する。
【００４３】
ここで、エラー情報は、例えば、デバイス使用領域１２Ｂから読み出したデータに関して第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…がビット誤りを検出したか否かの情報であってよい。ただし、エラー情報は、これに限定されず、デバイス使用領域１２Ｂから読み出したデータに対して第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…が実行した誤り検出／訂正処理（以下、ＥＣＣ処理という）で特定された誤りビットの数又はビット誤りレート（ＢＥＲ）や、デバイス使用領域１２Ｂとされた領域を構成する各ブロックのプログラム／消去回数など、デバイス使用領域１２Ｂについてデータ保持特性などの信頼性に関する劣化の度合い（以下、疲弊度という）を評価可能な情報であればよく、符号化方式選択部３４２はエラー情報として種々の情報を使用することが可能である。
【００４４】
また、本実施形態において、エラー情報は、デバイス使用領域１２Ｂ全体に対して１つのエラー情報とするが、これに限定されない。例えば、デバイス使用領域１２Ｂを複数の領域に分割し、それぞれの領域に関するエラー情報であってもよいし、デバイス使用領域１２Ｂにキャッシュされたデータを書込み又は読出し単位のデータに区分けした際のその単位データごとのエラー情報であってもよい。
【００４５】
加えて、符号化方式選択部３４２は、デバイス使用領域１２Ｂから読み出したデータに対する復号方式として、このデータを符号化した際に使用した符号化方式に対応する復号方式を選択する。すなわち、符号化方式選択部３４２は、デバイス使用領域１２Ｂから読み出したデータを符号化する際に使用した符号化／復号部を記憶しておき、当該データの復号時の入力先として選択する。
【００４６】
なお、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…それぞれの符号化方式としては、ＡＥＳ（Advanced Encryption Standard）などの暗号化方式や、ハミング符号などの誤り訂正符号や、ＣＲＣ（Cyclic Redundancy Check）−３２や、その他様々の符号化方式を採用することができる。本説明では、暗号化もまとめて、ビット誤り（又は誤りビット）の検出が可能な符号を誤り検出符号と呼び、誤り訂正が可能な符号を誤り訂正符号と呼ぶ。なお、誤り訂正符号には、誤り訂正ができない場合でも誤り検出が可能な符号も含まれている。また、通常の誤り訂正では、誤りビット等を訂正する過程において誤り検出も実行されるため、本説明では、誤り訂正の過程でビット誤り等を検出したことを「誤り検出した」とも言う。
【００４７】
タイマ３４５は、あるタイミングからの経過時間を計測するタイマであり、例えばデバイス使用領域１２Ｂから読み出したデータに関して所定時間内にビット誤りが検出されたか否かを判定する際の経過時間を計測する。
【００４８】
セレクタ３４４は、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…から出力された符号化されたデータ（以下、符号化データ又は符号語という）、又は、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…から出力された復号されたデータ（以下、復号データ又は復号語という）を出力する。
【００４９】
データ入力部３４１は、符号化対象又は復号対象のデータを、内部バス３８を介してＲＡＭ３３等から入力する。データ出力部３４７は、セレクタ３４４から出力された符号化データ又は復号データを、内部バス３８を介してＲＡＭ３３等に出力する。
【００５０】
つづいて、本実施形態に係るＥＣＣ部３４における符号化方式選択部３４２がデバイス使用領域１２Ｂにキャッシュするデータに対する符号化方式を決定する際の動作について、図面を参照して詳細に説明する。図３は、本実施形態に係る符号化方式決定動作の一例を示すフローチャートである。なお、本説明では、簡略化のため、符号化方式選択部３４２が第１符号化／復号部３４３ａ及び第２符号化／復号部３４３ｂの２つの符号化／復号部のうちから使用する符号化／復号部を選択し、且つ、第１符号化／復号部３４３ａに採用された符号化方式の方が第２符号化／復号部３４３ｂに採用された符号化方式よりも誤り訂正能力が低い場合を例示する。
【００５１】
図３に示すように、本動作において、例えばＣＰＵ３２からの指示に基づいてＥＣＣ部３４が起動すると、まず、符号化方式選択部３４２が、初期状態で使用する符号化方式、すなわち、デバイス使用領域１２Ｂにキャッシュするデータを符号化／復号する符号化／復号部を選択する（ステップＳ１０１）。本説明では、初期状態でデータの入力先とする符号化／復号部を第２符号化／復号部３４３ｂとするが、これに限らず、第１符号化／復号部３４３ａであってもよい。もしくは、ホスト１０によって与えられたデバイス使用領域１２Ｂのサイズに応じて、初期に使用する符号化／復号部が決定されてもよい。例えばデバイス使用領域１２Ｂのサイズが比較的大きい場合、符号化率の高い第２符号化／復号部３４３ｂを初期に使用し、デバイス使用領域１２Ｂのサイズが比較的小さい場合、符号化率の低い第１符号化／復号部３４３ａを初期に使用することとしてもよい。
【００５２】
つぎに、符号化方式選択部３４２が、タイマ３４５を起動して、経過時間の計測を開始し（ステップＳ１０２）、所定時間が経過するまで（ステップＳ１０４のＹＥＳ）の間に、デバイス使用領域１２Ｂから読み出したデータに関して第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂが誤り検出をしたか否かを判定する（ステップＳ１０３）。
【００５３】
所定時間が経過する前に誤りが検出された場合（ステップＳ１０４のＮＯ，Ｓ１０３のＹＥＳ）、符号化方式選択部３４２は、符号化方式を誤り訂正能力が高い方の符号化方式、すなわち、デバイス使用領域１２Ｂにキャッシュするデータの入力先として誤り訂正能力が高い方の第２符号化／復号部３４３ｂを選択し（ステップＳ１０６）、ステップＳ１０７へ進む。
【００５４】
一方、所定時間内に誤りが検出されなかった場合（ステップＳ１０３のＮＯ，Ｓ１０４のＹＥＳ）、符号化方式選択部３４２は、符号化方式を誤り訂正能力が低い方の符号化方式、すなわち、デバイス使用領域１２Ｂにキャッシュするデータの入力先として誤り訂正能力が低い方の第１符号化／復号部３４３ａを選択し（ステップＳ１０５）、ステップＳ１０７へ進む。
【００５５】
ステップＳ１０７では、符号化方式選択部３４２は、現在選択されている符号化方式とステップＳ１０５又はＳ１０６で選択された符号化方式とを比べ、符号化方式を切り替える必要があるか否かを判定する。言い換えれば、ステップＳ１０７では、符号化方式選択部３４２は、デバイス使用領域１２Ｂにキャッシュするデータの現在の入力先と、ステップＳ１０５又はＳ１０６で選択された新たな入力先とを比較し、入力先を切り替える必要があるか否かを判定する。入力先を切り替える必要がない場合（ステップＳ１０７のＮＯ）、符号化方式選択部３４２は、ステップＳ１１２へ進む。
【００５６】
一方、入力先を切り替える必要がある場合（ステップＳ１０７のＹＥＳ）、符号化方式選択部３４２は、デバイス使用領域１２Ｂにキャッシュするデータの入力先を、ステップＳ１０５又はＳ１０６で選択した入力先に切り替える（ステップＳ１０８）。つぎに、符号化方式選択部３４２は、デバイス使用領域１２Ｂにキャッシュされているデータを読み出して復号し（ステップＳ１０９）、つづいて、復号されたデータをステップＳ１０８で切り替えた符号化方式の符号化／復号器（第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂ）で再符号化する（ステップＳ１１０）。その後、符号化方式選択部３４２は、再符号化により得られた符号化データをデバイス使用領域１２Ｂにキャッシュし（ステップＳ１１１）、ステップＳ１１２へ進む。
【００５７】
ステップＳ１１２では、符号化方式選択部３４２は、本動作を終了するか否かを判定し、終了する場合（ステップＳ１１２のＹＥＳ）、本動作を終了する。一方、終了しない場合（ステップＳ１１２のＮＯ）、符号化方式選択部３４２は、タイマ３４５をリセットした後（ステップＳ１１３）、ステップＳ１０３へリターンして、以降の動作を実行する。
【００５８】
以上のように、本実施形態では、所定時間内にデバイス使用領域１２Ｂから読み出したデータに誤りが検出されたか否かに基づいて、デバイス使用領域１２Ｂにキャッシュするデータの符号化方式が決定される。それにより、本実施形態によれば、ビット誤りの発生状況又はビット誤りが発生しやすいか否かに基づいて、使用する符号化方式（若しくは誤り訂正能力）を選択することが可能となるため、デバイス使用領域１２Ｂにキャッシュされたデータの信頼性を確保しつつ、デバイス使用領域１２Ｂの利用効率を高めることが可能となる。
【００５９】
なお、本実施形態では、符号化方式を切り替えた際に、デバイス使用領域１２Ｂにキャッシュされた全てのデータを一旦読み出して復号・再符号化し、その後、デバイス使用領域１２Ｂに書き直す場合を例示したが、これに限定されない。例えば、デバイス使用領域１２Ｂを複数の領域（例えば書込み／読出し単位となる領域）に区画しておき、メモリコントローラ３０におけるＥＣＣ部３４等の動作状況に応じて順に、それぞれの領域からキャッシュデータを読み出して、復号・再符号化し、デバイス使用領域１２Ｂに書き直すように構成することも可能である。若しくは、誤りが検出されたデータを対象としてこれを復号・再符号化し、デバイス使用領域１２Ｂに書き直すように構成することも可能である。また、誤りが検出されたものの、誤り訂正ができなかったデータに関しては、これを破棄するように構成することも可能である。
【００６０】
つづいて、本実施形態に係るＥＣＣ部３４が復号時に実行する動作について、図面を参照して詳細に説明する。図４は、本実施形態に係る復号時の動作の一例を示すフローチャートである。なお、本説明では、簡略化のため、符号化方式選択部３４２が第１符号化／復号部３４３ａ及び第２符号化／復号部３４３ｂの２つの符号化／復号部のうちから使用する符号化／復号部を選択し、且つ、第１符号化／復号部３４３ａに採用された符号化方式の方が第２符号化／復号部３４３ｂに採用された符号化方式よりも誤り訂正能力が低い場合を例示する。
【００６１】
図４に示すように、符号化方式選択部３４２は、起動後、例えばＣＰＵ３２による指示に基づいてデバイス使用領域１２Ｂから読み出されたキャッシュデータが入力されると（ステップＳ１２１のＹＥＳ）、入力されたキャッシュデータを現在選択中の符号化方式に対応する符号化／復号部（第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂ）に入力する（ステップＳ１２２）。これに対し、キャッシュデータが入力された第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂは、入力されたキャッシュデータを復号し、その復号結果をセレクタ３４４へ出力するとともに、復号により誤りが検出されていた場合には、誤りが検出されたこと又は復号結果をエラー情報として符号化方式選択部３４２へ通知する。
【００６２】
符号化方式選択部３４２は、選択中の第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂからのエラー情報を取得すると（ステップＳ１２３）、復号において誤りが検出されたか否かを判定し（ステップＳ１２４）、誤りが検出されていない場合（ステップＳ１２４のＮＯ）、ステップＳ１２６へ進む。一方、誤りが検出されていた場合（ステップＳ１２４のＹＥＳ）、符号化方式選択部３４２は、取得したエラー情報に基づいて、誤り訂正済みであるか否かを判定し（ステップＳ１２５）、誤り訂正済みである場合（ステップＳ１２５のＹＥＳ）、ステップＳ１２６へ進む。一方、誤り訂正済みでない場合、すなわち、検出された誤りを訂正できなかった場合（ステップＳ１２５のＮＯ）、符号化方式選択部３４２は、ステップＳ１２９へ進む。
【００６３】
ステップＳ１２６では、符号化方式選択部３４２は、例えばＣＰＵ３２に対し、セレクタ３４４を介してデータ出力部３４７から出力されてバッファメモリ３５等に一時保持されている誤り訂正後のデータを、現在選択中の符号化／復号部（第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂ）に入力して再符号化する。つづいて、符号化方式選択部３４２は、再符号化されたデータでデバイス使用領域１２Ｂ内のキャッシュデータを更新するようにＣＰＵ３２に指示し（ステップＳ１２７）、ステップＳ１２８へ進む。
【００６４】
ステップＳ１２９では、符号化方式選択部３４２は、誤り訂正ができなかったデバイス使用領域１２Ｂ上のキャッシュデータを破棄するようＣＰＵ３２へ要求し（ステップＳ１２９）、その後、メモリシステム２０を初期状態にリセットするか否かを判定する（ステップＳ１３０）。リセットする場合（ステップＳ１３０のＹＥＳ）、符号化方式選択部３４２は、メモリシステム２０のリセットをＣＰＵ３２に要求し（ステップＳ１３１）、その後、本動作を一旦終了する。一方、メモリシステム２０をリセットしない場合（ステップＳ１３０のＮＯ）、符号化方式選択部３４２は、ステップＳ１２８へ進む。
【００６５】
ステップＳ１２８では、符号化方式選択部３４２は、本動作を終了するか否かを判定し、終了する場合（ステップＳ１２８のＹＥＳ）、本動作を終了する。一方、終了しない場合（ステップＳ１２８のＮＯ）、符号化方式選択部３４２は、ステップＳ１２１へリターンし、以降の動作を実行する。
【００６６】
このように、デバイス使用領域１２Ｂから読み出したキャッシュデータに誤りビットが含まれている場合であっても、それを訂正することが可能であった場合には、誤り訂正後のデータでデバイス使用領域１２Ｂ内のキャッシュデータを更新してもよい。これにより、デバイス使用領域１２Ｂ内のキャッシュデータの修復が可能となるため、信頼性を高めてより安定した動作を実現することが可能となる。
【００６７】
以上のように、本実施形態では、ホスト１０側に用意されたデバイス使用領域１２Ｂ内にキャッシュするアドレス変換テーブル４２などのデータが意図的な改竄やビット化け等により破壊されることを防止するために、このデータを誤り訂正符号により保護するにあたり、状況に応じて使用する符号化方式（若しくは誤り訂正能力）を選択可能とすることで、デバイス使用領域１２Ｂにキャッシュされたデータの信頼性を確保しつつ、デバイス使用領域１２Ｂの利用効率を高めることが可能となる。
【００６８】
なお、上述した第１の実施形態では、ビット誤りの発生状況又はビット誤りが発生しやすいか否かなどの状況に基づいて使用する符号化方式（若しくは誤り訂正能力）を切り替える場合を例示したが、これに限定されるものではない。例えば、デバイス使用領域１２Ｂにキャッシュするデータの重要度に基づいて、使用する符号化方式（若しくは誤り訂正能力）を切り替えるように構成することも可能である。すなわち、重要度が高いデータに対しては、誤り訂正能力が高い方の符号化方式（例えば第２符号化／復号部３４３ｂに対応）を使用し、重要度が低いデータに対しては、誤り訂正能力が低い方の符号化方式（例えば第１符号化／復号部３４３ａに対応）を使用するように構成することも可能である。なお、重要度の高いデータには、アドレス変換テーブル４２などが該当し得る。また、データの重要度は、例えばデータの属性情報に基づいて符号化方式選択部３４２が決定して管理してもよいし、ユーザがホスト１０を介して適宜設定したものを符号化方式選択部３４２が管理してもよい。
【００６９】
また、上述した第１の実施形態では、所定時間内にビット誤りが検出されなかった場合、デバイス使用領域１２Ｂにキャッシュするデータを誤り訂正能力が低い方の符号化方式（第１符号化／復号部３４３ａに対応）で符号化する場合を例示したが、これに限定されない。例えば、所定時間内にビット誤りが検出されなかった場合など、デバイス使用領域１２Ｂから読み出されたデータの信頼性が高い場合には、符号化を実行せずに、デバイス使用領域１２Ｂにキャッシュするように構成することも可能である。なお、本説明における「データの信頼性が高い」とは、データに所定時間内やある一定回数の読出しにおいてデータから誤りビットが検出されなかったことや、データに対して実行されたＥＣＣ処理で特定された誤りビットの数やビット誤りレート（ＢＥＲ）やデバイス使用領域１２Ｂとされた領域を構成する各ブロックのプログラム／消去回数などの値が予め設定しておいた閾値よりも低いことなどと定義することができる。ただし、このような定義に限定されず、データの正しさが十分に示されている場合には、データの信頼性が高いとされてよい。データの信頼性の高低を判断する際の上記閾値は、例えば、メモリコントローラ３０によって予め設定される値であってもよいし、ユーザがホスト１０を用いてメモリシステム２０に対して任意に設定できる値であってもよい。さらに、上記閾値は、メモリシステム２０の動作中にメモリコントローラ３０によって動的に変更されてもよい。
【００７０】
なお、本説明において、第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…それぞれに採用された符号化方式の訂正可能数が比較的大きいか比較的小さいかの判断においては、訂正可能数が所定数以上であれば訂正可能数が比較的大きいと判断され、訂正可能数が上記所定数と同一又は異なる所定数未満であれば訂正可能数が比較的小さいと判断されてよい。また、その判断主体は、符号化方式選択部３４２であってもよいし、ＥＣＣ３４を含むメモリシステム２０の設計者であってもよいし、メモリシステム２０を使用するユーザであってもよい。判断主体が設計者である場合には、その判断結果に基づいて符号化方式選択部３４２を含むＥＣＣ部３４が設計される。また、判断主体がユーザである場合には、その判断結果が符号化方式選択部３４２に設定され、符号化方式選択部３４２が登録された判断結果に基づいて動作する。
【００７１】
また、デバイス使用領域１２Ｂのサイズが比較的大きいか比較的小さいかについては、デバイス使用領域１２Ｂの使用目的（例えば格納するデータの種類やサイズ等）やデバイス使用領域１２Ｂのサイズ等に応じて適宜判断されてよい。また、その判断主体は、ＣＰＵ３２又は符号化方式選択部３４２であってもよいし、ＥＣＣ３４を含むメモリシステム２０の設計者であってもよいし、メモリシステム２０を使用するユーザであってもよい。判断主体が設計者である場合には、その判断結果に基づいて符号化方式選択部３４２を含むＥＣＣ部３４が設計される。また、判断主体がユーザである場合には、その判断結果が符号化方式選択部３４２に設定され、符号化方式選択部３４２が登録された判断結果に基づいて動作する。
【００７２】
（第２の実施形態）
つぎに、第２の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。第１の実施形態では、所定時間内に誤りが検出されたか否かに基づいて符号化方式を選択することで、ホスト１０側のＵＭ領域にキャッシュされたデータの信頼性を確保しつつ、ＵＭ領域の利用効率を高める場合について例示した。これに対し、本実施形態では、一回の復号により検出された誤りビットの数に基づいて符号化方式を選択することで、ホスト１０側のＵＭ領域にキャッシュされたデータの信頼性を確保しつつ、ＵＭ領域の利用効率を高める場合について、例を挙げて説明する。
【００７３】
本実施形態に係るメモリシステムを含むコンピュータシステムの概略構成例は、第１の実施形態において図１を用いて説明したコンピュータシステム１と同様であってよいため、ここでは詳細な説明を省略する。また、本実施形態に係るＥＣＣ部の概略構成例についても、第１の実施形態において図２を用いて説明したＥＣＣ部３４と同様であってよいため、ここでは詳細な説明を省略する。ただし、本実施形態では、図２に示すＥＣＣ部３４におけるタイマ３４５が省略されてもよい。また、本実施形態では、符号化方式選択部３４２が実行する符号化方式決定動作が、図５に例示する符号化方式決定動作となる。
【００７４】
図５に示すように、第２の実施形態に係る符号化方式動作では、例えばＣＰＵ３２からの指示に基づいてＥＣＣ部３４が起動すると、まず、符号化方式選択部３４２が、図３のステップＳ１０１と同様に、初期状態で使用する符号化方式、すなわち、デバイス使用領域１２Ｂにキャッシュするデータを符号化／復号する符号化／復号部を選択する（ステップＳ２０１）。
【００７５】
つぎに、符号化方式選択部３４２は、選択中の第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂからエラー情報が入力されるまで待機する（ステップＳ２０２のＮＯ）。なお、本実施形態において、第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂから符号化方式選択部３４２に入力されるエラー情報には、検出された誤りビットの数が含まれているものとする。
【００７６】
符号化方式選択部３４２は、選択中の第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂからエラー情報が入力されると（ステップＳ２０２のＹＥＳ）、現在選択中の符号化方式、すなわち、データの入力先として現在選択中の符号化／復号部を特定する（ステップＳ２０３）。なお、本説明において、第１符号化／復号部３４３ａが採用する符号化方式を第１符号化方式とし、第２符号化／復号部３４３ｂが採用する符号化方式を第２符号化方式とする。
【００７７】
現在選択中の符号化方式が誤り訂正能力が低い方の第１符号化方式である場合（ステップＳ２０３の第１符号化方式）、符号化方式選択部３４２は、ステップＳ２０２で入力されたエラー情報が示す誤りビットの数が予め設定しておいた第１閾値Ｍ（例えばＭは２）以上であるか否かを判定し（ステップＳ２０４）、誤りビットの数が第１閾値Ｍ未満である場合（ステップＳ２０４のＮＯ）、ステップＳ２０８へ進む。一方、誤りビットの数が第１閾値Ｍ以上である場合（ステップＳ２０４のＹＥＳ）、符号化方式選択部３４２は、符号化方式を誤り訂正能力が高い方の第２符号化方式に変更し（ステップＳ２０５）、ステップＳ２０８へ進む。
【００７８】
また、現在選択中の符号化方式が誤り訂正能力が高い方の第２符号化方式である場合（ステップＳ２０３の第２符号化方式）、符号化方式選択部３４２は、ステップＳ２０２で入力されたエラー情報が示す誤りビットの数が予め設定しておいた第２閾値Ｎ（ＮはＭ以下であって例えば２）未満であるか否かを判定し（ステップＳ２０６）、誤りビットの数が第２閾値Ｎ以上である場合（ステップＳ２０６のＮＯ）、ステップＳ２０８へ進む。一方、誤りビットの数が第２閾値Ｎ未満である場合（ステップＳ２０６のＹＥＳ）、符号化方式選択部３４２は、符号化方式を誤り訂正能力が低い方の第１符号化方式に変更し（ステップＳ２０７）、ステップＳ２０８へ進む。
【００７９】
ステップＳ２０８では、符号化方式選択部３４２は、本動作を終了するか否かを判定し（ステップＳ２０８）、終了する場合（ステップＳ２０８のＹＥＳ）、本動作を終了する。一方、本動作を終了しない場合（ステップＳ２０８のＮＯ）、符号化方式選択部３４２は、ステップＳ２０２へリターンし、以降の動作を実行する。
【００８０】
以上のように、本実施形態では、復号ごとに検出された誤りビットの数に基づいて符号化方式を選択することで、デバイス使用領域１２Ｂにキャッシュされたデータの信頼性を確保しつつ、デバイス使用領域１２Ｂの利用効率を高めることが可能となる。
【００８１】
その他の構成、動作及び効果は、上述した実施形態と同様であってよいため、ここでは重複する説明を省略する。
【００８２】
（第３の実施形態）
つぎに、第３の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第１又は第２の実施形態では、デバイス使用領域１２Ｂ全体に関する状況に応じて使用する符号化方式（若しくは誤り訂正能力）を選択する場合を例示した。これに対し、本実施形態では、デバイス使用領域１２Ｂを複数の領域に分割し、それぞれの領域に関する状況に応じて使用する符号化方式（若しくは誤り訂正能力）を選択する場合について、例を挙げて説明する。
【００８３】
本実施形態に係るメモリシステムを含むコンピュータシステムの概略構成例は、第１の実施形態において図１を用いて説明したコンピュータシステム１と同様であってよいため、ここでは詳細な説明を省略する。ただし、本実施形態では、図１又は図２に示すＥＣＣ部３４が、図６に示すＥＣＣ部３４Ａに置き換えられる。また、本実施形態では、符号化方式選択部３４２が実行する符号化方式決定動作が、図７に例示する符号化方式決定動作となる。さらに、本実施形態では、ホスト１０のメインメモリ１２におけるデバイス使用領域１２Ｂが複数の領域に区画されている。
【００８４】
デバイス使用領域１２Ｂは、例えばメインメモリ１２に対する書込み／読出しの単位であるブロックを単位とし、１ブロック又は数ブロックで１つの領域が構成されるように区画される。各領域に関しては、例えばブロックごとのプログラム／消去回数などに基づいた疲弊度がホスト１０側又はメモリシステム２０側で管理されてもよい。
【００８５】
本実施形態に係るＥＣＣ部３４Ａは、図６に示すように、図２に示すＥＣＣ部３４と同様の構成において、符号化方式管理部３４８を新たに備えるとともに、タイマ３４５が複数のタイマ３４５Ａに置き換えられている。
【００８６】
符号化方式管理部３４８は、デバイス使用領域１２Ｂのそれぞれの領域に関して、現在、いずれの符号化方式が選択されているかを管理する。言い換えれば、符号化方式管理部３４８は、デバイス使用領域１２Ｂのそれぞれの領域から読み出されたキャッシュデータの入力先となる符号化／復号部（第１符号化／復号部３４３ａ，第２符号化／復号部３４３ｂ，…のいずれか）を管理する。
【００８７】
複数のタイマ３４５Ａそれぞれは、デバイス使用領域１２Ｂの複数の領域それぞれにと一対一で対応している。個々のタイマ３４５Ａは、あるタイミングからの経過時間を計測するタイマであり、例えばデバイス使用領域１２Ｂにおける対応付けられた領域から読み出したデータに関して所定時間内に誤りビットが検出されたか否かを判定する際の経過時間を計測する。
【００８８】
つづいて、本実施形態に係る符号化方式決定動作について説明する。図７に示すように、第３の実施形態に係る符号化方式動作では、例えばＣＰＵ３２からの指示に基づいてＥＣＣ部３４Ａが起動すると、まず、符号化方式選択部３４２は、デバイス使用領域１２Ｂにおける個々の領域に対して、図３のステップＳ１０１と同様に、初期状態で使用する符号化方式、すなわち、個々の領域にキャッシュするデータを符号化／復号する符号化／復号部を選択する（ステップＳ３０１）。つづいて、符号化方式選択部３４２は、タイマ３４５Ａを起動して、それぞれの領域についての経過時間の計測を開始する（ステップＳ３０２）。
【００８９】
つぎに、符号化方式選択部３４２は、デバイス使用領域１２Ｂの各領域から読み出したデータに関して第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂが誤り検出をしたか否かを判定する（ステップＳ３０３）。誤りが検出されていた場合（ステップＳ３０３のＹＥＳ）、符号化方式選択部３４２は、誤りが検出された領域に対する符号化方式として、誤り訂正能力が高い方の符号化方式（第２符号化／復号部３４３ｂに対応）を選択し（ステップＳ３０７）、ステップＳ３０８へ進む。一方、誤りが検出されていない場合（ステップＳ３０３のＮＯ）、符号化方式選択部３４２は、タイマ３４５Ａを参照することで、それぞれの領域についての経過時間を特定し（ステップＳ３０４）、所定時間が経過した領域が存在するか否かを判定する（ステップＳ３０５）。所定時間が経過した領域が存在しない場合（ステップＳ３０５のＮＯ）、符号化方式選択部３４２は、ステップＳ３０３へリターンする。一方、所定時間が経過した領域が存在する場合（ステップＳ３０５のＹＥＳ）、符号化方式選択部３４２は、所定時間が経過した領域に対する符号化方式として、誤り訂正能力が低い方の符号化方式（第１符号化／復号部３４３ａに対応）を選択し（ステップＳ３０６）、ステップＳ３０８へ進む。
【００９０】
ステップＳ３０８では、符号化方式選択部３４２は、符号化方式管理部３４８を参照し、各領域に対して現在選択されている符号化方式とステップＳ３０６又はＳ３０７で選択された符号化方式とを比べ、符号化方式を切り替える必要がある領域が存在するか否かを判定する。符号化方式を切り替える必要のある領域が存在しない場合（ステップＳ３０８のＮＯ）、符号化方式選択部３４２は、ステップＳ３１３へ進む。一方、符号化方式を切り替える必要のある領域が存在する場合（ステップＳ３０８のＹＥＳ）、符号化方式選択部３４２は、符号化方式を切り替える必要のある領域について、符号化方式管理部３４８で管理されている符号化方式を、ステップＳ３０６又はＳ３０７で選択された符号化方式に切り替える（ステップＳ３０９）。
【００９１】
つぎに、符号化方式選択部３４２は、符号化方式管理部３４８に管理されている符号化方式を切り替えたデバイス使用領域１２Ｂ内の領域にキャッシュされているデータを読み出して復号し（ステップＳ３１０）、つづいて、復号されたデータを符号化方式管理部３４８に管理されている符号化方式の符号化／復号器（第１符号化／復号部３４３ａ又は第２符号化／復号部３４３ｂ）で再符号化する（ステップＳ３１１）。その後、符号化方式選択部３４２は、再符号化により得られた符号化データをデバイス使用領域１２Ｂの該当する領域にキャッシュし（ステップＳ３１２）、ステップＳ３１３へ進む。
【００９２】
ステップＳ３１３では、符号化方式選択部３４２は、本動作を終了するか否かを判定し、終了する場合（ステップＳ３１３のＹＥＳ）、本動作を終了する。一方、終了しない場合（ステップＳ３１３のＮＯ）、符号化方式選択部３４２は、ステップＳ３０６又はＳ３０７において符号化方式の選択対象となった領域に対するタイマ３４５Ａをリセットした後（ステップＳ３１４）、ステップＳ３０３へリターンして、以降の動作を実行する。
【００９３】
以上のように、本実施形態では、デバイス使用領域１２Ｂを複数の領域に区画し、その領域ごとに、ビット誤りの発生状況又はビット誤りが発生しやすいか否かなどの状況に基づいて使用する符号化方式（若しくは誤り訂正能力）を選択することが可能となるため、符号化方式切替え時に発生する復号及び再符号化の計算量を削減することが可能となる。
【００９４】
その他の構成、動作及び効果は、上述した実施形態と同様であってよいため、ここでは重複する説明を省略する。
【００９５】
なお、上述した第３の実施形態では、デバイス使用領域１２Ｂを区画した複数の領域の全てを対象として、符号化方式を適宜切り替える場合を例示したが、これに限定されず、例えば複数の領域のうちの一部の領域を対象として符号化方式を適宜切り替えるように構成することも可能である。
【００９６】
若しくは、デバイス使用領域１２Ｂを区画した複数の領域のうち、重要度の高いデータをキャッシュする領域、又は、重要度の高いデータをキャッシュするように設定された領域に対しては、誤り訂正能力が高い方の符号化方式（例えば第２符号化／復号部３４３ｂに対応）を割り当て、その他の領域に対しては、誤り訂正能力が低い方の符号化方式（例えば第１符号化／復号部３４３ａに対応）を割り当てるように構成することも可能である。
【００９７】
（第４の実施形態）
つぎに、第４の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第１〜第３の実施形態では、ホスト１０側のメインメモリ１２の一部に設けられたデバイス使用領域１２Ｂ（ＵＭ領域）にキャッシュされるデータの符号化方式を、状況に応じて切り替える場合を例示した。これに対し、本実施形態では、メモリシステムに内蔵されたＤＲＡＭ等にキャッシュされるデータの符号化方式を状況に応じて切り替える場合について、例を挙げて説明する。
【００９８】
図８は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。図８に示すように、本実施形態に係るメモリシステム２０Ａは、図１に示すメモリシステム２０と同様の構成に加え、ＤＲＡＭ２００をさらに備えるとともに、メモリコントローラ３０がＤＲＡＭコントローラ２０１をさらに備えている。
【００９９】
ＤＲＡＭ２００は、アドレス変換テーブルや、起動時等に不揮発性メモリ４０の特定の領域から読み出されて展開されるマスタテーブル（スナップショット）などの各種管理テーブルや、各種管理テーブルの変更差分であるログ情報などを記憶するワーキングメモリとして使用することができるメモリである。また、ＤＲＡＭ２００は、ホスト１０と不揮発性メモリ４０との間でデータ転送をする際のキャッシュメモリとしても用いられることが可能である。
【０１００】
ＤＲＡＭコントローラ２０１は、メモリコントローラ３０からＤＲＡＭ２００へのアクセスを制御するコントローラであり、例えばＤＤＲ（Double Data Rate）でのＤＲＡＭ２００へのアクセスを可能とするコントローラである。
【０１０１】
このような構成において、例えば不揮発性メモリ４０に格納されているアドレス変換テーブル４２などのデータをＤＲＡＭ２００にキャッシュする場合、ＥＣＣ部３４は、このキャッシュされるデータに対して、第１〜第３の実施形態のいずれかと同様の動作を実行する。これにより、メモリシステム２０Ａが内蔵するＤＲＡＭ２００にキャッシュされるデータの符号化方式をビット誤りの発生状況又はビット誤りが発生しやすいか否かなどの状況に応じて切り替えることが可能となるため、ＤＲＡＭ２００にキャッシュされたデータの信頼性を確保しつつ、ＤＲＡＭ２００の利用効率を高めることが可能となる。
【０１０２】
なお、その他の構成、動作及び効果は、上述した実施形態と同様であってよいため、ここでは重複する説明を省略する。
【０１０３】
（第５の実施形態）
また、図９に例示するメモリシステム２０Ｂのように、不揮発性メモリ４０の一部の領域（デバイス使用領域４０Ｂ）を、メモリコントローラ３０のワーキングメモリとして使用することも可能である。
【０１０４】
このような場合も、例えば第４の実施形態と同様に、アドレス変換テーブルなどのデータを不揮発性メモリ４０内のデバイス使用領域４０Ｂにキャッシュする場合、ＥＣＣ部３４は、このキャッシュされるデータに対して、第１〜第３の実施形態のいずれかと同様の動作を実行する。これにより、不揮発性メモリ４０内のデバイス使用領域４０Ｂにキャッシュされるデータの符号化方式をビット誤りの発生状況又はビット誤りが発生しやすいか否かなどの状況に応じて切り替えることが可能となるため、デバイス使用領域４０Ｂにキャッシュされたデータの信頼性を確保しつつ、不揮発性メモリ４０の利用効率を高めることが可能となる。
【０１０５】
その他の構成、動作及び効果は、上述した実施形態と同様であってよいため、ここでは重複する説明を省略する。
【０１０６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０７】
１…コンピュータシステム、１０…ホスト、１１…ＣＰＵ、１２…メインメモリ（ＲＡＭ）、１２Ａ…ホスト使用領域、１２Ｂ，４０Ｂ…デバイス使用領域、１３…ホストコントローラ、１４…バス、２０，２０Ａ，２０Ｂ…メモリシステム、３０…メモリコントローラ、３１…ホストＩ／Ｆ、３２…ＣＰＵ、３３…ＲＡＭ、３３１…テーブルキャッシュタグ、３４，３４Ａ…ＥＣＣ部、３４１…データ入力部、３４２…符号化方式選択部、３４３ａ…第１符号化／復号部、３４３ｂ…第２符号化／復号部、３４４…セレクタ、３４５，３４５Ａ…タイマ、３４７…データ出力部、３４８…符号化方式管理部、３５…バッファメモリ、３７…メモリＩ／Ｆ、３８…内部バス、４０…不揮発性メモリ、４１…ユーザデータ領域、４２…アドレス変換テーブル、４３…キャッシュ変換テーブル、２００…ＤＲＡＭ、２０１…ＤＲＡＭコントローラ。
【図１】
2019057055.tif 000003
【図２】
2019057055.tif 000004
【図３】
2019057055.tif 000005
【図４】
2019057055.tif 000006
【図５】
2019057055.tif 000007
【図６】
2019057055.tif 000008
【図７】
2019057055.tif 000009
【図８】
2019057055.tif 000010
【図９】
2019057055.tif 000011