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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024137066
(43)【公開日】2024-10-07
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20240927BHJP
   G06F 12/06 20060101ALI20240927BHJP
【FI】
G06F12/00 550Z
G06F12/06 515Q
G06F12/00 597U
G06F12/06 540A
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023048421
(22)【出願日】2023-03-24
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】尾西 翔平
(72)【発明者】
【氏名】長谷川 揚平
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA06
5B160AA14
5B160HA01
5B160MM01
5B160NA03
(57)【要約】
【課題】メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減する。
【解決手段】実施形態によれば、メモリシステムは、第1メモリ領域LD0と、第2メモリ領域LD2と、第1メモリ領域及び第2メモリ領域とホストデバイス2との接続を制御し、第1メモリ領域に対応する第1インターリーブ構成情報32を生成し、ホストデバイスからアクセス要求を受信した場合、第1インターリーブ設定情報に基づいて第1メモリ領域を選択し、第1メモリ領域の疲弊蓄積量に基づいて、第1インターリーブ設定情報を、第1メモリ領域には対応せず第2メモリ領域に対応する第2インターリーブ設定情報に更新するように構成された制御部10と、を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1メモリ領域と、
第2メモリ領域と、
前記第1メモリ領域及び前記第2メモリ領域とホストデバイスとの接続を制御し、
前記第1メモリ領域に対応する第1インターリーブ設定情報を生成し、
前記ホストデバイスからアクセス要求を受信した場合、前記第1インターリーブ設定情報に基づいて前記第1メモリ領域を選択し、
前記第1メモリ領域の疲弊蓄積量に基づいて、前記第1インターリーブ設定情報を、前記第1メモリ領域には対応せず前記第2メモリ領域に対応する第2インターリーブ設定情報に更新する
ように構成された制御部と、
を備える、メモリシステム。
【請求項2】
前記第1メモリ領域を含む第1記憶部と、
前記第2メモリ領域を含む第2記憶部と
を更に備え、
前記第1記憶部は、前記制御部に、前記第1メモリ領域の前記疲弊蓄積量を出力するように構成される、
請求項1に記載のメモリシステム。
【請求項3】
前記第1インターリーブ設定情報は、前記第1メモリ領域の識別情報を含む、
請求項1に記載のメモリシステム。
【請求項4】
前記第1メモリ領域の前記疲弊蓄積量は、前記第2メモリ領域の疲弊蓄積量よりも多い、
請求項1に記載のメモリシステム。
【請求項5】
前記制御部は、前記第1インターリーブ設定情報を前記第2インターリーブ設定情報に更新した後、前記ホストデバイスから受信した書き込み要求に基づいて、前記第1インターリーブ設定情報に対応する前記第1メモリ領域の第1データを更新して、前記第2インターリーブ設定情報に対応する前記第2メモリ領域に移動するように構成される、
請求項1に記載のメモリシステム。
【請求項6】
前記制御部は、前記第1インターリーブ設定情報に対応するコピー状態テーブルを含み、前記コピー状態テーブルに基づいて、前記第1インターリーブ設定情報に対応する前記第1メモリ領域の前記第1データが移動済みか否かを管理するように構成される、
請求項5に記載のメモリシステム。
【請求項7】
前記制御部は、前記第1インターリーブ設定情報を前記第2インターリーブ設定情報に更新した後に前記ホストデバイスから読み出し要求を受信した場合、前記コピー状態テーブルを参照し、
読み出し対象の第2データが前記第1メモリ領域から前記第2メモリ領域に移動済みではない場合、前記第1インターリーブ設定情報に基づいて前記第1メモリ領域から前記第2データを読み出し、
前記第2データが前記第1メモリ領域から前記第2メモリ領域に移動済みの場合、前記第2インターリーブ設定情報に基づいて前記第2メモリ領域から前記第2データを読み出すように構成される、
請求項6に記載のメモリシステム。
【請求項8】
前記制御部は、前記書き込み要求に基づいて前記第1データを更新する場合、前記コピー状態テーブルを参照し、
前記第1データが移動済みの場合、前記第2インターリーブ設定情報に基づいて前記第2メモリ領域に更新した前記第1データを書き込み、
前記第1データが移動済みではない場合、前記第1インターリーブ設定情報に基づいて前記第1メモリ領域から前記第1データを読み出し、前記第2インターリーブ設定情報に基づいて前記第2メモリ領域に更新した前記第1データを書き込み、前記コピー状態テーブルを更新するように構成される、
請求項6に記載のメモリシステム。
【請求項9】
前記制御部は、前記コピー状態テーブルを参照し、前記第1メモリ領域の移動済みではない第3データを前記第2メモリ領域に移動し、前記コピー状態テーブルを更新するように構成される、
請求項6に記載のメモリシステム。
【請求項10】
前記制御部は、前記第1インターリーブ設定情報に基づいて前記第1メモリ領域への接続を設定する第1デコーダと、前記第2インターリーブ設定情報に基づいて前記第2メモリ領域への接続を設定する第2デコーダと、含み、
前記第1インターリーブ設定情報を前記第2インターリーブ設定情報に更新する場合、前記第1デコーダは前記第2インターリーブ設定情報に基づいて前記第2メモリ領域に接続され、前記第2デコーダは前記第1インターリーブ設定情報に基づいて前記第1メモリ領域に接続される、
請求項1に記載のメモリシステム。
【請求項11】
前記制御部は、前記第1メモリ領域の前記疲弊蓄積量及び前記第1メモリ領域で実行されたウェアレベリングの情報に基づいて、前記第1インターリーブ設定情報を前記第2インターリーブ設定情報に更新するように構成される、
請求項1に記載のメモリシステム。
【請求項12】
複数の記憶部と、
前記複数の記憶部とホストデバイスとの接続を制御し、
前記複数の記憶部の間の疲弊蓄積量の偏りに基づいて前記複数の記憶部の間でのデータの入れ替えを実行するか否かを判断し、
前記複数の記憶部の各々で実行されたウェアレベリングの情報と、前記ウェアレベリングの周期と、前記ウェアレベリングのデータサイズに基づいて、前記複数の記憶部の中から前記入れ替えの対象となる記憶部を選択する
ように構成された制御部と
を備える、メモリシステム。
【請求項13】
前記ウェアレベリングの情報は、前記ウェアレベリングが実行された論理アドレスのリストである、
請求項12に記載のメモリシステム。
【請求項14】
前記ウェアレベリングの情報は、前記ウェアレベリングが実行された論理アドレスと前記論理アドレスに対応する前記ウェアレベリングの実行回数のリストである、
請求項12に記載のメモリシステム。
【請求項15】
制御部は、前記複数の記憶部の中から前記疲弊蓄積量の最も多い第1記憶部を前記入れ替えにおけるデータの移動元の記憶部として選択し、前記第1記憶部において、前記ウェアレベリングが実行された論理アドレスと前記論理アドレスに対応する前記ウェアレベリングの実行回数との積が予め設定された第1閾値より大きい場合、前記論理アドレスに対応するページを移動元ページとして選択するように構成される、
請求項12に記載のメモリシステム。
【請求項16】
前記複数の記憶部は、第2記憶部と前記第2記憶部よりも疲弊の耐久性が低い第3記憶部とを含み、
前記制御部は、前記積が前記第1閾値よりも大きい第2閾値よりも大きい場合、前記入れ替えにおけるデータの移動先として、前記第2記憶部を選択し、前記積が前記第2閾値以下である場合、前記入れ替えにおけるデータの移動先として、前記第3記憶部を選択するように構成される、
請求項15に記載のメモリシステム。
【請求項17】
前記第1記憶部の前記疲弊蓄積量は、前記第3記憶部の疲弊蓄積量よりも多い、
請求項16に記載のメモリシステム。
【請求項18】
前記制御部は、前記第3記憶部の負荷情報を取得し、前記第3記憶部に予め設定された第3閾値以上の負荷がかかっている場合、前記入れ替えにおけるデータの移動先として、前記第3記憶部を選択しないように構成される、
請求項16に記載のメモリシステム。
【請求項19】
前記制御部は、前記第2記憶部のアクセス率が予め設定された第4閾値以上である場合、前記入れ替えにおけるデータの移動先として、前記第2記憶部を選択しないように構成される、
請求項16に記載のメモリシステム。
【請求項20】
前記ウェアレベリングの情報は、前記ウェアレベリングが実行された時間に関する情報を更に含む、
請求項13に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
ホストデバイスとメモリシステムとの接続規格の1つとしてCXL(Compute Express Link)(登録商標)がある。CXLは、PCIe(Peripheral Component Interconnect-Express)(登録商標)と物理的には同じ信号を使用している。CXLは、3つのプロトコル(CXL.io)、(CXL.cache)、及び(CXL.mem)から構成される。CXL.ioは、PCIeベースのプロトコルである。CXL.cacheは、ホストデバイスとメモリシステムとがキャッシュコヒーレンシを維持してアクセスするためのプロトコルである。CXL.memは、メモリシステムが備えるメモリデバイスにコヒーレントにアクセスするためのプロトコルである。また、CXL2.0に対応するメモリシステムは、複数のホストデバイスに対応する。CXL2.0に対応するメモリシステムは、1つのメモリデバイスを複数のデバイスに仮想的に分割できるメモリプーリング機能を有する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2022/0308766号明細書
【特許文献2】米国特許出願公開第2022/0050610号明細書
【特許文献3】米国特許第11436137号明細書
【特許文献4】米国特許出願公開第2021/0294739号明細書
【特許文献5】米国特許出願公開第2022/0261160号明細書
【特許文献6】米国特許第10733110号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一実施形態では、メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減できるメモリシステムを提供する。
【課題を解決するための手段】
【0005】
実施形態に係るメモリシステムは、第1メモリ領域と、第2メモリ領域と、前記第1メモリ領域及び前記第2メモリ領域とホストデバイスとの接続を制御し、前記第1メモリ領域に対応する第1インターリーブ構成情報を生成し、前記ホストデバイスからアクセス要求を受信した場合、前記第1インターリーブ設定情報に基づいて前記第1メモリ領域を選択し、前記第1メモリ領域の疲弊蓄積量に基づいて、前記第1インターリーブ設定情報を、前記第1メモリ領域には対応せず前記第2メモリ領域に対応する第2インターリーブ設定情報に更新するように構成された制御部と、を含む。
【図面の簡単な説明】
【0006】
図1】第1実施形態に係るメモリシステムを備えるデータ処理装置の全体構成を示すブロック図。
図2】第1実施形態に係るメモリシステムの備えるメモリモジュールのメモリの論理的構成を示すブロック図。
図3】第1実施形態に係るメモリシステムの備える疲弊カウンタテーブル31の具体例を示すテーブル。
図4】第1実施形態に係るメモリシステムの備えるインターリーブ設定情報の具体例を示すテーブル。
図5】第1実施形態に係るメモリシステムの備えるコピー状態テーブルの具体例を示すテーブル。
図6】第1実施形態に係るメモリシステムにおけるインターリーブ設定更新処理のフローチャート。
図7】第1実施形態に係るメモリシステムにおけるインターリーブ数決定の具体例を示す図。
図8】第1実施形態に係るメモリシステムにおけるインターリーブ数決定の具体例を示す図。
図9】第1実施形態に係るメモリシステムにおけるインターリーブ粒度決定の具体例を示す図。
図10】第1実施形態に係るメモリシステムにおけるターゲット論理デバイス選択のフローチャート。
図11】第1実施形態に係るメモリシステムにおけるコピーオンライト処理のフローチャート。
図12】第1実施形態に係るメモリシステムにおけるコピーオンライト処理の具体例を示す論理デバイスの構成図。
図13】第1実施形態に係るメモリシステムにおける移動元のインターリーブセットのアドレスを特定してデータを読み出す場合の具体例を示す図。
図14】第1実施形態に係るメモリシステムにおけるコピー完了処理のフローチャート。
図15】第1実施形態に係るメモリシステムにおけるバックグラウンドコピー処理のフローチャート。
図16】第1実施形態の第1変形例に係るメモリシステムにおけるターゲット論理デバイス選択のフローチャート。
図17】第1実施形態の第2変形例に係るメモリシステムにおけるターゲット論理デバイスの選択を説明する図。
図18】第1実施形態の第3変形例に係るメモリシステムを備えるデータ処理装置の全体構成を示すブロック図。
図19】第2実施形態に係るメモリシステムを備えるデータ処理装置の全体構成を示すブロック図。
図20】第2実施形態に係るメモリシステムの備えるマッピングテーブルの具体例を示すテーブル。
図21】第2実施形態に係るメモリシステムの備えるモジュール管理情報の具体例を示すテーブル。
図22】第2実施形態に係るメモリシステムの備えるウェアレベリング履歴情報の具体例を示すテーブル。
図23】第2実施形態に係るメモリシステムにおいてウェアレベリングにおけるデータ移動を示すフローチャート。
図24】第2実施形態に係るメモリシステムにおける移動元ページ決定のフローチャート。
図25】第2実施形態に係るメモリシステムにおける移動先ページ決定のフローチャート。
図26】第2実施形態の第1変形例に係るメモリシステムの備えるウェアレベリング履歴情報の具体例を示すテーブル。
図27】第2実施形態の第2変形例に係るメモリシステムの備える論理アドレスリストの具体例を示すテーブル。
図28】第2実施形態の第2変形例に係るメモリシステムにおいてウェアレベリングにおけるデータ移動を示すフローチャート。
図29】第2実施形態の第2変形例に係るメモリシステムにおける移動元ページ決定のフローチャート。
図30】第2実施形態の第2変形例に係るメモリシステムにおける移動先ページ決定のフローチャート。
図31】第2実施形態の第3変形例に係るメモリシステムにおける移動先ページ決定のフローチャート。
図32】第2実施形態の第4変形例に係るメモリシステムにおける移動先ページ決定のフローチャート。
図33】第2実施形態の第5変形例に係るメモリシステムを備えるデータ処理装置の全体構成を示すブロック図。
図34】第3実施形態に係るメモリシステムを備えるデータ処理装置の全体構成を示すブロック図。
図35】第3実施形態に係るメモリシステムにおいてウェアレベリングにおけるデータ移動を示すフローチャート。
図36】第3実施形態に係るメモリシステムにおける移動元のインターリーブセットの選択の第1具体例を説明する図。
図37】第3実施形態に係るメモリシステムにおける移動元のインターリーブセットの選択の第2具体例を説明する図。
図38】第3実施形態に係るメモリシステムにおける移動元のインターリーブセットの選択の第3具体例を説明する図。
図39】第3実施形態に係るメモリシステムにおけるターゲット論理デバイス選択の第1具体例を説明する図。
図40】第3実施形態に係るメモリシステムにおけるターゲット論理デバイス選択の第2具体例を説明する図。
図41】第3実施形態に係るメモリシステムにおけるターゲット論理デバイス選択の第3具体例を説明する図。
【発明を実施するための形態】
【0007】
以下に実施形態が図面を参照して記述される。各実施形態は、発明の技術的思想を具体化するための装置や方法を例示している。図面は模式的又は概念的なものであり、各図面の寸法及び比率等は必ずしも現実のものと同一とは限らない。ある実施形態についての記述は全て、明示的に又は自明的に排除されない限り、別の実施形態の記述としても当てはまる。本発明の技術的思想は、構成要素の形状、構造、配置等によって特定されるものではない。
【0008】
なお、以下の記述において、略同一の機能及び構成を有する構成要素については、同一の符号が付される。参照符号を構成する文字の後の数字は、同じ文字を含んだ参照符号によって参照され、且つ同様の構成を有する要素同士を区別するために使用される。同じ文字を含んだ参照符号で示される要素を相互に区別する必要がない場合、これらの要素はそれぞれ文字を含んだ参照符号により参照される。
【0009】
1.第1実施形態
1.1 構成
1.1.1 データ処理装置の構成
まず、図1を参照して、データ処理装置1の構成の一例について説明する。図1は、データ処理装置1の全体構成を示すブロック図である。
【0010】
図1に示すように、データ処理装置1は、ホストデバイス2及びメモリシステム3を含む。なお、メモリシステム3には、複数のホストデバイス2が接続されていてもよい。本実施形態では、ホストデバイス2とメモリシステム3とを相互接続するための接続規格としてCXL2.0(登録商標)が適用される場合について説明する。なお、接続規格は、CXL2.0に限定されない。
【0011】
ホストデバイス2は、メモリシステム3にアクセスする情報処理装置(コンピューティングデバイス)である。例えば、ホストデバイス2は、メモリシステム3にデータの書き込み動作または読み出し動作を要求(命令)する。例えば、書き込み要求には、データ、コマンド、及びホスト物理アドレス(HPA: Host Physical Address)が含まれる。読み出し要求には、コマンド及びホスト物理アドレスHPAが含まれる。例えば、ホストデバイス2は、CXL.memプロトコルに基づいて、メモリシステム3に要求(アクセス要求)を送信する。
【0012】
メモリシステム3は、ホストバスを介して、ホストデバイス2に接続される。なお、メモリシステム3は、ネットワークあるいは無線通信を介して、ホストデバイス2に接続されてもよい。メモリシステム3は、ホストデバイス2からのアクセス要求に基づいて、書き込み動作または読み出し動作等を実行する。メモリシステム3は、アクセス要求(コマンド)に基づく動作が完了すると、ホストデバイス2にコマンド応答を送信する。
【0013】
ファブリックマネージャー(FM: Fabric Manager)4は、メモリシステム3におけるメモリリソースの動的な管理と、ホストデバイス2に対するメモリリソースの割り当て管理に用いられる。換言すれば、ファブリックマネージャー4は、ホストデバイス2側から見えるメモリシステム3のメモリリソースの構成を管理する。例えば、ファブリックマネージャー4は、データ処理装置1のいずれかのハードウェア上で動作するソフトウェアである。なお、ファブリックマネージャー4の専用回路が設けられてもよい。ファブリックマネージャー4は、ホストデバイス2にて実行されてもよいし、メモリシステム3にて実行されてもよい。ファブリックマネージャー4は、ファブリックマネージャーAPI(Application Programing Interface)を介して、システム管理部12に管理コマンドを送信する。
【0014】
1.1.2 メモリシステムの構成
引き続き、図1を参照して、メモリシステム3の構成の一例について説明する。
【0015】
図1に示すように、メモリシステム3は、制御部10及び複数のメモリモジュール(記憶部)20を含む。図1の例では、メモリシステム3は、4つのメモリモジュール20_0~20_3を含む。以下では、メモリモジュール20を、「デバイス」または単に「モジュール」とも表記する。
【0016】
制御部10は、CXL2.0におけるCXLスイッチに相当する。制御部10は、ホストデバイス2とメモリモジュール20との接続を制御する。制御部10は、ホストデバイス2に対するメモリモジュール20のメモリリソースの割り当てを制御する。
【0017】
制御部10は、1つのメモリモジュール20のメモリ領域を仮想的に分割できる。制御部10は、分割したメモリ領域の各々を1つの「論理デバイス」として管理する。制御部10は、1つのデータを分割して、分割データを複数の論理デバイスに記憶させる(以下、「インターリーブ」と表記する)機能を有する。
【0018】
制御部10は、複数のメモリモジュール20(論理デバイス)の間でウェアレベリング(以下、「モジュール間ウェアレベリング」とも表記する)を実行し得る。モジュール間ウェアレベリングは、例えば、疲弊蓄積量が比較的多いメモリモジュール20(論理デバイス)のデータと、疲弊蓄積量が比較的少ないメモリモジュール20(論理デバイス)のデータとを入れ替えることにより、疲弊蓄積量を平準化する処理である。疲弊蓄積量は、メモリモジュール20におけるメモリの劣化の度合いを示す量である。疲弊蓄積量は、例えば、書き込み動作、消去動作、あるいは読み出し動作等によるメモリの疲弊量及び実行回数等に基づく。
【0019】
制御部10は、システムデコーダ11、システム管理部12、アクセス管理部13、及びバッファ14を含む。システムデコーダ11、システム管理部12、アクセス管理部13、及びバッファ14は、内部バスを介して相互に接続される。なお、システムデコーダ11、システム管理部12、及びアクセス管理部13は、制御部10内に設けられたCPU(Central Processing Unit)が実行するプログラムによってその機能が実現されてもよいし、個別の回路によって構成されてもよい。
【0020】
システムデコーダ11は、CXL2.0におけるHDM(Host-managed Device Memory)デコーダに相当する。例えば、制御部10は、図示せぬ上流ポート(USP: Upstream Port)または仮想上流ポート(vUSP: Virtual Upstream Port)を含む。制御部10は、上流ポート(USP: Upstream Port)または仮想上流ポート(vUSP: Virtual Upstream Port)を介してホストデバイス2と接続される。例えば、システムデコーダ11は、上流ポートまたは仮想上流ポート内に設けられる。
【0021】
例えば、メモリシステム3に複数のホストデバイス2が接続されている場合、メモリシステム3は、複数のホストデバイス2にそれぞれ対応する複数のシステムデコーダ11を含む。システムデコーダ11は、システム管理部12から受信したインターリーブ設定情報32に基づいて、対応するホストデバイス2と、1つまたは複数のメモリモジュール20との接続を設定する。システムデコーダ11は、設定に基づいて、アクセス管理部13とメモリモジュール20との接続を制御する。システムデコーダ11は、ホストデバイス2から受信したアクセス要求をアクセス管理部13に送信する。本実施形態のシステムデコーダ11は、ホストデバイス2から受信したアクセス要求(書き込み要求または読み出し要求)に含まれるホスト物理アドレスHPAを変換しない。システムデコーダ11は、アクセス管理部13に、ホスト物理アドレスHPAをそのまま送信する。
【0022】
システム管理部12は、ファブリックマネージャー4から管理コマンドを受信する。ファブリックマネージャー4がホストデバイス2内に構成される場合、システム管理部12は、ホストバスを介して、ファブリックマネージャー4と接続されてもよいし、別のバス(例えば、イーサネット(登録商標)などの通信規格に対応)を介して、ファブリックマネージャー4と接続されてもよい。システム管理部12は、CXL2.0におけるファブリックマネージャーエンドポイント(FM Endpoint)としての機能を有する。システム管理部12は、ファブリックマネージャーAPIを介して受信した管理コマンドとインターリーブ設定情報32とに基づいて、システムデコーダ11を制御する。
【0023】
システム管理部12は、モジュール間ウェアレベリング(以下、単に「ウェアレベリング」とも表記する)を制御する。例えば、システム管理部12は、インターリーブ設定情報32を生成する。また、システム管理部12は、ウェアレベリングの際、インターリーブ設定情報32を更新する。すなわち、システム管理部12は、インターリーブの設定を動的に構成し得る。システム管理部12は、更新したインターリーブ設定情報32を、システムデコーダ11に送信する。
【0024】
システム管理部12は、ウェアレベリングにおけるデータの移動を制御する。システム管理部12は、ウェアレベリングにおけるデータ移動として、コピーオンライト(CoW: Copy on Write)処理を実行する。コピーオンライト処理は、移動元アドレスから移動先アドレスへのデータの移動(コピー)を、メモリモジュール20における書き込み動作(データ更新)のタイミングで実行する動作である。コピーオンライト処理の詳細については後述する。
【0025】
システム管理部12は、バッファ14内に記憶されている疲弊カウンタテーブル31、インターリーブ設定情報32、及びコピー状態テーブル33を更新する。
【0026】
疲弊カウンタテーブル31は、各論理デバイスの疲弊蓄積量及び記憶容量に関するテーブルである。システム管理部12は、各メモリモジュール20から受信した疲弊蓄積量の情報に基づいて疲弊カウンタテーブル31を更新する。
【0027】
インターリーブ設定情報32は、ホストデバイス2(システムデコーダ11)に接続される論理デバイスの個数(以下、「インターリーブ数」とも表記する)、対象となる論理デバイスへのデータの割り当て順序、及びインターリーブに対応する論理デバイス内のメモリ領域のデータサイズ(以下、「インターリーブ粒度」とも表記する)に関する情報である。システム管理部12は、疲弊カウンタテーブル31に基づいてウェアレベリングの実行を決定すると、インターリーブ設定情報32を更新する。
【0028】
コピー状態テーブル33は、コピーオンライト処理におけるデータのコピー状態に関するテーブルである。システム管理部12は、データがコピーされた際、すなわち書き込み動作が実行された際に、コピー状態テーブル33を更新する。
【0029】
アクセス管理部13は、システムデコーダ11の制御に基づいて、メモリモジュール20との接続を管理する。アクセス管理部13は、各メモリモジュール20に対応する図示せぬ下流ポート(DSP: Downstream Port)または仮想下流ポート(vDSP: Virtual Downstream Port)を介して、各メモリモジュール20に接続される。例えば、アクセス管理部13は、CXL.memプロトコルに基づいて、メモリモジュール20にアクセス要求を送信する。例えば、アクセス要求が書き込み要求である場合、アクセス管理部13は、対象となるメモリモジュール20に、データ、コマンド、及びホスト物理アドレスHPAを送信する。また、例えば、アクセス管理部13は、CXL.ioプロトコルに基づいて、各メモリモジュール20に、インターリーブ設定情報32を送信する。
【0030】
バッファ14は、揮発性メモリである。バッファ14は、データを一時的に記憶する。例えば、バッファ14は、SRAM(Static Random Access Memory)である。バッファ14は、疲弊カウンタテーブル31、インターリーブ設定情報32、及びコピー状態テーブル33等を記憶する。なお、データを永続的に記憶するために、制御部10の外部または内部に図示せぬ不揮発性メモリが設けられてもよいし、いずれかのメモリモジュール20の不揮発性のメモリ領域が用いられてもよい。
【0031】
次に、メモリモジュール20の構成について説明する。メモリモジュール20は、CXL2.0におけるCXLメモリに相当する。例えば、メモリモジュール20は、CXL2.0におけるType3デバイスである。メモリモジュール20は、記憶媒体(半導体記憶装置)である。メモリモジュール20は、揮発性の記憶媒体であってもよいし、不揮発の記憶媒体であってもよい。また、各メモリモジュール20の構成は異なっていてもよい。以下では、メモリモジュール20_0~20_3が、不揮発性メモリとしてNAND型フラッシュメモリを搭載したSSD(Solid State Drive)である場合について説明する。NAND型フラッシュメモリは、比較的疲弊に対する耐久性の低い(以下、「低Endurance」とも表記する)メモリである。この場合、制御部10は、メモリモジュール20_0~20_3に対してモジュール間ウェアレベリングを実行し得る。
【0032】
メモリモジュール20は、メモリデコーダ21、メモリ制御部22、及びメモリ23を含む。
【0033】
メモリデコーダ21は、CXL2.0におけるHDM(Host-managed Device Memory)デコーダに相当する。メモリデコーダ21は、制御部10から受信したインターリーブ設定情報32に基づいて、ホスト物理アドレスHPAをメモリ23に対応したデバイス物理アドレス(DPA: Device Physical Address)に変換する。例えば、メモリデコーダ21は、インターリーブにより分散された不連続のホスト物理アドレスHPAを、連続したデバイス物理アドレスに変換する。
【0034】
メモリ制御部22は、メモリモジュール20全体を制御する。メモリ制御部22は、メモリ23のメモリ領域を管理する。メモリ制御部22は、制御部10から受信した信号に基づいて、書き込み動作、読み出し動作、または消去動作を実行する。例えば、メモリ制御部22は、制御部40に、疲弊蓄積量に関する情報を送信する。
【0035】
メモリ23は、例えば、複数のNAND型フラッシュメモリを含む。メモリ23は、複数のメモリチップを含み得る。この場合、複数のメモリチップは、それぞれが独立して動作し得る。
【0036】
1.1.3 メモリモジュールのメモリの論理的構成
次に、図2を参照して、メモリモジュール20のメモリ23の論理的構成の一例について説明する。図2は、メモリモジュール20のメモリ23の論理的構成を示すブロック図である。
【0037】
図2に示すように、各メモリモジュール20のメモリ23は、例えば2つの論理デバイスLDに仮想的に分割される。なお、各メモリ23における論理デバイスLDの個数は、任意である。メモリ23は1つの論理デバイスLDであってもよい。以下の説明において、メモリモジュール20_0~20_3の論理デバイスLDを区別する場合、メモリモジュール20_0の2つの論理デバイスLDを論理デバイスLD0及びLD1と表記する。メモリモジュール20_1の2つの論理デバイスLDを論理デバイスLD2及びLD3と表記する。メモリモジュール20_2の2つの論理デバイスLDを論理デバイスLD4及びLD5と表記する。メモリモジュール20_3の2つの論理デバイスLDを論理デバイスLD6及びLD7と表記する。
【0038】
各論理デバイスLDは、複数のチャンクCKに分割される。チャンクCKは、インターリーブに対応するメモリ領域の単位である。すなわち、チャンクCKのデータサイズがインターリーブ粒度である。例えば、1回の書き込み動作において一括してデータが書き込まれるメモリ領域を「ページ」と定義すると、チャンクCKのデータサイズ(インターリーブ粒度)は、ページのデータサイズよりも大きい。すなわち、チャンクCKは、複数のページを含む。図2の例では、各論理デバイスLDは、8個のチャンクCK0~CK7を含む。
【0039】
1.2 疲弊カウンタテーブルの具体例
次に、図3を参照して、疲弊カウンタテーブル31の具体例について説明する。図3は、疲弊カウンタテーブル31の具体例を示すテーブルである。
【0040】
図3に示すように、疲弊カウンタテーブル31は、論理デバイスLD毎に疲弊蓄積量と記憶容量に関する情報を含む。例えば、疲弊蓄積量は、1回の書き込み動作による疲弊量と書き込み動作の回数との積と、1回の読み出し動作による疲弊量と読み出し動作の回数との積とを和算した結果である。例えば、書き込み動作と読み出し動作とでは、1回の動作による疲弊量が異なる。図3の例では、論理デバイスLD0の疲弊蓄積量は、1000である。論理デバイスLD1の疲弊蓄積量は、30である。論理デバイスLD2の疲弊蓄積量は、5000である。論理デバイスLD3の疲弊蓄積量は、2500である。論理デバイスLD0、LD1、LD2、及びLD3の記憶容量はいずれも1TBである。なお、図3の例では、疲弊カウンタテーブル31が、論理デバイスLD毎に疲弊蓄積量に関する情報を有する場合について説明したが、これに限定されない。疲弊カウンタテーブル31は、メモリモジュール20毎に疲弊蓄積量に関する情報を有していてもよいし、チャンクCK毎に疲弊蓄積量に関する情報を有していてもよいし、デバイス物理アドレス毎、すなわち、ページ毎に疲弊蓄積量に関する情報を有していてもよい。
【0041】
1.3 インターリーブ設定情報の具体例
次に、図4を参照して、インターリーブ設定情報32の具体例について説明する。図4は、インターリーブ設定情報32の具体例を示すテーブルである。図4の例は、1つのシステムデコーダ11(ホストデバイス2)に対応するインターリーブ設定情報32を示している。制御部10は、システムデコーダ11毎に異なるインターリーブの設定を有する。
【0042】
図4に示すように、例えば、インターリーブ設定情報32は、インターリーブ数IW(インターリーブウェイ数IWとも表記する)、インターリーブ粒度IG(すなわち、チャンクCKのサイズ)、及びターゲットとなる論理デバイスLD(以下、「ターゲットLD」とも表記する)の情報を含む。以下、インターリーブ数IW、インターリーブ粒度IG、及びターゲット論理デバイスLDの組み合わせをインターリーブセットISと表記する。例えば、インターリーブセットISは、CXL規格に準ずる。インターリーブ設定情報32には、複数のシステムデコーダ11に対応した複数のインターリーブセットISが含まれ得る。
【0043】
本実施形態のウェアレベリングにはコピーオンライト処理が適用される。コピーオンライト処理の場合、データの移動(コピー)が完了するまで、データは更新前のインターリーブセットISに対応する論理デバイスLDに記憶されている。このため、コピーオンライト処理が完了するまでは、バッファ14に、更新前(ウェアレベリング実行前)のインターリーブセットISと、更新後(ウェアレベリング実行後)のインターリーブセットISとが記憶され得る。なお、更新前のインターリーブセットISは、バッファ14以外のメモリ領域に退避されてもよい。
【0044】
図4の例では、更新前のインターリーブ数IWは1であり、インターリーブ粒度IGは1KBである。そして、ターゲットとなる論理デバイスLDはLD0である。これに対し、更新後のインターリーブ数IWは4であり、インターリーブ粒度は1KBである。そして、ターゲットとなる論理デバイスLDは、LD3→LD4→LD2→LD6である。これは、論理デバイスLD3、LD4、LD2、LD6のチャンクCKが、この順序で繰り返し選択されることを示している。なお、図4の例では更新後のターゲット論理デバイスLDに論理デバイスLD0と同一メモリモジュール20_0の論理デバイスLD1が含まれていないが、論理デバイスLD1が含まれていてもよい。
【0045】
1.4 コピー状態テーブルの具体例
次に、図5を参照して、コピー状態テーブル33の具体例について説明する。図5は、コピー状態テーブル33の具体例を示すテーブルである。
【0046】
図5に示すように、コピー状態テーブル33は、複数のインターリーブセットISに対応する。図5の例では、コピー状態テーブル33は、3つインターリーブセットISに対応する。同時に実行できるウェアレベリングの個数は、コピー状態テーブル33のインターリーブセットISの識別番号ID数に基づく。
【0047】
コピー状態テーブル33は、インターリーブセットISの識別番号ID0~ID2の各々に対応するコピーサイズ及びコピーフラッグに関する情報を含む。コピーサイズは、ウェアレベリングにおけるデータ移動の単位である。換言すると、コピーサイズは、ウェアレベリングの管理単位である。コピーサイズは、インターリーブ粒度IGの整数倍に設定され得る。例えば、コピーサイズは、チャンクCKのサイズと同じであってもよい。例えば、コピーサイズは、インターリーブ粒度IGの倍数を表す。図5の例では、インターリーブセットISのID0のコピーサイズは1である。すなわち、コピーサイズは、インターリーブ粒度IGの1倍であることを示す。また、インターリーブセットISのID1のコピーサイズは16である。インターリーブセットISのID4のコピーサイズは4である。
【0048】
コピーフラッグは、ウェアレベリングの管理単位毎にコピーステータス(コピー済みが否か)を示すフラグである。例えば、コピーサイズがチャンクCKのサイズと同じである場合、1ビットの情報が1つのチャンクCKに対応する。図5の例では、“1”は、コピー済みを示し、“0”は、コピー未了を示す。システム管理部12は、コピーフラッグが全て“1”になると、コピーオンライト処理が完了したと判断する。すなわち、システム管理部12は、ウェアレベリングが終了したと判断する。なお、コピーフラッグは、圧縮されてもよい。
【0049】
1.5 インターリーブ設定更新処理
次に、インターリーブ設定更新処理の一例について説明する。インターリーブ設定更新処理は、ウェレベリング発動時に実行される動作である。
【0050】
1.5.1 インターリーブ設定更新処理の流れ
まず、図6を参照して、インターリーブ設定更新処理の流れの一例について説明する。図6は、インターリーブ設定更新処理のフローチャートである。
【0051】
図6に示すように、まず、システム管理部12は、ウェアレベリングの発動を決定すると、ウェアレベリング(W/L)の対象となるインターリーブセットIS(以下、「移動元IS」とも表記する)を選択する(S1101)。例えば、システム管理部12は、論理デバイスLD間の疲弊蓄積量の偏りが、予め設定された閾値以上となった場合、疲弊蓄積量が最も多いインターリーブセットISを移動元のインターリーブセットISとして選択する。あるいは、システム管理部12は、疲弊カウンタテーブル31を参照し、インターリーブセットISに対応する論理デバイスLDの疲弊蓄積量が予め設定された閾値以上となった場合、当該インターリーブセットISを移動元のインターリーブセットISとして選択する。
【0052】
システム管理部12は、移動先のインターリーブ数IW及びインターリーブ粒度IGを決定する(S1102)。
【0053】
システム管理部12は、移動先のインターリーブセットISを構成するターゲット論理デバイスLDを選択する(S1103)。これにより、移動先(更新後)のインターリーブセットISの構成が決定される。
【0054】
システム管理部12は、インターリーブ設定情報32の移動元(更新前)のインターリーブセットISを退避させる(S1104)。例えば、システム管理部12は、インターリーブ設定情報32の移動元(更新前)のインターリーブセットISを、インターリーブ設定情報32から別のメモリ領域に退避する。
【0055】
システム管理部12は、コピー状態テーブル33のコピーステータスを初期化する(S1105)。より具体的には、システム管理部12は、コピー状態テーブル33において、移動元のインターリーブセットISに対応するコピーフラッグをオール“0”状態とする。
【0056】
システム管理部12は、インターリーブ設定情報32を移動先のインターリーブセットISに更新する(S1106)。より具体的には、システム管理部12は、インターリーブ設定情報32を、S1102及びS1103において決定したインターリーブ数IW、インターリーブ粒度IG、及びターゲット論理デバイスLDに更新する。例えば、システム管理部12は、更新したインターリーブ設定情報32を、システムデコーダ11に送信する。
【0057】
システム管理部12は、移動先のインターリーブセットISに対応する論理デバイスLD(以下、「移動先論理デバイスLD」とも表記する)、すなわちメモリモジュール20に更新後のインターリーブセットISを送信し、論理デバイスLDに関するインターリーブ設定を更新する(S1107)。
【0058】
1.5.2 インターリーブ数決定の具体例
次に、図7及び図8を参照して、図6のステップS1102において説明したインターリーブ数IW決定の具体例について説明する。図7及び図8は、インターリーブ数IW決定の具体例を示す図である。
【0059】
図7に示すように、例えば、システム管理部12は、インターリーブセットISを更新する際に、インターリーブ数IWを2倍に増やしていってもよい。例えば、移動元のインターリーブセットISのインターリーブ数IWが1である場合、インターリーブセットISの更新により、インターリーブ数IWは2に更新される。また、例えば、移動元のインターリーブセットISのインターリーブ数IWが2である場合、インターリーブセットISの更新により、インターリーブ数IWは4に更新される。なお、CXL2.0では、インターリーブ数の最大値は8である。
【0060】
なお、移動元のインターリーブセットISの疲弊蓄積量の大きさに応じて、インターリーブ数IWの増分を決定してもよい。例えば、図4を用いて説明したインターリーブ設定情報32のように、インターリーブ数IWを1から4に更新してもよい。
【0061】
図8に示すように、移動元のインターリーブセットISに対応する複数の論理デバイスLDの疲弊蓄積量に偏りがある場合、システム管理部12は、インターリーブ数IWを減らして、疲弊蓄積量の少ない論理デバイスLDにデータを移動させてもよい。これにより、論理デバイスLD間での疲弊蓄積量を平準化し得る。例えば、移動元のインターリーブセットISのインターリーブ数IWが4である場合、インターリーブセットISの更新により、インターリーブ数IWは1に更新されてもよい。
【0062】
1.5.3 インターリーブ粒度決定の具体例
次に、図9を参照して、図6のステップS1102において説明したインターリーブ粒度IG決定の具体例について説明する。図9は、インターリーブ粒度IG決定の具体例を示す図である。
【0063】
図9に示すように、例えば、インターリーブ粒度IGは、論理デバイスLD内(またはメモリモジュール20内)で実行されるウェアレベリングにおけるデータの移動単位の整数倍とする。図9の例では、論理デバイスLD内のウェアレベリングのデータ移動のサイズ(粒度)が1KiBである。これに対し、モジュール間ウェアレベリングにおけるインターリーブ粒度IGは、4倍の4KiBに設定される。この場合、メモリモジュール20は、指定ベンダー固有拡張機能(DVSEC: Designated Vendor-Specific Extended Capabilities)として、論理デバイスLD内ウェアレベリングの粒度、あるいはインターリーブ粒度IGとして好ましい粒度を制御部10に提示してもよい。
【0064】
1.5.4 ターゲット論理デバイスLDの選択
次に、図10を参照して、図6のステップS1103において説明したターゲット論理デバイスLDの選択の流れの一例について説明する。図10は、ターゲット論理デバイスLD選択のフローチャートである。
【0065】
図10に示すように、システム管理部12は、未使用の論理デバイスLDがあるか確認する(S1201)。例えば、システム管理部12は、いずれのインターリーブセットISにも割り当てられていない、すなわち、未使用の論理デバイスLDがあるか確認する。
【0066】
未使用の論理デバイスLDがある場合(S1201_Yes)、システム管理部12は、未使用の論理デバイスLDの中から、最も疲弊蓄積量が少ない論理デバイスLDをターゲット論理デバイスLDとして選択する(S1202)。
【0067】
システム管理部12は、ターゲット論理デバイスLDへの未使用論理デバイスLDの割り当てが完了したか確認する(S1203)。全てのターゲット論理デバイスLDの割り当てが完了した場合(S1203_Yes)、システム管理部12は、ターゲット論理デバイスLDの選択を終了する。他方で、割り当て未了のターゲット論理デバイスLDがある場合(S1203_No)、システム管理部12は、ステップS1201に進み、未使用の論理デバイスLDがあるか確認する。
【0068】
また、ステップS1201において、未使用の論理デバイスLDが無い場合(S1201_No)、システム管理部12は、割り当てエラー処理を実行する(S1204)。割り当てエラー処理として、システム管理部12は、未使用の論理デバイスLDができるまで一定期間待機してもよい。また、システム管理部12は、メモリモジュール20にガベージコレクションを実行させ、未使用の論理デバイスLDを確保してもよい。更には、システム管理部12は、ウェアレベリング処理を取り消してもよい。システム管理部12は、割り当てエラー処理後、ステップS1201に進み、未使用の論理デバイスLDがあるか確認する。
【0069】
1.6 コピーオンライト処理
次に、コピーオンライト処理について説明する。
【0070】
1.6.1 コピーオンライト処理の流れ
まず、図11を参照して、コピーオンライト処理の流れの一例について説明する。図11は、コピーオンライト処理のフローチャートである。図11の例は、ウェアレベリングが実行された後に、ホストデバイス2のアクセス要求(書き込み要求または読み出し要求)を実行する場合を示している。
【0071】
図11に示すように、メモリシステム3は、ホストデバイス2からコマンド(アクセス要求)を受信する(S1301)。例えばコマンドは、書き込み要求または読み出し要求に対応するコマンドである。
【0072】
システム管理部12は、コピー状態テーブル33を参照して、対象データが移動元のインターリーブセットISに対応する論理デバイスLD(以下、「移動元論理デバイスLD」とも表記する)から移動先論理デバイスLDにコピー済みか確認する(S1302)。すなわち、システム管理部12は、移動先論理デバイスLDの対象チャンクCKにデータがあるか確認する。
【0073】
対象データがコピー済みではない場合(S1302_No)、システム管理部12は、対象データが記憶されている移動元のインターリーブセットISの対象アドレスを特定し、データを読み出す(S1303)。すなわち、システム管理部12は、移動元論理デバイスLDのデータが記憶されているアドレスを特定して、データを読み出す。
【0074】
システム管理部12は、コマンドが書き込み要求のコマンドか確認する(S1304)。
【0075】
コマンドが書き込み要求のコマンドである場合(S1304_Yes)、システム管理部12は、ホストデバイス2から受信した書き込みデータに基づいて読み出しデータを更新する。システム管理部12は、移動先論理デバイスLDに、更新データを書き込む(S1305)。
【0076】
システム管理部12は、書き込み動作が終了すると、コピー完了処理を実行する(S1306)。コピー完了処理は、コピー状態テーブル33を更新する動作である。
【0077】
コマンドが書き込み要求のコマンドではない場合(S1304_No)、すなわち、コマンドが読み出し要求のコマンドである場合、システム管理部12は、そのままS1308に進む。
【0078】
また、ステップS1302において、対象データが移動元論理デバイスLDから移動先論理デバイスLDにコピー済みである場合(S1302_Yes)、システム管理部12は、移動先論理デバイスLDの対象アドレスにデータアクセスする(S1307)。例えば、コマンドが読み出し要求のコマンドである場合、システム管理部12は、移動先論理デバイスLDの対象アドレスのデータを読み出す。また、例えば、コマンドが書き込み要求のコマンドである場合、システム管理部12は、移動先論理デバイスLDに書き込みデータを書き込む。
【0079】
システム管理部12は、コマンドに対応する処理が完了した旨を知らせるコマンド応答をホストデバイス2に送信する。例えば、読み出し要求の場合、システム管理部12は、コマンド応答として、読み出しデータをホストデバイス2に送信する。
【0080】
1.6.2 コピーオンライト処理の具体例
次に、図12を参照して、コピーオンライト処理の具体例について説明する。図12は、コピーオンライト処理の具体例を示す論理デバイスLDの構成図である。図12の例は、図4のインターリーブ設定情報32に示すように、論理デバイスLD0が移動元論理デバイスLDであり、論理デバイスLD2、LD3、LD4、及びLD6が移動先論理デバイスLD、すなわちターゲット論理デバイスLDである場合を示している。例えば、ターゲット論理デバイスLDは、論理デバイスLD3、LD4、LD2、LD6の順に遷移する。図12の例では、移動元論理デバイスLD0のチャンクCK0~CK7に記憶されているオリジナルデータをOG-0~OG-7と表記する。オリジナルデータOG-0~OG-7に対応するコピーデータ(更新データ)をCP-0~CP-7とそれぞれ表記する。
【0081】
図12に示すように、論理デバイスLD0の8つのチャンクCKには、オリジナルデータOG-0~OG-7がそれぞれ記憶されている。この状態でウェアレベリングが実行されると、移動先のインターリーブセットISに基づいて、移動先論理デバイスLD3では、コピーデータCP-0及びCP-4にそれぞれ対応する2つのチャンクCKが割り当てられる。2つのチャンクのデバイス物理アドレスは、メモリモジュール20_1のメモリデコーダ21により決定される。このため、移動元論理デバイスLD0のオリジナルデータOG-0及びOG-4が記憶されているチャンクCKのデバイス物理アドレスと、移動先論理デバイスLD3のコピーデータCP-0及びCP-4に割り当てらえるチャンクCKのデバイス物理アドレスとは異なっていてもよい。図12の例では、移動先論理デバイスLD3のコピーデータCP-0に対応するチャンクCKは、コピー未了の状態である。この場合、コピーデータCP-0に対応するチャンクCKには、コピーデータCP-0が記憶されておらず、移動元論理デバイスLD0に、オリジナルデータOG-0が残っている。また、コピーデータCP-4に対応するチャンクCKは、コピー済みの状態である。この場合、コピーデータCP-4に対応するチャンクCKには、コピーデータCP-4が記憶されている。
【0082】
移動先論理デバイスLD4では、コピーデータCP-1及びCP-5にそれぞれ対応する2つのチャンクCKが割り当てられる。コピーデータCP-1及びコピーデータCP-5に対応するチャンクCKは、それぞれコピー済みの状態である。この場合、コピーデータCP-1及びCP-5に対応するチャンクCKには、コピーデータCP-1及びCP-5がそれぞれ記憶されている。
【0083】
移動先論理デバイスLD2では、コピーデータCP-2及びCP-6にそれぞれ対応する2つのチャンクCKが割り当てられる。コピーデータCP-2及びコピーデータCP-6に対応するチャンクCKは、コピー未了の状態である。この場合、コピーデータCP-2及びCP-6に対応するチャンクCKには、コピーデータCP-2及びCP-6がそれぞれ記憶されておらず、移動元論理デバイスLD0に、オリジナルデータOG-2及びOG-6が残っている。
【0084】
移動先論理デバイスLD6では、コピーデータCP-3及びCP-7にそれぞれ対応する2つのチャンクCKが割り当てられる。コピーデータCP-3に対応するチャンクCKは、コピー未了の状態である。この場合、コピーデータCP-3に対応するチャンクCKには、コピーデータCP-3が記憶されておらず、移動元論理デバイスLD0に、オリジナルデータOG-3が残っている。また、コピーデータCP-7に対応するチャンクCKは、コピー済みの状態である。この場合、コピーデータCP-7に対応するチャンクCKには、コピーデータCP-7が記憶されている。
【0085】
1.6.3 移動元のインターリーブセットのアドレスを特定してデータを読み出す場合の具体例
次に、図13を参照して、図11のステップS1302において説明した移動元のインターリーブセットISのアドレスを特定してデータを読み出す場合の具体例について説明する。図13は、移動元のインターリーブセットISのアドレスを特定してデータを読み出す場合の具体例を示す図である。
【0086】
図13に示すように、例えば、システムデコーダ11は、ホストデバイス2からホスト物理アドレスHPAを含むアクセス要求を受信する。対象データが移動元論理デバイスLD0から移動先論理デバイスLD3にコピーされていない場合、システムデコーダ11は、移動元のインターリーブセットISを参照して、移動元論理デバイスLD0(メモリモジュール20_0)にホスト物理アドレスHPAを送信する。メモリモジュール20_0のメモリデコーダ21は、ホスト物理アドレスHPAからデバイス物理アドレスを特定する。メモリモジュール20_0のメモリ制御部22は、論理デバイスLD0のデバイス物理アドレスに対応するページからコピー未了のデータ(以下、「未コピーデータ」とも表記する)を読み出して、制御部10に送信する。
【0087】
ホストデバイス2の要求が書き込み要求である場合、移動元論理デバイスLD0の読み出しデータがホストデバイス2から受信した書き込みデータに基づいて更新され、更新データ(及びホスト物理アドレスHPA)が、移動先論理デバイスLD3に送信される。
【0088】
1.6.4 コピー完了処理の流れ
次に、図14を参照して、図11のステップS1306において説明したコピー完了処理の流れの一例について説明する。図14は、コピー完了処理のフローチャートである。
【0089】
図14に示すように、システム管理部12は、移動元論理デバイスLDのデータがコピーされると、コピー状態テーブル33におけるコピーステータスを更新する(S1401)。例えば、システム管理部12は、コピーが実行されたチャンクCKに対応するコピーフラッグを“0”(コピー未了)から“1”(コピー済み)に更新する。
【0090】
システム管理部12は、コピー状態テーブル33を参照して、移動元のインターリーブセットISのデータが全てコピーされたか確認する(S1402)。すなわち、システム管理部12は、移動元のインターリーブセットISに対応するコピーフラッグがオール“1”であるか確認する。
【0091】
全てのコピーが完了した場合(S1402_Yes)、システム管理部12は、移動元のインターリーブセットISを削除する(S1403)。
【0092】
次に、システム管理部12は、コピー状態テーブル33において、移動元のインターリーブセットISに対応する識別番号IDの情報を削除する(S1404)。
【0093】
また、ステップS1402において、全てのデータのコピーが完了していない場合(S1402_No)、システム管理部12は、コピー完了処理をそのまま終了させる。すなわち、システム管理部12は、移動元のインターリーブセットISに関する情報の削除を実行しない。
【0094】
1.6.5 バックグラウンドコピー処理
次に、図15を参照して、バックグラウンドコピー処理の流れの一例について説明する。図15は、バックグラウンドコピー処理のフローチャートである。
【0095】
例えば、ホストデバイス2からの書き込み要求がないと、未コピーデータが残存し、コピーオンライト処理が完了しない。すなわち、ウェアレベリングが完了しない。このような場合に、バックグラウンドコピー処理が実行される。バックグラウンドコピー処理は、定期的あるいはメモリシステム3が待機状態にある場合等に、移動元論理デバイスLDの未コピーデータを、移動先論理デバイスLDにコピーする処理である。例えば、バックグラウンドコピー処理では、移動元論理デバイスLDから読み出された未コピーデータが、移動先論理デバイスLDにそのままコピーされる。バックグラウンドコピー処理により、システム管理部12は、コピーステータスを更新できる。
【0096】
図15に示すように、システム管理部12は、コピー状態テーブル33を参照して(S1501)、全てのコピーが完了しているか確認する(S1502)。すなわち、システム管理部12は、完了していないウェアレベリング(コピーオンライト処理)があるか確認する。
【0097】
全てのコピーが完了していない場合(S1502_No)、システム管理部12は、未コピーデータに対応する移動元論理デバイスLDのアドレスを特定して、移動元論理デバイスLDから未コピーデータを読み出す(S1503)。
【0098】
システム管理部12は、読み出した未コピーデータを、移動先のインターリーブセットISの対応するチャンクCKに書き込む(S1504)。すなわち、システム管理部12は、移動先論理デバイスLDに未コピーデータをコピーする。
【0099】
システム管理部12は、コピー状態テーブル33を参照して、移動元のインターリーブセットISのコピーステータスを更新する(S1505)。
【0100】
システム管理部12は、バックグラウンドコピー処理を一定期間スリープさせる(S1506)。スリープ期間は、任意に設定可能である。例えば、スリープ期間は、ウェアレベリングの発生頻度に応じて、短縮または延長されてもよい。システム管理部12は、スリープ期間終了後、ステップS1501に進む。
【0101】
また、ステップS1502において、全てのコピーが完了している場合(S1502_Yes)、システム管理部12は、移動元のインターリーブセットISを削除する(S1507)。
【0102】
次に、システム管理部12は、コピー状態テーブル33において、移動元のインターリーブセットISに対応する識別番号IDの情報を削除する(S1508)。
【0103】
1.7 本実施形態に係る効果
本実施形態に係る構成であれば、メモリシステム3は、メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減できる。本効果につき、詳述する。
【0104】
例えば、複数のメモリモジュール間でのウェアレベルを実行する場合、各メモリモジュールのメモリ領域のアドレス管理のためにマッピングテーブルが用いられる。メモリの増加にともない、マッピングテーブルのデータ量は増加する。例えば、256GiBの記憶容量を有するメモリモジュールが8個ある場合、これに対応するマッピングテーブルのデータ量は、2GiBに達する。
【0105】
これに対し、本実施形態に係る構成であれば、制御部10は、インターリーブ設定情報32及びコピー状態テーブル33を用いてモジュール間ウェアレベリングを実行できる。また、制御部10は、ホスト物理アドレスHPAを、メモリモジュール20にそのまま送信できる。よって、マッピングテーブルを省略できる。これにより、例えば、256GiBの記憶容量を有するメモリモジュールが8個ある場合、インターリーブ設定情報32及びコピー状態テーブル33を含む管理情報のデータ量を最大数十MiB程度に抑制できる。よって、メモリシステム3は、メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減できる。
【0106】
更に、本実施形態に係る構成であれば、モジュール間ウェアレベリングにおけるデータの移動にコピーオンライト処理を適用できる。コピーオンライト処理では、データの更新があった場合に書き込み動作が実行される。このため、無効データの増加による、書き込み倍率(WAF:write amplification factor)の増加を抑制できる。よって、データ移動のコストを低減できる。
【0107】
更に、本実施形態に係る構成であれば、制御部10は、モジュール間ウェアレベリングの際、メモリモジュール20の疲弊状態に応じて、インターリーブセットの設定を動的に変更できる。インターリーブの設定をして、ターゲット論理デバイスLDを変更することにより、疲弊負荷をメモリモジュール間で分散できる。
【0108】
1.8 第1実施形態の変形例
次に、第1実施形態について3つの変形例を説明する。以下、第1実施形態と異なる点を中心に説明する。
【0109】
1.8.1 第1変形例
まず、第1実施形態の第1変形例について説明する。第1変形例では、第1実施形態と異なるターゲット論理デバイスLDの選択の流れの一例について説明する。図16は、ターゲット論理デバイスLD選択のフローチャートである。
【0110】
図16に示すように、システム管理部12は、移動元のインターリーブセットISのインターリーブ数IWよりもインターリーブ数IWが大きいインターリーブセットISを探索する(S1601)。
【0111】
インターリーブセットISが1個以上見つかった場合(ステップS1602_Yes)、システム管理部12は、見つかったインターリーブセットISの中から、対応する論理デバイスLDの疲弊蓄積量が最も少ないインターリーブセットISを選択する(S1603)。
【0112】
システム管理部12は、移動元のインターリーブセットISに対応する論理デバイスLDの疲弊蓄積量(以下、「移動元IS疲弊蓄積量」とも表記する)と、選択したインターリーブセットISに対応する論理デバイスLDの疲弊蓄積量(以下、「選択IS疲弊蓄積量」とも表記する)とを比較する(S1604)。
【0113】
移動元IS疲弊蓄積量と選択IS疲弊蓄積量との差分が、予め設定された閾値より大きい場合(S1604_Yes)、すなわち、選択IS疲弊蓄積量が移動元IS疲弊蓄積量に対して十分に小さい場合、システム管理部12は、選択インターリーブセットISに対応する複数の論理デバイスLDのうち、疲弊蓄積量が少ない論理デバイスLDから順に、移動先のインターリーブセットISのインターリーブ数IWと同じ個数の論理デバイスLDを選択する(S1605)。
【0114】
インターリーブセットISが見つからなかった場合(ステップS1602_No)、または移動元IS疲弊蓄積量と選択IS疲弊蓄積量との差分が、予め設定された閾値以下である場合(S1604_No)、システム管理部12は、割り当てエラー処理を実行する(S1606)。割り当てエラー処理として、システム管理部12は、一定期間待機してからターゲット論理デバイスLDの選択を実行してもよい。また、システム管理部12は、ウェアレベリング処理を取り消してもよい。システム管理部12は、割り当てエラー処理後、ステップS1601に進む。
【0115】
1.8.2 第2変形例
次に、第1実施形態の第2変形例について説明する。第2変形例では、第1実施形態及び第1実施形態の第1変形例と異なるターゲット論理デバイスLDの選択の一例について説明する。図17は、ターゲット論理デバイスLDの選択を説明する図である。
【0116】
図17に示すように、システム管理部12は、システムデコーダ11に関連付けられたインターリーブセットISをスワップしてもよい。より具体的には、例えば、制御部10は、2つのシステムデコーダ11_0及び11_1を含む。以下、システムデコーダ11_0をシステムデコーダ#0と表記する。システムデコーダ11_1をシステムデコーダ#1と表記する。例えば、インターリーブセットIS#0は、システムデコーダ#0に関連付けられる。システムデコーダ#0は、インターリーブセットIS#0に対応する論理デバイスLD0と接続される。インターリーブセットIS#1は、システムデコーダ#1に関連付けられる。システムデコーダ#1は、インターリーブセットIS#1の論理デバイスLD4及びLD5に接続される。この状態において、例えば、インターリーブセットIS#0のウェアレベリングが実行され、インターリーブセットIS#0は、疲弊蓄積量が比較的少ないインターリーブセットIS#1とスワップされる。すなわち、インターリーブセットIS#0は、システムデコーダ#1に関連付けられる。インターリーブセットIS#1は、システムデコーダ#0に関連付けられる。この結果、システムデコーダ#0は、インターリーブセットIS#1に対応する論理デバイスLD4及びLD5と接続される。システムデコーダ#1は、インターリーブセットIS#0に対応する論理デバイスLD0と接続される。
【0117】
1.8.3 第3変形例
次に、第1実施形態の第3変形例について説明する。第3変形例では、メモリシステム3が電源断保護(PLP: Power-Loss Protection)機能を有する場合の一例について説明する。図18は、データ処理装置1の全体構成を示すブロック図である。
【0118】
図18に示すように、メモリシステム3は、制御部10、複数のメモリモジュール20、電源制御部25、キャパシタ26、及び不揮発性メモリ27を含む。制御部10及びメモリモジュール20の構成は、第1実施形態と同様である。
【0119】
電源制御部25は、メモリシステム3における電源供給を制御する。電源制御部25は、制御部10及び不揮発性メモリ27に電源を供給する。電源制御部25は、電源断を検知すると、制御部10に電源断検知を通知し、キャパシタ26からの電力供給に自動的に切り替える。
【0120】
キャパシタ26は、電源断に備えて電荷を蓄積する容量素子である。キャパシタ26は電源断が発生した際に、電源制御部25の制御に基づいて、電源制御部25に電力を供給する。
【0121】
不揮発性メモリ27は、例えば、NAND型フラッシュメモリである。なお、不揮発性メモリ27は、ストレージクラスメモリ(SCM: Storage Class Memory)であってもよい。不揮発性メモリ27は、電源断が発生した際の退避データを記憶する。例えば、不揮発性メモリ27には、システム管理部12の制御に基づいて、バッファ14内の未書き込みデータ、各種テーブル及び情報等が記憶される。不揮発性メモリ27に退避されたデータは、電源復帰後に読み出され、電源断前の状態が復元される。
【0122】
1.8.4 第1乃至第3変形例に係る効果
第1乃至第3変形例に係る構成であれば、第1実施形態と同様の効果が得られる。
【0123】
第1実施形態の第1変形例に係る構成であれば、未使用の論理デバイスLDが無い場合においても、使用中のインターリーブセットISに対応する論理デバイスLDをターゲット論理デバイスLDとして選択できる。これにより、割り当てエラーの発生頻度を低減できる。
【0124】
第1実施形態の第2変形例に係る構成であれば、複数のシステムデコーダ11間でインターリーブセットISをスワップできる。これにより、使用頻度が高いシステムデコーダ11のインターリーブセットISを、疲弊蓄積量が比較的少ないインターリーブセットISと入れ替えることにより、疲弊蓄積量の偏りを平準化できる。
【0125】
第1実施形態の第3変形例に係る構成であれば、電源断が発生した場合においても、ウェアレベリングに関する情報の消失を抑制できる。
【0126】
2.第2実施形態
次に、第2実施形態について説明する。第2実施形態では、第1実施形態と異なるメモリシステム3の構成及びウェアレベリングの方法について説明する。以下、第1実施形態と異なる点を中心に説明する。
【0127】
2.1 メモリシステムの構成
まず、図19を参照して、メモリシステム3の構成の一例について説明する。図19は、データ処理装置1の全体構成を示すブロック図である。
【0128】
図19に示すように、メモリシステム3は、制御部40及び複数の第1メモリモジュール(記憶部)60及び複数の第2メモリモジュール(記憶部)61を含む。第1メモリモジュール60及び第2メモリモジュール61は、例えば、CXL2.0におけるCXLメモリに相当する。例えば、第1メモリモジュール60及び第2メモリモジュール61は、CXL2.0におけるType3デバイスである。図19の例では、メモリシステム3は、2つの第1メモリモジュール60_0及び60_1及び4つの第2メモリモジュール61_0~61_3を含む。
【0129】
第1メモリモジュール60は、比較的疲弊の耐久性が高い高Enduranceのメモリを有するメモリモジュールである。例えば、第1メモリモジュール60は、モジュール間ウェアレベリングにおけるデータの移動元の対象外とされる。なお、第1メモリモジュール60は、モジュール間ウェアレベリングにおけるデータの移動先として選択され得る。本実施形態では、第1メモリモジュール60がDRAM(Dynamic Random Access Memory)である場合について説明する。なお、第1メモリモジュール60は、DRAMに限定されない。以下、第1メモリモジュール60を、DRAMモジュール60とも表記する。第1メモリモジュール60及び60_1を限定する場合、DRAM#0モジュール60_0、及びDRAM#1モジュール60_1とそれぞれ表記する。なお、第1メモリモジュール60は、設けられていなくてもよい。
【0130】
第2メモリモジュール61は、第1メモリモジュール60よりも低Enduranceのメモリを有するメモリモジュールである。制御部40は、第2メモリモジュール61に対してモジュール間ウェアレベリングを実行する。本実施形態では、第2メモリモジュール61がストレージクラスメモリである場合について説明する。なお、第2メモリモジュール61は、ストレージクラスメモリに限定されない。例えば、第2メモリモジュール61は、第1実施形態のメモリモジュール20と同様にNAND型フラッシュメモリを搭載したSSDであってもよい。以下、第2メモリモジュール61をSCMモジュール61とも表記する。第2メモリモジュール61_0、61_1、61_2、及び61_3を限定する場合、SCM#0モジュール61_0、SCM#1モジュール61_1、SCM#2モジュール61_2、及びSCM#3モジュール61_3とそれぞれ表記する。
【0131】
SCMモジュール61は、ウェアレベリング(W/L)履歴情報管理部62及び疲弊カウンタ63を含む。
【0132】
ウェアレベリング履歴情報管理部62は、SCMモジュール61内で実行されたウェアレベリング(以下、「モジュール内ウェアレベリング」とも表記する)の履歴情報を管理する。例えば、ウェアレベリング履歴情報管理部62は、ウェアレベリング履歴情報を制御部40の移動先・移動元決定部44に送信する。
【0133】
疲弊カウンタ63は、SCMモジュール61の図示せぬメモリ領域における疲弊蓄積量をカウントする。疲弊カウンタ63は、疲弊蓄積量を制御部40のモジュール情報管理部43に送信する。
【0134】
制御部40は、CXL2.0におけるCXLスイッチに相当する。制御部40は、ホストデバイス2と第1メモリモジュール60と第2メモリモジュール61との接続を制御する。制御部10は、第1メモリモジュール60及び第2メモリモジュール61のメモリリソースの割り当てを制御する。制御部10は、1つのメモリモジュール20のメモリ領域を仮想的に分割できる。以下では、説明を簡略化するため、1つのSCMモジュール61が1つの論理デバイスLDに対応する場合について説明する。
【0135】
制御部40は、モジュール間ウェアレベリングを実行し得る。なお、本実施形態のモジュール間ウェアレベリングは、ページ単位で実行され得る。
【0136】
制御部40は、マッピング管理部41、モジュール間ウェアレベリング(W/L)制御部42、モジュール情報管理部43、移動先・移動元決定部44、及びバッファ45を含む。マッピング管理部41、モジュール間ウェアレベリング制御部42、モジュール情報管理部43、移動先・移動元決定部44、及びバッファ45は、内部バスを介して相互に接続される。なお、マッピング管理部41、モジュール間ウェアレベリング制御部42、モジュール情報管理部43、及び移動先・移動元決定部44は、制御部40内に設けられたCPU(Central Processing Unit)が実行するプログラムによってその機能が実現されてもよいし、個別の回路によって構成されてもよい。
【0137】
マッピング管理部41は、ホスト物理アドレスHPAと、これに対応するモジュール識別子及び論理アドレスとの組を示すマッピングテーブル51を管理する。すなわち、本実施形態の制御部40は、ホスト物理アドレスHPAを論理アドレスに変換して各モジュール(DRAMモジュール60及びSCMモジュール61)に送信する。各モジュールでは、論理アドレスがデバイス物理アドレスに変換される。
【0138】
モジュール間ウェアレベリング制御部42は、SCMモジュール61間の疲弊蓄積量の偏りを検知し、ウェアレベリング及びこれに対応するマッピング更新処理を実行する。
【0139】
モジュール情報管理部43は、各SCMモジュール61の疲弊蓄積量、記憶容量、ウェアレベリング周期、及びウェアレベリング粒度に関するモジュール管理情報52を管理する。
【0140】
移動先・移動元決定部44は、モジュール管理情報52及び各SCMモジュール61のウェアレベリング履歴情報に基づいて、ウェアレベリングにおける移動元ページ及び移動先ページを決定する。
【0141】
バッファ45は、揮発性メモリである。例えば、バッファ45は、SRAMである。バッファ45は、データを一時的に記憶する。バッファ14は、マッピングテーブル51及びモジュール管理情報52を記憶する。また、バッファ45は、各SCMモジュール61から受信したウェアレベリング履歴情報を記憶し得る。
【0142】
2.2 マッピングテーブルの具体例
次に、図20を参照して、マッピングテーブル51の具体例について説明する。図20は、マッピングテーブル51の具体例を示すテーブルである。
【0143】
図20に示すように、マッピングテーブル51の各エントリには、インデックス、モジュール識別子、及び論理アドレスが記憶される。インデックスは、ホスト物理アドレスHPAに対応する。例えば、ホスト物理アドレスHPAが0x3e5268cdである場合、インデックスは、0x3e5268とされる。モジュール識別子は、DRAMモジュール60及びSCMモジュール61のいずれか1つを特定する識別子である。例えば、モジュール識別子22がSCM#2モジュール61_2に対応する場合、SCM#2モジュール61_2に、インデックス0x3e5268に関連付けられた論理アドレス0x1234が送信される。
【0144】
2.3 モジュール管理情報の具体例
次に、図21を参照して、モジュール管理情報52の具体例について説明する。図21は、モジュール管理情報52の具体例を示すテーブルである。
【0145】
図21に示すように、モジュール管理情報52は、SCMモジュール61毎に疲弊蓄積量、記憶容量、ウェアレベリング周期(W/L周期)、ウェアレベリング粒度(W/L粒度)に関する情報を含む。ウェアレベリング周期はモジュール内ウェアレベリングの周期である。ウェアレベリング粒度は、モジュール内ウェアレベリングにおけるコピーデータサイズである。図21の例では、SCM#0モジュール61_0の疲弊蓄積量は1000である。記憶容量は1TBである。ウェアレベリング周期は1000である。そして、ウェアレベリング粒度は、1KBである。また、SCM#1モジュール61_1の疲弊蓄積量は、30である。記憶容量は1TBである。ウェアレベリング周期は300である。そして、ウェアレベリング粒度は、4KBである。SCM#2モジュール61_2の疲弊蓄積量は、5000である。記憶容量は1TBである。ウェアレベリング周期は2000である。そして、ウェアレベリング粒度は、128Bである。SCM#3モジュール61_3の疲弊蓄積量は、2500である。記憶容量は1TBである。ウェアレベリング周期は5000である。そして、ウェアレベリング粒度は、128Bである。なお、図21の例では、モジュール管理情報52が、SCMモジュール61毎に疲弊蓄積量に関する情報を有する場合について説明したが、これに限定されない。モジュール管理情報52は、ページ毎に疲弊蓄積量に関する情報を有していてもよい。
【0146】
2.4 ウェアレベリング履歴情報の具体例
次に、図22を参照して、ウェアレベリング履歴情報の具体例について説明する。図22は、ウェアレベリング履歴情報の具体例を示すテーブルである。図22の例は、1つのSCMモジュール61のウェアレベリング履歴情報を示す。
【0147】
図22に示すように、ウェアレベリング履歴情報は、SCMモジュール61で実行されたモジュール内ウェアレベリングに対応してエントリが生成される。例えば、ウェアレベリング履歴情報のエントリ数は、SCMモジュール61で実行されたモジュール内ウェアレベリングの実行回数と同じである。各エントリには、モジュール内ウェアレベリングが実行されたページの論理アドレスが記録される。すなわち、ウェアレベリング履歴情報は、ウェアレベリングが実行された論理アドレスのリストである。各モジュールのウェアレベリング履歴情報管理部62は、ウェアレベリング履歴情報として論理アドレスを記憶することにより、制御部40のモジュール情報管理部43とアドレス情報を共有しやすくなる。図22の例では、N個(Nは0以上の整数)エントリ0~(N-1)が生成されている。例えば、エントリ0の論理アドレスは0x100である。エントリ1の論理アドレスは0x002である。エントリN-1の論理アドレスは0x356である。
【0148】
なお、ウェアレベリング履歴情報は、ウェアレベリングが実行された時間に関するタイムスタンプを記憶しておいてもよい。この場合、モジュール間ウェアレベリングの移動元ページは、モジュール内ウェアレベリングが実行された時間的局所性を考慮して選択されてもよい。すなわち、比較的短時間に集中してウェアレベリングが繰り替えされたSCMモジュール61のページが移動元ページとして選択されてもよい。
【0149】
2.5 ウェアレベリングにおけるデータ移動の流れ
次に、図23を参照して、ウェアレベリングにおけるデータ移動の流れの一例について説明する。図23は、ウェアレベリングにおけるデータ移動を示すフローチャートである。
【0150】
図23に示すように、移動先・移動元決定部44は、モジュール情報管理部43から各SCMモジュール61の疲弊蓄積量に関する情報を取得する(S2101)。
【0151】
移動先・移動元決定部44は、モジュール間で疲弊蓄積量に偏りがあるか確認する(S2102)。すなわち、移動先・移動元決定部44は、各SCMモジュール61の疲弊蓄積量のばらつきが予め設定された閾値以上であるか確認する。
【0152】
疲弊蓄積量に偏りがない場合(S2102_No)、移動先・移動元決定部44は、ステップS2101に進む。また、疲弊蓄積量に偏りがある場合(S2102_Yes)、移動先・移動元決定部44は、各SCMモジュール61からウェアレベリング履歴情報を取得する(S2103)。すなわち、移動先・移動元決定部44は、疲弊蓄積量の偏りを検知すると、各SCMモジュール61からウェアレベリング履歴情報を取得する。
【0153】
次に、移動先・移動元決定部44は、モジュール情報管理部43から各SCMモジュール61のウェアレベリング周期及びウェアレベリング粒度に関する情報を取得する(S2104)。モジュール情報管理部43は、移動先・移動元決定部44に、モジュール管理情報52のウェアレベリング周期及びウェアレベリング粒度などに関する情報を送信する。
【0154】
移動先・移動元決定部44は、ウェアレベリング履歴情報及びモジュール管理情報52に基づいて、移動元ページを決定する(S2105)。例えば、移動先・移動元決定部44は、疲弊蓄積量の最も多いSCMモジュール61を移動元のSCMモジュール61として選択する。そして、移動先・移動元決定部44は、ウェアレベリング履歴情報を参照して、ウェアレベリングの実行回数が多い論理アドレスに対応するページを移動元ページとして選択する。
【0155】
次に、移動先・移動元決定部44は、ウェアレベリング履歴情報及びモジュール管理情報52に基づいて、移動先ページを決定する(S2106)。例えば、移動先・移動元決定部44は、疲弊蓄積量の比較的少ないSCMモジュール61のページを移動先ページとして選択する。
【0156】
移動先・移動元決定部44は、モジュール管理情報52に基づいて、モジュール間ウェアレベリングのデータ移動の粒度を決定する(S2107)。例えば、移動先・移動元決定部44は、移動元のSCMモジュール61及び移動先のSCMモジュール61のそれぞれのウェアレベリング粒度と制御部40のマッピングテーブル51におけるマッピング管理粒度との最小公倍数をデータ移動の粒度として決定する。
【0157】
モジュール間ウェアレベリング制御部42は、移動元ページのデータと、移動先ページのデータとを入れ替える(S2108)。モジュール間ウェアレベリング制御部42は、データ移動の粒度に合わせてデータの入れ替えを実行する。なお、移動先ページにデータが記憶されていない場合、モジュール間ウェアレベリング制御部42は、移動元ページのデータを、移動先ページにコピーする。
【0158】
マッピング管理部は、データの入れ替えに対応して、マッピングテーブルを変更する(S2109)。
【0159】
2.6 移動元ページ決定の流れ
次に、図24を参照して、図23のステップS2105において説明した移動元ページ決定の流れの一例について説明する。図24は、移動元ページ決定のフローチャートである。
【0160】
図24に示すように、移動先・移動元決定部44は、各SCMモジュール61の疲弊蓄積量を比較して、移動元のSCMモジュール61を決定する(S2201)。移動先・移動元決定部44は、疲弊蓄積量の最も多いSCMモジュール61を、移動元のSCMモジュール61として選択する。
【0161】
移動先・移動元決定部44は、移動元のSCMモジュール61のウェアレベリング履歴情報を参照し、ウェアレベリング履歴情報に頻出するページの論理アドレスとウェアレベリング回数を抽出する(S2202)。例えば、ウェアレベリング回数は、ウェアレベリング履歴情報に、同一の論理アドレスが出現した回数である。
【0162】
移動先・移動元決定部44は、抽出した論理アドレスの書き込み量を算出する(S2203)。例えば、移動先・移動元決定部44は、ウェアレベリング回数とウェアレベリング周期との積を書き込み量として算出する。なお、本実施形態では、書き込み量を算出する場合について説明するがこれに限定されない。例えば、論理アドレス毎に読み出し動作あるいは消去処理に基づく疲弊蓄積量を算出し、これに基づいて移動元ページ及び移動先ページを選択してもよい。
【0163】
書き込み量が予め設定された第1閾値よりも大きい場合(S2204_Yes)、移動先・移動元決定部44は、抽出した論理アドレスに対応するページを移動元ページとして選択する(S2205)。換言すれば、移動先・移動元決定部44は、書き込み量が第1閾値よりも大きいページを、移動元ページとして選択する。
【0164】
書き込み量が予め設定された第1閾値以下である場合(S2204_No)、移動先・移動元決定部44は、ウェアレベリング履歴情報に記載の論理アドレス以外の論理アドレスに対応するページを移動元ページとして選択する(S2206)。なお、移動先・移動元決定部44は、移動元ページとして、ウェアレベリング履歴情報に含まれる論理アドレスに対応するページを選択してもよい。
【0165】
2.7 移動先ページ決定の流れ
次に、図25を参照して、図23のステップS2106において説明した移動先ページ決定の流れの一例について説明する。図25は、移動先ページ決定のフローチャートである。
【0166】
図25に示すように、移動先・移動元決定部44は、移動元のSCMモジュール61のウェアレベリング履歴情報を参照し、ウェアレベリング履歴情報に頻出するページの論理アドレスとウェアレベリング回数とを抽出する(S2301)。なお、ステップS2301における動作は、図24を用いて説明したステップS2202におけると同様である。このため、例えば、図24のステップS2202が先に実行され、論理アドレス及びウェアレベリング回数の抽出結果がバッファ45等に記憶済みである場合、移動先・移動元決定部44は、ステップS2301において、抽出結果を参照し、移動元のSCMモジュール61を参照する動作を省略してもよい。
【0167】
移動先・移動元決定部44は、抽出した論理アドレスの書き込み量を算出する(S2302)。例えば、移動先・移動元決定部44は、ウェアレベリング回数とウェアレベリング周期との積を書き込み量として算出する。なお、ステップS2302における動作は、図24を用いて説明したステップS2203におけると同様である。このため、例えば、図24のステップS2203が先に実行され、書き込み量の算出結果がバッファ45等に記憶済みである場合、移動先・移動元決定部44は、ステップS2302において、算出結果を参照し、書き込み量の演算処理を省略してもよい。
【0168】
書き込み量が予め設定された第2閾値よりも大きい場合(S2303_Yes)、移動先・移動元決定部44は、移動先としてDRAMモジュール60を選択する(S2204)。第2閾値は第1閾値よりも大きい閾値である。例えば、移動先・移動元決定部44は、書き込み量が第2閾値よりも大きい場合、アクセスが集中して疲弊蓄積量の増加が顕著であると判断して、移動先に高EnduranceのDRAMモジュール60(第1メモリモジュール60)を選択する。
【0169】
移動先・移動元決定部44は、データを追い出す追い出しアルゴリズムに基づいて、移動先ページを決定する(S2305)。例えば、追い出しアルゴリズムには、LRU(Least Recently Used)方式、LFU(Least Frequency Used)等がある。LRU方式は、最も長い時間参照されていないページのデータを追い出す方式である。LFU方式は、最も使用頻度が低いページのデータを追い出す方式である。なお、追い出しアルゴリズムには、他の方式が用いられてもよい。
【0170】
また、書き込み量が予め設定された第2閾値以下である場合(S2303_No)、移動先・移動元決定部44は、疲弊蓄積量が最も少ないSCMモジュール61を移動先として選択する(S2306)。
【0171】
移動先・移動元決定部44は、選択したSCMモジュール61のウェアレベリング履歴情報に記載されていない論理アドレスの中からランダムに移動先ページを選択する(S2307)。なお、移動先ページの選択はランダムでなくてもよい。予め選択順序が決まっていてもよい。
【0172】
2.8 本実施形態に係る効果
本実施形態に係る構成であれば、メモリシステム3は、メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減できる。本効果につき、詳述する。
【0173】
例えば、複数のメモリモジュール間でのウェアレベルを実行する場合、アクセス量が比較的多いホットページの検出、すなわちウェアレベリングの移動元ページの決定には膨大なメモリリソースが必要となる。例えば、4096GBの記憶容量を有するSCMモジュールの場合、論理アドレス毎にアクセス数をカウントするアクセスカウンタテーブルのデータ量は、32GBに達する。メモリモジュールの記憶容量の増加にともない、アクセスカウンタテーブルのデータ量は増加する。
【0174】
これに対し、本実施形態に係る構成であれば、制御部40は、メモリモジュール毎に実行されるモジュール内ウェアレベリングの履歴情報と、モジュール管理情報52とを用いてモジュール間ウェアレベリングを実行できる。よって、アクセスカウンタテーブルを省略できる。各メモリモジュール61のウェアレベリング履歴情報を用いることにより、ウェアレベリングの移動元ページの決定に必要なメモリリソース量を低減できる。よって、メモリシステム3は、メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減できる。
【0175】
2.9 第2実施形態の変形例
次に、第2実施形態について5つの変形例を説明する。以下、第2実施形態と異なる点を中心に説明する。
【0176】
2.9.1 第1変形例
まず、第2実施形態の第1変形例について説明する。第1変形例では、ウェアレベリング履歴情報にタイムスタンプが含まれる場合について説明する。図26は、ウェアレベリング履歴情報の具体例を示すテーブルである。以下、第2実施形態の図22と異なる点について説明する。
【0177】
図26に示すように、ウェアレベリング履歴情報の各エントリには、モジュール内ウェアレベリングが実行されたページの論理アドレス及びタイムスタンプが記録される。図26の例では、N個(Nは0以上の整数)エントリ0~(N-1)が生成されている。例えば、エントリ0のタイムスタンプは0である。エントリ1のタイムスタンプは100である。エントリN-1のタイムスタンプは5020である。エントリ1及びエントリN-1のタイムスタンプは、エントリ0のウェアレベリングが実行されてからエントリに対応するウェアレベリングが実行されるまでの経過時間を示す。
【0178】
ウェアレベリング履歴情報にタイムスタンプの情報が含まれている場合、第2実施形態の図24を用いて説明した移動元ページ決定の流れにおいて、タイムスタンプを考慮した移動元ページの選択ができる。例えば、図24のステップS2202において、移動先・移動元決定部44は、ウェアレベリング履歴情報に出現する論理アドレスのウェアレベリング回数をカウントする際に、同一論理アドレスに対するウェアレベリングの時間間隔が予め設定された閾値以上である場合にはカウントしない、等の時間的局所性を考慮したカウントができる。
【0179】
2.9.2 第2変形例
次に、第2実施形態の第2変形例について説明する。第2変形例では、SCMモジュール61内で、ホットページを判別し、制御部40に、ホットページの論理アドレスリストを送信する場合について説明する。
【0180】
2.9.2.1 論理アドレスリストの具体例
まず、図27を参照して、論理アドレスリストの具体例について説明する。図27は、論理アドレスリストの具体例を示すテーブルである。
【0181】
本実施形態の各SCMモジュールのウェアレベリング履歴情報管理部62は、ウェアレベリング履歴情報に基づいて、論理アドレスリストを生成する。論理アドレスリストは、モジュール内ウェアレベリングが実行された論理アドレス毎にウェアレベリング回数をカウントしたリストである。ウェアレベリング履歴情報管理部62は、論理アドレスリストを参照して、ウェアレベリング回数の多いページを、書き込み動作及び読み出し動作が頻繁に実行された(すなわち、書き込み量が多い)ホットページとして判別し得る。換言すれば、論理アドレスリストは、ホットページのリストである。
【0182】
図27に示すように、論理アドレスリストの各エントリには、モジュール内ウェアレベリングが実行されたページの論理アドレス及び当該論理アドレスのウェアレベリング回数が記録される。図27の例では、N個(Nは0以上の整数)エントリ0~(N-1)が生成されている。例えば、エントリ0の論理アドレス0x100におけるウェアレベリング回数は10回である。エントリ1の論理アドレス0x002におけるウェアレベリング回数は1回である。エントリN-1の論理アドレス0x356におけるウェアレベリング回数は4回である。
【0183】
2.9.2.2 ウェアレベリングにおけるデータ移動の流れ
次に、図28を参照して、ウェアレベリングにおけるデータ移動の流れの一例について説明する。図28は、ウェアレベリングにおけるデータ移動を示すフローチャートである。以下、第2実施形態の図23と異なる点について説明する。
【0184】
図28に示すように、ステップS2101及びS2102は、図23と同様である。
【0185】
疲弊蓄積量に偏りがある場合(S2102_Yes)、移動先・移動元決定部44は、各SCMモジュール61からホットページの論理アドレスリストを取得する(S2120)。
【0186】
ステップS2104は、図23と同様である。
【0187】
移動先・移動元決定部44は、論理アドレスリスト及びモジュール管理情報52に基づいて、移動元ページを決定する(S2121)。例えば、移動先・移動元決定部44は、モジュール管理情報52に基づいて、疲弊蓄積量の最も多いSCMモジュール61を移動元のSCMモジュール61として選択する。そして、移動先・移動元決定部44は、選択したSCMモジュール61の論理アドレスリストを参照して、ウェアレベリングの実行回数が多い論理アドレスに対応するページを移動元ページとして選択する。
【0188】
次に、移動先・移動元決定部44は、論理アドレスリスト及びモジュール管理情報52に基づいて、移動先ページを決定する(S2122)。例えば、移動先・移動元決定部44は、疲弊蓄積量の比較的少ないSCMモジュール61のウェアレベリングの実行回数が比較的少ないページを移動先ページとして選択する。
【0189】
2.9.2.3 移動元ページ決定の流れ
次に、図29を参照して、移動元ページ決定の流れの一例について説明する。図29は、移動元ページ決定のフローチャートである。以下、第2実施形態の図24と異なる点を中心に説明する。
【0190】
図29に示すように、ステップS2201は、図24と同様である。
【0191】
移動元のSCMモジュールを決定した後、移動先・移動元決定部44は、移動元のSCMモジュール61の論理アドレスリストを参照し、ウェアレベリング履歴情報に頻出するページの論理アドレスとウェアレベリング回数を抽出する(S2202)。
【0192】
移動先・移動元決定部44は、図24と同様に、抽出した論理アドレスの書き込み量を算出する(S2203)。
【0193】
書き込み量が予め設定された第1閾値よりも大きい場合(S2204_Yes)、図24と同様に、移動先・移動元決定部44は、抽出した論理アドレスに対応するページを移動元ページとして選択する(S2205)。
【0194】
書き込み量が予め設定された第1閾値以下である場合(S2204_No)、移動先・移動元決定部44は、論理アドレスリストに記載の論理アドレス以外の論理アドレスに対応するページを移動元ページとして選択する(S2206)。なお、移動先・移動元決定部44は、移動元ページとして、論理アドレスリストに含まれる論理アドレスに対応するページを選択してもよい。
【0195】
2.9.2.4 移動先ページ決定の流れ
次に、図30を参照して、移動先ページ決定の流れの一例について説明する。図30は、移動先ページ決定のフローチャートである。以下、第2実施形態の図25と異なる点を中心に説明する。
【0196】
図30に示すように、移動先・移動元決定部44は、移動元のSCMモジュール61の論理アドレスリストを参照し、論理アドレスリストの先頭(エントリ0)から順に論理アドレス及びウェアレベリング回数を抽出する(S2320)。
【0197】
移動先・移動元決定部44は、図25と同様に、抽出した論理アドレスの書き込み量を算出する(S2302)。例えば、移動先・移動元決定部44は、ウェアレベリング回数とウェアレベリング周期との積を書き込み量として算出する。
【0198】
書き込み量が予め設定された第2閾値よりも大きい場合(S2303_Yes)、移動先・移動元決定部44は、図25と同様に、ステップS2304及びステップS2305を実行する。
【0199】
また、書き込み量が予め設定された第2閾値以下である場合(S2303_No)、移動先・移動元決定部44は、図25と同様に、疲弊蓄積量が最も少ないSCMモジュール61を移動先として選択する(S2306)。
【0200】
移動先・移動元決定部44は、選択したSCMモジュール61の論理アドレスリストに記載されていない論理アドレスの中からランダムに移動先ページを選択する(S2321)。なお、移動先ページの選択はランダムでなくてもよい。予め選択順序が決まっていてもよい。
【0201】
2.9.3 第3変形例
次に、第2実施形態の第3変形例について説明する。第3変形例では、高負荷のSCMモジュール61を移動先として選択しない場合について説明する。図31は、移動先ページ決定のフローチャートである。以下、第2実施形態の図25と異なる点を中心に説明する。
【0202】
図31に示すように、ステップS2301~S2106は、図25と同様である。
【0203】
移動先・移動元決定部44は、ステップS2106の後、選択したSCMモジュール61の負荷状況を確認する(S2330)。例えば、移動先・移動元決定部44は、各SCMモジュール61の使用帯域を監視したり、直近の読み出し要求に対してSCMモジュール61から返される応答に含まれる負荷情報(DevLoad)を取得したりすることでSCMモジュール61の負荷状況を把握する。
【0204】
SCMモジュール61の負荷が予め設定された第3閾値よりも小さい場合(S2330_Yes)、移動先・移動元決定部44は、図25と同様に、選択したSCMモジュール61のウェアレベリング履歴情報に記載されていない論理アドレスに対応するページの中からランダムに移動先ページを選択する(S2307)。なお、移動先ページの選択はランダムでなくてもよい。予め選択順序が決まっていてもよい。
【0205】
また、SCMモジュール61の負荷が予め設定された第3閾値以上である場合(S2330_No)、移動先・移動元決定部44は、他のSCMモジュール61を移動先として選択する(S2331)。すなわち、移動先・移動元決定部44は、負荷が高いSCMモジュール61を移動先として選択しない。
【0206】
2.9.4 第4変形例
次に、第2実施形態の第4変形例について説明する。第4変形例では、ヒット率が高いDRAMモジュール60を移動先として選択しない場合について説明する。ヒット率が高いDRAMモジュール60は、SCMモジュール61における疲弊蓄積量の増加抑制に寄与している。図32は、移動先ページ決定のフローチャートである。以下、第2実施形態の図25と異なる点を中心に説明する。
【0207】
図32に示すように、ステップS2301~S2103は、図25と同様である。
【0208】
書き込み量が予め設定された第2閾値よりも大きい場合(S2303_Yes)、移動先・移動元決定部44は、各DRAMモジュール60のヒット率(アクセス率)を確認する(S2340)。例えば、移動先・移動元決定部44は、対象となるDRAMモジュール60に対するアクセス数と、全てのDRAMモジュール60及びSCMモジュール61に対するアクセス数の合計との比から、ヒット率(アクセス率)を算出する。
【0209】
DRAMモジュール60のヒット率が予め設定された第4閾値よりも小さい場合(S2340_Yes)、移動先・移動元決定部44は、図25と同様に、移動先としてDRAMモジュール60を選択する(S2204)。
【0210】
移動先・移動元決定部44は、図25と同様に、データを追い出す追い出しアルゴリズムに基づいて、移動先ページを決定する(S2305)。
【0211】
また、書き込み量が予め設定された第2閾値以下である場合(S2303_No)またDRAMモジュール60のヒット率が第4閾値以上である場合(S2340_No)、移動先・移動元決定部44は、図25と同様に、疲弊蓄積量が最も少ないSCMモジュール61を移動先として選択する(S2306)。
【0212】
移動先・移動元決定部44は、図25と同様に、選択したSCMモジュール61のウェアレベリング履歴情報に記載されていない論理アドレスに対応するページの中からランダムに移動先ページを選択する(S2307)。
【0213】
2.9.5 第5変形例
次に、第2実施形態の第5変形例について説明する。第5変形例では、第2実施形態と異なるデータ処理装置1の構成の一例について説明する。図33は、データ処理装置1の全体構成を示すブロック図である。
【0214】
図33に示すように、ホストデバイス2に、マッピング管理部41、モジュール間ウェアレベリング制御部42、モジュール情報管理部43、及び移動先・移動元決定部44が設けられてもよい。他の構成は、図19と同様である。
【0215】
2.9.6 第1乃至第5変形例に係る効果
第1乃至第5変形例に係る構成であれば、第2実施形態と同様の効果が得られる。
【0216】
第2実施形態の第1変形例に係る構成であれば、ウェアレベリング履歴情報にタイムスタンプの情報を含むことができる。よって、移動元ページを決定する、タイムスタンプを考慮した移動元ページの選択ができる。
【0217】
第2実施形態の第2変形例に係る構成であれば、各SCMモジュール61のウェアレベリング履歴情報管理部62は、論理アドレスリストを生成できる。制御部40は、論理アドレスリストに基づいて、移動元ページを選択できる。
【0218】
第2実施形態の第3変形例に係る構成であれば、高負荷のSCMモジュール61を移動先から外すことができる。これにより、SCMモジュール61間において負荷を分散できる。
【0219】
第2実施形態の第4変形例に係る構成であれば、ヒット率が高いDRAMモジュール60を移動先から外すことができる。これにより、疲弊蓄積量の増加抑制に寄与している、ヒット率が高いDRAMモジュール60はそのままにして、SCMモジュール61における疲弊蓄積量の増加抑制にあまり寄与しないヒット率が低い他のDRAMモジュール60を選択できる。
【0220】
第2実施形態の第5変形例に係る構成であれば、ホストデバイス2がマッピング管理部41、モジュール間ウェアレベリング制御部42、モジュール情報管理部43、及び移動先・移動元決定部44の機能を有するができる。これにより、制御部40の回路規模を低減できる。
【0221】
3.第3実施形態
次に、第3実施形態について説明する。第3実施形態では、第1及び第2実施形態と異なるメモリシステム3の構成及びウェアレベリングの方法について説明する。以下、第1及び第2実施形態と異なる点を中心に説明する。
【0222】
3.1 メモリシステムの構成
まず、図34を参照して、メモリシステム3の構成の一例について説明する。図34は、データ処理装置1の全体構成を示すブロック図である。
【0223】
図34に示すように、メモリシステム3は、制御部70及び複数のメモリモジュール(記憶部)90を含む。例えば、メモリモジュール90は、CXL2.0におけるType3デバイスである。図34の例では、メモリシステム3は、4つのメモリモジュール90_0~90_3を含む。以下の説明では、メモリモジュールを単に「モジュール」とも表記する。
【0224】
制御部70は、CXL2.0におけるCXLスイッチに相当する。制御部70は、ホストデバイス2とメモリモジュール90との接続を制御する。制御部70は、ホストデバイス2に対するメモリモジュール90のメモリリソースの割り当てを制御する。
【0225】
制御部70は、1つのメモリモジュール90のメモリ領域を仮想的に分割できる。制御部70は、分割したメモリ領域の各々を1つの「論理デバイス」として管理する。制御部70は、インターリーブ機能を有する。制御部70は、モジュール間ウェアレベリングを実行し得る。
【0226】
制御部70は、システムデコーダ71、マッピング管理部72、モジュール間ウェアレベリング制御部73、及びバッファ74を含む。システムデコーダ71、マッピング管理部72、モジュール間ウェアレベリング制御部73、及びバッファ74は、内部バスを介して相互に接続される。なお、システムデコーダ71、マッピング管理部72、及びモジュール間ウェアレベリング制御部73は、制御部70内に設けられたCPU(Central Processing Unit)が実行するプログラムによってその機能が実現されてもよいし、個別の回路によって構成されてもよい。
【0227】
システムデコーダ71は、CXL2.0におけるHDM(Host-managed Device Memory)デコーダに相当する。本実施形態のシステムデコーダ71は、第1実施形態と同様に、ホスト物理アドレスHPAを論理アドレスに変換しない。すなわち、制御部70は、ホスト物理アドレスHPAをメモリモジュール90にそのまま送信する。
【0228】
マッピング管理部72は、データ移動処理部75、コピー状態管理部76、及びインターリーブ設定管理部77を含む。
【0229】
データ移動処理部75は、ウェアレベリングにおけるデータ移動を処理する。本実施形態では、ウェアレベリングにおけるデータ移動には、コピーオンライト処理が適用される。
【0230】
コピー状態管理部76は、コピー状態テーブル81を管理する。コピー状態テーブル81は、第1実施形態のコピー状態テーブル33と同様に、コピーオンライト処理におけるデータのコピー状態に関するテーブルである。コピー状態管理部76は、データがコピー(書き込み動作が実行)された際に、コピー状態テーブル81を更新する。
【0231】
インターリーブ設定管理部77は、インターリーブ設定情報82を管理する。インターリーブ設定情報82は、第1実施形態のインターリーブ設定情報32と同様に、インターリーブ数IW、対象となる論理デバイスへのデータの割り当て順序、及びインターリーブ粒度IGに関する情報を含む。インターリーブ設定管理部77は、ウェアレベリングの際に、インターリーブ設定情報82を更新する。
【0232】
モジュール間ウェアレベリング制御部73は、モジュール間ウェアレベリングを制御する。モジュール間ウェアレベリング制御部73は、モジュール情報管理部78及び移動先・移動元決定部79を含む。
【0233】
モジュール情報管理部78は、第2実施形態のモジュール情報管理部43と同様である。モジュール情報管理部78は、各メモリモジュール90(論理デバイスLD)の疲弊蓄積量、記憶容量、ウェアレベリング周期、及びウェアレベリング粒度に関するモジュール管理情報83を管理する。
【0234】
移動先・移動元決定部79は、第2実施形態の移動先・移動元決定部44と同様である。移動先・移動元決定部79は、モジュール管理情報83及び各メモリモジュール90のウェアレベリング履歴情報に基づいて、ウェアレベリングにおける移動元ページ及び移動先ページを決定する。
【0235】
バッファ74は、揮発性メモリである。例えば、バッファ74は、SRAMである。バッファ74は、コピー状態テーブル81、インターリーブ設定情報82、及びモジュール管理情報83を記憶する。また、バッファ74は、各メモリモジュール90から受信したウェアレベリング履歴情報を記憶し得る。
【0236】
次に、メモリモジュール90の構成について説明する。メモリモジュール90は、CXL2.0におけるCXLメモリに相当する。例えば、メモリモジュール90は、CXL2.0におけるType3デバイスである。メモリモジュール90は、記憶媒体(半導体記憶装置)である。メモリモジュール90は、揮発性の記憶媒体であってもよいし、不揮発の記憶媒体であってもよい。また、各メモリモジュール90の構成は異なっていてもよい。以下では、メモリモジュール90_0~90_3が、低Enduranceである場合について説明する。メモリモジュール90は、第1実施形態のメモリモジュール20あるいは、第2実施形態の第2メモリモジュール61に相当する。制御部70は、メモリモジュール90_0~90_3に対してモジュール間ウェアレベリングを実行し得る。
【0237】
メモリモジュール90は、ウェアレベリング制御部91及びメモリ92を含む。
【0238】
ウェアレベリング制御部91は、モジュール内ウェアレベリングを制御する。ウェアレベリング制御部91は、ウェアレベリング履歴情報管理部93を含む。
【0239】
ウェアレベリング履歴情報管理部93は、第2実施形態のウェアレベリング履歴情報管理部62と同様である。ウェアレベリング履歴情報管理部93は、メモリモジュール90内で実行されたモジュール内ウェアレベリングの履歴情報を管理する。例えば、ウェアレベリング履歴情報管理部93は、ウェアレベリング履歴情報を制御部70の移動先・移動元決定部79に送信する。なお、本実施形態では、メモリモジュール90は、制御部70からホスト物理アドレスHPAを受信するため、ウェアレベリング履歴情報は、第2実施形態の図22で説明した論理アドレスの替わりにホスト物理アドレスHPAの情報を含む。
【0240】
メモリ92は、例えば、複数のNAND型フラッシュメモリを含む。
【0241】
3.2 ウェアレベリングにおけるデータ移動の流れ
次に、図35を参照して、ウェアレベリングにおけるデータ移動の流れの一例について説明する。図35は、ウェアレベリングにおけるデータ移動を示すフローチャートである。
【0242】
図35に示すように、移動先・移動元決定部79は、モジュール情報管理部78から各メモリモジュール90の疲弊蓄積量に関する情報を取得する(S3101)。モジュール情報管理部78は、移動先・移動元決定部79に、モジュール管理情報83の疲弊蓄積量に関する情報を送信する。
【0243】
移動先・移動元決定部79は、モジュール間で疲弊蓄積量に偏りがあるか確認する(S3102)。すなわち、移動先・移動元決定部79は、各メモリモジュール90の疲弊蓄積量のばらつきが予め設定された閾値以上であるか確認する。なお、移動先・移動元決定部79は、メモリモジュール90が複数の論理デバイスLDに仮想的に分割されている場合、論理デバイスLD間で疲弊蓄積量に偏りがあるか確認してもよい。
【0244】
疲弊蓄積量に偏りがない場合(S3102_No)、移動先・移動元決定部79は、ステップS3101に進む。また、疲弊蓄積量に偏りがある場合(S3102_Yes)、移動先・移動元決定部79は、各メモリモジュール90からウェアレベリング履歴情報を取得する(S3103)。
【0245】
次に、移動先・移動元決定部79は、モジュール情報管理部78から各メモリモジュール90のウェアレベリング周期及びウェアレベリング粒度に関する情報を取得する(S3104)。モジュール情報管理部78は、移動先・移動元決定部79に、モジュール管理情報83のウェアレベリング周期及びウェアレベリング粒度などに関する情報を送信する。
【0246】
移動先・移動元決定部79は、ウェアレベリング履歴情報、モジュール管理情報83、及びインターリーブ設定情報82に基づいて、移動元のインターリーブセットISを決定する(S3105)。例えば、移動先・移動元決定部79は、疲弊蓄積量の比較的多いメモリモジュール90の論理デバイスLDに対応するインターリーブセットISを移動元のインターリーブセットISとして選択する。
【0247】
移動先・移動元決定部79は、移動先のインターリーブ数IW及びインターリーブ粒度IGを決定する(S3106)。インターリーブ数IW及びインターリーブ粒度IGの決定方法は、第1実施形態と同様である。
【0248】
移動先・移動元決定部79は、モジュール管理情報(疲弊蓄積量)84に基づいて、移動先のインターリーブセットISを構成するターゲット論理デバイスLDを選択する(S3107)。例えば、ターゲット論理デバイスLDの選択の流れは、第1実施形態と同様である。
【0249】
移動先・移動元決定部79は、インターリーブ設定情報82の移動元(更新前)のインターリーブセットISを退避させる(S3108)。例えば、移動先・移動元決定部79は、インターリーブ設定情報82の移動元(更新前)のインターリーブセットISを、別のメモリ領域に退避する。
【0250】
移動先・移動元決定部79は、コピー状態テーブル81のコピーステータスを初期化する(S3109)。より具体的には、移動先・移動元決定部79は、移動元のインターリーブセットISに対応するコピーフラッグをオール“0”状態とする。
【0251】
移動先・移動元決定部79は、インターリーブ設定情報82を移動先のインターリーブセットISに更新する(S3110)。より具体的には、移動先・移動元決定部79は、インターリーブ設定情報82を、S3106及びS3107において決定したインターリーブ数IW、インターリーブ粒度IG、及びターゲット論理デバイスLDに更新する。例えば、移動先・移動元決定部79は、更新したインターリーブ設定情報82を、システムデコーダ71に送信する。
【0252】
移動先・移動元決定部79は、移動先のインターリーブセットISに対応する論理デバイスLDに更新後のインターリーブセットISを送信し、論理デバイスLDに関するインターリーブ設定を更新する(S1111)。
【0253】
3.3 移動元のインターリーブセット選択の具体例
次に、図35のステップS3105において説明した移動元のインターリーブセットISの選択の具体例について説明する。
【0254】
3.3.1 第1具体例
まず、図36を参照して、第1具体例について説明する。図36は、移動元のインターリーブセットISの選択の第1具体例を説明する図である。
【0255】
図36に示すように、移動先・移動元決定部79は、ウェアレベリング履歴情報を参照して、ホットページを検出する。そして、移動先・移動元決定部79は、ホットページが存在するインターリーブセットISを移動元として選択する。図36の例では、インターリーブセットIS#0に対応する論理デバイスLDにホットページが含まれる。このため、移動先・移動元決定部79は、移動元として、インターリーブセットIS#0を選択する。
【0256】
3.3.2 第2具体例
次に、図37を参照して、第2具体例について説明する。図37は、移動元のインターリーブセットISの選択の第2具体例を説明する図である。
【0257】
図37に示すように、例えば、複数のホットページが存在する場合、移動先・移動元決定部79は、ホットページ数の最も多いインターリーブセットISを移動元として選択する。図37の例では、インターリーブセットIS#0に対応する2つの論理デバイスLDに、ホットページが2個ずつ含まれる。すなわち、インターリーブセットIS#0に対するホットページ数は4である。インターリーブセットIS#1に対応する2つの論理デバイスLDに、ホットページが1個ずつ含まれる。すなわち、インターリーブセットIS#1に対するホットページ数は2である。インターリーブセットIS#2に対応する1つの論理デバイスLDに、ホットページが3個含まれる。すなわち、インターリーブセットIS#2に対するホットページ数は3である。このため、移動先・移動元決定部79は、最もホットページ数の多いインターリーブセットIS#0を、移動元として選択する。
【0258】
なお、各ホットページの書き込み量も考慮して移動先のインターリーブセットISが選択されてもよい。
【0259】
3.3.3 第3具体例
次に、図38を参照して、第3具体例について説明する。図38は、移動元のインターリーブセットISの選択の第3具体例を説明する図である。
【0260】
図38に示すように、例えば、複数のホットページが存在する場合、移動先・移動元決定部79は、論理デバイスLDに含まれるホットページ数の最も多いインターリーブセットISを移動元として選択する。図38の例では、インターリーブセットIS#0に対応する2つの論理デバイスLDの最大ホットページ数は2である。インターリーブセットIS#1に対応する2つの論理デバイスLDの最大ホットページは1である。インターリーブセットIS#2に対応する1つの論理デバイスLDの最大ホットページは3である。このため、移動先・移動元決定部79は、論理デバイスLDあたりのホットページ数が最も多いインターリーブセットIS#2を、移動元として選択する。
【0261】
なお、各ホットページの書き込み量も考慮して移動先のインターリーブセットISが選択されてもよい。
【0262】
3.4 ターゲット論理デバイス選択の具体例
次に、図35のステップS3107において説明したターゲット論理デバイスLDの選択の具体例について説明する。
【0263】
3.4.1 第1具体例
まず、図39を参照して、第1具体例について説明する。図39は、ターゲット論理デバイスLDの選択の第1具体例を説明する図である。
【0264】
図39に示すように、移動先・移動元決定部79は、予めいずれのインターリーブセットISにも割り当てられていない空き状態の論理デバイスLDをプールしておく。移動先・移動元決定部79は、空き状態の論理デバイスLDのプール(以下、「空きLDプール」とも表記する)の中から、疲弊蓄積量の少ない論理デバイスLDを優先して選択する。図39の例では、空きLDプールの中に6つの論理デバイスLDがプールされている。6つの論理デバイスLDの疲弊蓄積量は、図39の紙面左側から順に1、20、10、8、40、及び13である。移動先のインターリーブセットISのインターリーブ数IWは、4である。このため、移動先・移動元決定部79は、疲弊蓄積量が少ない方から順に、疲弊蓄積量1の論理デバイスLD、疲弊蓄積量8の論理デバイスLD、疲弊蓄積量10の論理デバイスLD、及び疲弊蓄積量13論理デバイスLDを、ターゲット論理デバイスLDとして選択する。
【0265】
3.4.2 第2具体例
次に、図40を参照して、第2具体例について説明する。図40は、ターゲット論理デバイスLDの選択の第2具体例を説明する図である。
【0266】
図40に示すように、空きLDプールの論理デバイスLDが不足している場合、移動先・移動元決定部79は、使用中のインターリーブセットISのインターリーブ数IWを減少させて空き状態の論理デバイスLDを確保する。図40の例では、使用中のインターリーブセットISのインターリーブ数IWは、4である。移動先・移動元決定部79は、この使用中のインターリーブセットISのインターリーブ数IWを2に減少させて、2個の空き状態の論理デバイスLDを確保する。そして、移動先・移動元決定部79は、確保した2個の空き状態の論理デバイスLDを、ターゲット論理デバイスLDとして選択する。
【0267】
3.4.4 第3具体例
次に、図41を参照して、第3具体例について説明する。図41は、ターゲット論理デバイスLDの選択の第3具体例を説明する図である。
【0268】
図41に示すように、空きLDプールの空き状態の論理デバイスLDがホットページを含む場合、あるいは空き状態の論理デバイスLDの書き込み量が予め設定された閾値よりも大きい場合、移動先・移動元決定部79は、空きLDプールの論理デバイスLDを選択せずに、高耐久LDプールの中から空き状態の高Enduranceな論理デバイスLDを選択してもよい。高耐久LDプールは、空き状態の高Enduranceな論理デバイスLDのプールである。高Enduranceな論理デバイスLDは、例えば、DRAMである。図41の例では、移動先・移動元決定部79は、空きLDプールのホットページを含む論理デバイスLDの替わりに、高耐久プールの論理デバイスLDを、ターゲット論理デバイスLDとして選択する。
【0269】
3.4.3 第4具体例
次に、第4具体例について説明する。移動先・移動元決定部79は、第1実施形態の第2変形例と同様に、使用中のインターリーブセットISの中から疲弊蓄積量の少ないインターリーブセットISを移動先として選択し、移動元のインターリーブセットISとスワップしてもよい。
【0270】
3.5 本実施形態に係る効果
本実施形態に係る構成であれば、メモリシステム3は、マッピングテーブル及びアクセスカウンタテーブルを削除できる。よって、メモリシステム3は、メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減できる。
【0271】
また、本実施形態に係る構成であれば、第1実施形態と同様に、ウェアレベリングにおけるデータの移動にコピーオンライト処理を適用できる。よって、データ移動のコストを低減できる。
【0272】
4.変形例等
上記実施形態によれば、メモリシステムは、第1メモリ領域(LD0)と、第2メモリ領域(LD2)と、第1メモリ領域及び第2メモリ領域とホストデバイス(2)との接続を制御し、第1メモリ領域に対応する第1インターリーブ構成情報(32)を生成し、ホストデバイスからアクセス要求を受信した場合、第1インターリーブ設定情報に基づいて第1メモリ領域を選択し、第1メモリ領域の疲弊蓄積量に基づいて、第1インターリーブ設定情報を、第1メモリ領域には対応せず第2メモリ領域に対応する第2インターリーブ設定情報に更新するように構成された制御部(10)と、を含む。
【0273】
上記実施形態により、メモリモジュール間のウェアレベルにおける管理情報のデータ量を削減したメモリシステムを提供できる。
【0274】
なお、実施形態は上記で説明した形態に限られず、種々の変形が可能である。また、上記実施形態は、可能な限り組み合わせることができる。
【0275】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【0276】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0277】
1…データ処理装置、2…ホストデバイス、3…メモリシステム、4…ファブリックマネージャー、10、40、70…制御部、11、71…システムデコーダ、12…システム管理部、13…アクセス管理部、14、45、74…バッファ、20、90…メモリモジュール、21…メモリデコーダ、22…メモリ制御部、23、92…メモリ、25…電源制御部、26…キャパシタ、27…不揮発性メモリ、31…疲弊カウンタテーブル、32、82…インターリーブ設定情報、33、81…コピー状態テーブル、41、72…マッピング管理部、42、73…モジュール間ウェアレベリング制御部、43、78…モジュール情報管理部、44、79…移動先・移動元決定部、51…マッピングテーブル、52、83…モジュール管理情報、60…第1メモリモジュール、61…第2メモリモジュール、62、93…ウェアレベリング履歴情報管理部、63…疲弊カウンタ、75…データ移動処理部、76…コピー状態管理部、77…インターリーブ設定管理部、91…ウェアレベリング制御部、CK…チャンク、IS…インターリーブセット、LD…論理デバイス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41