JP2015201204A - データ記憶装置におけるデータ保全性管理 - Google Patents
データ記憶装置におけるデータ保全性管理 Download PDFInfo
- Publication number
- JP2015201204A JP2015201204A JP2015076902A JP2015076902A JP2015201204A JP 2015201204 A JP2015201204 A JP 2015201204A JP 2015076902 A JP2015076902 A JP 2015076902A JP 2015076902 A JP2015076902 A JP 2015076902A JP 2015201204 A JP2015201204 A JP 2015201204A
- Authority
- JP
- Japan
- Prior art keywords
- verification code
- memory
- page
- user data
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2289—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by configuration test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】データ記憶装置におけるデータ保全性管理のための装置および方法を提供する。【解決手段】コントローラは、ホスト装置とメインメモリとの間でユーザデータブロックを転送する。各ユーザデータブロックは、関連付けられる論理アドレス(LBA)を有する。データ保全性マネージャ130は、各ユーザデータブロックに対する検証コード(VC)を生成し、ローカルメモリにおけるテーブル構造において記憶する。データ保全性マネージャ130は、検証コードを用いて、ホスト読出要求中に、選択されたユーザデータブロックの最新バージョンが、コントローラによって、メインメモリから取得されていることを独立して検証する。【選択図】図4
Description
発明の詳細な説明
概要
本開示のさまざまな実施例は、一般に、データ記憶装置におけるデータ保全性管理に向けられる。
概要
本開示のさまざまな実施例は、一般に、データ記憶装置におけるデータ保全性管理に向けられる。
いくつかの実施例では、コントローラはユーザデータのブロック(たとえばセクタ)をホスト装置とメインメモリとの間で転送する。各ユーザデータブロックは、関連付けられる論理アドレスを有する。独立したデータ保全性マネージャは、各ユーザデータブロック毎に検証コードを生成し、それをローカルメモリにおけるテーブル構造に記憶する。データ保全性マネージャはその検証コードを用いて、選択されたユーザデータブロックの最新バージョンがホスト読出要求中にメインメモリからコントローラによって取得されていることを独立して検証する。
さらなる実施例では、関連付けられる論理アドレスを有する入力されたユーザデータブロックが、メインメモリへの記憶のために受取られる。入力されたユーザデータブロックのユーザデータコンテンツおよびその関連付けられる論理アドレスに応答して、検証コードが生成される。検証コードはローカルメモリにおけるテーブル構造に記憶され、入力されたユーザデータブロックはメインメモリに記憶される。その後、入力されたユーザデータブロックのメインメモリからの取得を要求するホスト読出要求が受取られる。検証コードがローカルメモリにおけるテーブル構造から取得され、その取得された検証コードを用いて、選択されたユーザデータブロックの最新バージョンが、ホスト読出要求に応答してメインメモリからコントローラによって取得されていることを、独立して検証する。
本開示のさまざまな実施例を特徴付けるこれらおよび他の特徴は、以下の詳細な議論および添付の図面に鑑み理解され得る。
詳細な記載
本開示は、データ記憶装置に関し、特に、データ記憶装置において異なるデータのバージョンを管理する方法および装置に関する。
本開示は、データ記憶装置に関し、特に、データ記憶装置において異なるデータのバージョンを管理する方法および装置に関する。
データ記憶装置は、一般に、アドレス指定可能なデータのブロック(たとえばセクタ)をメモリに記憶するよう動作する。これらの装置は、データ管理システムを用いてブロックの物理的な位置を追跡して、それらのブロックが、その後、記憶されたデータに対する読出要求に応答して取得され得るようにし得る。
いくつかのタイプのデータ記憶装置は、所与の論理アドレス(たとえば論理ブロックアドレスLBA)を有するデータを、典型的には、ブロックが書込に対して呈示されるたびに、新たな利用可能な物理メモリ位置に書込むよう構成される。そのような装置は、ここでは、仮想メモリアドレスマッピングスキームを有するとして称される。これらの装置は、しばしば、電子的に「消去可能な」メモリを有し、ソリッドステートドライブ(SSD)を消去可能なソリッドステートメモリ(たとえばフラッシュ)とともに含み得る。仮想的にマッピングされた装置は、さらに、たとえばハイブリッドハードドライブのような何らかのハードディスクドライブ(HDD)を含み得、さらに、シングルの(部分的に重なる)トラックを有する回転可能な媒体を用いるような、さまざまな位置にデータをキャッシュするHDDを含み得る。
時間が経つにつれて、所与の論理ブロック(セクタ)のさまざまなバージョンがメモリに存在し続け、それらのバージョンのうちの1つが最新データであり、残りのバージョンは、より古い、古くなったデータであるといった状況が生じるかもしれない。メタデータを生成および維持して、ブロックの最新バージョンが記憶される位置を示すポインタを含む、記憶されたデータの位置およびステータスを追跡し得る。
そのようなメタデータに基づくリビジョン制御スキームは、一般的には、メモリの正確なステータスを維持するよう動作可能である一方で、記憶されたメタデータの損失または破損、メタデータにアクセスするのに用いられる回路系における障害、ファームウェアバグ、停電中におけるメタデータの不完全な更新などを含むさまざまな要因によって、しばしばエラーが生じ得る。いくつかの場合では、エラー状態によって、最新バージョンのデータではなく、より古いバージョンのデータがホストに返されるかもしれない。
他の形式のデータ記憶装置は、一般的には、より古いバージョンのデータを、同じ位置において、より新しい更新されたバージョンで上書きする。そのような装置は、ここでは、固定メモリアドレスマッピングスキームを有するとして称され、非シングルの(従来の)HDDのような「リライタブル」メモリを有する装置、ならびにスピントルク転送ランダムアクセスメモリ(STRAM)、抵抗変化型メモリ(RRAM(登録商標))、強磁性ランダムアクセスメモリ(FeRAM)、不揮発性スタティックランダムアクセスメモリ(SRAMまたはNvSRAM)、バッテリパックのダイナミックランダムアクセスメモリ(DRAM)およびSRAMなどのようなリライタブル不揮発性メモリを有するソリッドステードデバイスを含み得る。
これらおよび他のタイプの装置においては、所与の物理ブロックアドレス(PBA)が特定の論理ブロックアドレス(LBA)を割当てられてもよく、所与のブロック(LBA)の新たなバージョンが記憶装置に呈示されるたび毎に、その新たなバージョンが、そのとき存在する、より古いバージョン上に上書きされる。これは、通常は、一時点において、任意の特定のLBAの単一のバージョンのみがメモリに存在するという状況をもたらす結果となる。
それにも係わらず、このスキームは、時として、不適切なリビジョン取得エラーをもたらす結果ともなり得る。時に「ゴースト障害」と称されるエラー状態がそのような装置において生じ得るのは、書込動作が新たなバージョンのデータを意図された位置に書込まず、それによって、より古いバージョンのデータがそのままその位置に残るときである。データ保全性値(以下検証コードとも称される)を形成してデータ書込動作を検証し得る。この検証コードは、記憶されたデータと、LBA値のような他の識別情報との組合せに基づいてもよい。実際には新しいバージョンのデータが全く書込まれなかったときに、検証コードを用いて動作する読出検証動作のような検証動作が、書込動作の成功を信号送信するかもしれないことが理解され得る。
したがって、本開示のさまざまな実施例は、一般に、データ保全性を増大させるための装置および方法に向けられる。ここに開示されるデータ保全性スキームは、新しいバージョンのデータをメモリの異なる位置またはメモリの同じ位置に書込むメモリを含む、任意の数の異なるタイプのメモリにおける使用に対して好適である。ここに開示されるデータ保全性スキームは、メタデータエラーおよびゴースト障害などであるが、それらに限定はされないさまざまなエラー状態を検出し解決することを支援する。
さまざまな実施例は、一般に、データ要求に応答して最新バージョンのデータが返されることを確実にするよう動作する。いくつかの実施例では、メモリに記憶されるべきホストからの入力データの受取りに応答して、検証コードが生成される。この検証コードはテーブル構造に記憶され、要求されたメモリのリビジョンステータスを検証するために別途用いられる。
いくつかの場合では、検証コードは、いわゆるIOEDC(入力/出力エラー検出コード)値の形式を取り、それは、選択されたブロックにおけるデータを合計し、(排他的論理和(XOR)などを介して)その合計されたデータを、その選択されたブロックと関連付けられる論理アドレスと組合せることによって形成される。任意の数の他の形式の検証コードを用い得る。
さらなる例では、検証コードの第1の部分(最上位バイトMSBなど)がテーブル構造に記憶され、検証コードの第2の部分(最下位バイトLSBなど)がメモリに記憶される。代替的に、検証コードの完全なコピーがテーブルおよびメモリの両方に記憶される。さらに別の実施例では、検証コードのコピーがテーブルにのみ記憶され、メモリには記憶されない。
データ保全性マネージャはデータ保全性テーブルを階層構造として構成する。ユーザデータの論理ブロックに対する検証コードのグループがページに結合され、各ページは、そのページに割当てられる論理ブロック(たとえばLBA)に対する検証コード(またはその一部)を記憶する。各ページは、さらに、エラー検出および訂正(EDC)能力を伴う上位レベル検証コードを与えられる。
ページのグループはいわゆる「親」ページに蓄積され、各親ページは、個々のページに対するページレベルEDCコードを記憶する。各親ページも、上位レベル検証コードをEDCコードの形式で有してもよい。最後に、マスターページが親ページに対して生成されて、個々の親ページに対するEDCコードを記憶する。マスターページも、マスター検証コードを与えられる。
このようにして、さまざまなコードをデータ取得およびロード動作中に用いて、個々のLBAに対する個々の検証コードを検証し得る。データ読出および書込動作がその後システムの通常のコントローラ経路(たとえばメインコントローラファームウェア)によって実行され、データ保全性マネージャはデータフローの独立した監査役として動作し得る。
さまざまな開示される実施例のこれらおよび他の局面は、例示的なデータ記憶装置100を示す図1の検討から始めて、理解され得る。記憶装置100はコントローラ102およびメモリモジュール104を含む。
コントローラ102は、装置100がホスト装置(別途示されない)と対話してホストユーザデータを記憶および取得する際に、最上位レベルの制御および通信機能を提供する。データ記憶装置のコントローラは相対的に複雑であることが多く、何千または何百万もの論理ゲートを含み得ることが理解される。メモリモジュール104はホストデータの不揮発性記憶を提供する。入出力(I/O)通信回路、1つ以上のデータバッファ、階層的キャッシュ構造、読出/書込ドライバ、ローカルダイナミックランダムアクセスメモリ(DRAM)、オン・ザ・フライECC生成回路系などのような、ある数のさらなる回路が、記憶装置100に組込まれてもよいことが理解される。
コントローラ102は、装置100内のコンピュータメモリに記憶されるプログラミングと関連して動作するプログラマブルCPUプロセッサであってもよい。コントローラ102は代替的にハードウェアで実現されてもよく、またはコントローラ機能はメモリモジュール104に物理的に組込まれてもよい。
図2は、いくつかの実施例に従う別のデータ記憶装置110のための機能ブロック図である。装置110は、コントローラ112、バッファ114、フラッシュメモリモジュール116、およびディスクメモリ118を含む。先のように、他のモジュールが必要に応じて含まれ得る。
コントローラ112は、図1におけるように、装置110に対して最上位レベルの制御機能を実行する。バッファ114は揮発性または不揮発性であってもよく、データ転送(読出/書込)動作中におけるホストデータの一時的な記憶、およびコントローラ112によって用いられるプログラミングステップ(たとえばロードされたコントローラファームウェアなど)の記憶を提供する。
フラッシュメモリモジュール116は、ユーザデータ、ファームウェア、およびシステムパラメータ(たとえばメタデータなど)の記憶のための消去可能な不揮発性フラッシュメモリセルを提供する。フラッシュメモリセルは、NOR構成(NORフラッシュ)、NAND構成(NANDフラッシュ)、またはそれらの両方において構成され得る。ディスクメモリ118は、読出/書込トランスデューサの対応のアレイによってアクセスされる1つ以上の回転可能な磁気記録媒体を含む。
装置110はハイブリッドドライブとして特徴付けられ、したがって、より優先順位の高いユーザデータブロックは相対的に高速のアクセスフラッシュメモリモジュール116に記憶され、優先順位がより低いユーザデータブロックは相対的に低速のアクセスディスクメモリ118に記憶され得る。
「標準的な」HDDは、フラッシュメモリモジュール116を除き、図2によって述べられる構成と同様の構成を有し得、SDDは、ディスクメモリ118を省略することによって図2によって述べられるような同様の構成を有し得ることが理解される。他のメモリ構成は単独で、またはフラッシュメモリモジュール116およびディスクメモリモジュール118のいずれかまたは両方と関連して用いられるリライタブルメモリモジュール(たとえばSTRAM、RRAM、PCM、FeRAM、これらの混合物、および/または他のタイプのソリッドステートメモリなど)を含み得る。図1〜図2は、したがって、本開示に従って管理され得る幅広いさまざまな異なるタイプのメモリを示す。
これらおよび他の形式の装置においては、同じ論理ブロックアドレス(LBA)を有するブロック(たとえばセクタ)の複数バージョン(リビジョンレベル)が異なる物理メモリ位置に記憶され得る。たとえば、図2における装置110の動作中における異なるときにおいて、同じユーザデータブロックの異なるバージョンが、バッファ114、フラッシュメモリモジュール116および/またはディスクメモリ118に記憶されるかもしれない。同様に、同じブロックの複数バージョンが、同じメモリ装置内における異なる位置に記憶され得る(たとえばフラッシュメモリモジュール116における複数バージョンなど)。
図3は、図2におけるフラッシュメモリモジュール116とおおむね同様のフラッシュメモリモジュール120の一部の論理表現を示す。モジュール120は、さまざまな制御線(別途図示されず)によってアクセス可能なNAND構成において構成されるフラッシュメモリセルを利用する。これらのメモリセルは、ある数の消去ブロック122に配置される。ブロック122は1回に消去され得るメモリセルの最小増分を表現する。ある複数のブロック122が、1つの単位として消去および割当てられる、より大きなマルチブロックガベージコレクションユニット(GCU、それらの1つが124として表現されている)に配置される。
各ブロック122は、ある選択された数の行のメモリセルを有する。データはそれらの行にページの形式で記憶される。ある例示的な消去ブロックサイズは128行のオーダであってもよく、各行は8192バイトを記憶する。他のサイズおよび構成の消去ブロック122も用いられ得る。
読出、書込および消去(R/W/E)動作がメモリ120上においてR/W/E回路126によって実行され、回路126は装置コントローラ127と通信する。メタデータが、読出/書込/消去動作中における使用のために近接する揮発性メモリ(たとえばDRAM)128におけるメタデータテーブル128にシーケンシャルにロードされて、データのステータスおよび位置を追跡してもよい。図3における例示的なフラッシュメモリセルは新たなデータがそこに書込まれ得る前に消去される必要があるので、126のようなR/W/E回路は、共通のLBA値を共有するブロックの更新されたバージョンをメモリ120内における異なる位置に書込むことが一般的である。ホストが、ある選択されたブロックの新たな連続するバージョンを書込むよう書込コマンドを与えるたび毎に、装置はデータをメモリ120内における次の利用可能なページに書込む。
最も最近記憶されたブロックのバージョンは「現行」データを表現し、すべての以前に記憶されたバージョンは、より古い「古くなった」データを構成する。メタデータは、正方向ポインタを利用して、(通常、)システムが、ある特定のLBAに対する読出要求に応答して、現行バージョンのデータを見つけ出すことを可能にする。これは、図3において、論理アドレスLBA Xを有する選択されたブロックに対して示されており、その5つの異なるバージョンがメモリ120に記憶されている。
バージョン5(v5)は、LBA Xに対するブロックデータの、現行の、最も最近記憶されたバージョンを表現し、メタデータは、理想的には、この位置を指す。つまり、通常の条件下では、LBA Xに対する読出要求に応答して、v5データがホストに返されることになる。残りのバージョンv1〜v4は、LBA Xに対する、より古い、古くなったデータを表現し、そのブロックに対する読出動作中においては無視されることになる。異なるバージョンのLBA Xが異なるデータセットを記憶してもよく、各後に生ずるバージョンは、ホストアプリケーションなどによって、各先の連続するバージョンと比較して、修正されていることが理解される。これは、しかしながら、必ずしも必要ではなく、なぜならば、メモリにおける所与のブロックの異なるバージョンが同じユーザデータを記憶してもよいからである。
ガベージコレクション動作は、装置120によって定期的に実行されて、古くなったデータを記憶するGCU124を解放する。ガベージコレクション動作は、バックグラウンドで生じ、適切なとき、たとえばホストI/O活動度が低い休止期間中、または記憶に対して利用可能な空いているページの量が選択されたしきい値よりも下に下がったときなどに予定されてもよい。選択されたGCU124のデータのほとんどまたはすべてが古くなっていると判断される場合には、ガベージコレクションプロセスは、現行データを新たなGCUに移動させ、選択されたGCUを消去し、メタデータを更新し、消去されたGCUを利用可能なブロックの割当プールに戻すことになる。ブロックにおける現行データは、消去動作前に、新たに割当てられたブロックにコピーされることになる。複数のGCUがともにグループ化され、並行して、所望のように消去動作を受けてもよい。
進行中のガベージコレクション動作が、より古い、古くなった所与のブロックのバージョンを除去する傾向があることになる一方で、少なくとも一部のブロックのいくつかのバージョンが、任意の所与の時間においてメモリ120に持続するかもしれないことが考えられ得る。これは、特に、ある所与の時間間隔にわたって書込および/または読出アクセス動作を相対的により多い回数受ける相対的に高優先度のデータ(「ホット」データ)を伴う場合に生じそうである。
上に注記されたように、問題がこのように起こり得るのは、図3のメモリ120または図1〜図2において論じられた他の例示的メモリのいずれかが所与のブロックの複数バージョンを記憶し、メタデータ(または他のデータ管理スキーム)がそのブロックの最新バージョンを正確に指さないときである。たとえば、再び図3を参照して、メタデータテーブルは、LBA Xに対する最新のメタデータ入力を、最新バージョン5(v5)ではなく、バージョン4(v4)に対応するそれであるとして認識するかもしれない。そのような場合においては、R/W/E回路126は、最新v5データではなく、より古いv4データを誤ってホストに返すかもしれない。これらおよび他のタイプのデータ保全性エラーの発生を低減するため、本開示のさまざまな実施例は、図4に概略的に示されるように、データ保全性マネージャ130の使用を組込む。データ保全性マネージャ130は、ハードウェアまたはソフトウェア(たとえばファームウェア)において実現され得、一般的に、以下に説明されるように動作して、データ転送動作中においてリビジョン検証を提供する。一部の実施例では、マネージャ130は、装置コントローラによって用いられるプログラミングの一部を形成するが、(ここではメインコントローラファームウェア132と称される)コントローラコードの残りからは別のモジュールであり、それとは独立して動作する。
メモリに書込まれるべき選択されたブロックに対するデータは、関連付けられる論理アドレス(たとえばLBA)とともに、データ保全性マネージャ130に供給される。マネージャ130は、メインコントローラファームウェア132による処理のための検証コード(VC)を生成する。マネージャ130は、さらに、検証コードを、別のメモリ134におけるテーブル構造に転送する。
いくつかの場合では、検証コードは、IOEDC(入力/出力エラー検出コード)の形式を取り得る。IOEDCは図5に示されるように生成され得る。ある特定のLBA値を有するブロックデータ140が記憶のためにホスト装置から与えられる。ブロックデータ140は一時的にローカルキャッシュに記憶される。データは、512バイト、4096バイトなどのような、ある選択された数のバイトを構成してもよい。
巡回冗長符号(CRC)値142のようなデータエラー検出コードが、入力されたブロックデータの個々の8ビットバイトをともに畳込むことによって生成され得る。CRC142は、排他的論理和(XOR)のような好適な組合せ論理関数を用いて、畳込まれたLBA値144とともに組合せられて、IOEDC値を生成する。いくつかの実施例では、LBA値144は、ブロックに対する論理ブロックアドレス番号のハッシュであり、ハッシュアルゴリズムを、IOEDC値と同じ(ビットにおける)幅とともに用いる。代替的に、入力されたブロックデータ140は、論理ブロックアドレスまたはLBA値144とともに直接CRCされて、IOEDC値を生成してもよい。他のタイプのコード値も用いられ得ることが理解される。
IOEDCは、セクタの論理アドレスをデータとともに畳込んで、そのデータに対するあるレベルのエラー検出および訂正を提供する、LBAがシードされたエラー検出コードである。図5におけるIOEDC値144は長さが2バイト(16ビット)となることが考えられるが、他のサイズも用いられ得る。
再び図3を参照して、LBA Xの5つのバージョンの各々に対するIOEDC値は、関連付けられるブロックデータ間における差と関係して異なることになるが、各IOEDC値におけるLBA成分は同じであることになることに注目されたい。したがって、LBAがシードされた値をこれらのIOEDC符号語の各々から抽出することは、すべて、同じLBA値を生じさせることとなり、それは、正しいLBA値が識別されたと判断する際に有用である。これは、しかしながら、正しいバージョンのデータが取得されたかどうかを確認することを助けはしない。
したがって、図6は、選択されたブロックをメモリに書込むデータ書込動作の文脈において図4のデータ保全性マネージャ130の動作を示すよう、別の記憶装置150の関連部分を示す。データ保全性マネージャの検証コード生成部152は検証コード(VC)を生成するが、それは、本議論の目的のため、図5にあるようにIOEDC値を構成することになる。先に注記されたように、これは単なる例示であり、限定的ではなく、なぜならば、任意の数の異なる形式の検証コードが所望のように生成および用いられ得るからである。
IOEDC値は、データ保全性テーブル154に記憶され、および(図4のメインコントローラファームウェア132の制御の下)データ経路処理モジュール156に転送され、それは、入力されたデータを処理し、究極的にはその入力されたデータをメモリ158に記憶する。いくつかの場合では、IOEDCはさらにメモリ158にも記憶されてもよい。メタデータ生成部160は、記憶されたデータの位置およびステータスを記述するようメタデータを生成する。
図7は、記憶されたデータを要求側ホスト装置に戻す、後の読出動作中における図6の記憶装置150のさらなる特徴を示す。データ要求がメタデータルックアップブロック162に与えられ、メタデータルックアップブロック162は、最新バージョンのデータが記憶される物理アドレス(たとえば物理ブロックアドレスPBA)を(名目上)識別する。データが、その識別された位置から取得され、メモリ検証コード(VC)処理ブロック164に転送され、ブロック164は、その取得されたデータに基づいて検証コード(「計算されたVC」)を生成する。計算されたVCは、最初のVCを生成するよう用いられるのと同じアルゴリズムを用いて生成される(たとえば図5参照)。ブロック164は、メインコントローラファームウェアの制御下にあり、データ経路処理ブロック156(図6)の一部を構成してもよいことが考えられる。
データ要求は、さらに、データ保全性マネージャにも転送され、データ保全性マネージャは、関連付けられるLBAについて、データ保全性テーブル154から最初の検証コード(「テーブルVC」)を取得する。比較モジュール166が、計算されたVCをテーブルVCと比較し、いくつかの場合においては、さらに、メモリに記憶された検証コード(「取得されたMEM VC」)を比較する。コードが一致する場合には、要求されたデータの転送が許可される。
このようにして、データ保全性マネージャ(130、図4)は、通常の装置データ経路処理システムの独立した監査役として動作する。これは、データの妥当性を確認するよう別途動作する2つの独立したハードウェア/ファームウェアを与える。この独立性は、システムのうちの一方の部分における管理ミスが他方の部分によって検出されることを確実にする。データ保全性マネージャは、ホストロジックと緊密に結合されることになり、利用可能なDRAMメモリのうちの専用の部分(たとえば図2のバッファ114)に対するアクセスを有することになることが考えられる。
IOEDC値が例として開示されているが、任意の好適なアルゴリズムを用いて検証コードを生成し得る。図8は、選択されたアルゴリズム(暗号)を用いて、入力されたデータ(「平文」)を出力データ(「暗号文」)に変換する一般的な暗号ブロック168を示す。ユーザデータは暗号ブロック168を通過させられ得、その出力の一部がIOEDCとして用いられ得る。入力されるキー値、たとえばLBAが、変換プロセスの一部として用いられ得る。任意の数の好適な暗号が用いられ得る。
上記のものと同様の他のシステムが、図9において170で示される。システム170は、選択されたブロックに対する入力データおよび関連付けられるLBA値に応答して2バイトIOEDC値を生成するIOEDC生成部ブロック172を含む。システム170においては、生成されたIOEDC値の、最上位バイト(MSB)174(たとえば最初の8ビット)のような第1の部分は、データ保全性テーブル154に記憶される。生成されたIOEDC値の、最下位バイト(LSB)176(たとえば最後の8ビット)のような第2の部分は、メモリ158に記憶される。この例では、IOEDCの全体がデータ経路処理ブロック(156、図6)に供給されてもよいが、ほんの一部のみが実際にはメモリ158に記憶される。しかしながら、他の実施例では、IOEDC(または他の生成された検証コード)の如何なる部分もメモリには記憶されない。
図10は、前述の議論のまとめを与えるデータ処理ルーチン200のフローチャートを示す。本議論の目的のため、ルーチン200は、図6〜図7によって述べられるような書込および読出動作中において、図5において生成されるようなIOEDC値を用いることが考えられる。ルーチン200は単なる例示であり、さまざまなステップが、異なる順序で修正、追加、実行などされ得ることが理解される。
メモリに記憶されるべき入力されたデータは、まず、ステップ200において受取られる。入力されたデータは、関連付けられる論理アドレス(たとえばLBA)を各々が有する1つ以上のブロックとして構成される。各ブロック毎に、ブロックデータおよびLBA値を用いて、入力された書込データに対して第1の検証コード(テーブルVC)を生成する(ステップ204)。第1の検証コードは(テーブル154のような)テーブル構造に記憶される(ステップ206)。第1の検証コードまたはその一部は、さらに、好適な処理の適用を受けた後に、入力された書込データとともにメモリ(たとえばメモリ158)に記憶されてもよい(ステップ208)。
その後、ステップ210において、先に記憶されたデータを取得するよう、要求側ホスト装置から読出要求が受取られる。ステップ212で、メタデータルックアップ動作(ブロック162、図7)によって、最新バージョンのデータがどこに記憶されるかの、システムによって示されるとおりの物理的位置が識別される。識別された位置(物理ブロックアドレス)におけるデータがステップ214において取得される。
第2の検証コードが、ステップ216において、取得されたデータを用いて、上に記載されるようにブロック164(図7)によって生成される(計算されたVC)。第1の検証コードがステップ218においてテーブルから取得され(テーブルVC)、所望のように、記憶された検証コードがステップ220においてメモリから取得される(取得されたMEM VC)。
比較動作が判断ステップ222によって示されるように実行される。コードが一致する場合には、データ転送動作がステップ224において示されるように許可される。コードのうちの1つ以上が一致しない場合には、エラーステータスがホストに返される(ステップ226)。代替的に、または加えて、コード不一致の結果において、読出動作を繰返す、新たなメタデータ検索を行なう、検証コードのうちの1つ以上を再計算するなどを含む、さらなる訂正ステップが取られてもよい。
図11〜図18は、いくつかの実施例に従って上において論じられたデータ保全性スキームの特定の実現例のための詳細を示す。ここに論じられるデータ構造およびルーチンは、さまざまな環境および検証コードフォーマットに対して容易に適合され得ることが理解される。
図11は、例示的なデータ保全性テーブル構造230を概論的に示す。テーブル構造230は、図9において上で論じたような16ビットIOEDC値のMSBのような、システムにおける各LBAに対する単一バイト(8ビット)検証コードを記憶する。
連続する4,096個のLBAのグループのような、連続するLBAのグループがページ232に構成される。このようにして、1番目のページ(ページ0)は、LBA 0〜LBA 4095に対する検証コードを記憶し、2番目のページ(ページ1)は、LBA 4096〜LBA 8191に対する検証コードを記憶する、などとなる。参考のため、LBA 0に対する8ビット検証コードはVC0として識別され、LBA 1に対する8ビット検証コードはVC1として識別される、などとなる。各検証コードは単一バイト(8ビット)であるため、ページ全体のコンテンツのサイズは4096バイトとなる。
ページレベル検証コードを生成して、各ページのコンテンツを保護する。1番目のページ(ページ0)に対する検証コードはVCP0として示される。CRCのような任意の好適なエラー検出コードアルゴリズムを用いてページレベル検証コードを生成し得る。いくつかの場合においては、ページレベル検証コードはリードソロモン符号の形式を取り、コードは、ページコンテンツにおいて、選択された数までのエラーを検出および訂正し得る。他の形式も用いられ得る。一実施例においては、ページレベル検証コードは32ビット(4バイト)値である。
ページ(ページレベル検証コードを含む)は、利用可能なフラッシュメモリのような好適な不揮発性メモリに記憶され、必要に応じてローカルの揮発性RAMに取得される。以下に説明されるように、ページがロードされるたびに、EDC検証が自動的に実行され得る。
図11は、さらに、ある数の親ページ234を示す。各親ページは、関連付けられるページのグループに対して、ページレベル検証コードを蓄積する。図11の例示的フォーマットでは、各親ページは、1,024の連続するページに対するページレベル検証コードを記憶する。各親ページ234の全体的なサイズ(親ページを記憶するのに必要とされるデータ容量に関して)は、(図11にあるように)各ページ232の全体的なサイズに名目上等しいように設定され得るか、または何らかの他の好適なサイズであり得る。
親ページレベル検証コードが各親ページに対して生成される。参考のため、第1番目の親ページ(親ページ0)に対する親ページレベル検証コードはVCPP0として示される。先のように、任意の好適なアルゴリズムを用いて、CRCまたはリードソロモン符号を含むがそれらに限定されない親ページレベル検証コードを生成し得る。先のように、親ページレベル検証コードは、いくつかまでの検出されたビットエラーの検出および訂正を可能にするよう適合されてもよい。一実施例では、親ページレベル検証コードも32ビット(4バイト)ワードである。
マスターページが236にて表わされる。マスターページ236は、親ページの各々毎に、親ページレベル検証コードを記憶する。マスターページ236は、さらに、全体的なマスターEDC値(VCMaster)で完結する。先のように、VCMasterはEDCであり、CRCまたはリードソロモン符号または何らかの他の形式を取ってもよい。一実施例では、マスターEDC値も32ビット(4バイト)ワードである。
それぞれのデータ構造の各々が不揮発性メモリに記憶され、必要に応じて揮発性RAMにロードされる。それぞれの階層のEDC値によってデータ保全性が保証される。一例を挙げるため、ある選択されたページ、この例においてはページ0にアクセスすることは、マスターページ236を取得することを伴ってもよい。マスターページ236のコンテンツは、VCMasterコードを用いて検証される。これは、親ページ0に対する検証コードであるVCPP0を含む、親ページレベル検証コードのすべての妥当性を確認することになる。
選択されたページに対する親ページ(親ページ0)が次いで取得され、VCPP0を用いて検証される。この検証は、マスターページ236からの取得された値を、親ページからの取得された値と比較することを含み得る。新たな親ページレベル検証コードが、さらに、その取得されたデータに基づいて計算され、当該親ページおよびマスターページのいずれかまたは両方における記憶された値と比較され得る。
親ページ(親ページ0)の検証は、選択されたページ(ページ0)に対するページレベル検証コード(VCP0)の妥当性を確認する。次いで、ページ232が取得され得、親ページからの妥当性を確認されたコードが、その取得されたページに対する取得された(および/または計算された)コードと比較され得る。
最後に、ある所与のブロックに対するLBAが識別され得(たとえばLBA 0)、関連付けられる検証コード(たとえばVC0)がテーブル構造から取得され、上記のように用いられて、データブロックの最新バージョンがホストに返されていることを検証し得る(たとえば図10を参照のこと)。
まとめると、最下位レベル(ページ232)は、各々、4096バイトを含み、各エントリは、LBA毎にIOEDCデータの単一バイト(8ビット)を構成する。ページレベル検証コードは4バイト(32ビット)EDC値であり得、それらは親ページ234に記憶される。個々のページ232とマスターページ236との間には僅かに1つの中間レベルのみが示されるが、任意の数のさらなるレベルが必要に応じて挿入され得る。
各親ページ234からの各4バイトEDCは、マスターページ236に記憶され、4バイトEDC(VCMaster)によって保護される。マスターページは、(NORフラッシュなどのような)メインの大容量記憶メモリとは別の不揮発性メモリにおけるような電源喪失を通して常に維持されることが考えられる。
所与のデータ保全性テーブルの実際のサイズは、記憶装置のブロックサイズおよび全体的なデータ容量を含むさまざまな要因に依存することになることが理解される。テーブル全体を、利用可能な揮発性DRAMにロードし得、マスターページが、利用可能な揮発性SRAMまたはレジスタにフィットするよう十分小さくあることになることが考えられる。表1は、異なる動作環境下における図11のさまざまな要素に対する例示的サイズを示す。
他の装置データ容量およびブロックサイズは、対応の値を与えることになる。表1に示されるメモリサイズは2の累乗であり、したがって、B=バイト(8ビット)、KB=1024B、MB=1048576B、などである。ドライブ容量は、装置の定格の全体的なデータ記憶能力を指し、オーバープロビジョン、予備ブロックなどを考慮しない。ブロックサイズは、一般的には、ホストの視点からの個々のブロック(セクタ)のサイズ(たとえば、オーバーヘッド処理ビット、ECCビットなどを含まない、各LBAに関連付けられるユーザデータビットの数)である。すべてのVCは、テーブル構造からの検証コードのすべてを記憶するのに必要とされる全記憶容量を指す。親ページは、親ページ(図11の234)のすべてを記憶するのに必要とされる、全体の必要とされる記憶容量である。マスターページは、マスターページ(図11の236)を記憶するのに必要とされる、全体の必要とされる記憶容量である。
データ保全性データ構造の全体的なサイズは、SSD、HDD、ハイブリッドドライブなどを含むさまざまな異なるタイプの記憶装置に対して合理的に管理可能であることがわかる。
通常の条件下では、少なくともマスターページおよび親ページの各々が、初期設定中にローカルRAMにロードされ、必要に応じて検証され、システム電源供給動作中にRAMにおいて維持され得ることが考えられる。マスターページに対する更新は実行記録され得、1つのリビジョンから次のリビジョンへの変更は、追跡され不揮発性メモリに記憶される。しかしながら、マスターページに対する相対的に小さなサイズのため、更新されたページ全体がシステム電力の喪失で不揮発性メモリに書込まれ得ることが考えられる。ページのダーティビットのテーブルが維持され得、ダーティなデータ保全性ページが、電力喪失で不揮発性メモリに掻き集められるか、または電力回復で再建され得る。
ブロックサイズおよび記憶装置容量に依存して、最下位ページ(図11のVCページ232)は、すべて、装置動作中に揮発性RAMに維持され得るか、または必要に応じてRAMにロードされ得る。テーブル構造は、検出されたエラーに応答して再建され得る。データ保全性テーブル構造に関連付けられる、再発するデータ保全性エラーは、装置との初期障害信頼性問題を示し得、再建または置換に対するホスト通知をもたらす結果となる。
データ保全性マネージャは、通常のコントローラファームウェア(システムコントローラ)と通信する別途のコントローラとして動作し得る。ページの、ローカルDRAMメモリへの、またはそれからの移動は、システムコントローラに対して発行されるコマンドを介して実行され得る。データ保全性マネージャは、ページの目標DRAMアドレス、ページ番号、および動作が書込であるかまたは読出であるか、を通信するよう構成され得る。システムコントローラは、要求されたページを記憶またはフェッチし、データ保全性マネージャに戻って通信する。ページをフェッチする際に生ずる媒体エラーは、データ保全性エラーではないが、ページ再建動作を必要とする。特定のページが成功裏に再建され得ない場合には、障害を起こしたページによってカバーされるすべてのデータが回復不能状態にされる。
図12〜図18は、図11における230のようなテーブル構造を用いるデータ保全性マネージャによって実行されるルーチンに関するさまざまな詳細なフローチャートを示す。図12は、新たな入来読出コマンドの処理に関連付けられるルーチン300に関するフローチャートである。ルーチン300は概して、上に記載される比較動作に備えて1つ以上の関連付けられるLBA(この場合ではLBA X)に関してデータ保全性テーブルからページデータをフェッチおよび検証するよう動作する。
ルーチンはステップ302で開始し、データ保全性マネージャ(以下「DIM」)は、LBA Xに対するIOEDC値に対する要求を処理する。判断ステップ304は、Xが有効なLBA番号であるかどうかを判断する。そうである場合には、判断ステップ306は、ブロック(LBA X)がDIMによる処理のためにキャッシュメモリにロードされたかどうかを判断する。判断ステップ308は、LBA Xに対するIOEDC値が既にローカルメモリに存在するかどうかを判断し、存在しない場合には、ページがステップ310で取得される。その後、ステップ312においてIOEDCバイトが取得され、キャッシュに記憶され、プロセスはステップ314で完結する。
図13は、TIM(「ホストブロック」とも称される)がTIMキャッシュにおけるデータにアクセスする際に実行されるステップを示す。ステップ322で、ホストブロックはDIMキャッシュからLBA Xに対するIOEDCバイトを要求する。判断ステップ324で、LBA Xに対するIOEDCバイトがDIMキャッシュにロードされるかどうかを判断する。そうである場合には、IOEDCバイトがステップ326にて返される。フェッチ要求がステップ328において次のLBA(たとえばLBA X+1)に対して発行され、これは図12のルーチン300に従って処理され、ルーチンはステップ330で終了する。しかしながら、LBA Xに対するIOEDCがDIMキャッシュにロードされない場合には、ルーチンは判断ステップ324からステップ330に通過し、そこでエラー割込がアサートされる。
図14は、書込動作中に実行されるステップを示すルーチン340を示す。メインメモリに書込まれるべき書込データがステップ342において受取られる。IOEDC、LBA番号、および所望のように、さらなるタグ値がステップ344で受取られ、これらの要素は、ステップ346において、メモリへの書込まで、待ち状態書込待ち行列に付加される。プロセスは、次いで、ステップ348にて完結する。
図15は、複数のLBAに適用可能な「同じ書込」動作(たとえばある数のシーケンシャルなLBAに同じユーザデータを反復して書込む動作)中におけるステップに対するルーチン350を示す。部分的なIOEDC(ユーザデータ上のEDC、たとえば図5の142)、LBA番号、LBA数、およびタグデータがステップ352にて受取られる。IOEDCバイトがその計数されたLBAに対して生成され、生成されたIOEDCバイトはステップ354にて書込待ち行列に追加され、その後、プロセスはステップ356にて終了する。
図16は、書込(プログラム)動作が完了し(たとえば入力された書込データがメモリに書込まれ)書込完了ステータスがホストシステムに転送されるステップを示す別のルーチン360を示す。ホストシステムは、ステップ362にて(たとえば図14の344で生成されるような)タグXについてのステータスを送る。判断ステップ364は、書込動作が成功したかどうかを判断する。そうである場合には、IOEDCバイトは、ステップ366にて、タグと関連付けられる待ち状態の書込待ち行列におけるすべてのエントリに対して更新され、プロセスはステップ368にて終了する。そうではなく、書込が成功しなかった場合には、すべてのタグXエントリは、ステップ370にて、待ち状態の書込待ち行列から消される。
図17は、データ保全性テーブルからの、選択されたLBA(LBA X)に対する関連付けられるIOEDCページの取得を示すルーチン380である。IOEDCページに対する要求がステップ382にてDIMに転送される。判断ステップ384は、関連付けられるページがローカルのRAMメモリにあるかどうかを判断する。ない場合には、ページがステップ386にて要求される。判断ステップ388は、LBA Xに対する親ページがRAMにロードされるかどうかを判断する。ロードされない場合には、親ページの転送に対する要求がステップ390にて実行される。
判断ステップ392は、マスターページを用いる親ページデータのデータ検証検査を与える。不一致が生ずる場合には、データ保全性エラー状態が宣言され(ステップ394)、適切な訂正アクションが取られる。
一旦親ページがRAMに成功裏にロードされると、判断ステップ396が、さらに、親ページを用いて、最下位レベルページデータのデータ検証検査を実行する。不一致が生ずる場合には、エラー状態が宣言され(ステップ398)、ページデータの再建を含む、適切な訂正アクションが取られる。一方、最下位レベルページデータが検証された場合には、LBA Xに対するIOEDC値が検証され、リビジョンレベル認証における使用に対して利用可能となり、ルーチンはステップ399にて終了する。
図18は、LBA Xに対する所与のIOEDCバイト(値)を更新するための要求に対するルーチン400である。そのようなリビジョンは、たとえば、ブロックデータの最も新しいバージョンがメインメモリに書込まれるデータ書込動作の結果として生じてもよい。
このルーチンは、現行の最下位レベルページをテーブルからRAMに取得するステップと、所望されるように、コンテンツを検証するステップとを含む(ステップ402)。次に、ステップ404にて、LBA Xに対するIOEDCバイトがその最下位レベルページにおいて更新され、その最下位レベルページに対するEDC(ページレベル検証コード)が再計算され記憶される。
ステップ406にて、その新たなページレベル検証コードは対応する親ページに書込まれ、新たな親ページレベル検証コードが生成され、さらに、親ページに記憶される。同様に、ステップ408にて、その新たな親ページレベル検証コードはマスターページに書込まれ、ステップ410にて、マスターページに対する新たなマスターEDC値が生成され記憶される。ステップ412にて、最下位レベルページ、親ページ、およびマスターページの、より古いバージョンは、その後は、「ダーティ」(古くなった、またはより古いリビジョンデータ)として記され、適切に破棄される。
最後に、データ記憶装置の有効寿命の開始における初期化において、ホスト装置によって与えられるユーザデータブロックの数は相対的に制限されるかもしれないことが注記される。この状態では、メインメモリ(たとえばフラッシュメモリモジュール116、120、ディスクメモリ118など)およびローカルメモリにおけるテーブル構造(たとえばデータ保全性テーブル154など)の両方は、それぞれ、ユーザデータブロックおよび対応の検証コードを疎に事前設定されるかもしれない。
いくつかの場合においては、ダミーデータを用いて、さまざまな最下位レベルページ232、親ページ234およびマスターページ236に対する初期検証コードを生成してもよい。乱数または擬似乱数生成部を用いてそのようなダミーデータを生成し得るか、または「初期テーブル値」のマスターセットをロードしてもよい。代替的に、記憶されたデータの妥当性を記憶するビットが検証コードテーブルに保持されてもよい。記憶装置の認定中に用いられる製造処理を用いて、メインメモリにおいて個々の物理位置に書込まれるさまざまな「パターン」を反映する、初期に事前設定されたテーブル構造を、ローカルメモリにおいて生成し得る。
データ保全性テーブルデータ構造が初期に事前設定される態様に係わらず、新たなユーザデータがメインメモリに転送されるなか、有効なユーザデータブロック検証コードおよび対応のページ/マスターレベル検証コードは必要に応じてリアルタイムで生成および更新されることになることが考えられる。記憶装置の電源がオフにされるたび毎に、バックアップ電力(スタンバイバッテリ、キャパシタ、回転するディスクからのエネルギなど)を含む十分な資源が与えられて、テーブル構造全体またはその最も重要な部分(たとえばマスターページおよび親ページ)が(メインメモリを含む)不揮発性メモリに安全に書込まれ、装置再初期化で十分かつ成功する回復を可能にすることを確実にすることになる。
さまざまな動作環境が前述の実施例に従って述べられたが、開示される主題は、携帯装置、ネットワーク接続される通信および伝送システム、大容量記憶システム、RAID(独立ディスクの冗長アレイ)に基づくシステム、クラウドコンピューティング環境、分散型オブジェクト記憶システムなどを含む、実質的に任意の形態のメモリおよび任意の形態の動作環境に適合され得ることが理解される。
本開示のさまざまな実施例の多数の特性および利点が前述の記載にて述べられたが、本記載は例示的なものに過ぎず、変更が、詳細に、特に、本開示の原理内における構造および構成の事項において、特許請求の範囲が表現される文言の幅広い一般的な意味によって示される十分な程度にまでなされてもよいことが理解される。
102 コントローラ、104 メモリ、130 データ保全性マネージャ、230 テーブル構造、LBA 論理アドレス、VC 検証コード
Claims (20)
- ホスト装置とメモリとの間でユーザデータのブロックを転送するコントローラを含み、ユーザデータの各ブロックは、関連付けられる論理アドレスを有し、さらに、
ユーザデータの各ブロック毎に検証コードを生成し、ローカルメモリにおけるテーブル構造に記憶し、前記検証コードを用いて、ホスト読出要求中に、選択されたユーザデータのブロックの最新バージョンが前記メモリから前記コントローラによって正確に取得されたことを独立して検証するデータ保全性マネージャを含む、装置。 - ユーザデータの各ブロックに対する前記検証コードは、前記ブロックのユーザデータコンテンツおよび前記ブロックの前記関連付けられる論理アドレスに応答して生成される、請求項1に記載の装置。
- ユーザデータの各ブロックに対する前記検証コードは、重複しない第1および第2の部分を含み、前記検証コードの前記第1の部分のみが前記ローカルメモリにおける前記テーブル構造に記憶され、前記検証コードの前記第2の部分のみがメインメモリに記憶される、請求項2に記載の装置。
- 前記第1および第2の部分のうちの選択された一方は、前記検証コードの最上位バイト(MSB)を含み、前記第1および第2の部分の残りの一方は、前記検証コードの最下位バイト(LSB)を含む、請求項3に記載の装置。
- 前記メモリは、仮想的にマッピングされたメモリとして特徴付けられるメインメモリであり、共通の論理アドレスを有する、ユーザデータブロックの各連続して受取られるバージョンは、前記メモリ内において、新たな、異なる物理位置に書込まれる、請求項1に記載の装置。
- 前記メインメモリは、フラッシュメモリ、または部分的に重なるデータトラックを用いる回転可能な磁気記録媒体、のうちの少なくとも選択された一方である、請求項5に記載の装置。
- 前記メモリはリライタブルメモリとして特徴付けられるメインメモリであり、共通の論理アドレスを有する、ユーザデータブロックの各連続して受取られるバージョンは、名目上は、前記メモリ内における同じ物理位置に書込まれる、請求項1に記載の装置。
- 前記メモリは、重ならないトラックを有する回転可能な磁気記録媒体、スピントルク転送ランダムアクセスメモリ(STRAM)、抵抗変化型メモリ(RRAM)、強磁性ランダムアクセスメモリ(FeRAM)のうちの少なくとも選択された1つである、請求項7に記載の装置。
- 前記メモリは、N個の対応する論理的ブロックアドレス(LBA)を有するN個のユーザデータブロックに対応するよう全体的なデータ記憶容量を有するメインメモリであり、Nは複数であり、前記ローカルメモリにおける前記テーブル構造は、前記データ保全性マネージャによって複数M個の最下位レベルページに構成され、前記M個の最下位レベルページの各々は、N個のLBAの異なるシーケンシャルなサブセットに対する対応する検証コードを記憶し、ページレベル検証コードが前記データ保全性マネージャによって生成されて、各ページに記憶される前記検証コードに対するエラー検出および訂正(EDC)能力を与える、請求項1に記載の装置。
- 前記ローカルメモリにおける前記テーブル構造は、さらに、前記データ保全性マネージャによって複数P個の親ページに構成され、前記P個の親ページの各々は、前記M個の最下位レベルページの異なるシーケンシャルなサブセットに対するページレベル検証コードを記憶し、親ページレベル検証コードが前記データ保全性マネージャによって生成されて、各親ページに記憶される前記ページレベル検証コードに対するEDC能力を与える、請求項9に記載の装置。
- 前記ローカルメモリにおける前記テーブル構造は、さらに、前記データ保全性マネージャによって、前記P個の親ページの各々に対する前記親ページレベル検証コードを記憶するマスターページに構成され、マスター検証コードが前記データ保全性マネージャによって生成され、前記マスターページに組み込まれて、前記マスターページに記憶される前記親ページレベル検証コードに対するEDC能力を与える、請求項10に記載の装置。
- 前記データ保全性マネージャによって生成される前記検証コードは、関連付けられるユーザデータブロックのユーザデータコンテンツおよび前記関連付けられるユーザデータブロックの論理アドレスから計算されるIOEDC(入力/出力エラー検出コード)値として特徴付けられる、請求項1に記載の装置。
- 前記データ保全性マネージャは、前記選択されたユーザデータブロックの前記最新バージョンが、前記コントローラによって、前記ローカルメモリにおける前記テーブル構造から前記記憶された検証コードを取得することによって取得されていることを独立して検証し、メインメモリからの前記取得されたユーザデータブロックに応答して新たな検証コードを生成し、前記取得された検証コードを前記生成された新たな検証コードと比較する、請求項1に記載の装置。
- メインメモリへの記憶のために、関連付けられる論理アドレスを有する、入力されたユーザデータのブロックを受取ることと;
前記入力されたユーザデータブロックのユーザデータコンテンツおよび前記関連付けられる論理アドレスに応答して検証コードを生成することと;
前記検証コードをローカルメモリにおけるテーブル構造に、および前記入力されたユーザデータブロックを前記メインメモリに記憶することと;
その後、前記メインメモリから前記入力されたユーザデータブロックを取得するよう、ホスト読出要求を受取ることと;
前記ローカルメモリにおける前記テーブル構造から前記検証コードを取得することと;
前記取得された検証コードを用いて、前記ホスト読出要求に応答して、選択されたユーザデータブロックの最新バージョンが、コントローラによって、前記メインメモリから取得されていることを独立して検証することとを含む、方法。 - 前記取得された検証コードを用いて、選択されたユーザデータブロックの最新バージョンが、前記コントローラによって、前記メインメモリから取得されていることを独立して検証することは、前記メインメモリからの前記取得されたユーザデータブロックに応答して新たな検証コードを生成することと、前記取得された検証コードを前記生成された新たな検証コードと比較することとを含む、請求項14に記載の方法。
- 前記メインメモリは、N個の対応する論理的ブロックアドレス(LBA)を有するN個のユーザデータブロックに対応するよう全体的なデータ記憶容量を有し、Nは複数であり、前記方法はさらに、
前記ローカルメモリにおける前記テーブル構造を、複数M個の最下位レベルページを含むよう構成することを含み、前記M個の最下位レベルページの各々は、前記N個のLBAの異なるシーケンシャルなサブセットに対する対応する検証コードを記憶し、前記方法はさらに、
各ページに記憶される前記検証コードに応答して、ページレベル検証コードを生成することと、
前記ページレベル検証コードを用いて、各ページに記憶される前記検証コードを認証する、請求項14に記載の方法。 - 前記ローカルメモリにおける前記テーブル構造を、複数P個の親ページを含むよう構成することをさらに含み、前記P個の親ページの各々は、前記M個の最下位レベルページの異なるシーケンシャルなサブセットに対するページレベル検証コードを記憶し、前記方法はさらに、
各親ページに記憶される前記ページレベル検証コードに応答して、親ページレベル検証コードを生成することと、
前記親ページレベル検証コードを用いて、各ページに記憶される前記ページレベル検証コードを認証することとを含む、請求項16に記載の方法。 - 前記ローカルメモリにおける前記テーブル構造を、前記P個の親ページの各々に対する親ページレベル検証コードを記憶するマスターページを含むよう構成することと、
前記マスターページに記憶される前記親ページレベル検証コードに応答して、マスター検証コードを生成することと、
前記マスター検証コードを用いて、前記マスターページに記憶される前記親ページレベル検証コードを認証することとをさらに含む、請求項17に記載の方法。 - 前記検証コードは、関連付けられるユーザデータブロックのユーザデータコンテンツを合計し、前記合計されたユーザデータコンテンツと前記関連付けられるユーザデータブロックの論理ブロックアドレス(LBA)との排他的論理和(XOR)組合わせを実行することにより形成されるIOEDC(入力/出力エラー検出コード)値として特徴付けられる、請求項14に記載の方法。
- 前記検証コードは異なる第1および第2の部分に分割され、前記第1の部分は前記第2の部分を伴わずに前記ローカルメモリにおける前記テーブル構造において記憶され、前記第2の部分は前記第1の部分を伴わずに前記メインメモリにおいて記憶される、請求項14に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/244,194 | 2014-04-03 | ||
US14/244,194 US9430329B2 (en) | 2014-04-03 | 2014-04-03 | Data integrity management in a data storage device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015201204A true JP2015201204A (ja) | 2015-11-12 |
Family
ID=54209837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015076902A Pending JP2015201204A (ja) | 2014-04-03 | 2015-04-03 | データ記憶装置におけるデータ保全性管理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9430329B2 (ja) |
JP (1) | JP2015201204A (ja) |
CN (1) | CN104978281B (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9552252B2 (en) * | 2014-08-25 | 2017-01-24 | Seagate Technology Llc | Methods and apparatuses utilizing check bit data generation |
US9880831B2 (en) * | 2015-11-06 | 2018-01-30 | Storart Technology Co., Ltd. | Field firmware upgrading method and computer-readable medium |
US10031689B2 (en) * | 2016-09-15 | 2018-07-24 | Western Digital Technologies, Inc. | Stream management for storage devices |
US10268593B1 (en) | 2016-12-20 | 2019-04-23 | Amazon Technologies, Inc. | Block store managamement using a virtual computing system service |
US10921991B1 (en) | 2016-12-20 | 2021-02-16 | Amazon Technologies, Inc. | Rule invalidation for a block store management system |
US10185507B1 (en) * | 2016-12-20 | 2019-01-22 | Amazon Technologies, Inc. | Stateless block store manager volume reconstruction |
US11507283B1 (en) | 2016-12-20 | 2022-11-22 | Amazon Technologies, Inc. | Enabling host computer systems to access logical volumes by dynamic updates to data structure rules |
US10809920B1 (en) | 2016-12-20 | 2020-10-20 | Amazon Technologies, Inc. | Block store management for remote storage systems |
KR102347184B1 (ko) * | 2017-05-23 | 2022-01-04 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US10229052B2 (en) | 2017-05-31 | 2019-03-12 | Seagate Technology Llc | Reverse map logging in physical media |
US10587590B2 (en) * | 2017-06-12 | 2020-03-10 | Seagate Technology Llc | Tracking of data erasures |
WO2019049129A1 (en) * | 2017-09-07 | 2019-03-14 | Kaminario Technologies Ltd. | DIRECT READ CONTROL IN A DATA STORAGE SYSTEM |
US11218291B2 (en) * | 2018-02-26 | 2022-01-04 | Stmicroelectronics (Rousset) Sas | Method and circuit for performing a substitution operation |
FR3078463A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et dispositif de realisation d'operations en table de substitution |
FR3078464A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et circuit de mise en oeuvre d'une table de substitution |
US11138069B2 (en) | 2018-06-11 | 2021-10-05 | Seagate Technology, Llc | Providing additional parity for non-standard sized parity data sets |
US10896002B2 (en) | 2018-06-29 | 2021-01-19 | Seagate Technology Llc | Reverse directory structure in a garbage collection unit (GCU) |
US10671531B2 (en) | 2018-07-13 | 2020-06-02 | Seagate Technology Llc | Secondary memory configuration for data backup |
US11283598B2 (en) * | 2019-01-25 | 2022-03-22 | Infineon Technologies Ag | Selective real-time cryptography in a vehicle communication network |
US10891184B2 (en) * | 2019-05-22 | 2021-01-12 | Macronix International Co., Ltd. | Configurable data integrity mode, and memory device including same |
CN111008158B (zh) * | 2019-11-08 | 2023-04-25 | 暨南大学 | 一种基于页面重构与数据温度识别的闪存缓存管理方法 |
KR20210121660A (ko) * | 2020-03-31 | 2021-10-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
CN115956158A (zh) * | 2020-08-24 | 2023-04-11 | 康明斯公司 | 用于将关键数据保存在电子控制模块中的系统和方法 |
US11429485B1 (en) | 2021-06-24 | 2022-08-30 | Western Digital Technologies, Inc. | Memories with end-to-end data protection using physical location check |
US11960753B2 (en) | 2021-08-25 | 2024-04-16 | Western Digital Technologies, Inc. | Solution for super device imbalance in ZNS SSD |
US11966618B2 (en) * | 2021-08-25 | 2024-04-23 | Western Digital Technologies, Inc. | Purposeful super device imbalance for ZNS SSD efficiency |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997021172A1 (en) * | 1995-12-01 | 1997-06-12 | Quantum Corporation | Data integrity and cross-check code with logical block address |
JP2006107311A (ja) * | 2004-10-08 | 2006-04-20 | Hitachi Ltd | ディスクアレイ装置およびその制御方法 |
US20060271725A1 (en) * | 2005-05-24 | 2006-11-30 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
JP2009076075A (ja) * | 2007-09-24 | 2009-04-09 | Internatl Business Mach Corp <Ibm> | データ格納方法、データ・ストレージ・システムおよびプログラム(ストレージ・システムにおけるデータ完全性の検証)(著作権および商標登録表示本特許文書の開示の一部は、著作権保護を受ける内容を含む。本所有権者は、特許文書または特許開示書のいずれか一つによるファクシミリ複写物には、複写物が特許商標庁の特許ファイルまたは記録として世に出現している限り異論はないが、他の場合に全ての著作権は完全に留保する。)(本明細書で参照するある種のマークについては、出願人またはその譲受人と提携しまたは提携しない第三者の、慣習法上の、または登録された商標である可能性がある。これらのマークを使用するのは、例示によって実施可能な開示を提供するためであり、そのようなマークに関連するもののみに本発明の範囲を制限するように解釈されるべきではない。) |
JP2010049394A (ja) * | 2008-08-20 | 2010-03-04 | Nec Corp | 磁気ディスクの書き込み障害の検出と回復を行うディスクアレイシステム、方法およびプログラム |
US20110302474A1 (en) * | 2010-06-03 | 2011-12-08 | Seagate Technology Llc | Ensuring a Most Recent Version of Data is Recovered From a Memory |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0520197A (ja) * | 1991-07-09 | 1993-01-29 | Hitachi Ltd | 記憶管理システム及びマイクロプロセツサ |
DE69529635T2 (de) * | 1994-03-15 | 2003-10-23 | Toshiba Kawasaki Kk | Gemeinsame Benutzung eines Dateiedierungssystems mit geheimem Dateiinhalt, Versionsverwaltung und asynchroner Edierung |
US5761677A (en) * | 1996-01-03 | 1998-06-02 | Sun Microsystems, Inc. | Computer system method and apparatus providing for various versions of a file without requiring data copy or log operations |
US6457021B1 (en) * | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
AU4294099A (en) * | 1999-06-10 | 2001-01-02 | Belle Gate Investment B.V. | Arrangements storing different versions of a set of data in separate memory areas and method for updating a set of data in a memory |
US6964008B1 (en) * | 1999-11-12 | 2005-11-08 | Maxtor Corporation | Data checksum method and apparatus |
US7003621B2 (en) * | 2003-03-25 | 2006-02-21 | M-System Flash Disk Pioneers Ltd. | Methods of sanitizing a flash-based data storage device |
JP5001617B2 (ja) * | 2006-09-29 | 2012-08-15 | アイシン・エィ・ダブリュ株式会社 | 地図更新データ供給装置、バージョンテーブル、地図データ更新システム、地図更新データ供給プログラム、及び地図データ更新プログラム |
US8407688B2 (en) * | 2007-11-27 | 2013-03-26 | Managelq, Inc. | Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets |
JP4577439B2 (ja) * | 2008-11-07 | 2010-11-10 | ソニー株式会社 | 販売支援システム、販売支援方法、及び販売支援プログラム |
US20100325363A1 (en) * | 2009-06-22 | 2010-12-23 | Microsoft Corporation | Hierarchical object caching based on object version |
US8255617B2 (en) * | 2010-01-26 | 2012-08-28 | Seagate Technology Llc | Maintaining data integrity in a data storage device |
US8364886B2 (en) * | 2010-01-26 | 2013-01-29 | Seagate Technology Llc | Verifying whether metadata identifies a most current version of stored data in a memory space |
US8381075B2 (en) * | 2010-03-18 | 2013-02-19 | Texas Instruments Incorporated | Low-power redundancy for non-volatile memory |
US8533170B1 (en) * | 2010-09-21 | 2013-09-10 | Amazon Technologies, Inc. | System and method for determining the latest version of a stored data object |
US20130326114A1 (en) * | 2012-05-30 | 2013-12-05 | Seagate Technology Llc | Write mitigation through fast reject processing |
US9779027B2 (en) * | 2012-10-18 | 2017-10-03 | Oracle International Corporation | Apparatus, system and method for managing a level-two cache of a storage appliance |
US9043668B2 (en) * | 2013-02-08 | 2015-05-26 | Seagate Technology Llc | Using ECC data for write deduplication processing |
-
2014
- 2014-04-03 US US14/244,194 patent/US9430329B2/en active Active
-
2015
- 2015-04-03 JP JP2015076902A patent/JP2015201204A/ja active Pending
- 2015-04-03 CN CN201510334040.4A patent/CN104978281B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997021172A1 (en) * | 1995-12-01 | 1997-06-12 | Quantum Corporation | Data integrity and cross-check code with logical block address |
JP2006107311A (ja) * | 2004-10-08 | 2006-04-20 | Hitachi Ltd | ディスクアレイ装置およびその制御方法 |
US20060271725A1 (en) * | 2005-05-24 | 2006-11-30 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
JP2009076075A (ja) * | 2007-09-24 | 2009-04-09 | Internatl Business Mach Corp <Ibm> | データ格納方法、データ・ストレージ・システムおよびプログラム(ストレージ・システムにおけるデータ完全性の検証)(著作権および商標登録表示本特許文書の開示の一部は、著作権保護を受ける内容を含む。本所有権者は、特許文書または特許開示書のいずれか一つによるファクシミリ複写物には、複写物が特許商標庁の特許ファイルまたは記録として世に出現している限り異論はないが、他の場合に全ての著作権は完全に留保する。)(本明細書で参照するある種のマークについては、出願人またはその譲受人と提携しまたは提携しない第三者の、慣習法上の、または登録された商標である可能性がある。これらのマークを使用するのは、例示によって実施可能な開示を提供するためであり、そのようなマークに関連するもののみに本発明の範囲を制限するように解釈されるべきではない。) |
JP2010049394A (ja) * | 2008-08-20 | 2010-03-04 | Nec Corp | 磁気ディスクの書き込み障害の検出と回復を行うディスクアレイシステム、方法およびプログラム |
US20110302474A1 (en) * | 2010-06-03 | 2011-12-08 | Seagate Technology Llc | Ensuring a Most Recent Version of Data is Recovered From a Memory |
Also Published As
Publication number | Publication date |
---|---|
US20150286524A1 (en) | 2015-10-08 |
CN104978281B (zh) | 2018-03-30 |
US9430329B2 (en) | 2016-08-30 |
CN104978281A (zh) | 2015-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9430329B2 (en) | Data integrity management in a data storage device | |
US11941257B2 (en) | Method and apparatus for flexible RAID in SSD | |
JP6820248B2 (ja) | 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能媒体 | |
US9411717B2 (en) | Metadata journaling with error correction redundancy | |
US9684468B2 (en) | Recording dwell time in a non-volatile memory system | |
JP6855102B2 (ja) | 不揮発性メモリ・システムにおけるマルチページ障害の回復 | |
JP5792841B2 (ja) | メモリ内のデータを管理するための方法および装置 | |
JP5675954B2 (ja) | メタデータタグを介した不規則なパリティ分布の検出 | |
US9959059B2 (en) | Storage error management | |
US9690702B2 (en) | Programming non-volatile memory using a relaxed dwell time | |
US20140068208A1 (en) | Separately stored redundancy | |
US10474527B1 (en) | Host-assisted error recovery | |
US9727244B2 (en) | Expanding effective storage capacity of a data storage system while providing support for address mapping recovery | |
US9904607B2 (en) | Logical to physical table restoration from stored journal entries | |
JP2011165063A (ja) | 半導体記憶装置 | |
US10922234B2 (en) | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive | |
US9390003B2 (en) | Retirement of physical memory based on dwell time | |
US20170010810A1 (en) | Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer | |
US10552243B2 (en) | Corrupt logical block addressing recovery scheme | |
US20210042050A1 (en) | Method and apparatus for rebuilding memory mapping tables | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20181114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181218 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20190709 |