(57)【要約】プロセッサは、２レベル割込サービスを提供する。一実施形態において、プロセッサは、記憶装置および割込ハンドラを備える。記憶装置は、割込要求に対応する割込識別子を記憶するように構成される。割込ハンドラは、割込要求を認識し、割込要求を認識することに応じて共通割込サービスルーチンを開始し、そして、記憶された割込識別子に対応する割込サービスルーチンを続いて開始するように構成される。
2009528598.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによって割込をサービスする方法であって、
割込要求を認識することと、
前記割込要求に対応する割込識別子を保存することと、
前記割込要求を認識することに応じて共通割込サービスルーチンを開始することと、
前記保存された割込識別子に対応する割込サービスルーチンを続いて開始することと、
を備える方法。
【請求項２】
前記割込識別子を保存することは、前記プロセッサ内に含まれるレジスタに前記割込識別子を保存することを備える請求項１に記載の方法。
【請求項３】
前記共通割込サービスルーチンを開始することは、前記割込要求の実行をスケジュールすること、より低い優先順位の割込を不能にすること、サービスするためにより高い優先順位の割込を可能にすること、前記割込要求の要因を識別すること、および、前記割込要求を認識することに応じて前記プロセッサの状態に対応する情報を保存することの少なくとも１つを開始することを備える請求項１に記載の方法。
【請求項４】
前記保存された割込識別子に対応する前記割込サービスルーチンを続いて開始することは、前記保存された割込識別子に関連するメモリアドレスに続いてジャンプすることを備える請求項１に記載の方法。
【請求項５】
前記保存された割込識別子に関連する前記メモリアドレスに続いてジャンプすることは、
前記保存された割込識別子に関連する前記メモリアドレスを前記プロセッサのプログラムカウンタ内に続いてロードすることと、
前記プログラムカウンタ内にロードされた前記メモリアドレスにジャンプすることと、
を備える請求項４に記載の方法。
【請求項６】
前記保存された割込識別子に関連する前記メモリアドレスを前記プログラムカウンタ内に続いてロードすることは、
前記メモリアドレスを探索するために、前記保存された割込識別子を続いて使用することと、
前記メモリアドレスを前記プログラムカウンタ内にロードすることと、
を備える請求項５に記載の方法。
【請求項７】
前記保存された割込識別子に関連する前記メモリアドレスを前記プログラムカウンタ内に続いてロードすることは、前記保存された割込識別子を前記プログラムカウンタ内にロードすることを備える請求項５に記載の方法。
【請求項８】
前記保存された割込識別子に対応する前記割込サービスルーチンが開始された後に前記保存された割込識別子を削除することをさらに備える請求項１に記載の方法。
【請求項９】
続く割込要求を認識することと、
前記続く割込要求に対応する割込識別子を保存することと、
前記続く割込要求を認識することに応じて前記共通割込サービスルーチンを開始することと、
前記続く割込要求を認識することに応じて前記共通割込サービスルーチンが開始された後に前記続いて保存された割込識別子に対応する割込サービスルーチンを開始することと、
をさらに備える請求項１に記載の方法。
【請求項１０】
前記続く割込要求を認識することに応じて前記共通割込サービスルーチンを開始することは、前記先行する割込サービスルーチンが完了した後に前記共通割込サービスルーチンを開始することを備える請求項９に記載の方法。
【請求項１１】
前記続く割込識別子を保存することは、前記先行する割込要求に対応する前記保存された割込識別子に前記続く割込要求に対応する前記割込識別子を上書きすることを備える請求項９に記載の方法。
【請求項１２】
プロセッサであって、
割込要求に対応する割込識別子を記憶するように構成された記憶装置と、
前記割込要求を認識し、前記割込要求を認識することに応じて共通割込サービスルーチンを開始し、かつ、前記記憶された割込識別子に対応する割込サービスルーチンを続いて開始するように構成された割込ハンドラと、
を備えるプロセッサ。
【請求項１３】
前記記憶装置は、前記プロセッサ内に含まれるレジスタを備える請求項１２に記載のプロセッサ。
【請求項１４】
前記割込ハンドラは、前記割込要求の実行をスケジュールすること、より低い優先順位の割込を不能にすること、サービスするためにより高い優先順位の割込を可能にすること、前記割込要求の要因を識別すること、および、前記割込要求を認識することに応じて前記プロセッサの状態に対応する情報を保存することの少なくとも１つを開始することによって、前記共通割込サービスルーチンを開始するように構成された請求項１２に記載のプロセッサ。
【請求項１５】
前記割込ハンドラは、前記記憶された割込識別子に関連するメモリアドレスに続いてジャンプすることによって、前記記憶された割込識別子に対応する割込サービスルーチンを続いて開始するように構成された請求項１２に記載のプロセッサ。
【請求項１６】
前記割込ハンドラは、前記保存された割込識別子に関連する前記メモリアドレスを前記プロセッサのプログラムカウンタ内に続いてロードすること、および、前記プログラムカウンタ内にロードされた前記メモリアドレスにジャンプすることによって、前記保存された割込識別子に関連する前記メモリアドレスに続いてジャンプするように構成された請求項１５に記載のプロセッサ。
【請求項１７】
前記割込ハンドラは、前記メモリアドレスを探索するために、前記保存された割込識別子を続いて使用すること、および、前記メモリアドレスを前記プログラムカウンタ内にロードすることによって、前記保存された割込識別子に関連する前記メモリアドレスを前記プログラムカウンタ内に続いてロードするように構成された請求項１６に記載のプロセッサ。
【請求項１８】
前記割込ハンドラは、前記保存された割込識別子を前記プログラムカウンタ内にロードすることによって、前記保存された割込識別子に関連する前記メモリアドレスを前記プログラムカウンタ内に続いてロードするように構成された請求項１６に記載のプロセッサ。
【請求項１９】
前記割込ハンドラは、前記記憶された割込識別子に対応する前記割込サービスルーチンが開始された後に前記記憶された割込識別子を削除するようにさらに構成された請求項１２に記載のプロセッサ。
【請求項２０】
前記記憶装置は、続く割込要求に対応する割込識別子を記憶するようにさらに構成され、前記割込ハンドラは、続く割込要求を認識し、前記続く割込要求を認識することに応じて前記共通割込サービスルーチンを開始し、かつ、前記続く割込要求を認識することに応じて前記共通割込サービスルーチンが開始された後に前記続いて保存された割込識別子に対応する割込サービスルーチンを開始するようにさらに構成された請求項１２に記載のプロセッサ。
【請求項２１】
前記割込ハンドラは、前記先行する割込サービスルーチンが完了した後に前記共通割込サービスルーチンを開始することによって、前記続く割込要求を認識することに応じて前記共通割込サービスルーチンを開始するように構成された請求項２０に記載のプロセッサ。
【請求項２２】
前記記憶装置は、前記先行する割込要求に対応する前記記憶された割込識別子に前記続く割込要求に対応する前記割込識別子を上書きすることによって、前記続く割込識別子を記憶するように構成された請求項２０に記載のプロセッサ。
【請求項２３】
プロセッサによって割込をサービスするために、コンピュータ可読媒体に組み込まれたコンピュータプログラムプロダクトであって、
割込要求を認識するためのプログラム命令と、
前記割込要求に対応する割込識別子を保存するためのプログラム命令と、
前記割込要求を認識することに応じて共通割込サービスルーチンを開始するためのプログラム命令と、
前記保存された割込識別子に対応する割込サービスルーチンを続いて開始するためのプログラム命令と、
を備えるコンピュータプログラムプロダクト。
【請求項２４】
前記保存された割込識別子に対応する前記割込サービスルーチンを続いて開始するための前記プログラム命令は、
前記保存された割込識別子に関連するメモリアドレスに続いてジャンプするためのプログラム命令を備える請求項２３に記載のコンピュータプログラムプロダクト。
【請求項２５】
前記保存された割込識別子に関連する前記メモリアドレスに続いてジャンプするための前記プログラム命令は、
前記保存された割込識別子に関連する前記メモリアドレスを前記プロセッサのプログラムカウンタ内に続いてロードするためのプログラム命令と、
前記プログラムカウンタ内にロードされた前記メモリアドレスにジャンプするためのプログラム命令と、
を備える請求項２４に記載のコンピュータプログラムプロダクト。
【請求項２６】
前記保存された割込識別子に関連する前記メモリアドレスを前記プログラムカウンタ内に続いてロードするための前記プログラム命令は、
前記メモリアドレスを探索するために、前記保存された割込識別子を続いて使用するためのプログラム命令と、
前記メモリアドレスを前記プログラムカウンタ内にロードするためのプログラム命令と、
を備える請求項２５に記載のコンピュータプログラムプロダクト。
【請求項２７】
前記保存された割込識別子に関連する前記メモリアドレスを前記プログラムカウンタ内に続いてロードするための前記プログラム命令は、前記保存された割込識別子を前記プログラムカウンタ内にロードするためのプログラム命令を備える請求項２５に記載のコンピュータプログラムプロダクト。
【請求項２８】
前記保存された割込識別子に対応する前記割込サービスルーチンが開始された後に前記保存された割込識別子を削除するためのプログラム命令をさらに備える請求項２３に記載のコンピュータプログラムプロダクト。
【請求項２９】
続く割込要求を認識するためのプログラム命令と、
前記続く割込要求に対応する割込識別子を保存するためのプログラム命令と、
前記続く割込要求を認識することに応じて前記共通割込サービスルーチンを開始するためのプログラム命令と、
前記続く割込要求を認識することに応じて前記共通割込サービスルーチンが開始された後に前記続いて保存された割込識別子に対応する割込サービスルーチンを開始するためのプログラム命令と、
をさらに備える請求項２３に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、割込ハンドリングルーチンに関し、特に、プロセッサにおける２レベル割込ハンドリングルーチンに関する。
【背景技術】
【０００２】
コンピューティングシステム、例えば、サーバー、デスクトップコンピュータ、および、ポータブルコンピュータ、携帯電話、個人用ディジタルアシスタントなどのようなモバイル機器は、１つまたはそれ以上のプロセッサ、揮発性メモリおよび不揮発性メモリ、コントローラ、および、キーボード、キーパッド、マウス、ディスプレイ、イヤホーン、などの周辺装置を一般的に含む。コンピューティングシステムの様々なコンポーネントは、１つまたはそれ以上のシステムおよび／またはシステム内に含まれる周辺装置とプロセッサとの間でデータ、アドレスおよび／または制御情報が転送された周辺バスを介して、互いに接続される。
【０００３】
周辺装置が、サービスを必要とするとき、この周辺装置は、割込信号を駆動してもよい。この割込要求をサービスするために、割込は、システムプロセッサに通常のプログラムフローを一時的に停止させる。一般的に、割込コントローラは、周辺装置によって生成された様々な割込信号に優先順位を付与し、そして、様々な割込信号を処理する。そのようなものとして、割込コントローラは、周辺装置とシステムプロセッサとの間におけるインタフェースの役割をなす。したがって、システムプロセッサは、様々な周辺装置によって生成された割込要求を管理すること、優先順位を付与すること、および、スケジュールすることに関連する低レベルのタスクによって負荷を負わせられることはない。システムプロセッサは、割込要求をサービスするとき、最初に、周辺装置と直接にインタフェースをとることはないので、プロセッサに、サービスを要求する周辺装置に対応する割込サービスルーチン（Interrupt Service Routine : ISR）を識別するためのアドレスまたはその他の情報が提供されなければならない。ＩＳＲは、特定の周辺装置によって生成された割込をサービスする。一般的には、複数のＩＳＲが、メモリ内に保持され、これらのそれぞれは、異なる周辺装置に関連するものである。
【０００４】
１つの一般的なアプローチにおいては、ＩＳＲに関連するアドレスが、システムバスを介して、システムプロセッサに送出される。具体的には、割込コントローラが、割込要求をシステムプロセッサに発行する。適切な時刻に、システムプロセッサは、この要求に肯定応答する。そのような初期割込要求および肯定応答信号は、一般的には、割込コントローラとシステムプロセッサとの間に直接に延びる信号線を介して、発生する。割込要求に肯定応答した後、システムプロセッサは、すべての割込に共通のタスクをハンドリングするために、第１レベル割込ハンドラ（First-Level Interrupt Handler: FLIH）ルーチンとしばしば呼ばれる共通割込ハンドラルーチンを実行する。例えば、ＦＬＩＨルーチンは、割り込まれた命令またはルーチンの状態を保存し、特定の割込を処理するのに必要なアクションを決定し、そして、第２レベル割込ハンドラ（Second-Level Interrupt Handler: SLIH）ルーチンと一般的に呼ばれる装置固有ＩＳＲの実行をスケジュールしてもよい。ＳＬＩＨルーチンは、特定の周辺装置に関連する割込を処理する。システムプロセッサは、割込コントローラから受信されたアドレス情報に関連するメモリロケーションにアクセスすることによって、ＳＬＩＨルーチンを開始する。
【０００５】
割込コントローラは、システムバスを介して、システムプロセッサにＩＳＲアドレス情報を提供する。ＩＳＲアドレス情報をシステムバスを介して転送することは、システムプロセッサが特定のＳＬＩＨルーチンを開始するのを遅延させる。コンピューティングシステム内において発生する特定のアクティビティーによっては、システムバスを介してＩＳＲアドレス情報を入手することに関連する遅延は、時間のかかるものになることがある。例えば、システムプロセッサが、大量のデータをメモリから読み出している場合、または、メモリに書き込んでいる場合、あるいは、システムプロセッサがその他の周辺装置をサービスしている場合、アドレス情報を入手するためにシステムバスにアクセスすることは、相当に遅延するかもしれない。
【０００６】
第２の一般的なアプローチは、ＩＳＲアドレス情報をシステムバスを介してシステムプロセッサに転送することに関連する遅延を除去する。具体的には、アドレス情報は、割込コントローラから専用バスを介してシステムプロセッサに直接に送出される。例えば、ＡＲＭ  Ｈｏｌｄｉｎｇｓ  ｐｌｃは、ＩＳＲアドレス情報を割込コントローラから直接にシステムプロセッサに送出するための専用バスを有するベクトル割込コントローラ（Vectored Interrupt Controller）（部品番号：ＰＬ１９２、文書参照番号：ＡＲＭ  ＤＤＩ  ０２７３Ａ）を提案している。そのようなものとして、システムプロセッサは、対応するＳＬＩＨルーチンをより迅速に開始することができる。
【０００７】
しかしながら、一般的には、システムプロセッサは、続いて使用するために、ＩＳＲアドレス情報をプロセッサ内に局所的に記憶することはない。その代わりとして、一般的なプロセッサがＩＳＲアドレス情報を専用バスを介して割込コントローラから受信すると、このプロセッサは、まず最初に、共通ＦＬＩＨルーチンを実行することなく、対応するＳＬＩＨルーチンを即座に開始する。すなわち、プロセッサは、共通ＦＬＩＨコードを実行することなく、特定のＳＬＩＨルーチンに関連するメモリロケーションに即座にジャンプする。したがって、それぞれのＳＬＩＨルーチンは、重複するものであり、非効率的なものであり、誤りが発生する可能性を増大させ、そして、コードポータビリティーを減少させる共通の第１レベル割込ハンドリングコードを含まなければならない。
【発明の開示】
【発明の概要】
【０００８】
本明細書で教示される方法および装置によれば、２レベル割込サービスを提供するプロセッサが、提供される。１つまたはそれ以上の実施形態においては、プロセッサは、記憶装置および割込ハンドラを備える。記憶装置は、割込要求に対応する割込識別子を記憶するように構成される。割込ハンドラは、割込要求を認識し、割込要求を認識することに応じて共通割込サービスルーチンを開始し、そして、記憶された割込識別子に対応する割込サービスルーチンを続いて開始するように構成される。
【０００９】
したがって、一実施形態においては、プロセッサは、割込要求を認識し、割込要求に対応する割込識別子を保存し、割込要求を認識すること応じて共通割込サービスルーチンを開始し、そして、保存された割込識別子に対応する割込サービスルーチンを続いて開始することによって、割込をサービスする。
【００１０】
本発明の実施形態における上述した装置および方法に対応して、相補的なコンピュータプログラムプロダクトは、プロセッサによって割込をサービスするためにコンピュータ可読媒体に組み込まれ、割込要求を認識し、割込要求に対応する割込識別子を保存し、割込要求を認識することに応じて共通割込サービスルーチンを開始し、そして、保存された割込識別子に対応する割込サービスルーチンを続いて開始するためのプログラム命令を備える。
【００１１】
当然ながら、本発明は、上述した特徴に限定されるものではない。当業者は、以下の詳細な説明を読むことによって、また、添付の図面を見ることによって、さらなる特徴を理解するはずである。
【詳細な説明】
【００１２】
図１は、割込ハンドラ１２を含むプロセッサ１０の実施形態を示す。プロセッサ１０は、割込ハンドリングを含むあるアクションをなすようにプロセッサ１０に命令する機械命令の収集を実行する。具体的には、プロセッサ１０内に含まれる割込ハンドラ１２は、プロセッサ１０によって受信された割込要求をサービスする。割込要求に肯定応答することに付随して、割込ハンドラ１２は、割込識別子（ＩＲＱ＿ＩＤ）、すなわち、サービスを要求する周辺装置（図示しない）に関連するアドレスまたはその他の情報を割込コントローラ１４から受信する。割込ハンドラ１２は、例えば、いくつかのプロセッサレジスタ１６の中の１つにまたはプロセッサ１０内に含まれるメモリ１８に割込識別子を記憶することによって、割込識別子をプロセッサ１０内に保存する。割込要求に応じて、プロセッサ１０は、現在実行されている命令またはこの命令の一部を終了するかまたは中断する。
【００１３】
割込要求に応答するとき、割込ハンドラ１２は、すべての割込に共通のタスクをハンドリングするために、第１レベル割込ハンドラ（ＦＬＩＨ）ルーチンとしばしば呼ばれる共通割込サービスルーチン（ＩＳＲ）を実行する。例えば、共通ＦＬＩＨルーチンは、より低い優先順位の割込を不能にすること、サービスするためにより高い優先順位の割込を可能にすること、割込要求の要因を識別すること、プロセッサ１０の状態に対応する情報をスタック上に保存すること、および、装置固有ＩＳＲの実行をスケジュールすることの１つまたはそれ以上を含んでもよい。ＦＬＩＨルーチンを起動した後、割込ハンドラ１２は、特定の周辺装置によって発行された割込要求を処理するために、第２レベル割込ハンドラ（ＳＬＩＨ）ルーチンと一般的に呼ばれる装置固有ＩＳＲを続いて開始する。割込識別子は、プロセッサ１０内に保存されているので、割込ハンドラ１２は、まず最初に、共通ＦＬＩＨルーチンを実行し始め、そして、保存された割込識別子に対応するＳＬＩＨルーチンを続いて実行してもよく、そのために、共通割込ハンドリングタスクに関連するコードを共通ＦＬＩＨルーチンに含めるのを可能にしている。
【００１４】
１つの例においては、プロセッサ１０および割込コントローラ１４は、プロセッサ１０とコントローラ１４とを直接にリンクする専用通信チャンネル２０を介して、通信する。通信チャンネル２０は、リンクを含み、このリンクによって、割込コントローラ１４は、優先順位を付与された割込要求をプロセッサ１０に発行する（ＩＲＱ＿ＲＥＱ）。通信チャンネル２０は、割込コントローラ１４に対して割込要求に肯定応答（ＩＲＱ＿ＡＣＫ）するためにプロセッサ１０によって使用されるリンクをさらに含む。通信チャンネル２０は、また、リンクまたはバスを含み、このリンクまたはバスによって、割込識別子（ＩＲＱ＿ＩＤ）が、割込コントローラ１４からプロセッサ１０に送信される。割込識別子に加えて割込要求信号および肯定応答信号は、減少された信号線上に多重化されてもよい。プロセッサ１０が割込識別子をどのようにして受信するかに関係なく、割込ハンドラ１２は、共通ＦＬＩＨルーチンが起動された後に、装置固有ＳＬＩＨルーチンを続いて開始するために、入手した割込識別子を使用する。
【００１５】
動作中、プロセッサ１０は、命令および対応するデータを外部メモリ２２から取り出す。プロセッサ１０は、この命令を実行し、結果を外部メモリ２２に記憶する。限定するものではない例においては、プロセッサメモリ１８、例えば、キャッシュがバスインタフェースユニット２４を介して外部メモリ２２から取り出されたアドレスおよびデータ情報を記憶する。プロセッサ１０は、割込ハンドリングのようなプログラム命令を実行するための１つまたはそれ以上の実行ユニット２６をさらに含む。例えば、実行ユニット２６は、１つまたはそれ以上の命令ユニット、完了ユニット、分岐ユニット、浮動小数点ユニット、整数ユニット、および、ロード／記憶ユニットを備えてもよい。
【００１６】
プロセッサ１０は、また、コンテキストデータ、スタックポインタ、フラグ、などを記憶するための一般用途レジスタ２８および特定用途レジスタ３０のようなレジスタ１６を含む。スタックポインタは、現在実行されている一方のプログラムから他方のプログラムへコンテキストを切り替えるプロセッサ１０に応じてコンテキストデータを保存するのに使用されるプロセッサメモリ１８内の領域を指示し、例えば、割込要求をサービスするためにプロセッサ１０がプログラムを一時的に停止させたときのコンテキストデータを保存するのに使用されるプロセッサメモリ１８内の領域を指示する。プロセッサ１０は、実行すべき次の命令のアドレスを指示するためのプログラムカウンタ３２（命令シーケンサ、命令ポインタ、または、タスクレジスタとしても知られている）をさらに含む。プロセッサ１０内に含まれる割込ハンドラ１２は、ソフトウェア（または、ファームウェア）で実施されるコンピュータプログラム命令に基づいて構成された１つまたはそれ以上のディジタル処理回路を備えてもよい。そのような回路は、プロセッサ１０に関連するその他の処理機能および制御機能、例えば、実行ユニット２６によって共有されてもよい。当業者には、プロセッサ１０は、単一マイクロプロセッサ、マルチコアマイクロプロセッサ、または、１つまたはそれ以上のマイクロプロセッサがパイプライン化されたものおよび／またはスーパースカラー方式のものであってもよい同じシステム内に内蔵された複数のマイクロプロセッサを備えてもよいことがわかるはずである。
【００１７】
周辺装置（図示しない）がサービスを必要とするとき、この周辺装置は、割込要求を割込コントローラ１４に発行する。割込コントローラ１４は、割込要求に関して周辺装置を監視し、周辺装置から受信された様々な割込要求に優先順位を付与し、そして、これらの割込要求を処理する。割込コントローラ１４は、周辺装置がサービスを要求していることを指示するために、優先順位を付与された割込要求（ＩＲＱ＿ＲＥＱ）をプロセッサ１０に送信する。さらに、割込コントローラ１４は、周辺装置が要求している割込サービスに関連する割込識別子（ＩＲＱ＿ＩＤ）をプロセッサ１０に提供する。プロセッサ１０内に含まれる割込ハンドラ１２は、割込コントローラ１４から受信された割込要求をサービスする。
【００１８】
図２は、割込ハンドラ１２によって割込要求をサービスするためのプログラムロジックを示す。割込処理は、割込ハンドラ１２が割込要求を認識することによって「開始」する（ステップ１００）。１つの例においては、割込ハンドラ１２は、割込コントローラ１４が割込要求（ＩＲＱ＿ＲＥＱ）をプロセッサ１０に発行することに応じて、割込要求を認識する。そして、プロセッサ１０が、要求をすぐにサービスできるとき、割込ハンドラ１２は、割込肯定応答（ＩＲＱ＿ＡＣＫ）を発行する。割込肯定応答に応じて、割込コントローラ１４は、サービスを要求している周辺装置に関連する割込識別子（ＩＲＱ＿ＩＤ）をプロセッサ１０に送信する。
【００１９】
割込ハンドラ１２は、後に使用するために、割込識別子をプロセッサ１０内に保存する（ステップ１０２）。例えば、割込識別子は、一般用途レジスタ２８または特定用途レジスタ３０のどちらか一方に、あるいは、プロセッサメモリ１８に、記憶されてもよい。一般用途レジスタ２８または特定用途レジスタ３０のどちらか一方に保存される場合、このレジスタは、装置割込識別子を記憶するために一時的に割り当てられる。あるいは、専用レジスタ３４が、割込識別子を記憶してもよい。記憶媒体に関係なく、保存された割込識別子は、サービスを要求した周辺装置に適合するＳＬＩＨルーチンを開始するために、割込ハンドラ１２によって後に使用されることが可能である。割込識別子は、プロセッサ１０内に保存されているので、割込ハンドラ１２は、割込要求をサービスすることを開始するとき、適合するＳＬＩＨルーチンに即座にジャンプしなくてもよい。その代わりとして、適合するＳＬＩＨルーチンを開始する前に、割込ハンドラ１２は、まず最初に、共通ＦＬＩＨルーチンを実行することを開始してもよい（ステップ１０４）。そのようなものとして、共通割込ハンドリングタスクに関連するコードは、プロセッサ１０によってサポートされるそれぞれのＳＬＩＨルーチン内に含まれるのではなく、単一のＦＬＩＨルーチン内に含まれてもよく、それによって、誤りが発生する可能性を最小限に抑制し、割込サービス能力を向上させ、そして、コードポータビリティーを改善する。
【００２０】
共通ＦＬＩＨルーチンが起動された後、割込ハンドラ１２は、適合するＳＬＩＨルーチンが保持されたメモリアドレスにプロセッサ１０をジャンプさせることによって、適合するＳＬＩＨルーチンを続いて開始する（ステップ１０６）。１つの例においては、保存された割込識別子は、適合するＳＬＩＨルーチンが外部メモリ２２またはプロセッサメモリ１８内に保持されたアドレスを備える。そのようなものとして、割込ハンドラ１２は、図３のステップ１０８に示されるように、プログラムカウンタ３２に割込識別子をロードする命令を発行することによって、割込識別子をプログラムカウンタ３２内にロードする。場合によっては、割込識別子は、アドレス変換を必要としてもよく、それによって、プログラムカウンタ３２には、適切な形でアドレス情報がロードされる。そして、いずれにしても、プロセッサ１０は、図３のステップ１１０に示されるように、プログラムカウンタ３２内にロードされた割込識別子に関連するメモリアドレスにジャンプする。
【００２１】
別の例においては、保存された割込識別子は、サービスを要求する周辺装置を一意的に識別するその他の情報を備える。そのようなものとして、割込ハンドラ１２は、図４のステップ１１２に示されるように、プロセッサメモリ１８または外部メモリ２２内において、例えば、ルックアップテーブル内において、割込識別子に対応するメモリアドレスを探索するために、保存された割込識別子を使用する。そして、割込ハンドラ１２は、図４のステップ１１４に示されるように、入手したメモリアドレスをプログラムカウンタ３２にロードすることによって、適合するＳＬＩＨルーチンを開始する。そして、プロセッサ１０は、図４のステップ１１６に示されるように、プログラムカウンタ３２内にロードされたメモリアドレスにジャンプする。記憶された割込識別子が対応するＳＬＩＨルーチンを開始するのに使用された時点で、割込ハンドラ１２は、割込識別子の内容に関係なく、記憶された割込識別子をプロセッサ１０から削除してもよい。
【００２２】
図５は、プロセッサ１０によって続いて受信される割込要求をサービスするためのプログラムロジックを示し、割込ハンドラ１２は、先行する割込要求、例えば、ネスティングされた割込要求をサービスする。処理は、割込ハンドラ１２が先行する割込要求をサービスしているときに割込ハンドラ１２が続く割込要求を認識することによって「開始」する（ステップ２００）。割込要求／肯定応答処理の一部として、プロセッサ１０は、続いてサービスを要求する周辺装置に関連する割込識別子を割込コントローラ１４から受信する。割込ハンドラ１２は、後に使用するために、割込識別子をプロセッサ１０内に保存する（ステップ２０２）。限定するものではない例においては、続く割込識別子は、先行する割込要求に対応する記憶された割込識別子に続く割込要求に対応する割込識別子を上書きすることによって、保存される。
【００２３】
割込ハンドラ１２は、新たに保存された割込識別子に適合するＳＬＩＨルーチンを開始する前に、まず最初に、共通ＦＬＩＨルーチンを実行することを開始する（ステップ２０４）。一実施形態においては、例えば、続く割込要求が、先行する割込要求よりも高い優先順位を有する場合、割込ハンドラ１２は、先行する割込要求に関連するＳＬＩＨルーチンを中断し、共通ＦＬＩＨルーチンを開始する。別の実施形態においては、例えば、続く割込要求が、先行する割込要求に等しいまたはより低い優先順位を有する場合、割込ハンドラ１２は、共通ＦＬＩＨルーチンを開始する前に、先行する割込要求に関連するＳＬＩＨルーチンの実行を完了させる。
【００２４】
いずれにしても、割込ハンドラ１２は、共通ＦＬＩＨルーチンが続く割込要求に応じて起動された後に、適合するＳＬＩＨルーチンが保持されたメモリアドレスにプロセッサ１０をジャンプさせることによって、新たに記憶された割込識別子に関連するＳＬＩＨルーチンを開始する（ステップ２０６）。１つの例においては、新たに保存された割込識別子は、外部メモリ２２またはプロセッサメモリ１８内に適合するＳＬＩＨルーチンが保持されたアドレスを備える。別の例においては、新たに保存された割込識別子は、サービスを要求する周辺装置を一意的に識別するその他の情報を備える。いずれにしても、割込ハンドラ１２は、これまでに説明したように、対応するＳＬＩＨルーチンを開始するために、新たに保存された割込識別子を使用する。
【００２５】
上述した様々な変形例および応用例を考慮に入れて、本発明の開示は前述の説明に限定されることはなくまた添付の図面によって限定されることもないことを理解すべきである。その代わりに、本発明は、添付の特許請求の範囲および法的にこれに等価なものによってだけ限定される。
【図面の簡単な説明】
【００２６】
【図１】図１は、割込ハンドラを含むプロセッサの実施形態を説明するブロック図である。
【図２】図２は、割込ハンドラによって２レベル割込サービスルーチンを実施するためのプログラムロジックの実施形態を説明するロジックフロー図である。
【図３】図３は、保存された割込識別子をプログラムカウンタ内にロードするためのプログラムロジックの実施形態を説明するロジックフロー図である。
【図４】図４は、保存された割込識別子をプログラムカウンタ内にロードするためのプログラムロジックの他の実施形態を説明するロジックフロー図である。
【図５】図５は、割込ハンドラによって２レベル割込サービスルーチンを実施するためのプログラムロジックの他の実施形態を説明するロジックフロー図である。
【図１】
2009528598.tif 000003
【図２】
2009528598.tif 000004
【図３】
2009528598.tif 000005
【図４】
2009528598.tif 000006
【図５】
2009528598.tif 000007
【国際調査報告】
2009528598.tif 000008
2009528598.tif 000009
2009528598.tif 000010