(57)【要約】【課題】  エンベロープの再送信の数を減らすこと。【解決手段】  本発明は、エンベロープを送信し、エンベロープを返信するためのものである。送信器は、エンベロープを送信するように構成される。受信器が送信器に結合され、このとき受信器は、エンベロープを受信して、返信エンベロープを生成するように構成される。送信バッファが送信器に結合される。受信バッファが受信器に結合される。再試行タイマーが送信器に結合され、このとき再試行タイマーは、送信エンベロープと互いに関連している返信エンベロープを受け取ったときにリセットするように構成される。送信器は、該送信器が再試行タイマーによって定められる選択された時間内に対応する返信エンベロープを受信しない場合には、エンベロープを再送信するように構成される。このことにより、送信器と受信器との両方から送信されたエンベロープの総数が減少する。【選択図】      図１
2006087124.tif 000002
【特許請求の範囲】
【請求項１】
エンベロープを送信し、エンベロープを返信するためのシステムであって、
エンベロープを送信するように構成された送信器と、
前記送信器に結合され、エンベロープを受信して返信エンベロープを生成するように構成された受信器と、
前記送信器に結合された送信バッファと、
前記送信器に結合され、送信エンベロープに互いに関連している返信エンベロープの受け取りに基づいてタイマーがリセットされるように構成された再試行機構と、
を含み、前記送信器は、該送信器が前記再試行タイマーによって定められる選択された時間内に対応する返信エンベロープを受信しない場合には、エンベロープを再送信するように構成された、システム。
【請求項２】
前記再試行機構がタイマーを含む、請求項１に記載の再試行機構。
【請求項３】
前記送信エンベロープが周期的冗長検査（ＣＲＣ）を含む、請求項１に記載のシステム。
【請求項４】
前記送信エンベロープがエンベロープ順番番号を含む、請求項１に記載のシステム。
【請求項５】
前記返信エンベロープが、返信エンベロープ順番番号を含む、請求項１に記載のシステム。
【請求項６】
前記エンベロープが４つの物理層グループ（ＰＬＧ）を含む、請求項１に記載のシステム。
【請求項７】
前記４つの物理グループの１つがデータＰＬＧを含む、請求項６に記載のシステム。
【請求項８】
前記４つの物理グループの１つがヌルＰＬＧを含む、請求項６に記載のシステム。
【請求項９】
前記４つの物理グループの１つがコマンドＰＬＧを含む、請求項６に記載のシステム。
【請求項１０】
前記返信エンベロープが全てのヌルＰＬＧを含む、請求項１に記載のシステム。
【請求項１１】
前記送信器が選択された時間内に対応する返信エンベロープを受信しない場合には、前記送信器はエンベロープを再送信するように構成された、請求項２に記載のシステム。
【請求項１２】
前記受信器が、受信バッファのオーバーフロー状態を示す返信エンベロープを送信するように構成された、請求項１に記載のシステム。
【請求項１３】
送信ループにおける帯域幅は、返信ループにおける帯域幅とは異なる、請求項１に記載のシステム。
【請求項１４】
前記受信器に結合された受信バッファをさらに含む、請求項１に記載のシステム。
【請求項１５】
発行されたコマンド・ナンバーを制御するためにクレジットが用いられる、請求項１に記載のシステム。
【請求項１６】
前記クレジットはさらに、再試行の閾値レベルを回避するために用いられる、請求項１５に記載のシステム。
【請求項１７】
前記クレジットは、前記受信器において前記物理バッファ限界を越えて過配分され、それにより実質的に全帯域幅を維持する、請求項１６に記載のシステム。
【請求項１８】
エンベロープが廃棄されたかどうかを示す少なくとも１つのインジケータ・ビットをさらに含む、請求項１７に記載のシステム。
【請求項１９】
前記インジケータ・ビットが、前記受信器におけるバッファリング・スペースの欠如のためにエンベロープが廃棄されたことをさらに示す、請求項１８に記載のシステム。
【請求項２０】
エンベロープを送信する方法であって、
エンベロープ・インジケータ・ナンバーを生成するステップと、
前記エンベロープ・インジケータ・ナンバーをもつエンベロープを送信するステップと、
送信キューに前記エンベロープのコピーをおくステップと、
前記エンベロープを受信するステップと、
受信器においてエラー状態が発生するかどうかを判断するステップと、
前記受信器においてエラー状態が発生したかどうかを示す返信エンベロープを生成するステップと、
を含み、前記返信エンベロープは、前記受信したエンベロープ・インジケータ・ナンバーと互いに関連している返信エンベロープ・インジケータ・ナンバーをさらに含み、
前記返信エンベロープが選択された時間内に受信された場合には、前記送信キューから前記エンベロープのコピーを削除するステップと、
を含む、方法。
【請求項２１】
前記返信エンベロープが選択された時間内に受信されなかった場合には、前記エンベロープのコピーを送信することをさらに含む、請求項２０に記載の方法。
【請求項２２】
再送信エンベロープの次に高いエンベロープ・インジケータ・ナンバーをもつエンベロープを再送信することをさらに含む、請求項２０に記載の方法。
【請求項２３】
送信された各エンベロープについてのエンベロープ・ナンバーを歩進させることをさらに含む、請求項２０に記載の方法。
【請求項２４】
コンピュータにエンベロープの送信方法を実行させるためのコンピュータ・プログラムであって、前記方法は、
エンベロープ・インジケータ・ナンバーを生成するステップと、
前記エンベロープ・インジケータ・ナンバーをもつエンベロープを送信するステップと、
前記エンベロープのコピーを送信キューにおくステップと、
前記エンベロープを受信するステップと、
受信器においてエラー状態が発生したかどうかを判断するステップと、
前記受信器においてエラー状態が発生したかどうかを示すものであって、前記受信したエンベロープ・インジケータ・ナンバーと互いに関連している返信エンベロープ・インジケータ・ナンバーをさらに含む返信エンベロープを生成するステップと、
前記返信エンベロープが選択された時間内に受信された場合には、前記送信キューから前記エンベロープのコピーを削除するステップと、
を含むコンピュータ・プログラム。
【請求項２５】
コンピュータをエンベロープ送信システムとして機能させるためのコンピュータ・プログラムであって、前記コンピュータに、
エンベロープ・インジケータ・ナンバーを生成する機能と、
前記エンベロープ・インジケータ・ナンバーをもつエンベロープを送信する機能と、
前記エンベロープのコピーを送信キューにおく機能と、
前記エンベロープを受信する機能と、
受信器においてエラー状態が発生したかどうかを判断する機能と、
前記受信器においてエラー状態が発生したかどうかを示すものであって、前記受信したエンベロープ・インジケータ・ナンバーと互いに関連している返信エンベロープ・インジケータ・ナンバーをさらに含む返信エンベロープを生成する機能と、
前記返信エンベロープが選択された時間内に受信された場合には、前記送信キューから前記エンベロープのコピーを削除する機能と、
を実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、エンベロープ配信に関し、より詳細には、エンベロープの再送信の数を減らすことに関する。
【背景技術】
【０００２】
多くのネットワーク技術においては、種々の形態のパケット受取確認及びリカバリー・システムが用いられている。幾つかのネットワーク技術は、コンピュータ・ゲームといったグラフィック・システムにおいて見られるような非常に高い帯域幅と短い待ち時間を有するべきである。こうしたネットワーク・プロトコルの１つは、Ｉｎｆｉｎｉｂａｎｄ（登録商標）である。
【０００３】
しかしながら、従来のネットワーク・プロトコルには、関連する欠点が存在する。例えば、より多くのデータ・ストリームが比例的にオーバーヘッドに割当てられるのに伴って、大量のオーバーヘッドが用いられ、帯域幅を減少させることになる。さらに、データの送信を再試行するのにかかる時間の量が増加するのに伴って、待ち時間が容認できないほど多くなることがある。さらに、エラー訂正コード（ＥＣＣ）のようなエラー訂正アルゴリズムは、過多の情報が、ヘッダにおいて送信されるか、もしくはデータ又はコマンドの本体に付加され又は添付されることを要求する場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、従来のデータ伝達手段における少なくとも幾つかの懸念に対処して情報を伝達する必要がある。
【課題を解決するための手段】
【０００５】
本発明は、エンベロープを送信し、エンベロープを返信するためのものである。送信器は、エンベロープを送信するように構成される。受信器が送信器に結合され、この受信器は、エンベロープを受信して、返信エンベロープを生成するように構成される。送信バッファが送信器に結合される。受信バッファが受信器に結合される。再試行タイマーが送信器に結合され、このとき再試行タイマーは、送信エンベロープと互いに関連している返信エンベロープを受け取ったときにリセットするように構成される。送信器は、該送信器が再試行タイマーによって定められるような選択された時間内に対応する返信エンベロープを受信しない場合には、エンベロープを再送信するように構成される。
【０００６】
本発明及びその利点のより完全な理解のために、付属の図面と併せて、以下の詳細な説明についての参照がなされる。
【発明を実施するための最良の形態】
【０００７】
以下の説明においては、本発明の十分な理解を与えるために、多くの特定の詳細が記載される。しかしながら、当業者であれば、本発明は、こうした特定の詳細なしでも実施できることを認識するであろう。他の場合には、本発明が不必要に細かくて不明瞭にならないように、周知の要素は概略図か又はブロック図の形態で図示される。さらに、ほとんどの部分では、ネットワーク通信、電磁シグナリング技術などに関する詳細は、こうした詳細が本発明の完全な理解を得るのに必要不可欠なものであるとは考えられず、また当該技術分野における当業者の理解の範囲内であると考えられるため、省略されている。
【０００８】
この詳細な説明の残りの部分においては、処理ユニット（ＰＵ）は、デバイスにおける唯一の計算プロセッサとすることができる。こうした場合には、ＰＵは、典型的には、ＭＰＵ（メイン処理ユニット）と呼ばれる。処理ユニットはまた、所与の計算デバイスのために開発された幾つかの方法又はアルゴリズムに従って計算上の負荷を共有する多くの処理ユニットの１つとすることができる。この詳細な説明の残りの部分においては、特に指定のない限り、ＭＰＵがデバイスにおける唯一の計算要素であろうと、ＭＰＵが他のＭＰＵと計算要素を共用するのであろうと、プロセッサへの全ての言及は、ＭＰＵという用語を用いる。
【０００９】
特に指定のない限り、ここで説明される全ての機能は、ハードウェアか又はソフトウェアのいずれか、又はその組み合わせにおいて実行できることにさらに留意されたい。しかしながら、好ましい実施形態においては、この機能は、コンピュータ・プログラム・コードといったコード、ソフトウェア及び／又はこうした機能を実行するようにコード化された集積回路に従って、コンピュータ又は電子データ・プロセッサといったプロセッサによって実行される。
【００１０】
ここで図１に移ると、エンベロープ生成・受取システム１００が開示される。一般に、このシステム１００は、生成される受取通知の数を減少させることによって、データ伝達におけるオーバーヘッドの量を減少させる。トランシーバＢ１２０のような受信器は、受信器１２０によって適切に受信されたときのパケット「エンベロープ」のみを受取通知する。一般に、エンベロープは、通常は、コマンド、データ、及びプロトコル制御（順番番号、データフロー・クレッジットなど）を含む情報のパケットである。一般に、エンベロープという用語は、「エンベロープ・パケット」のことを言うのに用いられ、それは典型的には、２つのデバイス間の配信を保証する手段に関連するエラー検出機構によって公知のパケット・サイズにグループ化され、カプセル化された情報のコレクションである。ネットワーク上の情報の適切な配信を保証するために、ＣＲＣもまた、エンベロープ情報に組み込まれる。
【００１１】
受信器１２０の外部で生じるエラー状態が存在する場合には、受信器によって受取通知は生成されない。代わりに、受信器は、単に休止し、これ以上データを処理しない。その一方で、送信側は、エンベロープの正常な受取の確認を待っている。所与の時間の経過後に確認が来ない場合には、受取通知されていない第１エンベロープが再送信される。受取通知自体は、さらなる情報のエンベロープを含むことができる。
【００１２】
システム１００においては、トランシーバＡ１１０は、数十ギガバイト／秒の高速リンク１３０を介してトランシーバＢ１２０に結合される。トランシーバＡ１１０は、トランシーバＢ１２０に送信するための「エンベロープ」を生成する。システム１００においては、各エンベロープは、４つの物理層グループ（ＰＬＧ）を含む。一般に、ＰＬＧは、後述されるように、特定の所定の基準を満たす個別の情報のパケットとして定めることができる。しかしながら、エンベロープの他の実施形態は、他の数のＰＬＧ又は他の情報を有することができる。複数のＰＬＧが互いに付加されて「エンベロープ」を形成する。
【００１３】
各エンベロープは、その中に「エンベロープ順番番号」（ＥＳＮ）を有する。ＥＳＮは、通常は、エンベロープがトランシーバＡ１１０から最初に送信されたときに該エンベロープに割当てられた順番番号と定義することができる。第１エンベロープは、ＥＳＮ０を有することができ、第２エンベロープはＥＳＮ１を有することができ、以下同様である。また、各エンベロープがトランシーバＡ１１０から送信されるのに伴って、ＥＳＮを含むエンベロープのコピーが送信バッファ１１５に保存される。
【００１４】
次いで、パケットは、典型的にはデータリンク１３０を介してトランシーバＢ１２０に伝達され、該パケットは受信バッファ１２５内におかれる。次いで、トランシーバＢは、ＣＲＣチェッカー１２２により、そのデータに対してＣＲＣチェックを行う。エンベロープがＣＲＣチェックをパスした場合には、トランシーバＢは、該エンベロープのＥＳＮフィールドをチェックし、正常に受信された最後のエンベロープの次の順番のＥＳＮとマッチする場合には、そのパケットは受信バッファ１２５に確保される。そうでない場合には、そのパケットは廃棄され、受信器は、まるでまだパケットが到着していないかのように、前の状態に戻る。両方のチェックが成功した場合には、受信したエンベロープから送信側にＥＳＮを戻すことによってエンベロープの受取を受取通知する「返信エンベロープ」が送信される。例えば、ＣＲＣ及びＥＳＮチェックによってＥＳＮ３のエンベロープが検証された場合には、トランシーバＢ１２０は、エンベロープが正常に受信されたことを示すために、リターンＥＳＮ（ＲＥＳＮ）ナンバー３のエンベロープをトランシーバＡに送り返す。返信エンベロープ自体はまた、トランシーバＡ１１０に送信されるべき他の情報を有することができ、それ自体は受取通知される必要がある。
【００１５】
幾つかの実施形態においては、エンベロープは、トランシーバＢ１２０がトランシーバＡに送信するべき他の情報を有する。したがって、４つのＰＬＧの少なくとも１つは、データ・タイプ、命令タイプなどに関するものとなる。しかしながら、トランシーバＢ１２０が、エンベロープがＣＲＣ及びＥＳＮチェックをパスしたということ以外のトランシーバＡ１１０に送信されるべき情報をもたない場合には、そのＲＥＳＮをもつヌル・エンベロープと、そのＲＥＳＮ値が有効であることを示すＲＥＳＮビット以外にそのパケットにあるものは何もない。
【００１６】
さらに別の実施形態においては、トランシーバＢ１２０は、リターン・エンベロープのＲＥＳＮを合体させる。これは、以下のようにして起こる。送信帯域幅１３０に比べてリターン帯域幅１４０が小さいといった実施上の変化のために、パス１４０が各エンベロープについてのＲＥＳＮエンベロープをサポートできなくなることがある。そのため、新しいＲＥＳＮを含んでいるリターン・エンベロープは、幾つかのエンベロープが受信されるまで送信されないことがある。この状態を考慮に入れるために、トランシーバＢ１２０は、適切に受信された最後のエンベロープのＥＳＮを常に戻すことになる（すなわち、良好なＣＲＣを有し、それは次の順番のＥＳＮであり、受信バッファスペースが利用可能であった）。
【００１７】
リターン・エンベロープを形成する前にトランシーバＢ１２０によって幾つかのエンベロープが受信されるということが起こった場合には、送り返されてトランシーバＡ１１０によって受信されたＲＥＳＮは、トランシーバＡ１１０によって見られる最後のＲＥＳＮからの順番的歩進とはならない。むしろ、トランシーバＡ１１０からトランシーバＢ１２０に送信される幾つかのエンベロープの受取通知がスキップされるように見える。この場合には、トランシーバＡ１１０は、受信したＲＥＳＮを、それまでに受信した前のＲＥＳＮからの及び新たに受信したＲＥＳＮを含む全ての送信されたエンベロープの受取通知として処理することになる。例えば、リンク１３０の帯域幅がリンク１４０の帯域幅より４倍大きい場合には、トランシーバＢ１２０がリターン・エンベロープを形成している間に、トランシーバＡ１１０がＥＳＮ３、４、５及び６のエンベロープを正常に送信することがある。トランシーバＢ１２０は、最後に戻したのがＲＥＳＮ＝２であっても、時折先にＲＥＳＮ＝６を戻すことになる。トランシーバＡ１１０は、ＲＥＳＮ＝６を見たときに、ＲＥＳＮ３、４及び５を明示的に受信していなくても、ＥＳＮ３、４、５及び６のエンベロープが適切に送信されたとみなす。この機構は、「合体」として知られている。
【００１８】
トランシーバＡ１１０がエンベロープを送信するときには、そのエンベロープのコピーが送信バッファ１１５におかれる。次いで、トランシーバＡ１１０は、次のエンベロープを送信し、該次のエンベロープを送信バッファ１１５におく。各エンベロープは、それ独自の識別順番ＥＳＮを有する。いずれにしても、トランシーバＡ１１０は、一定の時間内に所与のパケットについての対応するＲＥＳＮを受信したかどうかを判断するために、タイマー１１７を用いる。トランシーバＡ１１０が、送信されたＥＳＮに対応するＲＥＳＮを所与の時間内に受信した場合には、そのエンベロープはトランシーバＢ１２０によって受信されたと判断され、そのエンベロープの複製は送信バッファから削除される。しかしながら、対応するＲＥＳＮが所与の時間内に受信されなかった場合には、トランシーバＡ１１０は、トランシーバＢ１２０によって受取通知されなかったエンベロープを再送信し、送信バッファ１１５内のこのエンベロープより後の全てのエンベロープを再送信する。
【００１９】
この手法の利点は、正常な伝達の受取通知のみが生成されるので、トランシーバＡ１１０とトランシーバＢ１２０との間で送信される受取通知の量が最小となることである。システム１００においては、ヌル・エンベロープが生成される場合には、それ以上のエンベロープについて受取通知はなされない。非ヌルである少なくとも１つのＰＬＧを含むエンベロープのみが、それらの独自のＲＥＳＮを有することになる。例えば、少なくとも１つの非ヌルＰＬＧと共にトランシーバＢ１２０からトランシーバＡ１１０に送信されるＲＥＳＮをもつエンベロープは、同時に、送信器として働くトランシーバＢ１２０から受信器として働くトランシーバＡ１１０に送られる独自のＥＳＮを有する新しいエンベロープである。
【００２０】
典型的には、システム１００においては、エンベロープ順番番号（ＥＳＮ）は、最大値１２７が用いられた後にＥＳＮが通常はゼロに折り返すことを除いて、全てのＥＳＮ範囲（０から１２７）にわたる昇順で新しい非ヌル・エンベロープに割当てられる。ヌル・エンベロープについてのＥＳＮはゼロとされる、すなわちヌル・エンベロープとして送信された最後のＥＳＮの値は、再送信するために保存されない。
【００２１】
一実施形態においては、トランシーバＡ１１０は、送信バッファにおける第１エンベロープから離れている６４エンベロープより多いＥＳＮ値をもつ新しいエンベロープを送信しない。これは、エラーが起こった後の順番の続きであるＥＳＮと、タイムアウトの後の再送信の始まりとを区別して、受信器における混乱を避けるためである。したがって、以下の１つが真である場合に、値「Ｃ」のＥＳＮをもつ新しいエンベロープのみを送信することができる（以下の表現は、モジュロ算術を使用しない）［これは、０−１２７の範囲のＥＳＮ及びＲＥＳＮについてのみ真である］。
Ｃ＞最後のＲＥＳＮ及びＣ＜（最後のＲＥＳＮ＋６５）又は、
Ｃ＜最後のＲＥＳＮ及びＣ＜（最後のＲＥＳＮ−６３）［折り返し状態］
【００２２】
エンベロープが送信される際に、ＲＥＳＮ、ＲＥＳＮ＿ｖａｌｉｄ、周期的冗長検査（ＣＲＣ）、及びＥＮＶ＿Ｒｅｔｒｙビットを除外する各非ヌル・エンベロープは、エラーの場合における再送信のために、送信バッファ１１５のようなＦＩＦＯエンベロープ再試行バッファにおかれる。エンベロープ開始識別ビット及びエンベロープにおける予約済みビットは、随意的には、エンベロープ再試行バッファにおくことができる。
【００２３】
エラー検出においては、トランシーバＡ１１０によって非ヌル・エンベロープが送信され、タイマーが既に作動していないときに、プログラム可能なＲＥＳＮタイマー１１７をスタートすることができる。ＲＥＳＮタイマー１１７が再スタートされるときにはいつでも、その最初の実施形態に依存する値と共に最初にリロードされる。タイミング値の方法及び範囲は、実施形態に依存するものであるが、ＥＳＮからＲＥＳＮへのリンクの最大往復時間をカバーするのに十分なだけ大きくすべきである。
【００２４】
ＲＥＳＮは、ＲＥＳＮ有効ビットが設定されたときに、順番的に有効なＲＥＳＮとして定められ、ＲＥＳＮ値は、受信された最後の順番的に有効なＲＥＳＮより順番的に後であり、該ＲＥＳＮを含んでいるエンベロープは正しいＣＲＣを有する。トランシーバＡ１１０によって順番的に有効なＲＥＳＮが受信されたときには、ＲＥＳＮタイマー１１７がリセットされ、受信したＲＥＳＮ値に等しいＥＳＮをもつエンベロープを含むそれまでのエンベロープは、受取通知されたとみなされ、送信バッファ１１５のようなエンベロープ再試行バッファから除去される。このプロセスは、リタイヤと呼ぶことができる。エンベロープ再試行バッファに何らかのエンベロープが残っている場合には、ＲＥＳＮタイマー１１７が再スタートされる。そうでない場合には、ＲＥＳＮタイマーは、新しい非ヌル・エンベロープが送信されるまで停止される。システム１００においては、ＥＮＶ＿Ｒｅｔｒｙビットが１に等しい場合には、以下の再試行シーケンスも適用される。
【００２５】
ＲＥＳＮタイマー１１７が時間切れになり、トランシーバＡ１１０がＲｅｔｒｙ＿Ｆｕｌｌシーケンスにない場合には、トランシーバＡ１１０は、現在のエンベロープの送信を完了する。これは、ＣＲＣチェックがエラーを検出しなかった、部分的に送信されたエンベロープについての多くの誤ったビットを有することを回避するためになされる。トランシーバＡ１１０は、再試行カウンタを歩進する。再試行カウンタが実施形態に依存する閾値を超えた場合には、リンクが止められ、ソフトウェア又はファームウェアが通知される。通知方法は、実施形態に依存する。さらに別の実施形態においては、リンクを再スタートすることができる。成功した場合には、通常の動作を続けることができる。再試行カウンタは、ソフトウェアによって周期的にリセットして、エラー率（すなわち、時間の経過に伴うエラーの数）を与えることができる。
【００２６】
再試行カウンタが閾値を超えない場合には、トランシーバは、以下のように進める。トランシーバＡ１１０は、最小で７２のアイドル文字を送信することによってネットワークをクリアする。７２のアイドル文字の値は、エンベロープのサイズが７２バイトに固定されている特定の実施形態に依存している。要求されるのは、送信されるアイドル文字の数が、送信可能な最大のエンベロープより多いか又はそれに等しいことである。１つの物理リンクあたり７２のアイドルではなく、全部で少なくとも７２のアイドル文字が送信される。アイドルが、あらゆる８ビットの物理リンク上に送信されるときには、アイドルはまた、同じデータリンクのために用いられる、その他のあらゆる８ビットの物理リンクに対しても同時に送信されることができる。エンベロープ（４サイクル×１８バイト）が、より狭い物理リンクに送信され、より多いサイクル（すなわち、２４サイクル×３バイト）にわたって分散される場合には、エンベロープのサイズのアイドルが、第１エンベロープを再送信する前に送信されて、受信器におけるあらゆる再配列論理がフラッシュされる。ビットエラーは、エンベロープの開始を誤って検出する再配列論理を生じさせるので、エンベロープと同じくらい大きいか又はそれより大きいアイドルのストリームを用いて、あらゆる誤った形式のエンベロープを受信器論理の外にフラッシュし、第１の再送信されたエンベロープのスタートを適切に検出できるようにする。トランシーバＡ１１０は、前に送信されたのと同じ順序で、エンベロープ再試行バッファ１１５におけるエンベロープの再送信を開始し、ＲＥＳＮタイマー１１７が再スタートされる。このプロセスはＲｅｔｒｙと呼ばれる。
【００２７】
Ｒｅｔｒｙ又はＲｅｔｒｙ＿Ｆｕｌｌシーケンスの間に、再試行状態のためアイドル文字を送信している間に順番的に有効なＲＥＳＮが受信される場合には、トランシーバＡ１１０は、アイドルの送信を止め、再試行が起こらなかったかのように新しいエンベロープの送信を開始することができる。再試行状態のときにエンベロープが再送信されている間に順番的に有効なＲＥＳＮがトランシーバＡ１１０によって受信される場合には、トランシーバＡ１１０は、対応するエンベロープを除去し、送信バッファ１１５のようなエンベロープ再試行バッファにおけるあらゆる残りのエンベロープを再送信し続ける。
【００２８】
トランシーバＡ１１０がエンベロープを再送信している間にＲＥＳＮが受信される場合には、２つの選択肢が存在する。トランシーバＡ１１０は、送信バッファにおける全てのエンベロープを再送信し続けることができ、又は、現在のエンベロープの送信が完了すると、受信したＲＥＳＮに順番的に後続するエンベロープに進むことができる。その後の新しいエンベロープはまた、エンベロープ再試行バッファ１１５にこれらのエンベロープのためのスペースが存在する場合に送信されることになる。非ヌル・エンベロープが送信されるときにプログラム可能なＲＥＳＮタイマー１１７がスタートされるという、エラー検出に関係するルールが依然として適用される。
【００２９】
トランシーバがＥＮＶ＿Ｒｅｔｒｙビットを見る場合には、それは、送信の間にビットエラーを見ることとは対照的に、ＰＬＧペイロードをおくスペースがないため受信器がエンベロープを落とすことを意味する。これを、壊れたエンベロープからもたらされるのと区別することにより、再試行送信に先立つリンク・アイドルがスキップされるので、再試行の待ち時間を短くすることができる。トランシーバが、正しいＣＲＣと、１に等しいＥＮＶ＿Ｒｅｔｒｙビットをもつエンベロープを受信するときには、該トランシーバは、いわゆるＲｅｔｒｙ＿Ｆｕｌｌシーケンスと呼ばれるものを入力することになる。トランシーバＡ１１０は、現在のエンベロープの送信を完了することになる。トランシーバＡ１１０が、ＲＥＳＮタイマー１１７が時間切れになるのを待つか、又はＲｅｔｒｙ＿Ｆｕｌｌシーケンスの開始時にＲＥＳＮタイマーを止めるかどうかは、実施形態に依存する。トランシーバＡ１１０が、少なくとも７２のアイドル文字を送信することによってネットワークをクリアするかどうかも、実施形態に依存する。トランシーバＡ１１０は、Ｒｅｔｒｙ指示セットを有するエンベロープのＲＥＳＮフィールドにおいて受信された値の後の、シーケンスにおける次のＥＳＮを有するエンベロープで始まる再送信を開始する。物理的リンクエラーが起こらなかったために、再試行カウンタは、この再送信の結果として歩進されない。
【００３０】
エンベロープ再試行バッファ１１５における最後のエンベロープが再送信された後に、ＲＥＳＮタイマー１１７が、止まっていた場合にはリロードされ、再スタートされる。ＲＥＳＮが順番的に有効なＲＥＳＮである場合、及び順番的に有効なＲＥＳＮが受信されるときには、ＲＥＳＮタイマー１１７がリセットされ、受信したＲＥＳＮ値に等しいＥＳＮを有するエンベロープを含む、それまでのエンベロープは、受取通知されたとみなされ、再試行／送信バッファ１１５から除去される。
【００３１】
Ｒｅｔｒｙ＿Ｆｕｌｌシーケンスの間に、順番的に有効なＲＥＳＮを有するエンベロープの受取によって別の再送信をもたらすことができ、又はＲｅｔｒｙ＿Ｆｕｌｌシーケンスの開始時にエンベロープ再試行バッファ１１５にあった幾つかのエンベロープが再送信されるのを防止することができる。これは、Ｒｅｔｒｙ＿Ｆｕｌｌシーケンスの間に、正しいＣＲＣと１に等しいＥＮＶ＿Ｒｅｔｒｙビットを有するエンベロープの受取によって、Ｒｅｔｒｙ＿Ｆｕｌｌシーケンスが再スタートされる場合に起こることになる。
【００３２】
初期化された直後に、受信器として働くトランシーバＢ１２０は、エンベロープにおいて０に設定されたＲＥＳＮ有効ビットを有し、正しいＣＲＣと０に等しいＥＳＮを有する非ヌル・エンベロープを受信するまで送信する。以下のルールは、こうしたエンベロープが受信された後にのみ適用される。
【００３３】
受信器として働くトランシーバＢ１２０は、「最後の良好なＥＳＮ」と呼ばれる値を追跡し、それは、受信バッファ１２５にエンベロープのための余地があったときに受信された最後の良好な非ヌル・エンベロープに対応する。ヌル・エンベロープ以外では、次のエンベロープの期待されるＥＳＮは、（（（最後の良好なＥＳＮ）＋１）モジュロ１２８）に等しい。トランシーバＢ１２０は、受信された各エンベロープについてＣＲＣをチェックする。
【００３４】
エンベロープＣＲＣが正しくない場合には、以下が適用される、すなわちエンベロープが廃棄される。このエンベロープについては、ＲＥＳＮは送信器に戻されない。最後の良好なＥＳＮは変化しない。
【００３５】
受信したエンベロープが正しいＣＲＣを有し、それがヌル・エンベロープである場合には、以下が適用される。エンベロープは良好と考えられるが、ＲＥＳＮフィールド、ＲＥＳＮ＿ｖａｌｉｄビット、及びＥＮＶ＿Ｒｅｔｒｙビットが送信ルールに定められるように正常に処理されることを除いて、エンベロープは廃棄される。このエンベロープについては、ＲＥＳＮは送信器１１０に戻されない。最終的には、最後の良好なＥＳＮは変化しない。
【００３６】
受信したエンベロープが正しいＣＲＣ及び期待されるＥＳＮを有し、該エンベロープはヌル・エンベロープではないが、受信バッファ１２５がフルではないためにエンベロープ内の全てのペイロードを受信器１２０が処理できない場合には、以下が適用される。ＲＥＳＮフィールド、ＲＥＳＮ＿ｖａｌｉｄビット、及びＥＮＶ＿Ｒｅｔｒｙビットが送信ルールに定められるように正常に処理され、ＰＬＧ３のＥＮＶ＿Ｒｅｔｒｙビットが、送信器１１０への次の送出エンベロープにおいて「１」に設定され、そのエンベロープにおかれたＲＥＳＮが最後の良好なＥＳＮの値を有することを除いて、エンベロープは廃棄される。送出エンベロープがない場合には、最後の良好なＥＳＮ及びＥＮＶ＿Ｒｅｔｒｙビットを戻すためにヌル・エンベロープが用いられる。これは、ＥＮＶ＿Ｒｅｔｒｙビットが「１」に設定される唯一の事象である。言い換えれば、受信バッファがフルであるときにＥＳＮが期待されるＥＳＮとマッチしない他のエンベロープにおいては、ＥＮＶ＿Ｒｅｔｒｙビットは「１」に設定されない。最終的には、最後の良好なＥＳＮは変化しない。
【００３７】
ＣＲＣ及びＥＳＮの両方が正しく、エンベロープはヌル・エンベロープではなく、受信バッファ１２５にはデータを受信するための余地がある場合には、以下が適用される。エンベロープは良好であると考えられ、エンベロープのコンテンツはそのトランスポート層に転送される。最終的には、最後の良好なＥＳＮが歩進される（１２７からゼロに折り返される）。
【００３８】
ここで図２に移ると、参照番号２００は、全体として、トランシーバＡ１１０（「送信器」）からトランシーバＢ１２０（「受信器」）への流れ図を示す。フロー２１０においては、ＥＳＮ０のエンベロープが受信器に送られる。また、ＲＥＳＮを受信するためのタイマーが、送信器によって設定される。ＥＳＮパケットは、受信器によって受信され、０のＲＥＳＮが送信器に送り返される。しかしながら、送信には別個の時間がかかる。その間に、送信器は、フロー２２０において受信器にＥＳＮ１のエンベロープを送信する。次いで、フロー２２０と２３０との間で、ＥＳＮ０についてのＲＥＳＮが受信され、それによりタイマーがＥＳＮ１について再スタートされる。フロー２３０においては、送信器がエンベロープ２を送信する。しかしながら、これは、受信器においては受信されない。フロー２３０と２４０との間で、エンベロープ１についてのＲＥＳＮが受信され、そのためタイマーは再び再スタートされる。
【００３９】
フロー２４０において、送信器は、ＥＳＮ３のエンベロープを送信する。しかしながら、受信した最後の良好なエンベロープのＥＳＮナンバー、ＥＳＮ１が、ＥＳＮ３である次の受信した良好なパケットに対して連続していないので、これは無視される。したがって、受信器は、ＣＲＣチェックに従って判断される際にそれが壊れているかどうかに関係なしに、ＥＳＮ３パケットを無視する。同様に、フロー２５０において、送信器は、ＥＳＮ４を送信し続ける。
【００４０】
しかしながら、フロー２５０の後に、ＥＳＮ２についてのＲＥＳＮタイマーが時間切れになる。タイマーが時間切れになると、種々のバッファがフラッシュされるまで送信器がアイドルになる２６０。システム１００においては、これは７２のアイドルである。受信器がエンベロープのスタートを正しく検出しなかったために（エンベロープ・スタート・インジケータにおけるエラーのために）送信エラーが起こる場合には、受信器は、エンベロープ境界と同期しないことがある。７２のアイドルは、受信器にあらゆる誤った形式のエンベロープをフラッシュさせて、再試行されたエンベロープが受信器に到着したときに、誤った形式のエンベロープがエンベロープ境界の外にあることを保証する。
【００４１】
次いで、フロー２７０において、送信器は、別のデータ・エンベロープ２を受信器に再送信する。次いで、受信器は、受取通知を送信する。データフロー２８０において、送信器は、エンベロープ３を受信器に送信し、それは受取通知される。その間、フロー２８０の後に、２の受取通知ＲＥＳＮが送信器によって受信される。したがって、ＥＳＮ２は、送信バッファ１１５から取り出される。フロー２９０において、ＥＳＮ４が送信器によって受信器に送信される。その間、ＲＥＳＮ３が送信器によって受信され、それによりＥＳＮ３が送信バッファ１１５から削除される。
【００４２】
ここで図３−図４に移ると、情報エンベロープの一実施形態が図示されている。このエンベロープは、４つの異なる物理層グループ（ＰＬＧ）を有する。ＰＬＧは、種々のコンポーネントを有する。例えば、第１ＰＬＧ（ＰＬＧグループ０）においては、ビット０：２及び４：６が存在し、それは、このエンベロープについての７ビットＥＳＮのより低い６ビットを特定する。（ビッグ・エンディアン表記、ビット０は最も有効なビットである）
【００４３】
ＰＬＧグループ０のビット９−１１において、ＰＬＧタイプが示される。タイプは、ヌルＰＬＧ、コマンドＰＬＧ、データ・タイプＡ、データ・タイプＢ又は予約済みとすることができる。ビット１２−１４３は、エンベロープの実際のデータ・コンテンツである。
【００４４】
ビット３及び７−８は、エンベロープのスタートを定めるのに用いられるスタート・ビットである。単一のビットエラーが発生する事象においてさえもエンベロープの検出を可能にするために、３つの個別のビット（この実施形態における異なるビットレーン上の）が用いられる。受信器は、３つのスタート・ビットのうち２つが１であるときにエンベロープのスタートを検出する。
【００４５】
幾つかの実施形態においては、エンベロープは、図３−図４に示されるものとは異なるフォーマットでリンクにわたって送信することができ（すなわち、４サイクル×１８バイト、８サイクル×９バイト、１２サイクル×６バイトなど）、そのようにするときには、データの送信エラー（すなわちデータの脱落）が、送信器と受信器の同期を失わせることがある。この場合には、スタート・ビットは、送信器と受信器を再び同期させるために用いられる。
【００４６】
エンベロープの中のＰＬＧグループ１においては、ＥＳＮの最も有効なビットが与えられる。ＰＬＧ１のビット１−７は、ＲＥＳＮナンバーを含む。これは、図２において説明したのと同じＲＥＳＮナンバーである。ビット８は、ＲＥＳＮ＿ｖａｌｉｄフィールドである。ＲＥＳＮ＿ｖａｌｉｄフィールドが設定されない場合には、受信器は、ＰＬＧ１のビット１−７においてＲＥＳＮ値を無視するべきである。
【００４７】
リンクの初期化の間に、送信器は、いずれエンベロープを受信する前に、エンベロープを送信しなければならないことがある。この場合には、「最後の良好なＥＳＮ」は存在しないので、送信器は、ＥＳＮのみをもつエンベロープを送信し、ＲＥＳＮ＿ｖａｌｉｄは非アクティブとなる。ＰＬＧグループ２（図４）においては、ビット１−８は、このエンベロープについてのＣＲＣコードの上位８ビットを支持する。
【００４８】
ＰＬＧ３（図４）においては、ビット１−８は、このエンベロープについてのＣＲＣコードの下位８ビットを支持する。ＰＬＧ３はまた、ビット０におけるＥＮＶ＿Ｒｅｔｒｙビットを有する。
【００４９】
ここで図５に移ると、ＰＬＧコマンドの一形態の１つの実施形態が図示されている。これは、ＰＬＧ０、ＰＬＧ１、ＰＬＧ２など、すなわち各グループの１２：１４３ビットからのデータ領域内で用いることができるデータの一例である。しかしながら、当業者であれば、他のコマンド・フォーマットが本発明の範囲内に包含されることを理解するであろう。
【００５０】
このコマンドは、同期マルチプロセッシング環境、したがってスヌープ識別子、スヌープ応答、転送情報指示において用いられるコマンドに関係するものである。しかしながら、関心ある別の値が存在する。これは、ＰＬＧデータ内のビット０：３についての「Ｃクレジット」値である。
【００５１】
「Ｃクレジット」又はコマンド・クレジットと示されるようなクレジットは、通常は、送信器が送信できる付加的なコマンド・ナンバーとして定義することができる。別個のコマンド及びデータ・クレジットが典型的に用いられる。送信器は、受信器によってサポートされるコマンド（及び／又はデータ）のナンバーのローカル・カウントを保つ。ローカル・カウントは、コマンド（及び／又はデータ）が送信されたときに減分され、付加的なクレジットを含むエンベロープが受信されたときに歩進される。受信器によってサポートされるコマンド及び／又はデータのローカル・カウントは、パワー・オン・リセット（ＰＯＲ）において初期化するか、又は受信器によりクレジットとして送信することができる。いずれの場合においても、ローカル・カウントは、普通は、コマンド・ナンバー及び／又は受信器が受信できるデータより小さいか又はそれに等しい。最良の性能のためには、受信器は、返信コマンド及び／又はデータ・パケットに送り返せるようにするために、十分なコマンド及びデータ・クレジットをサポートしなければならない。クレジット・ナンバーは、帯域幅とリンクの待ち時間の関数である。帯域幅とリンクの待ち時間が増加するのに伴って、受信器におけるバッファリングの量も増加する。ほとんどの場合、受信器のバッファの大部分は、空のままである。エンベロープ再試行ビットを用いることによって、受信器は、利用可能なバッファリングより多くのコマンド及び／又はデータがサポートされることを示すことができる。これは、投機的クレジットと呼ばれる。この場合には、送信器におけるローカル・クレジット・カウンタは、コマンド・ナンバー及び／又は受信器によってサポートされるデータより大きくすることができる。
【００５２】
ここで図６に移ると、タイプＡデータＰＬＧが示されている。タイプＡデータは、２つの部分、すなわち、単一ヘッダ及びｎデータＰＬＧを有する。ヘッダは、サイズ、タグなどといったデータ転送を定める。ヘッダは、タイプＡデータ転送のためのＤタグ、Ｄクレジット及びＤサイズを含む。次のｎＰＬＧは、エラー・インジケータと共に転送するためのデータを含む。転送ナンバー（すなわちｎ）は、ヘッダにおけるＤサイズ・フィールドによって定められる。フルタイプＡデータ・パケットを送信するために多数のエンベロープが要求される。Ｄクレジット・フィールドは、ここで受信することができる付加的なデータパケット・ナンバーを含む。Ｄクレジットは、前のパラグラフで定められたＣクレジットと同様である。
【００５３】
ここで図７及び図８に移ると、タイプＢデータＰＬＧが図示されている。一実施形態においては、タイプＢデータ・パケットは、８つのデータＰＬＧにおいてサイズが固定され、ＰＬＧ間でヘッダ情報が配布されることを除いて、タイプＡデータと同様のものである。タイプＢデータ・パケットを転送するために、最小で２つのエンベロープが要求される。エンベロープの第１ＰＬＧにおいてパケットがスタートしない場合には、３つのエンベロープが要求される。さらに別の実施形態においては、８つのＰＬＧが順番に送信されるという制約は存在しないので、タイプＢデータ転送は、実際には８までのエンベロープを要求する。コマンド又は他の非データＰＬＧは、データＰＬＧ内にインターリーブすることができる。唯一の制約は、データ転送が始まると、前のデータ転送の全てのＰＬＧが送信されるまで別のデータ転送は始まらないことである。
【００５４】
ここで図９に移ると、情報エンベロープを用いることができる１つの環境６００が示されている。図９は、コヒーレント・デバイス６１０及び非コヒーレント・デバイス６４０に結合されたプロセッサ６２０を示す。ブロードバンド・プロセッサ６２０は、メモリ６３０及び６３５を有する。プロセッサ６２０をデバイス６１０及び６４０に結合するリンクは、本発明において述べられたエンベロープ構造を用いる。リンク６１１は、コマンド及びデータ転送におけるコヒーレント実施形態を使用し、一方、リンク６４１は、コマンド及びデータ転送における非コヒーレント実施形態を使用する。
【００５５】
しかしながら、ここで図１０に移ると、情報エンベロープを用いることができる別の環境６５０が示されている。図１０は、別のブロードバンド・プロセッサ６７０にコヒーレントに結合されたブロードバンド・プロセッサ６８０を示す。ブロードバンド・プロセッサ６７０はメモリ６６０及び６６５を有し、ブロードバンド・プロセッサ６８０はメモリ６７３及び６７６を有する。ブロードバンド・プロセッサ６８０は、非コヒーレント・デバイス６９０に結合される。本発明を実施できる２つの個別の環境が存在する。
【００５６】
ここで図１１に移ると、参照番号７００は、全体として、エンベロープを送信するための方法を示す。ステップ７０２において、エンベロープ順番番号が生成される。ステップ７０４において、エンベロープがエンベロープ順番番号と共に送信される。ステップ７０６において、エンベロープのコピーが送信キューにおかれる。ステップ７０８において、エンベロープが受信される。ステップ７１０において、受信器は、エラー状態が発生したかどうかを判断する。ステップ７１２において、返信エンベロープが生成される。ステップ７１２において生成された返信エンベロープは、受信器においてエラー状態が発生するかどうかを示し、受信したエンベロープ順番番号と互いに関連している返信エンベロープ順番番号をさらに含む。
【００５７】
ステップ７１４において、選択された時間内に返信エンベロープが受信されるかどうかについての判断がなされる。返信エンベロープが選択された時間内に受信される場合には、ステップ７１６において、エンベロープのコピーが送信キューから削除される。返信エンベロープが選択された時間内に受信されなかった場合には、ステップ７１８において、エンベロープのコピーが送信される。この方法は、ステップ７２０において、エンベロープ順番番号を歩進させ、エンベロープを再送信することによって続けられる。この方法は、ステップ７２２において、送信された各エンベロープについてのエンベロープ順番番号を歩進させることによって続けられる。
【００５８】
本発明は、多くの形態及び実施形態をとることができることが分かる。したがって、本発明の精神又は範囲から逸脱することなく、上記のことに幾つかの変形を行うことができる。ここで概説された可能性は、種々のプログラミング・モデルの可能性をもたらす。この開示は、何らかの特定のプログラミング・モデルの方が好ましいと理解されるべきではなく、これらのプログラミング・モデルを構築することができる基礎となる機構に向けられたものである。
【００５９】
その特定の好ましい実施形態を参照することによって本発明が説明されたが、開示された実施形態は、本質的に限定的なものではなく例示的なものであり、上記の開示においては広範な変形、修正、変更及び置換が考慮され、幾つかの場合には、他の特徴の対応する使用なしに、本発明の幾つかの特徴を用いることができることに留意されたい。多くのこうした変形及び修正は、上記の好ましい実施形態の説明を見ることに基づいて、当業者によって望ましいと考えられる。したがって、添付の請求項は、広い意味に、本発明の範囲と一致する方法で解釈されるのが適切である。
【図面の簡単な説明】
【００６０】
【図１】送信器から受信器にエンベロープが送信されるシステムを概略的に示す図である。
【図２】送信器から受信器へのエンベロープの流れ図である。
【図３】エンベロープの物理層グループのビット・シーケンスを示す図である。
【図４】エンベロープの物理層グループのビット・シーケンスを示す図である。
【図５】同期システムにおけるＰＬＧコマンドの１つの形態を示す図である。
【図６】「Ａ」型データ・グループの１つの形態を示す図である。
【図７】「Ｂ」型データ・グループの１つの形態を示す図である。
【図８】「Ｂ」型データ・グループの１つの形態を示す図である。
【図９】エンベロープと共に用いるための第１環境を示す図である。
【図１０】エンベロープと共に用いるための第２環境を示す図である。
【図１１】エンベロープを送信するための方法を示す図である。
【符号の説明】
【００６１】
１００：エンベロープ生成・受取システム
１１０：トランシーバ「Ａ」
１１５：送信バッファ
１１７：タイマー
１２０：トランシーバ「Ｂ」
１２２：ＣＲＣチェッカー
１２５：受信バッファ
１３０：リンク
１４０：リンク
【図１】
2006087124.tif 000003
【図２】
2006087124.tif 000004
【図３】
2006087124.tif 000005
【図４】
2006087124.tif 000006
【図５】
2006087124.tif 000007
【図６】
2006087124.tif 000008
【図７】
2006087124.tif 000009
【図８】
2006087124.tif 000010
【図９】
2006087124.tif 000011
【図１０】
2006087124.tif 000012
【図１１】
2006087124.tif 000013