JP4842719B2 - ストレージシステム及びそのデータ保護方法 - Google Patents

ストレージシステム及びそのデータ保護方法 Download PDF

Info

Publication number
JP4842719B2
JP4842719B2 JP2006178487A JP2006178487A JP4842719B2 JP 4842719 B2 JP4842719 B2 JP 4842719B2 JP 2006178487 A JP2006178487 A JP 2006178487A JP 2006178487 A JP2006178487 A JP 2006178487A JP 4842719 B2 JP4842719 B2 JP 4842719B2
Authority
JP
Japan
Prior art keywords
data
flash memory
page
storage
address
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
JP2006178487A
Other languages
English (en)
Other versions
JP2008009635A (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 JP2006178487A priority Critical patent/JP4842719B2/ja
Priority to US11/503,050 priority patent/US7574554B2/en
Priority to EP06255630A priority patent/EP1873649A1/en
Publication of JP2008009635A publication Critical patent/JP2008009635A/ja
Application granted granted Critical
Publication of JP4842719B2 publication Critical patent/JP4842719B2/ja
Active 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • 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
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Description

本発明はフラッシュメモリを記録媒体とするストレージシステム及びそのデータ保護方法に関する。
ストレージシステムは、一般的にランダムアクセス可能な不揮発性記録媒体を備える。ランダムアクセス可能な不揮発性記録媒体は、例えば、磁気ディスク又は光ディスク等である。現在、主流のストレージシステムは、小型ディスクドライブを多数備える。また、半導体技術の進歩に伴って、一括消去可能な不揮発性半導体メモリが開発されている。一括消去可能な不揮発性半導体メモリは、例えば、フラッシュメモリである。フラッシュメモリを記録媒体とするストレージシステムは、小型ディスクドライブを多数備えるストレージシステムに比べて、寿命、省電力及びアクセス時間等に優れている。
ここで、フラッシュメモリについて説明する。フラッシュメモリにおいて、ブロックはデータを一括消去する単位の記憶領域であり、ページはデータを読み書きする単位の記憶領域である。フラッシュメモリは、特性上、データを直接書き換えることができない。つまり、フラッシュメモリは、記憶しているデータを書き換える場合、記憶している有効なデータを退避させる。次に、記憶しているデータをブロック単位で消去する。そして、データが消去されたブロックにデータを新たに書き込む。
より詳細に説明すると、フラッシュメモリは、「1」を「0」に書き換えることはできるが、「0」を「1」に書き換えることができない。そこで、フラッシュメモリは、データの書き換え時に、ブロック全体を消去する。このように、フラッシュメモリにおけるデータの書換えは、ブロックの消去が伴う。
しかし、フラッシュメモリの1ブロック消去にかかる時間は、1ページを書込みにかかる時間に比べて約1桁長い。従って、1ページ書換えのために毎回1ブロックを消去すると、フラッシュメモリのデータ書換え性能は極端に低下してしまう。つまり、フラッシュメモリでは、消去時間を隠蔽できるアルゴリズムでデータを書き込むことが必須となる。
また、フラッシュメモリにおいては、ブロックを消去できる回数には制限がある。例えば、ブロック当たり10万回までの消去回数が保証されている。データの書換えが集中して消去回数が増大したブロックは、データ消去ができなくなり使用不能となる問題点がある。そのため、フラッシュメモリを記録媒体として使用するストレージシステムでは、特定のブロックへの消去処理が集中しないようにするための消去回数平準化処理が必須となる。
消去時間隠蔽と消去回数平準化のため、フラッシュメモリ・モジュール内では、データ書込みの際にアドレス変換処理が行われる。フラッシュメモリ・モジュールは、1個以上のフラッシュメモリ・チップと、フラッシュメモリ・チップへのデータ転送を制御するためのメモリコントローラとを備える。メモリコントローラは、特定の物理アドレスに書き込みが集中するのを避けるため、ホスト計算機やストレージ装置のコントローラ等から書き込み先アドレスとして受信した論理アドレスを、フラッシュメモリ・チップにおける書き込み先アドレスである物理アドレスへ変換する機能を有する。このとき問題となるのは、メモリコントローラ内で発生するアドレス・エラーである。メモリコントローラが、論理アドレスから物理アドレスへの変換の際にエラーを起こした場合、間違った物理アドレスにデータを書き込んでしまう。つまり、書込みデータそのものにはエラーが無く問題ないが、書き込んだ物理アドレスが間違っているため、読出し時に所望のデータが読み出せなくなる問題がある。
この問題点を解決するための技術として、例えば、特開2001−202295号公報に開示されている技術が知られている。この技術は、ハードディスクドライブを記録媒体として使用する場合に、記録媒体内のアドレス・エラーからデータを保護する。より詳細には、ハードディスクドライブ内の論理データブロック毎に論理的なアドレス値を含む保護コードをデータに付加してハードディスクドライブへ書込む。そして、データをハードディスクドライブから読み出す際には、各論理データブロックに付加された保護コードをチェックする。
更に、米国公開特許2004/0148461A1には、データ管理単位の異なる記録媒体相互間の互換性を確保するストレージシステムが開示されている。
特開2001−202295号公報 米国公開特許2004/0148461A1
フラッシュメモリは、ページ単位でアドレスを仮想化し、データを読み書きする。ページ・サイズは、チップの種類や世代によって異なる。例えば、現在のフラッシュメモリ・チップのページ・サイズは、528バイト或いは2112バイトであり、実際にデータを書き込むことが可能な記憶領域のサイズは、ページ内のそれぞれ512バイト或いは2048バイトである。ページの残りの部分(例えば、528バイトから512バイトを除いた16バイト、或いは2112バイトから2048バイトを除いた64バイト)は、メモリコントローラがページ単位でアドレス管理をするための情報やエラー訂正を行うためのエラー訂正コードなどを格納するための管理領域として使用される。フラッシュメモリの大容量化に伴い、ページ・サイズは、将来的に大容量化していくことが予想される。
ストレージシステムの記録媒体としてハードディスクドライブに代替えすることを目的とするフラッシュメモリ・モジュールは、ハードディスクドライブ互換インタフェースを備えている。ストレージコントローラは、ハードディスクドライブ互換性を有するフラッシュメモリ・モジュールを、例えば、1セクタ当たり512バイトのハードディスクドライブとして認識する。つまり、ストレージコントローラは、ハードディスクドライブ互換インタフェースを備えるフラッシュメモリ・モジュール内部でアドレス変換されているデータ単位を認識することはできない。更に、フラッシュメモリ・モジュール内に実装されているフラッシュメモリ・チップの種類及び世代によってページ・サイズが異なる。上述した従来技術によるアドレス・エラー対策では、アドレス変換されるデータ・サイズ毎にストレージコントローラが保護コードを付加して書込みを行う必要がある。
しかし、上述の如く、ハードディスクドライブ互換インタフェースを備えるフラッシュメモリ・モジュール、又はフラッシュメモリ・チップの仕様が不明なフラッシュメモリ・モジュールでは、アドレス・エラーから保護すべきデータ・サイズが不明である。このため、従来技術によって、フラッシュメモリ・モジュール内のアドレス・エラーからデータを保護することは困難である。
更に、高信頼性が要求されるハードディスクドライブでは、1セクタ当たりの容量を520バイトとして、データと保護コードをセットにして管理している。一方、フラッシュメモリのページ当たりに書込み可能なデータ・サイズは、メモリコントローラが管理用として使用する記憶領域を除くと、512バイトの倍数である。520バイト単位で管理されているデータをそのままフラッシュメモリのページへ書き込むと、520バイト単位のデータがページ境界を跨いでフラッシュメモリに書き込まれる場合が生じる。これは、520バイト内のデータと保護コードとがそれぞれ別々のページに書き込まれ、保護コードから分離されたデータは、アドレス・エラーから保護されないことを意味する。よって、従来技術では、ページ境界を跨ぐデータをアドレス・エラーから保護することが困難である。
本発明は、上述した問題点に鑑みてなされたものであり、ディスクドライブのデータ管理単位とは異なるデータ管理単位を有するフラッシュメモリ・モジュール内におけるアドレス・エラーを訂正することのできるストレージシステム及びそのデータ保護方法を提供することを課題とする。
上記の課題を解決するため、本発明のストレージシステムは、フラッシュメモリ・チップと、フラッシュメモリ・チップへのデータの読み書きを制御するメモリコントローラとを有するフラッシュメモリ・モジュールと、フラッシュメモリ・チップへ読み書きされるデータを一時的に格納するためのキャッシュメモリを有するストレージコントローラと、を備える。キャッシュメモリ上では、フラッシュメモリ・チップへ読み書きされるデータは、第一のデータ長単位で管理されている。フラッシュメモリ・チップに読み書きされるデータは、ページ単位で管理されている。1ページあたりの記憶領域は、ストレージコントローラから読み書き可能な第二のデータ長を有する記憶領域と、ページの管理情報を格納するための記憶領域とを含む。ストレージコントローラは、フラッシュメモリ・チップへのデータ書き込み時に、書き込み先ページのアドレス情報を特定可能な保護コードを生成し、更に書き込みデータと保護コードとを合わせて第二のデータ長となるように、第一のデータ長単位で管理されているキャッシュメモリ上のデータを分割し、書き込みデータと保護コードとを合わせて第二のデータ長単位でフラッシュメモリ・チップに書き込む。ストレージコントローラは、フラッシュメモリ・チップから読み出したデータに付加されている保護コードから特定されるアドレス情報と、読み出すべきデータのアドレス情報とを比較することで、読み出しエラーの有無をチェックする。かかる構成によれば、ディスクドライブのデータ管理単位とは異なるデータ管理単位を有するフラッシュメモリ・モジュール内におけるアドレス・エラーを訂正することができる。
本発明の好適な態様において、ストレージコントローラは、フラッシュメモリ・モジュールの各仕様と第二のデータ長との対応関係を保持するデータベースを更に備える。フラッシュメモリ・モジュールの仕様に応じて、第二のデータ長が異なる場合があるので、フラッシュメモリ・モジュールの各仕様と第二のデータ長との対応関係を保持するデータベースを備えることで、ストレージコントローラは、ストレージコントローラに接続されるフラッシュメモリ・モジュールの仕様に応じて、第二のデータ長を調整できる。
本発明の好適な態様において、フラッシュメモリ・モジュールが提供する記憶領域はRAID構成されている。ストレージコントローラは、何れかのフラッシュメモリ・モジュール内のデータにアドレス・エラーが生じると、アドレス・エラーが生じたデータを格納するフラッシュメモリ・モジュールと同一のRAIDグループに属する他のフラッシュメモリ・モジュール内のデータを用いて、アドレス・エラーが生じたデータを第二のデータ長単位で復元し、アドレス・エラーが生じたデータを復元したデータで上書きする。かかる構成により、何れかのフラッシュメモリ・モジュール内のデータにアドレス・エラーが生した場合でも、データを復元できる。
本発明の好適な態様において、保護コードは、書き込み時刻情報を含む。かかる構成により、特に、シーケンシャルデータアクセスに対して、アドレス・エラーから有効にデータを保護できる。
本発明の好適な態様において、保護コードは、第二のデータ長を有するデータを保護するためのエラー検出コード又は訂正コードを含む。エラー検出コード又は訂正コードとしては、例えば、CRCコード、LRCコード、又はハミングコードが好適である。
本発明の他の側面に関るストレージシステムは、フラッシュメモリ・チップと、フラッシュメモリ・チップへのデータの読み書きを制御するメモリコントローラとを有するフラッシュメモリ・モジュールと、フラッシュメモリ・チップへ読み書きされるデータを一時的に格納するためのキャッシュメモリを有するストレージコントローラと、を備える。キャッシュメモリ上では、フラッシュメモリ・チップへ読み書きされるデータは、第一のデータ長単位で管理されている。フラッシュメモリ・チップに読み書きされるデータは、ページ単位で管理されている。1ページあたりの記憶領域は、ストレージコントローラから読み書き可能な第二のデータ長を有する記憶領域と、ページの管理情報を格納するための記憶領域とを含む。ストレージコントローラは、ストレージコントローラに接続する記録媒体の種別を判別するためのメディア判定部を備えている。ストレージコントローラは、ストレージコントローラに接続する記録媒体がフラッシュメモリ・モジュールである場合に、フラッシュメモリ・チップへのデータ書き込み時に、書き込み先ページのアドレス情報を特定可能な保護コードを生成し、更に書き込みデータと保護コードとを合わせて第二のデータ長となるように、第一のデータ長単位で管理されているキャッシュメモリ上のデータを分割し、書き込みデータと保護コードとを合わせて第二のデータ長単位でフラッシュメモリ・チップに書き込む。ストレージコントローラは、フラッシュメモリ・チップから読み出したデータに付加されている保護コードから特定されるアドレス情報と、読み出すべきデータのアドレス情報とを比較することで、読み出しエラーの有無をチェックする。かかる構成によれば、ストレージコントローラは、ストレージコントローラに接続する記録媒体の種別を判別し、記録媒体内のデータ管理単位とは異なるデータ管理単位を有するフラッシュメモリ・モジュール内におけるアドレス・エラーを訂正することができる。
本発明の好適な態様において、第一のデータ長は、ハードディスクドライブのセクタ長である。
本発明の好適な態様において、第一のデータ長を有するデータは、データと、データの書き込み先であるハードディスクドライブのアドレス情報を特定可能な保護コードとを有する。
本発明の好適な態様において、ストレージコントローラは、記録媒体の各仕様と第二のデータ長との対応関係を保持するデータベースを更に備える。記録媒体の仕様に応じて、第二のデータ長が異なる場合があるので、記録媒体の各仕様と第二のデータ長との対応関係を保持するデータベースを備えることで、ストレージコントローラは、ストレージコントローラに接続される記録媒体の仕様に応じて、第二のデータ長を調整できる。
本発明に係るデータ保護方法が適用されるストレージシステムは、フラッシュメモリ・チップとフラッシュメモリ・チップへのデータの読み書きを制御するメモリコントローラとを有するフラッシュメモリ・モジュールと、フラッシュメモリ・チップへ読み書きされるデータを一時的に格納するためのキャッシュメモリを有するストレージコントローラとを有し、1ページあたりの記憶領域がストレージコントローラから読み書き可能な第二のデータ長を有する記憶領域と、ページの管理情報を格納するための記憶領域とを有する。このデータ保護方法は、フラッシュメモリ・チップへ読み書きされるデータをキャッシュメモリ上で第一のデータ長単位で管理するステップと、フラッシュメモリ・チップへのデータ書き込み時に書き込み先ページのアドレス情報を特定可能な保護コードを生成するステップと、書き込みデータと保護コードとを合わせて第二のデータ長となるように第一のデータ長単位で管理されているキャッシュメモリ上のデータを分割するステップと、書き込みデータと保護コードとを合わせて第二のデータ長単位でフラッシュメモリ・チップに書き込むステップと、フラッシュメモリ・チップから読み出したデータに付加されている保護コードから特定されるアドレス情報と、読み出すべきデータのアドレス情報とを比較することで読み出しエラーの有無をチェックするステップと、を備える。このデータ保護方法によれば、ディスクドライブのデータ管理単位とは異なるデータ管理単位を有するフラッシュメモリ・モジュール内におけるアドレス・エラーを訂正することができる。
本発明によれば、ディスクドライブのデータ管理単位とは異なるデータ管理単位を有するフラッシュメモリ・モジュール内におけるアドレス・エラーを訂正することができる。
以下、各図を参照しながら本発明の実施形態について説明する。
図1は本実施形態に係るストレージシステム10のハードウェア構成を示す。ストレージシステム10は、ストレージコントローラSC及びフラッシュメモリ・モジュールP00〜P33を備える。ストレージコントローラSCは、チャネルアダプタCA0、CA1、キャッシュメモリCM0、CM1、ストレージアダプタSA0、SA1及び相互接続網NW0、NW1を備える。
尚、ストレージコントローラSCは、チャネルアダプタCA0、CA1、キャッシュメモリCM0、CM1及びストレージアダプタSA0、SA1をそれぞれ二つ有する場合を例示しているが、それぞれを3つ以上又は一つ有してもよい。
相互接続網NW0及びNW1は、例えば、スイッチ等であり、ストレージコントローラSCを構成する各装置を相互に接続する。詳細には、相互接続網NW0及びNW1は、チャネルアダプタCA0、キャッシュメモリCM0及びストレージアダプタSA0を相互に接続する。同様に、相互接続網NW0、NW1は、チャネルアダプタCA1、キャッシュメモリCM1及びストレージアダプタSA1を相互に接続する。
チャネルアダプタCA0は、チャネルC00、C01、C02、C03を介してホスト計算機100に接続されている。同様に、チャネルアダプタCA1は、チャネルC10、C11、C12、C13を介してホスト計算機100に接続されている。ホスト計算機100は、パーソナルコンピュータ、ワークステーション、メインフレームコンピュータ等の計算機であり、ストレージシステム10にデータの読み書きを要求する。キャッシュメモリCM0、CM1は、チャネルアダプタCA0、CA1又はストレージアダプタSA0、SA1から受信したデータを一時的に記憶する。
ストレージアダプタSA0は、フラッシュメモリ・モジュールP00〜P33に接続されている。詳細には、ストレージアダプタSA0は、チャネルD00を介してフラッシュメモリ・モジュールP00〜P03に接続されている。また、ストレージアダプタSA0は、チャネルD01を介してフラッシュメモリ・モジュールP10〜P13に接続されている。また、ストレージアダプタSA0は、チャネルD02を介してフラッシュメモリ・モジュールP20〜P23に接続されている。また、ストレージアダプタSA0は、チャネルD03を介してフラッシュメモリ・モジュールP30〜P33に接続されている。
同様に、ストレージアダプタSA1は、フラッシュメモリ・モジュールP00〜P33に接続されている。詳細には、ストレージアダプタSA1は、チャネルD10を介してフラッシュメモリ・モジュールP00〜P03に接続されている。また、ストレージアダプタSA1は、チャネルD11を介してフラッシュメモリ・モジュールP10〜P13に接続されている。また、ストレージアダプタSA1は、チャネルD12を介してフラッシュメモリ・モジュールP20〜P23に接続されている。また、ストレージアダプタSA1は、チャネルD13を介してフラッシュメモリ・モジュールP30〜P33に接続されている。
チャネルアダプタCA0、CA1及びストレージアダプタSA0、SA1は、保守端末SVPに接続されている。保守端末SVPは、ストレージシステム10の管理者から入力された設定情報を、チャネルアダプタCA0、CA1及び/又はストレージアダプタSA0、SA1に送信する。
尚、ストレージシステム10は、ストレージアダプタSA0及びチャネルアダプタCA0に替わって一つのアダプタを備えていても良い。この場合、その一つのアダプタが、ストレージアダプタSA0及びチャネルアダプタCA0の処理を行う。
VDEV0〜VDEV3は、RAID(Redundant Arrays of Inexpensive Disks)グループである。例えば、RAIDグループVDEV0は、フラッシュメモリ・モジュールP00、P10、P20、P30から成る。RAIDグループVDEV0に属するフラッシュメモリ・モジュールの一つ、例えば、フラッシュメモリ・モジュールP00でエラーが発生してデータを読み出せなくなると、RIADグループVDEV0に属する他のフラッシュメモリ・モジュールP10,P20,P30からデータを再生できる。
図2はチャネルアダプタCA0のハードウェア構成を示す。チャネルアダプタCA0はホストチャネル・インタフェース21、キャッシュメモリ・インタフェース22、ネットワーク・インタフェース23、プロセッサ24、ローカルメモリ25、及びプロセッサ周辺制御部26を備える。
ホストチャネル・インタフェース21は、チャネルアダプタCA0を、チャネルC00、C01、C02、C03を介してホスト計算機100に接続するためのインタフェースである。ホストチャネル・インタフェース21は、チャネルC00、C01、C02、C03上のデータ転送プロトコルと、ストレージコントローラSC内部のデータ転送プロトコルとを相互に変換する。
キャッシュメモリ・インタフェース22は、チャネルアダプタCA0を、相互結合網NW0、NW1に接続するためのインタフェースである。
ネットワーク・インタフェース23は、チャネルアダプタCA0を、保守端末SVPに接続するためのインタフェースである。
尚、ホストチャネル・インタフェース21とキャッシュメモリ・インタフェース22とは、信号線27によって接続されている。
プロセッサ24は、ローカルメモリ25に記憶されているプログラムを実行することによって各種処理を行う。より詳細には、プロセッサ24は、ホスト計算機100と相互結合網NW0、NW1との間のデータ転送を制御する。
ローカルメモリ25は、プロセッサ24によって実行されるプログラムを記憶する。また、ローカルメモリ25は、プロセッサ24によって参照されるテーブルを記憶する。プロセッサ24によって参照されるテーブルは、管理者によって設定又は変更される。この場合、管理者は、テーブルの設定又はテーブルの変更に関する情報を、保守端末SVPに入力する。保守端末SVPは、入力された情報を、ネットワーク・インタフェース23を介してプロセッサ24に送信する。プロセッサ24は、受信した情報に基づいて、テーブルを作成又は変更する。そして、プロセッサ24は、テーブルをローカルメモリ25に格納する。
プロセッサ周辺制御部26は、ホストチャネル・インタフェース21、キャッシュメモリ・インタフェース22、ネットワーク・インタフェース23、プロセッサ24、及びローカルメモリ25の間におけるデータ転送を制御する。プロセッサ周辺制御部26は、例えば、チップセット等である。
尚、チャネルアダプタCA1のハードウェア構成は、チャネルアダプタCA0のハードウェア構成と同一であるので、チャネルアダプタCA1のハードウェア構成についての説明を省略する。
図3はストレージアダプタSA0のハードウェア構成を示す。ストレージアダプタSA0は、キャッシュメモリ・インタフェース31、ストレージチャネルインタフェース32、ネットワーク・インタフェース33、プロセッサ34、ローカルメモリ35、及びプロセッサ周辺制御部36を備える。
キャッシュメモリ・インタフェース31は、ストレージアダプタSA0を、相互結合網NW0、NW1に接続するためのインタフェースである。
ストレージチャネルインタフェース32は、ストレージアダプタSA0を、チャネルD00、D01、D02、D03に接続するためのインタフェースである。ストレージチャネルインタフェース32は、チャネルD00、D01、D02、D03上のデータ転送プロトコルと、ストレージコントローラSC内部のデータ転送プロトコルとを相互に変換する。
尚、キャッシュメモリ・インタフェース31とストレージチャネルインタフェース32とは、信号線37によって接続されている。
ネットワーク・インタフェース33は、ストレージアダプタSA0を、保守端末SVPに接続するためのインタフェースである。
プロセッサ34は、ローカルメモリ35に記憶されているプログラムを実行することによって各種処理を行う。
ローカルメモリ35は、プロセッサ34によって実行されるプログラムを記憶する。また、ローカルメモリ35は、プロセッサ34によって参照されるテーブルを記憶する。プロセッサ34によって参照されるテーブルは、管理者によって設定又は変更される。この場合、管理者は、テーブルの設定又はテーブルの変更に関する情報を、保守端末SVPに入力する。保守端末SVPは、入力された情報を、ネットワーク・インタフェース33を介してプロセッサ34に送信する。プロセッサ34は、受信した情報に基づいて、テーブルを作成又は変更する。そして、プロセッサ34はテーブルをローカルメモリ35に格納する。
プロセッサ周辺制御部36は、キャッシュメモリ・インタフェース31、ストレージチャネルインタフェース32、ネットワーク・インタフェース33、プロセッサ34及びローカルメモリ35の間のデータ転送を制御する。プロセッサ周辺制御部36は、例えば、チップセット等である。
尚、ストレージアダプタSA1のハードウェア構成は、ストレージアダプタSA0のハードウェア構成と同一であるので、ストレージアダプタSA1のハードウェア構成についての説明を省略する。
図4はフラッシュメモリ・モジュールP00のハードウェア構成を示す。フラッシュメモリ・モジュールP00は、メモリコントローラMC及びフラッシュメモリMEMを備える。フラッシュメモリMEMは、データを記憶する。メモリコントローラMCは、フラッシュメモリMEMへのデータの「読み取り」、「書き込み」、及び「消去」を制御する。メモリコントローラMCは、プロセッサ(μP)401、インタフェース部(I/F)402、データ転送部(HUB)403、メモリ(RAM)404、及びメモリ(ROM)407を備える。フラッシュメモリMEMは、複数のフラッシュメモリ・チップ405を備える。フラッシュメモリ・チップ405は、複数のブロック406を含み、それぞれのブロック406にデータを記憶する。ブロック406は、メモリコントローラMCがデータを消去する単位である。ブロック406は、複数のページを含む。ページは、メモリコントローラMCがデータを読み書きする単位である。
尚、ページは、有効ページ、無効ページ、未使用ページ、又は不良ページの何れかに分類される。有効ページは、有効なデータを記憶しているページである。無効ページは、無効なデータを記憶しているページである。未使用ページは、データを記憶していないページである。不良ページは、ページ内の記憶素子が壊れている等の理由によって、物理的に使用できないページである。
インタフェース部402は、チャネルD00を介してストレージコントローラSC内のストレージアダプタSA0に接続されている。また、インタフェース部402は、チャネルD10を介してストレージコントローラSC内のストレージアダプタSA1に接続されている。インタフェース部402は、ストレージアダプタSA0及びストレージアダプタSA1からの命令を受信する。ストレージアダプタSA0及びストレージアダプタSA1からの命令は、例えば、SCSIコマンドである。
詳細には、インタフェース部402は、ストレージアダプタSA0及びストレージアダプタSA1からデータを受信する。そして、インタフェース部402は、受信したデータをメモリ404に格納する。また、インタフェース部402は、メモリ404に格納されているデータを、ストレージアダプタSA0及びストレージアダプタSA1へ送信する。また、インタフェース部402は、ハードディスクドライブとの互換性を有するインタフェース機能を有している。そのため、ストレージアダプタSA0、SA1は、フラッシュメモリ・モジュールP00〜P33を、例えば、セクタ当たり容量512バイトのハードディスクドライブとして認識する。ストレージシステム10は、データを格納するための記録媒体として、フラッシュメモリ・モジュールとハードディスクドライブとを混載することができる。
メモリ404は、例えば、ダイナミック型ランダムアクセスメモリであり、高速に読み書きできる。メモリ404は、インタフェース部402が送受信するデータを一時的に記憶する。一方、メモリ407は、不揮発性メモリであり、プロセッサ401によって実行されるプログラムを記憶する。プロセッサ401によって実行されるプログラムは、プロセッサ401が実行可能となるように、ストレージシステム10の起動時にメモリ407からメモリ404へロードされる。また、メモリ404は、プロセッサ401によって参照されるテーブルを記憶する。
プロセッサ401によって参照されるテーブルは、例えば、フラッシュメモリMEMの論理アドレスと物理アドレスとを変換するためのアドレス変換テーブルである。論理アドレスは、フラッシュメモリ・モジュールP00の外部から(例えば、ストレージアダプタSA0から)、フラッシュメモリMEMに読み書きする単位であるページをアクセスするためのアドレスである。物理アドレスは、メモリコントローラMCが、フラッシュメモリMEMを読み書きする単位であるページをアクセスするためのアドレスである。
データ転送部403は、例えばスイッチであり、プロセッサ401、インタフェース部402、メモリ404、メモリ407、及びフラッシュメモリMEMを相互に接続し、それらの間のデータ転送を制御する。
プロセッサ401は、メモリ404に記憶されているプログラムを実行することによって、各種処理を行う。例えば、プロセッサ401は、メモリ404に記憶されているアドレス変換テーブルを参照して、フラッシュメモリMEMの論理アドレスとフラッシュメモリMEMの物理アドレスとを変換し、フラッシュメモリMEMにデータを読み書きする。また、プロセッサ401は、フラッシュメモリ・モジュールP00内のブロック406について、リクラメーション処理(ブロック再生処理)及びウエアレベリング処理(消去回数平準化処理)を行う。
リクラメーション処理(ブロック再生処理)は、未使用ページが少なくなったブロックを使用できるように、ブロック406内の無効ページを未使用ページに再生する処理である。即ち、リクラメーション処理の対象となるブロック(対象ブロック)406内には、有効ページ、無効ページ、及び未使用ページが含まれ、多くの無効ページが存在しているとする。この場合に、未使用ページを増加させるには、無効ページを消去する必要がある。しかしながら、消去は、ページ単位ではなく、ブロック単位でしか消去できない。このため、有効ページを空きのあるブロックに複写し、その後、対象ブロックを消去して、ブロックを再生する処理が必要となる。
より詳細には、プロセッサ401は、リクラメーション処理の対象となるブロック(対象ブロック)406内の有効ページに記憶されているデータを、未使用ブロックへ複写する。そして、プロセッサ401は、データを複写した未使用ブロックの論理ブロック番号を、対象ブロックの論理ブロック番号に変更する。そして、対象ブロックのデータをすべて消去し、リクラメーション処理を完了する。
例えば、プロセッサ401がブロック406にデータを書き込むと、ブロック406内の未使用ページが少なくなる。そして、ブロック406内の未使用ページが足りなくなると、プロセッサ401は、ブロック406へデータを書き込めなくなる。そこで、プロセッサ401は、ブロック406をリクラメーションすることによって、無効ページを未使用ページに再生する。
一方、ウエアレベリング処理(消去回数平準化処理)は、それぞれのブロック406のデータ消去回数を平準化する処理である。これによって、フラッシュメモリMEMの寿命を長くできる。なぜなら、フラッシュメモリMEMは、データの消去回数が多くなると、寿命になるからである。フラッシュメモリMEMは、一般的に、約一万回から十万回のデータの消去が保証されている。
尚、フラッシュメモリ・モジュールP00のハードウェア構成について詳述したが、他のフラッシュメモリ・モジュールP01〜P33についても、同様のハードウェア構成を有している。
図5はフラッシュメモリ・モジュールP00のブロック406の説明図である。ブロック406は、複数のページ501を含む。ブロック406は、一般的に、数十程度のページ501(例えば64ページ等)を含む。ページ501は、メモリコントローラMC等がデータを読み書きする単位である。例えば、NAND型フラッシュメモリでは、メモリコントローラMC等は、1ページあたり20μs〜30μsの時間でデータを読み出し、1ページあたり0.2ms〜0.3ms程度の時間でデータを書き込む。また、メモリコントローラMC等は、1ブロックあたり2ms〜4ms程度の時間でデータを消去する。
ページ501は、データ部502及び冗長部503を含む。例えば、1ページにつき、ページ501は2112バイト、データ部502は2048バイト、冗長部503は64バイトである。本実施形態では、1ページにつき、ページ501は2112バイト、データ部502は2048バイトであるフラッシュメモリを例示するが、ページ・サイズを特に限定するものではない。
データ部502は、ユーザデータを記憶する。冗長部503は、ページ501の管理情報及びエラー訂正情報を記憶する。管理情報は、オフセットアドレス及びページステータスを含む。尚、オフセットアドレスは、ページ501が属するブロック406内における相対的なアドレスである。また、ページステータスは、ページ501が有効ページ、無効ページ、未使用ページ又は処理中ページのうち何れであるかを示す。エラー訂正情報は、ページ501のエラーを検出及び訂正するための情報であり、例えば、ハミングコードである。ページ内冗長部503は、通常、メモリコントローラMCのみがアクセス可能であり、ストレージアダプタSA0、SA1からは、ページ・データ部502のみがアクセス可能である。言い換えると、論理アドレスは、データ部502のメモリ空間をマッピングするためのものである。
上述したリクラメーション処理やウエアレベリング処理のため、フラッシュメモリ・モジュールに書き込まれたデータは、ストレージコントローラSCからの指示とは独立に、フラッシュメモリ・モジュール内で移動することがある。メモリコントローラMCは、このデータ移動の結果を、アドレス変換テーブルに正しく反映することにより、ストレージコントローラSCは、正しいデータをアクセスすることができる。
ところが、リクラメーション処理やウエアレベリング処理を実行するためのプログラム上の不具合(バグ等)や、放射線等によるアドレス変換テーブル内のデータ化けにより、論理アドレスと物理アドレスとの対応関係に誤りが生じると、フラッシュメモリ・モジュール内において、データの書き込み先アドレス又はデータの読み出し先アドレスにエラーが発生することとなり、ストレージコントローラSCが正しいデータを読み書きすることができなくなる。本実施形態は、フラッシュメモリ・モジュール内で生じるアドレス・エラーからデータを適切に保護するものである。
次に、図6乃至図7を参照しながらアドレス・エラーの検出方法について説明する。
図6はストレージコントローラSCがフラッシュメモリ・モジュールP00へデータを書き込む処理の概要を示す。ストレージコントローラSC内のキャッシュメモリCM上では、データ601は、ハードディスクドライブのセクタ容量単位(例えば、520バイト単位)で管理されている。520バイトのデータ601は、512バイトのユーザデータと、8バイトのハードディスクドライブ向け保護コードとを含む。ハードディスクドライブ向け保護コードは、データの書き込み先となるハードディスクドライブのアドレス情報(書き込みアドレス)を特定可能な情報を含む。
ストレージシステム10は、従来のアーキテクチャとの互換性を維持することを目的として、データを格納するための記録媒体として、フラッシュメモリ・モジュールと、ハードディスクドライブとを混載するので、キャッシュメモリCM上では、ハードディスクドライブのセクタ容量単位でデータを管理する。ここでは、キャッシュメモリCM上のデータ601にアクセスするためのアドレスを、キャッシュ・アドレスと称する。
ストレージコントローラSCは、フラッシュメモリ・モジュールP00にデータを書き込む際に、キャッシュメモリCM上のデータ601をストレージアダプタSAへ転送する(ステップ602)。ストレージアダプタSAは、書き込み先のフラッシュメモリ・モジュールP00内のページ・データ部のサイズをチェックし、フラッシュメモリ・モジュールP00内の書き込み先の先頭論理アドレスを計算する(詳細については、後述する。)。ここでは、書き込み先の論理アドレスを“A0”とする。ストレージアダプタSAは、書込み先の論理アドレス情報を特定可能な保護コード604を生成する。保護コード604は、必ずしも論理アドレスそのものである必要はなく、書込み先の論理アドレスを特定できる情報であればよい。保護コード604は、例えば、論理アドレスの一部又は全部、或いは論理アドレスを符号化した情報を含む。
そして、ストレージアダプタSAは、フラッシュメモリ・モジュールP00にデータを書き込む際、アドレス・エラーから書き込みデータを保護するための保護コード604を書き込みデータ603に付加する。このとき、ストレージアダプタSAは、書き込みデータ603のサイズと保護コード604のサイズとを合わせたサイズが、書込み先フラッシュメモリ・モジュールP00内のページ・データ部のサイズと一致するように、データ601を分割する。詳細には、ストレージアダプタSAは、キャッシュメモリCM上で520バイト単位に管理されていたデータ601を保護コード604と合わせて2048バイトになるように、書き込みデータ603の境界を調整する。ストレージアダプタSAは、フラッシュメモリ・モジュールP00のページ・データ部のサイズに調整された書き込みデータ603及び保護コード604を、フラッシュメモリ・モジュールP00へ転送する(ステップ605)。
書込みデータ603を受信したメモリコントローラMCは、アドレス変換テーブル606を参照し、書込み先の物理アドレスを求める。アドレス変換テーブル606によれば、論理アドレス“A0”に対応する物理アドレスは“b0”であり、論理アドレス“A1”に対応する物理アドレスは“b1”である。メモリコントローラMCは、ストレージアダプタSAから受信した書き込みデータ603を保護コード604とともに物理アドレス“b0”のページ・データ部へ書き込む(ステップ607)。
メモリコントローラMCは、保護コード604をデータとして扱い、フラッシュメモリMEMに書き込む。メモリコントローラMCは、例えば、SCSIプロトコルの場合に、Writeコマンドと併せて受信した書き込み先論理アドレス情報に基づき、書き込み処理を実行する。同様に、メモリコントローラMCは、Readコマンドと併せて受信した読出し先論理アドレス情報に基づき、読出し処理を実行する。
詳細には、メモリコントローラMCがコマンドと共に受信する論理アドレス情報は、本実施形態のフラッシュメモリ・モジュールはハードディスクドライブ互換デバイスとして機能するので、例えば1セクタを512バイトとした場合のセクタアドレスである。メモリコントローラMCは、フラッシュメモリへアクセスする際に、受信したセクタアドレスを論理アドレスへ変換し、さらに物理アドレスへ変換する。本実施形態において、セクタアドレスから論理アドレスへの変換は、ページ・データ部サイズ(2048バイト)がセクタサイズ(512バイト)の整数倍(4倍)になっているので、ページ・データ部先頭に対応するセクタアドレス=論理アドレス×4となる。このセクタアドレスは、ストレージチャネルインターフェイスとフラッシュメモリ・モジュール間のデータ転送においてのみ使用されるアドレスであるので、簡単のため、このセクタアドレスに関する説明は省略する。
尚、符号608は、物理アドレス“b0”のページを示し、符号609は、物理アドレス“b1”のページを示す。符号610は、メモリコントローラMCが使用する冗長部である。
図7はフラッシュメモリ・モジュールP00内でアドレス・エラーが発生した場合に、ストレージコントローラSCがアドレス・エラーを検出する処理の概要を示す。アドレス変換テーブル606において、論理アドレス“A0”に対応する物理アドレスは“b0”のはずであるが、論理アドレス“A0”に対応する物理アドレスが誤って“b1”に置換した場合を考える(ステップ710)。
ストレージコントローラSCが、論理アドレス“A0”に格納されたページ・データ部のデータを読み出そうとしても、アドレス変換テーブル606には、アドレス・エラーが生じているので、メモリコントローラMCは、物理アドレス“b1”のページ・データ部を読み出し(ステップ707)、これをストレージアダプタSAへ転送する(ステップ705)。
ストレージアダプタSAは、フラッシュメモリ・モジュールP00から読み出されたデータ703に付加されている保護コード704をチェックする。詳細には、ストレージアダプタSAは、読み出しデータ703に付加されている保護コード704から特定される論理アドレス情報“A1”と、メモリコントローラMCに読み出しを指示した論理アドレス“A0”とを比較し、データ703が正常に読み出されているか否かをチェックする。アドレス変換テーブル606には、アドレス・エラーが生じているので、保護コード704から特定される論理アドレス情報“A1”と、メモリコントローラMCに読み出しを指示した論理アドレス“A0”とは一致しない。これにより、ストレージアダプタSAは、アドレス・エラーを検出できる。ストレージアダプタSAは、アドレス・エラーを検出すると、読み出しデータ703をキャッシュメモリCMに格納しない(ステップ702)。読み出されたデータ703は、本来読み出すべきデータではないからである。
図8はストレージチャネルインタフェース32のハードウェア構成を示す。ストレージチャネルインタフェース32は、書き込みデータに保護コードを付加し、読出しデータのアドレス・エラー検出する機能を有する。ストレージチャネルインタフェース32は、メディア判定部801、XORエンジン804、スイッチ(SW1)805、スイッチ(SW2)806、保護コード検査部(LA検査部)808、及び保護コード付加部(LA付加部)809、及びデータアライナ810を備える。
ストレージチャネルインタフェース32は、チャネル812を介してプロセッサ周辺制御部36(図3参照)に接続されている。メディア判定部801は、ストレージシステム10に接続された記録媒体の種別を判定するための情報と、書き込み先の論理アドレスを計算するための情報とを有している。詳細には、メディア判定部801は、メディア・データベース803と、PDEV管理テーブル802とを有している。メディア・データベース803とPDEV管理テーブル802の詳細については、後述する。XORエンジン804は、RAIDグループに格納するパリティ・データを生成する。また、XORエンジン804は、エラー発生時に失われたデータを再生する。XORエンジン804は、スイッチ805と信号線37のそれぞれに接続している。
スイッチ805,806は、メディア判定部801の判定結果に基づいてデータ入出力経路を切り替える。例えば、データの書き込み先又は読み出し先がハードディスクドライブである場合には、チャネル811がデータの入出力経路になるようにスイッチ805,806を切り替える。一方、データの書き込み先又は読み出し先がフラッシュメモリ・モジュールである場合には、チャネル807がデータの入出力経路になるようにスイッチ805,806を切り替える。
データの読み出し先がフラッシュメモリ・モジュールである場合には、読出しデータは保護コード検査部808とデータ・アライナ810とをそれぞれ経由する。一方、データの書き込み先がフラッシュメモリ・モジュールである場合には、書込みデータは、データ・アライナ810と保護コード付加部809とをそれぞれ経由する。
スイッチ806は、チャネルD00〜D03に接続している。データ・アライナ810は、フラッシュメモリ・モジュールにデータを書き込む際には、キャッシュメモリCM上で520バイト単位に管理されているデータの境界を、そのデータに保護コードを付加した状態でページ・データ部のサイズに一致するように調整する。また、データ・アライナ810は、フラッシュメモリ・モジュールからデータを読み出す際には、読み出しデータから保護コードを除去し、そして、保護コードが除去された読み出しデータのデータ境界がキャッシュメモリCM上の管理単位(520バイト)に一致するように調整する。
保護コード付加部809は、メディア判定部801から得られる情報(ページ・データ部のサイズなど)を基に、フラッシュメモリ・モジュール内の書込み先ページの論理ページアドレス情報を特定可能な保護コードを生成し、その保護コードを書込みデータに付加する。
保護コード検査部808は、読み出しデータに付加されている保護コードから特定される論理アドレスと、本来読み出されるべきデータの論理アドレスとが一致するか否かをチェックする。
図9はPDEV管理テーブル802に格納されている情報を示す。PDEV管理テーブル802は、ストレージシステム10に接続するそれぞれの記録媒体(PDEV)に関する情報を管理する。ストレージチャネルインタフェース32は、ストレージシステム10に接続されたそれぞれの記録媒体にInquiryコマンドを送信し、そのInquiryコマンドに対する応答を基に記録媒体のモジュール名901、ベンダ名902、及び型式903をPDEV管理テーブル802に格納する。更に、ストレージチャネルインタフェース32は、メディア・データベース803を検索し、Inquiryコマンドの応答に含まれているベンダ名、及び型式に一致する仕様の媒体種別904とページ・データ部サイズ905とをPDEV管理テーブル802に格納する。ストレージチャネルインタフェース32は、PDEV管理テーブル802を保持することにより、ストレージシステム10に接続されるそれぞれの記録媒体の媒体種別、及びページ・データ部サイズ(又はセクタ容量)を把握することができる。
図10はメディア・データベース803に格納されている情報を示す。メディア・データベース803には、ストレージシステム10に接続する可能性がある記録媒体(例えばフラッシュメモリ・モジュール、ハードディスクドライブなど)のベンダ名902、型式903、媒体種別904、ページ・データ部サイズ905が格納されている。媒体種別904は、記録媒体がフラッシュメモリ・モジュールであるのか、又はハードディスクドライブであるのかを識別する情報である。記録媒体がフラッシュメモリ・モジュールの場合は、媒体種別904に“1”が格納される。記録媒体がハードディスクドライブの場合には、媒体種別904に“0”が格納される。記録媒体がハードディスクドライブである場合におけるページ・データ部サイズ905は、1セクタ当たりの容量を示す。
尚、管理者は、保守端末SVP(図1参照)を操作することにより、メディア・データベース803内のデータを修正又は追加することができる。メディア・データベース803に登録されていない新しい仕様のフラッシュメモリ・モジュールに関する情報をメディア・データベース803に追加することにより、その新しい仕様のフラッシュメモリ・モジュールにデータを書き込む際に、書き込み先の論理アドレスを特定可能な保護コードを書き込みデータに付加することができる。
図11はストレージコントローラSCによるデータ読出しの処理手順を示すフローチャートである。ストレージコントローラSCは、ストレージチャネルインタフェース32に読出し先のキャッシュ・アドレスLAと、読出しデータ長DLとを入力する(ステップ1101)。
次に、ストレージチャネルインタフェース32は、リトライカウンタをリセットする(ステップ1102)。
次に、ストレージチャネルインタフェース32は、読出し先のフラッシュメモリ・モジュールの論理アドレス範囲(先頭論理アドレスPA1、オフセット値OS1、末尾論理アドレスPA2、及びオフセット値OS2)を計算する(ステップ1103)。先頭論理アドレスPA1、オフセット値OS1、末尾論理アドレスPA2、及びオフセット値OS2を計算する方法については、後述する。
次に、ストレージチャネルインタフェース32は、フラッシュメモリ・モジュールからデータ(先頭論理アドレスPA1から末尾論理アドレスPA2までの範囲のデータ)を読み出す(ステップ1104)。
次に、ストレージチャネルインタフェース32は、読み出しデータに付加されている保護コードから特定される論理アドレスと、本来読み出されるべきデータの論理アドレスとを比較し、アドレス・エラーが生じているか否かをチェックする(ステップ1105)。ここで、アドレス・エラーが発見されない場合は(ステップ1105;YES)、ステップ1106へ進み、アドレス・エラーが発見された場合は(ステップ1105;NO)、ステップ1107へ進む。
アドレス・エラーが生じてない場合、ストレージチャネルインタフェース32は、読み出しデータに付加されている保護コードを除去し、データ境界がキャッシュメモリCM上の管理単位に一致するように調整する(ステップ1106)。その後、ストレージチャネルインタフェース32は、キャッシュメモリCMへデータを格納して、読出し動作を完了する。
アドレス・エラーが生じている場合、ストレージチャネルインタフェース32は、リトライカウンタを1だけインクリメントし(ステップ1107)、リトライカウンタの値が規定回数に達してない場合には(ステップ1108;NO)、データの読み出し動作を繰り返し実行する(ステップ1104)。リトライカウンタの値が規定回数を越えると(ステップ1108;YES)、ストレージチャネルインタフェース32は、エラー訂正処理を実行する(ステップ1109)。
図12はキャッシュ・アドレスを論理アドレスに変換するための方法を示す。先頭論理アドレスPA1、オフセット値OS1、末尾論理アドレスPA2、及びオフセット値OS2は、それぞれ式(1)〜式(4)を用いて計算することができる。
PA1=int{(LA1*X)/(PS−Y)} …(1)
PA2=int[{(LA1+DL)*X−1}/(PS−Y)] …(2)
OS1=LA1*X−PA1*(PS−Y) …(3)
OS2=(LA1+DL)*X−1−PA2*(PS−Y) …(4)
ここで、Xはキャッシュメモリ上の管理単位、LA1は読出し或いは書き込み範囲の先頭キャッシュ・アドレス、LA2は読出し或いは書込み範囲の末尾キャッシュ・アドレス、DLは読み出し或いは書込みデータのサイズ、PSはフラッシュメモリ・モジュールのページ・データ部サイズ、Yは保護コードのサイズを示す。尚、ページ・データ部内先頭アドレス側にデータを配置し、末尾アドレス側に保護コードを配置する場合を例示するが、データ配置及び保護コード配置を限定するものではない。
説明の便宜上、図12では、キャッシュメモリ内のキャッシュ・アドレスLA=0と、フラッシュメモリ・モジュール内の論理アドレスPA=0とを揃えて、それぞれのメモリ空間を図示している。PA1は、フラッシュメモリ・モジュール内に読み出し或いは書き込みするデータの先頭ページ・データ部1101の論理アドレスを示す。PA2は、フラッシュメモリ・モジュールに読み出し或いは書き込みするデータの末尾ページ・データ部1102の論理アドレスを示す。
キャッシュメモリとフラッシュメモリ・モジュールとでは、データの管理単位が異なるため、PA1からPA2までのデータをアクセスすると、読み書きすべきデータのサイズDLに比べて余分にアクセスすることになる。本明細書では、この余分な部分を、オフセットと称する。先頭ページ・データ部1101には、オフセット1103が存在する。末尾ページ・データ部1102には、オフセット1104が存在する。また、OS1,OS2は、ページ・データ部内のアドレスを示す。キャッシュメモリ上のアドレスLA1からアドレスLA2までのアドレス空間は、フラッシュメモリ・モジュール内の先頭ページ・データ部1101(論理アドレスPA1により特定されるページ・データ部)内のアドレスOS1から末尾ページ・データ部1102(論理アドレスPA2により特定されるページ・データ部)内のアドレスOS2までのアドレス空間に対応する。
ストレージコントローラSCは、オフセット1103,1104を含むページ・データ部全体をフラッシュメモリ・モジュールから読み出し、その読み出したデータからオフセット1103,1104を除去した上で、その読み出しデータをキャッシュメモリへ格納する。
尚、仕様が異なる記録媒体毎に、式(1)〜式(4)に示したような論理アドレスと物理アドレスとの間のアドレス変換式をメディア・データベース803に格納しておくと、様々なアドレス変換仕様を有する記録媒体について柔軟に対応することが可能となる。
図13はストレージコントローラSCによるデータ書き込みの処理手順を示すフローチャートである。ストレージコントローラSCは、ストレージチャネルインタフェース32に、書込み先の先頭キャッシュ・アドレスLAと、書込みデータ・サイズDLとを入力する(ステップ1301)。
ストレージコントローラSCは、式(1)〜式(4)に基づいて、書き込み先のフラッシュメモリ・モジュールの論理アドレス範囲(先頭論理アドレスPA1、オフセット値OS1、末尾論理アドレスPA2、及びオフセット値OS2)を計算する(ステップ1302)。
次に、ストレージコントローラSCは、先頭ページ・データ部1101にオフセット1103が存在するか否か(つまり、OS1=0であるか否か)をチェックする(ステップ1303)。
先頭ページ・データ部1101にオフセット1103が存在する場合には(ステップ1303;NO)、ストレージコントローラSCは、先頭ページ・データ部1101を読み出す(ステップ1304)。一方、先頭ページ・データ部1101にオフセット1103が存在しない場合には(ステップ1303;YES)、ストレージコントローラSCは、ステップ1305に進む。
次に、ストレージコントローラSCは、末尾ページ・データ部1102にオフセット1104が存在し(つまり、OS2≠PS−Y−1)、且つ末尾ページ・データ部が未読み出し(つまり、OS1==0||(OS1≠0&&PA1≠PA2))であるか否かをチェックする(ステップ1305)。
末尾ページ・データ部1102にオフセット1104が存在し、末尾ページ・データ部が未読み出しの場合には(ステップ1305;YES)、ストレージコントローラSCは、末尾ページ・データ部1102を読み出す(ステップ1306)。一方、末尾ページ・データ部1102にオフセット1104が存在しない、又は末尾ページ・データ部を読み出し済みの場合には(ステップ1305;NO)、ストレージコントローラSCは、ステップ1307に進む。
ストレージコントローラSCは、先頭ページ・データ部1101又は末尾ページ・データ部1102を読み出した場合には、オフセット1103,1104の部分のデータは更新せずに、オフセット1103,1104以外の部分をキャッシュメモリCM上の書き込みデータに更新する。更に、ストレージコントローラSCは、書き込み先論理アドレスを特定可能な保護コードをキャッシュメモリCM上のデータに付加し、且つ保護コードを付加した状態で書き込みデータのサイズがページ・データ部サイズに一致するようにデータ境界を調整する(ステップ1307)。
次に、ストレージコントローラSCは、先頭論理アドレスPA1から末尾論理アドレスPA2までの書込みデータをフラッシュメモリ・モジュールへ転送し(ステップ1308)、書込み処理を完了する。
図14はストレージチャネルインタフェース32によるエラー訂正処理を示すフローチャートである。例として、フラッシュメモリ・モジュールP00,P10,P20,P30からなるRAIDグループVDEV0において、モジュールP00の論理アドレスPA1にアドレス・エラーが発生した場合を考察する。
ストレージチャネルインタフェース32は、フラッシュメモリ・モジュールP00と同じRAIDグループVDEV00に属する他のそれぞれのフラッシュメモリ・モジュールP10,P20,P30の論理アドレスPA1からデータを読み出す(ステップ1401a,ステップ1401b,ステップ1401c)。
次に、ストレージチャネルインタフェース32は、読み出したデータから論理アドレスを特定可能なフラッシュメモリ向け保護コードを取り除く(ステップ1402a,ステップ1402b,ステップ1402c)。
次に、ストレージチャネルインタフェース32は、読出しデータを、キャッシュメモリ上の管理単位に分割する(ステップ1403a,ステップ1403b,ステップ1403c)。
次に、ストレージチャネルインタフェース32は、キャッシュメモリ上の管理単位に分割されたデータからハードディスクドライブ向け保護コードを取り除く(ステップ1404a,ステップ1404b,ステップ1404c)。
次に、XORエンジン804は、フラッシュメモリ向け保護コード、及びハードディスクドライブ向け保護コードを取り除いたデータについて、排他的論理和を計算し、フラッシュメモリ・モジュールP00に格納されているはずのデータを再生する(ステップ1405)。
次に、ストレージチャネルインタフェース32は、再生データにハードディスクドライブ向け保護コードを付加する(ステップ1406)。
次に、ストレージチャネルインタフェース32は、再生データにフラッシュメモリ・モジュール向け保護コード(書込み先論理アドレスPA1を特定可能な情報)を更に付加し、データ境界がページ・データ部サイズに一致するように調整する(ステップ1407)。
次に、ストレージチャネルインタフェース32は、再生データをフラッシュメモリ・モジュールP00の論理アドレスPA1へ上書きする(ステップ1408)。以上の処理を経て、エラー訂正処理が完了する。
尚、ハードディスクドライブにおいて、アドレス・エラーが生じると、ストレージコントローラSCは、アドレス・エラーが生じたデータを第一のデータ長単位で上書き訂正する。
図15はストレージコントローラSCがデータ書込み時にアドレス・エラーからデータを保護するための他の保護コードを付加する動作を説明する図である。例えば、ストレージコントローラSCは、シーケンシャル・アクセス・データをフラッシュメモリ・モジュールP00に書き込む際に、書込み時刻情報を含む保護コードをシーケンシャル・アクセス・データに付加する。
ストレージコントローラSC内のキャッシュメモリCM上では、データ1401は、ハードディスクドライブのセクタ容量単位(例えば、520バイト単位)で管理されている。ストレージコントローラSCは、フラッシュメモリ・モジュールP00にデータを書き込む際に、キャッシュメモリCM上のデータ1401をストレージアダプタSAへ転送する(ステップ1402)。
ストレージアダプタSAが書込み先のフラッシュメモリ・モジュールP00内の論理アドレスA0からA2へ、シーケンシャル・データ1403を書き込む場合を考察する。ストレージアダプタSAは、書込み先の論理アドレス“A0”〜“A2”と、書込み時刻情報“t1”を特定可能な保護コード1404を生成する。ストレージアダプタSAは、ページ・データ部サイズに合わせたデータ1403及び保護コード1404をフラッシュメモリ・モジュールP00へ転送する(ステップ1405)。
書込みデータを受信したメモリコントローラMCは、アドレス変換テーブル1406を参照し、書き込み先の物理アドレスを求める。アドレス変換テーブル1406によれば、それぞれの論理アドレス“A0”〜“A2”に対応する物理アドレスは“b0”〜“b2”である。メモリコントローラMCは、物理アドレス“b0”〜“b2”のページ・データ部1408に、書込みデータを論理アドレス“A0”〜“A2”を特定可能な保護コード、及び書き込み時刻情報“t1”を特定可能な保護コードを共に格納する。
尚、符号1410は、メモリコントローラMCが使用する冗長部を示す。
図16はフラッシュメモリ・モジュール内でアドレス・エラーが生じたときにストレージコントローラSCが書込み時刻情報を含む保護コードに基づいてアドレス・エラーを検出する動作を説明する図である。ここでは、アドレス変換テーブル1406において、論理アドレス“A1”に対応する物理アドレスは“b1”であるはずが、論理アドレス“A1”に対応する物理アドレスが“b4”に誤って置換し(ステップ1510)、更に物理アドレス“b4”には、論理アドレスA1の古いデータ(書込み時刻情報“t0”)が消去されずに残っている場合を考察する。
尚、符号1508は、物理アドレス“b1”のページを示し、符号1509は、物理アドレス“b4”のページを示す。符号1410は、メモリコントローラMCが使用する冗長部を示す。
ストレージコントローラSCが、論理アドレス“A0”〜“A2”のシーケンシャル・データを読み出そうとする。ストレージコントローラSCが論理アドレス“A1”に格納されたページ・データ部のデータを読み出そうとしても、アドレス変換テーブル1406内に生じたアドレス・エラーのため、メモリコントローラMCは、誤った物理アドレス“b4”のページ・データ部を読み出し(ステップ1507)、その読み取りデータをストレージアダプタSAへ転送する(ステップ1505)。
ストレージアダプタSAは、受信したデータ1503に付加されている保護コード1504をチェックする。しかし、物理アドレス“b4”から読み出したデータに含まれる保護コードから特定される論理アドレスが“A1”であるので、論理アドレスをチェックしただけでは、アドレス・エラーを検出することができない。
しかし、読み出した論理アドレス“A0”〜“A2”のシーケンシャル・データは、同時に書き込まれたものであるので、保護コード1504から特定される時刻情報“t1”が全て同じはずである。そのため、ストレージアダプタSAは、時刻情報が一致しない保護コード“t0”を発見することにより、アドレス・エラーを検出することができる。
アドレス・エラーが判明したデータは、キャッシュメモリCMへは格納されない(ステップ1502)。
以上、説明したように、シーケンシャル・データの場合は、保護コードに論理アドレスを特定可能な情報に加えて書込み時刻を特定可能な情報をも付加することにより、データの信頼性を更に向上させることができる。
尚、書き込み時刻情報に替えて、書込みデータが属するエクスチェンジやシーケンスの識別子、或いは書き込み時刻情報を符号化した情報を保護コードに含ませてもよい。また書き込みデータ毎の論理アドレス情報と書き込み時刻情報との対応関係を記録したテーブルをストレージアダプタ内に保持しておき、データ読み出し時に保護コードから特定した書き込み時刻情報とテーブル内の記録を比較検査してもよい。
図17はデータ書込み時にページ・データ部に付加する、他の保護コードの例を説明する図である。ページは、ページ・データ部1606と冗長部1605とを含む。冗長部1605は、ストレージコントローラSCからは書き込めない領域なので、保護コードは、ページ・データ部1606内の所定の領域にデータ1601と共に書き込む。ページ・データ部1606には、データ1601と保護コード1602,1603,1604とが書き込まれる。
ここで、保護コード1602は、論理アドレスを特定可能な情報を含む。保護コード1603は、書込み時刻を特定可能な情報を含む。保護コード1604は、ページ・データ部に書き込まれたデータ1601及び保護コード1602,1603のエラーを検出又は訂正するためのものである。保護コード1604は、例えば、CRC(Cyclic Redundancy Check)コード、LRC(Longitudinal Redundancy Check)コード、又はハミングコード等である。
フラッシュメモリ・モジュール内では、メモリコントローラMCが、ページ・データ部に書き込まれたデータに対する保護コードを冗長部1605に格納し、データを保証している。しかし、冗長部1605内の保護コードは、メモリコントローラMCとストレージアダプタSA間のデータ転送では取り除かれるため、ストレージコントローラSAとフラッシュメモリ・モジュール間で一貫したデータ保証ができない。そこで、ページ・データ部に、データおよび他の保護コードと共にエラー訂正情報を書き込むことにより、ストレージシステムの信頼性が向上する。
本実施形態によれば、ストレージコントローラSC内のメモリ管理単位と、記録媒体内の管理単位との間に容量差があるストレージシステム10において、記録媒体内のアドレス・エラーを検出し、データを適切に保護できる。
本実施形態に係るストレージシステムのハードウェア構成図である。 チャネルアダプタのハードウェア構成図である。 ストレージアダプタのハードウェア構成図である。 フラッシュメモリ・モジュールのハードウェア構成図である。 フラッシュメモリ・モジュールのブロックの説明図である。 ストレージコントローラがフラッシュメモリ・モジュールへデータを書き込む処理の概要を示す説明図である。 フラッシュメモリ・モジュール内でアドレス・エラーが発生した場合にストレージコントローラがアドレス・エラーを検出する処理の概要を示す説明図である。 ストレージチャネルインタフェースのハードウェア構成図である。 PDEV管理テーブルに格納されている情報の説明図である。 メディア・データベースに格納されている情報の説明図である。 ストレージコントローラによるデータ読出しの処理手順を示すフローチャートである。 キャッシュ・アドレスを論理アドレスに変換する方法の説明図である。 ストレージコントローラによるデータ書き込みの処理手順を示すフローチャートである。 ストレージチャネルインタフェースによるエラー訂正処理を示すフローチャートである。 ストレージコントローラがデータ書込み時にアドレス・エラーからデータを保護するための他の保護コードを付加する動作を説明する図である。 フラッシュメモリ・モジュール内でアドレス・エラーが生じたときにストレージコントローラが書込み時刻情報を含む保護コードに基づいてアドレス・エラーを検出する動作を説明する図である。 データ書込み時にページ・データ部に付加する、他の保護コードの例を説明する図である。
符号の説明
10…ストレージシステム SC…ストレージコントローラ CA…チャネルアダプタ SA…ストレージアダプタ NW…相互結合網 P00〜P33…フラッシュメモリ・モジュール

Claims (7)

  1. フラッシュメモリ・チップ及び前記フラッシュメモリ・チップに対して読み書きするデータをページ単位で管理するメモリコントローラを備えたフラッシュメモリ・モジュールと、
    前記フラッシュメモリ・チップに対して読み書きるデータを一時的に格納するためのキャッシュメモリ及び前記フラッシュメモリ・チップに対して読み書きするデータを前記キャッシュメモリ上ではハードディスクドライブのセクタ容量単位で管理するストレージコントローラと、
    を備え、
    前記フラッシュメモリ・モジュールは、
    1ページあたりの記憶領域前記ストレージコントローラから読み書き可能なデータ長のページデータ部及び該ページの管理情報を格納するための冗長部により構成して管理し
    前記ストレージコントローラは、
    前記ストレージコントローラに接続する記録媒体の種別及び仕様と、前記種別及び仕様に対応する前記ページデータ部のデータ長とを判別するためのメディア判定部を備えており、前記メディア判定部により判別した前記ストレージコントローラに接続する記録媒体がフラッシュメモリ・モジュールである場合、
    前記フラッシュメモリ・チップへのデータ書き込み時において
    書き込み先ページのアドレス情報を特定可能な保護コードを生成し、更に書き込みデータと前記保護コードとを合わせて前記メディア判定部により判別した前記記録媒体の種別及び仕様に対応する前記ページデータ部のデータ長となるように、前記ハードディスクドライブのセクタ容量単位で管理ている前記キャッシュメモリ上のデータを分割し、前記書き込みデータと前記保護コードとを合わせて前記ページデータ部のデータ長単位で前記フラッシュメモリ・チップに書き込み、
    前記フラッシュメモリ・チップからのデータ読み出し時において、
    前記フラッシュメモリ・チップから読み出したデータに付加されている前記保護コードから特定されるアドレス情報と、読み出すべきデータのアドレス情報とを比較することで、読み出しエラーの有無をチェックする
    ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記フラッシュメモリ・モジュールが提供する記憶領域はRAID構成されており、
    前記ストレージコントローラは、何れかのフラッシュメモリ・モジュール内のデータにアドレス・エラーが生じると、前記アドレス・エラーが生じたデータを格納するフラッシュメモリ・モジュールと同一のRAIDグループに属する他のフラッシュメモリ・モジュール内のデータを用いて、アドレス・エラーが生じたデータを前記ページデータ部のデータ長単位で復元し、前記アドレス・エラーが生じたデータを前記復元したデータで上書きする、ストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    前記ストレージコントローラは、ハードディスクドライブにおいてアドレス・エラーが生じると、前記アドレス・エラーが生じたデータを前記ハードディスクドライブのセクタ容量単位で上書き訂正する、ストレージシステム。
  4. 請求項1に記載のストレージシステムであって、
    前記保護コードは、書き込み時刻情報を含む、ストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記保護コードは、前記ページデータ部のデータ長を有するデータを保護するためのエラー検出コードを含む、ストレージシステム。
  6. 請求項に記載のストレージシステムであって、
    前記ハードディスクドライブのセクタ容量のデータ長を有するデータは、データと、前記データの書き込み先であるハードディスクドライブのアドレス情報を特定可能な保護コードとを有する、ストレージシステム。
  7. フラッシュメモリ・チップ及び前記フラッシュメモリ・チップに対して読み書きするデータをページ単位で管理するメモリコントローラを備えたフラッシュメモリ・モジュールと、前記フラッシュメモリ・チップに対して読み書きするデータを一時的に格納するためのキャッシュメモリ及び前記フラッシュメモリ・チップに対して読み書きするデータを前記キャッシュメモリ上ではハードディスクドライブのセクタ容量単位で管理するストレージコントローラと、を備えたストレージシステムのデータ保護方法であって、
    前記フラッシュメモリ・モジュールが、
    1ページあたりの記憶領域を前記ストレージコントローラから読み書き可能なデータ長のページデータ部及び該ページの管理情報を格納するための冗長部により構成して管理する第1のステップと、
    前記ストレージコントローラが、
    前記ストレージコントローラに接続する記録媒体の種別及び仕様と、前記種別及び仕様に対応する前記ページデータ部のデータ長とを判別するためのメディア判定部を備えており、前記メディア判定部により判別した前記ストレージコントローラに接続する記録媒体がフラッシュメモリ・モジュールである場合、
    前記フラッシュメモリ・チップへのデータ書き込み時において、
    書き込み先ページのアドレス情報を特定可能な保護コードを生成し、更に書き込みデータと前記保護コードとを合わせて前記メディア判定部により判別した前記記録媒体の種別及び仕様に対応する前記ページデータ部のデータ長となるように、前記ハードディスクドライブのセクタ容量単位で管理している前記キャッシュメモリ上のデータを分割し、前記書き込みデータと前記保護コードとを合わせて前記ページデータ部のデータ長単位で前記フラッシュメモリ・チップに書き込む第2のステップと、
    前記フラッシュメモリ・チップからのデータ読み出し時において、
    前記フラッシュメモリ・チップから読み出したデータに付加されている前記保護コードから特定されるアドレス情報と、読み出すべきデータのアドレス情報とを比較することで、読み出しエラーの有無をチェックする第3のステップと
    を備えたことを特徴とするデータ保護方法。
JP2006178487A 2006-06-28 2006-06-28 ストレージシステム及びそのデータ保護方法 Active JP4842719B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006178487A JP4842719B2 (ja) 2006-06-28 2006-06-28 ストレージシステム及びそのデータ保護方法
US11/503,050 US7574554B2 (en) 2006-06-28 2006-08-11 Storage system and data protection method therefor
EP06255630A EP1873649A1 (en) 2006-06-28 2006-11-01 Storage system and data protection method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006178487A JP4842719B2 (ja) 2006-06-28 2006-06-28 ストレージシステム及びそのデータ保護方法

Publications (2)

Publication Number Publication Date
JP2008009635A JP2008009635A (ja) 2008-01-17
JP4842719B2 true JP4842719B2 (ja) 2011-12-21

Family

ID=38441571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006178487A Active JP4842719B2 (ja) 2006-06-28 2006-06-28 ストレージシステム及びそのデータ保護方法

Country Status (3)

Country Link
US (1) US7574554B2 (ja)
EP (1) EP1873649A1 (ja)
JP (1) JP4842719B2 (ja)

Families Citing this family (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108590B2 (en) * 2000-01-06 2012-01-31 Super Talent Electronics, Inc. Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear
TWI309044B (en) * 2006-11-20 2009-04-21 Nanya Technology Corp Method for repairing defects in memory and related memory system
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
WO2008070812A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for data storage using progressive raid
JP2008204041A (ja) * 2007-02-19 2008-09-04 Hitachi Ltd ストレージ装置及びデータ配置制御方法
US7865805B1 (en) * 2007-02-26 2011-01-04 Lockheed Martin Corporation Multiple bit upset insensitive error detection and correction circuit for field programmable gate array based on static random access memory blocks
JP2008269142A (ja) * 2007-04-18 2008-11-06 Hitachi Ltd ディスクアレイ装置
CN101178933B (zh) * 2007-12-05 2010-07-28 苏州壹世通科技有限公司 一种闪存阵列装置
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
JP4672742B2 (ja) * 2008-02-27 2011-04-20 株式会社東芝 メモリコントローラおよびメモリシステム
WO2009140700A1 (en) 2008-05-16 2009-11-19 Fusion Multisystems, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP2010055210A (ja) 2008-08-26 2010-03-11 Hitachi Ltd ストレージシステム及びデータ保証方法
US8799743B2 (en) 2008-10-28 2014-08-05 Micron Technology, Inc. Error correction in multiple semiconductor memory units
US20100250826A1 (en) * 2009-03-24 2010-09-30 Micron Technology, Inc. Memory systems with a plurality of structures and methods for operating the same
US8180981B2 (en) 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
KR101615659B1 (ko) 2009-07-16 2016-05-12 삼성전자주식회사 스크래치 패드 메모리 관리 장치 및 방법
WO2011024239A1 (en) * 2009-08-31 2011-03-03 Hitachi, Ltd. Storage system having plurality of flash packages
JP4912456B2 (ja) * 2009-12-17 2012-04-11 株式会社日立製作所 ストレージ装置及びその制御方法
TWI497293B (zh) * 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
US9164886B1 (en) * 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
JP5388976B2 (ja) 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
US9003153B2 (en) * 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
KR101861247B1 (ko) 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
TWI451425B (zh) 2011-04-25 2014-09-01 Silicon Motion Inc 快閃記憶裝置及其資料保護方法
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
GB2493340A (en) * 2011-07-28 2013-02-06 St Microelectronics Res & Dev Address mapping of boot transactions between dies in a system in package
US8938658B2 (en) 2011-11-07 2015-01-20 Sandisk Enterprise Ip Llc Statistical read comparison signal generation for memory systems
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
JP5884606B2 (ja) * 2012-03-30 2016-03-15 富士通株式会社 ストレージ管理方法、システム、およびプログラム
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
JP6000754B2 (ja) * 2012-08-28 2016-10-05 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、及びプログラム
US9400744B2 (en) * 2012-10-30 2016-07-26 Mangstor, Inc. Magnetic random access memory journal for multi-level cell flash memory
TWI461901B (zh) 2012-12-10 2014-11-21 Ind Tech Res Inst 資料儲存與重建的方法與系統
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
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
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
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
WO2014142852A1 (en) * 2013-03-13 2014-09-18 Intel Corporation Vulnerability estimation for cache memory
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
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
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
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
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written 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
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
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
KR102146037B1 (ko) 2013-11-14 2020-08-19 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
CN105900067B (zh) * 2013-11-18 2018-10-23 惠普发展公司,有限责任合伙企业 指示储存器装置的重建状态
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
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
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
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
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
US9798620B2 (en) 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
WO2015118680A1 (ja) * 2014-02-10 2015-08-13 株式会社日立製作所 ストレージ装置
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
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
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
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in 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
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
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
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
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
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
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
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
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
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
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
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
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
FR3038752B1 (fr) * 2015-07-10 2018-07-27 Stmicroelectronics (Rousset) Sas Procede et circuit pour proteger et verifier des donnees d'adresse
US9836243B1 (en) * 2016-03-31 2017-12-05 EMC IP Holding Company LLC Cache management techniques
WO2017176256A1 (en) * 2016-04-05 2017-10-12 Hewlett Packard Enterprise Development Lp Unmap to initialize sectors
JP2019191909A (ja) * 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US11455402B2 (en) 2019-01-30 2022-09-27 Seagate Technology Llc Non-volatile memory with precise write-once protection
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
CN115188404A (zh) * 2021-04-07 2022-10-14 华为技术有限公司 存储装置和处理数据的方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0392895B1 (en) 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
JPH05233426A (ja) 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US5606529A (en) 1994-12-20 1997-02-25 Hitachi, Ltd. Semiconductor disk storage
JPH08263229A (ja) * 1995-03-23 1996-10-11 Hitachi Ltd 半導体記憶装置
JPH10171608A (ja) * 1996-12-11 1998-06-26 Nec Corp 磁気ディスクアレイ装置及び磁気ディスクアレイ装置に於けるデータチェック方法
JP3565687B2 (ja) 1997-08-06 2004-09-15 沖電気工業株式会社 半導体記憶装置およびその制御方法
US5956743A (en) * 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
JP2000347815A (ja) * 1999-06-07 2000-12-15 Hitachi Ltd ディスクアレイシステム
JP2001175419A (ja) * 1999-12-17 2001-06-29 Fujitsu Ltd 記憶装置のエミレーション処理方法及び記憶装置
JP2001202295A (ja) 2000-01-17 2001-07-27 Hitachi Ltd サブシステム
US7155559B1 (en) 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
JP2004213746A (ja) * 2002-12-27 2004-07-29 Canon Inc 記録装置
US7634614B2 (en) 2003-01-13 2009-12-15 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves and that support virtual disk formatting
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7080200B2 (en) 2003-08-14 2006-07-18 Hitachi Global Storage Technologies Netherlands B.V. System and method for handling writes in HDD using 4K block sizes
JP4311288B2 (ja) * 2004-06-30 2009-08-12 パナソニック株式会社 記憶装置
US7240242B2 (en) * 2004-08-05 2007-07-03 International Business Machines Corporation Apparatus and method to convert data payloads from a first sector format to a second sector format
JP2006079380A (ja) * 2004-09-10 2006-03-23 Hitachi Ltd ディスクアレイ装置
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム

Also Published As

Publication number Publication date
US7574554B2 (en) 2009-08-11
EP1873649A1 (en) 2008-01-02
US20080022163A1 (en) 2008-01-24
JP2008009635A (ja) 2008-01-17

Similar Documents

Publication Publication Date Title
JP4842719B2 (ja) ストレージシステム及びそのデータ保護方法
JP5388976B2 (ja) 半導体記憶制御装置
JP5066199B2 (ja) 半導体記憶装置
US7984325B2 (en) Storage control device, data recovery device, and storage system
US7831764B2 (en) Storage system having plural flash memory drives and method for controlling data storage
JP5525605B2 (ja) フラッシュメモリモジュール
JP4901968B2 (ja) 半導体記憶装置
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
TWI483111B (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
US20050229033A1 (en) Disk array controller and information processing apparatus
US20130013980A1 (en) Data Management in Solid State Storage Devices
US20100205354A1 (en) Storage device using flash memory
US20130191705A1 (en) Semiconductor storage device
JP2009129070A (ja) フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
TW201339835A (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
TWI554886B (zh) 資料保護方法、記憶體控制電路單元及記憶體儲存裝置
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
US9424131B2 (en) Spatially decoupled redundancy schemes for a solid state drive (SSD)
US8607123B2 (en) Control circuit capable of identifying error data in flash memory and storage system and method thereof
JP2012058770A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN102043724B (zh) 用于闪存的区块管理方法、控制器与存储***
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US8732414B2 (en) Control device, controller module, and control method

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20081218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110704

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4842719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141014

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250