(57)【要約】【課題】割込み信号に応じて対応する割込みルーチンを行う処理ユニット（１０）が割込みルーチンを実行中に優先順位の高い割込みを受けた場合に、割込み待ち時間を一定にする方法を提供する。【解決手段】割込み信号を受けると、処理ユニット（１０）はデータ値を複数のレジスタ（４０）からデータ・スタック（３０）上に記憶した後、対応する割込みルーチンを行う。次に、処理ユニット（１０）はデータ値をデータ・スタック（３０）からレジスタ（４０）に戻し、割込みを受けたときに実行していた処理を行う。処理ユニット（１０）がレジスタ値をデータ・スタック（３０）との間で転送している間に優先順位の高い割込みを受けた場合は、処理ユニット（１０）はその転送をやめて優先順位の高い割込みに応じてすぐレジスタ値をレジスタ（４０）からデータ・スタック（３０）に転送することを開始する。【選択図】図１
2009129459.tif 000002
【特許請求の範囲】
【請求項１】
データ処理機器であって、
データを処理する処理ユニットと、
複数のレジスタと、
データ・スタックと、
を備え、
前記処理ユニットは複数の割込み信号のそれぞれに応じて、対応する割込みルーチンを行い、
割込み信号を受けると、前記処理ユニットは前記複数のレジスタ内に記憶されている前記処理ユニットの状態を示す複数のデータ値を前記データ・スタック上に記憶することを含む割込み入口スタッキング・プロセスを開始するよう構成され、
割込みルーチンが完了すると、前記処理ユニットは前記複数のデータ値を前記データ・スタックから前記複数のレジスタに戻すことを含む割込み出口アンスタッキング・プロセスを開始するよう構成され、
前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスを実行中に優先順位の更に高い割込み信号を受けると、これに応じて前記処理ユニットは前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスをやめて、前記複数のレジスタ内に記憶されている別の複数のデータ値を前記データ・スタック上に記憶することを含む別の割込み入口スタッキング・プロセス開始するよう構成される、
データ処理機器。
【請求項２】
前記データ・スタックは専用の先入れ後出しバッファである、請求項１記載のデータ処理機器。
【請求項３】
前記データ処理機器はメモリを更に備え、前記データ・スタックは前記メモリの一部の中に実現される、請求項１記載のデータ処理機器。
【請求項４】
前記データ処理機器は前記データ・スタックの現在のトップを示すデータ・スタック・ポインタを記憶するためのデータ・スタック・ポインタ・レジスタを更に備える、請求項１記載のデータ処理機器。
【請求項５】
前記割込み入口スタッキング・プロセスは前記データ・スタック上に記憶された前記複数のデータ値に関連する追加のデータ値を記憶することを更に含み、前記データ・スタック上に記憶された前記複数のデータ値はデータ・スタック・フレームを含み、前記追加のデータ値はデータ・スタック・フレーム有効性を示す、請求項１記載のデータ処理機器。
【請求項６】
前記データ・スタック・フレーム有効性は前記データ・スタック・フレームの有効性を示す、請求項５記載のデータ処理機器。
【請求項７】
前記データ・スタック・フレーム有効性は前記データ・スタック・フレームに隣接する隣接データ・スタック・フレームの有効性を示す、請求項５記載のデータ処理機器。
【請求項８】
データ・スタック・フレーム有効性を示す前記追加のデータ値は無効なデータ・スタック・フレームを示し、前記処理ユニットは前記割込み出口アンスタッキング・プロセス中に前記無効なデータ・スタック・フレームを飛び越す、請求項５記載のデータ処理機器。
【請求項９】
データ・スタック・フレーム有効性を示す前記追加のデータ値は不完全なデータ・スタック・フレームを示し、前記処理ユニットは前記割込み出口アンスタッキング・プロセス中に前記不完全なデータ・スタック・フレームを飛び越す、請求項５記載のデータ処理機器。
【請求項１０】
前記処理ユニットは、前記優先順位の更に高い割込み信号を受けたときに前記割込み入口スタッキング・プロセスが到達した前記データ・スタック内の点で前記別の割込み入口スタッキング・プロセスを開始する、請求項１記載のデータ処理機器。
【請求項１１】
前記処理ユニットは、前記割込み入口スタッキング・プロセスが始まった前記データ・スタック内の点で前記別の割込み入口スタッキング・プロセスを開始する、請求項１記載のデータ処理機器。
【請求項１２】
前記処理ユニットは、前記割込み出口アンスタッキング・プロセスが始まった前記データ・スタック内の点で前記別の割込み入口スタッキング・プロセスを開始する、請求項１記載のデータ処理機器。
【請求項１３】
前記データ処理機器は前記データ・スタックの現在のトップを示すデータ・スタック・ポインタを記憶するためのデータ・スタック・ポインタ・レジスタを更に備え、前記別の割込み入口スタッキング・プロセスが完了した後、前記割込み出口アンスタッキング・プロセスを実行中に前記優先順位の更に高い割込み信号を受けた場合は、前記処理ユニットは前記データ・スタック・ポインタを変えて、前記別の割込み入口スタッキング・プロセスが始まったところを示すようにする、請求項１記載のデータ処理機器に従属するときの請求項５記載のデータ処理機器。
【請求項１４】
前記データ処理機器は前記データ・スタックの現在のトップを示すデータ・スタック・ポインタを記憶するためのデータ・スタック・ポインタ・レジスタを更に備え、前記別の割込み入口スタッキング・プロセスが完了した後、前記割込み出口アンスタッキング・プロセスを実行中に受けたその前の優先順位の高い割込み信号から起こった前記割込み入口スタッキング・プロセスを実行中に、前記優先順位の更に高い割込み信号を受けた場合は、前記処理ユニットは前記データ・スタック・ポインタを変えて、前記別の割込み入口スタッキング・プロセスが始まったところを示すようにする、請求項１記載のデータ処理機器に従属するときの請求項５記載のデータ処理機器。
【請求項１５】
前記割込み信号は前記処理ユニットの外部で生成される、請求項１記載のデータ処理機器。
【請求項１６】
前記割込み信号はデータ処理の直接の結果として生成される、請求項１記載のデータ処理機器。
【請求項１７】
前記割込み信号はデータ処理の副作用として生成される、請求項１記載のデータ処理機器。
【請求項１８】
データ処理機器を操作する方法であって、
複数のレジスタを有する処理ユニットを用いてデータを処理するステップと、
複数の割込み信号にそれぞれ応じて、対応する割込みルーチンを実行するステップと、
割込み信号を受けると、前記処理ユニットは、前記複数のレジスタ内に記憶されている前記処理ユニットの状態を示す複数のデータ値をデータ・スタック上に記憶することを含む割込み入口スタッキング・プロセスを開始するステップと、
割込みルーチンが完了すると、前記処理ユニットは、前記複数のデータ値を前記データ・スタックから前記複数のレジスタに戻すことを含む割込み出口アンスタッキング・プロセスを開始するステップと、
前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスを実行中に受けた優先順位の更に高い割込み信号に応じて、前記処理ユニットは、前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスをやめて、前記複数のレジスタ内に記憶されている別の複数のデータ値を前記データ・スタック上に記憶することを含む別の割込み入口スタッキング・プロセスを開始するステップと、
を含むデータ処理機器を操作する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は割込み信号に応じて対応する割込みルーチンを行うデータ処理ユニットに関するものである。
【背景技術】
【０００２】
割込み信号に応じて対応する割込みルーチンを行うデータ処理機器では、割込みに応じるのに要する時間（すなわち、割込み信号が表明されてから対応する割込みルーチンの最初の命令を実行するまでの時間）が変動すると実時間システムで問題になることがある。優先順位の高い割込みにおいては、データ処理機器は迅速にかつ予想できる方法で応答することが望ましく、変動の問題が特に深刻になることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
割込みに応じるとき、データ処理機器はスタック・ベースの例外モデルを用いてよいことが知られている。かかるモデルでは、例外信号すなわち割込み信号を受けると、処理ユニットはプロセッサの現在の状態を示すデータ値の集合（これは一般に処理ユニット内のレジスタの集合の内容である）をデータ・スタック上に記憶するよう構成される。割込み信号によりトリガされた割込みルーチンが終了すると、処理ユニットはデータ値の集合をデータ・スタックから取り出して、割込み信号を受けたところからプログラムの実行を続ける。かかるスタック・ベースの例外モデルは非常に小さくて割り込みできない。すなわち、処理ユニットが他の活動を行う前にスタッキング／アンスタッキング（ｓｔａｃｋｉｎｇ／ｕｎｓｔａｃｋｉｎｇ）プロセスを完全に終了しなければならない。これはプロセッサの状態を示すデータ値の集合の一貫性を保つという利点を有するが、最悪の場合には割込み応答時間が長くなって「割込みジッタ」を悪くすることもある。
【０００４】
または、スタック・ベースの例外モデルが割込み可能であって実行中のスタッキング／アンスタッキング・プロセスを優先順位の高い割込みが妨害するので、部分的にスタッキング／アンスタッキングされたデータ・スタックに対処するのに必要な機構を追加することがある。これは例えば次のように行ってよい。すなわち、優先順位の低い割込みにより始まったスタッキング・プロセスに優先順位の高い割込みが介入し、スタッキング・プロセスを単に続けてデータ値の全集合をデータ・スタックに転送した後、優先順位の高い割込みに対応する割込みルーチンを開始する。優先順位の高い割込みを受けたときから優先順位の高い割込みに対応する割込みルーチンの最初の命令の実行を開始する時間は優先順位の高い割込みを単独で受けた場合より早くなるので、割込み応答時間は通常より短くなって割込みジッタは悪くなる。
したがって、割込み応答時間をより一層一貫させる技術を提供することが望ましい。
【課題を解決するための手段】
【０００５】
第１の態様では、本発明は、データを処理する処理ユニットと、複数のレジスタと、データ・スタックとを含むデータ処理機器を提供する。前記処理ユニットは複数の割込み信号のそれぞれに応じて対応する割込みルーチンを行い、割込み信号を受けると、前記処理ユニットは前記複数のレジスタ内に記憶されている前記処理ユニットの状態を示す複数のデータ値を前記データ・スタック上に記憶することを含む割込み入口スタッキング・プロセス（ｉｎｔｅｒｒｕｐｔ  ｅｎｔｒｙ  ｓｔａｃｋｉｎｇ  ｐｒｏｃｅｓｓ）を開始するよう構成され、割込みルーチンが完了すると、前記処理ユニットは前記複数のデータ値を前記データ・スタックから前記複数のレジスタに戻すことを含む割込み出口アンスタッキング・プロセス（ｉｎｔｅｒｒｕｐｔ  ｅｘｉｔ  ｕｎｓｔａｃｋｉｎｇ  ｐｒｏｃｅｓｓ）を開始するよう構成され、前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスを実行中に優先順位の更に高い割込み信号を受けると、これに応じて前記処理ユニットは前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスをやめて、前記複数のレジスタ内に記憶されている別の複数のデータ値を前記データ・スタック上に記憶することを含む別の割込み入口スタッキング・プロセス開始するよう構成される。
【０００６】
本発明の方法の考えでは、場合によっては、割込み応答時間が変動することによる性能劣化の方が、割込み応答時間をできるだけ短くすることをしないために生じる性能劣化より悪い。したがって、本発明のデータ処理機器は、すでに割込み入口スタッキング・プロセスまたは割込み出口アンスタッキング・プロセスを実行中に優先順位の高い割込み信号を受けた場合は、処理ユニットはそのスタッキング／アンスタッキング・プロセスをやめて、優先順位の高い割込み信号のための別の割込み入口スタッキング・プロセスを開始するよう構成される。このように、優先順位の低い割込みを処理中に優先順位の高い割込みを受けたかどうかに関わらず、優先順位の高い割込み信号を受けると同じ完全な割込み入口スタッキング・プロセスを行う。これにより、その優先順位の高い割込み信号のための割込み応答時間の変動は大幅に減少する。
【０００７】
認識されるように、データ・スタックは種々の方法で実現することができるが、１つの実施の形態ではデータ・スタックは専用の先入れ後出しバッファである。このバッファはこの構成要素を実現するための非常に簡単な方法である。しかし別の実施の形態では、データ処理機器はメモリを更に含み、データ・スタックはそのメモリの一部の中で実現される。これによりデータ・スタックを実現する方法の柔軟性が大きくなり、特に必要に応じてデータ・スタックの記憶空間を大幅に拡張することができる。
【０００８】
データ・スタックは単に簡単な先入れ後出し方式で厳密な「スタック」として実現してよいが、種々の実施の形態では、データ処理機器はデータ・スタックの現在のトップを示すデータ・スタック・ポインタを記憶するためのデータ・スタック・ポインタ・レジスタを更に含む。これにより、データ・スタックの現在のトップを柔軟に定義することができる。例えば、データ・スタック上に記憶されているデータ値の集合を、データ・スタックの現在のトップをこれらの値の下の点に定義することにより、無視する／無効にすることができる。
【０００９】
１つの実施の形態では、データ・スタック上に記憶された複数のデータ値はデータ・スタック・フレームを含み、割込み入口スタッキング・プロセスはデータ・スタック上に記憶された複数のデータ値に関連する追加の値を記憶することを更に含み、この追加のデータ値はデータ・スタック・フレーム有効性を示す。複数のデータ値をグループ化してデータ・スタック・フレームとし、データ・スタック・フレーム有効性を示す追加のデータ値を更に含めることにより、処理ユニットの状態を示すデータ値の集合が有効か無効かを容易に識別することができる。
【００１０】
或る状態では、データ・スタック・フレームはデータ・スタック上に記憶されているときに無効であると分かることがある。この場合は、データ・スタック・フレーム有効性を示す追加のデータ値はこれを含むデータ・スタック・フレームの有効性を示す。または、データ・スタック・フレームの有効性はデータ・スタック上に記憶された後に変わってよく、その場合は、その有効性は次のデータ・スタック・フレームにより示してよいので、データ・スタック・フレームの有効性を示す追加のデータ値は、これらの追加のデータ値を含むデータ・スタック・フレームに隣接する隣接データ・スタック・フレームの有効性を示す。データ・スタック・フレームが無効であることを示す追加のデータ値を設けることは特に有用である。データ・スタック・フレームに無効の印が付いているので、処理ユニットがデータ・スタックから値をアンスタッキングするとき、これらの無効なデータ・スタック・フレームは無視してよく、１つの実施の形態では、処理ユニットは割込み出口アンスタッキング・プロセス中に無効なデータ・スタック・フレームを飛び越す（スキップする）。
【００１１】
データ・スタック・フレームの有効性を示す追加のデータ値は完全なデータ・スタック・フレームを指してよいが、不完全なデータ・スタック・フレームを示してもよく、１つの実施の形態では、処理ユニットは割込み出口アンスタッキング・プロセス中に不完全なデータ・スタック・フレームを飛び越すように動作可能である。
【００１２】
認識されるように、処理ユニットが或る割込み入口スタッキング・プロセスをやめて別の割込み入口スタッキング・プロセスを開始するとき、処理ユニットは前記別の割込み入口スタッキング・プロセスをデータ・スタック内の種々の点で開始してよいが、１つの実施の形態では、処理ユニットは、優先順位の更に高い割込み信号を受けたときに割込み入口スタッキング・プロセスが到達したデータ・スタック内の点で前記別の割込み入口スタッキング・プロセスを開始する。これにより処理ユニットは、優先順位の高い割込みのための新しいデータ・スタック・フレームを現在丁度到達したデータ・スタック上の点で開始し、その新しいデータ・スタック・フレーム内の追加のデータ値を記憶して、その割り込まれたデータ・スタック・フレームが不完全であることを示す。
【００１３】
別の実施の形態では、処理ユニットは、割込み入口スタッキング・プロセスが始まったデータ・スタック内の点で別の割込み入口スタッキング・プロセスを開始するように動作可能である。したがって、処理ユニットは、優先順位の低い割込みによりトリガされた割込み入口スタッキング・プロセスが開始されたデータ・スタック上の点に単に戻って、その前の優先順位の低い割込みを受けなかったかのように複数のデータ値をデータ・スタック上に記憶する。
【００１４】
１つの実施の形態では、割込み出口アンスタッキング・プロセス中に優先順位の高い割込みを受けた場合は、処理ユニットは割込み出口アンスタッキング・プロセスが始まったデータ・スタック内の点で別の割込み入口スタッキング・プロセスを開始するように動作可能である。このとき、割込み出口アンスタッキング・プロセスが部分的に処理していたデータ値の集合を、後でアンスタッキングするためにデータ・スタック上の所定の場所に残す。この別の割込み入口スタッキング・プロセスは割込み出口アンスタッキング・プロセスの途中で開始するので、処理ユニット内に記憶された値の集合は不確定状態にあり、したがってこの別の割込み入口スタッキング・プロセスによりデータ・スタック上に記憶されたデータ値は無効である。これは、この別の割込み入口スタッキング・プロセスにより記憶されたデータ値に関連する、この最新のデータ・スタック・フレームが無効であることを示す追加のデータ値を記憶することにより示してよい。
【００１５】
または、別の実施の形態では、別の割込み入口スタッキング・プロセスが完了した後、割込み出口アンスタッキング・プロセスを実行中に優先順位の更に高い割込み信号を受けた場合は、処理ユニットはデータ・スタック・ポインタを変えて、この別の割込み入口スタッキング・プロセスが始まった点を示すようにする。この簡単な機構により、優先順位の高い割込みに対応する割込みルーチンが完了すると、処理ユニットは優先順位の高い割込みにより生じた無効なデータ・スタック・フレームを無視してデータ・スタックからデータ値のアンスタッキングを開始し、その前の有効な、優先順位の低い割込みに対応するデータ値をアンスタッキングする。
【００１６】
別の実施の形態では、別の割込み入口スタッキング・プロセスが完了した後、割込み出口アンスタッキング・プロセスを実行中に受けたその前の優先順位の高い割込み信号から起こった割込み入口スタッキング・プロセスを実行中に、優先順位の更に高い割込み信号を受けた場合は、処理ユニットはデータ・スタック・ポインタを変えて、この別の割込み入口スタッキング・プロセスが始まったところを示すようにする。これが必要な理由は、或る割込み入口スタッキング・プロセスを実行中に優先順位の更に高い割込み信号を受けたにもかかわらず、この優先順位の更に高い割込み信号に応じてデータ・スタック上に作られたデータ・スタック・フレームは、割込み入口スタッキング・プロセスの途中にその前の優先順位の高い割込み信号を受けたために、やはり無効だからである。したがって、最新の優先順位の最も高い割込み信号に対応する割込みルーチンが完了すると、処理ユニットは、優先順位の高い割込み信号により作られた無効なデータ・スタック・フレームを無視してデータ・スタックのアンスタッキングを開始する必要がある。
【００１７】
認識されるように、割込み信号は種々のソースから来てよい。１つの好ましい実施の形態では、割込み信号は処理ユニットの外部で生成される（例えば、リセット信号、ＩＲＱ信号、またはＦＩＱ信号）。別の実施の形態では、割込み信号はデータの処理の直接の結果（ソフトウエア割込み、不確定の命令、または先読み打切りなど）として生成される。更に別の実施の形態では、割込み信号はデータの処理の副作用（データ打切りの例外から起こるなど）として生成される。
【００１８】
第２の態様では、本発明はデータ処理機器を操作する方法を提供する。この方法は、複数のレジスタを有する処理ユニットを用いてデータを処理するステップと、複数の割込み信号にそれぞれ応じて対応する割込みルーチンを実行するステップと、割込み信号を受けると前記処理ユニットは、前記複数のレジスタ内に記憶されている前記処理ユニットの状態を示す複数のデータ値をデータ・スタック上に記憶することを含む割込み入口スタッキング・プロセスを開始するステップと、割込みルーチンが完了すると、前記処理ユニットは、前記複数のデータ値を前記データ・スタックから前記複数のレジスタに戻すことを含む割込み出口アンスタッキング・プロセスを開始するステップと、前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスを実行中に受けた優先順位の更に高い割込み信号に応じて、前記処理ユニットは、前記割込み入口スタッキング・プロセスまたは前記割込み出口アンスタッキング・プロセスをやめて、前記複数のレジスタ内に記憶されている別の複数のデータ値を前記データ・スタック上に記憶することを含む別の割込み入口スタッキング・プロセスを開始するステップとを含む。
本発明の上記またはその他の目的、特徴、および利点は以下の例示の実施の形態の詳細な説明を添付の図面に関連して読めば明らかになる。
【実施例】
【００１９】
図１はメモリ２０に接続するプロセッサ・コア１０を示す。プロセッサ１０は、データ・スタック３０と、レジスタの集合４０と、スタック・ポインタ（ＳＰ）レジスタ５０とを含む。通常のデータ処理動作中は、プロセッサ・コア１０の活動はレジスタ４０内に記憶されている値により指示される。例えば、これらの値の１つは、命令を読み取り中の現在のメモリ・アドレスを示すプログラム・カウンタ（ＰＣ）である。更に、プロセッサ・コア１０は入力６０から割込み信号を受けてよい。割込み信号を受けると、プロセッサ・コア１０は割込みサービス・ルーチン（ＩＳＲ；Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）（ここでは「割込みルーチン」とも呼ぶ）を行い、まずレジスタ４０内に記憶されているデータ値の集合をデータ・スタック３０上に記憶することを含む割込み入口スタッキング・プロセスを実行する。
【００２０】
このプロセッサ・コアの状態情報をこのようにして記録することにより、プロセッサ・コア１０は、割込み信号を受けたときに離れた処理活動の点に戻ることができる。この例示の実施の形態ではデータ・スタック３０はプロセッサ・コア専用の構成要素であるが、別の実施の形態では、データ・スタックはメモリ２０内の一連のメモリ位置で実現してもよい。プロセッサ・コア１０はＳＰレジスタ５０も含む。これはデータ・スタックの現在のトップを指すポインタを含み、データ・スタック上に記憶されているデータの「最も上の」有効な項目を示す（「最も上の」という用語はスタック上の最新のデータ項目を指すのに用いる。降順のスタックとして実現されるデータ・スタックのデータ項目は、新しいほど一層低いメモリ・アドレスに追加される。したがってこの場合は、データの「最も上の」有効な項目はデータ・スタック上の最も低い有効アドレスにある）。
【００２１】
割込み入口スタッキング・プロセスが完了すると、プロセッサ・コアのプログラム・カウンタ（ＰＣ）は、受けとった特定の割込み信号に対応するベクトル・アドレスに飛ぶ。このベクトル・アドレスは、割込みを受けたときに行うべき対応する割込みルーチンの開始位置を与える。次に割込みルーチンが完了すると、処理ユニットは、データ値の集合をデータ・スタック３０からレジスタ４０に戻すことを含む割込み出口アンスタッキング・プロセスを開始するよう構成される。次のプロセッサ・コアの活動は、割込み信号を受けたときに到達していた点から続ける。
【００２２】
しかし、割込み入口スタッキング・プロセスまたは割込み出口アンスタッキング・プロセスを実行中にプロセッサ・コア１０が入力６０から別の割込み信号を受け、これが最初の割込み信号より優先順位が高い場合は、プロセッサ・コア１０は割込み入口スタッキング・プロセスまたは割込み出口アンスタッキング・プロセスをやめて、新しい優先順位の高い割込み信号に応じて別の割込み入口スタッキング・プロセスを開始するよう構成される。他方で、プロセッサ・コアが現在サービス中の割込み信号より新しい割込み信号の方が優先順位が低いと見なされる場合は、前の優先順位の高い割込み信号の処理が完了する（すなわち、その処理ルーチンの実行が完了する）までは後の割込み信号は未処理のまま置かれる。
【００２３】
データ・スタックの例を図２に示す。このデータ・スタックはメモリ２０内に実現されており、この図のデータ・スタックの部分はメモリ・アドレス０ｘ０ＦＤＣから０ｘ０１０００までをカバーする。このデータ・スタックの例はメモリ・アドレスの低い方に伸びて、スタック・ポインタはデータ・スタックに最後に書き込まれた項目を指す（これを一般に「完全降順スタック」と呼ぶ）。したがって、図２に示すデータ・スタック内では、前に使用したときにデータ・スタックをメモリ・アドレス０ｘ０１０００まで満たし、スタック・ポインタＳＰはここを指す。入力６０に割込み信号を受けると、プロセッサ・コア１０は割込み入口スタッキング・プロセスを開始してレジスタ４０内の値の集合をデータ・スタック上に記憶する。データ・スタック上に記憶されたこのレジスタ値の集合を「データ・スタック・フレーム」とも呼ぶ。
【００２４】
図２ではこれらのレジスタ値をレジスタ・ラベルＸＰＳＲ、ＰＣ、Ｒ１４，Ｒ１２、Ｒ３、Ｒ２、Ｒ１、Ｒ０で示す。したがって、このデータ値の集合をデータ・スタック上に記憶すると、修正されたスタック・ポインタＳＰはメモリ・アドレス０ｘ０ＦＥ０を指す。割込み入口スタッキング・プロセスでは、レジスタ値はデータ・スタック上に順に記憶される。ただし、これは厳密にメモリ・アドレスの順序である必要はない。例えば１つの実施の形態では、図２に示すようにデータ・スタック上の位置に記憶されていても、レジスタ値は実際にはＰＣ、ＸＰＳＲ、Ｒ０，Ｒ１、Ｒ２、Ｒ３、Ｒ１２、Ｒ１４の順に転送してよい。
【００２５】
図３Ａ，４Ａ、４Ｃ、５Ａ、５Ｃ、５Ｅを参照する以下の説明では、図２に下向きに示す順に従って順次にレジスタ値をデータ・スタック上にスタッキングする例示の実施の形態を記述する。また、スタッキング／アンスタッキング中は、ＳＰは、データ・スタック上にスタッキングしまたはデータ・スタックからアンスタッキングした最後の値を指すよう絶えず更新される。この方法をここでは（「増分データ値スタッキング」）と呼ぶ。
【００２６】
対照的に、図３Ｂ、４Ｂ、４Ｄ、５Ｂ、５Ｄ、５Ｆを参照する以下の説明では、（上に述べたように）図２に示すようにデータ・スタック上の位置に記憶するにもかかわらず、ＰＣ、ＸＰＳＲ、Ｒ０、Ｒ１、Ｒ２、Ｒ３、Ｒ１２、そして最後にＲ１４の順にレジスタ値をデータ・スタック上に移す例示の実施の形態を記述する。この実施の形態では、ＳＰは、割込み入口スタッキング・プロセスの始めに（および割込み出口アンスタッキング・プロセスの終わりに）スタッキング／アンスタッキングが一旦完了した位置に対応して更新される。この方法をここでは「フレーム毎のスタッキング」と呼ぶ。
【００２７】
図３Ａ、４Ａ、４Ｃ、５Ａ、５Ｃ、５Ｅに示す状態（「増分データ値スタッキング」）は図３Ｂ、４Ｂ、４Ｄ、５Ｂ、５Ｄ、５Ｆ（「フレーム毎のスタッキング」）に示す状態にそれぞれ対応する。注意すべきであるが、これらの全ての図で、アドレス（１、２、３など）および時刻（Ａ、Ｂ、Ｃなど）は随意のラベルであって、メモリ空間でも時刻でも必ずしも等間隔と考えなくてよい。
【００２８】
図３Ａおよび図３Ｂは、優先順位の低い割込みのすぐ後に優先順位の高い割込みが続くときの、或る時間にわたるスタック・ポインタ・アドレスの経過を示す。レジスタ４０の内容をデータ・スタック上にスタッキングする間、ＳＰがメモリ・アドレス３を指す時刻Ａに、プロセッサ・コア１０は優先順位の低い割込みを受けて割込み入口スタッキング・プロセスを開始する。図３Ａでは、ＳＰは割込み入口スタッキング・プロセスのコースの上をメモリ・アドレス３からメモリ・アドレス２に動く。図３Ｂでは、ＳＰは割込み入口スタッキング・プロセスの直前にメモリ・アドレス３からメモリ・アドレス２に動く。
【００２９】
割込み入口スタッキング・プロセスは時刻Ｂに完了し、ここで優先順位の低い割込みに対応する割込みルーチンが開始するが、すぐその後に、それが完了する前に、時刻Ｃにプロセッサ・コア１０は優先順位の高い割込みを受ける。これにより新しい割込み入口スタッキング・プロセスが始まり、それが終わると（図３Ａでは増分的に／図３Ｂでは１つの初期ステップで）時刻ＤにＳＰはメモリ・アドレス１にある。次に優先順位の高い割込みに対応する割込みルーチンが始まる。したがって図３Ａから分かるように、優先順位の高い割込みの割込み待ち時間（すなわち、優先順位の高い割込みを受けてから優先順位の高い割込みルーチンの最初の命令を実行するまでの時間）は時点ＣとＤとの間の時間である。
【００３０】
この割込み待ち時間はレジスタ値をデータ・スタック上にスタッキングするのに要する時間を表し、プロセッサ・コアがレジスタ値をデータ・スタック上にスタッキングしているときではなく命令を実行しているときに優先順位の高い割込みを受けた場合は、比較的に一定のはずである。しかし、プロセッサ・コアが優先順位の低い割込みのための割込み入口スタッキング・プロセスを実行中に優先順位の高い割込みを受けたと仮定して、優先順位の低い割込みにより始めた割込み入口スタッキング・プロセスを完了することが許される場合は、その後すぐに優先順位の高い割込みに対応する割込みルーチンを開始する（したがって、優先順位の高い割込みのための待ち時間が短くなる）か、またはそのときから優先順位の高い割込みのための新しい割込み入口スタッキング・プロセスを開始する（したがって、優先順位の高い割込みのための待ち時間が長くなる）かにより、この割込み待ち時間が大幅に変動する可能性がある。
【００３１】
優先順位の高い割込みのための割込み待ち時間のこのような変動は本発明の方法により避けることができる。本発明の１つの実施の形態におけるスタック・ポインタの、時間に従う経過を図４Ａ／４Ｂおよび図４Ｃ／４Ｄに示す。図４Ａおよび図４Ｂでは、優先順位の低い割込みにより始まった割込み入口スタッキング・プロセスがまだ進行中に、プロセッサ・コア１０は優先順位の高い割込みを受ける。優先順位の低い割込みは、スタック・ポインタがメモリ・アドレス６を指している時刻Ｅに受ける。すぐ後に、割込み入口スタッキング・プロセスが完了する前の時刻Ｆに、プロセッサ・コア１０は優先順位の高い割込みを受ける。
【００３２】
この時点で、データ・スタックへのデータ値の転送は部分的にしか終わっていない。図４Ａの例では、スタック・ポインタはやっとメモリ・アドレス５’に到達したところである。図４Ｂの例では、値ＸＰＳＲ、ＰＣ、Ｒ０しか転送されていない。次に、プロセッサ・コアは優先順位の低い割込みにより始まった割込み入口スタッキング・プロセスをやめて、優先順位の高い割込みにより始まる新しい割込み入口スタッキング・プロセスをすぐ開始する。これはレジスタ値をレジスタ４０からデータ・スタック上にスタッキングすることの再開を含む。図４Ａの例では、これはメモリ・アドレス５’からである。図４Ｂの例では、これはメモリ・アドレス５からである。
【００３３】
このように、特に図４Ａから分かるように、この場合の優先順位の高い割込みのための割込み待ち時間（時刻Ｆから時刻Ｇまで）は図３Ａに示す割込み待ち時間（時刻Ｃから時刻Ｄまで）と同じである。
【００３４】
更に、プロセッサ・コアは３２ビットのレジスタ値の１つの中（例えば、ＸＰＳＲまたはＰＣの中）の未使用空間を利用して追加のデータ値を記憶する。これは、上のスタック・フレームが不完全であって有効なデータ・スタック・フレームを形成しないことを示す。したがって、優先順位の高い割込みに対応する割込みルーチン（時刻Ｇで始まる）が完了して、プロセッサ・コアがアドレス４から上のレジスタ値の集合をアンスタッキングすると、認識されるように、この集合のすぐ上のレジスタ値は不完全なデータ・スタック・フレーム（すなわち、レジスタ値の不完全な集合）を形成するので無視してよい。これを図４Ｂに示す。すなわち、アンスタッキングがアドレス５に到達すると、ＳＰはアドレス６に飛ぶ。
【００３５】
理解されるように、図４Ｂに示す例では、上のデータ・スタック・フレームが不完全であることを示す追加のデータ値は「上のデータ・スタック・フレームは不完全／無効」を示すだけでよく、プロセッサはこれによりＳＰを単に１フレームだけ（すなわち、ここで説明する例では８メモリ・アドレスだけ）飛び越してよいことを知る。図４Ａに示す例では、上のデータ・スタック・フレームが不完全であることを示す追加のデータ値は、上のメモリ・アドレスのいくつが不完全なデータ・スタック・フレームに対応するかを示す必要もある。例えば、優先順位の高い割込みを受けるまでに不完全な割込み入口スタッキング・プロセスがＸＰＳＲ、ＰＣ、およびＲ１４しかスタッキングしていない場合は、追加のデータ値は現在のデータ・スタック・フレームの上の３つのメモリ・アドレスを飛び越すべきことを示さなければならない。
【００３６】
または、図４Ｃおよび図４Ｄに示すように、割込み出口アンスタッキング・プロセスを実行中にプロセッサ・コアが優先順位の高い割込みを受けることがある。この例では、優先順位の低い割込みに対応する割込みルーチンは時刻Ｈに完了し、プロセッサ・コアは割込み出口アンスタッキング・プロセスを開始して、レジスタ値をデータ・スタックからレジスタ４０に戻す。割込みルーチンが完了したとき（割込み復帰）、スタック・ポインタはアドレス８にある。時刻Ｉに優先順位の高い割込みを受けたとき、アンスタッキングは部分的にしか完了していない。
【００３７】
図４Ｃでは、スタック・ポインタはやっとメモリ・アドレス９’に到着したところである。図４Ｄの例では、レジスタ値の一部しかアンスタッキングされていない（「部分的アンスタッキング」）。プロセッサ・コアは優先順位の高い割込みにより始まる新しい割込み入口スタッキング・プロセスを時刻Ｉにすぐ開始し、スタック・ポインタをメモリ・アドレス８に戻し、レジスタ値の全集合をデータ・スタックに移し、時刻Ｊにこのプロセスを完了する。この場合も割込み待ち時間は一定に保たれる（時刻Ｉから時刻Ｊまで）。時刻Ｊに割込み入口スタッキング・プロセスが終わるまでには（図４Ｃでは増分的に／図４Ｄでは１つの初期ステップで）、ＳＰはメモリ・アドレス７にある。
【００３８】
注意すべきであるが、プロセッサ・コアのレジスタは不確定状態にあるので、優先順位の高い割込みのためにメモリ・アドレス７と８の間に記憶された新しいデータ・スタック・フレーム自身は無効である。なぜなら、優先順位の高い割込みを受けるまでにレジスタ値の全集合の一部しかレジスタ４０に戻されていないからである。このことは新しいデータ・スタック・フレームの書込み中に分かっており、プロセッサ・コアは３２ビットのレジスタ値（例えば、ＸＰＳＲまたはＰＣ）の一部の空間を利用して、メモリ・アドレス７と８との間に書き込まれたデータ・スタック・フレームに無効のラベルを付ける。
【００３９】
このように、優先順位の高い割込みのための割込み待ち時間は保持されたが、その間に書き込まれたデータ・スタック・フレームは無効であり、優先順位の高い割込みに対応する割込みルーチン（これは時刻Ｊに開始する）が完了すると、プロセッサ・コアはメモリ・アドレス７と８との間に書き込まれたデータ・スタック・フレームを飛び越して、メモリ・アドレス８の上のデータ・スタック・フレームのアンスタッキングを再開する（図４Ｄに示すようにである）。すなわち、優先順位の高い割込みを受けたときにやめた割込み出口アンスタッキング・プロセスを再開する。
【００４０】
本発明の別の実施の形態を図５Ａ−５Ｆに示す。この実施の形態は、図４Ａ−４Ｄに示した「スタック・フレーム・タグ付け（ｓｔａｃｋ  ｆｒａｍｅ  ｔａｇｇｉｎｇ）」法に対して「強化再スタッキング（ｅｎｆｏｒｃｅｄ  ｒｅｓｔａｃｋｉｎｇ）」法と呼ぶ。図４Ａおよび図４Ｂと同様に図５Ａおよび図５Ｂでは、プロセッサが割込み入口スタッキング・プロセスを実行中に優先順位の高い割込みを受ける。優先順位の高い割込みは時刻Ｆに受け、この時刻までに割込み入口スタッキング・プロセスは部分的にしか完了していない。図５Ａの例では、スタック・ポインタはやっとメモリ・アドレス１１に到着したところである。図５Ｂの例では、値ＸＰＳＲ、ＰＣ、Ｒ０しか転送されていない。
【００４１】
優先順位の高い割込みを受けると、プロセッサ・コアは優先順位の低い割込みにより始まった割込み入口スタッキング・プロセスをやめる（スタック・フレーム・タグ付け法と同様に）が、スタック・ポインタをメモリ・アドレス１２に戻して、優先順位の高い割込みのための新しい割込み入口スタッキング・プロセスを開始し、部分的に完全なデータ・スタック・フレームを上書きし、アドレス１２と１０との間に全データ・スタック・フレームを書き込む。優先順位の高い割込みにより始まった割込み入口スタッキング・プロセスは時刻Ｇに完了し、やはり優先順位の高い割込みのための割込み待ち時間（時刻Ｆと時刻Ｇとの間）を保持する。優先順位の高い割込みに対応する割込みルーチンが完了すると、プロセッサ・コアはメモリ・アドレス１０と１２との間に記憶されているレジスタ値をデータ・スタックからレジスタ４０にアンスタッキングする。
【００４２】
図４Ｃおよび図４Ｄと同様に図５Ｃおよび図５Ｄでは、プロセッサ・コアは優先順位の低い割込みルーチンから時刻Ｈに復帰し、時刻Ｉに優先順位の高い割込みを受けたときには割込み出口アンスタッキング・プロセスを実行中である。割込みルーチンが完了したとき（割込み復帰）、スタック・ポインタはアドレス８にある。時刻Ｉに優先順位の高い割込みを受けたときアンスタッキングは部分的にしか完了していない。図５Ｃの例では、スタック・ポインタはやっとメモリ・アドレス９’に到着したところである。図５Ｄの例では、レジスタ値の一部しかアンスタッキングされていない（「部分的アンスタッキング」）。次に、プロセッサ・コアは時刻Ｉにアンスタッキング・プロセスをやめ、スタック・ポインタをメモリ・アドレス８に戻し、新しい割込み入口スタッキング・プロセスを始めて、データ・スタック・フレームをメモリ・アドレス８と７との間に書き込む。これは時刻Ｊに完了する。
【００４３】
この場合も、割込み待ち時間は一定に保たれる（時刻Ｉから時刻Ｊまで）。時刻Ｊに割込み入口スタッキング・プロセスが終わるまでには（図５Ｃでは増分的に／図５Ｄでは１つの初期ステップで）、ＳＰはメモリ・アドレス７にある。
【００４４】
図４Ｃおよび図４Ｄを参照して述べたように、優先順位の高い割込みのためにメモリ・アドレス７と８との間に記憶された新しいデータ・スタック・フレーム自身は無効である。なぜなら、部分的に完全なアンスタッキング・プロセスをやめたからである。このことは新しいデータ・スタック・フレームの書込み中に分かっており、スタッキング・プロセスが完了すると、プロセッサ・コアは優先順位の高い割込みルーチンの最初の命令を実行する時刻Ｊにスタック・ポインタをメモリ・アドレス８に戻す。優先順位の高い割込みルーチンが完了すると、プロセッサ・コアは割込み出口アンスタッキング・プロセスを開始して、メモリ・アドレス８の上の有効なデータ・フレームをアンスタッキングする。
【００４５】
考慮すべき本発明の「強化再スタッキング」の実施の形態の最後の態様を図５Ｅおよび図５Ｆに示す。この例では、プロセッサ・コアが時刻Ｋに開始した割込み出口アンスタッキング・プロセスを実行中に第１の優先順位の高い割込みが時刻Ｌに起こる。しかし、この優先順位の高い割込みに応じて時刻Ｌに開始した新しい割込み入口スタッキング・プロセスをプロセッサ・コアが完了する前に、優先順位の更に高い割込みを時刻Ｍに受ける。したがって、図５Ａおよび図５Ｂの場合と同様に、プロセッサ・コアは割り込まれた割込み入口スタッキング・プロセスが始まったメモリ・アドレス（すなわち、メモリ・アドレス１５）にスタック・ポインタを戻し、優先順位の更に高い割込み信号に応じて時刻Ｍに新しい割込み入口スタッキング・プロセスを開始する。
【００４６】
これは時刻Ｎに完了する（したがって、時刻Ｍから時刻Ｎまで割込み待ち時間を保持する）が、図５Ａおよび図５Ｂの場合とは異なり、メモリ・アドレス１３と１５との間に書き込まれたデータ・スタック・フレームはこの例では無効である。なぜなら、それに先立って割込み出口アンスタッキング・プロセスをやめたからである。したがって、プロセッサ・コアは時刻Ｎに優先順位の更に高い割込みルーチンの最初の命令を実行するときにスタック・ポインタをメモリ・アドレス１５に戻し、優先順位の更に高い割込みルーチンを完了したときにプロセッサ・コアがメモリ・アドレス１５と１７との間に記憶した有効なデータ・スタック・フレームのアンスタッキングを開始できるようにする。
【００４７】
図６Ａは、本発明の「スタック・フレーム・タグ付け」の実施の形態（すなわち、図４Ａ−４Ｄに示すもの）に係るプロセッサ・コアのデータ処理操作に関する主ステップの概要を示す。流れはステップ５００で始まり、プロセッサ・コアはプログラム・コードを実行中である。ステップ５０５で、プロセッサ・コア１０が割込み信号を受けたかどうかチェックする。受けなかった場合は流れはステップ５００に戻り、割込み信号を受けるまでプログラム・コードの実行を続ける。
【００４８】
割込み信号を受けると流れはステップ５１０に進み、割込み入口スタッキング・プロセスを開始する。割込み入口スタッキング・プロセスを実行中に、優先順位の高い割込みを受けたかどうか絶えずチェックする（ステップ５１５）。かかる優先順位の高い割込みを受けた場合は、ステップ５２０で割込み入口スタッキング・プロセスをやめて、ステップ５２５でプロセッサ・コアはフラグをたてて、（上に述べたように、例えば追加のデータ値をＸＰＳＲまたはＰＣレジスタ値内の空間に追加することにより）自分が作る次のスタック・フレームに「上のスタックは不完全」というラベルを追加する。
【００４９】
次に流れはステップ５１０に戻り、新しい割込み入口スタッキング・プロセスを開始する。これは「上のスタックは不完全」のラベルを、新しく作ったスタック・フレームに追加することを含む。ステップ５１５で、割込み入口スタッキング・プロセスを実行中に優先順位の高い割込みを受けなかった場合は、ステップ５３０で割込み入口スタッキング・プロセスを完了する。ステップ５３５で、いまステップ５３０でスタッキング・プロセスを完了した割込みに対応する割込みルーチンを実行する。ここで注意すべきであるが、この割込みルーチンの実行自身も優先順位の更に高い割込みにより割り込まれることがあるので、ステップ５３５内で、ステップ５００で再び始まる流れ図が入れ子になることがある。しかし簡単のために、図に示す例では、割込みルーチン自身は割り込まれずに完了すると仮定する。
【００５０】
割込みルーチンが完了すると、ステップ５４０でプロセッサ・コアは割込み出口アンスタッキング・プロセスを開始し、レジスタ値をデータ・スタックからレジスタ４０に戻す。アンスタッキング中にプロセッサが「無効なスタック」または「上のスタックは不完全」のラベルに出会うと、そのスタック（「無効なスタック」）または上の次のスタック（「上のスタックは不完全」）を飛び越す（図４Ｂおよび４Ｄ参照）。
【００５１】
ステップ５４５で、これを実行中に優先順位の高い割込みを受けたかどうかチェックする。受けなかった場合は、ステップ５５０で割込み出口アンスタッキング・プロセスを完了し、ステップ５００で通常のプログラム実行を続けてプログラム・コードを実行する。しかしステップ５４５で優先順位の高い割込みを受けたことが分かった場合は、ステップ５５５で割込み出口アンスタッキング・プロセスをやめて、ステップ５６０で、割込み出口アンスタッキング・プロセスを開始する直前に有していた値にスタック・ポインタをリセットする。最後に、ステップ５６５でプロセッサ・コアはフラグをたてて、自分が作る次のスタック・フレームに「無効なスタック」のラベルを追加する。次に流れはステップ５１０に戻り、新しい割込み入口スタッキング・プロセスを開始する。
【００５２】
本発明の「強化再スタッキング」の実施の形態（すなわち、図５Ａ−５Ｆに示すもの）でプロセッサ・コアが実行する一連のステップの概要を図６Ｂに示す。流れはステップ６００で始まり、プロセッサ・コアはプログラム・コードを実行中である。ステップ６０５で、割込み信号を受けたかどうか絶えずチェックし、受けなかった場合は流れはステップ６００に戻り、割込み信号を受けるまでプログラム・コードの実行を続ける。割込み信号を受けるとフラグＩＲを０にセットする（プロセッサ・コアが割込みから復帰していないことを示す）。
【００５３】
ステップ６１５で、受けた割込みに応じて割込み入口スタッキング・プロセスを開始する。ステップ６２０で、割込み入口スタッキング・プロセスを実行中に、優先順位の高い割込みを受けたかどうか絶えずチェックする。かかる優先順位の高い割込みを受けた場合は、ステップ６２５で割込み入口スタッキング・プロセスをやめて、ステップ６３０で、割込み入口スタッキング・プロセスを開始した直前に有していた値にＳＰをリセットする。次に流れはステップ６１５に戻り、新しい割込み入口スタッキング・プロセスを開始する。
【００５４】
ステップ６２０で、割込み入口スタッキング・プロセスを実行中に優先順位の高い割込みを受けなかった場合は、ステップ６３５で割込み入口スタッキング・プロセスを完了する。次にステップ６４０で、フラグＩＲが１に等しい場合は、いまステップ６３５で完了した割込み入口スタッキング・プロセスの直前に有していた値にスタック・ポインタをリセットする。次にステップ６４５で、受けた優先順位の高い割込みに対応する割込みルーチンを実行し、フラグＩＲを１にセットする。図６Ａに関して述べたように、ここでもこの割込みルーチンの実行自身も優先順位の更に高い割込みにより割り込まれることがあるので、ステップ６４５内で、ステップ６００で再び始まる流れ図が入れ子になることがある。しかし簡単のために、図に示す例では、割込みルーチン自身は割り込まれずに完了すると仮定する。
【００５５】
割込みルーチンが完了すると、ステップ６５０でプロセッサ・コアは割込み出口アンスタッキング・プロセスを開始し、レジスタ値をデータ・スタックからレジスタ４０に戻す。ステップ６５５で、優先順位の高い割込みを受けたかどうか絶えずチェックし、受けなかった場合は、ステップ６６０で割込み出口アンスタッキング・プロセスを完了し、流れはステップ６００に戻ってプログラム・コードを実行する。しかしステップ６５５で割込み出口アンスタッキング・プロセス中に優先順位の高い割込みを受けた場合は、ステップ６６５で割込み出口アンスタッキング・プロセスをやめ、ステップ６７０で割込み出口アンスタッキング・プロセスを開始する直前に有していた値にスタック・ポインタをリセットし、流れはステップ６１５に戻る。
【００５６】
本発明の或る実施の形態では、複数の割込み信号に応じて対応する割込みルーチンを行う処理ユニットを含むデータ処理機器を開示する。割込み信号を受けると、処理ユニットはデータ値を複数のレジスタから１つのデータ・スタック上に記憶し、対応する割込みルーチンを行う。次に、プロセッサはそのデータ値をデータ・スタックからレジスタに戻し、割込みを受けたときに実行していた処理を行う。プロセッサがレジスタ値をデータ・スタックとの間で転送している間に優先順位の高い割込みを受けた場合はその転送をやめて、処理ユニットはその優先順位の高い割込みに応じてすぐデータ値をレジスタからデータ・スタックに転送することを開始する。これにより、優先順位の高い割込みのための割込み待ち時間は保持される。
【００５７】
添付の図面を参照して本発明の例示の実施の形態を詳細に説明したが、理解されるように、本発明はこれらの実施の形態そのものに限定されるものではなく、添付のクレームに規定されている本発明の範囲および精神から逸れない限り、当業者は種々の変更および修正を行ってよい。例えば、本発明の範囲から逸れない限り、以下の従属クレームの特徴と独立クレームの特徴とを種々に組み合せてよい。
【図面の簡単な説明】
【００５８】
【図１】データ処理機器の概要を示す。
【図２】データ・スタック上に記憶されたデータ値の集合の概要を示す。
【図３Ａ】優先順位の低い割込みの後に優先順位の高い割込みが続くときのデータ・スタックの経過の概要を示す時間グラフである。
【図３Ｂ】優先順位の低い割込みの後に優先順位の高い割込みが続くときのデータ・スタックの経過の概要を示す時間グラフである。
【図４Ａ】優先順位の低い割込みにより始まったスタッキング・プロセス中に優先順位の高い割込みが起こったときのデータ・スタックの経過の概要を示す時間グラフである。
【図４Ｂ】優先順位の低い割込みにより始まったスタッキング・プロセス中に優先順位の高い割込みが起こったときのデータ・スタックの経過の概要を示す時間グラフである。
【図４Ｃ】優先順位の低い割込みにより始まったアンスタッキング・プロセス中に優先順位の高い割込みを受けたときのデータ・スタックの経過の概要を示す時間グラフである。
【図４Ｄ】優先順位の低い割込みにより始まったアンスタッキング・プロセス中に優先順位の高い割込みを受けたときのデータ・スタックの経過の概要を示す時間グラフである。
【図５Ａ】優先順位の低い割込みにより始まったスタッキング・プロセス中に優先順位の高い割込みが起こったときのデータ・スタックの経過の概要を示す時間グラフである。
【図５Ｂ】優先順位の低い割込みにより始まったスタッキング・プロセス中に優先順位の高い割込みが起こったときのデータ・スタックの経過の概要を示す時間グラフである。
【図５Ｃ】優先順位の低い割込みにより始まったアンスタッキング・プロセス中に優先順位の高い割込みを受けたときのデータ・スタックの経過の概要を示す時間グラフである。
【図５Ｄ】優先順位の低い割込みにより始まったアンスタッキング・プロセス中に優先順位の高い割込みを受けたときのデータ・スタックの経過の概要を示す時間グラフである。
【図５Ｅ】割込み復帰により始まったアンスタッキング・プロセス中に優先順位の高い割込みを受け、優先順位の高い割込みにより始まったスタッキング・プロセスが優先順位の更に高い割込みにより割込まれたときのデータ・スタックの経過の概要を示す時間グラフである。
【図５Ｆ】割込み復帰により始まったアンスタッキング・プロセス中に優先順位の高い割込みを受け、優先順位の高い割込みにより始まったスタッキング・プロセスが優先順位の更に高い割込みにより割込まれたときのデータ・スタックの経過の概要を示す時間グラフである。
【図６Ａ】本発明の方法に従って動作する処理ユニットが実行する処理操作の一部の概要を示す流れ図である。
【図６Ｂ】本発明の方法に従って動作する処理ユニットが実行する処理操作の一部の概要を示す流れ図である。
【符号の説明】
【００５９】
１０  処理ユニット
２０  メモリ
３０  データ・スタック
４０  レジスタ
５０  スタック・ポインタ・レジスタ
【図１】
2009129459.tif 000003
【図２】
2009129459.tif 000004
【図３Ａ】
2009129459.tif 000005
【図３Ｂ】
2009129459.tif 000006
【図４Ａ】
2009129459.tif 000007
【図４Ｂ】
2009129459.tif 000008
【図４Ｃ】
2009129459.tif 000009
【図４Ｄ】
2009129459.tif 000010
【図５Ａ】
2009129459.tif 000011
【図５Ｂ】
2009129459.tif 000012
【図５Ｃ】
2009129459.tif 000013
【図５Ｄ】
2009129459.tif 000014
【図５Ｅ】
2009129459.tif 000015
【図５Ｆ】
2009129459.tif 000016
【図６Ａ】
2009129459.tif 000017
【図６Ｂ】
2009129459.tif 000018