(57)【要約】【課題】システム構成要素間における様々な重要度を有する情報を好適に送信する方法、システム、およびコンピュータプログラム製品を提供すること。【解決手段】第１の優先度のデータおよび第２の優先度のデータを伝送するための方法、システム、およびコンピュータプログラム製品が提供される。第１の優先度のデータおよび第２の優先度のデータは、別個のデータバッファ（１５２、１５４、１５６、１５８、１６０、１６２、１６４）において格納され、第１の優先度のデータは、第２の優先度のデータよりも優先して伝送される。【選択図】図１Ａ
2007174666.tif 000002
【特許請求の範囲】
【請求項１】
ロボット補助式手術システムであって、
命令を実行するように動作可能であるプログラマブルプロセッサと、
該プログラマブルプロセッサに結合される第１のデータバッファであって、該プログラマブルプロセッサは、該命令に応答して、該第１のデータバッファに第１の優先度のデータを転送するように動作可能であり、該第１のデータバッファは、該第１の優先度のデータのみとともに使用される、第１のデータバッファと、
該プログラマブルプロセッサに結合される第２のデータバッファであって、該プログラマブルプロセッサは、該命令に応答して、該第２のデータバッファに第２の優先度のデータを転送するように動作可能であり、該第２のデータバッファは、該第２の優先度のデータのみとともに使用される、第２のデータバッファと、
データリンクと、
該第１および該第２のバッファ、ならびに該データリンクに結合される伝送ロジックであって、該伝送ロジックは、メッセージングプロトコルにしたがって、該データリンクを介して、該第１の優先度のデータを該第２の優先度のデータよりも優先的に伝送するように動作可能である、伝送ロジックと
を備える、ロボット補助式手術システム。
【請求項２】
前記第１の優先度のデータは、ロボットアームの動きを制御するコマンドを含み、前記第２の優先度のデータは、重要度の低い情報およびエラーログ情報のうちの少なくとも一つを含む、請求項１に記載のロボット補助式手術システム。
【請求項３】
前記プログラマブルプロセッサに結合される第３のデータバッファであって、該プログラマブルプロセッサは、前記命令に応答して、該第３のデータバッファに第３の優先度のデータを転送するように動作可能であり、該第３のデータバッファは該第３の優先度のデータのみとともに使用される、第３のデータバッファをさらに備え、
前記第１の優先度のデータは高優先度データであり、前記第２の優先度データは低優先度データであり、および該第３の優先度データは中優先度のデータである、請求項１に記載のロボット補助式手術システム。
【請求項４】
前記メッセージングプロトコルは、前記伝送ロジックが、前記第１のデータバッファからの前記第１の優先度のデータを前記第２のデータバッファからの前記第２の優先度データよりも優先的に伝送することを要求する、請求項３に記載のロボット補助式手術システム。
【請求項５】
前記メッセージングプロトコルは、前記伝送ロジックが、前記第１のデータバッファからの前記第１の優先度のデータを前記第３のデータバッファからの前記第３の優先度データよりも優先的に伝送することをさらに要求する、請求項４に記載のロボット補助式手術システム。
【請求項６】
前記メッセージングプロトコルは、前記伝送ロジックが、前記第３のデータバッファからの前記第３の優先度のデータを前記第２のデータバッファからの前記第２の優先度データよりも優先的に伝送することをさらに要求する、請求項５に記載のロボット補助式手術システム。
【請求項７】
前記第１の優先度のデータを前記第２の優先度のデータよりも優先的に伝送することは、任意の利用可能な第２の優先度のデータ以前に、任意の利用可能な第１の優先度のデータを伝送することを含む、請求項４に記載のロボット補助式手術システム。
【請求項８】
前記第１の優先度のデータを前記第２の優先度のデータよりも優先的に伝送することは、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てることを含む、請求項４に記載のロボット補助式手術システム。
【請求項９】
前記プログラマブルプロセッサは前記伝送ロジックを含む、請求項１に記載のロボット補助式手術システム。
【請求項１０】
複数のノードを含むロボット補助式手術システムを提供することであって、該複数のノードは、データリンクによって、受信ノードに結合される少なくとも一つの伝送ノードを含む、ことと、該伝送ノードにおいて、
第１の優先度のデータおよび第２の優先度のデータを生成することと、
第１のデータバッファに該第１の優先度のデータを配置することであって、該第１のデータバッファは第１の優先度のデータのみとともに使用される、ことと、
第２のデータバッファに該第２の優先度のデータを配置することであって、該第２のデータバッファは第２の優先度のデータのみとともに使用される、ことと、
該データリンクを介して、該第１および該第２のデータバッファから、該第１の優先度のデータおよび該第２の優先度のデータを伝送することであって、該第１の優先度のデータは、該第２の優先度のデータよりも優先的に伝送される、ことと
を包含する、方法。
【請求項１１】
前記伝送ノードにおいて、
第３の優先度のデータを生成することであって、前記第１の優先度のデータは高優先度のデータであり、前記第２の優先度のデータは低優先度のデータであり、前記第３の優先度のデータは中優先度のデータである、ことと、
第３のデータバッファに該第３の優先度のデータを配置することであって、該第３のデータバッファは第３の優先度のデータのみとともに使用される、ことと、
前記データリンクを介して、該第３のデータバッファから該第３の優先度のデータを伝送することであって、該第１の優先度のデータは、該第３の優先度のデータよりも優先的に伝送され、該第３の優先度のデータは、該第２の優先度のデータよりも優先的に伝送される、ことと
をさらに包含する、請求項１０に記載の方法。
【請求項１２】
前記伝送ノードにおいてメッセージングプロトコルを識別することをさらに包含し、前記伝送することは、該メッセージングプロトコルにしたがって優先的に送信することを優先的に含む、請求項１０に記載の方法。
【請求項１３】
前記第２の優先度のデータよりも優先的に前記第１の優先度のデータを伝送することが、任意の利用可能な第２の優先度のデータ以前に任意の利用可能な第１の優先度のデータを伝送することを含む、請求項１０に記載の方法。
【請求項１４】
前記第２の優先度のデータよりも優先的に前記第１の優先度のデータを伝送することが、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てることを含む、請求項１０に記載の方法。
【請求項１５】
前記第１の優先度のデータは、スピードが重視されるメッセージを含む、請求項１０に記載の方法。
【請求項１６】
前記第２の優先度のデータは、重要度の低い地位の情報およびエラーログ情報のうちの少なくとも一つを含む、請求項１０に記載の方法。
【請求項１７】
ロボット補助式手術システムの伝送ノードに含まれるコンピュータ可読媒体上に具体的に実体化されたコンピュータプログラム製品であって、該伝送ノードは、データリンクによって、受信ノードに結合され、該コンピュータ可読媒体は、
第１の優先度のデータおよび第２の優先度のデータを生成する動作と、
第１のデータバッファに該第１の優先度のデータを配置する動作であって、該第１のデータバッファは第１の優先度のデータのみとともに使用される、動作と、
第２のデータバッファに該第２の優先度のデータを配置する動作であって、該第２のデータバッファは第２の優先度のデータのみとともに使用される、動作と、
同一のデータリンクを介して、該第１および該第２のデータバッファから該第１の優先度のデータおよび該第２の優先度のデータを伝送する動作であって、該第１の優先度のデータは該第２の優先度のデータよりも優先的に伝送される、動作と
を、プログラマブルプロセッサに実行させるように動作可能である命令を含んでいる、コンピュータプログラム製品。
【請求項１８】
第３の優先度のデータを生成する動作であって、前記第１の優先度のデータは高優先度のデータであり、前記第２の優先度のデータは低優先度データであり、前記第３の優先度のデータは中優先度のデータである、動作と、
第３のデータバッファに該第３の優先度のデータを配置する動作であって、該第３のデータバッファは第３の優先度のデータのみとともに使用される、動作と、
前記データリンクを介して、該第３のデータバッファから該第３の優先度のデータを伝送する動作であって、該第１の優先度のデータは、該第３の優先度のデータよりも優先的に伝送され、該第３の優先度のデータは、該第２の優先度のデータよりも優先的に伝送される、動作と
を実行するように動作可能である命令をさらに含む、請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
メッセージングプロトコルを識別する動作を実行するように動作可能である命令をさらに含み、前記伝送する動作は、該メッセージングプロトコルにしたがって優先的に送信する動作を含む、請求項１７に記載のコンピュータプログラム製品。
【請求項２０】
前記第２の優先度のデータよりも優先的に前記第１の優先度のデータを伝送する動作が、任意の利用可能な第２の優先度のデータ以前に任意の利用可能な第１の優先度のデータを伝送する動作を含む、請求項１７に記載のコンピュータプログラム製品。
【請求項２１】
前記第２の優先度のデータよりも優先的に前記第１の優先度のデータを伝送する動作が、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てる動作を含む、請求項１７に記載のコンピュータプログラム製品。
【請求項２２】
前記第１の優先度のデータは、スピードが重視されるメッセージを含む、請求項１７に記載のコンピュータプログラム製品。
【請求項２３】
前記第２の優先度のデータは、重要度の低い情報およびエラーログ情報のうちの少なくとも一つを含む、請求項１７に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権の主張）
本出願は、米国特許仮出願第６０／７５３，９９１号（２００５年１２月２２日出願）の利益を主張し、その内容全体は参照により援用される。
【０００２】
本開示は情報システムに関する。
【背景技術】
【０００３】
所定のシステムは、システム構成要素間における様々な重要度を有する情報を送信する。より重要な情報は、処理中、より高い優先度が与えられ得る。従来のロボット補助式手術システムにおいて、例えば、制御信号およびフィードバック信号は、典型的には、処理中、より高い優先度が与えられる。通常のシステム状態メッセージなどの他のタイプの信号は、典型的には、処理中、より低い優先度が与えられる。システムは、典型的には、低優先度信号の遅延に対しては回復が早い（ｒｅｓｉｌｉｅｎｔ）。
【０００４】
ロボット補助式手術システムにおいて使用される一つの従来の通信システムは、数百の経路（例えば、ワイヤ）を用いることにより、手術用の制御コンソールをロボットアームに接続する。数百の経路を使用することにより、予定の時間に特定の信号に対して調整される信号の各タイプに対する専用経路を可能にする。しかしながら、数百の経路を用いることは、システムの設定とメンテナンスとを煩雑にし、すべての経路をルーティングするために相当の余地を必要とする。
【発明の開示】
【課題を解決するための手段】
【０００５】
一局面において、命令を実行するように動作可能であるプログラマブルプロセッサおよびプログラマブルプロセッサに結合される第１のデータバッファを含むシステムが提供される。プログラマブルプロセッサは、命令に応答して、第１の優先度のデータを第１のデータバッファに転送する。第１のデータバッファは、第１の優先度のデータのみとともに使用される。第２のデータバッファは、プログラマブルプロセッサに結合され、プログラマブルプロセッサは、命令に応答して、第２の優先度のデータを第２のデータバッファに転送する。第２のデータバッファは、第２の優先度のデータのみとともに使用される。システムはまた、第１および第２のバッファならびにデータリンクに結合されるデータリンクおよび伝送ロジックを含む。伝送ロジックは、メッセージングプロトコルにしたがって、データリンクを介して、第２の優先度のデータよりも優先して第１の優先度のデータを伝送する。
【０００６】
特定のインプリメンテーションは、以下の特徴の一つ以上を含み得る。第１の優先度のデータはロボットアームの動きを制御するコマンドを含み得、第２の優先度のデータは、重要度の低い情報およびエラーログ情報のうちの少なくとも一つを含み得る。第３のデータバッファはプログラマブルプロセッサに結合され得る。プログラマブルプロセッサは、命令に応答して、第３の優先度のデータを第３のデータバッファに転送し得、第３のデータバッファは、第３の優先度のデータのみとともに使用され得る。第１の優先度のデータは高優先度のデータであり得、第２の優先度のデータは低優先度データであり得、第３の優先度のデータは中優先度のデータであり得る。
【０００７】
メッセージングプロトコルは、伝送ロジックが、第１のデータバッファからの第１の優先度のデータを、第２のデータバッファからの第２の優先度のデータよりも優先して伝送することを要求し得る。メッセージングプロトコルは、伝送ロジックが、第１のデータバッファからの第１の優先度のデータを、第３のデータバッファからの第３の優先度のデータよりも優先して伝送することを要求し得る。メッセージングプロトコルは、伝送ロジックが、第３のデータバッファからの第３の優先度のデータを、第２のデータバッファからの第２の優先度のデータよりも優先して伝送することを要求し得る。第１の優先度のデータを第２の優先度のデータよりも優先して伝送することは、任意の利用可能な第２の優先度のデータ以前に、任意の利用可能な第１の優先度のデータを伝送することを含み得る。第１の優先度のデータを前記第２の優先度のデータよりも優先的に伝送することは、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てることを含み得る。プログラマブルプロセッサは前記伝送ロジックを含み得る。
【０００８】
別の局面において、第１の優先度のデータおよび第２の優先度のデータを生成することを含む方法およびコンピュータプログラム製品が提供される。第１のデータバッファに第１の優先度のデータが配置され、第１のデータバッファは第１の優先度のデータのみとともに使用される。第２のデータバッファに第２の優先度のデータが配置され、第２のデータバッファは第２の優先度のデータのみをとともに使用される。データリンクを介して、第１および第２のデータバッファから、第１の優先度のデータおよび第２の優先度のデータが伝送される。第１の優先度のデータは、第２の優先度のデータよりも優先的に伝送される。
【０００９】
特定のインプリメンテーションは、以下の特徴の一つ以上を含み得る。第３の優先度のデータが生成され得、第１の優先度のデータは高優先度のデータであり、第２の優先度のデータは低優先度データであり、第３の優先度のデータは中優先度のデータである。第３のデータバッファに第３の優先度のデータが配置され得、第３のデータバッファは第３の優先度のデータのみとともに使用され得る。データリンクを介して、第３のデータバッファから第３の優先度のデータが伝送され得る。第１の優先度のデータは、第３の優先度のデータよりも優先的に伝送され得、第３の優先度のデータは、第２の優先度のデータよりも優先的に伝送され得る。メッセージングプロトコルが識別され得、優先的に伝送することは、メッセージングプロトコルにしたがって送信することを優先的に含み得る。第２の優先度のデータよりも優先的に第１の優先度のデータを伝送することが、任意の利用可能な第２の優先度のデータ以前に任意の利用可能な第１の優先度のデータを伝送することを含み得る。第２の優先度のデータよりも優先的に第１の優先度のデータを伝送することが、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てることを含み得る。第１の優先度のデータは、スピードが重視されるメッセージを含み得る。第２の優先度のデータは、重要度の低い情報およびエラーログ情報のうちの少なくとも一つを含み得る。
【００１０】
特定の実施形態は、以下の利点の一つ以上を実現するようにインプリメントされ得る。異なる優先度のレベルに割り当てられたデータの複数の独立したストリームは、ポイントツーポイント・シリアル接続を用いたシステム全体に亘って伝送され得る。同様のメッセージングプロトコルは、そのシステムにおいて、異なるタイプおよび速度を有する複数の通信リンクに対して用いられ得る。
【００１１】
本発明の一つ以上の実施形態の詳細を、添付の図面および以下の記載において説明する。本発明の他の特徴、局面、利点は、本記載、図面、および請求の範囲から明らかになる。
【００１２】
本発明はさらに以下の手段を備える。
【００１３】
（項目１）  
ロボット補助式手術システムであって、
命令を実行するように動作可能であるプログラマブルプロセッサと、
該プログラマブルプロセッサに結合される第１のデータバッファであって、該プログラマブルプロセッサは、該命令に応答して、該第１のデータバッファに第１の優先度のデータを転送するように動作可能であり、該第１のデータバッファは、該第１の優先度のデータのみとともに使用される、第１のデータバッファと、
該プログラマブルプロセッサに結合される第２のデータバッファであって、該プログラマブルプロセッサは、該命令に応答して、該第２のデータバッファに第２の優先度のデータを転送するように動作可能であり、該第２のデータバッファは、該第２の優先度のデータのみとともに使用される、第２のデータバッファと、
データリンクと、
該第１および該第２のバッファ、ならびに該データリンクに結合される伝送ロジックであって、該伝送ロジックは、メッセージングプロトコルにしたがって、該データリンクを介して、該第１の優先度のデータを該第２の優先度のデータよりも優先的に伝送するように動作可能である、伝送ロジックと
を備える、ロボット補助式手術システム。
【００１４】
（項目２）  
上記第１の優先度のデータは、ロボットアームの動きを制御するコマンドを含み、上記第２の優先度のデータは、重要度の低い情報およびエラーログ情報のうちの少なくとも一つを含む、項目１に記載のロボット補助式手術システム。
【００１５】
（項目３）  
上記プログラマブルプロセッサに結合される第３のデータバッファであって、該プログラマブルプロセッサは、上記命令に応答して、該第３のデータバッファに第３の優先度のデータを転送するように動作可能であり、該第３のデータバッファは該第３の優先度のデータのみとともに使用される、第３のデータバッファをさらに備え、
上記第１の優先度のデータは高優先度データであり、上記第２の優先度データは低優先度データであり、および該第３の優先度データは中優先度のデータである、項目１に記載のロボット補助式手術システム。
【００１６】
（項目４）  
上記メッセージングプロトコルは、上記伝送ロジックが、上記第１のデータバッファからの上記第１の優先度のデータを上記第２のデータバッファからの上記第２の優先度データよりも優先的に伝送することを要求する、項目３に記載のロボット補助式手術システム。
【００１７】
（項目５）  
上記メッセージングプロトコルは、上記伝送ロジックが、上記第１のデータバッファからの上記第１の優先度のデータを上記第３のデータバッファからの上記第３の優先度データよりも優先的に伝送することをさらに要求する、項目４に記載のロボット補助式手術システム。
【００１８】
（項目６）  
上記メッセージングプロトコルは、上記伝送ロジックが、上記第３のデータバッファからの上記第３の優先度のデータを上記第２のデータバッファからの上記第２の優先度データよりも優先的に伝送することをさらに要求する、項目５に記載のロボット補助式手術システム。
【００１９】
（項目７）  
上記第１の優先度のデータを上記第２の優先度のデータよりも優先的に伝送することは、任意の利用可能な第２の優先度のデータ以前に、任意の利用可能な第１の優先度のデータを伝送することを含む、項目４に記載のロボット補助式手術システム。
【００２０】
（項目８）  
上記第１の優先度のデータを上記第２の優先度のデータよりも優先的に伝送することは、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てることを含む、項目４に記載のロボット補助式手術システム。
【００２１】
（項目９）  
上記プログラマブルプロセッサは上記伝送ロジックを含む、項目１に記載のロボット補助式手術システム。
【００２２】
（項目１０）  
複数のノードを含むロボット補助式手術システムを提供することであって、該複数のノードは、データリンクによって、受信ノードに結合される少なくとも一つの伝送ノードを含む、ことと、該伝送ノードにおいて、
第１の優先度のデータおよび第２の優先度のデータを生成することと、
第１のデータバッファに該第１の優先度のデータを配置することであって、該第１のデータバッファは第１の優先度のデータのみとともに使用される、ことと、
第２のデータバッファに該第２の優先度のデータを配置することであって、該第２のデータバッファは第２の優先度のデータのみとともに使用される、ことと、
該データリンクを介して、該第１および該第２のデータバッファから、該第１の優先度のデータおよび該第２の優先度のデータを伝送することであって、該第１の優先度のデータは、該第２の優先度のデータよりも優先的に伝送される、ことと
を包含する、方法。
【００２３】
（項目１１）  
上記伝送ノードにおいて、
第３の優先度のデータを生成することであって、上記第１の優先度のデータは高優先度のデータであり、上記第２の優先度のデータは低優先度のデータであり、上記第３の優先度のデータは中優先度のデータである、ことと、
第３のデータバッファに該第３の優先度のデータを配置することであって、該第３のデータバッファは第３の優先度のデータのみとともに使用される、ことと、
上記データリンクを介して、該第３のデータバッファから該第３の優先度のデータを伝送することであって、該第１の優先度のデータは、該第３の優先度のデータよりも優先的に伝送され、該第３の優先度のデータは、該第２の優先度のデータよりも優先的に伝送される、ことと
をさらに包含する、項目１０に記載の方法。
【００２４】
（項目１２）  
上記伝送ノードにおいてメッセージングプロトコルを識別することをさらに包含し、上記伝送することは、該メッセージングプロトコルにしたがって優先的に送信することを優先的に含む、項目１０に記載の方法。
【００２５】
（項目１３）  
上記第２の優先度のデータよりも優先的に上記第１の優先度のデータを伝送することが、任意の利用可能な第２の優先度のデータ以前に任意の利用可能な第１の優先度のデータを伝送することを含む、項目１０に記載の方法。
【００２６】
（項目１４）  
上記第２の優先度のデータよりも優先的に上記第１の優先度のデータを伝送することが、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てることを含む、項目１０に記載の方法。
【００２７】
（項目１５）  
上記第１の優先度のデータは、スピードが重視されるメッセージを含む、項目１０に記載の方法。
【００２８】
（項目１６）  
上記第２の優先度のデータは、重要度の低い地位の情報およびエラーログ情報のうちの少なくとも一つを含む、項目１０に記載の方法。
【００２９】
（項目１７）  
ロボット補助式手術システムの伝送ノードに含まれるコンピュータ可読媒体上に具体的に実体化されたコンピュータプログラム製品であって、該伝送ノードは、データリンクによって、受信ノードに結合され、該コンピュータ可読媒体は、
第１の優先度のデータおよび第２の優先度のデータを生成する動作と、
第１のデータバッファに該第１の優先度のデータを配置する動作であって、該第１のデータバッファは第１の優先度のデータのみとともに使用される、動作と、
第２のデータバッファに該第２の優先度のデータを配置する動作であって、該第２のデータバッファは第２の優先度のデータのみとともに使用される、動作と、
同一のデータリンクを介して、該第１および該第２のデータバッファから該第１の優先度のデータおよび該第２の優先度のデータを伝送する動作であって、該第１の優先度のデータは該第２の優先度のデータよりも優先的に伝送される、動作と
を、プログラマブルプロセッサに実行させるように動作可能である命令を含んでいる、コンピュータプログラム製品。
【００３０】
（項目１８）  
第３の優先度のデータを生成する動作であって、上記第１の優先度のデータは高優先度のデータであり、上記第２の優先度のデータは低優先度データであり、上記第３の優先度のデータは中優先度のデータである、動作と、
第３のデータバッファに該第３の優先度のデータを配置する動作であって、該第３のデータバッファは第３の優先度のデータのみとともに使用される、動作と、
上記データリンクを介して、該第３のデータバッファから該第３の優先度のデータを伝送する動作であって、該第１の優先度のデータは、該第３の優先度のデータよりも優先的に伝送され、該第３の優先度のデータは、該第２の優先度のデータよりも優先的に伝送される、動作と
を実行するように動作可能である命令をさらに含む、項目１７に記載のコンピュータプログラム製品。
【００３１】
（項目１９）  
メッセージングプロトコルを識別する動作を実行するように動作可能である命令をさらに含み、上記伝送する動作は、該メッセージングプロトコルにしたがって優先的に送信する動作を含む、項目１７に記載のコンピュータプログラム製品。
【００３２】
（項目２０）  
上記第２の優先度のデータよりも優先的に上記第１の優先度のデータを伝送する動作が、任意の利用可能な第２の優先度のデータ以前に任意の利用可能な第１の優先度のデータを伝送する動作を含む、項目１７に記載のコンピュータプログラム製品。
【００３３】
（項目２１）  
上記第２の優先度のデータよりも優先的に上記第１の優先度のデータを伝送する動作が、利用可能な第２の優先度のデータよりも、利用可能な第１の優先度のデータに、より多くの伝送スロットを割り当てる動作を含む、項目１７に記載のコンピュータプログラム製品。
【００３４】
（項目２２）  
上記第１の優先度のデータは、スピードが重視されるメッセージを含む、項目１７に記載のコンピュータプログラム製品。
【００３５】
（項目２３）  
上記第２の優先度のデータは、重要度の低い情報およびエラーログ情報のうちの少なくとも一つを含む、項目１７に記載のコンピュータプログラム製品。
【００３６】
（摘要）
第１の優先度のデータおよび第２の優先度のデータを伝送するための方法、システム、およびコンピュータプログラム製品が提供される。第１の優先度のデータおよび第２の優先度のデータは、別個のデータバッファにおいて格納され、第１の優先度のデータは、第２の優先度のデータよりも優先して伝送される。
【発明を実施するための最良の形態】
【００３７】
様々な図面における同じ参照番号および記号表記は同様の要素を示す。
【００３８】
システムにおけるデータメッセージを通信する方法および構成（データ構造を含む）が記載され、異なる優先度を有するメッセージが２つのシステムノード間における単一のシリアル経路を介して送信されることを可能にする。ノードは、例えば、コンピュータ、プログラムマブルプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または、その他のデータ処理装置を含み得る。データメッセージ（例えば、ソフトウェアメッセージ）は、任意の適切なリンク層を用いて伝送され得る。本願において、２つのノード間における全二重シリアルデータの実質的に連続したストリームを伝送する一つのインプリメンテーションが記載される。データメッセージは一つ以上のセグメントに分割され、それぞれのセグメントが、固定長ハードウェアレベルパケットにおいて伝送される。データメッセージは通常、本願においては単に「メッセージ」と呼ばれる。
【００３９】
固定長のパケットは、メッセージデータが伝送に利用可能であるか否かに関わらず、２つのノードの間で連続的に伝送される。伝送に利用可能なデータが存在しない場合、パケットのデータフィールドは、「充填（ｆｉｌｌｅｒ）」データを用いて充填され得、上記充填データは、受信ノードにおいて放棄され得る。伝送されたパケットは、既に受信されたパケットの受信確認（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）を含んでいる。伝送ノードは、第１のパケットを伝送し、受信ノードから第１のパケットの受信確認を受信する前に、以後に続くパケットを少なくとも１つ伝送し始め得る。以下でさらに詳細に記述され得るように、ノードにおけるパケットの伝送および受信は、連動している。
【００４０】
図１Ａに示されるように、第１のノード１１０からのメッセージデータは、シリアルリンク上でデータを多重化することにより、複数の宛先ノード、例えば、第２のノード１２０、第３のノード１３０、および第４のノード１４０に伝送され得る。第１のノード１１０と特定の宛先ノードとの間にあるノードは、データをルーティングし得る。第１のノード１１０は、第１のリンク１２５を介することにより、第２のノード１２０に対するデータを伝送し得る。第１のノード１１０はまた、第１のリンク１２５を介することにより、第３のノード１３０に対するデータを第２のノード１２０に伝送し、第２のノード１２０は、第２のリンク１３５を介することにより、上記データを第３のノード１３０にルーティングし得る。同様に、第１のノード１１０は、第１のリンク１２５を介することにより、第４のノード１４０に対するデータを伝送し得、第２のノード１２０は、第３のリンク１４５を介することにより、上記データを第４のノード１４０に伝送し得る。
【００４１】
あるインプリメンテーションにおいて、宛先ノードの宛先は、伝送されるデータに含まれているメッセージデータにおいて処理され得る。このインプリメンテーションにおいて、典型的に第２のノード１２０は、メッセージの一部を含むハードウェアレベルパケットを宛先ノードに送信する前に、第１のノード１１０から送信されたメッセージの少なくとも一部分を処理する。第２のノード１２０それ自身が宛先ノードである場合、メッセージは、これ以上は伝送される必要はない。
【００４２】
いくつかのシステムにおいて、第１のノード１１０と第３のノード１３０および第４のノード１４０との間の通信は、第３のノード１３０と第４のノード１４０との間の通信が発生するよりも、より頻繁に発生する。そのようなシステムにおいて、第１のリンク１２５は、第１のリンク１２５を通過する大きなボリュームのデータに対して十分な容量を提供するために、第２のリンク１３５または第３のリンク１４５よりも高速のリンクであり得る。
【００４３】
ノード１１０、１２０、１３０、および１４０は、１つ以上のハードウェアデータバッファ１５２〜１６４を含み得、上記ハードウェアバッファは、メッセージを受信し、それぞれのノード上またはそれぞれのノードと通信するデータ処理装置上で実行するソフトウェアがメッセージを受信する準備ができるまで、上記メッセージを保持し得る。ハードウェアデータバッファ１５２〜１６４はまた、個々のノードに関連するソフトウェアアプリケーションからメッセージを受信し得、そのノードがメッセージを伝送する準備ができるまで、そのメッセージを保持し得る。
【００４４】
図１Ｂに示されるように、ノード１７０の一インプリメンテーションは、メッセージマネージャ１７４、伝送／受信ロジック１７８、伝送バッファ１８２、および受信バッファ１８４を含む。伝送バッファ１８２および受信バッファ１８４はそれぞれ、以下で説明されるように、部分に分割され（例えば、個々に、別個の伝送バッファ１８２−１、１８２−２、１８２−３、および受信バッファ１８４−１、１８４−２、１８４−３）、メッセージの異なる優先度に指定される。一インプリメンテーションにおいて、複数の伝送バッファ１８２は、それぞれの優先度レベルに対して一つ以上を提供される。以下で検討するために、複数の伝送および受信バッファを含む一インプリメンテーションに参照がなされる。他の構成は可能である。各バッファは個々にアドレス可能であり、そのアドレス可能とは、メッセージマネージャ１７４および伝送／受信ロジック１７８は、他のバッファからは独立して、バイトを任意のバッファに配置し得るか、またはバイトを任意のバッファから読み出し得るようにである。
【００４５】
メッセージマネージャ１７４は、伝送バッファ１８２−１、１８２−２、１８２−３の任意のバッファにメッセージまたはメッセージの一部を配置し得る。一インプリメンテーションにおいて、メッセージマネージャ１７４は、高優先度伝送バッファ１８２−１に高優先度メッセージを配置し、中優先度伝送バッファ１８２−２に中優先度メッセージを配置し、低優先度伝送バッファ１８２−３に低優先度メッセージを配置する。３つの優先度レベルがこの例において示されるが、より少ない（図２）またはより多い優先度が割り当てられ得、システムによって処理され得る。
【００４６】
伝送／受信ロジック１７８は、メッセージングプロトコルに従ったシリアルリンク１８６を介して、伝送バッファ１８２からメッセージまたはメッセージの一部を伝送する。メッセージングプロトコルは、個々のノード間における通信のチャネルを作成する異なる優先度レベル（例えば、メッセージが割り当てられたバッファに基づく）のメッセージに対する所定のサービス品質を提供することができる。一インプリメンテーションにおいて、各チャネルは異なる優先度レベルを有する。伝送／受信ロジック１７８は、いったん十分なデータがバッファに書き込まれて、ハードウェアレベルパケットを満たすと、メッセージの一部を自動的に伝送することができる。すなわち、データが利用可能となり、メッセージ全体がバッファに書き込まれるまで待機する必要なく、メッセージ伝送が実行され得る。
【００４７】
メッセージングプロトコルは選択可能な（例えば、ユーザ、または、さもなければ規定される）サービス品質を提供するようにインプリメントされ得る。一インプリメンテーションにおいて、異なる優先度を有するメッセージが伝送のために利用可能である場合（例えば、メッセージが高優先度伝送バッファ１８２−１および中優先度伝送バッファ１８２−２にて存在する場合）、伝送／受信ロジック１７８はより低優先度メッセージよりも、優先的に、最も高優先度のメッセージまたはメッセージの一部を伝送する。例えば、伝送／受信ロジック１７８は、中優先度１８２−２伝送バッファまたは低優先度１８２−３伝送バッファが送信される前に、高優先度伝送バッファ１８２−１からメッセージを伝送する。同様に、メッセージまたはメッセージの一部は、低優先度伝送バッファ１８２−３に保存されたメッセージの前に、中優先度伝送バッファ１８２−２から伝送される。
【００４８】
別のインプリメンテーションにおいて、伝送／受信ロジック１７８は、メッセージを多重化するメッセージングプロトコルをインプリメントし得る。このインプリメンテーションにおいて、伝送／受信ロジック１７８は、ノード間における伝送のためのスロットを規定する。そのスロットは、所定のサービス品質に従って満たされ得る。例えば、高優先度伝送バッファ１８２−１における利用可能なメッセージまたはメッセージの一部は、中優先度１８２−２伝送バッファまたは低優先度１８２−３伝送バッファにおける利用可能なメッセージまたはメッセージの一部よりも、より多くの伝送スロットを割り当てられ得る。
【００４９】
さらに別のインプリメンテーションにおいて、伝送／受信ロジック１７８は、ラウンドロビンの方法にて、伝送バッファ１８２において利用可能であるメッセージまたはメッセージの一部をサービス（例えば、伝送）するメッセージングプロトコルをインプリメントすることができるが、中優先度バッファ（例えば、２）または低優先度バッファ（例えば、１）よりも、高優先度伝送バッファ（例えば、４）が、より多く提供される。
【００５０】
伝送／受信ロジック１７８はまた、シリアルリンク１８６からメッセージおよびメッセージの一部を受信し、そのメッセージおよびメッセージの一部を、受信バッファ１８４における適切なバッファに配置する。伝送／受信ロジック１７８は、シリアルリンク１８６（以下で検討される）を介して伝送されたハードウェアレベルパケットにおけるチャネル指示を用い、与えられたメッセージまたはメッセージの一部がどのレベルに属するのかを決定する。一インプリメンテーションにおいて、伝送／受信ロジック１７８は、受信されたメッセージをメッセージマネージャ１７４に渡し、受信バッファ１８４は使用されない。代替的なインプリメンテーションにおいて、受信されたメッセージは、受信バッファ１８４における優先度に従って、分離されない。
【００５１】
メッセージマネージャ１７４および伝送／受信ロジック１７８は、コンピュータ、プログラマブルプロセッサ、ＦＰＧＡ、エンジン、または他のデータ処理装置であり得る。メッセージマネージャ１７４および伝送／受信ロジック１７８は別個の構成要素として示されるが、それらは単一の構成要素へと組み合わされ得る。伝送／受信ロジック１７８はまた、別個の伝送ロジックおよび受信ロジックへと分割され得る。
【００５２】
伝送バッファ１８２および受信バッファ１８４は、先入れ先出し（ＦＩＦＯ）データバッファであり得、または、読出しおよび書込みポインタを有するサーキュラ・バッファであり得る。伝送バッファ１８２および受信バッファ１８４は別個のデバイス上（例えば、別個の集積回路）においてインプリメントされ得るか、または単一のデバイスの一部上においてインプリメントされ得る。一インプリメンテーションにおいては、ノード１７０のバッファを含む全ての構成要素が単一のＦＰＧＡにおいてインプリメントされる。
【００５３】
図１Ｃは、異なる優先度を有するメッセージを伝送するプロセス１０２を示す。その例において、３つのメッセージ優先度（高優先度、中優先度、低優先度）が含まれる。初期の工程として、伝送のためのメッセージは、（例えば、図１Ｂにおけるメッセージマネージャ１７４上において実行するソフトウェアによって）識別され、型分類される（工程１９０）。メッセージは、型分類（高優先度伝送バッファに高優先度メッセージ、中優先度伝送バッファに中優先度メッセージ、および低優先度伝送バッファに低優先度メッセージ）に従って、個々の伝送バッファに配置される（工程１９２）。メッセージングプロトコルは識別される（例えば、伝送／受信ロジック１７８は、メッセージの各タイプに対するサービス品質を決定する（工程１９３））。メッセージは次いで、識別されたメッセージプロトコルにしたがって伝送される（例えば、伝送／受信ロジック１７８によって）（例えば、高優先度メッセージは、中優先度メッセージおよび低優先度メッセージよりも優先的に伝送され（工程１９４）、中優先度メッセージは低優先度メッセージよりも優先的に伝送される（工程１９６））。メッセージが優先的に伝送され得る可能な方法は、伝送／受信ロジック１７８との関連において上述されている。
【００５４】
図２に示されているように、一インプリメンテーションにおける固定長のパケット２００は、複数のバイト２０１〜２４０を含み得る。４０バイトのパケットが示されているが、固定長のパケットは、その他の長さでもあり得る。示されているインプリメンテーションにおいて、制御情報は、４０バイトのうちの８バイトに配置され、データは、残りの３２バイトに配置されている。第１のバイト２０１は、同期化フィールドであり、上記同期化フィールドは、パケットを受信するノードにおいて、バイトの骨組み（ｆｒａｍｉｎｇ）を維持するように用いられ得る。複数のノードの間のクロックドリフトを補償するために、追加的な同期化バイトが、（例えば１２８パケットごとに一度）パケットに追加され得る。第２のバイト２０２は、受信確認フィールドであり、上記受信確認フィールドは、パケット２００を伝送するノードによって受信された最後のノードが、正しく（例えば、有効なエラー検査情報を含んで）受信されたか否かを示す。第２のバイト２０２は、最後のパケットが正しく受信されたという肯定受信確認（ＡＣＫ）を示すために、ある値（例えば、０ｘＡＣ）に設定され、最後のパケットが正しく受信されなかったこと（例えば、否定受信確認またはＮＡＫ）を示すために、逆値（例えば、０ｘ５３）に設定され得る。一インプリメンテーションにおいて、肯定受信確認の値を除く任意の値は、否定受信確認として解釈され得る。このインプリメンテーションにおいて、ＮＡＫ値がＡＣＫ値の逆である場合、８ビットのエラーは、伝送されたＮＡＫをＡＣＫに変更させるように要求される。
【００５５】
第３のバイト２０３は、応答フィールドであり、上記応答フィールドは、例えば、システムが診断テストモードにあることを示すテストモードビットや、複数のメッセージチャネル（例えば、低優先順位、中優先順位、高優先順位のチャネル）の各々に対するＸＯＦＦビットのような、複数の制御ビットを含んでいる。制御ビットはまた、再伝送ビットをも含み得、上記再伝送ビットは、設定されたときにパケット２００が以前のパケットの再伝送であるということを示し得る。また、１つ以上の制御ビットは、欠陥ビットであり得、上記欠陥ビットは、システム内でエラーが発生したことを示す。
【００５６】
第４のバイト２０４は、ヘッダフィールドである。ヘッダフィールドは、例えばチャネル選択サブフィールドやコマンドサブフィールドのような、複数のサブフィールドを含み得る。チャネル選択サブフィールドは、パケット２００内のデータが、どの優先順位のチャネル上に伝送されるのかを示すように用いられる。コマンドサブフィールドは、バッファをフラッシュ（ｆｌｕｓｈ）し、メッセージのストリームを再開するための命令を含み得る。コマンドサブフィールドは、特定のデータが、ハードウェアチャネル上、または、そのようなデータを識別するコード上に送信されることを要求する命令を含み得る。コマンドサブフィールドはまた、システムを同期化するようにも用いられる。例えば、同期化サイクルの開始において、同期化コマンドを含むパケットが送信され得、システム内のサブシステムが同期化を維持することを可能にする（例えば、１０マイクロ秒の範囲内）。第５のバイト２０５は、受信ノードによって伝送エラーを検出するように用いられ得るハードウェアレベルパケットシーケンス番号を含むシーケンス番号フィールドである。第６のバイト２０６から第３７のバイト２３７までは、例えばメッセージまたはメッセージの一部のような、３２バイトのデータを保持するデータフィールドに属している。
【００５７】
第３８のバイト２３８は、パケット末端フィールドであり、上記パケット末端フィールドは、データフィールドにおけるどれだけのバイトがメッセージに対応し得るのかと、どれだけのバイトが充填バイトであるのかとを特定し得る。パケット末端フィールドはまた、パケット末端指示ビットをも含み得、上記パケット末端指示ビットは、データフィールドにおけるバイトがメッセージを終了するときに設定される。メッセージ末端指示ビットは、受信ノードにおける中断をトリガし得る。第３９のバイト２３９および第４０のバイト２４０は、エラー検査フィールドの一部であり、上記エラー検査フィールドは、一実施形態において、１６ビットのＣＲＣ値（例えば、ＣＣＩＴＴ  １６ビット  ＣＲＣ  アルゴリズムを用いて計算される）を含み得る。ノードがパケットを受信すると、上記ノードは、エラー検査フィールドを用いることにより、パケットが伝送または受信されている最中にエラーが発生したか否かを決定し得る。
【００５８】
パケット２００の構造は、ノード内の欠陥を示す欠陥反応論理（ＦＲＬ；ｆａｕｌｔ  ｒｅａｃｔｉｏｎ  ｌｏｇｉｃ）信号が、複数の方法で通信されることを可能にする。例えば、ＦＲＬ信号は、パケット制御情報内に（例えば、パケット２００の応答フィールドの制御ビット内に）、および／または、メッセージ内に伝送され得る。パケット制御情報内にＦＲＬ信号を直接的に伝送することは、欠陥情報がシステム全体にわたって非常に迅速に伝送され、非常に低いレベルで取り扱われることを可能にする。システム全体にわたる欠陥信号は、ソフトウェアの介入なしで伝播され得、欠陥反応ハードウェアは、欠陥信号が受信されると、システムを安全な状態に置き得る。欠陥を引き起こした問題が（例えば、人間のオペレータの介入によって）一旦解決されると、欠陥信号はクリアされ得、システムは動作可能状態に戻り得る。欠陥信号がクリアされると、典型的に欠陥を示しているＦＲＬ信号は、別の欠陥が発生するまで、パケット制御情報内に伝送されない。余分なＦＲＬ信号は、高優先度メッセージおよび中優先度メッセージにて伝送され得る。
【００５９】
記載されたハードウェアパケット構造は、メッセージが、単一のチャネル上に、またはシリアルリンク上にて多重化された複数のチャネル上に伝送されることを可能にする。特定のメッセージが伝送されるチャネルは、パケット２００におけるチャネル選択サブフィールドによって示される。スピードが重視されるメッセージは高優先度チャネルにて伝送され得、その一方で、比較的重要ではないメッセージは低優先度チャネルにて伝送され得る。
【００６０】
異なる優先度レベルを有するメッセージを伝送することが有利であるシステムの一例は、ロボット補助式手術システムである。そのようなシステムは、手術用の器具またはデバイス（例えば、腹腔鏡、内視鏡、照明、カメラ、および吸入器）を保持する複数のロボット式アームを含み得、そららのうちのいくつかは、患者の内部に位置し得る。典型的に、ロボット式アームは、制御コンソールに着席した外科医によって遠隔的に操作される。外科医が操作する制御と、ロボット式アームを制御するノードとの間の通信は、本明細書における開示に記述されている方法、システム、および装置を用い得る。ロボット式アームの動きを制御するための外科医からのコマンドは、典型的には、高優先度チャネルにて伝送され、その結果、コマンドの発生とその結果の動きとの間における遅延は最小化される。ロボット式アームからの応答（例えば、アーム内のセンサーからアームの実際の動きの測定）はまた、高優先度チャネルにて伝送され得、そのコマンドに対するアームの応答における迅速なフィードバックを可能にする。重要度の低い地位の情報およびエラーログ情報などの非同期システムメッセージは、中優先度チャネルまたは低優先度チャネルにて伝送され得る。
【００６１】
第３のバイト２０３内のＸＯＦＦビットは、チャネル内のデータのフローを制御する。各ノードは、複数のハードウェアバッファを含み得、上記ハードウェアバッファは、複数のチャネルの各々上で伝送されたメッセージを受信し得る。例えば、高優先順位のメッセージは、高優先順位のバッファに格納され、低優先順位のメッセージは、低優先順位のバッファに格納される。パケット２００を伝送する第１のノードがパケット２００内のＸＯＦＦビットを設定するとき、第１のノードは、パケット２００を受信する第２のノードに、それぞれのデータチャネル上で第１のノードにデータを伝送するのを停止するように命令する。第１のノードのハードウェアは、データチャネルに対して、例えば、第１のノードが上記データチャネルからのメッセージを格納するバッファが一杯になりそうなときに、ＸＯＦＦビットを自動的に設定し得る。一インプリメンテーションにおいて、所定のチャネルに対してノードがいつＸＯＦＦビットを設定するかに関する閾値は、ノード内のそれぞれのチャネルの受信バッファのサイズ（例えば、５１２ワード）から３２ワード（４パケット）を引いたものに等しい。３２ワードのマージンは、エラーに対するマージンを用いることにより、ＸＯＦＦ信号を受信し、それに反応した動作をとる時間を、受信ノードに与える。その他の閾値レベルもまた、可能である。第１のノードのハードウェアはまた、多数（例えば、１２個）のメッセージが受信バッファに存在するときに、データチャネルに対するＸＯＦＦビットを設定し得る。一旦パケットまたはメッセージがバッファから取り除かれると、ハードウェアは、データチャネルに対するＸＯＦＦビットを自動的にクリアし得る。各優先順位チャネルは、ノード内のそれぞれの受信バッファを有し得る。ＸＯＦＦビットはすべてのパケット内に伝送されるので、エラー検査フィールドがＸＯＦＦビットに適用され、ＸＯＦＦビットの改悪（ｃｏｒｒｕｐｔｉｏｎ）をガードする。
【００６２】
上述のチャネル選択サブフィールドを用いることにより、複数の通信チャネルがリンク層において利用可能にされ得る。例えば、ハードウェアチャネルと、高優先順位、中優先順位、低優先順位のチャネルとが、実装され得る。メッセージは、長さが（例えば、３ワードから１２８ワードの間に）変動し得、メッセージの長さに依存して、１つ以上のパケットに伝送され得る。システムハードウェアは、伝送ノードにおいて、メッセージを複数のパケットに細分化し、受信ノードにおいて、メッセージを逆細分化し得る。メッセージがパケットのデータ部分を充填していない場合、データ部の残部に充填データが挿入され得る。メッセージの伝送バッファと受信バッファとが、ハードウェア内に実装され得る。例えば、ノードは、各チャネル（例えば、高優先順位、中優先順位、低優先順位のチャネル）に対し、ハードウェアの伝送バッファと受信バッファとを含み得る。一インプリメンテーションにおいて、上記チャネルに対する伝送バッファおよび受信バッファは、最大のメッセージサイズの１．５倍である。
【００６３】
図３は、図２の文脈で議論されたようなパケットを用いることによる２つのノードの間の通信のための概念的なタイミング図を示している。パケット３０１〜３０４は、第１のノードから第２のノードへと連続的に伝送される。パケット３１１〜３１４は、第２のノードで受信され、パケット３０１〜３０４に対応しているが、パケット３１１〜３１４は、伝送エラーが発生した場合は、それぞれのパケット３０１〜３０４の改悪版であり得る。時間的に、パケット３１１〜３１４の受信は、リンクに沿ったパケットの有限の伝播時間のために、パケット３０１〜３０４伝送に対して遅延される。図３に示されている例において、パケットの伝播時間は、パケットの持続時間（パケットを伝送するために第１のノードによって要求される時間の長さ）よりも短い。
【００６４】
第２のノードは、パケット３５５〜３５８を第１のノードに伝送する。パケット３６５〜３６８は、ある遅延の後で、第１のノードにおいて受信され、パケット３５５〜３５８を対応する。パケット３５６は、パケット３０１に適用される受信確認フィールドを含む。パケット３１１（パケット３０１に対応する）が第２のノードにおいて正しく受信された場合、パケット３５６は、パケット３０１に対するＡＣＫを含む。パケット３１１が同時に受信されなかった場合、パケット３５６は、ＮＡＫを含む。パケット３５７は、パケット３０２に対応する受信確認フィールドを含む。同様に、パケット３０３は、第１のノードにおいてパケット３６５が正しく受信されたか否かを示す受信確認フィールドを含み、パケット３０４は、パケット３６６に対する受信確認フィールドを含む。
【００６５】
一インプリメンテーションにおいて、第２のノードは、第１の受信確認フィールドが第１のノードから受信されるまで、パケットの伝送を開始しない。例えば、第２のノードは、第２のノードがパケット３１１内の受信確認フィールドを受信するまで、パケット３５５の伝送を開始しない。第１のノードと第２のノードとの間の初期同期化を容易にするために、２つのノードは、第１のノードがパケット３０１を伝送する前に、いくつかの連続的な同期化バイトを各々伝送し得る。
【００６６】
図３は、第１のノードと第２のノードとの間に２つのパケットの「パイプライン」が存在する場合を示している。パケット３５６は、パケット３０１に対する受信確認フィールドを含む。受信確認フィールドがＡＣＫを含む場合、第１のノードは、パケット３０３を伝送する。しかしながら、パケット３５６の受信確認フィールドがＮＡＫを含む場合、第１のノードは、パケット３０１および３０２をリフレームし、再伝送し得る。システムを再同期化するために、このインプリメンテーションにおいて、２つのパケットは、２つのパケットのうちの第１のパケットに対してＮＡＫが受信されたときに、再伝送される。２つのパケットのうちの第１のパケットが正しく受信されなかった場合、第２のパケットは、第２のパケットがはじめて伝送されたときに、第２のパケットが正しく受信されたか否かをチェックすることなしに、再伝送され得る。２つのノードの間の同期化の損失により、第１のパケットにおけるエラーが発生したという状況において、第２のパケットはエラーを含むと考えられるため、第２のパケットは先制的に（ｐｒｅｅｍｐｔｉｖｅｌｙ）伝送される。ＮＡＫを伝送したノードもまた、ＮＡＫを伝送する前に伝送された最後の２つのパケットを伝送し得る。所定のパケットに対し、受信確認フィールドは、別のパケットが伝送された後にのみ受信されるため、図３は、第１のノードと第２のノードとの間に２つのパケットのパイプラインを有するように記述されている。第１のノードと第２のノードとの間の往復時間は、１つのパケットを伝送するのに要求される時間と同じか、わずかに短い。すなわち、第１のノードは、第１のノードがパケット３０１の伝送を終了するよりも前に、パケット３６５の受信を開始し得る。典型的に、往復時間は、リンク上の伝播の遅延と、ノードにおける処理時間とに依存する。システム内では、より長い往復時間（絶対時間が長い、または、パケットの持続時間に関する時間が長い）もまた、使用され得、結果として、パイプラインは、２つのパケットよりも深く（ｄｅｅｐ）なり得る。
【００６７】
パケットは、パケットのデータフィールドに位置するメッセージが存在するか否かに関わらず、第１のノードと第２のノードとの間で実質的に連続的に伝送される。図３に示されているように、パケットは、連動的な方法で伝送される。固定長のパケットの連動的な伝送は、ノードにおいて受信されたパケットと、ノードによって伝送されたパケットとの間で、位相が固定されたオフセットを発生し得る。ノードは、既に伝送されたパケットの伝送から所定の長さの時間の後、既に伝送されたパケットに関するエラーのない受信の受信確認を含むパケットを、遠隔ノードから受信する。連動したパケットの連続的な伝送は、複数のノードの間の正確な同期化と共に、高帯域幅、低遅延の通信を可能にする。加えて、パケットの連続的な伝送は、システムが複数のノードの間の接続のビットエラーレート（ＢＥＲ；ｂｉｔ  ｅｒｒｏｒ  ｒａｔｅ）を正確かつ実質的に連続的に計算することを可能にする。
【００６８】
図４に示されているように、第２のノードが、第１のノードからパケット４１１を受信し、パケット４１１におけるデータの改悪を引き起こす伝送エラーが発生したことを決定するとき、第２のノードは、次のパケットを伝送する代わりに、パケットの伝送を終了し、第１のノードにＮＡＫとリフレーミングシーケンス（ｒｅｆｒａｍｉｎｇ  ｓｅｑｕｅｎｃｅ）４５６とを伝送する。パケット４１１が改悪され得る理由の１つは、第１のノードと第２のノードとの間の同期化が低下し得ること、または、損失し得ることにあるため、リフレーミングシーケンス４５６が伝送され、第１のノードと第２のノードとの間の同期化を再構築する。リフレーミングシーケンスは、代替的な同期化フィールドとリンクフィールドとを含み得、上記リンクフィールドは、例えば０ｘＡ３のような所定のコードであり得る。一インプリメンテーションにおいて、ノードがリフレームされることを考慮される前に、４つのリンクのバイトが受信されなければならない。第１のノードは、ＮＡＫおよびリフレーミング、シーケンス４６６を受信し、リフレーミングシーケンス４０３を伝送する。第１のノードがリフレーミングシーケンス４０３を伝送した後、第１のノードは、ＮＡＫを受信する前に伝送された最後のパケットを再送信する。Ｎ個のパケットのパイプラインの場合、最後のＮ個のパケットが再送信される。一旦、第２のノードが、第１の再伝送されたパケット４１４におけるＡＣＫを受信すると、第２のノードはまた、パケットの再伝送を開始する。
【００６９】
図５に示されているように、第１のノードが第２のノードからパケット５６５を受信し、パケット５６５におけるデータの改悪を引き起こす伝送エラーが発生したことを決定するとき、第１のノードは、ＮＡＫとリフレーミングシーケンス５０３とを、第２のノードに送信する。第２のノードは、ＮＡＫとリフレーミングシーケンス５１３とを受信し、リフレーミングシーケンス５５７を送信する。第１のノードがＮＡＫとリフレーミングシーケンス５０３とを伝送した後、第１のノードは、改悪されたパケットを受信する前に伝送された最後のパケットを再送信する。一旦、第２のノードが第１の再伝送されたパケット５１４内のＡＣＫを受信すると、第２のノードはまた、パケットの再伝送を開始する。
【００７０】
エラーカウンタは、ノード内で発生するハードウェアのエラーの回数を追跡し得る。カウンタが閾値に到達したときに、中断がイネーブルにされ得る。一インプリメンテーションにおいて、エラーカウンタは、ノード内のソフトウェアによって読み取られ得、上記ソフトウェアは、中断の閾値を設定し得る。このシステムにおいて、エラーの検出および修正は、非常に低いレベルで扱われ得、記述されたリンク層の最上位で動作するソフトウェア層は、追加的なエラーの検出および修正をインプリメントする必要がない。
【００７１】
図６は、一インプリメンテーションにおけるノードにおいて実行される処理６００を示している。ノードは、第１のパケットの受信を開始し（ステップ６１０）、第１のパケットにおける受信確認フィールドを受信する（ステップ６１５）。ノードは、受信確認フィールドが、ＡＣＫであるか、ＮＡＫであるかを決定する（ステップ６２０）。受信確認フィールドがＮＡＫである場合、ノードはリフレーミングシーケンスを伝送し（ステップ６２５）、受信したＮＡＫがそのパケットの後に伝送された任意のパケットに対応するようなパケットを再伝送する（ステップ６３０）。受信確認フィールドがＡＣＫである場合、ノードは第２のパケットの伝送を開始し（ステップ６３５）、例えば、上記パケット内のＣＲＣ値を検証することにより、第１のパケットのエラーをチェックする（ステップ６４０）。第１のパケットにおいてエラーが検出された場合、ノードは、第２のパケットの伝送を終了し（ステップ６４５）、ＮＡＫとリフレーミングシーケンスとを伝送する（ステップ６５０）。
【００７２】
第１のパケットにおいてエラーが検出されなかった場合、ノードは、第１のパケットにおいて欠陥ビットが設定されたか否かを決定する（ステップ６５５）。欠陥ビットが設定された場合、ノードは、欠陥モードまたは安全状態に置かれる（ステップ６６０）。欠陥ビットが設定されていない場合、または、一旦ノードが欠陥モードに置かれると、ノードは第２のパケットの伝送を終了し（ステップ６６５）、第３のパケットの伝送を開始する（ステップ６７０）。
【００７３】
図７は、システムにおけるノード間を通信するために、図２〜図６に関連して記載されたリンク層を介して伝送され得るメッセージ７００を示す。メッセージ７００はまた、ＵＳＢ、ＲＳ−２３２、またはＩＥＥＥ  ８０２．３（イーサネット（登録商標））などの、他の接続を介して伝送され得る。同様のメッセージ７００は、接続の各タイプを介して伝送され得、必要に応じて、接続特定のラッパーにおいてラップ（ｗｒａｐ）される。例えば、パケット２００（図２）の第３７のバイト２３７を介して、第６のバイト２０６において伝送されるメッセージは、図８に関連して以下に記載されるラッパーにおいてラップされるメッセージ７００である。通常のフォーマットはメッセージ７００に対するシステム全体において用いられるゆえ、メッセージ７００は、変更無しにシステム内の任意のノードに対して伝送され得る。
【００７４】
メッセージ７００は、複数のバイト７０１〜７０８を含む。メッセージ７００の最初の６つのバイト７０１〜７０６はヘッダを形成し、最後のバイト７０７〜７０８はメッセージ本体を形成する。最後のバイト７０７〜７０８におけるメッセージ本体は、長さが変化し得る（バイト７０７とバイト７０８との間におけるバイトは図示されない）。ヘッダの第１のバイト７０１は、それに続くバイトに対するチェックサムフィールドを含む。第２のバイト７０２は、例えば、同期化コマンドまたは構成チェックコマンドなどを含み得るコマンドフィールドを含む。ノードは別のノードによって発行されたコマンドに応答し得（例えば、コマンドの実行状態をレポートするなど）、そのコマンドフィールドは応答ビットを含み得る。その応答ビットは、応答メッセージにおけるコマンドフィールドの応答ビットを、コマンドを発行したノードに送信されるように設定することができる。その応答ビットは、そのメッセージがコマンドに対する応答であり、新しいコマンドを含まないことを指示する。
【００７５】
メッセージ７００における第３のビット７０３は、メッセージ７００が伝送されたノードを指示するソースフィールドを含む。第４のバイト７０４は、メッセージ７００が伝送されるべきノード（単数または複数のノード）を指示する宛先フィールドを含む。第５のバイト７０５は状態フィールドを含む。応答ノードは、応答メッセージを送信した場合、状態フィールド（例えば、成功または失敗を示す）におけるコマンドの実行についての情報を含み得る。第６のバイト７０６は、メッセージ７００の本体がどの程度の長さであるのかを示す長さフィールドを含む。
【００７６】
図８に示されるように、上述のリンク層を用いた伝送のためのメッセージ８００は複数のバイト８０１〜８１０を含む。最初の４つのバイト８０１〜８０４はヘッダを形成し、最後の４つのバイト８０７〜８１０はテールを形成し、中間のバイト８０５〜８０６は、メッセージ７００（図７）を含む本体を形成する。ヘッダの最初のバイト８０１は、メッセージの本体がどの程度の長さであるかを示す長さフィールドを含む。ヘッダの第２のバイト８０２は、メッセージのタイプを特定することができるタイプフィールドを含む。ヘッダの第３のバイト８０３は、メッセージ８００が伝送されるノードを示すソースフィールドを含む。ヘッダの第４のバイト８０４は、メッセージ８００が伝送されるべきノード（単数または複数のノード）を示す宛先フィールドを含む。
【００７７】
中間のバイト８０５〜８０６は長さが変化し得（バイト８０５とバイト８０６との間のバイトは図示されない）、メッセージ７００（図７）を含み得る。テールの最初のバイト８０７は、未来の使用のために取っておかれている、付けたし（ｐａｄｄｉｎｇ）のバイトであり得る。第２のテールの第３および第４のバイト８０９および８１０は、メッセージ８００のヘッダおよび本体に対するチェックサムフィールドであり得る。
【００７８】
テールの第２のバイト８０８におけるシーケンス番号フィールドは、メッセージ８００が伝送される優先チャネルに特定的であるメッセージ８００に対するシーケンス番号を含み得る。すなわち、システムは、他の優先チャネルとは独立して、所定の優先チャネルに伝送されるメッセージに、シーケンス番号を割り当てることができる。そのシーケンス番号はまた、メッセージ８００の伝送を形成および開始するノードに依存し得る。この方法において、システムにおける各ノードは、ノード上の各優先チャネルに対して異なる開始シーケンス番号を有し得る。所定のノードおよび優先チャネルに対するシーケンス番号は、メッセージが特定の優先チャネル上における特定のノードから首尾良く伝送された後、インクリメントされる。
【００７９】
テールの第３および第４のバイト８０９〜８１０におけるチェックサムフィールドは、ヘッダおよび本体におけるバイトの総計であり得る。チェックサムフィールドは、メッセージ８００におけるエラーを検出するために用いられ得る。メッセージ８００の本体はまた、より堅牢なエラー検出のためのＣＲＣチェックサムを含み得る。
【００８０】
システムが立ち上がると、マスターノードにおけるソフトウェア（例えば、ロボット援助式手術システムにおける外科医コンソールにおいて）は、メッセージ８００のソースフィールドおよび宛先フィールドにおける個々のノードを識別するために用いられるシステムにおいて、ノードＩＤを各ノードに割り当てることができる。一つ以上の特別なＩＤが取っておかれ得、宛先フィールドにおける特別なＩＤを含むメッセージは複数のノードに同報通信されることを指示するために用いられ得る。
【００８１】
マスターノードにおけるソフトウェアは、システムにおける他のノードをクエリし得、他のノードが実行しているソフトウェアのバージョンを決定する。システムにおけるノードが予期しないソフトウェアのバージョン（そのバージョンは、マスターノードのバージョンと一致しない、または、マスター制御器において保存されている要求されたバージョン情報と一致しない）である場合、障害がトリガされ得、システムにおけるノードは、オペレータがソフトウェアの修正バージョンをノードにロードするか、または、ノードを、インストールされたソフトウェアの修正バージョンを有する異なるノードと取り替えるまで、安全な状態に置かれ得る。
【００８２】
システムにおいて障害が生じると、通常は、その障害の原因は、その障害が生じたノード上のエラーログに保存される。その障害の原因についての情報は、通常は、マスターノードに伝送され、そこでログされる。
【００８３】
一インプリメンテーションにおいて、ノードは、上述のリンク層、ＵＳＢポート、ＲＳ−２３２ポート、およびイーサネット（登録商標）ポートを用いて通信するポートを含み得る。ポートの一部または全ては、他のノードと通信するために用いられ得、ポートの一部または全ては、システムをテストまたは更新する装置を接続するために用いられ得る。システムをテストまたは更新する装置がポートに接続されると、装置がセキュリティのためのパスワードを提供することをシステムは要求し得る。
【００８４】
メッセージはシステムのメンテナンスおよび更新のために用いられ得る。例えば、メッセージは、別のノードかつ、またはノードの一つに結合された更新装置（例えば、ラップトップコンピュータ）から、ノードに対してソフトウェアの更新を伝送するために用いられ得る。ノードと結合された診断用装置または更新装置はそのノードと通信し得、また、装置がメッセージを所望のノードに転送するために接続されるノードを用いることによって（例えば、メッセージ８００の宛先フィールドにおける所望のノードを特定することによって、など）、システムにおける他のノードと通信し得る。システム全体において、メッセージ７００に対する通常のフォーマットの使用によって、診断用装置または更新装置が、簡単な方法において、システムにおける任意のノードと通信することを可能にする。
【００８５】
本発明の実施形態、および、本明細書に記述された機能的な動作のすべては、デジタル電子回路、または、コンピュータのソフトウェア、ファームウェア、または、ハードウェアに実装され得、本明細書に記述された構造と、それらの構造上の等価物と、それらのうちの１つ以上の組み合わせとを含み得る。本発明の実施形態は、１つ以上のコンピュータプログラム製品として、すなわち、データ処理装置によって実行されるか、または、データ処理装置の動作を制御するための、コンピュータ読取り可能な媒体上に符号化されたコンピュータプログラム命令の１つ以上のモジュールとして、実装され得る。コンピュータ読取り可能な媒体は、機械読取り可能な格納デバイス、機械読取り可能な格納基板、メモリデバイス、機械読取り可能な伝播信号に作用する構成、または、それらの１つ以上の組み合わせであり得る。「データ処理装置」という用語は、例えばプログラム可能なプロセッサ、コンピュータ、または、マルチプロセッサまたはコンピュータを含む、データを処理するための装置、デバイス、および機械のすべてを包含する。上記装置は、ハードウェアに加え、問題となっているコンピュータプログラムに対する実行環境を形成するコードを含み得、上記コードは、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、または、それらのうちの１つ以上の組み合わせを構成する。伝播信号は、人工的に生成された信号、例えば、機械によって生成された電気的、光学的、または、電磁気的な信号であり得、適切な受信装置に伝送するために、情報をエンコードするように生成され得る。
【００８６】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる）は、コンパイルまたは解釈された言語を含む、任意の形式のプログラム言語で書かれ得、スタンドアロンなプログラムとして、または、モジュール、コンポーネント、サブルーチンとして、または、コンピューティング環境における使用に適したその他のユニットとしてを含む、任意の形式で配信され得る。コンピュータプログラムは、必ずしもファイルシステム内のファイルに対応しているわけではない。プログラムは、その他のプログラムまたはデータ（例えば、マークアップ言語のドキュメントに格納された１つ以上のスクリプト）を保持するファイルの一部に、問題となっているプログラムに専用の単一のファイルに、または、（例えば、１つ以上のモジュール、サブプログラム、または、コードの一部を格納する）組織化された複数のファイルに格納され得る。コンピュータプログラムは、１つの場所に位置しているか、または、複数の場所に分散し、通信ネットワークによって相互接続されている、コンピュータ、または、マルチコンピュータ上で実行されるように配信され得る。
【００８７】
本明細書に記述された処理および論理の流れは、１つ以上のコンピュータプログラムを実行する１つ以上のプログラム可能なプロセッサによって実行され得、データを入力し、出力を生成するように動作することにより、複数の機能を実行する。処理および論理の流れはまた、例えばＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）またはＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のような特定用途向け論理回路によって、実行され得、装置はまた、上記のような特定用途向け論理回路として、インプリメントされ得る。
【００８８】
コンピュータプログラムの実行に適したプロセッサは、例えば、汎用マイクロプロセッサと特定用途向けマイクロプロセッサとの両方、任意の種類のデジタルコンピュータの１つ以上の任意のプロセッサを含む。一般に、プロセッサは、命令とデータとを、読み出し専用メモリまたはランダムアクセスメモリまたはその両方から受信し得る。コンピュータの主要な要素は、命令を実行するためのプロセッサ、および、命令とデータとを格納するための１つ以上のメモリである。一般に、コンピュータは、データを格納するために、１つ以上の大容量の格納デバイス（例えば、磁気ディスク、磁気光学ディスク、または、光学ディスク）を含み得、あるいは、データを受信するように、または、データを伝送するように、または、受信と伝送との両方を行なうように、上記格納デバイスに動作可能なように接続される。しかしながら、コンピュータは、必ずしもそれらのデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えば、いくつか例を挙げると、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、携帯型オーディオプレイヤー、全地球測位システム（ＧＰＳ）受信器に埋め込まれ得る。コンピュータプログラムの命令およびデータを格納するのに適したコンピュータ読取り可能な媒体は、任意の形態の不揮発性メモリ、メディア、および、メモリデバイスを含み、例えば、半導体メモリデバイス（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュスメモリデバイス）、磁気ディスク（例えば、内蔵式のハードディスクまたはリムーバブルディスク）、磁気光学ディスク、ならびに、ＣＤ−ＲＯＭディスクおよびＤＶＤ−ＲＯＭディスクを含む。プロセッサおよびメモリは、特定用途向け論理回路によって補完されるか、特定用途向け論理回路に実装され得る。
【００８９】
ユーザとの相互作用を提供するために、本発明の実施形態は、ユーザに情報を表示するための、例えばＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）のようなディスプレイデバイスと、ユーザにコンピュータへの入力を提供するための、キーボードと例えばマウスまたはトラックボールのようなポインティングデバイスとを有するコンピュータに実装され得る。その他の種類のデバイスも同様に、ユーザとの相互作用を提供するために用いられ得る。例えば、ユーザに提供されたフィードバックは、任意の形態の知覚性フィードバックであり得、例えば、視覚性のフィードバック、音響性のフィードバック、または、触覚性のフィードバックであり得る。また、ユーザからの入力は、任意の形態で受信され得、上記入力は、音響性の入力、発話による入力、または、触覚性の入力を含み得る。
【００９０】
本明細書は、多くの具体例を含んでいるが、これらは、本発明またはクレームされている内容の範囲を制限するものとして考えられるべきではなく、むしろ、本発明の特定の実施形態に特有の特徴を記述しているものとして考えられるべきである。別個の実施形態の文脈で本明細書に記述されている特定の特徴はまた、単一の実施形態に組み合わせてインプリメントされ得る。逆に、単一の実施形態の文脈で記述されている様々な特徴は、複数の実施形態に別個にインプリメントされ得るか、または、任意の適切な組み合わせの構成要素（ｓｕｂｃｏｍｂｉｎａｔｉｏｎ）でインプリメントされ得る。さらに、上述では、特徴は、特定の組み合わせに作用するように記述されているが、いくつかの場合において、クレームされた組み合わせからの１つ以上の特徴は、上記の組み合わせから切り取られたようにさえも主にクレームされ得、クレームされた組み合わせは、組み合わせの構成要素または組み合わせの構成要素の組み合わせに向けられ得る。
【００９１】
同様に、図面において、動作は特定の順序で記述されているが、このことは、示されているそのような特定の順序または連続的な順序で実行されること、あるいは、示されているすべての動作が望ましい結果を達成するように実行されることを要求していると理解されるべきではない。特定の状況において、マルチタスク処理および並列処理は、有利であり得る。さらに、上述された実施形態における様々なシステムコンポーントの分離は、すべての実施形態においてそのような分離を要求しているものとして理解されるべきではなく、記述されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に互いに統合され得るか、または、複数のソフトウェア製品にパッケージ化され得ると理解されるべきである。
【００９２】
このようにして、本発明の具体的な実施形態が記述されてきた。その他の実施形態は、以下の請求項の範囲内にある。例えば、請求項に挙げられた動作は、異なる順序で実行され得、それでも、望ましい結果を達成し得る。上述された方法、システム、および装置は、光ファイバー（例えば、１６０Ｍｂ／秒で動作する）、低電圧の差動信号（例えば、１２２Ｍｂ／秒で動作する）、ソースの同期なシリアル、非同期なバックプレーンワイヤを含む、様々な物理的な伝送機構と共に用いられ得る。一インプリメンテーションにおいて、改悪されたパケットは、上記パケットがエラーを許容し得るデータを含んでいるときには、必ずしも再伝送する必要はない。例えば、ビデオストリームまたはオーディオストリームにおいて時々発生する誤動作は、許容可能である。さらに、エラー検出およびリフレーミングが、このインプリメンテーションに使用され、ハードウェアがフレーミングエラーからの高速のリカバリをインプリメントすることを可能にする。
【００９３】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。
【図面の簡単な説明】
【００９４】
【図１Ａ】リンクによって接続される複数のノードを含むシステムのブロック図である。
【図１Ｂ】単一のノードのブロック図である。
【図１Ｃ】ノードにおいて実行される伝送プロセスのフローチャートである。
【図２】ハードウェアレベルデータパケットの構造の図である。
【図３】ノード間のパケット伝送のタイミング図である。
【図４】エラーリカバリシナリオのタイミング図である。
【図５】エラーリカバリシナリオのタイミング図である。
【図６】ノードにおいて実行されるプロセスのフローチャートである。
【図７】メッセージの構造の図である。
【図８】メッセージの構造の図である。
【符号の説明】
【００９５】
１１０、１２０、１３０、１４０  ノード
１２５、１３５、１４５  リンク
１５２、１５４、１５６、１５８、１６０、１６２、１６４  データバッファ
【図１Ａ】
2007174666.tif 000003
【図１Ｂ】
2007174666.tif 000004
【図１Ｃ】
2007174666.tif 000005
【図２】
2007174666.tif 000006
【図３】
2007174666.tif 000007
【図４】
2007174666.tif 000008
【図５】
2007174666.tif 000009
【図６】
2007174666.tif 000010
【図７】
2007174666.tif 000011
【図８】
2007174666.tif 000012