JP2002517855A - 処理タスクをソフトウエアからハードウエアにオフロードする方法およびコンピュータ・プログラム製品 - Google Patents
処理タスクをソフトウエアからハードウエアにオフロードする方法およびコンピュータ・プログラム製品Info
- Publication number
- JP2002517855A JP2002517855A JP2000553887A JP2000553887A JP2002517855A JP 2002517855 A JP2002517855 A JP 2002517855A JP 2000553887 A JP2000553887 A JP 2000553887A JP 2000553887 A JP2000553887 A JP 2000553887A JP 2002517855 A JP2002517855 A JP 2002517855A
- Authority
- JP
- Japan
- Prior art keywords
- task
- data
- nic
- offload
- computer
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/24—Negotiation of communication capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
ループットを向上させる方法に関する。更に特定すれば、本発明は、典型的にホ
スト・プロセッサがソフトウエアで実行する計算タスクを特定のハードウエア・
コンポーネントにオフロード(offload)することにより、ホスト・コンピュー
タ資源を開放し、コンピュータ・システムの全体的効率を高める方法に関する。
成されている。第1のコンポーネントは、ホスト・コンピュータおよびそれに付
随する周辺ハードウエア・コンポーネントである。ホスト・コンピュータは、典
型的に、中央演算装置(CPU)を含み、バスを介して、例えば、RAMまたは
ROMのようなシステム・メモリと相互接続してある。また、システムは、必要
な機能性に応じて、磁気または光のディスク記憶装置、キーボードまたはその他
の入力デバイス、ディスプレイまたはその他の出力デバイス、ならびにモデムお
よび/またはネットワーク・インターフェース・カード(NIC)のような通信
機器といった、多数の周辺ハードウエア・デバイスも含む。別の機能的コンピュ
ータ・コンポーネントに、アプリケーション・ソフトウエアがある。このような
ソフトウエアは、周知のワード・プロセッサ・アプリケーション、スプレッド・
シート・アプリケーション、データベース・アプリケーション、通信およびネッ
トワーク・アプリケーション等を含む。
ィング・システムである。コンピュータのオペレーティング・システムは、ユー
ザにアプリケーション・プログラムの実行を開始させるというような、多くの機
能を実行する。加えて、最新のオペレーティング・システムは、アプリケーショ
ン・ソフトウエアとホスト・コンピュータおよびその周辺ハードウエアとの間の
インターフェースも備えている。したがって、以前にはアプリケーション・プロ
グラムが直接コンピュータ・システムのハードウエアにアクセスすることが当た
り前であったが、最新のオペレーティング・システムは標準化された一貫性のあ
るインターフェースを備え、ユーザ・アプリケーションに、標準化された方法で
コンピュータ・ハードウエア周辺機器とインターフェースし、これにアクセスさ
せるようにしている。一貫性のあるインターフェースを備えるために、オペレー
ティング・システムのアーキテクチャの設計において、実際のハードウエア周辺
機器およびアプリケーション・プログラム間にいくつものソフトウエア・レイヤ
が存在し得るようにする場合が増えている。例えば、アプリケーションは、オペ
レーティング・システムにコールすることができる。一方、オペレーティング・
システムは、ハードウエア・デバイス・ドライバ・レイヤが与えるサービスを利
用することができる。そのときには、デバイス・ドライバ・レイヤは、特定のハ
ードウエア周辺機器と直接インターフェースする。このようなレイヤ型手法の主
な利点は、他のレイヤに影響を及ぼすことなく、レイヤの追加または交換が可能
なことである。
ン・ソフトウエア、ならびにネットワークおよび通信は、増々複雑化および精巧
化し続けている。勿論、その結果、高機能化し有用性が高いコンピュータ・シス
テムが得られる。しかしながら、この機能性の増大は、コストを伴わない訳では
ない。オペレーティング・システムおよびソフトウエア・アプリケーションでは
、機能が更に増加するに連れて、このようなシステム機能および/またはアプリ
ケーションを実行するときのプロセッサ/CPUが実行しなければならない動作
が増加し、その結果プロセッサのオーバーヘッド増大を招く場合が多い。この現
象は、特に、ネットワーク通信型ソフトウエア・アプリケーションのような、特
定の種類のアプリケーションと比較すると、特に明白となる。広帯域幅媒体が増
々普及するに連れて、ネットワーク速度は、ホスト・コンピュータのCPUのプ
ロセッサ速度やメモリ帯域幅に匹敵するかあるいはこれを凌駕することも多い。
したがって、このようなネットワークを通じて効率的に通信するためには、ネッ
トワーク接続するホスト・コンピュータのCPU利用およびメモリ帯域幅利用を
極力抑えなければならない。
が用いているレイヤ状アーキテクチャ、またはWindows NTオペレーテ
ィング・システムが用いているレイヤ・モデルにより、ホスト・プロセッサに更
に負担をかける。公知のように、このようなモデルは、ネットワークへの物理的
接続とエンド・ユーザ・アプリケーションとの間のデータ・フローを記述するた
めに用いられる。ネットワーク・ケーブル上にデータ・ビットを置くというよう
な、最も基本的な機能はボトム・レイヤにおいて行われ、一方アプリケーション
の詳細に関与する機能はトップ・レイヤにおいて行われる。本質的に、各レイヤ
の目的は、次に高いレイヤにサービスを提供し、サービスが実際にどのように実
施されるかに関する詳細から、高いレイヤを遮蔽することである。レイヤは、各
レイヤが、ネットワークを介して通信している別のコンピュータ上にある同じレ
イヤと通信していると考えるように、抽象化されている。
能はソフトウエア集中的となり得るものであり、したがってかなりの量のCPU
プロセッサおよびメモリ資源を要求する可能性があることは認められよう。例え
ば、Windows NTネットワーキング・モデルでは、種々のレイヤにおい
てパケットに対して行われるある機能は、パケット・チェックサムの算出および
検証、データの暗号化および解読、メッセージ・ダイジェスト計算およびTCP
セグメント化のように、極度にCPU集中的である。これらの機能の各々を実行
する際、その結果としてのCPU/メモリに対する要求は、コンピュータ・シス
テム全体のスループットおよび性能に大きく影響する可能性がある。
コンピュータ・システム資源に対して行なう要求は増大するが、同時に、ネット
ワーク・インターフェース・カード(NIC)のような、多くのコンピュータ・
ハードウエア周辺機器の能力、効率およびスループットも向上する。これらのコ
ンピュータ・システム周辺機器には、多くの場合専用プロセッサおよびメモリが
搭載されており、典型的に非常に精巧化され複雑なタスク、即ち、コンピュータ
・システムのプロセッサがソフトウエアで実行するようなタスクを実行すること
ができる。例えば、多くのNICは、チェックサム計算/検証、データ暗号化/
解読、メッセージ・ダイジェスト計算、TCPセグメント化およびその他という
ような、適切なネットワーク・レイヤにおいてCPUがソフトウエアで実行する
タスクを、独立して実行することができる。したがって、このようなCPU集約
タスクを周辺のハードウエア・デバイスにオフロードすることは効果的である。
これが可能であれば、ホスト・コンピュータにおけるプロセッサの利用度および
メモリ帯域幅の使用度が低下することにより、システム全体の効率、速度および
スループットが向上するであろう。
コンピュータ・システム/オペレーティング・システムがこのような周辺デバイ
スの処理能力を識別し、次いで必要に応じて特定の処理タスクをデバイスに割り
当てオフロードすることを可能にする効率的な方法が必要となる。また、その時
々のプロセッサの必要性に応じて動的にタスクを識別し割り当てることができれ
ば望ましいであろう。これが可能であれば、コンピュータ・システムのプロセッ
サは、必要に応じてハードウエア周辺機器の能力を利用できるようになるであろ
う。 (発明の概要) 従来技術の現状における前述の問題は、本発明が見事に解決した。本発明は、
以前はプロセッサ・ソフトウエア・レベルで行われていた機能およびタスクを、
コンピュータ・システムに接続してある適切なハードウエア周辺機器にオフロー
ドするシステムおよび方法に関する。本発明は、特に、コンピュータのCPUが
ソフトウエアで実行するタスクの多くを実行できる場合が多い、ネットワーク・
インターフェース・カード(NIC)周辺デバイスに対する、タスクのオフロー
ドにおいて特に有用である。
OS)が、コンピュータ・システムに接続してあるあらゆるハードウエア周辺機
器(NIC等)のデバイス・ドライバ(「MAC」ドライバと呼ばれる場合が多
い)に「問い合わせ」することを可能にする、ソフトウエア実装方法およびプロ
トコルを提供する。種々のデバイス・ドライバは、各々、それぞれのハードウエ
ア周辺機器処理能力を識別することによって応答する。この能力のことをここで
は「タスク・オフロード能力」と呼ぶ。好適な実施形態では、一旦個々の周辺機
器のタスク・オフロード能力を識別したなら、OSは選択した周辺機器に、OS
によって潜在的に使用可能なあるタスクを実行させることができる。その後、O
Sは、その時々のコンピュータ・システムの処理の必要性にしたがって、動的に
、要求に応じて、先にイネーブルしたタスクまたは複数のタスクを周辺機器が実
行するように要求する。
ステム環境にも適用可能であるが、本発明の実施形態は、ここでは、Windo
ws NTのレイヤ状ネットワーキング・モデルと共に実施し利用するものとし
て説明する。勿論、本発明は、ネットワーク通信を管理し制御するための同様の
種類のアーキテクチャであれば、本質的にいずれとでも実施可能である。即ち、
本発明は、典型的にネットワーク・パケットに対して例えば種々のネットワーク
・レイヤにおいて行われ、典型的に専用CPUおよびメモリ資源を必要とするタ
スクまたは機能をオフロードする機能を提供する。これらのオフロードしたタス
クは、任意に、ネットワークに実際の物理的通信チャネルを提供するハードウエ
ア周辺機器、即ち、NICによって代わりに実行することができる。例えば、デ
ータ・パケットがそれぞれのネットワーク・レイヤを通過する際に、例えば、チ
ェックサム計算/検証、暗号化/解読、メッセージ・ダイジェスト計算およびT
CPセグメント化というようなデータ・パケットに対するCPU集約動作の一部
を実行せずに、これらのタスクをオフロードし、NICハードウエアにおいて代
わりに実行することができる。
グ・アーキテクチャにおいて、トランスポート・プロトコル・ドライバ、即ち、
トランスポートを適切なプログラム方法によって実現し、コンピュータに接続し
てある対応のNIC(複数のNIC)と関連するデバイス・ドライバ(複数のデ
バイス・ドライバ)の各々に問い合わせができるようにする。問い合わせされた
各デバイス・ドライバも、同様に、その具体的な処理能力、即ち、「タスク・オ
フロード」能力を識別することによって、応答可能なように実現する。好適な実
施形態の1つでは、一旦個々の周辺デバイスのタスク・オフロード能力を識別し
たなら、トランスポートが、これら具体的な能力のどれをイネーブルするかにつ
いて設定を行なう。これは、本質的に、周辺デバイスに、続くデータ・パケット
の送信および/または受信の間にどのような種類のタスクを実行することになっ
ているのかについて知らせることになる。その後、トランスポートは、要求に応
じて、周辺デバイスの機能をイネーブルし、これを利用することができる。好ま
しくは、イネーブルした機能は、ネットワーク・チャネルに宛てられた実際のデ
ータ・パケットに添付されている適切なデータによって呼び出す。このようにし
て、タスクを動的にオフロードすることができ、一度に1つより多いタスクをオ
フロードすることができる。
ば、Windows NT環境におけるMACサブレイヤに常駐するデバイス・
ドライバ)に送る前に、トランスポートは、最初に、対応するNICの能力がど
れくらいなのかについて判定を行なう。特定の機能または複数の機能が可能な場
合、トランスポートは所望の機能をイネーブルする。続くパケットの送信中、ト
ランスポートが特定のタスクをハードウエアにオフロードすることを望む場合、
当該所望の機能(複数の機能)をNICハードウエアにおいてそのパケットに対
して実行することを意味する情報を、パケットに動的に添付することができる。
例えば、トランスポートは、データ・パケット内にデータ・フラグをセットする
ことによって、対応するデバイス・ドライバに、NICはチェックサムを計算し
該当の発信パケットに添付することを通知する。このときには、対応するNIC
上のハードウエア/ソフトウエアは、それ自体でこの特定のパケット処理に対処
し、システムCPUからの介入や補助は全くない。したがって、システム・プロ
セッサは解放され、別の処理タスクを実行するので、システム全体の効率やスル
ープットが向上する。
ドする。即ち、その時々のコンピュータ・システムに対する必要性に応じて、N
ICの能力を選択的にパケット毎に用いることができる。更に、以前にはネット
ワーク・スタックの種々のレベルで実行していたタスクが、今や単一点、即ち、
NIC自体で実行されるので、この手法は統合化および効率化を一層推し進め、
システム全体のスループットを更に高めることになる。好ましくは、本発明の実
施形態は、動作を「バッチ」する。即ち、多数のタスクを単一のNICにオフロ
ードする機能を、トランスポートに設ける。例えば、単一のNICがチェックサ
ム計算および暗号化双方を1つのパケットに対して実行することにより、同じ機
能をそれぞれのソフトウエア・レイヤにおいてソフトウエアで実施する場合に必
要となる多数のCPUサイクルを不要とすることができる。
ピュータ・システムに接続してあるハードウエア周辺機器に計算タスクをオフロ
ードするシステムおよび方法を提供する。また、本発明は、個々の周辺機器の処
理能力を識別するシステムおよび方法を提供する。本発明は、レイヤ状ネットワ
ーク・アーキテクチャと共に効率的に使用することにより、ネットワーク内の種
々のレイヤにおいて典型的に実行するタスクを、代わりに、適切なネットワーク
・インターフェース・カード(NIC)にオフロードすることを可能にする、タ
スク・オフロード・システムおよび方法を提供する。本発明は、コンピュータ・
プロセッサの現処理状態にしたがって、動的に、要求に基づいて計算タスクをオ
フロードすることができるシステムおよび方法を提供する。更に、本発明は、多
数のタスクを共にバッチし、次いでNICのような単一の周辺デバイスにオフロ
ードすることができるシステムおよび方法を提供する。
に明らかとなり、あるいは本発明の実施によって習得することができよう。本発
明の利点は、添付した特許請求の範囲に特定的に指摘した手段および組み合わせ
によって実現し、得ることができる。本発明のこれらおよびその他の特徴は、以
下の説明および添付した特許請求の範囲から一層明らかとなり、以下に明記する
本発明の実施によって習得することができよう。
先に端的に説明した本発明の更に特定的な説明を、添付図面に示す、その具体的
な実施形態を参照しながら行なう。これらの図面は本発明の典型的な実施形態の
みを図示するのであり、したがってその範囲を限定するものとはみなされないと
いう理解の下で、添付図面を用いて、本発明を更に具体的かつ詳細に、記載し説
明する。
ために用いる実施形態の構造または処理を示す図を用いることにする。このよう
に図面を用いて本発明を提示することは、その範囲を限定するものとして解釈さ
れるべきでない。本発明は、パーソナル・コンピュータのようなホスト・コンピ
ュータから、ネットワーク・インターフェース・カード(NIC)のような、コ
ンピュータに接続してあるハードウエア周辺機器に処理タスクをオフロードする
方法およびシステム双方を想定している。図1および以下の論述は、本発明を実
現可能な適当な計算機環境の端的な概説を与えることを意図したものである。必
須ではないが、本発明の実施形態の説明は、総じて、パーソナル・コンピュータ
が実行するプログラム・モジュールのような、コンピュータ実行可能命令に関し
て行なう。一般に、プログラム・モジュールは、ルーティン、プログラム、オブ
ジェクト、コンポーネント、データ構造等、特定のタスクを実行するか、あるい
は特定の抽象データ・タイプを実施するものを含む。更に、本発明は、ハンドヘ
ルド・デバイス、マルチプロセッサ・システム、マイクロプロセッサを用いたま
たはプログラム可能な消費者用電子機器、ネットワークPC、ミニコンピュータ
、メインフレーム・コンピュータ等を含む、その他のコンピュータ・システム・
コンフィギュレーションとも実施可能である。また、本発明の実施形態は、通信
ネットワークを通じてリンクしたリモート処理デバイスによってタスクを実行す
る分散計算機環境においても実施可能である。分散計算機環境では、プログラム
・モジュールは、ローカルおよびリモートのメモリ記憶装置双方に位置すること
ができる。
ピュータ20の形態の汎用計算機を含み、演算装置21(CPUとも呼ぶ)、シ
ステム・メモリ22、およびシステム・メモリを含む種々のシステム・コンポー
ネントを演算装置21に結合するシステム・バス23を含む。システム・バス2
3は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス
・アーキテクチャのいずれかを用いたローカル・バスのいずれでもよい。システ
ム・メモリは、リード・オンリ・メモリ(ROM)24およびランダム・アクセ
ス・メモリ(RAM)25を含む。基本入出力システム26(BIOS)は、起
動中のように、パーソナル・コンピュータ20内のエレメント間におけるデータ
転送を補助する基本的なルーティンを含み、RAM24内に格納されている。更
に、パーソナル・コンピュータ20は、図示しないハード・ディスクの読み書き
を行なうハード・ディスク・ドライブ27、リムーバブル磁気ディスク29の読
み書きを行なう磁気ディスク・ドライブ28、CD ROMまたはその他の光媒
体のようなリムーバブル光ディスク29の読み書きを行なう光ディスク・ドライ
ブ30のような種々の周辺ハードウエア・デバイスも含む。ハード・ディスク・
ドライブ27、磁気ディスク・ドライブ28、および光ディスク・ドライブ30
は、それぞれ、ハード・ディスク・ドライブ・インターフェース32、磁気ディ
スク・ドライブ・インターフェース33、および光ドライブ・インターフェース
34を介して、システム・バス23に接続されている。ドライブおよびそれに関
連するコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、
プログラム・モジュールおよびパーソナル・コンピュータ20のその他のデータ
の不揮発性格納を行なう。ここに記載する環境の一例は、ハード・ディスク、リ
ムーバブル磁気ディスク29およびリムーバブル光ディスク31を採用するが、
磁気カセット、フラッシュ・メモリ・カード、ディジタル・ビデオ・ディスク、
ベルヌーイ・カートリッジ、ランダム・アクセス・メモリ(RAM)、リード・
オンリ・メモリ(ROM)等のように、コンピュータによるアクセスが可能なデ
ータを格納することができる、別の形式のコンピュータ読取可能媒体も、動作環
境例では使用可能であることは、当業者には認められよう。
AM25上には、多数のプログラム・モジュールを格納可能であり、オペレーテ
ィング・システム35、1つ以上のアプリケーション・プログラム36、その他
のプログラム・モジュール37、およびプログラム・データ38を含む。ユーザ
は、キーボード40およびポインティング・デバイス42のような入力デバイス
によって、コマンドおよび情報をパーソナル・コンピュータ20に入力すること
ができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティッ
ク、ゲーム・パッド、衛星パラボラアンテナ、スキャナ等を含むことができる。
これらおよびその他の入力デバイスは、多くの場合、システム・バスに結合する
シリアル・ポート・インターフェース46のような周辺ハードウエア・デバイス
を介して、演算装置21に接続されるが、パラレル・ポート、ゲーム・ポートま
たはユニバーサル・シリアル・バス(USB)のようなその他のインターフェー
スによって接続することも可能である。また、ビデオ・アダプタ48のような周
辺ハードウエア・インターフェース・デバイスを介して、モニタ47またはその
他の種類のディスプレイ装置もシステム・バス23に接続してある。モニタに加
えて、パーソナル・コンピュータは、典型的に、スピーカおよびプリンタのよう
な、その他の周辺出力デバイス(図示せず)を含む。
以上のリモート・コンピュータへの論理接続を用いれば、ネットワーク環境にお
いても動作可能である。リモート・コンピュータ49は、別のパーソナル・コン
ピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイス、またはその他
の共通ネットワーク・ノードとすることができ、典型的に、パーソナル・コンピ
ュータ20に関して先に述べたエレメントの多くまたは全てを含むが、図1には
メモリ記憶装置50のみを図示している。図1に示す論理接続は、ローカル・エ
リア・ネットワーク(LAN)51およびワイド・エリア・ネットワーク(WA
N)52を含む。このようなネットワーク環境は、会社全域に及ぶコンピュータ
・ネットワーク、イントラネットおよびインターネットでは一般的である。
ットワーク・インターフェース・カード(NIC)またはアダプタ53と多くの
場合呼ばれている、周辺ハードウエア・デバイスを介してローカル・ネットワー
ク51に接続する。WANネットワーク環境で用いる場合、パーソナル・コンピ
ュータ20は、典型的に、モデム54、またはインターネットのようなワイド・
エリア・ネットワーク52を通じて通信を確立するその他の手段を含む。モデム
は、内蔵でも外付けでもよく、典型的に、シリアル・ポート・インターフェース
46を介してシステム・バス23に接続する。ネットワーク環境では、パーソナ
ル・コンピュータ20に関して図示したプログラム・モジュールまたはその一部
は、リモート・メモリ記憶装置50に格納することも可能である。尚、図示のネ
ットワーク接続は一例であり、コンピュータ間に通信リンクを確立する別の手段
も使用可能であることは認められよう。
取可能媒体も含む。このようなコンピュータ読取可能媒体は、汎用コンピュータ
または特殊目的コンピュータがアクセスすることができる、入手可能なあらゆる
媒体とすることができる。限定ではなく、一例として、このようなコンピュータ
読取可能媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の
光ディスク・ストレージ、磁気ディスク・ストレージまたはその他の磁気記憶ス
トレージ、あるいは所望の実行可能命令を格納するために使用でき、汎用コンピ
ュータまたは特殊目的コンピュータがアクセスすることができるその他のあらゆ
る媒体とすることができる。前述の組み合わせも、コンピュータ読取可能媒体の
範囲に含まれて当然である。実行可能命令は、例えば、汎用コンピュータ、特殊
目的コンピュータ、または特殊目的処理デバイスに、ある機能または機能群を実
行させる命令およびデータから成る。最後に、本発明の範囲内の実施形態は、デ
ータ構造を表す複数のデータ・フィールドが格納されているコンピュータ読取可
能媒体を備えている。
を削減する機能を備えることを目的とする。これを達成するには、例えば、オペ
レーティング・システム、アプリケーション・プログラムおよび/または演算装
置/CPU21上で実行するその他のプログラム・モジュールによって実行する
特定の計算タスクを、コンピュータ・システム20に接続してある適切な周辺ハ
ードウエア・デバイスにオフロードする。このような周辺デバイスの多くは、増
々専用のプロセッサやメモリが搭載されるようになっており、典型的にCPU2
1のみが実行する同じタスクの多くを完全に実行することができる。このような
デバイスの例は、例えば、ネットワーク・インターフェース・カード(図1にお
ける53)、ディスク・ドライブ・インターフェース・カード(例えば、図1に
おける32、33、34)、小型コンピュータ・システム・インターフェース(
SCSI)デバイス、インテリジェント・シリアル・インターフェース・カード
、またはデータの暗号化/解読のためのデバイスというような特定用途周辺機器
を含む。
いずれとでも、計算タスクをオフロードするために使用可能であるが、本発明の
説明は、現時点において好適な一実施形態の例に関して行なう。ここでは、計算
タスクを、図1に示すNIC53のようなネットワーク通信デバイスにオフロー
ドする。即ち、例示の実施形態は、Microsoft Corporatio
n(マイクロソフト社)から入手可能なWindows NTオペレーティング
・システムのネットワーキング環境およびアーキテクチャにおいて実施したもの
として説明する。とは言え、Windows NTの概念および用語を具体的に
参照するものの、殆どではなくとも多くのオペレーティング・システムおよびネ
ットワーキング・アーキテクチャが、本発明の環境に関連する類似性を共有する
ことを当業者は認めよう。
ndows NTネットワーキング・モデルを構成するコンポーネントの一部の
簡略図を示す。例示の目的のために、種々のWindows NTコンポーネン
トに対応するOSIレイヤも示す。OSIモデルにおける物理レイヤに対応する
ボトム・レイヤに、実際のNIC(ネットワーク・カード、またはネットワーク
・アダプタと呼ぶこともある)100〜104が常駐している。NICは、物理
媒体(ネットワーク・ケーブル)との物理的相互接続、および特定のネットワー
ク・トポロジにしたがって、上位レイヤ全てが発生するデータを搬送する信号の
伝送を行なうハードウエア・デバイスである。先に注記したように、多くのNI
Cは専用プロセッサおよびメモリを搭載しており、精巧な計算タスクも実行可能
である。そのタスクには、ホスト・プロセッサCPUが通常であれば処理するよ
うなタスクが含まれる。NICは、物理的に、コンピュータ内のスロットに配置
するプリント回路ボード・カードとして、マザー・ボード上のコンピュータ・シ
ャーシ内に配置した専用チップとして、またはその他のいずれかの適当な方法で
実施することができる。
するネットワーク・ドライバ116〜120を介して論理的にWindows
NT ネットワーキング・モデルと相互接続している。ネットワーク・ドライバ
は、ネットワーク・モデルのMACサブレイヤ内に常駐し、対応するNICを介
してWindows NTを物理ネットワーク・チャネルにリンクする。各ドラ
イバは、典型的に対応するNICのベンダが供給するソフトウエア・コンポーネ
ントとして実施され、その対応するネットワーク接続を通じてパケットを送受信
する役割、およびオペレーティング・システムの代わりにNICを管理する役割
を果たす。また、各ドライバは、対応するNIC上でI/Oを開始し、これらか
ら割込を受け取り、上流側のプロトコル・ドライバにコールし、アウトバウンド
・データ転送の完了をこれらに通知する。また、デバイス・ドライバは、対応す
るNICの追加処理能力全てに対する呼び出し、制御および/または監視を行な
う役割も担う。
プロトコルを実施するように、ドライバ・コンポーネントに書き込む。ここに記
述し特許を請求する本発明の基本的発明は、このような環境に適用可能である。
しかしながら、例示の目的のために、本発明は、Windows NTネットワ
ーク・アーキテクチャに関連付けて説明することにする。この場合、ネットワー
ク・ドライバ・インターフェース仕様(NDIS)と呼ばれるインターフェース
および環境が与えられる。NDISインターフェースは、機能的には、図2の1
26に示す通りである。NDISは、ネットワーク・ドライバ116〜120の
各々を、種々のトランスポート・プロトコル(その例を128〜134で示す)
の詳細から、およびその逆に、遮蔽する。即ち、NDISは、1つ以上のNIC
ドライバ(116〜120)が1つまたは多数の下位NIC(100〜104)
、1つまたは多数の上位トランスポート・プロトコル・ドライバ、あるいはトラ
ンスポート(図2の128〜134で表す)、およびオペレーティング・システ
ムと通信するためのインターフェースを記述する。
を定義する。したがって、NICドライバが実行すべき各外部機能毎に、NIC
ハードウエア割込の登録および代行受信(intercept)からトランスポート・プ
ロトコル・ドライバとの通信、登録操作およびポートI/Oを介した下位のNI
Cとの通信まで、機能を実行するためにNDIS APIに頼ることができる。
このレベルの抽象化およびその結果としての移植性を得るために、NDISは、
NDISインターフェース・ライブラリ・ラッパ(NDIS interface Library Wra
pper)(図示せず)と呼ぶ、エクスポート・ライブラリを用いる。NICドライ
バおよびプロトコル・ドライバ間、NICドライバおよびオペレーティング・シ
ステム間、ならびにNICドライバおよびNIC間の相互作用は全て、ラッパ関
数へのコールによって実行する。したがって、Windows NTのトランス
ポート特定ドライバに書き込む代わりに、ネットワーク・ベンダは、NDISイ
ンターフェースを、単一ネットワーク・ドライバの最上位レイヤとして与える。
こうすることにより、いずれのプロトコル・ドライバも、このインターフェース
をコールすることにより、そのネットワーク要求をネットワーク・カードに宛て
て送ることが可能となる。したがって、ユーザは、TCP/IPネットワークお
よびDLC(または、NWLINK、またはDECnet、VINES、Net
BEUI等)ネットワークを通じて、1つのネットワーク・カードおよび単一の
ネットワーク・ドライバを用いて通信することができる。
34で示す、トランスポート、プロトコルおよび関連するドライバである。Wi
ndows NTでは、トランスポート・プロトコル・ドライバは、トランスポ
ート・ドライバ・インターフェース(TDI)、または恐らくその上縁における
別の特定用途インターフェースを実施し、ネットワークのユーザにサービスを提
供するソフトウエア・コンポーネントである。Windows NTでは、TD
Iは、機能ブロック138に示すリディレクタおよびサーバ機能のような、セッ
ション・レイヤにおいて通信するネットワーキング・コンポーネントのために共
通インターフェースを備える。公知のように、トランスポート・プロトコルは、
ネットワークのためのデータ・オーガナイザとして作用し、本質的にどのように
データを次の受信レイヤに提示し、それに応じてデータをパッケージ化するかを
定義する。これらは、パケット(Windows NT関連ではNDISパケットとも呼ぶ
)を割り当て、データを送出側アプリケーションからパケットにコピーし、ND
ISをコールすることによってパケットを下位デバイス・ドライバに送り、対応
するNICを介してデータをネットワーク上に送出できるようにする。
ク・モデルのレイヤ3および4を通過する際に、追加の機能またはタスクもデー
タ・パケットに対して実行可能であることは認められよう。例えば、トランスポ
ート・プロトコル・ドライバは、チェックサム値を計算し、これをパケットに添
付する。一般に、この動作には、ネットワーク・パケットの送出側に対応するト
ランスポート・プロトコルが、パケットを構成するデータ・エレメントを全て加
算することによって計算した数値を、それに添付する必要がある。次いで、パケ
ットの受信側が、添付されているチェックサム数値をデータと比較することによ
って、データが移動中に変化しなかったことを確認する。
ケットに対するメッセージ・ダイジェストの計算がある。チェックサムと同様、
メッセージ・ダイジェストは、パケット内のデータの完全性を保証するために用
いられる。加えて、メッセージ・ダイジェストは、メッセージを送った側が意図
した者であることを確かめることによって、データの認証を保証するために用い
ることもできる。メッセージ・ダイジェストの計算は非常にCPU集中的であり
、ソフトウエアで実施するには不経済な機能である。
ケージ内のメッセージを変換することにより、パケットの無許可の読み手が、暗
号化キーを予め知らなければ、メッセージの内容を実際に見ることができないよ
うにする暗号化プロセスのことを言う。勿論、暗号アルゴリズムも非常にCPU
およびメモリ集中的となりがちであり、ソフトウエアで実行すると、法外な程不
経済となる可能性がある。
公知のように、TCPは大きなデータ・パケットを、下位ネットワークが許可す
る最大データ・サイズに合ったセグメントに区分する。例えば、イーサネットは
ネットワーク上で最大1514バイトのパケットを許可する。したがって、TC
Pが例えば64Kバイトを送らなければならない場合、データを1514バイト
のセグメントに分解しなければならない。
するソフトウエア・コンポーネントにおいて、コンピュータのCPU20が実行
するので、かなりのコンピュータ資源を利用し、コンピュータ・システムの性能
の全体的な低下を招く可能性がある。したがって、これらまたはその他の同様の
タスクをオフロードし、対応するNICにおいてこれらを代わりに実行するよう
にすれば、コンピュータ・システムの全体的な速度および効率を大幅に向上させ
ることが可能となる。
キング・モデルにおけるデータ伝送の基本単位はデータ・パケットである。Wi
ndows NT環境では、データ・パケットのことをNDISパケットと呼ぶ
。各パケットは、スタックの最上位(即ち、ISOスタックにおけるレイヤ5)
から最下位のソフトウエア・レイヤ(即ち、ISOスタックにおけるレイヤ2)
まで移動する。したがって、パケットは、データの送信および受信の間にレイヤ
を通過する際、各レベルを通じて共通のデータ構造を定義する。一例として、図
3は、パケットが各レイヤを通って、イーサネットNICとして100で示すN
ICまで達する際に、パケットが辿る経路を示す。先に注記したように、トラン
スポート・ドライバ128は、送出側アプリケーションからデータを受け取り、
下位プロトコルと一貫性のあるパケットにこれをパッケージ化し、次いでNDI
Sインターフェース126を介して下位のデバイス・ドライバ116にパケット
を転送する。加えて、トランスポート・プロトコルは、パケットに対して他の機
能(例えば、チェックサムの計算等)も行なうことができる。あるいは、他の機
能コンポーネントが、図3に示すIPセキュリティ機能144(例えば、暗号化
および/またはパッケージ・ダイジェストの計算)のように、パケットに追加の
機能を実行するネットワーク・レイヤまたはデータ・リンク・レイヤに常駐する
ことも可能である。
を、NICハードウエア100のような周辺デバイスにオフロードするための手
段である。例えば、図3において、アプリケーション・データ140は、ネット
ワーク・モデルの上位レイヤから、TCP/IP128のような適切なトランス
ポート・プロトコル・ドライバに渡される。ドライバはデータを適切なデータ・
パケット142にパッケージ化し直す。次いで、この特定のデータ・パケット1
42にどの追加機能を実行するかに応じて、パケット拡張部と呼ぶ、既定のデー
タ構造をデータ・パケットに添付する機能コンポーネントを含ませる。以下で更
に詳細に説明するが、パケット拡張部の内容は、データ・パケットがNIC10
0に到達したときに、どのタスクまたは複数のタスクをこのデータ・パケットに
対して実行するかを示す。データ・パケット142がネットワーク・ドライバ1
16に到達すると、ネットワーク・ドライバ116がこのパケット拡張部の内容
を問い合わせ、どのタスク(複数のタスク)をNIC100が実行するのかを確
認する。次いで、ドライバ116は、NIC上のハードウエアを制御/操作し、
特許拡張部の内容を通じて要求されたいかなる機能タスクをも実行する。
ント144に渡す。ソフトウエア・コンポーネント144は、別個に実施するこ
とも、あるいはトランスポート・プロトコル・ドライバ自体の一部として実施す
ることも可能であり、パケット拡張部をパケット142に添付する。オフロード
する特定のタスクに応じて、パケット拡張部にデータを含ませる。例えば、IP
セキュリティ機能を実施する場合、NICが指定された暗号化キーにしたがって
データ・パケットを暗号化することを示すデータを含ませる。勿論、ソフトウエ
ア・コンポーネント144は、既定のデータを添付し、先に説明したような多数
の機能のいずれか1つを、ネットワーク・レイヤ内に常駐するソフトウエア・コ
ンポーネントによって実行する代わりに、ハードウエア・レベルで実行するよう
にすることができる。デバイス・ドライバ116は、パケット拡張部から情報を
抽出し、次いでNIC100において指定されたタスク(複数のタスク)を呼び
出す。
示す。パケット142は、Windows NT環境において用いられる正確な
ネットワーク環境に応じて、いかなるフォーマットでも可能であるが、パケット
はNDISにしたがってフォーマット化してあり、パケット記述子、協働するデ
バイス・ドライバ(ドライバ群)およびプロトコル・ドライバ(ドライバ群)が
意味を規定するフラグ、当該パケットに関連する帯域外データ(OOB)の記憶
領域、パケット長に関する情報、ならびにパケットのデータ内容に関係するメモ
リ位置に対するポインタというような情報を含む。
トに添付する、追加のデータ構造フィールド、即ち、パケット拡張部150も示
す。先に説明したように、宛先のNICにオフロードしている特定のタスクまた
は複数のタスクの識別に必要な情報を収容するデータ構造を定義するのは、この
パケット拡張部150である。好適な実施形態では、各タスク・オフロード・タ
イプ(例えば、チェックサム、暗号化/解読、等)毎に、既定のデータ・フィー
ルドをパケット拡張部150内に含ませる。このデータ・フィールドは、単に、
制御フラグまたは複数のフラグの形式とすることができる。制御フラグは、単に
、特定の機能を実行する(チェックサム等)ことを示すに過ぎない。または、情
報は、タスクをどのように遂行すべきかについて更に定義するデータ構造へのポ
インタの形式とすることも可能である。例えば、図4に示す例では、パケット拡
張部150は、NICは152で示すチェックサム動作を実行することを示すフ
ラグを収容する。このタイプのタスクでは、パケット拡張部は、受信局における
NICが、送出側のNICが計算したチェックサムの有効性をチェックするよう
にも設定する。
るパケット拡張部データ構造の好適な実施形態は、以下の構造を有する。
NdisPacketChecksumV6双方をセットしない場合、デバイス・ドライバは、データ
・パケットに対してチェックサムを全く行なうことなく、これを送る。
ェストの計算に関連して実行する、セキュリティ機能154も、送出側NICが
実行すべきことを指定する。このタイプのタスクでは、フィールド154は、デ
ータ構造を収容するメモリ位置に対するポインタを収容することが好ましい。一
方、このデータ構造は、暗号化および/またはメッセージ・ダイジェスト機能の
実行に関連する情報を収容する。状況によっては、関連データを有するメモリ位
置に対するポインタを含ませることは、パケット拡張部自体の中に実際のデータ
を格納するよりも有効な場合がある。
の一例を示し、多数の連続するデータ・パケットに同じタイプの暗号化またはダ
イジェスト計算動作を実行しなければならない状況に対応する。プログラム・ス
テップ302において開始した後、プログラム・ステップ304は、現パケット
がパケット・シーケンス内の最初のパケットであるか否かについて判定を行なう
。そうである場合、この最初のパケットに、続くパケットに対する動作にも同様
に用いる情報即ちコンテクストを与える。例えば、最初のパケットは、用いる特
定の暗号化キーを明記するパケット拡張部を有する。この値即ちコンテクストは
、別個のメモリ位置即ちハンドルに格納する。連続するパケットは、この情報を
含む必要がなく、例えば、プログラム・ステップ308に示すように、暗号化キ
ー(またはその他のコンテクスト情報)が格納されているメモリ位置に対するポ
インタのみを有する。この手法は、パケットのシーケンスにおける後続のデータ
・パケット全体のサイズを縮小し、更にタスク・オフロード方法の効率および移
植性を高める。
42を送る特定のデバイス・ドライバによる問い合わせを受ける。例示の実施形
態において記載しているWindows NT環境では、このタイプの機能は、
適切なNDIS関数をコールすることによって実行することが好ましい。例えば
、パケットに対するパケット拡張部150のメモリ位置へのポインタを戻す既定
のNDIS関数を実行することができる。このときには、デバイス・ドライバ・
ソフトウエアは、どのタスクを実行するのか識別し、オフロードするタスク(複
数のタスク)に応じて、適切にドライバの対応するNICハードウエアを動作さ
せ/操作する。
らハードウエア周辺機器にオフロードすることは、多くの理由から有利である。
例えば、トランスポート・ドライバは、パケット毎に、周辺機器の能力を利用す
ることができる。これによって、タスクを動的にダウンロードすることができ、
周辺機器の能力を必要に応じて用いることができる。したがって、特定の時点に
おいて、コンピュータ・システムの処理オーバーヘッドが低い場合、あるタスク
を従来通りコンピュータ・プロセッサ上で実行することが望ましいこともある。
あるいは、CPUが他の計算タスクを多く負担する場合、単にデータ・パケット
に必要なパケット拡張部を添付することによって、タスクを周辺デバイスにオフ
ロードすることができる。
あり、本質的に、多数の動作を一度に「バッチ処理」する。例えば、コンピュー
タ・プロセッサがチェックサム動作または暗号化動作を実行する場合、その動作
、即ち、チェックサムの計算またはパケット・データの暗号化を完了することが
できるようにするには、その前にデータ・フィールド全体をメモリ位置にロード
しなければならない。更に、レイヤ状ネットワーキング・モデルのため、一度に
実行できる動作は1つのみであり、データをメモリに多数回コピーする必要があ
る。しかしながら、パケット単位の手法では、多数のタスクを1つのパケットに
オフロードすることができる。したがって、ハードウエア周辺機器は、ハードウ
エアの能力に応じて、データ上での単一のパスにおいて2つ以上の動作を実行す
ることができ、コンピュータ・システムのスループットおよび効率を大幅に向上
させることができる。
場合特に有用であるが、パケット単位の情報転送は他の方法でも同様に使用可能
であることは認められよう。例えば、特定のNICが所定の時点にパケットの配
信をスケジュールすることができる場合、パケット拡張データ構造は、NICハ
ードウエアがパケットをどのようにおよび/またはいつ送るかを識別する情報を
渡すためにも使用することができる。
ット拡張部をデータ・パケットに添付し、特定のタスクをNICにオフロードす
る前に、2つの追加の機能を最初に実行する。異なるタイプのハードウエア周辺
機器が数多くあり、各々が異なる処理能力を有する限りにおいて、本発明の実施
形態は、トランスポート・ドライバが最初にコンピュータ・システムに接続して
ある周辺機器のタスク・オフロード能力を問い合わせることができるようにする
手段を備えることが好ましい。一旦これらの機能を確認し終えれば、トランスポ
ート・プロトコル・ドライバは、対象のタスクを設定またはイネーブルすること
ができる。一旦イネーブルすれば、前述のようにパケット毎に指定のタスクを続
いて利用することができる。
の機能を実施し、次いで必要と思われるタスクを設定/イネーブルする現時点に
おいて好適な1つのプログラム・ステップ・セットを示す。好ましくは、図示の
プログラム・ステップは、トランスポート・プロトコル・ドライバ内に統合化し
たソフトウエア・コンポーネントまたはモジュールとして実施する。更に、Wi
ndows NT環境において実施する場合、機能的動作およびドライブ間通信
の多くは、NDISインターフェースを介して実行することが好ましい。勿論、
異なるオペレーティング・システム環境において実施する場合、または非ネット
ワーク・タイプの周辺機器と共に実施する場合、図示のプログラム・ステップは
それに応じて変更しなければならない。
1の演算装置21)が実行する。プログラム・ステップ202において開始し、
当該コンピュータ・システムに接続してある周辺機器(複数の周辺機器)のタス
ク・オフロード能力について問い合わせを行なう。例示の環境では、周辺機器(
複数の周辺機器)は、システムに付属するNIC(複数のNIC)である。好ま
しくは、各NICデバイス・ドライバ(図2の116〜120)には、既定のタ
スク・オフロード・バッファ位置(複数の位置)が関連付けられており、その各
々が当該デバイス・ドライバおよびその対応するNICのタスク・オフロード能
力を収容する。少なくとも、タスク・オフロード・バッファは、NICおよびそ
のデバイス・ドライバが対応する個々のタスク(複数のタスク)を識別し、更に
、対応する個々のタスク毎に特定的なあらゆる情報を含む。好適な実施形態では
、デバイス・ドライバのタスク・オフロード・バッファの内容は、NDIS関数
コールによって検索する。
実施形態は以下の構造を有する。
21は、図6のプログラム・ステップ204に示す機能に対応するコンピュータ
実行可能命令に進む。ここで、各周辺NICが対応する個々のタスク・オフロー
ド能力のいずれかが、トランスポートに該当するものであるか否かについて判定
を行なう。当該周辺機器に対応するタスクがない場合、または対応するタスクが
当該トランスポートには有用ではない場合、プロセッサは直接プログラム・ステ
ップ208に進み、この処理の特定のラインを停止し、トランスポートはその通
常動作に進む。あるいは、識別したタスクの1つ以上が該当する場合、プログラ
ム・ステップ206を実行する。このステップにおいて、実行可能命令を実行し
、プロトコル・ドライバが望む特定のタスク・オフロード能力をイネーブルにセ
ットする。これは、デバイス・ドライバおよびその対応するNICに、どのタイ
プのタスク・オフロードをパケット毎に予期する可能性があるのかについて知ら
せる。好適な実施形態では、タスク・オフロード能力をセットするには、データ
構造内に適切なデータ値をセットし、次いで、NDISインターフェース関数コ
ールによって、対応するデバイス・ドライバに受け渡す。例えば、個々のタスク
について、当該タスクのタスク・オフロード・バッファ構造内の適切なビットを
トランスポートによってセットすることにより、当該ドライバ/NICのタスク
をイネーブルすることができる。こうして、トランスポートは、後に使用したく
なる可能性がある各NIC/NICドライバのタスク・オフロード能力をいくつ
でもイネーブルすることができる。
毎にイネーブルしたなら、コンピュータ・システム・プロセッサ21はプログラ
ム・ステップ208に進み、この特定の機能に対する処理が終了する。この時点
において、トランスポート・ドライバは、前述のように各パケット毎に、イネー
ブルしたタスク・オフロード能力の各々を利用することができる。
較して、格別な利点を与える。コンピュータ・システムのプロセッサおよびメモ
リにおいて本来実行すべき具体的な処理タスクを、代わりに、当該コンピュータ
に接続してある特定の周辺デバイスまたは複数の周辺デバイスにダウンロードす
る。次いで、周辺機器によって計算タスクを実行することにより、コンピュータ
・システムの資源を他の計算タスクのために保存する。特に、オフロードした処
理タスクがCPUおよび/またはメモリ集中的な場合、このタスク・オフロード
方式は、コンピュータ・システム全体の計算効率を劇的に向上させる。開示した
コンピュータ・タスク・オフロード方法は、動的に要求に応じてタスクをオフロ
ードすることを可能にする手段を備えるという利点がある。したがって、プロセ
ッサは、他の計算タスクの処理に忙しく、プロセッサのオーバーヘッドが高いと
きに、タスクをオフロードすることができる。逆に、コンピュータ・システムの
処理資源に対する要求が低くなった場合には、代わりにプロセッサはタスクをそ
れ自体で実行すればよい。加えて、特定の周辺機器に多数のタスクをバッチでオ
フロードすることができる。多くの場合、周辺機器は、このような多数のタスク
を、コンピュータ・プロセッサよりははるかに効率的に実行するように最適化さ
れているので、システム全体の効率が更に改善する結果となる。最後に、本発明
の方法は、周辺機器の特定のタスク・オフロード能力について問い合わせ、その
後に選択的にイネーブルすることを可能にする処理方式を提供する。このように
、コンピュータ・システムは、その種々の周辺デバイスの能力を容易に識別し、
後に必要となる処理能力またはその可能性がある処理能力のみを利用することが
できる。
でも具体化が可能である。前述の実施形態は、あらゆる観点においても、例示で
あり限定として解釈すべきではない。したがって、本発明の範囲は、前述の説明
ではなく、添付した特許請求の範囲によって示すこととする。特許請求の範囲の
均等の意味および範囲に該当するあらゆる変更は、その範囲に含まれるものとす
る。
イスの一例を示す図である。
示す図である。
ネントによるデータ・パケットのフローを示す機能ブロック図である。
を示す図である。
点における好適な実施形態の1つを示すフロー・チャートである。
いるプログラム・ステップの現時点における好適な実施形態の1つを示すフロー
・チャートである。
化動作、メッセージ・ダイジェスト計算動作、TCP区分動作、および解読動作
から成る1つ以上の動作タスクから前記動作タスクを選択すること、を特徴とす
る方法。
Claims (22)
- 【請求項1】 少なくとも1つのソフトウエア・コンポーネントと少なくと
も1つの周辺デバイスとを有するコンピュータ・システム環境において、ソフト
ウエア・コンポーネントから周辺デバイスに動作タスクをオフロードする方法で
あって、 前記周辺デバイスに問い合わせを行い、前記周辺デバイスのタスク・オフロー
ド能力を判定するステップと、 前記周辺デバイスの選択したタスク・オフロード能力をイネーブルするステッ
プと、 前記ソフトウエア・コンポーネントが実行する動作タスクが前記周辺デバイス
のイネーブルしたタスク・オフロード能力に対応する場合、前記動作タスクを選
択的に前記ソフトウエア・コンポーネントから前記周辺デバイスにオフロードす
るステップと、 前記周辺デバイスにおいて、前記オフロードした動作タスクを実行するステッ
プと、 から成る方法。 - 【請求項2】 請求項1に記載したステップを実行するコンピュータ実行可
能命令を有するコンピュータ読取可能媒体。 - 【請求項3】 請求項1記載の方法において、前記周辺デバイスが、前記コ
ンピュータ・システムに動作的に接続してあるネットワーク・インターフェース
・カード(NIC)であること、を特徴とする方法。 - 【請求項4】 請求項1記載の方法において、前記ソフトウエア・コンポー
ネントが、レイヤ状ネットワーク・モデル内で実行するネットワーク・ソフトウ
エア・アプリケーションであること、を特徴とする方法。 - 【請求項5】 請求項1記載の方法において、前記周辺デバイスのタスク・
オフロード能力について問い合わせする際、当該周辺デバイスに関連する少なく
とも1つのタスク・オフロード・バッファ内に格納してあるタスク・データを読
み取り、該タスク・データが前記周辺デバイスの特定のタスク・オフロード能力
を示すこと、を特徴とする方法。 - 【請求項6】 請求項5記載の方法において、前記周辺デバイスには、多数
のタスク・オフロード・バッファを関連付けてあり、これによって前記周辺デバ
イスの多数のタスク・オフロード能力を定義すること、を特徴とする方法。 - 【請求項7】 請求項1記載の方法において、前記周辺デバイスの選択した
タスク・オフロード能力をイネーブルする際、前記周辺デバイスに関連するタス
ク・オフロード・バッファ内にある少なくとも1つのフラグ・インディケータを
セットすること、を特徴とする方法。 - 【請求項8】 請求項1記載の方法において、前記ソフトウエア・コンポー
ネントから前記周辺デバイスに前記動作タスクを選択的にオフロードする際、デ
ータ・パケットを前記周辺デバイスに送り、前記周辺デバイスが前記指定の動作
タスクを実行することを示すこと、を特徴とする方法。 - 【請求項9】 請求項8記載の方法において、前記データ・パケットが、ネ
ットワーク・データおよびパケット拡張データから成るネットワーク・データ・
パケットであり、前記パケット拡張データが、前記周辺デバイスによって実行す
る少なくとも1つの動作タスクを示す少なくとも1つのデータ・フィールドから
成ること、を特徴とする方法。 - 【請求項10】 請求項9記載の方法において、前記周辺デバイスがネット
ワーク・インターフェース・カード(NIC)であること、を特徴とする方法。 - 【請求項11】 請求項1記載の方法において、チェックサム動作、暗号化
動作、メッセージ・ダイジェスト計算動作、TCP区分動作、および解読動作か
ら成る1つ以上の動作タスクから前記動作タスクを選択すること、を特徴とする
方法。 - 【請求項12】 少なくとも1つのトランスポート・プロトコル・ドライバ
・ソフトウエア・コンポーネントおよび少なくとも1つのネットワーク・インタ
ーフェース・カード(NIC)デバイス・ドライバ、ならびに接続してある対応
のネットワーク・インターフェース・カード(NIC)とを有するコンピュータ
・システムにおいて、前記トランスポート・プロトコル・ドライバ・ソフトウエ
ア・コンポーネントから動作タスクをオフロードし、前記ネットワーク・インタ
ーフェース・カードにおいて実行する方法であって、 前記NICのタスク・オフロード能力を識別するタスク・データを含むデータ
構造を作成するステップと、 前記データ構造内に収容してあるタスク・データを問い合わせ、前記NICの
タスク・オフロード能力を識別するステップと、 前記NICを選択的にイネーブルし、前記識別したタスク・オフロード能力の
少なくとも1つを実行させるステップと、 前記トランスポート・プロトコル・ソフトウエア・コンポーネントが実行する
動作タスクが、前記NICのイネーブルしたタスク・オフロード能力に対応する
場合、タスク・オフロード・データをネットワーク・データ・パケットに添付す
ることにより、前記トランスポート・プロトコル・ソフトウエア・コンポーネン
トから前記NICに少なくとも1つの動作タスクを選択的にオフロードするステ
ップと、 前記ネットワーク・データ・パケットを前記NICに転送するステップと、 前記添付したタスク・オフロード・データにしたがって、前記NICにおいて
前記少なくとも1つのオフロードしたタスクを実行するステップと、 から成る方法。 - 【請求項13】 請求項12に記載したステップを実行するコンピュータ実
行可能命令を有するコンピュータ読取可能媒体。 - 【請求項14】 請求項12記載の方法において、前記データ構造が、 タスク・オフロード能力のタイプを表すデータを収容する第1データ・フィー
ルドと、 前記第1データ・フィールドに定義したタスク・オフロードを実行するために
必要なデータを収容する第2データ・フィールドと、 を備えること、を特徴とする方法。 - 【請求項15】 請求項12記載の方法において、少なくとも1つのデータ
・フィールドを前記データ構造に書き込むことによって、前記NICを選択的に
イネーブルし、前記識別したタスク・オフロード能力の少なくとも1つを実行さ
せること、を特徴とする方法。 - 【請求項16】 請求項12記載の方法において、前記ネットワーク・デー
タ・パケットに添付した前記タスク・オフロード・データが、前記NICが前記
ネットワーク・データ・パケットを受信したときに、当該NICが実行するオフ
ロード・タスクのタイプを表す第1データ・フィールドを備えること、を特徴と
する方法。 - 【請求項17】 請求項16記載の方法において、前記タスク・オフロード
・データが、更に、メモリ位置への少なくとも1つのポインタを収容する第2デ
ータ・フィールドを備え、前記メモリ位置が、前記タスク・オフロード・データ
の第1データ・フィールドに指定してあるオフロード・タスクを実行するために
必要なデータを収容すること、を特徴とする方法。 - 【請求項18】 コンピュータ・システムに接続してあるネットワーク・イ
ンターフェース・カード(NIC)において実行する計算タスクをオフロードす
るためのコンピュータ実行可能命令を有するコンピュータ読取可能媒体であって
、更に、 前記コンピュータ・システム上で実行するアプリケーションに、前記NICの
あらゆるタスク・オフロード処理能力を通知するステップと、 前記コンピュータ・システム上で実行するアプリケーションから前記NICに
宛てられる各ネットワーク・データ・パケット毎に、前記データ・パケットに添
付してあるパケット拡張データ構造を検査するステップと、 前記NICに、前記ネットワーク・データ・パケットに添付した前記パケット
拡張データ構造内に収容してあるデータにしたがって、動作タスクを実行させる
ステップと、 を実行するコンピュータ実行可能命令を更に含むコンピュータ読取可能媒体。 - 【請求項19】 請求項18記載のコンピュータ読取可能媒体において、前
記通知するステップを実行する前記コンピュータ実行可能命令が、前記NICの
タスク・オフロード能力のタイプを表すデータを収容する第1データ・フィール
ドを備えたタスク・オフロード・バッファ・データ構造を作成するステップを含
むこと、を特徴とするコンピュータ読取可能媒体。 - 【請求項20】 請求項19記載のコンピュータ読取可能媒体において、前
記タスク・オフロード・バッファ・データ構造が、更に、前記第1データ・フィ
ールド内において定義したタスク・オフロードを実行するために必要なデータを
収容する、少なくとも1つの追加データ・フィールドを備えること、を特徴とす
るコンピュータ読取可能媒体。 - 【請求項21】 請求項18記載のコンピュータ読取可能媒体において、前
記ネットワーク・データ・パケットに添付する前記パケット拡張データ構造が、
前記NICが実行する動作タスクのタイプを表す第1データ・フィールドを備え
ること、を特徴とするコンピュータ読取可能媒体。 - 【請求項22】 請求項21記載のコンピュータ読取可能媒体において、前
記パケット拡張データ構造が、更に、メモリ位置への少なくとも1つのポインタ
を収容する少なくとも1つの追加データ・フィールドを備え、前記メモリ位置が
、前記パケット拡張データ構造の前記第1データ・フィールド内に指定してある
動作タスクを実行するために必要なデータを収容すること、を特徴とするコンピ
ュータ読取可能媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/097,169 US6141705A (en) | 1998-06-12 | 1998-06-12 | System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed |
US09/097,169 | 1998-06-12 | ||
PCT/US1999/010273 WO1999064952A1 (en) | 1998-06-12 | 1999-05-11 | Method and computer program product for offloading processing tasks from software to hardware |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002517855A true JP2002517855A (ja) | 2002-06-18 |
JP2002517855A5 JP2002517855A5 (ja) | 2006-08-31 |
JP4262888B2 JP4262888B2 (ja) | 2009-05-13 |
Family
ID=22261714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000553887A Expired - Fee Related JP4262888B2 (ja) | 1998-06-12 | 1999-05-11 | 処理タスクをソフトウエアからハードウエアにオフロードする方法およびコンピュータ・プログラム製品 |
Country Status (6)
Country | Link |
---|---|
US (2) | US6141705A (ja) |
EP (1) | EP1086421B1 (ja) |
JP (1) | JP4262888B2 (ja) |
AT (1) | ATE463008T1 (ja) |
DE (1) | DE69942201D1 (ja) |
WO (1) | WO1999064952A1 (ja) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004004761A (ja) * | 2002-04-15 | 2004-01-08 | Microsoft Corp | ビデオ・レンダラーとグラフィックス・デバイス・ドライバの間の相互作用を促進すること |
JP2004030612A (ja) * | 2002-04-30 | 2004-01-29 | Microsoft Corp | オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法 |
JP2005085284A (ja) * | 2003-09-10 | 2005-03-31 | Microsoft Corp | フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード |
JP2007272628A (ja) * | 2006-03-31 | 2007-10-18 | Nec Corp | 情報検知処理方法及び装置 |
US7370082B2 (en) | 2003-05-09 | 2008-05-06 | Microsoft Corporation | Remote invalidation of pre-shared RDMA key |
US7437547B2 (en) | 1998-06-12 | 2008-10-14 | Microsoft Corporation | Method and computer program product for offloading processing tasks from software to hardware |
JP2008259238A (ja) * | 2001-04-24 | 2008-10-23 | Nvidia Corp | ギガビット・イーサネット・アダプタ |
WO2009022422A1 (ja) * | 2007-08-16 | 2009-02-19 | Panasonic Corporation | 暗号通信装置 |
JP2009048279A (ja) * | 2007-08-15 | 2009-03-05 | Nec Corp | 情報処理システムおよび情報処理方法 |
JP2009512240A (ja) * | 2005-09-27 | 2009-03-19 | インテル・コーポレーション | 無線ネットワークにおけるデータ伝送速度改善メカニズム |
JP2009534945A (ja) * | 2006-04-18 | 2009-09-24 | クゥアルコム・インコーポレイテッド | 無線アプリケーション用のオフロード処理 |
US7876379B2 (en) | 2002-04-15 | 2011-01-25 | Microsoft Corporation | Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays |
JP2012053906A (ja) * | 2011-11-07 | 2012-03-15 | Nec Corp | 情報処理システムおよび情報処理方法 |
JP2012510126A (ja) * | 2008-11-26 | 2012-04-26 | マイクロソフト コーポレーション | リモートデスクトッププロトコルのためのハードウェアアクセラレーション |
US8428346B2 (en) | 2003-08-01 | 2013-04-23 | Microsoft Corporation | Strategies for processing image information using a color information data structure |
US8600373B2 (en) | 2006-04-26 | 2013-12-03 | Qualcomm Incorporated | Dynamic distribution of device functionality and resource management |
JP2014209754A (ja) * | 2008-06-19 | 2014-11-06 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | Wwan技術のためのハードウェアアクセラレーション |
JP7089840B2 (ja) | 2014-09-19 | 2022-06-23 | 株式会社aLab | デバイスプロキシ装置及びそれを含む計算機システム |
Families Citing this family (194)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978379A (en) | 1997-01-23 | 1999-11-02 | Gadzoox Networks, Inc. | Fiber channel learning bridge, learning half bridge, and protocol |
US6687758B2 (en) * | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US6389479B1 (en) | 1997-10-14 | 2002-05-14 | Alacritech, Inc. | Intelligent network interface device and system for accelerated communication |
US7174393B2 (en) * | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US6697868B2 (en) * | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6658480B2 (en) | 1997-10-14 | 2003-12-02 | Alacritech, Inc. | Intelligent network interface system and method for accelerated protocol processing |
US7089326B2 (en) * | 1997-10-14 | 2006-08-08 | Alacritech, Inc. | Fast-path processing for receiving data on TCP connection offload devices |
US6427173B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Intelligent network interfaced device and system for accelerated communication |
US6226680B1 (en) * | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US8539112B2 (en) | 1997-10-14 | 2013-09-17 | Alacritech, Inc. | TCP/IP offload device |
US7284070B2 (en) * | 1997-10-14 | 2007-10-16 | Alacritech, Inc. | TCP offload network interface device |
US7042898B2 (en) | 1997-10-14 | 2006-05-09 | Alacritech, Inc. | Reducing delays associated with inserting a checksum into a network message |
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7133940B2 (en) | 1997-10-14 | 2006-11-07 | Alacritech, Inc. | Network interface device employing a DMA command queue |
US6757746B2 (en) * | 1997-10-14 | 2004-06-29 | Alacritech, Inc. | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory |
US8782199B2 (en) | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
US8621101B1 (en) | 2000-09-29 | 2013-12-31 | Alacritech, Inc. | Intelligent network storage interface device |
US7185266B2 (en) | 2003-02-12 | 2007-02-27 | Alacritech, Inc. | Network interface device for error detection using partial CRCS of variable length message portions |
US7076568B2 (en) * | 1997-10-14 | 2006-07-11 | Alacritech, Inc. | Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket |
US6591302B2 (en) | 1997-10-14 | 2003-07-08 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US7167927B2 (en) * | 1997-10-14 | 2007-01-23 | Alacritech, Inc. | TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism |
US6427171B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6237053B1 (en) * | 1998-06-30 | 2001-05-22 | Symbol Technologies, Inc. | Configurable operating system having multiple data conversion applications for I/O connectivity |
ITMI981564A1 (it) * | 1998-07-09 | 2000-01-09 | St Microelectronics Srl | Memoria non volatile in grado di eseguire un programma autonomamente |
US7664883B2 (en) | 1998-08-28 | 2010-02-16 | Alacritech, Inc. | Network interface device that fast-path processes solicited session layer read commands |
US20030158932A1 (en) * | 1998-10-02 | 2003-08-21 | Haruo Machida | System for displaying connection condition of device provided on network |
US7430171B2 (en) | 1998-11-19 | 2008-09-30 | Broadcom Corporation | Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost |
US6463537B1 (en) * | 1999-01-04 | 2002-10-08 | Codex Technologies, Inc. | Modified computer motherboard security and identification system |
US7437483B1 (en) * | 1999-03-24 | 2008-10-14 | Microsoft Corporation | System and method for transferring a compressed data file to a peripheral device |
JP2000305885A (ja) * | 1999-04-23 | 2000-11-02 | Toshiba Corp | 通信装置及びその方法 |
US6526446B1 (en) * | 1999-04-27 | 2003-02-25 | 3Com Corporation | Hardware only transmission control protocol segmentation for a high performance network interface card |
JP3409749B2 (ja) * | 1999-09-09 | 2003-05-26 | エヌイーシーマイクロシステム株式会社 | Usbファンクションの評価装置及びその方法 |
US6715001B1 (en) * | 1999-09-15 | 2004-03-30 | Koninklijke Philips Electronics N.V. | Can microcontroller that employs reconfigurable message buffers |
US6728892B1 (en) * | 1999-09-15 | 2004-04-27 | Koninklijke Philips Electronics N.V. | Method for conserving power in a can microcontroller and a can microcontroller that implements this method |
US6948175B1 (en) * | 1999-11-16 | 2005-09-20 | Ricoh Company, Ltd. | Method and system of remote diagnostic, control and information collection using a dynamic linked library |
US6564267B1 (en) * | 1999-11-22 | 2003-05-13 | Intel Corporation | Network adapter with large frame transfer emulation |
US6985964B1 (en) * | 1999-12-22 | 2006-01-10 | Cisco Technology, Inc. | Network processor system including a central processor and at least one peripheral processor |
US7082530B1 (en) * | 1999-12-31 | 2006-07-25 | Intel Corporation | Method and apparatus for accelerating hardware encryption with multiple networking interfaces |
US7113487B1 (en) * | 2000-04-07 | 2006-09-26 | Intel Corporation | Forwarding control protocol |
US6922785B1 (en) * | 2000-05-11 | 2005-07-26 | International Business Machines Corporation | Apparatus and a method for secure communications for network computers |
US8019901B2 (en) * | 2000-09-29 | 2011-09-13 | Alacritech, Inc. | Intelligent network storage interface system |
US6738829B1 (en) * | 2000-10-16 | 2004-05-18 | Wind River Systems, Inc. | System and method for implementing a generic enhanced network driver |
US6720074B2 (en) * | 2000-10-26 | 2004-04-13 | Inframat Corporation | Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof |
US20020116397A1 (en) | 2000-12-21 | 2002-08-22 | Berg Mitchell T. | Method and system for communicating an information packet through multiple router devices |
US7512686B2 (en) * | 2000-12-21 | 2009-03-31 | Berg Mitchell T | Method and system for establishing a data structure of a connection with a client |
US7546369B2 (en) * | 2000-12-21 | 2009-06-09 | Berg Mitchell T | Method and system for communicating a request packet in response to a state |
US7421505B2 (en) * | 2000-12-21 | 2008-09-02 | Noatak Software Llc | Method and system for executing protocol stack instructions to form a packet for causing a computing device to perform an operation |
US7287090B1 (en) * | 2000-12-21 | 2007-10-23 | Noatak Software, Llc | Method and system for identifying a computing device in response to a request packet |
US7418522B2 (en) * | 2000-12-21 | 2008-08-26 | Noatak Software Llc | Method and system for communicating an information packet through multiple networks |
US7117280B2 (en) * | 2000-12-27 | 2006-10-03 | Intel Corporation | Network based intra-system communications architecture |
US6708229B2 (en) * | 2000-12-27 | 2004-03-16 | Intel Corporation | Configuring computer components |
US8218555B2 (en) | 2001-04-24 | 2012-07-10 | Nvidia Corporation | Gigabit ethernet adapter |
US6738874B2 (en) | 2001-05-02 | 2004-05-18 | Layer N Networks, Inc. | Controller architecture and strategy for small discontiguous accesses to high-density memory devices |
US7913261B2 (en) * | 2001-05-02 | 2011-03-22 | nCipher Corporation, Ltd. | Application-specific information-processing method, system, and apparatus |
US7218734B2 (en) * | 2001-05-02 | 2007-05-15 | Nciper Corporation Limited | Ring arithmetic method, system, and apparatus |
US7233970B2 (en) * | 2001-05-02 | 2007-06-19 | Cipher Corporation Limited | Computational method, system, and apparatus |
US20020166070A1 (en) * | 2001-05-04 | 2002-11-07 | Avraham Mualem | Method and apparatus to reduce errors of a security association |
US7124293B2 (en) * | 2001-06-29 | 2006-10-17 | Intel Corporation | Intelligently determining which traffic streams to offload efficiently |
US7496748B2 (en) * | 2001-07-23 | 2009-02-24 | Itt Manufacturing Enterprises | Method for establishing a security association between two or more computers communicating via an interconnected computer network |
US20030037154A1 (en) * | 2001-08-16 | 2003-02-20 | Poggio Andrew A. | Protocol processor |
US6760769B2 (en) | 2001-08-31 | 2004-07-06 | Adaptec, Inc. | Apparatus and methods for transmitting data at high speed using TCP/IP |
US20030046330A1 (en) * | 2001-09-04 | 2003-03-06 | Hayes John W. | Selective offloading of protocol processing |
US6918019B2 (en) * | 2001-10-01 | 2005-07-12 | Britestream Networks, Inc. | Network and networking system for small discontiguous accesses to high-density memory devices |
US6894804B2 (en) * | 2001-10-03 | 2005-05-17 | Toshiba Tec Kabushiki Kaisha | Method to dynamically perform document layout functions |
US7124198B2 (en) * | 2001-10-30 | 2006-10-17 | Microsoft Corporation | Apparatus and method for scaling TCP off load buffer requirements by segment size |
US6990662B2 (en) * | 2001-10-31 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Method and system for offloading execution and resources for resource-constrained networked devices |
US7246233B2 (en) * | 2001-12-05 | 2007-07-17 | International Business Machines Corporation | Policy-driven kernel-based security implementation |
US7441119B2 (en) * | 2001-12-05 | 2008-10-21 | International Business Machines Corporation | Offload processing for secure data transfer |
US20030105952A1 (en) * | 2001-12-05 | 2003-06-05 | International Business Machines Corporation | Offload processing for security session establishment and control |
US20030105977A1 (en) * | 2001-12-05 | 2003-06-05 | International Business Machines Corporation | Offload processing for secure data transfer |
US20030121835A1 (en) * | 2001-12-31 | 2003-07-03 | Peter Quartararo | Apparatus for and method of sieving biocompatible adsorbent beaded polymers |
US6917974B1 (en) * | 2002-01-03 | 2005-07-12 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for preventing network traffic analysis |
US20030127185A1 (en) * | 2002-01-04 | 2003-07-10 | Bakly Walter N. | Method for applying retroreflective target to a surface |
US8024392B2 (en) * | 2002-02-16 | 2011-09-20 | Ncipher Corporation Limited | Computational method, system, and apparatus |
US7644188B2 (en) * | 2002-02-25 | 2010-01-05 | Intel Corporation | Distributing tasks in data communications |
US7133152B2 (en) * | 2002-02-28 | 2006-11-07 | Kabushiki Kaisha Toshiba | Post RIP paper conversion |
US7164492B2 (en) * | 2002-03-07 | 2007-01-16 | Kabushiki Kaisha Toshiba | Automatic facsimile document resizing |
US7245392B2 (en) * | 2002-03-08 | 2007-07-17 | Kabushiki Kaisha Toshiba | Method for generating a fax cover page |
US7219121B2 (en) * | 2002-03-29 | 2007-05-15 | Microsoft Corporation | Symmetrical multiprocessing in multiprocessor systems |
JP4199477B2 (ja) | 2002-04-17 | 2008-12-17 | パナソニック株式会社 | デジタル双方向通信制御装置およびその方法 |
US7496689B2 (en) * | 2002-04-22 | 2009-02-24 | Alacritech, Inc. | TCP/IP offload device |
US7543087B2 (en) * | 2002-04-22 | 2009-06-02 | Alacritech, Inc. | Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device |
US7007103B2 (en) * | 2002-04-30 | 2006-02-28 | Microsoft Corporation | Method to offload a network stack |
US7558873B1 (en) * | 2002-05-08 | 2009-07-07 | Nvidia Corporation | Method for compressed large send |
US7437548B1 (en) | 2002-07-11 | 2008-10-14 | Nvidia Corporation | Network level protocol negotiation and operation |
US7467406B2 (en) * | 2002-08-23 | 2008-12-16 | Nxp B.V. | Embedded data set processing |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US7934021B2 (en) | 2002-08-29 | 2011-04-26 | Broadcom Corporation | System and method for network interfacing |
US7426579B2 (en) * | 2002-09-17 | 2008-09-16 | Broadcom Corporation | System and method for handling frames in multiple stack environments |
WO2004021626A2 (en) | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for handling out-of-order frames |
US7783035B2 (en) * | 2002-08-30 | 2010-08-24 | Adaptec, Inc. | Systems and methods for implementing host-based security in a computer network |
US8180928B2 (en) | 2002-08-30 | 2012-05-15 | Broadcom Corporation | Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney |
US7313623B2 (en) * | 2002-08-30 | 2007-12-25 | Broadcom Corporation | System and method for TCP/IP offload independent of bandwidth delay product |
US7191241B2 (en) | 2002-09-27 | 2007-03-13 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US20040088262A1 (en) * | 2002-11-06 | 2004-05-06 | Alacritech, Inc. | Enabling an enhanced function of an electronic device |
US7974416B2 (en) * | 2002-11-27 | 2011-07-05 | Intel Corporation | Providing a secure execution mode in a pre-boot environment |
DE10304114A1 (de) | 2003-01-31 | 2004-08-05 | Robert Bosch Gmbh | Rechnersystem in einem Fahrzeug |
US7184445B2 (en) * | 2003-02-12 | 2007-02-27 | Silverback Systems Inc. | Architecture and API for of transport and upper layer protocol processing acceleration |
US20040167985A1 (en) * | 2003-02-21 | 2004-08-26 | Adescom, Inc. | Internet protocol access controller |
US7398386B2 (en) | 2003-04-12 | 2008-07-08 | Cavium Networks, Inc. | Transparent IPSec processing inline between a framer and a network component |
US7043572B2 (en) * | 2003-06-06 | 2006-05-09 | Microsoft Corporation | Method and system for providing a peripheral service to a host computing device |
US7913294B1 (en) | 2003-06-24 | 2011-03-22 | Nvidia Corporation | Network protocol processing for filtering packets |
US7356664B2 (en) * | 2003-07-17 | 2008-04-08 | International Business Machines Corporation | Method and apparatus for transferring data from a memory subsystem to a network adapter for improving the memory subsystem and PCI bus efficiency |
US7376763B2 (en) * | 2003-07-17 | 2008-05-20 | International Business Machines Corporation | Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency |
US7400639B2 (en) * | 2003-08-07 | 2008-07-15 | Intel Corporation | Method, system, and article of manufacture for utilizing host memory from an offload adapter |
US7526577B2 (en) * | 2003-09-19 | 2009-04-28 | Microsoft Corporation | Multiple offload of network state objects with support for failover events |
US7978716B2 (en) | 2003-11-24 | 2011-07-12 | Citrix Systems, Inc. | Systems and methods for providing a VPN solution |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
EP1544734A1 (en) * | 2003-12-17 | 2005-06-22 | Siemens Aktiengesellschaft | A method for performing a task on a mobile terminal, and a mobile terminal |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US8572289B1 (en) * | 2003-12-19 | 2013-10-29 | Nvidia Corporation | System, method and computer program product for stateless offloading of upper level network protocol operations |
US7864806B2 (en) * | 2004-01-06 | 2011-01-04 | Broadcom Corp. | Method and system for transmission control packet (TCP) segmentation offload |
US20050188074A1 (en) * | 2004-01-09 | 2005-08-25 | Kaladhar Voruganti | System and method for self-configuring and adaptive offload card architecture for TCP/IP and specialized protocols |
US20050251676A1 (en) * | 2004-05-05 | 2005-11-10 | Intel Corporation | Method for offloading the digest portion of protocols |
JP2008500656A (ja) * | 2004-05-21 | 2008-01-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 2台のデュアルロールデバイスでジョブを処理する方法及びシステム |
US8739274B2 (en) | 2004-06-30 | 2014-05-27 | Citrix Systems, Inc. | Method and device for performing integrated caching in a data communication network |
US7757074B2 (en) | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US7281068B2 (en) * | 2004-07-15 | 2007-10-09 | International Business Machines Corporation | Wireless-boot diskless mobile computing |
EP2744175B1 (en) | 2004-07-23 | 2018-09-05 | Citrix Systems, Inc. | Systems and methods for optimizing communications between network nodes |
AU2005266945A1 (en) | 2004-07-23 | 2006-02-02 | Citrix Systems, Inc. | A method and systems for securing remote access to private networks |
US7606251B2 (en) * | 2004-08-05 | 2009-10-20 | International Business Machines Corporation | Method, system, and computer program product for reducing network copies by port-based routing to application-specific buffers |
US7487514B1 (en) * | 2004-08-31 | 2009-02-03 | Sun Microsystems, Inc. | Method and system for using DLPI to negotiate advanced interfaces |
US8248939B1 (en) | 2004-10-08 | 2012-08-21 | Alacritech, Inc. | Transferring control of TCP connections between hierarchy of processing mechanisms |
US7783880B2 (en) * | 2004-11-12 | 2010-08-24 | Microsoft Corporation | Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management |
US8745273B2 (en) * | 2004-12-22 | 2014-06-03 | Intel Corporation | Out-of-band state machine |
US8954595B2 (en) | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
US7810089B2 (en) | 2004-12-30 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US8549149B2 (en) * | 2004-12-30 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing |
US8700695B2 (en) | 2004-12-30 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP pooling |
US20060253605A1 (en) * | 2004-12-30 | 2006-11-09 | Prabakar Sundarrajan | Systems and methods for providing integrated client-side acceleration techniques to access remote applications |
CA2594082A1 (en) | 2005-01-06 | 2006-07-13 | Tervela, Inc. | A caching engine in a messaging system |
US20060146999A1 (en) * | 2005-01-06 | 2006-07-06 | Tervela, Inc. | Caching engine in a messaging system |
US8068819B2 (en) * | 2005-01-24 | 2011-11-29 | Kyocera Corporation | System and method for increased wireless communication device performance |
US8255456B2 (en) | 2005-12-30 | 2012-08-28 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
KR101332911B1 (ko) | 2005-05-11 | 2013-11-26 | 퀄컴 인코포레이티드 | 분산 처리 시스템 및 방법 |
WO2006128925A1 (es) * | 2005-05-31 | 2006-12-07 | Imbert Management Consulting Solutions | Expansor de computación |
US7716730B1 (en) * | 2005-06-24 | 2010-05-11 | Oracle America, Inc. | Cryptographic offload using TNICs |
US20070016824A1 (en) * | 2005-07-14 | 2007-01-18 | International Business Machines Corporation | Methods and apparatus for global systems management |
US7430220B2 (en) * | 2005-07-29 | 2008-09-30 | International Business Machines Corporation | System load based dynamic segmentation for network interface cards |
US7437546B2 (en) * | 2005-08-03 | 2008-10-14 | Intel Corporation | Multiple, cooperating operating systems (OS) platform system and method |
US7660306B1 (en) | 2006-01-12 | 2010-02-09 | Chelsio Communications, Inc. | Virtualizing the operation of intelligent network interface circuitry |
US7724658B1 (en) | 2005-08-31 | 2010-05-25 | Chelsio Communications, Inc. | Protocol offload transmit traffic management |
US7660264B1 (en) | 2005-12-19 | 2010-02-09 | Chelsio Communications, Inc. | Method for traffic schedulign in intelligent network interface circuitry |
US7616563B1 (en) | 2005-08-31 | 2009-11-10 | Chelsio Communications, Inc. | Method to implement an L4-L7 switch using split connections and an offloading NIC |
US9455844B2 (en) * | 2005-09-30 | 2016-09-27 | Qualcomm Incorporated | Distributed processing system and method |
US8447898B2 (en) | 2005-10-28 | 2013-05-21 | Microsoft Corporation | Task offload to a peripheral device |
US7656894B2 (en) * | 2005-10-28 | 2010-02-02 | Microsoft Corporation | Offloading processing tasks to a peripheral device |
US20070101023A1 (en) * | 2005-10-28 | 2007-05-03 | Microsoft Corporation | Multiple task offload to a peripheral device |
US7738500B1 (en) | 2005-12-14 | 2010-06-15 | Alacritech, Inc. | TCP timestamp synchronization for network connections that are offloaded to network interface devices |
US7921184B2 (en) | 2005-12-30 | 2011-04-05 | Citrix Systems, Inc. | System and method for performing flash crowd caching of dynamically generated objects in a data communication network |
US8301839B2 (en) | 2005-12-30 | 2012-10-30 | Citrix Systems, Inc. | System and method for performing granular invalidation of cached dynamically generated objects in a data communication network |
US7962656B1 (en) * | 2006-01-03 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | Command encoding of data to enable high-level functions in computer networks |
US7925765B2 (en) * | 2006-04-07 | 2011-04-12 | Microsoft Corporation | Cooperative diagnosis in a wireless LAN |
US8289159B2 (en) | 2006-04-26 | 2012-10-16 | Qualcomm Incorporated | Wireless localization apparatus and method |
US8406794B2 (en) | 2006-04-26 | 2013-03-26 | Qualcomm Incorporated | Methods and apparatuses of initiating communication in wireless networks |
US20080022124A1 (en) * | 2006-06-22 | 2008-01-24 | Zimmer Vincent J | Methods and apparatus to offload cryptographic processes |
US20070300299A1 (en) * | 2006-06-27 | 2007-12-27 | Zimmer Vincent J | Methods and apparatus to audit a computer in a sequestered partition |
US8214509B2 (en) * | 2006-10-02 | 2012-07-03 | Microsoft Corporation | Receive coalescing and direct data placement |
GB0621774D0 (en) | 2006-11-01 | 2006-12-13 | Level 5 Networks Inc | Driver level segmentation |
US7966039B2 (en) * | 2007-02-02 | 2011-06-21 | Microsoft Corporation | Bidirectional dynamic offloading of tasks between a host and a mobile device |
US8935406B1 (en) | 2007-04-16 | 2015-01-13 | Chelsio Communications, Inc. | Network adaptor configured for connection establishment offload |
US8589587B1 (en) * | 2007-05-11 | 2013-11-19 | Chelsio Communications, Inc. | Protocol offload in intelligent network adaptor, including application level signalling |
US8060644B1 (en) | 2007-05-11 | 2011-11-15 | Chelsio Communications, Inc. | Intelligent network adaptor with end-to-end flow control |
US20090106436A1 (en) * | 2007-10-23 | 2009-04-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and systems for offload processing |
US8694776B2 (en) * | 2007-12-21 | 2014-04-08 | Spansion Llc | Authenticated memory and controller slave |
US8335916B2 (en) | 2008-01-29 | 2012-12-18 | International Business Machines Corporation | Secure request handling using a kernel level cache |
US8539513B1 (en) | 2008-04-01 | 2013-09-17 | Alacritech, Inc. | Accelerating data transfer in a virtual computer system with tightly coupled TCP connections |
US8341286B1 (en) | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
US8458371B2 (en) * | 2009-08-03 | 2013-06-04 | National Instruments Corporation | Peripheral devices integrated into a processing chain |
US8307136B2 (en) * | 2009-08-03 | 2012-11-06 | National Instruments Corporation | Data movement system and method |
US9092149B2 (en) | 2010-11-03 | 2015-07-28 | Microsoft Technology Licensing, Llc | Virtualization and offload reads and writes |
US8566831B2 (en) | 2011-01-26 | 2013-10-22 | International Business Machines Corporation | Execution of work units in a heterogeneous computing environment |
US8533720B2 (en) | 2011-02-25 | 2013-09-10 | International Business Machines Corporation | Offloading work from one type to another type of processor based on the count of each type of service call instructions in the work unit |
US9146765B2 (en) | 2011-03-11 | 2015-09-29 | Microsoft Technology Licensing, Llc | Virtual disk storage techniques |
US9817582B2 (en) | 2012-01-09 | 2017-11-14 | Microsoft Technology Licensing, Llc | Offload read and write offload provider |
US8984186B2 (en) * | 2012-08-29 | 2015-03-17 | Google Inc. | Augmenting capabilities of a host device |
US9071585B2 (en) | 2012-12-12 | 2015-06-30 | Microsoft Technology Licensing, Llc | Copy offload for disparate offload providers |
US9251201B2 (en) | 2012-12-14 | 2016-02-02 | Microsoft Technology Licensing, Llc | Compatibly extending offload token size |
WO2014101192A1 (zh) * | 2012-12-31 | 2014-07-03 | 华为技术有限公司 | 网络设备以及处理报文方法 |
US20140281488A1 (en) * | 2013-03-15 | 2014-09-18 | Aruba Networks, Inc. | System and Method for Offloading Cryptographic Functions to Support a Large Number of Clients in a Wireless Access Point |
CN104618304B (zh) * | 2013-11-01 | 2017-12-15 | 新华三技术有限公司 | 数据处理方法及数据处理*** |
US20160095057A1 (en) * | 2014-09-26 | 2016-03-31 | Wey-Yi W. Guy | Systems and methods for distributing offload service processing |
US9934019B1 (en) * | 2014-12-16 | 2018-04-03 | Amazon Technologies, Inc. | Application function conversion to a service |
US10228930B2 (en) * | 2016-01-28 | 2019-03-12 | Microsoft Technology Licensing, Llc | Offloading network connectivity and execution tasks to an assistant device |
US10171452B2 (en) * | 2016-03-31 | 2019-01-01 | International Business Machines Corporation | Server authentication using multiple authentication chains |
US11199986B2 (en) * | 2019-08-02 | 2021-12-14 | EMC IP Holding Company, LLC | System and method for data migration across storage systems |
US11689637B2 (en) * | 2019-10-14 | 2023-06-27 | Qualcomm Incorporated | Local cache management in edge networks |
EP4187879A4 (en) | 2020-09-24 | 2023-11-22 | Samsung Electronics Co., Ltd. | METHOD AND APPARATUS FOR OFFLOADING HARDWARE TO A SOFTWARE PACKAGE |
US11290458B1 (en) * | 2020-09-25 | 2022-03-29 | Dell Products L.P. | Smart peripheral device for an information handling system |
US11968251B1 (en) * | 2022-12-12 | 2024-04-23 | Juniper Networks, Inc. | Self-learning service scheduler for smart NICs |
CN116232944B (zh) * | 2023-05-06 | 2023-08-04 | 珠海星云智联科技有限公司 | 用于传输层安全协议报文业务的方法、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0619855A (ja) * | 1992-07-01 | 1994-01-28 | Fujitsu Ltd | メッセージのキューイング方法とその装置 |
US5634070A (en) * | 1995-09-08 | 1997-05-27 | Iq Systems | Distributed processing systems having a host processor and at least two object oriented processors which communicate directly with each other |
JPH09234853A (ja) * | 1995-12-06 | 1997-09-09 | Xerox Corp | 電子的画像処理装置の動作方法 |
JPH10124468A (ja) * | 1996-10-01 | 1998-05-15 | Internatl Business Mach Corp <Ibm> | 資源管理方法及びコンピュータ |
JP2950366B2 (ja) * | 1995-10-30 | 1999-09-20 | 日本電気株式会社 | マルチメディア通信プラットフォームおよびマルチメディア通信装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CH584488A5 (ja) * | 1975-05-05 | 1977-01-31 | Ibm | |
US4577272A (en) * | 1983-06-27 | 1986-03-18 | E-Systems, Inc. | Fault tolerant and load sharing processing system |
US5127104A (en) * | 1986-12-29 | 1992-06-30 | Dataflow Computer Corporation | Method and product involving translation and execution of programs by automatic partitioning and data structure allocation |
WO1993010492A1 (en) * | 1991-11-12 | 1993-05-27 | Microchip Technology Inc. | Self-programming microcontroller with stored instruction to command program from external memory |
JPH05265975A (ja) * | 1992-03-16 | 1993-10-15 | Hitachi Ltd | 並列計算処理装置 |
JPH06215160A (ja) * | 1992-08-25 | 1994-08-05 | Texas Instr Inc <Ti> | データ処理方法および装置 |
CA2134620A1 (en) * | 1993-11-05 | 1995-05-06 | Arul Menezes | System and method for exchanging computer data processing capabilities |
US5913028A (en) * | 1995-10-06 | 1999-06-15 | Xpoint Technologies, Inc. | Client/server data traffic delivery system and method |
GB9606790D0 (en) * | 1996-03-29 | 1996-06-05 | British Telecomm | Peripheral control in an intelligent network |
US5737520A (en) * | 1996-09-03 | 1998-04-07 | Hewlett-Packard Co. | Method and apparatus for correlating logic analyzer state capture data with associated application data structures |
US6065085A (en) * | 1998-01-27 | 2000-05-16 | Lsi Logic Corporation | Bus bridge architecture for a data processing system capable of sharing processing load among a plurality of devices |
US6232405B1 (en) * | 2000-02-02 | 2001-05-15 | Atofina Chemicals, Inc. | SMA resin amic acids |
-
1998
- 1998-06-12 US US09/097,169 patent/US6141705A/en not_active Expired - Lifetime
-
1999
- 1999-05-11 DE DE69942201T patent/DE69942201D1/de not_active Expired - Lifetime
- 1999-05-11 AT AT99924174T patent/ATE463008T1/de not_active IP Right Cessation
- 1999-05-11 EP EP99924174A patent/EP1086421B1/en not_active Expired - Lifetime
- 1999-05-11 JP JP2000553887A patent/JP4262888B2/ja not_active Expired - Fee Related
- 1999-05-11 WO PCT/US1999/010273 patent/WO1999064952A1/en active Application Filing
-
2000
- 2000-09-07 US US09/657,510 patent/US6370599B1/en not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0619855A (ja) * | 1992-07-01 | 1994-01-28 | Fujitsu Ltd | メッセージのキューイング方法とその装置 |
US5634070A (en) * | 1995-09-08 | 1997-05-27 | Iq Systems | Distributed processing systems having a host processor and at least two object oriented processors which communicate directly with each other |
JP2950366B2 (ja) * | 1995-10-30 | 1999-09-20 | 日本電気株式会社 | マルチメディア通信プラットフォームおよびマルチメディア通信装置 |
JPH09234853A (ja) * | 1995-12-06 | 1997-09-09 | Xerox Corp | 電子的画像処理装置の動作方法 |
JPH10124468A (ja) * | 1996-10-01 | 1998-05-15 | Internatl Business Mach Corp <Ibm> | 資源管理方法及びコンピュータ |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7437547B2 (en) | 1998-06-12 | 2008-10-14 | Microsoft Corporation | Method and computer program product for offloading processing tasks from software to hardware |
JP2008259238A (ja) * | 2001-04-24 | 2008-10-23 | Nvidia Corp | ギガビット・イーサネット・アダプタ |
JP2010134962A (ja) * | 2002-04-15 | 2010-06-17 | Microsoft Corp | ビデオ・レンダラーとグラフィックス・デバイス・ドライバの間の相互作用を促進すること |
JP2004004761A (ja) * | 2002-04-15 | 2004-01-08 | Microsoft Corp | ビデオ・レンダラーとグラフィックス・デバイス・ドライバの間の相互作用を促進すること |
US8176500B2 (en) | 2002-04-15 | 2012-05-08 | Microsoft Corporation | Closing a video stream object |
JP4718763B2 (ja) * | 2002-04-15 | 2011-07-06 | マイクロソフト コーポレーション | ビデオ・レンダラーとグラフィックス・デバイス・ドライバの間の相互作用を促進すること |
US7876379B2 (en) | 2002-04-15 | 2011-01-25 | Microsoft Corporation | Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays |
JP2004030612A (ja) * | 2002-04-30 | 2004-01-29 | Microsoft Corp | オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法 |
JP4638658B2 (ja) * | 2002-04-30 | 2011-02-23 | マイクロソフト コーポレーション | オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法 |
JP2011018373A (ja) * | 2002-04-30 | 2011-01-27 | Microsoft Corp | オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法 |
US7370082B2 (en) | 2003-05-09 | 2008-05-06 | Microsoft Corporation | Remote invalidation of pre-shared RDMA key |
US8428346B2 (en) | 2003-08-01 | 2013-04-23 | Microsoft Corporation | Strategies for processing image information using a color information data structure |
JP2005085284A (ja) * | 2003-09-10 | 2005-03-31 | Microsoft Corp | フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード |
JP4658546B2 (ja) * | 2003-09-10 | 2011-03-23 | マイクロソフト コーポレーション | フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード |
US8068495B2 (en) | 2005-09-27 | 2011-11-29 | Intel Corporation | Mechanisms for data rate improvement in a wireless network |
JP2009512240A (ja) * | 2005-09-27 | 2009-03-19 | インテル・コーポレーション | 無線ネットワークにおけるデータ伝送速度改善メカニズム |
JP2007272628A (ja) * | 2006-03-31 | 2007-10-18 | Nec Corp | 情報検知処理方法及び装置 |
US8654868B2 (en) | 2006-04-18 | 2014-02-18 | Qualcomm Incorporated | Offloaded processing for wireless applications |
US8644396B2 (en) | 2006-04-18 | 2014-02-04 | Qualcomm Incorporated | Waveform encoding for wireless applications |
JP2009534945A (ja) * | 2006-04-18 | 2009-09-24 | クゥアルコム・インコーポレイテッド | 無線アプリケーション用のオフロード処理 |
US8600373B2 (en) | 2006-04-26 | 2013-12-03 | Qualcomm Incorporated | Dynamic distribution of device functionality and resource management |
JP2009048279A (ja) * | 2007-08-15 | 2009-03-05 | Nec Corp | 情報処理システムおよび情報処理方法 |
WO2009022422A1 (ja) * | 2007-08-16 | 2009-02-19 | Panasonic Corporation | 暗号通信装置 |
JP2014209754A (ja) * | 2008-06-19 | 2014-11-06 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | Wwan技術のためのハードウェアアクセラレーション |
JP2012510126A (ja) * | 2008-11-26 | 2012-04-26 | マイクロソフト コーポレーション | リモートデスクトッププロトコルのためのハードウェアアクセラレーション |
US8850027B2 (en) | 2008-11-26 | 2014-09-30 | Microsoft Corporation | Hardware acceleration for remote desktop protocol |
JP2012053906A (ja) * | 2011-11-07 | 2012-03-15 | Nec Corp | 情報処理システムおよび情報処理方法 |
JP7089840B2 (ja) | 2014-09-19 | 2022-06-23 | 株式会社aLab | デバイスプロキシ装置及びそれを含む計算機システム |
Also Published As
Publication number | Publication date |
---|---|
EP1086421B1 (en) | 2010-03-31 |
US6370599B1 (en) | 2002-04-09 |
ATE463008T1 (de) | 2010-04-15 |
JP4262888B2 (ja) | 2009-05-13 |
DE69942201D1 (de) | 2010-05-12 |
US6141705A (en) | 2000-10-31 |
WO1999064952A1 (en) | 1999-12-16 |
EP1086421A1 (en) | 2001-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4262888B2 (ja) | 処理タスクをソフトウエアからハードウエアにオフロードする方法およびコンピュータ・プログラム製品 | |
US7437547B2 (en) | Method and computer program product for offloading processing tasks from software to hardware | |
US9307054B2 (en) | Intelligent network interface system and method for accelerated protocol processing | |
US6629125B2 (en) | Storing a frame header | |
US7461160B2 (en) | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory | |
US10055264B2 (en) | Reception according to a data transfer protocol of data directed to any of a plurality of destination entities | |
US9858214B2 (en) | Task offload to a peripheral device | |
US9009326B2 (en) | System and method for managing connections between a client and a server | |
US6401099B1 (en) | Asynchronous binding of named objects | |
US6247068B1 (en) | Winsock-data link library transcoder | |
JPH09231157A (ja) | コンピュータに接続されている入力/出力(i/o)デバイスを制御する方法 | |
CN113067849B (zh) | 基于Glusterfs的网络通信优化方法及装置 | |
US6757904B1 (en) | Flexible interface for communicating between operating systems | |
US6826634B2 (en) | Extended message block for network device drivers | |
US8000735B1 (en) | Wireless modem architecture for reducing memory components | |
WO2023082609A1 (zh) | 一种数据处理方法以及相关设备 | |
US7275151B2 (en) | Nodelay per port | |
Sanches et al. | High performance communication system based on generic programming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060427 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060711 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080819 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081118 |
|
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: 20090115 |
|
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: 20090210 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120220 Year of fee payment: 3 |
|
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: 20120220 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130220 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140220 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |