JP2020154525A - メモリシステムおよび情報処理システム - Google Patents
メモリシステムおよび情報処理システム Download PDFInfo
- Publication number
- JP2020154525A JP2020154525A JP2019050997A JP2019050997A JP2020154525A JP 2020154525 A JP2020154525 A JP 2020154525A JP 2019050997 A JP2019050997 A JP 2019050997A JP 2019050997 A JP2019050997 A JP 2019050997A JP 2020154525 A JP2020154525 A JP 2020154525A
- Authority
- JP
- Japan
- Prior art keywords
- write
- memory
- write data
- memory system
- compression rate
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- 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
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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
-
- 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/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]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3077—Sorting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Abstract
【課題】不揮発性メモリにおけるライトデータの書き込みを効率化できるメモリシステムおよび情報処理システムを提供する。【解決手段】情報処理システム1は、ホスト2とメモリシステム100を有する。メモリシステムは、不揮発性メモリ130とインタフェースとコントローラとを有する。インタフェースは、複数のライトコマンドを取得する。複数のライトコマンドは、それぞれが、不揮発性メモリに対するライトデータの書き込みを指示する。コントローラは、ライトコマンドに紐づけられた圧縮率推定情報を用いてライトデータの圧縮率を推定する。コントローラは、推定された圧縮率に応じて、不揮発性メモリに対する複数のライトコマンドの実行順を決定する。【選択図】図1
Description
本実施形態は、メモリシステムおよび情報処理システムに関する。
不揮発性メモリを有するメモリシステムでは、ライトデータの書き込みを指示するライトコマンドをホスト等から取得すると、不揮発性メモリに対してライトコマンドを実行する。これにより、不揮発性メモリにおいて、ライトデータの書き込みが行われる。このとき、不揮発性メモリにおけるライトデータの書き込みが効率的に行われることが望まれる。
一つの実施形態は、不揮発性メモリにおけるライトデータの書き込みを効率化できるメモリシステムおよび情報処理システムを提供することを目的とする。
一つの実施形態によれば、不揮発性メモリとインタフェースとコントローラとを有するメモリシステムが提供される。インタフェースは、複数のライトコマンドを取得する。複数のライトコマンドは、それぞれが、不揮発性メモリに対するライトデータの書き込みを指示する。コントローラは、ライトコマンドに紐づけられた圧縮率推定情報を用いてライトデータの圧縮率を推定する。コントローラは、推定された圧縮率に応じて、不揮発性メモリに対する複数のライトコマンドの実行順を決定する。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
第1の実施形態にかかるメモリシステムは、不揮発性メモリを有するストレージシステムである。メモリシステムは、ライトデータの書き込みを指示するライトコマンドをホスト等から取得すると、不揮発性メモリに対してライトコマンドを実行する。これにより、不揮発性メモリにおいて、ライトデータの書き込みが行われる。
第1の実施形態にかかるメモリシステムは、不揮発性メモリを有するストレージシステムである。メモリシステムは、ライトデータの書き込みを指示するライトコマンドをホスト等から取得すると、不揮発性メモリに対してライトコマンドを実行する。これにより、不揮発性メモリにおいて、ライトデータの書き込みが行われる。
メモリシステムにおけるストレージ容量を稼ぐために、ライトデータ(ユーザデータ)を圧縮して不揮発性メモリに書き込むことが考えられる。このため、メモリシステムは、データ圧縮機能を有し、ライトデータを圧縮し、圧縮後のライトデータについて不揮発性メモリに対してライトコマンドを実行する。ユーザデータは、可逆型の圧縮方式で圧縮されるため、圧縮後のサイズにバラツキが生じやすい。
一方、不揮発性メモリでは、所定の書き込み単位でメモリセルアレイへのデータの書き込みが行われる。不揮発性メモリでは、各ライトデータがコマンドの実行順に所定の書き込み単位に収められ、収まりきらないデータが次の書き込み単位に収められる場合、未書き込み領域(無駄領域)を含む書き込み単位のデータがメモリセルアレイに書き込まれることがある。圧縮後のライトデータの書き込みでは、圧縮後のサイズにバラツキが生じやすいため、この傾向が顕著になり、書き込み単位に含まれる未書き込み領域の容量が増大しやすい。これにより、不揮発性メモリにおけるライトデータの書き込みの効率が低下し、メモリシステムにおけるストレージ容量の効率的な利用が困難になる可能性がある。
それに対して、圧縮率を複数のレベルに区分し、複数の圧縮率のレベルに対応した複数のバッファ領域を含むバッファメモリを設け、ライトデータを圧縮して圧縮率を測定し、各ライトデータを圧縮率のレベルに対応したバッファ領域に格納しておくことが考えられる。この場合、ライトデータの圧縮率のレベルに応じて圧縮後のライトデータを書き込み単位に効率的に収めて未書き込み領域(無駄領域)の容量が低減するように、ライトコマンド実行順を変えることが可能である。
しかし、複数の圧縮率のレベルに対応した複数のバッファ領域を含むバッファメモリを設ける場合、大容量のバッファメモリを設けることになり、メモリシステムのコストが増大する可能性がある。
そこで、本実施形態のメモリシステムでは、ライトコマンドに紐づけられた圧縮率推定情報(圧縮率のヒント)を用いてライトデータの圧縮率を推定し、推定された圧縮率に応じてライトコマンドの実行順を決定することで、バッファメモリの容量増加の抑制とライトデータの書き込み効率向上との両立化を目指す。圧縮率推定情報は、ライトコマンドに含まれてもよい。
具体的には、本実施形態のホストとメモリシステムは、次の(1)(2)の特徴を持つ。
(1)ライトデータのエントロピー情報をライトコマンドの送信前にホストで計算し、ライトデータの圧縮後のサイズを予測するためのヒントとして、ライトコマンドにエントロピー情報を紐づける。エントロピー情報は、例えば、どの程度圧縮可能かを示す情報である。
(2)メモリシステムは、ライトコマンドで紐づけられたエントロピー情報を参照して、所定の書き込み単位における書き込み可能な残りデータ量に応じてライトコマンドの実行順を決める。エントロピー情報に基づいて圧縮後のデータの並び替えを実行できるため、所定の書き込み単位程度にバッファ領域を小さくすることが可能になる。ちなみに、NVMe規格に準拠したライトコマンドは、アウトオブオーダー(out of order)での実行が可能である。
より具体的には、メモリシステム100を含む情報処理システム1は、図1に示すように構成され得る。図1は、メモリシステム100を含む情報処理システム1の構成を示す図である。
メモリシステム100は、ホスト2に通信可能に接続され、ホスト2に対する外部記憶装置として機能する。メモリシステム100は、UFS(Universal Flash Storage)規格やeMMC(embedded Multi Media Card)規格などに準拠した組み込み用途のフラッシュメモリや、SSD(Solid State Drive)などである。ホスト2は、例えば、マイクロプロセッサ、撮像装置などである。以下では、ホスト2とメモリシステム100とが通信路を介してNVMe(Non−Volatile Memory express)規格に準拠したパケットを送受信できる場合について例示する。
なお、ホスト2とメモリシステム100とは、NVMe規格に代えて、UFS(Universal Flash Storage)規格、SAS(Serial Attached SCSI)規格、SATA(Serial Advanced Technology Attachment)規格、PCIe(Peripheral Component Interconnect express)規格に準拠したパケットを送受信可能であってもよい。
ホスト2は、ホストコントローラ3及びホストメモリ4を有する。ホストコントローラ3は、DMAC(Direct Memory Access Controller)5を有する。DMAC5は、エントロピー算出部5aを有する。エントロピー算出部5aは、DMAC5がライトコマンドを発行する際に、ライトデータ中のシンボル出現頻度を調べることなどにより、そのライトコマンドに対応したライトデータの圧縮率のヒントとなる圧縮率推定情報(例えば、エントロピー情報)を求める。DMAC5は、エントロピー算出部5aで求められた圧縮率推定情報(例えば、エントロピー情報)を含めてライトコマンドを発行する。
ホストメモリ4は、コマンド発行キュー4a、コマンド完了キュー4b、及びバッファ領域4cを含む。コマンド発行キュー4aは、DMAC5で発行されたライトコマンドがエンキューされる。コマンド発行キュー4aは、基本的にFIFO構造であるが、アウトオブオーダー(out of order)での実行が可能である。コマンド完了キュー4bは、メモリシステム100で実行が完了されたライトコマンドの完了情報がエンキューされる。バッファ領域4cには、コマンド発行キュー4aにエンキューされたライトコマンドに対応したライトデータが格納される。
例えば、エンキューされた順番をi(i=1〜n,nは任意の2以上の整数)で表すと、ライトコマンドWCiは、識別情報IDi、コマンド種別Wr、開始アドレスLBAi、ポインタPRTi、データサイズ情報SIZEi、エントロピー情報Entropyiを含む。識別情報IDiは、ライトコマンドWCiを他のライトコマンドWCiから識別するための情報である。コマンド種別Wrは、コマンドの種類(この場合は、ライトコマンドであること)を示す情報である。開始アドレスLBAiは、ライトデータの先頭の論理アドレスを示す情報である。ポインタPRTiは、バッファ領域4cにおけるライトデータの格納場所(バッファ領域4c内のアドレス)を示す情報である。データサイズ情報SIZEiは、ライトデータのサイズ(非圧縮である場合のサイズ)を示す情報である。エントロピー情報Entropyiは、エントロピー算出部5aで求められたライトデータのエントロピー情報である。
メモリシステム100は、コントローラ110、バッファメモリ120、及び不揮発性メモリ130を有する。コントローラ110は、NVMeインタフェース111、バッファインタフェース112、CPU113、圧縮部114、伸張部115、ECC(Error Correction Circuit)116、RAM(Random Access Memory)117、及びメモリインタフェース118を有する。
不揮発性メモリ130は、複数のメモリチップで構成され得る。各メモリチップはメモリセルアレイを有する。各メモリチップのメモリセルアレイでは、一括してデータの書き込みおよび読み出しのアクセスが可能な単位が物理ページである。複数の物理ページから構成され、独立してデータの消去が可能な最小のアクセス単位が物理ブロックである。1物理ページよりも小さい単位のデータ管理単位であるクラスタで、CPU113により、不揮発性メモリ130内でのデータが管理されるものとする。クラスタサイズは、ホスト2からの最小アクセス単位であるセクタのサイズ以上であり、クラスタサイズの自然数倍が物理ページサイズとなるように定められる。1物理ページは4クラスタで構成され、1論理ページは64クラスタで構成され得る。
例えば、上述の書き込み単位のサイズは、クラスタサイズであってもよいし、ページサイズであってもよいし、ブロックサイズであってもよいし、それらと異なるサイズであってもよい。クラスタサイズは、4KBであってもよく、ページサイズは、16KBであってもよい。
NVMeインタフェース111は、NVMe規格に準拠したインタフェースであり、ドアベルレジスタ111a及びドアベルレジスタ111bを有する。ドアベルレジスタ111aは、ホストメモリ4におけるコマンド発行キュー4aに対応したレジスタであり、例えば発行されたライトコマンドを通知するためにホスト2により有効ビットが格納され得る。NVMeインタフェース111は、ドアベルレジスタ111aに有効ビットが格納されると、ホストメモリ4におけるコマンド発行キュー4aにアクセスし、ライトコマンドを例えば発行順(エンキューされた順)に取得する。
ドアベルレジスタ111bは、ホストメモリ4におけるコマンド完了キュー4bに対応したレジスタであり、例えば完了情報を確認したことを通知するためにホスト2により有効ビットが格納され得る。
CPU113は、コントローラ110の各部を統括的に制御する。CPU113は、NVMeインタフェース111を介してライトコマンドが取得されると、ライトデータの不揮発性メモリ130への格納領域(書き込み先)を決定し、ライトコマンドに含まれた論理アドレスと格納領域である物理アドレスとを対応付ける。論理アドレスと物理アドレスとの対応は、LUT(アドレス変換情報)121として管理される。LUT121は、バッファメモリ120に格納されており、CPU113は必要に応じて読み出してRAM117等にキャッシュする。CPU113は、論理アドレスと物理アドレスとの対応が変更される度にLUT121を更新し得る。
RAM117は、CPU113による作業領域として機能する。RAM117は、LUT121を一時的に格納する。また、RAM117は、圧縮率変換情報117aを格納する。圧縮率変換情報117aは、エントロピーと圧縮率とが複数の異なるエントロピーについて対応付けられた情報である。
バッファメモリ120は、情報を一時的に保持するメモリ領域として機能する。バッファメモリ120は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリで構成される。また、バッファメモリ120は、コントローラ110内部に搭載されてもよいし、コントローラ110の外にコントローラ110とは独立して搭載されてもよい。バッファメモリ120には、LUT121が格納される。また、バッファメモリ120には、ライトデータを格納するための領域として、ライトバッファ(WrBuf)122が確保されている。バッファメモリ120には、ライトデータを圧縮した際のデータサイズを管理するための情報を格納する領域として、圧縮データ量管理領域123が確保される。
また、CPU113は、コマンド実行順決定部113aを有する。コマンド実行順決定部113aは、CPU113内の論理回路であっても良いし、CPU113で実行できるプログラムであっても良い。コマンド実行順決定部113aは、ライトコマンドに紐づけられた圧縮率推定情報を用いてライトデータの圧縮率を推定する。
コマンド実行順決定部113aは、NVMeインタフェース111で取得されたライトコマンドに含まれたエントロピー情報を圧縮率推定情報として特定してもよい。また、コマンド実行順決定部113aは、エントロピー情報が特定されたことに応じて、RAM117から圧縮率変換情報117aを読み出し、圧縮率変換情報117aにおけるエントロピー情報に対応する圧縮率を特定することで、ライトデータの圧縮率を推定してもよい。コマンド実行順決定部113aは、推定された圧縮率に応じて、不揮発性メモリ130に対する複数のライトコマンドの実行順を決定する。
例えば、コマンド実行順決定部113aは、ライトバッファ122上に、書き込み単位に相当するサイズ(例えば、ページサイズ、クラスタサイズ、又はブロックサイズなど)で記憶領域122aを確保する。コマンド実行順決定部113aは、推定された圧縮率に応じて、複数のライトコマンドの発行順にライトデータを記憶領域122aに配置した場合の圧縮データサイズの合計を圧縮データ量管理領域123に書いておく。コマンド実行順決定部113aは、圧縮データ量管理領域123に書かれた圧縮データサイズの合計に基づき、ライトデータが記憶領域122a内に収まるか否か判断する。コマンド実行順決定部113aは、記憶領域122a内に収まらないことに応じて、複数のライトコマンドの実行順をその発行順と異なる順番に決定する。
CPU113は、コマンド実行順決定部113aで決定された実行順に、ライトコマンドの実行を指示する。
メモリインタフェース118は、バスを介して不揮発性メモリ130と接続され、不揮発性メモリ130との通信を制御する。例えば、メモリインタフェース118は、CPU113からライトコマンドの実行が指示された際に、CPU113から指示されたライトコマンド及びライトデータを不揮発性メモリ130へ転送する。また、不揮発性メモリ130はメモリインタフェース118経由で受信したCPU113から指示されたライトコマンドの実行が完了した際、完了通知をメモリインタフェース118へ送信し、メモリインタフェース118は完了通知を不揮発性メモリ130から受ける。
CPU113は、メモリインタフェース118を介してCPU113が指示したライトコマンドに対する完了通知を受けると、ライトコマンドの実行完了を示す完了情報をNVMeインタフェース111経由でホストメモリ4におけるコマンド完了キュー4bに登録する。
バッファインタフェース112は、コントローラ110からバッファメモリ120へのアクセスを制御するコントローラであり、例えばDDR(Double Data Rate)でのバッファメモリ120へのアクセスを可能とするコントローラである。
ECC116は、CPU113による制御のもと、ライトデータを誤り訂正符号化する。ECC116は、ライトデータに基づいてパリティを生成し、パリティを含めたライトデータを生成する。
圧縮部114は、CPU113による制御のもと、不揮発性メモリ130へ書き込まれる前の(パリティを含む)ライトデータを圧縮する。圧縮部114は、可逆的な圧縮方式に従い、ライトデータを圧縮する。圧縮部114は、ハードウェアエンジン又はIPコア(Intellectual Property Core)として構成されてもよい。
伸張部115は、CPU113による制御のもと、不揮発性メモリ130から読み出された圧縮状態のリードデータを伸張する。伸張部115は、可逆的な圧縮方式に従い、圧縮状態のリードデータを伸張する。伸張部115は、ハードウェアエンジン又はIPコア(Intellectual Property Core)として構成されてもよい。
ECC116は、CPU113による制御のもと、伸張後のリードデータを誤り訂正復号する。ECC116は、リードデータからパリティを抽出し、パリティに基づきエラービットを訂正する。
次に、メモリシステム100を含む情報処理システム1の動作について図2を用いて説明する。図2は、メモリシステム100を含む情報処理システム1の動作を示すシーケンス図である。
ホスト2は、ライトデータをホストメモリ4上の特定のアドレスに転送する(SQ1)。このとき、ホスト2は、ライトデータの圧縮率推定情報(エントロピー情報)を求める(SQ2)。ホスト2は、例えば、ライトデータにおけるビット値の冗長度に基づいてエントロピー情報を求める。
例えば、図3に示すように、ホスト2は、ライトデータにおけるビット値“1”の出現確率を確認し、その確認結果に応じて複数段階(図3の場合、8段階)にランク付けして、エントロピー情報を求めてもよい。図3は、圧縮率推定情報(エントロピー情報)を求める処理を示す図である。なお、図3に示されるように、ビット値“1”の出現確率が1/2である場合は、圧縮不可であることを示すエントロピーの極大値ETincompが求められ得る。
図2に戻って、ホスト2は、SQ2で求めた圧縮率推定情報(エントロピー情報)を含めてライトコマンドを発行し(SQ3)、そのライトコマンドをホストメモリ4上のコマンド発行キュー4aにエンキューさせる。
その後、ホスト2は、メモリシステム100にアクセスし、NVMeインタフェース111のドアベルレジスタ111aに有効ビットを格納する。これにより、ホスト2は、メモリシステム100に対して、ライトコマンド実行の呼び出しを行う。
メモリシステム100は、ドアベルレジスタ111aに有効ビットが格納されるまで(SQ6で「No」)待機し、ドアベルレジスタ111aに有効ビットが格納されると(SQ6で「Yes」)、メモリシステム100がマスタとなって、ホストメモリ4のコマンド発行キュー4a・バッファ領域4cにアクセスし、ライトコマンド・ライトデータをそれぞれ取得する。メモリシステム100は、ライトコマンドに紐づけられた圧縮率推定情報(例えば、ライトコマンドに含まれたエントロピー情報)を用いてライトデータの圧縮率を推定する。メモリシステム100は、推定された圧縮率に応じて、不揮発性メモリ130に対する複数のライトコマンドの実行順を決定する(SQ7)。メモリシステム100は、決定された実行順に従って、ライトバッファ122からECC116を通してライトデータを不揮発性メモリ130に書き込む。メモリシステム100は、書き込みが完了したら、メモリシステム100がマスタとなって、ホストメモリ4のコマンド完了キュー4bにアクセスし、完了情報をコマンド完了キュー4bに登録する(SQ8)。ホスト2は、コマンド完了キュー4bに完了情報が登録されたことを確認すると、メモリシステム100にアクセスし、NVMeインタフェース111のドアベルレジスタ111bに有効ビットを格納する。これにより、ホスト2は、メモリシステム100に対して、完了情報の確認を通知する。また、ホスト2は、完了情報に対応するライトコマンドをコマンド発行キュー4aからデキューさせて破棄し、完了情報に対応するライトデータをバッファ領域4cから削除してもよい。
なお、SQ2の処理は、ホスト2のDMAC5がバッファ領域4cに格納された複数のライトデータを確認する際に、複数のライトデータについて一括して行われてもよい。
また、NVMe規格に準拠したライトコマンドでは、ライトデータが圧縮不可能かどうか(例えば、エントロピーが図3に示す極大値ETincompであるかどうか)を示すフィールドが1ビットしかない。このため、SQ3でライトコマンドにおける圧縮率推定情報を含めるフィールドは、NVMe規格に準拠したライトコマンドにおける未使用のフィールド(Reservedのフィールド)を利用してもよい。
次に、SQ7のコマンド実行順決定処理の詳細について図4及び図5を用いて説明する。図4は、コマンド実行順決定処理を示すフローチャートである。図5は、コマンド実行順決定処理を示す図である。図4に示すコマンド実行順決定処理は、例えば、コントローラ110のNVMeインタフェース111、コマンド実行順決定部113a、圧縮部114、バッファインタフェース112により実行される。
メモリシステム100は、バッファメモリ120のライトバッファ122上に、所定の書き込み単位に相当するサイズ(例えば、ページサイズ、クラスタサイズ、又はブロックサイズ)を有する記憶領域122aを確保する(S1)。メモリシステム100は、記憶領域122aに圧縮後のライトデータの書き込みを行う(S2)。メモリシステム100は、S1でライトバッファ122上に確保された記憶領域122aのうち、ライトデータが書き込まれた領域を除いた領域つまり不揮発性メモリ130へ書き込むためのデータが保存された領域を除いた領域である残り領域122a1のデータ量(残り領域122a1のサイズ)が所定量以下になるまで(S3で「No」)、S2をライトコマンドの発行順に行う。
例えば、図5の例では、kを任意の2以上の整数として、ライトデータWrDatak、ライトデータWrData(k+1)、ライトデータWrData(k+2)がライトコマンドの発行順に圧縮データ量管理領域123に書き込まれた状態を示している。
メモリシステム100は、S1でライトバッファ122上に確保された記憶領域122aにおける残り領域122a1のデータ量が所定量以下になると(S3で「Yes」)、ホストメモリ4上でライトコマンドに紐づけられた圧縮率推定情報を取得する(S4)。例えば、メモリシステム100は、ライトコマンドに含まれたエントロピー情報を圧縮率推定情報として取得してもよい。
メモリシステム100は、ライトコマンドの圧縮率を推定し、圧縮後のデータ量を算出する(S5)。メモリシステム100は、RAM117から圧縮率変換情報117aを読み出し、圧縮率変換情報117aを参照して圧縮率を推定してもよい。
例えば、圧縮率変換情報117aは、図6に示すようなデータ構造を有している。図6は、圧縮率変換情報117aのデータ構造を示す図である。圧縮率変換情報117aは、エントロピーと圧縮率とが複数の異なるエントロピーについて対応付けられた情報である。圧縮率変換情報117aは、エントロピー情報欄117a1及び圧縮率欄117a2を有する。圧縮率変換情報117aを参照することで、エントロピー情報に対応する圧縮率を特定することができる。エントロピー情報が「LV0」であれば、圧縮率が概ね「1/100」であると特定でき、エントロピー情報が「LV1」であれば、圧縮率が概ね「1/10」であると特定でき、・・・、エントロピー情報が「LV7」であれば、圧縮率が概ね「0」であると特定できる。
メモリシステム100は、圧縮率変換情報117aにおけるエントロピー情報に対応する圧縮率を特定することで、ライトデータの圧縮率を推定してもよい。メモリシステム100は、ライトデータの非圧縮状態のサイズに圧縮率を乗算することなどにより、圧縮後のライトデータのデータ量を算出してもよい。
メモリシステム100は、S5で算出されたライトデータのデータ量に応じて、圧縮後のライトデータが、ライトバッファ122上に確保された記憶領域122aにおける残り領域122a1に収まると予想できるか否かを判断する(S6)。
メモリシステム100は、ライトデータがライトバッファ122上に確保された記憶領域122aにおける残り領域122a1に収まらないと予想される場合(S6で「No」)、ライトバッファ122上に確保された記憶領域122aにおける残り領域122a1にはライトデータを格納せず、次のライトコマンドがあるか判断する(S10)。メモリシステム100は、次のライトコマンドがあれば(S10で「Yes」)、次のライトコマンドについてS4以降を行い、次のライトコマンドがなければ(S10で「No」)、処理を終了する。
例えば、図5の例では、ライトデータWrData(k+3)がライトバッファ122上に確保された記憶領域122aにおける残り領域122a1に収まらないと予想される場合を例示している。
メモリシステム100は、ライトデータがライトバッファ122上に確保された記憶領域122aにおける残り領域122a1に収まると予想できる場合(S6で「Yes」)、ライトデータを圧縮し、圧縮後のライトデータのデータ量を求める(S7)。メモリシステム100は、S7で求めたデータ量に応じて、圧縮後のライトデータが実際に、ライトバッファ122上に確保された記憶領域122aにおける残り領域122a1に収まるか否かを判断する(S8)。
例えば、図5の例では、ライトデータWrData(k+3)の次のライトデータWrData(k+4)が残り領域122a1に収まると判断される場合を例示している。
メモリシステム100は、圧縮後のライドデータが実際に、ライトバッファ122上に確保された記憶領域122aにおける残り領域122a1に収まる場合(S8で「Yes」)、ライトデータを記憶領域122a(すなわち、残り領域122a1)に格納する(S9)。
メモリシステム100は、圧縮後のライドデータが実際に、ライトバッファ122上に確保された記憶領域122aにおける残り領域122a1に収まらない場合(S8で「No」)、残り領域122a1には何も書かずに、次のライトコマンドがあるか判断する(S10)。メモリシステム100は、次のライトコマンドがあれば(S10で「Yes」)、次のライトコマンドについてS4以降を行い、次のライトコマンドがなければ(S10で「No」)、処理を終了する。
このように、エントロピー情報を参照することで、ライトデータを実際に圧縮して収まらない確率は、比較的低くなる。更に、メモリシステム100の圧縮部114がエントロピー情報の算出で用いた圧縮方式と同じ圧縮方式を採用していれば、ライトデータを実際に圧縮して収まらない確率はより低くなる。その結果、複数のレベルに対応した複数のバッファ領域を含むバッファメモリを設けることなく、不揮発性メモリ130におけるライトデータの書き込みを効率化できる。
なお、エントロピー情報で示される通りの圧縮率で圧縮できない場合も考えられるが、圧縮率推定情報(エントロピー情報)と予測される圧縮率とが対応づけられた圧縮率変換情報117a(図6参照)を用いて圧縮率を予測することにより、ライトデータを実際に圧縮して収まらない確率を低減することができる。
以上のように、第1の実施形態では、メモリシステム100において、ライトコマンドに紐づけられた圧縮率推定情報(圧縮率のヒント)を用いてライトデータの圧縮率を推定し、推定された圧縮率に応じてライトコマンドの実行順を決定する。これにより、バッファメモリの容量増加を抑制しながら、不揮発性メモリ130におけるライトデータの書き込みを効率化できる。
なお、図4に示した方法以外でも、ライトコマンド群のエントロピー情報から期待される圧縮率ごとにライトコマンド群をクラスタリングし、クラスタごとに圧縮して書き込み単位に対応した記憶領域122aへ書き込んでゆく方法などもありうる。例えば、クラスタリングは、エントロピー情報から期待される圧縮率のレベルに応じてライトコマンド群を複数のサブグループに分類することで行うことが考えられる。ライトコマンド群を2つのサブグループに分類する場合、LV0〜LV3のエントロピー情報(図3参照)に紐づけられたライトコマンドを第1のサブグループに分類し、LV4〜LV7のエントロピー情報に紐づけられたライトコマンドを第2のサブグループに分類する。そして、まず、第1のサブグループに属するライトコマンドを記憶領域122aへライトコマンドの発行順に書き込んでいき、次に、第2のサブグループに属するライトコマンドを記憶領域122aへライトコマンドの発行順に書き込んでいく。これにより、ライトデータの圧縮率が近いライトコマンドをまとめて記憶領域122aへ書き込めるため、圧縮率のバラツキによる影響を低減しながらライトコマンドの実行順を決定できる。
(第2の実施形態)
次に、第2の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
次に、第2の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
第2の実施形態では、情報処理システム1iの構成が、図7に示すように、第1の実施形態と異なる。図7は、第2の実施形態にかかるメモリシステム100を含む情報処理システム1iの構成及び動作を示す図である。
情報処理システム1iは、中継装置200iをさらに有する。中継装置200iは、ホスト2iとメモリシステム100との間で両者と通信可能に接続され、ホスト2iとメモリシステム100との通信を中継する。中継装置200iは、接続網210i及び中継メモリ220iを有する。接続網210iは、エントロピー算出部211iを有する。すなわち、エントロピー情報は、ホスト2iで算出せずに、接続網210iで算出する。これに応じて、ホストコントローラ3iのDMAC5iは、エントロピー算出部5a(図1参照)を有しない。また、エントロピー情報を接続網210iのバッファとして機能する中継メモリ220i中でライトデータに紐付ける。このエントロピー情報を参照して、どの順番に圧縮して書きこんでゆけば良いかを決定する。
具体的には、メモリシステム100を含む情報処理システム1iは、次のように動作する。
ホスト2iからメモリシステム100のドアベルレジスタ111aに有効ビットを格納し、メモリシステム100にライトコマンドの取得を促す(SQ11)。メモリシステム100は、ホストメモリ4のコマンド発行キュー4aに接続網210i経由でアクセスし、ライトコマンドを取得する(SQ12)。接続網210iは、ホストメモリ4のバッファ領域4cにアクセスしてライトコマンドに対応したライトデータを取得して中継メモリ220iに格納するとともに、エントロピー算出部211iがライトデータに応じてエントロピーを算出し、算出結果をエントロピー情報として中継メモリ220iに格納する(SQ13)。このとき、接続網210iは、エントロピー情報をライトデータと紐付けて中継メモリ220iに格納する。
メモリシステム100は、ライトコマンドを取得したことに応じて、中継メモリ220iにアクセスし、ライトデータに紐づけられたエントロピー情報を取得する(SQ14)。メモリシステム100は、エントロピー情報に応じて、図4に示す方法と同様にコマンド実行順決定処理を行い、ライトコマンドの実行順を決定する(SQ15)。メモリシステム100は、SQ15で決定した順番で中継メモリ220i上のライトデータをロードし、圧縮して不揮発性メモリ130へ書き込む(SQ16)。
以上のように、第2の実施形態では、メモリシステム100において、ライトデータを介してライトコマンドに紐づけられた圧縮率推定情報(圧縮率のヒント)を用いてライトデータの圧縮率を推定し、推定された圧縮率に応じてライトコマンドの実行順を決定する。これによっても、バッファメモリの容量増加を抑制しながら、不揮発性メモリ130におけるライトデータの書き込みを効率化できる。
(第3の実施形態)
次に、第3の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態及び第2の実施形態と異なる部分を中心に説明する。
次に、第3の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態及び第2の実施形態と異なる部分を中心に説明する。
第1の実施形態及び第2の実施形態では、ライトデータの圧縮率を推定してライトコマンドの実行順を決定する場合について例示しているが、第3の実施形態では、図8に示すように、ライトデータを一度圧縮して実際の圧縮データサイズを求めてライトコマンドの実行順を決定する場合について例示する。図8は、第3の実施形態にかかるメモリシステム100jを含む情報処理システム1jの構成及び動作を示す図である。
情報処理システム1jでは、メモリシステム100jが、ライトデータを一度圧縮して実際の圧縮データサイズを求め、この圧縮データサイズを参照して、どの順番に圧縮して書きこんでゆけば良いかを決定する。例えば、メモリシステム100jは、ホスト2jから取得したライトデータをバッファメモリ120jに書き込む際に仮圧縮する。メモリシステム100jは、仮圧縮後のライトデータをバッファメモリ120jにおけるライトバッファ1220に格納するとともに、仮圧縮後のライトデータに応じて圧縮率を求めてバッファメモリ120jにおける圧縮率保存領域134へ格納する。
すなわち、メモリシステム100jにおけるバッファメモリ120jは、不揮発性メモリ130へ書き込むためのライトデータを一時的に保持するライトバッファ1221に加えて、仮圧縮されたライトデータを一時的に保持するためのライトバッファ1220を有する。また、バッファメモリ120jは、圧縮率を保存するための圧縮率保存領域124を有する。バッファメモリ120jでは、第1の実施形態に比べると、ライトバッファ1220及び圧縮率保存領域124に相当するバッファ容量の増加量があるが、複数のレベルに対応した複数のバッファ領域を含むバッファメモリを設ける場合に比べると大幅に少ない増加量で済む。
なお、圧縮率の推定を行わないため、ホストコントローラ3jのDMAC5jは、エントロピー算出部5a(図1参照)を有しない。
具体的には、メモリシステム100jを含む情報処理システム1jは、次のように動作する。
ホスト2jからメモリシステム100jのドアベルレジスタ111aに有効ビットを格納し、メモリシステム100jにライトコマンドの取得を促す(SQ21)。メモリシステム100jは、ホストメモリ4のコマンド発行キュー4aにアクセスし、ライトコマンドを取得する(SQ22)。メモリシステム100jは、ホストメモリ4のバッファ領域4cからライトデータを取得し、圧縮部114でライトデータを仮圧縮し、仮圧縮後のライトデータをバッファメモリ120jにおけるライトバッファ(WrBuf0)1220上に確保された記憶領域122aに格納する。それとともに、メモリシステム100jは、仮圧縮後のライトデータに応じて圧縮率を求めてバッファメモリ120jにおける圧縮率保存領域124に格納する。コントローラ110(コマンド実行順決定部113a)は、圧縮データ管理領域123に格納された情報(書き込み単位内に詰め込んだ圧縮データ量の総和の情報)と圧縮率保存領域124に格納された圧縮率とを読み出し、ライトコマンドの実行順を決定する(SQ15)。具体的には、図9に示すように、コントローラ110は、図4におけるS4〜S6が省略された処理を行い、ライトコマンドの実行順を決定する。
メモリシステム100jは、SQ25で決定した順番でライトコマンドに対応するライトデータをライトバッファ(WrBuf0)1220からライトバッファ(WrBuf1)1221にコピーする。メモリシステム100jは、ライトバッファ1221からECC116を通して不揮発性メモリ130へライトデータを書き込む。
以上のように、第3の実施形態では、実際に圧縮しているため、ライトデータを確実に書き込み単位に収めることができ、不揮発性メモリ130におけるライトデータの書き込みを確実に効率化できる。
(第4の実施形態)
次に、第4の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態〜第3の実施形態と異なる部分を中心に説明する。
次に、第4の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態〜第3の実施形態と異なる部分を中心に説明する。
第3の実施形態では、圧縮可能かどうかにかかわらずにライトデータを一度圧縮してライトコマンドの実行順を決定する場合について例示しているが、第4の実施形態では、圧縮可能なときに限定してライトデータを圧縮してライトコマンドの実行順を決定する場合について例示する。なお、第4の実施形態におけるメモリシステム100を含む情報処理システム1の構成は、第1の実施形態と同様であってもよい。
具体的には、図2に示すSQ7のコマンド実行順決定処理の詳細は、図10に示すように、次の点で第1の実施形態と異なる。
メモリシステム100は、S1の後に、ライトコマンドのライトデータが圧縮不可能かどうかを示すフィールド(フィールド「07」)の値が0であるか否かを確認する(S11)。メモリシステム100は、フィールド「07」の値が0でない、すなわち1であれば(S11で「No」)、圧縮が不可能であるとして処理をS10へ進める。メモリシステム100は、フィールド「07」の値が0であれば(S11で「Yes」)、圧縮が可能であるとして、ライトデータを圧縮し、圧縮後のライトデータのデータ量を求め(S12)、S8以降の処理を行う。
以上のように、第4の実施形態にかかるメモリシステム100では、圧縮可能なときにライトデータを圧縮して不揮発性メモリ130に書き込む。これにより、不揮発性メモリ130に対するライトデータの書き込みを効率化できる。
(第5の実施形態)
次に、第5の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態〜第4の実施形態と異なる部分を中心に説明する。
次に、第5の実施形態にかかるメモリシステムについて説明する。以下では、第1の実施形態〜第4の実施形態と異なる部分を中心に説明する。
第4の実施形態では、書き込み単位に相当する記憶領域に収まるかどうか判断する対象が圧縮可能なライトデータである場合について例示しているが、第5の実施形態では、書き込み単位に相当する記憶領域に収まるかどうか判断する対象が圧縮可能なライトデータの他に圧縮不可能なライトデータも含まれる場合について例示する。
具体的には、図2に示すSQ7のコマンド実行順決定処理の詳細は、図11に示すように、次の点で第1の実施形態と異なる。
メモリシステム100は、S1の後に、ライトコマンドのライトデータが圧縮不可能かどうかを示すフィールド(フィールド「07」)の値が0であるか否かを確認する(S21)。メモリシステム100は、フィールド「07」の値が0でない、すなわち1であれば(S21で「No」)、圧縮が不可能であるとして、非圧縮のライトデータが記憶領域122aにおける残り領域122a1に収まるか否かを判断する(S22)。メモリシステム100は、非圧縮のライトデータが残り領域122a1に収まる場合(S22で「Yes」)、非圧縮のライトデータを記憶領域122a(すなわち、残り領域122a1)に格納する(S23)。メモリシステム100は、フィールド「07」の値が0であれば(S21で「Yes」)、圧縮が可能であるとして、ライトデータを圧縮し(S12)、圧縮後のライトデータが記憶領域122aにおける残り領域122a1に収まるか否かを判断する(S22)。メモリシステム100は、圧縮後のライトデータが残り領域122a1に収まる場合(S22で「Yes」)、圧縮後のライトデータを記憶領域122a(すなわち、残り領域122a1)に格納する(S23)。その後、S10の処理が行われる。
以上のように、第5の実施形態にかかるメモリシステム100では、第4の実施形態と同様に、圧縮可能なときにライトデータを圧縮して不揮発性メモリ130に書き込む。これにより、不揮発性メモリ130に対するライトデータの書き込みを効率化できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1,1i,1j 情報処理システム、100,100j メモリシステム、110 コントローラ、111 NVMeインタフェース、130 不揮発性メモリ1300i 中継装置。
Claims (9)
- 不揮発性メモリと、
それぞれが前記不揮発性メモリに対するライトデータの書き込みを指示する複数のライトコマンドを取得するインタフェースと、
前記ライトコマンドに紐づけられた圧縮率推定情報を用いて前記ライトデータの圧縮率を推定し、推定された圧縮率に応じて、前記不揮発性メモリに対する前記複数のライトコマンドの実行順を決定するコントローラと、
を備えたメモリシステム。 - 前記コントローラは、圧縮率推定情報と圧縮率とが複数の異なる圧縮率推定情報について対応付けられた圧縮率変換情報と前記圧縮率推定情報とを用いて前記ライトデータの圧縮率を推定する
請求項1に記載のメモリシステム。 - 前記インタフェースは、前記複数のライトコマンドをホストから中継装置を経由して取得し、前記圧縮率推定情報を前記中継装置から取得し、
前記コントローラは、前記中継装置から取得された圧縮率推定情報を用いて前記ライトデータの圧縮率を推定する
請求項1に記載のメモリシステム。 - 前記コントローラは、推定された圧縮率に応じて、前記複数のライトコマンドの発行順に前記ライトデータを書き込み単位に相当する記憶領域に配置した場合に前記ライトデータが前記記憶領域内に収まるか否か判断し、前記記憶領域内に収まらないことに応じて、前記複数のライトコマンドの実行順を前記発行順と異なる順番に決定する
請求項1から3のいずれか1項に記載のメモリシステム。 - 前記コントローラは、バッファメモリを有し、
前記記憶領域は、前記バッファメモリ内に確保された記憶領域である
請求項4に記載のメモリシステム。 - 前記圧縮率推定情報は、前記ライトデータのエントロピーである
請求項1から5のいずれか1項に記載のメモリシステム。 - 不揮発性メモリと、
それぞれが前記不揮発性メモリに対するライトデータの書き込みを指示する複数のライトコマンドを取得するインタフェースと、
前記ライトデータを圧縮して圧縮率を求め、求められた圧縮率に応じて、前記不揮発性メモリに対する前記複数のライトコマンドの実行順を決定するコントローラと、
を備えたメモリシステム。 - ホストと、
前記ホストと接続可能である請求項1から7のいずれか1項に記載のメモリシステムと、
を備えた情報処理システム。 - 前記ホストと前記メモリシステムとの接続を中継する中継装置をさらに備えた
請求項8に記載の情報処理システム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019050997A JP2020154525A (ja) | 2019-03-19 | 2019-03-19 | メモリシステムおよび情報処理システム |
US16/549,371 US10826526B2 (en) | 2019-03-19 | 2019-08-23 | Memory system and information processing system |
TW109103671A TWI733324B (zh) | 2019-03-19 | 2020-02-06 | 記憶體系統 |
CN202010145564.XA CN111722794A (zh) | 2019-03-19 | 2020-03-05 | 存储系统 |
US17/039,893 US11218163B2 (en) | 2019-03-19 | 2020-09-30 | Memory system and information processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019050997A JP2020154525A (ja) | 2019-03-19 | 2019-03-19 | メモリシステムおよび情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020154525A true JP2020154525A (ja) | 2020-09-24 |
Family
ID=72514590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019050997A Pending JP2020154525A (ja) | 2019-03-19 | 2019-03-19 | メモリシステムおよび情報処理システム |
Country Status (4)
Country | Link |
---|---|
US (2) | US10826526B2 (ja) |
JP (1) | JP2020154525A (ja) |
CN (1) | CN111722794A (ja) |
TW (1) | TWI733324B (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 (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11137921B2 (en) * | 2019-03-05 | 2021-10-05 | Samsung Electronics Co., Ltd. | Data storage device and system |
US20220107754A1 (en) * | 2020-10-07 | 2022-04-07 | Alibaba Group Holding Limited | Apparatus and method for data packing and ordering |
CN112532592B (zh) * | 2020-11-12 | 2023-04-07 | 湖南强智科技发展有限公司 | 一种数据传输方法、装置及计算机存储介质 |
US11614896B2 (en) * | 2021-08-06 | 2023-03-28 | Western Digital Technologies, Inc. | UFS out of order hint generation |
US20230214157A1 (en) * | 2021-12-30 | 2023-07-06 | Micron Technology, Inc. | NVMe COMMAND COMPLETION MANAGEMENT FOR HOST SYSTEM MEMORY |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5509134A (en) * | 1993-06-30 | 1996-04-16 | Intel Corporation | Method and apparatus for execution of operations in a flash memory array |
JP2831602B2 (ja) * | 1995-01-13 | 1998-12-02 | 富士通株式会社 | 圧縮データ管理装置及び圧縮データ管理方法 |
JP4049297B2 (ja) * | 2001-06-11 | 2008-02-20 | 株式会社ルネサステクノロジ | 半導体記憶装置 |
US8347023B2 (en) * | 2008-10-06 | 2013-01-01 | Marvell World Trade Ltd. | Compression based wear leveling for non-volatile memory |
CN101916228B (zh) * | 2010-08-17 | 2012-06-06 | 中国人民解放军国防科学技术大学 | 带有数据压缩功能的闪存转换层及实现方法 |
JP5712609B2 (ja) * | 2010-12-24 | 2015-05-07 | 富士通株式会社 | データ処理装置及びデータ記録方法 |
KR20120090194A (ko) * | 2011-02-07 | 2012-08-17 | 삼성전자주식회사 | 데이터 처리 장치 및 이를 포함하는 데이터 처리 시스템 |
KR101720101B1 (ko) * | 2011-03-18 | 2017-03-28 | 삼성전자주식회사 | 메모리 시스템에 데이터를 쓰는 쓰기 방법 및 메모리 시스템의 데이터 쓰기 방법 |
KR101730497B1 (ko) * | 2011-11-04 | 2017-04-27 | 삼성전자 주식회사 | 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치 |
JP5674634B2 (ja) | 2011-12-28 | 2015-02-25 | 株式会社東芝 | コントローラ、記憶装置およびプログラム |
JP5942781B2 (ja) * | 2012-04-16 | 2016-06-29 | ソニー株式会社 | 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法 |
US9148172B2 (en) | 2012-06-22 | 2015-09-29 | Micron Technology, Inc. | Data compression and management |
CN103677658A (zh) * | 2013-07-19 | 2014-03-26 | 记忆科技(深圳)有限公司 | 固态硬盘控制器及固态硬盘的数据处理方法 |
US9093110B2 (en) * | 2013-07-30 | 2015-07-28 | Dell Products, Lp | System and method for calculating data compression ratio without writing data to media |
KR101468336B1 (ko) | 2013-11-25 | 2014-12-04 | 성균관대학교산학협력단 | 데이터 압축률 예측 기법에 기반한 데이터 분산 저장 방법, 이를 이용한 저장 장치 및 시스템 |
TWI537958B (zh) * | 2014-02-21 | 2016-06-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI540582B (zh) * | 2014-07-10 | 2016-07-01 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
US9858196B2 (en) * | 2014-08-19 | 2018-01-02 | Qualcomm Incorporated | Power aware padding |
US20160092361A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Caching technologies employing data compression |
JP2017027388A (ja) | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステムおよび不揮発性メモリの制御方法 |
US10474385B2 (en) * | 2016-02-23 | 2019-11-12 | Google Llc | Managing memory fragmentation in hardware-assisted data compression |
US10169248B2 (en) | 2016-09-13 | 2019-01-01 | International Business Machines Corporation | Determining cores to assign to cache hostile tasks |
US10459657B2 (en) * | 2016-09-16 | 2019-10-29 | Hewlett Packard Enterprise Development Lp | Storage system with read cache-on-write buffer |
KR102611638B1 (ko) * | 2016-09-27 | 2023-12-08 | 삼성전자주식회사 | 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템 |
KR20180069960A (ko) * | 2016-12-15 | 2018-06-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
JP2018160059A (ja) | 2017-03-22 | 2018-10-11 | 東芝メモリ株式会社 | メモリコントローラ |
US10097202B1 (en) | 2017-06-20 | 2018-10-09 | Samsung Electronics Co., Ltd. | SSD compression aware |
-
2019
- 2019-03-19 JP JP2019050997A patent/JP2020154525A/ja active Pending
- 2019-08-23 US US16/549,371 patent/US10826526B2/en active Active
-
2020
- 2020-02-06 TW TW109103671A patent/TWI733324B/zh active
- 2020-03-05 CN CN202010145564.XA patent/CN111722794A/zh active Pending
- 2020-09-30 US US17/039,893 patent/US11218163B2/en active Active
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 |
Also Published As
Publication number | Publication date |
---|---|
US11218163B2 (en) | 2022-01-04 |
TW202036567A (zh) | 2020-10-01 |
US10826526B2 (en) | 2020-11-03 |
US20200304142A1 (en) | 2020-09-24 |
TWI733324B (zh) | 2021-07-11 |
US20210021280A1 (en) | 2021-01-21 |
CN111722794A (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020154525A (ja) | メモリシステムおよび情報処理システム | |
US10936251B2 (en) | I/O device and computing host interoperation | |
JP6163532B2 (ja) | メモリシステムコントローラを含む装置 | |
JP6045567B2 (ja) | 不揮発性記憶のための可変オーバープロビジョニング | |
US10025735B2 (en) | Decoupled locking DMA architecture | |
US9235346B2 (en) | Dynamic map pre-fetching for improved sequential reads of a solid-state media | |
US10572391B2 (en) | Methods and apparatus for implementing a logical to physical address mapping in a solid state drive | |
KR101269366B1 (ko) | 메모리 시스템 및 메모리 시스템의 제어 방법 | |
WO2017054756A1 (zh) | 一种数据处理方法、装置及闪存设备 | |
US11372753B2 (en) | Memory system and method | |
US20110231598A1 (en) | Memory system and controller | |
CN102915208A (zh) | 信息处理装置、半导体存储装置及半导体存储装置的控制方法 | |
US10346052B2 (en) | Memory system with priority processing and operating method thereof | |
US20140281171A1 (en) | Lock-Free Communication Storage Request Reordering | |
TWI611410B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
WO2015114829A1 (ja) | 情報処理装置 | |
US20240070062A1 (en) | Nonvolatile memory, memory system, and control method of nonvolatile memory | |
WO2019148757A1 (zh) | 非易失随机访问存储器及其提供方法 | |
US20220300185A1 (en) | Storage device, storage system, and control method | |
CN114510435A (zh) | 编程命令处理方法与装置 | |
US11928353B2 (en) | Multi-page parity data storage in a memory device | |
US20240061589A1 (en) | Code rate as function of logical saturation | |
CN114238158A (zh) | 数据存储管理方法和存储装置 | |
CN117724997A (zh) | 具有改进的格式化处理的固态驱动器 |