図面 (/)

技術 共有メモリとのハイブリッドメッセージパッシングの方法

出願人 ジーイー・アビエイション・システムズ・エルエルシー
発明者 ベンジャミン・トーマス・オッチピンティコンラッド・ロバート・クチンスキエリック・ダニエル・ビューラー
出願日 2014年1月22日 (7年0ヶ月経過) 出願番号 2014-009069
公開日 2014年10月2日 (6年4ヶ月経過) 公開番号 2014-186718
状態 特許登録済
技術分野 先行制御 マルチプロセッサ マルチプログラミング
主要キーワード ハイパースペクトル画像 静的パラメータ リアルタイム処理システム ASCIIテキスト カーネルスレッド 例示的実施 グローバルクロック 最適閾値
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2014年10月2日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (2)

課題

プロセッサ間相互通信を効率的に行う方法を提供する。

解決手段

共有メモリとのハイブリッドメッセージパッシングの方法を提供する。単一のコンピューティング環境において少なくとも2つのコプロセッサ間でデータをやりとりする方法であって、コプロセッサの一方が送信プロセッサであり、コプロセッサの他方が受信プロセッサであり、単一のコンピューティング環境がコプロセッサによってアクセス可能メモリを含む、方法は、とりわけ、送信プロセッサにおいて、伝達されるべきデータのサイズを判定するステップと、データのサイズが予め定められた閾値より小さいかまたはそれと等しい場合は、そのデータをメッセージに添付し、そのメッセージを受信プロセッサに送信するステップと、データのサイズが予め定められた閾値より大きい場合はメモリ内のデータのロケーションを示すポインタを受信プロセッサに送信するステップとを含む。

概要

背景

マルチプロセッサまたはマルチコアプロセッサコンピューティング環境で動作するアプリケーションのためのコードパフォーマンスは、部分的には、その環境内の単一の処理要素がどのように相互に通信するかによって判定されてよい。共有メモリおよびメッセージパッシングは、プロセッサ間通信のために使用される大別して2種類の通信パラダイムである。両方の通信パラダイムを利用するハイブリッドプログラミング技法が知られている。

概要

プロセッサ間相互通信を効率的に行う方法を提供する。共有メモリとのハイブリッドメッセージパッシングの方法を提供する。単一のコンピューティング環境において少なくとも2つのコプロセッサ間でデータをやりとりする方法であって、コプロセッサの一方が送信プロセッサであり、コプロセッサの他方が受信プロセッサであり、単一のコンピューティング環境がコプロセッサによってアクセス可能メモリを含む、方法は、とりわけ、送信プロセッサにおいて、伝達されるべきデータのサイズを判定するステップと、データのサイズが予め定められた閾値より小さいかまたはそれと等しい場合は、そのデータをメッセージに添付し、そのメッセージを受信プロセッサに送信するステップと、データのサイズが予め定められた閾値より大きい場合はメモリ内のデータのロケーションを示すポインタを受信プロセッサに送信するステップとを含む。

目的

背景技術および以下の説明において、説明の目的のために、多数の特定の詳細が本明細書に記載の技術の徹底的な理解を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

単一のコンピューティング環境において少なくとも2つのコプロセッサ間でデータをやりとりする方法であって、前記少なくとも2つのコプロセッサの一方が送信プロセッサであり、前記少なくとも2つのコプロセッサの他方が受信プロセッサであり、前記単一のコンピューティング環境が前記少なくとも2つのコプロセッサによってアクセス可能メモリを含み、前記方法が前記送信プロセッサにおいて、伝達されるべきデータのサイズを判定するステップと、前記データの前記サイズが予め定められた閾値より小さいかまたはそれに等しい場合は、前記データをメッセージに添付し、前記メッセージを前記受信プロセッサに送信するステップと、前記データの前記サイズが前記予め定められた閾値より大きい場合は、前記メモリ内の前記データのロケーションを示すポインタを前記受信プロセッサに送信するステップとを含む方法。

