(57)【要約】      （修正有）【課題】書き込み時間を短縮できるメモリシステムを提供する。【解決手段】メモリシステムは、ＮＡＮＤ型フラッシュメモリ１１と、ＮＡＮＤ型フラッシュメモリ１１を管理するための第１データを有し、第１データを用いてＮＡＮＤ型フラッシュメモリ１１を制御するＳＳＤコントローラ２０とを備える。ＳＳＤコントローラ２０は、ＮＡＮＤ型フラッシュメモリ１１へのユーザデータの書き込み量の累計に応じて、第１データ、または前記第１データを圧縮した第２データのいずれかをＮＡＮＤ型フラッシュメモリ１１に書き込む。【選択図】図２
2019057052.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリを管理するための第１データを有し、前記第１データを用いて前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、前記不揮発性メモリへのユーザデータの書き込み量の累計に応じて、前記第１データ、または前記第１データを圧縮した第２データのいずれかを前記不揮発性メモリに書き込むメモリシステム。
【請求項２】
前記コントローラは、前記不揮発性メモリへの前記ユーザデータの書き込み量の累計が第１値より小さいとき、前記第１データを圧縮した第２データを前記不揮発性メモリに書き込み、
前記ユーザデータの前記書き込み量の累計が前記第１値以上であるとき、前記第１データを前記不揮発性メモリに書き込む請求項１に記載のメモリシステム。
【請求項３】
不揮発性メモリと、
前記不揮発性メモリを管理するための第１データを有し、前記第１データを用いて前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記第１データに関する情報に応じて、前記第１データ、または前記第１データを圧縮した第２データのいずれかを前記不揮発性メモリに書き込むメモリシステム。
【請求項４】
前記情報は、前記第１データに対する前記第２データの圧縮率であり、
前記コントローラは、
前記圧縮率が前記第１値より高いとき、前記第１データを圧縮した前記第２データを前記不揮発性メモリに書き込み、
前記圧縮率が前記第１値以下であるとき、前記第１データを前記不揮発性メモリに書き込む請求項３に記載のメモリシステム。
【請求項５】
前記情報は、前記第１データに含まれる特定値の比率であり、
前記コントローラは、
前記特定値の比率が前記第１値より大きいとき、前記第１データを圧縮した第２データを前記不揮発性メモリに書き込み、
前記特定値の比率が前記第１値以下であるとき、前記第１データを前記不揮発性メモリに書き込む請求項３に記載のメモリシステム。
【請求項６】
前記情報は、前記第１データに対する前記第２データの圧縮率の変化の割合であり、
前記コントローラは、
前記圧縮率の変化の割合が前記第１値より小さいとき、前記第１データを圧縮した第２データを前記不揮発性メモリに書き込み、
前記圧縮率の変化の割合が前記第１値以上であるとき、前記第１データを前記不揮発性メモリに書き込む請求項３に記載のメモリシステム。
【請求項７】
前記第１データは、ユーザデータを除き、かつ前記不揮発性メモリへのユーザデータの書き込みまたは読み出しの少なくともいずれかに応じて更新されるデータである請求項１乃至６のいずれかに記載のメモリシステム。
【請求項８】
前記第１データは、前記ユーザデータに関連付けられた論理アドレスを、前記ユーザデータが記憶された前記不揮発性メモリの記憶場所を示す物理アドレスに変換するためのアドレス変換テーブルを含む請求項７に記載のメモリシステム。
【請求項９】
前記第１データを前記第２データに圧縮する時間と、前記第２データを前記不揮発性メモリに書き込む時間とを合わせた第１時間と、前記第１データを前記不揮発性メモリに書き込む第２時間を取得した場合、
前記第１値は、前記第１時間と前記第２時間とが一致する値に設定される請求項１乃至８のいずれかに記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリシステムに関するものである。
【背景技術】
【０００２】
メモリシステムとして、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリを搭載したＳＳＤ（Solid State Drive）が知られている。ＳＳＤは、例えば、種々のコンピュータの外部記憶装置として用いられる。ＳＳＤでは、ＳＳＤを管理するためのシステムデータを所定期間毎にＮＡＮＤ型フラッシュメモリに書き込み、保存するシステムデータ不揮発化処理が実行される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１７６４２０号公報
【特許文献２】米国特許出願公開第２０１６／００５４９３８号明細書
【特許文献３】米国特許第６６１１９１９号明細書
【特許文献４】特開２０１１−１１３２９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
書き込み時間を短縮できるメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態のメモリシステムは、不揮発性メモリと、前記不揮発性メモリを管理するための第１データを有し、前記第１データを用いて前記不揮発性メモリを制御するコントローラとを具備する。前記コントローラは、前記不揮発性メモリへのユーザデータの書き込み量の累計に応じて、前記第１データ、または前記第１データを圧縮した第２データのいずれかを前記不揮発性メモリに書き込む。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態のメモリシステムの構成を示すブロック図である。
【図２】第１実施形態のＳＳＤコントローラにおける機能ブロック図である。
【図３】第１実施形態のＳＳＤコントローラにおけるシステムデータ不揮発化処理を示すフローチャートである。
【図４】第２実施形態のＳＳＤコントローラにおけるシステムデータ不揮発化処理を示すフローチャートである。
【図５】第１変形例のＳＳＤコントローラにおけるシステムデータ不揮発化処理を示すフローチャートである。
【図６】第２変形例のＳＳＤコントローラにおけるシステムデータ不揮発化処理を示すフローチャートである。
【図７】ユーザデータの総書き込み量に対するシステムデータの圧縮率の変化を示す図である。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。以下の説明において、同一の機能及び構成を有する構成要素については同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、構成部品の材質、形状、構造、配置等を下記のものに特定するものではない。
【０００８】
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。各機能ブロックが以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。ここでは、メモリシステムとして、不揮発性半導体メモリを備えたＳＳＤ（Solid State Drive）を例に挙げる。
【０００９】
［１］第１実施形態
第１実施形態のメモリシステムについて説明する。
【００１０】
［１−１］メモリシステムの構成
図１を用いて、第１実施形態のメモリシステムの構成を説明する。図１は、メモリシステムの構成を示すブロック図である。メモリシステム（ＳＳＤ）１００は、記憶部１０及びＳＳＤコントローラ２０を備える。
【００１１】
記憶部１０は、不揮発性メモリ及び揮発性メモリ等の半導体メモリ、例えば複数のＮＡＮＤ型フラッシュメモリ１１及びＤＲＡＭ（Dynamic Random Access Memory）１２を有する。なおここでは、ＮＡＮＤ型フラッシュメモリ１１及びＤＲＡＭ１２を一例として示すが、半導体メモリの種類及び個数はこれに限定されるものではない。不揮発性メモリとして、例えばＭＲＡＭ（Magnetoresistive Random Access Memory）あるいはＦｅＲＡＭ（Ferroelectric Random Access Memory）等を用いてもよいし、揮発性メモリとしてＳＲＡＭ（Static Random Access Memory）等を用いてもよい。
【００１２】
ＳＳＤコントローラ２０は記憶部１０を制御する。ＳＳＤコントローラ２０は、例えばＳｏＣ（System on a Chip）、ＦＰＧＡ（Field Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuit）等の集積回路から構成される。ＳＳＤコントローラ２０は、ＣＰＵ（Central Processing Unit）２１、内蔵メモリ、例えばＳＲＡＭ２２、ＳＲＡＭインタフェース２３、ホストインタフェース２４、ＮＡＮＤインタフェース２５、及びＤＲＡＭインタフェース２６を含む。ＣＰＵ２１、ＳＲＡＭ２２、ＳＲＡＭインタフェース２３、ホストインタフェース２４、ＮＡＮＤインタフェース２５、及びＤＲＡＭインタフェース２６は、バス２７により信号を相互に通信可能に接続される。
【００１３】
ＣＰＵ２１は、メモリシステム１００を制御する。ＳＲＡＭ２２は、ＣＰＵ２１の作業用の記憶領域として使用される。ＳＲＡＭインタフェース２３は、ＳＲＡＭ２２に通信可能に接続され、ＳＲＡＭ２２との通信を行う。ホストインタフェース２４は、ホストデバイス２００に通信可能に接続され、ホストデバイス２００との通信を行う。ＮＡＮＤインタフェース２５は、ＮＡＮＤ型フラッシュメモリ１１に通信可能に接続され、ＮＡＮＤ型フラッシュメモリ１１との通信を行う。ＤＲＡＭインタフェース２６は、ＤＲＡＭ１２に通信可能に接続され、ＤＲＡＭ１２との通信を行う。
【００１４】
次に、図２を用いて、メモリシステム１００のＳＳＤコントローラ２０における機能ブロックについて説明する。図２は、ＳＳＤコントローラ２０における機能ブロックを示す図である。ＳＳＤコントローラ２０は、機能ブロックとして、データ圧縮判定部２１１、データ転送処理部２１２、データ圧縮処理部２１３、ＮＡＮＤ書き込み制御部２１４、及びシステム制御部２１５を備える。これらデータ圧縮判定部２１１、データ転送処理部２１２、データ圧縮処理部２１３、ＮＡＮＤ書き込み制御部２１４、及びシステム制御部２１５の機能はＣＰＵ２１によって実現される。なお、これらの機能は、専用のハードウェアによって実現されてもよい。ＳＳＤコントローラ２０は、また前述したように、内蔵メモリとしてのＳＲＡＭ２２、及びＮＡＮＤインタフェース２５を備える。さらに、ＳＳＤコントローラ２０には、ＮＡＮＤ型フラッシュメモリ１１が接続される。
【００１５】
ＳＲＡＭ２２は、メモリシステム１００（より詳しくは、ＮＡＮＤ型フラッシュメモリ１１）を管理するためのシステムデータ２２１を記憶する。システムデータ２２１は、ホストデバイス２００から供給されるユーザデータではなく、ＮＡＮＤ型フラッシュメモリ１１へのユーザデータの書き込みまたは読み出しの少なくともいずれかに応じて更新されるデータ（情報）である。システムデータは、例えば、論理アドレスと物理アドレスとを対応付ける、すなわち論理アドレスを物理アドレスに変換するための論理アドレス−物理アドレス変換テーブル等を含む。
【００１６】
データ圧縮判定部２１１は、ＳＲＡＭ２２から供給されたシステムデータ２２１を圧縮するか否かを判定する。データ圧縮判定部２１１により圧縮すると判定されたとき、データ転送処理部２１２は、ＳＲＡＭ２２あるいはデータ圧縮判定部２１１から供給されたシステムデータ２２１をデータ圧縮処理部２１３に転送する。一方、圧縮しないと判定されたとき、データ転送処理部２１２は、ＳＲＡＭ２２あるいはデータ圧縮判定部２１１から供給されたシステムデータ２２１をＮＡＮＤ書き込み制御部２１４に転送する。
【００１７】
データ圧縮処理部２１３は、データ転送処理部２１２から供給されたシステムデータ２２１を圧縮し、圧縮されたシステムデータ（以下、圧縮システムデータ）をＮＡＮＤ書き込み制御部２１４あるいはデータ圧縮判定部２１１に出力する。
【００１８】
ＮＡＮＤ書き込み制御部２１４は、データ圧縮処理部２１３から供給された圧縮システムデータ、あるいはデータ転送処理部２１２から供給されたシステムデータを、ＮＡＮＤインタフェース２５を介してＮＡＮＤ型フラッシュメモリ１１に書き込む。
【００１９】
システム制御部２１５は、ＳＳＤコントローラ２０内の機能ブロックの動作を制御する。
【００２０】
［１−２］メモリシステムの動作
ＳＳＤでは、システムデータを所定期間毎、あるいはＣＰＵ２１から指令されたときにＮＡＮＤ型フラッシュメモリに書き込み、不揮発的に記憶するシステムデータ不揮発化処理（以下、不揮発化処理とも記す）が実行される。
【００２１】
ＳＳＤコントローラ内に記憶されたシステムデータは、ＳＳＤ（ＮＡＮＤ型フラッシュメモリ）へのユーザデータの書き込み量が増加するたびに書き換わる。ＮＡＮＤ型フラッシュメモリへの書き込みが無い、あるいは書き込み量が少ない初期状態では、システムデータに、０ｘ００、０ｘＦＦ等のように、値が揃い規則的に並ぶデータ（以下、規則性データあるいは特定値）が多く、書き込み量が増加した状態では、値が揃わず不規則に並ぶデータ（以下、不規則性データ）が多くなる。
【００２２】
データを圧縮する場合、規則性データは圧縮率が高く、不規則性データは圧縮率が低くなる。このため、ユーザデータの書き込み量が増加していない初期状態では、システムデータの圧縮率が高いため、システムデータを圧縮することにより、不揮発化処理に要する時間を短縮できる。しかし、ユーザデータの書き込み量が増加した状態では、システムデータの圧縮率が低いため、システムデータを圧縮しても、システムデータをあまり圧縮できず、圧縮にかかる時間を考慮すると、不揮発化処理に要する時間が長くなる場合がある。
【００２３】
第１実施形態では、ＮＡＮＤ型フラッシュメモリ１１へのユーザデータの総書き込み量が閾値より小さい場合は、システムデータの圧縮を行い、圧縮システムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。ユーザデータの総書き込み量が閾値以上である場合は、システムデータの圧縮を行わずに、システムデータをそのままＮＡＮＤ型フラッシュメモリ１１に書き込む。
【００２４】
以下に、図３を用いて、第１実施形態のＳＳＤコントローラ２０におけるシステムデータ不揮発化処理について説明する。図３は、ＳＳＤコントローラにおけるシステムデータ不揮発化処理を示すフローチャートである。この不揮発化処理は、ＳＳＤコントローラ２０内のＣＰＵ２１により実行される、以降の実施形態の不揮発化処理についても同様である。
【００２５】
システムデータ不揮発化処理がスタートすると、まず、ＣＰＵ２１は圧縮実行フラグをセットする（ステップＳ１）。
【００２６】
システムデータ不揮発化処理では、システムデータが所定時間の経過ごとに、あるいはＣＰＵ２１から指令されたときに、ＮＡＮＤ型フラッシュメモリ１１に書き込まれる。ＣＰＵ２１は、この不揮発化処理が開始されてから、あるいはシステムデータのＮＡＮＤ型フラッシュメモリ１１への前回の書き込みから所定時間が経過したか否かを判定する（ステップＳ２）。所定時間が経過していない場合（NO）、ＣＰＵ２１はユーザデータの書き込み量を累計し、ユーザデータの総書き込み量を算出する（ステップＳ３）。続いて、ＣＰＵ２１は、ユーザデータの総書き込み量を、例えばＳＲＡＭ２２に記憶する（ステップＳ４）。
【００２７】
ステップＳ２において所定時間が経過している場合（YES）、ＣＰＵ２１（データ圧縮判定部２１１）は、圧縮実行フラグが“１”であるか否かを判定する（ステップＳ５）。圧縮実行フラグが“１”である場合（YES）、ＣＰＵ２１（データ圧縮判定部２１１）は総書き込み量と閾値とを比較し（ステップＳ６）、総書き込み量が閾値より小さいか否かを判定する（ステップＳ７）。
【００２８】
ステップＳ７において総書き込み量が閾値より小さい場合（YES）、ＣＰＵ２１（データ圧縮処理部２１３）は、システムデータを圧縮し（ステップＳ８）、ステップＳ１０に移行する。一方、総書き込み量が閾値より小さくない場合（NO）、ＣＰＵ２１は圧縮実行フラグをクリアし（ステップＳ９）、ステップＳ１０に移行する。また、ステップＳ５において圧縮実行フラグが“１”でない場合（NO）、ステップＳ１０に移行する。
【００２９】
ここで、システムデータのＮＡＮＤ型フラッシュメモリ１１への書き込みに要する時間は、システムデータを圧縮した場合は、システムデータの圧縮時間と、圧縮されたシステムデータの書き込み時間を合わせた時間（以下、圧縮書き込み時間）である。一方、システムデータを圧縮しない場合は、圧縮していないシステムデータの書き込み時間（以下、非圧縮書き込み時間）のみが必要である。前記閾値は、圧縮書き込み時間が非圧縮書き込み時間とほぼ等しくなる総書き込み量に設定される。総書き込み量が閾値より小さいとき、圧縮書き込み時間が非圧縮書き込み時間より短くなり、総書き込み量が閾値以上であるとき、圧縮書き込み時間が非圧縮書き込み時間以上になる。閾値は、総書き込み量に対する圧縮書き込み時間と非圧縮書き込み時間を実際に測定することにより設定してもよいし、シミュレーションなどにより算出し設定してもよい。
【００３０】
続いて、ステップＳ１０において、ＣＰＵ２１（ＮＡＮＤ書き込み制御部２１４）は、ＮＡＮＤ型フラッシュメモリ１１に、圧縮されたシステムデータ、あるいは圧縮されていないシステムデータを書き込む。
【００３１】
次に、ＣＰＵ２１は、システムデータ不揮発化処理を終了するか否かを判定する（ステップＳ１１）。システムデータ不揮発化処理を終了しない場合（NO）、ＣＰＵ２１はステップＳ２に戻り、ステップＳ２以降の処理を繰り返す。
【００３２】
また、ステップＳ１１において、システム不揮発化処理を終了する場合（YES）、この処理を終了する。
【００３３】
［１−３］第１実施形態の効果等
第１実施形態によれば、書き込み時間を短縮できるメモリシステムを提供することができる。
【００３４】
以下に、第１実施形態の効果について詳述する。第１実施形態では、ユーザデータの総書き込み量に基づいて、ＮＡＮＤ型フラッシュメモリ１１を管理するためのシステムデータを圧縮するか、あるいは圧縮しないかを選択し、圧縮されたシステムデータあるいは非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に記憶する。
【００３５】
ユーザデータの総書き込み量が閾値より小さい場合、システムデータを圧縮し、圧縮されたシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が高いため、システムデータの圧縮にかかる時間と、圧縮されたシステムデータの書き込みにかかる時間とを合わせた時間（圧縮書き込み時間）が、非圧縮のシステムデータの書き込みにかかる時間（非圧縮書き込み時間）より短くなる。このため、システムデータを圧縮して書き込んだ方が、システムデータを圧縮せずに書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００３６】
ユーザデータの総書き込み量が閾値以上である場合、システムデータを圧縮せず、非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が低いため、システムデータの圧縮にかかる時間と、圧縮されたシステムデータの書き込みにかかる時間とを合わせた時間が、非圧縮のシステムデータの書き込みにかかる時間と等しいかあるいは長くなる。このため、システムデータを圧縮せずに書き込んだ方が、システムデータを圧縮して書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００３７】
これらにより、ユーザデータの総書き込み量が閾値より小さい場合、あるいは総書き込み量が閾値以上である場合のいずれの場合でも、システムデータの書き込み時間を短縮することができる。
【００３８】
また、第１実施形態では、システムデータを圧縮し、圧縮されたシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む場合、システムデータの書き込み量（データ量）を減らすことができる。このため、書き込み要求のあったユーザデータのデータ量に対して、ＮＡＮＤ型フラッシュメモリ１１に実際に書き込まなければならないデータ量の比率である書き込み増幅比率（ＷＡＦ:Write Amplification Factor）を低減することができる。
【００３９】
［２］第２実施形態
次に、第２実施形態のメモリシステムについて説明する。第２実施形態及び変形例では、システムデータに関する情報に基づいて、システムデータを圧縮するか否かを判定し、ＮＡＮＤ型フラッシュメモリにシステムデータを記憶する例を示す。
【００４０】
第２実施形態では、システムデータの圧縮率に基づいて、システムデータを圧縮するか否かを判定し、ＮＡＮＤ型フラッシュメモリにシステムデータを記憶する。システムデータの圧縮率とは、システムデータを圧縮した際の、圧縮前のシステムデータに対する圧縮後のシステムデータの比率である。
【００４１】
第２実施形態及び変形例のメモリシステムの構成については、前述した第１実施形態と同様である。第２実施形態及び変形例では、第１実施形態と異なる点について主に説明する。
【００４２】
［２−１］第２実施形態の動作
図４を用いて、第２実施形態のメモリシステム１００の動作について説明する。図４は、第２実施形態のＳＳＤコントローラ２０におけるシステムデータ不揮発化処理を示すフローチャートである。
【００４３】
システムデータ不揮発化処理がスタートすると、まず、ＣＰＵ２１は圧縮実行フラグをセットする（ステップＳ１）。ＣＰＵ２１は、この不揮発化処理が開始されてから、あるいはシステムデータのＮＡＮＤ型フラッシュメモリ１１への前回の書き込みから所定時間が経過したか否かを判定する（ステップＳ２）。所定時間が経過していない場合（NO）、ＣＰＵ２１は所定時間が経過するまでステップＳ２の処理を繰り返す。
【００４４】
ステップＳ２において所定時間が経過している場合（YES）、ＣＰＵ２１（データ圧縮判定部２１１）は、圧縮実行フラグが“１”であるか否かを判定する（ステップＳ２１）。圧縮実行フラグが“１”である場合（YES）、ＣＰＵ２１（データ圧縮処理部２１３）は、システムデータを圧縮する（ステップＳ２２）。
【００４５】
続いて、ＣＰＵ２１は、過去の所定期間におけるシステムデータの圧縮率を算出する（ステップＳ２３）。さらに、ＣＰＵ２１は、システムデータの圧縮率を、例えばＳＲＡＭ２２に記憶する（ステップＳ２４）。過去の所定期間の圧縮率は、例えば、ある一定期間に算出した圧縮率の平均値である。あるいは、過去の所定期間の圧縮率は、ある一定期間に算出した圧縮率の最小値と最大値との中央値であってもよいし、また最新で算出した圧縮率でもよい。
【００４６】
次に、ＣＰＵ２１（データ圧縮判定部２１１）は、システムデータの圧縮率が閾値より高いか否かを判定する（ステップＳ２５）。圧縮率が閾値より高い場合（YES）、ＣＰＵ２１は圧縮実行フラグをクリアすることなく、ステップＳ１０に移行する。一方、圧縮率が閾値より高くない場合（NO）、ＣＰＵ２１は圧縮実行フラグをクリアし（ステップＳ９）、ステップＳ１０に移行する。また、ステップＳ２１において圧縮実行フラグが“１”でない場合（NO）、ステップＳ１０に移行する。
【００４７】
ここで、閾値は、圧縮書き込み時間が非圧縮書き込み時間とほぼ等しくなる圧縮率に設定される。圧縮率が閾値より高いとき、圧縮書き込み時間が非圧縮書き込み時間より短くなり、圧縮率が閾値以下であるとき、圧縮書き込み時間が非圧縮書き込み時間以上になる。閾値は、圧縮率に対する圧縮書き込み時間と非圧縮書き込み時間を実際に測定することにより設定してもよいし、シミュレーションなどにより算出し設定してもよい。
【００４８】
続いて、ステップＳ１０において、ＣＰＵ２１（ＮＡＮＤ書き込み制御部２１４）は、ＮＡＮＤ型フラッシュメモリ１１に、圧縮されたシステムデータ、あるいは圧縮されていないシステムデータを書き込む。
【００４９】
次に、ＣＰＵ２１は、システムデータ不揮発化処理を終了するか否かを判定する（ステップＳ１１）。システムデータ不揮発化処理を終了しない場合（NO）、ＣＰＵ２１はステップＳ２に戻り、ステップＳ２以降の処理を繰り返す。
【００５０】
また、ステップＳ１１において、システム不揮発化処理を終了する場合（YES）、この処理を終了する。
【００５１】
［２−２］第１変形例の動作
次に、第１変形例のメモリシステムの動作について説明する。第１変形例では、システムデータ内の特定値の比率に基づいて、システムデータを圧縮するか否かを判定し、ＮＡＮＤ型フラッシュメモリにシステムデータを記憶する。
【００５２】
図５は、第１変形例のＳＳＤコントローラ２０におけるシステムデータ不揮発化処理を示すフローチャートである。
【００５３】
システムデータ不揮発化処理がスタートすると、まず、ＣＰＵ２１は圧縮実行フラグをセットする（ステップＳ１）。ＣＰＵ２１は、この不揮発化処理が開始されてから、あるいはシステムデータのＮＡＮＤ型フラッシュメモリ１１への前回の書き込みから所定時間が経過したか否かを判定する（ステップＳ２）。所定時間が経過していない場合（NO）、ＣＰＵ２１は所定時間が経過するまでステップＳ２の処理を繰り返す。
【００５４】
ステップＳ２において所定時間が経過している場合（YES）、ＣＰＵ２１（データ圧縮判定部２１１）は、圧縮実行フラグが“１”であるか否かを判定する（ステップＳ２１）。圧縮実行フラグが“１”である場合（YES）、ＣＰＵ２１（データ圧縮処理部２１３）は、システムデータを圧縮する（ステップＳ２２）。
【００５５】
続いて、ＣＰＵ２１は、システムデータ内の特定値の比率を算出する（ステップＳ３１）。さらに、ＣＰＵ２１は、算出した特定値の比率を例えばＳＲＡＭ２２に記憶する（ステップＳ３２）。ユーザデータの書き込み量が増加する前のシステムデータ内には、０ｘ００や０ｘＦＦのような特定値が多数存在する。０ｘ００、０ｘＦＦは、１６進法の００、ＦＦであることをそれぞれ示す。このような特定値は、圧縮した場合、圧縮率が高い。しかし、ユーザデータの書き込み量が増加するのに従って、０ｘ００や０ｘＦＦのような特定値は減少する。そこで、システムデータ内の特定値の比率、すなわちシステムデータ全体に対する特定値の比率を、システムデータを圧縮するか否かの判定に用いる。
【００５６】
次に、ＣＰＵ２１は、システムデータ内の特定値の比率が閾値より大きいか否かを判定する（ステップＳ３３）。特定値の比率が閾値より大きい場合（YES）、システムデータの圧縮率が高いため（圧縮が有効であるため）、ＣＰＵ２１は圧縮実行フラグをクリアすることなく、ステップＳ１０に移行する。一方、特定値の比率が閾値より大きくない場合（NO）、システムデータの圧縮率が低いため（圧縮が有効でないため）、ＣＰＵ２１は圧縮実行フラグをクリアし（ステップＳ９）、ステップＳ１０に移行する。また、ステップＳ２１において圧縮実行フラグが“１”でない場合（NO）、ステップＳ１０に移行する。
【００５７】
ここで、閾値は、圧縮書き込み時間が非圧縮書き込み時間とほぼ等しくなる特定値の比率に設定される。システムデータ内の特定値の比率が閾値より大きいとき、圧縮書き込み時間が非圧縮書き込み時間より短くなり、特定値の比率が閾値以下であるとき、圧縮書き込み時間が非圧縮書き込み時間以上になる。閾値は、特定値の比率に対する圧縮書き込み時間と非圧縮書き込み時間を実際に測定することにより設定してもよいし、シミュレーションなどにより算出し設定してもよい。
【００５８】
続いて、ステップＳ１０において、ＣＰＵ２１（ＮＡＮＤ書き込み制御部２１４）は、ＮＡＮＤ型フラッシュメモリ１１に、圧縮されたシステムデータ、あるいは圧縮されていないシステムデータを書き込む。
【００５９】
次に、ＣＰＵ２１は、システムデータ不揮発化処理を終了するか否かを判定する（ステップＳ１１）。システムデータ不揮発化処理を終了しない場合（NO）、ＣＰＵ２１はステップＳ２に戻り、ステップＳ２以降の処理を繰り返す。
【００６０】
また、ステップＳ１１において、システム不揮発化処理を終了する場合（YES）、この処理を終了する。
【００６１】
［２−３］第２変形例の動作
次に、第２変形例のメモリシステムの動作について説明する。第２変形例では、システムデータの圧縮率の変化の傾き（または割合）に基づいて、システムデータを圧縮するか否かを判定し、ＮＡＮＤ型フラッシュメモリにシステムデータを記憶する。
【００６２】
図６は、第２変形例のＳＳＤコントローラ２０におけるシステムデータ不揮発化処理を示すフローチャートである。
【００６３】
システムデータ不揮発化処理がスタートすると、まず、ＣＰＵ２１は圧縮実行フラグをセットする（ステップＳ１）。ＣＰＵ２１は、この不揮発化処理が開始されてから、あるいはシステムデータのＮＡＮＤ型フラッシュメモリ１１への前回の書き込みから所定時間が経過したか否かを判定する（ステップＳ２）。所定時間が経過していない場合（NO）、ＣＰＵ２１は所定時間が経過するまでステップＳ２の処理を繰り返す。
【００６４】
ステップＳ２において所定時間が経過している場合（YES）、ＣＰＵ２１（データ圧縮判定部２１１）は、圧縮実行フラグが“１”であるか否かを判定する（ステップＳ２１）。圧縮実行フラグが“１”である場合（YES）、ＣＰＵ２１（データ圧縮処理部２１３）は、システムデータを圧縮する（ステップＳ２２）。
【００６５】
続いて、ＣＰＵ２１は、システムデータの圧縮率の変化の傾き（または割合）を算出する（ステップＳ４１）。さらに、ＣＰＵ２１は、算出した圧縮率の変化の傾きを例えばＳＲＡＭ２２に記憶する（ステップＳ４２）。システムデータの圧縮率の変化の傾きは、ユーザデータの書き込み量が増加すると、ある時点で急峻に変化する。図７に、ユーザデータの総書き込み量に対するシステムデータの圧縮率の変化を示す。この図７から解るように、ある総書き込み量に達すると、圧縮率が急峻に低下していく。そこで、システムデータの圧縮率の変化の傾きを用いることで、圧縮率の急峻な低下を事前に知ることができる。
【００６６】
次に、ＣＰＵ２１は、システムデータの圧縮率の変化の傾きが閾値より小さいか否かを判定する（ステップＳ４３）。圧縮率の変化の傾きが閾値より小さい場合（YES）、システムデータの圧縮率が急に低下することがないため、ＣＰＵ２１は圧縮実行フラグをクリアすることなく、ステップＳ１０に移行する。一方、圧縮率の変化の傾きが閾値より小さくない場合（NO）、システムデータの圧縮率が急に低下することが予想されるため、ＣＰＵ２１は、圧縮実行フラグをクリアし（ステップＳ１０）、ステップＳ１０に移行する。また、ステップＳ２１において圧縮実行フラグが“１”でない場合（NO）、ステップＳ１０に移行する。
【００６７】
ここで、閾値は、圧縮書き込み時間が非圧縮書き込み時間とほぼ等しくなる圧縮率の変化の傾きに設定される。システムデータの圧縮率の変化の傾きが閾値より小さいとき、圧縮書き込み時間が非圧縮書き込み時間より短くなり、圧縮率の変化の傾きが閾値以上であるとき、圧縮書き込み時間が非圧縮書き込み時間以上になる。閾値は、圧縮率の変化の傾きに対する圧縮書き込み時間と非圧縮書き込み時間を実際に測定することにより設定してもよいし、シミュレーションなどにより算出し設定してもよい。
【００６８】
続いて、ステップＳ１０において、ＣＰＵ２１（ＮＡＮＤ書き込み制御部２１４）は、ＮＡＮＤ型フラッシュメモリ１１に、圧縮されたシステムデータ、あるいは圧縮されていないシステムデータを書き込む。
【００６９】
次に、ＣＰＵ２１は、システムデータ不揮発化処理を終了するか否かを判定する（ステップＳ１１）。システムデータ不揮発化処理を終了しない場合（NO）、ＣＰＵ２１はステップＳ２に戻り、ステップＳ２以降の処理を繰り返す。
【００７０】
また、ステップＳ１１において、システム不揮発化処理を終了する場合（YES）、この処理を終了する。
【００７１】
［２−４］第２実施形態及び変形例の効果等
第２実施形態及び変形例によれば、書き込み時間を短縮できるメモリシステムを提供することができる。
【００７２】
第２実施形態では、システムデータの圧縮率に基づいて、システムデータを圧縮するか、あるいは圧縮しないかを選択し、圧縮されたシステムデータあるいは非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に記憶する。システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間は、システムデータを圧縮した場合は、システムデータの圧縮にかかる時間と、圧縮されたシステムデータの書き込みにかかる時間とを合わせた時間（圧縮書き込み時間）である。一方、システムデータを圧縮しない場合は、非圧縮のシステムデータの書き込みにかかる時間（非圧縮書き込み時間）のみである。
【００７３】
システムデータの圧縮率が閾値より高い場合、システムデータを圧縮し、圧縮されたシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が高いため、システムデータの圧縮にかかる時間と、圧縮されたシステムデータの書き込みにかかる時間とを合わせた時間が、非圧縮のシステムデータの書き込みにかかる時間より短くなる。このため、システムデータを圧縮して書き込んだ方が、システムデータを圧縮せずに書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００７４】
システムデータの圧縮率が閾値以下である場合、システムデータを圧縮せず、非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が低いため、システムデータの圧縮にかかる時間と、圧縮されたシステムデータの書き込みにかかる時間とを合わせた時間が、非圧縮のシステムデータの書き込みにかかる時間と等しいかあるいは長くなる。このため、システムデータを圧縮せずに書き込んだ方が、システムデータを圧縮して書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００７５】
第１変形例では、システムデータ内の特定値の比率に基づいて、システムデータを圧縮するか、あるいは圧縮しないかを選択し、圧縮されたシステムデータあるいは非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に記憶する。
【００７６】
システムデータ内の特定値の比率が閾値より大きい場合、システムデータを圧縮し、圧縮されたシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が高いため、圧縮書き込み時間が非圧縮書き込み時間より短くなる。このため、システムデータを圧縮して書き込んだ方が、システムデータを圧縮せずに書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００７７】
システムデータ内の特定値の比率が閾値以下である場合、システムデータを圧縮せず、非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が低いため、圧縮書き込み時間が非圧縮書き込み時間と等しいかあるいは長くなる。このため、システムデータを圧縮せずに書き込んだ方が、システムデータを圧縮して書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００７８】
第２変形例では、システムデータの圧縮率の変化の傾き（または割合）に基づいて、システムデータを圧縮するか、あるいは圧縮しないかを選択し、圧縮されたシステムデータあるいは非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に記憶する。
【００７９】
システムデータの圧縮率の変化の傾きが閾値より小さい場合、システムデータを圧縮し、圧縮されたシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が高いため、圧縮書き込み時間が非圧縮書き込み時間より短くなる。このため、システムデータを圧縮して書き込んだ方が、システムデータを圧縮せずに書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００８０】
システムデータの圧縮率の変化の傾きが閾値以上である場合、システムデータを圧縮せず、非圧縮のシステムデータをＮＡＮＤ型フラッシュメモリ１１に書き込む。この場合では、システムデータの圧縮率が低いため、圧縮書き込み時間が非圧縮書き込み時間と等しいかあるいは長くなる。このため、システムデータを圧縮せずに書き込んだ方が、システムデータを圧縮して書き込む場合より、システムデータをＮＡＮＤ型フラッシュメモリ１１に記憶するのに必要な時間を短縮することができる。
【００８１】
これらにより、第２実施形態及び変形例では、システムデータのＮＡＮＤ型フラッシュメモリ１１への書き込み時間を短縮することができる。
【００８２】
また、ステップＳ２５，Ｓ３３，Ｓ４３において、システムデータを圧縮するか否かの判定対象となるシステムデータは、システムデータの全体であってもよいし、あるいはシステムデータの一部のデータであってもよい。また、所定時間ごとにシステムデータのＮＡＮＤ型フラッシュメモリ１１への書き込みが行われるが、所定時間ごとに毎回、システムデータの全体を判定対象としてもよいし、システムデータの一部のデータだけを判定対象としてもよい。さらに、所定時間ごとの数回に１回だけ、システムデータの全体を判定対象とし、その他の回ではシステムデータの一部のデータだけを判定対象としてもよい。また、システムデータの初期状態から書き換えられたデータ量を記録しておき、初期状態に対する書き換えられたデータ量の比率から、特定値の比率あるいは圧縮率等を算出するようにしてもよい。
【００８３】
［３］その他変形例等
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８４】
１０…記憶部、１１…ＮＡＮＤ型フラッシュメモリ、１２…ＤＲＡＭ、２０…ＳＳＤコントローラ、２１…ＣＰＵ、２２…ＳＲＡＭ、２３…ＳＲＡＭインタフェース、２４…ホストインタフェース、２５…ＮＡＮＤインタフェース、２６…ＤＲＡＭインタフェース、２７…バス、１００…メモリシステム（ＳＳＤ）、２００…ホストデバイス。
【図１】
2019057052.tif 000003
【図２】
2019057052.tif 000004
【図３】
2019057052.tif 000005
【図４】
2019057052.tif 000006
【図５】
2019057052.tif 000007
【図６】
2019057052.tif 000008
【図７】
2019057052.tif 000009