(57)【要約】ある実施例において、プログラム可能なプロセッサは、実行パイプラインおよび例外パイプラインを含む。実行パイプラインは、命令を処理するマルチステージ実行パイプラインである。例外パイプラインは、命令の実行によって生じた例外を伝播するマルチステージ例外パイプラインである。第１および例外パイプラインは同じ数のステージを有し、同じクロック・サイクルで動作する。命令が、実行パイプラインのあるステージから実行パイプラインの後のステージへ移動するとき、例外も同様に、例外パイプラインの対応するステージから例外パイプラインの対応する後のステージへ移動する。
2004516546.tif 000002
【特許請求の範囲】
【請求項１】
プログラム可能なプロセッサの実行パイプライン内の命令を処理する段階と、
前記プロセッサの例外パイプラインを通って前記命令の例外を伝播する段階と、
から構成されることを特徴とする方法。
【請求項２】
前記実行パイプライン内の命令を処理する段階は、前記実行パイプラインのＮ個のステージを通って前記命令を伝播する段階を含み、さらに、前記例外パイプライン内の前記命令の前記例外の状態を伝播する段階が、前記例外パイプラインのＮ個のステージを通って前記命令の前記例外の状態を伝播する段階を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記実行パイプラインから前記例外を受け取る段階、および前記例外パイプライン内に前記例外を格納する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項４】
前記例外を受け取る段階が、前記実行パイプラインの複数ステージのうちの１つから例外コードを受け取る段階を含み、さらに、前記例外を格納する段階が、前記例外パイプラインの対応するステージ内に前記例外コードを格納する段階を含むことを特徴とする請求項３記載の方法。
【請求項５】
前記例外パイプライン内の例外要求ビットを伝播する段階をさらに含み、前記例外要求ビットは、前記実行パイプラインの対応するステージ内の命令のためにエラー状態を表わすことを特徴とする請求項１記載の方法。
【請求項６】
前記実行パイプラインがストールされるときに、前記例外パイプラインをストールする段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項７】
実行パイプライン内の対応する命令が実行を終了しないときに、前記例外パイプライン内の前記例外をクリアする段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項８】
前記例外が前記例外パイプラインの最終ステージを通って伝播したときに、前記例外を処理する段階をさらに含むことを特徴とする請求項４記載の方法。
【請求項９】
前記例外パイプラインを通って前記例外を伝播する段階が、前記例外に関連する優先順位に基づいて前記例外パイプラインのステージで複数の例外のうちの１つを選択する段階を含むことを特徴とする請求項１記載の方法。
【請求項１０】
前記対応する命令が終了していないことを保証するために、前記例外パイプラインのステージで前記例外に資格を与える段階を含むことを特徴とする請求項１記載の方法。
【請求項１１】
前記対応する命令が有効であることを保証するために、命令フェッチ・ステージを除き、前記例外パイプラインのステージで前記例外に資格を与える段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項１２】
１つ以上の命令を同時に実行するために複数のステージを有する実行パイプラインと、
前記命令の前記実行により発生する例外を伝播するために複数のステージを有する例外パイプラインと、
から構成されることを特徴とする装置。
【請求項１３】
前記実行パイプラインおよび前記例外パイプラインのそれぞれが、Ｎ個のステージを有することを特徴とする請求項１２記載の装置。
【請求項１４】
前記例外パイプラインの前記ステージが、例外コードを格納するためのパイプライン・レジスタを含むことを特徴とする請求項１２記載の装置。
【請求項１５】
前記例外パイプラインが、例外要求ビットを伝播するために複数の記憶回路を含むことを特徴とする請求項１２記載の装置。
【請求項１６】
前記例外パイプラインおよび前記実行パイプラインのステージが、１つ以上のストール信号によって制御されることを特徴とする請求項１２記載の装置。
【請求項１７】
各ステージが、前記例外要求ビットをリセットするためのキル信号を受け取ることを特徴とする請求項１５記載の装置。
【請求項１８】
前記例外パイプラインの最終ステージから前記例外要求ビットを受け取る例外ハンドラをさらに含むことを特徴とする請求項１２記載の装置。
【請求項１９】
前記例外パイプラインの前記ステージは、前記例外に関連する優先順位に基づいて複数の例外のうちの１つを選択するために、選択ロジックを含むことを特徴とする請求項１２記載の装置。
【請求項２０】
前記例外パイプラインの前記ステージは、前記命令が有効な命令であり、かつ終了していないことを保証するために、前記例外要求ビットに資格を与えるためのロジックを含むことを特徴とする請求項１２記載の装置。
【請求項２１】
フラッシュ・メモリ装置と、
フラッシュ・メモリ装置に結合されたプロセッサであって、前記プロセッサが、１つ以上の命令を同時に実行するために複数のステージを有する実行パイプライン、および前記命令の前記実行により発生する例外を伝播するために複数のステージを有する例外パイプラインを含む、プロセッサと、
から構成されることを特徴とするシステム。
【請求項２２】
前記実行パイプラインおよび前記例外パイプラインのそれぞれが、Ｎ個のステージを有することを特徴とする請求項２１記載のシステム。
【請求項２３】
前記例外パイプラインの前記ステージが、例外コードを格納するためのパイプライン・レジスタを含むことを特徴とする請求項２１記載のシステム。
【請求項２４】
前記例外パイプラインが、例外要求ビットを伝播するために複数の記憶回路を含むことを特徴とする請求項２１記載のシステム。
【請求項２５】
前記例外パイプラインおよび前記実行パイプラインの前記ステージが、１以上のストール信号によって同期して制御されることを特徴とする請求項２１記載のシステム。
【請求項２６】
前記プロセッサが、前記例外パイプラインの最終ステージから前記例外要求ビットを受け取る例外ハンドラをさらに含むことを特徴とする請求項２１記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサにおける例外処理に関する。
【０００２】
【従来の技術】
デジタル信号プロセッサのようなプログラム可能なマイクロプロセッサは、典型的には、命令を処理する間に遭遇することがあるエラーに対処するための例外処理ハードウェアを含む。例えば、プロセッサは、イリーガルな命令（サポートされない演算コード）、ミスアラインされた命令、メモリの保護領域にアクセスする命令、イリーガルなメモリ・アドレス、バス・エラー、およびこれらに類するものに遭遇することがある。
【０００３】
そのようなエラーが検出された場合には、例外ハンドラ・ハードウェアは、典型的には、エラー状態に応答するために、しばしばエラー・ハンドラと呼ばれるソフトウェア・ルーチンを呼び出す。
【０００４】
【実施例の詳細な説明】
図１は、発明の実施例に従って例外を処理するために適合されたプログラム可能なプロセッサの例を図示するブロック図である。プロセッサ２は、実行パイプライン４、例外パイプライン５、および制御ユニット６を含む。
【０００５】
実行パイプライン４は、同時に１以上の命令を処理するために多くのパイプライン・ステージを有する。命令は、実行パイプライン４の第１ステージにロードされ、後続のステージを通って処理される。データは、システムのサイクル中にパイプライン４のステージ間を通過する。命令の結果は、間断なくパイプライン４の終端に現れる。
【０００６】
制御ユニット６は、システム・クロックに従って実行パイプライン４を通って命令および／またはデータのフローを制御する。例えば、命令の処理中に、制御ユニット６は、命令をデコードすること、および、例えば結果をメモリにライト・バックすることなどを含む対応する動作を正確に実行することを、パイプライン４の多様なコンポーネントに命令する。
【０００７】
実行パイプライン４の多様なステージは、エラー状態の場合には１以上の例外信号１７を生成するが、それは、特定のエラー状態を表す例外コードの形式である。例外パイプライン５は、実行パイプライン４から例外を受け取り、かつエラー状態を引き起こす原因である命令に同期して例外を伝播するための複数のパイプライン・ステージを有する。以下で詳述されるように、パイプライン５を通って流れる例外が実行パイプライン４を通って流れる命令と同期され続けることを保証するために、例外パイプライン５は実行パイプライン４と「インタロック（ｉｎｔｅｒｌｏｃｋ）」される。例えば、実行パイプライン４でストール（ｓｔａｌｌ）状態が発生した場合、例外パイプライン５は、それと等しいサイクル数の間ストールする。
【０００８】
図２は、本発明の実施例に従ってプログラム可能なプロセッサ内の実行パイプラインを示すブロック図である。制御ユニット６は、制御信号１８を表明（ａｓｓｅｒｔ）して、実行パイプライン４を通って命令およびデータのフローを制御する。
【０００９】
パイプライン４は、例えば５つのステージ：命令フェッチ（ＩＦ）、命令デコード（ＤＥＣ）、アドレス計算（ＡＣ）、実行（ＥＸ）およびライト・バック（ＷＢ）を有する。命令は、フェッチ・ユニット１１によって第１ステージ（ＩＦ）中に、例えばメイン・メモリ８または命令キャッシュのようなメモリ・デバイスからフェッチされ、命令デコード・ユニット１２によって第２ステージ（ＤＥＣ）中にデコードされる。次のクロック・サイクルで、結果が第３ステージ（ＡＣ）に渡され、そこで、データ・アドレス生成器１３が動作を実行するための任意のメモリ・アドレスを計算する。
【００１０】
実行ステージ（ＥＸ）中に、実行ユニット１５は、例えば２つの数を加算または乗算するような命令によって指定された１つ以上の動作を実行する。実行ユニット１５は、例えば１つ以上の算術論理演算ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）およびバレル・シフタを含む動作を行なうために、特殊なハードウェアを含むことがある。データ・アドレス生成器１３よって生成されたアドレス、メモリから検索されたデータ、あるいはデータ・レジスタ１４から検索されたデータのような多種多様のデータが、実行ユニット１５に提供される。最終段階（ＷＢ）中に、ライト・バック・ユニット１６は、データ・メモリまたはデータ・レジスタ１４にあらゆる結果をライト・バックする。
【００１１】
パイプライン４のステージは、現在のステージのあらゆる結果を格納するために、パイプライン・レジスタ１９のような記憶回路を含む。ステージ・レジスタ１９は、典型的にはシステム・クロックに従って結果をラッチする。ステージ・レジスタ１９は、１以上のストール信号を含む制御信号１８を受け取り、それが、前のステージからの結果をステージ・レジスタ１９がラッチするかどうかを制御する。このように、制御ユニット６は、パイプライン４の１つ以上のステージを同期してストールする。以下で詳述されるように、例外パイプライン５（図１）は制御信号１８を受け取り、実行パイプライン４に同期してストールする。
【００１２】
実行パイプライン４の多様なステージは、対応するステージ内でエラー状態が検知されたことを示す１以上の例外信号（ＥＸＰＳ）を生成する。例えば、フェッチ・ユニット１１は、ミスアラインされた命令に遭遇したときに、例外信号１７の１つを表明する。デコード・ユニット１２は、サポートされない（イリーガル）命令オペコードがデコードされるときに、例外信号１７を表明する。データ・アドレス生成器１３は、イリーガルなメモリ・アドレスが計算されるときに、例外信号１７を表明する。実行ユニット１５は、動作が、オーバーフロー状態のようなエラー状態になったときに、例外信号１７を表明する。ライト・バック・ユニット１６は、命令が、メモリの保護領域に結果を書き込もうとするときに、例外信号１７を表明する。これらのエラーは、例示目的のためにのみ列挙されたものであり、命令を実行する間に発生することがあるエラーのサブセットのみを表わす。
【００１３】
図３は、複数のステージを有する例外パイプライン５の一例を示すブロック図である。例外パイプライン５は、例えば、命令フェッチ（ＩＦ）ステージ、デコード（ＤＥＣ）ステージ、アドレス計算（ＡＣ）ステージ、実行（ＥＸ）ステージ、そしてライト・バック（ＷＢ）ステージを有する。例外パイプライン５の各ステージは、実行パイプライン４の対応するステージから、１つ以上の例外１７を受け取る。例えば、例外パイプライン５のＩＦステージは、１つ以上のＭ個の例外１７Ａを受け取る。例外１７のそれぞれは、Ｎビットの例外コードによって表わされる。したがって、パイプライン・レジスタ３２は、パラレルにＮビットを格納することができる。
【００１４】
例外パイプライン５の各ステージは、後続のステージに渡される最も優先順位が高い例外を選択するために、例外選択ユニット３１を含む。例えば、命令フェッチ選択ユニット３１Ａは、例外パイプライン５のＩＦステージで発生するＭ個の例外の１つを選択する。選択されたＩＦ例外は、次のクロック・サイクルでステージ・レジスタ３２Ａに格納される。
【００１５】
多様な例外の優先順位に応じて、デコード選択ユニット３１Ｂは、（１）実行パイプライン４のデコード・ステージ中に発生するＭ個の例外１７Ｂのうちの１つ、または、（２）例外パイプライン５のＩＦステージから伝播されたステージ・レジスタ３２Ａに格納された例外、のいずれかを選択する。デコード選択ユニット３１Ｂは、パイプライン・ステージ・レジスタ３２Ｂに選択された例外を格納する。
【００１６】
このように、例外は、実行パイプライン４を通って伝播する多様な命令に同期して、例外パイプライン５の多様なステージを通って伝播する。命令が、実行パイプライン４のライト・バック・ステージに取り込まれるとき、対応する例外は、制御ユニット６、および、対応するエラー処理ソフトウェア・ルーチンを起動する例外ハンドラ８によって使用するのために、ｅｘｃ＿ｃｏｄｅ出力で例外パイプライン５から出現する。ある実施例では、例外を処理するプロセスがいくつかのステージを開始した後に、例外がＷＢステージから出現し、適切なサービス・ルーチンが起動される。
【００１７】
図４は、図３に図示された多様なステージを通って例外のフローを制御するための例外パイプライン５の回路３５を図示するブロック図である。以下で詳述されるように、回路３５は一連のフリップフロップ３６を通って１つ以上の例外要求を伝播する。例外要求は、図３の例外パイプライン５内で伝播する例外コードに対応する。
【００１８】
例外要求は、実行パイプライン４を通って命令のフローを制御するのと同じ制御信号１８で、回路３５を通って伝播する資格を得る。例えば、第１フェッチ例外信号は２つの信号は、すなわち、（１）対応する命令が、命令フローの変化のためにＷＢステージへ取り込まれないかどうかを示す「キル（ｋｉｌｌ）」信号、および、（２）対応する命令が、実行パイプライン４でストールしたことを示す「ストール（ｓｔａｌｌ）」信号、によって適格となる。これらの条件が存在しないとき、フェッチ例外信号はフリップフロップ３６Ａによってラッチされる。しかしながら、ストール条件の場合には、フリップフロップ３６Ａの出力がフィード・バックされてマルチプレクサよって選択され、次のクロック・サイクルでラッチされる。このようにして、例外要求は、実行パイプライン４を通って命令フローとインタロックされる。
【００１９】
同様に、結合されたデコード例外要求を生成するために、デコード・ステージで生成された例外要求は、フリップフロップ３６Ａの出力と論理和（ＯＲ）されるが、それはキルおよびストール条件信号で同様に資格を与えられる。このように、対応する命令が実行パイプライン４内でキルされない限り、例外要求信号は、任意のステージで回路３５へ入り、フリップフロップ３６Ｄへ伝播することができる。この場合には、例外要求が上書きされ、回路３５から取り除かれる。
【００２０】
フリップフロップ３６Ｄの出力は、再び、ライト・バック・ステージの間にストールされずキルされないという資格を与えられる。回路３５の出力は、例外ハンドラ８によって受け取られるｅｘｃｅｐｔｉｏｎ＿ｒｅｑ信号１９である。これに応答して、例外ハンドラ８は、図３の例外パイプライン５によって提供される現在の例外コード１６に基づいて、対応する例外処理ソフトウェア・ルーチンを呼び出す。
【００２１】
図４には図示されていないが、入力例外信号は、例外が「有効な」命令、つまりプロセッサ２の命令セットによってサポートされる命令、に関係していることを保証する命令有効信号の資格を予め有する。しかしながら、他の例外信号とは異なり、フェッチ例外信号は有効な命令信号の資格を与えられない。これは、有効な命令がフェッチされるかどうかにかかわらず、ＩＦステージ中に発生する例外が正確に処理されることを保証する。しかしながら、実行パイプライン４を通って伝播する対応する命令は、無効の命令としてマークされる。
【００２２】
本発明の多様な実施例が記述された。例えば、例外要求を伝播するために例外パイプラインを有するプロセッサが記述された。プロセッサは、汎用計算機システム、ディジタル処理システム、ラップトップ・コンピュータ、パーソナル・デジタル情報処理端末（ＰＤＡ）および携帯電話を含む多種多様のシステムで実行することができる。そのようなシステムでは、プロセッサは、オペレーティング・システムおよび他のソフトウェア・アプリケーションを格納することができるフラッシュ・メモリ・デバイスまたはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなメモリ・デバイスに結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図１】本発明の実施例に従って形成されたプログラム可能なプロセッサの一例を図示するブロック図である。
【図２】プログラム可能なプロセッサの実行パイプラインの一例を図示するブロック図である。
【図３】本発明の実施例に従った例外パイプラインの回路図である。
【図４】本発明の実施例に従った例外パイプラインの別の回路図である。
【図１】
2004516546.tif 000003
【図２】
2004516546.tif 000004
【図３】
2004516546.tif 000005
【図４】
2004516546.tif 000006
【国際公開パンフレット】
2004516546.tif 000007
2004516546.tif 000008
2004516546.tif 000009
2004516546.tif 000010
2004516546.tif 000011
2004516546.tif 000012
2004516546.tif 000013
2004516546.tif 000014
2004516546.tif 000015
2004516546.tif 000016
2004516546.tif 000017
2004516546.tif 000018
2004516546.tif 000019
2004516546.tif 000020
2004516546.tif 000021
2004516546.tif 000022
2004516546.tif 000023
2004516546.tif 000024
2004516546.tif 000025
2004516546.tif 000026
2004516546.tif 000027
【国際公開パンフレット（コレクトバージョン）】
2004516546.tif 000028
【国際調査報告】
2004516546.tif 000029
2004516546.tif 000030
2004516546.tif 000031