JP2020154603A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2020154603A JP2020154603A JP2019051550A JP2019051550A JP2020154603A JP 2020154603 A JP2020154603 A JP 2020154603A JP 2019051550 A JP2019051550 A JP 2019051550A JP 2019051550 A JP2019051550 A JP 2019051550A JP 2020154603 A JP2020154603 A JP 2020154603A
- Authority
- JP
- Japan
- Prior art keywords
- address
- compressed
- data
- cache
- address conversion
- 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
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- 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
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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
-
- 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/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】性能を改善することができるメモリシステムを提供する。【解決手段】情報処理システム1は、ホスト2とメモリシステム(ソリッドステートドライブ)3を含む。メモリシステムは、不揮発性メモリ5に格納された論理物理アドレス変換テーブル8の一部を第1のキャッシュ31としてランダムアクセスメモリ6に格納し、論理物理アドレス変換テーブルを圧縮することによって得られる圧縮論理物理アドレス変換テーブルを第2のキャッシュ32としてランダムアクセスメモリに格納する。第1のアドレス変換データが格納される第2のキャッシュの第1のエントリのうち圧縮論理物理アドレス変換テーブルとして使用される領域以外の第1領域に、第1のアドレス変換データの一部を示す第1情報を格納する。第1のキャッシュに存在しない第1のアドレス変換データの一部をチェックする場合、第2のキャッシュの第1のエントリに格納されている第1情報を参照する。【選択図】図1
Description
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムとしては、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
このようなメモリシステムにおいては、論理アドレスを不揮発性メモリの物理アドレスに変換するための論理物理アドレス変換がアドレス変換テーブルを用いて実行される。アドレス変換テーブルの参照等に要する時間が長くなると、メモリシステムの性能の低下が引き起こされる場合がある。
本発明が解決しようとする課題は、性能を改善することができるメモリシステムを提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記不揮発性メモリに格納された論理物理アドレス変換テーブルの一部を第1のキャッシュとしてランダムアクセスメモリに格納し、前記論理物理アドレス変換テーブルを圧縮することによって得られる圧縮論理物理アドレス変換テーブルを第2のキャッシュとして前記ランダムアクセスメモリに格納する。前記コントローラは、前記ホストによって指定される第1の論理アドレスに対応する前記不揮発性メモリの第1の物理アドレスを含む第1のアドレス変換データが前記第1のキャッシュに存在せず、前記第1のアドレス変換データを圧縮することによって得られる第1の圧縮アドレス変換データが前記第2のキャッシュに存在する場合、前記第1の圧縮アドレス変換データを伸張することによって得られる非圧縮アドレス変換データを前記第1のキャッシュに格納する動作と、前記非圧縮アドレス変換データから前記第1の物理アドレスを取得する動作とを実行する。前記コントローラは、前記第1の圧縮アドレス変換データが格納される前記第2のキャッシュの第1のエントリのうち圧縮論理物理アドレス変換テーブルとして使用される領域以外の第1領域に、前記第1のアドレス変換データの一部を示す第1情報を格納する。前記コントローラは、前記第1のキャッシュに存在しない前記第1のアドレス変換データの一部をチェックする処理を実行する場合、前記第2のキャッシュの前記第1のエントリに格納されている前記第1情報を参照する。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
まず、図1を参照して、実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成されたストレージデバイスである。このメモリシステムは、例えば、ソリッドステートドライブ(SSD)として実現されてもよいし、メモリカードとして実現されてもよい。以下では、このメモリシステムが、ソリッドステートドライブ(SSD)3として実現されている場合を想定する。
情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、パーソナルコンピュータやサーバ、携帯電話、撮像装置であってもよいし、タブレット、スマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
SSD3は、ホスト2として機能する情報処理装置の外部記憶装置として使用され得る。SSD3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)、ユニバーサルシリアルバス(USB)、Mobile Industry Processor Interface(MIPI)、UniPro等を使用し得る。
SSD3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。NAND型フラッシュメモリ5は、限定されないが、複数のNAND型フラッシュメモリチップを含んでいてもよい。コントローラ4は、NAND型フラッシュメモリ5に電気的に接続され、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System−on−a−chip(SoC)のような回路によって実現されてもよい。
NAND型フラッシュメモリ5は、ユーザデータ7と、論理物理アドレス変換テーブル(logical−to−physical address translation table(L2Pテーブル))7のような管理情報とを格納する。論理物理アドレス変換テーブル8は、以下、単にL2Pテーブル8としても参照される。このL2Pテーブル8は、SSD3をアクセスするためにホスト2によって指定される論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。論理アドレスは、SSD3の論理アドレス空間内の位置をアドレス指定するためにホスト2によって使用されるアドレスである。ある論理アドレスに対応する物理アドレスは、この論理アドレスに対応するデータが格納されているNAND型フラッシュメモリ5内の物理記憶位置を示す。
論理物理アドレス変換テーブル8、つまりL2Pテーブル8は、ホスト2によって指定される論理アドレスを、この論理アドレスに対応する最新のデータが格納されているNAND型フラッシュメモリ5内の物理記憶位置を示す物理アドレスに変換する論理物理アドレス変換動作のために使用される。
NAND型フラッシュメモリ5は、メモリセルアレイを有する1以上のNAND型フラッシュメモリチップを有する。メモリセルアレイは、マトリクス状に配列された複数のメモリセルを有する。NAND型フラッシュメモリ5のメモリセルアレイは、図2に示されているように、複数のブロック(物理ブロック)BLK0〜BLK(j−1)を含む。ブロックBLK0〜BLK(j−1)は、消去動作の単位として機能する。
ブロックBLK0〜BLK(j−1)は複数のページ(物理ページ)を含む。つまり、ブロックBLK0〜BLK(j−1)の各々は、ページP0、P1、…P(k−1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。NAND型フラッシュメモリ5においては、データのリードおよびデータのライトはページ単位で実行される。
図1において、コントローラ4は、NAND型フラッシュメモリ5のデータ管理とNAND型フラッシュメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
データ管理には、(1)論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)とを隠蔽するための処理、等が含まれる。論理アドレスと物理アドレスとの間のマッピングの管理は、L2Pテーブル8を用いて実行される。
コントローラ4は、L2Pテーブル8を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。この管理サイズとしては、これに限定されないが、例えばクラスタが使用されてもよい。クラスタは論理アドレス空間内の位置を指定する単位であり、1つのクラスタは連続する複数のセクタ(例えば、8個のセクタ、16個のセクタ、または32個のセクタ、等)を含む。以下では、これに限定されないが、1つのクラスタが8個のセクタを含む場合を想定する。この場合、1つのセクタのサイズが512バイトであるならば、一つのクラスタのサイズは4Kバイト(4KB)となる。L2Pテーブル8は、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングをこの4KBのクラスタ単位で管理してもよい。
あるクラスタを指定する論理アドレスは論理クラスタアドレス(LCA)と称され、ある論理クラスタアドレス(LCA)に対応する物理アドレスは、メディアクラスタアドレス(MCA)と称される。
ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。このため、コントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、L2Pテーブル8を更新することによってこの論理アドレスをこの別の物理記憶位置に関連付け、以前のデータを無効化する。
ブロック管理には、不良ブロック(バッドブロック)の管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、ブロックそれぞれの消耗を均一化するための動作である。
ガベージコレクションは、フリーブロックの個数を増やすための動作である。フリーブロックは有効データを含まないブロックである。ガベージコレクションにおいては、コントローラ4は、有効データと無効データとが混在する幾つかのブロック内の有効データを別のブロック(例えばフリーブロック)にコピーする。ここで、有効データとは、ある論理アドレスに関連付けられているデータを意味する。例えば、L2Pテーブル8から参照されているデータ(すなわち論理アドレスから最新のデータとして紐付けられているデータ)は有効データであり、後にホスト2からリードされる可能性がある。無効データとは、どの論理アドレスにも関連付けられていないデータを意味する。どの論理アドレスにも関連付けられていないデータは、もはやホスト2からリードされる可能性が無いデータである。そして、コントローラ4は、L2Pテーブル8を更新して、コピーされた有効データの論理アドレスそれぞれに対して、コピー先の物理アドレスをマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックはフリーブロックとして解放される。これによって、このブロックは、このブロックに対する消去動作が実行された後にデータの書き込みのために再利用することが可能となる。
ホスト2は、SSD3に様々なコマンドを送出する。これらコマンドには、リードコマンド、ライトコマンド、アンマップコマンド、等が含まれる。リードコマンドは、SSD3に対してデータのリードを要求するコマンドである。リードコマンドは、リードすべきデータに対応する論理アドレス(開始LBA)と、リードすべきデータの長さとを含む。
コントローラ4がホスト2からリードコマンドを受信した時、コントローラ4は、L2Pテーブル8を参照して、リードコマンド内の開始LBAに対応する物理アドレスを得る。コントローラ4は、この得られた物理アドレスに対応するNAND型フラッシュメモリ5の物理記憶位置からデータをリードし、リードしたデータをホスト2に返す。
ライトコマンドは、SSD3に対してデータの書き込みを要求するコマンドである。ライトコマンドは、ライトデータ(つまり書き込むべきデータ)の論理アドレス(開始LBA)と、ライトデータの長さとを含む。コントローラ4は、ライトデータを、NAND型フラッシュメモリ5内の利用可能な物理記憶位置に書き込む。さらに、コントローラ4は、L2Pテーブル8を更新することによって、ライトデータが書き込まれた物理記憶位置に対応する物理アドレスを、このライトデータに対応する論理アドレスにマッピングする。
コントローラ4は、DRAM6のようなランダムアクセスメモリ内のメモリ領域を、L2Pテーブル8の内容の一部をキャッシュするL2Pテーブルキャッシュ31として使用する。換言すれば、コントローラ4は、L2Pテーブル8の内容の一部を論理物理アドレス変換テーブルキャッシュ(以下、L2Pテーブルキャッシュと称する)31としてDRAM6のようなランダムアクセスメモリに格納する。コントローラ4は、このL2Pテーブルキャッシュ31を使用して、ホスト2によって指定される論理アドレスをNAND型フラッシュメモリ5の物理アドレスに変換するための論理物理アドレス変換を実行する。
本実施形態では、コントローラ4は、DRAM6のようなランダムアクセスメモリのメモリ領域を効率よく利用するために、このメモリ領域を、論理物理アドレス変換用の2種類のキャッシュ、つまりL2Pテーブルキャッシュ31および圧縮論理物理アドレス変換テーブルキャッシュ(以下、圧縮L2Pテーブルキャッシュと称する)32として使用する。
換言すれば、コントローラ4は、L2Pテーブル8の内容の一部をL2Pテーブルキャッシュ31としてDRAM6のようなランダムアクセスメモリに格納するだけでなく、L2Pテーブル8の内容を圧縮することによって得られる圧縮論理物理アドレス変換テーブルの内容を圧縮L2Pテーブルキャッシュ32としてランダムアクセスメモリに格納する。
L2Pテーブルキャッシュ31は複数のエントリ(複数のキャッシュライン)を含み、各エントリはアドレス変換データを格納する。一つのエントリに格納されるアドレス変換データは、連続する複数の論理アドレスにそれぞれ対応するNAND型フラッシュメモリ5の複数の物理アドレスを含んでいてもよい。一般に、NAND型フラッシュメモリ5に対するアクセスは空間的局所性を有するので、連続する複数の論理アドレスにそれぞれ対応する複数の物理アドレスを各々が格納する複数のエントリを含むL2Pテーブルキャッシュ31構成はキャッシュヒット率を高めることを可能にする。
圧縮L2Pテーブルキャッシュ32は、L2Pテーブル8の内容を圧縮することによって得られる圧縮アドレス変換データをキャッシュするために使用される。圧縮L2Pテーブルキャッシュ32も複数のエントリ(複数のキャッシュライン)を含む。圧縮L2Pテーブルキャッシュ32に含まれるエントリの数は、L2Pテーブルキャッシュ31に含まれるエントリの数よりも多くてもよい。
圧縮L2Pテーブルキャッシュ32の一つのエントリに格納される圧縮アドレス変換データは、連続する複数の論理アドレスにそれぞれ対応するNAND型フラッシュメモリ5の複数の物理アドレスを圧縮することによって得られる圧縮データである。
圧縮L2Pテーブルキャッシュ32の1エントリ分の圧縮アドレス変換データのサイズは、L2Pキャッシュ31の1エントリ分のアドレス変換データのサイズの数分の1程度である。したがって、圧縮L2Pテーブルキャッシュ32は、少ないメモリ容量で、より多くの論理アドレスに対する論理物理アドレス変換のための圧縮アドレス変換データを保持することができる。
コントローラ4は、L2Pテーブル8の内容の一部をL2Pテーブルキャッシュ31にキャッシュし、またL2Pテーブル8の内容を圧縮することによって得られる圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32にキャッシュする。
コントローラ4がホスト2からリード要求(リードコマンド)を受信した場合、コントローラ4は、以下の論理物理アドレス変換動作を実行する。
コントローラ4は、まず、ホスト2から受信したリード要求によって指定される論理アドレスに対応するNAND型フラッシュメモリ5の物理アドレスを含むアドレス変換データがL2Pテーブルキャッシュ31に存在するか否かを判定する(キャッシュヒットチェック)。このアドレス変換データがL2Pテーブルキャッシュ31に存在しないならば(キャッシュミス)、コントローラ4は、このアドレス変換データに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在するか否かを判定する(圧縮キャッシュヒットチェック)。この圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在するならば(圧縮キャッシュヒット)、コントローラ4は、圧縮L2Pテーブルキャッシュ32のこの圧縮アドレス変換データを使用して、論理物理アドレス変換を実行する。
圧縮L2Pテーブルキャッシュ32を有さない構成においては、もしL2Pテーブルキャッシュ31のキャッシュミスが起きたならば、コントローラ4は、指定された論理アドレスに対応するアドレス変換データをNAND型フラッシュメモリ5内のL2Pテーブル8からリードすることが必要となる。このため、論理物理アドレス変換に多くの時間を要することになる。
本実施形態では、L2Pテーブルキャッシュ31のキャッシュミスが起きた場合は、NAND型フラッシュメモリ5よりも高速にアクセス可能なDRAM6上に存在する圧縮L2Pテーブルキャッシュ32から、指定された論理アドレスに対応するデータが格納されているNAND型フラッシュメモリ5の物理記憶位置を示す物理アドレスを含む圧縮アドレス変換データを迅速に取得することができる。
L2Pテーブルキャッシュ31のキャッシュミスが起き、且つ圧縮L2Pテーブルキャッシュ32の圧縮キャッシュミスが起きたならば、コントローラ4は、指定された論理アドレスに対応するアドレス変換データをNAND型フラッシュメモリ5内のL2Pテーブル8からリードする。この場合、コントローラ4は、リードされたアドレス変換データをL2Pテーブルキャッシュ31に格納すると共に、リードされたアドレス変換データを圧縮することによって得られる圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32に格納する。
次に、コントローラ4の構成について説明する。
コントローラ4は、ホストインタフェース11、CPU12、専用ハードウェア(HW)13、バックエンド部14等を含む。これらホストインタフェース11、CPU12、専用ハードウェア(HW)13、バックエンド部14は、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2からライトコマンド、リードコマンド、等の様々なコマンドを受信する回路として機能する。
CPU12は、ホストインタフェース11、専用ハードウェア(HW)13、バックエンド部14等の動作を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア:FW)を実行することによって様々な処理を行う。このCPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。CPU12の動作は、CPU12によって実行されるファームウェアによって制御される。なお、上述のコマンド処理の一部または全部は、専用ハードウェア13によって実行してもよい。
専用ハードウェア13は、圧縮伸張モジュール131、DRAMインタフェース132、DMA(direct memory access)コントローラ(DMAC)133等を含む。圧縮伸張モジュール131は、アドレス変換データを圧縮して圧縮アドレス変換データを生成するエンコード処理、および圧縮アドレス変換データを伸張して元のアドレス変換データを生成するデコード処理を実行する。
圧縮伸張モジュール131は、DRAMインタフェース132と通信するRAM側インタフェースと、DMAC133と通信するDRAM側インタフェースとを含む。DRAMインタフェース132は、DRAM6を制御するDRAM制御回路として機能する。このDRAM6のメモリ領域は、L2Pテーブルキャッシュ31および圧縮L2Pテーブルキャッシュ32として機能するのみならず、ワークRAM33としも機能してもよい。なお、コントローラ4はSRAMを含んでいてもよく、このSRAMがワークRAM33としも機能してもよい。
DMAC133は、NAND型フラッシュメモリ5とDRAM6との間のデータ転送(DMA転送)を制御する。L2Pテーブル8のアドレス変換データをDRAM6上の圧縮L2Pテーブルに転送する際には、このアドレス変換データはDMAC133から圧縮伸張モジュール131に転送され、圧縮伸張モジュール131によって圧縮される。
圧縮されたアドレス変換データはDRAMインタフェース132を介してDRAM6上の圧縮L2Pテーブルに格納される。DRAM6上の圧縮L2Pテーブルの圧縮アドレス変換データをNAND型フラッシュメモリ5上のL2Pテーブル8またはDRAM6上のL2Pテーブルキャッシュ31に転送する際には、この圧縮アドレス変換データは、DMAC133の制御の下、DRAMインタフェース132から圧縮伸張モジュール131に転送され、圧縮伸張モジュール131によって伸張され、これによって元の非圧縮アドレス変換データが得られる。この非圧縮アドレス変換データは、DMAC133の制御の下、NAND型フラッシュメモリ5またはDRAM6に転送される。
バックエンド部14は、符号化/復号化部141と、NANDインタフェース142とを含む。符号化/復号化部141は、例えば、エラー訂正コード(ECC)エンコーダおよびECCデコーダとして機能し得る。NAND型フラッシュメモリ5にデータをライトすべき時、符号化/復号化部141は、書き込むべきライトデータをエンコード(ECCエンコード)することによってこのデータにエラー訂正コード(ECC)を付加する。NAND型フラッシュメモリ5からデータがリードされた時、符号化/復号化部141は、リードされたデータに付加されたECCを使用して、このデータのエラー訂正を行う(ECCデコード)。
NANDインタフェース142は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース142は、複数のチャンネルを介してNAND型フラッシュメモリ5に接続されてもよい。
図3は、L2Pテーブル8の構成例を示す。
SSD3をアクセスするためにホスト2によって使用される論理アドレス空間は、複数のアドレス領域(以下、Regionと称する)に分割される。各Regionは連続する複数の論理アドレスを含む。
L2Pテーブル8は、複数のRegionにそれぞれ対応する複数のエントリを含む。図3では、論理アドレス空間は、Regionアドレス0を有するRegion(Region addr. が0)、Regionアドレス1を有するRegion(Region addr. が1)、Regionアドレス2を有するRegion(Region addr. が2)、…、RegionアドレスMを有するRegion(Region addr. がM)を含むM+1個のRegionに分割されている場合が例示されている。この場合、L2Pテーブル8は、M+1個のエントリを含む。
各エントリは、このエントリに対応するRegionに属する複数の論理アドレスに対応する複数の物理アドレスをアドレス変換データとして格納する。つまり、各エントリ内のアドレス変換データは、複数の論理アドレスに対応するRegionに対応する複数の物理アドレスを含む。上述したように、これら物理アドレスはメディアクラスタアドレス(MCA)であってもよい。
一つのRegionに対応するアドレス変換データは、例えば、16個のMCAを含む。一つのMCAは、例えば4バイトのサイズを有する。この場合、一つのRegionに対応するアドレス変換データは64バイトのサイズを有する。
ホスト2によって指定される論理アドレスは、この論理アドレスが属するRegionを示すRegionアドレスとこのRegion内のオフセットとに分割される。例えば、論理アドレス(LCA)が32ビット[b31:b0]で表現されるケースを想定した場合、LCA[b31:b0]のうちの[b31:b3]がRegionアドレスとして使用され、LCA[b31:b0]のうちの[b3:b0]がオフセットとして使用される。
L2Pテーブル8においては、あるRegionアドレスに対応するエントリは、+0〜+15の16個のオフセット位置にそれぞれ対応する16個のMCAを保持する。
図4は、L2Pテーブルキャッシュ31の構成例を示す。
L2Pテーブルキャッシュ31は、N+1個のエントリ(N+1個のキャッシュライン)を含む。ここで、N+1は、通常、全Regionの数(=(M+1))よりも少ない。L2Pテーブルキャッシュ31の各エントリはIDフィールドとタグフィールドとを含む。IDフィールドはこのエントリの識別子を示す。タグフィールドは、どのRegionのアドレス変換データ(16個の物理アドレス)がこのエントリに格納されているのかを示す。
例えば、あるエントリに関連づけられた“0”のタグフィールドは、Regionアドレス=0を有するRegionに対応するアドレス変換データがこのエントリに格納されていることを示し、あるエントリに関連づけられた“2”のタグフィールドは、Regionアドレス=2を有するRegionに対応するアドレス変換データがこのエントリに格納されていることを示す。
L2Pテーブルキャッシュ31の各エントリは、+0〜+15の16個のオフセット位置にそれぞれ対応する16個のMCAを保持する。
図5は、圧縮L2Pテーブルキャッシュ32の構成例を示す。
圧縮L2Pテーブルキャッシュ32は、L2Pテーブル8のエントリの数と同数のエントリ(M+1個のエントリ)を含んでいてもよい。この場合、これらM+1個のエントリは、M+1個のRegionアドレス0〜Mにそれぞれ対応する。
圧縮L2Pテーブルキャッシュ32の各エントリは、このエントリに対応するRegionに属する16個の連続する論理アドレスにそれぞれ対応する16個のMCAを含むアドレス変換データを圧縮することによって得られる圧縮アドレス変換データ(Compressed Data)を格納する。ホスト2によって全てのRegionがリードアクセされた後は、圧縮L2Pテーブルキャッシュ32は、そののM+1個のエントリの全てに圧縮アドレス変換データが格納された状態となる。このため、コントローラ4は、NAND型フラッシュメモリ54上のL2Pテーブル8をリードすることなく、DRAM6上の圧縮L2Pテーブルキャッシュ32をリードするだけで、迅速に論理物理アドレス変換動作を実行することができる。
図6は、メタデータ生成機能を含まない圧縮伸張モジュール131の構成例を示す。
ここで、メタデータ生成機能とは、アドレス変換データを圧縮する事により生じる圧縮L2Pテーブルキャッシュ32の各エントリの空き領域に、非圧縮のメタデータを追加的に格納するための機能である。圧縮L2Pテーブルキャッシュ32はSSD3の全論理アドレスに対する論理物理アドレス変換のための圧縮アドレス変換データを保持可能であるが、通常、圧縮L2Pテーブルキャッシュ32内の圧縮アドレス変換データに対応する元のアドレス変換データの内容の一部のみをチェック(または検索)したい場合であっても、この圧縮アドレス変換データ全体を一旦伸張することが必要とされる。
また、圧縮L2Pテーブルキャッシュ32の内容の更新する場合にも、更新対象の圧縮アドレス変換データを一旦伸張した後に、この伸張された圧縮アドレス変換データを更新し、再び圧縮することが必要となる。
上述のメタデータ生成機能によって生成されるメタデータは、圧縮アドレス変換データに対応する元のアドレス変換データの内容の一部を示す情報である。圧縮アドレス変換データは、元のアドレス変換データの内容の一部を示すメタデータと一緒に、圧縮L2Pテーブルキャッシュ32の一つのエントリに格納される。このメタデータは、元のアドレス変換データを圧縮する際に、元のアドレス変換データの内容に基づいて生成される。
まず、理解しやくするために、メタデータ生成機能を含まない圧縮伸張モジュール131の構成例について説明する。
圧縮伸張モジュール131は、一つのRegion分のアドレス変換データを圧縮して一つのRegion分の圧縮アドレス変換データを生成し、この一つのRegion分の圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32としてDRAM6に格納する。
上述したように、一つのRegion分のアドレス変換データは、各々が4バイトのサイズを有する16個のMCA、すなわち64バイトの総サイズを有するデータで構成されている。このため、L2Pテーブルキャッシュ31の各エントリのサイズは、例えば、64バイトである。
圧縮伸張モジュール131では、目標圧縮率が例えば1/4に設定されている。この場合、圧縮伸張モジュール131は、64バイトのアドレス変換データを圧縮して、16バイト以内のサイズを有する圧縮アドレス変換データを生成する。このため、圧縮L2Pテーブルキャッシュ32の各エントリのサイズは、例えば、16バイトであり、L2Pテーブルキャッシュ31の各エントリのサイズよりも小さい。また、圧縮伸張モジュール131は、16バイト以内の圧縮アドレス変換データを伸張して、64バイトのアドレス変換データ(非圧縮アドレス変換データ)を生成する。
圧縮伸張モジュール131は、バッファ201、エンコーダ202、デコーダ203、バッファ204、制御レジスタ205等を含む。
バッファ201は、DMAC133から受信される64バイトアドレス変換データを一時的に格納する。この64バイトのアドレス変換データは、DMAC133から受信される64バイトライト要求に関連付けられたデータである。エンコーダ202は、64バイトアドレス変換データを圧縮する。例えば、エンコーダ202は、バッファ201に格納されている64バイトアドレス変換データを各々が所定サイズ(例えば4バイト)を有する複数のデータ部分(例えば16個のデータ部分)に分割し、各データ部分のビットパターンを別の短いビットパターン(符号)に変換する。これにより、64バイトアドレス変換データに含まれる16個のMCAの各々は、そのビットパターンに対応する符号に変換される。上述したように目標圧縮率が1/4に設定されているケースにおいては、64バイトアドレス変換データは16バイトデータに圧縮される。この16バイトデータは圧縮アドレス変換データとして16バイトライト要求に関連付けられ、そしてこの16バイトライト要求がDRAMインタフェース132に送られる。そして、この16バイトデータ(圧縮アドレス変換データ)は、DRAMインタフェース132を介して、DRAM6上の圧縮L2Pテーブルキャッシュ32の一つのエントリに格納される
デコーダ203は、16バイトリード要求に関連付けられた16バイトデータ(圧縮アドレス変換データ)をDRAMインタフェース132から受信し、この圧縮アドレス変換データを伸張する。この圧縮アドレス変換データを伸張することによって得られる元の64バイトアドレス変換データはバッファ204に格納される。そして、バッファ204に格納された64バイトアドレス変換データが関連付けられた64バイトリード要求がDMAC133に送られる。
デコーダ203は、16バイトリード要求に関連付けられた16バイトデータ(圧縮アドレス変換データ)をDRAMインタフェース132から受信し、この圧縮アドレス変換データを伸張する。この圧縮アドレス変換データを伸張することによって得られる元の64バイトアドレス変換データはバッファ204に格納される。そして、バッファ204に格納された64バイトアドレス変換データが関連付けられた64バイトリード要求がDMAC133に送られる。
制御レジスタ305は、ファームウェアがエンコーダ202およびデコーダ203の各々の動作を制御するために使用される。
図7は、非圧縮アドレス変換データと圧縮アドレス変換データとの関係を示す。
図7の上部に示されているように、一つのRegionに対応するアドレス変換データ(非圧縮アドレス変換データ)は、16個のMCA(MCA1、MCA2、…、MCA16)を含む。上述したように各MCAは4バイトのサイズを有しているので、一つのRegionに対応する非圧縮アドレス変換データは64バイトのサイズを有する。
図7の下部は、非圧縮アドレス変換データをエンコーダ202によって圧縮することによって得られる圧縮アドレス変換データを示す。圧縮アドレス変換データのサイズは最大で16バイトである。非圧縮アドレス変換データに含まれている16個のMCAそれぞれの値に応じて、実際の圧縮後の圧縮アドレス変換データサイズが圧縮前の1/4未満となる場合がある。したがって、16バイト未満のサイズを有する圧縮アドレス変換データが生成される場合がある。例えば、64バイトの非圧縮アドレス変換データが10バイトのサイズに圧縮された場合には、16バイトのサイズを有する圧縮アドレス変換データのうち、先頭から10バイトまでが有意なデータ部分となる。この有意なデータ部分に後続する残りの6バイトのデータ部分は、有意なデータを含まない空き領域(余白)となる。空き領域はパディングによって埋められてもよい。図7では、16バイトの圧縮アドレス変換データの空き領域が「空」として示されている。
図8は、圧縮L2Pテーブルキャッシュ32の各エントリの内容の例を示す。
図8において、「0x」は16進表記を表している。各Regionが16個の連続する論理アドレスを含む場合には、LCA[b31:b0]のうちの[b31:b3]、つまりLCAの上位28ビット、がRegionアドレスとして使用され、LCAの下位4ビットがオフセットとして使用される。
圧縮L2Pテーブルキャッシュ32の各エントリは、このエントリに対応するRegionに対応する非圧縮アドレス変換データを圧縮することによって得られる圧縮アドレス変換データを保持する。圧縮L2Pテーブルキャッシュ32の各エントリは、16バイトのサイズを有する。各Regionのアドレス変換データの圧縮率の違いにより空き領域のサイズにばらつきはあるが、16バイト未満の各圧縮アドレス変換データは、その末尾に空き領域がある形で圧縮L2Pテーブルの一つのエントリに格納される。空き領域は、このエントリのうち圧縮論理物理アドレス変換テーブルとして使用される領域以外の領域である。なお、通常は、空き領域はオール0のようなビットパターンによってパディングされる。
上述したように、圧縮L2Pテーブルキャッシュ32はSSD3の全論理アドレスに対する論理物理アドレス変換のための圧縮アドレス変換データを保持可能であるので、圧縮L2Pテーブルキャッシュ32は、SSD3の全論理アドレスに対するアドレス変換データの内容を参照または検索するために有用である。
しかし、圧縮L2Pテーブルキャッシュ32内のアドレス変換データは圧縮されているため、圧縮L2Pテーブルキャッシュ32内の圧縮アドレス変換データに対応する元のアドレス変換データの内容の一部のみをチェック(または検索)したい場合であっても、上述したように、この圧縮アドレス変換データを一旦伸張することが必要とされる。
元のアドレス変換データの内容の一部をチェックする処理の一例としては、これに限定されないが、Unmap検索などがある。このUnmap検索は、ホスト2から指定される論理アドレスに対応する有効データがNAND型フラッシュメモリ5に格納されているか否かをチェックする処理である。Unmap検索はアンマップチェック処理とも称される。
L2Pテーブル8のアドレス変換データおよびL2Pテーブルキャッシュ31のアドレス変換データの各々においては、論理アドレスにマッピングされていないMCA値は、オール1のような特定のビットパターンによって表される。オール1のような特定のビットパターンは、データの格納に使用されていないMCAを示す。換言すれば、オール1のような特定のビットパターンは、NAND型フラッシュメモリ5の物理アドレスが未割り当てである論理アドレスを識別するために使用される。
また、圧縮L2Pテーブルキャッシュ32内のあるRegionに対応する圧縮アドレス変換データを更新する必要がある場合には、上述したように、この圧縮アドレス変換データを伸張して元のアドレス変換データを得る処理、元のアドレス変換データ内のMCAが別のMCAで上書きされるように元のアドレス変換データを更新する処理、更新されたアドレス変換データを再び圧縮する処理を実行することが必要となる。
このようなアドレス更新処理は、例えば、ユーザデータをNAND型フラッシュメモリ5に書き込む場合、あるいは、ガベージコレクションによって有効データをNAND型フラッシュメモリ5上のある物理記憶位置から別の物理記憶位置にコピーする場合に必要となる。
Unmap検索を、図9を用いて説明する。
Unmap検索では、まず、ホスト2によって指定される論理アドレス(論理クラスタアドレス:LCA)から、このLCAが属するRegionのRegionアドレスとこのRegion内のオフセット(Regionオフセット)とが算出される。この場合、LCAの下位4ビットがオフセットとして算出され、下位4ビットを除くLCAの上位ビット部がこのLCAが属するRegionとして算出される。
そして、この算出されたRegionアドレスに対応するアドレス変換データがL2Pテーブルキャッシュ31に存在しない場合には、この算出されたRegionアドレスに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32から読み出される。読み出された圧縮アドレス変換データはデコーダ203によって伸張され、この圧縮アドレス変換データを伸張することによって得られる非圧縮アドレス変換データがワークRAM33に格納される。そして、算出されたオフセットに基づいて、非圧縮アドレス変換データに含まれる16個のMCA内の一つのMCAが特定される。特定されたMCAが、オール1のような特定のビットパターン(図9では、特定のビットパターンを有するMCAは「U」として示されている)を有するならば、ホスト2によって指定されるLCAは、物理アドレスが未割り当てのLCA(Unmap)であると判定される。
図10のフローチャートは、Unmap検索(Unmapチェック)処理の手順を示す。
まず、CPU12は、ホスト2によって指定される論理アドレス(論理クラスタアドレス:LCA)から、この論理アドレスが属するRegionのRegionアドレスとこのRegion内のオフセットとを算出する(ステップS11)。CPU12は、算出されたRegionアドレスに対応するアドレス変換データがL2Pテーブルキャッシュ31に存在するか否か、および算出されたRegionアドレスに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在するか否かを判定する(ステップS12)。
算出されたRegionアドレスに対応するアドレス変換データがL2Pテーブルキャッシュ31に存在せず(L2Pテーブルキャッシュミス)、且つ算出されたRegionアドレスに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在する(圧縮L2Pテーブルキャッシュヒット)場合、CPU12は、圧縮伸張モジュール131のデコーダ203を用いて、算出されたRegionアドレスに対応する圧縮アドレス変換データを伸長する(ステップS13)。
ステップS13では、CPU12の制御の下、圧縮伸張モジュール131は、算出されたRegionアドレスに対応する圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32から読み出す動作と、読み出された圧縮アドレス変換データを伸張して元の非圧縮アドレス変換データを得る動作と、元の非圧縮アドレス変換データをワークRAM33に格納する動作と、を含む伸張転送動作を実行する。ワークRAM33上においては、非圧縮アドレス変換データに含まれる16個のMCAはそれらのオフセット位置の順に配置される。
CPU12は、算出されたオフセットによって指定されるオフセット位置に存在するMCAの値をチェックする(ステップS14)。このMCAの値がUnmapを示す特定のビットパターン(例えばオール1のビットパターン)を有するならば(ステップS15のYES)、CPU12は、ホスト2によって指定されるLCAは、物理アドレスが未割り当てのLCA(Unmap)であると判定する(ステップS16)。一方、このMCAの値が特定のビットパターン(例えばオール1のビットパターン)を有していないならば(ステップS15のNO)、CPU12は、ホスト2によって指定されるLCAは、物理アドレスが未割り当てのLCA(Unmap)ではないと判定する(ステップS17)。
このように、Unmap検索においては、コントローラ4は、ハードウェアであるデコーダ203の制御と、ワークRAM33の検索を実行することが必要となる。
次に、アドレス更新動作を、図11を用いて説明する。
あるLCAに対応するMCAを更新すべき場合、このLCAからこのLCAが属しているRegionのRegionアドレスとこのRegion内のオフセットとが算出される。そして、この算出されたRegionアドレスに対応する圧縮L2Pテーブルキャッシュ32内のエントリから圧縮アドレス変換データがチェック対象圧縮アドレス変換データとして読み出される。読み出された圧縮アドレス変換データはデコーダ203によって伸張され、この圧縮アドレス変換データを伸張することによって得られる非圧縮アドレス変換データがワークRAM33に格納される。
そして、算出されたオフセットに基づいて、非圧縮アドレス変換データに含まれる16個のMCAの一つが特定される。特定されたMCAの値(図11では、「M」として示されている)は、新たなMCAの値(図11では、「M’」として示されている)に更新される。
特定されたMCAの値が更新された非圧縮アドレス変換データは、エンコーダ202によって圧縮される。更新された非圧縮アドレス変換データを圧縮することによって得られた圧縮アドレス変換データは、算出されたRegionアドレスに対応する圧縮L2Pテーブルキャッシュ32内のエントリに再び格納される。
図12のフローチャートは、アドレス更新(MCA update)動作の手順を示す。
あるLCAに対応するMCAを更新すべき場合、まず、CPU12は、このLCAからこのLCAが属するRegionのRegionアドレスとこのRegion内のオフセットとを算出する(ステップS21)。CPU12は、算出されたRegionアドレスに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在するか否かを判定する(ステップS22)。
算出されたRegionアドレスに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在する場合(圧縮L2Pテーブルキャッシュヒット)、CPU12は、圧縮伸張モジュール131のデコーダ203を用いて、算出されたRegionアドレスに対応する圧縮アドレス変換データを伸長する(ステップS23)。ステップS23では、CPU12の制御の下、圧縮伸張モジュール131は、算出されたRegionアドレスに対応する圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32から読み出す動作と、読み出された圧縮アドレス変換データを伸張して元の非圧縮アドレス変換データを得る動作と、元の非圧縮アドレス変換データをワークRAM33に格納する動作と、を含む伸張転送動作を実行する。ワークRAM33上においては、非圧縮アドレス変換データに含まれる16個のMCAはそれらオフセット位置の順に配置される。
CPU12は、算出されたオフセットによって指定されるオフセット位置に存在するMCAの値を更新する(ステップS24)。CPU12は、MCAの値が更新された非圧縮アドレス変換データを、エンコーダ202を用いて再び圧縮する(ステップS25)。ステップS25では、CPU12の制御の下、圧縮伸張モジュール131は、非圧縮アドレス変換データを圧縮して圧縮アドレス変換データを得る動作と、この圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32に書き戻す動作とを含む、圧縮転送動作を実行する。
このように、アドレス更新(MCA update)動作においては、コントローラ4は、デコーダ203を制御して圧縮アドレス変換データを伸張する動作と、エンコーダ202を制御して、更新されたアドレス変換データを再び圧縮する動作とを実行することが必要となる。
図13は、メタデータ生成機能を含む圧縮伸張モジュール131の構成例を示す。
図13の圧縮伸張モジュール131は、バッファ201、エンコーダ202、デコーダ203、バッファ204、制御レジスタ205に加え、メタデータジェネレータ301およびメタデータデコーダ302を含む。
メタデータジェネレータ301は、非圧縮アドレス変換データをエンコーダ202によって圧縮する際に、この非圧縮アドレス変換データに含まれ且つ特定ビットパターンを有する物理アドレスを識別可能な情報を上述の非圧縮のメタデータとして生成するように構成されている。
より詳しくは、非圧縮アドレス変換データをエンコーダ202によって圧縮する動作において、メタデータジェネレータ301は、エンコーダ202から出力される元の非圧縮アドレス変換データの内容に基づいて、圧縮後の非圧縮アドレス変換データの空き領域の量を把握する。空き領域に余裕があれば、メタデータジェネレータ301は、元の非圧縮アドレス変換データの内容に基づいてメタデータを生成し、生成したメタデータを、エンコーダ202から出力される圧縮アドレス変換データの末尾に追加する。
上述したように、エンコーダ202は、バッファ201に格納されている64バイトのアドレス変換データを各々が所定サイズ(例えば4バイト)を有する複数のデータ部分(例えば16個のデータ部分)に分割し、各データ部分のビットパターンを別の短いビットパターン(符号)に変換する。
この場合、エンコーダ202は、データ部分(4バイトMCA)毎に、そのデータ部分のビットパターンをメタデータジェネレータ301に出力してもよい。これにより、メタデータジェネレータ301は、元の非圧縮アドレス変換データに含まれる各MCAのビットパターンを検出することができる。なお、エンコーダ202は、各データ部分のビットパターンそのものではなく、そのビットパターンを識別するためのビットパターンIDをメタデータジェネレータ301に出力してもよい。この場合でも、メタデータジェネレータ301は、元の非圧縮アドレス変換データに含まれる各MCAのビットパターンを検出することができる。
例えば、メタデータジェネレータ301は、特定のビットパターン(または特定のビットパターンID)に対して「1」を割り当て、他のビットパターンそれぞれ(または他のビットパターンIDそれぞれ)に対して「0」を割り当てる。Unmapを示すオール1のビットパターン(Unmap)が検出すべき特定のビットパターンとして制御レジスタ205に設定されている場合、メタデータジェネレータ301は、オール1のビットパターン(Unmap)に対して「1」のビットを割り当て、他のビットパターンそれぞれに対して「0」のビットを割り当てる。
メタデータジェネレータ301は、エンコーダ202から受信されるビットパターンそれぞれに割り当てた「1」または「0」の値を集めることによって16ビットのメタデータを生成する。この16ビットのメタデータは元の64バイトのアドレス変換データに対応するRegionに属する16個のLCAにそれぞれ対応しており、その16ビットの各々は、対応するLCAが、物理アドレスが割り当てられているLCAであるか否かを示す。
すなわち、この16ビットのメタデータは、元の64バイトのアドレス変換データに対応する16個のLCAそれぞれが、MCAが未割り当ての論理アドレスであるか否かを示すビットマップデータ(アンマップビットマップ)として使用される。この場合、このアンマップビットマップにおいては、「1」を示すビットは、このビットに対応するLCAにはMCAが割り当てられていないことを表し、「0」を示すビットは、このビットに対応するLCAにはMCAが割り当てられていることを表す。
この生成された16ビットのメタデータ(ビットマップ)は、エンコーダ202から出力される圧縮アドレス変換データの末尾(空き領域)に追加される。そして、末尾にメタデータが追加された圧縮アドレス変換データは、圧縮L2Pテーブル32の一つのエントリに格納される。換言すれば、圧縮L2Pテーブル32のこのエントリには16バイト未満の圧縮アドレス変換データが格納され、さらにこの圧縮アドレス変換データに対応する元のアドレス変換データに関するメタデータが、このエントリの空き領域に追加の非圧縮の情報として格納される。
このように、エンコーダ202とメタデータジェネレータ301とを含む圧縮伸張モジュール131は、非圧縮アドレス変換データを圧縮して圧縮アドレス変換データを生成する圧縮回路として機能するだけでなく、非圧縮アドレス変換データを圧縮する際に、非圧縮アドレス変換データに含まれ且つ特定ビットパターンを有するMCAを識別可能な情報をメタデータとして生成する。
CPU12は、検出すべきビットパターンを制御レジスタ205に設定することによって、この検出すべきビットパターンを上述の特定のビットパターンとして圧縮伸張モジュール131のメタデータジェネレータ301に通知することができる。なお、CPU12は、検出すべきビットパターンを示すビットパターンIDを制御レジスタ205に設定し、これによって検出すべきビットパターンを示すビットパターンIDを圧縮伸張モジュール131のメタデータジェネレータ301に通知してもよい。
メタデータジェネレータ301は、非圧縮アドレス変換データに含まれる16個のMCAのうち、CPU12によって指定されるビットパターンを有するMCAを識別可能なメタデータを生成することができる。
また、本実施形態では、圧縮アドレス変換データの末尾に追加されるメタデータは、この圧縮アドレス変換データの伸張後にこの伸張された圧縮アドレス変換データの一部を上書きするための機能も有している。
CPU12は、圧縮L2Pテーブルキャッシュ32のあるエントリに格納されている圧縮アドレス変換データに対応する元のアドレス変換データに含まれる16個のMCAのうちの一つのMCAを新たなMCAに更新する場合、圧縮L2Pテーブルキャッシュ32内のこのエントリを直接アクセスして、MCA更新用のメタデータをこのエントリの空き領域に格納する。この場合、このMCA更新用のメタデータは、元のアドレス変換データ内の更新対象のMCAの位置を示すオフセット値と、新たなMCA(更新対象のMCAの更新後のMCA)とを、このエントリの空き領域にMCA更新用のメタデータとして格納する。この場合、元のアドレス変換データ内の更新対象のMCAの位置は、エントリの16個のMCAのうち更新対象のMCAが保存される位置を示す。
このエントリに格納されている圧縮アドレス変換データをデコーダ203によって伸張する動作においては、メタデータデコーダ302は、この圧縮アドレス変換データの末尾に追加されているメタデータを参照して、この圧縮アドレス変換データの空き領域にMCA更新用のメタデータが存在するか否かを判定する。
この圧縮アドレス変換データの空き領域にMCA更新用のメタデータが存在する場合、メタデータデコーダ302は、この圧縮アドレス変換データをデコーダ203によって伸張することによって得られる元のアドレス変換データを、このメタデータに含まれるオフセット値と、新たなMCAとを用いて更新する。これにより、CPU12は、あるLCAに対応するMCAの値を更新することが必要な場合、この更新対象のMCAを含む圧縮アドレス変換データにMCA更新用のメタデータを追加する処理だけをするだけでよく、この圧縮アドレス変換データの伸張および再圧縮をリアルタイムに実行する必要は無い。
図14は、非圧縮アドレス変換データと、メタデータを保持する圧縮アドレス変換データとの関係を示す。
図14の上部に示されているように、一つのRegionに対応するアドレス変換データ(非圧縮アドレス変換データ)は、16個のMCA(MCA1、MCA2、…、MCA16)を含む。上述したように各MCAは4バイトのサイズを有しているので、一つのRegionに対応する非圧縮アドレス変換データは64バイトのサイズを有する。
図14の下部は、非圧縮アドレス変換データをエンコーダ202によって圧縮することによって得られる圧縮アドレス変換データを示す。得られた圧縮アドレス変換データの実際のサイズが16バイト未満である場合には、この圧縮アドレス変換データは、空き領域を示すビットパターン(例えばオール0)によってパディングされてもよい。本実施形態では、この圧縮アドレス変換データの空き領域を有効利用するためにこの空き領域にメタデータ(「Meta」)が追加される。
図15は、圧縮L2Pテーブルキャッシュ32の各エントリの空き領域に格納されるメタデータのフォーマットの例を示す。
図15(A)は、圧縮アドレス変換データ用の16バイトフレームを示す。図15(A)に「スタック方向」として示されているように、メタデータは、圧縮アドレス変換データ用の16バイトフレームの末尾側から追加されていく。追加されるメタデータの数は1に限らず、複数のメタデータが圧縮アドレス変換データ用の16バイトフレームに追加されてもよい。図15(A)では、「MetaData1」、「MetaData2」が追加された場合が示されている。メタデータの終端位置には、メタデータの終了を示す識別子(End of operation(EOP))が追加される。このEOPは、各エントリ内のメタデータの位置を容易に特定することを可能にする
ただし、元のアドレス変換データを圧縮することによって得られる圧縮アドレス変換データにメタデータを格納可能な空き領域がない場合は、この圧縮アドレス変換データに追加されるメタデータはEOPのみとなる。
ただし、元のアドレス変換データを圧縮することによって得られる圧縮アドレス変換データにメタデータを格納可能な空き領域がない場合は、この圧縮アドレス変換データに追加されるメタデータはEOPのみとなる。
図15(B)は、各メタデータのフォーマットを示す。EOPの識別子は、例えば、0(=「0000」)である。
アンマップビットマップ(Unmap Bitmap)は、例えば、アンマップビットマップの識別子と、4ビットの予約フィールドと、16ビットのビットマップとを含む。アンマップビットマップの識別子は、例えば、1(=「0001」)である。
MCA更新用のメタデータ(Update Value)は、例えば、MCA更新用のメタデータの識別子と、4ビットのオフセット値と、32ビットの新たなMCA値(Update Val.)とを含む。MCA更新用のメタデータの識別子は、例えば、2(=「0010」)である。この識別子は、更新命令として利用される。4ビットのオフセット値は、更新すべきMCAが存在するアドレス変換データ内の位置を示す。この4ビットのオフセット値は、上述のRegionオフセットによって表される。
図16は、メタデータを保持する圧縮L2Pテーブルキャッシュ32の各エントリの内容の例を示す。
図16では、Regionアドレス「0x00000000」に対応する圧縮L2Pテーブルキャッシュ32のエントリ、Regionアドレス「0x00000010」に対応する圧縮L2Pテーブルキャッシュ32のエントリ、Regionアドレス「0x00000020」に対応する圧縮L2Pテーブルキャッシュ32のエントリ、Regionアドレス「0x00000030」に対応する圧縮L2Pテーブルキャッシュ32のエントリ、…、の各々の空き領域にメタデータが格納されている例が示されている。
図17は、非圧縮アドレス変換データとメタデータを保持する圧縮アドレス変換データとの関係を示す。
図17では、あるRegionに対応する16個のLCAのうち、LCA1、LCA2,LCA11にのみMCA1、MCA2、MCA11がそれぞれ割り当てられており、他のLCAの各々にはMCAが割り当てられていない場合が例示されている。この場合、このRegionに対応する非圧縮アドレス変換データを圧縮することによって得られる圧縮アドレス変換データの空き領域に追加されるアンマップビットマップは、「Unmap」、「0x3fdf」、「EOP」を含む。ここで、「Unmap」は4ビット「0001」の識別子と4ビットの予約フィールドとを表し、「0x3fdf」は16ビットのビットマップ「0011111111011111」を表している。ビットマップ「0011111111011111」は、MCA、MCA、Unmap、Unmap、Unmap、Unmap、Unmap、Unmap、Unmap、Unmap、MCA、Unmap、Unmap、Unmap、Unmap、Unmapという順序を示している。
「EOP」はメタデータの終端位置を示すので、図17に示されているように、コントローラ4(圧縮伸張モジュール131)は、「Unmap」および「0x3fdf」が格納される領域に隣接する領域に「EOP」を格納する。また、コントローラ4(圧縮伸張モジュール131)は、「Unmap」、「0x3fdf」、「EOP」が格納された空き領域の残り領域に所定のビットパターン(パディングデータ)を格納する。パディングデータは「EOP」が格納される領域に隣接する領域に格納される。
図18は、圧縮アドレス変換データの空き領域にアンマップビットマップが追加された圧縮L2Pテーブルキャッシュ32の例を示す。
ここでは、Regionアドレス「0x00000000」に対応する圧縮L2Pテーブルキャッシュ32のエントリと、Regionアドレス「0x00000020」に対応する圧縮L2Pテーブルキャッシュ32のエントリに、アンマップビットマップがそれぞれ追加されている場合が例示されている。
例えば、Regionアドレス「0x00000020」に属する特定のLCAにMCAが割り当てられているか否かをチェックするアンマップチェック処理においては、このRegionアドレス「0x00000020」が指定される。そして、この指定されたRegionアドレス「0x00000020」に対応する圧縮L2Pテーブルキャッシュ32のエントリに格納されているメタデータ(ここでは、アンマップビットマップ)が参照される。
図19のフローチャートは、メタデータを保持する圧縮L2Pテーブルキャッシュ32を用いて実行されるアンマップチェック処理の手順を示す。
ここでは、ホスト2によって指定される特定の論理アドレス(LCAx)にMCAが割り当てられているか否かをチェックする場合を想定する。
CPU12は、この特定のLCAxから、この特定のLCAxが属するRegionのRegionアドレスとこのRegion内のオフセットとを算出する(ステップS31)。CPU12は、算出されたRegionアドレスに対応するアドレス変換データがL2Pテーブルキャッシュ31に存在するか否か、および算出されたRegionアドレスに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在するか否かを判定する(ステップS32)。
算出されたRegionアドレスに対応するアドレス変換データがL2Pテーブルキャッシュ31に存在せず(L2Pテーブルキャッシュミス)、且つ算出されたRegionアドレスに対応する圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在する場合(圧縮L2Pテーブルキャッシュヒット)、CPU12は、算出されたRegionアドレスに対応する圧縮アドレス変換データを伸張せずに、この圧縮アドレス変換データが格納されている圧縮L2Pテーブルキャッシュ32内のエントリに格納されているメタデータ(アンマップビットマップ)を参照する(ステップS33)。ステップS33では、CPU12は、アンマップビットマップ内の16ビットのうち、算出されたオフセットによって示されるビット位置に存在するビットの値が、「1」であるかす否かを判定する(ステップS33)。
このビットの値が「1」である場合(ステップS35のYES)、CPU12は、この特定のLCAxが、MCA未割り当てのLCAであると判定する(ステップS35)。一方、このビットの値が「0」である場合(ステップS35のNO)、CPU12は、この特定のLCAxが、MCA割り当て済みのLCAであると判定する(ステップS36)。
このように、CPU12は、圧縮アドレス変換データを伸張すること無く、アンマップチェック処理を実行することができる。
図20は、メタデータを保持する圧縮L2Pテーブルキャッシュ32を用いて実行されるアドレス更新処理を示す。
あるLCAに対応するMCAを更新すべき場合、このLCAからこのLCAが属しているRegionのRegionアドレスとこのRegion内のオフセットとが算出される。そして、この算出されたRegionアドレスに対応する圧縮アドレス変換データが格納されている圧縮L2Pテーブルキャッシュ32内のエントリが特定される。そして、この特定されたエントリ内の空き領域に格納されているメタデータがCPU12(ファームウェア)によって更新され、これによって、このメタデータにMCA更新用のメタデータ(Update Value)が追加される。EOPの位置は、アンマップビットマップの終端位置から、MCA更新用のメタデータ(Update Value)の終端位置に変更される。
この圧縮アドレス変換データを伸張する処理の実行がCPU12によって指示された場合、デコーダ203は、圧縮L2Pテーブルキャッシュ32から読み出されるこの圧縮アドレス変換データ(メタデータを含む)を伸張し、そして、この圧縮アドレス変換データを伸張することによって得られる元の非圧縮アドレス変換データをバッファ204に格納する。この圧縮アドレス変換データに追加されているメタデータはメタデータデコーダ302に送られる。
メタデータデコーダ302は、このメタデータにMCA更新用のメタデータが含まれているか否かを判定する。このメタデータにMCA更新用のメタデータが含まれている場合、メタデータデコーダ302は、バッファ204に格納されている元の非圧縮アドレス変換データに含まれる16個のMCA値のうち、このMCA更新用のメタデータに含まれるオフセットによって指定される位置に存在するMCA値を、このMCA更新用のメタデータに含まれる新たなMCA値で上書きする。これにより、このオフセットによって指定される位置に存在するMCA値はバッファ204上で新たなMCA値に更新される。よって、CPU12は、更新されたMCA値を含む非圧縮アドレス変換データを扱うことができる。
図21のフローチャートは、メタデータを保持する圧縮L2Pテーブルキャッシュ32内の圧縮アドレス変換データを伸張する処理において実行されるアドレス更新処理の手順を示す
圧縮伸張モジュール131のデコーダ203は、圧縮L2Pテーブルキャッシュ32から読み出される圧縮アドレス変換データを伸張し、この圧縮アドレス変換データを伸張することによって得られる元の非圧縮アドレス変換データをバッファ204に格納する(ステップS41)。圧縮伸張モジュール131のメタデータデコーダ302は、この圧縮アドレス変換データ内のメタデータを参照し、このメタデータにMCA更新用のメタデータが存在するか否かを判定する(ステップS42)。この場合、メタデータデコーダ302は、4ビット「0010」の識別子(更新命令)がメタデータ内に存在するならば、このメタデータにMCA更新用のメタデータが存在すると判定する。
圧縮伸張モジュール131のデコーダ203は、圧縮L2Pテーブルキャッシュ32から読み出される圧縮アドレス変換データを伸張し、この圧縮アドレス変換データを伸張することによって得られる元の非圧縮アドレス変換データをバッファ204に格納する(ステップS41)。圧縮伸張モジュール131のメタデータデコーダ302は、この圧縮アドレス変換データ内のメタデータを参照し、このメタデータにMCA更新用のメタデータが存在するか否かを判定する(ステップS42)。この場合、メタデータデコーダ302は、4ビット「0010」の識別子(更新命令)がメタデータ内に存在するならば、このメタデータにMCA更新用のメタデータが存在すると判定する。
このメタデータにMCA更新用のメタデータが存在する場合(ステップS42のYES)、メタデータデコーダ302は、このMCA更新用のメタデータに含まれるオフセットと新たなMCA値とを使用して、バッファ204に格納されている元の非圧縮アドレス変換データを更新する(ステップS43)。ステップS43では、メタデータデコーダ302は、元の非圧縮アドレス変換データに含まれる16個のMCA値のうち、このMCA更新用のメタデータに含まれるオフセットによって指定される位置に存在するMCA値を、このMCA更新用のメタデータに含まれる新たなMCA値で上書きする。
次に、L2Pテーブルキャッシュ31および圧縮L2Pテーブルキャッシュ32を使用して実行される論理物理アドレス変換処理について説明する。
図22は、L2Pテーブルキャッシュ31のキャッシュヒットが起きた時に実行されるキャッシュ制御処理の処理シーケンスを示す。
ホスト2は、リードコマンドをSSD3に送出する(ステップS101)。コントローラ4がホスト2からのリードコマンドを受信した時、コントローラ4は、L2Pテーブルキャッシュ31のキャッシュヒットチェックを実行し(ステップS102)、このキャッシュヒットチェックの結果に基づいて、L2Pテーブルキャッシュ31が、キャッシュヒット、キャッシュミスのいずれの状態であるかを判定する(ステップS103)。
キャッシュヒットとは、リードコマンドによって指定された論理アドレスに対応する物理アドレスを含むアドレス変換データがL2Pテーブルキャッシュ31に存在する状態を意味する。キャッシュミスとは、リードコマンドによって指定された論理アドレスに対応する物理アドレスを含むアドレス変換データがL2Pテーブルキャッシュ31に存在しない状態を意味する。
キャッシュヒットの場合には、コントローラ4は、L2Pテーブルキャッシュ31をリードアクセスして、このアドレス変換データをL2Pテーブルキャッシュ31からリードする(ステップS104、S105)。そして、コントローラ4は、このアドレス変換データから、リードコマンド内の論理アドレスに対応する物理アドレスを取得する。なお、コントローラ4は、このアドレス変換データ内のこの物理アドレスだけをL2Pテーブルキャッシュ31からリードすることもできる。
そして、コントローラ4は、この物理アドレスを使用してNAND型フラッシュメモリ5をリードアクセスして、リードコマンド内の論理アドレスによって指定されるユーザデータをNAND型フラッシュメモリ5からリードする(ステップS106、S107)。コントローラ4は、ユーザデータをホスト2に返す(ステップS108)。
図23は、L2Pテーブルキャッシュ31のキャッシュミスが起こり且つ圧縮L2Pテーブルキャッシュ32のキャッシュヒットが起きた時に実行されるキャッシュ制御処理の処理シーケンスを示す。
ホスト2は、リードコマンドをSSD3に送出する(ステップS111)。コントローラ4がホスト2からのリードコマンドを受信した時、コントローラ4は、L2Pテーブルキャッシュ31のキャッシュヒットチェックを実行し(ステップS112)、このキャッシュヒットチェックの結果に基づいて、L2Pテーブルキャッシュ31が、キャッシュヒット、キャッシュミスのいずれの状態であるかを判定する(ステップS113)。
キャッシュミスの場合には、コントローラ4は、圧縮L2Pテーブルキャッシュ32のキャッシュヒットチェック(圧縮キャッシュヒットチェック)を実行し(ステップS114)、この圧縮キャッシュヒットチェックの結果に基づいて、圧縮L2Pテーブルキャッシュ32が、キャッシュヒット(圧縮キャッシュヒット)、キャッシュミス(圧縮キャッシュミス)のいずれの状態であるかを判定する(ステップS115)。
圧縮キャッシュヒットとは、リードコマンドによって指定された論理アドレスに対応する物理アドレスを含むアドレス変換データを圧縮することによって得られる圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在する状態を意味する。圧縮キャッシュミスとは、この圧縮アドレス変換データが圧縮L2Pテーブルキャッシュ32に存在しない状態を意味する。圧縮L2Pテーブルキャッシュ32がM+1個のエントリを有する構成であったとしても、圧縮L2Pテーブルキャッシュ32のこれら全てのエントリに圧縮アドレス変換データがキャッシュされるまでは、圧縮キャッシュミスが起こりうる。
また、L2Pテーブルキャッシュ31においては、必要に応じてエントリがL2Pテーブルキャッシュ31から追い出される。このため、L2Pテーブルキャッシュ31のキャッシュミスが起こり、且つ圧縮L2Pテーブルキャッシュ32のキャッシュヒット(圧縮キャッシュヒット)が起こる、というケースがある。
この場合、コントローラ4は、圧縮L2Pテーブルキャッシュ32をリードアクセスして、この圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32からリードする(ステップS116、S117)。この場合、圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32からリードする動作、圧縮アドレス変換データを伸張するデコード動作、このデコード動作によって得られる非圧縮アドレス変換データをL2Pテーブルキャッシュ31のエントリに転送する動作は、専用ハードウェア13によって実行することができる。そして、コントローラ4は、L2Pテーブルキャッシュ31のキャッシュエントリに転送された非圧縮アドレス変換データから、リードコマンド内の論理アドレスに対応する物理アドレスを取得する。
そして、コントローラ4は、この物理アドレスを使用してNAND型フラッシュメモリ5をリードアクセスして、リードコマンド内の論理アドレスによって指定されるユーザデータをNAND型フラッシュメモリ5からリードする(ステップS118、S119)。コントローラ4は、ユーザデータをホスト2に返す(ステップS120)。
図24は、L2Pテーブルキャッシュ31のキャッシュミスが起こり且つ圧縮L2Pテーブルキャッシュ32のキャッシュミスが起きた時に実行されるキャッシュ制御処理の処理シーケンスを示す。
ホスト2は、リードコマンドをSSD3に送出する(ステップS131)。コントローラ4がホスト2からのリードコマンドを受信した時、コントローラ4は、L2Pテーブルキャッシュ31のキャッシュヒットチェックを実行し(ステップS132)、このキャッシュヒットチェックの結果に基づいて、L2Pテーブルキャッシュ31が、キャッシュヒット、キャッシュミスのいずれの状態であるかを判定する(ステップS133)。
キャッシュミスの場合には、コントローラ4は、圧縮L2Pテーブルキャッシュ32のキャッシュヒットチェック(圧縮キャッシュヒットチェック)を実行し(ステップS134)、この圧縮キャッシュヒットチェックの結果に基づいて、圧縮L2Pテーブルキャッシュ32が、キャッシュヒット(圧縮キャッシュヒット)、キャッシュミス(圧縮キャッシュミス)のいずれの状態であるかを判定する(ステップS135)。
圧縮キャッシュミスの場合、コントローラ4は、NAND型フラッシュメモリ5内のL2Pテーブル8をリードアクセスして、この論理アドレスに対応する物理アドレスを含むアドレス変換データをL2Pテーブル8からリードする動作と、リードされたアドレス変換データをL2Pテーブルキャッシュ31に格納する動作と、リードされたアドレス変換データから、リードコマンド内の論理アドレスに対応する物理アドレスを取得する動作と、リードされたアドレス変換データを圧縮することによって得られる圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32に格納する動作とを実行する(ステップS136、S137)。アドレス変換データをL2Pテーブル8からリードする動作と、リードされたアドレス変換データを圧縮するエンコード動作と、エンコード動作によって得られる圧縮アドレス変換データを圧縮L2Pテーブルキャッシュ32に格納する動作とを含む圧縮転送は、専用ハードウェア13によって実行することができる。
そして、コントローラ4は、この物理アドレスを使用してNAND型フラッシュメモリ5をリードアクセスして、リードコマンド内の論理アドレスによって指定されるユーザデータをNAND型フラッシュメモリ5からリードする(ステップS138、S139)。コントローラ4は、ユーザデータをホスト2に返す(ステップS140)。
以上説明したように、本実施形態によれば、L2Pテーブルキャッシュ31と圧縮L2Pテーブルキャッシュ32の双方を使用いることにより、NAND型フラッシュメモリ5内のL2Pテーブル8へのアクセスよりも、DRAM5のようなランダムアクセスメモリへのアクセスが行われる確率を高くすることが可能となる。よって、論理物理アドレス変換の性能を向上でき、ひいてはSSD3の性能を改善することができる。
また、圧縮L2Pテーブルキャッシュ32の各エントリの空き領域は元のアドレス変換データの内容の一部を表す非圧縮のメタデータを格納しているので、L2Pテーブルキャッシュ31に存在しないアドレス変換データの内容の一部をチェックする処理を実行すべき場合、コントローラ4は、圧縮L2Pテーブルキャッシュ32のメタデータを参照することにより、圧縮アドレス変換データを伸張すること無く、L2Pテーブルキャッシュ31に存在しないアドレス変換データの内容の一部をチェックすることができる。よって、元のアドレス変換データの内容の一部をチェックする必要が生じる度に、圧縮アドレス変換データを伸張する処理、ワークRAMを検索する処理等を行う必要がなくなる。よって、圧縮アドレス変換データを伸張する動作、伸張された圧縮アドレス変換データを再圧縮する動作の回数が減少される。この結果、アドレス変換データを参照するために要する時間を短くでき、これによってSSD3の性能を改善することができる。
なお、圧縮L2Pテーブルキャッシュ32の各エントリの空き領域にはメタデータの終了を示す識別子であるEOPが格納されているので、コントローラ4は、容易に、圧縮L2Pテーブルキャッシュ32の各エントリ内のメタデータを容易に特定および参照することができる。
また、圧縮L2Pテーブルキャッシュ32の各エントリの空き領域(つまり圧縮アドレス変換データの空き領域)がメタデータの格納に利用されているので、16バイトに満たないサイズを有する圧縮アドレス変換データが格納されている各エントリの空き領域を有効利用することができる。
さらに、更新対象物理アドレスを含む圧縮アドレス変換データが格納されているエントリの空き領域には、新たな物理アドレスの格納に使用することもできる。これにより、物理アドレスの更新の度に、圧縮アドレス変換データを伸張および再圧縮する処理を行う必要も無い。
なお、本実施形態では、メタデータを生成する処理およびMCA更新用のメタデータに基づいてアドレスを更新する処理を圧縮伸張モジュール131によって実行する場合を例示したが、メタデータを生成する処理およびMCA更新用のメタデータに基づいてアドレスを更新する処理を、CPU12(ファームウェア)によって実行してもよい。メタデータをCPU12(ファームウェア)によって生成するケースにおいては、CPU12(ファームウェア)が圧縮L2Pテーブルの各エントリの空き領域にメタデータを書き込むようにしてもよい。
また、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、7…論理物理アドレス変換テーブル(L2Pテーブル)、31…論理物理アドレス変換テーブルキャッシュ(L2Pテーブルキャッシュ)、32…圧縮論理物理アドレス変換テーブルキャッシュ(圧縮L2Pテーブルキャッシュ)、131…圧縮伸張モジュール。
Claims (12)
- ホストに接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリに格納された論理物理アドレス変換テーブルの一部を第1のキャッシュとしてランダムアクセスメモリに格納し、前記論理物理アドレス変換テーブルを圧縮することによって得られる圧縮論理物理アドレス変換テーブルを第2のキャッシュとして前記ランダムアクセスメモリに格納するように構成されたコントローラとを具備し、
前記コントローラは、
前記ホストによって指定される第1の論理アドレスに対応する前記不揮発性メモリの第1の物理アドレスを含む第1のアドレス変換データが前記第1のキャッシュに存在せず、且つ前記第1のアドレス変換データを圧縮することによって得られる第1の圧縮アドレス変換データが前記第2のキャッシュに存在する場合、前記第1の圧縮アドレス変換データを伸張することによって得られる非圧縮アドレス変換データを前記第1のキャッシュに格納する動作と、前記非圧縮アドレス変換データから前記第1の物理アドレスを取得する動作とを実行し、
前記第1の圧縮アドレス変換データが格納される前記第2のキャッシュの第1のエントリのうち圧縮論理物理アドレス変換テーブルとして使用される領域以外の第1領域に、前記第1のアドレス変換データの一部を示す第1情報を格納し、
前記第1のキャッシュに存在しない前記第1のアドレス変換データの一部をチェックする処理を実行する場合、前記第2のキャッシュの前記第1のエントリに格納されている前記第1情報を参照するように構成されている、メモリシステム。 - 前記第1のアドレス変換データは複数の論理アドレスに対応するアドレス領域に対応する複数の物理アドレスを含み、
前記第1情報は、前記アドレス領域に対応する前記複数の論理アドレスのうち、物理アドレスが割り当てられていない論理アドレスを識別可能な情報を含む請求項1記載のメモリシステム。 - 前記第1の圧縮アドレス変換データが格納される前記第2のキャッシュの各々のエントリは所定のサイズを有し、前記所定のサイズは前記第1のアドレス変換データが格納される前記第1のキャッシュの各エントリのサイズより小さい請求項1に記載のメモリシステム。
- 前記コントローラは、前記第1情報の終了を示す識別子である第2情報を前記第1情報が格納される領域に隣接する領域に格納する請求項1に記載のメモリシステム。
- 前記コントローラは、前記第1領域にさらに所定のビットパターンである第3情報を格納する請求項4に記載のメモリシステム。
- 前記コントローラは、前記第3情報を前記第2情報が格納される領域に隣接する領域に格納する請求項5に記載のメモリシステム。
- 前記コントローラは、前記第1領域に前記第1情報を格納できない場合、前記第1領域に前記第1情報を格納せず前記第1領域に前記第2情報を格納する請求項4に記載のメモリシステム。
- 前記コントローラは、前記第1のアドレス変換データの一部をチェックする処理を実行する場合、前記第1の圧縮アドレス変換データを伸張することなく前記第1情報を参照する請求項1に記載のメモリシステム。
- 前記第1のアドレス変換データは複数の論理アドレスに対応するアドレス領域に対応する複数の物理アドレスを含み、
前記コントローラは、前記第1のアドレス変換データを圧縮して前記第1の圧縮アドレス変換データを生成する圧縮回路を含み、
前記圧縮回路は、前記第1のアドレス変換データを圧縮する場合に、前記第1のアドレス変換データに含まれ且つ特定のビットパターンを有する物理アドレスを識別可能な情報を前記第1情報として生成するように構成されている請求項1記載のメモリシステム。 - 前記コントローラは、検出すべきビットパターンを前記特定のビットパターンとして前記圧縮回路に通知するように構成されている請求項9記載のメモリシステム。
- 前記コントローラは、
前記第1のエントリに含まれる前記第1の圧縮アドレス変換データに対応する複数の物理アドレスのうちの第1物理アドレスを更新する場合、前記第1のエントリの前記複数の物理アドレスのうち前記第1物理アドレスが保存される位置を示すオフセット値と、前記第1物理アドレスの更新後の物理アドレスとを、前記第1のエントリの前記第1領域に格納するように構成されている請求項1記載のメモリシステム。 - 前記コントローラは、前記第1のエントリに格納されている前記第1の圧縮アドレス変換データを伸張する場合、前記第1のエントリに格納されている前記第1の圧縮アドレス変換データを伸張することによって得られる前記非圧縮アドレス変換データを、前記オフセット値と前記更新後の物理アドレスとを用いて更新するように構成されている請求項11記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019051550A JP2020154603A (ja) | 2019-03-19 | 2019-03-19 | メモリシステム |
US16/562,476 US11263147B2 (en) | 2019-03-19 | 2019-09-06 | 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 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019051550A JP2020154603A (ja) | 2019-03-19 | 2019-03-19 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020154603A true JP2020154603A (ja) | 2020-09-24 |
Family
ID=72516001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019051550A Pending JP2020154603A (ja) | 2019-03-19 | 2019-03-19 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11263147B2 (ja) |
JP (1) | JP2020154603A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11681318B2 (en) | 2021-03-18 | 2023-06-20 | Kioxia Corporation | Voltage generation circuit and semiconductor device |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210068699A (ko) * | 2019-12-02 | 2021-06-10 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 |
WO2021212353A1 (en) * | 2020-04-22 | 2021-10-28 | Micron Technology, Inc. | Mapping descriptors for read operations |
KR20220032826A (ko) * | 2020-09-08 | 2022-03-15 | 에스케이하이닉스 주식회사 | 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법 |
KR20220035568A (ko) * | 2020-09-14 | 2022-03-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275588B1 (en) * | 1998-11-12 | 2001-08-14 | I-Data International A/S | Apparatus and method for performing and controlling encryption/decryption for data to be transmitted on local area network |
JP5130646B2 (ja) | 2005-06-06 | 2013-01-30 | ソニー株式会社 | 記憶装置 |
JP2013196115A (ja) | 2012-03-16 | 2013-09-30 | Toshiba Corp | メモリシステム |
US20170177497A1 (en) | 2015-12-21 | 2017-06-22 | Qualcomm Incorporated | Compressed caching of a logical-to-physical address table for nand-type flash memory |
US10067881B2 (en) * | 2016-06-15 | 2018-09-04 | Western Digital Technologies, Inc. | Compression and caching for logical-to-physical storage address mapping tables |
JP7010740B2 (ja) | 2018-03-16 | 2022-01-26 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2020135134A (ja) * | 2019-02-14 | 2020-08-31 | 株式会社日立製作所 | ストレージシステム及び圧縮方法 |
-
2019
- 2019-03-19 JP JP2019051550A patent/JP2020154603A/ja active Pending
- 2019-09-06 US US16/562,476 patent/US11263147B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11681318B2 (en) | 2021-03-18 | 2023-06-20 | Kioxia Corporation | Voltage generation circuit and semiconductor device |
US12013712B2 (en) | 2021-03-18 | 2024-06-18 | Kioxia Corporation | Voltage generation circuit and semiconductor device |
Also Published As
Publication number | Publication date |
---|---|
US20200301847A1 (en) | 2020-09-24 |
US11263147B2 (en) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628052B2 (en) | Memory system controlling a cache of a nonvolatile memory | |
CN109725847B (zh) | 存储器***及控制方法 | |
CN109240938B (zh) | 存储***以及控制非易失性存储器的控制方法 | |
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 | |
US10565124B2 (en) | Memory system and method for controlling nonvolatile memory | |
US9329991B2 (en) | Translation layer partitioned between host and controller | |
US10437737B2 (en) | Data storage device | |
JP2019057172A (ja) | メモリシステムおよび制御方法 | |
US10628303B2 (en) | Storage device that maintains a plurality of layers of address mapping | |
JP2019057178A (ja) | メモリシステムおよび制御方法 | |
KR102603070B1 (ko) | 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법 | |
JP2015036982A (ja) | ホストとコントローラとの間でパーティション化された変換レイヤ | |
CN111581122A (zh) | 用于管理存储器***中的映射数据的方法和设备 | |
TWI777720B (zh) | 用來藉助於裝置側表資訊而在主機效能增幅器架構中進行記憶裝置的存取管理的方法及設備 | |
JP7053399B2 (ja) | 情報処理システム | |
US20230401149A1 (en) | Memory system and information processing system | |
US11074178B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11853200B2 (en) | Memory system and controller to invalidate data corresponding to a logical address | |
CN113835617A (zh) | 数据处理方法及对应的数据储存装置 | |
KR20200126531A (ko) | 메모리 시스템 및 그의 커맨드 수행 방법 | |
US11861197B2 (en) | Memory system and information processing system | |
US20240095182A1 (en) | Memory system and control method | |
JP2024043974A (ja) | メモリシステム | |
JP2024043063A (ja) | メモリシステムおよび制御方法 |