(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023141335
(43)【公開日】2023-10-05
(54)【発明の名称】メモリシステムおよびリフレッシュ方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20230928BHJP
G11C 16/34 20060101ALI20230928BHJP
【FI】
G06F12/00 550B
G06F12/00 597U
G11C16/34 120
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022047597
(22)【出願日】2022-03-23
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】加世堂 礼
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160AA14
5B160CA10
5B225CA28
5B225DE16
5B225FA01
(57)【要約】
【課題】リフレッシュの実行速度を好適に制御する。
【解決手段】物理ブロックを複数含む不揮発性メモリと、前記不揮発性メモリの前記複数のブロックに対して、前記複数のブロックに含まれる第1の複数ブロックのデータを第2の複数ブロックに書き換えるリフレッシュを実行するコントローラと、を備える。前記コントローラは、前記第1の複数ブロックに含まれる各ブロックに対する前回の書き込みから前記各ブロックに対する前記リフレッシュを完了するまでの第1時間において、前記各ブロックに対する前記リフレッシュを開始する時間を動的に制御可能である。
【選択図】
図9
【特許請求の範囲】
【請求項1】
物理ブロックを複数含む不揮発性メモリと、
前記不揮発性メモリの前記複数のブロックに対して、前記複数のブロックに含まれる第1の複数ブロックのデータを第2の複数ブロックに書き換えるリフレッシュを実行するコントローラと、
を備え、
前記コントローラは、前記第1の複数ブロックに含まれる各ブロックに対する前回の書き込みから前記各ブロックに対する前記リフレッシュを完了するまでの第1時間において、前記各ブロックに対する前記リフレッシュを開始する時間を動的に制御可能である、
メモリシステム。
【請求項2】
前記コントローラは、前記第1の複数ブロックに含まれる第1ブロック及び第2ブロックについて、前記第1ブロック及び前記第2ブロックに対する前回の書き込みは同じ第1タイミングで実行されており、前記第1タイミングから前記第1ブロックに対する前記リフレッシュを開始するまでの第2時間と、前記第1タイミングから前記第2ブロックに対する前記リフレッシュを開始するまでの第3時間と、が異なるように制御する、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、前記第1時間よりも第4時間前に前記各ブロックの何れかに対する前記リフレッシュを開始し、前記第4時間における後半に前記リフレッシュを開始するブロックの量が、前記第4時間における前半に前記リフレッシュを開始するブロックの量より多くなるように制御する、
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、前記第4時間における後半に第1数のブロックに対する前記リフレッシュを開始し、前記第4時間において前記後半よりも前の第5時間に前記第1数のブロック以外の第2数のブロックに対する前記リフレッシュを開始するように制御する、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、ホストから要求されるデータのリード及びライトに対応するホストI/Oの量に基づいて、前記リフレッシュを開始する時間を制御する、
請求項1に記載のメモリシステム。
【請求項6】
前記コントローラは、前記ホストI/Oの量を一定期間取得し、現在のホストI/Oの量が前記一定期間に取得した前記ホストI/Oの量に対して多い場合、前記リフレッシュを開始する時間を遅延させる
請求項5に記載のメモリシステム。
【請求項7】
物理ブロックを複数含む不揮発性メモリの前記複数のブロックに対して、前記複数のブロックに含まれる第1の複数ブロックのデータを第2の複数ブロックに書き換えるリフレッシュを実行するリフレッシュ処理を実行し、
前記リフレッシュ処理において、前記第1の複数ブロックに含まれる各ブロックに対する前回の書き込みから前記各ブロックに対する前記リフレッシュを完了するまでの第1時間において、前記各ブロックに対する前記リフレッシュを開始する時間を動的に制御可能である、
リフレッシュ方法。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムおよびリフレッシュ方法に関する。
【背景技術】
【0002】
メモリを備えたメモリシステムが知られている。メモリシステムは、メモリに新たな記憶領域を確保するコンパクションを実行する。また、メモリシステムは、メモリに記憶されたデータを書き換えるリフレッシュを実行する。リフレッシュは、任意のタイミングで実行するリフレッシュと周期的に実行する強制リフレッシュとを含む。強制リフレッシュは、周期内にコンパクションを含めた処理を完了することが求められる。そのため、対象となるデータに対して同じタイミングで強制リフレッシュが実行されることがある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、リフレッシュの実行速度を好適に制御することができるメモリシステムおよびリフレッシュ方法を提供する。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、物理ブロックを複数含む不揮発性メモリと、前記不揮発性メモリの前記複数のブロックに対して、前記複数のブロックに含まれる第1の複数ブロックのデータを第2の複数ブロックに書き換えるリフレッシュを実行するコントローラと、を備える。前記コントローラは、前記第1の複数ブロックに含まれる各ブロックに対する前回の書き込みから前記各ブロックに対する前記リフレッシュを完了するまでの第1時間において、前記各ブロックに対する前記リフレッシュを開始する時間を動的に制御可能である。
【図面の簡単な説明】
【0006】
【
図1】実施形態にかかるメモリシステムの概略構成例を示すブロック図。
【
図2】実施形態にかかる不揮発性メモリの詳細構成例を示す図。
【
図3】実施形態にかかる物理ブロックと論理ブロックとの関係を示す図。
【
図4】比較例における強制リフレッシュの処理の例を示す図。
【
図5】実施形態にかかる強制リフレッシュ処理の手順を示すフローチャート。
【
図6】実施形態にかかる強制リフレッシュリストを作成する例を示す図。
【
図7】実施形態における強制リフレッシュの処理の例を示す図。
【
図8】実施形態における強制リフレッシュの処理の別の例を説明する図。
【
図9】実施形態における強制リフレッシュの処理の更に別の例を説明する図。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびリフレッシュ方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【0008】
図1は、実施形態にかかるメモリシステムの概略構成例を示すブロック図である。実施形態にかかるメモリシステム100は、不揮発性メモリ10を有する。メモリシステム100は、不揮発性メモリ10にデータを書き込んだり、不揮発性メモリ10に格納されたデータを読み出したり、不揮発性メモリ10に格納されたデータを消去したりする。不揮発性メモリ10は、消去の最小の単位である物理ブロックを複数含む。
【0009】
メモリシステム100は、例えば、SSD(Solid State Drive)である。メモリシステム100は、ホスト200と接続可能である。メモリシステム100は、接続されたホスト200の外部記憶装置として機能する。ホスト200は、例えば、パーソナルコンピュータのCPU、スチルカメラやビデオカメラなどの撮像装置のCPUである。
【0010】
メモリシステム100は、不揮発性メモリ10、揮発性メモリ20、コントローラ60を有する。
【0011】
コントローラ60は、メモリコントローラとも称される。コントローラ60は、制御部30、メモリインタフェース40およびホストインタフェース(ホストI/F)50を有する。不揮発性メモリ10は、例えば、NAND型フラッシュメモリなどの不揮発にデータを記憶可能な半導体メモリである。揮発性メモリ20は、不揮発性メモリ10よりも高速アクセスが可能な半導体メモリである。コントローラ60は、例えば、SoC(System on Chip)として構成される回路である。揮発性メモリ20は、コントローラ60の外部に設けられてもよいし、コントローラ60に内蔵されてもよい。
【0012】
不揮発性メモリ10は、ホスト200によって指示されたユーザデータ11を記憶したり、メモリシステム100の動作に関する情報を不揮発管理情報12として記憶したりする。不揮発性メモリ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは多値記憶が可能である。不揮発性メモリ10は、複数のメモリチップを含み、各メモリチップは、データ消去の単位である物理ブロックを複数含んで構成される。また、不揮発性メモリ10では、物理ページごとにデータの書き込みおよびデータの読み出しが行われる。物理ブロックは、複数の物理ページを含んで構成されている。
【0013】
図2は、不揮発性メモリ10の詳細構成例を示す図である。この実施形態においては、不揮発性メモリ10は、8つのチャネルCh0~Ch7を介してコントローラ60のメモリインタフェース40に並列接続されている。すなわち、8つの並列動作要素10a~10hを並列動作させることが可能である。チャネル数は8つに限らず、任意の数を採用可能である。各並列動作要素10a~10hは、バンクインターリーブが可能な複数のバンク(この場合、2バンク、Bank0~Bank1)によって構成されている。各並列動作要素10a~10hにおいて、各バンクは、複数のメモリチップ(この場合、2メモリチップ、Chip0、Chip1)によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン0、プレーン1の2つの領域(District)に分割されている。プレーン0およびプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、プレーン倍速モードを使用することで、並列に消去/書き込み/読み出しを行うことが可能である。
【0014】
不揮発性メモリ10では、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、チャネル数を8、バンク数を2、プレーン数を2とした場合、最大32個の物理ブロックを並列動作させることが可能となる。すなわち、コントローラ60は、複数のチャネルを介して複数の物理ブロックに接続され、複数の物理ブロックを並列動作させることが可能である。
【0015】
揮発性メモリ20は、ホスト200からのデータを不揮発性メモリ10に書き込みする際に一時的にデータを保存するライトバッファとしての記憶領域と、不揮発管理情報12などの管理情報を記憶又は更新するための記憶領域と、不揮発性メモリ10から読み出されたデータを一時的に記憶するリードバッファとしての記憶領域などを含む。また、揮発性メモリ20は、コントローラ60の動作のための作業領域を含む。
【0016】
ホスト200は、ホストインタフェース50を介してメモリシステム100に接続される。ホスト200は、メモリシステム100に対して読み出し要求または書き込み要求を出力する。読み出し要求および書き込み要求には、論理アドレスとしてのLBA(Logical Block Address)が含まれる。LBAは、セクタに対して0からの通し番号をつけた論理アドレスである。セクタのサイズは例えば512Bである。
【0017】
メモリシステム100において、コントローラ60は、複数の物理ブロックをまとめて管理する単位として、論理ブロックという仮想的なブロックを構築する。コントローラ60は、チャネル並列、バンクインターリーブ、プレーン倍速動作が実行可能な物理ブロックを組み合わせて論理ブロックを構築する。すなわち、論理ブロックは、チャネル数×バンク数×プレーン数分の物理ブロックで構成される。
図2の場合、チャネル数=8、プレーン数=2、バンク数=2であり、論理ブロックは、最大32個の物理ブロックで構成され得る。
【0018】
なお、論理ブロックを構築する際に論理アドレスとしてのMBA(Media Block Address)を用いる。これは、メモリシステム100において指定される論理アドレスであり、ホスト200が指定する論理アドレスとしてのLBAと区別される。論理ブロックは、複数のチャネル分の物理ブロックのみで構成してもよいし、複数のバンク分の物理ブロックのみで構成してもよいし、複数のプレーン分の物理ブロックのみで構成してもよい。また、チャネル並列、バンクインターリーブが行えるように物理ブロックを組み合わせても良いし、チャネル並列、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよいし、バンクインターリーブ、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよい。
【0019】
図1に示す不揮発管理情報12は、メモリシステム100の内部で使われる管理情報が不揮発化された情報である。コントローラ60は、管理情報を生成又は更新すると不揮発性メモリ10に格納して不揮発化する。不揮発管理情報12は、論物変換テーブル(図示せず)や論理ブロック管理情報13などを含む。論物変換テーブルは、ホスト200で指定される論理アドレスであるLBAと不揮発性メモリ10でのデータの記憶位置を表す物理アドレスとの対応を管理するための情報である。論理ブロック管理情報13は、メモリシステム100で構築される複数の論理ブロックを管理するための情報である。
【0020】
メモリインタフェース40は、揮発性メモリ20と不揮発性メモリ10とのインタフェース処理を行う回路である。メモリインタフェース40は、制御部30の制御に基づいて、揮発性メモリ20に一時的に記憶されたデータを不揮発性メモリ10に書き込んだり、不揮発性メモリ10に記憶されているデータを読み出して揮発性メモリ20に転送したりする。メモリインタフェース40は、揮発性メモリ20とのインタフェース処理を行う回路と、不揮発性メモリ10とのインタフェース処理を行う回路と、を独立して備えてもよい。
【0021】
制御部30は、不揮発性メモリ10に記憶されたシステムプログラム(ファームウエア)と、このファームウェアを実行するプロセッサによってその機能が実現される。なお、制御部30が実行する処理の一部または全部は、コントローラ60内の専用ハードウェアによって実行されてもよい。制御部30は、データアクセス部32、ブロック管理部31を備える。データアクセス部32は、揮発性メモリ20のライトバッファを介した不揮発性メモリ10への書き込み処理、不揮発性メモリ10からの読み出し処理、不揮発性メモリ10に記憶されたデータの管理(例えば、強制リフレッシュ)などを実行する。
【0022】
強制リフレッシュは、不揮発性メモリ10のメモリセルにおけるデータリテンションに対する処理である。強制リフレッシュは、ブロックに記録されているすべてのユーザデータ11を一定周期ごとに新しい論理ブロックに書き直す(リフレッシュする)処理である。強制リフレッシュは、論理ブロック単位で実行される。強制リフレッシュは、実行する単位(例えば、論理ブロックや所定量のデータ)ごとにカウンタ(時間)を設定し、実行したことに応じてカウンタをリセットする。なお、強制リフレッシュの実行順は、物理ブロックにつけられた一意な番号順(アドレス順)となる。この番号は、ドライブが動作し続けている限り変わることはない。
【0023】
すなわち、データアクセス部32は、不揮発性メモリ10の複数の物理ブロックに対して、複数のブロックに含まれる第1の複数ブロックのデータを第2の複数ブロックに書き換えるリフレッシュを実行する。
【0024】
ところで、強制リフレッシュは、周期内にコンパクションを含めた処理を完了することが求められる。そのため、対象となるデータに対して同じタイミングで、コンパクションを兼ねた強制リフレッシュが実行されることがある。なお、コンパクションは、論理ブロック内の有効データを集めて別の論理ブロックに書き直すことで、新たなフリーブロックを生成する処理である。フリーブロックは、有効データを含まない論理ブロックである。
【0025】
強制リフレッシュは、強制リフレッシュの実行の単位時間に基づいて任意の分割時間当たりの処理数の最大値であるWorst Caseを想定して動作をする。本実施形態におけるWorst Case時の処理数は、12とする。ただし、Worst Caseを想定して動作すると、強制リフレッシュの実際のリードライトの実行は、単位時間内の前半に偏ることになる。
【0026】
なお、強制リフレッシュは、動的に実行周期を設定することにより、ドライブの状態に合わせた強制リフレッシュに含まれるコンパクションの実行の速度を設定することができる。ただし、強制リフレッシュに含まれるコンパクションの実行は、タイミングを考慮する必要ある。
【0027】
加えて、ホスト200との間におけるデータの入出力であるホストI/Oの進行状況が、強制リフレッシュにより影響を受けることがある。
【0028】
ブロック管理部31は、メモリシステムの製造段階での初回電源投入時に論理ブロックの構築処理を行い、その構築結果を論理ブロック管理情報13に登録する。ここで、物理ブロックと論理ブロックとの関係について、
図3を用いて説明する。
【0029】
図3は、物理ブロックと論理ブロックとの関係を示す図である。
図3に示すように、チャネル0~チャネル3にBank0~Bank1が存在する場合に、ブロック管理部31は、これらを1つの論理ブロック150として構築する。この場合、ブロック管理部31は、論理ブロック150に対応する8つのバンクを、Bank0~Bank7と設定する。このように、ブロック管理部31は、複数のバンクを有する論理ブロック150を構築する。
【0030】
ところで、強制リフレッシュは、強制リフレッシュの実行周期の加速を防ぐために、可能な限り周期通りのタイミングで実行する必要がある。
【0031】
ここで、
図4は比較例における強制リフレッシュの処理の例を示す図である。
図4は、強制リフレッシュの実行周期が120H(H:時間)、Worst Caseの強制リフレッシュの実行の単位時間が30H、に設定される例を示す。この場合、強制リフレッシュの開始が、ホスト200からの書き込みであるHost Writeの実行から90H後に設定されている。また、
図4に示す例では、10の物理ブロック(以下、ブロックという)を対象にHost Writeが行われたものとする。すなわち、
図4に示す例では、120Hの周期で強制リフレッシュが行われるのではなく、Worst Case対策として90Hで強制リフレッシュが開始されることになる。しかしながら、
図4に示すように、強制リフレッシュの開始後、10Hで処理完了するような場合、強制リフレッシュの実行周期に対して20Hの余裕があるので、強制リフレッシュの実行を後ろ倒しにすることができる。
【0032】
そこで、実施形態では、データアクセス部32は、強制リフレッシュの周期の加速を緩和するために、強制リフレッシュの処理時間に余裕がある場合、強制リフレッシュの実行を後ろ倒しにする処理を実行する。
【0033】
言い換えれば、データアクセス部32は、第1の複数ブロックに含まれる各ブロックに対する前回の書き込みから各ブロックに対するリフレッシュを完了するまでの第1時間において、各ブロックに対するリフレッシュを開始する時間を動的に制御可能である。
【0034】
以下において、強制リフレッシュの実行を後ろ倒しにする強制リフレッシュ処理の手順を説明する。
【0035】
図5は、実施形態にかかる強制リフレッシュ処理の手順を示すフローチャートである。
【0036】
まず、データアクセス部32は、強制リフレッシュ処理の実行タイミングになったかを判断する(S1)。データアクセス部32は、強制リフレッシュ処理の実行タイミングになったと判断した場合(S1のYes)、単位時間にHost Writeしたブロックを対象ブロックに決定する(S2)。
【0037】
次いで、データアクセス部32は、強制リフレッシュの対象となるブロックに対する強制リフレッシュの実行タイミングをスケジューリングする(S3)。
【0038】
次いで、データアクセス部32は、スケジュールにしたがって強制リフレッシュを実行する(S4)。
【0039】
以下において、
図5のS2における対象ブロックの決定処理について説明する。
【0040】
ここで、
図6はHost Writeの対象となるユーザデータ11の保存先として供給されたアクティブブロックの順で強制リフレッシュのリストを作成する例を示す図である。
図6に示すように、データアクセス部32は、アクティブブロックおよび未使用ブロックの集合であるブロック群からユーザデータ11の保存先となるアクティブブロックをランダムに選択する。データアクセス部32は、選択されたアクティブブロックを、選択された順に並び替えて強制リフレッシュリストを作成する。
【0041】
このように、Host Writeの対象のユーザデータ11の保存先としてランダムに選択されたアクティブブロックの順でリストを作成することで、以下のメリットがある。第1に、管理するブロックの数が必要最小限の数となる。第2に、リストの先頭のブロックから強制リフレッシュを実行することで、強制リフレッシュ実行順もランダムとなる。例えば、一意な順で強制リフレッシュを実行する場合、強制リフレッシュの実行のたびに、特定のブロックのみが早い周期で強制リフレッシュを実行することになる。しかし、アクティブブロックをランダムに選択することで、この現象を回避することができる。第3に、ユーザデータ11の書き込み順で強制リフレッシュが実行される。
【0042】
なお、リストに登録したブロックの疲弊度が異なる場合、疲弊度に基づいて、リスト内で順序を入れ替えてもよい。例えば、疲弊度が高いブロックは早く強制リフレッシュが実行されるように順序を入れ替えてもよい。
【0043】
以下において、
図5のS3およびS4の処理について説明する。
【0044】
図7は実施形態における強制リフレッシュの処理の例を示す図である。
図7に示す例は、強制リフレッシュの実行周期が120Hに設定され、Worst Caseの強制リフレッシュの実行の単位時間が30Hに設定される例を示す。
【0045】
具体的には、データアクセス部32は、強制リフレッシュのスケジューリングを実行するにあたり、使用中のブロックのリストであるアクティブブロックリストを用いる。アクティブブロックは、使用中のブロックである。データアクセス部32は、アクティブブロックリストを用いて、ユーザデータ11の保存先として供給されたアクティブブロックの順で、強制リフレッシュの実行順を示す強制リフレッシュリストを作成する。
図7においては、Host Writeされたブロックが、番号順に強制リフレッシュリストに登録されている。
【0046】
また、データアクセス部32は、Worst Caseの強制リフレッシュの実行の単位時間に基づいて、任意の分割時間当たりの強制リフレッシュを実行するブロック数を導出する。例えば、データアクセス部32は、Worst Caseの強制リフレッシュの実行の単位時間を30H、任意の分割時間を10Hとして、分割単位時間当たりのブロック数を導出する。なお、
図7に示す例における任意の分割時間当たりの処理数の最大値は、Worst Case時の処理数(本実施形態では12とする)と同数であり、12である。
【0047】
この場合、Host Writeされたブロックを単位時間(30H)毎にリフレッシュすることになる。すなわち、データアクセス部32は、単位時間(30H)ずつHost Writeの実行順に、強制リフレッシュを実行する。
図7に示す例においては、Host Writeされたブロックの数が35であり、規定時間経過(90H)で強制リフレッシュが開始される。この場合、単位時間(30H)における任意の分割時間(10H)に12個のブロックを処理すれば単位時間(30H)で36個のブロックを処理できるので、Worst Caseに対応可能である。
【0048】
図7に示す例によれば、最初の単位時間(30H)で15個のブロックを強制リフレッシュ処理している。しかし、強制リフレッシュの処理時間に余裕があれば、強制リフレッシュの実行を後ろ倒しにすることができる。
【0049】
なお、
図7における横軸において、開始位置0が3箇所(時間軸が3つ)あるのは、単位時間(30H)ずつのHost Writeの実行順における、強制リフレッシュの実行周期(120H)を示すものである。後述する
図8および
図9においても同様である。
【0050】
図8は、実施形態における強制リフレッシュの処理の別の例を説明する図である。
図8は、強制リフレッシュの実行をより後ろ倒しにする処理の例を示す図である。
図8に示す例は、Worst Caseの処理時間を単位時間(30H)とし、強制リフレッシュの全ての対象ブロックを任意の分割時間(10H)に区分して、各単位時間内で後ろ詰めする例である。
図8に示すように、1~3のブロックを対象とした強制リフレッシュが100H~110Hにおいて実行され、4~15のブロックを対象とした強制リフレッシュが110H~120Hにおいて実行される。
図8に示す単純に周期を後ろ詰めする例によれば、Worst Caseの実行時間でスケジューリングするため改善しないブロックもあるが、改善されるドライブの方が多い。
【0051】
言い換えれば、データアクセス部32は、第1の複数ブロックに含まれる各ブロックに対する前回の書き込みから各ブロックに対するリフレッシュを完了するまでの第1時間よりも第4時間前に各ブロックの何れかに対するリフレッシュを開始し、第4時間における後半にリフレッシュを開始するブロックの量が、第4時間における前半にリフレッシュを開始するブロックの量より多くなるように制御する。
【0052】
例えば、データアクセス部32は、第4時間における後半に第1数のブロックに対するリフレッシュを開始し、第4時間において後半よりも前の第5時間に第1数のブロック以外の第2数のブロックに対するリフレッシュを開始するように制御する。
【0053】
上述したように、Worst Caseの処理時間を単位時間とし、その単位時間で強制リフレッシュを実行するブロックをスケジューリングする。これにより、強制リフレッシュを不必要に早めに実行しないようにすることができるので、強制リフレッシュの実行周期の加速を軽減することができる。
【0054】
従来においては、このようなホストI/Oへの影響を緩和したいという要望がある。そこで、本実施形態では、ホストI/Oへの影響を緩和するために、以下の処理を実行する。
【0055】
図9は、実施形態における強制リフレッシュの処理の更に別の例を説明する図である。
図9は、強制リフレッシュの実行を分散する処理の例を示す図である。
図9に示す例では、35ブロックを対象にHost Writeが行われたものとする。
【0056】
図8で示したように、強制リフレッシュの実行を、単純に後ろ詰めでスケジューリングするとホストI/Oへの影響が大きくなる場合がある。
【0057】
そこで、データアクセス部32は、強制リフレッシュの処理時間における現在のホストI/Oの量を保存する。具体的には、任意の時間分のホストI/Oの量を所定時間ごとに計測して計測結果を記憶しておく。一例では、10時間分のホストI/Oの量を、1時間ごとに計測して10個の計測結果を記憶する。
【0058】
その後、データアクセス部32は、計測結果と現在のホストI/Oの量を比較し、強制リフレッシュの速度又は開始タイミング(開始時間)を決める。すなわち、データアクセス部32は、ホスト200から要求されるデータのリード及びライトに対応するホストI/Oの量に基づいて、リフレッシュを開始する時間を制御する。例えば、データアクセス部32は、ホストI/Oの量を一定期間取得し、現在のホストI/Oの量が一定期間に取得したホストI/Oの量に対して少ない場合、強制リフレッシュの実行の開始タイミングを遅らせる。また、現在のホストI/Oの量が一定期間に取得したホストI/Oの量に対して少ない場合、強制リフレッシュの実行の開始タイミングを分散して強制リフレッシュの周期を緩和する。例えば、データアクセス部32は、計測結果と比較して、現在のHost Write量が多い場合、強制リフレッシュを実行するタイミングを先に延ばす。
【0059】
具体的には、
図9に示すように、データアクセス部32は、計測する期間を100Hとして、強制リフレッシュの速度調整を任意の分割時間(10H)ごとに実行する。データアクセス部32は、90H経過した段階で、そこから30Hの間に15ブロックを対象に強制リフレッシュを実行することを決定する。ここで、データアクセス部32は、直近の100Hで35ブロック(1~35ブロック)に対してHost Writeし、直前の任意の分割時間(10H)で10ブロック(26~35ブロック)に対してHost Writeしているため、現在の状態はHost Write量が相対的に多いと判断する。そして、データアクセス部32は、Host Write量が多いことによりHost Writeによるデータ移動が期待できるので、強制リフレッシュの実行対象のブロック数を減らす。
【0060】
すなわち、データアクセス部32は、Host Writeが多いWorkload(処理量)の場合、
図9に示すように、直近に実行する強制リフレッシュのブロック数を減らして、より後ろの時間帯に繰り越す。この場合、Host Writeによるデータのリフレッシュが実行されることで、直近の強制リフレッシュの実行対象のブロック数の削減が期待できるため、無駄な疲弊を抑止することができるとともに、ホストI/Oへの影響を軽減することが可能となる。
【0061】
具体的には、
図9に示すように、1~3のブロックを対象とした強制リフレッシュが90H~100Hにおいて実行され、4~9のブロックを対象とした強制リフレッシュが100H~110Hにおいて実行され、10~15のブロックを対象とした強制リフレッシュが110H~120Hにおいて実行される。
図9に示す例では、90H~100Hで強制リフレッシュを実行するブロックの量を、100H以降の分割時間に強制リフレッシュを実行するブロックの量よりも削減する。
図9に示す例では、データアクセス部32は、単位時間のうち最初の分割時間では、強制リフレッシュの対象となるHost Writeのうち最初の10Hにおいて実行されたHost Writeのブロック数(4ブロック)から1ブロック削減する。またデータアクセス部32は、単位時間におけるそれ以降の分割時間では、残りの4~9のブロックと10~15のブロックとを均等に処理する。以上により、データアクセス部32は、90H~120Hにおける強制リフレッシュを、分割時間当たりの処理数の最大値の半分以下の速度で実行していく。すなわち、データアクセス部32は、第1の複数ブロックに含まれる第1ブロック及び第2ブロックについて、第1ブロック及び第2ブロックに対する前回の書き込みは同じ第1タイミングで実行されている場合、第1タイミングから第1ブロックに対するリフレッシュを開始するまでの時間と、第1タイミングから第2ブロックに対するリフレッシュを開始するまでの時間と、が異なるように制御する。
【0062】
なお、データアクセス部32は、Host Writeが少ないWorkload(処理量)の場合、直近に実行する強制リフレッシュのブロック数を減らさず、単位時間内で強制リフレッシュを実行するブロック数を後ろに繰り越さない。これにより、コンパクションの速度を可能な限り低下させるとともにホストI/Oへの影響を軽減することが可能となる。
【0063】
このように本実施形態によれば、強制リフレッシュの開始タイミングと、強制リフレッシュに含まれるコンパクションの速度とを、動的に変更できる機構を持つことにより、スケジュールに余裕がある場合は開始タイミングを後ろにずらし周期の加速を緩和させ、また強制リフレッシュ速度を制御することでホストI/Oへの影響も軽減することができる。
【0064】
また、本実施形態によれば、Host Writeが多いWorkload(処理量)の場合、Host Writeによるデータのリフレッシュが期待できるため、直近に実行する強制リフレッシュのブロック数を減らす様に、より後ろの時間帯に繰り越す。これにより、強制リフレッシュの実行対象のブロック数の削減が期待できるため、無駄な疲弊を抑止することができるとともに、ホストI/Oへの影響を軽減することが可能となる。
【0065】
また、本実施形態によれば、Host Readが少ないWorkload(処理量)の場合、Host Writeによるデータのリフレッシュが期待できないため、強制リフレッシュの開始タイミングは後ろにずらさず、強制リフレッシュに含まれるコンパクションの速度を可能な限り低下させる。これにより、ホストI/Oへの影響を軽減することが可能となる。
【0066】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0067】
10 不揮発性メモリ
32 データアクセス部
100 メモリシステム