JP2013196115A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2013196115A JP2013196115A JP2012060090A JP2012060090A JP2013196115A JP 2013196115 A JP2013196115 A JP 2013196115A JP 2012060090 A JP2012060090 A JP 2012060090A JP 2012060090 A JP2012060090 A JP 2012060090A JP 2013196115 A JP2013196115 A JP 2013196115A
- Authority
- JP
- Japan
- Prior art keywords
- data
- logical
- address
- management information
- compression
- 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)
Abstract
【課題】不揮発性メモリにおける管理テーブルの読み出し/書き込みを、短時間で行なうことができるメモリシステムを提供すること。
【解決手段】実施形態のメモリシステムは、データの管理情報を記憶する不揮発性メモリと、前記管理情報を一時的に保持しておく記憶部と、コントローラと、圧縮/伸張処理部と、を備えている。また、前記コントローラは、ホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新する。また、前記圧縮/伸張処理部は、第1の条件を満たした場合に前記管理情報を圧縮し、第2の条件を満たした場合に圧縮された前記管理情報を伸張する。そして、前記コントローラは、圧縮された管理情報を所定のタイミングで前記不揮発性メモリに記憶させる。
【選択図】図1
【解決手段】実施形態のメモリシステムは、データの管理情報を記憶する不揮発性メモリと、前記管理情報を一時的に保持しておく記憶部と、コントローラと、圧縮/伸張処理部と、を備えている。また、前記コントローラは、ホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新する。また、前記圧縮/伸張処理部は、第1の条件を満たした場合に前記管理情報を圧縮し、第2の条件を満たした場合に圧縮された前記管理情報を伸張する。そして、前記コントローラは、圧縮された管理情報を所定のタイミングで前記不揮発性メモリに記憶させる。
【選択図】図1
Description
本発明の実施形態は、メモリシステムに関する。
近年、不揮発性半導体記憶装置であるNANDフラッシュメモリの大容量化が進行し、このNANDフラッシュメモリを搭載したメモリシステムとしてのSSD(Solid State Drive)が注目されている。
従来、SSDでは、揮発性メモリ上の管理テーブルをそのままを不揮発性メモリであるNANDフラッシュメモリへ記憶させていた。しかしながら、管理テーブルのサイズが大きい場合、NANDフラッシュメモリへの書き込みとNANDフラッシュメモリからの読み込みに長時間を要する。このため、揮発性メモリと不揮発性メモリとの間の管理テーブルの読み出し/書き込みを、短時間で行なうことが望まれている。
本発明が解決しようとする課題は、不揮発性メモリにおける管理テーブルの読み出し/書き込みを、短時間で行なうことができるメモリシステムを提供することである。
実施形態によれば、メモリシステムが提供される。メモリシステムは、データの管理情報を記憶する不揮発性メモリと、前記不揮発性メモリに記憶されている管理情報を一時的に保持しておく記憶部と、を備えている。また、前記メモリシステムは、前記不揮発性メモリに記憶された管理情報を第1のタイミングで前記記憶部に取込むとともに、前記記憶部内の管理情報を第2のタイミングで前記不揮発性メモリに記憶させるコントローラを備えている。前記コントローラは、ホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新しながら前記管理情報に基づいて前記記憶部および前記不揮発性メモリでのデータ管理を行なう。また、メモリシステムは、第1の条件を満たした場合に前記管理情報を圧縮するとともに、第2の条件を満たした場合に圧縮された前記管理情報を伸張する圧縮/伸張処理部を備えている。そして、前記コントローラは、圧縮された管理情報を前記不揮発性メモリに記憶させる。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
まず、本実施形態に係るメモリシステムのデータ圧縮/伸張処理の概念について説明する。本実施形態では、メモリシステムとしてのSSD(Solid State Drive)が、管理テーブル(後述の論物変換テーブル20X)を圧縮した後、NANDフラッシュメモリに記憶させる。
まず、本実施形態に係るメモリシステムのデータ圧縮/伸張処理の概念について説明する。本実施形態では、メモリシステムとしてのSSD(Solid State Drive)が、管理テーブル(後述の論物変換テーブル20X)を圧縮した後、NANDフラッシュメモリに記憶させる。
図1は、第1の実施形態に係るメモリシステムのデータ圧縮処理の概念を説明するための説明図である。メモリシステム(後述のSSD1)は、RAM(Random Access Memory)4と、不揮発性メモリであるNANDフラッシュメモリ6と、を備えている。また、本実施形態のSSD1は、RAM4内の論物変換テーブル20Xを圧縮してからNANDフラッシュメモリ6に書き込むとともに、NANDフラッシュメモリ6内の論物変換テーブル20Xを伸張してからRAM4内に書き込む機能(後述する管理データ圧縮/伸張部5A)を備えている。
論物変換テーブル20Xは、ホスト装置で指定された論理アドレス(LBA)L0〜Ln(nは自然数)とNANDフラッシュメモリ6内のデータの格納位置を指定する物理アドレスP0〜Pnとの対応関係を示すものである。図1の論物変換テーブル20Xでは、論理アドレスL0が物理アドレスP0に対応し、論理アドレスL1が物理アドレスP1に対応している。また、論理アドレスLn(nは0以上の整数)が物理アドレスPnに対応している。
SSD1では、RAM4上で論物変換テーブル20Xの管理を行なっている。管理データ圧縮/伸張部5Aは、RAM4内の論物変換テーブル20XをNANDフラッシュメモリ6に記憶させる際に、論物変換テーブル20Xの圧縮処理を行なう。そして、管理データ圧縮/伸張部5Aは、圧縮した論物変換テーブル20XをNANDフラッシュメモリ6に記憶させる。
具体的には、管理データ圧縮/伸張部5Aは、論物変換テーブル20X内のX番目の(Xは0〜(n−1))物理アドレスと(X+1)番目の物理アドレスとの差分を算出する。例えば、論物変換テーブル20X内の先頭の物理アドレスP0と2番目の物理アドレスP1との差分として、差分D1が算出される。また、2番目の物理アドレスP1と3番目の物理アドレスP2との差分として、差分D2が算出され、3番目の物理アドレスP2と4番目の物理アドレスP3との差分として、差分D3が算出される。同様に、(n−1)番目の物理アドレスP(n−1)とn番目の物理アドレスPnとの差分として、差分Dnが算出される。
管理データ圧縮/伸張部5Aは、先頭の物理アドレスP0に対しては、圧縮処理は行わない。この場合、管理データ圧縮/伸張部5Aは、論理アドレスL0と、圧縮処理を行わなかったことを示す情報「0」と、物理アドレスP0と、を対応付けしたデータ101を生成する。
また、管理データ圧縮/伸張部5Aは、1つ前の物理アドレスとの差分が「1」である物理アドレスに対して圧縮処理を行う。具体的には、管理データ圧縮/伸張部5Aは、論物変換テーブル20X内から、1つ前の物理アドレスとの差分が「1」である物理アドレスを抽出する。そして、SSD1は、論物変換テーブル20X内で、「1」が何回続くかを算出する。例えば、物理アドレスP0〜Pnがシーケンシャルに連続したデータである場合、差分D1〜Dnは、全て「1」となる。この場合、SSD1は、「1」がn回続くと判断する。換言すると、SSD1は、シーケンシャルに連続しているアドレスの連続回数として「n」を算出する。そして、管理データ圧縮/伸張部5Aは、論理アドレスL1と、圧縮処理を行ったことを示す情報「1」と、「n」を示す情報と、を対応付けしたデータ102を生成する。この後、管理データ圧縮/伸張部5Aは、データ101,102を、NANDフラッシュメモリ6内に記憶させる。
また、管理データ圧縮/伸張部5Aは、NANDフラッシュメモリ6からデータ101,102を読み出してRAM4に展開する場合、データ101,102を伸張処理してからRAM4に展開する。このとき、管理データ圧縮/伸張部5Aは、圧縮処理と逆の手順によってデータ101,102を伸張処理する。
なお、管理データ圧縮/伸張部5Aは、1つ前の物理アドレスとの差分が「1」でない物理アドレスに対して圧縮処理を行なわない。この場合、管理データ圧縮/伸張部5Aは、論理アドレスと、圧縮処理を行なっていないことを示す情報「0」と、物理アドレスと、を対応付けしたデータを生成する。また、管理データ圧縮/伸張部5Aは、差分「1」の連続回数が2未満の場合は、物理アドレスの圧縮処理を行わない。
このように、SSD1は、圧縮処理によって論物変換テーブル20X内のデータサイズを小さくしてからNANDフラッシュメモリ6へ書き込むことにより、NANDフラッシュメモリ6への書き込み時間と読み出し時間を短縮する。
図2は、第1の実施形態に係るSSDの構成例を示すブロック図である。半導体記憶装置としてのSSD1は、管理情報記憶部8を含むRAM4と、実際にデータを記憶するNANDフラッシュメモリ6と、管理データ圧縮/伸張部5Aと、コントローラ7と、を備えている。
RAM4は、ホスト装置10、コントローラ7、管理データ圧縮/伸張部5Aに接続されている。管理データ圧縮/伸張部5Aは、RAM4、NANDフラッシュメモリ6、コントローラ7に接続されている。また、NANDフラッシュメモリ6は、管理データ圧縮/伸張部5A、コントローラ7に接続されている。そして、コントローラ7は、ホスト装置10、RAM4、管理データ圧縮/伸張部5A、NANDフラッシュメモリ6に接続されている。
RAM4は、例えばSRAM、DRAM、FeRAMなどのメモリである。RAM4は、ホスト装置10から送られてくるデータを一時的に記憶するとともに、記憶したデータを管理データ圧縮/伸張部5Aを介してNANDフラッシュメモリ6に送る。また、RAM4は、ホスト装置10から読み出し要求のあったデータがNANDフラッシュメモリ6から読み出されると、読み出したデータを一時的に記憶しておく。NANDフラッシュメモリ6から読み出されてRAM4に一時的に記憶されたデータは、ホスト装置10に送られる。
また、管理情報記憶部8は、論理アドレスで指定されるデータがNANDフラッシュメモリ6のどこの物理に書き込まれているかという対応関係を示す論物変換テーブル20Xを記憶する。論物変換テーブル20Xは、ホスト装置10から与えられる論理アドレスとNANDフラッシュメモリ6の物理アドレス(記憶位置)との対応関係を示す変換テーブルである。論物変換テーブル20Xは、SSD1の起動時等の所定タイミングで、NANDフラッシュメモリ6からRAM4に展開される。そして、NANDフラッシュメモリ6内のデータ書き込みやデータ消去等に伴い論理アドレスと物理アドレスとの対応関係が更新された場合、RAM4に展開された論物変換テーブル20Xが更新される。
なお、論物変換テーブル20XがNANDフラッシュメモリ6内に書き込まれるタイミングは、例えば、SSD1が正常電源源断される前(STANBY)、データの不揮発化を行う際(FLUSHコマンド実行時)、論物変換テーブル20XがRAM4内に収まらなくなった場合などである。本実施形態では、論物変換テーブル20XをNANDフラッシュメモリ6に記憶させる直前に、所定の圧縮方式を用いてRAM4内でデータサイズを圧縮し、その後、NANDフラッシュメモリ6に記憶させる。
管理データ圧縮/伸張部5Aは、RAM4内の論物変換テーブル20Xを圧縮処理するとともに、圧縮した論物変換テーブル20XをNANDフラッシュメモリ6に記憶させる。また、管理データ圧縮/伸張部5Aは、NANDフラッシュメモリ6内の論物変換テーブル20Xを伸張処理するとともに、伸張した論物変換テーブル20XをRAM4内に展開させる。
コントローラ7は、RAM4、NANDフラッシュメモリ6、管理データ圧縮/伸張部5Aを制御する。コントローラ7は、RAM4内の論物変換テーブル20Xを用いて、NANDフラッシュメモリ6内へのデータの書き込み、NANDフラッシュメモリ6内からのデータの読み出しを行なう。
具体的には、コントローラ7は、NANDフラッシュメモリ6が記憶している論物変換テーブル20Xを、所定のタイミング(起動時など)でRAM4に取込むとともに、RAM4内の論物変換テーブル20Xを所定のタイミングでNANDフラッシュメモリ6に記憶させる。また、コントローラ7は、ホスト装置10とNANDフラッシュメモリ6との間でRAM4を介してデータ転送を行う。また、コントローラ7は、データ転送の際に、論物変換テーブル20XをRAM4およびNANDフラッシュメモリ6で更新しながら論物変換テーブル20Xに基づいてRAM4およびNANDフラッシュメモリ6でのデータ管理を行なう。
例えば、NANDフラッシュメモリ6内にデータを書き込む場合、コントローラ7は、論理アドレスをNANDフラッシュメモリ6内の記憶位置である物理アドレスに変換する。そして、コントローラ7は、変換した物理アドレスを含むライトコマンドをNANDフラッシュメモリ6に送る。
SSD1は、図示しないインタフェースを介して、ホスト装置10からの読み書き指示を受ける。ホスト装置10とSSD1との間のインタフェースは、例えば、SATA(Serial ATA)規格に準拠するが、これに限定されるものではない。管理データ圧縮/伸張部5Aは、ハードウェアとして実装してもよいし、コントローラ7が実行するファームウェアモジュールとして実装してもよい。
NANDフラッシュメモリ6は、複数の不揮発性メモリセルが行列上に配置されたメモリセルアレイ及び当該メモリセルアレイに対する書き込み、読み出し、消去動作を制御するための周辺回路を含んでいる。メモリセルアレイは、データ消去の最小単位であるブロックを複数配列して構成されている。各々のブロックは、データ書込み及び読み出しの最小単位であるページを複数配列して構成されている。各々のメモリセルは、1ビットを記憶するように構成されていてもよいし、2ビット以上を記憶するように構成されていてもよい。NANDフラッシュメモリ6では、ブロック内の同一ページに対する再書き込みは、一度当該ページを含むブロック全体を消去した後でなければ許可されない。
ホスト装置10からSSD1に書き込まれたデータは、所定の管理単位でNANDフラッシュメモリ6に記憶される。論理アドレス空間上の連続したアドレスを論物変換(論理アドレスと物理アドレスとの変換)の単位として、当該連続したアドレスをまとめてNANDフラッシュメモリ6上の物理的な領域に割り当てる。管理単位内においては、論理アドレスが連続する複数のセクタが順に配置されている。管理単位の大きさは任意であるが、例えば、NANDフラッシュメモリ6のページサイズやブロックサイズ、あるいはホスト装置10が採用するファイルシステムのクラスタサイズ等に一致させることができる。なお、クラスタサイズは、セクタサイズ以上である。
ホスト装置10から書き込まれた更新データが管理単位にアラインされていない場合には、NANDフラッシュメモリ6上の管理単位の大きさの領域に既に記憶されているデータと、管理単位の大きさに満たない新たに書き込まれた更新データがRAM4上でマージされ、管理単位のデータが作成されたうえでNANDフラッシュメモリ6の空き領域に書き込まれる(リードモディファイライト)。ホスト装置10から書き込まれたデータがNANDフラッシュメモリ6上のどこに書き込まれるかは動的に変化するものであり、その対応関係が論物変換テーブル20Xによって管理される。論理アドレスとしては、例えば、論理容量に対してセクタ単位で0から通し番号が付されたLBA(Logical Block Address)が採用される。
ここで、管理単位でアラインされたLBAとNANDフラッシュメモリ上において管理単位に割り振られているデータ領域との対応関係について説明する。ホスト装置10が書き込み要求で指定する論理アドレスはセクタ単位であるが、SSD1内部では論理アドレスは管理単位の大きさ(例えば、クラスタサイズ)でアラインされる。そして、管理単位内の連続するLBAに対応するセクタが、NANDフラッシュメモリ6の管理単位の領域にまとめて記憶される。例えば、管理単位の大きさがクラスタサイズに等しい場合、クラスタサイズでアラインされたLBAに対応する複数のセクタが、NANDフラッシュメモリ6のクラスタサイズ分の領域に書き込まれる。
SSD1では、論理クラスタの論理アドレスと、物理クラスタの物理アドレスとの対応関係を、論物変換テーブル20Xを用いて管理している。図3は、論理クラスタと物理クラスタの対応関係を示す図である。
論理クラスタの並びが、ホスト装置10から見えるセクタの並びであり、論理クラスタに対応するデータが、NANDフラッシュメモリ6内に物理クラスタとして記憶される。換言すると、論理クラスタ単位でホスト装置10から書き込まれたデータがNANDフラッシュメモリ6内の物理クラスタに割り当てられる。このとき、物理クラスタは、論理クラスタと同じ並びになるとは限らない。このため、論物変換テーブル20Xでは、論理アドレスと物理アドレスとの対応関係(対応表)が格納されている。換言すると、論物変換テーブル20Xでは、何れの論理クラスタが、NANDフラッシュメモリ6内の何れの物理クラスタに書き込まれているかが、格納されている。
例えば、図1で説明した論物変換テーブル20Xでは、ホスト装置10が指定する論理アドレスを論理クラスタ単位でアラインした値と、NANDフラッシュメモリ6の物理アドレスを物理クラスタ単位でアラインした値と、が対応付けされている。したがって、論物変換テーブル20Xでは、論理アドレスとして論理クラスタ番号が登録され、物理アドレスとして物理クラスタ番号が登録されている。なお、論物変換テーブル20Xにおいて、論理アドレスは登録されていなくてもよい。この場合、例えば、物理アドレスのメモリアドレスが論理アドレスとなる。
ホスト装置10からSSD1に書き込みが要求されるデータは連続しているデータであることが多い。特にホスト装置10とSSD1とを用いて構成されるシステムがPC(Personal Computer)系である場合、ホスト装置10からは、文書ファイル、画像データ、動画データといった連続したデータの固まり(シーケンシャルライト)が書き込み単位として要求される。このとき、SSD1は、書き込まれるデータが、論理クラスタ単位でNANDフラッシュメモリ6の何れの物理クラスタに書き込まれているかを、論物変換テーブル20Xに記憶させる。そして、所定のタイミングで、論物変換テーブル20XがNANDフラッシュメモリ6内に記憶される。このとき、本実施形態では、論物変換テーブル20Xが圧縮処理される。
(論物変換テーブルの第1の圧縮処理)
図4は、論物変換テーブルの第1の圧縮処理例を説明するための図である。また、図5は、論物変換テーブルの第1の圧縮処理手順を示すフローチャートである。図4では、論物変換テーブル20Xの一例である論物変換テーブル20Aの圧縮処理例を示している。なお、図4に示している論物変換テーブル20Aでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。
図4は、論物変換テーブルの第1の圧縮処理例を説明するための図である。また、図5は、論物変換テーブルの第1の圧縮処理手順を示すフローチャートである。図4では、論物変換テーブル20Xの一例である論物変換テーブル20Aの圧縮処理例を示している。なお、図4に示している論物変換テーブル20Aでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。
SSD1では、動作中、必要に応じて論物変換テーブル20Aを編集する。また、SSD1のコントローラ7は、動作中、論物変換テーブル20AのNANDフラッシュメモリ6への更新が必要か否かを監視している(ステップS10)。論物変換テーブル20Aの更新が必要なタイミングでなければ(ステップS10、No)、コントローラ7は、更新有無の監視を継続する。一方、論物変換テーブル20Aの更新が必要なタイミングになると(ステップS10、Yes)、コントローラ7は、管理データ圧縮/伸張部5Aに論物変換テーブル20Aの圧縮処理を指示する。
管理データ圧縮/伸張部5Aは、書き込まれるデータが連続しているデータであることを利用して、論物変換テーブル20Aを論理的に圧縮する。例えば、論物変換テーブル20Aでは、論理アドレスが、0、1、2、3・・・31である。また、論物変換テーブル20Aでは、各論理アドレスに対応する物理アドレスが、100_0000、100_0001、100_0010、100_0011、・・・101_1111のように、連続している。
この場合において、管理データ圧縮/伸張部5Aは、論物変換テーブル20A内のX番目の物理アドレス(上段側アドレス)と(X+1)番目の物理アドレス(下段側アドレス)との差分を、X=0〜30の全てに対して算出する。換言すると、管理データ圧縮/伸張部5Aは、論物変換テーブル20A内の各物理アドレス間に対し、上段側の物理アドレスと下段側の物理アドレスの差分を算出する(ステップS20)。
そして、管理データ圧縮/伸張部5Aは、各差分のうち値が「1」である差分を抽出するとともに、この「1」が連続して何回続くかを算出する。換言すると、差分「1」の連続回数が算出される(ステップS30)。なお、「1」が連続した後、一度途切れて再び「1」が続くような場合には、「1」の連続群毎に「1」の連続回数が算出される。
例えば、図4に示す論物変換テーブル20Aの場合、論物変換テーブル20A内の先頭の物理アドレス「100_0000」と2番目の物理アドレス「100_0001」との差分として、「000_0001」が算出される。また、2番目の物理アドレス「100_0001」と3番目の物理アドレス「100_0010」との差分として、「000_0001」が算出され、3番目の物理アドレス「100_0010」と4番目の物理アドレス「100_0011」との差分として、「000_0001」が算出される。同様に、31番目の物理アドレス「101_1110」(図示せず)と32番目の物理アドレス「101_1111」との差分として、差分「000_0001」が算出される。
そして、管理データ圧縮/伸張部5Aは、差分「1」に対応する差分「000_0001」の連続回数を算出する。換言すると、管理データ圧縮/伸張部5Aは、上段側の物理アドレスとその下段側の物理アドレスとの間で引き算を行ない、その結果を、「1」の連続した長さで表現する。ここでは、差分「000_0001」の連続回数として31回が算出される。なお、先頭の物理アドレス「100_0000」に対応する差分は算出できないので、管理データ圧縮/伸張部5Aは、先頭の物理アドレスに対する差分算出は行なわない。
管理データ圧縮/伸張部5Aは、先頭の物理アドレス「100_0000」に対しては、圧縮していないことを示す「0」を最上位ビットに付加する。これにより、管理データ圧縮/伸張部5Aは、物理アドレス「100_0000」をデータ「0100_0000」に変換する。換言すると、差分が「1」でなかった物理アドレスに、圧縮していないことを示すデータが付加される(ステップS40)。そして、管理データ圧縮/伸張部5Aは、論理アドレスの「0」と、変換後のデータ「0100_0000」と、を対応付けする。
また、管理データ圧縮/伸張部5Aは、差分「000_0001」の連続回数である「31」を示す「001_1111」に対し、圧縮したことを示す「1」を最上位ビットに付加する。これにより、管理データ圧縮/伸張部5Aは、「001_1111」を「1001_1111」に変換する。換言すると、管理データ圧縮/伸張部5Aは、連続回数を示すデータに対し、圧縮したことを示すデータを付加する(ステップS50)。そして、管理データ圧縮/伸張部5Aは、論理アドレスの「1」と、変換後のデータ「1001_1111」と、を対応付けする。
この後、管理データ圧縮/伸張部5Aは、論理アドレスと変換後のデータとを対応付けしたデータ(圧縮後の論物変換テーブル20A)をNANDフラッシュメモリ6に書き込む(ステップS60)。これにより、NANDフラッシュメモリ6は、論理アドレスの「0」と変換後のデータ「0100_0000」とが対応付けされたデータと、論理アドレスの「1」と連続回数を示すデータ「1001_1111」とが対応付けされたデータと、を記憶する。
なお、図4では、論物変換テーブル20Aの各物理アドレスを、7ビットで示した場合について説明したが、論物変換テーブル20Aの各物理アドレスを、8ビット以上で示してもよい。この場合であっても、各物理アドレスの最上位側の空いているビットを利用して、圧縮したか否かを示す情報の格納に用いる。
圧縮された論物変換テーブル20AをNANDフラッシュメモリ6から読み出す場合、管理データ圧縮/伸張部5Aは、圧縮された論物変換テーブル20Aの伸張処理を行う。例えば、図4に示した圧縮データ「0100_0000」、「1001_1111」を伸張する場合、管理データ圧縮/伸張部5Aは、8ビットずつデータを読み出す。
最初にデータ「0100_0000」が読み出される。管理データ圧縮/伸張部5Aは、読み出したデータの最初の1ビットを読み出す。ここでは、「0100_0000」の最初の1ビットは、「0」であるので、管理データ圧縮/伸張部5Aは、このデータは圧縮されていないと判断する。そして、残りの7ビットのデータ「100_0000」をそのまま、物理アドレスとしてRAM4内の管理情報記憶部8に展開する。
さらに、管理データ圧縮/伸張部5Aは、次の8ビットを読み出す。ここでは、「1001_1111」が読み出される。「1001_1111」の最初の1ビットは、「1」であるので、管理データ圧縮/伸張部5Aは、このデータは圧縮されていると判断する。そして、管理データ圧縮/伸張部5Aは、残りの7ビットのデータを読み出す。残りの7ビットは、「001_1111」であり、十進数で31を示している。このため、管理データ圧縮/伸張部5Aは、圧縮されていなかった最初のデータ「100_0000」を、「000_0001」ずつ、31回増加させる。これにより、図4に示した論物変換テーブル20Aと同じデータがRAM4内の管理情報記憶部8に展開される。
(論物変換テーブルの第2の圧縮処理)
図6は、論物変換テーブルの第2の圧縮処理例を説明するための図である。また、図7は、論物変換テーブルの第2の圧縮処理手順を示すフローチャートである。なお、第2の圧縮処理のうち、第1の圧縮処理と同様の処理については、その説明を省略する。第2の圧縮処理のステップS110〜130までは、第1の圧縮処理のステップS10〜30までと、同じ処理手順である。また、図6では、論物変換テーブル20Xの一例である論物変換テーブル20Bの圧縮処理例を示している。なお、図6に示している論物変換テーブル20Bでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。
図6は、論物変換テーブルの第2の圧縮処理例を説明するための図である。また、図7は、論物変換テーブルの第2の圧縮処理手順を示すフローチャートである。なお、第2の圧縮処理のうち、第1の圧縮処理と同様の処理については、その説明を省略する。第2の圧縮処理のステップS110〜130までは、第1の圧縮処理のステップS10〜30までと、同じ処理手順である。また、図6では、論物変換テーブル20Xの一例である論物変換テーブル20Bの圧縮処理例を示している。なお、図6に示している論物変換テーブル20Bでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。
なお、論物変換テーブル20Bでは、8ビットを用いて各物理アドレスを示しているが、最上位の1ビット以上を用いることなく、下位ビット側のビットで各物理アドレスを示しておく。ここでは、最上位の4ビットを残しておき、下位ビット側の8ビットで各物理アドレスを示す場合について説明する。
この場合において、管理データ圧縮/伸張部5Aは、論物変換テーブル20B内のX番目の物理アドレス(上段側アドレス)と(X+1)番目の物理アドレス(下段側アドレス)との差分を、X=0〜5の全てに対して算出する。そして、管理データ圧縮/伸張部5Aは、各差分のうち値が「1」である差分を抽出するとともに、この「1」が連続して何回続くかを算出する。換言すると、差分「1」の連続回数が算出された後(ステップS130)、管理データ圧縮/伸張部5Aは、連続する差分「1」の先頭アドレスに、差分「1」の連続回数を示すデータを付加する(ステップS140)。なお、「1」が連続した後、一度途切れて再び「1」が続くような場合には、「1」の連続群毎に「1」の連続回数が算出される。
例えば、図6に示す論物変換テーブル20Bの場合、論物変換テーブル20B内の各物理アドレス「0100」〜「0110」のそれぞれに対し、上段側アドレスとの差分「0001」が算出される。そして、管理データ圧縮/伸張部5Aは、差分「0001」の連続回数を算出する。ここでは、差分「0001」の連続回数として4回が算出される。管理データ圧縮/伸張部5Aは、差分「0001」の先頭となっている物理アドレス「0100」に、差分「0001」の連続回数を示すデータを付加する。具体的には、物理アドレス「0100」よりも上位の4ビットを用いて連続回数4回を示す「0011」を表す。換言すると、物理アドレス「0100」の上位ビット側に連続回数4回を示す「0011」を付加し、これにより、データ「0011_0100」を生成する。
先頭の物理アドレス「0010」に対応する差分は算出できないので、管理データ圧縮/伸張部5Aは、先頭の物理アドレスに対する差分算出は行なわない。この場合、物理アドレス「0010」よりも上位の4ビットを「0000」とする。これにより、論理アドレス0に対応する物理アドレスは、「0000_0010」となる。
また、論理アドレス5に対応する物理アドレス「0000_1000」は、上段側アドレスとの差分が「0001」ではないので、物理アドレス「1000」よりも上位の4ビットを「0000」とする。これにより、論理アドレス5に対応する物理アドレスは、「0000_1000」となる。同様に、論理アドレス6に対応する物理アドレス「0000_1110」は、上段側アドレスとの差分が「0001」ではないので、物理アドレス「1110」よりも上位の4ビットを「0000」とする。これにより、論理アドレス6に対応する物理アドレスは、「0000_1110」となる。このように、管理データ圧縮/伸張部5Aは、差分が「1」でなかった物理アドレスに、圧縮していないことを示すデータを付加する(ステップS150)。
そして、管理データ圧縮/伸張部5Aは、論理アドレスと、変換後のデータと、を対応付けする。具体的は、管理データ圧縮/伸張部5Aは、論理アドレスの「0」と、変換後のデータ「0000_0010」と、を対応付けする。また、管理データ圧縮/伸張部5Aは、論理アドレスの「1」と、変換後のデータ「0011_0100」と、を対応付けする。また、管理データ圧縮/伸張部5Aは、論理アドレスの「5」と、変換後のデータ「0000_1010」と、を対応付けし、論理アドレスの「6」と、変換後のデータ「0000_1110」と、を対応付けする。
空いているビットを利用して、最上位ビットとして示すことができる数値は、例えば、空いているビットが4ビットの場合0〜15までである。このため、差分「1」の連続数が15以上の場合、物理アドレスが、15ずつの物理アドレスに区切られる。例えば、論理アドレス「1」〜「30」まで差分「1」が連続する場合、論理アドレス「1」〜「15」までの物理アドレスが1つの物理アドレス群とされ、論理アドレス「16」〜「30」までの物理アドレスが1つの物理アドレス群とされる。このように、管理データ圧縮/伸張部5Aは、最上位ビットで示すことができる数値(ここでは4ビットなので15まで)を用いて、上段側アドレスとの差分の「1」が連続している物理アドレスに区切りを入れる。
この後、管理データ圧縮/伸張部5Aは、論理アドレスと変換後のデータとを対応付けしたデータ(圧縮後の論物変換テーブル20B)をNANDフラッシュメモリ6に書き込む(ステップS160)。これにより、NANDフラッシュメモリ6は、論理アドレスと変換後のデータとが対応付けされたデータを記憶する。
圧縮された論物変換テーブル20BをNANDフラッシュメモリ6から読み出す場合、管理データ圧縮/伸張部5Aは、圧縮された論物変換テーブル20Bの伸張処理を行う。例えば、図6に示した圧縮データ「0000_0010」、「0011_0100」、「0000_1010」、「0000_1110」を伸張する場合、管理データ圧縮/伸張部5Aは、8ビットずつデータを読み出す。
例えば、最初にデータ「0000_0010」が読み出される。管理データ圧縮/伸張部5Aは、読み出したデータの最初の4ビットを読み出す。ここでの最初の4ビットは、「0000」であるので、管理データ圧縮/伸張部5Aは、このデータは圧縮されていないと判断する。そして、残りの4ビットのデータ「0010」をそのまま、物理アドレスとしてRAM4内の管理情報記憶部8に展開する。
また、管理データ圧縮/伸張部5Aは、次の8ビットを読み出す。ここでは、「0011_0100」が読み出される。「0011_0100」の最初の4ビットは、「0011」であるので、管理データ圧縮/伸張部5Aは、このデータは圧縮されていると判断するとともに、差分「0」が4回連続すると判断する。そして、管理データ圧縮/伸張部5Aは、「0100」を、「0001」ずつ、3回増加させる。同様に、物理アドレスとして「1010」、「1110」が伸張される。これにより、図6に示した論物変換テーブル20Bと同じデータがRAM4内の管理情報記憶部8に展開される。
このように、第1および第2の圧縮処理では、物理アドレスを、差分「1」の連続回数で変換することにより、物理アドレスのデータ圧縮が可能となる。これにより、論物変換テーブル20A,20Bのデータ圧縮が可能となる。このように、RAM4内の管理情報記憶部8で論物変換テーブル20A,20Bのデータサイズを小さくすることで、NANDフラッシュメモリ6への書き込み時間と、NANDフラッシュメモリ6からの読み出し時間を短縮することが可能となる。また、論物変換テーブル20A,20Bのデータサイズが小さくなるので、NANDフラッシュメモリ6のメモリサイズを少なくすることができる。
なお、図6では、論物変換テーブル20Bの各物理アドレスに対し、最上位の4ビットが空いている場合について説明したが、各物理アドレスの最上位の3ビット以下または5ビット以上が空いている場合でも同様に、3ビット以下または5ビット以上を利用する。
なお、本実施形態では、差分「1」の連続回数を示すことによって論物変換テーブル20A,20Bの圧縮を行なったが、差分「0」の連続回数を示すことによって論物変換テーブル20A,20Bの圧縮を行なってもよい。差分「0」は、同じデータが連続する場合に現れる。例えば、物理アドレス内には、未書き込みのデータを示す無効値が入っている場合がある。そして、未書き込みのデータは、物理アドレス内で連続していることが多い。
(論物変換テーブルの第3の圧縮処理)
図8は、論物変換テーブルの第3の圧縮処理例を説明するための図である。図8では、論物変換テーブル20Xの一例である論物変換テーブル20Cの圧縮処理例を示している。なお、図8に示している論物変換テーブル20Cでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。また、第3の圧縮処理は、第1の圧縮処理と同様の処理手順なので、ここでは第3の圧縮処理手順の説明を省略する。
図8は、論物変換テーブルの第3の圧縮処理例を説明するための図である。図8では、論物変換テーブル20Xの一例である論物変換テーブル20Cの圧縮処理例を示している。なお、図8に示している論物変換テーブル20Cでは、論理アドレスを十進数で示し、物理アドレスを二進数で示している。また、第3の圧縮処理は、第1の圧縮処理と同様の処理手順なので、ここでは第3の圧縮処理手順の説明を省略する。
例えば、論物変換テーブル20Cでは、論理アドレスが、0、1、2、3・・・31である。また、論物変換テーブル20Cでは、各論理アドレスに対応する物理アドレスの多くは、「111_1111」であり、論物変換テーブル20C内で連続している。「111_1111」は、例えば、無効データなどである。
この場合において、管理データ圧縮/伸張部5Aは、論物変換テーブル20C内のX番目の物理アドレス(上段側アドレス)と(X+1)番目の物理アドレス(下段側アドレス)との差分を、X=0〜30の全てに対して算出する。そして、管理データ圧縮/伸張部5Aは、各差分のうち値が「0」である差分を抽出するとともに、この「0」が連続して何回続くかを算出する。なお、「0」が連続した後、一度途切れて再び「0」が続くような場合には、「0」の連続群毎に「0」の連続回数が算出される。
例えば、図8に示す論物変換テーブル20Cの場合、論物変換テーブル20C内の先頭の物理アドレス「111_1111」と2番目の物理アドレス「111_1111」との差分として、「000_0000」が算出される。同様に、2番目〜8番目までの物理アドレスのそれぞれに対し、差分「000_0000」が算出される。
この後、管理データ圧縮/伸張部5Aは、差分「0」に対応する差分「000_0000」の連続回数を算出する。換言すると、管理データ圧縮/伸張部5Aは、上段側の物理アドレスとその下段側の物理アドレスとの間で引き算を行ない、その結果を、「0」の連続した長さで表現する。ここでは、差分「000_0000」の連続回数として7回が算出される。なお、先頭の物理アドレス「111_1111」に対応する差分は算出できないので、管理データ圧縮/伸張部5Aは、先頭の物理アドレスに対する差分算出は行なわない。
この後、論物変換テーブル20Aの場合と同様の処理によって、物理アドレスを圧縮する。すなわち、管理データ圧縮/伸張部5Aは、先頭の物理アドレス「111_1111」に対しては、圧縮していないことを示す「0」を最上位ビットに付加する。これにより、管理データ圧縮/伸張部5Aは、物理アドレス「111_1111」をデータ「0111_1111」に変換する。そして、管理データ圧縮/伸張部5Aは、論理アドレスの「0」と、変換後のデータ「0111_1111」と、を対応付けする。
また、管理データ圧縮/伸張部5Aは、差分「000_0000」の連続回数である「7」を示す「000_0111」に対し、圧縮したことを示す「1」を最上位ビットに付加する。これにより、管理データ圧縮/伸張部5Aは、「000_0111」を「1000_0111」に変換する。そして、管理データ圧縮/伸張部5Aは、論理アドレスの「1」と、変換後のデータ「1000_0111」と、を対応付けする。
この後、管理データ圧縮/伸張部5Aは、論理アドレスと変換後のデータとを対応付けしたデータ(圧縮後の論物変換テーブル20C)をNANDフラッシュメモリ6に書き込む。これにより、NANDフラッシュメモリ6は、論理アドレスと変換後のデータとが対応付けされたデータを記憶する。
このように、第3の圧縮処理では、物理アドレスを、差分「0」の連続回数を用いたデータに変換することにより、物理アドレスのデータ圧縮が可能となる。これにより、論物変換テーブル20Cのデータ圧縮が可能となる。
なお、図8では、論物変換テーブル20Cの各物理アドレスを、7ビットで示した場合について説明したが、論物変換テーブル20Cの各物理アドレスを、8ビット以上で示してもよい。この場合であっても、各物理アドレスの最上位側の空いているビットを利用して、圧縮したか否かを示す情報の格納に用いる。このように、SSD1は、圧縮するサイズを可変にすることができる。
ところで、論物変換テーブルを管理する方法として、例えば、トラックとクラスタの2段階で論物変換テーブルを管理する方法がある。この方法では、論物変換テーブルの管理単位が細かいほど、論物変換テーブルのサイズが大きくなる。そのため、管理単位の異なる2つの論物変換テーブル(トラック:大、クラスタ:小)を用意し、クラスタの数が増えてきたらデフラグすることによって連続するクラスタを集め、トラックとして管理する。これにより、トラックのサイズ分クラスタが連続していれば、トラックとして管理できるようになる。この方法では、ばらばらに配置されているクラスタをデフラグしてトラックとして管理するには、トラックサイズ分のクラスタを連続して配置しなおす必要がある。
これに対し、本実施形態のSSD1は、連続したクラスタがあれば、圧縮して論物変換テーブル20Xのサイズを減らすことを可能としている。そのため、一度にトラックサイズ分のクラスタを集めている余裕がない場合であっても、少しずつクラスタを集めてきて少しずつ論物変換テーブル20XCのサイズを減らすことが可能なる。このように、SSD1は、段階的にデフラグすることが可能となる。したがって、SSD1は、論物変換テーブル20Xを細かい単位で圧縮することが可能となる。
なお、本実施形態では、論理クラスタから物理クラスタへの変換に用いる論物変換テーブル20Xを圧縮する場合について説明したが、物理クラスタから論理クラスタへの変換に用いる論物変換テーブルを圧縮してもよい。また、物理アドレスに限らず論理アドレスを圧縮してもよい。論理クラスタから物理クラスタへの変換に用いる論物変換テーブル20Xは、正引きの論物変換テーブル20Xであり、物理クラスタから論理クラスタへの変換に用いる論物変換テーブルは、逆引きの論物変換テーブル20Xである。正引きの論物変換テーブル20Xは、論理アドレス(LBA)からNANDフラッシュメモリ6上の記憶位置を検索するためのテーブルである。これに対し、逆引きの論物変換テーブルは、NANDフラッシュメモリ6上の記憶位置から論理アドレス(LBA)を検索するためのテーブルである。また、管理データ圧縮/伸張部5は、圧縮したデータをさらに圧縮してもよい。
SSD1では、更新前後の管理テーブルの差分をログという形でNANDフラッシュメモリ6へ記憶させている。NANDフラッシュメモリ6にログを書き込む場合も、ログを圧縮することにより、NANDフラッシュメモリ6へのログの書き込み時間とNANDフラッシュメモリ6からのログの読み出し時間を短くすることが可能となる。
また、デフラグ時に圧縮しやすくなるように、隣り合うLCAを隣り合う物理クラスタに移動させてもよい。これにより、デフラグ時の圧縮を容易に行なうことが可能となる。
このように第1の実施形態によれば、物理アドレスを、差分「1」や「0」の連続回数で変換しているので、物理アドレスのデータ圧縮が可能となる。したがって、不揮発性メモリにおける管理テーブル(論物変換テーブル20A〜20C)の読み出し/書き込みを、短時間で行なうことが可能となる。
また、NANDフラッシュメモリ6へのデータ書き込み量が減るので、SSD1の寿命を延ばすことが可能となる。また、圧縮方式が単純なので、管理データ圧縮/伸張部5AのHW化が容易である。
(第2の実施形態)
つぎに、図9〜図12を用いてこの発明の第2の実施形態について説明する。第2の実施形態では、各ブロック内の有効クラスタ数を管理するクラスタ管理テーブルの圧縮処理を行う。
つぎに、図9〜図12を用いてこの発明の第2の実施形態について説明する。第2の実施形態では、各ブロック内の有効クラスタ数を管理するクラスタ管理テーブルの圧縮処理を行う。
図9は、ブロックと有効クラスタの関係を説明するための図である。本実施形態では、NANDフラッシュメモリ6内のブロックが、ブロックB0〜B99までの100ブロックである場合について説明する。
各ブロックB0〜B99は、それぞれ複数のクラスタで構成されている。そして、各ブロックB0〜B99内のクラスタには、有効なクラスタや無効なクラスタが含まれている。このうち、有効なクラスタは、データの読み出しが可能なクラスタであり、無効クラスタは、クラスタ内のデータが他の場所に書き込まれ、参照されることがなくなったクラスタである。
SSD1では、ブロックB0〜B99から、有効クラスタを取り出して、新しいブロックに書き直す処理(コンパクション)が行なわれる。このコンパクションの際などに、クラスタ管理テーブルが参照される。
図9では、ブロックB0,B1,B99内の有効クラスタが0である場合を示しているまた、ブロックB2内に有効クラスタが3つあり、ブロックB3内に有効クラスタが2つある場合を示している。クラスタ管理テーブル30では、有効クラスタ数が、例えば15ビットで示され、さらに15ビットの1つ上位ビットが空いている。
(クラスタ管理テーブルの第1の圧縮処理)
図10は、クラスタ管理テーブルの第1の圧縮処理を説明するための図である。また、図11は、クラスタ管理テーブルの第1の圧縮処理手順を示すフローチャートである。図10では、図9に示したブロックB0〜B99に対するクラスタ管理テーブル30を示している。クラスタ管理テーブル30では、ブロック番号と、有効クラスタ数と、がブロック毎に対応付けされている。例えば、ブロックB0は、ブロック番号が「0」であり、有効クラスタ数が「0」である。また、ブロックB1は、ブロック番号が「1」であり、有効クラスタ数が「0」である。また、ブロックB2は、ブロック番号が「2」であり、有効クラスタ数が「3」である。また、ブロックB3は、ブロック番号が「3」であり、有効クラスタ数が「2」である。
図10は、クラスタ管理テーブルの第1の圧縮処理を説明するための図である。また、図11は、クラスタ管理テーブルの第1の圧縮処理手順を示すフローチャートである。図10では、図9に示したブロックB0〜B99に対するクラスタ管理テーブル30を示している。クラスタ管理テーブル30では、ブロック番号と、有効クラスタ数と、がブロック毎に対応付けされている。例えば、ブロックB0は、ブロック番号が「0」であり、有効クラスタ数が「0」である。また、ブロックB1は、ブロック番号が「1」であり、有効クラスタ数が「0」である。また、ブロックB2は、ブロック番号が「2」であり、有効クラスタ数が「3」である。また、ブロックB3は、ブロック番号が「3」であり、有効クラスタ数が「2」である。
SSD1のコントローラ7は、動作中、クラスタ管理テーブル30の更新が必要か否かを監視している(ステップS210)。クラスタ管理テーブル30の更新が必要なタイミングでなければ(ステップS210、No)、コントローラ7は、クラスタ管理テーブル30の監視を継続する。一方、クラスタ管理テーブル30の更新が必要なタイミングになると(ステップS210、Yes)、コントローラ7は、管理データ圧縮/伸張部5Aにクラスタ管理テーブル30の圧縮処理を指示する。クラスタ管理テーブル30の更新タイミングは、例えば、ブロックB0〜B99内の有効クラスタ数に変化があった場合などである。
管理データ圧縮/伸張部5Aは、各ブロックの有効クラスタ数が「0」であるか否かを判断する(ステップS220)。例えば、クラスタ管理テーブル30の場合、ブロック番号0のブロックB0、ブロック番号1のブロックB1、ブロック番号99のブロックB99は、有効クラスタ数が「0」である。有効クラスタ数が「0」である場合(ステップS220、Yes)、管理データ圧縮/伸張部5Aは、「0」を1ビットで表す。換言すると、管理データ圧縮/伸張部5Aは、有効クラスタ数を1ビットのデータに変換する(ステップS230)。
一方、有効クラスタ数が「0」でない場合(ステップS220、No)、管理データ圧縮/伸張部5Aは、有効クラスタ数を15ビットのまま表す。そして、管理データ圧縮/伸張部5Aは、有効クラスタ数を示す15ビットの上位ビット側に、圧縮していないことを示すデータとして「1」を示す1ビットを付加する(ステップS240)。この後、管理データ圧縮/伸張部5Aは、圧縮後のクラスタ管理テーブル30をNANDフラッシュメモリ6に書き込む(ステップS250)。
圧縮されたクラスタ管理テーブル30をNANDフラッシュメモリ6から読み出す場合、管理データ圧縮/伸張部5Aは、圧縮されたクラスタ管理テーブル30の伸張処理を行う。例えば、図10に示した圧縮データ「0」、「0」、「1・・・_0000_0111」、「1・・・_0000_0110」・・・「0」を伸張する場合、管理データ圧縮/伸張部5Aは、「1」が出てくるまで順番にデータを読み出す。管理データ圧縮/伸張部5Aは、「0」のデータに対しては、「0」を15ビットのデータに変換してRAM4内の管理情報記憶部8に展開する。
一方、管理データ圧縮/伸張部5Aは、「1」のデータを検出した場合、この「1」に続く8ビットのデータを、管理情報記憶部8に展開する。例えば、「1・・・_0000_0111」の場合、最初のビットが「1」であるので、これ以降の15ビットが有効クラスタ数を示すデータであると判断される。同様に、「1・・・_0000_0110」の場合、最初のビットが「1」であるので、これ以降の15ビットが有効クラスタ数を示すデータであると判断される。管理データ圧縮/伸張部5Aは、16ビットで表されているデータを15ビットに変換して管理情報記憶部8に展開する。これにより、図10に示したクラスタ管理テーブル30と同じデータが管理情報記憶部8に展開される。
このように、本実施形態では、RAM4内で発生頻度の高いデータを符号化し圧縮を行っている。有効クラスタ数には偏りがあり、0であるか、ブロックの有効クラスタ数の上限になっている場合が多い。SSD1では、この傾向を利用して効果的に圧縮を行う。
(クラスタ管理テーブルの第2の圧縮処理)
つぎに、クラスタ管理テーブルの第2の圧縮処理について説明する。クラスタ管理テーブルの第2の圧縮処理では、有効クラスタ数が「0」である場合と、有効クラスタ数が上限値(満杯)である場合を、物理アドレスの圧縮対象とする。
つぎに、クラスタ管理テーブルの第2の圧縮処理について説明する。クラスタ管理テーブルの第2の圧縮処理では、有効クラスタ数が「0」である場合と、有効クラスタ数が上限値(満杯)である場合を、物理アドレスの圧縮対象とする。
図12は、クラスタ管理テーブルの21の圧縮処理を説明するための図である。クラスタ管理テーブル31では、例えば、ブロックB0は、ブロック番号が「0」であり、有効クラスタ数が「0」である。また、ブロックB1は、ブロック番号が「1」であり、有効クラスタ数が「上限値U」である。また、ブロックB2は、ブロック番号が「2」であり、有効クラスタ数が「上限値U」である。また、ブロックB3は、ブロック番号が「3」であり、有効クラスタ数が「2」である。
管理データ圧縮/伸張部5Aは、各ブロックの有効クラスタ数が「0」であるか否かを判断する。ここでは、ブロック番号0のブロックB0、ブロック番号99のブロックB99は、有効クラスタ数が「0」である。有効クラスタ数が「0」である場合、管理データ圧縮/伸張部5Aは、1ビットを用いて「0」と表す。
また、管理データ圧縮/伸張部5Aは、各ブロックの有効クラスタ数が「上限値U」であるか否かを判断する。ここでは、ブロック番号1のブロックB1、ブロック番号2のブロックB2は、有効クラスタ数が「上限値U」である。有効クラスタ数が「上限値U」である場合、管理データ圧縮/伸張部5Aは、2ビットを用いて「10」と表す。換言すると、管理データ圧縮/伸張部5Aは、有効クラスタ数を2ビットのデータに変換する。
そして、有効クラスタ数が「0」でも「上限値U」でもない場合、管理データ圧縮/伸張部5Aは、有効クラスタ数を15ビットのまま表す。そして、管理データ圧縮/伸張部5Aは、有効クラスタ数を示す15ビットの上位ビット側に、圧縮していないことを示すデータとして「11」を示すビットを付加する。
なお、本実施形態では、15ビットで物理アドレスを表したが、物理アドレスを表すビット数は15ビットに限らない。例えば、14ビット以下で物理アドレスを表してもよいし、15ビット以上で物理アドレスを表してもよい。
また、本実施形態では、ブロック毎にクラスタ数を管理する場合について説明したが、データの管理単位は、何れのサイズであってもよい。例えば、ブロック毎のバッドクラスタ数を管理する管理テーブルを圧縮してもよいし、ページ毎のバッドセクタ数を管理する管理テーブルを圧縮してもよい。このように、管理データ圧縮/伸張部5Aは、NANDフラッシュメモリ6内での第1のデータ記憶単位と、第1のデータ記憶単位内に含まれる有効な第2のデータ記憶単位の数である有効記憶単位数と、の対応関係を第1のデータ記憶単位毎に保持する管理テーブルを圧縮してもよい。
このように第2の実施形態によれば、有効クラスタ数が「0」の場合に、有効クラスタ数を1ビットのデータで示しているので、クラスタ管理テーブル30のデータ圧縮が可能となる。したがって、不揮発性メモリにおける管理テーブル(クラスタ管理テーブル30)の読み出し/書き込みを、短時間で行なうことが可能となる。
(第3の実施形態)
つぎに、図13および図14を用いてこの発明の第3の実施形態について説明する。第3の実施形態では、圧縮した論物変換テーブル20XをRAM4内で記憶しておき、必要に応じて圧縮した論物変換テーブル20XをNANDフラッシュメモリ6内に書き込む。また、論物変換テーブル20Xを用いる際には、RAM4内で論物変換テーブル20Xを伸張する。
つぎに、図13および図14を用いてこの発明の第3の実施形態について説明する。第3の実施形態では、圧縮した論物変換テーブル20XをRAM4内で記憶しておき、必要に応じて圧縮した論物変換テーブル20XをNANDフラッシュメモリ6内に書き込む。また、論物変換テーブル20Xを用いる際には、RAM4内で論物変換テーブル20Xを伸張する。
図13は、第3の実施形態に係るSSDの構成例を示すブロック図である。図13の各構成要素のうち図2に示す第1の実施形態のSSD1と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
半導体記憶装置としてのSSD2は、管理情報記憶部8を含むRAM4と、実際にデータを記憶するNANDフラッシュメモリ6と、管理データ圧縮/伸張部5Bと、コントローラ7と、を備えている。
SSD2のRAM4は、ホスト装置10、コントローラ7、NANDフラッシュメモリ6、管理データ圧縮/伸張部5Bに接続されている。管理データ圧縮/伸張部5Bは、RAM4、コントローラ7に接続されている。また、NANDフラッシュメモリ6は、RAM4、コントローラ7に接続されている。そして、コントローラ7は、ホスト装置10、RAM4、NANDフラッシュメモリ6、管理データ圧縮/伸張部5Bに接続されている。
SSD2は、種々の管理テーブルを全てRAM4に展開せず、管理テーブルの中で必要な一部分をNANDフラッシュメモリ6から読み出す。そして、SSD2は、管理テーブルの一部分をRAM4内で編集した後、所定のタイミングでNANDフラッシュメモリ6へ書き込む。換言すると、SSD2では、RAM4をキャッシュとして用いている。
管理データ圧縮/伸張部5Bは、コントローラ7から伸張指示があった場合に、RAM4内の論物変換テーブル20Xを伸張し、RAM4に戻す。また、管理データ圧縮/伸張部5Bは、コントローラ7から圧縮指示があった場合に、RAM4内の論物変換テーブル20Xを圧縮し、RAM4に戻す。
コントローラ7は、論物変換テーブル20Xの読み出しが必要になると、管理データ圧縮/伸張部5Bに論物変換テーブル20Xの伸張指示を送る。また、コントローラ7は、論物変換テーブル20Xの読み出しが不要になると、管理データ圧縮/伸張部5Bに論物変換テーブル20Xの圧縮指示を送る。
これにより、RAM4内では、論物変換テーブル20Xの読み出しが必要な場合に、RAM4内で論物変換テーブル20Xが伸張され、論物変換テーブル20Xの読み出しが不要になるとRAM4内で論物変換テーブル20Xが圧縮される。論物変換テーブル20Xの圧縮処理や伸張処理は、第1の実施形態で説明した圧縮処理や伸張処理と同様の処理である。
SSD2では、SSD1と同様のタイミングで論物変換テーブル20XがNANDフラッシュメモリ6内に書き込まれる。このとき、RAM4内で圧縮された状態の論物変換テーブル20Xが、そのままNANDフラッシュメモリ6内に書き込まれる。
図14は、論物変換テーブルの圧縮/伸張処理手順を示すフローチャートである。SSD2のコントローラ7は、動作中、論物変換テーブル20Xの読み出しが必要か否かを監視している(ステップS310)。論物変換テーブル20Xの読み出しが不要であれば(ステップS310、No)、コントローラ7は、読み出し有無の監視を継続する。一方、論物変換テーブル20Xの読み出しが必要になると(ステップS310、Yes)、コントローラ7は、管理データ圧縮/伸張部5Bに論物変換テーブル20Xの伸張処理を指示する。
これにより、管理データ圧縮/伸張部5Bは、RAM4内から論物変換テーブル20Xを伸張してRAM4内に記憶させる(ステップS320)。この後、必要に応じてRAM4内の論物変換テーブル20Xが編集される(ステップS330)。論物変換テーブル20Xの編集が終わると、コントローラ7は、管理データ圧縮/伸張部5Bに論物変換テーブル20Xの圧縮処理を指示する。これにより、管理データ圧縮/伸張部5Bは、RAM4内の論物変換テーブル20Xを圧縮してRAM4に記憶させる(ステップS340)。
また、SSD2のコントローラ7は、論物変換テーブル20XのNANDフラッシュメモリ6への更新が必要か否かを監視している(ステップS350)。論物変換テーブル20Xの更新が必要なタイミングでなければ(ステップS350、No)、コントローラ7は、更新有無の監視を継続する。一方、論物変換テーブル20Xの更新が必要なタイミングになると(ステップS350、Yes)、コントローラ7は、RAM4内の圧縮された論物変換テーブル20Xを、NANDフラッシュメモリ6に書き込む(ステップS360)。この後、圧縮された論物変換テーブル20Xが必要に応じてRAM4内に読み出され、圧縮された論物変換テーブル20Xが必要に応じて伸張、編集され、所定のタイミングで圧縮される。
本実施形態のSSD2は、キャッシュとしてのRAM4に論物変換テーブル20Xを読み込んだ後も、圧縮したまま論物変換テーブル20Xを利用する。これにより、少ないキャッシュメモリ容量でも多くの管理テーブルを保持できることとなる。したがって、圧縮しない場合と比較して、NANDフラッシュメモリ6への保存量、復元量に対して、多くの管理テーブルをRAM4内に展開することができる。
なお、SSD2は、圧縮したクラスタ管理テーブル30,31などの他の管理テーブルをRAM4内で記憶しておき、必要に応じて圧縮したクラスタ管理テーブル30,31をNANDフラッシュメモリ6内に書き込んでもよい。この場合も、クラスタ管理テーブル30,31を用いる際には、RAM4内でクラスタ管理テーブル30,31が伸張される。クラスタ管理テーブル30,31の圧縮処理や伸張処理は、第2の実施形態で説明した圧縮処理や伸張処理と同様の処理である。
図15は、SSDを搭載したパーソナルコンピュータの一例を示す斜視図である。パーソナルコンピュータ1200は、SSD1またはSSD2と、本体1201と、表示ユニット1202と、を備えている。なお、ここでは、パーソナルコンピュータ1200がSSD2を備えている場合について説明する。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204と、を備えている。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(optical disk device)ユニット、カードスロット、及びSSD2等が収容されている。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD2は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図16は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD2、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD2から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばDRAMから構成される。ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD2を、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD2へのアクセスを行う。ATAインタフェース(I/F)を介して、書き込みコマンド、読出しコマンド、フラッシュコマンド等がSSD2に入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
パーソナルコンピュータ1200は、SSD2に電源供給を行い、また、SSD2に停止要求(Standby要求)を発行する。仮にパーソナルコンピュータ1200からSSD2への電源供給が不正に断たれた場合であっても、書き込みエラーの発生を未然に防ぐことができる。
このように、第3の実施形態によれば、RAM4が圧縮したままの管理テーブルを記憶しておき、管理テーブルの読み出しが必要になった際に、RAM4内で管理テーブルが伸張されるので、RAM4内の記憶領域を効率良く利用することが可能となる。したがって、多くの管理テーブルをRAM4上に置くことができる。
このように第1〜第3の実施形態によれば、不揮発性メモリにおける管理テーブルの読み出し/書き込みを、短時間で行なうことが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1,2…SSD、4…RAM、20A〜20C,20X…論物変換テーブル、5A,5B…管理データ圧縮/伸張部、6…NANDフラッシュメモリ、7…コントローラ、8…管理情報記憶部、10…ホスト装置、…論物変換テーブル、30,31…クラスタ管理テーブル、1200…パーソナルコンピュータ。
Claims (10)
- データの管理情報を記憶する不揮発性メモリと、
前記不揮発性メモリに記憶されている管理情報を一時的に保持しておく記憶部と、
前記不揮発性メモリに記憶された管理情報を第1のタイミングで前記記憶部に取込むとともに、前記記憶部内の管理情報を第2のタイミングで前記不揮発性メモリに記憶させ、かつホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新しながら前記管理情報に基づいて前記記憶部および前記不揮発性メモリでのデータ管理を行なうコントローラと、
第1の条件を満たした場合に前記管理情報を圧縮するとともに、第2の条件を満たした場合に圧縮された前記管理情報を伸張する圧縮/伸張処理部と、
を備え、
前記コントローラは、圧縮された管理情報を前記不揮発性メモリに記憶させ、
前記管理情報は、前記ホスト装置が指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応関係をデータの管理単位毎に保持する論物変換テーブルであり、
前記圧縮/伸張処理部は、
前記論物変換テーブル内で前記データの管理単位毎に前記物理アドレスおよび前記論理アドレスが並べられたアドレス群の中から、シーケンシャルに連続しているアドレスの連続回数を算出し、前記連続しているアドレスを、前記連続回数を示す第1の連続回数データを用いた新たなデータに置き換えることにより、前記アドレス群を圧縮し、
かつ圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加するとともに、圧縮するアドレスに対しては、圧縮したことを示すデータを前記第1の連続回数データに付加することによって、前記連続しているアドレスを前記新たなデータに置き換え、
かつ前記記憶部内の管理情報を前記不揮発性メモリに記憶させる際に前記管理情報を圧縮するとともに、前記不揮発性メモリ内の管理情報を前記記憶部に取り込む際に前記管理情報を伸張することを特徴とするメモリシステム。 - データの管理情報を記憶する不揮発性メモリと、
前記不揮発性メモリに記憶されている管理情報を一時的に保持しておく記憶部と、
前記不揮発性メモリに記憶された管理情報を第1のタイミングで前記記憶部に取込むとともに、前記記憶部内の管理情報を第2のタイミングで前記不揮発性メモリに記憶させ、かつホスト装置と前記不揮発性メモリとの間で前記記憶部を介してデータ転送を行うとともに、前記データ転送の際には前記管理情報を前記記憶部および前記不揮発性メモリで更新しながら前記管理情報に基づいて前記記憶部および前記不揮発性メモリでのデータ管理を行なうコントローラと、
第1の条件を満たした場合に前記管理情報を圧縮するとともに、第2の条件を満たした場合に圧縮された前記管理情報を伸張する圧縮/伸張処理部と、
を備え、
前記コントローラは、圧縮された管理情報を前記不揮発性メモリに記憶させることを特徴とするメモリシステム。 - 前記管理情報は、前記ホスト装置が指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応関係をデータの管理単位毎に保持する論物変換テーブルであり、
前記圧縮/伸張処理部は、前記論物変換テーブル内で前記データの管理単位毎に前記物理アドレスおよび前記論理アドレスが並べられたアドレス群の中から、シーケンシャルに連続しているアドレスの連続回数を算出し、前記連続しているアドレスを、前記連続回数を示す第1の連続回数データを用いた新たなデータに置き換えることにより、前記アドレス群を圧縮することを特徴とする請求項2に記載のメモリシステム。 - 前記圧縮/伸張処理部は、
圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加し、
圧縮するアドレスに対しては、圧縮したことを示すデータを前記第1の連続回数データに付加することによって、前記連続しているアドレスを前記新たなデータに置き換えることを特徴とする請求項3に記載のメモリシステム。 - 前記圧縮/伸張処理部は、
圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加し、
圧縮する物理アドレスに対しては、前記第1の連続回数データを前記連続しているアドレスの先頭アドレスに付加することによって、前記連続しているアドレスを前記新たなデータに置き換えることを特徴とする請求項3に記載のメモリシステム。 - 前記管理情報は、前記ホスト装置が指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応関係をデータの管理単位毎に保持する論物変換テーブルであり、
前記圧縮/伸張処理部は、前記論物変換テーブル内で前記データの管理単位毎に前記物理アドレスおよび前記論理アドレスが並べられたアドレス群の中から、同じ値が連続して格納されているアドレスの連続回数を算出し、前記連続しているアドレスを、前記連続回数を示す第2の連続回数データを用いた新たなデータに置き換えることにより、前記アドレス群を圧縮することを特徴とする請求項2に記載のメモリシステム。 - 前記圧縮/伸張処理部は、
圧縮しないアドレスに対しては、圧縮していないことを示すデータを前記圧縮しないアドレスに付加し、
圧縮する物理アドレスに対しては、余っているアドレスを利用して、前記連続しているアドレスの先頭アドレスに前記第2の連続回数データを付加することによって、前記連続しているアドレスを前記新たなデータに置き換えることを特徴とする請求項6に記載のメモリシステム。 - 前記圧縮/伸張処理部は、
前記記憶部内の管理情報を前記不揮発性メモリに記憶させる際に前記管理情報を圧縮するとともに、前記不揮発性メモリ内の管理情報を前記記憶部に取り込む際に前記管理情報を伸張することを特徴とする請求項2乃至7に記載のメモリシステム。 - 前記圧縮/伸張処理部は、
圧縮した管理情報を前記記憶部に記憶させるとともに、前記管理情報の読み出しが必要な場合に前記記憶部内で前記管理情報を伸張し、前記管理情報の読み出しが不要になると前記記憶部内で前記管理情報を圧縮することを特徴とする請求項2乃至7に記載のメモリシステム。 - 前記管理情報は、前記不揮発性メモリ内での第1のデータ記憶単位と、前記第1のデータ記憶単位内に含まれる有効な第2のデータ記憶単位の数である有効記憶単位数と、の対応関係を前記第1のデータ記憶単位毎に保持する記憶単位数管理テーブルであり、
前記圧縮/伸張処理部は、
前記有効記憶単位数が0である有効記憶単位数を、前記有効記憶単位数が0であることを示す1ビットまたは2ビットのデータに置き換え、
前記有効記憶単位数が0以外である有効記憶単位数に対し、前記有効記憶単位数が0以外であることを示す1ビットまたは2ビットのデータを付加することにより、前記有効記憶単位数を圧縮することを特徴とする請求項2に記載のメモリシステム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2012060090A JP2013196115A (ja) | 2012-03-16 | 2012-03-16 | メモリシステム |
| US13/609,663 US9047177B2 (en) | 2012-03-16 | 2012-09-11 | Memory system, data management method, and computer |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2012060090A JP2013196115A (ja) | 2012-03-16 | 2012-03-16 | メモリシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2013196115A true JP2013196115A (ja) | 2013-09-30 |
Family
ID=49158772
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2012060090A Pending JP2013196115A (ja) | 2012-03-16 | 2012-03-16 | メモリシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US9047177B2 (ja) |
| JP (1) | JP2013196115A (ja) |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016056104A1 (ja) * | 2014-10-09 | 2016-04-14 | 株式会社日立製作所 | ストレージ装置、及び、記憶制御方法 |
| US9864547B2 (en) | 2015-08-06 | 2018-01-09 | Toshiba Memory Corporation | Storage device and control method |
| JP2019102027A (ja) * | 2017-12-08 | 2019-06-24 | 東芝メモリ株式会社 | データ処理装置、メモリシステム及びデータ処理方法 |
| US10565124B2 (en) | 2018-03-16 | 2020-02-18 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
| US10824570B2 (en) | 2019-01-16 | 2020-11-03 | Toshiba Memory Corporation | Memory system |
| JP2021039557A (ja) * | 2019-09-03 | 2021-03-11 | キオクシア株式会社 | メモリシステム |
| US11263147B2 (en) | 2019-03-19 | 2022-03-01 | Kioxia Corporation | 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 |
| US11922014B2 (en) | 2021-11-10 | 2024-03-05 | Kioxia Corporation | Memory system and method |
| US12411602B2 (en) | 2022-07-01 | 2025-09-09 | Kioxia Corporation | Memory system |
Families Citing this family (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2573183B1 (en) * | 2009-01-22 | 2017-01-04 | Syngenta Participations AG | Mutant hydroxyphenylpyruvate dioxgenase polypeptids and methods of use |
| US9495288B2 (en) * | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
| KR20150057068A (ko) * | 2013-11-18 | 2015-05-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
| KR20160024546A (ko) * | 2014-08-26 | 2016-03-07 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
| US9996461B1 (en) * | 2014-09-24 | 2018-06-12 | Marvell International Ltd. | Dynamic differential compression for storage device look-up table |
| US9846552B2 (en) | 2014-11-13 | 2017-12-19 | Toshiba Memory Corporation | Memory device and storage system having the same |
| US9798470B2 (en) * | 2015-01-23 | 2017-10-24 | Toshiba Memory Corporation | Memory system for storing and processing translation information |
| US20160291887A1 (en) * | 2015-03-30 | 2016-10-06 | Kabushiki Kaisha Toshiba | Solid-state drive with non-volatile random access memory |
| US9864699B1 (en) * | 2015-04-14 | 2018-01-09 | Marvell International Ltd. | Method and apparatus for compressing LUT |
| US9727244B2 (en) * | 2015-10-05 | 2017-08-08 | International Business Machines Corporation | Expanding effective storage capacity of a data storage system while providing support for address mapping recovery |
| US20170177497A1 (en) * | 2015-12-21 | 2017-06-22 | Qualcomm Incorporated | Compressed caching of a logical-to-physical address table for nand-type flash memory |
| US10229051B2 (en) * | 2015-12-30 | 2019-03-12 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device |
| US10216644B2 (en) | 2016-11-04 | 2019-02-26 | Toshiba Memory Corporation | Memory system and method |
| US10209897B2 (en) * | 2016-12-01 | 2019-02-19 | Toshiba Memory Corporation | Storage device and control method of the same |
| US10289557B2 (en) * | 2017-08-28 | 2019-05-14 | Western Digital Technologies, Inc. | Storage system and method for fast lookup in a table-caching database |
| JP2019057074A (ja) | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステム |
| TWI761440B (zh) | 2018-01-30 | 2022-04-21 | 韓商愛思開海力士有限公司 | 記憶體存取方法 |
| JP2021043837A (ja) | 2019-09-13 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62241050A (ja) | 1986-04-11 | 1987-10-21 | Hitachi Ltd | 計算機システムのメモリ管理方式 |
| JPH10210066A (ja) | 1997-01-16 | 1998-08-07 | Sumitomo Electric Ind Ltd | ネットワーク間中継先判定用データベース及びデータベースの構築方法 |
| US7538694B2 (en) * | 1999-01-29 | 2009-05-26 | Mossman Holdings Llc | Network device with improved storage density and access speed using compression techniques |
| JP2001093235A (ja) | 1999-09-24 | 2001-04-06 | Victor Co Of Japan Ltd | インターリーブ編集方法及びインターリーブ編集装置 |
| US6857045B2 (en) * | 2002-01-25 | 2005-02-15 | International Business Machines Corporation | Method and system for updating data in a compressed read cache |
| US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
| EP2225643B1 (en) | 2007-12-28 | 2020-05-06 | Toshiba Memory Corporation | Semiconductor storage device |
| WO2012168960A1 (en) * | 2011-06-07 | 2012-12-13 | Hitachi, Ltd. | Semiconductor storage apparatus and method of controlling semiconductor storage apparatus |
-
2012
- 2012-03-16 JP JP2012060090A patent/JP2013196115A/ja active Pending
- 2012-09-11 US US13/609,663 patent/US9047177B2/en active Active
Cited By (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016056104A1 (ja) * | 2014-10-09 | 2016-04-14 | 株式会社日立製作所 | ストレージ装置、及び、記憶制御方法 |
| US10310984B2 (en) | 2014-10-09 | 2019-06-04 | Hitachi, Ltd. | Storage apparatus and storage control method |
| US9864547B2 (en) | 2015-08-06 | 2018-01-09 | Toshiba Memory Corporation | Storage device and control method |
| US10152280B2 (en) | 2015-08-06 | 2018-12-11 | Toshiba Memory Corporation | Storage device and control method |
| US10686468B2 (en) | 2017-12-08 | 2020-06-16 | Toshiba Memory Corporation | Data processing apparatus, memory system, and method of processing data |
| JP2019102027A (ja) * | 2017-12-08 | 2019-06-24 | 東芝メモリ株式会社 | データ処理装置、メモリシステム及びデータ処理方法 |
| JP7010683B2 (ja) | 2017-12-08 | 2022-01-26 | キオクシア株式会社 | データ処理装置、メモリシステム及びデータ処理方法 |
| US10565124B2 (en) | 2018-03-16 | 2020-02-18 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
| US10824570B2 (en) | 2019-01-16 | 2020-11-03 | Toshiba Memory Corporation | Memory system |
| US11263147B2 (en) | 2019-03-19 | 2022-03-01 | Kioxia Corporation | 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 |
| JP2021039557A (ja) * | 2019-09-03 | 2021-03-11 | キオクシア株式会社 | メモリシステム |
| US11609844B2 (en) | 2019-09-03 | 2023-03-21 | Kioxia Corporation | Memory system with hierarchical tables |
| JP7362369B2 (ja) | 2019-09-03 | 2023-10-17 | キオクシア株式会社 | メモリシステム |
| US11922014B2 (en) | 2021-11-10 | 2024-03-05 | Kioxia Corporation | Memory system and method |
| US12411602B2 (en) | 2022-07-01 | 2025-09-09 | Kioxia Corporation | Memory system |
Also Published As
| Publication number | Publication date |
|---|---|
| US9047177B2 (en) | 2015-06-02 |
| US20130246689A1 (en) | 2013-09-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2013196115A (ja) | メモリシステム | |
| JP4461187B1 (ja) | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 | |
| US9111618B2 (en) | De-duplication in flash memory module | |
| JP5376983B2 (ja) | メモリシステム | |
| CN102193748B (zh) | 控制器、数据存储装置以及程序产品 | |
| US9785384B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
| JP2011128998A (ja) | 半導体記憶装置 | |
| US8825946B2 (en) | Memory system and data writing method | |
| CN108628771A (zh) | 信息处理装置、存储设备以及信息处理系统 | |
| KR20080030756A (ko) | 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법 | |
| CN104793891B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
| TWI463313B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
| US11176033B2 (en) | Data storage devices and data processing methods | |
| JP2007220101A (ja) | ブロック方式のメモリにおいてデータの変更類型に応じてブロックを管理する方法および装置 | |
| TW201537577A (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
| KR102032878B1 (ko) | 플래시 메모리 컨트롤러의 에러 정정 방법 | |
| TW202009709A (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TW202601387A (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及記憶體裝置 | |
| JP5694212B2 (ja) | 管理情報生成方法およびメモリシステム | |
| KR20110016320A (ko) | 플래시 메모리를 블록 그룹으로 구분하여 관리하는 방법 | |
| JP5025670B2 (ja) | 情報処理装置およびデータ記憶装置 | |
| KR20150018690A (ko) | 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법 | |
| CN105573662B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
| US12181983B2 (en) | Data storage device, memory controller and method of operating the same | |
| CN107229413B (zh) | 存储器管理方法、存储器控制电路单元与存储器储存装置 |