請求項2

ポインタを前記受信プロセッサに送信する前記ステップが、前記データが前記メモリ内のロケーションにまだない場合は、前記データを前記ポインタに対応する前記メモリ内の前記ロケーションに移すステップによって先行される、請求項1記載の方法。

請求項3

ポインタを前記受信プロセッサに送信する前記ステップが、一意識別子を前記受信プロセッサに送信する前記ステップを含み、前記位置識別子が前記ポインタによって示されている前記ロケーションにおいて前記メモリ内の前記データにプリペンドされる、請求項1記載の方法。

請求項4

一意の識別子がタイムスタンプである、請求項3記載の方法。

請求項5

前記予め定められた閾値が構成ファイルエンコードされる、請求項1記載の方法。

請求項6

前記予め定められた閾値がメッセージを前記送信プロセッサから前記受信プロセッサに送信するために必要な時間の量に基づく、請求項1記載の方法。

請求項7

前記送信プロセッサが前記メッセージを2つ以上の受信プロセッサに送信する、請求項1記載の方法。

技術分野

0001

本発明は、単一のコンピューティング環境において少なくとも2つのコプロセッサ間でデータをやりとりする方法に関する。

背景技術

0002

マルチプロセッサまたはマルチコアプロセッサコンピューティング環境で動作するアプリケーションのためのコードパフォーマンスは、部分的には、その環境内の単一の処理要素がどのように相互に通信するかによって判定されてよい。共有メモリおよびメッセージパッシングは、プロセッサ間通信のために使用される大別して2種類の通信パラダイムである。両方の通信パラダイムを利用するハイブリッドプログラミング技法が知られている。

先行技術

0003

米国特許第7506032号明細書

0004

本発明の一態様は、単一のコンピューティング環境において2つ以上のコプロセッサ間でデータをやりとりする方法であって、コプロセッサの一方が送信プロセッサであり、コプロセッサの他方が受信プロセッサである、方法に関する。単一のコンピューティング環境は、コプロセッサによってアクセス可能メモリを含む。本方法は、送信プロセッサにおいて、伝達されるべきデータのサイズを判定するステップを含む。データのサイズが予め定められた閾値より小さいかまたはそれに等しい場合は、本方法は、そのデータをメッセージに添付し、そのメッセージを受信プロセッサに送信する。データのサイズが予め定められた閾値より大きい場合は、本方法は、受信プロセッサにポインタを送信し、ポインタはメモリ内のデータのロケーションを示す。

図面の簡単な説明

0005

本発明の一実施形態による、共有メモリとのハイブリッドメッセージパッシングの方法を示す流れ図である。

実施例

0006

背景技術および以下の説明において、説明の目的のために、多数の特定の詳細が本明細書に記載の技術の徹底的な理解を提供するために記述される。しかし、例示的実施形態は、これらの特定の詳細がなくても実施されることが可能であることが当業者には明らかであろう。他の場合には、例示的実施形態の説明を容易にするために、構造およびデバイスダイヤグラム形式で示される。

0007

例示的実施形態は、図面に関連して説明される。これらの図面は、本明細書に記載のモジュール、方法、またはコンピュータプログラム製品を実施する特定の諸実施形態のいくつかの詳細を例示する。しかし、図面は、図面に存在する可能性がある限定を課す解釈されるべきではない。本方法およびコンピュータプログラム製品は、それらの動作を遂行するために任意の機械可読媒体上に提供されてよい。諸実施形態は、既存のコンピュータプロセッサを使用して、あるいは、このもしくは他の目的のために組み込まれた専用コンピュータプロセッサによって、またはハードワイヤードステムによって実施されることが可能である。

0008

上記のように、本明細書に記載の諸実施形態は、そこに記憶されている機械実行可能命令もしくはデータ構造担持する、または有する機械可読媒体を含むコンピュータプログラム製品を含んでよい。そのような機械可読媒体は、汎用コンピュータもしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスされることが可能である任意の利用可能な媒体でよい。例として、そのような機械可読媒体は、RAM、ROM、EPROM、EEPROM、CD−ROMもしくは他の光ディスクストレージ磁気ディスクストレージもしくは他の磁気ストレージデバイス、あるいは所望のプログラムコードを機械実行可能命令もしくはデータ構造の形で担持する、または記憶するために使用されることが可能であり、汎用コンピュータもしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスされることが可能である任意の他の媒体を含んでよい。情報がネットワークもしくは他の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せ)を介して機械に伝送または提供される場合は、機械は、その接続を機械可読媒体と適切にみなす。したがって、任意のそのような接続は、機械可読媒体と適切に呼ばれる。上記のものの組合せも、機械可読媒体の範囲内に含まれる。機械実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理機械に、ある機能または機能のグループを実行させる命令およびデータを含む。

0009

諸実施形態は、例えばネットワーク接続環境において機械によって実行されるプログラムモジュールの形でのプログラムコードなどの機械実行可能命令を含むプログラム製品によって一実施形態において実行されることが可能である方法ステップの一般的文脈で説明される。一般に、プログラムモジュールは、特定のタスクを実行するという技術的効果を有する、または特定の抽象データタイプを実施するルーチンプログラムオブジェクトコンポーネント、データ構造などを含む。機械実行可能命令、関連データ構造、およびプログラムモジュールは、本明細書で開示されるステップを実行するためのプログラムコードの例を表す。そのような実行可能な命令または関連データ構造の特定のシーケンスは、そのようなステップに記述されている機能を実行するための対応する動作の例を表す。

0010

諸実施形態は、プロセッサを有する1つまたは複数のリモートコンピュータへの論理的接続を使用してネットワーク接続環境において実施されることが可能である。論理的接続は、ここでは例として、限定としてではなく提示されるローカルエリアネットワーク(LAN)および広域ネットワークWAN)を含んでよい。そのようなネットワーキング環境は、オフィス全体のまたは企業全体のコンピュータネットワークイントラネット、およびインターネットでは普通であり、多種多様な異なる通信プロトコルを使用することができる。そのようなネットワークコンピューティング環境は、通常、パーソナルコンピュータハンドヘルドデバイスマルチプロセッサシステムマイクロプロセッサベースのまたはプログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータメインフレームコンピュータ、および同種のものを含めて、多くのタイプのコンピュータシステム構成を包含することを当業者は理解するであろう。

0011

諸実施形態はまた、タスクが通信ネットワーク経由で(ハードワイヤードリンクかまたは無線リンクのどちらかによって、またはハードワイヤードリンクもしくは無線リンクの組合せによって)リンクされたローカル処理デバイスおよびリモート処理デバイスによって実行される、分散コンピューティング環境において実施されてもよい。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリストレージデバイスおよびリモートメモリストレージデバイスの両方に配置されてよい。

0012

例示的実施形態の全部または一部を実施するための例示的システムは、処理ユニットシステムメモリ、およびシステムメモリを含む様々なシステム構成要素を処理ユニットに結合するシステムバスを含む、コンピュータの形態での汎用コンピューティングデバイスを含んでもよい。システムメモリは、読出し専用メモリ(ROM)およびランダムアクセスメモリ(RAM)を含んでよい。コンピュータはまた、磁気ハードディスクから読み出すおよびそれに書き込むための磁気ハードディスクドライブ取外し可能な磁気ディスクから読み出すまたはそれに書き込むための磁気ディスクドライブ、およびCD−ROMまたは他の光媒体などの取外し可能な光ディスクから読み出すまたはそれに書き込むための光ディスクドライブを含んでもよい。ドライブおよびそれらの関連機械可読媒体は、機械実行可能命令、データ構造、プログラムモジュールおよびコンピュータのための他のデータの不揮発性ストレージを提供する。

0013

