(57)【要約】【課題】ガベージコレクション時の消費電力を削減する。【解決手段】実施形態によるメモリシステムは、不揮発性メモリにおける各物理ブロックの疲弊度情報を管理する疲弊度管理部と、前記疲弊度管理部で管理されている各物理ブロックの前記疲弊度情報に基づいて、ガベージコレクションの対象とされた物理ブロックの有効クラスタから読み出されたデータに対する符号化・復号処理部による復号及び符号化の実行の有無を判定するガベージコレクション管理部と、を備える。【選択図】図２
2019053415.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを備えた不揮発性メモリと、
前記不揮発性メモリに対するアクセスを制御するメモリコントローラと、
を備え、
前記メモリコントローラは、
前記不揮発性メモリに書き込むデータの誤り訂正符号による符号化及び前記不揮発性メモリから読み出したデータの復号を実行する符号化・復号処理部と、
前記不揮発性メモリに対してガベージコレクションを実行するガベージコレクション制御部と、
を備え、
前記ガベージコレクション制御部は、
前記不揮発性メモリにおける各物理ブロックの疲弊度情報を管理する疲弊度管理部と、
前記疲弊度管理部で管理されている各物理ブロックの前記疲弊度情報に基づいて、前記ガベージコレクションの対象とされた物理ブロックの有効クラスタから読み出されたデータに対する前記符号化・復号処理部による復号及び符号化の実行の有無を判定するガベージコレクション管理部と、
を備えるメモリシステム。
【請求項２】
前記疲弊度情報は、前記不揮発性メモリの各ブロックから実際に読み出されたデータのエラー率又は各ブロックからデータを読み出した場合に推定される当該データのエラー率を含み、
前記ガベージコレクション管理部は、前記疲弊度管理部で管理されている各物理ブロックの前記エラー率に基づいて、前記ガベージコレクションの対象とされた物理ブロックの有効クラスタから読み出されたデータに対する前記符号化・復号処理部による復号及び符号化の実行の有無を判定する
請求項１に記載のメモリシステム。
【請求項３】
前記ガベージコレクション管理部は、前記ガベージコレクションの対象とされた前記物理ブロックの疲弊度情報に基づいて当該物理ブロックが疲弊していないと判定した場合には、前記ガベージコレクションの対象とされた前記物理ブロックの前記有効クラスタから読み出された前記データに対して前記符号化・復号処理部による復号及び符号化を実行しないと判定する請求項１に記載のメモリシステム。
【請求項４】
前記ガベージコレクション制御部は、各物理ブロックに対するデータのプログラム／消去回数をカウントする書込み管理部をさらに備え、
前記疲弊度情報は、前記書込み管理部でカウントされた各物理ブロックの前記プログラム／消去回数を含む
請求項１に記載のメモリシステム。
【請求項５】
前記ガベージコレクション制御部は、各物理ブロックに対するデータの読出し時に読み出されたデータに含まれるエラービットの数を取得する読出し管理部をさらに備え、
前記疲弊度管理部は、前記読出し管理部で取得された前記エラービットの数に基づいて各物理ブロックの前記エラー率を算出し、算出した前記エラー率を管理する
請求項２に記載のメモリシステム。
【請求項６】
前記ガベージコレクション制御部は、各物理ブロックに対するデータの読出し回数をカウントする読出し管理部をさらに備え、
前記疲弊度管理部は、前記読出し管理部でカウントされた前記読出し回数を用いて前記エラー率を推定し、推定した前記エラー率を管理する
請求項２に記載のメモリシステム。
【請求項７】
前記メモリコントローラから延在する複数のチャネルそれぞれに１つ以上の前記不揮発性メモリが接続されており、
前記ガベージコレクション管理部は、前記ガベージコレクションの対象とされた前記物理ブロックの前記有効クラスタから読み出された前記データの移動先について、前記ガベージコレクションの対象とされた前記物理ブロックを備える不揮発性メモリと同一の不揮発性メモリ内の物理ブロックを優先的に前記他の物理ブロックとして選択する
請求項１に記載のメモリシステム。
【請求項８】
前記ガベージコレクション管理部は、前記ガベージコレクションの対象とされた前記物理ブロックを備える前記不揮発性メモリと同一の前記不揮発性メモリ内の前記物理ブロックを前記他の物理ブロックとして選択できない場合、前記ガベージコレクションの対象とされた前記物理ブロックを備える前記不揮発性メモリと同一のチャネルに接続された不揮発性メモリ内の物理ブロックを優先的に前記他の物理ブロックとして選択する
請求項７に記載のメモリシステム。
【請求項９】
前記複数のチャネルの少なくとも１つ以上のチャネルに設けられ、当該チャネルに接続された前記不揮発性メモリへのアクセスを制御するインタフェースチップをさらに備え、
前記ガベージコレクション管理部は、前記ガベージコレクションの対象とされた前記物理ブロックを備える前記不揮発性メモリと同一の前記チャネルに設けられた前記インタフェースチップを介さずに前記ガベージコレクションの対象とされた前記物理ブロックの前記有効クラスタから読み出された前記データの移動が可能な不揮発性メモリ内の物理ブロックを優先的に前記他の物理ブロックとして選択する
請求項８に記載のメモリシステム。
【請求項１０】
前記ガベージコレクション管理部は、前記ガベージコレクションの対象とされた前記物理ブロックの前記有効クラスタから読み出された前記データに対する前記符号化・復号処理部による復号及び符号化の実行をしないと判定した場合であって、前記ガベージコレクションの対象とされた前記物理ブロックを備える前記不揮発性メモリと同一の前記チャネルに接続された前記不揮発性メモリ内の物理ブロックを前記他の物理ブロックとして選択できない場合、前記符号化・復号処理部をオフにする
請求項８に記載のメモリシステム。
【請求項１１】
前記ガベージコレクション制御部は、前記ガベージコレクションの対象となった前記有効クラスタ内の前記データに対して過去に実行されたガベージコレクションにおいて前記符号化・復号処理部による復号及び符号化が実行されたか否かを管理する実行履歴管理部をさらに備え、
前記ガベージコレクション管理部は、前記ガベージコレクションの対象となった前記有効クラスタ内の前記データに対して少なくとも直前に実行されたガベージコレクションにおいて復号及び符号化が実行されていないことが前記実行履歴管理部において管理されていた場合、前記ガベージコレクションの対象となった前記有効クラスタ内の前記データに対する前記符号化・復号処理部による復号及び符号化の実行をありと判定する
請求項１に記載のメモリシステム。
【請求項１２】
前記ガベージコレクション制御部は、前記不揮発性メモリ周辺の温度情報を時系列に沿って記憶する温度履歴記憶部をさらに備え、
前記ガベージコレクション管理部は、前記温度履歴記憶部に記憶された前記温度情報にさらに基づいて、前記ガベージコレクションの対象となった前記有効クラスタ内の前記データに対する前記符号化・復号処理部による復号及び符号化の実行の有無を判定する
請求項１に記載のメモリシステム。
【請求項１３】
前記メモリコントローラは、前記不揮発性メモリに書き込まれるデータを、当該データの前記不揮発性メモリにおける格納位置に応じて生成した擬似乱数を用いてランダマイズするランダマイザをさらに備え、
前記ガベージコレクション管理部は、前記ガベージコレクションの対象とされた前記物理ブロックの前記有効クラスタから読み出された前記データに対する前記符号化・復号処理部による復号及び符号化の実行をしないと判定した場合、前記有効クラスタから読み出された前記データが前記ランダマイザによるランダマイズの解除及び再ランダマイズのために前記メモリコントローラを通過する際に当該データに対して前記符号化・復号処理部が復号及び符号化を実行しないように、前記符号化・復号処理部をオフにする
請求項１に記載のメモリシステム。
【請求項１４】
複数の物理ブロックを備えた不揮発性メモリと、前記不揮発性メモリに対するアクセスを制御するメモリコントローラとを備え、前記メモリコントローラが、前記不揮発性メモリに書き込むデータの誤り訂正符号による符号化及び前記不揮発性メモリから読み出したデータの復号を実行する符号化・復号処理部と、前記不揮発性メモリに対してガベージコレクションを実行するガベージコレクション制御部とを備えたメモリシステムにおいて実行される制御方法であって、
前記ガベージコレクション制御部は、
前記不揮発性メモリにおける各物理ブロックの疲弊度情報を管理し、
前記管理されている各物理ブロックの前記疲弊度情報に基づいて、前記ガベージコレクションの対象とされた物理ブロックの有効クラスタから読み出されたデータに対する復号及び符号化の実行の有無を判定する
ことを含むメモリシステムの制御方法。
【請求項１５】
複数の物理ブロックを備えた不揮発性メモリと、前記不揮発性メモリに対するアクセスを制御するメモリコントローラとを備え、前記メモリコントローラが、前記不揮発性メモリに書き込むデータの誤り訂正符号による符号化及び前記不揮発性メモリから読み出したデータの復号を実行する符号化・復号処理部と、前記不揮発性メモリに対してガベージコレクションを実行するガベージコレクション制御部とを備えたメモリシステムを機能させるためのプログラムであって、
前記不揮発性メモリにおける各物理ブロックの疲弊度情報を管理する処理と、
前記管理されている各物理ブロックの前記疲弊度情報に基づいて、前記ガベージコレクションの対象とされた物理ブロックの有効クラスタから読み出されたデータに対する復号及び符号化の実行の有無を判定する処理とを
前記ガベージコレクション制御部に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、メモリシステム、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）を記憶媒体に用いるメモリシステムでは、たとえばホストからの書込み要求に対して空のブロック（以下、フリーブロックという）を確保しておくために、有効データ率が低下したブロックに格納されている有効データを１つ又は少数のブロックにまとめる、いわゆるガベージコレクション（コンパクションともいう）と呼ばれる処理が行なわれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５０６６２０９号公報
【特許文献２】特許第５９７６９３９号公報
【特許文献３】特許第５８１３５８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、ガベージコレクション時の消費電力を削減することが可能なメモリシステム、その制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によるメモリシステムは、複数の物理ブロックを備えた不揮発性メモリと、前記不揮発性メモリに対するアクセスを制御するメモリコントローラと、を備え、前記メモリコントローラは、前記不揮発性メモリに書き込むデータの誤り訂正符号による符号化及び前記不揮発性メモリから読み出したデータの復号を実行する符号化・復号処理部と、前記不揮発性メモリに対してガベージコレクションを実行するガベージコレクション制御部と、を備え、前記ガベージコレクション制御部は、前記不揮発性メモリにおける各物理ブロックの疲弊度情報を管理する疲弊度管理部と、前記疲弊度管理部で管理されている各物理ブロックの前記疲弊度情報に基づいて、前記ガベージコレクションの対象とされた物理ブロックの有効クラスタから読み出されたデータに対する前記符号化・復号処理部による復号及び符号化の実行の有無を判定するガベージコレクション管理部と、を備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、第１の実施形態に係るガベージコレクション制御部の概略構成例を示すブロック図である。
【図３】図３は、第１の実施形態に係る疲弊度管理部が管理するテーブルの一例を示す図である。
【図４】図４は、第１の実施形態に係るガベージコレクション動作の概略例を示すフローチャートである。
【図５】図５は、第１の実施形態に係るＥＣＣ処理実行有無の判定動作の一例を示すフローチャートである。
【図６】図６は、第１の実施形態に係る移動先チップの選択動作の一例を示すフローチャートである。
【図７】図７は、第１の実施形態に係るガベージコレクションにおいて同一のメモリチップ内で有効クラスタが移動する場合を説明するための図である。
【図８】図８は、第１の実施形態に係るガベージコレクションにおいて同一のチャネルに接続されたメモリチップ間で有効クラスタが移動する場合を説明するための図である。
【図９】図９は、第１の実施形態に係るガベージコレクションにおいて異なるチャネルに接続されたメモリチップ間で有効クラスタが移動する場合を説明するための図である。
【図１０】図１０は、第１の実施形態に係るガベージコレクションにおいてインタフェースチップを跨いで有効クラスタが移動する場合の例を説明するための図である。
【図１１】図１１は、第１の実施形態に係るガベージコレクションにおいてインタフェースチップを跨いで有効クラスタが移動する場合の他の例を説明するための図である。
【図１２】図１２は、第２の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図１３】図１３は、第２の実施形態に係るガベージコレクションにおいてランダマイザがオンチップで搭載されたメモリチップ内で有効クラスタが移動する場合を説明するための図である。
【図１４】図１４は、第３の実施形態に係るガベージコレクション制御部の概略構成例を示すブロック図である。
【図１５】図１５は、第３の実施形態に係るＥＣＣ処理実行有無の判定動作の一例を示すフローチャートである。
【図１６】図１６は、第４の実施形態に係るガベージコレクション制御部の概略構成例を示すブロック図である。
【図１７】図１７は、第４の実施形態に係るＥＣＣ処理実行有無の判定動作の一例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るメモリシステム、その制御方法及びプログラムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
一般的に、ガベージコレクションでは、有効データ率（有効クラスタ率であってもよい）が低下した複数のブロックから有効データを収集して１つ又は複数のフリーブロックに書き込む動作が実行される。ここで、有効データ率とは、各ブロックのサイズに対する当該ブロックに記録されている有効データの合計のサイズの割合であり、有効クラスタ率とは、各ブロックに含まれるクラスタのうち有効データを格納するクラスタの割合である。収集した有効データをフリーブロックへ書き込む際には、収集した有効データに対する復号及び再符号化が行なわれるのが通常である。しかしながら、復号及び再符号化に要する消費電力は比較的大きい。
【０００９】
また、論理ブロックを単位としたガベージコレクションでは、あるメモリチップ内の有効データを他のメモリチップへ移動させる必要が生じ得る。なお、論理ブロックとは、異なる不揮発性メモリチップそれぞれから選択された１つ又は複数の物理ブロックのかたまりであって、例えば不揮発性メモリチップに対する消去等の単位として管理されるものである。そのような場合、ガベージコレクション対象の有効データをチャネル等を介して他のメモリチップへ転送する必要が生じるが、近年の大容量化したメモリシステムのように、チャネルを介して多数のメモリチップが接続されている構成では、ガベージコレクション時に有効データを他のメモリチップへ転送する際の消費電力が無視できない程度に増加している。
【００１０】
そこで以下の実施形態では、ガベージコレクション時の消費電力を削減することが可能なメモリシステム、その制御方法及びプログラムについて、いくつかの例を挙げて説明する。
【００１１】
（第１の実施形態）
図１は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図１に示すように、メモリシステム１は、メモリコントローラ１０と、複数の不揮発性メモリチップ２０とを備える。メモリコントローラ１０及び不揮発性メモリチップ２０は、例えばそれらの組み合わせにより一つのメモリシステムを構成している。このようなメモリシステム１の例としては、ＳＤ（登録商標）カードのようなメモリカード、ＳＳＤ（solid state drive）等が挙げられる。以降、個々の不揮発性メモリチップ２０を、単にメモリチップ２０と表記する。
【００１２】
個々のメモリチップ２０は、例えばＮＡＮＤ型フラッシュメモリなどの不揮発性メモリが作り込まれた半導体チップである。ただし、不揮発性メモリに限定されず、ガベージコレクションの対象となり得る種々のメモリチップを適用することが可能である。
【００１３】
メモリコントローラ１０は、ＳｏＣ（System-On-a-Chip）などのような後述する各部が１つのチップに搭載された半導体チップで構成され、ホストバスを介して接続されたホスト２から受信した命令に応じて、メモリチップ２０にアクセスする。ホスト２は、コンピュータの構成を備えている。コンピュータとは、例えば、パーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等であってよい。ホストバスの準拠する規格としては、任意の規格が採用可能である。
【００１４】
メモリコントローラ１０は、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、ＥＣＣ（Error Correction Code）部１３、バッファメモリ１４、メモリインタフェース（Ｉ／Ｆ）１５、ガベージコレクション制御部１６及びホストインタフェース（Ｉ／Ｆ）１７を備え、これらが内部バス１８を介して相互に接続されている。
【００１５】
ホストＩ／Ｆ１７は、ホストバスを介してホスト２と接続され、ホスト２から受信した命令及びデータを、それぞれＣＰＵ１１及びバッファメモリ１４に転送する。また、ホストＩ／Ｆ１７は、ＣＰＵ１１からの命令に応じて、バッファメモリ１４内のデータをホスト２へ転送する。
【００１６】
ＣＰＵ１１は、メモリコントローラ１０全体の動作を制御する。例えば、ＣＰＵ１１は、ホスト２から書込み命令を受信した際には、それに応じて、メモリＩ／Ｆ１５に対して書込み命令を発行する。読出しの際も同様に、ＣＰＵ１１は、ホスト２からの命令に応じて、メモリＩ／Ｆ１５に対して読出し命令を発行する。また、データの消去時には、ＣＰＵ１１は、メモリＩ／Ｆ１５に対して消去命令を発行する。その他、ＣＰＵ１１は、ウエアレベリング等、メモリチップ２０を管理するための様々な処理を実行する。
【００１７】
メモリＩ／Ｆ１５は、１つ以上のチャネルＣＨ０，ＣＨ１，…を介して複数のメモリチップ２０と接続され、メモリチップ２０との通信を制御する。メモリＩ／Ｆ１５から延在する各チャネルＣＨ０，ＣＨ１，…には、１つ以上のメモリチップ２０を接続することができる。
【００１８】
メモリＩ／Ｆ１５は、ＣＰＵ１１から受信した命令に基づき、信号ALE、信号CLE、信号WEn、及び信号REnをメモリチップ２０へ出力する。また、書込み時には、ＣＰＵ１１が発行した書込み命令、アドレス及びバッファメモリ１４内の書込みデータを入出力信号I/Oとしてメモリチップ２０へ転送する。一方、読出し時には、メモリＩ／Ｆ１５は、ＣＰＵ１１が発行した読出し命令及びアドレスを入出力信号I/Oとしてメモリチップ２０へ転送する。そして、メモリＩ／Ｆ１５は、メモリチップ２０から読み出されたデータを入出力信号I/Oとして受信し、これをバッファメモリ１４へ転送する。なお、メモリチップ２０へアクセスする際には、メモリＩ／Ｆ１５は、メモリチップ２０からレディ・ビジー信号RBnを受信し、この信号RBnに基づいてメモリチップ２０がアクセス可能であるか否かを判断する。
【００１９】
ここで、信号CEnは、メモリチップ２０をイネーブルにするための信号である。信号CLEは、入力信号I/Oが命令であることをメモリチップ２０に通知する信号である。信号ALEは、入力信号I/Oがアドレスであることをメモリチップ２０に通知する信号である。信号WEnは、入力信号I/Oをメモリチップ２０に取り込ませるための信号である。信号REnは、メモリチップ２０から出力信号I/Oを読み出すための信号である。レディ・ビジー信号RBnは、メモリチップ２０がレディ状態（メモリコントローラ１０からの命令を受信できる状態）であるか、それともビジー状態（メモリコントローラ１０からの命令を受信できない状態）であるかを示す信号である。入出力信号I/Oは、例えば８ビットの信号である。入出力信号I/Oは、メモリチップ２０とメモリコントローラ１０との間で送受信されるデータの実体であり、命令、アドレス、書込みデータ、読出しデータ等である。
【００２０】
バッファメモリ１４は、書込みデータ又は読出しデータを一時的に保持するメモリ領域として機能する。バッファメモリ１４は、ＤＲＡＭ（Dynamic RAM）、ＳＲＡＭ（Static RAM）等によって構成され得る。
【００２１】
ＲＡＭ１２は、例えばＳＲＡＭやＤＲＡＭ等の半導体メモリである。ＲＡＭ１２は、ＣＰＵ１１や後述するガベージコレクション制御部１６の作業領域として使用される。ＲＡＭ１２には、メモリチップ２０を管理するためのファームウェア、及び、各種の管理テーブル等がロードされ得る。
【００２２】
ＥＣＣ部１３は、符号化・復号処理部であり、読出しデータにおけるエラー検出及びエラー訂正のために、データの符号化及び復号を行う。具体的には、ＥＣＣ部１３は、メモリチップ２０に書き込まれるデータを符号化する。また、ＥＣＣ部１３は、メモリチップ２０から読み出されたデータを復号する。ＥＣＣ部１３は、復号によって、読出しデータに対するエラー検出及びエラー訂正を実行する。ＥＣＣ部１３は、エラー訂正に失敗した場合には、エラー訂正の失敗をＣＰＵ１１に通知する。
【００２３】
本実施形態において、ＥＣＣ部１３による符号化及び復号のアルゴリズムには、種々のアルゴリズムを採用することが可能である。例えばＥＣＣ部１３は、データの書込み時には、書込みデータに基づいてパリティを生成し、生成したパリティをデータに付すことで、メモリチップ２０に書き込まれる符号語を生成する。一方、データの読出し時には、ＥＣＣ部１３は、パリティに基づきシンドロームを生成し、生成したシンドロームに基づいて読出しデータ内のエラーの有無を判断する。また、ＥＣＣ部１３は、読出しデータにエラーが含まれる場合、エラーの位置を特定し、そのエラーを訂正する。ＥＣＣ部１３において訂正可能なエラーの数は、例えばパリティのビット数等によって決定される。訂正可能なエラーの数を超える数のエラーが読出しデータに含まれている場合には、ＥＣＣ部１３は、エラー訂正に失敗し、エラー訂正の失敗をＣＰＵ１１に通知する。
【００２４】
なお、ＥＣＣ部１３が使用する符号には、ＬＤＰＣ（Low-Density Parity-Check）符号など、種々の符号を適用することができる。ただし、チップ間符号としてリード・ソロモン（ＲＳ）符号などを採用した場合には、ガベージコレクション時に符号化をし直す必要が生じる場合が存在する。
【００２５】
ガベージコレクション制御部１６は、定期的又はホスト２等からの命令に応じて、メモリチップ２０に対するガベージコレクションの実行を指示する。図２に、本実施形態に係るガベージコレクション制御部１６の概略構成例を示す。なお、本実施形態では、ガベージコレクション制御部１６をＣＰＵ１１とは別の構成としているが、ＣＰＵ１１がその機能の１つとしてガベージコレクション制御部１６を実現するように構成することも可能である。
【００２６】
図２に示すように、ガベージコレクション制御部１６は、疲弊度管理部１６１と、読出し管理部１６２と、書込み管理部１６３と、ガベージコレクション管理部１６４と、タイマ１６５とを備えている。
【００２７】
読出し管理部１６２は、例えば各メモリチップ２０内の各物理ブロック（以下、単にブロックと称する場合には物理ブロックを指すものとする）に対するリード回数をカウントするリードカウンタを備え、各ブロックのリード回数や、各ブロックに対するリード（パトロールリードを含む）時にＥＣＣ部１３から通知されたエラービット数等の情報を疲弊度管理部１６１に送信する。例えば読出し管理部１６２は、メモリチップ２０に対してページ（又はクラスタ）の読出し動作が実行された場合には、該当ブロックのリードカウンタを１インクリメントするとともに、疲弊度管理部１６１に対してリード回数の更新通知を発行する。なお、ブロックのリード回数は、ブロック単位に取得されてもよいし、複数のブロックを単位として取得されてもよいし、ワードライン単位に取得されてもよい。
【００２８】
なお、パトロールリードとは、メモリチップ２０における各メモリセルの不良等を検出・修復する際のリード動作であって、例えば各メモリチップ２０の全メモリセルに対して定期的に実行されるリード動作である。
【００２９】
さらに、読出し管理部１６２は、後述するガベージコレクション動作においてコレクション元ブロックを選択した場合には、必要に応じて、当該ブロックのリード回数と、当該ブロックから読み出された少なくとも一部のページについてＥＣＣ部１３が検出したエラービット数等の情報とを取得し、取得したリード回数及びエラービット数等の情報を疲弊度管理部１６１へ送信してもよい。
【００３０】
本説明におけるエラー率とは、データ中のエラーの割合を示す情報の総称であって、具体的には、ビットエラー率（ＢＥＲ）や１ｋ（キロ）バイトあたりのエラービット数などの情報を含むものである。なお、ビットエラー率（ＢＥＲ）とは、１ビットあたりのエラー発生確率である。このようなエラー率は、各ブロックのリード回数や各ブロックから読み出されたデータについてＥＣＣ部１３が検出したエラービット数等の情報（以下、ＦＢＣ（Fail Bit Count）情報という）から直接的に求めることが可能である。ここで、ＦＢＣ情報とは、通常リードまたはパトロールリードの際にＥＣＣ部１３によって得られたエラービット数に関する情報であり、例えばリードされたデータのサイズと、当該データに含まれるエラービットの数（エラービット数）とから求まる情報である。また、エラー率は、各ブロックに対するプログラム／消去回数、各ブロックに対して直前の書込みが完了してからの放置時間、各ブロックのリード回数等から推定値として求めることも可能である。その他、後述する説明におけるストレス履歴（又はストレス履歴情報）とは、各ブロックのプログラム／消去回数のことである。以下の説明では、エラー率やストレス履歴等の各ブロックの信頼性の低下に関する情報を総称して疲弊度情報という。
【００３１】
書込み管理部１６３は、例えば各メモリチップ２０内の各ブロックに対するプログラム回数（書込み回数ともいう）や消去回数をカウントするプログラム／消去カウンタを備え、各ブロックのプログラム／消去回数や各ブロックに対する書込み完了時刻を疲弊度管理部１６１に送信する。例えば書込み管理部１６３は、メモリチップ２０に対してブロックの消去命令（論理ブロック単位の消去命令であってもよい）が発行された場合には、該当ブロックのプログラム／消去カウンタを１インクリメントとするとともに、疲弊度管理部１６１に対してストレス履歴の更新通知を発行する。また、書込み管理部１６３は、メモリチップ２０内のブロックに対する書込み動作が実行された場合には、書込み動作の完了を疲弊度管理部１６１に通知する。これに対し、疲弊度管理部１６１は、書込み動作の完了時刻をタイマ１６５から取得する。
【００３２】
疲弊度管理部１６１は、読出し管理部１６２から受信したリード回数と、書込み管理部１６３から受信した書込み完了時刻とから読出しデータにおけるエラー率を計算（推定）し、この算出（推定）したエラー率を保持する。なお、リード回数と書込み完了時刻とから計算（推定）された上記エラー率とは別に、実際の読出し動作時に取得されたエラー率が存在する場合、疲弊度管理部１６１は、これらのうちの悪い方のエラー率をエラー率として保持してもよい。また、疲弊度管理部１６１は、書込み管理部１６３から受信したブロック毎のプログラム／消去回数を各ブロックのストレス履歴として保持する。
【００３３】
疲弊度管理部１６１は、ブロックごとのプログラム／消去回数であるストレス履歴、ブロックに対する書込み完了時刻から求まる当該ブロックの放置時間、ブロックごとのリード回数、及びブロックごとのエラー率を、例えばテーブルを用いて管理する。図３は、疲弊度管理部１６１が管理するテーブルの一例を示す図である。図３に示すように、疲弊度管理部１６１は、ブロックを一意に識別するためのブロックＩＤに対応付けて、ストレス履歴（プログラム／消去回数）、放置時間、リード回数及びエラー率を保持する。なお、放置時間とは、書込み完了時刻以降に該当ブロックに対する書き込みがなされていない期間である。また、図３に示す例では、ブロックごとのエラー率として、１ｋバイトあたりのエラービット数が採用されている。
【００３４】
図２に戻り説明する。ガベージコレクション管理部１６４は、メモリチップ２０に対するガベージコレクションを実行するに際し、疲弊度管理部１６１から対象ブロックに関して管理されているエラー率やストレス履歴等の各種情報を取得し、取得した情報に応じて異なるガベージコレクションを実行する。例えばガベージコレクション管理部１６４は、ガベージコレクション対象のブロック（以下、コレクション元ブロックという）のエラー率やストレス履歴等が比較的低い場合には、対象データに対する復号及び再符号化（以下、ＥＣＣ処理ともいう）を省略してガベージコレクションを実行し、エラー率やストレス履歴等が比較的高い場合には、ＥＣＣ処理を省略せずにガベージコレクションを実行する。例えばガベージコレクション管理部１６４は、コレクション元ブロックの疲弊度情報（エラー率やストレス履歴等）が予め定めておいた閾値未満の場合、コレクション元ブロックが疲弊していないと判定し、対象データに対するＥＣＣ処理を省略してガベージコレクションを実行し、コレクション元ブロックの疲弊度情報（エラー率やストレス履歴等）が予め定めておいた閾値以上の場合、コレクション元ブロックが疲弊していると判定し、対象データに対するＥＣＣ処理を省略せずにガベージコレクションを実行する。なお、疲弊度情報に対して設定する閾値としては、疲弊度情報に含まれるエラー率やストレス履歴等のパラメータごとに異なる閾値が設けられてもよい。
【００３５】
このように、コレクション元ブロックのエラー率やストレス履歴等の疲弊度情報に基づいてガベージコレクション時のＥＣＣ処理の実行の有無を切り替えることで、信頼性の比較的低いブロックを対象とした場合には信頼性の確保を担保しつつガベージコレクションを実行し、信頼性の比較的高いブロックを対象とした場合には低消費電力化を優先しつつガベージコレクションを実行することが可能となる。その結果、全体として、ガベージコレクション時の消費電力を削減することが可能となる。
【００３６】
つづいて、本実施形態にかかるガベージコレクションの動作例について、以下に図面を参照して詳細に説明する。図４は、本実施形態に係るガベージコレクション動作の概略例を示すフローチャートである。なお、以下の説明では、論理ブロック単位でガベージコレクションを実行する場合を例示する。
【００３７】
図４に示すように、本実施形態では、まず、ガベージコレクション管理部１６４は、ガベージコレクションを実行するか否かを判断する（ステップＳ１０１）。ガベージコレクションを実行するか否かの判断は、上述したように、定期的又はホスト２等からの命令に応じたものであってよい。
【００３８】
ガベージコレクションを実行すると判断した場合（ステップＳ１０１のＹＥＳ）、ガベージコレクション管理部１６４は、各ブロックの有効クラスタ率（有効データ率であってもよい）を取得し（ステップＳ１０２）、取得した有効クラスタ率に基づいて、ガベージコレクションの対象とするコレクション元ブロックを選択する（ステップＳ１０３）。コレクション元ブロックの選択ルールには、例えば有効クラスタ率の低いブロックから順に選択する方法や、有効クラスタ率の低いブロックであって比較的更新頻度の低いブロックから順に選択する方法など、種々のルールを採用することができる。また、選択されるコレクション元ブロックは、予め決めておいた所定数のブロックであってもよいし、有効クラスタ率が所定の閾値以下の全てのブロックであってもよいし、有効クラスタのデータサイズが１又は所定数のフリーブロックのサイズ分となる数のブロックであってもよい。
【００３９】
つぎに、ガベージコレクション管理部１６４は、ステップＳ１０３で選択したコレクション元ブロックに関して、疲弊度管理部１６１で管理されている各種情報（図３参照）を取得し（ステップＳ１０４）、取得した各種情報に基づいて、ＥＣＣ処理の実行の有無を判定する（ステップＳ１０５）。なお、本実施形態では、ガベージコレクション管理部１６４は、各種情報として疲弊度情報を取得する。また、ＥＣＣ処理実行有無の判定動作については、後述において図５を用いて説明する。
【００４０】
ステップＳ１０５の判定の結果、ＥＣＣ処理の実行なしとした場合（ステップＳ１０６のＮＯ）、ガベージコレクション管理部１６４は、ステップＳ１０７へ進む。一方、ＥＣＣ処理の実行ありとした場合（ステップＳ１０６のＹＥＳ）、ガベージコレクション管理部１６４は、ステップＳ１０９へ進む。
【００４１】
ステップＳ１０７では、ガベージコレクション管理部１６４は、コレクション元ブロック内の有効クラスタの移動先となるメモリチップ２０（以下、移動先チップという）を選択する。なお、本説明において、有効クラスタの移動には、この有効クラスタ内のデータに対するＥＣＣ符号の移動も含まれるものとする。移動先チップの選択動作については、後述において図６を用いて説明する。つづいて、ガベージコレクション管理部１６４は、コレクション元ブロックから有効クラスタを読み出し、読み出した有効クラスタを移動先チップ内のフリーブロックに格納し（ステップＳ１０８）、ステップＳ１１１へ進む。
【００４２】
一方、ステップＳ１０９では、ガベージコレクション管理部１６４は、コレクション元ブロックから有効クラスタを読み出し、読み出した有効クラスタ内のデータをメモリコントローラ１０のＥＣＣ部１３に入力することで、読み出したデータに対するＥＣＣ処理を実行する。つづいて、ガベージコレクション管理部１６４は、ＥＣＣ部１３によるＥＣＣ処理によって生成された符号語を移動先としたメモリチップ２０内のフリーブロックに書き込み（ステップＳ１１０）、ステップＳ１１１へ進む。
【００４３】
ステップＳ１１１では、ガベージコレクション管理部１６４は、ステップＳ１０３でコレクション元ブロックとして選択したブロックをフリーブロックとして回収する。その後、ガベージコレクション管理部１６４は、本動作を終了するか否かを判定し（ステップＳ１１２）、終了する場合（ステップＳ１１２のＹＥＳ）、本動作を終了する。一方、終了しない場合（ステップＳ１１２のＮＯ）、ガベージコレクション管理部１６４は、ステップＳ１０１へリターンし、以降の動作を実行する。
【００４４】
つづいて、図４のステップＳ１０５に示すＥＣＣ処理実行有無の判定動作について、図５を用いて詳細に説明する。図５に示すように、本動作では、ガベージコレクション管理部１６４は、図４のステップＳ１０４で取得した情報（本実施形態では疲弊度情報）に含まれるエラー率が予め設定しておいた第１閾値以上であるか否かを判定し（ステップＳ１０５１）、第１閾値以上である場合（ステップＳ１０５１のＹＥＳ）、ＥＣＣ処理ありと判断して（ステップＳ１０５４）、図４に示す動作へリターンする。なお、第１閾値と比較されるエラー率には、ビットエラー率（ＢＥＲ）、データリテンション時間、リードディスターブ等が含まれてよく、ビットエラー率（ＢＥＲ）、データリテンション時間、リードディスターブ等それぞれに対して異なる第１閾値が設定されていてもよい。
【００４５】
一方、エラー率が第１閾値未満であると判定した場合（ステップＳ１０５１のＮＯ）、ガベージコレクション管理部１６４は、図４のステップＳ１０４で取得した情報（本実施形態では疲弊度情報）に含まれるストレス履歴が予め設定しておいた第２閾値以上であるか否かを判定し（ステップＳ１０５２）、第２閾値以上である場合（ステップＳ１０５２のＹＥＳ）、ＥＣＣ処理ありと判断して（ステップＳ１０５４）、図４に示す動作へリターンする。
【００４６】
一方、ストレス履歴が第２閾値未満であると判定した場合（ステップＳ１０５２のＮＯ）、ガベージコレクション管理部１６４は、ＥＣＣ処理なしと判断し（ステップＳ１０５３）、図４に示す動作へリターンする。
【００４７】
図５に示す動作のように、コレクション元として選択したブロックのエラー率やストレス履歴等の疲弊度情報に基づいてＥＣＣ処理の実行有無を判断することで、信頼性の比較的低いブロックをコレクション対象とした場合には信頼性の確保を担保しつつガベージコレクションを実行し、信頼性の比較的高いブロックをコレクション対象とした場合には低消費電力化を優先しつつガベージコレクションを実行することが可能となる。その結果、全体として、ガベージコレクション時の消費電力を削減することが可能となる。
【００４８】
つづいて、図４のステップＳ１０７に示す移動先チップの選択動作について、図６を用いて詳細に説明する。図６に示すように、本動作では、ガベージコレクション管理部１６４は、図４のステップＳ１０３で選択したコレクション元ブロック内の有効クラスタのうち、移動先チップが未だ決定されていない有効クラスタを１つ選択する（ステップＳ１０７１）。
【００４９】
つぎに、ガベージコレクション管理部１６４は、選択した有効クラスタが属するメモリチップ２０と同一のメモリチップ２０内にフリーブロックが存在するか否かを判定し（ステップＳ１０７２）、フリーブロックが存在する場合（ステップＳ１０７２のＹＥＳ）、当該フリーブロックに対して割当て済みの有効クラスタの総データサイズと当該フリーブロックのサイズとから、当該フリーブロックが未だステップＳ１０７１で選択した有効クラスタを格納する余裕を有するか否かを判定する（ステップＳ１０７３）。そして、当該フリーブロックが未だ余裕を有している場合（ステップＳ１０７３のＹＥＳ）、ガベージコレクション管理部１６４は、選択した有効クラスタが属するメモリチップ２０と同一のメモリチップ２０を移動先チップとして選択し（ステップＳ１０７４）、ステップＳ１０７９へ進む。
【００５０】
一方、ステップＳ１０７１で選択した有効クラスタが属するメモリチップ２０と同一のメモリチップ２０内にフリーブロックが存在しない場合（ステップＳ１０７２のＮＯ）、又は、当該メモリチップ２０のフリーブロックにステップＳ１０７１で選択した有効クラスタを格納する余裕がない場合（ステップＳ１０７３のＮＯ）、ガベージコレクション管理部１６４は、ステップＳ１０７１で選択した有効クラスタが属するメモリチップ２０と同一のチャネルに接続された別のメモリチップ２０内にフリーブロックが存在するか否かを判定する（ステップＳ１０７５）。
【００５１】
同一チャネルに接続された別のメモリチップ２０内にフリーブロックが存在する場合（ステップＳ１０７５のＹＥＳ）、ガベージコレクション管理部１６４は、当該フリーブロックに対して割当て済みの有効クラスタの総データサイズと当該フリーブロックのサイズとから、当該フリーブロックが未だステップＳ１０７１で選択した有効クラスタを格納する余裕を有するか否かを判定する（ステップＳ１０７６）。そして、当該フリーブロックが未だ余裕を有している場合（ステップＳ１０７６のＹＥＳ）、ガベージコレクション管理部１６４は、選択した有効クラスタが属するメモリチップ２０と同一のチャネルに接続された別のメモリチップ２０を移動先チップとして選択し（ステップＳ１０７７）、ステップＳ１０７９へ進む。
【００５２】
一方、ステップＳ１０７１で選択した有効クラスタが属するメモリチップ２０と同一のチャネルに接続された別のメモリチップ２０内にフリーブロックが存在しない場合（ステップＳ１０７５のＮＯ）、又は、当該メモリチップ２０のフリーブロックにステップＳ１０７１で選択した有効クラスタを格納する余裕がない場合（ステップＳ１０７６のＮＯ）、ガベージコレクション管理部１６４は、ステップＳ１０７１で選択した有効クラスタが属するメモリチップ２０が接続されたチャネルとは別のチャネルに接続された別のメモリチップ２０を移動先チップとして選択し（ステップＳ１０７８）、ステップＳ１０７９へ進む。
【００５３】
ステップＳ１０７９では、ガベージコレクション管理部１６４は、図４のステップＳ１０３で選択したコレクション元ブロック内の有効クラスタのうち、移動先チップが未だ決定されていない有効クラスタが存在するか否かを判定し、存在しない場合（ステップＳ１０７９のＮＯ）、図４に示す動作へリターンする。一方、移動先チップが未だ決定されていない有効クラスタが存在する場合（ステップＳ１０７９のＹＥＳ）、ガベージコレクション管理部１６４は、ステップＳ１０７１へリターンし、以降の動作を実行する。
【００５４】
図６に示すように動作することで、消費電力の最も少ない同一チップ内での有効クラスタの移動の優先度を最も高くし、また、消費電力が最も多い別チャネルに接続された別チップへの移動を最も優先度を低くすることが可能となる。言い換えれば、ガベージコレクション対象の有効クラスタの物理アドレスに基づいてデータ線駆動電力の小さいメモリチップ２０を優先的に移動先チップに選択することが可能となる。その結果、ガベージコレクション時の消費電力を削減することが可能となる。
【００５５】
つづいて、ガベージコレクションを実行する場合の有効クラスタの移動について具体例を用いて説明する。図７〜図９は、ガベージコレクションを実行する場合の有効クラスタの移動を説明するための図である。図７は、有効クラスタの移動先チップに、当該有効クラスタが格納されたメモリチップ２０と同一のメモリチップ２０が選択された場合（図６のステップＳ１０７４に相当）の例を示す。図８は、有効クラスタの一部の移動先チップに、当該有効クラスタが格納されたメモリチップ２０ａと同一のチャネルＣＨに接続された別のメモリチップ２０ｂが選択された場合（図６のステップＳ１０７７に相当）の例を示す。図９は、有効クラスタの移動先チップに、当該有効クラスタが格納されたメモリチップ２０−０ａが接続されたチャネルＣＨ０とは別のチャネルＣＨ１に接続された別のメモリチップ２０−１が選択された場合（図６のステップＳ１０７８に相当）の例を示す。なお、図７〜図９において、斜線のハッチングがなされた領域は、有効クラスタを示している。
【００５６】
図７に示すように、有効クラスタの移動先チップに、当該有効クラスタが格納されたメモリチップ２０と同一のメモリチップ２０が選択された場合、各コレクション元ブロック２３ａ〜２３ｃ内の有効クラスタは、同一のメモリチップ２０内のラッチ回路２２に入力（Ｒ７１）されて整理された後、同一のメモリチップ２０内のフリーブロック２４に格納（Ｒ７２）される。
【００５７】
また、図８に示すように、全部の有効クラスタの移動先チップに、当該有効クラスタが格納されたメモリチップ２０ａと同一のメモリチップ２０ａを選択することができず、有効クラスタの一部の移動先チップに、当該有効クラスタが格納されたメモリチップ２０ａと同一のチャネルＣＨに接続された別のメモリチップ２０ｂが選択された場合、メモリチップ２０ｂが移動先チップとして選択された有効クラスタについては、チャネルＣＨを介してメモリチップ２０ｂ内のラッチ回路２２に入力（Ｒ８１）され、必要に応じて他の有効クラスタと併せて整理された後、メモリチップ２０ｂ内のフリーブロック２４に格納（Ｒ８２）される。
【００５８】
さらに、図９に示すように、全部の有効クラスタの移動先チップに、当該有効クラスタが格納されたメモリチップ２０−０ａと同一のチャネルＣＨ０に接続された他のメモリチップ２０−０ｂ，…を選択することができず、有効クラスタの一部の移動先チップに、当該有効クラスタが格納されたメモリチップ２０−０ａが接続されたチャネルＣＨ０とは別のチャネルＣＨ１に接続された別のメモリチップ２０−１が選択された場合、メモリチップ２０−１が移動先チップとして選択された有効クラスタについては、チャネルＣＨ０、メモリコントローラ１０及びチャネルＣＨ１を介してメモリチップ２０−１内のラッチ回路２２に入力（Ｒ９１）され、必要に応じて他の有効クラスタと併せて整理された後、メモリチップ２０−１内のフリーブロック２４に格納される（Ｒ９２）。この場合、メモリコントローラ１０を介することになるが、例えば不図示の電力供給部を用いてＥＣＣ部１３をオフにしておくことで、ＥＣＣ処理をスキップすることが可能である。その結果、異なるチャネルに接続されたメモリチップ２０間でメモリコントローラ１０を跨いで有効クラスタを移動する場合でも、ＥＣＣ処理の発生による消費電力の増加を回避することが可能となる。
【００５９】
以上のように、ガベージコレクションを実行する場合、メモリチップ２０間で有効クラスタ率の偏りが存在する可能性があるため、同一のメモリチップ２０内のフリーブロックの容量が足りずにこのメモリチップ２０単独でガベージコレクションを完結できず、別のメモリチップ２０へ有効クラスタの一部又は全部を移動する必要が生じる場合がある。なお、物理ブロック単位でガベージコレクションを実行する場合、有効クラスタの物理ブロックごとの偏りがあったとしても同一のメモリチップ２０内でガベージコレクションを完結することが可能であるため、有効クラスタの移動先チップを同一のメモリチップ２０に限定することが可能である。この場合、図７に例示した動作によって有効クラスタを同一のメモリチップ２０内のフリーブロックに移動することが可能である。
【００６０】
また、メモリコントローラ１０と複数のメモリチップ２０との間に、各メモリチップ２０へのアクセスを制御するインタフェース（Ｉ／Ｆ）チップが存在する構成では、Ｉ／Ｆチップを跨いで有効クラスタを移動するか否かでガベージコレクション時の消費電力に差が生じる。例えば図１０に示す例では、メモリコントローラ１０から延在するチャネルＣＨに対して並列に複数のＩ／Ｆチップ２１が設けられている。このような構成では、メモリチップ２０−０から同一チャネルＣＨに接続された別のメモリチップ２０−１へ有効クラスタを移動する場合（図６のステップＳ１０７７、図８に相当）でも、Ｉ／Ｆチップ２１を跨ぐ場合と跨がない場合とが存在するが、Ｉ／Ｆチップ２１を跨がない場合の方が消費電力が小さい。そのため、このような場合では、Ｉ／Ｆチップ２１を跨ぐ必要のないメモリチップ２０が優先的に移動先チップとして選択されるように構成するとよい。
【００６１】
また、図１１に示すように、各チャネルＣＨ０，ＣＨ１，…に対して個別にＩ／Ｆチップ２１が設けられている場合も存在する。そのような場合、図９に例示した方法と同様の方法にて、メモリチップ２０−０が接続されたチャネルＣＨ０とは異なるチャネルＣＨ１に接続されたメモリチップ２０−１へ有効クラスタを移動することが可能であるが、この場合でも、メモリコントローラ１０のＥＣＣ部１３をオフにしておくことで、ＥＣＣ処理をスキップすることが可能である。その結果、ＥＣＣ処理の発生による消費電力の増加を回避することが可能となる。
【００６２】
以上のように、本実施形態によれば、コレクション元ブロックのエラー率やストレス履歴等の疲弊度情報に基づいてガベージコレクション時のＥＣＣ処理の実行の有無を切り替えることが可能となる。その結果、全体として、ガベージコレクション時の消費電力を削減することが可能となる。
【００６３】
また、ガベージコレクションにおいて、有効クラスタの移動に必要なチャネル等の駆動電力の少ないメモリチップ２０を優先的に移動先チップに選択することが可能となるため、ガベージコレクション時の消費電力をより低減することが可能となる。
【００６４】
（第２の実施形態）
つぎに、第２の実施形態に係るメモリシステム、その制御方法及びプログラムについて、図面を参照して詳細に説明する。
【００６５】
図１２は、第２の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図１２に示すように、メモリシステム２００は、第１の実施形態に係るメモリシステム１（図１等参照）と同様の構成において、メモリコントローラ２１０がランダマイザ２１１をさらに備えている。
【００６６】
ランダマイザ２１１は、例えば線形帰還シフトレジスタ（ＬＦＳＲ：Linear Feedback Shift Register）などで構成された擬似乱数発生器であり、入力されたシードに応じた擬似乱数を発生する。例えばＥＣＣ部１３が生成した符号語などの書込みデータは、例えばランダマイザ２１１が発生した擬似乱数との排他的論理和（ＸＯＲ）をとることでランダマイズされた後、メモリチップ２０内に格納される。また、メモリチップ２０から読み出された読出しデータは、書込み時に使用したシードと同じシードを用いて生成された同じ擬似乱数を用いてランダマイズが解かれた後、ＥＣＣ部１３に入力されて復号される。
【００６７】
書込みデータのランダマイズに使用するシードは、メモリチップ２０における当該データの格納位置（ワードライン番号やページ番号などの物理位置）に応じて決定される。そのため、データをランダマイズした後にメモリチップ２０に書き込む構成では、ガベージコレクションの際に移動対象の有効クラスタに施されたランダマイズを一旦解き、その後、新たな格納位置に応じたシードを用いて生成された擬似乱数を用いてランダマイズをし直す必要が存在する。
【００６８】
ただし、移動対象の有効クラスタに施されたランダマイズを解くためには、メモリチップ２０間の移動の有無に関わらず、有効クラスタをメモリコントローラ２１０に一旦入力する必要が生じるが、その際、メモリコントローラ２１０内のＥＣＣ部１３が機能していると、ＥＣＣ部１３によるＥＣＣ処理が実行され、その分の電力が消費される。そこで本実施形態では、例えば第１の実施形態において図５のステップＳ１０５３で説明した動作においてＥＣＣ処理なしと判断した場合には、メモリコントローラ２１０におけるＥＣＣ部１３を例えば不図示の電力供給部を用いて一時的にオフにする。それにより、ＥＣＣ処理がスキップされることとなるため、ＥＣＣ処理の発生による消費電力の増加を回避することが可能となる。
【００６９】
以上のように、ガベージコレクション時にメモリコントローラ２１０におけるランダマイザ２１１を用いてランダマイズの解除及び／又は再ランダマイズを実行する必要がある場合でも、メモリコントローラ２１０におけるＥＣＣ部１３を一時的にオフにしておくことでＥＣＣ処理がスキップされることとなるため、ＥＣＣ処理の発生による消費電力の増加を回避することが可能となる。
【００７０】
なお、各メモリチップ２０がオンチップのランダマイザを備えている場合も存在するが、そのような場合には、メモリコントローラ２１０を介さずに、移動対象の有効クラスタに施されたランダマイズの解除と再ランダマイズとが可能である。
【００７１】
例えば有効クラスタを同一のメモリチップ２０内のフリーブロックに移動する場合では、図１３に示すように、コレクション元ブロック２３ａ〜２３ｃから読み出された有効クラスタ内のデータは、同一のメモリチップ２０内のランダマイザ２５に入力（Ｒ１３１）されてランダマイズが解除された後、ラッチ回路２２に入力（Ｒ１３２）されて整理され、その後、再びランダマイザ２５に入力（Ｒ１３３）されてランダマイズされた後、同一のメモリチップ２０内のフリーブロック２４に格納される（Ｒ１３４）。また、例えば有効クラスタを同一又は別のチャネルに接続された別のメモリチップ２０内のフリーブロックに移動する場合でも同様に、コレクション元ブロック２３から読み出された有効クラスタ内のデータは、同一のメモリチップ２０内のランダマイザ２５に入力されてランダマイズが解除された後、移動先チップ内のラッチ回路２２に入力されて必要に応じて他の有効クラスタと整理され、その後、この移動先チップ内のランダマイザ２５に入力されて再ランダマイズされた後、当該移動先チップ内のフリーブロック２４に格納される。
【００７２】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００７３】
（第３の実施形態）
つぎに、第３の実施形態に係るメモリシステム、その制御方法及びプログラムについて、図面を参照して詳細に説明する。
【００７４】
上述した実施形態では、エラー率やストレス履歴等の疲弊度情報に基づいて、ガベージコレクション時のＥＣＣ処理の実行有無を判断する場合を例示したが、第３の実施形態では、エラー率やストレス履歴等に加え、放置時間（図３参照）及び温度履歴にも基づいて、ガベージコレクション時のＥＣＣ処理の実行有無を判断する場合について、例を挙げて説明する。この場合、放置時間及び温度履歴も疲弊度情報に含まれる。
【００７５】
図１４は、第３の実施形態に係るガベージコレクション制御部の概略構成例を示すブロック図である。なお、本実施形態に係るメモリシステムは、例えば図１に示すメモリシステム１又は図１２に示すメモリシステム２００と同様であってよいため、ここでは重複する説明を省略する。
【００７６】
図１４に示すように、ガベージコレクション制御部３１６は、例えば図２に示すガベージコレクション制御部１６と同様の構成に加え、温度センサ３６１と、温度履歴記憶部３６２とを備える。
【００７７】
温度センサ３６１は、例えば定期的又は疲弊度管理部１６１等からの要求に応じて、メモリチップ２０周辺の温度情報を取得し、取得した温度情報を疲弊度管理部１６１に入力する。なお、温度センサ３６１の搭載位置は、ガベージコレクション制御部３１６内に限られず、必要な箇所の温度を測定することが可能な種々の位置に変更することが可能である。
【００７８】
疲弊度管理部１６１は、温度センサ３６１から温度情報が入力されると、入力された温度情報をタイマ１６５から取得した現在の日時と対応付けて、温度履歴記憶部３６２に格納する。したがって、温度履歴記憶部３６２には、温度情報が時系列に沿って管理されている。
【００７９】
ガベージコレクション管理部１６４は、例えば図４のステップＳ１０４において、コレクション元ブロックに関する各種情報（例えば疲弊度情報におけるエラー率やストレス情報等）を取得するとともに、当該コレクション元ブロックの放置時間中の温度情報を温度履歴記憶部３６２から取得する。そして、ガベージコレクション管理部１６４は、図４のステップＳ１０５（詳細には図５）に示す動作において、放置時間中の温度情報に基づき、ＥＣＣ処理の実行の有無を判定する。
【００８０】
図１５は、本実施形態に係るＥＣＣ処理実行有無の判定動作の一例を示すフローチャートである。なお、他の動作については、例えば第１の実施形態において図４〜図６を用いて説明した動作と同様であってよいため、ここでは詳細な説明を省略する。
【００８１】
図１５に示すように、ガベージコレクション管理部１６４は、図５のステップＳ１０５１〜Ｓ１０５２と同様の動作を実行した結果、エラー率が第１閾値未満であり（ステップＳ１０５１のＮＯ）、且つ、ストレス履歴が第２閾値未満であった場合（ステップＳ１０５２のＮＯ）、つづいて、対象のコレクション元ブロックに関し、放置時間中の温度変化が予め定めておいた第３閾値以上であるか否かを判定する（ステップＳ３０５３）。放置時間中の温度変化が第３閾値以上であった場合（ステップＳ３０５３のＹＥＳ）、ガベージコレクション管理部１６４は、ＥＣＣ処理ありと判断し（ステップＳ１０５４）、図４に示す動作へリターンする。一方、放置時間中の温度変化が第３閾値未満であった場合（ステップＳ３０５３のＮＯ）、ガベージコレクション管理部１６４は、ＥＣＣ処理なしと判断し（ステップＳ１０５３）、図４に示す動作へリターンする。
【００８２】
なお、温度履歴に基づいたＥＣＣ処理の実行有無の判断基準は、放置時間中の温度変化の大きさに限定されず、例えば、放置時間中にコレクション元ブロックの温度が予め定めておいた所定温度以上又は所定温度以下となったか否かや、所定温度以上又は所定温度以下になった時間が一定時間を超えたか否かや、所定温度以上又は所定温度以下になった回数が一定数を超えたか否かなど、種々変更することが可能である。その場合、ガベージコレクション管理部１６４は、放置時間中にコレクション元ブロックの温度がＥＣＣ処理の実行ありと判断する基準を満たしていれば、ＥＣＣ処理ありと判断し（図５のステップＳ１０５４）、判断基準を満たしていなければ、ＥＣＣ処理なしと判断する（図５のステップＳ１０５３）ように構成することができる。
【００８３】
以上のように、エラー率やストレス履歴や温度情報等の疲弊度情報に基づいてＥＣＣ処理の実行有無を判断するように構成することで、より的確にＥＣＣ処理の必要性について判断することが可能となる。その結果、メモリシステムの信頼性を低下させることなく、ガベージコレクション時の消費電力を削減することが可能なメモリシステムを実現することが可能となる。
【００８４】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００８５】
（第４の実施形態）
つぎに、第４の実施形態に係るメモリシステム、その制御方法及びプログラムについて、図面を参照して詳細に説明する。第４の実施形態では、同一の有効クラスタに対してＥＣＣ処理なしのガベージコレクションが所定回数（例えば２回）以上連続して実行されることを回避する場合について、例を挙げて説明する。なお、簡略化のため、本実施形態では、同一の有効クラスタに対してＥＣＣ処理なしのガベージコレクションが２回以上連続して実行されることを回避する場合について、例を挙げて説明する。
【００８６】
図１６は、第４の実施形態に係るガベージコレクション制御部の概略構成例を示すブロック図である。なお、本実施形態に係るメモリシステムは、例えば図１に示すメモリシステム１又は図１２に示すメモリシステム２００と同様であってよいため、ここでは重複する説明を省略する。
【００８７】
図１６に示すように、ガベージコレクション制御部４１６は、例えば図２に示すガベージコレクション制御部１６と同様の構成に加え、実行履歴記憶部４６２をさらに備える。
【００８８】
実行履歴記憶部４６２は、ガベージコレクションの対象となった有効クラスタに対して過去に実行されたガベージコレクションにおいてＥＣＣ処理が実行されたか否かを管理する。そこで実行履歴記憶部４６２は、各ブロックについて、当該ブロックに対する直前の書込みがガベージコレクションにおいて有効クラスタの移動先のフリーブロック（以下、移動先ブロックという）となったことによる書込みであるか否かの情報と、移動先ブロックとなったことによる書込みである場合にはそのガベージコレクションにおいてＥＣＣ処理が実行されたか否かに関する情報とを実行履歴として記憶する。これらの情報には、例えば‘０’及び‘１’で情報を保持する２値フラグを用いることが可能である。ただし、これに限定されず、種々の情報形態を用いることが可能である。
【００８９】
ガベージコレクション管理部１６４は、例えば図４のステップＳ１０４において、コレクション元ブロックに関する各種情報を取得するとともに、当該コレクション元ブロックに対するガベージコレクションの実行履歴を実行履歴記憶部４６２から取得する。そして、ガベージコレクション管理部１６４は、図４のステップＳ１０５（詳細には図５）に示す動作において、当該コレクション元ブロックに対するガベージコレクションの実行履歴に基づき、ＥＣＣ処理の実行の有無を判定する。
【００９０】
図１７は、本実施形態に係るＥＣＣ処理実行有無の判定動作の一例を示すフローチャートである。なお、他の動作については、例えば第１の実施形態において図４〜図６を用いて説明した動作と同様であってよいため、ここでは詳細な説明を省略する。
【００９１】
図１７に示すように、ガベージコレクション管理部１６４は、まず、実行履歴記憶部４６２から取得した過去のガベージコレクションの実行履歴に基づき、該当のコレクション元ブロックに関して、前回のガベージコレクションの際にＥＣＣ処理がスキップされたか否かを判定する（ステップＳ４００１）。前回のガベージコレクションの際にＥＣＣ処理がスキップされていた場合（ステップＳ４００１のＹＥＳ）、ガベージコレクション管理部１６４は、当該コレクション元ブロックから読み出された有効クラスタに対し、ＥＣＣ処理ありと判断し（ステップＳ１０５４）、図４に示す動作へリターンする。一方、前回のガベージコレクションの際にＥＣＣ処理が実行されていた場合（ステップＳ４００１のＮＯ）、ガベージコレクション管理部１６４は、図５のステップＳ１０５１〜Ｓ１０５４と同様の動作を実行することで、ＥＣＣ処理をスキップするか否かを判断し、その後、図４に示す動作へリターンする。
【００９２】
なお、移動対象の有効クラスタに対して２回以上の所定回数までＥＣＣ処理なしのガベージコレクションが連続して実行されることを許容する場合には、実行履歴記憶部４６２は、例えば有効クラスタ単位で、過去所定回数分のガベージコレクション時にＥＣＣ処理が実行されたか否かの情報を実行履歴として記憶すればよい。その場合、ガベージコレクション管理部１６４は、図１７のステップＳ４００１において、ガベージコレクション時に移動対象とした有効クラスタについての実行履歴を実行履歴記憶部４６２から取得し、取得した実行履歴に基づいて、当該有効クラスタに対して直前に所定回数連続してＥＣＣ処理なしのガベージコレクションが実行されたか否かを判定する。直前に所定回数連続してＥＣＣ処理なしのガベージコレクションが実行されていた場合（ステップＳ４００１のＹＥＳ）、ガベージコレクション管理部１６４は、当該有効クラスタに対し、ＥＣＣ処理ありと判断し（ステップＳ１０５４）、図４に示す動作へリターンする。一方、直前に所定回数連続してＥＣＣ処理なしのガベージコレクションが実行されていないと判定した場合（ステップＳ４００１のＮＯ）、ガベージコレクション管理部１６４は、図５のステップＳ１０５１〜Ｓ１０５４と同様の動作を実行することで、ＥＣＣ処理をスキップするか否かを判断し、その後、図４に示す動作へリターンする。
【００９３】
また、ブロック単位でガベージコレクションを実行する場合であって、移動対象のブロックに含まれる有効クラスタに対して２回以上の所定回数までＥＣＣ処理なしのガベージコレクションが連続して実行されることを許容する場合も同様に、実行履歴記憶部４６２は、例えば有効クラスタ単位で、過去所定回数分のガベージコレクション時にＥＣＣ処理が実行されたか否かの情報を実行履歴として記憶すればよい。ただし、この場合、ガベージコレクション管理部１６４は、図１７のステップＳ４００１において、ガベージコレクション時に移動対象としたブロックに含まれる全ての有効クラスタについての実行履歴を実行履歴記憶部４６２から取得し、取得した実行履歴のうちのＥＣＣ処理なしのガベージコレクションの連続実行回数の最大値が所定回数以上であるか否かを判定する。連続実行回数の最大値が所定回数以上である場合（ステップＳ４００１のＹＥＳ）、ガベージコレクション管理部１６４は、当該ブロックに含まれる有効クラスタに対し、ＥＣＣ処理ありと判断し（ステップＳ１０５４）、図４に示す動作へリターンする。一方、連続実行回数の最大値が所定回数未満である場合（ステップＳ４００１のＮＯ）、ガベージコレクション管理部１６４は、図５のステップＳ１０５１〜Ｓ１０５４と同様の動作を実行することで、ＥＣＣ処理をスキップするか否かを判断し、その後、図４に示す動作へリターンする。
【００９４】
以上のように、エラー率やストレス履歴等の疲弊度情報に加え、移動対象の有効クラスタに対する過去のガベージコレクションにおいてＥＣＣ処理が実行されたか否かに基づいてＥＣＣ処理の実行有無を判断するように構成することで、同一の有効クラスタに対して所定回数以上連続してＥＣＣ処理なしのガベージコレクションが実行されることを回避することが可能となる。その結果、メモリシステムの信頼性を低下させることなく、ガベージコレクション時の消費電力を削減することが可能なメモリシステムを実現することが可能となる。
【００９５】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００９６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９７】
１，２００…メモリシステム、１０，２１０…メモリコントローラ、１１…ＣＰＵ、１２…ＲＡＭ、１３…ＥＣＣ部、１４…バッファメモリ、１５…メモリインタフェース、１６，３１６，４１６…ガベージコレクション制御部、１７…ホストインタフェース、１８…内部バス、２０，２０ａ，２０ｂ，２０−０ａ，２０−０ｂ，２０−１…メモリチップ、２１…インタフェースチップ、２２…ラッチ回路、２３，２３ａ〜２３ｃ…コレクション元ブロック、２４…フリーブロック、２５，２１１…ランダマイザ、１６１…疲弊度管理部、１６２…読出し管理部、１６３…書込み管理部、１６４…ガベージコレクション管理部、１６５…タイマ、３６１…温度センサ、３６２…温度履歴記憶部、４６２…実行履歴記憶部、ＣＨ，ＣＨ０，ＣＨ１，…チャネル。
【図１】
2019053415.tif 000003
【図２】
2019053415.tif 000004
【図３】
2019053415.tif 000005
【図４】
2019053415.tif 000006
【図５】
2019053415.tif 000007
【図６】
2019053415.tif 000008
【図７】
2019053415.tif 000009
【図８】
2019053415.tif 000010
【図９】
2019053415.tif 000011
【図１０】
2019053415.tif 000012
【図１１】
2019053415.tif 000013
【図１２】
2019053415.tif 000014
【図１３】
2019053415.tif 000015
【図１４】
2019053415.tif 000016
【図１５】
2019053415.tif 000017
【図１６】
2019053415.tif 000018
【図１７】
2019053415.tif 000019