JPH09288654A - 多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o - Google Patents

多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o

Info

Publication number
JPH09288654A
JPH09288654A JP8341416A JP34141696A JPH09288654A JP H09288654 A JPH09288654 A JP H09288654A JP 8341416 A JP8341416 A JP 8341416A JP 34141696 A JP34141696 A JP 34141696A JP H09288654 A JPH09288654 A JP H09288654A
Authority
JP
Japan
Prior art keywords
data
sink
descriptor
message
memory
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.)
Abandoned
Application number
JP8341416A
Other languages
English (en)
Inventor
Leonard R Fishler
アール フィッシュラー レナード
Bahman Zargham
ザーガム バーマン
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.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
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 Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of JPH09288654A publication Critical patent/JPH09288654A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Information Transfer Systems (AREA)

Abstract

(57)【要約】 【課題】 プロセッサ内及びプロセッサ間の両方におい
て、データの不要なコピーイングを排除する方法及び装
置を提供する。 【解決手段】 データに対するディスクリプタをゲット
しかつディスクリプタをデータ・ソース及びシンクの中
でパスする装置及び方法であり、それによりデータ・ソ
ース及びシンクの中でデータをコピーすることを回避す
る。データを消費するデータ・ソース及びシンクは、デ
ィスクリプタのデータへのグローバル・ポインタを用い
て、実際のデータそれ自体の複写を実際に開始する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータシステム
におけるデータ転送に関する。より詳しく述べれば、本
発明は、種々のデータソースとデータシンク(シンク)
との間でデータを転送する方法及び装置に関する。
【0002】
【従来の技術】共用メモリを有するシステムにおける待
ち行列メッセージをベースとするI/O(“QIO”)
に関しては 1995 年1月23日付米国特許出願第 08/377,
302 号に詳細開示されている。この出願は、以下に参照
文献として概述する。図1は、QIO共用メモリシステ
ムを組み込んだ故障許容並列データ処理システム100
を示すブロック線図である。図1は、ローカルエリアネ
ットワーク(LAN)105を介して連絡するノード1
02及びワークステーション104を含んでいる。ノー
ド102は、プロセッサ間バス(IPB)109によっ
て接続されているプロセッサ106及び108を含む。
IPB 109は、公知の型の冗長バスである。図1に
は示してないが、システム100は、少なくとも1つの
プロセッサがシステム内の他のプロセッサからのデータ
のチェックポイントである故障許容並列コンピュータシ
ステムである。従来はこのようなシステムにおいては、
メモリが隘路になったり、または共通の故障点になった
りすることを回避するために、メモリを共用することは
なかった。このような故障許容システムは、例えば Kat
zman等による米国特許第 4,817,091号に開示されてい
る。
【0003】プロセッサ106は、CPU110及びメ
モリ112を含み、ディスクドライバ132及びディス
クコントローラ114を介してディスクドライブ116
に接続されている。アプリケーションプロセス120及
びディスクプロセス122は、QIOライブラリルーチ
ン126を通して共用メモリセグメント124にアクセ
スする。QIOの本質として、共用メモリセグメント1
24及びQIOライブラリ126を使用してアプリケー
ションプロセス120とディスクプロセス122との間
に送られるメッセージは、データを複製することなくプ
ロセスからプロセスへ送られる。プロセッサ108は、
CPU142及びメモリ144をも含み、LANコント
ローラ140を介してLAN105に接続されている。
メモリ144は、QIO待ち行列151を含む共用メモ
リセグメント150を含んでいる。TCP/IPプロセ
ス146は、QIOライブラリルーチン152を使用し
て共用メモリセグメント150を通してNFSディスト
リビュータプロセス148及びソフトウェアLANドラ
イバ158と連絡する。この場合もQIO共用メモリセ
グメント150を使用する連絡は、プロセス間でのデー
タのコピーイングを含まない。
【0004】TCP/IPプロセス146及びLAN1
05は、LANドライバ158及びLANコントローラ
140によってデータを交換する。プロセス120は、
メッセージシステム(MS)128及び154、及びフ
ァイルシステム(FS)130及び156を使用して、
IPB109を介してTCP/IPプロセス146と連
絡する。QIO連絡とは異なり、メッセージシステム及
びファイルシステムを使用する連絡は、データのコピー
イングを必要とする。以上説明したように、図1は、単
一のプロセッサ上でのプロセス間の連絡のためのQIO
共用メモリシステムを示している。共用メモリ待ち行列
システムは、単一のプロセッサ上のプロセス間の連絡の
動作速度を増加させ、従ってシステムの総合速度を増加
させる。更に共用メモリ待ち行列システムによれば、プ
ロセスを定義する場合に、プログラマは自由に垂直及び
水平の両モジュラリティを実現することができる。この
垂直及び水平モジュラリティの増加はプロセスの維持の
容易さを改善しながら、単一プロセッサ上のプロセス間
の、及び単一プロセッサ上のドライバ間のデータの転送
効率を向上させることができる。
【0005】図2にコンピュータシステム200を示
す。コンピュータシステムは、ノード210、211、
212、及び213を含んでいる。ノード210、21
1、212、及び213は、ネットワーク(Tネット)
220によって相互接続されている。ノード210、2
11、212、及び213は、それぞれディスクプロセ
ス230、アプリケーションサーバプロセス231、中
間プロトコルプロセス232、及びTCP/IP及びA
TMドライバ233を走らせる。アプリケーションサー
バプロセス231は、Tネット220を通してデータに
関するユーザ要求を受け、ユーザへのそのデータの転送
を管理する。要求されたデータは一般に、ディスクコン
トローラ240のようなディスクコントローラを介して
のみアクセス可能なディスク上に存在している。実際に
は、ディスクコントローラ上のデータへのアクセスは、
特定のディスクプロセスによって調停される。ここで
は、ノード210上のディスクプロセス230がディス
クコントローラ240へのアクセスを調停する。ディス
クプロセス210は、ディスクコントローラ240に関
連付けられたディスクへの、及びディスクからのデータ
の転送の責を負っている。
【0006】図2に示すシステム200に関して、マル
チメディアアプリケーションは、データディスクからあ
る大量のデータ260、例えばMPEGビデオクリップ
を入手する必要があるものとする。またこのアプリケー
ションは、そのMPEGビデオクリップの個々のバイト
の何れをも(または少なくとも大部分を)調べたり、ま
たは変換したりする必要はないものとする。アプリケー
ションは、ネットワーク上の何処かのエンドユーザがそ
のビデオクリップを要求したので、データ260を探索
する。ユーザインタフェース及びアプリケーションサー
バプロセス231は、TCP/IP上に実現されている
中間プロトコルを使用して連絡する。(ユーザインタフ
ェースは、アプリケーションプロセスであっても、また
は最小のソフトウェアを有するハードウェアデータであ
っても差し支えない。何れの場合であっても、ユーザイ
ンタフェースは図示してない。)従って、アプリケーシ
ョンサーバプロセス231からのメッセージには中間プ
ロトコル情報262を付加しなければならず、中間プロ
トコルプロセス232は中間プロトコルが要求した時
に、このようなヘッダ情報262を結び付ける責任を有
している。同様に、アウトバウンドメッセージ上にTC
P/IPプロトコル情報263をレイヤ(層)化しなけ
ればならず、TCP/IPプロトコルが要求すると、ノ
ード213内のTCP/IPドライバプロセス233が
このTCP/IPヘッダ263を供給する。従って、要
求があり次第、ディスクコントローラ240に関連付け
られたディスクからデータ260を転送するために、ア
プリケーションサーバプロセス231はディスクプロセ
ス230を使用してディスクからデータ260を検索
し、また中間プロトコルプロセス232及びTCP/I
PATMドライバプロセス233を使用してデータ26
0をユーザインタフェースへ転送する。
【0007】更に、アプリケーションプロセス231は
その機能の中で、アウトバウンドデータ260の始め
に、あるアプリケーションに特定のデータ261を付加
するものとする。要求中のユーザが使用するためにデー
タ260へのアクセスをディスクプロセス230が調停
していることをアプリケーションサーバプロセス231
が認識すると、アプリケーションサーバプロセス231
はそのデータ260を検索するためにTネット220を
介してディスクプロセス230へメッセージを送る。デ
ィスクプロセス230はコマンドシーケンスを作成し、
ディスクコントローラ240はこのコマンドシーケンス
を受信すると、関心データを回復するための命令として
解釈する。ディスクプロセス230は、ディスクコント
ローラ240に指令してデータ260を副処理システム
(ノード)210のメモリ250内へ転送させる。ディ
スクコントローラ240は、指令されたデータ転送が成
功裏に完了すると、そのことをディスクプロセス230
に通報する。
【0008】ディスクプロセス230自体は、データ転
送を成功裏に完了させたアプリケーションサーバプロセ
ス231に応答し、その応答内にデータ260のコピー
を含ませる。従って、要求されたデータ260はアプリ
ケーションサーバノード211内にコピーされる。当分
野に精通していれば、データ260をアプリケーション
サーバノード211のTネットドライババッファ(図示
してない)からアプリケーションサーバプロセス231
のメモリ空間内へ転送するためには、若干のコピーが必
要であることは理解されよう。ディスクデータ260に
接するアプリケーションに特定のデータ261を作成す
るには、典型的には、更に別のコピーが必要である。し
かしながら、上述したQIOシステムでは、多くのこれ
らのプロセッサ内コピーは必要とせず、プロセッサ間コ
ピーを全く不要にすることができる。
【0009】実際に、組合わされたデータ261、26
0は、別のプロセッサ間コピーによってノード211か
らノード212へ移送される。ノード212はその中間
プロトコルヘッダデータ262を、(多分データ26
2、261、及び260のコピーによって)中間プロト
コルプロセス232のメモリ内の単一のバッファ内へ付
加する。組合わされたデータ261、260、260
も、別のプロセッサ間コピーによってノード212から
ノード213へ移送される。TCP/IPプロセス23
3は、組合わされたデータ261、260、260をT
CP/IPパケットサイズに分割し、適切な点において
TCP/IPヘッダ263a、263b、、263nを
挿入することを望む。従って、TCP/IPプロセス2
33は全ての、または少なくとも実質的に全ての組合わ
されたデータ261、260、260及びTCP/IP
ヘッダデータ263a、263b、、263nをコピー
して断片化し、データを正しい順序でメモリ253内に
再構成する。
【0010】(並行処理してシステム200の処理能力
を増加させる理由から、レイヤ化したプロトコルの処理
を別の副処理システム内へ分離することをシステム設計
者が望むかも知れない。)より大きい故障許容を達成
し、メモリが隘路になることを回避するために、このよ
うな副処理システムは、この型のシステムのメモリを共
用しない。
【0011】
【発明が解決しようとする課題】この技術のコンピュー
タシステムは、副処理システム間で5回、そして上述し
たようなQIOを実現していない各副処理システム内で
典型的には更に2−4回にわたってディスクデータ26
0をコピーする必要がある。コンピュータシステム20
0は、プロセッサ間コピーイングを実行しないシステム
のレートの(最小で)5倍のメモリ帯域幅を消費する。
コピーイングはシステム200の動作の潜在的な隘路に
なっており、I/O帯域幅、メモリ帯域幅を浪費し、そ
してターゲットCPU内にキャッシュミスをもたらす
が、これらは全て性能を低下させるものである。従っ
て、データのプロセッサ間コピーイングを回避し、しか
も共用メモリの隘路及び故障許容問題を回避するシステ
ムに対する要望が存在している。
【0012】従って、本発明の目的は、プロセッサ内及
びプロセッサ間の両方において、データの不要なコピー
イングを排除したコンピュータシステムを提供すること
である。本発明のこの目的及び他の目的は、以上の従来
の技術の説明、及び以下の詳細な説明から容易に明白に
なるであろう。
【0013】
【課題を解決するための手段】本発明の上記目的は、ネ
ットワークに対するノードとして結合されかつネットワ
ークにわたりメモリアドレスによりアクセス可能なデー
タ位置に結合された、関連メモリを有しているI/Oコ
ントローラ、CPUまたはメモリ装置の形の複数のデー
タソース/シンクを含む分散型メモリアーキテクチャを
有しているデータ処理システムにおいて、変形処理の間
に多重データソース/シンクのそれぞれにデータストリ
ームをコピーすることなく多重データソース/シンクを
用いてデータストリームを変形する方法であって、第1
のデータストリームが記憶される第1の記憶位置を指定
している第1のグローバルネットワークアドレスを含ん
でいる、第1のデータソース/シンクで、第1のポイン
タを生成し、第1のデータソース/シンクから第2のデ
ータソース/シンクへ第1のポインタだけを転送し、第
2のデータストリームが記憶される第2の記憶位置を指
定している第2のグローバルネットワークアドレスを含
んでいる第2のポインタを、第2のデータソース/シン
クで、生成し、かつ第1の連鎖ポインタを形成すべく該
第1及び第2のポインタを連鎖し、メッセージの第3の
データフラグメントを記憶している該第3のノードで、
第3のデータソース/シンクに第1の連鎖ポインタだけ
を転送し、かつ該メッセージを宛先に転送し、第1のデ
ータストリームを部分に分割するために第1のポインタ
を複数の2次ポインタに変形すべく、該第1のポインタ
を、第3のデータソース/シンクで、処理し、かつ第1
のデータストリームの各部分にプロトコルヘッダを連鎖
する段階を具備する方法によって達成される。
【0014】本発明の方法では、第1、第2、第3及び
第4のデータソース/シンクでグローバルIOキューを
生成し、第1のポインタを第1のデータソース/シンク
から第2のデータソース/シンクへ転送する段階は、第
1のデータソース/シンクにおけるグローバルIOキュ
ーに第1のポインタを記憶し、第1のデータソース/シ
ンクにおけるグローバルIOキューから、第2のノード
にコピーされる第1のポインタだけを結果として生ずる
第2のデータソース/シンクにおけるグローバルIOキ
ューへ第1のポインタをキューイングする段階を更に具
備するようにしてもよい。また、本発明の上記目的は、
ネットワークに対するノードとして結合されかつネット
ワークにわたりメモリアドレスによりアクセス可能なデ
ータに結合された、関連メモリを有しているI/Oコン
トローラ、CPUまたはメモリ装置の形の複数のデータ
ソース/シンクを含む分散型メモリアーキテクチャを有
しているデータ処理システムにおける方法であって、複
数のデータソース/シンクの第1のもののデータバッフ
ァにディスクリプタをゲットし、データバッファのデー
タを転送することなくディスクリプタを複数のデータソ
ース/シンクの第2のものに置き、第2のデータソース
/シンクから複数のデータソース/シンクの第3のもの
にディスクリプタを置き、かつデータ入力または出力を
実行するために第1のデータソース/シンクから第3の
データソース/シンクへデータバッファのデータの一部
を検索する段階を具備する方法によって達成される。
【0015】本発明の方法では、ディスクリプタをその
最初のデータソース/シンクにリターンし、かつディス
クリプタ及びそれが記述するメモリ領域の割り当てを解
除する段階を更に具備するようにしてもよい。更に、本
発明の上記目的は、ネットワークに対するノードとして
結合されかつネットワークにわたりメモリアドレスによ
りアクセス可能なデータに結合された、関連メモリを有
しているI/Oコントローラ、CPUまたはメモリ装置
の形の複数のデータソース/シンクを含む分散型メモリ
アーキテクチャを有しているデータ処理システムにおけ
る方法であって、複数のデータソース/シンクの第1の
もののデータバッファにディスクリプタをゲットし、デ
ータバッファのデータを転送することなくディスクリプ
タを複数のデータソース/シンクの第2のものに置き、
ディスクリプタを複数のディスクリプタに分割し、複数
のディスクリプタの一つを第2のデータソース/シンク
から複数のデータソース/シンクの第3のものに置き、
かつデータ入力または出力を実行するために第1のデー
タソース/シンクから第3のデータソース/シンクへ一
つのディスクリプタにより記述されたデータバッファの
データの一部を検索する段階を具備する方法によって達
成される。
【0016】本発明の方法では、一つのディスクリプタ
をその最初のデータソース/シンクにリターンし、かつ
一つのディスクリプタ及びそれが記述するメモリ領域の
割り当てを解除する段階を更に具備するようにしてもよ
い。本発明の上記目的は、複数のデータソース/シンク
の第1のもののデータバッファにディスクリプタをゲッ
トし、データバッファのデータを転送することなくディ
スクリプタを複数のデータソース/シンクの第2のもの
に置き、第2のデータソース/シンクから複数のデータ
ソース/シンクの第3のものにディスクリプタを置き、
かつデータ入力または出力を実行するために第1のデー
タソース/シンクから第3のデータソース/シンクへデ
ータバッファのデータの一部を検索することにより、I
/Oコントローラ、CPUまたはメモリ装置の形の複数
のデータソース/シンクの中でデータI/Oを実行する
ためのコンピュータプログラムが配置されるデータスト
レージ用媒体によって達成される。
【0017】本発明の上記目的は、複数のデータソース
/シンクの第1のもののデータバッファにディスクリプ
タをゲットし、データバッファのデータを転送すること
なくディスクリプタを複数のデータソース/シンクの第
2のものに置き、ディスクリプタを複数のディスクリプ
タに分割し、複数のディスクリプタの一つを第2のデー
タソース/シンクから複数のデータソース/シンクの第
3のものに置き、かつデータ入力または出力を実行する
ために第1のデータソース/シンクから第3のデータソ
ース/シンクへ一つのディスクリプタにより記述された
データバッファのデータの一部を検索することにより、
I/Oコントローラ、CPUまたはメモリ装置の形の複
数のデータソース/シンクの中でデータI/Oを実行す
るためのコンピュータプログラムが配置されるデータス
トレージ用媒体によって達成される。
【0018】
【作用】一実施例において、本発明のデータ処理システ
ムは、ネットワークに対するノードとして結合されかつ
ネットワークにわたりアクセス可能なデータに結合され
た、関連メモリを有しているI/Oコントローラ、CP
Uまたはメモリ装置の形の複数のデータソース/シンク
を含む分散型メモリアーキテクチャを有しており、該複
数のデータソース/シンクの第1のもののデータバッフ
ァにディスクリプタをゲットし、該データバッファのデ
ータを転送することなく該ディスクリプタを該複数のデ
ータソース/シンクの第2のものに置き、該第2のデー
タソース/シンクから該複数のデータソース/シンクの
第3のものに該ディスクリプタを置き、かつ該第1のデ
ータソース/シンクから該第3のデータソース/シンク
へ該データバッファのデータの一部を検索する。
【0019】
【実施例】図3に、以下に参考文献として概述する 199
5 年6月7日付米国特許出願第 08/485,217 号によるデ
ータ処理システム10を示す。図3に示すように、デー
タ処理システム10は、同一の構造の2つの副処理シス
テム10A及び10Bからなっている。各副処理システ
ム10は、中央処理ユニット(CPU)12、ルータ1
4、及び複数の入力/出力(I/O)パケットインタフ
ェース16を含む。各I/Oパケットインタフェース1
6自体は、複数(n)のI/Oデバイス17及び保守プ
ロセッサ(MP)18に接続されている。CPU12、
ルータ14、及びI/Oパケットインタフェース16
は、信頼されたネットワーク(Tネット)リンクLによ
って相互接続されている。TリンクLは、副処理システ
ム10A及び10Bをも相互に接続しており、各副処理
システム10に他のI/Oデバイスへのアクセスと、C
PU間連絡を与える。処理システム10のどのCPU1
2も、他の何れのCPU12のメモリへもアクセスする
ことができるが、このアクセスには検証を受けなければ
ならない。
【0020】図3に(そして図4にも)示してあるよう
に、副処理システム10A/10Bは対にすることが好
ましい。情報は、メッセージ「パケット」を介して、処
理システム10の何れかの要素とシステムの何れかの他
の要素(例えば、副処理システム10AのCPU12
A)、及びシステムの何れかの他の要素(例えば、副処
理システム10BのI/Oパケットインタフェース16
Bに関連するI/Oデバイス)との間で連絡される。各
パケットは、データまたはコマンドを含むことができる
記号からなる。各ルータ14にはTネットポートが設け
られており、各ポートは実質的に同一の構造である(本
発明には重要ではない幾つかの箇所を除く)。図4で
は、各ルータ14A及び14Bの1つのポートを使用し
て対応する副処理システム10A及び10Bを付加的な
副処理システム10A’及び10B’に接続し、副処理
システム10のクラスタからなる処理システム10を形
成している。
【0021】ルータ14の設計、メッセージパケットを
経路指定するのに使用する方法、及びシステム10のト
ポロジを構成する時のルータの賢明な使用によって、図
3の処理システム10のどのCPU12も、他のどの副
処理システムの他のどの「エンドユニット」(例えば、
CPU及び/またはI/Oデバイス)にもアクセスする
ことができる。例えば、副処理システム10BのCPU
12Bは副処理システム10A”のI/O 16”にア
クセスでき、または副処理システム10AのCPU12
Aは副処理システム10BのCPU12B内に含まれる
メモリにアクセスしてデータを読み出し、または書き込
むことができる。この後者の活動は、CPU12A(副
処理システム10A’)が所望のアクセスを実行する許
可を有していなければならない。因みに、各CPU12
は、そのCPUのメモリへのアクセスを許可されている
各要素毎のエントリと、許容されるアクセスの型とを含
む表を維持している。
【0022】データ及びコマンドは、データ及びコマン
ド記号からなるパケットによって、種々のCPU12と
I/Oパケットインタフェース16との間で連絡され
る。CPU12は、何等かの外部構成要素との直接連絡
(I/Oパケットインタフェース16を介して、例えば
別のCPU12またはI/Oデバイス)から除外されて
いる。そうではなく、CPU12は、メモリ28内にデ
ータ構造を構成し、インタフェースユニット24(図
5)の制御を引き継ぐ。インタフェースユニット24
は、メモリからのデータ構造にアクセスし、また適切な
行先へデータ構造を伝送することができる直接メモリア
クセス(DMA)能力を有するように構成されたブロッ
ク転送エンジン(BTE)を含んでいる。処理システム
10の設計は、外部ソース(例えば、CPU12B及び
/またはI/Oデバイス)によってCPUのメモリ28
を読み出したり、メモリ28へ書き込んだりすることが
できるようになっている。この理由から、CPU12の
メモリ28の外部使用を許可制にするように注意を払わ
なければならない。
【0023】ムービーオンデマンドシナリオ 図6に、図3のコンピュータシステム100をより特定
化したバージョンを示す。図6のコンピュータシステム
500は、副処理システム510、511、512、及
び513を含んでいる。図6には示してないが、これら
の各副処理システム510、511、512、及び51
3は、実際には前述したように対にされた副処理システ
ムを含んでいる。また図6には示してないが、各副処理
システム510、511、512、及び513は、前述
したようにそれぞれのルータ14及びインタフェースユ
ニット24を含んでいる。図6には、副処理システム5
10、511、512、及び513を相互接続している
TネットリンクLが、Tネットネットワーク520から
のリンクLとして示されている。副処理システム51
0、511、512、及び513は、それぞれディスク
プロセス530、アプリケーションサーバプロセス53
1、中間プロトコルプロセス532、及びTCP/IP
及びATMドライバ533を走らせる。上述したよう
に、典型的なシステムでは、若干のプロセス530、5
31、532、及び533は対にされている副処理シス
テム内で走るバックアッププロセスを有している。図6
では、これらの対にされたプロセスは、それらの主プロ
セスによって代表されている。以下に概要説明するムー
ビー(映画)オンデマンドシナリオでは、アプリケーシ
ョンサーバプロセス531はTネット520を通してデ
ータ(例えば、映画のクリップ)に関するユーザの要求
を受け、そのデータのユーザへの転送を指令する。要求
されたデータは、一般的には、ディスクコントローラ5
40のようなディスクコントローラを介してのみアクセ
ス可能なディスク上に存在している。実際には、ディス
クコントローラ上のデータへのアクセスは、特定のディ
スクプロセスによって調停される。ここでは、副処理シ
ステム510上のディスクプロセス530がディスクコ
ントローラ540へのアクセスを調停する。ディスクプ
ロセス510は、ディスクコントローラ540に関連付
けられたディスクへの、及びディスクからのデータの転
送の責を負っている。(システム500は完全に故障許
容システムであるから、ディスクコントローラ540は
1対にされており、ディスクコントローラ540のディ
スクは典型的には鏡像化されている。システム500の
故障許容面も簡易化された図6には示していない。) ユーザインタフェース及びアプリケーションサーバプロ
セス531は、TCP/IP上に実現されているRPC
プロトコルを使用して連絡する。(ユーザインタフェー
スは、アプリケーションプロセスであっても、または最
小のソフトウェアを有するハードウェアデータであって
も差し支えない。何れの場合も、ユーザインタフェース
は図示してない。)従って、アプリケーションサーバプ
ロセス531からのメッセージにはRPCプロトコル情
報562を付加しなければならず、中間プロトコルプロ
セス532はRPCプロトコルが要求した時に、このよ
うなヘッダ情報562を結び付ける責任を有している。
同様に、アウトバウンドメッセージ上にTCP/IPプ
ロトコル情報563をレイヤ化しなければならず、TC
P/IPプロトコルが要求すると、副処理システム51
3内のTCP/IPドライバプロセス533がこのTC
P/IPヘッダ563を供給する。従って、要求があり
次第、ディスクコントローラ540に関連付けられたデ
ィスクからデータを転送するために、アプリケーション
サーバプロセス531はディスクプロセス530を使用
してディスクからデータ260を検索し、また中間プロ
トコルプロセス532及びTCP/IPATMドライバ
プロセス533を使用してデータをユーザインタフェー
スへ転送する。
【0024】更に、アプリケーションプロセス531は
その機能の中で、アウトバウンドデータの始めに、ある
アプリケーションに特定のデータ561を付加するもの
とする。この前置データは、例えばムービーの末尾空白
部分、良く知られた著作権警告、またテレビジョンモニ
タに接続されたビデオボックスに対するコマンドシーケ
ンスであることができる。要求中のユーザが使用するた
めにデータ560へのアクセスをディスクプロセス53
0が調停していることをアプリケーションサーバプロセ
ス531が認識すると、アプリケーションサーバプロセ
ス531はそのデータ560を検索するためにTネット
520を介してディスクプロセス530へメッセージを
送る。ディスクプロセス530はコマンドシーケンスを
作成し、ディスクコントローラ540はこのコマンドシ
ーケンスを受信すると、関心データを回復するための命
令として解釈する。しかしながら、データ560を副処
理システム510のメモリ550内へ、またはアプリケ
ーションサーバ副処理システム511のメモリ551内
へ転送するようにディスクコントローラに自動的に指令
するのではなく、命令シーケンスはデータ560をディ
スクプラッタからデータシンク内へ転送するようにディ
スクコントローラ540に指令する。
【0025】データシンク及びソース データシンク/ソース(“DSS”)は、データを記憶
し、要求があり次第データを転送することができるどの
ようなデバイスであっても、またはデバイスの一部であ
ってもよい。データをディスクプラッタからDSSへ移
動させることの直接的な利点は、DSSのアクセス時間
が殆ど確実に、ディスクプラッタからデータを検索する
ためのアクセス時間より優れていることである。DSS
は、多くのオプションの何れか、即ちディスクコントロ
ーラ540自体内に含ませることができるメモリ55
4、または副処理システム510、511、512、ま
たは513のそれぞれのメモリ550、551、55
2、または553の何れかであることができる。データ
シンクも、ATMコントローラ570がメモリを有して
いることを条件として、ATMコントローラ570のメ
モリ555であることができる。別のオプションは「グ
ローバルメモリ」と名付けた新しい型のDSSである。
グローバルメモリは、Tネット上の全ての連絡デバイス
が利用可能なDSSである(米国特許出願第 08/485,21
7 号に開示されているように、もしデバイスが十分な特
権を有していれば)。図6は、グローバルメモリ580
を有するグローバルメモリを示している。メモリ580
は、メモリ580へのアクセスを調停するソフトウェア
プロセスが存在せず、メモリ580が主メモリとして組
合わされるプロセッサが存在せず、そしてメモリ580
が副メモリとして組合わされる主メモリ(ディスクコン
トローラ540に関連付けられているディスクプラッタ
のような)が存在しないことからグローバルなのであ
る。
【0026】DSSの選択は、特定のアプリケーション
に依存する。設計のトレードオフによって、特定のシン
ク、シンクのクラス、またはある他のシンクのサブグル
ープを指定することができる。データを、ディスクコン
トローラ540のメモリ554内にではなく、グローバ
ルメモリ580内に配置することの主な利点は、グロー
バルメモリ580が提供する付加的なメモリまたはメモ
リ帯域幅が、等価の付加的なディスクコントローラより
も経済的であることである。同様に、グローバルメモリ
580の付加的なメモリ、またはメモリ帯域幅は、等価
の付加的な対にされた副処理システム(“SPS”)5
10のようなSPSよりも明らかに経済的である。グロ
ーバルメモリ580のようなグローバルメモリによっ
て、システム設計者はディスクコントローラ及びサブプ
ロセッサのスケーリングには関係なくメモリ容量及び帯
域幅をスケールすることができる。また、システム設計
者は、ディスクをそのメモリ内へ渡すSPSの性能に与
える負の衝撃を回避することができる。この負の衝撃
は、ディスクをSPSメモリ内へ渡す際に含まれるメモ
リキャッシュ無効化及びフラッシングに起因している。
【0027】データ560の行先が、データの元の要求
者(ここでは、アプリケーションサーバプロセス53
1)またはデータの最終的な要求者(ここでは、ディス
クプロセス530)の制御内にない場合には、問題が発
生する。その問題とは、誰がディスク560の行先を決
定したのか?である。多くのオプションが利用可能であ
る。第1のオプションでは、ディスクプロセス530は
システム500内の使用可能なグローバルメモリのどれ
か(例えば、グローバルメモリ580)を行先であると
決定し、データ560のための空間を整える。別のオプ
ションは、アプリケーションサーバプロセス530のた
めに、データ560を配置するが、ディスクプロセス5
30のために実際の空間割当てを残すようにする使用可
能なグローバルメモリのどれかを決定するものである。
このシナリオでは、アプリケーションサーバプロセス5
31はディスクプロセス530と選択したDSSのアイ
デンティティを連絡し、割当てが実行されなかったこと
を指示する。最後のオプションとして、アプリケーショ
ンサーバプロセス531は、使用可能なデータシンクの
どれが行先であるかを決定した上で、その割当てを実行
する。割当てを実行し、グローバルポインタ(後述)に
よってその割当て情報をディスクプロセス530へ渡す
ことがアプリケーションサーバプロセス531の義務に
なり始める。これにより、ディスクプロセス530は、
要求されたデータの行先を選択する必要がないこと、及
び事前に割当てられた行先をそのディスクコマンドシー
ケンス内に組み込むことができることを知る。
【0028】以上の説明から明らかなのは、グローバル
メモリ580のようなグローバルメモリは、そのメモリ
を管理するために十分な知能を有していなければならな
いこと、または、そのためにそのメモリを管理するプロ
セスの制御の下になければならないことである。この後
者のシナリオは、ディスクコントローラ540に関連す
るディスクプラッタのメモリを管理するディスクプロセ
ス530に類似している。前者は、それ自体のメモリ
(例えば、メモリ550)を管理する副処理システム
(例えば、副処理システム510)に類似しており、こ
の方が好ましい。どのグローバルメモリDSSを使用す
るかを、アプリケーションサーバプロセス531のよう
なアプリケーションプロセスが決定できるようにしたこ
とから利点が得られる。アプリケーションプロセスは、
そのメモリ要求が時間を超えているものであることを理
解することができる。アプリケーションプロセスは、例
えばグローバルメモリのプールのある部分集合を管理す
るために探索し、若干のデータを事実上データキャッシ
ュとしてそれらの中に保持できる。ビデオオンデマンド
映画アプリケーションサーバプロセス531は、システ
ム内において使用可能なグローバルメモリを、多くのハ
ードウェアディスクにまたがって広がっている大きいキ
ャッシュとして取り扱うことができる。実際に、要求が
多いビデオをグローバルメモリ内に保持するようなクロ
スオーバ点に到達できる方が、その映画をディスク上に
保持するよりは経済的である。
【0029】リファレンスによるデータI/O ディスクプラッタ上のデータ560を転送することを指
令するディスクコマンドシーケンスを受信するとディス
クコントローラ540は、データ560をディスクプラ
ッタから、選択されたDSS行先へ転送し、アプリケー
ションプロセス531とディスクプロセス530との間
に割当てる。ここでは、選択されたデータシンクがグロ
ーバルメモリ580であるものとする。グローバルメモ
リ580(または、ディスクコントローラ540)は、
指令されたデータ転送が成功裏に完了したことをディス
クプロセス530に通報する。ディスクプロセス530
自体は、要求されたデータがグローバルメモリ580内
に配置されたことをアプリケーションサーバプロセス5
31に通報する。ディスクプロセス530がデータ56
0の実際の行先を割当てた場合には、ディスクプロセス
530は、Tネット520上のデータ560のアドレス
を後述するグローバルポインタによってアプリケーショ
ンサーバプロセス531に連絡する。
【0030】さて、グローバルポインタがデータ560
を指し示し、それ自体のアプリケーションに特定のデー
タ561がメモリ551内に存在すると、典型的なアプ
リケーションサーバプロセス531は、データ561、
560の2つの片をコピーして単一のバッファ内に連結
し、そのデータを中間プロトコルプロセス532へコピ
ー転送する。しかしながら本発明によれば、アプリケー
ションサーバプロセス531はそのようにはせず、デー
タ560を指し示すグローバルポインタ及びそのアプリ
ケーションに特定のデータ562を指し示す別のグロー
バルポインタを中間プロトコルプロセス532に渡す。
実際には、アプリケーションサーバプロセス531は、
物理的に隣接していないデータ561、560のブロッ
クを指し示すグローバルポインタを一緒に連鎖(チェー
ニング)することによって、論理的に(即ち、仮想の)
隣接したメモリのブロックを作成する。(事実、データ
561、560は、物理的に分離したDSS内に位置し
ていて物理的には隣接していない。)アプリケーション
サーバプロセス531は、このポインタのチェーンを中
間プロトコルプロセス532に渡すのである。
【0031】中間プロトコルプロセス532自体は、デ
ータ561、560をそれ自体の関連メモリ552内へ
コピーすることを見合せる。その代わりに、プロセス5
32は、データ561、560を指し示す2つのグロー
バルポインタを、中間プロトコルヘッダデータ562を
指し示す第3のグローバルポインタと共に、TCP/I
Pプロセス533に渡す。それによって中間プロトコル
プロセス532は、データ561、560を検索するの
に必要なトランスネットワーク及びプロセッサ間のコピ
ーイングを回避している。プロセス532は、データを
ネットワークドライババッファから副処理シーケンス5
10のオペレーティングシステムへ、更に中間プロトコ
ルプロセス532のメモリ空間内へ移動させるのに必要
なコピーイングをも回避する。
【0032】TCP/IPプロトコルを処理するために
は、論理的に隣接するデータを伝送のためにパケットサ
イズ化したチャンク( chunk ) に分割し、各パケットに
はそれ自体のTCP/IPヘッダを前置する必要があ
る。TCP/IPプロセス533は、Tネットポインタ
のチェーンを処理する。チェーンを歩きながらTCP/
IPプロセス533は、論理的に隣接するデータ56
2、561、560内のデータの第1のパケットサイズ
のチャンクのためのTCP/IPヘッダ563aを作成
し、データ562、561、560内の第2のチャンク
のためのTCP/IPヘッダ563bを作成し、、デー
タ562、561、560内のデータの最後のチャンク
のための最後のN番目のTCP/IPヘッダ563nを
作成する。これらのTCP/IPヘッダはデータ56
2、561、560の間に挿入しなければならないか
ら、TCP/IPプロセス533はデータ562、56
1、560を指し示すグローバルポインタをTCP/I
Pパケットよりは大きくないデータを指し示す一連のポ
インタに変換しなければならない。各グローバルポイン
タは、その起点(オリジン)のDSSのアイデンティテ
ィのアドレス、及びそのアドレスに位置するデータのサ
イズを含んでいる。562、561、560を指し示す
グローバルポインタを、一連のパケットサイズのデータ
に変換することに関しては後述する。これによりTCP
/IPプロセス533は、データ562、561、56
0のパケットを指し示すこの新しい一連の変換されたグ
ローバルポインタを渡して、TCP/IPヘッダ563
a、563b、、563nを散在させることができるよ
うになる。
【0033】中間プロトコルデータ562、アプリケー
ションに特定のデータ561、及びディスクデータ56
0の第1の部分560’が一緒になって第1のパケット
を形成しているものとする。またディスクデータ560
の第2の部分560”が第2のパケットを構成している
ものとする。最後に、ディスクデータ560の最後の部
分560''' が伝送されるデータの最後のパケットを形
成しているものとする。TCP/IPプロセス533
は、TCP/IPヘッダデータ563a、中間プロトコ
ルヘッダデータ562、アプリケーションに特定のデー
タ561、ディスクデータ560’、TCP/IPヘッ
ダデータ563b、ディスクデータ560”、、TCP
/IPヘッダデータ563n、ディスクデータ56
0''' を指し示すグローバルポインタのチェーンをAT
Mコントローラ570へ渡す。
【0034】ATMコントローラ570のプログラミン
グ及びシステム500の動的な状態に依存する時点に、
ATMコントローラ570は、TCP/IPプロセス5
33から受信したグローバルポインタのチェーンを通っ
て歩き、実際のデータ563a、562、561、56
0’、563b、560”、、563n、560'''を
そのメモリ555内へ取り込む。ATMコントローラ5
70は、TCP/IPプロトコル副処理システム513
からTCP/IPヘッダデータ563a、563b、、
563nを、中間プロトコル副処理システム512のメ
モリ552から中間プロトコルヘッダ562を、アプリ
ケーションサーバ副処理システム511のメモリ551
からアプリケーションに特定のデータ561を、そして
グローバルメモリ580からディスクデータ560’、
560”、、及び560''' を取り込む。
【0035】要求されたデータの全てをその物理的メモ
リ内に有するATMコントローラ570はそれらのデー
タを伝送する。アプリケーションデータ561、中間プ
ロトコルヘッダデータ562、及びTCP/IPプロト
コルヘッダデータ563の各々のコピーイングが1回だ
け存在していることに注目されたい。ディスクデータは
2回コピーされているが、ディスクコントローラ540
からグローバルメモリ580へのデータ560のコピー
イングは厳密にいえば必要ではない。従来の技術によれ
ば、システム500と同一のハードウェア及びデータの
流れでは、アプリケーションデータ561は少なくとも
3回はコピーされ、中間プロトコルヘッダデータ562
は2回コピーされ、そしてディスクデータ560は6回
コピーされていた。ディスクデータ560が大きい(説
明しているムービーオンデマンドの場合のように)か、
または中間プロトコル副処理システムの数が大きいよう
な状況では、コピーイングの回数を減らすことは重大な
節約になる。これにより、このようなシステムが有して
いるメモリ隘路問題を伴うことなく、コストを共用メモ
リMPPシステムのそれに接近させることができる。
【0036】データ構造 本発明のリファレンスによるデータI/Oを達成するた
めに、好ましい実施例に使用されているデータ構造及び
プロトコルを以下に説明する。先ず、データシンク/ソ
ース(DSS)内のデータを指し示すリファレンスまた
はポインタが、ネットワークだけによってDSSに接続
されるデバイス上のプロセスを意味することができるよ
うにするために、ネットワークにまたがるDSSに特定
のアドレスを認識するための計画を実現しなければなら
ない。説明しているリファレンスによるデータI/O計
画では、これらのアドレスをグローバルアドレスと呼
ぶ。一実施例では、グローバルアドレスは、(1)ネッ
トワークDSSのID、(2)そのDSSによって認識
されるアドレスの組合わせである。ネットワークDSS
のIDは、ネットワーク内のDSSとして機能している
全てのデバイスの間で独自のものである。
【0037】この実施例では、特定のDSSによって認
識されるアドレスは、その特定のDSSのアドレス指定
計画に特定である。DSSは、仮想または物理的グロー
バルアドレスを維持することができる。例えば、ディス
クコントローラ540は、多分そのメモリ540に物理
的アドレスを維持している。グローバルアドレスが、あ
るプロセッサの仮想アドレス空間内に割当てられている
のか、またはオペレーティングシステムレベルグローバ
ルQIOドライバの実アドレス空間内に割当てられてい
るのかに依存して、副処理システムはアドレスを仮想空
間内に、または実空間内に維持することができる。グロ
ーバルアドレスをQIOドライバの実アドレス空間内に
維持すると、ハードウェア及びソフトウェアトランザク
ション費用が回避される。
【0038】グローバルアドレスは、ネットワークにさ
れたデバイス間で渡されるグローバルQIOデータ構造
内に組み込まれる。一実施例では、主グローバルQIO
データ構造は、待ち行列、メッセージ、メッセージディ
スクリプタ、及びバッファディスクリプタである。図7
に、本発明の実施例によるグローバルQIO待ち行列6
00を示す。待ち行列600は、ネットワーク上の各D
SSのメモリ内に存在する。待ち行列600は、型60
1、人が読むことができる待ち行列名602、最初のメ
ッセージポインタ604、最後のメッセージポインタ6
06、メッセージカウント608、待ち行列属性61
0、作成者プロセスID 612、ユーザが限定した
「()入手」機能を指し示すポインタ614、ユーザが
限定した「()配置」機能を指し示すポインタ616、
及びユーザが限定した制御ブロックを指し示すポインタ
618を含んでいる。
【0039】ディスクリプタの型601は、このデータ
構造が待ち行列であることを指示する。待ち行列名60
2は、例えば「インバウンドグローバルQIO」のよう
な待ち行列名である。最初のメッセージポインタ604
は、二重にリンクされたメッセージ620のリスト内の
最初のメッセージの最初のメッセージディスクリプタ6
22を指し示し、最後のメッセージポインタ606は、
二重にリンクされたメッセージ620のリスト内の最後
のメッセージの最初のメッセージディスクリプタ624
を指し示す。メッセージカウント608は、二重にリン
クされたリスト620内のメッセージの数を保持する。
待ち行列属性610は、待ち行列の属性、例えばそのイ
ンバウンド待ち行列上にデータが配置された時にプロセ
スを目覚めさせるべきかどうか、及びグローバルQIO
ライブラリ「()メッセージ入手」機能の前に、後に、
またはその代わりにユーザが限定した「()入手」機能
を呼出すかどうか、を含む。(グローバルQIOライブ
ラリ機能に関しては後述する。)作成者プロセスID6
12は、その待ち行列を作り出したプロセスのIDであ
る。グローバルQIOライブラリは、ある待ち行列が空
でなくなった時にこのプロセスを目覚めさせることがで
きる。
【0040】ポインタ614は、あるプロセスがその待
ち行列600からあるメッセージを入手するためにグロ
ーバルQIOライブラリ「メッセージ()入手」機能を
呼出すと実行されるユーザが限定した「()入手」機能
を指し示す。ユーザが限定した「()入手」機能によ
り、グローバルQIOライブラリにおける標準「入手」
機能に加えて、またはそれの代わりに、ユーザが限定し
た機能を実行させることが可能になる。例えば、もし待
ち行列600がI/Oドライバのためのインバウンド待
ち行列であれば、ユーザが限定した「()入手」機能は
そのドライバによってI/O動作を開始することができ
る。ドライバは多くの未解決I/Oを追跡することも、
また「入手」が実行された時にこの数を調整することも
できる。別の例として、「()入手」は、その待ち行列
を作り出したプロセスによって準備(ハウスキーピン
グ)ルーチンを実行させることができる。
【0041】ポインタ616は、ポインタ614の機能
と並行する手法で処理されるユーザが限定した「()配
置」機能を指し示す。例えば、LANドライバに関連す
る待ち行列では、「()配置」機能は移送レイヤルーチ
ンを呼出して情報をTネット520へ出力することがで
きる。ポインタ618は、ユーザが限定した制御ブロッ
クを指し示す。典型的には、この制御ブロックは、ユー
ザが限定した「()配置」及び「()入手」機能の一方
または両方によって必要とされる。例えば、制御ブロッ
クは、情報が待ち行列システムに送られる時に情報を出
力するドライバのためのものであってよい。図8に、図
7の二重にリンクされたリスト620内に記憶されてい
るメッセージ700のフォーマットを示す。メッセージ
は、リンクされたメッセージディスクリプタからなり、
図7のリスト620内へリンクされる。図8は、リンク
されたリスト内にポインタ714によって結合されてメ
ッセージを形成するメッセージディスクリプタ622及
び622’を示している。メッセージディスクリプタ
は、ディスクリプタ型704、次のメッセージポインタ
710、先行メッセージポインタ712、継続メッセー
ジのメッセージディスクリプタポインタ714、バッフ
ァディスクリプタポインタ716、ユーザデータ読み出
しポインタ718、ユーザデータ書き込みポインタ72
0、及び戻り待ち行列ポインタ722を含む。メッセー
ジディスクリプタは、ポインタ718、720にそれぞ
れ関連する長さ719、721をも含む。
【0042】図8においては、メッセージディスクリプ
タ622及び622’が単一のメッセージを形成してい
る。ディスクリプタ型704は、データ構造がメッセー
ジディスクリプタであることを指示する。次のメッセー
ジポインタ710は、二重にリンクされたリスト620
内に記憶されている次のメッセージの最初のメッセージ
ディスクリプタ624を指し示す。先行メッセージポイ
ンタ712は、二重にリンクされたリスト620内に記
憶されている先行メッセージの最初のメッセージディス
クリプタを指し示す。継続メッセージのメッセージディ
スクリプタポインタ714は、現メッセージ内の次のメ
ッセージディスクリプタ622を指し示す。分散したデ
ータを表すには複数のメッセージディスクリプタが必要
であり、以下に説明するように単一のメッセージは、異
なる位置にあるデータを指し示す複数のメッセージディ
スクリプタを含むことができる。バッファディスクリプ
タポインタ716は、バッファディスクリプタ730を
指し示す。バッファディスクリプタ730はデータバッ
ファ740を指し示す。
【0043】ユーザデータ読み出しポインタ718はバ
ッファ740を指し示すポインタであり、データバッフ
ァ740において読み出しを開始すべき(または、停止
した)ことを指示する。同様に、ユーザデータ書き込み
ポインタ720はバッファ740を指し示すポインタで
あり、データバッファ740において書き込みを開始す
べき(または、停止した)ことを指示する。長さ71
9、721はそれぞれ、読み出しポインタ718から読
み出し、または書き込みポインタ720へ書き込むこと
ができるデータの最大量を指示する。戻り待ち行列ポイ
ンタ722は、戻り待ち行列(図示してない)を指し示
す。グローバルQIOライブラリルーチンを介してメッ
セージディスクリプタが戻された時(即ち、メッセージ
の処理が完了した時)戻されたメッセージディスクリプ
タは、もし戻り待ち行列が指定されていれば、戻り待ち
行列上に配置される。例えば、プロセスは送ったメッセ
ージをカウントする必要があるかも知れない。待ち行列
600から除かれた時にメッセージディスクリプタ62
2を自由メッセージプール内へ配置する代わりに、ある
プロセスによるさらなる処理のために、メッセージディ
スクリプタ622は戻り待ち行列上に配置される。メッ
セージ700内の他のメッセージディスクリプタ62
2’は、異なる副戻り待ち行列ポインタ722’、また
は「空」(ヌル)戻り待ち行列ポインタを有することが
できる。これらの副戻り待ち行列ポインタは、直ぐにア
プリケーションに従ってプロセスによって処理される。
メッセージディスクリプタのための戻り待ち行列は通常
は、その現在の使用のためにメッセージディスクリプタ
を始めに割当てたDSS上にある。
【0044】図9に、本発明の実施例によるバッファデ
ィスクリプタ730のフォーマットを示す。バッファデ
ィスクリプタ730は、図8のメッセージ700の一部
である。ディスクリプタ型802は、データ構造がバッ
ファディスクリプタであることを指示する。バッファデ
ィスクリプタ730は、データバッファベースポインタ
808、データバッファ限界ポインタ810、及びリフ
ァレンスカウント812を含む。データバッファベース
ポインタ808は、メモリ内のデータバッファ840の
ベースを指し示す。データバッファ限界ポインタ810
は、データバッファ840の終わりを指し示す。リファ
レンスカウント812は、特定のバッファディスクリプ
タ730を指し示すバッファディスクリプタポインタ7
16の数をカウントする。
【0045】待ち行列600は、それを作成したDSS
に対してローカルである。待ち行列600データ構造
は、別のネットワークされたDSSとは連絡しない。従
って、各ポインタ604、606、614、616、及
び618は、グローバルアドレスではなく、ローカルア
ドレスである。しかしながら、メッセージディスクリプ
タ622はネットワークされたDSSの間に渡される。
従って、バッファディスクリプタポインタ716、及び
ユーザデータ読み出しポインタ718及び書き込みポイ
ンタ720は、それらを生成したDSSによって解釈さ
れるグローバルポインタである。当分野に精通していれ
ば理解されるように、メッセージディスクリプタ622
がネットワークされたデバイス間で連絡される場合、メ
ッセージディスクリプタ622の若干のフィールドを省
略することができる。これらのフィールドは、例えば、
次のメッセージポインタ710、先行メッセージポイン
タ712、及び継続メッセージのメッセージディスクリ
プタポインタ714を含む。受信中のネットワークされ
たデバイス上のグローバルQIOライブラリは、待ち行
列上のメッセージにメッセージディスクリプタを配置す
る際にこれらのフィールドを生成することができる。こ
れらのフィールドを有していないメッセージディスクリ
プタを、メッセージディスクリプタのグローバル形と名
付け、型704はこれらの省略を反映するように変更す
ることができる。
【0046】反対に、DSS間で連絡する時に、バッフ
ァディスクリプタポインタ716、データ読み出しポイ
ンタ718、書き込みポインタ720、対応する長さフ
ィールド719、721、戻り待ち行列ポインタ72
2、及び検査合計724をメッセージディスクリプタ6
22のグローバル形に含ませる。バッファディスクリプ
タ730は、ネットワークにまたがって連絡されること
はない。データバッファベースポインタ808は、デー
タバッファ740の読み出しまたは書き込みには無関係
である。読み出し及び書き込みポインタは、メッセージ
ディスクリプタ622のユーザデータ読み出しポインタ
718及び書き込みポインタ720内に供給される。同
様に、データバッファ限界ポインタ812は、ネットワ
ークにまたがるバッファの読み出し及び書き込みには無
関係である。以下に説明するプロトコルに従って、完全
挙動の読み出しまたは書き込みプロセスは、指定された
長さのデータバッファ740を要求し、そのデータバッ
ファ740の完全挙動のアロケータはユーザデータ読み
出しポインタ718または書き込みポインタ720が少
なくとも指定された長さであるデータバッファ740の
セグメントを指し示すことを保証する。(指定された長
さがメッセージディスクリプタのチェーンにまたがって
分散している場合には、完全挙動のアロケータはユーザ
データ読み出しポインタのチェーンが、一緒になって少
なくとも指定された長さであるデータバッファ740の
セグメントを指し示すことを保証する。)
【0047】プロトコル メッセージをベースとする連絡 システム500の何れか2つの構成要素間(例えば、第
1のSPSと第2のSPSとの間、またはSPSとグロ
ーバルメモリとの間)の連絡は、パケット内に含まれる
低レベルメモリを形成して伝送することによって実現さ
れる。(低レベルメモリは、説明中のグローバルQIO
システムのメモリとは異なる。)これらのパケットは、
システムエリアネットワーク構造、即ちTネット520
によって送信(またはソース)構成要素から行先構成要
素まで伝送される。システム構成要素、即ち、ルータ1
4及びインタフェースユニット24(BTE DMAエ
ンジンを含む)が、どのように共働してこの連絡を達成
するかは、米国特許出願第 08/485,217 号に詳細開示さ
れている。本明細書では、読み出し要求を伝送するには
HACパケットが使用され、書き込みデータの連絡には
HADCパケットが使用されることを知れば十分であ
る。
【0048】グローバルQIO グローバルQIOライブラリは、以下のソフトウェアエ
ントリ点を含む。各エントリ点に関しては後述する。 * グローバルQIO待ち行列作成 * グローバルQIO待ち行列削除 * メッセージディスクリプタ入手 * メッセージディスクリプタ複製 * メッセージ戻し * メッセージ複製 * グローバルQIO待ち行列からメッセージを入手 * グローバルQIO待ち行列上へメッセージを配置 プロセスは、「待ち行列()作成」手順を呼出し、グロ
ーバルQIOライブラリを有する名付けられた待ち行列
を登録し、インバウンド及びアウトバウンド待ち行列を
作成する。従って、呼出しプロセスはポートの名前を渡
し、「待ち行列()作成」ルーチンはそのポートのため
のインバウンド及びアウトバウンド待ち行列の待ち行列
ID、及びモジュールIDを戻す。プロセスが「待ち行
列()作成」ルーチンの呼出しに成功すると、プロセス
は次に「メッセージ()配置」ルーチン及び「メッセー
ジ()入手」ルーチン(何れも後述)を呼出す。
【0049】相応して、プロセスは「待ち行列()削
除」グローバルQIOライブラリルーチンを呼出すこと
ができる。この機能は、グローバルQIOライブラリか
ら登録を抹消する。プロセスは、インバウンド及びアウ
トバウンド待ち行列の待ち行列IDを登録抹消するよう
に渡す。登録を抹消した後は、プロセスは最早、識別さ
れていない待ち行列を介して、アウトバウンドメッセー
ジを送ったり、またはインバウンドメッセージを受けた
りすることはできない。「メッセージ()配置」ルーチ
ンは、指定されたメッセージを指定された待ち行列上へ
配置する。メッセージ及び待ち行列が同一のDSS上に
ある場合には、「メッセージ()配置」は殆ど付録Aに
記載されているように動作する。メッセージ及び待ち行
列が同一のDSS上にない場合には、低レベルメッセー
ジパケットシステムが呼出され、指定されたメッセージ
のグローバル形をメッセージのDSSから待ち行列のD
SSへ転送する。メッセージは始めのDSS上で自由に
なる。
【0050】「メッセージディスクリプタ()入手」エ
ントリ点は、(少なくとも)指定された長さのデータバ
ッファを指し示すデータバッファポインタを含む、メッ
セージディスクリプタを指し示すポインタを戻す。従っ
て、「メッセージディスクリプタ()入手」エントリ点
は、引き数としてモジュールID及びデータバッファ長
を取り、ポインタをメッセージディスクリプタへ戻す。
実際には、「メッセージディスクリプタ()入手」を呼
出しているDSSまたはプロセスはグローバルQIOラ
イブラリを要求し、指定された長さのデータバッファを
割当て、新たに割当てられたデータバッファへの点に初
期化されたバッファディスクリプタを割当て、そして新
たに割当てられたバッファディスクリプタへの点と、デ
ータバッファ内の書き込み位置への点とに初期化された
メッセージディスクリプタを割当てる。
【0051】(現在使用されているデータバッファが、
その後の「メッセージディスクリプタ()入手」要求を
満足するのに十分に大きい未割当て部分を有している場
合には、そのデータバッファのその(未割当て部分)を
使用して、その多分関係のない「メッセージディスクリ
プタ()入手」要求を満足させることができる。) 好ましい実施例では、自由メッセージディスクリプタ
は、自由メッセージディスクリプタリスト上に維持され
ている。このような自由リストの管理は公知である。
「メッセージディスクリプタ()複製」ルーチンは、指
定されたメッセージディスクリプタの複製を戻す。従っ
て、「メッセージディスクリプタ()複製」ルーチン
は、引き数としてモジュールIDと、メッセージディス
クリプタを指し示すポインタとを取ってメッセージディ
スクリプタを指し示すポインタを戻す。戻されたメッセ
ージディスクリプタは、指定された始めのメッセージデ
ィスクリプタと同じバッファディスクリプタ及びデータ
を指し示し、そのバッファディスクリプタのリファレン
スカウントを、複製による1だけ増加させる。複製メッ
セージディスクリプタは自由メッセージディスクリプタ
リストから入手される。
【0052】基礎となるバッファディスクリプタのリフ
ァレンスカウントは更新しなければならない。この更新
は、メッセージディスクリプタの原点であるDSSにリ
ファレンスカウントを更新するように要求することによ
って、またはメッセージディスクリプタをその原点のD
SS上へ戻して配置し、そのDSSにメッセージディス
クリプタを複製し、元に戻して配置し、そして複製する
ことによって達成することができる。グローバルQIO
ライブラリは、対応する「メッセージディスクリプ
タ()戻し」ルーチンを含んでいる。このルーチンは、
呼出し中のDSS上のメッセージディスクリプタを(そ
のメッセージディスクリプタを現在の使用のために始め
に割当てた)DSS上のメッセージディスクリプタの自
由リストへ移動させる。しかしながら、もしそのメッセ
ージディスクリプタの戻り待ち行列ポインタが「空」で
なければ、ルーチンはそのメッセージディスクリプタを
指示された戻り待ち行列へ戻す。「メッセージディスク
リプタ()戻し」ルーチンは引き数として、モジュール
IDと、戻すべきメッセージディスクリプタを指し示す
ポインタとを取る。
【0053】発信DSS上では、バッファディスクリプ
タのリファレンスカウントが1だけデクレメントされ
る。それは、1つ少ないメッセージディスクリプタがそ
のバッファディスクリプタを指し示しているからであ
る。もしリファレンスカウントが0に達していれば、デ
ータバッファディスクリプタは自由データバッファのプ
ールへ戻される。(以下の「データバッファ()戻り」
をリファレンスされたい。) 「メッセージ()戻し」ルーチンは、「メッセージディ
スクリプタ戻し」ルーチンの再帰的バージョンである。
「メッセージ戻し」は、識別されたメッセージディスク
リプタが先頭に立っているメッセージディスクリプタの
チェーンを歩き、ヘッドメッセージディスクリプタを何
れかの継続メッセージディスクリプタからアンリンクし
(即ち、ヘッドメッセージディスクリプタの継続メッセ
ージのメッセージディスクリプタポインタを空にし)、
継続メッセージのメッセージディスクリプタがそれ以上
存在しなくなるまでヘッドメッセージディスクリプタを
適切な戻り待ち行列へ戻す。
【0054】「メッセージ()複製」ルーチンは、メッ
セージ全体を複製する。「メッセージ複製」は引き数と
してモジュールIDと、メッセージのヘッドメッセージ
ディスクリプタを指し示すポインタとを取り、複製メッ
セージ構造のヘッドメッセージディスクリプタを指し示
すポインタを戻す。メッセージ全体は、元のメッセージ
のヘッドメッセージディスクリプタから開始し、それに
続く継続メッセージのメッセージディスクリプタポイン
タによって連鎖されている全てのメッセージディスクリ
プタが複製される(但し、データを除く)。メッセージ
ディスクリプタの複製を考慮して、各元のメッセージデ
ィスクリプタによって指し示されるバッファディスクリ
プタのリファレンスカウントが1だけインクリメントさ
れる。プロセッサ内シナリオにおけるQIOライブラリ
に関する仕様書である付録Aを読めば、これらのユニプ
ロセッサQIOルーチンのグローバルQIOライブラリ
への適用、及び付録Aに詳細記述されている実施例を組
み込むためのグローバルQIO計画の延長は、ルーティ
ニアにも容易に理解されよう。詳しく述べれば付録A
は、ドライバの登録及び登録抹消、メッセージディスク
リプタの入手及び複製、メッセージまたはメッセージデ
ィスクリプタの戻し、メッセージの複製、及びメッセー
ジの待ち行列からの入手及び該待ち行列上への配置に関
する付加的な詳細を提供している。付録Aは、ドライバ
情報の入手、ある事象のポスティング、モジュールID
の作成及び削除、あるモジュールの限界の設定、プール
の入手及び配置、ある待ち行列内のメッセージディスク
リプタのカウンティング、待ち行列の作成及び削除、セ
グメントの取付け、IOPRM空間の入手、及びIOP
RM空間の戻しに関する詳細をも提供している。
【0055】メッセージディスクリプタ目的 別のプロトコルはメッセージディスクリプタの特徴付け
を含む。一実施例では、目的向きプログラミングの点か
ら、メッセージディスクリプタのグローバル形が目的で
ある。目的の操作には、所定の機能、方法(C++語で
の)、またはインタフェース(COM/OLE語での)
だけが使用できる。メッセージディスクリプタ及びそれ
らが含むグローバルポインタへのアクセスを制限するこ
とは、Tネット中のメモリの変造に対する付加的な安全
尺度である。一実施例では、メッセージまたはメッセー
ジディスクリプタを操作するのに次の機能が使用可能で
ある。 * メッセージによって指し示されているデータのサイ
ズを戻す(「メッセージサイズ()戻し)」、 * メッセージディスクリプタによって指し示されてい
るデータのサイズを戻す(「メッセージディスクリプタ
サイズ()戻し)」、 * メッセージディスクリプタを複数のメッセージディ
スクリプタに分割する(「メッセージディスクリプ
タ()分割」) 「メッセージディスクリプタ()分割」は、引き数とし
てメッセージディスクリプタ及びデータバッファサイズ
のアレイまたはリストを取る。ルーチンは、同一バッフ
ァディスクリプタを有しているがデータバッファサイズ
によって指定されたオフセット及び長さを有している新
たに割当てられたメッセージディスクリプタのアレイま
たはリストを戻す。これらの新たに割当てられたメッセ
ージディスクリプタは、ユーザによって与えられた仕様
に適合するように調整されたユーザデータ読み出しポイ
ンタ及び長さを用いて「メッセージディスクリプタ()
複製」を分離して呼出した結果である。従って元の、及
び全ての複製メッセージディスクリプタは同一の構成要
素バッファディスクリプタを有し、この構成要素バッフ
ァディスクリプタのリファレンスカウントは相応して影
響を受けている。
【0056】例えば、もしmd ptrが 100KBのデ
ータのためのメッセージディスクリプタであるものとす
れば、呼出し、「メッセージディスクリプタ(md
tr,15, 50, 35, 0 )分割」は、3つのメッセージデ
ィスクリプタのアレイを戻す。第1のメッセージディス
クリプタはデータの最初の 15 バイトを指し示すユーザ
読み出しデータポインタを有し、第2のメッセージディ
スクリプタはデータの次の 50 バイトを指し示すユーザ
読み出しデータポインタを有し、そして第3のメッセー
ジディスクリプタはデータバッファの最後の 35 バイト
を指し示すユーザ読み出しデータポインタを有してい
る。勿論、関連長さフィールドは相応にセットされてい
る。4つのメッセージディスクリプタは全て同一のデー
タバッファを指し示しているので、バッファディスクリ
プタのリファレンスカウントは3だけ、例えば1から4
へインクリメントされる。
【0057】最後に、「()読み出しのための変換」ル
ーチンが設けられており、指定されたメッセージディス
クリプタ内のグローバルポインタによって指し示されて
いる実際のデータを読み出すために、指定されたメッセ
ージディスクリプタを、呼出しDSSのルータ、インタ
フェースユニット、及びBTEが必要とするどのような
形にも変換して戻すようになっている。データは原点の
DSSから、ルーチンの呼者であるDSS内へ読み出さ
れる(対応する「()書き込みのための変換」ルーチン
が存在することができる。)再びムービーオンデマンドシナリオ 先に説明したムービーオンデマンドシナリオにおいて説
明したデータ構造及びプロトコルの使用を以下に説明す
る。グローバルQIOデータ構造を1つのDSSから別
のDSSへ移動させるとすれば、前述した低レベルのメ
ッセージをベースとする連絡システムを使用してそのデ
ータ構造をDSS間で(典型的には「メッセージ()配
置」を使用して)連絡することは直ちに理解されよう。
【0058】再び、アプリケーションサーバプロセス5
31が、ディスクからデータ560を検索するためにデ
ィスクプロセス530を使用し、データ560をユーザ
インタフェースへ転送するために中間プロセス532及
びTCP/IP及びATMドライバプロセス533を使
用するものとする。また、アプリケーションプロセス5
31は、あるアプリケーションに特定のデータ561を
アウトバウンドデータ560の始めに付加するものとす
る。データ560のサイズは、例えば 100キロバイト
(KB)である。リファレンスによるデータI/O計画
に関与している各DSSは、グローバルQIOライブラ
リを有している。グローバルI/Oメモリ580、ディ
スクプロセスSPS 510、アプリケーションサーバ
プロセス511、中間プロトコルプロセスSPS 51
2、TCP/IP及びATMドライバSPS 513、
及びATMコントローラ570は、各々その関与グロー
バルQIOライブラリの「待ち行列()作成」ルーチン
を呼出し、受信グローバルQIOメモリのためのインバ
ウンド待ち行列を作成する。このサービスは、例えば各
DSS上の「データ I/O」と名付けられる。これによ
り、リファレンスによるデータI/Oに関与しているT
ネット上のどのDSSも、これもリファレンスによるデ
ータI/Oに関与しているTネット上の他のどのDSS
のQIO待ち行列をも操作することができる。
【0059】更に、ディスクプロセス530は、そのグ
ローバルQIOライブラリルーチン「待ち行列()作
成」を呼出して受信ディスクワーク( diskwork )要求の
ためのインバウンド及びアウトバウンド待ち行列を作成
する。このサービスを、例えば「ディスクワーク」と名
付ける。これによりディスクプロセスSPS 510上
の他のどのプロセスも、及びTネット上のどのDSS
も、ディスクプロセス530に待ち行列ワーク要求を指
令して、ディスクコントローラ540に関連しているデ
ィスクを読み出し、またはディスクへ書き込むことが可
能になる。ディスクプロセス530が作成したグローバ
ルQIO待ち行列を使用するために探索中のプロセスま
たはDSSは、グローバルQIOの「ディスクワーク」
名を知る。アプリケーションサーバプロセス531は、
ディスクワーク要求をインバウンド「ディスクワーク」
グローバルQIO待ち行列上で待合わせることによっ
て、最終的にディスクプロセス530のワーク要求を作
る。このワーク要求はデータ560のためのものであ
る。しかしながら、アプリケーションサーバプロセス5
31は、先ず、データ560を受信するためにそれ自
体、またはディスクプロセス530の何れをデータバッ
ファに割当てるのかを決定する。一方、もしアプリケー
ションプロセス531がデータバッファに割当てられて
いれば、アプリケーションプロセス531は、例えばグ
ローバルI/Oメモリ580上に 100KBのデータ56
0を配置することを決定する(プログラマがどのような
規則を設けようとも)。アプリケーションプロセス53
1は、グローバルI/Oメモリ580の「データ I/
O」グローバルQIO待ち行列上でのグローバルI/O
メモリ580の「メッセージディスクリプタ()入手」
の実行要求を待合わせるために、その「メッセージ()
配置」を実行する。それによってアプリケーションプロ
セス531は、グローバルI/Oメモリメッセージディ
スクリプタを 100KBサイズのバッファに要求する。
【0060】グローバルI/Oメモリ580の「データ
I/O」ドライバは、「メッセージ()入手」を実行
してアプリケーションプロセス531の要求を検索し、
最終的には「メッセージディスクリプタ()入手」を実
行して要求された割当てを実行する。アプリケーション
サーバプロセス531の要求を完了させると、グローバ
ルI/Oメモリ580の「データ I/O」ドライバ
は、「メッセージ()配置」を実行して 100KBバッフ
ァを指し示す新たに割振られたメッセージディスクリプ
タを戻す。「メッセージ()配置」は、メッセージディ
スクリプタ(のグローバル形)のコピーをインバウンド
「データ I/O」グローバルQIO待ち行列上へ配置
する。アプリケーションプロセス531は、「メッセー
ジ入手」を実行して新たに割当てられたメッセージディ
スクリプタのコピーを検索し、次いでデータバッファを
指し示すユーザデータ書き込みグローバルポインタを、
データ560のためのそのワーク要求内に組み込むこと
ができる。このワーク要求はディスクプロセス530へ
伝送される。
【0061】簿記に関していえば、複数のDSSにまた
がって実行される「メッセージ()配置」は、メッセー
ジのコピー(のグローバル形)を受信DSSへ送って
「メッセージ()戻し」を実行することを呼出しDSS
に要求する。受信DSS自体は、メッセージディスクリ
プタを割当てて送信されたコピーを受信し、メッセージ
ディスクリプタを行先グローバルQIO待ち行列上に配
置する。実際には、メッセージディスクリプタは送信D
SS上の待ち行列から受信DSS上の待ち行列へ移動さ
れる。従って、新しいメッセージのバッファディスクリ
プタのためのリファレンスカウントは、それらが送信D
SS上にあった時と同一、即ち1である。同様にして、
「メッセージディスクリプタ()入手」呼出しによって
割当てられたメッセージディスクリプタは、グローバル
I/Oメモリ580からアプリケーションサーバプロセ
スSPS 511へ転送される。そのメモリディスクリ
プタのバッファディスクリプタのリファレンスカウント
も1である。
【0062】一方、もしディスクプロセス530がバッ
ファを割当てるのであれば、アプリケーションプロセス
531は、メッセージパケット型またはワーク要求デー
タ構造の何れかであることができ、ディスクプロセス5
30がその等価手順を使用してデータバッファを割当て
るものであることを指示する。アプリケーションプロセ
ス531は、例えば、「空」または0のような所定の値
を指し示すグローバルTネットポインタによって、バッ
ファを割当てるようにディスクプロセス530に指令す
ることができる。データ560の行先のためのグローバ
ルアドレスを含むメッセージディスクリプタを用いて、
ディスクプロセス530はディスクコントローラ540
に、データ560をディスクコントローラ540のディ
スクプラッタからグローバルI/Oメモリ580のメモ
リ556へ転送するように命令する。ディスクコントロ
ーラ540からグローバルI/Oメモリ580へのデー
タ560の転送は、リファレンスによるデータI/Oで
はない。データ560は、必要に応じてHDACパケッ
トを使用してディスクコントローラ540からグローバ
ルI/Oメモリ580へ実際にコピーされる。転送の結
果としてデータ560のコピーは、転送以前に存在して
いたよりも1つ多くなる。普通のデータ転送では、ディ
スクプロセス530がグローバルポインタをリファレン
スせず(デレファレンス)に実際のアドレスを発生し、
次いでディスクプロセス530がディスクコントローラ
540へのコマンドシーケンス内にアドレスを組み込
み、ディスクコントローラ540がデータ560をグロ
ーバルI/Oメモリ580へ転送できるようにする必要
がある。この再リファレンスは、上述した「()書き込
みのための変換」によって実行される。
【0063】転送が完了するとディスクコントローラ5
80は、ディスクプロセス530(好ましくはメッセー
ジをベースとする手法で)に割り込む。ディスクプロセ
ス530は割り込みを処理し、もし必要ならばデータ5
60(を含むデータバッファ)へのグローバルアドレス
を含むアプリケーションサーバプロセス531のグロー
バルQIO待ち行列へ戻す応答を待合わせることによっ
て、アプリケーションサーバプロセス531へ戻す要求
を完了させる。これでアプリケーションサーバプロセス
531は、データ560を有するバッファをグローバル
アドレスによって指し示すバッファディスクリプタを含
むメッセージディスクリプタを有することになる。この
グローバルポインタはグローバルI/Oメモリ580上
で作成されたものであり、データ560はグローバルI
/Oメモリ580内に存在しているが、メモリディスク
リプタ自体はアプリケーションサーバSPS 511上
にある。
【0064】アプリケーションサーバ531は、そのア
プリケーションに特定のデータのためのメッセージディ
スクリプタを作成するために、先にその「メッセージデ
ィスクリプタ()入手」ルーチンを呼出し、そして関連
データバッファをアプリケーションに特定のデータ56
1で充填するために必要に応じてその処理を実行してい
る。それによりアプリケーションサーバプロセス531
は、2つのメッセージディスクリプタを一緒に連鎖させ
ることによってデータ561、560を結合している。
これらのメッセージディスクリプタは、チェーンのヘッ
ドのアプリケーションに特定のデータ561のためのメ
ッセージディスクリプタ、及びそれに続くデータ560
のためのメッセージディスクリプタである。アプリケー
ションに特定のデータメッセージディスクリプタは、ア
プリケーションに特定のデータ561のグローバルアド
レスを含んでいる。
【0065】アプリケーションサーバプロセス531の
機能が、アプリケーションに特定のデータ561を、種
々の時点に種々のディスクからプロセス531が検索す
る全ての映画クリップに前置することであるので、プロ
セス531がデータ561を指し示す元のメッセージデ
ィスクリプタを転送しないことが好ましい。(もし転送
すれば各映画クリップに前置するためにデータ561の
コピーを検索しなければならなくなる。)その代わりと
して、プロセス531は「メッセージディスクリプ
タ()複製」を呼出して、データ561を指し示すメッ
セージディスクリプタを複製する。そのメッセージディ
スクリプタのバッファディスクリプタのリファレンスカ
ウントが複製によって1だけインクリメントされ、例え
ば1から2にされる。
【0066】プロセス531は、データ560のための
メッセージディスクリプタの前にこのメッセージディス
クリプタの複製を連鎖させ、データ561、560を指
し示すメッセージを作成する。次いでプロセス531は
「メッセージ()配置」を実行してデータ561、56
0のメッセージを中間プロトコルSPS 512へ渡
す。前述したように、「メッセージ()配置」ルーチン
はメッセージ(及びその関連メッセージディスクリプタ
及びバッファディスクリプタ)を、アプリケーションサ
ーバSPS 511から中間プロトコルSPS 512
へ移動させる(それらのグローバルリファレンスポイン
タによって指し示されるデータは除く)。中間プロトコ
ルSPS 512上では、メッセージのバッファディス
クリプタのリファレンスカウントはアプリケーションサ
ーバ上にあった時のカウントと同一、即ちアプリケーシ
ョンに特定のデータメッセージディスクリプタの場合は
2であり、データ560メッセージディスクリプタの場
合は1である。
【0067】中間プロトコルプロセス532はそのプロ
トコルデータ562のためのメッセージディスクリプタ
を割当てるために先に「メッセージディスクリプタ()
入手」を呼出し、そして関連データバッファをデータ5
62で充填するために必要に応じてその処理を連絡して
いる。中間プロトコルプロセス532は、3つのメッセ
ージディスクリプタを一緒に連鎖させることによってデ
ータ562、561、560を結合している。これらの
メッセージディスクリプタは、チェーンのヘッドのプロ
トコルデータ562のためのメッセージディスクリプタ
のコピー、それに続くデータ561のためのメッセージ
ディスクリプタ(のコピー)、及びそれに続くデータ5
60のためのメッセージディスクリプタである。プロト
コルデータメッセージディスクリプタは中間プロトコル
データ562のグローバルアドレスを含み、複製メッセ
ージディスクリプタが転送のために割当てられている。
次いで中間プロトコルプロセスは「メッセージ()配
置」を実行し、データ562、561、560のメッセ
ージのメッセージディスクリプタ及びバッファディスク
リプタ(データ562、561、560自体は除く)を
SPS 513内のTCP/IP及びATMグローバル
待ち行列上へ渡す。
【0068】メッセージは、中間プロトコルPSP 5
12からTCP/IP及びATMSPS 513へ移動
する。SPS 513上のデータ562、561、56
0のためのバッファディスクリプタのリファレンスカウ
ントは、それぞれ2、2、及び1である。TCP/IP
プロセス533は3つのメッセージディスクリプタメッ
セージを取り、それをTCP/IPプロトコルのために
処理する。プロセス533は「メッセージサイズ()入
手」を呼び出してメッセージのサイズを計算し、そし
て、例えばこのメッセージを3つのTCP/IPパケッ
トに分割しなければならないことを理解する。第1のT
CP/IPパケットは、中間プロトコルヘッダデータ5
62、アプリケーションに特定のデータ561、及び映
画クリップデータの第1の部分560’を含む。第2の
パケットは、映画データの第2の部分560”を含み、
第3のパケットは映画データの残余560''' を含む。
プロセス533は、3つのTCP/IPヘッダ563
a、563b、563cを準備し、必要に応じて「メッ
セージディスクリプタ()入手」を3回呼出してメッセ
ージディスクリプタを割当てる。
【0069】プロセス533は「メッセージディスクリ
プタ()分割」をも実行し、データ560をパケット化
されたデータ560’、560”、及び560''' に分
割する。これでプロセス533は9つのメッセージディ
スクリプタによって指し示される6つのデータバッファ
を有することになる。これらの9つのメッセージディス
クリプタは、3つのTCP/IPヘッダ563a、56
3b、563c、1つの中間ヘッダ562、1つのアプ
リケーションヘッダ561、3つのデータチャンク56
0’、560”、560''' 、及び元のデータ560で
ある。データチャンク560、560’、560”、5
60''' は全て同一のバッファである。これでTCP/
IP及びATMドライバプロセス533は、これらのメ
ッセージディスクリプタを連鎖させて上述した3つのT
CP/IPパケットを発生し、3つのTCP/IPパケ
ットを連鎖させて以下のデータシーケンスを有するメッ
セージを発生させる。即ちTCP/IPヘッダ563
a、中間ヘッダ562、アプリケーションに特定のデー
タ561、データ560’、TCP/IPヘッダ563
b、データ561”、TCP/IPヘッダ563c、及
びデータ560'''である。(この新たに作成されたメ
ッセージ内にはデータ560自体のためのメッセージデ
ィスクリプタが現れていないことに注目されたい。)こ
れで、グローバルバッファ560のメッセージディスク
リプタのための元のバッファディスクリプタのリファレ
ンスカウントは5になる。ドライバプロセス533は
「メッセージ()配置」を使用して、この8つのメッセ
ージディスクリプタメッセージをATMコントローラ5
70へ転送する。
【0070】これでATMコントローラ570は、デー
タの伝送を開始する準備が整う。コントローラ570は
ディスクリプタのリストを歩き、実際のデータを各DS
Sから転送してデータを保持する。第1のパケットの4
つのメッセージディスクリプタの場合、データソース
は、TCP/IPドライバSPSメモリ553、中間プ
ロトコルSPSメモリ552、アプリケーションサーバ
SPSメモリ552、及びグローバルI/Oメモリ58
0である。ATMコントローラは各メモリディスクリプ
タに対して順番に「()読み出しのための変換」を呼出
してTネットにまたがる読み出し要求を構成する。TM
コントローラ570がデータを必要になると、ATMコ
ントローラ570のBTE DMA(図示してない)を
通してHDACが処理され、ATMチップセット(図示
してない)及びプロトコルがその準備を整えるまでAT
Mコントローラ570のFIFO(図示してない)が検
索したデータを保持する。
【0071】ATMコントローラ570は第1のATM
パケットのための全てのデータの転送を終了させ、「メ
ッセージディスクリプタ戻し」を呼出してその第1のパ
ケットのためのメッセージディスクリプタを戻す。(A
TMコントローラは、割り込みによってそれをATMド
ライバSPS 513へ通知する。) ATMドライバSPS 513は、「メッセージディス
クリプタ()戻し」グローバルQIO呼出しを介して第
1のパケットの各メッセージディスクリプタを戻す。第
1のTCP/IPヘッダデータ563aを指し示すメッ
セージディスクリプタが戻されると、メッセージディス
クリプタ及び構成要素データバッファ及びバッファディ
スクリプタはSPS513内で直ちに自由になる。それ
は、それらがそこに割当てられており、バッファディス
クリプタのリファレンスカウントが1であったからであ
る。(換言すれば、メッセージディスクリプタは決して
「メッセージディスクリプタ()複製」を受けず、「メ
ッセージ()配置」だけを受けるのである。) 中間ヘッダデータ562を指し示すメッセージディスク
リプタが、中間プロトコルSPS 512へ戻される
と、そのバッファディスクリプタカウントは1に減らさ
れる。従って、そのバッファディスクリプタは未だに自
由になることはできない。(戻されたメッセージディス
クリプタは「メッセージディスクリプタ()複製」の結
果であり、バッファディスクリプタのリファレンスカウ
ントは2になっている。)中間プロトコルを必要とする
次の時点に、中間プロトコルプロセス532がデータ5
62を指し示すメッセージディスクリプタを使用するこ
とは自由である。
【0072】アプリケーションに特定のデータ561を
指し示すメッセージディスクリプタが戻されると、同様
にそのバッファディスクリプタのリファレンスカウント
が1に減らされる。アプリケーションに特定のデータを
必要とする次の時点に、アプリケーションサーバプロセ
スがデータバッファ561を指し示すメッセージディス
クリプタを使用することは自由である。最後に、ディス
クデータ560’の第1の部分を指し示すメッセージデ
ィスクリプタがグローバルI/Oメモリ580へ戻され
ると、ディスクデータ560、560’、560”のた
めのバッファディスクリプタのリファレンスカウントが
1だけ減らされて4にされる。第2のパケットのメッセ
ージディスクリプタ内のデータの伝送、及びこれらのメ
ッセージディスクリプタの戻しは、第1のパケットに類
似している。従って重複を避けるために詳細な説明は省
略する。
【0073】最後に、ATMコントローラ570は第3
の、そして最後のATMパケットのための全てのデータ
の転送を終了させる。ATMコントローラ570は「メ
ッセージ()配置」を呼出してその第3のパケットのた
めのメッセージディスクリプタを戻す(そして、ATM
ドライバSPS 513に割り込む)。ATMドライバ
プロセス533は、各メッセージディスクリプタの戻り
を処理する。第1のパケットとこの最後のパケットとの
戻り処理間の差は、データ560のためのリファレンス
カウントが1に減らされている最初のものである。ディ
スクデータ560を指し示すメッセージディスクリプタ
の戻しは、メッセージディスクリプタをグローバルI/
Oメモリ580、即ち現在使用のバッファの元のアロケ
ータへ戻すことを含んでいる。データ560のためのバ
ッファディスクリプタのリファレンスカウンゴは1だけ
減らされて0になる。メッセージディスクリプタ及びそ
の構成要素バッファディスクリプタ及びデータバッファ
は全て割当て解除され、それそれの自由プールへ戻され
る。もし将来データ560を再度使用するのであれば、
それはディスクコントローラ540から再度引き出さな
ければならない。
【0074】当分野に精通していれば理解されるよう
に、ディスクコントローラ570からATMコントロー
ラまでデータを転送するのに幾つかのプロセッサが直列
に含まれているような、及びATMコントローラ570
へ転送すべきデータに3つのプロセッサ511、51
2、513がデータに付加されるようなシステムにおい
ては、データの各片の転送、即ち、データ(560、5
61、562、563)のそれぞれのソース(グローバ
ルI/Oメモリ580、SPS 511、512、51
3)から、データの最終行先(ATMコントローラ57
0)への転送が実際に1回発生するだけである。以上
に、複数のデータソース及びシンクの間でリファレンス
によってデータI/Oを実行する装置及び方法を開示し
た。この方法は、ビデオオンデマンド、及びマルチメデ
ィア応用に特に有用である。リファレンスによるデータ
I/Oの長所は、より良い並行動作、より良い線形可消
費性、高速ネットワーキング、及び特殊化された機能に
特定のプロセッサを使用する能力を含む。
【0075】勿論、以上に説明したようなソフトウェア
のためのプログラムテキストは、磁気、光、または他の
ディスク上に、磁気テープ、または記憶及び/または検
索のために媒体を運動させる必要がある他の媒体上に、
ROM内に、RAM内に、または別のデータ記憶媒体内
に静的な形で存在させることができる。データ記憶媒体
はコンピュータシステムと一体であることも、またはコ
ンピュータシステム内に挿入可能であることもできる。
【0076】
【発明の効果】本発明の方法は、ネットワークに対する
ノードとして結合されかつネットワークにわたりメモリ
アドレスによりアクセス可能なデータ位置に結合され
た、関連メモリを有しているI/Oコントローラ、CP
Uまたはメモリ装置の形の複数のデータソース/シンク
を含む分散型メモリアーキテクチャを有しているデータ
処理システムにおいて、変形処理の間に多重データソー
ス/シンクのそれぞれにデータストリームをコピーする
ことなく多重データソース/シンクを用いてデータスト
リームを変形する方法であって、第1のデータストリー
ムが記憶される第1の記憶位置を指定している第1のグ
ローバルネットワークアドレスを含んでいる、第1のデ
ータソース/シンクで、第1のポインタを生成し、第1
のデータソース/シンクから第2のデータソース/シン
クへ第1のポインタだけを転送し、第2のデータストリ
ームが記憶される第2の記憶位置を指定している第2の
グローバルネットワークアドレスを含んでいる第2のポ
インタを、第2のデータソース/シンクで、生成し、か
つ第1の連鎖ポインタを形成すべく該第1及び第2のポ
インタを連鎖し、メッセージの第3のデータフラグメン
トを記憶している該第3のノードで、第3のデータソー
ス/シンクに第1の連鎖ポインタだけを転送し、かつ該
メッセージを宛先に転送し、第1のデータストリームを
部分に分割するために第1のポインタを複数の2次ポイ
ンタに変形すべく、該第1のポインタを、第3のデータ
ソース/シンクで、処理し、かつ第1のデータストリー
ムの各部分にプロトコルヘッダを連鎖する段階を具備す
るので、データのプロセッサ間コピーイングを回避し、
しかも共用メモリの隘路及び故障許容問題を回避するこ
とができ、その結果、プロセッサ内及びプロセッサ間の
両方において、データの不要なコピーイングを排除した
コンピュータシステムを提供することができる。
【0077】本発明の方法は、ネットワークに対するノ
ードとして結合されかつネットワークにわたりメモリア
ドレスによりアクセス可能なデータに結合された、関連
メモリを有しているI/Oコントローラ、CPUまたは
メモリ装置の形の複数のデータソース/シンクを含む分
散型メモリアーキテクチャを有しているデータ処理シス
テムにおける方法であって、複数のデータソース/シン
クの第1のもののデータバッファにディスクリプタをゲ
ットし、データバッファのデータを転送することなくデ
ィスクリプタを複数のデータソース/シンクの第2のも
のに置き、第2のデータソース/シンクから複数のデー
タソース/シンクの第3のものにディスクリプタを置
き、かつデータ入力または出力を実行するために第1の
データソース/シンクから第3のデータソース/シンク
へデータバッファのデータの一部を検索する段階を具備
するので、データのプロセッサ間コピーイングを回避
し、しかも共用メモリの隘路及び故障許容問題を回避す
ることができ、その結果、プロセッサ内及びプロセッサ
間の両方において、データの不要なコピーイングを排除
したコンピュータシステムを提供することができる。
【0078】本発明の方法は、ネットワークに対するノ
ードとして結合されかつネットワークにわたりメモリア
ドレスによりアクセス可能なデータに結合された、関連
メモリを有しているI/Oコントローラ、CPUまたは
メモリ装置の形の複数のデータソース/シンクを含む分
散型メモリアーキテクチャを有しているデータ処理シス
テムにおける方法であって、複数のデータソース/シン
クの第1のもののデータバッファにディスクリプタをゲ
ットし、データバッファのデータを転送することなくデ
ィスクリプタを複数のデータソース/シンクの第2のも
のに置き、ディスクリプタを複数のディスクリプタに分
割し、複数のディスクリプタの一つを第2のデータソー
ス/シンクから複数のデータソース/シンクの第3のも
のに置き、かつデータ入力または出力を実行するために
第1のデータソース/シンクから第3のデータソース/
シンクへ一つのディスクリプタにより記述されたデータ
バッファのデータの一部を検索する段階を具備するの
で、データのプロセッサ間コピーイングを回避し、しか
も共用メモリの隘路及び故障許容問題を回避することが
でき、その結果、プロセッサ内及びプロセッサ間の両方
において、データの不要なコピーイングを排除したコン
ピュータシステムを提供することができる。
【0079】本発明のデータストレージ用媒体は、複数
のデータソース/シンクの第1のもののデータバッファ
にディスクリプタをゲットし、データバッファのデータ
を転送することなくディスクリプタを複数のデータソー
ス/シンクの第2のものに置き、第2のデータソース/
シンクから複数のデータソース/シンクの第3のものに
ディスクリプタを置き、かつデータ入力または出力を実
行するために第1のデータソース/シンクから第3のデ
ータソース/シンクへデータバッファのデータの一部を
検索することにより、I/Oコントローラ、CPUまた
はメモリ装置の形の複数のデータソース/シンクの中で
データI/Oを実行するためのコンピュータプログラム
が配置されるので、データのプロセッサ間コピーイング
を回避し、しかも共用メモリの隘路及び故障許容問題を
回避することができ、その結果、プロセッサ内及びプロ
セッサ間の両方において、データの不要なコピーイング
を排除したコンピュータシステムを提供することができ
る。
【0080】本発明のデータストレージ用媒体は、複数
のデータソース/シンクの第1のもののデータバッファ
にディスクリプタをゲットし、データバッファのデータ
を転送することなくディスクリプタを複数のデータソー
ス/シンクの第2のものに置き、ディスクリプタを複数
のディスクリプタに分割し、複数のディスクリプタの一
つを第2のデータソース/シンクから複数のデータソー
ス/シンクの第3のものに置き、かつデータ入力または
出力を実行するために第1のデータソース/シンクから
第3のデータソース/シンクへ一つのディスクリプタに
より記述されたデータバッファのデータの一部を検索す
ることにより、I/Oコントローラ、CPUまたはメモ
リ装置の形の複数のデータソース/シンクの中でデータ
I/Oを実行するためのコンピュータプログラムが配置
されるので、データのプロセッサ間コピーイングを回避
し、しかも共用メモリの隘路及び故障許容問題を回避す
ることができ、その結果、プロセッサ内及びプロセッサ
間の両方において、データの不要なコピーイングを排除
したコンピュータシステムを提供することができる。
【図面の簡単な説明】
【図1】QIO共用メモリシステムを組み込んだ故障許
容並行データ処理システムのブロック線図である。
【図2】モジュラーネットワークされたマルチプロセッ
サシステムを示す図である。
【図3】故障許容マルチプロセッサシステムを示す図で
ある。
【図4】図3のシステムの代替構成を示す図である。
【図5】プロセッサ及びメモリをネットワークにインタ
フェースするための図3のCPUの一部を形成するイン
タフェースユニットを示す図である。
【図6】図3のコンピュータシステム100をより特定
化したバージョンを示す図である。
【図7】グローバルQIO待ち行列を示す図である。
【図8】メッセージのフォーマットを示す図である。
【図9】バッファディスクリプタのフォーマットを示す
図である。
【符号の説明】
10 データ処理システム 12 CPU 14 ルータ 16 I/Oパケットインタフェース 17 I/Oデバイス 18 保守プロセッサ(MP) 24 インタフェースユニット 28 メモリ 100 故障許容並列デバイス処理システム 102 ノード 104 ワークステーション 105 LAN 106、108 プロセッサ 109 プロセッサ間バス(IPB) 110 CPU 112 メモリ 114 ディスクコントローラ 116 ディスクドライブ 120 アプリケーションプロセス 122 ディスクプロセス 124 共用メモリセグメント 126 QIOライブラリルーチン 128 メッセージシステム(MS) 130 ファイルシステム(FS) 132 ディスクドライバ 140 LANコントローラ 142 CPU 144 メモリ 146 TCP/IPプロセス 148 ディストリビュータプロセス 150 共用メモリセグメント 151 QIO待ち行列 152 QIOライブラリルーチン 154 メッセージシステム 156 ファイルシステム 158 LANドライバ 200、500 コンピュータシステム 210、211、212、213、510、511、5
12、513 ノード(コンピュータシステム) 220、520 Tネットネットワーク 230、530 ディスクプロセス 231、531 アプリケーションサーバプロセス 232、532 中間プロトコルプロセス 233、533 TCP/IPATMドライバ 240、540 ディスクコントローラ 250、251、252、253、544、555 メ
モリ 260、560 ディスクデータ 261、561 アプリケーションに特定のデータ 262、562 中間(RPC)プロトコル情報 263、563 TCP/IPプロトコル情報 570 ATMコントローラ 580 グローバルメモリ 600 QIO待ち行列 620 メッセージリスト 622、624 メッセージディスクリプタ 700 メッセージ 730 バッファディスクリプタ 740 バッファ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バーマン ザーガム アメリカ合衆国 カリフォルニア州 94087 サニーヴェール オリーリア コ ート 1527

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 ネットワークに対するノードとして結合
    されかつネットワークにわたりメモリアドレスによりア
    クセス可能なデータ位置に結合された、関連メモリを有
    しているI/Oコントローラ、CPUまたはメモリ装置
    の形の複数のデータソース/シンクを含む分散型メモリ
    アーキテクチャを有しているデータ処理システムにおい
    て、変形処理の間に多重データソース/シンクのそれぞ
    れにデータストリームをコピーすることなく多重データ
    ソース/シンクを用いてデータストリームを変形する方
    法であって、 第1のデータストリームが記憶される第1の記憶位置を
    指定している第1のグローバルネットワークアドレスを
    含んでいる、第1のデータソース/シンクで、第1のポ
    インタを生成し、 前記第1のデータソース/シンクから第2のデータソー
    ス/シンクへ前記第1のポインタだけを転送し、 第2のデータストリームが記憶される第2の記憶位置を
    指定している第2のグローバルネットワークアドレスを
    含んでいる第2のポインタを、前記第2のデータソース
    /シンクで、生成し、かつ第1の連鎖ポインタを形成す
    べく該第1及び第2のポインタを連鎖し、 メッセージの第3のデータフラグメントを記憶している
    該第3のノードで、第3のデータソース/シンクに前記
    第1の連鎖ポインタだけを転送し、かつ該メッセージを
    宛先に転送し、 前記第1のデータストリームを部分に分割するために前
    記第1のポインタを複数の2次ポインタに変形すべく、
    該第1のポインタを、前記第3のデータソース/シンク
    で、処理し、かつ前記第1のデータストリームの各部分
    にプロトコルヘッダを連鎖する段階を具備することを特
    徴とする方法。
  2. 【請求項2】 前記第1、第2、第3及び第4のデータ
    ソース/シンクでグローバルIOキューを生成し、 前記第1のポインタを前記第1のデータソース/シンク
    から前記第2のデータソース/シンクへ転送する前記段
    階は、 前記第1のデータソース/シンクにおける前記グローバ
    ルIOキューに前記第1のポインタを記憶し、 前記第1のデータソース/シンクにおける前記グローバ
    ルIOキューから、前記第2のノードにコピーされる前
    記第1のポインタだけを結果として生ずる前記第2のデ
    ータソース/シンクにおける前記グローバルIOキュー
    へ前記第1のポインタをキューイングする段階を更に具
    備することを特徴とする請求項1に記載の方法。
  3. 【請求項3】 ネットワークに対するノードとして結合
    されかつネットワークにわたりメモリアドレスによりア
    クセス可能なデータに結合された、関連メモリを有して
    いるI/Oコントローラ、CPUまたはメモリ装置の形
    の複数のデータソース/シンクを含む分散型メモリアー
    キテクチャを有しているデータ処理システムにおける方
    法であって、 前記複数のデータソース/シンクの第1のもののデータ
    バッファにディスクリプタをゲットし、 前記データバッファのデータを転送することなく前記デ
    ィスクリプタを前記複数のデータソース/シンクの第2
    のものに置き、 前記第2のデータソース/シンクから前記複数のデータ
    ソース/シンクの第3のものに前記ディスクリプタを置
    き、かつデータ入力または出力を実行するために前記第
    1のデータソース/シンクから前記第3のデータソース
    /シンクへ前記データバッファのデータの一部を検索す
    る段階を具備することを特徴とする方法。
  4. 【請求項4】 ネットワークに対するノードとして結合
    されかつネットワークにわたりメモリアドレスによりア
    クセス可能なデータに結合された、関連メモリを有して
    いるI/Oコントローラ、CPUまたはメモリ装置の形
    の複数のデータソース/シンクを含む分散型メモリアー
    キテクチャを有しているデータ処理システムにおける方
    法であって、 前記複数のデータソース/シンクの第1のもののデータ
    バッファにディスクリプタをゲットし、 前記データバッファのデータを転送することなく前記デ
    ィスクリプタを前記複数のデータソース/シンクの第2
    のものに置き、 前記ディスクリプタを複数のディスクリプタに分割し、 前記複数のディスクリプタの一つを前記第2のデータソ
    ース/シンクから前記複数のデータソース/シンクの第
    3のものに置き、かつデータ入力または出力を実行する
    ために前記第1のデータソース/シンクから前記第3の
    データソース/シンクへ前記一つのディスクリプタによ
    り記述された前記データバッファの前記データの一部を
    検索する段階を具備することを特徴とする方法。
  5. 【請求項5】 前記ディスクリプタをその最初のデータ
    ソース/シンクにリターンし、かつ前記ディスクリプタ
    及びそれが記述する前記メモリ領域の割り当てを解除す
    る段階を更に具備することを特徴とする請求項3に記載
    の方法。
  6. 【請求項6】 前記一つのディスクリプタをその最初の
    データソース/シンクにリターンし、かつ前記一つのデ
    ィスクリプタ及びそれが記述する前記メモリ領域の割り
    当てを解除する段階を更に具備することを特徴とする請
    求項4に記載の方法。
  7. 【請求項7】 データストレージ用媒体であって、 複数のデータソース/シンクの第1のもののデータバッ
    ファにディスクリプタをゲットし、 前記データバッファのデータを転送することなく前記デ
    ィスクリプタを前記複数のデータソース/シンクの第2
    のものに置き、 前記第2のデータソース/シンクから前記複数のデータ
    ソース/シンクの第3のものに前記ディスクリプタを置
    き、かつデータ入力または出力を実行するために前記第
    1のデータソース/シンクから前記第3のデータソース
    /シンクへ前記データバッファのデータの一部を検索す
    ることにより、I/Oコントローラ、CPUまたはメモ
    リ装置の形の前記複数のデータソース/シンクの中でデ
    ータI/Oを実行するためのコンピュータプログラムが
    配置されることを特徴とするデータストレージ用媒体。
  8. 【請求項8】 データストレージ用媒体であって、 前記複数のデータソース/シンクの第1のもののデータ
    バッファにディスクリプタをゲットし、 前記データバッファのデータを転送することなく前記デ
    ィスクリプタを前記複数のデータソース/シンクの第2
    のものに置き、 前記ディスクリプタを複数のディスクリプタに分割し、 前記複数のディスクリプタの一つを前記第2のデータソ
    ース/シンクから前記複数のデータソース/シンクの第
    3のものに置き、かつデータ入力または出力を実行する
    ために前記第1のデータソース/シンクから前記第3の
    データソース/シンクへ前記一つのディスクリプタによ
    り記述された前記データバッファの前記データの一部を
    検索することにより、I/Oコントローラ、CPUまた
    はメモリ装置の形の前記複数のデータソース/シンクの
    中でデータI/Oを実行するためのコンピュータプログ
    ラムが配置されることを特徴とするデータストレージ用
    媒体。
JP8341416A 1995-12-20 1996-12-20 多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o Abandoned JPH09288654A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/578,409 US5941959A (en) 1995-12-20 1995-12-20 System for transferring a data stream to a requestor without copying data segments to each one of multiple data source/sinks during data stream building
US08/578409 1995-12-20

Publications (1)

Publication Number Publication Date
JPH09288654A true JPH09288654A (ja) 1997-11-04

Family

ID=24312763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8341416A Abandoned JPH09288654A (ja) 1995-12-20 1996-12-20 多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o

Country Status (4)

Country Link
US (1) US5941959A (ja)
EP (1) EP0789305A3 (ja)
JP (1) JPH09288654A (ja)
CA (1) CA2193341A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1295606C (zh) * 2003-12-31 2007-01-17 北京北阳电子技术有限公司 软件仿真方法和装置

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0901261B1 (en) * 1997-09-05 2013-01-09 Hitachi, Ltd. Transport protocol conversion method and protocol conversion equipment
IL126552A (en) * 1998-10-13 2007-06-03 Nds Ltd Remote administration of smart cards for secure access systems
US6763370B1 (en) * 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
US7017188B1 (en) 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US7200632B1 (en) 1999-04-12 2007-04-03 Softricity, Inc. Method and system for serving software applications to client computers
US6938096B1 (en) * 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
US7730169B1 (en) 1999-04-12 2010-06-01 Softricity, Inc. Business method and system for serving third party software applications
US7370071B2 (en) 2000-03-17 2008-05-06 Microsoft Corporation Method for serving third party software applications from servers to client computers
US8099758B2 (en) 1999-05-12 2012-01-17 Microsoft Corporation Policy based composite file system and method
US20100107200A1 (en) * 2007-03-15 2010-04-29 Fabrix Tv Ltd. Converting video data into video streams
US8370458B2 (en) * 2007-12-21 2013-02-05 Hicamp Systems, Inc. Hierarchical block-identified data communication for unified handling of structured data and data compression
JP5152201B2 (ja) * 2008-01-21 2013-02-27 富士通株式会社 パケット処理装置およびパケット処理プログラム
US8531961B2 (en) 2009-06-12 2013-09-10 Cygnus Broadband, Inc. Systems and methods for prioritization of data for intelligent discard in a communication network
US8627396B2 (en) * 2009-06-12 2014-01-07 Cygnus Broadband, Inc. Systems and methods for prioritization of data for intelligent discard in a communication network
KR101247595B1 (ko) 2009-06-12 2013-03-26 시그너스 브로드밴드, 인코포레이티드 통신 네트워크의 지능형 폐기 시스템 및 방법
US9977619B2 (en) 2015-11-06 2018-05-22 Vivante Corporation Transfer descriptor for memory access commands
FR3043814B1 (fr) * 2015-11-18 2020-01-10 Bull Sas Procede de generation d'un ensemble de donnees definissant un message pour une application contrainte

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4503499A (en) * 1982-09-14 1985-03-05 Eaton Corporation Controlled work flow system
US4901232A (en) * 1983-05-19 1990-02-13 Data General Corporation I/O controller for controlling the sequencing of execution of I/O commands and for permitting modification of I/O controller operation by a host processor
GB8328396D0 (en) * 1983-10-24 1983-11-23 British Telecomm Multiprocessor system
DE3688657T2 (de) * 1985-05-06 1993-10-21 Computer X Inc Methode zur Lokalisierung von Prozessen in einem verteilten Datenverarbeitungssystem.
US4695880A (en) * 1985-07-30 1987-09-22 Postron Corp. Electronic information dissemination system
US4974149A (en) * 1985-08-02 1990-11-27 Wang Laboratories, Inc. Data distribution apparatus and method having a data description including information for specifying a time that a data distribution is to occur
US5475836A (en) * 1987-04-01 1995-12-12 Lotus Development Corporation Interface for providing access to external data sources/sinks
US5557798A (en) * 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5673394A (en) * 1990-10-31 1997-09-30 Microsoft Corporation Method of sharing memory between an operating system and an application program
GB9112754D0 (en) * 1991-06-13 1991-07-31 Int Computers Ltd Data processing apparatus
CA2078310A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital processor with distributed memory system
US5278834A (en) * 1992-05-26 1994-01-11 Alcatel Network Systems, Inc. Method for implementing a data communication protocol stack
US5414851A (en) * 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
US5652885A (en) * 1993-05-25 1997-07-29 Storage Technology Corporation Interprocess communications system and method utilizing shared memory for message transfer and datagram sockets for message control
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5572645A (en) * 1994-03-01 1996-11-05 International Business Machines Corporation Buffer management policy for an on-demand video server
EP0676878A1 (en) * 1994-04-07 1995-10-11 International Business Machines Corporation Efficient point to point and multi point routing mechanism for programmable packet switching nodes in high speed data transmission networks
US5630125A (en) * 1994-05-23 1997-05-13 Zellweger; Paul Method and apparatus for information management using an open hierarchical data structure
US5884028A (en) * 1994-07-29 1999-03-16 International Business Machines Corporation System for the management of multiple time-critical data streams
US5630059A (en) * 1995-02-06 1997-05-13 International Business Machines Corporation Expedited message transfer in a multi-nodal data processing system
US5696829A (en) * 1995-11-21 1997-12-09 Pitney Bowes, Inc. Digital postage meter system
US5790807A (en) * 1995-12-20 1998-08-04 Tandem Computers Incorporated Computer sysem data I/O by reference among CPUS and I/O devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1295606C (zh) * 2003-12-31 2007-01-17 北京北阳电子技术有限公司 软件仿真方法和装置

Also Published As

Publication number Publication date
US5941959A (en) 1999-08-24
EP0789305A3 (en) 2000-06-07
CA2193341A1 (en) 1997-06-21
EP0789305A2 (en) 1997-08-13

Similar Documents

Publication Publication Date Title
JPH1011372A (ja) Cpu及びi/oデバイス間のリファレンスによるコンピュータシステムデータi/o
JPH09325944A (ja) I/oデバイス及び多重メモリ装置間のリファレンスによるコンピュータシステムデータi/o
JPH103441A (ja) Cpu及び多重メモリ装置間のリファレンスによるコンピュータシステムデータi/o
JPH09288654A (ja) 多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o
Kronenberg et al. VAXcluster: A closely-coupled distributed system
TW544589B (en) Loosely coupled-multi processor server
US6044415A (en) System for transferring I/O data between an I/O device and an application program's memory in accordance with a request directly over a virtual connection
US6877072B1 (en) Real-time shared disk system for computer clusters
JP4526412B2 (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
JP3266481B2 (ja) クラスタ化コンピューティング・システムのディスク・アクセス・パスにおける障害から回復する方法および関連する装置
JP3364587B2 (ja) 通信システムで比較的大きなデータ・オブジェクトの伝送を制御するシステムと方法
US5781741A (en) Message communications system in a parallel computer
US20090006546A1 (en) Multiple node remote messaging
JPH076099A (ja) リモート・データの2重化のためのシステム及び方法
JP2005235229A (ja) マルチプロセッサシステムにおけるプロセッサタスクの移動方法および装置
US7140015B1 (en) Microkernel for real time applications
US20230022689A1 (en) Efficient Networking for a Distributed Storage System
US6393503B2 (en) Efficient transfer of data and events between processes and between processes and drivers in a parallel, fault tolerant message based operating system
JPH0916531A (ja) データ伝送方法
JPH09288653A (ja) Cpu間のリファレンスによるコンピュータシステムデータi/o
JP3639366B2 (ja) アドレス空間共有システム
JP2901882B2 (ja) 計算機システムおよび入出力命令の発行方法
US11334246B2 (en) Nanoservices—a programming design pattern for managing the state of fine-grained object instances
US20240232005A1 (en) Efficient Networking for a Distributed Storage System
JP2003316589A (ja) 実記憶利用方法

Legal Events

Date Code Title Description
A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20061116