(57)【特許請求の範囲】
【請求項１】
割り込み処理のイベントが発生する電子制御装置であって、
割り込み禁止であるか割り込み許可であるかを判定する判定手段（Ｓ１０，Ｓ１１０）と、
キャッシュメモリに転送されるデータをプリフェッチするプリフェッチバッファとしての、第一プリフェッチバッファ（３１）及び前記第一プリフェッチバッファよりもサイズが大きい第二プリフェッチバッファ（３２）と、
プリフェッチする前記プリフェッチバッファとして前記第一プリフェッチバッファ及び前記第二プリフェッチバッファのいずれか一方を選択することで、前記プリフェッチバッファのサイズを変更するものであり、前記判定手段によって割り込み許可と判定された場合は前記第一プリフェッチバッファを選択し、前記判定手段によって割り込み禁止と判定された場合は前記第二プリフェッチバッファを選択するサイズ変更手段（Ｓ２０，Ｓ３０，Ｓ１２０，Ｓ１３０）と、を備えることを特徴とする電子制御装置。
【請求項２】
前記判定手段（Ｓ１０）は、プログラムコードの割り込み禁止命令及び割り込み許可命令に基づいて、割り込み禁止であるか割り込み許可であるかを判定することを特徴とする請求項１に記載の電子制御装置。
【請求項３】
割り込み禁止状態を示す割り込み禁止フラグ及び割り込み許可状態を示す割り込み許可フラグがセットされるレジスタ（１０ｂ）を備え、
前記判定手段（Ｓ１１０）は、前記レジスタにセットされた前記割り込み禁止フラグ及び前記割り込み許可フラグに基づいて、割り込み禁止であるか割り込み許可であるかを判定することを特徴とする請求項１に記載の電子制御装置。
【請求項４】
プログラムコードの割り込み許可命令を検出した場合は前記第一プリフェッチバッファへの切替命令である第一切替命令をプログラムコードに追加すると共に、前記プログラムコードの割り込み禁止命令を検出した場合は前記第二プリフェッチバッファへの切替命令である第二切替命令を前記プログラムコードに追加する命令追加手段（１０ｃ）を備え、
前記サイズ変更手段は、前記プログラムコードに前記第一切替命令を検出した場合は前記判定手段によって割り込み許可と判定されたとみなして前記第一プリフェッチバッファを選択し、前記プログラムコードに前記第二切替命令を検出した場合は前記判定手段によって割り込み禁止と判定されたとみなして前記第二プリフェッチバッファを選択することを特徴とする請求項１に記載の電子制御装置。
【請求項５】
車両に搭載されるものであり、前記車両におけるエンジンのクランク角信号が入力されると共に、前記クランク角信号に基づいて前記エンジンの制御を行うことを特徴とする請求項１乃至４のいずれか一項に記載の電子制御装置。
【請求項６】
車両に搭載されるものであり、自身を含む複数の電子装置が接続された車載ネットワークにおいて、自身以外の電子装置との通信を行うことを特徴とする請求項１乃至５のいずれか一項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリフェッチバッファサイズを変更可能な電子制御装置に関する。
【背景技術】
【０００２】
従来、プリフェッチバッファサイズを変更する電子制御装置の一例として、特許文献１に開示されたデータプロセッサがある。このデータプロセッサは、命令が１６ビット長か３２ビット長かでプリフェッチバッファサイズを切り替える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００９−５３０７５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記データプロセッサは、命令長が固定の場合、キャッシュヒット率を向上させることができない可能性がある。また、上記データプロセッサは、割り込み処理イベントが多発するシステムに適用した場合においても、キャッシュヒット率を向上させることができない可能性がある。
【０００５】
本発明は、上記問題点に鑑みなされたものであり、割り込み処理イベントが多発する場合であっても、キャッシュヒット率を向上させることができる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明は、
割り込み処理のイベントが発生する電子制御装置であって、
割り込み禁止であるか割り込み許可であるかを判定する判定手段（Ｓ１０，Ｓ１１０）と、
キャッシュメモリに転送されるデータをプリフェッチするプリフェッチバッファとしての、第一プリフェッチバッファ（３１）及び第一プリフェッチバッファよりもサイズが大きい第二プリフェッチバッファ（３２）と、
プリフェッチするプリフェッチバッファとして第一プリフェッチバッファ及び第二プリフェッチバッファのいずれか一方を選択することで、プリフェッチバッファのサイズを変更するものであり、判定手段によって割り込み許可と判定された場合は第一プリフェッチバッファを選択し、判定手段によって割り込み禁止と判定された場合は第二プリフェッチバッファを選択するサイズ変更手段（Ｓ２０，Ｓ３０，Ｓ１２０，Ｓ１３０）と、を備えることを特徴とする。
【０００７】
割り込み禁止状態では、プログラムが順に実行されるので、プリフェッチが有効に働く。このため、プリフェッチバッファは、割り込み禁止状態では、サイズが大きいほうが望ましい。一方、割り込み許可状態では、割り込みが発生するとプログラムがプリフェッチ範囲内から外れるアドレスへジャンプする。このため、プリフェッチバッファのサイズが大きいと有用なキャッシュメモリを追い出してしまう。従って、プリフェッチバッファは、割り込み許可状態では、サイズが小さいほうが望ましい。
【０００８】
そこで、本発明は、プリフェッチバッファとして、第一プリフェッチバッファと、第一プリフェッチバッファよりもサイズが大きい第二プリフェッチバッファとを備えている。また、本発明は、割り込み禁止であるか割り込み許可であるかを判定する。
【０００９】
そして、本発明は、割り込み許可と判定された場合は第一プリフェッチバッファを選択し、判定手段によって割り込み禁止と判定された場合は第二プリフェッチバッファを選択する。このようにして、本発明は、プリフェッチバッファのサイズを変更する。よって、本発明は、割り込み禁止状態と割り込み許可状態とで最適なプリフェッチバッファサイズを選択でき、キャッシュヒット率を向上させることができる。
【００１０】
なお、特許請求の範囲およびこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】実施形態における電子制御装置の概略構成を示すブロック図である。
【図２】プログラムコードの一例を示すイメージ図である。
【図３】実施形態における電子制御装置の処理動作を示すフローチャートである。
【図４】プリフェッチバッファの大小夫々の特徴を示す表である。
【図５】（ａ）はサイズが小さいプリフェッチバッファとキャッシュメモリとの関係を示すイメージ図であり、（ｂ）はサイズが大きいプリフェッチバッファとキャッシュメモリとの関係を示すイメージ図である。
【図６】（ａ）はメインプログラムとキャッシュメモリとの関係を示すイメージ図であり、（ｂ）は割り込みプログラムと、キャッシュメモリとの関係を示すイメージ図である。
【図７】変形例１におけるステータスレジスタと割り込み検出回路の概略構成を示すイメージ図である。
【図８】変形例１における電子制御装置の処理動作を示すフローチャートである。
【図９】変形例２における命令追加部とプログラムコードの概略構成を示すイメージ図である。
【図１０】変形例３における電子制御装置の概略構成を示すブロック図である。
【図１１】クランク角信号を示す図面である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図に基づいて説明する。
【００１３】
図１に示すように、電子制御装置は、主に、ＣＰＵ１０、命令キャッシュメモリ２０、プリフェッチバッファ切替機構３０、フラッシュＲＯＭ４０などを備えて構成されている。また、電子制御装置は、これらの他にも、ＲＡＭ５０、インストラクションバス６０、データバス７０などを備えるものであってもよい。この電子制御装置は、割り込み処理のイベントが発生するものであって、例えば車両用の電子制御装置やその他の電子制御装置に適用することができる。なお、ＣＰＵは、Central Processing Unitの略である。ＲＯＭは、Read Only Memoryの略である。ＲＡＭは、Random Access Memoryの略である。
【００１４】
ＣＰＵ１０は、命令デコーダ回路などを備え、フラッシュＲＯＭ２０に記憶されたプログラムコード４１における命令を順に読み込み、読み込んだ命令に従って処理を実行する。図２に示すように、プログラムコード４１は、例えば、割り込み禁止命令や割り込み許可命令などを含む。よって、ＣＰＵ１０は、割り込み禁止命令や割り込み許可命令などを読み込む。以下、割り込み禁止命令は、ＤＩ命令とも記載する。また、割り込み許可命令は、ＥＩ命令とも記載する。なお、このプログラムコード４１は、周知技術であるため詳しい説明は省略する。
【００１５】
また、フラッシュＲＯＭ２０から読み出した命令は、第一プリフェッチバッファ３１もしくは第二プリフェッチバッファ３２にプリフェッチされる。また、第一プリフェッチバッファ３１もしくは第二プリフェッチバッファ３２にプリフェッチされた命令は、命令キャッシュメモリ２０に転送される。後ほど説明するが、第一プリフェッチバッファ３１と第二プリフェッチバッファ３２とはサイズが異なる。そして、ＣＰＵ１０は、プリフェッチするプリフェッチバッファとして第一プリフェッチバッファ３１及び第二プリフェッチバッファ３２のいずれか一方を選択することで、プリフェッチバッファのサイズを変更する。
【００１６】
命令キャッシュメモリ２０は、インストラクションバス６０を介してＣＰＵ１０と接続されている。また、命令キャッシュメモリ２０は、スイッチ３３を介して、第一プリフェッチバッファ３１及び第二プリフェッチバッファ３２と接続可能に構成されている。なお、命令キャッシュメモリ２０は、周知技術であるため詳しい説明は省略する。
【００１７】
プリフェッチバッファ切替機構３０は、第一プリフェッチバッファ３１、第二プリフェッチバッファ３２に加えて、スイッチ３３を備えて構成されている。この第一プリフェッチバッファ３１及び第二プリフェッチバッファ３２は、命令キャッシュメモリ２０に対する命令プリフェッチ機構（先読み）である。命令プリフェッチ機構とは、キャッシュヒット率を向上させるための機構である。命令プリフェッチ機構は、キャッシュミス時に、ハードウェア上搭載しているプリフェッチバッファ分（例えば、実行する命令＋６４バイト）のみを命令キャッシュメモリに転送するものである。よって、本実施形態においては、キャッシュミス時に、第一プリフェッチバッファ３１にプリフェッチされた命令、又は第二プリフェッチバッファ３２にプリフェッチされた命令を、命令キャッシュメモリ２０に転送することになる。
【００１８】
また、上述のように、第一プリフェッチバッファ３１と第二プリフェッチバッファ３２は、サイズが異なる。つまり、プリフェッチバッファ切替機構３０は、第一プリフェッチバッファ３１と、第一プリフェッチバッファ３１よりもサイズが大きい第二プリフェッチバッファ３２とを備えている。例えば、第一プリフェッチバッファ３１を１６バイト、第二プリフェッチバッファ３２を６４バイトとすることができる。また、第一プリフェッチバッファ３１及び第二プリフェッチバッファ３２は、フラッシュＲＯＭ４０及びＲＡＭ５０と接続されている。なお、ＲＡＭ５０は、データバス７０を介してＣＰＵ１０と接続されている。このＲＡＭ５０は、周知技術であるため詳しい説明は省略する。
【００１９】
スイッチ３３は、第一プリフェッチバッファ３１と第二プリフェッチバッファ３２のいずれか一方に接続可能なものである。スイッチ３３は、命令キャッシュメモリ２０と第一プリフェッチバッファ３１とを接続している状態、及び命令キャッシュメモリ２０と第二プリフェッチバッファ３２とを接続している状態のいずれかの状態とすることができる。また、命令キャッシュメモリ２０と第一プリフェッチバッファ３１とがスイッチ３３で接続されている状態は、プリフェッチバッファのサイズが小の状態、と称することができる。一方、命令キャッシュメモリ２０と第二プリフェッチバッファ３２とがスイッチ３３で接続されている状態は、プリフェッチバッファのサイズが大の状態、と称することができる。なお、図１は、第一プリフェッチバッファ３１が選択されている状態を示している。
【００２０】
このスイッチ３３は、ＣＰＵ１０によって、接続先が第一プリフェッチバッファ３１及び第二プリフェッチバッファ３２のいずれかに切り替えられる。
よって、ＣＰＵ１０は、スイッチ３３を用いて、第一プリフェッチバッファ３１及び第二プリフェッチバッファ３２のいずれか一方を選択することで、プリフェッチバッファのサイズを変更する、と言い換えることができる。
【００２１】
フラッシュＲＯＭ４０は、プログラムコード４１などが記憶されている。フラッシュＲＯＭ４０は、第一プリフェッチバッファ３１及び第二プリフェッチバッファ３２と接続されており、且つ、データバス７０を介してＣＰＵ１０と接続されている。このフラッシュＲＯＭ４０は、周知技術であるため詳しい説明は省略する。
【００２２】
ここで、図４〜図５を用いて、プリフェッチバッファのサイズの大小夫々の特徴に関して説明する。なお、一例として、１６バイトのプリフェッチバッファ（バッファサイズ小）と、６４バイトのプリフェッチバッファ（バッファサイズ大）を採用して比較する。また、本実施形態においては、第一プリフェッチバッファ３１がバッファサイズ小に相当し、第二プリフェッチバッファ３２がバッファサイズ大に相当する。また、表４では、プリフェッチバッファをプリフェッチと記載しており、命令キャッシュメモリをキャッシュと記載している。
【００２３】
図４に示すように、連続命令実行時のキャッシュヒット率は、バッファサイズ小よりもバッファサイズ大の方が高い。また、プリフェッチバッファから命令キャッシュメモリへの転送時間は、バッファサイズ大よりもバッファサイズ小の方が短い。そして、有用格納済みキャッシュ置き換え量は、バッファサイズ小よりもバッファサイズ大の方が大きい。
【００２４】
まず、バッファサイズ小とバッファサイズ大の夫々における連続命令実行時のキャッシュヒット率に関して説明する。ここでは、命令長は４バイトとし、１２８バイトの命令群（１２８／４＝３２命令）を連続実行するものとする。
【００２５】
サイズ小のプリフェッチバッファの場合、１６バイトであるため４命令（キャッシュミス１、キャッシュヒット３）となる。３２命令では、８倍となるため、キャッシュミス８、キャッシュヒット２４となる。よって、キャッシュヒット率は、２４／３２で７５％となる。
【００２６】
これに対して、サイズ大のプリフェッチバッファの場合、６４バイトであるため１６命令（キャッシュミス１、キャッシュヒット１５）となる。３２命令では、２倍となるため、キャッシュミス２、キャッシュヒット３０となる。よって、キャッシュヒット率は、３０／３２で９４％となる。
【００２７】
このように、割込み禁止状態や割り込みが発生しない状態のようなプログラム連続実行時は、バッファサイズ小の場合、一度にプリフェッチしてくるサイズが小のため、バッファサイズ大の場合よりもキャッシュヒット率が下がる。
【００２８】
次に、バッファサイズ小とバッファサイズ大の夫々におけるキャッシュ転送時間に関して説明する。ここでは、転送ビット幅が６４ビット幅だった場合の転送時間（サイクル）を比較する。
【００２９】
サイズ小のプリフェッチバッファの場合、１６バイト＝１８×８で１２８ビットである。よって、１２８／６４で２サイクル必要となる。これに対して、サイズ大のプリフェッチバッファの場合、６４バイト＝６４×８で５１２ビットである。よって、５１２／６４で８サイクル必要となる。このように、キャッシュミス時にプリッフェッチバッファのデータをキャッシュメモリに転送する時間は、バッファサイズが大きいほど長くなる。
【００３０】
次に、バッファサイズ小とバッファサイズ大の夫々における有用格納済みキャッシュ置き換え量に関して説明する。ここでは、図５を用いて説明する。
【００３１】
まず、図５（ａ）を用いて、サイズ小のプリフェッチバッファ３１ａに関して説明する。この場合、プリフェッチにより、命令キャッシュメモリ２０ａに格納されていた別の処理で有用なデータが、１６バイト（４命令）分追い出されるが、それ以降のデータは健在となる。
【００３２】
つまり、フラッシュＲＯＭ４０ａからプリフェッチバッファ３１ａにプリフェッチされた命令が命令キャッシュメモリ２０ａに転送された場合、命令キャッシュメモリ２０ａにおける第一領域２０ａ１の有用なデータ（４命令）分は追い出される。しかしながら、フラッシュＲＯＭ４０ａからプリフェッチバッファ３１ａにプリフェッチされた命令が命令キャッシュメモリ２０ａに転送された場合であっても、第二領域２０ａ２の有用なデータは追い出されない。なお、別の処理で有用なデータとは、別の処理で再利用されるデータである。
【００３３】
これに対して、図５（ａ）を用いて、サイズ大のプリフェッチバッファ３２ａに関して説明する。この場合、プリフェッチにより、命令キャッシュメモリ２０ａに格納されていた別の処理で有用なデータは６４バイト（１６命令）分追い出されてしまい、別の処理実行時にキャッシュミスとなってしまう。
【００３４】
つまり、フラッシュＲＯＭ４０ａからプリフェッチバッファ３２ａにプリフェッチされた命令が命令キャッシュメモリ２０ａに転送された場合、命令キャッシュメモリ２０ａの有用なデータがプリフェッチバッファ３２ａから転送された命令に置き換えられる。よって、命令キャッシュメモリ２０ａにおける有用なデータが消滅してしまう。このように、有用格納済みキャッシュ置き換え量は、バッファサイズ小よりもバッファサイズ大の方が大きくなる。
【００３５】
ここで、図６を用いて、割り込み許可時の動作に関して説明する。図６は、サイズ小のプリフェッチバッファの動作を示している。ここでは、メインプログラム４１ａの実行時に、第一割り込み、又は第二割り込みが発生する例を採用している。また、第一割り込みが発生すると、第一割り込みプログラム４１ｂを実行することになる。また、第二割り込みが発生すると、第二割り込みプログラム４１ｃを実行することになる。
【００３６】
なお、第一割り込みプログラム４１ｂの実行時に使用されるデータを第一割り込みで使用されるデータとも称する。同様に、第二割り込みプログラム４１ｃの実行時に使用されるデータを第二割り込みで使用されるデータとも称する。
【００３７】
割込み許可時は、サイズ小のプリフェッチバッファの場合、プリフェッチ時にメインプログラム４１ａで使用されるデータをプリフェッチして命令キャッシュメモリ２０ｂに転送するサイズが小である。このため、図６（ａ）に示すように、命令キャッシュメモリ２０ｂは、メインプログラム４１ａで使用されるデータ、第一割り込みプログラム４１ｂで使用されるデータ、第二割り込みプログラム４１ｃで使用されるデータを格納できる。
【００３８】
図６（ａ）の例では、メインプログラム４１ａで使用されるデータは、命令キャッシュメモリ２０ｂの第一領域２０ｂ１に格納できる。また、第一割り込みで使用されるデータは、命令キャッシュメモリ２０ｂの第二領域２０ｂ２に格納できる。そして、第二割り込みで使用されるデータは、命令キャッシュメモリ２０ｂの第三領域２０ｂ３に格納できる。よって、第一割り込みで使用されるデータ、第二割り込みで使用されるデータが、メインプログラム４１ａ実行時のプリフェッチで消去される確率は、サイズ大のプリフェッチバッファの場合と比較して下がる。
【００３９】
例えば、メインプログラム４１ａの実行時に第一割り込みが発生した場合は、図６（ｂ）に示すように、第一割り込みで使用されるデータは、命令キャッシュメモリ２０ｂの第二領域２０ｂ２に存在している。よって、第一割り込みが発生した場合は、キャッシュヒット状態で開始、実行されるため、第一割り込みの処理時間は短くできる。
【００４０】
同様に、メインプログラム４１ａの実行時に第二割り込みが発生した場合は、図６（ｂ）に示すように、第二割り込みで使用されるデータは、命令キャッシュメモリ２０ｂの第三領域２０ｂ３に存在している。よって、第二割り込みが発生した場合は、キャッシュヒット状態で開始、実行されるため、第二割り込みの処理時間は短くできる。
【００４１】
これに対して、サイズ大のプリフェッチバッファの場合、第一割り込みの処理時間、及び第二割り込みの処理時間は長くなる。つまり、命令キャッシュメモリ２０ｂに存在していた第一割り込みで使用されるデータは、メインプログラム４１ａ実行時のプリフェッチにより、メインプログラム４１ａで使用されるデータで上書きされて消去される。このため、第一割り込みが発生した場合は、キャッシュミスで開始されるため、割り込み処理の処理時間が長くなってしまう。同様に、命令キャッシュメモリ２０ｂに存在していた第二割り込みで使用されるデータは、メインプログラム４１ａ実行時のプリフェッチにより、メインプログラム４１ａで使用されるデータで上書きされて消去される。このため、第二割り込みが発生した場合は、キャッシュミスで開始されるため、割り込み処理の処理時間が長くなってしまう。
【００４２】
ここで、図３を用いて、電子制御装置の処理動作に関して説明する。ＣＰＵ１０は、命令デコーダ回路がＤＩ命令又はＥＩ命令を検出すると、図３のフローチャートに示す処理を実行する。
【００４３】
ステップＳ１０では、ＤＩ命令であるかＥＩ命令であるかを判定する（判定手段）。つまり、ＣＰＵ１０は、プログラムコード４１のＤＩ命令及びＥＩ命令に基づいて、割り込み禁止であるか割り込み許可であるかを判定する。具体的には、ＣＰＵ１０は、命令デコーダ回路がＤＩ命令を検出した場合は割り込み禁止と判定し、命令デコーダ回路がＥＩ命令を検出すると割り込み許可と判定する。なお、命令デコーダ回路がＤＩ命令に相当する命令を検出した場合であっても、割り込み禁止と判定してもよい。同様に、命令デコーダ回路がＥＩ命令に相当する命令を検出した場合であっても、割り込み許可と判定してもよい。
【００４４】
このようにすることで、プログラムコード４１にＤＩ命令及びＥＩ命令、或いは、ＤＩ命令に相当する命令及びＥＩ命令に相当する命令があれば、割り込み禁止であるか割り込み許可であるかを判定することができる。
【００４５】
ステップＳ２０では、第二プリフェッチバッファ３２を選択する（サイズ変更手段）。つまり、ＣＰＵ１０は、ステップＳ１０においてＤＩ命令と判定した場合は第二プリフェッチバッファ３２を選択する。このとき、ＣＰＵ１０は、スイッチ３３によって、命令キャッシュメモリ２０と第二プリフェッチバッファ３２とを接続することで、第二プリフェッチバッファ３２を選択する。よって、ＣＰＵ１０は、プリフェッチバッファのサイズを大に変更する、と言い換えることができる。また、ＣＰＵ１０は、プリフェッチバッファとして、サイズ大のプリフェッチバッファを選択する、と言い換えることができる。
【００４６】
ステップＳ３０では、第一プリフェッチバッファ３１を選択する（サイズ変更手段）。
つまり、ＣＰＵ１０は、ステップＳ１０においてＥＩ命令と判定した場合は第一プリフェッチバッファ３１を選択する。このとき、ＣＰＵ１０は、スイッチ３３によって、命令キャッシュメモリ２０と第一プリフェッチバッファ３１とを接続することで、第一プリフェッチバッファ３１を選択する。よって、ＣＰＵ１０は、プリフェッチバッファのサイズを小に変更する、と言い換えることができる。また、ＣＰＵ１０は、プリフェッチバッファとして、サイズ小のプリフェッチバッファを選択する、と言い換えることができる。
【００４７】
上述のように、割り込み禁止状態では、プログラムが順に実行されるので、プリフェッチが有効に働く。このため、プリフェッチバッファは、割り込み禁止状態では、サイズが大きいほうが望ましい。
【００４８】
一方、割り込み許可状態では、上述のように、割り込みが発生するとプログラムがプリフェッチ範囲内から外れるアドレスへジャンプする。このため、プリフェッチバッファのサイズが大きいと有用なキャッシュメモリを追い出してしまう。従って、プリフェッチバッファは、割り込み許可状態では、サイズが小さいほうが望ましい。
【００４９】
そこで、上述のように、電子制御装置は、プリフェッチバッファとして、第一プリフェッチバッファ３１と、第一プリフェッチバッファ３１よりもサイズが大きい第二プリフェッチバッファ３２とを備えている。また、ＣＰＵ１０は、割り込み禁止であるか割り込み許可であるかを判定する。
【００５０】
そして、ＣＰＵ１０は、割り込み許可と判定した場合は第一プリフェッチバッファ３１を選択し、割り込み禁止と判定した場合は第二プリフェッチバッファ３２を選択する。このようにして、ＣＰＵ１０は、プリフェッチバッファのサイズを変更する。よって、ＣＰＵ１０は、割り込み禁止状態と割り込み許可状態とで最適なプリフェッチバッファサイズを選択でき、キャッシュヒット率を向上させることができる。
【００５１】
また、電子制御装置は、プログラムコード４１にＤＩ命令及びＥＩ命令、或いは、ＤＩ命令に相当する命令及びＥＩ命令に相当する命令があれば、割り込み禁止状態と割り込み許可状態とで最適なプリフェッチバッファサイズを選択できる。つまり、本実施形態の電子制御装置は、プログラムコード４１にＤＩ命令及びＥＩ命令、或いは、ＤＩ命令に相当する命令及びＥＩ命令に相当する命令があれば、キャッシュヒット率を向上させることができる。
【００５２】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上述した実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【００５３】
（変形例１）
変形例１の電子制御装置は、図７に示すように、ＣＰＵ１０の演算の状態（ステータス）を示すステータスレジスタ１０ｂと、ステータスレジスタ１０ｂに基づいて割り込み禁止及び割り込み許可を検出する割り込み状態検出回路１０ａとを備えて構成されている。
【００５４】
ステータスレジスタ１０ｂは、フラグビットの集まりであり、例えば、割り込み禁止状態を示す割り込み禁止フラグ及び割り込み許可状態を示す割り込み許可フラグがセットされる。図７に示すように、本変形例では、一例として、割り込み禁止状態の場合にステータスレジスタ１０ｂにおけるビットｂ５の値が１、割り込み許可状態の場合にステータスレジスタ１０ｂにおけるビットｂ５の値が０となる例を採用している。つまり、ここでは、１が割り込み禁止状態を示す割り込み禁止フラグに相当し、０が割り込み許可状態を示す割り込み許可フラグに相当する。そして、割り込み状態検出回路１０ａは、ステータスレジスタ１０ｂにおけるビットｂ５の値（０か１）に基づいて、割り込み禁止及び割り込み許可を検出する。
【００５５】
ここで、図８を用いて、変形例１における電子制御装置の処理動作に関して説明する。ＣＰＵ１０は、割り込み状態検出回路１０ａが割り込み禁止状態又は割り込み許可状態を検出すると、図８のフローチャートに示す処理を実行する。
【００５６】
ステップＳ１１０では、割り込み禁止状態である否かを判定する（判定手段）。ＣＰＵ１０は、ステータスレジスタ１０ｂにセットされた割り込み禁止フラグ及び割り込み許可フラグに基づいて、割り込み禁止であるか割り込み許可であるかを判定する。具体的には、ＣＰＵ１０は、割り込み状態検出回路１０ａがステータスレジスタ１０ｂにおけるビットｂ５の値として１（ビットｂ５＝１）を検出した場合は割り込み禁止と判定して、ステップＳ１２０に進む。一方、ＣＰＵ１０は、割り込み状態検出回路１０ａがステータスレジスタ１０ｂにおけるビットｂ５の値として０（ビットｂ５＝０）を検出した場合は割り込み許可と判定して、ステップＳ１３０に進む。
【００５７】
このようにすることで、ステータスレジスタ１０ｂのビット（フラグ）を参照するだけで、割り込み禁止状態であるか、割り込み許可状態であるかを判定することができる。このため、ＣＰＵ１０に実装しなくても、例えば本状態のコピー（ミラー状態）が周辺Ｉ／Ｏ回路に実装されていれば、ＣＰＵ１０を設計変更しなくても参照は容易である。
【００５８】
なお、ステップＳ１２０での処理は、ステップＳ２０での処理と同様であるため説明は省略する。また、ステップＳ１３０での処理は、ステップＳ３０での処理と同様であるため説明は省略する。この変形例１における電子制御装置であっても上述の実施形態と同様の効果を奏することができる。
【００５９】
（変形例２）
変形例２の電子制御装置は、図９に示すように、プログラムコード４１からＤＩ命令及びＥＩ命令を検出すると、バッファサイズ大への切替命令及びバッファサイズ小への切替命令を追加する命令追加部１０ｃを備えて構成されている。なお、バッファサイズ小への切替命令は、第一プリフェッチバッファへ３１の切替命令である第一切替命令に相当する。一方、バッファサイズ大への切替命令は、第二プリフェッチバッファへ３２の切替命令である第二切替命令に相当する。また、追加後プログラムコード４１ｄは、第一切替命令及び第二切替命令が追加されたプログラムコードである。
【００６０】
命令追加部１０ｃは、プログラムコード４１を解析するアセンブラを採用することができる。ＤＩ命令及びＥＩ命令は、ソースプログラムから生成されたかどうかがアセンブラ言語上で判明する。つまり、命令追加部１０ｃは、アセンブラ言語上で、割り込み禁止であるか割り込み許可であるかを判定する（判定手段）。そして、変形例２の電子制御装置は、アセンブラコードの段階で、バッファサイズの切替命令である第一切替命令及び第二切替命令を発行する。
【００６１】
具体的には、命令追加部１０ｃは、アセンブラコードにて、ＤＩ命令を検出したら割り込み禁止と判定して、プログラムコード４１に第二切替命令を追加する（命令追加手段）。このとき、命令追加部１０ｃは、ＤＩ命令の直後に、第二切替命令を追加する。
【００６２】
逆に、命令追加部１０ｃは、アセンブラコードにて、ＥＩ命令を検出したら割り込み許可と判定して、プログラムコード４１に第一切替命令を追加する（命令追加手段）。このとき、命令追加部１０ｃは、ＥＩ命令の直前に、第一切替命令を追加する。なお、命令追加部１０ｃは、アセンブラの他にもコンパイを採用することができる。
【００６３】
ＣＰＵ１０は、第一切替命令を検出すると、割り込み許可とみなす。そして、ＣＰＵ１０は、第一切替命令を検出すると、スイッチ３３によって、命令キャッシュメモリ２０と第一プリフェッチバッファ３１とを接続することで、第一プリフェッチバッファ３１を選択する（サイズ変更手段）。また、ＣＰＵ１０は、第二切替命令を検出すると、割り込み禁止とみなす。そして、ＣＰＵ１０は、スイッチ３３によって、命令キャッシュメモリ２０と第二プリフェッチバッファ３２とを接続することで、第二プリフェッチバッファ３２を選択する（サイズ変更手段）。
【００６４】
この変形例２における電子制御装置であっても上述の実施形態と同様の効果を奏することができる。さらに、このように、プリフェッチバッファのサイズ切替命令を実装すれば、命令デコーダ回路を改造したり、割り込み状態検出回路１０ａを追加したりすることなく、割り込み禁止か割り込み許可かによって、プリフェッチバッファのサイズを変更することができる。なお、第一切替命令及び第二切替命令は、手動で追加してもよい。
【００６５】
（変形例３）
変形例３における電子制御装置は、車両のエンジンＥＣＵ２００に適用すると好ましい。エンジンＥＣＵ２００は、図１０に示すように、エンジン用マイコン１００を備えて構成されている。そして、エンジン用マイコン１００は、上述の電子制御装置に加えて、Ｉ／Ｏバス８０、通信Ｉ／Ｆ９１、外部入力ポート９２、内部タイマ９３、割り込みコントローラ９４などを備えて構成されている。また、エンジンＥＣＵ２００は、自身を含む複数の電子制御装置が接続された車載ネットワークにおいて、自身以外の電子制御装置との通信を行う。
【００６６】
つまり、変形例３の電子制御装置は、車両に搭載されるものであり、車両におけるエンジンのクランク角信号が入力されると共に、クランク角信号に基づいてエンジンの制御を行うものである。更に、変形例３の電子制御装置は、車両に搭載されるものであり、自身を含む複数の電子装置が接続された車載ネットワークにおいて、自身以外の電子装置との通信を行うものである。なお、自身以外の電子装置とは、エンジンＥＣＵ２００以外のＥＣＵや、通信機能を有したセンサなどを含む。また、ＥＣＵは、Electronic Control Unitの略である。Ｉ／Ｏは、Input/Outputの略である。
【００６７】
ＣＰＵ１０は、Ｉ／Ｏバス８０を介して、通信Ｉ／Ｆ９１、外部入力ポート９２、内部タイマ９３、割り込みコントローラ９４と接続されている。また、通信Ｉ／Ｆ９１、外部入力ポート９２、内部タイマ９３、割り込みコントローラ９４の夫々は、Ｉ／Ｏバス８０を介して接続されている。
【００６８】
通信Ｉ／Ｆ９１は、クランク角センサからクランク角信号が入力される。そして、通信Ｉ／Ｆ９１は、クランク角信号のエッジ（立ち上がりエッジ又は立ち下がりエッジ）を検出し、エッジを検出したタイミングで割り込み要求信号を出力する。本変形例の通信Ｉ／Ｆ９１は、立ち上がりエッジ（↑）の検出タイミングで割り込み要求信号を出力する。
【００６９】
外部入力ポート９２は、他の電子制御装置から通信信号データが入力される。外部入力ポート９２は、通信信号データの受信完了（↓）のタイミングで割り込み要求信号を出力する。
【００７０】
内部タイマ９３は、所定の時間間隔で割り込み要求信号を出力する。内部タイマ９３は、例えば、１ｍｓ経過毎、２ｍｓ経過毎、４ｍｓ経過毎に割り込み要求信号を出力する（内部タイマイベント）。
【００７１】
割り込みコントローラ９４は、通信Ｉ／Ｆ９１、外部入力ポート９２、内部タイマ９３の夫々から割り込み要求信号が入力される。このように、割り込みコントローラ９４に割り込み要求信号が入力されることで、割り込み要求が発生する。従って、エンジンＥＣＵ２００は、クランク角信号に基づく割り込み要求、通信信号データに基づく割り込み要求、内部タイマイベント（言い換えると、時間同期イベント）による割り込み要求など、多数の割り込み要求が発生する。
【００７２】
例えば、クランク角信号に基づく割り込み要求は、クランク角信号の立ち上がりエッジの検出タイミングで発生する。具体的には、クランク角信号に基づく割り込み要求は、１０ＣＡ（ＣＡはクランクアングル）毎に発生する。なお、クランク角センサは、周知技術であるため詳しい説明は省略するが、例えば、クランク軸に固定されたシグナルロータの外周部に等間隔で設けられた突起が対向する毎にクランク角信号を出力する。そして、シグナルロータの外周部は、突起が２歯分かけた欠歯部が設けられている。よって、図１１に示すように、クランク角信号は、１回転に付き２歯分欠けている（３６−２）。
【００７３】
また、エンジン回転数ＮＥ（ｒｐｍ）は、（６０×１０６）÷（３６０ＣＡの時間（μs)）で算出できる。また、この式を変形すると、３６０ＣＡの時間（μｓ）＝（６０×１０６）÷エンジン回転数ＮＥ（ｒｐｍ)となる。
【００７４】
ここで、エンジン回転数ＮＥ=５０００（ｒｐｍ）の場合だと、３６０ＣＡの時間（μs）＝（６０×１０６）÷５０００（ｒｐｍ)＝１２０００（μｓ)となる。この場合、１回あたりの割り込み（つまり、２歯欠けている箇所は除く最短間隔）は、１２０００÷３６＝３３３．３３（μs)となる。よって、エンジン回転数ＮＥが５０００(ｒｐｍ)の場合は、３３３．３３（μs)毎にクランク角信号に基づく割り込み要求が発生することになる。
【００７５】
また、このようにして算出した時間、すなわち、クランク角信号に基づく割り込み要求が発生する時間的間隔は、エンジン回転数ＮＥに比例して短くなる。このため、予め最適なプリフェッチバッファのサイズを静的に決定することは難しい。つまり、プリフェッチバッファのサイズは、クランク角信号に基づく割り込み要求や、通信信号データに基づく割り込み要求などの非同期イベントの発生状況により変化する。
【００７６】
このような特徴のエンジンＥＣＵ２００に対して、割り込み許可状態の場合は第一プリフェッチバッファ３１を選択し、割り込み禁止状態の場合は第二プリフェッチバッファ３２を選択する電子制御装置を適用すると、キャッシュヒット率を向上でき好適である。
【符号の説明】
【００７７】
１０  ＣＰＵ、１０ａ  割り込み状態検出回路、１０ｂ  ステータスレジスタ、１０ｃ  命令追加部、２０  命令キャッシュメモリ、２０ａ  命令キャッシュメモリ、２０ａ１  第一領域、２０ａ２  第二領域、２０ｂ  命令キャッシュメモリ、２０ｂ１  第一領域、２０ｂ２  第二領域、２０ｂ３  第三領域、３０  プリフェッチバッファ切替機構、３１  第一プリフェッチバッファ、３１ａ  プリフェッチバッファ、３２  第二プリフェッチバッファ、３２ａ  プリフェッチバッファ、３３  スイッチ、４０  フラッシュＲＯＭ、４０ａ  フラッシュＲＯＭ、４１  プログラムコード、４１ａ  メインプログラム、４１ｂ  第一割り込みプログラム、４１ｃ  第二割り込みプログラム、４１ｄ  追加後プログラムコード５０  ＲＡＭ、６０  インストラクションバス、７０  データバス
【図１】
0005971211.tif 000002
【図２】
0005971211.tif 000003
【図３】
0005971211.tif 000004
【図４】
0005971211.tif 000005
【図５】
0005971211.tif 000006
【図６】
0005971211.tif 000007
【図７】
0005971211.tif 000008
【図８】
0005971211.tif 000009
【図９】
0005971211.tif 000010
【図１０】
0005971211.tif 000011
【図１１】
0005971211.tif 000012