(57)【要約】      （修正有）【課題】パイプライン化されたプロセッサにおいて、汎用レジスタを用いて割込みを効率的に処理するシステム、装置、及び方法を提供する。【解決手段】レジスタファイルは、割込み復帰アドレスを効率的に保存するために更新することができる。システムのプロセッサによって割込み要求が受け取られた場合、又はプログラムの実行中に割込み要求が発行された場合、疑似命令が生成される。この疑似命令は、他の命令と同様にパイプラインを下へ進み、処理が未完了である最後の命令の復帰アドレスをレジスタファイルへ書き込ませることによって、レジスタファイルを更新する。【選択図】図３
2014099192.tif 000002
【特許請求の範囲】
【請求項１】
汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存するデータ処理システムであって、
割込み要求に応答して疑似命令を生成するように構成された制御論理を備え、
前記疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、
前記疑似命令は更に、前記パイプライン内に挿入され、他の命令と実質的に同様に、パイプライン化されたプロセッサの前記パイプラインを下へ進むように構成されたデータ処理システム。
【請求項２】
請求項１に記載のデータ処理システムにおいて、
書込みステージと、前記疑似命令を復号するように構成された復号ステージとを更に備え、
前記書込みステージは、前記先頭の命令の割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成されたデータ処理システム。
【請求項３】
請求項２に記載のデータ処理システムにおいて、
前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備えるデータ処理システム。
【請求項４】
請求項３に記載のデータ処理システムにおいて、
命令をフェッチするように構成されたフェッチステージを更に備え、
前記マルチプレクサは更に、前記フェッチステージからの命令と前記疑似命令とを受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの１つを選択するように構成されたデータ処理システム。
【請求項５】
複数の汎用レジスタを更に備える請求項１に記載のデータ処理システム。
【請求項６】
請求項１に記載のデータ処理システムにおいて、
疑似命令生成器が、プロセッサ制御モジュール内に存在するデータ処理システム。
【請求項７】
請求項４に記載のデータ処理システムにおいて、
前記プロセッサによって処理される命令データを格納するように構成され、前記フェッチステージに接続されたメモリモジュールを更に備えるデータ処理システム。
【請求項８】
汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存する装置であって、
割込み要求に応答して疑似命令を生成するように構成された疑似命令生成器を有するパイプライン化されたプロセッサを備え、
前記疑似命令は、前記パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、前記プロセッサは複数の汎用レジスタを含み、
前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサの前記パイプラインを下へ進むように構成された装置。
【請求項９】
請求項８に記載の装置において、
前記疑似命令を復号するように構成された復号ステージと、書込みステージとを更に備え、
前記書込みステージは、最後の未完処理命令の前記割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成され、
前記疑似命令は、前記復号ステージへ入力される装置。
【請求項１０】
請求項９に記載の装置において、
前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備える装置。
【請求項１１】
請求項１０に記載の装置において、
命令をフェッチするように構成されたフェッチステージを更に備え、
前記マルチプレクサは更に、前記フェッチステージからの命令と前記疑似命令とを受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの１つを選択するように構成された装置。
【請求項１２】
請求項１０に記載の装置において、
前記プロセッサは更に、前記割込み要求に応答して割込み処理を実行し、前記最後の未完処理命令の割込み復帰アドレスを汎用レジスタファイルへ書き込むように構成された装置。
【請求項１３】
請求項１２に記載の装置において、
前記プロセッサは更に、前記汎用レジスタファイルへ書き込まれた割込み復帰アドレスにおいて処理を再開するように構成された装置。
【請求項１４】
パイプライン化されたプロセッサ内の汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する方法であって、
パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成された疑似命令を、割込み要求に応答して生成するステップを備え、
前記疑似命令は更に、前記パイプライン内に挿入され、他の命令と実質的に同様に、前記パイプラインされたプロセッサのパイプラインを下へ進むように構成された方法。
【請求項１５】
請求項１４に記載の方法において、
前記割込み要求に応答して、割込み処理を実行することと、
最後の未完処理命令の前記割込み復帰アドレスを、前記汎用レジスタファイルへ書き込むことと
を更に備える方法。
【請求項１６】
請求項１５に記載の方法において、
前記汎用レジスタファイルへ書き込まれた前記割込み復帰アドレスにおいて処理を再開することを更に備える方法。
【請求項１７】
請求項１４に記載の方法において、
前記疑似命令は、前記プロセッサ内の制御論理によって生成される方法。
【請求項１８】
請求項１４に記載の方法において、
前記パイプライン化されたプロセッサは、
書込みステージと、前記疑似命令を復号するように構成された復号ステージとを備え、
前記書込みステージは、前記先頭の命令の割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成され、
前記疑似命令は、前記復号ステージへ入力される
方法。
【請求項１９】
請求項１８に記載の方法において、
前記プロセッサは更に、前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを備える方法。
【請求項２０】
請求項１９に記載の方法において、
前記プロセッサは更に、命令をフェッチするように構成されたフェッチステージを備え、
前記マルチプレクサは更に、前記フェッチステージからの命令と、前記疑似命令との両方を受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの１つを選択するように構成された方法。
【請求項２１】
請求項１４に記載の方法において、
前記プロセッサは更に、複数の汎用レジスタを備える方法。
【請求項２２】
汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する装置であって、
割込み処理を実行するように構成されたマルチステージのパイプライン化されたプロセッサであって、前記ステージは、命令を受け取るように構成された少なくとも１つのステージと、前記汎用レジスタファイルへ結果を書き込むように構成された少なくとも１つのステージとを備え、前記プロセッサは更に、プログラムからの命令データを処理するように構成されたプロセッサと、
割込み要求に応答して疑似命令を生成するように構成された制御論理であって、前記疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と実質的に同様に、前記パイプラインを下へ進むように構成された制御論理と、
前記制御論理からの疑似命令と、前記プログラムからの命令データとの両方を受け取るように構成されたマルチプレクサであって、前記疑似命令と前記命令データとのうちの少なくとも１つを選択し、選択された前記疑似命令又は前記命令データを、命令を受け取るように構成された前記少なくとも１つのパイプラインステージへ入力するように更に構成されたマルチプレクサと
を備える装置であって、
割込み処理の発生後、前記プロセッサは更に、前記汎用レジスタファイルへ書き込まれた前記先頭の命令の割込み復帰アドレスにおいて、命令データの処理を再開するように構成された装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にプロセッサに関し、特に、割込み復帰アドレスを効率的に保存する、パイプライン化されたプロセッサに関する。
【背景技術】
【０００２】
より速いコンピュータ処理速度を達成することは、製造者及び利用者の双方にとって長い間の目標である。高速処理という目標を促進するために、いくつかのコンピュータプロセッサは、パイプライン化された処理として知られる技術を用いる。パイプライン化されたアーキテクチャを組み込むプロセッサは、多くの命令が様々な実行ステージにおいて同時に存在することを可能とする。
【０００３】
パイプライン化されたアーキテクチャにおいて、単一の命令サイクルは、５つのステージを含むことができる。これらのステージは、（１）フェッチ、（２）復号、（３）レジスタファイルへのアクセス、（４）実行、及び（５）レジスタファイルへの書込み、というように連続して説明することができる。パイプライン化された処理において、これらステージの各々における処理は、高速処理を達成するために並行して達成される。パイプライン化は、期間にわたって完了した命令の数を増加することによって、プロセッサ速度を加速するために用いることができる。
【０００４】
このようなプロセッサにおいて、一度に、様々な処理ステージ内のパイプラインに５つの命令が同時に存在することが可能である。例えば、最初のいくつかの処理クロックサイクルで、１から５までの命令が、様々な実行ステージに同時に存在することができる。単一の命令の５つのステージでの処理の完了は、次の命令の処理が開始する前に完了する必要はない。
【０００５】
例えば１つの時点において、命令５がフェッチされ、命令４が復号し、命令３がレジスタファイルへアクセスし、命令２が実行し、命令１がレジスタファイルへ書き込まれることが可能である。パイプライン化された処理において、各命令は一般に、連続するステージで、連続してフェッチされ、連続して処理される。
【０００６】
パイプライン化されたプロセッサはまた、割込みの制御を要する。このような割込みは、周辺デバイスから、あるいはコンピュータプログラムの実行中に、割込み要求信号が発行された場合特に起こりうる。割込み要求が発生した場合、実行中のプログラムは中断される。プロセッサはその後、実行中のプログラムの状態を一時的に保存し、割込み要求に応答して他の処理が発生する。割込み処理が完了すると、プロセッサは、プログラムが中断された時点から、プログラムの実行を再開する。
【０００７】
従って、中断されたプログラム状態の、保存されなければならないキー要素は、割込み処理が完了した時プログラムの実行が再開するべきである命令のアドレスである。このアドレスは、「復帰アドレス」と称される。いくつかのアーキテクチャにおいて、この復帰アドレスを、汎用レジスタファイルの一部である特定のレジスタ内に保存することが必要条件である。解決すべき問題は、復帰アドレスを保存するために、レジスタファイルへのアクセスを用いた割込みメカニズムを如何に提供するかである。
【０００８】
ある者は、レジスタファイルへの専用ポートを用いることによって復帰アドレスを保存することを試みた。しかし、プロセッサのレジスタファイルの管理は一般に、特に高周波数で深くパイプラインされたスーパースカラプロセッサにおいて、非常に複雑であり設計の性能を決定付ける局面である。追加のレジスタファイルポートは、タイミング、領域、及び電力の点からコストがかかりうるので、プロセッサの効率を低減する。更に、多くの高性能設計は、レジスタの再命名、予約局、及び命令順序のための完了バッファを含む更に複雑なレジスタファイル管理をも要求しうる順不同命令処理を実行する。これら複雑さの全てが、割込み復帰アドレスを保存するために単にレジスタファイルへの追加ポートを提供することや、既存のレジスタファイルポートを共有する特別制御経路を提供することさえも複雑にしている。
【発明の概要】
【０００９】
本開示は、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存するシステム、装置、及び方法を提供する。本開示は、割込みが発生した時点で未だパイプラインを出ていない命令のプログラムカウンタ値又は割込み復帰アドレスを保存するメカニズムを提供する。割込みが発生した時、パイプライン内で最も進んでいるが処理が未完了であるプログラム命令は、本明細書でしばしば、パイプライン内の先頭の命令と称される。
【００１０】
本開示の１つの実施形態によると、パイプライン化されたプロセッサの汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存するデータ処理システムが提供される。このシステムは、割込み要求に応答して疑似命令を生成するように構成された制御論理を備える。疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。疑似命令は更に、パイプライン内へ挿入され、他の命令と実質的に同様に、パイプライン化されたプロセッサのパイプラインを下へ進めるように構成される。
【００１１】
本開示の別の実施形態によると、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する装置が提供される。この装置は、割込み要求に応答して疑似命令を生成するように構成された疑似命令生成器を有するパイプライン化されたプロセッサを備える。疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。疑似命令は更に、パイプライン内へ挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサのパイプラインを下へ進めるように構成される。
【００１２】
本開示のまた別の実施形態によると、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する方法が提供される。この方法は、パイプライン内の先頭の命令の復帰アドレスをパイプラインされたプロセッサ内の汎用レジスタファイルへ書き込ませるように構成された疑似命令を生成することを備える。疑似命令は更に、パイプライン内に挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサのパイプラインを下へ進めるように構成される。
【００１３】
本開示のまた別の実施形態によると、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する装置が提供される。この装置は、割込み処理を実行するように構成された、マルチステージのパイプライン化されたプロセッサを含む。ステージは、命令を受け取るように構成された少なくとも１つのステージと、汎用レジスタファイルへ結果を書き込むように構成された少なくとも１つのステージとを含む。プロセッサは更に、プログラムからの命令データを処理するように構成される。
【００１４】
この装置は更に、割込み要求に応答して疑似命令を生成するように構成された制御論理を含む。疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。疑似命令は更に、パイプライン内へ挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサのパイプラインを下へ進めるように構成される。この装置は更に、制御論理からの疑似命令と、プログラムからの命令データとの両方を受け取るように構成されたマルチプレクサを含む。マルチプレクサは更に、疑似命令と命令データとのうちの少なくとも１つを選択し、選択した疑似命令又は命令データを、命令を受け取るように構成された少なくとも１つのパイプラインステージへ入力するように構成される。この装置において、割込み処理の発生後、プロセッサは更に、汎用レジスタファイルへ書き込まれた先頭の命令の割込み復帰アドレスにおいて、命令データの処理を再開するように構成される。
【００１５】
本発明の様々な実施形態のみが例示によって示され説明される以下の詳細な説明から、当業者には、本発明の他の実施形態も容易に明らかになるであろう。理解されるように、本発明は、他の異なる実施形態にも適用可能であって、いくつかの詳細は、全て本発明の精神及び範囲を逸脱することなく他の様々な点において修正可能である。従って、図面及び詳細な説明は、本質的に例示的であり、限定的ではないと見なされるべきである。
【００１６】
他の目的と同様に、これら特徴及び利益は、例示的な実施形態の詳細な説明および図面を閲覧することによって明らかになるであろう。
【図面の簡単な説明】
【００１７】
【図１】図１は、本開示の１つの実施形態に従って、パイプライン化されたプロセッサ制御及びデータモデルを示すブロック図である。
【図２】図２は、本開示の１つの実施形態に従って、様々なパイプラインステージにおける割込み処理をクロックサイクルと関連付けて示す表である。
【図３】図３は、本開示の１つの実施形態に従って、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存する方法を示すフローチャートである。
【発明を実施する形態】
【００１８】
本開示は、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存するシステム、装置、及び方法を提供する。汎用レジスタファイルは、パイプラインの制御下にある。本開示によると、汎用レジスタファイルは、割込み要求の時点でパイプライン内の先頭にある命令の復帰アドレスやプログラムカウンタ値を効率的に保存するために、更新することができる。
【００１９】
システムプロセッサによって割込み要求信号が受け取られると、プロセッサによって疑似命令が生成される。この疑似命令は、その他の命令とほぼ同様に処理される。疑似命令はパイプラインを下へ進み、復帰アドレスをレジスタファイルへ書き込ませることによって、レジスタファイルを更新する。この疑似命令は正規命令のようにパイプラインを下へ進むので、レジスタのみではなく関連するリソースも更新する。割込み復帰アドレスを保存するためのレジスタファイルに関連する専用ハードウェアは必要ではない。本明細書で説明するシステム、装置、及び方法は、汎用レジスタを用いて実現することができ、そのため、レジスタファイルへの専用ポートは必要ではない。
【００２０】
図１に関して、本開示の１つの実施形態に従って、パイプライン化されたデータプロセッサモデル１００が示される。５ステージのパイプラインモデルが例示のために示される。５ステージは、（１）フェッチ、（２）復号、（３）レジスタファイルへのアクセス、（４）実行、及び（５）レジスタファイルへの書込み、として説明することができる。プロセッサモデル１００のいくつかのステージは、汎用レジスタを含むことができる。もちろん、これら汎用レジスタは、データが実際のデータとは対照的に格納されるメモリ場所を含むことができる。特別なレジスタは存在せず必要でもない。
【００２１】
本明細書で説明するシステム、装置、及び方法は、５ステージのパイプライン化されたプロセッサとして説明される。しかし、本明細書で説明されるシステム、装置、及び方法は、より少ない又はより多いステージを有するパイプライン化されたプロセッサにおいて実現することもできることが理解されるべきである。更に、本明細書に開示する方法及びシステムは、プロセッサを特定のパイプラインステージのセットに区切る必要がない。
【００２２】
例えば、開示されたステージは、２つ又はそれ以上のステージへ更に分割することができる。この分割は、タイミング発行に対処したり、より高速なプロセッサクロック速度を促進するために実行される。あるいは、２つ又はそれ以上のステージは、単一のステージに結合することができる。プロセッサは単に、命令を受け入れる第１のステージと、レジスタファイルへ結果を書き込む第２のステージとを含むことができる。開示されたパイプラインは、プロセッサ内で処理がいかに本開示に適切に区切られるかの単に１つの例を提供する。
【００２３】
図１に示すように、プロセッサ制御モジュール１１０は、一般のパイプライン動作及び割込み処理のフローを制御する。フェッチステージ１２０は、フェッチ命令を担当することができる。正規命令は、組込みキャッシュメモリや、メモリ管理ユニットによって調整される外部メモリからを含む様々な場所からフェッチすることができる。
【００２４】
疑似命令生成器１１７は、制御モジュール１１０内に存在しうる制御論理でありうる。疑似命令生成器１１７は、復帰アドレスを汎用レジスタファイルへ書き込ませるように構成された疑似命令を生成するように構成される。疑似命令は、一般に、パイプラインへ入力されることによって正規命令と区別することができる。更に、疑似命令は一般に、レジスタファイルを割込み復帰アドレスとともに書き込ませるように設計された特別機能を実行する。しかし、疑似命令は、一度パイプラインへ入力されると、メモリやその他からフェッチされた正規命令と同様にパイプラインを下へ進む。疑似命令の利用は、以下でより詳しく説明されるであろう。マルチプレクサ１１５は、フェッチステージ１２０と復号ステージ１３０との間に位置することができる。マルチプレクサ１１５は、復号ステージ１３０への入力を、フェッチステージ１２０での命令か、制御モジュール１１０内の疑似命令生成器１１７によって生成された疑似命令かの何れかとして決定することができる。マルチプレクサ１１５は、選択ライン１１９を介して、復号ステージへの望まれる入力を選択することができる。
【００２５】
復号ステージ１３０は、フェッチステージ１２０中にフェッチされた命令を受け取り、復号することができる。あるいは、制御モジュール１１０の疑似命令生成器１１７で生成された疑似命令を受け取り、復号することができる。割込み処理が呼び出されないとすれば、各命令は一般に、連続した順序で、あるいは例えば実行中のコンピュータプログラムによって決定された順序で、フェッチステージ１２０から復号ステージ１３０へ到着するであろう。
【００２６】
次の命令のアドレスを決定するために、データの復号が必要であるだろう。アドレスは例えば、連続した次の命令としてバッファ内にあることができる。いくつかの例において、アドレスは、例えばもし現在の命令が分岐であれば、メモリ又はキャッシュからフェッチされることが必要でありうる。復号ステージは、何処で命令が終了するかを判定するために命令を復号することができる、パイプラインの第１のステージである。
【００２７】
割込みを提供すると、問題に遭遇する。これらの問題は、レジスタファイルに復帰アドレスを書き込むことに関連しうる。
【００２８】
本開示は、レジスタファイルがパイプラインの直接制御下にあるという事実を活用する。本開示のプロセッサアーキテクチャは、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存するためにレジスタファイルを用いる。
【００２９】
割込み要求信号１１８が制御モジュール１１０で受け取られると、制御モジュール１１０は、選択ライン１１９を介してサービス割込みを実行するかを判定する。もしサービス割込みが実行されるべきであると判定されれば、疑似命令生成器１１７は、疑似命令を生成し、経路１１３を介してマルチプレクサ１１５へ入力する。疑似命令は、実行中のプログラム内に実際に存在していないために、「疑似命令」と呼ばれる。疑似命令は、割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。割込み復帰アドレスは、制御モジュール１１０の疑似命令生成器１１７へ入力されている。
【００３０】
疑似命令生成器１１７は、例えば様々なゲート及びトランジスタを有する制御論理を含む。疑似命令は、レジスタファイルへ復帰アドレスを書き込むように設計される。復帰アドレス又はプログラムカウンタ値は、もし割込みが発生しなければ次に処理を完了したであろう、先頭の命令の場所を特定する。従って、復帰アドレスは、先頭の命令のアドレスである。当業者には周知であるように、プロセッサマイクロアーキテクチャは、パイプラインを通して命令アドレスを追跡する制御論理を制御モジュール内に含む。この制御論理は、パイプライン内で追跡したアドレスから、命令復帰アドレスを決定することができる。命令復帰アドレスはその後、疑似命令の一部としてマルチプレクサ１１５へ提供され、復号パイプラインステージ１３０へ提供される。
【００３１】
マルチプレクサ１１５及び／又は疑似命令生成器１１７は、復号ステージ１３０への入力される以外に、ステージにおいてパイプライン内に挿入されることもできることが理解されるべきである。しかし、レジスタファイル管理機能が、デフォルト又は通常の制御及びデータ経路を用いることができるように、パイプラインにおける十分に初期のステージに疑似命令を挿入することが望ましいことも理解されるべきである。レジスタファイル管理機能は、ハザード検出、アドレス復号、及び読取／書込み制御を含むことができる。このようにして、特別な機能は、レジスタファイルへの専用ポートと同様に回避されうる。
【００３２】
復号ステージ１３０の後、疑似命令（又は疑似命令が現在入力されていない場合は他の命令）は、レジスタファイルへのアクセスステージ１３５へ進むことができる。プロセッサ制御モジュール１１０は、いくつかの理由によってレジスタファイルへアクセスすることができる。例えば、もし「追加」命令がステージ１３０で復号されれば、追加するソースオペランドを読み取るために、レジスタファイルがアクセスされうる。複数の汎用レジスタは、レジスタファイルへのアクセスステージ１３５内に含まれる。これら汎用レジスタの出力は、後のクロックサイクルで用いることができる。
【００３３】
ステージ１３５でレジスタファイルがアクセスされた後、命令は、命令実行ステージ１４０で受け取られることができる。命令はその後実行されることができる。複数の汎用レジスタが、命令実行ステージ１４０内に含まれうる。これら汎用レジスタの出力は、書込みステージ１４５へ送られることができる。書込みステージ１４５で、プロセッサ１００は、結果をレジスタファイル１８０へ書き込むであろう。
【００３４】
図１に示すように、パイプラインの初期ステージにおいて、１つ又は複数の命令がメモリ又はキャッシュからフェッチされる。一般に、命令は、連続的な順序でパイプラインを通して流れることができる。しかし、割込み操作は、割込みが発生した時に実行処理にあったプログラムへプロセッサが復帰することを必要としうる。従って、処理されていない命令の最後へ復帰することが、プロセッサにとって望ましい。
【００３５】
図２に関して、命令がクロックサイクルに関連して処理されうる様々なパイプラインステージを示すテーブルが示される。例示目的のために、単一のクロックサイクル中に単一のステージが完了すると仮定する。しかし、いくつかの変形例が起こりうることが留意されるべきである。
【００３６】
パイプライン化されたアーキテクチャにおいて、命令の実行はオーバラップすることができる。そのため、各命令を実行するために５つのクロックサイクルがかかっても、５つの命令が様々な実行ステージに同時にあることができる。従って、第１の命令が、レジスタファイルへ書き込まれるステージへパイプラインを下った後、１つの命令は、同時に全てのクロックサイクルを完了する。
【００３７】
図２において例示目的のために、８番目と９番目のクロックサイクル間で、周辺デバイスによって割込み処理が要求されると仮定する。命令は、命令を意味する「Ｉ」と、それに続く命令番号とで表される。例示目的のために、割込み処理が要求された時、命令８はフェッチステージにあると更に仮定する。もちろん、割込み処理は、任意の命令番号の時点で要求することができるということが理解されるべきである。
【００３８】
この例示において、割込み操作は、プロセッサが命令１００へ進むことを要求した。この例では、命令１００は、割込み処理に関連する命令が見つかった場所にある。もちろん、割込み処理は、プログラムによって指定された任意の命令において発生することができる。
【００３９】
割込み処理を操作するために命令１００がフェッチされた後、全ての未完処理命令が放棄されるであろう。この例示において、連続的な順序（又は通常動作中プログラムによって決定されたような順序）での処理が割り込まれたために、命令５乃至命令８が放棄されうる。
【００４０】
処理が未完了である命令の中で先頭の命令は、命令５である。割込みの時点で、命令５は実行ステージにある。最も古い未完処理命令であるこの命令は、まだパイプラインを出ていない。従って、プロセッサがプログラム実行を再開すべきプログラム値は命令５であることが理解されるべきである。本開示によると、疑似命令は、復帰アドレスを先頭の命令として書き込むように構成される。これは、処理の完了を経験していない最も古い命令であるが、割込み要求の時点においてパイプライン内で最も進んだ命令である。この疑似命令は、他の全ての命令と同様に、パイプラインを下へ進む。
【００４１】
図２のサイクル１２で、疑似命令は、先頭の命令のアドレスをレジスタファイルへ書き込む。割込み処理が後に完了すると、プロセッサは、レジスタファイル内に保存された値を用いて、命令５におけるプログラムの実行へ復帰するであろう。
【００４２】
図３に関して、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存する方法３００が示される。ステップ３１０で、割込み要求が受け取られる。割込み要求は、周辺デバイスから、又は要求の時点で実行されているプログラムからであるか、あるいは割込み要求が行われるその他任意の方法でなされる。
【００４３】
ステップ３２０で、疑似命令が生成される。疑似命令は、プロセッサの制御モジュール内の制御論理によって生成することができる。疑似命令は、その他任意の手段によって生成することもできる。疑似命令は、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存するように構成される。割込み復帰アドレスは、制御モジュール内に入力されているために、知られている。疑似命令は、その他の命令と同様にパイプラインを下へ進む。
【００４４】
ステップ３３０で、次の未処理命令の値が汎用レジスタ（ＧＰＲ）ファイルへ書き込まれる。レジスタファイル及び関連するリソースは、通常の方法で更新される。この処理には、汎用レジスタのみが必要である。レジスタファイルへの専用ポートは必要でなく、そのため、プロセッサにおけるエリアをセーブし、専用ポートや特別なレジスタに関連する複雑さを回避する。
【００４５】
ステップ３４０で、プロセッサは、汎用レジスタファイルへ書き込まれたプログラムカウンタ値で処理を再開する。プロセッサはその後、実行中のプログラムによって示されたような順序で命令を実行することができる。
【００４６】
本明細書に開示された実施形態に関連して示された、実例となる様々な論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）やその他のプログラマブル論理デバイス、ディスクリートゲートやトランジスタロジック、ディスクリートハードウェア部品、又は本明細書に示す機能を実行するように設計されたこれら任意の組み合わせを用いて実現又は実行されうる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、又は状態機器を用いることも可能である。プロセッサは、例えばＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに接続された１つ又は複数のマイクロプロセッサ、又はこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
【００４７】
本明細書に開示した実施形態に関連して説明した方法及びアルゴリズムは、ハードウェアによって直接的に、プロセッサによって実行されるソフトウェアモジュールによって、又はこれらの組み合わせによって具現化されうる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、あるいは当該技術分野で知られているその他任意の形式の記憶媒体に収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合される。プロセッサと記憶媒体とは、ＡＳＩＣ内に存在することもできる。ＡＳＩＣは、端末又はその他何処かに存在することもできる。あるいはプロセッサと記憶媒体とは、端末内のディスクリート部品として、又はその他何処かに存在することができる。
【００４８】
開示された実施形態における上記記載は、当業者をして、本発明の製造又は利用を可能とするために提供される。これらの実施形態への様々な変形例もまた、当業者に対しては明らかであって、本明細書で定義された一般原理は、本発明の精神又は範囲を逸脱することなくその他の実施形態にも適用されうる。従って、本発明は、本明細書に示す実施形態に限定することは意図されておらず、本明細書に開示した原理及び新規特徴と整合が取れた最も広い範囲と一致するように意図されている。
【図１】
2014099192.tif 000003
【図２】
2014099192.tif 000004
【図３】
2014099192.tif 000005
【手続補正書】
【提出日】平成26年1月27日(2014.1.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システムであって、
割込み要求に応答して疑似命令を生成するように構成された制御論理
を備え、前記疑似命令は、パイプライン内の先頭の命令に関連する割込み復帰アドレスが汎用レジスタファイルへ書き込まれるようにするよう構成され、前記割込み復帰アドレスに関連する前記先頭の命令は、前記割込み要求が発生したときに前記パイプライン内で最も進んでいる、処理が未完了の命令であり、
前記疑似命令は更に、前記パイプライン内に挿入され、前記パイプライン内に挿入された他の命令と同じ方式で、パイプライン化されたプロセッサの前記パイプラインを下へ進むように構成され、
前記パイプラインは、
前記疑似命令を復号するように構成された復号ステージと、
前記疑似命令に関連する結果を、前記汎用レジスタファイルに書き込むように構成された書込みステージであって、前記結果は、前記先頭の命令に関連する前記割込み復帰アドレスを含む、書込みステージと
を含む複数のステージを備える、データ処理システム。
【請求項２】
前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備える、請求項１に記載のデータ処理システム。
【請求項３】
前記パイプラインは、命令をフェッチするように構成されたフェッチステージを備え、
前記マルチプレクサは更に、前記フェッチステージからの１又は複数のフェッチされた命令を受け取り、かつ前記疑似命令を受け取るように構成され、前記マルチプレクサは更に、前記フェッチされた命令のうちの１つ、または、前記疑似命令を選択して、前記復号ステージへ入力するように構成される、請求項２に記載のデータ処理システム。
【請求項４】
前記パイプライン化されたプロセッサによって処理される命令データを格納するように構成され、前記フェッチステージに接続されたメモリモジュールを更に備える、請求項３に記載のデータ処理システム。
【請求項５】
複数の汎用レジスタを更に備える、請求項１に記載のデータ処理システム。
【請求項６】
疑似命令生成器が、前記パイプライン化されたプロセッサのプロセッサ制御モジュール内に存在する、請求項１に記載のデータ処理システム。
【請求項７】
前記先頭の命令が前記パイプライン内にある時間の特定の持続時間は、前記パイプライン内の、処理が未完了の他の命令の各々に関連する時間の対応する持続時間よりも長い、請求項１に記載のデータ処理システム。
【請求項８】
装置であって、
割込み要求に応答して疑似命令を生成するように構成された疑似命令生成器
を含むパイプライン化されたプロセッサ
を備え、前記疑似命令は、前記パイプライン化されたプロセッサのパイプライン内の先頭の命令に関連する割込み復帰アドレスが前記パイプライン化されたプロセッサの汎用レジスタファイルへ書き込まれるようにするよう構成され、前記パイプライン化されたプロセッサは、複数の汎用レジスタを含み、前記割込み復帰アドレスに関連する前記先頭の命令は、前記割込み要求が発生したときに前記パイプライン内で最も進んでいる、処理が未完了の命令であり、
前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と実質的に同じ方式で、前記パイプライン化されたプロセッサの前記パイプラインを下へ進むように構成され、
前記パイプラインは、
前記疑似命令を復号するように構成された復号ステージと、
前記疑似命令に関連する結果を、前記汎用レジスタファイルに書き込むように構成された書込みステージであって、前記結果は、前記パイプライン内の前記先頭の命令に関連する前記割込み復帰アドレスを含む、書込みステージと
を備える、装置。
【請求項９】
前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備える、請求項８に記載の装置。
【請求項１０】
命令をフェッチするように構成されたフェッチステージを更に備え、
前記マルチプレクサは更に、前記フェッチステージからの１又は複数のフェッチされた命令を受け取り、かつ前記疑似命令を受け取るように構成され、前記マルチプレクサは更に、前記フェッチされた命令のうちの１つ、または、前記疑似命令を選択して、前記復号ステージへ入力するように構成される、請求項９に記載の装置。
【請求項１１】
前記パイプライン化されたプロセッサは更に、
前記割込み要求に応答して割込み処理を実行し、
前記割込み復帰アドレスを前記汎用レジスタファイルへ書き込む
ように構成される、請求項９に記載の装置。
【請求項１２】
前記パイプライン化されたプロセッサは更に、前記汎用レジスタファイルへ書き込まれた前記割込み復帰アドレスにおいて処理を再開するように構成される、請求項１１に記載の装置。
【請求項１３】
方法であって、
割込み要求に応答して、パイプライン化されたプロセッサにより、前記パイプライン化されたプロセッサのパイプライン内の先頭の命令に関連する割込み復帰アドレスが前記パイプライン化されたプロセッサの汎用レジスタファイルへ書き込まれるようにするよう構成された疑似命令を生成すること
を備え、前記割込み復帰アドレスに関連する前記先頭の命令は、前記割込み要求が発生したときに前記パイプライン内で最も進んでいる、処理が未完了の命令であり、
前記疑似命令は更に、前記パイプライン内に挿入され、他の命令と同じ方式で、前記パイプライン化されたプロセッサの前記パイプラインを下へ進むように構成され、
前記パイプライン化されたプロセッサの前記パイプラインは、
前記疑似命令を復号するように構成された復号ステージと、
前記疑似命令に関連する結果を、前記汎用レジスタファイルに書き込むように構成された書込みステージであって、前記結果は、前記先頭の命令に関連する前記割込み復帰アドレスを含む、書込みステージと
を備える、方法。
【請求項１４】
前記割込み要求に応答して、割込み処理を実行することと、
前記割込み復帰アドレスを、前記汎用レジスタファイルへ書き込むことと
を更に備える、請求項１３に記載の方法。
【請求項１５】
前記汎用レジスタファイルへ書き込まれた前記割込み復帰アドレスにおいて処理を再開することを更に備える、請求項１４に記載の方法。
【請求項１６】
前記疑似命令は、前記パイプライン化されたプロセッサ内の制御論理によって生成される、請求項１３に記載の方法。
【請求項１７】
前記パイプライン化されたプロセッサは更に、前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを備える、請求項１３に記載の方法。
【請求項１８】
前記パイプラインは更に、
命令をフェッチするように構成されたフェッチステージ
を備え、前記マルチプレクサは更に、前記フェッチステージからのフェッチされた命令を受け取るように構成され、前記マルチプレクサは更に、前記フェッチされた命令のうちの１つ、または、前記疑似命令を選択して、前記復号ステージへ入力するように構成される、請求項１７に記載の方法。
【請求項１９】
装置であって、
割込み処理を実行するように構成されたマルチステージのパイプライン化されたプロセッサであって、前記ステージは、命令を受け取るように構成された少なくとも１つのステージと、汎用レジスタファイルへ結果を書込むように構成された少なくとも１つのステージとを含み、前記マルチステージのパイプライン化されたプロセッサは更に、プログラムからの命令データを処理するように構成される、マルチステージのパイプライン化されたプロセッサと、
割込み要求に応答して疑似命令を生成するように構成された制御論理であって、前記疑似命令は、パイプライン内の先頭の命令に関連する割込み復帰アドレスが前記汎用レジスタファイルへ書き込まれるようにするよう構成され、前記割込み復帰アドレスに関連する前記先頭の命令は、前記割込み要求が発生したときに前記パイプライン内で最も進んでいる、処理が未完了の命令であり、前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と同じ方式で、前記パイプラインを下へ進むように構成される、制御論理と
を備え、前記パイプラインは、
前記疑似命令を復号するように構成された復号ステージと、
前記疑似命令に関連する結果を、前記汎用レジスタファイルに書き込むように構成された書込みステージであって、前記結果は、前記先頭の命令に関連する前記割込み復帰アドレスを含む、書込みステージと
を備え、前記装置は、
前記制御論理からの前記疑似命令と前記プログラムからの前記命令データとの両方を受け取るように構成されたマルチプレクサであって、前記マルチプレクサは更に、前記疑似命令と前記命令データとのうちの少なくとも１つを選択し、前記疑似命令または前記命令データを、前記命令を受け取るように構成された前記少なくとも１つのステージへ入力するように構成される、マルチプレクサ
を備え、割込み処理が発生した後、前記マルチステージのパイプライン化されたプロセッサは更に、前記割込み復帰アドレスにおいて、命令データの処理を再開するように構成される、装置。
【請求項２０】
前記汎用レジスタファイルは、前記パイプラインの制御下にある、請求項１９に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
開示された実施形態における上記記載は、当業者をして、本発明の製造又は利用を可能とするために提供される。これらの実施形態への様々な変形例もまた、当業者に対しては明らかであって、本明細書で定義された一般原理は、本発明の精神又は範囲を逸脱することなくその他の実施形態にも適用されうる。従って、本発明は、本明細書に示す実施形態に限定することは意図されておらず、本明細書に開示した原理及び新規特徴と整合が取れた最も広い範囲と一致するように意図されている。
なお、以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存するデータ処理システムであって、
割込み要求に応答して疑似命令を生成するように構成された制御論理を備え、
前記疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、
前記疑似命令は更に、前記パイプライン内に挿入され、他の命令と実質的に同様に、パイプライン化されたプロセッサの前記パイプラインを下へ進むように構成されたデータ処理システム。
［Ｃ２］Ｃ１に記載のデータ処理システムにおいて、
書込みステージと、前記疑似命令を復号するように構成された復号ステージとを更に備え、
前記書込みステージは、前記先頭の命令の割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成されたデータ処理システム。
［Ｃ３］Ｃ２に記載のデータ処理システムにおいて、
前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備えるデータ処理システム。
［Ｃ４］Ｃ３に記載のデータ処理システムにおいて、
命令をフェッチするように構成されたフェッチステージを更に備え、
前記マルチプレクサは更に、前記フェッチステージからの命令と前記疑似命令とを受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの１つを選択するように構成されたデータ処理システム。
［Ｃ５］複数の汎用レジスタを更に備えるＣ１に記載のデータ処理システム。
［Ｃ６］Ｃ１に記載のデータ処理システムにおいて、
疑似命令生成器が、プロセッサ制御モジュール内に存在するデータ処理システム。
［Ｃ７］Ｃ４に記載のデータ処理システムにおいて、
前記プロセッサによって処理される命令データを格納するように構成され、前記フェッチステージに接続されたメモリモジュールを更に備えるデータ処理システム。
［Ｃ８］汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存する装置であって、
割込み要求に応答して疑似命令を生成するように構成された疑似命令生成器を有するパイプライン化されたプロセッサを備え、
前記疑似命令は、前記パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、前記プロセッサは複数の汎用レジスタを含み、
前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサの前記パイプラインを下へ進むように構成された装置。
［Ｃ９］Ｃ８に記載の装置において、
前記疑似命令を復号するように構成された復号ステージと、書込みステージとを更に備え、
前記書込みステージは、最後の未完処理命令の前記割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成され、
前記疑似命令は、前記復号ステージへ入力される装置。
［Ｃ１０］Ｃ９に記載の装置において、
前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備える装置。
［Ｃ１１］Ｃ１０に記載の装置において、
命令をフェッチするように構成されたフェッチステージを更に備え、
前記マルチプレクサは更に、前記フェッチステージからの命令と前記疑似命令とを受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの１つを選択するように構成された装置。
［Ｃ１２］Ｃ１０に記載の装置において、
前記プロセッサは更に、前記割込み要求に応答して割込み処理を実行し、前記最後の未完処理命令の割込み復帰アドレスを汎用レジスタファイルへ書き込むように構成された装置。
［Ｃ１３］Ｃ１２に記載の装置において、
前記プロセッサは更に、前記汎用レジスタファイルへ書き込まれた割込み復帰アドレスにおいて処理を再開するように構成された装置。
［Ｃ１４］パイプライン化されたプロセッサ内の汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する方法であって、
パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成された疑似命令を、割込み要求に応答して生成するステップを備え、
前記疑似命令は更に、前記パイプライン内に挿入され、他の命令と実質的に同様に、前記パイプラインされたプロセッサのパイプラインを下へ進むように構成された方法。
［Ｃ１５］Ｃ１４に記載の方法において、
前記割込み要求に応答して、割込み処理を実行することと、
最後の未完処理命令の前記割込み復帰アドレスを、前記汎用レジスタファイルへ書き込むことと
を更に備える方法。
［Ｃ１６］Ｃ１５に記載の方法において、
前記汎用レジスタファイルへ書き込まれた前記割込み復帰アドレスにおいて処理を再開することを更に備える方法。
［Ｃ１７］Ｃ１４に記載の方法において、
前記疑似命令は、前記プロセッサ内の制御論理によって生成される方法。
［Ｃ１８］Ｃ１４に記載の方法において、
前記パイプライン化されたプロセッサは、
書込みステージと、前記疑似命令を復号するように構成された復号ステージとを備え、
前記書込みステージは、前記先頭の命令の割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成され、
前記疑似命令は、前記復号ステージへ入力される
方法。
［Ｃ１９］Ｃ１８に記載の方法において、
前記プロセッサは更に、前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを備える方法。
［Ｃ２０］Ｃ１９に記載の方法において、
前記プロセッサは更に、命令をフェッチするように構成されたフェッチステージを備え、
前記マルチプレクサは更に、前記フェッチステージからの命令と、前記疑似命令との両方を受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの１つを選択するように構成された方法。
［Ｃ２１］Ｃ１４に記載の方法において、
前記プロセッサは更に、複数の汎用レジスタを備える方法。
［Ｃ２２］汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する装置であって、
割込み処理を実行するように構成されたマルチステージのパイプライン化されたプロセッサであって、前記ステージは、命令を受け取るように構成された少なくとも１つのステージと、前記汎用レジスタファイルへ結果を書き込むように構成された少なくとも１つのステージとを備え、前記プロセッサは更に、プログラムからの命令データを処理するように構成されたプロセッサと、
割込み要求に応答して疑似命令を生成するように構成された制御論理であって、前記疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と実質的に同様に、前記パイプラインを下へ進むように構成された制御論理と、
前記制御論理からの疑似命令と、前記プログラムからの命令データとの両方を受け取るように構成されたマルチプレクサであって、前記疑似命令と前記命令データとのうちの少なくとも１つを選択し、選択された前記疑似命令又は前記命令データを、命令を受け取るように構成された前記少なくとも１つのパイプラインステージへ入力するように更に構成されたマルチプレクサと
を備える装置であって、
割込み処理の発生後、前記プロセッサは更に、前記汎用レジスタファイルへ書き込まれた前記先頭の命令の割込み復帰アドレスにおいて、命令データの処理を再開するように構成された装置。
【外国語明細書】
2014099192000001.pdf