JP2023070797A - メモリシステムおよび方法 - Google Patents
メモリシステムおよび方法 Download PDFInfo
- Publication number
- JP2023070797A JP2023070797A JP2021183137A JP2021183137A JP2023070797A JP 2023070797 A JP2023070797 A JP 2023070797A JP 2021183137 A JP2021183137 A JP 2021183137A JP 2021183137 A JP2021183137 A JP 2021183137A JP 2023070797 A JP2023070797 A JP 2023070797A
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- physical
- area
- stored
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
Abstract
【課題】I/O性能を向上させることができるメモリシステムを提供する。【解決手段】実施形態によれば、コントローラは、ホストから指定されるアドレスと不揮発性メモリの物理的な位置を示すアドレスとの対応関係を保持する第1テーブルを管理し、ホストから受信したライトコマンドで指定される第1アドレスに対応する第1データを圧縮し、第1データを圧縮して得られた第2データのサイズを特定し、第2データのサイズに基づき、不揮発性メモリ上における第2データの配置を決定し、第1テーブルのエントリのうち第1アドレスに対応するエントリに、第2データの先頭が格納される物理領域に対応するアドレスである第2アドレスと、第2データの格納に用いられる物理領域数とを格納し、第2データが格納される物理領域の第1領域に、第1アドレスと、物理領域での第2データの始端の位置を示すオフセット情報と、第2データのサイズとを格納する。【選択図】図3
Description
本発明の実施形態は、メモリシステムおよび方法に関する。
サーバやPC(Personal Computer)のような情報処理装置のストレージとして、SSD(Solid State Drive)のようなメモリシステムが広く使用されている。
また、近年、たとえば企業活動において、データマイニングなどのために大量のデータを蓄積する必要に迫られる事例が増えていることから、データを圧縮・伸張する機能を有するメモリシステムが普及し始めている。
NAND型フラッシュメモリ(NANDメモリ)を備えるSSDの場合、NANDメモリを制御するコントローラは、ホスト(情報処理装置)がライトコマンドやリードコマンドの発行時などにデータの格納場所を指定するために使用する、NANDメモリ上の位置を論理的に示す論理アドレスと、NANDメモリ上の物理的な位置を示す物理アドレスとの対応関係を保持するテーブルを管理する。このテーブルは、論物変換テーブルやLUT(Look Up Table)などと称されている。コントローラは、論物変換テーブルの必要部分を、DRAM(Dynamic RAM[Random Access Memory])などにキャッシュして使用する。
一般的に、同じサイズのデータを圧縮した場合であっても、圧縮後のデータのサイズは一定にはならない。従って、データを圧縮・伸張する機能を稼働させて、サイズが不揃いとなる圧縮後のデータを詰めて格納することとすると、論物変換テーブルに記録しておくべき情報が増えて、論物変換テーブルのサイズが増大する。この増大に伴い、キャッシュ領域の容量を増やすことができればよいが、コスト面などからキャッシュ領域の容量を増やすことができない場合、論物変換テーブルのキャッシュヒット率が低下する。論物変換テーブルのキャッシュヒット率の低下は、即ち、メモリシステムのI/O性能の低下に繋がってしまう。
本発明の1つの実施形態は、I/O性能を向上させることができるメモリシステムおよび方法を提供する。
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。コントローラは、ホストと通信可能であり、不揮発性メモリを制御する。コントローラは、ホストから指定されるアドレスと不揮発性メモリの物理的な位置を示すアドレスとの対応関係を保持する第1テーブルを管理する。コントローラは、ホストから受信したライトコマンドで指定される第1アドレスに対応する第1データを圧縮し、第1データを圧縮して得られた第2データのサイズを特定し、第2データのサイズに基づき、不揮発性メモリ上における第2データの配置を決定する。コントローラは、第1テーブルのエントリのうち第1アドレスに対応するエントリに、第2データの先頭が格納される物理領域に対応するアドレスである第2アドレスと、第2データの格納に用いられる物理領域数とを格納し、第2データが格納される物理領域の第1領域に、第1アドレスと、物理領域での第2データの始端の位置を示すオフセット情報と、第2データのサイズとを格納する。
以下、実施の形態について、図面を参照して説明する。
(第1実施形態)
まず、第1実施形態について説明する。
(第1実施形態)
まず、第1実施形態について説明する。
図1は、第1実施形態のメモリシステム1の一構成例を示す図である。図1には、メモリシステム1と、メモリシステム1をストレージとして接続するホスト2とを含む情報処理システムの一構成例が併せて示されている。ホスト2は、サーバやPCのような情報処理装置である。
メモリシステム1は、コントローラ11と、DRAM12と、NAND型フラッシュメモリ(NANDメモリ)13とを有する。ここでは、メモリシステム1がSSDとして実現されている例を示す。メモリシステム1は、SSDに限られず、NANDメモリ13に代えて様々な種類の不揮発性メモリが搭載され得る。また、ここでは、コントローラ11の作業領域としてDRAM12がメモリシステム1に搭載される例を示すが、DRAM12を搭載することに代えて、たとえばSRAM(STATIC RAM)をコントローラ11に内蔵または増設してもよい。
コントローラ11は、メモリシステム1の動作制御を司る。コントローラ11は、CPU(Central Processing Unit)111、ホストインタフェース112、DRAMインタフェース113、NANDインタフェース114、圧縮・伸張部115およびECC(Error Check and Correct)116を有する。
CPU111は、制御プログラム(ファームウェア)を実行することで、コントローラ11が実行する各種処理を実現する。コントローラ11が実行する各種処理は、ホスト2からのライトコマンドに応じてデータをNANDメモリ13へ書き込むライト処理や、ホスト2からのリードコマンドに応じてNANDメモリ13に格納されているデータを読み出すリード処理を含む。ここでは、コントローラ11が実行する各種処理が、CPU111がファームウェアを実行することで実現される例を示すが、コントローラ11に内蔵される専用のハードウェアによって実現されてもよい。
ホストインタフェース112は、ホスト2との間の所定の通信規格に準じた通信を制御する。DRAMインタフェース113は、DRAM12へのデータの書き込みおよびDRAM12からのデータの読み出しを制御する。NANDインタフェース114は、NANDメモリ13へのデータの書き込みおよびNANDメモリ13からのデータの読み出しを制御する。
圧縮・伸張部115は、ライトコマンドでNANDメモリ13への書き込みが要求されたライトデータを圧縮して圧縮データを生成し、または、リードコマンドでNANDメモリ13からの読み出しが要求されたリードデータに対応する圧縮データを伸張してリードデータを取得する。つまり、第1実施形態のメモリシステム1は、データを圧縮・伸張する機能を有するメモリシステムである。
ECC116は、圧縮・伸張部115によって生成された圧縮データに対する誤り訂正処理を実行する。具体的には、ライトコマンド受領時、ECC116は、NANDメモリ13へ書き込む圧縮データ中に将来誤りが生じた場合に備えて、その誤りを検出・訂正するための誤り訂正符号を生成する。また、リードコマンド受領時、ECC116は、誤り訂正符号を使って、NANDメモリ13から読み出された圧縮データ中に誤りが生じていないかどうかを調べて、誤りが検出されたならば、その誤りを訂正する。
たとえばホスト2からライトコマンドが発行されると、そのライトコマンドはホストインタフェース112によって受信される。ライトコマンドが受信された場合、CPU111は、ライトデータをホストインタフェース112経由で受け取り、そのライトデータをDRAMインタフェース113経由で一時的にDRAM12に格納する。
CPU111は、DRAM12上のライトデータを圧縮・伸張部115に供給し、ライトデータの圧縮を圧縮・伸張部115に指示する。圧縮・伸張部115によって圧縮データが生成されると、CPU111は、その圧縮データをECC116に供給し、誤り訂正符号の生成をECC116に指示する。CPU111は、ECC116によって生成された誤り訂正符号を圧縮データに付し、誤り訂正符号が付された圧縮データをNANDインタフェース114経由でNANDメモリ13に格納する。
また、たとえばホスト2からリードコマンドが発行されると、そのリードコマンドはホストインタフェース112によって受信される。リードコマンドが受信された場合、CPU111は、リードコマンドで指定されたリードデータに対応する圧縮データをNANDインタフェース114経由でNANDメモリ13から読み出す。CPU111は、NANDメモリ13から読み出された圧縮データをDRAMインタフェース113経由で一時的にDRAM12に格納する。この圧縮データには、NANDメモリ13への書き込み時に生成された誤り訂正符号が付されている。
CPU111は、DRAM12上の圧縮データをECC116に供給し、誤り訂正符号を用いた、圧縮データ中に生じている可能性のある誤りの検出・訂正をECC116に指示する。CPU111は、ECC116によって誤りの検出・訂正が施された圧縮データを圧縮・伸張部115に供給し、圧縮データの伸張を圧縮・伸張部115に指示する。CPU111は、圧縮・伸張部115が圧縮データを伸張することで取得されるリードデータをホストインタフェース112経由でホスト2へ送信する。
ところで、ホスト2から発行されるライトコマンドやリードコマンドには、データの格納場所を指定する論理アドレスが含まれる。論理アドレスは、ホスト2に提供されるメモリシステム1の論理アドレス空間内の位置を示すアドレスである。換言すれば、論理アドレスは、NANDメモリ13上の位置を論理的に示すアドレスである。
一方、CPU111は、NANDインタフェース114経由でのNANDメモリ13へのデータの書き込みやNANDメモリ13からのデータの読み出しを、論理アドレス空間へのマッピングが動的に行われる物理アドレス空間内の位置を示す物理アドレスを使用して実行する。物理アドレスは、NANDメモリ13上の物理的な位置を示す。
そのため、CPU111は、論理アドレスを物理アドレスに変換するアドレス変換を行う必要がある。このアドレス変換は、アドレス解決などとも称される。このアドレス変換のために、CPU111は、論理アドレスと物理アドレスとの対応関係を保持するテーブルを管理する。このテーブルは、論物変換テーブルやLUTなどと称される。CPU111は、論物変換テーブルをNANDメモリ13に格納し、NANDメモリ13に格納されている論物変換テーブルのうち所定部分をDRAM12にキャッシュして使用する。
論理アドレスや物理アドレスは、論理アドレス空間内の所定サイズの論理領域や物理アドレス空間内の所定サイズの物理領域の各々に対して割り当てられる。所定サイズの論理領域は、論理クラスタなどと称され、所定サイズの物理領域は、物理クラスタなどと称される。論理アドレスと物理アドレスとの対応関係を保持する論物変換テーブルを管理することによって、メモリシステム1は、論理クラスタと物理クラスタとの対応づけを動的に行うことができる。所定サイズは、ホスト2がメモリシステム1上のデータを管理する単位である。ホスト2は、所定サイズの整数倍のサイズのデータを対象として、その書き込みや読み出しをメモリシステム1に対して要求する。
一方、メモリシステム1は、物理クラスタよりも細かい粒度で、NANDメモリ13へのデータの書き込みやNANDメモリ13からのデータの読み出しを実行することができる。また、メモリシステム1は、NANDメモリ13上のデータの消去を、複数の物理クラスタで構成されるブロック単位で実行する。データの消去が行われたブロックは、フリーブロックなどと称される。メモリシステム1は、フリーブロックを確保して、そのフリーブロックの物理クラスタへデータを書き込んでいき、すべての物理クラスタへデータが書き込まれると、新たなフリーブロックを改めて確保する。
NANDメモリ13は、データを書き込み済みの領域へのデータの上書きを行うことができない不揮発性の記憶媒体である。データの更新は、ある領域に格納されている元のデータを無効化し、新たなデータを別の領域に書き込むことで実行される。そのため、時間の経過に伴って、大多数の領域のデータが無効化されてしまっているブロックなどが発生する可能性がある。そこで、CPU111は、このようなブロック内の有効データを移動させてフリーブロックを生成する処理を定期的または逐次的に実行する。フリーブロックを生成する処理は、ガベージコレクションなどと称される。
たとえばライトデータをNANDメモリ13へ書き込む場合、ホスト2は、論理アドレスとデータ長とをライトコマンドで指定して、そのデータ長のライトデータをメモリシステム1へ送信する。データの圧縮を行わない場合、ライトデータで用いられる、論理アドレス空間内の論理クラスタ数と、物理アドレス空間内の物理クラスタ数とは一致する。つまり、論理クラスタと物理クラスタとは一対一で対応する。従って、データの圧縮を行わない場合、論物変換テーブルは、たとえば論理アドレス数分の各エントリに、それぞれの論理アドレスに対応づけられている物理アドレスが記録されていればよい。
これに対して、データの圧縮を行う場合、ライトデータで用いられる論理アドレス空間内の論理クラスタ数と、ライトデータを圧縮して生成される圧縮データで用いられる物理アドレス空間内の物理クラスタ数とは不一致となる。1つの物理クラスタに2以上の論理クラスタのデータの圧縮データが混在することも生じ得る。従って、データの圧縮を行う場合、論物変換テーブルは、たとえば論理アドレス数分の各エントリに、物理アドレスに加えて、物理アドレスで示される物理クラスタに格納されている圧縮データ中から、論理アドレスで示される論理クラスタのデータに対応する圧縮データを抽出するための情報等がさらに記録されている必要がある。
ここで、図2を参照して、データを圧縮・伸張する機能を有する比較例のメモリシステムについて説明する。
図2(A)は、比較例のメモリシステムがホストから受信したデータを圧縮してNANDメモリへ書き込む一例を示している。一方、図2(B)は、比較例のメモリシステムが論物変換テーブルに記録する各種情報の一例を示している。
たとえば、比較例のメモリシステムは、論理アドレス「10」で示される論理クラスタのデータに対応する圧縮データを、物理アドレス「36」で示される物理クラスタの途中まで格納したものと想定する。ここでは、物理クラスタ内が、物理クラスタを16分割したサブページ単位で管理されているものとし、16個のサブページ(0~15)のうちの10個のサブページが使用されたものと想定する。つまり、この圧縮データの終端が9番のサブページに位置するものと想定する。
次に、比較例のメモリシステムは、論理アドレス「11」で示される論理クラスタのデータに対応する圧縮データを、直前に格納した、論理アドレス「10」で示される論理クラスタのデータに対応する圧縮データに続けて、物理アドレス「36」で示される物理クラスタの途中から格納したものと想定する。より詳しくは、10番のサブページから格納したものと想定する。また、この圧縮データは、残り6個のサブページでは収まらず、2つの物理クラスタに跨って格納されたものと想定する。物理アドレス「36」で示される物理クラスタと、物理アドレス「37」で示される物理クラスタとは、同一のブロックに含まれている物理クラスタである。また、この圧縮データのデータ長は、17000バイトであるものと想定する。データ長は、圧縮前のデータのデータ長が論理クラスタ分で一定であっても、圧縮前のデータの内容によって変動する。
比較例のメモリシステムは、論理アドレス「11」で示される論理クラスタのデータに対応する圧縮データに関し、図2(B)に示すように、論物変換テーブルの全エントリ中の論理アドレス「11」に対応するエントリに、物理アドレス「36」に加えて、16サブページ中の10番のサブページを示すオフセット情報(a1)と、データ長(a2)とを格納する。
オフセット情報(a1)とデータ長(a2)とを論物変換テーブルに追加で格納することで、比較例のメモリシステムは、物理クラスタに前詰めで格納した圧縮データを過不足なく取得することができる。具体的には、たとえば論理アドレス「11」で示される論理クラスタのデータに対応する圧縮データの場合、比較例のメモリシステムは、論物変換テーブルに基づき、物理アドレス「36」で示される物理クラスタの10番のサブページから17000バイト分のデータ読み出しを行えばよい。
しかし、比較例のメモリシステムでは、オフセット情報を4ビットで記録し、データ長を16ビットで論物変換テーブルに記録するものと仮定すると、論物変換テーブルは1エントリにつき20ビット増加することになる。物理アドレスが28ビットで記録されるものと仮定すると、28ビットから48(28+4+16)ビットへ20ビットも増加するので、その増加率は71.4%にも及ぶ。
論物変換テーブルは、必要部分がDRAMなどにキャッシュされて利用される。論理物理テーブルの増加に伴い、キャッシュ領域の容量を増やすことができればよいが、コスト面などからキャッシュ領域の容量を増やすことができない場合、論物変換テーブルのキャッシュヒット率が低下する。論物変換テーブルのキャッシュヒット率の低下は、即ち、メモリシステムのI/O性能の低下に繋がってしまう。
第1実施形態のメモリシステム1は、データを圧縮・伸張する機能を稼働させるにあたって、論物変換テーブルのサイズ増を抑制して、論物変換テーブル用のキャッシュ領域の容量の増加を抑えつつ、論物変換テーブルのキャッシュヒット率を向上させ、I/O性能を向上させることを実現する。以下、この点について詳述する。
図3は、第1実施形態のメモリシステム1におけるNANDメモリ13の物理クラスタへのデータの配置および論物変換テーブル(LUT)の構成の一例を示す図である。
図3(A)は、前述した比較例のメモリシステムの場合と同様、物理アドレス「36」で示される物理クラスタに、論理アドレス「10」で示される論理クラスタのデータに対応する圧縮データに続いて、論理アドレス「11」で示される論理クラスタのデータに対応する圧縮データを格納する例を示している。
第1実施形態のメモリシステム1において、論理アドレスを物理アドレスに変換するアドレス変換(アドレス解決)を行うCPU111は、比較例のメモリシステムでは論物変換テーブルに格納される、圧縮データのオフセット情報およびデータ長を、論理アドレスとともに、物理クラスタの先頭領域(ヘッダ)に格納する(b1)。ここでは、これらの情報を格納する領域を物理クラスタの先頭に設ける例を示すが、その位置は、物理クラスタの先頭以外であってもよい。
一方、図3(B)は、図3(A)に示すデータの書き込みに伴って論物変換テーブルに記録される各種情報の一例を示している。圧縮データのオフセット情報およびデータ長を論物変換テーブルではなく物理クラスタに格納するCPU111は、圧縮データが複数の物理クラスタに跨って配置され得ることから、読み出しクラスタ数(b2)を論物変換テーブルに格納する。たとえば、論理アドレス「11」で示される論理クラスタのデータに対応する圧縮データは、2つの物理クラスタに跨って格納されているので、CPU111は、論物変換テーブルの全エントリ中の論理アドレス「11」に対応するエントリに、先頭の物理アドレス「36」に加えて、読み出しクラスタ数「2」を格納する。
この論理アドレス「11」で示される論理クラスタのデータに対応する圧縮データをNANDメモリ13から読み出す場合、CPU111は、まず、論物変換テーブルに格納されている物理アドレス「36」と読み出しクラスタ数「2」とに基づき、圧縮データを含む2つの物理クラスタのデータをすべて読み出す。次いで、CPU111は、物理アドレス「36」で示される物理クラスタの先頭領域に格納されている圧縮データのオフセット情報およびデータ長に基づき、読み出した2つの物理クラスタのデータ中から、論理アドレス「11」で示される論理クラスタのデータに対応する圧縮データを抽出する。
論物変換テーブルに追加される、読み出しクラスタ数を示すビット列は、オフセット情報およびデータ長を示すビット列と比較して十分小さいため、論物変換テーブルのサイズ増を微小に抑えることができるので、キャッシュヒット率に与える影響は小さい。
つまり、第1実施形態のメモリシステム1は、データを圧縮・伸張する機能を稼働させるにあたって、論物変換テーブルのサイズ増を抑制して、論物変換テーブル用のキャッシュ領域の容量の増加を抑えつつ、論物変換テーブルのキャッシュヒット率を向上させ、I/O性能を向上させることを実現する。
以下、第1実施形態のメモリシステム1のデータ圧縮・伸張に関する詳細な説明をさらに続ける。
ここでは、メモリシステム1が、1Tバイト(=1024×1024×1024×1024[バイト])の容量を持つSSDであることを想定する。また、この1Tバイトの記憶領域に関して、4Kバイトごとに、論理アドレスおよび物理アドレスが割り振られていることを仮定する。ここで、論理アドレスおよび物理アドレスは、28ビットで表されるものとする。前述したように、論理アドレスや物理アドレスが割り当てられる単位は、論理クラスタや物理クラスタと称される。なお、物理クラスタは、メディアクラスタとも称される。また、以下では、クラスタ内は、前述の16分割のサブページ単位ではなく、1Kバイト単位で管理されるものと想定する。
まず、メモリシステム1のデータの圧縮動作について説明する。
ホスト2から、論理アドレス(LCA:Logical Cluster Address)=3,4,5,6に対応するデータのライトコマンドが来たとする。また、それぞれのLCAに対応するデータを圧縮した結果、図4(B)に示すようなサイズに圧縮できたとする。たとえば、LCA=4のデータは圧縮して2.5Kバイトになったが、物理クラスタ上では1Kバイト単位で管理されるため、データ長(サイズ)は3となる。CPU111は、まず、これら圧縮データのNANDメモリ13上の配置を決め、図5に示すように、LCA=3のデータから順番に詰めてゆく。たとえばLCA=6の圧縮データは圧縮前より大きくなってしまったものとすると、CPU111は、LCA=6のデータは圧縮せずに保存する。第1実施形態のメモリシステム1においては、NANDメモリ13からのデータの読み出し時間の節約のため、このような非圧縮データは物理クラスタを跨がずに配置するものとする。
ホスト2から、論理アドレス(LCA:Logical Cluster Address)=3,4,5,6に対応するデータのライトコマンドが来たとする。また、それぞれのLCAに対応するデータを圧縮した結果、図4(B)に示すようなサイズに圧縮できたとする。たとえば、LCA=4のデータは圧縮して2.5Kバイトになったが、物理クラスタ上では1Kバイト単位で管理されるため、データ長(サイズ)は3となる。CPU111は、まず、これら圧縮データのNANDメモリ13上の配置を決め、図5に示すように、LCA=3のデータから順番に詰めてゆく。たとえばLCA=6の圧縮データは圧縮前より大きくなってしまったものとすると、CPU111は、LCA=6のデータは圧縮せずに保存する。第1実施形態のメモリシステム1においては、NANDメモリ13からのデータの読み出し時間の節約のため、このような非圧縮データは物理クラスタを跨がずに配置するものとする。
圧縮データのNANDメモリ13上の配置が決まったら、CPU111は、図4(A)に示すように、論物変換テーブル(LUT)の全エントリ中の対象の論理アドレスに対応するエントリに、圧縮データ(元データより大きくなる場合は非圧縮データ)の物理アドレス(MCA:Media Cluster Address)と、圧縮データを読み出すのに必要な物理クラスタ数を書く。なお、図4(A)のたとえば「2’b01」の「2’b」は、後続の数字列が2桁の2進数であることを表している。たとえばLCA=3の圧縮データは物理アドレス=909の1クラスタを読めば必要なデータは含まれ、LCA=4の圧縮データはMCA=909と910の2クラスタを読めば必要なデータは含まれる。一方、非圧縮の時は読み出しクラスタ数は1に決まっているので、ここでは「2’b00」を入れて非圧縮であることの意味を含める。次に、CPU111は、NANDメモリ13の物理クラスタにヘッダと圧縮データを詰めてゆく。第1実施形態のメモリシステム1では、ヘッダに以下の情報を含める。
(1)物理クラスタに含まれる圧縮データ数
(2)物理クラスタに含まれる圧縮データの論理アドレス情報
(3)物理クラスタ中で圧縮データが配置されるオフセット
(4)圧縮データのサイズ
(2)物理クラスタに含まれる圧縮データの論理アドレス情報
(3)物理クラスタ中で圧縮データが配置されるオフセット
(4)圧縮データのサイズ
このヘッダは(1)を含めることで可変サイズにできるが、(1)の上限値を決めて固定サイズにしてもよい。CPU111は、ヘッダに(1)~(4)を記載した後、圧縮データを順次詰めて、誤り訂正符号化した上でNANDメモリ13へ書き込む。
次に、メモリシステム1の圧縮データの伸張動作について説明する。
ホスト2から論理アドレスに対するリードコマンドが来ると、CPU111は、まず、論物変換テーブル(LUT)を参照して読み出す物理クラスタを決定する。たとえば、LCA=4に対するリードコマンドであれば、LUTからMCA=909と901の2個の物理クラスタを読み出すことが分かる。読み出しクラスタ数が2であることから、2個の物理クラスタを読み出すことだけでなく、(「2b’00」でないので)対象クラスタが圧縮されていることも分かる。次に、CPU111は、NANDメモリ13からMCA=909と910の物理クラスタを読み出し、誤り訂正復号を行った後、MCA=909のヘッダを参照する。LCA=4の圧縮データはMCA=909の(オフセット=3ゆえ)3Kバイト目から始まっており、データ長=3なので、CPU111は、MCA=909の4Kバイト目までの1Kバイト分をまずは切り出す。残りの2Kバイト分は続くMCA=910の物理クラスタの先頭から読み出す。これでLCA=4の圧縮データ3Kバイト分が切り出される。次に、CPU111は、LCA=4の圧縮データ3Kバイトを伸張して、LCA=4のリードデータを作ってホスト2に返す。
ホスト2から論理アドレスに対するリードコマンドが来ると、CPU111は、まず、論物変換テーブル(LUT)を参照して読み出す物理クラスタを決定する。たとえば、LCA=4に対するリードコマンドであれば、LUTからMCA=909と901の2個の物理クラスタを読み出すことが分かる。読み出しクラスタ数が2であることから、2個の物理クラスタを読み出すことだけでなく、(「2b’00」でないので)対象クラスタが圧縮されていることも分かる。次に、CPU111は、NANDメモリ13からMCA=909と910の物理クラスタを読み出し、誤り訂正復号を行った後、MCA=909のヘッダを参照する。LCA=4の圧縮データはMCA=909の(オフセット=3ゆえ)3Kバイト目から始まっており、データ長=3なので、CPU111は、MCA=909の4Kバイト目までの1Kバイト分をまずは切り出す。残りの2Kバイト分は続くMCA=910の物理クラスタの先頭から読み出す。これでLCA=4の圧縮データ3Kバイト分が切り出される。次に、CPU111は、LCA=4の圧縮データ3Kバイトを伸張して、LCA=4のリードデータを作ってホスト2に返す。
また、たとえばLCA=6に対するリードコマンドが来た場合は、LUTから読み出す物理クラスタアドレスがMCA=912であることと、読み出しクラスタ数が「2’b00」であることから非圧縮であることが分かる。そこで、CPU111は、MCA=912の物理クラスタを読み出し、誤り訂正復号を行った後、伸張することなくホスト2に返す。
図6は、メモリシステム1のデータの圧縮動作の手順を示すフローチャートである。
メモリシステム1は、ホスト2からのユーザデータを圧縮する(S101)。メモリシステム1は、圧縮データのサイズを特定する(S102)。メモリシステム1は、特定したサイズに基づき、NANDメモリ13への圧縮データの配置を決定する(S103)。
メモリシステム1は、ホスト2からのユーザデータを圧縮する(S101)。メモリシステム1は、圧縮データのサイズを特定する(S102)。メモリシステム1は、特定したサイズに基づき、NANDメモリ13への圧縮データの配置を決定する(S103)。
メモリシステム1は、ユーザデータの書き込み先として指定された論理アドレスと対応づけて、圧縮データの先頭が格納される物理クラスタの物理アドレスと、圧縮データで使用される物理クラスタ数とを論物変換テーブルに格納する(S104)。また、メモリシステム1は、圧縮データが格納される物理クラスタのヘッダ領域に、圧縮データの始端の位置を示すオフセット情報と、圧縮データのサイズとを格納する(S105)。
また、図7は、メモリシステム1の圧縮データの伸張動作の手順を示すフローチャートである。
メモリシステム1は、ユーザデータの読み出し元として指定された論理アドレスと対応づけられて論物変換テーブルに格納されている、圧縮データの先頭が格納されている物理クラスタの物理アドレスと、圧縮データで使用される物理クラスタ数とを取得する(S201)。
メモリシステム1は、ユーザデータの読み出し元として指定された論理アドレスと対応づけられて論物変換テーブルに格納されている、圧縮データの先頭が格納されている物理クラスタの物理アドレスと、圧縮データで使用される物理クラスタ数とを取得する(S201)。
メモリシステム1は、取得した物理アドレスおよび物理クラスタに基づき、物理クラスタからのデータの読み出しを実行する(S202)。メモリシステム1は、物理クラスタのヘッダ情報に格納されているオフセット情報およびサイズに基づき、読み出したデータ中からユーザデータに対応する圧縮データを抽出する(S203)。そして、メモリシステム1は、抽出した圧縮データを伸張する(S204)。
以上のように、第1実施形態のメモリシステム1においては、NANDメモリ13の物理クラスタのヘッダに、圧縮データのオフセット情報とサイズを格納することで、論物変換テーブルの追加分を読み出しクラスタ数のみとし、論物変換テーブルのサイズ増を抑制する。論物変換テーブルのサイズ増を抑制することで、第1実施形態のメモリシステム1は、論物変換テーブル用のキャッシュ領域の容量の増加を抑えつつ、論物変換テーブルのキャッシュヒット率を向上させ、I/O性能を向上させることを実現する。
(第2実施形態)
次に、第2実施形態について説明する。
図8は、第2実施形態のメモリシステム1における論物変換テーブルの一例を示す図である。
次に、第2実施形態について説明する。
図8は、第2実施形態のメモリシステム1における論物変換テーブルの一例を示す図である。
第1実施形態のメモリシステム1では、図4(A)に示したように、読み出しクラスタ数を論物変換テーブルに格納する。また、第1実施形態のメモリシステム1では、図5に示したように、NANDメモリ13の物理クラスタの先頭領域(ヘッダ)に、圧縮データのデータ長をオフセット情報とともに格納する。
これに対して、第2実施形態のメモリシステム1では、図8に示すように、圧縮データのデータ長(c1)を論物変換テーブルに格納する。その一方で、第2実施形態のメモリシステム1では、図9に示すように、NANDメモリ13の物理クラスタの先頭領域(ヘッダ)には、圧縮データのデータ長の格納は行わず、オフセット情報のみを格納する。なお、図8のたとえば「3’b011」の「3’b」は、後続の数字列が3桁の2進数であることを表している。
第1実施形態で説明したように、CPU111は、フリーブロックを生成するためのガベージコレクションを定期的または逐次的に実行する。
ガベージコレクションは、有効データ数が少ないブロックからガベージコレクション対象とし、有効データを他ブロックへ移動させることでフリーブロックを生成する。図10は、ガベージコレクションの大まかな手順を示すフローチャートである。
CPU111は、ガベージコレクションを実行するか否かを判定する(S301)。たとえば、CPU111は、フリーブロック数が閾値未満となった場合などにガベージコレクションを実行すると判定する。ガベージコレクションの実行は不要と判定した場合(S301:NO)、CPU111は、そのまま処理を終了する。
ガベージコレクションを実行すると判定した場合(S301:YES)、CPU111は、各ブロックの有効クラスタ率を取得する(S302)。有効クラスタ率とは、ブロック内の全領域に対して有効データが格納されている領域が占める割合である。ブロック内に無効化されたデータが多く存在すると、有効クラスタ率は低い値となる。
CPU111は、有効クラスタ率に基づいて、コレクション元ブロックを選択する(S303)。コレクション元ブロックとは、有効データを他ブロックへ移動させるブロックである。CPU111は、有効クラスタ率の値が低いブロックを、コレクション元ブロックとして選択する。
CPU111は、コレクション元ブロックの有効データを移動先のフリーブロックに書き込む(S304)。この移動先のフリーブロックへの書き込みが行われると、コレクション元ブロックのデータは無効化される。そして、CPU111は、この移動先のフリーブロックへの書き込みが行われたコレクション元ブロックを、フリーブロックとして回収する(S305)。なお、コレクション元ブロックのデータの消去は、この回収時に行われてもよいし、新たなデータの書き込みに使用される直前に行われてもよい。
CPU111は、たとえばフリーブロック数が閾値以上になったか否か等により、ガベージコレクションを終了するか否かを判定する(S306)。ガベージコレクションを終了する条件を満たしていない場合(S306:NO)、CPU111は、S302からの処理を繰り返す。一方、ガベージコレクションを終了する条件を満たしている場合(S306:YES)、CPU111は、処理を終了する。
ここで、データの圧縮を行っている場合の有効データ数は、ブロック内の有効な圧縮データサイズの総和となる。また、第2実施形態のメモリシステム1では、ガベージコレクションのために、物理ブロックごとに有効データ量を管理するテーブル(有効データ量テーブル)を持つこととする。第1実施形態のメモリシステム1も同様である。
第1実施形態のメモリシステム1と第2実施形態のメモリシステム1で違いが生じるのは、この有効データ量テーブルの制御である。ホスト2からライトコマンドが来ると、CPU111は、有効データ量テーブルを更新する。まず、第2実施形態のメモリシステム1との比較のために、図11を参照して、第1実施形態のメモリシステム1における有効データ量テーブルの更新手順について説明する。
ライトコマンドが来ると、CPU111は、まず、コマンドで指定された論理アドレスに対応する、古い圧縮データが存在するか(上書きのライトかどうか)を判定する(S401)。古い圧縮データが存在する場合(S401:YES)、CPU111は、古い圧縮データが格納された物理アドレス(MCA)を探す。この物理アドレスは複数個に渡る場合もある。そして、CPU111は、この古い物理アドレスが属する物理ブロックの有効データ量を更新する。
ここで、旧圧縮データのサイズは、第1実施形態のメモリシステム1ではNANDメモリ13の物理クラスタのヘッダに記載されているため、CPU111は、旧圧縮データのサイズを得るためのNANDメモリ13のリードを行う(S402)。ヘッダから旧圧縮サイズを読み取ると(S403)、CPU111は、対応する物理ブロックの有効データ数から旧圧縮サイズを減算する(S404)。
また、CPU111は、上書きのライトかどうかに関係なく、新しくライトする物理ブロックの有効データ量も更新する必要がある(S405)。ここでは、新圧縮データをライトする物理アドレスが属する物理ブロックの有効データ量として、新圧縮サイズを加算する。以上が第1実施形態のメモリシステム1における有効データ量テーブルの更新動作になる。
次に、図12を参照して、第2実施形態のメモリシステム1における有効データ量テーブルの更新手順について説明する。
前述した第1実施形態のメモリシステム1と同様、ライトコマンドが来ると、CPU111は、まず、コマンドで指定された論理アドレスに対応する、古い圧縮データが存在するか(上書きのライトかどうか)を判定する(S501)。ここで、第2実施形態のメモリシステム1では、圧縮サイズが論物変換テーブル(LUT)に存在するため、CPU111は、旧圧縮データのサイズを得るためのNANDメモリ13のリードを行わず、(上書きかどうかを判定する)最初のLUTの参照時に、旧圧縮データのサイズをLUTから読み取る(S502)。LUTの容量は第1実施形態のメモリシステム1の場合よりも増えるものの、旧圧縮データのサイズを読み取るための(DRAM12上のLUTのリードに比べて時間が掛かる)NANDメモリ13のリードが不要となるため、第1実施形態のメモリシステム1と比較して、ドライブ性能が向上する。
以降は、第1実施形態のメモリシステム1と同様、CPU111は、対応する物理ブロックの有効データ数から旧圧縮サイズを減算し(S503)、かつ、新しくライトする物理ブロックの有効データ量を更新する(S504)。
図13は、第2実施形態のメモリシステム1のデータの圧縮動作の手順を示すフローチャートである。
メモリシステム1は、ホスト2からのユーザデータを圧縮する(S601)。メモリシステム1は、圧縮データのサイズを特定する(S602)。メモリシステム1は、特定したサイズに基づき、NANDメモリ13への圧縮データの配置を決定する(S603)。
メモリシステム1は、ホスト2からのユーザデータを圧縮する(S601)。メモリシステム1は、圧縮データのサイズを特定する(S602)。メモリシステム1は、特定したサイズに基づき、NANDメモリ13への圧縮データの配置を決定する(S603)。
メモリシステム1は、ユーザデータの書き込み先として指定された論理アドレスと対応づけて、圧縮データの先頭が格納される物理クラスタの物理アドレスと、圧縮データで使用される物理クラスタ数と、圧縮データのサイズとを論物変換テーブルに格納する(S604)。また、メモリシステム1は、圧縮データが格納される物理クラスタのヘッダ領域に、圧縮データの始端の位置を示すオフセット情報を格納する(S605)。
また、図14は、メモリシステム1の圧縮データの伸張動作の手順を示すフローチャートである。
メモリシステム1は、ユーザデータの読み出し元として指定された論理アドレスと対応づけられて論物変換テーブルに格納されている、圧縮データの先頭が格納されている物理クラスタの物理アドレスと、圧縮データで使用される物理クラスタ数と、圧縮データのサイズとを取得する(S701)。
メモリシステム1は、ユーザデータの読み出し元として指定された論理アドレスと対応づけられて論物変換テーブルに格納されている、圧縮データの先頭が格納されている物理クラスタの物理アドレスと、圧縮データで使用される物理クラスタ数と、圧縮データのサイズとを取得する(S701)。
メモリシステム1は、取得した物理アドレスおよび物理クラスタに基づき、物理クラスタからのデータの読み出しを実行する(S702)。メモリシステム1は、物理クラスタのヘッダ情報に格納されているオフセット情報と、論物変換テーブルから取得したサイズとに基づき、読み出したデータ中からユーザデータに対応する圧縮データを抽出する(S703)。メモリシステム1は、抽出した圧縮データを伸張する(S704)。
以上のように、第2実施形態のメモリシステム1においては、NANDメモリ13の物理クラスタのヘッダに格納する情報は圧縮データのオフセット情報のみとし、圧縮データのサイズは論物変換テーブルに格納することで、第1実施形態のメモリシステム1と比較して、論物変換テーブルのサイズは若干増えるものの、有効データ量テーブルの更新の高速化を図り、さらにI/O性能を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、2…ホスト、11…コントローラ、12…DRAM、13…NANDメモリ、111…CPU、112…ホストインタフェース、113…DRAMインタフェース、114…NANDインタフェース、115…圧縮・伸張部、116…ECC。
Claims (13)
- 不揮発性メモリと、
ホストと通信可能であり、前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記ホストから指定されるアドレスと前記不揮発性メモリの物理的な位置を示すアドレスとの対応関係を保持する第1テーブルを管理し、
前記ホストから受信したライトコマンドで指定される第1アドレスに対応する第1データを圧縮し、
前記第1データを圧縮して得られた第2データのサイズを特定し、
前記第2データのサイズに基づき、前記不揮発性メモリ上における前記第2データの配置を決定し、
前記第1テーブルのエントリのうち前記第1アドレスに対応するエントリに、前記第2データの先頭が格納される物理領域に対応するアドレスである第2アドレスと、前記第2データの格納に用いられる物理領域数とを格納し、
前記第2データが格納される物理領域の第1領域に、前記第1アドレスと、前記物理領域での前記第2データの始端の位置を示すオフセット情報と、前記第2データのサイズとを格納する、
メモリシステム。 - 前記コントローラは、前記ホストから受信した前記第1アドレスが指定されたリードコマンドに対して、
前記第1テーブルのエントリのうち前記第1アドレスに対応するエントリに格納されている前記第2アドレスおよび前記物理領域数に基づき、前記不揮発性メモリの前記第2データが格納されている物理領域からの前記第2データを含むデータを読み出し、
前記第2データが格納されている物理領域の第1領域に格納されているオフセット情報およびサイズに基づき、前記読み出したデータから前記第2データを抽出し、
前記抽出した第2データを伸張して前記第1データを取得する、
請求項1に記載のメモリシステム。 - 前記第1領域は、第1個数の前記第2データに関する前記第1アドレス、前記オフセット情報および前記サイズを格納可能な固定長の領域である請求項2に記載のメモリシステム。
- 前記コントローラは、前記第1領域に、前記物理領域に格納される前記第2データの数を示すデータ数情報をさらに格納し、
前記第1領域は、前記データ数情報と、前記データ数情報で示される数の前記第2データに関する前記第1アドレス、前記オフセット情報および前記サイズとが格納される可変長の領域である請求項2に記載のメモリシステム。 - 前記コントローラは、さらに前記データ数情報に基づき、前記読み出したデータから前記第2データを抽出する請求項4に記載のメモリシステム。
- 不揮発性メモリと、
ホストと通信可能であり、前記不揮発性メモリを制御するコントローラと、
前記コントローラは、
前記ホストから指定されるアドレスと、前記不揮発性メモリの物理的な位置を示すアドレスとの対応関係を保持する第1テーブルを管理し、
前記ホストから受信したライトコマンドで指定される第1アドレスに対応する第1データを圧縮し、
前記第1データを圧縮して得られた第2データのサイズを特定し、
前記第2データのサイズに基づき、前記不揮発性メモリ上における前記第2データの配置を決定し、
前記第1テーブルのエントリのうち前記第1アドレスに対応するエントリに、前記第2データの先頭が格納される物理領域に対応するアドレスである第2アドレスと、前記第2データの格納に用いられる物理領域数と、前記第2データのサイズとを格納し、
前記第2データが格納される物理領域の第1領域に、前記第1アドレスと、前記物理領域での前記第2データの始端の位置を示すオフセット情報とを格納する、
メモリシステム。 - 前記コントローラは、前記ホストから受信した前記第1アドレスが指定されたリードコマンドに対して、
前記第1テーブルのエントリのうち前記第1アドレスに対応するエントリに格納されている前記第2アドレスおよび前記物理領域数に基づき、前記不揮発性メモリの前記第2データが格納されている物理領域からの前記第2データを含むデータを読み出し、
前記第2データが格納されている物理領域の第1領域に格納されているオフセット情報と、前記エントリに格納されているサイズとに基づき、前記読み出したデータから前記第2データを抽出し、
前記抽出した第2データを伸張して前記第1データを取得する、
請求項6に記載のメモリシステム。 - 前記第1領域は、第1個数の第2データに関する前記第1アドレスおよび前記オフセット情報を格納可能な固定長の領域である請求項7に記載のメモリシステム。
- 前記コントローラは、前記第1領域に、前記物理領域に格納される前記第2データの数を示すデータ数情報をさらに格納し、
前記第1領域は、前記データ数情報と、前記データ数情報で示される数の前記第2データに関する前記第1アドレスおよび前記オフセット情報とが格納される可変長の領域である請求項7に記載のメモリシステム。 - 前記コントローラは、さらに前記データ数情報に基づき、前記読み出したデータから前記第2データを抽出する請求項9に記載のメモリシステム。
- 前記不揮発性メモリは、データを書き込み済みの前記物理領域へのデータの上書きを行うことができないメモリであり、かつ、第2個数の前記物理領域によって構成されるブロック単位でデータの消去を行うメモリであり、
前記コントローラは、前記第1テーブルに格納されているサイズに基づき、前記不揮発性メモリの各ブロックの有効データ量を保持する第2テーブルを管理する、
請求項6~10のいずれか1項に記載のメモリシステム。 - コントローラを使用して不揮発性メモリを制御する方法であって、
ホストから指定されるアドレスと前記不揮発性メモリの物理的な位置を示すアドレスとの対応関係を保持する第1テーブルを管理し、
前記ホストから受信したライトコマンドで指定される第1アドレスに対応する第1データを圧縮し、
前記第1データを圧縮して得られた第2データのサイズを特定し、
前記第2データのサイズに基づき、前記不揮発性メモリ上における前記第2データの配置を決定し、
前記第1テーブルのエントリのうち前記第1アドレスに対応するエントリに、前記第2データの先頭が格納される物理領域に対応するアドレスである第2アドレスと、前記第2データの格納に用いられる物理領域数とを格納し、
前記第2データが格納される物理領域内の第1領域に、前記第1アドレスと、前記物理領域での前記第2データの始端の位置を示すオフセット情報と、前記第2データのサイズとを格納する、
ことを備える方法。 - コントローラを使用して不揮発性メモリを制御する方法であって、
ホストから指定されるアドレスと前記不揮発性メモリの物理的な位置を示すアドレスとの対応関係とを有する第1テーブルを管理し、
前記ホストから受信したライトコマンドで指定された第1アドレスに対応する第1データを圧縮し、
前記第1データを圧縮して得られた第2データのサイズを特定し、
前記第2データのサイズに基づき、前記不揮発性メモリにおける前記第2データの配置を決定し、
前記第1テーブルのエントリのうち前記第1アドレスに対応するエントリに、前記第2データの先頭が格納される物理領域に対応するアドレスである第2アドレスと、前記第2データの格納に用いられる物理領域数と、前記第2データのサイズと、を格納し、
前記第2データが格納される物理領域の第1領域に、前記第1アドレスと、前記物理領域での前記第2データの始端の位置を示すオフセット情報とを格納する、
ことを備える方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021183137A JP2023070797A (ja) | 2021-11-10 | 2021-11-10 | メモリシステムおよび方法 |
US17/903,636 US11922014B2 (en) | 2021-11-10 | 2022-09-06 | Memory system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021183137A JP2023070797A (ja) | 2021-11-10 | 2021-11-10 | メモリシステムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023070797A true JP2023070797A (ja) | 2023-05-22 |
Family
ID=86229682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021183137A Pending JP2023070797A (ja) | 2021-11-10 | 2021-11-10 | メモリシステムおよび方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11922014B2 (ja) |
JP (1) | JP2023070797A (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013196115A (ja) | 2012-03-16 | 2013-09-30 | Toshiba Corp | メモリシステム |
CN108108311A (zh) * | 2013-12-12 | 2018-06-01 | 株式会社日立制作所 | 存储装置及存储装置的控制方法 |
US10310984B2 (en) | 2014-10-09 | 2019-06-04 | Hitachi, Ltd. | Storage apparatus and storage control method |
KR102525061B1 (ko) | 2016-07-19 | 2023-04-21 | 에스케이하이닉스 주식회사 | 입력 데이터를 압축하여 저장하는 데이터 저장 장치 |
US10203897B1 (en) * | 2016-12-02 | 2019-02-12 | Nutanix, Inc. | Dynamic data compression |
JP2019053415A (ja) | 2017-09-13 | 2019-04-04 | 東芝メモリ株式会社 | メモリシステム、その制御方法及びプログラム |
JP7010683B2 (ja) | 2017-12-08 | 2022-01-26 | キオクシア株式会社 | データ処理装置、メモリシステム及びデータ処理方法 |
KR20210124607A (ko) * | 2020-04-06 | 2021-10-15 | 에스케이하이닉스 주식회사 | 데이터 저장 시스템 및 컨트롤러의 동작 방법 |
-
2021
- 2021-11-10 JP JP2021183137A patent/JP2023070797A/ja active Pending
-
2022
- 2022-09-06 US US17/903,636 patent/US11922014B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230142767A1 (en) | 2023-05-11 |
US11922014B2 (en) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10055345B2 (en) | Methods, devices and systems for solid state drive control | |
US9343153B2 (en) | De-duplication in flash memory module | |
US10853234B2 (en) | Memory controller | |
US9268682B2 (en) | Methods, devices and systems for physical-to-logical mapping in solid state drives | |
US10067881B2 (en) | Compression and caching for logical-to-physical storage address mapping tables | |
US9792067B2 (en) | Trim command processing in a solid state drive | |
US9753847B2 (en) | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping | |
US6968424B1 (en) | Method and system for transparent compressed memory paging in a computer system | |
US8954694B2 (en) | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive | |
US20190114272A1 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
CN102662856B (zh) | 一种固态硬盘及其存取方法 | |
US9477406B2 (en) | Locating data in non-volatile memory | |
US11481114B2 (en) | Storage apparatus and control method of storage apparatus | |
US9507523B1 (en) | Methods, devices and systems for variable size logical page management in a solid state drive | |
US11520698B2 (en) | Data storage device in a key-value storage architecture with data compression, and non-volatile memory control method | |
JP2020154603A (ja) | メモリシステム | |
JP2020149195A (ja) | メモリシステム | |
JP2023070797A (ja) | メモリシステムおよび方法 | |
US11636042B2 (en) | Data processing method for improving access performance of memory device and data storage device utilizing the same | |
US20240103759A1 (en) | Data processing method for improving continuity of data corresponding to continuous logical addresses as well as avoiding excessively consuming service life of memory blocks and the associated data storage device | |
US20240103732A1 (en) | Data processing method for improving continuity of data corresponding to continuous logical addresses as well as avoiding excessively consuming service life of memory blocks and the associated data storage device | |
CN111966606B (zh) | 数据储存装置与数据处理方法 | |
CN114822630A (zh) | 一种基于mram缓存的混合型nvme ssd存储系统 |