(57)【要約】      （修正有）【課題】複数のノードを含む相互接続ネットワーク内でメッセージの再送遅延を動的に管理することができるネットワークインターフェースコントローラを提供する。【解決手段】コントローラ１００は、ターゲットノード２００に対してメッセージを伝送するためのメッセージ特性データを含む命令を受信しその一部を記憶できるとともに、それをメッセージの再送遅延に関連付けることができる伝送バッファメモリ１２０と、メッセージ特性データから分周係数の値を定める減速決定モジュール１３０と、固定周波数信号を生成する基準クロック４０と、分周係数の値と基準クロックの固定周波数信号とから低下した周波数の信号を生成する分周器１４０と、伝送バッファメモリに関連付けられ、低下した周波数の信号から再送遅延の時間を調節でき、再送遅延を超えている場合にメッセージの再送を引き起こすことができる低下した周波数のクロック１５０とを含む。【選択図】図２
2019106697.tif 000002
【特許請求の範囲】
【請求項１】
複数のノード（２００）を含む相互接続ネットワーク（１）内でメッセージ（３００）の再送遅延（２０）を動的に管理するためのネットワークインターフェースコントローラ（１００）であって、該ネットワークインターフェースコントローラ（１００）は、メッセージ（３００）の再送遅延（２０）を超えている場合に前記メッセージ（３００）を再送信でき、前記ネットワークインターフェースコントローラ（１００）は、
−ターゲットノードに対してメッセージを伝送するための命令をソースノード（２１０）から受信することができる通信モジュール（１１０）と、ここで前記メッセージを伝送するための命令（２１１）はメッセージ特性データ（３５０）を含み、
−前記メッセージ特性データ（３５０）の少なくとも一部を記憶でき、それを前記メッセージの再送遅延（２０）に関連付けることができる、少なくとも１つの伝送バッファメモリ（１２０）と、
−前記メッセージ特性データ（３５０）から分周係数の値（３０）を定めることができる減速決定モジュール（１３０）と、
−固定周波数信号（４１）を生成することができる基準クロック（４０）と、
−前記分周係数の値（３０）と前記基準クロック（４０）の前記固定周波数信号（４１）とから低下した周波数の信号（４２）を生成することができる少なくとも１つの分周器（１４０）と、
−前記伝送バッファメモリ（１２０）に関連付けられ、前記低下した周波数の信号（４２）から前記再送遅延（２０）の時間を調節でき、前記再送遅延（２０）を超えている場合に前記メッセージ（３００）の再送を引き起こすことができる、少なくとも１つの低下した周波数のクロック（１５０）と
を含むことを特徴とする、ネットワークインターフェースコントローラ（１００）。
【請求項２】
前記メッセージ（３００）が前記ネットワークインターフェースコントローラ（１００）によって伝送された時に、前記減速決定モジュール（１３０）は前記分周係数の値（３０）を変更するように構成されることを特徴とする、請求項１に記載のネットワークインターフェースコントローラ（１００）。
【請求項３】
前記ネットワークインターフェースコントローラ（１００）は、伝送されるデータを前記ソースノード（２１０）のメモリにおいて直接読み取ることができ、前記減速決定モジュール（１３０）は、前記分周係数の値（３０）を定める時に、前記伝送されるデータを読み取るための時間を考慮に入れるように構成されることを特徴とする、請求項１又は２に記載のネットワークインターフェースコントローラ（１００）。
【請求項４】
前記ネットワークインターフェースコントローラ（１００）は、少なくとも８個の前記伝送バッファメモリ（１２０）を含み、各伝送バッファメモリは、分周器（１４０）及び低下した周波数のクロック（１５０）に関連付けられることを特徴とする、請求項１から３のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項５】
前記減速決定モジュール（１３０）によって前記分周係数の値（３０）を定めるために使用される１つ又は複数の前記メッセージ特性データ（３５０）は、
−前記メッセージの例えばバイトを単位として測定されたサイズ、
−前記命令内の伝送されるデータの存在、
−前記ソースノード及び／若しくは前記ターゲットノードについての読み取り領域に関する開始アドレスの存在、
−伝送されるデータが分割領域に存在するときに、前記ソースノード及び／若しくは前記ターゲットノードの各フラグメントの開始アドレス及び長さを含む記述子テーブルアドレスの存在、
−前記ターゲットノードのための仮想アドレス指定の存在、並びに／又は
−前記メッセージの対象、すなわち前記メッセージが要求であるか応答であるか、
を含むことを特徴とする、請求項１から４のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項６】
前記分周係数の値（３０）を定めるために使用される１つ又は複数の前記メッセージ特性データ（３５０）は、バイトを単位として測定された前記メッセージのサイズを含むことを特徴とする、請求項１から５のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項７】
前記分周係数の値（３０）は、前記ネットワークの特性値からも計算されることを特徴とする、請求項１から６のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項８】
前記分周係数の値（３０）は定数からも計算され、該定数の値は、その定数の値から生成された低下した周波数の信号（４２）及び前記基準クロック（４０）からの前記固定周波数信号（４１）が、空の前記相互接続ネットワーク（１）でメッセージが往復するために必要な時間に対応するようにされることを特徴とする、請求項１から７のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項９】
前記ネットワークインターフェースコントローラ（１００）は、前記メッセージ（３００）が伝送された時に、前記メッセージ特性データ（３５０）が修正されて、前記減速決定モジュール（１３０）によって新しい分周係数が計算され、該新しい分周係数は、古い分周係数及び伝送された前記メッセージの前記新しい特性データから計算されるように構成されることを特徴とする、請求項１から８のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項１０】
前記減速決定モジュール（１３０）は、前記ネットワークインターフェースコントローラが前記メッセージの確認応答を受信した時に、前記分周係数の新しい値を定めるように構成されることを特徴とする、請求項１から９のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項１１】
前記ネットワークインターフェースコントローラ（１００）は、新しいメッセージを伝送するための命令を前記通信モジュール（１１０）が受信し、該命令は前記新しいメッセージの特性データを含み、前記新しいメッセージの特性データの一部が前記伝送バッファメモリ（１２０）に記憶される場合に、前記分周係数の新しい値が計算され、該分周係数の新しい値は、前記減速決定モジュール（１３０）によって、古い分周係数及び前記新しいメッセージの特性データから計算されるように構成されることを特徴とする、請求項１から１０のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項１２】
前記再送遅延は、現在の時間から、１つ又は複数の前記低下した周波数のクロック及び一定の待機時間によって計算されることを特徴とする、請求項１から１１のいずれかに記載のネットワークインターフェースコントローラ（１００）。
【請求項１３】
メッセージ（３００）の再送遅延を超えている場合に該メッセージ（３００）を再送信するようにして、複数のノード（２００）を含む相互接続ネットワーク（１）内で、ネットワークインターフェースコントローラ（１００）によってメッセージの再送遅延を動的に管理する方法（５００）であって、前記ネットワークインターフェースコントローラは、通信モジュール（２１０）と、少なくとも１つの伝送バッファメモリ（１２０）と、減速決定モジュール（１３０）と、基準クロック（４０）と、少なくとも１つの分周器（１４０）と、少なくとも１つの低下した周波数のクロック（１５０）とを含み、前記方法は、
−ターゲットノード（２０２）に対してメッセージ（３００）を伝送するための命令（２１１）を、前記通信モジュール（１１０）によってソースノード（２０１）から受信するステップ（５１０）と、ここでメッセージを伝送するための前記命令（２１１）はメッセージ特性データ（３５０）を含み、
−前記伝送バッファメモリ（１２０）内に前記メッセージ特性データ（３５０）の少なくとも一部を記憶し（５２０）、前記メッセージ特性データの前記一部を前記メッセージの再送遅延（２０）に関連付けるステップと、
−前記減速決定モジュール（１３０）によって、前記メッセージ特性データ（３５０）から分周係数の値（３０）を定めるステップ（５３０）と、
−前記分周係数の値（３０）と、前記基準クロック（４０）の固定周波数信号（４１）とから、前記分周器（１４０）によって低下した周波数の信号（４２）を生成するステップ（５４０）と、
−前記伝送バッファメモリ（１２０）に関連付けられた前記低下した周波数のクロック（１５０）によって、前記低下した周波数の信号（４２）の周波数に等しい周波数で前記再送遅延（２０）をカウントするステップ（５５０）と、
−前記再送遅延（２０）を超えている場合に、前記メッセージ（３００）の再送を引き起こすステップ（５６０）と
を含む、方法（５００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークでのメッセージのエンドツーエンド伝送管理の分野に関し、より詳細には、相互接続ネットワークでのメッセージの再送に関する。本発明は、相互接続ネットワークでのメッセージのエンドツーエンド伝送を動的に管理するためのコンピューターに関する。本発明はまた、発生し得るメッセージ消失を補うために相互接続ネットワーク内でメッセージの再送遅延を動的に管理する方法にも関する。
【背景技術】
【０００２】
コンピューターネットワーク及び電気通信において、コンピューターは互いにメッセージを送信し合い、進める前に、応答又は確認応答を待たなければならないことが多い。実際には、これらのメッセージは、消失する、複製される、又は破損する場合があり、メッセージの消失を補うために、各メッセージが確認応答を受信するのが一般的である。例えばメッセージを送信した場合に、一定時間後に確認応答が受信されなければ、システムはメッセージが消失したと見なし、その後にメッセージが再発行される。無制限の待機を回避するために、コンピューターは、動作を引き起こすことを制御する再送遅延を定めるための機構を備えることができる。例えば、再送遅延の期間中に応答が受信されていない場合には、メッセージの再送又は接続の切断をすることができる。メッセージ送信命令の受信と再送との間の期間（再送遅延とも呼ぶ）は、応答を受信するのに必要な時間（英語の用語でのRoundTrip Time（往復時間）についてのＲＴＴ）に基づく場合が多く、メッセージを送信した後にメッセージの確認応答を受信するための期間にも相当する。
【０００３】
ＨＰＣ（英語の用語でHigh Performance Computing）として知られる高性能コンピューティングは、学術研究及び産業用の両方について、特に航空学、エネルギー、気候学及び生命科学のような技術分野において発展している。これらの計算は、通常はクラスタと呼ばれる相互接続ネットワークで実行される。これらのクラスタの目的は、リソースをプールして命令の並列処理による実行及びディスクとメモリの集約を可能にすることによって、既存のハードウェアの限界を克服することである。
【０００４】
クラスタは相互接続ネットワークとも呼ばれ、それは相互接続されて、共通の作業を実行するためにメッセージを交換する演算手段（ノードとも呼ばれる）のセットである。クラスタは、多数のノード（典型的には数千）からなり、ノードは、英語の用語でSwitchと呼ばれるスイッチ（典型的には数百のスイッチ）によって、例えば階層的に、相互接続されている。複数のノードはコンピューター装置のセットに相当し、コンピューター装置は、演算機能及び／又は記憶機能を含むことができ、例えばサーバ、コンピューター、又はより包括的には機械である。
【０００５】
しかしながら、クラスタのサイズは日々大きくなり、これらのクラスタは、より高速でより多くのメッセージを処理できなければならない。一般的にメッセージ伝送期間は短くなったものの、依然として、特にネットワーク状況に応じて変動する。これは、メッセージ交換の数及び期間を最小限に抑えながらメッセージ消失に対処できる、相互接続ネットワークでの再送遅延を管理するための機構の実装について課題をもたらす。相互接続ネットワークの開発では、レイテンシが小さいこと、及び伝送エラーを迅速に管理することが望ましい。この場合には、一般的な問題は、メッセージのあまりに頻繁な再送又は遅い再送を行わないように、再送遅延の値を適切に設定することである。更に、再送遅延の値に、メッセージサイズの考慮を組み入れることができることが望ましいであろう。
【０００６】
従来のタイミング機構は、ソフトウェアに実装された再送遅延に基づいている。ソフトウェアの解決策では、パラメータに応じた適応再送遅延を実現することができる。したがって、再送遅延は、現在の時間に待機時間を加算したものに対応し、待機時間の値（ＲＴＯ、英語の用語でretransmit timeout（再送タイムアウト））はメッセージに応じて異なり、これらのメッセージは一般に同一の長さのパケットに分割され、各パケットはそれ自身の確認応答を有する。例えば、いくつかの文献では、ＲＴＴに等しいＲＴＯを与え、次に受信された各確認応答に対してＲＴＴを計算し、そして新しいＲＴＯを計算する。この新しいＲＴＯは、一連の最後のいくつかのＲＴＴの関数である。このタイプの解決策は、伝送プロトコルのソフトウェア層において実装される。しかし、この種の計算は、ハードウェアの実装によりネットワークカードで簡単に行うことはできない。更に、このようなソフトウェアの実装では、特に相互接続ネットワークの場合には、高い演算能力を必要とする。これは特に、一方ではノードのリソースの一部を消費するノードにホストされたアプリケーションを使用し、他方ではメッセージの再送信を管理するために該ノードで利用可能なリソースに依存する場合である。これは、相互接続ネットワークでの不調を引き起こし得る。
【０００７】
近年、メッセージ伝送／再送の少なくとも一部を支援することができるネットワークカードの使用が開発された。したがって、コンピューティングリソース消費の問題を補うために、一部の相互接続ネットワークは、複数の送受信キューを含むネットワークカードを備えたノードを有することができる。これらの機能の一部を専用のハードウェアに移すことで、ノードの演算能力を他のタスクのために解放する。したがって、再送は、ソフトウェアの介入なしにネットワークカードでのハードウェアデバイスによって管理される。それにもかかわらず、メッセージは上記カードを使用するソフトウェア層によって設定された順序で送信され（上記カードはメッセージの順序を変更できない）、ハードウェアの実装によって、メッセージのあまりに頻繁な又は遅い再送を行わないように再送遅延を適切に設定するために待機時間を変更することはできない。従来、各メッセージは再送遅延Ｔに関連付けられた伝送リストに、Ｔ＝待機時間＋リスト内の最後のメッセージのＴとなるようにして追加される。そのような方法の欠点は、メッセージの特性がＲＴＴに影響し得るにもかかわらず、それを考慮に入れることができない点、又はメッセージの処理中に常に変化し得るネットワークの状態を考慮に入れることができない点である。
【０００８】
したがって、相互接続ネットワークでのメッセージ再送を動的に管理し、その管理はハードウェアの実装によって実行されることによって既存の方法によって生じる問題に対処する、デバイス及び方法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
したがって、本発明は、先行技術の欠点を克服することを目的とする。特に、本発明の目的は、メッセージ再送を動的に管理するためのデバイスであって、特に、ハードウェアの実装によって、伝送されるメッセージの長さなどのメッセージの特性に応じて変化することができる、又はネットワークの輻輳並びに伝送元及び伝送先におけるメッセージの処理時間を考慮に入れることができる、適応再送を提供することを可能にするデバイスを提供することである。そのデバイスは、単純なハードウェアの実装により、かつリソースを消費する複雑な計算を必要とせずに、この管理を可能としなければならない。
【００１０】
本発明の目的は更に、メッセージ再送を動的に管理する方法であって、特にリソースを消費する複雑な計算を必要とせずにメッセージの特性に応じて変わることができる適応再送を可能にする方法を提供することである。
【課題を解決するための手段】
【００１１】
この目的のために、本発明は、複数のノードを含む相互接続ネットワーク内でメッセージの再送遅延を動的に管理するためのネットワークインターフェースコントローラに関し、該ネットワークインターフェースコントローラは、メッセージの再送遅延を超えている場合にそのメッセージを再送信でき、前記ネットワークインターフェースコントローラは、
−ターゲットノードに対してメッセージを伝送するための命令をソースノードから受信することができる通信モジュールと、ここで前記メッセージを伝送するための命令はメッセージ特性データを含み、
−前記メッセージ特性データの少なくとも一部を記憶でき、それを前記メッセージの再送遅延に関連付けることができる、少なくとも１つの伝送バッファメモリと、
−前記メッセージ特性データから分周係数の値を定めることができる減速決定モジュールと、
−固定周波数信号を生成することができる基準クロックと、
−前記分周係数の値と前記基準クロックの前記固定周波数信号とから低下した周波数の信号を生成することができる少なくとも１つの分周器と、
−前記伝送バッファメモリに関連付けられ、前記低下した周波数の信号から前記再送遅延の時間を調節でき、前記再送遅延を超えている場合に前記メッセージの再送を引き起こすことができる、少なくとも１つの低下した周波数のクロックと
を含むことを特徴とする。
【００１２】
したがって、本発明は、相互接続ネットワーク内でメッセージの再送遅延を動的に管理することができ、これはハードウェアの実装によって、ネットワークインターフェースコントローラにより実行される。このネットワークインターフェースコントローラは、分周器により１つ又は複数の伝送バッファメモリでの時間をカウントダウンするクロックの周波数を変更でき、それにより再送遅延を変更することができる。したがって、各メッセージに対して異なる待機時間を計算する代わりに、時間経過の方法が伝送中の１つ又は複数のメッセージの特性に応じて修正される。つまり、低下した周波数のクロックの速度は、伝送中のメッセージの特性に応じて変化することができ、従って低下した周波数のクロックは可変的に低下した周波数のクロックである。分周係数が大きいほど周波数はより低下するため、低下した周波数のクロックによる制御で時間はよりゆっくり経過する。そのようなデバイスは、例えば送信されるメッセージの特性に応じてメッセージの再送の時間を管理するために使用されることができる。更に上記コントローラは、ハードウェアエンコードによって、メッセージの伝送及び再送の管理を十分に支援することができる。これにより、ノードは計算だけに専念することができ、通信はネットワークインターフェースコントローラによって独立して管理される。したがって、他の現在のネットワーク技術を用いた場合とは異なり、上記のネットワークインターフェースコントローラは、システムが重い計算処理を行っているときでも、超ハイスループットを提供することができる。
【００１３】
上記コントローラの他の任意の特徴によれば、
−メッセージがネットワークインターフェースコントローラによって伝送された時に、減速決定モジュールは分周係数の値を変更するように構成される。したがって、分周係数の値は動的であり、特にリスト内の伝送中のメッセージ及びその状態に依存する。各メッセージは、その状態（伝送中、伝送済み）及びその特性に従って分周係数の値を定めることに寄与する。
−上記コントローラは、伝送されるデータをソースノードのメモリにおいて直接読み取ることができ、減速決定モジュールは、分周係数の値を定める時に、上記伝送されるデータを読み取るための時間を考慮に入れるように構成される。ソースノードのメモリでのメッセージの内容の少なくとも一部を読み出してターゲットノードに送信するネットワークインターフェースコントローラの能力により、有利には、ソースノードにおけるリソース消費を低下させることができる。
−上記コントローラは少なくとも８個の伝送バッファメモリを含み、各伝送バッファメモリは、分周器及び低下した周波数のクロックに関連付けられる。これにより、異なる伝送バッファメモリは、それらが管理する全ての伝送されるメッセージの再送遅延を個別に管理することができる。したがって、各伝送バッファメモリに記憶されているメッセージの再送遅延を、より細かく調整することができる。好ましくは、上記コントローラは、少なくとも１６個の伝送バッファメモリを含む。
−減速決定モジュールによって分周係数の値を定めるために使用される１つ又は複数のメッセージ特性データは、
−メッセージの（例えばバイトを単位として測定された）サイズ、
−命令内の伝送されるデータの存在、
−ソースノード及び／若しくはターゲットノードについての読み取り領域に関する開始アドレスの存在、
−記述子テーブルアドレスの存在、その記述子テーブルは、好ましくは伝送されるデータが分割領域に存在するときに、ソースノード及び／若しくはターゲットノードでの各フラグメントの開始アドレス及び長さを含む、
−ターゲットノードのための仮想アドレス指定の存在；並びに／又は
−メッセージの対象、すなわちメッセージが要求であるか応答であるか、
を含む。これらの特性での相違は、メッセージの処理及び／又はルーティング時間に影響し、したがって分周係数の値を定める時に、これらの特性を考慮に入れることが効果的である。好ましくは、１つ又は複数の特性データは、これらの要素のうちの少なくとも４つを含み、より好ましくは、１つ又は複数の特性データは、これらの要素の全てを含む。
−好ましくは、分周係数の値を定めるために使用される１つ又は複数のメッセージ特性データは、メッセージの（例えばバイトを単位として測定された）サイズを含む。したがって、上記コントローラは、再送遅延において伝送されるメッセージの長さを考慮に入れることができる。
−分周係数の値は、ネットワークの特性値からも計算される。好ましくは、ネットワークの特性値は、ネットワークの占有／稼働率に関連付けられる。ネットワークは複数のチャネルからなり、各チャネルはいくつかのセクションからなるため、ネットワークの占有／稼働率は、チャネル又はチャネルのセクションの占有／稼働率とすることができる。これにより、分周係数、従って再送時間を設定するために、メッセージの処理中に常に発生する可能性があり、そしてメッセージの特性に依存しないネットワークの輻輳の状態を考慮に入れることができる。更に、これを考慮に入れることは、本発明のネットワークインターフェースコントローラのハードウェアの実装によって、複雑な計算を必要とせずに可能となり、特に減速決定モジュールにより可能となる。
−分周係数の値は定数からも計算され、その定数の値は、その定数の値から生成された低下した周波数の信号及び基準クロックの固定周波数信号が、空の相互接続ネットワークでメッセージが往復するために必要な時間に対応するようにされる。これによって基準期間を設定でき、それはメッセージ特性及びネットワーク特性によって後で変更されることができる。
−上記コントローラは、メッセージが伝送された時に、メッセージ特性データが修正されて、減速決定モジュールによって新しい分周係数が計算され、その新しい分周係数は、古い分周係数及び伝送されたメッセージの新しい特性データから計算されるように構成される。したがって、分周係数は、各伝送バッファメモリでのロード及びメッセージ配信の進捗状態に応じて、絶えず変化する。
−減速決定モジュールは、ネットワークインターフェースコントローラがメッセージの確認応答を受信した時に、分周係数の新しい値を定めるように構成される。より詳細には、分周係数の値は、確認応答が受信されたメッセージが分周係数の値に影響しないように修正される。したがって、更に好ましくは、減速決定モジュールは、ネットワークインターフェースコントローラがメッセージの確認応答を受信した時に、そのメッセージについての要素を削除するように構成される。実際に、そのメッセージは完了しているため、低下した周波数のクロックの周波数には既に影響を与えていない。有利には、多くのメッセージが同時に送信されることを考えると、あるメッセージの確認応答によって伝送中の他のメッセージの要素は修正されない。
−上記コントローラは、新しいメッセージを伝送するための命令を通信モジュールが受信し、その命令は新しいメッセージの特性データを含み、その新しいメッセージの特性データの一部が伝送バッファメモリに記憶される場合に、分周係数の新しい値が計算され、その分周係数の新しい値は、減速決定モジュールによって、古い分周係数及び新しいメッセージの特性データから計算されるように構成される。したがって、分周係数の値は、新しいメッセージの到着と共に増加する。より詳細には、分周係数の値は、新しいメッセージが先のメッセージと同じ伝送バッファメモリによって管理される場合に変更される。
−再送遅延は、現在の時間から、１つ又は複数の低下した周波数のクロック及び一定の待機時間によって計算される。これにより、最小限のリソース消費で、メッセージの伝送又は再送の時間の記憶を継続することができる。
【００１４】
別の態様によれば、本発明は、メッセージの再送遅延を超えている場合にメッセージを再送信するようにして、複数のノードを含む相互接続ネットワーク内で、ネットワークインターフェースコントローラによってメッセージの再送遅延を動的に管理する方法に関し、前記ネットワークインターフェースコントローラは、通信モジュールと、減速決定モジュールと、基準クロックと、少なくとも１つの伝送バッファメモリと、少なくとも１つの分周器と、少なくとも１つの低下した周波数のクロックとを含み、その方法は、
−ターゲットノードに対してメッセージを伝送するための命令を、前記通信モジュールによってソースノードから受信するステップと、ここで前記メッセージを伝送するための命令はメッセージ特性データを含み、
−前記伝送バッファメモリ内に前記メッセージ特性データの少なくとも一部を記憶し、前記メッセージ特性データの前記一部をメッセージの再送遅延に関連付けるステップと、
−前記減速決定モジュールによって、前記メッセージ特性データから分周係数の値を定めるステップと、好ましくは、前記分周係数の値を定めるために前記メッセージ特性データの少なくとも１つを使用し、
−前記分周係数の値と、前記基準クロックの固定周波数信号とから、低下した周波数の信号を前記分周器によって生成するステップと、
−前記伝送バッファメモリに関連付けられた前記低下した周波数のクロックによって、前記低下した周波数の信号の周波数に等しい周波数で再送遅延をカウントするステップと、
−前記再送遅延を超えている場合に、前記メッセージの再送を引き起こすステップと
を含む。
【００１５】
この方法は、分周器により伝送バッファメモリで時間をカウントダウンするクロックの周波数を変更でき、それによりメッセージの再送時間を変更することができる。このような方法を用いて、例えば送信されるメッセージの特性に応じて再送時間を変更することができる。更に、これはノードの演算能力に依存しないので、その方法は、計算に利用可能なリソースに悪影響を与えない。
【００１６】
更に別の態様によれば、本発明は、１つ又は複数のプロセッサによって実行される場合にその１つ又は複数のプロセッサに本発明の方法を実施させる命令が記憶された、非一時的（又はマスメモリタイプ）なコンピューター可読媒体に関する。
【００１７】
本発明の他の利点及び特徴は、以下を表す添付図面を参照して、例示的及び非限定的な例で提供される以下の説明を読むことにより明らかにされる。
【図面の簡単な説明】
【００１８】
【図１】本発明によりネットワークインターフェースコントローラにそれぞれ関連付けられた複数のノードを含む相互接続ネットワークの図である。
【図２】本発明によるノード及びネットワークインターフェースコントローラの詳細な模式図である。
【図３】ソースノードとターゲットノードとの間でのメッセージの交換を経時的に示す模式図である。
【図４Ａ−Ｄ】図４Ａ−図４Ｄは、本発明により２つの伝送バッファメモリを含む、ネットワークインターフェースコントローラの詳細な模式図である。これらの個々の図は、図３に関連して異なる時点（ｔａ、ｔｂ、ｔｃ、ｔｄ）における伝送バッファメモリの中身を示している。
【図５】本発明による再送遅延を動的に管理する方法の模式図である。
【図６】本発明による再送遅延の動的管理のフローチャートである。
【図７】本発明による固定周波数及び低下した周波数を示す図である。
【図８】本発明による低下した周波数のクロックによってカウントダウンされる再送遅延の模式図である。
【発明を実施するための形態】
【００１９】
以下の説明において、用語「再送遅延」は、メッセージが受信の確認応答を待つことができる、又はメッセージが消失したとみなされる前の確認応答を待つことができる時間を指す。再送遅延は、現在の時間に待機時間を加算したものにすることができる。
【００２０】
「待機時間」の記載は、本発明の意味では、メッセージの引き受けと受信の確認応答が受信されるはずの時点との間の遅延に相当する期間を指す。
【００２１】
用語「再送信」は、本発明の意味では、長い待機時間、すなわち再送遅延より長いことにより、又は受信の確認応答が否定的であることにより、メッセージが消失したと見なされた後に、システムがメッセージの再送信を試みることを指す。メッセージを再送信することができる回数には限界があってもよい。例えば、繰り返し回数は最大で６回の試みに制限されることができる。
【００２２】
「相互接続ネットワーク」とは、ここでは物理的通信リンクを備えた、いずれかの専用のコンピューティングネットワーク（例えば、インフィニバンドネットワーク）、又はより一般的には、コンピューターの構成要素、特に分散したプロセッサのあらゆる集合を意味する。
【００２３】
以下の説明において、「待機リスト」又は「伝送バッファメモリ」とは、確認応答又は受信の確認応答が未だ受信されていない、伝送中又は伝送済みメッセージのリストが記憶されたメモリを意味する。メッセージは通常、その処理順に従って待機リスト又は伝送バッファメモリ内に配置され、ＦＩＦＯ（英語の用語でfirst in，first out(先入れ先出し)）システムに基づいている。効果的には、本発明によるネットワークインターフェースコントローラは、伝送バッファメモリとも呼ばれる仮想コンテナの形態の複数の待機リストを含む。これらのリストは、例えば、ノードグループ又はメッセージタイプに割り当てられることができる。
【００２４】
「確認応答」とは、本発明の意味では、ターゲットノードによってあるメッセージの受信後に送信されるメッセージを意味する。効果的には、１つの送信メッセージにつき１つの確認応答のみが存在する。
【００２５】
「結合され」とは、本発明の意味では、直接、又は１つ若しくは複数の中間要素を用いて間接的に、接続されることを意味する。２つの要素は、機械的、電気的に結合されること、又は通信チャネルによってリンクされることができる。
【００２６】
「プロセッサ」とは、本発明の意味では、コードに含まれる命令に従って作業を実行するように構成された、少なくとも１つのハードウェア回路を意味する。ハードウェア回路は集積回路であってもよい。プロセッサの例としては、中央処理ユニット、グラフィックプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、及びプログラマブル論理回路が挙げられるが、これらに限定されない。
【００２７】
「実行可能な作業」とは、本発明の意味では、文脈上他の意味を示す場合を除き、デバイス又はプロセッサによって実行される動作を意味する。実行可能な作業の例としては、「処理する」、「計算する」、「決定する」、「表示する」、「比較する」などが挙げられるが、これらに限定されない。これに関して、作業は、データ処理システム、例えばコンピューターシステム又は同様の電子計算装置の動作及び／又は処理に関係し、それはコンピューターシステム又は情報を記憶、伝送、又は表示するための他のデバイスのメモリ内の物理的な（電子的な）量として表されたデータを操作して変換する。
【００２８】
以下の説明において、同じ参照番号は同じ要素を示すために使用される。
【００２９】
相互接続ネットワークは、典型的には、メッセージエラー回復遅延について短い期間を使用し、送信が失敗した時には迅速に再送信する。典型的には、相互接続ネットワークにおいて合計での遅延期間は短く、例えば５０ミリ秒〜５００ミリ秒である。しかしながら、全てのメッセージがターゲットノードへ伝送されるために同じ期間を必要とするわけではないため、再送遅延の期間が短すぎるメッセージに関しては問題が生じる。相互接続ネットワークにおいて、接続経路の障害は、障害のある接続経路を使用するアプリケーションの障害をもたらし、これは性能低下につながり得る。
【００３０】
図１は、複数のノード２００、２０１、２０２、２０３を含む相互接続ネットワーク１を概略的に示す。相互接続ネットワーク１のノード２００は、通信モジュール２１０と、１つ又は複数のプロセッサ２２０と、メモリ２３０とを含むことができる。各ノードは、メッセージ３００を送信することができるネットワークインターフェースコントローラ１００、１０１、１０２、１０３に関連付けられる。更に、このネットワークインターフェースコントローラ１００は、メッセージ３００の再送遅延２０を超えている場合に、メッセージ３００を再送信することができる。
【００３１】
図２に詳細に示されるように、ネットワークインターフェースコントローラ１００は、分離したデバイスであっても、ノード２００に結合されていてもよい。ネットワークインターフェースコントローラ１００は、ノード２００内に組み込まれて、プロセッサ２２０及びメモリ２３０などのリソースをノード２００と共有してもよい。好ましくは、図示されるように、ネットワークインターフェースコントローラ１００は、自身のプロセッサ１６０及びメモリ１７０を含むデバイス（例えば、ネットワークカード）の形態を取ることができる（例えば、ＰＣＩｅカード、ＵＳＢデバイス、又はドーターボード）。ネットワークインターフェースコントローラは、有利には、ソースノードのメモリ内のメッセージデータを読み取り、このデータを伝送し、伝送中のメッセージを追跡し、他のノードからメッセージを受信し、応答を生成する（例えば、メッセージを読み取る又はデータを書き込む）ことによって、送信されるメッセージを構築することができるように構成される。この特徴及び本明細書で詳述される他の特徴により、ネットワークインターフェースコントローラは、メッセージ消失の場合における再送でのエンドツーエンド伝送の動的かつ効率的な管理を可能にする。
【００３２】
ネットワークインターフェースコントローラ１００は、相互接続ネットワーク１の通信チャネルへの物理的アクセスをノード２００に提供するために、ハードウェアとソフトウェア（例えば、ファームウェア）との組み合わせを含むことができる。通信チャネルは、有線又は無線接続に基づいてもよい。各ネットワークインターフェースコントローラ１００は、１つ又は複数のプロセッサ１６０を含むことができ、それは有利には、ＡＳＩＣ（英語の用語でapplication-specific integrated circuit（特定用途向け集積回路））タイプの集積回路とすることができ、ＭＰＩ（英語の用語でMessage Passing Interface（メッセージパッシングインターフェース））及びＰＧＡＳ（英語の用語でPartitioned Global Address Space（区分化大域アドレス空間））などの通信ライブラリに結合されることができる。プロセッサ１６０はメモリ１７０に結合されることができ、このメモリ１７０は、コンピューター可読の命令及びデータを記憶することができるものであってもよい。コントローラ１００のメモリ１７０は、プロセッサ１６０によって実行可能な命令を含む、プロセッサ１６０によってアクセス可能な情報を記憶することができる。例えば、メモリ１７０は、プロセッサ１６０によって取り出される、操作される、又は記憶されることができるデータを含むことができる。メモリ１７０及び本明細書に記載されている他のメモリは、ハードディスクドライブ、ソリッドステートドライブ、メモリカード、ランダムアクセスメモリ又はリードオンリメモリといった、関係するプロセッサがアクセス可能な情報を記憶することができるいずれのタイプの記憶装置にもすることができる。
【００３３】
ネットワークインターフェースコントローラ１００は、メッセージを伝送するための命令２１１をソースノード２０１から受信することができる通信モジュール１１０を含む。命令２１１は、プロセッサ１６０によって実行される命令の集合であってもよい。その命令は、プロセッサによる即時処理のためにオブジェクトコードフォーマットで、又はスクリプトなどのネットワークインターフェースコントローラによってサポートされる別の言語で記憶されてもよい。伝送命令２１１は、通常はメッセージ特性データ３５０を含む。これらの特性データ３５０は、命令２１１に従って、ネットワークインターフェースコントローラ１００によって回復、記憶、又は修正されてもよい。特性データは、数字、識別子、記述テキスト、プロパティコード、他のメモリ内に記憶されているデータへの参照又は関連データを計算する機能によって使用されるデータへの参照などの、ノードのメモリ内の関連情報を特定するための十分な情報を含むことができる。上記の命令は、その目的に応じて異なるデータを含むことになる。典型的には、データ書き込みメッセージ３１１に関する命令２１１は、以下のデータを含むことができる。
−ソースノードのメモリ内で読み取られるデータの長さ、又はメッセージの（例えばバイトを単位として測定された）サイズ。
−読み取られるデータの位置。例えばデータは、メモリの連続領域又は分割領域に存在することができる。連続領域であれば、命令２１１はその領域の開始アドレスを含むことになるが、分割領域であれば、命令２１１は記述子テーブルのアドレスを含むことになり、記述子テーブルの各要素は、フラグメントの開始アドレス及びフラグメントの長さを含む（このようなテーブルは、英語の用語でのvectored I/O（ベクタＩ／Ｏ）についてＩＯＶＥＣと呼ばれる）。
−メモリ内のアドレス指定のタイプ。実際には、アドレス指定は物理的又は仮想的にすることができ、仮想的である場合には、ページフォールトを生じるリスクがある。
−ターゲットノード、及び場合によってはこのノードでの特定のポートについての識別子。例えば命令は、ＬＩＤ（英語の用語でLocal Identifier（ローカル識別子））タイプの識別子、又はプレフィックス及びＧＵＩＤ（英語の用語でGlobal unique identifier（グローバル一意識別子））ポート識別子からなるＧＩＤ（英語の用語でGlobal Identifier（グローバル識別子））タイプの識別子を含むことができる。
−ターゲットノードにおいてデータを書き込まなければならない位置。上述したように、データは連続領域又は分割領域に存在することができる。
【００３４】
あるいは、データ読み取りメッセージ３２１に関する命令は、以下のデータを含むことができる。
−ターゲットノードのメモリ内で読み取られるデータの長さ。
−ターゲットノードで読み取られるデータの位置。上述したように、データは連続領域又は分割領域に存在することができる。
−メモリ内のアドレス指定のタイプ。実際には、アドレス指定は、物理的又は仮想的にすることができ、仮想的である場合には、ページフォールトを生じるリスクがある。
−ソースノードにおいてデータを書き込まなければならない位置。上述したように、データは、連続領域又は分割領域に存在することができる。
−データ書き込みメッセージと同様に、ターゲットノード用の識別子。
【００３５】
メッセージ３００（例えば３１１、３１２、３２１、３２２、３３１、３４１、３５１）は、相互接続ネットワークの通信チャネルで送信されるような、又は送信されるように構成された、いずれのメッセージであってもよい。メッセージは、例えばターゲットノードによってホストされているデータ又はデータの要求を含むことができる。メッセージは、アプリケーションデータ、すなわちターゲットノードによって生成されるデータの要求を含んでもよい。メッセージ３００は、専用の通信プロトコル又は業界標準プロトコル（例えば、ＩＰ、ＴＣＰ、ＵＤＰ）をサポートするようにフォーマットされることができる。更に、コントローラ１００は、メッセージの末尾に１つの信号のみを有するメッセージを送信することができる。更に、コントローラ１００は、有利にはメッセージのサイズに関係なくただ１つの確認応答を受信することができる。これにより、メッセージの各パケットに対する確認応答に対応する複数の確認応答ではなく、メッセージ全体に対してただ１つの応答を有することによって、ネットワーク帯域幅を節約することができる。したがって、送信されるメッセージ３００は単一ファイルで送信される複数のパケットに分割され、第１のパケットのみがルーティングヘッダを含む。例えば、有利には、コントローラ１００によって送信されるメッセージ３００の第１のパケットのみがルーティングヘッダを含む。実際には、コントローラ１００は、第１のパケットのターゲットによる受信の後に、ソースとターゲットとの間の専用のパスだけを経てパケットを伝送することができる。更に上記専用のパスは、ターゲットコントローラ１００が最後のパケットを受信した後に閉鎖される。アプリケーションレベル（メッセージ）及び伝送レベル（パケット）の２層の伝送プロトコルに関するこのような特徴により、ネットワーク帯域幅を最適化すること、特にネットワーク帯域幅の消費を低下させることができる。
【００３６】
図３は、ソースノード２０１と２つのターゲットノード２０２、２０３との間での一連のメッセージ伝送を経時的に示す。
【００３７】
メッセージ３１１は、ノード２０１のメモリに含まれるデータをノード２０２のメモリに書き込むように設計されたデータ書き込みメッセージである。したがって、そのデータをソースノード２０１のメモリにおいて読み取り（３１１ａ）、ターゲットノード２０２に転送して、ターゲットノード２０２のメモリに書き込む（３１１ｂ）必要がある。書き込みが完了すると、ノード２０２は、そのネットワークインターフェースコントローラ１０２を介して、ソースノード２０１に完了応答メッセージ３１２を送信する。完了メッセージ３１２を受信すると、ソースノード２０１は、受信の確認応答３１３をソースノード２０２に送信する。
【００３８】
図３に示されるように、データ書き込みメッセージ３１１のこの伝送と並行して、ソースノード２０１は、同じターゲットノード２０２にデータ読み取りメッセージ３２１を送信する。データを、ターゲットノード２０２のメモリにおいて読み取り（３２２ａ）、ソースノード２０１に転送して、ソースノード２０１のメモリに書き込む（３２２ｂ）必要がある。ソースノード２０１に対するターゲットノード２０２の応答メッセージ３２２を受信して、データを書き込んだ後に、ソースノード２０１は、確認応答３２３をターゲットノード２０２に送信する。図３は、ソースノード２０１による別のターゲットノード２０３への複数のメッセージ３３１、３４１、３５１の送信も示している。
【００３９】
一実施形態によれば、ネットワークインターフェースコントローラ１００は、伝送されるメッセージの一部などのネットワークデータを記憶することができる少なくとも１つの伝送バッファメモリ１２０を備える。そのネットワークインターフェースコントローラは、伝送されるメッセージの上記特性データ３５０から分周係数の値３０を定めることができる減速決定モジュール１３０も含む。ネットワークインターフェースコントローラはまた、少なくとも１つの分周器１４０を含む。ネットワークインターフェースコントローラは、好ましくは１マイクロ秒以下のオーダーの精度を提供することができる基準クロック４０も含む。最後に、ネットワークインターフェースコントローラは、少なくとも１つの低下した周波数のクロック１５０も含む。
【００４０】
本発明は、メッセージごとに待機時間を計算する代わりに、ネットワークインターフェースコントローラは一定の待機時間を使用するが、クロックの速度が伝送中のメッセージに適合されるという事実に特に基づく。このクロック速度は特に、少なくとも１つの低下した周波数のクロック１５０によって生成される。ネットワークインターフェースコントローラ１００は、固定周波数の信号を生成する基準クロック４０を含む。有利には、ネットワークインターフェースコントローラ１００は、伝送バッファメモリ又は伝送中のメッセージリストごとに１つの低下した周波数のクロック１５０を含み、その周波数は、基準クロックの周波数及び分周係数の値から得られる。この計算は、例えば、次の形式を取ることができる。
低下した周波数のクロックの周波数＝基準クロックの周波数／分周係数の値
【００４１】
分周係数は時間に応じて修正されることができるため、低下した周波数のクロック１５０は、可変的に低下した周波数のクロック１５０でもある。
【００４２】
図４は、ネットワークインターフェースコントローラを示し、より詳細には、時間の進行（図４Ａ：ｔａ、図４Ｂ：ｔｂ、図４Ｃ：ｔｃ、図４Ｄ：ｔｄ）に応じた伝送バッファメモリ１２０の中身を示している。図４Ａに示されるように、本発明の構成におけるネットワークインターフェースコントローラ１００は、２つの伝送バッファメモリ１２１、１２２を備え、そのそれぞれが低下した周波数のクロック１５１、１５２及び分周器１４１、１４２に結合されることができる。
【００４３】
図４Ａにおいて、ノード２０１専用の第１の伝送バッファメモリ１２１は、メッセージの再送遅延に関連付けられたメッセージ３１１の特性データの少なくとも一部を含む。
【００４４】
図４Ｂにおいて、ノード２０１専用の第１の伝送バッファメモリ１２１は、メッセージ３１１の再送遅延に関連付けられたメッセージ３１１の特性データの少なくとも一部と、メッセージ３２１の再送遅延に関連付けられたメッセージ３２１の特性データの少なくとも一部とを含む。
【００４５】
図４Ｃにおいて、ノード２０１専用の第１の伝送バッファメモリ１２１は、図４Ｂのデータと同じデータを含むが、ノード２０２専用の第２の伝送バッファメモリ１２２は、メッセージ３３１の再送遅延に関連付けられたメッセージ３３１の特性データの少なくとも一部を含む。
【００４６】
図４Ｄにおいて、ノード２０１専用の第１の伝送バッファメモリ１２１は、メッセージ３１１の再送遅延に関連付けられたメッセージ３１１の特性データの少なくとも一部のみを含む。実際には、応答３２２が受信されているため、上記のメッセージ３２１の特性データの少なくとも一部は、伝送バッファメモリ１２１から除去されている。ノード２０２専用の第２の伝送バッファメモリ１２２は、それに関する限り、メッセージ３３１、３４１、３５１の再送遅延に関連付けられたメッセージ３３１、３４１、３５１の特性データの少なくとも一部を含む。これらのメッセージは、それらのそれぞれの応答を受信するまで、現在のメッセージリスト又は伝送バッファメモリ内に残る。上記バッファメモリに関連付けられた低下した周波数のクロックが、応答を受信しないまま伝送遅延より長い時間に到達すると、メッセージは再送され、メッセージは低下した周波数のクロック１５０の現在の時間に等しい新しいタイムスタンプを取得し、伝送中のメッセージのリストの最後に配置される。
【００４７】
各伝送バッファメモリは１つの低下した周波数のクロックに関連付けられるため、ネットワークインターフェースコントローラ１００は、再送遅延を伝送バッファメモリごとに別個に管理することができる。したがって、伝送バッファメモリに記憶されているメッセージの再送遅延を、伝送されたメッセージだけでなくターゲットノードの特性に応じて、はるかに短くすることができる。
【００４８】
図５は、本発明による再送遅延を動的に管理するための例示の方法５００の模式図である。
【００４９】
図６は、本発明による再送遅延の動的管理のフローチャートを示すことによってこの方法を詳述する。
【００５０】
その方法は、データ書き込みメッセージ３１１を伝送するための命令２１１をノードから受信するステップ５１０で始まり、メッセージを送信するためのその命令２１１は、メッセージ３１１の特性データ３５０を含む。
【００５１】
この受信の後に、ネットワークインターフェースコントローラ１００は、メッセージ３１１の特性データ３５０の少なくとも一部を記憶し（５２０）、メッセージ特性データ３５０のその一部を、メッセージの再送遅延２０に関連付ける。このメッセージの再送遅延２０は、現在の時間に一定の待機時間を加算したものを示すものからなることができる。更に、好ましくは、メッセージが伝送バッファメモリに記憶される度にタイムスタンプが押され、すなわちメッセージは、基準クロック４０の現在値と関連付けて記憶される。
【００５２】
次に、ネットワークインターフェースコントローラ１００は、減速決定モジュール１３０を介して、メッセージ３１１の上記特性データ３５０から分周係数の値３０を定めるステップ５３０へと進む。図６に示されるように、この決定は、メッセージ３００の上記特性データ３５０と、ネットワークの輻輳データ３５１及び定数値３５２との組み合わせから実施することができる。
【００５３】
したがって、メッセージの再送時間は、メッセージの特性だけでなく、ネットワークの現在の状態の情報にも依存することになる。例えば、場合により、メッセージの送信はソースノードでのデータの読み取りを必要とする場合もあれば、必要としない場合もある。ソースノードでのデータの読み取りを必要とする場合には、再送時間は、データの長さだけでなく、データ分散領域といった他の要素にも依存すべきである。そのため、分周係数の値を決定するために、メッセージのこれらのパラメータが考慮に入れられる。同様に、メッセージの再送時間は、ターゲットノードで実行される動作又は計算に影響され得る。
【００５４】
更に、効果的には、ソースノードからターゲットノードへのメッセージの伝搬時間を考慮に入れなければならない。実際には、伝搬時間は、ネットワークの輻輳に応じて大きく変化し得る。
【００５５】
最後に、場合によっては、メッセージに対する応答自体が再送遅延を受ける場合がある。例えば、メッセージが応答自体が再送されるのを待っているならば、再送遅延を超える場合において、メッセージの再送前により多くの時間が与えられなければならない。
【００５６】
より詳細には、分周係数の値３０を定めるために、以下の複数のメッセージ特性データを使用することができる。
−メッセージの（例えばバイトを単位として測定された）サイズ。
−命令内の伝送されるデータの存在。これは例えば、命令が少さな伝送されるデータを既に含んでいるプログラムＩ／Ｏ（英語の用語でProgrammed input/output）の場合である。
−ソースノード及び／又はターゲットノードについての読み取り領域に関する開始アドレスの存在。実際には、この場合には、分周係数の値はソースノードのメモリへのアクセス速度を考慮に入れることになる。
−伝送されるデータが分割領域に存在するときに、ソースノード及び／又はターゲットノードの各フラグメントの開始アドレス及び長さを含む、記述子テーブルアドレスの存在。実際には、分割領域の場合には、分周係数の値は、記述子配列（ＩＯＶＥＣ、英語の用語でVectored I/O（ベクタＩ／Ｏ））の読み取りによる減速及び記述子テーブル内で定められたセグメントの平均サイズを考慮に入れることになる。
−ターゲットノードのための仮想アドレス指定の存在。実際には、仮想アドレス指定の場合には、分周係数の値は、ページフォールトによる減速、好ましくはページフォールトを解決するのに必要な時間並びにページフォールトの発生確率及びページのサイズ（好ましくは２のべき乗）に対応するページフォールトによる減速を考慮に入れることになる。
−メッセージの対象：要求又は応答。実際には、要求の場合には、分周係数の値は応答と比較しての要求の平均処理時間を考慮して、適用される減速を考慮に入れることになる。
【００５７】
１つのパラメータ（分周係数の値３０）のみについての動作しか存在しないため、そのような自由度により、簡単な方法で送信されるメッセージのサイズといったメッセージの特性に対して再送遅延を微調整することができる。
【００５８】
効果的には、分周係数を定めるために使用される１つ又は複数のメッセージ特性データは、ソースノード及び／又はターゲットノードについての読み取り領域に関する開始アドレスの存在と、伝送されるデータが分割領域に存在するときに、ソースノード及び／又はターゲットノードの各フラグメントの開始アドレス及び長さを含む、記述子テーブルアドレスの存在とを含む。したがって、分周係数、それにより伝送遅延を設定するために、ターゲットノード又はソースノードにおける処理時間を考慮に入れることができる。これは、ハードウェアの実装によって、複雑な計算を必要とせずに行われる。
【００５９】
分周係数の値３０が決定されると、上記方法は、分周係数の値３０及び基準クロック４０の固定周波数信号から、低下した周波数の信号４２ａを生成するステップ５４０を行う。
【００６０】
この低下した周波数の信号４２ａは、メッセージ特性データの少なくとも一部が記憶されている伝送バッファメモリに関連付けられた低下した周波数のクロックによって使用される。このことにより、分周器１４０からの低下した周波数の信号の周波数に等しい周波数で再送遅延２０をカウントする（５５０）ことができる。
【００６１】
そして、メッセージ３１１はデータ書き込みメッセージであるため、ネットワークインターフェースコントローラ１００は、メッセージ３１１が伝送されたことを検証するステップ５５１に進む。メッセージが伝送されなかった場合には、ネットワークインターフェースコントローラ１００は、再送遅延を超えていないことを検証するステップ５５５に進む。再送遅延を超えている場合には、メッセージの再送をもたらす（５６０）ために、メッセージはリストの最後へ送られる。再送遅延を超えていない場合には、カウント（５５０）が継続する。
【００６２】
メッセージ３１１がネットワークインターフェースコントローラによって伝送されると、減速決定モジュール１３０は、有利には、分周係数の値の修正（５７０）に進む。したがって、分周係数の値は動的であり、特にリスト内の伝送中のメッセージ及びそれらの状態に依存する。各メッセージは、その状態（伝送中、伝送済み）及びその特性により、分周係数の値を定めることに寄与する。
【００６３】
分周係数の新しい値３１が決定されると、上記方法は、分周係数の新しい値３１及び基準クロックの固定周波数信号から、第２の低下した周波数の信号４２ｂを生成するステップ５７１を行う。次に、新しい低下した周波数の信号４２ｂの周波数に等しい周波数で再送遅延２０をカウントする、カウントするステップ５５０と同様のステップ５７２が開始される。
【００６４】
例として、図７は、基準周波数４１、第１の低下した周波数４２ａ及び第２の低下した周波数４２ｂを示す。
【００６５】
次に、ネットワークインターフェースコントローラ１００は、メッセージ３１１に対する応答が受信されたことを検証するステップ５７３に進む。応答が受信されていない場合には、ネットワークインターフェースコントローラ１００は、再送遅延を超えていないことを検証するステップ５７５に進む。再送遅延を超えている場合には、メッセージは新たな伝送のために、リストの最後へ送られる。再送遅延を超えていない場合には、カウントするステップ５７２が継続する。
【００６６】
応答がネットワークインターフェースコントローラ１００によって受信されると、ネットワークインターフェースコントローラは、受信の確認応答又は確認応答メッセージをターゲットノードに送信するステップ５８０、及び伝送バッファメモリからメッセージデータを削除するステップ５８５に進む。
【００６７】
次に、減速決定モジュール１３０は、有利には、分周係数の値を修正するステップ５９０に進む。このステップの間に分周係数の値は低下される。したがって、やはり分周係数の値は動的であり、特にリスト内の伝送中のメッセージ及びその状態に依存する。
【００６８】
更に、そのコントローラは、有利には、ソースノード２０１がアプリケーション応答を待っている場合に、ネットワークインターフェースコントローラ１００が、ターゲットノード２０２からアプリケーション応答を含む受信メッセージの確認応答を受信できるように構成されることができる。この場合には、分周係数の値を定める時に、アプリケーション応答を生成するための時間を考慮に入れる。これにより、メッセージの数を最適化することができる。実際には、メッセージがアプリケーションデータを備えた応答を待っている場合には、受信の確認応答はアプリケーション応答と統合される。分周係数の値は、再送遅延がネットワークだけでなく、宛先ノードにおけるメッセージの処理にも依存するように、これを考慮に入れる。
【００６９】
図８は、本発明による低下した周波数のクロックによって再送遅延をカウントするステップを示した模式図である。一実施形態によると、このステップは、複数のサブステップに細分化されることができる。
【００７０】
ステップ６１０は、本発明による分周器１４０によって管理されるカウンタをリセットするステップに相当する。ステップ６２０は、分周係数の値３０を定めるステップに相当する。このステップは、上述したステップ５３０と同じである。
【００７１】
ステップ６３０は、分周器１４０によって、固定周波数信号４１に相当する基準クロック４０の信号を受信するステップに相当する。この信号を受信することにより、分周器１４０によって管理されるカウンタをインクリメントするステップ６４０をもたらす。
【００７２】
次にネットワークインターフェースコントローラは、分周器１４０が管理するカウンタの値を、分周係数の値３０と比較するステップ６５０に進む。分周器１４０が管理するカウンタの値が分周係数の値３０以上より大きいか又はそれと等しい場合には、分周器１４０は、本発明により低下した周波数のクロック１５０に信号を伝送し（６６０）、そして分周器１４０が管理するカウンタがリセットされる（６１０）。
【００７３】
分周器１４０によって伝送された信号を低下した周波数のクロック１５０が受信することにより、低下した周波数４２を生成することができる。
【００７４】
分周係数の値は動的である。以下の例では、分周係数の値はＦ  ｍｓｇで示されており、リスト（又は伝送バッファメモリ）内の伝送中のメッセージ３００の特性データに依存する。各メッセージは、メッセージの状態（伝送中、伝送済み）及びメッセージの特性により寄与する。メッセージの状態に応じたＦ＿ｍｓｇの修正は、例えば、以下の表に示されているコードに従って書き込まれることができる。
【表１】
2019106697.tif 000003
Ｌ：メッセージの長さ（バイト）
Page_size：ページのサイズ（例えば、２のべき乗）
mem_f：ページごとのメモリへのアクセス速度に関連付けられたパラメータ
iovec ?：iovecの有無の探索
iovec_f：iovecの読み取りにより減速を決定するパラメータ
iovec_size：iovecセグメントの平均サイズ（例えば、２のべき乗）に関連付けられたパラメータ
virtual ?：仮想アドレス指定の有無の探索
pf_f：ページフォールトにより減速を決定するパラメータ。有利には、pf_fは、ページフォールトを解決するために必要な時間並びにページフォールトの発生確率に依存する。
page_size：ページのサイズ（例えば、２のべき乗）
req_f：要求に対して適用される減速を決定する係数
【００７５】
このように、本発明によるネットワークインターフェースコントローラ１００、及び本発明による再送遅延を動的に管理する方法により、メッセージの特性だけでなく他の特性にも従って、メッセージの再送時間を細かく適合させることができる。更に、これは複雑な計算なしで、分周器及び低下した周波数のクロックに基づいて可能である。
【００７６】
したがって、これらの利点は全て、メッセージの消失のリスクを低減させることと同時に、相互接続ネットワークの性能を向上させることに寄与する。
【符号の説明】
【００７７】
１      相互接続ネットワーク
２０    再送遅延
３０    分周係数の値
４０    基準クロック
４１    基準周波数
４２    低下した周波数
４２ａ  第１の低下した周波数
４２ｂ  第２の低下した周波数
１００、１０１、１０２、１０３  ネットワークインターフェースコントローラ
１２０、１２１、１２２  伝送バッファメモリ
１３０  減速決定モジュール
１４０、１４１、１４２  分周器
１５０、１５１、１５２  低下した周波数のクロック
１６０  プロセッサ
１７０  メモリ
２００  ノード
２０１  ソースノード
２０２、２０３  ターゲットノード
２１０  通信モジュール
２１１  命令
２２０  プロセッサ
２３０  メモリ
３００  メッセージ
３１１  データ書き込みメッセージ
３１１ａ  データ読み取り
３１１ｂ  データ書き込み
３１２  完了応答メッセージ
３１３  確認応答
３２１  データ読み取りメッセージ
３２２  応答メッセージ
３２２ａ  データ読み取り
３２２ｂ  データ書き込み
３２３  確認応答
３３１、３４１、３５１  メッセージ
３５０  メッセージ特性データ
【図１】
2019106697.tif 000004
【図２】
2019106697.tif 000005
【図３】
2019106697.tif 000006
【図４Ａ】
2019106697.tif 000007
【図４Ｂ】
2019106697.tif 000008
【図４Ｃ】
2019106697.tif 000009
【図４Ｄ】
2019106697.tif 000010
【図５】
2019106697.tif 000011
【図６】
2019106697.tif 000012
【図７】
2019106697.tif 000013
【図８】
2019106697.tif 000014
【外国語明細書】
2019106697000001.pdf