(57)【特許請求の範囲】
【請求項１】
第１処理ノードから第１要求を受信して、別の処理ノードによって購読されるべき第１通信テーマを表示する第１データストリームのデータブロックを生成するステップと、
前記第１処理ノードは複数処理ノードの一つであり、各処理ノードは、自律走行車を動作させる特定機能を処理し、前記処理ノードのそれぞれは、特定動作環境を有する特定ノードコンテナにおいて実行され、
前記第１要求に応答し、グローバルメモリから、前記第１データストリームの前記データブロックを記憶するための第１グローバルメモリセグメントを割り当てるステップと、
第１ローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングするステップと、
前記第１ローカルメモリセグメントは第１ノードコンテナの第１ローカルメモリによって割り当てられ、前記第１ノードコンテナは前記第１処理ノードを含み、前記第１処理ノードは、前記第１ノードコンテナにおいてマッピングされた第１ローカルメモリセグメントにアクセスすることにより、前記第１グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックを直接にアクセスし、
第２処理ノードから第２要求を受信して前記第１通信テーマを購読するステップと、
前記第２要求に応答し、第２ローカルメモリセグメントを第１グローバルメモリセグメントにマッピングするステップと、
前記第２ローカルメモリセグメントは第２ノードコンテナの第２ローカルメモリによって割り当てられ、前記第２ノードコンテナは前記第２処理ノードを含み、前記第２処理ノードは、前記第２ノードコンテナにおいてマッピングされた第２ローカルメモリセグメントにアクセスすることによって、前記第１グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックに直接にアクセスする
ことを特徴とする自律走行車における処理ノードのデータストリームを管理するコンピュータ実施方法。
【請求項２】
前記第１データストリームは、複数の通信テーマに関連付けられる複数のデータストリームの一つであり、前記データストリームのそれぞれは、前記グローバルメモリによって割り当てられ対応のデータブロックを記憶するための複数のグローバルメモリセグメントの一つに関連付けられる
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１ノードコンテナは、前記第１ローカルメモリに関連付けられる第１バーチャルマシンを含み、前記第２ノードコンテナは、前記第２ローカルメモリに関連付けられる第２バーチャルマシンを含む
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記第２処理ノードは、前記第１通信テーマを購読する、購読処理ノードとする複数の処理ノードの一つであり、前記購読処理ノードのそれぞれは、前記購読処理ノードからの、対応するローカルメモリにおけるローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングして前記第１データストリームの前記データブロックにアクセスする
ことを特徴とする請求項１に記載の方法。
【請求項５】
前記第１処理ノード及び前記第２処理ノードが前記第１グローバルメモリセグメントに記憶される前記データブロックに対するアクセスをモニタリングするモニタリングステップと、
前記アクセスが所定期間内に活動しない場合は、前記第１グローバルメモリセグメントを、前記第１グローバルメモリセグメントのフリーグローバルメモリプールにリリースするステップと、をさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記モニタリングステップにおいて、
前記第１データストリームのすべてのデータブロックが、前記第２処理ノードにより読み出されたか否かを判断するステップと、
前記第１処理ノードによって生成された任意の新しいデータブロックが存在するか否かを判断し、前記第１データストリームのすべてのデータブロックが既に読み出され、且つ前記所定期間内に新しいデータブロックが生成されていない場合、前記第１グローバルメモリセグメントをリリースするステップと、をさらに含む
ことを特徴とする請求項５に記載の方法。
【請求項７】
前記第１グローバルメモリセグメントをリリースする前に、前記方法は、
前記第１グローバルメモリセグメントから、前記第１ローカルメモリの前記第１ローカルメモリセグメントとのマッピングを解除させるステップと、
前記第１グローバルメモリセグメントから、前記第２ローカルメモリの前記第２ローカルメモリセグメントとのマッピングを解除させるステップと、をさらに含む
ことを特徴とする請求項６に記載の方法。
【請求項８】
第１処理ノードから第１要求を受信して、別の処理ノードによって購読されるべき第１通信テーマを表示する第１データストリームのデータブロックを生成するユニットと、
前記第１処理ノードは複数処理ノードの一つであり、各処理ノードは、自律走行車を動作させる特定機能を処理し、それぞれの前記処理ノードは、特定動作環境を有する特定ノードコンテナにおいて実行され、
前記第１要求に応答し、グローバルメモリから、前記第１データストリームの前記データブロックを記憶するための第１グローバルメモリセグメントを割り当てるユニットと、
第１ローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングするユニットと、
前記第１ローカルメモリセグメントは第１ノードコンテナの第１ローカルメモリによって割り当てられ、前記第１ノードコンテナは前記第１処理ノードを含み、前記第１処理ノードは、前記第１ノードコンテナにおいてマッピングされた第１ローカルメモリセグメントにアクセスすることにより、前記第１グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックを直接にアクセスし、
第２処理ノードから第２要求を受信して前記第１通信テーマを購読するユニットと、
前記第２要求に応答し、第２ローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングするユニットとを具備し、
前記第２ローカルメモリセグメントは第２ノードコンテナの第２ローカルメモリによって割り当てられ、前記第２ノードコンテナは前記第２処理ノードを含み、前記第２処理ノードは、前記第２ノードコンテナにおいてマッピングされた第２ローカルメモリセグメントにアクセスすることによって、前記第１グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックに直接にアクセスする
ことを特徴とする自律走行車における処理ノードのデータストリームを管理する装置。
【請求項９】
前記第１データストリームは、複数の通信テーマに関連付けられる複数のデータストリームの一つであり、前記データストリームのそれぞれは、前記グローバルメモリによって割り当てられ対応のデータブロックを記憶するための複数のグローバルメモリセグメントの一つに関連付けられる
ことを特徴とする請求項８に記載の装置。
【請求項１０】
前記第１ノードコンテナは、前記第１ローカルメモリに関連付けられる第１バーチャルマシンを含み、前記第２ノードコンテナは、前記第２ローカルメモリに関連付けられる第２バーチャルマシンを含む
ことを特徴とする請求項８に記載の装置。
【請求項１１】
前記第２処理ノードは、前記第１通信テーマを購読する、購読処理ノードとする複数の処理ノードの一つであり、前記購読処理ノードのそれぞれは、前記購読処理ノードからの、対応するローカルメモリにおけるローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングして前記第１データストリームの前記データブロックにアクセスする
ことを特徴とする請求項８に記載の装置。
【請求項１２】
前記装置は、
前記第１処理ノード及び前記第２処理ノードが前記第１グローバルメモリセグメントに記憶される前記データブロックに対するアクセスをモニタリングするモニタリングユニットと、
前記第１グローバルメモリセグメントを、前記第１グローバルメモリセグメントのフリーグローバルメモリプールにリリースするユニットと、をさらに含む
ことを特徴とする請求項８に記載の装置。
【請求項１３】
前記モニタリングユニットは、
前記第１データストリームのすべてのデータブロックが、既に前記第２処理ノードにより読み出されたか否かを判断するユニットと、
前記第１処理ノードによって生成された任意の新しいデータブロックが存在するか否かを判断し、前記第１データストリームのすべてのデータブロックが読み出され、且つ所定期間内に新しいデータブロックが生成されていない場合、前記第１グローバルメモリセグメントをリリースするユニットと、を含む
ことを特徴とする請求項１２に記載の装置。
【請求項１４】
前記第１グローバルメモリセグメントから、前記第１ローカルメモリの前記第１ローカルメモリセグメントとのマッピングを解除させるユニットと、
前記第１グローバルメモリセグメントから、前記第２ローカルメモリの前記第２ローカルメモリセグメントとのマッピングを解除させるユニットと、
をさらに含む
ことを特徴とする請求項１３に記載の装置。
【請求項１５】
データ処理システムであって、
プロセッサと、
前記プロセッサに接続され指令を記憶する記憶装置と、を含み、
前記指令が前記プロセッサにより実行される場合、自律走行車の処理ノードのデータストリームを管理する動作が前記プロセッサによって実行さされ、
前記動作は、
第１処理ノードから第１要求を受信して、別の処理ノードによって購読されるべき第１通信テーマを表示する第１データストリームのデータブロックを生成するステップと、
前記第１処理ノードは複数処理ノードの一つであり、各処理ノードは、自律走行車を動作させる特定機能を処理し、それぞれの前記処理ノードは、特定動作環境を有する特定ノードコンテナにおいて実行され、
前記第１要求に応答し、グローバルメモリから、前記第１データストリームの前記データブロックを記憶するためのグローバルメモリセグメントを割り当てるステップと、
第１ローカルメモリセグメントを前記グローバルメモリセグメントにマッピングするステップと、
前記第１ローカルメモリセグメントは第１ノードコンテナの第１ローカルメモリによって割り当てられ、前記第１ノードコンテナは前記第１処理ノードを含み、前記第１処理ノードは、前記第１ノードコンテナにおいてマッピングされた第１ローカルメモリセグメントにアクセスすることにより、前記グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックを直接にアクセスし、
第２処理ノードから第２要求を受信して前記第１通信テーマを購読するステップと、
前記第２要求に応答し、第２ローカルメモリセグメントを第１グローバルメモリセグメントにマッピングするステップとを含み、
前記第２ローカルメモリセグメントは第２ノードコンテナの第２ローカルメモリによって割り当てられ、前記第２ノードコンテナは前記第２処理ノードを含み、前記第２処理ノードは、前記第２ノードコンテナにおいてマッピングされた第２ローカルメモリセグメントにアクセスすることによって、前記第１グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックに直接にアクセスする
ことを特徴とするデータ処理システム。
【請求項１６】
前記第１データストリームは、複数の通信テーマに関連付けられる複数のデータストリームの一つであり、前記データストリームのそれぞれは、前記グローバルメモリによって割り当てられ対応のデータブロックを記憶するための複数のグローバルメモリセグメントの一つに関連付けられる
ことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記第１ノードコンテナは、前記第１ローカルメモリに関連付けられる第１バーチャルマシンを含み、前記第２ノードコンテナは、前記第２ローカルメモリに関連付けられる第２バーチャルマシンを含む
ことを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記第２処理ノードは、前記第１通信テーマを購読する、購読処理ノードとする複数の処理ノードの一つであり、前記購読処理ノードのそれぞれは、前記購読処理ノードからの、対応するローカルメモリにおけるローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングして前記第１データストリームの前記データブロックにアクセスする
ことを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記動作は、
前記第１処理ノード及び前記第２処理ノードが前記第１グローバルメモリセグメントに記憶される前記データブロックに対するアクセスをモニタリングするモニタリングステップと、
前記アクセスが所定期間内に活動しない場合は、前記第１グローバルメモリセグメントを、前記グローバルメモリセグメントのフリーグローバルメモリプールにリリースするステップと、をさらに含む
ことを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記モニタリングステップにおいて、
前記第１データストリームのすべてのデータブロックが、前記第２処理ノードにより読み出されたか否かを判断するステップと、
前記第１処理ノードによって生成された任意の新しいデータブロックが存在するか否かを判断し、前記第１データストリームのすべてのデータブロックが既に読み出され、且つ前記所定期間内に新しいデータブロックが生成されていない場合、前記第１グローバルメモリセグメントをリリースするステップと、をさらに含む
ことを特徴とする請求項１９に記載のシステム。
【請求項２１】
前記グローバルメモリセグメントをリリースする前に、前記動作は、
前記グローバルメモリセグメントから、前記第１ローカルメモリの前記第１ローカルメモリセグメントとのマッピングを解除させるステップと、
前記グローバルメモリセグメントから、前記第２ローカルメモリの前記第２ローカルメモリセグメントとのマッピングを解除させるステップと、をさらに含む
ことを特徴とする請求項２０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は大体自律走行車の操作に関する。より具体的には、本発明の実施形態は、自律走行車を操作するための計算ノードにおける効果的な通信に関する。
【背景技術】
【０００２】
自律走行車は通常に手動モード又は自律モードで操作することができる。手動モードで操作する車両は運転者の入力に応答する。自律モードで操作される場合、車両は、車載センサを利用して様々な位置に導かれることができ、それによってヒューマンインタラクションが最小限の状況で、又は搭乗者がいない状況で車両走行を可能にする。自律モード（例えば、無人運転）で操作される車両は乗員、特に運転者を運転関連作業から解放させることを可能にする。
【０００３】
従来の車両に比べると、自律運転車両自体としては、計算能力に対し高く要求される。通常に、自律走行車コンピュータの内部アーキテクチャーにおいては、自律走行の各種タスク（例えば、センサプロセス、感知、企画及び制御）に用いられるプログラムを含む複数のノードと、前記ノードとリングし、相互に興味のあるテーマに対しデータを転送する通信チャンネルと、を含む。
【０００４】
自律走行車の実用性、ユーザ体験及び安全性は、エンド・ツー・エンド計算のリアルタイム性能に依存するところが大きいため、ノードにおける通信性能に対する要求も非常に高い。典型的の需要においては、高いスループット（特にデータチャンネルに対する）と、低いタイムディレイ（特にチャンネルの制御に対する）と、低いプロセッサ占用（ｐｒｏｃｅｓｓｏｒ  ｏｃｃｕｐａｔｉｏｎ）と、低いメッセージロス率（ｍｅｓｓａｇｅ  ｄｒｏｐ  ｒａｔｅ）と、他の拡張機能（例えば、プロトコール柔軟の通信スピードの能力）と、を含むが、それに限らない。
通信メカニズムと間接的に関連する他の要求は、プログラム／プロセスアイソレーション及び資源管理を含み、プログラム／プロセスアイソレーション及び資源管理は、システムのロバスト性及び安定性を改善させる。通常のアーキテクチャーはこのような要求を満足させることができない。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の実施形態は、自律走行車における処理ノードのデータストリームを管理するためのコンピュータ実施方法、自律走行車における処理ノードのデータストリームを管理するための装置及びデータ処理システムを提供する。
【０００６】
本発明の様態において、自律走行車における処理ノードのデータストリームを管理するためのコンピュータ実施方法を提供し、この方法は、第１処理ノードから第１要求を受信して、別の処理ノードによって購読（サブスクライブ）されるべき第１通信テーマを表示する第１データストリームのデータブロックを生成し、ここで、前記第１処理ノードは複数処理ノードの一つであり、各処理ノードは、自律走行車を操作する特定機能を処理し、且つ、ここで、それぞれの前記処理ノードは、特定操作環境を有する特定ノードコンテナにおいて実行されるステップと、前記第１要求に応答し、グローバルメモリから第１グローバルメモリセグメントを分配して前記第１データストリームの前記データブロックを記憶するステップと、第１ローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングし、前記第１ローカルメモリセグメントは第１ノードコンテナの第１ローカルメモリから分配され、前記第１ノードコンテナは前記第１処理ノードを含み、ここで、前記第１処理ノードは、前記第１ノードコンテナにおいてマッピングされた第１ローカルメモリセグメントをアクセスすることにより、前記第１グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックを直接にアクセスするステップと、を含む。
【０００７】
もう一つの様態において、自律走行車における処理ノードのデータストリームを管理する装置を提供し、この装置は、第１処理ノードから第１要求を受信して、別の処理ノードによって購読されるべき第１通信テーマを表示する第１データストリームのデータブロックを生成し、ここで、前記第１処理ノードは複数処理ノードの一つであり、各処理ノードは、自律走行車を操作する特定機能を処理し、且つ、ここで、それぞれの前記処理ノードは、特定操作環境を有する特定ノードコンテナにおいて実行されるユニットと、前記第１要求に応答し、グローバルメモリから第１グローバルメモリセグメントを分配して前記第１データストリームの前記データブロックを記憶するユニットと、第１ローカルメモリセグメントを前記第１グローバルメモリセグメントにマッピングし、前記第１ローカルメモリセグメントは第１ノードコンテナの第１ローカルメモリから分配され、前記第１ノードコンテナは前記第１処理ノードを含み、ここで、前記第１処理ノードは、前記第１ノードコンテナにおいてマッピングされた第１ローカルメモリセグメントをアクセスすることにより、前記第１グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックを直接にアクセスするユニットと、を含む。
【０００８】
さらにもう一つの様態において、データ処理システムを提供し、このデータ処理システムは、プロセッサと、前記プロセッサに接続されて命令を記憶する記憶装置と、を含み、前記命令が前記プロセッサにより実行される場合、自律走行車における処理ノードのデータストリームの操作を処理することを前記プロセッサにより実行させ、前記操作は、第１処理ノードから第１要求を受信して、別の処理ノードによって購読されるべき第１通信テーマを表示する第１データストリームのデータブロックを生成し、ここで、前記第１処理ノードは複数処理ノードの一つであり、各処理ノードは、自律走行車を操作する特定機能を処理し、且つ、ここで、それぞれの前記処理ノードは、特定操作環境を有する特定ノードコンテナにおいて実行されるステップと、前記第１要求に応答し、グローバルメモリからグローバルメモリセグメントを分配して前記第１データストリームの前記データブロックを記憶するステップと、第１ローカルメモリセグメントを前記グローバルメモリセグメントにマッピングし、前記第１ローカルメモリセグメントは第１ノードコンテナの第１ローカルメモリから分配され、前記第１ノードコンテナは前記第１処理ノードを含み、ここで、前記第１処理ノードは、前記第１ノードコンテナにおいてマッピングされた第１ローカルメモリセグメントをアクセスすることにより、前記グローバルメモリセグメントに記憶される前記第１データストリームの前記データブロックを直接にアクセスするステップと、を含む。
【図面の簡単な説明】
【０００９】
本出願の実施形態は、図面の各図に例として非限定的に示され、図面における同一符号は、類似の構成要素を示す。
【００１０】
【図１】本発明の一実施形態に係るネットワーク化システムを示すブロック図である。
【図２】本発明の一実施形態に係る自律走行車を示すブロック図である。
【図３】本発明の一実施形態に係る、自律走行車と共に使用されてもよいデータ処理システムのブロック図である。
【図４】本発明の一実施形態に係るグローバルメモリセグメントの実施例のブロック図である。
【図５Ａ】本発明の一実施形態に係るセグメントメタデータを記憶するためのデータ構造を示すブロック図である。
【図５Ｂ】本発明の一実施形態に係るデータブロックのインデックスのデータ構造を示すブロック図である。
【図６】本発明の一実施形態に係る自律走行車を操作するメモリ管理のプロセスを示すフローチャートである。
【図７】本発明のもう一実施形態に係る自律走行車を操作するメモリ管理のプロセスを示すフローチャートである
【図８】本発明のもう一実施形態に係る自律走行車を操作するメモリ管理のプロセスを示すフローチャートである。
【図９】一実施形態に係るデータ処理システムを示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、説明の詳細を参照しながら、本出願の様々な実施形態及び方法を説明し、図面は、前記様々な実施形態を示す。以下の説明及び図面は、本出願を説明するためのものであり、本出願を限定するものではない。本出願の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、いくつかの例では、本出願の実施形態に対する簡単な説明を提供するために、周知又は従来技術の詳細について説明していない。
【００１２】
本明細書では「一実施形態」又は「実施形態」とは、当該実施形態について組み合わせて説明された特定特徴、構造又は特性が、本出願の少なくとも一実施形態に含まれてもよい。フレーズ「一実施形態では」は、本明細書全体において同一実施形態を指すとは限らない。
【００１３】
いくつかの実施形態によれば、自律走行車内の処理ノードにおいて効率の高いメカニズムが利用され、ここで、前記通信メカニズムは、前記処理ノードを含むノードコンテナにおける共用するメモリセグメントに基づくものである。新しい通信メカニズムは、性能及び安定性要素の面において、従来方法より優れた大きな利点を提供する。一実施形態において、それぞれのコンピューティングタスクは、独立のノードコンテナ（例えば、バーチャルマシン）にホストされる処理ノードにより実行され、プロセスの形態で実行されてもよく、異なるルートディレクトリーを有したり、さらに隔離されたりする。つまり、システムの安定性と信頼性を維持することができる。通信メカニズムは、共用するグローバルメモリセグメントを、ノード間の通信の基礎として管理する。異なるノードコンテナにおいて、同一テーマに対して興味を持つ複数の配信者及び購読者は、各自のローカルメモリアドレス空間にマッピングされる共用するグローバルメモリをアクセスすることによって、データを送受信し、それにより、より高い安定性及び高い信頼性を実現することが可能になる。
【００１４】
一実施形態においては、生産者ノードとする第１処理ノードから第１要求を受信することによって、別の処理ノードが購読しようとする通信テーマに関連するデータストリームのデータブロックを生成したり発表したりする場合、グローバルメモリからグローバルメモリセグメントが分配されて前記データストリームのデータブロックを記憶する。第１処理ノードは、自律走行車を操作するデータ処理システムにおいて実行される複数の処理ノードの一つである。それぞれの処理ノードは、自律走行車を操作するための特定機能を実行するように設置されてもよい。安定性、信頼性及び安全性を実現するために、それぞれの前記処理ノードは、独立の操作環境を有するノードコンテナ（例えば、バーチャルマシン）において実行される。グローバルメモリセグメントが第１データストリームに分配されたと、第１ローカルメモリから第１ローカルメモリセグメントを分配することができ、前記第１ローカルメモリは、第１処理ノードを含む第１ノードコンテナと関連付けられる。
【００１５】
そして、第１ローカルメモリセグメントを、グローバルメモリのグローバルメモリセグメントにマッピングすることにより、第１処理ノードがマッピングされた第１ローカルメモリセグメントを介し、第１データストリームのデータブロックをアクセスすることができる。言い換えれば、グローバルメモリセグメントのグローバルメモリアドレス空間は、第１ノードコンテナのローカルメモリアドレス空間にマッピングされる。第１処理ノードは、第１ノードコンテナとグローバルメモリとの間にセキュリティの脆弱性がない状況で、第１ノードコンテナにおいてマッピングされた第１ローカルメモリセグメントを簡単にアクセスすることで、グローバルメモリセグメントにおけるデータブロックをアクセスする。
【００１６】
そして、一実施形態に基づいて、購読者ノードとする第２処理ノードから第２要求を受信して第１データストリームを購読する時に、第２処理ノードを含む第２ノードコンテナと関連する第２ローカルメモリから第２ローカルメモリセグメントを分配する。そして、第２ローカルメモリセグメントをグローバルメモリセグメントにマッピングすることにより、第２処理ノードは、第２ノードコンテナとグローバルメモリとの間にセキュリティの脆弱性がない状況で、第２ノードコンテナにおいてマッピングされた第２ローカルメモリセグメントを介して、グローバルメモリセグメント内に記憶されるデータブロックをアクセスする。第１ローカルメモリセグメント、第２ローカルメモリセグメント及びグローバルメモリセグメントは、異なるメモリ装置から分配されてもよく、その代わりに、それらは同一メモリ装置の異なるメモリリージョン又はエリアから分配されてもよい。一実施形態において、第１ローカルメモリセグメント、第２ローカルメモリセグメント及びグローバルメモリセグメントを、具体的に、ノードコンテナとメモリマネジャーのバーチャルメモリに分配される一部のバーチャルメモリセグメントとする。よって、処理ノードを単独のノードコンテナに含ませることにより、生産者ノードによって生成されたデータブロック及び購読者ノードによって購読されたデータブロックをアクセスする効率を大きく改善させるとともに、処理ノードにおける安定性、信頼性及び安全性を維持させることができる。
【００１７】
図１は本発明の一実施形態に係る自律走行車のネットワーク配置を示すブロック図である。図１に示されるように、ネットワーク配置１００は、ネットワーク１０２を介して一つ又は複数のサーバ１０３〜１０４と通信可能に接続する自律走行車１０１を含む。一つの自律走行車を示したが、複数の自律走行車はネットワーク１０２を介して、相互に接続する及び／又はサーバ１０３〜１０４に接続する。ネットワーク１０２は任意のタイプのネットワークであってもよく、例えば、有線や無線のローカルエリアネットワーク（ＬＡＮ）、及びインターネット、セルラーネットワーク、衛星ネットワークのようなワイドエリアネットワーク（ＷＡＮ）、又はその組合せであってもよい。サーバ１０３〜１０４は、任意のタイプのサーバ又はサーバクラスター、例えばネットワーク又はクラウドサーバ、アプリケーションサーバ、バックエンドサーバ又はその組合せであってもよい。サーバ１０３〜１０４は、データ分析サーバ、コンテンツサーバ、交通情報サーバ、マップ及びポイントオブインタレスト（ＰＯＩ）サーバ又は位置サービスサーバなどである。
【００１８】
自律走行車は、自律走行モードに設定できる車両を指し、前記自律走行モードにおいて、運転者の入力が極めて少ない又はない状況で、車両は、環境を介してナビゲートする。このタイプの自律走行車は、センサシステムを含んでもよく、前記センサシステムが車両操作の環境に関係する情報を検出するように設置される一つ又は複数のセンサである。車両及び他の関連する制御装置は、検出した情報を用いて、当該環境を介してナビケートする。自律走行車１０１は、手動モード、完全自律走行モード又は一部自律走行モードで操作されることができる。
【００１９】
一実施形態において、自律走行車１０１は、データ処理システム１１０、車両制御システム１１１、無線通信システム１１２、ユーザインタフェースシステム１１３、情報エンタテインメントシステム１１４及びセンサシステム１１５を含むが、それらに限定されない。自律走行車１０１は、通常車両における汎用部品（例えば、エンジン、車輪、ハンドル、ギアボックスなど）をさらに含んでもよい、前記汎用部品は、車両制御システム１１１及び／又はデータ処理システム１１０が多種の通信信号及び／又は命令（例えば、加速信号又は命令、減速信号又は命令、転向信号又は命令、ブレーキ信号又は命令など）を使用することにより、制御されてもよい。
【００２０】
部品１１０〜１１５は、相互接続部材、バス、インターネット又はその組み合わせによって、通信可能に相互接続する。例えば、部品１１０〜１１５は、コントローラーエリアネットワーク（ＣＡＮ）バスを介して通信可能に相互接続する。ＣＡＮバスは車両バス標準であり、マイクロコントローラー及び装置は、ホストコンピュータがない場合のアプリケーションにおいて、相互に通信できるように設計される。それはメッセージに基づくプロトコールであり、一般的に車内用の多重多用電気配線用に設計されるが、他の状況に利用される場合ある。
【００２１】
図２を参照すれば、一実施形態において、センサシステム１１５は、一つ又は複数のカメラ２１１、全地球測位システム（ＧＰＳ）ユニット２１２、慣性計測ユニット（ＩＭＵ）２１３、レーダーユニット２１４及び光検出と測距（ＬＩＤＡＲ）ユニット２１５を備えるが、それらに限定されない。ＧＰＳシステム２１２はトランシーバーを備えてもよく、前記トランシーバーは、自律走行車の位置に関する情報を提供するように操作されてもよい。ユニットＩＭＵ２１３は、慣性加速度に基づいて自律走行車の位置及び定向変化を感知することができる。レーダーユニット２１４は、無線電信信号を用いて自律走行車のローカル環境における対象を感知するシステムを示しもよい。いくつかの実施形態において、対象を感知するほかに、レーダーユニット２１４は、対象の速度及び/又は進行方向を感知することさらにできる。ＬＩＤＡＲユニット２１５は、レーザーを用いて自律走行車の環境における対象を感知することもできる。ＬＩＤＡＲユニット２１５は、他のシステム部品の中の一つ又は複数のレーザー源、レーザースキャナー及び一つ又は複数の検出器を備えることができる。カメラ２１１は、自律走行車の周辺環境の画像を撮影するための一つ又は複数の装置を備えることができる。カメラ２１１は、静的カメラ及び/又はビデオカメラであってもよい。カメラは、機械的に移動可能であってもよく、例えば、カメラを回転プラットホーム及び/又は傾斜プラットホームに取り付けられてもよい。
【００２２】
センサシステム１１５は、他のセンサをさらに備えてもよく、例えば、ソナーセンサ、赤外線センサ、転向センサ、スロットルセンサ、ブレーキセンサ及びオーディオセンサ（例えば、マイクロフォン）をさらに備えってもよい。オーディオセンサは、自律走行車の周辺環境の音声をキャプチャするように設置されてもよい。転向センサは、ハンドル、車両の車輪又はそれらの組み合わせの転向角度を感知するように設置されてもよい。スロットルセンサ及びブレーキセンサは、それぞれ車両のスロットル位置とブレーキ位置を感知する。いくつかの場合に、スロットルセンサ及びブレーキセンサは、集積化のスロットル／ブレーキセンサに統合されてもよい。
【００２３】
一実施形態において、車両制御システム１１１は、転向ユニット２０１、スロットルユニット２０２（加速ユニットとも称す）、ブレーキユニット２０３、コンピュータビジョンシステム２０４、ナビゲーションユニット２０５（ナビゲーション及び経路検索（ｐａｔｈｉｎｇ）又はナビゲーション／経路検索システムとも称す）及び衝突防止ユニット２０６（障害物回避システムとも称す）を備えるが、それらに限定されない。転向ユニット２０１は、車両の方向又は進行方向を調節する。スロットルユニット２０２は、モーター又はエンジンのスピードを制御し、従って、前記モーター又はエンジンは、車両の速度及び加速度を制御する。ブレーキユニット２０３は、摩擦を提供することにより、車両の車輪又はタイヤを遅くすることで車両を減速させる。
【００２４】
コンピュータビジョンユニット又はシステム２０４は、一つ又は複数のカメラ２１１によってキャプチャされた画像を処理、且つ分析することによって、自律走行車の環境における対象及び／又は特徴を識別する。前記対象は、交通信号、車路エージ、他の車両、通行人及び／又は障害物などを含んでもよい。コンピュータビジョンシステム２０４は、対象識別アルゴリズム、ビデオ追跡及び他のコンピュータビジョンテクノロジを利用することができる。いくつかの実施形態において、コンピュータビジョンシステム２０４は、環境マップの制作、対象の追跡、及び対象速度の推定などができる。
【００２５】
ナビゲーションユニット又はシステム２０５は、自律走行車の走行経路を決定する。例えば、ナビゲーションシステムは、自律走行車が大体最終目的地に導く車道経路に沿って前進するとともに、感知した障害物を基本的に回避するように一連の速度及び所定の前進方向を決定することができる。目的地はユーザインタフェースによるユーザ入力に基づいて設定されてもよい。ナビゲーションシステム２０５は自律走行車が走行していると同時に走行経路を動的に更新してもよい。ナビゲーションシステムは、ＧＰＳシステム及び１つ又は複数の地図からのデータを合併して自律走行車用の走行経路を決定する。
【００２６】
衝突防止ユニット又はシステム２０６は、自律走行車環境における潜在的障害物を識別、評価そして、回避或いは他の方法により迂回することができる。例えば、衝突防止システム２０６は、制御システムにおける１つ又は複数のサブシステムを操作して旋回動作、方向転換動作、ブレーキ動作等を行うように、自律走行車がナビゲーションにおける変化を遂行できる。衝突防止システム２０６は、周囲の交通モード、道路状況等に基づいて実現可能な障害物回避動作を自動的に決定することができる。衝突防止システム２０６は、自律走行車が旋回して入ろうとする、当該自律走行車に隣接する領域に位置する車両、建築障害物等を他のセンサシステムにより検出した場合に旋回動作を行わないように構成されてもよい。衝突防止システム２０６は、利用可能で自律走行車の搭乗者の安全性を最大化する動作を自動的に選択することができる。衝突防止装置２０６は、自律走行車の車室に最小の加速度をもたらすように予測された回避動作を選択してもよい。図２に示される部品は、ハードウェア、ソフトウェア、又はそれらの組み合わせで実施されてもよい。
【００２７】
もう一度図１を参照し、無線通信システム１１２は、自律走行車１０１が外部システム（例えば、装置、センサ、その他の車両など）との通信を許可する。例えば、無線通信システム１１２は、直接的に又は通信ネットワークを介して１つ又は複数の装置と無線で通信でき、例えば、ネットワーク１０２を介して、サーバ１０３〜１０４と通信する。無線通信システム１１２は、任意のセルラ通信ネットワーク又は無線ＬＡＮ（ＷＬＡＮ）、例えばＷｉＦｉ（登録商標）を用いて他の部品またシステムを通信してもよい。無線通信システム１１２は、例えば赤外リンク、ブルートゥース（登録商標）等を用いて装置（例えば、搭乗者の移動装置、ディスプレイ装置、車両１０１内のスピーカー）と直接通信できる。ユーザインタフェースシステム１１３は、車両１０１において取り付けられた外部装置の一部であってもよく、例えば、キーボード、タッチパネル装置、マイクロフォン及びスピーカーなどを含む。
【００２８】
特に、自律走行モードで操作される場合、自律走行車１０１の一部又は全部機能は、データシステム１１０によって制御又は管理されることができる。データシステム１１０は、必要となるハードウェア（例えば、プロセッサ、メモリ、メモリ装置）及びソフトウェア（例えば、操作システム、計画及びルーティングアプリケーション）を含み、前記ハードウェア及びソフトウェアは、センサシステム１１５、制御システム１１１、無線通信システム１１２及び／又はユーザインタフェース１１３から情報を受信し、受信した情報を処理し、出発点から目的地へのルート又は経路を計画し、且つ、計画及び制御情報に基づいて車両１０１を操作するために用いられる。また、データ処理システム１１０は、車両制御システム１１１と一体にされてもよい。
【００２９】
例えば、搭乗者とするユーザは、ユーザインタフェースを介して、経路の出発位置及び目的地を指定する。データ処理システム１１０は、自律走行車１０１の他の部品と通信することによって経路に関するデータを取得する。例えば、データ処理システム１１０は、サーバ１０３〜１０４の一部とする位置サーバ及びマップ並びＰＯＩ（ＭＰＯＩ）サーバから位置及び経路情報を取得することができる。位置サーバは、位置サービスを提供し、且つ、ＭＰＯＩサーバ１０５は、マップサービス及びある位置のＰＯＩを提供する。また、このような位置及びＭＰＯＩ情報は、データ処理システム１１０の永久記憶装置においてローカルキャッシュ記憶されることができる。
【００３０】
自律走行車１０１が前記経路に沿って走行する期間に、データ処理システム１１０は、さらに交通情報システム又はサーバ（ＴＩＳ）からリアルタイム交通情報を取得できる。なお、サーバ１０３〜１０４は、第三者エンティティにより操作されてもよい。また、サーバ１０３〜１０４の機能は、データ処理システム１１０と統合されてもよい。リアルタイム交通情報、ＭＰＯＩ情報、位置情報及びセンサシステム１１５によって検出、又は感知されたリアルタイムの一部環境データ（例えば、障害物、対象、近辺車両）に基づいて、データ処理システム１１０は、最適な経路を計画し、且つ、計画された経路に基づいて、例えば、制御システム１１１を介して、車両１０１を操作することにより、安全及び効率的に指定の目的地に到着することができる。
【００３１】
一実施形態に基づいて、自律走行車１０１は、情報及びエンタテイメントを車両の搭乗者に提供するためのエンタテイメントシステム１１４をさらに備えてもよい。ローカル及び／又はリモートで記憶される（例えば、サーバ１０３〜１０４で提供される）内容情報に基づいて、前記情報及びエンタテイメント内容を受信し、コンパイルし、及び表示することができる。例えば、情報は、ネットワーク１０２を介して、サーバ１０３〜１０４の何れかからリアルタイムでストリームに転送され、且つ、車両１０１の表示装置に表示される。前記情報が、例えば、一つ又は複数のカメラでリアルタイムにキャプチャされたローカル情報に追加されてもよく、且つ、そのあと仮想現実の形で拡張した内容を表示する。
【００３２】
自律走行車において、実際の又は物理の窓が存在しないかもしれない。逆に、「窓」（本文に仮想窓と称す）は、表示装置（車窓状に成型した平面又は曲面のスクリーン表示装置であり、選択的にタッチパネルを有する）によって表示又は代替されてもよい。表示装置は一つ又は複数の適切なビデオカメラによってリアルタイムで動的にキャプチャされた画像又は画像ストリーム（例えば、ビデオ）を表示し、ユーザが透明な窓を通して実際の物理コンテンツを見る又は視聴することと同様である。各「窓」（例えば、表示装置）に対して、リアルタイムに表示しようとする対応のコンテンツをストリーム送信することに用いられる相応な表示チャンネルが存在し、前記対応のコンテンツは拡張現実システム（例えば、情報エンタテインメントシステム１１４及び／又はデータ処理システム１１０）により集中的に処理されることができる。この場合、仮想現実形態で（拡張現実形態とも称する）情報エンタテインメントシステム１１４を介して拡張された画像を表示する。
【００３３】
例えば、コンテンツデータベース又はリモートコンテンツ提供者又はコンテンツサーバから受信されたコンテンツアイテムを、カメラでローカルキャプチャした画像に重ねて、拡張された画像となる。そして、自律走行車における表示装置によって拡張された画像を表示する。前記表示装置は、車両の普通窓と呈するように配置される。ユーザは表示装置を見る時に、仮想現実の形態で画像の対象を仮想対象として表示させ、ユーザが車両の通常の窓によって物理対象を観察すると同様のようである。表示装置は、拡張された画像（例えば、拡張されたビデオ）のストリームをリアルタイムに表示することができる、これは拡張現実（ＡＲ）環境と類似し、又は、拡張現実（ＡＲ）環境をシミュレーションする。
【００３４】
一実施形態において、位置及び経路情報、ＭＰＯＩ情報及び／又はリアルタイム交通情報、情報エンタテインメントシステム１１４及び／又はデータ処理システム１１０に基づいて、現在の交通環境（例えば、ＭＰＯＩ）に適するあるタイプのコンテンツを決定する。システムは、コンテンツ索引（表示せず）において、コンテンツアイテム候補とするリストコンテンツアイテム（例えば、サポートコンテンツ又はＡｄ）を例えばリアルタイム交通情報に基づいて識別するために、検索操作を実行する。
【００３５】
一実施形態において、システムは多種のランキングアルゴリズムを用いてリストにおけるコンテンツアイテムをランキングする。ユーザのユーザ設定ファイルに基づいてコンテンツアイテムをランキングしてもよい。例えば、ユーザ設定ファイルから導出されるユーザの好みに基づいてコンテンツアイテムをランキングしてもよい。ユーザ過去のユーザ操作履歴に基づいて、ユーザ設定ファィルをコンパイルしてもよい。一実施形態において、システムは、一つ又は複数のコンテンツランキングモデルを、それぞれのコンテンツアイテムに適用することにより、それぞれのコンテンツアイテムのランキングスコアを決定する。ランキングスコアが所定閾値より高いコンテンツアイテムを選択してもよい。過去の類似走行環境又は交通状況の既知特徴の集合を用いてコンテンツランキングモデルをトレニングしてもよい。類似ユーザのユーザ設定ファィルに基づいて、コンテンツランキングモデルをトレニングしてもよい。
【００３６】
そして、選択されたコンテンツアイテムがレンダリングされ、且つ、自律走行車における表示装置に表示される。一実施形態において、システムは、選択したコンテンツアイテムを自律車に取り付けられた一つ又は複数のカメラによってこの時点でキャプチャした画像にさらに拡張する。一実施形態において、画像に対し、画像認識を行うことにより前記画像が示すコンテンツを導出又は理解する。例えば、一つ又は複数のキーワードを導出することで前記画像又はＰＯＩを説明する。コンテンツアイテムリストは、さらに画像が表示した一つ又は複数のキーワード又はＰＯＩに基づいて識別されることができる。システムは、そして、前記選択したコンテンツアイテムを画像に拡張して拡張された画像を生成し、ここで、前記コンテンツアイテムが画像と重ねてもよい。その後、自律走行車における表示装置に拡張した画像を表示する。注意すべきものは、いくつかの実施形態によれば、情報エンタテインメントシステム１１４をデータ処理システム１１０と一体にしてもよい。
【００３７】
また、ユーザは、コンテンツストア又はデータベースからのプリコンパイル済みのコンテンツ（例えば、ビデオ、映画）リストから詳しく選択し、前記コンテンツメモリ又はデータベースは、ネットワーク（例えば、クラウド）を介して、コンテンツ提供者のコンテンツサーバによって周期的に更新される。それにより、ユーザは、リアルタイムにキャプチャしたリアルタイムのアクチュアルコンテンツ又は予めレンダリングしたコンテンツを具体的に選択し、表示装置に表示させてもよい。例えば、データメモリから検索する。例えば、自律走行車１０１はニューヨーク市内に雪が降る日に走行しているとする場合、ユーザは、表示装置を切り替え、ハワイの晴れている環境を表示させ、自律走行車１０１が晴れている日に走行するようにさせる。コンテンツは、複数の表示装置（例えば、複数の窓）において、協力又は協調の形態（即ち、仮想現実方法）で表示されてもよい。
【００３８】
一実施形態に基づいて、データ処理システム１１０は、複数の処理ノードを備え、それぞれの処理ノードは、自律走行車１０１を操作する特定機能を実行する。前記処理ノードは、マスターノードにより調整され、又は、自律走行車１０１を操作して制御することに適するオペレーティングシステム（例えば、ローボードオペレーティングシステム（ＲＯＳ））にホストされてもよい。ＲＯＳは、ローボードのソフトウェアの開発に用いられ、異種コンピュータクラスタにおいてオペレーティングシステムと類似する機能を提供するソフトウェアのフレームワークの集合である。ＲＯＳは、標準のオペレーティングシステムサービスを提供し、例えば、ハードウェア抽象、ローレベル装置制御、通常機能の実行、プロセス間の情報転送及びパッケージ管理。ＲＯＳに基づくプロセスの実行している集合は、グラフアーキテクチャで表示され、グラフアーキテクチャにおいて、処理は、センサ情報、制御情報、状態情報、計画情報、アクチュエータ情報及び他の情報を受信、配信及び多重送信するノードに実行されてもよい。
【００３９】
処理ノードにより実行する自律走行車１０１を操作する機能は、例えば、センサ処理、感知、計画及び制御、欠陥確認、セグメント及び識別、顔面識別、ゼスチャー識別、モーション追跡、モーション理解、立体ビジョン（例えば、複数のカメラを介する深度感知）などを含む。これらの機能の一つ又は複数は一つ又は複数のノードにより実行されることができる。一実施形態において、それぞれの処理ノードはホストされ、且つ特定ノードコンテナに含まれることができ、且つ、マスターノードにより管理される。ノードコンテナはバーチャルマシン又はサンドボックス環境であってもよく、ここで、サンドボックス環境は、独立の操作環境及び資源処理の専用セット（例えば、プロセッサ、メモリ、記憶装置、ネットワークスタック）を有する。
【００４０】
一実施形態において、処理ノードは共用のメモリに基づく通信メカニズムを介して互いに通信してもよい。全ての通信データ又は情報は、グローバルメモリに記憶され、そして、処理ノードにより、それらに対応するノードコンテナにおけるマッピングされたローカルメモリアドレス空間を介してアクセスされる。二つの処理ノード間の通信セッションは、データ（又は情報）生産者ノード及びデータ購読者ノードの形態の通信テーマと構築される。交換しようとするデータは、グローバルメモリセグメントに記憶され、前記グローバルメモリセグメントは、マスターノードと関連するグローバルメモリから分配される。
【００４１】
それぞれの生産者ノード及び購読者ノードは、それらのローカルメモリからローカルメモリセグメントを分配し、且つ、グローバルメモリセグメントを当該ローカルメモリセグメントにマッピングする。そして、生産者ノードはデータを容易にマッピングされたローカルメモリセグメントに入力し、前記マッピングしたローカメモリセグメントはデータを対応するグローバルメモリセグメントに記憶する。類似的に、購読者は、マッピングされたローカルメモリセグメントからデータを容易に読み出し、前記マッピングされたローカルセグメントは、対応するグローバルメモリセグメントからデータを読み出す。ローカルメモリセグメントをグローバルメモリセグメントにマッピングさせることにより、処理ノードは、処理ノードを独立のノードコンテナに含ませることでより高い性能を実現するとともに、処理ノード間の安全性を維持できる。通信セッションが完了した時（例えば、全部データを読み取り完了し、新しい入力データがない）に、グローバルメモリセグメント及びローカルメモリセグメントについては、マッピング解除され、且つ対応するフリーメモリプールにリリースされることができる。
【００４２】
図３は、本発明に係る一実施形態のデータ処理システムを示すブロック図であり、前記データ処理システムは自律走行車と共に利用されることができる。システム３００は、図１のデータ処理システム１１０の一部として実行されてもよい。図３によれば、システム３００は、マスターノード３０１を備えるが、それに限定されなく、前記マスターノードは、処理ノード３０２〜３０３を調整及び／又は管理する。ここで二つの処理ノードを示したが、それより多い又は少ない処理ノードを実行してもよい。ノード３０１〜３０３は、システムメモリにロードされ、且つ一つ又は複数のプロセッサにより実行されることができる。それぞれの処理ノード３０２〜３０３は、自律走行車（例えば、図１の自律走行車１０１）を操作する一つ又は複数機能を実行することができる。前記機能は、センサ処理、感知、計画及び制御、欠陥確認、セグメント及び識別、顔面識別、ゼスチャー識別、モーショントラッキング、モーション理解、立体ビジョン（例えば、複数のカメラを介する深度感知）などを含むが、それらに限定されない。
【００４３】
一実施形態において、それぞれの処理ノード３０２〜３０３は特定のノードコンテナ（本実施形態において、それぞれノードコンテナ３１１〜３１２である）にホストされることができる。ノードコンテナはサンドボックスの操作環境を指し、ここで、自律走行車を操作する一つ又は複数の機能を実行する一つ又は複数のプロセスは、前記サンドボックス操作環境において実行される。ノードコンテナは、物理処理資源の集合として実行できる専用処理資源の集合を有する（例えば、プロセッサ、メモリ、メモリ装置、ネットワークワイドバンドなど）。また、ノードコンテナと関連する処理資源は、他の処理ノードをホストする他のノードコンテナが共用するグローバル処理資源の集合から分配される処理資源のロジック集合である。通常に、ノードコンテナは、隔離式又はサンドボックス操作環境を提供し、隔離式又はサンドボックス操作環境で、ノードコンテナにおいて実行されている部品は、前記ノードコンテナの外部にある資源の何れも直接にアクセスすることができない。例えば、ノードコンテナにホストされた処理ノードは、直接に前記ノードコンテナの外部のグローバルメモリをアクセスしなくてもよい。一実施形態において、それぞれのノードコンテナ３１１〜３１２は、バーチャルマシンとして実行される。
【００４４】
コンピュータにおいて、バーチャルマシン（ＶＭ）は特定コンピュータシステムのシミュレーションである。バーチャルマシンは、真実又は仮想コンピュータのコンピュータアーキテクチャ及び機能に基づいて操作し、且つ、それらの実施形態は専用のハードウェア、ソフトウェア又は両者の組み合わせに関する。異なるタイプのバーチャルマシンが存在し、それぞれの種類は異なる機能を有する。システムバーチャルマシン（フルバーチャルＶＭとも称する）は、目標とするアクチュアルマシンに対する完全代替品及び完全のオペレーティングシステムに必要とする機能レベルを提供する。ハイパーバイザはネイティブ実行（Ｎａｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ）を用いてハードウェアを共用及び管理し、互いに隔離している複数の異なる環境が同一物理コンピュータにおいて実行されることを可能にする。モダンハイパーバイザは、ハードウェア補助の仮想化を使用し、前記ハードウェア補助の仮想化は、（主にホストプロセッサからの）仮想化特定ハードウェア能力を利用することにより、有効及び完全な仮想化を提供する。プロセスバーチャルマシンは、抽象的及びプラットホームが独立のプログラム実行環境を提供することにより、単独のコンピュータプログラムを実行するように設置される。いくつかのバーチャルマシンは、異なるアーキテクチャーもエミュレータし、且つ他のプロセッサ又はアーキテクチャーに対して入力したソフトウェアアプリケーションプログラム及びオペレーティングシステムの実行を可能にするように設置される。オペレーティングシステムレベルの仮想化は、複数の隔離されたユーザ空間の実例に対するカーネルのサポートにより、コンピュータ資源を分割することを可能にし、前記ユーザ空間の実例は通常にコンテナと称され、そして、エンドユーザにとって、リアルマシンに見えて感じる。
【００４５】
もう一度図３を参照し、マスターノード３０１は、バーチャルマシンモニター又はマネジャー（ＶＭＭ）の一部又は仮想化層の一部として実行されることができる。マスターノード３０１は、マスターノードコンテナにおいて実行されてもよく、又は、マスターノードコンテナに含まれてもよい。例えば、マスターノード３０１は、マスターオペレーティングシステムにホストされてもよいが、処理ノード３０２〜３０３は、それぞれクライアントオペレーティングシステムにホストされてもよい。マスターノード３０１は、ノードコンテナ３１１〜３１２においてホストされる処理ノード３０２〜３０３を調整又は管理する。一実施形態において、メモリマネジャー３２１（共用メモリ通信マネジャーとも称する）は、処理ノード３０２〜３０３においてメモリの利用を管理する。メモリマネジャー３２１は、例えば、アプリケーションプログラミングインタフェース（ＡＰＩ）を介して、ノードコンテナ３１１〜３１２のノードマネジャー３２２〜３２３と通信する。ノードマネジャー３２２〜３２３は、対応処理ノード３０２〜３０３へのプラグインとして実行される。上記説明のように、それぞれの処理ノード３０２〜３０３は、自律走行車を操作する特定の又は事前配置された機能を有する。処理ノード３０２〜３０３は、オペレーティングシステム（例えば、ＲＯＳオペレーティングシステム）に提供される一組の標準ライブラリの一部であってもよい。類似的に、メモリマネジャー３２１は、マスターノード３０１の一部として実行されてもよく、又は、マスターノード３０１のプラグインとして実行されてもよく、ここで、マスター３０１は、オペレーティングシステムによって提供される標準管理機能を含んでもよい。
【００４６】
一つ実施形態によれば、メモリマネジャー３２１はグローバルメモリ３１０のメモリの使用を管理し、異なる通信テーマ又はセッションに関連するデータストリームを記憶するためのグローバルメモリセグメントを分配したりその分配を解除したりする。ノードマネジャー３２２〜３２３は、それぞれの対応するローカルメモリセグメント３３２〜３３３を係るグローバルメモリセグメントにマッピングし、それぞれの対応するノードコンテナ３１１〜３１２において対応するマッピングされるローカルメモリセグメント３３２〜３３３を介して、グローバルメモリセグメントに記憶されるデータストリームのデータブロックをアクセス（例えば、入力、読み出し）する。本実施例において、処理ノード３０２は、一つ又は複数のデータストリームを生成する生産者ノードであって、処理ノード３０３は、一つ又は複数のデータストリームを購読したり消費したりする購読者ノード又は消費者ノードである。
【００４７】
一実施形態において、処理ノード３０２は、新しいデータストリームを提供また生成する場合、ノードマネジャー３２２は、例えば、ＡＰＩを介してメモリマネジャー３２１と通信することにより、データストリームの提供を要求する。前記要求を応答し、メモリマネジャー３２１は、グローバルメモリ３１０からグローバルメモリセグメントを分配することにより、データストリームのデータブロックを記憶及び維持する。本実施例において、グローバルメモリ３１０は、それぞれのメモリ特定データストリームと対応するデータブロック（例えば、データブロック３０７〜３０８）を記憶するグローバルメモリセグメント３０５〜３０６の行列を含む。本文におけるデータストリームは、特定通信セッションの中に、処理ノードにおいて交換されるデータを指し、ここで、グローバルメモリセグメントは、データストリームのデータブロックを維持するために用いられる。
【００４８】
本実施例において、メモリマネジャー３２１は、要求に応答してグローバルメモリセグメント３０５を処理ノード３０２に分配する。メモリマネジャー３２１は、グローバルセグメント３０５のメモリのポインタをノードマネジャー３２２に戻す。ノードマネジャー３２２は、メモリポインタに応答し、ローカルメモリセグメント（本実施例においてローカルメモリセグメント３３２）を分配する。そして、メモリマネジャー３２２は、ローカルメモリセグメント３３２をグローバルメモリセグメント３０５にマッピングする。ノードマネジャー３２２は、ノードマネジャー３２２をホストするオペレーティングシステムによる提供するメモリマッピング機能を呼び出すことにより、ローカルメモリセグメント３３２をグローバルメモリセグメント３０５にマッピングさせる。そして、処理ノード３０２はデータブロックを提供しようとする時に、処理ノード３０２及び／又はノードマネジャー３２２は、データブロックを容易にノードコンテナ３１１内のローカルメモリセグメント３３２における適切な位置に入力し、前記データブロックは、グローバルメモリセグメント３０５に対応する位置内に入力される。
【００４９】
類似的に、一実施形態に基づいて、処理ノード３０３は、処理ノード３０２により生成したデータストリームを購読しようとすると、ノードマネジャー３２３がＡＰＩを介してメモリマネジャー３２１と通信することにより前記購読を要求する。メモリマネジャー３２１は、前記要求に応答し、要求したデータストリームに対応するグローバルメモリセグメント（本実施例においては、グローバルメモリセグメント３０５である）を識別する。メモリマネジャー３２１はこのようなデータ構造又は索引（表示せず）を維持することができ、当該データ構造又は索引は、データストリーム及びそれらに関連するグローバルメモリセグメント及びそれらの生産者ノードを記録する。メモリマネジャー３２１は、識別したグローバルメモリセグメントのメモリポインタをノードマネジャー３２３に戻す。ノードマネジャー３２３は、メモリポインタに応答して、当該ローカルメモリのローカルメモリセグメント３３３を分配し、且つ、ローカルメモリセグメント３３３をグローバルメモリセグメント３０５にマッピングする。その後に、処理ノード３０３は、ノードコンテナ３１２におけるローカルメモリセグメント３３３を介して、簡単にデータブロックを読み出すことで、グローバルメモリセグメント３０５に記憶されるデータブロック３０７をアクセスする。
【００５０】
一実施形態において、メモリマネジャー３２１は、グローバルメモリセグメント３０５〜３０６に対し、ある管理又はハウスキーピング機能をさらに実行する。メモリマネジャー３２１は、グローバルメモリ３１０の使用及び処理ノードからのインタラクティブを周期的にモニタリングする。通信セッションが完了した時に、後の使用に備えるため、それに対応するグローバルメモリセグメントをリリースしたり、その分配を解除することができる。例えば、データストリームのすべてのデータブロックは既にすべての購読者に読み出され、且つ、所定の期間内に、対応する生産者ノードが生成した新しいデータブロックがない場合、対応するメモリセグメントをリリースしてもよい。代替例として、生産者ノード及びすべての購読者ノードは、既に、例えばＡＰＩを介して通信テーマから取り消された場合、関連するグローバルメモリセグメントをリリースしてもよい。そして、メモリマネジャー３２１は、どの通信テーマが誰より登録されるかの情報を維持することができる。任意の処理ノードが特定通信テーマを登録及び／又は特定通信テーマから取り消すことを可能にするＡＰＩが存在してもよい。
【００５１】
一実施形態において、グローバルメモリセグメント（例えば、グローバルメモリセグメント３０５）をリリース又はその分配を解除する前に、メモリマネジャー３２１は、生産者ノードとすべての購読者ノードとを通信（例えば、ＡＰＩのような通信インタフェースを介す）することにより、前記生産者ノード及び前記購読者ノードの取り消し、マッピング解除、及びそれらの対応するローカルメモリセグメント（例えば、ローカルメモリセグメント３３２〜３３３）のリリースを可能にする。
【００５２】
一実施形態において、データストリームのデータブロックは、予め配置された環状バッファ（環状キュー、循環バッファ、又はリングバッファとも称す）に記憶されてもよい。一実施形態において、メモリマネジャー３２１は、ノードマネジャー３２２〜３２３と協調することにより、グローバルメモリセグメントに記憶されるデータストリームのデータブロックに対するアクセスの一致性を確保する。一実施形態において、データブロックをグローバルメモリセグメントに入力するために、生産者ノードは、必ず少なくともアクセスされたデータブロックの排他ロックを取得しなければならない。一方、購読者は排他ロックを取得してデータブロックを読み出すことが必要であるか必要ではないか。メモリマネジャー３２１及び／又は処理ノードのノードマネジャーは、データブロックの状態を検査することにより、誰か特定のデータブロックをアクセスできるか又はアクセスできないかを維持及び強制実行する。
【００５３】
なお、生産者ノードがデータブロックを生成するスピードは、購読者ノードがデータブロックを読み出すスピードより速いことを防止することが重要であり、逆も同様である。通信インタフェースは、対応する処理ノードが同じ速度で進めない場合、生産者ノード又は購読者ノードがコールバック関数を登録することを可能にするように維持される。例えば、購読者がすべてのデータブロックの読み出しを完了した場合、生産者ノードが同じ速度で新しいデータブロックを生成することができない場合、購読者ノードは、コールバック関数を登録してもよい。その後新しいデータブロックが利用可能である場合、メモリマネジャー３２１は購読者ノードに通知して、購読者ノードに改めてデータブロックを消費させる。類似的に、購読者ノードがデータブロックを登録してもよい。データブロックが既に読み出され且つ当該メモリスペースがフリーとなる場合、コールバックインタフェースを介して生産者ノードに改めて新しいデータブロックを生成させるように通知する。
【００５４】
注意すべきは、ローカルメモリセグメント３３２、ローカルメモリセグメント３３３及びグローバルメモリセグメント３０５〜３０６は、異なるメモリ装置（例えば、異なる物理メモリ装置）から分配されてもよく、又は、また、それらは同一メモリ装置の異なるメモリリージョン又はエリアから分配されてもよい。一実施形態において、ローカルメモリセグメント３３２、ローカルメモリセグメント３３３及びグローバルメモリセグメント３０５〜３０６は、具体的に、ノードコンテナ３１１〜３１２及びメモリマネジャー３２１に分配される仮想メモリの一部とする仮想メモリセグメントである。
【００５５】
計算において、仮想メモリは、ハードウェア及びソフトウェアの両方を用いて実行されるメモリ管理技術である。それはプログラムに利用されるメモリアドレス（バーチャルアドレスを称す）をコンピュータメモリにおける物理アドレスにマッピングする。プロセス又はタスクに見られるマスターメモリは、連続するアドレススペース、又は連続するアドレススペースの集合として現れる。オペレーティングシステムは、バーチャルアドレス及びリアルメモリが仮想メモリへの分配を管理する。プロセッサにおけるアドレス変換ハードウェア（通常にメモリ管理ユニット又はＭＭＵ）は、自動的にバーチャルアドレスを物理アドレスに変換する。オペレーティングシステムにおけるソフトウェアはそれらの能力を拡張することにより、リアルメモリのキャパシティを超えるスペースを提供することができ、且つ、それによりコンピュータにおけるリアル存在するメモリより大きいメモリのバーチャルスペースを引用する。バーチャルメモリの主なメッリトは、アプリケーションプログラムが必ずしもシェアメモリスペースを管理しないことと、メモリの隔離による安全性の向上及びページング技術の使用により概念的に実際利用可能なメモリより多いメモリを利用することができることと、を含む。
【００５６】
注意すべきは、処理ノードは、生産者ノード及び／又は購読者ノードであってもよい。処理ノードは、一つ又は複数のデータストリームを生成することができるとともに、他の処理ノードにより生成した一つ又は複数データストリームを購読する。一実施形態において、それぞれの通信テーマにとって、ただ一つの生産者ノードが存在するが、通信テーマにとって、複数の購読者ノードが存在してもよい。本明細書において、共用するグローバルメモリセグメントは、生産者ノードから一つ又は複数の購読者ノードの一方向通信チャネルとして用いられる。他の実施形態において、既定の通信テーマについて、複数の生産者ノード及び一つ又は複数の購読者ノードが存在してもよい。
【００５７】
図４は、本発明に係る一実施形態のグローバルメモリセグメントの実施例を示すブロック図である。グローバルメモリセグメント４００は、図３のグローバルメモリセグメント３０５〜３０６のいずれかを表示してもよい。図４を参照すれば、グローバルメモリセグメント４００は、生産者ノードによる生成し、且つ一つ又は複数の購読者ノードが消費するデータブロックを記憶するデータバッファ４０１を含むが、それに限定されない。バッファ４０１は、環状バッファエリア又はファーストインファーストアウト（ＦＩＦＯ）バッファであってもよい。環状バッファエリアは、単一の、サイズ一定のバッファを使用するデータ構造を指し、エンド・ツー・エンドのようである。このような構造は容易にバッファデータストリームに適する。環状バッファエリアの利用可能な性質は、一つの元素が消費された時に、その元素を各所に移動させることが必要ではない。
【００５８】
なお、グローバルメモリセグメント４００は、いくつかのメモリセグメントメタデータを含み、例えば、書き込みポインタ４０２、一つ又は複数の読み出しポインタ４０３、購読者カウント４０４、データブロック索引４０５及びコールバックレジストリ４０６。書き込みポインタ４０２は、バッファ４０１のデータブロックに記憶され次のデータブロックの一つとするものにポインティングするメモリアドレスを記憶し、且つ生産者ノードが次の入力サイクルに新しいデータブロック当該メモリアドレスに書き込む。読み出しポインタ４０３は、バッファ４０１に記憶される一つ又は複数のデータブロックをポインティングするメモリアドレスを記憶し、一つ又は複数購読者ノードは、次の読み出しサイクルにおいて、当該一つ又は複数のデータブロックから次のデータブロックを読み出す。読み出しポインタの数は、現時点で購読される購読者ノードの数に対応し、購読者アカウント４０４の一部として記録される。複数の生産者ノードがある場合、生産者ノードにおいて書き込みポインタ４０２が共用される。書き込みポインタ４０２は、排他ロックの一部として、一つの生産者が所定時間点でデータを入力することを可能にする。コールバックレジストリ４０６は、コールバック通知にレジスタした処理ノード（生産者ノード又は購読者ノードである）を記録した。処理ロジック（例えば、メモリマネジャー３２１）は、周期的にコールバックレジストリ４０６を走査することにより、バッファ４０１に記憶されるデータブロックの状態を考慮し、処理ノードに通知する必要があるかとうかを判断する。
【００５９】
データブロック索引４０５は、バッファ４０１に記憶されるデータブロックの詳細状態を記録することができる。例えば、ブロック状態は、「読み出される」、「書き込まれる」、「デフォルト」又は「フリー」の一つであってもよい。「書き込まれる」状態は、生産者ノードがバッファ４０１の対応ブロック位置に新しいデータブロックを書き込んでいることを示す。「読み出される」状態は、購読者ノードが対応するデータブロックを読み出していることを示す。「デフォルト」又は「フリー」は、現時点に対応するデータブロックをアクセスする処理ノードが存在しないことを示す。データブロック索引４０５のブロック状態は、対応するブロック位置をアクセスする排他アクセスロック又は権限として利用されてもよい。複数の購読者が同時にデータブロックを読み出すことが許可される場合、「読み出される」状態が必要でないかもしれない。生産者ノードは、同一データブロックに入力する時に、購読者がデータブロックをアクセスすることが許可されないため、「書き込まれる」状態のみが必要である。
【００６０】
図５Ａは、本発明に係る一実施形態に基づいて、セグメントメタデータを記憶するためのデータ構造を示すブロック図である。データ構造５００は、グローバルメモリセグメントに維持されてセグメントメタデータを記憶することができる（例えば、図４に示されるメタデータ４０２〜４０６）。図５を参照すれば、データ構造５００（本実施例においては、テーブルである）は、複数のエントリーを含む。それぞれのエントリーは、処理ノード５０１（生産者ノード又は購読者ノードである）に対応する。それぞれのエントリーは、アクセスポインタを記憶するフィールド５０２をさらに含み、前記アクセスポインタは、処理ノード５０１が次にアクセスするデータブロックのデータブロックメモリアドレスをポインティングする。生産者ノードにとっては、アクセスポインタ５０２は書き込みポインタである一方、購読者ノードにとっては、アクセスポインタ５０２は読み出しポインタである。
【００６１】
一実施形態において、処理ロジック（例えば、メモリマネジャー３２１及び／又は処理ノードのノードマネジャー）は、アクセスポインタ５０２を検査してどのデータブロックが読み出されたか及び全てのデータブロックが読み出さたかどうかを判断することができる。処理ロジックは、アクセスポインタ５０２に基づいて、新しいデータブロックを生み出すスピード及びデータブロックを購読するスピードをさらに決定することができる。もし読み出しポインタは、書き込みポインタと同一又は隣接である場合、大部分又はすべてのデータブロックが読み出されたことを示す。特定処理ノードが別の処理ノード又は対応する処理ノードより速くデータブロックをアクセスすることをさらに示すことができる。もし、複数の生産者ノードが存在する場合、前記生産者ノードにおいて書き込みポインタを共用する。書き込みポインタは、排他ロックの一部として用いられことで一つ生産者が所定時間点にデータを書き込むことを可能にする。データを入力する前に、生産者ノード又はメモリマネジャーは誰か書き込みポインタを取得したかを判断することができる。
【００６２】
一実施形態において、それぞれのエントリーは、タイムスタンプを記憶するフィールド５０３をさらに含んでもよく、前記タイムスタンプは、アクセスポインタ５０２が更新される時間を表示する。タイムスタンプ５０３は、生産者ノードが生成した任意の新しいデータブロックが存在するかどうかを決定するために用いられてもよい。生産者ノードの書き込みポインタ５０２は、タイムスタンプ５０３に示される時間内に更新されなかった場合は、新しいデータブロックが生成されていないと理解してもよい。類似的に、購読者ノードは所定時間内にその読み出しポインタを更新しなかった場合、前記購読者ノードは通信テーマを購読しないことを示すことができる。この指示は、フィールド５０２において示される、書き込みポインタが読み出しポインタとの接近程度と組み合わせし、処理ロジックはすべてのデータブロックが購読者に読み出されたかどうか、及び所定時間内に新しいデータブロックが生成されないかどうかを判断することができる。そうであれば、対応する通信セッションは完了してもよく、且つ対応するグローバルメモリセグメントをリリースしてもよい。また、タイムスタンプ５０３は、特定処理ノードが正常に機能しないかどうかを判断するために用いられてもよい。例えば、もし特定処理ノードは一定の期間内にそれのポインタを更新しなかった場合は、前記処理ノードが故障している又は循環に落ちているかもしれない。そして、処理ロジックは、データ構造に記憶するいくつかの情報をリセットすることにより、通信セッションを再開することができる。
【００６３】
一実施形態において、それぞれのエントリーは、インディケータを記憶するフィールド５０４をさらに含み、前記インディケータはコールバックインタフェースを介して特定処理ノードに通信するかどうかを指示する。上記の説明のように、処理ノード（例えば、生産者ノード又は購読者ノード）のデータブロックをアクセスするスピードはその相手方（例えば、購読者ノード又は生産者ノード）に比べて遥かに速い時に、前記処理ノードはコールバック関数を登録してから、且つスリープ状態に変換したり、待つと同時に他のタスクを実行したりしてもよい。新しいデータブロックが利用可能である時に、又はデータブロックが読み出され、且つその位置が利用可能である時に、処理ロジックは、フィールド５０４を走査することにより、どの処理ノードに通知するかを決定する。もし処理ノードのフィールド５０４は所定値に設定される場合、前記処理ノードに通知して改めてデータブロックをアクセスする。
【００６４】
図５Ｂは本発明に係る一実施形態のデータブロック索引を示すデータ構造のブロック図である。データブロック索引５５０は、図４のデータブロック索引４０５の一部として実行されてもよい。図５Ｂを参照すれば、一実施形態において、データブロック索引５５０は、複数のエントリーを含み、それぞれのエントリーがグローバルメモリセグメント内のデータブロックにおける一つに対応し、且つ、データブロック識別子（ＩＤ）により索引に編入させる。データブロックＩＤ５５１は、データバッファにおける順次位置であってもよい。それぞれのエントリーは対応するデータブロックの状態を記憶するフィールド５５２をさらに含む。状態５５２は、「書き込まれる」、「読み出される」又は「デフォルト」（又はブランク／エンプティー）任意の一つであってもよい。状態５５２は、排他ロックの一部として用いられ、又は処理ノードが対応するデータブロックをアクセスしようとするかどうかを指示するインディケータとして用いられてもよい。
【００６５】
それぞれのエントリーは、誰かデータブロックをアクセスしているかを示すノードＩＤ５５３と、処理ノード（ノード５５３に標記される）がデータブロックをどのぐらいの時間で（例えば、処理ノードが排他アクセスロックを取得、且つ所有する時間はどのぐらいであるか）アクセスしたかを示すタイムスタンプ５５４と、をさらに含む。このような情報を利用することで特定処理ノードが行き詰まるか、又は故障したかを判断する。例えば、処理ノードはデータブロックが所定の時間帯をアクセスした場合、前記処理ノードを故障したノードと理解し、且つリセットアクセスを実行することにより、デッドロック状態を解決する。
【００６６】
さらに上記説明した技術を用いて、異なる入力／読み出し策略（例えば、情報廃棄策略）を有する発表者及び／又は購読者をサポートする。例えば、一方、ディレータイム及びスループット性能がコンテナにおける実行しているアプリケーションプログラムにとってキーポイントとなる配慮要素であれば、発表者は、前に書き込まれたブロックの順序に関係なく一貫していずれの利用可能なブロックに書き込む急進的な策略を採用してもよい。また、購読者は、前に読み出しがどこで発生したかにも関わらず、一貫して入力者（最後更新されるブロック）に従う策略を採用する。これらの策略によって、システムはより低いディレータイム、及びより大きいスループットの状態において、より強い応答力を有するようになる。また一方では、発表者及び／又は購読者は、順序に従って次のメモリブロックを書き込む又は読み出すことを試してもよい。予期されるブロックは書き込み／読み出しに利用不可の場合、発表者／購読者はブロックされ、且つ一定の期間を待たせる。これらの策略によって、一般的の性能に限定されるが、システムはより一致的な且つ予測可能な行為を有する。例えば、伝出速度又は提供／購読比率は、自律走行する状況が変化又はシステム資源が一時的の負担が生じることによりいきなり変化する時に、これらの策略は、データブロック又は情報の不要なジャンプ又はロスがないように、動的に通信速度を調整することができる。
【００６７】
図６は本発明に係る一実施形態に基づいて自律走行車を操作するメモリの管理プロセスを示すプローチャートである。プロセス６００は、処理ロジックにより実行されてもよく、前記処理ロジックは、ソフトウェア、ハードウェア又はその組み合わせを含んでもよい。例えば、プロセス６００は、図３のシステム３００（具体的に、メモリマネジャー３２１による）により実行されてもよい。新しい通信セッションの要求（例えば、需要に応じ）に応答してプロセス６００を実行してもよく、また、システムの初期化（例えば、起動）期間にプロセス６００を実行してもよい。図６を参照すれば、ブロック６０１では、処理ロジックは、第１ノードコンテナにおいて実行している生産者ノードから新しい通信データに対する第１要求を受信する。ブロック６０２では、処理ロジックは、第１要求に応答し、グローバルメモリ（例えば、グローバルメモリアドレス空間）からグローバルメモリセグメントを分配することにより、新しい通信テーマに関連するデータブロックを記憶する。ブロック６０３では、処理ロジックは、第１ノードコンテナにおけるローカルメモリの第１ローカルメモリセグメントをグローバルメモリセグメントにマッピングさせる。一実行形態において、処理ロジックは、グローバルメモリセグメントのポインタ（例えば、メモリアドレス）を生産者ノードに戻すことにより、生産者ノードがグローバルメモリセグメントを第１ノードコンテナにおけるローカルメモリの第１ローカルメモリセグメントにマッピングすることを可能にする。その後、ブロック６０４では、処理ロジックは、第２ノードコンテナにおいて実行している購読者ノードから購読通信テーマの第２要求を受信する。ブロック６０５では、処理ロジックは第２要求に応答し、第２ノードコンテナにおけるローカルメモリの第２ローカルメモリセグメントをグローバルメモリセグメントにマッピングする。一実施形態において、処理ロジックは、グローバルメモリセグメントのポインタを購読者ノードに戻すことにより、購読者ノードがグローバルメモリセグメントを第２ノードコンテナにおける第２ローカルメモリから分配される第２ローカルメモリセグメントにマッピングする。
【００６８】
図７は、本発明に係る実施形態に基づいて自律走行車を操作するメモリ管理プロセスを示すプローチャートである。プロセス７００は、処理ロジックにより実行されてもよく、前記処理ロジックは、ソフトウェア、ハードウェア又はその組み合わせを含んでもよい。例えば、プロセス７００は、図３のシステム３００（具体的に、メモリマネジャー３２１による）により周期的に実行されてもよい。図７を参照すれば、ブロック７０１では、処理ロジックは、通信テーマに関連するグローバルメモリセグメントに記憶されるデータブロックのアクセスをモニタリングする。ブロック７０２では、処理ロジックは、例えば、書き込みポインタと（複数の）読み出しポインタとを比較することにより、すべてのデータブロックが全部の購読者により読み出されたことを検出した。ブロック７０３では、処理ロジックは、例えば、書き込みポインタ及びそのタイムスタンプを検査することにより、生産者が所定期間内に新しいデータブロックを生成しなかったことを検出した。ブロック７０４では、処理ロジックは、選択可能的に、生産者及び（複数の）購読者にグローバルメモリセグメントをリリースさせるように通知する。このような通知は、生産者及び（複数の）購読者がそれぞれの対応するローカルメモリセグメントをマッピング解除且つリリースさせることを可能にする。ブロック７０５では、後の使用に備えて、処理ロジックはグローバルメモリセグメントをフリーメモリプールにリリースする。
【００６９】
図８は、本発明に係る実施形態に基づいて自律走行車を操作するメモリ管理プロセスを示すプローチャートである。プロセス８００は、処理ロジックにより実行されてもよく、前記処理ロジックは、ソフトウェア、ハードウェア又はその組み合わせを含んでもよい。例えば、プロセス８００は、図３のシステム３００（具体的に、処理ノードのノードマネジャーによる）により実行されてもよい。図８を参照すれば、ブロック８０１では、処理ロジックは、通信テーマをアクセス（例えば、生成、購読）する要求を受信する。ブロック８０２では、処理ロジックは、例えば、ＡＰＩを介して通信テーマの要求をメモリマネジャーに転送する。ブロック８０３では、処理ロジックは、メモリマネジャーから通信テーマに対応するグローバルメモリセグメントのメモリポインタを受信する。ブロック８０４では、処理ロジックは、メモリポインタに基づいて、ローカルメモリからローカルメモリセグメントを分配し、且つ、ローカルメモリセグメントをグローバルメモリセグメントにマッピングさせる。ブロック８０５で、処理ロジックは、マッピングされたローカルメモリセグメントを介して、グローバルメモリセグメントに記憶されるデータブロックをアクセスする。従って、ブロック８０６では、処理ロジックは、グローバルメモリセグメントをリリースする通知に応答し、ローカルメモリセグメントをマッピング解除且つリリースする。
【００７０】
図９は、本出願の一実施形態と組み合わせて使用されるデータ処理システムを例示的に示すブロック図である。例えば、システム１５００は、上記プロセス又は方法のいずれかを実行する上記任意のデータ処理システム、例えば図１のデータ処理システム１１０又はサーバ１０３〜１０４の任意の一つを示してもよい。システム１５００は、多数の異なる構成要素を含んでもよい。これらの構成要素は、集積回路（ＩＣ）、集積回路の一部、分散型電子装置又は回路基板に適用された他のモジュール（例えばコンピュータシステムのマザーボード又はアドインカード）、又は他の方式でコンピュータシステムのシャシーに組み込まれた構成要素として実現できる。
【００７１】
さらに、システム１５００は、コンピュータシステムの多数の構成要素の詳細ビューを示すことを目的とする。しかしながら、いくつかの実現形態では、付加的構成要素を要してもよいことを理解すべきである。また、他の実現形態において示される構成要素が異なる配置を有してもよい。システム１５００は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレーヤー、パーソナルディジタルアシスタント（ＰＤＡ）、スマート腕時計、パーソナルコミュニケーター、ゲーム装置、ネットワークルータ又はハブ、無線アクセスポイント（ＡＰ）又はリピーター、セットトップボックス、又はそれらの組合せを示してもよい。また、単一の機器又はシステムのみを示したが、用語「機器」又は「システム」は、さらに、独立又は共同で１つ（又は複数）の命令セットを実行することにより本明細書に説明される任意の１種又は複数種の方法を実行する機器又はシステムの任意のセットを含むことを理解すべきである。
【００７２】
一実施形態において、システム１５００は、バス又は相互接続部材１５１０によって接続されたプロセッサ１５０１、メモリ１５０３及び装置１５０５〜１５０８を備える。プロセッサ１５０１は、単一のプロセッサコア又は複数のプロセッサコアを含む単一のプロセッサ又は複数のプロセッサを備えてもよい。プロセッサ１５０１は、マイクロプロセッサ、中央処理装置（ＣＰＵ）等のような１つ又は複数の汎用プロセッサであってもよい。より具体的には、プロセッサ１５０１は、複雑命令セット計算（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、又は他の命令セットを実現するプロセッサ、又は命令セットの組合せを実現するプロセッサであってもよい。プロセッサ１５０１は、さらに、専用集積回路（ＡＳＩＣ）、セルラ又はベースバンドプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号プロセッサ、コプロセッサ、組み込みプロセッサのような１つ又は複数の専用プロセッサ、或いは命令処理可能な任意の他のタイプのロジックであってもよい。
【００７３】
プロセッサ１５０１（超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよい）は、前記システムの各種構成要素と通信するための主処理ユニット及び中央ハブとして機能できる。このようなプロセッサは、システムオンチップ（ＳｏＣ）として実現できる。プロセッサ１５０１は、命令を実行することにより本明細書に説明される操作及びステップを実行するための命令を実行ように構成される。また、システム１５００は、選択可能なグラフィックサブシステム（表示コントローラ及び／又は表示装置）１５０４と通信するグラフィックインターフェースをさらに含み、グラフィックサブシステム（表示コントローラ及び／又は表示装置）１５０４は、表示コントローラ、グラフィックプロセッサ及び／又は表示装置をさらに備えてもよい。
【００７４】
プロセッサ１５０１は、メモリ１５０３と通信してもよく、メモリ１５０３は、一実施形態において複数のメモリによって所定量のシステムメモリを提供する。メモリ１５０３は、ランダムアクセスメモリ（ＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）又は他のタイプの記憶装置のような１つ又は複数の揮発性記憶（又はメモリ）装置を備えてもよい。メモリ１５０３は、プロセッサ１５０１又は任意の他の装置により実行される命令列を含む情報を記憶できる。例えば、複数種のオペレーティングシステム、装置ドライバー、ファームウェア（例えば、入力出力基本システム又はＢＩＯＳ）及び／又はアプリケーションの実行可能なコード及び／又はデータはメモリ１５０３にロードされてもよく、プロセッサ１５０１により実行される。オペレーティングシステムは、Ｍｉｃｒｏｓｏｆｔ(登録商標）会社からのＷｉｎｄｏｗｓ(登録商標）オペレーティングシステム、アップル会社からのＭａｃ  ＯＳ(登録商標）／ｉＯＳ（登録商標）、Ｇｏｏｇｌｅ(登録商標）会社からのＡｎｄｒｏｉｄ(登録商標）、Ｌｉｎｕｘ(登録商標）、Ｕｎｉｘ(登録商標）又は他のリアルタイム又は組み込みオペレーティングシステム（例えばＶｘＷｏｒｋｓ）のような任意のタイプのオペレーティングシステムであってもよい。
【００７５】
システム１５００は、Ｉ／Ｏ装置、例えば装置１５０５〜１５０８をさらに備えてもよく、ネットワークインターフェース装置１５０５、選択可能な入力装置１５０６及び他の選択可能なＩ／Ｏ装置１５０７を備える。ネットワークインターフェース装置１５０５は、無線送受信機及び／又はネットワークインターフェースカード（ＮＩＣ）を備えてもよい。前記無線送受信機は、ＷｉＦｉ送受信機、赤外送受信機、ブルートゥース(登録商標）送受信機、ＷｉＭａｘ送受信機、無線セルラーホン送受信機、衛星送受信機（例えば、全地球測位システム（ＧＰＳ）送受信機）又は他の無線周波数（ＲＦ）送受信機又はそれらの組合せであってもよい。ＮＩＣはイーサネットカードであってもよい。
【００７６】
入力装置１５０６は、マウス、タッチパッド、タッチスクリーン（それは表示装置１５０４と一体化されてもよい）、ポインタデバイス（例えばスタイラス）及び／又はキーボード（例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード）を備えてもよい。例えば、入力装置１５０６は、タッチスクリーンに接続されるタッチスクリーンコントローラを含んでもよい。タッチスクリーン及びタッチスクリーンコントローラは、例えば複数種のタッチ感度技術（容量、抵抗、赤外及び表面音波の技術を含むが、それらに限定されない）のいずれか、及びタッチスクリーンの１つ又は複数の接触点を決定するための他の近接センサアレイ又は他の素子を用いてそのタッチ点及び移動又は断続を検出できる。
【００７７】
Ｉ／Ｏ装置１５０７は音声装置を備えてもよい。音声装置は、スピーカー及び／又はマイクロホンを含んでもよく、それにより音声認識、音声コピー、デジタル記録及び／又は電話機能のような音声サポートの機能を促進する。他のＩ／Ｏ装置１５０７は、汎用シリアルバス（ＵＳＢ）ポート、パラレルポート、シリアルポート、印刷機、ネットワークインターフェース、バスブリッジ（例えば、ＰＣＩ〜ＰＣＩブリッジ）、センサ（例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサ等のような動きセンサ）又はそれらの組合せをさらに備えてもよい。装置１５０７は、結像処理サブシステム（例えば、カメラ）をさらに備えてもよく、前記結像処理サブシステムは、カメラ機能（例えば、写真及びビデオ断片の記録）を促進するための電荷カップリング装置（ＣＣＤ）又は相補型金属酸化物半導体（ＣＭＯＳ）光学センサのような光学センサを備えてもよい。あるセンサは、センサハブ（図示せず）によって相互接続部材１５１０に接続されてもよく、キーボード又は熱センサのような他の装置は、組み込みコントローラ（図示せず）により制御されてもよく、これはシステム１５００の特定配置又は設計により決められる。
【００７８】
データ、アプリケーション、１つ又は複数のオペレーティングシステム等のような情報の永久記憶を提供するために、大容量記憶装置（図示せず）は、プロセッサ１５０１に接続されてもよい。様々な実施形態において、薄型化と軽量化のシステム設計を実現し且つシステムの応答能力を向上させるために、このような大容量記憶装置は、ソリッドステート装置（ＳＳＤ）によって実現できる。なお、他の実施形態において、大容量記憶装置は、主にハードディスクドライブ（ＨＤＤ）で実現されてもよく、少量のＳＳＤ記憶量は、ＳＳＤキャッシュとして停電イベント期間にコンテキスト状態及び他のこのような情報の不揮発性記憶を実現し、それによりシステム動作が再開する時に通電を速く実現できる。さらに、フラッシュデバイスは、例えばＳＰＩ）によってプロセッサ１５０１に接続されてもよい。このようなフラッシュデバイスは、システムソフトウェアの不揮発性記憶に用いられてもよく、前記システムソフトウェアは、前記システムの（ＢＩＯＳ）及び他のファームウェアを備える。
【００７９】
記憶装置１５０８は、任意の１種又は複数種の本明細書に記載の方法又は機能を体現する１つ又は複数の命令セット又はソフトウェア（例えば、モジュール、ユニット及び／又はロジック１５２８）が記憶されるコンピュータアクセス可能な記憶媒体１５０９（機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる）を備えてもよい。モジュール／ユニット／ロジック１５２８は、上記した構成要素のいずれかを示してもよい。モジュール／ユニット／ロジック１５２８は、さらにデータ処理システム１５００により実行される期間にメモリ１５０３内及び／又はプロセッサ１５０１内に完全又は少なくとも部分的に存在してもよく、ここで、メモリ１５０３及びプロセッサ１５０１も、機器アクセス可能な記憶媒体を構成する。モジュール／ユニット／ロジック１５２８は、さらにネットワークによってネットワークインターフェース装置１５０５を経由して送受信されてもよい。
【００８０】
コンピュータ可読記憶媒体１５０９は、以上に説明された幾つかのソフトウェア機能を永続的に記憶してもよい。コンピュータ可読記憶媒体１５０９は、例示的な実施形態において単一の媒体として示されたが、用語「コンピュータ可読記憶媒体」は、前記１つ又は複数の命令セットが記憶される単一の媒体又は複数の媒体（例えば、集中型又は分散型データベース、及び／又は関連する高速キャッシュ及びサーバ）を備えることを理解すべきである。用語「コンピュータ可読記憶媒体」は、さらに命令セットを記憶又はコーディング可能な任意の媒体を備えることを理解すべきであり、前記命令セットは、機器により実行され且つ前記機器に本出願の任意の１種又は複数種の方法を実行させる。従って、用語「コンピュータ可読記憶媒体」は、ソリッドステートメモリ及び光学媒体と磁気媒体又は任意の他の非一時的機械可読媒体を備えるが、それらに限定されないことを理解すべきである。
【００８１】
本明細書に記載のモジュール／ユニット／ロジック１５２８、構成要素及び他の特徴は、ディスクリートハードウェアコンポーネントとして実現されてもよく、又はハードウェアコンポーネント（例えばＡＳＩＣＳ、ＦＰＧＡ、ＤＳＰ又は類似装置）の機能に統合されてもよい。さらに、モジュール／ユニット／ロジック１５２８は、ハードウェア装置内のファームウェア又は機能回路として実現されてもよい。また、モジュール／ユニット／ロジック１５２８は、ハードウェア装置及びソフトウェアコンポーネントの任意の組合せで実現されてもよい。
【００８２】
なお、システム１５００は、データ処理システムの各種の構成要素を有するように示されているが、任意の具体的な構造又は構成要素の相互接続方式を限定するものではないことに注意すべき、それは、このような詳細が本出願の実施形態に密接な関係がないためである。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ及び／又は他のデータ処理システムは、本出願の実施形態と共に使用されてもよい。
【００８３】
上記詳細な説明の一部は、コンピュータメモリにおけるデータビットに対する演算のアルゴリズム及び記号表現で示される。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。ここで、アルゴリズムは、通常、所望の結果につながる首尾一貫した操作列（ｓｅｑｕｅｎｃｅ  ｏｆ  ｏｐｅｒａｔｉｏｎｓ）と考えられる。これらの操作とは、物理量に対して物理的操作を行う必要となるステップを指す。
【００８４】
ただし、これらの全て及び類似の用語は、いずれも適切な物理量に関連付けられ、且つただこれらの量に適用される適切なラベルであることに注意すべきである。特に断らない限り、本出願の全体にわたって用語（例えば、添付している特許請求の範囲に説明された用語）による説明とは、コンピュータシステム又は類似の電子計算装置の動作及び処理であり、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリに物理（例えば、電子）量としてデータを示し、且つ前記データをコンピュータシステムメモリ又はレジスタ又は他のこのような情報メモリ、伝送又は表示装置内において類似に物理量として示される他のデータに変換する。
【００８５】
本出願の実施形態は、さらに本明細書における操作を実行するための装置に関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に記憶される。機器可読媒体は、機器（例えば、コンピュータ）可読な形態で情報を記憶する任意の機構を備える。例えば、機器可読（例えば、コンピュータ可読）媒体は、機器（例えば、コンピュータ）可読記憶媒体（例えば、読み出し専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ）を備える。
【００８６】
上記図面に示されるプロセス又は方法は、ハードウェア（例えば、回路、専用ロジック等）、ソフトウェア（例えば、非一時的コンピュータ可読媒体に具現化される）、又は両方の組合せを含む処理ロジックにより実行されてもよい。前記プロセス又は方法は、本明細書において特定の順序に応じて説明されるが、説明された操作の一部は、異なる順序に応じて実行されてもよい。また、いくつかの操作は、順番ではなく並行に実行されてもよい。
【００８７】
本出願の実施形態は、いずれかの特定のプログラミング言語を参照して説明されていないが、複数種のプログラミング言語で本明細書に記載の本出願の実施形態の教示を実現できることを理解すべきである。
【００８８】
以上の明細書では、本出願の具体的な例示的な実施形態を参照してその実施形態を説明した。明らかなように、添付している特許請求の範囲に記載の本出願のより広い趣旨及び範囲を逸脱しない限り、様々な変形が可能である。従って、限定的なものではなく例示的なものとして本明細書及び図面を理解すべきである。
【００８９】
上記詳細な説明の一部は、コンピュータメモリにおけるデータビットに対する演算のアルゴリズム及び記号表現で示される。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。ここで、アルゴリズムは、通常、所望の結果につながる首尾一貫した操作列（ｓｅｑｕｅｎｃｅ  ｏｆ  ｏｐｅｒａｔｉｏｎｓ）と考えられる。これらの操作とは、物理量に対して物理的操作を行う必要となるステップを指す。
【００９０】
ただし、これらの全て及び類似の用語は、いずれも適切な物理量に関連付けられ、且つただこれらの量に適用される適切なラベルであることに注意すべきである。特に断らない限り、本出願の全体にわたって用語（例えば、添付している特許請求の範囲に説明された用語）による説明とは、コンピュータシステム又は類似の電子計算装置の動作及び処理であり、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリに物理（例えば、電子）量としてデータを示し、且つ前記データをコンピュータシステムメモリ又はレジスタ又は他のこのような情報メモリ、伝送又は表示装置内において類似に物理量として示される他のデータに変換する。
【００９１】
本出願の実施形態は、さらに本明細書における操作を実行するための装置に関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に記憶される。機器可読媒体は、機器（例えば、コンピュータ）可読な形態で情報を記憶する任意の機構を備える。例えば、機器可読（例えば、コンピュータ可読）媒体は、機器（例えば、コンピュータ）可読記憶媒体（例えば、読み出し専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ）を備える。
【００９２】
上記図面に示されるプロセス又は方法は、ハードウェア（例えば、回路、専用ロジック等）、ソフトウェア（例えば、非一時的コンピュータ可読媒体に具現化される）、又は両方の組合せを含む処理ロジックにより実行されてもよい。前記プロセス又は方法は、本明細書において特定の順序に応じて説明されるが、説明された操作の一部は、異なる順序に応じて実行されてもよい。また、いくつかの操作は、順番ではなく並行に実行されてもよい。
【００９３】
本出願の実施形態は、いずれかの特定のプログラミング言語を参照して説明されていないが、複数種のプログラミング言語で本明細書に記載の本出願の実施形態の教示を実現できることを理解すべきである。
【００９４】
以上の明細書では、本出願の具体的な例示的な実施形態を参照してその実施形態を説明した。明らかなように、添付している特許請求の範囲に記載の本出願のより広い趣旨及び範囲を逸脱しない限り、様々な変形が可能である。従って、限定的なものではなく例示的なものとして本明細書及び図面を理解すべきである。
【図１】
0006559777.tif 000002
【図２】
0006559777.tif 000003
【図３】
0006559777.tif 000004
【図４】
0006559777.tif 000005
【図５Ａ】
0006559777.tif 000006
【図５Ｂ】
0006559777.tif 000007
【図６】
0006559777.tif 000008
【図７】
0006559777.tif 000009
【図８】
0006559777.tif 000010
【図９】
0006559777.tif 000011