(57)【要約】【課題】電子演算装置の演算効率を向上させる。【解決手段】各ＨＰＣ２０〜２３は、演算処理部ＨＡ０〜ＨＡ３を備え、各演算処理部ＨＡ０〜ＨＡ３は、演算処理を並列実行し、各ＬＰＣ３０〜３３は、管理処理部ＬＢ０〜ＬＢ３を備え、各管理処理部ＬＢ０〜ＬＢ３は、各演算処理部ＨＡ０〜ＨＡ３がアクセラレータ６に特定処理を実行させるときに、アクセラレータ６による特定処理の実行を管理し、アクセラレータ６に特定処理を実行させるための一連の指令をＤＭＡコントローラ５およびアクセラレータ６に行う。【選択図】図１
2020181233.tif 000002
【特許請求の範囲】
【請求項１】
第１処理を実行する第１計算資源と、
第２処理を実行する第２計算資源と、
前記第１計算資源からの前記第２計算資源の呼び出しに基づいて、前記第２計算資源による前記第２処理の実行を管理する第３計算資源とを備える電子演算装置。
【請求項２】
前記第１計算資源は第１ＣＰＵ、
前記第２計算資源は第２ＣＰＵまたは専用ハードウェア、
前記第３計算資源は第３ＣＰＵである請求項１に記載の電子演算装置。
【請求項３】
前記第１ＣＰＵ、前記第２ＣＰＵおよび前記第３ＣＰＵはそれぞれ、複数のコアを備える請求項２に記載の電子演算装置。
【請求項４】
前記第１処理は汎用処理、前記第２処理は特定処理である請求項１に記載の電子演算装置。
【請求項５】
前記第１計算資源は、前記第１処理を実行した後、前記第２計算資源に前記第２処理を実行させる請求項１に記載の電子演算装置。
【請求項６】
前記第１計算資源は、前記第１処理を実行した後、前記第２計算資源に前記第２処理を実行させ、前記第２計算資源による前記第２処理の実行結果に基づいて第３処理を実行する請求項１に記載の電子演算装置。
【請求項７】
前記第１計算資源は、前記第２計算資源にて実行される前記第２処理を呼び出す第１ＣＰＵコアを備え、
前記第３計算資源は、前記第１ＣＰＵコアから前記第２計算資源へのデータ転送を管理する処理、前記第２計算資源から前記第１ＣＰＵコアへのデータ転送を管理する処理、前記第２計算資源へ処理開始の通知を送信する処理および前記第２計算資源からの処理完了通知を受信する処理の少なくとも１つ以上の処理を実行する第２ＣＰＵコアを備える請求項１に記載の電子演算装置。
【請求項８】
前記第１計算資源は、前記第２計算資源にて実行される前記第２処理を呼び出す第１ＣＰＵコアを備え、
前記第３計算資源は、前記第１ＣＰＵコアから前記第２計算資源へのデータ転送を管理する処理、前記第２計算資源から前記第１ＣＰＵコアへのデータ転送を管理する処理、前記第２計算資源へ処理開始の通知を送信する処理および前記第２計算資源の処理完了を定期的に監視する処理の少なくとも１つ以上の処理を実行する第２ＣＰＵコアを備える請求項１に記載の電子演算装置。
【請求項９】
前記第１計算資源と前記第２計算資源との間のデータ転送に際してＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を用いる請求項１に記載の電子演算装置。
【請求項１０】
前記第２計算資源による前記第２処理の実行を管理するコアをＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から設定可能である請求項３に記載の電子演算装置。
【請求項１１】
前記ＯＳは、前記第２計算資源と前記第１計算資源とのデータ転送開始時および前記第２計算資源の処理開始時に完了通知を受けるコアを設定する請求項１０に記載の電子演算装置。
【請求項１２】
前記第２計算資源はアクセラレータである請求項１に記載の電子演算装置。
【請求項１３】
前記第３計算資源が持つＣＰＵコアは、前記第１計算資源が持つＣＰＵコアよりも処理性能が低い請求項１に記載の電子演算装置。
【請求項１４】
前記第３計算資源は複数のＣＰＵコアを備え、
前記第２計算資源による前記第２処理の実行を管理するＣＰＵコアの指定が、プラグマを用いてソースコードに記載されている請求項１に記載の電子演算装置。
【請求項１５】
前記第３計算資源は複数のＣＰＵコアを備え、
前記第２計算資源による前記第２処理の実行を管理するＣＰＵコアの指定が、前記第２計算資源を呼び出すための関数引数に記載されている請求項１に記載の電子演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ、以下、ＥＣＵと言う）などに適用可能な電子演算装置に関する。
【背景技術】
【０００２】
近年、産業用電子制御装置を支えるシステムの開発において、制御性能の向上、厳格化する規制への対応および装置の自律化に伴う制御演算処理の増大というアプリケーションの高負荷化が進んでいる。このような高負荷化に対応して、ＥＣＵにおいてもメニーコア化およびアクセラレータの利用などの高性能化を実現するために、マルチコアもしくはメニーコアを有するプロセッサ、メモリなどの周辺資源およびアクセラレータ等を混載したＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）が登場し、電子演算装置の複雑化が進んでいる。
【０００３】
一方、組込み分野においては、前段のコントローラにおける制御演算結果を後段のコントローラもしくはアクチュエータに規定のタイミングで伝達する必要から、強いリアルタイム制約が存在する。このため、アプリケーションの高負荷化に伴う制御装置の複雑化と、リアルタイム制約の遵守とを両立させた電子演算装置の利用方式が求められる。
【０００４】
特許文献1では、特に、リアルタイム性に着目した高応答化の観点から、マルチコアプロセッサに対してコア負荷率を意図的に調整し、高応答性を実現する方式が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１７１１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示された方式では、リアルタイム性を強く意識する一方で、組込み分野におけるアプリケーションの高負荷化の背景と、適用先に応じた競合軸として消費電力、コストおよび発熱量などの要件が、必ずしも十全に考慮されていない。
【０００７】
自律システムを例にすると、特に、周辺環境の認識から自身の動作計画までを行うアプリケーションの負荷増が激しいが、これらアプリケーションは、周期的なセンシングに基づく周期的な処理となる。このような周期的な処理に対し、周辺環境に危害を加えかねない状況における緊急停止などの状況発生に対し、即応性が求められる処理は、イベント駆動型の処理と言える。どちらの処理も、一定のリアルタイム性が求められるが、前者は負荷増の観点からスループットにも重きが置かれる。
【０００８】
本発明は、上記事情に鑑みなされたものであり、その目的は、演算効率を向上させることが可能な電子演算装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、第１の観点に係る電子演算装置は、第１処理を実行する第１計算資源と、第２処理を実行する第２計算資源と、前記第１計算資源からの前記第２計算資源の呼び出しに基づいて、前記第２計算資源による前記第２処理の実行を管理する第３計算資源とを備える。
【発明の効果】
【００１０】
本発明によれば、電子演算装置の演算効率を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１実施形態に係る電子演算装置が適用されるＳｏＣの構成を示すブロック図である。
【図２】図２は、図１のＳｏＣで実行される周期的な処理の流れを示すブロック図である。
【図３】図３は、アクセラレータ管理処理を示すフローチャートである。
【図４】図４は、アクセラレータを利用するコアへの割り込みを伴う処理の流れを示すシーケンス図である。
【図５】図５は、アクセラレータを利用するコアへの割り込みを伴わない処理の流れを示すシーケンス図である。
【図６】図６は、第２実施形態に係る電子演算装置が適用されるＳｏＣの構成を示すブロック図である。
【図７】図７は、図６のＤＭＡコントローラ、ＣＰＵクラスタおよびアクセラレータの処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【００１２】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
図１は、第１実施形態に係る電子演算装置が適用されるＳｏＣの構成を示すブロック図である。
図１において、ＳｏＣ１は、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｒｅ）クラスタ２、ＬＰＣ（Ｌｏｗ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｒｅ）クラスタ３、メモリ４、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ５およびアクセラレータ６を備える。ＨＰＣクラスタ２、ＬＰＣクラスタ３、メモリ４、ＤＭＡコントローラ５およびアクセラレータ６は、内部バス７を介して相互に接続されている。ここで、ＨＰＣクラスタ２は、第１処理を実行する第１計算資源、アクセラレータ６は、第２処理を実行する第２計算資源、ＬＰＣクラスタ３は、第２計算資源による第２処理の実行を管理する第３計算資源として用いることができる。
【００１４】
ＨＰＣクラスタ２は、相対的に処理性能が高いＣＰＵコア（以下、ＨＰＣと言う）の集合である。ＬＰＣクラスタ３は、相対的に処理性能が低いＣＰＵコア（以下、ＬＰＣと言う）の集合である。このとき、ＳｏＣ１は、処理性能が異なる複数のＣＰＵコア（アプリケーションコア）を有するテロジニアスな構成となる。
【００１５】
このＳｏＣ１上において、周期的に動作するアプリケーションと、イベントを契機として動作するアプリケーションの２種類のアプリケーションが動作する。このとき、相対的に負荷の重い周期処理をＨＰＣを中心に割り当て、負荷の比較的低いイベント駆動処理をＬＰＣを中心に割当てることができる。
【００１６】
ＨＰＣクラスタ２は、ＨＰＣ２０〜２３を備える。各ＨＰＣ２０〜２３は、プログラムで記述される汎用処理を実行することができる。各ＨＰＣ２０〜２３は、演算処理部ＨＡ０〜ＨＡ３を備える。
【００１７】
各演算処理部ＨＡ０〜ＨＡ３は、演算処理を実行する。このとき、各演算処理部ＨＡ０〜ＨＡ３は、演算処理を並列実行することができる。また、各演算処理部ＨＡ０〜ＨＡ３は、アクセラレータ６を呼び出し、アクセラレータ６に特定処理を実行させることができる。各演算処理部ＨＡ０〜ＨＡ３がアクセラレータ６に特定処理を実行させることにより、各ＨＰＣ２０〜２３の演算負荷を軽減することができる。各演算処理部ＨＡ０〜ＨＡ３による演算処理と、アクセラレータ６による特定処理は、並列実行することができる。
【００１８】
ＬＰＣクラスタ３は、ＬＰＣ３０〜３３を備える。各ＬＰＣ３０〜３３は、管理処理部ＬＢ０〜ＬＢ３を備える。
【００１９】
各管理処理部ＬＢ０〜ＬＢ３は、各演算処理部ＨＡ０〜ＨＡ３がアクセラレータ６に特定処理を実行させるときに、アクセラレータ６による特定処理の実行を管理する。このとき、管理処理部ＬＢ０〜ＬＢ３は、アクセラレータ６に特定処理を実行させるための一連の指令をＤＭＡコントローラ５およびアクセラレータ６に行うことができる。
【００２０】
メモリ４は、例えば、ＳＲＡＭまたはＤＲＡＭなどの半導体メモリから構成することができる。メモリ４には、各ＨＰＣ２０〜２３、各ＬＰＣ３０〜３３およびアクセラレータ６が実行中のプログラムを格納したり、各ＨＰＣ２０〜２３、各ＬＰＣ３０〜３３およびアクセラレータ６がプログラムを実行するためのワークエリアを設けたりすることができる。
【００２１】
ＤＭＡコントローラ５は、各ＨＰＣ２０〜２３とアクセラレータ６との間のデータ転送に際してＤＭＡ転送を制御する。このとき、ＤＭＡコントローラ５は、割り込みコントローラとして動作することができる。
【００２２】
アクセラレータ６は、特定処理を実行する。この特定処理は、ＨＰＣ２０〜２３で実行される処理よりも負荷の重い処理とすることができる。この特定処理は、例えば、ディープラーニング、行列演算または画像処理などである。アクセラレータ６は、複数のコアを備えるＣＰＵであってもよいし、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）またはＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの専用ハードウェアであってもよい。アクセラレータ６として複数のコアを備えるＣＰＵを用いた場合、プログラムに基づいて特定処理を実行させることができる。
【００２３】
図２は、図１のＳｏＣで実行される周期的な処理の流れを示すブロック図である。
図２において、図１のＨＰＣクラスタ２は、前処理Ｐ１を実行した後、ＨＰＣ並列演算処理Ｐ２を実行する。ＨＰＣクラスタ２は、ＨＰＣ並列演算処理Ｐ２において、アクセラレータ処理Ｐ３を呼び出し、アクセラレータ処理Ｐ３後に後処理Ｐ４を実行する。
【００２４】
ＨＰＣ並列演算処理Ｐ２では、図１の各ＨＰＣ２０〜２３は、ＨＰＣ並列演算処理Ｅ０〜Ｅ３を実行し、各ＨＰＣ並列演算処理Ｅ０〜Ｅ３からアクセラレータ演算処理Ａ０〜Ａ３を個別に呼び出す。なお、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）処理は、ＬＰＣクラスタ３上にて行われているものとする。
【００２５】
ＨＰＣクラスタ２内の各ＨＰＣ２０〜２３と、アクセラレータ６を非同期に動作させて処理を行う場合、アクセラレータ６を動作させる際には、以下の一連の手順が必要となる。この一連の手順を、アクセラレータ管理処理と呼ぶ。アクセラレータ管理処理は、各ＬＰＣ３０〜３３の管理処理部ＬＢ０〜ＬＢ３のいずれか１つが実行することができる。アクセラレータ管理処理を実行する管理処理部ＬＢ０〜ＬＢ３は、ＯＳが指定することができる。ＯＳは、各ＬＰＣ３０〜３３が実行中の処理の負荷に基づいて、アクセラレータ管理処理を実行する管理処理部ＬＢ０〜ＬＢ３を選択することできる。
【００２６】
図３は、アクセラレータ管理処理を示すフローチャートである。
図３において、図１のアクセラレータ６を利用する各コアは、ＤＭＡコントローラ５に対し、アクセラレータ６へのデータ転送を指示する（Ｓ１）。
【００２７】
次に、ＤＭＡコントローラ５は、Ｓ１で指示されたデータ転送が完了すると、各コアに対し、データ転送完了割込みを実行する（Ｓ２）。
【００２８】
次に、データ転送完了割込みが実行された各コアは、アクセラレータ６に対し、処理の開始を指示する（Ｓ３）。
【００２９】
次に、アクセラレータ６は、処理の開始を指示した各コアに対し、処理完了割込みを実行する（Ｓ４）。
【００３０】
次に、処理完了割込みが実行された各コアは、ＤＭＡコントローラ５に対し、アクセラレータ６からのデータ転送を指示する（Ｓ５）。
【００３１】
次に、ＤＭＡコントローラ５は、データ転送を指示した各コアに対し、データ転送完了割込みを実行する（Ｓ６）。
【００３２】
図４は、アクセラレータを利用するコアへの割り込みを伴う処理の流れを示すシーケンス図である。なお、図４では、図１のＨＰＣクラスタ２内の１つのＨＰＣ２０に着目し、アクセラレータ６を利用するＨＰＣ２０がアクセラレータ管理処理を行う例を示した。
【００３３】
図４において、図１のＨＰＣ２０は、ＨＰＣ並列演算処理Ｅ０が完了すると、ＤＭＡコントローラ５に対し、アクセラレータ６へのデータ転送を指示する（Ｓ１Ａ）。
【００３４】
ＤＭＡコントローラ５は、アクセラレータ６へのデータ転送がＨＰＣ２０から指示されると、アクセラレータ６に対するデータ転送を実行する（Ｋ１）。アクセラレータ６へのデータ転送中は、ＨＰＣクラスタ２は、別のアプリケーションなどの他処理Ｋ２を実行することができる。
【００３５】
次に、ＤＭＡコントローラ５は、ＨＰＣ２０から指示されたデータ転送が完了すると、ＨＰＣ２０に対し、データ転送完了割込みを実行する（Ｓ２Ａ）。このとき、ＨＰＣ２０は、他処理Ｋ２を中断し、アクセラレータ処理開始指示を行う処理Ｋ１１を実行した上で、アクセラレータ処理開始指示を実行する（Ｓ３Ａ）。
【００３６】
次に、アクセラレータ６は、ＨＰＣ２０から指示されたアクセラレータ処理Ｐ３を実行した後、ＨＰＣ２０に対し、アクセラレータ処理完了割込みを実行する（Ｓ４Ａ）。ＨＰＣ２０から指示された処理をアクセラレータ６が実行中は、ＨＰＣクラスタ２は、別のアプリケーションなどの他処理Ｋ３を実行することができる。
【００３７】
ＨＰＣ２０は、アクセラレータ処理完了割込みが実行されると、他処理Ｋ３を中断し、ＤＭＡコントローラ５に対し、アクセラレータ６からのデータ転送の指示を行う処理Ｋ１２を実行した上で、アクセラレータ６からのデータ転送の指示を実行する（Ｓ５Ａ）。
【００３８】
ＤＭＡコントローラ５は、アクセラレータ６からのデータ転送がＨＰＣ２０から指示されると、アクセラレータ６からのデータ転送を実行する（Ｋ５）。アクセラレータ６からのデータ転送中は、ＨＰＣクラスタ２は、別のアプリケーションなどの他処理Ｋ６を実行することができる。
【００３９】
次に、ＤＭＡコントローラ５は、アクセラレータ６からのデータ転送が完了すると、ＨＰＣ２０に対し、データ転送完了割込みを実行する（Ｓ６Ａ）。ＨＰＣ２０は、データ転送完了割込みが実行されると、他処理Ｋ６を中断する。
【００４０】
以上から、ＨＰＣ２０とアクセラレータ６が非同期的に動作することにより、ＤＭＡコントローラ５またはアクセラレータ６の動作中にＨＰＣ２０は別のアプリケーションを実行することが可能となる。このとき、ＨＰＣ２０には、後処理Ｐ４の完了までに３度の割込み処理が入り、割込みの度に割込みハンドラが動作し、コンテキストスイッチにより処理が中断する。処理の中断による影響としては、コンテキストスイッチのオーバヘッドのみならず、他処理Ｋ２、Ｋ３の中断後に別の処理Ｋ１１、Ｋ１２が実行されることによる他処理Ｋ２、Ｋ３でのキャッシュヒット率が低下し、それにより実効性能が低下する。
【００４１】
図５は、アクセラレータを利用するコアへの割り込みを伴わない処理の流れを示すシーケンス図である。なお、図５では、図１のＨＰＣクラスタ２内の４つのＨＰＣ２０〜２３がアクセラレータ６を利用する並列処理を実行し、ＬＰＣクラスタ３内のいずれかのＬＰＣ３０〜３３がアクセラレータ管理処理を行う例を示した。
【００４２】
また、図５では、図４の他処理Ｋ２、Ｋ３、Ｋ６は記載していないが、各ＨＰＣ２０〜２３は、ＨＰＣ並列演算処理Ｅ０〜Ｅ３の実行後は、後処理Ｐ４の実行時を除く全ての時間で他処理Ｋ２、Ｋ３、Ｋ６が実行可能となる。
【００４３】
図５において、図３に示したアクセラレータ管理処理のうちＳ２からＳ６までに対応する処理が、アクセラレータ６を利用するＨＰＣ２０〜２３から分離され、ＬＰＣクラスタ３内のいずれかのＬＰＣ３０〜３３に割り当てられる。以下の説明では、アクセラレータ管理処理がＬＰＣクラスタ３内のＬＰＣ３０に割り当てられている場合を例にとる。
【００４４】
すなわち、各ＨＰＣ２０〜２３は、ＨＰＣ並列演算処理Ｅ０〜Ｅ３が完了すると、ＤＭＡコントローラ５に対し、アクセラレータ６へのデータ転送を指示する（Ｓ１Ｂ）。
【００４５】
ＤＭＡコントローラ５は、アクセラレータ６へのデータ転送が各ＨＰＣ２０〜２３から指示されると、アクセラレータ６に対するデータ転送を実行する（Ｋ１）。アクセラレータ６へのデータ転送中は、各ＨＰＣ２０〜２３は、別のアプリケーションなどの他処理を並列実行することができる。
【００４６】
次に、ＤＭＡコントローラ５は、各ＨＰＣ２０〜２３から指示されたデータ転送が完了すると、ＬＰＣクラスタ３内のＬＰＣ３０に対し、データ転送完了割込みを実行する（Ｓ２Ｂ）。
【００４７】
次に、ＬＰＣクラスタ３内のＬＰＣ３０は、データ転送完了割込みが実行されると、アクセラレータ６に対し、アクセラレータ処理Ｐ３の開始指示を実行する（Ｓ３Ｂ）。このとき、各ＨＰＣ２０〜２３は、別のアプリケーションなどの他処理を中断することなく継続して実行することができる。
【００４８】
次に、アクセラレータ６は、ＬＰＣクラスタ３内のＬＰＣ３０から指示されたアクセラレータ処理Ｐ３を実行した後、そのＬＰＣ３０に対し、アクセラレータ処理完了割込みを実行する（Ｓ４Ｂ）。このアクセラレータ処理Ｐ３では、各ＨＰＣ２０〜２３から呼び出されたアクセラレータ演算処理Ａ０〜Ａ３が並列実行される。ＬＰＣ３０から指示された処理をアクセラレータ６が実行中は、各ＨＰＣ２０〜２３は、別のアプリケーションなどの他処理を並列実行することができる。
【００４９】
ＬＰＣクラスタ３内のＬＰＣ３０は、アクセラレータ処理完了割込みが実行されると、ＤＭＡコントローラ５に対し、アクセラレータ６からのデータ転送の指示を実行する（Ｓ５Ｂ）。このとき、各ＨＰＣ２０〜２３は、別のアプリケーションなどの他処理を中断することなく継続して実行することができる。
【００５０】
ＤＭＡコントローラ５は、アクセラレータ６からのデータ転送がＬＰＣ３０から指示されると、アクセラレータ６からのデータ転送を実行する（Ｋ５）。アクセラレータ６からのデータ転送中は、各ＨＰＣ２０〜２３は、別のアプリケーションなどの他処理を並列実行することができる。
【００５１】
次に、ＤＭＡコントローラ５は、アクセラレータ６からのデータ転送が完了すると、ＬＰＣクラスタ３内のＬＰＣ３０に対し、データ転送完了割込みを実行する（Ｓ６Ｂ）。このとき、各ＨＰＣ２０〜２３は、別のアプリケーションなどの他処理を中断することなく継続して実行することができる。
【００５２】
これにより、各ＨＰＣ２０〜２３は、Ｓ２Ｂ、Ｓ４Ｂ、Ｓ６Ｂにて発生する割込み処理により他処理を中断することなく継続して実行することができる。このため、キャッシュヒット率が一定量維持され、コンテキストスイッチも発生しないことから、アクセラレータ６の利用による実行性能の低下を抑制することができる。
【００５３】
また、ＬＰＣクラスタ３内の各ＬＰＣ３０〜３３コアには、負荷の比較的低いイベント駆動処理を中心に割り当てられることから、ＬＰＣクラスタ３への割込み処理の増大による実行性能の低下は、ＨＰＣクラスタのそれに比べて十分に低く、ＳｏＣ１全体での処理性能を相対的に向上させることができる。
【００５４】
なお、図５では、ＤＭＡコントローラ５からのデータ転送完了割込み（Ｓ６Ｂ）をＬＰＣクラスタ内のいずれかのＬＰＣ３０〜３３にて処理し、アクセラレータ処理Ｐ３の完了を確認の上でＯＳイベントを経てＨＰＣクラスタ２内のいずれかのＨＰＣ２０〜２３に後処理Ｐ４の開始を通知する例を想定しているが、必ずしも本実施形態で説明した手順をとる必要はない。
【００５５】
また、本実施形態では、ＣＰＵコアとアクセラレータを非同期に実行させる例を示したが、別実施形態として、ＣＰＵコアとアクセラレータを同期させて処理を行う方法をとることも可能である。ＣＰＵコアとアクセラレータを同期的に実行させる場合、各ＣＰＵコアがアクセラレータに対して定期的にアクセスし、終了状況を確認するポーリングを行う例が想定される。別実施形態では、このようなケースにおいても、ＬＰＣクラスタ３内のいずれかのＬＰＣ３０〜３３にアクセラレータ６へのポーリングを代替させることができ、高性能な処理に適したＨＰＣクラスタ２において他処理を実行可能とすることで、ＳｏＣ１全体での処理性能の向上を図ることができる。
【００５６】
ＳｏＣ１を利用するユーザは、以上の手順を実現するためのプログラムを記述する必要がある可能性がある。すなわち、一連の指令を含むアクセラレータ管理処理にあたり、アクセラレータ管理処理を行うコアを明示的に示す必要がある場合、例えば、以下のようなプラグマ記述を用い、ユーザアプリケーションのソースコードに記述することが可能である。
＃ｐｒａｇｍａ  ＡｃｃＭａｎａｇｅｍｅｎｔ  ＬＰＣ＃１
【００５７】
上記のプラグマ記述は、例えば、アクセラレータ管理処理を行うコアを指定するためのプラグマ（ＡｃｃＭａｎａｇｅｍｅｎｔ）を用い、その後にコアを指定する。この例では、ＨＰＣクラスタ２内のコアではなく、ＬＰＣクラスタ３内の１番目のコア（ＬＰＣ＃１）を用いることを示す。
【００５８】
この他、プラグマ記述方式には様々な形態があり、例えば、ＬＰＣクラスタ３内のいずれのコアを用いてもよい場合、ＨＰＣクラスタ２およびＬＰＣクラスタ３内の任意のコアを利用できる場合、アクセラレータを呼び出す処理を行うコア自身が管理する場合など、様々な利用方式が想定される。
【００５９】
本例では、それぞれの利用方式に応じて以下のような記述が可能である。
＃ｐｒａｇｍａ  ＡｃｃＭａｎａｇｅｍｅｎｔ  ＬＰＣ＃ａｎｙ
＃ｐｒａｇｍａ  ＡｃｃＭａｎａｇｅｍｅｎｔ  ａｎｙ
＃ｐｒａｇｍａ  ＡｃｃＭａｎａｇｅｍｅｎｔ  ｓｅｌｆ
【００６０】
なお、本実施形態では、上記のプラグマ方式を例とするが、例えば、アクセラレータ呼出し関数の引数に上記のコア指定を含む例などであってもよく、アクセラレータ管理処理を行うコアを明示的に示す方式については、上記のプラグマ方式に限らない。
【００６１】
また、上記した実施形態において、２種類のＣＰＵコア構成およびプログラミングモデルとしてのプラグマ記述方式を例示しているが、本発明はこれに限定されるものではない。
【００６２】
図６は、第２実施形態に係る電子演算装置が適用されるＳｏＣの構成を示すブロック図である。
図６において、ＳｏＣ１１は、ＣＰＵクラスタ８、メモリ４、ＤＭＡコントローラ５およびアクセラレータ６を備える。ＣＰＵクラスタ８、メモリ４、ＤＭＡコントローラ５およびアクセラレータ６は、内部バス７を介して相互に接続されている。このＳｏＣ１１上において、周期的に動作するアプリケーションと、イベントを契機として動作するアプリケーションの２種類のアプリケーションが動作する。
【００６３】
ＣＰＣクラスタ８は、ＣＰＵコアの集合である。このとき、ＳｏＣ１１は、処理性能に差がない複数のＣＰＵコア（アプリケーションコア）を有するホモジニアスな構成となる。ここで、ＣＰＣクラスタ８の一部のＣＰＵコアは第１処理を実行する第１計算資源、アクセラレータ６は第２処理を実行する第２計算資源、ＣＰＣクラスタ８の他のＣＰＵコアは第２計算資源による第２処理の実行を管理する第３計算資源として用いることができる。
【００６４】
ＣＰＣクラスタ８は、ＣＰＵコア８０〜８３を備える。ＣＰＵコア８０〜８３は、プログラムで記述される汎用処理を実行することができる。各ＣＰＵコア８０〜８３は、演算処理部ＣＡ０〜ＣＡ３および管理処理部ＣＢ０〜ＣＢ３を備える。
【００６５】
各演算処理部ＣＡ０〜ＣＡ３は、演算処理を実行する。このとき、各演算処理部ＣＡ０〜ＣＡ３は、演算処理を並列実行することができる。また、各演算処理部ＣＡ０〜ＣＡ３は、アクセラレータ６を呼び出し、アクセラレータ６に特定処理を実行させることができる。各演算処理部ＣＡ０〜ＣＡ３による演算処理と、アクセラレータ６による特定処理は、並列実行することができる。
【００６６】
各管理処理部ＣＢ０〜ＣＢ３は、各演算処理部ＣＡ０〜ＣＡ３がアクセラレータ６に特定処理を実行させるときに、アクセラレータ６による特定処理の実行を管理する。このとき、管理処理部ＣＢ０〜ＣＢ３は、アクセラレータ６に特定処理を実行させるための一連の指令をＤＭＡコントローラ５およびアクセラレータ６に行うことができる。
【００６７】
ＣＰＣクラスタ８は、図２の処理と同様に、前処理を実行した後、ＣＰＵ並列演算処理を実行する。ＣＰＣクラスタ８は、ＣＰＵ並列演算処理において、アクセラレータ処理を呼び出し、アクセラレータ処理後に後処理を実行する。
【００６８】
各ＣＰＵコア８０〜８３は、ＣＰＵ並列演算処理を実行し、各ＣＰＵ並列演算処理からアクセラレータ演算処理を個別に呼び出す。なお、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）処理は、ＣＰＣクラスタ８内のいずれかのＣＰＵコア８０〜８３にて行われているものとする。
【００６９】
ＣＰＣクラスタ８内の各ＣＰＵコア８０〜８３とアクセラレータ６を非同期に動作させて処理を行う場合、アクセラレータ６を動作させる際には、図３と同様の一連の手順が必要となる。
【００７０】
図７は、図６のＤＭＡコントローラ、ＣＰＵクラスタおよびアクセラレータの処理の流れを示すシーケンス図である。なお、図７では、図６のＣＰＵクラスタ８内の４つのＣＰＵコア８０〜８３がアクセラレータ６を利用する並列処理を実行し、ＣＰＵクラスタ８内の１つのＣＰＵコア８０がアクセラレータ管理処理を行う例を示した。
【００７１】
また、図７では、図４の他処理Ｋ２、Ｋ３、Ｋ６は記載していないが、各ＣＰＵコア８１〜８３は、ＣＰＵ並列演算処理Ｃ１〜Ｃ３の後は、後処理Ｐ４の実行時を除く全ての時間で他処理Ｋ２、Ｋ３、Ｋ６が実行可能となる。
【００７２】
図７において、図３に示したアクセラレータ管理処理のうちＳ２からＳ６までに対応する処理が、アクセラレータ６を利用するＣＰＵコア８１〜８３から分離され、ＣＰＵクラスタ８内のＣＰＵコア８０に割り当てられる。
【００７３】
すなわち、各ＣＰＵコア８０〜８３は、ＣＰＵ並列演算処理Ｃ０〜Ｃ３が完了すると、ＤＭＡコントローラ５に対し、アクセラレータ６へのデータ転送を指示する（Ｓ１Ｃ）。
【００７４】
ＤＭＡコントローラ５は、アクセラレータ６へのデータ転送が各ＣＰＵコア８０〜８３から指示されると、アクセラレータ６に対するデータ転送を実行する（Ｋ１）。アクセラレータ６へのデータ転送中は、各ＣＰＵコア８１〜８３は、別のアプリケーションなどの他処理を並列実行することができる。
【００７５】
次に、ＤＭＡコントローラ５は、各ＣＰＵコア８０〜８３から指示されたデータ転送が完了すると、ＣＰＵクラスタ８内のＣＰＵコア８０に対し、データ転送完了割込みを実行する（Ｓ２Ｃ）。
【００７６】
次に、ＣＰＵクラスタ８内のＣＰＵコア８０は、データ転送完了割込みが実行されると、アクセラレータ６に対し、アクセラレータ処理Ｐ３の開始指示を実行する（Ｓ３Ｃ）。このとき、各ＣＰＵコア８１〜８３は、別のアプリケーションなどの他処理を中断することなく継続して実行することができる。
【００７７】
次に、アクセラレータ６は、ＣＰＵクラスタ８内のＣＰＵコア８０から指示されたアクセラレータ処理Ｐ３を実行した後、そのＣＰＵコア８０に対し、アクセラレータ処理完了割込みを実行する（Ｓ４Ｃ）。このアクセラレータ処理Ｐ３では、各ＣＰＵコア８０〜８３から呼び出されたアクセラレータ演算処理Ａ０〜Ａ３が並列実行される。ＣＰＵコア８０から指示された処理をアクセラレータ６が実行中は、各ＣＰＵコア８１〜８３は、別のアプリケーションなどの他処理を並列実行することができる。
【００７８】
ＣＰＵクラスタ８内のＣＰＵコア８０は、アクセラレータ処理完了割込みが実行されると、ＤＭＡコントローラ５に対し、アクセラレータ６からのデータ転送の指示を実行する（Ｓ５Ｃ）。このとき、各ＣＰＵコア８１〜８３は、別のアプリケーションなどの他処理を中断することなく継続して実行することができる。
【００７９】
ＤＭＡコントローラ５は、アクセラレータ６からのデータ転送がＣＰＵコア８０から指示されると、アクセラレータ６からのデータ転送を実行する（Ｋ５）。アクセラレータ６からのデータ転送中は、各ＣＰＵコア８１〜８３は、別のアプリケーションなどの他処理を並列実行することができる。
【００８０】
次に、ＤＭＡコントローラ５は、アクセラレータ６からのデータ転送が完了すると、ＣＰＵクラスタ８内のＣＰＵコア８０に対し、データ転送完了割込みを実行する（Ｓ６Ｃ）。このとき、各ＣＰＵコア８１〜８３は、別のアプリケーションなどの他処理を中断することなく継続して実行することができる。
【００８１】
これにより、各ＣＰＵコア８１〜８３は、Ｓ２Ｃ、Ｓ４Ｃ、Ｓ６Ｃにて発生する割込み処理により他処理を中断することなく継続して実行することができる。このため、キャッシュヒット率は一定程度維持され、コンテキストスイッチも発生しないことから、アクセラレータ６の利用による実行性能の低下を抑制することができる。
【００８２】
なお、本例においては、各種イベント駆動処理（ＯＳ処理および他割り込み処理）を明記していないが、アクセラレータ管理処理を実行するコアを、各種イベント駆動処理を行うコアと同一のコアとすることにより、他コアの利用効率を高めることが可能となる。
【００８３】
なお、本ケースについても、ＣＰＵコアとアクセラレータを同期的に実行させる場合、第１実施形態と同様に処理を継続できるコア数を増やすことができるため、処理性能を向上させることができる。
【００８４】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。
【符号の説明】
【００８５】
１  ＳｏＣ、２  ＨＰＣクラスタ、３  ＬＰＣクラスタ、４  メモリ、５  ＤＭＡコントローラ、６  アクセラレータ
【図１】
2020181233.tif 000003
【図２】
2020181233.tif 000004
【図３】
2020181233.tif 000005
【図４】
2020181233.tif 000006
【図５】
2020181233.tif 000007
【図６】
2020181233.tif 000008
【図７】
2020181233.tif 000009