[go: up one dir, main page]

JPH09259033A - バッファ書き込み方法 - Google Patents

バッファ書き込み方法

Info

Publication number
JPH09259033A
JPH09259033A JP9026346A JP2634697A JPH09259033A JP H09259033 A JPH09259033 A JP H09259033A JP 9026346 A JP9026346 A JP 9026346A JP 2634697 A JP2634697 A JP 2634697A JP H09259033 A JPH09259033 A JP H09259033A
Authority
JP
Japan
Prior art keywords
buffer
pointer
data block
data
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.)
Pending
Application number
JP9026346A
Other languages
English (en)
Inventor
Terry Dan
ダン・テリー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH09259033A publication Critical patent/JPH09259033A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory

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)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】循環とページフォールトを低減することによっ
て性能を改善したバッファが必要とされている。 【解決手段】書き込み処理がすでに終了し、書き込みポ
インタ106の指示するアドレスから新たなデータブロ
ックの書き込みが可能になっている状態で、新たなデー
タブロックが書き込みポインタ106と物理的終端10
4の間で使用可能なメモリより大きい場合、書き込みポ
インタは物理的始端102を指示するように変更され、
バッファ終端ポインタ110をデータブロック114の
終端を指示するように変更し、読み出し装置がブロック
114をすべて読み出すなどして十分な空きスペースが
できてから、物理的始端102から書き込みが行なわれ
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は広義にはコンピュータ入
出力システムに関し、より詳細にはメモリ内のデータバ
ッファの管理方法に関する。
【0002】
【従来の技術】データバッファはデータフロー速度の差
あるいはデータ転送事象の発生時間の差の補償に用いら
れるソフトウエアプロシージャあるいはハードウエア装
置である。たとえば、コンピュータはディスクドライブ
へのデータの書き込みを行なわなければならない場合が
ある。コンピュータの転送速度がディスクドライブの転
送速度より高かったり、あるいはディスクドライブが適
正なトラックおよびセクターへのヘッドの位置決めとい
った電気機械的事象の発生を待たなければならない場合
がある。同様に、データバッファがコンピュータ内の独
立した処理の間あるいはコンピュータ間でのデータ転送
に用いられる場合がある。データバッファは別個の物理
的ハードウエア装置とすることもできるし、データ転送
の実行に使用するように一時的に確保される単なる記憶
領域とすることもできる。
【0003】一般に、オペレーティングシステムにおい
ては、メインメモリは多数の処理によって共用される。
メインメモリの大きなブロックを各処理に専用とするの
は不経済である。多くのコンピュータシステムでは、こ
れを行なう代わりに仮想アドレシングが用いられ、ハー
ドウエアとソフトウエアの組み合わせによって仮想アド
レスが、ディスク等の周辺装置にいつでもマップするこ
とのできるアドレスあるいはメインメモリにアクセスす
るアドレスに変換される。仮想アドレスをメインメモリ
からディスクあるいは他の周辺装置にマップし直す一つ
の方法は、“最低使用頻度”に基づくものである。すな
わち、ある処理がメインメモリに割り当てられたある仮
想アドレスブロックを最近使用した場合、かかる仮想ア
ドレスはメインメモリにマップされ続ける。かかるアド
レスが使用されなければ、そのメインメモリ領域の内容
をディスクに書き込み、メインメモリを空けて異なる仮
想アドレスにある他の処理に使用できるようにすること
ができる。処理装置はディスク上のページに対応する仮
想アドレスを参照して(ページフォールト)ディスクか
らメインメモリへのページの移動を要求することができ
る。一般に、ページフォールトは性能にかなりの悪影響
を与える。
【0004】バッファの通常のデータ構造はリングであ
り、書き込み装置あるいは処理および読み出し装置ある
いは処理の両方に共用されるメモリ領域内に実施され
る。通常の実施態様では、始端アドレス、終端アドレ
ス、書き込みポインタ、および読み出しポインタがあ
る。最初、書き込みポインタおよび読み出しポインタは
始端アドレスにある。書き込み装置がリングバッファに
書き込みを行ない、書き込みポインタを新しく書き込ま
れたデータの終端に移動する。読み出し装置が読み出し
ポインタの指示するデータを読み出し、データの読み出
しにともなって読み出しポインタを移動させる。書き込
みポインタがリングの終端アドレスに達すると、書き込
みポインタは始端アドレスに移動する(“循環”)。書
き込みポインタが読み出しポインタに重ならないように
さまざまな防御手段が実施される。
【0005】上述した典型的なリングバッファには性能
に悪影響を与える2つの側面がある。第1の性能上の損
失は、データを終端アドレスから始端アドレスに循環さ
せることができるが、データを連続するブロックとして
送出するかあるいは読み出さなければならない場合があ
ることに起因する。書き込み装置は2つの別個のブロッ
クを書き込まなければならなくなることがある。同様
に、読み出し装置は2つの別個の読み出し動作、すなわ
ちデータブロックの始端アドレスからバッファの終端ア
ドレスまでの読み出し動作とバッファの始端アドレスか
らデータブロックの終端アドレスまでの読み出し動作を
実行しなければならない場合がある。さらに、読み出し
装置はその後連続するデータブロックを再構築しなけれ
ばならず、これら2つのデータ集合を連続するメモリあ
るいは一時割り当てメモリに入れるコピー動作が必要に
なる。第2の性能上の損失は仮想メモリのページフォー
ルトに起因する。リングバッファを仮想メモリ内で実施
する場合、このバッファは最近使用されなかった可能性
のあるバッファの新しい領域を繰り返し使用する。した
がって、ページフォールトの発生する可能性が高い。
【0006】
【発明が解決しようとする課題】循環とページフォール
トを低減することによって性能を改善したバッファが必
要とされている。
【0007】
【課題を解決するための手段】メモリページフォールト
を低減し、読み出し装置による連続するデータブロック
の再構築の必要性を低減することによって性能を改善し
たバッファが提供される。短いデータブロックについて
は、このバッファは可能であればバッファの始めの部分
を高い頻度で再使用する。しかし、このバッファは必要
であれば長いデータブロックにも対応可能である。バッ
ファの始めの部分を頻繁に再使用すると、バッファ使用
中のページフォールトの発生が最小限になるため短いデ
ータブロックに対するバッファ性能が向上し、またバッ
ファの終端に近いメモリページが空いて他の処理がこれ
を連続的に使用しうる可能性を増大することによってシ
ステム性能が向上する。さらに、このバッファは転送さ
れるデータの量がバッファ全体の大きさを越えない限り
バッファ終端からバッファの始めにデータブロックを循
環させることがない。循環をなくすと、読み出し装置が
複数回の読み出しによって連続するデータブロックを再
構築する必要がなくなりバッファ性能が向上する。
【0008】通常のバッファ読み出しおよび書き込みポ
インタに加えて、本発明のバッファはさらに第3のポイ
ンタおよびマーカを有する。必要な場合、この第3のポ
インタすなわちバッファ終端ポインタを用いてデータブ
ロックの終端が示される。可能な場合、このマーカを用
いてバッファメモリの使用がバッファの始めの数ページ
に制限される。
【0009】
【発明の実施例】図1Aは本発明におけるバッファとし
て使用するメモリ領域を示す。アドレスは矢印100に
示すように左から右に進んでいく。このバッファは物理
的始端アドレス(参照符号102)と物理的終端アドレ
ス(参照符号104)とを有する。本発明の目的上、物
理的始端102と物理的終端104とは定数である。書
き込みポインタ106と読み出しポインタ108とがあ
る。書き込みポインタ106は書き込み装置(図示せ
ず)によって制御される。読み出しポインタ108は読
み出し装置(図示せず)によって制御される。当初、書
き込みポインタ106および読み出しポインタ108は
いずれも物理的始端102を指示している。バッファ終
端ポインタ110およびマーカ112は本発明独自のも
のである。これらはいずれもさらに予備的な説明を行な
った後より詳細に説明する。図1Aに示すように、バッ
ファ終端ポインタ110は最初は“無限大(∞)”の値
(すなわち可能な最高アドレス値)に設定されている。
バッファ終端ポインタ110の値“無限大”は次に説明
するようないくつかの条件を示すのに用いられる。
【0010】図1Bおよび図1Cについて説明する前
に、本発明のバッファに対する以下の動作規則を明記し
ておく必要がある。 1.書き込むべきデータが物理的始端102と物理的終
端104との間で使用可能なメモリより長い場合、書き
込むべきデータブロックは総バッファサイズ(物理的終
端から物理的始端を引いた差)またはそれより小さいサ
イズのブロックに分割される。 2.データブロックの書き込みは書き込みポインタ10
6によるアドレスの指定後に書き込むべきブロック全体
を保持するに十分な連続する空きメモリがある場合にの
み開始される。 3.データブロックの書き込み後、書き込み装置ソフト
ウエアが書き込みポインタ106がマーカー112を越
えていると判定すると、書き込み装置はその物理的始端
102から次のデータブロックを書き込む。 4.書き込み装置のみが書き込みポインタ106を変更
することができる。 5.読み出し装置のみが読み出しポインタ108を変更
することができる。 6.書き込み装置はバッファ終端ポインタ110の値が
無限大(可能な最大アドレス)であるときにのみこれを
変更することができる。 7.読み出し装置はバッファ終端ポインタ110の値が
無限大(可能な最大アドレス)でないときにのみこれを
変更することができる。
【0011】図1Bには読み出されていないデータブロ
ック114を有する図1Aのバッファ(メモリ領域)を
示す。図1Bにおいて、データブロック114は書き込
みポインタ106の指示するアドレスに書き込み装置に
よって書き込まれている(あるいは書き込み装置による
書き込みが終了している)ところである。書き込みポイ
ンタ106はデータブロック114の終端を示す。読み
出し装置が読み出しポインタ108の指示するアドレス
でデータブロック114の読み出しを行なっている。読
み出し装置は物理的始端102と読み出しポインタ10
8の間のデータをすでに読み出している。
【0012】図1Bにおいて、バッファは書き込みポイ
ンタ106と物理的終端104の間で新しいデータブロ
ックの書き込みを継続することができる。しかし、2つ
の潜在的なリスクがある。第一に、最近使用されていな
い書き込みポインタ106を越えたアドレスへのアクセ
スを要求するとページフォールトの発生する可能性が高
くなる。第二に、バッファの始端にあるアドレスをしば
らく使用しないでいると、このバッファ始端のアドレス
がディスクにページアウトされて、後でこの物理的始端
102から書き込みを行なう際にページフォールトの発
生する可能性が高くなる。したがって、書き込み処理に
おいて新たなデータブロックの書き込み開始の前に読み
出しの終了を待たねばならなくなる場合があるとして
も、バッファの物理的始端102に近い部分のみを使用
することによって全体的な性能は改善される。本発明者
は短いデータブロックに対しては仮想メモリページフォ
ールトの問題から長いバッファより短いバッファの方が
高い性能を有することを発見した。しかし、長いデータ
ブロックがある場合、短いバッファは連続するデータブ
ロックを分解して再構築しなければならないため性能上
の問題が生じる可能性がある。本発明のバッファは短い
データブロック(マーカ112が比較的始端に近い)に
対処するために短く保たれていながら、長いデータブロ
ックがあってもこれを連続するブロックとして書き込む
ことができる(ポインタ102とポインタ104の間の
メモリが比較的大きい)ものである。
【0013】マーカ112は使用メモリページ数に対す
る“緩やかな”限界値として用いられる。これは厳格な
最大値ではなく、書き込みソフトウエアの使用すべきマ
ーカである。規則3に定めるように、データブロックの
書き込み後に書き込み装置ソフトウエアが書き込みポイ
ンタ106がマーカ112を越えていると判定すると、
書き込み装置は物理的始端102から次のデータブロッ
クの書き込みを行なう。その結果、バッファは物理的始
端102とマーカ112の間のメモリページを繰り返し
使用し、それによってバッファのこの部分におけるペー
ジフォールトの可能性が低くなる。さらに、バッファの
終端近くの使用頻度の低いページを他の処理が中断され
ることなく使用できる可能性が高くなる。しかし、必要
であれば、バッファにはマーカを越えるより長いブロッ
クを入れることができる。バッファ内のマーカの最適な
位置はシステムに応じて決まり、最適な性能が得られる
ように経験的に決定しなければならない。
【0014】本発明のバッファの他の目的は、通常のリ
ングバッファに比べて連続するデータブロックの再構築
に使用する読み出し装置の必要性を小さくすることであ
る。規則1に定めるように、本発明のバッファは、書き
込むべきデータブロックがバッファ全体より大きくない
限り(すなわち物理的始端102と物理的終端104の
間のメモリより大きくないかぎり)物理的終端104か
ら物理的始端102に循環するデータの書き込みを行な
わない。書き込むべきデータがバッファ全体より大きい
場合、書き込み動作に先だってそのブロックは小部分に
分割される。
【0015】図1Bにおいて、書き込み処理がすでに終
了し、書き込みポインタ106の指示するアドレスから
新たなデータブロックの書き込みが可能になっているも
のと仮定する。本発明においては、図1Bに示す状態で
は、この書き込むべき新たなデータブロックが書き込み
ポインタ106と物理的終端104の間で使用可能なメ
モリより大きい場合、書き込みポインタは物理的始端1
02を指示するように変更される。同時に、バッファ終
端ポインタ110をデータブロック114の終端を指示
するように変更しなければならい。その後物理的始端1
02から書き込みが行なわれるが、この書き込みは読み
出しポインタ108によってこの新たなデータブロック
を書き込めるだけのスペースが空けられた後にのみ行な
われる。すなわち、この書き込むべき新たなデータブロ
ック全体に対する十分な空きスペースができるまで書き
込みは開始されない(規則2)。そのためには、読み出
し装置がブロック114をすべて読み出さなければなら
ない。
【0016】図1Cでは、読み出しポインタ108にお
いて古いデータブロック116の読み出しが行なわれて
おり、バッファ終端ポインタ110はこの古いデータブ
ロック116の終端を指示している。新たなデータブロ
ック118の書き込みが行なわれており、書き込みポイ
ンタ106はこの新たなデータブロック118の終端を
指示している。古いデータブロック116はマーカ11
2を越えた位置で終わっているため、新たなデータブロ
ック118は物理的始端102で始まる(規則3)。図
1Cに示す状態では、書き込みポインタ106の指示す
る位置における新たなデータブロックの書き込みについ
て次の4つのケースを考察しなければならない。 ケース1:書き込むべき新たなデータブロックが書き込
みポインタ106と読み出しポインタ108の間の領域
に入る場合、ただちに書き込みを開始することができる
(注:データブロックにはブロック118と書き込むべ
き新たなブロックの間の境界を判定しうる長さ情報を含
めることができる)。 ケース2:ケース1ではないが、新たなデータブロック
が書き込みポインタ106とバッファ終端ポインタ11
0の間の領域に入る場合、読み出し装置は十分なスペー
スを空けるのを待って書き込みを行なわなければならな
い(規則2)。 ケース3:ケース1でもケース2でもないが、新たなデ
ータブロックが書き込みポインタ106と物理的終端1
04の間の領域に入る場合、書き込み装置は読み出し装
置が古いデータブロック116をすべて読み出すまで待
たなければならない。古いデータブロック116が読み
出された後、読み出し装置は読み出しポインタ108を
物理的始端102を指示するように変更しなければなら
ず(規則5)、同時に読み出し装置はバッファ終端ポイ
ンタ110を無限大を指示するように変更しなければな
らない(規則7)。その後、書き込み装置は次のブロッ
クの書き込みを開始することができる。 ケース4:新たなデータブロックが書き込みポインタ1
06と物理的終端104の間に入らない場合、新たなデ
ータブロックは物理的始端102に書き込まなければな
らない。したがって、書き込み装置は読み出し装置が古
いデータブロック116と新たなデータブロック118
の読み出しを完了するのを待たなければならない。読み
出し装置が新たなデータブロック118の読み出しを完
了し、読み出しポインタ108が書き込みポインタ10
6に等しくなった後、書き込み装置は書き込みポインタ
106を物理的始端102を指示するように移動させ
(規則4)、書き込みを開始することができる。
【0017】第3のポインタ(バッファ終端ポインタ1
10)とこの第3のポインタの変更時期を管理するいく
つかの簡単な規則を追加することによって、ブロックが
バッファ全体より大きくない限りそのデータブロックを
循環させないバッファが提供されることに注意しなけれ
ばならない。
【0018】図2は上述したような書き込み装置のフロ
ーチャートである。図2の始めに、書き込み装置は新た
なデータブロックの書き込みが可能な状態である。この
新たなデータブロックがバッファより大きい場合(判断
200)、この新たなデータブロックはバッファに等し
いかそれより小さいサイズのブロックに分割される(2
02)。書き込みポインタの指示するアドレスがマーカ
の指示するアドレスを越えている場合(判断204)、
バッファ終端ポインタは書き込みポインタの指示するア
ドレスを指示するように変更され、書き込みポインタは
物理的始端を指示するように変更される(206)。バ
ッファ終端ポインタの値が無限大である場合(判断20
8)、書き込みポインタは図1Bに示すように読み出し
ポインタより大きいメモリアドレスを指示していなけれ
ばならない。新たなデータブロックが書き込みポインタ
の指示するアドレスと物理的終端の間に入る場合(判断
210)、書き込みを行なうことができる(228)。
書き込みポインタの値が無限大であり、新たなデータが
書き込みポインタの指示するアドレスと物理的終端の間
に入らない場合、書き込み装置は図1Cに示すように物
理的始端から開始しなければならない。バッファ終端ポ
インタは書き込みポインタの指示するアドレスを指示す
るように変更され、書き込みポインタ物理的始端を指示
するように変更される(212)。
【0019】バッファ終端ポインタの値が無限大でない
場合、図1Cに示すような状態となる。新たなデータブ
ロックが書き込みポインタの指示するアドレスと読み出
しポインタの指示するアドレスの間に入る場合(判断2
14)、書き込みを行なうことができる(228)。新
たなデータブロックが書き込みポインタの指示するアド
レスとバッファ終端ポインタの間に入る場合(判断21
6)、書き込み装置は読み出し装置がそのブロック全体
を書き込めるだけのスペースを空けるまで待たねばなら
ない(218)。新たなデータブロックが書き込みポイ
ンタの指示するアドレスと物理的終端の間に入る場合
(判断220)、書き込み装置は読み出し装置がバッフ
ァ終端ポインタまで読み出しを行なうのを待ち、バッフ
ァ終端ポインタを無限大を指示するように変更し、読み
出しポインタを物理的始端を指示するように変更する
(222)。新たなデータが書き込みポインタの指示す
るアドレスと物理的終端の間に入らない場合(判断22
0)、書き込み装置はまず読み出し装置がバッファ終端
ポインタの指示するアドレスまでのデータの読み出しを
終了するのを待ち、その後読み出し装置がバッファ終端
ポインタを無限大に変更するのを待つ(224)。次
に、書き込み装置はバッファ終端ポインタを書き込みポ
インタの指示するアドレスを指示するように変更し、そ
の後書き込みポインタを物理的始端を指示するように変
更する(226)。読み出されていないデータがあるた
め書き込み装置はまだ書き込みを行なうことができな
い。次に、書き込み装置は読み出し装置がバッファ終端
ポインタの指示するアドレスまでのデータの読み出しを
継続し、バッファ終端ポインタを無限大に変更するのを
待つ(ブロック227)。その後、書き込み装置は新た
なデータブロックの書き込みを行なうことができる(2
28)。
【0020】図3は上述したような読み出し装置のフロ
ーチャートである。バッファ終端ポインタの値が無限大
である場合(判断300)、図1Bに示すような状態に
なり、読み出し装置は書き込みポインタまでのデータを
読み出すことができる(302)。バッファ終端ポイン
タの値が無限大以外である場合、図1Cに示すような状
態になる。読み出しポインタの指示するアドレスがバッ
ファ終端ポインタの指示するアドレスより小さい場合
(判断304)、読み出し装置はバッファ終端ポインタ
までのデータの読み出しを行なうことができる(30
6)。読み出しポインタの指示するアドレスがバッファ
終端ポインタの指示するアドレスに等しい場合、読み出
し装置は読み出しポインタを物理的始端を指示するよう
に変更し、同時にバッファ終端ポインタを無限大を指示
するように変更する(308)。
【0021】次のようないくつかの要点がある。図1B
に示す状態から図1Cに示す状態への変化の間の書き込
み装置について考察する。書き込み装置はバッファ終端
ポインタ110を書き込みポインタ106の指示するア
ドレスを指示するように変更し、書き込みポインタ10
6を物理的始端102を指示するように変更しなければ
ならない。いずれかのポインタがまず変更され、かかる
変更の間に中断が生じると、読み出し装置が状態を誤解
する可能性がある。したがって、両方のポインタを1つ
の中断のない動作の中で変更しなければならない。書き
込み装置と読み出し装置は非同期であることが好適であ
る。書き込み装置が書き込みポインタをバッファの始端
を指示するように変更するとき、書き込み装置は常にこ
れを読み出し装置に知らせなければならない。同様に、
読み出し装置が読み出しポインタをバッファの始端を指
示するように変更するとき、読み出し装置は常にこれを
書き込み装置に知らせなければならない。図2の218
において、書き込み装置は読み出し装置がスペースを空
けるのを待っている。あるいはまた、書き込み装置がア
ドレス“X”までのスペースが必要であることを読み出
し装置に知らせ、読み出し装置が読み出しがアドレス
“X”を越えたことを知らせるようにすることもでき
る。
【0022】上述したバッファは、書き込み装置がバッ
ファが終端まで空けられるのを待って始端での書き込み
を行なう必要がないという点で部分的にはリングバッフ
ァと同様に動作する。しかし、リングバッファと異な
り、バッファの終端から始端へのデータブロックの循環
が生じないため性能が向上する。さらに、上述したバッ
ファは、ページフォールトの発生を低減することによっ
て性能上の利点を提供し、同時にこのバッファは任意の
長さとすることによって必要であれば長いデータブロッ
クにも対処することができる。
【0023】本発明の以上の説明は例示と説明のために
のみ行なったものである。本発明はここに開示した態様
によって網羅あるいは限定されるものではなく、上述し
た原理に照らした他の修正や変更が可能である。上の実
施例は本発明の原理とその実際の応用を最もよく説明す
ることによって、当業者がその具体的用途に適したさま
ざまな実施態様およびさまざまな変更態様で本発明を最
もよく活用しうるように選択し、説明したものである。
特許請求の範囲には従来技術によって限定される場合を
除き本発明の他の代替実施例が含まれるものである。
【0024】以上、本発明の実施例について詳述した
が、以下、本発明の各実施態様の例を示す。
【0025】(実施態様1)データブロックをバッファ
に書き込む方法であって、(a)前記バッファに読み出
されていないデータが存在することを判定するステップ
と、(b)前記データブロックを既存のデータの後に連
続するブロックとして前記バッファに入れることができ
ない場合、前記バッファに前記読み出されていないデー
タがまだ存在する状態で、前記データブロックを前記バ
ッファの始端において連続するブロックとして書き込む
ステップとを有することを特徴とする方法。
【0026】(実施態様2)前記ステップ(b)の後
で、(b1)前記データブロックが前記バッファの始端
と前記読み出されていないデータとの間に入る場合ただ
ちに前記データブロックの書き込みを行なうステップを
有することを特徴とする実施態様1に記載の方法。
【0027】(実施態様3)前記ステップ(b)の後
で、(b2)前記データブロックが前記既存のデータに
部分的に重なる場合、読み出し装置が前記既存のデータ
を部分的に読み出すのを待って前記データブロックの書
き込みを行なうステップを有することを特徴とする実施
態様1に記載の方法。
【0028】(実施態様4)データブロックをバッファ
に書き込む方法であって、(a)前記バッファの始端に
読み出されていないデータが存在することを判定するス
テップと、(b)前記データブロックを前記既存のデー
タの後に連続するブロックとして前記バッファに入れる
ことができない場合、読み出し装置が前記既存のデータ
を完全に読み出すのを待って前記データブロックの書き
込みを行なうステップとからなることを特徴とする方
法。
【0029】(実施態様5)データブロックをバッファ
に書き込む方法であって、(a)書き込みポインタがマ
ーカアドレスより大きいアドレスを指示しているかどう
かを判定するステップと、(b)前記書き込みポインタ
が前記マーカアドレスより大きいアドレスを指示してい
る場合、前記書き込みポインタを物理的バッファ始端ア
ドレスを指示するように変更するステップと、(c)前
記データブロックを前記書き込みポインタの示すアドレ
スに書き込むステップとを有することを特徴とする方
法。
【0030】(実施態様6)実施態様5の前記ステップ
(b)の後に、(b1)前記データブロックが前記書き
込みポインタの示すアドレスと物理的バッファ終端の間
に入るかどうかを判定するステップと、(b2)前記デ
ータブロックが前記書き込みポインタの示すアドレスと
前記物理的バッファ終端の間に入らない場合、前記書き
込みポインタを前記物理的バッファ始端を指示するよう
に変更するステップとを有することを特徴とする実施態
様5に記載の方法。
【0031】
【発明の効果】以上のように、本発明を用いると、メモ
リページフォールトを低減し、読み出し装置による連続
するデータブロックの再構築の必要性を低減することに
よって性能を改善したバッファが提供される。
【0032】バッファの始めの部分を頻繁に再使用すの
で、バッファ使用中のページフォールトの発生が最小限
になるため短いデータブロックに対するバッファ性能が
向上し、またバッファの終端に近いメモリページが空い
て他の処理がこれを連続的に使用しうる可能性を増大す
ることによってシステム性能が向上する。
【0033】また、データブロックの循環がなくなるの
で、読み出し装置が複数回の読み出しによって連続する
データブロックを再構築(コピーなど)する必要がなくな
りバッファ性能が向上する。
【図面の簡単な説明】
【図1A】本発明のデータバッファに用いられるメモリ
領域のブロック図である。
【図1B】バッファ内に読み出されていないデータがあ
る図1Aのブロック図である。
【図1C】バッファ内の読み出されていない2つのデー
タブロックがある図1Aのブロック図である。
【図2】本発明の読み出し装置の方法のフローチャート
である。
【図3】本発明の書き込み装置の方法のフローチャート
である。
【符号の説明】
100:アドレスの増大方向 102:物理的始端アドレス 104:物理的終端アドレス 106:書き込みポインタ 108:読み出しポインタ 110:バッファ終端ポインタ 112:マーカー 114:読み出されていないデータブロック 116:古いデータブロック 118:新たなデータブロック 200−228:書き込みステップ 300−308:読み出しステップ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】データブロックをバッファに書き込む方法
    であって、 (a)前記バッファに読み出されていないデータが存在
    することを判定するステップと、 (b)前記データブロックを既存のデータの後に連続す
    るブロックとして前記バッファに入れることができない
    場合、前記バッファに前記読み出されていないデータが
    まだ存在する状態で、前記データブロックを前記バッフ
    ァの始端において連続するブロックとして書き込むステ
    ップとを有することを特徴とする方法。
JP9026346A 1996-02-12 1997-02-10 バッファ書き込み方法 Pending JPH09259033A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US598,582 1984-04-10
US08/598,582 US5864713A (en) 1996-02-12 1996-02-12 Method for determining if data should be written at the beginning of a buffer depending on space available after unread data in the buffer

Publications (1)

Publication Number Publication Date
JPH09259033A true JPH09259033A (ja) 1997-10-03

Family

ID=24396142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9026346A Pending JPH09259033A (ja) 1996-02-12 1997-02-10 バッファ書き込み方法

Country Status (2)

Country Link
US (1) US5864713A (ja)
JP (1) JPH09259033A (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189109B1 (en) 1997-05-13 2001-02-13 Micron Electronics, Inc. Method of remote access and control of environmental conditions
US6202160B1 (en) 1997-05-13 2001-03-13 Micron Electronics, Inc. System for independent powering of a computer system
US6304929B1 (en) 1997-05-13 2001-10-16 Micron Electronics, Inc. Method for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6499073B1 (en) 1997-05-13 2002-12-24 Micron Electronics, Inc. System using programmable processor for selectively enabling or disabling power to adapter in response to respective request signals
US5892928A (en) 1997-05-13 1999-04-06 Micron Electronics, Inc. Method for the hot add of a network adapter on a system including a dynamically loaded adapter driver
US6243773B1 (en) 1997-05-13 2001-06-05 Micron Electronics, Inc. Configuration management system for hot adding and hot replacing devices
US6163849A (en) 1997-05-13 2000-12-19 Micron Electronics, Inc. Method of powering up or powering down a server to a maintenance state
US6202111B1 (en) 1997-05-13 2001-03-13 Micron Electronics, Inc. Method for the hot add of a network adapter on a system including a statically loaded adapter driver
US6173346B1 (en) 1997-05-13 2001-01-09 Micron Electronics, Inc. Method for hot swapping a programmable storage adapter using a programmable processor for selectively enabling or disabling power to adapter slot in response to respective request signals
US6247080B1 (en) 1997-05-13 2001-06-12 Micron Electronics, Inc. Method for the hot add of devices
US6324608B1 (en) * 1997-05-13 2001-11-27 Micron Electronics Method for hot swapping of network components
US6243838B1 (en) 1997-05-13 2001-06-05 Micron Electronics, Inc. Method for automatically reporting a system failure in a server
US6195717B1 (en) 1997-05-13 2001-02-27 Micron Electronics, Inc. Method of expanding bus loading capacity
US6418492B1 (en) 1997-05-13 2002-07-09 Micron Electronics Method for computer implemented hot-swap and hot-add
US6145098A (en) 1997-05-13 2000-11-07 Micron Electronics, Inc. System for displaying system status
US6249834B1 (en) 1997-05-13 2001-06-19 Micron Technology, Inc. System for expanding PCI bus loading capacity
US6269417B1 (en) 1997-05-13 2001-07-31 Micron Technology, Inc. Method for determining and displaying the physical slot number of an expansion bus device
US6338150B1 (en) 1997-05-13 2002-01-08 Micron Technology, Inc. Diagnostic and managing distributed processor system
US6249885B1 (en) 1997-05-13 2001-06-19 Karl S. Johnson Method for managing environmental conditions of a distributed processor system
US6170028B1 (en) 1997-05-13 2001-01-02 Micron Electronics, Inc. Method for hot swapping a programmable network adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6253334B1 (en) 1997-05-13 2001-06-26 Micron Electronics, Inc. Three bus server architecture with a legacy PCI bus and mirrored I/O PCI buses
US6282673B1 (en) * 1997-05-13 2001-08-28 Micron Technology, Inc. Method of recording information system events
US6269412B1 (en) 1997-05-13 2001-07-31 Micron Technology, Inc. Apparatus for recording information system events
US6249828B1 (en) 1997-05-13 2001-06-19 Micron Electronics, Inc. Method for the hot swap of a mass storage adapter on a system including a statically loaded adapter driver
US6330690B1 (en) 1997-05-13 2001-12-11 Micron Electronics, Inc. Method of resetting a server
US6192434B1 (en) 1997-05-13 2001-02-20 Micron Electronics, Inc System for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6292905B1 (en) 1997-05-13 2001-09-18 Micron Technology, Inc. Method for providing a fault tolerant network using distributed server processes to remap clustered network resources to other servers during server failure
US6363497B1 (en) 1997-05-13 2002-03-26 Micron Technology, Inc. System for clustering software applications
US6179486B1 (en) 1997-05-13 2001-01-30 Micron Electronics, Inc. Method for hot add of a mass storage adapter on a system including a dynamically loaded adapter driver
US6219734B1 (en) 1997-05-13 2001-04-17 Micron Electronics, Inc. Method for the hot add of a mass storage adapter on a system including a statically loaded adapter driver
US6272648B1 (en) * 1997-05-13 2001-08-07 Micron Electronics, Inc. System for communicating a software-generated pulse waveform between two servers in a network
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US6263387B1 (en) 1997-10-01 2001-07-17 Micron Electronics, Inc. System for automatically configuring a server after hot add of a device
US6212585B1 (en) 1997-10-01 2001-04-03 Micron Electronics, Inc. Method of automatically configuring a server after hot add of a device
US6138179A (en) 1997-10-01 2000-10-24 Micron Electronics, Inc. System for automatically partitioning and formatting a primary hard disk for installing software in which selection of extended partition size is not related to size of hard disk
US6199173B1 (en) 1997-10-01 2001-03-06 Micron Electronics, Inc. Method for mapping environmental resources to memory for program access
US6226035B1 (en) * 1998-03-04 2001-05-01 Cyclo Vision Technologies, Inc. Adjustable imaging system with wide angle capability
US6205503B1 (en) 1998-07-17 2001-03-20 Mallikarjunan Mahalingam Method for the hot swap and add of input/output platforms and devices
US6223234B1 (en) 1998-07-17 2001-04-24 Micron Electronics, Inc. Apparatus for the hot swap and add of input/output platforms and devices
US6308228B1 (en) * 1998-11-23 2001-10-23 Duke University System and method of adaptive message pipelining
US6425022B1 (en) * 1999-06-11 2002-07-23 Oak Technology, Inc. System for reading blocks of different sizes by maintaining buffer page pointer when word count is not greater than guardband, and reset word count thereafter
US7457894B2 (en) * 2001-08-29 2008-11-25 Nxp B.V. Synchronization of non-sequential moving pointers
US7444637B2 (en) * 2003-02-18 2008-10-28 Microsoft Corporation Systems and methods for scheduling coprocessor resources in a computing system
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
DE102004055933A1 (de) * 2004-11-19 2006-05-24 Patent-Treuhand-Gesellschaft für elektrische Glühlampen mbH Verfahren zur Vergabe von Kurzadressen in Beleuchtungsanlagen
US8612643B2 (en) * 2007-06-30 2013-12-17 Microsoft Corporation Interfaces for digital media processing
US9003131B1 (en) * 2013-03-27 2015-04-07 Parallels IP Holdings GmbH Method and system for maintaining context event logs without locking in virtual machine
DE102020108101A1 (de) * 2020-03-24 2021-09-30 Pilz Gmbh & Co. Kg Vorrichtung zur Speicherung von Daten in einem nichtflüchtigen Speicher

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121114A (en) * 1989-05-29 1992-06-09 Sharp Corporation Information processing apparatus having a specified-area confirming function
US5159681A (en) * 1989-08-11 1992-10-27 Lexmark International, Inc. Page printer memory allocation
US5210749A (en) * 1990-05-29 1993-05-11 Advanced Micro Devices, Inc. Configuration of srams as logical fifos for transmit and receive of packet data
JPH06124223A (ja) * 1991-03-28 1994-05-06 Texas Instr Inc <Ti> ディスクファイルシステムのログ装置および方法
US5426639A (en) * 1991-11-29 1995-06-20 At&T Corp. Multiple virtual FIFO arrangement
US5444853A (en) * 1992-03-31 1995-08-22 Seiko Epson Corporation System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's
CA2072511A1 (en) * 1992-06-26 1993-12-27 Benedetto Angelo Notarianni Data processing apparatus with dynamic memory allocation

Also Published As

Publication number Publication date
US5864713A (en) 1999-01-26

Similar Documents

Publication Publication Date Title
JPH09259033A (ja) バッファ書き込み方法
US9058254B2 (en) Memory device
US6948033B2 (en) Control method of the cache hierarchy
US6665747B1 (en) Method and apparatus for interfacing with a secondary storage system
JPH04220738A (ja) 高速書き込み方法
KR20010050881A (ko) 캐시 메모리의 제어 방법, 컴퓨터 시스템, 하드 디스크드라이브 장치 및 하드 디스크 제어 장치
US6263408B1 (en) Method and apparatus for implementing automatic cache variable update
JP4461089B2 (ja) ストレージ制御装置およびストレージ制御方法
JP3111912B2 (ja) ディスクキャッシュ制御方式
US7421536B2 (en) Access control method, disk control unit and storage apparatus
JPH01159746A (ja) ディスクキャッシュ制御方式
KR100385238B1 (ko) 그룹적응형세그먼트캐시버퍼구현방법
US5678022A (en) Storage control system with auxiliary storage and optimized process data length and gap to reduce track and cylinder switching
JP2973474B2 (ja) 光磁気ディスク装置
JPH0812643B2 (ja) ページ退避/復元装置
WO1994022134A1 (en) Buffer control for data transfer within hard disk during idle periods
JPS59172186A (ja) キヤツシユ・メモリ制御方式
JPH11232037A (ja) ディスクキャッシュライト機能を持った磁気ディスク装置
JP2964504B2 (ja) 文書処理装置
JPS59146344A (ja) 仮想スタツク先行制御方式
JPH05100926A (ja) 入出力管理方式
JPS6243737A (ja) 割り込み制御方式
JPH0526216B2 (ja)
JPH06290000A (ja) ディスクコントローラ
JPS6175942A (ja) デイスクキヤツシユ制御方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051026

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20051101

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20051109

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060328