諸実施形態において開示される方法の技術的効果は、マルチプロセッサコンピューティングシステムの性能およびスケーラビリティを改善することを含む。任意に大きいメッセージは、任意に小さいメッセージと同じ程度に効率よくコプロセッサ間で送信されることが可能である。メッセージをコプロセッサから複数の受信プロセッサに送信するために必要な追加の時間はごくわずかである。ハイパースペクトラルイメージングシステムの場合のように、大きなデータタイプを有し、様々なメッセージのサイズ要件間の違いの程度が大きいリアルタイム処理システムの性能は、諸実施形態において開示される方法によって改善されることが可能である。

0014

少なくとも2つのコプロセッサを有する単一のコンピューティング環境では、コンピューティング環境に入力されたデータを処理している間に、コプロセッサ間でデータをやりとりすることがしばしば必要である。コプロセッサ間でデータをやりとりするためには、送信プロセッサは、データまたはデータについての情報を受信プロセッサに伝達するために、メッセージを受信プロセッサに送信しなければならない。メッセージパッシングが通信のパラダイムであるコンピューティング環境では、送信プロセッサは、メッセージに含まれているデータを有するメッセージを1つまたは複数の受信プロセッサに送信することができる。代替として、共有メモリシステムを有するコンピューティング環境では、送信プロセッサは、メッセージを、データが常駐するすべてのコプロセッサによってアクセス可能なメモリ内のロケーションをエンコードする1つまたは複数の受信プロセッサに送信することができる。次いで、各コプロセッサは、共有メモリ内のデータに直接アクセスすることができる。

0015

図1は、メッセージパッシングの共有メモリとのハイブリッドを使用する本発明の一実施形態による方法10を示す流れ図である。最初に、ステップ12において、マルチプロセッサシステム上でアプリケーションを動作させている間に、コンピューティング環境内のコプロセッサはデータの特定のブロックを少なくとも1つの他のコプロセッサに伝達する必要があり得る。データのブロックは、例えば、データをデジタルにエンコードするためにメモリ内の必要なバイト数によって判定されることが可能である何らかの有限のサイズを有する。

0016

ステップ14において、送信プロセッサが伝達されるべきデータのサイズを判定し、そのサイズを予め定められた閾値と比較することができる。36において、伝達されるべきデータのサイズが予め定められた閾値より小さいかそれと等しい場合は、ステップ15において、送信プロセッサは、そのデータを、1つまたは複数の受信プロセッサに伝達されるメッセージにコピーすることができる。逆に、34において、伝達されるべきデータのサイズが予め定められた閾値より大きい場合は、送信プロセッサは、ステップ16において、データが共有メモリにあるかどうかを判定することができる。

0017

本発明の一実施形態では、予め定められた閾値は、構成ファイルでなどの静的パラメータとしてエンコードされることが可能である。構成ファイルは、アプリケーション、サーバ、およびオペレーティングシステムのために一般に使用されるような初期設定でエンコードされ、しばしばXMLなどのマークアップ言語で書かれたASCIIテキストファイルでよい。代替として、予め定められた閾値は、アプリケーションのインスタンス化時にパラメータとしてコンピューティング環境に渡されるか、またはさらにコンピューティング環境のオペレーティングシステムの環境変数として設定されてもよい。これらの実施例のすべてにおいて、データの特定のサイズのブロックが共有メモリまたはメッセージパッシングによってより効率よく伝達されるかどうかを判定するために予め定められた閾値を識別する静的パラメータがエンコードされる。

0018

本発明の他の実施形態では、予め定められた閾値が適応可能であり得る。送信プロセッサは、メッセージを伝達する場合、すべてのコプロセッサに知られているグローバルクロックに基づいてタイムスタンプを挿入することができ、次いで、受信プロセッサは、予め定められた閾値が変更されるべきかどうかを判定するために待ち時間分析することができる。待ち時間に影響を与え、最適閾値を変える可能性がある要因は、バス混雑ページング割り込み、およびCPUクロック速度を含む。

0019

40において、送信プロセッサが、伝達されるべきデータが1つまたは複数の受信プロセッサによってアクセス可能でないメモリロケーションに記憶されていると判定した場合は、送信プロセッサは、ステップ18において、データを共有メモリ領域に移すことができる。38において、送信プロセッサが、伝達されるべきデータがすでに共有メモリ領域にあると判定した場合は、送信プロセッサは、データを共有メモリ領域に移すステップをスキップしてよい。

0020

次いで、ステップ20において、送信プロセッサは、一意の識別子が存在するかどうか、すなわち、一意の識別子が生成され、受信プロセッサに伝達されるべきデータに割り当てられているかどうかを判定する。一意の識別子は、データのブロックなどのコンピューティングオブジェクトに割り当てられたコード、すなわち、分散コンピューティング環境が情報を一意に識別することができるようにするコードである。本発明の文脈では、一意の識別子は、共有メモリを介してデータにアクセスする受信プロセッサが、データが有効であるかどうかを判定することができるように、伝達されるべきデータに割り当てられる。無効なデータが同期問題および有効期限切れ問題から生じる可能性があり、それによって、共有メモリ領域は、受信プロセッサが一意の識別子に対応する古いデータにアクセスする前に、新しいデータで上書きされる可能性がある。一意の識別子は、ソフトウェア設計の技術分野でよく知られているユニバーサルユニーク識別子(UUID)の実施形態の1つでよい。代替として、一意の識別子は、データが共有メモリ領域に書き込まれた時間、または、自己言及的に、一意の識別子が生成された時間など、データに関係のある時間をエンコードするためのタイムスタンプでもよい。

0021

42において、送信プロセッサが、共有メモリ内にある伝達されるべきデータのための一意の識別子が存在しないと判定した場合は、送信プロセッサは、ステップ21において、一意の識別子を生成し、データのロケーションにおける共有メモリ領域にプリペンドすることができる。44において、送信プロセッサが、伝達されるべきデータのための一意の識別子がすでに存在し、共有メモリ領域にあると判定した場合は、送信プロセッサは、共有メモリ領域内のデータに一意の識別子を付加するステップをスキップしてよい。

0022

送信プロセッサが伝達されるべき共有メモリ内のデータのための一意の識別子を確認した後は、送信プロセッサは、ステップ22において、その一意の識別子を配置されるべき共有メモリ領域から1つまたは複数の受信プロセッサに送信されるべきメッセージにコピーすることができる。さらに、ステップ24において、送信プロセッサは、ポインタをメッセージに入れることができ、この場合、ポインタは、伝達されるべきデータを記憶しておく共有メモリ内のアドレスを示す値である。ポインタを伝達されるべきメッセージに入れることは本発明の好ましい実施形態であるが、共有メモリシステムのタイプなど特定のコンピューティング環境は、ポインタを送信プロセッサから受信プロセッサに直接伝達するステップを不要にすることができる。例えば、コンピューティング環境は、共有メモリが、伝達されるべきデータのロケーションが、メッセージ内の一意の識別子に対して絶対値算術演算を実行することにより受信プロセッサによって確認されることが可能であるやり方区分されるように構成されてよい。

0023

少なくとも1つの受信プロセッサに伝達されるべきメッセージは、ステップ15においてのようにメッセージ内にデータのコピーを有してもよく、またはステップ24においてのように共有メモリ内にロケーションに対するポインタを含んでもよい。それとは関係なく、送信プロセッサは、ステップ28において、追加のメタデータがメッセージ内に送信されなければならないかどうかを判定することができる。46において、送信プロセッサが追加のメタデータをメッセージに付加すると決めた場合は、送信プロセッサは、ステップ26において追加のメタデータをメッセージにコピーすることができる。48において、送信プロセッサが、追加のメタデータが利用可能でないかまたはメッセージにとって必要でないと判定した場合は、送信プロセッサは、追加のメタデータをメッセージにコピーするステップをスキップしてよい。

0024

メタデータは、伝達されるべきデータを記述し、そのデータの最も効率のよい伝達を可能にするために追加の情報を提供するデータの任意のセットでよい。例えば、メタデータは、データを送信プロセッサから特定の受信プロセッサに伝達するために必要なチャネル特徴づける待ち時間情報を含んでよい。データが、スペクトル帯の数、ビット深度画像寸法、および帯域順などの特徴に応じていくつかの異なるやり方でフォーマットされてよいハイパースペクトル画像を表してよいコンピューティング環境では、メタデータは、ハイパースペクトル画像の特定のフォーマットをエンコードすることができる。口径およびISO感度などの画像を収集するために使用されるレンズを特徴づける追加の情報は、メタデータとしてエンコードされてよい。さらに、ハイパースペクトル画像に適用される変換を含む処理履歴がメタデータとして記憶されてもよい。

0025

次いで、送信プロセッサは、ステップ30において、メッセージを少なくとも1つの受信プロセッサに送信する。本方法は、ステップ32において終了し、この場合、各受信プロセッサはメッセージを解析して、データがメッセージにエンコードされているかどうかを直接判定するか、または、メッセージが一意の識別子およびポインタを含む場合は、データを共有メモリロケーションから取り出すかのどちらかをすることができる。

0026

多くのコンピューティング環境が前述の発明から利益を受けることができる。送信処理エンティティおよび受信処理エンティティは、コプロセッサと呼ばれるが、本発明は、プロセス、カーネルスレッドおよびファイバに等しく適用可能である。とりわけ本発明に適したハードウェア実施形態は、それらの高度並列処理アーキテクチャのゆえにグラフィック処理装置(GPU)およびマルチコアプロセッサを含む。

0027

本明細書は、ベストモードを含めて本発明を開示するために、さらに、当業者なら誰でも任意のデバイスまたはシステムを作成し使用することおよび任意の組み込まれた方法を実施することを含めて本発明を実施することができるようにするために、実施例を使用する。本発明の特許可能な範囲は、特許請求の範囲によって定義され、当業者に思いつかれる他の実施例を含んでよい。そのような他の実施例は、特許請求の範囲の文字言語と異ならない構造要素を有する場合、または特許請求の範囲の文字言語と事実上異ならない同等の構造要素を含む場合は、特許請求の範囲の範囲内にあるものとする。

0028

10コプロセッサ間でデータをやりとりする方法
12 方法10の最初のステップ
14 伝達されるべきデータのサイズを判定し、そのサイズを予め定められた閾値と比較するステップ
15 データをメッセージにコピーするステップ
16 データが共用メモリにあるかどうかを判定するステップ
18 データを共有メモリ領域に移すステップ
20一意の識別子が存在するかどうかを判定するステップ
21 一意の識別子を生成し、データのロケーションにおける共有メモリ領域にプリペンドするステップ
22 一意の識別子を配置されるべき共有メモリ領域からメッセージにコピーするステップ
24ポインタをメッセージに入れるステップ
26 追加のメタデータをメッセージにコピーするステップ
28 メッセージ内に追加のメタデータが送信されなければならないかどうかを判定するステップ
30 メッセージを送信するステップ
32 方法10の最終ステップ
34 伝達されるべきデータのサイズが予め定められた閾値より大きい
36 伝達されるべきデータのサイズが予め定められた閾値より小さいかまたはそれに等しい
38 伝達されるべきデータがすでに共有メモリ領域にある
40 伝達されるべきデータが1つまたは複数の受信プロセッサによってアクセス可能でないメモリロケーションに記憶されている
42共有メモリにある伝達されるべきデータのための一意の識別子が存在しない
44 伝達されるべきデータのための一意の識別子がすでに存在し、共有メモリ領域にある
46 追加のメタデータをメッセージに付加する
48 追加のメタデータが利用可能でないかまたはメッセージにとって必要でない

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