JP2020074222A - メモリ装置及び方法 - Google Patents

メモリ装置及び方法 Download PDF

Info

Publication number
JP2020074222A
JP2020074222A JP2020017134A JP2020017134A JP2020074222A JP 2020074222 A JP2020074222 A JP 2020074222A JP 2020017134 A JP2020017134 A JP 2020017134A JP 2020017134 A JP2020017134 A JP 2020017134A JP 2020074222 A JP2020074222 A JP 2020074222A
Authority
JP
Japan
Prior art keywords
memory
data
address
lut
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020017134A
Other languages
English (en)
Other versions
JP7048650B2 (ja
Inventor
菅野 伸一
Shinichi Sugano
伸一 菅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020017134A priority Critical patent/JP7048650B2/ja
Publication of JP2020074222A publication Critical patent/JP2020074222A/ja
Priority to JP2022017352A priority patent/JP7238178B2/ja
Application granted granted Critical
Publication of JP7048650B2 publication Critical patent/JP7048650B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】アドレス変換データを効率的に管理するメモリ装置を提供する。【解決手段】情報処理システムにおいて、メモリ装置は、不揮発性メモリ、キャッシュメモリ、アドレス変換部、書き込み制御部及び読み出し制御部を含む。不揮発性メモリは、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定された論理アドレスと、不揮発性メモリの位置を示す物理アドレスとを関連付けているアドレス変換データを格納する。キャッシュメモリは、アドレス変換データの一部を格納する。アドレス変換部は、アドレス変換データの階層構造に従って、キャッシュメモリに格納すべきアドレス変換データの一部を探索し、キャッシュメモリに格納し、キャッシュメモリを参照して論理アドレスを物理アドレスに変換する。書き込み制御部及び読み出し制御部は、其々アドレス変換部によって取得した物理アドレスに対して、対象データの書き込み又は読み出しを行う。【選択図】図1

Description

本実施形態は、メモリ装置及び情報処理システムに関する。
ソリッドステートドライブ(SSD)は、例えば、NAND型フラッシュメモリなどのような不揮発性メモリを備える。NAND型フラッシュメモリは、複数のブロック(物理ブロック)を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。
特開2012−141944号公報
本実施形態は、アドレス変換データを効率的に管理するメモリ装置及び情報処理システムを提供する。
本実施形態によれば、メモリ装置は、不揮発性メモリと、キャッシュメモリと、アドレス変換部と、書き込み制御部と、読み出し制御部とを含む。不揮発性メモリは、アドレス変換データを格納する。アドレス変換データは、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定された論理アドレスと、不揮発性メモリの位置を示す物理アドレスとを関連付けている。キャッシュメモリは、不揮発性メモリよりも高速に読み出し及び書き込み可能であり、アドレス変換データの一部を格納する。アドレス変換部は、アドレス変換データの階層構造にしたがって、キャッシュメモリに格納すべきアドレス変換データの一部を探索し、アドレス変換データの一部をキャッシュメモリに格納し、キャッシュメモリを参照することにより、論理アドレスを物理アドレスに変換する。書き込み制御部は、書き込みコマンドを受信した場合に、アドレス変換部によって取得された物理アドレスの示す位置に、書き込み対象データを書き込む。読み出し制御部は、読み出しコマンドを受信した場合に、アドレス変換部によって取得された物理アドレスの示す位置から、読み出し対象データを読み出す。アドレス変換データに含まれる複数の所定サイズの部分データは、複数のレイヤに所属する。複数のレイヤのうちの第1のレイヤに属する第1の部分データは、論理アドレスと、複数のレイヤのうちの第1のレイヤの下位である第2のレイヤに属する複数の第2の部分データを参照するための複数の参照先情報を含む。複数の部分データのうち階層構造における最下位の部分データは、論理アドレスと物理アドレスとを含む。
第1の実施形態に係る情報処理システムの構成の一例を示すブロック図。 一般的なルックアップテーブルとアクティブデータマップとを例示する概念図。 第1の実施形態に係る階層的ルックアップテーブルの構成を例示する概念図。 第1の実施形態に係る階層的ルックアップテーブルのフラグメントのデータフォーマットを例示するデータ構造図。 第1の実施形態に係るアクティブデータマップのフラグメントのデータフォーマットを例示するデータ構造図。 第1の実施形態に係るキャッシュメモリから不揮発性メモリへの書き戻し時に使用されるデータフォーマットを例示するデータ構造図。 第1の実施形態に係る物理アドレスの探索処理を例示するフローチャート。 第1の実施形態に係る物理アドレスの探索処理におけるキャッシュラインの関係を例示するブロック図。 第1の実施形態に係るキャッシュメモリのリスト構造を例示するデータ構造図。 第1の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するフローチャート。 第1の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するブロック図。 第1の実施形態に係る階層的ルックアップテーブルのフラグメントと不揮発性メモリのページとの関係を例示するブロック図。
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
[第1の実施形態]
本実施形態は、階層的なルックアップテーブル(Look Up Table。以下、LUTとする)を備えるメモリ装置について説明する。LUTは、物理アドレスから論理アドレスへの変換に用いられるアドレス変換データの一種である。
本実施形態において、メモリ装置は、例えばSSDであるとするが、メモリカード、ハードディスクドライブ(HDD)、HDDとSSDとを含むハイブリッド型メモリ装置、光ディスク、ストレージ装置、メモリサーバなど様々な種別のメモリ装置でもよい。メモリ装置がSSDの場合には、当該メモリ装置はHDDと同じ通信インタフェースを持つ。
SSDであるメモリ装置は、不揮発性メモリを含む。本実施形態では、不揮発性メモリがNAND型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリは、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)などNAND型フラッシュメモリではない他の種別のメモリを含むとしてもよい。また、不揮発性メモリは、3次元構造のフラッシュメモリを含むとしてもよい。
不揮発性メモリでは、消去単位エリアごとに、データが一括して消去される。消去単位エリアは、複数の書き込み単位エリア及び複数の読み出し単位エリアを含む。不揮発性メモリがNAND型フラッシュメモリの場合、消去単位エリアはブロックに相当する。書き込み単位エリア及び読み出し単位エリアはページに相当する。
本実施形態において、アクセスとは、メモリへデータを書き込む又は格納すること、及び、メモリからデータを読み出すことの双方を意味する。
本実施形態において、プログラムは、コンピュータプログラムとする。コンピュータプログラムでは、コンピュータが行うべき処理が順序付けて記述されている。プログラムは、コンピュータで実行されることにより、コマンド、データ、及び、情報の発行及び受付、データ処理及び演算などの各種機能を実現可能である。
本実施形態において、コンピュータとは、例えば、命令にしたがって演算又は処理を実行する機械である。例えば、コンピュータは、メモリとプロセッサとを含む。メモリは、プログラムを記憶する。プロセッサは、メモリに記憶されているプログラムに記述された命令セット(例えば、データの転送、計算、加工、制御、管理)を実行するためのハードウェアである。本実施形態において、コンピュータは、広義に解釈されるべきであり、例えば、情報処理装置、メモリ装置のコントローラ、パーソナルコンピュータ、大型コンピュータ、マイクロコンピュータ、サーバ装置などを含む。本実施形態においては、コンピュータに代えて、複数のコンピュータが連携して動作するコンピュータシステムが用いられてもよい。
本実施形態において、ソフトウェアインタフェースとは、例えば、一方のプログラムが他方のプログラムを利用するために定義されている規約及び手順である。より具体的には、ソフトウェアインタフェースは、例えば、あるプログラムの機能及び管理するデータなどを、他のプログラムから呼び出し、呼び出された機能及び管理するデータなどを利用するための手順及びデータ形式などを定めた規約である。ソフトウェアインタフェースの一例として、API(Application Programming Interface)がある。
本実施形態において、識別情報はIDと表記する。
図1は、本実施形態に係る情報処理システムの一例を示すブロック図である。
情報処理システム1は、情報処理装置2とメモリ装置3とを含む。情報処理装置2は、メモリ装置3に対応するホスト装置として動作可能である。
メモリ装置3は、情報処理装置2に内蔵されてもよく、情報処理装置2とメモリ装置3とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。メモリ装置3は、複数の情報処理装置2と通信可能に接続されてもよい。また、複数のメモリ装置3が、1以上の情報処理装置2と通信可能に接続されてもよい。
メモリ装置3は、制御回路の一例としてのコントローラ4と、不揮発性メモリ5とを含む。コントローラ4と不揮発性メモリ5とは、着脱可能とし、メモリ装置3のメモリ容量は自由に拡張できるとしてもよい。ここで、メモリ容量とは、メモリに書き込み可能な最大のデータ量とする。
コントローラ4は、通信インタフェース制御部41、書き込みバッファメモリ42、読み出しバッファメモリ43、プロセッサ44、メモリ45A,45B、不揮発性メモリコントローラ46を含む。これらは、内部バスIBにより電気的に接続される。また、コントローラ4は、不揮発性メモリ5と電気的に接続される。
通信インタフェース制御部41は、例えば、送受信制御部411と、コマンド制御部412を含む。通信インタフェース制御部41は、外部装置とメモリ装置3との間で通信インタフェースにしたがって通信を行う。
送受信制御部411は、例えば、情報処理装置2などのような外部装置からのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの受信を制御し、外部装置へのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの送信を制御する。
送受信制御部411は、例えば、情報処理装置2との間で、データを送受信する。送受信制御部411は、情報処理装置2から受信したデータを書き込みバッファメモリ42へ格納する。送受信制御部411は、不揮発性メモリ5から読み出されたデータを読み出しバッファメモリ43から読み出し、情報処理装置2へ送信する。
より具体的には、送受信制御部411は、情報処理装置2との間で、データを送受信する。送受信制御部411は、情報処理装置2から受信したデータを書き込みバッファメモリ42へ格納する。送受信制御部411は、不揮発性メモリ5から読み出されたデータを読み出しバッファメモリ43から読み出し、情報処理装置2へ送信する。
コマンド制御部412は、例えば、外部装置からのコマンド、メッセージ、リクエスト、指令などの受信を制御し、外部装置へのコマンド、メッセージ、リクエスト、指令などの送信を制御する。
より具体的には、コマンド制御部412は、情報処理装置2との間で、コマンドを送受信する。コマンド制御部412は、情報処理装置2から受信したコマンドが書き込みコマンドである場合は、書き込み制御部441へ書き込みコマンドを送る。また、コマンド制御部412は、情報処理装置2から受信したコマンドが読み出しコマンドである場合は、読み出し制御部442へ読み出しコマンドを送る。
情報処理装置2とコマンド制御部412との間で送受信されるコマンドと、メモリ装置3内部で送受信されるコマンドとが同じ名称の場合でも、コマンド形式はそれぞれ異なっていてもよい。
なお、通信インタフェース制御部41の全部又は一部の機能は、プロセッサ44によって実現されてもよく、プロセッサ44とは別のプロセッサ内によって実現されてもよい。
書き込みバッファメモリ42は、情報処理装置2から送信された書き込みデータを一時的に格納する。具体的には、書き込みバッファメモリ42は、当該書き込みデータが不揮発性メモリ5に適した所定のデータサイズになるまで、一時的にデータを格納する。
読み出しバッファメモリ43は、不揮発性メモリ5から読み出された読み出しデータを一時的に格納する。具体的には、読み出しバッファメモリ43において、読み出しデータは、情報処理装置2に適した順序(情報処理装置2が指定した論理アドレスの順序)になるように並び替えられる。
プロセッサ44は、内部バスIBを経由して、コントローラ4全体の動作を制御する。
プロセッサ44は、例えば、メモリ45Bに格納されている制御プログラムPを一時的にメモリ45Aに格納し、このメモリ45Aに格納されている制御プログラムPを実行する。これにより、例えば、プロセッサ44は、書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445としての機能を実現する。なお、上記の書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445は、自由に組み合わせてもよく、分離してもよい。例えば、初期化部444とアドレス変換部445とは組み合わせてもよい。書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445は、ハードウェアによって実現されてもよい。
プロセッサ44は、例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、又は、DSP(Digital Signal Processor)などであってもよい。
書き込み制御部441は、例えば、通信インタフェース制御部41から書き込みバッファメモリ42を経由して不揮発性メモリコントローラ46までデータなどを送るための制御を行う。
より具体的には、書き込み制御部441は、コマンド制御部412からの書き込みコマンドにしたがって、アドレス変換部445を用いて論理アドレスを物理アドレスに変換し、書き込みコマンドと書き込みデータと物理アドレスとを不揮発性メモリコントローラ46に送る。
読み出し制御部442は、例えば、不揮発性メモリコントローラ46から読み出しバッファメモリ43を経由して通信インタフェース制御部41までデータなどを送るための制御を行う。
より具体的には、読み出し制御部442は、コマンド制御部412からの読み出しコマンドにしたがって、アドレス変換部445を用いて論理アドレスを物理アドレスに変換し、読み出しコマンドと物理アドレスとを不揮発性メモリコントローラ46に送り、不揮発性メモリコントローラ46から物理アドレスに対応する読み出しデータを受け、読み出しデータを読み出しバッファメモリ43、通信インタフェース制御部41経由で情報処理装置2へ送信する。
ガーベージコレクション制御部443は、不揮発性メモリ5のガーベージコレクションを行う。例えば、ガーベージコレクション制御部443は、書き込み制御部441、読み出し制御部442、不揮発性メモリコントローラ46と協働することにより、不揮発性メモリ5のガーベージコレクションを行うとしてもよい。本実施形態において、ガーベージコレクションとは、メモリの不要な領域を解放する処理とする。ここで、不揮発性メモリ5がNAND型フラッシュメモリの場合には、メモリの不要な領域を解放するためにブロックの消去を行う必要がある。そのため、ガーベージコレクション対象のブロックにおける利用可能性のある有効データは、他のブロックに移動される。したがって、不揮発性メモリ5がNAND型フラッシュメモリの場合には、ガーベージコレクションとともにコンパクションが実行される傾向にある。
メモリ45Aは、例えば、プロセッサ44の作業用メモリとして使用される主記憶装置を含み、プロセッサ44からの制御に従う。メモリ45Aは、例えばプロセッサ44による処理対象のプログラム、データ、情報などを格納する。本実施形態では、メモリ45AがDRAM(Dynamic Random Access Memory)である場合について説明するが、例えばその他の揮発性メモリであってもよく、又は、SRAM(Static Random Access Memory)などのような不揮発性メモリであってもよい。
初期化部444は、初期状態の階層的LUT51を生成する。例えば、初期化部444は、不揮発性メモリ5の容量、ネームスペースの容量などのメモリ装置3の設定情報に基づいて、階層的LUT51のネームスペースごとの階層の数、各階層に対応するデータ容量、階層間のリンク関係を決定し、初期状態の階層的LUT51のデータ構造を決定する。例えば、初期化部444は、初期状態の階層的LUT51を不揮発性メモリ5に書き込む。
初期化部444は、初期状態のアクティブデータマップ52(Active Data Map。以下、ADMという)を生成する。ADMとは、不揮発性メモリ5に格納されているデータが有効であるか無効であるかを管理するデータである。例えば、ADM52は、不揮発性メモリ5に書き込まれているデータの最小単位ごとに、この最小単位のデータが有効である場合を“1”とし、無効である場合を“0”とし、初期状態のADM52を不揮発性メモリ5に書き込む。ADM52の詳細は後で説明する。
キャッシュメモリ制御部447は、例えば、読み出し制御部を用いて、不揮発性メモリ5から階層的LUT51の一部又はADM52の一部を読み出し、読み出した階層的LUT51の一部又はADM52の一部をキャッシュメモリ451へ格納する。また、キャッシュメモリ制御部447は、例えば、書き込み制御部441を用いて、キャッシュメモリ451に格納されている階層的LUT51の一部又はADM52の一部を不揮発性メモリ5の階層的LUT51又はADM52へ書き戻す制御を行う。
なお、キャッシュメモリ制御部447の処理は、アドレス変換部445及びデータマップ管理部446が協働することにより実現されるとしてもよい。この場合、キャッシュメモリ制御部447は省略されてもよい。
さらに、キャッシュメモリ制御部447は、キャッシュメモリ451に格納されているキャッシュラインを、フリーリスト、クリーンリスト、及び、ダーティリストのいずれに属するかを管理する。本実施形態において、キャッシュラインとは、例えば、キャッシュメモリ451に格納する単位サイズのデータである。フリーリスト、クリーンリスト、及び、ダーティリストの説明は、後述する。
アドレス変換部445は、データが書き込まれるごとに、階層的LUT51に対して論理アドレスから物理アドレスまでの変換を階層的に記述する。また、アドレス変換部445は、階層的LUT51を用いて、論理アドレスを物理アドレスに変換する。より具体的には、アドレス変換部445は、階層的LUT51の階層構造にしたがって、キャッシュメモリ451に格納すべき階層的LUT51のうちの一部である部分データを探索し、部分データをキャッシュメモリ451に格納し、キャッシュメモリ451を参照することにより、論理アドレスを物理アドレスに変換する。階層的LUT51の詳細は後で説明する。
データマップ管理部446は、データが書き込まれるごとに、ADM52を更新する。より具体的には、データマップ管理部446は、キャッシュメモリ451に格納されているADM52の一部に対する書き込み及び読み出しを行う。その後、キャッシュメモリ451に格納されているADM52の一部は、不揮発性メモリ5に書き戻される。
メモリ45Bは、例えば制御プログラムPなどコントローラ4で用いられるプログラム及びデータを格納する不揮発性の記憶装置を含む。
不揮発性メモリコントローラ46は、不揮発性メモリ5へのデータなどの書き込み、及び、不揮発性メモリ5からのデータの読み出しを制御する。
なお、不揮発性メモリコントローラ46は、DMAC(Direct Memory Access Controller)、誤り訂正部、ランダマイザ(又はScrambler)などを含んでいることが望ましい。しかしながら、不揮発性メモリコントローラ46は、これらの機能を含んでいなくてもよい。
DMACは、内部バスIBを介して、書き込みデータ及び読み出しデータなどを転送する。DMACは、必要に応じて、コントローラ4内の様々な位置に複数設定されてもよい。
誤り訂正部は、書き込みバッファメモリ42から送信される書き込みデータに誤り訂正符号(例えばError Correcting Code(ECC))を付加する。誤り訂正部は、ECCを用い、必要に応じて不揮発性メモリ5から読み出した読み出しデータを訂正する。
ランダマイザは、不揮発性メモリ5へデータを書き込む際に、書き込みデータが不揮発性メモリ5の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる(ランダマイズ処理と呼ぶ)。これにより、書き込み回数を平準化でき、不揮発性メモリ5のメモリセルの寿命を長期化できる。そのため、不揮発性メモリ5の信頼性を向上できる。また、ランダマイザは、データ読み出し動作の際に、書き込み時のランダマイズ処理の逆処理を実行し、元のデータを復元する。
メモリ45Aに含まれるキャッシュメモリ451は、不揮発性メモリ5に格納されている階層的LUT51及びADM52のキャッシュデータを格納する。より具体的には、キャッシュメモリ451は、不揮発性メモリ5よりも高速に読み出し及び書き込み可能であり、階層的LUT51のうちの一部である部分データを格納し、ADM52のうちの一部であるマップ部分データを格納する。本実施形態では、階層的LUT51とADM52とは不揮発性メモリ5に書き込まれている。しかしながら、階層的LUT51とADM52とのうちの少なくとも一方は、例えばメモリ45Bなどメモリ装置3に備えられる他の不揮発性メモリに格納されてもよい。また、不揮発性メモリ5は、ユーザデータを格納するメモリ(又はメモリ領域)と、階層的LUT51を格納するメモリ(又はメモリ領域)と、ADM52を格納するメモリ(又はメモリ領域)に区分けされていてもよい。
階層的LUT51が不揮発性メモリ5に格納されている場合、キャッシュメモリ制御部447は、不揮発性メモリ5より階層的LUT51の内容の一部(部分データ)又は全部をキャッシュメモリ451に読み出す。また、キャッシュメモリ制御部447は、書き換えられたキャッシュメモリ451の内容を任意のタイミングで不揮発性メモリ5の階層的LUT51に反映する。
同様に、ADM52が不揮発性メモリ5に格納されている場合、キャッシュメモリ制御部447は、不揮発性メモリ5よりADM52の内容の一部(マップ部分データ)又は全部をキャッシュメモリ451に読み出す。また、キャッシュメモリ制御部447は、書き換えられたキャッシュメモリ451の内容を任意のタイミングで不揮発性メモリ5のADM52に反映する。
不揮発性メモリがNAND型フラッシュメモリの場合、LUTは、書き込みデータ又は読み出しデータの論理アドレス(以下、Logical Block Addressing(LBA)とする)と物理アドレス(以下、Physical Block Addressing(PBA)とする)とを関係付けたデータである。
階層的LUT51は、LUTを階層的に構成したデータである。より具体的には、階層的LUT51は、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定されたLBAと、不揮発性メモリ5の位置を示すPBAとを関連付けている。プロセッサ44は、階層的LUT51を用いることにより、LBAに対応するPBA、又はPBAに対応するLBAを効率よく探索できる。
階層的LUT51は、テーブル形式のデータ構造を持つとしてもよく、例えばリスト形式などのような他のデータ構造を持つとしてもよい。階層的LUT51は、複数の部分データ(例えばテーブル)を含む。以下において、部分データをフラグメントという。フラグメントとは、断片化したデータとする。複数のフラグメントは、例えば、所定サイズ、すなわち同じサイズである。複数のフラグメントは、複数のレイヤに所属する。複数のレイヤのうちの第1のレイヤに属する第1のフラグメントは、論理アドレスと、第1のレイヤの下位である第2のレイヤに属する複数の第2のフラグメントを参照するための複数の参照先情報(以下、ポインタという)を含む。階層構造における最下位のフラグメントは、論理アドレスと物理アドレスとを含む。最上位レイヤに所属する複数の最上位フラグメントのそれぞれは、複数のネームスペースのそれぞれに対応する。階層的LUT51は、複数のネームスペースの記憶容量に応じて複数のネームスペースの階層数が異なる。例えば、記憶容量の少ないネームスペースの階層数は少なく、記憶容量の多いネームスペースの階層数は多くなる。複数のフラグメントのそれぞれの所定のサイズは、例えば、キャッシュメモリに含まれるキャッシュラインの単位サイズに対応する。階層的LUT51の詳細については、後述する。
なお、本実施形態において、図1に示したコントローラ4の構成は例示であり、コントローラ4は図1の構成に限定されない。
キャッシュメモリ451は、階層的LUT51及びADM52へのアクセスを高速化するためのキャッシュメモリであり、階層的LUT51及びADM52のうちの一部を格納する。また、キャッシュメモリ451は、書き込み制御部441より書き込みバッファメモリ42を経由して書き換えられてもよく、読み出し制御部442より読み出しバッファメモリ43を経由して読み出されてもよい。
図2は、一般的なLUTとADMを例示する概念図である。この図2及び後述の図3、図8において、キロバイトはKBと表記する。
LUT Lは、NAND型フラッシュメモリMのデータのLBAとPBAとを関係付ける。この図2のLUT Lにおいて、LBA Yは、PBA Xに対応する。PBA Xで示されるNAND型フラッシュメモリMの領域には、4KBのデータDが書き込まれる。なお、PBAに書き込み可能なデータの量は、任意に変更可能である。
ここで、例えば、LUT Lの各LBAに格納されるPBAのサイズを32ビット(4バイト)とすると、4KBのデータDに対応するPBA Xを格納するために、LUT Lは4バイトのデータ量を必要とする。すなわち、NAND型フラッシュメモリMのサイズの1/1000のサイズのLUTが必要となる。
LUT Lは、NAND型フラッシュメモリMの使用開始時(通電時)に、NAND型フラッシュメモリMからDRAM上にキャッシュされる必要がある。このため、NAND型フラッシュメモリMの容量に比例してLUT Lのサイズが大きくなると、キャッシュに要する時間も増大する。例えば1TB程度のNAND型フラッシュメモリMを搭載したメモリ装置では、LUT Lのサイズは1キガバイト(GB)程度となり、メモリ装置3の電源ON時にDRAM上にLUT Lが読み出されるまで数十秒程度要する。
本実施形態では、LUTを階層化し、DRAM上に一度に読み出されるLUTのサイズを小さくする。これにより、LUTの読み出しに要する時間を短縮する。また、LUTの探索を効率化することで、アクセス速度の高速化を行う。
ADM Aは、NAND型フラッシュメモリMに格納されているデータが有効であるか無効であるかを管理するデータである。この図2の例において、ADM Aは、NAND型フラッシュメモリMに格納されている4KBのデータごとに、1ビットのフラグ情報を用いて、有効であるか無効であるかを管理する。例えば、NAND型フラッシュメモリMに格納されているデータDと、ADM Aのフラグ情報Bとが対応し、フラグ情報Bは有効であることを示す“1”であるため、データDは有効データである。
図3は、本実施形態に係る階層的LUT51の構成を例示する概念図である。この図3及び図8において、メガバイトはMBと表記する。
ネームスペースとは、不揮発性メモリ5に含まれる複数のブロックを区分けすることによって得られるメモリのスペースである。ある範囲のメモリ領域ごとにネームスペースを割り当てることにより、少なくとも2つのメモリ領域で論理アドレスが重複する場合であっても、ネームスペースIDと論理アドレスとを用いて適切なメモリ領域の適切なデータをアクセスすることができる。ネームスペースを識別可能とすることで、ネームスペースごとに独立してLBAを割り当て可能であり、複数のネームスペースでLBAが重複した場合であっても適切にアクセス可能である。したがって、情報処理システム1では、異なるネームスペースへのアクセスは、例えば異なるデバイスへのアクセスと同様に扱われる。
本実施形態において、階層的LUT51は、例えば、LUTを複数のレイヤを持つ階層構造で記述する。本実施形態では、階層的LUT51は、ネームスペースNS1〜NSn(nは2以上の自然数)に分かれている。階層的LUT51におけるネームスペースNS1〜NSnごとの階層の深さは、ネームスペースNS1〜NSnのサイズに応じて決定される。
階層的LUT51の第1の(最上位の)レイヤL1は、不揮発性メモリ5のPBAの範囲を、ネームスペースNS1〜NSnのサイズに応じてネームスペースNS1〜NSnに対応するn個のフラグメント(エレメントグループ)Li1に割り当てる。第1のレイヤL1のn個のフラグメントLi1のそれぞれは、さらに複数のエレメントC1を含む。
第2のレイヤL2は、第1のレイヤL1でn個に区分けされたPBAの範囲のそれぞれを、さらにm個のフラグメントLi2に区分けする。m個は、例えば、第1のレイヤL1のフラグメントLi1に含まれる複数のエレメントC1の数としてもよい。第2のレイヤL2のフラグメントLi2のそれぞれは、さらに複数のエレメントC2を含む。第1のレイヤL1のフラグメントLi1に含まれる複数のエレメントC1のそれぞれは、第2のレイヤL2のフラグメントLi2に対応付けられており、例えば、対応す下位のフラグメントLi2を示すポインタを含む。
第3のレイヤL3は、第2のレイヤL2でm個に区分けされたPBAの範囲のそれぞれを、さらにl個のフラグメントLi3に区分けする。l個は、例えば、第2のレイヤL2のフラグメントLi2に含まれる複数のエレメントC2の数としてもよい。第3のレイヤL3のフラグメントLi3のそれぞれは、さらに複数のエレメントC3を含む。第2のレイヤL2のフラグメントLi2に含まれる複数のエレメントC2のそれぞれは、第3のレイヤL3のフラグメントLi3に対応付けられており、例えば、対応する下位のフラグメントLi3を示すポインタを含む。
第4のレイヤL4は、第3のレイヤL3でl個に区分けされたPBAの範囲のそれぞれを、さらにk個のフラグメントLi4に区分けする。k個は、例えば、第3のレイヤL3のフラグメントLi3に含まれる複数のエレメントC3の数としてもよい。第4のレイヤL4のフラグメントLi4のそれぞれは、さらに複数のエレメントC4を含む。第3のレイヤL3のフラグメントLi3に含まれる複数のエレメントC3のそれぞれは、第4のレイヤL4のフラグメントLi4に対応付けられており、例えば、対応する下位のフラグメントLi4を示すポインタを含む。
階層的LUT51は、最下位の第4のレイヤL4において区分けされたPBAにより、LBAに対応するPBAを特定する。
このように、第1のレイヤL1におけるエレメントC1が第2のレイヤL2におけるフラグメントLi2を示し、第2のレイヤL2におけるエレメントC2が第3のレイヤL3におけるフラグメントLi3を示し、第3のレイヤL3におけるエレメントC3が第4のレイヤL4におけるフラグメントLi4を示すことで、階層的LUT51が形成される。
第1乃至第4のレイヤL1〜L4に所属する1つのフラグメントに含まれるエレメントの数は、同じでもよく、例えば、32個としてもよい。
この図3では、レイヤの数が4つの場合を図示している。しかしながら、レイヤの数は2以上であればよい。
階層的LUT51で用いられるPBAのサイズは、上記図2の例と同様に、32ビットとしてもよい。また、階層的LUT51で用いられるPBAのサイズは、例えばメモリ装置3のアドレスバスの幅と等しくてもよい。
例えば、各フラグメントLi1〜Li4は、対応する下位レイヤのフラグメントに対応するPBA(先頭の物理アドレス)又は対応するアクセス対象データのPBA、及び、対応するネームスペースID(ネームスペース名)、対応する論理アドレス、管理するPBAの範囲(グレイン:Grain)を含む。
例えば、各フラグメントLi1〜Li4のエレメントC1〜C4が管理するPBAの範囲が、NAND型フラッシュメモリにおいて扱われるページ単位(例えば4KB)と一致している場合は、各エレメントC1〜C4にはアクセス対象データのPBAが格納される。例えば、下位のレイヤが存在する場合は、各エレメントC1〜C4には下位のレイヤのフラグメントに対応するPBA(例えば先頭の物理アドレス)が格納される。なお、下位のレイヤのフラグメントに対応するPBAは、他の形式のアドレスで表記されてもよい。
階層的LUT51において、上位のレイヤのフラグメントは複数のエレメントを含む。上位のレイヤのフラグメントに含まれる各エレメントによって管理されるPBAの範囲は、下位のレイヤのフラグメントによって管理されるPBAの範囲に対応しており、この下位のレイヤのフラグメントはさらに複数のエレメントを含む。例えば、上位のレイヤのフラグメントに含まれる各エレメントには、下位のレイヤのフラグメントに対応するPBAが格納される。これにより、上位のレイヤと下位のレイヤとが関連付けられる。
さらに下位のレイヤにおいても、同様に、例えば、下位のレイヤの各フラグメントに含まれる各エレメントには、さらに下位のレイヤのフラグメントに対応するPBAが格納される。
そして、1個のエレメントで管理するPBAの範囲が4KBとなった場合に、当該エレメントには、不揮発性メモリ5に書き込まれているデータに対応するPBAが格納される。
なお、階層的LUT51に含まれるフラグメントLi1〜Li4のそれぞれは、複数の参照先のデータが不揮発性メモリ5に連続して配置されている場合に、複数の参照先のデータのうちの先頭を示す先頭ポインタを含み、この複数の参照先のデータのうち先頭ではない他のポインタを省略してもよい。これにより、階層的LUT51のサイズを削減可能であり、キャッシュメモリ451の使用量を削減可能である。例えば、第1のレイヤに所属する第1のフラグメントに含まれる複数のエレメントによって参照される複数のPBAが連続する場合、第1のフラグメントに含まれる第1のエレメントは、複数のPBAのうちの先頭のPBAを含む。第1のフラグメントに含まれる他のエレメント、及び、第1のフラグメントの下位である第2のレイヤに所属する第2のフラグメントは、省略可能である。これにより、階層的LUT51における第1のレイヤ及び第2のレイヤで必要とされるデータ量を削減することができる。書き込み制御部441又は読み出し制御部442は、例えば、第2のレイヤに所属する第2のフラグメントが省略されている場合に、この第1のレイヤに所属する第1のフラグメントに含まれる第1のエレメントが連続する複数のPBAを参照していると判断する。これにより、書き込み制御部441又は読み出し制御部442は、例えば、バースト転送などを用いて、不揮発性メモリ5に格納されている連続するデータに対するアクセス速度を向上することができる。
図3の例をより詳しく説明する。第1のレイヤL1は、n個のネームスペースNS1〜NSnのそれぞれに対応するn個のフラグメントLi1に区分けされる。1つのフラグメントLi1は、4GB分のPBAに対応する。1つのフラグメントLi1は、さらに32個のエレメントC1を含む。1つのエレメントC1は、128MB分のPBAに対応する。すなわち、フラグメントLi1のエレメントC1に対応するPBAの範囲は、128MBである。エレメントC1によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるデータの最小単位、例えばページ単位(例えば4KB)よりも大きい。このため、各エレメントC1に対して第2のレイヤL2のフラグメントLi2が生成され、各エレメントC1には第2のレイヤL2の対応するフラグメントLi2の先頭を示
すアドレスが格納される。
第2のレイヤL2は、第1のレイヤL1のエレメントC1に対応するフラグメントLi2に区分けされる。1つのフラグメントLi2は、128MB分のPBAに対応する。1つのフラグメントLi2は、さらに32個のエレメントC2を含む。1つのエレメントC2は、4MB分のPBAに対応する。すなわち、フラグメントLi2のエレメントC2に対応するPBAの範囲は、4MBである。エレメントC2によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBよりも大きい。このため、各エレメントC2に対して第3のレイヤL3のフラグメントLi3が生成され、各エレメントC2には第3のレイヤL3の対応するフラグメントLi3の先頭を示すアドレスが格納される。
第3のレイヤL3は、第2のレイヤL2のエレメントC2に対応するフラグメントLi3に区分けされる。1つのフラグメントLi3は、4MB分のPBAに対応する。1つのフラグメントLi3は、さらに32個のエレメントC3を含む。1つのエレメントC3は、128KB分のPBAに対応する。すなわち、フラグメントLi3のエレメントC3に対応するPBAの範囲は、128KBである。エレメントC3によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBよりも大きい。このため、各エレメントC3に対して第4のレイヤL4のフラグメントLi4が生成され、各エレメントC3には第4のレイヤL4の対応するフラグメントLi4の先頭を示すアドレスが格納される。
第4のレイヤL4は、第3のレイヤL3のエレメントC3に対応するフラグメントLi4に区分けされる。1つのフラグメントLi4は、128KB分のPBAに対応する。1つのフラグメントLi4は、さらに32個のエレメントC4を含む。1つのエレメントC4は、4KB分のPBAに対応する。すなわち、フラグメントLi4のエレメントC4に対応するPBAの範囲は、4KBである。エレメントC4によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBと同等である。このため、各エレメントC4には、データを示すPBAが格納される。
例えば、1つのフラグメントLi4に格納される複数のPBAが連続する場合には、フラグメントLi4は省略されてもよい。フラグメントLi4の参照元のエレメントC3は、エレメントC3に対応するPBAの範囲である128KB分のデータの先頭のPBAを含む。すなわち、あるフラグメントに含まれる複数のエレメントに対応するPBAの範囲と同じサイズのデータが連続するPBAに対応づけられている場合、このあるフラグメントの下位のフラグメントは省略可能であり、あるフラグメントに含まれるエレメントは、このあるデータの先頭のPBAを含む。
なお、ネームスペースNS1〜NSnごとに、対応するPBAの範囲の大きさ(対応するメモリ領域のサイズ)が異なり、例えば階層的LUT51で管理されるネームスペースNS1〜NSnごとのPBAの数は異なるとしてもよい。この場合、ネームスペースNS1〜NSnごとに、例えばネームスペースNS1〜NSnのサイズに応じて、レイヤの数が異なるとしてもよい。例えば、ネームスペースNS1では128GBに相当するPBAをレイヤ数5で管理し、ネームスペースNS2では64GBに相当するPBAをレイヤ数6で管理してもよい。
本実施形態では、1つのネームスペース内においては、フラグメントに含まれるエレメントの数は同じであることが望ましいが、フラグメントに含まれるエレメントの数はレイヤごとに異なってもよい。
図4は、本実施形態に係る階層的LUT51のフラグメントのデータフォーマットを例示するデータ構造図である。具体的には、図4は、図3に示すような、上位のレイヤの1フラグメントが下位のレイヤの32個のフラグメントに対応する階層的LUT51の1つのフラグメントを例示している。
キャッシュメモリ451は、階層的LUT51の一部を、キャッシュライン単位で格納する。以下では、階層的LUT51のフラグメントをLUTフラグメントとする。LUTフラグメントに対応するキャッシュラインをLUTキャッシュラインとする。
キャッシュメモリ451で更新されたデータは、キャッシュライン単位で、不揮発性メモリ5に書き戻される。
LUTフラグメント及びLUTキャッシュラインは、各レイヤL1〜L4におけるLUTフラグメントLi1〜Li4のいずれかに対応する。LUTフラグメント及びLUTキャッシュラインは、例えば、PBA格納部C_1〜C_32とLBA格納部C_33と管理データ格納部C_34とを含む。
PBA格納部C_1〜C_32は、エレメントに対応する。PBA格納部C_1〜C_32は、下位のレイヤのLUTフラグメントに対応するPBA又はデータの格納位置を示すPBAを格納する。上記図2で説明したように、1つのPBAは例えば32ビットで表される。なお、各PBAには、例えば8ビットの管理データMD1が付されてもよい。各管理データMD1は、例えば、PBA格納部C_1〜C_32のそれぞれに格納されているPBAが、下位のレイヤのLUTフラグメントに対応するPBAであるか(この場合、さらに不揮発性メモリ5上のPBAであるか、又は、キャッシュメモリ451上のPBAであるか)、又は、データの格納位置を示すPBAであるかを管理してもよい。PBA格納部C_1〜C_32のそれぞれのサイズは、それぞれPBAのサイズと管理データMD1のサイズとを足した40ビットとしてもよく、PBA格納部C_1〜C_32の合計サイズは160バイトとしてもよい。
LBA格納部C_33は、PBA格納部C_1(すなわち、LUTフラグメントで管理する先頭のPBA)に対応するLBAを格納する。
管理データ格納部C_34は、当該LUTフラグメントが属するネームスペースID、及び、当該LUTフラグメントの管理するPBAの範囲を格納する。
なお、管理データ格納部C_34は、他の情報を格納してもよい。例えば、管理データ格納部C_34は、当該LUTフラグメントが属するレイヤのIDを格納してもよい。
各LUTフラグメントが例えばメモリ45Aのキャッシュメモリ451上に格納される場合、各LUTキャッシュラインは、LUTフラグメントに加えて、キャッシュメモリ451において互いに関連付けるべきLUTキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、LUTキャッシュラインは、このLUTキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部C_N−1と、当該LUTキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部C_Nとを含むとしてもよい。このように、キャッシュメモリ451上に格納されているLUTキャッシュラインが参照すべき前後のキャッシュラインへのポインタを含むことにより、キャッシュメモリ451に対するアクセスを高速化することができ、連続的なアクセスを実現することができる。なお、LUTキャッシュラインは、他の管理データを含むとしてもよい。
例えば、あるキャッシュラインが後述のフリーリストFLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じフリーリストFLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のダーティリストDLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じダーティリストDLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のクリーンリストCLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じクリーンリストCLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。
本実施形態においては、次に参照すべきキャッシュラインのアドレスはPBAで表されるとして説明するが、他の形式のアドレスで表されてもよい。また、本実施形態において、前ポインタ格納部C_N−1と、次ポインタ格納部C_Nとは、PBAを格納するとして説明するが、他の形式のアドレスを格納してもよい。
LUTフラグメント及びLUTキャッシュラインは、全て図4に示すフォーマットに従って構成されるのが望ましい。この場合、各LUTフラグメントのサイズは固定長(例えば、168バイト)とすることができる。各LUTキャッシュラインのサイズは固定長(例えば、188バイト)とすることができる。しかしながら、各LUTフラグメント及び各LUTキャッシュラインは、レイヤごとに異なるフォーマットに従って構成されてもよい。
図5は、本実施形態に係るADM52のフラグメントのデータフォーマットを例示するデータ構造図である。
キャッシュメモリ451は、ADM52の一部を、キャッシュライン単位で格納する。以下では、ADM52のフラグメントを、ADMフラグメントとする。ADMフラグメントに対応するキャッシュラインをADMキャッシュラインとする。
ADMフラグメント及びADMキャッシュラインは、例えば、マップ格納部D_1〜D_40とPBA格納部D_42とを含む。
マップ格納部D_1〜D_40は、不揮発性メモリ5に格納される4KBのデータごとに、各データの有効又は無効を管理するビットを格納する。例えば、マップ格納部D_1〜D_40の合計サイズが160バイト(=1280ビット)とすると、1つのADMフラグメント及びADMキャッシュラインで不揮発性メモリ5に格納される1280個分の4KBのデータの有効又は無効を管理可能である。
PBA格納部D_42は、マップ格納部D_1のPBA(すなわち、このADMフラグメントで管理する先頭のPBA)を格納する。
ADMキャッシュラインは、前述のLUTキャッシュラインと同様に、キャッシュメモリ451において互いに関連付けるべきキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、ADMキャッシュラインは、当該ADMキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部D_N−1と、当該ADMキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部D_Nとを含む。なお、ADMキャッシュラインは、他の管理データを含んでもよい。
また、ADMフラグメント及びADMキャッシュラインは、全て図5に示すフォーマットに従って構成され、LUTフラグメント及びLUTキャッシュラインと同じサイズの固定長とされるのが望ましい。すなわち、ADMフラグメントのサイズはLUTフラグメントと同じ168バイト、ADMキャッシュラインのサイズはLUTキャッシュラインのサイズと同じ188バイトとすることが好ましい。
図6は、本実施形態に係るキャッシュメモリ451から不揮発性メモリ5への書き戻し時に使用されるデータフォーマットを例示するデータ構造図である。
上述のように、キャッシュメモリ451でLUTキャッシュライン又はADMキャッシュラインが更新されると、更新されたLUTキャッシュラインに含まれるLUTフラグメント又は更新されたADMキャッシュラインに含まれるADMフラグメントが、不揮発性メモリ5に書き戻される。
本実施形態では、LUTフラグメント及びADMフラグメントのサイズは全て同じであるため、書き込み制御部441は、LUTフラグメント及びADMフラグメントを効率的に不揮発性メモリ5へ書き戻すことができる。
具体的には、例えば、上記図4及び図5に示すように、不揮発性メモリ5上へ書き戻されるLUTフラグメントのサイズは、レイヤに依存することなく、全て168バイトである。また、ADMフラグメントのサイズはLUTフラグメントのサイズと同じ168バイトである。ここで、例えば、図6に示すようにキャッシュメモリ451から不揮発性メモリ5へ書き戻しを行うデータ単位(以下、書き戻し単位とする)を512バイトとすると、1つの書き戻し単位は、キャッシュメモリ451に格納されているLUTフラグメントとADMフラグメントのうちから選択された任意の3つのフラグメントFG_1〜FG_3を含むことができる。書き戻し単位からフラグメントFG_1〜FG_3を除いた余りサイズは8バイトとなる。8バイトは、書き戻し単位(512バイト)に対して十分小さい値である。さらに、例えばNAND型フラッシュメモリのページサイズは512バイトの整数倍が一般的であるため、ページサイズに対しても余りサイズは十分小さい値となる。したがって、図6のデータフォーマットを用いることにより、書き戻し時に不揮発性メモリ5に書き込まれるページの容量の無駄を抑え、効率的なキャッシュラインの書き戻しを行うことができる。
なお、1つの書き戻し単位は、書き戻し単位の余りサイズ(8バイト)を用いた管理データMD2を含むとしてもよい。例えば、管理データMD2は、1つの書き戻し単位に格納される3つのフラグメントの種類を表してもよい。
また、書き戻し単位は、512バイトに限られない。書き戻し単位は、例えば、1KBであってもよく、2KBであってもよい。しかしながら、書き戻し単位は、512バイトの倍数であることが望ましい。
また、不揮発性メモリコントローラ46と不揮発性メモリ5との間で、LUTフラグメントとADMフラグメントとのうちのいずれかであるフラグメントの送受信を行う場合、ECC(Error-Correcting Code)を含むフラグメントを送受信してもよい。この場合、例えば、1つの書き戻し単位に含まれるフラグメントの数と、フラグメントのサイズとを調整することにより、複数個のフラグメントに対して無駄なくECCを付することができ、フラグメントの送受信を効率的に行うことができる。
図7は、本実施形態に係るPBAの探索処理を例示するフローチャートである。
PBA探索処理とは、具体的には、プロセッサ44のアドレス変換部445が、階層的LUT51を用いて指定されたLBAをPBAに変換する処理である。
なお、階層的LUT51は、あらかじめプロセッサ44の初期化部444及び書き込み処理におけるアドレス変換部445などにより生成され、不揮発性メモリ5に格納されている。
ステップS701において、キャッシュメモリ制御部447は、不揮発性メモリコントローラ46を経由し、不揮発性メモリ5に格納されている階層的LUT51の第1のレイヤL1のLUTフラグメントLi1を読み出し、LUTフラグメントLi1をメモリ45A内のキャッシュメモリ451へ格納する。LUTフラグメントLi1の読み出しは、例えばメモリ装置3の起動時に行われてもよい。また、LUTフラグメントLi1の読み出しは、情報処理装置2によって指定されたネームスペースIDに基づいて行われるとしてもよい。
ステップS702において、アドレス変換部445は、読み出されたLUTフラグメントLi1に対して、指定されたLBAに対応するPBA格納部を探索し、該当するPBA格納部に格納されているPBAを読み出す。
ステップS703において、アドレス変換部445は、ステップS702で読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAであるか否かを判断する。
読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAでない場合は、アドレス変換部445は、ステップS705において、読み出したPBAが指定されたLBAに対応するアドレスであるとし、探索処理を終了する。
読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAである場合は、キャッシュメモリ制御部447は、ステップS704において、読み出したPBAに対応する下位のレイヤのLUTフラグメントを読み出す。キャッシュメモリ制御部447は、クリーンリストCLに所属するいずれかのキャッシュラインの次ポインタ格納部C_Nに、キャッシュメモリ451へ格納される下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインを示すポインタを格納することで、下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインがクリーンリストCLに所属することを表す。キャッシュメモリ制御部447は、下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインの前ポインタ格納部C_N−1に、クリーンリストCLに所属するキャッシュラインを示すポインタを格納する。その後、処理はステップS702に戻る。
なお、ステップS704において、ステップS703で読み出された下位のレイヤのフラグメントの参照先が不揮発性メモリ5内のPBAを指す場合は、キャッシュメモリ制御部447は、不揮発性メモリ5の階層的LUT51より当該下位のフラグメントを読み出し、読み出した下位のフラグメントをメモリ45A内のキャッシュメモリ451へ格納する。ステップS703で読み出された下位のレイヤのフラグメントの参照先がキャッシュメモリ451内のPBAを指す場合は、キャッシュメモリ制御部447による不揮発性メモリ5の階層的LUT51からメモリ45A内のキャッシュメモリ451への読み出し処理は不要である。
図8は、本実施形態に係るPBAの探索処理におけるキャッシュラインの関係を例示するブロック図である。図8の階層的LUT51の構成は、図3に示す階層的LUT51の構成と同じである。
この図8では、第1のレイヤL1から第4のレイヤL4へ向けて、LUTキャッシュラインCLi1,CLi2(1),CLi3(2),CLi4(20)と読み出す状態を例示している。
第1のレイヤL1において、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1は、PBA格納部C1_1〜C1_32を含む。PBA格納部C1_1〜C1_32は、それぞれ、128MBのPBAの範囲に対応する。PBA格納部C1_1〜C1_32は、それぞれ、第2のレイヤL2の32個のLUTフラグメントLi2に対応するPBAを格納する。この図8において、PBA格納部C1_1〜C1_32は、それぞれ、第2のレイヤL2におけるLUTキャッシュラインCLi2(1)〜CLi2(32)に対応するPBAを含む。
第2のレイヤL2において、LUTフラグメントLi2に対応するLUTキャッシュラインCLi2(1)は、PBA格納部C2(1)_1〜C2(1)_32を含む。PBA格納部C2(1)_1〜C2(1)_32は、それぞれ、4MBのPBAの範囲に対応する。PBA格納部C2(1)_1〜C2(1)_32は、それぞれ、第3のレイヤL3の32個のLUTフラグメントLi3に対応するPBAを格納する。この図8において、PBA格納部C2(1)_1〜C2(1)_32は、それぞれ、第3のレイヤL3におけるLUTキャッシュラインCLi3(1)〜CLi3(32)に対応するPBAを含む。
第3のレイヤL3において、LUTフラグメントLi3に対応するLUTキャッシュラインCLi3(2)は、PBA格納部C3(2)_1〜C3(2)_32を含む。PBA格納部C3(2)_1〜C3(2)_32は、それぞれ、128KBのPBAの範囲に対応する。PBA格納部C3(2)_1〜C3(2)_32は、それぞれ、第4のレイヤL4の32個のLUTフラグメントLi4に対応するPBAを格納する。この図8において、PBA格納部C3(2)_1〜C3(2)_32は、それぞれ、第4のレイヤL4におけるLUTキャッシュラインCLi4(1)〜CLi4(32)に対応するPBAを含む。
第4のレイヤL4において、LUTフラグメントLi4に対応するLUTキャッシュラインCLi4(20)は、PBA格納部C4(20)_1〜C4(20)_32を含む。PBA格納部C4(20)_1〜C4(20)_32は、それぞれ、4KBのPBAの範囲に対応する。PBA格納部C4(20)_1〜C4(20)_32は、それぞれ、データに対応するPBAを格納する。
まず、キャッシュメモリ制御部447は、例えば、ネームスペースID、LBA Y、先頭アドレス及びオフセット値に基づいて、第1のレイヤL1のLUTフラグメントLi1を不揮発性メモリ5から読み出し、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1をキャッシュメモリ451に格納する。
アドレス変換部445は、例えば、LBA Y、先頭アドレス及びオフセット値に基づいて、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1の中から、対応するPBA格納部C1_1に格納されているPBAを読み出す。
キャッシュメモリ制御部447は、PBA格納部C1_1に格納されている値が第2のレイヤL2のLUTフラグメントLi2を示すPBAであるので、LUTフラグメントLi2を不揮発性メモリ5から読み出し、LUTフラグメントLi2に対応するLUTキャッシュラインCLi2(1)をキャッシュメモリ451に格納する。
アドレス変換部445は、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C2(1)_2を探索し、PBA格納部C2(1)_2に格納されているPBAを読み出す。
キャッシュメモリ制御部447は、PBA格納部C2(1)_2に格納されている値が第3のレイヤL3のLUTフラグメントLi3を示すPBAであるので、LUTフラグメントLi3を不揮発性メモリ5から読み出し、LUTフラグメントLi3に対応するLUTキャッシュラインCLi3(2)をキャッシュメモリ451に格納する。
アドレス変換部445は、LUTキャッシュラインCLi3(2)から、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C3(2)_20を探索し、PBA格納部C3(2)_20に格納されているPBAを読み出す。
キャッシュメモリ制御部447は、PBA格納部C3(2)_20に格納されている値が第4のレイヤL4のLUTフラグメントLi4を示すPBAであるので、LUTフラグメントLi4を不揮発性メモリ5から読み出し、LUTフラグメントLi4に対応するLUTキャッシュラインCLi4(20)をキャッシュメモリ451に格納する。
アドレス変換部445は、LUTキャッシュラインCLi4(20)から、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C4(20)_31を探索し、PBA格納部C4(20)_31に格納されているPBA Xを読み出す。PBA格納部C4(20)_31に格納されているPBA Xは、LUTキャッシュラインではなく、データを示す。このため、アドレス変換部445は、LBA Yに対応するPBA Xを特定することができる。
図9は、本実施形態に係るキャッシュメモリ451のリスト構造を例示するデータ構造図である。
本実施形態において、キャッシュラインは、LUTキャッシュラインでもよく、ADMキャッシュラインでもよい。
キャッシュメモリ制御部447は、階層的LUT51のLUTフラグメントをLUTキャッシュラインとしてキャッシュメモリ451上に格納する場合、又は、ADM52のADMフラグメントをADMキャッシュラインとしてキャッシュメモリ451上に格納する場合、上記図4及び図5で説明したように、キャッシュメモリ451上に格納されたキャッシュラインを連結してリスト構造を生成する。
本実施形態において、キャッシュメモリ451は、フリーリストFL、ダーティリストDL、クリーンリストCLを含む。なお、LUTキャッシュラインとADMキャッシュラインとが異なるリストで管理されることが望ましい。この場合、LUTキャッシュラインを管理するリストとADMキャッシュラインを管理するリストとは、同じフォーマットであることが望ましい。
図9において、フリーリストFL、ダーティリストDL、クリーンリストCLに属するキャッシュラインの次ポインタ格納部C_Nは、同じリストに属し次に連結されるキャッシュラインのアドレスを格納する。次に連結されるキャッシュラインがない場合、次ポインタ格納部C_Nは省略されてもよい。キャッシュラインの前ポインタ格納部C_N−1は。同じリストに属し前に連結されるキャッシュラインのアドレスを格納する。前に連結されるキャッシュラインがない場合、前ポインタ格納部C_Nは省略されてもよい。
フリーリストFLは、クリーンリストCLにもダーティリストDLにも属さない例えば書き換え候補のキャッシュラインFL1〜FL3を含む。階層的LUT51又はADM52からキャッシュメモリ451へ格納された直後のキャッシュラインは、フリーリストFLに属する。フリーリストFLに属するキャッシュラインFL1〜FL3の並び順は、ランダムでもよい。キャッシュラインFL1の次ポインタ格納部C_N及びキャッシュラインFL3の前ポインタ格納部C_N−1は、キャッシュラインFL2のPBAを格納している。キャッシュラインFL2の次ポインタ格納部C_Nは、キャッシュラインFL3のPBAを格納している。キャッシュラインFL2の前ポインタ格納部C_N−1は、キャッシュラインFL1のPBAを格納している。
ダーティリストDLは、例えばキャッシュメモリ451でキャッシュラインが書き換えられたが、書き換えられたキャッシュラインの内容が不揮発性メモリ5の階層的LUT51に反映されていないキャッシュラインDL1,DL2を含む。ダーティリストDLに属するキャッシュラインDL1,DL2の並び順は、ランダムでもよい。キャッシュラインDL1の次ポインタ格納部C_Nは、キャッシュラインDL2のPBAを格納している。キャッシュラインDL2の前ポインタC_N−1は、キャッシュラインDL1のPBAを格納している。
例えば、キャッシュメモリ制御部447は、通信インタフェース制御部41が情報処理装置2などより書き込みコマンドを受信すると、書き込み先のLBAに該当するLUTキャッシュラインをフリーリストFLからダーティリストDLへ切り替える。
ダーティリストDLに属するキャッシュラインDL1,DL2の内容は、不揮発性メモリ5の階層的LUT51又はADM52に反映される(書き込まれる)必要がある。キャッシュメモリ制御部447は、ダーティリストDL内のキャッシュラインDL1,DL2が不揮発性メモリ5へ書き込まれた後は、キャッシュラインDL1,DL2をダーティリストDLで管理する必要がないため、キャッシュラインDL1,DL2をダーティリストDLからクリーンリストCLへ繋ぎ替える。このため、ダーティリストDLに属するキャッシュラインDL1,DL2は、先入れ先出し(Fast In Fast Out:FIFO)方式で、不揮発性メモリ5へ書き込まれ、クリーンリストCLに属するキャッシュラインに変換されることが望ましい。
例えば、ダーティリストDLは、不揮発性メモリ5への書き込み処理を高速化するために用いられる。
クリーンリストCLは、キャッシュメモリ451と不揮発性メモリ5の階層的LUT51又はADM52とで内容が同じキャッシュラインCL1〜CL4を含む。キャッシュラインCL1〜CL4は、例えば、キャッシュメモリ451において書き換えられ、不揮発性メモリ5の階層的LUT51に対して反映されたキャッシュラインである。クリーンリストCLに属するキャッシュラインCL1〜CL4の並び順は、ランダムでもよい。キャッシュラインCL1の次ポインタ格納部C_N及びキャッシュラインCL3の前ポインタ格納部C_N−1は、キャッシュラインCL2のPBAを格納している。キャッシュラインCL2の次ポインタ格納部C_N及びキャッシュラインCL4の前ポインタ格納部C_N−1は、キャッシュラインCL3のPBAを格納している。キャッシュラインCL2の前ポインタ格納部C_N−1は、キャッシュラインCL1のPBAを格納している。キャッシュラインCL3の次ポインタ格納部C_Nは、キャッシュラインCL4のPBAを格納している。
例えば、キャッシュメモリ制御部447は、通信インタフェース制御部41が情報処理装置2などより読み出しコマンドを受信すると、読み出し先のLBAに該当するキャッシュラインをフリーリストFLからクリーンリストCLへ切り替える。
クリーンリストCLに属するキャッシュラインCL1〜CL4は、不揮発性メモリ5の階層的LUT51の一部と同じ内容であるため、クリーンリストCLに属するキャッシュラインCL1〜CL4が失われた場合であっても、キャッシュメモリ451のキャッシュラインCL1〜CL4と不揮発性メモリ5に格納されている階層的LUT51又はADM52のデータとの間で不整合は発生しない。このため、例えば、キャッシュメモリ制御部447は、フリーリストFLの合計サイズが一定のしきい値以下に減少した場合、クリーンリストCLのキャッシュラインをフリーリストFLへ移動してもよい。なお、クリーンリストCLは先入れ先出し方式で管理されてもよい。クリーンリストCLの増加又は減少は管理されていなくてもよい。すなわち、リスト数の増加又は減少はランダムに行われてもよい。
以下では、メモリ装置3が読み出しコマンド及び書き込みコマンドを受信した際のキャッシュメモリ451の状態変化の詳細について説明する。
図10は、本実施形態に係るキャッシュメモリ451におけるキャッシュラインの状態変化を例示するフローチャートである。
図11は、本実施形態に係るキャッシュメモリ451におけるキャッシュラインの状態変化を例示するブロック図である。図11は、図10のフローチャートで示される処理を図示する。
ステップS1001において、キャッシュメモリ制御部447は、不揮発性メモリ5から階層的LUT51の一部を読み出し、キャッシュメモリ451にフリーリストFLに属するキャッシュラインFL1〜FLxとして格納する。例えば、ステップS1001では、上記図7のステップS701と同様に、階層的LUT51の最上位の第1のレイヤL1のフラグメントLi1に対応するキャッシュラインCLi1がキャッシュメモリ451へ格納される。
ステップS1002において、キャッシュメモリ制御部447は、情報処理装置2から通信インタフェース制御部41経由で不揮発性メモリ5に対するアクセスコマンドを受信したか否か判断する。書き込みコマンドを受信した場合、処理はステップS1003に進み、読み出しコマンドを受信した場合、処理はステップS1007へ進み、アクセスコマンドを受信しない場合は、処理はステップS1008へ進む。
ステップS1003において、アドレス変換部445は、フリーリストFLのキャッシュラインFL1〜FLxに対して書き込み先のLBAに対応するPBAを探索する。ここで、階層的LUT51又はキャッシュメモリ451に対する探索処理は、上記図7及び図8で説明した探索処理と同様である。
キャッシュメモリ制御部447は、アドレス変換部445によって探索された階層的LUT51のうちキャッシュメモリ451に格納されていないLUTフラグメントを読み出し、読み出したLUTフラグメントをフリーリストFLに属するキャッシュラインFL1〜FLxのいずれかとしてキャッシュメモリ451へ格納する。また、キャッシュメモリ制御部447は、ADM52のうち書き込み先のPBAに対応するADMを含むADMフラグメントを読み出し、読み出したADMフラグメントをフリーリストFLに属するキャッシュラインFL1〜FLxのいずれかとしてキャッシュメモリ451へ格納する。さらに、キャッシュメモリ制御部447は、アドレス変換部445によりフリーリストFLのキャッシュラインFL1〜FLxのうちLUTキャッシュラインが書き換えられた場合は、書き換えられたLUTキャッシュラインを、階層的LUT51に対応するダーティリストLDLへ移動する。同様に、キャッシュメモリ制御部447は、データマップ管理部446によりフリーリストFLのキャッシュラインFL1〜FLxのうちADMキャッシュラインが書き換えられた場合は、書き換えられたADMキャッシュラインを、ADM52に対応するダーティリストADLへ移動する。
ステップS1004において、キャッシュメモリ制御部447は、ダーティリストLDL,ADLのキャッシュラインDL1〜DLy−1,DLy〜DLxを不揮発性メモリ5の階層的LUT51及びADL52へ反映させるための一定条件が満たされているか否か判断する。条件は、例えばダーティリストLDL,ADLのサイズが一定のしきい値を超えた場合に満たされてもよい。条件が満たされない場合は、ステップS1002に戻る。条件が満たされた場合は、ステップS1005において、キャッシュメモリ制御部447は、ダーティリストLDL,ADLのキャッシュラインDL1〜DLy−1,DLy〜DLxを、不揮発性メモリ5の階層的LUT51及びADM52へ反映させる(書き込む)。
なお、ステップS1004の判断は、ステップS1002で書き込みコマンドがない場合でも、キャッシュメモリ制御部447により定期的に行われてもよい。
ステップS1006において、キャッシュメモリ制御部447は、階層的LUT51への反映が完了したダーティリストLDLのキャッシュラインを、階層的LUT51に対応するクリーンリストLCLへ移動する。キャッシュメモリ制御部447は、ADM52への反映が完了したダーティリストADLのキャッシュラインを、ADM52に対応するクリーンリストACLへ移動する。その後、処理はステップS1002に戻る。
ステップS1007において、アドレス変換部445は、フリーリストFLのキャッシュラインFL1〜FLxに対して読み出し先のLBAに対応するPBAを探索する。キャッシュメモリ制御部447は、この探索処理において探索した階層的LUT51のうち、キャッシュメモリ451に格納されていないLUTフラグメントを、キャッシュメモリ451にフリーリストFLに属するキャッシュラインFL1〜FLxのいずれかとして格納し、その後クリーンリストLCLへ移動する。また、キャッシュメモリ制御部447は、ADM52から読み出し先のPBAに対応するADMを含むADMフラグメントを読み出し、読み出したADMフラグメントをフリーリストFLに属するキャッシュラインFL1〜FLxのいずれかとしてキャッシュメモリ451に格納し、その後クリーンリストACLへ移動する。その後、処理はステップS1002に戻る。
ステップS1008において、キャッシュメモリ制御部447は、フリーリストFLのサイズをチェックする。フリーリストが不足していない場合、処理はステップS1002に戻る。フリーリストFLが不足している場合、ステップS1009において、キャッシュメモリ制御部447は、クリーンリストLCL,ACLのキャッシュラインをフリーリストFLへ移動する。その後、処理はステップS1002に戻る。
なお、上記の図10の説明では、キャッシュラインがフリーリストFLよりダーティリストLDL,ADLへ移動する例について説明したが、クリーンリストLCL,ACLにおいて書き換えられたキャッシュラインもダーティリストLDL,ADLへ移動可能としてもよい。また、上述の例では、不揮発性メモリ51の階層的LUT51又はADM52から読み出されたLUTフラグメント又はADMフラグメントは、フリーリストFLに属するとしてキャッシュメモリ451に格納されるが、これに代えて、クリーンリストLCL、ACLに属するとしてキャッシュメモリ451に格納されてもよい。
ダーティリストLDL,ADLのキャッシュラインDL1〜DLy−1,DLy〜DLxは、上述のステップS1004の判断とは関係なく、特定のタイミングで、不揮発性メモリ5内の階層的LUT51又はADM52に反映されてもよい。例えば、メモリ装置3は、メモリ装置3の電源が失われる場合に、ダーティリストLDL,ADLのキャッシュラインDL1〜DLy−1,DLy〜DLxを階層的LUT51又はADM52へ書き込む時間分の電力を供給する別電源を確保していてもよい。この場合、メモリ装置3の電源が失われるタイミングで当該別電源からメモリ装置3へ電力が供給され、ダーティリストLDL,ADLのキャッシュラインDL1〜DLy−1,DLy〜DLxは、不揮発性メモリ5の階層的LUT51又はADM52へ書き込まれる。この場合、ダーティリストLDL,ADLのサイズを小さくすることで、確保する別電源の容量を小さくすることができ、メモリ装置3に要するコストを抑えることができる。また、ダーティリストLDL,ADLのサイズを小さくすることにより、別電源からの電源供給時にダーティリストLDL,ADLのキャッシュラインDL1〜DLy−1,DLy〜DLxを階層的LUT51又はADM52へ反映する時間を短くすることができ、安全性を高めることができる。
ダーティリストLDL,ADLのサイズはしきい値などにより調整可能であるため、ダーティリストLDL,ADLのキャッシュラインDL1〜DLy−1,DLy〜DLxを階層的LUT51及びADM52へ反映する頻度を調整することができる。これにより、不揮発性メモリ5へのアクセス頻度、メモリ装置3の処理速度、不揮発性メモリ5の寿命を調整することができる。メモリ装置3は、ダーティリストLDL,ADLのサイズを管理し、情報処理装置2などからのコマンドによりダーティリストLDL,ADLのサイズを変化可能であるため、メモリ装置3のコスト、安全性、性能、寿命のバランスを保つことができる。
図12は、本実施形態に係るLUTフラグメントと不揮発性メモリ5のページとの関係を例示するブロック図である。以下では、LUTフラグメント及びLUTキャッシュラインについて説明するが、ADMフラグメント及びADMキャッシュラインについても同様である。この図12では、ページに含まれるフラグメントの全てがLUTフラグメントの場合を例示している。しかしながら、ページに含まれるフラグメントはADMフラグメントでもよい。ページには、LUTフラグメントとADMフラグメントとが混在してもよい。
本実施形態では、階層的LUT51を生成する際に、上述のように全てのレイヤにおいて、LUTフラグメントが同じ数のエレメントを含む。この場合、各LUTフラグメントのサイズは全て同じとなり、各LUTキャッシュラインのサイズは全て同じとなる。LUTフラグメントのサイズを同じとし、LUTキャッシュラインのサイズを同じとすることで、不揮発性メモリ5上で階層的LUT51を効率的に格納することができる。
具体的には、例えば、上記図4に示すLUTフラグメント及びLUTキャッシュラインのフォーマットを用いた場合、不揮発性メモリ5上に配置される階層的LUT51の各LUTフラグメントのサイズは、レイヤに依存することなく、全て168バイトとなる。
ここで、例えば、図12に示すように不揮発性メモリ5のページサイズを1024バイトとすると、1つのページには6つのLUTフラグメントLiA〜LiFが含まれる。この場合、当該ページの余りサイズは16バイトとなり、これは1ページの容量(1024バイト)に対して十分小さい値である。したがって、ページの容量の無駄を抑えつつ、効率的にLUTフラグメントを管理することができる。
なお、不揮発性メモリコントローラ46と不揮発性メモリ5との間でLUTフラグメントの送受信を行う場合、ECC(Error-Correcting Code)を含むLUTフラグメントを送受信してもよい。この場合、例えば、1つのページに含まれるLUTフラグメントの数と、LUTフラグメントのサイズとを調整することにより、複数個のLUTフラグメントに対して無駄なくECCを付することができ、LUTフラグメントの送受信を効率的に行うことができる。
以上説明した本実施形態においては、論理アドレスを物理アドレスへ変換するアドレス変換データを階層的に記述することで、階層的LUT51のうちの一部のデータを効率的にキャッシュメモリ451に格納し、管理することができる。
本実施形態において、階層的LUT51に含まれる複数のフラグメントは同じサイズである。したがって、不揮発性メモリ5からフラグメントを読み出してキャッシュメモリ451へ格納する処理と、キャッシュメモリ451からフラグメントを読み出して不揮発性メモリ5へ格納する処理を効率的に行うことができる。
本実施形態においては、階層的LUT51が、ネームスペースごとに、論理アドレスを物理アドレスへ変換するための階層構造を持つ。このため、同じネームスペースのアドレス変換が連続する場合に、アドレス変換に必要なフラグメントがキャッシュメモリ451に格納されている可能性を高くすることができ、アドレス変換の速度を向上させることができ、キャッシュイン及びキャッシュアウトなどの処理量を少なくすることができる。
本実施形態に係る階層的LUT51において、記憶容量の少ないネームスペースの階層数は少なくすることができ、記憶容量の多いネームスペースの階層数は多くすることができ、ネームスペースの記憶容量に応じて無駄の少ないデータ構造を実現することができる。
本実施形態において、階層的LUT51に含まれる各フラグメントのサイズを、キャッシュメモリ451に含まれるキャッシュラインの単位サイズとほぼ同じにすることにより、例えばフラグメント単位又はフラグメントの整数倍でキャッシュイン及びキャッシュアウトを行うことができ、キャッシュメモリ451の管理を効率的に行うことができる。
本実施形態においては、キャッシュメモリ451に格納されているキャッシュラインを、ダーティリストDL、クリーンリストCL、フリーリストFLのいずれかに所属させるため、キャッシュラインに対応するフラグメントの状態を容易に把握することができる。
本実施形態においては、初期化部444及びアドレス変換部445によって階層的LUT51を生成することで、メモリ45Aのキャッシュメモリ451に一度に読み出されるLUTのサイズを小さくすることができる。これにより、LUTの読み出しに要する時間を短縮できる。また、メモリ装置3の起動時に第1のレイヤL1のキャッシュラインのみが読み出されるため、メモリ装置3の起動を高速化できる。ゆえに、メモリ装置3の利便性を高めることができる。
本実施形態において、メモリ装置3は、キャッシュメモリ451に含まれるダーティリストDLのサイズを管理し、情報処理装置2などからのコマンドによりダーティリストDLのサイズを変化させるとしてもよい。これにより、キャッシュメモリ451から階層的LUT51にキャッシュラインを書き戻す処理の発生頻度を制御することができ、メモリ装置3のコスト、安全性、性能、寿命のバランスを保つことができる。
本実施形態においては、階層的LUT51の1つのネームスペース内において、フラグメントに含まれるエレメントの数を例えばレイヤ間で一定とすることにより、不揮発性メモリ5上で階層的LUT51を効率的に格納することができる。また、不揮発性メモリコントローラ46と不揮発性メモリ5との間におけるキャッシュラインの送受信を効率的に行うことができる。
本実施形態において、ADMフラグメント及びLUTフラグメントのサイズは同じサイズとし、さらに、ADMキャッシュライン及びLUTキャッシュラインのサイズは同じサイズとした。これにより、キャッシュメモリ制御部447は、ADMキャッシュラインとLUTキャッシュラインとを同じフォーマットのフリーリストFL、クリーンリストCL、及び、ダーティリストDLで効率的に管理可能である。例えば、ADMキャッシュライン及びLUTキャッシュラインのフリーリストを共通とすることにより、キャッシュメモリ451の容量を効率的に使用することができる。また、書き込み制御部441は、ADMフラグメントであるか、又は、LUTフラグメントであるかを区別することなく、ADMフラグメントとLUTフラグメントとを1つの書き戻し単位及びページに混在させて不揮発性メモリ5へ書き戻すことができる。これにより、ページの容量に無駄が生じることを抑えつつ、効率的にキャッシュラインを書き戻すことができる。
本発明の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。本実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。本実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム、2…情報処理装置、3…メモリ装置、4…コントローラ、5…不揮発性メモリ、41…通信インタフェース制御部、42…書き込みバッファメモリ、43…読み出しバッファメモリ、44…プロセッサ、45A,45B…メモリ、46…不揮発性メモリコントローラ、51…階層的LUT、411…送受信制御部、412…コマンド制御部、441…書き込み制御部、442…読み出し制御部、443…ガーベージコレクション制御部、444…初期化部、445…アドレス変換部、446…データマップ管理部、447…キャッシュメモリ制御部、451…キャッシュメモリ、P…制御プログラム。
本実施形態は、メモリ装置及び方法に関する。
本実施形態は、アドレス変換データを効率的に管理するメモリ装置及び方法を提供する。
本実施形態によれば、メモリ装置は、不揮発性メモリと、キャッシュメモリと、プロセッサとを含む。プロセッサは、不揮発性メモリからキャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、対象論理アドレスに対応するデータマッピングのフラグメント、をロードし、キャッシュメモリにロードされたアドレスマッピングの複数のレイヤのフラグメントを参照して、不揮発性メモリに対して対象論理アドレスからマップされる物理アドレスへアクセスするように構成される。データマッピングの各ビットは、不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示す。複数のレイヤは、階層構造を有する。アドレスマッピングの最下レイヤを除く各レイヤは、レイヤにマップされた各セグメント論理アドレス範囲と、各セグメント論理アドレス範囲が各レイヤより狭い範囲にさらにマップされている直下レイヤの物理位置と、の対応を示す。最下レイヤは、最下レイヤにマップされた各論理アドレスと、各論理アドレスに関する不揮発性メモリの物理アドレスと、の対応を示す。データマッピングのフラグメントは、アドレスマッピングの複数のレイヤのロードされたフラグメントのそれぞれと同じサイズを有する

Claims (8)

  1. 不揮発性メモリと、
    前記不揮発性メモリに格納されており、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定された論理アドレスと、前記不揮発性メモリにおける位置を示す物理アドレスとを関連付けているアドレス変換データと、
    前記不揮発性メモリよりも高速に読み出し及び書き込み可能であり、前記アドレス変換データの一部を格納するキャッシュメモリと、
    前記アドレス変換データの階層構造にしたがって、前記キャッシュメモリに格納すべき前記アドレス変換データの一部を探索し、前記アドレス変換データの一部を前記キャッシュメモリに格納し、前記キャッシュメモリを参照することにより、前記論理アドレスを前記物理アドレスに変換するアドレス変換部と、
    書き込みコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置に、書き込み対象データを書き込む書き込み制御部と、
    読み出しコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置から、読み出し対象データを読み出す読み出し制御部と、
    を具備し、
    前記アドレス変換データに含まれる複数の所定サイズの部分データは、複数のレイヤに所属し、
    前記複数のレイヤのうちの第1のレイヤに属する第1の部分データは、前記論理アドレスと、前記複数のレイヤのうちの第1のレイヤの下位である第2のレイヤに属する複数の第2の部分データを参照するための複数の参照先情報を含み、
    前記複数の部分データのうち前記階層構造における最下位の部分データは、前記論理アドレスと前記物理アドレスとを含む、
    メモリ装置。
  2. 前記複数の部分データのそれぞれは、複数の参照先のデータが前記不揮発性メモリに連続して配置されている場合に、前記複数の参照先のデータのうちの先頭を示す先頭参照先情報を含み、前記複数の参照先のデータのうち先頭ではない他の参照先情報を省略する、請求項1に記載のメモリ装置。
  3. 前記アドレス変換データに含まれる最上位レイヤに所属する複数の最上位部分データのそれぞれは、複数のネームスペースのそれぞれに対応する、請求項1又は請求項2に記載のメモリ装置。
  4. 前記アドレス変換データは、前記複数のネームスペースの記憶容量に応じて前記複数のネームスペースの階層数が決定され、
    記憶容量の少ないネームスペースの階層数は少なく、記憶容量の多いネームスペースの階層数は多い、請求項3に記載のメモリ装置。
  5. 前記複数の部分データのそれぞれの前記所定のサイズは、前記キャッシュメモリに含まれるキャッシュラインの単位サイズに対応する、請求項1乃至請求項4のいずれか1項に記載のメモリ装置。
  6. 前記不揮発性メモリは、前記不揮発性メモリに格納されている各データが有効であるか無効であるかを示すデータマップをさらに格納し、
    前記データマップのうちの一部であるマップ部分データが前記キャッシュメモリに格納される場合、前記マップ部分データは、前記所定のサイズで前記キャッシュメモリに格納される、請求項5に記載のメモリ装置。
  7. 前記キャッシュメモリは、複数のキャッシュラインを含み、
    前記複数のキャッシュラインのそれぞれは、
    前記キャッシュメモリにおいて書き換えられたが前記不揮発性メモリに格納されている前記アドレス変換データに対しては反映されていない第1のリストと、
    前記キャッシュメモリにおいて書き換えられ、前記不揮発性メモリに格納されている前記アドレス変換データに対して反映された第2のリストと、
    書き換え候補である第3のリストと、
    のいずれかに属しており、
    前記アドレス変換部は、前記複数のキャッシュラインのそれぞれが前記第1乃至前記第3のリストのうちのいずれに属するかを切り替える、
    請求項5又は請求項6に記載のメモリ装置。
  8. 情報処理装置と、
    前記情報処理装置と通信可能に接続されているメモリ装置と、
    を具備し、
    前記メモリ装置は、
    不揮発性メモリと、
    前記不揮発性メモリに格納されており、複数のレイヤを持つ階層構造により、前記情報処理装置から書き込み先又は読み出し先として指定された論理アドレスと、前記不揮発性メモリの位置を示す物理アドレスとを関連付けているアドレス変換データと、
    前記不揮発性メモリよりも高速に読み出し及び書き込み可能であり、前記アドレス変換データの一部を格納するキャッシュメモリと、
    前記アドレス変換データの階層構造にしたがって、前記キャッシュメモリに格納すべき前記アドレス変換データの一部を探索し、前記アドレス変換データの一部を前記キャッシュメモリに格納し、前記キャッシュメモリを参照することにより、前記論理アドレスを前記物理アドレスに変換するアドレス変換部と、
    前記情報処理装置から書き込みコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置に、前記情報処理装置から受信した書き込み対象データを書き込む書き込み制御部と、
    前記情報処理装置から読み出しコマンドを受信した場合に、前記アドレス変換部によって取得された前記物理アドレスの示す位置から、読み出し対象データを読み出し、前記読み出し対象データを前記情報処理装置へ送信する読み出し制御部と、
    を具備し、
    前記アドレス変換データに含まれる複数の所定サイズの部分データは、複数のレイヤに所属し、
    前記複数のレイヤのうちの第1のレイヤに属する第1の部分データは、前記論理アドレスと、前記複数のレイヤのうちの第1のレイヤの下位である第2のレイヤに属する複数の第2の部分データを参照するための複数の参照先情報を含み、
    前記複数の部分データのうち前記階層構造における最下位の部分データは、前記論理アドレスと前記物理アドレスとを含む、
    情報処理システム。
JP2020017134A 2020-02-04 2020-02-04 メモリ装置及び方法 Active JP7048650B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020017134A JP7048650B2 (ja) 2020-02-04 2020-02-04 メモリ装置及び方法
JP2022017352A JP7238178B2 (ja) 2020-02-04 2022-02-07 メモリ装置及びメモリ装置を制御する方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020017134A JP7048650B2 (ja) 2020-02-04 2020-02-04 メモリ装置及び方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016173680A Division JP2018041204A (ja) 2016-09-06 2016-09-06 メモリ装置及び情報処理システム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022017352A Division JP7238178B2 (ja) 2020-02-04 2022-02-07 メモリ装置及びメモリ装置を制御する方法

Publications (2)

Publication Number Publication Date
JP2020074222A true JP2020074222A (ja) 2020-05-14
JP7048650B2 JP7048650B2 (ja) 2022-04-05

Family

ID=70610358

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020017134A Active JP7048650B2 (ja) 2020-02-04 2020-02-04 メモリ装置及び方法

Country Status (1)

Country Link
JP (1) JP7048650B2 (ja)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311813A (ja) * 1996-05-24 1997-12-02 Mitsubishi Electric Corp オペレーティングシステムのメモリ管理装置
JP2004151939A (ja) * 2002-10-30 2004-05-27 Matsushita Electric Ind Co Ltd 記憶装置
JP2012063882A (ja) * 2010-09-14 2012-03-29 Toshiba Corp 記憶装置、電子機器及び誤りデータの訂正方法
JP2013065310A (ja) * 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリを有するシステムのための高速ツリー平坦化
JP2013522748A (ja) * 2010-03-15 2013-06-13 アーム・リミテッド 階層的な変換テーブル制御
JP2013152676A (ja) * 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置
US9218294B1 (en) * 2012-06-06 2015-12-22 Sk Hynix Memory Solutions Inc. Multi-level logical block address (LBA) mapping table for solid state
JP2016115355A (ja) * 2014-12-11 2016-06-23 株式会社東芝 情報処理装置、プログラム、及び、情報処理システム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311813A (ja) * 1996-05-24 1997-12-02 Mitsubishi Electric Corp オペレーティングシステムのメモリ管理装置
JP2004151939A (ja) * 2002-10-30 2004-05-27 Matsushita Electric Ind Co Ltd 記憶装置
JP2013522748A (ja) * 2010-03-15 2013-06-13 アーム・リミテッド 階層的な変換テーブル制御
JP2012063882A (ja) * 2010-09-14 2012-03-29 Toshiba Corp 記憶装置、電子機器及び誤りデータの訂正方法
JP2013065310A (ja) * 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリを有するシステムのための高速ツリー平坦化
JP2013152676A (ja) * 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置
US9218294B1 (en) * 2012-06-06 2015-12-22 Sk Hynix Memory Solutions Inc. Multi-level logical block address (LBA) mapping table for solid state
JP2016115355A (ja) * 2014-12-11 2016-06-23 株式会社東芝 情報処理装置、プログラム、及び、情報処理システム

Also Published As

Publication number Publication date
JP7048650B2 (ja) 2022-04-05

Similar Documents

Publication Publication Date Title
US10628303B2 (en) Storage device that maintains a plurality of layers of address mapping
US20230315342A1 (en) Memory system and control method
US11669444B2 (en) Computing system and method for controlling storage device
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US11748256B2 (en) Memory system and method for controlling nonvolatile memory
US11042487B2 (en) Memory system and method for controlling nonvolatile memory
JP6967986B2 (ja) メモリシステム
US11263147B2 (en) Memory system including logical-to-physical address translation table in a first cache and a compressed logical-to-physical address translation table in a second cache
US20230401149A1 (en) Memory system and information processing system
JP7077151B2 (ja) メモリシステム
JP7048650B2 (ja) メモリ装置及び方法
JP7238178B2 (ja) メモリ装置及びメモリ装置を制御する方法
JP7366222B2 (ja) メモリシステムおよび制御方法
US20240086096A1 (en) Memory system and information processing system
JP6640940B2 (ja) メモリシステムの制御方法
JP2024043007A (ja) メモリシステムおよび制御方法
JP2023021450A (ja) メモリシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220324

R151 Written notification of patent or utility model registration

Ref document number: 7048650

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151