JPH06202821A - 固体メモリディスク並びにそれを制御する方法及び装置 - Google Patents

固体メモリディスク並びにそれを制御する方法及び装置

Info

Publication number
JPH06202821A
JPH06202821A JP29152993A JP29152993A JPH06202821A JP H06202821 A JPH06202821 A JP H06202821A JP 29152993 A JP29152993 A JP 29152993A JP 29152993 A JP29152993 A JP 29152993A JP H06202821 A JPH06202821 A JP H06202821A
Authority
JP
Japan
Prior art keywords
sector
block
microprocessor
data
cleanup
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
JP29152993A
Other languages
English (en)
Other versions
JP3672332B2 (ja
Inventor
Wells Stephen
スティーブン・ウェルズ
N Husban Robert
ロバート・エヌ・ハズバン
Robinson Kurt
カート・ロビンソン
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JPH06202821A publication Critical patent/JPH06202821A/ja
Application granted granted Critical
Publication of JP3672332B2 publication Critical patent/JP3672332B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • 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/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

(57)【要約】 【目的】 ポータブルコンピュータで使用するに適した
固体メモリディスク及びそれを制御する方法を提供す
る。 【構成】 固体ディスクは、データのセクタを記憶する
FLASHメモリデバイスのアレイを含む。FLASH
アレイ中の各々のメモリのブロックは多数のデータのセ
クタを記憶するデータスペースと、ブロックセクタ変換
テーブルとを含む。ブロックセクタ変換テーブルは、ブ
ロックのデータスペースに記憶されている各々のデータ
のセクタをセクタ番号によって識別する。固体ディスク
は制御装置をさらに含む。制御装置はアレイへのセクタ
データの書込みと、アレイからのデータのセクタの読取
りとを管理する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータ記憶システ
ムの分野に関する。特に、本発明は固体メモリディスク
に関する。
【0002】
【従来の技術】従来の多くのパーソナルコンピュータは
数多くの種類のメモリ記憶デバイスを含んでいる。ハー
ド磁気ディスクドライブは通常は大量記憶のために使用
され、他の目的のためには様々に異なる種類の半導体メ
モリが使用される。
【0003】ハード磁気ディスクドライブの不揮発性は
それらが使用する主な理由の1つである。ハードドライ
ブはデータを失うことなくターンオン、オフ可能であ
る。ハードドライブは複数の同心のトラックにデータを
記憶する。各々のトラックはいくつかのセクタを含み、
各セクタの長さは通常は512バイトである。磁気ディ
スクドライブへの読取りと書込みは一度に1ビットずる
起こる。磁気ディスクドライブに記憶される典型的なユ
ーザーファイルは、ディスクドライブの表面に無作為に
位置する多数のセクタを占めている。ファイル割当てテ
ーブル(FAT)にファイルに関わるポインタの連鎖を
記憶することにより、ファイルの各セクタを位置指定で
きる。各々のポインタはファイルの次のセクタを指示す
る。
【0004】ハードドライブにはいくつかの欠点があ
る。ハードドライブの大きさ、特にその高さは、ポータ
ブルコンピュータやラップトップコンピュータに使用す
るのにハードドライブを興味少ないものとしてしまうこ
とが多い。ハードディスクドライブの高さは、多くの場
合、コンピュータの可搬性を高めるためにコンピュータ
のサイズを縮小しようとする試みの中でそれを制限する
要因の1つであった。また、ハードドライブは相対的に
大量の電力を消費するので、バッテリー給電式のコンピ
ュータには一層不適切である。ハードドライブは、戸外
で使用されるコンピュータで使用するには理想的である
とはいいがたい。磁気ディスクドライブは振動や衝撃の
影響をきわめて受けやすい。加えて、磁気ドライブは広
い戸外の多くと関連して生じる塵や湿気を十分には許容
しない。
【0005】固体メモリとも呼ばれる半導体メモリに
は、磁気ディスクドライブの欠点の多くが見られない。
半導体メモリは小型で頑丈であり、消費する電力は磁気
ドライブと比べて著しく少ない。不揮発性半導体メモリ
の1つの型がFLASH電気的消去可能プログラム可能
読取り専用メモリ(FLASHメモリ)である。FLA
SHメモリはユーザー側でプログラム可能であり、一度
プログラムされたならば、消去されるまでそのデータを
保持する。FLASHメモリは、一度に1ブロック分の
メモリを消去することにより消去される。1つのブロッ
クは64Kバイト、すなわち、65535バイトという
相対的に大量のデータである。
【0006】フローティングゲートの正味電荷が中立で
あるとき、FLASHメモリセルは消去される。消去さ
れたFLASHビットを「1」という。逆に、フローテ
ィングゲートの正味電荷が負であるときには、FLAS
Hメモリセルはプログラムされる。プログラムされたF
LASHビットを「0」という。1つの例外はあるが、
あらかじめ消去せずにFLASHメモリセルを再プログ
ラムすることは不可能である。どのFLASHビットも
いつでも0にプログラムできる。
【0007】従来のFLASHメモリの中には、プログ
ラミングと消去を書込み状態機械又は指令レジスタによ
り内部制御するものがある。プログラミングと消去の内
部制御は、FLASHメモリをプログラムし、消去する
ために要求される知識と時間を少なくする。ところが、
内部制御にもかかわらず、FLASH消去時間は相対的
に遅いままである。消去サイクル時間は1から2秒程度
である。1つのデータのセクタの書込み又は再書込みの
たびに、それに先立って消去が起こらなければならない
場合、FLASHメモリを使用して磁気ディスクドライ
ブの書込み時間に近づけることは不可能である。
【0008】
【発明が解決しようとする課題】本発明の目的の1つ
は、ラップトップコンピュータやポータブルコンピュー
タで使用するのに適する固体メモリディスクを提供する
ことである。本発明の別の目的は、頑丈であり且つ衝撃
及び振動の影響を相対的に受けにくい固体メモリディス
クを提供することである。本発明の別の目的は、電力消
費を最小限に抑える固体メモリディスクを提供すること
である。本発明の別の目的は、戸外の塵と、湿度を許容
する固体メモリディスクを提供することである。本発明
の別の目的は、軽量である固体メモリディスクを提供す
ることである。本発明のさらに別の目的は、ハードディ
スクドライブの少なくとも2倍の速度を動作する固体メ
モリディスクを提供することである。
【0009】
【課題を解決するための手段】セクタごとにデータを記
憶する固体メモリディスクを説明する。固体ディスク
は、複数のデータのセクタを記憶するFLASHメモリ
半導体デバイスのアレイを含む。FLASHアレイ中の
各々のメモリのブロックは、数多くのデータのセクタを
記憶するデータスペースと、ブロックセクタ変換テーブ
ルとを含む。ブロックセクタ変換テーブルは、そのブロ
ックのデータスペースに記憶されている各々のデータの
セクタを見出しにより識別する。見出しはセクタデータ
と関連するセクタ番号と等しい論理セクタ番号を含む。
固体ディスクは、アレイを制御する制御装置をさらに含
む。制御装置の責務は数多くあるのであるが、その中で
も、制御装置はアレイへのセクタデータの書込みと、ア
レイからのデータのセクタの読取りとを管理する。制御
装置が与えられたセクタ番号と関連するデータのセクタ
を書込むための指令を受信するたびに、制御装置はその
セクタの以前のバージョンをシークする。与えられたセ
クタ番号と等しい論理セクタ番号を含む見出しを有する
以前のバージョンが位置指定されれば、それをダーティ
とマークする。その後、書込むべきデータのセクタに対
して異なる記憶場所にあるメモリスペースを割当てる。
最後に、割当てられたメモリスペースにそのデータのセ
クタを書込む。その結果、1つのセクタ番号と関連する
セクタデータは1つの固定記憶場所にとどまるのではな
く、FLASHアレイを巡って「浮動」することにな
る。制御装置は、セクタ番号を物理アドレスに変換する
ためにセクタ見出し変換テーブルをシークすることによ
り、データのセクタを読取る。
【0010】本発明のその他の目的、特徴及び利点は、
添付の図面と以下の詳細な説明とから明白になるであろ
う。
【0011】
【実施例】
I. 固体ディスクの概要 図1は、パーソナルコンピュータ50をブロック線図の
形で示す。パーソナルコンピュータ50は中央処理装置
(CPU)52と、コンピュータのユーザーに対して情
報を視覚表示するモニタ54とを含む。ユーザーはキー
ボード56によってCPU52にデータを入力すること
ができる。モニタ54に表示されたポインタを移動させ
るときには、ユーザーはマウス58を動かす。パーソナ
ルコンピュータ50は大容量記憶のためにハード磁気デ
ィスクではなく、本発明の固体メモリディスク60を使
用する。固体ディスク60は、不揮発性半導体メモリア
レイ62を制御するための固体ディスク制御装置を含
む。不揮発性半導体メモリアレイ62をFLASHアレ
イ62ともいう。
【0012】固体ディスク60はパーソナルコンピュー
タ50にいくつかの利点を与える。媒体は半導体チップ
であるので、大容量メモリの高さはパーソナルコンピュ
ータ50のサイズを縮小する上でそれを制限する要因に
はならなくなっている。さらに、フラッシュメモリアレ
イ62を形成する半導体チップは振動や衝撃の影響を相
対的に受けにくく且つ電力消費も少ないので、バッテリ
と組合わせて使用するのに適している。従って、固体デ
ィスク60はラップトップコンピュータ及びポータブル
コンピュータで使用するのに十分に適合する。
【0013】簡単に説明すると、本発明の固体ディスク
は不揮発性半導体アレイ62の中でセクタデータを「浮
動」させることによりセクタデータを記憶する。制御装
置は、1つのデータのセクタを書込むための指令を受信
するたびに、そのセクタの以前のバージョンをシークす
る。以前のバージョンを位置指定したならば、それをダ
ーティとマークする。その後、書込むべきデータのセク
タに対して、異なる記憶場所にあるメモリスペースを割
当てる。最後に、割当てられたメモリにセクタデータを
書込む。この方法の結果、1つの論理セクタ番号と関連
するデータは固体ディスク60中の1つの固定物理記憶
場所に対応しない。
【0014】 A.FLASHアレイとブロックファイル構造 固体ディスク制御装置64の制御の対象であるFLAS
Hアレイ62を理解することは、固体ディスク制御装置
64をさらに良く理解するうえで助けとなる。FLAS
Hアレイ62のプログラム特性と消去特性は固体ディス
ク制御装置64に大きな影響を及ぼす。FLASHアレ
イ62内部のFLASHデバイスは一度に1ブロックず
つ消去されなければならないが、一度に1バイトずつプ
ログラム可能である。一旦0にプログラムされたなら
ば、まず初めに1ブロック全体を消去しないとFLAS
Hメモリの1ビットを1にプログラムできない。メモリ
の消去済バイトは書込み可能な状態となっているので、
それらのバイトを「空き」という。
【0015】FLASHメモリの消去は低速のプロセス
である。データの1つのセクタを書込むたびに1回の消
去を実行するのは実用的ではない。512バイトである
1つのセクタを書込むだけのために128Kバイトの一
対のブロックの全体を消去しなければならないので、書
込みは遅くなり、また、電力消費の効率は悪くなってし
まうであろう。迅速なセクタ書込みを可能にするため
に、1つのセクタを書込むたびに、固体ディスク制御装
置64はデータの各セクタを新たな空き記憶場所に書込
む。この書込み方法の結果は、1つのセクタ番号と関連
してセクタデータのいくつかのバージョンが現れるとい
うことになる。セクタデータの細心のバージョンを「グ
ッドセクタ」、「有効セクタ」又は「ユーザーセクタ」
という。これに対し、セクタのそれ以前のバージョンは
無効であり、「ダーティ」とマークされる。
【0016】FLASHメモリは相対的に高価であるた
め、FLASHアレイ62内部のFLASHメモリの実
際の量はユーザーに対して利用可能であるとして挙げら
れた量を大きく越えることができない。言いかえれば、
FLASHアレイ62内部の予約メモリの量が不足して
いる場合、書込みに際してのメモリの可用性を確保する
ために、ダーティなセクタを空きメモリに変換しなけれ
ばならない。
【0017】図2は、FLASHアレイ62と、固体デ
ィスク制御装置64とをブロック線図の形で示す。一実
施例では、FLASHアレイ62は30個の1メガバイ
ト×8FLASHメモリチップを使用する。それらのF
LASHメモリは、消去とプログラミングを自動的に制
御する書込み状態機械を含む。データ圧縮を使用した場
合、それらの30個のFLASHメモリデバイスは40
メガバイトのメモリディスクとして機能する。各FLA
SHチップは一度に8ビットずつデータを入出力する。
語ごとの入出力を可能にするために、FLASHアレイ
62は複数対のFLASHデバイスとして編成されてい
るのであるが、そのうち一対のチップ66のみが示され
ている。一対のチップ66の上位チップ68は1つの語
の上位バイトを記憶し、下位チップ70は1つの語の下
位バイトを記憶する。このように、固体ディスク制御装
置64は各対のチップを単一の16ビット幅メモリデバ
イスとして扱うことができる。語ごとの入出力によっ
て、固体ディスクドライブ60は直列ビットストリーム
の入出力を使用する磁気ドライブと比較して高速という
利点を得ている。
【0018】各チップ対は、それぞれが128Kバイト
のメモリを含む16個のブロックとして編成されてい
る。メモリの各ブロックは多数のデータのセクタを記憶
できるので、各ブロックはデータの各セクタを識別し且
つ位置指定するためのブロックセクタ変換テーブル(B
STT)84を含む。
【0019】図3は、ブロック80と、そのブロック及
び他の全てのブロックが使用するファイル構造とを示
す。ブロック80は1語幅の構造として表わされている
が、実際には2つのFLASHチップに記憶されてい
る。各語の上位バイトは上位チップ68に記憶され、ま
た、各語の下位バイトは下位チップ70に記憶されてい
る。ブロック80のデータ構造はブロックセクタ変換テ
ーブル84と、データスペース86とを含む。ブロック
セクタ変化テーブル84は複数の見出しを記憶してい
る。見出しは1つの論理セクタ番号に関する情報と、そ
の関連データとから成るブロックである。ここでいう論
理セクタ番号(LSN)はBSTTの中に記憶されてい
るセクタ番号を指す。セクタ番号はCPU52から受信
したセクタ識別子であり、CPUはそのセクタ識別子が
1つの固定物理記憶場所に対応するものと考える。とこ
ろが、固体ディスク60が使用する書込み方式のため
に、LSNは1つの固定物理記憶場所に対応しない。同
様に、固体ディスクで使用する書込み方式のために、い
くつかの見出しとLSNが単一のセクタ番号に対応する
こともあるだろう。一実施例では、各々の論理セクタ番
号は24ビットの長さである。
【0020】ディスクをフォーマットする間、セクタ番
号とごに1つの見出しを作成する。これにより、読取り
指令及び書込み指令の実行中にデータのセクタの損失を
検出できる。特定の1つのセクタ番号と関連する見出し
を見せないとき、それに関連するデータのセクタが失わ
れてしまたことがわかる。ここでいう「損失」は、FL
ASHアレイ62の欠陥のために消滅するデータのセク
タ、又は汚れてしまったために信頼性を失ったデータの
セクタを表わす。
【0021】各々の見出し85は周期冗長検査(CR
C)を含み、それにより、固体ディスク60は見出し8
5の信頼性を判定できる。見出し85は、その見出しと
関連するセクタデータに関する大量の情報を含む属性語
を含んでいる。属性語の中の1つのビットは、セクタ番
号が不良トラックの一部としてマークされているか否か
を指示する。別のビットは、セクタデータが圧縮されて
いるか否かを指示する。属性語は信頼性に関わる2つの
ダーティビットを含む。その双方のダーティビットがセ
ットされていれば、見出しと関連するセクタデータは有
効であると考え、いずれかのダーティビットがリセット
されていれば、ダーティであると考える。属性語はデー
タ付加ビットをさらに含む。見出しにセクタデータが付
加されていない場合、データ付加ビットはリセットされ
る。これは、フォーマットした後のあらゆる見出しに当
てはまる。セクタ番号に関してデータが書込まれたなら
ば、データ付加ビットはセットされる。属性語に含まれ
ている最後の情報は改訂番号である。この改訂番号によ
って、固体ディスク制御装置64は、同一のLSNをも
つ複数の有効見出しが存在しているときに有効見出しを
識別できるのである。
【0022】見出し85に記憶されている最後の情報は
ブロックセクタオフセット(BSO)である。BSOは
見出しと関連するFLASHメモリスペースの始めに対
するブロックの最上部からのオフセットである。メモリ
スペースにデータが記憶されていても、いなくても、そ
のメモリスペースは1つの見出しに割当てられる。デー
タが見出しに付加されていなければ、割当てられるメモ
リの量はデータスペース86のサイズをBSTT84に
おける見出しの最大数で除算したものである。
【0023】メモリスペースは、セクタデータが付加さ
れていない見出しに割り当てられなければならない。こ
れは、フォーマットする間にBSTT84の全てがデー
タ付加のない見出しで充填されているためである。それ
らのBSTT84と関連するデータスペース86の全体
が空いているとしても、データスペース86に書込むこ
とは不可能である。これは、単に、それらのブロックの
BSTTに余地がないためである。割当てのために空き
メモリを利用できないキャッチ22状況を回避するため
に、それらのBSTT84と関連するデータスペース8
6の全てはユーザーデータとして分類される。言いかえ
れば、セクタはダーティビットにより指示されるように
ダーティでもなく、空きでもないということになる。デ
ータが付加されていない見出しにメモリデータスペース
86を割当て且つそのメモリの量を適切なブロック、適
切なチップ及びアレイにある空きメモリの量から減じる
ことにより、データスペース86の一部がユーザーデー
タとして指定される。フォーマットした後にデータのセ
クタを書込んでゆく間に、データが付加されていない見
出しはその割当てられたデータスペースと共にダーティ
とマークされる。最終的に、フォーマットした間に充填
されたブロックはクリーンアップされて、そのデータス
ペースは空きメモリとして利用可能になる。
【0024】データ圧縮を使用しない場合、データを付
加せずに見出しを書込みできることは重大である。デー
タ圧縮を使用しないときには、クリーンアップのために
利用可能である予約はほとんどなく、起こりうるデータ
のセクタごとに全て固体ディスク60に書込むことにな
る。この状況ではクリーンアップ効率はひどく損なわれ
てしまい、データの断片化が生じるおそれがある。この
データ断片化は今度は数多くのフォアグラウンドクリー
ンアップをもたらし、固体ディスク全体の性能を劣化さ
せる。
【0025】データスペース86で1つのセクタに関わ
るデータが別のセクタに関わるデータとぶつかり合うと
き、各々のBSOは1つのセクタに関わるデータの最上
位部分と、別のセクタに関わるデータの最下位部分とを
指示する。たとえば、セクタ1のブロックオフセットで
あるBSO1 はLSN1 と関連するデータの始まりを指
示する。BSO1 はLSN2 と関連するデータの最下位
部分をも指示する。ブロックセクタ変化テーブル84を
見る別の方法は、各々のLSNが2つのブロックセクタ
オフセットの間にはさまれており、その一方のブロック
セクタオフセットはセクタデータの最上位部分を指示
し、他方はセクタデータの最下位部分を指示するという
ものである。ブロックの最下位部分に記憶されているセ
クタLSN1 と関連するデータの最下位部分は、ブロッ
クの最下位部分の場所がわかっているために、BSOに
より指示されなくとも良い。
【0026】ブロックセクタ変換テーブル84はデータ
スペース86に向かって下方へ成長してゆく。第1の見
出しBSTT84はブロック80の最上位部分に書込ま
れる。ブロック80に書込まれる後続する各セクタに関
わる見出しは、先の見出しの下方に記憶される。
【0027】BSTT84とは対照的に、データスペー
ス86は上方へ成長する。ブロック80に書込まれるデ
ータの第1のセクタはデータスペース86の最下位部分
に書込まれる。データスペース86に書込まれるデータ
の次のセクタは先のセクタのすぐ上方に書込まれる。た
とえば、LSN2 と関連するデータはLSN1 と関連す
るデータより低いアドレス範囲の中に位置している。
【0028】データスペース86に記憶しうるセクタの
数は、BSTT84に入り込む前に変動する。この可変
性は、セクタデータが圧縮されているときにセクタのサ
イズが変動するために起こる。データ圧縮を伴うとき、
セクタのサイズは256語からわずか数語まで変わると
思われる。固体ディスク60がシーク戦略を使用すると
すれば、最大限2047個のセクタをデータスペース8
6に記憶できるであろう。
【0029】固体ディスク制御装置64はBSTT84
とデータスペース86が成長してゆく間に互いにぶつか
り合うのを防止する。実際には、固体ディスク制御装置
64はBSTT84とデータスペース86との間に幾分
かのスラック88が維持されるように保証する。スラッ
ク88は、まだプログラムされていない空きFLASH
メモリである。FLASHメモリの規約に従えば、空い
た記憶場所はFFFF(16進数)を記憶する。ブロッ
クセクタ変換テーブル84のシーク中、スラック88は
BSTT84の終わりに到達したことを指示する。
【0030】ブロック80はブロック属性データ90を
さらに記憶している。そのブロックに特有の情報が記憶
される属性データ90である。たとえば、ブロック属性
データ90は、ブロックが消去されて、そのブロックに
書込んだ回数を指示するサイクルカウントを含む。ブロ
ック属性データ90はブロック欠陥情報を含んでいても
良い。
【0031】 B.固体ディスク制御装置ハードウェアの概念 再び図2を参照して説明すると、FLASHアレイ62
の読取り、書込み及びクリーンアップは固体ディスク制
御装置64により制御される。マイクロプロセッサ92
はデータベース93と、セクタ見出し変換テーブル(S
HTT)94と、FLASHメモリ95に記憶されてい
る本発明のアルゴリズムとを使用してそれらのタスクを
管理する。データベース93、SHTT94及びアルゴ
リズムについては以下にさらに詳細に説明する。アプリ
ケーション特定集積回路であるウィンドウASIC96
は、マイクロプロセッサ92の外界に対するウィンドウ
並びにFLASHアレイ82に対するウィンドウとして
機能する。ウィンドウASIC96を介してマイクロプ
ロセッサ92はCPU52から指令を受信すると共に、
FLASHアレイ66に対する読取りと書込みを実行す
る。言いかえれば、ウィンドウASIC96はマイクロ
プロセッサ92のアドレス可能メモリスペースを増加さ
せる。ウィンドウASIC96は4つのウィンドウを含
むので、マイクロプロセッサ92はいくつかのFLAS
H記憶場所を繰り返し、急速にアクセスできる。データ
は、CPU52との間で、ウィンドウASIC96を介
して流れて、セクタバッファ98に至る。セクタバッフ
ァ98があるために、CPU52に向かうデータの転送
はセクタバッファがない場合に可能であるよりも急速に
起こりうる。固体ディスク制御装置64は電荷ポンプ1
00を含む。電荷ポンプ100は5ボルトをプログラミ
ングと消去に必要とされる12ボルトレベルに変換す
る。固体ディスク60に供給される電圧レベルがFLA
SHアレイ62の中のFLASHデバイスをプログラム
するために必要な12ボルト電圧レベルより全て低くな
らない限り、電荷ポンプ100は必要ではない。
【0032】C.FLASHアレイデータベースとセク
タ見出し変換テーブル 繰り返し使用される情報をランダムアクセスメモリ(R
AM)に記憶することにより、固体ディスク60の性能
は向上する。この情報は、一般に、FLASHアレイ6
2の現在特性に関連しているので、これをFLASHア
レイデータベース93という。FLASHアレイデータ
ベース93の中の情報は、 1.FLASHアレイ62内部のダーティな語の総数
(TDFA); 2.各ブロック内部のダーティな語の総数(TDF
N); 3.FLASHアレイ62内部の空きの語の総数(TF
FA); 4.各チップ対の中の空きの語の数(TFFCM) ; 5.各ブロック内部の空きの語の総数(TFFBN) を含む。
【0033】固体ディスク制御装置64がFLASHア
レイデータベース93をどう使用するかを以下にアルゴ
リズムごとに説明する。セクタ見出し変換テーブル(S
HTT)94はセクタ番号を関連するデータのセクタに
対するポインタに変換する。SHTT94を頻繁且つ容
易に変更できるように、SHTT94をRAMに記憶し
ておくのが好ましい。セクタ見出し変換テーブル94
は、与えられたセクタ番号と関連するデータを直接には
指示しない。そうではなく、SHTT94により供給さ
れるポインタはBSTT84の中、そのセクタ番号と関
連する見出しの付近の記憶場所を指示する。
【0034】SHTT94がセクタ番号と関連する見出
しを直接には指示しない理由を理解するには、BSTT
84に現れうる見出しをそれぞれ一意性をもってアドレ
ス指定するために必要なビットの数を考えてみれば良
い。BSTT84には、最大限2047個の見出しを記
憶できる。チップが15対あり、一対のチップにそれぞ
れ16のブロックが含まれているものとすれば、FLA
SHアレイ62は491,280個の見出しを記憶する
ことができるであろう。それほど多くの見出しを一意性
をもって識別するには19ビットが必要である。19ビ
ットを記憶するには、3×8個のRAMチップを使用し
なければならない。従って、3つのビットを記憶するた
めに、1つのRAMにおける8ビットのうち5つが浪費
されるであろう。これは、競合しうる価格の固体メモリ
ディスクを製造しようとする努力の中では高価で、受け
入れられない解決方法である。
【0035】この19ビットのジレンマを解決するSH
TTのデザインはいくつかある。図4に示す一実施例で
は、工業規格の40MBディスクドライブのデータの数
の現れうる83300個のセクタの各々に対して1つず
つのポインタを記憶する。SHTT94の各エントリに
は16ビットしか記憶されていない。それらのビットの
うち4つは、シーク中のセクタデータを記憶しているチ
ップ対を指示する。もう4つのビットはそのセクタを記
憶している特定のブロックを指示する。残る8つのビッ
トは、所望の見出しの付近にある見出しに対するブロッ
クの最上位部分からのオフセットを表わす。このオフセ
ットを見出しポインタと呼ぶ。見出しポインタを表わす
ために8ビットを使用するということは、最大限204
7個の見出しを位置指定するために256個の見出しポ
インタを利用できることを意味している。そこで、所望
の見出しを位置指定するためには、BSTT84におい
て最大で8個の見出しを走査しなければならない。言い
かえれば、SHTT94aは1つの特定のセクタ番号と
関連するデータを位置指定するために2段の探索を要求
するということがある。まず、特定のチップ、ブロック
及び見出しポインタを位置指定するためにSHTT94
aを探索する。第2に、セクタ番号と関連する見出しを
見出すために、BSTT84の指示領域を探索する。
【0036】図4のSHTT94は固体ディスク60に
記憶されているセクタごとに1つの物理アドレスを記憶
する。最新のキャッシュメモリを使用することにより、
SHTT94のエントリの数を減少できる。
【0037】FLASHアレイデータベース93とSH
TT94は不揮発性メモリであるRAMに記憶されるこ
と、及び読取りと書込みがデータベース93とSHTT
94に縦続して実行されることを理由として、パワーア
ップ中にFLASHアレイデータベース93とSHTT
94の双方を生成しなければならない。図5は、FLA
SHアレイデータベース93とSHTT94の双方を作
成するためのアルゴリズムを示す。このアルゴリズムを
使用すると、SHTT94とFLASHアレイデータベ
ース93は、共に、各々のBSTT84を走査すること
により生成される。各セクタ番号と関連する見出しの記
憶場所と、ブロック中の空きメモリとダーティメモリの
量とに注目する。
【0038】作成はステップ110においてSHTT9
4の初期設定と共に始まる。セクタ番号ごとの各ポイン
タを同じ初期値に設定する。一実施例では、その値はF
FFF(16進数)である。そのため、SHTT94を
作成した後に初期値と等しいポインタを検索すると、フ
ォーマットする間にセクタ番号ごとに1つの見出しが作
成していることから、そのセクタ番号と関連するデータ
のセクタが失われてしまっていることがわかる。マイク
ロプロセッサ92はステップ110からステップ111
へ分岐する。
【0039】ステップ111では、FLASHアレイ中
の空きメモリの総量であるTFFAと、チップごとの空
きメモリの総量であるTFFCM とをその最大値に初期
設定する。チップごとの最大空きFLASHは64Kバ
イト/ブロック* 16ブロック、すなわち、チップ対ご
とに2048バイトから各ブロックに記憶されているブ
ロック属性データを減じたものである。同様に、TTF
max はチップ対ごとに2048Kバイト* 15チップ
対、すなわち、約30Mバイトである。これを実行した
ならば、マイクロプロセッサ92はステップ112へ分
岐して、BSTT84を走査し始める。
【0040】ステップ112では、マイクロプロセッサ
92はFLASHアレイ62に今後に走査すべきブロッ
クが残っているか否かを判定する。残っていれば、マイ
クロプロセッサ92はステップ114へ進み、走査すべ
きブロックBC を選択する。マイクロプロセッサ92は
ステップ114からステップ115へ分岐する。そこ
で、現在ブロックの空きメモリの総量TFFBC をその
最大値に初期設定する。マイクロプロセッサ92は、次
に、ステップ116に進む。ステップ116では、マイ
クロプロセッサ92は選択したブロックのブロックセク
タ変換テーブル84から次の見出しを読取る。その後、
マイクロプロセッサ92はステップ118へ分岐する。
【0041】マイクロプロセッサ92はステップ118
で現在見出しを分類し始める。マイクロプロセッサ92
は、現在見出しの属性語に含まれているダーティビット
を読取ることにより、見出しがダーティとマークされて
いるか否かを判定する。いずれかのダーティビットが論
理値0であれば、LSNと関連するデータはダーティで
あると考える。データのセクタがダーティであれば、マ
イクロプロセッサ92はステップ120へ分岐して、F
LASHアレイデータベース93を更新する。
【0042】ステップ120では、マイクロプロセッサ
92はダーティセクタのサイズを確定するのであるが、
そのサイズはデータ圧縮の結果として変わることもあ
る。セクタのサイズは現在LSNの両側のブロックセク
タオフセットを比較することにより確定される。ダーテ
ィセクタのサイズを確定した後、マイクロプロセッサ9
2はTDFAとTDFBC を更新する。ダーティな語の
総数であるTDFAと、現在ブロックの中のダーティな
語の総数であるTDFBC とをセクタとその見出しのサ
イズだけ増加させるのである。その後、マイクロプロセ
ッサ92はステップ121へ進む。マイクロプロセッサ
92はそのFLASH空き変数を適切に改訂する。現在
セクタとその見出しのサイズをTFFA、TFFBC
びTFFCC から減じる。その後、マイクロプロセッサ
はステップ116に戻ることにより、FLASHアレイ
データベース93とSHTT94の作成を再開する。
【0043】これに対し、セクタがダーティでない場合
には、マイクロプロセッサ92はステップ118からス
テップ122へ分岐する。そこで、マイクロプロセッサ
92は、BSTT84の終わりに達したか否かを判定す
るために、現在見出しの中の属性語を検査する。次の見
出しに関わる属性語がFFFF(16進数)であるなら
ば、終わりに達している。この場合、マイクロプロセッ
サ92はステップ112に戻って、BSTT84の走査
を継続すべきか否かを判定する。他のあらゆるケースに
おいては、マイクロプロセッサ92はステップ122か
らステップ124に進む。
【0044】ステップ124に入るということは、現在
見出しがユーザーデータの有効セクタと関連しているこ
とを意味している。従って、マイクロプロセッサ92は
空き変数TFFA、TFFBC 及びTFFCC を現在セ
クタのサイズだけ減少させる。(添字「C」は「現在」
を指示している。)これを実行したならば、マイクロプ
ロセッサ92はステップ126へ進む。
【0045】ステップ126では、現在見出しに含まれ
ているLSNと等しいセクタ番号を求めてSHTT94
のエントリをシークすることにより、現在見出しに関わ
るSHTTエントリの改訂を開始する。SHTTの現在
エントリがFFFF(16進数)であれば、そのセクタ
番号に関わる情報は存在していない。マイクロプロセッ
サ92はステップ128へ分岐することによりこれに対
応する。セクタ番号に関わるエントリがFFFF以外で
あれば、いずれの場合にも、そのセクタ番号に関してデ
ータの2つの有効バージョンがあるということになる。
物事を分類するために、マイクロプロセッサ92はステ
ップ130へ進む。
【0046】まず、より単純な状況、すなわち、現在L
SNに対応するセクタ番号に関わるデータがSHTT9
4に記憶されていない場合を考える。ステップ128で
は、マイクロプロセッサ92は現在見出しに関わるチッ
プ、ブロック及び見出しポインタをSHTT94に書込
む。これを実行したならば、マイクロプロセッサ92は
ステップ116に戻って、別の見出しを検査する。
【0047】SHTT94が現在LSNと関連するセク
タ番号に関わるエントリを既に含んでいる場合には、状
況はさらに複雑になる。ステップ130では、マイクロ
プロセッサは改訂番号を比較することによりどの見出し
が、従って、どのデータのセクタが最も新しいかを判定
する。次のステップ132では、マイクロプロセッサ9
2は先のダーティビットを論理値0にプログラムするこ
とにより、そのデータの先の無効セクタをダーティとマ
ークする。
【0048】ステップ133では、直前にダーティであ
るとマークされたセクタを含むブロックと、FLASH
アレイ62とに関わる総ダーティを反映するために、マ
イクロプロセッサはデータベース93を更新する。その
更新は、セクタのサイズをTDFBC 及びTDFAに加
算することにより実行される。
【0049】ステップ134では、必要に応じて、SH
TT94を最終的に更新する。見出しとステップ116
で選択したLSNがステップ132でダーティとマーク
されていれば、更新は不要である。そうでなければ、ス
テップ116で選択したLSNに関わるチップ、ブロッ
ク及び見出しポインタをSHTT94に書込む。
【0050】マイクロプロセッサ92はステップ134
からステップ116に戻る。そこで、別の見出しを選択
する。FLASHアレイ62内部の見出しを走査し終わ
るたびに、SHTT94の作成は完了する。1つのセク
タ番号に対応する見出しが位置指定されていなければ、
SHTT94の中のポインタは初期値にとどまる。すな
わち、ポインタはデータのセクタが失われたことを指示
し、SHTT94はどのデータのセクタをも考慮に入れ
ているのである。
【0051】II.固体ディスク制御装置 固体ディスク制御装置64の心臓部は、FLASHメモ
リ95の中に記憶されている1組のアルゴリズムであ
る。それらのアルゴリズムはFLASHアレイ62の読
取り、書込み及びクリーンアップを制御する。それらの
アルゴリズムは、CPU52が工業規格のハード磁気デ
ィスクドライブを取り扱っているかのような錯覚を作り
出すのを助ける。
【0052】図6のオブジェクト線図は、固体ディスク
制御装置64が使用するアルゴリズムの総体的な編成と
相互関係を示す。固体ディスク制御装置64のアルゴリ
ズムはトップレベルスケジューラ150、ホストインタ
フェース152、そして、FLASH媒体154という
3つのクラスに編成されている。トップレベルスケジュ
ーラ150は他の2つのクラス152及び154の間で
のCPU92の処理時間の割当てを処理する。ホストイ
ンタフェース152はCPU52からの工業規格ディス
クドライブ指令を解釈し、それらをFLASH媒体15
4が反応しうる指令に変換する。FLASH媒体154
はFLASHアレイ62と直接にインタフェースし、ホ
ストインタフェース152からの読取りと書込みの要求
に応答する。FLASH媒体154はFLASHアレイ
62のクリーンアップをも管理する。
【0053】ホストインタフェース152とFLASH
媒体154のスケジューリングは相対的に単純なタスク
である。固体ディスク60のパワーアップはトップレベ
ルスケジューラ150を始動する。スケジューラは固体
ディスク60を初期設定し、次に、ホストインタフェー
ス152を呼び出す。これはCPU52に固体ディスク
60のあらゆる資源を割当てる。ホストインタフェース
152がトップレベルスケジューラ150に制御を戻し
たとき、クリーンアップオブジェクト164が呼び出さ
れる。クリーンアップが進行中である場合、クリーンア
ップにはCPU実行時間の1スライス、一実施例では5
00μ秒が割当てられる。クリーンアップがトップレベ
ルスケジューラ150に制御を戻すと、ホストインタフ
ェース152が再び呼び出される。固体ディスク60が
パワーアップされている間は、トップレベルスケジュー
ラ150はそのプロセスを何度も繰り返す。
【0054】ホストインタフェース152はインタフェ
ース156及びセクタバッファ158という2つのクラ
スのアルゴリズムを含む。インタフェース156はAT
−IDEハードディスクインタフェースをエミュレート
する。インタフェース156はATA指令割込みを処理
し、ATA指令をFLASH媒体154により理解可能
な指令に変換する。別の実施例においては、ホストイン
タフェース156はSCSIディスクインタフェース又
は他の規格によるディスクドライブインタフェースをシ
ミュレートしても良い。セクタバッファ158はセクタ
バッファ98の使用を管理する。
【0055】簡単に説明すれば、FLASH媒体154
は5種類のアルゴリズム、すなわち、ディスク160、
セクタ162、クリーンアップ164、FLASHパワ
ー166及びFLASHアレイインタフェース167と
いう5つのサービスを含んでいることになる。ディスク
160はインタフェース156からの読取り要求と書込
み要求をサービスする。また、ディスク160はディス
ク160からの他の指令を変換し、それらを他のクラス
162、164、166及び167に移して実行させ
る。セクタ162はFLASHアレイ62内部に記憶さ
れているセクタに関連する大部分のタスクを実行する。
セクタ162はディスク160とクリーンアップ164
の双方により使用されるFLASHアレイデータベース
93を維持すると共に、FLASHアレイ62の中の空
きメモリスペースを割当てる。さらに、セクタ162は
FLASHアレイ62からのデータの読取りをFLAS
Hアレイインタフェース167と、シーケンサ168と
を介して制御する。FLASHパワー166は本質的に
はデバイスドライバである。すなわち、FLASHパワ
ーはFLASHアレイ62に対する読取り又は書込みに
必要な電圧レベルを発生するのである。FLASHアレ
イインタフェース167は、FLASH62の読取りと
書込みを直接に制御する低レベルルーチンを処理する。
シーケンサ168はセクタバッファ98と、FLASH
アレイ62との間のデータの移動を処理する。クリーン
アップ164は、その名が示す通り、FLASHアレイ
62のクリーンアップを管理する。FLASHパワー1
66は固体ディスク60の限定された予定電流を管理す
るのであるが、一実施例では、この電流はわずか120
mAである。一対のチップで1つのブロックを消去する
のに60mAまでが必要であるとすれば、電流の効率の
良い管理は重要である。
【0056】 A.FLASHアレイからのセクタの読取り 簡単に説明すれば、1つのセクタの読取りは3段階のプ
ロセスである。まず初めに、セクタ番号と関連する見出
しに対するポインタを求めてSHTT94を探索する。
第2に、見出しを位置指定し、その属性語を検査して、
付加データが有効であるか否かを知る。第3に、見出し
と関連するセクタデータが有効であれば、その記憶場所
を確定し、CPU52に戻す。ディスク160により実
現される読取りアルゴリズムを図7の流れ図に示す。全
ての呼び出し側はセクタ番号を入力する。
【0057】ステップ170におけるマイクロプロセッ
サ92の最初のタスクは、有効性に関わる入力セクタ番
号の検査である。工業規格によるディスクドライブの中
にあるセクタの最大数で、セクタ番号が有効であるか否
かを判定する。たとえば、規格の40MBドライブは8
3300個のセクタを含む。従って、40MBドライブ
の場合、83300を越えるセクタ番号はいずれも無効
になるであろう。
【0058】呼び出し側プログラムが無効セクタ番号を
与えていた場合、マイクロプロセッサ92はステップ1
70からステップ172へ分岐する。マイクロプロセッ
サ92は、状態語を無効セクタ番号範囲に設定すること
により、セクタ番号の無効性を呼び出し側に指示する。
次に、マイクロプロセッサ92はステップ174に戻
り、制御を呼び出し側に戻す。
【0059】これに対し、呼び出し側が有効セクタ番号
をもつセクタを読取ることを要求した場合には、マイク
ロプロセッサ92はステップ170からステップ176
へ進む。ステップ176では、マイクロプロセッサ92
はセクタ番号を取り上げ、セクタ番号と関連するチッ
プ、ブロック及び見出しポインタを求めてSHTT94
を探索する。
【0060】ステップ178では、マイクロプロセッサ
92は要求されたセクタ番号に関わるデータが存在する
か否かを判定する。マイクロプロセッサ92は、SHT
T94から検索した見出しポインタを検査することによ
り、特定のセクタ番号について見出しが存在するか否か
を報知することができても良い。見出しポインタがFF
FF(16進数)である場合、フォーマットする間にセ
クタ番号ごとに1つの見出しを作成していても、セクタ
番号に対して有効見出しを見出すのは不可能である。マ
イクロプロセッサ92は、ステップ178からステップ
180へ分岐することにより損失セクタに応答する。そ
こで、マイクロプロセッサ92は見出しを見出せなかっ
たことを指示する。次に、マイクロプロセッサ92はス
テップ174へ分岐して、読取りは完了する。
【0061】これに対し、セクタ番号に対する見出しが
存在しているのであれば、マイクロプロセッサ92はス
テップ182へ分岐する。そこで、セクタ162は入力
されたセクタ番号と関連する見出しをシークする。所望
の見出しを位置指定したならば、セクタ162はチッ
プ、ブロック及びその見出しに対するオフセットを指示
する。セクタ162は、所望の見出しを見出せない場合
にも指示する。
【0062】セクタ162がそのシークから復帰したな
らば、マイクロプロセッサ92はステップ184へ分岐
して、シークの成否を判定する。シークアルゴリズムが
セクタ番号と関連する見出しを位置指定しなかった場合
には、マイクロプロセッサ92はステップ180へ分岐
して、そのことを呼び出し側に報知する。これに対し、
適切な見出しが位置指定されたならば、マイクロプロセ
ッサ92はステップ186へ分岐する。そこで、ステッ
プ182で検索した情報をセクタオブジェクト162の
読取りサービスにパスする。セクタ番号と関連するデー
タをセクタバッファ98にコピーし且つホストCPU5
2に供給する。その後、読取りが完了して、マイクロプ
ロセッサ92はステップ174へ分岐することにより制
御を呼び出し側に戻す。
【0063】図8は、セクタ番号が与えられたときにセ
クタデータをシークする方法を示す。このアルゴリズム
もセクタ162により実現される。簡単に説明すれば、
図8のシークアルゴリズムはセクタ番号と関連するデー
タを位置指定する2つの方式を有する。第1の方式は、
シーク時間を短縮するためにデータのコヒーレンシーに
依存する。すなわち、現在シーク中であるデータのセク
タは最前に位置指定されたデータのセクタに関連してお
り且つその付近に位置しているものと仮定する。この方
式が、所望のデータのセクタを位置指定しそこなえば、
次に2段階方式が使われる。まず、セクタ番号入力SN
i に関わるチップ、ブロック及び見出しオフセットを位
置指定するために、SHTT94を探索する。次に、そ
の情報を使用して、呼び出し側により入力されたセクタ
番号と等しいLSNをもつ見出しを求めてBSTT84
を探索する。
【0064】データのセクタの位置指定はステップ19
0で始まる。そこで、マイクロプロセッサ92は、探索
した最前のBSTT84に別の見出しが記憶されている
か否かを判定する。記憶されていれば、入力セクタ番号
と関連する見出しが同じBSTT84の中にある可能性
がある。その場合、マイクロプロセッサ92はステップ
192へ進む。しかしながら、最前に位置指定した見出
しがそのBSTT84の中で最後に位置指定した見出し
であった場合には、入力セクタ番号と関連するデータの
セクタを急速に位置指定することは可能ではない。二段
階探索を使用しなければならない。その場合には、マイ
クロプロセッサ92はステップ206へ進み、その二段
階探索を開始する。
【0065】まず、ステップ192に入るときのマイク
ロプロセッサ92のアクションについて考える。マイク
ロプロセッサ92は、最前に位置指定した見出しのすぐ
次に続く見出しを読取る。この見出しの中のLSNを
「LSNL+1」 と指定する。LSNL+1 をステップ19
4のSNi と比較して、現在見出しが所望の見出しであ
るか否かを判定する。LSNL+1 がSNi と等しくなけ
れば、別の方法でデータのセクタを位置指定しなければ
ならない。その場合には、マイクロプロセッサ92はス
テップ206へ進む。これに対し、LSNL+1 がSNi
と等しい場合には、マイクロプロセッサ92はステップ
196へ分岐する。
【0066】現在見出しの信頼性を確定するプロセスは
ステップ196をもって始まる。ステップ196の間、
マイクロプロセッサは現在見出しに関わる周期冗長検査
(CRC)を生成する。このCRCを「CRCG」 と呼
ぶ。ステップ198では、CRCG を見出し自体に記憶
されているCRCであるCRCstoredと比較する。CR
G =CRCstoredであるとき、現在見出しの中の情報
を信頼しうるものと考える。マイクロプロセッサ92は
ステップ202へ分岐することによりこの状態に応答す
る。これに対して、CRCstoredと等しくないために現
在見出しが信頼できない場合には、マイクロプロセッサ
92はステップ206へ進む。
【0067】まず、所望の見出しを位置指定したときの
マイクロプロセッサ92のアクションを考える。マイク
ロプロセッサ92は、第1に、ステップ200で見出し
と関連するデータのセクタのサイズを確定する。これ
は、先に説明した通り、適切なブロックセクタオフセッ
トを使用して実行される。ステップ202では、セクタ
のサイズ、チップ、ブロック及び所望の見出しに対する
オフセットを呼び出し側に戻す。これが成功すれば、ス
テップ190〜202から成る方法は1つのデータのセ
クタを位置指定するために要する時間を、ステップ20
6〜222から成る二段階探索と比べて四分の一に短縮
する。
【0068】二段階探索は、より迅速な方式が失敗に終
わった後にステップ206から始まる。マイクロプロセ
ッサ92は、セクタ番号入力SNi と関連するチップ、
ブロック及び見出しポインタを求めてSHTT94をシ
ークすることにより第1レベルの探索を実行する。ステ
ップ206で検索したチップ、ブロック及び見出しポイ
ンタの値をステップ208で検査して、SNi について
見出しを位置指定することが可能であるか否かを判定す
る。それらの値が初期値と等しいならば、SNi と関連
する見出しは失われていることになる。一実施例では、
初期無効値はFFFF(16進数)である。マイクロプ
ロセッサ92は、ステップ224へ分岐することによ
り、無効のチップ、ブロック及び見出しポインタの値に
応答する。そこで、入力セクタ番号と関連する見出しが
見出されなかったことを呼び出し側に報知する。これに
対し、SHTT94から検索した値が有効である場合に
は、マイクロプロセッサ92はステップ210へ進む。
【0069】シークの第2の段階は、ステップ210
で、走査カウントを零に初期設定することによって始ま
る。走査カウントはシーク中に検査される見出しの番号
を追跡する。そこで、マイクロプロセッサ92は見出し
ポインタの付近の見出しを読取る。マイクロプロセッサ
92はステップ210からステップ208へ進んで、現
在走査カウントを最大走査がカウントと比較する。
【0070】走査しなければならない見出しの最大数
は、BSTT84中の見出しの最大数を見出しポインタ
の最大数で除算することにより設定される。たとえば、
固定ディスク60の一実施例では、BSTT84に記憶
される見出しの最大数は2047であり、使用する見出
しポインタの数は256のみである。従って、この実施
例では8つまでの見出しを走査しなければならない。走
査カウントが最大値より小さいならば、マイクロプロセ
ッサ92はステップ212へ分岐して、所望の見出しの
探索を継続する。これに対し、走査カウントが最大値を
越えたならば、マイクロプロセッサ92はステップ20
0からステップ224へ進む。
【0071】まず、走査カウントが最大値より小さいと
きの状況を考える。マイクロプロセッサ92はステップ
214に入り、現在見出しの中に記憶されているLSN
を入力セクタ番号と比較する。それら2つが等しいなら
ば、所望の見出しは位置指定されていることになるであ
ろう。そうでなければ、所望のセクタを求める探索を継
続しなければならない。ステップ222では、走査カウ
ンタを増分し且つ最前の見出しの下方に位置する別の見
出しを読取ることにより、所望のセクタの探索を継続す
る。そこで、マイクロプロセッサ92はステップ212
に戻り、この新たな見出しが所望の見出しであるか否か
を判定する。
【0072】LSNが入力セクタ番号と等しいとき、マ
イクロプロセッサ92はステップ214からステップ2
16へ進む。ステップ216では、現在見出しについて
周期冗長検査CRCG を生成する。ステップ218で
は、CRCG を使用して、見出しに含まれている情報の
信頼性をアクセスする。そこで、マイクロプロセッサ9
2は、セクタ番号SNi をブロックに記憶されているL
SNと比較することにより、現在見出しがシーク中の見
出しであるか否かを判定する。LSN=SNi であれ
ば、マイクロプロセッサ92はステップ216へ進む。
ステップ218では、CRCG を選択した見出しに記憶
されているCRCと比較することにより見出しの信頼性
を確定する。2つのCRCが等しくない限り、見出しの
中の情報を信頼することはできない。
【0073】現在見出しが信頼できるものではないなら
ば、マイクロプロセッサ92はステップ218からステ
ップ220へ分岐する。現在見出しの中のブロックセク
タオフセットを信頼することができないので、2つのデ
ータのセクタは失われる。たとえば、図3に示すよう
に、走査中の見出しがLSN1 に関わる見出しであった
と仮定する。BSO1 を信頼できないので、LSN1
関わるデータの始まりも、LSN2 に関わるデータの終
わりも共に確定することができない。従って、ステップ
220では、マイクロプロセッサ92は選択した見出し
と、そのすぐ下方にある見出しの双方をダーティにする
ことにより、2つのデータのセクタを放棄する。次に、
マイクロプロセッサ92はステップ222へ進む。
【0074】現在見出しを信頼できる場合には、マイク
ロプロセッサ92はステップ218からステップ220
へ進む。ステップ206に達したならば、マイクロプロ
セッサ92はセクタデータを読取るために必要とされる
情報を収集し始める。まず、適切なBSOを読取ること
によりセクタのサイズを確定する。最後に、ステップ2
02では、セクタのサイズ及び属性語をチップ、ブロッ
ク及び見出しに対するオフセットと共に呼び出し側に戻
す。次に、マイクロプロセッサ92はステップ204で
制御を呼び出し側に戻す。
【0075】 B.FLASHアレイ62へのセクタの書込み 1つのデータのセクタの書込みは3つの主要なタスクを
含む。第1に、そのセクタデータを書込むのに十分な空
きメモリを位置指定し且つ予約しなければならない。第
2に、同じLSNの中にセクタデータの先のバージョン
があれば、それをダーティとマークし、セクタ見出し変
換テーブル94を更新する。第3に、セクタデータとそ
の見出しを適切なブロックに書込む。
【0076】図9は、1つのデータのセクタのFLAS
Hアレイ62を書込むプロセスの概要を提示している。
書込みは、ディスク160がCPU52から入力セクタ
番号SNi を伴う書込み指令を受信したときに始まる。
この時点で、FLASHアレイ62に書込むべきデータ
はセクタバッファ98の中にある。LSNi 及びSHT
T94に記憶されているデータに従って図10のアルゴ
リズムを使用すると、いくつかの結果が起こりうる。
【0077】まず初めに、SNi が無効であるときの結
果を考える。書込み指令を受信したときのマイクロプロ
セッサ92の第1のアクションは、SNi を検査するこ
とである。これはステップ230で実行される。833
00より大きいSNi 又は1より小さいSNi は、いず
れも、40MBドライブには書込まれない。
【0078】SNiが無効であるとすれば、マイクロプ
ロセッサ92はステップ230からステップ232へ分
岐する。そこで、受信したセクタ番号が無効であったこ
とをインタフェース156に報知するために、マイクロ
プロセッサ92は状態語をセットする。これを実行した
後、マイクロプロセッサ92はステップ234へ進む。
次に、マイクロプロセッサ92の制御は呼び出し側プロ
グラムに戻る。今度は、SNi が有効であり且つその属
性語はSNi と関連するトラックが不良とマークされた
ことを指示しているものと仮定する。SNi は有効であ
るので、マイクロプロセッサ92はステップ230から
ステップ236へ分岐する。
【0079】セクタを書込むための準備はステップ23
6で本格的に始まる。マイクロプロセッサ92は電荷ポ
ンプ100をイネーブルし、電荷ポンプ100にFLA
SHメモリをプログラムするために必要な12ボルトの
レベルを発生させることができる。そこで、マイクロプ
ロセッサ92は電荷ポンプ100が12ボルトに達する
まで他のタスクを実行する。
【0080】ステップ238では、マイクロプロセッサ
92は、セクタデータのより以前のバージョンを求め
て、チップ、ブロック及び見出しポインタを位置指定す
るためのシークアルゴリズムを呼び出す。セクタ番号と
関連する情報を位置指定した後、マイクロプロセッサ9
2はステップ240へ分岐する。ステップ240では、
マイクロプロセッサ92は不良トラックビットがセット
されているか否かを判定する。マイクロプロセッサ92
はセクタ属性語を検査することによりこれを実行する。
不良トラックビットが表明されていたならば、マイクロ
プロセッサ92はステップ240からステップ242へ
進む。
【0081】SNi と関連するトラックが不良であると
マークされているので、マイクロプロセッサ92はセク
タデータをFLASHアレイ62に書込まない。ステッ
プ242では、マイクロプロセッサ92はトラックが不
良であることをインタフェース156に報知する。その
後、マイクロプロセッサ92はステップ234へ分岐す
ることにより制御をインタフェース156に戻す。先の
説明からわかるように、SNi が無効であるか又はそれ
に関連するトラックが不良であるとマークされていたか
のいずれかの場合には、データのセクタはFLASHア
レイ62に書込まれない。逆にいえば、セクタデータが
良いトラック及び有効なSNi と関連しているならば、
そのセクタデータはFLASHアレイ62に書込まれる
ことになる。次に、そのような状況について考えてみ
る。マイクロプロセッサ92はステップ238からステ
ップ244へ分岐することにより応答する。
【0082】ステップ244では、マイクロプロセッサ
92は電荷ポンプ100が12ボルトに達したか否かを
判定するために、電荷ポンプ100に絶えず問合わせ
る。電荷ポンプ100が12ボルトに達するのに要する
時間の量は、電荷ポンプ100が最後にイネーブルされ
てからどれほどの時間が経過しているかによって異なる
ので、予測不可能である。電荷ポンプ100が始動して
以来の時間が長いほど、12ボルトに再び達するために
要する時間は短くなる。電荷ポンプ100が12ボルト
で安定したならば、マイクロプロセッサ92はステップ
246へ分岐する。
【0083】ステップ246では、マイクロプロセッサ
92は同じLSNをもつ以前の見出しをダーティとマー
クすべきか否かを判定する。マイクロプロセッサ92
は、ステップ238のシークによって検索した情報に基
づいてこの判定を実行する。見出しが位置指定されてい
た場合、マイクロプロセッサ92はステップ247へ進
み、その見出しをダーティとマークする。その後、マイ
クロプロセッサ92はステップ248へ進み、以前の見
出しがダーティとマークされていたか否か又はタスクが
キャッシュされていたか否かを判定する。タスクがキャ
ッシュされていなければ、マイクロプロセッサ92はス
テップ250へ進む。キャッシュされていれば、マイク
ロプロセッサ92はステップ249へ分岐する。ダーテ
ィとマークすることがキャッシュされていたため、現在
書込みの終わりに同じLSNをもつ2つの見出しが現れ
るであろう。パワー損失後に有効データを区別するため
に、ステップ249では、最も新しいバージョンと関連
するLSNに関わる改訂番号を増分する。次に、マイク
ロプロセッサ92はステップ250へ進む。
【0084】マイクロプロセッサ92は、FLASHア
レイ62の中のセクタデータの新たなバージョンを書込
むプロセスをステップ250をもって開始する。マイク
ロプロセッサ92はデータのセクタ及び見出しを記憶す
るのに十分な空きメモリをFLASHアレイ62の内部
で割当てる。これは、以下に詳細に説明する複雑なプロ
セスである。ここでは、メモリの割当てには、1ブロッ
クのデータスペース86の中に十分なメモリを位置指定
し且つそのメモリスペースを予約済としてマークするこ
とが必要であると述べるだけで十分である。次に、マイ
クロプロセッサ92はステップ252へ進む。
【0085】マイクロプロセッサ92はステップ252
及び254で見出しの書込みを完了する。まず、ステッ
プ252では、見出しについてCRCを生成するのであ
るが、ダーティビットと改訂番号は事象の経過の中で変
化することがあるので、それらは除外される。その後、
ステップ254では、属性語とLSNをBSTT84に
書込む。LSNをSNi と等しくなるように設定する。
マイクロプロセッサ92は最終的にはステップ256で
予約したデータスペースにセクタデータを書込む。デー
タと共に、誤り訂正コードECCをも書込む。
【0086】セクタデータの新たなバージョンを確実に
書込んだならば、ステップ258では、セクタ見出し変
換テーブル94がセクタ番号と関連するセクタデータの
最も新しいバージョンを指示するように、マイクロプロ
セッサ92はセクタ見出し変換テーブル94を更新す
る。
【0087】ステップ260では、マイクロプロセッサ
92は電荷ポンプ100をディスエーブルする。電荷ポ
ンプ100が必要でないときに電荷ポンプをオフするこ
とにより、電力消費は減少する。その結果、固体ディス
ク60はポータブルコンピュータやラップトップコンピ
ュータに使用するのに一層適するようになる。これを実
行したならば、マイクロプロセッサ92はステップ26
2へ分岐する。ステップ262の間に、マイクロプロセ
ッサ92は書込みの結果としてクリーンアップが必要で
あるか否かの評価を強制する。マイクロプロセッサ92
は、以下に詳細に説明する「Enable CSM」と
名付けられたサービスを呼び出すことによりこれを実行
する。これを実行したならば、マイクロプロセッサ92
はステップ234へ進んで、制御を呼び出し側に戻す。
【0088】C.書込み時のメモリスペースの割当て FLASHアレイ62の内部でのメモリスペースの割当
ては複雑で重大なタスクである。メモリスペースを割当
てなければならないだけでなく、性能劣化を阻止するた
めに適切な記憶場所を選択しなければならない。セクタ
書込みについて1つのブロックを選択することは、潜在
的に、4つの主要な決定を含む。第1に、書込みを可能
にするのに十分なFLASHメモリ予約があるか?第2
に、現在セクタを記憶するために現在プロセスが最前に
割当てられたブロックの中に十分な空きメモリがあるか
?その第2の質問に対する返答がノーであれば、第3と
第4の質問を尋ねなければならない。セクタデータを記
憶するのに十分な空きFLASHメモリをもつブロック
は存在しているか?そのブロックはこのセクタを記憶す
べき適切なブロックであるか?
【0089】ブロックが適切なブロックであるか否かは
いくつかの要因によって決まるので、第4の決定は難し
い決定である。第1に、選択されるブロックは使用中の
チップの対に含まれることができない。使用中のチップ
対で待機することは、CPU52からの指令が従ってい
る速度を遅くしてしまうので、それを回避する。第2
に、選択されるブロックはクリーンアップの目標となっ
ているブロックの中にあってはならない。クリーンアッ
プの目標となっているブロックに書込むデータは全く別
の場所に位置指定されなければならないであろう。第3
に、選択されるブロックは別のプロセスに割当てられた
のと同じチップ対の中にあってはならない。これはデー
タ断片化を回避する。データ断片化は最終的にはフォア
グラウンド消去と、電力効率の減少という結果をもたら
す。データ断片化は、FLASHアレイ62の全体にわ
たるクリーンセクタ、ダーティセクタ及び空きセクタの
無作為な分布を表わす。メモリスペースの予約が少ない
場合、データ断片化は固体ディスクの性能には重大な危
険である。CPU52により開始された書込みをクリー
ンアップにより開始された書込みとは異なるチップ対に
割当てることにより、ダーティセクタは1つのグループ
にまとまるようになるであろう。これで、クリーンアッ
プ中にブロックからコピーしなければならないセクタの
数は減少するので、電力効率とクリーンアップ性能は向
上する。
【0090】図10、11は、ホスト書込み又はクリー
ンアップのために使用しうるメモリを割当てるアルゴリ
ズムの流れ図である。図示されているアルゴリズムはセ
クタ162に属する。書込むべきセクタのサイズと、呼
び出し側の型とが与えられれば、割当てアルゴリズムは
十分なメモリを位置指定し且つ予約する。予約した記憶
場所は将来のアルゴリズムによる参照に備えてRAMに
記憶される。
【0091】図10、11の割当てアルゴリズムを使用
すると、いくつかの結果が起こりうる。まず、最大の関
心をもたらす結果、すなわち、メモリを割当てる場合に
ついて考える。その他の結果については後に考慮する。
メモリの割当ては、メモリがクリーンアップのために要
求されたのか又はホスト書込みのために要求されたのか
を判定することによって始める。クリーンアップが空き
物理メモリを要求する場合、マイクロプロセッサ92は
ステップ282へ進む。これに対し、ホストCPU52
がメモリを要求した場合には、マイクロプロセッサ92
は利用可能なメモリ予約を考慮して書込みを許可すべき
か否かを決定しなければならない。この判定はステップ
272から280で起こる。
【0092】マイクロプロセッサ92は、ステップ27
2で、所望のサイズのセクタを書込んだ後に利用可能な
予約はどのようなものになるかを計算することにより、
その判定を開示する。ここでいう「予約」はFLASH
アレイ62の中の空きメモリとダーティメモリの双方を
指し、また、「セクタのサイズ」はデータと見出しの双
方のサイズを含む。次に、利用可能な予約を第1の警告
レベルFLASH Warn 1と比較する。一実施例
では、FLASH Warnは19ブロック分の予約を
表わす。利用可能な予約がFLASH Warn 1を
越えると、マイクロプロセッサ92はステップ273へ
進む。そこで、マイクロプロセッサ92は予約状態が受
け入れ可能であることを指示する。その後、マイクロプ
ロセッサ92はステップ282へ進む。これに対し、利
用可能な予約がFLASH Warn 1を越えない場
合には、マイクロプロセッサ92はそれらの予約をさら
に詳細に検査するように進んでゆく。しかしながら、ま
ず、マイクロプロセッサ92は、ステップ274で予約
状態をFLASH Warn 1に設定することによ
り、予約が第1の警告レベル以下に落ちたことを報知す
る。
【0093】ステップ275では、書込み後に残留して
いる利用可能な予約を第2の警告レベルFLASH W
arn 2と比較する。一実施例では、FLASH W
arn 2は11ブロック分の予約を表わす。書込み後
の利用可能な予約がこの第2の警告レベルを越えている
ならば、マイクロプロセッサ92はステップ282へ分
岐する。そうでない場合には、マイクロプロセッサ92
はステップ276へ進む。そこで、予約が第2の警告レ
ベル以下に落ちたことを指示するために予約状態をリセ
ットする。
【0094】マイクロプロセッサ92は、ステップ27
8で、利用可能な予約を第3の警告レベルstandb
yと比較することにより、利用可能な予約を再評価す
る。一実施例ではstandbyは2ブロック分の予約
を表わす。書込みの後に利用可能な予約がstandb
yを越えるならば、マイクロプロセッサ92はステップ
282へ分岐することにより書込みを実行させる。利用
可能な予約がstandbyを越えない場合には、マイ
クロプロセッサ92はステップ279へ進む。そこで、
予約状態をstandbyに設定される。その結果、ホ
ストCPU52によりセクタが解放されるまで、CPU
52によるそれ以上の書込みは許可されなくなる。次
に、ステップ304で、制御を呼び出し側に戻す。
【0095】マイクロプロセッサ92は、データスペー
ス86の中に書込むべきセクタデータを記憶するのに十
分な空きメモリをもつブロックを探索することをステッ
プ282をもって開始する。マイクロプロセッサ92は
1組のブロックチェーンを使用して1つのブロックを探
索する。図12には、そのうち2つのブロックチェーン
を示す。象徴的にいうならば、ブロックチェーン320
は固体ディスク60中の各チップ対(CPM) のブロッ
ク1を一体に連鎖する。同様に、ブロックチェーン32
2は各チップ対(CPM) のブロック15を一体に連係
している。図示してはいないが、ブロック2から14も
同様のチェーンとして連係されている。図示したように
ブロックを連鎖させることは必要であるが、データのセ
クタをチップ対境界にまたがって分布させる。これは受
動的な摩耗均等化を実現し、能動的な摩耗均等化をほぼ
不要にする。
【0096】マイクロプロセッサ92はRAMに記憶さ
れているポインタと関連してブロックチェーンを使用す
る。マイクロプロセッサ92は最前に各呼び出し側に割
当てられたチップとブロックを記憶する。次に同一のプ
ロセスがセクタを書込もうとしたときには、割当てアル
ゴリズムは、まず、そのプロセスに最前に割当てられた
ブロックを検査する。これは関連するデータ「ファイ
ル」を隣接メモリスペースに保持するのを助けると共
に、データ断片化のおそれを減少させるのを助ける。マ
イクロプロセッサ92が呼び出し側ごとにブロックを探
索するにつれて、呼び出し側のポインタはブロックチェ
ーンを循環してゆく。呼び出し側ごとに、RAMに記憶
されている開始ポインタは異なるので、データ断片化の
回避を助ける。各ポインタは独自の速度でブロックチェ
ーンを巡って動く。加えて、各ポインタは、空きメモリ
の可用度に従って、異なる速度でブロックチェーンから
ブロックチェーンへと移行する。2つのポインタがチェ
ーン中の同一のブロックを指示することは決してない。
【0097】このようにブロックチェーンを理解した上
で、図10、11の割当てアルゴリズムに従った十分な
メモリをもつブロックの位置指定に戻って再び論じる。
ステップ282では、マイクロプロセッサ92は利用可
能スペースを求めてどのブロックチェーンをも検査した
か否かを判定する。まだ、2つ以上のブロックチェーン
を検査していないときは、マイクロプロセッサ92はス
テップ282からステップ284へ分岐する。
【0098】ステップ284では、マイクロプロセッサ
92は利用可能スペースを求めて現在ブロックチェーン
中のどのチップをも探索したか否かを判定する。探索し
ていなければ、現在ブロックチェーンからチップを選択
する。ブロックチェーンで選択される第1のチップは、
同一のプロセスにより最前に割当てられたチップであ
る。従って、CPU52が最前にCP3、ブロック5に
セクタを書込んだ場合、次の書込みで検査される第1の
ブロックはCP3、ブロック5になるであろう。ブロッ
クを選択したならば、マイクロプロセッサ92はステッ
プ286へ分岐する。
【0099】ステップ286では、現在チップ対が使用
中であるか否かを知るために、マイクロプロセッサ92
は現在チップ対の状態レジスタを問い合わせる。そのチ
ップが使用中であれば、マイクロプロセッサ92はステ
ップ288へ分岐する。ステップ2888では、マイク
ロプロセッサ92は現在ブロックチェーンにおける次の
チップを選択する。たとえば、ステップ284でチップ
対3、ブロック5が選択された場合には、チップ対4、
ブロック5を選択することになる。これを実行したなら
ば、マイクロプロセッサ92はステップ284に戻る。
【0100】ステップ284では、マイクロプロセッサ
92は現在ブロックチェーンにおけるどのブロックをも
探索したか否かを知るために再び検査を実行する。これ
は検査すべきチェーンの第2のブロックであるので、マ
イクロプロセッサ92は再びステップ286へ進む。こ
こで、マイクロプロセッサ92は、現在チップ対が使用
中であるか否かを判定する。使用中であるならば、マイ
クロプロセッサ92は先に説明したようにステップ28
8及び284を通って進む。これに対し、現在チップ対
が使用中でない場合には、マイクロプロセッサ92はス
テップ289へ進む。
【0101】マイクロプロセッサ92は、現在選択され
たチップ対が別の呼び出し側に割当てられているか否か
を判定する。マイクロプロセッサ92は、他の呼び出し
側に関してRAMに記憶されているチップ及びブロック
を現在選択されたチップ及びブロックと比較することに
より、ステップ289でこれを実行する。たとえば、呼
び出し側はCPU52であり且つそれにチップ対4、ブ
ロック4が割り当てられていると仮定する。クリーンア
ップ状態機械1にチップ対4の1つのブロックが割当て
られた場合、マイクロプロセッサ92はチップ対4の中
のメモリスペースをCPU52に割当てない。この状況
で、マイクロプロセッサ92はステップ290へ進む。
ステップ290では、現在ブロックチェーンにおける別
のブロックを選択する。マイクロプロセッサ92はステ
ップ292からステップ284に戻る。
【0102】以前にそのメモリが割当てられるであろう
ということを仮定しているので、マイクロプロセッサ9
2はステップ284、286及び289を通過すること
により、最終的にはステップ291に至る。ステップ2
91では、マイクロプロセッサ92は現在ブロック選択
が別のブロックをクリーンアップの目標としているチッ
プの一部であるか否かを判定する。一部であるならば、
プログラムのために消去を延期できない限り、現在ブロ
ック選択は望ましくない。そうでない場合には、消去に
よりセクタの書込みは遅延されるであろう。これを回避
するために、マイクロプロセッサ92はステップ292
で現在ブロックチェーン中の別のチップを選択する。次
に、ステップ284〜291を再び分岐することによ
り、そのブロックの適否を判定する。
【0103】クリーンアップに含まれないブロックを位
置指定したとき、マイクロプロセッサ92はステップ2
93に到達する。ここで、マイクロプロセッサ92は、
シーク方式と一致した現在ブロックのBSTT84に別
の見出しを書込むことができるか否かを判定する。たと
えば、一実施例では、シークごとに最大限8つの見出し
を検査し且つ使用する見出しポインタはわずか256で
あるものとすれば、どのBSTTにも2047個の見出
しのみを書込めるであろう。最大数の見出しを既にBS
TT84に書込んだならば、別のブロックを選択しなけ
ればならない。マイクロプロセッサ92はステップ29
4へ分岐することによりそれを実行する。そうでない場
合には、マイクロプロセッサ92はステップ295へ分
岐することにより現在ブロックの評価を継続する。
【0104】ステップ295では、マイクロプロセッサ
92は、現在ブロックのデータスペース86の中にセク
タを記憶するのに十分なメモリが存在しているか否かを
判定する。圧縮によってセクタのサイズは変化するた
め、この検査が必要なのである。その結果、データスペ
ース86に記憶できるセクタの数が変化する。データス
ペース86が書込むべきセクタを記憶するのに十分なメ
モリを含んでいない場合、マイクロプロセッサ92は別
のブロックを選択しなければならない。マイクロプロセ
ッサ92はステップ296でこれを実行する。
【0105】セクタを記憶するのに十分な余地をもつブ
ロックを位置指定したならば、マイクロプロセッサ92
はセクタデータを現在ブロックに割当てる前に1つの最
後の検査を実行する。ステップ297では、ブロックの
良否を判定するために、マイクロプロセッサ92はブロ
ックのブロック属性データ90を検査する。ブロックが
不良であれば、マイクロプロセッサ92はステップ29
8へ進んで、現在ブロックチェーンにある別のチップを
選択する。これに対し、ブロックが合格である場合に
は、適切なブロックが最終的に見出されたことになる。
マイクロプロセッサ92はステップ299へ分岐するこ
とにより応答する。
【0106】ステップ299では、将来の参照に備え
て、マイクロプロセッサ92は選択したばかりのチップ
とブロックをRAMに記憶する。ステップ300へ分岐
することにより、マイクロプロセッサ92は最終的には
書込むべきセクタのためのメモリを割当てる。マイクロ
プロセッサ92は、選択したブロックのBSTT84に
ブロックセクタオフセットを書込むことによりこれを実
行する。マイクロプロセッサ92はステップ301でF
LASHアレイデータベース93を更新する。FLAS
Hアレイ62と、チップ及びブロックにおける空きメモ
リの総量(TFFA,TFFC(CM)及びTFFB
(BN))をセクタのサイズだけ減少させる。データベ
ースの更新が完了すると、マイクロプロセッサ92はス
テップ302へ分岐する。
【0107】最後に、ステップ302で、チップ、ブロ
ック及び見出しに対するオフセットを呼び出し側に戻
る。ここでいう「見出しに対するオフセット」又は「見
出しオフセット」は、ブロックの最上位部分から見出し
の最上位部分までのオフセットを表わす。割当てが完了
すると、ステップ304で制御は呼び出し側に戻る。
【0108】図10、11のアルゴリズムを使用してメ
モリスペースを割当てることができないいくつかの状況
がある。おそらくは、固体ディスク60が待機モードに
あるためか又は適切なブロックを位置指定できないため
に、メモリを割当てられないのであろう。どこで、どの
ように、メモリの割当てが不可能であるという決定が下
されようとも、マイクロプロセッサ92はステップ30
6へ向かう。
【0109】ステップ306では、マイクロプロセッサ
92はメモリの割当てが不可能であることを矯正できる
か否かを判定する。それは、メモリスペースを要求した
呼び出し側によって決まる。呼び出し側がCPU52で
ある場合、マイクロプロセッサ92はステップ308へ
進む。これに対し、メモリスペースを要求している呼び
出し側が2つのクリーンアップ状態機械の一方である場
合には、マイクロプロセッサはステップ310へ分岐す
る。呼び出し側がCPU52である場合、メモリの割当
てが不可能であることをフォアグラウンドクリーンアッ
プにより矯正できる。そこで、ステップ308では、マ
イクロプロセッサ92はフォアグラウンドクリーンアッ
プを開始させる。その結果、CPU52の書込み指令の
いずれかに従って動作を実行することになるので、CP
U52は相対的に長い時間にわたって待機しなければな
らない。
【0110】メモリを割当てることができず且つ呼び出
し側がクリーンアップ状態機械の一方である場合には、
実行すべきことはほとんどない。以下に詳細に説明する
ように、フォアグラウンドクリーンアップは2つ以上の
クリーンアップ状態機械を使用する。一実施例では、フ
ォアグラウンドクリーンアップは2つのクリーンアップ
状態機械を使用する。第1のクリーンアップ状態機械は
ブロックを消去し始めるまで中断なく動作する。消去を
開始した時点で、第2のクリーンアップ状態機械が始動
する。しかしながら、第1のクリーンアップ状態機械に
よる消去のために余りに多くの数のブロックが利用不可
能であるので、第2のクリーンアップ状態機械にメモリ
を割当てることは不可能であろう。第1のクリーンアッ
プ状態機械によるクリーンアップが完了したときには、
大量の空きメモリが形成されているので、これは重大な
危険ではない。マイクロプロセッサ92は、ステップ3
10で、呼び出し側のクリーンアップ状態機械の状態を
アイドル状態に変化させることにより、その事象を待機
するよう準備する。次に、ステップ304で、マイクロ
プロセッサ92は制御を呼び出し側に戻す。
【0111】図13、14は、ホスト書込みに際して空
き物理メモリを割当てる別の方法を流れ図の形で示す。
図10、11の方法と同様に、書込みを割当てるべきブ
ロックの選択は4つまでの決定を含むと思われる。メモ
リを割当てるための決定のうち2つは図10、11の方
法に従って実行されるのとほぼ同じ方式で実行される。
それらの決定は、 1.書込みを許可するのに十分な予約メモリが存在して
いるか? 2.ブロックは書込みを割当てるのに適切なブロックで
あるか? の2つである。図13、14の方法は、図10、11の
方法で行われていたように、書込むべきデータのセクタ
を記憶するのに十分なメモリを有する第1のブロックを
選択するのではなく、最も多くの量の空きメモリを有す
る新たなブロックをホスト書込みの割当てのために選択
することにより、ホスト書込みに対するデータのコヒー
レンシーを増大させる。最も多くの量の空きメモリをも
つブロックを選択する結果として、別のデータのセクタ
を記憶するのに空きメモリが不十分になるまで書込みは
選択したブロックに割当てられるようになるので、より
多くの量のホストデータが同じブロックに存在するので
ある。この割当ての方法はデータのコヒーレンシーを増
大させる。
【0112】ステップ1202では、要求されたセクタ
を書込んだ後にフラッシュアレイ62内部の最小限のメ
モリ予約が維持されるであろうか否かを判定することに
より、空き物理メモリの割当てが始まる。維持されない
のであれば、ステップ1204で、固体ディスク60は
FLASH STANDBYにあることをホストCPU
52に報知する。ホストCPU52が最小限のメモリ予
約に達するのに十分なメモリを解放するまで、それ以上
のホスト書込みは許可されない。これに対し、最小限の
メモリ予約が利用可能である場合には、マイクロプロセ
ッサ92はステップ1205へ進む。
【0113】データのコヒーレンシーを増大させ且つデ
ータ断片化の可能性を減少させるために、ステップ12
05で、マイクロプロセッサ92はホストデータが最前
に書込まれたブロックにセクタを割当てようと試みる。
簡略にするため、このブロックを「前のブロック」と呼
ぶ。まず、マイクロプロセッサ92はどのブロックが前
のブロックであるかを確定し、データベース93を参照
することにより、先のブロックに残っている空きメモリ
の量を確認する。前のブロックにある空きメモリの量が
セクタのサイズ以上である場合、セクタを前のブロック
に書込む。その場合、マイクロプロセッサ92は先のス
テップ1262へ分岐して、前のブロックのメモリを予
約する。これに対して、前のブロックの空きメモリが不
十分である場合には、マイクロプロセッサ92はステッ
プ1206へ分岐する。
【0114】ステップ1206、1208及び1210
では、マイクロプロセッサ92は1つのブロックの選択
で使用される変数を初期設定する。それらのステップの
間に、Most Free Block,Most F
ree Chip,Greatest Score及び
Most Freeを初期設定することになる。Mos
t FreeはMost Free Blockの中の
空きフラッシュメモリの量を表わす。その後、マイクロ
プロセッサ92はステップ1212へ進む。
【0115】ステップ1212はFLASHアレイ62
中の各ブロックのブロックごとの評価を開始する。ま
ず、ステップ1214〜1230で、各ブロックの適否
を判定するために各ブロックを検査する。ブロックが適
切であるとわかれば、ステップ1232〜1240で、
そのブロックに関わるスコアを生成することにより、そ
のブロックにセクタ書込みを割当てる所望度を確定す
る。次に、ブロックごとのスコアをGreatest
Scoreと比較する。そのスコアがMost Fre
eを越えれば、ステップ1242〜1248において、
現在ブロックの値を反映するために、Most Fre
e,Most Free Block及びGreate
st Scoreを全て改訂する。
【0116】ブロックの選択は、ステップ1212で、
全てのブロックを検査したか否か、従って、割当てのた
めに1つのブロックを選択したか否かを判定することに
より始まる。マイクロプロセッサ92は、全てのチップ
対を探索したか否かを判定することによりこれを実行す
る。まず最初にステップ1212を通過して、マイクロ
プロセッサ92は検査のために1つのブロックを選択
し、一対だけではないチップが検査されているために、
ステップ1214へ分岐する。
【0117】ステップ286では、マイクロプロセッサ
92は、チップ対が使用中であるか否かを知るために、
現在を含めた現在チップ対の状態レジスタを問合わせ
る。そのチップ対が使用中であれば、相対的に長い期間
にわたりそのチップ対は利用不可能になる。このため、
マイクロプロセッサ92はステップ1212へ分岐し
て、現在ブロックが使用中のチップ対の一部であるとき
に別のブロックを選択する。そうでない場合には、マイ
クロプロセッサ92はステップ1216へ進む。
【0118】ステップ1216では、マイクロプロセッ
サ92は、現在ブロックがクリーンアップの目標となっ
ている別のブロックを含むチップ対の一部であるか否か
を判定する。一部であれば、プログラムのために消去を
延期できない限り、現在ブロックを選択することは望ま
しくない。そうでない場合には、セクタの書込みは消去
により遅延されてしまうであろう。これを回避するため
に、マイクロプロセッサ92はステップ1212に戻っ
て、別のブロックを選択する。クリーンアップの目標と
なっているチップ対に含まれない現在ブロックが選択さ
れたときには、マイクロプロセッサ92はステップ12
18へ進む。
【0119】ステップ1218の間、マイクロプロセッ
サ92は、現在選択されたブロックチップ対のメモリが
最近にクリーンアップ状態機械に割当てられていたか否
かを判定する。そのようなブロックの選択はデータ断片
化のおそれを大きくするために、ホスト書込みに対して
は不適切である。マイクロプロセッサ92は、クリーン
アップ状態機械についてRAMに記憶されているチップ
及びブロックを現在選択されたチップ及びブロックと比
較することにより、この決定を実行する。たとえば、現
在ブロック選択がチップ対4、ブロック4であると仮定
する。チップ対4の1つのブロックがクリーンアップ状
態機械1に割当てられると、マイクロプロセッサ92は
チップ対4の中のメモリスペースをCPU52に割当て
ない。これらの状況においては、マイクロプロセッサ9
2はステップ1212へ戻り、別のブロックを選択す
る。
【0120】ステップ1220では、マイクロプロセッ
サ92は、ブロックの良否を判定するために、現在ブロ
ックに関わるブロック属性データ90を検査する。不良
であれば、マイクロプロセッサ92はステップ1212
へ進み、別のブロックを選択する。これに対し、ブロッ
クが適切なブロックである場合には、マイクロプロセッ
サ92は現在ブロックの適否の評価を継続することによ
り応答する。ステップ1230は、現在ブロックのBS
TT84にスペースが残っているか否かをアクセスし
て、現在ブロックが適切なブロックであるか否かを判定
する際の最終ステップである。BSTT84に最大数の
見出しが既に書込まれているならば、別のブロックを選
択しなければならない。
【0121】ステップ1230からステップ1232へ
出ることは、現在ブロックがホスト書込みの割当てにつ
いて適切であることを意味している。そこで、マイクロ
プロセッサ92はいくつかの係数する包含する総スコア
により表わされている現在ブロックの所望度を評価し始
める。考慮される第1の係数は、現在ブロックの中の空
き語の総数TFFBC である。このTFFBC に第1の
重みを乗算するのであるが、第1の重みの値は他の重み
の値より相当に大きくすべきである。これはブロックの
選択を最大量の空き物理メモリをもつブロックへ向かわ
せる。
【0122】マイクロプロセッサ92は、ステップ12
34へ分岐することにより所望度の評価を継続する。マ
イクロプロセッサ92は、TDFCとして表わされる現
在チップ対の中のダーティメモリの量をTPDFCとし
て表わされる現在チップ対の中のダーティメモリの可能
総量から減算することにより、現在ブロックが将来のク
リーンアップによる影響を受ける確率を検査する。次
に、この演算の剰余に重み2を乗算して、Rule 2
を生成する。TDFCが小さいほど、Rule2は大き
くなり、現在チップ対がクリーンアップのために直ちに
選択される確率は低くなる。現在ブロックの所望度は現
在ブロック中のダーティメモリの量TDFBによっても
評価される。ステップ1235では、TDFBに重み3
を乗算して、Rule 3を生成する。
【0123】現在ブロックの所望度をアクセスするに際
して評価されるもう1つの係数は、アレイ62中の最大
サイクルカウントと比較される現在ブロックの番号サイ
クルカウントである。「Δサイクルカウント」と表わさ
れるこの係数にステップ1236において重み4を乗算
する。この係数はブロックの選択をサイクルカウントの
少ないブロックへ向かわせ、その結果、受動的摩耗均等
化が実現する。マイクロプロセッサは現在ブロックの所
望度の第5の、そして、最後の係数をステップ1238
でアクセスする。この係数は、現在チップ中の他のいず
れかのブロックが割当てられていないかどうかというも
のである。これも、セクタデータをチップ境界にまたが
って拡散させることにより幾分かの摩耗均等化を実現す
る。この係数に重み5を乗算して、Rule 5を生成
する。
【0124】ステップ1240では、マイクロプロセッ
サはRule 1、Rule 2、Rule 3、Ru
le 4及びRule 5を加算することにより現在ブ
ロックの総スコアを生成する。次に、マイクロプロセッ
サ92はこの総スコアをGreatest Score
と比較する。総スコアがGreatest Score
を越えていれば、現在ブロックはそれまでに評価したブ
ロックの中で最も望ましいブロックである。従って、ス
テップ1244、1246及び1248で、現在ブロッ
クの値を反映するために改訂する。その後、マイクロプ
ロセッサ92はステップ1212に戻り、FLASHア
レイ62の別のブロックを評価する。
【0125】全てのブロックを評価し終わった後、マイ
クロプロセッサ92はステップ1250へ分岐する。そ
こで、最も空きの多いブロックの中にCPU52が書込
みを希望するデータのセクタを記憶するのに十分な空き
メモリが存在しているか否かを判定する。存在している
ならば、ステップ1262へ分岐することにより割当て
は進行する。そうでない場合には、マイクロプロセッサ
92はステップ1260へ分岐する。
【0126】ステップ1260に入るということは、現
在セクタを記憶するのに十分な空きメモリをもつブロッ
クを位置指定できるようになる前にFLASHアレイ6
2をクリーンアップしなければならないことを意味して
いる。そこで、マイクロプロセッサ92はフォアグラウ
ンドクリーンアップを開始する。ブロックをクリーンア
ップしたならば、マイクロプロセッサ92はステップ1
212に戻り、割当てのために別のブロックを選択す
る。
【0127】最終的には、データのセクタを記憶するの
に十分なスペースをもつブロックを識別し、マイクロプ
ロセッサ92はステップ1262に到達する。データの
セクタに対するメモリスペースの割当ては、本格的に
は、Most Free BlockのBSTT84の
中の次に利用可能な見出しを識別することにより始ま
る。次に、ステップ1264で、そのセクタに関わる適
切なブロックセクタオフセットをその見出しに書込む。
その後、アレイ、Most Free Chip及びM
ost Free Blockにある空きフラッシュの
総量をセクタのサイズだけ減少させる。最後に、ステッ
プ1266では、マイクロプロセッサは書込むべきデー
タのセクタと現在関連しているチップ、ブロック及び見
出しに対するオフセットを指示する。
【0128】 D.セクタのバージョンをダーティとマークする動作 図15は、セクタ162により実現される、セクタをダ
ーティとマークする動作のアルゴリズムを流れ図の形で
示す。このアルゴリズムは書込みの間、クリーンアップ
中及びセクタ見出し変換テーブル94の作成中に有用で
ある。
【0129】ダーティとマークするアルゴリズムは、ダ
ーティとマークすべきセクタデータに関わるチップ、ブ
ロック及び見出しに対するオフセットという3種類の情
報を要求する。この情報を与えられたときのステップ3
20におけるマイクロプロセッサ92の第1のタスク
は、そのバージョンのセクタデータを記憶するチップ対
の利用度を確定することである。従って、ステップ32
0では、マイクロプロセッサ92は適切なチップ対と関
連する状態レジスタを読取る。チップ対が使用中であれ
ば、マイクロプロセッサ92はステップ322へ分岐す
る。これに対して、チップ対が使用中でない場合には、
マイクロプロセッサ92はステップ324へ分岐する。
【0130】ステップ322に入るということは、所望
のセクタが利用不可能であることを表わしている。クリ
ーンアップはチップ対の不利用度についての唯一可能な
説明である。クリーンアップを終了するのを待つのでは
なく、マイクロプロセッサ92はセクタの前のコピーを
ダーティとマークするための注釈を象徴的に残す。マイ
クロプロセッサ92は、ダーティとマークすべきセクタ
データのチップ、ブロック及び見出しに対するオフセッ
トをキャッシュすることにより、これを実行する。クリ
ーンアップが完了したとき、キャッシュを検査し、セク
タをダーティとマークする。その後、マイクロプロセッ
サ92はステップ326へ分岐して、その呼び出し側に
制御を戻す。
【0131】セクタデータの前のコピーを記憶している
チップ対が使用中でない場合には、マイクロプロセッサ
92はステップ320からステップ324へ進む。そこ
で、マイクロプロセッサ92はチップブロック及びオフ
セットにより指示されるセクタのコピーをダーティとマ
ークする。データのセクタは、セクタの見出しの属性語
の中のダーティビットを0にセットすることにより、ダ
ーティとマークされる。これを実行したならば、マイク
ロプロセッサ92はステップ326へ進み、制御を呼び
出し側に戻す。
【0132】III. 固体ディスクのクリーンアップ 固体ディスクドライブ60は、データのセクタが改訂さ
れるたびに、前の記憶場所を消去し且つ改訂したデータ
をその同じ物理記憶場所に書込むのではなく、そのデー
タのセクタを新たな記憶場所に書込むことにより、従来
の磁気ディスクドライブに近い書込み速度を達成する。
これを実行した結果、固体ディスク60にダーティセク
タがまき散らされることになる。ダーティセクタが占め
ているメモリスペースを回復することはクリーンアップ
を指定する。若干異なる言いかたをすれば、固体ディス
ク制御装置64の書込み慣例によれば、ダーティセクタ
を空きメモリに変換する必要がある。
【0133】簡単に説明すると、クリーンアップは3つ
の主要タスクを含む。第1に、クリーンアップの焦点と
してブロックを選択する。第2に、有効ユーザーデータ
のセクタを焦点ブロックから宛先ブロックと呼ばれる他
のブロックにコピーする。第3に、全ての有効セクタを
焦点ブロックからコピーした後、焦点ブロックを消去
し、ダーティセクタを空きメモリに変換する。クリーン
アップは、一般にバックグラウンドプロセスである。F
LASHアレイ62に対する読取りと書込みは、通常
は、バースト単位で起こるので、クリーンアップはバッ
クグラウンドプロセスとしてランすることができる。そ
の結果、マイクロプロセッサ92が自在にクリーンアッ
プするときの期間は相対的に長い。
【0134】クリーンアップは、クリーンアップ状態機
械と呼ばれる有限状態機械により管理される。すなわ
ち、クリーンアップは互いに連鎖する限られた数の状
態、すなわち、アルゴリズムを使用して実行される。各
々のクリーンアップ状態は次の状態を指示し、各状態を
実際には別の状態に連鎖してゆく。各状態はCPU92
の実行時間として500μ秒以上を要さない。バックグ
ラウンドクリーンアップは単一のクリーンアップ状態機
械を使用し、ホストインタフェース152が不作動状態
であるときに限って実行時間を許可される。これとは対
照的に、固体ディスク60のフォアグラウンドクリーン
アップの間には、2つのクリーンアップ状態機械が同時
にランする。書込み要求に対して空きメモリが不足して
いるためにCPU52からの書込み指令を実行できない
とき、クリーンアップはフォアグラウンドタスクにな
る。
【0135】バックグラウンドクリーンアップとフォア
グラウンドクリーンアップは共に固体ディスク制御装置
114のクリーンアップオブジェクト164により処理
される。図15は、クリーンアップオブジェクト164
の高レベルアルゴリズムをブロック線図の形で示す。ア
ルゴリズムはCSMイネーブル340と、クリーンアッ
プ強制342と、マルチクリーンアップ強制344と、
1状態実行346と、条件調整までマルチCSM実行3
48とを含む。バックグラウンドクリーンアップは、C
SMイネーブルアルゴリズム340が呼び出されたとき
に始まる。CSMイネーブル340は、固体メモリディ
スク60にホストが書込むたびに呼び出される。たとえ
ば、CSMイネーブル340は図10、11の書込みア
ルゴリズムステップ260で呼び出される。CSMイネ
ーブル340はCSM次状態ポインタをクリーンアップ
状態に設定することによりクリーンアップ状態機械を起
動する。
【0136】その第1のクリーンアップ状態の実行は、
トップレベルスケジューラ150がクリーンアップにC
PU92の時間を割当てるたびに起こる。トップレベル
スケジューラ150は1状態実行アルゴリズム346を
呼び出すことによりこれを実行する。1状態実行346
はCSM次状態ポインタにより指示される状態を呼び出
す。その状態は、どちらの状態であれ、CPU92の状
態を引き渡すのに先立って、次状態ポインタを変更す
る。従って、トップレベルスケジューラ150がクリー
ンアップに実行時間を割当てるたびに、1状態実行を呼
び出すことにより別のステップが実行されるのである。
【0137】フォアグラウンドクリーンアップはクリー
ンアップ164のサービス348を呼び出すことによっ
て始まる。条件調整までマルチCSM実行348は、書
込み要求に対して空きメモリを割当てることができない
ときに呼び出される。これは、それ以上の書込みを実行
する前に空きメモリを生成する必要があるという決定を
表わしている。条件調整までマルチCSM実行348
は、2つのクリーンアップ状態機械をイネーブルするこ
とによりこれを実行する。フォアグラウンドクリーンア
ップ及びバックグラウンドクリーンアップとは対照的
に、クリーンアップ強制342とマルチクリーンアップ
強制344の双方はCPU52により呼び出される。ク
リーンアップ強制342は一方のクリーンアップ状態機
械をイネーブルし、また、マルチクリーンアップ強制3
44は2つのクリーンアップ状態機械をイネーブルす
る。
【0138】A.バックグラウンドクリーンアップ 1.バックグラウンドクリーンアップの開始とクリーン
アップ状態の連係 バックグラウンドクリーンアップはCSMイネーブル3
40に対する呼び出しによって開始される。CSMイネ
ーブル340の流れ図を図17に示す。ステップ360
におけるマイクロプロセッサ92の第1のタスクは、ク
リーンアップ状態機械1が既に活動状態であるか否かを
判定することである。活動状態であれば、実行すべきこ
とは何もない。その場合には、マイクロプロセッサ92
は何もせずにステップ361へ分岐する。クリーンアッ
プ状態機械1が活動状態でない場合、マイクロプロセッ
サ92はステップ362へ分岐する。
【0139】ステップ362では、マイクロプロセッサ
92はバックグラウンドクリーンアップを開始するため
に必要な2つの小さなタスクのうち第1のタスクを実行
する。そこで、マイクロプロセッサ92は変数CSM
1.statusを活動に設定することによりクリーン
アップ状態機械1(CSM1)を活動状態にする。これ
を実行したならば、マイクロプロセッサ92はステップ
364へ進む。次に、マイクロプロセッサ92はバック
グラウンドクリーンアップをセットアップするために要
求される第2のタスクを実行する。これは、CSM1の
次状態ポインタをクリーンアップが必要か否か評価状態
380に設定することにより実行される。次に、トップ
レベルスケジューラ150が1状態実行346を呼び出
したときに、バックグラウンドクリーンアップは始ま
る。そのジョブを実行したならば、マイクロプロセッサ
92はステップ361へ分岐する。
【0140】図18は、クリーンアップ状態機械の状態
を互いに連鎖するアルゴリズムである1状態実行346
の流れ図である。単一のアルゴリズムによって多数の状
態を連鎖させるメカニズムは、CSM次状態ポインタで
ある。各々のクリーンアップ状態機械は独自の次状態ポ
インタを有しており、そのポインタはそれぞれの状態の
終了時に更新される。1状態実行346に入ると、マイ
クロプロセッサ92は、CSM2.statusを検査
することにより、第2のクリーンアップ状態機械CSM
2が活動状態であるか否かを判定する。CSM2が活動
状態でない場合、マイクロプロセッサ92はステップ3
70へ直接に分岐する。これに対し、フォアグラウンド
クリーンアップがちょうど終了しようとしているときに
は、その結果、CSM2は活動状態になるであろう。こ
の場合、マイクロプロセッサ92はステップ368でC
SM2の別の状態を実行する。次に、ステップ374で
制御を呼び出し側に戻す。
【0141】CSM2がアイドル状態になると、CSM
1が活動状態であれば、マイクロプロセッサ92はCS
M1に注意を集中する。マイクロプロセッサ92はステ
ップ370でこの決定を実行する。CSM1が非活動状
態であれば、実行すべきことは何もないが、ステップ3
74で制御を呼び出し側に戻す。そうでない場合には、
CSM1の次状態ポインタが指示している状態を実行す
る。その後、ステップ374で制御を呼び出し側に戻
す。
【0142】2.クリーンアップ状態機械の状態の概要 クリーンアップ中の事象の連鎖はどのようなものであろ
うか?簡単にいえば、クリーンアップはその種類にかか
わらず3つの主要タスクを含む。第1に、クリーンアッ
プの焦点として1つのブロックを選択する。第2に、良
セクタごとに、ユーザーデータを焦点ブロックから宛先
ブロックへ置き換える。ユーザーデータの置き換え自体
は複数のステップから成るプロセスであって、メモリの
割当てと、宛先ブロックへのセクタのコピーと、FLA
SHデータベース93の更新とを要求する。第3に、全
てのユーザーデータを焦点ブロックからコピーし終わっ
た後に、焦点ブロックを消去し、ダーティセクタを空き
メモリに変換する。
【0143】図19は、クリーンアップ状態機械の各々
の状態を示すことにより、クリーンアップの概要を表わ
している。図19の中の丸印はクリーンアップ状態機械
の1つの状態、すなわち、1つのアルゴリズムを表わ
す。状態間の矢印は、1つの状態の終了時にCSM次状
態ポインタにより指示される次状態を表わす。バックグ
ラウンドクリーンアップは、状態380で、クリーンア
ップが必要であるか否かを評価することによって始ま
る。フォアグラウンドクリーンアップと、強制クリーン
アップの間には、クリーンアップが必要であるか否かの
評価を飛び越す。クリーンアップが必要でなければ、マ
イクロプロセッサ92は状態396へ分岐する。これは
マイクロプロセッサ92の制御をトップレベルスケジュ
ーラ150に戻す。これに対し、クリーンアップが必要
であると考えられる場合には、いくつかのブロックをク
リーンアップする。カウンタにより、選択された数のブ
ロックを指示する。その後、CSM次状態ポインタによ
りマイクロプロセッサ92は次状態382へ指示され
る。クリーンアップは、状態382で、クリーンアップ
のために焦点ブロックを選択することによって本格的に
始まる。次に、次状態ポインタはマイクロプロセッサ9
2を状態383へと指示する。
【0144】焦点ブロック中のダーティセクタをクリー
ンアップするのに先立って、ユーザーデータの有効セク
タを安全に再配置しなければならない。このタスクは、
焦点ブロック中のユーザーデータのあらゆるセクタが新
たな記憶場所へ安全にコピーされ終わるまで、状態38
3、384、385、386及び388を通って繰り返
し分岐することを要求する。ユーザーデータの再配置
は、状態384で、ユーザーデータの1つの良セクタに
対して新たな物理記憶場所を位置指定することによって
始まる。新たな記憶場所として選択されるブロックを宛
先ブロックという。この用語に従えば、クリーンアップ
は1つの焦点ブロックを有するが、宛先ブロックは数多
くある。次に、CSM次状態ポインタはマイクロプロセ
ッサ92に状態385を指示する。
【0145】状態385では、焦点ブロックからセクタ
バッファ98へセクタをコピーする。状態386では、
マイクロプロセッサ92は有効セクタの一部をセクタバ
ッファから現在宛先ブロックにコピーする。バックグラ
ウンドクリーンアップがCPU52からの読取り指令及
び書込み指令への応答に影響を及ぼすのを阻止するとい
う希望に従って、書込み速度が与えられたならば、一度
に有効セクタの一部のみをコピーすることになる。従っ
て、1つの有効セクタが宛先ブロックに完全にコピーさ
れる前に、マイクロプロセッサ92は何度か状態386
を通過することになるかもしれない。有効セクタが完全
にコピーされ終わったならば、CSM次状態ポインタは
マイクロプロセッサ92を状態388に指示する。
【0146】状態388の間、セクタ番号に関わるデー
タの以前のバージョンがダーティとマークされていなか
った場合にセクタ見出し変換テーブル94が焦点ブロッ
クからコピーしたばかりのセクタの新たな記憶場所を指
示するように、マイクロプロセッサ92はセクタ見出し
変化テーブル94を更新する。マークされていたなら
ば、マイクロプロセッサ92はコピーしたばかりのセク
タのバージョンをダーティとマークする。最終的には、
マイクロプロセッサ92はそのセクタ番号に関わるセク
タデータの新たなバージョンと関連する見出しの書込み
を終了する。その後、マイクロプロセッサ92は状態3
84に戻る。
【0147】状態384に再び入ると、マイクロプロセ
ッサ92は焦点ブロック中のあらゆる良セクタを再配置
し終わったか否かを判定する。再配置していなければ、
再配置のために別の良セクタを選択し、焦点ブロック中
の全ての良セクタを再配置し終わるまで、マイクロプロ
セッサ92は状態384、385、386、388及び
383を通って分岐する。それが起こったとき、CSM
次状態ポインタはマイクロプロセッサ92を状態390
に指示する。
【0148】マイクロプロセッサ92は、状態390
で、焦点ブロックの消去を開始する。マイクロプロセッ
サ92は、チップ対に消去指令を発し且つ消去すべきブ
ロックを指示することにより、消去を開始する。これを
実行したならば、マイクロプロセッサ92は状態392
へ進んで、消去が完了するのを待つ。焦点ブロックを含
むチップ対が消去の完了を指示するまで、CSMは状態
392にとどまる。
【0149】焦点ブロックを消去したならば、マイクロ
プロセッサ92はブロック属性データ90を更新して、
焦点ブロックに戻し、コピーする。これを実行した後、
CSM次状態ポインタによりマイクロプロセッサ92に
再び状態380を指示する。状態380に再び入ると、
マイクロプロセッサ92は、別の焦点ブロックを選択す
べきか否かを判定するためにブロックカウンタを検査す
る。選択すべきであれば、先に説明した通りマイクロプ
ロセッサ92は状態382、386、388、390、
392及び394を通って分岐する。そうでない場合に
は、マイクロプロセッサ92はステップ396へ分岐し
て、クリーンアップを完了する。
【0150】 3.クリーンアップが必要であるか否かの評価 図20は、FLASHアレイ62をクリーンアップすべ
きか否かを評価するために状態380で使用するアルゴ
リズムを流れ図の形で示す。このアルゴリズムを使用し
た場合、総ダーティメモリが総メモリ予約の設定された
パーセンテージを越えたときに、バックグラウンドクリ
ーンアップをトリガすることになる。総メモリ予約は総
空きメモリ(TFFA)と、総ダーティメモリ(TDF
A)との和として定義されている。総予約に対する総ダ
ーティメモリのパーセンテージは固体ディスク60の性
能と電力効率を左右する。
【0151】マイクロプロセッサ92は、ステップ40
0で、評価が必要であるか否かを判定することにより動
作を開始する。これは、以後にクリーンアップすべきブ
ロックの数を確定するためにカウンタを検査することに
よって実行される。零より大きい数は、いずれも、クリ
ーンアップが既にトリガされており、それ以上の評価は
不要であることを指示する。マイクロプロセッサ92が
初めて状態380に入ったとき、カウンタは零より小さ
いので、マイクロプロセッサ92は必然的にステップ4
02へ分岐することになる。ステップ402では、マイ
クロプロセッサ92はFLASHアレイ62の中のダー
ティメモリの総量を総メモリ予約のパーセンテージとし
て計算する。
【0152】ステップ404では、ステップ402で計
算したパーセンテージをクリーンアップトリガポイント
と比較する。クリーンアップトリガポイントは総メモリ
予約の何らかのパーセンテージに固定されていても良い
が、あるいは、CPU52の要求に基づいて適応変化さ
れても良い。クリーンアップトリガポイントを適応変化
させるためのアルゴリズムについては、後に詳細に説明
する。総ダーティメモリがトリガポイントで等しいか又
はそれを越える場合にはマイクロプロセッサ92はステ
ップ406へ分岐することによりバックグラウンドクリ
ーンアップを起動する。これに対し、総ダーティメモリ
のパーセンテージがトリガポイントを越えない場合に
は、マイクロプロセッサ92はステップ409へ分岐す
る。クリーンアップは不要であるので、CSM1の状態
をアイドルに設定する。状態410へ分岐することによ
り、クリーンアップを開始することなく制御をトップレ
ベルスケジューラ150に戻す。
【0153】ステップ406では、マイクロプロセッサ
92はブロックカウンタをクリーンアップすべきブロッ
クの最大数に設定する。一実施例では、その最大数は3
に設定される。これを実行したならば、マイクロプロセ
ッサ92はステップ408へ進む。ステップ408で
は、マイクロプロセッサ92はCSM次状態ポインタを
クリーンアッププロセスにおける次の状態である状態3
82へ進める。これを実行したならば、マイクロプロセ
ッサ92はステップ410へ分岐することにより制御を
トップレベルスケジューラ150に戻す。
【0154】クリーンアップが必要であるか否かを評価
するための後続する呼び出しの間に、状態380ににお
いて、マイクロプロセッサ92はステップ400でブロ
ックカウンタを検査することによって動作を開始する。
ブロックカウンタが零を越えれば、クリーンアップの必
要は評価されない。その代わりに、マイクロプロセッサ
92はブロックカウンタを減分し、ステップ401へ分
岐する。ステップ401では、マイクロプロセッサ92
はCSM次状態ポインタを状態382に指示し、クリー
ンアップすべきブロックを選択する。次に、マイクロプ
ロセッサ92は戻りステップ410を経て状態380か
ら出る。
【0155】図21は、クリーンアップが必要であるか
否かを評価するためにステップ404で使用されるトリ
ガポイントを適応変化させるアルゴリズムを流れ図の形
で示す。図示したアルゴリズムはセクタ162に属して
いる。ステップ412では、マイクロプロセッサ92は
トリガポイントが余りに低く設定されていないかどう
か、即ち、FLASHアレイ62がダーティになりすぎ
るようにされていないかどうかを判定する。Mを大きな
数とするとき、マイクロプロセッサ92は、最前のM回
の書込みの中で何回かのフォアグラウンドクリーンアッ
プが起こったか否かを判定することによりこれを実行す
る。起こっていれば、マイクロプロセッサ92はステッ
プ414へ進む。起こっていなければ、マイクロプロセ
ッサ92はステップ416へ分岐する。
【0156】ステップ414では、FLASHアレイ6
2がダーティになりすぎるようにされていたため、マイ
クロプロセッサ92はトリガポイントを少量だけ減少さ
せる。これは、FLASHアレイ62が将来ダーティに
なるのを阻止するという効果をもつ。ステップ414か
ら、マイクロプロセッサ92は制御を呼び出し側プログ
ラムに戻す。
【0157】ステップ416は、マイクロプロセッサ9
2は、FLASHアレイ62が余りにクリーンに保持さ
れていないかどうかを考慮する。Nを大きな数とすると
き、マイクロプロセッサ92は最前のN回の書込みの中
のフォアグラウンド消去の回数を評価することによりこ
れを確定する。非常に長い時間にわたりフォアグラウン
ド消去が起こっていなければ、マイクロプロセッサ92
はステップ418へ分岐する。起こっていたならば、マ
イクロプロセッサ92はトリガポイントを変更すること
なくステップ420へ進む。
【0158】ステップ418では、マイクロプロセッサ
92はトリガポイントをわずかに増加させる。これによ
り、バックグラウンドクリーンアップをトリガする前と
比べてFLASHアレイ62はわずかにダーティにな
り、その結果、クリーンアップ効率は向上する。トリガ
ポイントを調整したならば、ステップ420へ分岐する
ことにより、マイクロプロセッサ92は呼び出し側プロ
グラムに制御を戻す。
【0159】4.クリーンアップすべきブロックの選択 クリーンアップをトリガしたならば、状態382では焦
点ブロックを選択する。焦点ブロックを選択するときの
目標は、最も費用有効性を高くクリーンできるブロック
を選択することである。費用有効性のあるクリーンアッ
プは、電力消費が過剰になるほどFLASHアレイ62
をクリーンに保持することと、フォアグラウンドクリー
ンアップが頻繁に起こるほどFLASHアレイ62をダ
ーティに保持することである。1つのブロックがクリー
ンアップに関して費用有効性のある焦点であるか否かを
判定するときに、いくつかの係数を考慮すべきである。
第1に、そのブロックがどれほどダーティであるかとい
うことである。ブロックがダーティになるほど、そのブ
ロックを消去する費用有効性は高い。焦点を選択する場
合、決定をフォアグラウンドクリーンアップを最小限に
抑える方向に向かわせるために、この係数に最も大きな
重みを付ける。第2に、焦点が一部を成しているチップ
対にどれほどのメモリがあるかということである。この
係数は、プログラムのために消去を延期する能力をもた
ないFLASHメモリデバイスについてのみ考慮され
る。消去を延期する能力をもたないFLASHデバイス
の場合、単一のブロックの消去中、そのチップ対の中の
どのブロックも利用不可能である。このため、同じチッ
プ対の中に大量の空きメモリがある場合に1つの特定の
ブロックをクリーンアップする所望度は低下する。第3
に、焦点ブロックの中にどれほどの有効ユーザーデー
タ、すなわち、良データが存在しているかということで
ある。これにより、焦点からコピーしなければならない
セクタの数は増加するので、焦点として特定の1ブロッ
クを選択する所望度も低下する。逆に言えば、コピーし
なければならない良セクタが少ないほど、ブロックをク
リーンアップする所望度は高くなる。焦点ブロックを選
択するときには、他の係数を考慮しても良い。
【0160】図22は、先に論じた係数を使用して状態
382でクリーンアップすべきブロックを選択するため
のアルゴリズムを示す。簡単に説明すれば、FLASH
アレイ62の中のブロックごとに1つのスコアを生成す
ることにより、クリーンアップの焦点として1つのブロ
ックを選択する。このスコアは、各々の係数を適切に重
みづけし且つ重みづけした係数を加算することにより生
成される。最も高い総スコアを有するブロックをクリー
ンアップの焦点として選択する。
【0161】ステップ440では、全てのブロックを検
査し終わったか否か、従って、焦点ブロックを選択した
か否かを判定することにより、焦点ブロックの選択が始
まる。マイクロプロセッサ92は、全てのチップ対を探
索したか否かを判定することによりこれを実行する。ス
テップ440を始めて通過した後、検査されたチップ対
は1つではないため、マイクロプロセッサ92はステッ
プ442へ分岐する。ステップ444では、マイクロプ
ロセッサ92は選択したチップ対の中で検査すべき1つ
のブロックを選択する。あらゆるブロックを検査したわ
けではない場合には、次に、マイクロプロセッサ92は
ステップ448へ進む。
【0162】ステップ445では、マイクロプロセッサ
92は、ブロックが現在は別のクリーンアップ状態機械
によるクリーンアップの焦点であるチップ対の一部であ
るか否かを判定する。これにより、クリーンアップの目
標となっているチップの中の全てのブロックはいずれか
の時点で長期間にわたり利用不可能となるので、現在ブ
ロックは所望度の低い焦点ブロックになる。マイクロプ
ロセッサ92は、RAMに記憶されているチップとブロ
ックの情報を検査することにより、チップが別のクリー
ンアップ状態機械のクリーンアップの目標となっている
か否かを判定することができる。この係数に重み1を乗
算してRule 1を生成した後、マイクロプロセッサ
92はステップ446へ進む。この第1のスコアは、現
在ブロック中のダーティな語の総数TDFBC に第1の
重みを乗算することにより生成される。この重みの値は
後続する重みの値より相当に大きくなければならない。
次に、マイクロプロセッサ92はステップ446からス
テップ448へ分岐する。
【0163】マイクロプロセッサ92は、ステップ44
8で、現在ブロックに関わる第2のスコアを計算する。
そこで、選択したチップ対の中の空きFLASHの総量
TFFCC に第2の重みを乗算する。その後、マイクロ
プロセッサ92はステップ449へ分岐する。第3のス
コアはステップ449で計算される。そこで、現在ブロ
ックが最前に消去されたチップ対の中にあるか否かによ
って、ブロックの所望度を評価する。その後、マイクロ
プロセッサ92はステップ450へ分岐する。
【0164】ステップ450では、マイクロプロセッサ
92は現在ブロックに関わる第4のスコアを計算する。
マイクロプロセッサ92は、現在ブロック中の良バイト
の総数をそのブロックの中のバイトの総数から減算する
ことにより、このスコアを計算し始める。次に、マイク
ロプロセッサ92はこの数に第4の重みを乗算する。第
4の重みは、焦点ブロックの選択を良さという点では劣
るセクタデータを有するブロックを選択することにわず
かに偏向させようとするものである。次に、マイクロプ
ロセッサ92はステップ451へ分岐する。第4の重み
は第1の重みと比較して相対的に小さい。
【0165】現在ブロックに関わる第5の、そして、最
後のスコアはステップ451の間に生成される。考慮さ
れる第5の係数は選択をサイクルカウントの低いブロッ
ク向かわせ、それにより、受動摩耗均等化を行うのであ
る。アレイ62中の最大サイクルカウントと比較して現
在ブロックのサイクルカウントが少ないほど、ブロック
の所望度は高くなる。そこで、「Δサイクルカウント」
により表わされるこの係数に第5の重みを乗算する。
【0166】ステップ452では、マイクロプロセッサ
92は現在ブロックの所望の特性を反映するRule
1、Rule 4及びRule 5を加算することによ
り、ブロックに関わる総スコアを生成する。Rule
0、Rule 2及びRule 3は焦点ブロックの望
ましくない特性を指示しているので、この和からそれら
を減算する。ステップ454へ進むと、マイクロプロセ
ッサ92は現在ブロックに関わる総スコアを最大総スコ
アと比較する。現在ブロックに関わる総スコアが最大総
スコアを越えていれば、最大総スコアを上向きに改訂
し、マイクロプロセッサ92はステップ456へ進む。
これに対し、現在ブロックに関わる総スコアが最大総ス
コア以下である場合には、マイクロプロセッサ92はス
テップ444に戻る。
【0167】ステップ456では、マイクロプロセッサ
92は現在最大総スコアを有するブロックのチップ、ブ
ロック及びスコアを記憶する。次に、マイクロプロセッ
サ92はステップ444に戻る。ステップ444に再び
入ると、マイクロプロセッサは現在選択したチップ対の
中のあらゆるブロックを評価したか否かを決定する。全
てのブロックを評価し終わっていなければ、選択したチ
ップ対の中の全ブロックを評価し終わるまで、マイクロ
プロセッサ92はステップ446、448、450、4
52、454、456及び444を経て分岐する。選択
したチップ対の中のブロックが評価されるたびに、マイ
クロプロセッサ92はステップ440に戻る。ステップ
440は、どのチップ対の中のブロックも検査されたか
否かを判定する。検査されていなければ、FLASHア
レイ62の中の全てのチップ対の全てのブロックを評価
し終わるまで、マイクロプロセッサ92はステップ44
2、444、446、450、452、454、456
及び440を経て分岐する。次に、マイクロプロセッサ
92はステップ458へ進む。
【0168】マイクロプロセッサ92はクリーンアップ
の焦点として選択したチップとブロックを焦点ウィンド
ウに書込む。マイクロプロセッサ92はステップ456
で記憶したブロックとチップのアドレスを使用して、こ
れを実行する。その後、マイクロプロセッサはステップ
460へ進む。現在の目標に到達したならば、ステップ
460で、マイクロプロセッサ92は空き物理セクタを
割当てるためにCSM次状態ポインタを設定する(状態
384)。ステップ460から、マイクロプロセッサ9
2はステップ462へ分岐することにより制御をトップ
レベルスケジューラ150に戻る。
【0169】 5.クリーンアップのための空き物理セクタの割当て 焦点ブロックを消去するのに先立って、焦点ブロックか
らユーザーデータの全ての有効セクタをコピーし、宛先
ブロックへ再配置しなければならない。再配置プロセス
における第1のステップは、焦点ブロックに現在入って
いるユーザーデータのセクタに対してメモリスペースを
割当てることである。図23は、クリーンアップ中、メ
モリの割込みを管理する状態384に関わるアルゴリズ
ムを示す。
【0170】マイクロプロセッサ92は、ステップ47
2で、焦点ブロック中のあらゆる良セクタを再配置した
か否かを判定することにより割当てを開始する。マイク
ロプロセッサ92は、次の見出しに到達するまで焦点ブ
ロックのBSTT84を走査してゆくことによってその
決定を実行する。見出しの中の属性語がFFFF(16
進数)である場合、ユーザーデータのどのセクタも焦点
ブロックからコピーされ終わっている。その場合、マイ
クロプロセッサ92は状態480へ分岐する。全ての有
効セクタがコピーされたわけではない場合には、マイク
ロプロセッサ92はそのセクタが有効であるか又はダー
ティであるかを知るために属性語を検査する。ダーティ
セクタはマイクロプロセッサ92にBSTT84を次の
見出しまで走査させる。マイクロプロセッサ92は、セ
クタのサイズを確定し且つステップ474へ進むことに
より、良セクタに応答する。
【0171】ステップ474では、マイクロプロセッサ
92は、図10、11の割当てアルゴリズム又は後に説
明する別のアルゴリズムを呼び出すことにより、ステッ
プ472で識別したセクタに対してメモリを割当てる。
マイクロプロセッサ92は、ステップ476で、CSM
次状態ポインタを状態385にリセットすることによ
り、状態384から出るべく準備する。すなわち、バッ
クグラウンドクリーンアップが実行を再開するとき、焦
点ブロックからセクタバッファ98へのセクタのコピー
が始まる。これを実行したならば、マイクロプロセッサ
92はステップ478へ分岐することにより制御をトッ
プレベルスケジューラ150に戻す。
【0172】焦点ブロックからあらゆる有効セクタがコ
ピーされ終わるまで、マイクロプロセッサ92は何度も
状態476に戻る。全セクタをコピーしたならば、マイ
クロプロセッサ92はステップ472からステップ48
0へ分岐する。ステップ480では、マイクロプロセッ
サ92は、消去を開始するためにCSM次状態ポインタ
を適切に設定することにより、焦点ブロックの消去を開
始する。制御を呼び出しプログラムに戻す。
【0173】 6.クリーンアップのための空き物理メモリの割当て 図24は、クリーンアップのために空き物理メモリを割
当てる別の方法を流れ図の形で示す。クリーンアップの
宛先ブロックとして選択されるブロックは適切であると
共に、所望のブロックでもなければならない。ブロック
の適否をアクセスするときは、図10、11及び図1
3、14に示した割当て方法に関して先に論じたのと本
質的に同じ方式を使用する。ただし、所望の宛先ブロッ
クの評価と定義は異なる。最も所望度の高い宛先ブロッ
クは、焦点ブロックからコピーすべきユーザーデータの
セクタに最も厳密に適合するブロックである。このよう
に宛先ブロックの所望度を定義すると、ホスト書込みの
ために大量の空きデータを保存することにより、ユーザ
ーデータのコヒーレンシーは増大する。
【0174】クリーンアップ中のメモリの割当ては、宛
先ブロックの選択に際して使用する変数の初期設定をも
って始まる。ステップ2202及び2204では、Be
stFit BlockとBest Fit Chip
を共に0に設定する。ステップ2206では、マイクロ
プロセッサ92は焦点ブロックの中に残っているユーザ
ーデータのセクタを記憶するために必要な空きメモリの
量を計算する。従って、一度に1つのセクタに関するメ
モリのみを割当てるのではあるが、焦点ブロックの中に
残っているユーザーデータの全てのセクタを記憶できる
ブロックに関して所望度を評価することになる(ここで
いう「ユーザーデータのセクタ」及び「ユーザーデー
タ」は空きでもなく、ダーティでもないメモリとして定
義されている。)
【0175】ステップ2207では、マイクロプロセッ
サ92は、考えうる宛先ブロックの評価を開始するのに
先立って、もう1つの変数を初期設定する。Score
をいずれかのブロックにおける空きメモリの最大量を表
わす最大値に設定する。評価中、所望度が最も高い宛先
ブロック、すなわち、利用可能な空きメモリが必要な総
空きメモリに最も近いブロックのスコアを指示するため
に、Scoreを改訂する。これを実行したならば、マ
イクロプロセッサ92はステップ2208へ進む。各ブ
ロックの宛先ブロックとしての適否は図13、14に関
して論じたのと同じ方式でステップ2208〜2216
において評価される。従って、それらのステップについ
ては詳細には説明しない。
【0176】最終的には適切なブロックを識別し、マイ
クロプロセッサ92はステップ2216に至る。そこ
で、現在ブロックの宛先ブロックとしての所望度を確定
する。宛先ブロックとしての所望度を図24のサービス
に従って規定する係数が1つある。それは、現在の空き
メモリの量が焦点ブロック中に残っているユーザーデー
タの全てのセクタを記憶するために必要とされる空きメ
モリの量とどれほど密接に一致するかということであ
る。変数Totalは、焦点ブロックの中のユーザーデ
ータを記憶した後に残っている空きメモリに関して現在
ブロックの所望度を測定する。現在ブロック中の空きメ
モリが多すぎるか又は少なすぎるかに従って、Tota
lは正の数又は負の数になるであろう。次に、マイクロ
プロセッサ92はステップ2216へ分岐する。
【0177】ステップ2216では、マイクロプロセッ
サ92は現在ブロックが最も良く適合するとして現在選
択されているブロックよりも良く適合するか否かを判定
する。言いかえれば、TotalCurrent Block の絶対
値をScoreの絶対値と比較する。比較に際して絶対
値を使用することにより、厳密に必要であるより空きメ
モリの少なすぎるブロックと、厳密に必要であるより多
くの空きメモリを有するブロックの双方が確実に考慮さ
れるのである。TotalCurrent Block の絶対値がS
coreの絶対値より小さい場合、マイクロプロセッサ
92はステップ2208に戻って、別のブロックを評価
する。これに対して、現在ブロックが以前のブロックよ
り良く適合しているならば、マイクロプロセッサ92は
ステップ2220へ分岐して、最良適合値を改訂する。
【0178】ステップ2222では、ScoreをTo
talCurrent Block にリセットする。その後ステップ
2224及び2226において、Best Fit C
hipとBest Fit Blockをそれらが現在
ブロックを指示するように改訂する。これを実行したな
らば、マイクロプロセッサ92はステップ2208に戻
って、別のブロックを評価する。FLASHアレイ62
中の各ブロックを評価した後、マイクロプロセッサ92
はステップ2208からステップ2228へ出る。次
に、マイクロプロセッサ92は、Best Fit B
lockに焦点ブロックから現在移動中であるデータの
セクタを記憶するのに十分なメモリがあるか否かを判定
する。十分なメモリがなければ、ステップ2230で、
マイクロプロセッサ92は現在のクリーンアップ状態機
械をアイドル状態とする。十分なメモリがある場合に
は、マイクロプロセッサ92はステップ2232へ進
み、Best Fit Blockのメモリを実際に予
約するプロセスを開始するのであるが、これは図10、
11及び図13、14に関して先に説明したのと同じ方
式で実行される。
【0179】7.良セクタのコピー 焦点ブロックから宛先ブロックへのセクタのコピーは2
つのステップから成るプロセスである。まず、焦点ブロ
ックからセクタバッファ98へ有効なユーザーデータの
選択されたセクタをコピーする。第2に、セクタバッフ
ァ98から宛先ブロックへ有効セクタをコピーする。こ
の2ステッププロセスは不要なのであるが、シーケンサ
168の経路中にある誤り検出回路の誤り検出能力を利
用することによって、ユーザーデータの信頼性を改善す
る。図25のアルゴリズムは、焦点ブロックからセクタ
バッファ98へのユーザーデータの1セクタのコピーを
処理する。まず、ステップ480では、セクタをセクタ
バッファ98へ移動する。第2に、マイクロプロセッサ
92はセクタの一部をコピーするように次状態ポインタ
を設定する。次に、ステップ484で、制御を呼び出し
側に戻す。
【0180】セクタバッファ98の一時保護から宛先ブ
ロックへのセクタのコピーは、Copy Part o
f Sectorと呼ばれる状態386で実行される。
状態386の実行時間が選択された最大実行時間より短
くなるように保証するために、状態386が実行される
たびに、セクタの一部のみをコピーする。一実施例で
は、各々の状態の最大実行時間は500μ秒に限定され
ている。
【0181】図26は、セクタバッファ98から1つの
セクタの一部をコピーするためのアルゴリズムを示す。
マイクロプロセッサ92は、ステップ490で、セクタ
の残り部分を最大実行時間の中で宛先ブロックにコピー
できるか否かを決定することにより動作を開始する。一
実施例では、セクタバッファ98から以後にコピーすべ
きバイトの数を20と比較することにより、マイクロプ
ロセッサ92はこれを実行する。コピーできる語の最大
数は、選択された最大実行時間によって異なる。セクタ
の残り部分を最大実行時間の中でコピーできないのであ
れば、マイクロプロセッサ92はステップ492へ分岐
する。ステップ492では、マイクロプロセッサ92は
セクタバッファ98からクリーンアップ状態機械の宛先
ウィンドウにより指示される宛先ブロックへ20バイト
をコピーする。その後、マイクロプロセッサ92はステ
ップ494へ分岐する。
【0182】ステップ494では、マイクロプロセッサ
92はCSM次状態ポインタを状態386に戻すように
指示し、最終的にはセクタの全体がセクタバッファ98
からコピーされるように保証する。マイクロプロセッサ
92がステップ500へ分岐するとき、制御はトップレ
ベルスケジューラ150に戻る。最後に状態386を通
過すると、残っている全ての語を最大実行時間の中で宛
先ブロックへコピーすることができる。この通過の間
に、マイクロプロセッサ92は状態490から状態49
6へ分岐する。
【0183】ステップ496では、マイクロプロセッサ
92はセクタバッファ98に残っている全ての語を宛先
ブロックへコピーする。その後、マイクロプロセッサ9
2はステップ498へ進む。有効セクタの宛先ブロック
への再配置を完了したならば、マイクロプロセッサ92
はセクタの新たな物理記憶場所を反映するためにセクタ
見出し変換テーブル94を更新すべく準備する。この時
点で、マイクロプロセッサ92は新たなデータのセクタ
に関わる見出しの書込みをも終了する。これは、ステッ
プ498で、CSM次状態ポインタを状態388にリセ
ットすることにより実行される。セクタのコピーを終了
したならば、マイクロプロセッサ92はステップ500
を経て状態386から出る。
【0184】 8.セクタをコピーした後のデータベースの更新 ユーザーデータの1セクタが焦点ブロックから宛先ブロ
ックへ完全に再配置されるまで、BSTT84とSHT
T94の更新は遅延される。これにより、セクタが再配
置中であっても、CPU52は常に確実にセクタの有効
コピーをアクセスできるようになる。従って、セクタの
移動中にCPU52は自在にそのセクタを再書込みでき
る。その結果FLASHアレイ62の中に同じデータの
セクタの3つ以上のバージョンが存在しうるが、その中
で、有効であるのは1つのバージョンのみである。これ
が起こったときには、マイクロプロセッサ92は状態3
86の間にダーティセクタを有効にコピーし終わってい
る。状態388のPostCopy Database
Update(コピー後データベース更新)アルゴリ
ズムは、どのデータベースを更新すべきか及びどのよう
にしてそれらのデータベースを更新すべきかを確定する
ことにより、この問題を予想する。
【0185】図27は、状態388の間のデータベース
の更新を示す流れ図である。マイクロプロセッサ92
は、ステップ502で、CSMがセクタをコピーしてい
る間にホストがセクタを書込んだか否かを判定すること
により、このタスクを開始する。マイクロプロセッサ9
2は、再配置したばかりのセクタに関わる見出しがダー
ティとマークされたか否かを検査することにより、これ
を判定することができる。この見出しを見出し(FOC
US)と呼ぶ。これがわかれば、マイクロプロセッサ9
2はどの変換テーブルを更新すべきか及びそれらのテー
ブルをどのように更新すべきをか知る。それには2つの
可能性がある。
【0186】まず初めに、見出し(FOCUS)がダー
ティとマークされないときの事象の列を考える。この状
況においては、宛先ブロックと焦点ブロックの双方に関
わるセクタ見出し変換テーブル94及びブロックセクタ
変換テーブル84を更新しなければならない。これを実
行し始めるために、マイクロプロセッサ92はステップ
502からステップ506へ分岐する。データベースの
更新は宛先ブロックと共に始まる。ステップ506で
は、マイクロプロセッサ92はLSNは宛先ブロックの
BSTT84に書込む。その後、マイクロプロセッサ9
2はステップ508へ分岐する。マイクロプロセッサ9
2は、SHTT94の中のセクタのアドレスが焦点ブロ
ックの見出しではなく、宛先ブロックの見出しを指示す
るように、そのアドレスを変更する。次に、マイクロプ
ロセッサ92はステップ510へ進む。
【0187】ステップ510では、マイクロプロセッサ
92は3つの変換テーブル全ての更新を完了する。そこ
で、マイクロプロセッサ92は焦点ブロック中の見出し
をダーティとマークする。マイクロプロセッサ92は、
図15のダーティとマークするアルゴリズムを呼び出す
ことにより、これを実行する。データベースの更新を完
了したならば、マイクロプロセッサ92はステップ51
2へ分岐する。ステップ512に入ることは、1セクタ
のコピーが完了したことを指示している。マイクロプロ
セッサ92は、ステップ512で、空き物理セクタを割
当てる状態384にCSM次状態ポインタを設定するこ
とにより、コピーすべき別の良セクタについて焦点ブロ
ックを走査すべき準備する。その後、ステップ514へ
分岐することにより、マイクロプロセッサ92の制御は
トップレベルスケジューラ150に戻る。
【0188】セクタが宛先ブロックに再配置されている
間にセクタが改訂されると何が起こるか?このセクタは
既にダーティとマークされているので、見出し(FOC
US)を改訂する必要はない。また、SHTT94は既
に改訂されたセクタと関連する見出しを指示しているの
で、SHTT94も改訂を要求しない。焦点ブロックの
見出しが無効であることを表わすために、宛先ブロック
のBSTT84のみを改訂すれば良い。マイクロプロセ
ッサ92はステップ502からステップ516へ分岐す
ることにより、このタスクを開始する。マイクロプロセ
ッサ92は、図15のダーティとマークするアルゴリズ
ムを呼び出すことにより、ステップ516で宛先ブロッ
クのBSTT84を更新する。先の場合と同様に、マイ
クロプロセッサ92はブロック514へ分岐することに
より制御をトップレベルスケジューラ150に戻す。
【0189】9.焦点ブロックの消去 消去を経たダーティセクタから空きメモリへの変換は、
焦点ブロックから全ての良セクタをコピーした後に始ま
る。焦点ブロックの消去は消去を開始することと、次
に、消去が終了するのを待つこととを含む。図28は、
状態390において消去を開始するためのアルゴリズム
を示す。消去指令を発行するのに先立って、ステップ5
20では、マイクロプロセッサ92はブロック属性デー
タ90をセクタバッファ98にコピーすることにより、
ブロック属性データ90を保存する。最後に、ステップ
522では、マイクロプロセッサ92は焦点ブロックを
含むチップ対へ消去指令を発行する。その時点では、待
機することを除いて何も実行することは残っていない。
マイクロプロセッサ92は、ステップ524で、CSM
次状態ポインタを消去完了を待機する状態392に設定
することにより、長期間の待機を準備する。
【0190】図29は、消去の完了を待機し且つ検出す
るために使用されるアルゴリズムを示す。ステップ53
0では、マイクロプロセッサ92は、チップ対の状態レ
ジスタに問い合わせることにより消去が依然として進行
中であるか否かを判定する。状態レジスタが消去は完了
していないことを指示している限り、マイクロプロセッ
サ92はステップ532へ分岐する。そこで、マイクロ
プロセッサ92は、CSM次状態ポインタを消去完了を
待機する状態392に設定することにより、その待機を
継続すべく準備する。消去が完了したならば、マイクロ
プロセッサ92は状態534へ分岐し、そこで、CSM
次状態ポインタを消去後更新状態394に設定する。
【0191】10.消去後データベース更新 焦点ブロックを消去した後、いくつかのタスクが注意を
要する。それらのタスクは、図30に示す消去後データ
ベース更新状態394により管理される。マイクロプロ
セッサ92が取り組む第1のタスクは、先の消去によっ
て起こったサイクルカウントの数の増加を反映するため
に、FLASHアレイデータベースを更新することであ
る。マイクロプロセッサ92が実行する第2のタスク
は、消去中にセクタバッファ98に記憶されていた新た
なサイクルカウントをもつブロック属性データ90を焦
点ブロックに復元することである。マイクロプロセッサ
92はこれをステップ538で実行する。
【0192】マイクロプロセッサ92はその最後の更新
タスクをステップ540で実行する。そこで、ブロック
がクリーンアップの焦点であることを指示するために、
マイクロプロセッサ92はRAMに記憶されているセマ
フォーをクリアする。その結果、図12の割当てアルゴ
リズムは、可能であれば、先の焦点ブロックを含むチッ
プ対に再び自在にセクタを割当てできる。状態394か
ら出る前に、マイクロプロセッサ92はCSM次状態ポ
インタを状態380、Evaluate IF Cle
an−Up is Necessaryにリセットす
る。 B.フォアグラウンドクリーンアップ フォアグラウンドクリーンアップの目標は、FLASH
アレイ62の中に大量の空きメモリを迅速に生成するこ
とである。フォアグラウンドクリーンアップは、2つの
クリーンアップ状態機械を同時に動作させると共に、C
PU52に空きメモリを強制的に待機させることによ
り、その目標を達成する。従って、フォアグラウンドク
リーンアップはコンピュータのユーザーに影響を及ぼす
ことによりバックグラウンドクリーンアップとは異な
る。フォアグラウンドクリーンアップは、バックグラウ
ンドクリーンアップと比較してトリガされる方式につい
ても異なっている。活動状態であるとき、バックグラウ
ンドクリーンアップは、CPU52が1つのセクタを書
込むたびに、それに続いて開始される。空き物理メモリ
の割当て中、フォアグラウンドクリーンアップはトリガ
される。1つのセクタを書込むのに十分な空きFLAS
Hメモリを割当てることができない場合、条件調整まで
マルチCSM実行348への呼び出しがフォアグラウン
ドクリーンアップを実行する。加えて、フォアグラウン
ドクリーンアップはクリーンアップが必要であるか否か
の前述の評価によってバックグラウンドクリーンアップ
とは異なり、その決定は空きメモリの割当て中に有効に
実行される。従って、フォアグラウンドクリーンアップ
は、クリーンアップすべきブロックを選択することによ
り開始する。
【0193】図31は、フォアグラウンドクリーンアッ
プを管理するために使用されるアルゴリズム、条件調整
までマルチCSM実行348を示す。このアルゴリズム
を使用すると、第1のクリーンアップ状態機械が起動さ
れ、消去完了待機状態392に到達するまで連続して動
作することができる。その時点で、第2のクリーンアッ
プ状態機械が動作され、消去完了待機状態392に到達
するまで連続して動作することができる。そこで、第1
のクリーンアップ状態機械は中断なく焦点ブロックのク
リーンアップを完了する。1つのブロックがクリーンに
なり且つ別のブロックを間もなくクリーンにすべき場
合、マイクロプロセッサ92はCPU52からの指令に
再び応答する。
【0194】フォアグラウンドクリーンアップはステッ
プ550で始まり、そこでは、マイクロプロセッサ92
は第1のクリーンアップ状態機械と、第2のクリーンア
ップ状態機械の双方について1のブロックカウントに設
定する。先の図19の説明からわかる通り、ブロックカ
ウントはどれほどの数のブロックをクリーンアップする
か、従って、クリーンアップがどれほど長く続くかを確
定する。双方のブロックカウントを1に設定することに
より、フォアグラウンドクリーンアップの実行時間は最
短に抑えられる。次に、マイクロプロセッサはステップ
552へ進む。
【0195】ステップ552と共に、マイクロプロセッ
サ92は双方のクリーンアップ状態機械を起動するプロ
セスを開始し、これはステップ562まで続く。マイク
ロプロセッサ92は、第1のクリーンアップ状態機械C
SM1の状態を検査することにより、ステップ552
で、CSM1が活動状態であるか否かを判定する。CS
M1が活動状態でなければ、マイクロプロセッサ92は
状態554へ分岐して、CSM1を起動する。これに対
し、CSM1が既に活動状態である場合には、マイクロ
プロセッサ92はステップ558へ分岐して、第2のク
リーンアップ状態機械CSM2を起動する。ステップ5
54では、マイクロプロセッサ92はCSM1の状態を
アイドルから活動へ変化させる。マイクロプロセッサ9
2はステップ554から556へ進む。
【0196】マイクロプロセッサ92は、CSM1の次
状態ポインタをクリーンアップすべきブロックを選択す
る状態382に設定することにより、CSM1にクリー
ンアップを開始させるべく準備する。これを実行したな
らば、マイクロプロセッサ92はステップ558へ分岐
することにより、その注意をCSM2へ向ける。ステッ
プ558では、マイクロプロセッサ92はCSM2が活
動状態であるか否かを判定する。活動状態であれば、マ
イクロプロセッサ92はステップ564へ進み、CSM
1をランさせ始める。そうでない場合には、マイクロプ
ロセッサ92はステップ560へ分岐する。ステップ5
60では、マイクロプロセッサ92はCSM2を活動状
態に設定する。その後、ステップ562で、マイクロプ
ロセッサ92は、CSM2の次状態ポインタをクリーン
アップすべきブロックを選択する状態382に設定する
ことにより、CSM2にクリーンアップを開始させるべ
き準備する。
【0197】2つのクリーンアップ状態機械のセットア
ップが完了したとき、マイクロプロセッサ92は最終的
には一方を始動することができる。ステップ564で
は、マイクロプロセッサ94はどちらのクリーンアップ
状態機械に実行時間を与えるべきかを判定する。マイク
ロプロセッサ92は、CSM1がブロックの消去を開始
したか否かを判定することによりこれを実行する。CS
M1が消去を開始していなければ、マイクロプロセッサ
92はステップ566へ進む。ステップ566では、マ
イクロプロセッサ92はCSM1の1つの状態を実行す
る。マイクロプロセッサは、消去完了待機状態392ま
でのCSM1の状態を実行する。マイクロプロセッサ9
2はステップ566及び564を繰り返しループしてゆ
くことにより状態392に到達する。CSM1が消去完
了待機状態392に到達すると、マイクロプロセッサ9
2は状態568へ分岐することにより、より効果の多い
分野に注意を集中する。
【0198】マイクロプロセッサ92は、ステップ56
8で、CSM2がその焦点ブロックのクリーンアップを
終了するのにさらに実行時間を要求するか否かを判定す
る。要求するならば、マイクロプロセッサ92はステッ
プ570へ分岐し、そこで、CSM2の単一の状態を実
行する。マイクロプロセッサは、消去完了待機状態39
2までのCSM2の状態を実行する。この時点で、マイ
クロプロセッサはステップ570からステップ572へ
分岐することにより、再びCSM1に注意を集中する。
ステップ572では、CSM1がその焦点ブロックのク
リーンアップを完了したか否かを判定する。マイクロプ
ロセッサ92は、CSM1と関連する状態語を検査する
ことによりこれを実行する。CSM1がアイドル状態で
ない場合、マイクロプロセッサ92はステップ574へ
分岐して、別のCSM1状態を実行する。ステップ57
2とステップ574の間を往復することにより、マイク
ロプロセッサ92はCSM1により管理されるクリーン
アップを最終的に完了する。この時点で、1つのブロッ
クは完全にクリーンアップされ終わっており、別のブロ
ックが間もなくクリーンアップされることになる。既に
大量の空きメモリの予約があるので、マイクロプロセッ
サ92はステップ576へ分岐することにより制御をト
ップレベルスケジューラ150に戻す。これにより、フ
ォアグラウンドクリーンアップは終わる。
【0199】C.強制クリーンアップ 強制クリーンアップは、クリーンアップ状態機械を起動
し且つ制御するさらに別の方法である。強制クリーンア
ップは、コンピュータのユーザーからの指令により開始
されるという点で、フォアグラウンドクリーンアップ及
びバックグラウンドクリーンアップの双方とは異なって
いる。この種のクリーンアップでは、ユーザーは状態3
80におけるように空きメモリの総量を評価することな
くクリーンアップが必要であると決定する。固体ディス
ク制御装置64は2種類の強制クリーンアップを認識す
る。一方の型の強制クリーンアップは一方のクリーンア
ップ状態機械のみを起動する。この型のクリーンアップ
はForce Cleanup(強制クリーンアップ)
と名付けられたサービス342により管理される。他方
の型のクリーンアップは2つのクリーンアップ状態機械
を起動し、ForceMulti Cleanup(強
制マルチクリーンアップ)と呼ばれるサービス344に
より管理される。
【0200】図32は、強制クリーンアップ342のア
ルゴリズムを示す。強制クリーンアップのタスクは相対
的に単純である。すなわち、必要に応じて、CSM1を
起動し且つ始動するのである。ステップ580では、C
SM1が活動状態であるか否かを知るためにCSM1の
状態を検査することにより、マイクロプロセッサ92は
そのタスクを開始する。活動状態であれば、マイクロプ
ロセッサ92はステップ586へ分岐する。CSM1が
アイドル状態である場合には、マイクロプロセッサ92
はステップ587へ分岐する。ステップ582では、マ
イクロプロセッサ92は、CSM1の状態を活動に変化
させることによりCSM1をイネーブルする。次に、ク
リーンアップが必要であるか否かを評価する状態380
をバイパスし且つCSM1の次状態ポインタをクリーン
アップすべきブロックを選択する状態382に設定する
ことにより、マイクロプロセッサ92は強制的にクリー
ンアップを開始させる。それが確実に実行されたなら
ば、マイクロプロセッサ92はステップ584からステ
ップ586へ分岐する。
【0201】ステップ587では、CSM1が既にクリ
ーンアップを開始していなかった場合に、マイクロプロ
セッサ92はCSM1に確実にクリーンアップを開始さ
せる。マイクロプロセッサ92は、CSM1の次状態ポ
インタを検査し、それがクリーンアップは必要であると
評価するのに等しい場合にはステップ584へ分岐する
ことにより、これを実行する。これは、クリーンアップ
が不要であるという評価を全て回避する。
【0202】図33は、強制マルチクリーンアップ34
4のアルゴリズムを示す。このアルゴリズムのタスク
は、必要に応じて双方のクリーンアップ状態機械を起動
することである。強制マルチクリーンアップ344の初
めと2つのステップは、強制クリーンアップ342のス
テップと全く同じである。ステップ590では、マイク
ロプロセッサ92はCSM1が活動状態であるか否かを
判定する。活動状態でなければ、ステップ592でCS
M1をイネーブルし、CSM1の次の状態としてコピー
すべきブロックを選択する状態382を選択する。これ
に対し、CSM1が既に活動状態である場合には、マイ
クロプロセッサ92はステップ591へ分岐する。
【0203】ステップ591では、マイクロプロセッサ
92はCSM1がクリーンアップを開始したか否かを判
定する。先に説明した通り、CSM1を起動するたびに
ブロックのクリーンアップが開始されるわけではない。
次状態ポインタがクリーンアップは必要であるか否かを
評価する状態以外の状態を指示する場合、クリーンアッ
プは始まっている。この場合、マイクロプロセッサ92
はステップ594へ直接に分岐する。そうでない場合、
マイクロプロセッサ92はステップ592へ進む。マイ
クロプロセッサ92は、そこで、CSM1の次状態ポイ
ンタをクリーンアップすべきブロックを選択する状態に
リセットすることにより、CSM1に強制的に1つのブ
ロックをクリーンアップさせる。その後、ステップ59
2からステップ594への分岐により注意はCSM2に
向かう。
【0204】ステップ594では、マイクロプロセッサ
92は第2のクリーンアップ状態機械CSM2をイネー
ブルする。次に、マイクロプロセッサ92はクリーンア
ップが必要であるか否かを評価する状態380をバイパ
スし、CSM2の次状態ポインタをコピーすべきブロッ
クを選択する状態382に設定する。マイクロプロセッ
サ92はステップ594からステップ596へ分岐し
て、制御をトップレベルスケジューラ150に戻す。
【0205】IV.概 要 以上、固体メモリディスクを説明した。固体メモリディ
スクは、セクタごとにデータを記憶するFLASHメモ
リデバイスのアレイを含む。各々のメモリデバイスの中
の各ブロックは、そのブロックに記憶されているセクタ
と、各セクタがブロック内のどこに位置しているかとを
識別するブロックセクタ変換テーブルを維持している。
固体ディスク制御装置はセクタデータのFLASHアレ
イからの読取り及びセクタデータのFLASHアレイへ
の書込みを管理する。制御装置は、1つのデータのセク
タを書込むための指令を受信するたびに、セクタ番号を
使用してそのセクタの以前のバージョンをシークする。
与えられたセクタ番号と等しい論理セクタ番号を有する
データのセクタを見出すことによりセクタの以前のバー
ジョンを位置指定したならば、それをダーティとマーク
する。その後、書込むべきデータのセクタに対して、異
なる記憶場所にあるメモリスペースを割当てる。その結
果、特定のセクタ番号と関連するセクタデータは1つの
固定物理記憶場所にとどまるのではなく、FLASHア
レイを巡って「浮動」する。
【0206】以上の明細書の中では、本発明の特定の実
施例を参照して本発明を説明した。しかしながら、特許
請求の範囲に記載されるような本発明のより広範囲の趣
旨から逸脱せずに本発明に対して様々な変形及び変更を
実施しうることは明白であろう。従って、明細書及び図
面は限定的な意味ではなく、例示としてみなされるべき
である。
【図面の簡単な説明】
【図1】固体メモリディスクを含むパーソナルコンピュ
ータのブロック線図。
【図2】固体メモリディスクのブロック線図。
【図3】ブロックファイル構造のブロック線図。
【図4】セクタ見出し変換テーブルの第1の実施例のブ
ロック線図。
【図5】パワーアップ時にセクタ見出し変換テーブルを
作成するためのアルゴリズムの流れ図。
【図6】固体ディスク制御装置のアルゴリズムのオブジ
ェクト図。
【図7】ディスク読取りの流れ図。
【図8】ブロックセクタ変換テーブルを使用してデータ
の1セクタをシークするための流れ図。
【図9】1セクタを書込むための流れ図。
【図10】FLASHアレイ中でメモリスペースを割当
てる第1の方法の流れ図。
【図11】FLASHアレイ中でメモリスペースを割当
てる第1の方法の流れ図。
【図12】ブロックチェーンの図。
【図13】書込み指令に応答してメモリスペースを割当
てる方法の流れ図。
【図14】書込み指令に応答してメモリスペースを割当
てる方法の流れ図。
【図15】ダーティとマークするアルゴリズムの流れ
図。
【図16】クリーンアップ中の様々なサービスのブロッ
ク線図。
【図17】クリーンアップ状態機械をイネーブルするた
めの流れ図。
【図18】クリーンアップ状態機械の1つの状態を実行
するための流れ図。
【図19】クリーンアップ状態機械の状態の流れ図。
【図20】クリーンアップをトリガすべきか否かを評価
するためのアルゴリズムの流れ図。
【図21】クリーンアップを適応トリガするためのアル
ゴリズムの流れ図。
【図22】クリーンアップすべきブロックを選択するた
めのアルゴリズムの流れ図。
【図23】クリーンアップのためにメモリを割当てのた
めの流れ図。
【図24】クリーンアップのための空き物理メモリを割
当てる方法の流れ図。
【図25】セクタバッファに1セクタをコピーするため
の流れ図。
【図26】セクタバッファから宛先ブロックへ1セクタ
の一部をコピーするための流れ図。
【図27】1セクタをコピーした後にデータベースを更
新するための流れ図。
【図28】ブロックの消去を開始するための流れ図。
【図29】ブロックの消去が完了したか否かを判定する
ための流れ図。
【図30】ブロック消去後にデータベースを更新するた
めの流れ図。
【図31】フォアグラウンドクリーンアップに関わる流
れ図。
【図32】強制クリーンアップに関わる流れ図。
【図33】クリーンアップを強制する別の方法の流れ
図。
【符号の説明】
50 パーソナルコンピュータ 52 中央処理装置 54 モニタ 56 キーボード 58 マウス 60 固体ディスク 62 FLASHアレイ 64 固体ディスク制御装置 66 チップ対 68 上位チップ 70 下位チップ 80a、80b ブロック 84 BSTT 85 見出し 86 データスペース 90 ブロック属性データ 92 マイクロプロセッサ 93 データベース 94 SHTT 95 FLASHメモリ 96 ウィンドウASIC 98 セクタバッファ 100 電荷ポンプ 150 トップレベルスケジューラ 152 ホストインタフェース 154 FLASH媒体 156 ホストインタフェース 158 セクタバッファ 160 ディスク 162 セクタ 167 FLASHアレイインタフェース
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート・エヌ・ハズバン アメリカ合衆国 95682 カリフォルニア 州・シングル スプリングス・ファウン ストリート・4544 (72)発明者 カート・ロビンソン アメリカ合衆国 95658 カリフォルニア 州・ニューキャッスル・ナヴァス レイ ン・22061

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 不揮発性半導体メモリデバイスを含み、
    その不揮発性半導体メモリデバイスは複数のメモリのブ
    ロックを有し、各々のブロックは複数のデータのセクタ
    と、ブロックセクタ変換テーブルとを記憶しており、ブ
    ロックセクタ変換テーブルはブロックに記憶されている
    セクタごとのセクタ番号と、セクタデータに対するオフ
    セットを指示するセクタオフセットとを含む固体メモリ
    ディスクに a)データのセクタを書込む要求に応答して第1の量の
    空きメモリを割当て、 b)そのデータのセクタを複数の記憶場所に書込むこと
    を特徴とするセクタデータを書込む方法。
  2. 【請求項2】 複数の不揮発性半導体メモリデバイスを
    含み、各々の不揮発性半導体メモリデバイスは複数のブ
    ロックを含み、各ブロックは複数のデータのセクタと、
    ブロックセクタ変換テーブルとを記憶しており、そのブ
    ロックセクタ変換テーブルはブロックに記憶されている
    データのセクタごとに1つの見出しを含み、各々の見出
    しはその見出しが関連しているセクタ番号と等しい論理
    セクタ番号と、その見出しと関連するセクタデータに対
    するオフセットを指示するセクタオフセットとを含む固
    体メモリディスクを a)第1のデータのセクタを書込むための指令と、その
    第1のデータのセクタと関連する第1のセクタ番号とを
    受信し、 b)同様に第1のセクタ番号と関連しているデータのセ
    クタの以前のバージョンをダーティとマークし、 c)第1のブロックセクタ変換テーブルを有する第1の
    ブロックの中の第1の量の空きメモリを割当て、 d)第1のデータのセクタに関わる第1の見出しを第1
    のブロックセクタ変換テーブルに書込み、 e)第1のデータのセクタを第1のブロックに書込んで
    制御する方法。
  3. 【請求項3】 データを複数のセクタとして記憶する固
    体メモリディスクにおいて、 a)データを複数のセクタとして記憶するFLASHメ
    モリデバイスと、 b)読取り指令に応答してデータのセクタを読取り且つ
    書込み指令に応答してデータのセクタを書込み、FLA
    SHメモリデバイスを制御する制御装置とを具備する固
    体メモリディスク。
  4. 【請求項4】 各々が1つのセクタ番号を有する複数の
    データのセクタを記憶する固体メモリディスクにおい
    て、 a)データのセクタを記憶するFLASHメモリデバイ
    スのアレイと、 b)書込み指令に応答してアレイに第1のデータのセク
    タを書込み且つ読取り指令に応答してアレイから第1の
    データのセクタを読取り、アレイを制御する制御装置
    と、 c)第1のデータのセクタと関連する第1のセクタ番号
    を使用して、セクタデータに関わる物理アドレスを生成
    するセクタ変換テーブルとを具備する固体メモリディス
    ク。
  5. 【請求項5】 複数のブロックを有し、各々のブロック
    は複数の記憶場所を含み、各ブロックは複数のデータの
    セクタと、ブロックセクタ変換テーブルとを記憶してお
    り、そのブロックセクタ変換テーブルはブロックに記憶
    されているセクタごとのセクタ番号と、セクタオフセッ
    トとを含み、セクタオフセットはセクタデータに対する
    オフセットを指示する固体メモリディスクを制御する制
    御装置において、 a)書込み指令に応答して第1のブロックの中の第1の
    複数の記憶場所を割当てる割当て手段と、 b)セクタオフセットを第1のブロックのブロックセク
    タ変換テーブルに書込み、データのセクタを第1の複数
    の記憶場所に書込み、且つセクタ番号と等しい論理セク
    タ番号を第1のブロックのブロックセクタ変換テーブル
    に書込む書込み手段とを具備する制御装置。
