JPH0241054B2 - - Google Patents
Info
- Publication number
- JPH0241054B2 JPH0241054B2 JP57095053A JP9505382A JPH0241054B2 JP H0241054 B2 JPH0241054 B2 JP H0241054B2 JP 57095053 A JP57095053 A JP 57095053A JP 9505382 A JP9505382 A JP 9505382A JP H0241054 B2 JPH0241054 B2 JP H0241054B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- entry
- cache
- requested
- 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 - Lifetime
Links
Classifications
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
-
- 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
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明の背景
本発明はデータ処理装置に関し、更に具体的に
はホスト・プロセツサ及び記憶階層における複数
のアタツチメント装置を含むデータ処理装置に関
する。 データ処理システムにおいて、通常、情報の記
憶及び検索のため、1つ又はそれ以上のアタツチ
メント装置(例えば、記憶デイスク)が設けられ
る。例えば、Bouknechtその他の米国特許第
4038642号では、複数のI/O装置及び関連した
I/OコントローラがI/Oインターフエイス・
バスを介してホスト・プロセツサへ共通に接続さ
れている。I/Oアタツチメント装置の各々はマ
イクロプロセツサを含み、このマイクロプロセツ
サはホスト・プロセツサと協働してメイン・スト
レージとI/O装置との間でデータ転送を実行す
る。Bouknechtその他のシステムに対する改善
は、Brownその他の米国特許第4246637号に記載
されている。この特許によれば、マイクロプロセ
ツサを含む単一のI/Oコントローラがホスト・
プロセツサへ接続され、複数のデータ記憶アタツ
チメント装置がI/Oコントローラの出力へ接続
され、単一のマイクロプロセツサが、複数のアタ
ツチメント装置との間のデータ転送を調整するこ
とができるようになつている。 これらシステムの問題点は、ホスト・プロセツ
サがアタツチメント装置からデータを要求する度
に、アタツチメント装置へアクセスしなければな
らず、時間がかかることである。例えば、
Brownその他の特許によれば、データが直接プ
ログラム制御(DPC)の下でアタツチメント・
デイスクからホスト・プロセツサへ転送される時
に、指令及びデータ・ワードはホスト・プロセツ
サのメイン・ストレージからマイクロプロセツサ
へ転送され、そこから装置データ・レジスタへ転
送される。アタツチメント・デイスクからリクエ
ストされたデータを検索し、そのデータをホス
ト・プロセツサへ与えるため、適当な調整及び制
御論理が実行される。反対方向の動作の場合(即
ち、メイン・ストレージからデイスクへの書込み
の場合)、アタツチメント記憶装置へ書込まれる
データは、装置データ・レジスタへロードされ、
このデータを所望のアタツチメント・デイスクへ
転送するため、初期接続ルーチンが実行されねば
ならない。サイクル・スチール・モードの動作で
は、指令がマイクロプロセツサへ与えられ、この
指令はマイクロプロセツサを能動化して、ホス
ト・プロセツサのメイン・ストレージからデータ
を「盗ませ」、そのデータを装置データ・レジス
タへロードせしめる。次いで、データは、実質的
にDPCモードと同じようにして、適当なアタツ
チメント・デイスクへ転送される。 システムのスピードは改善されるけれども、ホ
スト・プロセツサのために必要な情報を得るた
め、アタツチメント・デイスクへアクセスするこ
とは依然として必要である。信号処理速度は早い
けれども、読出/書込ヘツド又は記憶媒体を物理
的に動かす必要があるため制限される。即ち、デ
イスク・サブシステム中の処理速度は、デイスク
が回転し、ヘツドが適当な位置をシークするのに
必要な時間によつて制約される。 動作速度を改善するため、中央処理ユニツトに
よつて使用される可能性の高いメイン・ストレー
ジのデータの一部を小容量高速メモリへ記憶し、
CPUのデータ・リクエストの多くを上記高速メ
モリによつて迅速に満足させるようにすることが
知られている。このような手法は、例えば
Ghanemによる米国特許第4035778号に開示され
ている。Ghanemの特許は、小容量高速作業メモ
リの使用を説明すると共に、近い将来に使用され
る可能性の最も高いデータを保存するため、メモ
リ内容を常に更新することによつて、メモリ効率
を最大にする必要性を述べている。メモリ内容の
更新は、使用時点の最も古いデータ(least
recently used data)が常に置換されるLRU法、
又は複数のユーザへメモリ容量を割当てるため、
複雑な統計的アルゴリズムを使用するGhanemの
方法によつてなされる。しかし、Ghanemの特許
は、競合するプログラム間で作業メモリ・スペー
スを割当てることを教えるが、複数のデイスク
I/Oコントローラへ同一の手法を適用する示唆
はなされていない。更に、リクエストされたデー
タが現在高速作業メモリ中に記憶されているかど
うかを決定するため、データ・リクエスト識別情
報と作業メモリの全体の内容を比較することが必
要である。これは時間のかかる仕事である。更
に、作業メモリへ転送されるデータは、CPUに
よつてリクエストされたデータであるが、未だリ
クエストされていないけれども近い将来リクエス
トされる可能性のある他のデータを転送すること
によつて効率が改善されよう。 本発明の要約 本発明の目的は、パフオーマンスが改善された
キヤツシユ・メモリを提供することである。 簡単に説明すれば、上記の目的は、ホスト・プ
ロセツサによつて既にリクエストされたデータと
は異つた或る追加のデータをキヤツシユ・メモリ
へ転送することによつて達成される。データは、
アタツチメント記憶装置からキヤツシユ・メモリ
へ、固定長データ・ブロツクの増分として転送さ
れる。各データ・ブロツクは一連のデータ・レコ
ードを含む。特定のデータ・レコードがホスト・
プロセツサによつてリクエストされた時、そのレ
コードを含むデータ・ブロツクがキヤツシユ・メ
モリへ転送される。リクエストされたデータ・レ
コードのブロツク内ポジシヨンが決定され、ブロ
ツクにおけるリクエストされたレコードの相対的
位置に従つて、1つ又は2つの追加のデータ・ブ
ロツクがキヤツシユ・メモリへ転送される。追加
のデータ・ブロツクが転送される論理限界
(threshold)は変更することができ、それによつ
て、各動作でキヤツシユ・メモリへ転送されるデ
ータの平均的実効ブロツク長を変更することがで
きる。平均的実効ブロツク長は、パフオーマンス
を最も改善できるように変更することができる。
本発明の実施例において、パフオーマンス改善の
基準は、読出ヒツト率である。 実施例の説明 第1図はホスト・プロセツサ10、メイン・ス
トレージ11、装置コントロール14、鍵盤表示
端末18、I/Oコントローラ20を含む本発明
に従つたデータ処理システムを示す。装置コント
ローラ14は、少なくとも1つのアタツチメント
装置(例えばデイスク16)に接続されている。
コントローラ20は、ホスト・プロセツサ10と
デイスク16との間で適当な装置コントロール1
4を介して実行されるデータ転送を制御する。 ホスト・プロセツサ10はチヤネル・インター
フエイス・バス21を介してコントローラ20と
通信し、コントローラ20は装置インターフエイ
ス・バス22を介して装置コントロール14と通
信する。 ホスト・プロセツサ10はIBM社から市販さ
れているシリーズ/1、モデル5ミニコンピユー
タであると仮定する。このコンピユータについて
は、IBM社の出版物「シリーズ/1、モデル5、
4955プロセツサ及びプロセツサ機構の説明」
(Series/1、Model5、4955 Processor and
Processor Features Description、GA34―0021
―3)及び前記の米国特許第4038642号に説明さ
れている。更に、コントローラ20はBrownそ
の他による米国特許第4246637号に開示されたコ
ントローラを改良したものであり、マイクロプロ
セツサは米国特許第4173782号に説明されている
ものであつてよい。 第1図に示されるように、コントローラ20に
あるチヤネル・インターフエイス・バス21はチ
ヤネル・データ・バス23及びチヤネル制御バス
24を含む。同様に、装置インターフエイス・バ
ス22は装置データ・バス25と装置制御バス2
6を含む。自動高速サイクル・スチール動作を実
行するため、データ・バス23及び25は、サイ
クル・スチール・データ・レジスタ30、バイパ
ス・データ・バス31、装置データ・レジスタ3
2によつて相互接続される。バス23,25,3
1の各々は、2つの方向へデータを転送する双方
向バス又は一対の単方向バスであつてよい。 非自動サイクル・スチール動作のためには、デ
ータ及びその他の情報は、チヤネル・データ・バ
ス23、サイクル・スチール・データ・レジスタ
30、マイクロプロセツサ・データ・バス(デー
タ・バス・イン・バス34及びデータ・バス・ア
ウト・バス35を含む)を介して、ホスト・プロ
セツサとマイクロプロセツサ33との間で転送さ
れる。同様に、データ及びその他の情報は、装置
データ・バス25、装置データ・レジスタ32、
バス34及び35を介して、マイクロプロセツサ
33と装置コントロール14との間で、いずれの
方向へ対しても転送されることができる。 チヤネル制御バス24及び装置制御バス26の
各々は、高速コントロール36の制御の下で、初
期接続(調整及び制御)論理37及び38を介し
て、マイクロプロセツサ33と通信する。マイク
ロプロセツサ33は、バス34及び35を介して
高速コントロール36と通信する。ホスト・プロ
セツサ10から与えられたサイクル・スチール開
始指令に応答して、マイクロプロセツサ33は、
各種の初期パラメータ値を高速コントロール36
へ与える。その後、高速コントロール36は、マ
イクロプロセツサ33から介入を受けることな
く、データ転送動作を自動的に制御することがで
きる。換言すれば、自動サイクル・スチール動作
の場合、マイクロプロセツサ33は高速コントロ
ールの初期値を設定し、その後、高速コントロー
ルは、実際のデータ転送動作を引継いでそれを実
行する。この動作は、線39及び40を介して、
レジスタ・ロード・パルスをサイクル・スチー
ル・データ・レジスタ30及び装置データ・レジ
スタ32へ与えることを含む。線39上のロー
ド・パルスは、データをレジスタ32からレジス
タ30へバイパス・データ・バス31を介して転
送し、線40上のロード・パルスはデータを反対
方向に転送する。高速コントロール36によつて
与えられる自動的制御は、ホスト・プロセツサ1
0とレジスタ30との間でデータを転送するた
め、初期接続論理37を介してチヤネル制御バス
24上で適当な初期接続シーケンスを実行するこ
とを含み、かつレジスタ32と装置コントロール
14との間でデータを転送するため、初期接続論
理38を介して装置制御バス26上で適当な初期
接続シーケンスを実行することを含む。 コントローラ20はキヤツシユ・メモリ42と
キヤツシユ・データ・レジスタ44を含む。他の
データ・レジスタと同じように、レジスタ44は
バス34及び35を介してマイクロプロセツサ3
3へ接続され、線45を介して高速コントロール
36からロード・パルスを受取る。更に、レジス
タ44はバス31を介してレジスタ30及び32
へ接続される。データがホスト・プロセツサ10
によつてリクエストされた時、マイクロプロセツ
サ33は、先ずリクエストされたデータが現在キ
ヤツシユ・メモリ42に存在するかどうかを決定
する。もし存在すれば(即ち、読出ヒツトの場
合)、リクエストされたデータはバス46、レジ
スタ44、バス31、レジスタ30及びバス23
を介してホスト・プロセツサ10へ転送される。
もしリクエストされたデータの全て又は或るもの
がキヤツシユ・メモリ42に含まれない場合(読
出ミスの場合)、データは、通常の態様でアタツ
チメント装置から得られ、かつバス31、レジス
タ44、バス46を介してキヤツシユ・メモリ4
2へ転送される。後に詳細に説明するように、ホ
スト・プロセツサ10によつてリクエストされた
データ以外の追加のデータをプリフエツチし、そ
れが間もなくホスト・プロセツサによつてリクエ
ストされるだろうという予想の下で、そのデータ
をキヤツシユ・メモリに記憶することが望まれ
る。リクエストされたデータは、バス46、レジ
スタ44、バス31、レジスタ30、バス23を
介してキヤツシユ・メモリ42からホスト・プロ
セツサ10へ転送される。 ホスト・プロセツサ10が特定のデータ・ブロ
ツクについて動作を終了した後、新しいデータを
元のアタツチメント装置の記憶ロケーシヨンへ書
込むことを望むかも知れない。その場合、マイク
ロプロセツサ33は、アタツチメント装置のロケ
ーシヨンの内容が現在キヤツシユ・メモリ42に
記憶されているかどうかを決定する。もし記憶さ
れていれば、書込ヒツトの状態が起る。その場
合、このデータはキヤツシユ・メモリ42で更新
されねばならない。何故ならば、それは今や変更
されているからである。アドレスされたアタツチ
メント装置のロケーシヨンの内容が現在キヤツシ
ユ・メモリ42の中にない場合、データ・ブロツ
クの全体が書込まれるのであれば、新しいデータ
がキヤツシユ中に書込まれ、続いてキヤツシユか
らデイスク16へ書込まれ、そうでなければ、デ
ータは直接にデイスク16へ書込まれる。 キヤツシユ・メモリ管理の望ましい手法をこれ
から説明する。デイスク、キヤツシユ、及びデイ
レクトリイのスペースを有効に使用する重要な要
件は、固定ブロツク動作を実行することである。
そのような設計思想において、全てのデイスク・
アドレスは、開始デイスク・アドレス及び終了デ
イスク・アドレスの固定境界内に入るものと考え
られる。デイスク上に記憶された各レコードは、
デイスク駆動装置番号、ヘツド番号、シリンダ番
号、及びレコード/セクタ位置によつて決定され
た独特の相対ブロツク・アドレス(RBA)を有
する。RBAは高レベル・ブロツキング構造内に
置かれている。かくて、本発明のシステムにおい
て、各レコードは次式によつて与えられる独特に
関連づけられたRBAを有する。 RBA=k1(シリンダ番号)+k2(ヘツド番号) +レコード番号+k3(駆動装置番号) ここでk1、k2、k3はデイスク駆動装置の設計仕
様から決定される定数である。後に詳細に説明す
るキヤツシユ・メモリ管理のためには、ブロツキ
ング構造は、RBAをレコードで表わされた固定
ブロツク長で除算することによつて達成される。 ブロツク・ナンバー=RBA/ブロツク長 ここでブロツク長はシステム設計のパラメータ
である。以下の説明で、データの1つのレコード
は256バイトを含み、1ブロツクは8レコードを
含み、1ページは1ブロツク(2.048バイト)を
含み、全体のキヤツシユ容量は192ページである
と仮定する。しかし、他のメモリ構成も可能であ
る。 8のブロツク長を使用すれば、後に示すテーブ
ルは、最初の26個のRBAが最初の4個のブロツ
クに関してどのように位置しているかを示す。 この管理手法を用いれば、各情報レコードのア
ドレスは、指定されたブロツクに関してブロツ
ク・ナンバー及びレコード・アドレスによつて指
定されてよい。1つのブロツクには8個のレコー
ドが存在するので、レコードのブロツク・ナンバ
ーは、RBAを8で除算することによつて決定さ
れる。ハツシングは、基本番号であるハツシン
グ・フアクタによつてブロツク・ナンバーを除算
し、その剰余をデイレクトリイ・テーブルへのエ
ントリイ・ポイント(ハツシユ・エントリイ・ナ
ンバー)として使用することにより達成される。
実施例では、ハツシング・フアクタは311である。
所望ならば、他のハツシング・フアクタも使用で
きる。フアイル・サブシステム・ブロツク・アド
レスは、剰余がどのようなものであつても、ブロ
ツク・ナンバー及びハツシング・フアクタの商と
して定義される。 キヤツシユ・メモリ内容のデイレクトリイ・テ
ーブルは、第1図のランダム・アクセス・メモリ
(RAM)47に維持される。デイレクトリイ・
テーブルのフオーマツトは、第2a図に示される
とおりである。 デイレクトリイ・テーブルの使用は、データ・
ブロツクをキヤツシユに配置するに当つて、オー
バヘツドを最少にするためのキー概念である。デ
イレクトリイ・テーブルはキヤツシユへの高レベ
ル・インデツクスを表わし、現在キヤツシユに何
があるか、及びそれがどこにあるかが上記インデ
ツクス中にリストされる。デイレクトリイ・テー
ブルは全時点でキヤツシユの内容を追跡し、キヤ
ツシユ内容をデイスク上のデータ・ブロツクと関
連づける。それは自由/使用インデイケータ(1
ビツト)、ホーム・インデイケータ(1ビツト)、
フアイル・サブシステム・ブロツク・アドレス
(11ビツト)、後方ポインタ(9ビツト)、前方ポ
インタ(9ビツト)、キヤツシユ・アドレス(8
ビツト)を含む。これらビツトの数は、特定のシ
ステム要件に従つて変更されてよい。 自由/使用インデイケータは、キヤツシユ中の
特定のデータ・ブロツクを指定するため、エント
リイが現在使用されているかどうかを示す。ホー
ム・インデイケータは、後に詳細に説明するよう
に、エントリイがホーム・エントリイであるかど
うかを示す。フアイル・サブシステム・ブロツ
ク・アドレス及びハツシユ・エントリイ・ナンバ
ーは、デイスク上のデータ・ブロツクを独特にア
ドレスする。キヤツシユ・アドレスは、フアイ
ル・サブシステム・ブロツク・アドレス及びハツ
シユ・エントリイ・ナンバーによつて指定された
データ・ブロツクがキヤツシユのどこに存在する
かを示す。前方がポインタ及び後方ポインタは、
エントリイを連鎖としてリンクするために使用さ
れる。 アドレスされてよいデータ・ブロツクは、単一
のハツシユ・エントリイ・ナンバーを発生する。
しかし、一般的には、複数のデータ・ブロツクが
同一のハツシユ・エントリイ・ナンバーを発生す
る。これら複数のデータ・ブロツクは、所謂「衝
突エントリイ」を発生する。衝突エントリイは、
所与のハツシユ・エントリイ・ナンバーを与える
オリジナルなデータ・ブロツクの「ホーム・エン
トリイ」に対応する。複数の衝突エントリイの間
で、特定のデータ・ブロツクを求める探索が実行
されねばならない。それは、そのデータ・ブロツ
クがキヤツシユ中にあるかどうかを決定するため
である。かくて、衝突リストの平均的長さを許容
できる範囲に維持するように、ハツシング・フア
クタを選択しなければならない。 ユーザがデイスク又はその他の記憶ユニツトか
ら読出されるデータ、又はそこへ書込まれるデー
タをリクエストしたものと仮定すると、マイクロ
プロセツサ33はハツシユ・エントリイ・ナンバ
ーを計算し、リクエストされたデータがキヤツシ
ユ・メモリ42にあるかどうかを調べるため、デ
イレクトリイ・テーブルを検査する。第3図を参
照すると、ハツシユ・エントリイ・ナンバーは探
索の開始点として使用されている。読出動作につ
いては、ハツシユ・エントリイ・ナンバーによつ
て指定されたデイレクトリイ位置において、自
由/使用インデイケータが検査され、エントリイ
が使用されたかどうかを最初に決定する。もし使
用されていなければ、リクエストされたデータは
キヤツシユに存在せず、「読出ミス」を示すため
ヒツト・フラグがリセツトされ、「自由ホーム」
が表示される。次に、リクエストされたデータは
適当なデイスクから検索され、キヤツシユ・メモ
リ中に記憶され、デイレクトリイ・テーブルのこ
のロケーシヨンでインデツクスされることができ
る。 もしエントリイが使用されていれば、ホーム・
インデイケータが検査され、エントリイ・ポイン
トがホーム・エントリイであるか衝突エントリイ
であるかが決定される。定義によれば、キヤツシ
ユ中の全てのブロツクは、衝突エントリイではな
くホーム・エントリイで、エントリイ・ポイント
を発生しなければならない。かくて、もしエント
リイ・ポイントが衝突エントリイであれば、リク
エストされたブロツクはキヤツシユにないことが
直ちに決定される。第4a図は、リクエストされ
たデータがキヤツシユにない場合を示す。もしリ
クエストされたブロツクがハツシユ・エントリ
イ・ポイント1(これは衝突エントリイCであ
る)を発生すれば、リクエストされたブロツクが
キヤツシユ中に存在しないことが直ちに決定され
得る。かくて、第4a図のエントリイ・ポイント
1については、リクエストされたブロツクはキヤ
ツシユに存在せず、読出ミスを表示するためヒツ
ト・フラグがリセツトされ、第3図に示されるよ
うに「使用ホーム」が表示される。 しかし、キヤツシユにないデータ・ブロツク
が、第4a図のハツシユ・エントリイ・ポイント
2のようなホーム・エントリイHでエントリイ・
ポイントを発生する可能性がある。この場合、ブ
ロツクがキヤツシユにあるかどうかを決定するた
め、エントリイのリンクされた連鎖を探索する必
要があある。 第3図に示されるように、先ずフアイル・サブ
システム・ブロツク・アドレス(商)がリクエス
トされたブロツクの相対的アドレスと比較され、
デイレクトリイ・テーブルのエントリイがリクエ
ストされたブロツクに対応するかどうかが決定さ
れる。それはリクエストされたブロツクではない
から、更に検査がなされ、現在のエントリイが連
鎖の終り(EOC)かどうかが決定される。連鎖
の終りではないから、ポイント2における前方ポ
インタが、エントリイの次のポイントとして使用
され、プロセスは、連鎖の終りが最後のエントリ
イの前方ポインタによつて表示されるまで繰返し
て実行される。その時点で、読出ミスを表示する
ためヒツト・フラグがリセツトされ、連鎖の終り
が表示され、ハツシユ・エントリイ・ナンバーが
連鎖の終りを示す。 もしこの反復的探索の間の任意の時点で、リク
エストされたデータ・ブロツクの位置が決定され
ると、ブロツクのキヤツシユ・アドレスが保存さ
れ、読出ヒツトを表示するため、ヒツト・フラグ
がセツトされる。第4b図は、*で示されたデイ
レクトリイ・テーブルのエントリイ地点で、リク
エストされたブロツクが存在する場合を示す。後
に第8図、第11図、第12図を参照して説明す
るように、リクエストされたブロツクがキヤツシ
ユに置かれている時、常にオリジナルのハツシ
ユ・エントリイ・ナンバーはホーム・エントリイ
Hを指定する。ハツシユ・エントリイ・ナンバー
はリクエストされたブロツクに対応するデイレク
トリイ・テーブル中のエントリイを直接に指定す
る必要はない。第4b図に示されるように、リク
エストされたブロツクは、前方ポインタをたどる
ことによつて、第2の衝突エントリイCで発見さ
れるかも知れない。 更に、RAM47には、第2b図に示されるフ
オーマツトを有するLRUテーブルが記憶されて
いる。LRUテーブルは、キヤツシユ・メモリ中
の各ページについて設けられる。LRUテーブル
にある前方ポインタは、より近時に使用されたペ
ージを指定し、最も近時に使用されたリストの前
方ポインタは最初の自由ページを指定する。同様
に、各LRUリストの後方ポインタは、使用時点
の古いページを指定する。従つて連鎖の最後のペ
ージは、最も近時性の少ない(最も使用時点が古
い)ページである。各LRUリストにあるデイレ
クトリイ・ポインタは、デイレクトリイ・テーブ
ルの311個のエントリイの特定の1個を指定する。
LRUテーブル中の最も使用時点の古い(LRU)
エントリイ、最も使用時点の新しい(MRU)エ
ントリイ、デイレクトリイ・テーブル中の最初の
自由ページを指定するため、ポインタ50,5
1,52を設けることが望ましい。更に、自由ペ
ージ・カウンタ54を設けることが望ましい。本
発明に従う装置では、新しいページをキヤツシ
ユ・メモリに書込む必要がある際に利用可能なペ
ージがない時、後に詳細に説明するように、最も
使用時点の古いページがキヤツシユ・メモリから
削除される。新しく書かれたページは、LRUテ
ーブルで最も近時に使用されたリストとなり、そ
の後方ポインタは、以前の最も近時に使用された
リストを指定し、そのデイレクトリイ・ポインタ
はデイレクトリイ・テーブル中の対応するハツシ
ユ・エントリイ・ナンバーを指定する。書込動作
の場合、「通過書込(ライトスルー)」手法が実行
される。即ちデータがキヤツシユにない時、デー
タが完全なデータ・ブロツクであれば、それはキ
ヤツシユ・メモリへ書込まれ、次いでデイスクへ
書込まれる。データが既にキヤツシユにあれば、
それは単にキヤツシユ・メモリからデイスクへ転
送され、適当なページが最も近時に使用された状
態へ更新される。しかし、書込まれるデータ・レ
コードが所定の数を超過していれば、それは直接
システムからデイスクへ転送され、キヤツシユ・
メモリ中の対応するページが削除される。もしデ
ータ・レコードがキヤツシユに現存せず、完全な
データ・ブロツクよりも少なければ、データは直
接システムからデイスクへ転送される。 基本的なデイレクトリイ管理手法を説明したの
で、これから、実施例におけるI/Oコントロー
ラの動作を説明する。 第5図はI/Oコントローラの動作を示す簡単
な流れ図である。第5図に示されるように、マイ
クロプロセツサは指令を検査し、もしその指令が
デイスクとの間のデータ転送を必要としなけれ
ば、リクエストされた動作が実行され、割込リク
エストをセツトすることによつて動作が完了され
る。デイスクのデータ転送動作がリクエストされ
たものと仮定すれば、マイクロプロセツサは、キ
ヤツシユ・メモリがシステム中に設けられている
かどうかを決定する。もし設けられていなけれ
ば、システムは、前記の米国特許第4256637号及
び第4038642号に説明されている態様と実質的に
同じように動作する。 もしデイスクのデータ転送動作がリクエストさ
れており、かつキヤツシユ・メモリが設置されて
いれば、マイクロプロセツサは、キヤツシユ・メ
モリ動作がリクエストされたかどうかを決定す
る。もしリクエストされていれば、I/Oコント
ローラ20は、後に詳細に説明するキヤツシユ・
アルゴリズムを実行する。キヤツシユ・アルゴリ
ズムは、キヤツシユ・メモリ内のデータ管理に関
連している。 キヤツシユ・アルゴリズムを実行した後で、も
し書込動作がリクエストされ、かつ「通過書込
み」が実行されるべきであれば、マイクロプロセ
ツサは、キヤツシユ・アルゴリズムの中で設定さ
れたデータ転送動作の全てを実行し、かつデイス
クへアクセスしてキヤツシユからデイスクへの転
送を実行するため、フアイル動作を発生させねば
ならない。もし「通過書込み」が実行されない
で、データが直接にデイスクへ書込まれるべきで
あれば、要求されたデータ転送動作はキヤツシ
ユ・アルゴリズムの中で設定されておらず、マイ
クロプロセツサは、ホスト・プロセツサから指定
されたデイスクへデータを書込むため、必要な動
作を設定すると共にそれを実行する。 もし書込動作ではなく、読出動作がリクエスト
されていれば、マイクロプロセツサは、バイパ
ス・フアクタを超過したかどうかを決定する。バ
イパス・フアクタの目的は、長いシーケンシヤル
参照パターンの発生を検出することである。長い
シーケンシヤル・ランは再使用性が少ないという
特性を有し、従つてこの種のデータをキヤツシ
ユ・メモリに記憶することは望ましくない。何故
ならば、それはヒツト率(即ち、キヤツシユ中で
次にリクエストされるデータを発見する確率)を
低くするからである。従つて、所定数(例えば
3072)のバイトが、単一のデータ転送リクエスト
でキヤツシユ・メモリへ入れられる最大数のデー
タ・バイトとして許される。それより多いデータ
が単一アクセスで要求されれば、シーケンシヤ
ル・ランの存在が決定され、ミスの場合でもデー
タはキヤツシユへ入ることを許されない。 もしバイパス・フアクタを超過しておらず全体
的ヒツトが生じたのであれば(即ち、リクエスト
されたデータの全てがキヤツシユ中に現存すれ
ば)、コントローラは、単にキヤツシユ・メモリ
からホスト・プロセツサへリクエストされたデー
タを転送するために必要な動作を実行する。もし
全体的ヒツトが生じていなければ、リクエストさ
れたデータはデイスクからキヤツシユ・メモリへ
転送され、キヤツシユからホスト・プロセツサへ
データを転送するため、適当な動作が実行され
る。読出動作が全体的ヒツトである場合、後に詳
細に説明するように、必要な動作はキヤツシユ・
アルゴリズム中で設定され、従つて、これら動作
を設定するステツプはバイパスすることができ
る。これに対し、キヤツシユに関連のない動作、
又は「通過書込み」でない書込動作、又はバイパ
ス・フアクタを超える読出動作のリクエストは、
マイクロプロセツサがデイスクとの間のデータ転
送に必要な動作を設定することを要する。 データ転送動作を実行した後に、後に詳細に説
明するように割込リクエストがセツトされ動作は
完了する。 ホスト・プロセツサから受取られた指令が現在
キヤツシユ・メモリに記憶されていないデータに
対するリクエストであり、従つて「読出ミス」を
生じるものと検定して、コントローラのキヤツシ
ユ・アルゴリズム動作を詳細に説明する。第5図
の流れ図に示されるように、もしキヤツシユが設
置されており、キヤツシユ動作がリクエストされ
たならば、キヤツシユ・アルゴリズムが実行され
る。キヤツシユ・アルゴリズムの流れ図が第6a
図乃至第6c図に示される。図面に示されるよう
に、マイクロプロセツサは、書込動作がリクエス
トされたかどうかを決定する。もしリクエストさ
れていなければ、通過書込フラグ及び書込動作フ
ラグがリセツトされて、読出動作が表示される。
次にマイクロプロセツサは3072個のデータ・バイ
トを超えるデータ・バイトがリクエストされたか
どうかを決定する。もしリクエストされていれ
ば、バイパス・フアクタを超過したかどうかを決
定するため、キヤツシユ状況がセツトされる。こ
こで再び注意すべきは、バイパス・フアクタは
3072バイトである必要はなく、他の適当な数であ
つてよいことである。更に、キヤツシユ・メモリ
から長いシーケンシヤル・ランを除去することが
望まれなければ、バイパス・フアクタを使用しな
くてもよい。 バイパス・フアクタを超過していなければ、デ
イスク動作レコード・カウンタ及びヒツト/ミ
ス・ブロツク・フラグがクリアされる。次にブロ
ツク・カウンタが1へセツトされ、マイクロプロ
セツサは、そのデイスクに対する相対ブロツク・
アドレス(RBA)とハツシユ・ナンバー(即ち
311)を受取る。次に、キヤツシユ状況は全体的
ヒツトへ設定される。次に、ベース・レジスタ2
を初期設定する動作が実行され、ホスト・プロセ
ツサのメイン・ストレージと通信するためキヤツ
シユが能動化され、第3図を参照して説明したよ
うにして、デイレクトリイ・テーブルの探索が実
行される。 もしリクエストされたブロツクがデイレクトリ
イ・テーブル中に発見されなければ、第3図で示
されるようにシツト・フラグがリセツトされ、そ
れによつてミスが示される。ここで注意すべき
は、第3図の動作中にセツト又はリセツトされる
ヒツト・フラグは、第6a図のキヤツシユ・アル
ゴリズムの始めにリセツトされるヒツト・ブロツ
ク・フラグ又はミス・ブロツク・フラグと区別し
なければならないことである。ヒツト・フラグ
は、現在のデータ・ブロツクがキヤツシユ中にあ
るかどうかを示すために使用され、ヒツト・ブロ
ツク・フラグ及びミス・ブロツク・フラグは、後
の説明から更に明らかになるように、ヒツト又は
ミスが生じた最初のブロツクを示すために使用さ
れる。 第6a図へ戻つて、デイレクトリイ・テーブル
を探索した後に、マイクロプロセツサは、リクエ
ストされたデータ・ブロツクが発見されたかどう
かを決定するため、ヒツト・フラグを検査する。
読出動作でデータ・ブロツクが発見されず、ヒツ
ト・フラグがリセツトされたものと仮定すると、
マイクロプロセツサは、少なくとも8個のデー
タ・レコード(1ブロツク)がデイスクからキヤ
ツシユへ転送されることを示すため、レコード・
カウンタへ8を加える。この数は単なる一例であ
つて、特定のシステム要求に応じて変更されてよ
い。次に、ミス・ブロツク・カウンタが1へセツ
トされ、1ページがキヤツシユへ加えられる。次
に、マイクロプロセツサは、デイスクからキヤツ
シユへミスのブロツクを転送するのに必要な動作
を設定し、かつキヤツシユからホスト・プロセツ
サへデータを転送するために必要な動作を設定す
る。単一のデータ・ブロツクがリクエストされ、
そのデータ・ブロツクがミスであつたとすれば、
デイスクからリクエストされたデータを転送する
ため、RBAが適当な開始点へ調節され、キヤツ
シユ状況がミスへセツトされ、プリフエツチ計算
が実行される。次に、システムは第5図に示され
るように動作する。 複数のデータ・ブロツクがリクエストされた
時、3ブロツクの「ミス・ヒツト・ミス」の状態
が3ブロツクのミスとして処理されるように、キ
ヤツシユ・アルゴリズムが実行される。何故なら
ば、2つの小さなデータ・ブロツクを2つの動作
で転送するのではなく、3つのデータ・ブロツク
を1つの動作で転送することによつて、時間が全
体として節約されるからである。「ミス・ヒツ
ト・ミス」状態の検出は、次のとおりである。第
6a図及び次の表1を参照すると、デイレクトリ
イ・テーブルの最初の探索を開始する前に、デイ
スク動作レコード・カウンタ、ヒツト・ブロツ
ク・フラグ、及びミス・ブロツク・フラグが全て
クリアされ、ブロツク・カウンタが1へセツトさ
れることが分る。デイレクトリイ・テーブルの最
初の探索は、最初にリクエストされたブロツクの
ハツシユ・エントリイ・ナンバーを使用して実行
される。上記ナンバーはそのブロツクのRBAか
ら決定される。データ・ブロツクが発見されなけ
れば、第3図に示されるデイレクトリイ探索の間
に、ヒツト・フラグがリセツトされる。探索の終
りに(第6a図参照)、マイクロプロセツサはヒ
ツト・フラグを検査し、ミスが生じたかどうかを
決定する。ミスが生じた場合、デイスクからキヤ
ツシユへ8個のレコード(1ブロツク)が転送さ
れねばならないことを示すため、レコード・カウ
ンタが8だけ増加される。この時点における状態
は、表1のT1に示されている。
はホスト・プロセツサ及び記憶階層における複数
のアタツチメント装置を含むデータ処理装置に関
する。 データ処理システムにおいて、通常、情報の記
憶及び検索のため、1つ又はそれ以上のアタツチ
メント装置(例えば、記憶デイスク)が設けられ
る。例えば、Bouknechtその他の米国特許第
4038642号では、複数のI/O装置及び関連した
I/OコントローラがI/Oインターフエイス・
バスを介してホスト・プロセツサへ共通に接続さ
れている。I/Oアタツチメント装置の各々はマ
イクロプロセツサを含み、このマイクロプロセツ
サはホスト・プロセツサと協働してメイン・スト
レージとI/O装置との間でデータ転送を実行す
る。Bouknechtその他のシステムに対する改善
は、Brownその他の米国特許第4246637号に記載
されている。この特許によれば、マイクロプロセ
ツサを含む単一のI/Oコントローラがホスト・
プロセツサへ接続され、複数のデータ記憶アタツ
チメント装置がI/Oコントローラの出力へ接続
され、単一のマイクロプロセツサが、複数のアタ
ツチメント装置との間のデータ転送を調整するこ
とができるようになつている。 これらシステムの問題点は、ホスト・プロセツ
サがアタツチメント装置からデータを要求する度
に、アタツチメント装置へアクセスしなければな
らず、時間がかかることである。例えば、
Brownその他の特許によれば、データが直接プ
ログラム制御(DPC)の下でアタツチメント・
デイスクからホスト・プロセツサへ転送される時
に、指令及びデータ・ワードはホスト・プロセツ
サのメイン・ストレージからマイクロプロセツサ
へ転送され、そこから装置データ・レジスタへ転
送される。アタツチメント・デイスクからリクエ
ストされたデータを検索し、そのデータをホス
ト・プロセツサへ与えるため、適当な調整及び制
御論理が実行される。反対方向の動作の場合(即
ち、メイン・ストレージからデイスクへの書込み
の場合)、アタツチメント記憶装置へ書込まれる
データは、装置データ・レジスタへロードされ、
このデータを所望のアタツチメント・デイスクへ
転送するため、初期接続ルーチンが実行されねば
ならない。サイクル・スチール・モードの動作で
は、指令がマイクロプロセツサへ与えられ、この
指令はマイクロプロセツサを能動化して、ホス
ト・プロセツサのメイン・ストレージからデータ
を「盗ませ」、そのデータを装置データ・レジス
タへロードせしめる。次いで、データは、実質的
にDPCモードと同じようにして、適当なアタツ
チメント・デイスクへ転送される。 システムのスピードは改善されるけれども、ホ
スト・プロセツサのために必要な情報を得るた
め、アタツチメント・デイスクへアクセスするこ
とは依然として必要である。信号処理速度は早い
けれども、読出/書込ヘツド又は記憶媒体を物理
的に動かす必要があるため制限される。即ち、デ
イスク・サブシステム中の処理速度は、デイスク
が回転し、ヘツドが適当な位置をシークするのに
必要な時間によつて制約される。 動作速度を改善するため、中央処理ユニツトに
よつて使用される可能性の高いメイン・ストレー
ジのデータの一部を小容量高速メモリへ記憶し、
CPUのデータ・リクエストの多くを上記高速メ
モリによつて迅速に満足させるようにすることが
知られている。このような手法は、例えば
Ghanemによる米国特許第4035778号に開示され
ている。Ghanemの特許は、小容量高速作業メモ
リの使用を説明すると共に、近い将来に使用され
る可能性の最も高いデータを保存するため、メモ
リ内容を常に更新することによつて、メモリ効率
を最大にする必要性を述べている。メモリ内容の
更新は、使用時点の最も古いデータ(least
recently used data)が常に置換されるLRU法、
又は複数のユーザへメモリ容量を割当てるため、
複雑な統計的アルゴリズムを使用するGhanemの
方法によつてなされる。しかし、Ghanemの特許
は、競合するプログラム間で作業メモリ・スペー
スを割当てることを教えるが、複数のデイスク
I/Oコントローラへ同一の手法を適用する示唆
はなされていない。更に、リクエストされたデー
タが現在高速作業メモリ中に記憶されているかど
うかを決定するため、データ・リクエスト識別情
報と作業メモリの全体の内容を比較することが必
要である。これは時間のかかる仕事である。更
に、作業メモリへ転送されるデータは、CPUに
よつてリクエストされたデータであるが、未だリ
クエストされていないけれども近い将来リクエス
トされる可能性のある他のデータを転送すること
によつて効率が改善されよう。 本発明の要約 本発明の目的は、パフオーマンスが改善された
キヤツシユ・メモリを提供することである。 簡単に説明すれば、上記の目的は、ホスト・プ
ロセツサによつて既にリクエストされたデータと
は異つた或る追加のデータをキヤツシユ・メモリ
へ転送することによつて達成される。データは、
アタツチメント記憶装置からキヤツシユ・メモリ
へ、固定長データ・ブロツクの増分として転送さ
れる。各データ・ブロツクは一連のデータ・レコ
ードを含む。特定のデータ・レコードがホスト・
プロセツサによつてリクエストされた時、そのレ
コードを含むデータ・ブロツクがキヤツシユ・メ
モリへ転送される。リクエストされたデータ・レ
コードのブロツク内ポジシヨンが決定され、ブロ
ツクにおけるリクエストされたレコードの相対的
位置に従つて、1つ又は2つの追加のデータ・ブ
ロツクがキヤツシユ・メモリへ転送される。追加
のデータ・ブロツクが転送される論理限界
(threshold)は変更することができ、それによつ
て、各動作でキヤツシユ・メモリへ転送されるデ
ータの平均的実効ブロツク長を変更することがで
きる。平均的実効ブロツク長は、パフオーマンス
を最も改善できるように変更することができる。
本発明の実施例において、パフオーマンス改善の
基準は、読出ヒツト率である。 実施例の説明 第1図はホスト・プロセツサ10、メイン・ス
トレージ11、装置コントロール14、鍵盤表示
端末18、I/Oコントローラ20を含む本発明
に従つたデータ処理システムを示す。装置コント
ローラ14は、少なくとも1つのアタツチメント
装置(例えばデイスク16)に接続されている。
コントローラ20は、ホスト・プロセツサ10と
デイスク16との間で適当な装置コントロール1
4を介して実行されるデータ転送を制御する。 ホスト・プロセツサ10はチヤネル・インター
フエイス・バス21を介してコントローラ20と
通信し、コントローラ20は装置インターフエイ
ス・バス22を介して装置コントロール14と通
信する。 ホスト・プロセツサ10はIBM社から市販さ
れているシリーズ/1、モデル5ミニコンピユー
タであると仮定する。このコンピユータについて
は、IBM社の出版物「シリーズ/1、モデル5、
4955プロセツサ及びプロセツサ機構の説明」
(Series/1、Model5、4955 Processor and
Processor Features Description、GA34―0021
―3)及び前記の米国特許第4038642号に説明さ
れている。更に、コントローラ20はBrownそ
の他による米国特許第4246637号に開示されたコ
ントローラを改良したものであり、マイクロプロ
セツサは米国特許第4173782号に説明されている
ものであつてよい。 第1図に示されるように、コントローラ20に
あるチヤネル・インターフエイス・バス21はチ
ヤネル・データ・バス23及びチヤネル制御バス
24を含む。同様に、装置インターフエイス・バ
ス22は装置データ・バス25と装置制御バス2
6を含む。自動高速サイクル・スチール動作を実
行するため、データ・バス23及び25は、サイ
クル・スチール・データ・レジスタ30、バイパ
ス・データ・バス31、装置データ・レジスタ3
2によつて相互接続される。バス23,25,3
1の各々は、2つの方向へデータを転送する双方
向バス又は一対の単方向バスであつてよい。 非自動サイクル・スチール動作のためには、デ
ータ及びその他の情報は、チヤネル・データ・バ
ス23、サイクル・スチール・データ・レジスタ
30、マイクロプロセツサ・データ・バス(デー
タ・バス・イン・バス34及びデータ・バス・ア
ウト・バス35を含む)を介して、ホスト・プロ
セツサとマイクロプロセツサ33との間で転送さ
れる。同様に、データ及びその他の情報は、装置
データ・バス25、装置データ・レジスタ32、
バス34及び35を介して、マイクロプロセツサ
33と装置コントロール14との間で、いずれの
方向へ対しても転送されることができる。 チヤネル制御バス24及び装置制御バス26の
各々は、高速コントロール36の制御の下で、初
期接続(調整及び制御)論理37及び38を介し
て、マイクロプロセツサ33と通信する。マイク
ロプロセツサ33は、バス34及び35を介して
高速コントロール36と通信する。ホスト・プロ
セツサ10から与えられたサイクル・スチール開
始指令に応答して、マイクロプロセツサ33は、
各種の初期パラメータ値を高速コントロール36
へ与える。その後、高速コントロール36は、マ
イクロプロセツサ33から介入を受けることな
く、データ転送動作を自動的に制御することがで
きる。換言すれば、自動サイクル・スチール動作
の場合、マイクロプロセツサ33は高速コントロ
ールの初期値を設定し、その後、高速コントロー
ルは、実際のデータ転送動作を引継いでそれを実
行する。この動作は、線39及び40を介して、
レジスタ・ロード・パルスをサイクル・スチー
ル・データ・レジスタ30及び装置データ・レジ
スタ32へ与えることを含む。線39上のロー
ド・パルスは、データをレジスタ32からレジス
タ30へバイパス・データ・バス31を介して転
送し、線40上のロード・パルスはデータを反対
方向に転送する。高速コントロール36によつて
与えられる自動的制御は、ホスト・プロセツサ1
0とレジスタ30との間でデータを転送するた
め、初期接続論理37を介してチヤネル制御バス
24上で適当な初期接続シーケンスを実行するこ
とを含み、かつレジスタ32と装置コントロール
14との間でデータを転送するため、初期接続論
理38を介して装置制御バス26上で適当な初期
接続シーケンスを実行することを含む。 コントローラ20はキヤツシユ・メモリ42と
キヤツシユ・データ・レジスタ44を含む。他の
データ・レジスタと同じように、レジスタ44は
バス34及び35を介してマイクロプロセツサ3
3へ接続され、線45を介して高速コントロール
36からロード・パルスを受取る。更に、レジス
タ44はバス31を介してレジスタ30及び32
へ接続される。データがホスト・プロセツサ10
によつてリクエストされた時、マイクロプロセツ
サ33は、先ずリクエストされたデータが現在キ
ヤツシユ・メモリ42に存在するかどうかを決定
する。もし存在すれば(即ち、読出ヒツトの場
合)、リクエストされたデータはバス46、レジ
スタ44、バス31、レジスタ30及びバス23
を介してホスト・プロセツサ10へ転送される。
もしリクエストされたデータの全て又は或るもの
がキヤツシユ・メモリ42に含まれない場合(読
出ミスの場合)、データは、通常の態様でアタツ
チメント装置から得られ、かつバス31、レジス
タ44、バス46を介してキヤツシユ・メモリ4
2へ転送される。後に詳細に説明するように、ホ
スト・プロセツサ10によつてリクエストされた
データ以外の追加のデータをプリフエツチし、そ
れが間もなくホスト・プロセツサによつてリクエ
ストされるだろうという予想の下で、そのデータ
をキヤツシユ・メモリに記憶することが望まれ
る。リクエストされたデータは、バス46、レジ
スタ44、バス31、レジスタ30、バス23を
介してキヤツシユ・メモリ42からホスト・プロ
セツサ10へ転送される。 ホスト・プロセツサ10が特定のデータ・ブロ
ツクについて動作を終了した後、新しいデータを
元のアタツチメント装置の記憶ロケーシヨンへ書
込むことを望むかも知れない。その場合、マイク
ロプロセツサ33は、アタツチメント装置のロケ
ーシヨンの内容が現在キヤツシユ・メモリ42に
記憶されているかどうかを決定する。もし記憶さ
れていれば、書込ヒツトの状態が起る。その場
合、このデータはキヤツシユ・メモリ42で更新
されねばならない。何故ならば、それは今や変更
されているからである。アドレスされたアタツチ
メント装置のロケーシヨンの内容が現在キヤツシ
ユ・メモリ42の中にない場合、データ・ブロツ
クの全体が書込まれるのであれば、新しいデータ
がキヤツシユ中に書込まれ、続いてキヤツシユか
らデイスク16へ書込まれ、そうでなければ、デ
ータは直接にデイスク16へ書込まれる。 キヤツシユ・メモリ管理の望ましい手法をこれ
から説明する。デイスク、キヤツシユ、及びデイ
レクトリイのスペースを有効に使用する重要な要
件は、固定ブロツク動作を実行することである。
そのような設計思想において、全てのデイスク・
アドレスは、開始デイスク・アドレス及び終了デ
イスク・アドレスの固定境界内に入るものと考え
られる。デイスク上に記憶された各レコードは、
デイスク駆動装置番号、ヘツド番号、シリンダ番
号、及びレコード/セクタ位置によつて決定され
た独特の相対ブロツク・アドレス(RBA)を有
する。RBAは高レベル・ブロツキング構造内に
置かれている。かくて、本発明のシステムにおい
て、各レコードは次式によつて与えられる独特に
関連づけられたRBAを有する。 RBA=k1(シリンダ番号)+k2(ヘツド番号) +レコード番号+k3(駆動装置番号) ここでk1、k2、k3はデイスク駆動装置の設計仕
様から決定される定数である。後に詳細に説明す
るキヤツシユ・メモリ管理のためには、ブロツキ
ング構造は、RBAをレコードで表わされた固定
ブロツク長で除算することによつて達成される。 ブロツク・ナンバー=RBA/ブロツク長 ここでブロツク長はシステム設計のパラメータ
である。以下の説明で、データの1つのレコード
は256バイトを含み、1ブロツクは8レコードを
含み、1ページは1ブロツク(2.048バイト)を
含み、全体のキヤツシユ容量は192ページである
と仮定する。しかし、他のメモリ構成も可能であ
る。 8のブロツク長を使用すれば、後に示すテーブ
ルは、最初の26個のRBAが最初の4個のブロツ
クに関してどのように位置しているかを示す。 この管理手法を用いれば、各情報レコードのア
ドレスは、指定されたブロツクに関してブロツ
ク・ナンバー及びレコード・アドレスによつて指
定されてよい。1つのブロツクには8個のレコー
ドが存在するので、レコードのブロツク・ナンバ
ーは、RBAを8で除算することによつて決定さ
れる。ハツシングは、基本番号であるハツシン
グ・フアクタによつてブロツク・ナンバーを除算
し、その剰余をデイレクトリイ・テーブルへのエ
ントリイ・ポイント(ハツシユ・エントリイ・ナ
ンバー)として使用することにより達成される。
実施例では、ハツシング・フアクタは311である。
所望ならば、他のハツシング・フアクタも使用で
きる。フアイル・サブシステム・ブロツク・アド
レスは、剰余がどのようなものであつても、ブロ
ツク・ナンバー及びハツシング・フアクタの商と
して定義される。 キヤツシユ・メモリ内容のデイレクトリイ・テ
ーブルは、第1図のランダム・アクセス・メモリ
(RAM)47に維持される。デイレクトリイ・
テーブルのフオーマツトは、第2a図に示される
とおりである。 デイレクトリイ・テーブルの使用は、データ・
ブロツクをキヤツシユに配置するに当つて、オー
バヘツドを最少にするためのキー概念である。デ
イレクトリイ・テーブルはキヤツシユへの高レベ
ル・インデツクスを表わし、現在キヤツシユに何
があるか、及びそれがどこにあるかが上記インデ
ツクス中にリストされる。デイレクトリイ・テー
ブルは全時点でキヤツシユの内容を追跡し、キヤ
ツシユ内容をデイスク上のデータ・ブロツクと関
連づける。それは自由/使用インデイケータ(1
ビツト)、ホーム・インデイケータ(1ビツト)、
フアイル・サブシステム・ブロツク・アドレス
(11ビツト)、後方ポインタ(9ビツト)、前方ポ
インタ(9ビツト)、キヤツシユ・アドレス(8
ビツト)を含む。これらビツトの数は、特定のシ
ステム要件に従つて変更されてよい。 自由/使用インデイケータは、キヤツシユ中の
特定のデータ・ブロツクを指定するため、エント
リイが現在使用されているかどうかを示す。ホー
ム・インデイケータは、後に詳細に説明するよう
に、エントリイがホーム・エントリイであるかど
うかを示す。フアイル・サブシステム・ブロツ
ク・アドレス及びハツシユ・エントリイ・ナンバ
ーは、デイスク上のデータ・ブロツクを独特にア
ドレスする。キヤツシユ・アドレスは、フアイ
ル・サブシステム・ブロツク・アドレス及びハツ
シユ・エントリイ・ナンバーによつて指定された
データ・ブロツクがキヤツシユのどこに存在する
かを示す。前方がポインタ及び後方ポインタは、
エントリイを連鎖としてリンクするために使用さ
れる。 アドレスされてよいデータ・ブロツクは、単一
のハツシユ・エントリイ・ナンバーを発生する。
しかし、一般的には、複数のデータ・ブロツクが
同一のハツシユ・エントリイ・ナンバーを発生す
る。これら複数のデータ・ブロツクは、所謂「衝
突エントリイ」を発生する。衝突エントリイは、
所与のハツシユ・エントリイ・ナンバーを与える
オリジナルなデータ・ブロツクの「ホーム・エン
トリイ」に対応する。複数の衝突エントリイの間
で、特定のデータ・ブロツクを求める探索が実行
されねばならない。それは、そのデータ・ブロツ
クがキヤツシユ中にあるかどうかを決定するため
である。かくて、衝突リストの平均的長さを許容
できる範囲に維持するように、ハツシング・フア
クタを選択しなければならない。 ユーザがデイスク又はその他の記憶ユニツトか
ら読出されるデータ、又はそこへ書込まれるデー
タをリクエストしたものと仮定すると、マイクロ
プロセツサ33はハツシユ・エントリイ・ナンバ
ーを計算し、リクエストされたデータがキヤツシ
ユ・メモリ42にあるかどうかを調べるため、デ
イレクトリイ・テーブルを検査する。第3図を参
照すると、ハツシユ・エントリイ・ナンバーは探
索の開始点として使用されている。読出動作につ
いては、ハツシユ・エントリイ・ナンバーによつ
て指定されたデイレクトリイ位置において、自
由/使用インデイケータが検査され、エントリイ
が使用されたかどうかを最初に決定する。もし使
用されていなければ、リクエストされたデータは
キヤツシユに存在せず、「読出ミス」を示すため
ヒツト・フラグがリセツトされ、「自由ホーム」
が表示される。次に、リクエストされたデータは
適当なデイスクから検索され、キヤツシユ・メモ
リ中に記憶され、デイレクトリイ・テーブルのこ
のロケーシヨンでインデツクスされることができ
る。 もしエントリイが使用されていれば、ホーム・
インデイケータが検査され、エントリイ・ポイン
トがホーム・エントリイであるか衝突エントリイ
であるかが決定される。定義によれば、キヤツシ
ユ中の全てのブロツクは、衝突エントリイではな
くホーム・エントリイで、エントリイ・ポイント
を発生しなければならない。かくて、もしエント
リイ・ポイントが衝突エントリイであれば、リク
エストされたブロツクはキヤツシユにないことが
直ちに決定される。第4a図は、リクエストされ
たデータがキヤツシユにない場合を示す。もしリ
クエストされたブロツクがハツシユ・エントリ
イ・ポイント1(これは衝突エントリイCであ
る)を発生すれば、リクエストされたブロツクが
キヤツシユ中に存在しないことが直ちに決定され
得る。かくて、第4a図のエントリイ・ポイント
1については、リクエストされたブロツクはキヤ
ツシユに存在せず、読出ミスを表示するためヒツ
ト・フラグがリセツトされ、第3図に示されるよ
うに「使用ホーム」が表示される。 しかし、キヤツシユにないデータ・ブロツク
が、第4a図のハツシユ・エントリイ・ポイント
2のようなホーム・エントリイHでエントリイ・
ポイントを発生する可能性がある。この場合、ブ
ロツクがキヤツシユにあるかどうかを決定するた
め、エントリイのリンクされた連鎖を探索する必
要があある。 第3図に示されるように、先ずフアイル・サブ
システム・ブロツク・アドレス(商)がリクエス
トされたブロツクの相対的アドレスと比較され、
デイレクトリイ・テーブルのエントリイがリクエ
ストされたブロツクに対応するかどうかが決定さ
れる。それはリクエストされたブロツクではない
から、更に検査がなされ、現在のエントリイが連
鎖の終り(EOC)かどうかが決定される。連鎖
の終りではないから、ポイント2における前方ポ
インタが、エントリイの次のポイントとして使用
され、プロセスは、連鎖の終りが最後のエントリ
イの前方ポインタによつて表示されるまで繰返し
て実行される。その時点で、読出ミスを表示する
ためヒツト・フラグがリセツトされ、連鎖の終り
が表示され、ハツシユ・エントリイ・ナンバーが
連鎖の終りを示す。 もしこの反復的探索の間の任意の時点で、リク
エストされたデータ・ブロツクの位置が決定され
ると、ブロツクのキヤツシユ・アドレスが保存さ
れ、読出ヒツトを表示するため、ヒツト・フラグ
がセツトされる。第4b図は、*で示されたデイ
レクトリイ・テーブルのエントリイ地点で、リク
エストされたブロツクが存在する場合を示す。後
に第8図、第11図、第12図を参照して説明す
るように、リクエストされたブロツクがキヤツシ
ユに置かれている時、常にオリジナルのハツシ
ユ・エントリイ・ナンバーはホーム・エントリイ
Hを指定する。ハツシユ・エントリイ・ナンバー
はリクエストされたブロツクに対応するデイレク
トリイ・テーブル中のエントリイを直接に指定す
る必要はない。第4b図に示されるように、リク
エストされたブロツクは、前方ポインタをたどる
ことによつて、第2の衝突エントリイCで発見さ
れるかも知れない。 更に、RAM47には、第2b図に示されるフ
オーマツトを有するLRUテーブルが記憶されて
いる。LRUテーブルは、キヤツシユ・メモリ中
の各ページについて設けられる。LRUテーブル
にある前方ポインタは、より近時に使用されたペ
ージを指定し、最も近時に使用されたリストの前
方ポインタは最初の自由ページを指定する。同様
に、各LRUリストの後方ポインタは、使用時点
の古いページを指定する。従つて連鎖の最後のペ
ージは、最も近時性の少ない(最も使用時点が古
い)ページである。各LRUリストにあるデイレ
クトリイ・ポインタは、デイレクトリイ・テーブ
ルの311個のエントリイの特定の1個を指定する。
LRUテーブル中の最も使用時点の古い(LRU)
エントリイ、最も使用時点の新しい(MRU)エ
ントリイ、デイレクトリイ・テーブル中の最初の
自由ページを指定するため、ポインタ50,5
1,52を設けることが望ましい。更に、自由ペ
ージ・カウンタ54を設けることが望ましい。本
発明に従う装置では、新しいページをキヤツシ
ユ・メモリに書込む必要がある際に利用可能なペ
ージがない時、後に詳細に説明するように、最も
使用時点の古いページがキヤツシユ・メモリから
削除される。新しく書かれたページは、LRUテ
ーブルで最も近時に使用されたリストとなり、そ
の後方ポインタは、以前の最も近時に使用された
リストを指定し、そのデイレクトリイ・ポインタ
はデイレクトリイ・テーブル中の対応するハツシ
ユ・エントリイ・ナンバーを指定する。書込動作
の場合、「通過書込(ライトスルー)」手法が実行
される。即ちデータがキヤツシユにない時、デー
タが完全なデータ・ブロツクであれば、それはキ
ヤツシユ・メモリへ書込まれ、次いでデイスクへ
書込まれる。データが既にキヤツシユにあれば、
それは単にキヤツシユ・メモリからデイスクへ転
送され、適当なページが最も近時に使用された状
態へ更新される。しかし、書込まれるデータ・レ
コードが所定の数を超過していれば、それは直接
システムからデイスクへ転送され、キヤツシユ・
メモリ中の対応するページが削除される。もしデ
ータ・レコードがキヤツシユに現存せず、完全な
データ・ブロツクよりも少なければ、データは直
接システムからデイスクへ転送される。 基本的なデイレクトリイ管理手法を説明したの
で、これから、実施例におけるI/Oコントロー
ラの動作を説明する。 第5図はI/Oコントローラの動作を示す簡単
な流れ図である。第5図に示されるように、マイ
クロプロセツサは指令を検査し、もしその指令が
デイスクとの間のデータ転送を必要としなけれ
ば、リクエストされた動作が実行され、割込リク
エストをセツトすることによつて動作が完了され
る。デイスクのデータ転送動作がリクエストされ
たものと仮定すれば、マイクロプロセツサは、キ
ヤツシユ・メモリがシステム中に設けられている
かどうかを決定する。もし設けられていなけれ
ば、システムは、前記の米国特許第4256637号及
び第4038642号に説明されている態様と実質的に
同じように動作する。 もしデイスクのデータ転送動作がリクエストさ
れており、かつキヤツシユ・メモリが設置されて
いれば、マイクロプロセツサは、キヤツシユ・メ
モリ動作がリクエストされたかどうかを決定す
る。もしリクエストされていれば、I/Oコント
ローラ20は、後に詳細に説明するキヤツシユ・
アルゴリズムを実行する。キヤツシユ・アルゴリ
ズムは、キヤツシユ・メモリ内のデータ管理に関
連している。 キヤツシユ・アルゴリズムを実行した後で、も
し書込動作がリクエストされ、かつ「通過書込
み」が実行されるべきであれば、マイクロプロセ
ツサは、キヤツシユ・アルゴリズムの中で設定さ
れたデータ転送動作の全てを実行し、かつデイス
クへアクセスしてキヤツシユからデイスクへの転
送を実行するため、フアイル動作を発生させねば
ならない。もし「通過書込み」が実行されない
で、データが直接にデイスクへ書込まれるべきで
あれば、要求されたデータ転送動作はキヤツシ
ユ・アルゴリズムの中で設定されておらず、マイ
クロプロセツサは、ホスト・プロセツサから指定
されたデイスクへデータを書込むため、必要な動
作を設定すると共にそれを実行する。 もし書込動作ではなく、読出動作がリクエスト
されていれば、マイクロプロセツサは、バイパ
ス・フアクタを超過したかどうかを決定する。バ
イパス・フアクタの目的は、長いシーケンシヤル
参照パターンの発生を検出することである。長い
シーケンシヤル・ランは再使用性が少ないという
特性を有し、従つてこの種のデータをキヤツシ
ユ・メモリに記憶することは望ましくない。何故
ならば、それはヒツト率(即ち、キヤツシユ中で
次にリクエストされるデータを発見する確率)を
低くするからである。従つて、所定数(例えば
3072)のバイトが、単一のデータ転送リクエスト
でキヤツシユ・メモリへ入れられる最大数のデー
タ・バイトとして許される。それより多いデータ
が単一アクセスで要求されれば、シーケンシヤ
ル・ランの存在が決定され、ミスの場合でもデー
タはキヤツシユへ入ることを許されない。 もしバイパス・フアクタを超過しておらず全体
的ヒツトが生じたのであれば(即ち、リクエスト
されたデータの全てがキヤツシユ中に現存すれ
ば)、コントローラは、単にキヤツシユ・メモリ
からホスト・プロセツサへリクエストされたデー
タを転送するために必要な動作を実行する。もし
全体的ヒツトが生じていなければ、リクエストさ
れたデータはデイスクからキヤツシユ・メモリへ
転送され、キヤツシユからホスト・プロセツサへ
データを転送するため、適当な動作が実行され
る。読出動作が全体的ヒツトである場合、後に詳
細に説明するように、必要な動作はキヤツシユ・
アルゴリズム中で設定され、従つて、これら動作
を設定するステツプはバイパスすることができ
る。これに対し、キヤツシユに関連のない動作、
又は「通過書込み」でない書込動作、又はバイパ
ス・フアクタを超える読出動作のリクエストは、
マイクロプロセツサがデイスクとの間のデータ転
送に必要な動作を設定することを要する。 データ転送動作を実行した後に、後に詳細に説
明するように割込リクエストがセツトされ動作は
完了する。 ホスト・プロセツサから受取られた指令が現在
キヤツシユ・メモリに記憶されていないデータに
対するリクエストであり、従つて「読出ミス」を
生じるものと検定して、コントローラのキヤツシ
ユ・アルゴリズム動作を詳細に説明する。第5図
の流れ図に示されるように、もしキヤツシユが設
置されており、キヤツシユ動作がリクエストされ
たならば、キヤツシユ・アルゴリズムが実行され
る。キヤツシユ・アルゴリズムの流れ図が第6a
図乃至第6c図に示される。図面に示されるよう
に、マイクロプロセツサは、書込動作がリクエス
トされたかどうかを決定する。もしリクエストさ
れていなければ、通過書込フラグ及び書込動作フ
ラグがリセツトされて、読出動作が表示される。
次にマイクロプロセツサは3072個のデータ・バイ
トを超えるデータ・バイトがリクエストされたか
どうかを決定する。もしリクエストされていれ
ば、バイパス・フアクタを超過したかどうかを決
定するため、キヤツシユ状況がセツトされる。こ
こで再び注意すべきは、バイパス・フアクタは
3072バイトである必要はなく、他の適当な数であ
つてよいことである。更に、キヤツシユ・メモリ
から長いシーケンシヤル・ランを除去することが
望まれなければ、バイパス・フアクタを使用しな
くてもよい。 バイパス・フアクタを超過していなければ、デ
イスク動作レコード・カウンタ及びヒツト/ミ
ス・ブロツク・フラグがクリアされる。次にブロ
ツク・カウンタが1へセツトされ、マイクロプロ
セツサは、そのデイスクに対する相対ブロツク・
アドレス(RBA)とハツシユ・ナンバー(即ち
311)を受取る。次に、キヤツシユ状況は全体的
ヒツトへ設定される。次に、ベース・レジスタ2
を初期設定する動作が実行され、ホスト・プロセ
ツサのメイン・ストレージと通信するためキヤツ
シユが能動化され、第3図を参照して説明したよ
うにして、デイレクトリイ・テーブルの探索が実
行される。 もしリクエストされたブロツクがデイレクトリ
イ・テーブル中に発見されなければ、第3図で示
されるようにシツト・フラグがリセツトされ、そ
れによつてミスが示される。ここで注意すべき
は、第3図の動作中にセツト又はリセツトされる
ヒツト・フラグは、第6a図のキヤツシユ・アル
ゴリズムの始めにリセツトされるヒツト・ブロツ
ク・フラグ又はミス・ブロツク・フラグと区別し
なければならないことである。ヒツト・フラグ
は、現在のデータ・ブロツクがキヤツシユ中にあ
るかどうかを示すために使用され、ヒツト・ブロ
ツク・フラグ及びミス・ブロツク・フラグは、後
の説明から更に明らかになるように、ヒツト又は
ミスが生じた最初のブロツクを示すために使用さ
れる。 第6a図へ戻つて、デイレクトリイ・テーブル
を探索した後に、マイクロプロセツサは、リクエ
ストされたデータ・ブロツクが発見されたかどう
かを決定するため、ヒツト・フラグを検査する。
読出動作でデータ・ブロツクが発見されず、ヒツ
ト・フラグがリセツトされたものと仮定すると、
マイクロプロセツサは、少なくとも8個のデー
タ・レコード(1ブロツク)がデイスクからキヤ
ツシユへ転送されることを示すため、レコード・
カウンタへ8を加える。この数は単なる一例であ
つて、特定のシステム要求に応じて変更されてよ
い。次に、ミス・ブロツク・カウンタが1へセツ
トされ、1ページがキヤツシユへ加えられる。次
に、マイクロプロセツサは、デイスクからキヤツ
シユへミスのブロツクを転送するのに必要な動作
を設定し、かつキヤツシユからホスト・プロセツ
サへデータを転送するために必要な動作を設定す
る。単一のデータ・ブロツクがリクエストされ、
そのデータ・ブロツクがミスであつたとすれば、
デイスクからリクエストされたデータを転送する
ため、RBAが適当な開始点へ調節され、キヤツ
シユ状況がミスへセツトされ、プリフエツチ計算
が実行される。次に、システムは第5図に示され
るように動作する。 複数のデータ・ブロツクがリクエストされた
時、3ブロツクの「ミス・ヒツト・ミス」の状態
が3ブロツクのミスとして処理されるように、キ
ヤツシユ・アルゴリズムが実行される。何故なら
ば、2つの小さなデータ・ブロツクを2つの動作
で転送するのではなく、3つのデータ・ブロツク
を1つの動作で転送することによつて、時間が全
体として節約されるからである。「ミス・ヒツ
ト・ミス」状態の検出は、次のとおりである。第
6a図及び次の表1を参照すると、デイレクトリ
イ・テーブルの最初の探索を開始する前に、デイ
スク動作レコード・カウンタ、ヒツト・ブロツ
ク・フラグ、及びミス・ブロツク・フラグが全て
クリアされ、ブロツク・カウンタが1へセツトさ
れることが分る。デイレクトリイ・テーブルの最
初の探索は、最初にリクエストされたブロツクの
ハツシユ・エントリイ・ナンバーを使用して実行
される。上記ナンバーはそのブロツクのRBAか
ら決定される。データ・ブロツクが発見されなけ
れば、第3図に示されるデイレクトリイ探索の間
に、ヒツト・フラグがリセツトされる。探索の終
りに(第6a図参照)、マイクロプロセツサはヒ
ツト・フラグを検査し、ミスが生じたかどうかを
決定する。ミスが生じた場合、デイスクからキヤ
ツシユへ8個のレコード(1ブロツク)が転送さ
れねばならないことを示すため、レコード・カウ
ンタが8だけ増加される。この時点における状態
は、表1のT1に示されている。
【表】
第6a図の52に示される判定動作において、
マイクロプロセツサは、「ミス・ヒツト・ミス」
状態が生じたかどうかを決定するため、ヒツト・
ブロツク・フラグ及びミス・ブロツク・フラグを
検査する。そのような状態が生じていない場合、
マイクロプロセツサは、前にミスがあつたかどう
かを決定するため、ヒツト・ブロツク・フラグ及
びミス・ブロツク・フラグを検査する。データ・
ブロツクはリクエストされた最初のデータ・ブロ
ツクであるから、「答」はノーであり、ミス・ブ
ロツク・フラグは、ブロツク・カウンタの値に等
しくセツトされる。この状態は表1のT2で示さ
れる。ここで注意すべきは、ミス・ブロツク・フ
ラグが最初のミスが生じたブロツク・ナンバーを
示すことである。第6b図に示すように、マイク
ロプロセツサはページをキヤツシユへ付加し、ミ
スのデータ・ブロツクの転送に必要なデイスクか
らキヤツシユへ、及びキヤツシユからホスト・プ
ロセツサへの動作(第6c図)を設定する。 全てのリクエストされたブロツクが検査された
わけではないから、ブロツク・カウンタが1だけ
増加され、第2のデータ・ブロツクが計算され
る。次に、マイクロプロセツサはデイレクトリイ
探索の直前のキヤツシユ・アルゴリズム地点へ戻
り、第3図のデイレクトリイ探索が第2のデー
タ・ブロツクについて繰返される。この時点のカ
ウンタ及びフラグの状態は表1のT3に示される。 次にデイレクトリイ・テーブルが第2のデー
タ・ブロツクを求めて探索される。もしそれが発
見されると、ヒツト・フラグがセツトされ、第3
図に示されるように、この第2ブロツクのキヤツ
シユ・アドレスが保存される。ここで再び第6a
図を参照すると、マイクロプロセツサはヒツト・
フラグを検査し、第2のデータ・ブロツクが第2
の探索中に発見されたことを知る。次にマイクロ
プロセツサは、第6b図に示されるアルゴリズム
の通路Aへブランチする。この第2のデータ・ブ
ロツクが今や最も近時に使用されたブロツクであ
ることを示すため、LRUテーブルが更新される。
先行するヒツトはないから、ヒツト・ブロツク・
フラグはブロツク・カウンタの現在の値(カウン
ト2)へセツトされる。この時点における状態は
表1のT4に示される。ミス・ブロツク・フラグ
及びヒツト・ブロツク・フラグは、それぞれ最初
のミス及び最初のヒツトのブロツク・ナンバーを
表示する。第6c図に示されるように、次にマイ
クロプロセツサは、第2のデータ・ブロツクのた
めに、必要なキヤツシユからホスト・プロセツサ
への動作を設定する。 依然として、全てのリクエストされたデータ・
ブロツクが検査されたわけではないから、ブロツ
ク・カウンタが再び1だけ増加され、第3のデー
タ・ブロツクのブロツク・ナンバー及びハツシ
ユ・エントリイ・ナンバーが計算され、マイクロ
プロセツサは、デイレクトリイ探索の直前のアル
ゴリズム地点へ戻る。この時点における状態は、
表1のT5で示される。次にデイレクトリイ・テ
ーブルが第3図に示された手順に従つて探索され
る。リクエストされた第3のデータ・ブロツクは
発見されないものと仮定すると、ヒツト・フラグ
がリセツトされ、読出ミスを表示する。デイレク
トリイ探索動作の終りに、マイクロプロセツサは
ヒツト・フラグを検査し、リクエストされた第3
のデータ・ブロツクが発見されたかどうかを決定
する。もしそれが発見されたのであれば、マイク
ロプロセツサは第6b図に示される通路Aをたど
り、リクエストされた第3のデータ・ブロツクを
LRUテーブル中で最も近時に使用されたブロツ
クとする。前にヒツトが生じたので、ブロツク・
ヒツト・フラグのセツトはスキツプされ、キヤツ
シユからホストへのプロセツサ動作が第3のデー
タ・ブロツクのために設定される。 第3のデータ・ブロツクがデイレクトリイ探索
で発見されないものと仮定すると、8の値が再び
レコード・カウンタへ加えられ、第6a図におけ
る判定動作52の直前には、カウンタ及びフラグ
状態は、表1のT6で示されるようになる。マイ
クロプロセツサはブロツク・ヒツト・フラグ及び
ブロツク・ミス・フラグを検査し、最初のブロツ
クがミスであり、第2のブロツクがヒツトである
ことが分るので、「ミス・ヒツト・ミス」の状態
となり、第6b図の通路Cがとられる。デイスク
からキヤツシユへ第2ブロツクを転送するのに必
要な動作が設定され、レコード・カウンタへ8が
加えられて、このデータ転送を示す。ミスのデー
タ・ブロツクに対処するため、ページがキヤツシ
ユへ加えられ、キヤツシユ・アルゴリズムが前の
ように実行される。第2のデータ・ブロツクは単
に再び書かれるだけであるから、それについては
ページはキヤツシユへ加えられないことに注意さ
れたい。第6b図の動作53は、ミスのデータ・
ブロツクについてページがキヤツシユへ加えられ
るキヤツシユ・アルゴリズムの部分を示す。これ
について第7図を参照して詳細に説明する。先
ず、キヤツシユ・メモリ中に残つている自由ペー
ジの数が計数される。これは、例えば、第2A図
の自由ページ・カウンタ54をポーリングする
か、デイレクトリイ・ポインタ欄にエントリイを
有しないLRUテーブルのリストの数を計数する
ことによつてなされる。もし現在利用できる自由
ページが存在しなければ、LRUテーブルから決
定された最も使用時点の古いページがキヤツシユ
から削除される。次に、加えられようとしている
ブロツクに対応するハツシユ・エントリイ・ナン
バーが既に使用されたかどうかを決定するため、
デイレクトリイ・テーブルが検査される。これ
は、第2a図のデイレクトリイ・テーブルの最初
の欄にある自由/使用インデイケータを検査する
ことによつて、容易に決定される。もしそのエン
トリイが既に使用されているものでなければ、第
8図に示すようにして、現在のハツシユ・ナンバ
ーを使用して、ページがキヤツシユへ加えられ
る。自由ページ・カウンタが1だけ減少され、使
用時の最も新しいエントリイの前方がポインタ
(これは最初の自由ページを指定する)が検査さ
れて、新しいデータ・ブロツクがどこに記憶され
るかを決定する。次に、第2b図のMRUポインタ
51が、この新しいページの値へセツトされ、新
しいページ・リストのデイレクトリイ・ポインタ
が現在のハツシユ・エントリイ・ナンバーの値へ
セツトされる。次にマイクロプロセツサは、現在
のハツシユ・エントリイ・ナンバーによつて指定
されるデイレクトリイ・エントリイへ行き、自
由/使用インデイケータを「使用」状態へセツト
し、ホーム・インデイケータを「ホーム」状態へ
セツトし、次いで新しいブロツクのサブシステ
ム・ブロツク・アドレスを入れる。次に、新しい
エントリイの前方ポインタが連鎖の終りを示すた
めにセツトされ、新しいデータ・ブロツクが記憶
されるキヤツシユ・アドレスを入れる。 第8図の動作54及び55は、適当な「自由連
鎖」(即ち、自由ページの連鎖)を維持するため
に必要である。デイレクトリイ・テーブル中の自
由エントリイ(即ち、使用されていないエントリ
イ)は、その前方及び後方ポインタによつて連鎖
として配列されている。そして、今やこの連鎖中
のエントリイの1つ(即ち、現在のハツシユ・エ
ントリイ・ナンバーに対応するエントリイを使用
することが望まれる。かくて、第9a図に示され
るように、いくつかのエントリイが相互に連鎖さ
れており、エントリイ56を使用することが望ま
れるものとする。これは自由連鎖を破るので、新
しく使用されたエントリイ56の周囲で連鎖を再
び経路づけることが必要である。エントリイ56
を使用する前は、エントリイ56の後方ポインタ
は前の自由エントリイ57を指定し、エントリイ
56の前方ポインタは次の自由エントリイ58を
指定する。連鎖を再び経路づける場合、マイクロ
プロセツサはエントリイ57を指定するエントリ
イ56の後方ポインタをたどり、エントリイ57
の前方ポインタをエントリイ56の前方ポインタ
と置換する。それによつて、エントリイ57の前
方ポインタは今やエントリイ58を指定する。次
にプロセツサは、エントリイ58を指定するエン
トリイ56の前方ポインタをたどり、エントリイ
58の後方ポインタをエントリイ56の後方ポイ
ンタと置換する。従つて、エントリイ58の後方
ポインタは、今やエントリイ57を指定する。結
果として生じた新しい自由連鎖は第9b図に示さ
れるが、そこではエントリイ56が連鎖から除去
されている。 ステツプ54及び55で自由連鎖を再配列した後
に、マイクロプロセツサは、新しいエントリイが
最初の自由エントリイであつたかどうかを決定す
る。例えば、第9a図において、最初の自由エン
トリイはエントリイ57である。この場合、マイ
クロプロセツサは第6b図のキヤツシユ・アルゴ
リズムへ戻る。しかし、衝突リストを管理するた
め、第2a図の自由ポインタ52が自由連鎖中の
最初の自由エントリイを正しく指定することが大
切である。もし新しく加えられたデータ・ブロツ
クが連鎖中の最初の自由エントリイ(即ち、エン
トリイ57)を使用するならば、新しい最初の自
由エントリイはエントリイ56である。エントリ
イ56はエントリイ57の前方ポインタによつて
指定された。従つて、自由ポインタ52は、そこ
に含まれる値をエントリイ57の前方ポインタへ
変更されることによつて更新される。ここで注意
すべきは、もし捕捉されたエントリイが最初の自
由エントリイであれば、このエントリイは自由連
鎖中の最初のものであり、後方ポインタを有しな
いことである。従つて、ステツプ54は必要でな
く、ステツプ55は単に自由連鎖中の次のエントリ
イの後方ポインタを消去するだけである。 第10a乃至第10d図は、新しいデータ・ブ
ロツクをキヤツシユ・メモリへ加える場合に生じ
るいくつかの可能性を示す。これら図面の各々に
おいて、Hは「ホーム」エントリイによつて占拠
されている特定のデイレクトリイ・テーブル・エ
ントリイを示し、Cはデイレクトリイ・テーブ
ル・エントリイが「衝突」エントリイによつて占
拠されていることを示す。第10a図は、現在の
ハツシユ・エントリイ・ナンバー(即ち、新しい
データ・ブロツクのハツシユ・エントリイ・ナン
バー)がデイレクトリイ・テーブル中で使用され
なかつたことを示す。その場合、必要な動作は、
新しいデータ・ブロツクのデイレクトリイ情報
を、このデイレクトリイ・テーブル・エントリイ
に挿入し、自由エントリイの連鎖を再配列するこ
とである。 ここで再び第7図へ戻つて、もし現在のハツシ
ユ・エントリイ・ナンバーのホーム・ポジシヨン
が既にデイレクトリイ・テーブル中で占拠されて
いることをマイクロプロセツサが識別すると、他
のデイレクトリイ・テーブル管理動作が必要とな
る。最初の可能性は、新しいデータ・ブロツクの
ホーム・ポジシヨンが、衝突リストの一部ではな
いホーム・エントリイによつて既に占拠されてお
り、従つてそれ自体連鎖の終りであるかも知れな
いことである。第3図のデイレクトリイ探索の間
に、マイクロプロセツサは連鎖終了(EOC)イ
ンデイケータをセツトし、第7図のプログラム通
路59をたどる。現在のエントリイに対して余地
(空白)を作るため、キヤツシユ中のページを削
除することが必要であり、また削除されたLRU
エントリイがホーム・ポジシヨンを占拠していた
エントリイであつたならば、マイクロプロセツサ
は第7図のプログラム通路60及び61をたど
る。以前にホーム・ポジシヨンを占拠していたエ
ントリイが削除されると、そのポジシヨンは自由
になり、前に第8図と関連づけて説明したよう
に、現在のハツシユ・エントリイ・ナンバーを使
用して、新しいページを加えることができる。そ
の結果は、第10a図に示される通りである。 もしホーム・ポジシヨンを占拠しているEOC
エントリイが、新しいページに対して余地を作る
ため、削除されていなければ、マイクロプロセツ
サは第7図のプログラム通路62をとる。現在の
ハツシユ・エントリイ・ナンバーはデイレクトリ
イ・テーブルの最初の自由エントリイのハツシ
ユ・エントリイ・ナンバーによつて置換される。
前に第8図と関連して説明したように、この新し
い現在のハツシユ・エントリイ・ナンバーを使用
して、ページが加えられる。更に、このエントリ
イは、連鎖の終りにある衝突エントリイになる。
従つて、新しいエントリイ・ポジシヨンの「ホー
ム」インデイケータはオフにされ、元のEOCエ
ントリイを遡つて指定するため(即ち、ホーム・
ポジシヨンを占拠するエントリイを遡つて指定す
るため)後方ポインタがセツトされる。最後に、
ホーム・ポジシヨンを占拠しているエントリイ
(これは前にEOCインデイケータを含んでいた)
の前方ポインタは、今や新しく加えられたエント
リイを指定するように変更される。変更された結
果は第10b図に示される。第10b図におい
て、ホーム・ポジシヨンは既にホーム・エントリ
イ63によつて占拠されており、新しいエントリ
イは、以前に最初の自由エントリイであつたポジ
シヨンへ動かされる。エントリイ63の前方ポイ
ンタはエントリイ64を指定するように変更さ
れ、エントリイ64の後方ポインタはエントリイ
63を指定するようにセツトされ、エントリイ6
4のホーム・インデイケータはオフにされる。エ
ントリイ64の前方ポインタは、第8図に示され
るように、EOCエントリイを表示するようにセ
ツトされる。 第2の可能性として、複数エントリイ衝突リス
トの最初のエントリイであるホーム・エントリイ
によつて、ホーム・ポジシヨンが既に占拠されて
いる場合がある。この場合、第3図のデイレクト
リイ探索の間に、マイクロプロセツサは衝突リス
トの全体を走査しており、リクエストされたデー
タ・ブロツクを発見することなく、連鎖の終りに
到達する。EOCインデイケータはセツトされて
おり、現在のハツシユ・エントリイ・ナンバーも
また変更されて、デイレクトリイ探索の間に発見
された連鎖の終りを指定する。既に新しいデー
タ・ブロツクのホーム・エントリイ・ポジシヨン
で始まる衝突リストが存在するので、新しいデー
タ・ブロツクは次のようにして、この衝突リスト
の終りに加えられねばならない。先ず、EOCイ
ンデイケータはデイレクトリイ探索の間にセツト
されているから、マイクロプロセツサは第7図の
プログラム通路59をたどる。もし衝突リスト中
のEOCエントリイが削除されて、新しいページ
のために余地を作つていなければ、プログラム通
路62がとられ、第10b図と関連して説明した
ようにして、新しいエントリイが連鎖の終りへ加
えられる。 もしEOCエントリイが削除されていれば、そ
れは次のようにして新しいエントリイによつて置
換される。先ず、前のEOCエントリイは削除さ
れているから、それまで最後から2番目であつた
エントリイのナンバーが、第3図の動作65でマ
イクロプロセツサによつて記憶される。マイクロ
プロセツサは、元のEOCエントリイのナンバー
を、この記憶されたナンバーと入替える。EOC
エントリイのナンバーが、このように変更された
後に、現在のハツシユ・ナンバーが最初の自由エ
ントリイのナンバーによつて置換され、新しいペ
ージが前と同じく、連鎖の終りへ加えられる。第
10c図は、エントリイ63及び64を含む衝突
リストの最初のエントリイであるホーム・エント
リイによつて、新しいデータ・ブロツクのホー
ム・ポジシヨンが既に占拠されている場合を示
す。ハツシユ・エントリイ・ナンバーは、第3図
のデイレクトリイ探索の終りで、既にEOCエン
トリイに等しくリセツトされており、従つて、第
7図のプログラムに従つた新しいデータ・ブロツ
クは、先ず衝突エントリイ64の場所で入れられ
ようとする。もし衝突エントリイ64が削除され
たばかりであれば、新しいデータ・ブロツクはそ
のポジシヨンに入れられる。そうでなければ、新
しいエントリイ66が作られ、エントリイ64及
び66は、エントリイ64の前方ポインタ及びエ
ントリイ66の後方ポインタによつて相互に連結
される。 最後の最も単純な可能性は、新しいエントリイ
のホーム・ポジシヨンが衝突エントリイによつて
占拠されることである。この場合、第3図のプロ
グラム通路67はデイレクトリイ探索の間に通過
されており、EOCインデイケータはセツトされ
ていない。従つて、マイクロプロセツサは第7図
の通路68をたどり、衝突エントリイは最初の自
由なエントリイ位置へ動かされ、新しいエントリ
イがそのホーム・ポジシヨンに挿入される。この
状態は第10d図に示されている。第10d図に
おいて、エントリイ63は、再び新しいエントリ
イのホーム・ポジシヨンを表示する。このエント
リイ63のポジシヨンは既に衝突エントリイによ
つて占拠されている。この衝突エントリイは、エ
ントリイ69,63,71を含む衝突リストの第
2のエントリイである。この状態において、エン
トリイ63のポジシヨンに存在していた衝突エン
トリイは最初の自由エントリイ72のポジシヨン
に動かされ、エントリイ69の前方ポインタ、エ
ントリイ71の後方ポインタ、エントリイ72の
前方及び後方ポインタは衝突リストの連続性を維
持するために調整される。衝突エントリイが1度
エントリイ63のポジシヨンから除かれると、そ
のホーム・ポジシヨンに新しいエントリイを作る
ことができる。 第10d図に示した方法に従つてデイレクトリ
イ・テーブルのエントリイを再配置する手法を、
第11図の流れ図を参照して詳細に説明する。第
11図は第7図の動作73に対応する。先ず、衝
突するデイレクトリイ・テーブルのエントリイが
マイクロプロセツサによつて選択され、それが依
然として使用されているかどうかが検査される。
もし新しいデータ・ブロツクについて余地を作る
ため、このエントリイが削除されたのであれば、
もはや衝突は存在せず、第8図の方法に従い現在
のハツシユ・エントリイ・ナンバーを使用するこ
とにより、新しいページをキヤツシユへ加えるこ
とができる。エントリイが依然として使用されて
いれば、そのデータは、後に最初の自由エントリ
イのポジシヨンへ転送するため、マイクロプロセ
ツサによつて記憶される。かくて、第10d図の
場合、エントリイ63のポジシヨンに存在してい
た衝突エントリイのデータは、後に最初の自由エ
ントリイ72のポジシヨンへ転送するため、マイ
クロプロセツサによつて記憶される。 衝突エントリイ63は、現在第2b図のLRU
テーブル中の或るポジシヨンを占めている。この
ポジシヨンは、データが1つのデイレクトリイ・
テーブル・エントリイから他のエントリイへ動か
されているので、変更されてはならない。従つ
て、マイクロプロセツサは、デイレクトリイ・テ
ーブルのエントリイ63に対応するLRUテーブ
ル・エントリイへ進み、最初の自由エントリイ7
2を指定するため、LRUリスト中のデイレクト
リイ・ポインタを変更する。かくて、エントリイ
72は、以前にエントリイ63によつて占められ
ていたLRUテーブル中の同じ優先ポジシヨンを
占拠する。 次にマイクロプロセツサはエントリイ63の後
方ポインタによつて指定されたエントリイ69へ
進み、最初の自由エントリイ72を表示するた
め、エントリイ69の前方ポインタを変更する。
次に、エントリイ63に含まれていたデータ(自
由/使用インデイケータ、ホーム・インデイケー
タ、フアイル・サブシステム・ブロツク・アドレ
ス、後方ポインタ、前方ポインタ、及びキヤツシ
ユ・アドレス)が全て最初の自由エントリイ72
のポジシヨンへ転送される。もし衝突エントリイ
がEOCエントリイであつたならば、変更されね
ばならない後続エントリイは存在しない。しか
し、衝突エントリイが第10d図の場合のように
EOCエントリイでなければ、マイクロプロセツ
サはエントリイ72の前方ポインタによつて指定
されるエントリイ71へ進み、エントリイ72を
指定するようにエントリイ71の後方ポインタを
変更する。 第11図のプログラム地点74では、衝突リス
トの同一順序が維持されかつエントリイ72によ
つて指定されたキヤツシユ・メモリ・データが
LRUテーブル中で同一の優先ポジシヨンを維持
するという点で、デイレクトリイ・テーブルの構
成は変更されていない。第11図の残りのステツ
プは、エントリイ63を最初の自由エントリイに
することによつて、「自由連鎖」を実質的に元の
状態へ復元する。これは、第2a図の自由ポイン
タ52を変更して衝突していたエントリイ63を
指定するようにし、最初の自由エントリイからの
全てのデータをエントリイ63のポジシヨンへ転
送し、最初の自由エントリイ72を指定していた
最後の自由エントリイの前方ポインタを変更して
エントリイ63を指定するようにし、最初の自由
エントリイ72を指定していた第2の自由エント
リイの後方ポインタを変更してエントリイ63を
指定するようにすることによつてなされる。今や
デイレクトリイ・テーブルは実質的に元の状態へ
設定される。新しいデータ・ブロツクのホーム・
エントリイ・ポジシヨンは自由になつているの
で、現ハツシユ・ナンバーを使用して新しいペー
ジをキヤツシユへ加えることができる。 ここで再び第6a図と第6b図に戻ると、マイ
クロプロセツサが要求されたデータ・ブロツクの
全てについて動作を循環させた後、前述した「ミ
ス・ヒツト・ミス」の状態があるものと反応する
と、マイクロプロセツサは、ミスのデータ・ブロ
ツク1及び3を2つの新しいページとしてキヤツ
シユ・メモリへ加えており、リクエストされたデ
ータをデイスクからキヤツシユへ、かつキヤツシ
ユからホスト・プロセツサへ転送するのに必要な
全ての動作を設定している。読出動作がリクエス
トされ、リクエストされたデータ・ブロツクの少
なくとも1つがミスであつたから、第6b図にお
いてプログラム通路76及び77がたどられる。
通路77の目的は、追加のデータ・ブロツクが間
もなくリクエストされる可能性が存在する場合
に、リクエストされていないデータ・ブロツクを
キヤツシユ・メモリへ転送することによつて、キ
ヤツシユ・メモリの効率を最大にすることであ
る。 次のような典型的な動作シーケンスを考えてみ
る。 ケース:122、123、124、125、126 ケース:122、123、1594、720、124、14、
125、1595、126 ケース:127、128、129、130、131 各ケースで表示されたナンバーは、一連のデイ
スク・データ読出リクエストにおけるRBAロケ
ーシヨンを表わす。固定ブロツク長が8の場合、
ケースの項目は、RBA120〜127を含む
ブロツクと関連している。かくて、ケースにお
ける最初のRBAはブロツク中の項目3であり、
最後にリクエストされたRBAは、ブロツク中の
項目7である。 ケースにおいて、同じ5つのRBAがリクエ
ストされ、異つたブロツクから他のRBAロケー
シヨンが追加される。これらの例において、ホス
ト・プロセツサは、RBAロケーシヨンの短い上
昇シーケンスからデータをリクエストした。シー
ケンスを完了する時間は比較的短く、一般的に
200回以下のデイスク参照時間内にある。RBA1
22―126の所与のシーケンスは、数百回のデ
イスク・リクエストの後に全面的又は部分的に反
復されてよい。動作の始めに、該当するブロツク
がキヤツシユ・メモリ中にないものと仮定すれ
ば、RBA122について読出ミスが生じ、該当
するブロツクの全てのレコードがキヤツシユ・メ
モリへ転送される。かくて、ブロツクがキヤツシ
ユ・メモリへ転送されている間、最初のリクエス
トは効率上不利点を有するが、RBA123―1
26に対する次のリクエストは読出ヒツトを生
じ、かなりの効率改善となる。経験的には、近い
将来RBA120又は121に対するリクエスト
を受ける可能性は少なく、従つてこれらの項目を
キヤツシユ・メモリに保存すると若干の不利益を
生じる。RBA120及び121を記憶する場合
の不利益は、最初のリクエストされたレコードか
ら始まるデータ・ブロツクをキヤツシユ・メモリ
中に記憶することによつて避けることができる
が、これはシステムを複雑にする点で実際的とは
言えない。 第6b図の通路77によつて実行される「プリ
フエツチ」動作は、一般的にはケースで示され
る動作形式に関連している。ケースにおいて、
RBA127に対するリクエストは読出ミスを生
じ、該当するブロツクの全てがデイスクからキヤ
ツシユへ転送される結果となる。しかし、RBA
128に対する次のリクエストは、該当するブロ
ツクの一部分ではなく、このリクエストは読出ミ
スを生じ、従つて次のブロツク16がキヤツシユ
へ記憶される。かくて、2つの独立したデイスク
読出動作がケースで必要となる。ケースにお
けるこの問題は、デイスク/キヤツシユ記憶のた
めに採用された固定ブロツクの境界と、ユーザに
よつて発生されたシーケンシヤルな参照パターン
の境界との間の不適当な整列状態から起る。 ケースで、2つの独立したデイスク読出動作
の必要性を除くため、最初のデイスク読出動作の
間に、追加のデータ・ブロツクをキヤツシユ・メ
モリへ転送することが、本発明の特徴である。 実施例において、統計上の確率は、ホスト・プ
ロセツサによつてリクエストされた現在の動作の
最後のレコードが特定ブロツクに含まれるポジシ
ヨンの関数であると考えられる。従つて、プリフ
エツチ動作は、固定したブロツク境界内のリクエ
ストされたレコード位置の論理限界比較に基づ
く。1つの例として、論理限界はブロツク内の5/
8ロケーシヨンにセツトされることができる。即
ち、或るブロツク15の論理限界は、ブロツク中
の5番目のレコードであるRBA124におかれ
てよい。RBA120―123に対する読出ミス
のリクエストは論理限界を満足させず、ブロツク
15のみがキヤツシユへ転送される。他方、
RBA124―127に対する読出ミスのリクエ
ストは論理限界を満足させる。次のブロツク16
がキヤツシユ・メモリ中に記憶されていないと仮
定すれば、ブロツク15及び直後に続くブロツク
16からのデータはキヤツシユへ読出される。ブ
ロツク内のレコード・ポジシヨンの決定は簡単で
ある。即ちブロツク・ナンバーはRBAをブロツ
ク長で除算することによつて決定され、その剰余
がブロツク内の相対的レコード・ポジシヨンにな
る。 発明者の研究によれば、望ましいブロツク長の
値は、8個から24個までのレコードである。前の
シーケンスの一部のみを繰返す場合が多く、これ
は、比較的長いシーケンスの場合に度々起る。も
し前のシーケンスの一部のみが繰返されるのであ
れば、キヤツシユ・メモリ中に繰返された部分を
維持し、シーケンスの残りを削除することが望ま
しいかも知れない。しかし、これは固定ブロツク
長が非常に長い場合(例えば24レコード)には実
際的でない。従つて、長いシーケンスを複数かつ
固定長のデータ・ブロツクとして記憶することに
より、細分性を維持するのが望ましい。そうすれ
ば、個々のデータ・ブロツクは、それが将来のリ
クエストを待機してどれくらい長くキヤツシユ中
に保持されるかについて、個別的に管理されるこ
とができる。或るブロツクは、将来のリクエスト
が受取られなければ削除されてよく、キヤツシユ
へ同時に記憶された他のブロツクは、反復的リク
エストが近い将来になされれば、そのまま維持さ
れる。従つて、実施例では固定ブロツク長として
8個のレコードが選択される。実効ブロツク長
は、時に応じて複数の固定ブロツクを転送するこ
とによつて変更される。 前述したように、1つの追加的データ・ブロツ
クを転送できるかを決定するため、1つの論理限
界のみを使用することが可能であるが、実施例で
は、2論理限界法が使用される。2論理限界法で
は、各論理限界は前述した固定長ブロツク内の異
つたロケーシヨンで生じる。2つの論理限界は
T1及びT2で表わされる。T2はT1より大きいか又
はそれに等しい。論理限界T1の比較で満足すべ
き結果が得られると、デイスク上順次に配置され
たデータ・ブロツクが読出されキヤツシユ・メモ
リへ記憶される。最初のデータ・ブロツクは読出
ミスを生じたリクエストに対する最後のレコード
を含み、第2のデータ・ブロツクは、リクエスト
されたレコードを含む最初のブロツクの直後に続
くブロツクである。論理限界T2の比較が満足す
べきものであれば、デイスク上順次に配置された
3つのデータ・ブロツクを読出しそれらをキヤツ
シユ・メモリに記憶する決定がなされる。これら
ブロツクの最初のものはリクエストされたデー
タ・レコードを含み。 ここで注意すべきは、単一の読出リクエストで
複数レコードを読出す場合、最後のレコードが読
出ミスである時にのみ、プリフエツチ動作が実行
され、プリフエツチ動作のための論理限界比較
は、データ・ブロツクにおける最後のリクエスト
されたレコードのポジシヨンへ適用されることで
ある。これについては第12a図乃至第12c図
を参照して具体的に説明する。各ブロツクには、
8個のレコードが含まれる。もしブロツクaのレ
コード0及び1が第12a図に示されるようにホ
スト・プロセツサからリクエストされると、リク
エストされたレコードを含むブロツクの全体がキ
ヤツシユ・メモリへ転送される。もしブロツクa
におけるレコード2―5の1つが第12b図に示
されるようにリクエストされると、ブロツクaの
みでなく次に続くブロツクbがキヤツシユ・メモ
リへ転送される。ブロツクaにおけるレコード6
又は7のいずれかが第12c図に示されるように
リクエストされると、ブロツクaの外にブロツク
b及びcがキヤツシユ・メモリへ転送される。こ
の種の動作をここでは「プリフエツチ」と呼ぶこ
とにするが、これは、ブロツクaの最後の4分の
3がリクエストされた時、比較的高い確率とし
て、続くI/O動作で次のデータ・ブロツクbか
らレコードがリクエストされ、ブロツクaの最後
の4分の1にあるレコードが現在のI/O動作で
リクエストされると、ブロツクcからレコードが
リクエストされるであろうという予想に基く。 もしRが固定ブロツク内の特定レコードの相対
的ロケーシヨンを示すものとすれば、ブロツク長
が8である時、Rの値は0から7までの範囲にあ
る。R<T1である時、リクエストされたデー
タ・ブロツクのみが転送され、T1≦R<T2であ
る時、リクエストされたデータ・ブロツク及び次
のデータ・ブロツクが転送され、R≧T2である
時、リクエストされたデータ・ブロツク及び次の
2つのデータ・ブロツクが転送される。平均の実
効ブロツク長は、T1及びT2のレベルによつて決
定される。例えばT1=T2=8の場合、それぞれ
の転送は8レコードを含む単一のブロツクについ
てなされ、T1=T2=0の場合、それぞれの転送
は、全部で24個のレコードを含む3つのデータ・
ブロツクについてなされる。T1=2及びT2=6
であれば、転送の4分の1は8個のレコードを含
み、転送の2分の1は16個のレコードを含み、転
送の4分の1は24個のレコードを含み、従つて平
均の実効ブロツク長は16レコードである。例とし
て掲げる次の表は、T1及びT2の代表的値を示し、
かつ結果として生じる平均の実効ブロツク長を示
す。
マイクロプロセツサは、「ミス・ヒツト・ミス」
状態が生じたかどうかを決定するため、ヒツト・
ブロツク・フラグ及びミス・ブロツク・フラグを
検査する。そのような状態が生じていない場合、
マイクロプロセツサは、前にミスがあつたかどう
かを決定するため、ヒツト・ブロツク・フラグ及
びミス・ブロツク・フラグを検査する。データ・
ブロツクはリクエストされた最初のデータ・ブロ
ツクであるから、「答」はノーであり、ミス・ブ
ロツク・フラグは、ブロツク・カウンタの値に等
しくセツトされる。この状態は表1のT2で示さ
れる。ここで注意すべきは、ミス・ブロツク・フ
ラグが最初のミスが生じたブロツク・ナンバーを
示すことである。第6b図に示すように、マイク
ロプロセツサはページをキヤツシユへ付加し、ミ
スのデータ・ブロツクの転送に必要なデイスクか
らキヤツシユへ、及びキヤツシユからホスト・プ
ロセツサへの動作(第6c図)を設定する。 全てのリクエストされたブロツクが検査された
わけではないから、ブロツク・カウンタが1だけ
増加され、第2のデータ・ブロツクが計算され
る。次に、マイクロプロセツサはデイレクトリイ
探索の直前のキヤツシユ・アルゴリズム地点へ戻
り、第3図のデイレクトリイ探索が第2のデー
タ・ブロツクについて繰返される。この時点のカ
ウンタ及びフラグの状態は表1のT3に示される。 次にデイレクトリイ・テーブルが第2のデー
タ・ブロツクを求めて探索される。もしそれが発
見されると、ヒツト・フラグがセツトされ、第3
図に示されるように、この第2ブロツクのキヤツ
シユ・アドレスが保存される。ここで再び第6a
図を参照すると、マイクロプロセツサはヒツト・
フラグを検査し、第2のデータ・ブロツクが第2
の探索中に発見されたことを知る。次にマイクロ
プロセツサは、第6b図に示されるアルゴリズム
の通路Aへブランチする。この第2のデータ・ブ
ロツクが今や最も近時に使用されたブロツクであ
ることを示すため、LRUテーブルが更新される。
先行するヒツトはないから、ヒツト・ブロツク・
フラグはブロツク・カウンタの現在の値(カウン
ト2)へセツトされる。この時点における状態は
表1のT4に示される。ミス・ブロツク・フラグ
及びヒツト・ブロツク・フラグは、それぞれ最初
のミス及び最初のヒツトのブロツク・ナンバーを
表示する。第6c図に示されるように、次にマイ
クロプロセツサは、第2のデータ・ブロツクのた
めに、必要なキヤツシユからホスト・プロセツサ
への動作を設定する。 依然として、全てのリクエストされたデータ・
ブロツクが検査されたわけではないから、ブロツ
ク・カウンタが再び1だけ増加され、第3のデー
タ・ブロツクのブロツク・ナンバー及びハツシ
ユ・エントリイ・ナンバーが計算され、マイクロ
プロセツサは、デイレクトリイ探索の直前のアル
ゴリズム地点へ戻る。この時点における状態は、
表1のT5で示される。次にデイレクトリイ・テ
ーブルが第3図に示された手順に従つて探索され
る。リクエストされた第3のデータ・ブロツクは
発見されないものと仮定すると、ヒツト・フラグ
がリセツトされ、読出ミスを表示する。デイレク
トリイ探索動作の終りに、マイクロプロセツサは
ヒツト・フラグを検査し、リクエストされた第3
のデータ・ブロツクが発見されたかどうかを決定
する。もしそれが発見されたのであれば、マイク
ロプロセツサは第6b図に示される通路Aをたど
り、リクエストされた第3のデータ・ブロツクを
LRUテーブル中で最も近時に使用されたブロツ
クとする。前にヒツトが生じたので、ブロツク・
ヒツト・フラグのセツトはスキツプされ、キヤツ
シユからホストへのプロセツサ動作が第3のデー
タ・ブロツクのために設定される。 第3のデータ・ブロツクがデイレクトリイ探索
で発見されないものと仮定すると、8の値が再び
レコード・カウンタへ加えられ、第6a図におけ
る判定動作52の直前には、カウンタ及びフラグ
状態は、表1のT6で示されるようになる。マイ
クロプロセツサはブロツク・ヒツト・フラグ及び
ブロツク・ミス・フラグを検査し、最初のブロツ
クがミスであり、第2のブロツクがヒツトである
ことが分るので、「ミス・ヒツト・ミス」の状態
となり、第6b図の通路Cがとられる。デイスク
からキヤツシユへ第2ブロツクを転送するのに必
要な動作が設定され、レコード・カウンタへ8が
加えられて、このデータ転送を示す。ミスのデー
タ・ブロツクに対処するため、ページがキヤツシ
ユへ加えられ、キヤツシユ・アルゴリズムが前の
ように実行される。第2のデータ・ブロツクは単
に再び書かれるだけであるから、それについては
ページはキヤツシユへ加えられないことに注意さ
れたい。第6b図の動作53は、ミスのデータ・
ブロツクについてページがキヤツシユへ加えられ
るキヤツシユ・アルゴリズムの部分を示す。これ
について第7図を参照して詳細に説明する。先
ず、キヤツシユ・メモリ中に残つている自由ペー
ジの数が計数される。これは、例えば、第2A図
の自由ページ・カウンタ54をポーリングする
か、デイレクトリイ・ポインタ欄にエントリイを
有しないLRUテーブルのリストの数を計数する
ことによつてなされる。もし現在利用できる自由
ページが存在しなければ、LRUテーブルから決
定された最も使用時点の古いページがキヤツシユ
から削除される。次に、加えられようとしている
ブロツクに対応するハツシユ・エントリイ・ナン
バーが既に使用されたかどうかを決定するため、
デイレクトリイ・テーブルが検査される。これ
は、第2a図のデイレクトリイ・テーブルの最初
の欄にある自由/使用インデイケータを検査する
ことによつて、容易に決定される。もしそのエン
トリイが既に使用されているものでなければ、第
8図に示すようにして、現在のハツシユ・ナンバ
ーを使用して、ページがキヤツシユへ加えられ
る。自由ページ・カウンタが1だけ減少され、使
用時の最も新しいエントリイの前方がポインタ
(これは最初の自由ページを指定する)が検査さ
れて、新しいデータ・ブロツクがどこに記憶され
るかを決定する。次に、第2b図のMRUポインタ
51が、この新しいページの値へセツトされ、新
しいページ・リストのデイレクトリイ・ポインタ
が現在のハツシユ・エントリイ・ナンバーの値へ
セツトされる。次にマイクロプロセツサは、現在
のハツシユ・エントリイ・ナンバーによつて指定
されるデイレクトリイ・エントリイへ行き、自
由/使用インデイケータを「使用」状態へセツト
し、ホーム・インデイケータを「ホーム」状態へ
セツトし、次いで新しいブロツクのサブシステ
ム・ブロツク・アドレスを入れる。次に、新しい
エントリイの前方ポインタが連鎖の終りを示すた
めにセツトされ、新しいデータ・ブロツクが記憶
されるキヤツシユ・アドレスを入れる。 第8図の動作54及び55は、適当な「自由連
鎖」(即ち、自由ページの連鎖)を維持するため
に必要である。デイレクトリイ・テーブル中の自
由エントリイ(即ち、使用されていないエントリ
イ)は、その前方及び後方ポインタによつて連鎖
として配列されている。そして、今やこの連鎖中
のエントリイの1つ(即ち、現在のハツシユ・エ
ントリイ・ナンバーに対応するエントリイを使用
することが望まれる。かくて、第9a図に示され
るように、いくつかのエントリイが相互に連鎖さ
れており、エントリイ56を使用することが望ま
れるものとする。これは自由連鎖を破るので、新
しく使用されたエントリイ56の周囲で連鎖を再
び経路づけることが必要である。エントリイ56
を使用する前は、エントリイ56の後方ポインタ
は前の自由エントリイ57を指定し、エントリイ
56の前方ポインタは次の自由エントリイ58を
指定する。連鎖を再び経路づける場合、マイクロ
プロセツサはエントリイ57を指定するエントリ
イ56の後方ポインタをたどり、エントリイ57
の前方ポインタをエントリイ56の前方ポインタ
と置換する。それによつて、エントリイ57の前
方ポインタは今やエントリイ58を指定する。次
にプロセツサは、エントリイ58を指定するエン
トリイ56の前方ポインタをたどり、エントリイ
58の後方ポインタをエントリイ56の後方ポイ
ンタと置換する。従つて、エントリイ58の後方
ポインタは、今やエントリイ57を指定する。結
果として生じた新しい自由連鎖は第9b図に示さ
れるが、そこではエントリイ56が連鎖から除去
されている。 ステツプ54及び55で自由連鎖を再配列した後
に、マイクロプロセツサは、新しいエントリイが
最初の自由エントリイであつたかどうかを決定す
る。例えば、第9a図において、最初の自由エン
トリイはエントリイ57である。この場合、マイ
クロプロセツサは第6b図のキヤツシユ・アルゴ
リズムへ戻る。しかし、衝突リストを管理するた
め、第2a図の自由ポインタ52が自由連鎖中の
最初の自由エントリイを正しく指定することが大
切である。もし新しく加えられたデータ・ブロツ
クが連鎖中の最初の自由エントリイ(即ち、エン
トリイ57)を使用するならば、新しい最初の自
由エントリイはエントリイ56である。エントリ
イ56はエントリイ57の前方ポインタによつて
指定された。従つて、自由ポインタ52は、そこ
に含まれる値をエントリイ57の前方ポインタへ
変更されることによつて更新される。ここで注意
すべきは、もし捕捉されたエントリイが最初の自
由エントリイであれば、このエントリイは自由連
鎖中の最初のものであり、後方ポインタを有しな
いことである。従つて、ステツプ54は必要でな
く、ステツプ55は単に自由連鎖中の次のエントリ
イの後方ポインタを消去するだけである。 第10a乃至第10d図は、新しいデータ・ブ
ロツクをキヤツシユ・メモリへ加える場合に生じ
るいくつかの可能性を示す。これら図面の各々に
おいて、Hは「ホーム」エントリイによつて占拠
されている特定のデイレクトリイ・テーブル・エ
ントリイを示し、Cはデイレクトリイ・テーブ
ル・エントリイが「衝突」エントリイによつて占
拠されていることを示す。第10a図は、現在の
ハツシユ・エントリイ・ナンバー(即ち、新しい
データ・ブロツクのハツシユ・エントリイ・ナン
バー)がデイレクトリイ・テーブル中で使用され
なかつたことを示す。その場合、必要な動作は、
新しいデータ・ブロツクのデイレクトリイ情報
を、このデイレクトリイ・テーブル・エントリイ
に挿入し、自由エントリイの連鎖を再配列するこ
とである。 ここで再び第7図へ戻つて、もし現在のハツシ
ユ・エントリイ・ナンバーのホーム・ポジシヨン
が既にデイレクトリイ・テーブル中で占拠されて
いることをマイクロプロセツサが識別すると、他
のデイレクトリイ・テーブル管理動作が必要とな
る。最初の可能性は、新しいデータ・ブロツクの
ホーム・ポジシヨンが、衝突リストの一部ではな
いホーム・エントリイによつて既に占拠されてお
り、従つてそれ自体連鎖の終りであるかも知れな
いことである。第3図のデイレクトリイ探索の間
に、マイクロプロセツサは連鎖終了(EOC)イ
ンデイケータをセツトし、第7図のプログラム通
路59をたどる。現在のエントリイに対して余地
(空白)を作るため、キヤツシユ中のページを削
除することが必要であり、また削除されたLRU
エントリイがホーム・ポジシヨンを占拠していた
エントリイであつたならば、マイクロプロセツサ
は第7図のプログラム通路60及び61をたど
る。以前にホーム・ポジシヨンを占拠していたエ
ントリイが削除されると、そのポジシヨンは自由
になり、前に第8図と関連づけて説明したよう
に、現在のハツシユ・エントリイ・ナンバーを使
用して、新しいページを加えることができる。そ
の結果は、第10a図に示される通りである。 もしホーム・ポジシヨンを占拠しているEOC
エントリイが、新しいページに対して余地を作る
ため、削除されていなければ、マイクロプロセツ
サは第7図のプログラム通路62をとる。現在の
ハツシユ・エントリイ・ナンバーはデイレクトリ
イ・テーブルの最初の自由エントリイのハツシ
ユ・エントリイ・ナンバーによつて置換される。
前に第8図と関連して説明したように、この新し
い現在のハツシユ・エントリイ・ナンバーを使用
して、ページが加えられる。更に、このエントリ
イは、連鎖の終りにある衝突エントリイになる。
従つて、新しいエントリイ・ポジシヨンの「ホー
ム」インデイケータはオフにされ、元のEOCエ
ントリイを遡つて指定するため(即ち、ホーム・
ポジシヨンを占拠するエントリイを遡つて指定す
るため)後方ポインタがセツトされる。最後に、
ホーム・ポジシヨンを占拠しているエントリイ
(これは前にEOCインデイケータを含んでいた)
の前方ポインタは、今や新しく加えられたエント
リイを指定するように変更される。変更された結
果は第10b図に示される。第10b図におい
て、ホーム・ポジシヨンは既にホーム・エントリ
イ63によつて占拠されており、新しいエントリ
イは、以前に最初の自由エントリイであつたポジ
シヨンへ動かされる。エントリイ63の前方ポイ
ンタはエントリイ64を指定するように変更さ
れ、エントリイ64の後方ポインタはエントリイ
63を指定するようにセツトされ、エントリイ6
4のホーム・インデイケータはオフにされる。エ
ントリイ64の前方ポインタは、第8図に示され
るように、EOCエントリイを表示するようにセ
ツトされる。 第2の可能性として、複数エントリイ衝突リス
トの最初のエントリイであるホーム・エントリイ
によつて、ホーム・ポジシヨンが既に占拠されて
いる場合がある。この場合、第3図のデイレクト
リイ探索の間に、マイクロプロセツサは衝突リス
トの全体を走査しており、リクエストされたデー
タ・ブロツクを発見することなく、連鎖の終りに
到達する。EOCインデイケータはセツトされて
おり、現在のハツシユ・エントリイ・ナンバーも
また変更されて、デイレクトリイ探索の間に発見
された連鎖の終りを指定する。既に新しいデー
タ・ブロツクのホーム・エントリイ・ポジシヨン
で始まる衝突リストが存在するので、新しいデー
タ・ブロツクは次のようにして、この衝突リスト
の終りに加えられねばならない。先ず、EOCイ
ンデイケータはデイレクトリイ探索の間にセツト
されているから、マイクロプロセツサは第7図の
プログラム通路59をたどる。もし衝突リスト中
のEOCエントリイが削除されて、新しいページ
のために余地を作つていなければ、プログラム通
路62がとられ、第10b図と関連して説明した
ようにして、新しいエントリイが連鎖の終りへ加
えられる。 もしEOCエントリイが削除されていれば、そ
れは次のようにして新しいエントリイによつて置
換される。先ず、前のEOCエントリイは削除さ
れているから、それまで最後から2番目であつた
エントリイのナンバーが、第3図の動作65でマ
イクロプロセツサによつて記憶される。マイクロ
プロセツサは、元のEOCエントリイのナンバー
を、この記憶されたナンバーと入替える。EOC
エントリイのナンバーが、このように変更された
後に、現在のハツシユ・ナンバーが最初の自由エ
ントリイのナンバーによつて置換され、新しいペ
ージが前と同じく、連鎖の終りへ加えられる。第
10c図は、エントリイ63及び64を含む衝突
リストの最初のエントリイであるホーム・エント
リイによつて、新しいデータ・ブロツクのホー
ム・ポジシヨンが既に占拠されている場合を示
す。ハツシユ・エントリイ・ナンバーは、第3図
のデイレクトリイ探索の終りで、既にEOCエン
トリイに等しくリセツトされており、従つて、第
7図のプログラムに従つた新しいデータ・ブロツ
クは、先ず衝突エントリイ64の場所で入れられ
ようとする。もし衝突エントリイ64が削除され
たばかりであれば、新しいデータ・ブロツクはそ
のポジシヨンに入れられる。そうでなければ、新
しいエントリイ66が作られ、エントリイ64及
び66は、エントリイ64の前方ポインタ及びエ
ントリイ66の後方ポインタによつて相互に連結
される。 最後の最も単純な可能性は、新しいエントリイ
のホーム・ポジシヨンが衝突エントリイによつて
占拠されることである。この場合、第3図のプロ
グラム通路67はデイレクトリイ探索の間に通過
されており、EOCインデイケータはセツトされ
ていない。従つて、マイクロプロセツサは第7図
の通路68をたどり、衝突エントリイは最初の自
由なエントリイ位置へ動かされ、新しいエントリ
イがそのホーム・ポジシヨンに挿入される。この
状態は第10d図に示されている。第10d図に
おいて、エントリイ63は、再び新しいエントリ
イのホーム・ポジシヨンを表示する。このエント
リイ63のポジシヨンは既に衝突エントリイによ
つて占拠されている。この衝突エントリイは、エ
ントリイ69,63,71を含む衝突リストの第
2のエントリイである。この状態において、エン
トリイ63のポジシヨンに存在していた衝突エン
トリイは最初の自由エントリイ72のポジシヨン
に動かされ、エントリイ69の前方ポインタ、エ
ントリイ71の後方ポインタ、エントリイ72の
前方及び後方ポインタは衝突リストの連続性を維
持するために調整される。衝突エントリイが1度
エントリイ63のポジシヨンから除かれると、そ
のホーム・ポジシヨンに新しいエントリイを作る
ことができる。 第10d図に示した方法に従つてデイレクトリ
イ・テーブルのエントリイを再配置する手法を、
第11図の流れ図を参照して詳細に説明する。第
11図は第7図の動作73に対応する。先ず、衝
突するデイレクトリイ・テーブルのエントリイが
マイクロプロセツサによつて選択され、それが依
然として使用されているかどうかが検査される。
もし新しいデータ・ブロツクについて余地を作る
ため、このエントリイが削除されたのであれば、
もはや衝突は存在せず、第8図の方法に従い現在
のハツシユ・エントリイ・ナンバーを使用するこ
とにより、新しいページをキヤツシユへ加えるこ
とができる。エントリイが依然として使用されて
いれば、そのデータは、後に最初の自由エントリ
イのポジシヨンへ転送するため、マイクロプロセ
ツサによつて記憶される。かくて、第10d図の
場合、エントリイ63のポジシヨンに存在してい
た衝突エントリイのデータは、後に最初の自由エ
ントリイ72のポジシヨンへ転送するため、マイ
クロプロセツサによつて記憶される。 衝突エントリイ63は、現在第2b図のLRU
テーブル中の或るポジシヨンを占めている。この
ポジシヨンは、データが1つのデイレクトリイ・
テーブル・エントリイから他のエントリイへ動か
されているので、変更されてはならない。従つ
て、マイクロプロセツサは、デイレクトリイ・テ
ーブルのエントリイ63に対応するLRUテーブ
ル・エントリイへ進み、最初の自由エントリイ7
2を指定するため、LRUリスト中のデイレクト
リイ・ポインタを変更する。かくて、エントリイ
72は、以前にエントリイ63によつて占められ
ていたLRUテーブル中の同じ優先ポジシヨンを
占拠する。 次にマイクロプロセツサはエントリイ63の後
方ポインタによつて指定されたエントリイ69へ
進み、最初の自由エントリイ72を表示するた
め、エントリイ69の前方ポインタを変更する。
次に、エントリイ63に含まれていたデータ(自
由/使用インデイケータ、ホーム・インデイケー
タ、フアイル・サブシステム・ブロツク・アドレ
ス、後方ポインタ、前方ポインタ、及びキヤツシ
ユ・アドレス)が全て最初の自由エントリイ72
のポジシヨンへ転送される。もし衝突エントリイ
がEOCエントリイであつたならば、変更されね
ばならない後続エントリイは存在しない。しか
し、衝突エントリイが第10d図の場合のように
EOCエントリイでなければ、マイクロプロセツ
サはエントリイ72の前方ポインタによつて指定
されるエントリイ71へ進み、エントリイ72を
指定するようにエントリイ71の後方ポインタを
変更する。 第11図のプログラム地点74では、衝突リス
トの同一順序が維持されかつエントリイ72によ
つて指定されたキヤツシユ・メモリ・データが
LRUテーブル中で同一の優先ポジシヨンを維持
するという点で、デイレクトリイ・テーブルの構
成は変更されていない。第11図の残りのステツ
プは、エントリイ63を最初の自由エントリイに
することによつて、「自由連鎖」を実質的に元の
状態へ復元する。これは、第2a図の自由ポイン
タ52を変更して衝突していたエントリイ63を
指定するようにし、最初の自由エントリイからの
全てのデータをエントリイ63のポジシヨンへ転
送し、最初の自由エントリイ72を指定していた
最後の自由エントリイの前方ポインタを変更して
エントリイ63を指定するようにし、最初の自由
エントリイ72を指定していた第2の自由エント
リイの後方ポインタを変更してエントリイ63を
指定するようにすることによつてなされる。今や
デイレクトリイ・テーブルは実質的に元の状態へ
設定される。新しいデータ・ブロツクのホーム・
エントリイ・ポジシヨンは自由になつているの
で、現ハツシユ・ナンバーを使用して新しいペー
ジをキヤツシユへ加えることができる。 ここで再び第6a図と第6b図に戻ると、マイ
クロプロセツサが要求されたデータ・ブロツクの
全てについて動作を循環させた後、前述した「ミ
ス・ヒツト・ミス」の状態があるものと反応する
と、マイクロプロセツサは、ミスのデータ・ブロ
ツク1及び3を2つの新しいページとしてキヤツ
シユ・メモリへ加えており、リクエストされたデ
ータをデイスクからキヤツシユへ、かつキヤツシ
ユからホスト・プロセツサへ転送するのに必要な
全ての動作を設定している。読出動作がリクエス
トされ、リクエストされたデータ・ブロツクの少
なくとも1つがミスであつたから、第6b図にお
いてプログラム通路76及び77がたどられる。
通路77の目的は、追加のデータ・ブロツクが間
もなくリクエストされる可能性が存在する場合
に、リクエストされていないデータ・ブロツクを
キヤツシユ・メモリへ転送することによつて、キ
ヤツシユ・メモリの効率を最大にすることであ
る。 次のような典型的な動作シーケンスを考えてみ
る。 ケース:122、123、124、125、126 ケース:122、123、1594、720、124、14、
125、1595、126 ケース:127、128、129、130、131 各ケースで表示されたナンバーは、一連のデイ
スク・データ読出リクエストにおけるRBAロケ
ーシヨンを表わす。固定ブロツク長が8の場合、
ケースの項目は、RBA120〜127を含む
ブロツクと関連している。かくて、ケースにお
ける最初のRBAはブロツク中の項目3であり、
最後にリクエストされたRBAは、ブロツク中の
項目7である。 ケースにおいて、同じ5つのRBAがリクエ
ストされ、異つたブロツクから他のRBAロケー
シヨンが追加される。これらの例において、ホス
ト・プロセツサは、RBAロケーシヨンの短い上
昇シーケンスからデータをリクエストした。シー
ケンスを完了する時間は比較的短く、一般的に
200回以下のデイスク参照時間内にある。RBA1
22―126の所与のシーケンスは、数百回のデ
イスク・リクエストの後に全面的又は部分的に反
復されてよい。動作の始めに、該当するブロツク
がキヤツシユ・メモリ中にないものと仮定すれ
ば、RBA122について読出ミスが生じ、該当
するブロツクの全てのレコードがキヤツシユ・メ
モリへ転送される。かくて、ブロツクがキヤツシ
ユ・メモリへ転送されている間、最初のリクエス
トは効率上不利点を有するが、RBA123―1
26に対する次のリクエストは読出ヒツトを生
じ、かなりの効率改善となる。経験的には、近い
将来RBA120又は121に対するリクエスト
を受ける可能性は少なく、従つてこれらの項目を
キヤツシユ・メモリに保存すると若干の不利益を
生じる。RBA120及び121を記憶する場合
の不利益は、最初のリクエストされたレコードか
ら始まるデータ・ブロツクをキヤツシユ・メモリ
中に記憶することによつて避けることができる
が、これはシステムを複雑にする点で実際的とは
言えない。 第6b図の通路77によつて実行される「プリ
フエツチ」動作は、一般的にはケースで示され
る動作形式に関連している。ケースにおいて、
RBA127に対するリクエストは読出ミスを生
じ、該当するブロツクの全てがデイスクからキヤ
ツシユへ転送される結果となる。しかし、RBA
128に対する次のリクエストは、該当するブロ
ツクの一部分ではなく、このリクエストは読出ミ
スを生じ、従つて次のブロツク16がキヤツシユ
へ記憶される。かくて、2つの独立したデイスク
読出動作がケースで必要となる。ケースにお
けるこの問題は、デイスク/キヤツシユ記憶のた
めに採用された固定ブロツクの境界と、ユーザに
よつて発生されたシーケンシヤルな参照パターン
の境界との間の不適当な整列状態から起る。 ケースで、2つの独立したデイスク読出動作
の必要性を除くため、最初のデイスク読出動作の
間に、追加のデータ・ブロツクをキヤツシユ・メ
モリへ転送することが、本発明の特徴である。 実施例において、統計上の確率は、ホスト・プ
ロセツサによつてリクエストされた現在の動作の
最後のレコードが特定ブロツクに含まれるポジシ
ヨンの関数であると考えられる。従つて、プリフ
エツチ動作は、固定したブロツク境界内のリクエ
ストされたレコード位置の論理限界比較に基づ
く。1つの例として、論理限界はブロツク内の5/
8ロケーシヨンにセツトされることができる。即
ち、或るブロツク15の論理限界は、ブロツク中
の5番目のレコードであるRBA124におかれ
てよい。RBA120―123に対する読出ミス
のリクエストは論理限界を満足させず、ブロツク
15のみがキヤツシユへ転送される。他方、
RBA124―127に対する読出ミスのリクエ
ストは論理限界を満足させる。次のブロツク16
がキヤツシユ・メモリ中に記憶されていないと仮
定すれば、ブロツク15及び直後に続くブロツク
16からのデータはキヤツシユへ読出される。ブ
ロツク内のレコード・ポジシヨンの決定は簡単で
ある。即ちブロツク・ナンバーはRBAをブロツ
ク長で除算することによつて決定され、その剰余
がブロツク内の相対的レコード・ポジシヨンにな
る。 発明者の研究によれば、望ましいブロツク長の
値は、8個から24個までのレコードである。前の
シーケンスの一部のみを繰返す場合が多く、これ
は、比較的長いシーケンスの場合に度々起る。も
し前のシーケンスの一部のみが繰返されるのであ
れば、キヤツシユ・メモリ中に繰返された部分を
維持し、シーケンスの残りを削除することが望ま
しいかも知れない。しかし、これは固定ブロツク
長が非常に長い場合(例えば24レコード)には実
際的でない。従つて、長いシーケンスを複数かつ
固定長のデータ・ブロツクとして記憶することに
より、細分性を維持するのが望ましい。そうすれ
ば、個々のデータ・ブロツクは、それが将来のリ
クエストを待機してどれくらい長くキヤツシユ中
に保持されるかについて、個別的に管理されるこ
とができる。或るブロツクは、将来のリクエスト
が受取られなければ削除されてよく、キヤツシユ
へ同時に記憶された他のブロツクは、反復的リク
エストが近い将来になされれば、そのまま維持さ
れる。従つて、実施例では固定ブロツク長として
8個のレコードが選択される。実効ブロツク長
は、時に応じて複数の固定ブロツクを転送するこ
とによつて変更される。 前述したように、1つの追加的データ・ブロツ
クを転送できるかを決定するため、1つの論理限
界のみを使用することが可能であるが、実施例で
は、2論理限界法が使用される。2論理限界法で
は、各論理限界は前述した固定長ブロツク内の異
つたロケーシヨンで生じる。2つの論理限界は
T1及びT2で表わされる。T2はT1より大きいか又
はそれに等しい。論理限界T1の比較で満足すべ
き結果が得られると、デイスク上順次に配置され
たデータ・ブロツクが読出されキヤツシユ・メモ
リへ記憶される。最初のデータ・ブロツクは読出
ミスを生じたリクエストに対する最後のレコード
を含み、第2のデータ・ブロツクは、リクエスト
されたレコードを含む最初のブロツクの直後に続
くブロツクである。論理限界T2の比較が満足す
べきものであれば、デイスク上順次に配置された
3つのデータ・ブロツクを読出しそれらをキヤツ
シユ・メモリに記憶する決定がなされる。これら
ブロツクの最初のものはリクエストされたデー
タ・レコードを含み。 ここで注意すべきは、単一の読出リクエストで
複数レコードを読出す場合、最後のレコードが読
出ミスである時にのみ、プリフエツチ動作が実行
され、プリフエツチ動作のための論理限界比較
は、データ・ブロツクにおける最後のリクエスト
されたレコードのポジシヨンへ適用されることで
ある。これについては第12a図乃至第12c図
を参照して具体的に説明する。各ブロツクには、
8個のレコードが含まれる。もしブロツクaのレ
コード0及び1が第12a図に示されるようにホ
スト・プロセツサからリクエストされると、リク
エストされたレコードを含むブロツクの全体がキ
ヤツシユ・メモリへ転送される。もしブロツクa
におけるレコード2―5の1つが第12b図に示
されるようにリクエストされると、ブロツクaの
みでなく次に続くブロツクbがキヤツシユ・メモ
リへ転送される。ブロツクaにおけるレコード6
又は7のいずれかが第12c図に示されるように
リクエストされると、ブロツクaの外にブロツク
b及びcがキヤツシユ・メモリへ転送される。こ
の種の動作をここでは「プリフエツチ」と呼ぶこ
とにするが、これは、ブロツクaの最後の4分の
3がリクエストされた時、比較的高い確率とし
て、続くI/O動作で次のデータ・ブロツクbか
らレコードがリクエストされ、ブロツクaの最後
の4分の1にあるレコードが現在のI/O動作で
リクエストされると、ブロツクcからレコードが
リクエストされるであろうという予想に基く。 もしRが固定ブロツク内の特定レコードの相対
的ロケーシヨンを示すものとすれば、ブロツク長
が8である時、Rの値は0から7までの範囲にあ
る。R<T1である時、リクエストされたデー
タ・ブロツクのみが転送され、T1≦R<T2であ
る時、リクエストされたデータ・ブロツク及び次
のデータ・ブロツクが転送され、R≧T2である
時、リクエストされたデータ・ブロツク及び次の
2つのデータ・ブロツクが転送される。平均の実
効ブロツク長は、T1及びT2のレベルによつて決
定される。例えばT1=T2=8の場合、それぞれ
の転送は8レコードを含む単一のブロツクについ
てなされ、T1=T2=0の場合、それぞれの転送
は、全部で24個のレコードを含む3つのデータ・
ブロツクについてなされる。T1=2及びT2=6
であれば、転送の4分の1は8個のレコードを含
み、転送の2分の1は16個のレコードを含み、転
送の4分の1は24個のレコードを含み、従つて平
均の実効ブロツク長は16レコードである。例とし
て掲げる次の表は、T1及びT2の代表的値を示し、
かつ結果として生じる平均の実効ブロツク長を示
す。
【表】
キヤツシユ・メモリの容量が無限であると仮定
すれば、平均実効ブロツク長が長くなれば、効率
が改善され利点が生じることが分る。ブロツク長
が長くなれば、キヤツシユ・メモリへ多くのデー
タを転送することができ、その結果、将来の読出
ヒツトの確率は高くなる。しかし、実際的な見地
からは、平均実効ブロツク長が長くなれば、或る
限度までキヤツシユ・メモリの効率は改善される
が、その限度を超えると、ブロツク長の増加が効
率を低下させる。これは読出確率がそれ程高くな
い情報が過度に記憶され、メモリ容量を占拠する
ためである。メモリ容量は、より高い確率を有す
る情報のためにより良好に使用されることができ
る。一般的には、論理限界T1及びT2を適当にセ
ツトすることによつて、或る最適の平均実効ブロ
ツク長を決定することができる。適当な論理限界
レベルの組を前に説明したが、その場合、デー
タ・ブロツクの最後の4分の1(コータ)にある
リクエストされたレコードのポジシヨンは、全部
で3個のブロツクを転送する結果となり、デー
タ・ブロツクの第2及び第3コータにあるリクエ
ストされたレコードのポジシヨンは、全部で2つ
のブロツクを転送する結果となる。しかし、平均
実効長の大きいものが良いかどうかは、ホスト・
プロセツサによつてリクエストされた一連のレコ
ードの平均の長さに依存する。もし平均シーケン
ス長が非常に長ければ、平均実効ブロツク長の大
きい方が効率を改善して利点を与える。 不幸にして、所与の顧客に対してどのような平
均実効ブロツク長が最適であるかを前もつて知る
方法はなく、更に、最適ブロツク長の値は、所与
に顧客についてタスクごとに変化する。従つて、
効率を最適化するため、論理限界レベルをダイナ
ミツクに制御することが望ましい。これは、シス
テム効率の種々の局面を連続的に評価し、それに
従つて論理限界を変化させることによつて達成さ
れる。しかし実施例ではもつと簡単な方法が選択
される。この方法によれば、論理限界レベルは読
出ヒツト率に従つて連続的に変化させられる。読
出ヒツト率は、システム効率の最重要な尺度の1
つである。読出ヒツト率は、読出ヒツトを生じる
読出リクエストの百分率である。 論理限界T1及びT2をダイナミツクに調整する
方法をこれから説明する。比較的直截な方法とし
て、マイクロプロセツサはデイスク・アクセスの
数を計数する第1のカウンタ、デイスク読出アク
セスの数を計数する第2のカウンタ、読出ヒツト
の数を計数する第3のカウンタを含んでよい。マ
イクロプロセツサは、読出ヒツトの数をデイスク
読出アクセスの数で除算することによつて読出ヒ
ツト率を計算する。読出ヒツト率が計算されるの
は、少なくとも1000回のデイスク・アクセス、少
なくとも250回のデイスク読出アクセス、少なく
とも50回の読出ヒツトが生じた時である。これら
最少値の全てが満足させられると、読出ヒツト率
が計算され、3つのカウンタの全てがゼロへリセ
ツトされる。サイクルは、3つの最少値の全てが
再び満足させられるまで継続し、新しい読出ヒツ
ト率が計算される。 平均実効ブロツク長は、T1及びT2を変化させ
ることによつて、計算された読出ヒツト率に従つ
て変更される。かくて、T1及びT2は、予め選択
された初期値にセツトされることができ、読出ヒ
ツト率は、前記の最少値が生じた後に計算され
る。注意すべきは、読出ヒツトの数がT1及びT2
の選択によつて影響を受ける唯一の数値であるこ
とである。 最初の読出ヒツト率が計算された後、実効長の
平均値を単一ステツプだけ増加させるように、
T1及びT2の新しい組が選択される。新しい読出
ヒツト率が計算され、前に計算された値と比較さ
れる。もし新しい読出ヒツト率が大きければ、再
びT1及びT2が変更され、平均実効ブロツク長が、
単一ステツプだけ増加するようにされる。 T1及びT2の変更は、新しく計算された読出ヒ
ツト率が、前に計算された値より小さくなるまで
継続する。前の値より小さくなると、論理限界は
最適の読出ヒツト率が生じた前のレベルへ戻され
る。もし所望ならば、論理限界を前の値へ戻した
後に、確認サイクルが実行されてよい。確認サイ
クルは、通常の評価時間の2倍だけ続き、最新の
論理限界が依然として最良の読出ヒツト率を生じ
ることを確認するサイクルである。 最終的に選択された論理限界は、20又はそれ以
上の標準評価時間の間維持されてよい。その時間
の終りに、新しい評価サイクルが再び取られて、
最大読出ヒツト率に対応する最適論理限界を決定
する。後続する評価において、論理限界レベルが
変更されて、読出ヒツト率が減少するまで、平均
実効ブロツク長が増加又は減少される。次に、最
適論理限界が発見されたことを確かめるため、読
出ヒツト率が減少するまで、平均実効ブロツク長
が反対方向へ変化させられ、次いで、確認サイク
ルが最良の論理限界レベルで実行される。それ
は、論理限界レベルが望ましいものであることを
確かめるためである。 ここで第6b図へ戻つて、もしブロツクのいず
れもミスでなければ、デイスクからキヤツシユへ
の動作は必要でなく、マイクロプロセツサは第6
b図の下部からキヤツシユ・アルゴリズムを出
る。しかし、ミスが生じると、マイクロプロセツ
サは、スタートのRBAをセツトしかつキヤツシ
ユ状況を「ミス」へセツトすることによつてデイ
スクからキヤツシユへの転送動作を準備する。デ
イスクからキヤツシユへの転送を開始する前に、
マイクロプロセツサは「プリフエツチ」の計算を
実行する。それは、後に第12a図乃至第12c
図及び第13図を参照して詳細に説明するよう
に、追加のデータ・ブロツクを転送すべきかどう
かを決定するためである。 第13図はプリフエツチ計算のフローチヤート
である。プリフエツチ動作が実行されるのは、リ
クエストされた一連のブロツク中の最後のブロツ
クがキヤツシユ・メモリ中に発見されない時であ
る。もし最後のブロツクがヒツトであれば、キヤ
ツシユ・アルゴリズムは終り、コントローラ動作
は第5図に示されるように進行し、ミスのデー
タ・ブロツクのみが転送される。最後にリクエス
トされたブロツクがミスであつたと仮定すると、
マイクロプロセツサは、ミスになつたブロツクの
最後の4分の1(レコード6及び7)がリクエス
トされたのかどうかを決定する。もしそうであれ
ば、2のプリフエツチ・ブロツク・カウントがセ
ツトされる。もしそうでなければ、マイクロプロ
セツサは、最後のブロツクの第2又は第3のコー
タ(4分の1)部分がリクエストされたのかどう
かを決定する。もしそうでなければ、プリフエツ
チの必要はなく、キヤツシユ・アルゴリズムは終
る。もし最後のブロツクの第2又は第3コータ部
分がリクエストされたのであれば、1のプリフエ
ツチ・ブロツク・カウントがセツトされる。次に
マイクロプロセツサは、現在のブロツク及びハツ
シユ・エントリイ・ナンバーを増加させ、かつ第
3図に示されるようにして、ブロツクbのために
デイレクトリイ・テーブルの探索を実行する。も
しブロツクbが既にキヤツシユにあることが分る
と、キヤツシユ・アルゴリズムは終り、コントロ
ーラ動作は第5図に示されるように進行する。ブ
ロツクaの最後の4分の1がリクエストされた場
合でも、ブロツクbが既にキヤツシユに存在する
ならば、ブロツクcをキヤツシユへ転送する利点
はない。 もしブロツクbがキヤツシユに発見されなけれ
ば、第7図のプロセスを介して新しいページが加
えられ、レコード・カウントが8だけ増加され
て、追加ブロツクの転送を示す。次にプリフエツ
チ・ブロツク・カウントが1だけ減少される。も
し1つのブロツクのみがリクエストされたなら
ば、キヤツシユ・アルゴリズムは終り、リクエス
トされたブロツクは、追加のブロツクbと共にキ
ヤツシユへ転送される。もし2ブロツクのプリフ
エツチが表示されていれば、現在のブロツク及び
ハツシユ・ナンバーが再び増加され、ブロツクc
に対する探索が実行される。もしブロツクcがキ
ヤツシユ中に発見されなければ、第7図のプロセ
スに従い他のページがキヤツシユへ加えられ、レ
コード・カウントが再び8だけ増加される。 ここで再び第5図へ戻つて、読出動作について
キヤツシユ・アルゴリズムが完了した後、マイク
ロプロセツサは、バイパス・フアクタが超過され
たかどうかを決定する。もしバイパス・フアクタ
が超過されていれば、マイクロプロセツサは第6
a図の動作78でキヤツシユ状況をセツトてして
おり、キヤツシユ・アルゴリズムはその地点で終
つている。続いて、第5図において、マイクロプ
ロセツサはこのキヤツシユ状況を検査するだけで
よい。もしバイパス・フアクタが超過されていれ
ば、デイスクからホスト・プロセツサへデータを
直接に転送するのに必要な動作が通常の態様で設
定される。第5図のフアイル動作79は、データ
がフアイル(デイスク)へ転送されるか、又はそ
こからデータが転送される時にのみ必要である。
これは、全体的ヒツトの場合には不必要である。
次に、全てのデータ転送動作が実行され、割込リ
クエストをセツトすることによつて、コントロー
ラの動作は終了する。 もしバイパス・フアクタが超過されていなけれ
ば、マイクロプロセツサは第5図のプログラム通
路81をたどり、もし全体的ヒツトが生じていれ
ば(即ち、リクエストされたデータ・ブロツクの
全てがキヤツシユ中で発見されていれば)、キヤ
ツシユ・アルゴリズム中で設定されたキヤツシユ
からホスト・プロセツサへの転送動作が実行さ
れ、コントローラ動作が終了する。新しくリクエ
ストされたデータ・ブロツクをMRU状態へ変更
することは、第6b図のキヤツシユ・アルゴリズ
ムにおけるプログラム通路Aで既に達成されてい
る。 もしバイパス・フアクタが超過されておらず、
ミスが生じていれば、フアイル動作が発生され、
データ転送動作が実行され、コントローラ動作が
終了する。 これまでの説明は、主として「読出ミス」の場
合に関する。その場合、少なくとも1つのデー
タ・ブロツクがキヤツシユ・メモリ中で発見され
なかつた。読出ミスの動作は、キヤツシユ内容が
更新される必要がないため複雑ではない。第6a
図及び第6b図のキヤツシユ・アルゴリズムにお
いて、通路Aがとられており、メモリ管理動作
(即ち、リクエストされたデータ・ブロツクを
MRU状態へ更新すること)は、第6b図の動作
82で実行される。バイパス・フアクタが超過さ
れておらず、全体的ヒツトが生じているものと仮
定すると、マイクロプロセツサは第5図のプログ
ラム通路83をたどり、リクエストされたデータ
をキヤツシユからホスト・プロセツサへ転送する
動作が実行される。 或る時点で、ホスト・プロセツサはデイスク・
メモリ・ロケーシヨンへ新しいデータを書込むこ
とによつて古いデータと入替えたいと望むかも知
れない。そのような場合、キヤツシユが設けられ
ており、かつ第5図に示されるようにキヤツシユ
動作がリクエストされるものと仮定すれば、第6
a図及び第6b図のキヤツシユ・アルゴリズムが
実行される。通過書込動作を表示するため、通過
書込及び書込動作フラグがセツトされ、バイパ
ス・フアクタが超過されたかどうかを決定するた
め、リクエストが検査される。もし超過されてい
れば、データがキヤツシユ・メモリを通らないで
直接にシステムからデイスク・フアイルへ転送さ
れるべきことを示すため、通過書込フラグがリセ
ツトされる。次に、読出動作と関連して説明した
のと同じようにして、デイレクトリイ探索が実行
される。第6a図に示されるフローチヤートにお
いて、動作84は通過書込でない書込動作につい
てスキツプされる。何故ならば、ホスト・プロセ
ツサはキヤツシユへ書込まないからである。キヤ
ツシユ・メモリへ書込む必要がある通過書込動作
については、キヤツシユはホスト・プロセツサの
メイン・ストレージとインターフエイスしなけれ
ばならず、動作84はスキツプされてはならな
い。 ホスト・プロセツサが書込みたいデータをキヤ
ツシユが含んでいないものと仮定し、バイパス・
フアクタが超過され、かつ通過書込フラグがリセ
ツトされているものと仮定すると、プログラム通
路85,75,86が第6b図のキヤツシユ・ア
ルゴリズムの終りに至るまでとられる。ここで再
び第5図を参照すると、通過書込みでない書込動
作については、マイクロプロセツサはホスト・プ
ロセツサからデイスクへデータを直接に転送する
のに必要な動作を設定し、データ転送動作が実行
され、割込リクエストによつてコントローラ動作
が終了する。 書込ミスが生じ、バイパス・フアクタが超過さ
れていなければ、通過書込動作が実行されるべき
であり、第6b図の通路Dがとられる。もし書込
まれるべきデータが完全なブロツクより小さけれ
ば、ホスト・プロセツサからデイスクへデータを
直接に転送する動作が設定される。もし書込まれ
るべきデータが完全なブロツクであれば、動作5
3でページがキヤツシユへ加えられ、システムか
らキヤツシユへの転送動作が設定され、第6c図
の通路Fに沿つてキヤツシユからデイスクへの動
作が実行される。 もし書込ヒツトが生じており(即ち、書込まれ
るべきデイスク・メモリ・ロケーシヨンの少なく
とも1つのロケーシヨンからのデータが、キヤツ
シユ・メモリ中に現在記憶されており)、かつバ
イパス・フアクタが超過されていれば、第6b図
でプログラム通路87がとられ、書込まれつつあ
るデイスク・メモリ・ロケーシヨンに対応するデ
イレクトリイ及びLRUテーブルのページが削除
される。 バイパス・フアクタが超過されておらず、従つ
て通過書込動作が依然として有効であれば、
LRUテーブルが第6b図の動作82で更新され、
第6c図の通路Fでキヤツシユからデイスクへの
転送動作が設定される。 もし数ブロツクのデータが書込まれ、バイパ
ス・フアクタが超過されていなければ、ブロツク
全体のミスに関するシステムからキヤツシユへの
動作が第6b図で設定される。ヒツト・ブロツク
に対しては、キヤツシユへ書込むことによつて、
既にキヤツシユへ記憶されたデータを更新するこ
とが必要である。これは、最後のブロツクを除く
全てのブロツクに関して、第6c図の通路Hで達
成される。もし書込まれるべき最後のデータ・ブ
ロツクがヒツトであれば、システムからキヤツシ
ユへの動作は第6c図の通路5′で設定される。 書込動作のためにキヤツシユ・アルゴリズムを
終了した後、マイクロプロセツサは第5図のチヤ
ートに従つて動作を継続する。もしバイパス・フ
アクタが超過されていなければ、全ての必要なデ
ータ転送動作がキヤツシユ・アルゴリズムの中で
設定されており、単にそれを実行するだけでよ
い。しかし、キヤツシユ内容が更新されてしまう
まで、データはキヤツシユからデイスクへ転送さ
れることができない。従つて、システムからキヤ
ツシユへの動作が先ず実行され、次にデイスク・
フアイルを準備してデータを受取らせるためフア
イル動作が発生され、最後にキヤツシユからデイ
スクへの動作及びシステムからデイスクへの動作
が実行される。 もしバイパス・フアクタが超過されており、通
過書込フラグがリセツトされていれば、システム
からデイスクへの動作は設定されない。この動作
は第5図の動作88でなされなければならない。
その次に、フアイル動作の発生及び転送動作の実
行が続く。 第14a図乃至第14e図は第1図に示される
コントローラ20の詳細なブロツク図である。コ
ントローラの動作はサイクル・スチール読出動作
に関して説明される。ホスト・プロセツサによる
データのリクエストは、コントローラ20によつ
て自動的に処理される。 このコントローラの動作の大部分は、前記米国
特許第4038642号及び第4246637号に説明されるコ
ントローラの動作と同じであり、従つて詳細に説
明しない。簡単に説明すれば、ホスト・プロセツ
サはコントローラ20へメイン・ストレージ11
からの即値装置制御ブロツク(IDCB)を送る。
IDCBは、アドレス・バス100(第14c図)
を介して送られるI/O指令コード及びI/O装
置アドレスを含む(第1のワード)。検索される
べきデータを指定する第2のワードが、チヤネ
ル・データ・バス23(第14c図)を介して同
時に送出される。装置アドレス比較器102はバ
ス100上のアドレスを検査し、もしそれがI/
Oコントローラ20によつてサービスを受ける装
置に対応したアドレス・ジヤンパ104の1つに
一致すると、ロード・パルスが指令レジスタ10
6へ送られ、受取られたアドレスを該レジスタへ
記憶させる。更に、この出力信号はロード・パル
スとして装置制御ブロツク(DCB)レジスタ1
08(第14c図)へ与えられる。それは、該レ
ジスタへバス23からのデータ・ワードを記憶せ
るためである。更に、他の出力がANDゲート1
12(第14a図)の1つの入力へ行く線110
へ与えられる。指令及び装置アドレスがバス10
0へ置かれてから暫くして、ホスト・プロセツサ
はアドレス・ゲート線114を能動化する。比較
器102から出力が線110へ与えられた時、ア
ドレス・ゲート・リターン線116が能動化され
て、アドレス一致が生じたことをホスト・プロセ
ツサへ伝える。それに応答して、ホスト・プロセ
ツサは線118(第14a図)へデータ・ストロ
ーブ・パルスを送出する。 この最初の選択シーケンス中、ホスト・プロセ
ツサは、条件コード・イン・バス120(第14
a図)上に存在する条件コードを検査することに
よつて、コントローラ20の状況を検査する。上
記条件コードはレジスタ122から与えられる。
レジスタ122の内容は、コントローラ20の現
在の状況を反映するように、マイクロプロセツサ
によつて制御される。 前記のステツプが終つた後に、ホスト・プロセ
ツサはアドレス・ゲート線114を非能動化す
る。アドレス・ゲート線114は、AND回路1
12を介してアドレス・ゲート・リターン線11
6を非能動化する。これによつて、初期選択シー
ケンスは完了する。その後暫くして、指令レジス
タ106(第14c図)にある指令、及びレジス
タ108にあるデータ・ワードが、データ・バ
ス・イン・バスを介してマイクロプロセツサへ転
送される。マイクロプロセツサは指令を検査し、
コントローラ20の現在の状況に従つて、次に何
をなすべきかを決定する。 先ず第1に、コントローラは、ホスト・プロセ
ツサから一時に1つのDCBワードをサイクル・
スチールすることによつて、ホスト・プロセツサ
からDCBワードをフエツチする。これを達成す
るために、マイクロプロセツサはレジスタ108
からアドレス・カウンタ150(第14c図)へ
DCBアドレスをロードする。DCBアドレスは、
アドレス・カウンタ150からサイクル・スチー
ル・アドレス・レジスタ152へ転送される。
DCBは典型的には8個のワード(16バイト)を
含むので、マイクロプロセツサは16のカウントを
バイト・カウンタ153へセツトする。 ANDゲート157,158,159(第14
d図)へ与えられた入力信号に応答して、ラツチ
155の出力にサイクル・スチール・リクエスト
信号が発生される。次に、このサイクル・スチー
ル・リクエスト信号はANDゲート160(第1
4a図)へ与えられる。ラツチ162(第14a
図)からのサイクル・スチール・ポール捕捉信号
又は極性保持回路163からの出力が不在の時、
ANDゲート160はサイクル・スチール・リク
エスト・イン信号をホスト・プロセツサへ与え
る。 サイクル・スチール・リクエスト・イン信号に
応答して、ホスト・プロセツサはバス164(第
14a図)上にポール識別信号を送出する。ポー
ル識別信号はANDゲート166をセツトする。
サイクル・スチール・リクエスト信号が存在する
ものと仮定すると、極性保持回路168(第14
a図)は、ORゲート170及び極性保持回路1
72を介してANDゲート174の入力へ出力を
与える。ANDゲート174はポール・リターン
信号をホスト・プロセツサへ送る。ポール・リタ
ーン信号に応答して、ホスト・プロセツサは線1
75(第14a図)上にサービス・ゲート信号を
送出する。サービス・ゲート信号は、極性保持回
路163(第14b図)の出力にサイクル・スチ
ール・サービス・ゲート捕捉信号を発生する。こ
の信号は極性保持回路176(第14b図)の
CD端子へ与えられる。従つて、サービス・ゲー
ト・リターン信号がORゲート178によつて線
179へ与えられる。 線179上のサービス・ゲート・リターン信号
を受取つた後、ホスト・プロセツサはアドレス・
バス100を介してサイクル・スチール・アドレ
ス・レジスタ152からアドレスを受取る。この
アドレスは、最初の装置制御ブロツク(DCB)
ワードのアドレスである。次に、ホスト・プロセ
ツサはこのワードをフエツチし、それをチヤネ
ル・データ・バス23上に置く。このワードはサ
イクル・スチール・データ・レジスタ30へロー
ドされる。この時点で、マイクロプロセツサは2
のカウントだけアドレス・カウンタ150を増加
させ、2のカウントだけバイト・カウンタ153
を減少させる。カウンタ150にある新しいアド
レスは、次のサイクル・スチール・リクエスト・
イン信号をコントローラに準備させるため、レジ
スタ152へ転送される。次に、サイクル・スチ
ール・データ・レジスタ30にあるDCBワード
がマイクロプロセツサへ転送され、そこに記憶さ
れる。そして次のDCBワードを獲得するシーケ
ンスを開始するため、新しいサイクル・スチー
ル・リクエスト・イン信号がANDゲート160
(第14a図)によつて送出される。この手順は、
全てのDCBワードがマイクロプロセツサに記憶
されるまで継続する。全てのDCBワードが記憶
されると、バイト・カウンタ153の内容は0と
なり、線180が能動化される。 DCBワードの全てを得た後に、マイクロプロ
セツサは自動転送動作を実行するようにコントロ
ーラを設定する。最初、自動ラツチ182(第1
4b図)が自動転送モードを表示するためセツト
され、サイクル・スチール入力モード・ラツチ1
84(第14d図)が入力(即ち、装置読出し)
動作を表示するためセツトされる。これらラツチ
の各々からの出力は、コントローラ内の各種の制
御論理動作で使用され、サイクル・スチール入力
モード・ラツチ184からの出力は、サイクル・
スチール・サービス・ゲート捕捉信号の存在の下
で、ANDゲート186を介して線187上のサ
イクル入力インデイケータとしてホスト・プロセ
ツサへ与えられる。更に、マイクロプロセツサは
バイト・カウンタ153へ転送されるデータ・バ
イトの数を入れ、アドレス・カウンタ150へホ
スト・プロセツサのメイン・ストレージへ転送さ
れるデータの開始アドレスを入れる。アタツチメ
ント装置との通信は、リクエスト・アウト・シー
ケンスによつて設定される。マイクロプロセツサ
はタグ・レジスタ190(第14b図)へ適当な
制御情報をロードし、アタツチメント・データ・
レジスタ32(第14e図)へ必要なデータ又は
他の情報をロードする。更に、マイクロプロセツ
サは、線193へアタツチメント・データ・レジ
スタ満杯信号を与えるため、ラツチ192(第1
4d図)をセツトし、ラツチ184(第14d
図)を「出力モード」状態へリセツトし、リクエ
スト・アウト信号を与えるため、リクエスト・ア
ウト・フリツプ・フロツプ195(第14b図)
がセツトされる。 リクエスト・アウト信号に応答して、装置コン
トロール14(第1図)は承認リクエスト・アウ
ト線196を能動化する。線196上の信号は
ORゲート197を介してANDゲート198へ与
えられる。ゲート198に対する他の入力はオン
であるから、ストローブ・アウト・フリツプ・フ
ロツプ200がセツトされ、ストローブ・アウト
信号が装置コントロール14へ送られる。このス
トローブ・アウト・パルスに応答して、装置コン
トロール14は、それぞれタグ・バス202及び
アタツチメント・データ・バス25を介して、タ
グ・レジスタ190及びアタツチメント・デー
タ・レジスタ32から情報を受取る。更に、スト
ロープ・アウト信号はリクエスト・アウト・フリ
ツプ・フロツプ195をリセツトする。 装置コントロール14へ与えられた情報は、そ
れを能動化して、デイスク16の1つとの間で、
必要なデータ転送動作を実行せしめる。装置コン
トロール14がデータ転送の準備を完了する度
に、それはリクエスト・イン線204(第14d
図)を能動化する。ANDゲート206は、線2
04上の信号に応答して、ANDゲート207又
は208のいずれかが出力を与える時、承認リク
エスト・イン信号を発生する。出力転送について
は、ANDゲート207(第14b図)は、アタ
ツチメント・データ・レジスタ32(第14e
図)が満杯でありかつ適当な制御信号が線209
上で受取られる時、出力を与える。デイスクから
データが読取られる入力転送については、AND
ゲート208は、アタツチメント・データ・レジ
スタが満杯であつてデータ転送の準備が完了して
おり、かつ適当な制御信号が線210上で受取ら
れる時、出力を与える。 線209及び210へ印加される制御信号、及
びコントローラの他の個所で使用される同様の制
御信号は、第15a図及び第15b図を参照して
更に明確に理解することができる。第15a図に
示されるように、コントローラは3個のデータ・
レジスタ30,32,44を含み、これら3つの
レジスタの中の任意の2つの間でデータを転送す
る手段が設けられている。かくて、これらレジス
タの間で、実質的に6つのデータ通路が存在す
る。コントローラは第15b図に示される回路を
含む。この回路は、マイクロプロセツサの制御の
下で、実行されている転送の種類に従つて、制御
信号を与える。例えば、通路レジスタ212は通
路デコーダ214へ3ビツト出力を与える。通路
デコーダ214は、I/Oコントローラ回路の残
りの部分へ適当な制御信号を与える。「通路4又
は6」の如く代替的な通路制御信号を表示する論
理入力(例えば、ANDゲート207及び208
(第14b図)への入力)は、ORゲートを介し
て適当な通路デコーダ出力信号へカツプルされる
ことができる。 ここで再び第14a図乃至第14e図を参照す
ると、入力モード転送の場合に、装置コントロー
ルは、線220へストローブ・イン信号を与える
ことによつて、承認リクエスト・イン信号に応答
する。それによつて、アタツチメント・データ・
レジスタ32は、アタツチメント・データ・バス
25に現われるデータ・ワードをロードされる。
更に、このストローブ・イン信号は、ANDゲー
ト222及び224へ与えられる。それによつ
て、ラツチ192は、アタツチメント・データ・
レジスタが満杯であることを表示するためにセツ
トされる。 もしアタツチメント・データ・レジスタ中のワ
ードがキヤツシユに置かれるべきでなければ、コ
ントローラは米国特許第4246637号に説明されて
いるように動作する。簡単に説明すれば、AND
ゲート226(第14e図)へ与えられた「通路
1」信号は、サイクル・スチール・データ・レジ
スタ30(第14c図)へ至る線227上にロー
ド・パルスを発生する。それによつて、レジスタ
30は、アタツチメント・データ・レジスタによ
つてサイクル・スチール・データ・バス31上に
置かれたデータを記憶する。更に、このロード・
パルスは、ANDゲート159へ1つの入力とし
て与えられる。ANDゲート159の出力は、サ
イクル・スチール・データ・レジスタ30が満杯
であることを示すため、フリツプ・フロツプ22
9をセツトする。更に、ANDゲート159の出
力はラツチ155をセツトする。それによつて、
サイクル・スチール・リクエスト・イン信号が、
再びANDゲート160からホスト・プロセツサ
へ与えられる。このサイクル・スチール・リクエ
スト・イン信号は信号シーケンスを開始する。そ
れによつて、ホスト・プロセツサはサイクル・ス
チール・データ・レジスタ30からデータ・ワー
ドを受取る。次にサイクル・スチール・リクエス
ト・イン信号がオフにされ、サイクル・スチー
ル・データ・レジスタ30が今や空であることを
表示するため、フリツプ・フロツプ229がリセ
ツトされる。前記のステツプは、装置コントロー
ル14からホスト・プロセツサへ転送される各デ
ータ・ワードについて繰返される。バイト・カウ
ンタ153は、転送される各ワードについて2の
カウントだけ減少され、アドレス・カウンタ15
0は、2だけ増加される。装置読出動作について
は、カウンタ153中の値が0に達した時、マイ
クロプロセツサは適当な割込シーケンスを開始す
る。 装置書込動作において、デイスクは典型的には
レコードの増分を書込むように設計される。ホス
ト・プロセツサから書込まれるべきバイトの数
は、レコードのバイト数より少なくてよい。この
場合、バイト・カウンタ153はゼロへ減少され
るが、装置コントロール14は依然として書込動
作を完了するため多くのデータを必要とする。も
しカウンタ153中の値がゼロで、レジスタ30
及びレジスタ32が共に空であつて、書込まれる
べきデータが存在せず、他のリクエスト・イン信
号が装置コントロール14から受取られると、
「ゼロ充填」信号がANDゲート152′(第14
d図)を能動化するように与えられる。それによ
つて、ラツチ236(第14d図)がセツトさ
れ、プロセスの継続が許される。更に、ゼロ充填
信号がレジスタ32へ与えられ、それをゼロで充
填する。これらのゼロは、レコードの終りに達し
て追加データに対するリクエストが受取られなく
なるまで、デイスクへ書込まれる。 もし装置コントロール14からアタツチメン
ト・データ・レジスタ32へ受取られたデータが
先ずキヤツシユ・メモリへ転送されるべきであれ
ば、動作は前述したところと同じであるが、デー
タは異つたレジスタ(即ち、キヤツシユ・デー
タ・レジスタ44)へ転送される。この点に関し
て、「通路2」信号が第15b図の通路デコーダ
によつて与えられる。かくて、能動信号をAND
ゲート226(第14e図)へ与えてサイクル・
スチール・データ・レジスタ30へロード信号を
与える代りに、デコーーダは能動信号をANDゲ
ート230へ与える。それによつて、キヤツシ
ユ・データ・レジスタ44は、アタツチメント・
データ・レジスタ32からバス31へ送出された
データをロードされる。デイスクからキヤツシユ
への転送を実行する場合、マイクロプロセツサは
キヤツシユ・アクチブ・ラツチ232(第14e
図)をセツトする。アタツチメント・データ・レ
ジスタ32は現在満杯であり、キヤツシユ・デー
タ・レジスタ44は空であるから、「通路2」信
号によりロード信号がキヤツシユ・データ・レジ
スタ44へ与えられ、同時にANDゲート234
を介して、ロード・レジスタ・ラツチ236がセ
ツトされる。それによつて、ラツチ192は
ANDゲート238を介してリセツトされ、キヤ
ツシユ・メモリ・レジスタ満杯ラツチ240が
ANDゲート242を介してセツトされる。ラツ
チ192のリセツトはANDゲート208(第1
4b図)を介してフリツプ・フロツプ206をリ
セツトする。それによつて、承認リクエスト・イ
ン信号が終了し、コントローラはレジスタ32が
今や次のワードを受取る準備を完了していること
を知らされる。 第16図は、後述するリクエスト論理256
(第14e図)及びANDゲート290(第14e
図)のための結合論理回路のブロツク図である。
論理回路は反転ANDゲート251a―251c
と、253,253a及び253bのような
NOTゲートと、否定ORゲート255とを含む。
反転ANDゲート251a―251cの各々は、
全ての入力が高である時低レベル出力を与え、他
の場合には高出力を与える。NOTゲート253
a及び253bはその入力を反転し、否定ORゲ
ート255は、その入力のいずれかが低の時高レ
ベル出力を与える。最初のデータ・ワードがキヤ
ツシユ・データ・レジスタ44(第14e図)に
記憶され、線250,252,254の全てがア
クチプになると、リクエスト論理256はゲート
255から出力信号を与え、書込サイクル・ラツ
チ257をセツトする。それによつてリング・カ
ウンタ258が能動化される。リング・カウンタ
258は、通常の3ステージ6状態、又は6ステ
ージ12状態の歩行カウンタであつてよい。 マイクロプロセツサは、転送されつつあるデー
タのために、キヤツシユ・メモリ中の開始アドレ
スを、アドレス・カウンタ260(第14e図)
へロードしており、転送されつつあるバイトの数
を、特殊バイト・カウンタ262へロードしてい
る。キヤツシユ中で利用可能なページは、必ずし
も連続しているとは限らないので、いくつかの動
作が必要となるかも知れない。例えば、もし10個
のレコードが転送される必要があり、キヤツシユ
中8レコードを含むページの8番目のレコードか
ら記憶されている時、転送は3つの別々の動作で
実行される。最初の転送はレコード1を転送し、
第2の転送はレコード2―9を完全なキヤツシ
ユ・ページへ転送し、第3の転送はレコード10
を第3のキヤツシユ・ページへ転送する。かく
て、第1及び第3の動作では、特殊バイト・カウ
ンタ262は256バイトでセツトされ、第2動
作では、2048バイトへセツトされる。 デコーダ264(第14e図)は、リング・カ
ウンタ258からの出力と、サイクルの種類を示
す線259上の信号とを受取り、図示されるよう
な制御信号を与える。これらの制御信号として
は、行/列デコーダ266の出力を能動化するた
めの行時間能動信号、バス268上のデータをバ
ス269及び270によつて指定されたキヤツシ
ユ・メモリ282へロードするためのストローブ
信号、アドレス・カウンタ260を増加させる信
号、特殊バイト・カウンタ262を減少させる信
号がある。デコーダ264は、書込ラツチ257
をリセツトするため、そのラツチへサイクル終了
信号を送る。 アタツチメント・データ・レジスタ32中のワ
ードがキヤツシユ・データ・レジスタ44へ転送
されると、そのワードは前述したようにしてキヤ
ツシユ・メモリへ転送されるので、新しいワード
が装置コントロール14からアタツチメント・デ
ータ・レジスタ32へ入れられる。アタツチメン
ト・データ・レジスタ満杯ラツチ192が再びセ
ツトされ、「通路2」信号が与えられ、キヤツシ
ユ書込サイクルの終りにラツチ240がリセツト
されると、ANDゲート234が能動化され、ラ
ツチ236がセツトされる。かくて、再びキヤツ
シユ・データ・レジスタ44やロードされると共
に、ラツチ240がセツトされる。これは、線2
54上のリクエスト論理信号を高にし、他の書込
サイクルを開始する。このプロセスは、リクエス
トされたデータの全てが転送されるまで継続す
る。 データ処理システムでキヤツシユ・メモリを使
用する場合、キヤツシユ・メモリ動作は「透明」
であることが望ましい。即ち、データがキヤツシ
ユ・メモリからホスト・プロセツサへ転送される
時、その転送は、デイスクから転送と全く同じも
のであることが望ましい。また、デイスクへの書
込みと同じようにキヤツシユ・メモリへ書込むこ
とが望ましく、デイスク・フアイルへ直接書込む
場合と同じようなゼロ充填モードの動作が実行さ
れねばならない。第14e図及び第16図に示さ
れるように、特殊バイト・カウンタ262がゼロ
値へ達していても256バイト・レコードの終り
に達していない場合、線400及び402上の信
号レベルは共に高になる。このような状態の下で
は、反転ANDゲート251a及び251bから
の出力は高となるが、反転ANDゲート251c
への全ての入力は高となるのでその出力は低とな
る。かくて、否定ORゲート255の出力に、書
込サイクル・リクエスト信号が生じ、ゼロ充填動
作を実行するため、低レベルのゼロ充填モード信
号がキヤツシユ・データ・レジスタ44へ与えら
れる。かくて、書込サイクルは、レコードの終り
である256バイト境界に達するまで、ゼロをキ
ヤツシユ・メモリへ書き続ける。レコードの終り
に達すると、線402上の信号は低レベルとな
り、読出サイクル・リクエスト及び書込サイク
ル・リクエストのいずれもリクエスト論理から与
えられない。 リクエストされたデータを、キヤツシユ・メモ
リからサイクル・スチール・データ・レジスタ3
0へ転送するため(データは、レジスタ30から
ホスト・プロセツサへ通常の態様で転送されるこ
とができる)、特殊バイト・カウンタ262及び
アドレス・カウンタ260が、再び転送されるべ
きバイトの数及びキヤツシユの開始アドレスへセ
ツトされ、通路3のみが使用されているから、低
論理信号が線252へ与えられる。リング・カウ
ンタが走る時、デコーダ264は前に与えられた
出力を同じ順序で与える。例外として、ストロー
プ書込パルスは与えられないので、キヤツシユ・
メモリ282は、バス268を介してアドレスさ
れた内容をキヤツシユ・データ・レジスタ44へ
与える。最後の信号であつて、これはANDゲー
ト284及び288へ与えられて、レジスタ44
へキヤツシユ・メモリ282からデータを受取ら
せ、かつラツチ240をセツトする。それは、レ
ジスタ44が今や満杯であり、レジスタ30が空
であることを表示するためである。ラツチ240
の出力はANDゲート289(第14d図)を介
してレジスタ236をセツトし、かくてANDゲ
ート226(第14e図)を能動化する。AND
ゲート226はロード・パルスをレジスタ30へ
与える。それは、レジスタ44からレジスタ30
へデータをロードするためである。次にホスト・
プロセツサは、通常の態様で、サイクル・スチー
ル・データ・レジスタ30の内容を受取る。 上記の手順は、全てのデータが転送されるまで
繰返される。全てのデータが転送された時点で、
割込シーケンスが開始される。 具体的に説明すると、動作が完了した時、マイ
クロプロセツサは割込識別ワードを識別レジスタ
300へロードし、適当な条件コード(例えば、
「装置終了」コード)を条件コード・レジスタ1
22へロードする。ホスト・プロセツサから準備
指令が発生される間、割込優先レベル信号がコン
トローラ20へ割当てられ、かつレベル準備レジ
スタ306へ記憶される。線308上に信号が発
生した時、デコーダ310はリクエスト・イン・
バス312にある複数の線の1本を付勢する。 ホスト・プロセツサは、バス164へポール識
別信号を送出することによつて、リクエスト・イ
ン・バス312上の信号に応答する。ポール識別
信号は、比較器316の中で、レベル準備レジス
タ306に記憶されたI/Oコントローラ優先順
位レベルと比較される。一致が検出されると、双
安定極性保持回路318のCD端子へ出力が印加
される。回路318は、ORゲート170を介し
て他の極性保持回路172へ出力を与える。極性
保持回路172の出力は、ANDゲート174の
1つの入力へ与えられる。ANDゲート174は
ポール・リターン信号をホスト・プロセツサへ送
り、ホスト・プロセツサは、線175へサービ
ス・ゲート信号を送出することによつて応答す
る。サービス・ゲート信号は極性保持回路328
へ与られる。極性保持回路328の出力は、ホス
ト・プロセツサへ線179を介してサービス・ゲ
ート・リターン信号を戻すため、ORゲート17
8を能動化する。同時に、割込識別レジスタ30
0(第14c図)の内容がデータ・バス23上に
置かれる。サービス・ゲート・リターン信号は、
ホスト・プロセツサへ、情報がバス23及びバス
120上に存在することを知らせる。ホスト・プ
ロセツサは、この情報を受取つて記憶すると共
に、初期接続手順を終了させるため、線175
(第14a図)を非能動化する。この割込処理の
詳細な説明は、前記米国特許第4246637号及び第
4038642号でなされている。 これまで説明しなかつたが、第14a図乃至第
14e図に示される各種の論理コンポーネント
(例えばANDゲート222(第14d図))は、
パリテイ(P)検査入力を有するものとして示さ
れている。当技術分野で周知の如く、各種のバス
上のデータは、一般的にパリテイ・ビツトを設け
られている。各種のデータ転送の間にパリテイ検
査(例えば第14e図の403)が実行される。
パリテイ検査でエラーが生じると、リトライが実
行される。 これまで説明したようにキヤツシユ・メモリを
使用するI/Oコントローラは、ホスト・プロセ
ツサ及び1つ又はそれ以上のアタツチメント装置
(例えばデイスク)を有するデータ処理システム
の動作時間を顕著に改善する。何故ならば、それ
は、ホスト・プロセツサがアタツチメント装置に
アクセスする回数を減少させるからである。更
に、デイレクトリイ・テーブルの使用により、全
てのデータ・ブロツクがホーム・ポジシヨンにリ
ストされるか、又はホーム・ポジシヨンから始ま
る衝突リスト中に含ませられるので、リクエスト
されたデータ・ブロツクが現在キヤツシユ・メモ
リに記憶されているかどうかの決定が非常に容易
になる。従つて効率が改善される。リクエストさ
れたレコードがデータ・ブロツクの後方部分で生
じた時、後続するデータ・ブロツクをキヤツシユ
へ予め転送する「プレステージング」動作によつ
て、キヤツシユ・メモリの効率が更に改善され
る。 1つの変更例として、キヤツシユ・メモリそれ
自体は、I/Oコントローラの中へ物理的に設け
られる必要はなく、第1図の装置コントロール1
4の中に設けられてもよい。
すれば、平均実効ブロツク長が長くなれば、効率
が改善され利点が生じることが分る。ブロツク長
が長くなれば、キヤツシユ・メモリへ多くのデー
タを転送することができ、その結果、将来の読出
ヒツトの確率は高くなる。しかし、実際的な見地
からは、平均実効ブロツク長が長くなれば、或る
限度までキヤツシユ・メモリの効率は改善される
が、その限度を超えると、ブロツク長の増加が効
率を低下させる。これは読出確率がそれ程高くな
い情報が過度に記憶され、メモリ容量を占拠する
ためである。メモリ容量は、より高い確率を有す
る情報のためにより良好に使用されることができ
る。一般的には、論理限界T1及びT2を適当にセ
ツトすることによつて、或る最適の平均実効ブロ
ツク長を決定することができる。適当な論理限界
レベルの組を前に説明したが、その場合、デー
タ・ブロツクの最後の4分の1(コータ)にある
リクエストされたレコードのポジシヨンは、全部
で3個のブロツクを転送する結果となり、デー
タ・ブロツクの第2及び第3コータにあるリクエ
ストされたレコードのポジシヨンは、全部で2つ
のブロツクを転送する結果となる。しかし、平均
実効長の大きいものが良いかどうかは、ホスト・
プロセツサによつてリクエストされた一連のレコ
ードの平均の長さに依存する。もし平均シーケン
ス長が非常に長ければ、平均実効ブロツク長の大
きい方が効率を改善して利点を与える。 不幸にして、所与の顧客に対してどのような平
均実効ブロツク長が最適であるかを前もつて知る
方法はなく、更に、最適ブロツク長の値は、所与
に顧客についてタスクごとに変化する。従つて、
効率を最適化するため、論理限界レベルをダイナ
ミツクに制御することが望ましい。これは、シス
テム効率の種々の局面を連続的に評価し、それに
従つて論理限界を変化させることによつて達成さ
れる。しかし実施例ではもつと簡単な方法が選択
される。この方法によれば、論理限界レベルは読
出ヒツト率に従つて連続的に変化させられる。読
出ヒツト率は、システム効率の最重要な尺度の1
つである。読出ヒツト率は、読出ヒツトを生じる
読出リクエストの百分率である。 論理限界T1及びT2をダイナミツクに調整する
方法をこれから説明する。比較的直截な方法とし
て、マイクロプロセツサはデイスク・アクセスの
数を計数する第1のカウンタ、デイスク読出アク
セスの数を計数する第2のカウンタ、読出ヒツト
の数を計数する第3のカウンタを含んでよい。マ
イクロプロセツサは、読出ヒツトの数をデイスク
読出アクセスの数で除算することによつて読出ヒ
ツト率を計算する。読出ヒツト率が計算されるの
は、少なくとも1000回のデイスク・アクセス、少
なくとも250回のデイスク読出アクセス、少なく
とも50回の読出ヒツトが生じた時である。これら
最少値の全てが満足させられると、読出ヒツト率
が計算され、3つのカウンタの全てがゼロへリセ
ツトされる。サイクルは、3つの最少値の全てが
再び満足させられるまで継続し、新しい読出ヒツ
ト率が計算される。 平均実効ブロツク長は、T1及びT2を変化させ
ることによつて、計算された読出ヒツト率に従つ
て変更される。かくて、T1及びT2は、予め選択
された初期値にセツトされることができ、読出ヒ
ツト率は、前記の最少値が生じた後に計算され
る。注意すべきは、読出ヒツトの数がT1及びT2
の選択によつて影響を受ける唯一の数値であるこ
とである。 最初の読出ヒツト率が計算された後、実効長の
平均値を単一ステツプだけ増加させるように、
T1及びT2の新しい組が選択される。新しい読出
ヒツト率が計算され、前に計算された値と比較さ
れる。もし新しい読出ヒツト率が大きければ、再
びT1及びT2が変更され、平均実効ブロツク長が、
単一ステツプだけ増加するようにされる。 T1及びT2の変更は、新しく計算された読出ヒ
ツト率が、前に計算された値より小さくなるまで
継続する。前の値より小さくなると、論理限界は
最適の読出ヒツト率が生じた前のレベルへ戻され
る。もし所望ならば、論理限界を前の値へ戻した
後に、確認サイクルが実行されてよい。確認サイ
クルは、通常の評価時間の2倍だけ続き、最新の
論理限界が依然として最良の読出ヒツト率を生じ
ることを確認するサイクルである。 最終的に選択された論理限界は、20又はそれ以
上の標準評価時間の間維持されてよい。その時間
の終りに、新しい評価サイクルが再び取られて、
最大読出ヒツト率に対応する最適論理限界を決定
する。後続する評価において、論理限界レベルが
変更されて、読出ヒツト率が減少するまで、平均
実効ブロツク長が増加又は減少される。次に、最
適論理限界が発見されたことを確かめるため、読
出ヒツト率が減少するまで、平均実効ブロツク長
が反対方向へ変化させられ、次いで、確認サイク
ルが最良の論理限界レベルで実行される。それ
は、論理限界レベルが望ましいものであることを
確かめるためである。 ここで第6b図へ戻つて、もしブロツクのいず
れもミスでなければ、デイスクからキヤツシユへ
の動作は必要でなく、マイクロプロセツサは第6
b図の下部からキヤツシユ・アルゴリズムを出
る。しかし、ミスが生じると、マイクロプロセツ
サは、スタートのRBAをセツトしかつキヤツシ
ユ状況を「ミス」へセツトすることによつてデイ
スクからキヤツシユへの転送動作を準備する。デ
イスクからキヤツシユへの転送を開始する前に、
マイクロプロセツサは「プリフエツチ」の計算を
実行する。それは、後に第12a図乃至第12c
図及び第13図を参照して詳細に説明するよう
に、追加のデータ・ブロツクを転送すべきかどう
かを決定するためである。 第13図はプリフエツチ計算のフローチヤート
である。プリフエツチ動作が実行されるのは、リ
クエストされた一連のブロツク中の最後のブロツ
クがキヤツシユ・メモリ中に発見されない時であ
る。もし最後のブロツクがヒツトであれば、キヤ
ツシユ・アルゴリズムは終り、コントローラ動作
は第5図に示されるように進行し、ミスのデー
タ・ブロツクのみが転送される。最後にリクエス
トされたブロツクがミスであつたと仮定すると、
マイクロプロセツサは、ミスになつたブロツクの
最後の4分の1(レコード6及び7)がリクエス
トされたのかどうかを決定する。もしそうであれ
ば、2のプリフエツチ・ブロツク・カウントがセ
ツトされる。もしそうでなければ、マイクロプロ
セツサは、最後のブロツクの第2又は第3のコー
タ(4分の1)部分がリクエストされたのかどう
かを決定する。もしそうでなければ、プリフエツ
チの必要はなく、キヤツシユ・アルゴリズムは終
る。もし最後のブロツクの第2又は第3コータ部
分がリクエストされたのであれば、1のプリフエ
ツチ・ブロツク・カウントがセツトされる。次に
マイクロプロセツサは、現在のブロツク及びハツ
シユ・エントリイ・ナンバーを増加させ、かつ第
3図に示されるようにして、ブロツクbのために
デイレクトリイ・テーブルの探索を実行する。も
しブロツクbが既にキヤツシユにあることが分る
と、キヤツシユ・アルゴリズムは終り、コントロ
ーラ動作は第5図に示されるように進行する。ブ
ロツクaの最後の4分の1がリクエストされた場
合でも、ブロツクbが既にキヤツシユに存在する
ならば、ブロツクcをキヤツシユへ転送する利点
はない。 もしブロツクbがキヤツシユに発見されなけれ
ば、第7図のプロセスを介して新しいページが加
えられ、レコード・カウントが8だけ増加され
て、追加ブロツクの転送を示す。次にプリフエツ
チ・ブロツク・カウントが1だけ減少される。も
し1つのブロツクのみがリクエストされたなら
ば、キヤツシユ・アルゴリズムは終り、リクエス
トされたブロツクは、追加のブロツクbと共にキ
ヤツシユへ転送される。もし2ブロツクのプリフ
エツチが表示されていれば、現在のブロツク及び
ハツシユ・ナンバーが再び増加され、ブロツクc
に対する探索が実行される。もしブロツクcがキ
ヤツシユ中に発見されなければ、第7図のプロセ
スに従い他のページがキヤツシユへ加えられ、レ
コード・カウントが再び8だけ増加される。 ここで再び第5図へ戻つて、読出動作について
キヤツシユ・アルゴリズムが完了した後、マイク
ロプロセツサは、バイパス・フアクタが超過され
たかどうかを決定する。もしバイパス・フアクタ
が超過されていれば、マイクロプロセツサは第6
a図の動作78でキヤツシユ状況をセツトてして
おり、キヤツシユ・アルゴリズムはその地点で終
つている。続いて、第5図において、マイクロプ
ロセツサはこのキヤツシユ状況を検査するだけで
よい。もしバイパス・フアクタが超過されていれ
ば、デイスクからホスト・プロセツサへデータを
直接に転送するのに必要な動作が通常の態様で設
定される。第5図のフアイル動作79は、データ
がフアイル(デイスク)へ転送されるか、又はそ
こからデータが転送される時にのみ必要である。
これは、全体的ヒツトの場合には不必要である。
次に、全てのデータ転送動作が実行され、割込リ
クエストをセツトすることによつて、コントロー
ラの動作は終了する。 もしバイパス・フアクタが超過されていなけれ
ば、マイクロプロセツサは第5図のプログラム通
路81をたどり、もし全体的ヒツトが生じていれ
ば(即ち、リクエストされたデータ・ブロツクの
全てがキヤツシユ中で発見されていれば)、キヤ
ツシユ・アルゴリズム中で設定されたキヤツシユ
からホスト・プロセツサへの転送動作が実行さ
れ、コントローラ動作が終了する。新しくリクエ
ストされたデータ・ブロツクをMRU状態へ変更
することは、第6b図のキヤツシユ・アルゴリズ
ムにおけるプログラム通路Aで既に達成されてい
る。 もしバイパス・フアクタが超過されておらず、
ミスが生じていれば、フアイル動作が発生され、
データ転送動作が実行され、コントローラ動作が
終了する。 これまでの説明は、主として「読出ミス」の場
合に関する。その場合、少なくとも1つのデー
タ・ブロツクがキヤツシユ・メモリ中で発見され
なかつた。読出ミスの動作は、キヤツシユ内容が
更新される必要がないため複雑ではない。第6a
図及び第6b図のキヤツシユ・アルゴリズムにお
いて、通路Aがとられており、メモリ管理動作
(即ち、リクエストされたデータ・ブロツクを
MRU状態へ更新すること)は、第6b図の動作
82で実行される。バイパス・フアクタが超過さ
れておらず、全体的ヒツトが生じているものと仮
定すると、マイクロプロセツサは第5図のプログ
ラム通路83をたどり、リクエストされたデータ
をキヤツシユからホスト・プロセツサへ転送する
動作が実行される。 或る時点で、ホスト・プロセツサはデイスク・
メモリ・ロケーシヨンへ新しいデータを書込むこ
とによつて古いデータと入替えたいと望むかも知
れない。そのような場合、キヤツシユが設けられ
ており、かつ第5図に示されるようにキヤツシユ
動作がリクエストされるものと仮定すれば、第6
a図及び第6b図のキヤツシユ・アルゴリズムが
実行される。通過書込動作を表示するため、通過
書込及び書込動作フラグがセツトされ、バイパ
ス・フアクタが超過されたかどうかを決定するた
め、リクエストが検査される。もし超過されてい
れば、データがキヤツシユ・メモリを通らないで
直接にシステムからデイスク・フアイルへ転送さ
れるべきことを示すため、通過書込フラグがリセ
ツトされる。次に、読出動作と関連して説明した
のと同じようにして、デイレクトリイ探索が実行
される。第6a図に示されるフローチヤートにお
いて、動作84は通過書込でない書込動作につい
てスキツプされる。何故ならば、ホスト・プロセ
ツサはキヤツシユへ書込まないからである。キヤ
ツシユ・メモリへ書込む必要がある通過書込動作
については、キヤツシユはホスト・プロセツサの
メイン・ストレージとインターフエイスしなけれ
ばならず、動作84はスキツプされてはならな
い。 ホスト・プロセツサが書込みたいデータをキヤ
ツシユが含んでいないものと仮定し、バイパス・
フアクタが超過され、かつ通過書込フラグがリセ
ツトされているものと仮定すると、プログラム通
路85,75,86が第6b図のキヤツシユ・ア
ルゴリズムの終りに至るまでとられる。ここで再
び第5図を参照すると、通過書込みでない書込動
作については、マイクロプロセツサはホスト・プ
ロセツサからデイスクへデータを直接に転送する
のに必要な動作を設定し、データ転送動作が実行
され、割込リクエストによつてコントローラ動作
が終了する。 書込ミスが生じ、バイパス・フアクタが超過さ
れていなければ、通過書込動作が実行されるべき
であり、第6b図の通路Dがとられる。もし書込
まれるべきデータが完全なブロツクより小さけれ
ば、ホスト・プロセツサからデイスクへデータを
直接に転送する動作が設定される。もし書込まれ
るべきデータが完全なブロツクであれば、動作5
3でページがキヤツシユへ加えられ、システムか
らキヤツシユへの転送動作が設定され、第6c図
の通路Fに沿つてキヤツシユからデイスクへの動
作が実行される。 もし書込ヒツトが生じており(即ち、書込まれ
るべきデイスク・メモリ・ロケーシヨンの少なく
とも1つのロケーシヨンからのデータが、キヤツ
シユ・メモリ中に現在記憶されており)、かつバ
イパス・フアクタが超過されていれば、第6b図
でプログラム通路87がとられ、書込まれつつあ
るデイスク・メモリ・ロケーシヨンに対応するデ
イレクトリイ及びLRUテーブルのページが削除
される。 バイパス・フアクタが超過されておらず、従つ
て通過書込動作が依然として有効であれば、
LRUテーブルが第6b図の動作82で更新され、
第6c図の通路Fでキヤツシユからデイスクへの
転送動作が設定される。 もし数ブロツクのデータが書込まれ、バイパ
ス・フアクタが超過されていなければ、ブロツク
全体のミスに関するシステムからキヤツシユへの
動作が第6b図で設定される。ヒツト・ブロツク
に対しては、キヤツシユへ書込むことによつて、
既にキヤツシユへ記憶されたデータを更新するこ
とが必要である。これは、最後のブロツクを除く
全てのブロツクに関して、第6c図の通路Hで達
成される。もし書込まれるべき最後のデータ・ブ
ロツクがヒツトであれば、システムからキヤツシ
ユへの動作は第6c図の通路5′で設定される。 書込動作のためにキヤツシユ・アルゴリズムを
終了した後、マイクロプロセツサは第5図のチヤ
ートに従つて動作を継続する。もしバイパス・フ
アクタが超過されていなければ、全ての必要なデ
ータ転送動作がキヤツシユ・アルゴリズムの中で
設定されており、単にそれを実行するだけでよ
い。しかし、キヤツシユ内容が更新されてしまう
まで、データはキヤツシユからデイスクへ転送さ
れることができない。従つて、システムからキヤ
ツシユへの動作が先ず実行され、次にデイスク・
フアイルを準備してデータを受取らせるためフア
イル動作が発生され、最後にキヤツシユからデイ
スクへの動作及びシステムからデイスクへの動作
が実行される。 もしバイパス・フアクタが超過されており、通
過書込フラグがリセツトされていれば、システム
からデイスクへの動作は設定されない。この動作
は第5図の動作88でなされなければならない。
その次に、フアイル動作の発生及び転送動作の実
行が続く。 第14a図乃至第14e図は第1図に示される
コントローラ20の詳細なブロツク図である。コ
ントローラの動作はサイクル・スチール読出動作
に関して説明される。ホスト・プロセツサによる
データのリクエストは、コントローラ20によつ
て自動的に処理される。 このコントローラの動作の大部分は、前記米国
特許第4038642号及び第4246637号に説明されるコ
ントローラの動作と同じであり、従つて詳細に説
明しない。簡単に説明すれば、ホスト・プロセツ
サはコントローラ20へメイン・ストレージ11
からの即値装置制御ブロツク(IDCB)を送る。
IDCBは、アドレス・バス100(第14c図)
を介して送られるI/O指令コード及びI/O装
置アドレスを含む(第1のワード)。検索される
べきデータを指定する第2のワードが、チヤネ
ル・データ・バス23(第14c図)を介して同
時に送出される。装置アドレス比較器102はバ
ス100上のアドレスを検査し、もしそれがI/
Oコントローラ20によつてサービスを受ける装
置に対応したアドレス・ジヤンパ104の1つに
一致すると、ロード・パルスが指令レジスタ10
6へ送られ、受取られたアドレスを該レジスタへ
記憶させる。更に、この出力信号はロード・パル
スとして装置制御ブロツク(DCB)レジスタ1
08(第14c図)へ与えられる。それは、該レ
ジスタへバス23からのデータ・ワードを記憶せ
るためである。更に、他の出力がANDゲート1
12(第14a図)の1つの入力へ行く線110
へ与えられる。指令及び装置アドレスがバス10
0へ置かれてから暫くして、ホスト・プロセツサ
はアドレス・ゲート線114を能動化する。比較
器102から出力が線110へ与えられた時、ア
ドレス・ゲート・リターン線116が能動化され
て、アドレス一致が生じたことをホスト・プロセ
ツサへ伝える。それに応答して、ホスト・プロセ
ツサは線118(第14a図)へデータ・ストロ
ーブ・パルスを送出する。 この最初の選択シーケンス中、ホスト・プロセ
ツサは、条件コード・イン・バス120(第14
a図)上に存在する条件コードを検査することに
よつて、コントローラ20の状況を検査する。上
記条件コードはレジスタ122から与えられる。
レジスタ122の内容は、コントローラ20の現
在の状況を反映するように、マイクロプロセツサ
によつて制御される。 前記のステツプが終つた後に、ホスト・プロセ
ツサはアドレス・ゲート線114を非能動化す
る。アドレス・ゲート線114は、AND回路1
12を介してアドレス・ゲート・リターン線11
6を非能動化する。これによつて、初期選択シー
ケンスは完了する。その後暫くして、指令レジス
タ106(第14c図)にある指令、及びレジス
タ108にあるデータ・ワードが、データ・バ
ス・イン・バスを介してマイクロプロセツサへ転
送される。マイクロプロセツサは指令を検査し、
コントローラ20の現在の状況に従つて、次に何
をなすべきかを決定する。 先ず第1に、コントローラは、ホスト・プロセ
ツサから一時に1つのDCBワードをサイクル・
スチールすることによつて、ホスト・プロセツサ
からDCBワードをフエツチする。これを達成す
るために、マイクロプロセツサはレジスタ108
からアドレス・カウンタ150(第14c図)へ
DCBアドレスをロードする。DCBアドレスは、
アドレス・カウンタ150からサイクル・スチー
ル・アドレス・レジスタ152へ転送される。
DCBは典型的には8個のワード(16バイト)を
含むので、マイクロプロセツサは16のカウントを
バイト・カウンタ153へセツトする。 ANDゲート157,158,159(第14
d図)へ与えられた入力信号に応答して、ラツチ
155の出力にサイクル・スチール・リクエスト
信号が発生される。次に、このサイクル・スチー
ル・リクエスト信号はANDゲート160(第1
4a図)へ与えられる。ラツチ162(第14a
図)からのサイクル・スチール・ポール捕捉信号
又は極性保持回路163からの出力が不在の時、
ANDゲート160はサイクル・スチール・リク
エスト・イン信号をホスト・プロセツサへ与え
る。 サイクル・スチール・リクエスト・イン信号に
応答して、ホスト・プロセツサはバス164(第
14a図)上にポール識別信号を送出する。ポー
ル識別信号はANDゲート166をセツトする。
サイクル・スチール・リクエスト信号が存在する
ものと仮定すると、極性保持回路168(第14
a図)は、ORゲート170及び極性保持回路1
72を介してANDゲート174の入力へ出力を
与える。ANDゲート174はポール・リターン
信号をホスト・プロセツサへ送る。ポール・リタ
ーン信号に応答して、ホスト・プロセツサは線1
75(第14a図)上にサービス・ゲート信号を
送出する。サービス・ゲート信号は、極性保持回
路163(第14b図)の出力にサイクル・スチ
ール・サービス・ゲート捕捉信号を発生する。こ
の信号は極性保持回路176(第14b図)の
CD端子へ与えられる。従つて、サービス・ゲー
ト・リターン信号がORゲート178によつて線
179へ与えられる。 線179上のサービス・ゲート・リターン信号
を受取つた後、ホスト・プロセツサはアドレス・
バス100を介してサイクル・スチール・アドレ
ス・レジスタ152からアドレスを受取る。この
アドレスは、最初の装置制御ブロツク(DCB)
ワードのアドレスである。次に、ホスト・プロセ
ツサはこのワードをフエツチし、それをチヤネ
ル・データ・バス23上に置く。このワードはサ
イクル・スチール・データ・レジスタ30へロー
ドされる。この時点で、マイクロプロセツサは2
のカウントだけアドレス・カウンタ150を増加
させ、2のカウントだけバイト・カウンタ153
を減少させる。カウンタ150にある新しいアド
レスは、次のサイクル・スチール・リクエスト・
イン信号をコントローラに準備させるため、レジ
スタ152へ転送される。次に、サイクル・スチ
ール・データ・レジスタ30にあるDCBワード
がマイクロプロセツサへ転送され、そこに記憶さ
れる。そして次のDCBワードを獲得するシーケ
ンスを開始するため、新しいサイクル・スチー
ル・リクエスト・イン信号がANDゲート160
(第14a図)によつて送出される。この手順は、
全てのDCBワードがマイクロプロセツサに記憶
されるまで継続する。全てのDCBワードが記憶
されると、バイト・カウンタ153の内容は0と
なり、線180が能動化される。 DCBワードの全てを得た後に、マイクロプロ
セツサは自動転送動作を実行するようにコントロ
ーラを設定する。最初、自動ラツチ182(第1
4b図)が自動転送モードを表示するためセツト
され、サイクル・スチール入力モード・ラツチ1
84(第14d図)が入力(即ち、装置読出し)
動作を表示するためセツトされる。これらラツチ
の各々からの出力は、コントローラ内の各種の制
御論理動作で使用され、サイクル・スチール入力
モード・ラツチ184からの出力は、サイクル・
スチール・サービス・ゲート捕捉信号の存在の下
で、ANDゲート186を介して線187上のサ
イクル入力インデイケータとしてホスト・プロセ
ツサへ与えられる。更に、マイクロプロセツサは
バイト・カウンタ153へ転送されるデータ・バ
イトの数を入れ、アドレス・カウンタ150へホ
スト・プロセツサのメイン・ストレージへ転送さ
れるデータの開始アドレスを入れる。アタツチメ
ント装置との通信は、リクエスト・アウト・シー
ケンスによつて設定される。マイクロプロセツサ
はタグ・レジスタ190(第14b図)へ適当な
制御情報をロードし、アタツチメント・データ・
レジスタ32(第14e図)へ必要なデータ又は
他の情報をロードする。更に、マイクロプロセツ
サは、線193へアタツチメント・データ・レジ
スタ満杯信号を与えるため、ラツチ192(第1
4d図)をセツトし、ラツチ184(第14d
図)を「出力モード」状態へリセツトし、リクエ
スト・アウト信号を与えるため、リクエスト・ア
ウト・フリツプ・フロツプ195(第14b図)
がセツトされる。 リクエスト・アウト信号に応答して、装置コン
トロール14(第1図)は承認リクエスト・アウ
ト線196を能動化する。線196上の信号は
ORゲート197を介してANDゲート198へ与
えられる。ゲート198に対する他の入力はオン
であるから、ストローブ・アウト・フリツプ・フ
ロツプ200がセツトされ、ストローブ・アウト
信号が装置コントロール14へ送られる。このス
トローブ・アウト・パルスに応答して、装置コン
トロール14は、それぞれタグ・バス202及び
アタツチメント・データ・バス25を介して、タ
グ・レジスタ190及びアタツチメント・デー
タ・レジスタ32から情報を受取る。更に、スト
ロープ・アウト信号はリクエスト・アウト・フリ
ツプ・フロツプ195をリセツトする。 装置コントロール14へ与えられた情報は、そ
れを能動化して、デイスク16の1つとの間で、
必要なデータ転送動作を実行せしめる。装置コン
トロール14がデータ転送の準備を完了する度
に、それはリクエスト・イン線204(第14d
図)を能動化する。ANDゲート206は、線2
04上の信号に応答して、ANDゲート207又
は208のいずれかが出力を与える時、承認リク
エスト・イン信号を発生する。出力転送について
は、ANDゲート207(第14b図)は、アタ
ツチメント・データ・レジスタ32(第14e
図)が満杯でありかつ適当な制御信号が線209
上で受取られる時、出力を与える。デイスクから
データが読取られる入力転送については、AND
ゲート208は、アタツチメント・データ・レジ
スタが満杯であつてデータ転送の準備が完了して
おり、かつ適当な制御信号が線210上で受取ら
れる時、出力を与える。 線209及び210へ印加される制御信号、及
びコントローラの他の個所で使用される同様の制
御信号は、第15a図及び第15b図を参照して
更に明確に理解することができる。第15a図に
示されるように、コントローラは3個のデータ・
レジスタ30,32,44を含み、これら3つの
レジスタの中の任意の2つの間でデータを転送す
る手段が設けられている。かくて、これらレジス
タの間で、実質的に6つのデータ通路が存在す
る。コントローラは第15b図に示される回路を
含む。この回路は、マイクロプロセツサの制御の
下で、実行されている転送の種類に従つて、制御
信号を与える。例えば、通路レジスタ212は通
路デコーダ214へ3ビツト出力を与える。通路
デコーダ214は、I/Oコントローラ回路の残
りの部分へ適当な制御信号を与える。「通路4又
は6」の如く代替的な通路制御信号を表示する論
理入力(例えば、ANDゲート207及び208
(第14b図)への入力)は、ORゲートを介し
て適当な通路デコーダ出力信号へカツプルされる
ことができる。 ここで再び第14a図乃至第14e図を参照す
ると、入力モード転送の場合に、装置コントロー
ルは、線220へストローブ・イン信号を与える
ことによつて、承認リクエスト・イン信号に応答
する。それによつて、アタツチメント・データ・
レジスタ32は、アタツチメント・データ・バス
25に現われるデータ・ワードをロードされる。
更に、このストローブ・イン信号は、ANDゲー
ト222及び224へ与えられる。それによつ
て、ラツチ192は、アタツチメント・データ・
レジスタが満杯であることを表示するためにセツ
トされる。 もしアタツチメント・データ・レジスタ中のワ
ードがキヤツシユに置かれるべきでなければ、コ
ントローラは米国特許第4246637号に説明されて
いるように動作する。簡単に説明すれば、AND
ゲート226(第14e図)へ与えられた「通路
1」信号は、サイクル・スチール・データ・レジ
スタ30(第14c図)へ至る線227上にロー
ド・パルスを発生する。それによつて、レジスタ
30は、アタツチメント・データ・レジスタによ
つてサイクル・スチール・データ・バス31上に
置かれたデータを記憶する。更に、このロード・
パルスは、ANDゲート159へ1つの入力とし
て与えられる。ANDゲート159の出力は、サ
イクル・スチール・データ・レジスタ30が満杯
であることを示すため、フリツプ・フロツプ22
9をセツトする。更に、ANDゲート159の出
力はラツチ155をセツトする。それによつて、
サイクル・スチール・リクエスト・イン信号が、
再びANDゲート160からホスト・プロセツサ
へ与えられる。このサイクル・スチール・リクエ
スト・イン信号は信号シーケンスを開始する。そ
れによつて、ホスト・プロセツサはサイクル・ス
チール・データ・レジスタ30からデータ・ワー
ドを受取る。次にサイクル・スチール・リクエス
ト・イン信号がオフにされ、サイクル・スチー
ル・データ・レジスタ30が今や空であることを
表示するため、フリツプ・フロツプ229がリセ
ツトされる。前記のステツプは、装置コントロー
ル14からホスト・プロセツサへ転送される各デ
ータ・ワードについて繰返される。バイト・カウ
ンタ153は、転送される各ワードについて2の
カウントだけ減少され、アドレス・カウンタ15
0は、2だけ増加される。装置読出動作について
は、カウンタ153中の値が0に達した時、マイ
クロプロセツサは適当な割込シーケンスを開始す
る。 装置書込動作において、デイスクは典型的には
レコードの増分を書込むように設計される。ホス
ト・プロセツサから書込まれるべきバイトの数
は、レコードのバイト数より少なくてよい。この
場合、バイト・カウンタ153はゼロへ減少され
るが、装置コントロール14は依然として書込動
作を完了するため多くのデータを必要とする。も
しカウンタ153中の値がゼロで、レジスタ30
及びレジスタ32が共に空であつて、書込まれる
べきデータが存在せず、他のリクエスト・イン信
号が装置コントロール14から受取られると、
「ゼロ充填」信号がANDゲート152′(第14
d図)を能動化するように与えられる。それによ
つて、ラツチ236(第14d図)がセツトさ
れ、プロセスの継続が許される。更に、ゼロ充填
信号がレジスタ32へ与えられ、それをゼロで充
填する。これらのゼロは、レコードの終りに達し
て追加データに対するリクエストが受取られなく
なるまで、デイスクへ書込まれる。 もし装置コントロール14からアタツチメン
ト・データ・レジスタ32へ受取られたデータが
先ずキヤツシユ・メモリへ転送されるべきであれ
ば、動作は前述したところと同じであるが、デー
タは異つたレジスタ(即ち、キヤツシユ・デー
タ・レジスタ44)へ転送される。この点に関し
て、「通路2」信号が第15b図の通路デコーダ
によつて与えられる。かくて、能動信号をAND
ゲート226(第14e図)へ与えてサイクル・
スチール・データ・レジスタ30へロード信号を
与える代りに、デコーーダは能動信号をANDゲ
ート230へ与える。それによつて、キヤツシ
ユ・データ・レジスタ44は、アタツチメント・
データ・レジスタ32からバス31へ送出された
データをロードされる。デイスクからキヤツシユ
への転送を実行する場合、マイクロプロセツサは
キヤツシユ・アクチブ・ラツチ232(第14e
図)をセツトする。アタツチメント・データ・レ
ジスタ32は現在満杯であり、キヤツシユ・デー
タ・レジスタ44は空であるから、「通路2」信
号によりロード信号がキヤツシユ・データ・レジ
スタ44へ与えられ、同時にANDゲート234
を介して、ロード・レジスタ・ラツチ236がセ
ツトされる。それによつて、ラツチ192は
ANDゲート238を介してリセツトされ、キヤ
ツシユ・メモリ・レジスタ満杯ラツチ240が
ANDゲート242を介してセツトされる。ラツ
チ192のリセツトはANDゲート208(第1
4b図)を介してフリツプ・フロツプ206をリ
セツトする。それによつて、承認リクエスト・イ
ン信号が終了し、コントローラはレジスタ32が
今や次のワードを受取る準備を完了していること
を知らされる。 第16図は、後述するリクエスト論理256
(第14e図)及びANDゲート290(第14e
図)のための結合論理回路のブロツク図である。
論理回路は反転ANDゲート251a―251c
と、253,253a及び253bのような
NOTゲートと、否定ORゲート255とを含む。
反転ANDゲート251a―251cの各々は、
全ての入力が高である時低レベル出力を与え、他
の場合には高出力を与える。NOTゲート253
a及び253bはその入力を反転し、否定ORゲ
ート255は、その入力のいずれかが低の時高レ
ベル出力を与える。最初のデータ・ワードがキヤ
ツシユ・データ・レジスタ44(第14e図)に
記憶され、線250,252,254の全てがア
クチプになると、リクエスト論理256はゲート
255から出力信号を与え、書込サイクル・ラツ
チ257をセツトする。それによつてリング・カ
ウンタ258が能動化される。リング・カウンタ
258は、通常の3ステージ6状態、又は6ステ
ージ12状態の歩行カウンタであつてよい。 マイクロプロセツサは、転送されつつあるデー
タのために、キヤツシユ・メモリ中の開始アドレ
スを、アドレス・カウンタ260(第14e図)
へロードしており、転送されつつあるバイトの数
を、特殊バイト・カウンタ262へロードしてい
る。キヤツシユ中で利用可能なページは、必ずし
も連続しているとは限らないので、いくつかの動
作が必要となるかも知れない。例えば、もし10個
のレコードが転送される必要があり、キヤツシユ
中8レコードを含むページの8番目のレコードか
ら記憶されている時、転送は3つの別々の動作で
実行される。最初の転送はレコード1を転送し、
第2の転送はレコード2―9を完全なキヤツシ
ユ・ページへ転送し、第3の転送はレコード10
を第3のキヤツシユ・ページへ転送する。かく
て、第1及び第3の動作では、特殊バイト・カウ
ンタ262は256バイトでセツトされ、第2動
作では、2048バイトへセツトされる。 デコーダ264(第14e図)は、リング・カ
ウンタ258からの出力と、サイクルの種類を示
す線259上の信号とを受取り、図示されるよう
な制御信号を与える。これらの制御信号として
は、行/列デコーダ266の出力を能動化するた
めの行時間能動信号、バス268上のデータをバ
ス269及び270によつて指定されたキヤツシ
ユ・メモリ282へロードするためのストローブ
信号、アドレス・カウンタ260を増加させる信
号、特殊バイト・カウンタ262を減少させる信
号がある。デコーダ264は、書込ラツチ257
をリセツトするため、そのラツチへサイクル終了
信号を送る。 アタツチメント・データ・レジスタ32中のワ
ードがキヤツシユ・データ・レジスタ44へ転送
されると、そのワードは前述したようにしてキヤ
ツシユ・メモリへ転送されるので、新しいワード
が装置コントロール14からアタツチメント・デ
ータ・レジスタ32へ入れられる。アタツチメン
ト・データ・レジスタ満杯ラツチ192が再びセ
ツトされ、「通路2」信号が与えられ、キヤツシ
ユ書込サイクルの終りにラツチ240がリセツト
されると、ANDゲート234が能動化され、ラ
ツチ236がセツトされる。かくて、再びキヤツ
シユ・データ・レジスタ44やロードされると共
に、ラツチ240がセツトされる。これは、線2
54上のリクエスト論理信号を高にし、他の書込
サイクルを開始する。このプロセスは、リクエス
トされたデータの全てが転送されるまで継続す
る。 データ処理システムでキヤツシユ・メモリを使
用する場合、キヤツシユ・メモリ動作は「透明」
であることが望ましい。即ち、データがキヤツシ
ユ・メモリからホスト・プロセツサへ転送される
時、その転送は、デイスクから転送と全く同じも
のであることが望ましい。また、デイスクへの書
込みと同じようにキヤツシユ・メモリへ書込むこ
とが望ましく、デイスク・フアイルへ直接書込む
場合と同じようなゼロ充填モードの動作が実行さ
れねばならない。第14e図及び第16図に示さ
れるように、特殊バイト・カウンタ262がゼロ
値へ達していても256バイト・レコードの終り
に達していない場合、線400及び402上の信
号レベルは共に高になる。このような状態の下で
は、反転ANDゲート251a及び251bから
の出力は高となるが、反転ANDゲート251c
への全ての入力は高となるのでその出力は低とな
る。かくて、否定ORゲート255の出力に、書
込サイクル・リクエスト信号が生じ、ゼロ充填動
作を実行するため、低レベルのゼロ充填モード信
号がキヤツシユ・データ・レジスタ44へ与えら
れる。かくて、書込サイクルは、レコードの終り
である256バイト境界に達するまで、ゼロをキ
ヤツシユ・メモリへ書き続ける。レコードの終り
に達すると、線402上の信号は低レベルとな
り、読出サイクル・リクエスト及び書込サイク
ル・リクエストのいずれもリクエスト論理から与
えられない。 リクエストされたデータを、キヤツシユ・メモ
リからサイクル・スチール・データ・レジスタ3
0へ転送するため(データは、レジスタ30から
ホスト・プロセツサへ通常の態様で転送されるこ
とができる)、特殊バイト・カウンタ262及び
アドレス・カウンタ260が、再び転送されるべ
きバイトの数及びキヤツシユの開始アドレスへセ
ツトされ、通路3のみが使用されているから、低
論理信号が線252へ与えられる。リング・カウ
ンタが走る時、デコーダ264は前に与えられた
出力を同じ順序で与える。例外として、ストロー
プ書込パルスは与えられないので、キヤツシユ・
メモリ282は、バス268を介してアドレスさ
れた内容をキヤツシユ・データ・レジスタ44へ
与える。最後の信号であつて、これはANDゲー
ト284及び288へ与えられて、レジスタ44
へキヤツシユ・メモリ282からデータを受取ら
せ、かつラツチ240をセツトする。それは、レ
ジスタ44が今や満杯であり、レジスタ30が空
であることを表示するためである。ラツチ240
の出力はANDゲート289(第14d図)を介
してレジスタ236をセツトし、かくてANDゲ
ート226(第14e図)を能動化する。AND
ゲート226はロード・パルスをレジスタ30へ
与える。それは、レジスタ44からレジスタ30
へデータをロードするためである。次にホスト・
プロセツサは、通常の態様で、サイクル・スチー
ル・データ・レジスタ30の内容を受取る。 上記の手順は、全てのデータが転送されるまで
繰返される。全てのデータが転送された時点で、
割込シーケンスが開始される。 具体的に説明すると、動作が完了した時、マイ
クロプロセツサは割込識別ワードを識別レジスタ
300へロードし、適当な条件コード(例えば、
「装置終了」コード)を条件コード・レジスタ1
22へロードする。ホスト・プロセツサから準備
指令が発生される間、割込優先レベル信号がコン
トローラ20へ割当てられ、かつレベル準備レジ
スタ306へ記憶される。線308上に信号が発
生した時、デコーダ310はリクエスト・イン・
バス312にある複数の線の1本を付勢する。 ホスト・プロセツサは、バス164へポール識
別信号を送出することによつて、リクエスト・イ
ン・バス312上の信号に応答する。ポール識別
信号は、比較器316の中で、レベル準備レジス
タ306に記憶されたI/Oコントローラ優先順
位レベルと比較される。一致が検出されると、双
安定極性保持回路318のCD端子へ出力が印加
される。回路318は、ORゲート170を介し
て他の極性保持回路172へ出力を与える。極性
保持回路172の出力は、ANDゲート174の
1つの入力へ与えられる。ANDゲート174は
ポール・リターン信号をホスト・プロセツサへ送
り、ホスト・プロセツサは、線175へサービ
ス・ゲート信号を送出することによつて応答す
る。サービス・ゲート信号は極性保持回路328
へ与られる。極性保持回路328の出力は、ホス
ト・プロセツサへ線179を介してサービス・ゲ
ート・リターン信号を戻すため、ORゲート17
8を能動化する。同時に、割込識別レジスタ30
0(第14c図)の内容がデータ・バス23上に
置かれる。サービス・ゲート・リターン信号は、
ホスト・プロセツサへ、情報がバス23及びバス
120上に存在することを知らせる。ホスト・プ
ロセツサは、この情報を受取つて記憶すると共
に、初期接続手順を終了させるため、線175
(第14a図)を非能動化する。この割込処理の
詳細な説明は、前記米国特許第4246637号及び第
4038642号でなされている。 これまで説明しなかつたが、第14a図乃至第
14e図に示される各種の論理コンポーネント
(例えばANDゲート222(第14d図))は、
パリテイ(P)検査入力を有するものとして示さ
れている。当技術分野で周知の如く、各種のバス
上のデータは、一般的にパリテイ・ビツトを設け
られている。各種のデータ転送の間にパリテイ検
査(例えば第14e図の403)が実行される。
パリテイ検査でエラーが生じると、リトライが実
行される。 これまで説明したようにキヤツシユ・メモリを
使用するI/Oコントローラは、ホスト・プロセ
ツサ及び1つ又はそれ以上のアタツチメント装置
(例えばデイスク)を有するデータ処理システム
の動作時間を顕著に改善する。何故ならば、それ
は、ホスト・プロセツサがアタツチメント装置に
アクセスする回数を減少させるからである。更
に、デイレクトリイ・テーブルの使用により、全
てのデータ・ブロツクがホーム・ポジシヨンにリ
ストされるか、又はホーム・ポジシヨンから始ま
る衝突リスト中に含ませられるので、リクエスト
されたデータ・ブロツクが現在キヤツシユ・メモ
リに記憶されているかどうかの決定が非常に容易
になる。従つて効率が改善される。リクエストさ
れたレコードがデータ・ブロツクの後方部分で生
じた時、後続するデータ・ブロツクをキヤツシユ
へ予め転送する「プレステージング」動作によつ
て、キヤツシユ・メモリの効率が更に改善され
る。 1つの変更例として、キヤツシユ・メモリそれ
自体は、I/Oコントローラの中へ物理的に設け
られる必要はなく、第1図の装置コントロール1
4の中に設けられてもよい。
第1図はキヤツシユ・メモリを含むデータ処理
システムのブロツク図、第2a図及び第2b図は
第1図のRAMに含まれるデイレクトリイ・テー
ブルとLRUテーブルの説明図、第3図はリクエ
ストされたデータ・ブロツクのためにデイレクト
リイ・テーブルを探索する動作シーケンスの流れ
図、第4a図はリクエストされたデータ・ブロツ
クがキヤツシユ・メモリ中にない場合のデイレク
トリイ・テーブルの探索を示す説明図、第4b図
はリクエストされたデータ・ブロツクがキヤツシ
ユ・メモリ中にある場合のデイレクトリイ・テー
ブルの探索を示す説明図、第5図はマイクロプロ
セツサによつてI/Oコントローラの中でとられ
る全体的動作シーケンスを示す流れ図、第6a
図、第6b図、第6c図は第5図に示されたキヤ
ツシユ・アルゴリズムを詳細に示す流れ図、第7
図はブロツクをキヤツシユへ加えるステツプを詳
細に示す流れ図、第8図は現ハツシユ・ナンバー
を使用してブロツクをキヤツシユへ加えるステツ
プを詳細に示す流れ図、第9a図及び第9b図は
デイレクトリイ・テーブルに維持された「自由連
鎖」の管理を説明する図、第10a図、第10b
図、第10c図、第10d図は第7図の流れ図で
実行される各種のキヤツシユ・メモリ動作を示す
図、第11図はデイレクトリイ・テーブルで衝突
する最初の自由エントリイを交換するステツプを
詳細に示す流れ図、第12a図、第12b図、第
12c図は本発明のシステムで実行されるプレス
テージング(プリフエツチ)動作の説明図、第1
3図はプリフエツチ計算を実行するステツプを詳
細に説明する流れ図、第14図は第14a図乃至
第14e図の配置を示す図、第14a図、第14
b図、第14c図、第14d図、第14e図はキ
ヤツシユ・メモリを利用するI/Oコントローラ
のブロツク図、第15a図はI/Oコントローラ
の中の各種のデータ転送通路を示すブロツク図、
第15b図はI/Oコントローラに含まれる各種
の論理エレメントへ制御信号を与える通路制御回
路を示す図、第16図は第14e図に示されるリ
クエスト論理256及びANDゲート290の結
合回路の詳細を示す図である。 10……ホスト・プロセツサ、11……メイ
ン・ストレージ、14……装置コントロール、1
6……デイスク、18……鍵盤表示端末、30…
…サイクル・スチール・データ・レジスタ、32
……装置データ・レジスタ、33……マイクロプ
ロセツサ、36……高速コントロール、37,3
8……初期接続論理、42……キヤツシユ・メモ
リ、44……キヤツシユ・データ・レジスタ、4
7……ランダム・アクセス・メモリ。
システムのブロツク図、第2a図及び第2b図は
第1図のRAMに含まれるデイレクトリイ・テー
ブルとLRUテーブルの説明図、第3図はリクエ
ストされたデータ・ブロツクのためにデイレクト
リイ・テーブルを探索する動作シーケンスの流れ
図、第4a図はリクエストされたデータ・ブロツ
クがキヤツシユ・メモリ中にない場合のデイレク
トリイ・テーブルの探索を示す説明図、第4b図
はリクエストされたデータ・ブロツクがキヤツシ
ユ・メモリ中にある場合のデイレクトリイ・テー
ブルの探索を示す説明図、第5図はマイクロプロ
セツサによつてI/Oコントローラの中でとられ
る全体的動作シーケンスを示す流れ図、第6a
図、第6b図、第6c図は第5図に示されたキヤ
ツシユ・アルゴリズムを詳細に示す流れ図、第7
図はブロツクをキヤツシユへ加えるステツプを詳
細に示す流れ図、第8図は現ハツシユ・ナンバー
を使用してブロツクをキヤツシユへ加えるステツ
プを詳細に示す流れ図、第9a図及び第9b図は
デイレクトリイ・テーブルに維持された「自由連
鎖」の管理を説明する図、第10a図、第10b
図、第10c図、第10d図は第7図の流れ図で
実行される各種のキヤツシユ・メモリ動作を示す
図、第11図はデイレクトリイ・テーブルで衝突
する最初の自由エントリイを交換するステツプを
詳細に示す流れ図、第12a図、第12b図、第
12c図は本発明のシステムで実行されるプレス
テージング(プリフエツチ)動作の説明図、第1
3図はプリフエツチ計算を実行するステツプを詳
細に説明する流れ図、第14図は第14a図乃至
第14e図の配置を示す図、第14a図、第14
b図、第14c図、第14d図、第14e図はキ
ヤツシユ・メモリを利用するI/Oコントローラ
のブロツク図、第15a図はI/Oコントローラ
の中の各種のデータ転送通路を示すブロツク図、
第15b図はI/Oコントローラに含まれる各種
の論理エレメントへ制御信号を与える通路制御回
路を示す図、第16図は第14e図に示されるリ
クエスト論理256及びANDゲート290の結
合回路の詳細を示す図である。 10……ホスト・プロセツサ、11……メイ
ン・ストレージ、14……装置コントロール、1
6……デイスク、18……鍵盤表示端末、30…
…サイクル・スチール・データ・レジスタ、32
……装置データ・レジスタ、33……マイクロプ
ロセツサ、36……高速コントロール、37,3
8……初期接続論理、42……キヤツシユ・メモ
リ、44……キヤツシユ・データ・レジスタ、4
7……ランダム・アクセス・メモリ。
Claims (1)
- 1 それぞれがn個(nは正の整数)のデータ・
レコードを含む複数のデータ・ブロツクを記憶す
るメモリ・ユニツトと、該メモリ・ユニツトに記
憶されたデータの一部を記憶するキヤツシユ・メ
モリと、上記メモリ・ユニツトに記憶されたデー
タをリクエストするホスト・プロセツサと、リク
エストされたデータが上記キヤツシユ・メモリに
記憶されているとき該データを上記キヤツシユ・
メモリから上記ホスト・プロセツサへ転送しリク
エストされたデータが上記キヤツシユ・メモリに
記憶されていないとき該データを上記メモリ・ユ
ニツトから上記ホスト・プロセツサへ転送する制
御装置とを具備し、該制御装置は上記ホスト・プ
ロセツサによつてリクエストされたデータ・レコ
ードを含むデータ・ブロツクが上記キヤツシユ・
メモリになく且つ該リクエストされたデータ・レ
コードが該データ・ブロツクにおいて所定の位置
よりも後にあつた時に該データ・ブロツクの他に
後続の1つ又は2つのデータ・ブロツクを上記メ
モリ・ユニツトから上記キヤツシユ・メモリへ転
送することを特徴とするデータ処理システム。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US06/270,750 US4489378A (en) | 1981-06-05 | 1981-06-05 | Automatic adjustment of the quantity of prefetch data in a disk cache operation |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS57209555A JPS57209555A (en) | 1982-12-22 |
| JPH0241054B2 true JPH0241054B2 (ja) | 1990-09-14 |
Family
ID=23032644
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9505382A Granted JPS57209555A (en) | 1981-06-05 | 1982-06-04 | Data processing system |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US4489378A (ja) |
| JP (1) | JPS57209555A (ja) |
| CA (1) | CA1176381A (ja) |
Families Citing this family (79)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5835627A (ja) * | 1981-08-26 | 1983-03-02 | Toshiba Corp | メモリデ−タ先取り制御方式 |
| US4583165A (en) * | 1982-06-30 | 1986-04-15 | International Business Machines Corporation | Apparatus and method for controlling storage access in a multilevel storage system |
| DE3380645D1 (en) * | 1982-12-28 | 1989-11-02 | Ibm | Method and apparatus for controlling a single physical cache memory to provide multiple virtual caches |
| JPS59142792A (ja) * | 1983-02-04 | 1984-08-16 | Hitachi Ltd | 補助記憶制御装置 |
| US4603380A (en) * | 1983-07-01 | 1986-07-29 | International Business Machines Corporation | DASD cache block staging |
| JPS61223942A (ja) * | 1985-03-29 | 1986-10-04 | Hitachi Ltd | 情報検索制御方式 |
| US4972364A (en) * | 1987-02-13 | 1990-11-20 | International Business Machines Corporation | Memory disk accessing apparatus |
| US5136692A (en) * | 1987-02-13 | 1992-08-04 | International Business Machines Corporation | Memory disk buffer manager |
| US5008820A (en) * | 1987-03-30 | 1991-04-16 | International Business Machines Corporation | Method of rapidly opening disk files identified by path names |
| US5133061A (en) * | 1987-10-29 | 1992-07-21 | International Business Machines Corporation | Mechanism for improving the randomization of cache accesses utilizing abit-matrix multiplication permutation of cache addresses |
| JP2587434B2 (ja) * | 1987-11-13 | 1997-03-05 | 株式会社日立製作所 | データの入出力処理方法 |
| US4905188A (en) * | 1988-02-22 | 1990-02-27 | International Business Machines Corporation | Functional cache memory chip architecture for improved cache access |
| US4977495A (en) * | 1988-02-29 | 1990-12-11 | Unisys Corporation | System and method for accessing a cache memory which is located in the main memory of a large data processing system |
| DE68924896T2 (de) * | 1988-04-01 | 1996-07-25 | Digital Equipment Corp | Cachespeicher mit mindestens zwei füllgrössen. |
| US5038278A (en) * | 1988-04-01 | 1991-08-06 | Digital Equipment Corporation | Cache with at least two fill rates |
| US4974197A (en) * | 1988-05-05 | 1990-11-27 | International Business Machines | Batching data objects for recording on optical disks with maximum object count |
| US5418965A (en) * | 1988-06-24 | 1995-05-23 | Mahar; Robert C. | Subroutine-type computer program for enhancing the speed of data processing in data management programs systems |
| JPH0677245B2 (ja) * | 1988-08-11 | 1994-09-28 | 株式会社日立製作所 | キャッシュ制御方法および情報処理システム |
| US4947319A (en) * | 1988-09-15 | 1990-08-07 | International Business Machines Corporation | Arbitral dynamic cache using processor storage |
| US5224217A (en) * | 1988-12-30 | 1993-06-29 | Saied Zangenehpour | Computer system which uses a least-recently-used algorithm for manipulating data tags when performing cache replacement |
| US5394531A (en) * | 1989-04-03 | 1995-02-28 | International Business Machines Corporation | Dynamic storage allocation system for a prioritized cache |
| FR2645987B1 (fr) * | 1989-04-13 | 1991-06-07 | Bull Sa | Dispositif d'acceleration des acces memoire dans un systeme informatique |
| FR2645986B1 (fr) * | 1989-04-13 | 1994-06-17 | Bull Sa | Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede |
| US5214766A (en) * | 1989-04-28 | 1993-05-25 | International Business Machines Corporation | Data prefetching based on store information in multi-processor caches |
| US5146578A (en) * | 1989-05-01 | 1992-09-08 | Zenith Data Systems Corporation | Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests |
| US5257370A (en) * | 1989-08-29 | 1993-10-26 | Microsoft Corporation | Method and system for optimizing data caching in a disk-based computer system |
| US5247648A (en) * | 1990-04-12 | 1993-09-21 | Sun Microsystems, Inc. | Maintaining data coherency between a central cache, an I/O cache and a memory |
| CA2045788A1 (en) * | 1990-06-29 | 1991-12-30 | Kadangode K. Ramakrishnan | Cache arrangement for file system in digital data processing system |
| US5247653A (en) * | 1990-08-17 | 1993-09-21 | Seagate Technology, Inc. | Adaptive segment control and method for simulating a multi-segment cache |
| US5235690A (en) * | 1990-08-31 | 1993-08-10 | International Business Machines Corporation | Method for operating a cached peripheral data storage subsystem including a step of subsetting the data transfer into subsets of data records |
| US5293609A (en) * | 1991-04-19 | 1994-03-08 | International Business Machines Corporation | Hit-density-based replacement for data cache with prefetching |
| US5630097A (en) * | 1991-06-17 | 1997-05-13 | Digital Equipment Corporation | Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses |
| JP3276147B2 (ja) * | 1991-08-07 | 2002-04-22 | アダプテック・インコーポレイテッド | 計算機バスとディスクドライブ間のデータの複数のセクタの自動読み出し及び自動書き込みインテリジェントハードウェア |
| US5297258A (en) * | 1991-11-21 | 1994-03-22 | Ast Research, Inc. | Data logging for hard disk data storage systems |
| JP3087429B2 (ja) * | 1992-04-03 | 2000-09-11 | 株式会社日立製作所 | 記憶装置システム |
| US5740465A (en) * | 1992-04-08 | 1998-04-14 | Hitachi, Ltd. | Array disk controller for grouping host commands into a single virtual host command |
| US5659713A (en) * | 1992-04-24 | 1997-08-19 | Digital Equipment Corporation | Memory stream buffer with variable-size prefetch depending on memory interleaving configuration |
| US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
| US5410653A (en) * | 1992-06-16 | 1995-04-25 | International Business Machines Corporation | Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length |
| US5787475A (en) * | 1992-07-21 | 1998-07-28 | Digital Equipment Corporation | Controlled prefetching of data requested by a peripheral |
| 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 |
| JP3516963B2 (ja) * | 1993-03-12 | 2004-04-05 | 株式会社東芝 | メモリアクセス制御装置 |
| CA2121852A1 (en) * | 1993-04-29 | 1994-10-30 | Larry T. Jost | Disk meshing and flexible storage mapping with enhanced flexible caching |
| JPH09506988A (ja) * | 1993-09-30 | 1997-07-08 | アップル コンピュータ,インコーポレイテッド | コンピュータの仮想メモリにおける補助記憶の分散制御システム |
| US5539893A (en) * | 1993-11-16 | 1996-07-23 | Unisys Corporation | Multi-level memory and methods for allocating data most likely to be used to the fastest memory level |
| US5491810A (en) * | 1994-03-01 | 1996-02-13 | International Business Machines Corporation | Method and system for automated data storage system space allocation utilizing prioritized data set parameters |
| US5537635A (en) * | 1994-04-04 | 1996-07-16 | International Business Machines Corporation | Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size |
| US5606688A (en) * | 1994-08-31 | 1997-02-25 | International Business Machines Corporation | Method and apparatus for dynamic cache memory allocation via single-reference residency times |
| US5687347A (en) * | 1994-09-19 | 1997-11-11 | Matsushita Electric Industrial Co., Ltd. | Data providing device, file server device, and data transfer control method |
| US5761464A (en) * | 1995-05-22 | 1998-06-02 | Emc Corporation | Prefetching variable length data |
| US5774682A (en) * | 1995-12-11 | 1998-06-30 | International Business Machines Corporation | System for concurrent cache data access by maintaining and selectively merging multiple ranked part copies |
| US5802557A (en) * | 1996-03-18 | 1998-09-01 | Emc Corp | System and method for caching information in a digital data storage subsystem |
| US5802569A (en) * | 1996-04-22 | 1998-09-01 | International Business Machines Corp. | Computer system having cache prefetching amount based on CPU request types |
| 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 |
| JP3635169B2 (ja) * | 1996-11-20 | 2005-04-06 | 松下電器産業株式会社 | データ伝送装置 |
| EP1095373A2 (en) * | 1998-05-15 | 2001-05-02 | Storage Technology Corporation | Caching method for data blocks of variable size |
| US6327644B1 (en) | 1998-08-18 | 2001-12-04 | International Business Machines Corporation | Method and system for managing data in cache |
| US6381677B1 (en) | 1998-08-19 | 2002-04-30 | International Business Machines Corporation | Method and system for staging data into cache |
| US6141731A (en) * | 1998-08-19 | 2000-10-31 | International Business Machines Corporation | Method and system for managing data in cache using multiple data structures |
| US6339811B1 (en) | 1999-04-21 | 2002-01-15 | Seagate Technologh Llc | Rotationally optimized seek initiation |
| US7213061B1 (en) * | 1999-04-29 | 2007-05-01 | Amx Llc | Internet control system and method |
| US6615282B1 (en) * | 1999-05-21 | 2003-09-02 | Intel Corporation | Adaptive messaging |
| JP3708757B2 (ja) | 1999-06-30 | 2005-10-19 | 富士通株式会社 | 記憶装置 |
| US6542941B1 (en) * | 1999-09-30 | 2003-04-01 | Intel Corporation | Efficient command delivery and data transfer |
| US7624156B1 (en) | 2000-05-23 | 2009-11-24 | Intel Corporation | Method and system for communication between memory regions |
| JP2002207620A (ja) * | 2001-01-10 | 2002-07-26 | Toshiba Corp | ファイルシステム及び該システムにおけるデータキャッシング方法 |
| TW487177U (en) | 2001-10-31 | 2002-05-11 | Coretronic Corp | Anti-dust lid of connecting slot |
| US6711635B1 (en) | 2002-09-30 | 2004-03-23 | Western Digital Technologies, Inc. | Disk drive employing thresholds for cache memory allocation |
| US7333993B2 (en) * | 2003-11-25 | 2008-02-19 | Network Appliance, Inc. | Adaptive file readahead technique for multiple read streams |
| US7631148B2 (en) * | 2004-01-08 | 2009-12-08 | Netapp, Inc. | Adaptive file readahead based on multiple factors |
| US7107384B1 (en) | 2004-03-01 | 2006-09-12 | Pericom Semiconductor Corp. | Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths |
| US8769201B2 (en) * | 2008-12-02 | 2014-07-01 | Intel Corporation | Technique for controlling computing resources |
| US20130326113A1 (en) * | 2012-05-29 | 2013-12-05 | Apple Inc. | Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory |
| US9256541B2 (en) | 2014-06-04 | 2016-02-09 | Oracle International Corporation | Dynamically adjusting the hardware stream prefetcher prefetch ahead distance |
| US9280476B2 (en) | 2014-06-04 | 2016-03-08 | Oracle International Corporation | Hardware stream prefetcher with dynamically adjustable stride |
| CN111881065B (zh) * | 2020-07-30 | 2022-07-05 | 北京浪潮数据技术有限公司 | 数据重删操作的物理地址处理方法、装置、设备及介质 |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3588829A (en) * | 1968-11-14 | 1971-06-28 | Ibm | Integrated memory system with block transfer to a buffer store |
| US3588839A (en) * | 1969-01-15 | 1971-06-28 | Ibm | Hierarchical memory updating system |
| US3670309A (en) * | 1969-12-23 | 1972-06-13 | Ibm | Storage control system |
| US3898624A (en) * | 1973-06-14 | 1975-08-05 | Amdahl Corp | Data processing system with variable prefetch and replacement algorithms |
| GB1515376A (en) * | 1975-07-09 | 1978-06-21 | Int Computers Ltd | Data storage systems |
| US4084229A (en) * | 1975-12-29 | 1978-04-11 | Honeywell Information Systems Inc. | Control store system and method for storing selectively microinstructions and scratchpad information |
| JPS6030980B2 (ja) * | 1977-09-05 | 1985-07-19 | 富士通株式会社 | 階層構造の記憶システムを有するデ−タ処理システム |
| US4214303A (en) * | 1977-12-22 | 1980-07-22 | Honeywell Information Systems Inc. | Word oriented high speed buffer memory system connected to a system bus |
| US4189770A (en) * | 1978-03-16 | 1980-02-19 | International Business Machines Corporation | Cache bypass control for operand fetches |
| JPS54128634A (en) * | 1978-03-30 | 1979-10-05 | Toshiba Corp | Cash memory control system |
| US4246637A (en) * | 1978-06-26 | 1981-01-20 | International Business Machines Corporation | Data processor input/output controller |
| US4399503A (en) * | 1978-06-30 | 1983-08-16 | Bunker Ramo Corporation | Dynamic disk buffer control unit |
| JPS55157056A (en) * | 1979-05-25 | 1980-12-06 | Nec Corp | Disc cash control system |
| GB2052118A (en) * | 1979-06-04 | 1981-01-21 | Memorex Corp | Disc Cache Subsystem |
| US4315312A (en) * | 1979-12-19 | 1982-02-09 | Ncr Corporation | Cache memory having a variable data block size |
| US4407016A (en) * | 1981-02-18 | 1983-09-27 | Intel Corporation | Microprocessor providing an interface between a peripheral subsystem and an object-oriented data processor |
-
1981
- 1981-06-05 US US06/270,750 patent/US4489378A/en not_active Expired - Lifetime
-
1982
- 1982-06-04 JP JP9505382A patent/JPS57209555A/ja active Granted
- 1982-06-04 CA CA000404524A patent/CA1176381A/en not_active Expired
Also Published As
| Publication number | Publication date |
|---|---|
| JPS57209555A (en) | 1982-12-22 |
| CA1176381A (en) | 1984-10-16 |
| US4489378A (en) | 1984-12-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0241054B2 (ja) | ||
| JPH0241056B2 (ja) | ||
| US4466059A (en) | Method and apparatus for limiting data occupancy in a cache | |
| US6324599B1 (en) | Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor | |
| US4430701A (en) | Method and apparatus for a hierarchical paging storage system | |
| EP0354579B1 (en) | A controller with a cache memory and control method of the cache memory | |
| US7047322B1 (en) | System and method for performing conflict resolution and flow control in a multiprocessor system | |
| EP0077452B1 (en) | Data promotion in storage subsystems | |
| EP0066766B1 (en) | I/o controller with a dynamically adjustable cache memory | |
| US6542960B1 (en) | System and method for parity caching based on stripe locking in raid data storage | |
| JP3183993B2 (ja) | ディスク制御システム | |
| JPS6143742B2 (ja) | ||
| JPS624745B2 (ja) | ||
| US5606679A (en) | Method for optimal retrieval of non-volume-specific data | |
| JPS5876956A (ja) | バッファ記憶付きディスク・システム | |
| US5696931A (en) | Disc drive controller with apparatus and method for automatic transfer of cache data | |
| JPH05303528A (ja) | ライトバック式ディスクキャッシュ装置 | |
| JP2769429B2 (ja) | 読み取り要求サービス方法及びデ−タ処理システム | |
| EP0114944B1 (en) | Method and apparatus for controlling a single physical cache memory to provide multiple virtual caches | |
| JPH0115903B2 (ja) | ||
| JP2943896B2 (ja) | 計算機システム及びディスク・データの制御方法 | |
| US7003637B2 (en) | Disk array device with utilization of a dual-bus architecture dependent on data length of cache access requests | |
| US7313656B1 (en) | Pre-fetch prediction method for disk drives | |
| JPH05225062A (ja) | ディスク・キャッシュ装置 | |
| JP3468762B2 (ja) | データローディング方法および装置 |