JP4852548B2 - 消去可能/書換え可能メモリ用に設計されたホスト装置で一回又は数回プログラム可能なメモリを使用する方法および装置 - Google Patents

消去可能/書換え可能メモリ用に設計されたホスト装置で一回又は数回プログラム可能なメモリを使用する方法および装置 Download PDF

Info

Publication number
JP4852548B2
JP4852548B2 JP2007529862A JP2007529862A JP4852548B2 JP 4852548 B2 JP4852548 B2 JP 4852548B2 JP 2007529862 A JP2007529862 A JP 2007529862A JP 2007529862 A JP2007529862 A JP 2007529862A JP 4852548 B2 JP4852548 B2 JP 4852548B2
Authority
JP
Japan
Prior art keywords
data
controller
address
memory
memory device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007529862A
Other languages
English (en)
Other versions
JP2008511072A (ja
JP2008511072A5 (ja
Inventor
クリストファー, エス. ムーア,
アドリアン ジェデイ,
マット フルーイン,
チア ヤン,
デレク ボッシュ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk 3D LLC
Original Assignee
SanDisk 3D LLC
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 SanDisk 3D LLC filed Critical SanDisk 3D LLC
Publication of JP2008511072A publication Critical patent/JP2008511072A/ja
Publication of JP2008511072A5 publication Critical patent/JP2008511072A5/ja
Application granted granted Critical
Publication of JP4852548B2 publication Critical patent/JP4852548B2/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
    • 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/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • G06F2212/2142Solid state disk using write-once memory, e.g. OTPROM
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7207Details relating to flash memory management management of metadata or control data

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)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)

Description

