JP2021149549A - ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法 - Google Patents
ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法 Download PDFInfo
- Publication number
- JP2021149549A JP2021149549A JP2020049112A JP2020049112A JP2021149549A JP 2021149549 A JP2021149549 A JP 2021149549A JP 2020049112 A JP2020049112 A JP 2020049112A JP 2020049112 A JP2020049112 A JP 2020049112A JP 2021149549 A JP2021149549 A JP 2021149549A
- Authority
- JP
- Japan
- Prior art keywords
- lut
- cache
- target portion
- write buffer
- storage
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
【課題】レイテンシを悪化させることがないようにアドレス変換テーブルのためのキャッシュ制御を行うことができるストレージ装置を提供する。【解決手段】ストレージ装置は、コントローラが、アドレス変換テーブル21の一部を一時的に格納するためのセットアソシアティブ方式のキャッシュ領域201と、アドレス変換テーブルの更新部分をストレージへ書き込むためのライトバッファ領域202とを、ホスト内の第1メモリ上またはコントローラ内の第2メモリ上に確保する。コントローラは、アドレス変換テーブルの更新を伴う要求をホストから受信した場合、キャッシュ領域およびライトバッファ領域を検索して、アドレス変換テーブル中の更新対象部分が存在するか否かを判定し、更新対象部分がストレージへの書き込み待ちの状態でライトバッファ領域に存在する場合、ライトバッファ領域上の更新対象部分を更新する。【選択図】図3
Description
本発明の実施形態は、ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法に関する。
ストレージ装置では、ストレージ装置によって提供される記憶領域上の位置を示す論理アドレスと、ストレージ装置上の実際の位置を示す物理アドレスとの対応関係が管理される。論理アドレスと物理アドレスとの対応関係は、LUT(look up table)などと称されるアドレス変換テーブルとして保持される。
また、近年、ストレージ装置の大容量化に伴って、LUTのサイズも増大傾向にある。その一方で、LUTをキャッシングするためのデータ領域のサイズを抑えたいという要望も強い。このようなことから、LUTの一部のみをキャッシングすることが一般的になりつつある。
LUTの一部のみをキャッシングする場合におけるキャッシュ制御は、ストレージ装置のレイテンシを悪化させることがないように行うことが要求される。
本発明が解決しようとする課題は、レイテンシを悪化させることがないようにアドレス変換テーブルのためのキャッシュ制御を行うことができるストレージ装置およびアドレス変換テーブルのキャッシュ制御方法を提供することである。
実施形態によれば、ストレージ装置は、ストレージとコントローラとを具備する。コントローラは、ホストからの要求に応じて、ストレージへのデータの書き込みまたはストレージからのデータの読み出しを制御する。コントローラは、ストレージ装置の論理アドレス空間とストレージの物理アドレス空間とを対応づけるアドレス変換テーブルをストレージに格納し、その一部を一時的に格納するためのセットアソシアティブ方式のキャッシュ領域と、アドレス変換テーブルの更新部分をストレージへ書き込むためのライトバッファ領域とを、ホスト内の第1メモリ上またはコントローラ内の第2メモリ上に確保する。コントローラは、アドレス変換テーブルの更新を伴う要求をホストから受信した場合、キャッシュ領域およびライトバッファ領域を検索して、アドレス変換テーブル中の更新対象部分が存在するか否かを判定する。コントローラは、更新対象部分がストレージへの書き込み待ちの状態でライトバッファ領域に存在する場合、ライトバッファ領域上の更新対象部分を更新する。
以下、実施の形態について、図面を参照して説明する。
(第1実施形態)
図1は、第1実施形態に係るストレージ装置1の一構成例を示す図である。ストレージ装置1は、例えばSolid State Drive (SSD)として実現されている。ストレージ装置1は、PCI Express(PCIe)(登録商標)などのインターフェースを介して、外部の情報処理装置であるホスト2と接続される。ホスト2は、例えばPC(personal computer)やサーバである。また、ホスト2は、DRAM52を有している。DRAM52は、ストレージ20と比較して、高速のメモリである。
図1は、第1実施形態に係るストレージ装置1の一構成例を示す図である。ストレージ装置1は、例えばSolid State Drive (SSD)として実現されている。ストレージ装置1は、PCI Express(PCIe)(登録商標)などのインターフェースを介して、外部の情報処理装置であるホスト2と接続される。ホスト2は、例えばPC(personal computer)やサーバである。また、ホスト2は、DRAM52を有している。DRAM52は、ストレージ20と比較して、高速のメモリである。
ストレージ装置1は、たとえばSoC(system on a chip)として構成されるコントローラ10と、ストレージ20とを有している。
コントローラ10は、ユーザデータの書き込み要求(ライトコマンド)を受信した場合、受信したユーザデータをストレージ20へ書き込むべくストレージ20を制御する。また、コントローラ10は、ユーザデータの読み出し要求(リードコマンド)を受信した場合、要求されたユーザデータをストレージ20から読み出すべくストレージ20を制御する。また、コントローラ10は、受信したライトコマンドやリードコマンドに含まれる論理アドレスを、ストレージ20上の実際の位置を示す物理アドレスに変換する。論理アドレスは、ストレージ20の記憶領域上の位置を示すアドレスである。論理アドレスから物理アドレスへの変換は、アドレス解決などと称される。
ストレージ20は、例えばNAND型フラッシュメモリ(NANDメモリ)である。ストレージ20は、LUT(Look Up Table)21とユーザデータ22とを記憶する。LUT21には論理アドレスと物理アドレスとの対応関係が記憶されている。ユーザデータ22は、ライトコマンドに基づいてストレージ20に記憶されたデータである。また、ユーザデータ22は、リードコマンドによってストレージ20からの読み出しが要求され得るデータでもある。
本実施形態のストレージ装置1は、ホスト2のDRAM52上に、キャッシュ領域(LUTキャッシュ201)およびライトバッファ(LUT用WB202)を確保する。LUTキャッシュ201は、セットアソシアティブ方式(N−way)のキャッシュ領域としてホスト2のDRAM52上に確保される。ストレージ装置1は、LUTキャッシュ201に、LUT21の一部を一時的に記憶させる。以降、LUTキャッシュ201に記憶される、LUT21の一部のことを部分LUTと呼ぶ。また、ストレージ装置1は、LUT用WB202を、キャッシュ制御を効率的に行うために用いる。ストレージ装置1からホスト2のDRAM52へのアクセスは、たとえばUFS(universal flash storage)規格のオプション機能であるUME(unified memory extension)規格に準拠した手順で実行し得る。また、NVM Express(NVNe)規格のSSDの場合、HMB(host memory buffer)規格に準拠した手順で実行し得る。以下において、本実施形態のストレージ装置1において実行される、LUTキャッシュ201およびLUT用WB202を用いたLUT21のためのキャッシュ制御について詳述する。
図2は、第1実施形態に係るストレージ装置1が有するコントローラ10の一構成例を示す図である。
コントローラ10は、制御部11、ホストインターフェース(ホストI/F)部12、NANDコントローラ13、DMAコントローラ14、LUTキャッシュ管理部15、ライトバッファ検索部16およびリード/ライト部17を有する。
コントローラ10は、制御部11、ホストインターフェース(ホストI/F)部12、NANDコントローラ13、DMAコントローラ14、LUTキャッシュ管理部15、ライトバッファ検索部16およびリード/ライト部17を有する。
制御部11は、ストレージ装置1内の各部を統括的に制御する。制御部11は、たとえば複数のCPU111によって構成される。つまり、複数のCPU111が連携して、ホストインターフェース部12、NANDコントローラ13、DMAコントローラ14、LUTキャッシュ管理部15、ライトバッファ検索部16およびリード/ライト部17を制御する。ホストインターフェース部12、NANDコントローラ13、DMAコントローラ14、LUTキャッシュ管理部15、ライトバッファ検索部16およびリード/ライト部17は、たとえば電子回路としてハードウェア的に構築されてもよいし、たとえばストレージ20からコントローラ10内にロードされるプログラムをCPU111が実行することによってソフトウェア的に構築されてもよい。
ホストインターフェース部12は、ストレージ装置1とホスト2との間の通信を実行する。
NANDコントローラ13は、ストレージ20へのデータの書き込み処理およびストレージ20からのデータの読み出し処理を実行する。
DMAコントローラ14は、ホストインターフェース部12とNANDコントローラ13との間のデータ転送を制御する。DMAコントローラ14は、LUT21のキャッシュ制御に関する機能として、データ転送制御機能を有している。DMAコントローラ14は、ストレージ20に格納されているLUTを読み出して、ホスト2のDRAM52上に確保されているLUTキャッシュ201やLUT用WB202に書き込む。DMAコントローラ14は、LUTキャッシュ201やLUT用WB202に格納されているLUTを更新する。DMAコントローラ14は、LUTキャッシュ201とLUT用WB202との間でLUTを転送する。DMAコントローラ14は、LUT用WB202に格納されているLUTをNANDコントローラ13へ書き込む。
LUTキャッシュ管理部15は、ライトバッファ検索部16と連携して、ホスト2のDRAM52上に確保されるLUT用WB202を用いながら、同じくホスト2のDRAM52上に確保されるLUTキャッシュ201の管理を実行する。LUTキャッシュ201の管理とは、たとえば、ホスト2からユーザデータの読み出しが要求された際、ユーザデータの論理アドレスのアドレス変換に必要なLUT21の一部をストレージ20から読み出してLUTキャッシュ201に記憶させることである。あるいは、LUTキャッシュ201の管理とは、たとえば、ホスト2からユーザデータの書き込みが要求された際、ホスト2が指定する論理アドレスと、物理アドレスとの対応づけを行うことである。LUTキャッシュ201の管理をLUT21の更新ともいう。
ライトバッファ検索部16は、LUT用WB202を検索する。ライトバッファ検索部16は、たとえば、ホスト2からユーザデータの読み出しが要求された際、ユーザデータの論理アドレスの部分LUTがLUTキャッシュ201に存在しない場合にLUT用WB202を検索する。また、ライトバッファ検索部16は、たとえば、ホスト2からユーザデータの書き込みが要求された際、ユーザデータの論理アドレスの部分LUTがLUTキャッシュ201に存在しない場合にLUT用WB202を検索する。検索した結果、ユーザデータの論理アドレスの部分LUTがLUT用WB202に存在した場合、それを用いてアドレス変換ができる。
リード/ライト部17は、ストレージ20へのユーザデータの書き込みまたはストレージ20からのユーザデータの読み出しをNANDコントローラ13に指示する。
次に、図4を参照して、LUT21のためのキャッシュ制御の手法に関する一比較例を説明する。図4は、ストレージ装置において一般的に行われると推測される、キャッシュ制御の手法を示す図である。
ここでは、LUTキャッシュ201が、256個のインデックスを有し、かつ、各インデックスに対して8つのエントリが属する8−Wayのキャッシュとして構成されることを想定する。また、LUTキャッシュ201へのLUT21のキャッシングは、512バイト単位で行われるものと想定する。
LUT21は、512バイト単位で細分化されて、LUTキャッシュ201のエントリに格納される。以下、512バイト単位で細分化され、エントリに格納されたLUT21の一部分それぞれをLUTテーブルと称することがある。一つのLUTテーブルが格納されるエントリは、LUTテーブルに対応する論理アドレスに基づいて決定される。また、ストレージ20やLUT用WB203からLUTテーブルを読み出してLUTキャッシュ201へ書き込むことを、リフィルと称することがある。さらに、LUTキャッシュ201上やLUT用WB202上のLUTテーブルをストレージ20へ書き込むことを、ライトバックと称することがある。ライトバックのために、LUTキャッシュ201上のLUTテーブルがLUT用WB202へ書き込まれることや、LUT用WB202上のLUTテーブルがストレージ20へ書き込まれることは、フラッシュとも称される。LUTキャッシュ201およびLUT用WB202の一方からLUTテーブルを読み出して他方へ書き込むことは、コピーとも称される。
図4中、LUTアドレス更新要求とは、ホスト2が発行する、LUT21の更新を伴う要求である。具体的には、データの書き込みを要求するライトコマンドである。
また、図4中、符号a1で示される、ハッチングが施されていないブロックは、ストレージ20上のLUT21との間で内容が一致しているLUTテーブルを表している。以下、この状態を、クリーンと称することがある。また、符号a2で示される種類のハッチングが施されているブロックは、ストレージ20からの読み出し後に更新されてストレージ20上のLUT21との間で内容が一致していないLUTテーブルを表している。以下、この状態を、ダーティと称することがある。さらに、符号a3で示される種類のハッチングが施されているブロックは、同一の内容がLUT用WB202からストレージ20へLUT21として記憶されたことによって、ダーティな状態からクリーンな状態へ移行したLUTテーブルを表している。
また、以下、クリーンなLUTテーブルを格納する、LUTキャッシュ201内のエントリをクリーンエントリと称することがある。一方、ダーティなLUTテーブルを格納する、LUTキャッシュ201内のエントリをダーティエントリと称することがある。
一比較例のストレージ装置1は、受信したライトコマンドに基づいて、ストレージ20へユーザデータの書き込みを行った場合、LUT21の更新を実行する。LUT21の更新にあたり、ストレージ装置1は、更新対象部分がLUTキャッシュ201に存在するか否かを調べる。更新対象部分とは、受信したライトコマンドで指定される論理アドレスに対応するLUTテーブルである。つまり、更新対象部分とは、更新対象のLUTテーブルである。ストレージ装置1は、受信したライトコマンドで指定される論理アドレスによって決定されるインデックスの中に、更新対象部分を格納するエントリが存在するか否かを調べる。
更新対象部分がLUTキャッシュ201に存在する場合、ストレージ装置1は、LUTキャッシュ201上において更新対象部分の更新を行う(b1)。これにより、更新対象部分を格納するエントリは、クリーンエントリからダーティエントリへ移行する。なお、既にダーティエントリへ移行しているエントリに格納されるダーティなLUTテーブルに対してさらに更新を行う場合も発生し得る。
更新対象部分がLUTキャッシュ201に存在しない場合、ストレージ装置1は、更新対象部分がLUT用WB202に存在するか否かを調べる。ストレージ装置1は、ポインタで示されるLUTテーブルを基点として、時間的に新しい順にLUT用WB202内のLUTテーブルを参照し、更新対象部分の有無を調べる。また、ストレージ装置1は、ポインタを用いてLUTテーブルをLUT用WB202へ格納する。ストレージ装置1は、先のポインタと合わせて、ストレージ20への書き込みが完了しているLUTテーブルを示すポインタも使用する。これら2つのポインタに基づき、ストレージ装置1は、LUT用WB202上においてストレージ20への書き込みが完了していないLUTテーブルのみを参照してLUT用WB202へ格納することができる。
更新対象部分がLUT用WB202に存在する場合、ストレージ装置1は、更新対象部分をLUT用WB202から読み出してLUTキャッシュ201へ書き込む(c1)。更新対象部分がLUT用WB202に存在する場合、ライトバックのために更新対象部分がLUTキャッシュ201から読み出されてLUT用WB202へ書き込まれた後、ストレージ20への書き込みが完了していない。または、更新対象部分のストレージ20への書き込みは完了したが更新対象部分がLUT用WB202から追い出されていない。
更新対象部分がLUT用WB202に存在しない場合、ストレージ装置1は、更新対象部分をストレージ20から読み出してLUTキャッシュ201へ書き込む(c2)。この時、ストレージ装置1は、論理アドレスによって決定されるインデックスの中のクリーンエントリへ更新対象部分を読み出す。結果、以前、そのエントリに格納されていたLUTテーブルは、LUTキャッシュ201上に存在しないものとなる。このことをキャッシュアウトと呼ぶ。
更新対象部分をLUTキャッシュ201へリフィルしたストレージ装置1は、LUT21上において更新対象部分の更新を行う(b1)。これにより、更新対象部分を格納するエントリは、リフィル直後、クリーンエントリからダーティエントリへ移行することになる。
LUTテーブルのLUTキャッシュ201へのリフィル時、論理アドレスによって決定されるインデックスに属する8つのエントリすべてがダーティエントリである場合、ストレージ装置1は、これらダーティエントリに格納されるLUTテーブルの一部または全部を、LUT用WB202経由でストレージ20へ書き込む(c3_1,c3_2)。
ストレージ20への書き込みが、たとえばm(mは2以上の自然数)ページ単位で行われる場合、LUT用WB202のLUTテーブルは、32×m個ずつストレージ20へ書き込まれる。より詳しくは、512バイトのLUTテーブルを、16Kバイトのページに32個ずつ収めるように、ストレージ20に対するmページ単位の書き込みが行われる。
また、LUTキャッシュ201のダーティエントリは、LUT用WB202に書き込まれ、かつ、LUT用WB202から読み出し可能な状態となった時点でクリーンエントリへ移行する。クリーンエントリに格納されるLUTテーブルは、LUTキャッシュ201から追い出すことが可能である。
また、ダーティな状態のLUTテーブルはLUTキャッシュ201から追い出されることがない。そのため、ライトバック中のLUTテーブルがLUTキャッシュ201上でさらに更新された場合、さらに更新されたLUTテーブルのライトバックが完了するまで、このLUTテーブルについてのリフィルは発生しない。従って、前の更新についてのライトバックが実行中であったとしても、LUTキャッシュ201上でのLUTテーブルの更新を実行することができる。
一比較例においては、LUT21の更新がLUTキャッシュ201上の特定のインデックスに集中した場合、その特定のインデックスでのリフィルとライトバックが頻発する。さらに、その特定のインデックスに属するエントリへ格納されるLUTテーブルについての更新が頻発した場合は、同一のLUTテーブルのリフィルとライトバックとを繰り返すことになる。このことは、LUT21の更新に関する負荷を高めることになり、ストレージ装置1のレイテンシを悪化させかねない。
また、一比較例においては、データの読み出しのためのアドレス解決に必要なLUTテーブルのキャッシュアウトを誘発する可能性がある。このことも、キャッシュヒット率の低下を招き、ストレージ装置1のレイテンシを悪化させる要因となる。
また、一比較例においては、LUT21の更新をLUTキャッシュ201上において行うものとしているので、更新対象部分がLUTキャッシュ201で見つかった場合、LUT用WB202を調べる必要がない。もし、その更新対象部分がライトバックのためにLUT用WB202上に存在しても、さらなる更新でダーティな状態が継続し、LUTキャッシュ201から追い出されることがなくなるので、一貫性は保たれる。しかし、LUTキャッシュ201に居座ることが、他のLUTテーブルのリフィルの妨げになる可能性がある。
次に、図3を参照して、本実施形態のストレージ装置が適用するLUT21のためのキャッシュ制御の手法を説明する。図3は、本実施形態のストレージ装置1において実行されるキャッシュ制御の手法を示す図である。図3中、符号a1で示されるハッチングが施されていないブロックは、クリーンなLUTテーブルを表している。符号a2で示される種類のハッチングが施されているブロックは、ダーティなLUTテーブルを表している。符号a3で示される種類のハッチングが施されているブロックは、ダーティな状態からクリーンな状態へ移行したLUTテーブルを表している。
本実施形態のストレージ装置1は、ライトコマンドに基づいて、ストレージ20へのユーザデータの書き込みを行った場合、受信したライトコマンドで指定される論理アドレスと対応づけられる物理アドレスを変更する。すなわち、本実施形態のストレージ装置1は、LUT21の更新を実行する。このLUT21の更新にあたり、LUTキャッシュ管理部15が、ライトバッファ検索部16と連携して、まず、LUT用WB202の検索を実行する。更新対象部分が見つからなかった場合、LUTキャッシュ管理部15は、次いで、LUTキャッシュ201の検索を実行する。
更新対象部分が、更新中の状態でLUT用WB202に存在する場合には、LUTキャッシュ管理部15は、前述の一比較例とは異なり、LUT用WB202上において更新対象部分の更新を行う(b2)。更新中の状態とは、ダーティからクリーンへの移行待ちの状態である。LUTキャッシュ管理部15は、LUT用WB202上の更新対象部分がクリーンへ移行したとき、LUT用WB202とLUTキャッシュ201との間で更新対象部分の同期を取る処理を実行する。
このように、更新対象部分が、更新中の状態でLUT用WB202に存在する場合、LUTキャッシュ管理部15は、LUT用WB202上において更新対象部分の更新を行う。従って、LUTキャッシュ201の各インデックスについて保持できるダーティな状態のLUTテーブルの数を増やすことができる。これにより、たとえば同一のLUTテーブルが頻繁にLUTキャッシュ201へリフィルされ、ライトバックされることを防ぐことができる。よって、たとえばユーザデータの読み出しのためのアドレス解決に必要なLUTテーブルのキャッシュアウトの機会を減らすことができる。これにより、ユーザデータの読み出し時におけるLUTテーブルのリフィルによるコマンド応答時間の増加を防ぐことができる。
更新対象部分が、更新中の状態でLUT用WB202に存在しない場合、LUTキャッシュ管理部15は、LUTキャッシュ201の検索を実行する。LUTキャッシュ201に存在する場合、LUTキャッシュ管理部15は、LUTキャッシュ201上のLUTテーブルの更新を実行する(b1)。
本実施形態のストレージ装置1では、ストレージ装置1のレイテンシを悪化させることを防ぐことができる。さらには、LUT用WB202のサイズを大きく確保できるので、ストレージ20への書き込み頻度を下げることも達成される。
なお、更新中の状態でLUT用WB202に存在するダーティな状態のLUTテーブルは、たとえば、Mページ分溜まったタイミングでストレージ20へ書き込まれる(c1)。LUT用WB202上のLUTテーブルがクリーンな状態へ移行すると、LUTキャッシュ管理部15は、LUTキャッシュ201とLUT用WB202との双方に存在するLUTテーブルの同期を取る処理を実行する。
また、更新対象部分が、LUTキャッシュ201に存在せず、更新中の状態でLUT用WB202に存在する場合、LUTキャッシュ管理部15は、LUT用WB202からLUTキャッシュ201へのリフィルを行わず、LUT用WB202のみについて更新を実行する。
もし、データの読み出しのために更新対象部分が必要になった場合、LUT用WB202上での更新処理が完了し、LUTキャッシュ201のリフィル範囲が更新された後に、LUTキャッシュ201へのリフィルが行われるので問題はない。つまり、本実施形態のストレージ装置1は、ユーザデータの読み出しに関しては、ストレージ装置1において一般的に行われる、LUT21のためのキャッシュ制御の手法を採用する。LUT21のためのキャッシュ制御の手法とは、具体的には、LUTキャッシュ201を検索し、更新対象部分が存在しない場合、LUT用WB202またはストレージ20からリフィルすることである。
更新対象部分が、LUTキャッシュ201に存在せず、かつ、更新中の状態でLUT用WB202にも存在しない場合、LUTキャッシュ管理部15は、LUTキャッシュ201へのリフィルを行う(c2)。更新対象部分が、更新中の状態でLUT用WB202に存在していれば、LUTキャッシュ管理部15は、LUT用WB202から読み出して、LUTキャッシュ201へ書き込む。また、更新対象部分が、更新中の状態でLUT用WB202に存在していなければ、LUTキャッシュ管理部15は、ストレージ20から読み出して、LUTキャッシュ201へ書き込む。LUTキャッシュ管理部15は、LUTキャッシュ201上において、リフィルしたLUTテーブル更新対象部分の更新を行う(b1)。なお、図3中、LUT用WB202内において示されるリフィルのための検索範囲は、ユーザデータの書き込み時に更新対象部分を探し出す場合の更新のための検索範囲とは異なる。現在更新中のLUTテーブルはLUTキャッシュ201のリフィル対象から除外する。
また、LUTキャッシュ管理部15は、LUTキャッシュ201上において更新または参照対象のLUTテーブルが属するインデックスが、ダーティエントリで満たされており、リフィル用のエントリを割り当てることができなかった場合、つまり、そのインデックスに属する8つのエントリがすべてダーティエントリであり、新たなLUTテーブルをリフィルするためのクリーンエントリがない状態で、新たなリフィル要求が発生した場合、それらのダーティエントリの一部または全部をLUT用WB202にコピーすべく書き込む(c3)。本実施形態のストレージ装置1では、LUTキャッシュ管理部15は、その時点でダーティエントリをクリーンエントリへ移行させる。
図5は、本実施形態のストレージ装置1におけるLUT21の更新手順の一例を示すフローチャートである。
ライトコマンドを受信した場合(開始)、ストレージ装置1は、受信したライトコマンドに含まれる論理アドレスに対応するLUTテーブルである更新対象のLUTテーブルが、LUT用WB202に存在するか否か判断する(S12)。
更新対象のLUTテーブルがLUT用WB202に存在する場合(S12:YES)、ストレージ装置1は、LUT用WB202上の更新対象のLUTテーブルを更新し(S13)、LUTテーブルの更新の処理を終了する(終了)。
更新対象のLUTテーブルがLUT用WB202に存在しない場合(S12:NO)、ストレージ装置1は、更新対象のLUTテーブルがLUTキャッシュ201に存在するか否か判断する(S14)。
更新対象のLUTテーブルがLUTキャッシュ201に存在する場合(S14:YES)、ストレージ装置1は、LUTキャッシュ201に存在する更新対象のLUTテーブルを更新し(S19)、LUTテーブルの更新の処理を終了する(終了)。
更新対象のLUTテーブルがLUTキャッシュ201に存在しない場合(S14:NO)、ストレージ装置1は、受信したライトコマンドに含まれる論理アドレスによって決定される、LUTキャッシュ201のインデックスである対象のインデックスがダーティエントリで満たされているか否かを調べる(S15)。
対象のインデックスがダーティエントリで満たされている場合(S15:YES)、ストレージ装置1は、対象のインデックスに属するダーティエントリに格納されているLUTテーブルをLUT用WB202へコピーする(S16)。また、ストレージ装置1は、対象のインデックスに属するダーティエントリをクリーンエントリへ移行させる(S17)。
対象のインデックスに属するダーティエントリをクリーンエントリへ移行させた後、ストレージ装置1は、更新対象のLUTテーブルをストレージ20から読み出し、LUTキャッシュ201に記憶させる(リフィル、S18)。そして、ストレージ装置1は、LUTキャッシュ201に存在する更新対象のLUTテーブルを更新し(S19)、LUTテーブルの更新の処理を終了する(終了)。
対象のインデックスがダーティエントリで満たされていない場合(S15:NO)、ストレージ装置1は、更新対象のLUTテーブルをストレージ20から読み出し、LUTキャッシュ201へ記憶させる(リフィル、S18)。そして、ストレージ装置1は、LUTキャッシュ201に存在する更新対象のLUTテーブルを更新し(S19)、LUTテーブルの更新の処理を終了する(終了)。
図6は、本実施形態のストレージ装置1のLUT21の更新に関わる機能ブロックの一例を示す図である。ここでは、コントローラ10を構成する複数のCPU111の中の2つのCPU111(CPU[0]、CPU[1])が、LUT21の更新に携わるものと想定する。
たとえばライトコマンドであるLUTアドレス更新要求をホスト2から受けると、コントローラ10のCPU[0]111は、ライトバッファ検索部16に対して、ホスト2が指定する論理アドレスに対応するLUTテーブルがLUT用WB202に存在するか否か検索することを指示する(d1)。
LUTテーブルがLUT用WB202に存在する場合、ライトバッファ検索部16は、CPU[1]111に対して、LUTテーブルがLUT用WB202に存在することを通知する(d2)。また、LUTテーブルがLUT用WB202に存在しない場合、ライトバッファ検索部16は、LUTキャッシュ管理部15に対して、LUTテーブルがLUTキャッシュ201に存在するか否か検索することを指示する(d3)。
ライトバッファ検索部16からの通知を受けたCPU[1]111は、DMAコントローラ14を用いて、LUTアドレス更新要求においてホスト2が指定する論理アドレスに対応する、LUT用WB202上のLUTテーブルを更新する(d4)。
DMAコントローラ14は、CPU[1]111から指示されたLUTテーブルの更新を完了すると、その完了をCPU[0]111に通知する(d5)。
また、CPU[1]111は、LUTテーブルの更新をDMAコントローラ14へ指示する際に指定する論理アドレス、物理アドレスなどを取得するために、LUTアドレス更新要求を参照する(d6)。
LUTキャッシュ管理部15は、LUTテーブルの検索結果に基づき、CPU[1]111に対して各種指示または通知を送信する(d7_1、d7_2、d7_3)。
LUTテーブルがLUTキャッシュ201に存在する場合、LUTキャッシュ管理部15は、CPU[1]111に対して、LUTキャッシュ201上のLUTテーブルの更新を指示する(d7_1)。LUTキャッシュ201上のLUTテーブルの更新を指示されたCPU[1]111は、DMAコントローラ14を用いて、LUTキャッシュ201上のLUTテーブルを更新する(d8)。DMAコントローラ14は、CPU[1]111から指示されたLUTテーブルの更新を完了すると、その完了をCPU[0]111に通知する(d5)。
LUTテーブルがLUTキャッシュ201に存在しない場合、LUTキャッシュ管理部15は、CPU[1]111に対して、LUTキャッシュ201に更新対象のLUTテーブルが存在しないことを通知する(d7_2)。LUTキャッシュ201に更新対象のLUTテーブルが存在しないことをLUTキャッシュ管理部15から通知されたCPU[1]111は、更新対象のLUTテーブルのストレージ20からのLUTキャッシュ201へのリフィルを実行する(d9)。このリフィルが完了したら、CPU[1]111は、CPU[0]111に対して、LUTの更新の再試行を指示する(d10)。再試行時には、更新対象のLUTテーブルがLUTキャッシュ201にリフィルされているので、LUTキャッシュ201上でのLUTテーブルの更新が実行される。
さらに、LUTキャッシュ管理部15は、対象のインデックスの全エントリがダーティエントリであり、新たにリフィル用のエントリが割り当てられなかった場合、CPU[1]111に対して、ダーティエントリのライトバックを指示する(d7_3)。CPU[1]111は、CPU[0]と連携して、そのインデックスのすべてのダーティエントリについて、DMAコントローラ14を用いて、指示されたライトバックを実行する(d8)。DMAコントローラ14は、このライトバックのためのLUTキャッシュ201上のLUTテーブルのLUT用WB202への書き込みを完了する毎に、その完了をCPU[1]111に通知する(d11)。
このように、本実施形態のストレージ装置1においては、LUT21の更新が特定のインデックスに集中し、かつ、その特定のインデックスに属するエントリへ格納されるべき同一のLUTテーブルの更新が頻発した場合であっても、LUT用WB202上においてLUTテーブルを繰り返し更新するだけで対処できる可能性が高い。つまり、ストレージ装置1のレイテンシを悪化させることを防ぐことができる。さらには、LUT用WB202のサイズを大きく確保できるので、ストレージ20への書き込み頻度を下げることも達成される。
また、本実施形態のストレージ装置1においては、LUTキャッシュ201上においてLUT21の更新を行った際、更新対象のLUTテーブルが属するインデックスが、ダーティエントリで満たされることとなった場合、つまり、そのインデックスに属する8つのエントリがすべてダーティエントリとなり、新たなLUTテーブルをリフィルするためのクリーンエントリがなくなった場合、それらのダーティエントリの一部または全部をLUT用WB202に書き込むことで、クリーンエントリへ移行させる。これにより、データの読み出し要求時におけるリフィルの遅延によるストレージ装置1のレイテンシの悪化を防ぐことができる。
(第2実施形態)
次に、第2実施形態について説明する。本実施形態のストレージ装置1も、NANDメモリを搭載するSSDとして実現されていることを想定する。その構成は、図1を参照して説明した、第1実施形態のストレージ装置1と同じであって構わない。そのため、ストレージ装置1の構成に関する重複した説明は省略する。また、第1実施形態のストレージ装置1と同一の構成要素に対しては、同一の符号を使用することとする。
次に、第2実施形態について説明する。本実施形態のストレージ装置1も、NANDメモリを搭載するSSDとして実現されていることを想定する。その構成は、図1を参照して説明した、第1実施形態のストレージ装置1と同じであって構わない。そのため、ストレージ装置1の構成に関する重複した説明は省略する。また、第1実施形態のストレージ装置1と同一の構成要素に対しては、同一の符号を使用することとする。
図7は、本実施形態のストレージ装置1におけるLUTキャッシュ管理部15が、ライトバッファ検索部16と連携して、LUTキャッシュ201およびLUT用WB202を用いながら、LUT21のためのキャッシュ制御を行う手法を示す図である。なお、図7中、符号a1で示される、ハッチングが施されていないブロック、符号a2で示される種類のハッチングが施されているブロック、符号a3で示される種類のハッチングが施されているブロックは、第1実施形態と同様、それぞれ、クリーンなLUTテーブル、ダーティなLUTテーブル、ダーティな状態からクリーンな状態へ移行したLUTテーブルを表している。
本実施形態のストレージ装置1は、LUTキャッシュ201上のエントリが常にクリーンな状態に保たれるようにLUTキャッシュ201の制御を実行する。
ホスト2からのライトコマンドに応じて、ストレージ20へのユーザデータの書き込みを行った場合、LUTキャッシュ管理部15は、ライトバッファ検索部16と連携して、更新対象のLUTテーブルの検索を、LUTキャッシュ201およびLUT用WB202の双方について実行する。
更新対象部分がLUTキャッシュ201に存在する場合、LUTキャッシュ管理部15は、更新対象部分をコピーすべく、LUTキャッシュ201からの読み出しと、LUT用WB202への書き込みとを実行する(c1)。LUTキャッシュ管理部15は、LUT用WB202上において更新対象部分の更新を行う(b1)。
更新対象部分が、LUTキャッシュ201に存在せず、更新中の状態でLUT用WB202に存在する場合も、LUTキャッシュ管理部15は、LUT用WB202上で更新対象部分を更新する(b1)。第1実施形態と同様、LUTキャッシュ管理部15は、LUT用WB202からLUTキャッシュ201へ更新中のLUTテーブルのリフィルを行わない。もし、ユーザデータの読み出しのために更新対象部分が必要になった場合、LUTテーブルの更新が終了した後にLUTキャッシュ201へのリフィルが行われるので問題はない。ユーザデータの読み出し時におけるLUT用WB202内でのリフィルのための検索範囲は、第1実施形態と同様、LUT用WB202上のストレージ20へ書き出せる状態になったLUTテーブルである。
なお、更新中の状態でLUT用WB202に存在するダーティな状態のLUTテーブルは、たとえば、Lページ分溜まったタイミングで更新処理を終了してストレージ20へ書き込まれる(c2)。
更新対象部分が、LUTキャッシュ201に存在せず、かつ、更新中の状態でLUT用WB202にも存在しない場合、LUTキャッシュ管理部15は、LUTキャッシュ201ではなく、LUT用WB202へのリフィルを実行する(c3)。そして、LUTキャッシュ管理部15は、LUT用WB202上において更新対象部分の更新を行う(b1)。
このように、本実施形態のストレージ装置1では、ストレージ20からLUTキャッシュ201へのリフィル(c4)が発生するのは、ユーザデータの読み出し時のみである。これにより、本実施形態のストレージ装置1においては、LUTキャッシュ201上でLUTテーブルを更新する場合と比較して、ダーティエントリをLUTキャッシュ201からライトバックする際の同期処理が不要となり、LUT21の制御が簡単になる。たとえば、ダーティな状態のLUTテーブルをLUTキャッシュ201からライトLUT用WB202へ移動させるための制御をLUTテーブルのライトバック時において行うことを不要とすることができる。
かつ、第1実施形態と比べて、本実施形態のストレージ装置1では、さらに、LUT21の更新のために、ユーザデータの読み出しのためのアドレス解決に必要なLUTテーブルのキャッシュアウトを誘発することがまったくない。これにより、データの読み出し時におけるLUTテーブルのリフィルによるコマンド応答時間の増加を防ぐことができる。
また、第1実施形態と同様、LUT用WB202上においてLUTテーブルの更新を行う本実施形態のストレージ装置1では、LUT21の更新がLUTキャッシュ201上の特定のインデックスに集中し、かつ、その特定のインデックスに属するエントリへ格納されるべき同一のLUTテーブルの更新が頻発した場合であっても、LUT用WB202上においてLUTテーブルを繰り返し更新するだけで対処できる可能性が高い。つまり、ストレージ装置1のレイテンシを悪化させることを防ぐことができる。さらには、ストレージ装置1全体として保持できるLUTテーブルの数を増加させることができるので、ストレージ20への書き込み頻度を下げることも達成される。
図8は、本実施形態のストレージ装置1におけるLUT21の更新手順の一例を示すフローチャートである。
ライトコマンドを受信した場合(開始)、ストレージ装置1は、受信したライトコマンドに含まれる論理アドレスに対応するLUTテーブルである更新対象のLUTテーブルが、LUT用WB202に存在するか否か判断する(S22)。
更新対象のLUTテーブルがLUT用WB202に存在する場合(S22:YES)、ストレージ装置1は、LUT用WB202上の更新対象のLUTテーブルを更新し(S23)、LUTテーブルの更新の処理を終了する(終了)。
更新対象のLUTテーブルがLUT用WB202に存在しない場合(S22:NO)、ストレージ装置1は、更新対象のLUTテーブルがLUTキャッシュ201に存在するか否か判断する(S26)。
更新対象のLUTテーブルがLUTキャッシュ201に存在する場合(S26:YES)、ストレージ装置1は、LUTキャッシュ201上の更新対象のLUTテーブルをLUT用WB202へコピーする(S27)。ストレージ装置1は、LUT用WB202上の更新対象のLUTテーブルを更新し(S28)、LUTテーブルの更新の処理を終了する(終了)。
更新対象のLUTテーブルがLUTキャッシュ201に存在しない場合(S26:NO)、ストレージ装置1は、ストレージ20から更新対象のLUTテーブルを読み出してLUT用WB202へ書き込む(S210)。つまり、ストレージ20からLUT用WBへのリフィルを実行する。ストレージ装置1は、LUT用WB202上の更新対象のLUTテーブルを更新し(S211)、LUTテーブルの更新の処理を終了する(終了)。
図9は、本実施形態のストレージ装置1のLUT21の更新に関わる機能ブロックの一例を示す図である。ここでも、第1実施形態と同様、コントローラ10を構成する複数のCPU111の中の2つのCPU111(CPU[0]、CPU[1])が、LUT21の更新に携わるものと想定する。
たとえばライトコマンドであるLUTアドレス更新要求をホスト2から受けると、コントローラ10のCPU[0]111は、ライトバッファ検索部16に対して、ホスト2が指定する論理アドレスに対応するLUTテーブルがLUT用WB202に存在するか否か検索することを指示する(e1)。LUT用WB202に存在する場合、ライトバッファ検索部16は、CPU[1]111に対して、LUTテーブルがLUT用WB202に存在することを通知する(e2)。また、LUT用WB202に存在しない場合、ライトバッファ検索部16は、LUTキャッシュ管理部15に対して、LUTテーブルがLUTキャッシュ201に存在するか否か検索することを指示する(e3)。
LUTキャッシュ管理部15は、LUTテーブルの検索結果に基づき、CPU[1]111に対して各種指示を送信する(e5_1、e5_2、e5_3)。
たとえば、LUT用WB202に存在せず、LUTキャッシュ201に存在する場合、LUTキャッシュ管理部15は、CPU[1]111に対して、LUTキャッシュ201上のLUTテーブルをLUT用WB202へコピーし、LUT用WB202上で更新を行うことを指示する(e5_1)。
また、LUT用WB202に存在せず、かつ、LUTキャッシュ201にも存在しない場合、LUTキャッシュ管理部15は、更新対象のLUTテーブルのストレージ20からLUT用WB202へのリフィルを指示する(e5_2)。
CPU[1]111は、更新対象のLUTテーブルが、LUT用WB202上に存在するが、LUTキャッシュ201上には存在しない場合、ライトバッファ検索部16からの通知(e2)のみを受信する。この場合、CPU[1]111は、DMAコントローラ14を用いて、LUT用WB202上でのLUTテーブルの更新を実行する(e6)。DMAコントローラ14は、CPU[1]111から指示されたLUTテーブルの更新を完了すると、その完了をCPU[0]111に通知する(e7)。
また、更新対象のLUTテーブルが、LUT用WB202上およびLUTキャッシュ201上の双方に存在する場合、CPU[1]111は、ライトバッファ検索部16からの通知(e2)を受信する。この場合、CPU[1]111は、DMAコントローラ14を用いて、LUT用WB202上でのLUTテーブルの更新を実行する(e6)。DMAコントローラ14は、CPU[1]111から指示されたLUTテーブルの更新およびコピーを完了すると、その完了をCPU[0]111に通知する(e7)。
更新対象のLUTテーブルが、LUT用WB202上には存在せず、LUTキャッシュ201上には存在する場合、CPU[1]111は、LUTキャッシュ管理部15からはLUTキャッシュ201上のLUTテーブルのLUT用WB202へのコピー、LUT用WB202上でのLUTテーブルの更新の指示(e5−1)を受信する。この場合、CPU[1]111は、DMAコントローラ14を用いて、LUTキャッシュ管理部15からの指示通り、LUTキャッシュ201上のLUTテーブルのLUT用WB202へのコピー、LUT用WB202上でのLUTテーブルの更新を実行する(e6、e8)。DMAコントローラ14は、CPU[1]111から指示されたLUTテーブルの更新を完了すると、その完了をCPU[0]111に通知する(e7)。
また、更新対象のLUTテーブルが、LUT用WB202に存在せず、かつ、LUTキャッシュ201にも存在しない場合、CPU[1]111は、更新対象のLUTテーブルをストレージ20からLUT用WB202へリフィルする指示(e5−2)を受信する。この指示を受けたCPU[1]111は、DMAコントローラ14を用いて、指示されたリフィルを実行する(e10、e8)。また、LUTキャッシュ201に更新対象のLUTテーブルが存在せず、リフィル用のエントリにも空きがないことをLUTキャッシュ管理部15から通知(e5_3)されたCPU[1]111は、CPU[0]111に対して、LUTの更新の再試行を指示する(e11)。先行するリフィル処理の完了によりリフィル用のエントリに空きができ、再試行時には、更新対象のLUTテーブルが、LUT用WB202にリフィル可能になる。
このように、本実施形態のストレージ装置1においては、ストレージ20からLUTキャッシュ201へのリフィルがデータの読み出し時のみ発生するので、ダーティエントリをLUTキャッシュ201からライトバックする際の更新先のLUTテーブルを動的に切り替える処理が不要となり、LUT21の制御が簡単になる。
また、本実施形態のストレージ装置1では、さらに、LUT21の更新のために、データの読み出しのためのアドレス解決に必要なLUTテーブルのキャッシュアウトを誘発することがないので、データの読み出し時におけるLUTテーブルのリフィルによるコマンド応答時間の増加を防ぐことができる。
さらに、本実施形態のストレージ装置1においても、LUT21の更新がLUTキャッシュ201上の特定のインデックスに集中し、かつ、その特定のインデックスに属するエントリへ格納されるべき同一のLUTテーブルの更新が頻発した場合であっても、LUT用WB202上においてLUTテーブルを繰り返し更新するだけで対処できる可能性が高い。つまり、ストレージ装置1のレイテンシを悪化させることを防ぐことができる。さらには、ストレージ装置1全体として保持できるLUTテーブルの数を増加させることができるので、ストレージ20への書き込み頻度を下げることも達成される。
(第3実施形態)
次に、第3実施形態について説明する。図10は、本実施形態に係るストレージ装置1の一構成例を示す図である。本実施形態のストレージ装置1も、NANDメモリを搭載するSSDとして実現されていることを想定する。第1実施形態のストレージ装置1と同一の構成要素に対しては、同一の符号を使用することとし、それらについての重複した説明を省略する。
次に、第3実施形態について説明する。図10は、本実施形態に係るストレージ装置1の一構成例を示す図である。本実施形態のストレージ装置1も、NANDメモリを搭載するSSDとして実現されていることを想定する。第1実施形態のストレージ装置1と同一の構成要素に対しては、同一の符号を使用することとし、それらについての重複した説明を省略する。
図10に示すように、本実施形態のストレージ装置1は、コントローラ10が、SRAM18を有する。SRAM18は、NANDメモリであるストレージ20よりも高速のメモリである。しかし、SRAM18は、LUT21全体を格納することができる程の容量は有していない。そして、本実施形態のストレージ装置1は、第1実施形態や第2実施形態ではホスト2側のDRAM52に確保していたLUTキャッシュ201とLUT用WB202とを、このSRAM18上に確保する。本実施形態のストレージ装置1は、SRAM18上にLUTキャッシュ201およびLUT用WB202を確保して、第1実施形態で説明したLUT21のキャッシュ制御または第1実施形態で説明したLUT21のキャッシュ制御を実行する。
なお、図1に示した、第1実施形態のストレージ装置1の一構成例は、LUTキャッシュ201とLUT用WB202とがホスト2側のDRAM52に確保されることを示すものであって、第1実施形態のストレージ装置1が、SRAM18を有していないことを示すことを意図していない。たとえば、ホスト2側のDRAM52上にLUTキャッシュ201およびLUT用WB202を確保することができない場合、ストレージ装置1のSRAM18上にLUTキャッシュ201およびLUT用WB202を確保して、LUT21のキャッシュ制御を実行するようにしてもよい。また、ホスト2側のDRAM52上にLUTキャッシュ201およびLUT用WB202を確保するのか、ストレージ装置1のSRAM18上にLUTキャッシュ201およびLUT用WB202を確保するのかを設定できるようにしてもよい。
本実施形態のストレージ装置1においても、第1実施形態や第2実施形態のように、LUT21の更新が特定のインデックスに集中し、かつ、その特定のインデックスに属するエントリへ格納されるべき同一のLUTテーブルの更新が頻発した場合であっても、ストレージ装置1のレイテンシを悪化させることを防ぐことができる。また、ストレージ装置1全体として保持できるLUTテーブルの数を増加させることができるので、ストレージ20への書き込み頻度を下げることも達成される。
さらに、LUTキャッシュ201上においてLUT21の更新を行った際、更新対象のLUTテーブルが属するインデックスが、ダーティエントリで満たされることとなった場合、それらのダーティエントリの一部または全部をLUT用WB202に書き込むことで、クリーンエントリへ移行させる。大きなサイズのLUT用WB202を持っていることで、リフィルの遅延によるストレージ装置1のレイテンシの悪化を防ぐことができる。
また、第2実施形態で説明したLUT21のためのキャッシュ制御を採用する場合、ストレージ20からLUTキャッシュ201へのリフィルがユーザデータの読み出し時のみ発生するので、ダーティエントリをLUTキャッシュ201からライトバックする際の同期処理が不要となり、LUT21の制御が簡単になる。かつ、LUT21の更新のために、ユーザデータの読み出しのためのアドレス解決に必要なLUTテーブルのキャッシュアウトを誘発することがないので、ユーザデータの読み出し時におけるLUTテーブルのリフィルによるコマンド応答時間の増加を防ぐことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…ストレージ装置
2…ホスト
10…コントローラ
11…制御部
12…ホストインターフェース(I/F)部
13…NANDコントローラ
14…DMAコントローラ
15…LUTキャッシュ管理部
16…ライトバッファ検索部
17…リード/ライト部
18…SRAM
20…ストレージ
21…LUT
22…ユーザデータ
51…プロセッサ
52…DRAM
53…外部バスコントローラ、
111…CPU
201…LUTキャッシュ
202…LUT用ライトバッファ(WB)
2…ホスト
10…コントローラ
11…制御部
12…ホストインターフェース(I/F)部
13…NANDコントローラ
14…DMAコントローラ
15…LUTキャッシュ管理部
16…ライトバッファ検索部
17…リード/ライト部
18…SRAM
20…ストレージ
21…LUT
22…ユーザデータ
51…プロセッサ
52…DRAM
53…外部バスコントローラ、
111…CPU
201…LUTキャッシュ
202…LUT用ライトバッファ(WB)
Claims (16)
- ストレージと、
ホストからの要求に応じて、前記ストレージへのデータの書き込みまたは前記ストレージからのデータの読み出しを制御するコントローラと、
を具備し、
前記コントローラは、
前記ストレージに格納される、前記ストレージの論理アドレス空間と物理アドレス空間とを対応づけるアドレス変換テーブルの一部を一時的に格納するためのセットアソシアティブ方式のキャッシュ領域と、前記アドレス変換テーブルの更新部分を前記ストレージへ書き込むためのライトバッファ領域とを、前記ホスト内の第1メモリ上または前記コントローラ内の第2メモリ上に確保し、
前記アドレス変換テーブルの更新を伴う要求を前記ホストから受信した場合、前記キャッシュ領域および前記ライトバッファ領域を検索して、前記アドレス変換テーブル中の更新対象部分が存在するか否かを判定し、
前記更新対象部分が前記ストレージへの書き込みが完了していない更新中の状態で前記ライトバッファ領域に存在する場合、前記ライトバッファ領域上の前記更新対象部分を更新する、
ストレージ装置。 - 前記コントローラは、前記更新対象部分が前記キャッシュ領域に存在する場合、前記キャッシュ領域上の前記更新対象部分を更新する請求項1に記載のストレージ装置。
- 前記コントローラは、前記更新対象部分が前記ライトバッファ領域および前記キャッシュ領域のいずれにも存在しない場合、前記更新対象部分を前記ストレージから読み出して前記キャッシュ領域へ書き込み、前記キャッシュ領域上において前記更新対象部分を更新する請求項1または2に記載のストレージ装置。
- 前記コントローラは、前記ライトバッファ領域上で更新した前記更新対象部分を前記ストレージに書き出した場合において、前記ライトバッファ領域上で更新した前記更新対象部分が更新前の状態で前記キャッシュ領域に存在した場合、前記ライトバッファ領域上で更新した前記更新対象部分を前記ライトバッファ領域から読み出して前記キャッシュ領域へ書き込む請求項2または3に記載のストレージ装置。
- 前記コントローラは、前記更新対象部分が前記ライトバッファ領域に存在し、かつ、前記キャッシュ領域に存在する場合、前記ライトバッファ領域上で更新した前記更新対象部分を前記ライトバッファ領域から読み出して前記キャッシュ領域へ書き込む請求項1に記載のストレージ装置。
- 前記コントローラは、前記更新対象部分が前記ライトバッファ領域に存在せず、かつ、前記キャッシュ領域に存在する場合、前記キャッシュ領域上の前記更新対象部分を前記キャッシュ領域から読み出して前記ライトバッファ領域へ書き込み、前記ライトバッファ領域上において前記更新対象部分を更新し、前記ライトバッファ領域上で更新した前記更新対象部分を前記ライトバッファ領域から読み出して前記キャッシュ領域へ書き込む請求項5に記載のストレージ装置。
- 前記コントローラは、前記更新対象部分が前記ライトバッファ領域および前記キャッシュ領域のいずれにも存在しない場合、前記更新対象部分を前記ストレージから読み出して前記ライトバッファ領域へ書き込み、前記ライトバッファ領域上において前記更新対象部分を更新する請求項5または6に記載のストレージ装置。
- 前記コントローラは、前記ホストからの要求に応じて参照すべき前記アドレス変換テーブル中の参照対象部分が前記キャッシュ領域に存在しない場合、前記ライトバッファ領域を検索し、前記ライトバッファ領域に存在するならば、前記参照対象部分を前記ライトバッファ領域から読み出して前記キャッシュ領域へ書き込み、前記ライトバッファ領域に存在しないならば、前記参照対象部分を前記ストレージから読み出して前記キャッシュ領域へ書き込む請求項1〜7のいずれか1項に記載のストレージ装置。
- ストレージの論理アドレス空間と物理アドレス空間とを対応づけるアドレス変換テーブルのキャッシュ制御方法であって、
前記ストレージに格納されるアドレス変換テーブルの一部を一時的に格納するためのセットアソシアティブ方式のキャッシュ領域と、前記アドレス変換テーブルの更新部分を前記ストレージへ書き込むためのライトバッファ領域とを、前記ストレージよりも高速なメモリ上に確保することと、
前記アドレス変換テーブルの更新を伴う要求をホストから受信した場合、前記キャッシュ領域および前記ライトバッファ領域を検索して、前記アドレス変換テーブル中の更新対象部分が存在するか否かを判定することと、
前記更新対象部分が前記ライトバッファ領域に存在する場合、前記ライトバッファ領域上の前記更新対象部分を更新することと、
を具備するキャッシュ制御方法。 - 前記更新対象部分が前記ライトバッファ領域に存在せず前記キャッシュ領域のみに存在する場合、前記キャッシュ領域上の前記更新対象部分を更新することを具備する請求項9に記載のキャッシュ制御方法。
- 前記更新対象部分が前記ライトバッファ領域および前記キャッシュ領域のいずれにも存在しない場合、前記更新対象部分を前記ストレージから読み出して前記キャッシュ領域へ書き込み、前記キャッシュ領域上において前記更新対象部分を更新することを具備する請求項9または10に記載のキャッシュ制御方法。
- 前記キャッシュ領域のエントリが属するインデックスが、前記ストレージからの読み出し後に更新されて前記ストレージ上の前記アドレス変換テーブルとの間で内容が一致していない前記アドレス変換テーブルの一部を格納するエントリ、または、前記ストレージから前記アドレス変換テーブルの一部を読み出し中のエントリの一方または両方で満たされた場合、前記キャッシュ領域上の前記ストレージ上の前記アドレス変換テーブルとの間で内容が一致していない前記アドレス変換テーブルの一部を前記ライトバッファ領域に書き込み、前記前記ストレージ上の前記アドレス変換テーブルとの間で内容が一致していない前記アドレス変換テーブルの一部を格納するエントリを、前記ストレージ上の前記アドレス変換テーブルとの間で内容が一致している前記アドレス変換テーブルの一部を格納するエントリに移行させることを具備する請求項10または11に記載のキャッシュ制御方法。
- 前記ライトバッファ領域上で更新した前記更新対象部分を前記ライトバッファ領域から前記ストレージへ書き出した場合において、前記ライトバッファ領域上で更新した前記更新対象部分が更新前の状態で前記キャッシュ領域に存在した場合、前記ライトバッファ領域上で更新した前記更新対象部分を前記ライトバッファ領域から読み出して前記キャッシュ領域へ書き込むことを具備する請求項9に記載のキャッシュ制御方法。
- 前記更新対象部分が前記ライトバッファ領域に存在せず、かつ、前記キャッシュ領域に存在する場合、前記キャッシュ領域上の前記更新対象部分を前記キャッシュ領域から読み出して前記ライトバッファ領域へ書き込み、前記ライトバッファ領域上において前記更新対象部分を更新し、更新後の前記更新対象部分を前記ライトバッファ領域から読み出して前記キャッシュ領域へ書き込むことを具備する請求項13に記載のキャッシュ制御方法。
- 前記更新対象部分が前記ライトバッファ領域および前記キャッシュ領域のいずれにも存在しない場合、前記更新対象部分を前記ストレージから読み出して前記ライトバッファ領域へ書き込み、前記ライトバッファ領域上において前記更新対象部分を更新することを具備する請求項13または14に記載のキャッシュ制御方法。
- 前記ホストからの要求に応じて参照すべき前記アドレス変換テーブル中の参照対象部分が前記キャッシュ領域に存在しない場合、前記ライトバッファ領域を検索し、前記ライトバッファ領域に存在するならば、前記参照対象部分を前記ライトバッファ領域から読み出して前記キャッシュ領域へ書き込み、前記ライトバッファ領域に存在しないならば、前記参照対象部分を前記ストレージから読み出して前記キャッシュ領域へ書き込むことを具備する請求項9〜15のいずれか1項に記載のキャッシュ制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020049112A JP2021149549A (ja) | 2020-03-19 | 2020-03-19 | ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法 |
US17/008,529 US11341042B2 (en) | 2020-03-19 | 2020-08-31 | Storage apparatus configured to manage a conversion table according to a request from a host |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020049112A JP2021149549A (ja) | 2020-03-19 | 2020-03-19 | ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021149549A true JP2021149549A (ja) | 2021-09-27 |
Family
ID=77747907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020049112A Pending JP2021149549A (ja) | 2020-03-19 | 2020-03-19 | ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11341042B2 (ja) |
JP (1) | JP2021149549A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116540950A (zh) * | 2023-07-05 | 2023-08-04 | 合肥康芯威存储技术有限公司 | 一种存储器件及其写入数据的控制方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3118528B1 (fr) * | 2020-12-28 | 2023-12-01 | Commissariat Energie Atomique | Module mémoire adapté à mettre en oeuvre des fonctions de calcul |
US11449423B1 (en) * | 2021-03-12 | 2022-09-20 | Kioxia Corporation | Enhancing cache dirty information |
KR20220165128A (ko) * | 2021-06-07 | 2022-12-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 데이터 처리 시스템 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9645866B2 (en) * | 2010-09-20 | 2017-05-09 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
JP6018696B2 (ja) | 2013-02-27 | 2016-11-02 | 株式会社日立製作所 | 半導体ストレージ |
US9880939B2 (en) * | 2015-09-04 | 2018-01-30 | Toshiba Memory Corporation | Memory system and information processing system |
US11099760B2 (en) | 2017-12-14 | 2021-08-24 | Intel Corporation | Background data refresh using a system timestamp in storage devices |
US10754785B2 (en) | 2018-06-28 | 2020-08-25 | Intel Corporation | Checkpointing for DRAM-less SSD |
CN110955384B (zh) * | 2018-09-26 | 2023-04-18 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
-
2020
- 2020-03-19 JP JP2020049112A patent/JP2021149549A/ja active Pending
- 2020-08-31 US US17/008,529 patent/US11341042B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116540950A (zh) * | 2023-07-05 | 2023-08-04 | 合肥康芯威存储技术有限公司 | 一种存储器件及其写入数据的控制方法 |
CN116540950B (zh) * | 2023-07-05 | 2023-09-29 | 合肥康芯威存储技术有限公司 | 一种存储器件及其写入数据的控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US11341042B2 (en) | 2022-05-24 |
US20210294738A1 (en) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021149549A (ja) | ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法 | |
JP6505132B2 (ja) | メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法 | |
US4774654A (en) | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory | |
CN102473138B (zh) | 具有用于页面错误处理的闪存的扩展主存储器层次结构 | |
KR101379596B1 (ko) | Tlb 프리페칭 | |
TWI438628B (zh) | 資料儲存系統及資料儲存媒介 | |
US5434993A (en) | Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories | |
US8122216B2 (en) | Systems and methods for masking latency of memory reorganization work in a compressed memory system | |
EP2380084B1 (en) | Method and apparatus for coherent memory copy with duplicated write request | |
JP5536658B2 (ja) | バッファメモリ装置、メモリシステム及びデータ転送方法 | |
JP3264319B2 (ja) | バスブリッジ | |
US6502171B1 (en) | Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data | |
JP2017138852A (ja) | 情報処理装置、記憶装置およびプログラム | |
KR102665339B1 (ko) | 변환 색인 버퍼 축출 기반 캐시 교체 | |
US20080235477A1 (en) | Coherent data mover | |
US20080055323A1 (en) | Systems and methods for reducing latency for accessing compressed memory using stratified compressed memory architectures and organization | |
JPH08272693A (ja) | 仮想アドレスについてのキャッシュ可能性属性ビットを備えた変換テーブル・エントリ及びそのビットを用いた仮想アドレスの参照方法並びにその仮想アドレスの参照装置 | |
US11599483B2 (en) | Dedicated cache-related block transfer in a memory system | |
WO2024066195A1 (zh) | 缓存管理方法及装置、缓存装置、电子装置和介质 | |
CN113015966A (zh) | 压缩式计算机存储器访问 | |
US20110167223A1 (en) | Buffer memory device, memory system, and data reading method | |
US6349367B1 (en) | Method and system for communication in which a castout operation is cancelled in response to snoop responses | |
US11029892B2 (en) | Memory control apparatus and memory control method for swapping data based on data characteristics | |
US6587923B1 (en) | Dual line size cache directory | |
JPH10307752A (ja) | 2次レベルキャッシュメモリシステム |