JP29152993A 1992-10-30 1993-10-28 固体メモリディスク並びにそれを制御する方法及び装置 Expired - Lifetime JP3672332B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US969,131 1992-10-30
US07/969,131 US5822781A (en) 1992-10-30 1992-10-30 Sector-based storage device emulator having variable-sized sector

Publications (2)

Publication Number Publication Date
JPH06202821A true JPH06202821A (ja) 1994-07-22
JP3672332B2 JP3672332B2 (ja) 2005-07-20

Family

ID=25515225

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29152993A Expired - Lifetime JP3672332B2 (ja) 1992-10-30 1993-10-28 固体メモリディスク並びにそれを制御する方法及び装置

Country Status (2)

Country Link
US (1) US5822781A (ja)
JP (1) JP3672332B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907700A (en) * 1994-10-24 1999-05-25 Intel Corporation Controlling flash memory program and erase pulses
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
US6865658B2 (en) 2000-12-07 2005-03-08 Sharp Kabushiki Kaisha Nonvolatile data management system using data segments and link information
US8159889B2 (en) 2005-01-11 2012-04-17 Samsung Electronics Co., Ltd. Solid state disk controller apparatus
CN103064632A (zh) * 2012-12-04 2013-04-24 记忆科技(深圳)有限公司 固态硬盘及其虚拟化方法、系统
US8812767B2 (en) 2011-03-08 2014-08-19 Fujitsu Semiconductor Limited Method of controlling memory, memory control circuit, storage device and electronic device

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
GB9606928D0 (en) * 1996-04-02 1996-06-05 Memory Corp Plc Memory devices
US6115799A (en) * 1996-07-19 2000-09-05 Canon Kabushiki Kaisha Information processing apparatus and associated method for managing a memory using a next fit and for reducing a memory fragmentation problem
US5873113A (en) * 1996-09-24 1999-02-16 Altera Corporation System and method for programming eprom cells using shorter duration pulse(s) in repeating the programming process of a particular cell
US6279069B1 (en) * 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
JP3766188B2 (ja) * 1997-08-22 2006-04-12 沖電気工業株式会社 論理フォーマット変換方法およびデータ保存媒体
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6604158B1 (en) 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6490597B1 (en) 1999-07-14 2002-12-03 Ericsson Inc. Stored data object management and archive control
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6662263B1 (en) 2000-03-03 2003-12-09 Multi Level Memory Technology Sectorless flash memory architecture
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7417568B2 (en) 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
DE10064649A1 (de) * 2000-12-22 2002-07-04 Bosch Gmbh Robert Schnittstelle für einen Speicher und Verfahren zum variablen Konfigurieren einer Speichervorrichtung
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
US6466476B1 (en) 2001-01-18 2002-10-15 Multi Level Memory Technology Data coding for multi-bit-per-cell memories having variable numbers of bits per memory cell
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6571326B2 (en) * 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123421D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US20030163633A1 (en) * 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7082512B2 (en) * 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US20040117787A1 (en) * 2002-12-12 2004-06-17 Sowa Kurt E. Reorganized storing of applications to improve execution
US7032090B2 (en) * 2003-04-08 2006-04-18 International Business Machines Corporation Method, system, and apparatus for releasing storage in a fast replication environment
GB2401237A (en) * 2003-04-28 2004-11-03 Hewlett Packard Development Co Data transfer arrangement for disaster recovery
US7069402B2 (en) * 2003-06-02 2006-06-27 International Business Machines Corporation Host-independent incremental backup method, apparatus, and system
US6973519B1 (en) 2003-06-03 2005-12-06 Lexar Media, Inc. Card identification compatibility
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
TWI257044B (en) * 2004-11-26 2006-06-21 Hon Hai Prec Ind Co Ltd Apparatus and method for prolonging useful life of non-volatile memory
US7389397B2 (en) * 2005-06-01 2008-06-17 Sandisk Il Ltd Method of storing control information in a large-page flash memory device
DE102006013760A1 (de) * 2006-03-24 2007-09-27 Robert Bosch Gmbh Verfahren und Recheneinheit zum Betreiben einer Speichereinrichtung
DE102006013759B4 (de) * 2006-03-24 2023-03-16 Robert Bosch Gmbh Verfahren und Recheneinheit zum Betreiben einer Speichereinrichtung
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8510497B2 (en) 2009-07-29 2013-08-13 Stec, Inc. Flash storage device with flexible data format
US9396104B1 (en) 2010-03-22 2016-07-19 Seagate Technology, Llc Accessing compressed data of varying-sized quanta in non-volatile memory
US8417876B2 (en) * 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US20130268726A1 (en) * 2011-07-01 2013-10-10 Xin Guo Dual Mode Write Non-Volatile Memory System
US8914570B2 (en) 2012-05-04 2014-12-16 International Business Machines Corporation Selective write-once-memory encoding in a flash based disk cache memory
CN103577240B (zh) * 2012-07-25 2018-12-11 腾讯科技(深圳)有限公司 系统自动清理方法、装置及存储介质
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US10361853B2 (en) 2016-10-12 2019-07-23 Bank Of America Corporation Automated data authentication and service authorization via cryptographic keys in a private blockchain
US11146535B2 (en) 2016-10-12 2021-10-12 Bank Of America Corporation System for managing a virtual private ledger and distributing workflow of authenticated transactions within a blockchain distributed network
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6359618A (ja) * 1986-07-31 1988-03-15 Pfu Ltd コピー方法
JPH0484216A (ja) * 1990-07-26 1992-03-17 Toshiba Corp 半導体ディスク装置のデータ消去方法
JPH04137078A (ja) * 1990-09-28 1992-05-12 Fuji Photo Film Co Ltd メモリカードにおけるデータ記録方法およびメモリカードシステム
JPH0527924A (ja) * 1991-07-12 1993-02-05 Internatl Business Mach Corp <Ibm> 半導体メモリを用いた外部記憶システム及びその制御方法
JPH0695955A (ja) * 1992-09-09 1994-04-08 Ricoh Co Ltd フラッシュ・ファイル・システム
JPH06124596A (ja) * 1991-11-28 1994-05-06 Hitachi Ltd フラッシュメモリを使用した記憶装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE759562A (fr) * 1969-12-31 1971-04-30 Ibm Dispositif d'emmagasinage auxiliaire et methode mise en oeuvre
US4430727A (en) * 1981-11-10 1984-02-07 International Business Machines Corp. Storage element reconfiguration
US4644494A (en) * 1984-02-06 1987-02-17 Sundstrand Data Control, Inc. Solid state memory for aircraft flight data recorder systems
US4896262A (en) * 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
US4642759A (en) * 1984-04-02 1987-02-10 Targa Electronics Systems Inc. Bubble memory disk emulation system
AU575182B2 (en) * 1984-06-28 1988-07-21 Wang Laboratories, Inc. Self extending memory file
US4660130A (en) * 1984-07-24 1987-04-21 Texas Instruments Incorporated Method for managing virtual memory to separate active and stable memory blocks
US4758944A (en) * 1984-08-24 1988-07-19 Texas Instruments Incorporated Method for managing virtual memory to separate active and stable memory blocks
US4958315A (en) * 1985-07-02 1990-09-18 The United States Of America As Represented By The Secretary Of The Navy Solid state electronic emulator of a multiple track motor driven rotating magnetic memory
US4763305A (en) * 1985-11-27 1988-08-09 Motorola, Inc. Intelligent write in an EEPROM with data and erase check
US4802117A (en) * 1985-12-16 1989-01-31 Pitney Bowes Inc. Method of preserving data storage in a postal meter
JPS63113623A (ja) * 1986-10-30 1988-05-18 Nec Corp セクタバツフア制御方式
US4864497A (en) * 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database
JP2818415B2 (ja) * 1988-05-18 1998-10-30 日本電気株式会社 バッファ記憶装置
US5070474A (en) * 1988-07-26 1991-12-03 Disk Emulation Systems, Inc. Disk emulation system
JP2554719B2 (ja) * 1988-09-30 1996-11-13 株式会社東芝 記録データ読取り方式
US5012425A (en) * 1988-12-30 1991-04-30 Pitney Bowes Inc. EPM having an improvement in non-volatile storage of accounting data
EP0618535B1 (en) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US5131089A (en) * 1989-06-12 1992-07-14 Grid Systems Corporation Solid state disk drive emulation
US5210854A (en) * 1989-06-14 1993-05-11 Digital Equipment Corporation System for updating program stored in eeprom by storing new version into new location and updating second transfer vector to contain starting address of new version
US5077737A (en) * 1989-08-18 1991-12-31 Micron Technology, Inc. Method and apparatus for storing digital data in off-specification dynamic random access memory devices
US5237460A (en) * 1990-12-14 1993-08-17 Ceram, Inc. Storage of compressed data on random access storage devices
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5291584A (en) * 1991-07-23 1994-03-01 Nexcom Technology, Inc. Methods and apparatus for hard disk emulation
US5359205A (en) * 1991-11-07 1994-10-25 Energy Conversion Devices, Inc. Electrically erasable memory elements characterized by reduced current and improved thermal stability
US5280611A (en) * 1991-11-08 1994-01-18 International Business Machines Corporation Method for managing database recovery from failure of a shared store in a system including a plurality of transaction-based systems of the write-ahead logging type
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5313429A (en) * 1992-02-14 1994-05-17 Catalyst Semiconductor, Inc. Memory circuit with pumped voltage for erase and program operations
US5305295A (en) * 1992-06-29 1994-04-19 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5493574A (en) * 1992-09-24 1996-02-20 Zilog, Inc. Power efficient RAM disk and a method of emulating a rotating memory disk

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6359618A (ja) * 1986-07-31 1988-03-15 Pfu Ltd コピー方法
JPH0484216A (ja) * 1990-07-26 1992-03-17 Toshiba Corp 半導体ディスク装置のデータ消去方法
JPH04137078A (ja) * 1990-09-28 1992-05-12 Fuji Photo Film Co Ltd メモリカードにおけるデータ記録方法およびメモリカードシステム
JPH0527924A (ja) * 1991-07-12 1993-02-05 Internatl Business Mach Corp <Ibm> 半導体メモリを用いた外部記憶システム及びその制御方法
JPH06124596A (ja) * 1991-11-28 1994-05-06 Hitachi Ltd フラッシュメモリを使用した記憶装置
JPH0695955A (ja) * 1992-09-09 1994-04-08 Ricoh Co Ltd フラッシュ・ファイル・システム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907700A (en) * 1994-10-24 1999-05-25 Intel Corporation Controlling flash memory program and erase pulses
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
US6865658B2 (en) 2000-12-07 2005-03-08 Sharp Kabushiki Kaisha Nonvolatile data management system using data segments and link information
US8159889B2 (en) 2005-01-11 2012-04-17 Samsung Electronics Co., Ltd. Solid state disk controller apparatus
US8917565B2 (en) 2005-01-11 2014-12-23 Samsung Electronics Co., Ltd. Solid state disk controller apparatus
US9223650B2 (en) 2005-01-11 2015-12-29 Samsung Electronics Co., Ltd. Solid state disk controller apparatus
US9652324B2 (en) 2005-01-11 2017-05-16 Samsung Electronics Co., Ltd. Solid state disk controller apparatus
US8812767B2 (en) 2011-03-08 2014-08-19 Fujitsu Semiconductor Limited Method of controlling memory, memory control circuit, storage device and electronic device
CN103064632A (zh) * 2012-12-04 2013-04-24 记忆科技(深圳)有限公司 固态硬盘及其虚拟化方法、系统

Also Published As

Publication number Publication date
JP3672332B2 (ja) 2005-07-20
US5822781A (en) 1998-10-13

Similar Documents

Publication Publication Date Title
JPH06202821A (ja) 固体メモリディスク並びにそれを制御する方法及び装置
JP3672331B2 (ja) 浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法
US5535369A (en) Method for allocating memory in a solid state memory disk
US5479633A (en) Method of controlling clean-up of a solid state memory disk storing floating sector data
US5471604A (en) Method for locating sector data in a memory disk by examining a plurality of headers near an initial pointer
US5437020A (en) Method and circuitry for detecting lost sectors of data in a solid state memory disk
US5586285A (en) Method and circuitry for increasing reserve memory in a solid state memory disk
JP6266019B2 (ja) データストレージシステム向けの優先度に基づくガベージコレクション
US7865658B2 (en) Method and system for balancing host write operations and cache flushing
JP5192228B2 (ja) フラッシュコントローラのキャッシュ構造
JP4988215B2 (ja) 複数のマッピング技法を採用した適応型フラッシュメモリ制御装置及びそれを含むフラッシュメモリシステム
US9785564B2 (en) Hybrid memory with associative cache
US5457658A (en) Nonvolatile memory with cluster-erase flash capability and solid state file apparatus using the same
JP4005142B2 (ja) フラッシュメモリ大容量記憶システム
US6295619B1 (en) Method and apparatus for error management in a solid state disk drive
US9507719B2 (en) Garbage collection in hybrid memory system
US20090157974A1 (en) System And Method For Clearing Data From A Cache
WO2016135955A1 (ja) 不揮発性メモリデバイス
JP2010015591A (ja) 不揮発性記憶システムにおける最高頻度消去ブロックの追跡
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
CN106598504B (zh) 数据存储方法及装置
KR101026634B1 (ko) 하이브리드 플래시 메모리의 데이터 저장 방법
US7430632B2 (en) Data management apparatus and method for determining a response time in flash memory devices
US11003580B1 (en) Managing overlapping reads and writes in a data cache
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20031126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20031201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050419

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090428

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090428

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100428

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100428

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110428

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120428

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120428

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130428

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130428

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 9

EXPY Cancellation because of completion of term