(57)【要約】【課題】２つの更新処理を並列に実行する場合において、メモリのデータ領域に記憶されているデータを適正に更新する。【解決手段】メモリは、データを記憶可能な少なくとも４つのデータ領域を有し、少なくとも３つのプロセッサコアのうちの２つのプロセッサコアは、データ領域に記憶されているデータを更新する更新処理を実行し、更新処理を実行する２つのプロセッサコアのうちの１つのプロセッサコアである所定プロセッサコアは、少なくとも４つのデータ領域のうち、所定プロセッサコアとは異なるプロセッサコアで実行される処理の対象となっていない対象外データ領域に対して更新処理を実行する。【選択図】図２
2019101951.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも３つのプロセッサコアを有するマルチコアプロセッサと、
前記少なくとも３つのプロセッサコアからアクセス可能なメモリと、
を備える情報処理装置であって、
前記メモリは、データを記憶可能な少なくとも４つのデータ領域を有し、
前記少なくとも３つのプロセッサコアのうちの２つのプロセッサコアは、前記データ領域に記憶されているデータを更新する更新処理を実行し、
前記更新処理を実行する２つのプロセッサコアのうちの１つのプロセッサコアである所定プロセッサコアは、前記少なくとも４つのデータ領域のうち、前記所定プロセッサコアとは異なるプロセッサコアで実行される処理の対象となっていない対象外データ領域に対して前記更新処理を実行する、
情報処理装置。
【請求項２】
請求項１記載の情報処理装置であって、
前記メモリは、前記各データ領域に対して実行される処理毎に前記少なくとも４つのデータ領域のうち処理の対象となっているデータ領域を示す複数のインデックスを記憶するインデックス領域を有し、
前記所定プロセッサコアは、前記少なくとも４つのデータ領域のうち前記複数のインデックスで示されていないデータ領域を前記対象外データ領域として前記複数のインデックスのうちの１つのインデックスに書き込んだ後に、前記対象外データ領域に対して前記更新処理を実行する、
情報処理装置。
【請求項３】
請求項２記載の情報処理装置であって、
前記複数のインデックスは、前記更新処理を実行中であるデータ領域を示す第１インデックスと、前記データ領域に記憶されているデータを参照する処理が実行中であるデータ領域を示す第２インデックスと、前記データ領域に異常が生じているか否かを判定する異常判定処理の実行の対象であるデータ領域を示す第３インデックスと、直近に前記更新処理が完了しているデータ領域を示す第４インデックスと、を含み、
前記対象外データ領域は、前記第２〜第４インデックスの全てが示さないデータ領域である、
情報処理装置。
【請求項４】
請求項３記載の情報処理装置であって、
前記所定プロセッサコアは、前記更新処理が完了したときには、前記第４インデックスが前記更新処理の対象となったデータ領域を示すように前記第４インデックスを更新する処理を実行する、
情報処理装置。
【請求項５】
請求項１ないし４のいずれか１つの請求項に記載の情報処理装置であって、
前記更新処理を実行する２つのプロセッサコアのうち前記所定プロセッサコアと異なるプロセッサコアは、前記データ領域に異常が生じているか否かを検出する異常検出処理を、前記少なくとも４つのデータ領域に対して順次実行する、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
従来、この種の情報処理装置としては、マルチコアＣＰＵと、メモリ（ＲＡＭ）と、を備えるものが提案されている（例えば、特許文献１参照）。メモリは、複数のデータ領域（ブロック）を備えている。この情報処理装置では、マルチコアＣＰＵは、メモリの複数のデータ領域のうちのいずれか１つのデータ領域に記憶されたデータを更新する更新処理と、データを更新しているブロックとは異なるブロックに記憶されているデータを参照する参照処理と、を並行して実行する。これにより、２つの処理（更新処理および参照処理）のうちの一方の処理の終了を待って他方の処理を実行するものに比して、処理時間の短縮を図っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１１００６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の情報処理装置では、１つの更新処理と参照処理とを並列に実行している。しかしながら、２つの更新処理と他の処理（例えば、参照処理など）とを並列に実行しようとすると、２つの更新処理のうち一方の更新処理と他の処理とを並列に実行できても、他方の更新処理の対象となるデータ領域と他の処理の対象となるデータ領域とが競合してしまい、適正にデータの更新ができなくなる場合がある。
【０００５】
本発明の情報処理装置は、２つの更新処理を並列に実行する場合において、メモリのデータ領域に記憶されているデータを適正に更新することを主目的とする。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は、上述の主目的を達成するために以下の手段を採った。
【０００７】
本発明の情報処理装置は、
少なくとも３つのプロセッサコアを有するマルチコアプロセッサと、
前記少なくとも３つのプロセッサコアからアクセス可能なメモリと、
を備える情報処理装置であって、
前記メモリは、データを記憶可能な少なくとも４つのデータ領域を有し、
前記少なくとも３つのプロセッサコアのうちの２つのプロセッサコアは、前記データ領域に記憶されているデータを更新する更新処理を実行し、
前記更新処理を実行する２つのプロセッサコアのうちの１つのプロセッサコアである所定プロセッサコアは、前記少なくとも４つのデータ領域のうち、前記所定プロセッサコアとは異なるプロセッサコアで実行される処理の対象となっていない対象外データ領域に対して前記更新処理を実行する、
ことを要旨とする。
【０００８】
この本発明の情報処理装置では、メモリは、データを記憶可能な少なくとも４つのデータ領域を有する。少なくとも３つのプロセッサコアのうちの２つのプロセッサコアは、データ領域に記憶されているデータを更新する更新処理を実行する。そして、更新処理を実行する２つのプロセッサコアのうちの１つのプロセッサコアである所定プロセッサコアは、少なくとも４つのデータ領域のうち、所定プロセッサコアとは異なるプロセッサコアの処理の対象となっていない対象外データ領域に対して更新処理を実行する。これにより、所定プロセッサコアとは異なるプロセッサコアの処理の対象となるデータ領域と所定プロセッサコアの更新処理の対象なるデータ領域とが競合しないから、所定プロセッサコアでメモリのデータ領域に記憶されているデータを適正に更新することができる。
【０００９】
こうした本発明の情報処理装置において、前記メモリは、前記各データ領域に対して実行される処理毎に前記少なくとも４つのデータ領域のうち処理の対象となっているデータ領域を示す複数のインデックスを記憶するインデックス領域を有し、前記所定プロセッサコアは、前記少なくとも４つのデータ領域のうち前記複数のインデックスで示されていないデータ領域を前記対象外データ領域として前記複数のインデックスのうちの１つのインデックスに書き込んだ後に、前記対象外データ領域に対して前記更新処理を実行してもよい。これにより、メモリのデータ領域に記憶されているデータを適正に更新することができる。
【００１０】
メモリがインデックス領域を有する態様の本発明の情報処理装置において、前記複数のインデックスは、前記更新処理を実行中であるデータ領域を示す第１インデックスと、前記データ領域に記憶されているデータを参照する処理が実行中であるデータ領域を示す第２インデックスと、前記データ領域に異常が生じているか否かを判定する異常判定処理の実行の対象であるデータ領域を示す第３インデックスと、直近に前記更新処理が完了しているデータ領域を示す第４インデックスと、を含み、前記対象外データ領域は、前記第２〜第４インデックスの全てが示さないデータ領域としてもよい。こうすれば、より適正に、対象外データ領域を設定することができる。この場合において、前記所定プロセッサコアは、前記更新処理が完了したときに、前記更新処理の対象となったデータ領域を、前記第４インデックスに記憶させる処理を実行してもよい。
【００１１】
また、本発明情報処理装置において、前記更新処理を実行する２つのプロセッサコアのうち前記所定プロセッサコアと異なるプロセッサコアは、前記データ領域に異常が生じているか否かを検出する異常検出処理を、前記少なくとも４つのデータ領域に対して順次実行してもよい。こうすれば、メモリのデータ領域に記憶されているデータを更新しながら、異常検出処理を実行することができる。この場合において、前記異常検出処理は、実行に要する時間が、前記更新処理の実行に要する時間より長くてもよい。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施例としての情報処理装置を搭載したモータ装置２０の構成の概略を示す構成図である。
【図２】プロセッサコア３４ａにより実行される更新処理ルーチンの一例を示すフローチャートである。
【図３】プロセッサコア３４ｂにより実行される参照処理ルーチンの一例を示すフローチャートである。
【図４】プロセッサコア３４ｃにより実行される異常検出処理ルーチンの一例を示すフローチャートである。
【図５】インバータ２４のＰＷＭ制御に用いられる三角波の波形とデータ領域Ｒ１〜Ｒ４に記憶されているデータとインデックス領域Ｒ５に記憶されている各インデックスとの時間変化の一例を示すタイミングチャートである。
【発明を実施するための形態】
【００１３】
次に、本発明を実施するための形態を実施例を用いて説明する。
【実施例】
【００１４】
図１は、本発明の一実施例としての情報処理装置を搭載したモータ装置２０の構成の概略を示す構成図である。モータ装置２０は、モータ２２と、インバータ２４と、電源２８と、マルチコアマイコン３０と、を備える。こうしたモータ装置２０は、例えば、モータ２２からの動力で走行する電気自動車などに搭載される。
【００１５】
モータ２２は、同期発電電動機として構成されており、永久磁石が埋め込まれた回転子と、三相コイルが巻回された固定子と、を備える。
【００１６】
インバータ２４は、モータ２２に接続されると共に電力ライン２６に接続されている。インバータ２４は、パワー半導体素子である図示しない複数のトランジスタ（スイッチング素子）を備えている。モータ２２は、電力ライン２６に電圧が作用しているときに、マルチコアマイコン３０によってインバータ２４の複数のトランジスタがスイッチング制御されることにより、回転駆動される。
【００１７】
電源２８は、例えば定格電圧が２００Ｖや２５０Ｖなどのリチウムイオン二次電池やニッケル水素二次電池として構成されており、電力ライン２６に接続されている。
【００１８】
マルチコアマイコン３０は、マルチコアプロセッサ３２と、共有メモリ４０と、を備える。マルチコアマイコン３０は、その他に、図示しない処理プログラムや各種マップ等を記憶するＲＯＭや入出力ポートを備える。
【００１９】
マルチコアプロセッサ３２は、中央処理演算装置（ＣＰＵ）として機能し、プロセッサコア３４ａ〜３４ｃと、レジスタ３６と、を備える。プロセッサコア３４ａ〜３４ｃは、バス５０を介して、レジスタ３６や共有メモリ４０とデータをやり取りしたり、共有メモリ４０に各種処理要求を出力している。
【００２０】
共有メモリ４０は、データ領域Ｒ１〜Ｒ４と、インデックス領域Ｒ５と、を有するランダムアクセスメモリとして構成されている。データ領域Ｒ１〜Ｒ４は、マルチコアプロセッサ３２から入力されたデータを記憶する。インデックス領域Ｒ５は、データ領域に対して実行される処理毎に処理対象となっているデータ領域を示す４つのインデックスを記憶している。４つのインデックスとしては、実施例では、「ＷｒｉｔｅＮｏｗ」，「Ｒｅａｄ」，「Ｃｈｅｃｋ」，「ＷｒｉｔｅＣｏｍｐ」を挙げることができる。「ＷｒｉｔｅＮｏｗ」は、データを更新する更新処理の対象となっているデータ領域を示している。「Ｒｅａｄ」は、データ領域Ｒ１〜Ｒ４のうちマルチコアプロセッサ３２からデータの参照処理が行なわれているデータ領域を示している。「Ｃｈｅｃｋ」は、データ領域Ｒ１〜Ｒ４のうちマルチコアプロセッサ３２から異常判定処理が行なわれているデータ領域を示している。「ＷｒｉｔｅＣｏｍｐ」は、データ領域Ｒ１〜Ｒ４のうち直近にデータの更新処理が完了している（直前の更新処理において更新の対象となっていた）データ領域を示している。「ＷｔｒｉｔｅＮｏｗ」，「Ｒｅａｄ」，「Ｃｈｅｃｋ」，「ＷｒｉｔｅＣｏｍｐ」は、値１〜値４に設定される。値１〜値４は、データ領域Ｒ１〜Ｒ４を示している。
【００２１】
次に、こうして構成されたモータ装置２０の動作、特に、マルチコアプロセッサ３２のプロセッサコア３４ａ〜３４ｃの動作について説明する。最初に、プロセッサコア３４ａの動作について説明し、その後、プロセッサコア３４ｂ，３４ｃの動作について順に説明する。
【００２２】
プロセッサコア３４ａは、モータ２２の制御処理を実行する。モータ２２の制御処理では、プロセッサコア３４ａは、回転位置検出センサ２２ａからモータ２２の回転子の回転位置θｍを入力すると共に電流センサ２２ｂ，２２ｃからモータ２２の相電流Ｉｕ，Ｉｖを入力し、モータ２２がトルク指令Ｔｍ＊で駆動されるように、入力した回転位置θｍやモータ２２の相電流Ｉｕ，Ｉｖを用いてパルス幅変調制御（ＰＷＭ制御）によりインバータ２４の複数のトランジスタをスイッチング制御する。モータ２２の制御処理は、第１時間毎（例えば、５０μｓｅｃ毎）に繰り替えし実行される。プロセッサコア３４ａは、共有メモリ４０のデータ領域Ｒ１〜Ｒ４のいずれかに記憶されているデータを、制御処理で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータに更新する。図２は、プロセッサコア３４ａにより実行される更新処理ルーチンの一例を示すフローチャートである。更新処理ルーチンは、モータ２２の制御処理でプロセッサコア３４ａが回転位置θｍと相電流Ｉｕ，Ｉｖとを入力する毎に、即ち、第１時間毎に、プロセッサコア３４ａにより繰り返し実行される。
【００２３】
更新処理ルーチンが実行されると、プロセッサコア３４ａは、回転位置検出センサ２２ａからモータ２２の回転子の回転位置θｍを入力すると共に電流センサ２２ｂ，２２ｃからモータ２２の相電流Ｉｕ，Ｉｖを入力する処理を実行し（ステップＳ５０）、共有メモリ４０のインデックス領域Ｒ５に記憶されているインデックスのうち「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の値を参照して（読み出して）、「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」に値１が記憶されているか否かを判定する（ステップＳ１００）。
【００２４】
ステップＳ１００で、「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の全ての値が値１ではないとき、すなわち、データ領域Ｒ１が異常判定処理および参照処理の対象となっておらず、且つ、直近にデータの更新処理が完了していない（直前の更新処理ルーチンにおけるデータの更新の対象となっていない）対象外領域であるときには、共有メモリ４０のインデックス領域Ｒ５の「ＷｒｉｔｅＮｏｗ」を値１に更新する（ステップＳ１１０）。この処理は、プロセッサコア３４ａが、共有メモリ４０にデータの更新要求とインデックス領域Ｒ５の「ＷｒｉｔｅＮｏｗ」のアドレスと値１とを共有メモリ４０に送信することで行なわれる。データの更新要求とインデックス領域Ｒ５の「ＷｒｉｔｅＮｏｗ」のアドレスと値１とを受信した共有メモリ４０は、インデックス領域Ｒ５の「ＷｒｉｔｅＮｏｗ」に記憶されている値を値１に更新する処理を実行する。
【００２５】
続いて、データ領域Ｒ１に記憶されているデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータに更新する（ステップＳ１２０）。この処理は、プロセッサコア３４ａが、データの更新要求とデータ領域Ｒ１のアドレスとデータとを共有メモリ４０に送信することで行なわれる。データの更新要求とデータ領域Ｒ１のアドレスとデータとを受信した共有メモリ４０は、データ領域Ｒ１に記憶されているデータを受信したデータに更新する処理を実行する。
【００２６】
こうしてデータ領域Ｒ１に記憶されているデータを更新する処理を実行したら、「ＷｒｉｔｅＣｏｍｐ」を値１に更新して（ステップＳ１３０）、更新処理ルーチンを終了する。この処理は、プロセッサコア３４ａが、データの更新要求とインデックス領域Ｒ５の「ＷｒｉｔｅＣｏｍｐ」のアドレスと値１とを共有メモリ４０に送信することで行なわれる。データの更新要求とインデックス領域Ｒ５の「ＷｒｉｔｅＣｏｍｐ」のアドレスと値１とを受信した共有メモリ４０は、インデックス領域Ｒ５の「ＷｒｉｔｅＣｏｍｐ」に記憶されている値を値１に更新する処理を実行する。これらの処理により、データ領域Ｒ１〜Ｒ４のうち、異常判定処理および参照処理の対象となっておらず、且つ、直近にデータの更新処理が完了していない（直前の更新処理ルーチンにおけるデータの更新の対象となっていない）対象外領域であるデータ領域Ｒ１に記憶されているデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータへ更新することができる。
【００２７】
ステップＳ１００の処理で、「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の少なくとも１つの値が値１であるとき、すなわち、データ領域Ｒ１が異常判定処理または参照処理の対象となっていたり、直近にデータの更新処理が完了している（直前の更新処理ルーチンにおけるデータの更新の対象となっている）ときには、続いて、ステップＳ１００と同様の処理で、共有メモリ４０のインデックス領域Ｒ５に記憶されているインデックスのうち「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の値を参照して「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」に値２が記憶されているか否かを判定する（ステップＳ１４０）。「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の全ての値が値２ではないとき、すなわち、データ領域Ｒ２が異常判定処理および参照処理の対象となっておらず、且つ、直近にデータの更新処理が完了していない（直前の更新処理ルーチンにおけるデータの更新の対象となっていない）対象外領域であるときには、ステップＳ１１０と同様の処理で、共有メモリ４０のインデックス領域Ｒ５の「ＷｒｉｔｅＮｏｗ」を値２に更新し（ステップＳ１５０）、ステップＳ１２０と同様の処理で、データ領域Ｒ２に記憶されているデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータへ更新し（ステップＳ１６０）、ステップＳ１３０と同様の処理で、「ＷｒｉｔｅＣｏｍｐ」を値２に更新して（ステップＳ１７０）、更新処理ルーチンを終了する。これらの処理により、データ領域Ｒ１〜Ｒ４のうち、異常判定処理および参照処理の対象となっておらず、且つ、直近にデータの更新処理が完了していない（直前の更新処理ルーチンにおけるデータの更新の対象となっていない）対象外領域であるデータ領域Ｒ２のデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータへ更新することができる。
【００２８】
ステップＳ１４０の処理で、「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の少なくとも１つの値が値２であるとき、すなわち、データ領域Ｒ１が異常判定処理または参照処理の対象となっていたり、直近にデータの更新処理が完了している（直前の更新処理ルーチンにおけるデータの更新の対象となっている）ときには、続いて、ステップＳ１００と同様の処理で、共有メモリ４０のインデックス領域Ｒ５に記憶されているインデックスのうち「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の値を参照して「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」に値３が記憶されているか否かを判定する（ステップＳ１８０）。「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の全てが値３ではないとき、すなわち、データ領域Ｒ３が異常判定処理および参照処理の対象となっておらず、且つ、直近にデータの更新処理が完了していない（直前の更新処理ルーチンにおけるデータの更新の対象となっていない）対象外領域であるときには、ステップＳ１１０と同様の処理で、共有メモリ４０のインデックス領域Ｒ５の「ＷｒｉｔｅＮｏｗ」を値３に更新し（ステップＳ１９０）、ステップＳ１２０と同様の処理で、データ領域Ｒ３に記憶されているデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータへ更新し（ステップＳ２００）、ステップＳ１３０と同様の処理で、「ＷｒｉｔｅＣｏｍｐ」を値３に更新して（ステップＳ２１０）、更新処理ルーチンを終了する。これらの処理により、データ領域Ｒ１〜Ｒ４のうち、異常判定処理および参照処理の対象となっておらず、且つ、直近にデータの更新処理が完了していない（直前の更新処理ルーチンにおけるデータの更新の対象となっていない）対象外領域であるデータ領域Ｒ３のデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータへ更新することができる。
【００２９】
ステップＳ１８０の処理で、「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の少なくとも１つの値が値３であるとき、すなわち、データ領域Ｒ３が異常判定処理または参照処理の対象となっていたり、直近にデータの更新処理が完了している（直前の更新処理ルーチンにおけるデータの更新の対象となっている）ときには、ステップＳ１１０と同様の処理で、共有メモリ４０のインデックス領域Ｒ５の「ＷｒｉｔｅＮｏｗ」を値４に更新し（ステップＳ２２０）、ステップＳ１２０と同様の処理で、データ領域Ｒ４に記憶されているデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータへ更新し（ステップＳ２３０）、ステップＳ１３０と同様の処理で、「ＷｒｉｔｅＣｏｍｐ」を値４に更新して（ステップＳ２４０）、更新処理ルーチンを終了する。これらの処理により、データ領域Ｒ１〜Ｒ４のうち、異常判定処理および参照処理の対象となっておらず、且つ、直近にデータの更新処理が完了していない（直前の更新処理ルーチンにおけるデータの更新の対象となっていない）対象外領域であるデータ領域Ｒ４のデータをステップＳ５０で入力した回転位置θｍ，相電流Ｉｕ，Ｉｖのデータへ更新することができる。
【００３０】
次に、プロセッサコア３４ｂの動作について説明する。プロセッサコア３４ｂは、回転位置検出センサ２２ａや電流センサ２２ｂ，２２ｃの異常を判定するセンサ異常判定処理を実行する。センサ異常判定処理は、回転位置θｍ，相電流Ｉｕ，Ｉｖの値が回転位置検出センサ２２ａや電流センサ２２ｂ，２２ｃが正常である場合に通常とり得る値の範囲外であるときには、範囲外の値を検出するセンサに異常が生じていると判定することで行なわれる。回転位置θｍ，相電流Ｉｕ，Ｉｖの値は、共有メモリ４０に記憶されている回転位置θｍ，相電流Ｉｕ，Ｉｖのデータを参照する。ここで、共有メモリ４０に記憶されている回転位置θｍ，相電流Ｉｕ，Ｉｖのデータを参照する参照処理について説明する。図３は、プロセッサコア３４ｂにより実行される参照処理ルーチンの一例を示すフローチャートである。このルーチンは、第１時間より長い第２時間毎（例えば、１０ｍｓｅｃ毎など）に実行される。
【００３１】
参照処理ルーチンが実行されると、プロセッサコア３４ｂは、共有メモリ４０のインデックス領域Ｒ５に記憶されているインデックスのうち「ＷｒｉｔｅＣｏｍｐ」の値を参照する（読み出す）処理を実行する（ステップＳ３００）。この処理は、プロセッサコア３４ｂが、共有メモリ４０にデータの参照要求とインデックス領域Ｒ５の「ＷｒｉｔｅＣｏｍｐ」のアドレスとを共有メモリ４０へ送信することで行なわれる。データの参照要求とインデックス領域Ｒ５の「ＷｒｉｔｅＣｏｍｐ」のアドレスとを受信した共有メモリ４０は、記憶しているインデックス領域Ｒ５の「ＷｒｉｔｅＣｏｍｐ」の値をプロセッサコア３４ｂに送信する処理を実行する。
【００３２】
共有メモリ４０からのインデックス領域Ｒ５の「ＷｒｉｔｅＣｏｍｐ」の値を受信したプロセッサコア３４ｂは、共有メモリ４０のインデックス領域Ｒ５に記憶されているインデックスのうち「Ｒｅａｄ」の値を更新する（ステップＳ３１０）。この処理は、プロセッサコア３４ｂが、データの更新要求とインデックス領域Ｒ５の「Ｒｅａｄ」のアドレスと受信した「ＷｒｉｔｅＣｏｍｐ」の値とを共有メモリ４０に送信することで行なわれる。データの更新要求とインデックス領域Ｒ５の「Ｒｅａｄ」のアドレスと受信した「ＷｒｉｔｅＣｏｍｐ」の値とを受信した共有メモリ４０は、インデックス領域Ｒ５の「Ｒｅａｄ」に記憶されている値を受信した「ＷｒｉｔｅＣｏｍｐ」の値に更新する処理を実行する。「ＷｒｉｔｅＣｏｍｐ」は、データ領域Ｒ１〜Ｒ４のうち直近に更新処理が完了している（プロセッサコア３４ｂが本ルーチンのステップＳ３００を実行したときにプロセッサコア３４ａに完了していたデータの更新の対象となっていた）データ領域を示しているから、ステップＳ１３０の処理は、「Ｒｅａｄ」の値をデータ領域Ｒ１〜Ｒ４のうち直近に更新処理が完了しているデータ領域を示す値に更新する処理となる。
【００３３】
こうして「Ｒｅａｄ」の値を更新したら、データ領域Ｒ１〜Ｒ４のうち共有メモリ４０のインデックス領域Ｒ５の「Ｒｅａｄ」の値に対応する領域のデータを参照して（読み出して）（ステップＳ３２０）、参照処理ルーチンを終了する。この処理は、プロセッサコア３４ｂが、データの参照要求とインデックス領域Ｒ５の「Ｒｅａｄ」のアドレスとを共有メモリ４０へ送信することで行なわれる。データの参照要求とインデックス領域Ｒ５の「Ｒｅａｄ」のアドレスとを受信した共有メモリ４０は、記憶しているインデックス領域Ｒ５の「Ｒｅａｄ」の値をプロセッサコア３４ｂに送信する処理を実行する。共有メモリ４０からの「Ｒｅａｄ」の値を受信したプロセッサコア３４ｂは、共有メモリ４０にデータの参照要求とデータ領域Ｒ１〜Ｒ４のうち受信した「Ｒｅａｄ」の値に対応するデータ領域のアドレスとを送信する。データの参照要求と「Ｒｅａｄ」の値に対応するデータ領域のアドレスとを受信した共有メモリ４０は、「Ｒｅａｄ」の値に対応するデータ領域に記憶されているデータをプロセッサコア３４ｂに送信する。こうした処理により、プロセッサコア３４ｂは、データ領域Ｒ１〜Ｒ４のうち直近に更新処理が完了しているデータ領域のデータ（回転位置θｍ，相電流Ｉｕ，Ｉｖ）を参照して、回転位置検出センサ２２ａや電流センサ２２ｂ，２２ｃに異常が生じているか否かを判定することができる。
【００３４】
次に、プロセッサコア３４ｃの動作について説明する。プロセッサコア３４ｃは、共有メモリ４０のデータ領域Ｒ１〜Ｒ４の更新を伴ってデータ領域Ｒ１〜Ｒ４に異常が生じているか否かを判定するメモリの異常検出処理を実行する。メモリの異常検出処理は、第２時間より長い第３時間毎（例えば、３０ｍｓｅｃ毎など）に実行される。図４は、プロセッサコア３４ｃにより実行される異常検出処理ルーチンの一例を示すフローチャートである。このルーチンは、第３時間毎に繰り返し実行される。
【００３５】
異常検出処理ルーチンが実行されると、プロセッサコア３４ｃは、共有メモリ４０のインデックス領域Ｒ５に記憶されているインデックスのうち「Ｃｈｅｃｋ」の値を参照する（読み出す）処理を実行する（ステップＳ４００）。この処理は、プロセッサコア３４ｃが、データの参照要求とインデックス領域Ｒ５の「Ｃｈｅｃｋ」のアドレスとを共有メモリ４０に送信することで行なわれる。データの参照要求とインデックス領域Ｒ５の「Ｃｈｅｃｋ」のアドレスとを受信した共有メモリ４０は、記憶しているインデックス領域Ｒ５の「Ｃｈｅｃｋ」の値をプロセッサコア３４ｃに送信する処理を実行する。
【００３６】
プロセッサコア３４ｃは、共有メモリ４０からのインデックス領域Ｒ５の「Ｃｈｅｃｋ」の値を受信すると、共有メモリ４０のデータ領域Ｒ１〜Ｒ４のうち「Ｃｈｅｃｋ」の値に対応する領域の異常を判定する処理を実行する（ステップＳ４１０）。この処理は、以下のようにして実行される。説明を容易にするために、ステップＳ４１０の処理の説明では、データ領域Ｒ１〜Ｒ４のうち「Ｃｈｅｃｋ」の値に対応する領域がデータ領域Ｒ１であるとする。プロセッサコア３４ｃは、データ領域Ｒ１に記憶されているデータＤＡＴＡ１を参照して（読み出して）レジスタ３６に退避させる。続いて、共有メモリ４０のデータ領域Ｒ１に異常を検出  する際のデータとして予め定められた異常判定用データＤｃを書き込む（データ領域Ｒ１のデータを異常判定用データで更新する）。そして、データ領域Ｒ１に記憶されているデータをレジスタ３６に読み出して、読み出したデータＤｃｒと異常判定用データＤｃとを比較する。読み出したデータＤｃｒが異常判定用データＤｃと同一であるときには、データ領域Ｒ１は正常であると判定して、レジスタ３６に退避しているデータＤＡＴＡ１をデータ領域Ｒ１に戻す。読み出したデータＤｃｒと異常判定用データＤｃとが異なるときには、データ領域Ｒ１に何らかの異常（例えば、データ領域Ｒ１に記憶するデータがハイまたはローのいずれかに固定されてしまうメモリ固着異常など）が生じていると判定する。
【００３７】
こうして異常検出を実行したら、ステップＳ４００で参照した「Ｃｈｅｃｋ」の値を値１だけインクリメントし（ステップＳ４２０）、インクリメント後の「Ｃｈｅｃｋ」の値が値５以上であるか否かを判定する（ステップＳ４３０）。インクリメント後の「Ｃｈｅｃｋ」の値が値５未満であるときには、図２に例示した更新処理ルーチンのステップＳ１３０と同様の処理で、共有メモリ４０のインデックス領域Ｒ５の「Ｃｈｅｃｋ」の値をインクリメント後の「Ｃｈｅｃｋ」の値に更新して（ステップＳ４４０）、異常検出処理ルーチンを終了する。こうした処理により、インクリメント後の「Ｃｈｅｃｋ」の値が値５未満であるときには、次のルーチンで、インクリメント後の「Ｃｈｅｃｋ」の値が示すデータ領域の異常を検出する処理を実行する。このように、異常検出処理ルーチンを繰り返すことにより、データ領域Ｒ１〜Ｒ４に異常が生じているか否かの判定を順次実行することができる。
【００３８】
ステップＳ４３０でインクリメント後の「Ｃｈｅｃｋ」の値が値５以上であるときには、図２に例示した更新処理ルーチンのステップＳ１３０と同様の処理で、共有メモリ４０のインデックス領域Ｒ５の「Ｃｈｅｃｋ」の値を値１に更新して（ステップＳ４５０）、異常検出処理ルーチンを終了する。これにより、次のルーチンで、データ領域Ｒ１に異常が生じているか否かを判定できる。そして、異常検出処理ルーチンを繰り返すことにより、データ領域Ｒ１〜Ｒ４に異常が生じているか否かの判定を順次実行することができる。
【００３９】
図５は、インバータ２４のＰＷＭ制御に用いられる三角波の波形とデータ領域Ｒ１〜Ｒ４に記憶されているデータとインデックス領域Ｒ５に記憶されている各インデックスとの時間変化の一例を示すタイミングチャートである。プロセッサコア３４ｂは、図３に例示した参照処理ルーチンの実行を開始すると、インデックスの「ＷｒｉｔｅＣｏｍｐ」を参照し、「Ｒｅａｄ」を「ＷｒｉｔｅＣｏｐｍ」の値に更新し、「Ｒｅａｄ」の値に対応するデータ領域を参照する（時刻ｔ１，ｔ７）。プロセッサコア３４ｃは、図４に例示した異常検出処理ルーチンの実行を開始すると、インデックスの「Ｃｈｅｃｋ」の値に対応するデータ領域に対して異常が生じているか否かを判定し（時刻ｔ０，ｔ８）、「Ｃｈｅｃｋ」の値を更新する（時刻ｔ５）。プロセッサコア３４ａは、図２に例示した更新処理ルーチンの実行を開始すると（例えば、時刻ｔ２，ｔ４）、「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の全てに記憶されていない値に対応するデータ領域、すなわち、プロセッサコア３４ｂ，３４ｃの処理の対象となっていないデータ領域のデータを書き込み用のデータ（例えば、ＤＡＴＡ４，ＤＡＴＡ５）で更新する（例えば、時刻ｔ３，ｔ６）。このように、プロセッサコア３４ａは、プロセッサコア３４ｂ，３４ｃの処理の対象となっていないデータ領域のデータを更新するから、プロセッサコア３４ｂ，３４ｃの処理と競合することなく、適正にデータを更新することができる。
【００４０】
以上説明した実施例の情報処理装置によれば、更新処理を実行するプロセッサコア３４ａは、４つのデータ領域Ｒ１〜Ｒ４のうち、プロセッサコア３４ｂ，３４ｃの処理の対象となっていないデータ領域に対して更新処理を実行することにより、適正にデータを更新することができる。
【００４１】
また、共有メモリ４０は、「Ｗｒｉｔｅ」，「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」の４つのインデックスを記憶するインデックス領域Ｒ５を有し、プロセッサコア３４ａは、４つのデータ領域Ｒ１〜Ｒ４のうち「Ｃｈｅｃｋ」，「Ｒｅａｄ」，「ＷｒｉｔｅＣｏｍｐ」で示されているデータ領域と異なる対象外データ領域をインデックスの「ＷｒｉｔｅＮｏｗ」に書き込んだ後に、対象外領域に対して更新処理を実行することにより、共有メモリ４０のデータ領域に記憶されているデータを適正に更新することができる。
【００４２】
実施例の情報処理装置では、プロセッサコア３４ｃは、共有メモリ４０のデータ領域Ｒ１〜Ｒ４の更新を伴ってデータ領域Ｒ１〜Ｒ４に異常が生じている否かを検出する異常検出処理を実行している。しかしながら、共有メモリ４０のデータ領域Ｒ１〜Ｒ４の更新を伴う処理であれば、如何なる処理を実行しても構わない。
【００４３】
実施例の情報処理装置では、マルチコアプロセッサ３２は、３つのプロセッサコア３４ａ〜３４ｃを備えているが、４つ以上のプロセッサコアを備えていても構わない。
【００４４】
実施例の情報処理装置では、共有メモリ４０は、４つのデータ領域Ｒ１〜Ｒ４を備えているが、５つ以上のデータ領域を備えていても構わない。
【００４５】
実施例では、本発明の情報処理装置をモータ装置２０に適用した場合を例示したが、他の装置に適用しても構わない。
【００４６】
実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係について説明する。実施例では、マルチコアプロセッサ３２が「マルチコアプロセッサ」に相当し、共有メモリ４０が「メモリ」に相当する。
【００４７】
なお、実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係は、実施例が課題を解決するための手段の欄に記載した発明を実施するための形態を具体的に説明するための一例であることから、課題を解決するための手段の欄に記載した発明の要素を限定するものではない。即ち、課題を解決するための手段の欄に記載した発明についての解釈はその欄の記載に基づいて行なわれるべきものであり、実施例は課題を解決するための手段の欄に記載した発明の具体的な一例に過ぎないものである。
【００４８】
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。
【産業上の利用可能性】
【００４９】
本発明は、情報処理装置の製造産業などに利用可能である。
【符号の説明】
【００５０】
２０  モータ装置、２２  モータ、２２ａ  回転位置検出センサ、２２ｂ，２２ｃ  電流センサ、２４  インバータ、２６  電力ライン、２８  電源、３０  マルチコアマイコン、３２  マルチコアプロセッサ、３４ａ〜３４ｃ  プロセッサコア、３６  レジスタ、４０  共有メモリ、５０  バス、Ｒ１〜Ｒ４  データ領域、Ｒ５  インデックス領域。
【図１】
2019101951.tif 000003
【図２】
2019101951.tif 000004
【図３】
2019101951.tif 000005
【図４】
2019101951.tif 000006
【図５】
2019101951.tif 000007