(57)【要約】【課題】より迅速にデータを送信できるようにする。【解決手段】CPU８１はパケットのヘッダを生成してヘッダ用メモリ８２に記録させる。また、CPU８１は、送信するデータおよびヘッダが記録されている位置を示すディスクリプタを生成する。MAC８４は、ディスクリプタにより指定されたヘッダをヘッダ用メモリ８２から取得するとともに、ペイロードとしてのデータをデータ用メモリ８５から取得し、取得したヘッダとペイロードとからパケットを生成する。このとき、データ用メモリ８５とヘッダ用メモリ８２とはブリッジ８３により切り離されているので、CPU８１は、MAC８４によるペイロードの取得と並行して、次のパケットのヘッダを生成してヘッダ用メモリ８２に記録させる。本発明は、情報処理装置に適用することができる。【選択図】図５
2009116386.tif 000002
【特許請求の範囲】
【請求項１】
送信するデータが格納されるパケットのヘッダを生成するとともに、前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報を生成するヘッダ生成手段と、
第１のバスにより前記ヘッダ生成手段と接続され、前記ヘッダを記録するヘッダ記録手段と、
前記データを記録するデータ記録手段と、
前記第１のバスを介さずに、第２のバスを介して前記データ記録手段と接続され、前記パケットを生成するパケット生成手段と
を備え、
前記パケット生成手段は、前記位置情報に基づいて、前記ヘッダ記録手段から前記ヘッダを取得するとともに、前記データ記録手段からペイロードとされる前記データを取得し、取得した前記ヘッダおよび前記データから前記パケットを生成する
情報処理装置。
【請求項２】
前記第１のバスと前記第２のバスとは、ブリッジにより接続されている
請求項１に記載の情報処理装置。
【請求項３】
前記パケット生成手段は、さらに前記パケットのチェックサムを演算し、演算により得られたチェックサムを前記パケットの前記ヘッダに格納する
請求項１に記載の情報処理装置。
【請求項４】
前記ヘッダ生成手段は、前記パケット生成手段が前記データを取得すると同時に、次のパケットのヘッダを生成する
請求項１に記載の情報処理装置。
【請求項５】
前記ヘッダ生成手段は、プロトコルスタックにより実現され、
前記パケット生成手段は、MAC（Media Access Control）により実現される
請求項１に記載の情報処理装置。
【請求項６】
前記ヘッダ生成手段、前記ヘッダ記録手段、および前記パケット生成手段は、前記情報処理装置に着脱可能なオフロードチップ上に配置され、
前記データ記録手段は、第３のバス、および前記第３のバスと接続された前記オフロードチップ上の前記第２のバスを介して前記パケット生成手段に接続されている
請求項１に記載の情報処理装置。
【請求項７】
第１のバスにより接続されているヘッダ生成手段およびヘッダ記録手段と、前記第１のバスを介さずに、第２のバスを介して接続されているパケット生成手段およびデータ記録手段とを備える情報処理装置の情報処理方法であって、
送信するデータが格納されるパケットのヘッダを前記ヘッダ生成手段が生成し、
前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報を前記ヘッダ生成手段が生成し、
前記パケット生成手段が、前記位置情報に基づいて、前記第１のバスおよび前記第２のバスを介して前記ヘッダ記録手段から前記ヘッダを取得し、
前記パケット生成手段が、前記位置情報に基づいて、前記第２のバスを介して前記データ記録手段からペイロードとされる前記データを取得し、
前記パケット生成手段が、取得した前記ヘッダおよび前記データから前記パケットを生成する
ステップを含む情報処理方法。
【請求項８】
第１のバスにより接続されているヘッダ生成手段およびヘッダ記録手段と、前記第１のバスを介さずに、第２のバスを介して接続されているパケット生成手段およびデータ記録手段とを備える情報処理装置の情報処理用のプログラムであって、
送信するデータが格納されるパケットのヘッダを前記ヘッダ生成手段が生成し、
前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報を前記ヘッダ生成手段が生成し、
前記パケット生成手段が、前記位置情報に基づいて、前記第１のバスおよび前記第２のバスを介して前記ヘッダ記録手段から前記ヘッダを取得し、
前記パケット生成手段が、前記位置情報に基づいて、前記第２のバスを介して前記データ記録手段からペイロードとされる前記データを取得し、
前記パケット生成手段が、取得した前記ヘッダおよび前記データから前記パケットを生成する
ステップを含む処理を前記情報処理装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置および方法、並びにプログラムに関し、特に、より迅速にデータを送信できるようにした情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来のTCP（Transmission Control Protocol）／IP（Internet Protocol）通信システムにおいては、情報処理装置に設けられたCPU（Central Processing Unit）によって、送信されるデータがコピーされながら、データを送信するためのTCP／IP処理が行われる。
【０００３】
すなわち、通常、Linux（登録商標）などのＯＳ（Operating System）では、アプリケーションソフトウェアで処理されるデータが、ネットワークを介して他の装置に送信される場合、送信されるデータがユーザ空間からカーネル空間にコピーされて、TCP／IP処理を行うネットワークスタックに引き渡される。
【０００４】
また、ネットワークスタックでは、受け取られたデータはネットワーク伝送単位、つまりパケット単位の長さに分割され、分割されたデータのそれぞれにヘッダが付加されてパケットとされるため、その過程においてさらにデータのコピーが発生する。
【０００５】
ここで、データをTCP／IP処理する情報処理装置は、図１に示すように、CPU１１、メモリ１２、およびMAC（Media Access Control）１３を備えており、これらのCPU１１乃至MAC１３は、システムバス１４により相互に接続されている。
【０００６】
メモリ１２には、送信されるデータが記録されており、まず、このデータがユーザ空間からカーネル空間にコピーされる。そして、ネットワークスタック、つまりCPU１１はカーネル空間上で、メモリ１２に記録されているデータを適宜読み出したり、メモリ１２に書き込んだりして、ペイロードとしてのデータにヘッダを付加し、パケットを生成する。
【０００７】
次に、CPU１１はMAC１３に対して、メモリ１２内における、送信すべきパケットが記録されている位置を指定するとともに、そのパケットの送信を指示する。すると、MAC１３は、CPU１１からの指示に応じて、システムバス１４を介してメモリ１２からパケットを取得し、取得したパケットを出力する。そして、MAC１３から出力されたパケットは、情報処理装置により、ネットワークを介して送信先の装置に送信される。
【０００８】
例えば、パケットが生成される場合、図２に示すように、メモリ１２内のデータ４１が、ネットワーク伝送単位の長さに分割されてペイロード４２−１乃至ペイロード４２−３とされ、それらのペイロード４２−１乃至ペイロード４２−３のそれぞれにヘッダ４３−１乃至ヘッダ４３−３のそれぞれが付加されてパケットとされる。
【０００９】
このとき、CPU１１は、データ４１にヘッダ４３−１を付加するために、一旦データ４１をメモリ１２から読み出し、ヘッダ４３−１を生成してメモリ１２に記録させてから、読み出したデータ４１をヘッダ４３−１に付加する。その後、CPU１１は、データ４１のうちのペイロード４２−２およびペイロード４２−３を読み出して、ペイロード４２−１の後にヘッダ４３−２を付加し、そのヘッダ４３−２の後に読み出したペイロード４２−２およびペイロード４２−３を付加する。さらに、CPU１１は、ペイロード４２−３を読み出して、ペイロード４２−２の後にヘッダ４３−３を付加し、そのヘッダ４３−３の後に読み出したペイロード４２−３を付加する。
【００１０】
なお、以下、ペイロード４２−１乃至ペイロード４２−３のそれぞれを個々に区別する必要のない場合、単にペイロード４２と称する。また、以下、ヘッダ４３−１乃至ヘッダ４３−３のそれぞれを個々に区別する必要のない場合、単にヘッダ４３と称する。
【００１１】
このようにして、CPU１１は、ペイロード４２を読み出してずらしながら、データ４１にヘッダ４３を挿入し、ヘッダ４３とそのヘッダ４３に続くペイロード４２とからなるパケットを生成する。したがって、データ４１にヘッダ４３を挿入してパケットを生成する過程において、CPU１１によりデータ４１のコピーが行われることになる。
【００１２】
また、情報処理装置においてパケットが生成される場合、図３に示すように、パケットの生成から送信までの処理が順番に繰り返し行われる。なお、図３では、メモリ１２、CPU１１、MAC１３およびシステムバス１４、並びに情報処理装置が接続されているネットワークのそれぞれにおいて処理、記録、読み出し、または転送されるデータを示しており、横方向は時間を示している。
【００１３】
なお、図３においては、既にユーザ空間からカーネル空間へのメモリコピーが終了した後の処理として、パケット生成からネットワーク送出までの処理の流れを示しているが、実際には、ユーザ空間からカーネル空間へのコピーの間もシステムバス１４は占有される。
【００１４】
情報処理装置では、矢印Ａ１１に示すように、CPU１１によりヘッダの生成、ペイロードの生成、およびMAC１３への送信の指示（以下、MAC設定とも称する）が順番に行われる。そして、矢印Ａ１２に示すように、ヘッダの生成時には、メモリ１２へのヘッダの記録が行われ、ペイロードの生成時には、送信されるデータ、つまりペイロードのメモリ１２への記録が行われる。また、ペイロードの生成時には、CPU１１によりデータの読み書きが行われるため、矢印Ａ１３に示すように、システムバス１４上ではペイロードが転送されることになる。
【００１５】
MAC設定が行われると、矢印Ａ１４に示すように、ヘッダとペイロード、つまり送信されるパケットがメモリ１２から読み出され、矢印Ａ１５に示すように、読み出されたパケットがシステムバス１４を介してMAC１３に転送される。さらに、パケットの転送が完了すると、そのパケットは、矢印Ａ１６に示すようにネットワークを介して、送信先の装置に送信される。このとき、システムバス１４はデータにより占有されていないので、パケットの送信と同時に、CPU１１により次のヘッダの生成が開始され、上述した処理が順次、行われる。
【００１６】
なお、より詳細には、MAC１３を制御するドライバによっては、MAC設定（ディスクリプタ）が予めまとめて生成される場合もあるので、必ずしも図３に示す順番で処理が行われるわけではない。
【００１７】
また、CPU１１では、データへのヘッダの挿入時にコピーを生じさせないように、ペイロードとヘッダとをメモリ１２上の異なる領域に記録させることがある。そのような場合、図４に示すように、CPU１１は、ユーザ空間からカーネル空間にコピーされたデータ４１から、ペイロード４２−１乃至ペイロード４２−３を生成してメモリ１２の所定の領域に記録させ、さらにその領域とは異なる領域に、生成したヘッダ４３−１乃至ヘッダ４３−３を記録させる。このように、ペイロード４２とヘッダ４３とを異なる領域に記録させることで、データ４１にヘッダ４３を挿入するために、ペイロード４２をずらす処理が必要なくなる。
【００１８】
さらに、従来の情報処理装置には、スイッチにより、ネットワークスタック動作からネットワークスタックをオフロードし、周辺デバイスにネットワークスタック動作を実行させるものもある（例えば、特許文献１参照）。
【００１９】
【特許文献１】特開２００３−３３３０７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
ところで、上述したTCP／IP処理において、CPUに対する負荷のうち、データのコピー処理の占める割合が高いことは一般的である。また、特に、図１に示したようにシステムバス１４により各ブロックが接続されている場合、つまりブリッジによりバスが切られていない場合には、ヘッダ挿入時のデータのコピーによる２次的な被害として、データのコピーが行われている間は、CPUは次の処理を行うことができなくなってしまう。すなわち、データのコピーが行われている間は、データの転送によりバスが占有され、さらにCPUはコピー処理を行わなければならいので、他の処理を行うことができず、さらに処理が遅くなってしまう。
【００２１】
このように、ユーザ空間からカーネル空間へのデータのコピーや、ヘッダ挿入時のデータのコピーの処理はCPUに対する負荷が大きく、また、ヘッダ挿入時のデータのコピー中には、CPUは次の処理を行うことができない場合があった。したがって、CPUの性能によっては、ネットワークを介して接続されている他の装置にデータを迅速に送信することができず、他の装置と迅速に通信することができなくなる恐れがあった。
【００２２】
例えば、パーソナルコンピュータで用いられている、いわゆる８６系などの高性能なCPUによってTCP／IP処理が行われる場合、CPUのクロック周波数がGHz単位であったり、パーソナルコンピュータにバスブリッジが設けられていたりするため、ネットワーク負荷はあまり問題とはならない。
【００２３】
しかしながら、近年、電池駆動などの小型機器で用いられているような性能が高いとはいえないCPUでのネットワークの利用においては、ネットワーク負荷はかなり重く、迅速にデータの送受信を行うことができない。
【００２４】
そのため、このような小型機器においてネットワークを利用しようとする場合、小型機器にネットワークの利用に充分な性能のCPUを設けたり、または小型機器のホスト、つまり小型機器に設けられたCPUに、TCP／IP処理用のネットワークオフロードチップを外付けしたりする必要がある。
【００２５】
ところが、小型機器に充分な性能のCPUを設けても、小型機器はそもそもネットワークに特化した構成ではないため、ネットワーク利用時に小型機器において所望するスループットが得られないか、または得られたとしても他のアプリケーションソフトウェアのためのCPUのリソースが不足してしまう恐れがある。
【００２６】
一方で、小型機器のホストからネットワーク負荷をオフロードできる専用のネットワークオフロードチップを外付けした場合には、その性能は確実に保証される。しかしながら、そのためにネットワークオフロードチップ側に、ホスト側のCPUと同等以上の性能のCPUが必要となっては本末転倒である。
【００２７】
本発明は、このような状況に鑑みてなされたものであり、性能の低いCPUを有する装置であっても、より迅速に他の装置と通信することができるようにするものである。
【課題を解決するための手段】
【００２８】
本発明の一側面の情報処理装置は、送信するデータが格納されるパケットのヘッダを生成するとともに、前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報を生成するヘッダ生成手段と、第１のバスにより前記ヘッダ生成手段と接続され、前記ヘッダを記録するヘッダ記録手段と、前記データを記録するデータ記録手段と、前記第１のバスを介さずに、第２のバスを介して前記データ記録手段と接続され、前記パケットを生成するパケット生成手段とを備え、前記パケット生成手段は、前記位置情報に基づいて、前記ヘッダ記録手段から前記ヘッダを取得するとともに、前記データ記録手段からペイロードとされる前記データを取得し、取得した前記ヘッダおよび前記データから前記パケットを生成する。
【００２９】
前記第１のバスと前記第２のバスとを、ブリッジにより接続することができる。
【００３０】
前記パケット生成手段には、さらに前記パケットのチェックサムを演算させ、演算により得られたチェックサムを前記パケットの前記ヘッダに格納させることができる。
【００３１】
前記ヘッダ生成手段には、前記パケット生成手段が前記データを取得すると同時に、次のパケットのヘッダを生成させることができる。
【００３２】
前記ヘッダ生成手段を、プロトコルスタックにより実現し、前記パケット生成手段を、MAC（Media Access Control）により実現することができる。
【００３３】
前記ヘッダ生成手段、前記ヘッダ記録手段、および前記パケット生成手段を、前記情報処理装置に着脱可能なオフロードチップ上に配置し、前記データ記録手段を、第３のバス、および前記第３のバスと接続された前記オフロードチップ上の前記第２のバスを介して前記パケット生成手段に接続することができる。
【００３４】
本発明の一側面の情報処理方法またはプログラムは、第１のバスにより接続されているヘッダ生成手段およびヘッダ記録手段と、前記第１のバスを介さずに、第２のバスを介して接続されているパケット生成手段およびデータ記録手段とを備える情報処理装置の情報処理方法またはプログラムであって、送信するデータが格納されるパケットのヘッダを前記ヘッダ生成手段が生成し、前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報を前記ヘッダ生成手段が生成し、前記パケット生成手段が、前記位置情報に基づいて、前記第１のバスおよび前記第２のバスを介して前記ヘッダ記録手段から前記ヘッダを取得し、前記パケット生成手段が、前記位置情報に基づいて、前記第２のバスを介して前記データ記録手段からペイロードとされる前記データを取得し、前記パケット生成手段が、取得した前記ヘッダおよび前記データから前記パケットを生成するステップを含む。
【００３５】
本発明の一側面においては、第１のバスにより接続されているヘッダ生成手段およびヘッダ記録手段と、前記第１のバスを介さずに、第２のバスを介して接続されているパケット生成手段およびデータ記録手段とを備える情報処理装置において、送信するデータが格納されるパケットのヘッダが前記ヘッダ生成手段により生成され、前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報が前記ヘッダ生成手段により生成され、前記パケット生成手段により、前記位置情報に基づいて、前記第１のバスおよび前記第２のバスを介して前記ヘッダ記録手段から前記ヘッダが取得され、前記パケット生成手段により、前記位置情報に基づいて、前記第２のバスを介して前記データ記録手段からペイロードとされる前記データが取得され、前記パケット生成手段により、取得した前記ヘッダおよび前記データから前記パケットが生成される。
【発明の効果】
【００３６】
本発明の一側面によれば、より迅速に他の装置と通信することができる。
【発明を実施するための最良の形態】
【００３７】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３８】
本発明の一側面の情報処理装置は、送信するデータが格納されるパケットのヘッダを生成するとともに、前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報を生成するヘッダ生成手段（例えば、図５のCPU８１）と、第１のバス（例えば、図５のローカルバス９１）により前記ヘッダ生成手段と接続され、前記ヘッダを記録するヘッダ記録手段（例えば、図５のヘッダ用メモリ８２）と、前記データを記録するデータ記録手段（例えば、図５のデータ用メモリ８５）と、前記第１のバスを介さずに、第２のバス（例えば、図５のシステムバス９２）を介して前記データ記録手段と接続され、前記パケットを生成するパケット生成手段（例えば、図５のMAC８４）とを備え、前記パケット生成手段は、前記位置情報に基づいて、前記ヘッダ記録手段から前記ヘッダを取得するとともに、前記データ記録手段からペイロードとされる前記データを取得し、取得した前記ヘッダおよび前記データから前記パケットを生成する。
【００３９】
前記第１のバスと前記第２のバスとは、ブリッジ（例えば、図５のブリッジ８３）により接続されているようにすることができる。
【００４０】
前記パケット生成手段には、さらに前記パケットのチェックサムを演算させ、演算により得られたチェックサムを前記パケットの前記ヘッダに格納させる（例えば、図６のステップＳ１６の処理）ことができる。
【００４１】
前記ヘッダ生成手段、前記ヘッダ記録手段、および前記パケット生成手段は、前記情報処理装置に着脱可能なオフロードチップ（例えば、図８のオフロードチップ１３３）上に配置され、前記データ記録手段には、第３のバス（例えば、図８のホストバス１３２）、および前記第３のバスと接続された前記オフロードチップ上の前記第２のバスを介して前記パケット生成手段に接続されているようにすることができる。
【００４２】
本発明の一側面の情報処理方法またはプログラムは、第１のバスにより接続されているヘッダ生成手段およびヘッダ記録手段と、前記第１のバスを介さずに、第２のバスを介して接続されているパケット生成手段およびデータ記録手段とを備える情報処理装置の情報処理方法またはプログラムであって、送信するデータが格納されるパケットのヘッダを前記ヘッダ生成手段が生成し（例えば、図６のステップＳ１１）、前記ヘッダが記録されている位置、および前記パケットのペイロードとされる前記データが記録されている位置を示す位置情報を前記ヘッダ生成手段が生成し（例えば、図６のステップＳ１２）、前記パケット生成手段が、前記位置情報に基づいて、前記第１のバスおよび前記第２のバスを介して前記ヘッダ記録手段から前記ヘッダを取得し（例えば、図６のステップＳ１３）、前記パケット生成手段が、前記位置情報に基づいて、前記第２のバスを介して前記データ記録手段からペイロードとされる前記データを取得し（例えば、図６のステップＳ１４）、前記パケット生成手段が、取得した前記ヘッダおよび前記データから前記パケットを生成する（例えば、図６のステップＳ１５）ステップを含む。
【００４３】
以下、図面を参照して、本発明を適用した実施の形態について説明する。
【００４４】
図５は、本発明を適用した情報処理装置の一実施の形態の構成例を示す図である。
【００４５】
情報処理装置７１は、CPU８１、ヘッダ用メモリ８２、ブリッジ８３、MAC８４、およびデータ用メモリ８５から構成される。CPU８１、ヘッダ用メモリ８２、およびブリッジ８３は、ローカルバス９１により相互に接続されている。
【００４６】
また、ローカルバス９１には、ブリッジ８３を介してシステムバス９２が接続されており、ブリッジ８３、MAC８４、およびデータ用メモリ８５はシステムバス９２を介して相互に接続されている。
【００４７】
CPU８１は、MAC８４を制御するためのMACドライバやＯＳなどの各種のプログラムを実行して、情報処理装置７１の全体を制御する。例えば、CPU８１は、TCP／IP処理などのプロトコル処理用のプログラムであるネットワークスタック（プロトコルスタック）を実行して、送信しようとしているデータに付加するヘッダを生成し、ヘッダ用メモリ８２に記録させる。また、CPU８１は、ネットワークスタックを実行して、ネットワークを介して接続されている他の装置にデータを送信させるためのディスクリプタを生成し、ディスクリプタをMAC８４に供給することで、送信するデータを間接的に管理する。
【００４８】
ここで、ディスクリプタとは、これから送信しようとするデータが記録されている位置、およびそのデータに付加されるヘッダが記録されている位置を示す情報であり、ディスクリプタは、CPU８１からローカルバス９１、ブリッジ８３、およびシステムバス９２を介してMAC８４に転送される。
【００４９】
ヘッダ用メモリ８２は、CPU８１から供給されたヘッダを記録する。またヘッダ用メモリ８２は、MAC８４の指示に応じて記録しているヘッダを、ローカルバス９１、ブリッジ８３、およびシステムバス９２を介してMAC８４にDMA（Direct Memory Access）転送する。ブリッジ８３は、ローカルバス９１とシステムバス９２とを接続し、ローカルバス９１を介して供給されたデータを、システムバス９２を介して接続されているブロックに転送するとともに、システムバス９２を介して供給されたデータを、ローカルバス９１を介して接続されているブロックに転送する。
【００５０】
MAC８４は、MAC方式でのアクセス制御、つまり伝送媒体を介した通信のアクセス制御を行うデバイスであり、CPU８１の制御に応じた処理を行う。MAC８４は、CPU８１からディスクリプタが供給されると、バスマスタとして、CPU８１からのディスクリプタに従い、ヘッダ用メモリ８２にヘッダの転送を指示するとともに、データ用メモリ８５に送信するデータ、つまりペイロードの転送を指示する。また、MAC８４は、転送されてきたペイロードにヘッダを付加してパケットを生成し、内部に設けられた図示せぬ送信バッファに生成したパケットを一時的に記録させる。
【００５１】
さらに、MAC８４はチェックサム演算部９３を備えており、チェックサム演算部９３は、送信バッファに格納されているパケットのチェックサムを演算し、その結果得られたチェックサムをパケットのヘッダに挿入する。そして、MAC８４はチェックサムの挿入されたパケットをシステムバス９２に出力し、情報処理装置７１は出力されたパケットを、例えば、インターネットなどのネットワークを介して接続されている他の装置に送信する。
【００５２】
データ用メモリ８５は、ペイロードとして他の装置に送信されるデータを記録しており、MAC８４からの指示に応じて、データをMAC８４にDMA転送する。
【００５３】
ところで、情報処理装置７１は、ユーザにより、ネットワークを介して接続されている他の装置への所定のデータの送信が指示されると、指示されたデータをパケットに格納して送信する処理であるデータ送信処理を開始する。
【００５４】
以下、図６のフローチャートを参照して、情報処理装置７１によるデータ送信処理について説明する。
【００５５】
ステップＳ１１において、CPU８１はデータを格納するパケットのヘッダを生成する。そして、CPU８１は生成したヘッダを、ローカルバス９１を介してヘッダ用メモリ８２に供給して、ヘッダ用メモリ８２にヘッダを記録させる。
【００５６】
ステップＳ１２において、CPU８１はディスクリプタを生成し、生成したディスクリプタをローカルバス９１、ブリッジ８３、およびシステムバス９２を介してMAC８４に供給する。例えば、CPU８１は、１つのパケットに格納するペイロードとしてのデータが記録されているデータ用メモリ８５内の位置、およびそのデータに付加するヘッダが記録されているヘッダ用メモリ８２内の位置を示すディスクリプタを生成する。
【００５７】
ここで、CPU８１によるステップＳ１１およびステップＳ１２の処理は、CPU８１がネットワークスタックを実行することにより、カーネル空間上で行われる。但し、ペイロードとなるデータは、ネットワークスタックにより直接取り扱われないので、ユーザ空間からカーネル空間へのデータのコピーは発生しない。
【００５８】
CPU８１からMAC８４にディスクリプタが供給されると、ステップＳ１３においてMAC８４は、供給されたディスクリプタに基づいてヘッダを取得する。すなわち、MAC８４は、ヘッダ用メモリ８２に対して、ディスクリプタにより指定されたヘッダの転送を指示し、その指示に応じてヘッダ用メモリ８２から転送されてきたヘッダを取得する。
【００５９】
ステップＳ１４において、MAC８４は、供給されたディスクリプタに基づいてペイロードを取得する。すなわち、MAC８４は、データ用メモリ８５に対して、ディスクリプタにより指定されたペイロード（データ）の転送を指示し、その指示に応じてデータ用メモリ８５から転送されてきたペイロードを取得する。
【００６０】
ステップＳ１５において、MAC８４は、データ用メモリ８５から取得したペイロードに、ヘッダ用メモリ８２から取得したヘッダを付加することで１つのパケットを生成し、生成したパケットを内蔵している送信バッファに格納する。ここで、MAC８４により生成されるパケットは、例えば、TCP／IPパケットとされる。
【００６１】
ステップＳ１６において、チェックサム演算部９３は、送信バッファに格納されているパケットのチェックサムの演算を行う。例えば、送信バッファにTCP／IPパケットが格納されている場合、チェックサム演算部９３は、TCPヘッダおよびペイロードのチェックサムを演算して、これにより得られたチェックサムをTCPヘッダに格納するとともに、IPヘッダのチェックサムを演算して、これにより得られたチェックサムをIPヘッダに格納する。
【００６２】
ステップＳ１７において、情報処理装置７１は、送信バッファに格納されているパケットを、ネットワークを介して他の装置に送信する。すなわち、MAC８４は、送信バッファに格納されているパケットをシステムバス９２に出力し、情報処理装置７１は、MAC８４からシステムバス９２に出力されたパケットを、他の装置に送信する。
【００６３】
ステップＳ１８において、CPU８１は全てのデータを送信したか否かを判定する。例えば、送信すべきデータが全てパケットに格納されて送信された場合、ステップＳ１８においてデータを送信したと判定される。
【００６４】
ステップＳ１８において、まだ全てのデータを送信していないと判定された場合、処理はステップＳ１１に戻り、上述した処理が繰り返される。すなわち、次のデータがパケットに格納されて送信される。
【００６５】
これに対して、ステップＳ１８において、全てのデータを送信したと判定された場合、データ送信処理は終了する。
【００６６】
なお、より詳細には、MAC８４がパケットを生成するために、データ用メモリ８５からのペイロードの転送を受けているときに、CPU８１は次のパケットのヘッダの生成を行う。すなわち、例えば、図７に示すように、MAC８４によるデータの取得と、CPU８１による次のパケットのヘッダの生成が同時に行われる。
【００６７】
なお、図７では、MAC８４およびシステムバス９２、データ用メモリ８５、ヘッダ用メモリ８２、CPU８１、並びに情報処理装置７１が接続されているネットワークのそれぞれにおいて処理、記録、読み出し、または転送されるデータを示しており、横方向は時間を示している。
【００６８】
情報処理装置７１では、まず矢印Ａ４１に示すように、CPU８１によりヘッダの生成と、ディスクリプタの生成（MAC設定）とが行われる。そして、ヘッダ生成時には、矢印Ａ４２に示すように、ヘッダ用メモリ８２により生成されたヘッダの記録が行われる。
【００６９】
ディスクリプタが生成されると、次に矢印Ａ４３に示すように、MAC８４によりヘッダとデータ（ペイロード）の取得が行われ、矢印Ａ４４に示すようにデータ用メモリ８５によりシステムバス９２を介してペイロードの転送が行われる。また、ペイロードの取得と同時に、矢印Ａ４５に示すようにCPU８１により、次のパケットのヘッダの生成およびディスクリプタの生成が行われ、システムバス９２を介したペイロードの転送が終了すると、ディスクリプタがMAC８４に供給される。さらに、ヘッダの生成時には、矢印Ａ４６に示すように、ヘッダ用メモリ８２によりヘッダの記録が行われる。
【００７０】
ここで、情報処理装置７１では、ヘッダはヘッダ用メモリ８２に記録され、データ（ペイロード）はデータ用メモリ８５に記録される。つまり、ヘッダとペイロードとは異なるメモリに記録されている。また、ローカルバス９１とシステムバス９２とがブリッジ８３により接続されており、ローカルバス９１に接続されているヘッダ用メモリ８２は、ブリッジ８３により、データ用メモリ８５の接続されているシステムバス９２から切り離されている。
【００７１】
したがって、ペイロードがMAC８４に転送されているときに、ペイロードの転送のためにローカルバス９１へのアクセスは発生しない。つまり、MAC８４はローカルバス９１にアクセスすることなくデータ用メモリ８５からペイロードを取得することができる。またCPU８１はディスクリプタによりペイロードを間接的に管理するだけであるので、CPU８１は、MAC８４へのペイロードの転送時に、ローカルバス９１を介してヘッダ用メモリ８２にアクセスし、ヘッダの生成を行うことができる。
【００７２】
このように、ディスクリプタによりパケットの送信を指示し、MAC８４にチェックサムの演算を実行させることで、CPU８１はペイロードを間接的に管理することができる。すなわち、ネットワークスタックからペイロードを切り離すことができ、ユーザ空間からカーネル空間へのデータのコピーや、データへのヘッダ挿入のためのデータのコピーが不要となる。また、データにヘッダを挿入するためにCPU８１がデータを分割する必要もない。
【００７３】
その結果、ゼロコピー処理で、つまりデータのコピーを発生させることなくデータを送信することができ、CPU８１への負荷を軽減させることができる。また、ゼロコピー処理により、従来必要であったコピーの処理時間を節約することができ、より迅速にデータを送信することができる。
【００７４】
そして、CPU８１がペイロードを直接管理せず、ブリッジ８３によりヘッダ用メモリ８２とデータ用メモリ８５とを切り離すことにより、情報処理装置７１においては、MAC８４によるペイロードの取得と、CPU８１によるヘッダの生成とを同時に行うことができる。その結果、簡単かつ効率よくTCP／IP処理を行うことができ、より迅速にデータを送信することができる。
【００７５】
このようにして、ヘッダおよびペイロードがMAC８４に取得されてパケットが生成されると、矢印Ａ４７に示すように、生成されたパケットがネットワークを介して接続されている他の装置に送信される。そして、その後、CPU８１によるヘッダの生成の処理と、MAC８４によるヘッダおよびペイロードの取得の処理とが並行して行われ、上述した処理が順次、繰り返し行われる。
【００７６】
以上のようにして、CPU８１は、ディスクリプタを生成することにより、間接的にペイロードを管理し、MAC８４はそのディスクリプタに従って、ヘッダおよびペイロードを取得する。そして、CPU８１は、MAC８４によるペイロードの取得の処理と同時に、次のパケットのヘッダを生成する。
【００７７】
このように、CPU８１がペイロードを直接管理せず、MAC８４がディスクリプタに従ってヘッダおよびペイロードを取得するようにしたので、ペイロードのコピーを必要とせずにTCP／IP処理を行うことができる。
【００７８】
また、ヘッダ用メモリ８２の接続されているローカルバス９１と、データ用メモリ８５の接続されているシステムバス９２とをブリッジ８３により切り離したので、ペイロードのMAC８４への転送と、ヘッダの生成とを同時に行うことができる。これにより、性能の低いCPU、例えばクロック周波数の低いCPUを有する装置であっても、より迅速にデータ（パケット）を他の装置に送信することができる。
【００７９】
換言すれば、ネットワークスタックがペイロードを間接的に管理し、MAC８４がネットワークスタックの制御に従ってデータ用メモリ８５からペイロードを取得するようにするとともに、ヘッダの生成とペイロードの取得とが同時に行われるようにしたので、CPUの性能によらず、より迅速に他の装置と通信することができる。
【００８０】
また、情報処理装置７１によれば、簡単な構成で迅速にTCP／IP処理を行うことができるので、性能の高いCPU、例えばクロック周波数の高いCPUを設けたり、バススピードを速くしたりする必要もなく、消費電力を抑えるとともに、情報処理装置７１のコストを低減させることができる。
【００８１】
なお、TCP／IP処理におけるネットワークプロトコルや、TCP／IP処理のためのMACドライバは、図５の情報処理装置７１のハードウェアの構成に対応するように実装される必要がある。また、以上においては、ネットワークプロトコルとして、TCPを例に説明したがUDP（User Datagram Protocol）が用いられるようにしてもよい。
【００８２】
さらに、以上においては、システムバス９２を介してMAC８４とデータ用メモリ８５とが接続されると説明したが、MAC８４とデータ用メモリ８５とが他のブロックを介して接続されているようにしてもよい。そのような場合、情報処理装置７１は、例えば図８に示すように構成される。なお、図８において、図５における場合と対応する部分には、同一の符号を付してあり、その説明は適宜省略する。
【００８３】
図８の情報処理装置７１では、情報処理装置７１に内蔵されているホスト１３１にバスを介してデータ用メモリ８５が接続されている。このホスト１３１は、例えばCPUなどからなり、情報処理装置７１の全体を制御する。
【００８４】
また、ホスト１３１には、例えばPCI（Peripheral Components Interconnect）バスなどからなるホストバス１３２が接続され、さらにホストバス１３２には、情報処理装置７１に着脱可能な外付け用のオフロードチップ１３３が接続されている。
【００８５】
このオフロードチップ１３３は、ネットワーク負荷をオフロードできる専用のチップであり、オフロードチップ１３３には、CPU８１、ヘッダ用メモリ８２、ブリッジ８３、MAC８４、およびホストバスＩ／Ｆ（Interface）１４１が設けられている。
【００８６】
オフロードチップ１３３においては、ローカルバス９１を介してCPU８１、ヘッダ用メモリ８２、およびブリッジ８３が相互に接続されており、システムバス９２を介してブリッジ８３、MAC８４、およびホストバスＩ／Ｆ１４１が相互に接続されている。
【００８７】
例えば、情報処理装置７１がデータを送信する場合、まずCPU８１によりヘッダおよびディスクリプタが生成されて、生成されたディスクリプタがMAC８４に供給される。このディスクリプタには、ペイロードとするデータの記録されているデータ用メモリ８５における位置を示す情報が含まれている。
【００８８】
MAC８４は、CPU８１からディスクリプタが供給されると、そのディスクリプタに基づいて、ヘッダ用メモリ８２からヘッダを取得するとともに、ホストバスＩ／Ｆ１４１およびホスト１３１を介してデータ用メモリ８５からペイロードを取得する。すなわち、MAC８４は、ホストバスＩ／Ｆ１４１を介してホスト１３１にペイロードの転送を要求する。すると、ホスト１３１は、その要求に応じてデータ用メモリ８５からペイロードを取得し、取得したペイロードを、ホストバス１３２、ホストバスＩ／Ｆ１４１、およびシステムバス９２を介してMAC８４に転送する。その後、MAC８４は取得したヘッダおよびペイロードからパケットを生成し、生成したパケットを出力する。
【００８９】
このように、オフロードチップ１３３を情報処理装置７１に外付けする場合においても、MAC８４が、情報処理装置７１に内蔵されているデータ用メモリ８５からペイロードを取得するようにすることで、ペイロードをMAC８４内の送信バッファに直接格納することができ、メモリを節約することができるとともに、より迅速にTCP／IP処理を行うことができる。
【００９０】
例えば、オフロードチップ１３３に、ペイロードを記録するためのメモリが設けられており、MAC８４がそのメモリからペイロードを取得する場合、データの送信が指示されたときに、ホスト１３１は、データ用メモリ８５に記録されているデータ（ペイロード）を取得して、オフロードチップ１３３内のメモリに転送しなければならない。この場合、MAC８４は、オフロードチップ１３３内のメモリからデータを取得することになる。
【００９１】
これに対して、図８の情報処理装置７１では、MAC８４が直接データ用メモリ８５からペイロードを取得するようにしたので、オフロードチップ１３３内にペイロード専用のメモリを設ける必要もなく、またペイロードを一旦、オフロードチップ１３３内のメモリに転送する必要もないので、迅速にデータを送信することができる。
【００９２】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【００９３】
このプログラム記録媒体は、例えば、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disk-Read Only Memory），DVD（Digital Versatile Disk）を含む）、光磁気ディスク、または、半導体メモリなどよりなるパッケージメディアなどにより構成される。
【００９４】
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
【００９５】
また、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【００９６】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００９７】
【図１】従来の情報処理装置の構成例を示す図である。
【図２】従来のパケット生成について説明する図である。
【図３】従来のパケットの送信の処理の流れを説明する図である。
【図４】従来のパケットの生成について説明する図である。
【図５】本発明を適用した情報処理装置の一実施の形態の構成例を示す図である。
【図６】データ送信処理を説明するフローチャートである。
【図７】パケットの送信の処理の流れを説明する図である。
【図８】情報処理装置の他の構成例を示す図である。
【符号の説明】
【００９８】
７１  情報処理装置，  ８１  CPU，  ８２  ヘッダ用メモリ，  ８３  ブリッジ，  ８４  MAC，  ８５  データ用メモリ，  ９１  ローカルバス，  ９２  システムバス，  ９３  チェックサム演算部，  １３１  ホスト，  １３２  ホストバス，  １３３  オフロードチップ
【図１】
2009116386.tif 000003
【図２】
2009116386.tif 000004
【図３】
2009116386.tif 000005
【図４】
2009116386.tif 000006
【図５】
2009116386.tif 000007
【図６】
2009116386.tif 000008
【図７】
2009116386.tif 000009
【図８】
2009116386.tif 000010