JP2016501417A - リードライトメモリデバイスのデータ画像中の仮想境界コード - Google Patents

リードライトメモリデバイスのデータ画像中の仮想境界コード Download PDF

Info

Publication number
JP2016501417A
JP2016501417A JP2015549390A JP2015549390A JP2016501417A JP 2016501417 A JP2016501417 A JP 2016501417A JP 2015549390 A JP2015549390 A JP 2015549390A JP 2015549390 A JP2015549390 A JP 2015549390A JP 2016501417 A JP2016501417 A JP 2016501417A
Authority
JP
Japan
Prior art keywords
virtual
block
read
data
write memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015549390A
Other languages
English (en)
Other versions
JP2016501417A5 (ja
JP6157637B2 (ja
Inventor
ダミン・パッカー・アリ
ベニシュ・バブ
ターラ・ナンダキショア・エラーラ
アシュワニ・クマール
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016501417A publication Critical patent/JP2016501417A/ja
Publication of JP2016501417A5 publication Critical patent/JP2016501417A5/ja
Application granted granted Critical
Publication of JP6157637B2 publication Critical patent/JP6157637B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

データ画像でリードライトメモリデバイスを構成するための方法、システムおよびデバイスが提供される。この方法は、リードライトメモリデバイス用に指定された、一連の仮想ブロックのうちの仮想ブロックサイズに基づいて、データ画像の配置を判断するステップを含む。データ画像は、1つまたは複数のデータ画像部分に分割され、データ画像部分のうちの少なくとも1つに仮想境界コードが付加される。データ画像部分は、一連の仮想ブロックのそれぞれの仮想ブロック中に記憶され、仮想ブロックの間であっても、リードライトメモリデバイス内のすべての不良ブロックをスキップする。

Description

リードライトメモリデバイスのデータ画像中の仮想境界コードに関する。
フラッシュメモリとは、電気的に消去し、プログラムし直すことができる不揮発性コンピュータ記憶チップである。NANDフラッシュメモリ(単にNANDメモリとも呼ばれる)とは、ブロックまたはページでプログラムされ、読み取られ得る高密度タイプのリードライトメモリである。NANDメモリは、メモリカード、USBフラッシュドライブ、ソリッドステートドライブ、および同様の製品において、データの全体的記憶および転送に使われ、ならびに、多数のデジタルデバイス中に構成データを記憶するのに使われる。
読取り専用メモリ(ROM)とは、コンピュータおよび他の電子デバイス内で使われるクラスの記憶媒体である。従来のROMは、読取り専用メモリであり、修正することができないか、修正できるとしても、遅速でしかなく、または問題を起こすことがあるので、主に、ファームウェアを配布するのに使われる。ファームウェアとは、特定のハードウェア用に特に設計されたソフトウェアを指す。デバイスのファームウェアの変更は、デバイスの経済的耐用年数の間には、滅多にまたは一度も行われない場合がある。ファームウェアを更新する一般的な理由には、バグを修正すること、またはハードウェアが使われるための特徴をハードウェアに追加することが含まれる。ファームウェアを更新する1つの方法として、特別な手順で、ROMとともに使われるフラッシュメモリを再プログラムすることがある。ROMとは異なり、NANDメモリは、複数回消去され、再プログラムされ得る。
NANDメモリは一般に、いくつかのブロックで編成され、各ブロックはいくつかのページからなる。NANDメモリの実ページの長さまたはブロックの長さは、製造元によって設定されると、その長さに永久に固定される。「ブロック」は、コンピュータメモリ、および特にNANDメモリに関する限り、公称長さ(nominal length)を有する、一連の記憶バイトまたはビットを備える。その長さは、ブロックサイズと呼ばれる。ブロック中にデータを記憶するプロセスは通常1つのページとして一度に遂行されるが、データの消去は、ブロック単位で行われる。
各ブロックはいくつかのページに編成することもでき、これらのページは一般に、2,048バイト(約2KB)または4,096バイト(約4KB)のサイズである。各ブロックの少なくとも1つのページに関連付けられるのは、誤り訂正コード(ECC)チェックサムの記憶に使うことができる数バイト(一般に、データサイズの1/32)である。典型的なブロックサイズは、以下を含む。
・64ページであって、各々が2,048バイト(約2KB)と64バイトの予備領域とを有し、これは128KB(ページデータ用)および4KB(たとえば、誤り訂正コード、不良ブロック情報、メタデータなどの予備データ用)のブロックサイズを意味する。
・64ページであって、各々が、4,096バイト(約4KB)と128バイトの予備領域とを有し、これは、ページデータ用の256KBのブロックサイズを意味する。
・128ページであって、各々が2,048バイト(約2KB)と128バイトの予備領域とを有し、これは、ページデータ用の256KBのブロックサイズを意味する。
NANDメモリの製作では、製造上の欠陥がしばしば起こり、これらの欠陥によりいくつかのメモリセルが機能しなくなり、および使用できなくなる。1つまたは複数の欠陥メモリセルを含むブロックは、「不良ブロック」と呼ばれる。製造プロセスにより、多くのNANDデバイスはいくつかの不良ブロックを有したまま、工場から出荷される。たとえば、いくつかの不良ブロックを許容することによって、製造元はすべてのブロックが良好であると検証されなければならないという場合よりはるかに高い生産を達成する。こうすることにより、NANDフラッシュのコストが大幅に削減され、部品の記憶容量の減少はほんのわずかとなる。それにもかかわらず、NANDメモリの製造は概して、初期ブロック(ブロック0)が良好であることは保証するが、残りのデータブロックは保証しない。
いくつかの不良ブロック管理方式では、チップ上の不良ブロックを識別する情報をNANDメモリ上に置く。そのような不良ブロック情報は、アクセスされるべき画像を記憶する良好ブロックまたはスキップされるべき不良ブロックのいずれかを示すリストを含み得る。ただし、NANDメモリ自体の特性における不確定要素、ならびに再販業者および/または製造元固有の不良ブロック検出方式/フォーマットは、カスタマイズされたNANDメモリ操作およびプログラミングをあまりにも頻繁に要求する。
さらに、コンピューティングデバイスにおけるROMファームウェア設計は、ソフトウェアと比較して、ある程度制約されるが、それは、これらのルーチンが開発サイクルにおいて実際には後で書き換えることができず、コンピューティングデバイスが製造されると、概して永久的に設定されるからである。したがって、フラッシュメモリ上のデータ画像の全部または一部が、書き換えられ、したがって更新され得るので、フラッシュメモリは、ブートローダルーチンを稼働するのに使われる。本明細書では、「データ画像」という用語は、NANDメモリデバイスなどのリードライトメモリデバイスの1つまたは複数のメモリセル中に記憶された情報を指す。現在のブートローダ用の、フラッシュメモリから離れて稼働されるデータ画像は、上記のように再販業者および製造元の間で大きく変わるNANDデバイス固有の特性を収容しようとするので、複雑になりがちである。
様々な実施形態は、不良ブロックを収容するとともに、コンピューティングデバイスが、メモリ製造元にかかわらず単一のアルゴリズムを使って、メモリから読取りを行うとき、不良ブロックをスキップすることを可能にする、フラッシュメモリなどのリードライトメモリ上にデータ画像を記憶することを含む。この方法は、データ画像を、良好データブロックの境界にあるコードまたは特殊値とともにリードライトメモリ中に記憶されるように構成するステップを含む。そのようなコードまたは特殊値は、本明細書では「仮想境界コード」と呼ばれ、このコードは、コンピューティングデバイスによって認識されると、識別されたブロックが有効なデータを含むことを示す。データ画像は、メモリ中で、仮想ブロックの最初または最後を示す仮想ブロック境界に対応する仮想ブロックサイズを有する1つまたは複数の仮想ブロック中に記憶することができる。各仮想ブロックのサイズは、NANDデバイスについての実ブロックサイズ以下であり得る。仮想ブロックサイズは、製品によってサポートされることが期待される最小共通実ブロックサイズとして設定され得る。NANDメモリ上にデータ画像を記憶するためのシステムは、不良ブロックを識別するための、メモリ製造元が定義したアルゴリズムを使い、次いで、データ画像を良好ブロック中に記憶するとともに、不良ブロックをスキップする。仮想境界コードは、データ画像を記憶するのに使われる各良好ブロックの仮想ブロック境界に含まれる。データ画像はしたがって、コンピューティングデバイスがメモリチップ中の良好ブロックまたは不良ブロックを識別するために、再販業者固有パラメータに従う必要なく、リードライトメモリにアクセスするとき、読み取られるべきデータブロックを識別すると期待し得る仮想境界コードを含む。
別の態様は、コンピューティングデバイス内で実装され得る、リードライトメモリからデータ画像を読み取る方法を含む。この方法は、メモリの第1の仮想ブロック内のデータにアクセスするステップと、仮想境界コードを求めてメモリデバイスを走査するステップとを含み得る。仮想境界コードは、第1の仮想ブロックに続く第2の仮想ブロックの境界を指定する。方法は、仮想境界コードを認識したことに応答して、第2の仮想ブロック内のデータにアクセスするステップも含み得る。さらに、方法は、少なくとも、第1の仮想ブロック中でアクセスされたデータおよび第2の仮想ブロック中でアクセスされたデータに基づいて、データ画像を読み取るステップを含み得る。方法は、追加仮想ブロック中のデータに、仮想境界コードがそのブロック中で認識されたことに応答して、アクセスするステップをさらに含み得る。
さらなる態様は、上記で説明した方法に対応する様々な動作を実施するように、プロセッサ実行可能命令で構成されたプロセッサを有するコンピューティングデバイスを含む。
さらなる態様は、上記で説明した方法動作に対応する機能を実施するための様々な手段を有するコンピューティングデバイスを含む。
さらなる態様は、上記で説明した方法動作に対応する様々な動作をプロセッサに実施させるように構成されたプロセッサ実行可能命令を記憶した、非一時的プロセッサ可読記憶媒体を含む。
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な実施形態を示し、上記の概略的な説明および下記の詳細な説明とともに、本発明の特徴を説明するのに役立つ。
ある実施形態によるリードライトメモリデバイスのパッケージングの図である。 図1のリードライトメモリデバイスを構成するためのプロセスステップを示す図である。 ある実施形態による、5つのリードライトメモリデバイスのパッケージングシナリオを示す図である。 ある実施形態による、2つの追加リードライトメモリデバイスのパッケージングシナリオを示す図である。 リードライトメモリ上にデータ画像を記憶する態様方法を示すプロセスフロー図である。 リードライトメモリデバイスからブートローダを読み取り、実行する態様方法のプロセスフロー図である。 リードライトメモリデバイス上の画像を書き換えるためのプロセスステップを示す図である。 リードライトメモリデバイス上の画像を書き換える態様方法のプロセスフロー図である。 様々な実施形態との使用に適したコンピューティングデバイスの構成要素図である。 様々な実施形態との使用に適した別のコンピューティングデバイスの構成要素図である。 様々な実施形態との使用に適した別のコンピューティングデバイスの構成要素図である。
様々な実施形態が添付の図面を参照して詳細に説明される。可能な場合には必ず、同じ参照番号は、図面全体にわたって同じまたは同様の部分を指すために使用される。特定の例および実装形態へと行われる言及は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。本開示の範囲から逸脱することなく、代替実施形態が考案され得る。さらに、本開示に関連する詳細を不明瞭にしないように、本開示のよく知られている要素は詳細に説明されない、または省略される。
「例示的な」という言葉は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。本明細書に「例示的な」と記載されるいかなる実装形態も、他の実装形態よりも好ましいまたは有利であると必ずしも解釈されるべきではない。さらに、「第1の」、「第2の」、「第3の」、「一次」、「二次」または「三次」という単語または同様の言い回しの使用は、本明細書では、様々な記載要素を区別するための明快さを目的としており、要素の特定の順序または階層に本発明を限定することは意図していない。本明細書で使用する「アクセス」または「アクセスする」という用語は、電子記憶デバイス、または指定される場合はデバイスの特定の部分と、デバイスまたは特定の部分の上のデータまたは情報を走査し、または読み取る目的で相互作用する働きを指す。また、本明細書で使用する「走査」または「走査する」という用語は、特に電子記憶デバイス中のデータまたは情報を調べ、解釈し、または吟味することを意味する。対照的に、本明細書で使用する「読み取る」または「読取り」という用語は、特に電子記憶デバイス中のデータまたは情報を取得し、抽出し、コピーし、または取り出すことを意味する。
ここで開示する様々な態様は、カスタマイズされた、および/またはデバイス固有の不良ブロック検出/管理ルーチンを不要にする、フラッシュメモリなどのリードライトメモリにデータ画像を記憶し、そのようなメモリからデータ画像を読み取るための機構を提供する。開示する技術によるある態様は、フラッシュメモリデバイスなどのリードライトメモリデバイスにデータ画像を記憶する方法を含む。この方法は、リードライトメモリデバイス用に指定された、一連の仮想ブロックのうちの仮想ブロックサイズに基づいて、データ画像の配置を判断するステップを含む。仮想ブロックは本明細書の態様に従って作成され、実ブロックはフラッシュメモリのような、リードライトメモリの固定されたパラメータである。リードライトメモリデバイスの実ブロックサイズは、剰余なしで、仮想ブロックサイズで割り切れる。このように、1つまたは複数の仮想ブロックは、実ブロックと正確に等しくなる。データ画像が仮想ブロックサイズよりも大きい場合、データ画像が記憶されることになるリードライトメモリのブロックサイズを収容するための部分に分割される。データ画像部分のうちの少なくとも1つに、仮想境界コードが付加される。仮想境界コードは、データ画像部分の始端に付加され、仮想ブロックの初期境界をマーキングすることができる。データ画像は、ブートプロセスにおいてコンピューティングデバイスによって使われるデータおよびソフトウェアの一部であり得る。データ画像は、仮想ブロックサイズおよびデータ画像全体のサイズに応じて、必要とされるだけの数の部分に分割され得る。データ画像の全部または一部は、NANDメモリのブロック0に依然として記憶されてよい。方法は、一連の仮想ブロックのうちのある仮想ブロック中に、データ画像部分を記憶するステップをさらに含む。データ画像部分を記憶する際、いかなる介在不良ブロックもスキップされる。このように、1つまたは複数の不良ブロックは、別個の仮想ブロック中に記憶された記憶データ画像部分の間に配列され得る。データ画像の第1および第2の部分は、リードライトメモリデバイスの共有実ブロック中に配列され得る。データ画像の後続部分は各々、付加された仮想境界コードを有し得る。このコードは、良好/不良ブロックリストに依拠する必要なく、読み取られるべきメモリの仮想ブロックを位置特定することをコンピューティングデバイスが期待し得る仮想境界コードとともに、データ画像をリードライトメモリ上に記憶する。こうすることにより、コンピューティングデバイスを、大きく変わるような様々な良好ブロック/不良ブロックスキームを収容するようにプログラムする必要がなくなる。このように、仮想境界コードが付加されたものを含む同じデータ画像部分は、追加リードライトデバイス上に記憶され得る。それらの追加リードライトデバイスは、互いとは異なるページ、ブロックおよび/またはデバイス固有の不良ブロックアルゴリズム特性さえも有し得る。
コンピューティングデバイスが、上述した方法を使って、作成されたデータ画像を使用するリードライトメモリからデータ画像を読み取る態様方法を実装することができる。この方法は、リードライトメモリがブートローダ画像を記憶するのに使われるとき、コンピューティングデバイス向けに実行されるブートローダルーチンにおいて実装され得る。そのブートローダ画像は、コンピューティングデバイス用に実行される排他的ブートローダである必要はない。この方法は、リードライトメモリの仮想ブロック内のデータにアクセスするステップを含む。リードライトメモリデバイスの実ブロックサイズは、剰余なしで、仮想ブロックサイズで割り切れ、これは実ブロックサイズが仮想ブロックサイズに等しいというシナリオを含む。アクセスされている完全なデータ画像が、その仮想ブロック中に含まれていない場合、方法は別の仮想ブロックの境界(たとえば、始端)を指定する仮想境界コードを探して、リードライトメモリ中を前方走査し得る。仮想境界コードが認識されると、ブートローダルーチンなどのコンピューティングデバイスデータロードルーチンは、その他の仮想ブロック内のデータにアクセスすることができる。上述した方法によってメモリがロードされたことにより、仮想境界コードは、仮想境界コードがその中で識別された仮想ブロックが良好であるとともに、読み取ることができるデータ画像の一部分を含むことを示す。この追加データブロック中での読取りの後、完全なデータ画像がまだアクセスされていない場合、コンピューティングデバイスデータロードルーチンはデータ画像全体が読み取られるまで、さらなる仮想境界コードおよびデータブロックを求めてメモリを走査し続ける。データ画像の量/サイズは、画像ヘッダ情報から判断され得る。このプロセスは、データ画像全体がロードされたことをデータロードルーチンが認識すると終了することができる。仮想境界コードを求めてメモリを走査することによって、どのブロックが不良または良好であるかをコンピューティングデバイスが前もって判断する必要なく、不良ブロックは(仮想境界コードを含まないので)自動的にスキップされ、良好ブロックからのみデータが読み取られることになる。別の態様によると、方法は、第1のブロック中(たとえば、データ画像のプリアンブル部分中)に記憶された情報に基づいて、データ画像のサイズまたは仮想ブロックサイズを外挿することができる。リードライトメモリのページサイズは、データ画像の第1のブロックまたはプリアンブル部分から推論することができ、これは、仮想ブロックごとのページの数を判断するのに使われ得る。
さらなる態様は、メモリ中に記憶された既存のデータ画像が更新され、または置き換えられたときなどに、更新または新規データ画像でフラッシュメモリを書き換えるための方法を含む。この方法は、初期データ画像を、リードライトメモリの少なくとも1つの初期仮想ブロック中に含む。また、方法は、リードライトメモリ中で利用可能な少なくとも1つの後続仮想ブロックを求める、少なくとも1つの初期仮想ブロックの前方走査を含む。新規データ画像の第1の部分は、付加された仮想境界コードを含む後続仮想ブロック中に記憶することができる。方法は、新規データ画像全体が記憶された後、少なくとも1つの初期仮想ブロックから初期データ画像を消去するステップをさらに含み得る。新規データ画像は、その少なくとも1つの初期仮想ブロック中に再び書き込みすることができる。実際、新規データの再書込みおよび古いデータの消去は、1つのアクションとして実施することができる。ただし、新規データ画像は、先頭の仮想ブロック中に書き込まれる必要はなく、後に続く1つまたは複数の仮想ブロックに書き込めばよい。新規データ画像全体が、その少なくとも1つの初期仮想ブロックまたは先頭の仮想ブロックに続く1つもしくは複数の仮想ブロック中に書き込まれると、方法は、新規データ画像が一時的に書き込まれた後続仮想ブロックから新規データ画像を消去するステップも含み得る。
コンピューティングデバイスのプロセッサは初めて電源投入されたとき、概して、オペレーティングシステムがROMまたはRAMにロードされていない。したがって、プロセッサは最初に、システムを起動するプロセスを始めるブートローダと呼ばれるROMファームウェア中に記憶されたプログラムコードを実行する。ブートローダのジョブは、他のデータおよびプログラムをランダムアクセスメモリ(RAM)中にロードすることであり、プログラムは次いでプロセッサによって実行される。一次ブートローダは概して、ROM中に記憶され、電源投入時またはデバイスがリセットされたときに実行される。その後、CPUに動作可能に結合されたNANDデバイス上に記憶された1つまたは複数の二次ブートローダが、新規および/または追加アプリケーションコードをロードさせ、実行させ得る。従来、複雑さを増大させるいくつかのプログラムが、連鎖ローディングのプロセス中に次々とロードを行う多段階ブートローダが使われている。ただし、メモリの異なるページおよび/またはブロックサイズならびに不良ブロック特性にわたってスケーラブルなNANDフラッシュメモリ中に、単一の可変サイズのブートローダを有することが有利な場合がある。そのようなNANDメモリブートローダは依然として二次ブートローダであり、かつ/または他のブートローダプログラムと協調することができる。
NANDメモリ製造元および再販業者は、メモリデバイス中で不良ブロックを識別するための統一標準フォーマットを使用しない。それにもかかわらず、コンピューティングデバイスは、メモリ中の不良ブロックの扱い方に対応しなければならず、そうでないとデバイスは適切に作用することも一貫して作用することもない。したがって、不良ブロックソフトウェアルーチンは一般に、不良ブロックを収容するとともに、コンピューティングデバイスと一緒に使われることが期待され得る、各製造元/再販業者のNANDメモリデバイスを操作する方法を提供するように構成された、二次ブートローダを含むデータローダルーチン内に含まれる。ただし、NANDメモリチップは、いくつかの製造元または再販業者のうちのどこからも購入される可能性があり、再販業者は、その不良ブロック検出情報/方法を変える場合がある。現在の不良ブロックソフトウェアルーチンは、コンピューティングデバイス内にプログラムされたブートローダに、いくつかの異なるルーチンを含めることによって、多様に異なる不良ブロック検出方式を扱う。これは、再販業者の多様な要求および仕様を扱う目的で行われる。そのような多様性を不良ブロックルーチン中に収容すると、ブートローダROMファームウェアを複雑にする可能性があり、再販業者の変更を受け入れるためにそのようなルーチンを変えることは、概して望ましくない。また第1のブートローダは、良好と保証される、NANDメモリの最も小さい典型的なブロック0内に全体が存在するように設計され得るが、これによりシステムの全体としての起動が複雑になり、しばしば、ドライバとブートローダが重なってしまう。本明細書の態様は、そのような複雑化および/または二重化を縮小し、ROMが、第1の良好ブロック以外にも繋がっているブートローダをロードすることを可能にする。
開示する実施形態は、メモリチップ上のデータ画像をロードするプロセスのための、NANDメモリ再販業者によって実装される多様な不良ブロック検出方式の必要性を制限し、かつ/またはなくすための方法を含む。コンピューティングデバイスが、不良ブロックをルックアップするのにリソースを使う必要がなく、ロードされるべきデータブロックを識別することを可能にするための仮想境界コードを追加することによって。処理される(すなわち、データ画像とともにロードされる)リードライトメモリ向けの汎用の不良ブロック検出/操作ルーチンの実装は、機械セットアップの一部として実装され得る。
様々な態様において、リードライトメモリ上で記憶されるべきデータ画像は、仮想ブロックに対応するデータ画像中の位置に各々が位置特定される、1つまたは複数の仮想境界コードを有して構成される。仮想ブロックは、コンピューティングデバイス内で実装され得るリードライトメモリのブロックサイズに準拠するようにサイズ指定される。仮想ブロックサイズは、メモリの実ブロックサイズと一致し得る。ただし、異なるメモリ構成(すなわち、異なるサイズの実ブロックをもつメモリチップ)を収容するために、仮想ブロックサイズは、コンピューティングデバイス内で実装され得るすべてのメモリの実ブロックの最小公倍数サイズに設定されてよい。こうすることにより、態様方法は各タイプのメモリについて別個のデータ画像を要求することなく、異なるページサイズ(たとえば、2Kおよび4K)のNANDデバイスをサポートすることが可能になる。(少なくとも初期ブロックの後の)仮想ブロック内の正規位置に仮想境界コードを付加することによって、同じデータ画像は実装され得る任意のメモリの良好ブロック中に記憶することができ、いかなる介在不良ブロックもスキップされ得る。そのような仮想境界コードは、始端など、仮想ブロック中のほぼどこにおいても付加され得る。
データ画像がリードライトメモリ、たとえばNANDメモリ上に記憶されると、再販業者固有の不良ブロック検出方法が、不良ブロックを避けるとともにメモリ中の良好ブロックのみを使うために使われる。ただし従来のシステムは、再販業者固有の不良ブロック検出方法を使うためにも、そのデータ画像を引き続き読み取るルーチンを要求する。対照的に、開示する実施形態の態様は、データ画像を読み取るとき、そのような再販業者固有方法を使う必要性を最小限にするか、またはなくし、ほぼどのリードライトメモリデバイスにも適用可能な、より汎用な方法を提供する。本明細書で開示する態様は、データ画像を、リードライトメモリ上の1つまたは複数の仮想ブロック中に記憶する。データ画像は、リードライトメモリの1つまたは複数の仮想ブロック中に記憶することができる。データ画像全体を収容するため複数の仮想ブロックが必要とされる場合、次の利用可能仮想ブロック(必要なら複数のブロック)が、完全データ画像が記憶されるまでデータ画像の残りの部分を記憶するのに使われてよく、この場合、いかなる介在不良ブロックもスキップされる。仮想ブロックは、各仮想ブロック中に置かれたデータ画像の部分に付加された仮想境界コードによって定義および画定される。一実施形態では仮想境界コードを、各仮想ブロックの最初に置く。また、特に、デバイス上の第1のブロックは概して良好であることが保証されるので、先頭の仮想ブロックは仮想境界コードを必要としない場合がある。また仮想境界コードが、次および/または後続仮想ブロックの最初に置かれた場合、データ画像の部分が記憶されるロケーションを識別する。仮想境界コードが付加されたデータ画像は、メモリの良好な実ブロック中にのみ記憶され、したがって仮想境界コードは、メモリの良好な実ブロック内の良好な仮想ブロックに対応する。その結果、ブートローダは、本明細書の態様による単一の画像読取りプロセスを使って、製造元または再販業者の存在を考慮することなく、ほぼどのリードライトメモリも収容する方法で仮想境界コードを認識し、読み取るべきメモリのブロックを判断することができる。態様方法は、上述したようにプログラムされたNANDメモリから、計算能力をもつスマートフォンまたは他の電子機器などのデバイスを起動するために使うことができる。また、態様方法は、二次ブートローダのフェールセーフな更新の操作に適用することができる。
態様方法は、フラッシュメモリ中に記憶されているとともに、スマートフォンまたは他のモバイルコンピューティングデバイスなどのコンピューティングデバイスによって、電源投入時またはリスタート時にロードされる初期ソフトウェアとして使われる初期ブートソフトウェア画像に特に適用可能であり得る。一般に、そのようなブートソフトウェアは、オペレーティングシステム、プロセッサまたはデバイス製造元によって厳密に制御される。ブートソフトウェアを制御する会社は一般に、一次ブートロード画像をROMメモリに「焼き」、コンピューティングデバイスは次いで、そのブートルーチンの一部として、NANDメモリなどのリードライトメモリにアクセスして、初期ソフトウェア画像をロードする。
態様方法、システムおよびデバイスは、不良ブロック操作を提供し、ほぼどのNANDデバイスからの単一の二次ブートローダ(本明細書では、ブートローダとも呼ばれ、「BL」と略される)アーキテクチャも可能にする。現在のシステムでは、二次ブートローダのサイズは、内部SRAMメモリのサイズで規定され得る。したがって、たとえば、NANDデバイス内でSRAMサイズが256KBである場合、概してブロック0に置かれたプリアンブル用のキロバイトを減算し、証明書(Certs)やパディング(PAD)など、その他の追加データ用の追加キロバイトを減算すると、その初期実ブロック中には約240KBが残り得る。その240KBサイズは、多くの個々のブートローダの最大サイズに対応し、現在リードライトメモリ中で概して実装される128KBの最小NANDブロックサイズよりも大きい。本明細書の態様は、仮想ブロックサイズを128KBという現在の最小NANDブロックサイズに対応するように設定する。したがって、そのSRAMから240KB BLを実行するために、複数の仮想ブロックが、一次ブートローダによって読み取られる必要がある。いくつかの現在のフラッシュメモリデバイスは、128KBという最小値よりも大きいブロックサイズを有し、一部は256KBを有し、より大きいメモリが開発されているが、そのような比較的大きい実ブロックは128KBの、2つ以上の仮想ブロックを含み得る。また、本明細書における方法の態様は、32KBなど、より小さいブロックサイズにも拡張することができる。
128KBのセグメントサイズは、本明細書において、説明が目的の例としてのみ使われ、これらのセグメントは、検討される特定のNANDデバイスに応じて、より大きくても、より小さくてもよいことを理解されたい。たとえば、128KBの仮想ブロックサイズが使われる場合、このサイズは、ブロックごとに64ページ未満またはブロックごとに128KB未満であるNANDデバイスをサポートすることができない。ただし、仮想ブロックサイズがますます小さくなると、必要とされる仮想ブロックの数が増し得るので、より小さいブロックサイズは、現実的な制限を有する。より多くの仮想ブロックは、有効なデータ画像を見つけるためにより多くの走査が必要とされることを意味し、これは起動時間の増大につながり得る。
態様方法は、NANDデバイス上に置かれたBL画像を、128KBの仮想ブロックサイズ範囲内に置くことができるセグメントに分割する。128KBの仮想ブロックサイズは、NANDデバイス向けの現在の最小値に対応するときに選ばれるが、所望されるときは、異なる仮想ブロックサイズが使われてもよい。仮想ブロックは、少なくとも第2の128KBセグメント内にマーカを付加することによって作成される。第1の128KBセグメントは概して、BLプリアンブルおよび他の可読コードを含み、したがって、仮想境界コードを含む必要はない。仮想境界コードによってマーキングされた各セグメントは、仮想ブロックおよびその境界(仮想ブロックの2つの端であって、本明細書では「仮想ブロック境界」とも呼ばれる)を定義する。BL画像の残りの部分は分割され、画像全体を収容するのに必要とされるだけの数の仮想ブロックに配置される。不完全な仮想データブロックを埋めるために、パッキングデータが追加され得る。
様々な態様により、ROMファームウェアの開発者はもはや、NANDメモリ再販業者が定義した不良ブロック検出方式を収容する必要がなくなる。様々な態様は、不良/良好ブロックテーブルを保持する事前プログラムされたページに依拠しない。開示する技法は、異なるNANDデバイス用に別個のツール/ビルドをあらかじめ要求している、フラッシュツールおよびビルド管理の設計を簡素化する。さらに、開示するデバイス、システムおよび方法は、ブートローダおよびその操作のフェールセーフな更新を可能にする。さらに、このNAND設計は、異なるページ/サイズNANDデバイスをサポートするようにスケーラブルである。
図1は、様々な態様による、スタンドアローンブートローダ15をもつNANDデバイス100のパッケージングを示す。本実施形態では、128KBの仮想ブロックサイズが使われ、このサイズは、上記のように、2KBまたは4KB NANDデバイスのいずれかにとって有効である。したがって、128KB仮想ブロックを確立するために、仮想ブロック境界が、仮想境界コード14によって指定され得る。そのような仮想境界コード14は、12バイトのデータ程度に小さくてよい、一意であり認識可能なデータパターンである。一例として、仮想境界コード14は、844bdc56 73531014 d48b54c6という16進数であってよい。これよりも大きいか、または小さい仮想境界コード14が使われてもよいが、仮想ブロック境界を画定するために少量のデータのみが必要とされるので、大きいものである必要はない。また、一次ブートローダスタック用に予約されたSRAMのさらなる部分、すなわち共有エリアおよびブロック0の始端にある他のデータが考慮されてよい。したがって、利用可能SRAMは、実際のSRAMサイズよりも小さくてよい。
図1は、プリアンブルメモリコードと呼ばれ得る1つまたは複数のメモリコード10を含むプリアンブル5も示す。いくつかのプリアンブルメモリコード10を含めても、プリアンブルは、10KBを超えないと想定され得る。したがって、BL15は、NANDデバイス100のブロック0の最初の10KBの後に始まって、書込みを受け得る。図1に示す例では、BL15の最初の80バイトは画像ヘッダ12を含み、画像ヘッダ12はブートローダの第1の部分15aの冒頭を指定し、仮想ブロックに対して設定されたサイズなどの付加情報を含み得る。その後、仮想ブロック境界は、128KB境界における仮想境界コード14を付加することによってマーキングすることができ、その後には、次の128KB中のブートローダの第2の部分15bが続く。仮想境界コード14は、それ以外の場合、典型的な二次ブートローダの中央を占め、したがってBL15は複数の部分15a、15bに分割される。プリアンブルサイズ、画像ヘッダサイズおよび仮想ブロックのサイズを知ることによって、第1のブートローダ部分15aのサイズについての判断が行われ得る。ブートローダの残りは次いで、ブートローダの第2の部分15bまたは必要な場合は追加仮想ブロック中のさらなる部分に含められてよい。したがって、いくつかの既知変数または想定変数が、分割されたBL15の各部分がどの程度大きくなり得るかの判断に含められてよい。たとえば、以下のパラメータを検討する。
・SRAMサイズ=256KB
・予約済み/使われるSRAM=約16KB
・仮想ブロックサイズ=128KB
・プリアンブル(5)サイズ(プリアンブルメモリコード10を含む)=10KB
・ブートローダ画像ヘッダ(12)サイズ=80B
・署名および証明書(16)にパディング(18)を加えたもの=6KB
・仮想境界コード(VBC)サイズ=12B
使われる上記バイトの合計を、SRAMサイズから減算すると、2つの128KB仮想ブロック中に記憶することができる、NANDメモリ中のブートローダ用のほぼ223KBが残る。
図2は、ブートローダ15の間隔および配置の別の検討法を示す。最初に20で、仮想ブロックサイズが128KBで確立されてよく、したがって2つのそのような仮想ブロックが、256KB SRAM中に含まれることになる。22で、仮想ブロックのうちの少なくとも2つにわたり得るBL15のサイズが検討され得る。次いで24で、画像ヘッダ12および証明書16が、BL15画像の全長に追加される。また26で、プリアンブルメモリコード10を含むプリアンブル5、およびパディング18が、画像の全長に追加される。さらに28で、仮想境界コードが、BL15の2つの部分15a、15bの間に付加され、このコードは、本実施形態では、第1の128KB仮想境界に対応する。これらのパラメータを考慮に入れて、実デバイスのページサイズにより、何個の実ブロックが使われるか、ならびに何個の仮想ブロックが使われるかが決まる。たとえば、サイズが4KであるページをもつNANDデバイスを検討する。そのようなデバイスは、256KBの実ブロックを有し、ブロック0には、ブートローダ用におよそ223KBが残る。したがって、4K NANDデバイスは、このBLを保持するのに、1つの良好ブロックを必要とするだけである。128KBの仮想ブロックサイズが使われる場合、その1つの良好な実ブロックが2つの仮想ブロックを含む。ここで、サイズがわずか2kであるページをもつNANDデバイスを検討する。このデバイスは、2つの良好な実ブロックを要求する。これらの実ブロックのサイズは、128KBという仮想ブロックサイズと一致する。したがって2K NANDのブロック0は、第1のBL部分15a用に、ほぼ118KBの空間を残す(128KBから10KBを引いたプリアンブル5、80Bを引いた画像ヘッダ12)。残りの第2のBL部分15bは次いで、仮想境界コード14によって指定された次の良好ブロック中に置かれ得る。
図3は様々なシナリオにおいて、例示的ブートローダの配置がどのように展開し得るかを示す。図示される5つのシナリオはすべて、128KBの仮想ブロックサイズ(5つのシナリオの上に一連の仮想ブロックとして示す)を使う。シナリオのうちの3つは2KB NANDデバイスについて検討し、他の2つのシナリオは4KB NANDデバイスについて検討する。2KBシナリオでは、仮想ブロックサイズは128KBの実ブロックサイズと一致する。4KBシナリオでは、仮想ブロックは実ブロックのサイズの半分である。
2KBシナリオ1において、ブートローダの分割および配置は単純であり、仮想境界コード14がブロック1の始端に置かれ、デバイス上でマーキングされた第1の仮想ブロック境界と一致する。仮想ブロックは、2KBシナリオにおける実ブロックと一致することに留意されたい。上述したNANDメモリのコーディングと同様に、ブロック0はプリアンブルメモリコード10、ブートローダ画像ヘッダ12および第1のブートローダ部分15aをもつプリアンブル5も含む。第2のブートローダ部分15bが仮想境界コード14に続き、コード14は本実施形態において、部分15bに付加され、仮想ブロックの始端をマーキングする。この2KBシナリオ1は、ブロック1が良好であり、したがって第1および第2の仮想ブロックが、連続した良好ブロックであるNANDデバイスに該当する。ただし製造元は概して、ブロック0が良好であると保証するだけであり、したがって第2および第3のシナリオを2K NANDデバイス用に検討する。2KBシナリオ2において、ブロック1は不良であるがブロック2は良好である。したがってブロック1が不良であるので、仮想境界コード14をそのブロック中に書き込むことができない。一方、次の良好ブロック、すなわちブロック2が、仮想境界コード14が次いで第2のブートローダ部分15bとともに書き込まれる場所である。2KBシナリオ3は、ブロック0に続く2つの初期不良ブロック(ブロック1およびブロック2)を有する。したがってこの場合、仮想境界コード14は、それらの2つの不良ブロックのうちの、次の良好ブロック(ブロック3)の始端である、最後に続く境界に書き込まれる。同様に、そのシナリオにおいて、BLの残り(BLの第2の部分15b)がブロック3中に書き込まれる。
4KBシナリオにおいて、ブートローダは概して、2つの仮想ブロックを含むのに十分大きいブロック0内に全体が収容され得るので、ブロック1が良好であるか不良であるかはほとんど問題にはならない。したがって、4KBシナリオ1は、ブロック1が良好でありながら、BL第1部分15aおよびBL第2部分15bが両方ともそのままブロック0中に書き込まれ得るので、必要とされない状況を示す。また、4KBシナリオ2は、BL15a、15bの両方の部分が、全体が依然としてそのブロック0中にどのように書き込まれ得るかを示し、そのシナリオにおけるブロック1が不良であることを不適切にする。
図4は、ブートローダの配置のもう2つのシナリオを示す。図4における第1のシナリオは4KBシナリオ3であり、このシナリオは、3つの部分15a、15b、15cに分割される必要がある、より大きいBLを含む。第2の実ブロック、すなわちブロック1が良好なので、データ画像は、連続した仮想/実ブロックに広がる。ただし、ブロック1が不良だった場合、第2の仮想境界コード14およびBLの第3の部分15cは、ブロック2中に記憶されてよい。図4における第2のシナリオは、2KBシナリオ4である。繰返しになるが、3つの部分15a、15b、15cに分割される必要があるより大きいBLが使われるが、ここで第3のブロック、すなわちブロック2は不良である。したがって、第4のブロック、すなわちブロック3は、第2の仮想境界コード14およびBLの第3の部分15cを記憶するのに使われる。
図5は、リードライトメモリデバイス上にデータ画像を記憶する態様方法500を示す。データ画像は、本明細書の態様によるブートローダであってよい。ブロック510で、NANDデバイスなどのリードライトデバイスが、デバイス上でのデータ記憶のためにロードされ、準備される。ブロック520で、リードライトメモリデバイス用に指定された一連の仮想ブロックのサイズに基づいて、データ画像をパッケージングするために、データ画像の配置が判断される。この判断の一部として、データ画像は、データ画像全体が単一の仮想ブロックにとって大きすぎる場合、少なくともデータ画像の第1の部分およびデータ画像の第2の部分に分割される必要があり得る。また仮想境界コードが、データ画像の第1の部分およびデータ画像の第2の部分のうちの少なくとも1つに付加される。本実施形態では、仮想境界コードはデータ画像の第2の部分の始端に付加され、したがってブロック530においてデータ画像の第1の部分は、一連の仮想ブロックの第1の仮想ブロック中に記憶される。ブロック540で仮想境界コード(VBC)が記憶され、次の仮想ブロックをマーキングし(したがって、一連の仮想ブロックのうちの第2のものを指定し)、このブロックは当然ながら、良好な実ブロックと一致する。VBCを記憶し仮想ブロックを指定する際、第1の仮想ブロックと第2の仮想ブロックとの間のいかなる介在不良ブロックも、リードライトメモリ内でスキップされる。データ画像を物理的に書き込むのに使われるプログラミングツールは、再販業者固有の生産工場がマーキングした不良ブロックについてのチェックを実施し、必要に応じて不良ブロックをスキップすることができる。プログラミングツールの目的は、データ画像内にVBCを記憶し、かつ/または組み込むことであり得る。したがって、VBCは再販業者不良ブロック管理方式に依存せずに読み取られ得るパターンを作成するため、データ画像の一部として作られるので、プログラミングツールはVBCを認識する必要がなく、扱う必要さえない。そのようなプログラミングツールはNANDドライバも有し得るが、ROM中のNANDドライバとは異なり、プログラミングツールのNANDドライバはサイズについても複雑さについても、制限される必要はない。これにより、プログラミングツールは、製品に対する改訂または更新に従ってバグを修正し、新規NAND再販業者固有の不良ブロックチェック方式を扱うことも可能になる。このようにして、そのようなプログラミングツールにおいて、ROM中のNANDドライバと比較して、機能性が追加、削除、変更または強化され得る。ブロック550で、データ画像の第2の(次の)部分がVBCと同じ仮想ブロック中に記憶されてよく、このブロックは、一連の仮想ブロックのうちの第2の仮想ブロックである。判断ブロック560は、完全なデータ画像が記憶されたかどうか判断する。方法が、次の利用可能仮想ブロックに別のVBCを記憶するためにブロック540に戻らない場合、再度ブロック550で、データ画像の次の部分を記憶する。このループは、データ画像のすべての部分が記憶されるまで進む。判断ブロック560で、完全なデータ画像(たとえば、ブートローダ画像)が記憶されたという肯定的判断が行われると、570で、ブロック510の始端においてロード/準備されたリードライトデバイスの一連のプロセスは完結する。プロセスはしたがって順番に、または追加リードライトデバイスと並行して繰り返され得る。
仮想ブロックの始端にVBCを位置決めすることは、良好ブロックの迅速な検出を助け、ブートローディングプロセスを最適化することができる。仮想ブロックの単一パス読取りによりVBCを検出し、同時に、そのブロック中に含まれるブートローダデータ画像を読み取ることができる。代替として、仮想境界コードは仮想ブロックの始端に置かれる必要はない。たとえば、VBCは各仮想ブロック(ブロック0を含む)の端に、または所望されるほぼどの位置に置かれてもよい。1つまたは複数のVBCに関する位置決め情報は、上で論じた画像ヘッダ中に含まれ得る。
NANDデバイスに1つまたは複数の仮想境界コードが書き込まれると、一次ブートローダがデバイスを解析して、それらの仮想境界コードを見つけ、指標のような仮想境界マーカを使って、完全な二次ブートローダを読み取り、認証し、稼働することができる。図6は、リードライトデバイスからデータ画像を読み取る態様方法を示す。
図6は、リードライトメモリからデータ画像を読み取る態様方法600を示す。たとえば、一次ブートローダ中のNANDパーサが方法600を実装して、二次ブートローダを読み取り、ロードし、認証することができる。ブロック605で、リードライトデバイスは、ブロック0中のプリアンブルから開始して読み取られ、これはデバイスのページ0とも一致する。プリアンブルは、データロードルーチンによって使うことができるデバイス幅およびページサイズ情報を含み得る。ブロック610で、誤り訂正コーディング(ECC)検出が、好ましく現行の方法に対して有効にされているので、ECCが実施され得る。この動作は、4ビットBCH誤り訂正コーディングまたは他のコーディングにデフォルト設定され得る。プログラムされたページの読取りが、ECCが検出されないように不成功の場合、ブロック612では追加ECC構成がチェックされ得る。たとえば、8ビットBCH ECCが使用され、またはそれがデフォルトでなかった場合は4ビットBCH ECCが使われ得る。したがって、1つまたは複数の追加ECC構成がチェックされてよく、そうすることによってブロック614でどのECCも検出されなかった場合、プロセスはブロック616で終了し、これはどのブートローダ(BL)も見つけられなかったことを意味する。代替として、方法はAUTO_DETECTルーチンおよび重み付きアルゴリズムチェックを使って、有効なプリアンブルをチェックすることができる。別の方法では、ブロック610またはブロック614のいずれかでECCが検出された場合、方法はブロック620に進み、ここでページサイズ検出が実施される。ブロック620で、実NANDページサイズを算出するために、連続したページが読み取られて、仮想境界コードサイズおよび/または位置を検証することができる。決定ブロック620で、のページサイズも検出されなかった場合、いずれかの仮想境界コード(VBC)が検出されたかどうかに関するチェックが、さらなる決定ブロック622で行われる。622でVBCが検出された場合、そのオフセット(位置およびサイズ)を明記するVBCが、624で読み取られ、次のページに移り、ページサイズ検出決定ブロック620に戻る。622で、VBCが検出されなかった場合、プロセスはブロック616で終了し、これはどのブートローダ(BL)も見つけられなかったことを意味する。決定ブロック620でページサイズが検出された場合、仮想ブロックサイズをページサイズで除算することによって、仮想ブロックごとのページの数に関する判断が行われ得る。ROMはこの判断を使って、次の仮想ブロックに進む前に、どのくらいの量の固定されたページが読み取られる必要があるかを知ることができる。ページサイズが検出されると、第1の仮想ブロック中のデータ画像がブロック630でアクセスされ、コピーもされ得る。したがって、残りのページがその第1の仮想ブロックから読み出されてよく、結果として、データ画像の第1の仮想ブロック内のデータすべてがアクセスされる。プロセスは次いで、VBCを求めて、次の仮想ブロックの走査に進み得る。640でVBCが検出されなかった場合、次の仮想ブロックは不良および/または破損であり得る。したがって、ブロック642で、プロセスは仮想境界コードを求めて、次の仮想ブロックを走査する。プロレスが無限ループに陥らないようにするために、何個の仮想ブロックがチェックされればよいかについて、閾値(タイムアウト機能とも呼ばれる)が使われ得る。したがって、15個の仮想ブロックなどの閾値が使われてよく、644で、その閾値に達した場合、このことは、BLが見つからなかったことを意味し得るので、プロセスは616で終了する。仮想ブロック閾値に達していない場合、サイクルはブロック640で仮想境界コードが検出されるまで、ブロック640に続くか、あるいはブロック640に戻る。640でVBCが検出されると、次の仮想ブロック内のすべてのデータが、650でアクセスされ得る。その次の仮想ブロックは、VBCが見つかりアクセスされ得る仮想ブロックに対応する。660で、完全なデータ画像(たとえば、完全なBL)が読み取られたかどうかに関して、判断が行われ得る。660で完全なBLが読み取られていない場合、プロセスはブロック642で、上述したように、そこからさらに進むとき、仮想境界コードを求めて次の仮想ブロックを走査する。660で完全なBLが読み取られている場合、670でBLは認証され、実行されてよく、したがって、第1および第2の仮想ブロック中のデータ画像によって表されるデータからBLをロードする。ロードされたBLは、マーカとしてのみ意図されているとともにロードされる必要がない仮想境界コードバイトをスキップしてよい(含める必要はない)。
図6に示す態様方法は、第1および第2の仮想ブロック、または後続仮想ブロックの間に不良ブロックが配列されているとき、データロードルーチン(たとえば、一次ブートローダ)が、メモリ中の良好ブロックまたは不良ブロックを最初に識別することなく、データ画像全体(たとえば、二次ブートローダ)を読み取ることができるように、不良ブロックがどのようにスキップされるかを示す。したがって、不良仮想ブロック中で仮想境界コードが検出されないので、データロードルーチンは第1の仮想ブロックに続く不良ブロックをスキップする。また、第1の仮想境界コードは、それらのバイトがマーカとしてのみ必要とされ得るので、二次ブートローダの実行から除外されてよい。
追加態様は、たとえばワイヤレスデバイス向けのOver The Air(OTA)ダウンロードを通した、フェールセーフな更新プロビジョニングを含む。この点において、フラッシュメモリを含むスマートフォンなどリードライトメモリを含む多くのデバイスは、しばしば、ファームウェアに対するアップグレードまたは更新を要求する。開示する不良ブロック管理設計はそのようなアップグレードを、上述した技法の拡張を使う、信頼できる/フェールセーフなやり方で可能にする。最初に、システムは現行のブートローダが存在するブロックを検出する。次いで、システムはより新しい/置換えブートローダが書き込まれるのに利用可能な、1つまたは複数の追加良好ブロックに進行する。その後、新規良好ブロックロケーションが、アップグレード/更新プロセスに何かが割り込んだ場合のバックアップとして使われ、新規ブートローダがプログラムされ得る。次いで、たとえばブロック0において開始する古いブートローダが初期ロケーションにおいて消去され、新規二次ブートローダがブロック0において、および必要な場合は後続良好ブロックにおいてプログラムし直され得る。
図7は、様々な態様による、NANDデバイス上で画像を改訂する方法の例を示す。このアップグレード方法は、上述した仮想境界コードを使う仮想ブロック指定に十分に準拠する。初期状態70において、システムは現行のブートローダが存在する第1のブロック内のデータにアクセスする。それらのブロックは、プリアンブルメモリコード10をもつプリアンブル5、および画像ヘッダ12を含み得る。図示した例において、ブートローダは2つの初期ブロック中に配列された2つの部分15a、15bに分割され、これらのブロックはNANDデバイスに依存して、仮想ブロックまたは実ブロックに対応してよく、本明細書の態様による仮想境界コード14を含み得る。代替として、オリジナルブートローダは従来技術による単一の連続ブートローダであってよく、これは本明細書の方法に従って置き換えられ得る。この段階で、システムは新規データ画像用に何個のブロックが必要とされるかをさらに判断するために、任意のブートローダ部分15a'、15b'、新規プリアンブルメモリコード10'をもつ新規プリアンブル5'、新規画像ヘッダ12'および任意の必要な新規VBC14'を含む実ブロック(または、存在する場合は仮想ブロック)のサイズを判断することができる。システムは、次の利用可能良好ブロックを見つけるために、フラッシュメモリデバイス上を前方走査し得る。新規ブートローダ用に複数の良好ブロックが必要とされる場合、システムは新規データ画像を収容するのに十分な利用可能良好ブロックが見つかるまで、フラッシュメモリデバイス上を前方走査し続けてよい。72に示す状態において、システムは次いで、識別された利用可能良好ブロック中に、ブートローダ部分15a'、15b'、新規プリアンブルメモリコード10'をもつ新規プリアンブル5'、新規画像ヘッダ12'および新規VBC14'を含む新規データ画像を記憶する。本発明の態様によると、利用可能良好ブロックは、まさに次の連続して利用可能な良好ブロックである必要はない。図示した例において、この方法の一部として変更される古いブロックと新規ブロックとの間のバッファを提供するために、少なくとも2つのブロックがスキップされる。少なくとも2〜3個のブロックを残しておくことにより、方法は、初期ブートローダのサイズの今後の増大を考慮に入れることができ、そうすることにより、現在のシステムにとって必要とされる1つまたは2つの初期ブロックよりも多くの初期ブロックに対処することができる。また、ある程度の空間を残すことにより、デバイスのそれらの初期ブロック中の不良ブロックを避けることもできる。古い方のブートローダを消去する前に、新規データ画像に対して検証チェックが実施され得る。72に示す段階で、システムは依然として、新規データ画像が正しくロードしなかった場合のフェールセーフが破損され、あるいは使用できないとき、古い方のブートローダ部分15a、15bからブートする。新規データ画像がロードされる(かつ、任意選択で認証される)と、74に示す状態において、古いブートローダ、または少なくともその初期部分が消去され得る。具体的には、ブートローダ15aの古いプリアンブル5、古い画像ヘッダ12または初期部分のうちの少なくとも1つが消去される場合、古いブートローダは、それらの要素を探している一次ブートローダによってスキップされる。74に示す第2のブロックが、消去されるものとして示されていない場合、そのブロックは、次のステップに進む前に消去されてよい。その後、76に示す状態において、システムは次いで、段階72であらかじめ記憶された新規データ画像とほとんど同一である新規データ画像をもつ第1のブロックを記憶する。したがって、段階76で、新規データ画像は第1のブロックをマーキングする際にエラーがあった場合に、バックアップとして働くNANDデバイス上の2つの場所で見つけられ得る。初期ブロック中のデータ画像が認証されると、改訂する方法は完結してよい。より新しいデータ画像の第2のコピーは、バックアップとしてNANDデバイス上に残され得る。代替として、方法は次いで、さらに78に示す状態において、新規データ画像の第2のコピーを、72に示す状態においてマーキングされた良好ブロックから消去してよい。
図7において、対象データ画像に関連しない様々なブロックは、「消去済み」と示される。ただし、それらのブロックは、ブランクである必要も、消去済みである必要もない。本明細書の態様によると、方法はプリアンブルおよび仮想境界コードを使って、ブートローダのサイズおよびロケーションを判断することができ、したがって「消去済み」と明記されたブロックは、ブートローダ画像に関係しないデータブロックを示すことを意図している。
図8は、リードライトメモリ上のデータ画像を書き換える態様方法800を示す。ブロック810で、リードライトメモリの少なくとも1つの第1の仮想ブロック中で、初期データ画像がアクセスされる。少なくとも1つの第1の仮想ブロックは、複数の第1の仮想ブロックを含み得る。ブロック820で、方法は、リードライトメモリ中で利用可能な少なくとも1つの第2の仮想ブロックを求めて、少なくとも1つの第1の仮想ブロックを前方走査する。したがって、少なくとも1つの第1の仮想ブロックが複数の仮想ブロックを含んでいた場合、方法800で定義される「第2の仮想ブロック」は、それらの先行する第1の仮想ブロックに続くことになる。ブロック830で、新規データ画像の第1の部分が、第2の仮想ブロック中に記憶される。ブロック840で、方法は、第2の仮想ブロックから第3の仮想ブロックまで前方走査する。第3の仮想ブロックが位置特定されると、850で、新規データ画像の第2の部分が第3の仮想ブロック中に記憶される。ブロック860は、少なくとも1つの第1の仮想ブロックの少なくとも一部分内の初期データ画像を消去することを含む。初期データ画像全体またはその一部分が、ブロック860で消去され得る。たとえば、ブロック860で、初期データ画像が、複数の第1の仮想ブロックから消去され得る。870で、VBCを含む新規データ画像の第1の部分および第2の部分が、少なくとも1つの第1の仮想ブロック中に記憶される。ブロック880で、新規データ画像の第1の部分は、第2の仮想ブロックから消去される。ブロック890で、新規データ画像の第2の部分は、第3の仮想ブロックから消去される。
プリアンブルブロックが、様々なデバイス特性を導出するために使われ得る。有効なプリアンブルブロックが最初に見つからない場合、プロセスは有効なものを見つけようとして、ブロックを横断し続けてよい。プリアンブルブロックは、フラッシュ読出しコマンドの一部として読み取られたブロックの初期バイト(たとえば、最初の12バイト)中で、仮想境界コードなど、特定のコードをチェックすることによって検出され得る。開示する態様によると、汎用NANDデバイス幅操作技法が望ましい場合がある。そのようなものとして指定されてきた検出仮想ブロックをカウントするためのアルゴリズムが使われ得る。この技法を使って、仮想ブロックカウントが取得されない場合、プロセスは二次ブートローダが見つからなかったと結論づけて終了してよい。または、このように、仮想境界コードは仮想ブロックおよびNANDデバイス自体のサイズを判断するのに使われ得る。また、ECC検出およびページサイズ検出は、本明細書で開示した方法の一部として実装され得る。たとえば、自動ページサイズ検出アルゴリズムは、どのくらいの量のページがデバイス上にあるかを判断する、したがってそのページサイズを判断するために、特定の仮想境界コードでマーキングされたページの数を読み取ることができる。
さらに、様々な実施形態は、様々なモバイルコンピューティングデバイスにおいて、および/またはそれらのいずれかとともに実装することができ、その例を、携帯電話の形で図9に示す。典型的なモバイルコンピューティングデバイス900は、図9に示された構成要素を共通に有する。たとえば、モバイルコンピューティングデバイス900は、内部メモリ902および、たとえば抵抗検知タッチスクリーン904、容量検知タッチスクリーン、赤外線検知タッチスクリーン、音響/圧電性検知タッチスクリーンなどのタッチ面入力デバイス/ディスプレイ903に結合されたプロセッサ901を含み得る。モバイルコンピューティングデバイス900は、プロセッサ901に結合されたワイヤレスデータリンクおよび/または携帯電話送受信機920に接続された、電磁放射を送受信するための無線/アンテナ906を有する場合がある。モバイルコンピューティングデバイス900は、デバイスのロケーションを判断するための、プロセッサ901に結合されたGPS受信機も含み得る。モバイルコンピューティングデバイス900はまた、ユーザ入力を受信するための物理ボタン908を含むことができる。
様々な実施形態は、タブレットコンピュータなど、様々なコンピューティングデバイスにおいて、および/またはそれらのうちのいずれかとともに実装することができ、その例を図10に示す。たとえば、ワイヤレスデバイス1000は、内部メモリ1004および1006に結合されたプロセッサ1002を含み得る。内部メモリ1004および1006は、揮発性メモリまたは不揮発性メモリであってもよく、また、セキュアメモリおよび/もしくは暗号化メモリ、または非セキュアメモリおよび/もしくは非暗号化メモリ、またはそれらの任意の組合せであってもよい。プロセッサ1002は、タッチスクリーンディスプレイ1016(たとえば、抵抗検知タッチスクリーン、容量検知タッチスクリーン、赤外線検知タッチスクリーンなど)、または従来のボタン(たとえば、1012aおよび1012b)ならびに非タッチスクリーンディスプレイなどのユーザインターフェースにも結合され得る。さらに、ワイヤレスデバイス1000は、プロセッサ1002が1つまたは複数の有線ネットワークまたはワイヤレスネットワークを介して他のコンピューティングデバイスと通信することを可能にするように構成された1つまたは複数のネットワークトランシーバを含み得る。具体例として、ワイヤレスデバイス1000のネットワークトランシーバは、プロセッサ1002に結合された1つまたは複数のワイヤレスデータリンクトランシーバおよび/または携帯電話トランシーバ1010に接続され得る、電磁放射を送受信するための1つまたは複数のアンテナ1018を含み得る。ワイヤレスデバイス1000はまた、ユーザ入力を受信するための物理ボタン1012aおよび1012bを含み得る。
上記で説明した様々な実施形態はまた、図11に示すラップトップコンピュータ1100などの様々なパーソナルコンピューティングデバイス内に、および/またはそれらとともに実装され得る。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1107を含み、したがって、タッチスクリーンディスプレイを備える上述のモバイルコンピューティングデバイスに実装されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受信することができる。ラップトップコンピュータ1100は通常、揮発性メモリと、フラッシュメモリデバイス1102のような大容量の不揮発性メモリとに結合されたプロセッサ1101を含む。ラップトップコンピュータ1100はまた、プロセッサ1101に結合されたフロッピー(登録商標)ディスクドライブおよびコンパクトディスク(CD)ドライブを含み得る。ラップトップコンピュータ1100は、プロセッサ1101が、1つまたは複数の有線ネットワークまたはワイヤレスネットワークを介して他のコンピューティングデバイスと通信することを可能にするように構成された、プロセッサ1101に結合されたいくつかのネットワークトランシーバまたはネットワークコネクタポートも含み得る。具体例として、ラップトップコンピュータ1100のネットワークトランシーバは、イーサネット(登録商標)、USBまたはファイアワイヤ(登録商標)コネクタソケット/トランシーバ、電磁放射を送受信するための1つまたは複数のアンテナに結合されたWi-Fiおよび/またはセルラーデータネットワークトランシーバなどの1つまたは複数のワイヤレスモデムトランシーバを含み得る。ラップトップコンピュータ1100は、プロセッサ1101を、将来開発され得るネットワークに結合するための他のタイプのネットワーク接続回路も含み得る。ノートブック構成では、コンピュータのハウジングはタッチパッドタッチ面1107、キーボード1108、およびディスプレイ1109を含み、すべてはプロセッサ1101に結合される。コンピューティングデバイスの他の構成はよく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでよく、それらはまた、様々な実施形態とともに使用され得る。
本明細書で説明する様々な実施形態におけるプロセッサは、上記で説明した様々な実施形態の機能を含む、様々な機能を実施するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。いくつかのデバイスでは、1つのプロセッサをワイヤレス通信機能専用とし、1つのプロセッサを他のアプリケーションの稼働専用とするなど、複数のプロセッサが設けられてもよい。典型的には、ソフトウェアアプリケーションは、アクセスされプロセッサにロードされる前に、内部メモリに記憶され得る。プロセッサは、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。多くのデバイスでは、内部メモリは、揮発性メモリ、またはフラッシュメモリなどの不揮発性メモリ、または両方の組合せであり得る。本明細書では、メモリへの一般的な言及は、内部メモリまたはデバイスに差し込まれるリムーバブルメモリと、プロセッサ自体の内部のメモリとを含む、プロセッサによってアクセス可能なメモリを指す。
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な実施形態のブロックが提示された順序で実施されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の実施形態におけるブロックの順序は、任意の順序で実施することができる。
「その後」、「次いで」、「次に」などの用語は、ブロックの順序を限定するものではなく、これらの用語は、単に方法の説明を通して読者を案内するために使用されているにすぎない。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形での請求要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
本明細書で開示する実施形態に関して説明する様々な例示的論理ブロックおよびプロセスフロー図は、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびブロックを、上記では概してそれらの機能性に関して説明した。そのような機能性をハードウェアとして実装するか、またはソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計の制約に依存する。当業者は、説明した機能性を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
本明細書で開示した実施形態に関して説明した様々な例示的論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実施するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。代替的に、いくつかのブロックまたは方法が、所与の機能に固有の回路によって実施され得る。
1つまたは複数の例示的な態様では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装することができる。その機能はソフトウェアで実装される場合、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体に記憶され得る。本明細書で開示された方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に常駐し得るプロセッサ実行可能ソフトウェアモジュール内で具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形式で所望のプログラムコードを記憶するために使用され、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は通常、磁気的にデータを再生し、ディスク(disc)はレーザーで光学的にデータを再生する。上記の組合せも非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の、1つまたは任意の組合せ、またはそのセットとして存在し得る。
同じ基本的根底をなす機構および方法を依然として使用する一方、開示される実施形態の態様の多くの可能な変更および組合せが使用できることを、当業者は認識されよう。上記の記述は説明の目的で、特定の実施形態を参照しながら記述されてきた。しかしながら、上で示した論述はすべてを網羅するものでも、あるいは本開示を開示された厳密な形態に限定するものでもない。多くの修正および変形が、上記の教示に鑑みて可能である。本開示の原理およびその実際の適用について説明するために、また企図される特定の用途に合わせて様々な修正を加え、本開示および様々な実施形態を他の当業者が最善の形で利用できるように、実施形態が選択され、説明されている。したがって本開示は、本明細書に示し記載した、開示した技術の実施形態および個々の態様に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示した原理および新規の特徴に一致する最大の範囲を与えられるものである。
5 プリアンブル
5' 新規プリアンブル
10 メモリコード
10' 新規プリアンブルメモリコード
12 画像ヘッダ
12' 新規画像ヘッダ
14 仮想境界コード
14' 新規VBC
15 ブートローダ、BL
15a ブートローダの第1の部分、第1のブートローダ部分
15a' ブートローダ部分
15b ブートローダの第2の部分、第2のブートローダ部分
15b' ブートローダ部分
15c BLの第3の部分
16 証明書
18 パディング
100 NANDデバイス
900 モバイルコンピューティングデバイス
901 プロセッサ
902 内部メモリ
903 ディスプレイ
904 抵抗検知タッチスクリーン
906 無線/アンテナ
908 物理ボタン
920 ワイヤレスデータリンク、携帯電話送受信機
1000 ワイヤレスデバイス
1002 プロセッサ
1004 内部メモリ
1006 内部メモリ
1016 タッチスクリーンディスプレイ
1018 アンテナ
1012a 物理ボタン
1012b 物理ボタン
1100 ラップトップコンピュータ
1101 プロセッサ
1102 フラッシュメモリデバイス
1107 タッチ面
1108 キーボード
1109 ディスプレイ

Claims (68)

  1. リードライトメモリデバイス上でデータ画像を記憶する方法であって、
    第1のリードライトメモリデバイスによって指定された、一連の仮想ブロックの仮想ブロックサイズに基づいて、データ画像の配置を判断するステップであって、前記第1のリードライトメモリデバイスが一連の実ブロックを含むステップと、
    データ画像の第1部分に仮想境界コードを付加するステップであって、前記仮想境界コードが、前記データ画像の第1部分を位置特定するためのマーカを表すステップと、
    前記仮想境界コードが付加された前記データ画像の第1部分を、前記第1のリードライトメモリデバイス上の、前記一連の仮想ブロックのうちのある仮想ブロック中に記憶するステップとを含む方法。
  2. 前記仮想境界コードが、前記データ画像の第1部分の始端において付加される、請求項1に記載の方法。
  3. 前記一連の実ブロックの各々のサイズが、剰余なしで、前記仮想ブロックサイズで割り切れる、請求項1に記載の方法。
  4. 前記第1のリードライトメモリデバイス上の前記一連の仮想ブロックのうちの別の仮想ブロック中にデータ画像の第2部分を記憶するステップであって、前記データ画像が、前記データ画像の第1部分および前記データ画像の第2部分を含む複数の部分に分割されるステップをさらに含む、請求項1に記載の方法。
  5. 前記第1のリードライトメモリデバイス内の不良ブロックが、前記データ画像の第1部分と前記データ画像の第2部分との間で位置特定される、請求項4に記載の方法。
  6. 前記データ画像の第1部分および前記データ画像の第2部分が、前記第1のリードライトメモリデバイス上の前記一連の実ブロックのうちの共有実ブロック中に記憶される、請求項4に記載の方法。
  7. 前記データ画像の第2部分が、前記第1のリードライトメモリデバイスのブロック0を占有する、請求項4に記載の方法。
  8. 前記データ画像の第2部分が、前記第1のリードライトメモリデバイス上の前記仮想境界コードの位置、および前記データ画像のサイズのうちの少なくとも1つに関する情報を有する画像ヘッダを含む、請求項4に記載の方法。
  9. データ画像の第3部分に前記仮想境界コードを付加するステップと、
    前記仮想境界コードが付加された前記データ画像の第3部分を、前記一連の仮想ブロックのうちの第3の仮想ブロック中に記憶するステップとをさらに含む、請求項4に記載の方法。
  10. 前記仮想境界コードが付加された前記データ画像の第1部分を、第2のリードライトメモリデバイス上の仮想ブロック中に記憶するステップであって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なるステップをさらに含む、請求項1に記載の方法。
  11. リードライトメモリデバイス上にデータ画像を記憶するためのコンピューティングデバイスであって、
    メモリと、
    前記メモリに結合され、動作を実施するためのプロセッサ実行可能命令によって構成されたプロセッサとを備え、前記動作が、
    第1のリードライトメモリデバイスによって指定された、一連の仮想ブロックの仮想ブロックサイズに基づいて、データ画像の配置を判断することであって、前記第1のリードライトメモリデバイスが一連の実ブロックを含むこと、
    データ画像の第1部分に仮想境界コードを付加することであって、前記仮想境界コードが、前記データ画像の第1部分を位置特定するためのマーカを表すこと、および
    前記仮想境界コードが付加された前記データ画像の第1部分を、前記第1のリードライトメモリデバイス上の、前記一連の仮想ブロックのうちのある仮想ブロック中に記憶することを含む、コンピューティングデバイス。
  12. 前記プロセッサが、前記仮想境界コードが前記データ画像の第1部分の始端において付加されるような動作を実施するためのプロセッサ実行可能命令によって構成される、請求項11に記載のコンピューティングデバイス。
  13. 前記プロセッサが、前記一連の実ブロックの各々のサイズが、剰余なしで、前記仮想ブロックサイズで割り切れるような動作を実施するためのプロセッサ実行可能命令によって構成される、請求項11に記載のコンピューティングデバイス。
  14. 前記プロセッサが、
    前記第1のリードライトメモリデバイス上の前記一連の仮想ブロックのうちの別の仮想ブロック中にデータ画像の第2部分を記憶することであって、前記データ画像が、前記データ画像の第1部分および前記データ画像の第2部分を含む複数の部分に分割されることをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項11に記載のコンピューティングデバイス。
  15. 前記プロセッサが、前記第1のリードライトメモリデバイス内の不良ブロックが前記データ画像の第1部分と前記データ画像の第2部分との間に位置特定されるような動作を実施するためのプロセッサ実行可能命令によって構成される、請求項14に記載のコンピューティングデバイス。
  16. 前記プロセッサが、前記データ画像の第1部分および前記データ画像の第2部分が、前記第1のリードライトメモリデバイス上の前記一連の実ブロックのうちの共有実ブロック中に記憶されるような動作を実施するためのプロセッサ実行可能命令によって構成される、請求項14に記載のコンピューティングデバイス。
  17. 前記プロセッサが、前記データ画像の第2部分が前記第1のリードライトメモリデバイスのブロック0を占有するような動作を実施するためのプロセッサ実行可能命令によって構成される、請求項14に記載のコンピューティングデバイス。
  18. 前記プロセッサが、前記データ画像の第2部分が前記第1のリードライトメモリデバイス上の前記仮想境界コードの位置、および前記データ画像のサイズのうちの少なくとも1つに関する情報を有する画像ヘッダを含むような動作を実施するためのプロセッサ実行可能命令によって構成される、請求項14に記載のコンピューティングデバイス。
  19. 前記プロセッサが、
    データ画像の第3部分に前記仮想境界コードを付加すること、
    前記仮想境界コードが付加された前記データ画像の第3部分を、前記一連の仮想ブロックのうちの第3の仮想ブロック中に記憶することをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項14に記載のコンピューティングデバイス。
  20. 前記プロセッサが、
    前記仮想境界コードが付加された前記データ画像の第1部分を、第2のリードライトメモリデバイス上の仮想ブロック中に記憶することであって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なることをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項11に記載のコンピューティングデバイス。
  21. リードライトメモリデバイス上にデータ画像を記憶するためのコンピューティングデバイスであって、
    第1のリードライトメモリデバイスによって指定された、一連の仮想ブロックの仮想ブロックサイズに基づいて、データ画像の配置を判断するための手段であって、前記第1のリードライトメモリデバイスが一連の実ブロックを含む、手段と、
    データ画像の第1部分に仮想境界コードを付加するための手段であって、前記仮想境界コードが、前記データ画像の第1部分を位置特定するためのマーカを表す、手段と、
    前記仮想境界コードが付加された前記データ画像の第1部分を、前記第1のリードライトメモリデバイス上の、前記一連の仮想ブロックのうちのある仮想ブロック中に記憶するための手段とを備えるコンピューティングデバイス。
  22. 前記仮想境界コードが、前記データ画像の第1部分の始端において付加される、請求項21に記載のコンピューティングデバイス。
  23. 前記一連の実ブロックの各々のサイズが、剰余なしで、前記仮想ブロックサイズで割り切れる、請求項21に記載のコンピューティングデバイス。
  24. 前記第1のリードライトメモリデバイス上の前記一連の仮想ブロックのうちの別の仮想ブロック中にデータ画像の第2部分を記憶するための手段であって、前記データ画像が、前記データ画像の第1部分および前記データ画像の第2部分を含む複数の部分に分割される手段をさらに備える、請求項21に記載のコンピューティングデバイス。
  25. 前記第1のリードライトメモリデバイス内の不良ブロックが、前記データ画像の第1部分と前記データ画像の第2部分との間で位置特定される、請求項24に記載のコンピューティングデバイス。
  26. 前記データ画像の第1部分および前記データ画像の第2部分が、前記第1のリードライトメモリデバイス上の前記一連の実ブロックのうちの共有実ブロック中に記憶される、請求項24に記載のコンピューティングデバイス。
  27. 前記データ画像の第2部分が、前記第1のリードライトメモリデバイスのブロック0を占有する、請求項24に記載のコンピューティングデバイス。
  28. 前記データ画像の第2部分が、前記第1のリードライトメモリデバイス上の前記仮想境界コードの位置、および前記データ画像のサイズのうちの少なくとも1つに関する情報を有する画像ヘッダを含む、請求項24に記載のコンピューティングデバイス。
  29. データ画像の第3部分に前記仮想境界コードを付加するための手段と、
    前記仮想境界コードが付加された前記データ画像の第3部分を、前記一連の仮想ブロックのうちの第3の仮想ブロック中に記憶するための手段とをさらに備える、請求項24に記載のコンピューティングデバイス。
  30. 前記仮想境界コードが付加された前記データ画像の第1部分を、第2のリードライトメモリデバイス上の仮想ブロック中に記憶するための手段であって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なる手段をさらに備える、請求項21に記載のコンピューティングデバイス。
  31. メモリを有するコンピューティングデバイス上のメモリを管理するための動作をプロセッサに実施させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
    第1のリードライトメモリデバイスによって指定された、一連の仮想ブロックの仮想ブロックサイズに基づいて、データ画像の配置を判断することであって、前記第1のリードライトメモリデバイスが一連の実ブロックを含むこと、
    データ画像の第1部分に仮想境界コードを付加することであって、前記仮想境界コードが、前記データ画像の第1部分を位置特定するためのマーカを表すこと、および
    前記仮想境界コードが付加された前記データ画像の第1部分を、前記第1のリードライトメモリデバイス上の、前記一連の仮想ブロックのうちのある仮想ブロック中に記憶することを含む、非一時的コンピュータ可読記憶媒体。
  32. 前記記憶されたプロセッサ実行可能命令が、前記仮想境界コードが、前記データ画像の第1部分の始端において付加されるような動作をプロセッサに実施させるように構成される、請求項31に記載の非一時的コンピュータ可読記憶媒体。
  33. 前記記憶されたプロセッサ実行可能命令が、前記一連の実ブロックの各々のサイズが、剰余なしで、前記仮想ブロックサイズで割り切れるような動作をプロセッサに実施させるように構成される、請求項31に記載の非一時的コンピュータ可読記憶媒体。
  34. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記第1のリードライトメモリデバイス上の前記一連の仮想ブロックのうちの別の仮想ブロック中にデータ画像の第2部分を記憶することであって、データ画像が、前記データ画像の第1部分および前記データ画像の第2部分を含む複数の部分に分割されることをさらに含む動作をプロセッサに実施させるように構成される、請求項31に記載の非一時的コンピュータ可読記憶媒体。
  35. 前記記憶されたプロセッサ実行可能命令が、前記第1のリードライトメモリデバイス内の不良ブロックが前記データ画像の第1部分と前記データ画像の第2部分との間に位置特定されるような動作をプロセッサに実施させるように構成される、請求項34に記載の非一時的コンピュータ可読記憶媒体。
  36. 前記記憶されたプロセッサ実行可能命令が、前記データ画像の第1部分および前記データ画像の第2部分が、前記第1のリードライトメモリデバイス上の前記一連の実ブロックのうちの共有実ブロック中に記憶されるような動作をプロセッサに実施させるように構成される、請求項34に記載の非一時的コンピュータ可読記憶媒体。
  37. 前記記憶されたプロセッサ実行可能命令が、前記データ画像の第2部分が前記第1のリードライトメモリデバイスのブロック0を占有するような動作をプロセッサに実施させるように構成される、請求項34に記載の非一時的コンピュータ可読記憶媒体。
  38. 前記記憶されたプロセッサ実行可能命令が、前記データ画像の第2部分が、前記第1のリードライトメモリデバイス上の前記仮想境界コードの位置、および前記データ画像のサイズのうちの少なくとも1つに関する情報を有する画像ヘッダを含むような動作をプロセッサに実施させるように構成される、請求項34に記載の非一時的コンピュータ可読記憶媒体。
  39. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    データ画像の第3部分に前記仮想境界コードを付加すること、および
    前記仮想境界コードが付加された前記データ画像の第3部分を、前記一連の仮想ブロックのうちの第3の仮想ブロック中に記憶することをさらに含む動作をプロセッサに実施させるように構成される、請求項34に記載の非一時的コンピュータ可読記憶媒体。
  40. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記仮想境界コードが付加された前記データ画像の第1部分を、第2のリードライトメモリデバイス上の仮想ブロック中に記憶することであって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なることをさらに含む動作をプロセッサに実施させるように構成される、請求項31に記載の非一時的コンピュータ可読記憶媒体。
  41. リードライトメモリデバイスからデータ画像を読み取る方法であって、
    第1のリードライトメモリデバイスの第1の仮想ブロック内の第1のデータにアクセスするステップであって、前記第1のリードライトメモリデバイスの実ブロックサイズが、剰余なしで、仮想ブロックサイズで割り切れる、ステップと、
    前記第1の仮想ブロックに続く第2の仮想ブロックの第2の仮想ブロック境界を指定する仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査するステップと、
    前記第2の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第2の仮想ブロック内の第2のデータにアクセスするステップと、
    前記第1のデータおよび前記第2のデータに基づいて、第1のデバイスのデータ画像を読み取るステップとを含む方法。
  42. 前記第1のデータおよび前記第2のデータが前記データ画像の完全な画像を含まないと判断したことに応答して、前記第2の仮想ブロックに続く第3の仮想ブロックの第3の仮想ブロック境界を指定する前記仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査するステップと、
    前記第3の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第3の仮想ブロック内の第3のデータにアクセスするステップと、
    前記第3のデータにさらに基づいて、前記データ画像を読み取るステップとをさらに含む、請求項41に記載の方法。
  43. 前記第1のデータおよび前記第2のデータに基づいてブートローダを実行するステップをさらに含む、請求項41に記載の方法。
  44. 前記仮想境界コードが前記実ブロック中で検出されないことに応答して、前記第1の仮想ブロックに続く、前記第1のリードライトメモリデバイスの実ブロックをスキップするステップをさらに含む、請求項41に記載の方法。
  45. 前記仮想境界コードが中間距離において検出されないことに応答して、前記第1の仮想ブロックのサイズに対応する、前記第1のリードライトメモリデバイス上の前記中間距離をスキップするステップをさらに含む、請求項41に記載の方法。
  46. 前記第1の仮想ブロック内の前記第1のデータ中に含まれるヘッダ情報を走査するステップと、
    前記ヘッダ情報に基づいて、前記データ画像のサイズおよび前記仮想ブロックのサイズのうち少なくとも1つを判断するステップとをさらに含む、請求項45に記載の方法。
  47. 第2のリードライトメモリデバイスの第3の仮想ブロック内の第3のデータにアクセスするステップであって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なる、ステップと、
    前記仮想境界コードを求めて、前記第2のリードライトメモリデバイスを走査するステップと、
    前記仮想境界コードを認識したことに応答して、前記第2のリードライトメモリデバイスの第4の仮想ブロック内の第4のデータにアクセスするステップと、
    前記第3のデータおよび前記第4のデータに基づいて、第2のデバイスのデータ画像を読み取るステップとをさらに含む、請求項41に記載の方法。
  48. コンピューティングデバイスであって、
    メモリと、
    前記メモリに結合され、動作を実施するためのプロセッサ実行可能命令によって構成されたプロセッサとを備え、前記動作が、
    第1のリードライトメモリデバイスの第1の仮想ブロック内の第1のデータにアクセスすることであって、前記第1のリードライトメモリデバイスの実ブロックサイズが、剰余なしで、仮想ブロックサイズで割り切れること、
    前記第1の仮想ブロックに続く第2の仮想ブロックの第2の仮想ブロック境界を指定する仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査すること、
    前記第2の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第2の仮想ブロック内の第2のデータにアクセスすること、ならびに
    前記第1のデータおよび前記第2のデータに基づいて、第1のデバイスのデータ画像を読み取ることを含む、コンピューティングデバイス。
  49. 前記プロセッサが、
    前記第1のデータおよび前記第2のデータがデータ画像の完全な画像を含まないと判断したことに応答して、前記第2の仮想ブロックに続く第3の仮想ブロックの第3の仮想ブロック境界を指定する前記仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査すること、
    前記第3の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第3の仮想ブロック内の第3のデータにアクセスすること、ならびに
    前記第3のデータにさらに基づいて、前記データ画像を読み取ることをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項48に記載のコンピューティングデバイス。
  50. 前記プロセッサが、前記第1のデータおよび前記第2のデータに基づいてブートローダを実行することをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項48に記載のコンピューティングデバイス。
  51. 前記プロセッサが、
    前記仮想境界コードが前記実ブロック中で検出されないことに応答して、前記第1の仮想ブロックに続く、前記第1のリードライトメモリデバイスの実ブロックをスキップすることをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項48に記載のコンピューティングデバイス。
  52. 前記プロセッサが、
    前記仮想境界コードが中間距離において検出されないことに応答して、前記第1の仮想ブロックのサイズに対応する、前記第1のリードライトメモリデバイス上の前記中間距離をスキップすることをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項48に記載のコンピューティングデバイス。
  53. 前記プロセッサが、
    前記第1の仮想ブロック内の前記第1のデータ中に含まれるヘッダ情報を走査すること、ならびに
    前記ヘッダ情報に基づいて、前記データ画像のサイズおよび前記仮想ブロックのサイズのうち少なくとも1つを判断することをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項52に記載のコンピューティングデバイス。
  54. 前記プロセッサが、
    第2のリードライトメモリデバイスの第3の仮想ブロック内の第3のデータにアクセスすることであって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なること、
    前記仮想境界コードを求めて、前記第2のリードライトメモリデバイスを走査すること、
    前記仮想境界コードを認識したことに応答して、前記第2のリードライトメモリデバイスの第4の仮想ブロック内の第4のデータにアクセスすること、ならびに
    前記第3のデータおよび前記第4のデータに基づいて、第2のデバイスのデータ画像を読み取ることをさらに含む動作を実施するためのプロセッサ実行可能命令によって構成される、請求項48に記載のコンピューティングデバイス。
  55. リードライトメモリデバイスからデータ画像を読み取るためのコンピューティングデバイスであって、
    第1のリードライトメモリデバイスの第1の仮想ブロック内の第1のデータにアクセスするための手段であって、前記第1のリードライトメモリデバイスの実ブロックサイズが、剰余なしで、仮想ブロックサイズで割り切れる、手段と、
    前記第1の仮想ブロックに続く第2の仮想ブロックの第2の仮想ブロック境界を指定する仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査するための手段と、
    前記第2の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第2の仮想ブロック内の第2のデータにアクセスするための手段と、
    前記第1のデータおよび前記第2のデータに基づいて、第1のデバイスのデータ画像を読み取るための手段とを備えるコンピューティングデバイス。
  56. 前記第1のデータおよび前記第2のデータが前記データ画像の完全な画像を含まないと判断したことに応答して、前記第2の仮想ブロックに続く第3の仮想ブロックの第3の仮想ブロック境界を指定する前記仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査するための手段と、
    前記第3の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第3の仮想ブロック内の第3のデータにアクセスするための手段と、
    前記第3のデータにさらに基づいて、前記データ画像を読み取るための手段とをさらに備える、請求項55に記載のコンピューティングデバイス。
  57. 前記第1のデータおよび前記第2のデータに基づいてブートローダを実行するための手段をさらに備える、請求項55に記載のコンピューティングデバイス。
  58. 前記仮想境界コードが前記実ブロック中で検出されないことに応答して、前記第1の仮想ブロックに続く、前記第1のリードライトメモリデバイスの実ブロックをスキップするための手段をさらに備える、請求項55に記載のコンピューティングデバイス。
  59. 前記仮想境界コードが中間距離において検出されないことに応答して、前記第1の仮想ブロックのサイズに対応する、前記第1のリードライトメモリデバイス上の前記中間距離をスキップするための手段をさらに備える、請求項55に記載のコンピューティングデバイス。
  60. 前記第1の仮想ブロック内の前記第1のデータ中に含まれるヘッダ情報を走査するための手段と、
    前記ヘッダ情報に基づいて、前記データ画像のサイズおよび前記仮想ブロックのサイズのうち少なくとも1つを判断するための手段とをさらに備える、請求項59に記載のコンピューティングデバイス。
  61. 第2のリードライトメモリデバイスの第3の仮想ブロック内の第3のデータにアクセスするための手段であって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なる、手段と、
    前記仮想境界コードを求めて、前記第2のリードライトメモリデバイスを走査するための手段と、
    前記仮想境界コードを認識したことに応答して、前記第2のリードライトメモリデバイスの第4の仮想ブロック内の第4のデータにアクセスするための手段と、
    前記第3のデータおよび前記第4のデータに基づいて、第2のデバイスのデータ画像を読み取るための手段とをさらに備える、請求項55に記載のコンピューティングデバイス。
  62. メモリを有するコンピューティングデバイス上のメモリを読み取るための動作をプロセッサに実施させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
    第1のリードライトメモリデバイスの第1の仮想ブロック内の第1のデータにアクセスすることであって、前記第1のリードライトメモリデバイスの実ブロックサイズが、剰余なしで、仮想ブロックサイズで割り切れること、
    前記第1の仮想ブロックに続く第2の仮想ブロックの第2の仮想ブロック境界を指定する仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査すること、
    前記第2の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第2の仮想ブロック内の第2のデータにアクセスすること、ならびに
    前記第1のデータおよび前記第2のデータに基づいて、第1のデバイスのデータ画像を読み取ることを含む、非一時的コンピュータ可読記憶媒体。
  63. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記第1のデータおよび前記第2のデータがデータ画像の完全な画像を含まないと判断したことに応答して、前記第2の仮想ブロックに続く第3の仮想ブロックの第3の仮想ブロック境界を指定する前記仮想境界コードを求めて、前記第1のリードライトメモリデバイスを走査すること、
    前記第3の仮想ブロック中の前記仮想境界コードを認識したことに応答して、前記第3の仮想ブロック内の第3のデータにアクセスすること、ならびに
    前記第3のデータにさらに基づいて、前記データ画像を読み取ることをさらに含む動作をプロセッサに実施させるように構成される、請求項62に記載の非一時的コンピュータ可読記憶媒体。
  64. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記第1のデータおよび前記第2のデータに基づいてブートローダを実行することをさらに含む動作をプロセッサに実施させるように構成される、請求項62に記載の非一時的コンピュータ可読記憶媒体。
  65. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記仮想境界コードが前記実ブロック中で検出されないことに応答して、前記第1の仮想ブロックに続く、前記第1のリードライトメモリデバイスの実ブロックをスキップすることをさらに含む動作をプロセッサに実施させるように構成される、請求項62に記載の非一時的コンピュータ可読記憶媒体。
  66. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記仮想境界コードが中間距離において検出されないことに応答して、前記第1の仮想ブロックのサイズに対応する、前記第1のリードライトメモリデバイス上の前記中間距離をスキップすることをさらに含む動作をプロセッサに実施させるように構成される、請求項62に記載の非一時的コンピュータ可読記憶媒体。
  67. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記第1の仮想ブロック内の前記第1のデータ中に含まれるヘッダ情報を走査すること、ならびに
    前記ヘッダ情報に基づいて、データ画像のサイズおよび前記仮想ブロックのサイズのうち少なくとも1つを判断することをさらに含む動作をプロセッサに実施させるように構成される、請求項66に記載の非一時的コンピュータ可読記憶媒体。
  68. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    第2のリードライトメモリデバイスの第3の仮想ブロック内の第3のデータにアクセスすることであって、ページ、ブロックおよびデバイス固有の不良ブロックアルゴリズム特性のうちの少なくとも1つが、前記第1のリードライトメモリデバイスと前記第2のリードライトメモリデバイスとの間で異なること、
    前記仮想境界コードを求めて、前記第2のリードライトメモリデバイスを走査すること、
    前記仮想境界コードを認識したことに応答して、前記第2のリードライトメモリデバイスの第4の仮想ブロック内の第4のデータにアクセスすること、ならびに
    前記第3のデータおよび前記第4のデータに基づいて、第2のデバイスのデータ画像を読み取ることをさらに含む動作をプロセッサに実施させるように構成される、請求項62に記載の非一時的コンピュータ可読記憶媒体。
JP2015549390A 2012-12-19 2013-11-07 リードライトメモリデバイスのデータイメージ中の仮想境界コード Expired - Fee Related JP6157637B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/720,532 2012-12-19
US13/720,532 US9442840B2 (en) 2012-12-19 2012-12-19 Virtual boundary codes in a data image of a read-write memory device
PCT/US2013/068939 WO2014099169A1 (en) 2012-12-19 2013-11-07 Virtual boundary codes in a data image of a read-write memory device

Publications (3)

Publication Number Publication Date
JP2016501417A true JP2016501417A (ja) 2016-01-18
JP2016501417A5 JP2016501417A5 (ja) 2016-12-22
JP6157637B2 JP6157637B2 (ja) 2017-07-05

Family

ID=49759531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015549390A Expired - Fee Related JP6157637B2 (ja) 2012-12-19 2013-11-07 リードライトメモリデバイスのデータイメージ中の仮想境界コード

Country Status (6)

Country Link
US (1) US9442840B2 (ja)
EP (1) EP2936295A1 (ja)
JP (1) JP6157637B2 (ja)
KR (1) KR20150096782A (ja)
CN (1) CN104885052B (ja)
WO (1) WO2014099169A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015220485A1 (de) * 2015-10-21 2017-04-27 Robert Bosch Gmbh Verfahren zum Schreiben und Lesen eines Datensatzes
US10223018B2 (en) * 2017-04-19 2019-03-05 Sandisk Technologies Llc Bad page and bad block management in memory
US10515701B1 (en) * 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
CN109992197B (zh) * 2017-12-29 2022-08-26 苏州迈瑞微电子有限公司 一种数据读写方法、装置、电子设备和存储介质
EP3791306B1 (en) * 2018-05-11 2023-08-30 Lattice Semiconductor Corporation Asset management systems and methods for programmable logic devices
WO2020083108A1 (en) 2018-10-23 2020-04-30 Mediatek Inc. Method and apparatus for reduction of in-loop filter buffer
CN111275657A (zh) * 2018-11-20 2020-06-12 华为技术有限公司 虚焦检测方法、设备及计算机可读介质
WO2020256467A1 (ko) * 2019-06-19 2020-12-24 한국전자통신연구원 비디오 영상 부/복호화를 위한 가상 경계 시그널링 방법 및 장치
US11222120B2 (en) * 2019-11-19 2022-01-11 Dell Products L.P. Storage device firmware bootloader recovery system and method therefor

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265427A (ja) * 1996-03-29 1997-10-07 Sanyo Electric Co Ltd 書換え可能romの記憶方法及び記憶装置
JP2004094628A (ja) * 2002-08-30 2004-03-25 Seiko Epson Corp フラッシュメモリのメモリ書き換え制御システム、メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム
JP2004118407A (ja) * 2002-09-25 2004-04-15 Renesas Technology Corp 不揮発性半導体記憶装置
JP2005339438A (ja) * 2004-05-31 2005-12-08 Tdk Corp メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006039772A (ja) * 2004-07-23 2006-02-09 Toshiba Corp メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
JP2007299249A (ja) * 2006-05-01 2007-11-15 Hagiwara Sys-Com:Kk Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法
WO2008026466A1 (fr) * 2006-08-31 2008-03-06 Sharp Kabushiki Kaisha Système de fichiers
JP2010517131A (ja) * 2007-01-18 2010-05-20 サンディスク アイエル リミテッド フラッシュメモリシステムの高速起動を容易にする方法およびシステム
US20120030691A1 (en) * 2010-07-27 2012-02-02 Qualcomm Innovation Center, Inc. Method and Apparatus for Supporting Diverse Memory Access Schemes
JP2012173778A (ja) * 2011-02-17 2012-09-10 Sony Corp 管理装置、および管理方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4611272A (en) 1983-02-03 1986-09-09 International Business Machines Corporation Key-accessed file organization
US8296467B2 (en) 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
US7136982B2 (en) * 2001-11-09 2006-11-14 Danger, Inc. Apparatus and method for allocating memory blocks
KR100622349B1 (ko) 2004-08-04 2006-09-14 삼성전자주식회사 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법.
KR20060014320A (ko) 2004-08-10 2006-02-15 삼성전자주식회사 다중 부트 로더 코드를 갖는 nand 플래시 메모리를이용한 부트 처리 장치 및 방법
US7313648B2 (en) * 2004-09-30 2007-12-25 Rockwell Automation Technologies, Inc. Corruption tolerant method and system for deploying and modifying data in flash memory
US7454673B2 (en) 2005-07-15 2008-11-18 Kyocera Wireless Corp. Apparatus, system, and method for accessing persistent files in non-execute-in-place flash memory
US20070050675A1 (en) 2005-08-29 2007-03-01 Moxa Technologies Co., Ltd. [method for restoring a booted system]
US7900032B2 (en) 2006-10-06 2011-03-01 Broadcom Corporation Method and system for NAND flash support in autonomously loaded secure reprogrammable system
CN101271429A (zh) * 2007-03-23 2008-09-24 华为技术有限公司 一种数据存储方法及装置
US8332574B2 (en) 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
US7953965B2 (en) 2007-06-15 2011-05-31 Black & Decker Inc. One wire boot loader
US8082384B2 (en) 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
CN101876945B (zh) * 2009-11-24 2012-07-11 西安奇维测控科技有限公司 针对逻辑地址不同数据自动配置虚拟块的方法
US8555050B2 (en) * 2010-07-15 2013-10-08 Broadcom Corporation Apparatus and method thereof for reliable booting from NAND flash memory
CN101930345B (zh) * 2010-08-24 2012-05-02 苏州国芯科技有限公司 一种基于块访问的闪存读写方法
CN102446137B (zh) * 2010-10-08 2015-12-09 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US20140173187A1 (en) 2012-12-19 2014-06-19 Qualcomm Incorporated Virtual boundary codes in a data image of a read-write memory device

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265427A (ja) * 1996-03-29 1997-10-07 Sanyo Electric Co Ltd 書換え可能romの記憶方法及び記憶装置
JP2004094628A (ja) * 2002-08-30 2004-03-25 Seiko Epson Corp フラッシュメモリのメモリ書き換え制御システム、メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム
JP2004118407A (ja) * 2002-09-25 2004-04-15 Renesas Technology Corp 不揮発性半導体記憶装置
JP2005339438A (ja) * 2004-05-31 2005-12-08 Tdk Corp メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006039772A (ja) * 2004-07-23 2006-02-09 Toshiba Corp メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
JP2007299249A (ja) * 2006-05-01 2007-11-15 Hagiwara Sys-Com:Kk Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法
WO2008026466A1 (fr) * 2006-08-31 2008-03-06 Sharp Kabushiki Kaisha Système de fichiers
JP2010517131A (ja) * 2007-01-18 2010-05-20 サンディスク アイエル リミテッド フラッシュメモリシステムの高速起動を容易にする方法およびシステム
US20120030691A1 (en) * 2010-07-27 2012-02-02 Qualcomm Innovation Center, Inc. Method and Apparatus for Supporting Diverse Memory Access Schemes
JP2012173778A (ja) * 2011-02-17 2012-09-10 Sony Corp 管理装置、および管理方法

Also Published As

Publication number Publication date
CN104885052B (zh) 2017-12-05
US20140173179A1 (en) 2014-06-19
EP2936295A1 (en) 2015-10-28
KR20150096782A (ko) 2015-08-25
WO2014099169A1 (en) 2014-06-26
CN104885052A (zh) 2015-09-02
JP6157637B2 (ja) 2017-07-05
US9442840B2 (en) 2016-09-13

Similar Documents

Publication Publication Date Title
JP6157637B2 (ja) リードライトメモリデバイスのデータイメージ中の仮想境界コード
US7277978B2 (en) Runtime flash device detection and configuration for flash data management software
US9164756B2 (en) Software updating process for an embedded device
US9431069B2 (en) Management method for nonvolatile memory system following power-off
US8812776B2 (en) Data writing method, and memory controller and memory storage device using the same
US10860247B2 (en) Data writing method and storage controller
US8601464B2 (en) Memory online update system and method
US9158476B2 (en) Method for switching operation mode, memory controller and memory storage apparatus
KR20040076589A (ko) 메모리 카드
US20140173187A1 (en) Virtual boundary codes in a data image of a read-write memory device
US9367482B2 (en) Systems and methods to extend ROM functionality
TW201833421A (zh) 可更新韌體的電子鎖系統
US7046536B2 (en) Programable identification circuitry
CN110688141A (zh) 固件更新方法
US9817573B2 (en) Smart card management method, memory storage device and memory control circuit unit
US10606520B2 (en) Methods and apparatus to read from a nonvolatile memory device
US8140896B2 (en) System and method for downloading system program
US9268554B2 (en) Controlling method, memory controller, and data transmission system
JP5786702B2 (ja) セキュリティトークン、セキュリティトークンにおける命令の実行方法及びコンピュータプログラム
CN114003523B (zh) 用来进行配置管理的方法以及数据存储装置及其控制器
JP5981477B2 (ja) フラッシュメモリ制御装置、フラッシュメモリ内蔵機器、フラッシュメモリ制御方法、及びそのためのプログラム
CN115708073A (zh) 存储芯片的控制方法及相关设备和存储介质
JP2007334915A (ja) メモリカード
JP2015187896A (ja) セキュリティトークン、セキュリティトークンにおける命令の実行方法、及びコンピュータプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161104

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161104

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20161104

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20161122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170420

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170606

R150 Certificate of patent or registration of utility model

Ref document number: 6157637

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees