JP6692448B2 - ストレージ装置及びストレージ装置の制御方法 - Google Patents

ストレージ装置及びストレージ装置の制御方法 Download PDF

Info

Publication number
JP6692448B2
JP6692448B2 JP2018549643A JP2018549643A JP6692448B2 JP 6692448 B2 JP6692448 B2 JP 6692448B2 JP 2018549643 A JP2018549643 A JP 2018549643A JP 2018549643 A JP2018549643 A JP 2018549643A JP 6692448 B2 JP6692448 B2 JP 6692448B2
Authority
JP
Japan
Prior art keywords
data
compression method
lossless compression
storage area
storage device
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.)
Active
Application number
JP2018549643A
Other languages
English (en)
Other versions
JPWO2018087795A1 (ja
Inventor
水島 永雅
永雅 水島
昌弘 鶴谷
昌弘 鶴谷
政弘 新井
政弘 新井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2018087795A1 publication Critical patent/JPWO2018087795A1/ja
Application granted granted Critical
Publication of JP6692448B2 publication Critical patent/JP6692448B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、ストレージ装置及びストレージ装置の制御方法に関する。
従来、例えば、磁気ディスクや光ディスク等のランダムアクセスが可能な不揮発性記憶媒体がストレージ装置のデータ記憶媒体として用いられている。特に最近では、小型ディスクドライブを多数備えるストレージ装置が主流となっている。
また、近年の半導体技術の進歩に伴って、一括消去可能な不揮発性半導体メモリが開発されている。このような不揮発性半導体メモリとしては、例えば、フラッシュメモリを例示できる。フラッシュメモリを記憶媒体とするストレージ装置は、小型ディスクドライブを多数備えるストレージ装置に比べて、省電力であったり、アクセス時間等が高速であったりすると考えられている。
一方、フラッシュメモリブロックの消去回数には限度(寿命)がある。寿命に達したブロックは消去に失敗し、以後の消去ができなくなる。そのブロック内のページは未書き込みページにすることができない。すなわち、寿命到達ブロック数が増えるにつれて、未書込みページの枯渇が解消できなくなり、いずれストレージ装置は使用不能となる。
フラッシュメモリを長期間使用できるようにするには、フラッシュメモリのブロック消去頻度を低減させ、寿命到達を遅らせる必要がある。つまり、未書き込みページが消費される速度を低下するために、フラッシュメモリに書くべきデータ量を削減することが求められる。
本技術分野の背景技術として国際公開第2015/128955号がある。この公報には、「記憶デバイスは、複数の論理領域で構成された記憶媒体に基づく論理空間を上位装置に提供し、各論理領域について、基準データ範囲が記憶媒体に存在する。記憶デバイスは、ライト先論理アドレスが属するライト先論理領域に対応した基準データ範囲から基準データをリードし、基準データである第1データと、ライトデータに基づくデータとライトデータとのいずれかである第2データとの排他的論理和である差分データを作成する。記憶デバイスは、差分データを圧縮することにより圧縮差分データを作成し、圧縮差分データを記憶媒体にライトし、圧縮差分データがライトされた範囲である差分データ範囲をライト先論理領域に関連付ける。」と記載されている(要約参照)。
国際公開第2015/128955号
特許文献1に記載の技術のようにデータ圧縮する技術においては、できるだけ圧縮率(圧縮後サイズを圧縮前サイズで割った値)を小さくできることが望ましい。圧縮率が小さいほどフラッシュメモリへの格納データ量を削減することができるからである。しかし、圧縮率を小さくできる圧縮方式は、圧縮しにくいデータに対して、圧縮処理や伸張処理の速度が遅くなる問題がある。圧縮処理や伸張処理の速度が遅くなると、ストレージ装置のライト性能やリード性能も遅くなる。そのため、特許文献1に記載の技術のように、従来は、どのようなデータに対しても圧縮処理や伸張処理の速度が十分速い代わりに圧縮率が比較的大きくなる圧縮方式を適用していた。
そこで、本発明の一態様は、フラッシュメモリへのデータ書き込み速度及びフラッシュメモリからのデータ読み出し速度を保証しつつ、フラッシュメモリが保持するデータの圧縮率を小さくし、ひいてはフラッシュメモリの長寿命化を図ることを目的とする。
上記課題を解決するために本発明の一態様は以下の構成を採用する。記憶領域を提供するフラッシュメモリと、前記記憶領域に対するデータの書き込み及び読み出しを制御するコントローラと、前記記憶領域に書き込むデータを一時的に記憶するバッファメモリと、を含むストレージ装置であって、前記コントローラは、前記フラッシュメモリへのアクセス性能に基づいて、第1可逆圧縮方式と第2可逆圧縮方式の一方を選択し、前記選択した一方によってデータを圧縮して前記記憶領域に書き込むことを決定し、前記第1可逆圧縮方式は、前記第2可逆圧縮方式より圧縮率が小さく、かつ前記第2可逆圧縮方式より圧縮速度が低い、ストレージ装置
本発明の一態様は、フラッシュメモリへのデータ書き込み速度及びフラッシュメモリからのデータ読み出し速度を保証しつつ、フラッシュメモリが保持するデータの圧縮率を小さくし、ひいてはフラッシュメモリの長寿命化を図ることができる。
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
実施例1におけるフラッシュメモリモジュールの動作の概要例を示す説明図である。 実施例1におけるフラッシュメモリモジュールを搭載した計算機システムの構成例を示すブロック図である。 実施例1におけるフラッシュメモリモジュールの構成例を示すブロック図である。 実施例1における2つの圧縮方式の特性の比較結果の一例である。 実施例1におけるリクラメーション動作の一例を示す説明図である。 実施例1におけるライトバッファの使い方の一例を示す説明図である。 実施例1における配分比テーブルの一例である。 実施例1におけるライト/リードコマンド処理の一例を示すフローチャートである。 実施例1における変更評価テーブルの一例である。 実施例1におけるフラッシュメモリに格納されたデータの平均リード性能を算出する原理の一例を示すグラフである。 実施例1におけるリクラメーション処理の一例を示すフローチャートである。
図1は、本実施形態のFM(フラッシュメモリ)モジュールの動作の概要例を示す説明図である。本実施形態のFMモジュール100は、例えば、記憶領域を提供するフラッシュメモリ107と、記憶領域に対するデータの書き込み及び制御するメモリコントローラ103と、記憶領域書き込むデータを一時的に記憶するバッファメモリとして機能するDRAM106と、を含む。メモリコントローラ103は、例えば、第1可逆圧縮方式によるデータの圧縮及び伸張を実行する第1圧縮伸張回路104と、第2可逆圧縮方式によるデータの圧縮及び伸張を実行する第2圧縮伸張回路105と、を含む。第1可逆圧縮方式は、第2可逆圧縮方式より圧縮率が小さく、かつ第2可逆圧縮方式より圧縮速度及び伸張速度が低い。
メモリコントローラ103は、フラッシュメモリ107にデータを書き込む際に、フラッシュメモリ107へのアクセス性能に基づいて、第1可逆圧縮方式と第2可逆圧縮方式の一方を選択して、選択した一方によってデータを圧縮してフラッシュメモリ107の記憶領域に書き込む。
具体的には、例えば、メモリコントローラ103は、上位装置からデータの書き込み要求を受信した際に、バッファメモリの空き領域の大きさをチェックする。メモリコントローラ103は、例えば、バッファメモリの空き領域が大きいほど、第1可逆圧縮方式を高い割合で選択する。これにより、メモリコントローラ103は、フラッシュメモリ107へのデータ書き込み速度を保証しつつ、フラッシュメモリ107が保持するデータの圧縮率を小さくすることができる。
また、例えば、メモリコントローラ103は、フラッシュメモリ107に既に第1可逆圧縮方式又は第2可逆圧縮方式の一方で圧縮された第1データが書き込まれている場合において、フラッシュメモリ107に書き込まれているデータの読み出し速度に基づいて、第1データを伸張して他方の圧縮方式で圧縮してフラッシュメモリ107の記憶領域に再度書き込む圧縮方式変更、を実行するか否かを決定する。
第1データが第1可逆圧縮方式で圧縮されている場合、メモリコントローラ103は、例えば、フラッシュメモリ107に書き込まれているデータの平均読み出し速度が所定値未満であり、かつ圧縮方式変更を行った場合における伸張速度の改善度を、圧縮方式変更を行った場合における圧縮率の悪化度で割った商、である改善コストが所定の条件を満たすと判定すれば、圧縮方式変更を実行することを決定する。
また、第1データが第2可逆圧縮方式で圧縮されている場合、メモリコントローラ103は、例えば、フラッシュメモリ107に書き込まれているデータの平均読み出し速度が所定値以上であると判定すれば、圧縮方式変更を実行することを決定する。
これにより、メモリコントローラ103は、フラッシュメモリ107からのデータ読み出し速度を保証しつつ、フラッシュメモリ107が保持するデータの圧縮率を小さくすることができる。
[1]本発明を適用するストレージシステムの構成
図2は、計算機システムの構成例を示すブロック図である。計算機システムは、例えば、ストレージ装置900と、第1のホスト921と、第2のホスト922(以降、第1のホスト921及び第2のホスト922を総称して単にホストと呼ぶ。)と、管理端末920と、SAN(Storage Area Network)910と、を含む。
ストレージ装置900は、ホストから送信されたコマンドを解釈して、ストレージ装置900の記憶領域内のデータのリード/ライトを実行する。ストレージ装置900は、例えば、第1のホストI/F(Interface)931、第2のホストI/F932(以降、第1のホストI/F931及び第2のホストI/F932を総称して単にホストI/Fと呼ぶ。)、第1のストレージI/F951及び第2のストレージI/F952(以降、第1のストレージI/F951及び第2のストレージI/F952を総称して単にストレージI/Fと称する。)、保守I/F930、CPU941、メモリ942、コネクタ961〜964、及びフラッシュメモリモジュール(以降、FMモジュールとも称する。)100を含む。
ホストI/Fは、ホストからのデータや制御コマンドなどを受け付けるインタフェースである。また、ストレージI/Fは、FMモジュール100にデータや制御コマンドを送信するインタフェースである。また、保守I/F930は、管理端末920に接続され、管理端末920からの管理や保守に関する制御コマンド等を受け付けるインタフェースである。
CPU(Central Processing Unit)941は、プロセッサを含み、演算処理装置として機能し、メモリ942に記憶されている各種プログラムや演算パラメータ等にしたがって、ストレージ装置900全体の動作を制御する機能を有する。具体的に、CPU941は、例えば、ストレージ装置900とホストとの間のユーザデータの入出力(データI/O)を処理し、FMモジュール100にユーザデータをライトするためのライトコマンドをFMモジュール100に発行したり、FMモジュール100からユーザデータをリードするためのリードコマンドをFMモジュール100に発行したりする。
メモリ942は、例えば、各種プログラムや演算パラメータ等の他、制御情報や管理情報、また、FMモジュール100にライトするユーザデータや、FMモジュール100からリードしたユーザデータを一時的に格納する。
図2は、ストレージ装置900にFMモジュール100が6つ備えられている構成例を示しているが、FMモジュール100の数はかかる例に限定されない。FMモジュール100は、コネクタ961〜964を介してストレージI/Fと接続される。また、コネクタ961〜964を介してホストから受け付けられたデータ及び各制御コマンドがFMモジュール100に書き込まれる。FMモジュール100の構成例については、図3を用いて後述する。なお、本実施形態では、FMモジュール100をストレージ装置900と一体とした構成としているが、かかる例に限定されず、FMモジュール100をストレージ装置900とは別体の装置であってもよい。
ホストは、SANを介してストレージ装置900と接続され、ストレージ装置900にデータのリード/ライト要求を送信する。また、ホストは、例えば、CPU及びメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータ、ワークステーション、又はメインフレームなどである。ホストとストレージ装置900との通信において、例えば、SCSI(Small Computer System Interface)などのブロックプロトコルが用いられる。また、ホストは、例えば、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを含む。
管理端末920は、CPU及びメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータ、ワークステーション、又はメインフレームなどである。CPUは、演算処理装置として機能し、メモリに記憶されているプログラムや演算パラメータ等にしたがって、管理端末920の動作を制御する。また、管理端末920は、例えば、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置と、を含み、オペレータ等の入力に応じてストレージ装置900等を管理する装置である。
図2では、ホスト及びFMモジュール100を接続するコネクタは2つずつ示されている例が記載されているが、その数はかかる例に限定されない。同様に、各コネクタ及びインタフェースの規格は特定のものに限定されない。例えば、SAN910に適用される代表的な規格として、FC(Fibre Channel)、SCSI、iSCSI(internet Small Computer System Interface)、SAS(Serial Attached SCSI)などを例示できる。なお、計算機システムはSAN910を含まなくてもよく、計算機システムにおけるホストとFMモジュール100との接続形態は、DAS(Direct Attached Storage)であってもよい。
[2]フラッシュメモリの特徴と扱い方
次に、FMモジュール100の記憶媒体であるフラッシュメモリの特徴と扱い方について説明する。フラッシュメモリは、データを書き込んでから長い時間が経つと、データ誤りが徐々に増加し、誤り訂正符号(ECC)を用いても訂正できなくなってしまう。そこで、データを書き込んでから一定時間が経過したページからデータを読み出して誤りを訂正し、別の未書き込みページに移動し、元のデータを記録しているページを無効化する。この動作はリフレッシュと呼ばれる。
データ書き換えやリフレッシュ動作に伴って未書込みページは減っていく。フラッシュメモリは未書き込みページを作るために消去と呼ばれる動作をサポートする。未書込みページが枯渇した場合には、ブロック内のページを全て無効化された状態にし、当該ブロックを消去して新たな未書込みページを生成する。この動作はリクラメーションと呼ばれる。
フラッシュメモリは、最小消去単位が最小書き込み単位に比べて大きいという特徴を有する。具体的に、フラッシュメモリにおいては、1つのブロック内に複数(例えば512個)のページが設けられており、ブロック単位でデータが消去され、ページ単位でデータの読み書きが実行される。ページのサイズは例えば16KBバイトである。フラッシュメモリは、多数のページ(例えば100万個)を含み、各ページにはアドレスが付されている。
フラッシュメモリは、ページに記録されたデータを直接的に上書きすることができないという特徴を有する。ページに記録されたデータを書き換える場合、当該ページを含むブロック内に記憶している有効な他のデータを別のブロックに退避させて、元のブロックを消去する。そして、消去したブロックに新しいデータをページ単位で書き込むことによりデータの書き換えを行う。
このように、フラッシュメモリにおけるデータの書き換え処理では、ブロック単位のデータの消去が伴う。しかしながら、フラッシュメモリの1ブロック分のデータ消去にかかる時間は、1ページ分のデータを書き込むのに要する時間と比べて長い時間がかかる。したがって、1ページ分のデータを書き換えるために毎回1ブロック分のデータ消去を実行すると、フラッシュメモリのデータ書き換え性能が低下してしまう。つまり、データが記録されていないブロックが常に存在する状態を維持するために、フラッシュメモリからのデータの消去が、例えば、ホストからのリード/ライト要求のいずれに対する処理も実行していないポストプロセス時に実行されることが望ましい。
通常、フラッシュメモリに対してデータの書き換えを行う場合には、データを書き換えるごとにブロックのデータを消去することは行われない。通常、データが記録されていない未使用のページにデータを追記し、書き換え前のデータを記録しているページを無効化(ホスト等の上位装置からの参照を不可とする処理)する方法が採用される。つまり、ホスト等の上位装置からストレージ装置900にアクセスするためのデータ参照アドレスと、そのデータを記録するページのアドレスとの対応関係は動的に変化する。
しかし、データの書き換え処理が度重なって実行されると、フラッシュメモリ内の未使用領域が枯渇してしまうため、フラッシュメモリに書き込まれている無効データ(書き換えた後の旧データなど)を消去して、記憶領域を再利用可能な状態にする必要が生じる。そこで、旧データを含むブロック内の有効なデータのみを未使用領域にコピーし、コピー元のブロックを消去して未使用領域として再生するブロック再生処理を実行する。この処理はリクラメーションと呼ばれ、フラッシュメモリのデータを高速に書き換えるには必須の処理であり、特に無効データが多くなったブロックを優先して実行される。
一方、フラッシュメモリは、ブロックを消去する回数に制限があるという特徴を有する。例えば、1ブロック当たり3000回までの消去回数が保証される。この場合、データの書き換えが1つのブロックに集中して、当該ブロックの消去回数が保証回数を超えると、データ消去ができなくなることがあり、そのブロックは以降使用不能となってしまい、使用可能なブロック数が減少するという問題がある。そこで、特定ブロックに対する消去処理が集中しないように、消去回数の多いブロックから少ないブロックに格納データを移動するなどして消去回数の平準化処理を行う必要がある。
また、フラッシュメモリは、一度書き込みしたページについては、データを保持しておくだけでも時間経過とともにデータエラーが増加していくという特徴を有する。データエラーによるデータ損失を回避するために、記録するデータには誤り訂正符号(ECC:Error Correction Code)に基づくパリティがあらかじめ付加されている。書き込み後一定時間を経過したデータを読み出し、データエラーが少ないうちに当該パリティを用いてそれを訂正して、訂正後のデータを別ページに移動するリフレッシュ処理が行われる。なお、この処理が実行される場合にも、消去回数を平準化したり、性能に対する影響を考慮したりする必要がある。
このように、フラッシュメモリを記憶媒体として用いる場合には、データが記録されていないブロックが常に存在する状態を維持するために、また、消去回数を平準化したりするために、上位装置に提供する論理アドレスと実際の記憶領域の物理アドレスとを動的に対応づけ、データの書き込みの際に論理アドレスから物理アドレスへの変換処理を行う。すなわち、上位装置に提供する論理アドレスと記憶領域上の物理アドレスとの対応を逐次変更することにより、上位装置は、論理アドレス空間にデータを書き込めばよく、データ書き込み時における未使用領域への追記に伴う物理アドレスの変更を意識しなくてもよいように管理する。
[3]本発明を適用するFMモジュールの構成
図3は、FMモジュール100の構成例を示すブロック図である。FMモジュール100は、例えば、ストレージI/F102、メモリコントローラ103、複数のチップを含む1以上のNAND型フラッシュメモリ(以降、FMまたはフラッシュメモリとも称する。)107、及び揮発性のメモリであるDRAM(Dynamic Random Access Memory)106を含む。メモリコントローラ103は、例えば、第1圧縮伸張回路104と第2圧縮伸張回路105とを含む。
メモリコントローラ103は、例えば、マイクロプロセッサを含み、ストレージI/F102、フラッシュメモリ107、及びDRAM106と接続される。マイクロプロセッサは、例えば、ストレージI/F102を介して受信したリード/ライトコマンドの内容解釈、リード/ライトデータの送受信、第1圧縮伸張回路104及び第2圧縮伸張回路105を用いたデータの圧縮及び伸張、並びにフラッシュメモリ107とDRAM106との間のデータ転送等を実行する。
ストレージI/F102は外部の装置等と接続するためのインタフェース機構であり、外部から発行されたライトコマンドによってユーザデータを外部から受信したり、外部から発行されたリードコマンドによってユーザデータを外部に送信したりする。
FMモジュール100は、フラッシュメモリに格納するデータを可逆圧縮技術によって圧縮することにより、フラッシュメモリへの書き込みデータ量を削減する。本実施例では、FMモジュール100は、GZIP方式とLZ77方式の2種類の可逆圧縮方式を用いる例を説明する。両方式の特徴は次章で説明する。
第1圧縮伸張回路104は、例えば、メモリコントローラ103内にハードウェア(論理回路)として実装された演算器である。第1圧縮伸張回路104は、フラッシュメモリ107に格納するデータ量を削減するため、GZIP方式によって平文状態のデータを可逆的に圧縮し、圧縮状態のデータを生成する。また、第1圧縮伸張回路104は、GZIP方式によって圧縮されたデータを伸張して、元の平文状態のデータを生成する。
第2圧縮伸張回路105は、例えば、メモリコントローラ103内にハードウェア(論理回路)として実装された演算器である。第2圧縮伸張回路105は、フラッシュメモリ107に格納するデータ量を削減するため、LZ77方式によって平文状態のデータを可逆的に圧縮し、圧縮状態のデータを生成する。また、第2圧縮伸張回路105は、LZ77方式によって圧縮されたデータを伸張して、元の平文状態のデータを生成する。
DRAM106は、外部から受信したライトデータを一時的に格納する。また、外部へ送信するリードデータを一時的に格納する。また、DRAM106は、フラッシュメモリ107にライトするデータを一時的に格納するライトバッファとして機能する。また、DRAM106は、フラッシュメモリ107からリードしたデータを一時的に格納するリードバッファとして機能する。また、DRAM106は、第1圧縮伸張回路104及び第2圧縮伸張回路105により圧縮及び伸張するデータの転送元、並びに圧縮及び伸張の結果データの転送先として機能する。
[4]2つの圧縮方式の特徴と性能特性
FMモジュール100の第2圧縮伸張回路105に適用されるLZ77方式(以下、第2方式とも呼ぶ)は、1977年にレンペル(Lempel)及びジフ(Ziv)によって開発された、最も基本的な可逆データ圧縮方式である。LZ77方式の原理はスライド辞書型圧縮である。LZ77方式は、圧縮対象の文字列ストリームの先頭から末尾に向かってポインタを移動させる。LZ77方式は、その際に、ポインタから先頭方向の所定範囲(スライド辞書)の中で、そのポインタから始まる文字列に最も長く一致するものを探す。そして、LZ77方式は、その文字列をコピー記号に変換することでデータ量を減らしていく。コピー記号とは、スライド辞書上の距離Jとコピー長さLを(L,J)と記号化したものである。
例えば、文字列ストリーム「ABCDEBCDAECDEBB」がLZ77方式を用いて圧縮された場合、圧縮後の文字列ストリームはコピー記号を用いて、「ABCDE(3,4)AE(4,8)B」と表される。「BCD」の3文字、及び「CDEB」の4文字がそれぞれコピー記号(3,4)、(4,8)に変換されている。このような変換により、L個分の文字情報量がLとJの2数値の情報量に減ることでデータ量が減少する。つまり、文字列のコピー長さLが長いほどデータ量の削減量が多い。LZ77方式は、圧縮も伸張も原理が簡単で、パイプライン化された論理回路として実装できるため、データパタンによらず一定のスループットで処理することができ、圧縮及び伸張処理の性能は安定している。
一方、FMモジュール100の第1圧縮伸張回路104に適用されるGZIP方式(以下、第1方式とも呼ぶ)は、LZ77方式にハフマン(Huffman)符号化を組み合わせて、さらにデータ量を削減できるようにした可逆データ圧縮方式である。ハフマン符号化は、文字や記号の出現頻度によって異なる長さの符号を割り当てる。すなわち、ハフマン符号化は、出現頻度が多いものほど短い符号に、出現頻度が少ないものほど長い符号に変換する。例えば、ある文字列ストリームにおける各文字の出現頻度がA=2、B=5、C=3、D=1、E=1である場合、2進数を用いてハフマン符号化により、当該各文字がA=110、B=0、C=10、D=1110、E=1111と置換される。
つまり、上述の例では、出現頻度が最大のBが1ビットで符号化され、出現頻度が最小のDとEが4ビットで符号化される。符号化する前の文字列ストリームには5種類の文字A〜Eが含まれ、5種類の文字は3ビット(8通り)で表現でき、かつ出現頻度の合計は12回(=2回+5回+3回+1回+1回)なので、符号化前の文字列ストリームのデータ量は、3ビット×12回=36ビットだった。ハフマン符号化の結果、文字列ストリームのデータ量は、3ビット×2回+1ビット×5回+2ビット×3回+4ビット×1回+4ビット×1回=25ビットに減ることが分かる。
本実施形態において、圧縮率とは圧縮後サイズと圧縮前サイズで割った値である。圧縮率100%は圧縮が全くできなかったことを意味する。GZIP方式は、ハフマン符号化を加えたことによりLZ77方式に比べて圧縮率をより小さくできる。しかし、ハフマン符号化は、入力データの内容全てに対して出現頻度の統計をとり終わるまで変換処理を開始できないため、入力データ量が多いほど処理時間が長くなるという短所がある。
したがって、GZIP方式の前半部分のLZ77圧縮においてよく圧縮できた場合は、後半部分のハフマン符号化への入力データ量が少ないため処理時間が短くなる(すなわちスループットが高くなる)が、前半部分のLZ77圧縮においてあまり圧縮できなかった場合は、後半部分のハフマン符号化への入力データ量が多いため処理時間が長くなる(すなわちスループットが低くなる)。
GZIP方式の伸張処理で、ハフマン符号化データをLZ77圧縮データに戻す復号処理においても同様の性能特性が見られる。すなわち、よく圧縮できた場合は、復号処理すべきデータ量が少なく、処理時間が短くなる(すなわちスループットが高くなる)が、あまり圧縮できなかった場合は、復号処理すべきデータ量が多く、処理時間が長くなる(すなわちスループットが低くなる)。
図4は、第1方式と第2方式それぞれの特性を示すテーブルである。列210は第1方式でのデータ圧縮率を示す。図4の例では、簡単のため、列210は、第1方式で圧縮したデータの圧縮率を20%の幅で5つのレンジに分けて示す。圧縮率が小さいものほど、よく圧縮できたことを意味する。
列220は、第1方式の各圧縮率レンジについて、第1方式で圧縮した時の平均圧縮スループット性能、及び第1方式で伸張した時の平均伸張スループット性能を示す。第1方式の圧縮率が20%以下のレンジでは圧縮スループット性能が2.6GB/s以上あるが、第1方式の圧縮率が80%を超えるレンジでは圧縮スループット性能が1.0GB/sまで低下する。
圧縮しにくいデータがたくさん記録されると、この圧縮・伸張スループット性能が、FMモジュール100のデータライト・リードのスループット性能に悪影響を与える。つまり、ライト性能は平均圧縮スループット性能までしか上がらず、リード性能は平均伸張スループット性能までしか上がらない。
以下、例えば、FMモジュール100の目標ライト性能が1.5GB/s、目標リード性能が2.2GB/sである場合を想定する。FMモジュール100の目標ライト性能及び目標リード性能は、例えば、予め定められている。例えば、読み書きするデータの大半が圧縮率40%を超えるような状況においては、リード性能が目標を達成できなくなる。さらに、読み書きするデータの大半が圧縮率60%を超えるような状況においては、リード性能もライト性能も目標を達成できなくなる。
列230は、第1方式の各圧縮率レンジについて、当該圧縮率に対応する圧縮前データが第2方式で圧縮された場合に、第1方式で圧縮された場合と比較して圧縮率が平均してどれだけ悪化するかを示す。図4の例では、第1方式の圧縮率が41〜60%のレンジの圧縮前データが第2方式で圧縮された場合、圧縮率は第1方式で圧縮された場合と比較して、平均+3.3%悪化する。
列240は、第1方式の各圧縮率レンジについて、当該圧縮率に対応する圧縮前データが第2方式で圧縮された場合の平均圧縮スループット性能と、当該圧縮率に対応する圧縮前データが第2方式で圧縮されたデータを第2方式で伸張した時の平均伸張スループット性能と、を示す。図4の例では、第2方式で圧縮されたデータは、圧縮率に関わらず、圧縮・伸張スループット性能が2.6GB/s程度になる。従って、読み書きするデータの大半が圧縮率60%を超えるような状況でも、第2方式を適用すれば、FMモジュール100のライト・リード性能は目標を達成できる。
[5]リクラメーション動作の基本
次に、図5を参照して、FMモジュール100が行うリクラメーション動作の例を示し、フラッシュメモリ107内の未書き込みページを増やす方法を示す。図5中のアルファベットは個々の論理データ、括弧内の数字は各論理データの世代番号を示す。例えば、A(1)はA(0)が1回更新されたデータを意味する。同一アルファベットのデータの中で、括弧内の数字が最大のものが最新データであり、それ以外は旧データ、つまり無効データである。例えば、C(3)は最新データであり、C(0)〜C(2)は無効データである。
リクラメーション前のブロック群300及びリクラメーション後のブロック群340は、それぞれはフラッシュメモリ107内のブロック310、ブロック320、及びブロック330からなる。リクラメーション前のブロック群300において、全てのページが未書き込みであるブロックはブロック330だけである。ブロック310の記録データのうち、A(1)とB(1)は最新データであるが、A(0)、B(0)、C(0)、D(0)は旧データである。
メモリコントローラ103が、リクラメーション処理において、A(1)とB(1)をブロック330に移動することにより、ブロック310の記録データは全て無効データ(格納しておく必要がないデータ)となる。また、リクラメーション前のブロック群300において、ブロック320の記録データのうち、C(3)とD(2)とE(0)は最新データであるが、C(1)とC(2)とD(1)は旧データである。
メモリコントローラ103がC(3)とD(2)とE(0)をブロック330に移動することにより、ブロック320の記録データは全て無効データ(格納しておく必要がないデータ)となる。最後に、メモリコントローラ103は、ブロック310、320を消去することで、リクラメーション後のブロック群340では、全てのページが未書き込みのブロックは2つに増える。
[6]ライトバッファ状態監視に基づくライト性能保証
本実施例のFMモジュール100は、DRAM106上のライトバッファの使用状態を監視し、当該使用状態に基づいてライト性能が目標以上になることを保証する。以下、その原理を説明する。
まず、図6を参照して、FMモジュール100内のDRAM106に存在するライトバッファの使い方の一例を説明する。DRAM106は、ライトデータを一時的に保持するためのライトバッファ400を含む。FMモジュール100がホストからライトデータを受信すると、当該ライトデータはライトバッファ400の空き領域420に入り、当該空き領域420は使用領域410になる。
ライトデータは第1圧縮伸張回路104又は第2圧縮伸張回路105によって圧縮されるために読み出される。圧縮処理が終わると、圧縮されたライトデータは再び元の使用領域410に書き戻される。その圧縮されたライトデータはフラッシュメモリ107内の未書き込みページにライトされる。このライトが完了すると、当該ライトデータが使っていた使用領域410は開放され、再び空き領域420として扱われる。
上述の処理において、空き領域420が使用領域410に変わる速さよりも、使用領域410が空き領域420に戻る速さが速い場合は、ライトバッファの空き領域420が枯渇することはない。しかし、第1圧縮伸張回路104による圧縮処理性能がライトデータの受信スループットよりも遅くなると、空き領域420が使用領域410に変わる速さよりも、使用領域410が空き領域420に戻る速さが遅くなり、徐々にライトバッファの空き領域420が減っていき、やがて枯渇する。
そうなると、ライトバッファがライトデータを受け入れる速度(FMモジュール100のライトスループット性能)が、第1圧縮伸張回路104による圧縮処理性能まで低下する。例えば、圧縮率が80%を超えるようなデータばかりがライトされる場合、図4に示したように第1圧縮伸張回路104による圧縮処理性能は1.0GB/sになる。このような場合、ライトバッファの空き領域420がやがて枯渇し、FMモジュール100のライトスループット性能は1.0GB/sまで低下する。つまり、ライトスループット性能が上述の目標ライト性能1.5GB/sを下回ることになる。本実施例のFMモジュール100は、この問題を解決するため、ライトバッファ状態監視の基づくライト性能保証を行う。
図7を参照しながら、FMモジュール100がライト性能保証を行う処理について説明する。図7は、第1方式と第2方式との配分比を示す配分比テーブルの一例である。配分比テーブル500は、例えば、メモリコントローラ103内にプログラムの一部として予め記述されている。
メモリコントローラ103は、例えば、ライトバッファ400の空き領域420のエントリ数がいくつあるかを常時監視する。配分比テーブル500は、ライトバッファ400の空きエントリ数に応じて、第1方式で圧縮されるライトデータの割合と、第2方式で圧縮されるライトデータの割合とを定める。
図4に示したように、第2方式による圧縮処理性能は圧縮率に関わらず2.5GB/s以上あるため、目標ライト性能1.5GB/sを上回る。つまり、メモリコントローラ103が第2方式を用いてライトデータを圧縮することにより、徐々にライトバッファの空き領域420が増えていき、ライト性能を上げる効果がある。
配分比テーブル500の列510の1行目のように、空きエントリ数が20以上あるときは、メモリコントローラ103はライトバッファの空き領域420が枯渇していない(余裕がある)と判断して、ライトデータの全て(100%)を第1方式で圧縮することを選択する。しかし、メモリコントローラ103が全てのライトデータを第1方式で圧縮していると、圧縮率が高いデータばかりがライトされた場合に、空きエントリ数が減っていき、やがて20を下回る。そうなると、メモリコントローラ103は配分比テーブル500の列510の2〜5行目に従って、空きエントリ数が少なくなるほどに、第2方式で圧縮するライトデータの割合を大きくしていく。
例えば、配分比テーブル500の4行目のように、空きエントリ数が5〜9になった場合、メモリコントローラ103は、次々に受信するライトデータ群に適用する圧縮方式を以下のような規則で変化させることで、第1方式に25%、第2方式に75%の割合でライトデータを配分する。具体的には、例えば、メモリコントローラ103は、第1方式を用いた圧縮を1回、第2方式を用いた圧縮を3回、という処理を順に繰り返すことにより、第1方式に25%、第2方式に75%の割合でライトデータを配分することができる。
また、配分比テーブル500の5行目に示すように、空きエントリ数が4以下になった場合は、メモリコントローラ103は、ライトバッファの空き領域420が枯渇していると判断して、ライトデータの全て(100%)を第2方式で圧縮して、ライト性能の改善効果を最大化することを選択する。
以上のように、FMモジュール100は、ライト性能が目標を下回らない限り、より圧縮率を小さくすることができる第1方式でライトデータを圧縮してフラッシュメモリ107に格納する。したがって、第2方式の圧縮しか適用しない従来のフラッシュメモリを搭載したストレージ装置に比べて、本実施例のフラッシュメモリ107を搭載したストレージ装置900は、格納するデータ量をより削減することができる。
なお、図7の配分比テーブル500の例に示した配分比は一例である。図4の例において、第1方式における最低の圧縮処理性能は1.0GB/sであり、第2方式における最低の圧縮処理性能は2.5GB/sである。第1方式と第2方式とを用いた圧縮処理性能がライト性能の目標が上回っていれば、ライトバッファの空き領域420は増えていく。つまり、1.0x+2.5(1−x)>1.5を満たすxが第1方式の配分比であれば(即ち第2方式の配分比は1−x)、ライトバッファの空き領域420は増えていく。従って、配分比テーブル500において、ライトバッファ空きエントリ数が所定数を下回った場合における第1方式の配分比が、上述の不等式を満たすxであればよい。また、ライトバッファ空きエントリ数が多いほど、第1方式の配分比が大きいことが望ましい。
[7]ライト・リードコマンドの処理方法
次に、図8を参照して、FMモジュール100が外部からのライト・リードコマンドを処理する手順の一例について説明する。この手順は、上記のライト性能保証処理を含む。
まず、メモリコントローラ103は、ホストからコマンドを受信する(601)。メモリコントローラ103は、そのコマンドがライトコマンドかリードコマンドかを判断し(602)、ライトコマンドである場合ステップ610に、リードコマンドである場合ステップ620に遷移する。ステップ610〜618はライトコマンド処理、ステップ620〜628はリードコマンド処理である。
まず、ライトコマンド処理について説明する。メモリコントローラ103は、ライトバッファ400の空き領域420の1つにライトデータを受信し、その場所を使用領域410として扱う(610)。メモリコントローラ103は、ライトバッファ400の空きエントリ数を取得する(611)。ライトバッファ400の空きエントリ数は、フラッシュメモリ107のアクセス性能の一例である。メモリコントローラ103は、配分比テーブル500から、取得したエントリ数に対応する圧縮方式を選択する(612)。
メモリコントローラ103は、ステップ612において第1方式を選択した場合は、第1圧縮伸張回路104を用いて圧縮を行い(613)、ステップ615に遷移する。なお、ステップ613において、メモリコントローラ103は、圧縮前のデータサイズと圧縮後のデータサイズとから圧縮率を算出し、後述する変更評価テーブルの対応するカウント値をインクリメントする。
メモリコントローラ103は、ステップ612において第2方式を選択した場合は、第2圧縮伸張回路105を用いて圧縮を行い(614)、ステップ615に遷移する。なお、メモリコントローラ103は、ステップ614において、後述する変更評価テーブルの不明欄のカウント値をインクリメントする。メモリコントローラ103は、圧縮データをライトバッファ400の使用領域410に戻す(615)。そして、この圧縮データをフラッシュメモリ107内の未書き込みページにライトする(616)。
メモリコントローラ103は、ステップ616のライトが完了したら、ライトバッファ400の使用領域410を開放することにより、当該領域を空き領域420に戻す(617)。最後に、メモリコントローラ103は、ホストがライトコマンドで指定したライト論理アドレスに、フラッシュメモリ107内のデータ格納先ページのアドレスを対応付ける(618)。なお、メモリコントローラ103は、例えば、DRAM106上にアドレス変換テーブルを作成して、当該対応付けを変換テーブルに登録する。なお、メモリコントローラ103は、例えば、フラッシュメモリ107に格納した圧縮データが第1方式、第2方式のどちらで圧縮されたものであるかを示す情報も、格納先ページアドレスとともに変換テーブルに登録しておく。以上で、ライトコマンド処理を完了する。
続いて、リードコマンド処理について説明する。メモリコントローラ103は、ホストがリードコマンドで指定したリード論理アドレスを、DRAM106上のアドレス変換テーブルにおいて対応付けられたフラッシュメモリ107内のデータ格納先ページのアドレスに変換する(620)。メモリコントローラ103は、フラッシュメモリ107内の、変換後のページアドレスが示すページから圧縮データを読み出す(621)。
メモリコントローラ103は、読み出した圧縮データをDRAM106内のリードバッファの1つに格納する(622)。メモリコントローラ103は、アドレス変換テーブルを用いて、読み出した圧縮データが第1方式又は第2方式のどちらの方式で圧縮がされたか判定する(623)。
メモリコントローラ103は、読み出したデータが第1方式で圧縮されたとステップ623において判定した場合、第1圧縮伸張回路104を用いて当該データの伸張を行い(624)、ステップ626に遷移する。メモリコントローラ103は、読み出したデータが第2方式で圧縮されたとステップ623において判定した場合、第2圧縮伸張回路105を用いて当該データの伸張を行い(625)、ステップ626に遷移する。
メモリコントローラ103は、伸張したデータ(即ち圧縮する前の状態のデータ)をリードバッファに戻す(626)。メモリコントローラ103は、伸張したデータをリードコマンドの応答データとしてホストに送信する(627)。最後に、伸張したデータが使用していたリードバッファの1つを開放する(628)。以上で、リードコマンド処理が完了する。
[8]圧縮方式変更によるリード性能保証
本実施例のFMモジュール100は、フラッシュメモリ107に格納された圧縮データのうち、第1方式で圧縮されたデータを第2方式で圧縮しなおすことによって、リード性能が目標以上になることを保証する。以下、図9A及び図9Bを参照してその原理を説明する。
図9Aは変更評価テーブルの一例である。変更評価テーブル700は、フラッシュメモリ107に格納されたデータの圧縮方式を第1方式から第2方式に変更することによる影響を評価するために、メモリコントローラ103が管理するテーブルである。変更評価テーブル700は、例えばDRAM106に格納されている。
変更評価テーブル700の列710は、第1方式で圧縮したデータの圧縮率を20%の幅で5つのレンジに分けていることを示す。前述した通り圧縮率が小さいものほど、よく圧縮できたことを意味する。
列720の2種類のカウント値は、第1方式の各圧縮率レンジについて、当該レンジ内の圧縮率に該当する圧縮データがフラッシュメモリ107内にいくつあるかを示すカウント値721と、当該レンジ内の圧縮率に該当する圧縮データのうち第2方式で圧縮しなおされた(方式変更された)ものがいくつあるかを示すカウント値722である。これらのカウント値はデータライトや圧縮方式変更によって増減する。
例えば、第1方式での圧縮率30%の格納データが第1方式での圧縮率70%のデータに更新されたとすると、カウント値721の21〜40%レンジの値は1減算され、カウント値721の61〜80%レンジの値は1加算される。また、例えば、第1方式での圧縮率90%の格納データが第2方式で圧縮しなおされたとすると、カウント値721の値は変化せず、カウント値722の81〜100%レンジの値は1加算される。
列725は、第1方式の各圧縮率レンジについて、第1方式で伸張した時の平均伸張スループット性能を示す。つまり、列725は、図4の列220に含まれる伸張処理性能の列と同じ情報を保持する。列726は、第2方式の各圧縮率レンジについて、第2方式で伸張した時の平均伸張スループット性能を示す。つまり、列726は、図4の列240に含まれる伸張処理性能の列と同じ情報を保持する。
列730は、第1方式の各圧縮率レンジについて、そのデータを第2方式で圧縮しなおされた場合に、第1方式で圧縮された場合と比較して圧縮率が平均してどれだけ悪化するかを示す。つまり、列730は、図4の列230と同じ情報を保持する。
列740は、第1方式の各圧縮率レンジについて、そのデータを第2方式で圧縮しなおした場合に、伸張処理性能が平均してどれだけ改善するかを示す。つまり、列740は、列726の値から列725の値を引いた差を示す。例えば、第1方式での圧縮率が61〜80%レンジのデータが第2方式で圧縮しなおされたとすると、当該データの伸張性能は1.2GB/sから2.6GB/sに改善するため、列740の対応するセルは+1.4GB/sという値を保持する。
列750は、第1方式の各圧縮率レンジについて、そのデータを第2方式で圧縮しなおすことにより伸張性能を1GB/sだけ改善させると、圧縮率が平均してどれだけ悪化するかを示す指標を保持する。以下、この指標を改善コストと呼ぶ。改善コストは、各レンジにおいて、列730の値を列740の値を割った商である。
図9Aの例では、第1方式での圧縮率が41〜60%レンジのデータを第2方式で圧縮しなおして1GB/s改善させようとすると、圧縮率は平均して+5.5%悪化することを示す。なお、第1方式での圧縮率が1〜20%レンジのデータは第2方式で圧縮しなおすとかえってリード性能が悪化するので、改善コストは評価できない。従って、列750の当該レンジに対応するセルには、例えばnull値が格納されている。改善コストが小さい圧縮率レンジのデータほど、当該データが第2方式で圧縮しなおされた場合における、リード性能を改善することに伴う格納データ量の増加、が少なくてすむことを意味する。
図9Bのグラフ760は、メモリコントローラ103が、フラッシュメモリ107に格納されたデータの平均リード性能770(すなわち平均伸張性能)を算出する原理の一例を示している。メモリコントローラ103は、例えば、グラフ760において、横方向に各圧縮率レンジの列720が示すカウント値、縦方向に各圧縮率レンジの平均伸張性能をとり、各圧縮率レンジについて形成される長方形780〜785の面積の合計を算出し、算出した合計をカウント値の合計で割ることで、平均リード性能770を算出する。
長方形780は圧縮率1〜20%レンジ、長方形781は圧縮率21〜40%レンジ、長方形782は圧縮率41〜60%レンジ、長方形783は圧縮率61〜80%レンジ、長方形784は圧縮率81〜100%レンジに対応する。内部に斜線が描かれた長方形785は、圧縮率81〜100%レンジのデータの一部を、第2方式で圧縮しなおしたことによる伸張性能の改善分に対応する。
メモリコントローラ103は、例えば、グラフ760から算出した平均リード性能が目標リード性能である2.2GB/s(又は目標リード性能に所定のマージンを加えた値)を下回ったと判定した場合に、第1方式で圧縮されたデータの一部を第2方式で圧縮しなおす。メモリコントローラ103が当該一部のデータをどのように選択するかについては後述する。メモリコントローラ103が一部のデータの圧縮方式を変更することによって、グラフ760の長方形785のような伸張性能改善に対応する面積が増えるので、平均リード性能770を改善し、目標2.2GB/sを下回らないことを保証することができる。
以上のように、FMモジュール100は、例えば、リード性能が目標を下回らない限り、より圧縮率を小さくすることができる第1方式でライトデータを圧縮してフラッシュメモリ107に格納する。したがって、第2方式しか用いないFMモジュールに比べて、本実施例のFMモジュール100は、格納データ量をより削減することができる。
[9]リード性能保証の下で圧縮率を最小化するリクラメーション動作
上述したように、FMモジュール100のライト性能を保証するため、メモリコントローラ103は、一部のライトデータを第2方式で圧縮してフラッシュメモリ107に格納することがある。図4で示したように第2方式で圧縮されたデータを読み出して伸張する際のスループット性能は2.6GB/sである。
FMモジュール100の平均リード性能が目標の2.2GB/sを大きく上回っていれば、FMモジュール100は、これらのデータを必ずしも第2方式で圧縮した状態で格納しつづけなくてもよく、より圧縮率を小さくできる第1方式で圧縮しなおし、データ量を削減したほうがよい。そこで、本実施例のFMモジュール100は、平均リード性能が2.2GB/sを上回っている限り、フラッシュメモリ107に第2方式で圧縮されているデータをリクラメーション時に第1方式で圧縮しなおして別のブロックに移動する操作を行う。
また、図9A及び図9Bを用いて説明したように、平均リード性能が目標リード性能である2.2GB/sに近い場合には、FMモジュール100は、平均リード性能が目標リード性能を下回らないことを保証するため、第1方式で圧縮された格納データのうち、例えば、改善コストが最も小さい圧縮率レンジのデータを、リクラメーション時に第2方式で圧縮しなおして別のブロックに移動する操作を行う。
図10は、FMモジュール100によるリクラメーション動作の一例を示すフローチャートである。FMモジュール100は、これにより、リード性能保証の下で格納データの圧縮率を最小化することが可能となる。
メモリコントローラ103は、未書き込みページを増やす必要があると判断すると、フラッシュメモリ107において無効データが最も多いブロックXを選択する(801)。メモリコントローラ103は、ブロックX内の全ての有効データ(最新の論理データ)を書き込むための十分な未書き込みページを含むブロックYを選択する(802)。
メモリコントローラ103は、ブロックX内の有効データの1つを、例えばランダムに選択して、読み出す(803)。メモリコントローラ103は、例えば、グラフ760を用いて説明した方法に従って平均リード性能770を算出する(804)。平均リード性能770は、フラッシュメモリ107のアクセス性能の一例である。メモリコントローラ103は、算出した平均リード性能770の値が所定値よりも高いか否かを判定する(805)。当該所定値は、目標リード性能2.2GB/sであってもよいし、平均リード性能が目標リード性能を下回る可能性を減らすために、目標リード性能にマージンが加えられた値(即ち、2.2GB/s超の値)であってもよい。
メモリコントローラ103は、平均リード性能770の値が所定値以上であると判定した場合(805:YES)、圧縮率を小さくできる第1方式への変更を行うためにステップ806に遷移する。なお、メモリコントローラ103は、平均リード性能770の値が所定値以上であると判定した場合(805:YES)、ステップ809に遷移してもよい。
一方、メモリコントローラ103は、平均リード性能770の値が所定値よりも低いと判定した場合(805:NO)、リード性能を改善できる第2方式への変更を行うためにステップ813に遷移する。
メモリコントローラ103は、DRAM106上のアドレス変換テーブルを参照して、ステップ803でブロックXから読み出した有効データの圧縮方式が第2方式か否かを判定する(806)。メモリコントローラ103は、当該有効データの圧縮方式が第2方式であると判定した場合(806:YES)、当該有効データを第2圧縮伸張回路105で伸張し、第1圧縮伸張回路104で圧縮する(807)。メモリコントローラ103は、変更評価テーブル700の当該有効データに対応する列720のカウント値を更新し(808)、ステップ809に遷移する。
一方、メモリコントローラ103は、ステップ806で当該有効データの圧縮方式が第2方式でないと判定した場合(806:NO)、すでに当該有効データは第1方式で圧縮されているため、ステップ809に遷移する。メモリコントローラ103は、ブロックYの未書き込みページに、第1方式で圧縮された有効データをライトする(809)。
一方、ステップ813では、メモリコントローラ103は、DRAM106上のアドレス変換テーブルを参照して、ブロックXから読み出した有効データの圧縮方式が第1方式であるか否かを判定する(813)。メモリコントローラ103は、当該有効データの圧縮方式が第1方式でないと判定した場合(813:NO)、すでに当該データは第2方式で圧縮されているため、ステップ809に遷移する。
一方、メモリコントローラ103は、当該有効データの圧縮方式が第1方式であると判定した場合(813:YES)、例えば、変更評価テーブル700において列750における改善コストが最小になる圧縮率レンジを調査する(814)。メモリコントローラ103は、例えば、当該有効データの圧縮率が、ステップ814で判明した最小の改善コストのレンジに属するか否かを判定する(815)。メモリコントローラ103は、当該有効データの圧縮率が当該レンジに属していないと判定した場合(815:NO)、圧縮方式の変更に伴う圧縮率悪化度が大きいので、圧縮方式変更をせずにステップ809に遷移する。
一方、メモリコントローラ103は、ステップ815で、当該有効データの圧縮率が当該レンジに属すると判定した場合(815:YES)、当該有効データを第1圧縮伸張回路104で伸張し、第2圧縮伸張回路105で圧縮する(816)。メモリコントローラ103は、変更評価テーブル700の当該有効データに対応する列720のカウント値を更新し(817)、ステップ809に遷移する。
メモリコントローラ103はステップ809では、ブロックYの未書き込みページに、第2方式で圧縮された有効データをライトする(809)。続いて、メモリコントローラ103は、ブロックX内にある当該有効データを無効化する(810)。そして、メモリコントローラ103は、ブロックX内にまだ有効データがあるか否かを判定する(811)。メモリコントローラ103は、ブロックX内に有効データがあると判定した場合(811:YES)、ステップ803に戻る。メモリコントローラ103は、ブロックX内に有効データがないと判定した場合(811:NO)、ブロックX内のデータは全て無効データであるため、ブロックXを消去する(812)。
このように、本実施例のFMモジュール100は、フラッシュメモリ107の未書き込みページの数を増やすリクラメーション動作での有効データ移動を利用して、リード性能保証の下で格納データの圧縮率を最小化することができる。
なお、メモリコントローラ103は、ステップ807やステップ816において圧縮方式を変更した際に、圧縮率が実際どれだけ変化したかを調べ、変化量に基づいて変更評価テーブル700の列730の悪化度及び列750の改善コストを更新してもよい。これにより、メモリコントローラ103は、格納データの圧縮率をより小さくすることができる。
なお、ステップ814において、メモリコントローラ103は、例えば、列750における改善コストが小さい順に所定個数の圧縮率レンジを選択してもよいし、列750における改善コストが所定の第1閾値以下である全ての圧縮率レンジを選択してもよい。また、ステップ814において、メモリコントローラ103は、例えば、平均リード性能が所定の閾値未満であるか否かを判定してもよく、平均リード性能が所定の第2閾値以下であると判定した場合、列750における改善コストが正の値である全ての圧縮率レンジを選択してもよい。これらの場合において、メモリコントローラ103は、ステップ815において、当該有効データの圧縮率が選択した圧縮率レンジに属しているか否かを判定する。なお、第2閾値は、目標リード性能より小さい値である。
[10]その他の実施例
実施例1はFMモジュール100をストレージ装置900へ適用する例を説明したが、本実施例では、実施例1のFMモジュール100を一時的な記憶領域(キャッシュメモリ)として利用するサーバ装置などにも適用してもよい。キャッシュメモリのヒット率を向上してサーバ装置のデータアクセス時間を短縮するには、FMモジュール100の物理データ格納量を削減して、仮想的により多くの論理データを格納できるようにすることが重要であるため、実施例1のFMモジュール100を当該サーバ装置に適用することは効果的である。
また、本実施形態では、FMモジュール100が、リクラメーション動作を利用して、リード性能保証の下で格納データの圧縮率を最小化する圧縮方式変更処理を行う例を説明したが、当該処理はリクラメーション動作時以外に実行されてもよい。具体的には、例えば、FMモジュール100は、リフレッシュ動作で行われる有効データの移動を利用して、圧縮方式変更処理を行うこともできる。フラッシュメモリは、データを書き込んでから長い時間が経つと、データ誤りが徐々に増加し、誤り訂正符号を用いても訂正できなくなってしまう。リフレッシュ動作とは、これを防ぐために、データを書き込んでから一定時間が経過したページからデータを読み出して誤りを訂正し、別の未書き込みページに移動し、元のデータを記録しているページを無効化する動作である。
リフレッシュ動作を利用した圧縮方式変更処理によりもたらされるデータ削減とリード性能保証の効果は、上記のリクラメーション動作を利用した圧縮方式変更処理による効果と同様である。本実施形態のFMモジュール100は、圧縮方式変更処理をリクラメーション動作やリフレッシュ動作と同時に行うことで、圧縮方式変更を行うためだけにフラッシュメモリへの書き込み回数を余計に増やさないですむ。なお、圧縮率を小さくすることで、フラッシュメモリの書き込み回数を減らし、ストレージ装置の超寿命化を図ることができるため、本実施形態のように圧縮方式変更のためだけにフラッシュメモリへの余計な書き込み回数を増やさないことが望ましい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。

Claims (13)

  1. 記憶領域を提供するフラッシュメモリと、前記記憶領域に対するデータの書き込み及び読み出しを制御するコントローラと、前記記憶領域に書き込むデータを一時的に記憶するバッファメモリと、を含むストレージ装置であって、
    前記コントローラは、
    前記フラッシュメモリへのアクセス性能に基づいて、第1可逆圧縮方式と第2可逆圧縮方式の一方を選択し、
    前記選択した一方によってデータを圧縮して前記記憶領域に書き込むことを決定し、
    前記第1可逆圧縮方式は、前記第2可逆圧縮方式より圧縮率が小さく、かつ前記第2可逆圧縮方式より圧縮速度が低く、
    前記記憶領域へのデータの書き込み要求を受信し、
    前記書き込み要求の受信時における前記バッファメモリの空き領域の大きさに基づいて、前記一方を選択する、ストレージ装置。
  2. 請求項1に記載のストレージ装置であって、
    前記コントローラは、前記バッファメモリの空き領域が大きいほど、前記第1可逆圧縮方式を高い割合で前記一方として選択する、ストレージ装置。
  3. 請求項1に記載のストレージ装置であって、
    前記コントローラは、
    前記バッファメモリの空きエントリ数が所定値以上の場合、第1割合で前記第1可逆圧縮方式を前記一方として選択し、
    前記第1割合に前記第1可逆圧縮方式の圧縮速度を掛けた積と、1から前記第1割合を引いた差に前記第2可逆圧縮方式の圧縮速度を掛けた積と、の和は、所定の目標書き込み速度を超えている、ストレージ装置。
  4. 記憶領域を提供するフラッシュメモリと、前記記憶領域に対するデータの書き込み及び読み出しを制御するコントローラと、前記記憶領域に書き込むデータを一時的に記憶するバッファメモリと、を含むストレージ装置であって、
    前記コントローラは、
    前記フラッシュメモリへのアクセス性能に基づいて、第1可逆圧縮方式と第2可逆圧縮方式の一方を選択し、
    前記選択した一方によってデータを圧縮して前記記憶領域に書き込むことを決定し、
    前記第1可逆圧縮方式は、前記第2可逆圧縮方式より圧縮率が小さく、かつ前記第2可逆圧縮方式より圧縮速度が低く、
    前記記憶領域は、前記第1可逆圧縮方式又は前記第2可逆圧縮方式の一方で圧縮された第1データを保持し、
    前記第1可逆圧縮方式は、前記第2可逆圧縮方式より伸張速度が低く、
    前記コントローラは、
    前記記憶領域に格納されたデータを読み出す速度に基づいて、前記第1データを前記記憶領域から読み出して伸張し他方で圧縮して前記記憶領域に格納する圧縮方式変更、を行うか否かを決定する、ストレージ装置。
  5. 請求項4に記載のストレージ装置であって、
    前記コントローラは、
    前記記憶領域に格納されたデータを読み出す平均速度が所定の目標読み出し速度以上であるか否かの判定を実行し、
    前記判定の結果に基づいて、前記圧縮方式変更を行うか否かを決定する、ストレージ装置。
  6. 請求項5に記載のストレージ装置であって、
    前記一方は、前記第2可逆圧縮方式であり、
    前記コントローラは、前記判定において前記平均速度が前記目標読み出し速度以上であると判定した場合、前記圧縮方式変更を行う、ストレージ装置。
  7. 請求項5に記載のストレージ装置であって、
    前記一方は、前記第1可逆圧縮方式であり、
    前記コントローラは、前記判定において前記平均速度が前記目標読み出し速度未満であると判定した場合、
    前記圧縮方式変更を行った場合における伸張速度の改善度及び圧縮率の悪化度に基づいて、前記圧縮方式変更を行うか否かを決定する、ストレージ装置。
  8. 請求項4に記載のストレージ装置であって、
    前記コントローラは、
    前記第1データの他の記憶領域への移動の際に前記圧縮方式変更を行うか否かを決定し、
    前記圧縮方式変更を行うと決定した場合、前記移動の実行時に前記圧縮方式変更を行う、ストレージ装置。
  9. 請求項8に記載のストレージ装置であって、
    前記コントローラは、
    前記第1データが記憶された記憶領域に対するリフレッシュ又はリクラメーションが実行される際に、前記圧縮方式変更を行うか否かを決定し、
    前記圧縮方式変更を行うと決定した場合、前記リフレッシュ又は前記リクラメーションの実行時に前記圧縮方式変更を行う、ストレージ装置。
  10. 記憶領域を提供するフラッシュメモリと、前記記憶領域に書き込むデータを一時的に記憶するバッファメモリと、を含むストレージ装置、の制御方法であって、
    前記フラッシュメモリへのアクセス性能に基づいて、第1可逆圧縮方式と第2可逆圧縮方式の一方を選択し、
    前記選択した一方によってデータを圧縮して前記記憶領域に書き込むことを決定し、
    前記第1可逆圧縮方式は、前記第2可逆圧縮方式より圧縮率が小さく、かつ前記第2可逆圧縮方式より圧縮速度が低く、
    前記記憶領域へのデータの書き込み要求を受信し、
    前記書き込み要求の受信時における前記バッファメモリの空き領域の大きさに基づいて、前記一方を選択する、制御方法。
  11. 請求項10に記載の制御方法であって、
    前記バッファメモリの空き領域が大きいほど、前記第1可逆圧縮方式を高い割合で前記一方として選択する、制御方法。
  12. 請求項10に記載の制御方法であって、
    前記バッファメモリの空きエントリ数が所定値以上の場合、第1割合で前記第1可逆圧縮方式を前記一方として選択し、
    前記第1割合に前記第1可逆圧縮方式の圧縮速度を掛けた積と、1から前記第1割合を引いた差に前記第2可逆圧縮方式の圧縮速度を掛けた積と、の和は、所定の目標書き込み速度を超えている、制御方法。
  13. 記憶領域を提供するフラッシュメモリと、前記記憶領域に書き込むデータを一時的に記憶するバッファメモリと、を含むストレージ装置、の制御方法であって、
    前記フラッシュメモリへのアクセス性能に基づいて、第1可逆圧縮方式と第2可逆圧縮方式の一方を選択し、
    前記選択した一方によってデータを圧縮して前記記憶領域に書き込むことを決定し、
    前記第1可逆圧縮方式は、前記第2可逆圧縮方式より圧縮率が小さく、かつ前記第2可逆圧縮方式より圧縮速度が低く、
    前記記憶領域は、前記第1可逆圧縮方式又は前記第2可逆圧縮方式の一方で圧縮された第1データを保持し、
    前記第1可逆圧縮方式は、前記第2可逆圧縮方式より伸張速度が低く、
    前記制御方法は、前記記憶領域に格納されたデータを読み出す速度に基づいて、前記第1データを前記記憶領域から読み出して伸張し他方で圧縮して前記記憶領域に格納する圧縮方式変更、を行うか否かを決定する、制御方法。
JP2018549643A 2016-11-08 2016-11-08 ストレージ装置及びストレージ装置の制御方法 Active JP6692448B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/083021 WO2018087795A1 (ja) 2016-11-08 2016-11-08 フラッシュメモリモジュール及びフラッシュメモリモジュールの制御方法

Publications (2)

Publication Number Publication Date
JPWO2018087795A1 JPWO2018087795A1 (ja) 2019-06-24
JP6692448B2 true JP6692448B2 (ja) 2020-05-13

Family

ID=62109660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018549643A Active JP6692448B2 (ja) 2016-11-08 2016-11-08 ストレージ装置及びストレージ装置の制御方法

Country Status (3)

Country Link
US (1) US11481114B2 (ja)
JP (1) JP6692448B2 (ja)
WO (1) WO2018087795A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020071583A (ja) * 2018-10-30 2020-05-07 株式会社日立製作所 データ管理装置、データ管理方法、及びデータ管理プログラム
KR102659832B1 (ko) 2019-03-05 2024-04-22 삼성전자주식회사 데이터 저장 장치 및 시스템
CN112765047A (zh) * 2019-10-21 2021-05-07 伊姆西Ip控股有限责任公司 用于重写数据的方法、设备和计算机程序产品
WO2021090866A1 (ja) * 2019-11-08 2021-05-14 日本電気株式会社 データ処理装置、データ処理方法、及びプログラム
JP7390251B2 (ja) 2020-04-30 2023-12-01 株式会社日立製作所 ストレージシステム
US20230004533A1 (en) * 2021-07-01 2023-01-05 Microsoft Technology Licensing, Llc Hybrid intermediate stream format
CN113886346A (zh) * 2021-08-31 2022-01-04 联想(北京)有限公司 一种数据处理方法及电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0234038A (ja) * 1988-07-23 1990-02-05 Hitachi Ltd データ圧縮装置
JPH07210324A (ja) * 1994-01-13 1995-08-11 Hitachi Ltd 記憶装置
JP4185259B2 (ja) * 2001-05-08 2008-11-26 富士フイルム株式会社 デジタルカメラ、画像記録方法及び画像記録プログラム
US10444992B2 (en) 2014-02-26 2019-10-15 Hitachi, Ltd. Storage device, apparatus having storage device, and storage control method
TWI534814B (zh) * 2014-10-20 2016-05-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9733854B2 (en) * 2015-10-30 2017-08-15 Hewlett Packard Enterprise Development Lp Dynamic adaptive compression in network storage device

Also Published As

Publication number Publication date
JPWO2018087795A1 (ja) 2019-06-24
WO2018087795A1 (ja) 2018-05-17
US20190205035A1 (en) 2019-07-04
US11481114B2 (en) 2022-10-25

Similar Documents

Publication Publication Date Title
JP6692448B2 (ja) ストレージ装置及びストレージ装置の制御方法
US8799562B2 (en) Storage apparatus and data control method for generating and storing format data and guarantee codes
JP6606039B2 (ja) メモリシステムおよび制御方法
US20170279460A1 (en) Updating prefix codes for pseudo-dynamic data compression
JP6134857B2 (ja) 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法
US8364929B2 (en) Enabling spanning for a storage device
US8214620B2 (en) Computer-readable recording medium storing data storage program, computer, and method thereof
TWI455144B (zh) 使用於快閃記憶體的控制方法與控制器
CN110832590A (zh) 在基于相变存储器的存储设备中减轻写入放大的方法和系统
CN110795272B (zh) 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统
JP6608468B2 (ja) ストレージ装置及びその制御方法
US8706953B2 (en) Data storage device and method performing background operation with selected data compression
KR20110113422A (ko) 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
CN112486725B (zh) 一种对压缩数据进行纠错编码的方法和装置
KR20110138076A (ko) 데이터 저장 장치 및 그것의 쓰기 방법
US10303402B2 (en) Data compression using partial statistics
JP2020149195A (ja) メモリシステム
US10911064B1 (en) Symbol pair encoding for data compression
JP7177338B2 (ja) メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法
WO2016051599A1 (ja) メモリコントローラ及びデータ制御方法
US10268537B2 (en) Initializing a pseudo-dynamic data compression system with predetermined history data typical of actual data
US9513813B1 (en) Determining prefix codes for pseudo-dynamic data compression utilizing clusters formed based on compression ratio
JP6760916B2 (ja) ストレージコントローラ、ストレージアレイ装置、データ格納方法、およびプログラム
KR20220072398A (ko) 메모리 장치 및 메모리 시스템
KR20110030071A (ko) 데이터를 압축하는 반도체 스토리지 시스템

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200324

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200414

R150 Certificate of patent or registration of utility model

Ref document number: 6692448

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150