JP6160571B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP6160571B2
JP6160571B2 JP2014148159A JP2014148159A JP6160571B2 JP 6160571 B2 JP6160571 B2 JP 6160571B2 JP 2014148159 A JP2014148159 A JP 2014148159A JP 2014148159 A JP2014148159 A JP 2014148159A JP 6160571 B2 JP6160571 B2 JP 6160571B2
Authority
JP
Japan
Prior art keywords
counter
cpus
synchronization
data processing
cpu
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
JP2014148159A
Other languages
English (en)
Other versions
JP2016024614A (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 JP2014148159A priority Critical patent/JP6160571B2/ja
Priority to DE102015213370.2A priority patent/DE102015213370A1/de
Publication of JP2016024614A publication Critical patent/JP2016024614A/ja
Application granted granted Critical
Publication of JP6160571B2 publication Critical patent/JP6160571B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Description

本発明は、複数のCPUを備えたデータ処理装置に関する。
複数のCPUを備えたマルチプロセッサシステムにおいて、CPU間の同期を実現するために、CPU毎に用意した同期フラグを用いる技術がある(例えば、特許文献1参照)。従来の技術では、各CPUがアクセスするメモリの同期フラグ領域に、CPU毎の同期フラグが用意される。その同期フラグは1ビット以上のカウンタである。各CPUは、他のCPUと同期する場合(例えばメモリ領域内の同じ変数や、同じI/Oを、時間順序を守ってアクセスする必要がある場合)、自身の同期フラグに、どの処理まで実行したかを示す値をセットする。そして、各CPUは、ある処理を終了してから次の処理に進む前に、他のCPUの全ての同期フラグを参照し続けて、全ての同期フラグが、次の処理に進むことが可能な値になるまで待つ。
特開2005−71109号公報
従来の技術では、各CPUは、同期のために他のCPUの同期フラグを全て参照する必要がある。このため、CPUの数が増加すると、同期に必要なフラグの参照回数が加速度的に増加する。よって、データ処理装置の全体として、同期のための処理負荷が増加する。
そこで、本発明は、複数のCPUを備えたデータ処理装置において、同期のための処理の効率化を目的としている。
第1発明のデータ処理装置は、複数のCPUを備えたデータ処理装置であり、終了フラグと、カウンタと、第1更新手段及び第2更新手段と、を備える。
終了フラグは、各CPUに対して設けられ、各CPUが、同期が必要な処理の実行完了を個別にセット可能なフラグである。
一方、カウンタは、各CPUに共通のものである。そして、カウンタは、各CPUの終了フラグのうちの、一部である所定数の終了フラグがセットされてから、全ての終了フラグがセットされるまでの状態を示す。
第1更新手段は、各CPUの終了フラグのうち、前記所定数の終了フラグがセットされると、カウンタの値を更新する。第2更新手段は、第1の更新手段によりカウンタの値が更新された後、全ての終了フラグがセットされると、カウンタの値を更に更新すると共に、全ての終了フラグをリセットする。このため、カウンタは、第1更新処理により更新される値になってから、第2更新処理により更新される値になるまでを、「所定数の終了フラグがセットされてから、全ての終了フラグがセットされるまでの状態」として示すこととなる。
そして、各CPUは、第2更新手段により更新されるカウンタの値に応じて、同期が必要な処理を実行すると共に、その同期が必要な処理を完了して自身の終了フラグをセットした後に、同期が不要な処理を実行する。
このデータ処理装置によれば、各CPUは、共通の1つのカウンタを参照して、同期が必要な処理(以下、同期必要処理ともいう)を進めることができる。このため、データ処理装置の全体として、前述した従来の技術よりも、同期のための処理負荷を低減することができる。よって、同期のための処理の効率化が達成される。
また、各CPUは、カウンタの値に応じて同期必要処理を実行するが、同期必要処理を完了して自身の終了フラグをセットしてから、次の同期必要処理を開始するまでの間に、同期が不要な処理を実行する。このため、処理の効率が一層向上する。
また例えば、各処理の中に、処理負荷が小さい場合のみ実行する等必ずしも実行しなくても良い部分がある場合には、その処理の実行前または実行中にカウンタの値が第1更新手段により更新される値になった場合に、その実行しなくても良い部分の処理をスキップする、といった制御も実施できる。その場合、他の処理へすぐに移れるようにすることができ、処理の効率化に寄与することとなる。
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
第1実施形態のマルチコアプロセッサの構成を表す構成図である。 各CPUの処理動作の説明図である。 各CPUが行う処理を表すフローチャートである。 第2実施形態のマルチコアプロセッサの構成を表す構成図である。 第3実施形態のカウンタ操作処理を表すフローチャートである。 第4実施形態のカウンタ操作処理を表すフローチャートである。
以下に、本発明が適用された実施形態のデータ処理装置としてのマルチコアプロセッサについて説明する。本実施形態のマルチコアプロセッサは、複数のCPUを1つのパッケージに集積したマイクロプロセッサである。内蔵される複数のCPUは、CPUコアあるいは単にコアとも呼ばれるため、この種のマイクロプロセッサは、マルチコアプロセッサと呼ばれる。
[第1実施形態]
図1に示すように、第1実施形態のマルチコアプロセッサ(以下単に、プロセッサという)11は、複数(この例では4つ)のCPU1a〜1dと、各CPU1a〜1dが実行するプログラムや固定のデータ等が格納されたROM2と、各CPU1a〜1dが共通に使用するメモリ3及びI/O(入出力装置)4,5と、それらを相互に接続するバス6と、を備える。メモリ3は、この例ではRAMである。
また、プロセッサ11は、CPU1a〜1d毎に設けられた4つの終了フラグ7a〜7dを備える。各CPU1a〜1dから各終了フラグ7a〜7dへは、終了フラグ7a〜7dをセットする(この例では、終了フラグ7a〜7dに“1”を書き込む)ための専用線9a〜9dが設けられている。そして、各CPU1a〜1dは、自身に対応する終了フラグ7a〜7dのセットを、1つの専用命令で行う。その専用命令は、例えば「setf」といったビット操作命令である。
尚、CPU1a〜1dについて、各々を特に区別しない場合には、符号として適宜「1」を用いる。同様に、終了フラグ7a〜7dについて、各々を特に区別しない場合には、符号として適宜「7」を用いる。
更に、プロセッサ11は、CPU1a〜1dに共通のカウンタ13を備える。そして、プロセッサ11は、終了フラグ7a〜7dに応じてカウンタ13を操作するハードウェア回路として、OR(オア)回路15、AND(アンド)回路16及び加算回路17を備える。
カウンタ13は、本実施形態では、2ビット以上のカウンタである。CPU1a〜1dは、バス6を介してカウンタ13にアクセス可能になっている。
OR回路15は、終了フラグ7a〜7dの論理和の値を、カウンタ13の最下位ビット(以下、LSB(Least Significant Bit)という)にセットする。このため、OR回路15は、終了フラグ7a〜7dのうちの一部である所定数(この例では1つ)の終了フラグ7がセットされると、カウンタ13のLSBを“0”から“1”にする。カウンタ13のLSBを“0”から“1”にすることは、カウンタ13の値(以下、カウンタ値ともいう)を1つ大きい値に更新すること(即ち、カウンタ13を1インクリメントすること)に等しい。
加算回路17は、カウンタ13の2ビット目以上のデータ値に1を加算した値を出力する。
AND回路16は、全ての終了フラグ7a〜7dがセットされると、カウンタ13に対してWE(ライトイネーブル)信号を出力する。すると、カウンタ13の2ビット目以上に、加算回路17の出力値が書き込まれる。また、カウンタ13がWE信号を出力すると、全ての終了フラグ7a〜7dがリセット(“0”にクリア)されて、OR回路15によりカウンタ13のLSBが“0”になる。全ての終了フラグ7a〜7dがセットされた場合、カウンタ13全体としては、1インクリメントされることとなる。
このため、カウンタ13は、全ての終了フラグ7a〜7dがリセットされている状態から、全ての終了フラグ7a〜7dがセットされた状態になると、合計で2インクリメントされる。つまり、全ての終了フラグ7a〜7dがリセットされている状態から、終了フラグ7a〜7dの何れか1つがセットされると、カウンタ13は、OR回路15により1インクリメントされる(LSBが“1”になる)。その後、全ての終了フラグ7a〜7dがセットされると、カウンタ13は、AND回路16により更に1インクリメントされる。そして、終了フラグ7a〜7dは全てリセットされる。
また、カウンタ13のLSBが“1”であること(カウンタ値が奇数であること)は、終了フラグ7a〜7dのうちの1つがセットされてから、全ての終了フラグ7a〜7dがセットされるまでの状態であることを示す。
また、カウンタ値は、予め定められた最終値の次は0に戻る。カウンタ値が0から再び0に戻るまでの期間が、1周期である(図2参照)。
次に、各CPU1a〜1dの処理について説明する。
〈概要〉
プロセッサ11は、例えば、自動車のエンジンを制御する電子制御装置に設けられ、各CPU1a〜1dは、エンジンを制御するための制御処理を実行する。エンジン等を制御するための制御処理は、周期性のある周期制御処理(周期制御システム処理)である。
本実施形態では、周期制御処理の特徴として、大域的な粗粒度での同期が可能という特性に着目しており、制御処理を、同期が必要な区間と、それ以外の区間(つまり同期が不要な区間)とに分割している。ここで言う同期は、排他も含む。区間とは、処理の全体における一部の処理のことである。このため、同期が必要な区間は、同期が必要な処理(同期必要処理)であり、順序を守って実行されるべき処理である。同様に、同期が不要な区間は、同期が不要な処理(以下、同期不要処理ともいう)であり、いつ実行しても良い処理(即ち、他の処理との時間的な関連性が無い処理)である。
また、本実施形態では、CPU1a〜1dにまたがって、カウンタ値で定義される同期ウインドウ(図2のW1,W2を参照)を設け、その各同期ウインドウに、同期が必要な区間(図2の区間1,区間2を参照)を配置している。更に、同期が必要な区間の間に、同期が不要な区間(図2の網掛け部分を参照)を挟んで配置することで、粗粒度で無駄の少ない同期を実現している。
〈具体的な処理の配置〉
最初に、処理を、同期が必要な処理毎に分割し、分割した同期必要処理と、それに続く同期不要処理とを合わせて、単位処理としている。
そして、図2において、「区間1」,「区間2」およびそれらに続く網掛け部分で示すように、同期必要処理と同期不要処理とからなる単位処理を、各CPU1a〜1dに配置(スケジューリング)している。また、各単位処理は、カウンタ値と対応付けられている。
図2において、「区間m」(mは1以上の整数)は、同期が必要な区間(同期必要処理)であり、その「区間m」に続く網掛け部分は、同期が不要な区間(同期不要処理)である。同期が不要な区間は、他のCPU1の実行内容に関係なく実行可能である。
また、図2の例では、カウンタ値が0及び1の場合が、同期ウインドウW1に該当し、その同期ウインドウW1に、「区間1」を配置している。そして、カウンタ値が2及び3の場合が、同期ウインドウW2に該当し、その同期ウインドウW2に「区間2」を配置している。つまり、カウンタ値がn(nは0以上の偶数)及び「n+1」の場合が、同期ウインドウWm(m=n/2+1)に該当し、その同期ウインドウWmに、同期が必要な「区間m」が配置されている。
例えば、CPU1aの「区間1」は、I/O4にアクセスする処理で、CPU1bの「区間1」は、I/O5にアクセスする処理で、CPU1cの「区間1」は、メモリ3内の変数Daにアクセスする処理で、CPU1dの「区間1」は、メモリ3内の変数Dbにアクセスする処理である。また、CPU1aの「区間1」は、I/O5にアクセスする処理で、CPU1bの「区間1」は、I/O4にアクセスする処理で、CPU1cの「区間1」は、メモリ3内の変数Dcにアクセスする処理で、CPU1dの「区間1」は、メモリ3内の変数Ddにアクセスする処理である。このように、同一のアクセス対象に複数のCPU1が同時にアクセスしないようにスケジュールされている。
〈各CPUの処理動作〉
図2に示すように、各CPU1a〜1dは、カウンタ値が0の場合には、「区間1」であって、「カウンタ値=0」に対応する単位処理のうちの同期必要処理を実行し、その同期必要処理を完了すると、自身の終了フラグ7a〜7dをセットする。そして、各CPU1a〜1dは、その後、単位処理のうちの同期不要処理(図2の「区間1」に続く網掛け部分)を実行する。尚、終了フラグ7a〜7dの何れか1つがセットされると、カウンタ13が1インクリメントされる(LSBが“1”になる)。
そして、全てのCPU1a〜1dが終了フラグ7a〜7dをセットすると、カウンタ13が1インクリメントされて、全ての終了フラグ7a〜7dがリセットされる。前述したように、カウンタ13は、全ての終了フラグ7a〜7bがリセットされている状態から、全ての終了フラグ7a〜7dがセットされると、合計で2インクリメントされる。
このため、各CPU1a〜1dは、同期不要処理を完了すると、カウンタ値を参照して、カウンタ13が2インクリメントされるまで待ち合わせを行う。
そして、各CPU1a〜1dは、カウンタ13が2インクリメントされたことを検知すると、次の単位処理であって、この例では「カウンタ値=2」に対応する単位処理のうちの同期必要処理(図2の「区間2」)を開始する。尚、CPU1は、同期不要処理を完了した時点で、カウンタ13が既に2インクリメントされていれば、すぐに次の単位処理のうちの同期必要処理を開始する。このように、各CPU1a〜1dは、全てのCPU1a〜1dが今回の同期必要処理を完了していることを、カウンタ値によって確認してから、次の同期必要処理を開始する。
そして、各CPU1a〜1dは、図2の「区間2」の実行を完了すると、自身の終了フラグ7a〜7dをセットし、その後、同期不要処理(図2の「区間2」に続く網掛け部分)を実行する。
以後は、上記と同様の動作が繰り返される。そして、カウンタ値が所定の最終値から0に戻ると(つまり、1周期分の周期制御処理が全て終わると)、各CPU1a〜1dは、再び「カウンタ値=0」に対応する単位処理から実行することとなる。
次に、各CPU1a〜1dが行う処理について、図3を用い改めて説明する。
図3に示すように、各CPU1は、動作を開始すると、S110にて、カウンタ値を読み込み、次のS120にて、カウンタ13のLSBが“0”であるか否かを判定する。
各CPU1は、カウンタ13のLSBが“0”ではない(即ち“1”である)と判定した場合には(S120:NO)、S110に戻る。
また、各CPU1は、カウンタ13のLSBが“0”と判定した場合には(S120:YES)、カウンタ13が2インクリメントされた(即ち、カウンタ値がAND回路16により更新されて、次の単位処理を実行しても良い状態になった)と判断して、S130へ進む。
各CPU1は、S130では、現在のカウンタ値(即ち、S110で読み込んだカウンタ値)に対応したタスクの先頭アドレス(詳しくは、そのタスクのプログラムの先頭アドレス)へジャンプする。
尚、ここでのタスクは、前述した単位処理のことである。また、そのタスク内に、当該CPU1の終了フラグ7をセットするための命令(本実施形態では前述の専用命令)が含まれており、その命令は後述のS150で実行される。また、ROM2には、カウンタ値に対応したタスクの先頭アドレスが記述されたタスクテーブルが記憶されている。そして、各CPU1は、S130では、そのタスクテーブルを参照して、現在のカウンタ値に対応したタスクの先頭アドレスを特定し、その特定した先頭アドレスへジャンプする。
各CPU1は、タスクの先頭アドレスにジャンプすることで、まず、タスクのうち、同期必要処理を実行する(S140)。そして、各CPU1は、同期必要処理の実行を完了すると、自身の終了フラグ7をセットし(S150)、次に、タスクのうち、同期不要処理を実行する(S160)。
各CPU1は、同期不要処理を終了すると、S110に戻り、カウンタ13のLSBが“0”になれば(あるいは、既に“0”であれば)、再びS130以降の処理を行うことにより、次の単位処理(タスク)を実行する。
以上のようなプロセッサ11では、各CPU1a〜1dに対して終了フラグ7a〜7dが設けられている。また、各CPU1a〜1dに共通のカウンタ13が設けられている。そして、終了フラグ7a〜7dのうちの1つがセットされると、カウンタ13が1インクリメントされ、全ての終了フラグ7a〜7dがセットされると、カウンタ13が更に1インクリメントされると共に、終了フラグ7a〜7dがリセットされる。
そして、各CPU1a〜1dは、全ての終了フラグ7a〜7dがセットされることで更新される偶数のカウンタ値に応じて、同期必要処理を実行すると共に、その同期必要処理を完了して自身の終了フラグ7をセットした後に、同期不要処理を実行する。
このようなプロセッサ11において、各CPU1a〜1dは、共通のカウンタ13を参照して、同期必要処理を進めることができる。このため、プロセッサ11の全体として、前述した従来の技術よりも、同期のための処理負荷を低減することができる。よって、同期のための処理の効率化が達成される。
また、各CPU1a〜1dは、カウンタ値に応じて同期必要処理を実行するが、同期必要処理を完了して自身の終了フラグ7をセットしてから、次の同期必要処理を開始するまでの間に、同期不要処理を実行する。このため、処理の効率が一層向上する。
また、各処理の中に、必ずしも実行しなくても良い部分がある場合、CPU1a〜1dのうちの少なくとも1つは、カウンタ13のLSBが“1”になった場合(カウンタ値がOR回路15により更新される奇数になった場合)に、その実行しなくても良い部分の処理をスキップする、といった制御を実施するように構成することができる。その場合、他の処理へすぐに移れるようにすることができ、処理の効率化に寄与することとなる。
また、各CPU1a〜1dは、1つの専用命令で自身の終了フラグ7a〜7dをセットすることができる。よって、処理負荷が軽減される。また、同期必要処理から同期不要処理へ素早く移行することがきる。
また、カウンタ13の操作(カウンタ値の更新)は、CPU1a〜1d以外の専用のハードウェア回路によって実施されるため、CPU1a〜1dの処理負荷が一層軽減される。
ところで、カウンタ13のビット数は、必ずしも2ビット以上でなくてもよく、最小の1ビットであっても良い。つまり、カウンタ13のビット数は任意である。周期制御処理の1周期中にカウンタ値がオーバーフローする場合は、オーバーフローを考慮したインクリメントの検出ができるようにすれば良い。
尚、一部のCPU1に同期が不要な処理が続く場合、そのCPU1に同期が不要な複数の区間をまとめて処理させることも可能である。この場合、まとめた区間の次の区間の開始前に、カウンタ値が「2×[まとめた区間数]」だけインクリメントされるのを待ち合わせるようにすれば良い。また、カウンタ13のビット数がNであるとすると、「2の(N−1)乗」個までの処理をまとめることが可能である。
[第2実施形態]
次に、第2実施形態のプロセッサについて説明する。尚、第1実施形態と同様の構成要素や処理については、第1実施形態と同じ符号を用いることで、説明を省略する。そして、このことは、後述する他の実施形態についても同様である。
図4に示す第2実施形態のプロセッサ21は、第1実施形態のプロセッサ11と比較すると、前述の専用線9a〜9dが設けられておらず、各CPU1a〜1dは、バス6を介して自身の終了フラグ7をセットする。このため、各CPU1a〜1dは、一般的なソフトウェアの命令により、自身の終了フラグ7をセットする。
例えば、終了フラグ7a〜7dの個々に対するビット操作命令が無い場合には、各CPU1a〜1dは、終了フラグ7a〜7dの全てを複数ビットのデータとして内部レジスタに読み出す命令と、読み出した複数ビットのうち、自身の終了フラグ7に該当するビットだけを“0”から“1”に置換する演算命令と、その演算命令実行後のデータを終了フラグ7a〜7dに書き込む命令と、を実行すれば良い。
このような第2実施形態のプロセッサ21によっても、第1実施形態と同様の効果(但し、前述の専用命令による効果以外)が得られる。
[第3実施形態]
第3実施形態のプロセッサは、第1又は第2実施形態のプロセッサ11,21と比較すると、AND回路16と加算回路17を備えていない。そして、CPU1a〜1dのうち、予め定められた1つのCPU1(ここではCPU1aとして説明する)が、AND回路16及び加算回路17と同様の機能を果たす。その1つのCPU1aは、例えばバス6を介して終了フラグ7a〜7dにアクセスすることができるようになっている。
図5に示すように、CPU1aは、単位処理のうちの同期必要処理を完了して、自身の終了フラグ7aをセットすると、図5の右側に示すカウンタ操作処理を実行し、その後、同期不要処理を実行する。つまり、カウンタ操作処理は、CPU1aにおいて、図3のS150とS160との間で実行される。
CPU1aは、カウンタ操作処理では、S210にて、終了フラグ7a〜7dを読み込み、次のS220にて、終了フラグ7a〜7dが全て“1”になっている(即ち、セットされている)か否かを判定する。そして、終了フラグ7a〜7dが全て“1”でなければ、S210に戻る。
また、CPU1aは、S220にて、終了フラグ7a〜7dが全て“1”になっていると判定した場合には、S230に進み、カウンタ値を1インクリメントする。例えば、CPU1aは、現在のカウンタ値を読み出し、その読み出した値に1を加算した値を、カウンタ13に書き込む。そして、CPU1aは、次のS240にて、全ての終了フラグ7a〜7dをリセットし、その後、当該カウンタ操作処理を終了する。
このような第3実施形態のプロセッサによっても、第1,第2実施形態と同様の効果が得られる。尚、CPU1a〜1dのうち、終了フラグ7a〜7dを参照するのは、CPU1aだけで済む。
また、変形例として、図5のカウンタ操作処理は、同期不要処理の後で実行されても良い。
[第4実施形態]
第4実施形態のプロセッサは、第1又は第2実施形態のプロセッサ11,21と比較すると、OR回路15、AND回路16及び加算回路17を備えていない。そして、各CPU1a〜1dのうち、全ての終了フラグ7a〜7dがリセットされている状態から最初に終了フラグ7をセットしたCPU1が、OR回路15、AND回路16及び加算回路17と同様の機能を果たす。
このため、各CPU1a〜1dは、単位処理のうちの同期必要処理を完了して、自身の終了フラグ7aをセットすると、図6のカウンタ操作処理を実行し、その後、同期不要処理を実行する。つまり、図6のカウンタ操作処理は、図3のS150とS160との間で実行される。また、各CPU1a〜1dは、例えばバス6を介して終了フラグ7a〜7dにアクセスすることができるようになっている。
図6に示すように、各CPU1は、カウンタ操作処理では、S200にて、終了フラグ7a〜7dを読み込み、次のS205にて、終了フラグ7a〜7dのうち、自身の終了フラグ7だけが“1”であるか否かを判定する。そして、各CPU1は、S205で否定判定(NOと判定)した場合、即ち、自身の終了フラグ7以外の終了フラグ7も“1”であった場合には、そのまま当該カウンタ操作処理を終了する。
また、各CPU1は、S205で肯定判定(YESと判定)した場合、即ち、自身の終了フラグ7だけが“1”である場合には、最初に終了フラグ7をセットしたのが自分であるということであるため、S207に進み、カウンタ13のLSBに“1”をセットする。つまり、OR回路15と同様の機能を果たす。
上記S207の処理を行ったCPU1は、その後、第3実施形態で説明した図5のS210〜S240と同じ処理を行うことにより、AND回路16及び加算回路17と同様の機能を果たし、その後、当該カウンタ操作処理を終了する。
このような第4実施形態のプロセッサによっても、第1,第2実施形態と同様の効果が得られる。尚、各CPU1は、図6のカウンタ操作処理において、S200,S205の処理を行うのは1回だけで済む。また、CPU1a〜1dのうち、S207〜S240の処理を行うのは、S205で肯定判定した1つのCPU1だけで済む。
一方、変形例として、OR回路15を設けるのであれば、図6のS207は削除することができる。
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。また、前述の数値も一例であり他の値でも良い。
例えば、第1〜第3実施形態において、OR回路15を設けずに、CPU1a〜1dが、カウンタ13のLSBに“1”をセットするように変形しても良い。具体例としては、各CPU1a〜1dが、自身の終了フラグ7をセットした際に、カウンタ13のLSBに“1”をセットするよう構成しても良い。
また、前述の所定数は1に限らず、CPU1の総数よりも小さい任意の数に設定することができる。例えば、OR回路15に代えて、終了フラグ7a〜7dのうちの2つあるいは3つがセットされると、カウンタ13のLSBに“1”をセットする回路を設けても良い。また、カウンタ値をどのように更新していくかも任意であり、2ずつ増加させたり、3ずつ増加させたりするように構成しても良い。
また、上記実施形態における1つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を1つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言によって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。また、上述したプロセッサの他、当該プロセッサを構成要素とする制御装置やシステム、当該プロセッサの各CPUが実行するプログラム、このプログラムを記録した媒体、データ処理方法など、種々の形態で本発明を実現することもできる。
1a〜1d…CPU7a〜7d…終了フラグ、13…カウンタ、15…OR回路、16…AND回路、17…加算回路

Claims (8)

  1. 複数のCPU(1a〜1d)を備えたデータ処理装置において、
    前記各CPUに対して設けられ、前記各CPUが、同期が必要な処理の実行完了を個別にセット可能な終了フラグ(7a〜7d)と、
    前記各CPUの終了フラグのうちの、一部である所定数の終了フラグがセットされてから、全ての前記終了フラグがセットされるまでの状態を示すカウンタ(13)と、
    前記各CPUの終了フラグのうち、前記所定数の終了フラグがセットされると、前記カウンタの値を更新する第1更新手段(15,S207)と、
    前記第1の更新手段により前記カウンタの値が更新された後、全ての前記終了フラグがセットされると、前記カウンタの値を更に更新すると共に、前記全ての終了フラグをリセットする第2更新手段(16,17,S210〜S240)と、を備え、
    前記各CPUは、前記第2更新手段により更新される前記カウンタの値に応じて、同期が必要な処理を実行すると共に、その同期が必要な処理を完了して自身の前記終了フラグをセットした後に、同期が不要な処理を実行すること(S110〜S160)、
    を特徴とするデータ処理装置。
  2. 請求項1に記載のデータ処理装置において、
    前記第1更新手段(15)と前記第2更新手段(16,17)とのうち、少なくとも一方は、ハードウェア回路であること、
    を特徴とするデータ処理装置。
  3. 請求項1または請求項2に記載のデータ処理装置において、
    前記第1更新手段(15)と前記第2更新手段(16,17)は、ハードウェア回路であること、
    を特徴とするデータ処理装置。
  4. 請求項1に記載のデータ処理装置において、
    前記各CPUのうち、予め定められた1つのCPUが、前記第2更新手段(S210〜S240)として機能すること、
    を特徴とするデータ処理装置。
  5. 請求項1に記載のデータ処理装置において、
    前記各CPUのうち、全ての前記終了フラグがリセットされている状態から、最初に前記終了フラグをセットしたCPUが、前記第2更新手段(S210〜S240)として機能すること、
    を特徴とするデータ処理装置。
  6. 請求項5に記載のデータ処理装置において、
    前記所定数は1であり、
    前記各CPUのうち、全ての前記終了フラグがリセットされている状態から、最初に前記終了フラグをセットしたCPUは、前記第1更新手段(S207)としても機能すること、
    を特徴とするデータ処理装置。
  7. 請求項1ないし請求項6の何れか1項に記載のデータ処理装置において、
    前記各CPUは、前記終了フラグのセットを専用命令で行うこと、
    を特徴とするデータ処理装置。
  8. 請求項1ないし請求項7の何れか1項に記載のデータ処理装置において、
    前記所定数は1であり、
    前記第1更新手段は、
    前記各CPUの終了フラグのうち、何れか1つの終了フラグがセットされると、前記カウンタの最下位ビットに1をセットすることにより、前記カウンタの値を更新するようになっており、
    前記第2更新手段は、
    全ての前記終了フラグがセットされると、前記カウンタを1インクリメントすることにより、前記カウンタの値を更新するようになっており、
    前記各CPUは、前記カウンタの値が2増加する毎に、前記同期が必要な処理を実行すること、
    を特徴とするデータ処理装置。
JP2014148159A 2014-07-18 2014-07-18 データ処理装置 Active JP6160571B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014148159A JP6160571B2 (ja) 2014-07-18 2014-07-18 データ処理装置
DE102015213370.2A DE102015213370A1 (de) 2014-07-18 2015-07-16 Datenverarbeitungsvorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014148159A JP6160571B2 (ja) 2014-07-18 2014-07-18 データ処理装置

Publications (2)

Publication Number Publication Date
JP2016024614A JP2016024614A (ja) 2016-02-08
JP6160571B2 true JP6160571B2 (ja) 2017-07-12

Family

ID=55021992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014148159A Active JP6160571B2 (ja) 2014-07-18 2014-07-18 データ処理装置

Country Status (2)

Country Link
JP (1) JP6160571B2 (ja)
DE (1) DE102015213370A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6535304B2 (ja) * 2016-08-26 2019-06-26 日本電信電話株式会社 分散同期処理システムおよび分散同期処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141300A (ja) * 1993-11-18 1995-06-02 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサを用いた周期処理方法
JPH11312148A (ja) * 1998-04-28 1999-11-09 Hitachi Ltd バリア同期方法及び装置
JP4276028B2 (ja) * 2003-08-25 2009-06-10 株式会社日立製作所 マルチプロセッサシステムの同期方法

Also Published As

Publication number Publication date
DE102015213370A1 (de) 2016-01-21
JP2016024614A (ja) 2016-02-08

Similar Documents

Publication Publication Date Title
US9043806B2 (en) Information processing device and task switching method
JP5994679B2 (ja) 処理装置、及び処理装置の制御方法
JP4865016B2 (ja) プロセッサ
JP2013539143A (ja) 論理時刻ベクトルに基づくタスクの実行をスケジュールするためのシステム
JP2007206933A (ja) 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法
JP6160571B2 (ja) データ処理装置
US8484446B2 (en) Microprocessor saving data stored in register and register saving method
JP2007200180A (ja) プロセッサシステム
JP6105307B2 (ja) 命令実行制御装置、命令実行制御システム、命令実行制御方法、及び、命令実行制御プログラム
JP7064367B2 (ja) デッドロック回避方法、デッドロック回避装置
JP6332091B2 (ja) 電子制御装置
JP2011141619A (ja) マイクロプロセッサ
JP7378254B2 (ja) マルチプロセッサデバイス
CN114721725B (zh) 一种分支指令执行方法、装置、电子设备及存储介质
JP4288700B2 (ja) プログラマブルコントローラ
JP2017130140A (ja) データ処理装置
WO2019198235A1 (ja) シミュレーション装置およびシミュレーションプログラム
JP6558317B2 (ja) 電子装置
JP3795055B1 (ja) 値予測装置、マルチプロセッサシステムおよび値予測方法
US10817288B2 (en) Combined instruction for addition and checking of terminals
JP2015121953A (ja) マイクロコンピュータ及び電子制御装置
JP2013539144A (ja) 論理時刻ベクトルに基づくタスクの実行をスケジュールするためのシステム
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP2020140290A (ja) 中央演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170424

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: 20170516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170529

R151 Written notification of patent or utility model registration

Ref document number: 6160571

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250