JP3268980B2 - データ・バッファリング・システム - Google Patents

データ・バッファリング・システム

Info

Publication number
JP3268980B2
JP3268980B2 JP23160196A JP23160196A JP3268980B2 JP 3268980 B2 JP3268980 B2 JP 3268980B2 JP 23160196 A JP23160196 A JP 23160196A JP 23160196 A JP23160196 A JP 23160196A JP 3268980 B2 JP3268980 B2 JP 3268980B2
Authority
JP
Japan
Prior art keywords
buffer
ring
pointer
data
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP23160196A
Other languages
English (en)
Other versions
JPH10105373A (ja
Inventor
治 市川
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP23160196A priority Critical patent/JP3268980B2/ja
Priority to US08/899,375 priority patent/US5948082A/en
Priority to KR1019970034884A priority patent/KR19980024107A/ko
Publication of JPH10105373A publication Critical patent/JPH10105373A/ja
Application granted granted Critical
Publication of JP3268980B2 publication Critical patent/JP3268980B2/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
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えばコンピュー
タ・システムがシステム外部から受信したデータをファ
イル化してセーブする際に、受信データの一時保持のた
めに用いられるデータ・バッファリング・システムに係
り、特に、受信データの書き込み速度と読み出し速度の
ギャップを吸収するために、バッファ・メモリをリング
・バッファ構成にしたデータ・バッファリング・システ
ムに関する。更に詳しくは、本発明は、リング・バッフ
ァ・サイズの巨大化に伴うスワッピングの問題を解消す
るデータ・バッファリング・システムに関する。
【0002】
【従来の技術】昨今の技術革新に伴い、デスクトップ
型、ノートブック型など各種パーソナル・コンピュータ
(PC)が開発され、広範に普及してきている。最近で
は、PCの適用分野もますます拡大してきている。
【0003】例えばPCに通信用アダプタ・カードを装
着して通信媒体と接続すれば情報通信機器として利用可
能となる。また、PCにDCD(データ・チャネル・デ
コーダ)アダプタ・カードを装着すれば、PCは衛星デ
ータ放送受信システムとして稼働し、衛星データ放送を
受信することができる。
【0004】図7には、PCが衛星放送データをファイ
ルとして取り込む様子を概略的に示している。衛星放送
データは、例えは288ビット長のパケット(より具体
的には、データの実体である23バイトの他にチェック
・ビットを含む。以下同様)の形態で伝送される。DC
Dアダプタが受信したパケットは、DCDアダプタ用デ
バイス・ドライバ(仮称)が持つ32Kバイト・サイズ
のデータ・バッファに順次蓄積される。オペレーティン
グ・システム(OS)内に設けられたアプリケーション
・プログラミング・インターフェース(API:システ
ム・コールの一種)は、データ・バッファに蓄積された
パケット・データを組み立ててデータ・グループ化する
とともに、データ・グループをファイルとしてハード・
ディスクにセーブするようになっている。ここで言う
「データ・グループ」とは、意味のあるデータのまとま
りのことであり、例えば動画1フレーム分に相当する。
但し、データ・グループの区切りは、基本的にオリジナ
ル・データの作成者の意図や好みに基づくものであり、
データ・グループのサイズやパケット数は可変である。
例えば動画を含む長大なデータ・グループは最大16M
バイトに上ることも稀ではない。
【0005】なお、データ・グループ化やファイル・セ
ービング作業は、アプリケーション・プログラム(例え
ば「衛星データ放送受信アプリケーション(仮称)」)
がAPIを介さず直接行ってもよい。また、23バイト
なるパケット長や、32Kバイトなるバッファ・メモリ
・サイズは、今日に至る通信技術の慣習に拠る設計事項
に過ぎない。
【0006】受信データをデータ・バッファに書き込む
動作と、これをデータ・バッファから読み出してデータ
・グループ化する動作は、殆どの場合、同期的に行われ
ているのが実情である。書き込み動作と読み出し動作の
同期がとれている場合に限れば、データ・バッファを
「ピンポン・バッファ」構成にすることが可能である
(図8(a)参照)。ピンポン・バッファとは、2個の
バッファ・メモリからなり、一方のバッファがデータ読
み出し用に使用されている間は他方をデータ書き込み用
に使用する、というものである。ピンポン・バッファ
は、各バッファ・メモリの使用頻度が高く、スワッピン
グが起きにくいという点で優れている。
【0007】ところが、データ・バッファの書き込み動
作と読み出し動作は、常に同期しているとは限らない。
何故ならば、ハード・ディスクにファイル・セーブする
ときには、メモリ・アクセスとは異って比較的長時間を
要する結果としてデータ読み出し動作の方が滞り、非同
期状態となるからである。上述のピンポン・バッファ
は、書き込み動作と読み出し動作の速度差を吸収するこ
とはできない。もしデータの書き込み動作を待たせれ
ば、受信データの取り零しを起こしてしまう。また、ま
た、読み出しの完了を待たず次の受信データを書き込め
ば、読み出し前の受信データが失われることとなる。
【0008】このため、受信データのバッファリングに
は、いわゆる「リング・バッファ」を用いることが好ま
しいと考えられている。ここで、「リング・バッファ」
とは各バッファ・メモリ内をポインタで制御し、先頭バ
ッファと最終バッファをリングのように繋げたバッファ
リング方式のことであり、上限アドレスから順次書き込
んで行き、下限アドレスまで到達したら再び上限アドレ
スにジャンプして書き込めるように制御されるようにな
っている。図8(b)には、リング・バッファにより受
信データを一時保持する様子を模式的に示している。リ
ング・バッファは、概念上は、複数のバッファ・メモリ
がリング状に並べられており、データの読み出しポイン
タが書き込みポインタを追いかける様にして動作する。
【0009】APIは、DCDアダプタが受信したパケ
ット・データを、32Kバイト単位で、2〜5回/秒程
度の頻度で読み出して、書き込みポインタで指示された
バッファ・メモリに書き込めばよい。また、APIは、
読み出しポインタで指示されたバッファ・メモリから受
信データを逐次取り出して、データ・グループ・バッフ
ァ上でデータ・グループ化し、ハード・ディスクにファ
イル・セーブすればよい。データ・グループのサイズは
概して一定でなく、巨大なデータ・グループを捌くとき
には読み出し動作が滞ってしまう。このようなリング・
バッファ構成を採用すれば、書き込み動作と読み出し動
作の速度差を吸収することが可能なことは、当業者であ
れば理解できよう。
【0010】
【発明が解決しようとする課題】リング・バッファのサ
イズは、バッファからのデータ読み出しの遅延に対して
充分余裕を持ったものである必要がある。例えば生成さ
れたデータ・グループが最大サイズの16Mバイトとな
った場合には、該データ・グループをハード・ディスク
にファイル・セーブするには1分程度の時間を要する。
このファイル・セーブ作業の間、データ・グループの生
成すなわちバッファからのデータ読み出し作業は中断さ
れる。一方、1分間に電波が伝送するデータ量は8Mバ
イト程度である。したがって、データ読み出しが中断さ
れる最大期間の受信データを確保するためには、8Mバ
イト・サイズのリング・バッファ(すなわち32Kバイ
トのバッファ・メモリを256個)備える必要がある。
【0011】ところが、8Mバイトのリング・バッファ
をPCの物理メモリ上に常駐させることは殆ど不可能に
近い。物理メモリをリング・バッファ以外の目的に割り
当てる必要があること(例えばデータ・グループ生成用
のバッファとして16Mバイトが必要である)、及び、
通常のPCに標準装備されるメモリ・サイズが精々16
Mバイト又は32Mバイト程度であることなどを勘案す
れば、衛星データ放送受信システムとして用いられたP
Cの物理メモリが不足状態にあることは明白であろう。
【0012】物理メモリが不足したことの帰結として、
当然、不要(若しくは古い)データのハード・ディスク
への追い出しすなわちスワップ・アウトが敢行される。
すなわち、リング・バッファ中の一部のバッファ・メモ
リしか物理メモリ上に置くことはできず、残りのバッフ
ァ・メモリはハード・ディスクに追い出されてしまう訳
である(図9参照)。
【0013】スワップ・アウト・データの決定は、一般
には、LRU(Least Recently Used)法、すなわち最
近使われなかったものを追い出すという論理が適用され
る。ここで、巨大なリング・バッファ(例えば32Kバ
イトのバッファ・メモリを256個持った8Mバイト・
リング・バッファ)にLRU法を適用した場合を図9を
例にとって説明する。同図において、斜線部は未処理
(すなわちデータ・グループ化されていない)データが
書き込まれたバッファ・メモリ領域であり、点線で囲ま
れた部分は物理メモリ上に存在するバッファ・メモリ領
域であるものとする。
【0014】リング・バッファにおいてはバッファ・メ
モリはリングに沿って順繰りに使用される。したがっ
て、最も過去に使用されたバッファ・メモリは、次のデ
ータ書き込みに使用されるバッファ・メモリであり、ス
ワップ・アウトされている可能性が非常に高い。この結
果、書き込みポインタで指示されたバッファ・メモリを
物理メモリ上に存在させるためには、バッファ・メモリ
に該当するデータをスワップ・インしなければならな
い。すなわち、リングを周回するときには、バッファ・
メモリを進める都度、必ずスワッピングが発生する訳で
ある。しかも、このときのスワップ・イン・データは、
既にデータ・グループ化された無効データである。メモ
リ空間の管理は、一般に、OSのサブシステムの1つで
あるメモリ・マネージャが行う。メモリ・マネージャ
は、APIとは無関係にスワッピング作業を管理してお
り、どのバッファ・メモリが使用済みかを掌握できない
ため、このような無効データのスワッピングを止めるこ
とはできない。このような無駄なデータの無益なスワッ
ピング作業はシステムにとって無駄なストレスになるこ
とは言うまでもない。
【0015】データ・グループが最大の16Mバイトと
なることはごく稀であり、通常は、物理メモリ上に常駐
できる程度の個数のバッファ・メモリを用いて同期的に
受信データを処理することができる。リング・バッファ
のサイズを巨大化させたがばかりに、受信データを書き
込む度にリング上を順繰り移動して、スワッピングを引
き起こしてしまうことになる。また、各バッファ・メモ
リの使用効率も当然低くなる。しかしながら、最大サイ
ズのデータ・グループ処理時におけるデータ保全を考量
すれば、リング・バッファを巨大化せざるを得ない。
【0016】ハード・ディスクへのアクセスを要するス
ワッピングは、システムにとって多大なオーバーヘッド
である。上記の説明はDCDアダプタを1ポート持った
場合の話であり、DCDアダプタを4ポート持った場合
にはスワッピングの機会も4倍に増える。この結果、ス
ワッピングが常態化するおそれがあり、延いては受信デ
ータの処理の遅れや取り零しを招来しかねない。
【0017】本発明は以上のような問題点に着目したも
のであり、その目的は、例えばコンピュータ・システム
がシステム外部から受信したデータをファイル化してセ
ーブする際に、受信データの一時保持のために用いられ
る、優れたデータ・バッファリング・システムを提供す
ることにある。
【0018】本発明の更なる目的は、受信データの一時
保持のために用いられるデータ・バッファリング・シス
テムであって、受信データの書き込み速度と読み出し速
度のギャップを吸収するために、バッファ・メモリをリ
ング・バッファ構成にした、優れたデータ・バッファリ
ング・システムを提供することにある。
【0019】本発明の更なる目的は、膨大量の受信デー
タを一時的に保持するためにリング・バッファ構成にし
たデータ・バッファリング・システムであって、リング
・バッファ・サイズの巨大化に伴うハード・ディスクへ
のスワッピングの問題を解消することができる、優れた
データ・バッファリング・システムを提供することにあ
る。
【0020】
【課題を解決するための手段】本発明は、上記課題を参
酌してなされたものであり、その第1の側面は、コンピ
ュータ・システムの物理メモリを利用してデータ・バッ
ファリングを行うためのデータ・バッファリング・シス
テムであって、(a)メモリ空間上に設けられた複数の
バッファ・メモリと、(b)バッファ・メモリをリング
状に連結してなる第1のリング・バッファと、(c)複
数の第1のリング・バッファをリング状に連結してなる
第2のリング・バッファと、(d)各第1のリング・バ
ッファ内に設けられた、次の読み出しバッファ・メモリ
位置を指示するための第1の読み出しポインタと、
(e)各第1のリング・バッファ内に設けられた、次の
書き込みバッファ・メモリ位置を指示するための第1の
書き込みポインタと、(f)現在バッファ・メモリから
の読み出しが行われている第1のリング・バッファ位置
を指示するための第2の読み出しポインタと、(g)現
在バッファ・メモリへの書き込みが行われている第1の
リング・バッファ位置を指示するための第2の書き込み
ポインタと、を具備することを特徴とするデータ・バッ
ファリング・システムである。
【0021】また、本発明の第2の側面は、コンピュー
タ・システムの物理メモリを利用してデータ・バッファ
リングを行うためのデータ・バッファリング・システム
であって、(a)メモリ空間上に設けられた複数のバッ
ファ・メモリと、(b)バッファ・メモリをリング状に
連結してなる第1のリング・バッファと、(c)複数の
第1のリング・バッファをリング状に連結してなる第2
のリング・バッファと、(d)各第1のリング・バッフ
ァ内に設けられた、次の読み出しバッファ・メモリ位置
を指示するための第1の読み出しポインタと、(e)各
第1のリング・バッファ内に設けられた、次の書き込み
バッファ・メモリ位置を指示するための第1の書き込み
ポインタと、(f)現在バッファ・メモリからの読み出
しが行われている第1のリング・バッファ位置を指示す
るための第2の読み出しポインタと、(g)現在バッフ
ァ・メモリへの書き込みが行われている第1のリング・
バッファ位置を指示するための第2の書き込みポインタ
と、(h)前記コンピュータ・システムに付設された外
部記憶装置と、(i)バッファ・メモリの内容を前記物
理メモリと前記外部記憶装置の間でスワッピングさせる
ためのスワッピング手段と、を具備することを特徴とす
るデータ・バッファリング・システムである。
【0022】また、本発明の第3の側面は、コンピュー
タ・システムの物理メモリを利用してデータ・バッファ
リングを行うためのデータ・バッファリング・システム
であって、(a)メモリ空間上に設けられた複数のバッ
ファ・メモリと、(b)バッファ・メモリをリング状に
連結してなる第1のリング・バッファと、(c)複数の
第1のリング・バッファをリング状に連結してなる第2
のリング・バッファと、(d)各第1のリング・バッフ
ァ内に設けられた、次の読み出しバッファ・メモリ位置
を指示するための第1の読み出しポインタと、(e)各
第1のリング・バッファ内に設けられた、次の書き込み
バッファ・メモリ位置を指示するための第1の書き込み
ポインタと、(f)現在バッファ・メモリからの読み出
しが行われている第1のリング・バッファ位置を指示す
るための第2の読み出しポインタと、(g)現在バッフ
ァ・メモリへの書き込みが行われている第1のリング・
バッファ位置を指示するための第2の書き込みポインタ
と、(h)現在第2の書き込みポインタで指示されてい
る第1のリング・バッファにおいて第1の書き込みポイ
ンタが第1の読み出しポインタの1つ手前のバッファ・
メモリを指示しているかどうかを判断し、1つ手前でな
ければ第1の書き込みポインタで指示されたバッファ・
メモリにデータを書き込むとともに第1の書き込みポイ
ンタを次のバッファ・メモリに進め、1つ手前であれば
第2の書き込みポインタを次の第1のリング・バッファ
に進める、書き込み制御手段と、を具備することを特徴
とするデータ・バッファリング・システムである。
【0023】第3の側面に係るデータ・バッファリング
・システムにおいて、前記書き込み制御手段は、第2の
書き込みポインタを次の第1のリング・バッファに進め
る前に、第2の書き込みポインタが第2の読み出しポイ
ンタの1つ手前と一致するかどうかを判断し、一致する
場合には、バッファ満杯状態と判断して第2の書き込み
ポインタを進めずデータ書き込み動作を見送るようにし
てもよい。
【0024】また、本発明の第4の側面は、コンピュー
タ・システムの物理メモリを利用してデータ・バッファ
リングを行うためのデータ・バッファリング・システム
であって、(a)メモリ空間上に設けられた複数のバッ
ファ・メモリと、(b)バッファ・メモリをリング状に
連結してなる第1のリング・バッファと、(c)複数の
第1のリング・バッファをリング状に連結してなる第2
のリング・バッファと、(d)各第1のリング・バッフ
ァ内に設けられた、次の読み出しバッファ・メモリ位置
を指示するための第1の読み出しポインタと、(e)各
第1のリング・バッファ内に設けられた、次の書き込み
バッファ・メモリ位置を指示するための第1の書き込み
ポインタと、(f)現在バッファ・メモリからの読み出
しが行われている第1のリング・バッファ位置を指示す
るための第2の読み出しポインタと、(g)現在バッフ
ァ・メモリへの書き込みが行われている第1のリング・
バッファ位置を指示するための第2の書き込みポインタ
と、(h)現在第2の読み出しポインタで指示されてい
る第1のリング・バッファにおいて第1の読み出しポイ
ンタが第1の書き込みポインタと同じバッファ・メモリ
を指示しているかどうかを判断し、異なれば第1の読み
出しポインタで指示されたバッファ・メモリからデータ
を読み出し、同じであれば第2の読み出しポインタを次
の第1のリング・バッファに進める、読み出し制御手段
と、を具備することを特徴とするデータ・バッファリン
グ・システムである。
【0025】第4の側面に係るデータ・バッファリング
・システムにおいて、前記読み出し制御手段は、第2の
読み出しポインタを次の第1のリング・バッファに進め
る前に、第2の読み出しポインタが第2の書き込みポイ
ンタと一致するかどうかを判断し、一致する場合には、
バッファ空状態と判断して第2の読み出しポインタを進
めずデータ読み出し動作を見送るようにしてもよい。
【0026】また、本発明の第5の側面は、コンピュー
タ・システムが、自身の物理メモリを利用して、システ
ム外部から受信したデータをバッファリングするための
データ・バッファリング・システムであって、(a)メ
モリ空間上に設けられた複数のバッファ・メモリと、
(b)バッファ・メモリをリング状に連結してなる第1
のリング・バッファと、(c)複数の第1のリング・バ
ッファをリング状に連結してなる第2のリング・バッフ
ァと、(d)各第1のリング・バッファ内に設けられ
た、次の読み出しバッファ・メモリ位置を指示するため
の第1の読み出しポインタと、(e)各第1のリング・
バッファ内に設けられた、次の書き込みバッファ・メモ
リ位置を指示するための第1の書き込みポインタと、
(f)現在バッファ・メモリからの読み出しが行われて
いる第1のリング・バッファ位置を指示するための第2
の読み出しポインタと、(g)現在バッファ・メモリへ
の書き込みが行われている第1のリング・バッファ位置
を指示するための第2の書き込みポインタと、を具備す
ることを特徴とするデータ・バッファリング・システム
である。
【0027】また、本発明の第6の側面は、コンピュー
タ・システムが、自身の物理メモリを利用して、システ
ム外部から受信したデータをバッファリングするための
データ・バッファリング・システムであって、(a)メ
モリ空間上に設けられた複数のバッファ・メモリと、
(b)複数のバッファ・メモリをリング状に連結してな
る第1のリング・バッファと、(c)複数の第1のリン
グ・バッファをリング状に連結してなる第2のリング・
バッファと、(d)各第1のリング・バッファ内に設け
られた、次の読み出しバッファ・メモリ位置を指示する
ための第1の読み出しポインタと、(e)各第1のリン
グ・バッファ内に設けられた、次の書き込みバッファ・
メモリ位置を指示するための第1の書き込みポインタ
と、(f)現在バッファ・メモリからの読み出しが行わ
れている第1のリング・バッファ位置を指示するための
第2の読み出しポインタと、(g)現在バッファ・メモ
リへの書き込みが行われている第1のリング・バッファ
位置を指示するための第2の書き込みポインタと、
(h)前記コンピュータ・システムに付設された外部記
憶装置と、(i)バッファ・メモリの内容を前記物理メ
モリと前記外部記憶装置の間でスワッピングさせるため
のスワッピング手段と、を具備することを特徴とするデ
ータ・バッファリング・システムである。
【0028】また、本発明の第7の側面は、コンピュー
タ・システムが、自身の物理メモリを利用して、システ
ム外部から受信したデータをバッファリングするための
データ・バッファリング・システムであって、(a)メ
モリ空間上に設けられた複数のバッファ・メモリと、
(b)バッファ・メモリをリング状に連結してなる第1
のリング・バッファと、(c)複数の第1のリング・バ
ッファをリング状に連結してなる第2のリング・バッフ
ァと、(d)各第1のリング・バッファ内に設けられ
た、次の読み出しバッファ・メモリ位置を指示するため
の第1の読み出しポインタと、(e)各第1のリング・
バッファ内に設けられた、次の書き込みバッファ・メモ
リ位置を指示するための第1の書き込みポインタと、
(f)現在バッファ・メモリからの読み出しが行われて
いる第1のリング・バッファ位置を指示するための第2
の読み出しポインタと、(g)現在バッファ・メモリへ
の書き込みが行われている第1のリング・バッファ位置
を指示するための第2の書き込みポインタと、(h)現
在第2の書き込みポインタで指示されている第1のリン
グ・バッファにおいて第1の書き込みポインタが第1の
読み出しポインタの1つ手前のバッファ・メモリを指示
しているかどうかを判断し、1つ手前でなければ第1の
書き込みポインタで指示されたバッファ・メモリにデー
タを書き込むとともに第1の書き込みポインタを次のバ
ッファ・メモリに進め、1つ手前であれば第2の書き込
みポインタを次の第1のリング・バッファに進める、書
き込み制御手段と、を具備することを特徴とするデータ
・バッファリング・システムである。
【0029】第7の側面に係るデータ・バッファリング
・システムにおいて、前記書き込み制御手段は、第2の
書き込みポインタを次の第1のリング・バッファに進め
る前に、第2の書き込みポインタが第2の読み出しポイ
ンタの1つ手前と一致するかどうかを判断し、一致する
場合には、バッファ満杯状態と判断して第2の書き込み
ポインタを進めずデータ書き込み動作を見送るようにし
てもよい。
【0030】また、本発明の第8の側面は、コンピュー
タ・システムが、自身の物理メモリを利用して、システ
ム外部から受信したデータをバッファリングするための
データ・バッファリング・システムであって、(a)メ
モリ空間上に設けられた複数のバッファ・メモリと、
(b)バッファ・メモリをリング状に連結してなる第1
のリング・バッファと、(c)複数の第1のリング・バ
ッファをリング状に連結してなる第2のリング・バッフ
ァと、(d)各第1のリング・バッファ内に設けられ
た、次の読み出しバッファ・メモリ位置を指示するため
の第1の読み出しポインタと、(e)各第1のリング・
バッファ内に設けられた、次の書き込みバッファ・メモ
リ位置を指示するための第1の書き込みポインタと、
(f)現在バッファ・メモリからの読み出しが行われて
いる第1のリング・バッファ位置を指示するための第2
の読み出しポインタと、(g)現在バッファ・メモリへ
の書き込みが行われている第1のリング・バッファ位置
を指示するための第2の書き込みポインタと、(h)現
在第2の読み出しポインタで指示されている第1のリン
グ・バッファにおいて第1の読み出しポインタが第1の
書き込みポインタと同じバッファ・メモリを指示してい
るかどうかを判断し、異なれば第1の読み出しポインタ
で指示されたバッファ・メモリからデータを読み出し、
同じであれば第2の読み出しポインタを次の第1のリン
グ・バッファに進める、読み出し制御手段と、を具備す
ることを特徴とするデータ・バッファリング・システム
である。
【0031】第8の側面に係るデータ・バッファリング
・システムにおいて、前記読み出し制御手段は、第2の
読み出しポインタを次の第1のリング・バッファに進め
る前に、第2の読み出しポインタが第2の書き込みポイ
ンタと一致するかどうかを判断し、一致する場合には、
バッファ空状態と判断して第2の読み出しポインタを進
めずデータ読み出し動作を見送るようにしてもよい。
【0032】また、本発明の第9の側面は、コンピュー
タ・システムが、システム外部から受信したデータをフ
ァイル化してセーブする際に、自身の物理メモリを利用
して受信データを一時的にバッファリングするためのデ
ータ・バッファリング・システムであって、(a)メモ
リ空間上に設けられた複数のバッファ・メモリと、
(b)バッファ・メモリをリング状に連結してなる第1
のリング・バッファと、(c)複数の第1のリング・バ
ッファをリング状に連結してなる第2のリング・バッフ
ァと、(d)各第1のリング・バッファ内に設けられ
た、次の読み出しバッファ・メモリ位置を指示するため
の第1の読み出しポインタと、(e)各第1のリング・
バッファ内に設けられた、次の書き込みバッファ・メモ
リ位置を指示するための第1の書き込みポインタと、
(f)現在バッファ・メモリからの読み出しが行われて
いる第1のリング・バッファ位置を指示するための第2
の読み出しポインタと、(g)現在バッファ・メモリへ
の書き込みが行われている第1のリング・バッファ位置
を指示するための第2の書き込みポインタと、(h)現
在第2の書き込みポインタで指示された第1のリング・
バッファ中で第1の書き込みポインタで指示されたバッ
ファ・メモリに受信データを書き込むデータ書き込み手
段と、(i)現在第2の読み出しポインタで指示された
第1のリング・バッファ中で第1の読み出しポインタで
指示されたバッファ・メモリからデータを読み出してフ
ァイル化するファイル化手段と、を具備することを特徴
とするデータ・バッファリング・システムである。
【0033】また、本発明の第10の側面は、コンピュ
ータ・システムが、システム外部から受信したデータを
ファイル化してセーブする際に、自身の物理メモリを利
用して受信データを一時的にバッファリングするための
データ・バッファリング・システムであって、(a)メ
モリ空間上に設けられた複数のバッファ・メモリと、
(b)複数のバッファ・メモリをリング状に連結してな
る第1のリング・バッファと、(c)複数の第1のリン
グ・バッファをリング状に連結してなる第2のリング・
バッファと、(d)各第1のリング・バッファ内に設け
られた、次の読み出しバッファ・メモリ位置を指示する
ための第1の読み出しポインタと、(e)各第1のリン
グ・バッファ内に設けられた、次の書き込みバッファ・
メモリ位置を指示するための第1の書き込みポインタ
と、(f)現在バッファ・メモリからの読み出しが行わ
れている第1のリング・バッファ位置を指示するための
第2の読み出しポインタと、(g)現在バッファ・メモ
リへの書き込みが行われている第1のリング・バッファ
位置を指示するための第2の書き込みポインタと、
(h)前記コンピュータ・システムに付設された外部記
憶装置と、(i)現在第2の書き込みポインタで指示さ
れた第1のリング・バッファ中で第1の書き込みポイン
タで指示されたバッファ・メモリに受信データを書き込
むデータ書き込み手段と、(j)現在第2の読み出しポ
インタで指示された第1のリング・バッファ中で第1の
読み出しポインタで指示されたバッファ・メモリからデ
ータを読み出してファイル化して前記外部記憶装置にセ
ーブするファイル化手段と、(k)バッファ・メモリの
内容を前記物理メモリと前記外部記憶装置の間でスワッ
ピングさせるためのスワッピング手段と、を具備するこ
とを特徴とするデータ・バッファリング・システムであ
る。
【0034】第9又は第10の側面に係るデータ・バッ
ファリング・システムにおいて、前記データ書き込み手
段は、現在第2の書き込みポインタで指示されている第
1のリング・バッファにおいて第1の書き込みポインタ
が第1の読み出しポインタの1つ手前のバッファ・メモ
リを指示しているかどうかを判断し、1つ手前でなけれ
ば第1の書き込みポインタで指示されたバッファ・メモ
リにデータを書き込むとともに第1の書き込みポインタ
を次のバッファ・メモリに進め、1つ手前であれば第2
の書き込みポインタを次の第1のリング・バッファに進
めるようにしてもよい。
【0035】また、第9又は第10の側面に係るデータ
・バッファリング・システムにおいて、前記データ書き
込み制御手段は、第2の書き込みポインタを次の第1の
リング・バッファに進める前に、第2の書き込みポイン
タが第2の読み出しポインタの1つ手前と一致するかど
うかを判断し、一致する場合には、バッファ満杯状態と
判断して第2の書き込みポインタを進めずデータ書き込
み動作を見送るようにしてもよい。
【0036】また、第9又は第10の側面に係るデータ
・バッファリング・システムにおいて、前記ファイル化
手段は、現在第2の読み出しポインタで指示されている
第1のリング・バッファにおいて第1の読み出しポイン
タが第1の書き込みポインタと同じバッファ・メモリを
指示しているかどうかを判断し、異なれば第1の読み出
しポインタで指示されたバッファ・メモリからデータを
読み出し、同じであれば第2の読み出しポインタを次の
第1のリング・バッファに進めるようにしてもよい。
【0037】また、第9又は第10の側面に係るデータ
・バッファリング・システムにおいて、前記ファイル化
手段は、第2の読み出しポインタを次の第1のリング・
バッファに進める前に、第2の読み出しポインタが第2
の書き込みポインタと一致するかどうかを判断し、一致
する場合には、バッファ空状態と判断して第2の読み出
しポインタを進めずデータ読み出し動作を見送るように
してもよい。
【0038】
【作用】図4には、本発明の各側面に係るデータ・バッ
ファリング・システムの構成を模式的に示している。該
データ・バッファリング・システムは、バッファへの書
き込み動作と読み出し動作の速度差を吸収する目的で、
リング・バッファ構成を採用している。このリング・バ
ッファは、バッファリングの最小単位であるバッファ・
メモリをリング状に繋げてなる「サブ・リング」と、サ
ブ・リング同士をリング状に繋げてなる「メイン・リン
グ」で構成される。「サブ・リング」及び「メイン・リ
ング」という用語は、本発明の各側面で言う「第1のリ
ング・バッファ」及び「第2のリング・バッファ」の各
々と同義である。言い換えれば、本発明に係るデータ・
バッファリング・システムは、二重のリングを形成して
いる訳である(以下、これを「ダブル・リング・バッフ
ァ」と言う)。
【0039】メイン・リングには、現在データの書き込
みが行われているサブ・リング、及び現在データの読み
出しが行われているサブ・リングを指示するために、一
対のメイン書き込みポインタ、及びメイン読み出しポイ
ンタが設けられている。ここで、「メイン書き込みポイ
ンタ」及び「メイン読み出しポインタ」という用語は、
本発明の各側面で言う「第2の書き込みポインタ」及び
「第2の読み出しポインタ」の各々と同義である。ま
た、各サブ・リング毎に、自リング内で現在データの書
き込みが行われているバッファ・メモリ、及び現在デー
タの読み出しが行われているバッファ・メモリを指示す
るために、それぞれ一対のサブ書き込みポインタ、及び
サブ読み出しポインタが設けられている。言い換えれ
ば、各バッファ・メモリは、メイン・ポインタとサブ・
ポインタの両方によってアドレス可能なのである。ここ
で、「サブ書き込みポインタ」及び「サブ読み出しポイ
ンタ」という用語は、本発明の各側面で言う「第1の書
き込みポインタ」及び「第1の読み出しポインタ」の各
々と同義である。
【0040】ダブル・リング・バッファは、受信データ
が膨大となりバッファへの書き込み動作と読み出し動作
が最大限に非同期となった場合を想定してデザインいる
ので、その全体サイズ(すなわちバッファ・メモリの総
数)は巨大となっている。したがって、ダブル・リング
・バッファ中の全てのバッファ・メモリを物理メモリ上
に置くことは不可能である。これに対し、1個のサブ・
リングに含まれるバッファ・メモリ数は比較的少ないの
で、1個のサブ・リングを物理メモリ上に置くことは可
能である。
【0041】バッファへの書き込み動作と読み出し動作
が同期的に行われている間は、使用バッファ・メモリ数
が少なく、書き込みポインタと読み出しポインタの距離
が短い。したがって、データ処理が同期的な場合には、
単一のサブ・リングだけを用いてデータ・バッファリン
グを行うことによって、バッファ・メモリのスワッピン
グを回避することができる。
【0042】これに対し、バッファへの書き込み動作と
読み出し動作が非同期的となった場合には、使用バッフ
ァ・メモリ数が増大し、書き込みポインタと読み出しポ
インタの距離が長くなる。このため、2以上のサブ・リ
ングを用いてデータ・バッファリングを行う必要が生ず
ることがある。複数のサブ・リングを用いることの帰結
として、少なくとも一部のバッファ・メモリをスワッピ
ングしなければならなくなる。
【0043】本発明に係るデータ・バッファリング・シ
ステムは、データ処理が非同期化することが稀である場
合には特に好適に作用する。例えばデータ処理が同期的
に行われている間には、単一のサブ・リングのみを用い
てデータ・バッファリングするため、この間のバッファ
・メモリの使用効率が高く、且つ、スワッピングを回避
することができる。他方、データ処理が停滞して非同期
化した場合に限り、複数のサブ・リングに跨がってデー
タ・バッファリングを行う。すなわち、本発明に係るデ
ータ・バッファリング・システムは、メイン・リング全
体を用いる機会を最小限に抑制しているので、スワッピ
ングの常態化を好適に防止することができる訳である。
【0044】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0045】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施例を詳解する。
【0046】A.パーソナル・コンピュータのハードウ
ェア構成 図1には、本発明を実現するのに適した典型的なパーソ
ナル・コンピュータ(PC)100のハードウェア構成
を模式的に示している。以下、各部について説明する。
【0047】メイン・コントローラであるCPU11
は、オペレーティング・システム(OS)の制御下で、
各種プログラムを実行するようになっている。CPU1
1は、例えば米インテル社製の"Pentium/1x
xMHz"でよい。また、OSは、例えば米IBM社の"
OS/2"("OS/2"は米IBM社の商標)や米マイ
クロソフト社の"Windows95"のようなマルチタ
スク環境を提供するタイプのものが好ましい。
【0048】CPU11は、自身の外部ピンに直結した
プロセッサ・バス12、ローカル・バスとしてのPCI
(Peripheral Component Interconnect)バス16、及
び、ISA(Industry Standard Architecture)バス1
8という3階層のバスを介して、各周辺デバイス(後
述)と相互接続している。
【0049】プロセッサ・バス12とPCIバス16と
は、ブリッジ回路(ホスト−PCIブリッジ)13によ
って連絡されている。本実施例のブリッジ回路13は、
メイン・メモリ14へのアクセス動作を制御するメモリ
・コントローラや、両バス12,16間の速度差を吸収
するためのデータ・バッファなどを含んだ構成となって
いる。
【0050】メイン・メモリ14は、実行プログラムの
読み込み領域として、あるいは実行プログラムの作業領
域として用いられ、一般にはDRAM(ダイナミックR
AM)チップで構成される。メイン・メモリ14は、例
えば16MBが標準装備され、128MBまで増設可能
である。また、L2−キャッシュ15は、メイン・メモ
リ14へのアクセス時間を吸収するための高速メモリで
あり、一般にはSRAM(スタティックRAM)チップ
で構成される。L2−キャッシュ15の容量は、例えば
256KBである。また、ROM17は、電源投入時の
テスト・プログラム(POST:Power On Self Test)
などを恒久的に格納するための不揮発性メモリである。
なお、メモリ空間の管理は、OSのサブシステムの1つ
である「メモリ・マネージャ」が行う。
【0051】PCIバス16は、比較的高速なデータ転
送が可能なタイプのバス(バス幅32ビット、動作周波
数33MHz、最大データ転送速度132KBps)で
あり、ビデオ・コントローラ20やカードバス・コント
ローラ23のような比較的高速で駆動する周辺デバイス
類が接続される。
【0052】ビデオ・コントローラ20は、CPU11
からの描画命令を実際に処理するための専用コントロー
ラであり、処理した描画情報を画面バッファ(VRA
M)21に一旦書き込むとともに、VRAM21から描
画情報を読み出して液晶表示ディスプレイ(LCD)2
2、若しくはCRTディスプレイ(図示しない)にビデ
オ出力するようになっている。
【0053】カードバス・コントローラ23は、PCI
バス16上のバス信号をPCカード・スロット24Aに
直結させるための専用コントローラである。カード・ス
ロット24Aには、PCMCIA(Personal Computer
Memory Card InternationalAssociation)/JEIDA
(Japan Electronic Industry Development Associatio
n)が策定した規格(例えば"PC Card Spec
ification95")に準拠したPCカード24
Bを挿入可能である。
【0054】PCIバス16とISAバス18とは、ブ
リッジ回路(PCI−ISAブリッジ)19によって相
互接続されている。本実施例のブリッジ回路19は、D
MAコントローラや、プログラマブル割込みコントロー
ラ(PIC)、プログラマブル・インターバル・タイマ
(PIT)を含んだ構成となっている。
【0055】また、本実施例のブリッジ回路19は、I
DE(Integrated Drive Electronics)に準拠した外部
記憶装置を接続するためのIDEコネクタも備えてい
る。IDEコネクタには、例えばIDEハード・ディス
ク・ドライブ(HDD)25やIDE CD−ROMド
ライブ26が接続される。なお、ハード・ディスクやC
D−ROM上のファイルへのアクセスは、OSのサブシ
ステムの1つである「ファイル・マネージャ」によって
実行される。
【0056】なお、2つのブリッジ回路13及び19
は、PCIで策定されたものであり、一般には単一のチ
ップセットの形態で提供される。チップセットの一例
は、米インテル社が市販する"Triton"である。
【0057】ISAバス18は、PCIバスに比しデー
タ転送速度が低く(バス幅16ビット、最大データ転送
速度4MBps)、キーボード/マウス・コントローラ
(KMC)27や、I/Oコントローラ30、オーディ
オ・コントローラ34などの、比較的低速駆動するタイ
プの周辺デバイス類を接続するのに用いられる。
【0058】キーボード/マウス・コントローラ27
は、キーボード28からの入力コードや、マウス29か
らの入力座標値を、コンピュータ・データとして取り込
むための専用コントローラである。
【0059】I/Oコントローラ30は、フロッピー・
ディスク・ドライブ(FDD)31の駆動や、外部機器
(例えばプリンタやモデム:図示しない)とのパラレル
的又はシリアル的なデータ入出力を制御するための周辺
コントローラである。
【0060】オーディオ・コントローラ34は、オーデ
ィオ信号の入出力処理を行うための専用コントローラで
あり、マイク35から入力されたオーディオ信号をコン
ピュータ・データとして取り込んだり、オーディオ・デ
ータをDA変換等してスピーカ36からオーディオ出力
するようになっている。
【0061】バス16又は18の一端には、少なくとも
1つのバス・スロット16A/18Aが配設されてい
る。バス・スロット16A及び18Aには、それぞれP
CI対応アダプタ・カード16B及びISA対応アダプ
タ・カード18Bを装着可能である。各アダプタ・カー
ド16B/18Bは、各カード専用のデバイス・ドライ
バを用いてハードウェア操作可能である。
【0062】アダプタ・カードの一例は、DCD(デー
タ・チャネル・デコーダ)アダプタ・カードである。D
CDアダプタ・カードは、パケット形式の衛星データを
受信して、AD変換、デコード、エラー訂正等の処理を
施す機能を持っている。該アダプタ・カードを装着した
コンピュータ・システムは、「DCDアダプタ用デバイ
ス・ドライバ(仮称)」を用いて該アダプタ・カードを
ハードウェア操作可能であり、衛星データ放送受信シス
テムとして利用される。
【0063】なお、コンピュータ・システムを構成する
ためには、図1に示した以外にも多くの電気回路等が必
要である。但し、これらは当業者には周知であり、ま
た、本発明の要旨を構成するものではないので、図面の
錯綜防止と説明の簡素化のため、本明細書中では省略し
ている。
【0064】B.パーソナル・コンピュータのソフトウ
ェア構成 図2には、本発明の実施に供されるPC100上で実行
可能なソフトウェアの階層的構成を模式的に示してい
る。
【0065】デバイス・ドライバ(D/D):最下位層
のソフトウェアは、デバイス・ドライバ(D/D)であ
る。デバイス・ドライバは、上位のソフトウェア(例え
ばオペレーティング・システム)が発行する一般的な形
式のコマンドを、各デバイス固有のハードウェア操作に
適した形式に変換するためのプログラムである。図示の
ように、各周辺デバイス毎に専用のデバイス・ドライバ
が用意され、必要に応じてシステムにインストールされ
ている。例えば、DCDアダプタ・カードを使用するユ
ーザは、DCDアダプタ用デバイス・ドライバをインス
トールし、CD−ROMドライブ26を使用するユーザ
はCD−ROM用デバイス・ドライバをインストールす
ればよい。
【0066】なお、単一のデバイスに対して複数層のデ
バイス・ドライバが設けられている場合もある。例えば
PCカード用デバイス・ドライバは、実際には、各PC
カードにユニークな専用デバイス・ドライバの他、ソケ
ット・サービスやカード・サービスを含んでいる。ま
た、DCDアダプタ用デバイス・ドライバは、受信パケ
ットをコンピュータ・データとして取り込むための7層
のうちプロトコル第3層までを含んでいる。
【0067】オペレーティング・システム(OS):
ペレーティング・システムは、コンピュータ・システム
100内のハードウェア及びソフトウェアを総合的に管
理するための基本ソフトウェアであり、例えば米IBM
社のOS/2や米マイクロソフト社のWindows9
5がこれに該当する。
【0068】OSは、HDD25などの外部記憶装置へ
のファイル・アクセスを管理するための「ファイル・マ
ネージャ」や、メモリ空間を管理するための「メモリ・
マネージャ」、タスク実行の順序や優先度を管理するた
めの「スケジューラ」、システム・リソースの割り振り
を管理するための「リソース・マネージャ」などの各サ
ブシステムを含んでいる。例えば、メモリ・マネージャ
は物理メモリ上にスワップ・イン/スワップ・アウトす
べきデータを管理し、ファイル・マネージャはスワップ
・データのHDD25への書き込み/読み出しを行う。
【0069】また、OSは、アプリケーション・プログ
ラミング・インターフェース(API)を備えている。
APIとは、HDD25からのファイルの読み書き、デ
ィスプレイ22への表示、ディスクの状態チェックなど
のOSの基本機能を、アプリケーション・プログラムが
利用するときに呼び出す関数の集合である。APIに対
する要求は、API機能を提供する各サブシステムが実
行する。
【0070】アプリケーション・プログラム(AP):
最上位層のソフトウェアは、アプリケーション・プログ
ラムである。アプリケーション・プログラムは実務的な
目的のために用いられるプログラムのことであり、例え
ばワープロ・ソフト、データベース・ソフト、表計算ソ
フト、通信ソフトなどがこれに該当する。また、衛星デ
ータ放送の受信のためのユーザ・インターフェースとな
る「衛星データ放送受信アプリケーション(仮称)」も
アプリケーション・プログラムの一例である。
【0071】各アプリケーション・プログラムは、OS
によってその実行状況を管理されるとともに、OS中の
APIを介してOSの機能(例えばHDD25へのファ
イル・アクセス)を利用することができる。また、DC
Dアダプタ・カードからの受信データの受け取りなど一
連の処理は、衛星データ放送受信用のAPIサブシステ
ム(以下、「受信APIサブシステム」という)が行
う。
【0072】衛星データの受信:ここで、DCDアダプ
タ・カードにより受信されたデータのソフトウェア・レ
ベルでの処理について、図3を参照しながら概略的に説
明しておく。
【0073】衛星データは、23バイト長(実際には、
チェック・ビットを含む288ビット長)のパケットの
形態で伝送されている。DCDアダプタは、これらパケ
ットを逐次受信して、デコード及びエラー訂正処理を施
す(矢印P1)。受信処理後のデータは、DCDアダプ
タ用デバイス・ドライバが持つバッファ領域に一旦書き
込まれる(矢印P2)。このバッファ領域は、実際に
は、メイン・メモリ14内でDCDアダプタ用デバイス
・ドライバに割り当てられた作業領域である。
【0074】APIは、衛星データ放送受信アプリケー
ションからのコールに応答して、2〜5回/秒の頻度
で、デバイス・ドライバのバッファ領域から32Kバイ
ト単位でパケット・データを読み出して(矢印P3)、
自身のデータ・バッファに書き込む。このデータ・バッ
ファも、実際には、メイン・メモリ14内でAPIに割
り当てられた作業領域である。また、APIは、該デー
タ・バッファからパケット・データを読み出して、デー
タ・グループ(DG)化するとともに(矢印P4)、デ
ータ・グループ単位でHDD25にファイル・セーブす
る(矢印P5,P6,P7,P8)。
【0075】なお、APIによるデータ・バッファへの
書き込みと読み出しは、概して同期的に行われるが、時
として非同期化する。非同期化に対処するべく、データ
・バッファはリング・バッファ構成とすることが好まし
いが、詳細な構成及び作用については次項Cで詳解す
る。
【0076】また、受信パケットのデータ・バッファリ
ングやファイル・セービングは、APIに頼らず、衛星
データ放送受信アプリケーションが直接行うようにして
もよい。
【0077】C.データ・バッファリング・システム 前項までで、本発明を好適に具現するコンピュータ・シ
ステム100のハードウェア及びソフトウェア構成を説
明してきた。本項では、該システム100上で実現され
る衛星データ受信時のデータ・バッファリング動作を例
にとって、本発明の作用について説明することにする。
【0078】C−1.ダブル・リング・バッファの構
成:図4には、本実施例のAPIが採用するデータ・バ
ッファの構成を模式的に示している。既に述べたよう
に、該データ・バッファは、バッファへの書き込み動作
とバッファからの読み出し動作の速度差を吸収する目的
で、リング・バッファ構成を採用している。
【0079】同図に示すように、データ・バッファは、
バッファリングの最小単位であるバッファ・メモリをリ
ング状に繋げてなる「サブ・リング」と、サブ・リング
同士をリング状に繋げてなる「メイン・リング」とで構
成される。換言すれば、データ・バッファは二重のリン
グを形成している訳である(以下、これを「ダブル・リ
ング・バッファ」と言う)。
【0080】リング・バッファは、一般には、各バッフ
ァ・メモリがポインタで制御され、且つ、先頭バッファ
と最終バッファとをリングのように繋げることによって
実現される。本実施例の場合、メイン・リングには、現
在データの書き込みが行われているサブ・リング、及び
現在データの読み出しが行われているサブ・リングの各
々を指示するために、一対のメイン書き込みポインタ、
及びメイン読み出しポインタが設けられている。また、
各サブ・リング毎に、自リング内で現在データの書き込
みが行われているバッファ・メモリ、及び現在データの
読み出しが行われているバッファ・メモリを指示するた
めに、それぞれ一対のサブ書き込みポインタ、及びサブ
読み出しポインタが設けられている。
【0081】APIによる1回当たりのデータ取り込み
が32Kバイト単位で行われることに勘案して、各バッ
ファ・メモリのサイズも32Kバイトとしている。ま
た、ダブル・リング・バッファ全体のサイズは、データ
読み出しが滞ったときの受信データを蓄積可能な程度が
必要である。例えば、通信プロトコルで許容される最大
サイズ(16Mバイト)のデータ・グループをハード・
ディスクにファイル・セーブするには、1分程度の時間
を要する。このディスク・アクセスの間はデータ・グル
ープ化処理が不能のため、バッファからのデータ読み出
しは当然停滞する。一方、1分間に電波によって伝送さ
れるデータ量は8Mバイト(≒32Kバイト×256)
程度ある。したがって、ダブル・リング・バッファは3
2Kバイトのバッファ・メモリを256個だけ持つ必要
がある。本実施例では、1個のサブ・リングを16個の
バッファ・メモリ構成とするとともに、メイン・リング
を16個のサブ・リング構成とすることによって、合計
256(=16×16)個のバッファ・メモリを用意し
ている。
【0082】図4では、ダブル・リング・バッファ中の
各サブ・リングには、0乃至15のメイン・リング番号
が付与されている。同図では、メイン書き込みポインタ
及びメイン読み出しポインタは、それぞれメイン・リン
グ番号が"3"及び"1"のサブ・リングを指示している。
また、サブ・リング内では、各バッファ・メモリには、
0乃至15のサブ・リング番号が付与されている。同図
のメイン・リング番号が"0"のサブ・リング内では、サ
ブ書き込みポインタ及びサブ読み出しポインタは、それ
ぞれサブ・リング番号が"3"及び"2"のバッファ・メモ
リを指示している。換言すれば、メイン・リング番号と
サブ・リング番号の両方を参照することによって、各バ
ッファ・メモリをアドレス可能な訳である。
【0083】前述したように、ダブル・バッファ全体の
サイズは8MBであり、メモリ容量等を勘案すれば、全
てのバッファ・メモリをメイン・メモリ14上に置くこ
とは不可能である。この結果、ダブル・バッファ中の殆
どのバッファ・メモリはハード・ディスクにスワップ・
アウトされることとなる。これに対し、1個のサブ・リ
ングは、512Kバイト(=32Kバイト×16個)で
あり、サブ・リング内の全てのバッファ・メモリをメイ
ン・メモリ14上に置くことは可能である。
【0084】データ・バッファへの書き込み動作と読み
出し動作が同期的に行われている間は、書き込みポイン
タと読み出しポインタの間の距離か短いため、両ポイン
タを単一のサブ・リング内に置くことは可能である。し
たがって、書き込み動作と読み出し動作が同期的に行わ
れている間は、単一のサブ・リング内でバッファ・メモ
リを順繰り用いることによって、バッファ・メモリのス
ワッピングを回避することができる。
【0085】他方、書き込み動作と読み出し動作が非同
期となってしまった場合には、書き込みポインタと読み
出しポインタの間の距離か長いため、両ポインタを単一
のサブ・リングに置くことは不可能である。このため、
書き込み動作と読み出し動作が非同期な場合には、2以
上のサブ・リングに跨がってデータ・バッファリングを
行わなければならない。この結果、バッファ・メモリの
スワッピングを招来することとなるが、データ処理が遅
滞した間の受信データの取り零しを防止するためには必
至である。
【0086】但し、データ・バッファへの書き込み動作
と読み出し動作が非同期的となるのは、システム・オペ
レーション中の極限られた期間だけである(何故なら
ば、受信されたデータ・グループが最大サイズ(16M
バイト)となるのは稀である!)。このようなダブル・
リング・バッファ構成を採用すれば、書き込み動作と読
み出し動作が同期的な間は単一のサブ・リングのみを用
いるため、スワッピングの機会を極力回避することがで
きる。すなわち、巨大なリング・バッファにおいてスワ
ッピングの常態化を回避することができる訳である。
【0087】なお、本実施例では、ダブル・リング・バ
ッファを用いるにあたって、数種類のユニークな変数を
定義している。以下、これを説明しておく。
【0088】MAX_MAIN …メイン・リングに含
まれるサブ・リングの個数のこと。図4ではMAX_M
AIN=16である。
【0089】MAX_SUB …サブ・リングに含まれ
るバッファ・メモリの個数のこと。図4ではMAX_S
UB=16である。
【0090】RP_MAIN …メイン・リング上の読
み出しポインタ(メイン読み出しポインタ)のことであ
り、何番目のサブ・リングが現在読み出しに使用されて
いるかを示す。0からMAX_MAIN−1の間の値を
持つ。初期値は0であり、図4ではRP_MAIN=1
である。
【0091】WP_MAIN …メイン・リング上の書
き込みポインタ(メイン書き込みポインタ)のことであ
り、何番目のサブ・リングが現在書き込みに使用されて
いるかを示す。0からMAX_MAIN−1の間の値を
持つ。初期値は0であり、図4ではWP_MAIN=3
である。
【0092】RP_SUB[i] …i番目のサブ・リ
ング上の読み出しポインタ(サブ読み出しポインタ)の
ことであり、サブ・リング中の何番目のバッファ・メモ
リが読み出しに使用されているかを示す。iは0からM
AX_MAIN−1の間の値を持つ。RP_SUB
[i]は、0からMAX_SUB−1の間の値を持ち、
初期値は0である。図4では、例えばRP_SUB
[0]=2である。
【0093】WP_SUB[i] …i番目のサブ・リ
ング上の書き込みポインタ(サブ書き込みポインタ)の
ことであり、サブ・リング中の何番目のバッファ・メモ
リが書き込みに使用されているかを示す。iは0からM
AX_MAIN−1の間の値を持つ。WP_SUB
[i]は、0からMAX_SUB−1の間の値を持ち、
初期値は0である。図4では、例えばWP_SUB
[0]=3である。
【0094】C−2.データ書き込みオペレーション:
ダブル・リング・バッファへのデータ書き込みは、例え
ば、2〜5回/秒毎に受信APIサブシステムがDCD
アダプタ用デバイス・ドライバから受信データを取得す
る際に行われる。図5には、ダブル・リング・バッファ
へのデータ書き込みオペレーションをフローチャート化
して示している。以下、該フローチャートを基に説明す
る。
【0095】まずステップS10では、現在書き込みに
使用されているサブ・リングに着目して、該サブ・リン
グ中でサブ書き込みポインタがサブ読み出しポインタの
1つ手前と等しいかどうかを判断する。なお、該判断ブ
ロックは、前述の変数を用いて、「((WP_SUB
[WP_MAIN]+1) MOD MAX_SUB)
=RP_SUB[WP_MAIN]?」という意味のプ
ログラムで記述可能である。(但し、x MOD yと
はxのyに対する剰余を意味する。以下同様。)
【0096】判断ブロックS10の否定的な結果は、当
該サブ・リング中に書き込み可能なバッファ・メモリが
未だ残っていることを意味するので、サブ書き込みポイ
ンタで指示されたバッファ・メモリにデータの書き込み
を行う(ステップS12)。そして、サブ書き込みポイ
ンタを、サブ・リング上の次のバッファ・メモリに進め
て(ステップS14)、データ書き込み処理を終了す
る。なお、ステップS14は、前述の変数を用いて、
「WP_SUB[WP_MAIN] ← ((WP_S
UB[WP_MAIN]+1) MOD MAX_SU
B)」という意味のプログラムで記述可能である。(但
し、A ← Bは、AにBを代入することを意味する。
以下同様。)
【0097】一方、判断ブロックS10の肯定的な結果
は、サブ書き込みポインタがサブ読み出しポインタを一
周リードしてしまい、当該サブ・リングが満杯状態にな
ったことを意味する。このため、メイン・リング上の次
のサブ・リングに進んで、書き込み可能なバッファ・メ
モリが未だ残っているかどうかを判断する。このとき、
次のサブ・リングが現在読み出しに使用されているサブ
・リングと等しいかどうかを、まず判断する(ステップ
S16)。なお、ステップS16は、前述の変数を用い
て、「((WP_MAIN+1) MOD MAX_M
AIN)=RP_MAIN?」という意味のプログラム
で記述可能である。
【0098】判断ブロックS16の肯定的な結果は、メ
イン書き込みポインタがメイン読み出しポインタを一周
リードしてしまい、当該ダブル・リング・バッファが全
て満杯状態になったことを意味する。したがって、この
場合には、書き込みに使用できるバッファ・メモリがも
はやないので、新たなデータの書き込みを諦める他ない
(ステップS20)。この結果、受信した衛星放送デー
タを取り零す可能性もある。但し、図4に示すサイズの
ダブル・リング・バッファにおいて、リング・バッファ
全体が満杯状態となる(すなわちステップS20に陥
る)のは例外的な事例である点を理解されたい。
【0099】一方、判断ブロックS16の結果が否定的
な場合には、書き込みに使用できるサブ・リングが残っ
ている可能性を示しているので、メイン書き込みポイン
タをメイン・リング上の次のサブ・リングに進め(ステ
ップS18)、ステップS10に復帰して上記と同様の
処理を繰り返す。なお、ステップS18は、前述の変数
を用いて、「WP_MAIN ← ((WP_MAIN
+1) MOD MAX_MAIN)」という意味のプ
ログラムで記述可能である。
【0100】C−3.データ読み出しオペレーション:
ダブル・リング・バッファからのデータ読み出しは、例
えば、バッファ中に蓄積された受信データをAPIがデ
ータ・グループ化する際に行われる。図6には、ダブル
・リング・バッファへのデータ読み出しオペレーション
をフローチャート化して示している。以下、該フローチ
ャートを基に説明する。
【0101】まずステップS30では、現在読み出しに
使用されているサブ・リングに着目して、該サブ・リン
グ中でサブ読み出しポインタがサブ書き込みポインタと
等しいかどうかを判断する。なお、該判断ブロックは、
前述の変数を用いて、「((RP_SUB[RP_MA
IN])=WP_SUB[RP_MAIN]?」という
意味のプログラムで記述可能である。
【0102】判断ブロックS30の否定的な結果は、当
該サブ・リング中に読み出しに使用すべきバッファ・メ
モリが未だ残っていることを意味するので、サブ読み出
しポインタで指示されたバッファ・メモリからデータの
読み出しを行う(ステップS32)。そして、サブ読み
出しポインタを、サブ・リング上の次のバッファ・メモ
リに進めて(ステップS34)、データ書き込み処理を
終了する。なお、ステップS34は、前述の変数を用い
て、「RP_SUB[RP_MAIN] ←((RP_
SUB[RP_MAIN]+1) MOD MAX_S
UB)」という意味のプログラムで記述可能である。
【0103】一方、判断ブロックS30の肯定的な結果
は、サブ読み出しポインタがサブ書き込みポインタに追
いついてしまい、当該サブ・リングが空状態になったこ
とを意味する。このため、メイン・リング上の次のサブ
・リングに進んで、読み出し可能なバッファ・メモリが
未だ残っているかどうかを判断する。このとき、現在読
み出しに使用されているサブ・リングが現在書き込みに
使用されているサブ・リングと等しいかどうかを、まず
判断する(ステップS36)。なお、ステップS36
は、前述の変数を用いて、「RP_MAIN=WP_M
AIN?」という意味のプログラムで記述可能である。
【0104】判断ブロックS36の肯定的な結果は、メ
イン読み出しポインタがメイン書き込みポインタに追い
ついしまい、当該ダブル・リング・バッファが全て空状
態になったことを意味する。したがって、この場合に
は、読み出しを行うべきバッファ・メモリがもはやない
ので、データの読み出しを諦める他ない(ステップS4
0)。
【0105】一方、判断ブロックS36の結果が否定的
な場合には、読み出しに使用できるサブ・リングが残っ
ている可能性を示しているので、メイン読み出しポイン
タをメイン・リング上の次のサブ・リングに進め(ステ
ップS38)、ステップS30に復帰して上記と同様の
処理を繰り返す。なお、ステップS38は、前述の変数
を用いて、「RP_MAIN ← ((RP_MAIN
+1) MOD MAX_MAIN)」という意味のプ
ログラムで記述可能である。
【0106】D.追補 以上、特定の実施例を参照しながら、本発明について詳
解してきた。しかしながら、本発明の要旨を逸脱しない
範囲で当業者が該実施例の修正や代用を成し得ることは
自明である。例えば本明細書ではパーソナル・コンピュ
ータが衛星データ受信に用いられる場合に特化して説明
してきたが、パーソナル・コンピュータが他のデータ処
理に用いられる場合、又は、ファクシミリ機器や複写
機、プリンタ、放送受信機、ワードプロセッサ等のよう
な、膨大なデータを一時保持する機会のある各種情報処
理機器に対しても、本発明を適用することができる。要
するに、例示という形態で本発明を開示してきたのであ
り、限定的に解釈されるべきではない。本発明の要旨を
判断するためには、冒頭に記載した特許請求の範囲の欄
を参酌すべきである。
【0107】
【発明の効果】以上詳記したように、本発明によれば、
例えばコンピュータ・システムがシステム外部から受信
したデータをファイル化してセーブする際に、受信デー
タの一時保持のために用いられる、優れたデータ・バッ
ファリング・システムを提供することができる。
【0108】また、本発明によれば、受信データの一時
保持のために用いられるデータ・バッファリング・シス
テムであって、受信データの書き込み速度と読み出し速
度のギャップを吸収するために、各バッファ・メモリを
リング・バッファ構成にした、優れたデータ・バッファ
リング・システムを提供することができる。
【0109】また、本発明によれば、膨大量の受信デー
タを一時的に保持するためにリング・バッファ構成にし
たデータ・バッファリング・システムであって、リング
・バッファ・サイズの巨大化に伴うハード・ディスクへ
のスワッピングの問題を解消することができる、優れた
データ・バッファリング・システムを提供することがで
きる。
【図面の簡単な説明】
【図1】図1は、本発明を実現するのに適した典型的な
パーソナル・コンピュータ(PC)100のハードウェ
ア構成を模式的に示した図である。
【図2】図2は、本発明の実施に供されるPC100上
で実行可能なソフトウェアの階層的構成を模式的に示し
た図である。
【図3】図3は、DCDアダプタ・カードにより受信さ
れたデータのソフトウェア・レベルでの処理フローを概
略的に図解した図である。
【図4】図4は、APIが採用するデータ・バッファの
構成を模式的に示した図である。
【図5】図5は、ダブル・リング・バッファへのデータ
書き込みオペレーションをフローチャート化して示した
図である。
【図6】図6は、ダブル・リング・バッファへのデータ
読み出しオペレーションをフローチャート化して示した
図である。
【図7】図7は、PCがアナログ衛星データをファイル
として取り込む様子を概略的に示した図である。
【図8】図8は、ピンポン・バッファ及びリング・バッ
ファそれぞれの構成を模式的に示した図である。
【図9】図9は、リング・バッファ中のバッファ・メモ
リをスワッピングした様子を模式的に示した図である。
【符号の説明】
11…CPU、12…プロセッサ・バス、13…ブリッ
ジ回路、14…メイン・メモリ、15…L2−キャッシ
ュ、16…PCIバス、16A…バス・スロット、16
B…アダプタ・カード、17…ROM、18…ISAバ
ス、18A…バス・スロット、18B…アダプタ・カー
ド、19…ブリッジ回路、20…ビデオ・コントロー
ラ、21…VRAM、22…LCD、23…カードバス
・コントローラ、24…カード・スロット、25…HD
D、26…CD=ROM、27…KMC、28…キーボ
ード、29…マウス、30…I/Oコントローラ、31
…FDD、32…パラレル・ポート、33…シリアル・
ポート、34…オーディオ・コントローラ、35…マイ
ク、36…スピーカ、100…パーソナル・コンピュー
タ。
フロントページの続き (56)参考文献 特開 平1−312656(JP,A) 特開 平7−121431(JP,A) 特開 平5−197796(JP,A) 特開 昭59−119465(JP,A) 特開 昭57−109070(JP,A) 特開 昭51−113429(JP,A) 特開 平8−320779(JP,A) 特開 平5−289847(JP,A) 特開 昭61−131033(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/06 G06F 12/00 H04L 13/08

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】コンピュータ・システムの物理メモリを利
    用してデータ・バッファリングを行うためのデータ・バ
    ッファリング・システムであって、 (a)メモリ空間上に設けられた複数のバッファ・メモ
    リと、 (b)バッファ・メモリをリング状に連結してなる第1
    のリング・バッファと、 (c)複数の第1のリング・バッファをリング状に連結
    してなる第2のリング・バッファと、 (d)各第1のリング・バッファ内に設けられた、次の
    読み出しバッファ・メモリ位置を指示するための第1の
    読み出しポインタと、 (e)各第1のリング・バッファ内に設けられた、次の
    書き込みバッファ・メモリ位置を指示するための第1の
    書き込みポインタと、 (f)現在バッファ・メモリからの読み出しが行われて
    いる第1のリング・バッファ位置を指示するための第2
    の読み出しポインタと、 (g)現在バッファ・メモリへの書き込みが行われてい
    る第1のリング・バッファ位置を指示するための第2の
    書き込みポインタと、 (h)現在第2の書き込みポインタで指示されている第
    1のリング・バッファにおいて第1の書き込みポインタ
    が第1の読み出しポインタの1つ手前のバッファ・メモ
    リを指示しているかどうかを判断し、1つ手前でなけれ
    ば第1の書き込みポインタで指示されたバッファ・メモ
    リにデータを書き込むとともに第1の書き込みポインタ
    を次のバッファ・メモリに進め、1つ手前であれば第2
    の書き込みポインタを次の第1のリング・バッファに進
    める、書き込み制御手段と、 を具備することを特徴とするデータ・バッファリング・
    システム。
  2. 【請求項2】前記書き込み制御手段は、第2の書き込み
    ポインタを次の第1のリング・バッファに進める前に、
    第2の書き込みポインタが第2の読み出しポインタの1
    つ手前と一致するかどうかを判断し、一致する場合に
    は、バッファ満杯状態と判断して第2の書き込みポイン
    タを進めずデータ書き込み動作を見送ることを特徴とす
    る請求項1に記載のデータ・バッファリング・システ
    ム。
  3. 【請求項3】コンピュータ・システムの物理メモリを利
    用してデータ・バッファリングを行うためのデータ・バ
    ッファリング・システムであって、 (a)メモリ空間上に設けられた複数のバッファ・メモ
    リと、 (b)バッファ・メモリをリング状に連結してなる第1
    のリング・バッファと、 (c)複数の第1のリング・バッファをリング状に連結
    してなる第2のリング・バッファと、 (d)各第1のリング・バッファ内に設けられた、次の
    読み出しバッファ・メモリ位置を指示するための第1の
    読み出しポインタと、 (e)各第1のリング・バッファ内に設けられた、次の
    書き込みバッファ・メモリ位置を指示するための第1の
    書き込みポインタと、 (f)現在バッファ・メモリからの読み出しが行われて
    いる第1のリング・バッファ位置を指示するための第2
    の読み出しポインタと、 (g)現在バッファ・メモリへの書き込みが行われてい
    る第1のリング・バッファ位置を指示するための第2の
    書き込みポインタと、 (h)現在第2の読み出しポインタで指示されている第
    1のリング・バッファにおいて第1の読み出しポインタ
    が第1の書き込みポインタと同じバッファ・メモリを指
    示しているかどうかを判断し、異なれば第1の読み出し
    ポインタで指示されたバッファ・メモリからデータを読
    み出し、同じであれば第2の読み出しポインタを次の第
    1のリング・バッファに進める、読み出し制御手段と、 を具備することを特徴とするデータ・バッファリング・
    システム。
  4. 【請求項4】前記読み出し制御手段は、第2の読み出し
    ポインタを次の第1のリング・バッファに進める前に、
    第2の読み出しポインタが第2の書き込みポインタと一
    致するかどうかを判断し、一致する場合には、バッファ
    空状態と判断して第2の読み出しポインタを進めずデー
    タ読み出し動作を見送ることを特徴とする請求項3に記
    載のデータ・バッファリング・システム。
  5. 【請求項5】コンピュータ・システムが、自身の物理メ
    モリを利用して、システム外部から受信したデータをバ
    ッファリングするためのデータ・バッファリング・シス
    テムであって、 (a)メモリ空間上に設けられた複数のバッファ・メモ
    リと、 (b)バッファ・メモリをリング状に連結してなる第1
    のリング・バッファと、 (c)複数の第1のリング・バッファをリング状に連結
    してなる第2のリング・バッファと、 (d)各第1のリング・バッファ内に設けられた、次の
    読み出しバッファ・メモリ位置を指示するための第1の
    読み出しポインタと、 (e)各第1のリング・バッファ内に設けられた、次の
    書き込みバッファ・メモリ位置を指示するための第1の
    書き込みポインタと、 (f)現在バッファ・メモリからの読み出しが行われて
    いる第1のリング・バッファ位置を指示するための第2
    の読み出しポインタと、 (g)現在バッファ・メモリへの書き込みが行われてい
    る第1のリング・バッファ位置を指示するための第2の
    書き込みポインタと、 (h)現在第2の書き込みポインタで指示されている第
    1のリング・バッファにおいて第1の書き込みポインタ
    が第1の読み出しポインタの1つ手前のバッファ・メモ
    リを指示しているかどうかを判断し、1つ手前でなけれ
    ば第1の書き込みポインタで指示されたバッファ・メモ
    リにデータを書き込むとともに第1の書き込みポインタ
    を次のバッファ・メモリに進め、1つ手前であれば第2
    の書き込みポインタを次の第1のリング・バッファに進
    める、書き込み制御手段と、を具備することを特徴とす
    るデータ・バッファリング・システム。
  6. 【請求項6】前記書き込み制御手段は、第2の書き込み
    ポインタを次の第1のリング・バッファに進める前に、
    第2の書き込みポインタが第2の読み出しポインタの1
    つ手前と一致するかどうかを判断し、一致する場合に
    は、バッファ満杯状態と判断して第2の書き込みポイン
    タを進めずデータ書き込み動作を見送ることを特徴とす
    る請求項5に記載のデータ・バッファリング・システ
    ム。
  7. 【請求項7】コンピュータ・システムが、自身の物理メ
    モリを利用して、システム外部から受信したデータをバ
    ッファリングするためのデータ・バッファリング・シス
    テムであって、 (a)メモリ空間上に設けられた複数のバッファ・メモ
    リと、 (b)バッファ・メモリをリング状に連結してなる第1
    のリング・バッファと、 (c)複数の第1のリング・バッファをリング状に連結
    してなる第2のリング・バッファと、 (d)各第1のリング・バッファ内に設けられた、次の
    読み出しバッファ・メモリ位置を指示するための第1の
    読み出しポインタと、 (e)各第1のリング・バッファ内に設けられた、次の
    書き込みバッファ・メモリ位置を指示するための第1の
    書き込みポインタと、 (f)現在バッファ・メモリからの読み出しが行われて
    いる第1のリング・バッファ位置を指示するための第2
    の読み出しポインタと、 (g)現在バッファ・メモリへの書き込みが行われてい
    る第1のリング・バッファ位置を指示するための第2の
    書き込みポインタと、 (h)現在第2の読み出しポインタで指示されている第
    1のリング・バッファにおいて第1の読み出しポインタ
    が第1の書き込みポインタと同じバッファ・メモリを指
    示しているかどうかを判断し、異なれば第1の読み出し
    ポインタで指示されたバッファ・メモリからデータを読
    み出し、同じであれば第2の読み出しポインタを次の第
    1のリング・バッファに進める、読み出し制御手段と、 を具備することを特徴とするデータ・バッファリング・
    システム。
  8. 【請求項8】前記読み出し制御手段は、第2の読み出し
    ポインタを次の第1のリング・バッファに進める前に、
    第2の読み出しポインタが第2の書き込みポインタと一
    致するかどうかを判断し、一致する場合には、バッファ
    空状態と判断して第2の読み出しポインタを進めずデー
    タ読み出し動作を見送ることを特徴とする請求項7に記
    載のデータ・バッファリング・システム。
JP23160196A 1996-09-02 1996-09-02 データ・バッファリング・システム Expired - Fee Related JP3268980B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP23160196A JP3268980B2 (ja) 1996-09-02 1996-09-02 データ・バッファリング・システム
US08/899,375 US5948082A (en) 1996-09-02 1997-07-23 Computer system having a data buffering system which includes a main ring buffer comprised of a plurality of sub-ring buffers connected in a ring
KR1019970034884A KR19980024107A (ko) 1996-09-02 1997-07-25 데이터 버퍼링 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23160196A JP3268980B2 (ja) 1996-09-02 1996-09-02 データ・バッファリング・システム

Publications (2)

Publication Number Publication Date
JPH10105373A JPH10105373A (ja) 1998-04-24
JP3268980B2 true JP3268980B2 (ja) 2002-03-25

Family

ID=16926076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23160196A Expired - Fee Related JP3268980B2 (ja) 1996-09-02 1996-09-02 データ・バッファリング・システム

Country Status (3)

Country Link
US (1) US5948082A (ja)
JP (1) JP3268980B2 (ja)
KR (1) KR19980024107A (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112267A (en) * 1998-05-28 2000-08-29 Digital Equipment Corporation Hierarchical ring buffers for buffering data between processor and I/O device permitting data writes by processor and data reads by I/O device simultaneously directed at different buffers at different levels
US7982740B2 (en) 1998-11-09 2011-07-19 Broadcom Corporation Low resolution graphics mode support using window descriptors
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
EP1145218B1 (en) 1998-11-09 2004-05-19 Broadcom Corporation Display system for blending graphics and video data
US6661422B1 (en) 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
US6636222B1 (en) 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US9668011B2 (en) 2001-02-05 2017-05-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Single chip set-top box system
US6996640B1 (en) 2001-08-07 2006-02-07 Adaptec, Inc. Method and system for asynchronously transferring data
US6983408B2 (en) * 2002-03-08 2006-01-03 Microsoft Corporation Managing error/status information generated during video processing
JP2004171411A (ja) * 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US8063916B2 (en) 2003-10-22 2011-11-22 Broadcom Corporation Graphics layer reduction for video composition
TWI237806B (en) * 2004-11-03 2005-08-11 Sunplus Technology Co Ltd Audio decoding system with ring buffer and method thereof
JP2006185162A (ja) * 2004-12-27 2006-07-13 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びその制御方法
KR100851070B1 (ko) * 2005-11-03 2008-08-12 삼성전기주식회사 4색을 이용하는 스캐닝 컬러 디스플레이 장치, 방법 및컬러 영상 제어 기록 매체
CA2754362C (en) 2009-03-06 2014-09-23 Aspera, Inc. Method and system for i/o driven rate adaptation
KR20120055779A (ko) * 2010-11-23 2012-06-01 한국전자통신연구원 지그비 기반의 음성 데이터 송수신 시스템 및 그의 음성 데이터 송수신 방법
US9223638B2 (en) 2012-09-24 2015-12-29 Sap Se Lockless spin buffer
US10101964B2 (en) * 2016-09-20 2018-10-16 Advanced Micro Devices, Inc. Ring buffer including a preload buffer
US11113205B2 (en) * 2017-07-31 2021-09-07 Micron Technology, Inc. Die addressing using a reduced size translation table entry
US11132240B2 (en) 2019-08-16 2021-09-28 Roku, Inc. Multi-agent ring-buffer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3766534A (en) * 1972-11-15 1973-10-16 Ibm Shift register storage unit with multi-dimensional dynamic ordering
US4507760A (en) * 1982-08-13 1985-03-26 At&T Bell Laboratories First-in, first-out (FIFO) memory configuration for queue storage
US4803654A (en) * 1985-06-20 1989-02-07 General Datacomm Industries, Inc. Circular first-in, first out buffer system for generating input and output addresses for read/write memory independently
JPS63163645A (ja) * 1986-12-26 1988-07-07 Ricoh Co Ltd 二次元配列メモリ装置
US4839866A (en) * 1987-05-29 1989-06-13 Texas Instruments Incorporated Cascadable first-in, first-out memory
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
US5519701A (en) * 1995-03-29 1996-05-21 International Business Machines Corporation Architecture for high performance management of multiple circular FIFO storage means

Also Published As

Publication number Publication date
US5948082A (en) 1999-09-07
JPH10105373A (ja) 1998-04-24
KR19980024107A (ko) 1998-07-06

Similar Documents

Publication Publication Date Title
JP3268980B2 (ja) データ・バッファリング・システム
JP3580630B2 (ja) 消費電力を管理するシステム及び電源を管理する方法
US9734085B2 (en) DMA transmission method and system thereof
US7272676B2 (en) Data transmission controller that restarts data transmission when reconstruction is completed
JP3273202B2 (ja) 複数のデータチャネルを介してデータを転送する方法及びその回路アーキテクチャ
EP1896965B1 (en) Dma descriptor queue read and cache write pointer arrangement
US5864876A (en) DMA device with local page table
US9086920B2 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
JP2001142842A (ja) Dmaハンドシェークプロトコル
JPH07182260A (ja) ネットワークパケットのフレームバッファ方法
JP2001216194A (ja) 演算処理装置
CN113900974B (zh) 一种存储装置、数据存储方法及相关设备
TWI412934B (zh) 嵌入式控制器記憶體之外部直接記憶體存取
US7913059B2 (en) Information processing device, data transfer method, and information storage medium
US6957280B2 (en) Streamlining ATA device initialization
US20200242040A1 (en) Apparatus and Method of Optimizing Memory Transactions to Persistent Memory Using an Architectural Data Mover
US5911152A (en) Computer system and method for storing data in a buffer which crosses page boundaries utilizing beginning and ending buffer pointers
US6415365B1 (en) Write buffer for use in a data processing apparatus
US20050005039A1 (en) Data transfer control device, electronic instrument, and data transfer control method
US6401151B1 (en) Method for configuring bus architecture through software control
JP3208160B2 (ja) コンピュータにおける記憶管理方式
US6665752B1 (en) Interrupt driven interface coupling a programmable media access controller and a process controller
US7694004B2 (en) Bit-granular writes of control registers
JPS6027976A (ja) 先入先出メモリ装置
WO2024198546A1 (zh) 存储器控制器、存储器的访问方法、存储模组及电子设备

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees