(57)【要約】【課題】  パイプライン処理装置において、割込処理ルーチンの起動時間を短縮し、処理効率を向上させる。【解決手段】  ＭＡステージの時に、ＥＸＥ／ＭＡバッファ４からアドレスバス２０に出力された設定アドレスに従って、データバス３０を介してロードされたデータ（割込処理ルーチンの先頭アドレス）を、命令デコードステージを介在させることなく、マルチプレクサ９，１０を介して直にプログラムカウンタ７に供給する。これにより、割込処理ルーチンの先頭アドレスをロードした次の処理タイミングでは、そのロードした先頭アドレスをプログラムカウンタ７に設定して、割込処理ルーチンの先頭命令をフェッチすること、即ち、割込処理ルーチンの処理を直ちに開始することができる。【選択図】  図１
2005032016.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも命令デコード，演算実行，メモリアクセスを含む複数のステージを一定の処理タイミング毎に順次実行することで、それぞれが一つの命令を処理する複数の命令処理サイクルを、互いに異なるステージが同時実行されるようにして並列処理するパイプライン処理装置において、
メモリアクセスステージにてメモリからロードされるデータを、該メモリアクセスステージと同じ処理タイミングで並列実行される演算実行ステージからの出力データに代えて、次の処理タイミングで実行されるメモリアクセスステージの入力データとする第１切替手段を備えることを特徴とするパイプライン処理装置。
【請求項２】
前記第１切替手段は、割込要求の受付後に実行されるメモリアクセスステージにて、該割込要求に応じて実行すべき割込処理ルーチンの先頭アドレスをメモリからロードする際に、演算実行ステージの出力データを切り替えることを特徴とする請求項１に記載のパイプライン処理装置。
【請求項３】
少なくとも命令デコード，演算実行，メモリアクセスを含む複数のステージを一定の処理タイミング毎に順次実行することで、それぞれが一つの命令を処理する複数の命令処理サイクルを、互いに異なるステージが同時実行されるようにして並列処理するパイプライン処理装置において、
メモリアクセスステージにてメモリからロードされるデータを、直前の処理タイミングで実行された命令デコードステージからの出力データに代えて、該メモリアクセスステージと同じ処理タイミングで並列実行される演算実行ステージの入力データとする第２切替手段を備えることを特徴とするパイプライン処理装置。
【請求項４】
前記第２切替手段は、割込要求の受付後に実行されるメモリアクセスステージにて、該割込要求に応じて実行すべき割込処理ルーチンの先頭アドレスの特定に必要なデータをメモリからロードする際に、演算実行ステージの入力データを切り替えることを特徴とする請求項３に記載のパイプライン処理装置。
【請求項５】
少なくとも命令デコード，演算実行，メモリアクセスを含む複数のステージを一定の処理タイミング毎に順次実行することで、それぞれが一つの命令を処理する複数の命令処理サイクルを、互いに異なるステージが同時実行されるようにして並列処理するパイプライン処理装置の割込処理方法であって、
割込要求の受付後に実行されるメモリアクセスステージにて、該割込要求に応じて実行すべき割込処理ルーチンの先頭アドレス、或いは該先頭アドレスの特定に必要なデータがメモリからロードされると、次の処理タイミングで実行されるフェッチステージにて、前記割込処理ルーチンの先頭命令をフェッチすることを特徴とする割込処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン処理装置における割込処理のための技術に関する。
【背景技術】
【０００２】
従来より、１つの命令を複数のステージに分割し、各ステージの処理を一定の処理タイミング毎に順次実行するとともに、同一の処理タイミングでは互いに異なるステージの処理を同時実行することで複数の命令（複数のステージからなる命令処理サイクル）を並列処理し、処理タイミング毎に命令の結果を得るようにした、いわゆるパイプライン処理を行う情報処理装置（以下「パイプライン処理装置」と称する。）が知られている（例えば、非特許文献１参照）。
【０００３】
ここで、この種のパイプライン処理装置の一例として、１つの命令を、命令フェッチ（ＩＦ）、命令デコード（ＤＥＣ）、演算実行（ＥＸＥ）、メモリアクセス（ＭＡ）およびライトバック（ＷＢ）からなる５つのステージに分割して５段パイプライン処理を行うＣＰＵを、図４，５を用いて説明する。
【０００４】
なお、図４は、このＣＰＵにおけるデータパス部の構成を示すブロック図、図５は、このＣＰＵの割込要求受付時の動作を説明するためのタイミング図である。
また、ＩＦステージは、メモリ（主にＲＯＭ）から命令の読み出し、ＤＥＣステージは、ＩＦステージで読み込んだ命令の解読とレジスタの読み出し、ＥＸＥステージは、ＤＥＣステージで解読された命令の内容に応じて、算術、論理等の演算や、ＩＦステージで読み込むべき命令のアドレスやメモリへアクセスする際のアドレス等の演算を行うものである。更に、ＭＡステージは、ＥＸＥステージでの演算結果をアドレスとしたメモリへのアクセス（即ち、データの読み出し或いは書き込み）、ＷＢステージは、ＥＸＥステージでの演算結果或いはＭＡステージでメモリから読み出したデータの内部レジスタへの格納を行うものである。
【０００５】
図４に示すように、ＣＰＵ１０１は、各ステージで必要なデータや制御情報、また各ステージの実行結果等を格納するパイプラインレジスタ１０２〜１０４を備えている。
このうち、パイプラインレジスタ１０２は、ＩＦステージで読み込んだ命令を、ＤＥＣステージの入力データとして一時的に保持するものであり、以下では、ＩＦ／ＤＥＣバッファ１０２と称する。また、パイプラインレジスタ１０３は、ＤＥＣステージでの命令の解読結果に基づき、ＥＸＥステージでの演算に必要なデータを、ＥＸＥステージの入力データとして一時的に保持するものであり、以下では、ＤＥＣ／ＥＸＥバッファ１０３と称する。更に、パイプラインレジスタ１０４は、ＥＸＥステージでの演算結果を、ＭＡステージの入力データとして一時的に保持するものであり、以下では、ＥＸＥ／ＭＡバッファ１０４と称する。
【０００６】
また、ＣＰＵ１０１は、ＥＸＥステージでの実行結果や、ＭＡステージにてメモリからロードされたデータ等を格納する複数のレジスタからなるレジスタファイル１０５と、ＤＥＣステージによってＤＥＣ／ＥＸＥバッファに１０３に用意されたデータに基づき、算術，論理等の演算や、ＩＦステージで読み込むべき命令のアドレスや、メモリへアクセスする際のアドレス等の演算、即ちＥＸＥステージの処理を実行する演算器６と、ＩＦステージにて読み込むべき命令が格納されたアドレスを指定するためのプログラムカウンタ１０７とを備えている。
【０００７】
更に、ＣＰＵ１０１は、レジスタファイル１０５からの出力、又は、割込処理ルーチンの先頭アドレスに関する情報（以下「割込アドレス情報」と称する。）が格納されたＲＯＭのアドレス（以下「設定アドレス」と称する。）、或いはデータバス３０を介して外部のメモリからロードされるデータのうち、いずれかを選択してＤＥＣ／ＥＸＥバッファ１０３に供給するマルチプレクサ１０８と、演算器１０６の出力とプログラムカウンタ１０７の出力をカウントアップしてなる更新出力とのうち、いずれかを選択してプログラムカウンタ１０７の入力データとするマルチプレクサ１１０と、プログラムカウンタ１０７からの出力と、ＥＸＥ／ＭＡバッファ１０４からの出力うちいずれかを選択して、アドレスバス２０に出力するマルチプレクサ１１１と、ＥＸＥ／ＭＡバッファ１０４からの出力と、データバス３０を介してロードされたデータのうち、いずれかを選択して、レジスタファイル１０５に供給するマルチプレクサ１１２とを備えている。
【０００８】
なお、ＣＰＵ１０１には、上述したデータパス部以外に、ＩＦ／ＤＥＣバッファ１０２に格納されたデータに基づいてＩＦステージにてフェッチした命令をデコードしたり、そのデコード結果に従って、レジスタファイル１０５から演算に必要なデータを読み出す処理や、マルチプレクサ１０８，１１０〜１１２の設定を切り替える等の処理を実行する制御部（図示せず）を備えている。
【０００９】
このように構成されたＣＰＵ１０１では、通常時には、以下の手順で処理を実行する。
まず、ＩＦステージでは、プログラムカウンタ１０７で指定されたアドレスから命令を読み出してＩＦ／ＤＥＣバッファ１０２に格納する。
【００１０】
続くＤＥＣステージでは、ＩＦ／ＤＥＣバッファ１０２に格納された命令の解読を行い、その解読結果に従って、ＥＸＥステージで必要となるデータをレジスタファイル１０５の中から用意してＤＥＣ／ＥＸＥバッファ１０３に供給する。
【００１１】
続くＥＸＥステージでは、ＤＥＣステージにて用意されたデータを、ＤＥＣ／ＥＸＥバッファ１０３に格納し、その格納したデータに基づき、演算器１０６がＤＥＣステージでの解読結果に従って指定された演算を実行する。
【００１２】
続くＭＡステージでは、演算器１０６での演算結果を、ＥＸＥ／ＭＡバッファ１０４、或いはプログラムカウンタ１０７に格納する。そして、ＥＸＥ／ＭＡバッファ１０３に格納されたデータを、メモリアクセス用のアドレスである場合には、マルチプレクサ１１１を介してアドレスバスに出力し、それ以外の場合は、マルチプレクサ１１２を介してレジスタファイル１０５に供給する。
【００１３】
続くＷＢステージでは、ＥＸＥ／ＭＡバッファ１０４に格納されたデータ、又は、そのデータが指定するアドレスからロードされたデータを、レジスタファイル１０５に格納する。
【００１４】
以下、上記各ステージの処理を並列に、繰り返し実行する。
ところで、このようなＣＰＵ１０１を内蔵したマイクロコンピュータには、通常、多数の周辺回路が内蔵され、これら周辺回路からの割込要求に対応して、割込処理ルーチンを実行しなければならない。
【００１５】
このように、割込要求の受付時に、その割込要求に応じた割込処理ルーチンを起動する際の動作を、図４，５を用いて説明する。
図５に示すように、処理タイミングｔ２で始まるステージで割込要求が受け付けられたとすると、マルチプレクサ１０８は、レジスタファイル１０５から供給されるデータに代えて、設定アドレスをＤＥＣ／ＥＸＥバッファ１０３に供給する設定に、直ちに切り替わる。
【００１６】
これにより、命令処理サイクルＣ１のＤＥＣステージでは、処理タイミングｔ１のＩＦステージにてフェッチされた命令、即ち、その時点でＩＦ／ＤＥＣバッファ１０２に格納されている命令を破棄して、命令の解読結果の代わりに、設定アドレスを、ＥＸＥステージ（ＤＥＣ／ＥＸＥバッファ１０３）に伝播することになる。
【００１７】
続く処理タイミングｔ３では、ＤＥＣ／ＥＸＥバッファ１０３に設定アドレスが格納されると共に、演算器１０６は、ＤＥＣ／ＥＸＥバッファ１０３に格納された設定アドレスを、値を変化させることなく通過させるように設定される（具体的には、設定アドレスにゼロを加算するか、設定アドレスと全ビットが１であるデータとの論理積を求める等してもよい。）。
【００１８】
これにより、命令処理サイクルＣ１のＥＸＥステージでは、設定アドレスを、そのままＭＡステージ（ＥＸＥ／ＭＡバッファ１０４）に伝播することになる。
続く処理タイミングｔ４では、ＥＸＥ／ＭＡバッファ１０４に設定アドレスが格納されると共に、ＥＸＥ／ＭＡバッファ１０４の出力をアドレスバス２０に出力するようにマルチプレクサ１１１が設定され、更に、データバス３０を介してメモリの設定アドレスからロードされるデータを、ＤＥＣ／ＥＸＥバッファ１０３に供給するようにマルチプレクサ１０８が設定される。
【００１９】
これにより、命令処理サイクルＣ１のＭＡステージでは、設定アドレスへのメモリアクセスが実行され、それによってロードされたデータ、即ち、割込アドレス情報が、ＤＥＣ／ＥＸＥバッファ１０３に格納される。
【００２０】
つまり、命令処理サイクルＣ１のＭＡステージにてロードされた割込アドレス情報は、命令処理サイクルＣ３のＤＥＣステージにバイパスされることになる。
続く処理タイミングｔ５では、ＤＥＣ／ＥＸＥバッファ１０３に割込アドレス情報が格納されると共に、演算器１０６は、ＤＥＣ／ＥＸＥバッファに格納された割込アドレス情報に基づいて、割込処理ルーチンの先頭アドレスを求めるように設定され、更に、マルチプレクサ１１０が、プログラムカウンタ１０７の更新出力の代わりに、演算器１０６の出力をプログラムカウンタ１０７に供給するように設定される。
【００２１】
これにより、命令処理サイクルＣ３のＥＸＥステージでは、割込処理ルーチンの先頭アドレスが求められ、その先頭アドレスはプログラムカウンタ１０７に供給されることになる。
【００２２】
続く処理タイミングｔ６では、演算器１０６の演算結果（先頭アドレス）がプログラムカウンタ１０７に格納されると共に、マルチプレクサ１１１が、プログラムカウンタ１０７の出力をアドレスバス２０に出力するように設定され、更に、データバス３０を介して先頭アドレスからロードされたデータ（命令）がＩＦ／ＤＥＣバッファ１０２に格納される。
【００２３】
これにより、命令処理サイクルＣ３のＭＡステージによって、プログラムカウンタ１０７に、割込処理ルーチンの先頭アドレスがセットされ、直ちに、そのプログラムカウンタ１０７の設定値に従って、命令のフェッチが開始される。
【００２４】
つまり、処理タイミングｔ２で始まるＤＥＣステージで受け付けられた割込要求に対応する割込処理ルーチンは、処理タイミングｔ６で始まるＩＦステージから開始されることとなる。
【非特許文献１】デイビッド・Ａ・パターソン（Ｄａｖｉｄ  Ａ．  Ｐａｔｔｅｒｓｏｎ）、ジョン・Ｌ・ヘネシー（Ｊｏｈｎ  Ｌ．  Ｈｅｎｎｅｓｓｙ）著、「コンピュータの構成と設計（ＣＯＭＰＵＴＥＲ  ＯＲＧＡＮＩＺＡＴＩＯＮ  ＆  ＤＥＳＩＧＮ）」、日経ＢＰ社発行、１９９９、第２版
【発明の開示】
【発明が解決しようとする課題】
【００２５】
このように、割込要求の受付から、割込処理ルーチンが実際に開始されるまでに要する起動時間（ここでは、ｔ２〜ｔ６までの４ステージ分の時間）は、実行すべき処理が中断される時間であり、可能な限り短縮することが望まれている。特に、割込要求に対して速やかな対応が必要とされる組込機器制御用のマイクロコンピュータにおいては、それぞれの割込要求に対して実行すべき処理自体は単純で短時間で終了するものが多いが、割込要求が頻繁に発生する。つまり、割込処理ルーチンの起動のために費やされる時間は、全体の処理の中で大きな割合を占めることになり、この起動時間の長短は、マイクロコンピュータの処理能力に大きな影響を与えてしまうのである。
【００２６】
そこで本発明は、上記問題点を解決するために、パイプライン処理装置において、割込処理ルーチンの起動時間を短縮し、処理効率を向上させることを目的とする。
【課題を解決するための手段】
【００２７】
上記目的を達成するためになされた第一発明のパイプライン処理装置では、第１の切替手段が、メモリアクセスステージにてメモリからロードされるデータを、該メモリアクセスステージと同じ処理タイミングで並列実行される演算実行ステージからの出力データに代えて、次の処理タイミングで実行されるメモリアクセスステージの入力データとするように構成されている
この場合、第１切替手段は、例えば、割込要求の受付後に実行されるメモリアクセスステージにて、該割込要求に応じて実行すべき割込処理ルーチンの先頭アドレスをメモリからロードする際に、演算実行ステージの出力データを切り替えればよい。
【００２８】
このように構成された本発明のパイプライン処理装置では、メモリアクセスステージにてロードされたデータ（割込処理ルーチンの先頭アドレス）が、直ちに、次の処理タイミングで実行されるメモリアクセスステージの入力データとなるため、先頭アドレスをロードした次の処理タイミングでは、そのロードした先頭アドレスを、プログラムカウンタに設定して、割込処理ルーチンの先頭命令を読み出すこと、即ち、割込処理ルーチンの処理を直ちに開始することができる。
【００２９】
このように本発明のパイプライン処理装置では、メモリアクセスステージにてロードされたデータを、命令デコードステージを介在させて処理する従来装置と比較して、割込処理ルーチンの起動時間を１ステージ分短縮することができ、処理効率を向上させることができる。
【００３０】
このため、特に、本発明のパイプライン処理装置は、頻繁に割込要求が発生する組込機器制御用のマイクロコンピュータの演算処理装置として好適に用いることができる。
また、第二発明のパイプライン処置装置では、第２切替手段が、メモリアクセスステージにてメモリからロードされるデータを、直前の処理タイミングで実行された命令デコードステージからの出力データに代えて、該メモリアクセスステージと同じ処理タイミングで並列実行される演算実行ステージの入力データとするように構成されている。
【００３１】
この場合、第２切替手段は、例えば、割込要求の受付後に実行されるメモリアクセスステージにて、該割込要求に応じて実行すべき割込処理ルーチンの先頭アドレスの特定に必要なデータをメモリからロードする際に、演算実行ステージの入力データを切り替えればよい。
【００３２】
このように構成された本発明のパイプライン処理装置では、メモリアクセスステージにてロードされたデータ（割込処理ルーチンの先頭アドレスの特定に必要なデータ）が、直ちに、そのメモリアクセスステージと並列実行される演算実行ステージの入力データとなり、この演算実行ステージにて、割込処理ルーチンの先頭アドレスが求められる。
【００３３】
その結果、上記メモリアクセスステージを実行した次の処理タイミングでは、演算実行ステージにて求められた先頭アドレスを、プログラムカウンタに設定して、割込処理ルーチンの先頭命令を読み出すこと、即ち、割込処理ルーチンの処理を直ちに開始することができる。
【００３４】
このように本発明のパイプライン処理装置では、第一発明と同様に、従来装置と比較して、割込処理ルーチンの起動時間を１ステージ分短縮することができるため、第一発明と同様の効果を得ることができる。
【００３５】
次に、第三発明の割込処理方法では、割込要求の受付後に実行されるメモリアクセスステージにて、該割込要求に応じて実行すべき割込処理ルーチンの先頭アドレス、或いは該先頭アドレスの特定に必要なデータがメモリからロードされると、次の処理タイミングで実行されるフェッチステージにて、前記割込処理ルーチンの先頭命令をフェッチする。
【００３６】
つまり、上述したように、従来装置と比較して、割込処理ルーチンの起動時間を１ステージ分短縮することができるため、上記第一及び第二発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３７】
以下に本発明の実施形態を図面と共に説明する。
［第１実施形態］
図１は、本発明が適用された第１の実施形態のパイプライン処理装置としてのＣＰＵ１のデータパス部の構成を示すブロック図である。
【００３８】
図１に示すように、本実施形態のＣＰＵ１は、ＣＰＵ１０１（従来装置）のＩＦ／ＤＥＣバッファ１０２，ＤＥＣ／ＥＸＥバッファ１０３，ＥＸＥ／ＭＡバッファ１０４，レジスタファイル１０５，演算器１０６，プログラムカウンタ１０７，マルチプレクサ１１０〜１１２と同様に構成された、ＩＦ／ＤＥＣバッファ２，ＤＥＣ／ＥＸＥバッファ３，ＥＸＥ／ＭＡバッファ４，レジスタファイル５，演算器６，プログラムカウンタ７，マルチプレクサ１０〜１２を備えている。
【００３９】
また、ＣＰＵ１は、マルチプレクサ１０８に代えて、レジスタファイル１０５からの出力と、割込処理ルーチンの先頭アドレスに関する情報（割込アドレス情報）が格納されたＲＯＭのアドレス（設定アドレス）とのうち、いずれかを選択してＤＥＣ／ＥＸＥバッファ３に供給するマルチプレクサ８を備えると共に、演算器６からの出力と、データバス３０を介して外部のメモリからロードされるデータとのうち、いずれかを選択して、ＥＸＥ／ＭＡバッファ４及びマルチプレクサ１０に供給する第１切替手段としてのマルチプレクサ９を備えている。
【００４０】
なお、本実施形態において、割込アドレス情報は、起動すべき割込処理ルーチンの先頭アドレスそのものを示すものとする。
このように構成されたＣＰＵ１は、通常の処理では、従来のＣＰＵ１０１と同様に動作するため、その説明については省略し、ここでは、本発明の主要部である割込処理ルーチンの起動時の動作を、図２（ａ）に示すタイミング図を用いて説明する。
【００４１】
図２（ａ）に示すように、処理タイミングｔ２で始まるステージで割込要求が受け付けられたとすると、マルチプレクサ８は、レジスタファイル５から供給されるデータに代えて、設定アドレスをＤＥＣ／ＥＸＥバッファ３に供給する設定に切り替わる。
【００４２】
これにより、命令処理サイクルＣ１のＤＥＣステージでは、処理タイミングｔ１のＩＦステージにてフェッチされた命令、即ち、その時点でＩＦ／ＤＥＣバッファ２に格納されている命令を破棄して、命令の解読結果の代わりに、設定アドレスを、ＥＸＥステージ（ＤＥＣ／ＥＸＥバッファ３）に伝播することになる。
【００４３】
続く処理タイミングｔ３では、ＤＥＣ／ＥＸＥバッファ３に設定アドレスが格納されると共に、演算器６は、ＤＥＣ／ＥＸＥバッファ３に格納された設定アドレスを、値を変化させることなく通過させるように設定され（具体的には、設定アドレスにゼロ値を加算するか、設定アドレスと全てのビットが１であるデータとの論理積を求める等してもよい）、更に、マルチプレクサ９は、演算器６の出力を選択するように設定される。
【００４４】
これにより、命令処理サイクルＣ１のＥＸＥステージでは、設定アドレスを、値を変化させることなくＭＡステージ（ＥＸＥ／ＭＡバッファ４）に伝播することになる。
続く処理タイミングｔ４では、ＥＸＥ／ＭＡバッファ４に設定アドレスが格納されると共に、ＥＸＥ／ＭＡバッファ４の出力をアドレスバス２０に出力するようにマルチプレクサ１１が設定される。更に、マルチプレクサ９がデータバス３０を介してメモリの設定アドレスからロードされるデータを選択するように設定され、マルチプレクサ１０が、プログラムカウンタ７の更新出力の代わりに、マルチプレクサ９にて選択されたデータをプログラムカウンタ７に供給するように設定される。
【００４５】
これにより、命令処理サイクルＣ１のＭＡステージでは、設定アドレスへのメモリアクセスが実行され、それによってロードされたデータ、即ち、割込処理ルーチンの先頭アドレスが、マルチプレクサ９，１０を介してプログラムカウンタ７に供給される。
【００４６】
つまり、命令処理サイクルＣ１のＭＡステージにてロードされた割込処理ルーチンの先頭アドレスは、命令処理サイクルＣ２のＥＸＥステージにバイパスされることになる。
続く処理タイミングｔ５では、割込処理ルーチンの先頭アドレスがプログラムカウンタ７に格納されると共に、マルチプレクサ１１が、プログラムカウンタ７の出力をアドレスバス２０に出力するように設定され、更に、データバス３０を介して先頭アドレスからロードされたデータ（命令）がＩＦ／ＤＥＣバッファ２に格納される。
【００４７】
これにより、命令処理サイクルＣ２のＭＡステージによって、プログラムカウンタ７に、割込処理ルーチンの先頭アドレスがセットされ、直ちに、そのプログラムカウンタ７の設定値に従って、割込処理ルーチンの先頭命令のフェッチが開始（命令処理サイクルＣ５にて処理）される。
【００４８】
以上詳述したように、本実施形態のＣＰＵ１では、割込要求の受付後、ＭＡステージで、ＲＯＭから割込処理ルーチンの先頭アドレスがロードされると、この先頭アドレスを、次の処理タイミングで実行されるＭＡステージの入力データとなるようバイパスするように構成されている。
【００４９】
従って、割込処理ルーチンの先頭アドレスをロードした次の処理タイミングでは、そのロードした先頭アドレスをプログラムカウンタ７に設定して、割込処理ルーチンの先頭命令をフェッチすること、即ち、割込処理ルーチンを処理を直ちに開始することができる。
【００５０】
つまり、本実施形態のＣＰＵ１によれば、割込要求を受け付けてから割込処理ルーチンが開始されるまでの起動時間を、従来装置と比較して１ステージ分短縮することができるため、個々の割込の応答性、及び当該ＣＰＵ１全体の処理効率を向上させることができる。そして、特に、割込要求が頻繁に発生するシステムにＣＰＵ１を適用した場合に、大幅に処理効率を向上させることができる。
［第２実施形態］
次に、第２の実施形態について説明する。
【００５１】
図３は、本実施形態のＣＰＵ１ａの内部構成を表すブロック図である。
なお、本実施形態のＣＰＵ１ａは、第１実施形態のＣＰＵ１とは、一部構成が相違するだけであるため、同一の構成については、同じ符号を付して説明を省略し、構成の相違する部分を中心に説明する。
【００５２】
図３に示すように、本実施形態のＣＰＵ１ａは、マルチプレクサ９の代わりに、ＤＥＣ／ＥＸＥバッファ３の出力と、データバス３０を介してロードされたデータとのうち、いずれかを選択して演算器６に供給する第２切替手段としてのマルチプレクサ９ａを備えており、演算器６の出力は、従来装置と同様に、そのままＥＸＥ／ＭＡバッファ４及びマルチプレクサ１０に供給されるように構成されている。
【００５３】
なお、本実施形態において、割込アドレス情報は、起動すべき割込処理ルーチンの先頭アドレスを特定するための情報（例えばオフセット値）を示すものとする。
このように構成されたＣＰＵ１ａにおける割込処理ルーチンの起動時の動作を、図２（ｂ）に示すタイミング図を参照して説明する。
【００５４】
図２（ｂ）に示すように、処理タイミングｔ２で始まるステージで割込要求が受け付けられたとすると、マルチプレクサ８は、レジスタファイル５から供給されるデータに代えて、設定アドレスをＤＥＣ／ＥＸＥバッファ３に供給する設定に切り替わる。
【００５５】
これにより、命令処理サイクルＣ１のＤＥＣステージでは、処理タイミングｔ１のＩＦステージにてフェッチされた命令、即ち、その時点でＩＦ／ＤＥＣバッファ２に格納されている命令を破棄して、命令の解読結果の代わりに、設定アドレスを、ＥＸＥステージ（ＤＥＣ／ＥＸＥバッファ３）に伝播することになる。
【００５６】
続く処理タイミングｔ３では、ＤＥＣ／ＥＸＥバッファ３に設定アドレスが格納されると共に、マルチプレクサ９ａは、ＤＥＣ／ＥＸＥバッファ３の出力を選択するように設定される。更に、演算器６は、マルチプレクサ９ａを介してＤＥＣ／ＥＸＥバッファ３から供給される設定アドレスを、値を変化させることなく通過させるように設定される（具体的には、設定アドレスにゼロを加算するか、設定アドレスと全ビットが１であるデータとの論理積を求める等してもよい。）。
【００５７】
これにより、命令処理サイクルＣ１のＥＸＥステージでは、設定アドレスを、値を変化させることなくＭＡステージ（ＥＸＥ／ＭＡバッファ４）に伝播することになる。
続く処理タイミングｔ４では、ＥＸＥ／ＭＡバッファ４に設定アドレスが格納されると共に、ＥＸＥ／ＭＡバッファ４の出力をアドレスバス２０に出力するようにマルチプレクサ１１が設定される。更に、マルチプレクサ９ａがデータバス３０を介してメモリの設定アドレスからロードされるデータを選択するように設定され、マルチプレクサ１０が、プログラムカウンタ７の更新出力の代わりに、演算器６の出力データをプログラムカウンタ７に供給するように設定される。
【００５８】
これにより、命令処理サイクルＣ１のＭＡステージでは、設定アドレスへのメモリアクセスが実行され、それによってロードされたデータ（割込処理ルーチンの先頭アドレス指定用のオフセット値）がマルチプレクサ９ａを介して演算器６に供給される。更に、そのデータに基づいて、演算器６にて求められた割込処理ルーチンの先頭アドレスが、マルチプレクサ１０を介してプログラムカウンタ７に供給される。
【００５９】
つまり、命令処理サイクルＣ１のＭＡステージにてロードされたデータは、同じ処理タイミングで並列実行される命令処理サイクルＣ２のＥＸＥステージにバイパスされることになり、そのＥＸＥステージで算出された割込処理ルーチンの先頭アドレスが、命令処理サイクルＣ２のＭＡステージに伝播することになる。
【００６０】
続く処理タイミングｔ５では、割込処理ルーチンの先頭アドレスがプログラムカウンタ７に格納されると共に、マルチプレクサ１１が、プログラムカウンタ７の出力をアドレスバス２０に出力するように設定され、更に、データバス３０を介して先頭アドレスからロードされたデータ（命令）がＩＦ／ＤＥＣバッファ２に格納される。
【００６１】
これにより、命令処理サイクルＣ２のＭＡステージによって、プログラムカウンタ７に、割込処理ルーチンの先頭アドレスがセットされ、直ちに、そのプログラムカウンタ７の設定値に従って、割込処理ルーチンの先頭命令のフェッチが開始（命令処理サイクルＣ５にて処理）される。
【００６２】
以上詳述したように、本実施形態のＣＰＵ１ａでは、ＭＡステージで、ＲＯＭからロードされたデータ（割込処理ルーチンの先頭アドレス指定用のオフセット値）が、このＭＡステージと並列実行されるＥＸＥステージにバイパスされ、次の処理タイミングを待つことなく直ちに割込処理ルーチンの先頭アドレスを求めるようにされている。
【００６３】
従って、割込処理ルーチンの先頭アドレス指定用のオフセット値をロードした次の処理タイミングでは、そのロードしたオフセット値に基づいて求められた先頭アドレスをプログラムカウンタ７に設定して、割込処理ルーチンの先頭命令をフェッチすること、即ち、割込処理ルーチンを処理を直ちに開始することができる。
【００６４】
つまり、本実施形態のＣＰＵ１ａによれば、設定アドレスによりロードされるデータが先頭アドレスそのものではなく、これを特定するための情報（例えばオフセット値）であったとしても、割込要求を受け付けてから割込処理ルーチンが開始されるまでの起動時間を、従来装置と比較して１ステージ分短縮することができるため、第１実施形態のＣＰＵ１と同様の効果を得ることができる。
【図面の簡単な説明】
【００６５】
【図１】第１実施形態のＣＰＵの内部構成を表すブロック図である。
【図２】第１及び第２の実施形態のＣＰＵの割込処理ルーチンの起動処理に係るパイプライン動作のタイミング図である。
【図３】第２実施形態のＣＰＵの内部構成を表すブロック図である。
【図４】従来のＣＰＵの内部構成を表すブロック図である。
【図５】従来のＣＰＵの割込処理ルーチンの起動処理に係るパイプライン動作のタイミング図である。
【符号の説明】
【００６６】
１，１ａ…ＣＰＵ、２…ＩＦ／ＤＥＣバッファ、３…ＤＥＣ／ＥＸＥバッファ、４…ＥＸＥ／ＭＡバッファ、５…レジスタファイル、６…演算器、７…プログラムカウンタ、８，９，９ａ，１０，１１…マルチプレクサ、２０…アドレスバス、３０…データバス。
【図１】
2005032016.tif 000003
【図２】
2005032016.tif 000004
【図３】
2005032016.tif 000005
【図４】
2005032016.tif 000006
【図５】
2005032016.tif 000007