(関連する出願に対する相互参照)
この出願は、2004年8月24日に申請の米国の仮出願番号60/604,353の特典を主張し、ここに参照することによって組み入れる。
モジュール式で、ポータブルな不揮発性メモリ装置は、ディジタル・カメラ、ディジタルオーディオ・レコーダーおよびパソコンのようなホスト装置に容易に接続したり接続を切ったりできるようにすることが可能である。これらの装置の中で使用されるフラッシュカードのような従来のメモリは、書き換え可能で、メモリ・アドレスをシステムまたはユーザの目的のために消去し、書き換えることができる。1回プログラム可能(one−time programmable)(OTP)又は数回プログラム可能(few−time programmable)(FTP)のどちらにしても、より廉価なメモリ技術が出来たので、アナログカメラの場合のフィルムと同様に、単に写真を撮り、プリントすると同時に、廉価なカードを「ネガ」として保存できるような、ホスト装置での新しい使用法モデルが使えるようになった。理想的には、標準的なフラッシュ・カメラでこの廉価なカードを使用することができることであるが、ポータブル装置が、システム構造に消去可能なことを要求するDOS FAT12/16ファイル・システムを使用することが一般的なので、これらの技術は必然的に互換性がない。装置の中のファームウェアをOTPかFTPメモリ技術用にカスタマイズされたファイル・システムに更新すれば、この問題は解決できるが、これでは、全体の有効市場がソフトウェアをアップグレードした新しいカメラに制限されることになるか、さもなければ、ユーザにフィールドで既存のカメラのソフトウェアをアップグレードすることを要求することになる。そこで、エンドユーザが既存のカメラで、OTPまたはFTPのメモリーカードが比較的シームレスに使えるようにするハードウェア・コントローラ・ソリューション、つまり、下位互換性をもつコントローラ(backwards−compatible controller)(BCC)を作り上げる必要がある。
この好ましい態様は、ここに添付した図面を参照して記述する。
(現在好ましいとされる態様の詳細な記述)
(システム概観)
ここに記述された態様は一回又は数回プログラム可能なメモリを、ファームウェアのアップグレードを要しないで、既存の家庭用電子機器(フラッシュ、つまり消去可能な、不揮発性メモリで作動するような機器)との作動を可能にするように使用することができ、そのため、ユーザに対する影響を最小限に止める一方、下位互換性を提供する。それによって、これらの態様は既存のフラッシュカード・スロットを備えた家庭用電子機器と、一回又は数回プログラム可能なメモリとの橋渡しをする実行可能な方法である。これらの態様は、又、一回又は数回プログラム可能なメモリ用にカスタマイズしたファイル・システムを組み込むためにファームウェアを更新しなくても、将来の家庭用電子機器を設計できるようにする。
さて、図面に注目すると、図1は好ましい態様のホスト装置5およびメモリ装置10のブロック・ダイヤグラムである。ホスト装置5およびメモリ装置10の両者は、電気的にホスト装置5をメモリ装置10と連結するために互いに対をなす、電気的なコネクターを含む。ここに使用されたように、用語「〜と連結される」は、直接的に連結されているか、1つ以上の介在する部品を通して間接的に連結されているかを意味する。ホスト装置5は、ディジタル静止画または動画カメラ、携帯情報端末(personal digital assistant)、携帯電話、ディジタルオーディオ・プレーヤーあるいはパーソナルコンピュータ(USBリーダ/ライタ付きあるいはPCMCIAカード・アダプター付きのもの)などの家庭用電子機器の形態であっても良いが、これらに限定されない。この実施形態では、ホスト装置5が、DOS−FATファイル・システムのような、多数回書き込み(write−many)ファイル・システム7を含む。
メモリ装置10は、メモリーカードまたはスティックのようなモジュールでコンパクトな、携帯型のユニットの形式をとることができる。メモリ装置10はコントローラ20と一回書き込みメモリ・配列(アレイ)30を含む。図2はコントローラ20のブロック図である。図2に示すように、コントローラ20は、それぞれ、フロントサイドバス・プロトコル・ロジック36およびバックサイドバス・プロトコル・ロジック38と連結したフロントサイドバス32およびバックサイドバス34を含む。フロントサイドバス・プロトコル・ロジック36は、マルチメディア、セキュアディジタル、メモリスティック、コンパクトフラッシュ(登録商標)、スマートメディア(登録商標)、xD、USB、HS−MMC、あるいは利用可能な多くのポータブル記憶メディア用にコンフィギュアできる。バックサイドバス・プロトコル・ロジック38は、NANDフラッシュ、NORフラッシュあるいはその他独自のまたは公開されたメモリ・インターフェース用にコンフィギュアできる。コントローラ20はさらに2個のページ・レジスタ40、42(ページレジスタ0およびページレジスタ1)、スマートフィルタ・ロジック44、リマップ・ロジック46およびスマートECCロジック48を含む。簡潔にするため図2に示していないが、メモリ装置10はさらに計時ネットワークおよび他の「グルー」ロジック(“glue”logic)を含むことができる。下に詳細に記述するように、コントローラ20は、多数回書込み
ファイル・システムを使用して、メモリ装置10がホスト装置と後方互換性をもつことができるようにする。そのため、時には、コントローラ20は「後方互換性があるコントローラ」(“backward−compatible
controller”)あるいは「BCC」とここで呼ぶことがある。
コントローラ20の好ましいインプリメンテーションは、標準の組み合わせロジックと組み合わされた有限状態マシン(ミーリ(Mealy)および/またはムーア(Moore))を使用する、エイシック(ASIC)である。しかしながら、コントローラ20は様々な他の形式でインプリメントすることができる、例えば、ファームウェアを備えたマイクロコントローラあるいはマイクロプロセッサーであるが、これらに制限はされない。さらに、この態様では、コントローラ20が、バックサイドバス34でメモリ配列30から分離されているが、設計はコスト削減のために単一のダイに統合することができる。大部分は、この態様でコントローラ20のデザインは、書き換え可能メモリ技術用に使用のコントローラに非常に似ている。違いの例は、このコントローラ20が不揮発性のメモリの消去と関連したウエアレベリング(wear−leveling)あるいは他のロジックを好ましくは必要としないということである。ここに示した設計がこれらの追加のブロックおよび機能を含んでもよいが、それらは恐らくコスト的には最適ではないはずである。したがって、これらを除外しようと考えてもよい。同様に、互換性問題を回避するための新しいソフトウェア・ファイル・システムを使用するOTPまたはFTPメモリと共に作動するよう設計された超低コストのコントローラは、1個より多いページレジスタ、リマップ・ロジック、あるいはスマート・フィルタ・ロジックを必要としないかもしれない。
1回書き込みメモリ配列30は、複数のフィールド・プログラム可能な1回書き込みメモリ・セルを含む。フィールド・プログラム可能な1回書き込みメモリ・セルは、最初の、プログラムされていないディジタル状態で組立てられ、組み立て後に、代替のプログラムされたディジタル状態に切り替えることができるメモリ・セルである。例えば、最初のプログラムされていなディジタル状態は、ロジック1(あるいはロジック0)状態として確認ができ、プログラムされたディジタル状態は、ロジック0(あるいはロジック1)状態として確認できる。メモリ・セルが一回書き込みであるので、ストレージ(記憶装置)の位置(例えばロジック1状態)の最初のプログラムされていなディジタル状態は、一旦、プログラムされたディジタル状態(例えばロジック0状態)に切り替えられると回復できない。1回プログラム可能な(つまり、一回書き込み形)メモリ配列ではなく、メモリ配列30は、多数回書込みメモリ配列ほどの回数ではなく、二回以上書き込めることができるメモリ配列である、数回プログラム可能な(FTP)メモリ配列の形式をとることができる。さらに、メモリ装置10は追加のメモリ配列(一回書き込み、数回プログラム可能、あるいは多数回書込み)を含むことができる。
該一回書き込みメモリ配列30は、固体(ソリッド・ステート)メモリ装置(つまり、電気的読み取り、書き込み信号に応答するメモリ装置))、磁気記憶装置(ハードドライブのような)、あるいは光学記憶装置(CDかDVDのような)のような適合するどんな形式も採れる。固体メモリ・ユニットの形式では、メモリ配列30中のメモリ・セルは、二次元あるいは三次元的に組織化できる。一つの好ましい態様において、メモリ配列30は、ジョンソン等の米国特許番号6,034,882、ザングの米国特許番号5,835,396、および米国特許出願番号09/560,626に記述された配列のような三次元の配列であり、これらすべては参照によってここに組み入れられる。
これらの態様を説明するのに、DOS FATファイル・システム(ウィンドウズ(登録商標)・オペレーティング・システムのような)を多数回書込みファイル・システム7の例として使用することとする。注目すべきことは、これらの態様は、他の多数回書込みファイル・システムと共に使えることである。図面に再び戻ると、図3は様々なファイル・システム構造を示す、典型的なFAT 12/16に基づいた記憶カードのメモリマップ50である。ここに使用するように、「ファイル・システム構造」とは、メモリ内のパーティション、パーティション内のメモリ・スペースおよび/またはファイル・システムがそのパーティションとともに使用できる、あるいは、できないというコマンドのタイプを記述するすべてのデータのことを言う。ファイル・システム構造の例は、マスター・ブート・レコード、パーティション・ブート・レコード、ファイル割付けテーブル(「FAT」あるいは「FATテーブル」)、ルート・ディレクトリー、およびサブディレクトリーを含むが、これらに制限されない。マスター・ブート・レコード(MBR)は、個々の論理パーティションのスタートする位置はもとよりカード(つまりメモリ装置10)のブート情報を保存するために使用される。ここに示されたような大抵のメモリーカードは論理パーティションを一つだけ含む。この例で、クラスタ・サイズ、クラスタの数、パーティション・タイプ、パーティション名などのような情報を含むパーティション・ブーツ・レコード(PBR)は、アドレス0x4000でスタートする。FAT1はFATテーブル1に相当し、それは、カード10上の各ファイル、ディレクトリーおよび他の情報のクラスタ番号のリンクしたリストを含む。FAT2はFATテーブル2に相当する。最後に、ルート・ディレクトリーおよびファイル・データ・エリアは物理アドレス0xC200で始まる。これらのエリアは、各FATテーブル中のクラスタ番号に対応するクラスタに分割される。この例の目的には、各クラスタのサイズが正確に4KBであると仮定する。これがFATファイル・システムのほんの一例であって、本発明を全く制限する意図が無いことに注意すること。各構造に対する異なる位置、異なるクラスタ・サイズおよび、異なるファイル・システムさえも、ここに記述された態様に関連ができることである。
本システムの一般的なコンポーネントを記述したので、ハードウェア・コントローラ20のスマート・フィルタ・ロジック44、リマッピング・ロジック46およびスマートECCロジック48を検討し、どのようにして、これらのロジック・ブロックが使われ、消去可能フラッシュ・メモリー用に設計されたホスト装置がOTPメモリを実際にシームレスに使用できるようにするかを例証する。これらのロジック・ブロックは、多くの既存のホスト装置が消去コマンドを送らず、その代り、消去管理(例えば、ウエアレベリングおよびガーベジ・コレクション)を実行するためにコントローラ20に依存すると言う事実を利用する。ホスト装置は、アドレスに書込まれた最も最近のデータが、後にそのアドレスが読み取られる時に存在するものと単に予期している。上述したように、コントローラはこれらのロジック・ブロックのうちのいくつかあるいはすべてを使用することができるが、3個のロジック・ブロックをすべて使用することはそこに明示されていない限り請求項で要求されない。
(スマート・フィルタ・ロジック44)
スマート・フィルタ・ロジック44は、コントローラ20がユーザが希望する行動に基き、スマートにホスト・オペレーションを修正することを可能にする。スマート・フィルタ・ロジック44の1つの形式は、アドレスに書き込みを要求されたデータをそのアドレスに以前書込まれたデータと比較するために書き込みの前の読み取り(read−before−write)オペレーションを実行する(つまり「新しい」データを「古い」データと比較する)。最も単純な場合では、以前に書込まれたデータの何らかの修正がある場合、スマート・フィルタ・ロジック44はリマップ・オペレーションを実行することができるが、これは好ましくないユーザ・モデルという結果になるかもしれない。複雑さを加え、スマートにデータの差異を判断することによって、コントローラ20は、ホスト装置5が何を行おうと試みているか推論することができ、次いで、次のオペレーションのうちの一つを選んで実行することができる:そのアドレスに新しいデータを書き込むか、データを「偽書き(fake write)」する(つまり、実際には何も書き込まれなかったのに、ホスト装置5に、書き込みオペレーションはうまく実行されたと伝えるか、書き込みを却下しカード・エラーを発生するか、あるいはリマップ・オペレーションを実行する。これは、図4のフローチャートに図示されている。図示のように、下位互換性をもつコントローラ(BCC)20は、書き込みオペレーションを受け取る(実行60)。データがブランクページにもたらされて書込まれるか、あるいは、データが付加される場合(実行65)、コントローラ20はホスト装置5によって要求されたままのデータを書込む(実行70)。「最後にアクセスした」フィールドが更新中か、あるいは、FATテーブルを「ゼロ」に設定しようと試みがなされている場合、コントローラ20は「偽書き」を実行する(実行80)。書込みがPBRになされる場合、あるいはリマップ・ゾーンとのコリジョンがある場合(実行85)、コントローラ20はカード・エラーを出す(実行90)。その他すべての書込みオペレーション(実行95)に対応する場合、コントローラ20はリマッピング・オペレーションを実行する。これらのブランチ(分岐)はより詳細に以下記述する。大切なことは、スマート・フィルタ・ロジック44は、フローチャートに示された全4個のブランチ、全4個のブランチ未満、或いは、示されていない追加のブランチをインプリメントできることに注目することである。
図4に図示のように、スマート・フィルタ・ロジック44が、好ましくはデータがどこに書込み中かによって異なる実行をする。従って、スマート・フィルタ・ロジック44は、ホストが要求する新しいデータだけでな、アドレスも監視することが好ましい。例えば、FATテーブルへの書込み用に配置されているフィルタは、ユーザ・データ・エリアへ書込み用に配置されているフィルタとは異なることができる。したがって、コントローラ20は、カード10上のFATテーブルのアドレスと他のファイル・システム構造を理解していることが好ましい。これは、これらのアドレスを静的にロジックへハードコードするか、スタートアップでコントローラ20にMBR及びPBRを読み取らせて解釈させるか、あるいは、アドレスを、パワー・オンで様々なコンフィガレーションデータを与える「マジック・ページ」内に保存することで実行することができる。
完全にスマート・フィルタを理解するためには、ユーザがメモリ装置上で実行することのできるオペレーション、および、それらがファイル・システム構造およびデータを操作するコマンドにどのように翻訳されるかを先ず理解しなければならない。先ず、ユーザが写真を撮るか、ファイルをコピーするか、新しいファイルを保存するか、あるいは、ファイルをメモリーカードに移動させる時に何が起こるかを説明する。これらのオペレーションは装置によって変わり得るが、一般的傾向には従う。最初に、ホスト装置は、空きスペースがカード上のどこに在るかを見つけるため、どちらかあるいは両方のFATテーブルを読み取る。この空きスペースはFAT16ファイル・クラスタの中で0x0000として表わされている。次に、ホストは、新しい32バイトファイルのリスティングの最初の26バイトを適切なディレクトリー・クラスタへ書込む。この32バイト構造のメモリマップは図5に示されている。次に、ホストは、クラスタのリンクしたリストを書込むことで、ファイル用に使用されるメモリをFATテーブルへ割り付ける。メモリが割り付けられた後、ホストは適切なクラスタにファイル・データを書込む。留意することは、この割付けおよび書込みはどの順序で行ってもよいことと、1回につき単一のクラスタが割り付けられ、データが書込まれるように分離されても良いことである。データをすべて書込んでから、始めのクラスタ番号およびファイル・サイズを示すために、最終の6バイトをファイル・リスティングに書込む。
この例は図6および7で見ることができる。ホストがメモリの未使用のスペースにFile2.jpgを書込み中であると仮定する。ファイル名、属性情報などは、適切なディレクトリーに最初に書込まれる。その後、FATテーブルは、そのファイルに対して更新されるが、ここではクラスタ0x09に0x0Aを書き込むことによりスタートし、次のクラスタがクラスタAにあると表示する。ファイルの終りがクラスタ0x11に書き込まれた0xFFで示されるまで、リンクしたリストが書込まれる。その後、ホストは、カードへのファイル・データを新しく割り付けられたクラスタに書込む(今度の場合も、このオペレーションは、ファイルの終わりに到達するまで、1回につき単一のクラスタを分離して割り付けることができる。)最終的には、最後の6バイトがファイル・リスティングに書込まれ、File2.jpgが、クラスタ0x09でスタートし、サイズが45KBであることを示す。
新しいディレクトリーは、新しいファイルの作成と非常に似た方法で作成される。事実、ディレクトリーおよびファイルは、ディレクトリー属性ビットを除けば、FATファイル・システム・インプリメンテーションにおいて全く同じである。したがって、ホストは、適切なディレクトリーに(ROOTディレクトリーは、FAT2の後の、ユーザ・データ・エリアの最初に定義される)、先ずディレクトリー名および属性ビットを書込むことにより、ディレクトリーを作成する。次に、新しいディレクトリー用のクラスタは、FATテーブルに0xFFを書き込むことにより割り付けられる。任意の新しく作成されたディレクトリーの内部には、ファイル「.」とファイル「..」があり、ディレクトリーとその親をそれぞれ指す(その「.」ファイルのクラスタ番号はディレクトリー・クラスタと同じである)。これらの2つのファイルが書込まれた後、ホストは続いて、最終の6バイトを32バイトのリスティングに書込むことによりディレクトリー・リスティングを完成する。
ユーザのオペレーションの別の例は、以前にカードに書込まれたファイルを削除することである。ユーザが削除する場合、FAT系オペレーティング・システムは、普通にはカードからファイル・データあるいはファイル名を削除しない。代わりに、文字0xE5がファイル・リスティングの第1番目のバイトに書込まれ、ファイルのクラスタは、FATテーブルのそれらの位置に0x00を書込むことにより割り付けが解除される。ホストはどれも、ファイル・リスティングで第1番目の文字として「E5」を読み出せば、このファイルが削除済みとしてスキップすることを知っている。これにより、又、ファイルへ正しい文字を書換え、オリジナルのクラスタを再び割り付けることにより、ファイルを回復する機会が与えられる。
メモリ中の各ファイルは、ファイル名;読み出し専用、隠し、ディレクトリー、アーカイブなどのファイル属性;ファイル生成期日;ファイルを最後にアクセスした日付;ファイル・サイズ;および第1のクラスタ・エントリーのような情報を含む32バイトのファイル・エントリーを含む。ファイルをリネームするか、あるいは、その属性(例えば、隠し、アーカイブ、読み出し専用)を変更するには、ホスト5は、オリジナルのリスティングに、新しいファイル名あるいは属性ビットを書込むデータとともに、書き込みコマンドを単に送る。一般に、コントローラ20は、ホスト5がリマップ・オペレーションを実行により、これらのパラメーターのうちのどれでも修正することを可能にする。しかしながら、コントローラは、ファイルリスティングの「最後にアクセスした日付フィールド」 (図5のバイト18−19)が更新されるときに、偽書きの実行によりメモリを保存することを選択してもよい。この例外の理由は、ファイルが読み取られるごとに、マイクロソフト・ウィンドウズ(登録商標)のようなホストの中には、このフィールドに新しい日付を書込み、これで、メモリの512バイトをリマップのために使われる可能性があるためである。これはユーザが知らないうちに書き込みオペレーションを実行するシステムの例である。これを回避するために、スマート・フィルタ・ロジック144は、この特定の更新をインプリメントしないように選択できる。これらの隠しオペレーションの意味および取り扱い方については、この明細書で後に、より詳細に検討することとする。
ユーザは、さらにメモリーカードをフォーマットするよう選択できる。これはホスト装置により、様々な方法で実行される。ある装置では、単にFATおよびルート・ディレクトリーに0を書きこみ、それにより、メモリ・スペースをすべて「解放する」。他のホストは、新しい情報でMBRおよび/またはPBRを書換え、それで、ホストとルートのディレクトリーをゼロに設定することにより、カードを再フォーマットしようと試みる。さらに、他のホストはメモリ・スペースがすべて消去されていることを保証するために全カードに0を書込むと同様に上記の一つまたはすべてを実行する。最後に、あるホストは、上記のオペレーションの一つ以上を実行し、さらに、データがすべて完全に消去され新しいデータの準備ができていることを保証する消去コマンドを使用する。
ユーザが試みることができる最終のオペレーションは非常に広い――既存のデータを修正することである。ユーザは、カメラ上の画像を回転させるか、色あるいは別の変数を改善するツールを使用後、再度カードへ画像を保存するか、あるいは他の多くのオペレーションのどれでも選択できる。ホスト装置は、新しいデータを書込み、古いファイルを消去することから、単に古いファイルの適切なクラスタに新しいデータで上書きすることに及ぶ様々な異なる方法でこれらのオペレーションのうちのどれでも実行することができる。
ホストが異なるユーザ・オペレーションをどのように実行するかについての基礎的な理解が得た以上、スマート・フィルタおよびそれらがどのように作動するか理解し始めることができる。BCCコントローラは、大抵の書き込みコマンドを受け取ると、書き込み前読み取り(read−before−write)(RBW)を実行する。ホストから希望の書き込みアドレスを受取ると直ちに、メモリ装置が読み取られることが好ましい。コントローラ20が希望のデータを読み取り、ページレジスタ(Page Register)1(PR1)42にそれを挿入することができるとともに、一方ホスト10がページレジスタ0(PR0)44に移送される新しいデータを送信しているので、これで動作を改善することができる。このRBWオペレーションについてのより詳しいことは、この文書で後にリマッピングの記述の中にある。スマート・フィルタ・オペレーションの様々な例は、図5に示すFATテーブルに関連してここに述べることとする。
新しいファイルあるいはディレクトリーを作成するのに、ホスト装置5は適切なサブディレクトリ中に新しい32バイトのファイル・エントリーを書込み、正しいメモリ・スペースを割り付けるためにFATテーブルを更新する。ホスト装置5が新しいファイルを書込もうとしている場合、ホストはこの図の中の最終2個のクラスタを、おそらく値0x13および0x14でそれぞれ割り付けようとするであろう。図4のフローチャートを見ると、データが修正されていないので、「データを付加する」に相当することになる。したがって、スマート・フィルタ・ロジック44は、変更せずオリジナルのアドレスに単にデータを書込む。この一般的な場合では、コントローラ20によって、新しいファイルのために、ホスト装置5が空きスペースに単に上書きすることができた。しかし、ある場合には、以前の削除の所為で、スペースはホスト装置5に空きのように見えるかもしれないが、現実には、メモリは決して消去されなかった。この場合、下記のように、スマート・フィルタ・ロジック44は、新しいデータが古いデータに取って代わるために、リマップ・オペレーションを実行することができる。
ファイルを削除するのに、ホスト装置5は二つの機能を実行する。第1に、ホストは、ホスト装置5にデータ・エリアは今利用可能であることを示すために、FATテーブルのファイルのクラスタ・ポインタに「00h」で上書きする。OTPまたはFTPのメモリの場合には、メモリを削除することが極めてできそうでないので、したがって、コントローラ20は、そのような方式でメモリを「フリーアップ(使えるように空ける)」ことはしたがらないであろう。言いかえれば、コントローラ20は、好ましくは、リマッピング・アルゴリズムを使用して、ホスト装置5がデータを修正したと見せかけるが、しかし実際には、削除してこの空きスペースを取り戻すことはできない。このため、スマート・フィルタ・ロジック44は、以前に割り付けられたクラスタに、ホストが0x00を書込むことを決して許可しないことが好ましい。このアクションは図4で「偽書き込み」と呼ばれている。特に、コントローラ20は、ホスト装置5に、メモリに[複数の]0が書込まれたことを伝えるが、実際にどんな書き込みも行わない。FATテーブルに[複数の]0を書込むとカードに実際より多くのスペースがあるようにユーザに思わせることになるので、カードがより多くのスペースがあるように見えても、新しいデータは最早書込めないとしたらユーザに良くない経験をさせることになると理解することは重要である。第2に、ホスト装置5は、32バイトのファイル・エントリーの第一番目の文字に「E5h」で上書きし、FATファイル・システムに該ファイルを飛ばす(スキップ)ように知らせる。ホスト5がコントローラ20へ書き込みコマンドを送る場合、コントローラ20は、以前のものと新しいデータの比較が出来るようにするために、書き込み前―読み取り(Read−Before−Write)オペレーションを実行する。この時に、下記のように、スマート・フィルタ・ロジック44は、リマップ・オペレーションが、元のファイルの最初の文字に「E5h」で上書きすることを可能にする。
FATテーブルのスマート・フィルタリングが起こる最後の例は、ホスト5が以前に書き込まれたクラスタに0x00以外の何かを書込んで、データを変更しようと試みる場合である。これは、例えば、ファイルが修正されて、長さが拡張される場合、(例えば、thumbs.dbファイルへデータが加えられて、16KBから24KBに拡大する場合)起こり得る。ここで、エンド・オブ・ファイル・マーカー0xFFは、新しく付加したデータを指すクラスタ番号と取り替えられることになる。この場合、リマップ・オペレーションが起こり、ホスト5が望むようにデータを修正することが可能になる。
重要なことは、偽書き込みオペレーションで、ホストが、書込まれていると信じる事と、現実にメモリの中にある事との間にずれがあることを理解することである。ウィンドウズ(登録商標)のように揮発性のRAMにFATテーブルをキャッシュ(cache)するホスト・システムでは、これが、一個を越えるスマート・フィルタが一つのオペレーションで適用されるかもしれないことを意味する。例えば、ユーザが一つのオペレーションで1MBのファイルを削除し、BCC 20が、FATテーブルの1MBの値のクラスタをゼロに設定することを偽造する、と仮定する。次に、ユーザがメモリ30に500KBファイルを書込もうとすると仮定する。この場合、ホスト5は、削除オペレーションによって空けたクラスタに新しいファイルを入れようと試みるであろう。ホストは、したがって、新しいクラスタ割付けを書込み、残余のクラスタ0x00を残すであろう。したがって、該スマート・フィルタは、同時に、以前に偽造されたスペースをゼロにしない一方、新しいファイルのクラスタをリマップしなければならない。この例は図8および9で見ることができる。時間0では、偽書き込みが、カード上に値11−FFを維持し、時間1でリマップ・オペレーションにより、カードに新しいファイルのクラスタ11−FFが書込まれるが、猶、スペースが空けられたようには見えないことを保証するために14−FFFも維持される。
この態様では、データ・エリア用のスマート・フィルタは、FATテーブル中のものとは異なる。ユーザ・エリアに保存できるデータは、実際のファイル・データの32バイトのファイル/ディレクトリー・リスティングおよびクラスタに制限されている。最も簡単な場合では、またしても、スマート・フィルタが、使用歴のある(ノンバージン)(non−virgin)スペース上のどの書き込みデータもリマップするよう選択できる。しかし、またしても、これでは、以前に言及した、隠しシステム・オペレーションがユーザが好まなかったリマップ用に余分のメモリ・スペースを使用することになるので、好ましくない使用法モデルと言う結果になってしまう。これらの余分のリマップ・オペレーションを回避するために、BCCコントローラ20がページ・レジスタ0およびページ・レジスタ1のデータを比較し、図7で示すように、一つのまたは複数の変更だけが特定のフィールドに関連している場合、偽書込みを実行するのが好ましい。例えば、ページレジスタ0でのデータが、オフセット18の2バイトを除いて、厳密にページレジスタ1のデータと一致した場合、コントローラ20は、ホスト5が「最後にアクセスした」フィールドを更新しようと試みていると決定し、したがって、偽書込みを実行することになる。したがって、ホスト5は、フィールドが更新されたと見なすが、実際には、書き込みは起こらなかった。
既知のファイル・システム構造フィールドのどんなデルタあるいはデルタの組み合わせも、スマート・フィルタに適用することができる。例えば、設計者が、OTPメモリがユーザによる修正を可能にすべきでないと決めると仮定すると、したがって、どのリネームまたは削除オペレーションも許可されないことになる。この場合、フィルタ・オペレーションは、バイト0〜11に対する変更を検知することができ、偽書き込みを実行することができる。さらに、設計者がリネームはよいがファイルを隠すことは許可しないと決定したと仮定しよう。もしユーザがファイルをリネームし、属性ビットを変更しようとすれば、スマート・フィルタ・ロジック44は、これがしかるべきフィールドに起こっていることを検知することができる筈で、データを新しい名前でリマップできる、しかしファイルを隠せるように属性ビットを変更できない。
スマート・フィルタ・ロジックが呼び出せる最後のオペレーションはエラーを示すことである。好ましい態様では、これが二つの場合だけに起きる: すなわち、(1)ユーザがカード10をフォーマットしようとする場合、あるいは、(2)カード10が一杯で、これ以上のデータを書込むことができない場合である。カード10をフォーマットするのに、ホスト5は少なくとも二つのオペレーションを実行する:すなわち、FATテーブルを取り除き、PBRを希望のフォーマット情報で更新する。この状況で、コントローラ20は、FATテーブル上位(図3の中のアドレス0x000〜0x4000)で書き込みオペレーションが起こっていることを検知し、ホストのコマンドに応答する時に、一連のエラー・ビットをセットする。これらはCRCエラーか、書込み失敗エラーか、あるいはカード形式因子に適切な他のステータスエラー信号であり得る。更に、コントローラ20は、またしても、FATテーブルをゼロに設定しようとする如何なる書き込みも「偽造」できる。カード10が一杯で、これ以上のデータが書込めない場合、カード10が一杯であることを、コントローラ20は、FATテーブル、あるいは書き込みアドレスを通じて検知できる。この時点では、追加データは書込むことができず、エラーが表示される。さらに、どの書き込み保護ビットも、OTPカード10が現在一杯で本質的にはROMであるとユーザに合図するようにセットできる。コントローラ20は、カード10が一杯であることを、FATテーブル中の検知から、リマップ・アドレシングおよびホスト書込みアドレシングの重複に気付くことに及ぶ様々な方法で検知することができる。
上記の例では、ホストが、ファイルまたはシステムのデータを削除せよとする実際の消去コマンドを送らず、代わりにこのオペレーションを実行するのにコントローラに依存するとすべて想定した。しかしながら、実際には、ホストの中には、自身で消去オペレーションを実行するか、或いは物理および論理ブロックを無効にして、消去オペレーションを後日実行するかの何れかを要求されて余分に複雑化しているものもある。このようなシステムの例は「スマート・メディア」・インターフェースであるが、該明細書は、如何にして論理ブロックをメモリのサイドバンドエリアに作り、無効フラグをマークし、また他のもっと複雑なオペレーションを実行するかを示している。重要なことは、オペレーションが書き込みであったか、消去、または他のコマンドであったかどうかを問わず、コントローラが、古いデータと新しいデータの比較に基づいた規定のオペレーションをスマートに実行するこの種のシステムにも同じく容易にスマート・フィルタの概念を適用できることに注目することである。
要約すれば、ホストが実行できる個々のオペレーション各々を考察すると、スマート・フィルタ・ロジックは比較的複雑に見えるかもしれない。しかし、よく調べるとこの行動には様々なパターンを見ることができる。コントローラ20がプリフォマット済で販売されている場合、PBRのアドレス、FATテーブル、ルート・ディレクトリーおよびデータ・エリアが既知である。ホスト5がPBRに上書きしようとすれば、これはカード10のフォーマットを変更するので、コントローラ20がカード・エラーを強制するのが好ましい。メモリ配列30技術のOTP/FTP特性により、コントローラ20は、FATに以前書込まれたアドレスに00hを書込むことにより、カード10上のスペースを空けようとするどんな書き込みも偽造するのが好ましい。同様に、最後のアクセスされたフィールドのようなファイル・エントリーへの不適当な更新はメモリ利用の改善のために偽造することができる。ホスト5が未使用の(バージン)メモリ・スペースへ書込む場合、スマート・フィルタ・ロジックは、書き込みが中断されずに継続させるのが好ましい。また、用心過ぎると言う誤りになるが、ホスト5がスマート・フィルタ・ロジック44が理解しないやり方で、以前のデータに上書きする場合、ホスト・オペレーションがうまく継続するのを可能にするよう、書き込みをリマップできるのが好ましい。最後に、単一の書き込みコマンドに対して、コントローラ20に幾つもの機能を実行させることが可能なフィルタの組み合わせは、注意を払うのが好ましい。例えば、ホスト5がFATテーブルをキャッシュに入れ、大きなファイルを消去し、次に、「空けられたスペース」に小さなファイルをコピーしようと試みるならば、コントローラ20は、新しいファイルをFATテーブルに余分なスペースを空けないで書込ませることが好ましい(キャッシュに入れられたFAT対フィルターされた実際のFATとのミスマッチがこれらの組合せの問題を起こす)。
(リマッピング・ロジック46)
リマッピング・ロジック46は、特定のアドレスを消去したとホスト装置5に思わせることが出来る新しい論理アドレスに、データを移動させるのに使用することができる。リマッピングはメモリ・コントローラ20による、データおよびアドレスのインディレクション(間接化indirection)を記述するために使用される用語である。この用語は、ホスト5が供給した論理アドレスとは異なる物理位置にデータを書込む概念を指す。リマッピングはフラッシュ・メモリーを含む様々な技術が使用するが、その理由は、性能の向上からウエアレベリング・アルゴリズムによるデータ保全までと色々である。しかし、BCCで作動するOTPまたはFTPのメモリにとって、リマッピングが、消去性を模倣するために使用されるという点で独特である。例えば、ホストがデータセットAをアドレス0に書込むように要求する場合、コントローラ20はアドレス0にデータを書込むことを選ぶことができる。その後、前述のように消去オペレーションを実行するため、文字「E5」を書込むような時に、ホスト5はデータをAからBに変更したいと思うかもしれない。この時に、コントローラ20は、スマート・フィルタを使用し、ホスト5が適切にデータセットAを修正していたと断定し、アドレス1のような異なる物理位置にデータセットBを書込むことになる。さて、ホスト5がアドレス0を読み取る場合、コントローラ20は、代わりに、アドレス1にあるデータを返すことを必ず承知し、従って、ホスト5およびユーザにとってメモリが修正されたように見せるのである。
ホスト装置からデータをリダイレクト(出力先変更)するのに多くの方法がある。例えば、次の特許書類を参照のこと(これらは本発明の譲受人に譲渡されており、参照によってここに組込まれる):米国特許出願番号09/877,719;09/878,138;10/327,680;及び10/023,468。一つの共通する方法はスタートアップで読み取られるか、あるいは、計算され、次いで、コントローラ20の揮発性メモリに保存される物理−論理−アドレステーブルを使用することであるが、このテーブルは非常に大きくなることがあり、コントローラ20にダイ・サイズおよびコストが加えられることになる。ここに記述されたインプリメンテーションについては、アプリケーションの必要条件を越えて性能を危うくさせないで、コストをできるだけ低く維持することが好ましい。好ましい態様では、2つのリマッピングの方法がある。
最初で最も簡単なスキームはホストに見えないメモリ・ページの「サイドバンドエリア」を使用することである。現在の好ましい態様では、メモリ配列30が528Bページに編成されているが、FATファイル・システムは512Bセクターを使用する。この余分な16Bは、サイドバンドと呼ばれ、コントローラ20が、ECCデータ、データおよびアドレス有効性フラグ、およびリマッピング・ポインタを含むがこれらに制限されない余分な情報を保存するために使用できる。このスキームでは、ページがリマップされた場合に、物理アドレスを保存するために、コントローラ20がこのサイドバンドの一部を使用する。初めて該ページを書込む場合、物理・論理アドレスが同じになるので、リマップ・ポインタは必要ない。ホスト5がデータを修正しようとする時、コントローラ20は新しい位置に新しいデータを書込み、この位置の物理アドレスを古い位置のサイドバンドへ保存する。
図10は、データがこのリマッピング・スキームの下でどのように読込まれるかを図示すフローチャートを含む。最初に、読み取りコマンドおよびアドレスがカード10へ送られる(実行110)。コントローラ20は528Bページ全体(またはポインタを含むのに必要なだけ)を読込む(実行120)ことを承知しており、アドレスがリマップされたかどうかをコントローラ20に伝えるFFhをサイドバンドが含むかどうか決める(実行130)。ポインタがバージンの場合(つまり、FFhを含む)、コントローラ20はホスト5に512Bページを返す。サイドバンドがアドレスを含む場合、コントローラ20は最も最近書込まれたデータを見つけるためにサイドバンドに保存されたページ・アドレスを読み取る。このアドレスをサイドバンドに直接保存でき、あるいはアドレスのオフセットを保存できる。この型のリマッピングはコントローラ20がリマッピングに使用される余分のスペースを割り付けるのにFATテーブルを修正しないので、静的と言われる。このインプリメンテーションでは、カード10は、FATテーブルに既に割り付けられていたリマップ・データの規定量でプレフォーマットされている。一旦この量のデータが使用されていた場合、リマップは最早行われ得ない。ホスト5がそれ自身の目的(例えば画像データを保存する)のためにこのスペースを使用しようとしないように、FATテーブルはリマップ割付けを示す。
この最初のリマッピング・スキームは非常に強力で、実行するのにほんの僅かのロジック・オーバーヘッドを要するだけである。しかしながら、カレントデータを見つけるには、N回リマップしたページはN回読み取りが必要となるので、比較的高い性能上のオーバーヘッドが付随することになってしまう。その代わり、この性能を改善するのに、もう1つ他の単純なリマッピング・スキームが使用できる。ここでは、リマップしたページへのポインタを保存する代わりに、リマップ・テーブルへのポインタを利用する。このテーブルは、最も最新のページ・データを保存するのに、時間−空間へのマッピング技術を使用することができる。時間一空間へのマッピングは、米国特許番号6,738,883に記述され、本発明の譲受人に譲渡されており、参照によってここに組み入れられる。さて、N回リマップされたページは、高々3回の読みで読み取ることが出来、ほんの僅かなコストと複雑さが加わるだけで製品性能が大幅に向上するのである。
注目すべきことは、アドレスがアクセスされる度ごとに、コントローラ20がこれらの読み取りを実行して最新のページを見つけるのが好ましい。コントローラ20が書込み前読み取りを実行する前記の個々のスマート・フィルタ・オペレーションについては、コントローラ20が、最も最近のページを見つけるのにリマップのチェーンをウォーク(walk)することも好ましい。
容易にこれらのアルゴリズムをさらに複雑に出来ることも理解されるべきである。例えば、複雑性を最小限に留めて、一つ以上これらのアルゴリズムを別のものと共に使用して、性能を改善できる。複雑性に関する別の例は、キャッシュした読み取りオペレーションを実行するのに、FATファイル・システムでのデータの強い位置依存性を利用することであるだろうが、ここでコントローラ20があるページおよびその近傍の複数ページを読み取り、ホスト5あるいはコントローラ20のいずれかが実行している他のオペレーションと並行してデータを見出すことになる。これでコントローラ20にコストが幾らか増す一方、書き込み前読み取りおよびリマッピング−ウォーキングのオーバーヘッドを大巾に縮小できる。
BCCコントローラ20がインプリメントできる標準的リマップ・アルゴリズムとの他の大きな1つの差異は、ホスト5へのフロー・コントロールの問題を解決するのに利用される。言いかえれば、コントローラ5が、ホストに知らせないで新しい位置にデータを移動させており、亦ホスト5は、このデータが現実に消去されて書き直されていると見なす場合、ホスト5は、どれだけの空きスペースが現実に利用可能かをどのようにして知るのか?この問題を解決するために、BCC20は2つの別個のオペレーションを実行する。第一に、前記のように、スマート・フィルタ・ロジック44は、ホスト5がスペースを空けようとFATテーブルに複数の0を書込むことがないように保つ。これは、ファイル削除のような、ユーザが支配するオペレーションがメモリを削除し、開くように見えることのないように保つであろう。しかしながら、リマッピング用にコントローラ20が消費するメモリは場所を知らせられなければならない。
この問題を解決する一つの簡単な方法は、メモリ装置10の販売時以前にリマッピング用にメモリを割り付けることである。この静的量のリマッピングは、あらかじめ割り付けられたスペースの残りがなくなるまで、コントローラ20が使用することができる。この時に、コントローラ20はカード・エラーを表示するか、リマップでないすべての書き込み、あるいは他の多くのオペレーションを許可することが出来る。静的リマップ割付けと呼ばれるこの方法は、ユーザが実行できるオペレーションの回数およびサイズを制限するので、好ましくないかもしれないことを理解することができる。
動的なリマップ割付けと呼ばれる、より複雑な形式のリマッピングがこの問題を解決する。図11にこの方法のフローチャートを見ることができる。先ず、ホスト5は書き込みコマンドを送り、データはページレジスタ1に保存される(実行160)。次に、コントローラ20は書込み前読み取り(RBW)オペレーションを実行し、ページレジスタ2にデータを保存する(実行170)。ページレジスタ2が空の場合(つまり、FFhを含む) (実行180)、ページレジスタ1の内容は、メモリ配列に書込まれる(実行190)。そうでなければ、コントローラ20は、ページレジスタ1の内容が、付加(アペンド)されたデータを備えたページレジスタ2の内容と一致するかどうかを決める(実行200)。そうである場合、ページレジスタ1の内容はメモリ配列に書込まれる(実行190)。そうでない場合、スマート・フィルタリング・ロジックが可能(イネーブル)になっているかどうか決める(210実行)。そうである場合、データはフィルターされる(220実行)。そうでない場合、リマップが要求される(230実行)。リマップを実行するのに、メモリの一番上の最初の空きページを見つけ(実行240)、ページレジスタ1の内容は、エラーの無い最高の空きページに書込まれる(実行250)。その後、FATテーブルは、該ページのクラスタを使用済みとするよう更新される(実行260)。最後に、新しいページ・アドレスを元の(オリジナル)のページのサイドバンドに書込む(実行270)。パフォーマンスの節約((例えば、アドレスが利用可能な場合、およびホスト5からのデータ入力が完了する前に、書込み前読み取りが起こる)を提供するのに、二つのページレジスタがここに示されているが、単一のページレジスタを使用することは可能である。
フローチャートに図示のように、コントローラ20は、FATテーブルに書込むことで、リマッピングのためにスペースが使用されたことをホスト5に通知する。補足メモリが必要になるにつれて、ちょうどホスト5がファイル・データにクラスタを割り付けるように、コントローラ20はそれ自身の使用に新しいクラスタを割り付けることができる。すなわち、このスキームは、上記のようなアルゴリズム追跡ポインタを使用するが、補足スペースがリマッピングのために必要になると、また、動的にFATテーブルを更新する。このインプリメンテーションの利点は、ホスト5およびユーザが実行できるリマップ/ファイル修正の数に制限がないということである。カードが完全に一杯になるまで、コントローラ20はホストおよびユーザがリマップするのを許可する。この好ましい態様では、図12に示すように、大抵のホストが上から下に向けてメモリを割り付けるので、コントローラ20は下から上にメモリを割り付ける。この割付けスキームは、割付けが衝突する(コリジョン)チャンスを非常に小さくして、コントローラ20とホストの5が別々にメモリを割り付けるのを可能にする。又これにより、この二つの割付けゾーンが衝突する場合は常に、カード10が一杯であるとコントローラ20が認めることができる。カードが一杯である時に、コントローラ20は、その永久および仮の書き込み保護レジスタをセットすることに決め、カード10にはこれ以上書込むことは出来ないとホスト5に合図してもよい。キャッシュに入れられていないシステムは、どれだけのメモリが残っているかが判る一方、キャッシュに入れられたシステムは、スタートアップ時FATテーブルを読み、そのセッション以前にどれだけのリマップ・スペースが使用されたかを知る。
またしても、留意すべきことは、静的および動的リマッピングは相互に排他的でないことである。事実ユーザを支援するために、単一の製品に両方を組み入れるように選択してもよい。例えば、カードが一杯でも、ユーザはファイルを削除するか、あるいは、修正したいかもしれないが、追加のファイルは加えることができない。規定したメモリの量があらかじめ割り付けられ、正常なオペレーション下で使用されない場合には、付加的なデータ修正を許すことができる。例えば、カード10は、ホストとコントローラの割付け衝突(コリジョン)によってカード10が一杯になっているように見えるまで、コントローラ20が使用しない500KBの静的リマップを予備に取って置くことができる。この時に、コントローラ20は、希望のオペレーションが完了するまで、ホストの追加のデータを静的割付けゾーンに書込むのを認めることができる。その後、スマートフィルタは、削除とかリネームのようないくつかのユーザ・オペレーションが静的エリアで起きるのを許可するのに使用できるが、一方カード10が大抵の使用には本質的に一杯であるので、他のオペレーションはエラーの結果になることになる。
またしても別の例では、BCC技術のソフトウェアで更新されたホストはこの静的割付けエリアにアクセスできる。本発明の譲受人に譲渡され、ここに参照によって組込まれる米国特許番号6,424,581に記述のように、パソコン(PC)あるいは他の電子装置は、すべてのカード・メモリの明示的なアクセスを許す信号をカードへ送るアプリケーションで可能に(イネーブル)できる。この時点で、該アプリケーションは、どんなスマートフィルタ、リマップなどもオーバーライド(無視)することになり、リマップ・チェインを最適化したり、あるいは静的エリアへ、可能になっていないシステムでは出来なかった追加のオペレーションを許すことさえして、パフォーマンスを改善するのに使用したりすることができる。したがって、静的および動的リマップ・アルゴリズムを組み合わせれば、可能にされたシステムと可能にならなかったシステム両者を最適なユーザ経験として提供できる。
さらに、上記の単純なポインタ追跡スキームを置き換える他のインプリメンテーションが可能である。幾つかを以下に列挙する:
Read3コマンド: READ3として知られるより速い読み取りコマンドが使えるが、これは、コントローラ20がサイドバンドデータを読み取ることだけを出来るようにする。これは、最も最近のデータを見つける前にデータの多くの全ページを読み取るオーバーヘッドを減らすでしょう。
ポインタのテーブル: 最も最近の書き込みを見つけるために各ページを読む取るパフォーマンス・ヒット(performance hit)を減らすのに、各ページがリマップをすべてリストしたテーブルを持つようなポインタのテーブルが使用できる。ホスト5は概テーブルを読み取り、白紙(バージン)エントリー以前の最後のポインタを使用して、最も最近の更新版を決める。テーブルのアドレス自身は、ページのサイドバンドに保存することになっている。これは、先に参照した特許出願に記述されたハードウェア・リマッピングに使用されたテーブルに似ている。
システム・キャッシュ: コントローラ20は、サイドバンドに保存されたリマップ・テーブルあるいはポインタからのデータを保存するためにSRAMか同様のキャッシュを使用することができる。この付加的なSRAMがエリアを要し、したがって、コントローラ20をよりコスト高にする一方、このアーキテクチャーはリマップが非常に速く起こり、パフォーマンス・オーバーヘッドを最小限にすることが出来るでしょう。
リマップ・アルゴリズムの組み合わせ: コントローラ20は、単純なポインタ追跡か、あるいは、テーブル・スキームが使用中であるかを示すリマップ利用フラグを作成することができる。したがって、あるページが何度もリマップされたことをコントローラ20が知れば、コントローラは、将来のリマップの影響を減らすためのテーブルを作成するように選ぶことができる。しかし、ページがただ2、3回リマップされる簡単な場合には、ポインタ・スキームで十分でしょう。コントローラ20は、このフラグを動的にセットすることができるが、あるいは、静的に、リマップ位置に基づいてもよい。例えば、FATテーブルは何度もリマップされるだろうから、テーブルまたはSRAMMのスキームを常に使用することは意味をなすかもしれないが、データは頻繁にリマップされないので、ポインタ追跡スキームをここで使用することが好ましいかもしれない。このインプリメンテーションは、猶最適に近いシステム・パフォーマンスを提供する一方、SRAMのコストを減らせるかもしれない。
(スマートECCロジック48)
フィールドで起きるかもしれない信頼度エラーに対して保護するために、ECCを使用するのが好ましい。現在の好ましい態様では、BCC20が、上記のリマップ・ポインタもECCデータも保存するためにサイドバンドを使用する。ECCはサイドバンド利用可能性の点で8バイト、16バイトか、あるいは任意の適切なサイズであってよい。現在の好ましい態様では、128B ECCアルゴリズムが使用され、ここでは「スマートな大きいブロックECC」(”smart large block ECC”)と呼ぶ。大きいブロックECC (「LB ECC」)はECCワードにつき2個のクローズ(closes)を使用するが、これは、補遺Iで検討する。BCC 20がリマップおよびECC情報の両用にサイドバンドを利用するに当たり、サイドバンドは、正常な大きいブロックECCスキームに基づいて、ワード当たり2箇のクローズを保存するだけの十分なスペースを持たないかもしれない。従って、この大きいブロックECCスキームは、ワードの最終の2バイトが書込まれてしまうと、各ワードを1回クロ−ズするだけで「スマート」になる。FATテーブル中の各エントリーがサイズで2バイトであるので、2バイトの値が選ばれる。(LB ECCと組み合わせて動的リマッピングを実行する場合、コントローラ20は、フィールドでの製品の最高の信頼度を保証するために、ECCのクローズ・オペレーションを考慮するのが好ましい。言いかえれば、割付けは、好ましくは、FATテーブル中のECCワードをクローズしてはならず、続いて後日、同じワードを更新してはならない。) また、データ・エリアに依存するクローズ・オペレーションを持つこともできる。例えば、FATテーブルを更新する場合、上記のように2バイトのセグメントに基づいて更新するのが意味があるかもしれないが、データ・エリアを更新する場合には、これは意味をなさないかもしれない。データ・エリアを更新する場合、大抵のホストは、完全にデータをすべて書込んだ後にだけ、ファイル・エントリーの最終の6バイトを更新するので、クローズオペレーションは、ワードの最後の6バイトに基づいて実行することができる。最後に、BCC20は、以前にクローズしたECCワードが更新中であることを検知する場合、リマップ・オペレーションを実行することを決めてもよい。これは、フィールドでの最高の信頼度を維持するために、ECCと組み合わせてリマップ・オペレーションを利用することになる。
本発明の譲受人に譲渡されており、参照によってここに組込まれる、米国特許番号6,738,883は、OTPまたはFTP製品のデータ信頼度を改善する方法としてECCの使用を教示している。本特許で検討したように、ECCワードはたった一度だけ書込むことができる。ECCワードの新しいデータに上書きすると、ECCデータ値は間違いとされ、それにより、製品に必要な信頼度の積み重ねがなくなることになる。OTPかFTPメモリで動作可能になったシステムでは、これはライン、つまりメモリになす最小の書込みサイズの概念を作成することで容易に取り扱うことができるが、これは、上記参照の‘883(6,738,883)特許の中で検討されている。しかしながら、設計の複雑さを持ち、イネーブル(可能化)されていないシステム(つまり、オクトバイト・アラインメント概念でイネーブルされていないホスト)でBCC製品が使用される状況に対して補償することが好ましい。
BCCコントローラ20は多くの方法でECC保全を維持することができる。一つの簡単な方法はECCワードが無効にされた場合は常に、リマップ・オペレーションを起動することでしょう。ここでは、コントローラ20は、スマートフィルタあるいは他の論理スキームでECCワードが上書き中かどうか検知するでしょう。ECCワードを無効にする場合には、リマップ・オペレーションがデータを新しいECCデータで書き直し、したがって非常に信頼できる製品を保存することになる。
メモリの100%ECCカバレージ(coverage)を維持するためにリマッピングを使用するできるが、これは多くの追加のリマップという結果をもたらし、よって、ユーザ用のオペレーションの数を制限するかもしれない。この場合、コントローラ20がECCの取り扱いを改善するように設計できる。好ましい態様では、データの特定の部分が書込まれるまで、ECCデータが書込まれず、ECCワードは終了しないことになる。例えば、ECCワードが32バイトであると仮定する。前記ファイルを書込む場合には、ホスト5は26バイトのファイル・リスティング・データを書込み、後に、ファイル・データの完成後、最後の6バイトを書込む。この場合、コントローラのECCスマートフィルタ・ロジック48は、ファイル・リスティングが書込中であったと断定することができ、最終の6バイトが書込まれるまで、ECCワードを終了させることができない。これは、リマップオーバーヘッドを最小限にする傍ら、ECCの保全を維持するでしょう。このスキームは、様々なECCワード・サイズ、ファイル・システム構造、およびデータ構造について修正することができる。
要約すれば、現在好ましい態様のスマートECCロジック48は、サイドバンドに保存されたシンドロームビットを備えた128BのECCワードを使用し、データの最終の2バイトを書込むことに基づいてワードをクローズし、ワード当たり一回クロ−ズを許すだけであり、FATテーブル対データ・エリア(2B対6Bクロ−ズ)のために異なるクロ−ジング・スキームを使用し、ECCワードが無効にされるか、あるいは、壊れている場合、リマッピングを使用することができる。サイドバンドのスペースが多数のECCクロ−ズに十分でないので、この態様では、スマートECCロジック48を使用する。
(結論)
これらの好ましい態様と共に使用できる代案が多数ある。例えば、メモリ装置のコントローラにインプリメントする代わりに、スマートフィルタ・ロジック、リマッピング・ロジックおよびスマートECCのどれか、あるいはすべてを、全体的にあるいは部分的に、メモリ装置あるいはホスト装置中の別のコントローラのような別のコンポーネント中で実行することができる。さらに、用語「回路類」は、それに記述された機能をインプリメントすることができるすべてのコンポーネントを指す。回路類の例は、上記の例も、コンピューター実行可能な命令を実行するプロセッサー、アプリケイション専用集積回路、フィールドでプログラム可能なゲート・アレイ、アナログ回路、あるいは現在既知か将来開発されるその他すべてのハードウェア装置(ソフトウェアを実行するかまたは実行せず)も、さらにこれらの任意の組み合わせも含む。
上述の詳細な記述は、発明がとることができる選択された形式の実例として、発明の定義としではなく、理解されることを意図している。この発明の範囲を定義するように意図されたのは、等価物をすべて含めて次の請求項だけである。最後に、ここに記述された、如何なる好ましい態様のうちのどの態様例も単独であるいは相互の組み合わせて使用できることに注目すべきである。
(補遺I)
大きなブロックECCのインプリメンテーション
概観
大きなブロックECCは下記を含むことが好ましい:
・ 128BのECCワードサイズ。
・ 単一のエラー修正、しかしダブルのエラー検知なし。
・ 高々2回のECCパリティー更新を許可するスマートECC更新。
SEC ECCインプリメンテーション
ECCインプリメンテーションは、ECCパリティ・ビットがバイト当たり計算されることを可能にするインプリメンテーションに類似。サイドバンド中の記憶装置(ストレージ)が制限されているので、パリティ・ビットを縮小するために、DEDなしでSECのみを行うため次の修正を行った。図13は、どのようにパリティ・ビットが8ビットのデータの例に作動するかを示す:
・ P0はD1、D3、D5、D7をカバーする。
・ P1はD2、D3、D6、D7をカバーする。
・ P2はD4、D5、D6、D7をカバーする。
・ P3はD0、D1、D2、D3をカバーする。
・ P4はデータ・ビットをすべてカバーする。
次のテーブルは、任意の1ビットエラーに起因するシンドロームを示す。シンドローム[4:0]は、予期および実際のパリティ・ビットをXORすることにより作成される。このアルゴリズムでは、2ビットをカバーするのにN+2のパリティ・ビットを要求するのが好ましい。128バイト(210ビット)のECCワードについては、12のパリティ・ビットを要求するのが好ましい。
Figure 0004852548
12ビット・パリティー方程式
下記は、1024ビット(すべての1のECCワードはすべての1のパリティ・ビットに帰着すべきである)のECCワードに好ましくは要求される12のパリティー方程式である:
・ P0=!XOR(D1,D3,D5,...,D1023)
・ P1=!XOR(D2-D3,D6-D7,...,D1022-D1023)
・ P2=!XOR(D4-D7,D12-D15,...,D1020-D1023)
・ P3=!XOR(D8-D15,D24-31,...,D1016-D1023)
・ P4=!XOR(D16-D31,D48-D63,...,D1008-D1023)
・ P5=!XOR(D32-D63,D96-127,...,D992-D1023)
・ P6=!XOR(D64-D127,D192-D255,...,D960-D1023)
・ P7=!XOR(D128-D255,D384-D511,...,D896-D1023)
・ P8=!XOR(D256-D511,D768-D1023)
・ P9=!XOR(D512-D1023)
・ P10=!XOR(D0-D511)
・ P11=!XOR(D0-D1023)
スマートECCの更新
スマートECCの更新が、パリティ・ビットがECCワードにつき二度書込まれることを可能にするのが好ましい。この特性は、部分的なページ書き込みをECCによってカバーするのを可能にする。パリティ・ビットの第11セットは、新しいデータの第1書き込み中にECCワードに書込まれる。新しいデータを備えたどんな後の書き込みも、パリティ・ビットの第1セットを無効にするのが好ましい。ページが「クローズ」中の時、パリティ・ビットの第2セットが書込まれる。ページは、ECCワードの最後のオクトバイト中の任意のビットがプログラムされるとき、ページが「クローズ」されたと見なされる。このモデルは、部分的なページ書き込みを要するFAT構造とうまく作動する。
新しいパリティ・ビットが既存の有効なパリティ・ビットと一致しない場合、スマートECCフラグおよびパリティ・ビットが更新されるだけであるのが好ましい。同じデータ(一致するパリティ・ビットに帰着する)の書換えは、スマートECCフラグの状態を変更しない。
Figure 0004852548
上記に示すのは、未だプログラムが済んでいないデータのワード用ECCのパリティ(parity)、未使用(unused)、および有効(valid)ビットである。有効(valid)および未使用(unused)ビットは、冗長性用に各々2回複製される。この状態でParity0が有効であるので、ECCは読み取りによって可能になる。Valid0が1である場合、Unused0の値が何であるかは構わないことに注意すること。(これはParity1ビットでは真実ではない。)
上記のパリティ、未使用、および有効ビットの数は、32ビット、つまり4Bである。1ページ当たり4箇の128BのECCワードで、1ページ当たり16BのECCパリティ、未使用、および有効ビットがある。
Figure 0004852548
上記に示すのは、一度プログラムされたデータのワード用ECCのパリティ、未使用、および有効ビットである。nused0が以前1であったので、書込み中のデータを反映するようにParity0をプログラムできることを分かっていた。Parity0が書込まれたことを示すように、Unused0も0にプログラムされた。この状態で、Parity0がまだ有効であるので、ECCは、読み取りの間イネーブル(可能に)される。
Figure 0004852548
上記に示すのは、そのparity0ビットが、Valid0を0にプログラムしたことで無効にされたデータのワード用ECCのパリティ、未使用、および有効ビットである。データのワードへの第1の書き込み後、既にUsed0が0にプログラムされていた場合、後の書き込みはParity0ビットを無効にする。この状態で、Parity0が無効にされていて、Parity1がまだ更新されていなかったので、ECCは読み取りによって不能(ディセーブル)となる。
Figure 0004852548
上記に示すのは、そのparity1ビットが書込まれたデータのワード用ECCのパリティ、未使用、および有効ビットである。これが起きるのは、ワードの最後のオクトバイト中の任意のビットがプログラムされ、Unused1が以前に1にあった場合である。Unused1も、Parity1が書込まれたことを示すよう、0にプログラムされる。大抵の場合、最後のオクトバイトがプログラム中の場合、これがデータのワードへの最後の部分的ページ書き込みである。この状態で、Parity1が有効で書込まれているので、ECCは読み取りによって可能イネーブル)になる。(Parity0ビットと異なり、Unused1フラグはパリティ・ビットが有効であるために0でなければならない。)
Figure 0004852548
上記に示すのは、そのParity1ビットが、Valid1を0にプログラムしたことで無効にされたデータのワード用ECCのパリティ、未使用、および有効ビットである。Parity1ビットが書込まれた後、データのこのワードに後の書き込みがある場合、Parity1ビットを無効にしなければならない。この状態で、parity0もParity1も有効ではないので、ECCは読み取りによって不能にされる。
冗長な未使用および有効なフラグのデコード
Unused[1:0]フラグおよびValid[1:0]フラグは、パリティ・ビット用に3つの異なる状態をエンコードするのに使用される。次のテーブルはこれらの状態を列記する。
Figure 0004852548
しかしながら、冗長ビットのうちの1つにビット・エラーがある場合、フラグ当たり2個の冗長ビットがあるだけなので、冗長ビットのうちのどの1箇が誤りかを決めることは困難である。このために、パリティー状態を決定するためにUnused[1:0]ビットおよびValid[1:0]ビットの両方を常に使用する。次のテーブルは、これらのビット中の0の総数を数えることにより、デコードが行われることを示す。
Figure 0004852548
フラグ当たり4個の冗長ビットの代わりに2個使用することは、冗長性のロバスト性を減少させてメモリの中で使い果たされるビットの数を減少させる。
特別の場合−PAGE0
TF_SECC_PAGE0_TB='1'の場合、メモリのPAGE0の取り扱いは、わずかに異なる。通常は、ワードの最後のオクトバイト中の任意のビットがプログラムされる場合に限り、Parity1ビットを書込むことができる。この特別の場合では、この制限が撤廃される。したがって、一旦parity0ビットが使用されれば、次の書き込みは常に使用されているParity1ビットに帰着する。
トリム・ヒューズ・ビット
ECCロジックに影響するトリム・ヒューズ・ビットが3個ある:
TF_ECC_DISABLE_TB
TF_ECC_DISABLE_TB='1’の場合、ECCロジックは無効になり、ホストは各ページのサイドバンド中のバイト512−527へ完全な読み取りと書き込みアクセスを持つ。
TF_ECC_DISABLE_TB='0’の場合ECCロジックは可能になり、また、各ページのサイドバンド中のバイト512−527は、LBECCおよびスマートECC更新を実行するのに使われる様々なECCビットを保存するために使用される。サイドバンドエリアへなされたどんなホストの書き込みも廃棄される。サイドバンドエリアからのどんなホストの読み取りも不定データを返す。
TF_SMARTECC_DISABLE_TB
TF_SMARTECC_DISABLE_TB='1’の場合、スマートECC更新ロジックは無効(ディセーブル)にする。TF_SMARTECC_DISABLE_TB='0’の場合、スマートECC更新ロジックが可能にする。(TF_ECC_DISABLE_TBも'0’にセットしければならない。)
TF_SECC_PAGE0_TB
TF_SECC_PAGE0_TB='0’の場合、すべてのページは同じスマートECロジックを使用する。TF_SECC_PAGE0_TB='1’の場合、page0の取り扱いは、スマートEC更新ロジックに関して、すべての他のページとは異なる。
メモリマップ
すべてのECCのパリティ、 未使用、および有効ビットは、各ページのサイドバンド中のバイト512−527に存在する。
以下に4つのECCワードすべてのビットがどのように配列されるかを示す。
Figure 0004852548
以下にビットが1個のECCワード(例はワード0)に対してどのように配列されるかを示す。
Figure 0004852548
テスト
ECCロジックのテストはDAMモードを使用して行うことができる。DAMモードが書き込みか読み取りのどちらかのトランザクション用に可能になっている場合は、データはページ・レジスタとメモリ配列間で転送されない。ECCロジックをテストするのには、TF_ECC_DISABLE_TBビットをデアサート(deassert)しなければならない。次にこのテストをより詳細に記述する。
ECC修正
1. DAMモードを可能にし、ECCを可能にする。
2. 書き込みデータの512バイトおよびECCデータの16バイトでDATAINコマンドを出す。
3. READコマンドを出す。(データをリードバック出来る前に、ECCのスクラッビングがなされるので、チップは使用中になる。)
4. データの512バイトが予想通りであることを確認する。(シングル・ビット・エラーがPRに書き込まれた場合は、エラーが修正されたことを確認する。)
ECC生成
1. DAMモードを可能にし、ECCを可能にする
2. 書き込みデータの512バイトでDATAINコマンドを出す。
3. PROGコマンドを出す。(これによってECCの生成された16バイトが、PRに書込まれる。)
4. READコマンドを出す。(書き込みデータの以前の512バイトは、ECCデータの生成された16バイトと一緒にリードバックされる。)
5. 16ECCバイトが正確に生成されていることを確認する。
上記のように、ECC使用にたいする取り組み方の一つは、8B(オクトバイト)ECCワーズ使用するが、その際ECCシンドロームは1Bの幅がある。これは、1度のインプリメンテーションで12.5%のオーバーヘッドを作り、総ダイ・サイズの約9〜10%を占める。この取り組みでは、一つの、シングル・ビット修正/ダブル・ビット−検知アルゴリズムを使用するするが、これは72ビットのデータをパラレルで処理する。これに反して、大きなブロックECCは、シンドローム・記憶装置(ストレージ)のオーバーヘッドを減らすのに十分大きいECCワードを使用する。上記のように、さらにオーバーヘッドを減らすのに、現在は、シングルビット検知のみのアルゴリズムを使用することが好ましい。このアルゴリズムはデータを逐次処理する。
ECCシンドローム記憶装置(ストレージ)には様々なオプションがある。一つのオプション(オプション1)では、ECCシンドロームビットを拡張ページ・エリアに保存する。現在好ましい1つのアーキテクチャーは、拡張ページに18B(16Bのデータと2BのECCシンドローム・ビット)割り付ける。このオプションでは、トリム・ヒューズ・ビットまたはピンを使用して、次のことができる:(1)内部ECC生成を拡張ページ・スペースに保存されたシンドロームと使い、ユーザが拡張ページ・スペースにアクセスすることができない;および(2)内部ECC生成をバイパスし、ユーザが拡張ページ・スペースにアクセスし、かつ自己のECCアルゴリズムを使用することを可能にする。別のオプション(オプション2)では、ECCシンドロームビットを専用スペースに保存する。ブロック・サイズによっては、これは、CRスペースのうちの幾分かを使用することもある。
部分的ページ書き込みに書込める最低量はECCワードサイズと等しく、現在の好ましい態様中では目下8Bにセットされている。いくつかのオプションがある。オプション1では、メモリ装置が部分的ページ書き込みを認識し、そのページのECCを不能にする。このオプションには下位の互換性問題はないが、部分書き込み後のデータ保全が危険にさらされる。オプション2は、N回用書換えECC機能を加えたオプション1と同じである。メモリ装置は部分的書き込みを認識し、以前のECCシンドロームを無効にし、新しい位置に新しいシンドロームを書込む程スマートである。128Bおよびそれ以上という大きなブロック・サイズを持ち、これで、ブロック当たり2〜3回の書換え用に十分な記憶機能を提供できる。より複雑になるが、これは従来の解決法より改善されている。オプション3はスマートECCシンドロームの更新を提供する。ECCワードへなした第1の書き込み時に、シンドロームが書込まれる。ECCワードへなした第2の書き込みはシンドロームを無効にし、データはそのECC保護を解くであろう。次いでECCワードに付加後、それが完全に書込まれると、新しい(かつ究極の)シンドロームが作成され、データは以後永久に保護される。唯一の無保護なエリアは、ECCワードで完全に満たされていない少数の動的エリアであるので、これでDPMのリスクは劇的に縮まる。オプション4は冗長列の修復能力を加えたオプション2と同じである。オプション2でN回書換え後、N+1回目の書換えで列の修復が始動され、書換えカウントがリセットする。
別の代案では、読込み後データ・スクラッビングのテクニックが提供される。このテクニックでは、読取りの間、前方ストレスが妨害の主な原因である場合、ECC修正ロジックの状態をチェックし、状態が悪くなると直ちに、悪いビットを識別できる。その後、既存のCRスキームを使用して修復することができる。もし2つのビットが同時に悪くなるのでなければ、このスキームは読み取り妨害を追及するのに非常に有効な方法になる。
好ましい態様のホスト装置およびメモリ装置のブロックダイヤグラムである。 好ましい態様のコントローラのブロックダイヤグラムである。 好ましい態様のメモリマップである。 好ましい態様のスマート・フィルタ・ロジックのオペレーションを図示するフローチャートである。 好ましい態様の32バイトファイル・リスティング構造の図表である。 一態様のFATテーブルの図表である。 図6のFATテーブルに関連するファイル・リスティングの例である。 好ましい態様のスマート・フィルタ・オペレーションを例証する。 好ましい態様のスマート・フィルタ・オペレーションを例証する。 サイドバンドエリアがリマッピング情報を保存する場合にデータを読み取るための一態様の方法のフローチャートである。 好ましい態様の動的リマッピング割付け方法のフローチャートである。 好ましい態様のリマッピング例の中で使用されるメモリマップである。 好ましい態様のパリティ・ビットのレイアウトの例証である。

Claims (22)

  1. メモリ装置であって、
    メモリ配列と、
    該メモリ配列と連通しているコントローラとを備え、
    該コントローラは、
    (a)該メモリ配列の第1アドレスに、データを書込むことの要求を、該メモリ装置と連通しているホスト装置から受け取り、
    (b)該第1アドレスに書込まれるよう要求された該データを該第1アドレスに格納されているデータと比較し、
    (c)(b)における該比較に基づいて、
    (c1)該第1アドレスに該データを書き込む、
    (c2)該第1アドレスに該データを書込まずに、該ホスト装置に該データが該第1アドレスに書込まれたと通知する、および
    (c3)該第1のアドレスの代わりに第2アドレスに該データを書き込む、のうちの一つを実行するように作動する
    ことを特徴とするメモリ装置。
  2. 該コントローラが、一組のプログラムされていないメモリ・セルを含む該第1アドレスに応じて、(c1)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  3. 該コントローラが、該第1アドレスに書込むように要求された該データが該第1アドレスに格納されているデータに付加するものである場合には、(c1)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  4. 該第1アドレスに含まれている該データが、ファイル・システム構造を構成することを特徴とする請求項1に記載のメモリ装置。
  5. 該コントローラが、以前に割り付けられたアドレスが空きであることを示すデータをファイル割付けテーブルに書込むよう試みている該ホスト装置に対応して、(c2)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  6. 該コントローラが、ファイル・リスティングに前もって定めたフィールドにのみデータを書込むよう試みている該ホスト装置に対応して、(c2)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  7. 該コントローラが、最後にアクセスされた日付フィールドにのみデータを書込もうとしている該ホスト装置に対応して、(c2)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  8. 該コントローラが、ディレクトリ・リスティングの前もって定めたフィールドにのみデータを書込もうとしている該ホスト装置に応じて、(c2)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  9. 該コントローラが、該第1アドレスに書込まれるよう要求された該データが該第1アドレスに格納されている該データとは異なる場合に、(c3)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  10. 該コントローラが、該第1アドレスに書込まれるよう要求された該データが該第1アドレスに格納されている該データとは異なり、該差分がファイル・リスティング中の前もって定めたフィールドだけに存在しない場合には、(c3)を実行するように作動することを特徴とする請求項1に記載のメモリ装置。
  11. 該コントローラが、該第1アドレスに書込まれるよう要求された該データが該第1アドレスに格納されている該データとは異なり、該差分がディレクトリ・リスティングに前もって定めたフィールドだけに存在しない場合には、(c3)を実行するように作動することを特徴とする請求項1に記載のメモリ装置
  12. 該コントローラが、該メモリ装置をフォーマットしようとする試みに応じて、エラーを発生するように作動することを特徴とする請求項1に記載のメモリ装置。
  13. 該コントローラが、ファイル割付けテーブルのアドレスに先行するアドレスにデータを書込もうとする試みに応じて、エラーを発生するように作動することを特徴とする請求項1に記載のメモリ装置。
  14. 該コントローラが、該メモリ配列に前もって定めたアドレスにデータを書込もうとする試みに応じて、更にエラーを発生するように作動することを特徴とする請求項1に記載のメモリ装置。
  15. 該コントローラが、該メモリ配列が一杯であることに応じて、エラーを発生するように作動することを特徴とする請求項1に記載のメモリ装置。
  16. 該コントローラが、(c3)を実行する時に該第2アドレスがもはや空きでないことを示すために、更に該メモリ配列中のファイル割付けテーブルを更新するように作動することを特徴とする請求項1に記載のメモリ装置。
  17. 該メモリ配列が、部分的に書込みできる論理ユニットへ組織化され、それによって、該ロジック・ユニットが一杯になるまでは、複数の書込みオペレーションが個々の論理ユニットに実行することができ、最後の書き込みオペレーションが論理ユニットになされる場合に、該コントローラが、該論理ユニット用にECCデータを書込むように作動することを特徴とする請求項1に記載のメモリ装置。
  18. 該コントローラが、
    第1ページレジスタ、と
    第2ページレジスタとを備え、
    該第1アドレスに格納されている該データは、該第1ページレジスタに書込まれ、一方、該第1アドレスに書込まれるべき該データが該第2ページレジスタに書込まれる
    ことを特徴とする請求項1に記載のメモリ装置。
  19. 該メモリ配列は、一回プログラム可能なメモリ配列を含むことを特徴とする請求項1に記載のメモリ装置。
  20. 該メモリ配列は数回プログラム可能なメモリ配列を含むことを特徴とする請求項1に記載のメモリ装置。
  21. 該メモリ配列が三次元のメモリ配列を含むことを特徴とする請求項1に記載のメモリ装置。
  22. 該メモリ装置が、該ホスト装置上の対応する電気的コネクターと対をなすように設定された電気的なコネクターを有し、また、該ホスト装置が多数回書込みファイル・システムを含むことを特徴とする請求項1に記載のメモリ装置。
JP2007529862A 2004-08-24 2005-07-22 消去可能/書換え可能メモリ用に設計されたホスト装置で一回又は数回プログラム可能なメモリを使用する方法および装置 Expired - Fee Related JP4852548B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60435304P 2004-08-24 2004-08-24
US60/604,353 2004-08-24
US10/956,463 US7398348B2 (en) 2004-08-24 2004-09-30 Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US10/956,463 2004-09-30
PCT/US2005/026054 WO2006023196A2 (en) 2004-08-24 2005-07-22 Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewriteable memory

Publications (3)

Publication Number Publication Date
JP2008511072A JP2008511072A (ja) 2008-04-10
JP2008511072A5 JP2008511072A5 (ja) 2008-09-11
JP4852548B2 true JP4852548B2 (ja) 2012-01-11

Family

ID=35944823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007529862A Expired - Fee Related JP4852548B2 (ja) 2004-08-24 2005-07-22 消去可能/書換え可能メモリ用に設計されたホスト装置で一回又は数回プログラム可能なメモリを使用する方法および装置

Country Status (10)

Country Link
US (4) US7398348B2 (ja)
EP (3) EP2088509A3 (ja)
JP (1) JP4852548B2 (ja)
KR (1) KR101139224B1 (ja)
CN (2) CN101401076B (ja)
AT (1) ATE505762T1 (ja)
AU (1) AU2005277792A1 (ja)
CA (1) CA2572788A1 (ja)
DE (1) DE602005027471D1 (ja)
WO (1) WO2006023196A2 (ja)

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7800932B2 (en) * 2005-09-28 2010-09-21 Sandisk 3D Llc Memory cell comprising switchable semiconductor memory element with trimmable resistance
EP2341431A1 (en) 2004-03-13 2011-07-06 Adaptive Computing Enterprises, Inc. System and method of providing a self-optimizing reservation in space of compute resources
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
KR101404083B1 (ko) * 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
US20060139995A1 (en) * 2004-12-28 2006-06-29 Ali Keshavarzi One time programmable memory
US8452938B1 (en) 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7904518B2 (en) 2005-02-15 2011-03-08 Gytheion Networks Llc Apparatus and method for analyzing and filtering email and for providing web related services
US8402109B2 (en) 2005-02-15 2013-03-19 Gytheion Networks Llc Wireless router remote firmware upgrade
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
CA2601384A1 (en) * 2005-03-16 2006-10-26 Cluster Resources, Inc. Automatic workload transfer to an on-demand center
US9225663B2 (en) 2005-03-16 2015-12-29 Adaptive Computing Enterprises, Inc. System and method providing a virtual private cluster
EP3203374B1 (en) 2005-04-07 2021-11-24 III Holdings 12, LLC On-demand access to compute resources
JP2009502962A (ja) * 2005-07-29 2009-01-29 ザ ジェネラル ホスピタル コーポレイション 皮膚損傷を軽減するための方法、及び組成物
US7689807B2 (en) * 2006-02-09 2010-03-30 Sigmatel, Inc. Mass storage device, mass storage controller and methods for use therewith
JP4911576B2 (ja) * 2006-03-24 2012-04-04 株式会社メガチップス 情報処理装置および追記型メモリ利用方法
US7851761B2 (en) * 2006-03-27 2010-12-14 Liviu Popa-Simil Multi-band terahertz receiver and imaging device
US8429375B1 (en) * 2006-06-16 2013-04-23 Synopsys, Inc. Memory management unit (MMU) to make only one time programmable (OTP) memory appear multiple times programmable (MTP)
US7783956B2 (en) * 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
US7450414B2 (en) * 2006-07-31 2008-11-11 Sandisk 3D Llc Method for using a mixed-use memory array
US7486537B2 (en) * 2006-07-31 2009-02-03 Sandisk 3D Llc Method for using a mixed-use memory array with different data states
WO2008016419A2 (en) * 2006-07-31 2008-02-07 Sandisk 3D Llc Mixed-use memory array and method for use therewith
US20080023790A1 (en) * 2006-07-31 2008-01-31 Scheuerlein Roy E Mixed-use memory array
JP5072292B2 (ja) * 2006-09-05 2012-11-14 キヤノン株式会社 撮像装置及びその制御方法
US7730270B2 (en) 2006-09-29 2010-06-01 Sandisk Corporation Method combining once-writeable and rewriteable information storage to support data processing
TWI376599B (en) * 2006-09-29 2012-11-11 Sandisk Corp Method and nonvolatile memory system of managing file allocation table information
US7630225B2 (en) 2006-09-29 2009-12-08 Sandisk Corporation Apparatus combining once-writeable and rewriteable information storage to support data processing
US7752412B2 (en) * 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information
US7681008B2 (en) * 2006-09-29 2010-03-16 Sandisk Corporation Systems for managing file allocation table information
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US8578127B2 (en) 2009-09-09 2013-11-05 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
WO2008070812A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for data storage using progressive raid
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8935302B2 (en) * 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8095723B2 (en) * 2007-02-16 2012-01-10 Electronics And Telecommunications Research Institute Log-based flash translation layer and operating method thereof
US7917479B2 (en) * 2007-03-20 2011-03-29 Micron Technology, Inc. Non-volatile memory devices, systems including same and associated methods
US7613857B2 (en) * 2007-03-30 2009-11-03 Sandisk Corporation Memory device with a built-in memory array and a connector for a removable memory device
US7633799B2 (en) * 2007-03-30 2009-12-15 Sandisk Corporation Method combining lower-endurance/performance and higher-endurance/performance information storage to support data processing
US20080244203A1 (en) * 2007-03-30 2008-10-02 Gorobets Sergey A Apparatus combining lower-endurance/performance and higher-endurance/performance information storage to support data processing
US7603499B2 (en) * 2007-03-30 2009-10-13 Sandisk Corporation Method for using a memory device with a built-in memory array and a connector for a removable memory device
US8010502B2 (en) * 2007-04-13 2011-08-30 Harris Corporation Methods and systems for data recovery
US7890711B2 (en) * 2007-04-18 2011-02-15 Oracle America, Inc. Methods, apparatus, and program products for improved finalization
US8533847B2 (en) * 2007-05-24 2013-09-10 Sandisk Il Ltd. Apparatus and method for screening new data without impacting download speed
US7970919B1 (en) * 2007-08-13 2011-06-28 Duran Paul A Apparatus and system for object-based storage solid-state drive and method for configuring same
US9824006B2 (en) * 2007-08-13 2017-11-21 Digital Kiva, Inc. Apparatus and system for object-based storage solid-state device
US11237956B2 (en) * 2007-08-13 2022-02-01 Digital Kiva, Inc. Apparatus and system for object-based storage solid-state device
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US20090144513A1 (en) * 2007-12-03 2009-06-04 Pitney Bowes Inc. Database update method
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
JP4479806B2 (ja) * 2008-02-19 2010-06-09 ソニー株式会社 記録制御装置、記録システム、記録メディア制御方法及びプログラム
US20100017558A1 (en) 2008-04-11 2010-01-21 Richard Matthew Fruin Memory device operable in read-only and re-writable modes of operation
US8386664B2 (en) * 2008-05-22 2013-02-26 International Business Machines Corporation Reducing runtime coherency checking with global data flow analysis
US8281295B2 (en) * 2008-05-23 2012-10-02 International Business Machines Corporation Computer analysis and runtime coherency checking
US8285670B2 (en) 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US8156404B1 (en) * 2008-08-29 2012-04-10 Nvidia Corporation L2 ECC implementation
US9020993B2 (en) 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
US9104686B2 (en) 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US8375192B2 (en) * 2008-12-16 2013-02-12 Sandisk Il Ltd. Discardable files
US8205060B2 (en) * 2008-12-16 2012-06-19 Sandisk Il Ltd. Discardable files
US8880776B2 (en) * 2008-12-16 2014-11-04 Sandisk Il Ltd. Data access at a storage device using cluster information
US20100153474A1 (en) * 2008-12-16 2010-06-17 Sandisk Il Ltd. Discardable files
US8849856B2 (en) * 2008-12-16 2014-09-30 Sandisk Il Ltd. Discardable files
US9015209B2 (en) * 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US20100235329A1 (en) * 2009-03-10 2010-09-16 Sandisk Il Ltd. System and method of embedding second content in first content
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20100333155A1 (en) * 2009-06-30 2010-12-30 Philip David Royall Selectively using local non-volatile storage in conjunction with transmission of content
CN101610477B (zh) 2009-07-13 2012-09-05 中兴通讯股份有限公司 多媒体消息业务的处理系统和方法
CN102696010B (zh) * 2009-09-08 2016-03-23 才智知识产权控股公司(2) 用于将数据高速缓存在固态存储设备上的装置、系统和方法
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
KR101689420B1 (ko) 2009-09-09 2016-12-23 샌디스크 테크놀로지스 엘엘씨 저장 장치의 전력 감소 관리를 위한 장치, 시스템, 및 방법
US8255655B2 (en) 2009-10-02 2012-08-28 Sandisk Technologies Inc. Authentication and securing of write-once, read-many (WORM) memory devices
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
TWI407327B (zh) * 2009-11-24 2013-09-01 Phison Electronics Corp 資料處理方法、系統及儲存裝置控制器
JP5798737B2 (ja) * 2009-12-28 2015-10-21 パナソニックIpマネジメント株式会社 半導体記録装置、半導体記録装置の制御方法及び半導体記録システム
JP2011141638A (ja) * 2010-01-06 2011-07-21 Sony Corp 情報処理装置および方法、並びにプログラム
WO2011128867A1 (en) 2010-04-15 2011-10-20 Ramot At Tel Aviv University Ltd. Multiple programming of flash memory without erase
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8549229B2 (en) 2010-08-19 2013-10-01 Sandisk Il Ltd. Systems and methods for managing an upload of files in a shared cache storage system
US8463802B2 (en) 2010-08-19 2013-06-11 Sandisk Il Ltd. Card-based management of discardable files
TWI443666B (zh) * 2010-08-31 2014-07-01 Silicon Motion Inc 單次可編程記憶體之資料編程電路及方法
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
TWI447736B (zh) 2010-09-13 2014-08-01 Silicon Motion Inc 單次可編程記憶體之資料編程電路及方法
TWI420305B (zh) * 2010-10-08 2013-12-21 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
WO2012082792A2 (en) 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8788849B2 (en) 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
CN102902672B (zh) * 2011-07-25 2014-04-16 腾讯科技(深圳)有限公司 清理文件系统的方法和装置
US9925021B2 (en) 2011-08-29 2018-03-27 David Regev Dental implant systems and methods for accessing intra cavity areas therethrough
US9292668B1 (en) * 2011-09-01 2016-03-22 Google Inc. Systems and methods for device authentication
US9152641B2 (en) 2011-12-15 2015-10-06 Sandisk Technologies Inc. Method and system for providing storage device file location information
US8984032B2 (en) 2011-12-15 2015-03-17 Sandisk Technologies Inc. Method and system for providing storage device file location information
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9666241B2 (en) 2012-01-19 2017-05-30 Quixant Plc Firmware protection and validation
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US8914570B2 (en) 2012-05-04 2014-12-16 International Business Machines Corporation Selective write-once-memory encoding in a flash based disk cache memory
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US9183082B2 (en) 2013-01-29 2015-11-10 Qualcomm Incorporated Error detection and correction of one-time programmable elements
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
TWI494944B (zh) * 2013-10-25 2015-08-01 Phison Electronics Corp 記憶體模組偵測方法、記憶體控制電路單元及儲存裝置
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9858990B2 (en) 2014-12-18 2018-01-02 Apple Inc. Hardware-based performance equalization for storage devices
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9785354B2 (en) * 2015-06-29 2017-10-10 International Business Machines Corporation Selective write control
US10657274B2 (en) * 2015-06-29 2020-05-19 Samsng Electronics Co., Ltd. Semiconductor device including memory protector
US20170038994A1 (en) * 2015-08-06 2017-02-09 Kabushiki Kaisha Toshiba Storage device and data reading method
US9760301B2 (en) * 2015-08-13 2017-09-12 Texas Instruments Incorporated WOM code emulation of EEPROM-type devices
WO2017058184A1 (en) * 2015-09-30 2017-04-06 Hewlett Packard Enterprise Development Lp Remapping operations
JP6426666B2 (ja) * 2016-07-27 2018-11-21 ファナック株式会社 プログラマブルコントローラ
US10838637B2 (en) * 2018-02-08 2020-11-17 Micron Technology, Inc. Status management in storage backed memory package
TWI661302B (zh) * 2018-06-25 2019-06-01 慧榮科技股份有限公司 實體儲存對照表產生裝置及方法以及電腦程式產品
TWI705329B (zh) * 2018-06-25 2020-09-21 慧榮科技股份有限公司 實體儲存對照表產生裝置及方法以及電腦程式產品
US11042436B2 (en) 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
US11200118B2 (en) 2019-08-29 2021-12-14 Micron Technology, Inc. Semiconductor device with modified command and associated methods and systems
US10963336B2 (en) * 2019-08-29 2021-03-30 Micron Technology, Inc. Semiconductor device with user defined operations and associated methods and systems
KR102493864B1 (ko) * 2021-11-16 2023-01-31 삼성전자주식회사 스토리지 장치의 동작 방법 및 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법
US11960397B2 (en) * 2022-06-16 2024-04-16 Western Digital Technologies, Inc. Data mapping comparison for improved synchronization in data storage devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1331548A2 (en) * 2002-01-18 2003-07-30 Lexar Media, Inc. File management of one-time-programmable non volatile memory devices
US20040098428A1 (en) * 2001-11-13 2004-05-20 Schulze Paul E. Memory card having one-time programmable memory

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2346801A (en) 1942-06-11 1944-04-18 Blaw Knox Co Fluid dosing device
WO1983003912A1 (en) 1982-04-30 1983-11-10 Massachusetts Institute Of Technology Method and apparatus for reusing non-erasable memory media
US4608300A (en) * 1983-06-21 1986-08-26 Ciba-Geigy Corporation Fibre composite materials impregnated with a curable epoxide resin matrix
US4740890A (en) 1983-12-22 1988-04-26 Software Concepts, Inc. Software protection system with trial period usage code and unlimited use unlocking code both recorded on program storage media
US5247494A (en) 1984-06-08 1993-09-21 Matsushita Electric Industrial Co. Ltd. Method for recording and reproducing information on and from an optical disk having a read-only recorded zone and a writable and readable zone using a spot laser light
US4646266A (en) 1984-09-28 1987-02-24 Energy Conversion Devices, Inc. Programmable semiconductor structures and methods for using the same
US4682318A (en) 1985-10-16 1987-07-21 Sony Corporation Method and apparatus for updating optical memory disc
US4953122A (en) 1986-10-31 1990-08-28 Laserdrive Ltd. Pseudo-erasable and rewritable write-once optical disk memory system
US5218685A (en) 1987-01-02 1993-06-08 General Electric Company System for write once read many optical storage devices to appear rewritable
US5119291A (en) 1987-03-26 1992-06-02 International Business Machines Corporation Modular data storage directories for large-capacity data storage units wherein the index to the records in a sector is located in the next adjacent sector
US5040110A (en) 1987-10-30 1991-08-13 Matsushita Electric Industrial Co., Ltd. Write once read many optical disc storage system having directory for storing virtual address and corresponding up-to-date sector address
US5029125A (en) 1989-03-07 1991-07-02 Drexler Technology Corporation Method of reading and writing files on nonerasable storage media
EP0392895B1 (en) * 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
US5266230A (en) * 1989-04-26 1993-11-30 Tonen Corporation Electroviscous fluid containing antioxidant and/or corrosion inhibitor
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
CA2045799C (en) 1990-07-11 1999-03-23 Kenneth L. Thompson File system with read/write and read only storage
US5537652A (en) 1990-08-20 1996-07-16 International Business Machines Corporation Data file directory system and method for writing data file directory information
US5265230A (en) 1990-08-29 1993-11-23 Hewlett-Packard Company Method and apparatus for determining sector status in a data storage device by writing a status of read-only, writable, or obliterated in an error recovery area of each sector
JP3315711B2 (ja) 1990-09-17 2002-08-19 ヒューレット・パッカード・カンパニー 磁気光学ディスクデータ記憶装置の書き込み管理システム及び方法
GB2251323B (en) 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5321824A (en) 1991-04-22 1994-06-14 International Business Machines Corporation Accessing last recorded data in a continuation chain
US5448728A (en) 1991-08-08 1995-09-05 Sharp Kabushiki Kaisha Storage medium control system for controlling a write-once read-many storage medium
US5261072A (en) 1991-10-31 1993-11-09 Tandy Corporation Compact disk data transfer system using cache memory
TW261687B (ja) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
JP3445304B2 (ja) 1993-03-29 2003-09-08 株式会社東芝 ファイル管理装置
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5437012A (en) 1993-04-19 1995-07-25 Canon Information Systems, Inc. System for updating directory information and data on write once media such as an optical memory card
US5463772A (en) 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
JPH0745085A (ja) 1993-07-30 1995-02-14 Tec Corp データ書込装置及びデータ読取装置
US5559778A (en) 1993-12-28 1996-09-24 Sony Corporation Apparatus and method for completing an incomplete recording on an optical disc
CA2145379C (en) 1994-03-24 1999-06-08 William P. Robbins Method and apparatus for addressing memory
US5590320A (en) 1994-09-14 1996-12-31 Smart Storage, Inc. Computer file directory system
AU3723395A (en) 1994-09-14 1996-03-29 Micropolis Corporation Method of pre-caching data utilizing thread lists and multimedia editing system using such pre-caching
US5761700A (en) 1994-12-27 1998-06-02 Motorola Inc. ROM mapping and inversion apparatus and method
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6138203A (en) 1995-11-10 2000-10-24 Sony Corporation Information processing apparatus and method enabling a write-once recording medium to be utilized as a rewriteable recording medium
US5752005A (en) 1996-01-22 1998-05-12 Microtest, Inc. Foreign file system establishing method which uses a native file system virtual device driver
US5832263A (en) 1996-03-15 1998-11-03 Digidox, Inc. System and method for in-place modification of information recorded in read-only storage using modifiable non-volatile storage associated with an agent
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US5832525A (en) 1996-06-24 1998-11-03 Sun Microsystems, Inc. Disk fragmentation reduction using file allocation tables
KR100205539B1 (ko) 1996-07-19 1999-07-01 윤종용 하드디스크의 중첩 분할 방법
WO1998007099A1 (en) 1996-08-14 1998-02-19 Advanced Micro Devices, Inc. A microcontroller including an internal memory unit and circuitry to generate an associated enable signal
US5907855A (en) 1996-10-15 1999-05-25 Micron Technology, Inc. Apparatus and method for reducing programming cycles for multistate memory system
US5835396A (en) 1996-10-17 1998-11-10 Zhang; Guobiao Three-dimensional read-only memory
JP3220041B2 (ja) 1997-04-08 2001-10-22 北海道日本電気ソフトウェア株式会社 Cd−rom読み出しシステムおよびcd−rom読み出し方法
NO972803D0 (no) 1997-06-17 1997-06-17 Opticom As Elektrisk adresserbar logisk innretning, fremgangsmåte til elektrisk adressering av samme og anvendelse av innretning og fremgangsmåte
JP3175648B2 (ja) 1997-07-07 2001-06-11 ソニー株式会社 記憶装置及びデータの書込み方法
JPH1145085A (ja) 1997-07-24 1999-02-16 Takashi Kasamatsu ピアノ
NO973993L (no) 1997-09-01 1999-03-02 Opticom As Leseminne og leseminneinnretninger
JPH11203191A (ja) 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
JPH11149788A (ja) 1997-11-17 1999-06-02 Oki Electric Ind Co Ltd 半導体記憶装置及びその制御方法
US6073280A (en) * 1998-02-23 2000-06-13 Farnum; Randal J. Rescue and invalid support belt
US6108236A (en) * 1998-07-17 2000-08-22 Advanced Technology Materials, Inc. Smart card comprising integrated circuitry including EPROM and error check and correction system
US6034882A (en) 1998-11-16 2000-03-07 Matrix Semiconductor, Inc. Vertically stacked field programmable nonvolatile memory and method of fabrication
MY122279A (en) * 1999-03-03 2006-04-29 Sony Corp Nonvolatile memory and nonvolatile memory reproducing apparatus
US6351838B1 (en) 1999-03-12 2002-02-26 Aurora Communications, Inc Multidimensional parity protection system
US6377526B1 (en) 1999-04-01 2002-04-23 Plasmon Ide, Inc. Erasable WORM optical disk and method of writing thereto multiple times
US6370642B1 (en) 1999-05-21 2002-04-09 Advanced Micro Devices, Inc. Programming the size of a broad-specific boot ROM
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US6615253B1 (en) * 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6490703B1 (en) 1999-09-30 2002-12-03 Intel Corporation Bus power savings using selective inversion in an ECC system
JP3249959B2 (ja) 1999-10-12 2002-01-28 株式会社ソニー・コンピュータエンタテインメント 可搬型記憶装置及びメモリカード
DE60129682T2 (de) * 2000-03-29 2008-04-30 Vadium Technology Inc., Seattle Einmalige pad-verschlüsselung mit zentralschlüsseldienst und schlüsselfähigen zeichen
US6775423B2 (en) 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
US6598135B1 (en) 2000-05-03 2003-07-22 Plasmon Ide System and method for defining rewriteable data storage media as write once data storage media
JP2002050157A (ja) 2000-08-03 2002-02-15 Hitachi Ltd 情報記録媒体及び情報記録再生装置
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US6424581B1 (en) 2000-08-14 2002-07-23 Matrix Semiconductor, Inc. Write-once memory array controller, system, and method
US6545891B1 (en) 2000-08-14 2003-04-08 Matrix Semiconductor, Inc. Modular memory device
US6515888B2 (en) 2000-08-14 2003-02-04 Matrix Semiconductor, Inc. Low cost three-dimensional memory array
US6772274B1 (en) 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
US6584541B2 (en) 2000-09-15 2003-06-24 Matrix Semiconductor, Inc. Method for storing digital information in write-once memory array
US20030120858A1 (en) 2000-09-15 2003-06-26 Matrix Semiconductor, Inc. Memory devices and methods for use therewith
JP3898430B2 (ja) 2000-09-18 2007-03-28 株式会社日立製作所 光記録装置およびそれに用いる光ディスク
US6778974B2 (en) 2001-02-02 2004-08-17 Matrix Semiconductor, Inc. Memory device and method for reading data stored in a portion of a memory device unreadable by a file system of a host device
US20020108054A1 (en) 2001-02-02 2002-08-08 Moore Christopher S. Solid-state memory device storing program code and methods for use therewith
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
EP1532520A2 (en) * 2001-12-10 2005-05-25 Incipient, Inc. Fast path for performing data operations
US6563745B1 (en) 2001-12-14 2003-05-13 Matrix Semiconductor, Inc. Memory device and method for dynamic bit inversion
US6904492B2 (en) * 2001-12-19 2005-06-07 Hewlett-Packard Development Company, L.P. Write-once memory device including non-volatile memory for temporary storage
US6950918B1 (en) * 2002-01-18 2005-09-27 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6888785B2 (en) 2002-01-25 2005-05-03 Sun Microsystems, Inc. Fault tolerance mechanism for a storage device that stores data in stacks within an integral storage medium
AU2003201837A1 (en) * 2002-04-01 2003-10-23 Sony Corporation Storage medium and storage medium recording method
ATE401599T1 (de) 2002-04-30 2008-08-15 Lexar Media Inc Dateienverwaltung für einmalig programmierbare nichtflüchtige speicheranordnungen
US20040088474A1 (en) 2002-10-30 2004-05-06 Lin Jin Shin NAND type flash memory disk device and method for detecting the logical address
US7051251B2 (en) 2002-12-20 2006-05-23 Matrix Semiconductor, Inc. Method for storing data in a write-once memory array using a write-many file system
US20040153902A1 (en) * 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7240277B2 (en) * 2003-09-26 2007-07-03 Texas Instruments Incorporated Memory error detection reporting
US7106636B2 (en) * 2004-06-22 2006-09-12 Intel Corporation Partitionable memory device, system, and method
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US7752412B2 (en) * 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040098428A1 (en) * 2001-11-13 2004-05-20 Schulze Paul E. Memory card having one-time programmable memory
EP1331548A2 (en) * 2002-01-18 2003-07-30 Lexar Media, Inc. File management of one-time-programmable non volatile memory devices
JP2003257132A (ja) * 2002-01-18 2003-09-12 Lexar Media Inc 1回プログラム可能な不揮発性メモリデバイスのファイル管理

Also Published As

Publication number Publication date
JP2008511072A (ja) 2008-04-10
US20060047920A1 (en) 2006-03-02
WO2006023196A3 (en) 2008-09-25
DE602005027471D1 (de) 2011-05-26
EP2088509A2 (en) 2009-08-12
EP1782209B1 (en) 2011-04-13
EP2088510A3 (en) 2009-08-26
AU2005277792A1 (en) 2006-03-02
KR20070046844A (ko) 2007-05-03
US20070208907A1 (en) 2007-09-06
CN101401076B (zh) 2011-05-18
ATE505762T1 (de) 2011-04-15
EP2088510A2 (en) 2009-08-12
KR101139224B1 (ko) 2012-04-20
CN102163133B (zh) 2013-07-10
US20070208908A1 (en) 2007-09-06
US8209476B2 (en) 2012-06-26
EP1782209A4 (en) 2009-04-22
WO2006023196A2 (en) 2006-03-02
CA2572788A1 (en) 2006-03-02
US20110047416A1 (en) 2011-02-24
US7689805B2 (en) 2010-03-30
EP1782209A2 (en) 2007-05-09
CN101401076A (zh) 2009-04-01
EP2088509A3 (en) 2009-08-26
CN102163133A (zh) 2011-08-24
US7398348B2 (en) 2008-07-08
US7861058B2 (en) 2010-12-28

Similar Documents

Publication Publication Date Title
JP4852548B2 (ja) 消去可能/書換え可能メモリ用に設計されたホスト装置で一回又は数回プログラム可能なメモリを使用する方法および装置
JP2008511072A5 (ja)
US8266366B2 (en) Memory device operable in read-only and write-once, read-many (WORM) modes of operation
US7752412B2 (en) Methods of managing file allocation table information
US7681008B2 (en) Systems for managing file allocation table information
JP4238514B2 (ja) データ記憶装置
US10055147B2 (en) Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060161725A1 (en) Multiple function flash memory system
US20100217927A1 (en) Storage device and user device including the same
WO2003056433A1 (fr) Dispositif a memoire et appareil d'enregistrement/reproduction utilisant ledit dispositif
JPH10124384A (ja) 不揮発性半導体メモリの制御方法
JP2011514568A (ja) ライトワンスメモリデバイスおよびライトメニーメモリデバイスを備えるコンピュータのストレージサブシステムおよび関連する方法
US8954692B2 (en) File protecting method and system, and memory controller and memory storage apparatus thereof
JP4242245B2 (ja) フラッシュrom制御装置
JP2007293917A (ja) メモリシステムの制御方法
WO2008042594A1 (en) Managing file allocation table information

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080722

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110715

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110811

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110912

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111024

R150 Certificate of patent or registration of utility model

Ref document number: 4852548

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141028

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees