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
Application number
JP2002139572A
Other languages
English (en)
Other versions
JP4317348B2 (ja
Inventor
Frederico Mashel
マシエル・フレデリコ
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002139572A priority Critical patent/JP4317348B2/ja
Priority to US10/320,607 priority patent/US7336664B2/en
Publication of JP2003330873A publication Critical patent/JP2003330873A/ja
Application granted granted Critical
Publication of JP4317348B2 publication Critical patent/JP4317348B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】 データの多重化を行うとともに割り込み処理
にかかる処理時間を低減して、入出力の高速化を図る。 【解決手段】 入出力動作を要求するプロセス31と、
プロセス31からの要求に基づいて入出力動作を行うア
ダプタ6と、アダプタ6が入出力動作を行っている間は
プロセス31の状態を実行待ちにするスケジューラ41
とを備え、アダプタ6の入出力動作が完了したときに、
この動作完了を待っているプロセス31の状態をアダプ
タ6が実行可能状態に変更することで、入出力動作を要
求したプロセス31の実行を再開させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は入出力アダプタ、特
にディスク装置、ネットワーク等を、コンピュータ等に
接続し、そのディスク装置やネットワークに使用するプ
ロトコルを処理するアダプタに関する。
【0002】
【従来の技術】ディスク接続方法やネットワークは、複
数の種類が存在し、イーサネット(登録商標)、Fib
re Channel、ATM、パラレルSCSIがそ
の例である。
【0003】これらのディスク接続方法やネットワーク
をホスト(コンピュータ)等の情報処理装置に接続する
とき、ホストの内部I/Oバスと、ディスク接続方法や
ネットワークを結ぶアダプタを使用する。
【0004】パーソナルコンピュータにおいては、PC
Iバスとイーサネットを結ぶネットワークアダプタがそ
のアダプタの一例である(PCIバスのコネクタに接続
するカードという形式のアダプタが良くあるが、マザー
ボードにこれらのコンポーネントを直接組み付ける例も
あり、この場合にもアダプタと呼ぶ)。
【0005】図6を使用してコンピュータシステムのア
ダプタ、そしてオペレーティングシステム(以下、O
S)のカーネルとプロセスの動作を説明する。
【0006】本願明細書では、説明を分かりやすくする
ためにネットワークアダプタ、そしてネットワークでの
通信に極めて一般的に使用されている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カーネルに制限されるものでは
ない。
【0007】まず、図6の場合、ホスト1の複数のプロ
セス(プログラム)31、32がアダプタ2を使用して
通信する(図6と今後の図にネットワーク上の通信相手
を図示しない)。カーネル4は、アダプタ2を制御し、
プロセス31、32のデータと制御の多重化(マルチプ
レクシング、デマルチプレクシング)をする。次にこの
多重化を説明する。
【0008】まず、データの多重化について説明する。
アダプタ2は複数のプロセス31、32のデータをまと
めて送受信するため、カーネル4はバッファ45を介し
て複数プロセス31、32とアダプタ2の間でデータの
多重化を行う。まず、受信処理について説明する。アダ
プタ2はネットワークからパケットを受信したとき、そ
のパケットをカーネル4のバッファ45に書き込む(ア
ダプタは、DMAで主記憶の書き込み/読み出しができ
る)。
【0009】そして、アダプタ2が受信完了のときに割
り込みを起こし、その割り込みを、このアダプタ2の割
り込み処理47のコードが処理し、デバイスドライバ4
6を呼び出す。デバイスドライバ46がバッファ45を
読み出し、パケットの通信プロトコルを調べ、このプロ
トコル(この例ではTCP/IP)のプロトコル処理4
3を呼び出す。
【0010】TCP/IPでは、予め確立された論理接
続の上でデータを通信する。プロトコル処理43はTC
P/IP処理を行うために、通信の状態の管理と、論理
接続とプロセスとの連携などを記録するプロトコル処理
表44を持つ。プロトコル処理43は、受信したデータ
の宛先となるプロセス31、32を調べ、このデータを
このプロセス31、32のバッファ33、34にそれぞ
れコピーし、受信したデータのバッファ45の領域を開
放し、受信処理を完了する。
【0011】送信処理はほぼ逆方向の処理を行う。ま
ず、プロセス31、32が送信データ33、34を指定
してプロトコル処理43を呼び出す。プロトコル処理4
3がそのデータ33、34をバッファ45にコピーし、
このバッファ45上でパケットを組み立て、デバイスド
ライバ46を呼び出す。デバイスドライバ46がアダプ
タ2を制御し、パケットを送信させる。送信が完了した
とき、アダプタ2が割り込みを起こし、この割り込みを
割り込み処理47と、デバイスドライバ46が処理し、
デバイスドライバ46が送信されたパケットのバッファ
45の領域を開放する。
【0012】次にプロセス制御の多重化を説明する。図
6において、アダプタ2は複数のプロセス31、32に
関する割り込みをまとめて起こすため、カーネル4がそ
の割り込みを各プロセス31、32のプロセス制御への
多重化も行う(この処理は普段「多重化」と呼ばれない
が、データの多重化との類似を指摘するためにこの明細
書はこの用語を使用する)。
【0013】プロセス制御は主に、次に説明するプロセ
ス状態の変更を行う。各プロセスは複数の状態があり、
「実行中」(どれかのCPUがこのプロセスを実行して
いるという状態)、「実行可能」(プロセスが実行でき
るが、CPUが実行していない状態)、「I/O待ち」
(プロセスが送受信などの完了を待っている状態)がそ
の例である(参考文献2参考。Linuxのプロセスは
これらの状態があるが、Linuxのtask#structの状
態は上記の3つの状態に一対一対応しない)。
【0014】カーネル4が送受信時に各プロセス31、
32の状態を管理し、プロセステーブル42に状態を記
録する。
【0015】図8に受信処理のタイムチャートを例にす
る。プロセス31、32がソケットAPIのブロッキン
グ呼び出し(データ受信完了まで待つ)を使用したと
き、カーネル4のプロトコル処理43が呼ばれる(80
0)。プロトコル処理43ではデータが受信されていな
い場合、カーネル4のスケジューラ41を呼び出し(8
01)プロセス31、32を実行中状態からI/O待ち
状態に変更する。
【0016】アダプタ2はデータ受信完了のときに割り
込みを起こす(802)。割り込み処理47、デバイス
ドライバ46とプロトコル処理43が呼び出され(80
3、804)、プロトコル処理43は上記受信処理の中
でどのプロセス31、32がこの受信に対応するかを調
べ、状態変更が必要である場合にスケジューラ41を呼
び出す(805)。スケジューラ41がデータを送受信
したプロセス31、32を実行可能状態にする。
【0017】その後(実行可能状態になった直後か、一
つあるいは複数のタイマー5割込み(後述)の後)、こ
のプロセス31、32が実行中状態となり(806)、
受信処理を完了する(807)。
【0018】なお、送受信に関わらず、タイマー5が定
期的に割り込みを起こし(Linuxでは100Hz、
参考文献1の140ページ参照)、タイマー処理48の
後にスケジューラが呼ばれ(参考文献1の133及び1
42ページ参照)、必要があればスケジューラ41が実
行可能と実行中プロセス31、32の中のどれを実行
中、実行可能にするかを選択する。この処理でカーネル
がタイムシェアリングを実現する。
【0019】近年、ネットワーク性能がサーバ処理能力
を大きく上回って向上してきた結果、TCP/IPプロ
トコルの処理がボトルネックとして顕在化してきた。
【0020】その対策として、アダプタでのプロトコル
処理の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参照)が開発されてきた。
【0021】図7にInfiniBandアダプタを例
にしてプロトコルを処理するアダプタ600を説明す
る。
【0022】このアダプタ600は、論理接続の通信エ
ンドポイント610〜630で、各論理接続の処理と通
信状態の管理をする(InfiniBandでは、この
通信エンドポイントをQueue Pairと呼び、以
下QPと略す)。
【0023】プロセス31、32がプロトコル処理49
とデバイスドライバ50を介して論理接続を確立する
が、確立後にカーネル4を介さないでエンドポイント6
10〜630を直接アクセスする(プロトコル処理4
9、プロトコル処理表40、デバイスドライバ50はプ
ロトコル処理43、プロトコル処理表44、デバイスド
ライバ46と同等であるが、後者のプロトコル処理を含
めず、接続管理の機能のみを含む)。
【0024】そして、アダプタ600はプロセス31、
32のデータ33、34を直接送受信するために複数の
通信エンドポイント610〜630の多重処理64を行
う。このため、アダプタ600の場合、カーネル4でな
く、アダプタ600がデータの多重化を行う。
【0025】InfiniBandアダプタ600を直
接駆動するにはソケットと異なったAPIを使用する
が、InfiniBand向けAPIにもブロッキング
呼び出しが存在すると考えられる(これらのAPIは現
在規格化中である)。
【0026】上記図7のInfiniBandアダプタ
600における処理を、上記図8のタイムチャートを用
いて説明すると、アダプタ600がデータ送受信のプロ
トコル処理をするため、ブロッキング呼び出し(80
0)のときにプロトコル処理49がスケジューラ41の
呼び出しをする(変形例としてここでは、特別なシステ
ムコールを設ければ、プロセス31、32が直接スケジ
ューラを呼べる)。送受信完了のときにアダプタ600
が割込みを起こす(802)。
【0027】
【発明が解決しようとする課題】上記図7の従来例にお
いては、プロトコルを処理するアダプタ600は、デー
タ送受信時にカーネル4をバイパスして、プロトコル処
理43のバイパス、そしてプロセス31、32のバッフ
ァ33、34とバッファ45とのデータコピーをなくす
ことなどにより、CPU負荷を削減し、通常のアダプタ
2(図6)のボトルネックの一部を解決する。
【0028】しかしながら、プロトコルを処理するアダ
プタ600がデータの多重化を処理する一方、制御の多
重化を行っていない。例えば、プロセス31、32がソ
ケットAPIのブロッキング受信呼び出しを使用したと
き、割り込みに関する処理、すなわち割り込み処理4
7、デバイスドライバ50、プロトコル処理49、スケ
ジューラ41の処理(802〜805)が必要である。
その結果、データ通信がカーネル4をバイパスする一
方、制御はカーネル4をバイパスしないため、ボトルネ
ックの一部が残ってしまう。
【0029】つまり、アダプタ600は送受信が完了す
ると、割り込み処理47を行って、プロトコル処理4
9、スケジューラ41を呼び出し、データ送受信待ち
(I/O待ち)となっていたプロセス31、32を実行
可能にする訳であるが、図7で示したように、複数のエ
ンドポイント610〜630で送受信が完了する度に割
り込み処理を行う必要があるため、各プロセスが「I/
O待ち」から「実行可能」となるまでに処理時間を要
し、このためデータの多重化のみでは、アダプタ600
における通信処理のオーバーヘッドを解消できない、と
いう問題があった。
【0030】そこで本発明は、上記問題点に鑑みてなさ
れたもので、データの多重化を行うとともに割り込み処
理にかかる時間を低減して、入出力の高速化を図ること
を目的とする。
【0031】
【課題を解決するための手段】本発明は、入出力動作を
要求する処理と、この処理からの要求に基づいて入出力
動作を行うアダプタと、前記アダプタが入出力動作を行
っている間は前記処理の状態を実行待ちにするスケジュ
ール手段とを備えて、前記アダプタの入出力動作が完了
したことに基づいて前記処理の状態を実行可能に変更す
る入出力方法において、前記アダプタの入出力動作が完
了したときに、この動作完了を待っている処理の状態を
アダプタが実行可能状態に変更することで、入出力動作
を要求した処理の実行を再開させる。
【0032】すなわち、プロセス31、32がブロッキ
ング呼び出しをし、この呼び出しに関する送受信が完了
したとき、アダプタ6がこのプロセス31、32のプロ
セステーブル42の状態を実行可能にする。このため、
割り込みとカーネル4の処理なしでプロセス31、32
の状態を変更できる。このプロセス31、32はその後
のタイマー処理48によるスケジューラ41の実行時に
実行中になる。
【0033】一方、ホスト1にアイドル状態のCPUが
あれば、性能を向上するために送受信完了時に実行可能
になったプロセス31、32をすぐに実行中にする必要
がある。このため、アイドル状態のCPUがあれば割り
込みを起こす。割り込み処理の後にスケジューラ41が
呼ばれ、このプロセス31、32が実行中になる。
【0034】
【発明の効果】したがって本発明は、入出力動作が要求
されると、アダプタによる入出力動作を実行するととも
に、要求した処理を実行待ち(I/O待ち)状態にす
る。そして、アダプタは入出力動作が完了すると、処理
の状態を直接的に実行待ち状態から実行可能状態へ変更
するため、入出力動作が完了した時点から処理が再び実
行されるまでの処理時間を短縮でき、入出力処理の高効
率化による高速化を図ることが可能となるのである。
【0035】
【発明の実施の形態】以下、本発明の一実施形態を添付
図面に基づいて説明する。
【0036】図1は、前記従来例の図7に示したInf
iniBandアダプタに、本発明を適用した一例を示
す。
【0037】ホスト(コンピュータ)1のオペレーティ
ングシステム上で稼働する複数のプロセス31、32
(アプリケーション)が、InfiniBandアダプ
タ6を使用して、ホスト1の外部とネットワーク7を介
して通信するもので、オペレーティングシステム(以
下、OS)のカーネル4は、InfiniBandアダ
プタ6を制御して、プロセス31、32のデータ33、
34と制御の多重化(マルチプレクシング、デマルチプ
レクシング)を行う。
【0038】ここで、ホスト1のハードウェア構成の概
略を図2に示す。
【0039】ホスト1には、複数のCPU(プロセッ
サ)101、102がCPUバス103を介してメモリ
ーコントローラ104に接続され、また、メモリーバス
105を介してメモリーコントローラ104はメモリー
106に接続されており、CPU101、102または
他のデバイスからメモリー106のアクセスを行う。
【0040】さらに、メモリーコントローラ104は、
内部I/Oバス107を介してInfiniBandア
ダプタ6に接続され、CPU101、102は外部のネ
ットワーク7と通信可能となる。
【0041】なお、メモリーコントローラ104には、
割り込みコントローラなどが含まれ、メモリー106が
主記憶となる。また、CPU101、102は論理的に
独立している仮想プロセッサで構成してもよい。
【0042】図1において、アダプタ6は、論理接続の
通信エンドポイント(QueuePairで、以下Q
P)61〜63で、各論理接続の処理と通信状態の管理
をする。
【0043】プロセス31、32がプロトコル処理49
とデバイスドライバ50を介して論理接続を確立する
が、論理接続の確立後にはカーネル4を介さないでエン
ドポイント61〜63を直接アクセスする。
【0044】そして、アダプタ6はプロセス31、32
のデータ33、34を直接送受信するために複数の通信
エンドポイント61〜63の多重処理64を行う。この
ため、InfiniBandアダプタ6の場合、カーネ
ル4でなく、InfiniBandアダプタ6がデータ
の多重化を行う。
【0045】オペレーティングシステムのプロセス制御
は主に、次に説明するプロセス状態の変更を行う。各プ
ロセスは複数の状態があり、「実行中」(どれかのCP
Uがこのプロセスを実行しているという状態)、「実行
可能」(プロセスが実行できるが、CPUが実行してい
ない状態)、「I/O待ち」(プロセスが送受信などの
完了を待っている状態)がその例である(参考文献2参
考。Linuxのプロセスはこれらの状態があるが、L
inuxのtask#structの状態は上記の3つの状態に一
対一対応しない)。
【0046】ここで、OS(ここではLinux)のカ
ーネル4には、プロセス31、32とアダプタ6の論理
接続を確立するプロトコル処理49、デバイスドライバ
50を備え、また、タイマー5によるタイマー処理48
または割り込み処理47によってプロセス31、32を
制御するスケジューラ41を備えている。
【0047】さらに、スケジューラ41のテーブル42
は、アダプタ6のエンドポイント61〜63にそれぞれ
設けた状態変更機構65〜67により、直接書き込み可
能に構成される。
【0048】また、アイドル状態のCPUがあるか否か
を示す稼働中フラグ68が設けられ、この稼働中フラグ
68は、スケジューラ41によって設定され、アダプタ
6からの割り込み要求をCPUの稼働状態に応じて制御
可能とする。
【0049】次に、各エンドポイント61〜63に設け
た、状態変更機構65〜67について説明する。
【0050】プロトコル処理49が、あるエンドポイン
ト61〜63をあるプロセス31、32にアロケート
し、このエンドポイント61〜63の論理接続を確立し
たとき、これらエンドポイント61〜63の状態変更機
構65〜67に、プロセステーブル42上でこれらプロ
セス31、32の状態を示すエントリのアドレスを登録
する。これにより、各エンドポイントの状態変更機構6
5〜67は、エンドポイント毎の論理接続に対応するプ
ロセステーブル42上のエントリへ書き込み可能とな
る。
【0051】そして、この状態変更機構65〜67への
エントリ登録時に、プロセステーブル42の各エントリ
のフィールド上で「実行可能」を示す値とバイト幅を状
態変更機構65〜67に登録する。なお、スケジューラ
41のプロセステーブル42は、主記憶上の所定の領域
に予め設定された記憶領域である。
【0052】また、論理接続上のデータ送受信時に、プ
ロセス31、32がブロッキング呼び出しを使用したと
きに、エンドポイント61〜63を起動して送受信を開
始する中で、送受信完了時に状態を変更することを要求
する(前記従来例と同じく、起動の処理を、標準API
の下にあるアダプタ6関連の通信ライブラリが実現す
る)。
【0053】この状態変更機構65〜67の動作につい
て、図3のタイムチャートを参照しながら説明する。
【0054】そして、プロセス31、32がプロトコル
処理49を呼び出し(図3の800)、プロトコル処理
49がこのプロセスの状態をI/O待ちにし、スケジュ
ーラ41を呼び出す(801)(これで、実行可能のプ
ロセス31、32があれば、これらのどれかが実行中に
なる)。
【0055】送受信が完了したときに、エンドポイント
61〜63が状態変更機構65〜67に登録されたエン
トリに基づいて、実行可能を示す値をDMAにより主記
憶のプロセステーブル42に書き込み、プロセス31、
32の状態をI/O待ちから実行可能に変更する(図1
では例として、エンドポイント62の状態変更機構66
からのプロセステーブル42への書き込みを矢印で示
す)。一つあるいは複数のタイマー5割込みの後、この
プロセス31、32が実行中になり(806)、ブロッ
キング呼び出しの処理を完了する(807)。
【0056】エンドポイントの送受信完了時に、全ての
CPUがビジーであれば、スケジューラを呼び出しても
ホスト1の性能が向上しない(実行中のプロセスのタイ
ムカンタムが終わっておらず、プロセス31、32の状
態が変更されないからである)。このため、状態変更機
構65〜67からプロセステーブル42への書き込みで
実行可能となったプロセスはその後のタイマー処理48
のときに実行中になる。
【0057】一方、アイドル状態のCPUがあれば、ホ
スト1の性能を向上するためにすぐにスケジューラを呼
び出し、実行可能となったプロセスを実行中にする必要
がある。
【0058】その結果、CPUのビジー状態により割り
込み制御(起こすか否か)が必要である。この割り込み
の制御を行うために、アイドル状態のCPUがあるか否
かを示すフラグとして上記稼動中フラグ68が設けら
れ、スケジューラ41が稼動中フラグ68を設定する。
【0059】アイドル状態のCPUがある場合、稼動中
フラグ68はアダプタ6からの割り込みをイネーブル
(許可)し、ない場合に割り込みをディスエーブル(禁
止)する(但し、エラーなどの例外処理に関連する割り
込みを抑止しない。これら例外処理については稼動中フ
ラグ68で監視せずに、別の割り込みライン(図示せ
ず)を使用することが望ましい)。
【0060】次に、図4には上記割り込み処理の処理フ
ローを示す。
【0061】アダプタ6は、状態変更機構65〜67に
よりプロセステーブル42を変更した後に割り込みを起
こし、割り込み処理47を起動する(802)。
【0062】割り込み処理47がアダプタ6の状態を調
べ、この割り込みがプロセス31〜32の状態の変更を
目的とする情報を取得したら、デバイスドライバ50を
呼ぶ必要がないことを判明する。これで、スケジューラ
41が呼ばれ(808)、対象となるプロセス31〜3
2が実行可能になり(806)、ブロッキング呼び出し
の処理を完了する(807)。
【0063】なお、この図4では、一般的な処理の流れ
として割込み処理47から直接スケジューラ41を呼ぶ
ことを示している。但し、Linuxでは割込み処理4
7から直接スケジューラ41を呼べないため、ボトムハ
ーフ等の処理を延期する方法を使用して間接的にスケジ
ューラ41を呼ぶ。
【0064】こうして、アダプタ6がエンドポイント6
1〜63の論理接続を確立したとき、プロセステーブル
42上で論理接続を確立したプロセスに対応するエント
リのアドレスを状態変更機構65〜67へ登録し、その
後、送受信を行う。そして、送受信完了時には、アダプ
タ6の状態変更機構65〜67は、送受信に対応したプ
ロセステーブル42上のエントリを、「I/O待ち」か
ら「実行可能」に更新し、その後、アダプタ6が割り込
みをかけることで、直接スケジューラ41を呼ぶことが
可能となる。
【0065】これにより、前記従来例では、図8で示し
たように、割り込み処理47は、デバイスドライバ5
0、プロトコル処理49、スケジューラ41の順で、順
次処理を行っていたのに比して、本願発明によれば、割
り込み処理47から直接スケジューラ41を呼ぶように
したため、前記従来例の図8におけるステップ803、
804、805が不要になって、これらの処理に要する
オーバーヘッドを低減でき、送受信完了からプロセスの
実行までの時間を短縮することが可能となり、この結
果、プロセス31、32とアダプタ6間の通信(または
入出力)処理の高速化を図ることが可能となるのであ
る。
【0066】本発明は、上記実施形態あるいはその変形
例に限定されるものではなく、以下に例示する変形例あ
るいは他の変形例によっても実現可能であることは言う
までもない。また、上記複数の実施の形態あるいはその
変形例として記載の技術あるいは以下の変形例の組み合
わせによっても実現できる。 (変形例1)上記図1では、プロトコル処理表40がプ
ロトコル処理の情報を持つ。しかし、実際のカーネル4
ではこの情報が複数の表として実現されることもある
が、本発明はこの場合にでも実現できる。 (変形例2)本発明はInfiniBandアダプタ6
に制限されておらず、他のプロトコル(TCP/IP
等)を処理するアダプタにも使用できる。
【0067】TCP/IPを処理するアダプタの場合に
は、個別にインプリメントされたエンドポイント61〜
63がない場合が考えられる。しかし、このアダプタが
各TCP/IP論理接続の状態を管理するため、この管
理の中に状態変更機構65〜67相当の機能を追加する
ことで本発明をインプリメントできる。
【0068】そして、InfiniBandでは各送受
信操作の完了が明確である一方、TCP/IPはストリ
ーミングプロトコルであるため、データが連続に流れ、
プロセス31、32の送受信の完了はプロトコルレベル
から見えない。このため、一つのパケットの送受信、ま
たはプロセス31、32が設定した最低限のデータ量な
どを送受信の完了の基準とする。 (変形例3)本発明は、上記InfiniBandやT
CP/IPのようなネットワークアダプタだけでなく、
ディスクや他のアダプタにも使用できる。例えば、ディ
スクアダプタは従来、データを入出力(書き込み/読み
出し)動作を起動するときに、書き込み/読み出しを対
象とする主記憶アドレスとディスクブロックを指定し、
これらの間で入出力が行われる。
【0069】この従来のディスクアダプタに本発明を適
用するために、上記の入出力動作を起動するための情報
に状態変更機構65〜67相当の情報(書き込みアドレ
スと値とバイト幅)を追加し、そしてアダプタにこの状
態変更機構65〜67相当の情報を送受信完了時にカー
ネル4側のプロセステーブル42へ書き込むための機能
を追加すればよい。 (変形例4)以上の説明では、論理接続確立のときに
「実行可能」を示す値とそのバイト幅をアダプタ6に登
録する例を示した。しかし、アダプタ6に「実行可能」
を示す情報を登録するタイミングは上記に限定されるも
のではなく、例えば、アダプタ6の初期化のときに登録
してもよい。そして、その値を各状態変更機構65〜6
7に登録することでなく、アダプタ全体にその値を登録
する一つの機構を追加することも考えられる。 (変形例5)上記図1において、アダプタ6の状態変更
機構65〜67が書き込み先を、プロセステーブル42
でなく、図5に示す別の表(表52)にすることが考え
られる。
【0070】この形態は、カーネル4の変更を削減し、
ハードウェアにプロセステーブル42を直接アクセスさ
せないため、カーネル4に関する開発工数と信頼性の面
では望ましい。この場合、カーネル4の状態変更タスク
51がその表の値を定期的に調べ、アダプタ6からの書
き込みが行なわれた場合に、対象とするプロセスのプロ
セステーブル42の状態を変更する。
【0071】そして、アイドルCPUがあり、割り込み
を起こした場合に、割り込み処理47からスケジューラ
41を直接呼ばない。代わりに、状態変更タスク51を
呼び、状態変更タスク51がプロセステーブル42を変
更し、スケジューラ41を呼ぶ手順になる。
【0072】状態変更タスク51が表52を定期的に調
べる方法として、例えばLinuxではTask Qu
eueを使用することが考えられる(A. Rubini, “Lin
ux Device Drivers," O'Reilly & Associates, ISBN 1-
56592-292-1参照)。アダプタ6を初期化したときにtq#
timerタスクキューに書き込みを調べるタスクを入れ、
そしてこの状態変更タスク51が、実行時に自分をこの
タスクキューに再び追加することで、書き込みを調べる
タスクがタイマー5割り込み毎に実行される。
【0073】本変形例の場合、プロセステーブル42に
は、書き込むアドレスと値とバイト幅ではなく、プロセ
ス識別子(プロセス番号など)を使用することが考えら
れる。なお、表52のデータ構造として、循環キューが
考えられる。循環キューの場合、アダプタ6が循環キュ
ーに、状態変更するプロセス31、32の情報(識別子
等)を書き込み、定期的にその情報を調べる状態変更タ
スク51がその情報を消費する。状態変更タスク51が
消費した分をアダプタ6か状態変更機構66に知らせる
(アダプタ6全体に一つの表52のみを設けた場合はア
ダプタ6に、状態変更機構66毎に表52を設けた場合
に状態変更機構66に知らせる)。
【0074】(変形例6)以上の実施形態と変形例に、
アダプタ6が主記憶にプロセス31、32に関する情報
を書き込むことで、直接的か間接的に対象となるプロセ
スの状態を変更する。代わりに、図5に示すとおり、主
記憶にないキュー53を設け、アダプタ6が状態変更す
るプロセス31、32の情報(識別子など)をこのキュ
ー53に追加し、定期的にこのキュー53の情報を調べ
る状態変更タスク51(上記変形例5参照)がこの情報
を読み出す方法が考えられる。
【0075】このキュー53は、アダプタの内部の記憶
手段(または記憶域)、または割り込みコントローラの
内部の記憶手段(記憶域)などが考えられる。
【0076】(変形例7)上記実施形態に示した稼動中
フラグ68は、ハードウェアまたはソフトウェアの何れ
かで実現できる。まず、ハードウェアによる実現方法と
しては、アダプタ6の一部、そしてホスト1の回路(割
り込みコントローラ回路の内部など)が考えられる。
【0077】次に、ソフトウェアによる実現方法として
は、ホスト1の割り込みコントローラを設定して、アダ
プタ6からの割り込みをイネーブル/抑止することが考
えられる。
【0078】(変形例8)以上の説明では説明や図を分
かりやすくするために、アダプタ6は、上記図2で示し
たように、ホスト1の内部I/Oバス107とネットワ
ーク7との間のアダプタにしたが、本発明はこの形態に
制限されていない。他の形態の具体例として、Infi
niBandと他ネットワークのアダプタが考えられる
(この場合、InfiniBandが内部バスの位置付
けを持つ)。そして、アダプタが一つまたは複数の接続
でInfiniBandのみに接続され、Infini
Band上のTCP/IPを処理する形態も考えられる
(この場合、内部バスと外部ネットワークがInfin
iBandとなる)。
【0079】(変形例9)以上の説明では説明や図を分
かりやすくするために、ホスト1がコンピュータのよう
な情報処理装置を前提にした。しかし、本発明はこれら
の情報処理装置に制限されておらず、例えばストレージ
装置や、スイッチやルータのようなネットワーク装置、
またはそれらのアダプタにも適用できる。この場合、装
置は組み込み型装置向けオペレーティングシステムを使
用し、このオペレーティングシステムにプロセス31、
32という概念がないことがあるが、本発明は各I/O
処理の制御に使用できる。
【0080】(変形例10)以上の説明では本発明はプ
ロセス31、32の状態を制御しているが、本発明はプ
ロセス31、32に制限されておらず、各プロセス3
1、32の中の処理スレッドの制御にも使用できる。
【0081】なお、本発明を実施するためのプログラム
は、それ単独であるいは他のプログラムと組み合わせ
て、ディスク記憶装置等のプログラム記憶媒体に記憶さ
れた販売することができる。また、本発明を実施するた
めのプログラムは、すでに使用されている通信を行うプ
ログラムに追加される形式のプログラムでもよく、ある
いはその通信用のプログラムの一部を置換する形式のプ
ログラムでも良い。
【0082】今回開示した実施の形態は、全ての点で例
示であって制限的なものではないと考えられるべきであ
る。本発明の範囲は上記した説明ではなくて特許請求の
範囲によって示され、特許請求の範囲と均等の意味及び
内容の範囲での全ての変更が含まれることが意図され
る。
【図面の簡単な説明】
【図1】本発明の一実施形態を示し、ホストの機能概略
を示すブロック図である。
【図2】同じく、ハードウェアの概略図である。
【図3】アダプタの状態変更機構の動作を示すタイムチ
ャートである。
【図4】アダプタからの割り込み処理を示すタイムチャ
ートである。
【図5】他の実施形態を示し、ホストの機能概略を示す
ブロック図である。
【図6】従来例を示し、ネットワークアダプタを用いた
ホストの機能概略を示すブロック図。
【図7】他の従来例を示し、InfiniBandのア
ダプタを用いたホストの機能概略を示すブロック図。
【図8】同じく、従来例を示し、アダプタからの割り込
み処理を示すタイムチャートである。
【符号の説明】
1 ホスト 4 カーネル 6 アダプタ 41 スケジューラ 42 プロセステーブル 61〜63 エンドポイント 65〜67 状態変更機構

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】アダプタに入出力動作を要求する処理と、 前記アダプタが入出力動作を行っている間は前記処理の
    状態を実行待ちにするスケジュール手順とを備えて、前
    記アダプタの入出力動作が完了したことに基づいて前記
    処理の状態を実行可能に変更する入出力方法において、 前記アダプタの入出力動作が完了したときに、この動作
    完了を待っている処理の状態をアダプタが実行可能状態
    に変更することを特徴とする入出力方法。
  2. 【請求項2】前記スケジュール手順は、所定の記憶域に
    処理毎にアドレスを対応づけて処理の状態を記憶し、 前記アダプタは、入出力動作が完了したときに、前記ス
    ケジュール手順の処理に対応する記憶域へ実行可能状態
    を示す値を書き込むことを特徴とする請求項1に記載の
    入出力方法。
  3. 【請求項3】前記アダプタは、前記スケジュール手順に
    記憶される処理に対応したアドレスと実行可能状態を示
    す値を記録する記録手段を有し、 前記入出力動作を行う以前または行うときに前記記録手
    段へ前記処理に対応するアドレス及び前記値を記録する
    ことを特徴とする請求項2に記載の入出力方法。
  4. 【請求項4】前記スケジュール手順は、オペレーティン
    グシステムに含まれて、入出力動作の完了を待っている
    前記処理の識別子を記録する手段を有し、 前記オペレーティングシステムは、 前記アダプタの入出力動作が完了したときに前記識別子
    をキューに追加する手順と、 定期的に前記キューの内容を読み出して、追加されてい
    る識別子があった場合には、その識別子に対応する処理
    の状態を実行可能にする手順と、を含むことを特徴とす
    る請求項1に記載の入出力方法。
  5. 【請求項5】前記アダプタは、ネットワークプロトコル
    に対して入出力動作を行うとともに、このプロトコルの
    論理接続毎に前記記録手段を有し、 前記入出力動作は論理接続の送受信動作であることを特
    徴とする請求項2ないし請求項4の何れか一つに記載の
    入出力方法。
  6. 【請求項6】前記アダプタは、入出力装置アダプタまた
    は入出力装置を接続する手段のアダプタであって、入出
    力操作毎に前記記録手段を有することを特徴とする請求
    項2ないし請求項4の何れか一つに記載の入出力方法。
  7. 【請求項7】前記スケジュール手順は、プロセッサの使
    用状態に応じて割り込みを許可または禁止するフラグを
    有し、 前記アダプタは、入出力動作が完了したときに、前記フ
    ラグが許可状態のときに割り込みを発生することを特徴
    とする請求項5または請求項6に記載の入出力方法。
  8. 【請求項8】入出力動作を行うアダプタと、 前記アダプタが入出力動作を行っている間は、当該入出
    力動作を要求した処理の状態を実行待ちにするスケジュ
    ール手段とを備え、 前記アダプタは、入出力動作が完了したときに、前記ス
    ケジュール手段に対して、この入出力動作の完了を待っ
    ている処理の状態を実行可能状態に変更することを特徴
    とする情報処理装置。
  9. 【請求項9】前記スケジュール手段は、所定の記憶域に
    処理毎にアドレスを対応づけて処理の状態を記憶し、 前記アダプタは、入出力動作が完了したときに、前記ス
    ケジュール手段の処理に対応する記憶域へ実行可能状態
    を示す値を書き込むことを特徴とする請求項8に記載の
    情報処理装置。
  10. 【請求項10】前記アダプタは、前記スケジュール手段
    に記憶される処理に対応するアドレスと実行可能状態を
    示す値を記録する記録手段を備え、 前記入出力動作を行う以前または行うときに前記記録手
    段へ前記処理に対応するアドレス及び前記値を記録する
    ことを特徴とする請求項9に記載の情報処理装置。
  11. 【請求項11】前記スケジュール手段は、オペレーティ
    ングシステムに含まれて、入出力動作の完了を待ってい
    る前記処理の識別子を記録する識別子記録手段を有し、 前記オペレーティングシステムは、 前記アダプタの入出力動作が完了したときに前記識別子
    をキューに追加する手段と、 定期的に前記キューの内容を読み出して、追加されてい
    る識別子があった場合には、その識別子に対応する処理
    の状態を実行可能にする手段と、を含むことを特徴とす
    る請求項8に記載の情報処理装置。
  12. 【請求項12】前記アダプタは、ネットワークプロトコ
    ルに対して入出力動作を行うとともに、このプロトコル
    の論理接続毎に前記記録手段を有し、前記入出力動作は
    論理接続の送受信動作であることを特徴とする請求項9
    ないし請求項11の何れか一つに記載の情報処理装置。
  13. 【請求項13】前記アダプタは、入出力装置アダプタま
    たは入出力装置を接続する手段のアダプタであって、入
    出力操作毎に前記記録手段を有することを特徴とする請
    求項8ないし請求項11の何れか一つに記載の情報処理
    装置。
  14. 【請求項14】前記スケジュール手段は、プロセッサの
    使用状態に応じて割り込みを許可または禁止するフラグ
    を有し、 前記アダプタは、入出力動作が完了したときに、前記フ
    ラグが許可状態のときに割り込みを発生する手段を有す
    ることを特徴とする請求項12または請求項13に記載
    の情報処理装置。
  15. 【請求項15】アダプタによる入出力処理を伴うプロセ
    スを含む複数のプロセスを所定の順序でコンピュータに
    実行させるプログラムであって、 前記プロセスから入出力処理が要求されたときには、こ
    のプロセスの状態を実行待ち状態に変更する手順と、 この入出力処理を前記アダプタに実行させる手順と、 前記アダプタがプロセスの状態を実行可能状態へ変更し
    たことを検出する手順と、 前記プロセスの状態が実行可能状態となったときには、
    このプロセスの処理を再開する手順と、をコンピュータ
    に実行させることを特徴とするプログラム。
JP2002139572A 2002-05-15 2002-05-15 情報処理装置及び入出力方法並びにプログラム Expired - Fee Related JP4317348B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502084A (ja) * 2004-06-30 2008-01-24 インテル・コーポレーション 一体化したdmaエンジンを用いて、高性能に揮発性ディスクドライブメモリへのアクセスを行うための装置および方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502084A (ja) * 2004-06-30 2008-01-24 インテル・コーポレーション 一体化したdmaエンジンを用いて、高性能に揮発性ディスクドライブメモリへのアクセスを行うための装置および方法

Also Published As

Publication number Publication date
JP4317348B2 (ja) 2009-08-19
US7336664B2 (en) 2008-02-26
US20030214909A1 (en) 2003-11-20

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
JP2005092875A (ja) スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法
US7937499B1 (en) Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card
US10540301B2 (en) Virtual host controller for a data processing system
JP2002351854A (ja) プログラム実行装置および携帯型情報処理装置
JP2006085400A (ja) データ処理システム
US20050097226A1 (en) Methods and apparatus for dynamically switching between polling and interrupt to handle network traffic
CN112306669A (zh) 一种基于多核系统的任务处理方法及装置
JP2002132741A (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
JP2003005987A (ja) エミュレーション装置
KR960006472B1 (ko) TICOM IOP 환경에서 FDDI펌웨어(firmware) 구동방법

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