(57)【要約】【課題】他の装置に所定機能をオフロードすることができる単一のＬＡＮアダプタを提供する。【解決手段】プロセッサの性能を改善するために機能をオフロードするための方法、装置及びコンピュータ・プログラムが提供される。他の装置に所定機能をオフロードすることができる単一のＬＡＮアダプタを提供する。機能をオフロードするいろいろな方法が記載されている。第１に、ユーザ及びアプリケーションが、要求に応じて、オフロードされるべき機能だけを選び出すことができる。第２に、所定のスケジューラを通してオフロードされるべき機能をスケジューラがスケジューリングする。第３に、知識データベースに記憶されているヒューリスティック方法又は学習方法に基づいて機能がオフロードされ得る。【選択図】図２
2006294027.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいて機能をオフロードする方法であって、
前記データ処理システムにおいて実行されるべき機能を求める要求をプロセッサにおいて受け取るステップと、
データ構造に基づいて前記機能をネットワーク・アダプタにオフロードするべきか否か判定するステップと、
前記機能が前記ネットワーク・アダプタにオフロードされるべきであるとの判定に応答して、前記ネットワーク・アダプタへのインターフェースを確立して前記機能を前記ネットワーク・アダプタにオフロードするステップと、
前記機能が前記ネットワーク・アダプタにオフロードされるべきではないという判定に応答して、前記プロセッサを用いて前記機能を処理するステップと、
を含む、方法。
【請求項２】
前記機能を前記ネットワーク・アダプタにオフロードするステップは、
ネットワーク・アダプタでアクセス制御を実行するステップと、
オフロード属性を接続毎に使用可能にするステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記データ構造はオフロード機能データ構造である、請求項１に記載の方法。
【請求項４】
前記データ構造は、オフロードされるべき機能を定義するユーザによって更新される、請求項１に記載の方法。
【請求項５】
前記データ構造は、オフロードされるべき機能を定義するアプリケーションによって更新される、請求項１に記載の方法。
【請求項６】
前記データ構造は、機能がオフロードされるべき時間を定義するスケジューラによって更新される、請求項１に記載の方法。
【請求項７】
前記スケジューラは、予定イベント・データ構造に基づいて前記時間を決定する、請求項６に記載の方法。
【請求項８】
前記データ構造は、機能がオフロードされるべきイベントを定義するヒューリスティック・インターフェースによって更新される、請求項１に記載の方法。
【請求項９】
前記ヒューリスティック・インターフェースは、知識データベースに記憶されているイベントに基づいて前記時間を決定する、請求項８に記載の方法。
【請求項１０】
データ処理システムであって、
バス・システムと、
前記バス・システムに接続された通信ユニットと、
前記バス・システムに接続された、一連の命令を含むメモリと、
ネットワーク・アダプタと、
前記バス・システムに接続された処理ユニットと、
を含み、前記処理ユニットは、前記データ処理システムにおいて実行されるべき機能を求める要求をプロセッサにおいて受け取り、データ構造に基づいて前記機能を前記ネットワーク・アダプタにオフロードするべきか否か判定し、前記機能が前記ネットワーク・アダプタにオフロードされるべきであるとの判定に応答して、前記ネットワーク・アダプタへのインターフェースを確立して前記機能を前記ネットワーク・アダプタにオフロードし、前記機能が前記ネットワーク・アダプタにオフロードされるべきではないという判定に応答して、前記処理ユニットを用いて前記機能を処理するために前記一連の命令を実行する、データ処理システム。
【請求項１１】
前記機能を前記ネットワーク・アダプタにオフロードするために前記一連の命令を実行するとき、前記プロセッサは、前記ネットワーク・アダプタでアクセス制御を実行しオフロード属性を接続毎に使用可能にするために一連の命令を実行する、請求項１０に記載のデータ処理システム。
【請求項１２】
前記データ構造はオフロード機能データ構造である、請求項１０に記載のデータ処理システム。
【請求項１３】
前記データ構造は、オフロードされるべき機能を定義するユーザによって更新される、請求項１０に記載のデータ処理システム。
【請求項１４】
前記データ構造は、オフロードされるべき機能を定義するアプリケーションによって更新される、請求項１０に記載のデータ処理システム。
【請求項１５】
前記データ構造は、機能がオフロードされるべき時間を定義するスケジューラによって更新される、請求項１０に記載のデータ処理システム。
【請求項１６】
前記スケジューラは、予定イベント・データ構造に基づいて前記時間を決定する、請求項１５に記載のデータ処理システム。
【請求項１７】
前記データ構造は、機能がオフロードされるべきイベントを定義するヒューリスティック・インターフェースによって更新される、請求項１０に記載のデータ処理システム。
【請求項１８】
前記ヒューリスティック・インターフェースは、知識データベースに記憶されているイベントに基づいて前記時間を決定する、請求項１７に記載のデータ処理システム。
【請求項１９】
機能をオフロードするためのコンピュータ・プログラムであって、
データ処理システムにおいて実行されるべき機能を求める要求をプロセッサにおいて受け取るための第１の命令と、
データ構造に基づいて前記機能をネットワーク・アダプタにオフロードするべきか否か判定するための第２の命令と、
前記機能が前記ネットワーク・アダプタにオフロードされるべきであるとの判定に応答して、前記ネットワーク・アダプタへのインターフェースを確立して前記機能を該ネットワーク・アダプタにオフロードするための第３の命令と、
前記機能が前記ネットワーク・アダプタにオフロードされるべきではないという判定に応答して、前記プロセッサを用いて前記機能を処理するための第４の命令と、
を含む、コンピュータ・プログラム。
【請求項２０】
前記機能を前記ネットワーク・アダプタにオフロードすることを含む前記第３の命令は、
前記ネットワーク・アダプタでアクセス制御を実行するための第１の副命令と、
オフロード属性を接続毎に使用可能にするための第２の副命令と、
を含む、請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、プロセッサの性能を改善するために機能をオフロードすることに関する。更に具体的には、本発明は、プロセッサの性能を改善するために単一のＬＡＮアダプタに機能をオフロードする。
【背景技術】
【０００２】
複数のコンピュータ同士が初めて結合されて以来、割合に短い期間のうちにローカル・エリア・ネットワーク（ＬＡＮ）技術及び性能が大幅に改善されてきた。最初のころのイーサネット（Ｅｔｈｅｒｎｅｔ）ネットワークは、各ネットワーク装置についてタップする（接続する）単一の同軸ケーブルから構成されていた。この相互接続スタイルは１９８０年代初期に現れ、その頃、コンピュータ・ネットワーク化はシックネット（Ｔｈｉｃｋｎｅｔ。今では１０ＢＡＳＥ−５として知られている）で達成され、後にはＩＥＥＥ８０２．３規格を用いて達成された。コンピュータ同士を結合させる機械的プロセスは、ケーブルにタップする必要を無くしたシンネット（Ｔｈｉｎｎｅｔ。今は１０ＢＡＳＥ−２として知られている）の採用で少し改善した。シンネットの同軸コネクタでは複数の装置の相互接続は遥かに容易だったが、この技術でも依然として単一の同軸ケーブル上で複数のネットワーク装置を一列に配列していた。これらの規格のうちのいずれかを利用する複数の装置間ではレイヤー２パケットが伝送され、ケーブル上の他の全ての装置によっても受信される。他の全ての接続されている装置からのメッセージを受信することのできる装置のグループ（セグメントとも称される）のことを衝突ドメイン（ｃｏｌｌｉｓｉｏｎ  ｄｏｍａｉｎ）というが、単一の衝突ドメインでの情報の整然とした伝送を制御するためには、これらの規格についてパケット伝送プロトコル、すなわちＣＳＭＡ／ＣＤが必要であった。このような全体像の中で、レイヤー２ブロードキャストを受信することのできる装置のグループ（セグメント）をブロードキャスト・ドメインと呼び、更に、装置に直接アドレスされていないユニキャストされたレイヤー２パケットを受信することのできる装置のグループ（セグメント）を反復セグメントと呼んでいる。
【０００３】
時間が経過して、単一ワイヤ実装（ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）はイーサネット反復セグメント・ハブ（ＨＵＢ）及びＲＪ−４５スタイルのケーブル接続（１０ＢＡＳＥ−Ｔ）に取って代わられた。モジュール化１０ＢＡＳＥ−Ｔコンポーネントへの変化は、ＬＡＮ装置を相互に接続するために使われる方法に大きな改善をもたらしたが、単一ブロードキャスト・ドメイン及びＣＳＭＡ／ＣＤの性能の限界は残った。ローカル・エリア・ネットワークは、数百台のコンピュータが同じ１０Ｍｂブロードキャスト・ドメインを共有するポート密度にまで成長した。ＬＡＮ管理者は、大きなブロードキャスト・ドメインがネットワーク性能及びデータの機密性と矛盾する（一貫性がない）ということにすぐに気がついた。
【０００４】
レイヤー２イーサネット・ブリッジとイーサネット・スイッチとは、宛先装置がポートの背後に位置していなければ、ユニキャスト・パケットをポートの外へ送らない。この特徴の故に、まずはブリッジング及びスイッチングの２つの方法などを利用して衝突ドメイン及び反復ＬＡＮセグメントのサイズを制限した。スイッチ及びブリッジを配置すると、ＬＡＮの性能とデータの機密性が向上した。レイヤー２スイッチング技術の価格が低下し、これらのスイッチのポート密度が増大するにつれて、ＬＡＮ管理者はネットワークのまさに周辺部にスイッチを配置し始めた。より小さなネットワーク及びソーホー（ＳＯＨＯ）アプリケーションでは依然として反復ハブが見られるが、最新のＬＡＮではイーサネット・スイッチが殆ど完全に反復ハブ装置に取って代わった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
過去１０年間にわたって、ＬＡＮ技術は、特にイーサネットは、メディア速度を３ないし４年ごとに１０倍に向上させた。対照的に、中央処理装置（ＣＰＵ）の速度は２年ごとに２倍になる。従って、ＣＰＵは高Ｉ／Ｏ性能システムにおいては急速にボトルネックになってきている。プロセッサ性能のこの遅れを緩和するために、ホストの増え続けるネイティブ（ｎａｔｉｖｅ）機能をＩ／Ｏアダプタにオフロードすることができる。機能（ｆｕｎｃｔｉｏｎ）をオフロードすれば、ホストＣＰＵの作業負荷（ワークロード）が減少し、Ｉ／Ｏアダプタのスループットが向上するという付加的利点が得られる。しかし顧客は、アプリケーションによって異なるオフロード機能のセットを必要とするので、オフロードされるべき機能を選択するときには注意する必要がある。現在、Ｉ／Ｏアダプタのベンダーは、顧客が欲しがりそうだと自分たちが感じている特定のオフロード機能で自分たちのＩ／Ｏソリューションをカスタマイズすることによって、これらの顧客のニーズに対処しようとしている。この「行き当りばったり（ｈｉｔ  ａｎｄ  ｍｉｓｓ）」のアプローチは、数個のバージョンのアダプタの試験及び維持にコストがかかるため、結果的に高価なものになってしまう。同じタイプのアダプタについてマルチレベルのオフロード機能（２つ以上）でも、完全なソリューションからは程遠い。
【０００６】
現在のアプローチを用いる際に生じる別の問題は、全てのアプリケーションが同じアダプタを使用するときに同じオフロード機能が発生することである。この場合、オフロードされた機能を必要としないかも知れないアプリケーションやオフロードされた機能ではうまく働かないアプリケーションがあるかも知れないので、問題が生じる。例えば、ＴＣＰ／ＩＰ環境では、オフロードを準備するプロセスは、単にチェックサムを計算するよりもＣＰＵ集約的でありうるので、小さなパケット・サイズだけを送受信するアプリケーションはオフロードされたチェックサム機能ではうまく働かないおそれがある。
【０００７】
従って、他の接続されている装置への機能のオフロードを提供する単一のＬＡＮアダプタを持つのが有利であると考えられる。
【課題を解決するための手段】
【０００８】
本発明は、機能をオフロードしてプロセッサの性能を改善するための方法、装置及びコンピュータ・プログラムを提供する。本発明の代表的な側面によれば、他の装置に所定機能をオフロードすることができる単一のＬＡＮアダプタが提供される。機能のオフロードについては３つの仕方が提供される。第１に、ユーザ及びアプリケーションが、要求に応じて、オフロードされるべき機能だけを選び出すことができる。第２に、オフロードされるべき機能のスケジューリングが所定のスケジューラで定められ得る。第３に、知識データベースを介して、オフロードされ得る機能のヒューリスティック又は学習である。
【発明を実施するための最良の形態】
【０００９】
本発明を特徴付けると考えられる新規な特徴は、添付されている請求項に記載されている。しかし、本発明自体と、好ましい使用方法、その更なる目的及び利点とは、実施形態ついての以下の詳細な説明を添付図面と関連させて読むことにより最も良く理解されるであろう。
【００１０】
以下図を参照する。特に図１を参照すると、本発明が実施され得るデータ処理システムが、本発明の好ましい実施態様に従って示されている。コンピュータ１００が描かれており、これは、システム・ユニット１０２と、ビデオ・ディスプレイ端末１０４と、キーボード１０６と、記憶装置１０８と（該記憶装置はフレキシブルディスク・ドライブ及びその他のタイプの永久的で取り外し可能な記憶媒体を含むことができる）、マウス１１０とを含む。パーソナル・コンピュータ１００には、例えばジョイスティック、タッチパッド、タッチ・スクリーン、トラックボール、マイクロフォンなどの付加的な入力装置が一緒に含まれ得る。コンピュータ１００は、ＩＢＭ社のｅＳｅｒｖｅｒ（商標）コンピュータ又はＩｎｔｅｌｌｉＳｔａｔｉｏｎ（Ｒ）コンピュータなどの任意の適切なコンピュータを用いて実現され得るものである。図ではコンピュータを図示しているが、ネットワーク・コンピュータなどの他のタイプのデータ処理システムでも本発明の他の実施態様を実現することができる。コンピュータ１００は、好ましくは、コンピュータ１００の中で動作するコンピュータ可読媒体内に存在するシステム・ソフトウェアによって実現され得るグラフィカル・ユーザ・インターフェース（ＧＵＩ）も含む。
【００１１】
図２を参照すると、本発明を実施することができるデータ処理システムのブロック図が示されている。データ処理システム２００は、図１のコンピュータ１００などのコンピュータの一例であり、これに本発明のプロセスを実行するコード又は命令を実装することができる。データ処理システム２００は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ローカルバス・アーキテクチャを使用する。描かれている例はＰＣＩバスを使用しているが、アクセレレイテッド・グラフィックス・ポート（ＡＧＰ）及びインダストリー・スタンダード・アーキテクチャ（ＩＳＡ）などの他のバス・アーキテクチャを使用することもできる。プロセッサ２０２とメインメモリ２０４とは、ＰＣＩブリッジ２０８を通してＰＣＩローカルバス２０６に接続されている。ＰＣＩブリッジ２０８は、プロセッサ２０２のための統合メモリ・コントローラ及びキャッシュメモリも含むことができる。ＰＣＩローカルバス２０６への付加的な接続部を、直接コンポーネント相互接続を通して、或いはアドイン・コネクタを通して、作ることもできる。
【００１２】
図示の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１０、小型コンピューター・システム・インターフェース（ＳＣＳＩ）ホストバス・アダプタ２１２、及び拡張バス・インターフェース２１４が直接コンポーネント接続によりＰＣＩローカルバス２０６に接続されている。対照的に、オーディオ・アダプタ２１６、グラフィックス・アダプタ２１８、及びオーディオ／ビデオ・アダプタ２１９は、拡張スロットに挿入されたアドイン・ボードによりＰＣＩローカルバス２０６に接続される。拡張バス・インターフェース２１４は、キーボード及びマウス・アダプタ２２０、モデム２２２、並びに追加メモリ２２４のための接続部を提供する。ＳＣＳＩホストバス・アダプタ２１２は、ハードディスク・ドライブ２２６、テープ・ドライブ２２８、及びＣＤ−ＲＯＭドライブ２３０のための接続部を提供する。代表的なＰＣＩローカルバス・インプリメンテーションは、３個又は４個のＰＣＩ拡張スロット又はアドイン・コネクタをサポートする。
【００１３】
オペレーティング・システムがプロセッサ２０２上で動作し、図２のデータ処理システム２００内の種々のコンポーネントを整合させ制御する。該オペレーティング・システムはＷｉｎｄｏｗｓ  ＸＰ（商標）などの市販のオペレーティングシステムであって良く、これはマイクロソフト社から入手することができる。Ｊａｖａ（商標）プログラミング・システム等のオブジェクト指向プログラミング・システムは、該オペレーティング・システムと関連して動作することができて、データ処理システム２００上で動作するＪａｖａ（商標）プログラム又はアプリケーションから該オペレーティング・システムに呼び出し（ｃａｌｌ）を提供することができる。“ＪＡＶＡ”は、サン・マイクロシステムズ社（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．）の商標である。該オペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション又はプログラムのための命令は、ハードディスク・ドライブ２２６などの記憶装置に置かれ、プロセッサ２０２により実行されるべくメイン・メモリ２０４にロードされる。
【００１４】
当業者であれば、図２のハードウェアが実装（インプリメンテーション）に応じて変わってもよいことが分かるであろう。図２に図示されているハードウェアに加えて、或いは該ハードウェアの代わりに、フラッシュ読み出し専用メモリ（ＲＯＭ）、同等の不揮発性メモリ、或いは光ディスク・ドライブ等の他の内部ハードウェア又は周辺装置が使用され得る。また、本発明のプロセスは、マルチプロセッサ・データ処理システムに適用され得る。
【００１５】
例えば、データ処理システム２００は、任意選択でネットワーク・コンピュータとして構成されている場合には、ＳＣＳＩホストバス・アダプタ２１２、ハードディスク・ドライブ２２６、テープ・ドライブ２２８、及びＣＤ−ＲＯＭ２３０を含まないこともある。その場合には、コンピュータは、厳密にはクライアント・コンピュータと称されるべきであるが、ＬＡＮアダプタ２１０、モデム２２２等の何らかのタイプのネットワーク通信インターフェースを含む。他の例として、データ処理システム２００は、データ処理システム２００が何らかのタイプのネットワーク通信インターフェースを含んでいても含んでいなくても、何らかのタイプのネットワーク通信インターフェースに関係なくブートされ得るように構成されたスタンドアロン型システムであっても良い。別の例として、データ処理システム２００はパーソナル・デジタル・アシスタント（ＰＤＡ）であっても良くて、これは、オペレーティングシステム・ファイル又はユーザにより作られたデータ或いはその両方を記憶する不揮発性メモリを提供するＲＯＭ又はフラッシュＲＯＭ或いはその両方で構成される。
【００１６】
図２に描かれている例と上記の例とは、アーキテクチャに関する限定を示唆しようとするものではない。例えば、データ処理システム２００は、ＰＤＡの形をとるほかに、ノートブック・コンピュータ又はハンドヘルド・コンピュータであっても良い。データ処理システム２００は、キオスク（ｋｉｏｓｋ）又はウェブ・アプライアンス（装置）であっても良い。
【００１７】
本発明のプロセスは、コンピュータで実行される命令を用いてプロセッサ２０２により実行され、これは例えばメイン・メモリ２０４、メモリ２２４などのメモリに、又は１つ以上の周辺装置２２６−２３０に置かれ得る。
【００１８】
本発明は、プロセッサの性能を改善するためにいろいろな機能のオフロードを提供する。他の装置に所定の機能をオフロードすることができる単一のＬＡＮアダプタについて記載する。オフロードする機能を定義し得る手段として３つの別々の手段を記載する。第１に、ユーザ又はアプリケーションが、要求に応じて、オフロードされるべき機能だけを選び出すことができる。第２に、オフロードされるべき機能のスケジューリングがスケジューラで定義され得る。第３に、機能のオフロードが知識データベースに記憶され得る場合にはヒューリスティック機能又は学習機能が提供される。
【００１９】
本発明の代表的側面については、最も分かりやすくなるように例を用いて記載する。本発明は、ＴＣＰ／ＩＰプロトコル機能を使用するが、これは例示目的に過ぎない。記載の特徴を用いればどの様な機能をもオフロードし得るので、この代表的側面に関する記載は本発明の範囲を限定しない。
【００２０】
この例では、全てのＩ／Ｏアダプタが、デフォルトとして使用可能なオフロード機能を有する。ユーザ又はアプリケーション或いはその両方が使用することのできるオフロード機能のタイプを制御するために、ＩＰアドレス、ＴＣＰソケット・ポート番号、及びアクセス制御キーの組み合わせが使用される。従って、２つの別々のユーザ又はアプリケーション或いはその両方がネットワークへの通信のために同じＩＰアドレスを共有することもできるが、同じオフロード機能を使用しなくても良い。特定のソケット・ポート番号についてのオフロード機能へのアクセスは、ユーザ又はアプリケーション或いはその両方に対して発行される特別のキーを介して制御され得る。このキーは、各ソケット・ポートについてどのオフロード機能が許されるのかを特定するためにＴＣＰ／ＩＰスタック（ｓｔａｃｋ）によって使用される。「ＦＴＰ」などの或る公知のアプリケーションは、一定のデフォルト・オフロード機能に前もって使用可能にされ得る。
【００２１】
このタイプのオフローディングはプロセッサの性能を向上させ、また、Ｉ／Ｏアダプタの性能を向上させる。このアプローチを用いれば、Ｉ／Ｏアダプタ供給者は、特定のオフロード機能セットを伴なう単一の部品番号をリリースするだけで良いので、自分たちのサプライチェーンを簡素化することによって時間及び費用を節約することができる。エンドユーザも、自分たちが必要とする機能を起動させて、それについて支払いをするだけで良いので、費用を節約できる。この解決策により供給者は、オンデマンドのオフロード機能により与えられる柔軟性を顧客に提供することによって、費用を節約し、顧客のニーズを満たす。
【００２２】
図３を参照すると、同じシステム内に存在する２つのアダプタの本発明の好ましい実施態様による更なる例示がテーブル中に示されている。図３の例示となるテーブル３００には、ＩＰアドレス３０２、ポート番号３０４、キー３０６、ＩＰｓｅｃ３０８、ＴＣＰ／ＩＰチェックサム３１０、ＴＣＰ／ＩＰオフロード３１２及びアプリケーション３１４が各ＩＰアドレスについて設けられているが、他の項目もこのテーブルに含まれていてもよい。このテーブルでは、２つのＩＰアドレス、或いはアダプタ３１６及び３１８が同じシステム内に存在する。ＩＰアドレス３１６については、ＩＰｓｅｃ、ＴＣＰ／ＩＰチェックサム、及びＴＣＰ／ＩＰオフロード機能が定義されている。しかし、ＩＰアドレス３１６に関連するテルネット（Ｔｅｌｎｅｔ）、ＦＴＰ、及びＮＦＳアプリケーションについては別々のオフロード・デフォルト機能が使用可能にされており、それらは全てそれら自身のポート番号を介して制御される。ＩＰアドレス３１８について、該システムではテルネット及びバックアップ・アプリケーションについての全てのオフロード機能がデフォルトとして使用可能にされ得る。ＩＰアドレス３１６及び３１８の現在の設定が図３にまとめられている。図３はテーブルについて示しているが、アレイ（ａｒｒａｙ）、ハッシュ（ｈａｓｈ）、スカラーなどの、他の任意のタイプのデータ構造が用いられてもよい。
【００２３】
図４を参照すると、図３に示されているテーブル３００を維持するオペレーティング・システムの機能ブロック図が本発明の好ましい実施態様に従って描かれている。代表的なオペレーティング・システム４００は、図３のテーブル３００と同様のオフロード機能イネーブル・テーブル４０２を維持するタスクを有する。この例では、ユーザ又はアプリケーション４０４は、ユーザ・スペース４０８からカーネル・スペース４１０へのソケット・システム・コール４０６を開始する。カーネル・スペース４１０において、ソケット・システム・コール・インプリメンテーション４１２が、ソケット・システム・コール４０６を受け取り、このコールを構文解析（ｐａｒｓｅ）し、任意の埋め込みソケット・レイヤー機能４１４を開始する。
【００２４】
ソケット・レイヤー機能４１４は、要求されている機能のタイプを判定し、該機能を適切なプロトコルで送る。オフロード機能イネーブル・テーブル４０２は、初期プログラム・ロード（ＩＰＬ）の間にオペレーティング・システムによって初期化される。オフロード機能イネーブル・テーブル４０２は、実行時に該システム上のオフロード機能を付け加え又は削除することによってインターフェース４３４を介して手動により又は自動的に更新される。インターフェース４３４の例が図５，６及び７に関連させて以下に記載する。該オペレーティング・システム内に存在するプロトコルのいずれも、オフロード機能イネーブル・テーブル４０２に照会（ｑｕｅｒｙ）することができる。
【００２５】
該オペレーティング・システムは、オフロード属性をＴＣＰ接続毎に使用可能にすることによってオフロード・ハードウェアに対してアクセス制御を実施する。オフロード能力がオフロード機能イネーブル・テーブル４０２においてセットされたとき、接続はＩ／Ｏアダプタ４３０にオフロードされ、さもなければ標準的イーサネットＮＩＣインターフェースが使用される。この方法は、特定のシステム・ユーザ又はアプリケーション或いはその両方と関連するオフロードの使用をＴＣＰ接続毎に可能にする。更に、それは、システム・ユーザ又はアプリケーション或いはその両方に関してオフロード使用（ｏｆｆｌｏａｄ  ｕｓａｇｅ）アカウンティングをオンにする。
【００２６】
更に、ソケット・レイヤー機能４１４は、ユーザ・データグラム・プロトコル（ＵＤＰ）パケットをｕｐｄ＿ｕｓｒｒｅｑ４１６に送り、それは変換されてｕｄｐ＿ｏｕｔｐｕｔ４１８から送出される。しかし、ＵＤＰ機能はオフロード機能イネーブル・テーブル４０２に載せられていないので、ＵＤＰ機能コールは標準イーサネットＮＩＣインターフェースを介して送られるであろう。ソケット・レイヤー機能４１４は、また、伝送制御プロトコル（ＴＣＰ）パケットをｔｃｐ＿ｕｓｒｒｅｑ４２０に送り、それは変換されてｔｃｐ＿ｏｕｔｐｕｔ４２２から送出される。ＴＣＰ／ＩＰスタック４３６の一部であるｔｃｐ＿ｏｕｔｐｕｔ４２２は、オフロード機能イネーブル・テーブル４０２上のデータを照会し、該コールを、選択されたオフロード機能のためにデバイス・ドライバー４２６にインターフェース（接続）する。
【００２７】
ソケット・レイヤー機能４１４は、また、ユーザ・データグラム・プロトコル（ＵＤＰ）パケットをｕｄｐ＿ｕｓｒｒｅｑ４１６に送り、それは変換されてｕｄｐ＿ｏｕｔｐｕｔ４１８から送出される。ＵＤＰ／ＩＰスタック４３８の一部であるｕｄｐ＿ｏｕｔｐｕｔ４１８は、オフロード機能イネーブル・テーブル４０２上のデータを照会し、該コールを、選択されたオフロード機能のためにデバイス・ドライバー４２６にインターフェースする。
【００２８】
ソケット・レイヤー機能４１４は、また、インターネット・プロトコル（ＩＰ）パケット及びインターネット制御メッセージ・プロトコル（ＩＣＭＰ）パケットをインターネット・プロトコル（ＩＰ）及びインターネット制御メッセージ・プロトコル（ＩＣＭＰ）キュー４２４に直接送る。しかし、ＩＰ／ＩＣＭＰ機能コールについては標準イーサネットＮＩＣインターフェースを介して送られるであろう。
【００２９】
図５を参照すると、本発明の好ましい実施態様に従う代表的なオンデマンド・インターフェースが図示されている。オンデマンド・インターフェース５００は、図４のインターフェース４３４の例であり、ユーザ５０８及びアプリケーション５０６が所望の機能だけを要求に応じて選び出すことを可能にする管理（アドミニストレーション）インターフェース或いはルート・インターフェース５０４から構成されている。これらの機能は、図４のオフロード機能イネーブル・テーブル４０２と同様のオフロード機能イネーブル・テーブル５０２に加えられるか或いは削除される。
【００３０】
図６は、本発明の好ましい実施態様に従う代表的なスケジュール主導（ｄｒｉｖｅｎ）インターフェースを示す。スケジュール主導インターフェース６００は、図４のインターフェース４３４の例であって、スケジュール・イベント・テーブル６０６にリストされているイベントに基づいて所定のスケジューラによって、所与のワークロード環境のために固有のオフロード機能（ｆｅａｔｕｒｅ）を選択的に使用可能及び使用禁止にすることを可能にさせる管理インターフェース或いはＣＲＯＮインターフェース６０４から構成されている。トランザクション処理などのワークロードは、ＩＰｓｅｃ、ＳＳＬなどのような特定のオフロード機能（ｆｅａｔｕｎｅ）をおそらく必要とするであろう。しかし、同じワークロードは、小さなパケットの故にＴＣＰ／ＩＰチェックサム・オフロードから大して利益をこうむらないかもしれない。バックアップ及びＦＴＰなどの、大きなパケットの転送を必要とするアプリケーションに関しては、ＴＣＰ／ＩＰチェックサム、ＴＣＰ／ＩＰオフロードなどのオフロード機能は有益である。これらのワークロードは、一日のうちに変化し得る。例えば、トランザクション指向のネットワーク・トラフィックはおそらく日中にピークになるであろうが、バックアップ・トラフィックは夜間にピークになる。
【００３１】
これらのオフロード機能は、スケジュール・イベント・テーブル６０６にリストされているイベントに基づいて所定のスケジューラを介して使用可能又は使用禁止にされ得る。管理インターフェース又はＣＲＯＮインターフェース６０４は、バッチ、ＣＲＯＮ又はスクリプト（ｓｃｒｉｐｔ）などの、任意のタイプのスケジューラであっても良い。これらの機能は、図４のオフロード機能イネーブル・テーブル４０２と同様のオフロード機能イネーブル・テーブル６０２に加えられるか或いは削除される。
【００３２】
図７は、本発明の好ましい実施態様に従う代表的なヒューリスティック・インターフェース又は学習インターフェースを示す。ヒューリスティック・インターフェース７００は、図４のインターフェース４３４の例であり、知識データベース７０６に記憶されている学習されたイベントによって、所与のワークロード環境のために固有のオフロード機能を選択的に使用可能及び使用禁止にすることを可能にさせる管理インターフェース又はＣＲＯＮインターフェース７０４から構成されている。
【００３３】
殆どのネットワーク・インストレーションにおいて、ワークロードは予め決められるけれども、それは変化する要求又は季節的変動に起因して変動し得る。これらの変化は、監視され、分析され、そして知識データベース７０６で公開され得る。該データベースからのデータを分析してアプリケーション・ワークロードを日時に関して特徴付けるツールが幾つか存在する。トランザクション処理などのワークロードは、おそらく、ＩＰｓｅｃ、ＳＳＬなどの特定のオフロード機能を必要とするであろう。しかし、同じワークロードは、小さなパケットの故にＴＣＰ／ＩＰチェックサム・オフロードから大して利益をこうむらないかもしれない。バックアップ及びＦＴＰなどの、大きなパケットの転送を必要とするアプリケーションに関しては、ＴＣＰ／ＩＰチェックサム、ＴＣＰ／ＩＰオフロードなどのオフロード機能は有益である。
【００３４】
これらのオフロード機能は、知識データベース７０６にリストされているイベントに基づいてヒューリスティック・スケジューラを介して使用可能又は使用禁止にされ得る。管理インターフェース又はＣＲＯＮインターフェース７０４は、バッチ、ＣＲＯＮ又はスクリプトなどの、任意のタイプのスケジューラであっても良い。これらの機能は、図４のオフロード機能イネーブル・テーブル４０２と同様のオフロード機能イネーブル・テーブル７０２に加えられるか或いは削除される。
【００３５】
図８は、本発明の好ましい実施態様に従うイベントの代表的なテーブルを示す。テーブル８００は、図６のスケジュール・イベント・テーブル６０６又は図７の知識データベース７０６の例である。テーブル８００において、連続する２つの月曜日についてのＣＲＯＮイベント・エントリーがあるが、他のアイテムもこのテーブルに包含されていてもよい。図示されているように、これらのエントリーは両方の月曜日について同一ではない。その理由として、それらの日のうちの一方が休日又は季節的変化であることが考えられる。そこで、オフロード・パラメータは、第２月曜についてバックアップ・ジョブのために最適化される。図８はテーブルを記述しているが、アレイ、ハッシュ、スカラーなどの他の任意のタイプのデータ構造が使用されてもよい。
【００３６】
図９において、流れ図９００は、本発明の好ましい実施態様に従うオフロード機能の代表的動作を示す。この代表的動作が始まると、オペレーティングシステムはオフロード機能テーブルを初期化する（ステップ９０２）。その後、該システムは、機能が要求されているか否か判定する（ステップ９０４）。機能が要求されていなければ、該システムは、機能が要求されるまでステップ９０４に戻る。機能が要求されると、その機能がオフロードされるべきであるか否か判定するためにオフロード機能テーブルの照会（ｑｕｅｒｙ）が実行される（ステップ９０６）。もしその機能がオフロード機能テーブルにリストされていなければ（ステップ９０８）、その要求は標準イーサネットＮＩＣインターフェースを介して処理されるべく送られる（ステップ９１０）。もし該機能がオフロード機能テーブルにリストされていれば（ステップ９０８）、該機能がオフロードされるべき装置へのインターフェースが確立され（ステップ９１２）、該機能はその指定された装置にオフロードされる（ステップ９１４）。
【００３７】
この様に、本発明は、プロセッサの性能を改善するために機能をオフロードする方法、装置及びコンピュータ命令を提供する。定義済み機能を他の装置にオフロードすることができる単一のＬＡＮアダプタが提供される。記載されている方法は、３通りの別々の仕方で機能をオフロードすることができる。第１に、ユーザ或いはアプリケーションが、要求に応じて、オフロードされるべき機能だけを選び出すことができる。第２に、オフロードされるべきそれらの機能のスケジューリングがスケジューラで定められ得る。第３に、機能のオフロードを知識データベースに記憶させ得るヒューリスティック機能又は学習機能が提供される。
【００３８】
このタイプのオフロードはプロセッサの性能を向上させ、また、Ｉ／Ｏアダプタの性能を向上させる。このアプローチを用いれば、Ｉ／Ｏアダプタ供給者は、オフロード機能のスーパー・セット（上位集合）を伴なう単一の部品番号をリリースするだけで良いので、自分たちのサプライチェーンを簡素化することによって時間及び費用を節約することができる。エンドユーザも、自分たちが必要とする機能を起動させて、それについて支払いをするだけで良いので、費用を節約できる。この解決策により供給者は、オンデマンドのオフロード機能により与えられる柔軟性を顧客に提供することによって、費用を節約し、顧客のニーズを満たす。
【００３９】
なお、本発明は完全に機能するデータ処理システムに関連して記載されたけれども、重要な点として当業者であれば分かることであるが、本発明のプロセスが命令を含むコンピュータ可読媒体の形のほか、いろいろな形で分散させられ得るプロセスであり、本発明がその分散を実行するために実際に使用される信号を担う媒体の特定のタイプに関わらずに等しく適用され得ることを挙げておく。コンピュータ可読媒体の例は、フレキシブルディスク、ハードディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録できるタイプの媒体と、ディジタル通信リンク及びアナログ通信リンク、例えば無線周波数伝送及び光波伝送などの伝送形を使用する有線又は無線の通信リンクなどの伝送型媒体とを含む。コンピュータ可読媒体は、特定のデータ処理システムで実際の使用時に復号される符号化されたフォーマットの形をとることができる。
【００４０】
本発明についての記載は説明を目的として提示されたのであって、これで全体を網羅しようとするものではなく、開示された形の発明に限定しようとするものでもない。多くの変更、改変ができることは当業者であれば分かることである。実施態様は、本発明の原理、実用的アプリケーションを最も良く説明するために、また、目論まれている特定の使用方法に合う種々の改変を伴なう種々の実施態様に関して本発明を他の当業者が理解し得るようにするために、選択され記述された。
【図面の簡単な説明】
【００４１】
【図１】本発明を実施することのできるデータ処理システムの図である。
【図２】サーバーとして実現され得る本発明の好ましい実施態様によるデータ処理システムのブロック図である。
【図３】本発明の好ましい実施態様による同じシステムに存在する２つのアダプタの説明図である。
【図４】本発明の好ましい実施態様によるオペレーティング・システムの機能ブロック図である。
【図５】本発明の好ましい実施態様による代表的オンデマンド・インターフェースを示す。
【図６】本発明の好ましい実施態様に従う代表的スケジュール主導インターフェースを図示している。
【図７】本発明の好ましい実施態様に従う代表的ヒューリスティック又は学習インターフェースを図示している。
【図８】本発明の好ましい実施態様に従うイベントの代表的テーブルを図示している。
【図９】本発明の好ましい実施態様に従う機能をオフロードする代表的動作の流れ図を図示している。
【符号の説明】
【００４２】
２００  クライアント
２０２  プロセッサ
２０４  メインメモリ
２０６  バス
２０８  ホスト／ＰＣＩ  キャッシュ／ブリッジ
２１０  ＬＡＮアダプタ
２１２  ＳＣＳＩホストバス・アダプタ
２１４  拡張バス・インターフェース
２１６  オーディオ・アダプタ
２１８  グラフィックス・アダプタ
２１９  オーディオ／ビデオ・アダプタ
２２０  キーボード及びマウス・アダプタ
２２２  モデム
２２４  メモリ
２２６  ディスク
２２８  テープ
２３０  ＣＤ−ＲＯＭ
【図１】
2006294027.tif 000003
【図２】
2006294027.tif 000004
【図３】
2006294027.tif 000005
【図４】
2006294027.tif 000006
【図５】
2006294027.tif 000007
【図６】
2006294027.tif 000008
【図７】
2006294027.tif 000009
【図８】
2006294027.tif 000010
【図９】
2006294027.tif 000011