(57)【要約】【課題】処理時間を短縮しつつ割り込みの禁止についての柔軟性を向上させることが可能となる処理プログラム、及び処理システムを提供すること。【解決手段】  コンピュータを、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、ＣＰＵ３は、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わない。【選択図】図１
2020060909.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、
前記処理手段は、
前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、
前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない、
処理プログラム。
【請求項２】
前記処理手段は、
前記実行中の処理ルーチンが前記禁止区間中に実行されているか否かを特定する実行区間特定情報を前記コンピュータに格納し、
前記所定の割り込み処理ルーチンが割り込もうとした場合において、前記実行中の処理ルーチンが前記禁止区間中に実行されていることを特定する情報が前記実行区間特定情報として格納されている場合、前記禁止処理を行い、
前記所定の割り込み処理ルーチンが割り込もうとしていない場合、前記実行区間特定情報に関わらず、前記禁止処理を行わない、
請求項１に記載の処理プログラム。
【請求項３】
前記処理手段は、
前記禁止区間中に前記禁止処理を行った場合において、前記実行中の処理ルーチンの前記禁止区間中での実行を終了した場合、前記所定の割り込み処理ルーチンを前記実行中の処理ルーチンへ割り込ませて実行させる、
請求項１又は２に記載の処理プログラム。
【請求項４】
実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、を備え、
前記処理手段は、
前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、
前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない、
処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理プログラム、及び処理システムに関する。
【背景技術】
【０００２】
従来、組み込みシステムとして用いられるマイクロコンピュータが知られていた（例えば、特許文献１）。この特許文献１のマイクロコンピュータを含めて、一般的なマイクロコンピュータについては、実行中の処理ルーチンに対して、適宜のタイミングで割り込みハンドラを割り込ませて実行するように構成されていた。
【０００３】
しかしながら、マイクロコンピュータにおいて正常な動作を実現するために、例えば、実行中の処理ルーチンが共有データを操作するタイミング等の任意のタイミングに禁止区間を設定し、設定した禁止区間中に、当該共有データを操作する割り込みハンドラの駆動要求が発生した場合、実行中の処理ルーチンへの当該割り込みハンドラによる禁止区間中の割り込みを禁止する技術が提案されていた。
【０００４】
そして、このような割り込みを禁止する技術としては、例えば、禁止区間中に、マイクロコンピュータのＣＰＵをロックすることにより、全ての割り込みハンドラの割り込みを一括して禁止する技術、あるいは、割り込みハンドラの割り込みレベルを指定して、指定した割り込みレベルよりも低いレベルの割り込みハンドラの割り込みを禁止する技術等が提案されていた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−２１９２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、例えば、全ての割り込みハンドラの割り込みを一括して禁止する技術においては、禁止区間に割り込みハンドラの駆動要求が発生したか否かに関わらず、禁止区間にマイクロコンピュータのＣＰＵをロックする必要があり、禁止区間の個数に対応する回数だけＣＰＵのロック及びアンロックが繰り返されることになり、マイクロコンピュータによる処理時間が増大する可能性があった。また、例えば、禁止区間に割り込みを禁止する必要がない割り込みハンドラ（例えば、前述の共有データを操作しない割り込みハンドラ等）についても一括して割り込みが禁止されてしまい、割り込みの禁止についての柔軟性が低下してしまう可能性があった。
【０００７】
また、例えば、割り込みレベルを指定して割り込みを禁止する技術においては、割り込みレベルを基準に割り込みの禁止を行うことができるので、全ての割り込みハンドラの割り込みを一括して禁止する技術に比べて、割り込みの禁止についての柔軟性が向上するものの、指定した割り込みレベルよりも低いレベルの割り込みハンドラの割り込みが全て禁止されてしまうために、割り込みの禁止についての柔軟性を更に向上させることが要望されていた。また、例えば、割り込みレベルを指定して割り込みを禁止する技術においても、全ての割り込みハンドラの割り込みを一括して禁止する技術と同様に、禁止区間に割り込みハンドラの駆動要求が発生したか否かに関わらず、禁止区間に指定したレベルを基準に割り込みを禁止する処理を行う必要があり、禁止区間の個数に対応する回数だけ当該処理が繰り返されることになり、マイクロコンピュータによる処理時間が増大する可能性があった。また、例えば、割り込みレベルを指定して割り込みを禁止する技術を用いるためには、マイクロコンピュータにおいて割り込みレベルによる制御機能が実装されていることが前提となり、当該技術を適用するためのマイクロコンピュータが一部のみの機種に制限されてしまう可能性があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、処理時間を短縮しつつ割り込みの禁止についての柔軟性を向上させることが可能となる処理プログラム、及び処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、請求項１に記載の処理プログラムは、コンピュータを、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【００１０】
請求項２に記載の処理プログラムは、請求項１に記載の処理プログラムにおいて、前記処理手段は、前記実行中の処理ルーチンが前記禁止区間中に実行されているか否かを特定する実行区間特定情報を前記コンピュータに格納し、前記所定の割り込み処理ルーチンが割り込もうとした場合において、前記実行中の処理ルーチンが前記禁止区間中に実行されていることを特定する情報が前記実行区間特定情報として格納されている場合、前記禁止処理を行い、前記所定の割り込み処理ルーチンが割り込もうとしていない場合、前記実行区間特定情報に関わらず、前記禁止処理を行わない。
【００１１】
請求項３に記載の処理プログラムは、請求項１又は２に記載の処理プログラムにおいて、前記処理手段は、前記禁止区間中に前記禁止処理を行った場合において、前記実行中の処理ルーチンの前記禁止区間中での実行を終了した場合、前記所定の割り込み処理ルーチンを前記実行中の処理ルーチンへ割り込ませて実行させる。
【００１２】
請求項４に記載の処理システムは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、を備え、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【発明の効果】
【００１３】
請求項１に記載の処理プログラムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【００１４】
請求項２に記載の処理プログラムによれば、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報を格納することにより、例えば、格納されている実行区間特定情報を参照するという比較的単純な処理にて禁止区間であるか否かを特定することができるので、処理時間を確実に短縮することが可能となる。
【００１５】
請求項３に記載の処理プログラムによれば、禁止処理を行った場合において実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させることにより、例えば、所定の割り込み処理ルーチンを確実に実行することが可能となる。
【００１６】
請求項４に記載の処理システムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に係るマイクロコンピュータを例示するブロック図である。
【図２】マイクロコンピュータで実行されるタスク及びＩＳＲを示す図である。
【図３】タスク及びＩＳＲのタイミングチャートである。
【図４】被割り込み側処理のフローチャートである。
【図５】割り込み側処理のフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明に係る処理プログラム、及び処理システムの実施の形態について図面を参照しつつ詳細に説明する。ただし、実施の形態によって本発明が限定されるものではない。
【００１９】
本発明に係る処理プログラムは、コンピュータを制御するプログラムであり、例えば、コンピュータを制御するための専用プログラム、あるいは、汎用的に用いられるプログラム（一例としては、汎用コンピュータ等で用いられる基本ソフトであるオペレーティングシステム（ＯＳ）、あるいは、マイクロコンピュータの如き組み込みシステムで用いられるリアルタイムオペレーティングシステム（リアルタイムＯＳ））の一部として実現されるプログラム等を含む概念である。また、この処理プログラムは、コンピュータを、処理手段として機能させるものである。
【００２０】
また、「処理システム」とは、処理プログラムによって処理されるシステムであり、例えば、前述のコンピュータ等を含む概念である。すなわち、この処理システムを、前述のコンピュータに対応するものと解釈してもよい。
【００２１】
また、「処理システム」（つまり、「コンピュータ」）は、例えば、マイクロコンピュータの如き組み込みシステム、あるいは、当該組み込みシステムの一部の要素（一例としては、中央演算処理装置であるＣＰＵ、あるいは、割り込み制御回路等）等に対応する概念であり、例えば、処理手段を備えるものである。
【００２２】
また、「処理手段」とは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する手段であり、具体的には、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わない手段である。また、「処理手段」とは、例えば、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報をコンピュータに格納し、所定の割り込み処理ルーチンが割り込もうとした場合において、実行中の処理ルーチンが禁止区間中に実行されていることを特定する情報が実行区間特定情報として格納されている場合、禁止処理を行い、所定の割り込み処理ルーチンが割り込もうとしていない場合、実行区間特定情報に関わらず、禁止処理を行わない手段、あるいは、禁止区間中に禁止処理を行った場合において、実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させる手段等を含む概念である。
【００２３】
また、「処理ルーチン」とは、コンピュータで実行される処理群であり、具体的には、例えば、リアルタイムＯＳにおけるタスク又は割り込み処理（つまり、割り込みハンドラであるＩＳＲ）に対応する処理群等を含む概念である。また、「実行中の処理ルーチン」とは、現在実行されている処理ルーチンであり、タスク又はＩＳＲに対応する概念である。また、「所定の割り込み処理ルーチン」とは、予め定められたＩＳＲであり、例えば、ＩＳＲの割り込みレベルを設定できる機能が実装されているハードウエアにおける任意の割り込みレベルのＩＳＲであり、禁止区間中に割り込みを禁止するべきＩＳＲである。
【００２４】
また、「禁止区間」とは、実行中の処理ルーチンへの割り込みが禁止されるべき区間であり、具体的には、割り込みが禁止されるべき任意のタイミング（時間帯を含む）であって、ユーザによって定義可能な任意のタイミングである。なお、この禁止区間は任意に設定することができるが、以下の実施の形態では、例えば、実行中の処理ルーチンと所定の割り込み処理ルーチンとが相互に共通するデータを操作するように構成されており、当該実行中の処理ルーチンが当該データを操作するタイミングが「禁止区間」として設定されている場合を例示して説明する。
【００２５】
また、「禁止処理」とは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを禁止する処理であり、例えば、禁止区間中において割り込みを禁止する処理である。
【００２６】
また、「実行区間特定情報」とは、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する情報であり、例えば、禁止区間中に実行されていることを特定する情報、及び実行中の処理ルーチンが禁止区間中に実行されていないことを特定する（つまり、実行中の処理ルーチンが許可区間中に実行されていることを特定する）情報を含む概念である。また、「許可区間」とは、実行中の処理ルーチンへの割り込みが許可され得る区間であり、具体的には、禁止区間以外の区間である。
【００２７】
そして、以下に示す実施の形態では、「処理システム」又は「コンピュータ」が、マイクロコンピュータであり、「処理プログラム」が、マイクロコンピュータのリアルタイムＯＳである場合を例示して説明する。
【００２８】
（構成）
まず、本実施の形態に係るマイクロコンピュータについて説明する。図１は、本発明の実施の形態に係るマイクロコンピュータを例示するブロック図である。なお、実際には、マイクロコンピュータ１００には、図示されている要素以外にも、割り込み制御回路、クロック発振器、タイマー、ＡＤ変換器、ＤＡ変換器等の公知の要素も含まれ得るが、ここでは、主な要素のみ図示し、図示した要素以外の要素については、必要に応じて適宜説明する。また、図示されている各要素については、本願に特徴的な内容以外については、公知の内容を適用することができるので、本願に特徴的な内容のみについて説明する。
【００２９】
マイクロコンピュータ１００は、処理システム又はコンピュータであり、例えば、ＲＯＭ１、ＲＡＭ２、及びＣＰＵ３を備える。
【００３０】
（構成−ＲＯＭ）
ＲＯＭ１は、マイクロコンピュータ１００の動作に必要なプログラム及び各種のデータを記録する記録手段であり、例えば、外部記録装置としてのフラッシュメモリ（図示省略）等を用いて構成されている。
【００３１】
（構成−ＲＡＭ）
ＲＡＭ２は、マイクロコンピュータ１００の動作に必要なプログラム及び各種のデータを一時的に記録する記録手段（記録領域）であり、例えば、外部記録装置としてのＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を用いて構成されている。このＲＡＭ２には、例えば、実行区間特定情報、及び要求情報が格納されている。
【００３２】
（構成−ＲＡＭ−実行区間特定情報）
「実行区間特定情報」とは、例えば、フラグ情報であり、一例としては、禁止区間中に実行されていることを特定する「ＯＮ」、あるいは、禁止区間中に実行されていないこと（つまり、許可区間中に実行されていること）を特定する「ＯＦＦ」が択一的に格納される情報である。なお、この実行区間特定情報の具体的な格納手法は任意であるが、例えば、後述する被割り込み側処理にて格納される。
【００３３】
（構成−ＲＡＭ−要求情報）
「要求情報」とは、実行することを要求しているＩＳＲを特定する情報であり、具体的には、現時点で実行待ちとなっているＩＳＲを特定する情報であり、例えば、ＩＳＲを実行するためのプログラムが格納されているアドレスを特定する情報である。なお、現時点で実行待ちとなっているＩＳＲが存在しない場合には、「ＮＵＬＬ」が格納されていることとする。また、この要求情報の具体的な格納手法は任意であるが、例えば、後述する割り込み側処理にて格納される。
【００３４】
（構成−ＣＰＵ）
ＣＰＵ３は、ＲＯＭ１又はＲＡＭ２に適宜アクセスして、マイクロコンピュータ１００を制御する制御手段であり、具体的には、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段であり、例えば、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わない手段である。
【００３５】
（処理）
次に、このように構成されるマイクロコンピュータ１００によって実行される割り込み制御処理について説明する。「割り込み制御処理」とは、実行中の処理ルーチンへの所定のＩＳＲの割り込みを制御する処理であり、例えば、割り込まれる側の処理ルーチンで実行される処理である被割り込み側処理、及び割り込む側の処理ルーチンで実行される処理である割り込み側処理を含む概念である。
【００３６】
図２は、マイクロコンピュータで実行されるタスク及びＩＳＲを示す図であり、図３は、タスク及びＩＳＲのタイミングチャートである。ここでは、例えば、マイクロコンピュータ１００のタスク４１、ＩＳＲ５１、及びＩＳＲ５２のうちのタスク４１及びＩＳＲ５１のみが、相互に共通する共有データ（ＲＡＭ２に記録されているデータ）を操作する処理を含んでいることとし、タスク４１の少なくとも一部の処理として被割り込み側処理が組み込まれており、また、ＩＳＲ５１の少なくとも一部の処理（詳細には、ＩＳＲ５１の前段部の処理）として割り込み側処理が組み込まれており、また、ＩＳＲ５２には割り込み側処理が組み込まれていない場合を例示して説明する。つまり、実行中の処理ルーチンがタスク４１であり、また、所定の割り込み処理ルーチンがＩＳＲ５１であり、ＩＳＲ５２が所定の割り込み処理ルーチン以外の割り込み処理ルーチンである場合を例示して説明する。また、ＲＡＭ２の実行区間特定情報については、「ＯＦＦ」が初期値として格納されていることとして、以下説明する。
【００３７】
（処理−被割り込み側処理）
まず、被割り込み側処理について説明する。「被割り込み側処理」とは、割り込まれる側の処理ルーチンで実行される処理であり、概略的には、マイクロコンピュータ１００の任意の要素（例えば、ＣＰＵ３）が実行する処理である。図４は、被割り込み側処理のフローチャートである（以下の各処理の説明ではステップを「Ｓ」と略記する）。この被割り込み側処理を実行するタイミングは任意であり、例えば、ＣＰＵ３がタスク４１のプログラムにおける当該処理に対応する部分を処理する場合（一例としては、共有データを操作する直前のタイミング）に、被割り込み側処理が実行される。なお、この被割込み側処理の終了のタイミングは、例えば、ＣＰＵ３がタスク４１のプログラムにおける当該処理に対応する部分の処理を終了したタイミングとなる。
【００３８】
図４のＳＡ１においてＣＰＵ３は、実行中の処理ルーチンにおいて実行区間特定情報を格納する。具体的には任意であるが、例えば、禁止区間中に実行されていることを特定する情報を、実行区間特定情報として格納する。ここでは、例えば、図３のタスク４１におけるタイミングＴ１（つまり、共有データを操作する直前のタイミング）において、実行区間特定情報を「ＯＦＦ」から「ＯＮ」に更新することにより、「実行区間特定情報」＝「ＯＮ」を格納する。
【００３９】
図４のＳＡ２においてＣＰＵ３は、実行中の処理ルーチンにおいて共有データを操作する処理を行う。具体的には任意であるが、例えば、共有データにアクセスして、アクセスした共有データに対して、プログラムに沿って任意の処理を行う。
【００４０】
図４のＳＡ３においてＣＰＵ３は、実行中の処理ルーチンにおいて実行区間特定情報を格納する。具体的には任意であるが、例えば、禁止区間中に実行されていないこと（許可区間中に実行されていること）を特定する情報を、実行区間特定情報として格納する。ここでは、例えば、図３のタスク４１におけるタイミングＴ２（つまり、共有データを操作した直後のタイミング）において、実行区間特定情報を「ＯＮ」から「ＯＦＦ」に更新することにより、「実行区間特定情報」＝「ＯＦＦ」を格納する。
【００４１】
図４のＳＡ４においてＣＰＵ３は、ＲＡＭ２に要求情報が格納されているか否かを判定する。具体的には任意であるが、例えば、「ＮＵＬＬ」以外のアドレスが要求情報として格納されているか否かに基づいて判定する。そして、「ＮＵＬＬ」が格納されている場合、「ＮＵＬＬ」以外のアドレスが要求情報として格納されているわけではないので、ＲＡＭ２に要求情報が格納されていないものと判定し（ＳＡ４のＮＯ）、処理を終了する。また、「ＮＵＬＬ」以外のアドレスが要求情報として格納されている場合、ＲＡＭ２に要求情報が格納されているものと判定し（ＳＡ４のＹＥＳ）、ＳＡ５に移行する。ここでは、例えば、要求情報として図２のＩＳＲ５１を特定するアドレスが格納されている場合、ＲＡＭ２に要求情報が格納されているものと判定する。
【００４２】
図４のＳＡ５においてＣＰＵ３は、ＩＳＲを実行する。具体的には任意であるが、例えば、実行中の処理ルーチンに対してＩＳＲを割り込ませることにより、ＩＳＲの実行を開始する。具体的には任意であるが、例えば、ＳＡ４にて格納されているものと判定した要求情報を取得し、取得した要求情報が特定するＩＳＲを、現在実行中の処理ルーチンに対して割り込ませて実行を開始する。ここでは、例えば、要求情報として図２のＩＳＲ５１を特定するアドレスが格納されている場合、図３に示すタイミングＴ２（つまり、共有データを操作する直後のタイミング）において、現在実行中のタスク４１に対して、ＩＳＲ５１を割り込ませて当該ＩＳＲ５１の実行を開始する。なお、この後、要求情報としてＩＳＲ５１を特定するアドレスを消去して「ＮＵＬＬ」を格納した後、終了する。これにて、被割り込み側処理を終了する。
【００４３】
（処理−割り込み側処理）
次に、割り込み側処理について説明する。「割り込み側処理」とは、割り込む側の処理ルーチンで実行される処理であって、禁止処理を含む処理であり、概略的には、マイクロコンピュータ１００の任意の要素（例えば、ＣＰＵ３）が実行する処理であり、例えば、所定の割り込み処理ルーチンの駆動要求の発生直後に実行される処理である。図５は、割り込み側処理のフローチャートである。この割り込み側処理を実行するタイミングは任意であり、例えば、ＩＳＲ５１の駆動要求が発生した場合に、起動が開始される。
【００４４】
図５のＳＢ１においてＣＰＵ３は、割り込み側処理を起動する場合に駆動を要求されたＩＳＲを実行するか否かを判定する。具体的には任意であるが、例えば、ＲＡＭ２の実行区間特定情報を取得し、取得した実行区間特定情報が、実行中の処理ルーチンが禁止区間中に実行されていることを特定しているか否かに基づいて判定する。そして、実行区間特定情報が「ＯＮ」であり、実行中の処理ルーチンが禁止区間中に実行されていることを特定している場合、ＩＳＲを実行しないものと判定し（ＳＢ１のＮＯ）、ＩＳＲの実行を禁止して、ＳＢ３に移行する。また、実行区間特定情報が「ＯＦＦ」であり、実行中の処理ルーチンが禁止区間中に実行されていないことを特定している場合、ＩＳＲを実行するものと判定し（ＳＢ１のＹＥＳ）、ＩＳＲの実行を許可して、ＳＢ２に移行する。ここでは、例えば、図３のタイミングＴ１よりも前のタイミング、あるいは、タイミングＴ２よりも後のタイミングに、ＩＳＲの駆動要求が発生した場合、「実行区間特定情報」＝「ＯＦＦ」であるので、ＩＳＲを実行するものと判定し、また、タイミングＴ１とタイミングＴ２との間のタイミングにＩＳＲの駆動要求が発生した場合、「実行区間特定情報」＝「ＯＮ」であるので、ＩＳＲを実行しないものと判定する。
【００４５】
図５のＳＢ２においてＣＰＵ３は、ＩＳＲを実行する。具体的には任意であるが、例えば、実行中の処理ルーチンに対してＩＳＲを割り込ませることにより、ＩＳＲの実行を開始する。具体的には任意であるが、例えば、割り込み側処理を起動する場合に駆動を要求されたＩＳＲを、現在実行中の処理ルーチンに対して割り込ませて実行を開始する。
【００４６】
一方、図５のＳＢ１にてＩＳＲを実行しないものと判定した（ＳＢ１のＮＯ）後にＳＢ３においてＣＰＵ３は、要求情報を格納する。具体的には任意であるが、例えば、割り込み側処理を起動する場合に駆動を要求されたＩＳＲを特定するアドレスを取得し、取得したアドレスを要求情報としてＲＡＭ２に格納する。ここでは、例えば、図３のＩＳＲ５１を特定するアドレスを要求情報として格納する。これにて、割り込み側処理を終了する。
【００４７】
（動作）
次に、被割り込み側処理及び割り込み側処理に関するマイクロコンピュータ１００の動作について説明する。ここでは、例えば、図３におけるタスク４１の実行中において、ＩＳＲの駆動要求が何ら発生しない場合（以下、第１の場合）、許可区間にＩＳＲ５１の駆動要求が発生する場合（以下、第２の場合）、禁止区間にＩＳＲ５１の駆動要求が発生する場合（以下、第３の場合）、及び許可区間であるか禁止区間であるかに関わらずＩＳＲ５２の駆動要求が発生する場合（以下、第４の場合）を例示して説明する。
【００４８】
（動作−第１の場合）
第１の場合においては、図３におけるタスク４１の実行中においてＩＳＲの駆動要求が何ら発生しなかった場合、図５の割り込み側処理は起動されず、図４の被割り込み側処理におけるＳＡ１〜ＳＡ３を実行した後、ＲＡＭ２の要求情報が「ＮＵＬＬ」のままとなっているので、ＳＡ４にて要求情報が格納されていないものと判定し（ＳＡ４のＮＯ）、タスク４１が継続して実行されることになる。この場合、図３の禁止区間が存在するものの、ＩＳＲの割り込みを禁止する処理は、実行されないことになる。
【００４９】
（動作−第２の場合）
第２の場合において、図３におけるタスク４１の実行中においてタイミングＴ１よりも前のタイミング（つまり、図４の被割り込み側処理起動される前のタイミング）である許可区間に、ＩＳＲ５１の駆動要求が発生した場合、図５の割り込み側処理は起動されて、ＳＢ１のＹＥＳの後のＳＢ２において、実行中のタスク４１に対してＩＳＲ５１が割り込むことにより、タスク４１の実行が中断してＩＳＲ５１が実行されることになる。この後、当該ＩＳＲ５１が終了した場合、タスク４１が復帰して「第１の場合」と同様にして実行されることになる。
【００５０】
（動作−第３の場合）
第３の場合において、図３におけるタスク４１の実行中においてタイミングＴ１とタイミングＴ２の間のタイミング（つまり、図４のＳＡ２のタイミング）である禁止区間に、ＩＳＲ５１の駆動要求が発生した場合、図５の割り込み側処理は起動されて、ＳＢ１のＮＯの後のＳＢ３において、（ＩＳＲ５１が実行されずに）ＩＳＲ５１のアドレスが要求情報として格納される。そして、図４の被割り込み側処理におけるＳＡ２及びＳＡ３を実行した後、ＲＡＭ２の要求情報としてＩＳＲ５１のアドレスが格納されているので、ＳＡ４にて要求情報が格納されているのと判定し（ＳＡ４のＹＥＳ）、ＳＡ５にて実行中のタスク４１に対してＩＳＲ５１が割り込むことにより、タスク４１の実行が中断してＩＳＲ５１が実行されることになる。この場合、図３の禁止区間（タイミングＴ１とタイミングＴ２の間のタイミング）でＩＳＲ５１の駆動要求が発生するが、当該ＩＳＲ５１は禁止区間中は実行されず（つまり、禁止区間にてＩＳＲの割り込みを禁止する禁止処理が行われ）、図３に示すように、許可区間が開始したタイミング（タイミングＴ２）に割り込んで実行されることになる。
【００５１】
（動作−第４の場合）
第４の場合において、前述のように、図３のＩＳＲ５２には、割り込み側処理が組み込まれていないので、禁止区間にＩＳＲ５２の駆動要求が発生した場合、不図示であるが、タスク４１に対してＩＳＲ５２が割り込むことにより、タスク４１の実行が中断してＩＳＲ５２が実行されることになる。また、許可区間にＩＳＲ５２の駆動要求が発生した場合も、不図示であるが、タスク４１に対してＩＳＲ５２が割り込むことにより、タスク４１の実行が中断してＩＳＲ５２が実行されることになる。なお、この第４の場合、禁止区間のＩＳＲ５２の実行中にＩＳＲ５１の駆動要求が発生する場合があるが、この場合、前述の第３の場合と同様にして、禁止区間が終了するまでは当該ＩＳＲ５１の実行は保留され、禁止区間が終了した場合に、ＩＳＲ５１が実行されることになる。
【００５２】
（実施の形態の効果）
このように本実施の形態によれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【００５３】
また、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報を格納することにより、例えば、格納されている実行区間特定情報を参照するという比較的単純な処理にて禁止区間であるか否かを特定することができるので、処理時間を確実に短縮することが可能となる。
【００５４】
また、禁止処理を行った場合において実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させることにより、例えば、所定の割り込み処理ルーチンを確実に実行することが可能となる。
【００５５】
〔実施の形態に対する変形例〕
以上、本発明に係る実施の形態について説明したが、本発明の具体的な構成及び手段は、特許請求の範囲に記載した本発明の技術的思想の範囲内において、任意に改変及び改良することができる。以下、このような変形例について説明する。
【００５６】
（解決しようとする課題や発明の効果について）
まず、発明が解決しようとする課題や発明の効果は、上述の内容に限定されるものではなく、発明の実施環境や構成の細部に応じて異なる可能性があり、上述した課題の一部のみを解決したり、上述した効果の一部のみを奏したりすることがある。
【００５７】
（分散や統合について）
また、上述した各電気的構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散や統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散又は統合して構成できる。また、本出願における「装置」とは、単一の装置によって構成されたものに限定されず、複数の装置によって構成されたものを含む。
【００５８】
（形状、数値、構造、時系列について）
実施の形態や図面において例示した構成要素に関して、形状、数値、又は複数の構成要素の構造若しくは時系列の相互関係については、本発明の技術的思想の範囲内において、任意に改変及び改良することができる。
【００５９】
（禁止区間で割り込みを禁止するＩＳＲと許可するＩＳＲについて）
また、上記実施の形態の技術を用いて、禁止区間にて全てのＩＳＲについて割り込みを禁止してもよく、あるいは、一部のみのＩＳＲの割り込みを禁止してもよい。全てのＩＳＲについて割り込みを禁止する場合、図５の割り込み側処理を全てのＩＳＲに組み込むことにより実現してもよい。また、禁止区間にて一部のみのＩＳＲの割り込みを禁止する場合、図５の割り込み側処理を複数のＩＳＲのうちの一部のみのＩＳＲに組み込むことにより実現してもよい。図５の割り込み側処理を複数のＩＳＲのうちの一部のみのＩＳＲに組み込むことにより、禁止区間において、割り込みレベルに関わらず任意のＩＳＲの割り込みを禁止又は許可することが可能となる。
【００６０】
（禁止区間について）
また、上記実施の形態では、禁止区間に実行される処理が共有データを操作する処理である場合について例示したが、禁止区間に実行される処理がその他の任意の処理であることとしてもよい。また、上記実施の形態では、タスクに禁止区間が設けられている場合を例示したが、これに限らず、ＩＳＲに禁止区間を設定して、図４の被割込み側処理を当該ＩＳＲの少なくとも一部に組み込んだ上で、当該ＩＳＲに対する他のＩＳＲが割り込もうとする場合に、上記実施の形態の技術を適用してもよい。
【００６１】
（実行区間特定情報について）
また、上記実施の形態では、実行区間特定情報にて禁止区間であるか許可区間であるかを特定する場合を例示して説明したが、これに限らない。例えば、禁止区間を、所定のイベント発生を基準にした経過時間で定義できる場合、マイクロコンピュータ１００のタイマー等を用いて禁止区間であるか許可区間であるかを特定するように構成してもよい。
【００６２】
（バリエーションについて）
また、上記実施の形態では、図２のタスク４１及びＩＳＲ５１が共有データにアクセス処理を含む場合、つまり、１つのタスクと１つのＩＳＲで共有データの排他アクセスを行う場合を例示して説明したが、ハードウエア環境及びプログラム内容により、様々な場合が想定される。例えば、１つのタスクと２つ以上のＩＳＲで共有データの排他アクセスを行う場合も想定され、この場合、要求情報には同時に複数のＩＳＲの実行要求（つまり、複数のＩＳＲを特定する情報）が保留される場合が想定される。また、タスクには共有データへのアクセス処理が含まれておらず、複数のＩＳＲで共有データを排他アクセスする場合も想定されるが、この場合も、要求情報に複数のＩＳＲの実行要求が保留されることが想定される。なお、これら以外にも、本願の趣旨を逸脱しない範囲で様々なバリエーションが想定される。
【００６３】
（適用について）
また、上記実施の形態の技術を適用する場面は任意であるが、例えば、禁止区間にＩＳＲの駆動要求が発生する可能性が比較的低い場面に適用してもよく、この場合、特に効果的となる。また、上記実施の形態の技術を、任意の分野に適用してもよく、例えば、マイクロコンピュータ１００を車載装置の分野、あるいは、当該車載装置の分野以外の任意の分野に適用してもよい。
【００６４】
（付記）
付記１の処理プログラムは、コンピュータを、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【００６５】
付記２の処理プログラムは、付記１に記載の処理プログラムにおいて、前記処理手段は、前記実行中の処理ルーチンが前記禁止区間中に実行されているか否かを特定する実行区間特定情報を前記コンピュータに格納し、前記所定の割り込み処理ルーチンが割り込もうとした場合において、前記実行中の処理ルーチンが前記禁止区間中に実行されていることを特定する情報が前記実行区間特定情報として格納されている場合、前記禁止処理を行い、前記所定の割り込み処理ルーチンが割り込もうとしていない場合、前記実行区間特定情報に関わらず、前記禁止処理を行わない。
【００６６】
付記３の処理プログラムは、付記１又は２に記載の処理プログラムにおいて、前記処理手段は、前記禁止区間中に前記禁止処理を行った場合において、前記実行中の処理ルーチンの前記禁止区間中での実行を終了した場合、前記所定の割り込み処理ルーチンを前記実行中の処理ルーチンへ割り込ませて実行させる。
【００６７】
付記４の処理システムは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、を備え、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【００６８】
（付記の効果）
付記１に記載の処理プログラムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【００６９】
付記２に記載の処理プログラムによれば、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報を格納することにより、例えば、格納されている実行区間特定情報を参照するという比較的単純な処理にて禁止区間であるか否かを特定することができるので、処理時間を確実に短縮することが可能となる。
【００７０】
付記３に記載の処理プログラムによれば、禁止処理を行った場合において実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させることにより、例えば、所定の割り込み処理ルーチンを確実に実行することが可能となる。
【００７１】
付記４に記載の処理システムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【符号の説明】
【００７２】
１  ＲＯＭ
２  ＲＡＭ
３  ＣＰＵ
４１  タスク
５１  ＩＳＲ
５２  ＩＳＲ
１００  マイクロコンピュータ
Ｔ１  タイミング
Ｔ２  タイミング
【図１】
2020060909.tif 000003
【図２】
2020060909.tif 000004
【図３】
2020060909.tif 000005
【図４】
2020060909.tif 000006
【図５】
2020060909.tif 000007