IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム 図1
  • 特開-メモリシステム 図2
  • 特開-メモリシステム 図3
  • 特開-メモリシステム 図4
  • 特開-メモリシステム 図5
  • 特開-メモリシステム 図6
  • 特開-メモリシステム 図7
  • 特開-メモリシステム 図8
  • 特開-メモリシステム 図9
  • 特開-メモリシステム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024042531
(43)【公開日】2024-03-28
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20240321BHJP
   G06F 12/02 20060101ALI20240321BHJP
【FI】
G06F12/00 560A
G06F12/00 597U
G06F12/02 530E
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022147310
(22)【出願日】2022-09-15
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】松川 伸一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160AA14
(57)【要約】
【課題】メモリシステムの性能を低下させずにメンテナンス処理を実行すること。
【解決手段】メモリシステムは、不揮発性メモリと、前記不揮発性メモリへの書き込み動作、読み出し動作、及び消去動作を制御するメモリコントローラと、を備える。前記メモリコントローラは、前記書き込み動作、前記読み出し動作、もしくは前記消去動作に関連する時刻、又は、前記メモリコントローラと通信可能なホストが前記書き込み動作を要求するライトコマンド、前記ホストが前記読み出し動作を要求するリードコマンド、もしくは前記ホストが前記消去動作を要求するイレースコマンドに関連する時刻を示す時刻情報を取得し、前記時刻情報に基づいて、前記不揮発性メモリのメンテナンス処理を実行するか否かを判断する。
【選択図】図3
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリへの書き込み動作、読み出し動作、及び消去動作を制御するメモリコントローラと、を備え、
前記メモリコントローラは、
前記書き込み動作、前記読み出し動作、もしくは前記消去動作に関連する時刻、又は、前記メモリコントローラと通信可能なホストが前記書き込み動作を要求するライトコマンド、前記ホストが前記読み出し動作を要求するリードコマンド、もしくは前記ホストが前記消去動作を要求するイレースコマンドに関連する時刻を示す時刻情報を取得し、
前記時刻情報に基づいて、前記不揮発性メモリのメンテナンス処理を実行するか否かを判断する、メモリシステム。
【請求項2】
前記メモリコントローラは、前記ホストから受信した第1コマンドによって前記時刻情報を取得する、請求項1に記載のメモリシステム。
【請求項3】
前記第1コマンドは、前記リードコマンド、前記ライトコマンド、及び前記イレースコマンドのいずれとも異なるコマンドである、請求項2に記載のメモリシステム。
【請求項4】
前記メモリコントローラは、
前記ホストから受信した前記ライトコマンドに応じて前記書き込み動作を実行し、
前記書き込み動作の後に、前記不揮発性メモリに格納されたファイルシステムを解析することによって、前記時刻情報を取得する、請求項1に記載のメモリシステム。
【請求項5】
前記メモリコントローラは、前記ファイルシステムに含まれるタイムスタンプが新規で記録された又は更新されたものであると判断した場合に、前記メンテナンス処理を実行する、請求項4に記載のメモリシステム。
【請求項6】
前記メモリコントローラは、
時計機能を有し、
前記ホストから受信した第2コマンドがカウント対象のコマンドであると判断した場合に、前記時計機能に基づいて、前記第2コマンドを受信した時刻又は前記第2コマンドに基づく動作を実行した時刻を示す前記時刻情報を取得する、請求項1に記載のメモリシステム。
【請求項7】
前記メモリコントローラは、
取得した前記時刻情報に基づいて、期間ごとに前記ライトコマンドを受信した回数に係るライトコマンドカウント数、前記リードコマンドを受信した回数に係るリードコマンドカウント数、又は前記イレースコマンドを受信した回数に係るイレースコマンドカウント数を積算し、
前記時刻情報及び前記ライトコマンドカウント数、前記リードコマンドカウント数、又は前記イレースコマンドカウント数を前記不揮発性メモリに格納する、請求項1乃至6のいずれか一に記載のメモリシステム。
【請求項8】
前記ライトコマンドに対する前記ライトコマンドカウント数の比は、前記リードコマンドに対する前記リードコマンドカウント数の比、又は前記イレースコマンドに対する前記イレースコマンドカウント数の比と異なる、請求項7に記載のメモリシステム。
【請求項9】
前記メモリコントローラは、
前記期間ごとの前記ライトコマンドカウント数、前記リードコマンドカウント数、又は前記イレースコマンドカウント数に基づいて1のメンテナンス処理実行期間を選択し、
前記メンテナンス処理実行期間で、前記メンテナンス処理を実行する、請求項7に記載のメモリシステム。
【請求項10】
前記メモリコントローラは、
前記時刻情報を取得した場合、前記期間ごとの前記ライトコマンドカウント数、前記リードコマンドカウント数、又は前記イレースコマンドカウント数に基づいて、前記時刻情報が示す時刻が適正か否かを判断し、
前記時刻情報が示す時刻が適正であると判断した場合、前記メンテナンス処理を実行する、請求項7に記載のメモリシステム。
【請求項11】
前記メンテナンス処理は、前記不揮発性メモリのガベージコレクションを含む、請求項7に記載のメモリシステム。
【請求項12】
前記メンテナンス処理は、前記不揮発性メモリのリフレッシュを含む、請求項7に記載のメモリシステム。
【請求項13】
前記メモリコントローラは、
前記時刻情報を取得した場合、前回取得した前記時刻情報との差分を計算し、
前記差分及びしきい値に基づいて、前記メンテナンス処理を実行するか否かを判断する、請求項1乃至6のいずれか一に記載のメモリシステム。
【請求項14】
前記メンテナンス処理は、前記不揮発性メモリのガベージコレクションを含む、請求項1乃至6のいずれか一に記載のメモリシステム。
【請求項15】
前記メンテナンス処理は、前記不揮発性メモリのリフレッシュを含む、請求項1乃至6のいずれか一に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一実施形態は不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
【0003】
上記のメモリシステムにおいて、例えば、ガベージコレクション、リフレッシュ、及びパトロールリードのような、不揮発性メモリのメンテナンス処理が行われる。メンテナンス処理は、通常、電源がON状態になったとき、又はホスト機器からのコマンドに応じて実行される。メモリシステムの性能を低下させることなく、上記のメンテナンス処理を実行することが要求されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2009/0172267号明細書
【特許文献2】米国特許第9014749号明細書
【特許文献3】米国特許第9368226号明細書
【特許文献4】米国特許出願公開第2018/0039441号明細書
【特許文献5】米国特許出願公開第2019/0179747号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示は、メモリシステムの性能を低下させることなくメンテナンス処理を実行することを目的とする。
【課題を解決するための手段】
【0006】
一実施形態に係るメモリシステムは、不揮発性メモリと、前記不揮発性メモリへの書き込み動作、読み出し動作、及び消去動作を制御するメモリコントローラと、を備える。前記メモリコントローラは、前記書き込み動作、前記読み出し動作、もしくは前記消去動作に関連する時刻、又は、前記メモリコントローラと通信可能なホストが前記書き込み動作を要求するライトコマンド、前記ホストが前記読み出し動作を要求するリードコマンド、もしくは前記ホストが前記消去動作を要求するイレースコマンドに関連する時刻を示す時刻情報を取得し、前記時刻情報に基づいて、前記不揮発性メモリのメンテナンス処理を実行するか否かを判断する。
【図面の簡単な説明】
【0007】
図1】一実施形態に係るメモリシステムの構成を示すブロック図である。
図2】一実施形態に係るメモリシステムの機能ブロック図である。
図3】一実施形態に係るメモリシステムにおいて、ヒストグラム作成に係るフローチャートである。
図4】一実施形態に係るメモリシステムにおいて用いられるヒストグラムの一例を示す図である。
図5】一実施形態に係るメモリシステムにおいて、メンテナンス処理の実行に係るフローチャートである。
図6】一実施形態に係るメモリシステムの機能ブロック図である。
図7】一実施形態に係るメモリシステムにおいて、ヒストグラム作成に係るフローチャートである。
図8】一実施形態に係るメモリシステムの機能ブロック図である。
図9】一実施形態に係るメモリシステムにおいて、ヒストグラム作成に係るフローチャートである。
図10】一実施形態に係るメモリシステムにおいて、メンテナンス処理の実行に係るフローチャートである。
【発明を実施するための形態】
【0008】
以下、実施形態に係るメモリシステムについて、図面を参照して具体的に説明する。以下の説明において、略同一の機能及び構成を有する構成要素に対して同一符号が付されており、重複する説明が省略される場合がある。以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示する。実施形態の技術思想は、構成要素の材質、形状、構造、配置等を下記のものに限定しない。実施形態の技術的思想は、特許請求の範囲に対して、種々の変更を加えたものであってもよい。
【0009】
以下の説明において、「メンテナンス処理」とは、ホストからのコマンドの内容に関係なく、不揮発性メモリに対して実行される処理を意味する。メンテナンス処理は、例えば、不揮発性メモリに対するガベージコレクション、リフレッシュ、及びパトロールリードなどの処理を含む。
【0010】
ガベージコレクションは、後述する物理ブロックのうち使用可能なブロックを増加させるための処理で、例えば、有効データ及び無効データが含まれている複数のアクティブブロックから有効データを集めて、別のブロックに書き直し、フリーブロックを確保する処理を意味する。ここで、アクティブブロックは、有効データが記録されている物理ブロックを示す。フリーブロックは、有効データが記録されていない物理ブロックを示す。フリーブロックは、消去後に、消去済みブロックとして再利用可能である。フリーブロックは、本実施形態では、有効データが記録されていない消去前のブロックと、消去済みブロックと、の両方を含んでいる。有効データとは、後述する論理アドレスと対応付けられているデータであり、無効データとは論理アドレスが対応付けられていないデータである。消去済みブロックは、データが書き込まれると、アクティブブロックとなる。
【0011】
リフレッシュは、例えば、後述する誤り訂正復号における訂正ビット数が増加する等のように、ある物理ブロック内のデータの劣化が検出された場合に、当該物理ブロック内のデータを別の物理ブロックに書き直す処理である。
【0012】
パトロールリードは、エラーの発生数が増加した物理ブロックを検出するために、例えば、不揮発性メモリに記憶されているデータを所定単位ずつ読み出し、当該読み出されたデータを誤り訂正復号の結果に基づいてテストする処理である。このテスト処理では、例えば、読み出されたデータの誤りビット数を閾値と比較し、誤りビット数が閾値を越えたデータをリフレッシュの対象とする。
【0013】
[1.第1実施形態]
第1実施形態に係るメモリシステムについて説明する。第1実施形態に係るメモリシステムは、例えば、半導体記憶装置としてのNAND型フラッシュメモリと、当該NAND型フラッシュメモリを制御するメモリコントローラと、を含む。本実施形態において、メモリコントローラは、メンテナンス処理を実行するか否かを判断する機能を有する。
【0014】
[1-1.メモリシステム1の全体構成]
図1は、一実施形態に係るメモリシステムの構成を説明するためのブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と、複数のメモリセルを含む不揮発性メモリ20とを備える。メモリシステム1は、ホスト30(Host)と接続可能である。図1では、メモリシステム1とホスト30とが接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【0015】
不揮発性メモリ20は、複数のメモリチップ21を含む。メモリコントローラ10は複数のメモリチップ21の各々を制御する。具体的には、メモリコントローラ10は、メモリチップ21の各々に対してデータの書き込み動作、読み出し動作、及び消去動作を実行する。複数のメモリチップ21の各々は、NANDバスを介してメモリコントローラ10に接続されている。
【0016】
各々のメモリチップ21は、複数のダイ22を含む。ダイ22は、メモリセルが形成されたウェハ単位を意味する。複数のダイ22が積層されることでメモリチップ21が構成されている。
【0017】
各々のダイ22には、複数のメモリブロック23が設けられている。メモリブロック23は一括消去が可能な単位である。メモリブロック23に設けられた全てのメモリセルトランジスタは同じソース線に接続されている。メモリブロック23の1つの単位を「物理ブロック」という場合がある。
【0018】
メモリブロック23は複数のページで構成されている。書き込み動作及び読み出し動作はページ単位で実行される。メモリ素子の最小単位であるメモリセルトランジスタを単に「メモリセル」という場合がある。物理ブロック中におけるメモリセルの位置を「物理アドレス」という場合がある。
【0019】
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の半導体記憶装置を用いることができる。不揮発性メモリ20が半導体記憶装置であることは必須ではない。半導体記憶装置以外の種々の記憶媒体に対して本実施形態を適用することができる。
【0020】
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよく、SSD(Solid State Drive)等であってもよい。
【0021】
メモリコントローラ10は、例えばSoC(System On a Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部はハードウェアによって実現されるが、CPU(Central Processing Unit)がファームウェアを実行することによって実現されてもよい。
【0022】
メモリコントローラ10は、ホスト30からの書き込み要求(ライトコマンド)に従って不揮発性メモリ20への書き込み動作を制御し、ホスト30からの読み出し要求(リードコマンド)に従って不揮発性メモリ20からの読み出し動作を制御し、ホスト30からの消去要求(イレースコマンド)に従って不揮発性メモリ20への消去動作を制御する。メモリコントローラ10は、プロセッサ11(Processor)、RAM12(Random Access Memory)、ROM13(Read Only Memory)、ランダマイザ14(Randomizer)、ECC回路15(ECC)、圧縮・伸張回路16(Compression/Decompression)、ホストインタフェース17(Host I/F)、及びメモリインタフェース18(Memory I/F)を備える。これらの機能ブロックは内部バス19で相互に接続されている。
【0023】
プロセッサ11は、メモリシステム1の各機能ブロックを統括的に制御する制御部である。プロセッサ11は、ホスト30からの要求(コマンド)をホストインタフェース17経由で受け付けた場合に、そのコマンドに応じた制御を行う。例えば、プロセッサ11は、ホスト30からのライトコマンドに応じて、不揮発性メモリ20へのデータの書き込み動作をメモリインタフェース18へ指示する。プロセッサ11は、ホスト30からのリードコマンドに応じて、不揮発性メモリ20からのデータの読み出し動作をメモリインタフェース18へ指示する。プロセッサ11は、ホスト30からのイレースコマンドに応じて、不揮発性メモリ20へのデータの消去動作をメモリインタフェース18へ指示する。
【0024】
プロセッサ11は、ホスト30からライトコマンドを受信した場合、RAM12に一時的に保持されている書き込み対象のデータに対して、不揮発性メモリ20上の記憶領域(メモリ領域)を決定する。すなわち、プロセッサ11は、データの書き込み先を管理する。ホスト30から受信したデータの論理アドレスと、当該データが格納された不揮発性メモリ20上のメモリ領域を示す物理アドレスと、の対応はアドレス変換テーブルに格納される。プロセッサ11は、ライトコマンドに応じた書き込み動作を実行する際に、書き込み動作が行われた時刻又はある基準時からの時間をRAM12に保持することができる。
【0025】
プロセッサ11は、ホスト30からリードコマンドを受信した場合、リードコマンドによって指定された論理アドレスを、上述のアドレス変換テーブルを用いて物理アドレスに変換し、当該物理アドレスからの読み出し動作をメモリインタフェース18へ指示する。プロセッサ11は、リードコマンドに応じた読み出し動作を実行する際に、読み出し動作が行われた時刻又はある基準時からの時間をRAM12に保持することができる。
【0026】
プロセッサ11は、ホスト30からイレースコマンドを受信した場合、イレースコマンドによって指定された論理アドレスを、上述のアドレス変換テーブルを用いて物理アドレスに変換し、当該物理アドレスに対する消去動作をメモリインタフェース18へ指示する。プロセッサ11は、イレースコマンドに応じた消去動作を実行する際に、消去動作が行われた時刻又はある基準時からの時間をRAM12に保持することができる。
【0027】
NANDメモリでは、一般に、「ページ」と呼ばれるデータ単位で書き込み動作及び読み出し動作が実行され、上記の物理ブロックのデータ単位で消去が実行される。以下の説明において、「ページ」は書き込み動作における最小単位を意味する。同一のワード線に接続される複数のメモリセルを「メモリセルグループ」という。メモリセルがSLC(Single Level Cell)である場合は、1つのメモリセルグループによって1ページが構成される。1つのメモリセルグループによって2ページが構成されるMLC(Multi Level Cell)、1つのメモリセルグループによって3ページが構成されるTLC(Triple Level Cell)、又は1つのメモリセルグループによって4ページが構成されるQLC(Quad Level Cell)などの多ビットセルである場合、1つのメモリセルグループが複数ページに対応する。各メモリセルはワード線及びビット線の両方に接続される。したがって、ワード線を識別するアドレスとビット線を識別するアドレスとを用いて各メモリセルを識別することが可能である。
【0028】
RAM12は、例えばデータバッファとして使用され、メモリコントローラ10がホスト30から受信したデータを不揮発性メモリ20へ格納させるまでに一時的に保持する。RAM12は、不揮発性メモリ20から読み出したデータをホスト30へ送信するまでの間に一時的に保持する。RAM12として、例えば、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
【0029】
ROM13は、メモリコントローラ10を動作させるための種々のプログラムやパラメータ等を格納する。ROM13に格納されているプログラムやパラメータ等は、必要に応じてプロセッサ11に読み出されて実行される。
【0030】
ランダマイザ14は、例えば線形帰還シフトレジスタ等を含み、入力されたシード値に対して一義的に求められる擬似乱数を生成する。ランダマイザ14によって生成された擬似乱数は、例えばプロセッサ11において書き込みデータとの排他的論理和が計算された値である。これにより、不揮発性メモリ20に書き込まれる書き込みデータがランダマイズされる。ランダマイザ14は不揮発性メモリ20から読み出されたデータに対するランダマイズの解除を実行する。ランダマイズの解除とは、ランダマイズされたデータからランダマイズ前の元のデータを得ることである。
【0031】
ECC回路15は、プロセッサ11からの指示に基づいて、書き込み動作時のECC符号化(誤り訂正符号化)及び読み出し動作時のECC復号(誤り訂正復号)を実行する。ECC回路15の符号化方式として、例えば、LDPC(Low-Density Parity-Check)符号、BCH(Bose-Chaudhuri-Hocquenghem)符号、又はRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。
【0032】
圧縮・伸張回路16は、不揮発性メモリ20へ書き込むデータを圧縮する符号化部として動作する。圧縮・伸張回路16は、不揮発性メモリ20から読み出されたデータを伸張する復号部としても動作する。
【0033】
ホストインタフェース17は、ホスト30とホストインタフェース17との間のインタフェース規格に従った処理を実行する。ホストインタフェース17は、ホスト30から受信したコマンド及び書き込み対象のデータなどを内部バス19に出力する。ホストインタフェース17は、不揮発性メモリ20から読み出され、圧縮・伸張回路16によって伸張されたデータをホスト30へ送信する。ホストインタフェース17は、プロセッサ11からの応答などをホスト30へ送信する。
【0034】
メモリインタフェース18は、プロセッサ11の指示に基づいて、不揮発性メモリ20への書き込み動作及び消去動作を実行する。メモリインタフェース18は、プロセッサ11の指示に基づいて、不揮発性メモリ20からの読み出し動作を実行する。
【0035】
以上のような構成を備えるメモリシステム1では、プロセッサ11は、不揮発性メモリ20への書き込み動作実行時に、圧縮・伸張回路16に対してデータの圧縮を指示する。その際、プロセッサ11は、不揮発性メモリ20における書き込みデータの記憶場所(記憶アドレス)を決定し、決定した記憶アドレスをメモリインタフェース18へ指示する。圧縮・伸張回路16は、プロセッサ11からの指示に基づいて、RAM12上のデータを圧縮する。ランダマイザ14は、プロセッサ11からの指示に基づいて、RAM12上の圧縮されたデータをランダマイズする。ECC回路15は、プロセッサ11からの指示に基づいて、ランダマイズされたデータをさらにECC符号化する。これにより生成された書き込みデータは、メモリインタフェース18を介して不揮発性メモリ20の指定された記憶アドレスに書き込まれる。
【0036】
一方、プロセッサ11は、不揮発性メモリ20に対する読み出し動作時に、不揮発性メモリ20上のアドレスを指定し、指定されたアドレスに応じてメモリセルの読み出し動作の条件を決定してメモリインタフェース18へ読み出し動作の実行を指示する。プロセッサ11は、ECC回路15へECC復号の開始を指示するとともに、ランダマイザ14へランダマイズの解除の開始を指示し、圧縮・伸張回路16へ伸張の開始を指示する。メモリインタフェース18は、プロセッサ11の指示に従って、不揮発性メモリ20の指定されたアドレスに対する読み出し動作を実行し、この読み出し動作によって得られた読み出しデータをECC回路15に入力する。ECC回路15は入力された読み出しデータをECC復号する。ランダマイザ14はECC復号されたデータに対してランダマイズの解除を実行する。圧縮・伸張回路16はランダマイズの解除が実行されたデータを伸張する。この伸張に成功した場合、プロセッサ11は、伸張されたオリジナルのデータをRAM12に格納する。一方、ECC復号またはランダマイズの解除または伸張に失敗した場合、プロセッサ11は、例えば、ホスト30へリードエラーを通知する。
【0037】
[1-2.メンテナンス処理に係るメモリシステム1の機能構成]
図2を用いて、本発明の一実施形態に係るメモリシステム1について、メンテナンス処理に係る機能構成を説明する。図2は、一実施形態に係るメモリシステムの機能ブロック図である。図2に示すように、メモリコントローラ10は、メンテナンス管理部110(Maintenance Managing)及び書き込み/読み出し(W/R)管理部111(W/R Managing)を含む。
【0038】
メンテナンス管理部110は、ホスト30から受信した第1コマンドによって時刻情報(Time)を取得する。当該時刻情報は、ライトコマンド、リードコマンド、又はイレースコマンドに関連する時刻を示す情報である。具体的には、上記時刻情報は、ホスト30がライトコマンド、リードコマンド、又はイレースコマンドを作成した時刻を示す情報である。ただし、当該時刻情報は、ホスト30がライトコマンド、リードコマンド、又はイレースコマンドをメモリシステム1に送信した時刻を示す情報であってもよい。時刻情報が示す時刻は、実際の時刻(年月日を含む時刻)であってもよく、ある基準時からの経過時間であってもよい。上記のように、第1コマンドは、メモリコントローラ10にライトコマンド、リードコマンド、又はイレースコマンドに関連する時刻情報を通知し、格納させるコマンドである。第1コマンドは、リードコマンド、ライトコマンド、及びイレースコマンドのいずれとも異なるコマンドであり、これらのコマンドとは別に送信されるコマンドである。
【0039】
メンテナンス管理部110は、当該時刻情報に基づいて、不揮発性メモリ20(NVM)のメンテナンス処理を実行するか否かを判断する。メンテナンス処理を実行する必要があると判断された場合、メンテナンス管理部110は、不揮発性メモリ20に対して、ガベージコレクション、リフレッシュ、又はパトロールリードなどのメンテナンス処理を実行する。
【0040】
W/R管理部111は、ライトコマンド、リードコマンド、及びイレースコマンドに応じて、不揮発性メモリ20に対して、それぞれ書き込み動作、読み出し動作、及び消去動作を実行する。W/R管理部111は、ライトコマンド、リードコマンド、及びイレースコマンドを受信すると、これらのコマンドを受信したことをメンテナンス管理部110に通知する。メンテナンス管理部110は、当該通知に応じて、ホスト30に対して第1コマンドを要求する。又は、W/R管理部111がコマンドを受信したことをメンテナンス管理部110に通知する代わりに、ホスト30が自発的に第1コマンドをメンテナンス管理部110に通知してもよい。例えば、ホスト30は定期的(例えば、30分毎)に第1コマンドをメンテナンス管理部110に通知してもよい。
【0041】
上記の動作によって、メンテナンス管理部110は、上記時刻情報を取得する。メンテナンス管理部110は、取得した時刻情報に基づいて、ホスト30から対象のコマンドを受信した数をカウントする。例えば、カウントの対象がライトコマンドである場合、メンテナンス管理部110は、ホスト30から受信した時刻情報に基づいて、ライトコマンドのカウント数をインクリメントする。メンテナンス管理部110は、時刻情報及びコマンドのカウント数に基づいて、各期間におけるコマンドのカウント数によって構成されるヒストグラムを作成することができる。ヒストグラムの詳細な作成方法は後述する。
【0042】
メンテナンス管理部110がインクリメントするカウント数は、コマンドによって実行される処理内容によって異なってもよい。つまり、メンテナンス管理部110はコマンドのカウント数をインクリメントする際に重み付けを適用してもよい。例えば、書き込み動作に要する時間が読み出し動作に要する時間より長い場合、ライトコマンドのカウント数(ライトコマンドカウント数)をインクリメントする数をリードコマンドのカウント数(リードコマンドカウント数)又はイレースコマンドのカウント数(イレースコマンドカウント数)をインクリメントする数より多くすることができる。換言すると、ライトコマンドに対するライトコマンドカウント数の比は、リードコマンドに対するリードコマンドカウント数の比、又はイレースコマンドに対するイレースコマンドカウント数の比と異なってもよく、ライトコマンドカウント数に係る比をリードコマンドカウント数又はイレースコマンドカウント数に係る比より大きくしてもよい。
【0043】
[1-3.ヒストグラムを作成するフローチャート]
図3を用いて、ヒストグラムの作成方法について説明する。図3は、一実施形態に係るメモリシステムにおいて、ヒストグラム作成に係るフローチャートである。メモリコントローラ10がホスト30からコマンドを受信すると、図3に示すフローチャートに沿ってヒストグラム作成の動作が開始する。
【0044】
まず、ステップS301(Target Command?)で、メモリコントローラ10がホスト30から受信したコマンドがカウント対象のコマンドか否か判断される。ホスト30から受信したコマンドがカウント対象のコマンドである場合(S301の「Yes」)、メンテナンス管理部110はホスト30に対して第1コマンドを要求する(ステップS302;Demanding 1st Command)。一方、ホスト30から受信したコマンドがカウント対象のコマンドではない場合(S301の「No」)、図3の一連の動作は終了する。
【0045】
ホスト30から受信したコマンドがライトコマンド又はイレースコマンドであれば、W/R管理部111は不揮発性メモリ20に対して書き込み動作又は消去動作を実行する。ホスト30から受信したコマンドがリードコマンドであれば、W/R管理部111は不揮発性メモリ20に対して読み出し動作を実行する。S301の動作は、書き込み動作、読み出し動作、又は消去動作と並行して実行されてもよく、これらの動作の後に実行されてもよい。
【0046】
S302の第1コマンドの要求に応じて、ホスト30からメモリコントローラ10に第1コマンドが送信される。上記のように、第1コマンドには時刻情報が含まれている。メモリコントローラ10は、ホスト30から受信した第1コマンドによって時刻情報を取得する(ステップS303;Obtaining Time Info.)。
【0047】
時刻情報を取得した後、メンテナンス管理部110はコマンドをカウントする際に重み付けを適用するか否か判断する(ステップS304;Weighting?)。ホスト30から受信したコマンドが重み付けを適用する対象である場合(S304の「Yes」)、例えば、コマンドのカウント数を「+10」インクリメントする(ステップS305;Command Count +10)。一方、ホスト30から受信したコマンドが重み付けを適用する対象ではない場合(S304の「No」)、例えば、コマンドのカウント数を「+1」インクリメントする(ステップS306;Command Count +1)。上記のS305及びS306におけるインクリメントの数は任意であり、上記の値に限定されない。
【0048】
S305及びS306のコマンドのカウント数は、S303で取得した時刻情報に基づいて、予め設定された期間ごとに管理される。設定された期間は、1日を1時間ごとに区切った期間であってもよく、1週間を1時間ごとに区切った期間であってもよい。1日を1時間ごとに区切った場合、例えば、0:00~1:00、1:00~2:00、・・・、22:00~23:00、23:00~24:00のように24個の期間が設定される。1週間を1時間ごとに区切った場合、例えば、月曜(Mon.)の0:00~1:00、月曜の1:00~2:00、・・・、日曜(Sun.)の22:00~23:00、日曜の23:00~24:00のように、168個(24(時間;Time)×7(曜日;DOW))の期間が設定される(図4参照)。上記のコマンドのカウント数は、上記の期間ごとに積算される。上記の期間ごとのコマンドのカウント数は不揮発性メモリ20に格納される。上記の処理を1週間又は1ヶ月繰り返すことによって、ヒストグラムを構築する。
【0049】
ホスト30から受信したコマンドによって重み付けをする必要がない場合、S304~S305のステップを省略し、S303のステップの後にS306のステップを行ってもよい。
【0050】
[1-4.ヒストグラムの一例]
図4を用いて、ヒストグラムの構成について説明する。図4は、一実施形態に係るメモリシステムにおいて用いられるヒストグラムの一例を示す図である。図4に示すヒストグラムは、上記のように1週間を1時間ごとに区切った場合のヒストグラムである。上記のように、コマンドのカウント数は設定された期間毎に積算され、管理される。その結果、図4の例では、月曜の0:00~1:00のカウント数(Count)は100回であり、月曜の1:00~2:00のカウント数は10回であり、日曜の22:00~23:00のカウント数は30000回であり、日曜の23:00~24:00のカウント数は3500回である。図4では、リストが表示されており、当該リストはグラフ化されていないが、このリストをヒストグラムと表現している。
【0051】
[1-5.メンテナンス処理を実行するフローチャート]
図5を用いて、メンテナンス処理の実行方法について説明する。図5は、一実施形態に係るメモリシステムにおいて、メンテナンス処理の実行に係るフローチャートである。メモリコントローラ10がホスト30からコマンドを受信すると、図5に示すフローチャートに沿ってメンテナンス処理の動作が開始する。なお、図5のフローチャートの開始から時刻情報を取得するステップS503までのステップは、図3のフローチャートの開始からS303までのステップと同じなので、図示及び説明を省略する。
【0052】
S503で時刻情報を取得した後、メンテナンス管理部110は、取得した時刻情報が示す時刻が、メンテナンス処理を実行する時刻として適正か否か判断する(ステップS504;Proper Time?)。具体的には、メンテナンス管理部110は、図4に示すヒストグラムを参照し、S503で取得した時刻情報の時刻におけるカウント数に基づいて、S504の判断を行う。
【0053】
例えば、S503で取得した時刻情報の時刻が属する期間が、図4に示すヒストグラムにおいて最もカウント数が少ない期間である場合に、メンテナンス管理部110は、メンテナンス処理の実行期間として適正であると判断する。当該ヒストグラムにおいて最もカウント数が少ない期間を「メンテナンス処理実行期間」に置き換えて上記の構成を換言すると、メンテナンス管理部110は、期間ごとのコマンドのカウント数に基づいて、1のメンテナンス処理実行期間を選択し、当該期間でメンテナンス処理を実行する。
【0054】
なお、図4に示すヒストグラムにおける各期間をカウント数が少ない順に並べた場合において、S503で取得した時刻情報の時刻が属する期間が、例えば上位10%の期間に含まれる場合に、メンテナンス処理の実行期間として適正であると判断してもよい。
【0055】
S503で取得した時刻情報の時刻が適正であると判断された場合(S504の「Yes」)、メンテナンス処理が実行される(ステップS505;Maintenance)。一方、当該時刻が適正でないと判断された場合(S504の「No」)、メンテナンス処理は実行されずに図5に示すフローチャートは終了する。
【0056】
以上のように、本実施形態に係るメモリシステム1によると、コマンドのカウント数が少ない期間にメンテナンス処理を実行することができる。コマンドのカウント数が少ない期間は、ユーザがホスト30に係る機器を使用する頻度が低い期間に相当する。したがって、メモリシステム1の駆動頻度が低い期間にメンテナンス処理を実行することができるため、メンテナンス処理によってメモリシステム1の性能が低下することを抑制することができる。
【0057】
[2.第2実施形態]
第2実施形態に係るメモリシステムについて説明する。第2実施形態に係るメモリシステム1は、機能構成及びヒストグラムを作成するフローチャートにおいて、第1実施形態に係るメモリシステム1と相違する。それ以外の構成は、第1実施形態の構成と同様なので、説明を省略する。
【0058】
[2-1.メンテナンス処理に係るメモリシステム1の機能構成]
図6を用いて、本発明の一実施形態に係るメモリシステム1について、メンテナンス処理に係る機能構成を説明する。図6は、一実施形態に係るメモリシステムの機能ブロック図である。図6に示す機能ブロック図は、図2に示す機能ブロック図と類似するが、時刻情報を取得する方法において、図2に示す機能ブロック図とは相違する。
【0059】
本実施形態では、第1コマンドによって時間情報を取得するのではなく、メモリコントローラ10のメンテナンス管理部110がファイルシステム121(File System)を解析することによって、時刻情報を取得する。ファイルシステム121は、不揮発性メモリ20に格納されたデータ及び当該データが格納されたアドレスを管理するデータフォーマットであり、当該データが不揮発性メモリ20に格納された時刻等を含むメタデータ(例えば、タイムスタンプ122(Time Stamp)など)を含んでいる。例えば、「File System FAT32」の場合、ファイルが新規作成された時刻及び当該ファイルが更新された時刻がファイルシステム121に含まれている。具体的には、ファイルシステム121の「Directory entry」の領域に、タイムスタンプ122として「0×10 Create date」及び「0×18 Last Modified Date」が定義されており、これらがそれぞれ上記の作成時刻及び更新時刻に対応する。
【0060】
メンテナンス管理部110は、ファイルシステムの種類に応じて、ファイルシステム121に含まれるタイムスタンプ122を特定し、特定されたタイムスタンプ122を時刻情報として読み出す。タイムスタンプ122が存在する領域はファイルシステムによって異なるので、メンテナンス管理部110は、ファイルシステムのデータ構造を解析し、当該データがタイムスタンプ122を含むか否かを判断するプログラム115(PG)を実行する。具体的には、プログラム115は、代表的な複数のファイルシステムを解析することができる。
【0061】
[2-2.ヒストグラムを作成するフローチャート]
図7を用いて、ヒストグラムの作成方法について説明する。図7は、一実施形態に係るメモリシステムにおいて、ヒストグラム作成に係るフローチャートである。メモリコントローラ10がホスト30からコマンドを受信すると、図7に示すフローチャートに沿ってヒストグラム作成の動作が開始する。
【0062】
まず、ステップS701(Write Command?)で、メモリコントローラ10がホスト30から受信したコマンドがライトコマンドか否か判断される。ホスト30から受信したコマンドがライトコマンドである場合(S701の「Yes」)、W/R管理部111は不揮発性メモリ20に対して書き込み動作を実行する(ステップS702;Write Operating)。一方、ホスト30から受信したコマンドがライトコマンドではない場合(S701の「No」)、図7の一連の動作は終了する。
【0063】
S702の書き込み動作が完了すると、メンテナンス管理部110は書き込まれたデータに関するファイルシステム121を解析し(ステップS703;Analyzing File System)、タイムスタンプ122を読み出す。続いて、メンテナンス管理部110は、読み出したタイムスタンプ122が新規に記録された時刻を示すものなのか、更新された時刻を示すものか否かを判断する(ステップS704;New or Update?)。
【0064】
当該タイムスタンプ122が新規記録を示す又は更新された時刻を示すと判断された場合(S704の「Yes」)、メンテナンス管理部110は上記タイムスタンプ122を時刻情報として取得する(ステップS705;Obtaining Time Info.)。一方、当該タイムスタンプ122が新規記録を示すものでなく、かつ更新された時刻を示すものでもないと判断された場合(S704の「No」)、図7の一連の動作は終了する。S706~S708のステップは、図3のS304~S306のステップと同じなので、説明を省略する。
【0065】
本実施形態において、メンテナンス管理部110が時刻情報を取得する処理は、ライトコマンドの受信ごとに実行されてもよく、複数回のライトコマンドの受信ごとに実行されてもよい。
【0066】
[2-3.メンテナンス処理を実行するフローチャート]
本実施形態におけるメンテナンス処理を実行するフローチャートは、図5と同様なので、説明を省略する。本実施形態の場合、図5のフローチャートの開始から時刻情報を取得するステップS503までのステップは、図7のフローチャートの開始からS705までのステップと同じである。
【0067】
以上のように、本実施形態に係るメモリシステム1によると、メモリコントローラ10がホスト30に対して第1コマンドの要求をすることなく、第1実施形態と同様に時刻情報を取得することができる。
【0068】
[3.第3実施形態]
第3実施形態に係るメモリシステムについて説明する。第3実施形態に係るメモリシステム1は、機能構成及びヒストグラムを作成するフローチャートにおいて、第1実施形態に係るメモリシステム1と相違する。それ以外の構成は、第1実施形態の構成と同様なので、説明を省略する。
【0069】
[3-1.メンテナンス処理に係るメモリシステム1の機能構成]
図8を用いて、本発明の一実施形態に係るメモリシステム1について、メンテナンス処理に係る機能構成を説明する。図8は、一実施形態に係るメモリシステムの機能ブロック図である。図8に示す機能ブロック図は、図2に示す機能ブロック図と類似するが、時刻情報を取得する方法において、図2に示す機能ブロック図とは相違する。
【0070】
本実施形態では、第1コマンドによって時間情報を取得するのではなく、不揮発性メモリ20(メモリコントローラ10)に備えられた時計機能(RTC119)によって時刻情報を取得する。図8に示すように、W/R管理部111は、ライトコマンド、リードコマンド、又はイレースコマンドに応じて書き込み動作、読み出し動作、又は消去動作を実行するとともに、メンテナンス管理部110にこれらの動作を実行したことを通知する。メンテナンス管理部110は、当該通知を受けると、RTC119から当該通知を受けた時刻を読み出す。上記の動作によって、メンテナンス管理部110は、W/R管理部111が書き込み動作、読み出し動作、又は消去動作を実行した時刻を示す時刻情報を取得する。時刻情報は、当該書き込み動作、読み出し動作、又は消去動作に関連する時刻を示す情報であればよく、これらの動作を実行した時刻を示す情報に限定されない。当該時間情報は、ホスト30からライトコマンド、リードコマンド、又はイレースコマンドを受信した時刻を示す情報であってもよい。
【0071】
[3-2.ヒストグラムを作成するフローチャート]
図9を用いて、ヒストグラムの作成方法について説明する。図9は、一実施形態に係るメモリシステムにおいて、ヒストグラム作成に係るフローチャートである。メモリコントローラ10がホスト30からコマンド(第2コマンド)を受信すると、図9に示すフローチャートに沿ってヒストグラム作成の動作が開始する。
【0072】
まず、ステップS901(Target Command?)で、メモリコントローラ10がホスト30から受信したコマンドがカウント対象のコマンドか否か判断される。ホスト30から受信した第2コマンドがカウント対象のコマンドである場合(S901の「Yes」)、メンテナンス管理部110は、ホスト30から第2コマンドを受信した時刻、又は第2コマンドに応じて不揮発性メモリ20へアクセスした時刻をRTC119から読み出す(ステップS902;Reading Time from RTC)ことにより、時刻情報を取得する(ステップS903;Obtaining Time Info.)。つまり、メンテナンス管理部110は第2コマンドを受信した時刻又は第2コマンドに基づく動作を実行した時刻を示す時刻情報を取得する。一方、ホスト30から受信した第2コマンドがカウント対象のコマンドではない場合(S901の「No」)、図9の一連の動作は終了する。S904~S906のステップは、図3のS304~S306のステップと同じなので、説明を省略する。
【0073】
[3-3.メンテナンス処理を実行するフローチャート]
本実施形態におけるメンテナンス処理を実行するフローチャートは、図5と同様なので、説明を省略する。本実施形態の場合、図5のフローチャートの開始から時刻情報を取得するステップS503までのステップは、図9のフローチャートの開始からS903までのステップと同じである。
【0074】
以上のように、本実施形態に係るメモリシステム1によると、メモリコントローラ10がホスト30に対して第1コマンドの要求をすることなく、第1実施形態と同様に時刻情報を取得することができる。
【0075】
[4.第4実施形態]
第4実施形態に係るメモリシステムについて説明する。第4実施形態に係るメモリシステム1は、メンテナンス処理を実行するフローチャートにおいて、第1実施形態に係るメモリシステム1と相違する。それ以外の構成は、第1実施形態の構成と同様なので、説明を省略する。
【0076】
[4-1.メンテナンス処理を実行するフローチャート]
図10を用いて、メンテナンス処理の実行方法について説明する。図10は、一実施形態に係るメモリシステムにおいて、メンテナンス処理の実行に係るフローチャートである。メモリコントローラ10がホスト30からコマンドを受信すると、図10に示すフローチャートに沿ってメンテナンス処理の動作が開始する。なお、図10のフローチャートの開始から時刻情報を取得するステップS1003までのステップは、図3のフローチャートの開始からS303までのステップ、図7のフローチャートの開始からS705までのステップ、又は図9のフローチャートの開始からS903までのステップと同じなので、図示及び説明を省略する。
【0077】
S1003で時刻情報を取得した後、メンテナンス管理部110は、前回時刻情報を取得した時点と今回時刻情報を取得した時点との差分を計算し、当該差分がしきい値以上か否か判断する(ステップS1004;≧Threshold?)。差分がしきい値以上である場合(S1004の「Yes」)、メンテナンス処理が実行される(ステップS1005;Maintenance)。一方、差分がしきい値未満の場合(S1004の「No」)、メンテナンス処理は実行されずに図10に示すフローチャートは終了する。つまり、メンテナンス管理部110は、当該差分及びしきい値に基づいて、メンテナンス処理を実行するか否かを判断する。
【0078】
以上のように、本実施形態に係るメモリシステム1によると、第1実施形態と同様の効果を得ることができる。
【0079】
上記の実施形態では、条件を満たすか否かの判断によって、メンテナンス処理を実行するか否かを判断していたが、この構成に限定されない。例えば、条件を満たす場合、条件を満たさない場合に比べてメンテナンス処理の量を多く実行してもよい。
【0080】
以上、本発明について図面を参照しながら説明したが、本発明は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施形態を基にして、当業者が適宜構成要素の追加、削除もしくは設計変更を行ったものも、本発明の要旨を備えている限り、本発明の範囲に含まれる。さらに、上述した各実施形態は、相互に矛盾がない限り適宜組み合わせが可能であり、各実施形態に共通する技術事項については、明示の記載がなくても各実施形態に含まれる。
【0081】
上述した各実施形態の態様によりもたらされる作用効果とは異なる他の作用効果であっても、本明細書の記載から明らかなもの、又は、当業者において容易に予測し得るものについては、当然に本発明によりもたらされるものと解される。
【符号の説明】
【0082】
1:メモリシステム、 10:メモリコントローラ、 11:プロセッサ、 12:RAM、 13:ROM、 14:ランダマイザ、 15:ECC回路、 16:圧縮・伸張回路、 17:ホストインタフェース、 18:メモリインタフェース、 19:内部バス、 20:不揮発性メモリ、 21:メモリチップ、 22:ダイ、 23:メモリブロック、 30:ホスト、 110:メンテナンス管理部、 111:W/R管理部、 115:テーブル、 121:ファイルシステム、 122:タイムスタンプ、 RTC119:時計機能、 Time:時刻情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10