JP2012058805A - 演算処理装置、および演算処理方法 - Google Patents
演算処理装置、および演算処理方法 Download PDFInfo
- Publication number
- JP2012058805A JP2012058805A JP2010198567A JP2010198567A JP2012058805A JP 2012058805 A JP2012058805 A JP 2012058805A JP 2010198567 A JP2010198567 A JP 2010198567A JP 2010198567 A JP2010198567 A JP 2010198567A JP 2012058805 A JP2012058805 A JP 2012058805A
- Authority
- JP
- Japan
- Prior art keywords
- value
- holding area
- identification value
- identification
- calculation
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】簡易な構成でプログラムの異常動作を判定できる演算処理装置を提供する。
【解決手段】メモリ4は、実行対象である複数の演算モジュールと識別値とを対応付けて記憶する演算モジュール管理テーブル42と、識別値スタック保持領域43と、を備える。乗算値スタック格納部22は、識別値のすべてを乗算した値を識別値スタック保持領域43に格納する。プログラム実行部21が、所定の演算モジュールを実行したときに、当該演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算し、除算値スタック格納部23がこの商を識別値スタック保持領域43に上書き格納する。判定部24が演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算したとき割り切れるか否かを判定する。
【選択図】図1
【解決手段】メモリ4は、実行対象である複数の演算モジュールと識別値とを対応付けて記憶する演算モジュール管理テーブル42と、識別値スタック保持領域43と、を備える。乗算値スタック格納部22は、識別値のすべてを乗算した値を識別値スタック保持領域43に格納する。プログラム実行部21が、所定の演算モジュールを実行したときに、当該演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算し、除算値スタック格納部23がこの商を識別値スタック保持領域43に上書き格納する。判定部24が演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算したとき割り切れるか否かを判定する。
【選択図】図1
Description
本発明は、演算処理装置、および演算処理方法に関する。
演算処理装置において、プログラムが異常に動作することを判定する従来技術として、特許文献1がある。この文献には、分岐検知回路と分岐先アドレス比較回路を使い、プログラム処理が正常に遷移したかどうかを判定する演算処理装置が開示されている。
しかしながら、特許文献1の技術は、プログラムの異常動作を判定する回路を追加する必要があり、演算処理装置の構成が複雑であった。
本発明は、上記課題を解決するためになされたもので、簡易な構成でプログラムの異常動作を判定する演算処理装置、およびこの演算処理装置を処理する演算処理方法を提供することを目的とする。
本発明は、上記課題を解決するためになされたもので、簡易な構成でプログラムの異常動作を判定する演算処理装置、およびこの演算処理装置を処理する演算処理方法を提供することを目的とする。
上記課題を解決するために、本発明は、
CPUとメモリとからなる演算処理装置において、
前記メモリは、
複数の演算モジュールに予め分割された前記CPUが処理する演算を保持する演算モジュール保持領域と、
複数の前記演算モジュールごとに予め付与された識別値(ただし、識別値は0以外の数)を保持する識別値保持領域と、
識別値スタック保持領域と、
を備え、
前記CPUは、
前記スタック保持領域に前記識別値のすべてを乗算した乗算値を格納する乗算値スタック格納部と、
前記複数の演算モジュールごとにそれぞれ保持された演算を所定の順で実行するプログラム実行部と、
このプログラム実行部で前記演算を実行したとき、当該演算が保持された演算モジュールに付与された識別値を使って前記識別値スタック保持領域に格納された値を除算して割り切れるか否かを判定する判定部と、
前記除算して得られた商を前記識別値スタック保持領域に上書きして格納させる除算値スタック格納部と、
を備えることを特徴とする。
CPUとメモリとからなる演算処理装置において、
前記メモリは、
複数の演算モジュールに予め分割された前記CPUが処理する演算を保持する演算モジュール保持領域と、
複数の前記演算モジュールごとに予め付与された識別値(ただし、識別値は0以外の数)を保持する識別値保持領域と、
識別値スタック保持領域と、
を備え、
前記CPUは、
前記スタック保持領域に前記識別値のすべてを乗算した乗算値を格納する乗算値スタック格納部と、
前記複数の演算モジュールごとにそれぞれ保持された演算を所定の順で実行するプログラム実行部と、
このプログラム実行部で前記演算を実行したとき、当該演算が保持された演算モジュールに付与された識別値を使って前記識別値スタック保持領域に格納された値を除算して割り切れるか否かを判定する判定部と、
前記除算して得られた商を前記識別値スタック保持領域に上書きして格納させる除算値スタック格納部と、
を備えることを特徴とする。
本発明の演算処理装置およびこの演算処理装置を処理する演算処理方法によれば、簡易な構成でプログラムの異常動作を判定できる。
添付図面を適宜参照しながら、本発明にかかる演算処理装置の好適な実施形態について説明する。
図1は、本発明の演算処理装置の一構成例を示す図である。
図1は、本発明の演算処理装置の一構成例を示す図である。
演算処理装置1は、CPU2、CPU2へCPUを動作するクロック信号を与えるクロック3、メモリ4、およびCPU2とメモリ4を接続するバス5から構成される。
メモリ4は、CPU2が演算処理する複数の演算モジュールを保持する演算モジュール保持領域41と、演算モジュールごとに予め付与された識別値とを対応付けて記憶(保持)する演算モジュール管理テーブル42と、1つの値を格納する領域を持つ識別値スタック保持領域43と、を備える。
メモリ4は、CPU2が演算処理する複数の演算モジュールを保持する演算モジュール保持領域41と、演算モジュールごとに予め付与された識別値とを対応付けて記憶(保持)する演算モジュール管理テーブル42と、1つの値を格納する領域を持つ識別値スタック保持領域43と、を備える。
演算モジュール保持領域41は、CPU2が実行処理する演算を予め複数に分割した演算プログラムを保持している。
演算モジュール管理テーブル42が、各々の演算モジュールに対応付けて記憶する識別値は、0以外の数値であり、この数値は演算モジュールごとに異なる素数であることが望ましい。識別値は除算に利用するため、0以外の数値を設定する。
演算モジュール管理テーブル42が、各々の演算モジュールに対応付けて記憶する識別値は、0以外の数値であり、この数値は演算モジュールごとに異なる素数であることが望ましい。識別値は除算に利用するため、0以外の数値を設定する。
演算モジュール保持領域41・演算モジュール管理テーブル42・識別値スタック保持領域43を有するメモリ4は、1つのハードウェアで構成してもよく、複数のハードウェアで構成してもよい。
CPU2は、プログラム実行部21と、乗算値スタック格納部22と、除算値スタック格納部23と、判定部24と、を備える。
プログラム実行部21は、演算を実行する対象となる複数の演算モジュールを所定の順序で実行する。演算モジュールを実行する順序は、適宜定めることができ、たとえば演算モジュールに付した番号の順に実行する。
プログラム実行部21は、演算を実行する対象となる複数の演算モジュールを所定の順序で実行する。演算モジュールを実行する順序は、適宜定めることができ、たとえば演算モジュールに付した番号の順に実行する。
乗算値スタック格納部22は、プログラム実行部21が演算モジュールを実行する前に、次の処理を行う。まず、乗算値スタック格納部22は、識別値スタック保持領域43を“1”に初期化する。次いで、乗算値スタック格納部22は、演算モジュール管理テーブル42を参照して、演算を実行する対象となる複数の演算モジュールに対応付いた識別値を読み出す。そして、乗算値スタック格納部22は、これら読み出した識別値のすべてを乗算して得た乗算値を、識別値スタック保持領域43に上書きして格納する。
除算値スタック格納部23は、プログラム実行部21で所定の演算モジュールを実行したときに、演算モジュール管理テーブル42を参照して、この所定の演算モジュールに対応付いた識別値を読み出す。除算値スタック格納部23は、この読み出した識別値を使って識別値スタック保持領域43に格納されている値を除算する。除算値スタック格納部23は、識別値スタック保持領域43に格納されている値を除算して得た商を、識別値スタック保持領域43に上書きして格納する。除算値スタック格納部23は、プログラム実行部21が所定の演算モジュールを実行するごとに、上述の処理を繰り返し行う。
識別値スタック保持領域43に格納されている値は、初期値が、乗算値スタック格納部22が演算を実行する対象となる複数の演算モジュールに対応付いた識別値のすべてを乗算して得た値であり、以降は、除算値スタック格納部23が除算して得た商が代入される。
判定部24は、除算値スタック格納部23が演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算したときに、割り切れるか否かを判定する。
判定部24は、演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算して割り切れないとき、異常動作であると判定し、異常動作であることを図示しないモニタなどに通知する。判定部24は、識別値スタック保持領域43の値を除算して割り切れたとき、正常動作であると判定する。
判定部24は、演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算して割り切れないとき、異常動作であると判定し、異常動作であることを図示しないモニタなどに通知する。判定部24は、識別値スタック保持領域43の値を除算して割り切れたとき、正常動作であると判定する。
また、判定部42は、プログラム実行部が実行を予定している複数あるうちの最後の演算モジュールを実行し、この最後の演算モジュールに対応付いた識別値の値を使って識別値スタック保持領域43の値を除算した商が“1”の場合は、すべての演算モジュールが正常に動作したと判定する。判定部42は、最後の演算モジュールに対応付いた識別値の値を使って識別値スタック保持領域43の値を除算した商が“1”でない場合は、複数の演算モジュールのうち少なくとも1つの演算モジュールが正常に動作しなかったと判定し、異常動作であることを図示しないモニタなどに通知する。
判定部24が、除算値スタック格納部23が演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算したときに割り切れるか否かで、正常動作か異常動作かを判定できる理由を説明する。
乗算値スタック格納部22は、演算を実行する対象となる、すなわち演算の実行を予定している複数の演算モジュールに対応付いた識別値のすべてを乗算した乗算値を、識別値スタック保持領域43に格納する。一方、除算値スタック格納部23は、乗算値スタック格納部22が識別値スタック保持領域43に格納した値を、演算を実行する対象となるいずれかの演算モジュールに対応付いた識別値の値で除算する。
よって、プログラム実行部21が、演算の実行を予定しているいずれか演算モジュールを実行し、除算値スタック格納部23が、この演算モジュールに対応付いた識別値で識別値スタック保持領域43に格納した値を除算したとしても、正常な動作、つまり想定内の処理である限り、割り切れる。除算値スタック格納部23が除算して割り切れない場合は、プログラム実行部21が予定外の演算モジュールを実行したことを示し、異常な動作、つまり想定外の処理と判定できる。
なお、演算モジュール管理テーブル42が、各々の演算モジュールに対応付けて記憶する識別値を、演算モジュールごとに互いに異なる素数とすると、判定部24が正常動作と異常動作のどちらであるかを判定する精度を高められる。
たとえば、演算の実行を予定している演算モジュール1に対応付いた識別値=“6”とし、演算の実行を予定していない演算モジュール4に対応付いた識別値=“3”とする場合を考える。このとき、乗算値スタック格納部22が識別値スタック保持領域43に格納した値は、“6”の倍数となっている。ここで、プログラム実行部21が、ノイズ等の不当なイベントにより、演算の実行を予定している演算モジュール1を実行せず、代わりに、演算の実行を予定していない演算モジュール4を実行する、という異常動作が起こったとする。しかしながら、識別値スタック保持領域43に格納した値は“6”の倍数となっており、演算モジュール4に対応付いた識別値=“3”で割り切れるので、判定部24が異常動作だと判定できない恐れが生じる。このような、演算モジュールに対応付いた識別値が倍数の関係にあることで生じる判定漏れは、演算モジュールごとに識別値を異なる素数とすれば防ぐことができる。
判定部24が、プログラム実行部21が実行を予定している複数あるうちの最後の演算モジュールを実行し、この最後の演算モジュールに対応付いた識別値を使って識別値スタック保持領域43の値を除算した商が1であるか否かで、正常動作か異常動作かを判定できる理由を説明する。
乗算値スタック格納部22は、演算を実行する対象となる、すなわち演算の実行を予定している複数の演算モジュールに対応付いた識別値のすべてを乗算した乗算値を、識別値スタック保持領域43に格納する。一方、除算値スタック格納部23は、乗算値スタック格納部22が識別値スタック保持領域43に格納した値を、演算を実行する対象となるいずれかの演算モジュールに対応付いた識別値で除算する。
よって、プログラム実行部21が、演算の実行を予定していたすべての演算モジュールを実行し、乗算値スタック格納部22が識別値スタック保持領域43に格納した値を、除算値スタック格納部23が、すべての演算モジュールに対応付いた識別値の値で除算すれば、除算したときの商は初期値である“1”になる。したがって、演算の実行を予定していた最後の演算モジュールを実行し、この最後の演算モジュールに対応付いた識別値の値で除算したときの商が“1”であれば、すべての演算モジュールは正常に処理されたと判定できる。反対に、商が“1”でない場合は、プログラム実行部21が予定外の演算モジュールを実行したことを示すので、異常な動作、つまり想定外の処理と判定できる。
以上のように、本発明の演算処理装置、およびこの演算処理装置を処理する演算処理方法によれば、プログラムの異常動作を判定する回路が不要で、簡易な構成でプログラムの異常動作を判定することができる。特に、識別値スタック保持領域43は、1つの値を格納する領域を持てばよいので、メモリの使用量を小さくしながらプログラムの異常動作を判定することができる、という効果がある。
図2は、メモリ4内にある演算モジュール管理テーブル42の一例を示す図である。
演算モジュール管理テーブル42は、演算モジュールのモジュール番号421と、このモジュール番号421のそれぞれと対応付けて、識別値422・実行フラグ423・実行順序424とを記憶している。
演算モジュール管理テーブル42は、演算モジュールのモジュール番号421と、このモジュール番号421のそれぞれと対応付けて、識別値422・実行フラグ423・実行順序424とを記憶している。
識別値422は、複数の演算モジュールごとにあらかじめ付与された識別値を保持する識別値保持領域である。識別値422は、CPU2の乗算値スタック格納部22が乗算するとき、およびCPU2の除算値スタック格納部23が除算するときに利用する0以外の数値が設定されている。この数値は、演算モジュール番号ごとに互いに異なる数、望ましくはモジュール番号ごとに互いに異なる素数を設定する。識別値422は、演算処理を行う前にあらかじめ設定する。
実行フラグ423は、複数ある演算モジュールのうち、どの演算モジュールを実行するかを示すものであり、演算を実行する対象である複数の演算モジュールを設定する。演算を実行する演算モジュール番号に対して、実行フラグ423を“1”と設定する。本実施例では、演算モジュール1〜3は演算を実行する対象として実行フラグ423を“1”に設定し、演算モジュール4は演算を実行しない対象として実行フラグ423を“0”に設定している。実行フラグ423は、演算処理を行う前にあらかじめ設定する。CPU2のプログラム実行部21は、実行フラグ423を参照して、演算を実行する対象となる複数の演算モジュールを認識する。
実行順序424は、演算モジュール1〜3の演算を実行する順序を示すものである。本実施例では、演算モジュール1の実行順序は“1”、演算モジュール2の実行順序は“2”、演算モジュール3の実行順序は“3”と設定している。演算モジュール4は、演算を実行しない対象として実行フラグ423を“0”に設定しているので、演算モジュール4の実行順序は特に設定していない。実行順序424は、演算処理を行う前にあらかじめ設定する。CPU2のプログラム実行部21は、実行順序424を参照して、演算を実行する対象となる複数の演算モジュールをどの順序で実行するかを認識する。
図3は、演算処理装置1の処理フローを示す図である。以下、図3の処理フローを、図2の演算モジュール管理テーブル42に設定した各種の値を使う形で説明する。
<正常動作時>
乗算値スタック格納部22は、プログラム実行部21が演算モジュールの演算を実行する前に、識別値スタック保持領域43を“1”に初期化する(ステップS1)。
<正常動作時>
乗算値スタック格納部22は、プログラム実行部21が演算モジュールの演算を実行する前に、識別値スタック保持領域43を“1”に初期化する(ステップS1)。
乗算値スタック格納部22は、演算モジュール管理テーブル42を参照して、演算を実行する対象となる、すなわち実行フラグ423を“1”に設定している複数の演算モジュールに付与された識別値を読み出す。そして、乗算値スタック格納部22は、これら読み出した識別値のすべてを乗算して得た乗算値を、識別値スタック保持領域43に上書きして格納する(ステップS2)。
図2の例では、乗算値スタック格納部22は、演算モジュール1〜3が演算を実行する対象なので、これらの演算モジュールに対応付いた識別値“3”・“5”・“7”を読み出す。そして、乗算値スタック格納部22は、これら読み出した識別値のすべてを乗算して得た値=“3”ד5”ד7”=“105”を、識別値スタック保持領域43に上書きして格納する。
プログラム実行部21は、図2における実行順序424を参照して、実行順序i=1番目である演算モジュール1を実行する(ステップS3)。
除算値スタック格納部23は、プログラム実行部21が実行した演算モジュール1に対応付いた識別値“3”を読み出す。除算値スタック格納部23は、この読み出した識別値の値“3”を使って、識別値スタック保持領域43に格納されている値“105”を除算する(ステップS4)。
除算値スタック格納部23は、プログラム実行部21が実行した演算モジュール1に対応付いた識別値“3”を読み出す。除算値スタック格納部23は、この読み出した識別値の値“3”を使って、識別値スタック保持領域43に格納されている値“105”を除算する(ステップS4)。
識別値スタック保持領域43に格納されている値“105”を、演算モジュール1に対応付いた識別値“3”で除算すると、割り切れる、すなわち剰余が生じない(ステップS5,No)。よって、判定部24は正常動作であると判定する。そして、除算値スタック格納部23は、除算して得た商“35”を、識別値スタック保持領域43に上書きして格納する(ステップS6)。
図2の実行順序424を参照すると、最後に実行する演算モジュールは演算モジュール3なのに対し、先ほど処理した演算モジュールは演算モジュール1である。よって、演算モジュール1は最後の演算モジュールではないので(ステップS7,No)、実行順序を1つだけインクリメントして(ステップS9)、ステップS3へ戻る。
プログラム実行部21は、図2における実行順序414を参照して、実行順序i=2番目である演算モジュール2を実行する(ステップS3)。
除算値スタック格納部23は、演算モジュール2に対応付いた識別値の値“5”を使って、識別値スタック保持領域43に格納されている値“135”を除算する(ステップS4)。
除算値スタック格納部23は、演算モジュール2に対応付いた識別値の値“5”を使って、識別値スタック保持領域43に格納されている値“135”を除算する(ステップS4)。
識別値スタック保持領域43に格納されている値“35”を、演算モジュール2に対応付いた識別値“5”で除算すると、剰余が生じない(ステップS5,No)。よって、判定部24は正常動作であると判定し、除算値スタック格納部23は、除算して得た商“7”を、識別値スタック保持領域43に上書きして格納する(ステップS6)。
図2の実行順序424を参照すると、演算モジュール2は最後の演算モジュールではないので(ステップS7,No)、実行順序を1つだけインクリメントして(ステップS9)、ステップS3へ戻る。
プログラム実行部21は、図2における実行順序424を参照して、実行順序i=3番目である演算モジュール3を実行する(ステップS3)。
除算値スタック格納部23は、演算モジュール3に対応付いた識別値の値“7”を使って、識別値スタック保持領域43に格納されている値“7”を除算する(ステップS4)。
除算値スタック格納部23は、演算モジュール3に対応付いた識別値の値“7”を使って、識別値スタック保持領域43に格納されている値“7”を除算する(ステップS4)。
識別値スタック保持領域43に格納されている値“7”を、演算モジュール3に対応付いた識別値“7”で除算すると、剰余が生じない(ステップS5,No)。よって、判定部24は正常動作であると判定し、除算値スタック格納部23は、除算して得た商“1”を、識別値スタック保持領域43に上書きして格納する(ステップS6)。
図2の実行順序424を参照すると、演算モジュール3は最後に実行する演算モジュールなので(ステップS7,Yes)、次のステップS8に処理を進める。
ステップS6で識別値スタック保持領域43に格納された値は初期値である“1”なので、判定部24はすべての演算モジュールが正常に動作して処理されたと判定し(ステップS8)、そのまま演算処理装置1は処理を終了する。
ステップS6で識別値スタック保持領域43に格納された値は初期値である“1”なので、判定部24はすべての演算モジュールが正常に動作して処理されたと判定し(ステップS8)、そのまま演算処理装置1は処理を終了する。
<異常動作例1>
ステップS5において“剰余あり(ステップS5,Yes)”のため、演算処理装置1が異常に動作した、と判定部24が判定する場合の異常動作例を述べる。
ステップS5において“剰余あり(ステップS5,Yes)”のため、演算処理装置1が異常に動作した、と判定部24が判定する場合の異常動作例を述べる。
乗算値スタック格納部22は、プログラム実行部21が演算モジュールの演算を実行する前に、識別値スタック保持領域43を“1”に初期化する(ステップS1)。乗算値スタック格納部22は、演算モジュール1〜3に対応付いた識別値“3”・“5”・“7”を乗算して得た値=“3”ד5”ד7”=“105”を、識別値スタック保持領域43に上書きして格納する(ステップS2)。
ここで、プログラム実行部21が、ノイズ等の不当なイベントにより、実行を予定していない演算モジュール4を実行したとする(ステップS3)。
除算値スタック格納部23は、プログラム実行部21が実行した演算モジュール4に対応付いた識別値“11”を読み出す。除算値スタック格納部23は、この読み出した識別値の値“11”を使って、識別値スタック保持領域43に格納されている値“105”を除算する(ステップS4)。
除算値スタック格納部23は、プログラム実行部21が実行した演算モジュール4に対応付いた識別値“11”を読み出す。除算値スタック格納部23は、この読み出した識別値の値“11”を使って、識別値スタック保持領域43に格納されている値“105”を除算する(ステップS4)。
識別値スタック保持領域43に格納されている値“105”を、演算モジュール4に対応付いた識別値“11”で除算すると、剰余が生じる(ステップS5,Yes)。よって、判定部24は異常動作であると判定し、異常動作である旨を図示しないモニタなどに通知し(ステップS10)、演算処理装置1は処理を終了する。
このように、識別値スタック保持領域43の値を、プログラム実行部21が実行した演算モジュールに対応付いた識別値で除算したときの剰余の有無をみれば、演算処理装置1が異常動作したかどうかを判定できる。
<異常動作例2>
ステップS8において“識別値スタック保持領域の値が“1”でない(ステップS8,No)”ため、演算処理装置1が異常に動作した、と判定部24が判定する場合の異常動作例を述べる。
ステップS8において“識別値スタック保持領域の値が“1”でない(ステップS8,No)”ため、演算処理装置1が異常に動作した、と判定部24が判定する場合の異常動作例を述べる。
乗算値スタック格納部22は、プログラム実行部21が演算モジュールの演算を実行する前に、識別値スタック保持領域43を“1”に初期化する(ステップS1)。
ここで、乗算値スタック格納部22は、図2の例では、演算を実行する対象である演算モジュール1〜3に対応付いた識別値のみを読み出すべきところを、ノイズ等の不当なイベントにより、実行を予定していない演算モジュール4に対応付いた識別値“11”を加えて読み出したとする。よって、乗算値スタック格納部22は、読み出した識別値のすべてを乗算して得た値=“3”ד5”ד7” ד11”=“1155”を、識別値スタック保持領域43に上書きして格納する。(ステップS2)。
ここで、乗算値スタック格納部22は、図2の例では、演算を実行する対象である演算モジュール1〜3に対応付いた識別値のみを読み出すべきところを、ノイズ等の不当なイベントにより、実行を予定していない演算モジュール4に対応付いた識別値“11”を加えて読み出したとする。よって、乗算値スタック格納部22は、読み出した識別値のすべてを乗算して得た値=“3”ד5”ד7” ד11”=“1155”を、識別値スタック保持領域43に上書きして格納する。(ステップS2)。
プログラム実行部21は、図2における実行順序424を参照して、実行順序i=1番目である演算モジュール1を実行する(ステップS3)。
除算値スタック格納部23は、演算モジュール1に対応付いた識別値“3”を使って、識別値スタック保持領域43に格納されている値“1155”を除算する(ステップS4)。
除算値スタック格納部23は、演算モジュール1に対応付いた識別値“3”を使って、識別値スタック保持領域43に格納されている値“1155”を除算する(ステップS4)。
識別値スタック保持領域43に格納されている値“1155”を、演算モジュール1に対応付いた識別値“3”で除算すると、剰余が生じない(ステップS5,No)。よって、判定部24は正常動作であると判定し、除算値スタック格納部23は、除算して得た商“385”を、識別値スタック保持領域43に上書きして格納する(ステップS6)。
図2の実行順序424を参照すると、演算モジュール1は最後に実行する演算モジュールではないので(ステップS7,No)、実行順序を1つだけインクリメントして(ステップS9)、ステップS3へ戻る。
プログラム実行部21は、図2における実行順序424を参照して、実行順序i=2番目である演算モジュール2を実行する(ステップS3)。
除算値スタック格納部23は、演算モジュール2に対応付いた識別値の値“5”を使って、識別値スタック保持領域43に格納されている値“385”を除算する(ステップS4)。
除算値スタック格納部23は、演算モジュール2に対応付いた識別値の値“5”を使って、識別値スタック保持領域43に格納されている値“385”を除算する(ステップS4)。
識別値スタック保持領域43に格納されている値“385”を、演算モジュール2に対応付いた識別値“5”で除算すると、剰余が生じない(ステップS5,No)。よって、判定部24は正常動作であると判定し、除算値スタック格納部23は、除算して得た商“77”を、識別値スタック保持領域43に上書きして格納する(ステップS6)。
図2の実行順序424を参照すると、演算モジュール2は最後に実行される演算モジュールではないので(ステップS7,No)、実行順序を1つだけインクリメントして(ステップS9)、ステップS3へ戻る。
プログラム実行部21は、図2における実行順序424を参照して、実行順序i=3番目である演算モジュール3を実行する(ステップS3)。
除算値スタック格納部23は、演算モジュール3に対応付いた識別値の値“7”を使って、識別値スタック保持領域43に格納されている値“77”を除算する(ステップS4)。
除算値スタック格納部23は、演算モジュール3に対応付いた識別値の値“7”を使って、識別値スタック保持領域43に格納されている値“77”を除算する(ステップS4)。
識別値スタック保持領域43に格納されている値“77”を、演算モジュール3に対応付いた識別値“7”で除算すると、剰余が生じない(ステップS5,No)。よって、判定部24は正常動作であると判定し、除算値スタック格納部23は、除算して得た商“11”を、識別値スタック保持領域43に上書きして格納する(ステップS6)。
図2の実行順序424を参照すると、演算モジュール3は最後の演算モジュールなので(ステップS7,Yes)、次のステップS8に処理を進める。
ステップS6で識別値スタック保持領域43に格納された値は“11”なので、判定部24は演算モジュールが異常に動作したと判定し(ステップS8)、異常動作である旨を図示しないモニタなどに通知し(ステップS10)、演算処理装置1は処理を終了する。
ステップS6で識別値スタック保持領域43に格納された値は“11”なので、判定部24は演算モジュールが異常に動作したと判定し(ステップS8)、異常動作である旨を図示しないモニタなどに通知し(ステップS10)、演算処理装置1は処理を終了する。
このように、乗算値スタック格納部22が上書きして格納した識別値スタック保持領域43の値を、プログラム実行部21が実行した演算モジュールに対応付いた識別値で除算したときに剰余がなかった場合でも、すべての演算モジュールの実行が終了したときに格納されている識別値スタック保持領域43の値をみることで、演算処理装置1が異常動作したかどうかを判定できる。
以上のように、本発明の演算処理装置、およびこの演算処理装置を処理する演算処理方法によれば、プログラムの異常動作を判定する回路が不要で、簡易な構成でプログラムの異常動作を判定することができる。特に、識別値スタック保持領域43は、1つの値を格納する領域を持てばよいので、メモリの使用量を小さくしながらプログラムの異常動作を判定することができる、という効果がある。
1 演算処理装置
2 CPU2
21 プログラム実行部
22 乗算値スタック格納部
23 除算値スタック格納部
24 判定部
3 クロック
4 メモリ
41 演算モジュール保持領域
42 演算モジュール管理テーブル
43 識別値スタック保持領域
5 バス
2 CPU2
21 プログラム実行部
22 乗算値スタック格納部
23 除算値スタック格納部
24 判定部
3 クロック
4 メモリ
41 演算モジュール保持領域
42 演算モジュール管理テーブル
43 識別値スタック保持領域
5 バス
Claims (6)
- CPUとメモリとからなる演算処理装置において、
前記メモリは、
複数の演算モジュールに予め分割された前記CPUが処理する演算を保持する演算モジュール保持領域と、
複数の前記演算モジュールごとに予め付与された識別値(ただし、識別値は0以外の数)を保持する識別値保持領域と、
識別値スタック保持領域保持領域と、
を備え、
前記CPUは、
前記スタック保持領域に前記識別値のすべてを乗算した乗算値を格納する乗算値スタック格納部と、
前記複数の演算モジュールごとにそれぞれ保持された演算を所定の順で実行するプログラム実行部と、
このプログラム実行部で前記演算を実行したとき、当該演算が保持された演算モジュールに付与された識別値を使って前記識別値スタック保持領域保持領域に格納された値を除算して割り切れるか否かを判定する判定部と、
前記除算して得られた商を前記識別値スタック保持領域保持領域に上書きして格納させる除算値スタック格納部と、
を備えることを特徴とする演算処理装置。 - 前記識別値は、前記複数の演算モジュールごとに異なる素数であることを特徴とする請求項1に記載の演算処理装置。
- 前記判定部は、前記演算モジュールに付与された識別値を使って前記識別値スタック保持領域保持領域に格納された値を除算して、割り切れるときは正常動作と判定し、割り切れないときは異常動作と判定する、ことを特徴とする請求項1または2に記載の演算処理装置。
- 前記判定部は、前記プログラム実行部が複数あるうちの最後に実行される演算モジュールに保持された演算を実行し、
当該最後に実行される演算モジュールに付与された識別値を使って前記識別値スタック保持領域保持領域の値を除算した商が初期値の場合は、すべての演算モジュールに保持された演算が正常に実行されたと判定し、
当該最後に実行される演算モジュールに付与された識別値を使って前記識別値スタック保持領域保持領域の値を除算した商が初期値でない場合は、複数の演算モジュールに保持された演算のうち少なくとも1つの演算が正常に実行されなかったと判定する、
ことを特徴とする請求項1〜3のいずれか1項に記載の演算処理装置。 - 複数の演算モジュールごとにそれぞれ保持された演算を実行するCPUと、識別値スタック保持領域保持領域と複数の前記演算モジュールごとに予め付与された識別値(ただし、識別値は0以外の数)を保持する識別値保持領域とを有するメモリと、からなる演算処理装置の演算処理方法において、
前記CPUが、前記識別値のすべてを乗算した乗算値を前記識別値スタック保持領域保持領域に格納するステップと、
前記CPUが、所定の演算モジュールに保持された演算を実行したときに、当該演算モジュールに付与された識別値を使って前記識別値スタック保持領域保持領域の値を除算するステップと、
前記CPUが、前記除算したときに割り切れるか否かを判定するステップと、
を有することを特徴とする演算処理方法。 - 前記CPUが、前記除算したときの商を前記識別値スタック保持領域領域に上書きして格納するステップと、
前記CPUが、複数あるうちの最後に実行される演算モジュールに保持された演算を実行し、当該最後に実行される演算モジュールに付与された識別値を使って前記識別値スタック保持領域保持領域の値を除算した商が初期値の場合は、すべての演算モジュールに保持された演算が正常に実行されたと判定し、当該最後に実行される演算モジュールに付与された識別値を使って前記識別値スタック保持領域保持領域の値を除算した商が初期値でない場合は、複数の演算モジュールに保持された演算のうち少なくとも1つの演算が正常に実行されなかったと判定するステップと、
を有することを特徴とする請求項5に記載の演算処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010198567A JP2012058805A (ja) | 2010-09-06 | 2010-09-06 | 演算処理装置、および演算処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010198567A JP2012058805A (ja) | 2010-09-06 | 2010-09-06 | 演算処理装置、および演算処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012058805A true JP2012058805A (ja) | 2012-03-22 |
Family
ID=46055883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010198567A Pending JP2012058805A (ja) | 2010-09-06 | 2010-09-06 | 演算処理装置、および演算処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012058805A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016189118A (ja) * | 2015-03-30 | 2016-11-04 | 日立オートモティブシステムズ株式会社 | 電子制御装置 |
-
2010
- 2010-09-06 JP JP2010198567A patent/JP2012058805A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016189118A (ja) * | 2015-03-30 | 2016-11-04 | 日立オートモティブシステムズ株式会社 | 電子制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9678806B2 (en) | Method and apparatus for distributing processing core workloads among processing cores | |
JP6968145B2 (ja) | システム呼び出しのシーケンスを用いた異常検出 | |
US8418188B2 (en) | Task execution controller and recording medium on which task execution control program is recorded | |
JP2012522306A5 (ja) | ||
RU2014150500A (ru) | Способ управления исполнением задачи в компьютерной системе | |
JP2012058805A (ja) | 演算処理装置、および演算処理方法 | |
US20090187903A1 (en) | Virtual multiprocessor system | |
JP5960632B2 (ja) | 車両用電子制御装置 | |
CN111597093B (zh) | 一种异常处理方法、装置及其设备 | |
CN109491771B (zh) | 基于系统性能优化的任务处理方法及相关设备 | |
CN103593606A (zh) | 上下文信息管理方法及系统 | |
JP2011150532A (ja) | 情報処理装置 | |
CN110673937B (zh) | 单片机及其同步异步控制方法 | |
JP2012226409A (ja) | マルチコア・プロセッサ | |
EP3227782B1 (en) | Memory access by dual processor systems | |
KR101779118B1 (ko) | 메모리의 스택 관리 방법 | |
US20210089310A1 (en) | Multiprocessor device | |
JP2019013638A5 (ja) | ||
US11681527B2 (en) | Electronic device and multiplexing method of spatial | |
JP6558317B2 (ja) | 電子装置 | |
US10078586B2 (en) | Out-of-range reference detection device, method, and recording medium | |
JP2016177331A (ja) | 電子制御装置 | |
JP2004171040A (ja) | タイマ回路 | |
US20210357220A1 (en) | Executing instructions | |
US20120166776A1 (en) | Method, system, and computer program for analyzing program |