JPH0675897A - 分割を許容するバッファ・メモリ管理方法及びその装置 - Google Patents

分割を許容するバッファ・メモリ管理方法及びその装置

Info

Publication number
JPH0675897A
JPH0675897A JP4215104A JP21510492A JPH0675897A JP H0675897 A JPH0675897 A JP H0675897A JP 4215104 A JP4215104 A JP 4215104A JP 21510492 A JP21510492 A JP 21510492A JP H0675897 A JPH0675897 A JP H0675897A
Authority
JP
Japan
Prior art keywords
data
buffer
register
location
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP4215104A
Other languages
English (en)
Other versions
JP2531907B2 (ja
Inventor
Kee Samanta Mano
ケー.サマンタ マノ
Aaru Fuerudoman Teimoshii
アール.フェルドマン ティモシー
Esu Fuaanarudo Jiyunia Kurifuoodo
エス.ファーナルド,ジュニア クリフォード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPH0675897A publication Critical patent/JPH0675897A/ja
Application granted granted Critical
Publication of JP2531907B2 publication Critical patent/JP2531907B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

Abstract

(57)【要約】 (修正有) 【目的】 PROLOGのような論理指向プログラミン
グ言語で書かれたプログラムの実行を強化する。 【構成】 オブジェクト思考論理プログラミング言語で
書かれた、述語および節のクラス/サブクラス・レベル
階層を定める分類学的分類を有するプログラムにおける
照会の実行方法において、前記クラス/サブクラス・レ
ベル階層に基いて前記プログラムの述語および節にラン
ク付けを予め割当て、前記割当てられた述語および節の
ランク付けを用いて前記プログラムを照会サーチするス
テップを含み、該プログラムの照会は、述語/節のクラ
ス・レベルのサーチが述語/クラスのサブクラス・レベ
ル・サーチに先行し、かつ述語/節のクラス/サブクラ
ス・レベル・サーチが述語/節のインスタンス・レベル
・サーチに先行するように実行される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、バッファ・メモリ、特
にディスク・ドライブと1つ又は複数のホスト間のよう
に、デバイス間のデータ・インタフェースに与えられる
タイプのバッファ・メモリに関するものであり、メモリ
はそれらに関する分割使用をサポートするように管理さ
れる。
【0002】
【従来の技術】インタフェースは一般に、データが或る
デバイスから読み込まれ、そして他のデバイスに与えら
れることを可能とすべく、2つ若しくはそれ以上のデー
タ・デバイス間に提供される。そのようなインタフェー
スは典型的にはデータ記憶装置とデータ処理装置の間に
与えら、前者の一例はディスク記憶装置であり、そして
後者の一例はホスト・コンピュータである。ディスク・
ドライブとして知られているディスク記憶装置とホスト
・コンピュータ間の典型的なインタフェースは、小型コ
ンピュータ・システム・インタフェース (SCSI) であ
る。
【0003】一般的にインタフェースは、ホストからの
アクセス要求に応答してディスク・ドライブから読み込
まれるデータを記憶するためのバッファ・メモリのよう
な一時記憶装置を含む。バッファ・メモリはアドレス指
定可能ロケーションに与えられ、そしてデータは“ブロ
ック”に記憶される。そこでの各データ・ブロックは、
様々な通常のプロトコルと一致する所定のバイト数から
構成される。コントローラはバッファ・メモリと共動
し、そして一般に特定のメモリ・アドレスを、ディスク
・ドライブからの読み込み又はディスク・ドライブへの
書き込み、そしてホストへの転送若しくはホストから受
信されるそれぞれのデータブロックへ割りつけるように
動作する。コントローラは、使用中のものと同様にこれ
らの空バッファ・アドレスのトラックを保存する。ま
た、コントローラは、ホストによってディスク・ドライ
ブから呼び出され、そしてホストへ転送された若しくは
転送待ちのいずれかのデータ・ブロックのトラックを保
存する。
【0004】データ・ブロックがディスク・ドライブか
ら読み出され、一時的にバッファ・メモリに記憶され、
そしてホストに転送される典型的な“データ読取”オペ
レーションにおいて、ホストはそのような幾つかのブロ
ックから成る一連のデータ・ブロックを呼び出す。ホス
トによって呼び出された特定のデータ・ブロックを取り
出すことに加えて、コントローラは、特に呼び出されて
はいないが、それでもリクエストされたこれらのデータ
・ブロックに近く、従って読出し動作を確実に行うには
読み出されることが通常期待される或るデータ・ブロッ
クの“プリフェッチ(prefetch)”動作を行う。
【0005】従来、コントローラによってプリフェッチ
されたそれらと同様に、ホストによって呼び出されたデ
ータブロックは連続したバッファアドレスに記憶され
る。1周期時間以上、すなわち数回の読出し動作の後
に、有意な数のデータ・ブロックがバッファ・メモリへ
記憶されるがホストには転送されないことが分かるであ
ろう。例えば、ホストによって実行される割り込みと他
のタスクのために、特別に呼び出された一部のデータ・
ブロックは、まだ読み取られていないかも知れない。別
の例として、コントローラによってプリフェッチされた
データ・ブロックの多くは、ホストによってリクエスト
されないかもしれず、従って、検索されないかもしれな
い。
【0006】従って、バッファ・メモリには、利用可能
なアドレス(available address) (すなわち、検索され
たデータ・ブロックを含むアドレス)が散在した幾つか
の充填されるアドレス(filled address)(すなわち、ま
だホストによって検索されていないデータ・ブロックを
含むアドレス)が与えられるであろう。しかし、新しい
一連のデータ・ブロックがディスク・ドライブから読み
出され若しくはプリフェッチされる時、典型的なバッフ
ァ・メモリ及びメモリ・コントローラは、これらのデー
タ・ブロックがシーケンシャル・アドレスに記憶される
ことを要求する。すなわち、このデータ・ブロックは、
連続したアドレス指定可能ロケーションに記憶されなけ
ればならず、そしてそれにもかかわらず利用可能なラン
ダム・アドレスには記憶できない。
【0007】もし、ディスク・ドライブから読み出され
るべきデータ・ブロックの数が、これらのデータ・ブロ
ックを記憶するために使用可能な連続したバッファ・ア
ドレスの数より多い場合、コントローラは、バッファに
いまだ記憶されているどのデータ・ブロックが破棄さ
れ、そしてホストから今呼び出されている新しいデータ
・ブロックによって置き換えらるかを決定するように動
作する。この決定は、この当分野でよく知られた所定の
置換アルゴリズムに基づいて行われる。従って、ホスト
に転送される見込みのないデータ・ブロックは放棄され
る。
【0008】しかしながら、バッファの記憶容量の制限
という理由で、ディスク・ドライブから読み出される新
しいデータ・ブロックをバッファに収容可能とすべく単
純に破棄する多くのデータ・ブロックは保存されるべき
である。結果的に、いまだホストによって検索されてい
ない有用なデータが新しいデータに置換され、そして置
換されたデータは失われる。いまホストが破棄されたデ
ータ・ブロックを得ようとするとき、新たなデータ読出
し動作が実行されなければならなず、そして連続したア
ドレスにデータ・ブロックを記憶するという要求からい
まだ検索されていないデータ・ブロックを新しいデータ
・ブロックに置き換える先に述べた問題が繰り返され
る。
【0009】もし、ホストからの読出しによる若しくは
バッファ・コントローラからのプリフェッチによる一連
のデータ・ブロックがバッファ・メモリのシーケンシャ
ル・アドレスに記憶される必要がないならば、バッファ
・メモリの有効利用が改善されるということは以前から
認識されていた。もし、一連のデータ・ブロックが、先
に記憶され、しかしながらいまだ検索されていないデー
タ・ブロックと共にバッファ内に分散されてよいなら
ば、有用なデータを新データに置き換えるという前述の
問題は実質的に回避されるであろう。
【0010】
【発明が解決しようとする課題】しかしながら、今ま
で、かかるバッファ・メモリの分割を許容するようバッ
ファ・コントローラを動作させる試みは、複雑で高価と
なると考えられてきた。バッファ・コントローラ内で一
般に使用されるマイクロプロセッサーの特殊プログラミ
ングも、同様に複雑であり、そして典型的なマイクロプ
ロセッサーの動作能力を逸脱するとさえ考えられてい
た。従って、バッファ分割は、今まで、先行技術におけ
るバッファ・メモリでは許容されず若しくはサポートさ
れていなかった。
【0011】そこで、本発明の目的は、上記問題点や先
行技術によるバッファ・メモリ構成の困難性を回避すべ
く、バッファ・メモリの分割をサポートする改善された
技術を提供することにある。本発明の他の目的は、デー
タ装置と通信するバッファ・メモリを管理する技術を提
供することであり、それによって、そのメモリの有効利
用が最大限化される。本発明のさらなる目的は、データ
装置間のインターフェースにおけるバッファ・メモリを
管理することであり、そこでは予定されていたが未だこ
れらの装置の1つによって検索されていないデータを上
書き(overwriting) する危険が最小化される。さらに、
本発明のもう一つの目的は、ディスク・ドライブとホス
ト・コンピュータの間のインターフェースにおけるバッ
ファ・メモリを管理することであり、それはバッファ・
メモリの分割を可能にし、それによってキャッシュ・デ
ータを妨害することなく、そして有用なデータを失うこ
となくフレッシュ・データがバッファ・メモリに記憶さ
れる間、セクターから読み出されたデータ・ブロックは
キャッシュされる。
【0012】
【課題を解決するための手段】本発明によれば、バッフ
ァ・メモリは第1と第2のデータ装置と通信すべく管理
され、そこでは第1の装置からの一連のデータ・ブロッ
クが、メモリの使用可能であるが連続することを必要と
しないアドレス指定可能ロケーションに書き込まれる。
最後の一連のデータ・ブロックが書き込まれるそれらの
バッファ・アドレスのオーダー(ordered) アドレス・リ
ストがレジスタ・ロケーションを有するリスト・レジス
タに生成される。メモリから第2の装置へと読み出され
る一連の第1のデータ・ブロックのバッファ・アドレス
を記憶したレジスタ・ロケーションが示され、そして残
りのデータ・ブロックを連続して記憶するバッファ・ア
ドレスを有するオーダーリスト内のレジスタ・ロケーシ
ョンが連続して示され、それによって、それらのアドレ
スから第2の装置へ一連のデータ・ブロックを読み出
す。
【0013】
【作用】本発明の特徴として、バッファ・コントローラ
は、データ・ブロックを記憶するために、選択されるが
連続する必要のないバッファ・アドレスを割り付けるよ
うに動作し、その割り付けられたアドレスはリスト・レ
ジスタのレジスタ・ロケーションにロードされる。これ
らのロケーションからのアドレスは読み出され、それぞ
れのデータ・ブロックは従ってリスト・レジスタから読
み出された各アドレスへ書き込まれる。バッファ・アド
レス内を検索するためにレジスタ・ロケーションのシー
ケンスをアクセスすることによって、データはバッファ
から第2の装置へ転送され、これらの検索されたバッフ
ァ・アドレス内に記憶されたデータ・ブロックは第2の
装置へ読み出される。
【0014】本発明のある面によれば、第1のポインタ
にはレジスタ・ロケーションが設定され、そこには一連
の第1のデータ・ブロックに割り付けられたバッファ・
アドレスが記憶され、そしてこのポインタは次のレジス
タ・ロケーションに進められ、それによって内部にデー
タ・ブロックが書き込まれたバッファ・アドレスを読み
だす。第2ポインタもまたレジスタ・ロケーションが設
定され、そこには第1の装置から読み出された一連の第
1のデータ・ブロックに割り付けられたバッファ・アド
レスが記憶され、そしてこの第2のポインタはその内部
に記憶されたバッファ・アドレスを検索するレジスタ・
ロケーションのシーケンスを通して進めされる。各々の
検索されたバッファ・アドレスに記憶されたデータ・ブ
ロックは第2の装置へ転送される。
【0015】本発明の別の面によれば、それを通して第
1のポインタが進められるリスト・レジスタの連続する
レジスタ・ロケーションの数は、それを通して第2のポ
インタが進められるレジスタ・ロケーションの数とは異
なる。従って、第1のポインタは、その中にコントロー
ラによってプリフェッチされたデータ・ブロックと同様
に第2の装置によって呼び出されたデータ・ブロックが
書き込まれるそれらのアドレスを識別するために進む。
これに対して、第2のポインタは、その中にホストによ
って特別に呼び出されたデータ・ブロックが記憶された
それらのアドレスを単純に検索するために進む。
【0016】
【実施例】図1を参照して、ディスク・コントローラ4
0はデータ装置10と12の間の通信のために与えられ
る。本説明の趣旨から、データ装置10は、その分野に
おいて一般的な技術であるデータ・ブロックの形式でデ
ータが記憶された1つ若しくはそれ以上のハード・ディ
スクのようなディスク記憶装置として描かれている。デ
ータ装置12は、ディスク10へデータを与えそしてデ
ィスク10からデータを読み出すためのホストとして描
かれている。典型的には、ホスト12は従来のマイクロ
プロセッサのようなコンピュータから成る。データはハ
ード・ディスク10とホスト12の間をディスク・コン
トローラ40を介して転送される。
【0017】ディスク・コントローラ40は、バッファ
・メモリ14、バッファ・コントローラ16、そしてブ
ロック図に示される付加装置を有している。データは、
ディスク・バスとして参照されるバス11によってディ
スク・コントローラ40とハード・ディスク10の間を
伝達される。そして、データはホスト・バスとして参照
されるバス13によってディスク・コントローラ40と
ホスト12の間を伝達される。ホスト・バスは従来のS
CSIバスであってもよい。従って、前述のように、ハ
ード・ディスク10、ホスト12、ディスク・コントロ
ーラ40そしてバス11,13は一般的なものである。
【0018】バッファ・メモリ14は、バッファ・ライ
ト・ポート18に結合され、それはハード・ディスク1
0から受信されたデータ・ブロック又はホスト12から
受信されたデータ・ブロックをバッファ・メモリのアド
レス指定可能なロケーションへ書き込むように適合され
る。図1を単純化するために、バッファ・ライト・ポー
ト18はディスク・バス11だけに結合されるものとし
て描かれているが、バッファ・ライト・ポートはまたホ
スト・バス13にも結合されていることが理解されるで
あろう。同様に、バッファ・メモリ14はバッファ・リ
ード・ポート20に結合され、それはバッファ・メモリ
に記憶されたデータ・ブロックを読出し、そしてそれら
のデータ・ブロックをホスト12やハード・ディスク1
0へ転送するように適合されている。簡単化のために、
バッファ・リード・ポートはホスト・バス13だけに結
合されて描かれているが、バッファ・リード・ポート2
0はまたディスク・バス11にも結合されているこが分
かるであろう。
【0019】コントローラ16はバッファ・ライト・ポ
ート18とバッファ・リード・ポート20に結合され、
そしてその中にはデータ・ブロックが書き込まれ、そこ
からはデータ・ブロックが読み出されるバッファ・メモ
リ14のアドレスを割り付けるように適合される。典型
的には、コントローラ16は従来のマイクロプロセッサ
を含み、そしてそれらのデータ・ブロックの識別(ident
ities)と同様にその中にはデータ・ブロックが書き込ま
れ、そこからはデータ・ブロックが読み出されるそれら
のバッファ・アドレスのトラックを保存する。
【0020】典型的な読出し動作において、ホスト12
によって呼び出されたデータ・ブロックは、ハード・デ
ィスク10から読み出され、そしてデータ・ブロックを
記憶するためのアドレスを先に割り付けるコントローラ
16の制御下でバッファ・ライト・ポート18によって
バッファ・メモリ14のそのアドレスへ書き込まれる。
一度、ディスクから読み出された一つ又はそれ以上のデ
ータ・ブロックはバッファ・メモリに記憶され、バッフ
ァ・リード・ポート20はコントローラ16の制御下で
先に割り付けされたアドレスからそれらのデータ・ブロ
ックを読み出す。読み出されたデータ・ブロックはホス
ト・バス13を介してホスト12へ転送される。典型的
な書き込み動作も、データ・ブロックがホスト12から
バッファ・メモリ14へ流れ、そしてバッファ・メモリ
からハード・ディスク10へ流れる以外は同様な方法で
機能する。
【0021】本発明の特徴によれば、リスト・レジスタ
ー22は、そこへデータ・ブロックが書き込まれ又はそ
こからデータ・ブロックが読みだされるバッファ・アド
レスのオーダ・リストを生成するために与えられる。こ
のリストは図2から図9と共に以下において非常に詳細
に説明される。リスト・レジスタ22は複数のレッジス
タ・ロケーションから成り、各々はそれぞれのバッファ
・アドレスを記憶するように適合される。ディスク・ポ
インタ24は識別ロケーションに記憶されたバッファ・
アドレスを読み出すためにリスト・レジスタ22のレジ
スタ・ロケーションを指示し若しくは識別するように適
合される。
【0022】以下に述べられるように、データ・ブロッ
クはディスク・ポインタによってリスト・レジスタから
読み出されたアドレスに書き込まれる。セット回路28
はディスク・ポインタをコントローラ16によって決定
される選択されたレジスタ・ロケーションへ設定する働
きをする。進み回路30はこれから述べられるようにデ
ィスク・ポインタを連続するレジスタ・ロケーションへ
進める働きをする。ディスク・ポインタ24によって識
別されたレジスタ・ロケーションから読み出された特定
のアドレスはバッファ・ライト・ポート18へ与えら
れ、それによってその中にハード・ディスク10から読
み出されたデータ・ブロックが書き込まれるアドレスが
設定される。
【0023】同様に、ホスト・ポインタ26はリスト・
レジスタ22に結合され、そこからバッファ・アドレス
が読み出されるレジスタ・ロケーションを指示し若しく
は識別するように機能する。このバッファ・アドレスは
そこからデータ・ブロックがバッファ・リード・ポート
20によって読み出されるバッファ・メモリのアドレス
を確定するように適合される。セット回路32は、特定
のレジスタ・ロケーションへホスト・ポインタ26を設
定するためにコントローラ16によって制御される。こ
れから述べられるように、このレジスタ・ロケーション
は通常、その中にディスク10からホスト12によって
呼び出される一連の最初のデータ・ブロックを含むバッ
ファ・アドレスが記憶されるロケーションである。進み
回路34はホスト・ポインタを連続するレジスタ・ロケ
ーションへ進めるように適合し、それによってそれらの
ロケーションに記憶されたバッファ・アドレスを読出
し、そしてこれらのアドレスに書き込まれたデータ・ブ
ロックをホスト12へ転送する。
【0024】カウンター19は、完全なデータ・ブロッ
クが書き込まれた時に進み回路30をトリガーするため
に、バッファ・ライト・ポート18によってバッファ・
メモリ14に書き込まれたバイト数をカウントする。デ
ィスク転送ブロック・カウンタ25は、コントローラ1
6の制御下でセット回路21によってディスク10から
読み出されバッファ・メモリに書き込まれるデータ・ブ
ロック数が設定される。カウンタ19が完全なデータ・
ブロックを検出した時、インクリメント/デクリメント
回路23は、それによってディスク転送ブロック・カウ
ンタのカウントをデクリメントするようトリガされる。
このカウントは全ての一連のデータ・ブロックがバッフ
ァ・メモリ14に書き込まれた時にゼロになるようにデ
クリメントされることが分かるであろう。
【0025】同様に、カウンタ29、セット回路31、
ホスト転送ブロック・カウンタ35、そしてインクリメ
ント/デクリメント回路33は、バッファ・メモリから
ホスト12へのデータ・ブロックの転送を監視し、そし
てホストによって呼び出された一連のデータ・ブロック
がそのように転送される時を検出する。
【0026】ディスク・コントローラ40が、例えばハ
ード・ディスク10からホスト12へデータを転送する
動作方法は添付図面、図2から図9を使って以下に非常
に詳細に説明される。簡単には、一連のデータ・ブロッ
クをハード・ディスク10から読み出すべくそれがホス
ト12によって呼び出された時、コントローラ16は最
初にこれらのそれぞれのデータ・ブロックに可能なバッ
ファ・アドレスを割り付ける。バッファ・メモリ14が
満了の時には、割り付けられるアドレスはバッファ・メ
モリのシーケンシャル・アドレスである必要がないこと
が分かるであろう。
【0027】ホスト12によって呼び出されたデータ・
ブロックにバッファ・アドレスを割り付けた後に、コン
トローラ16はその中にこれらの割り付けされたアドレ
ズが書き込まれたリスト・レジスタ22内の連続するロ
ケーションを選択する。セット回路28はコントローラ
16によってディスク・ポインタ24を最初のこれらの
レジスタ・ロケーションに設定するように制御される。
セット回路32も同様にその同じロケーションにホスト
・ポインタ26を設定するように制御される。
【0028】つぎに、ディスク・ポインタ24によって
識別されるレジスタ・ロケーションに記憶されたバッフ
ァ・アドレスは、読みだされ、そしてバッファ・ライト
・ポ−ト18に与えら、バッファ・ライト・ポ−ト18
はディスク10から読み出された一連のデータ・ブロッ
クの最初のデータ・ブロックをこのアドレスに書き込
む。このデータ・ブロックがバッファ・メモリに書き込
まれた後、進み回路30はディスク・ポインタ24を次
の連続するレジスタ・ロケーションを識別するように進
める。このロケーションに記憶されたアドレスはバッフ
ァ・ライト・ポートに与えられ、それはディスク10か
ら読み出される次のデータ・ブロックをこのアドレスに
書き込む。前記動作は、ディスク・ポインタ24がその
中にホスト12によって呼び出されたデータ・ブロック
が書き込まれる割り付けられたバッファ・アドレス数に
対応するレジスタ・ロケーションの数を通して進められ
るまで繰り返される。
【0029】一度、バッファ・メモリに記憶されると、
データ・ブロックはリスト・レジスタ22と共動するバ
ッファ・リード・ポート20によってホスト12へ転送
される。ホスト・ポインタ26は、ディスク10から読
み出された一連の最初のデータ・ブロックを含むバッフ
ァ・アドレスが記憶されたリスト・レジスタ22内のロ
ケーションを識別する。このアドレスは識別されたレジ
スタ・ロケーションから読み出され、そしてそのアドレ
スに記憶されたデータ・ブロックを読み出すバッファ・
リード・ポート20に与えられる。従って、このデータ
・ブロックはバッファ・メモリ14からホスト12へ転
送される。次に、進み回路34はホスト・ポインタ26
を次の連続するレジスタ・ロケーションへ進める。その
中に記憶されたバッファ・アドレスはバッファ・リード
・ポート20に与えられ、バッファ・リード・ポート2
0はこのアドレスに含まれるデータ・ブロックを読み出
す。前記動作は、ホスト・ポインタ26がその中にホス
トによって呼び出された一連のデータ・ブロックを含む
バッファ・アドレスを記憶するそれらのレジスタ・ロケ
ーションを通して進められるまで続く。
【0030】前記のことは、データ・ブロックがハード
・ディスク10から読み出され、バッファ・メモリ14
に記憶され、そしてホスト12に転送される仕方を述べ
ている。ホストによって生成されたデータ・ブロックは
バッファ・メモリに書き込まれ、その中に記憶され、そ
してハード・ディスク10上に記憶するため読み出され
ることが分かる。このデータ書き込み動作において、ホ
スト・ポインタ26はデータ読出し動作中のディスク・
ポインタ24と同様な仕方で機能し、そして同様に、デ
ィスク・ポインタ24はデータ読出し動作中のホスト・
ポインタと同様な仕方で動作する。データ・ブロックが
ホストによって呼び出され、操作され、若しくは処理さ
れ、そしてディスクに戻される時のようにデータ読出し
及び書き込み動作は散在してもよいことを認識するであ
ろう。それにもかかわらず、コントローラ40の動作は
議論されてきたものと実質的に同じ仕方で機能する。
【0031】典型的なデータ転送動作においても、コン
トローラ16、又は管理コントローラのようにそれに等
価なものは、ホスト12によって特別に呼び出されない
ディスク10からデータ・ブロックをプリフェッチする
ように動作する。先に述べたように、そのようなプリフ
ェッチされたデータ・ブロックは、特別にリクエストさ
れたデータ・ブロックが処理された後にホストによって
呼び出されるようなものである。アクセス時間をセーブ
するために、そのように期待されるデータ・ブロックが
プリフェッチされ、そして特別に呼び出されたデータ・
ブロックと同じ方法でバッファ・メモリ14にロードさ
れる。
【0032】しかしながら、しばしばそのようにプリフ
ェッチされたデータ・ブロックはホストによってリクエ
ストされず、従って検索されない。結果的に、その中に
データ・ブロックが書き込まれるバッファ・アドレス数
は、そこからデータ・ブロックが検索されるバッファ・
アドレス数を越えてしまう。このことは、ディスク・ポ
インタ24がホスト・ポインタ26よりも多くのレジス
タ・ロケーション数を通して進められるかもしれないと
いうことを意味する。このことは、本発明によっても考
慮されており、前述したようにそして以下に詳細に説明
されるように、それらに関する全体的な動作には影響し
ない。
【0033】バッファ・メモリ14は満了しているかも
しれず、従って、ホスト12によってディスク10から
呼び出された追加のデータ・ブロックをバッファ・メモ
リに記憶させるためには、満了したバッファ・アドレス
の幾つかはコントローラ16によって新データ・ブロッ
クに再割り付けされなければならない。コントローラ
は、バッファ・メモリ14に記憶されたデータ・ブロッ
クのいずれを破棄し又はホストによって呼び出された新
データ・ブロックに置き換えてもよいかを決定する。そ
して置き換えられるデータ・ブロックは当分野において
一般的なものとして知られる所定の置換アルゴリズムに
従って選択される。以前に置き換えられたデータ・ブロ
ックを含むバッファ・アドレスは、新データ・ブロック
に割り付けられる。すなわち、先に読み出されたデータ
・ブロックをロードされたバッファ・アドレスは新たに
読み出されたデータ・ブロックによって上書きされる。
【0034】図2から図9は、アドレス指定可能バッフ
ァ・メモリ102(時々、単にバッファとして参照され
る)を図式的に現したものであり、それはディスク記憶
装置とホスト・コンピュータのような2つのデータ装置
と通信するように適合される。一例として、バッファ1
02はSCSIインターフェースのようなインターフェ
ースに含まれてもよい。SCSIインターフェースにお
いては、所定サイズのデータ・ブロックがディスク記憶
装置(ここでは単に“ディスク”として参照される)か
ら読み出され、バッファ・メモリのアドレス指定可能な
ロケーションに書き込まれ、そしてそれからホスト・コ
ンピュータ(ここでは単に“ホスト”として参照され
る)に読みだされ、従って、読出し動作を構成する。
【0035】それとは反対に、データは、ホストからバ
ッファ・メモリ102のアドレス指定可能ロケーション
へ書き込まれ、その後、ディスク上に記憶するためバッ
ファ・メモリから読み出されてもよい。従って、書き込
み動作を構成する。ディスクから読み出されそしてバッ
ファ・メモリに記憶されるそれらのデータ・ブロックは
ホストによって選択されることが分かる。そのようなデ
ータは、すなわちホスト・コンピュータによって“呼び
出される(call for)”ことになる。
【0036】周知のように、データはディスク上の“セ
クタ”内に記憶され、一つの実施例においては、各デー
タ・ブロックは一つのセクタから構成される。ディスク
上に記憶されるデータ・ブロックのサイズはホストによ
って与えられ若しくは生成されるデータ・ブロックのサ
イズと異なるかもしれないけれども、簡単のため、ディ
スクから読み出され又はディスクへ書き込まれるデータ
・ブロックは、ホストによって与えられ若しくは生成さ
れるデータ・ブロックと同じサイズ(すなわち、それは
同じバイト数を含む)から成ると仮定する。さらに、当
該分野において周知のように、ホストが特定のデータ・
ブロックを呼び出す時には、追加の連続するデータ・ブ
ロック(典型的には連続するセクタに記憶されているも
の)がディスクからバッファに“プリフェッチ”されて
もよい。
【0037】典型的な実施例において、バッファ・メモ
リ102は、128ブロックを記憶するように適合され
た128メモリ・ロケーションから成る。しかしなが
ら、簡単化のため、バッファ102はここでは12アド
レス指定可能ロケーションを構成するものとして描かれ
ており、各々はそれぞれのデータ・ブロックを記憶する
ように適合されている。当該分野のものには理解される
であろうように、データ・ブロックは典型的には512
バイトから構成される。しかしながら、幾つかのアプリ
ケーションにおいて、データ・ブロックは256バイト
から成り、そして他のアプリケーションにおいてはデー
タ・ブロックは1,024バイト、若しくは他の望みの
バイト数から成る。本発明はデータ・ブロックの正確な
サイズによっては制限されない。
【0038】図2から図9はまたリスト・レジスタ10
4(例えば、リストを表す1組のレジスタ)を描いてお
り、それはこの例においてバッファ102より少ない数
のアドレス指定可能ロケーション(レジスタ・ロケーシ
ョンとして参照される)から構成され、そしてバッファ
・アドレスを記憶するように適合される。ここで述べら
れる単純化された例と調和して、バッファ102は12
アドレス指定可能ロケーションから成り、リスト・レジ
スタは12バッファ・アドレスのうちの6つを記憶する
ように適合された6レジスタ・ロケーションから成る。
【0039】リスト・レジスタ104にはディスク・ド
ライブ及びホストと関連したそれぞれのポインタDAL
P及びHALPが与えられ、それぞれは、便宜上、ディ
スク・ポインタ及びホスト・ポインタとして参照され
る。上述のように、ディスク・ポインタDALPはリス
ト・レジスタ104の次のレジスタ・ロケーションを指
示し、そこから次のバッファ・アドレスを読み出し、そ
こへディスクから読み出された次のデータ・ブロックが
記憶される。別の言い方をすれば、ディスク・ポインタ
は、そこへディスクから読み出された次のデータ・ブロ
ックが書き込まれるバッファ・アドレス(リスト・レジ
スタに記憶される)を識別する。ホスト・ポインタHA
LPは、そこへホスト・コンピュータによってディスク
から呼び出されたデータ・ブロックを含むバッファ・ア
ドレスが記憶されるレジスタ・ロケーションを識別す
る。
【0040】ここで述べられる実施例において、ディス
ク・ポインタDALPは,データ・ブロックがバッファ
・アドレスに書き込まれた時にシーケンシャル・レジス
タ。ロケーションを指示するように進む。そして、ホス
ト・ポインタHALPも同様に、ホスト・コンピュータ
が新たなデータ・ブロックを呼び出す各時間に新たなレ
ジスタ・ロケーションを識別するように進む。すなわ
ち、ホスト・ポインタHALPはレジスタ・ロケーショ
ンを指示し、その内容は次にホストに読み出されるべき
データ・ブロックが記憶され若しくは記憶されるであろ
うバッファ・アドレスを識別する。データ・ブロックが
ホストからディスクへ流れる時、ホスト・ポインタHA
LPはホストから読み出されたデータ・ブロックが記憶
される次のバッファ・アドレスを識別するのに使用さ
れ、そしてディスク・ポインタDALPは次にディスク
に書き込まれるべきデータ・ブロックを記憶する次のバ
ッファ・アドレスを識別するのに使用される。
【0041】ここには示されていないが、ディスク及び
ホストのポインタDALP,HALPは簡易なレジスタ
によって実施されてもよく、それらの各々はバッファ1
02が図1のカウンタ19,29のようなカウンタによ
って決定されてもよいロード/アンロード時にインクリ
メントされ、カウンタはバッファへ書き込まれ又はバッ
ファから読み出されるデータ・ブロックのバイトをカウ
ントし、それによって特定のレジスタ・ロケーションを
識別することが分かる。
【0042】バッファ102とリスト・レジスタ104
の動作シーケンスは、そのバッファ管理方法が描かれて
いるが、ここで説明される。本発明のすばやい理解を容
易にするために、ホスト・コンピュータは特定のデータ
・ブロックを呼び出し、そのデータ・ブロックは後の時
刻にホスト・コンピュータに転送されるようディスクか
ら読み出され、そしてバッファ102に記憶されるもの
と仮定する。そのような後の時刻はマイクロ秒、又は秒
のように相当長い周期で計測されてもよい。データ・ブ
ロックは“データ書き込み”動作としてホスト・コンピ
ュータからディスクへ流れてもよいことが分かる。そし
て“データ書き込み”及び“データ読出し”動作は、ホ
ストがディスクから読み出され、ユーザによって操作さ
れ、そしてディスクへ戻される(又は書き込まれる)デ
ータ・ブロックを呼び出した時のような場合に切り換わ
る。そのような双方向のデータの流れは、本発明によっ
て容易に適合されるが、上述のように、簡単化のためデ
ィスクからバッファへ従ってホストへの一方向へのデー
タ・ブロックの流れが仮定されている。
【0043】まず、ホストは一連のデータ・ブロックを
呼び出し、そのデータ・ブロックはデータ・ブロック8
1,82そして83というように数字によって識別さ
れ、そしてこれらのデータ・ブロックは図1に示される
コントローラ16の制御下でバッファ102のアドレス
1,2そして3にそれぞれ書き込まれると仮定される。
コントローラ16は、ディスク転送ブロック・カウンタ
25にディスクからバッファ102へ読み出されるデー
タ・ブロック数を表すカウント3を設定するようにセッ
ト回路21を制御する。後述のように、カウンタ19は
バッファ102に書き込まれたブロック内のバイトをカ
ウントし、全ブロックがロードされた時にカウンタはデ
ィスク転送ブロック・カウンタ25のカウントをデクリ
メントするためにインクリメント/デクリメント回路2
3をトリガする。ディスク転送ブロック・カウントがゼ
ロにデクリメントされた時、ホストによって呼び出され
た特定のデータ・ブロック数がバッファに書き込まれ、
そしてさらなるデータ・ブロックは別のデータ読出し動
作が実行されるまでディスクから読み出されないことが
分かる。
【0044】また、リスト・レジスタ104のレジスタ
・ロケーション1,2そして3はバッファ・アドレスを
記憶することが可能であり、そしてコントローラはこれ
らのレジスタ・ロケーションを選択し、その中にデータ
・ブロック81,81そして83が書き込まれるバッフ
ァ・アドレスを記憶すると仮定する。ここで、このデー
タ読出し動作(すなわち、それによってデータ・ブロッ
クがディスクから読み出される動作)を確定するため、
そしていかなるデータもディスクからバッファへ転送さ
れる前に、コントローラはバッファ・アドレス1,2そ
して3をレジスタ・ロケーション1,2そして3へそれ
ぞれ書き込み、そしてディスク・ポインタDALP及び
ホスト・ポインタHALPの両者とも図1のセット回路
28及び32によってレジスタ・ロケーション1を識別
するようにされる。従って、ディスク・ポインタDAL
Pは第1のレジスタ・ロケーションを識別し、そこには
ディスクから次に読みだされるデータ・ブロック(ここ
ではデータ・ブロック81と仮定される)がロードされ
る次のバッファ・アドレス(ここではバッファ・アドレ
ス1と仮定される)が記憶される。また、ホスト・ポイ
ンタHALPは、そこから次のデータ・ブロックがフェ
ッチされそしてホストに転送されるバッファ・アドレス
を記憶した次のレジスタ・ロケーションとしての第1の
レジスタ・ロケーションを識別する。
【0045】さて、データ・ブロック81の全てのバイ
トがディスクからバッファ・アドレス1へ読み出された
時に、カウンタ19は図1の進み回路30をトリガし
て、ディスクから読み出される次のデータ・ブロック8
2を記憶するように適合されたバッファ・アドレス2が
記憶された次のシーケンシャル・レジスタ・ロケーショ
ン(例えば、第2のレジスタ・ロケーション)を指示す
るように、ディスク・ポインタDALPを進める。それ
と同時に、ディスク転送ブロック・カウンタ25のカウ
ントはデクリメントされる(図1)。データ・ブロック
82が読み出され、そしてバッファ・アドレス2へロー
ドされた時、ディスク・ポインタDALPは、ディスク
から読み出されるであろう次のデータ・ブロック83を
記憶するように適合されたバッファ・アドレス3が記憶
された第3のレジスタ・ロケーションを指示するように
進み、そしてディスク転送ブロック・カウンタはデクリ
メントされる。
【0046】データ・ブロック83が読み出された時、
ディスク・ポインタDALPは第4のレジスタ・ロケー
ション(空と仮定する)へ進み、データ・ブロック83
はバッファ・アドレス3に書き込まれ、そしてディスク
転送ブロック・カウンタのカウントはカウントゼロにデ
クリメントされる。従って、連続したデータ・ブロック
がディスクから読み出され、バッファ・アドレス1,2
そして3に書き込まれた時に、カウンタ19は進み回路
30(図1)をトリガして識別する第1のレジスタ・ロ
ケーションから第2、次に第3へとディスク・ポインタ
DALPを進め、そして第4のレジスタ・ロケーション
で終了し、ディスク転送ブロック・カウントはカウント
3から2,1,0へデクリメントされる。
【0047】データ・ブロック83がバッファ・アドレ
ス3に書き込まれた時、ディスク・ポインタは第4のレ
ジスタ・ロケーションを識別するために進み、データ読
出し動作は中断される。同様に、もしバッファ102に
記憶されたデータ・ブロックが読み出し動作を完了する
ためにホストに転送されたならば、カウンタ29(図
1)はブロックが読み出された時に進み回路34をトリ
ガするために転送されたバイト数をカウントし、それに
よって、データ・ブロック81,82そして83がそれ
ぞれアドレス・バッファ1,2 そして3から読み出さ
れた時にホスト・ポインタHALPを第1から第2、第
3、そして最終的に第4のレジスタ・ロケーションへと
進める。
【0048】同様に、コントローラ16は、ホスト転送
ブロック・カウンタ35にカウント3を設定するように
セット回路31を制御し、カウント3はホストによって
呼び出された時にバッファ102からホスト読み出され
るデータ・ブロック数を表している。カウンタ29がホ
スト・ポインタHALPを進めるために進み回路34を
トリガした時、それは又、ホスト転送ブロック・カウン
タをデクリメントするためにインクリメント/デクリメ
ント回路33をトリガする。このカウントがゼロにデク
リメントされた時、ホストによって呼び出された特定数
のデータ・ブロックがそこへ転送され、そしていかなる
データ・ブロックも次の読出し動作が起動されるまで転
送されない。データ・ブロック83がバッファ・アドレ
ス3から読み出された後、ホスト・ポインタは第3から
第4のレジスタ・ロケーションへ進む。
【0049】ここで、これらのデータ・ブロック81,
82,83がバッファからホストへ読み出された以前
に、ホストが一連のデータ・ブロック121と122を
呼び出し、そしてコントローラはこれらのデータ・ブロ
ックを記憶するためにバッファ・アドレス4と5を選択
すると仮定する。リスト・レジスタ104の第4及び第
5のレジスタ・ロケーションは使用可能と仮定すれば、
コントローラはバッファ・アドレス4と5をそれぞれ記
憶するためにレジスタ・ロケーション4と5を選択し、
そしてこれらのバッファ・アドレス4と5は第4と第5
のレジスタ・ロケーションに書き込まれる。前述したデ
ィスクからバッファへの転送動作の完了で第4のレジス
タ・ロケーションを指示するディスク・ポインタDAL
Pは、データ・ブロック121がディスクから読み出さ
れた時にそのデータ・ブロックがロードされるアドレス
としてバッファ・アソレス4を識別する。ホスト・ポイ
ンタHALPも同様にこのレジスタ・ロケーションを指
示する。
【0050】前記のように、ディスク転送ブロック・カ
ウンタ25及びホスト転送ブロック・カウンタ35(図
1)は、ホストによって呼び出されるデータ・ブロック
数(例えば、2)に設定される。データ・ブロック12
1がバッファにロードされる時、ディスク・ポインタD
ALPはバッファ・アドレス5が記憶された第5のレジ
スタ・ロケーションを指示するように進み、そしてディ
スク転送ブロック・カウントは2から1へデクリメント
される。もし、データ・ブロック121がこの時ホスト
に与えられていないならば、ホスト・ポインタHALP
は第4のレジスタ・ロケーションの指示を維持する。次
に、データ・ブロック122がディスクからディスク・
ポインタDALPによって識別されるバッファ・アドレ
ス、すなわちバッファ・アドレス5へ読み出される。従
って、ディスク・ポインタは第6のレジスタ・ロケーシ
ョンを指示するように進み、ディスク転送ブロック・カ
ウントはゼロにデクリメントされる。
【0051】この時、ディスク・ポインタDALPは、
ディスクから読み出される次のデータ・ブロックが記憶
されたバッファ・アドレスがそこから読み出される次の
ロケーションとしてのレジスタ・ロケーション6(現在
は空と仮定する)を識別する。ホスト・ポインタHAL
Pは、ホストによって呼び出され、いまだホストに与え
られていない先のデータ・ブロックを含むバッファ・ア
ドレスを記憶する第4のレジスタ・ロケーションを識別
する。図2は上述の動作を描いたものであり、そこでは
実線で示されたディスク・ポインタDALPはそれらの
最終ロケーションを表し、そして破線はディスク・ポイ
ンタの開始と進みロケーションを表している。同様に、
実線はホスト・ポインタHALPの最終ロケーションを
表し、破線はバッファ102からホストへのデータ・ブ
ロックを読み出すためにそれらの開始と進みロケーショ
ンを表している。
【0052】図2から、すでにそこへ記憶されたいかな
るデータ・ブロックも“上書き(overwriting) ”するこ
となく追加のデータ・ブロックを記憶するため、バッフ
ァ102には十分な残りの容量があることが分かる。ま
た、コントローラ16はバッファの内容をモニタし、ホ
ストによってコールされたデータ・ブロックが記憶され
るロケーションを認識することが分かる。
【0053】図2に示されるバッファ102とリスト・
レジスタ104の状態で、ホストは一連のデータ・ブロ
ック315と316を呼び出し、それはディスクから読
み出され、バッファの次の指定可能なアドレスに記憶さ
れると仮定する。図3に示されるように、コントローラ
はデータ・ブロック315と316を記憶するためにバ
ッファ・アドレス6と7を選択する。便宜上、先に記憶
されたデータ・ブロックと先に記憶されたバッファ・ア
ドレスは破線で示され、そして新たに選択されたバッフ
ァ・アドレスと同様にホストによって新たに呼び出され
た一連のデータ・ブロックは実線で示されている。
【0054】コントローラは又、バッファ・アドレス6
と7をそれぞれ記憶するためにレジスタ・ロケーション
6と1を選択し、バッファ・アドレス6は第6のレジス
タ・ロケーションに記憶され、そしてバッファ・アドレ
ス7は第1のレジスタ・ロケーションに記憶される。な
お、データ・ブロック315をバッファ・アドレス6に
ロードするために、第6のレジスタ・ロケーション(な
お、ディスク・ポインタDALPによって識別される)
の内容は読み出され、そしてデータ・ブロックはバッフ
ァ・アドレス6(例えば、このレジスタ・ロケーション
の内容)に書き込まれる。
【0055】ホスト・ポインタHALPは、ホストによ
って呼び出される最後の一連のデータ・ブロックにおけ
る最初のデータ・ブロックを記憶するバッファ・アドレ
スが位置するロケーションとしての第6のレジスタ・ロ
ケーションを識別するために進み、そしてディスク・ポ
インタDALPは、その中にバッファ・アドレス7が記
憶された第1のレジスタ・ロケーション(第6のレジス
タ・ロケーションから図3によって表される動作開始時
に指示されたロケーションへ)へ進む(又は戻る)。デ
ータ・ブロック316がディスクから読み出される時、
それはバッファ・アドレス7(ディスク・ポインタDA
LPによって識別される)に記憶され、そしてディスク
・ポインタは次のシーケンシャル・レジスタ・ロケーシ
ョンへ進み、それはリスト・レジスタ104の第2のロ
ケーションであることが分かる。
【0056】もし、データ・ブロック315がバッファ
からホストに転送されるならば、ホスト・ポインタHA
LPはホストによって呼び出された一連のデータ・ブロ
ックの最初がロードされるバッファ・アドレスを記憶し
た第6のレジスタ・ロケーションからホストへ読み出さ
れる次のデータ・ブロック316がロードされたバッフ
ァ・アドレスを記憶する第1のレジスタ・ロケーション
へ進む。ディスク転送ブロック・カウンタ25とホスト
転送ブロック・カウンタ35はホストによって呼び出さ
れるデータ・ブロック数に設定され、それぞれバッファ
102へ書き込まれそしてホストへ転送される各データ
・ブロックをもってデクリメントされることが分かる。
【0057】先に、レジスタ・ロケーション1に記憶さ
れたバッファ・アドレスは、コントローラによって新た
なバッファ・アドレスに上書きされたことがわかる。し
かしながら、この時、バッファ102は満了していない
ことから、リスト・レジスタ104に生成されるアドレ
ス・リストの上書き部分は現在バッファ102に記憶さ
れるいかなるデータ・ブロックにも影響せず、又それを
除去することもない。そして、コントローラはこれらの
データ・ブロックのバッファ記憶ロケーションを登録し
続ける。従って、データ・ブロック81はバッファ・ア
ドレス1に記憶されたままであり、そしてリクエスト時
にはコントローラによってそこからホスト・コンピュー
タへ読み出されてもよい。
【0058】図3によって表される状態から、ここでは
次に、ホストがディスクから読み出される一連のデータ
・ブロック221,222そして223を呼び出し、そ
してコントローラがこれらのデータ・ブロックを記憶す
るためにバッファ・アドレス8,9そして10を選択す
ると仮定する。コントローラは、バッファ・アドレス
8,9そして10が第2、第3そして第4のレジスタ・
ロケーションに記憶され、これらのレジスタ・ロケーシ
ョンにおける先の領域をこれらの新たなデータ・ブロッ
クが記憶されるバッファ・アドレスで上書きすることを
決定する。
【0059】このデータ読出し動作の開始時、ディスク
・ポインタDALPとホスト・ポインタHALPの両者
とも第2のレジスタ・ロケーションを識別し、ディスク
転送ブロック・カウンタ25とホスト転送ブロック・カ
ウンタ35はホストによって呼び出されたデータ・ブロ
ック数(例えば3)に設定される。このデータ読出し動
作を実行するために、バッファ・アドレス8はディスク
・ポインタによって第2のレジスタ・ロケーションから
読み出され、この一連の最初のデータ・ブロック221
はこのバッファ・アドレスにロードされる。ホスト・ポ
インタHALPは、現在リスト・レジスタ104の第2
のレジスタ・ロケーションを指示しているが、この読出
し動作中にホストによって呼び出された最後の一連のデ
ータ・ブロックの最初のデータ・ブロックが記憶されて
いるバッファ・アドレスを記憶する。
【0060】データ・ブロック221がバッファ・アド
レス8に書き込まれる時、ディスク・ポインタDALP
は第2のレジスタ・ロケーションからデータ・ブロック
222を記憶するであろうバッファ・アドレスを識別す
るために次に続くレジスタ・ロケーションへ進み、この
データ・ブロック222はバッファ・アドレス9に書き
込まれる。そしてディスク・ポインタはデータ・ブロッ
ク223、ホストによって呼び出された一連の最後のデ
ータ・ブロック、を含むであろうバッファ・アドレス1
0を識別するために第4のレジスタ・ロケーションへ進
む。このデータ・ブロックがディスクから読み出され、
そしてバッファ・アドレス10にロードされる時、ディ
スク・ポインタDALPはコントローラによって選択さ
れた次のバッファ・アドレスが読み出される次のロケー
ションである第5のレジスタ・ロケーションを識別する
ために進む。各データ・ブロックがバッファ102にロ
ードされる時にデクリメントされるディスク転送ブロッ
ク・カウンタ25のカウントはここでカウントゼロにデ
クリメントされる。
【0061】上述したデータ読出し動作において、デー
タ・ブロック222及び223はホストによって特別に
呼び出されてもよく、またその代わりに、これらのデー
タ・ブロックはデータ・ブロック221が呼び出される
時に当該分野において良く知られた方法であるプリフェ
ッチされてもよい。もし、データ・ブロックがホストに
よって特別に呼び出されたならば、ホスト・ポインタH
ALPは、バッファからホストへデータ・ブロック22
1そしてブロック222そしてブロック223を読み出
すためバッファ・アドレス8そして9そして10を識別
すべく、あるレジスタ・ロケーションから次へと順次進
む。そしてホスト転送ブロック・カウンタ35はその設
定カウント3からゼロにデクリメントされる。
【0062】しかし、もしデータ・ブロック222と2
23がプリフェッチされるならば、ホスト転送ブロック
・カウンタは単にカウント1に設定され、そしてホスト
・ポインタHALPは、バッファからホストへデータ・
ブロック221を読み出すためバッファ・アドレス8だ
けを識別するのに設定される。その後、ホスト・ポイン
タは、ホスト転送ブロック・カウンタ35がゼロにデク
リメントされる間、次の(例えば第3の)レジスタ・ロ
ケーションに進む。結果的に、その第3のレジスタ・ロ
ケーションに記憶されたバッファ・アドレスの内容は読
み出されない。
【0063】図4に示される状態から、2つのバッファ
・アドレスはデータ・ブロックをそのまま記憶できるこ
とが分かる。ここで説明する例と一致させるため、ホス
トはデータ・ブロック15と16を呼び出し、そして図
5に示すように、コントローラはこれらのデータ・ブロ
ックを記憶するため、バッファ・アドレス11と12を
それぞれ選択するものと仮定する。コントローラは、バ
ッファ・アドレス11と12が第5と第6のレジスタ・
ロケーションに記憶され、そして先の領域内を上書きす
ることを決定する。このデータ読出し動作の開始時、デ
ィスク・ポインタDALPとホスト・ポインタHALP
の両者は、バッファ・アドレス11が記憶されるロケー
ションとしてのバッファによって選択される第5のレジ
スタ・ロケーションを識別するために進められ、ディス
ク及びホスト転送ブロック・カウンタともホストによっ
て呼び出されるデータ・ブロック数を表すカウント2に
設定される。
【0064】さて、ディスク・ポインタDALPはリス
ト・レジスタからバッファ・アドレス11を読み出し、
ホストによって呼び出されたデータ・ブロック15はバ
ッファ・アドレス11に書き込まれる。ディスク・ポイ
ンタDALPは第6のレジスタに進み、そしてディスク
転送ブロック・カウンタは1だけデクリメントされる。
もし、コントローラがデータ・ブロックが今ホストに転
送されるべきであると判断したならば、ホスト・ポイン
タHALPによって識別されるバッファ・アドレス(例
えば、バッファ・アドレス11)が読み出され、そして
このバッファ・アドレスに記憶されたデータ・ブロック
(例えば、データ・ブロック15)がホストへ読み出さ
れる。ホスト・ポインタはそして次のレジスタ・ロケー
ションへ進み、ホスト転送ブロック・カウンタは1デク
リメントされる。
【0065】現在リスト・レジスタ104の第6のレジ
スタ・ロケーションを指示しているディスク・ポインタ
DALPは、その中のバッファ・アドレス12を識別
し、データ・ブロック16はディスクからこのバッファ
・アドレスにロードされる。ディスク・ポインタはそし
て第1のレジスタであることが分かる次の連続するレジ
スタ・ロケーションに進み、ディスク転送ブロック・カ
ウンタはデータ・ブロック16がバッファ・アドレス1
2に書き込まれた時にゼロへデクリメントされる。
【0066】図5に描かれた状態から、ここではハスト
が一連のデータ・ブロック175と176を呼び出すと
仮定する。バッファ102は満たされているため、コン
トローラはバッファに記憶されたどのデータ・ブロック
が破棄され若しくはホストによって今呼び出された新た
なデータ・ブロックにより置き換えてもよいかを決定す
る。バッファ内で置き換えられるデータ・ブロックは当
該分野において通常知られる所定の置き換えアルゴリズ
ムに従って選択される。本説明の目的のため、コントロ
ーラは置き換えのためにデータ・ブロック82と83を
選択するものと仮定する。従って、これらのデータ・ブ
ロックを記憶するバッファ・アドレス2と3は、ここで
は新データ・ブロック175と176を記憶するために
選択される。さらに、コントローラは、バッファ・アド
レス2と3が第1と第2のレジスタ・ロケーションに記
憶されるべきことを決定し、それらのアドレスはその中
に書き込まれる。
【0067】図6に示されるデータ読出し動作の開始
時、ディスク・ポインタDALPとホスト・ポインタH
ALPの両者は第1のレジスタ・ロケーションを識別す
るように設定され、そしてディスク及びホスト転送ブロ
ック・カウンタは2(ディスクから読み出されホストへ
転送されるデータ・ブロック数)に設定される。従っ
て、バッファ・アドレス2はディスク・ポインタによっ
て第1のレジスタ・ロケーションから読み出され、そし
てデータ・ブロック175はディスクからこのアドレス
に書き込まれる。ディスク・ポインタDALPは、そこ
からバッファ・アドレス3が読みだされそしてそこへデ
ータ・ブロック176がロードされる次の連続するレジ
スタ・ロケーション(例えば、第2のロケーションへ)
へ進む。ディスク・ポインタはそして次の連続するレジ
スタ・ロケーション、すなわちデータ・ブロック176
がバッファにロードされた時に第3のレジスタ・ロケー
ションに進む。
【0068】各データ・ブロックがロードされた時にデ
クリメントされるディスク転送ブロック・カウンタは、
ここでカウントゼロに到達する。第1のレジスタ・ロケ
ーションを指示しているホスト・ポインタHALPは、
そこからバッファ・アドレス2を読み出し、データ・ブ
ロック175はこのバッファ・アドレスからホストへ転
送される。ホスト・ポインタはそこからデータ・ブロッ
ク176がホストへ転送されるバッファ・アドレス3を
識別するため第2のレジスタ・ロケーションに進む。そ
の後、ホスト・ポインタは第3のレジスタ・ロケーショ
ンに進み、ホスト転送ブロック・カウンタはカウントゼ
ロにデクリメントされる。
【0069】図6によって示される状態から、ホストは
次に一連のデータ・ブロック401,402そして40
3を呼び出すと仮定される。バッファ102は満了して
いるため、コントローラは前述のように、置き換えのた
めその中に先に記憶されたデータ・ブロックを選択す
る。置き換えアルゴリズムは、置き換えのためバッファ
・アドレス5,7そして10に記憶されたデータ・ブロ
ック122,316そして223を選択すると仮定す
る。従って、コントローラは、データ・ブロック40
1,402そして403をそれぞれを記憶するためバッ
ファ・アドレス5,7そして10の再割り付けを行う。
さらに、コントローラは第3、第4そして第5のレジス
タ・ロケーションをバッファ・アドレス5,7そして1
0を記憶するために選択する。
【0070】このデータ読出し動作の開始時、ディスク
・ポインタDALP及びホスト・ポインタHALPの両
者は第3のレジスタ・ロケーション、そのロケーション
にはデータ・ブロック401を記憶すべきバッファ・ア
ドレス5が記憶されている、を指示し、そしてディスク
及びホスト転送ブロック・カウンタの両者ともカウント
3に設定される。この読出し動作を実行するために、デ
ィスク・ポインタDALPは第3のレジスタ・ロケーシ
ョンからバッファ・アドレス5を検索し、そしてデータ
・ブロック401はそのバッファ・アドレスにロードさ
れる。ディスク転送ブロック・カウンタはデクリメント
され、そしてディスク・ポインタはバッファ・アドレス
7を検索するために第4のレジスタ・ロケーションに進
む。
【0071】データ・ブロック402はバッファ・アド
レス7に書き込まれる。そして、ディスク転送ブロック
・カウンタはデクリメントされ、ディスク・ポインタは
バッファ・アドレス10が読み出される第5のレジスタ
・ロケーションに進む。データ・ブロック403はその
バッファ・アドレスに書き込まれる。ディスク転送ブロ
ック・カウンタはカウントゼロにデクリメントされ、デ
ィスク・ポインタDALPはそして次のレジスタ・ロケ
ーション、すなわちデータ・ブロック403がバッファ
・アドレズ10に書き込まれた時に第6のレジスタ・ロ
ケーションに進む。
【0072】バッファからホストへこれらのデータ・ブ
ロックを転送するために、ホスト・ポインタHALP
は、ホストによって呼び出された最も近い一連の第1の
データ・ブロック(例えば、データ・ブロック401)
を含むバッファ・アドレス5を記憶する第3のレジスタ
・ロケーションから第4のレジスタ・ロケーションそし
て第5のレジスタ・ロケーションへと進む。各進みにお
いて、ホスト転送ブロック・カウンタはデクリメントさ
れ、ホスト・ポインタによって識別されるバッファ・ア
ドレスはホストに読み出されその中に記憶されたデータ
・ブロックを有する。従って、データ・ブロック40
1,402そして403が転送される。その後、ホスト
転送ブロック・カウントはゼロに減じられ、ホスト・ポ
インタHALPは第6のレジスタ・ロケーションに進
む。
【0073】図7に示す状態に達した後、ホストは次に
一連の4つのデータ・ブロック241,242,243
そして244を読み出すと仮定する。再び、コントロー
ラは置き換えのためバッファ102に記憶されたデータ
・ブロックを選択する。前述した置き換えアルゴリズム
に従って、データ・ブロック81,176,222そし
て16が選択されると仮定する。その結果、コントロー
ラの制御の下、バッファ・アドレス1はデータ・ブロッ
ク241を記憶するよう割り付けられ、バッファ・アド
レス3はデータ・ブロック242を記憶するよう割り付
けられ、バッファ・アドレス9はデータ・ブロック24
3を記憶するよう割り付けられ、そしてバッファ・アド
レス12はデータ・ブロック244を記憶するよう割り
付けられる。
【0074】コントローラはまた、バッファ・アドレス
1,3,9そして12をリスト・レジスタ104の第
6、第1、第2そして第3のレジスタ・ロケーションへ
それぞれ書き込み、ディスク・ポインタDALPとホス
ト・ポインタHALPの両ポインタを第6のレジスタ・
ロケーション(例えば、これらの最初のデータ・ブロッ
クが書き込まれるべきバッファ・アドレスが記憶された
レジスタ・ロケーション)を指示するように設定し、そ
してディスク及びホスト転送ブロック・カウンタ25,
35をカウント4に設定する。この時、ディスク・ポイ
ンタはすでに第6のレジスタ・ロケーションを指示して
いることを覚えている。
【0075】読出し動作を実行するために、ディスク・
ポインタDALPは、第6のレジスタ・ロケーション、
バッファ・アドレス1を読み出し、ディスクから読み出
されるデータ・ブロック241はこのバッファ・アドレ
スにロードされる。ディスク・ポインタは上述した仕方
で第1、第2、第3そして第4のレジスタ・ロケーショ
ンへと進む。ディスク・ポインタが進む時、それによっ
て識別されるバッファ・アドレスはリスト・レジスタ1
04から読み出され、そしてディスクから読み出される
連続したデータ・ブロックはディスク転送ブロック・カ
ウントがデクリメントされている間に読みだされる各バ
ッファ・アドレスにロードされる。従って、図8に示さ
れるように、ホストによって呼び出されるデータ・ブロ
ック241,242,243そして244は不連続なバ
ッファ・アドレス1,3,9そして12にそれぞれ記憶
される。
【0076】ここで、これらのデータ・ブロックをホス
トに転送するために、コントローラはホスト・ポインタ
HALPが指示するバッファ・アドレスを読み出し、そ
してこのバッファ・アドレスに記憶されたデータ・ブロ
ックはホストに読み出される。従って、(ホスト・ポイ
ンタが指示する)第6のレジスタ・ロケーションに記憶
されたバッファ・アドレス1は識別され、データ・ブロ
ック241はこのバッファ・アドレスからホストへ読み
出される。ホスト転送ブロック・カウントはデクリメン
トされ、ホスト・ポインタは次のレジスタ・ロケーショ
ン(例えば、第1のレジスタ・ロケーション)に進み、
そして上述した処理が繰り返される。従って、ホスト・
ポインタHALPはシーケンシャルに第3のレジスタ・
ロケーションに進み、データ・ブロック241,24
2,243そして244はホスト・ポインタが進む時に
バッファ102からホストへ順次読み出される。それと
同時に、ホスト転送ブロック・カウントはカウントゼロ
へデクリメントされる。
【0077】前述した例は、ディスクから検索され、そ
してホストへ読み出される前に一時的にバッファ102
に記憶されなければならないデータ・ブロックをホスト
が呼び出すことを前提としていた。ここでは、先の読出
し動作により既にバッファに記憶されている一連のデー
タ・ブロックをホストが呼び出すことを仮定する。例え
ば、これら要求されたデータ・ブロックがプリフェッチ
されているか、又はホストが単にそれらを再読み出しし
ようとする場合である。いずれにしても、ホストがデー
タ・ブロック15,121,221そして315をその
順で呼び出すと仮定する。図8から、これらのデータ・
ブロックはバッファ・アドレス11,4,8そして6に
それぞれ記憶されたままであり、ディスクからこれらの
データ・ブロックを再読み出しする必要は全くないこと
が分かる。
【0078】バッファ・コントローラは第1、第2、第
3そして第4のレジスタ・ロケーションを選択し、それ
らには図9に示すようにバッファ・アドレス11,4,
8そして6が書き込まれる(推定されるように、他のレ
ジスタ・ロケーションが選択されてもよい)。さらに、
ホスト・ポインタHALPは第1のレジスタ・ロケーシ
ョンを指示するように設定され、ホスト転送ブロック・
カウンタはカウント4に設定される。この時、ディスク
転送ブロック・カウンタはゼロのままである。本データ
転送動作のために、データ・ブロックがディスクから読
み出されないならば、コントローラはディスク・ポイン
タDALPのロケーションの変更を行わない。
【0079】ここで、このデータ転送を実行するため
に、ホスト・ポインタHALPが指示するレジスタ・ロ
ケーションに記憶されたバッファ・アドレスが読み出さ
れ、そしてそのバッファ・アドレスにロードされたデー
タ・ブロックはホストに転送される。ホスト転送ブロッ
ク・カウントはデクリメントされ、ホスト・ポインタは
そしてこの処理を繰り返すために次の連続するレジスタ
・ロケーションに進む。従って、バッファ・アドレス1
1は第1の記憶ロケーションから読み出され、バッファ
・アドレス11に記憶されたデータ・ブロック15はホ
ストに転送され、そしてホスト・ポインタHALPは第
2のレジスタ・ロケーションに進む。このようにして、
データ・ブロック15,121,221そして315
は、バッファ102からホストへ順次転送される。コン
トローラは、データ・ブロック315が転送された後、
この転送動作を終了する。その時、ホスト・ポインタは
図9に示すように第5のレジスタ・ロケーションへ進
み、ホスト転送ブロック・カウントはゼロへデクリメン
トされる。
【0080】以上述べたことから、データ・ブロックが
バッファ102に分割形式(fragmented form) で記憶さ
れているとしても、バッファ102に記憶されている適
当な順序のデータ・ブロックがホストへ読み出されるこ
れらのバッファ・アドレスを順次識別するために、アド
レス・リストはリスト・レジスタ104にコントローラ
によって編集されることが分かる。ホスト・ポインタH
ALPはこの順番で第1のバッファ・アドレスを識別
し、それによって、ホストにより呼び出されたシーケン
スでデータ・ブロックの読み出しを容易にする。
【0081】本発明はそれに関する好ましい実施例を参
照して特に示されそして述べられているが、当該分野の
者によってその変更と修正が本発明の精神と概念のから
逸脱することなく行われてよいことが容易に理解され
る。例えば、図1のディスク・コントローラ40はそれ
に関する回路やハードウェア、装置の内容で説明されて
いる。しかしながら、そのために述べられた多くの機能
はソフトウェアによって実現されてもよいことが分か
る。
【0082】さらに、バッファ・アドレスはリスト・レ
ジスタ104の連続するレジスタに記憶されているが、
そのようなロケーションのシーケンスは連続である必要
はない。その場合、進み回路30はバッファ・アドレス
が記憶されるレジスタ・ロケーションの望ましいシーケ
ンスを確立するためにディスク・ポインタを制御しても
よい(同様に、進み回路34もホスト・ポインタを制御
してもよい)。付記された特許請求の範囲が、ここに特
に説明された実施態様だけでなく、すべての同様な実施
態様を含めるものとして解釈されることが意図されてい
る。
【図面の簡単な説明】
【図1】本発明を用いたディスク・コントローラを示し
たブロック図である。
【図2】本発明の一連の動作を図式的に示した説明図
(1)である。
【図3】本発明の一連の動作を図式的に示した説明図
(2)である。
【図4】本発明の一連の動作を図式的に示した説明図
(3)である。
【図5】本発明の一連の動作を図式的に示した説明図
(4)である。
【図6】本発明の一連の動作を図式的に示した説明図
(5)である。
【図7】本発明の一連の動作を図式的に示した説明図
(6)である。
【図8】本発明の一連の動作を図式的に示した説明図
(7)である。
【図9】本発明の一連の動作を図式的に示した説明図
(8)である。
【符号の説明】
10…データ装置 12…データ装置 13…ホスト・バス 14…バッファ・メモリ 16…コントローラ 18…バッファ・ライト・ポート 19…カウンタ 20…バッファ・リード・ポート 22…リスト・レジスタ 24…ディスク・ポインタ 26…ホスト・ポインタ 28…セット回路 30…進み回路 40…ディスク・コントローラ

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】 バッファ・メモリはその中にデータ・ブ
    ロックが書き込まれ、そしてそこからデータ・ブロック
    が読み出されるアドレス指定可能なロケーションを有
    し、第1と第2のデータ装置と通信するための前記バッ
    ファ・メモリを管理する方法は、 前記第1の装置からの一連のデータ・ブロックを、使用
    可能で、必ずしもシーケンシャルであることを必要とし
    ない前記バッファ・メモリに書き込むステップ、 レジスタ・ロケーションを有するリスト・レジスタにお
    いて、一連の最終データ・ブロックが書き込まれるそれ
    らのバッファ・アドレスの順序付けられたアドレス・リ
    ストを生成するステップ、 前記バッファ・メモリから前記第2の装置へ読み出され
    る前記一連の最初のデータ・ブロックのバッファ・アド
    レスが記憶されるレジスタ・ロケーションを指示するス
    テップ、そして前記バッファ・メモリから前記第2の装
    置へ追加されるデータ・ブロックを読み出すため、前記
    一連の前記追加されたデータ・ブロックを記憶するバッ
    ファ・アドレスを含む前記順序付けられたアドレス・リ
    ストのレジスタ・ロケーションを前進的に指示するステ
    ップから構成することを特徴とする第1と第2のデータ
    装置と通信するためのバッファ・メモリを管理する方
    法。
  2. 【請求項2】 一連のデータ・ブロックを前記バッファ
    ・メモリに書き込むステップは、前記リスト・レジスタ
    におけるレジスタ・ロケーションを識別する書き込みポ
    インタを与えるステップ、書き込みポインタによって識
    別されるレジスタ・ロケーションに記憶されたバッファ
    ・アドレスを読み出すステップ、データ・ブロックを書
    き込みポインタによって識別されるレジスタ・ロケーシ
    ョンから読みだされたバッファ・アドレスに書き込むス
    テップ、そして前記書き込みポインタを次のレジスタ・
    ロケーションを識別するために進めるステップから成る
    請求項1記載の第1と第2のデータ装置と通信するため
    のバッファ・メモリを管理する方法。
  3. 【請求項3】 前記順序付けられたアドレス・リストを
    生成するステップは、一連のデータ・ブロックが書き込
    まれるそれぞれのバッファ・アドレスを、前記リスト・
    レジスタの選択されたレジスタ・ロケーション・ナンバ
    ーにロードするステップから成る請求項2記載の第1と
    第2のデータ装置と通信するためのバッファ・メモリを
    管理する方法。
  4. 【請求項4】 前記選択されたレジスタ・ロケーション
    ・ナンバーの少なくとも幾つかに既に記憶されたバッフ
    ァ・アドレスは、一連のデータ・ブロックが書き込まれ
    るそれぞれのバッファ・アドレスが前記リスト・レジス
    タにロードされる時に上書きされる請求項3記載の第1
    と第2のデータ装置と通信するためのバッファ・メモリ
    を管理する方法。
  5. 【請求項5】 前記順序付けられたリストを生成するス
    テップは、さらに内部に書き込まれる一連のデータ・ブ
    ロックを記憶するため選択されたバッファ・アドレスを
    先に割り付けるステップから成る請求項4記載の第1と
    第2のデータ装置と通信するためのバッファ・メモリを
    管理する方法。
  6. 【請求項6】 バッファ・メモリはその中にデータ・ブ
    ロックが書き込まれ、そしてそこからデータ・ブロック
    が読み出されるアドレス指定可能なロケーションを有
    し、第1と第2の装置間でデータを転送するための前記
    バッファ・メモリの管理方法は、 前記第1の装置から与えられた一連のデータ・ブロック
    に含まれるデータ・ブロックを記憶するため、選択され
    シーケンシャルであることを必要としないバッファ・ア
    ドレスを割り付けるステップ、 リスト・レジスタの選択されたレジスタ・ロケーション
    に割り付けられたバッファ・アドレスをロードするステ
    ップ、 レジスタ・ロケーションの順序付けられたリストからバ
    ッファ・アドレスを読み出し、そしてそれぞれのデータ
    ・ブロックをレジスタ・ロケーションから読み出された
    バッファ・アドレスに書き込むステップ、そして前記第
    2の装置へ検索されたバッファ・アドレスに記憶される
    データ・ブロックを転送するため、内部にロードされた
    バッファ・アドレスを検索すべく前進的なレジスタ・ロ
    ケーションを割り付けるステップから構成することを特
    徴とする第1と第2の装置間でデータを転送するための
    バッファ・メモリの管理方法。
  7. 【請求項7】 割り付けられたバッファ・アドレスがロ
    ードされるレジスタ・ロケーションの前記順序付けられ
    たリストは、バッファ・アドレスがそこから検索される
    前記前進的なレジスタ・ロケーションとは異なる請求項
    6記載の第1と第2の装置間でデータを転送するための
    バッファ・メモリの管理方法。
  8. 【請求項8】 レジスタ・ロケーションの前記順序付け
    られたリストからバッファ・アドレスを読み出すステッ
    プは、一連の最初のデータ・ブロックに割り付けられる
    バッファ・アドレスがロードされるレジスタ・ロケーシ
    ョンを最初に指示するステップ、そして前記第1の装置
    からのデータ・ブロックが先に指示されたレジスタ・ロ
    ケーションから読み出されたバッファ・アドレスに書き
    込まれる時に次のレジスタ・ロケーションを指示するス
    テップから成る請求項6記載の第1と第2の装置間でデ
    ータを転送するためのバッファ・メモリの管理方法。
  9. 【請求項9】 次のレジスタ・ロケーションを指示する
    ステップは、前記一連の全てのデータ・ブロックがそれ
    らのそれぞれに割り付けられたバッファ・アドレスに書
    き込まれるまで、データ・ブロックのそれぞれのバッフ
    ァ・アドレスへの書き込みに対応してロケーションから
    ロケーションへと続けられる請求項8記載の第1と第2
    の装置間でデータを転送するためのバッファ・メモリの
    管理方法。
  10. 【請求項10】 割り付けられたバッファ・アドレスを
    選択されたレジスタ・ロケーションへロードするステッ
    プは、先に前記レジスタ・ロケーションへロードされる
    かもしれないバッファ・アドレスを上書きすることを含
    む請求項6記載の第1と第2の装置間でデータを転送す
    るためのバッファ・メモリの管理方法。
  11. 【請求項11】 バッファ・アドレスを検索するため前
    進的なレジスタ・ロケーションをアクセスするステップ
    は、前記第1の装置から与えられる一連の最初のデータ
    ・ブロックに割り付けられるバッファ・アドレスがロー
    ドされるレジスタ・ロケーションを最初に識別するステ
    ップ、そしてデータ・ブロックが先に識別されたレジス
    タ・ロケーションから検索されるバッファ・アドレスか
    ら第2の装置へ転送される時に次のレジスタ・ロケーシ
    ョンを識別するステップから成る請求項10記載の第1
    と第2の装置間でデータを転送するためのバッファ・メ
    モリの管理方法。
  12. 【請求項12】 次の連続するレジスタ・ロケーション
    を識別するステップは、前記一連の全てのデータ・ブロ
    ックが転送されるまで、それぞれのバッファ・アドレス
    からのデータ・ブロックの転送に対応してロケーション
    からロケーションへと続行される請求項11記載の第1
    と第2の装置間でデータを転送するためのバッファ・メ
    モリの管理方法。
  13. 【請求項13】 データ・ブロックを記憶するため選択
    されたバッファ・アドレスを割り付けるステップは、現
    在記憶されているデータ・ブロックが前記第1の装置か
    ら与えられる一連のデータ・ブロックに含まれる新たな
    データ・ブロックによって上書きされるように、現在デ
    ータ・ブロックを記憶しているかもしれないバッファ・
    アドレスを割り付けることを含む請求項6記載の第1と
    第2の装置間でデータを転送するためのバッファ・メモ
    リの管理方法。
  14. 【請求項14】 第1の装置から第2の装置へデータを
    転送するための装置であって、そこではアドレス指定可
    能なロケーションを有するバッファ・メモリがコントロ
    ーラによって選択されたアドレスに第1の装置から受信
    したデータ・ブロックを記憶する装置は、 前記コントローラによってその中に書き込まれるバッフ
    ァ・アドレスを記憶するための複数のレジスタ・ロケー
    ションを有するリスト・レジスタ手段、 バッファ・アドレスの順序付けられたリストを生成する
    ため前記リスト・レジスタの選択されたロケーションに
    書き込まれたバッファ・アドレスを読み出すための第1
    のポインタ手段、 前記第1の装置から前記リスト・レジスタ手段から読み
    出されたバッファ・アドレスにデータ・ブロックを書き
    込むためのバッファ書き込み手段、 前記リスト・レジスタ手段の前進的なロケーションをそ
    こからバッファ・アドレスの順序付けられたリストを検
    索するためにアクセスするための第2のポインタ手段、
    そして検索されたバッファ・アドレスでのバッファ・メ
    モリに記憶されたデータ・ブロックを前記第2の装置へ
    転送するための転送手段から構成することを特徴とする
    第1の装置から第2の装置へデータを転送するための装
    置。
  15. 【請求項15】 そこからバッファ・アドレスが前記第
    1のポインタ手段によって読み出されるリスト・レジス
    タ手段のレジスタ・ロケーション・ナンバーは、バッフ
    ァ・アドレスが前記第2のポインタ手段によって検索さ
    れるリスト・レジスタ手段のレジスタ・ロケーション・
    ナンバーとは異なる請求項14記載の第1の装置から第
    2の装置へデータを転送するための装置。
  16. 【請求項16】 バッファ・メモリに書き込まれたデー
    タ・ブロックは前記第2の装置によって呼び出され、及
    び一連のデータ・ブロックに含まれ、そして前記コント
    ローラは、前記第2の装置によって呼び出される一連の
    最初のデータ・ブロックを記憶するため、前記コントロ
    ーラによって選択されるバッファ・アドレスが記憶され
    た前記リスト・レジスタ手段のレジスタ・ロケーション
    に前記第1のポインタ手段を設定するように動作する請
    求項14記載の第1の装置から第2の装置へデータを転
    送するための装置。
  17. 【請求項17】 さらに、データ・ブロックが前記リス
    ト・レジスタ手段から読み出されるバッファ・アドレス
    ・リストに書き込まれる時、前記順序付けられたリスト
    における前記リスト・レジスタ手段の次のレジスタ・ロ
    ケーションへ前記第1のポインタを進めるための手段を
    含む請求項16記載の第1の装置から第2の装置へデー
    タを転送するための装置。
  18. 【請求項18】 前記コントローラは、前記第2の装置
    によって呼び出される一連の最初のデータ・ブロックを
    記憶するため、前記コントローラによって選択されるバ
    ッファ・アドレスが記憶された前記リスト・レジスタ手
    段のレジスタ・ロケーションに前記第2のポインタ手段
    を設定するように動作する請求項16記載の第1の装置
    から第2の装置へデータを転送するための装置。
  19. 【請求項19】 さらに、データ・ブロックが前記リス
    ト・レジスタ手段から最後に検索されたバッファ・アド
    レス・リストから前記第2の装置へ転送される時に、前
    記順序付けられたリストにおける前記リスト・レジスタ
    手段の次のレジスタ・ロケーションへ前記第2のポイン
    タ手段を進めるための手段から成る請求項18記載の第
    1の装置から第2の装置へデータを転送するための装
    置。
  20. 【請求項20】 前記コントローラは、前記第2の装置
    によって呼び出されなかったデータ・ブロックをプリフ
    ェッチするように動作し、前記プリフェッチされたデー
    タ・ブロック及び前記第2の装置によって呼び出された
    データ・ブロックは前記コントローラによって選択され
    たバッファ・アドレスに書き込まれ、及び前記リスト・
    レジスタ手段に記憶され、そして前記第2のポインタ手
    段を進めるための前記手段は前記第2の装置によって呼
    び出された一連の最後のデータ・ブロックが前記第2の
    装置へ転送された後に、前記第2のポインタ手段を停止
    するための手段を含む請求項19記載の第1の装置から
    第2の装置へデータを転送するための装置。
  21. 【請求項21】 そこからバッファ・アドレスが検索さ
    れる前記リスト・レジスタ手段の前進的なレジスタ・ロ
    ケーションは、そこからバッファ・アドレスが読み出さ
    れる前記リスト・レジスタ手段の選択されたレジスタ・
    ロケーションとは異なり、そして前記コントローラはレ
    ジスタ・ロケーションのシーケンスを選択し、そして検
    索されたバッファ・アドレスに記憶されるそれらのデー
    タ・ブロックを前記第2の装置へ転送するため、後に前
    記第2のポインタ手段によってレジスタ・ロケーション
    の前記選択されたシーケンスから検索される指定バッフ
    ァ・アドレスを前記選択されたシーケンスのレジスタ・
    ロケーションに書き込むように動作する請求項14記載
    の第1の装置から第2の装置へデータを転送するための
    装置。
  22. 【請求項22】 前記コントローラは、前記第2の装置
    によって呼び出されるデータ・ブロックを記憶するそれ
    らのバッファ・アドレスを指定するように動作する請求
    項21記載の第1の装置から第2の装置へデータを転送
    するための装置。
  23. 【請求項23】 前記コントローラは、前記選択された
    レジスタ・ロケーションの少なくとも幾つかに先に書き
    込まれたバッファ・アドレスを新たに選択されたバッフ
    ァ・アドレスで上書きするように動作する請求項14記
    載の第1の装置から第2の装置へデータを転送するため
    の装置。
  24. 【請求項24】 前記コントローラは、前記リスト・レ
    ジスタ手段に書き込まれ、前記バッファ書き込み手段に
    よってその中に書き込まれるデータ・ブロックを有する
    バッファ・アドレスを選択するように動作し、その選択
    されたバッファ・アドレスは既に先にそこへ書き込まれ
    たデータ・ブロックを記憶し、それによって先に記憶さ
    れたデータ・ブロックは前記第1の装置から検索される
    新たなデータ・ブロックを上書きされる請求項23記載
    の第1の装置から第2の装置へデータを転送するための
    装置。
  25. 【請求項25】 バッファ・メモリに書き込まれるデー
    タ・ブロックは第2の装置によって呼び出され、及び一
    連の複数のデータ・ブロックに含まれ、そこでは前記コ
    ントローラは、前記第2の装置によって呼び出される一
    連の最初のデータ・ブロックを記憶するため前記コント
    ローラによって選択されたバッファ・アドレスが記憶さ
    れる前記リスト・レジスタ手段のレジスタ・ロケーショ
    ンに前記第1のポインタ手段及び前記第2のポインタ手
    段の両者を設定するように動作し、そしてさらに前記第
    1のポインタ手段を前記一連内に含まれるデータ・ブロ
    ック・ナンバーに対応した前記順序付けられたリストに
    おけるレジスタ・ロケーション数進めるための手段、及
    び前記第2のポインタ手段を同じレジスタ・ロケーショ
    ンをアクセスするように進めるための手段を含む請求項
    16記載の第1の装置から第2の装置へデータを転送す
    るための装置。
JP4215104A 1991-08-16 1992-08-12 分割を許容するバッファ・メモリ管理方法及びその装置 Expired - Fee Related JP2531907B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US74631891A 1991-08-16 1991-08-16
US746318 1991-08-16

Publications (2)

Publication Number Publication Date
JPH0675897A true JPH0675897A (ja) 1994-03-18
JP2531907B2 JP2531907B2 (ja) 1996-09-04

Family

ID=25000322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4215104A Expired - Fee Related JP2531907B2 (ja) 1991-08-16 1992-08-12 分割を許容するバッファ・メモリ管理方法及びその装置

Country Status (5)

Country Link
US (1) US5539897A (ja)
EP (1) EP0528273B1 (ja)
JP (1) JP2531907B2 (ja)
KR (1) KR950010944B1 (ja)
DE (1) DE69230204T2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561823A (en) * 1994-03-14 1996-10-01 Conner Peripherals, Inc. Monitor system for determining the available capacity of a READ buffer and a WRITE buffer in a disk drive system
US5717918A (en) * 1994-06-17 1998-02-10 Hitachi, Ltd. Method for concurrently performing a physical sequential scan of a database into a database buffer which is queued until a preceding scan is completed
US5634099A (en) * 1994-12-09 1997-05-27 International Business Machines Corporation Direct memory access unit for transferring data between processor memories in multiprocessing systems
US6178471B1 (en) 1998-07-21 2001-01-23 International Business Machines Corporation Method of sharing buffers for the streaming of unchanged data
US6330640B1 (en) 1999-12-22 2001-12-11 Seagate Technology Llc Buffer management system for managing the transfer of data into and out of a buffer in a disc drive
JP2001251375A (ja) * 2000-03-06 2001-09-14 Sony Corp 伝送方法、伝送システム、入力装置、出力装置及び伝送制御装置
US6826650B1 (en) * 2000-08-22 2004-11-30 Qlogic Corporation Disk controller configured to perform out of order execution of write operations
US7007114B1 (en) 2003-01-31 2006-02-28 Qlogic Corporation System and method for padding data blocks and/or removing padding from data blocks in storage controllers
US7080188B2 (en) 2003-03-10 2006-07-18 Marvell International Ltd. Method and system for embedded disk controllers
US7492545B1 (en) 2003-03-10 2009-02-17 Marvell International Ltd. Method and system for automatic time base adjustment for disk drive servo controllers
US7870346B2 (en) 2003-03-10 2011-01-11 Marvell International Ltd. Servo controller interface module for embedded disk controllers
US7039771B1 (en) 2003-03-10 2006-05-02 Marvell International Ltd. Method and system for supporting multiple external serial port devices using a serial port controller in embedded disk controllers
US7139150B2 (en) 2004-02-10 2006-11-21 Marvell International Ltd. Method and system for head position control in embedded disk drive controllers
US8166217B2 (en) 2004-06-28 2012-04-24 Marvell International Ltd. System and method for reading and writing data using storage controllers
US8032674B2 (en) 2004-07-19 2011-10-04 Marvell International Ltd. System and method for controlling buffer memory overflow and underflow conditions in storage controllers
US9201599B2 (en) 2004-07-19 2015-12-01 Marvell International Ltd. System and method for transmitting data in storage controllers
US7757009B2 (en) 2004-07-19 2010-07-13 Marvell International Ltd. Storage controllers with dynamic WWN storage modules and methods for managing data and connections between a host and a storage device
US7386661B2 (en) 2004-10-13 2008-06-10 Marvell International Ltd. Power save module for storage controllers
US7240267B2 (en) 2004-11-08 2007-07-03 Marvell International Ltd. System and method for conducting BIST operations
US7802026B2 (en) 2004-11-15 2010-09-21 Marvell International Ltd. Method and system for processing frames in storage controllers
US7609468B2 (en) 2005-04-06 2009-10-27 Marvell International Ltd. Method and system for read gate timing control for storage controllers
JP3926374B2 (ja) * 2005-08-15 2007-06-06 株式会社ソニー・コンピュータエンタテインメント バッファ管理方法およびバッファ管理装置
US7752356B1 (en) * 2006-10-26 2010-07-06 Marvell International Ltd. Buffer management system and method
US8127100B1 (en) * 2007-04-16 2012-02-28 Marvell International Ltd Unlimited sub-segment support in a buffer manager

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4065810A (en) * 1977-01-26 1977-12-27 International Business Machines Corporation Data transfer system
US4866601A (en) * 1987-09-24 1989-09-12 Ncr Corporation Digital data bus architecture for computer disk drive controller
US4876642A (en) * 1988-01-19 1989-10-24 Gibson Glenn A Rules and apparatus for a loop capturing code buffer that prefetches instructions
WO1989007296A1 (en) * 1988-01-27 1989-08-10 Storage Technology Corporation An early start mode method and apparatus
JP2736092B2 (ja) * 1989-01-10 1998-04-02 株式会社東芝 バッファ装置
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
JP3085391B2 (ja) * 1989-06-19 2000-09-04 株式会社日立製作所 通信装置
AU7497091A (en) * 1990-02-28 1991-09-18 Sf2 Corporation A method and apparatus for transferring data through a staging memory

Also Published As

Publication number Publication date
DE69230204D1 (de) 1999-12-02
EP0528273B1 (en) 1999-10-27
EP0528273A2 (en) 1993-02-24
US5539897A (en) 1996-07-23
DE69230204T2 (de) 2000-02-10
KR930004864A (ko) 1993-03-23
KR950010944B1 (ko) 1995-09-26
EP0528273A3 (ja) 1995-02-08
JP2531907B2 (ja) 1996-09-04

Similar Documents

Publication Publication Date Title
JP2531907B2 (ja) 分割を許容するバッファ・メモリ管理方法及びその装置
US6389509B1 (en) Memory cache device
JP3308554B2 (ja) 制御装置及び制御装置の制御方法
US6324599B1 (en) Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor
US6944717B2 (en) Cache buffer control apparatus and method using counters to determine status of cache buffer memory cells for writing and reading data therefrom
US6457102B1 (en) Cache using multiple LRU's
EP0166310B1 (en) Data processing system
WO1996008772A1 (en) Method of pre-caching data utilizing thread lists and multimedia editing system using such pre-caching
JPS6310250A (ja) 仮想論理ボリユ−ム管理方式
US6343351B1 (en) Method and system for the dynamic scheduling of requests to access a storage system
US5765193A (en) System for controlling a write operation involving data held in a write cache
EP0439920B1 (en) System and method for memory management in a microcomputer
JPH1063578A (ja) 情報記録再生装置
US7032093B1 (en) On-demand allocation of physical storage for virtual volumes using a zero logical disk
US5136692A (en) Memory disk buffer manager
US5664224A (en) Apparatus for selectively loading data blocks from CD-ROM disks to buffer segments using DMA operations
US7000077B2 (en) Device/host coordinated prefetching storage system
US6795264B2 (en) LBA tracking for system data management
JP3020512B2 (ja) フアイルデータ管理方法
EP0278425B1 (en) Data processing system and method with management of a mass storage buffer
JP2005166073A (ja) 記憶装置の制御装置および制御方法
JPH10161932A (ja) ディスクキャッシュ制御方式
JP2854668B2 (ja) ディスク・キャッシュ制御方式
JP2854667B2 (ja) ディスク・キャッシュ制御方式
JP3721338B2 (ja) 記憶装置の制御装置および制御方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19960507

LAPS Cancellation because of no payment of annual fees