JP2003330873A - 情報処理装置及び入出力方法並びにプログラム - Google Patents
情報処理装置及び入出力方法並びにプログラムInfo
- Publication number
- JP2003330873A JP2003330873A JP2002139572A JP2002139572A JP2003330873A JP 2003330873 A JP2003330873 A JP 2003330873A JP 2002139572 A JP2002139572 A JP 2002139572A JP 2002139572 A JP2002139572 A JP 2002139572A JP 2003330873 A JP2003330873 A JP 2003330873A
- Authority
- JP
- Japan
- Prior art keywords
- input
- adapter
- state
- output
- output operation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
にかかる処理時間を低減して、入出力の高速化を図る。 【解決手段】 入出力動作を要求するプロセス31と、
プロセス31からの要求に基づいて入出力動作を行うア
ダプタ6と、アダプタ6が入出力動作を行っている間は
プロセス31の状態を実行待ちにするスケジューラ41
とを備え、アダプタ6の入出力動作が完了したときに、
この動作完了を待っているプロセス31の状態をアダプ
タ6が実行可能状態に変更することで、入出力動作を要
求したプロセス31の実行を再開させる。
Description
にディスク装置、ネットワーク等を、コンピュータ等に
接続し、そのディスク装置やネットワークに使用するプ
ロトコルを処理するアダプタに関する。
数の種類が存在し、イーサネット(登録商標)、Fib
re Channel、ATM、パラレルSCSIがそ
の例である。
をホスト(コンピュータ)等の情報処理装置に接続する
とき、ホストの内部I/Oバスと、ディスク接続方法や
ネットワークを結ぶアダプタを使用する。
Iバスとイーサネットを結ぶネットワークアダプタがそ
のアダプタの一例である(PCIバスのコネクタに接続
するカードという形式のアダプタが良くあるが、マザー
ボードにこれらのコンポーネントを直接組み付ける例も
あり、この場合にもアダプタと呼ぶ)。
ダプタ、そしてオペレーティングシステム(以下、O
S)のカーネルとプロセスの動作を説明する。
ためにネットワークアダプタ、そしてネットワークでの
通信に極めて一般的に使用されているTCP/IPプロ
トコル(W. Richard Stevens, “UNIX Network Program
ming,” Prentice Hall, U.S.A., 1990, ISBN 0-13-949
876-1参照、以下参考文献1と呼ぶ)の通信の場合を中
心に説明する。そして、TCP/IPで通信するための
ソケットAPI(Application Programming Interfac
e、プロセスがコンピュータやオペレーティングシステ
ムのある機能を用いるために呼び出す関数の集合)を例
に使用する(参考文献1参照)。また、OSとしてはL
inuxカーネル(D. P. Bovet, M. Cesati, “Unders
tanding the Linux Kernel,” O’Reilly & Associate
s, 2001, ISBN 0-596-00002-2参照、以下参考文献2と
呼ぶ)を例にすることがある。なお、本発明においては
ネットワークアダプタ、TCP/IPプロトコル、ソケ
ットAPIやLinuxカーネルに制限されるものでは
ない。
セス(プログラム)31、32がアダプタ2を使用して
通信する(図6と今後の図にネットワーク上の通信相手
を図示しない)。カーネル4は、アダプタ2を制御し、
プロセス31、32のデータと制御の多重化(マルチプ
レクシング、デマルチプレクシング)をする。次にこの
多重化を説明する。
アダプタ2は複数のプロセス31、32のデータをまと
めて送受信するため、カーネル4はバッファ45を介し
て複数プロセス31、32とアダプタ2の間でデータの
多重化を行う。まず、受信処理について説明する。アダ
プタ2はネットワークからパケットを受信したとき、そ
のパケットをカーネル4のバッファ45に書き込む(ア
ダプタは、DMAで主記憶の書き込み/読み出しができ
る)。
り込みを起こし、その割り込みを、このアダプタ2の割
り込み処理47のコードが処理し、デバイスドライバ4
6を呼び出す。デバイスドライバ46がバッファ45を
読み出し、パケットの通信プロトコルを調べ、このプロ
トコル(この例ではTCP/IP)のプロトコル処理4
3を呼び出す。
続の上でデータを通信する。プロトコル処理43はTC
P/IP処理を行うために、通信の状態の管理と、論理
接続とプロセスとの連携などを記録するプロトコル処理
表44を持つ。プロトコル処理43は、受信したデータ
の宛先となるプロセス31、32を調べ、このデータを
このプロセス31、32のバッファ33、34にそれぞ
れコピーし、受信したデータのバッファ45の領域を開
放し、受信処理を完了する。
ず、プロセス31、32が送信データ33、34を指定
してプロトコル処理43を呼び出す。プロトコル処理4
3がそのデータ33、34をバッファ45にコピーし、
このバッファ45上でパケットを組み立て、デバイスド
ライバ46を呼び出す。デバイスドライバ46がアダプ
タ2を制御し、パケットを送信させる。送信が完了した
とき、アダプタ2が割り込みを起こし、この割り込みを
割り込み処理47と、デバイスドライバ46が処理し、
デバイスドライバ46が送信されたパケットのバッファ
45の領域を開放する。
6において、アダプタ2は複数のプロセス31、32に
関する割り込みをまとめて起こすため、カーネル4がそ
の割り込みを各プロセス31、32のプロセス制御への
多重化も行う(この処理は普段「多重化」と呼ばれない
が、データの多重化との類似を指摘するためにこの明細
書はこの用語を使用する)。
ス状態の変更を行う。各プロセスは複数の状態があり、
「実行中」(どれかのCPUがこのプロセスを実行して
いるという状態)、「実行可能」(プロセスが実行でき
るが、CPUが実行していない状態)、「I/O待ち」
(プロセスが送受信などの完了を待っている状態)がそ
の例である(参考文献2参考。Linuxのプロセスは
これらの状態があるが、Linuxのtask#structの状
態は上記の3つの状態に一対一対応しない)。
32の状態を管理し、プロセステーブル42に状態を記
録する。
る。プロセス31、32がソケットAPIのブロッキン
グ呼び出し(データ受信完了まで待つ)を使用したと
き、カーネル4のプロトコル処理43が呼ばれる(80
0)。プロトコル処理43ではデータが受信されていな
い場合、カーネル4のスケジューラ41を呼び出し(8
01)プロセス31、32を実行中状態からI/O待ち
状態に変更する。
込みを起こす(802)。割り込み処理47、デバイス
ドライバ46とプロトコル処理43が呼び出され(80
3、804)、プロトコル処理43は上記受信処理の中
でどのプロセス31、32がこの受信に対応するかを調
べ、状態変更が必要である場合にスケジューラ41を呼
び出す(805)。スケジューラ41がデータを送受信
したプロセス31、32を実行可能状態にする。
つあるいは複数のタイマー5割込み(後述)の後)、こ
のプロセス31、32が実行中状態となり(806)、
受信処理を完了する(807)。
期的に割り込みを起こし(Linuxでは100Hz、
参考文献1の140ページ参照)、タイマー処理48の
後にスケジューラが呼ばれ(参考文献1の133及び1
42ページ参照)、必要があればスケジューラ41が実
行可能と実行中プロセス31、32の中のどれを実行
中、実行可能にするかを選択する。この処理でカーネル
がタイムシェアリングを実現する。
を大きく上回って向上してきた結果、TCP/IPプロ
トコルの処理がボトルネックとして顕在化してきた。
処理の2つの方式、すなわちTCP/IPのハードウェ
ア化(J. Hufferd, “The Outboarding of TCP/IP," e-
Commerce Infrastructure Technology Conference and
Tradeshow, February 2001,Monterey, U.S.A.参照)
と、論理接続などのTCP/IP相当の機能を独自プロ
トコルで実現するInfiniBandネットワーク
(InfiniBand Architecture Specification Volume 1 R
elease 1.0.a参照)が開発されてきた。
にしてプロトコルを処理するアダプタ600を説明す
る。
ンドポイント610〜630で、各論理接続の処理と通
信状態の管理をする(InfiniBandでは、この
通信エンドポイントをQueue Pairと呼び、以
下QPと略す)。
とデバイスドライバ50を介して論理接続を確立する
が、確立後にカーネル4を介さないでエンドポイント6
10〜630を直接アクセスする(プロトコル処理4
9、プロトコル処理表40、デバイスドライバ50はプ
ロトコル処理43、プロトコル処理表44、デバイスド
ライバ46と同等であるが、後者のプロトコル処理を含
めず、接続管理の機能のみを含む)。
32のデータ33、34を直接送受信するために複数の
通信エンドポイント610〜630の多重処理64を行
う。このため、アダプタ600の場合、カーネル4でな
く、アダプタ600がデータの多重化を行う。
接駆動するにはソケットと異なったAPIを使用する
が、InfiniBand向けAPIにもブロッキング
呼び出しが存在すると考えられる(これらのAPIは現
在規格化中である)。
600における処理を、上記図8のタイムチャートを用
いて説明すると、アダプタ600がデータ送受信のプロ
トコル処理をするため、ブロッキング呼び出し(80
0)のときにプロトコル処理49がスケジューラ41の
呼び出しをする(変形例としてここでは、特別なシステ
ムコールを設ければ、プロセス31、32が直接スケジ
ューラを呼べる)。送受信完了のときにアダプタ600
が割込みを起こす(802)。
いては、プロトコルを処理するアダプタ600は、デー
タ送受信時にカーネル4をバイパスして、プロトコル処
理43のバイパス、そしてプロセス31、32のバッフ
ァ33、34とバッファ45とのデータコピーをなくす
ことなどにより、CPU負荷を削減し、通常のアダプタ
2(図6)のボトルネックの一部を解決する。
プタ600がデータの多重化を処理する一方、制御の多
重化を行っていない。例えば、プロセス31、32がソ
ケットAPIのブロッキング受信呼び出しを使用したと
き、割り込みに関する処理、すなわち割り込み処理4
7、デバイスドライバ50、プロトコル処理49、スケ
ジューラ41の処理(802〜805)が必要である。
その結果、データ通信がカーネル4をバイパスする一
方、制御はカーネル4をバイパスしないため、ボトルネ
ックの一部が残ってしまう。
ると、割り込み処理47を行って、プロトコル処理4
9、スケジューラ41を呼び出し、データ送受信待ち
(I/O待ち)となっていたプロセス31、32を実行
可能にする訳であるが、図7で示したように、複数のエ
ンドポイント610〜630で送受信が完了する度に割
り込み処理を行う必要があるため、各プロセスが「I/
O待ち」から「実行可能」となるまでに処理時間を要
し、このためデータの多重化のみでは、アダプタ600
における通信処理のオーバーヘッドを解消できない、と
いう問題があった。
れたもので、データの多重化を行うとともに割り込み処
理にかかる時間を低減して、入出力の高速化を図ること
を目的とする。
要求する処理と、この処理からの要求に基づいて入出力
動作を行うアダプタと、前記アダプタが入出力動作を行
っている間は前記処理の状態を実行待ちにするスケジュ
ール手段とを備えて、前記アダプタの入出力動作が完了
したことに基づいて前記処理の状態を実行可能に変更す
る入出力方法において、前記アダプタの入出力動作が完
了したときに、この動作完了を待っている処理の状態を
アダプタが実行可能状態に変更することで、入出力動作
を要求した処理の実行を再開させる。
ング呼び出しをし、この呼び出しに関する送受信が完了
したとき、アダプタ6がこのプロセス31、32のプロ
セステーブル42の状態を実行可能にする。このため、
割り込みとカーネル4の処理なしでプロセス31、32
の状態を変更できる。このプロセス31、32はその後
のタイマー処理48によるスケジューラ41の実行時に
実行中になる。
あれば、性能を向上するために送受信完了時に実行可能
になったプロセス31、32をすぐに実行中にする必要
がある。このため、アイドル状態のCPUがあれば割り
込みを起こす。割り込み処理の後にスケジューラ41が
呼ばれ、このプロセス31、32が実行中になる。
されると、アダプタによる入出力動作を実行するととも
に、要求した処理を実行待ち(I/O待ち)状態にす
る。そして、アダプタは入出力動作が完了すると、処理
の状態を直接的に実行待ち状態から実行可能状態へ変更
するため、入出力動作が完了した時点から処理が再び実
行されるまでの処理時間を短縮でき、入出力処理の高効
率化による高速化を図ることが可能となるのである。
図面に基づいて説明する。
iniBandアダプタに、本発明を適用した一例を示
す。
ングシステム上で稼働する複数のプロセス31、32
(アプリケーション)が、InfiniBandアダプ
タ6を使用して、ホスト1の外部とネットワーク7を介
して通信するもので、オペレーティングシステム(以
下、OS)のカーネル4は、InfiniBandアダ
プタ6を制御して、プロセス31、32のデータ33、
34と制御の多重化(マルチプレクシング、デマルチプ
レクシング)を行う。
略を図2に示す。
サ)101、102がCPUバス103を介してメモリ
ーコントローラ104に接続され、また、メモリーバス
105を介してメモリーコントローラ104はメモリー
106に接続されており、CPU101、102または
他のデバイスからメモリー106のアクセスを行う。
内部I/Oバス107を介してInfiniBandア
ダプタ6に接続され、CPU101、102は外部のネ
ットワーク7と通信可能となる。
割り込みコントローラなどが含まれ、メモリー106が
主記憶となる。また、CPU101、102は論理的に
独立している仮想プロセッサで構成してもよい。
通信エンドポイント(QueuePairで、以下Q
P)61〜63で、各論理接続の処理と通信状態の管理
をする。
とデバイスドライバ50を介して論理接続を確立する
が、論理接続の確立後にはカーネル4を介さないでエン
ドポイント61〜63を直接アクセスする。
のデータ33、34を直接送受信するために複数の通信
エンドポイント61〜63の多重処理64を行う。この
ため、InfiniBandアダプタ6の場合、カーネ
ル4でなく、InfiniBandアダプタ6がデータ
の多重化を行う。
は主に、次に説明するプロセス状態の変更を行う。各プ
ロセスは複数の状態があり、「実行中」(どれかのCP
Uがこのプロセスを実行しているという状態)、「実行
可能」(プロセスが実行できるが、CPUが実行してい
ない状態)、「I/O待ち」(プロセスが送受信などの
完了を待っている状態)がその例である(参考文献2参
考。Linuxのプロセスはこれらの状態があるが、L
inuxのtask#structの状態は上記の3つの状態に一
対一対応しない)。
ーネル4には、プロセス31、32とアダプタ6の論理
接続を確立するプロトコル処理49、デバイスドライバ
50を備え、また、タイマー5によるタイマー処理48
または割り込み処理47によってプロセス31、32を
制御するスケジューラ41を備えている。
は、アダプタ6のエンドポイント61〜63にそれぞれ
設けた状態変更機構65〜67により、直接書き込み可
能に構成される。
を示す稼働中フラグ68が設けられ、この稼働中フラグ
68は、スケジューラ41によって設定され、アダプタ
6からの割り込み要求をCPUの稼働状態に応じて制御
可能とする。
た、状態変更機構65〜67について説明する。
ト61〜63をあるプロセス31、32にアロケート
し、このエンドポイント61〜63の論理接続を確立し
たとき、これらエンドポイント61〜63の状態変更機
構65〜67に、プロセステーブル42上でこれらプロ
セス31、32の状態を示すエントリのアドレスを登録
する。これにより、各エンドポイントの状態変更機構6
5〜67は、エンドポイント毎の論理接続に対応するプ
ロセステーブル42上のエントリへ書き込み可能とな
る。
エントリ登録時に、プロセステーブル42の各エントリ
のフィールド上で「実行可能」を示す値とバイト幅を状
態変更機構65〜67に登録する。なお、スケジューラ
41のプロセステーブル42は、主記憶上の所定の領域
に予め設定された記憶領域である。
ロセス31、32がブロッキング呼び出しを使用したと
きに、エンドポイント61〜63を起動して送受信を開
始する中で、送受信完了時に状態を変更することを要求
する(前記従来例と同じく、起動の処理を、標準API
の下にあるアダプタ6関連の通信ライブラリが実現す
る)。
て、図3のタイムチャートを参照しながら説明する。
処理49を呼び出し(図3の800)、プロトコル処理
49がこのプロセスの状態をI/O待ちにし、スケジュ
ーラ41を呼び出す(801)(これで、実行可能のプ
ロセス31、32があれば、これらのどれかが実行中に
なる)。
61〜63が状態変更機構65〜67に登録されたエン
トリに基づいて、実行可能を示す値をDMAにより主記
憶のプロセステーブル42に書き込み、プロセス31、
32の状態をI/O待ちから実行可能に変更する(図1
では例として、エンドポイント62の状態変更機構66
からのプロセステーブル42への書き込みを矢印で示
す)。一つあるいは複数のタイマー5割込みの後、この
プロセス31、32が実行中になり(806)、ブロッ
キング呼び出しの処理を完了する(807)。
CPUがビジーであれば、スケジューラを呼び出しても
ホスト1の性能が向上しない(実行中のプロセスのタイ
ムカンタムが終わっておらず、プロセス31、32の状
態が変更されないからである)。このため、状態変更機
構65〜67からプロセステーブル42への書き込みで
実行可能となったプロセスはその後のタイマー処理48
のときに実行中になる。
スト1の性能を向上するためにすぐにスケジューラを呼
び出し、実行可能となったプロセスを実行中にする必要
がある。
込み制御(起こすか否か)が必要である。この割り込み
の制御を行うために、アイドル状態のCPUがあるか否
かを示すフラグとして上記稼動中フラグ68が設けら
れ、スケジューラ41が稼動中フラグ68を設定する。
フラグ68はアダプタ6からの割り込みをイネーブル
(許可)し、ない場合に割り込みをディスエーブル(禁
止)する(但し、エラーなどの例外処理に関連する割り
込みを抑止しない。これら例外処理については稼動中フ
ラグ68で監視せずに、別の割り込みライン(図示せ
ず)を使用することが望ましい)。
ローを示す。
よりプロセステーブル42を変更した後に割り込みを起
こし、割り込み処理47を起動する(802)。
べ、この割り込みがプロセス31〜32の状態の変更を
目的とする情報を取得したら、デバイスドライバ50を
呼ぶ必要がないことを判明する。これで、スケジューラ
41が呼ばれ(808)、対象となるプロセス31〜3
2が実行可能になり(806)、ブロッキング呼び出し
の処理を完了する(807)。
として割込み処理47から直接スケジューラ41を呼ぶ
ことを示している。但し、Linuxでは割込み処理4
7から直接スケジューラ41を呼べないため、ボトムハ
ーフ等の処理を延期する方法を使用して間接的にスケジ
ューラ41を呼ぶ。
1〜63の論理接続を確立したとき、プロセステーブル
42上で論理接続を確立したプロセスに対応するエント
リのアドレスを状態変更機構65〜67へ登録し、その
後、送受信を行う。そして、送受信完了時には、アダプ
タ6の状態変更機構65〜67は、送受信に対応したプ
ロセステーブル42上のエントリを、「I/O待ち」か
ら「実行可能」に更新し、その後、アダプタ6が割り込
みをかけることで、直接スケジューラ41を呼ぶことが
可能となる。
たように、割り込み処理47は、デバイスドライバ5
0、プロトコル処理49、スケジューラ41の順で、順
次処理を行っていたのに比して、本願発明によれば、割
り込み処理47から直接スケジューラ41を呼ぶように
したため、前記従来例の図8におけるステップ803、
804、805が不要になって、これらの処理に要する
オーバーヘッドを低減でき、送受信完了からプロセスの
実行までの時間を短縮することが可能となり、この結
果、プロセス31、32とアダプタ6間の通信(または
入出力)処理の高速化を図ることが可能となるのであ
る。
例に限定されるものではなく、以下に例示する変形例あ
るいは他の変形例によっても実現可能であることは言う
までもない。また、上記複数の実施の形態あるいはその
変形例として記載の技術あるいは以下の変形例の組み合
わせによっても実現できる。 (変形例1)上記図1では、プロトコル処理表40がプ
ロトコル処理の情報を持つ。しかし、実際のカーネル4
ではこの情報が複数の表として実現されることもある
が、本発明はこの場合にでも実現できる。 (変形例2)本発明はInfiniBandアダプタ6
に制限されておらず、他のプロトコル(TCP/IP
等)を処理するアダプタにも使用できる。
は、個別にインプリメントされたエンドポイント61〜
63がない場合が考えられる。しかし、このアダプタが
各TCP/IP論理接続の状態を管理するため、この管
理の中に状態変更機構65〜67相当の機能を追加する
ことで本発明をインプリメントできる。
信操作の完了が明確である一方、TCP/IPはストリ
ーミングプロトコルであるため、データが連続に流れ、
プロセス31、32の送受信の完了はプロトコルレベル
から見えない。このため、一つのパケットの送受信、ま
たはプロセス31、32が設定した最低限のデータ量な
どを送受信の完了の基準とする。 (変形例3)本発明は、上記InfiniBandやT
CP/IPのようなネットワークアダプタだけでなく、
ディスクや他のアダプタにも使用できる。例えば、ディ
スクアダプタは従来、データを入出力(書き込み/読み
出し)動作を起動するときに、書き込み/読み出しを対
象とする主記憶アドレスとディスクブロックを指定し、
これらの間で入出力が行われる。
用するために、上記の入出力動作を起動するための情報
に状態変更機構65〜67相当の情報(書き込みアドレ
スと値とバイト幅)を追加し、そしてアダプタにこの状
態変更機構65〜67相当の情報を送受信完了時にカー
ネル4側のプロセステーブル42へ書き込むための機能
を追加すればよい。 (変形例4)以上の説明では、論理接続確立のときに
「実行可能」を示す値とそのバイト幅をアダプタ6に登
録する例を示した。しかし、アダプタ6に「実行可能」
を示す情報を登録するタイミングは上記に限定されるも
のではなく、例えば、アダプタ6の初期化のときに登録
してもよい。そして、その値を各状態変更機構65〜6
7に登録することでなく、アダプタ全体にその値を登録
する一つの機構を追加することも考えられる。 (変形例5)上記図1において、アダプタ6の状態変更
機構65〜67が書き込み先を、プロセステーブル42
でなく、図5に示す別の表(表52)にすることが考え
られる。
ハードウェアにプロセステーブル42を直接アクセスさ
せないため、カーネル4に関する開発工数と信頼性の面
では望ましい。この場合、カーネル4の状態変更タスク
51がその表の値を定期的に調べ、アダプタ6からの書
き込みが行なわれた場合に、対象とするプロセスのプロ
セステーブル42の状態を変更する。
を起こした場合に、割り込み処理47からスケジューラ
41を直接呼ばない。代わりに、状態変更タスク51を
呼び、状態変更タスク51がプロセステーブル42を変
更し、スケジューラ41を呼ぶ手順になる。
べる方法として、例えばLinuxではTask Qu
eueを使用することが考えられる(A. Rubini, “Lin
ux Device Drivers," O'Reilly & Associates, ISBN 1-
56592-292-1参照)。アダプタ6を初期化したときにtq#
timerタスクキューに書き込みを調べるタスクを入れ、
そしてこの状態変更タスク51が、実行時に自分をこの
タスクキューに再び追加することで、書き込みを調べる
タスクがタイマー5割り込み毎に実行される。
は、書き込むアドレスと値とバイト幅ではなく、プロセ
ス識別子(プロセス番号など)を使用することが考えら
れる。なお、表52のデータ構造として、循環キューが
考えられる。循環キューの場合、アダプタ6が循環キュ
ーに、状態変更するプロセス31、32の情報(識別子
等)を書き込み、定期的にその情報を調べる状態変更タ
スク51がその情報を消費する。状態変更タスク51が
消費した分をアダプタ6か状態変更機構66に知らせる
(アダプタ6全体に一つの表52のみを設けた場合はア
ダプタ6に、状態変更機構66毎に表52を設けた場合
に状態変更機構66に知らせる)。
アダプタ6が主記憶にプロセス31、32に関する情報
を書き込むことで、直接的か間接的に対象となるプロセ
スの状態を変更する。代わりに、図5に示すとおり、主
記憶にないキュー53を設け、アダプタ6が状態変更す
るプロセス31、32の情報(識別子など)をこのキュ
ー53に追加し、定期的にこのキュー53の情報を調べ
る状態変更タスク51(上記変形例5参照)がこの情報
を読み出す方法が考えられる。
手段(または記憶域)、または割り込みコントローラの
内部の記憶手段(記憶域)などが考えられる。
フラグ68は、ハードウェアまたはソフトウェアの何れ
かで実現できる。まず、ハードウェアによる実現方法と
しては、アダプタ6の一部、そしてホスト1の回路(割
り込みコントローラ回路の内部など)が考えられる。
は、ホスト1の割り込みコントローラを設定して、アダ
プタ6からの割り込みをイネーブル/抑止することが考
えられる。
かりやすくするために、アダプタ6は、上記図2で示し
たように、ホスト1の内部I/Oバス107とネットワ
ーク7との間のアダプタにしたが、本発明はこの形態に
制限されていない。他の形態の具体例として、Infi
niBandと他ネットワークのアダプタが考えられる
(この場合、InfiniBandが内部バスの位置付
けを持つ)。そして、アダプタが一つまたは複数の接続
でInfiniBandのみに接続され、Infini
Band上のTCP/IPを処理する形態も考えられる
(この場合、内部バスと外部ネットワークがInfin
iBandとなる)。
かりやすくするために、ホスト1がコンピュータのよう
な情報処理装置を前提にした。しかし、本発明はこれら
の情報処理装置に制限されておらず、例えばストレージ
装置や、スイッチやルータのようなネットワーク装置、
またはそれらのアダプタにも適用できる。この場合、装
置は組み込み型装置向けオペレーティングシステムを使
用し、このオペレーティングシステムにプロセス31、
32という概念がないことがあるが、本発明は各I/O
処理の制御に使用できる。
ロセス31、32の状態を制御しているが、本発明はプ
ロセス31、32に制限されておらず、各プロセス3
1、32の中の処理スレッドの制御にも使用できる。
は、それ単独であるいは他のプログラムと組み合わせ
て、ディスク記憶装置等のプログラム記憶媒体に記憶さ
れた販売することができる。また、本発明を実施するた
めのプログラムは、すでに使用されている通信を行うプ
ログラムに追加される形式のプログラムでもよく、ある
いはその通信用のプログラムの一部を置換する形式のプ
ログラムでも良い。
示であって制限的なものではないと考えられるべきであ
る。本発明の範囲は上記した説明ではなくて特許請求の
範囲によって示され、特許請求の範囲と均等の意味及び
内容の範囲での全ての変更が含まれることが意図され
る。
を示すブロック図である。
ャートである。
ートである。
ブロック図である。
ホストの機能概略を示すブロック図。
ダプタを用いたホストの機能概略を示すブロック図。
み処理を示すタイムチャートである。
Claims (15)
- 【請求項1】アダプタに入出力動作を要求する処理と、 前記アダプタが入出力動作を行っている間は前記処理の
状態を実行待ちにするスケジュール手順とを備えて、前
記アダプタの入出力動作が完了したことに基づいて前記
処理の状態を実行可能に変更する入出力方法において、 前記アダプタの入出力動作が完了したときに、この動作
完了を待っている処理の状態をアダプタが実行可能状態
に変更することを特徴とする入出力方法。 - 【請求項2】前記スケジュール手順は、所定の記憶域に
処理毎にアドレスを対応づけて処理の状態を記憶し、 前記アダプタは、入出力動作が完了したときに、前記ス
ケジュール手順の処理に対応する記憶域へ実行可能状態
を示す値を書き込むことを特徴とする請求項1に記載の
入出力方法。 - 【請求項3】前記アダプタは、前記スケジュール手順に
記憶される処理に対応したアドレスと実行可能状態を示
す値を記録する記録手段を有し、 前記入出力動作を行う以前または行うときに前記記録手
段へ前記処理に対応するアドレス及び前記値を記録する
ことを特徴とする請求項2に記載の入出力方法。 - 【請求項4】前記スケジュール手順は、オペレーティン
グシステムに含まれて、入出力動作の完了を待っている
前記処理の識別子を記録する手段を有し、 前記オペレーティングシステムは、 前記アダプタの入出力動作が完了したときに前記識別子
をキューに追加する手順と、 定期的に前記キューの内容を読み出して、追加されてい
る識別子があった場合には、その識別子に対応する処理
の状態を実行可能にする手順と、を含むことを特徴とす
る請求項1に記載の入出力方法。 - 【請求項5】前記アダプタは、ネットワークプロトコル
に対して入出力動作を行うとともに、このプロトコルの
論理接続毎に前記記録手段を有し、 前記入出力動作は論理接続の送受信動作であることを特
徴とする請求項2ないし請求項4の何れか一つに記載の
入出力方法。 - 【請求項6】前記アダプタは、入出力装置アダプタまた
は入出力装置を接続する手段のアダプタであって、入出
力操作毎に前記記録手段を有することを特徴とする請求
項2ないし請求項4の何れか一つに記載の入出力方法。 - 【請求項7】前記スケジュール手順は、プロセッサの使
用状態に応じて割り込みを許可または禁止するフラグを
有し、 前記アダプタは、入出力動作が完了したときに、前記フ
ラグが許可状態のときに割り込みを発生することを特徴
とする請求項5または請求項6に記載の入出力方法。 - 【請求項8】入出力動作を行うアダプタと、 前記アダプタが入出力動作を行っている間は、当該入出
力動作を要求した処理の状態を実行待ちにするスケジュ
ール手段とを備え、 前記アダプタは、入出力動作が完了したときに、前記ス
ケジュール手段に対して、この入出力動作の完了を待っ
ている処理の状態を実行可能状態に変更することを特徴
とする情報処理装置。 - 【請求項9】前記スケジュール手段は、所定の記憶域に
処理毎にアドレスを対応づけて処理の状態を記憶し、 前記アダプタは、入出力動作が完了したときに、前記ス
ケジュール手段の処理に対応する記憶域へ実行可能状態
を示す値を書き込むことを特徴とする請求項8に記載の
情報処理装置。 - 【請求項10】前記アダプタは、前記スケジュール手段
に記憶される処理に対応するアドレスと実行可能状態を
示す値を記録する記録手段を備え、 前記入出力動作を行う以前または行うときに前記記録手
段へ前記処理に対応するアドレス及び前記値を記録する
ことを特徴とする請求項9に記載の情報処理装置。 - 【請求項11】前記スケジュール手段は、オペレーティ
ングシステムに含まれて、入出力動作の完了を待ってい
る前記処理の識別子を記録する識別子記録手段を有し、 前記オペレーティングシステムは、 前記アダプタの入出力動作が完了したときに前記識別子
をキューに追加する手段と、 定期的に前記キューの内容を読み出して、追加されてい
る識別子があった場合には、その識別子に対応する処理
の状態を実行可能にする手段と、を含むことを特徴とす
る請求項8に記載の情報処理装置。 - 【請求項12】前記アダプタは、ネットワークプロトコ
ルに対して入出力動作を行うとともに、このプロトコル
の論理接続毎に前記記録手段を有し、前記入出力動作は
論理接続の送受信動作であることを特徴とする請求項9
ないし請求項11の何れか一つに記載の情報処理装置。 - 【請求項13】前記アダプタは、入出力装置アダプタま
たは入出力装置を接続する手段のアダプタであって、入
出力操作毎に前記記録手段を有することを特徴とする請
求項8ないし請求項11の何れか一つに記載の情報処理
装置。 - 【請求項14】前記スケジュール手段は、プロセッサの
使用状態に応じて割り込みを許可または禁止するフラグ
を有し、 前記アダプタは、入出力動作が完了したときに、前記フ
ラグが許可状態のときに割り込みを発生する手段を有す
ることを特徴とする請求項12または請求項13に記載
の情報処理装置。 - 【請求項15】アダプタによる入出力処理を伴うプロセ
スを含む複数のプロセスを所定の順序でコンピュータに
実行させるプログラムであって、 前記プロセスから入出力処理が要求されたときには、こ
のプロセスの状態を実行待ち状態に変更する手順と、 この入出力処理を前記アダプタに実行させる手順と、 前記アダプタがプロセスの状態を実行可能状態へ変更し
たことを検出する手順と、 前記プロセスの状態が実行可能状態となったときには、
このプロセスの処理を再開する手順と、をコンピュータ
に実行させることを特徴とするプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002139572A JP4317348B2 (ja) | 2002-05-15 | 2002-05-15 | 情報処理装置及び入出力方法並びにプログラム |
US10/320,607 US7336664B2 (en) | 2002-05-15 | 2002-12-17 | Data processing device and its input/output method and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002139572A JP4317348B2 (ja) | 2002-05-15 | 2002-05-15 | 情報処理装置及び入出力方法並びにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003330873A true JP2003330873A (ja) | 2003-11-21 |
JP4317348B2 JP4317348B2 (ja) | 2009-08-19 |
Family
ID=29416910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002139572A Expired - Fee Related JP4317348B2 (ja) | 2002-05-15 | 2002-05-15 | 情報処理装置及び入出力方法並びにプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7336664B2 (ja) |
JP (1) | JP4317348B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008502084A (ja) * | 2004-06-30 | 2008-01-24 | インテル・コーポレーション | 一体化したdmaエンジンを用いて、高性能に揮発性ディスクドライブメモリへのアクセスを行うための装置および方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050187A1 (en) * | 2003-09-03 | 2005-03-03 | International Business Machines Corporation | Method and apparatus for support of bottleneck avoidance in an intelligent adapter |
US20060031837A1 (en) * | 2004-08-05 | 2006-02-09 | International Business Machines Corporation | Thread starvation profiler |
US7639715B1 (en) * | 2005-09-09 | 2009-12-29 | Qlogic, Corporation | Dedicated application interface for network systems |
US7735099B1 (en) | 2005-12-23 | 2010-06-08 | Qlogic, Corporation | Method and system for processing network data |
KR101409040B1 (ko) * | 2012-11-22 | 2014-06-18 | 엘에스산전 주식회사 | 피엘씨 시스템의 데이터 처리 장치 및 방법 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370592B1 (en) * | 1997-11-04 | 2002-04-09 | Hewlett-Packard Company | Network interface device which allows peripherals to utilize network transport services |
US6687905B1 (en) * | 2000-08-11 | 2004-02-03 | International Business Machines Corporation | Multiple port input/output job scheduling |
US6938111B2 (en) * | 2002-04-19 | 2005-08-30 | Siemens Aktiengesellschaft | Method for operating automation control equipment applications |
-
2002
- 2002-05-15 JP JP2002139572A patent/JP4317348B2/ja not_active Expired - Fee Related
- 2002-12-17 US US10/320,607 patent/US7336664B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008502084A (ja) * | 2004-06-30 | 2008-01-24 | インテル・コーポレーション | 一体化したdmaエンジンを用いて、高性能に揮発性ディスクドライブメモリへのアクセスを行うための装置および方法 |
Also Published As
Publication number | Publication date |
---|---|
US20030214909A1 (en) | 2003-11-20 |
JP4317348B2 (ja) | 2009-08-19 |
US7336664B2 (en) | 2008-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3358463B1 (en) | Method, device and system for implementing hardware acceleration processing | |
JP3169779B2 (ja) | マルチスレッドプロセッサ | |
US7577765B2 (en) | Advanced power management in generic USB drivers | |
US7496699B2 (en) | DMA descriptor queue read and cache write pointer arrangement | |
US20180143923A1 (en) | Providing State Storage in a Processor for System Management Mode | |
JP5479802B2 (ja) | ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、およびプログラム | |
US7200695B2 (en) | Method, system, and program for processing packets utilizing descriptors | |
US7233984B2 (en) | Light weight file I/O over system area networks | |
US8966488B2 (en) | Synchronising groups of threads with dedicated hardware logic | |
US20020091826A1 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
EP2240852B1 (en) | Scalable sockets | |
US7937499B1 (en) | Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card | |
JP2002351854A (ja) | プログラム実行装置および携帯型情報処理装置 | |
JP2006085400A (ja) | データ処理システム | |
US20180349297A1 (en) | Virtual host controller for a data processing system | |
US20050097226A1 (en) | Methods and apparatus for dynamically switching between polling and interrupt to handle network traffic | |
CN112306669A (zh) | 一种基于多核系统的任务处理方法及装置 | |
JP2002132741A (ja) | プロセッサ追加方法、計算機及び記録媒体 | |
JP5382736B2 (ja) | トークンプロトコル | |
WO2022042127A1 (zh) | 一种协程切换的方法、装置及设备 | |
JP2003330873A (ja) | 情報処理装置及び入出力方法並びにプログラム | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
US10788987B2 (en) | Data storage system employing service infrastructure for functional modules | |
CN117407183B (zh) | 线程间通信的方法及电子设备 | |
JP2002312302A (ja) | 周辺装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050406 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070911 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071112 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080805 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081006 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20081010 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090519 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090522 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120529 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120529 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130529 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130529 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |