(57)【要約】【課題】処理負荷を極力低減して、第１プロセッサコアによる更新タイミングの異なるデータを第２プロセッサコアの参照タスクが参照することを抑制する技術を提供する。【解決手段】データ処理装置２は、一つの第１プロセッサコア１０と、一つ以上の第２プロセッサコア２０と、更新用メモリ３０と、参照用メモリ４２と、を備えている。更新用メモリ３０には、第１プロセッサコア１０が実行する更新タスク１２がデータを書き込む。参照用メモリ４２は、第２プロセッサコア２０毎に設けられており、第２プロセッサコア２０が実行する参照タスク２４が参照する。第２プロセッサコア２０が実行し参照タスク２４よりも優先度が高いコピータスク２２は、更新用メモリ３０から取得するデータを参照用メモリ４２に書き込む。【選択図】図１
2017130140.tif 000002
【特許請求の範囲】
【請求項１】
一つの第１プロセッサコア（１０）と、
一つ以上の第２プロセッサコア（２０、５０、７０）と、
前記第１プロセッサコアが実行する更新タスク（１２、Ｓ４００〜Ｓ４０４）がデータを書き込む更新用メモリ（３０）と、
前記第２プロセッサコア毎に設けられ、前記第２プロセッサコアが実行する少なくとも一つの参照タスク（２４、５４、７４、７６、Ｓ４３０〜Ｓ４３４、Ｓ４４０〜Ｓ４４４）が参照し、前記第２プロセッサコアが実行し前記参照タスクよりも優先度の高いコピータスク（２２、５２、７２、Ｓ４１０〜Ｓ４２０、Ｓ４５０〜Ｓ４６０）が前記更新用メモリから取得するデータを書き込む参照用メモリ（４２、６２、８０）と、
を備えるデータ処理装置（２、４、６、８）。
【請求項２】
請求項１に記載のデータ処理装置において、
少なくとも一つの前記第２プロセッサコア（２０、５０）が一つの前記参照タスク（２４、５４）を実行する場合、前記参照タスクが前記参照用メモリを参照中であることを示す参照中フラグ（４４、６４）を前記参照タスク毎にさらに備え、
前記コピータスク（Ｓ４１０）は、前記参照タスクが前記参照用メモリを参照中であることを前記参照中フラグが示している場合、前記更新用メモリのデータを取得して前記参照用メモリに書き込むコピー処理を実行せず、
少なくとも一つの前記第２プロセッサコア（７０）が複数の前記参照タスク（７４、７６）を実行する場合、複数の前記参照タスクを実行する前記第２プロセッサコア毎に、複数の前記参照タスクが増加および減少させる参照中カウンタ（８２）をさらに備え、
複数の前記参照タスク（Ｓ４４０、Ｓ４４４）は、前記参照用メモリ（８０）の参照を開始するときに前記参照中カウンタの増加または減少の一方を実行し、前記参照用メモリの参照を終了するときに前記参照中カウンタの増加または減少の他方を実行し、
前記コピータスク（７２、Ｓ４５０）は、前記参照タスクが前記参照用メモリを参照中であることを前記参照中カウンタが示している場合、前記更新用メモリのデータを取得して前記参照用メモリに書き込むコピー処理を実行しない、
データ処理装置。
【請求項３】
請求項１に記載のデータ処理装置において、
前記第２プロセッサコア（２０、５０）が実行する少なくとも一つの前記参照タスク（２４、５４）が前記参照用メモリを参照中であることを示す参照中フラグ（４４、６４）を前記参照タスク毎にさらに備え、
前記コピータスク（Ｓ４１０）は、前記参照タスクが前記参照用メモリを参照中であることを前記参照中フラグが示している場合、前記更新用メモリのデータを取得して前記参照用メモリに書き込むコピー処理を実行しない、
データ処理装置。
【請求項４】
請求項１から３のいずれか一項に記載のデータ処理装置において、
前記更新用メモリに書き込みを開始するときに前記更新タスクが増加または減少させる更新開始カウンタ（３２）と、
前記更新用メモリへの書き込みを終了するときに前記更新タスクが前記更新開始カウンタと同一方向に増加または減少させる更新終了カウンタ（３４）と、
をさらに備え、
前記コピータスク（Ｓ４１２、Ｓ４５２）は、前記更新開始カウンタと前記更新終了カウンタとの値に基づいて前記更新タスクが前記更新用メモリへの書き込み中であると判定すると、前記更新用メモリのデータを取得して前記参照用メモリに書き込むコピー処理を再実行する、
データ処理装置。
【請求項５】
請求項４に記載のデータ処理装置において、
前記コピータスク（Ｓ４１８、Ｓ４５８）は、前記コピー処理の実行中に、前記更新開始カウンタの値が変化すると前記更新タスクが前記更新用メモリに書き込んだと判定し、前記コピー処理を再実行する、
データ処理装置。
【請求項６】
請求項１から３のいずれか一項に記載のデータ処理装置において、
前記更新用メモリに書き込みを開始するときに前記更新タスクが増加または減少させる更新開始カウンタ（３２）と、
前記更新用メモリへの書き込みを終了するときに前記更新タスクが前記更新開始カウンタと同一方向に増加または減少させる更新終了カウンタ（３４）と、
をさらに備え、
前記コピータスクは、前記更新開始カウンタと前記更新終了カウンタとの値に基づいて前記更新タスクが前記更新用メモリへの書き込み中であると判定すると、前記更新用メモリのデータを取得して前記参照用メモリに書き込むコピー処理を終了する、
データ処理装置。
【請求項７】
請求項６に記載のデータ処理装置において、
前記コピータスクは、前記コピー処理の実行中に、前記更新開始カウンタの値が変化すると前記更新タスクが前記更新用メモリに書き込んだと判定して前記コピー処理を終了する、
データ処理装置。
【請求項８】
請求項１から７のいずれか一項に記載のデータ処理装置において、
前記コピータスクが前記更新用メモリから取得するデータを一時的に格納する一時格納用メモリ（４０、６０、８４）をさらに備え、
前記コピータスク（Ｓ４１６、Ｓ４５６）は、前記参照タスクが前記参照用メモリを参照中ではなく、かつ前記更新タスクが前記更新用メモリを更新中ではなく、かつ前記コピータスクが前記更新用メモリから取得するデータを前記一時格納用メモリに格納中に前記更新タスクが前記更新用メモリを更新していない場合、前記一時格納用メモリに格納した前記更新用メモリのデータを前記参照用メモリに書き込む、
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数のプロセッサコアにおいて、データの更新と更新されたデータの参照とを異なるプロセッサコアが行う技術に関する。
【背景技術】
【０００２】
複数のプロセッサコアにおいて、データの更新と更新されたデータの参照とを異なるプロセッサコアが行う技術が知られている。
例えば、特許文献１に記載の技術では、複数のプロセッサコアとして２個のＣＰＵコアのうち一方のＣＰＵコアが生成タスクによりデータを生成して更新する処理が終了すると、他方のＣＰＵコアに割り込みを要求するフラグを一方のＣＰＵコアがセットする。
【０００３】
割り込み要求フラグがセットされると、他方のＣＰＵコアに対する割り込みが起動されることにより、他方のＣＰＵコアの取り込みタスクが起動される。他方のＣＰＵコアが実行する取り込みタスクは、割り込み禁止レジスタに禁止フラグをセットすることにより、一方のＣＰＵコアの生成タスクにより更新されたデータを取得して別のメモリに書き込む処理中、自ＣＰＵコアへの他の割り込み処理を禁止する。
【０００４】
他のＣＰＵコアの取り込みタスクが一方のＣＰＵコアの生成タスクが更新したデータを取得して別のメモリに書き込んでいる間、他のＣＰＵコアへの割り込み処理が禁止されるので、取り込みタスクが書き込み中のデータは他のタスクにより参照されない。
【０００５】
取り込みタスクは、書き込みを終了すると割り込み禁止レジスタにセットされている禁止フラグをリセットするので、取り込みタスク以外の他のＣＰＵコアのタスクは、取り込みタスクが書き込みを終了したデータを参照できる。これにより、特許文献１に記載の技術では、取り込みタスクによる書き込みタイミングの異なるデータを、他のＣＰＵコアの他のタスクが参照することを防止しようとしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２４５００９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
他のＣＰＵコアの取り込みタスクは、取り込みタスクの処理中に自ＣＰＵコアへの割り込み処理を禁止するために割り込み禁止レジスタの禁止フラグをセットし、取り込みタスクの処理を終了すると禁止フラグをリセットする必要があるので、処理負荷が増加する。
【０００８】
本開示の一側面は、処理負荷を極力低減して、第１プロセッサコアによる更新タイミングの異なるデータを第２プロセッサコアの参照タスクが参照することを抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本開示の一態様は、一つの第１プロセッサコア（１０）と、一つ以上の第２プロセッサコア（２０、５０、７０）と、更新用メモリ（３０）と、参照用メモリ（４２、６２、８０）と、を備えている。
【００１０】
更新用メモリには、第１プロセッサコアが実行する更新タスク（１２、Ｓ４００〜Ｓ４０４）がデータを書き込む。
参照用メモリは第２プロセッサコア毎に設けられている。そして、第２プロセッサコアが実行する参照タスク（２４、５４、７４、７６、Ｓ４３０〜Ｓ４３４、Ｓ４４０〜Ｓ４４４）が参照用メモリを参照し、第２プロセッサコアが実行し参照タスクよりも優先度が高いコピータスク（２２、５２、７２、Ｓ４１０〜Ｓ４２０、Ｓ４５０〜Ｓ４６０）が、更新用メモリから取得するデータを参照用メモリに書き込む。
【００１１】
この構成によれば、更新用メモリと参照用メモリとを別のメモリにしているので、参照タスクが参照用メモリのデータを参照中に更新タスクが更新用メモリのデータを更新しても、更新タスクは参照用メモリのデータを更新しない。
【００１２】
さらに、第２プロセッサコアにおいて、コピータスクの優先度を参照タスクよりも高く設定しているので、参照タスクよりも優先度が高いコピータスクが更新用メモリから取得するデータを参照用メモリに書き込んでいる間、参照タスクは実行されない。
【００１３】
したがって、参照タスクが参照する参照用メモリのデータを、更新タスクが同じタイミングで更新したデータをコピータスクが参照用メモリに書き込んだものにできる。
また、コピータスクと参照タスクとを実行する優先度は予め設定されているので、コピータスクの実行中に参照タスクの実行を禁止し、コピータスクの実行が終了すると参照タスクの実行を許可する処理を行う必要がない。これにより、処理負荷を極力低減して参照タスクの実行タイミングを調整できる。
【００１４】
このように、処理負荷を極力低減して、第１プロセッサコアによる更新タイミングの異なるデータを第２プロセッサコアの参照タスクが参照することを抑制できる。
尚、この欄および特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１５】
【図１】第１実施形態によるデータ処理装置を示すブロック図。
【図２】更新タスクが実行する更新処理を示すフローチャート。
【図３】コピータスクが実行するコピー処理を示すフローチャート。
【図４】コピータスクが実行するコピー処理を示すタイムチャート。
【図５】参照タスクが実行する参照処理を示すフローチャート。
【図６】更新処理、コピー処理、参照処理を示すタイムチャート。
【図７】第２実施形態によるデータ処理装置を示すブロック図。
【図８】第３実施形態によるデータ処理装置を示すブロック図。
【図９】参照タスクが実行する参照処理を示すフローチャート。
【図１０】コピータスクが実行するコピー処理を示すフローチャート。
【図１１】第４実施形態によるデータ処理装置を示すブロック図。
【発明を実施するための形態】
【００１６】
以下、本発明が適用された実施形態を図に基づいて説明する。
［１．第１実施形態］
［１−１．構成］
図１に示す第１実施形態のデータ処理装置２は、２個のプロセッサコア１０、２０と、更新用ＲＡＭ３０と、更新開始カウンタ３２と、更新終了カウンタ３４と、一時格納用ＲＡＭ４０と、参照用ＲＡＭ４２と、参照中フラグ４４と、図示しないＲＯＭおよびフラッシュメモリ等を備えている。データ処理装置２は、２個のコア１０、２０を備えるマルチコアプロセッサである。以下、プロセッサコアを単に「コア」とも言う。
【００１７】
データ処理装置２の各機能は、コア１０、２０がＲＯＭまたはフラッシュメモリ等の非遷移的実体的記録媒体に記憶されているプログラムを実行することにより実現される。このプログラムが実行されることにより、プログラムに対応する方法が実行される。データ処理装置２の各機能を実現する手法は、ソフトウェアに限るものではなく、その一部または全部の要素を、論理回路やアナログ回路等を組み合わせたハードウェアを用いてもよい。
【００１８】
第１プロセッサコアに対応するコア１０は、更新タスク１２を実行して更新用ＲＡＭ３０のデータを更新する。更新タスク１２は、更新用ＲＡＭ３０のデータに対する更新を開始するときに更新開始カウンタ３２の値を１増加し、更新用ＲＡＭ３０のデータに対する更新を終了するときに更新終了カウンタ３４の値を１増加する。更新開始カウンタ３２と更新終了カウンタ３４との初期値は例えば０のように同じ値に設定されている。
【００１９】
つまり、更新開始カウンタ３２と更新終了カウンタ３４とは、更新タスク１２が更新用ＲＡＭ３０のデータを更新していないときには同じ値であり、更新タスク１２が更新用ＲＡＭ３０のデータを更新中には異なる値である。
【００２０】
更新タスク１２は、更新開始カウンタ３２と更新終了カウンタ３４とを１増加する代わりに、１減少してもよい。つまり、更新開始カウンタ３２の値と更新終了カウンタ３４の値とは、増加または減少の同じ方向に変化する。また、更新開始カウンタ３２と更新終了カウンタ３４との増減量は、同じであれば１に限るものではない。
【００２１】
コア１０は、コア２０が実行するコピータスク２２と参照タスク２４とが実行中であるか否かに関わらず、更新タスク１２を実行する。
第２プロセッサコアに対応するコア２０は、コピータスク２２と参照タスク２４とを実行する。コピータスク２２を実行する優先度は参照タスク２４を実行する優先度よりも高い。コピータスク２２は、コア１０が更新タスクを実行していない場合、更新用ＲＡＭ３０のデータを取得して一時格納用ＲＡＭ４０に一時的に格納する。
【００２２】
コピータスク２２は、更新用ＲＡＭ３０のデータを取得して一時格納用ＲＡＭ４０に格納している間に更新タスク１２が更新用ＲＡＭ３０のデータを更新しない場合、一時格納用ＲＡＭ４０に格納した更新用ＲＡＭ３０のデータを参照用ＲＡＭ４２に書き込む。
【００２３】
参照タスク２４は、参照用ＲＡＭ４２のデータを参照する。参照タスク２４は、参照用ＲＡＭ４２のデータを参照中、参照中フラグ４４の値を、参照中であるオン状態であることを示す値として例えば１に設定する。参照タスク２４は、参照用ＲＡＭ４２のデータの参照を終了すると、参照中フラグ４４の値を、参照中ではないオフ状態であることを示す値として例えば０に設定する。
【００２４】
参照タスク２４よりも優先度の高いコピータスク２２は、参照中フラグ４４が１に設定されている場合、更新用ＲＡＭ３０のデータを取得して参照用ＲＡＭ４２に書き込むコピー処理を実行しない。
【００２５】
［１−２．処理］
（１）更新処理
図２に示す更新処理は、更新用ＲＡＭ３０のデータを更新する更新タイミングになると更新タスク１２により実行される。図２のＳ４００において更新タスク１２は、更新開始カウンタ３２を＋１する。Ｓ４０２において更新タスク１２は、更新用ＲＡＭ３０のデータを更新する。更新用ＲＡＭ３０のデータの更新が終了すると、Ｓ４０４において更新タスク１２は、更新終了カウンタ３４の値を＋１する。
【００２６】
（２）コピー処理
図３に示すコピー処理は、更新用ＲＡＭ３０のデータを取得して参照用ＲＡＭ４２に書き込むタイミングになるとコピータスク２２により実行される。図３のＳ４１０においてコピータスク２２は、参照中フラグ４４がオンであるか否かを判定する。
【００２７】
Ｓ４１０の判定がＹｅｓであり、参照中フラグ４４がオンの場合、参照タスク２４が参照用ＲＡＭ４２を参照中であることを表している。この場合、参照タスク２４が参照用ＲＡＭ４２を参照中にコピータスク２２が更新用ＲＡＭ３０のデータを取得して参照用ＲＡＭ４２に書き込むことを抑制するために、コピータスク２２は本処理を終了する。
【００２８】
Ｓ４１０の判定がＮｏであり、参照タスク２４が参照用ＲＡＭ４２を参照中ではない場合、Ｓ４１２においてコピータスク２２は、更新開始カウンタ３２の値と更新終了カウンタ３４の値とが一致しているか否かを判定する。
【００２９】
例えば、図４に示すように、更新開始カウンタ３２の値と更新終了カウンタ３４の値とが「４」で等しくＳ４１２の判定がＹｅｓの場合、コピータスク２２は、更新タスク１２が更新用ＲＡＭ３０のデータを更新中ではないと判断する。この場合、コピータスク２２はＳ４１４に処理を移行する。
【００３０】
尚、図４において４種類の実行タイミングで実行されるコピー処理は、各タイミングでそれぞれ実行されるのではなく、４種類の実行タイミングのうちいずれかのタイミングで実行される。
【００３１】
更新開始カウンタ３２の値が「５」であり、更新終了カウンタ３４の値が「４」であるためにＳ４１２の判定がＮｏの場合、コピータスク２２は、更新タスク１２が更新用ＲＡＭ３０のデータを更新中であると判断する。
【００３２】
この場合、コピータスク２２は、更新開始カウンタ３２の値と更新終了カウンタ３４の値とが「５」になり等しくなるまで待機する。そして、更新開始カウンタ３２の値と更新終了カウンタ３４の値とが「５」になると、更新タスク１２による更新用ＲＡＭ３０のデータの更新が終了したと判断し、コピータスク２２はＳ４１４に処理を移行する。
【００３３】
Ｓ４１４においてコピータスク２２は、更新開始カウンタ３２の値を一時格納用ＲＡＭ４０等の一時記憶エリアに退避する。
Ｓ４１６においてコピータスク２２は、更新用ＲＡＭ３０から取得したデータを一時格納用ＲＡＭ４０に格納する。更新用ＲＡＭ３０のデータの一時格納用ＲＡＭ４０への格納が終了すると、Ｓ４１８においてコピータスク２２は、Ｓ４１４において一時記憶エリアに退避していた更新開始カウンタ３２の値と現在の更新開始カウンタ３２の値とが一致しているか否かを判定する。
【００３４】
Ｓ４１８の判定がＮｏであり、一時記憶エリアに退避していた更新開始カウンタ３２の値と現在の更新開始カウンタ３２の値とが異なる場合、コピータスク２２は、更新用ＲＡＭ３０のデータを一時格納用ＲＡＭ４０に格納中に、コア１０の更新タスク１２が更新用ＲＡＭ３０のデータを更新したと判断する。
【００３５】
この場合、コピータスク２２が一時格納用ＲＡＭ４０に格納した更新用ＲＡＭ３０のデータには、更新タスク１２による更新前と更新後とのデータが混在している可能性がある。この状態では、一時格納用ＲＡＭ４０に格納した更新用ＲＡＭ３０のデータに更新タイミングの異なるデータが混在し、データの同時性が確保できないので、コピータスク２２はＳ４１２に処理を移行してコピー処理を再実行する。
【００３６】
Ｓ４１８の判定がＹｅｓであり、一時記憶エリアに退避していた更新開始カウンタ３２の値と現在の更新開始カウンタ３２の値とが一致する場合、コピータスク２２は、一時格納用ＲＡＭ４０に格納した更新用ＲＡＭ３０のデータの同時性が確保されていると判断する。そこで、Ｓ４２０においてコピータスク２２は、一時格納用ＲＡＭ４０に格納した更新用ＲＡＭ３０のデータを参照用ＲＡＭ４２に書き込む。
【００３７】
（３）参照処理
図５に示す参照処理は、参照タスク２４が参照用ＲＡＭ４２を参照するタイミングになり、参照タスク２４よりも優先度の高いコピータスク２２が実行中ではない場合に実行される。図５のＳ４３０において参照タスク２４は、参照中フラグ４４をオンに設定する。参照中フラグ４４がオンに設定されることにより、コピータスク２２はコピー処理を実行しない。Ｓ４３２において参照タスク２４は参照用ＲＡＭ４２のデータを参照する。
【００３８】
ここで、図６に示すように、コピータスク２２が更新用ＲＡＭ３０から変数Ａ、Ｂ、Ｃを取得して参照用ＲＡＭ４２の変数ａ、ｂ、ｃに書き込み、参照タスク２４が次式（１）からＸを算出する場合を例にして、各タスクの実行タイミングを説明する。尚、図６において、式（１）から算出されるＸの値は四捨五入されている。
【００３９】
Ｘ＝（ａ＋ｂ＋ｃ）／３      ・・・（１）
最初、更新用ＲＡＭ３０の変数Ａ、Ｂ、Ｃには、それぞれ１０、１５、４５が設定されている。図６に示す（１）のタイミングでコピータスク２２が実行されることにより、参照用ＲＡＭ４２の変数ａ、ｂ、ｃにそれぞれ１０、１５、４５が書き込まれる。コピータスク２２の実行終了後、（２）のタイミングで参照タスク２４は、参照用ＲＡＭ４２の変数ａ、ｂ、ｃを参照し、式（１）からＸ＝２３を算出する。
【００４０】
（３）のタイミングでコピータスク２２が実行されても、更新用ＲＡＭ３０の変数Ａ、Ｂ、Ｃの値が更新されていないので、参照用ＲＡＭ４２の変数ａ、ｂ、ｃの値は変化しない。
【００４１】
（４）のタイミングで参照タスク２４が実行されても、参照用ＲＡＭ４２の変数ａ、ｂ、ｃの値が変化していないので、Ｘ＝２３のままである。参照タスク２４が実行されている途中の（５）のタイミングで更新タスク１２が実行され、更新用ＲＡＭ３０の変数Ａ、Ｂ、Ｃの値が２０、３０、２９に更新されても、コピータスク２２が実行されないので、参照用ＲＡＭ４２の変数ａ、ｂ、ｃの値は変化しない。
【００４２】
（５）のタイミングで更新タスク１２が実行され、（６）のタイミングでコピータスク２２が実行されることにより、参照用ＲＡＭ４２の変数ａ、ｂ、ｃに２０、３０、２９が書き込まれる。
【００４３】
（７）のタイミングで更新タスク１２が実行され、更新タスク１２が実行されている途中の（８）のタイミングで参照タスク２４が実行されても、コピータスク２２が実行されないので、参照用ＲＡＭ４２の変数ａ、ｂ、ｃの値は２０、３０、２９のままである。したがって、参照タスク２４は式（１）からＸ＝２６を算出する。
【００４４】
（７）のタイミングで更新タスク１２が実行されてから、（９）のタイミングでコピータスク２２が実行されることにより、参照用ＲＡＭ４２の変数ａ、ｂ、ｃに３０、２２、８が書き込まれる。
【００４５】
（１０）のタイミングでコピータスク２２が実行されても、その前に更新タスク１２が実行されていないので、参照用ＲＡＭ４２の変数ａ、ｂ、ｃの値は３０、２２、８のままである。（１１）のタイミングで参照タスク２４は、式（１）からＸ＝２０を算出する。
【００４６】
次に、Ｓ４３２において参照用ＲＡＭ４２のデータを参照すると、Ｓ４３４において参照タスク２４は、参照中フラグ４４をオフに設定する。これにより、コピータスク２２の実行が可能になる。
【００４７】
［１−３．効果］
以上説明した第１実施形態によれば、以下の効果を得ることができる。
（１）更新タスク１２がデータを更新する更新用ＲＡＭ３０と、参照タスク２４が参照する参照用ＲＡＭ４２とを別のメモリにした。これにより、更新タスク１２が更新用ＲＡＭ３０のデータを更新しても、更新タスク１２は参照用ＲＡＭ４２のデータを更新しない。そして、参照タスク２４よりも優先度が高いコピータスク２２が更新用ＲＡＭ３０から参照用ＲＡＭ４２にデータを書き込んでいる間、参照タスク２４は実行されない。
【００４８】
したがって、更新タスク１２と参照タスク２４とが重複して実行されても、更新タスク１２による更新タイミングの異なる更新用ＲＡＭ３０のデータを、参照タスク２４が参照用ＲＡＭ４２から参照することを抑制できる。
【００４９】
（２）コピータスク２２と参照タスク２４とを実行する優先度は予め設定されているので、コピータスク２２の実行中に参照タスク２４の実行を禁止し、コピータスク２２の実行が終了すると参照タスク２４の実行を許可する処理を行う必要がない。これにより、処理負荷を極力低減して参照タスク２４の実行タイミングを調整できる。
【００５０】
（３）更新開始カウンタ３２の値と更新終了カウンタ３４の値とを比較することにより、更新タスク１２が更新用ＲＡＭ３０のデータを更新中であれば、コピータスク２２は更新用ＲＡＭ３０のデータを一時格納用ＲＡＭ４０に格納しない。
【００５１】
さらに、更新開始カウンタ３２の値の変化に基づいて、コピータスク２２が一時格納用ＲＡＭ４０にデータを格納中に更新タスク１２がデータを更新したと判定すると、コピータスク２２は一時格納用ＲＡＭ４０のデータを参照用ＲＡＭ４２に書き込まない。
【００５２】
このように、更新開始カウンタ３２の値と更新終了カウンタ３４の値とに基づいて、処理負荷を極力低減して、更新タスク１２による更新タイミングの異なるデータをコピータスク２２が参照用ＲＡＭ４２に書き込むことを抑制できる。
【００５３】
（４）参照中フラグ４４を設定することにより、処理負荷を極力低減して、参照タスク２４の実行中にコピータスク２２の実行を禁止できる。
（５）更新開始カウンタ３２の値と更新終了カウンタ３４の値の設定、ならびにコピータスク２２と参照タスク２４との予め設定された優先度、ならびに参照中フラグ４４の設定により、コピータスク２２と参照タスク２４との実行タイミングが調整される。
【００５４】
割り込み処理により調整する場合に比べ、コピータスク２２と参照タスク２４との実行タイミングの調整に要する処理負荷を極力低減できる。さらに、コピータスク２２と参照タスク２４との実行タイミングを調整するための処理部が不要である。
【００５５】
［２．第２実施形態］
［２−１．構成］
図７に示す第２実施形態のデータ処理装置４は、第１実施形態のデータ処理装置２に対し、さらにコア５０と、一時格納用ＲＡＭ６０と、参照用ＲＡＭ６２と、参照中フラグ６４とを備えている。つまり、参照タスク２４、５４毎に、参照中フラグ４４、６４がそれぞれ備えられている。
【００５６】
尚、第２実施形態において第１実施形態と同じ符号は同一の構成を示すものであって、詳細については先行する説明を参照するものとする。
第２プロセッサコアに対応するコア５０は、コア２０と同様にコピータスク５２と参照タスク５４とを実行する。コピータスク５２が実行するコピー処理は、コピータスク２２が実行するコピー処理と実質的に同一である。参照タスク５４が実行する参照処理は、参照タスク２４が実行する参照処理と実質的に同一である。
【００５７】
一時格納用ＲＡＭ４０と一時格納用ＲＡＭ６０、参照用ＲＡＭ４２と参照用ＲＡＭ６２、参照中フラグ４４と参照中フラグ６４のそれぞれの機能は実質的に同一である。
そして、コア２０とコア５０とはそれぞれ独立してコア毎にタスクを実行する。
【００５８】
［２−２．効果］
データ処理装置４が第２プロセッサコアとして２個のコア２０、５０を備えても、コア１０とコア２０、ならびにコア１０とコア５０との関係において、第１実施形態の効果（１）〜（５）と同様の効果を得ることができる。
【００５９】
［３．第３実施形態］
［３−１．構成］
図８に示す第３実施形態のデータ処理装置６では、第１実施形態の参照中フラグ４４に代えて参照中カウンタ８２を備え、コア２０に代えてコア７０を備えている。参照用ＲＡＭ８０は第１実施形態の参照用ＲＡＭ４２に対応する。
【００６０】
尚、第３実施形態において第１実施形態と同じ符号は同一の構成を示すものであって、詳細については先行する説明を参照するものとする。
コア７０は、コピータスク７２と、２個の参照タスク７４、７６とを実行する。コピータスク７２の優先度は参照タスク７４、７６の優先度よりも高い。参照タスク７４の優先度は参照タスク７６の優先度よりも高い。コピータスク７２が実行するコピー処理は、コピータスク２２が実行するコピー処理と実質的に同一である。参照タスク７４、７６が実行する参照処理は、参照したデータの処理内容が異なっている。
【００６１】
［３−２．処理］
（１）参照処理
図９に示す参照処理は、参照タスク７４、７６が参照用ＲＡＭ８０を参照するタイミングになり、コピータスク７２が実行中ではない場合に実行される。参照タスク７６よりも優先度の高い参照タスク７４が実行中は、参照タスク７６は実行されない。
【００６２】
図９のＳ４４０において参照タスク７４、７６は、参照中カウンタ８２の値を＋１する。参照中カウンタ８２の初期値は例えば０である。
参照中カウンタ８２の値が０ではない場合、参照タスク７４、７６のいずれかが参照用ＲＡＭ８０を参照していることを表している。この場合、コピータスク７２はコピー処理を実行しない。
【００６３】
参照タスク７６が実行中に参照タスク７６よりも優先度の高い参照タスク７４が起動されると、参照中カウンタ８２の値は＋１されて２になる。
Ｓ４４２において参照タスク７４、７６は、参照用ＲＡＭ８０のデータを参照する。参照用ＲＡＭ８０のデータの参照が終了すると、Ｓ４４４において参照タスク７４、７６は参照中カウンタ８２を−１する。
【００６４】
（２）コピー処理
図１０に示すコピー処理は、更新用ＲＡＭ３０のデータを参照用ＲＡＭ８０にコピーするタイミングになるとコピータスク７２により実行される。図１０のＳ４５０においてコピータスク７２は、参照中カウンタ８２が０であるか否かを判定する。
【００６５】
Ｓ４５０の判定がＮｏであり、参照中カウンタ８２の値が０ではない場合、参照タスク７４、７６の少なくとも一方が参照用ＲＡＭ８０を参照中であることを表している。この場合、参照タスク７４、７６が参照用ＲＡＭ８０を参照中にコピータスク７２が更新用ＲＡＭ３０のデータを取得して参照用ＲＡＭ８０に書き込むことを抑制するために、コピータスク７２は本処理を終了する。
【００６６】
Ｓ４５０の判定がＹｅｓであり、参照タスク７４、７６のいずれも参照用ＲＡＭ８０を参照中ではない場合、コピータスク７２はＳ４５２〜Ｓ４６０の処理を実行する。Ｓ４５２〜Ｓ４６０の処理は、第１実施形態のＳ４１２〜Ｓ４２０の処理と実質的に同一であるから説明を省略する。
【００６７】
［３−３．効果］
以上説明した第３実施形態では、第１実施形態の効果（１）〜（５）において参照中フラグ４４を参照中カウンタ８２に代えて得られる効果に加え、以下の効果を得ることができる。
【００６８】
参照中カウンタ８２の値を参照タスク７４、７６のそれぞれが増加および減少することにより、コア７０が複数の参照タスク７４、７６を実行しても、参照タスク７４、７６の少なくともいずれかが実行中であることを容易に判定できる。
【００６９】
［４．第４実施形態］
［４−１．構成］
図１１に示す第４実施形態のデータ処理装置８は、第１実施形態のデータ処理装置２に対し、さらに第３実施形態で説明したコア７０と、コア７０に対応して、一時格納用ＲＡＭ８４と、参照用ＲＡＭ８０と、参照中カウンタ８２とを備えている。一時格納用ＲＡＭ８４と、参照用ＲＡＭ８０と、参照中カウンタ８２は、第３実施形態の一時格納用ＲＡＭ４０と、参照用ＲＡＭ８０と、参照中カウンタ８２とに対応している。
【００７０】
尚、第４実施形態において第１実施形態および第３実施形態と同じ符号は同一の構成を示すものであって、詳細については先行する説明を参照するものとする。
そして、コア２０とコア７０とはそれぞれ独立してコア毎にタスクを実行する。
【００７１】
［４−２．効果］
データ処理装置８が第２プロセッサコアとして２個のコア２０、７０を備え、コア７０が優先度の異なる２個の参照タスク７４、７６を実行する。したがって、第２実施形態と第３実施形態とを合わせた効果を得ることができる。
【００７２】
以上説明した上記実施形態において、コア１０が第１プロセッサコアに対応し、コア２０、５０、７０が第２プロセッサコアに対応する。さらに、更新用ＲＡＭ３０が更新用メモリに対応し、一時格納用ＲＡＭ４０、６０、８４が一時格納用メモリに対応し、参照用ＲＡＭ４２、６２、８０が参照用メモリに対応する。
【００７３】
また、上記実施形態において、Ｓ４００〜Ｓ４０４が更新タスク１２としての処理に対応し、Ｓ４１０〜Ｓ４２０がコピータスク２２としての処理に対応し、Ｓ４３０〜Ｓ４３２が参照タスク２４としての処理に対応し、Ｓ４４０〜Ｓ４４４が参照タスク７４、７６としての処理に対応し、Ｓ４５０〜Ｓ４６０がコピータスク７２としての処理に対応する。
【００７４】
［５．他の実施形態］
（１）上記実施形態では、データ処理装置が複数の第２プロセッサコアを備える場合、２個の第２プロセッサコアを例示した。これに対し、データ処理装置が備える複数の第２プロセッサコアは３個以上でもよい。
【００７５】
（２）上記実施形態では、コピータスクが更新用ＲＡＭ３０のデータを一時格納用ＲＡＭに格納する前か、一時格納用ＲＡＭに格納中に更新タスク１２が更新用ＲＡＭ３０のデータを更新すると、コピータスクはコピー処理を再実行する。
【００７６】
これに対し、コピータスクが更新用ＲＡＭ３０のデータを一時格納用ＲＡＭに格納する前か一時格納用ＲＡＭに格納中に更新タスク１２が更新用ＲＡＭ３０のデータを更新すると、コピータスクは今回のコピー処理を終了してもよい。
【００７７】
（３）上記第３実施形態では、参照タスク７４、７６の少なくともいずれかが参照用ＲＡＭ４２を参照中であるか否かを参照中カウンタ８２の値を増加および減少することにより表した。これに対し、参照用ＲＡＭ４２を参照中であるか否かを表す参照中フラグを参照タスク７４、７６のそれぞれに設けてもよい。
【００７８】
（４）上記第３実施形態では、第２プロセッサコアに対応するコア７０は、優先度の異なる２個の参照タスク７４、７６を実行した。これに対し、一つの第２プロセッサコアが、複数の参照タスクとして優先度の異なる３個以上の参照タスクを実行してもよい。
【００７９】
（５）上記第３実施形態では、第２プロセッサコアに対応する一つのコア７０が優先度の異なる２個の参照タスク７４、７６を実行した。これに対し、２個以上の第２プロセッサコアが優先度の異なる複数の参照タスクを実行してもよい。この場合、複数の参照タスクを実行する第２プロセッサ毎に参照中カウンタが備えられる。
【００８０】
（６）上記実施形態における一つの構成要素が有する複数の機能を複数の構成要素によって実現したり、一つの構成要素が有する一つの機能を複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を一つの構成要素によって実現したり、複数の構成要素が有する一つの機能を一つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。尚、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
【００８１】
（７）上述したデータ処理装置の他、当該データ処理装置としてコンピュータを機能させるためのデータ処理プログラム、このデータ処理プログラムを記録した記録媒体、データ処理方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００８２】
２〜８：データ処理装置、１０：コア（第１プロセッサコア）、１２：更新タスク、２０、５０、７０：コア（第２プロセッサコア）、２２、５２、７２：コピータスク、２４、５４、７４、７６：参照タスク、３０：更新用ＲＡＭ（更新用メモリ）、３２：更新開始カウンタ、３４：更新終了カウンタ、４０、６０、８４：一時格納用ＲＡＭ（一時格納用メモリ）、４２、６２、８０：参照用ＲＡＭ（参照用メモリ）、４４、６４：参照中フラグ、８２：参照中カウンタ
【図１】
2017130140.tif 000003
【図２】
2017130140.tif 000004
【図３】
2017130140.tif 000005
【図４】
2017130140.tif 000006
【図５】
2017130140.tif 000007
【図６】
2017130140.tif 000008
【図７】
2017130140.tif 000009
【図８】
2017130140.tif 000010
【図９】
2017130140.tif 000011
【図１０】
2017130140.tif 000012
【図１１】
2017130140.tif 000013