JP4897524B2 - ストレージシステム及びストレージシステムのライト性能低下防止方法 - Google Patents

ストレージシステム及びストレージシステムのライト性能低下防止方法 Download PDF

Info

Publication number
JP4897524B2
JP4897524B2 JP2007067142A JP2007067142A JP4897524B2 JP 4897524 B2 JP4897524 B2 JP 4897524B2 JP 2007067142 A JP2007067142 A JP 2007067142A JP 2007067142 A JP2007067142 A JP 2007067142A JP 4897524 B2 JP4897524 B2 JP 4897524B2
Authority
JP
Japan
Prior art keywords
data
storage system
flash memory
memory
cache memory
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.)
Expired - Fee Related
Application number
JP2007067142A
Other languages
English (en)
Other versions
JP2008226149A (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
Priority to JP2007067142A priority Critical patent/JP4897524B2/ja
Priority to US11/968,218 priority patent/US7761655B2/en
Publication of JP2008226149A publication Critical patent/JP2008226149A/ja
Application granted granted Critical
Publication of JP4897524B2 publication Critical patent/JP4897524B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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/7205Cleaning, compaction, garbage collection, erase control

Description

本発明は、電気的に書き換え可能な不揮発性メモリを使用したストレージシステム及びストレージシステムのライト性能低下防止方法に関し、特に不揮発性メモリとしてフラッシュメモリを用い、フラッシュメモリよりも高速なランダムアクセスメモリをキャッシュメモリとして搭載したストレージシステムにおいて、不良化したフラッシュメモリブロックの代替にキャッシュメモリを使用するものに適用しても好適なものである。
フラッシュメモリは直接的に上書きのできない不揮発性メモリであり、書き換えを実施するためには、複数個の書き込み単位(ページ)から構成される消去単位(ブロック)を消去し、それらのページを未書き込み状態にする必要がある。
したがって、フラッシュメモリを主たる記憶媒体とする一般的なストレージシステムでは、ホスト装置が格納データを更新したい場合、フラッシュメモリの一部にあらかじめ確保した予備領域に新データを書いて有効データとする一方で旧データを無効データとし、後に旧データを含むブロックを消去して新たな予備領域とする、といった制御を行う。なお、消去するブロック内にその他の有効データが残っている場合は、消去の前にそれらを別のブロックの未書き込みのページに退避しなければならない。
一般に、フラッシュメモリ上の予備領域は他のブロックが不良化したときの代替領域としても利用される。フラッシュメモリのブロックは10万回程度の書き換え寿命しか保証されてないため、ホスト装置がストレージシステムの格納データの更新を繰り返していると日常的に不良ブロックが発生し、その数は徐々に増加する。そして、これが予備領域を満たすほどの数になると、上記の格納データ更新制御が困難になり、そのストレージシステムは書き換え不能となる。
特許文献1には、フラッシュメモリを記憶媒体とするデータファイルストレージシステムにおいて、キャッシュメモリを使用した以下の手続きによって、ストレージシステムの書き換え寿命を延長する方法が記載されている。(1)ホスト装置からのフラッシュメモリ向けのデータファイルを、フラッシュメモリよりかなり多くのライト・消去のサイクルに耐えうるキャッシュメモリに一時保管する。(2)ホスト装置からのライト要求に応じて、新データファイルをフラッシュメモリの代わりにキャッシュメモリに書く。(3)データファイルの識別子および各データファイルが最後にキャッシュメモリに書かれてからの時間を、タグメモリに格納する。(4)キャッシュメモリに新データファイル用の追加空間が必要になったら、タグメモリの参照によって最後の書込から最長の時間がたったデータファイルを優先してキャッシュメモリからフラッシュメモリに移動する。上記(1)〜(4)の処理を行うことで、フラッシュメモリへの実際のライト回数や関連ストレスを大きく減らしている。
米国特許第5936971号公報
フラッシュメモリを記憶媒体とするストレージシステムにおいて、フラッシュメモリの不良ブロックの数の増加に伴って、上記の格納データ更新制御に使用する予備領域のサイズは徐々に減少する。正味の格納データ量に対して更新制御用の予備領域サイズの割合が小さいほど、ストレージシステムの格納データ更新時の作業効率(ホスト装置の書き換え単位あたりのフラッシュメモリのライト回数)は低下する。これは、上記の格納データ更新制御において、消去ブロック内に残された他の有効データを退避するときの平均作業量が多くなることが原因である。
その結果、不良ブロックの数が増加するにつれて、ストレージシステムのライト性能は徐々に低下するという問題があった。
本発明は、以上の点を考慮してなれたもので、ストレージシステムのライト性能の低下を抑制することができるストレージシステム及びストレージシステムのライト性能低下防止方法を提案しようとするものである。
本発明は、ページ単位でデータを書き込み、複数の前記ページから構成されるブロックを単位として前記データを消去するとともに複数の前記ブロックを有し、前記データの更新に前記ページを含む前記ブロックの消去を必要とするフラッシュメモリと、前記フラッシュメモリに書き込むべきデータを前記フラッシュメモリよりも高速に書き込むとともに一時的に記憶するキャッシュメモリと、前記フラッシュメモリのデータの読み出し、書き込み及び消去と、前記キャッシュメモリのデータの読み出し及び書き込みを制御し、前記フラッシュメモリ内に不良な前記ブロックが発生したことを検出するコントローラと、前記データのライト処理を要求するコマンドを発行するホスト計算機とを備え、前記コントローラは、前記フラッシュメモリ内に前記不良ブロックが発生したことを検出したときに、前記フラッシュメモリに格納された所定のデータを前記キャッシュメモリに移動し、その移動したデータを更新するためのコマンドを前記ホスト計算機から受信しても、そのコマンドに基づくデータを前記フラッシュメモリへ書き込むことを禁止するストレージシステムである。
すなわち、ページ単位でデータを書き込み、複数のページから構成されるブロックを単位としてデータを消去するとともに複数のブロックを有し、データの更新にページを含むブロックの消去を必要とするフラッシュメモリと、フラッシュメモリに書き込むべきデータをフラッシュメモリよりも高速に書き込むとともに一時的に記憶するキャッシュメモリと、フラッシュメモリのデータの読み出し、書き込み及び消去と、キャッシュメモリのデータの読み出し及び書き込みを制御し、フラッシュメモリ内に不良なブロックが発生したことを検出するコントローラと、データのライト処理を要求するコマンドを発行するホスト計算機とを含むストレージシステムのライト性能低下防止方法において、コントローラは、フラッシュメモリ内に不良ブロックが発生したことを検出し、前記キャッシュメモリに格納された所定のデータをキャッシュメモリに移動し、その移動したデータを更新するためのコマンドをホスト計算機から受信しても、そのコマンドに基づくデータをフラッシュメモリへ書き込むことを禁止することにより、フラッシュメモリの不良ブロック数の増加に伴って格納データ更新時の作業効率が低下するのを抑制することができるので、キャッシュメモリのヒット率が低い状況下において、従来よりもストレージシステムのライト性能の低下を抑制することができる。
また、上記ストレージシステムにおけるキャッシュメモリを不揮発性のランダムアクセスメモリ、例えば、相変化RAM(Random Access Memory)とすることにより、ラッシュメモリからキャッシュメモリに代替されたデータを補助電源なしに保持することができるため、ストレージシステムの電源消費電力を削減し、データを突然の電源遮断などの障害による消失から保護するという効果を奏する。
本発明によれば、ストレージシステムのライト性能の低下を抑制するという効果を奏する。
以下、本発明の実施形態について図面を参照しながら説明する。
(1)ストレージシステムの構成
図1は、本発明を適用したストレージシステム10のハードウェア構成を簡単に示す図である。
ストレージシステム10は、ストレージコントローラ120及びフラッシュメモリ・モジュール(FMM)151〜154、161〜164、171〜174、181〜184を備える。ストレージコントローラ120は、チャネルアダプタ121、122、キャッシュメモリ123、124、ストレージアダプタ125、126、共有メモリ129及び相互接続網127、128を備える。
なお、ストレージコントローラ120は、チャネルアダプタ121、122、キャッシュメモリ123、124及びストレージアダプタ125、126、共有メモリ129を有する場合を例示しているが、それらの個数は限定されるものではない
相互接続網127及び128は、例えば、スイッチ等であり、ストレージコントローラ120を構成する各装置を相互に接続する。詳細には、相互接続網127及び128は、チャネルアダプタ121、キャッシュメモリ123及びストレージアダプタ125、共有メモリ129を相互に接続する。同様に、相互接続網127、128は、チャネルアダプタ122、キャッシュメモリ124及びストレージアダプタ126、共有メモリ129を相互に接続する。
チャネルアダプタ121は、チャネル110、111、112、113を介してホスト計算機100に接続されている。同様に、チャネルアダプタ122は、チャネル114、115、116、117を介してホスト計算機100に接続されている。ホスト計算機100は、パーソナルコンピュータ、ワークステーション、メインフレームコンピュータ等の計算機であり、ストレージシステム10において、ストレージコントローラ120にデータの読み書きを要求する。ストレージコントローラ120は、チャネルアダプタ121、122を用いてそれらの要求を解釈し、それらの要求を満たすためにストレージアダプタ125、126を用いてフラッシュメモリ・モジュール151〜154、161〜164、171〜174、181〜184のデータを読み書きする。
その際、キャッシュメモリ123、124は、チャネルアダプタ121、122又はストレージアダプタ125、126から受信したデータを一時的に記憶したり、必要に応じて特定の受信データを永続的に記憶したりする。キャッシュメモリ123、124は、例えば、ダイナミック型ランダムアクセスメモリであり、高速に読み書きできる。共有メモリ129は、キャッシュメモリ123、124の記憶データを管理するためのテーブルを格納し、チャネルアダプタ121、122又はストレージアダプタ125、126がそれを参照・設定することができる。共有メモリ129は、例えば、ダイナミック型ランダムアクセスメモリであり、高速に読み書きできる。
ストレージアダプタ125は、フラッシュメモリ・モジュール151〜154、161〜164、171〜174、181〜184に接続されている。詳細には、ストレージアダプタ125は、チャネル140を介してフラッシュメモリ・モジュール151〜154に接続されている。また、ストレージアダプタ125は、チャネル141を介してフラッシュメモリ・モジュール161〜164に接続されている。また、ストレージアダプタ125は、チャネル142を介してフラッシュメモリ・モジュール171〜174に接続されている。また、ストレージアダプタ125は、チャネル143を介してフラッシュメモリ・モジュール181〜184に接続されている。
同様に、ストレージアダプタ126は、フラッシュメモリ・モジュール151〜154、161〜164、171〜174、181〜184に接続されている。詳細には、ストレージアダプタ126は、チャネル144を介してフラッシュメモリ・モジュール151〜154に接続されている。また、ストレージアダプタ126は、チャネル145を介してフラッシュメモリ・モジュール161〜164に接続されている。また、ストレージアダプタ126は、チャネル146を介してフラッシュメモリ・モジュール171〜174に接続されている。また、ストレージアダプタ126は、チャネル147を介してフラッシュメモリ・モジュール181〜184に接続されている。
チャネルアダプタ121、122及びストレージアダプタ125、126は、保守端末130に接続されている。保守端末130は、ストレージシステム10の管理者から入力された設定情報を、チャネルアダプタ121、122及び/又はストレージアダプタ125、126に送信する。
なお、ストレージシステム10は、ストレージアダプタ125及びチャネルアダプタ121に替わって一つのアダプタを備えていても良い。この場合、その一つのアダプタが、ストレージアダプタ125及びチャネルアダプタ121の処理を行う。
190〜193は、RAID(Redundant Arrays of Inexpensive Disks)グループである。例えば、RAIDグループ190は、フラッシュメモリ・モジュール151、161、171、181から成る。RAIDグループ190に属するフラッシュメモリ・モジュールの一つ、例えば、フラッシュメモリ・モジュール151でエラーが発生してデータを読み出せなくなると、RAIDグループ190に属する他のフラッシュメモリ・モジュール161、171、181からデータを再生できる。
図2はチャネルアダプタ121のハードウェア構成を示す図である。チャネルアダプタ121はホストチャネル・インタフェース214、キャッシュメモリ・インタフェース215、ネットワーク・インタフェース211、プロセッサ210、ローカルメモリ213、及びプロセッサ周辺制御部212を備える。
ホストチャネル・インタフェース214は、チャネルアダプタ121を、チャネル110、111、112、113を介してホスト計算機100に接続するためのインタフェースである。ホストチャネル・インタフェース214は、チャネル110、111、112、113上のデータ転送プロトコルと、ストレージコントローラ120内部のデータ転送プロトコルとを相互に変換する。
キャッシュメモリ・インタフェース215は、チャネルアダプタ121を、相互結合網127、128に接続するためのインタフェースである。
ネットワーク・インタフェース211は、チャネルアダプタ121を、保守端末130に接続するためのインタフェースである。
なお、ホストチャネル・インタフェース214とキャッシュメモリ・インタフェース215とは、信号線216によって接続されている。
プロセッサ210は、ローカルメモリ213に記憶されているプログラムを実行することによって各種処理を行う。より詳細には、プロセッサ210は、ホスト計算機100と相互結合網127、128との間のデータ転送を制御する。
ローカルメモリ213は、プロセッサ210によって実行されるプログラムを記憶する。また、ローカルメモリ213は、プロセッサ210によって参照されるテーブルを記憶する。プロセッサ210によって参照されるテーブルは、チャネルアダプタ121の動作を制御するための設定情報を含み、管理者によって設定又は変更される。この場合、管理者は、テーブルの設定又はテーブルの変更に関する情報を、保守端末130に入力する。保守端末130は、入力された情報を、ネットワーク・インタフェース211を介してプロセッサ210に送信する。プロセッサ210は、受信した情報に基づいて、テーブルを作成又は変更する。そして、プロセッサ210は、テーブルをローカルメモリ213に格納する。
プロセッサ周辺制御部212は、ホストチャネル・インタフェース214、キャッシュメモリ・インタフェース215、ネットワーク・インタフェース211、プロセッサ210、及びローカルメモリ213の間におけるデータ転送を制御する。プロセッサ周辺制御部212は、例えば、チップセット等である。
なお、チャネルアダプタ122のハードウェア構成は、チャネルアダプタ121のハードウェア構成と同一であるので、チャネルアダプタ122のハードウェア構成についての説明を省略する。
図3はストレージアダプタ125のハードウェア構成を示す図である。ストレージアダプタ125は、キャッシュメモリ・インタフェース224、ストレージチャネルインタフェース225、ネットワーク・インタフェース221、プロセッサ220、ローカルメモリ223、及びプロセッサ周辺制御部222を備える。
キャッシュメモリ・インタフェース224は、ストレージアダプタ125を、相互結合網127、128に接続するためのインタフェースである。
ストレージチャネルインタフェース225は、ストレージアダプタ125を、チャネル140、141、142、143に接続するためのインタフェースである。ストレージチャネルインタフェース225は、チャネル140、141、142、143上のデータ転送プロトコルと、ストレージコントローラ120内部のデータ転送プロトコルとを相互に変換する。
なお、キャッシュメモリ・インタフェース224とストレージチャネルインタフェース225とは、信号線226によって接続されている。
ネットワーク・インタフェース221は、ストレージアダプタ125を、保守端末130に接続するためのインタフェースである。
プロセッサ220は、ローカルメモリ223に記憶されているプログラムを実行することによって各種処理を行う。
ローカルメモリ223は、プロセッサ220によって実行されるプログラムを記憶する。また、ローカルメモリ223は、プロセッサ220によって参照されるテーブルを記憶する。プロセッサ220によって参照されるテーブルは、ストレージアダプタ125の動作を制御するための設定情報を含み、管理者によって設定又は変更される。この場合、管理者は、テーブルの設定又はテーブルの変更に関する情報を、保守端末130に入力する。保守端末130は、入力された情報を、ネットワーク・インタフェース221を介してプロセッサ220に送信する。プロセッサ220は、受信した情報に基づいて、テーブルを作成又は変更する。そして、プロセッサ220はテーブルをローカルメモリ223に格納する。
プロセッサ周辺制御部222は、キャッシュメモリ・インタフェース224、ストレージチャネルインタフェース225、ネットワーク・インタフェース221、プロセッサ220及びローカルメモリ223の間のデータ転送を制御する。プロセッサ周辺制御部222は、例えば、チップセット等である。
なお、ストレージアダプタ126のハードウェア構成は、ストレージアダプタ125のハードウェア構成と同一であるので、ストレージアダプタ126のハードウェア構成についての説明を省略する。
図4はフラッシュメモリ・モジュール151のハードウェア構成を示す図である。フラッシュメモリ・モジュール151は、メモリコントローラ310及びフラッシュメモリ320を備える。フラッシュメモリ320は、データを記憶する。メモリコントローラ310は、フラッシュメモリ320のデータの「読み出し」、「書き込み」、及び「消去」を制御する。
メモリコントローラ310は、プロセッサ312、インタフェース311、データ転送部315、RAM313、及びROM314を備える。フラッシュメモリ320は、複数のフラッシュメモリ・チップ321を備える。
図5はフラッシュメモリ・チップ321の内部構成を示す図である。フラッシュメモリ・チップ321は、複数のブロック330を含み、それぞれのブロック330にデータを記憶する。ブロック330は、メモリコントローラ310がデータを消去する単位である。ブロック330は、複数のページ340を含む。ページ340は、メモリコントローラ310がデータを読み書きする単位である。フラッシュメモリ320では、1ページあたり20μs程度の時間でデータを読み出し、1ページあたり0.2ms程度の時間でデータを書き込む。また、1ブロックあたり1.5ms程度の時間でデータを消去する。フラッシュメモリ320へのページ書き込みにかかる時間は、キャッシュメモリ123、124への同サイズのデータの書き込みにかかる時間よりも長い。なお、書き込みや消去はメモリセルを徐々に劣化させ、多数回(例えば、数10万回)の書き換えを行うとエラーが発生することがある。
ページ340は、メモリコントローラ310により有効ページ、無効ページ、未書込ページ、又は不良ページの何れかに分類される。有効ページは、ストレージシステム10として格納しておく必要がある有効なデータを記憶しているページ340である。無効ページは、ストレージシステム10として格納する必要がなくなった無効なデータ(ガベッジ)を記憶しているページ340である。未書込ページは、所属するブロック330が消去されて以来データを記憶していないページ340である。不良ページは、ページ340内の記憶素子が壊れている等の理由によって、物理的に書き換えできないページ340である。ページ340が不良ページとなる要因には次の3つがある。
1つ目は、チップ製造段階の検査で不合格になること。2つ目は、ページ340の書込においてエラーが発生すること。なお、当該不良ページは、それ以降は読み出しのみ可能となる。このページを1つでも含むブロック330は不良ブロックと呼ばれ、ブロック消去やページ書込が禁止される。3つ目は、ブロック330の消去においてエラーが発生すること。なお、当該ブロック内の全ページは不良ページとなる。当該ブロックは不良ブロックと呼ばれ、ブロック消去やページ書込が禁止される。
インタフェース311は、チャネル140を介してストレージコントローラ120内のストレージアダプタ125に接続されている。また、インタフェース311は、チャネル144を介してストレージコントローラ120内のストレージアダプタ126に接続されている。インタフェース311は、ストレージアダプタ125及びストレージアダプタ126からの命令を受信する。ストレージアダプタ125及びストレージアダプタ126からの命令は、例えば、SCSIコマンドである。
詳細には、インタフェース311は、ストレージアダプタ125及びストレージアダプタ126からデータを受信する。そして、インタフェース311は、受信したデータをRAM313にバッファする。また、インタフェース311は、RAM313にバッファされているデータを、ストレージアダプタ125及びストレージアダプタ126へ送信する。
また、インタフェース311は、ハードディスクドライブとの互換性を有するインタフェース機能を有している。そのため、ストレージアダプタ125、126は、フラッシュメモリ・モジュール151〜184を、ハードディスクドライブとして認識する。ストレージシステム10は、データを格納するための記録媒体として、フラッシュメモリ・モジュールとハードディスクドライブとを混載してもよい。
RAM313は、例えば、ダイナミック型ランダムアクセスメモリであり、高速に読み書きできる。RAM313は、インタフェース311が送受信するデータを一時的に記憶する。一方、ROM314は、不揮発性メモリであり、プロセッサ312によって実行されるプログラムを記憶する。プロセッサ312によって実行されるプログラムは、プロセッサ312が実行可能となるように、ストレージシステム10の起動時にROM314からRAM313へロードされる。また、RAM313は、プロセッサ312によって参照される管理情報を記憶する。
プロセッサ312によって参照される管理情報は、フラッシュメモリ320の論理ページアドレスと物理ページアドレスとを変換するためのアドレス変換テーブルを含む。論理ページアドレスは、フラッシュメモリ・モジュール151の外部から(例えば、ストレージアダプタ125から)、フラッシュメモリ320に読み書きする単位であるページを論理的に指示するためのアドレスである。物理ページアドレスは、メモリコントローラ310が、フラッシュメモリ320を読み書きする単位であるページを物理的にアクセスするためのアドレスである。プロセッサ312は、ページ対応関係の変化に応じてアドレス変換テーブルの内容を書き換える。なお、アドレス変換テーブルの具体的な例については口授する。
さらに、この管理情報は、フラッシュメモリ320の物理的なページ340の状態を管理するためのページ状態テーブルを含む。ページ状態テーブルは、予め定義されたページ状態を符号化したものを格納する。ページ状態は16進数表記で以下の4通りを定義する。
・状態=0…有効ページ
・状態=8…無効ページ
・状態=9…不良ページ
・状態=F…未書込ページ
ページ状態テーブルはブロック単位で状態を保持する。例えば、あるブロックのページ状態が“880F”のとき、その第1・第2ページは無効データを含み、第3ページは有効データを含み、第4ページは未書込であることを意味する。プロセッサ312は、ページ状態の変化に応じてページ状態テーブルの内容を書き換える。なお、ページ情報テーブルの具体的な例については後述する。
データ転送部315は、例えばスイッチであり、プロセッサ312、インタフェース311、RAM313、ROM314、及びフラッシュメモリ320を相互に接続し、それらの間のデータ転送を制御する。
プロセッサ312は、RAM313に記憶されているプログラムを実行することによって、各種処理を行う。例えば、プロセッサ312は、RAM313に記憶されているアドレス変換テーブルを参照して、フラッシュメモリ320の論理ページアドレスとフラッシュメモリ320の物理ページアドレスとを変換し、フラッシュメモリ320にデータを読み書きする。また、プロセッサ312は、フラッシュメモリ・モジュール151内のブロック330について、ガベッジコレクション処理(ブロック再生処理)を行う。
ガベッジコレクション処理(ブロック再生処理)は、新しいデータを書くための未書込ページが少なくなったときに、未書込ページ数を増やすために、あるブロック330内の無効ページを未書込ページに再生する処理である。ガベッジコレクション処理の対象となるブロック(対象ブロック)330としては、最も多くの無効ページが存在しているブロックを選択する。未書込ページを増加させるには、無効ページを消去する必要があるが、消去はブロック単位でしかできないため、プロセッサ312は、有効ページのデータを未書込ページのあるブロックに複写し、その後、対象ブロックを消去して、ブロックを再生する。このように、フラッシュメモリ・モジュール151に書き込まれたデータは、ストレージコントローラ120からの指示とは独立に、フラッシュメモリ・モジュール151内で移動することがある。メモリコントローラ310は、このデータ移動の結果を、アドレス変換テーブルやページ状態テーブルに正しく反映する。それにより、ストレージコントローラ120は、正しいデータをアクセスすることができる。
プロセッサ312は、フラッシュメモリ320におけるページ書き込みやガベッジコレクション処理を通じて変化する論理ページアドレスと物理ページアドレスの対応関係、ページ状態を、それぞれアドレス変換テーブル、ページ状態テーブルを用いて管理する。
なお、フラッシュメモリ・モジュール151のハードウェア構成について詳述したが、他のフラッシュメモリ・モジュール152〜184についても、同様のハードウェア構成を有している。このため、他のフラッシュメモリもミュール152〜184については、図示及び説明を省略する。
図5に示すように、各ブロックを構成する複数のページ340は、いずれもデータ部350及び冗長部351を含む。例えば、1ページにつき、ページ340は2112バイト、データ部350は2048バイト、冗長部351は64バイトである。なお、本発明はそれらのページ・サイズを特に限定するものではない。
データ部350は、ユーザデータを記憶する。冗長部351は、ページ340自身に対応する論理ページアドレス、書込み時刻、及びエラー訂正コードを記憶する。論理ページアドレスは、ストレージシステム10の起動時にRAM313上にアドレス変換テーブルを作成するときや、ガベッジコレクション処理のときに参照する。書込み時刻は、ストレージシステム10の起動時にRAM313上にページ状態テーブルを作成するときに、ページ340が有効ページか無効ページであるかを知るために参照する。同じ論理ページアドレスが記録された複数のページが存在する場合、この時刻が最も遅いものが有効ページであり、それ以外は無効ページである。エラー訂正コードは、ページ340のエラーを検出及び訂正するための情報であり、例えば、BCH(Bose-Chaud-huri-Hocquenghem)符号である。冗長部351は、通常、メモリコントローラ310のみがアクセス可能であり、ストレージアダプタ125、126からは、データ部350の内容のみがアクセス可能である。
(2)不良ブロックの代替方法の選択とその影響
図6〜9は、フラッシュメモリ・チップ321を構成する複数のブロックの中に不良ブロックが発生したときの2種類のブロック代替方法と、それぞれがフラッシュメモリ・モジュール151〜154、161〜164、171〜174及び181〜184へのライト性能およびキャッシュメモリ123のヒット確率に及ぼす影響を説明するための図である。
説明を簡単化するため、一般的なフラッシュメモリ・チップよりも少ないブロック数、ブロック内ページ数とする。すなわち、ユーザデータの読み書きに使用するブロック数を7個とし、各ブロックは4ページで構成する。また、ユーザデータを格納する論理ページはA〜Lの12ページ(3ブロック分)とする。つまり、初期状態では、格納データ更新制御に使用される予備領域は4ブロックである。なお、図6〜8で斜線の入ったページは無効ページ、空白のページは未書込ページである。
図6は、フラッシュメモリ・チップ321とキャッシュメモリ123を示すT1を示している。図6に示すように、T1は、フラッシュメモリ・チップ321内の1つのブロックが不良化し、2つ目の不良ブロックが発生する前の状態を示している。不良化したブロックは、4ページ全てが「bad」と示されているブロック330Aである。この1つ目の不良ブロック330Aはフラッシュメモリ321内で代替される。このため、予備領域は4ブロックから3ブロックになる。また、未書込ページの残数はブロック330Bの4ページになっており、ガベッジコレクションが必要な状態である。
この時点で、利用可能な24個の物理ページ(6ブロック分)内に12個の論理ページが配置されている。したがって、フラッシュメモリ320の論理ページの冗長度は24/12=200パーセント(%)である。また、4個の未書込ページを除く20個の物理ページ中に12個の有効ページが含まれるため、平均的な無効ページ含有率は8/20=40%(1ブロック辺り1.6ページ)である。したがって、ガベッジコレクション時に他ブロックへ退避すべき有効ページは平均60%(1ブロック辺り2.4ページ)である。
図7は、フラッシュメモリ・チップ321とキャッシュメモリ123を示すT2を示している。図7に示すように、T2は、フラッシュメモリ・チップ321内の2つのブロック330A、330Cが不良化した状態を示している。2つ目の不良化したブロックは、4ページ全てが「bad」と示されているブロック330Cである。1つ目の不良ブロック330Aと同様に、2つ目の不良ブロック330Cもフラッシュメモリ320内のブロック330Bで代替される。このため、予備領域は4ブロックから2ブロックになる。また、未書込ページの残数は4ページになっており、ガベッジコレクションが必要な状態である。
この時点で、利用可能な20個の物理ページ(5ブロック分)内に12個の論理ページが配置されている。したがって、フラッシュメモリ320の論理ページの冗長度は20/12=167%である。また、4個の未書込ページを除く16個の物理ページ中に12個の有効ページが含まれるため、平均的な無効ページ含有率は4/16=25%(1ブロック辺り1ページ)である。したがって、ガベッジコレクション時に他ブロックへ退避すべき有効ページは平均75%(1ブロック辺り3ページ)である。このため、図6の場合に比べてガベッジコレクション時の有効ページ退避量は多くなり、このフラッシュメモリ・モジュール151のライト性能は低下する。なお、有効利用可能なキャッシュメモリ123容量は図6の場合と変わらないので、ストレージシステム10のキャッシュヒット確率は不変である。
図8は、フラッシュメモリ・チップ321とキャッシュメモリ123を示すT3を示している。図8に示すように、T3は、フラッシュメモリ・チップ321内の2つのブロック330A、330Cが不良化した状態を示す。1つ目の不良ブロック330Aはフラッシュメモリ320内で代替されているが、2つ目の不良ブロック330Cはキャッシュメモリ123内の一部の領域400で代替されている。キャッシュメモリ123内の一部の領域400内で代替されるE〜Hの4個の論理ページデータはキャッシュメモリ123上にのみ存在し、フラッシュメモリ320から消失している。その結果、ユーザデータを格納する論理ページはA〜D、I〜Lの8ページ(2ブロック分)となる。このため、予備領域は4ブロックから3ブロックになる。また、未書込ページの残数は4ページになっており、ガベッジコレクションが必要な状態である。
この時点で、利用可能な20個の物理ページ(5ブロック分)内に8個の論理ページが配置されている。したがって、フラッシュメモリ320の論理ページの冗長度は20/8=250%である。また、4個の未書込ページを除く16個の物理ページ中に8個の有効ページが含まれるため、平均的な無効ページ含有率は8/16=50%(1ブロック辺り2ページ)である。したがって、ガベッジコレクション時に他ブロックへ退避すべき有効ページは平均50%(1ブロック辺り2ページ)である。このため、図6の場合に比べてガベッジコレクション時の有効ページ退避量は少なくなり、このフラッシュメモリ・モジュール151のライト性能は向上する。なお、有効利用可能なキャッシュメモリ123の容量は、4個の論理ページデータ分削減されるので、図6のT1の場合に比べてストレージシステム10のキャッシュヒット確率は低下する。
図9は、以上の説明をまとめたテーブルT4である。図9に示すように、テーブルT4は、項目名T41、T1〜T3における結果T41〜T43が対応付けられている。項目名T41は、フラッシュメモリの論理ページの冗長度、ガベッジコレクション時の無効ページ含有率(平均)、ガベッジコレクション時の有効ページ移動量(平均)、フラッシュメモリのライト性能及びキャッシュメモリのヒット確立という項目名が配置されている。フラッシュメモリの論理ページの冗長度は、T41(200%)、T42(167%)、T43(250%)となっている。ガベッジコレクション時の無効ページ含有率(平均)は、T41(40%)、T42(25%)、T43(50%)となっている。ガベッジコレクション時の有効ページ移動量は、T41(60%)、T42(75%)、T43(50%)となっている。また、フラッシュメモリ320のライト性能は、T42の場合は低下し、T43の場合は向上する。キャッシュメモリ123のヒット確立は、T42の場合は不変であるが、T43の場合は低下する。
図9に示すように、不良ブロック330Cの代替先としてフラッシュメモリ320を選択すると、ストレージシステム10のライト性能は低下するという欠点がある。一方、不良ブロック330Cの代替先としてキャッシュメモリ123を選択すると、ストレージシステム10のライト性能は向上するという利点があるが、キャッシュヒット確率は低下するという欠点がある。キャッシュヒット確率が低下するということは、ミスヒットによるキャッシュメモリ123からフラッシュメモリ320へのライトバック頻度が多くなることである。上記のように、フラッシュメモリ320へのページ書き込みにかかる時間は、キャッシュメモリ123への同サイズのデータの書き込みにかかる時間よりも長い。したがって、キャッシュヒット確率が低下するということは、結果的にストレージシステム10のライト性能を低下させる。
不良ブロック330Cの代替先としてキャッシュメモリ123を選択することの利点・欠点はトレードオフの関係にあり、ホスト計算機100のフラッシュメモリ320へのアクセスパターンにより、ストレージシステム10のライト性能が向上したり低下したりする。例えば、ランダムライトでは、キャッシュメモリ123の有用性が低いので、フラッシュメモリ・モジュール151のライト性能を向上させたほうが良く、不良ブロック(例えば、330C)の代替先としてキャッシュメモリ123を選択したほうが有利である。また、例えば、部分集中ライトでは、キャッシュメモリ123の有用性が高いので、有効利用可能なキャッシュメモリ123の容量を減らさずにヒット確率を維持したほうがよく、不良ブロック(例えば、330C)の代替先としてフラッシュメモリ320を選択したほうが有利である。
本発明を適用したストレージシステム10は、不良ブロックの代替先としてキャッシュメモリ123を選択したときのストレージシステム10のライト性能をホスト計算機100のアクセスパターンに基づいて推定し、ストレージシステム10のライト性能が向上すると判断される場合には不良ブロックの代替先としてキャッシュメモリ123を選択する。逆に、ストレージシステム10のライト性能が低下すると判断される場合には不良ブロックの代替先として従来技術のようにフラッシュメモリ320を選択する。この処理については、後述する。
(3)キャッシュメモリおよびフラッシュメモリの管理手段
図10、図11を参照しながら、ストレージシステム10におけるキャッシュメモリ123およびフラッシュメモリ・チップ321の管理手段を説明する。図10及び図11は、上記管理手段を説明するために、キャッシュメモリ123、共有メモリ129、RAM313及びフラッシュメモリ・チップ321に記憶される内容を説明するための図である。なお、キャッシュメモリ124や、その他のフラッシュメモリ・チップについても同様であるため、キャッシュメモリ124や、その他のフラッシュメモリ・チップについては説明を省略する。
説明を簡単化するため、図6〜図9の場合と同様にユーザデータの読み書きに使用するブロック数を7個とし、各ブロックは4ページで構成する。また、ユーザデータを格納する論理ページはAx〜Lxの12ページ(3ブロック分)とする。ここで、xは0以上の整数であり、各論理ページの更新回数を示す。例えば、E2とは2回更新された論理ページEのデータを示す。図6〜図9の場合と同様に、斜線の入ったページは無効ページ、空白のページは未書込ページである。また、キャッシュメモリ123の管理方式はフラッシュメモリ320のページ・サイズを単位とする2way−セットアソシアティブ方式とする。この方式は、1つのwayが4つのindex0〜3を持ち、論理ページA、E、Iはインデックス(index)=0の2エントリを利用し、論理ページB、F、Jはインデックス=1の2エントリを利用し、論理ページC、G、Kはインデックス=2の2エントリを利用し、論理ページD、H、Lはインデックス=3の2エントリを利用するものである。なお、本発明はキャッシュメモリ123の管理方式を特に限定するものではない。
図10及び図11に示すように、共有メモリ129には、キャッシュメモリ123を管理するためのキャッシュ管理テーブル500を含む。フラッシュメモリ・モジュール151内のRAM313には、フラッシュメモリ・チップ321を管理するためのアドレス変換テーブル510、ページ状態テーブル520を含む。なお、図10は、第5ブロックが不良化し、そのブロックがフラッシュメモリ・チップ321内で代替されている状態を示している。また、図11は、図10の状態から第4ブロックの第2ページにデータを書き込む際にライトエラーが発生し、第4ブロックが2つ目の不良ブロックになり、キャッシュメモリ123の一部をその代替先としたときの状態を示している。
図10及び図11に示すように、キャッシュ管理テーブル500、は、4つのインデックス5001とそれぞれ2つのウェイ(way)5002、合計8エントリの使用状態を管理する。各エントリについてバリッド(valid)フラグ5003、キー(key)レジスタ5004、ダーティ(dirty)レジスタ5005を持つ。バリッドフラグ5003はそのエントリが使用中か否かを記録し、
・valid=on:使用中
・valid=off:空き
と定義される。キーレジスタ5004はそのエントリに格納しているキャッシュデータの論理ページを記録する。ダーティ(dirty)レジスタ5005はそのエントリのキャッシュデータがフラッシュメモリ320上のデータよりも新しいかどうか、あるいはそのエントリがフラッシュメモリ・チップ321の不良ブロック代替用に使用されているかを記録し、
・dirty=yes:フラッシュメモリ320のものより新しい更新データ保持
・dirty=no:フラッシュメモリ320のものと同じオリジナルデータ保持
・dirty=sub:代替先として使用状態
と定義される。dirty=yesのエントリは、別の論理ページのために使用する前にフラッシュメモリ320へライトバックして同期をとる必要がある。dirty=subのエントリは、フラッシュメモリ320上にライトバック先がないので別の論理ページのために使用しないように管理する必要がある。
図10及び図11に示すアドレス変換テーブル510は、上記のように論理ページアドレスと物理ページアドレスとを変換するためにそれらの対応状態を管理する。アドレス変換テーブル510は、LPA5101とPPA5102が対応して構成される。このアドレス変換テーブル510において、LPAは論理ページアドレス、PPAは物理ページアドレスを意味する。なお、ブロック番号X内のページ番号Yの物理ページアドレスはXYで表している。
図10及び図11に示すページ状態テーブル520は、前述のようにブロック単位で各ページ状態を管理する。図10及び図11において、ブロック(block)5201はブロック番号、ステータス(status)5202はそのブロックのページ状態を表す。
以下、図10の状態から図11の状態に遷移するときのキャッシュ管理テーブル500アドレス変換テーブル510、ページ状態テーブル520の変化について説明する。
キャッシュメモリ123でのみ管理する対象論理ページとして、例えば、4個の論理ページE〜Hを選択する。
キャッシュ管理テーブル500を参照し、論理ページEの最新データE2はすでにキャッシュメモリ123上にあるので、データ転送せずにダーティレジスタをsub(代替状態)に設定する。
キャッシュ管理テーブル500を参照し、論理ページFの最新データF0はキャッシュメモリ123上にないので、インデックス=1の空きエントリにデータ転送して、バリッドフラグを「on」(使用中)、ダーティレジスタを「sub」(代替状態)に設定する。
キャッシュ管理テーブル500を参照し、論理ページGの最新データG0はキャッシュメモリ123上にないので、K0をキャッシュしているインデックス=2のダーティ=「no」(オリジナルデータ保持)のエントリにデータ転送して、バリッドフラグを「on」(使用中)、ダーティレジスタを「sub」(代替状態)に設定する。
キャッシュ管理テーブル500を参照し、論理ページHの最新データH0はキャッシュメモリ123上にないので、インデックス=3の空きエントリにデータ転送して、バリッドフラグを「on」(使用中)、ダーティレジスタを「sub」(代替状態)に設定する。
図11に示すキャッシュ管理テーブル600は、以上の設定結果を示している。
次に、アドレス変換テーブル510において、論理ページE〜Hに対応する物理ページアドレス5102を調べ、ページ状態テーブル520において、その物理ページのページ状態を「8」(無効)に設定する。すなわち、ページ状態テーブル520の第2ブロックの欄を「8888」に設定する。そして、アドレス変換テーブル510において、論理ページE〜Hに対応する物理ページアドレスをいずれもクリアして「対応なし」の状態に設定する。なお、「対応なし」は、アドレス変換テーブル510の実装上は、「対応なし」を意味する特別な値(例えば、「FFFFFFFF(16進数)」)を定義し、その値をRAM313に書き込むことで「対応なし」状態を表現する。このRAM313に書き込む値は実際に使用する論理ページアドレス範囲外の値であれば、どのような値でもよい。
次に、不良が発生した第4ブロックに含まれる有効ページのデータを退避する。つまり、第0ページのB1は未書込ページ(例えば、第6ブロックの第0ページ)にコピーする。当該コピー先ページが有効ページであることを示すため、ページ状態テーブル520の第6ブロックの欄を「0FFF」に設定する。また、アドレス変換テーブル510のLPA5101「B」に対応するPPA5102を「60」に設定する。
第1ページの「E2」はキャッシュメモリ123でのみ管理するので、すでに退避が完了しており、特に何もしない。
最後に、第4ブロックが不良ブロックとなったことを示すため、ページ状態テーブル520の第4ブロックのステータス5202の欄を「9999」に設定する。
図11に示すアドレス変換テーブル510、ページ状態テーブル520は、以上の設定結果を示している。
(4)ストレージコントローラ120およびメモリコントローラ310の処理手順
図12〜図16を参照しながら、ストレージシステム10におけるストレージコントローラ120およびメモリコントローラ310の詳細な処理手順を説明する。以下、上記図10、図11に示したキャッシュメモリ123およびフラッシュメモリ320の管理手段に基づいて説明する。
図12は、ホスト計算機100からのデータライト要求について、ストレージコントローラ120とメモリコントローラ310が行う処理を示すフローチャートである。以下、その手順を説明する。
まず、ストレージコントローラ120はライト要求としてライト対象論理ページアドレスと新しいデータを受信し(S701)、当該論理ページアドレスのデータを含むエントリがキャッシュメモリ123内に存在するかを、キャッシュ管理テーブル500で調べる(S702)。
その結果が真(存在する)ならば(S702:YES)、ストレージコントローラ120はキャッシュメモリ123内の当該データを、受信した新しいデータで更新する(S703)。そして、そのエントリのダーティレジスタ5005が「sub(代替状態)」であるかを調べる(S704)。それが真ならば(S704:YES)、そのまま処理を終える。それが偽ならば(S704:NO)、当該ダーティレジスタ5005を「yes」(更新データ保持)に設定し(S705)、処理を終える。
一方、ステップS702の結果が偽(存在しない)ならば(S702:NO)、ストレージコントローラ120はキャッシュ管理テーブル500でバリッドフラグ5003が「off」のエントリ(空きエントリ)が存在するか調べる(S706)。空きエントリが存在すれば(S706:YES)、受信した新しいデータを当該エントリに書き込む(S710)。このとき、ストレージコントローラ120はそのエントリのバリッドフラグ5003を「on:(使用中)」に設定する。
一方、空きエントリが存在しない場合は(S706:NO)、ストレージコントローラ120はダーティレジスタ5005が「no」のエントリ(オリジナルデータ保持エントリ)が存在するか調べる(S707)。オリジナルデータ保持エントリが存在すれば(S707:YES)、そのエントリは上書きしても問題ないので、空きエントリ存在の場合と同様にステップS710へ遷移する。
オリジナルデータ保持エントリが存在しなければ(S707:NO)、ストレージコントローラ120はダーティレジスタ5005が「yes」のエントリ(更新データ保持エントリ)の格納データをフラッシュメモリ320へライトバックし(S708、図14参照)、そのダーティレジスタ5005を「no」に設定する(S709)。その結果、そのエントリは上書きしても問題ないので、空きエントリ存在の場合と同様にステップS710へ遷移する。なお、ライトバック処理S708の対象となるエントリの選択には、例えば、LRU(Least Recently Used)アルゴリズムを適用する。
ステップS710の後、ストレージコントローラ120はそのダーティレジスタ5005を「yes」(更新データ保持)に設定して(S705)、処理を終える。
図13は、ホスト計算機100からのデータリード要求について、ストレージコントローラ120とメモリコントローラ310が行う処理を示すフローチャートである。以下、その手順を説明する。
まず、ストレージコントローラ120はリード要求としてリード対象論理アドレスを受信し(S711)、当該論理ページアドレスのデータを含むエントリがキャッシュメモリ123内に存在するかを、キャッシュ管理テーブル500で調べる(S712)。
その結果が偽(存在しない)ならば(S712:NO)、ストレージコントローラ120はキャッシュ管理テーブル500でバリッドフラグ5003が「off」のエントリ(空きエントリ)が存在するか調べる(S715)。空きエントリが存在すれば(S715:YES)、受信した論理アドレスからフラッシュメモリ・モジュール151〜154、161〜164、171〜174及び181〜184のいずれのフラッシュメモリ・モジュールの論理ページアドレスを特定し、メモリコントローラ310がアドレス変換テーブル510によりそれに対応する物理ページアドレス5102を調べ、そのページの格納データを読み出す(S719)。そして、メモリコントローラ310は、そのデータをキャッシュメモリ123の当該エントリに転送する(S720)。このとき、ストレージコントローラ120はそのエントリのバリッドフラグ5003を「on」(使用中)、ダーティレジスタ5005を「no」(オリジナルデータ保持)に設定する。その後、ステップS712に戻る。
一方、空きエントリが存在しない場合は(S715:NO)、ストレージコントローラ120はダーティレジスタ5005が「no」のエントリ(オリジナルデータ保持エントリ)が存在するか調べる(S716)。オリジナルデータ保持エントリが存在すれば(S716:YES)、そのエントリは上書きしても問題ないので、空きエントリ存在の場合と同様にステップS719へ遷移する。オリジナルデータ保持エントリが存在しなければ(S716:NO)、ストレージコントローラ120はダーティレジスタ5005が「yes」のエントリ(更新データ保持エントリ)の格納データをフラッシュメモリ320へライトバックし(S717、図14参照)、そのダーティレジスタ5005を「no」に設定する(S718)。その結果、そのエントリは上書きしても問題ないので、空きエントリ存在の場合と同様にステップS719へ遷移する。なお、ライトバック処理S717の対象となるエントリの選択には、例えば、LRUアルゴリズムを適用する。
一方、ステップS712の結果が真(存在する)ならば(S712:YES)、ストレージコントローラ120はキャッシュメモリ123内の当該データを読み出し(S713)、ホスト計算機100へそれを送信して(S714)、処理を終える。
図14は、図12におけるメモリコントローラ310によるキャッシュデータのライトバック処理S708、図13におけるメモリコントローラ310によるキャッシュデータのライトバック処理S717、後述する図15におけるメモリコントローラ310によるキャッシュデータのライトバック処理S905の詳細な処理手順を示すフローチャートである。以下、その手順を説明する。
まず、メモリコントローラ310はキャッシュメモリ123からライトバック対象の論理ページアドレスとそのデータを取得する(S801)。そして、ページ状態テーブル520を用いて状態=「F」(未書込)のページを選択し、そのページに取得したデータを書き込む(S802)。そして、メモリコントローラ310は、書き込みにエラーが発生したかを判定する(S803)。書き込みがエラーならば(S803:YES)、メモリコントローラ310は、不良ブロック代替処理(S804)を実施して、ステップS802に戻る。不良ブロック代替処理の詳細は図15を参照して後述する。
一方、書き込みが成功ならば(S803:NO)、メモリコントローラ310は、アドレス変換テーブル510を用いてライトバック対象の論理ページアドレス5101に対応する物理ページアドレス(旧アドレス)5102を調べ、ページ状態テーブル520においてその旧アドレスが示すページの状態を「8」(無効)に設定する(S805)。
そして、アドレス変換テーブル510において、メモリコントローラ310は、ライトバック対象の論理ページアドレス5012に対応する物理ページアドレス5102に、ステップS802で書き込んだ物理ページのアドレス(新アドレス)を設定する(S806)。また、メモリコントローラ310は、ページ状態テーブル520においてその新アドレスが示すページの状態を「0」(有効)に設定する(S807)。最後に、メモリコントローラ310は、ガベッジコレクション処理(S808)を実施し、次回のライトバックのために十分な未書込ページを確保して、ライトバック処理を終える。
図15は、図14におけるストレージコントローラ120とメモリコントローラ310による不良ブロックの代替処理S804の詳細な処理手順を示すフローチャートである。以下、その手順を説明する。
まず、メモリコントローラ310は不良ブロックの代替先としてキャッシュメモリ123を選択した場合と、フラッシュメモリ320を選択した場合とで、ストレージシステム10のライト性能の変化をそれぞれ推定し、比較する(S900)。そのライト性能の具体的方法の一例は後述する。
メモリコントローラ310は、比較の結果、キャッシュメモリ123へ代替したほうが有利か否かを判定し(S901)、キャッシュメモリ123へ代替したほうが有利(ライト性能が高い)であれば(S901:YES)、キャッシュメモリ123への代替処理(S902〜S911及びS917)を実施し、さもなくば(S901:NO)、フラッシュメモリ320への代替処理(S912〜S917)を実施する。
キャッシュメモリ123への代替処理としては、まず、メモリコントローラ310はページ状態テーブル520を用いて不良ブロックの発生したフラッシュメモリ・チップ321から1ブロック分の有効ページ(図6〜図11の例では4ページ)を選択する(S902)。ストレージコントローラ120はキャッシュ管理テーブル500でバリッドフラグ5003が「off」のエントリ(空きエントリ)が存在するか調べる(S903)。
空きエントリが存在すれば(S903:YES)、メモリコントローラ310はステップS902で選択した有効ページの1つの格納データを当該エントリに移動する(S907)。このとき、ストレージコントローラ120はそのエントリのバリッドフラグ5003を「on」(使用中)に設定する。そして、ストレージコントローラ120はそのダーティレジスタ5005を「sub」(代替状態)に設定する(S908)。
一方、空きエントリが存在しない場合は(S903:NO)、ストレージコントローラ120はダーティレジスタ5005が「no」のエントリ(オリジナルデータ保持エントリ)が存在するか調べる(S904)。オリジナルデータ保持エントリが存在すれば(S904:YES)、そのエントリは上書きしても問題ないので、空きエントリ存在の場合と同様にステップS907へ遷移する。
オリジナルデータ保持エントリが存在しなければ(S904:NO)、ストレージコントローラ120はダーティレジスタ5005が「yes」のエントリ(更新データ保持エントリ)の格納データをフラッシュメモリ320へライトバックし(S905、図14参照)、そのダーティレジスタ5005を「no」に設定する(S906)。その結果、そのエントリは上書きしても問題ないので、空きエントリ存在の場合と同様にステップS907へ遷移する。なお、ライトバック処理S905の対象となるエントリの選択には、例えば、LRUアルゴリズムを適用する。ストレージコントローラ120は、ステップS902で選択した全ての有効ページの格納データの移動が終わるまでステップS903〜S908を繰り返す(S909)。
全ての移動が完了すれば(S909:YES)、メモリコントローラ310は不良ブロック内の各有効ページの物理ページアドレスをアドレス変換テーブル510のPPA5102から検出する(S910)。そして、メモリコントローラ310は、検出した物理ページアドレスのページ状態をページ状態テーブル520で「8」(無効)に設定し、アドレス変換テーブル510の当該PPA5102をクリア(「対応なし」を設定)する(S911)。最後に、メモリコントローラ310は、不良ブロックを構成する各ページのページ状態を「9」(不良)に設定し(S917)、不良ブロック代替処理を終える。
一方、フラッシュメモリへの代替処理としては、まず、メモリコントローラ310がガベッジコレクション処理を実施し(S912)、全てのページが未書込状態の消去済みブロックを確保する。
そして、不良ブロック内の有効ページをページ状態テーブル520から検出し、その格納データを当該消去済みブロックに移動する(S913)。次に、メモリコントローラ310は、ページ状態テーブル520でそれぞれの移動先ページの状態を「0」(有効)に設定する(S914)。また、メモリコントローラ310は、不良ブロック内の各有効ページの物理ページアドレスをアドレス変換テーブル510のPPA5102から検出する(S915)。そして、そのPPA5102の欄にステップS913でのそれぞれの移動先ページの物理ページアドレスを設定する(S916)。最後に、メモリコントローラ310は、不良ブロックを構成する各ページのページ状態を「9」(不良)に設定し(S917)、不良ブロック代替処理を終える。
なお、ステップS902で選択する有効ページとしては、書き換え頻度が高い論理ページのデータを格納しているものを選択することが好ましい。なぜなら、書き換えがほとんどない論理ページのデータをキャッシュメモリ123上で永続的に保持することは、性能面で非効率であるからである。
図16は、図14におけるメモリコントローラ310によるガベッジコレクション処理S808、図15におけるメモリコントローラ310によるガベッジコレクション処理S912の詳細な処理手順を示すフローチャートである。以下、その手順を説明する。
まず、メモリコントローラ310はページ状態テーブル520を見て、ページ状態値=「F」(未書込)のページの残数が所定の値以下になったかを調べる(S1001)。なお、ステップS808の時の所定数は「1ブロック分の総ページ数(図6〜図11の例では4ページ)」、ステップS912の時の所定数は「2ブロック分の総ページ数(図6〜図11の例では8ページ)」である。ステップS1001の結果が偽(所定値より大きい)ならば(S1001:NO)、メモリコントローラ310は、何もせずにそのまま処理を終える。
一方、その結果が真(所定値以下)ならば(S1001:YES)、ページ状態値=「8」(無効)であるページを最も多く含むブロックを1つ選択し、その中にあるページ状態値=「0」(有効)である有効ページを全て検出する(S1002)。なお、検出した有効ページ数をNとする。
そしてメモリコントローラ310は、選択したブロック以外のブロック上にあるページ状態値=Fの未書込ページを選択し、ステップS1002で検出した有効ページの1つに格納されたデータを、それぞれ未書込ページの1つにコピー(退避)する(S1003)。次に、メモリコントローラ310は、ページ状態テーブル520において、ステップS1003でのそれぞれのコピー先ページのページ状態値を「0」に設定する(S1004)。そして、メモリコントローラ310は、ステップS1002で検出した有効ページのページ状態値を「8」(無効)に設定する(S1005)。そして、アドレス変換テーブル510上に設定された全ての物理ページアドレス(PPA)の中からステップS1002で検出した有効ページのアドレスを検索することにより、そのアドレスが設定されたPPA5102を検出し、そこにステップS1003でのコピー先ページの物理ページアドレスをコピーする(S1006)。
そして、メモリコントローラ310は、検出した全有効ページがコピー済みかどうかを判定する(S1007)。そして、検出した全ての有効ページがコピー済みでなければ(S1007:NO)、ステップS1003に戻る。すなわち、検出したN個の有効ページの全てについてステップS1003〜S1006を繰り返す。これにより、ステップS1002で選択したブロック内の全ページが無効化され、そこにあった保存すべきページデータの退避も完了する。
一方、検出した全ての有効ページがコピー済みであれば(S1007:YES)、メモリコントローラ310は、ステップS1002で選択したブロックを消去する(S1008)。そして、メモリコントローラ310は、消去時にエラーが発生したか否かを判定する(S1009)。この消去時にエラーが発生したならば(S1009:YES)、ページ状態テーブル520において、選択したブロックの各ページの状態を「9」(不良)に設定して(S1010)、ステップS1002に戻る。消去時にエラーが発生せず、消去が成功したならば(S1009:NO)、ページ状態テーブル520において、そのブロック内の全ページのページ状態値を「F」(未書込)に設定する(S1011)。以上をステップS1001の結果が偽となるまで繰り返し、処理を終える。
(5)不良ブロック代替先によるライト性能の変化の推定・比較方法
図15のステップS900におけるライト性能の変化の推定・比較方法の一例を以下で説明する。
不良ブロックが発生した時点で、そのフラッシュメモリ・チップ321内で管理している論理ブロック数をM、フラッシュメモリ・チップ321で利用可能な(つまり、不良でない)物理ブロック数をNと定義する。このとき、フラッシュメモリ・チップ321の論理ページ冗長度はN/Mとなる。
また、キャッシュメモリ123の総容量をC、フラッシュメモリ・チップ321のブロックサイズをB、キャッシュメモリ123で代替されている不良ブロック数をSと定義する。このとき、キャッシュとして有効利用可能なキャッシュメモリ123の容量は「C−B*S」(*は乗算を示す)となる。
さらに、図12においてP730で囲まれた処理(S703〜S705)に必要な時間をキャッシュメモリライト処理時間Tc、P740で囲まれた処理(S706〜S710及びS705)に必要な時間をフラッシュメモリライト処理時間Tfと定義する。
キャッシュメモリライト処理時間Tcは一定である。しかし、フラッシュメモリライト処理時間Tfは、ライトバック処理S708に要する時間がフラッシュメモリ・チップ321の状態に依存して変化するため一定ではない。図14に示したように、ライトバック処理S708はガベッジコレクション処理S808を含む。図16に示したように、ガベッジコレクション処理S808では2ブロック間で有効ページの置換を行う。図6〜図8を用いて説明したように、このときの置換ページ数の平均は論理ページ冗長度N/Mが小さいほど多くなる。ゆえに、論理ページ冗長度N/Mが小さいほどライトバック処理S708に要する時間は長くなる。したがって、フラッシュメモリライト処理時間Tfは論理ページ冗長度N/Mの関数Tf(N/M)となる。
次に、過去一定時間Δt内に、ホスト計算機100がライトアクセスしたサイズをA、その間のキャッシュメモリ123のヒット率をRとする。このときヒット率Rは、
・AがC−B*S以上のとき、R=(C−B*S)/A
・AがC−B*S未満のとき、R=1
と表される。そして、ホスト計算機100のライトアクセス処理時間の期待値Twは、
・AがC−B*S以上のとき、Tw=R*Tc+(1−R)Tf
・AがC−B*S未満のとき、Tw=Tc
と表される。以上より、ライト処理時間期待値TwはS、M、Nの関数Tw(S、M、N)となる。メモリコントローラ310は、ストレージコントローラ120の管理する「R」、「S」、「A」といった情報に基づいて、この関数Twが今回発生した不良ブロックの代替先によってどのように変化するかを評価する。
キャッシュメモリ123で代替した場合、「S」は1増加、「M」は1減少、「N」は1減少するため、ライト処理時間期待値はTw(S+1、M−1、N−1)に変化すると推定する。フラッシュメモリ320で代替した場合、「S」は不変、「M」は不変、「N」は1減少するため、ライト処理時間期待値はTw(S、M、N−1)に変化すると推定する。
以上より、Tw(S+1、M−1、N−1)がTw(S、M、N−1)未満ならば、フラッシュメモリ320を代替先とした方が有利である。また、Tw(S+1、M−1、N−1)がTw(S、M、N−1)以上ならば、キャッシュメモリ123を代替先とした方が有利である。このような比較により、不良ブロックの代替先を選択する。
例えば、ランダムライトのようなキャッシュメモリ123のヒット率Rが非常に小さい状況下では、フラッシュメモリライト処理時間Tfを短くすることによりライトアクセス処理時間の期待値Twを短くするのが有効であるため、キャッシュメモリ123が代替先として選択されやすくなる。また、例えば、部分集中ライトのようなキャッシュメモリ123のヒット率Rが非常に大きい状況下では、キャッシュとして有効利用可能なキャッシュメモリ123の容量を維持することによりヒット率Rを維持してライトアクセス処理時間の期待値Twの増加を抑えるのが有効であるため、フラッシュメモリ320が代替先として選択されやすくなる。
なお、上記評価において、キャッシュメモリ123の総容量Cに対するキャッシュとして有効利用可能なキャッシュメモリ123の容量の割合に下限を与えたり、キャッシュメモリ123で代替される不良ブロック数Sに上限を与えたりすることにより、キャッシュメモリ123が代替先として選択されるのを制限し、キャッシュとして有効利用可能なキャッシュメモリ123の容量が少なくなり過ぎてストレージシステム10の性能が不安定になることを防止してもよい。ここでの不安定とは、ホスト計算機100からのアクセスパターンの変動に対して性能が大きく変動し、保証性能が確保できない状況になるという意味である。
なお、上記評価において、メモリコントローラ310がストレージコントローラ120の管理する「R」、「S」、「A」といった情報を取得するため、ストレージコントローラ120はそれらを送信するコマンドを発行し、フラッシュメモリ・モジュール151〜154、161〜164、171〜174及び181〜184はそのコマンドを解釈するように構成されている。
(6)代替データの移設によるライト性能最適化
上記の実施形態では、不良ブロック発生時にその代替先の最適な場所を評価したが、通常の動作状況でもそれまでの不良ブロック代替先の最適な配分を評価して、その配分を調整してもよい。
メモリコントローラ310はストレージコントローラ120の管理する「R」、「S」、「A」といった情報を常時監視しながら、関数Tw(S、M、N)の最適化を実施する。
すなわち、例えばキャッシュメモリ123上の代替データを1ブロック分フラッシュメモリ320へ移設した場合、「S」は1減少、「M」は1増加、「N」は不変のため、ライト処理時間期待値はTw(S−1、M+1、N)に変化すると推定する。逆に、フラッシュメモリ320上の代替データを1ブロック分キャッシュメモリ123へ移設した場合、「S」は1増加、「M」は1減少、「N」は不変のため、ライト処理時間期待値はTw(S+1、M−1、N)に変化すると推定する。
以上より、ライト処理時間期待値Tw(S−1、M+1、N)がライト処理時間期待値Tw(S、M、N)未満ならば、キャッシュメモリ123上の代替データを1ブロック分フラッシュメモリ320へ移設する。また、ライト処理時間期待値Tw(S+1、M−1、N)がライト処理時間期待値Tw(S、M、N)未満ならば、フラッシュメモリ320上の代替データを1ブロック分キャッシュメモリ123へ移設する。
以上のように、フラッシュメモリ320を主たる記憶媒体とし、キャッシュメモリ123を搭載し、本発明を適用したストレージシステム10は、フラッシュメモリ320の不良ブロック数の増加に伴って格納データ更新時の作業効率が低下するのを抑制することができるため、フラッシュメモリおよびキャッシュメモリを搭載した従来技術のようなストレージシステムよりもライト性能の低下を抑制するという効果を奏する。
以上(4)〜(6)においては、キャッシュメモリ123で不良ブロックを代替する場合を示したが、キャッシュメモリ124で代替するように構成しても良い。また、(5)や(6)の評価では、キャッシュメモリ123と124を合わせた総容量Cや両者の平均ヒット率R等を計算に用いても良い。
(7)キャッシュメモリデータの信頼性向上
上記の実施形態でのキャッシュメモリ123、124を不揮発性メモリによって構成してもよい。そうすれば、フラッシュメモリ・チップ321からキャッシュメモリ123に代替されたデータを無電源で永続的に保持することができる。
不揮発性メモリの一例は、相変化RAMである。相変化RAMは、ダイナミック型ランダムアクセスメモリのキャパシタ部分を、光ディスクなどに使用されているGST(Ga-Sb-Te)と呼ばれる相変化材料に置き換えた構造のものを利用することが好ましい。この相変化RAMはダイナミック型ランダムアクセスメモリとほぼ同程度のライト性能を持つため、このような実施形態も、上で述べたような本発明の効果を享受する。
不揮発性メモリのもう一例は、フラッシュメモリである。このフラッシュメモリはフラッシュメモリ・チップ321と同じ種類のものでもよい。ただし、このフラッシュメモリはデータ更新作業効率を高めるために多くの予備領域を含み、フラッシュメモリ・チップ321よりも高速にデータを書き換えられる性能を持つ。したがって、このような実施形態も、上で述べたような本発明の効果を享受する。なお、このときの共有メモリ129には、RAM313にあるようなアドレス変換テーブル510やページ状態テーブル520をさらに作成し、キャッシュメモリ123、124内のデータ格納位置を管理する。
不揮発性のキャッシュメモリを搭載したストレージシステム10は、フラッシュメモリからキャッシュメモリに代替されたデータを補助電源なしに保持することができるため、ストレージシステムの電源消費電力を削減することができ、そのデータを突然の電源遮断などの障害による揮発的消失から保護するという効果を奏する。
また、上記の実施形態でのキャッシュメモリ123に含まれるフラッシュメモリ代替データ(ダーティ(dirty)=サブ(sub)のエントリの格納データ)を、もう1つのキャッシュメモリ124に複写し、2重に保持・管理してもよい。そうすれば、キャッシュメモリ123が故障しても、フラッシュメモリ代替データが消失しないので、ストレージシステム10の信頼性が保全される。
なお、フラッシュメモリ代替データの保持方式では上の2重化(ミラーリング)以外の方式を適用してもよい。例えば、ストレージシステム10にキャッシュメモリをさらに追加し、複数のキャッシュメモリでRAIDグループを組み、RAID5などの冗長化方式を適用してフラッシュメモリ代替データを保持してもよい。
(8)他の実施形態
上述の実施形態では本発明を、ページ単位でデータを書き込み、複数のページから構成されるブロックを単位としてデータを消去するとともに複数のブロックを有し、データの更新にページを含むブロックの消去を必要とするフラッシュメモリ320と、フラッシュメモリ320に書き込むべきデータをフラッシュメモリ320よりも高速に書き込むとともに一時的に記憶するキャッシュメモリ123と、フラッシュメモリ320のデータの読み出し、書き込み及び消去と、キャッシュメモリ123のデータの読み出し及び書き込みを制御し、フラッシュメモリ320内に不良なブロックが発生したことを検出するコントローラ120と、データのライト処理を要求するコマンドを発行するホスト計算機100とを含むストレージシステム10において、チャネルアダプタ121,122及びストレージアダプタ125,126を含むストレージコントローラ120は、フラッシュメモリ320内に不良ブロックが発生したことを検出したときに、フラッシュメモリ320に格納された「E」、「F」、「G」及び「H」というデータをキャッシュメモリ123に移動し、その移動したデータを更新するためのコマンドをホスト計算機100から受信しても、そのコマンドに基づくデータをフラッシュメモリ320へ書き込むことを禁止する場合について適用した場合について述べたが、本発明はこれに限られず、この他種々の構成のストレージシステムに広く適用することができる。
また、ストレージシステム10は、キャッシュメモリ123に記憶するデータを管理するキャッシュ管理テーブル500を共有メモリ129内に備え、キャッシュ管理テーブル500は、データをフラッシュメモリ320へ書き込むことを禁止する禁止情報として「sub」(ダーティレジスタ5005の項目)を保持する場合について説明したが、禁止情報の保持形式は、これに限られるものではない。
さらに、ストレージシステム10は、フラッシュメモリ320に記憶するデータのLPA5101とPPA5102との対応関係を管理するアドレス変換テーブル510をRAM313内に備え、アドレス変換テーブル510は、データのLPA5101の「E」、「F」、「G」及び「H」に対応するPPA5102が存在しないことを表すアドレス不存在情報として「‐」を保持する場合について説明したが、アドレス不在情報の保持形式は、これに限られるものではない。
本発明は、種々のストレージシステムに広く適用することができる。
本発明に係わるストレージシステムの構成を示す図である。 本発明に係わるストレージシステムを構成するチャネルアダプタの内部構成を示す図である。 本発明に係わるストレージシステムを構成するストレージアダプタの内部構成を示す図である。 本発明に係わるストレージシステムを構成するフラッシュメモリ・モジュールの内部構成を示す図である。 本発明に係わるストレージシステムを構成するフラッシュメモリ・モジュールに搭載されたフラッシュメモリ・チップの構造を示す図である。 本発明に係わるフラッシュメモリで発生した不良ブロックの代替方法の違いがもたらす影響を説明するための図である。 本発明に係わるフラッシュメモリで発生した不良ブロックの代替方法の違いがもたらす影響を説明するための図である。 本発明に係わるフラッシュメモリで発生した不良ブロックの代替方法の違いがもたらす影響を説明するための図である。 本発明に係わるフラッシュメモリで発生した不良ブロックの代替方法の違いがもたらす影響を説明するための図である。 本発明に係わるキャッシュメモリおよびフラッシュメモリ・チップの管理に関する説明をするための図である。 本発明に係わるキャッシュメモリおよびフラッシュメモリ・チップの管理に関する説明をするための図である。 本発明に係わるホスト計算機からのデータライト要求について、ストレージコントローラとメモリコントローラが行う処理を示すフローチャートである。 本発明に係わるデータリード要求について、ストレージコントローラとメモリコントローラが行う処理を示すフローチャートである。 本発明に係わるメモリコントローラによるキャッシュデータのライトバック処理を示すフローチャートである。 本発明に係わるストレージコントローラとメモリコントローラによる不良ブロックの代替処理を示すフローチャートである。 本発明に係わるメモリコントローラによるガベッジコレクション処理を示すフローチャートである。
符号の説明
10…ストレージシステム
100…ホスト計算機
120…ストレージコントローラ
121,122…チャネルアダプタ
123、124…キャッシュメモリ
125,126…ストレージアダプタ
129…共有メモリ
151〜184…フラッシュメモリ・モジュール
310…メモリコントローラ
320…フラッシュメモリ
321…フラッシュメモリ・チップ
500…キャッシュ管理テーブル
510…アドレス管理テーブル
520…ページ情報テーブル
5001…インデックス
5002…ウェイ
5003…バリッドフラグ
5004…キーレジスタ
5005…ダーティレジスタ
5101…LPA(論理ページアドレス)
5102…PPA(物理ページアドレス)
5201…ブロック
5202…ステータス

Claims (15)

  1. ページ単位でデータを書き込み、複数の前記ページから構成されるブロックを単位として前記データを消去するとともに複数の前記ブロックを有し、前記データの更新に前記ページを含む前記ブロックの消去を必要とするフラッシュメモリと、
    前記フラッシュメモリに書き込むべきデータを前記フラッシュメモリよりも高速に書き込むとともに一時的に記憶するキャッシュメモリと、
    前記フラッシュメモリのデータの読み出し、書き込み及び消去と、前記キャッシュメモリのデータの読み出し及び書き込みを制御し、前記フラッシュメモリ内に不良な前記ブロックが発生したことを検出するコントローラと、
    前記データのライト処理を要求するコマンドを発行するホスト計算機とを備え、
    前記コントローラは、
    前記ホスト計算機のコマンドに基づいてデータを前記キャッシュメモリに書き込むときに前記データの論理ページアドレスと同じ論理ページアドレスの前記データが前記キャッシュメモリに存在する確率を示すヒット率を計算し、前記フラッシュメモリ内に前記不良ブロックが発生したことを検出したときに、その検出時までに計算した前記ヒット率に基づいて、前記不良ブロックの代替先として前記フラッシュメモリ内のその他のブロックを適用したときの前記ストレージシステムの第1のライト性能と、前記フラッシュメモリに格納された前記データの一部を前記キャッシュメモリに移動したときの前記ストレージシステムの第2のライト性能とを計算し、その計算結果に基づいて、前記第2のライト性能が前記第1のライト性能に勝ると判定したならば、前記フラッシュメモリに格納された前記データを前記キャッシュメモリに移動し、その移動したデータを更新するためのコマンドを前記ホスト計算機から受信しても、そのコマンドに基づくデータを前記フラッシュメモリへ書き込むことを禁止する、
    ことを特徴とするストレージシステム。
  2. 請求項1記載のストレージシステムであって、
    前記移動したデータを更新するためのコマンドに基づいて、前記キャッシュメモリ内に移動したデータを更新する、
    ことを特徴とするストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    前記キャッシュメモリに記憶する前記データを管理するキャッシュ管理テーブルを備え、
    前記キャッシュ管理テーブルは、前記データを前記フラッシュメモリへ書き込むことを禁止する禁止情報を保持する、
    ことを特徴とするストレージシステム。
  4. 請求項1に記載のストレージシステムであって、
    前記フラッシュメモリに記憶するデータの論理ページアドレスと物理ページアドレスとの対応関係を管理するアドレス変換テーブルを備え、
    前記アドレス変換テーブルは、前記データの論理ページアドレスに対応する物理ページアドレスが存在しないことを表すアドレス不存在情報を保持する、
    ことを特徴とする前記ストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記キャッシュメモリは不揮発性のランダムアクセスメモリである、
    ことを特徴とするストレージシステム。
  6. 請求項に記載のストレージシステムであって、
    前記不揮発性のランダムアクセスメモリは、相変化RAMである、
    ことを特徴とするストレージシステム。
  7. 請求項1に記載のストレージシステムであって、
    前記キャッシュメモリに移動した前記データを、前記キャッシュメモリが冗長的に保持する、
    ことを特徴とするストレージシステム。
  8. 請求項に記載のストレージシステムであって、
    前記キャッシュメモリとは、異なるキャッシュメモリを備え、
    前記冗長的な保持は、前記キャッシュメモリへ移動した前記データを、前記異なるキャッシュメモリへコピーして行なう、
    ことを特徴とするストレージシステム。
  9. 請求項に記載のストレージシステムであって、
    前記キャッシュメモリとは、異なる複数のキャッシュメモリを備え、
    前記冗長的な保持は、前記キャッシュメモリへ移動した前記データを、前記異なる複数のキャッシュメモリとRAIDグループを組んで行なう、
    ことを特徴とするストレージシステム。
  10. ページ単位でデータを書き込み、複数の前記ページから構成されるブロックを単位として前記データを消去するとともに複数の前記ブロックを有し、前記データの更新に前記ページを含む前記ブロックの消去を必要とするフラッシュメモリと、
    前記フラッシュメモリに書き込むべきデータを前記フラッシュメモリよりも高速に書き込むとともに一時的に記憶するキャッシュメモリと、
    前記フラッシュメモリのデータの読み出し、書き込み及び消去と、前記キャッシュメモリのデータの読み出し及び書き込みを制御し、前記フラッシュメモリ内に不良な前記ブロックが発生したことを検出するコントローラと、
    前記データのライト処理を要求するコマンドを発行するホスト計算機とを含むストレージシステムのライト性能低下防止方法において、
    前記コントローラは、
    前記ホスト計算機のコマンドに基づいてデータを前記キャッシュメモリに書き込むときに前記データの論理ページアドレスと同じ論理ページアドレスの前記データが前記キャッシュメモリに存在する確率を示すヒット率を計算し、
    前記フラッシュメモリ内に前記不良ブロックが発生したことを検出し、
    その検出時までに計算した前記ヒット率に基づいて、前記不良ブロックの代替先として前記フラッシュメモリ内のその他のブロックを適用したときの前記ストレージシステムの第1のライト性能と、前記フラッシュメモリに格納された前記データの一部を前記キャッシュメモリに移動したときの前記ストレージシステムの第2のライト性能とを計算し、
    その計算結果に基づいて、前記第2のライト性能が前記第1のライト性能に勝ると判定したならば、前記フラッシュメモリに格納された前記データを前記キャッシュメモリに移動し、
    その移動したデータを更新するためのコマンドを前記ホスト計算機から受信しても、そのコマンドに基づくデータを前記フラッシュメモリへ書き込むことを禁止する、
    ことを特徴とするストレージシステムのライト性能低下防止方法。
  11. 請求項10に記載のストレージシステムのライト性能低下防止方法であって、
    前記キャッシュメモリに記憶する前記データを管理するキャッシュ管理テーブルにより保持される禁止情報に基づいて前記データを前記フラッシュメモリへ書き込むことを禁止する、
    ことを特徴とする方法。
  12. 請求項10記載のストレージシステムのライト性能低下防止方法であって、
    前記キャッシュメモリは不揮発性のランダムアクセスメモリである、
    ことを特徴とする方法。
  13. 請求項10記載のストレージシステムのライト性能低下防止方法であって、
    前記キャッシュメモリに移動した前記データを、前記キャッシュメモリが冗長的に保持する、
    ことを特徴とする方法。
  14. 請求項13に記載のストレージシステムのライト性能低下防止方法であって、
    前記冗長的な保持は、前記キャッシュメモリへ移動した前記データを、前記キャッシュメモリとは、異なるキャッシュメモリへコピーして行なう、
    ことを特徴とする方法。
  15. 請求項13に記載のストレージシステムのライト性能低下防止方法であって、
    異なる複数のキャッシュメモリを備え、
    前記冗長的な保持は、前記キャッシュメモリへ移動した前記データを、前記キャッシュメモリとは異なる複数のキャッシュメモリとRAIDグループを組んで行なう、
    ことを特徴とする方法。
JP2007067142A 2007-03-15 2007-03-15 ストレージシステム及びストレージシステムのライト性能低下防止方法 Expired - Fee Related JP4897524B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007067142A JP4897524B2 (ja) 2007-03-15 2007-03-15 ストレージシステム及びストレージシステムのライト性能低下防止方法
US11/968,218 US7761655B2 (en) 2007-03-15 2008-01-02 Storage system and method of preventing deterioration of write performance in storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007067142A JP4897524B2 (ja) 2007-03-15 2007-03-15 ストレージシステム及びストレージシステムのライト性能低下防止方法

Publications (2)

Publication Number Publication Date
JP2008226149A JP2008226149A (ja) 2008-09-25
JP4897524B2 true JP4897524B2 (ja) 2012-03-14

Family

ID=39763819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007067142A Expired - Fee Related JP4897524B2 (ja) 2007-03-15 2007-03-15 ストレージシステム及びストレージシステムのライト性能低下防止方法

Country Status (2)

Country Link
US (1) US7761655B2 (ja)
JP (1) JP4897524B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101537973B1 (ko) * 2011-07-27 2015-07-20 엘에스아이 코포레이션 보안 스토리지 하이잭킹 보호를 위한 기법들

Families Citing this family (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751755B2 (en) * 2007-12-27 2014-06-10 Sandisk Enterprise Ip Llc Mass storage controller volatile memory containing metadata related to flash memory storage
CN101334797B (zh) * 2008-08-04 2010-06-02 中兴通讯股份有限公司 一种分布式文件系统及其数据块一致性管理的方法
US8327066B2 (en) * 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
KR20100041313A (ko) * 2008-10-14 2010-04-22 삼성전자주식회사 데이터 저장 방법, 데이터 저장 장치 및 그 시스템
JP5349897B2 (ja) * 2008-10-21 2013-11-20 株式会社日立製作所 ストレージシステム
US8050251B2 (en) * 2009-04-10 2011-11-01 Barracuda Networks, Inc. VPN optimization by defragmentation and deduplication apparatus and method
US8375162B2 (en) * 2009-06-03 2013-02-12 Ocz Technology Group Inc. Method and apparatus for reducing write cycles in NAND-based flash memory devices
US9123409B2 (en) * 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8359431B2 (en) * 2009-08-20 2013-01-22 Hitachi, Ltd. Storage subsystem and its data processing method for reducing the amount of data to be stored in a semiconductor nonvolatile memory
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US8090977B2 (en) * 2009-12-21 2012-01-03 Intel Corporation Performing redundant memory hopping
JP2011145838A (ja) * 2010-01-13 2011-07-28 Toshiba Corp 記憶装置管理装置および記憶装置の管理方法
JP5066199B2 (ja) * 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置
JP4901968B2 (ja) * 2010-03-01 2012-03-21 株式会社東芝 半導体記憶装置
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
JP5017407B2 (ja) * 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP5646633B2 (ja) 2010-04-12 2014-12-24 株式会社日立製作所 ストレージ装置
JP2011232962A (ja) * 2010-04-27 2011-11-17 Toshiba Corp ディスクアレイ装置およびミラードキャッシュ制御方法
JP2012133655A (ja) * 2010-12-22 2012-07-12 Sony Corp 管理装置、管理方法、およびプログラム
US8972676B2 (en) * 2011-01-28 2015-03-03 International Business Machines Corporation Assigning device adaptors and background tasks to use to copy source extents to target extents in a copy relationship
EP2652587B1 (en) 2011-06-07 2017-11-15 Hitachi, Ltd. Storage system comprising flash memory, and storage control method
US8719531B2 (en) 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
KR101596606B1 (ko) * 2011-08-19 2016-03-07 가부시끼가이샤 도시바 정보 프로세싱 장치, 정보 프로세싱 장치를 제어하는 방법, 제어 도구를 저장하는 비일시적 기록 매체, 호스트 디바이스, 성능 평가 도구를 저장하는 비일시적 기록 매체, 및 외부 메모리 디바이스를 위한 성능 평가 방법
US9122631B2 (en) 2011-11-07 2015-09-01 Peking University Buffer management strategies for flash-based storage systems
US9058289B2 (en) 2011-11-07 2015-06-16 Sandisk Enterprise Ip Llc Soft information generation for memory systems
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8892828B2 (en) 2011-11-18 2014-11-18 Micron Technology, Inc. Apparatuses and methods for storing validity masks and operating apparatuses
US8370567B1 (en) * 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data
JP2013229013A (ja) * 2012-03-29 2013-11-07 Semiconductor Energy Lab Co Ltd アレイコントローラ及びストレージシステム
CN104254841A (zh) * 2012-04-27 2014-12-31 惠普发展公司,有限责任合伙企业 屏蔽存储器设备
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9424946B2 (en) 2013-02-08 2016-08-23 Seagate Technology Llc Non-volatile buffering to enable sloppy writes and fast write verification
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
KR101467302B1 (ko) * 2013-03-11 2014-12-02 전자부품연구원 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템
KR101467309B1 (ko) * 2013-03-11 2014-12-02 전자부품연구원 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
CN104346296B (zh) * 2013-08-09 2019-02-01 慧荣科技股份有限公司 数据储存装置及其电压保护方法
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9323637B2 (en) 2013-10-07 2016-04-26 Sandisk Enterprise Ip Llc Power sequencing and data hardening architecture
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
KR102116364B1 (ko) * 2013-11-18 2020-05-28 삼성전자주식회사 메모리 시스템 및 그에 따른 반도체 메모리의 결함 메모리 셀 관리방법
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9280429B2 (en) 2013-11-27 2016-03-08 Sandisk Enterprise Ip Llc Power fail latching based on monitoring multiple power supply voltages in a storage device
US9122636B2 (en) 2013-11-27 2015-09-01 Sandisk Enterprise Ip Llc Hard power fail architecture
US9250676B2 (en) 2013-11-29 2016-02-02 Sandisk Enterprise Ip Llc Power failure architecture and verification
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
KR20150062646A (ko) * 2013-11-29 2015-06-08 삼성전자주식회사 전자 시스템 및 이의 동작 방법
US9092370B2 (en) 2013-12-03 2015-07-28 Sandisk Enterprise Ip Llc Power failure tolerant cryptographic erase
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
JP2015135603A (ja) * 2014-01-17 2015-07-27 株式会社東芝 ストレージ装置及びデータを書き込む記憶領域を選択する方法
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
JP6102800B2 (ja) * 2014-03-04 2017-03-29 ソニー株式会社 メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
WO2015189957A1 (ja) * 2014-06-12 2015-12-17 株式会社日立製作所 性能情報管理システム、管理計算機、および性能情報管理方法
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9378149B1 (en) 2014-08-29 2016-06-28 Emc Corporation Method and system for tracking modification times of data in a storage system
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
JP5804584B1 (ja) * 2014-10-30 2015-11-04 ウィンボンド エレクトロニクス コーポレーション Nand型フラッシュメモリのプログラム方法
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
CN106776362B (zh) * 2015-11-24 2019-12-03 中芯国际集成电路制造(上海)有限公司 存储器的控制方法及装置
KR20180076425A (ko) * 2016-12-27 2018-07-06 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
KR20190082513A (ko) * 2018-01-02 2019-07-10 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
KR20200068941A (ko) * 2018-12-06 2020-06-16 에스케이하이닉스 주식회사 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
CN111078591A (zh) * 2019-12-16 2020-04-28 深圳忆联信息系统有限公司 部分命中缓存读命令的处理方法、装置及计算机设备
KR20210155593A (ko) * 2020-06-16 2021-12-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11740821B2 (en) * 2021-04-12 2023-08-29 EMC IP Holding Company LLC Cost-aware garbage collection for cloud storage

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0617363B1 (en) * 1989-04-13 2000-01-26 SanDisk Corporation Defective cell substitution in EEprom array
JPH03256147A (ja) * 1990-03-07 1991-11-14 Hitachi Ltd 拡張記憶装置アクセス方法およびそれを利用した拡張記憶用アドレス変換装置
US5359569A (en) * 1991-10-29 1994-10-25 Hitachi Ltd. Semiconductor memory
JP3122201B2 (ja) * 1991-11-30 2001-01-09 株式会社東芝 メモリカード装置
JPH08123725A (ja) * 1994-10-20 1996-05-17 Hitachi Ltd ライトバック式キャッシュシステム
JP2000149435A (ja) * 1998-11-12 2000-05-30 Nec Corp 磁気ディスク装置及びこれを用いた映像記録再生装置
JP2000339869A (ja) * 1999-05-28 2000-12-08 Kenwood Corp 光デイスク装置
JP2001005669A (ja) * 1999-06-22 2001-01-12 Mitsubishi Electric Corp プログラム起動方式
JP2001160268A (ja) * 1999-12-02 2001-06-12 Nec Corp 記録媒体の代替処理方法および装置
JP4165990B2 (ja) * 1999-12-20 2008-10-15 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法
JP4373615B2 (ja) * 2001-01-25 2009-11-25 富士通マイクロエレクトロニクス株式会社 初期不良ブロックのマーキング方法
JP4380125B2 (ja) * 2002-08-28 2009-12-09 セイコーエプソン株式会社 キャッシュメモリを有するプリンタ
JP2004095001A (ja) * 2002-08-29 2004-03-25 Fujitsu Ltd 不揮発性半導体記憶装置、不揮発性半導体記憶装置組込システムおよび不良ブロック検出方法
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101537973B1 (ko) * 2011-07-27 2015-07-20 엘에스아이 코포레이션 보안 스토리지 하이잭킹 보호를 위한 기법들

Also Published As

Publication number Publication date
JP2008226149A (ja) 2008-09-25
US7761655B2 (en) 2010-07-20
US20080229003A1 (en) 2008-09-18

Similar Documents

Publication Publication Date Title
JP4897524B2 (ja) ストレージシステム及びストレージシステムのライト性能低下防止方法
JP4932427B2 (ja) 記憶装置及び記憶方法
KR100389867B1 (ko) 플래시 메모리 관리방법
JP3977370B2 (ja) フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
JP5026213B2 (ja) ストレージ装置及びデータ重複排除方法
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US7475185B2 (en) Nonvolatile memory system, nonvolatile memory device, memory controller, access device, and method for controlling nonvolatile memory device
JP5087347B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP5612514B2 (ja) 不揮発性メモリコントローラ及び不揮発性記憶装置
JP6017065B2 (ja) ストレージシステム及びキャッシュコントロール方法
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
JP2008015769A (ja) ストレージシステム及び書き込み分散方法
JP5073402B2 (ja) メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム
KR20150083264A (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
JP2005242897A (ja) フラッシュディスク装置
US20100318726A1 (en) Memory system and memory system managing method
JP5300496B2 (ja) 半導体記憶装置、ホスト機器及び半導体記憶システム
JP4829202B2 (ja) 記憶装置及びメモリ制御方法
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
JP3808842B2 (ja) 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法
WO2016194979A1 (ja) ストレージシステム、ストレージ制御装置、ストレージ制御方法及びプログラム
JP5180726B2 (ja) 記憶装置およびデータ書き込み制御方法
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
TWI649652B (zh) Fast and safe data storage device and method

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111021

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: 20111129

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111222

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees