JPH0564814B2 - - Google Patents
Info
- Publication number
- JPH0564814B2 JPH0564814B2 JP63032994A JP3299488A JPH0564814B2 JP H0564814 B2 JPH0564814 B2 JP H0564814B2 JP 63032994 A JP63032994 A JP 63032994A JP 3299488 A JP3299488 A JP 3299488A JP H0564814 B2 JPH0564814 B2 JP H0564814B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- cache
- sector
- error
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1816—Testing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Spectrometry And Color Measurement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
A 産業上の利用分野
本発明は、記憶媒体の欠陥によるデイスク・セ
クタ・エラーを取り扱えるように、直接アクセス
記憶装置(DASD)キヤツシユを備えたデータ処
理システムの動作方法を改良することに関する。
具体的には、DASDキヤツシユの不良セクタを取
扱う問題に対する低コストの解決策を提供する、
高性能パーソナル・コンピユータの動作方法に関
する。 B 従来技術 処理装置で処理すべき情報を記憶するためにハ
ード・デイスク・ドライブを使用することはよく
知られている。情報は、シリンダおよびそれぞれ
所定の数のバイトを含むセクタの所定のパターン
に応じてデイスクに記憶される。ドライブは複数
のヘツドを持ち、データが記憶されるデイスクの
各面に1つのヘツドが対応する。データはデイス
クから一時に1セクタずつ読み取られる。所望の
セクタにアクセスするには、まずヘツドを所望の
セクタを含むシリンダに移動させ、所望のセクタ
に達するまでデイスクをヘツド上で回転させなけ
ればならない。所望のセクタに達すると、そのセ
クタを読み取り、その内容をバツフアに入れる。
デイスク上のデータにアクセスするのに必要な合
計時間を考えると、ヘツドの物理的な移動の間に
主な遅延が発生する。したがつて、処理に大量の
入出力動作が必要なとき、性能を向上させるに
は、ヘツド移動量をできるだけ減少させるのが非
常に望ましい。 DASDキヤツシングは周知の技術であり、ヘツ
ドの移動量および物理的入出力動作量を減少させ
ることによりシステムの性能を向上させる方法を
提供する。こうした技術によると、主記憶装置の
一部をキヤツシユとして使つて、データのセクタ
のページを記憶する。所望のセクタに最初にアク
セスするとき、そのセクタだけでなくその周囲の
1つまたは複数のセクタもキヤツシユに読み込ま
れ、こうしたセクタへのその後のアクセスはデイ
スク・ドライブ速度ではなく主記憶装置速度で行
なわれる。次に処理するデータが前に処理された
データの近くに記憶されている確率が高いので、
性能の改善が得られる。 C 発明が解決しようとする問題点 デイスク記憶媒体に欠陥があることから、当技
術で周知の一つの問題が発生する。すなわち、こ
うした欠陥を含むセクタは不良とみなされ、使用
できない。こうした不良セクタは通常フオーマツ
ト化によつて識別され、単に不良セクタを飛び越
すことでそうしたセクタが後で使用されないよう
にされている。キヤツシング・システムでは、正
常なセクタが初めにキヤツシユに読み込まれたと
きに、同じページの付近のセクタがエラーを含ん
でいたり不良の場合があるので、問題は一層複雑
になる。本発明者等に周知の従来技術の範囲内で
は、この問題は2つの方法で解決されてきた。第
1の方法では、不良セクタを含むどのページも不
良とみなし、エラー信号またはメツセージをユー
ザに送る。第2の方法では、正常なセクタだけが
キヤツシユに送られるようにデイスク・コントロ
ーラを構成することができる。こうした解決策は
ハードウエアによる解決策であり、比較的複雑で
実行にコストがかかる。本発明は、ソフトウエア
またはプログラミングによつて容易に実施でき
る、比較的低コストで、高性能のパーソナル・コ
ンピユータに特に有益な効果的で低コストの解決
策を提供する方法を対象としている。 本発明の一目的は、DASDキヤツシング・シス
テムでデイスク・セクタ・エラーを取り扱う新規
な方法を提供することにある。 もう一つの目的は、DASDキヤツシング・シス
テムを備えたパーソナル・コンピユータでセク
タ・エラーを取り扱う低コストの解決策を提供す
ることにある。 もう一つの目的は、周知のハードウエアをプロ
グラミングすることで容易に実施できる、DASD
キヤツシング・システムでセクタ・エラーを取り
扱う方法を提供することにある。 もう一つの目的は、デイスク・エラーを取り扱
う問題を容易に解決しながらユーザーに対して透
明なキヤツシング機能をもたらす、市販のデイス
ク・オペレーテイング・システム(DOS)で容
易に使用できる方法を提供することにある。 D 問題点を解決するための手段 要約すると、本発明によれば、複数セクタを含
む各ページが主記憶装置に読み込まれるとき、各
セクタが正常か不良かに関する情報を記憶する独
立したテーブルが構成される。任意のセクタへの
連続アクセスは、こうしたテーブル内の情報を参
照または検索し、不良またはエラーであると指摘
されたセクタを飛び越すことによつて行なわれ
る。 E 実施例 以下の説明は2つの部分に分かれている。第1
の部分ではDASDキヤツシユの一般的動作および
本発明の方法が機能する環境について説明する。
第2の部分では媒体エラーをどのように取り扱う
かについて詳細に説明する。しかし、当然のこと
ながら、本発明の真髄は特定のソフトウエア実施
態様ではなく、方法にある。 キヤツシユ この方法は、IBMパーソナル・コンピユータ
ATなど従来のデータ処理システム10で実施す
るのが好ましい。こうしたシステム10は一般に
プロセツサ12とそれに接続された主記憶装置1
4および入出力(I/O)装置15から構成され
る。こうしたシステムは、それぞれデイスク・ド
ライブ18に接続されている1つまたは複数のデ
イスク・コントローラ16を含むことがある。キ
ヤツシユ20とデータ・バツフア21は主記憶装
置14内のデータ構造として形成されており、デ
ータ・バツフア21は、DOSにより、デイス
ク・ドライブ18から転送中のデータの各セクタ
を緩衝記憶するのに使用される。 第2図では、キヤツシユ20は、多数のキヤツ
シユ・ページ22−1ないし22−nを含むペー
ジ構造21を含んでいる。キヤツシユ20はさら
にハツシユ・テーブル24、フリー・リスト・ポ
インタ26、LRUポインタ28、MRUポインタ
30およびエラー・リスト31を含む。それらの
詳細についてはこれから説明する。これら6つの
部分はキヤツシユの大きさにかかわらず常に存在
する。 キヤツシユ・ページ22:記憶中のキヤツシ
ユ・ページの構造を定義する。それは、どの物理
ページが表わされているかをタグ付けする情報、
LRUリストの一部、ハツシ・ユテーブル競合リ
ストの一部およびセクタごとにまとめられたキヤ
ツシユ・ページの実際のデータを含んでいる。 LRUポインタ28:キヤツシユ内において不
使用期間が最も長いキヤツシユ・ページ(LRU
ページ)を指す。すなわち、キヤツシユ内のその
他のページはすべてLRUポインタが指すLRUペ
ージよりも最近にアクセスされたものである。 MRUポインタ30:キヤツシユの最も最近使
用されたキヤツシユ・ページ(MRUページ)を
指す。すなわち、キヤツシユ内のどのページも
MRUポインタが指すMRUページよりも最近に
はアクセスされていない。 キヤツシユ・ハツシユ・テーブル24:このテ
ーブルはキヤツシユ・ページを指すポインタのベ
クトルである。このベクトルの長さは311項目で
ある。セクタが要求されると、キヤツシユはその
要求を捕捉してハツシングによりこのテーブルに
アクセスし、そのセクタがキヤツシユ内にあるか
どうかを判定する。ハツシユ・テーブルを使用す
れば、たとえどんなに多数のぺージがキヤツシユ
にあつても、そのセクタがキヤツシユ内にあるか
どうかを判定するのにほとんど時間がかからな
い。 フリー・リスト・ポインタ26:これはキヤツ
シユで現在使用中でないキヤツシユ・ページを指
す。最初、キヤツシユ内のページはすべてこのリ
ストに入つている。あるページがキヤツシユにな
いことがわかると、そのページはフリー・リスト
から取り出されてキヤツシユに入れられる。 エラー・リスト31:以下で詳細に説明するこ
のデータ構造は、ページ・エラーの履歴を示すの
に使用される。 表1にキヤツシユ・ページ22のフイールドを
リストする。この構造の各フイールドは以下で定
義する。すべてのポインタが2バイトで保持され
ていることに注意されたい。これはインテル
8086/80186/80286/80386フアミリーのような
セグメント化アーキテクチヤに対応する。ポイン
タに記憶される値はセグメント(8086/80186)
またはセレクタ(80286/80386)である。0の仮
定オフセツトが各データ構造と関連づけられてい
る。 様々なフイールドの意味は次の通りである。 フイールド1:このフイールドは、ページ内の
どのセクタがあり、どのセクタが有効データを含
んでいるか、およびエラーによりどのセクタが喪
失しているかを示すビツトまたはフラグを含む。 フイールド2:このフイールドは、この特定ペ
ージがどのドライブに含まれているかを判定す
る。 フイールド3:このフイールドは、ドライブ上
にページの開始セクタの相対ブロツク・アドレス
(RBA)を含む。 フイールド4:このフイールドは、このページ
よりも前に使用された次のページを指す。これが
LRUページである場合、このフイールドは値0
を含む。このフイールドはフリー・リストでペー
ジを一緒にリンクするのにも使われる。 フイールド5:このフイールドは、このページ
よりも最近使用された次のページを指す。これが
MRUページである場合、このフイールドは値0
を含む。 フイールド6:このフイールドはハツシユ・テ
ーブルの競合リストにある次ページを指す。 フイールド7:このフイールドはハツシユ・テ
ーブルの競合リストにある前ページを指す。 フイールド8:このフイールドはDASDから落
ちたページのデータを含む。このページが複数回
参照される場合、要求されるページの部分は、装
置から読み取られるのではなくこのバツフアから
コピーされる。 フイールド 内容 バイト 1 存在フラグ 2 2 ドライブID 1 3 RBA 4 4 LRUリストの次ページ 2 5 LRUリストの前ページ 2 6 競合リストの次ページ 2 7 競合リストの前ページ 2 8 ページ・バツフア 1〜8セクタ 表1 キヤツシユ・ページ22 各RBAは次式によつて決まる。 RBA=((CN×NH)+HN)×SPT+SN
(式1) ただし、CNはシリンダ番号、NHはドライブ
1台当たりのヘツド数、NHはヘツド番号、SPT
はトラツク1本当たりのセクタ数、SNはセクタ
番号である。 ハツシユ指標は次式によつて決まる。 ハツシユ指標=RBA shr log(ページ・サイ
ズ)mod311 (式2) ただし、shrはページ・サイズの2を底とする
対数に応じたビツト数だけ右にシフトされた
RBA、ページ・サイズは1ページのセクタ数、
modは剰余を戻すモジユーロ関数である。 ハツシユ・テーブルの長さとしては、比較的大
きな素数である311が好ましい。311は大きな素数
なので、キヤツシユのアクセス中にアプリケーシ
ヨンがその値またはその値の倍数をたびたび使用
することはまずない。これにより、アプリケーシ
ヨンがハツシユ・アルゴリズムと同期する機械が
減少して競合チエーンが短くなるので、ハツシユ
は迅速に解決できる。 第3図で、テーブル24の様々な指標位置0−
310は、0を含むか、またはこうした位置に連鎖
された最初のそしておそらく唯一の、キヤツシ
ユ・ページを指すポインタを含む。選択されたハ
ツシユ・テーブル項目が値0を含む場合、その項
目が指すページはなく、そのページはキヤツシユ
に入つていない。これは「ページ不在」と見なさ
れる。たとえば指標位置1は、ゼロを含み、キヤ
ツシユ内にその指標と関連するページがないこと
を示す。一方、ハツシユ・テーブル項目が0でな
い場合、そこの値がキヤツシユ・ページ22を指
すポインタとして使用される。キヤツシユ・ペー
ジ内のドライブおよびRBAが要求されたドライ
ブおよびRBAと比較される。それらが同じであ
ることがわかると、それは「ページ・ヒツト」と
見なされ、要求されたページはキヤツシユ内にあ
る。それらが同じでない場合、このページ内の次
競合ページ値が次のキヤツシユ・ページを指すの
に使用される。このフイールドに値0が入つてい
た場合、競合チエーンの終端に達したのであり、
要求されたページはキヤツシユ内にない。これも
「ページ不在」である。図のように、ページAな
いしFがテーブル24から求められ、異なる長さ
の3つも個別チエーンを形成する。 ページ22がキヤツシユ内で見つかつた場合、
見つかつたページが競合チエーンの先頭にくるよ
うに、ハツシユ・テーブル項目の競合チエーンが
再配列される。ここでの考えは、競合チエーンが
MRUの順に並んでいる場合、最近使用されたペ
ージが再びアクセスされる確率が高いために、競
合チエーンを下る走査が、短くなるといものであ
る。キヤツシユ・ページが複数の物理セクタを表
わす場合、とくにそうである。 ページがキヤツシユにないことがわかると、新
しいページが割り振られる(このことを実行する
手段そのものについては後で説明する)。ページ
はデイスクから読み取られ、ぺージ・バツフア
(フイールド8)に入れられる。新しいキヤツシ
ユ・ページ構造は、ページがキヤツシユにないこ
とを判定するのに使われたのと同じアルゴリズム
でハツシユ・テーブルに対して構成される。重要
な違いが1つある。ハツシユ・テーブル項目の競
合チエーンは変更されない。代わりに、競合チエ
ーンの先頭に新しいページが挿入されるので、競
合チエーンは依然としてMRUの順に並んでい
る。さらに、LRUリストのポインタは最も最近
使用されたものとしてこのページを示すように再
配列される。 要求されたセクタがキヤツシユにないことがわ
かつたときだけ、新しいページ22がキヤツシユ
20に入れられる。その方法は前項で説明した。
この項では、ページを実際にどう割り振ればキヤ
ツシユ構造に入れることができるようになるか説
明する。ページを割り振る方法は2つある。キヤ
ツシユ・フリー・リストに1つまたは複数のペー
ジがある場合、その1ページがフリー・リストか
ら取り除かれて、新しいページに割り振られる。
キヤツシユ・フリー・リストにページがない場
合、LRUポインタ28が指すページがキヤツシ
ユ構造から取り除かれ、新しいページに再び割り
振られる。第4図にキヤツシユ・フリー・リスト
の構造を示す。フリー・リスト・ポインタ26は
リストの先頭にあるキヤツシユ・ページ22を指
し、ポインタ・フイールドの1つが次のフリー・
ページを指す。最初、すべてのキヤツシユ・ペー
ジがフリー・リストにあり、どのページもハツシ
ユ・テーブルまたはLRUリストで指されていな
い。デイスクに要求が出され、キヤツシユ・ペー
ジ不在がある場合、ページ22がフリー・リスト
から次々に取り除かれ、逐にはフリー・リストの
ページがなくなる。そうなると、LRUリストに
基づいてページが再使用される。第5図にLRU
リストの構造を示す。リストの終端はLRUポイ
ンタ28およびMRUポインタ30により示さ
れ、リスト中の各ページ22は次ページおよび前ペ
ージを指すポインタによつて連鎖されている。 キヤツシユは常にLRUリストからページを取
り除く前にフリー・リストから割り振ろうと試み
るので、キヤツシユが作動すれば、キヤツシユに
更に多くのページを動的に追加することができ
る。キヤツシユがソフトウエアのみで実施されて
いる場合、これは特に望ましい。この背後にある
理由は、オペレーテイング・システムが、主記憶
装置が完全には利用されていないことを知り、、
未使用の記憶域の一部(または全部)をキヤツシ
ユに与えれば記憶域が活用できると判定できるこ
とである。 逆(キヤツシユからページを取り除く)も、
LRUリストの終端から1つまたは複数のページ
を取り除くことによつて可能である。これは、ペ
ージが記憶装置内で物理的に連続しているとは限
らないので望ましくないことがある。しかし、十
分に精巧なオペレーテイング・システムがあれ
ば、記憶装置の断片化は問題にならない。 ページが(ヒツトまたは割り振り中の新しいペ
ージによつて)キヤツシユ内でアクセスされると
き、そのページはLRUリストの現在の位置から
取り出され、MRUポインタが指すリストの先頭
に移される。キヤツシユ・ページ構造はポインタ
に基づいているので、LRUリスト内でのページ
の移動は、既知のやり方でポインタ値を移動しさ
えすれば実行できる。 キヤツシユ・ピニング(キヤツシユに単数また
は複数のページを常駐させること)がこの設計で
容易に実行される。ページをピニングするには、
LRUリストからページを取り出すだけでよい。
ページはLRUリストから再割振りされるので、
LRUリストにないページは決して再割振りされ
ない。ピニングが望ましいのは、ある数ページが
キヤツシユに保持されるほど頻繁にアクセスされ
ないときである。こうすると、デイレクトリ、割
振りビツト・マツプ、システム、フアイルなどの
フアイル・システム構造を大型フアイルの読取り
によつてフラツシユさせることなくキヤツシユ内
に保持して、高性能を得ることができる。有用な
形でキヤツシユ・ピニングを実行するには、キヤ
ツシユとオペレーテイング・システムまたは少な
くともそのユーテイリテイの間の協力が望まし
い。ユーテイリテイは、別の合図があるまで要求
されたページをLRUリストに入れないようにと
キヤツシユに合図する。次いで、ユーテイリテイ
はセクタ、フアイルなどを読み取り、その後すべ
てのキヤツシユ要求でLRUリストにページを入
れるようにとキヤツシユに合図する。 キヤツシユは、一部のページがLRUリストの
一部ではなく、従つてアクセスされてもLRUリ
ストに挿入してはならない場合があることを認識
する必要がある。これは、キヤツシユ・ヒツトが
起こつたとき、フイールド4および5(表1参
照)が0であるかどうか調べることによつて行な
える。それらが0である場合、ページはLRUに
入れられない。こうしてピニングをサポートする
のに特殊ビツトやフラグをキヤツシユ・ページ構
造に含める必要がない。 第6図に、本発明の方法がCACHESYSと呼ば
れる一連の処理手順でどう具体化されるかを一般
的に示す。この手順は、通常のプログラムおよび
ハードウエアと対話して本発明の方法を実行す
る。アプリケーシヨン・プログラム40がデイス
ク18からデータを読み取る必要があるとき、
DOS42が呼び出され、DOS42は、通常の割
込み13Hを用いて、基本入出力システム
(BIOS)44を呼び出す。CACHESYS50は
DOS42とBIOS44の間に挿入され、以下で詳
細に説明する様々な処理手順を捕捉し実行するた
めの割込み処理ルーチンとして構成できる。
CACHESYS50はDOSに対してはBIOS44と
して働いているように見え、BIOS44にとつて
はDOS42のように見える。すなわち、
CACHESYS50の動作はDOS42およびBIOS
44に対して透明である。BIOS44の制御下
で、デイスク18からのデータはハードウエア4
6から主記憶装置14のデータ・バツフア21に
転送され、そこで通常のやり方でDOSを介して
アプリケーシヨン・プログラムにとつて利用可能
になる。CACHESYS50が作動しているとき、
および割込み13Hの捕捉に応答して、必要なデ
ータを含む所望のセクタがすでにドライブ・キヤ
ツシユ20にある場合、そのデータはバツフア2
1に入れられ、アプリケーシヨン・プログラムに
とつて利用可能になる。データがキヤツシユ20
にない場合、CACHESYS50はBIOS44を呼
び出して、デイスク18からバツフア21にデー
タを読み取らせる。そこから、データはアプリケ
ーシヨン・プログラム40にとつて利用可能にな
る。さらに、こうしたデータを初めて使用する場
合、データはキヤツシユ20にも入れられてその
後の動作で利用できるようになる。さらに、近く
の連続するセクタも事前に取り出されてキヤツシ
ユ20に読み込まれる。 第7図では、割込みの受取りによつて処理手順
50が呼び出されると、ステツプ100で、所望の
セクタのRBAからハツシユ・テーブル24への
指標を計算する(式2参照)。ステツプ102で、そ
の指標のところのハツシユ・テーブルの内容をペ
ージ・ポインタとして取り出し、ステツプ104で
ページ・ポインタがゼロに等しく競合チエーンの
終端を示しているかどうか判定する。ゼロに等し
い場合、ステツプ106で新しいページが読み取ら
れ、ステツプ108で新しいページがキヤツシユに
入れられる。その後、ステツプ110でDOSとアプ
リケーシヨンに戻る。 ステツプ104の結果として、ページ・ポインタ
がゼロに等しくない場合、ステツプ112および114
で、ページ・ポインタが所望のページを指してい
るかどうかを判定する。これは、ステツプ112で、
まずページ・ポインタ・ドライブ仕様とデータを
含む所望のドライブとを比較することによつて行
なわれ、それが同じドライブの場合、ステツプ
114で、ページ・ポインタのRBAがRBAマスク
との論理積を取つたRBAと比較される。ステツ
プ112と114で否定の結果が出た場合、ステツプ
116で競合チエーンの次のページを指すようにペ
ージ・ポインタを更新し、ステツプ104に戻る。
所望のページに達すると、ステツプ114から118に
移る。 ステツプ118ないし130の一般的な目的は、要求
されたセクタがキヤツシユ・ページにあるかどう
か検査することである。そこにある場合、ステツ
プ130の結果が肯定となつてステツプ110に戻り、
セクタ・データがそのキヤツシユ・ページ22か
らバツフア21に転送される。ない場合は、ステ
ツプ130の結果が否定となつてステツプ106に戻
り、所望のセクタを含むページを読み取る。ステ
ツプ118ないし130の間に何が起こるかを理解する
ために、ここで新しいページがどのようにキヤツ
シユに読み込まれるかを考察することが望まし
い。 ステツプ160は一般的なステツプであり、それ
に関する詳細なステツプが第8図ないし第12図
に示してある。しかし、これらの様々なステツプ
について詳細に説明する前に、そこで使用するい
くつかの変数とデータ構造に関して説明を行なつ
ておく。 エラー処理 この処理で使用する様々な変数の意味を表2に
リストする。これらの変数は処理の開始時に初期
設定される。エラー・リスト31(第2図)は、
第13図に概略的に示すように、エラー・ハツシ
ユ・テーブル150、競合チエーン152および
フリー・リスト154を含み、1ページに1項目
である。競合チエーン152とフリー・リスト1
54は、第3図および第4図に関連して説明した
処理手順と同様に構成され処理される。ハツシ
ユ・テーブルを使用するのは、エラー・リストが
比較的小さくても、物理的入出力があるたびにそ
れが走査され、従つて探索時間をできるだけ短く
することが望ましいからである。ハツシュ・テー
ブル150は長さ64指標であり、この長さが選ば
れたのは、それが2のべき乗であり、ページ
RBAが除算ではなくシフトとマスクで容易に操
作できるからである。項目の素数ではなくこの数
が選ばれた理由は、デイスク上のエラーが普通ほ
ぼ均一に分布しており、キヤツシユが物理入出力
を実行するたびにこのテーブルがアクセスされる
ので、速度が非常に重要だからである。ハツシ
ユ・テーブル150はエラー・リスト項目の競合
チエーン152を指す。 変数 意味 RBA:読み込まれるページのRBA バツフア・ポインタ:データが読み込まれる場
所を指すポインタ ページ・サイズ:1ページのセクタ数(2、4
または8) RBAマスク:=NOT(ページ・サイズ−1)
(すなわち、OFFFFFFFC) RBAシフト:log2(ページ・サイズ)(すなわ
ち、ページ・サイズが2、4または8の場合
1、2または3) SECカウント・マスク:ページ・サイズ−1 エラー・マスク:ページ・サイズを表わす数と
同数の1ビツトを1ワード内で右寄せしたも
の(すなわち、ページ・サイズが2、4また
は8の場合0003、000Fまたは00FF) 表2 変数 表3(下記)に、エラー・リストの各項目の構造
を定義する。フイールド 内容 バイト 1 存在フラグ 2 2 ドライブID 1 3 ブロツク・アドレス 4 4 次競合項目 2 5 前競合項目 2フイールド 意味 1 このフイールドはあるページのどのセクタに
エラーがあるかを示す1組のフラグまたはビツ
トを含む。不良セクタはフイールド内の対応す
る位置における0ビツトで示され、有効データ
を含むセクタは1ビツトで示される。 2 このフイールドはページが含まれているドラ
イブのドライブ番号を含む。 3 これはページの最初のセクタのRBAである。 4 このフイールドは競合チエーン中の次のエラ
ー・リスト項目を指す。 5 このフイールドは競合チエーン中の前のエラ
ー・リスト項目を指す。 表3 エラー・リスト構造 第8図では、ステツプ132で新しいページの読
込み処理が始まる。第8図に示した一般的処理
は、キヤツシユが読み込むべきページにエラーが
あることを検出したかどうかを判定するものであ
る。ステツプ132で、所望のセクタのRBAと
RBAマスクの論理積を取り、ステツプ134でその
結果を使つてエラー・ハツシユ・テーブル150
への指標を計算する。指標の計算は、RBAシフ
トの量だけステツプ132の結果を右にシフトした
ときのモジユーロ64演算からの剰余として出さ
れる。次に、ステツプ136で、変数ポインタが、
134から計算された指標のところにあるエラー・
ハツシユ・テーブルの内容に設定される。ポイン
タがゼロに設定されていない場合、ステツプ138
から140に分岐し、競合チエーンのエラー項目が
ある状態を表わす。次に、ステツプ140でドライ
ブIDがエラーが発生したページを含むドライブ
のIDと同じであるからどうかを判定する。同じ
でない場合、ステツプ144でポインタを指標づけ
し、競合チエーンの次の項目に進む。ステツプ
140の結果が肯定である場合、ステツプ142で、所
望のRBAがエラー・リスト項目のそれと対応し
ているかどうかを判定する。そうでない場合、ス
テツプ144でポインタを指標づけし、競合チエー
ンの次の項目に進む。ステツプ138の結果が肯定
であると、関連するページに以前エラーがなかつ
たこと、およびデイスク・コントローラに単一コ
マンドを送つてページのセクタ数を読み取ること
によりページ全体の読取りが試みられることを示
す。ステツプ142の判定が肯定であると、そのペ
ージに以前エラーがあつたこと、およびデイス
ク・コントローラに複数のコマンドを送つてその
度に1セクタずつページの読取りが行なわれるこ
とを示す。 第9図で、BIOSの呼出しによつて、ステツプ
160でぺージ・サイズ、1ページ当たりのセクタ
数および開始セクタのRBAを獲得する。読取り
中にエラーが発生しなかつた場合、ステツプ162
から164に分岐し、そこで、すべてのセクタがそ
のページにあることを示す存在ビツトをセツトす
る。すなわち、こうしたセクトの読取り中に不良
セクタやエラーに出会わず、有効データが各セク
タに入つている。ステツプ166でそのセクタが読
み込まれるデータ・バツフア21のアドレスを指
す変数現ポインタを設定する。次いで、ステツプ
168ないし176で、示された様々な変数を初期設定
する。次に、BIOSを呼び出し、ステツプ178で、
現RBAに関連する1つのセクタが読み取られる。
エラーが発生しない場合、ステツプ180からステ
ツプ182に分岐する。こうした読取り中にエラー
が発生した場合、ステツプ184でこうしたエラー
に関連する存在フラグがビツト・マスクと排他的
論理和をとることによつてゼロに設定され、エラ
ーすなわちセクタが不良であつたことを示す。次
にステツプ186で、ステツプ178の読取り動作に由
来する戻りコードにしたがつてエラー・コードを
設定する。ステツプ182ないし188で、現RBA、
現ポインタ、ビツト・マスクおよびカウントを次
のセクタを指すように更新する。次に、ステツプ
190でカウントがゼロになるまで処理が繰り返さ
れる。次いで、ステツプ192でいま読み取つたば
かりのページがエラー・テーブル31にあるかど
うかを判定する。 そのページがエラー・テーブルにない場合、ス
テツプ192からステツプ193(第10図)に分岐し、
そこで新しいエラー・ポインタを設定することに
よつてエラ−・フリー・リスト154から要素を
得る。次いで、ステツプ194でエラー・フリー・
リストが空かどうか、すなわち新しいエラー・フ
リー・ポインタがゼロに等しいかどうかを判定す
る。等しい場合、ステツプ194から204に分岐し、
そこで存在ビツトとエラー・コードを戻す。エラ
ー・フリー・リストが空でない場合、ステツプ
196ないし202で新しいエラー項目をエラー・ハツ
シユ・テーブルに挿入する。これを行なうには、
ステツプ196でエラー・フリー・ポインタを次の
エラー・フリー・ポインタに等しく設定し、ステ
ツプ198で新しいエラー・ポインタを対応する存
在ビツトに等しく設定し、エラー・ハツシユ・テ
ーブルの指標からの値に応じて次の新しいエラ
ー・ポインタを設定し、次いでステツプ202でエ
ラー・ハツシユ指標を新しいエラー・ポインタに
設定する。 第11図の処理手順は、要求されたセクタに以
前にエラーがあつたかどうかを検査するものであ
る。ステツプ206ないし218はステツプ118ないし
130と同一であるが、入口点と出口点に応じて変
わつてくる。すなわちこの変化のため、ステツプ
118ないし130では要求されたセクタがキヤツシ
ユ・ページにあるかどうかを検査し、すべてのセ
クタが1ページにあるときステツプ130で肯定の
結果が得られる。結果が否定であると、要求され
たセクタのすべてが同一ぺージにあるのではな
く、オペレーテイング・システムが何らかの形の
エラー回復を実行しようとしなければならないこ
とを示す。他方、ステツプ206ないし218は、要求
されたセクタに以前にエラーがあつたかどうかを
検査するのに使用される。ステツプ218の結果が
肯定であると、そのページにはエラーがあるが要
求されたセクタにはエラーがないことを示し、
218の結果が否定であると、要求されたセクタに
エラーがあることを示す。 ステツプ206で、RBAとSECカウント・マスク
が論理積をとられて、その結果が変数シフト・カ
ウントに記憶される。次にステツプ208で、存在
ビツトをシフト・カウントの量だけポインタの存
在ビツトを右にシフトしたものに等しく設定す
る。ステツプ210でマスク・シフトをページ・サ
イズからセクタの数を差し引いたものに等しく設
定する。ステツプ212でマスク・シフトに応じた
量だけエラー・マスクを右にシフトさせることに
よつてテスト・マスクを作成する。その後、ステ
ツプ214で存在ビットとテスト・マスクの論理積
を取り、ステツプ216でテスト・マスクの排他的
論理和を取り、ステツプ218で結果をテストする。
この処理手順が有益なのは、ループや複数の判断
経路に頼らずに、要求されたセクタにエラーがあ
るかどうかを迅速に判定できるからである。以下
に示す例を使えばもつとよく理解できると思われ
る。この例では、ページ・サイズは8セクタで、
最後にページを読み取つたときそのページのセク
タ5(第6番目のセクタ)にエラーがあり、その
対応する存在ビツトがゼロに設定されているもの
と仮定する。表4に、要求されたセクタがエラー
のあるページにあるが、要求されたセクタはエラ
ーの1つではないとき処理手順がどのように働く
かの例を示す。表5には、以前の読取り中に要求
されたセクタにエラーがあつたときの、この処理
手順の例を示す。この例では、そのページのセク
タ4から始まる2つのセクタを読み取る。
クタ・エラーを取り扱えるように、直接アクセス
記憶装置(DASD)キヤツシユを備えたデータ処
理システムの動作方法を改良することに関する。
具体的には、DASDキヤツシユの不良セクタを取
扱う問題に対する低コストの解決策を提供する、
高性能パーソナル・コンピユータの動作方法に関
する。 B 従来技術 処理装置で処理すべき情報を記憶するためにハ
ード・デイスク・ドライブを使用することはよく
知られている。情報は、シリンダおよびそれぞれ
所定の数のバイトを含むセクタの所定のパターン
に応じてデイスクに記憶される。ドライブは複数
のヘツドを持ち、データが記憶されるデイスクの
各面に1つのヘツドが対応する。データはデイス
クから一時に1セクタずつ読み取られる。所望の
セクタにアクセスするには、まずヘツドを所望の
セクタを含むシリンダに移動させ、所望のセクタ
に達するまでデイスクをヘツド上で回転させなけ
ればならない。所望のセクタに達すると、そのセ
クタを読み取り、その内容をバツフアに入れる。
デイスク上のデータにアクセスするのに必要な合
計時間を考えると、ヘツドの物理的な移動の間に
主な遅延が発生する。したがつて、処理に大量の
入出力動作が必要なとき、性能を向上させるに
は、ヘツド移動量をできるだけ減少させるのが非
常に望ましい。 DASDキヤツシングは周知の技術であり、ヘツ
ドの移動量および物理的入出力動作量を減少させ
ることによりシステムの性能を向上させる方法を
提供する。こうした技術によると、主記憶装置の
一部をキヤツシユとして使つて、データのセクタ
のページを記憶する。所望のセクタに最初にアク
セスするとき、そのセクタだけでなくその周囲の
1つまたは複数のセクタもキヤツシユに読み込ま
れ、こうしたセクタへのその後のアクセスはデイ
スク・ドライブ速度ではなく主記憶装置速度で行
なわれる。次に処理するデータが前に処理された
データの近くに記憶されている確率が高いので、
性能の改善が得られる。 C 発明が解決しようとする問題点 デイスク記憶媒体に欠陥があることから、当技
術で周知の一つの問題が発生する。すなわち、こ
うした欠陥を含むセクタは不良とみなされ、使用
できない。こうした不良セクタは通常フオーマツ
ト化によつて識別され、単に不良セクタを飛び越
すことでそうしたセクタが後で使用されないよう
にされている。キヤツシング・システムでは、正
常なセクタが初めにキヤツシユに読み込まれたと
きに、同じページの付近のセクタがエラーを含ん
でいたり不良の場合があるので、問題は一層複雑
になる。本発明者等に周知の従来技術の範囲内で
は、この問題は2つの方法で解決されてきた。第
1の方法では、不良セクタを含むどのページも不
良とみなし、エラー信号またはメツセージをユー
ザに送る。第2の方法では、正常なセクタだけが
キヤツシユに送られるようにデイスク・コントロ
ーラを構成することができる。こうした解決策は
ハードウエアによる解決策であり、比較的複雑で
実行にコストがかかる。本発明は、ソフトウエア
またはプログラミングによつて容易に実施でき
る、比較的低コストで、高性能のパーソナル・コ
ンピユータに特に有益な効果的で低コストの解決
策を提供する方法を対象としている。 本発明の一目的は、DASDキヤツシング・シス
テムでデイスク・セクタ・エラーを取り扱う新規
な方法を提供することにある。 もう一つの目的は、DASDキヤツシング・シス
テムを備えたパーソナル・コンピユータでセク
タ・エラーを取り扱う低コストの解決策を提供す
ることにある。 もう一つの目的は、周知のハードウエアをプロ
グラミングすることで容易に実施できる、DASD
キヤツシング・システムでセクタ・エラーを取り
扱う方法を提供することにある。 もう一つの目的は、デイスク・エラーを取り扱
う問題を容易に解決しながらユーザーに対して透
明なキヤツシング機能をもたらす、市販のデイス
ク・オペレーテイング・システム(DOS)で容
易に使用できる方法を提供することにある。 D 問題点を解決するための手段 要約すると、本発明によれば、複数セクタを含
む各ページが主記憶装置に読み込まれるとき、各
セクタが正常か不良かに関する情報を記憶する独
立したテーブルが構成される。任意のセクタへの
連続アクセスは、こうしたテーブル内の情報を参
照または検索し、不良またはエラーであると指摘
されたセクタを飛び越すことによつて行なわれ
る。 E 実施例 以下の説明は2つの部分に分かれている。第1
の部分ではDASDキヤツシユの一般的動作および
本発明の方法が機能する環境について説明する。
第2の部分では媒体エラーをどのように取り扱う
かについて詳細に説明する。しかし、当然のこと
ながら、本発明の真髄は特定のソフトウエア実施
態様ではなく、方法にある。 キヤツシユ この方法は、IBMパーソナル・コンピユータ
ATなど従来のデータ処理システム10で実施す
るのが好ましい。こうしたシステム10は一般に
プロセツサ12とそれに接続された主記憶装置1
4および入出力(I/O)装置15から構成され
る。こうしたシステムは、それぞれデイスク・ド
ライブ18に接続されている1つまたは複数のデ
イスク・コントローラ16を含むことがある。キ
ヤツシユ20とデータ・バツフア21は主記憶装
置14内のデータ構造として形成されており、デ
ータ・バツフア21は、DOSにより、デイス
ク・ドライブ18から転送中のデータの各セクタ
を緩衝記憶するのに使用される。 第2図では、キヤツシユ20は、多数のキヤツ
シユ・ページ22−1ないし22−nを含むペー
ジ構造21を含んでいる。キヤツシユ20はさら
にハツシユ・テーブル24、フリー・リスト・ポ
インタ26、LRUポインタ28、MRUポインタ
30およびエラー・リスト31を含む。それらの
詳細についてはこれから説明する。これら6つの
部分はキヤツシユの大きさにかかわらず常に存在
する。 キヤツシユ・ページ22:記憶中のキヤツシ
ユ・ページの構造を定義する。それは、どの物理
ページが表わされているかをタグ付けする情報、
LRUリストの一部、ハツシ・ユテーブル競合リ
ストの一部およびセクタごとにまとめられたキヤ
ツシユ・ページの実際のデータを含んでいる。 LRUポインタ28:キヤツシユ内において不
使用期間が最も長いキヤツシユ・ページ(LRU
ページ)を指す。すなわち、キヤツシユ内のその
他のページはすべてLRUポインタが指すLRUペ
ージよりも最近にアクセスされたものである。 MRUポインタ30:キヤツシユの最も最近使
用されたキヤツシユ・ページ(MRUページ)を
指す。すなわち、キヤツシユ内のどのページも
MRUポインタが指すMRUページよりも最近に
はアクセスされていない。 キヤツシユ・ハツシユ・テーブル24:このテ
ーブルはキヤツシユ・ページを指すポインタのベ
クトルである。このベクトルの長さは311項目で
ある。セクタが要求されると、キヤツシユはその
要求を捕捉してハツシングによりこのテーブルに
アクセスし、そのセクタがキヤツシユ内にあるか
どうかを判定する。ハツシユ・テーブルを使用す
れば、たとえどんなに多数のぺージがキヤツシユ
にあつても、そのセクタがキヤツシユ内にあるか
どうかを判定するのにほとんど時間がかからな
い。 フリー・リスト・ポインタ26:これはキヤツ
シユで現在使用中でないキヤツシユ・ページを指
す。最初、キヤツシユ内のページはすべてこのリ
ストに入つている。あるページがキヤツシユにな
いことがわかると、そのページはフリー・リスト
から取り出されてキヤツシユに入れられる。 エラー・リスト31:以下で詳細に説明するこ
のデータ構造は、ページ・エラーの履歴を示すの
に使用される。 表1にキヤツシユ・ページ22のフイールドを
リストする。この構造の各フイールドは以下で定
義する。すべてのポインタが2バイトで保持され
ていることに注意されたい。これはインテル
8086/80186/80286/80386フアミリーのような
セグメント化アーキテクチヤに対応する。ポイン
タに記憶される値はセグメント(8086/80186)
またはセレクタ(80286/80386)である。0の仮
定オフセツトが各データ構造と関連づけられてい
る。 様々なフイールドの意味は次の通りである。 フイールド1:このフイールドは、ページ内の
どのセクタがあり、どのセクタが有効データを含
んでいるか、およびエラーによりどのセクタが喪
失しているかを示すビツトまたはフラグを含む。 フイールド2:このフイールドは、この特定ペ
ージがどのドライブに含まれているかを判定す
る。 フイールド3:このフイールドは、ドライブ上
にページの開始セクタの相対ブロツク・アドレス
(RBA)を含む。 フイールド4:このフイールドは、このページ
よりも前に使用された次のページを指す。これが
LRUページである場合、このフイールドは値0
を含む。このフイールドはフリー・リストでペー
ジを一緒にリンクするのにも使われる。 フイールド5:このフイールドは、このページ
よりも最近使用された次のページを指す。これが
MRUページである場合、このフイールドは値0
を含む。 フイールド6:このフイールドはハツシユ・テ
ーブルの競合リストにある次ページを指す。 フイールド7:このフイールドはハツシユ・テ
ーブルの競合リストにある前ページを指す。 フイールド8:このフイールドはDASDから落
ちたページのデータを含む。このページが複数回
参照される場合、要求されるページの部分は、装
置から読み取られるのではなくこのバツフアから
コピーされる。 フイールド 内容 バイト 1 存在フラグ 2 2 ドライブID 1 3 RBA 4 4 LRUリストの次ページ 2 5 LRUリストの前ページ 2 6 競合リストの次ページ 2 7 競合リストの前ページ 2 8 ページ・バツフア 1〜8セクタ 表1 キヤツシユ・ページ22 各RBAは次式によつて決まる。 RBA=((CN×NH)+HN)×SPT+SN
(式1) ただし、CNはシリンダ番号、NHはドライブ
1台当たりのヘツド数、NHはヘツド番号、SPT
はトラツク1本当たりのセクタ数、SNはセクタ
番号である。 ハツシユ指標は次式によつて決まる。 ハツシユ指標=RBA shr log(ページ・サイ
ズ)mod311 (式2) ただし、shrはページ・サイズの2を底とする
対数に応じたビツト数だけ右にシフトされた
RBA、ページ・サイズは1ページのセクタ数、
modは剰余を戻すモジユーロ関数である。 ハツシユ・テーブルの長さとしては、比較的大
きな素数である311が好ましい。311は大きな素数
なので、キヤツシユのアクセス中にアプリケーシ
ヨンがその値またはその値の倍数をたびたび使用
することはまずない。これにより、アプリケーシ
ヨンがハツシユ・アルゴリズムと同期する機械が
減少して競合チエーンが短くなるので、ハツシユ
は迅速に解決できる。 第3図で、テーブル24の様々な指標位置0−
310は、0を含むか、またはこうした位置に連鎖
された最初のそしておそらく唯一の、キヤツシ
ユ・ページを指すポインタを含む。選択されたハ
ツシユ・テーブル項目が値0を含む場合、その項
目が指すページはなく、そのページはキヤツシユ
に入つていない。これは「ページ不在」と見なさ
れる。たとえば指標位置1は、ゼロを含み、キヤ
ツシユ内にその指標と関連するページがないこと
を示す。一方、ハツシユ・テーブル項目が0でな
い場合、そこの値がキヤツシユ・ページ22を指
すポインタとして使用される。キヤツシユ・ペー
ジ内のドライブおよびRBAが要求されたドライ
ブおよびRBAと比較される。それらが同じであ
ることがわかると、それは「ページ・ヒツト」と
見なされ、要求されたページはキヤツシユ内にあ
る。それらが同じでない場合、このページ内の次
競合ページ値が次のキヤツシユ・ページを指すの
に使用される。このフイールドに値0が入つてい
た場合、競合チエーンの終端に達したのであり、
要求されたページはキヤツシユ内にない。これも
「ページ不在」である。図のように、ページAな
いしFがテーブル24から求められ、異なる長さ
の3つも個別チエーンを形成する。 ページ22がキヤツシユ内で見つかつた場合、
見つかつたページが競合チエーンの先頭にくるよ
うに、ハツシユ・テーブル項目の競合チエーンが
再配列される。ここでの考えは、競合チエーンが
MRUの順に並んでいる場合、最近使用されたペ
ージが再びアクセスされる確率が高いために、競
合チエーンを下る走査が、短くなるといものであ
る。キヤツシユ・ページが複数の物理セクタを表
わす場合、とくにそうである。 ページがキヤツシユにないことがわかると、新
しいページが割り振られる(このことを実行する
手段そのものについては後で説明する)。ページ
はデイスクから読み取られ、ぺージ・バツフア
(フイールド8)に入れられる。新しいキヤツシ
ユ・ページ構造は、ページがキヤツシユにないこ
とを判定するのに使われたのと同じアルゴリズム
でハツシユ・テーブルに対して構成される。重要
な違いが1つある。ハツシユ・テーブル項目の競
合チエーンは変更されない。代わりに、競合チエ
ーンの先頭に新しいページが挿入されるので、競
合チエーンは依然としてMRUの順に並んでい
る。さらに、LRUリストのポインタは最も最近
使用されたものとしてこのページを示すように再
配列される。 要求されたセクタがキヤツシユにないことがわ
かつたときだけ、新しいページ22がキヤツシユ
20に入れられる。その方法は前項で説明した。
この項では、ページを実際にどう割り振ればキヤ
ツシユ構造に入れることができるようになるか説
明する。ページを割り振る方法は2つある。キヤ
ツシユ・フリー・リストに1つまたは複数のペー
ジがある場合、その1ページがフリー・リストか
ら取り除かれて、新しいページに割り振られる。
キヤツシユ・フリー・リストにページがない場
合、LRUポインタ28が指すページがキヤツシ
ユ構造から取り除かれ、新しいページに再び割り
振られる。第4図にキヤツシユ・フリー・リスト
の構造を示す。フリー・リスト・ポインタ26は
リストの先頭にあるキヤツシユ・ページ22を指
し、ポインタ・フイールドの1つが次のフリー・
ページを指す。最初、すべてのキヤツシユ・ペー
ジがフリー・リストにあり、どのページもハツシ
ユ・テーブルまたはLRUリストで指されていな
い。デイスクに要求が出され、キヤツシユ・ペー
ジ不在がある場合、ページ22がフリー・リスト
から次々に取り除かれ、逐にはフリー・リストの
ページがなくなる。そうなると、LRUリストに
基づいてページが再使用される。第5図にLRU
リストの構造を示す。リストの終端はLRUポイ
ンタ28およびMRUポインタ30により示さ
れ、リスト中の各ページ22は次ページおよび前ペ
ージを指すポインタによつて連鎖されている。 キヤツシユは常にLRUリストからページを取
り除く前にフリー・リストから割り振ろうと試み
るので、キヤツシユが作動すれば、キヤツシユに
更に多くのページを動的に追加することができ
る。キヤツシユがソフトウエアのみで実施されて
いる場合、これは特に望ましい。この背後にある
理由は、オペレーテイング・システムが、主記憶
装置が完全には利用されていないことを知り、、
未使用の記憶域の一部(または全部)をキヤツシ
ユに与えれば記憶域が活用できると判定できるこ
とである。 逆(キヤツシユからページを取り除く)も、
LRUリストの終端から1つまたは複数のページ
を取り除くことによつて可能である。これは、ペ
ージが記憶装置内で物理的に連続しているとは限
らないので望ましくないことがある。しかし、十
分に精巧なオペレーテイング・システムがあれ
ば、記憶装置の断片化は問題にならない。 ページが(ヒツトまたは割り振り中の新しいペ
ージによつて)キヤツシユ内でアクセスされると
き、そのページはLRUリストの現在の位置から
取り出され、MRUポインタが指すリストの先頭
に移される。キヤツシユ・ページ構造はポインタ
に基づいているので、LRUリスト内でのページ
の移動は、既知のやり方でポインタ値を移動しさ
えすれば実行できる。 キヤツシユ・ピニング(キヤツシユに単数また
は複数のページを常駐させること)がこの設計で
容易に実行される。ページをピニングするには、
LRUリストからページを取り出すだけでよい。
ページはLRUリストから再割振りされるので、
LRUリストにないページは決して再割振りされ
ない。ピニングが望ましいのは、ある数ページが
キヤツシユに保持されるほど頻繁にアクセスされ
ないときである。こうすると、デイレクトリ、割
振りビツト・マツプ、システム、フアイルなどの
フアイル・システム構造を大型フアイルの読取り
によつてフラツシユさせることなくキヤツシユ内
に保持して、高性能を得ることができる。有用な
形でキヤツシユ・ピニングを実行するには、キヤ
ツシユとオペレーテイング・システムまたは少な
くともそのユーテイリテイの間の協力が望まし
い。ユーテイリテイは、別の合図があるまで要求
されたページをLRUリストに入れないようにと
キヤツシユに合図する。次いで、ユーテイリテイ
はセクタ、フアイルなどを読み取り、その後すべ
てのキヤツシユ要求でLRUリストにページを入
れるようにとキヤツシユに合図する。 キヤツシユは、一部のページがLRUリストの
一部ではなく、従つてアクセスされてもLRUリ
ストに挿入してはならない場合があることを認識
する必要がある。これは、キヤツシユ・ヒツトが
起こつたとき、フイールド4および5(表1参
照)が0であるかどうか調べることによつて行な
える。それらが0である場合、ページはLRUに
入れられない。こうしてピニングをサポートする
のに特殊ビツトやフラグをキヤツシユ・ページ構
造に含める必要がない。 第6図に、本発明の方法がCACHESYSと呼ば
れる一連の処理手順でどう具体化されるかを一般
的に示す。この手順は、通常のプログラムおよび
ハードウエアと対話して本発明の方法を実行す
る。アプリケーシヨン・プログラム40がデイス
ク18からデータを読み取る必要があるとき、
DOS42が呼び出され、DOS42は、通常の割
込み13Hを用いて、基本入出力システム
(BIOS)44を呼び出す。CACHESYS50は
DOS42とBIOS44の間に挿入され、以下で詳
細に説明する様々な処理手順を捕捉し実行するた
めの割込み処理ルーチンとして構成できる。
CACHESYS50はDOSに対してはBIOS44と
して働いているように見え、BIOS44にとつて
はDOS42のように見える。すなわち、
CACHESYS50の動作はDOS42およびBIOS
44に対して透明である。BIOS44の制御下
で、デイスク18からのデータはハードウエア4
6から主記憶装置14のデータ・バツフア21に
転送され、そこで通常のやり方でDOSを介して
アプリケーシヨン・プログラムにとつて利用可能
になる。CACHESYS50が作動しているとき、
および割込み13Hの捕捉に応答して、必要なデ
ータを含む所望のセクタがすでにドライブ・キヤ
ツシユ20にある場合、そのデータはバツフア2
1に入れられ、アプリケーシヨン・プログラムに
とつて利用可能になる。データがキヤツシユ20
にない場合、CACHESYS50はBIOS44を呼
び出して、デイスク18からバツフア21にデー
タを読み取らせる。そこから、データはアプリケ
ーシヨン・プログラム40にとつて利用可能にな
る。さらに、こうしたデータを初めて使用する場
合、データはキヤツシユ20にも入れられてその
後の動作で利用できるようになる。さらに、近く
の連続するセクタも事前に取り出されてキヤツシ
ユ20に読み込まれる。 第7図では、割込みの受取りによつて処理手順
50が呼び出されると、ステツプ100で、所望の
セクタのRBAからハツシユ・テーブル24への
指標を計算する(式2参照)。ステツプ102で、そ
の指標のところのハツシユ・テーブルの内容をペ
ージ・ポインタとして取り出し、ステツプ104で
ページ・ポインタがゼロに等しく競合チエーンの
終端を示しているかどうか判定する。ゼロに等し
い場合、ステツプ106で新しいページが読み取ら
れ、ステツプ108で新しいページがキヤツシユに
入れられる。その後、ステツプ110でDOSとアプ
リケーシヨンに戻る。 ステツプ104の結果として、ページ・ポインタ
がゼロに等しくない場合、ステツプ112および114
で、ページ・ポインタが所望のページを指してい
るかどうかを判定する。これは、ステツプ112で、
まずページ・ポインタ・ドライブ仕様とデータを
含む所望のドライブとを比較することによつて行
なわれ、それが同じドライブの場合、ステツプ
114で、ページ・ポインタのRBAがRBAマスク
との論理積を取つたRBAと比較される。ステツ
プ112と114で否定の結果が出た場合、ステツプ
116で競合チエーンの次のページを指すようにペ
ージ・ポインタを更新し、ステツプ104に戻る。
所望のページに達すると、ステツプ114から118に
移る。 ステツプ118ないし130の一般的な目的は、要求
されたセクタがキヤツシユ・ページにあるかどう
か検査することである。そこにある場合、ステツ
プ130の結果が肯定となつてステツプ110に戻り、
セクタ・データがそのキヤツシユ・ページ22か
らバツフア21に転送される。ない場合は、ステ
ツプ130の結果が否定となつてステツプ106に戻
り、所望のセクタを含むページを読み取る。ステ
ツプ118ないし130の間に何が起こるかを理解する
ために、ここで新しいページがどのようにキヤツ
シユに読み込まれるかを考察することが望まし
い。 ステツプ160は一般的なステツプであり、それ
に関する詳細なステツプが第8図ないし第12図
に示してある。しかし、これらの様々なステツプ
について詳細に説明する前に、そこで使用するい
くつかの変数とデータ構造に関して説明を行なつ
ておく。 エラー処理 この処理で使用する様々な変数の意味を表2に
リストする。これらの変数は処理の開始時に初期
設定される。エラー・リスト31(第2図)は、
第13図に概略的に示すように、エラー・ハツシ
ユ・テーブル150、競合チエーン152および
フリー・リスト154を含み、1ページに1項目
である。競合チエーン152とフリー・リスト1
54は、第3図および第4図に関連して説明した
処理手順と同様に構成され処理される。ハツシ
ユ・テーブルを使用するのは、エラー・リストが
比較的小さくても、物理的入出力があるたびにそ
れが走査され、従つて探索時間をできるだけ短く
することが望ましいからである。ハツシュ・テー
ブル150は長さ64指標であり、この長さが選ば
れたのは、それが2のべき乗であり、ページ
RBAが除算ではなくシフトとマスクで容易に操
作できるからである。項目の素数ではなくこの数
が選ばれた理由は、デイスク上のエラーが普通ほ
ぼ均一に分布しており、キヤツシユが物理入出力
を実行するたびにこのテーブルがアクセスされる
ので、速度が非常に重要だからである。ハツシ
ユ・テーブル150はエラー・リスト項目の競合
チエーン152を指す。 変数 意味 RBA:読み込まれるページのRBA バツフア・ポインタ:データが読み込まれる場
所を指すポインタ ページ・サイズ:1ページのセクタ数(2、4
または8) RBAマスク:=NOT(ページ・サイズ−1)
(すなわち、OFFFFFFFC) RBAシフト:log2(ページ・サイズ)(すなわ
ち、ページ・サイズが2、4または8の場合
1、2または3) SECカウント・マスク:ページ・サイズ−1 エラー・マスク:ページ・サイズを表わす数と
同数の1ビツトを1ワード内で右寄せしたも
の(すなわち、ページ・サイズが2、4また
は8の場合0003、000Fまたは00FF) 表2 変数 表3(下記)に、エラー・リストの各項目の構造
を定義する。フイールド 内容 バイト 1 存在フラグ 2 2 ドライブID 1 3 ブロツク・アドレス 4 4 次競合項目 2 5 前競合項目 2フイールド 意味 1 このフイールドはあるページのどのセクタに
エラーがあるかを示す1組のフラグまたはビツ
トを含む。不良セクタはフイールド内の対応す
る位置における0ビツトで示され、有効データ
を含むセクタは1ビツトで示される。 2 このフイールドはページが含まれているドラ
イブのドライブ番号を含む。 3 これはページの最初のセクタのRBAである。 4 このフイールドは競合チエーン中の次のエラ
ー・リスト項目を指す。 5 このフイールドは競合チエーン中の前のエラ
ー・リスト項目を指す。 表3 エラー・リスト構造 第8図では、ステツプ132で新しいページの読
込み処理が始まる。第8図に示した一般的処理
は、キヤツシユが読み込むべきページにエラーが
あることを検出したかどうかを判定するものであ
る。ステツプ132で、所望のセクタのRBAと
RBAマスクの論理積を取り、ステツプ134でその
結果を使つてエラー・ハツシユ・テーブル150
への指標を計算する。指標の計算は、RBAシフ
トの量だけステツプ132の結果を右にシフトした
ときのモジユーロ64演算からの剰余として出さ
れる。次に、ステツプ136で、変数ポインタが、
134から計算された指標のところにあるエラー・
ハツシユ・テーブルの内容に設定される。ポイン
タがゼロに設定されていない場合、ステツプ138
から140に分岐し、競合チエーンのエラー項目が
ある状態を表わす。次に、ステツプ140でドライ
ブIDがエラーが発生したページを含むドライブ
のIDと同じであるからどうかを判定する。同じ
でない場合、ステツプ144でポインタを指標づけ
し、競合チエーンの次の項目に進む。ステツプ
140の結果が肯定である場合、ステツプ142で、所
望のRBAがエラー・リスト項目のそれと対応し
ているかどうかを判定する。そうでない場合、ス
テツプ144でポインタを指標づけし、競合チエー
ンの次の項目に進む。ステツプ138の結果が肯定
であると、関連するページに以前エラーがなかつ
たこと、およびデイスク・コントローラに単一コ
マンドを送つてページのセクタ数を読み取ること
によりページ全体の読取りが試みられることを示
す。ステツプ142の判定が肯定であると、そのペ
ージに以前エラーがあつたこと、およびデイス
ク・コントローラに複数のコマンドを送つてその
度に1セクタずつページの読取りが行なわれるこ
とを示す。 第9図で、BIOSの呼出しによつて、ステツプ
160でぺージ・サイズ、1ページ当たりのセクタ
数および開始セクタのRBAを獲得する。読取り
中にエラーが発生しなかつた場合、ステツプ162
から164に分岐し、そこで、すべてのセクタがそ
のページにあることを示す存在ビツトをセツトす
る。すなわち、こうしたセクトの読取り中に不良
セクタやエラーに出会わず、有効データが各セク
タに入つている。ステツプ166でそのセクタが読
み込まれるデータ・バツフア21のアドレスを指
す変数現ポインタを設定する。次いで、ステツプ
168ないし176で、示された様々な変数を初期設定
する。次に、BIOSを呼び出し、ステツプ178で、
現RBAに関連する1つのセクタが読み取られる。
エラーが発生しない場合、ステツプ180からステ
ツプ182に分岐する。こうした読取り中にエラー
が発生した場合、ステツプ184でこうしたエラー
に関連する存在フラグがビツト・マスクと排他的
論理和をとることによつてゼロに設定され、エラ
ーすなわちセクタが不良であつたことを示す。次
にステツプ186で、ステツプ178の読取り動作に由
来する戻りコードにしたがつてエラー・コードを
設定する。ステツプ182ないし188で、現RBA、
現ポインタ、ビツト・マスクおよびカウントを次
のセクタを指すように更新する。次に、ステツプ
190でカウントがゼロになるまで処理が繰り返さ
れる。次いで、ステツプ192でいま読み取つたば
かりのページがエラー・テーブル31にあるかど
うかを判定する。 そのページがエラー・テーブルにない場合、ス
テツプ192からステツプ193(第10図)に分岐し、
そこで新しいエラー・ポインタを設定することに
よつてエラ−・フリー・リスト154から要素を
得る。次いで、ステツプ194でエラー・フリー・
リストが空かどうか、すなわち新しいエラー・フ
リー・ポインタがゼロに等しいかどうかを判定す
る。等しい場合、ステツプ194から204に分岐し、
そこで存在ビツトとエラー・コードを戻す。エラ
ー・フリー・リストが空でない場合、ステツプ
196ないし202で新しいエラー項目をエラー・ハツ
シユ・テーブルに挿入する。これを行なうには、
ステツプ196でエラー・フリー・ポインタを次の
エラー・フリー・ポインタに等しく設定し、ステ
ツプ198で新しいエラー・ポインタを対応する存
在ビツトに等しく設定し、エラー・ハツシユ・テ
ーブルの指標からの値に応じて次の新しいエラ
ー・ポインタを設定し、次いでステツプ202でエ
ラー・ハツシユ指標を新しいエラー・ポインタに
設定する。 第11図の処理手順は、要求されたセクタに以
前にエラーがあつたかどうかを検査するものであ
る。ステツプ206ないし218はステツプ118ないし
130と同一であるが、入口点と出口点に応じて変
わつてくる。すなわちこの変化のため、ステツプ
118ないし130では要求されたセクタがキヤツシ
ユ・ページにあるかどうかを検査し、すべてのセ
クタが1ページにあるときステツプ130で肯定の
結果が得られる。結果が否定であると、要求され
たセクタのすべてが同一ぺージにあるのではな
く、オペレーテイング・システムが何らかの形の
エラー回復を実行しようとしなければならないこ
とを示す。他方、ステツプ206ないし218は、要求
されたセクタに以前にエラーがあつたかどうかを
検査するのに使用される。ステツプ218の結果が
肯定であると、そのページにはエラーがあるが要
求されたセクタにはエラーがないことを示し、
218の結果が否定であると、要求されたセクタに
エラーがあることを示す。 ステツプ206で、RBAとSECカウント・マスク
が論理積をとられて、その結果が変数シフト・カ
ウントに記憶される。次にステツプ208で、存在
ビツトをシフト・カウントの量だけポインタの存
在ビツトを右にシフトしたものに等しく設定す
る。ステツプ210でマスク・シフトをページ・サ
イズからセクタの数を差し引いたものに等しく設
定する。ステツプ212でマスク・シフトに応じた
量だけエラー・マスクを右にシフトさせることに
よつてテスト・マスクを作成する。その後、ステ
ツプ214で存在ビットとテスト・マスクの論理積
を取り、ステツプ216でテスト・マスクの排他的
論理和を取り、ステツプ218で結果をテストする。
この処理手順が有益なのは、ループや複数の判断
経路に頼らずに、要求されたセクタにエラーがあ
るかどうかを迅速に判定できるからである。以下
に示す例を使えばもつとよく理解できると思われ
る。この例では、ページ・サイズは8セクタで、
最後にページを読み取つたときそのページのセク
タ5(第6番目のセクタ)にエラーがあり、その
対応する存在ビツトがゼロに設定されているもの
と仮定する。表4に、要求されたセクタがエラー
のあるページにあるが、要求されたセクタはエラ
ーの1つではないとき処理手順がどのように働く
かの例を示す。表5には、以前の読取り中に要求
されたセクタにエラーがあつたときの、この処理
手順の例を示す。この例では、そのページのセク
タ4から始まる2つのセクタを読み取る。
【表】
【表】
第12図では、ステツプ220はステツプ218(第
11図)での判定が否定であつた結果であり、ポ
インタ存在ビツトに応じて存在ビツトが設定され
る。ステツプ222でカウントをページ・サイズに
等しく設定する。ステツプ224で現RBAをRBA
に等しく設定し、ステツプ226で現ポインタをデ
ータ・バツフアへのポインタに等しく設定し、ス
テツプ228でビツト・マスクを1に等しく設定す
る。次いで、ステツプ230で、存在ビツトとビツ
ト・マスクの論理積をとることによつて現セクタ
に前にエラーがあつたかどうかを判定する。その
結果がゼロでない場合、ステツプ232で、BIOS
呼出しによつて、現RBAの1セクタを読み取る。
次にステツプ234で、そうした読取り中にエラー
があつたかどうか判定する。エラーがあつた場
合、ステツプ236で、エラーが以前あつたことを
示すように存在ビツトを設定し、ステツプ238で
エラー・コードを保管する。ステツプ240で現
RBAを増分することにより、ステツプ240とそれ
以後のステツプでは次のセクタに移動する。次い
で、242で現ポインタを1セクタ当たりのバイト
数で増分し、ステツプ244でビツト・マスクを1
つ左にシフトする。ステツプ246でカウントを減
分する。カウントがゼロになると、ステツプ204
に分岐する。そうでなければ、ステツプ248で、
すべてのセクタが読み取られたのではないと判定
し、ステツプ230に戻つてこの処理を繰り返す。 以下に処理手順の動作を要約する。媒体の欠陥
はキヤツシユ・ページ構造中の存在フラグで管理
される。デイスクからページ読込みが試みられた
時にエラーが戻されると、キヤツシユは以下に示
す方式で回復する。 1 ページの最初のセクタに戻る。 2 一時に1セクタずつぺージ・バツフアに読み
込む。セクタをうまく読み込むたびに、対応す
る存在ビツトをセツトする。 3 セクタの読み取り中にエラーに遭遇すると、
そのセクタの存在ビツトがクリアされ(0にセ
ツトされ)、そのセクタが読み込まれているか
のように当該のポインタが更新される。 4 ページのすべてのセクタが(一度に1つず
つ)読み取られると、存在ビツトを走査して、
キヤツシユから要求された1つまたは複数のセ
クタが喪失しているかどうか、すなわち、対応
する存在ビツトが0にセツトされているかどう
かを判定する。その場合、装置からの読み取り
中に受け取つた最後のエラーが要求元に戻され
る。 要求に対応するページがキヤツシユ中にすでに
ある場合の手順はやや異なつている。これは、以
下に示す方式で処理される。 1 存在ビツトを走査して、1つまたは複数の要
求されたセクタが喪失しているかどうかを判定
する。どれも喪失していない場合、キヤツシユ
は正常の方式で動作し、データは要求元に戻さ
れる。 2 1つまたは複数のセクタが喪失している場
合、デイスクから読み取る必要のあるセクタだ
けが読み取られる。読取り中にエラーに遭遇し
なかつた場合、当該のセクタがキヤツシユ・ペ
ージ中に存在していることが示され、処理が続
行する。 この方法を用いると、データを失つたりキヤツ
シユを一層複雑にすることもなく、キヤツシユは
媒体中のエラーに対応する「穴」をもつことがで
きる。また、キヤツシユがオペレーテイング・シ
ステムのタスクをより難しくすることなく、エラ
ーがあつた場合にオペレーテイング・システムは
オペレーシヨンを再試行しデータを回復すること
ができる。 キヤツシユがエラーに遭遇すると、ページのど
のセクタにエラーがあるかを判定し、エラーのあ
るセクタに対応する「穴」をページに残す。ま
た、存在フラグと呼ばれる16ビツト値がエラー回
復処理によつて生成される。これらのフラグにゼ
ロ・ビツトが含まれる場合、そのページは1つま
たは複数のエラーをもつ。 ページにエラーがある場合、キヤツシユはこの
ページに以前にエラーがあつたかどうかを判定す
る。キヤツシユは、ページのRBAを用いたハツ
シングによりエラー・リストにアクセスしてその
ページがリスト中にあるかどうか確かめることに
よつてこれを行なう。そのページがリストにない
場合、リストに追加される。そのページに以前に
エラーがあつた場合、以下のいずれか1つのこと
を行なうことができる。 1 以前の存在ビツトを保持する。 2 存在ビツトを作成したばかりの存在ビツトで
置き換える。ソフトウエア・キヤツシユが実施
したのがそれである。 3 2組の存在ビツトの論理積をとり、その結果
を保管する。これは、あるページのあるセクタ
にエラーがあつた場合、特に要求しない限りそ
れは読み取られないことを意味する。 4 2組の存在ビツトの論理和をとり、その結果
を保管する。これは、あるページのあるセクタ
がかつてうまく読み取られた場合、キヤツシユ
は常にその読取りを試みることを意味する。 すべての存在ビツトがゼロである場合、その項
目はエラー・リストから取り出される(または少
なくとも入れられない)。そうする理由はいくつ
かある。第1に、そうするとエラー・リストをず
つと小さくできる。そして、オペレーテイング・
システムは製造上の媒体の欠陥があるときにはト
ラツク全体の割振りを解除しようとするので、一
般にこれらの領域の読取りを試みない。第2に、
ページに正常なセクタがない場合、オペレーテイ
ング・システムは一般的なエラー回復状態にあり
性能は重要ではない。キヤツシユはまたそのペー
ジにほとんど関係しないので、そのエラーの追跡
によつてスペースを浪費することもない。 キヤツシユに対して要求が出され、その結果キ
ヤツシユ・ミスが発生したときは、システムは、
まず読み取ろうとしていたページに以前にエラー
があつたかどうかを判定する。そのページに以前
にエラーがあつた場合、システムは要求されたセ
クタの1つにエラーのフラグがついていたかどう
か確かめる。要求されたセクタにエラーがなかつ
た場合、エラーのあつたセクタを飛び越して、そ
のページのセクタが一時に1つずつ読み取られ
る。こうして、エラーは回避される。 要求されたセクタにエラーがあつた場合、それ
はキヤツシユによつて読み取られるので、要求元
によるエラーの再試行が、許される。エラー回避
が行なうことは、明示的に要求されていない場合
に、キヤツシユが以前にエラーがあつたセクタを
事前に取り出すのを、防止することだけである。
11図)での判定が否定であつた結果であり、ポ
インタ存在ビツトに応じて存在ビツトが設定され
る。ステツプ222でカウントをページ・サイズに
等しく設定する。ステツプ224で現RBAをRBA
に等しく設定し、ステツプ226で現ポインタをデ
ータ・バツフアへのポインタに等しく設定し、ス
テツプ228でビツト・マスクを1に等しく設定す
る。次いで、ステツプ230で、存在ビツトとビツ
ト・マスクの論理積をとることによつて現セクタ
に前にエラーがあつたかどうかを判定する。その
結果がゼロでない場合、ステツプ232で、BIOS
呼出しによつて、現RBAの1セクタを読み取る。
次にステツプ234で、そうした読取り中にエラー
があつたかどうか判定する。エラーがあつた場
合、ステツプ236で、エラーが以前あつたことを
示すように存在ビツトを設定し、ステツプ238で
エラー・コードを保管する。ステツプ240で現
RBAを増分することにより、ステツプ240とそれ
以後のステツプでは次のセクタに移動する。次い
で、242で現ポインタを1セクタ当たりのバイト
数で増分し、ステツプ244でビツト・マスクを1
つ左にシフトする。ステツプ246でカウントを減
分する。カウントがゼロになると、ステツプ204
に分岐する。そうでなければ、ステツプ248で、
すべてのセクタが読み取られたのではないと判定
し、ステツプ230に戻つてこの処理を繰り返す。 以下に処理手順の動作を要約する。媒体の欠陥
はキヤツシユ・ページ構造中の存在フラグで管理
される。デイスクからページ読込みが試みられた
時にエラーが戻されると、キヤツシユは以下に示
す方式で回復する。 1 ページの最初のセクタに戻る。 2 一時に1セクタずつぺージ・バツフアに読み
込む。セクタをうまく読み込むたびに、対応す
る存在ビツトをセツトする。 3 セクタの読み取り中にエラーに遭遇すると、
そのセクタの存在ビツトがクリアされ(0にセ
ツトされ)、そのセクタが読み込まれているか
のように当該のポインタが更新される。 4 ページのすべてのセクタが(一度に1つず
つ)読み取られると、存在ビツトを走査して、
キヤツシユから要求された1つまたは複数のセ
クタが喪失しているかどうか、すなわち、対応
する存在ビツトが0にセツトされているかどう
かを判定する。その場合、装置からの読み取り
中に受け取つた最後のエラーが要求元に戻され
る。 要求に対応するページがキヤツシユ中にすでに
ある場合の手順はやや異なつている。これは、以
下に示す方式で処理される。 1 存在ビツトを走査して、1つまたは複数の要
求されたセクタが喪失しているかどうかを判定
する。どれも喪失していない場合、キヤツシユ
は正常の方式で動作し、データは要求元に戻さ
れる。 2 1つまたは複数のセクタが喪失している場
合、デイスクから読み取る必要のあるセクタだ
けが読み取られる。読取り中にエラーに遭遇し
なかつた場合、当該のセクタがキヤツシユ・ペ
ージ中に存在していることが示され、処理が続
行する。 この方法を用いると、データを失つたりキヤツ
シユを一層複雑にすることもなく、キヤツシユは
媒体中のエラーに対応する「穴」をもつことがで
きる。また、キヤツシユがオペレーテイング・シ
ステムのタスクをより難しくすることなく、エラ
ーがあつた場合にオペレーテイング・システムは
オペレーシヨンを再試行しデータを回復すること
ができる。 キヤツシユがエラーに遭遇すると、ページのど
のセクタにエラーがあるかを判定し、エラーのあ
るセクタに対応する「穴」をページに残す。ま
た、存在フラグと呼ばれる16ビツト値がエラー回
復処理によつて生成される。これらのフラグにゼ
ロ・ビツトが含まれる場合、そのページは1つま
たは複数のエラーをもつ。 ページにエラーがある場合、キヤツシユはこの
ページに以前にエラーがあつたかどうかを判定す
る。キヤツシユは、ページのRBAを用いたハツ
シングによりエラー・リストにアクセスしてその
ページがリスト中にあるかどうか確かめることに
よつてこれを行なう。そのページがリストにない
場合、リストに追加される。そのページに以前に
エラーがあつた場合、以下のいずれか1つのこと
を行なうことができる。 1 以前の存在ビツトを保持する。 2 存在ビツトを作成したばかりの存在ビツトで
置き換える。ソフトウエア・キヤツシユが実施
したのがそれである。 3 2組の存在ビツトの論理積をとり、その結果
を保管する。これは、あるページのあるセクタ
にエラーがあつた場合、特に要求しない限りそ
れは読み取られないことを意味する。 4 2組の存在ビツトの論理和をとり、その結果
を保管する。これは、あるページのあるセクタ
がかつてうまく読み取られた場合、キヤツシユ
は常にその読取りを試みることを意味する。 すべての存在ビツトがゼロである場合、その項
目はエラー・リストから取り出される(または少
なくとも入れられない)。そうする理由はいくつ
かある。第1に、そうするとエラー・リストをず
つと小さくできる。そして、オペレーテイング・
システムは製造上の媒体の欠陥があるときにはト
ラツク全体の割振りを解除しようとするので、一
般にこれらの領域の読取りを試みない。第2に、
ページに正常なセクタがない場合、オペレーテイ
ング・システムは一般的なエラー回復状態にあり
性能は重要ではない。キヤツシユはまたそのペー
ジにほとんど関係しないので、そのエラーの追跡
によつてスペースを浪費することもない。 キヤツシユに対して要求が出され、その結果キ
ヤツシユ・ミスが発生したときは、システムは、
まず読み取ろうとしていたページに以前にエラー
があつたかどうかを判定する。そのページに以前
にエラーがあつた場合、システムは要求されたセ
クタの1つにエラーのフラグがついていたかどう
か確かめる。要求されたセクタにエラーがなかつ
た場合、エラーのあつたセクタを飛び越して、そ
のページのセクタが一時に1つずつ読み取られ
る。こうして、エラーは回避される。 要求されたセクタにエラーがあつた場合、それ
はキヤツシユによつて読み取られるので、要求元
によるエラーの再試行が、許される。エラー回避
が行なうことは、明示的に要求されていない場合
に、キヤツシユが以前にエラーがあつたセクタを
事前に取り出すのを、防止することだけである。
第1図は、本発明の方法が実施されるパーソナ
ル・コンピユータ・システムの概略図である。第
2図は本発明で使用するキヤツシユ・データ構造
の概略図である。第3図はページがハツシユ・テ
ーブルでどのように参照されるかを示す概略図で
ある。第4図はフリー・ページ・リストを示す概
略図である。第5図はLRUリストを示す概略図
である。第6図は、様々なプログラムとハードウ
エアが一般的に本発明にどのように関わつている
かを示す概略図である。第7A図ないし第12B
図は本発明の方法を示す流れ図である。第13図
はエラー・リスト・データ構造を示す概略図であ
る。
ル・コンピユータ・システムの概略図である。第
2図は本発明で使用するキヤツシユ・データ構造
の概略図である。第3図はページがハツシユ・テ
ーブルでどのように参照されるかを示す概略図で
ある。第4図はフリー・ページ・リストを示す概
略図である。第5図はLRUリストを示す概略図
である。第6図は、様々なプログラムとハードウ
エアが一般的に本発明にどのように関わつている
かを示す概略図である。第7A図ないし第12B
図は本発明の方法を示す流れ図である。第13図
はエラー・リスト・データ構造を示す概略図であ
る。
Claims (1)
- 【特許請求の範囲】 1 DASD装置のデイスクから連続するセクタを
1度に1つずつ読み取り、複数ページ分のセクタ
からなるデータを記憶するDASDキヤツシユを備
えた主記憶装置において、前記キヤツシユは前記
デイスク上の各セクタに対応する識別ビツトを有
し、 セクタ読み取り要求に応答して、所望のセクタ
を含むページを前記デイスクから読み取るステツ
プと、 セクタごとにデイスク媒体の欠陥の有無を調
べ、どのセクタに前記欠陥があるのかを前記識別
ビツトにセツトするステツプとを有し、 その後の前記読み取りステツプにおいて、前記
識別ビツトにより、不良セクタを識別して飛び越
して読み取り、さらに欠陥がある場合に前記識別
ビツトをセツトすることを特徴とするDASDキヤ
ツシユ管理方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/032,214 US4972316A (en) | 1987-03-30 | 1987-03-30 | Method of handling disk sector errors in DASD cache |
| US32214 | 1987-03-30 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS63247853A JPS63247853A (ja) | 1988-10-14 |
| JPH0564814B2 true JPH0564814B2 (ja) | 1993-09-16 |
Family
ID=21863717
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63032994A Granted JPS63247853A (ja) | 1987-03-30 | 1988-02-17 | Dasdキヤツシユ管理方法 |
Country Status (18)
| Country | Link |
|---|---|
| US (1) | US4972316A (ja) |
| EP (1) | EP0284663B1 (ja) |
| JP (1) | JPS63247853A (ja) |
| KR (1) | KR940005786B1 (ja) |
| CN (1) | CN1014565B (ja) |
| AT (1) | ATE75070T1 (ja) |
| BE (1) | BE1001066A4 (ja) |
| CA (1) | CA1288870C (ja) |
| DE (2) | DE3778347D1 (ja) |
| ES (1) | ES2031114T3 (ja) |
| FR (1) | FR2613506B1 (ja) |
| GB (1) | GB2202976B (ja) |
| GR (1) | GR3004931T3 (ja) |
| HK (1) | HK65492A (ja) |
| IT (1) | IT8819949A0 (ja) |
| MY (1) | MY102811A (ja) |
| PH (1) | PH27346A (ja) |
| SG (1) | SG68092G (ja) |
Families Citing this family (63)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2637788B2 (ja) * | 1988-09-02 | 1997-08-06 | 株式会社日立製作所 | ディスクキャッシュ制御方式および情報処理システム |
| JP2954227B2 (ja) * | 1989-02-15 | 1999-09-27 | キヤノン株式会社 | 情報処理方法 |
| US5347642A (en) * | 1989-11-30 | 1994-09-13 | Nec Electronics Inc. | Cache memory management unit |
| WO1992008229A1 (en) * | 1990-11-05 | 1992-05-14 | Disk Technician Corporation | System for locating and anticipating data storage media failures |
| US5287363A (en) * | 1991-07-01 | 1994-02-15 | Disk Technician Corporation | System for locating and anticipating data storage media failures |
| JP2625609B2 (ja) * | 1991-07-10 | 1997-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ディスク記憶装置 |
| JPH07504527A (ja) * | 1992-03-09 | 1995-05-18 | オースペックス システムズ インコーポレイテッド | 高性能の不揮発性ram保護式の書き込みキャッシュアクセラレータシステム |
| US5315602A (en) * | 1992-08-12 | 1994-05-24 | Digital Equipment Corporation | Optimized stripe detection for redundant arrays of disk drives |
| US5420983A (en) * | 1992-08-12 | 1995-05-30 | Digital Equipment Corporation | Method for merging memory blocks, fetching associated disk chunk, merging memory blocks with the disk chunk, and writing the merged data |
| US5309451A (en) * | 1992-08-12 | 1994-05-03 | Digital Equipment Corporation | Data and parity prefetching for redundant arrays of disk drives |
| US5404471A (en) * | 1992-11-20 | 1995-04-04 | International Business Machines Corp. | Method and apparatus for switching address generation modes in CPU having plural address generation modes |
| US6384995B1 (en) | 1992-12-23 | 2002-05-07 | International Business Machines Corporation | Apparatus and method for detecting defects in data storage devices |
| US5566324A (en) * | 1992-12-24 | 1996-10-15 | Ncr Corporation | Computer apparatus including a main memory prefetch cache and method of operation thereof |
| GB2276255A (en) * | 1993-02-17 | 1994-09-21 | Andor Int Ltd | Track buffer with embedded error data |
| US5646923A (en) * | 1993-11-17 | 1997-07-08 | International Business Machines Corporation | System and method for hiding P-list entries for a disk from an initiator using a small computer system interface |
| MY112118A (en) * | 1993-12-23 | 2001-04-30 | Hitachi Global Storage Tech Netherlands B V | System and method for skip-sector mapping in a data recording disk drive. |
| US5523903A (en) * | 1993-12-23 | 1996-06-04 | International Business Machines Corporation | Sector architecture for fixed block disk drive |
| US5606685A (en) * | 1993-12-29 | 1997-02-25 | Unisys Corporation | Computer workstation having demand-paged virtual memory and enhanced prefaulting |
| US5577227A (en) * | 1994-08-04 | 1996-11-19 | Finnell; James S. | Method for decreasing penalty resulting from a cache miss in multi-level cache system |
| JP3254340B2 (ja) * | 1994-11-10 | 2002-02-04 | シャープ株式会社 | 記録再生装置および記録再生装置のための欠陥処理方法 |
| US5671390A (en) * | 1995-05-23 | 1997-09-23 | International Business Machines Corporation | Log structured array storage subsystem using LSA directory and LSA sub-directory stored in different storage media |
| US5737344A (en) * | 1995-05-25 | 1998-04-07 | International Business Machines Corporation | Digital data storage with increased robustness against data loss |
| US5907672A (en) * | 1995-10-04 | 1999-05-25 | Stac, Inc. | System for backing up computer disk volumes with error remapping of flawed memory addresses |
| KR20000011007A (ko) * | 1996-05-15 | 2000-02-25 | 토마스 에프.멀베니 | 판독 채널 성능 지시기 및 에러 정정코드를 이용한 판독 방법및 디스크 드라이브u |
| US5721816A (en) * | 1996-07-29 | 1998-02-24 | Kusbel; Paul F. | Adaptive recovery of read and write errors in a disc drive |
| US6154331A (en) * | 1996-10-01 | 2000-11-28 | Lsi Logic Corporation | Disk formatter write gate look-ahead device |
| US5845318A (en) * | 1996-10-28 | 1998-12-01 | International Business Machines Corporation | Dasd I/O caching method and application including replacement policy minimizing data retrieval and storage costs |
| US6065100A (en) * | 1996-11-12 | 2000-05-16 | Micro-Design International | Caching apparatus and method for enhancing retrieval of data from an optical storage device |
| US5960460A (en) * | 1997-01-02 | 1999-09-28 | Exabyte Corporation | Non-intrusive replication of hard disk |
| US6392833B1 (en) | 1998-07-13 | 2002-05-21 | Seagate Technology, Llc | Reducing self-excited mechanical resonances in a disc drive |
| US7089449B1 (en) * | 2000-11-06 | 2006-08-08 | Micron Technology, Inc. | Recovering a system that has experienced a fault |
| US7234021B1 (en) * | 2001-10-05 | 2007-06-19 | Emc Corporation | Methods and apparatus for accessing data elements using improved hashing techniques |
| JP4074806B2 (ja) * | 2002-11-20 | 2008-04-16 | ヒタチグローバルストレージテクノロジーズネザーランドビーブイ | 不良セクタの探索方法、データ記録装置、プログラム |
| US7114033B2 (en) * | 2003-03-25 | 2006-09-26 | Emc Corporation | Handling data writes copied from a remote data storage device |
| US7437593B2 (en) * | 2003-07-14 | 2008-10-14 | International Business Machines Corporation | Apparatus, system, and method for managing errors in prefetched data |
| US7277993B2 (en) * | 2003-12-03 | 2007-10-02 | Intel Corporation | Write-back disk cache |
| US7379952B2 (en) * | 2004-01-30 | 2008-05-27 | Oracle International Corporation | Techniques for multiple window resource remastering among nodes of a cluster |
| US7962453B2 (en) | 2004-04-26 | 2011-06-14 | Oracle International Corporation | Dynamic redistribution of a distributed memory index when individual nodes have different lookup indexes |
| US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
| US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
| US8250296B2 (en) * | 2004-12-01 | 2012-08-21 | Dell Products L.P. | System and method for information handling system memory page mapping optimization |
| US20060200469A1 (en) * | 2005-03-02 | 2006-09-07 | Lakshminarayanan Chidambaran | Global session identifiers in a multi-node system |
| US7536529B1 (en) | 2005-06-10 | 2009-05-19 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for provisioning space in a data storage system |
| US7689766B1 (en) | 2005-06-10 | 2010-03-30 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for integrating a caching module into a storage system architecture |
| US7814065B2 (en) | 2005-08-16 | 2010-10-12 | Oracle International Corporation | Affinity-based recovery/failover in a cluster environment |
| US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
| US8631203B2 (en) | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
| US8352716B1 (en) | 2008-01-16 | 2013-01-08 | American Megatrends, Inc. | Boot caching for boot acceleration within data storage systems |
| US8621154B1 (en) | 2008-04-18 | 2013-12-31 | Netapp, Inc. | Flow based reply cache |
| US8161236B1 (en) | 2008-04-23 | 2012-04-17 | Netapp, Inc. | Persistent reply cache integrated with file system |
| US8799429B1 (en) | 2008-05-06 | 2014-08-05 | American Megatrends, Inc. | Boot acceleration by consolidating client-specific boot data in a data storage system |
| US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
| US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
| US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
| US8171227B1 (en) | 2009-03-11 | 2012-05-01 | Netapp, Inc. | System and method for managing a flow based reply cache |
| JP4988008B2 (ja) * | 2010-05-13 | 2012-08-01 | 株式会社東芝 | 情報処理装置およびドライバ |
| JP4988007B2 (ja) | 2010-05-13 | 2012-08-01 | 株式会社東芝 | 情報処理装置およびドライバ |
| USRE49818E1 (en) | 2010-05-13 | 2024-01-30 | Kioxia Corporation | Information processing method in a multi-level hierarchical memory system |
| US8700861B1 (en) * | 2012-03-28 | 2014-04-15 | Emc Corporation | Managing a dynamic list of entries for cache page cleaning |
| US9798623B2 (en) * | 2012-05-11 | 2017-10-24 | Seagate Technology Llc | Using cache to manage errors in primary storage |
| US9240210B2 (en) | 2013-11-26 | 2016-01-19 | Seagate Technology Llc | Physical subsector error marking |
| KR102498668B1 (ko) * | 2017-05-17 | 2023-02-09 | 삼성전자주식회사 | 플래시-인지 힙 메모리 관리 방법 및 호스트 장치 |
| CN109582598B (zh) * | 2018-12-13 | 2023-05-02 | 武汉中元华电软件有限公司 | 一种基于外部存储实现高效查找哈希表的预处理方法 |
Family Cites Families (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3997876A (en) * | 1972-06-07 | 1976-12-14 | International Business Machines Corporation | Apparatus and method for avoiding defects in the recording medium within a peripheral storage system |
| US4384487A (en) * | 1974-09-30 | 1983-05-24 | Browning Alva L | Dynamically restrained inertial reference instrument and reliability sensor |
| US4148098A (en) * | 1976-10-18 | 1979-04-03 | Xerox Corporation | Data transfer system with disk command verification apparatus |
| US4168541A (en) * | 1978-09-25 | 1979-09-18 | Sperry Rand Corporation | Paired least recently used block replacement system |
| US4523275A (en) * | 1980-11-14 | 1985-06-11 | Sperry Corporation | Cache/disk subsystem with floating entry |
| US4394732A (en) * | 1980-11-14 | 1983-07-19 | Sperry Corporation | Cache/disk subsystem trickle |
| US4490782A (en) * | 1981-06-05 | 1984-12-25 | International Business Machines Corporation | I/O Storage controller cache system with prefetch determined by requested record's position within data block |
| JPS5877034A (ja) * | 1981-10-30 | 1983-05-10 | Hitachi Ltd | 記録方法 |
| US4536836A (en) * | 1981-11-27 | 1985-08-20 | Storage Technology Corporation | Detection of sequential data stream |
| US4780808A (en) * | 1981-11-27 | 1988-10-25 | Storage Technology Corporation | Control of cache buffer for memory subsystem |
| US4498146A (en) * | 1982-07-30 | 1985-02-05 | At&T Bell Laboratories | Management of defects in storage media |
| US4638425A (en) * | 1982-09-29 | 1987-01-20 | International Business Machines Corporation | Peripheral data storage having access controls with error recovery |
| JPS59153251A (ja) * | 1983-02-18 | 1984-09-01 | Toshiba Corp | デイスクキヤツシユシステム |
| JPS608959A (ja) * | 1983-06-29 | 1985-01-17 | Fujitsu Ltd | デイスク・キヤツシユ制御方法 |
| US4603380A (en) * | 1983-07-01 | 1986-07-29 | International Business Machines Corporation | DASD cache block staging |
| DE3405073A1 (de) * | 1984-02-13 | 1985-08-14 | Siemens AG, 1000 Berlin und 8000 München | Speicherungsverfahren fuer eine in fernmeldeanlagen, insbesondere fernsprechvermittlungsanlagen eingesetzte speichereinrichtung |
| US4916605A (en) * | 1984-03-27 | 1990-04-10 | International Business Machines Corporation | Fast write operations |
| US4807110A (en) * | 1984-04-06 | 1989-02-21 | International Business Machines Corporation | Prefetching system for a cache having a second directory for sequentially accessed blocks |
| US4631723A (en) * | 1984-06-08 | 1986-12-23 | Honeywell Information Systems Inc. | Mass storage disk drive defective media handling |
| US4680703A (en) * | 1984-06-25 | 1987-07-14 | International Business Machines Corp. | Data processing system with reorganization of disk storage for improved paging |
| US4637024A (en) * | 1984-11-02 | 1987-01-13 | International Business Machines Corporation | Redundant page identification for a catalogued memory |
| JPS61133433A (ja) * | 1984-11-30 | 1986-06-20 | Nec Corp | 書換え不能なデ−タ記録媒体における不良セクタ代替え処理方式 |
| US4685082A (en) * | 1985-02-22 | 1987-08-04 | Wang Laboratories, Inc. | Simplified cache with automatic update |
| JPS61202381A (ja) * | 1985-03-06 | 1986-09-08 | Hitachi Ltd | デイスク制御装置 |
| JPH0756734B2 (ja) * | 1985-05-27 | 1995-06-14 | 松下電器産業株式会社 | 情報記録再生装置 |
| JPS61272821A (ja) * | 1985-05-29 | 1986-12-03 | Nec Corp | 磁気デイスク制御装置 |
| US4875155A (en) * | 1985-06-28 | 1989-10-17 | International Business Machines Corporation | Peripheral subsystem having read/write cache with record access |
| JPS6222162A (ja) * | 1985-07-23 | 1987-01-30 | Alps Electric Co Ltd | デイスクキヤツシユ制御方式 |
| JP2650891B2 (ja) * | 1986-04-16 | 1997-09-10 | 株式会社日立製作所 | 回転形記憶装置の制御方法 |
| JPS6356452U (ja) * | 1986-09-29 | 1988-04-15 | ||
| US4814903A (en) * | 1987-06-29 | 1989-03-21 | International Business Machines Corporation | Alternate storage areas in magnetooptical media |
| US4914530A (en) * | 1987-09-21 | 1990-04-03 | Plus Development Corporation | Media defect management within disk drive sector format |
-
1987
- 1987-03-30 US US07/032,214 patent/US4972316A/en not_active Expired - Lifetime
- 1987-12-09 FR FR878717531A patent/FR2613506B1/fr not_active Expired - Lifetime
- 1987-12-10 GB GB8728923A patent/GB2202976B/en not_active Expired - Lifetime
- 1987-12-15 AT AT87118539T patent/ATE75070T1/de not_active IP Right Cessation
- 1987-12-15 EP EP87118539A patent/EP0284663B1/en not_active Expired - Lifetime
- 1987-12-15 DE DE8787118539T patent/DE3778347D1/de not_active Expired - Lifetime
- 1987-12-15 ES ES198787118539T patent/ES2031114T3/es not_active Expired - Lifetime
- 1987-12-16 BE BE8701439A patent/BE1001066A4/fr not_active IP Right Cessation
-
1988
- 1988-02-04 CA CA000558112A patent/CA1288870C/en not_active Expired - Lifetime
- 1988-02-17 JP JP63032994A patent/JPS63247853A/ja active Granted
- 1988-02-19 PH PH36534A patent/PH27346A/en unknown
- 1988-02-27 CN CN88100953A patent/CN1014565B/zh not_active Expired
- 1988-02-29 KR KR1019880002102A patent/KR940005786B1/ko not_active Expired - Fee Related
- 1988-03-08 MY MYPI88000235A patent/MY102811A/en unknown
- 1988-03-25 DE DE3810233A patent/DE3810233A1/de active Granted
- 1988-03-25 IT IT8819949A patent/IT8819949A0/it unknown
-
1992
- 1992-06-17 GR GR920401291T patent/GR3004931T3/el unknown
- 1992-07-02 SG SG68092A patent/SG68092G/en unknown
- 1992-09-03 HK HK654/92A patent/HK65492A/xx unknown
Also Published As
| Publication number | Publication date |
|---|---|
| FR2613506B1 (fr) | 1990-02-09 |
| CN1014565B (zh) | 1991-10-30 |
| BE1001066A4 (fr) | 1989-06-27 |
| EP0284663B1 (en) | 1992-04-15 |
| CA1288870C (en) | 1991-09-10 |
| DE3778347D1 (de) | 1992-05-21 |
| ES2031114T3 (es) | 1992-12-01 |
| EP0284663A2 (en) | 1988-10-05 |
| SG68092G (en) | 1992-09-04 |
| IT8819949A0 (it) | 1988-03-25 |
| KR940005786B1 (ko) | 1994-06-23 |
| EP0284663A3 (en) | 1989-03-22 |
| MY102811A (en) | 1992-11-30 |
| ATE75070T1 (de) | 1992-05-15 |
| HK65492A (en) | 1992-09-11 |
| GB8728923D0 (en) | 1988-01-27 |
| DE3810233C2 (ja) | 1992-05-07 |
| GR3004931T3 (ja) | 1993-04-28 |
| JPS63247853A (ja) | 1988-10-14 |
| PH27346A (en) | 1993-06-08 |
| KR880011667A (ko) | 1988-10-29 |
| GB2202976A (en) | 1988-10-05 |
| FR2613506A1 (fr) | 1988-10-07 |
| US4972316A (en) | 1990-11-20 |
| CN88100953A (zh) | 1988-12-28 |
| DE3810233A1 (de) | 1988-10-20 |
| GB2202976B (en) | 1991-10-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0564814B2 (ja) | ||
| US6119209A (en) | Backup directory for a write cache | |
| EP0086886B1 (en) | Hierarchical data storage system for digital computers | |
| US4370710A (en) | Cache memory organization utilizing miss information holding registers to prevent lockup from cache misses | |
| US7418552B2 (en) | Memory disambiguation for large instruction windows | |
| US5233702A (en) | Cache miss facility with stored sequences for data fetching | |
| US5594885A (en) | Method for operating a cache memory system using a recycled register for identifying a reuse status of a corresponding cache entry | |
| EP0072108B1 (en) | A multiple operating mode storage subsystem | |
| EP0071719B1 (en) | Data processing apparatus including a paging storage subsystem | |
| EP1157336B1 (en) | Data processor with cache | |
| US5353430A (en) | Method of operating a cache system including determining an elapsed time or amount of data written to cache prior to writing to main storage | |
| EP0072413B1 (en) | A storage subsystem with hashed cache addressing | |
| US5590300A (en) | Cache memory utilizing address translation table | |
| JPS6367686B2 (ja) | ||
| US5761501A (en) | Stacked skip list data structures | |
| EP0139407B1 (en) | Data select match | |
| US4942521A (en) | Microprocessor with a cache memory in which validity flags for first and second data areas are simultaneously readable | |
| US5881266A (en) | Priority-based memory management method and apparatus | |
| US5555379A (en) | Cache controller index address generator | |
| JPS638851A (ja) | キャッシュ・メモリ制御方式 | |
| JPH04264641A (ja) | キャッシュメモリ方式 | |
| KR19990068873A (ko) | 캐쉬 메모리 | |
| JPH0667976A (ja) | ハードウェア制御ソフトウェアによるキャッシュメモリ制御方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |