(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-01
(45)【発行日】2023-02-09
(54)【発明の名称】マルチコア通信方法、装置、電子機器及び記憶媒体
(51)【国際特許分類】
G06F 15/78 20060101AFI20230202BHJP
【FI】
G06F15/78 530
(21)【出願番号】P 2021103214
(22)【出願日】2021-06-22
【審査請求日】2021-06-22
(31)【優先権主張番号】202110270991.5
(32)【優先日】2021-03-12
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】516180667
【氏名又は名称】北京小米移動軟件有限公司
【氏名又は名称原語表記】Beijing Xiaomi Mobile Software Co.,Ltd.
【住所又は居所原語表記】No.018, Floor 8, Building 6, Yard 33, Middle Xierqi Road, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】110002734
【氏名又は名称】弁理士法人藤本パートナーズ
(72)【発明者】
【氏名】肖 翔
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2011-141695(JP,A)
【文献】特開2017-73688(JP,A)
【文献】国際公開第2019/207104(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
マルチコア通信方法であって、複数のコアと、パブリッシュ・サブスクライブレイヤと、通信レイヤとを含むマルチコア通信システムに適用され、前記方法は、
マルチコアの動作を制御するステップと、
前記通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立するステップと、
前記マルチコアにおけるパブリッシュコアが前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするステップと、
前記受信コアがパブリッシュ・サブスクライブレイヤの設定
されたインタフェースを呼び出すことに応答し、前記トピックメッセージをサブスクライブ又は取得するステップと、を含む、
ことを特徴とするマルチコア通信方法。
【請求項2】
前記通信レイヤはopenAMPフレームモードであり、前記パブリッシュ・サブスクライブレイヤはuORBモードである、
ことを特徴とする請求項1に記載のマルチコア通信方法。
【請求項3】
前記マルチコアの動作を制御するステップは、
マルチコアにおけるマスタコアの起動と動作を制御し、前記通信レイヤに基づいてマルチコアにおけるリモートコアの起動を制御するステップと、
前記リモートコアがリソーステーブルを取得するステップであって、前記リソーステーブルが前記マスタコアによって定義され、前記リソーステーブルにはコア間のバッファ領域の領域分割原則が含まれるステップと、
前記マスタコア及び前記リモートコアが前記リソーステーブルに基づいて同じ構成エントリを実行するステップと、を含む、
ことを特徴とする請求項1に記載のマルチコア通信方法。
【請求項4】
前記通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立するステップは、
前記通信レイヤに基づいて前記パブリッシュコア及び前記受信コアにそれぞれポートを作成するステップと、
前記パブリッシュコアのポート名称と前記受信コアのポート名称が同じであることに応答し、前記パブリッシュコアと前記受信コアが通信接続を確立するステップと、を含む、
ことを特徴とする請求項3に記載のマルチコア通信方法。
【請求項5】
前記マルチコアにおけるパブリッシュコアが前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするステップは、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定
されたインタフェースを呼び出し、第1の設定
されたインタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをバッファ領域に送信するステップと、
前記受信コアに、トピックメッセージのトピック名称をブロードキャストすることを割り込み方式で通知するステップと、を含む、
ことを特徴とする請求項1に記載のマルチコア通信方法。
【請求項6】
パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定
されたインタフェースを呼び出す場合、前記方法は、
前記パブリッシュコア及び前記受信コアがそれぞれ、前記トピック名称に対応するバッファ空間を確立するステップをさらに含む、
ことを特徴とする請求項5に記載のマルチコア通信方法。
【請求項7】
前記マルチコアにおけるパブリッシュコアが前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするステップは、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第2の設定
されたインタフェースを呼び出し、第2の設定
されたインタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、前記バッファ領域で前記トピックメッセージをパブリッシュするステップを含む、
ことを特徴とする請求項6に記載のマルチコア通信方法。
【請求項8】
前記受信コアがパブリッシュ・サブスクライブレイヤの設定
されたインタフェースを呼び出すことに応答し、前記トピックメッセージをサブスクライブ又は取得するステップは、
前記受信コアがパブリッシュ・サブスクライブレイヤの第3の設定
されたインタフェースを呼び出すことに応答し、前記バッファ領域から前記トピックメッセージを取得するステップであって、前記第3の設定
されたインタフェースにはorb_subscribeとorb_copyが含まれるステップと、
前記トピックメッセージを予め設定されたコアのバッファ空間に記憶するステップと、を含む、
ことを特徴とする請求項7に記載のマルチコア通信方法。
【請求項9】
前記第1の設定
されたインタフェースはorb_advertiseであり、前記第2の設定
されたインタフェースはorb_publishであり、前記予め設定されたインタフェースはrpmsg_send_messageである、
ことを特徴とする請求項7に記載のマルチコア通信方法。
【請求項10】
マルチコア通信装置であって、複数のコアと、パブリッシュ・サブスクライブレイヤと、通信レイヤとを含むマルチコア通信システムに適用され、前記装置は、
マルチコアの動作を制御するための制御モジュールと、
前記通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立するための接続モジュールと、
前記マルチコアにおけるパブリッシュコアが前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするためのパブリッシュモジュールと、
前記受信コアがパブリッシュ・サブスクライブレイヤの設定
されたインタフェースを呼び出すことに応答し、前記トピックメッセージをサブスクライブ又は取得するためのサブスクライブモジュールと、を含む、
ことを特徴とするマルチコア通信装置。
【請求項11】
前記制御モジュールは、具体的に、
マルチコアにおけるマスタコアの起動と動作を制御し、前記通信レイヤに基づいてマルチコアにおけるリモートコアの起動を制御し、
前記リモートコアがリソーステーブルを取得し、前記リソーステーブルが前記マスタコアにより定義され、前記リソーステーブルにはコア間のバッファ領域の領域分割原則が含まれ、
前記マスタコア及び前記リモートコアが前記リソーステーブルに基づいて同じ構成エントリを実行することに用いられる、
ことを特徴とする請求項10に記載のマルチコア通信装置。
【請求項12】
前記接続モジュールは、具体的に、
前記通信レイヤに基づいて前記パブリッシュコア及び前記受信コアにそれぞれポートを作成し、
前記パブリッシュコアのポート名称と前記受信コアのポート名称が同じであることに応答し、前記パブリッシュコアと前記受信コアが通信接続を確立することに用いられる、
ことを特徴とする請求項11に記載のマルチコア通信装置。
【請求項13】
前記パブリッシュモジュールは、具体的に、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定
されたインタフェースを呼び出し、第1の設定
されたインタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをバッファ領域に送信し、
前記受信コアに、トピックメッセージのトピック名称をブロードキャストすることを割り込み方式で通知することに用いられる、
ことを特徴とする請求項10に記載のマルチコア通信装置。
【請求項14】
パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定
されたインタフェースを呼び出す場合、前記パブリッシュモジュールは、さらに、
前記パブリッシュコア及び前記受信コアがそれぞれ、前記トピック名称に対応するバッファ空間を確立することに用いられる、
ことを特徴とする請求項13に記載のマルチコア通信装置。
【請求項15】
前記パブリッシュモジュールは、さらに、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第2の設定
されたインタフェースを呼び出し、第2の設定
されたインタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、前記バッファ領域で前記トピックメッセージをパブリッシュすることに用いられる、
ことを特徴とする請求項14に記載のマルチコア通信装置。
【請求項16】
前記サブスクライブモジュールは、具体的に、
前記受信コアがパブリッシュ・サブスクライブレイヤの第3の設定
されたインタフェースを呼び出すことに応答し、前記バッファ領域から前記トピックメッセージを取得し、前記第3の設定
されたインタフェースにはorb_subscribeとorb_copyとが含まれ、
前記トピックメッセージを予め設定されたコアのバッファ空間に記憶することに用いられる、
ことを特徴とする請求項15に記載のマルチコア通信装置。
【請求項17】
プロセッサと、
プロセッサの実行可能な命令を記憶するためのメモリと、を含み、
前記プロセッサは、請求項1~9のいずれかに記載のマルチコア通信方法を実行するように構成される、
ことを特徴とする電子機器。
【請求項18】
非一時的なコンピュータ読み取り可能な記憶媒体であって、
前記記憶媒体における命令は、電子機器が請求項1~9のいずれかに記載のマルチコア通信方法を実行できるように、電子機器のプロセッサによって実行される。
ことを特徴とする非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は通信分野に関し、特にマルチコア通信方法、装置、電子機器及び記憶媒体に関する。
【背景技術】
【0002】
組み込みシステムは、携帯電話、モノのインターネット(IOT)機器などの電子機器に広く使用されている。技術の進歩に伴い、組み込みシステムはシングルコアからマルチコアに発展し、電子機器の性能を向上させている。マルチコア組み込みシステムの発展に伴い、マルチコア間に通信及びインタラクションを行う必要がある。特にシングルチップマルチコアシステムについて、チップのマルチコア通信はマルチコアシステムが直面している課題となっている。通信メカニズムの良否はマルチコアシステムの性能に直接影響し、効率的な通信メカニズムもマルチコアと同じ高性能を発揮する重要な保障である。
【0003】
関連技術において、マルチコア間通信は、例えばQMI(Qualcomm Messaging Interface)アーキテクチャを使用することができる。QMIアーキテクチャにおける各アプリケーションは、対応するClient APIを使用することにより、外部のServiceと通信及びインタラクションを行うことができ、QMIアーキテクチャにおける中間コンポーネントは、データのカプセル化、転送、カプセル化の解除などの能力を提供する。
【0004】
関連技術における形態には、QMIは関連プラットフォームのプライベート技術であり、完全に開放されず、普及及び応用ができないという技術的問題が存在する。そのため、関連技術では、マルチコア間で効率的に通信し、データを共有する方法に欠ける。
【発明の概要】
【発明が解決しようとする課題】
【0005】
関連技術に存在する問題を克服するために、本開示は、マルチコア通信方法、装置、電子機器及び記憶媒体を提供する。
【課題を解決するための手段】
【0006】
本開示の実施例の第1の態様によれば、マルチコア通信方法を提供し、複数のコアと、パブリッシュ・サブスクライブレイヤと、通信レイヤとを含むマルチコア通信システムに適用され、前記方法は、
マルチコアの動作を制御するステップと、
前記通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立するステップと、
前記マルチコアにおけるパブリッシュコアが前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするステップと、
前記受信コアがパブリッシュ・サブスクライブレイヤの設定インタフェースを呼び出すことに応答し、前記トピックメッセージをサブスクライブ又は取得するステップと、を含む。
【0007】
選択的に、前記通信レイヤはopenAMPフレームモードであり、前記パブリッシュ・サブスクライブレイヤはuORBモードである。
【0008】
選択的に、前記マルチコアの動作を制御するステップは、
マルチコアにおけるマスタコアの起動と動作を制御し、前記通信レイヤに基づいてマルチコアにおけるリモートコアの起動を制御するステップと、
前記リモートコアがリソーステーブルを取得するステップであって、前記リソーステーブルが前記マスタコアによって定義され、前記リソーステーブルにはコア間のバッファ領域の領域分割原則が含まれるステップと、
前記マスタコア及び前記リモートコアが前記リソーステーブルに基づいて同じ構成エントリを実行するステップと、を含む。
【0009】
選択的に、前記通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立するステップは、
前記通信レイヤに基づいて前記パブリッシュコア及び前記受信コアにそれぞれポートを作成するステップと、
前記パブリッシュコアのポート名称と前記受信コアのポート名称が同じであることに応答し、前記パブリッシュコアと前記受信コアが通信接続を確立するステップと、を含む。
【0010】
選択的に、前記マルチコアにおけるパブリッシュコアが、前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするステップは、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定インタフェースを呼び出し、第1の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをバッファ領域に送信するステップと、
前記受信コアに、トピックメッセージのトピック名称をブロードキャストすることを割り込み方式で通知するステップと、を含む。
【0011】
選択的に、パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定インタフェースを呼び出す場合、前記方法は、
前記パブリッシュコア及び前記受信コアがそれぞれ、前記トピック名称に対応するバッファ空間を確立するステップをさらに含む。
【0012】
選択的に、前記マルチコアにおけるパブリッシュコアが、前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするステップは、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第2の設定インタフェースを呼び出し、第2の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、前記バッファ領域で前記トピックメッセージをパブリッシュするステップを含む。
【0013】
選択的に、前記受信コアがパブリッシュ・サブスクライブレイヤの設定インタフェースを呼び出すことに応答し、前記トピックメッセージをサブスクライブ又は取得するステップは、
前記受信コアがパブリッシュ・サブスクライブレイヤの第3の設定インタフェースを呼び出すことに応答し、前記バッファ領域から前記トピックメッセージを取得するステップであって、前記第3の設定インタフェースにはorb_subscribeとorb_copyとが含まれるステップと、
前記トピックメッセージを予め設定されたコアのバッファ空間に記憶するステップと、を含む。
【0014】
選択的に、前記第1の設定インタフェースはorb_advertiseであり、前記第2の設定インタフェースはorb_publishであり、前記予め設定されたインタフェースはrpmsg_send_messageである。
【0015】
本開示の実施例の第2の態様によれば、マルチコア通信装置を提供し、複数のコアと、パブリッシュ・サブスクライブレイヤと、通信レイヤとを含むマルチコア通信システムに適用され、前記装置は、
マルチコアの動作を制御するための制御モジュールと、
前記通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立するための接続モジュールと、
前記マルチコアにおけるパブリッシュコアが前記パブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするためのパブリッシュモジュールと、
前記受信コアがパブリッシュ・サブスクライブレイヤの設定インタフェースを呼び出すことに応答し、前記トピックメッセージをサブスクライブ又は取得するためのサブスクライブモジュールと、を含む。
【0016】
選択的に、前記制御モジュールは、具体的に、
マルチコアにおけるマスタコアの起動と動作を制御し、前記通信レイヤに基づいてマルチコアにおけるリモートコアの起動を制御し、
前記リモートコアがリソーステーブルを取得し、前記リソーステーブルが前記マスタコアによって定義され、前記リソーステーブルにはコア間のバッファ領域の領域分割原則が含まれ、
前記マスタコア及び前記リモートコアが前記リソーステーブルに基づいて同じ構成エントリを実行することに用いられる。
【0017】
選択的に、前記接続モジュールは、具体的に、
前記通信レイヤに基づいて前記パブリッシュコア及び前記受信コアにそれぞれポートを作成し、
前記パブリッシュコアのポート名称と前記受信コアのポート名称が同じであることに応答し、前記パブリッシュコアと前記受信コアが通信接続を確立することに用いられる。
【0018】
選択的に、前記パブリッシュモジュールは、具体的に、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定インタフェースを呼び出し、第1の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをバッファ領域に送信し、
前記受信コアに、トピックメッセージのトピック名称をブロードキャストすることを割り込み方式で通知することに用いられる。
【0019】
選択的に、パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第1の設定インタフェースを呼び出す場合、前記パブリッシュモジュールは、さらに、
前記パブリッシュコア及び前記受信コアがそれぞれ、前記トピック名称に対応するバッファ空間を確立することに用いられる。
【0020】
選択的に、前記パブリッシュモジュールは、さらに、
前記パブリッシュコアが前記パブリッシュ・サブスクライブレイヤの第2の設定インタフェースを呼び出し、第2の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、前記バッファ領域で前記トピックメッセージをパブリッシュすることに用いられる。
【0021】
選択的に、前記サブスクライブモジュールは、具体的に、
前記受信コアがパブリッシュ・サブスクライブレイヤの第3の設定インタフェースを呼び出すことに応答し、前記バッファ領域から前記トピックメッセージを取得し、前記第3の設定インタフェースにはorb_subscribeとorb_copyとが含まれ、
前記トピックメッセージを予め設定されたコアのバッファ空間に記憶することに用いられる。
【0022】
本開示の実施例の第3の態様によれば、電子機器を提供し、
プロセッサと、
プロセッサの実行可能な命令を記憶するためのメモリと、を含み、
前記プロセッサは、以上のいずれかに記載のマルチコア通信方法を実行するように構成される。
【0023】
本開示の実施例の第4の態様によれば、非一時的なコンピュータ読み取り可能な記憶媒体を提供し、前記記憶媒体における命令は、電子機器が以上のいずれかに記載のマルチコア通信方法を実行できるように、電子機器のプロセッサによって実行される。
【発明の効果】
【0024】
本開示の実施例にて提供される技術的解決手段は以下の有益な効果を含むことができる。本開示の方法を使用すると、組み合わせたパブリッシュ・サブスクライブレイヤと通信レイヤに基づいて、マルチコア間の通信接続、及びマルチコア間でのトピックメッセージの伝達を実現することができる。効果的なマルチコア間のメッセージのサブスクライブ及びパブリッシュメカニズムを確立し、マルチコア間のデータの共有をより便利且つ迅速にする。
【0025】
なお、以上の一般的な説明及び後続する詳細説明は単なる例示的且つ解釈的なものであり、本開示を限定するものではないことを理解すべきである。
【図面の簡単な説明】
【0026】
ここでの図面は、明細書に組み込まれ、本明細書の一部を構成し、本発明に符合する実施例を示し、明細書とともに本発明の原理を解釈することに用いられる。
【
図1】例示的な一実施例により示される方法のフローチャートである。
【
図2】例示的な一実施例により示される方法のフローチャートである。
【
図3】例示的な一実施例により示される方法のフローチャートである。
【
図4】例示的な一実施例により示される方法のフローチャートである。
【
図5】例示的な一実施例により示される方法のフローチャートである。
【
図6】例示的な一実施例により示されるシステムフレームの概略図である。
【
図7】例示的な一実施例により示されるマルチコアアーキテクチャの概略図である。
【
図8】例示的な一実施例により示されるサブスクライブメカニズムの原理の概略図である。
【
図9】例示的な一実施例により示される装置のブロック図である。
【
図10】例示的な一実施例により示される電子機器のブロック図である。
【発明を実施するための形態】
【0027】
ここで、例示的な実施例について詳細に説明し、その例を添付の図面に示す。以下の説明が図面に言及している場合、特に明記しない限り、異なる図の同じ数字は同じ又は類似の要素を表す。以下の例示的な実施例において説明される実施形態は、本発明に一致するすべての実施形態を示すものではない。これに対して、それらは、添付の特許請求の範囲に詳しく記載された、本発明のいくつかの態様に一致する装置及び方法の例である。
【0028】
組み込みシステムは、携帯電話、モノのインターネット(IOT)機器などの電子機器に広く使用されている。技術の進歩に伴い、組み込みシステムはシングルコアからマルチコアに発展し、電子機器の性能を向上させている。ここで、マルチコア組み込みシステムにおいて、複数のコア(core)が同一のチップ(chip)にカプセル化されてもよい。例えば、AP、Modem DSP、Audio DSP及びSensor DSPなどである。シングルコアを含む複数のチップが同一のボード(board)上に設計されてもよい。或いは、上記2つの態様の組み合わせであってもよい。
【0029】
マルチコア組み込みシステムには、非対称型マルチコアプロセッシング(Asymmetric Multi-Processing、AMP)と対称型マルチコアプロセッシング(Symmetric Multi-Processing、SMP)との2種類の形態がある。
【0030】
AMPアーキテクチャは一般的に複数のCPUを含み、且つ各CPUが異なるシステムアーキテクチャである。各CPUは、独立したアドレス空間を有し、各CPUは、独自のオペレーティングシステム(OS)を実行することができる。また、AMPアーキテクチャは複数のCPUに互いに通信するハードウェアリソースを提供する。例えば、携帯電話のSOC(System on chip、システムオンチップ)がAMPアーキテクチャであり、SOC内部に複数のDSPとアプリケーションプロセッサAPがあり、それぞれのOSを実行することができる。
【0031】
SMPアーキテクチャは一般的に複数のCPUを含み、且つ各CPUが同じシステムアーキテクチャであり、メモリ(memory)空間を互いに共有する。SMPには1つのOSがあり、タスクを複数のCPUに配信し、CPU間で共有メモリを介して互いに通信する。例えば、デスクトップコンピュータがSMPアーキテクチャであり、各CPUがタスクを並列に実行することで性能を向上させる。
【0032】
マルチコア組み込みシステムの発展に伴い、マルチコア間に通信及びインタラクションを行う必要がある。特にシングルチップマルチコアシステムについて、チップのマルチコア通信はマルチコアシステムが直面している課題となっている。通信メカニズムの良否はマルチコアシステムの性能に直接影響し、効率的な通信メカニズムもマルチコアと同じ高性能を発揮する重要な保障である。
【0033】
関連技術において、マルチコア間通信は、例えばQMI(Qualcomm Messaging Interface)アーキテクチャを使用することができる。QMIアーキテクチャにおける各アプリケーションは、対応するClient APIを使用することにより、外部のServiceと通信及びインタラクションを行うことができ、QMIアーキテクチャにおける中間コンポーネントがデータのカプセル化、転送、カプセル化の解除などの能力を提供する。
【0034】
関連技術における形態には、QMIは関連プラットフォームのプライベート技術であり、完全に開放されず、普及及び応用ができないという技術的問題が存在する。そのため、関連技術では、マルチコア間で効率的に通信し、データを共有する方法に欠ける。
【0035】
関連技術における技術的問題を解決するために、本開示は、マルチコア通信方法を提供し、複数のコアと、パブリッシュ・サブスクライブレイヤと、通信レイヤとを含むマルチコア通信システムに適用される。方法は、マルチコアの動作を制御するステップと、通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立するステップと、マルチコアにおけるパブリッシュコアがパブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストするステップと、受信コアがパブリッシュ・サブスクライブレイヤの設定インタフェースを呼び出すことに応答し、トピックメッセージをサブスクライブ又は取得するステップと、を含む。本開示の方法を使用すると、組み合わせたパブリッシュ・サブスクライブレイヤと通信レイヤに基づいて、マルチコア間の通信接続、及びマルチコア間でのトピックメッセージの伝達を実現することができる。効果的なマルチコア間のメッセージのサブスクライブ及びパブリッシュメカニズムを確立し、マルチコア間のデータの共有をより便利且つ迅速にする。
【0036】
例示的な一実施例では、本実施例のマルチコア通信方法は、マルチコア通信システムに適用される。マルチコア通信システムは複数のコアと、パブリッシュ・サブスクライブレイヤと、通信レイヤと、を含む。ここで、マルチコア通信システムはAMPアーキテクチャに基づくものであってもよいし、SMPアーキテクチャに基づくものであってもよく、本実施例ではAMPアーキテクチャに基づくものについて説明する。
【0037】
複数のコアは、マスタコア(Master Core)とリモートコア(remote core)とを含んでもよく、複数のコアは、例えば、同一のチップ上に集積されてもよい。
【0038】
パブリッシュ・サブスクライブレイヤは、例えば、uORB(Micro Object Request Broker、マイクロオブジェクトリクエストブローカー)モードであってもよい。uORBは非同期通信メカニズムを採用して、マルチコア間のメッセージのパブリッシュ及びサブスクライブを実現することができ、それにより、マルチコア間のデータ共有を実現する。
【0039】
通信レイヤは、例えば、IPC(Inter Processor Communication、プロセッサ間通信)機能を実現するために、TCP/IPモデル又はブルートゥース(登録商標)モードを採用してもよい。本実施例では、通信レイヤはOpenAMP(オープンソースAMP)アーキテクチャモードを採用する。OpenAMPアーキテクチャモードの通信レイヤはRemoteprocと、Virtioと、Rpmsgとの3つのサブレイヤを含んでもよい。
【0040】
図1に示すように、本実施例の方法は、以下のステップS110~S140を含む。
【0041】
S110において、マルチコアの動作を制御する。
【0042】
S120において、通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立する。
【0043】
S130において、マルチコアにおけるパブリッシュコアがパブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストする。
【0044】
S140において、受信コアがパブリッシュ・サブスクライブレイヤの設定インタフェースを呼び出すことに応答し、トピックメッセージをサブスクライブ又は取得する。
【0045】
ここで、ステップS110において、OpenAMPアーキテクチャモードの通信レイヤにおけるRemoteprocサブレイヤは、リモートプロシージャを起動する(boot remote proc)機能を実現することができる。例えば、先にマルチコアにおけるマスタコアを起動してから、リモートコアを起動してもよい。
【0046】
ステップS120において、OpenAMPアーキテクチャモードの通信レイヤにおけるRpmsgサブレイヤは、マルチコア間の通信接続を実現し、すなわちIPC機能を実現することができる。パブリッシュコアは、例えば、マルチコアにおけるいずれかのコアであってもよく、トピックメッセージをパブリッシュするコアである。受信コアは、例えば、マルチコアにおけるパブリッシュコア以外の少なくとも1つのコアであってもよい。
【0047】
ステップS130において、予め設定されたインタフェースは、例えば、Rpmsgインタフェースであってもよい。トピックメッセージは、例えば、トピック名称、メッセージ内容及びパブリッシュタイプなどを含んでもよい。トピックメッセージは、例えば、加速度計データ、オーディオデータ、ブルートゥースwifi状態及びシステムによって生成された任意の中間量であってもよい。各種のトピックメッセージは唯一の名称及び対応する構造体を有し、構造体がトピック状態の記述を含み、例えば、加速度データは、x、y、zの3軸加速度ベクトル及びタイムスタンプメッセージを含む。
【0048】
パブリッシュコアは、トピックメッセージに対して、トピックメッセージのブロードキャスト、すなわちトピック名称のブロードキャストと、トピックメッセージのパブリッシュとの2種類の操作を実行することができる。
【0049】
パブリッシュコアがトピックメッセージをブロードキャスト又はパブリッシュする場合、それはまずパブリッシュ・サブスクライブレイヤuORBの設定インタフェース(API)を呼び出し、uORBの設定インタフェース内部を介して通信レイヤ(openAMP)の予め設定されたインタフェースを呼び出して、トピックメッセージのブロードキャスト又はパブリッシュを実現することができる。uORBの設定インタフェース内部は、例えば、Rpmsgに基づく登録情報又は呼び出し命令を含んでもよい。設定インタフェースは、第1の設定インタフェース、第2の設定インタフェース及び第3の設定インタフェースを含んでもよい。
【0050】
本ステップにおいて、RpmsgサブレイヤはVirtioサブレイヤの上に位置する機器タイプ及びバスである。Rpmsgインタフェースを呼び出すことにより、Virtioサブレイヤへのアクセスを実現し、それにより、メッセージ送受信を実現することができる。ここで、通信レイヤには共有メモリモジュールもあり、2つのコアごとに1つの共有メモリモジュールを共有することができる。
【0051】
図6に示すように、Virtioサブレイヤは、共有メモリモジュールに集積された、メッセージ送受信のためのbufferエンティティ(バッファ領域)を含み、bufferエンティティはTX buffer及びRX bufferを含み、メッセージの送信はTX bufferにより行うことができ、メッセージの受信はRX bufferにより行うことができる。
【0052】
本実施例では、マルチコアは、本コアインタフェースと一致するuORBのAPIを使用し、OpenAMPアーキテクチャモードの通信レイヤがパブリッシュ・サブスクライブレイヤ(uORB)のバックエンドとして、マルチコアIPC機能を提供する。APIインタフェースが少なく、開発及び利用に役立つ。
【0053】
ステップS140において、設定インタフェースは、例えば、uORBの第3の設定インタフェースであってもよい。第3の設定インタフェースは、orb_subscribe及びorb_copyを含み、パブリッシュされたトピックメッセージをサブスクライブ又は取得するために使用されることができる。マルチコア間のメッセージ伝送又は共有を実現する。
【0054】
例示的な一実施例では、
図2に示すように、本実施例の方法は具体的に以下のステップS111~S113を含んでもよい。
【0055】
S111において、マルチコアにおけるマスタコアの起動と動作を制御し、通信レイヤに基づいてマルチコアにおけるリモートコアの起動を制御する。
【0056】
S112において、リモートコアがリソーステーブルを取得する。
【0057】
S113において、マスタコア及びリモートコアがリソーステーブルに基づいて同じ構成エントリを実行する。
【0058】
ここで、ステップS111において、通信レイヤにおけるRemoteprocサブレイヤは、remote systemのライフサイクル及びリソース管理を提供することができる。例えば、remote system imageを固定位置にロードしてremote proc(リモートプロシージャ)を起動し、remote system(リモートシステム)リソースを作成し管理し、remote systemに対して、suspend(一時停止)、resume(再開)及びshutdown(シャットダウン)などの制御を行うことができる。
【0059】
本ステップにおいて、マスタコア(Master core)は先に給電されて起動し、起動した後、remote system imageをロードして解析することができる。ジャンプしてリモートコア(remote core)を起動させる。
【0060】
ステップS112において、マスタコアの起動及び初期化が完了した後、ELFファイルフォーマットのリソーステーブル(resource table)を対応するアドレス空間にロードすることができる。リモートコアはこのアドレス空間からリソーステーブルを取得することで、リモートコアとマスタコアにおけるリソーステーブルを一致させる。ここで、リソーステーブルは、マスタコアによって定義され、コア間のバッファ領域(バッファ領域が共有メモリモジュールに集積される)の領域分割原則などの複数の構成エントリを含む。
【0061】
一例では、マルチコア通信システムは音響チップを例とする。チップは3つのコアを有し、それぞれは2つのCortex M4コア、1つのCortex A53コアである。ここで、Cortex M4 DSPはセンサデータ収集及びアルゴリズム処理を担当し、Cortex M4 DSPはオーディオデータ収集及びアルゴリズム処理を担当し、Cortex A53はAIアルゴリズムの加速及びユーザUIインタラクションを担当する。2つのCortex M4はそれぞれsensor及びオーディオのデータを収集し、融合フィルタリング及びエンコード・デコードの操作を行い、Cortex A53コアは、他の2つのコアのデータの一部を使用してAIアルゴリズムの学習及び導出を行い、且つUIでの表示を担当する。
【0062】
本例では、Cortex A53はAPプロセッサであり、先に給電されて起動する。起動した後、他の2つのコアにジャンプし、起動させる。Cortex A53がLinux(登録商標) OSを実行し、Cortex M4がRTOS(リアルタイムマルチタスクオペレーティングシステム)を実行する。
【0063】
ステップS113において、マスタコアとリモートコアのリソーステーブルが一致し、マスタコアとリモートコアにおいて、それぞれリソーステーブルにおける構成エントリに基づいて、対応するロードを行うことができる。
【0064】
例えば、リソーステーブルはコア間のバッファ領域の領域分割原則を含む。バッファ領域は共有メモリモジュール上に位置するbufferエンティティであり、マスタコアとリモートコアがリソーステーブルに基づいてバッファ領域に対して同じ形式の分割を行う。
【0065】
また、例えば、リソーステーブルはバッファ領域の記憶バイト単位をさらに含む。マスタコアとリモートコアは、リソーステーブルに基づいてバッファ領域に対して単位アライメントを行い、すなわちバッファ領域に同じ記憶バイト単位を設定する。
【0066】
なお、通信レイヤはリソーステーブルに基づいて、bufferエンティティの数、サイズ及びアライメント方式というパラメータを含むvringを作成することができる。
【0067】
本実施例では、openAMPとuORBは、プラットフォームの関連性が低く、移植しやすく、例えば、それぞれの元のプラットフォームから携帯電話のオペレーティングシステムプラットフォームに移植する。マルチコア間に協議されたリソーステーブルを配置し、バッファ領域の分割及び単位アライメントを行えばよく、残りのメカニズムがopenAMPに依存して統一的に実現することができる。
【0068】
例示的な一実施例では、
図3に示すように、本実施例のステップ120は、具体的に以下のステップS121~S122を含んでもよい。
【0069】
S121において、通信レイヤに基づいてパブリッシュコア及び受信コアにそれぞれポートを作成する。
【0070】
S122において、パブリッシュコアのポート名称と受信コアのポート名称が同じであることに応答し、パブリッシュコアと受信コアが通信接続する。
【0071】
ここで、ステップS121において、通信レイヤにおけるRpmsgサブレイヤには、プレフィックスがrpmsgのAPIが設けられる。パブリッシュコア及び受信コアはそれぞれパブリッシュ・サブスクライブレイヤ(uORB)を介してrpmsgのAPIを呼び出して、ポートを作成することができる。本実施例では、パブリッシュ・サブスクライブレイヤがrpmsgのAPIを呼び出し、rpmsgのAPIの中に「ポートを作成する」の関数又は命令が含まれる場合、パブリッシュコア及び受信コアがそれぞれポートを作成するようにする。
【0072】
ステップS122において、ポート名称とは、ポートで許可されたプロシージャの名称である。一例では、パブリッシュコアと受信コアとが通信接続してuORBのプロシージャを実現する場合、パブリッシュコア上に作成されたポートは例えばorb_transmitであってもよく、受信コア上に作成されたポートは例えばorb_receiveであってもよい。2つのポートの名称はプレフィックスの「orb」であり、この名称が同じである場合、2つのコアがバインディングを実現することができ、すなわち名称によりマルチコア間の認識及び通信接続を行う。
【0073】
なお、パブリッシュコアと受信コアのポート間には仮想channelが形成され、異なるプロシージャメッセージのパブリッシュと受信は実質的にbufferエンティティにおけるTX buffer及びRX bufferを介して行われる。パブリッシャのパブリッシュとサブスクライバの受信は完全に分離されたbufferを使用することで、パブリッシュとサブスクライブが相互に影響し、待つことがない。ここで、Rpmsgサブレイヤの内部はName Serviceをさらに含み、ポートの名称(name)をport number(ポート番号)に変換することができ、nameもRpmsgの上位層の仮想channelの名称である。
【0074】
パブリッシュコアと受信コアとの間の通信については、通信レイヤには1つのバッファ領域、すなわち1つのTX buffer及びRX bufferがある。しかしながら、通信のプロシージャにより、コアが複数種のポートを有することができ、コア間は複数の仮想channelを含むことで、ORBプロシージャ以外の複数種のプロシージャを行うことができる。
【0075】
マルチコアにおいて、マスタコアがパブリッシュコアであり、他の全てのコアがいずれも受信コアである場合、マスタコアと任意の受信コアとの間に独立した仮想channelを作成する必要がある。それにより、マスタコアと任意の受信コアはメッセージのパブリッシュ及びサブスクライブを実現することができる。
【0076】
例示的な一実施例では、本実施例の方法は、パブリッシュコアがメッセージをブロードキャストするシーン、すなわちトピックメッセージのトピック名称をブロードキャストするシーンに適用される。
【0077】
図4に示すように、ステップS130は、具体的に以下のステップS131~S133を含む。
【0078】
S131において、パブリッシュコアがパブリッシュ・サブスクライブレイヤの第1の設定インタフェースを呼び出し、第1の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをバッファ領域に送信する。
【0079】
S132において、受信コアに、トピックメッセージのトピック名称をブロードキャストすることを割り込み方式で通知する。
【0080】
S133において、パブリッシュコア及び受信コアがそれぞれ、トピック名称に対応するバッファ空間を確立する。
【0081】
ここで、ステップS131において、第1の設定インタフェースは、例えば、uORB(パブリッシュ・サブスクライブレイヤ)のAPIであるorb_advertiseであってもよい。予め設定されたインタフェースは、例えば、openAMP(通信レイヤ)におけるRpmsgサブレイヤのAPIであるrpmsg_send_messageであってもよい。
【0082】
本ステップにおいて、パブリッシュコアがorb_advertiseを呼び出すと、orb_advertise内部はrpmsg_send_messageを呼び出して、トピックメッセージをバッファ領域に送信する。
【0083】
ステップS132において、openAMP自体が有する割り込み方式(IRQ)を使用して、受信コアにトピックメッセージのトピック名称をブロードキャストすることを通知する。受信コアに、バッファ領域にトピックメッセージが存在することを通知する。
【0084】
ステップS133において、パブリッシュコアがコア内のバッファ空間(buffer)を確立することは、orb_advertiseを呼び出す時又は前に行われてもよい。本ステップは、バッファ空間の確立タイミングを限定することではなく、パブリッシュコアにバッファ空間が存在することを示すことを意図している。受信コアはブロードキャストメッセージを受信した後にコア内のバッファ空間を確立してもよい。
【0085】
本ステップにおいて、パブリッシュコア又は受信コアにおけるバッファ空間は、いずれも関連するトピック名称に対応する。以下の2つの態様で具現化される。
【0086】
第1の態様において、パブリッシュコア又は受信コアにおけるバッファ空間の数とトピック名称の数(パブリッシュ及びサブスクライブの合計数)が同じである。すなわち、1つのトピック名称が存在すれば、パブリッシュコア又は受信コアにはこのトピック名称のバッファ空間が対応して存在する。
【0087】
第2の態様において、パブリッシュコア又は受信コアにおけるバッファ空間の名称とトピック名称が同じである。すなわち、パブリッシュコア又は受信コアにおいて、対応する名称のバッファ空間がトピック名称に対応するトピックメッセージをバッファする。
【0088】
一例では、
図7に示すように、本例は3つのコア(CPU)を含み、それぞれはCPU1、CPU2及びCPU3である。2つのコアごとに共有メモリモジュール(share memory)が設けられ、すなわち2つのコアごとにはバッファ領域を有する。各コアはいずれもトピックメッセージ(topic)をパブリッシュし、割り込み方式(IRQ line)を利用して他のコアにブロードキャストすることができる。
【0089】
CPU1は、topic Aとtopic Bをパブリッシュすることができ、CPU2上のtopic 1とCPU3上のtopic aをサブスクライブしている。それに応じて、CPU1は、topic A、topic B、topic 1及びtopic aの4つのバッファ空間を含む。
【0090】
CPU2は、topic 1とtopic 2をパブリッシュすることができ、CPU1上のtopic AとCPU3上のtopic aをサブスクライブしている。それに応じて、CPU2は、topic 1、topic 2、topic A及びtopic aの4つのバッファ空間を含む。
【0091】
CPU3はtopic aとtopic bをパブリッシュすることができ、まだサブスクライブしていない。それに応じて、CPU3は、topic aとtopic bの2つのバッファ空間を含む。
【0092】
例示的な一実施例では、本実施例の方法は、パブリッシュコアがトピックメッセージをパブリッシュするシーンに適用される。
【0093】
本実施例は、
図4に示す実施例に基づいて行うことができる。ステップS130は、具体的に以下のステップ134をさらに含む。
【0094】
S134において、パブリッシュコアがパブリッシュ・サブスクライブレイヤの第2の設定インタフェースを呼び出し、第2の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、バッファ領域でトピックメッセージをパブリッシュする。
【0095】
ここで、第2の設定インタフェースは、例えば、uORB(パブリッシュ・サブスクライブレイヤ)のAPIインタフェース:orb_publishであってもよい。予め設定されたインタフェースは、例えば、openAMP(通信レイヤ)におけるRpmsgサブレイヤのAPIであるrpmsg_send_messageであってもよい。
【0096】
本ステップにおいて、パブリッシコアがorb_publishを呼び出し、orb_publish内部がrpmsg_send_messageを呼び出すことで、バッファ領域でのトピックメッセージのパブリッシュを実現する。
【0097】
なお、パブリッシュコアは、第1の設定インタフェース(orb_advertise)及び第2の設定インタフェース(orb_publish)を同時に呼び出して、メッセージのブロードキャスト及びパブリッシュを行うことができる。
【0098】
例示的な一実施例では、パブリッシュコアがトピックメッセージをパブリッシュするシーンにおいて、
図5に示すように、ステップS140は、具体的に以下のステップS141~S142を含む。
【0099】
S141において、受信コアがパブリッシュ・サブスクライブレイヤの第3の設定インタフェースを呼び出すことに応答し、バッファ領域からトピックメッセージを取得する。
【0100】
S142において、トピックメッセージを予め設定されたコアのバッファ空間に記憶する。
【0101】
ここで、ステップS141において、第3の設定インタフェースは、uORB(パブリッシュ・サブスクライブレイヤ)のorb_subscribeとorb_copyを含む。
【0102】
受信コアはトピック名称に基づいてメッセージをサブスクライブするか否かを決定することができる。受信コアが第3の設定インタフェース(orb_subscribe、orb_copy)を呼び出すと、受信コアがサブスクライバであることが特徴付けられる。orb_subscribeを呼び出すことにより、トピックメッセージをサブスクライブするとともに、バッファ領域におけるトピックメッセージのリフレッシュ状態を監視することができる。トピックメッセージに更新がある場合、受信コアは、orb_copyをさらに呼び出すことで、バッファ領域からトピックメッセージの具体的な内容を取得することができる。
【0103】
なお、トピックメッセージのトピック名称は唯一であり、サブスクライブニーズがあるいずれかの受信コアが約束されたトピック名称によりこそ、対応するトピックメッセージを取得することができる。
【0104】
ステップS142において、受信コアがトピックメッセージを取得した後、それ自体のコア内のバッファ空間にトピックメッセージを記憶することができる。
【0105】
Rpmsgの通信方式は非同期通信方式である。上記実施例と結び付けて、パブリッシュコアと受信コアとの間の通信において、パブリッシュコアがuORBを介して通信レイヤの予め設定されたインタフェースrpmsg_send_messageを呼び出した後、openAMPアーキテクチャに基づく通信レイヤは、受信側(受信コア)の受信コールバックを呼び出して、今回の通信に応答し、すなわちopenAMP通信における割り込み方式(IRQ)である。パブリッシュコアと受信コアとの間の毎回の伝送において、割り込み方式により、パブリッシュコアが受信コアにトピックメッセージの存在を通知すること、及び受信コアがパブリッシュコアにトピックメッセージの取得完了を通知することを実現することができる。
【0106】
例示的な一実施例では、パブリッシュコアをマスタコア(Master Core)とし、受信コアをリモートコア(Remote core)とすることを例に説明する。
【0107】
(1)マスタコアがorb_advertiseとorb_publishを呼び出して、トピックメッセージをパブリッシュ及びブロードキャストすることができる。
【0108】
トピックメッセージのパブリッシュ:Master Coreがトピックメッセージをパブリッシュして、トピックメッセージをマスタコア内のこのトピックのバッファ空間に格納することができる。また、マスタコアがuORBインタフェースを呼び出す方式と、uORBインタフェース内部がrpmsgインタフェースを呼び出す方式とにより、トピックメッセージをカプセル化して共有メモリモジュールのvirtioレイヤのbufferエンティティ(コア間のバッファ領域)に送信する。
【0109】
トピックメッセージのブロードキャスト:割り込み方式を使用して、Remote coreに読み取り可能な有効情報が存在することを通知する。
【0110】
(2)トピックメッセージのサブスクライブ:Remote coreが割り込みを受信した後、ブロードキャスト情報(トピックメッセージのトピック名称)を読み取る。Remote coreがorb_subscribeを呼び出してトピックメッセージをサブスクライブするとともに、トピックメッセージを監視する。トピックメッセージに更新がある場合、orb_copyを呼び出して、バッファ領域から最新のトピックメッセージを取得し、メッセージのカプセル化を解除する。バッファ領域における対応するメッセージを放出しクリアし、返事を行うことを割り込みでMaster coreに通知して、転送が終了する。
【0111】
パブリッシャがorb_advertiseを呼び出す場合、パブリッシャの内部にバッファ空間(buffer)が作成される。パブリッシャの毎回のorb_publishは、バッファ空間を充填し、インデクス値を増加させるプロセスである。
図8に示すように、各サブスクライバはトピックデータ(orb_copy)を取得する場合、それ自体のバッファ空間のインデックス値とパブリッシャのバッファ空間のインデックス値を比較する。サブスクライバのバッファ空間のインデックス値がパブリッシャのバッファ空間のインデックス値より小さい場合(例えば、サブスクライバ1及び2)、更新されたトピックメッセージがあることが示され、そうでなければ(例えば、サブスクライバ3)、更新されたことがないことが示される。
【0112】
以下、いくつかの例を挙げて説明するが、本発明の実施例はこれらに限定されるものではない。
【0113】
例示的な一実施例では、マルチコアは2つのコアを含み、1つのコアがパブリッシュコアとし、もう1つのコアが受信コアとする。
【0114】
本例は、マルチコア間の加速度トピックメッセージのパブリッシュや取得を例として説明する:Sensor DSPが加速度データをパブリッシュコアとして収集し、Cortex A53が加速度データを受信コアとして必要とする。
【0115】
1つのSensor DSPが加速度データを収集した場合、加速度のx、y、z軸データ及びタイムスタンプを含むトピックメッセージ:「sensor_accel」をパブリッシュすることができる。パブリッシュする場合、uORBのAPIであるorb_advertiseとorb_publishを呼び出し、uORBのAPIがopenAMPのrpmsgインタフェースを内部で呼び出すことで、加速度トピックメッセージをパブリッシュする。パブリッシュするとともに、割り込み方式を採用してトピックメッセージをブロードキャストする。
【0116】
Cortex A53が加速度データを取得しようとする場合、orb_subscribeを呼び出すことにより、サブスクライブするとともに、返信されたfdが読み取り可能であるか否かを監視することができ、読み取り可能であれば(更新されたデータが存在することが示される)、orb_copyを呼び出してトピックの最新のデータを取得する。
【0117】
例示的な一実施例では、マルチコアはAコア、Bコア及びCコアの3つのコアを含み、Aコアをパブリッシュコアとすることができ、BコアとCコアを受信コアとすることができる。
【0118】
Aコアがデータを収集した場合、uORBのAPIであるorb_advertiseとorb_publishを呼び出すことができ、uORBのAPIはopenAMPのrpmsgインタフェースを内部で呼び出すことで、トピックメッセージをバッファ領域にパブリッシュする。パブリッシュするとともに、割り込み方式を採用してトピックメッセージをブロードキャストする。
【0119】
BコアとCコアはブロードキャストメッセージを受信する。ブロードキャストメッセージのトピック名称をそれぞれ調べることにより、Bコアがこのトピックメッセージに興味を持っていなければ、サブスクライブしない。Cコアがこのトピックメッセージの取得を必要とし、且つorb_subscribeを呼び出せば、このトピックメッセージをサブスクライブする。Cコアは、AコアとCコアとの間のバッファ領域のメッセージ更新状態をリアルタイムに監視し、トピックメッセージが更新された場合、orb_copyを呼び出してトピックの最新のデータを取得する。
【0120】
例示的な一実施例では、マルチコアはAコア、Bコア及びCコアの3つのコアを含み、AコアとBコアをパブリッシュコアとし、Cコアを受信コアとする。
【0121】
Aコア及びBコアがそれぞれデータを収集し、パブリッシュを必要とする場合に、それぞれのコアでuORBのAPIであるorb_advertiseとorb_publishを呼び出すことができ、uORBのAPIはopenAMPのrpmsgインタフェースを内部で呼び出すことで、トピックメッセージをそれぞれパブリッシュする。パブリッシュするとともに、割り込み方式を採用してトピックメッセージをブロードキャストする。
【0122】
CコアはAコアとBコアのブロードキャストメッセージを受信する。ブロードキャストメッセージのトピック名称をそれぞれ調べることにより、Cコアが他の2つのコアのメッセージをいずれもサブスクライブする必要があれば、Cコアはorb_subscribeをそれぞれ呼び出し、AコアとBコアのトピックメッセージをサブスクライブする。Cコアは、AコアとCコアとの間のバッファ領域のメッセージ更新状態、及びBコアとCコアとの間のバッファ領域のメッセージ更新状態をリアルタイムに監視する。トピックメッセージが更新された場合、Cコアは、orb_copyを呼び出してそれぞれトピックの最新のデータを取得する。なお、Cコア内には、サブスクライブされたAコアとBコアのトピックメッセージについて、いずれも対応するバッファ空間が存在する。
【0123】
例示的な一実施例では、マルチコアはAコア、Bコア、Cコア、及びDコアの4つのコアを含み、AコアとBコアをパブリッシュコアとし、CコアとDコアを受信コアとする。
【0124】
Aコア及びBコアがそれぞれデータを収集し、パブリッシュを必要とする場合に、それぞれのコアでuORBのAPIであるorb_advertiseとorb_publishを呼び出すことができ、uORBのAPIはopenAMPのrpmsgインタフェースを内部で呼び出すことで、トピックメッセージをパブリッシュする。パブリッシュするとともに、割り込み方式を採用してトピックメッセージをブロードキャストする。
【0125】
CコアとDコアはいずれもAコアとBコアのブロードキャストメッセージを受信することができる。ブロードキャストメッセージのトピック名称をそれぞれ調べることにより、CコアとDコアがいずれもAコアとBコアのメッセージをサブスクライブする必要があれば、各サブスクライブコアはorb_subscribeを呼び出して、それぞれ各パブリッシュコアのトピックメッセージをサブスクライブする。Cコアは、AコアとCコアとの間のバッファ領域のメッセージ更新状態、及びBコアとCコアとの間のバッファ領域のメッセージ更新状態をリアルタイムに監視する。Dコアは、AコアとDコアとの間のバッファ領域のメッセージ更新状態、及びBコアとDコアとの間のバッファ領域のメッセージ更新状態をリアルタイムに監視する。トピックメッセージが更新された場合、サブスクライブコアは、orb_copyを呼び出してトピックの最新のデータを取得する。
【0126】
なお、上記実施例は、主にトピックメッセージのサブスクライブ及びパブリッシュを説明し、同じフレーム及び原理に基づき、本開示におけるマルチコア通信方法は、メッセージのサブスクライブのキャンセルや、トピックメッセージのリモートブロードキャスト/ブロードキャストのキャンセルなどの通信プロシージャをさらに実現することができる。
【0127】
例示的な一実施例では、本開示は、マルチコア通信装置をさらに提供し、複数のコアと、パブリッシュ・サブスクライブレイヤと、通信レイヤとを含むマルチコア通信システムに適用される。
図9に示すように、本実施例の装置は、制御モジュール110、接続モジュール120、パブリッシュモジュール130及びサブスクライブモジュール140を含む。本実施例の装置は、
図1に示す方法を実現することに用いられる。ここで、制御モジュール110は、マルチコアの動作を制御することに用いられる。接続モジュール120は、通信レイヤに基づいてマルチコアにおけるパブリッシュコアと受信コアとの通信接続を確立することに用いられる。パブリッシュモジュール130は、マルチコアにおけるパブリッシュコアがパブリッシュ・サブスクライブレイヤを介して通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをパブリッシュし、又はトピックメッセージのトピック名称をブロードキャストすることに用いられる。サブスクライブモジュール140は、受信コアがパブリッシュ・サブスクライブレイヤの設定インタフェースを呼び出すことに応答し、トピックメッセージをサブスクライブ又は取得することに用いられる。
【0128】
例示的な一実施例では、引き続き
図9を参照して、制御モジュール110は、具体的に、マルチコアにおけるマスタコアの起動と動作を制御し、通信レイヤに基づいてマルチコアにおけるリモートコアの起動を制御し、リモートコアがリソーステーブルを取得し、リソーステーブルがマスタコアによって定義され、リソーステーブルにはコア間のバッファ領域の領域分割原則が含まれ、マスタコア及びリモートコアがリソーステーブルに基づいて同じ構成エントリを実行することに用いられる。接続モジュール120は、具体的に、通信レイヤに基づいてパブリッシュコア及び受信コアにそれぞれポートを作成し、パブリッシュコアのポート名称と受信コアのポート名称が同じであることに応答し、パブリッシュコアと受信コアが通信接続を確立することに用いられる。
【0129】
例示的な一実施例では、引き続き
図9を参照して、パブリッシュモジュール130は、具体的に、パブリッシュコアがパブリッシュ・サブスクライブレイヤの第1の設定インタフェースを呼び出し、第1の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、トピックメッセージをバッファ領域に送信し、受信コアに、トピックメッセージのトピック名称をブロードキャストすることを割り込み方式で通知することに用いられる。パブリッシュコアがパブリッシュ・サブスクライブレイヤの第1の設定インタフェースを呼び出す場合、パブリッシュモジュール130は、さらに、パブリッシュコア及び受信コアがそれぞれ、トピック名称に対応するバッファ空間を確立することに用いられる。
【0130】
例示的な一実施例では、引き続き
図9を参照して、パブリッシュモジュール130は、さらに、パブリッシュコアがパブリッシュ・サブスクライブレイヤの第2の設定インタフェースを呼び出し、第2の設定インタフェースが通信レイヤの予め設定されたインタフェースを呼び出し、バッファ領域で前記トピックメッセージをパブリッシュすることに用いられる。サブスクライブモジュール140は、具体的に、受信コアがパブリッシュ・サブスクライブレイヤの第3の設定インタフェースを呼び出すことに応答し、バッファ領域からトピックメッセージを取得し、第3の設定インタフェースにはorb_subscribeとorb_copyが含まれ、トピックメッセージを予め設定されたコアのバッファ空間に記憶することに用いられる。
【0131】
図10に示すように、電子機器のブロック図である。本開示は、電子機器をさらに提供し、例えば、機器500は携帯電話、コンピュータ、デジタル放送端末、メッセージ送受信機器、ゲームコンソール、タブレットデバイス、医療機器、フィットネス機器、携帯情報端末などであってもよい。
【0132】
機器500は、処理コンポーネント502、メモリ504、電力コンポーネント506、マルチメディアコンポーネント508、オーディオコンポーネント510、入力/出力(I/O)インタフェース512、センサコンポーネント514、及び通信コンポーネント516のうち1つ又は複数のコンポーネントを含んでもよい。
【0133】
処理コンポーネント502は、一般的に、表示、電話の呼び出し、データ通信、カメラ操作及び記録操作に関連する操作のような、機器500の全体の操作を制御する。処理コンポーネント502は、上記方法の全部又は一部のステップを完成するために、命令を実行する1つ又は複数のプロセッサ520を含むことができる。また、処理コンポーネント502は、処理コンポーネント502と他のコンポーネントとの間のインタラクションを容易にするように、1つ又は複数のモジュールを含むことができる。例えば、処理コンポーネント502は、マルチメディアコンポーネント508と処理コンポーネント502との間のインタラクションを容易にするように、マルチメディアモジュールを含むことができる。
【0134】
メモリ504は、装置500での操作をサポートするように、様々な種類のデータを記憶するように構成される。これらのデータの例は、機器500上で操作されるためのあらゆるアプリケーションプログラムや方法の命令、連絡先データ、電話帳データ、メッセージ、ピクチャ、及びビデオなどを含む。メモリ504は、例えば、スタティックランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、プログラマブル読み出し専用メモリ(PROM)、読み出し専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスク又は光ディスクのような、あらゆる種類の揮発性または不揮発性記憶機器又はそれらの組み合わせにより実現することができる。
【0135】
電力コンポーネント506は、機器500の各種のコンポーネントに電力を供給する。電力コンポーネント506は、電源管理システム、1つ又は複数の電源、及び装置500の電力の生成、管理及び配分に関連する他のコンポーネントを含んでもよい。
【0136】
マルチメディアコンポーネント508は、機器500とユーザとの間に1つの出力インタフェースを提供するスクリーンを含む。いくつかの実施例では、スクリーンは、液晶ディスプレイ(LCD)とタッチパネル(TP)とを含んでもよい。スクリーンがタッチパネルを含む場合、スクリーンは、ユーザからの入力信号を受信するように、タッチパネルとして実現することができる。タッチパネルは、タッチ、スライド及びタッチパネル上のジェスチャを感知するように、1つ又は複数のタッチセンサを含む。タッチセンサは、タッチ又はスライド動作の境界を感知するだけでなく、さらにタッチ又はスライド動作に関連する持続時間及び圧力を検出することができる。いくつかの実施例では、マルチメディアコンポーネント508は、フロントカメラ及び/又はリアカメラを含む。装置500が、例えば撮影モード又は映像モードのような操作モードにある場合、フロントカメラ及び/又はリアカメラは、外部のマルチメディアのデータを受信することができる。それぞれのフロントカメラ及びリアカメラは、固定した光学レンズシステムであってもよく、又は焦点距離及び光学ズーム機能を備えてもよい。
【0137】
オーディオコンポーネント510は、オーディオ信号を出力及び/又は入力するように構成される。例えば、オーディオコンポーネント510は、1つのマイク(MIC)を含み、機器500が、例えば呼び出しモード、記録モード及びオーディオ認識モードのような操作モードにある場合、マイクは、外部のオーディオ信号を受信するように構成される。受信されたオーディオ信号は、さらに、メモリ504に記憶するか、又は通信コンポーネント516を介して送信される。いくつかの実施例では、オーディオコンポーネント510は、オーディオ信号を出力するための1つのスピーカをさらに含む。
【0138】
I/Oインタフェース512は、処理コンポーネント502と周辺インタフェースモジュールとの間にインタフェースを提供し、上記周辺インタフェースモジュールは、キーボード、クリックホイール、ボタンなどであってもよい。これらのボタンは、ホームボタン、音量ボタン、スタートボタン及びロックボタンなどを含むことができるが、これらに限定されない。
【0139】
センサコンポーネント514は、機器500に各態様の状態評価を提供するために、1つ又は複数のセンサを含む。例えば、センサコンポーネント514は、機器500のオン/オフ状態、コンポーネントの相対的位置決めを検出することができ、例えば、コンポーネントが機器500のディスプレイ及びキーボードであり、センサコンポーネント514は、さらに、機器500又は機器500の1つのコンポーネントの位置変化、ユーザと機器500が接触するか否か、機器500の方位又は加速/減速、及び機器500の温度変化を検出することができる。センサコンポーネント514は、一切の物理的接触がない場合に付近の物体の存在を検出するように構成される近接センサを含んでもよい。センサコンポーネント514は、さらに、例えばCMOSやCCDイメージセンサのような、イメージング応用に使用されるための光センサを含んでもよい。いくつかの実施例では、このセンサコンポーネント514は、加速度センサ、ジャイロセンサ、磁気センサ、圧力センサ又は温度センサをさらに含んでもよい。
【0140】
通信コンポーネント516は、機器500と他の機器との間の有線又は無線通信を容易にするように構成される。機器500は、例えばWiFi、2Gまたは3G、又はそれらの組み合わせのような、通信規格に基づく無線ネットワークにアクセスすることができる。例示的な一実施例では、通信コンポーネント516は、ブロードキャストチャネルを介して、外部ブロードキャスト管理システムからのブロードキャスト信号又はブロードキャスト関連情報を受信する。例示的な一実施例では、通信コンポーネント516は、近距離通信を促進するように、近距離無線通信(NFC)モジュールをさらに含む。例えば、NFCモジュールは、無線周波数認識(RFID)技術、赤外線データ協会(IrDA)技術、超広帯域(UWB)技術、ブルートゥース(BT)技術及びその他の技術に基づいて実現することができる。
【0141】
例示的な実施例では、機器500は、上記方法を実行するように、1つ又は複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサ又は他の電子部品によって実現することができる。
【0142】
本開示の別の例示的な実施例にて提供される非一時的なコンピュータ読み取り可能な記憶媒体は、例えば命令を含むメモリ504が挙げられ、上記命令は機器500のプロセッサ520によって実行されることで上記方法を完成することができる。例えば、コンピュータ読み取り可能な記憶媒体は、ROM、ランダムアクセスメモリ(RAM)、CD-ROM、磁気テープ、フロッピーディスク、及び光データ記憶装置などであってもよい。記憶媒体における命令は、電子機器が上記方法を実行できるように、電子機器のプロセッサによって実行される。
【0143】
当業者は、明細書を考慮し、ここで開示された発明を実施すると、本発明の他の実施形態を容易に想到し得る。本願は本発明のいずれかの変形、用途又は適応的変化をカバーすることを意図しており、これらの変形、用途又は適応的変化は本発明の一般的な原理に従い、本開示に開示されていない本技術分野における周知の知識又は慣用技術手段を含む。明細書及び実施例は単なる例示的なものとして見なされ、本発明の真の範囲及び趣旨は特許請求の範囲によって示される。
【0144】
本発明は、以上に記載され且つ図面において示された正確な構造に制限されず、その範囲から逸脱することなく、様々な補正及び変更を行うことができることを理解すべきである。本発明の範囲は、添付の特許請求の範囲のみによって制限される。