JP7095620B2 - 演算装置 - Google Patents

演算装置 Download PDF

Info

Publication number
JP7095620B2
JP7095620B2 JP2019029351A JP2019029351A JP7095620B2 JP 7095620 B2 JP7095620 B2 JP 7095620B2 JP 2019029351 A JP2019029351 A JP 2019029351A JP 2019029351 A JP2019029351 A JP 2019029351A JP 7095620 B2 JP7095620 B2 JP 7095620B2
Authority
JP
Japan
Prior art keywords
synchronization
core
processing
cpu
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019029351A
Other languages
English (en)
Other versions
JP2020135524A (ja
Inventor
振明 袁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2019029351A priority Critical patent/JP7095620B2/ja
Publication of JP2020135524A publication Critical patent/JP2020135524A/ja
Application granted granted Critical
Publication of JP7095620B2 publication Critical patent/JP7095620B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Description

本開示は、複数の演算部が同期を伴う並列処理を行うように構成された演算装置に関する。
上記の演算装置においては、複数の演算部が互いに他の演算部による処理の終了を待機することで処理が進まなくなるデッドロックを抑制することが求められる。例えば、下記特許文献1には、複数の演算部が、同期相手の状況が更新されてから自身の状況を更新する構成であり、互いに同期相手の状況の更新を待機する場合にデッドロックする。このため、各演算部は、所定時間待機しても同期相手の状況が変化しない場合には、自身の状況を更新するように処理を変更することで、デッドロックを解消するという構成を採用している。
特開2012-244529号公報
ところで、近年では、マルチコア等の多数の演算部が同期を伴う並列処理を行う構成が提案されており、このような構成では、複数の同期ポイントが設定されることがある。同期ポイントとは、同期を伴う複数の処理結果が統合されるポイントを表す。
ここで、上記特許文献1の技術において、複数の演算部を仮に演算部A及び演算部Bとする。すると、演算部A及び演算部Bは、共通の1つの同期ポイントで同期することが前提になっているため、上記のように、演算部Bでの処理が進むように演算部Aが処理を変更すればデッドロックは解消する。
しかしながら、発明者の詳細な検討の結果、上記特許文献1の技術では、複数の同期ポイントが存在する場合にデッドロックが解消できないという課題が見出された。例えば、演算部Aが同期ポイントAで同期し、演算部Bが同期ポイントAとは異なる同期ポイントBで同期した後、同期ポイントAで同期することを想定する。この場合、演算部Aが処理を変更したとしても、同期ポイントBで同期する演算部Bの処理には影響がないため、デッドロックを解消することができない。
本開示の1つの局面は、複数の演算部が同期を伴う並列処理を行うように構成された演算装置において、複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制できる技術を提供することにある。
本開示の一態様は、複数の演算部(10)を備え、複数の演算部が同期を伴う並列処理を行うように構成された演算装置(1A~1E)である。複数の演算部のうちの1つを自コア、自コアを除く他の演算部のうちの自コアと同期ポイントで同期する処理を実施する他の演算部を他コアとする。なお、同期ポイントとは、同期を伴う複数の演算部による処理結果が統合されるポイントを表す。
演算装置は、同期判定部(S140)と、スリープ指令部(S230,S260,S470,S490)と、を備える。
同期判定部は、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、他コアが、同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを判定するように構成される。
スリープ指令部は、他コアが、他の同期ポイントでの同期待ち状態である場合に、予め同期ポイント毎に対応付けられた優先度情報に従って、自コア或いは他コアが実施する処理をスリープさせる。また、スリープ指令部は、処理をスリープさせる自コア或いは他コアに、他の処理を実施させるように構成される。
このような構成によれば、自コアによる処理が同期ポイントに到達し、同期待ち状態に遷移しようとする際に、他コアが他の同期ポイントで同期待ち状態であれば、自コア又は他コアする処理をスリープさせる。そして、スリープさせる自コア或いは他コアに他の処理を実施させることで、自コア及び他コアが同期待ち状態にならないようにする。よって、複数の演算部が同期を伴う並列処理を行うように構成された演算装置において、複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制することができる。
第1実施形態のマイコンの構成を示すブロック図である。 同期を説明するためのラダーチャートである。 デッドロックを説明するためのラダーチャートである。 デッドロックを説明するためのタイミングチャートである。 第1実施形態の同期情報テーブルを示す説明図である。 第1実施形態の同期処理のフローチャート(その1)である。 第1実施形態の同期処理のフローチャート(その2)である。 第1実施形態のマイコンの作動例を示すタイミングチャートである。 第2実施形態の同期情報テーブルを示す説明図である。 第2実施形態の同期処理のフローチャートである。 第3実施形態のマイコンの構成を示すブロック図である。 第3実施形態の同期情報テーブルを示す説明図である。 第3実施形態の同期処理のフローチャートである。 第4実施形態の同期情報テーブルを示す説明図である。 第4実施形態の同期処理のフローチャートである。 共有リソースへのアクセス調停のための構成を示すブロック図である。 アクセス優先度が設定されたアクセステーブルを示す説明図である。 調停処理のフローチャートである。 ネスト時の退避用BUFFの利用例を示す説明図である。
以下、図面を参照しながら、本開示の実施形態を説明する。
[1.実施形態の構成と本開示の構成と関係]
実施形態でのマイコン1A~1Dは本開示での演算装置に相当し、実施形態でのCPU10は本開示での演算部に相当する。また、実施形態での同期記録領域13Aは本開示での同期判定用領域に相当し、実施形態での退避用同期情報退避用BUFF13Bは本開示での退避用領域に相当する。
また、上記実施形態において各CPU10が実行する処理のうちのS120の処理は本開示での同期格納部に相当し、実施形態でのS140の処理は本開示での同期判定部に相当する。また、実施形態でのS220の処理は本開示での移動格納部に相当し、実施形態でのS230,S260,S470,S490の処理は本開示でのスリープ指令部に相当する。
また、上記実施形態での同期情報テーブル12A~12D等に含まれる「同期ポイントナンバ」は、本開示での「同期ポイントを特定するための同期特定情報」に相当する。また、「各CPU10での処理ID」は、本開示での、「自コア及び他コアを特定するためのコア特定情報」に相当する。
[2.第1実施形態]
[2-1.構成]
本実施形態のマイコン1Aは、複数の演算部としての複数のCPU10A,10B,10X(以下、CPU10とも表記する。)を備え、複数のCPU10が同期を伴う並列処理を行うように構成された演算装置である。マイコン1Aは、同期を伴う並列処理が複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制することができるように工夫されている。同期ポイントとは、同期を伴う複数の処理結果が統合されるポイントを表す。その詳細について以下に説明する。
マイコン1Aは、図1に示すように、複数のCPU10と、複数のローカルRAM11A,11B,11X(以下、ローカルRAM11とも表記する。)、ROM12、共有リソース13等の半導体メモリと、を有するマイクロコンピュータを備える。また、マイコン1Aは、タイマ21と、I/O22と、A/D23とを備えてもよい。マイコン1Aの構成要素は、バス20を介して通信可能に接続される。
マイコン1Aの各機能は、複数のCPU10が非遷移的実体的記録媒体に格納されたプログラムを実施することにより実現される。この例では、半導体メモリが、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムが実施されることで、プログラムに対応する方法が実施される。なお、非遷移的実体的記録媒体とは、記録媒体のうちの電磁波を除く意味である。
マイコン1Aが実施する機能を実現する手法はソフトウェアに限るものではなく、その一部又は全部の機能は、1つ或いは複数のハードウェアを用いて実現されてもよい。例えば、上記機能がハードウェアである電子回路によって実現される場合、その電子回路は、デジタル回路、又はアナログ回路、或いはこれらの組合せによって実現されてもよい。
ここで、複数のローカルRAM11は、CPU10毎に設けられたローカルメモリである。換言すれば、複数のローカルRAM11は、1つのプロセスのみからアクセスできるように設定された仮想記憶領域である。複数のローカルRAM11は、物理的には共用される1つのメモリとして構成されてもよく、この場合、メモリの記録領域の一部を占有するように構成されてもよい。
ROM12には、複数のCPU10が実施するプログラムに加えて、同期情報テーブル12Aが格納されている。なお、同期情報テーブル12Aについては後述する。
共有リソース13は、複数のCPU10がそれぞれアクセスできるRAMとして構成される。共有リソース13には、同期記録領域13Aと、退避用BUFF13Bとを備える。同期記録領域13A及び退避用BUFF13Bは、何れもデータを記録可能に構成される。なお、同期記録領域13A及び退避用BUFF13Bに記録されるデータについては後述する。
タイマ21は、一定時間間隔で信号を発する構成であり、この信号であるクロックが各CPU10にて認識されることで各CPU10はクロックを基準に、割り込み、タイムアウト等の処理を行う。
I/O22は、データの入出力のための周知のインタフェースである。A/D23は、センサ出力等のアナログ信号をデジタル信号に変換するAD変換部である。
[2-2.同期の説明]
ここで、同期について図2を用いて説明する。図2は、CPUa10Aと、CPUb10Bとがそれぞれ並列して処理を行う例を示すラダーチャートである。図2では、CPUa10Aが実施する処理Aによる処理結果と、CPUb10Bが実施する処理Bによる処理結果とを、CPUa10Aが実施する処理Cが利用する例を示している。
処理Cは、処理A及び処理Bの処理結果を使用するため、処理A及び処理Bが終了してから実施されるべきである。そして、処理Aが処理Bよりも先に終了した場合、処理Bが終了するまで同期待ちを行う必要がある。このように同期待ちを行う必要がある時系列でのタイミングを同期ポイントとする。換言すれば、同期ポイントとは、同期を伴う各CPU10による処理結果が統合されるポイントを表す。
なお、CPUa10Aが同期待ちをすることなく処理Aに続いて処理Cを実施すると、処理Bの終了前に、処理Cが実施される可能性があり、処理Bを用いる処理Cの演算結果が正しく得られない虞がある。このため、処理Aと処理Bとは同期する必要がある。
同期を管理するためには、共有リソース13の同期記録領域13Aに記録された同期情報を利用する。同期情報には、詳細は後述するが、同期を管理するための情報が格納されており、各CPU10は、同期情報を参照して、お互いの状態を確認し、同期待ち又は処理の実施を行う。
次に、デッドロックが発生してしまう例について、図3及び図4を用いて説明する。図3に示す例では、CPUa10Aは、処理Aを実施し、その後、処理Aの演算結果と処理Bの演算結果とを利用する処理Cを実施する。また、CPUb10Bは、処理Bを実施し、その後、処理Bの実施中に割り込みにより処理Dを開始する。ただし、処理Dは処理Cと同期して終了する。
この場合、処理Aの処理が先に実施完了し、CPUa10Aは、同期待ち状態となる。CPUb10Bは、処理Dにおいて処理Cの終了を待つため、同期待ち状態となる。このように、CPUa10A及びCPUb10Bは、異なる2つの同期ポイントでそれぞれ同期待ち状態となり、複数のCPU10が互いに他のCPU10による処理の終了を待機することで処理が進まなくなるデッドロックが発生する。
[2-3.処理]
本実施形態のマイコン1Aでは、このようなデッドロックを抑制するために、図5に示す同期情報テーブル12AをROM12にて備え、各CPU10は、図6に示す同期処理を実施する。
同期情報テーブル12Aは、図5に示すように、同期ポイント毎に、同期ポイントナンバ(No.)、各CPU10での処理ID、同期ポイントの優先度が対応付けられている。なお、処理IDは、処理毎に付された固有の識別子である。また、ここでの優先度は本開示の優先度情報に相当する。
図5に示す例では、同期ポイントナンバ1について、CPUa10Aの処理IDとして処理Aを示す0x001、CPUb10Bの処理IDとして処理Bを示す0x002、同期ポイントの優先度として「H」、がそれぞれ対応付けられている。なお、優先度「H」は、優先度「L」に対して優先度が高い旨を示す。また、優先度「H」及び優先度「L」の間の優先度として優先度「M」が設定されてもよい。
また、図5に示す例では、同期ポイントナンバ2について、CPUa10Aの処理IDとして処理Cを示す0x003、CPUb10Bの処理IDとして処理Dを示す0x004、同期ポイントの優先度として「L」、がそれぞれ対応付けられている。
なお、図5の同期情報テーブル12Aでは、同期を行うCPU10が2つの場合を示しているが、同期を行うCPU10が3つ以上である場合は、それぞれのCPU10での処理IDの欄を上記テーブルに追加すれば対応することが可能である。
次に、各CPU10がそれぞれ実施する同期処理について、図6及び図7のフローチャートを用いて説明する。各CPU10は、同期を伴う処理の実施中に同期ポイントに到達すると、割り込みにより同期処理を開始するようにプログラムされる。
なお、以下の説明では、同期処理を実施しているCPU10を自CPU10、自CPU10以外のCPU10を他CPU10と表記する。また、自CPU10による実施中の処理を自処理、他CPU10による処理を他処理と表記する。
同期処理では、まずS110で、CPU10は、同期記録領域13A内の同期情報が空であるか否かを判定する。本実施形態では、同期記録領域13Aに、同期情報を1つだけ格納するように設定される。同期情報には、同期ポイントナンバと、同期ポイントナンバに対応する各CPU10での処理IDとが含まれる。例えば、全てのCPU10が同期ポイントに到達していない場合に、同期情報が空になる。換言すれば、各CPU10は、他CPU10が、自CPU10が到達した同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを、少なくとも同期記録領域13Aにおける同期情報の有無によって判定する。
CPU10は、S110で同期情報が空であると判定した場合には、S120へ移行し、同期記録領域13Aに、処理ID及び同期ポイントナンバを同期情報として記録する。この処理では、CPU10は、同期情報テーブル12Aを参照して、自処理についての処理IDが対応する同期ポイントナンバを認識する。そして、CPU10は、認識した自処理についての処理ID、他処理についての処理ID、及び同期ポイントナンバを、同期情報として記録する。S120の処理が終了すると、同期処理を終了する。この場合、S120の処理を実施したCPU10は、同期待ち状態になる。
一方、CPU10は、S110で同期情報が空でないと判定した場合には、S130へ移行し、同期記録領域13A内の同期情報において、他CPUの処理IDが空であるか否かを判定する。例えば、3つ以上CPUを同期する場合に、2番目のCPUがS110の処理が入った場合、他CPU(3番目)の処理IDが空になる。
CPU10は、S130で他のCPU10の処理IDが空であると判定した場合には、同期処理を終了する。この場合、S130の処理を実施したCPU10は、同期待ち状態になる。
一方、CPU10は、S130で他のCPUの処理IDが空でないと判定した場合には、S140へ移行し、自処理に対応する同期ポイントナンバが、同期記録領域13A内の同期情報の同期ポイントナンバと同様であるか否かを判定する。CPU10は、S140で同期ポイントナンバが異なると判定した場合には、図7に示すS210に移行する。
一方、CPU10は、S140で同期ポイントナンバが同様であると判定した場合には、S150へ移行し、同期記録領域13A内の同期情報をクリアする。続いて、S160で、CPU10は、退避用BUFF13Bにおいて同期情報が空であるか否かを判定する。なお、退避用BUFF13Bには、同期記録領域13A内の同期情報と同様の同期情報が記録可能に構成される。退避用BUFF13Bは、同期記録領域13Aに同期情報が存在する場合に同期情報が格納される。
CPU10は、S160で退避用BUFF13Bにおいて同期情報が空であると判定した場合には、S170へ移行し、自処理との同期待ち状態の他CPU10による同期待ちを終了させる。そして、CPU10は、次の処理の実施を開始し、同期処理を終了する。
一方、CPU10は、S160で退避用BUFF13Bにおいて同期情報が空でないと判定した場合には、S180へ移行し、退避用BUFF13Bの同期情報を同期記録領域13A内に格納する。つまり、退避用BUFF13Bの同期情報を同期記録領域13A内に移動させ、移動させた退避用BUFF13Bの同期情報をクリアする。この処理が終了すると、同期処理を終了する。この場合、S180の処理を実施したCPU10は、同期待ち状態になる。
次に、図7に示すS210では、CPU10は、自己のCPU10が実施する処理における同期ポイントの優先度が、同期記録領域13A内の同期情報の優先度に対して高いか否かを判定する。この処理では、CPU10は、同期情報テーブル12A及び同期記録領域13Aを参照して、相対的に優先度が高いか否かを判定する。
CPU10は、S210で自処理における同期ポイントの優先度が高いと判定した場合には、S220へ移行し、同期記録領域13A内の同期情報を退避用BUFF13Bに保存する。すなわち、各CPU10は、同期情報を同期記録領域13Aに格納する際に、既に同期記録領域13A内に他の同期情報が存在する場合に、同期情報を同期記録領域13Aに格納する前に、同期記録領域13A内の他の同期情報を退避用BUFF13Bに移動させる。
続いて、S230で、CPU10は、他処理をスリープさせる。ここでの他処理とは、自処理と同期する処理を実施すべき他CPU10が実施する処理を示す。他CPU10は、自CPU10からのスリープ指示を受けて、他CPU10が実施中の処理をスリープ、ここでは中止し、スリープさせた処理とは異なる他の処理を開始する。
続いて、S240で、CPU10は、自処理についての処理ID、自処理に対応する他処理についての処理ID、及び同期ポイントナンバを、同期情報として同期記録領域13A内に格納した後、同期処理を終了する。この場合、S240の処理を実施したCPU10は、同期待ち状態になる。
一方、CPU10は、S210で自処理における同期ポイントの優先順位が低いと判定した場合には、S250へ移行する。S250では、自処理についての処理ID、自処理に対応する他処理についての処理ID、及び同期ポイントナンバを、同期情報として退避用BUFF13Bに保存する。
続いて、S260で、CPU10は、自処理をスリープさせ、スリープさせた処理とは異なる他の処理を開始し、同期処理を終了する。
このような同期処理を各CPU10が実施すると、例えば図8に示すように、デッドロックを抑制できる。すなわち、CPUb10Bにおいて、処理Bの同期ポイントに到達する前に、処理Dの割り込みが発生した場合であって、処理Aが処理Dよりも早く同期ポイントに到達する場合、CPUa10Aが同期待ち状態になる。このとき、同期記録領域13A内の同期情報が空であるため、S120で、処理Aに関する同期情報が同期記録領域13A内に記録される。
CPUb10Bは、処理Dで処理Cの終了を待つ同期ポイントに到達するが、処理Dの優先度が低いため、S260で処理Dがスリープされる。すると、CPUb10Bは、処理Bを実施し、処理Bが処理Aとの同期ポイントに到達し、処理Aとの同期を完了する。なお、CPUb10Bは、処理Bが終了すると処理Dを再度実行するため、マイコン1Aではデッドロックを抑制できる。
なお、処理Dが処理Aよりも先に終了する場合には、S120で処理Dに関する同期情報が同期記録領域13A内に記録される。この場合、処理Aに関する同期ポイントの優先度が高いため、S220以下の処理が実施され、同様に、処理Dがスリープされる。このようにしてデッドロックが抑制される。
[2-4.効果]
以上詳述した第1実施形態によれば、以下の効果を奏する。
(2a)本開示の一態様は、複数のCPU10を備え、各CPU10が同期を伴う並列処理を行うように構成されたマイコン1Aである。複数のCPU10のうちの1つを自コア、自コアを除く他のCPUのうちの自コアと同期ポイントで同期する処理を実施する他のCPUを他コアとする。
各CPU10は、S140で、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、他コアが、この同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを判定するように構成される。なお、「他コアが、この同期ポイントとは異なる他の同期ポイントでの同期待ち状態である」とは、自コアが到達した同期ポイントと、他コアが到達した同期ポイントとで、同期ポイントナンバが異なることを示す。
各CPU10は、S230,S260で、他コアが、他の同期ポイントでの同期待ち状態である場合に、予め同期ポイント毎に対応付けられた優先度に従って、自コア或いは他コアが実施する処理をスリープさせる。また、各CPU10は、この際、処理をスリープさせる自コア或いは他コアに、他の処理を実施させるように構成される。
このような構成によれば、自コアによる処理が同期ポイントに到達し、同期待ち状態に遷移しようとする際に、他コアが他の同期ポイントで同期待ち状態であれば、自コア又は他コアする処理をスリープさせる。そして、スリープさせる自コア或いは他コアに他の処理を実施させることで、自コア及び他コアが同期待ち状態にならないようにする。よって、各CPU10が同期を伴う並列処理を行うように構成されたマイコン1Aにおいて、複数の同期ポイントを有する場合であっても、良好にデッドロックを抑制することができる。
(2b)本開示の一態様は、任意の処理によるデータを格納可能に構成された共有リソース13をさらに備える。各CPU10は、S230,S260で、自コア或いは他コアが実施する処理をスリープさせる際に、少なくとも、自コア及び他コアを特定するための処理IDと、同期ポイントを特定するための同期ポイントナンバとを含む同期情報を共有リソース13に格納するように構成される。
このような構成によれば、同期情報を共有リソース13に格納するので、同期情報を読み出せば、スリープさせた処理を後から実施することができる。
(2c)本開示の一態様は、共有リソース13において、同期記録領域13Aと、1又は複数の退避用BUFF13Bと、をさらに備える。同期記録領域13A及び退避用BUFF13Bは、何れもデータを記録可能に構成される。なお、同期記録領域13A及び退避用BUFF13Bは、共有リソース13外に配置されてもよい。
また、各CPU10は、S120で、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、少なくとも、CPU10毎の処理IDと、同期ポイントナンバと、を含む同期情報を、同期記録領域13Aに格納するように構成される。
また、各CPU10は、S220で、同期情報を同期記録領域13Aに格納する際に、既に同期記録領域13A内に他の同期情報が存在する場合に、同期情報を同期記録領域13Aに格納する前に、同期記録領域13A内の他の同期情報を退避用BUFF13Bに移動させるように構成される。
また、各CPU10は、S140で、自コアが同期を伴う処理を実施中に、同期ポイントに到達すると、他コアが、同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを、少なくとも同期記録領域13Aにおけるデータの有無によって判定するように構成される。
このような構成によれば、同期記録領域13A及び退避用BUFF13Bの2つの記録領域を使って、同期情報を管理することができる。また、他コアが、同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを容易に判定できる。
[3.第2実施形態]
[3-1.第1実施形態との相違点]
第2実施形態は、基本的な構成は第1実施形態と同様であるため、相違点について以下に説明する。なお、第1実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
前述した第1実施形態では、同期情報テーブル12Aにおいて、同期ポイント毎に、同期ポイントナンバ、各CPU10での処理ID、同期ポイントの優先度を対応付けた。これに対し、第2実施形態の同期情報テーブル12Bでは、同期情報テーブル12Aが備える内容に加えて、各CPU10での後続処理IDが追加され、各CPU10が後続処理IDを考慮して処理を行う点で、第1実施形態と相違する。
[3-2.構成]
第2実施形態のマイコン1Bでは、ROM12において、第1実施形態の同期情報テーブル12Aに換えて、図9に示すように、同期情報テーブル12Bを備える。同期情報テーブル12Bでは、各CPU10での後続処理IDが追加される。後続処理IDは、実施中の処理の後で実施されるべき処理に関する処理IDを示す。
例えば、図9に示す同期情報テーブル12Bでは、同期ポイント1にて、CPUa10Aは、処理Aの後に処理Cを実施することが設定される。なお、同期情報テーブル12Bでは、同期ポイント1にて、CPUb10Bが処理Bの後に実施する処理、同期ポイント2にて各CPU10が処理C、処理Dの後に実施する処理については設定されていない。
[3-3.処理]
次に、第2実施形態のマイコン1Bでは、第1実施形態の同期処理(図7)に代えて、図10に示す同期処理を実施する。なお、図10における同期処理では、S210の処理に続いて、S310及びS320の処理が追加される。図10における同期処理において、S310及びS320以外の処理は、第1実施形態の同期処理と同様である。また、第2実施形態では、各CPU10は、同期記録領域13A及び退避用BUFF13Bに同期情報を記録する際に、同期情報にCPUa後続処理ID、CPUb後続処理IDを含めるように構成される。
各CPU10は、S210で自処理における同期ポイントの優先度が高いと判定した場合には、S310へ移行し、S210で自処理における同期ポイントの優先順位が低いと判定した場合には、S320に移行する。
S310及びS320で、各CPU10は、同期情報テーブル12Bを参照し、自処理の後続処理IDと、同期記録領域13Aの同期情報における自CPU10に関する処理IDとが同様であるか否かを判定する。
各CPU10は、S310で処理IDが同様であれば、S250に移行し、S310で処理IDが同様でなければ、S220に移行する。また、各CPU10は、S320で処理IDが同様であれば、S220に移行し、S320で処理IDが同様でなければ、S250に移行する。
[3-4.効果]
以上詳述した第2実施形態によれば、前述した第1実施形態の効果(2a)を奏し、さらに、以下の効果を奏する。
(3a)本実施形態の構成によれば、自処理に関する処理IDと、同期記録領域13Aの同期情報における自CPU10の後続処理IDとが同様の場合、自処理をスリープさせ、他の同期ポイントによる処理を優先とする。
このような構成によれば、優先度に拘わらず、最適な処理順序を設定することができる。
(3b)なお、上記第2実施形態では、同期情報テーブル12Bにて後続処理IDを追加したが、この構成に限られない。例えば、同期情報テーブルでは、後続処理IDではなく、実施中の処理の前提となる前提同期ポイントナンバを追加し、実施中の処理が前提同期ポイントナンバにて特定される処理の後に実施されるように管理してもよい。
[4.第3実施形態]
[4-1.第1実施形態との相違点]
前述した第1実施形態では、共有リソース13にて1つの同期情報を記録可能な同期記録領域13A、及び複数の同期情報を記録可能な退避用BUFF13Bを備えた。これに対し、第3実施形態では、1つの同期情報を記録可能な同期記録領域13Aを複数備える点等で、第1実施形態と相違する。
[4-2.構成]
第3実施形態のマイコン1Cは、図11に示すように、共有リソース13に、複数の同期記録領域13Aを備え、退避用BUFF13Bを備えない。第3実施形態のマイコン1Cは、第1実施形態の同期情報テーブル12Aに換えて、図11及び図12に示す同期情報テーブル12Cを備える。
同期情報テーブル12Cでは、同期ポイントナンバと、同期情報ナンバとが対応付けられている。同期情報ナンバは、個々の同期記録領域13Aを特定するアドレスを示す番号であり、例えば、同期ポイントナンバに対応する同期記録領域13Aに対して同期情報を読み書きするために用いられる。
また、個々の同期記録領域13Aには、各CPU10の待ち状態を示すフラグが記録される。例えば、このフラグは、同期待ち状態のときに「1」にセットされ、同期完了状態であるときに「0」にセットされる。
[4-3.処理]
次に、第3実施形態のCPU10が、第1実施形態の同期処理に代えて実施する同期処理について、図13のフローチャートを用いて説明する。
第3実施形態の同期処理では、まずS410で、CPU10は、個々の同期記録領域13Aを参照し、他同期情報が同期完了状態であるか否かを判定する。他同期情報とは、自処理に関する同期情報を自同期情報として、自同期情報以外の全ての同期情報を示す。
CPU10は、S410で他同期情報が同期完了状態であると判定した場合には、S420へ移行し、自同期情報において、他CPU10が同期完了状態であるか否かを判定する。CPU10は、S420で自同期情報において、他CPU10が同期完了状態であると判定した場合には、S430へ移行し、自同期情報にて自CPU10の待ち状態を同期待ちに更新し、同期処理を終了する。
一方、CPU10は、S420で自同期情報において、他CPU10が同期完了状態でないと判定した場合には、S440へ移行し、自同期情報に両CPUの待ち状態を同期完了状態に更新する。そして、自CPU10が次の処理の実施を開始するとともに、他CPU10に同期完了を通知し、その後、同期処理を終了する。
一方、CPU10は、S410で他同期情報が同期完了状態でないと判定した場合には、S460に移行し、自処理の同期情報の優先度が高いか否かを判定する。本実施形態での同期情報の優先度は、例えば、同期情報テーブル12Cの記載順序によって、すなわち、記載された位置が上であるほど高優先度に設定される。ただし、優先度は、同期情報テーブル12Cにて別途優先度に関する欄を設けることで管理されてもよい。
CPU10は、S460で自処理の同期情報の優先度が高いと判定した場合には、S470へ移行し、他CPU10の処理をスリープさせ、同期処理を終了する。
一方、CPU10は、S460で自処理の同期情報の優先度が低いと判定した場合には、S480へ移行し、自同期情報にて自CPU10の待ち状態を同期待ち状態に更新する。
続いて、S490で、CPU10は、自処理をスリープさせ、同期処理を終了する。
[4-3.効果]
以上詳述した第3実施形態によれば、前述した第1実施形態の効果(2a)を奏し、さらに、以下の効果を奏する。
(4a)このような構成によれば、複数の同期記録領域13Aを備え、退避用BUFF13Bを備えない構成とするので、同期情報を移動させる処理を行うことなく、簡素な処理でデッドロックを抑制することができる。
[5.第4実施形態]
[5-1.第3実施形態との相違点]
前述した第3実施形態では、同期情報テーブル12Cにおいて、同期ポイント毎に、同期ポイントナンバ、同期情報ナンバを対応付けた。これに対し、第4実施形態の同期情報テーブル12Dでは、同期情報テーブル12Cが備える内容に加えて、前提同期情報ナンバが追加され、各CPU10が前提同期情報ナンバを考慮して処理を行う点で、第3実施形態と相違する。
[5-2.構成]
第4実施形態の同期情報テーブル12Dは、図14に示すように、同期ポイント毎に、前提同期情報ナンバの欄を備える。前提同期情報ナンバは、先に実行されているべき処理を同期情報ナンバで示している。例えば、図14に示す同期ポイントナンバ2には、前提同期情報ナンバ5が記載されており、この記載は、同期情報ナンバ5に関する同期ポイントナンバ1の処理を先に実施するべきことを示す。換言すれば、前提同期情報ナンバは、処理の優先度を示している。
[5-3.処理]
次に、第4実施形態のマイコン1Dでは、第3実施形態の同期処理(図13)に代えて、図15に示す同期処理を実施する。なお、図15における同期処理では、S460の処理に続いて、S510及びS520の処理が追加される。S510及びS520以外の処理は第3実施形態の同期処理と同様である。
各CPU10は、S460で自処理の同期情報の優先度が高いと判定した場合には、S510へ移行し、S460で自処理の同期情報の優先度が低いと判定した場合には、S520に移行する。
S310及びS320で、各CPU10は、同期情報テーブル12Dを参照し、自処理の同期情報ナンバと他処理の同期ポイントの前提同期情報ナンバとが同様であるか否かを判定する。
各CPU10は、S510で同期情報ナンバと前提同期情報ナンバとが同様であれば、S480に移行し、S510で同期情報ナンバと前提同期情報ナンバとが同様でなければ、S470に移行する。また、各CPU10は、S520で同期情報ナンバと前提同期情報ナンバとが同様であれば、S470に移行し、S520で同期情報ナンバと前提同期情報ナンバとが同様でなければ、S480に移行する。
[5-4.効果]
以上詳述した第4実施形態によれば、前述した第1実施形態の効果(2a)を奏し、さらに、以下の効果を奏する。
(5a)本開示の一態様では、優先度として、複数の同期ポイント毎に、当該同期ポイントの優先度、つまり記載順序による優先度と、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報としての前提同期情報ナンバと、が含まれている。各CPU10は、S230.S260,S470,S490で、当該同期ポイントに関する前提同期情報ナンバが存在する場合、当該同期ポイントの優先度に拘わらず、当該同期ポイントに関する前提同期情報ナンバに従って、自コア或いは他コアが実施する処理をスリープさせる。
このような構成によれば、優先度に加えて、前提同期情報ナンバという、2種類のパラメータに従ってスリープさせる処理を決定することができる。よって、優先度のみによってデッドロックを抑制するように優先度を設計する場合よりも、優先度の設計を容易にすることができる。
[6.他の実施形態]
以上、本開示の実施形態について説明したが、本開示は前述の実施形態に限定されることなく、種々変形して実施することができる。
(6a)上記実施形態では、共有リソース13に対して複数のCPU10から同時にアクセスがあることを考慮していないが、図16~図18に示すように、複数のCPU10から同時にアクセスがあることを考慮する構成としてもよい。図16では、複数のCPU10であるCPUa10A,CPUb10B,CPUC10Cがバス20を介して共有リソース13にアクセスできる構成を示している。
このような構成では、共有リソース13の同期情報が同時に異なる複数のCPU10によって書き換えることがある。この場合、あるCPU10が同期情報を書き換えた直後に他のCPU10から同期情報が異なる状態に書き換えられ、同期情報の不整合が生じる場合がある。また、同期情報に限らず、RAMの内容に不整合が生じる場合がある。このため、当該他の実施形態のマイコン1Eは、上記マイコン1A~1Dの構成に加えて、図16に示すように、調停部30を備えてもよい。調停部30は、共有リソース13へのアクセスを制御するバス・アービタ(Bus Arbiter)としての機能を実現してもよい。
ここで、当該他の実施形態のマイコン1Eは、図17に示すように、アクセステーブル12Eをさらに備えてもよい。アクセステーブル12Eは、CPU10毎にアクセス優先度が対応付けられている。
図17に示す例では、CPUa10Aにアクセス優先度「最高」が対応付けられ、CPUb10Bにアクセス優先度「高」が対応付けられ、CPUc10Cにアクセス優先度「低」が対応付けられている。
調停部30は、図18に示す調停処理を実施するとよい。なお、調停処理は、何れかの調停部30が実施してもよい。調停処理については、図18のフローチャートを用いて説明する。調停処理は、例えば、共有リソース13へのアクセスがあると開始される処理である。
なお、調停部30は、既にあるCPU10からのアクセスがある状態で、さらに他のCPU10からのアクセスがあった場合には、既にアクセスしていたCPU10を優先してアクセスを受け付ける。
調停処理では、まずS610で、調停部30は、複数のCPU10からのアクセスの開始があるか否かを判定する。調停部30は、S610で複数のCPU10からのアクセスがない、つまり1つのCPU10のみからのアクセスがあると判定した場合には、S620へ移行し、アクセス権の調停は不要と判定し、調停処理を終了する。
一方、調停部30は、S610で複数のCPU10からのアクセスがあると判定した場合には、S630へ移行し、最高優先度のCPUa10Aからのアクセスがあるか否かを判定する。
調停部30は、S630で最高優先度のCPUa10Aからのアクセスがあると判定した場合には、S640へ移行し、アクセス権を最高優先度のCPUa10Aに設定し、調停処理を終了する。
一方、調停部30は、S630で最高優先度のCPUa10Aからのアクセスがないと判定した場合には、S650へ移行し、高優先度のCPUb10Bからのアクセスがあるか否かを判定する。
調停部30は、S650で高優先度のCPUb10Bからのアクセスがあると判定した場合には、S660へ移行し、アクセス権を高優先度のCPUb10Bに設定し、調停処理を終了する。
一方、調停部30は、S650で高優先度のCPUb10Bからのアクセスがないと判定した場合には、S670へ移行し、アクセス権を低優先度のCPUC10Cに設定し、調停処理を終了する。
このように、上記の調停部30による調停処理では、複数のCPU10から、任意の処理によるデータを格納可能に構成された共有リソース13への同時アクセスが生じる場合、予め設定された優先順位に従って処理を実施する。
このような構成によれば、複数のCPU10から共有リソース13への同時アクセスが生じる場合であっても、優先順位に従って良好に処理を行うことができる。
(6b)上記実施形態では、退避用BUFF13Bに1つの同期情報が格納される例について説明したが、退避用BUFF13Bには、複数の同期情報が格納されてもよい。
図19に示す例では、ある処理Aにおいて、退避用BUFF13Bに同期情報Aが格納され、その後、処理Aの中で別の処理aが実施されるネストの際に、さらに退避用BUFF13Bに同期情報Bが格納される例を示している。
その後、退避用BUFF13Bから同期記録領域13Aに移動される際には、後から格納された同期情報Bが先に読み出される。つまり、各CPU10は、S220で、他の同期情報を退避用BUFF13BにLIFO方式(Last In First Out:後入れ先出し)で格納するとよい。
このような構成によれば、LIFO方式で他の同期情報を格納するので、ネストによって、複数の同期情報を格納する場合であっても、複数の同期情報を良好に読み出すことができる。
(6c)上記実施形態では、複数のCPU10を備える構成としたが、1つのCPUに多数の演算部を備えるマルチコアとして構成されてもよい。このような構成であっても上記(2a)と同様の効果を享受できる。
(6d)上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。
(6e)前述したマイコン1A~1Eの他、当該マイコン1A~1Eを構成要素とするシステム、当該マイコン1A~1Eとしてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、同期方法など、種々の形態で本開示を実現することもできる。
1A~1E…マイコン、10…CPU、11…ローカルRAM、12…ROM、12A~D…同期情報テーブル、12E…アクセステーブル、13…共有リソース、13A…同期記録領域、13B…退避用BUFF、20…バス、21…タイマ、22…I/O、23…A/D、30…調停部。

Claims (6)

  1. 複数の演算部(10)を備え、前記複数の演算部が同期を伴う並列処理を行うように構成された演算装置(1A~1E)であって、
    前記複数の演算部のうちの1つを自コア、前記自コアを除く他の演算部のうちの前記自コアと同期ポイントで同期する処理を実施する他の演算部を他コアとして、
    前記自コアが同期を伴う処理を実施中に、前記同期ポイントに到達すると、前記他コアが、前記同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを判定するように構成された同期判定部(S140)と、
    前記他コアが、前記他の同期ポイントでの同期待ち状態である場合に、予め同期ポイント毎に対応付けられた優先度情報に従って、前記自コア或いは前記他コアが実施する処理をスリープさせ、処理をスリープさせる自コア或いは他コアに、他の処理を実施させるように構成されたスリープ指令部(S230,S260,S470,S490)と、
    を備える演算装置。
  2. 請求項1に記載の演算装置であって、
    任意の処理によるデータを格納可能に構成された共有リソースをさらに備え、
    前記スリープ指令部は、前記自コア或いは前記他コアが実施する処理をスリープさせる際に、少なくとも、前記自コア及び前記他コアを特定するためのコア特定情報と、前記同期ポイントを特定するための同期特定情報とを含む同期情報を前記共有リソースに格納する
    ように構成された演算装置。
  3. 請求項1又は請求項2に記載の演算装置であって、
    データを記録可能に構成された同期判定用領域(13A)と、
    データを記録可能に構成された1又は複数の退避用領域(13B)と、
    をさらに備え、
    前記自コアが同期を伴う処理を実施中に、前記同期ポイントに到達すると、少なくとも、前記自コア及び前記他コアを特定するためのコア特定情報と、前記同期ポイントを特定するための同期特定情報とを含む同期情報を、前記同期判定用領域に格納するように構成された同期格納部(S120)と、
    前記同期格納部が前記同期情報を前記同期判定用領域に格納する際に、既に前記同期判定用領域内に他の同期情報が存在する場合に、前記同期格納部が前記同期情報を前記同期判定用領域に格納する前に、前記同期判定用領域内の他の同期情報を前記退避用領域に移動させる移動格納部(S220)と、
    をさらに備え、
    前記同期判定部は、前記自コアが同期を伴う処理を実施中に、前記同期ポイントに到達すると、前記他コアが、前記同期ポイントとは異なる他の同期ポイントでの同期待ち状態であるか否かを、少なくとも前記同期判定用領域におけるデータの有無によって判定する
    ように構成された演算装置。
  4. 請求項3に記載の演算装置であって、
    前記退避用領域は、複数備えられ、
    前記移動格納部は、前記他の同期情報を前記退避用領域にLIFO方式で格納する
    ように構成された演算装置。
  5. 請求項1から請求項3までのいずれか1項に記載の演算装置であって、
    前記優先度情報には、複数の同期ポイント毎に、当該同期ポイントの優先度と、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報と、が含まれており、
    前記スリープ指令部は、前記優先度情報に、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報が存在する場合、当該同期ポイントの優先度に拘わらず、当該同期ポイントに関する処理の前に終了すべき処理を特定する情報に従って、前記自コア或いは前記他コアが実施する処理をスリープさせる
    ように構成された演算装置。
  6. 請求項1から請求項5までのいずれか1項に記載の演算装置であって、
    前記複数の演算部から、任意の処理によるデータを格納可能に構成された共有リソースへの同時アクセスが生じる場合、予め設定された優先順位に従って処理を実施する
    ように構成された演算装置。
JP2019029351A 2019-02-21 2019-02-21 演算装置 Active JP7095620B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019029351A JP7095620B2 (ja) 2019-02-21 2019-02-21 演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019029351A JP7095620B2 (ja) 2019-02-21 2019-02-21 演算装置

Publications (2)

Publication Number Publication Date
JP2020135524A JP2020135524A (ja) 2020-08-31
JP7095620B2 true JP7095620B2 (ja) 2022-07-05

Family

ID=72263315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019029351A Active JP7095620B2 (ja) 2019-02-21 2019-02-21 演算装置

Country Status (1)

Country Link
JP (1) JP7095620B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113176771B (zh) * 2021-04-16 2023-04-14 重庆长安新能源汽车科技有限公司 车辆域控制器运行状态监控方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3144847B2 (ja) 1991-08-29 2001-03-12 エヌティエヌ株式会社 回転伝達装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63265336A (ja) * 1987-04-22 1988-11-01 Nec Corp 共有資源の優先割り当て制御方式
JPH0640324B2 (ja) * 1989-10-26 1994-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプロセス同期方法
JP6464982B2 (ja) * 2015-10-07 2019-02-06 株式会社デンソー 並列化方法、並列化ツール、車載装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3144847B2 (ja) 1991-08-29 2001-03-12 エヌティエヌ株式会社 回転伝達装置

Also Published As

Publication number Publication date
JP2020135524A (ja) 2020-08-31

Similar Documents

Publication Publication Date Title
JP3189139B2 (ja) 情報転送システムおよび方法
WO2011103825A2 (zh) 多处理器系统负载均衡的方法和装置
WO2010067492A1 (ja) マルチプロセッサシステム及びその排他制御の調停方法
JP2009015832A (ja) アクセス間調停回路、半導体装置およびアクセス間調停方法
US20070050527A1 (en) Synchronization method for a multi-processor system and the apparatus thereof
JP7095620B2 (ja) 演算装置
TWI587218B (zh) 記憶體事務層級模型模擬方法及系統
JP2002304369A (ja) バスシステム
JP4168281B2 (ja) 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム
JP4843554B2 (ja) インターフェイスボード、シミュレータ、同期方法、同期プログラム
JP2008146541A (ja) Dma転送システム、dmaコントローラ及びdma転送方法
JP2004152185A (ja) 排他制御装置、排他制御方法、プログラム、及び記録媒体
JP4335327B2 (ja) 調停装置および方法
JP2001175588A (ja) バス制御装置
JP2007052685A (ja) マイクロコントローラ
JP2008108126A (ja) データ転送制御装置及びそのバスアクセス調停方法
US20230315573A1 (en) Memory controller, information processing apparatus, and information processing method
JP5511538B2 (ja) Cpu間通信システム及びcpu間通信方法
EP3460671B1 (en) Semiconductor device and program used in the semiconductor device
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JP2010044699A (ja) 情報処理装置
JP2004227484A (ja) 情報処理装置およびメモリアクセス調停方法
JP2007241629A (ja) 情報処理装置及び情報処理方法をコンピュータに実行させるためのプログラム
JPH09218859A (ja) マルチプロセッサ制御システム
JPH04128957A (ja) マルチプロセッサシステムにおける共有資源の排他制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210716

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220606

R151 Written notification of patent or utility model registration

Ref document number: 7095620

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151