(57)【要約】【課題】車両に搭載され、浮動小数点演算を実施可能な制御装置において、非数発生時の処理性能の劣化を抑制する技術を提供する。【解決手段】演算部は、Ｓ２２０で、浮動小数点演算によって０を０で除する演算をさせる演算命令を表す除算命令の有無を判定するように構成される。そして、演算部は、Ｓ２５０，Ｓ２６０で、除算命令がある場合に、除算命令に含まれる各値の符号を加味して除算を乗算とした０に０を乗じる演算とする乗算命令を生成し、除算命令に換えて乗算命令を実行させるように構成される。【選択図】図４
2019101962.tif 000002
【特許請求の範囲】
【請求項１】
車両に搭載され、浮動小数点演算を実行可能な制御装置（２０Ａ，２０Ｂ）であって、
浮動小数点演算によって０を０で除する演算をさせる演算命令を表す除算命令の有無を判定するように構成された演算判定部（Ｓ１２０，Ｓ２２０）と、
前記除算命令がある場合に、前記除算命令に含まれる各値の符号を加味して除算を乗算とした０に０を乗じる演算とする乗算命令を生成し、前記除算命令に換えて前記乗算命令を実行させるように構成された命令実行部（Ｓ１３０，Ｓ１５０，Ｓ２００，Ｓ２５０，Ｓ２６０，Ｓ３１０）と、
を備える制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記命令実行部は、前記乗算命令を含むサブルーチンを予め設定されたＲＡＭ上に生成し、該サブルーチンを実行する
ように構成された制御装置。
【請求項３】
請求項２に記載の制御装置であって、
前記命令実行部は、予め準備された例外設定が有効であり、かつ前記除算命令がある場合に、前記乗算命令を生成するように構成されるとともに、前記例外設定が無効の際に、前記除算命令を含む予め設定された無効命令があると、前記無効命令に換えてデフォルト値を出力するように構成され、
前記サブルーチンに基づく前記乗算命令を実行する際に、前記例外設定を無効とし、前記乗算命令を実行させた後に、前記例外設定を有効とするように構成された設定変更部（Ｓ２７０，Ｓ２９０）、
をさらに備える制御装置。
【請求項４】
請求項１から請求項３の何れか１項に記載の制御装置であって、
演算によって得られるデータを保持するように構成された複数のレジスタを有するレジスタ群（２３Ａ，２３Ｂ）をさらに備え、
該レジスタ群のうちの相対アドレスアクセスの際の基準アドレス（１３Ｄ）が記載されたレジスタを基準レジスタ（２３Ｄ）として、
前記命令実行部は、前記乗算命令を生成して前記乗算命令を実行する際に、前記基準レジスタを含むレジスタを、データの退避領域として利用する
ように構成された制御装置。
【請求項５】
請求項１から請求項４の何れか１項に記載の制御装置であって、
当該制御装置は、前記命令実行部が実行する処理に対して、制御単位毎に予め準備された例外設定を有効とするか無効とするかを設定可能に構成され、
前記命令実行部は、実行する処理についての例外設定が有効であり、かつ前記除算命令がある場合に、前記乗算命令を生成し、実行する処理についての例外設定が無効の際に、前記除算命令を含む予め設定された無効命令があると、前記無効命令に換えてデフォルト値を出力する
ように構成された制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、車両に搭載され、浮動小数点演算を実施可能な制御装置に関する。
【背景技術】
【０００２】
上記の制御装置として、下記の特許文献１には、浮動小数点演算によって非数が発生した場合、非数の伝播を抑制するために、制御ブロック単位でデータを初期化するという技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５３７９７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、発明者の詳細な検討の結果、制御ブロック単位でデータを初期化する構成では、初期化する必要がないデータも初期化され、再演算されるため、処理に遅延が生じるなどの処理性能の劣化を招く虞があるという課題が見出された。
【０００５】
本開示の１つの局面は、車両に搭載され、浮動小数点演算を実施可能な制御装置において、非数発生時の処理性能の劣化を抑制する技術を提供することにある。
【課題を解決するための手段】
【０００６】
本開示の一態様による制御装置（２０Ａ，２０Ｂ）は、演算判定部（Ｓ１２０，Ｓ２２０）と、命令実行部（Ｓ１３０，Ｓ１５０，Ｓ２００，Ｓ２５０，Ｓ２６０，Ｓ３１０）と、を備える。演算判定部は、浮動小数点演算によって０を０で除する演算をさせる演算命令を表す除算命令の有無を判定するように構成される。
【０００７】
命令実行部は、除算命令がある場合に、除算命令に含まれる各値の符号を加味して除算を乗算とした０に０を乗じる演算とする乗算命令を生成し、除算命令に換えて乗算命令を実行させるように構成される。
【０００８】
このような構成によれば、０を０で除する演算命令である除算命令に換えて、符号を考慮した乗算命令を実行させるので、非数が伝播することを抑制しつつ、非数を所定値に置換して用いる演算を行う場合等に生じ得る処理性能の劣化を抑制することができる。
【０００９】
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１０】
【図１】電子制御システムの構成を示すブロック図である。
【図２】レジスタ群およびＲＡＭの構成例を示す模式図である。
【図３】演算部が実行する命令実行処理のフローチャートである。
【図４】命令実行処理のうちの例外処理を示すフローチャートである。
【図５】命令実行処理にて取得される命令の一例を示す模式図である。
【図６】生成されるサブルーチンの一例を示す説明図である。
【図７】無効演算による入出力例を示すマップである。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、本開示の実施形態を説明する。
［１．第１実施形態］
［１−１．構成］
図１は、本発明が適用された電子制御システム１の構成を示すブロック図である。電子制御システム１は、電子制御装置５を備える。電子制御システム１は、クランク角センサ３１と、インジェクタ３２とを備えてもよい。
【００１２】
電子制御装置５は、マイクロコンピュータ１０と、入出力回路７とを備え、マイクロコンピュータ１０は、複数の演算部２０Ａ，２０Ｂと、ＲＯＭ１２と、ＲＡＭ１３と、インタフェース部１５とを備える。ＲＯＭ１２およびＲＡＭ１３は、周知のメモリであり、例えば半導体メモリとして構成される。なお、入出力回路７は、電子制御装置５と外部の装置との間でデータをやり取りするための周知のインタフェース回路であり、図面においてはＩ／Ｆと表記する周知のインタフェース部１５を介してマイクロコンピュータ１０内外のデータのやり取りを行う。また、本実施形態では２つの演算部２０Ａ，２０Ｂを備える構成を例示するが、演算部の数は、１でも３以上であってもよい。
【００１３】
複数の演算部２０Ａ，２０Ｂとしては、演算部［Ａ］２０Ａと、演算部［Ｂ］２０Ｂとを備える。各演算部２０Ａ，２０Ｂは、同様のハードウェア構成であり、それぞれ、ＣＰＵ２１Ａ，２１Ｂと、ＦＰＵ２２Ａ，２２Ｂと、レジスタ群２３Ａ，２３Ｂと、を有する。演算部２０Ａ，２０Ｂの各機能は、ＣＰＵ２１Ａ，２１ＢおよびＦＰＵ２２Ａ，２２Ｂが不揮発性メモリに格納されたプログラムを実行することにより実現される。この例では、ＲＯＭ１２、ＲＡＭ１３が、プログラムを格納した不揮発性メモリに該当する。また、このプログラムが実行されることで、プログラムに対応する方法が実行される。また、電子制御装置５は、１つのマイクロコンピュータを備えてもよいし、複数のマイクロコンピュータを備えてもよい。
【００１４】
ＣＰＵ２１Ａ，２１Ｂは、予め定められた演算順序に従って予め定められたプログラムを実行する周知の構成であり、割り込みに対応可能である。ＣＰＵ２１Ａ，２１Ｂは、プログラムを実行することによる機能の一部として、例えば、後述する命令実行処理を実施する機能を備える。
【００１５】
ＣＰＵ２１Ａ，２１Ｂに含まれる各部の機能を実現する手法はソフトウェアに限るものではなく、その一部又は全部の機能は、一つあるいは複数のハードウェアを用いて実現されてもよい。例えば、上記機能がハードウェアである電子回路によって実現される場合、その電子回路は、デジタル回路、又はアナログ回路、あるいはこれらの組合せによって実現されてもよい。
【００１６】
レジスタ群２３Ａ，２３Ｂには、ＣＰＵ２１Ａ，２１Ｂによる演算結果等が一時的に記録される。レジスタ群２３Ａ，２３Ｂは、一例として図２に示すように、予め定められた変数の演算結果を記録するための、Ｒ０からＲ３１までのデータ記録領域を備える。データ記録領域には、浮動小数点型データの格納領域が確保される。
【００１７】
クランク角センサ３１は、車両の内燃機関におけるクランクの角度を検知する周知のセンサである。また、インジェクタ３２は、車両の内燃機関における周知の燃料噴射装置である。インジェクタ３２は、主としてＣＰＵ２１Ａ，２１Ｂによって制御される。
【００１８】
ＦＰＵ２２Ａ，２２Ｂは、プログラムに基づく演算のうち、浮動小数点演算を実行する。浮動小数点演算は浮動小数点型データを用いた演算である。ＦＰＵ２２Ａ，２２Ｂを備えることによって、浮動小数点型データによる演算が可能となり、固定小数点型データに比べて細かい精度で演算結果を得られる。演算結果の浮動小数点型データは、レジスタ群２３Ａ，２３Ｂに記録される。ＦＰＵ２２Ａ，２２Ｂは、例えば、ＩＥＥＥ７５４規格に従ったデータ形式で、浮動小数点型データを表す。
【００１９】
つまり、ＩＥＥＥ７５４規格に従う単精度の浮動小数点型データは、１ビットの符号部、８ビットの指数部、２３ビットの仮数部で構成される。この規格の浮動小数点データでは、例えば、数値として表現できない演算結果を、「非数」として表現できるようになっている。
【００２０】
浮動小数点型データによる演算では、非数が発生すると、この非数を用いた演算結果は全て非数となってしまう。このため、非数が発生した場合には、非数を非数でない正常値に書き換える必要がある。０で除する演算や、∞（無限大）を用いた演算等の演算結果が、数値として表現できない演算結果の一例として挙げられる。
【００２１】
例えばこの規格では、指数部の８ビットが全て「１」で、すなわち指数部が１０進表記の「２５５」で、仮数部が「０」以外の場合、この浮動小数点型データは「非数」を表す。また、前述の規格では、指数部の８ビットが全て「１」で仮数部が「０」の場合、この浮動小数点型データは「無限大」を表す。なお、以下では、０で除する演算や、無限大を用いた演算のような、数値として表現できない演算結果となる演算を、無効な演算といい、或いは無効な演算に含まれる無効な演算に命令を無効命令という。
【００２２】
ＣＰＵ２１Ａ，２１Ｂは、プログラムに基づく演算のうち、固定小数点演算を実行し、浮動小数点演算をＦＰＵ２２Ａ，２２Ｂに実行させる。ＣＰＵ２１Ａ，２１Ｂは前述のように割込に対応可能である。なお、割込には、周知の割込コントローラ等からの要求に基づくハードウェア割込と、ＣＰＵ２１Ａ，２１Ｂ自身の命令実行に基づくソフトウェア割込とがある。本実施形態では、ＣＰＵ２１Ａ，２１Ｂはハードウェア割込に対応する。ただし、ＣＰＵ２１Ａ，２１Ｂは、ソフトウェア割込に対応するものであってもよいし、これらの両方に対応するものであってもよい。
【００２３】
ＣＰＵ２１Ａ，２１Ｂは、プログラムに基づいて、後述する処理を実施する。また、ＣＰＵ２１Ａ，２１Ｂは、クランク角センサ３１による検知結果等に基づいてインジェクタ３２の作動等を制御する周知の車両制御処理も実施する。
【００２４】
ＣＰＵ２１Ａ，２１Ｂは、割り込みが発生すると、割込時ＣＰＵ処理を実施する。具体的にはＣＰＵ割込要求信号が入力されると、ＣＰＵ２１Ａ，２１Ｂは、現在実行中の処理を中断し、その処理を再開するのに必要な処理情報を、レジスタ群２３Ａ，２３Ｂに退避、すなわちスタックさせる。特に、本実施形態では、図２に示すように、レジスタ群２３Ａ，２３Ｂのうちの基準レジスタ２３Ｄを含む領域に、処理情報を退避させる。
【００２５】
なお、基準レジスタ２３Ｄとは、相対アドレスアクセスの際の基準アドレス１３Ｄが記載されたレジスタを示す。また、相対アドレスアクセスとは、ＲＡＭ１３において設定された基準アドレス１３Ｄからの相対パスによってＲＡＭ１３における記録領域を特定する手法を表す。
【００２６】
すなわち、ＣＰＵ２１Ａ，２１Ｂは、ＲＡＭ１３へのアクセスの際に、基準レジスタ２３Ｄに記載された基準アドレス１３Ｄを参照することによって基準アドレス１３Ｄを認識し、基準アドレス１３Ｄからの相対パスでＲＡＭ１３内の領域を特定するように構成される。
【００２７】
また、処理情報とは、例えば、フラグ等の処理状態を表す情報である。なお、本実施形態では、中断されたプログラム中で用いられていた所謂ローカル変数の内容を表す情報も処理情報に含むものとする。ＣＰＵ２１Ａ，２１Ｂは、ＣＰＵ割込要求信号が入力されたときに取得した割込情報に基づいて、実行すべき割込処理、例えば後述する例外処理を特定する。
【００２８】
ＣＰＵ２１Ａ，２１Ｂは、このようにして特定した割込処理として、例えば後述する例外処理を実行し、この割込処理が完了した後、退避しておいた情報を基準レジスタ２３Ｄを含む領域から読み出し、その情報に基づき、先に中断した処理を再開する。なお、以下では、処理情報を基準レジスタ２３Ｄを含む領域に退避させる処理を退避処理といい、退避しておいた情報を基準レジスタ２３Ｄを含む領域から読み出す処理を復帰処理という。
【００２９】
［１−２．処理］
次に、演算部２０Ａ，２０Ｂが実行する命令実行処理について、図３のフローチャートを用いて説明する。命令実行処理は、演算部２０Ａ，２０Ｂが浮動小数点演算を実行する際に起動される処理であり、浮動小数点演算が終了するまで繰り返し実行される処理である。なお、下記では演算部２０Ａが命令実行処理を実行する構成を例示するが、演算部２０Ｂが命令実行処理を実行してもよいし、演算部２０Ａ，２０Ｂが協働して命令実行処理を実行してもよい。
【００３０】
命令実行処理では、まず、Ｓ１１０で、演算部２０Ａが、命令が含まれる演算を選択する。演算の形態は任意であるが、例えば、プログラムの１行を演算として選択してもよい。
続いて、Ｓ１２０で、演算部２０Ａは、選択した演算に無効命令が含まれているか否かを判定する。演算部２０Ａは、Ｓ１２０で無効命令が含まれていると判定した場合には、Ｓ１３０へ移行し、例外設定が有効であるか否かを判定する。例外設定とは、例外処理等の割込処理を実行するか否かを決定するための設定であり、例えば、ＦＰＵ２２Ａ，２２Ｂのレジスタで管理される。特に、例外設定は、制御単位毎に設定される。制御単位とは、エアコン、燃料噴射等の制御対象毎、或いは、制御対象を制御する際の演算毎等を表す。
【００３１】
演算部２０Ａは、Ｓ１３０で例外設定が有効であると判定した場合には、Ｓ１４０へ移行し、後述する例外処理を実行した後、図３の命令実行処理を終了する。
一方、演算部２０Ａは、Ｓ１３０で例外設定が有効でないと判定した場合には、Ｓ１５０へ移行し、無効命令に換えてデフォルト値を出力した後、図３の命令実行処理を終了する。すなわち、演算部２０Ａは、例外設定が無効の際に、除算命令を含む予め設定された無効命令があると、無効命令の演算結果を規定値であるデフォルト値に置換して出力する。
【００３２】
また、演算部２０Ａは、Ｓ１２０で選択した演算に無効命令が含まれていないと判定した場合には、Ｓ１６０へ移行し、無効命令でない命令である有効命令を含む演算を実行した後、図３の命令実行処理を終了する。
【００３３】
次に、演算部２０Ａが実行する例外処理について、図４のフローチャートを用いて説明する。
まず、Ｓ２００で、退避処理を実行する。退避処理では、前述のように、処理情報を、基準レジスタ２３Ｄを含む領域に退避させる。なお、この際、処理情報を基準レジスタ２３Ｄのみを使って退避させてもよい。演算部２０Ａが処理情報を基準レジスタ２３Ｄのみを使って退避させる場合には、通常の処理では利用しない基準レジスタ２３Ｄのみが退避処理によって書き変わるため、例外処理によってレジスタ群２３Ａ，２３Ｂに書き込まれるデータが、退避された処理情報に影響を与えることがないようにすることができる。
【００３４】
続いて、Ｓ２１０で、演算部２０Ａは、無効命令と戻りアドレスとを取得する。戻りアドレスとは、無効命令を含む演算が書き込まれていたＲＯＭ１２上の位置を示し、この例外処理が終了した後で、再度ＲＯＭ１２上のプログラムを読み出す際に目印となる位置である。
【００３５】
続いて、Ｓ２２０で、演算部２０Ａは、無効命令に除算を含むか否かを判定する。演算部２０Ａは、Ｓ２２０で無効命令に除算を含むと判定した場合には、Ｓ２３０へ移行し、レジスタ群２３Ａ，２３Ｂからこの命令での演算に用いる分子ＲＡおよび分母ＲＢのレジスタ番号を取得する。ここでの命令は、図５に示すように、例えば、３２ビットで表現され、除算を示すコード「１０１１」が含まれる。また、この処理では、分子ＲＡおよび分母ＲＢが正の数か負の数かを表す符号も取得する。
【００３６】
続いて、Ｓ２４０で、演算部２０Ａは、ＲＡ＝０かつＲＢ＝０であるか否かを判定する。ここでの０は、＋０または−０を表す。この処理では、演算部２０Ａが、除算命令の有無を判定している。なお、除算命令とは、浮動小数点演算によって０を０で除する演算をさせる演算命令を表す。
【００３７】
演算部２０Ａは、Ｓ２４０でＲＡ＝０かつＲＢ＝０であると判定した場合には、Ｓ２５０へ移行し、除算命令に含まれる除算を乗算に変更した乗算命令を生成する。この際、演算部２０Ａは、この命令での演算に用いる分子ＲＡおよび分母ＲＢのレジスタ番号をそのまま採用するとともに、例えば、図５に示すように、除算を示すコード「１０１１」を、乗算示すコード「１０１０」に置換する。すなわち、分子ＲＡおよび分母ＲＢの符号を加味しつつ０に０を乗じる演算とする乗算命令を生成する。なお、乗算命令は、除算命令に換えて、後述するＳ２８０で実行される。
【００３８】
続いて、Ｓ２６０で、演算部２０Ａは、乗算命令を含むサブルーチンをＲＡＭ１３上に生成する。この処理で生成されるサブルーチンは、例えば、図６に示すようなデータを有する。すなわち、サブルーチンには、ＦＰＵが実行する命令、サブルーチンからのリターンする命令が含まれる。
【００３９】
特に、処理の内容には、ＦＰＵが実行する命令、サブルーチンからのリターンする命令が含まれる。サブルーチンからのリターンする命令とは、サブルーチンを終了後に処理をメインルーチンに戻すための命令である。なお、サブルーチンでは、複数の演算部２０Ａ，２０Ｂによって並列処理を行う場合に備えて、処理を行う演算部毎に処理の内容が記載される。
【００４０】
ところで、サブルーチンを生成するＳ２６０の処理は、演算部２０Ａが、Ｓ２２０で無効命令に除算を含まないと判定した場合、およびＳ２４０でＲＡ＝０かつＲＢ＝０でないと判定した場合にも実行される。この場合には、演算に含まれる無効命令による解ＲＤを図７に示すマップに従って決定されるデフォルト値として出力するためのサブルーチンを生成する。
【００４１】
例えば、図７に示すマップの上２段では、分子ＲＡが非数でない値、つまり±normである場合であって、分母ＲＢが０である場合に、分子ＲＡおよび分母ＲＢの値の符号の組み合わせに応じて解ＲＤを決定する例を示す。すなわち、この処理では、分子ＲＡおよび分母ＲＢの符号の排他的論理和が解ＲＤの符号となり、解ＲＤの絶対値が最大値maxになるように設定される。ここでの最大値maxは、前述の「無限大」と同じ値であってもよいが、「無限大」を除く最大値として予め規定された値であることが好ましい。
【００４２】
なお、図７に示すマップの下２段では、分子ＲＡおよび分母ＲＢが共に０である場合の演算結果も示している。上記に示すように除算命令を乗算命令に置換する処理を実行すれば、符号を加味した解ＲＤが得られる。
【００４３】
続いて、Ｓ２７０で、演算部２０Ａは、例外設定を無効に設定する。例外設定を無効にすれば、例外設定が無効な間、無効命令による例外発生を抑制するので、他の処理によって生成したサブルーチン等が上書きされることを抑制できる。
【００４４】
続いて、Ｓ２８０で、演算部２０Ａは、ＦＰＵ２２Ａ，２２Ｂによるサブルーチンを実行する。
続いて、演算部２０Ａは、サブルーチンの実行が終了すると、Ｓ２９０で、例外設定を有効に設定する。例外設定を再び有効にすることで、次に選択する命令に無効命令が含まれる場合に、例外処理を実行できるようにする。
【００４５】
続いて、Ｓ３００で、演算部２０Ａは、戻りアドレスをインクリメントする。この処理は、同じ演算を再度実行することを抑制するためである。
続いて、Ｓ３１０で、演算部２０Ａは、前述の復帰処理を実行する。この際、基準レジスタ２３Ｄに基準アドレス１３Ｄを記載する。なお、基準アドレス１３Ｄは、予めＲＯＭ１２内の特定の領域に記載されており、この領域を参照することで基準アドレス１３Ｄを特定することができるように設定されている。
【００４６】
この処理の後、図４の例外処理を終了する。
［１−３．効果］
以上詳述した第１実施形態によれば、以下の効果を奏する。
【００４７】
（１ａ）上記の電子制御システム１において、演算部２０Ａ，２０Ｂは、浮動小数点演算によって０を０で除する演算をさせる演算命令を表す除算命令の有無を判定するように構成される。演算部２０Ａ，２０Ｂは、除算命令がある場合に、除算命令に含まれる各値の符号を加味して除算を乗算とした０に０を乗じる演算とする乗算命令を生成し、除算命令に換えて乗算命令を実行させるように構成される。
【００４８】
このような構成によれば、０を０で除する演算命令である除算命令に換えて、符号を考慮した乗算命令を実行させるので、非数が伝播することを抑制しつつ、非数を所定値に置換して用いる演算を行う場合等に生じ得る処理性能の劣化を抑制することができる。
【００４９】
例えば、０を０で除する場合に、この演算結果を単に０に置換する構成では、分母分子の符号を判定するための場合分けが必要となる。つまり、分母分子の＋−の符号の組み合わせによる排他的論理和を０に対して付加するための処理が必要となり、処理に遅延が生じるなど、処理性能の劣化が発生する虞がある。本開示の構成では、０を０で除する除算命令に換えて、符号を考慮した乗算命令を実行させるので、非数発生時の処理性能の劣化を抑制することできる。
【００５０】
（１ｂ）上記の電子制御システム１において演算部２０Ａ，２０Ｂは、乗算命令を含むサブルーチンを予め設定されたＲＡＭ上に生成し、該サブルーチンを実行するように構成される。
【００５１】
このような構成によれば、乗算命令を含むサブルーチンをＲＡＭ上に生成するので、予めＲＯＭ上に乗算命令を含むサブルーチンを準備しておく構成と比較して、ＲＯＭ領域を節約することができる。
【００５２】
（１ｃ）上記の電子制御システム１において演算部２０Ａ，２０Ｂは、予め準備された例外設定が有効であり、かつ除算命令がある場合に、乗算命令を生成するように構成される。また、例外設定が無効の際に、除算命令を含む予め設定された無効命令があると、無効命令に換えてデフォルト値を出力するように構成される。また、演算部２０Ａ，２０Ｂは、サブルーチンに基づく乗算命令を実行する際に、例外設定を無効とし、乗算命令を実行させた後に、例外設定を有効とするように構成される。
【００５３】
このような構成によれば、サブルーチンが実行されるまで例外設定を一時的に無効とするので、生成したサブルーチンが別の処理によって上書き等されないようにすることができる。
【００５４】
（１ｄ）上記の電子制御システム１は、演算によって得られるデータを保持するように構成された複数のレジスタを有するレジスタ群２３Ａ，２３Ｂをさらに備える。該レジスタ群２３Ａ，２３Ｂのうちの相対アドレスアクセスの際の基準アドレス１３Ｄが記載されたレジスタを基準レジスタ２３Ｄとして、演算部２０Ａ，２０Ｂは、乗算命令を生成して乗算命令を実行する際に、基準レジスタ２３Ｄを含むレジスタを、データの退避領域として利用するように構成される。
【００５５】
このような構成によれば、通常の制御時には利用されない基準レジスタ２３Ｄを用いてデータの退避を行うので、他の制御によってデータが書き換えられる等の悪影響を抑制することができる。
【００５６】
（１ｅ）上記の電子制御システム１においては、演算部２０Ａ，２０Ｂが実行する処理に対して、制御単位毎に予め準備された例外設定を有効とするか無効とするかを設定可能に構成されており、演算部２０Ａ，２０Ｂは、実行する処理についての例外設定が有効であり、かつ除算命令がある場合に、乗算命令を生成し、実行する処理についての例外設定が無効の際に、除算命令を含む予め設定された無効命令があると、無効命令に換えてデフォルト値を出力するように構成される。
【００５７】
このような構成によれば、制御単位毎に除算命令を乗算命令として実行するか、デフォルト値を出力するかを設定することができる。
［２．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００５８】
（２ａ）上記実施形態では、電子制御システム１にクランク角センサ３１とインジェクタ３２とが接続され、演算部２０Ａ，２０Ｂが内燃機関の制御を実行する例について説明したが、これに限定されるものではない。例えば、クランク角センサ３１およびインジェクタ３２に換えて、任意のセンサおよびアクチュエータを備え、センサによる検知結果や演算部による演算結果に応じてアクチュエータを制御する構成としてもよい。
【００５９】
（２ｂ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【００６０】
（２ｃ）上述した電子制御システム１の他、当該電子制御システム１の構成要素となる制御装置、当該電子制御システム１としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、浮動小数点演算を伴う制御方法など、種々の形態で本開示を実現することもできる。
【００６１】
［３．実施形態の構成と本開示の構成との関係］
上記実施形態において、演算部２０Ａ，２０Ｂは本開示でいう制御装置に相当する。また、演算部２０Ａ，２０Ｂが実行する処理のうちの、Ｓ１２０，Ｓ２２０の処理は本開示でいう演算判定部に相当し、Ｓ１３０，Ｓ１５０，Ｓ２００，Ｓ２５０，Ｓ２６０，Ｓ３１０の処理は命令実行部に相当する。また、Ｓ２７０，Ｓ２９０の処理は本開示でいう設定変更部に相当する。
【符号の説明】
【００６２】
１…電子制御システム、５…電子制御装置、７…入出力回路、１０…マイクロコンピュータ、１２…ＲＯＭ、１３…ＲＡＭ、１３Ｄ…基準アドレス、２０Ａ，２０Ｂ…演算部、２１Ａ，２１Ｂ…ＣＰＵ、２２Ａ，２２Ｂ…ＦＰＵ、２３Ａ，２３Ｂ…レジスタ群、２３Ｄ…基準レジスタ、３１…クランク角センサ、３２…インジェクタ。
【図１】
2019101962.tif 000003
【図２】
2019101962.tif 000004
【図３】
2019101962.tif 000005
【図４】
2019101962.tif 000006
【図５】
2019101962.tif 000007
【図６】
2019101962.tif 000008
【図７】
2019101962.tif 000009