(57)【要約】【課題】本発明は、例えば車両のパワートレーン制御のようなシーケンシャルな演算処理が必要な処理に対しても、処理を分割して高速化できるマルチコアプロセッサ及びこれを用いたエンジン制御装置を提供することを目的とする。【解決手段】２つのコア６１、６２を有するマルチコアプロセッサ１００であって、  前記コアの前半の演算内容が、取得したデジタルデータのみから演算できる演算内容であり、後半の演算内容が、過去の演算結果も使用する演算内容に分割されていることを特徴とする。【選択図】図１
2009199462.tif 000002
【特許請求の範囲】
【請求項１】
２つのコアを有するマルチコアプロセッサであって、
前記コアの前半の演算内容が、取得したデジタルデータのみから演算できる演算内容であり、後半の演算内容が、過去の演算結果も使用する演算内容に分割されていることを特徴とするマルチコアプロセッサ。
【請求項２】
一方の前記コアの演算が終了した後に、他方の前記コアの後半の演算が開始するように演算タイミングを制御するタイミング管理回路を有することを特徴とする請求項１に記載のマルチコアプロセッサ。
【請求項３】
前記コアの各回の演算結果を記憶し、前記コア間で演算結果を授受できる結果反映用メモリを有することを特徴とする請求項１又は２に記載のマルチコアプロセッサ。
【請求項４】
演算対象区間のアナログデータをサンプリングタイミングに合わせてデジタルデータに変換し、２つのメモリバンクに交互に記憶するＡＤバッファを有し、
前記２つのコアは、前記２つのメモリバンクに対応して交互に前記デジタルデータを取得することを特徴とする請求項１乃至３のいずれか一項に記載のマルチコアプロセッサ。
【請求項５】
前記タイミング管理回路は、前記デジタルデータの最大値から算出された基準演算時間に基づいて、前記コアの演算タイミングを制御することを特徴とする請求項２乃至４のいずれか一項に記載のマルチコアプロセッサ。
【請求項６】
前記タイミング管理回路は、前記デジタルデータの最大値から演算対象区間の演算に必要な必要演算時間を算出し、前記演算対象区間の演算が他の優先する処理の演算タイミングまでに終了できない場合には、前記優先する処理の演算を妨げないように、前記演算対象区間を分割して演算処理を実行させる制御を行うことを特徴とする請求項２乃至５のいずれか一項に記載のマルチコアプロセッサ。
【請求項７】
請求項１乃至６のいずれか一項に記載のマルチコアプロセッサを有し、
該マルチコアプロセッサの演算対象であるデジタルデータは、車両のエンジンに設けられたセンサにより取得されたアナログデータをＡ／Ｄ変換したデータであり、
前記マルチコアプロセッサの演算処理結果に基づいて、前記エンジンの制御を行うことを特徴とするエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサ及びこれを用いたエンジン制御装置に関し、特に、２つのコアを有するマルチコアプロセッサ及びこれを用いたエンジン制御装置に関する。
【背景技術】
【０００２】
従来から、複数のプロセッサが並列に処理を行った後に、同期を取るマルチプロセッサシステムであって、第１のプロセッサと、第２のプロセッサと、第１のプロセッサの処理時間と第２のプロセッサの処理時間との比率に応じて、第１のプロセッサに入力されるクロックの周波数を制御するためのクロック周波数制御手段とを含むとともに、クロックの周波数に応じて可変電源を制御して、第１のプロセッサに供給される電源電圧を変更し、第１のプロセッサの消費電力を大きく削減するようにしたマルチプロセッサシステムが知られている（例えば、特許文献１参照）。
【特許文献１】特開２００２−２１５５９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述の特許文献１に記載の構成では、低消費電力化の要請には応えることができるが、演算の高速化のニーズへの対応は考慮されていない。
【０００４】
ところで、マルチコアプロセッサで演算を動的負荷分散する場合、処理をスレッド単位に分割し、各コアの処理負荷に応じて処理を割り振って演算し、演算の高速化を図る手法がある。かかる手法は、パーソナルコンピュータ用のアプリケーションや、車両用ナビゲーションシステム用の情報処理であれば、処理のスレッド単位への分割が可能であるため、適用することができる。しかしながら、例えば車両のエンジン等を含むパワートレーンの制御では、高速化の要請が高いが、これらの処理は大きな処理の固まりであり、シーケンシャルな処理であるため、スレッド単位での分割が困難であるという問題がある。
【０００５】
そこで、本発明は、例えば車両のパワートレーン制御のようなシーケンシャルで大きな演算処理が必要な処理に対しても、処理を分割して高速化できるマルチコアプロセッサ及びこれを用いたエンジン制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、第１の発明に係るマルチコアプロセッサは、２つのコアを有するマルチコアプロセッサであって、
前記コアの前半の演算内容が、取得したデジタルデータのみから演算できる演算内容であり、後半の演算内容が、過去の演算結果も使用する演算内容に分割されていることを特徴とする。
【０００７】
これにより、全体としてシーケンシャルな演算処理に対しても、その演算処理内容を、新たに取得したデジタルデータに基づいて単独の処理が可能な部分と、前回の演算結果が必要なシーケンシャルな演算処理を要求される部分に分割して演算処理を行うことができ、マルチコアプロセッサによる高速演算処理を実行することができる。
【０００８】
第２の発明は、第１の発明に係るマルチコアプロセッサにおいて、
一方の前記コアの演算が終了した後に、他方の前記コアの後半の演算が開始するように演算タイミングを制御するタイミング管理回路を有することを特徴とする。
【０００９】
これにより、前回の演算結果を使用するシーケンシャルな演算処理の部分については、２つのコアを用いて連続的に演算処理を実行することができるとともに、単独で処理が可能なデジタルデータについては、前半の演算で各々個別に実行することができる。
【００１０】
第３の発明は、第１又は第２の発明に係るマルチコアプロセッサにおいて、
前記コアの各回の演算結果を記憶し、前記コア間で演算結果を授受できる結果反映用メモリを有することを特徴とする。
【００１１】
これにより、２つの各コアの各演算結果を、結果反映用メモリを介して自コアから相手コアに渡すことができ、シーケンシャルな処理を２つのコアを用いてスムーズかつ高速に実行することができる。
【００１２】
第４の発明は、第１〜３のいずれかに記載のマルチコアプロセッサにおいて、
演算対象区間のアナログデータをサンプリングタイミングに合わせてデジタルデータに変換し、２つのメモリバンクに交互に記憶するＡＤバッファを有し、
前記２つのコアは、前記２つのメモリバンクに対応して交互に前記デジタルデータを取得することを特徴とする。
【００１３】
これにより、センサ等で取得したアナログデータに対し、マルチコア化による高速な演算処理を実行することができ、制御等に好適に利用することができる。
【００１４】
第５の発明は、第２〜４のいずれかに記載のマルチコアプロセッサにおいて、
前記タイミング管理回路は、前記デジタルデータの最大値から算出された基準演算時間に基づいて、前記コアの演算タイミングを制御することを特徴とする。
【００１５】
これにより、デジタルデータの最大値を用いて後半の演算処理を開始する演算タイミングを適切に設定することができる。
【００１６】
第６の発明は、第２〜５のいずれかに記載のマルチコアプロセッサにおいて、
前記タイミング管理回路は、前記デジタルデータの最大値から演算対象区間の演算に必要な必要演算時間を算出し、前記演算対象区間の演算が他の優先する処理の演算タイミングまでに終了できない場合には、前記優先する処理の演算を妨げないように、前記演算対象区間を分割して演算処理を実行させる制御を行うことを特徴とする。
【００１７】
これにより、大きな演算が必要な処理に対しても、他の重要な処理を妨げることなく、適切なタイミングで演算処理を実行することができる。
【００１８】
第７の発明に係るエンジン制御装置は、第１〜６のいずれかに記載のマルチコアプロセッサを有し、
該マルチコアプロセッサの演算対象であるデジタルデータは、車両のエンジンに設けられたセンサにより取得されたアナログデータをＡ／Ｄ変換したデータであり、
前記マルチコアプロセッサの演算処理結果に基づいて、前記エンジンの制御を行うことを特徴とする。
【００１９】
これにより、大きくシーケンシャルな演算処理が要求される車両のエンジン制御を、マルチコアプロセッサを用いて高速化することができる。また、モデルベース演算の手法を利用して演算回路設計を行う場合にも、演算処理を高速化することができる。
【発明の効果】
【００２０】
本発明によれば、全体としてシーケンシャルな処理が要求される演算処理についても、高速化を図ることができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
【００２２】
図１は、本発明を適用した実施例に係るマルチコアプロセッサ１００及びこれを用いたエンジン制御装置１５０の全体構成を示した図である。図１において、本実施例に係るマルチコアプロセッサ１００は、２つのコア６１、６２を備えたマルチコア６０を有する。また、本実施例に係るマルチコアプロセッサ１００は、必要に応じて、タイミング管理回路７０と、結果反映用メモリ８０と、ＡＤバッファ５０と、共有メモリ９０とを備えてよい。
【００２３】
また、マルチコアプロセッサ１００がエンジン制御装置１５０として適用される場合には、関連構成要素として、エンジン１１０と、センサ１２０を備える。
【００２４】
マルチコア６０は、２つ以上のプロセッサコアを１個のパッケージに集積したマイクロプロセッサであり、外部的には１つのＣＰＵ（Central  Processing  Unit）でありながら、２つのＣＰＵを搭載した状態と同様の構成となっている。図１においては、２つのコア６１、６２を搭載したマルチコア６０が示されており、各コア６１、６２は、独立したＣＰＵとして構成されているので、独立して演算処理を行うことができる。本実施例に係るマルチコアプロセッサ１００においては、２つのコア６１、６２で処理を分担し、演算処理の高速化を実現する。なお、図１においては、２とのコア６１、６２を有するマルチコア６０が示されているが、必要に応じて、更に多くのコア６１、６２を備えてもよい。また、マルチコア６０を利用した具体的な演算処理の内容は、後述する。
【００２５】
ＡＤバッファ５０は、アナログデータをデジタルデータにＡ／Ｄ変換し、デジタルデータを記憶するための一時記憶手段である。本実施例に係るマルチコアプロセッサ１００を制御装置として適用する場合、制御対象に設けられたセンサから検出されるデータの大部分はアナログデータであるため、ＡＤバッファ５０は、検出したアナログデータをマルチコア６０で演算処理が可能なデジタルデータに変換する。よって、ＡＤバッファ５０は、アナログデータを所定のサンプリング周期でサンプリングし、これを量子化して更に整数化する機能を備えていてよい。また、ＡＤバッファ５０は、例えば、Ａ／Ｄ変換後のデジタルデータが、自動的に登録されて記憶されるような機能を備えていてもよい。
【００２６】
ＡＤバッファ５０は、２つのメモリバンク５１、５２を有する２バンク構成であってよい。本実施例に係るマルチコアプロセッサ１００においては、２つのコア６１、６２を有するマルチコア６０を活用して演算処理を行うため、ＡＤバッファ５０も、これに対応して２つのメモリバンク５１、５２を備え、高速な処理能力を有することが好ましい。２つのメモリバンク５１、５２には、例えば、サンプリング周期に合わせて交互に取得したデジタルデータを交互に２つのメモリバンク５１、５２（以下、「ＡＤバッファ５１、５２」と呼ぶ。）に記憶させるようにすれば、コア６１、６２で演算処理を行う場合、これに合わせて交互に演算処理を実行することができる。
【００２７】
例えば、図１において、エンジン１１０のクランク角ＣＡの５°の変化をサンプリング周期とし、エンジン１１０に設けられたセンサ１２１〜１２４の検出値をデジタル化してデジタルデータとして記憶してゆく場合、クランク角ＣＡが０°のときには、ＡＤバッファ５１にデジタルデータＡＤ１［０］、ＡＤ２［０］、・・・を記憶し、次いでクランク角ＣＡが５°のときには、ＡＤバッファ５２にデジタルデータＡＤ１［５］、ＡＤ２［５］・・・を記憶し、次いでクランク角ＣＡが１０°のときには、ＡＤバッファ５１にデジタルデータＡＤ１［１０］、ＡＤ２［１０］、・・・を記憶するというように、２つのＡＤバッファ５１、５２に、交互にサンプリングされたデジタルデータが記憶されるような処理を行っている。これにより、図１で示すように、ＡＤバッファ５１に記憶されたクランク角ＣＡが０°、１０°、２０°のときのデジタルデータはコア６１が読み取り、ＡＤバッファ５２に記憶されたクランク角ＣＡが５°、１５°、２５°のときのデジタルデータはコア６２が読み取るようにすることができ、全体の演算処理を分割して各コア６１、６２に分担させることができる。
【００２８】
なお、ＡＤバッファ５０からマルチコア６０にデジタルデータが送られる際の具体的な処理内容については、後述する。
【００２９】
タイミング管理回路７０は、マルチコア６０の２つのコア６１、６２で実行される演算処理の演算開始タイミングを制御するとともに、演算処理対象区間のデジタルデータを演算処理するのに必要な時間を算出し、必要に応じて演算処理を分割して実行させる等の演算タイミング全般を制御する回路である。
【００３０】
タイミング管理回路７０は、適切な演算開始タイミングを定めるため、基準演算時間レジスタ７１を備えてもよい。基準演算時間レジスタ７１は、マルチコア６０で演算処理するデジタルデータに基づいて、各コア６１、６２で行う演算処理の基準演算時間がタイミング管理回路７０により見積もられたときに、これを記憶するレジスタである。なお、その具他的な演算内容については、後述する。
【００３１】
結果反映用メモリ８０は、各コア６１、６２で処理した各回の演算結果が出力されたら、これを記憶し、相手コア６１、６２の次の演算のために演算結果を供給するためのメモリである。つまり、結果反映用メモリ８０は、コア６１、６２間における、演算結果の授受のための中継媒体としての役割を果たす。結果反映用メモリ８０は、ＣＰＵで通常に用いられるメモリが適用されてよい。なお、結果反映用メモリ８０の具体的な演算内容については、後述する。
【００３２】
共有メモリ９０は、マルチコア６０の各コア６１、６２が共通に共有するメモリである。共有メモリ９０は、例えば、プログラムが記憶されたＲＯＭ（Read  Only  Memory）を備え、各コア６１、６２がこれを読み込むことにより、演算処理が実行されるように構成されてもよい。また、共有メモリ９０は、コア６１、６２が演算作業を行うことができるＲＡＭ（Random  Access  Memory）を備えていてもよい。
【００３３】
マルチコアプロセッサ１００は、マルチコア６０を含むマイクロプロセッサとして構成され、１チップとして構成されてよい。本実施例に係るマルチコアプロセッサ１００によれば、マルチコア６０を利用して、シーケンシャルな処理を多く含む演算処理についても、高速の演算処理を行うことができる。
【００３４】
エンジン１１０は、内燃機関を用いた車両の駆動源であり、本実施例に係るエンジン制御装置１５０における制御対象となる。本実施例に係るエンジン制御装置１５０においては、エンジン１１０のクランク角ＣＡの角度を基準としてデータ取得を行う例について説明する。
【００３５】
センサ１２０は、エンジン１１０の駆動状態を検出するための検出手段である。センサ１２０は、エンジン１１０の駆動状態を把握するために必要なデータを取得するため、適切な種類のセンサ１２０が設けられてよい。これらは、エンジン１１０及びエンジン制御装置１５０の用途に応じて定められてよく、例えば、燃焼圧を検出する圧力センサが含まれてもよい。
【００３６】
次に、図２を用いて、本実施例に係るマルチコアプロセッサ１００のマルチコア６０で行う具体的な演算処理内容の例について説明する。図２は、ＡＤバッファ５０及びマルチコア６０で行う演算処理内容の説明図である。
【００３７】
図２（ａ）は、ＡＤバッファ５０で行う処理内容の説明図である。図２（ａ）において、ＡＤバッファ５０内のデジタルデータの例が示されている。ＡＤバッファ５０は、２バンク構成のメモリバンクとして、ＡＤバッファ５１、５２の２つのメモリバンクを備えている。以下、ＡＤバッファ５１、５２を区別し、ＡＤバッファ５１を第１のＡＤバッファ５１、ＡＤバッファ５２を第２にＡＤバッファ５２と呼ぶこととする。
【００３８】
第１のＡＤバッファ５１及び第２のＡＤバッファ５２は、ともに所定のサンプリング周期で取得したデジタルデータを記憶している。図２においては、演算対象区間は、エンジン１１０のクランク角ＣＡで定められ、クランク角０ＣＡ〜９０ＣＡの演算対象区間で、５ＣＡ毎にサンプリングを行ってデジタルデータを取得する例を挙げている。
【００３９】
第１のＡＤバッファ５１には、クランク角が０ＣＡ、１０ＣＡ、２０ＣＡ、・・・のサンプリング周期におけるデジタルデータＡＤ１［０］、ＡＤ２［０］、・・・、ＡＤ１［１０］、ＡＤ２［１０］、・・・、ＡＤ１［２０］、ＡＤ２［２０］、・・・が記憶されている。
【００４０】
一方、第２のＡＤバッファ５２には、クランク角が５ＣＡ、１５ＣＡ、２５ＣＡ、・・・のサンプリング周期におけるデジタルデータＡＤ１［５］、ＡＤ２［５］、・・・、ＡＤ１［１５］、ＡＤ２［１５］、・・・、ＡＤ１［２５］、ＡＤ２［２５］、・・・が記憶されている。
【００４１】
つまり、ＡＤバッファ５０には、演算対象区間のデジタルデータを、サンプリングタイミングの交互に第１のＡＤバッファ５１と第２のＡＤバッファ５２に記憶してためるようにしている。これにより、マルチコア６０の２つのコア６１、６２を有効に活用した処理の分割が可能となり、かかる分割処理を行うための準備が整ったことになる。
【００４２】
なお、ＡＤバッファ５０に演算対象区間のデジタルデータが総て記憶されたら、デジタルデータＡＤ［０］〜ＡＤ［９０］の中で、最大値を抽出し、これを元に演算処理の最大演算時間を見積もるようにしてもよい。かかる最大演算時間の見積もり演算は、タイミング管理回路７０で行うようにしてよく、最大演算時間を基準演算時間として用いる場合には、これを基準演算時間レジスタ７１に記憶するようにしてもよい。
【００４３】
図２（ｂ）は、２つのコア６１、６２で実行される演算処理内容の説明図である。以下、コア６１、６２を区別し、コア６１を第１のコア６１、コア６２を第２のコア６２と呼ぶこととする。
【００４４】
図２（ｂ）において、横軸は時間ｔを示し、時間ｔの経過に沿った第１のコア６１及び第２のコア６２の演算内容が示されている。そして、第１のコア６１のｔ＝ｔ０より左側には、基準演算時間レジスタ７１に記憶された前半の演算処理の最大演算時間と、後半の演算処理の最大演算時間が基準演算時間として示されている。基準演算時間は、例えば、ＡＤレジスタ５０で取得されたデジタルデータ最大値を用いて、第１のコア６１で実際の演算を実施し、最大演算時間を見積もるようにしてもよい。図２（ｂ）には、第１のコア６１でそのような演算を行った例が示されている。このようにして算出された最大演算時間は、例えば、基準演算時間レジスタ７１に記憶され、タイミング管理回路７０により利用されてよい。
【００４５】
図２（ｂ）において、第１のコア６１及び第２のコア６２の双方とも、前半の演算内容と後半の演算内容が分割されている。第１のコア６１及び第２のコア６２の双方とも、前半の演算内容は、ＡＤバッファ５０に記憶されたデジタルデータのみから直接的に演算できる演算内容となっている。従って、前半の演算内容は、デジタルデータを取得したら、それまでの演算処理の進捗とは関係なく、独立して演算処理を行うことができる。図２（ｂ）においては、時刻ｔ＝ｔ０で第１のコア６１は前半の演算処理を開始し、時刻ｔ＝ｔ１で第２のコア６２は前半の演算処理を開始しているが、これらの処理は、第１のコア６１と第２のコア６２はリンクしておらず、独立して演算処理を実行している。
【００４６】
また、同一のコア６１、６２同士で見れば、同一のコア６１、６２における前回の演算処理が終了しないと、今回の演算処理を実行することはできないので、前回の演算処理が終了した後、直ちに次の演算処理を実行していることが分かる。つまり、第１のコア６１においては、０ＣＡの演算処理が終了したら、少し間を置いて直ちに１０ＣＡの演算処理を開始し、１０ＣＡの演算処理が終了次第、２０ＣＡの演算処理を開始していることが分かる。同様に、第２のコア６２においても、５ＣＡの演算処理が終了したら、直ちに１５ＣＡの演算処理を開始させ、１５ＣＡの演算処理が終了したら、２５ＣＡの演算処理を直ちに開始していることが分かる。
【００４７】
一方、第１のコア６１及び第２のコア６２の双方とも、後半の演算内容は、前回以前の過去の演算結果を利用して演算処理を行う演算内容となっている。つまり、上述のクランク角ＣＡで示した演算対象区間で示すと、２５ＣＡの後半の演算処理を行うためには、少なくとも２０ＣＡの演算結果が必要であり、２０ＣＡの後半の演算処理を行うためには、１５ＣＡの演算結果が必要となるような演算内容である。従って、各回における後半の演算開始タイミングは、前回の演算処理が終了した後に演算を開始するように設定されている。
【００４８】
図２（ｂ）において、第１のコア６１の０ＣＡの演算処理は時刻ｔ＝ｔ２において終了するが、第２のコア６２の５ＣＡの後半の演算処理は、ｔ＝ｔ２よりも遅いｔ＝ｔ３に開始されている。その際、第１のコア６１で演算処理されたサンプリングタイミング０ＣＡの演算結果は、第２のコア６２の５ＣＡの後半の演算に送られて使用されている。同様に、サンプリングタイミング５ＣＡの演算処理は、時刻ｔ＝ｔ４において終了するが、この結果は第１のコア６１で実行されるサンプリングタイミング１０ＣＡの後半の演算処理に用いられ、１０ＣＡの後半の演算処理は、時刻ｔ＝ｔ４よりも遅いｔ＝ｔ５に開始している。同様に、時刻ｔ＝ｔ６で第１のコア６１による１０ＣＡの処理が終了したら、時刻ｔ＝ｔ７に第２のコア６２の１５ＣＡの後半の演算処理が開始する。以下、同様に交互に第１のコア６１と第２のコア６２との間で、前回の演算処理が終了したら、今回の後半の演算処理を開始する、という演算処理を繰り返す。
【００４９】
このように、前半の、取得したデジタルデータのみに基づいて演算処理が可能な演算内容については、各コア６１、６２で前回の演算処理が終了したら直ちに今回の演算処理を開始させる一方で、後半の、前回のサンプリング時の演算結果が必要な演算内容については、相手コアの前回の演算結果が出た後のタイミングで演算処理を開始できるような演算処理を行うことにより、演算処理を高速化させることができる。つまり、全体としては、シーケンシャルで前回の演算結果を必要とする演算処理についても、その演算内容を細かく分析し、シーケンシャルに演算処理を実行しないと演算処理ができない部分と、デジタルデータから単独で演算処理が可能な部分とに分割し、シーケンシャルな演算が必要な部分については、前回の演算結果の終了後に演算処理を実行することにより、マルチコア６０を用いて全体の演算処理を分割して処理し、処理の高速化を図ることができる。これにより、シーケンシャルで大きな固まりを有する演算処理についても、複数のコア６１、６２を用いて、オーバーヘッドを少なくして演算処理を行うことが可能となり、モデルベース演算等の高負荷処理についても、高速演算を行うことができる。
【００５０】
なお、第１のコア６１と第２のコア６２との間の演算結果の授受は、結果反映用メモリ８０を用いて行うようにすれば、シーケンシャルな演算処理を２つのコア６１、６２で分割しつつも、全体としてスムーズなシーケンス演算処理を行うことができる。
【００５１】
また、タイミング管理回路７０においては、このようなスムーズな演算処理が実行できるように、基準演算時間を適切に設定するとともに、これに基づいて、第１のコア６１と第２のコア６２との間で演算結果の授受ができるようなタイミングを見積もり、各コア６１、６２の演算開始タイミングを指示して制御する。図２（ｂ）においては、第１のコア６１の演算開始タイミングｔ＝ｔ０及び第２の演算開始タイミングｔ＝ｔ１が適切なタイミングとなるように制御する。かかる演算開始タイミングは、デジタルデータのうち、最大値に基づいて最大演算時間を見積もるようにすれば、安全に総ての演算処理が収まるように演算開始タイミングを設定できるので、安全サイドで演算処理を制御する観点から、そのような設定としてもよい。
【００５２】
次に、図３を用いて、本実施例に係るマルチコアプロセッサ１００及びこれを用いたエンジン制御装置１５０の処理フローについて説明する。図３は、本実施例に係るマルチコアプロセッサ１００及びこれを用いたエンジン制御装置１５０の処理フローを示した図である。
【００５３】
ステップ１００では、演算対象区間のデジタルデータをＡＤバッファ５０に保存する。ＡＤバッファ５０は、第１のＡＤバッファ５１及び第２のＡＤバッファ５２を有する２バンク構成であってよい。なお、２バンク構成であることは必ずしも必須ではなく、１つのメモリバンクで総てのデジタルデータを保存し、これを第１のコア６１及び第２のコア６２に振り分けることも可能である。しかしながら、そのような構成では、ＡＤバッファ５０の処理負担が大きくなってしまうので、２バンク構成とすることが好ましい。また、ＡＤバッファ５０は、本実施例に係るマルチコアプロセッサ１００がエンジン制御装置１５０等の制御装置に適用され、アナログデータをデジタルデータに変換する必要があるときは必要であるが、例えば通信手段からの受信により最初からデジタルデータを取得可能な場合には、デジタルデータを保存できるバッファであれば、種々の態様の記憶手段を適用してよい。
【００５４】
ステップ１１０では、ＡＤバッファ５０より取得したデジタルデータの最大値を抽出し、これから最大演算時間を見積もり、これを基準演算時間として基準演算レジスタ７１に格納する。最大演算時間の見積もりは、例えば第１のコア６１又は第２のコア６２において、デジタルデータの最大値を用いて実際の演算処理を実施し、その結果を最大演算時間として見積もるようにしてもよい。
【００５５】
ステップ１２０では、タイミング管理回路７０において、基準演算レジスタ７１に格納された基準演算時間を用いて、演算対象区間を演算した場合の全体必要演算時間を見積もり、他の処理の演算タイミングと比較し、他の処理の演算タイミングまでに演算完了が可能か否かを判定する。演算対象区間は、例えば、エンジン１１０が制御対象の場合に、クランク角で０〜９０ＣＡであったときに、次のサイクルが始まるまでに、演算を終了していればよい。これは、クランク角ＣＡで言えば、７２０ＣＡの間に演算処理が終了していればよく、必ずしも急いで処理を終了させる必要が無い場合がある。一方、エンジン１１０の制御の場合、例えば、点火や噴射処理等の制御は、処理の優先度が高く、これらの処理が抜けることは問題がある。そこで、ステップ１２０では、演算対象区間の演算処理を総て実行したときに、必要な演算処理時間が、そのような他の処理の開始までに完了できる時間であるか否かを判定する。具体的には、基準演算時間を、演算対象区間分合計することにより、必要な演算処理時間が得られる。
【００５６】
ステップ１２０において、演算対象区間の演算処理が他の処理の開始までに完了可能と判定されたときは、ステップ１３０に進む。一方、演算対象区間の演算処理が他の処理の開始までに完了不可能と判定されたときには、ステップ１５０に進む。
【００５７】
ステップ１３０では、タイミング管理回路７０により、第１のコア６１及び第２のコア６２に演算開始タイミングｔ＝ｔ０、ｔ＝ｔ１が指示される。
【００５８】
ステップ１４０では、交互の演算タイミングとなるように、第１のコア６１と第２のコア６２との間で、演算処理が実行される。その際、結果反映用メモリ８０により、前回の相手コアの演算結果が、自コアの今回の後半の演算処理に利用できるように、演算結果の授受が実施される。そして、このような演算処理を繰り返し、演算対象区間の総てについて演算が終了したら、処理フローを終了する。
【００５９】
ステップ１２０に戻り、演算対象区間の演算処理が他の処理の開始までに完了不可能と判定されたときには、ステップ１５０に進む。
【００６０】
ステップ１５０では、タイミング管理回路７０により、演算対象区間の演算を分割し、他の処理の演算タイミングを妨げないような分割処理の指示がなされる。
【００６１】
ステップ１６０では、タイミング管理回路７０により、第１のコア６１及び第２のコア６２に、演算対象区間における第１部の演算開始タイミングが指示される。これにより、演算対象区間における、他の処理前に実行可能な演算処理が実行される。
【００６２】
ステップ１７０では、交互の演算タイミングとなるように第１のコア６１と第２のコア６２との間で演算処理が行われる。その際、結果反映用メモリ８０により、相手コアの前回の演算結果が、自コアの今回の後半の演算処理に利用することができるように、演算結果の授受がなされる。そして、第１部の演算処理を終了する。
【００６３】
ステップ１８０では、他の処理の演算が実行される。この間、演算対象区間における演算処理は中断している状態である。
【００６４】
ステップ１９０では、タイミング管理回路７０により、演算対象区間における第２部の演算開始タイミングが指示される。これにより、中断していた残りの演算対象区間の演算処理が実行される。
【００６５】
ステップ２００では、第１部と同様に、交互の演算タイミングとなるように第１のコア６１と第２のコア６２との間で演算処理が行われる。その際、結果反映用メモリ８０により、相手コアの前回の演算結果が、自コアの今回の後半の演算処理に利用することができるように、演算結果の授受がなされる。そして、第２部の演算処理を終了して演算対象区間の演算処理を総て終了し、処理フローを終了する。
【００６６】
このように、演算対象区間の演算処理が、他の重要な優先する処理と干渉してしまう場合には、他の処理を妨げずに、演算対象区間の演算を分割して処理することが可能である。例えば、エンジン１１０の制御においては、高負荷処理ではあるが、必ずしもすぐに演算する必要がある訳ではなく、次のサイクルの点火タイミングまでに演算結果が得られれば良い場合も多い。このような場合において、本実施例に係るマルチコアプロセッサ１００及びエンジン制御装置１５０によれば、演算に必要なデータはＡＤバッファ５０に保持し、演算に余裕のあるタイミングで、複数コア６１、６２を使用して、一気に高速演算を行うことが可能である。
【００６７】
なお、図３において、エンジン制御装置１５０に本実施例に係るマルチコアプロセッサ１００を適用した場合には、ステップ１４０及びステップ２００の後に、演算処理の結果に基づいて、必要なエンジン制御を実行するステップを追加すればよい。
【００６８】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【図面の簡単な説明】
【００６９】
【図１】本実施例に係るマルチコアプロセッサ１００及びエンジン制御装置１５０の全体構成図である。
【図２】ＡＤバッファ５０及びマルチコア６０で行う演算処理内容の説明図である。図２（ａ）は、ＡＤバッファ５０で行う処理内容の説明図である。図２（ｂ）は、２つのコア６１、６２で実行される演算処理内容の説明図である。
【図３】本実施例に係るマルチコアプロセッサ１００及びエンジン制御装置１５０の処理フロー図である。
【符号の説明】
【００７０】
５０    ＡＤバッファ
５１、５２    メモリバンク
６０    マルチコア
６１、６２    コア
７０    タイミング管理回路
７１    基準演算時間レジスタ
８０    結果反映用メモリ
９０    共有メモリ
１００    マルチコアプロセッサ
１１０    エンジン
１２０、１２１〜１２４    センサ
１５０    エンジン制御装置
【図１】
2009199462.tif 000003
【図２】
2009199462.tif 000004
【図３】
2009199462.tif 000005