(57)【要約】  割込み処理のための技法について説明する。プロセッサ中の命令パイプラインの１つまたは複数のステージにおいて例外状態を検出する。プロセッサが検出された例外状態に応答して割込みを受け付ける前に、検出された例外状態に応答して割込みハンドラの開始アドレスにおける命令の存在について命令キャッシュを検査する。命令を命令キャッシュにロードするために、命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージから割込みベクトルテーブルの開始アドレスにおける命令をプリフェッチし、それにより、プロセッサが検出された例外状態に応答して割込みを受け付ける時間までに、命令が命令キャッシュ中で利用可能になる。【選択図】      図３
2011530741.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ中の命令パイプラインの１つまたは複数のステージにおける命令の実行の失敗に起因する例外状態を検出することと、
前記プロセッサが前記検出された例外状態に応答して割込みを受け付ける前に、前記検出された例外状態に応答して割込みハンドラの開始アドレスにおける命令の存在について命令キャッシュを検査することと、
前記命令を前記命令キャッシュにロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュ以外のストレージから前記割込みハンドラの前記開始アドレスにおける前記命令をプリフェッチすることであって、それにより、前記プロセッサが前記検出された例外状態に応答して前記割込みを受け付ける時間までに、前記命令が前記命令キャッシュ中で利用可能になる、プリフェッチすることと
を備える、割込み処理のための方法。
【請求項２】
前記命令パイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記他の命令を並列に評価することであって、前記他の命令が、前記例外状態が検出された前記命令よりも古い命令である、評価すること
をさらに備える、請求項１に記載の方法。
【請求項３】
前記より古い命令がフォールト指示なしに完了することができると判断されると、前記例外状態に応答して前記割込みを処理することであって、それにより、前記割込みハンドラが実行され、前記プロセッサが通常のプログラムフローに戻る、処理すること
をさらに備える、請求項２に記載の方法。
【請求項４】
前記より古い命令がフォールト指示なしに完了することができないと判断されると、前記検査ステップおよび前記プリフェッチステップを終了すること
をさらに備える、請求項２に記載の方法。
【請求項５】
複数の検出された例外状態の中で前記例外状態に優先順位を付けることと、
前記優先順位を付けられた例外状態に関連付けられた前記割込みハンドラの前記開始アドレスである割込みベクトルアドレスを保持する特殊目的レジスタを選択することと
をさらに備える、請求項１に記載の方法。
【請求項６】
前記選択された特殊目的レジスタからの前記割込みベクトルアドレスをプリフェッチアドレスレジスタに記憶することと、
前記プリフェッチアドレスレジスタに記憶された前記アドレスにおける前記命令をプリフェッチすることと
をさらに備える、請求項５に記載の方法。
【請求項７】
命令キャッシュ中の割込みハンドラの開始アドレスにおける命令の前記存在について検査することが、
前記開始アドレスにおける前記命令キャッシュの連想メモリ部分を読み取ることと、
前記命令キャッシュのランダムアクセスメモリ部分を読み取ることなしに、前記命令が前記命令キャッシュ中に存在するかまたは存在しないかの指示を発生することと
を備える、請求項１に記載の方法。
【請求項８】
割込みベクトルテーブルを利用する割込み処理のための方法であって、前記方法が、
プロセッサ中の命令パイプラインの１つまたは複数のステージにおける例外状態を検出することと、
前記プロセッサが前記検出された例外状態に応答して割込みを受け付ける前に、前記検出された例外状態に応答して割込みベクトルテーブル中に保持された命令の存在について命令キャッシュを検査することと、
前記命令と前記ベクトルテーブルとを前記命令キャッシュにロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュ以外のストレージから前記命令をプリフェッチすること
を備える方法。
【請求項９】
前記命令がプログラムカウンタ相対ブランチ命令であると判断すると、前記検出された例外状態に関連付けられた割込みハンドラのブランチターゲットアドレスを計算することと、
前記ブランチターゲットアドレスにおける割込みハンドラ命令の存在について前記命令キャッシュを検査することと、
前記割込みハンドラ命令を前記命令キャッシュにロードするために、前記割込みハンドラ命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージから前記ブランチターゲットアドレスにおける割込みハンドラ命令をプリフェッチすることであって、それにより、前記プロセッサが前記検出された例外状態に応答して前記割込みを受け付ける時間までに、前記命令が前記命令キャッシュ中で利用可能になる、プリフェッチすることと
をさらに備える、請求項８に記載の方法。
【請求項１０】
前記命令パイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記他の命令を並列に評価することであって、前記他の命令が、前記例外状態が検出された前記命令よりも古い命令である、評価すること
をさらに備える、請求項８に記載の方法。
【請求項１１】
前記より古い命令がフォールト指示なしに完了することができると判断されると、前記例外状態に応答して前記割込みを処理することであって、それにより、前記割込みハンドラが実行され、前記プロセッサが通常のプログラムフローに戻る、処理すること
をさらに備える、請求項１０に記載の方法。
【請求項１２】
前記より古い命令がフォールト指示なしに完了することができないという前記判断時に、前記割込みハンドラ命令が前記命令キャッシュ中に存在することを保証するために前記ステップを終了すること
をさらに備える、請求項１０に記載の方法。
【請求項１３】
複数の検出された例外状態の中で前記例外状態に優先順位を付けることと、
前記優先順位を付けられた例外状態に関連付けられたプログラムカウンタ相対ブランチ命令のアドレスである割込みベクトルテーブルアドレスを保持する特殊目的レジスタを選択すること
をさらに備える、請求項８に記載の方法。
【請求項１４】
前記命令がプログラムカウンタ（ＰＣ）相対ブランチ命令である、請求項１３に記載の方法。
【請求項１５】
前記命令キャッシュ中に前記命令が存在するとき、前記命令を実行することなしに前記命令キャッシュ中の前記命令をフェッチすること
をさらに備える、請求項８に記載の方法。
【請求項１６】
割込み処理論理をもつプロセッサであって、
プロセッサパイプラインの様々なステージにおいて１つまたは複数の例外状態を検出するように動作可能な例外検出論理回路と、
１つまたは複数の検出された例外状態から選択された最高優先順位の検出された例外状態に関する所定の優先順位に基づいて例外ベクトルアドレスを発生するように動作可能な優先順位付け論理回路と、
前記プロセッサが前記検出された例外状態に応答して割込みを受け付ける前に、前記選択された例外状態に応答して前記例外ベクトルアドレスにおける命令の存在について命令キャッシュを検査するように動作可能な第１の論理回路と、
前記命令を前記命令キャッシュ中にロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージに前記例外ベクトルアドレスにおける前記命令をプリフェッチするように動作可能な第２の論理回路であって、それにより、前記プロセッサが前記検出された例外状態に応答して前記割込みを受け付ける時間までに、前記命令が前記命令キャッシュ中で利用可能になる、第２の論理回路と
を備えるプロセッサ。
【請求項１７】
前記例外アドレスにおける前記命令が、前記最高優先順位の検出された例外状態に関連付けられた割込みハンドラの開始アドレスである、請求項１６に記載のプロセッサ。
【請求項１８】
前記例外アドレスにおける前記命令が、前記最高優先順位の検出された例外状態に関連付けられた割込みベクトルテーブル中に保持された命令である、請求項１６に記載のプロセッサ。
【請求項１９】
前記命令がプログラムカウンタ（ＰＣ）相対ブランチ命令であると判断すると、前記最高優先順位の検出された例外状態に関連付けられた割込みハンドラのブランチターゲットアドレスを計算するための第３の論理回路と、
前記ブランチターゲットアドレスにおける割込みハンドラ命令の存在について前記命令キャッシュを検査するための第４の論理回路と、
前記割込みハンドラ命令を前記命令キャッシュにロードするために、前記割込みハンドラ命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージに前記ブランチターゲットアドレスにおける前記割込みハンドラ命令をプリフェッチするための第５の論理回路と
をさらに備える、請求項１８に記載のプロセッサ。
【請求項２０】
前記第３の論理回路が、
前記命令がＰＣ相対ブランチ命令であると判断し、アドレスオフセットを発生するための論理回路を有するブランチ検出およびオフセット発生器と、
前記アドレスオフセットを利用してブランチターゲットアドレスを発生するための加算器と
を備える、請求項１９に記載のプロセッサ。
【請求項２１】
命令キャッシュをさらに備え、前記命令キャッシュが、
複数のプログラム命令を保持するためのランダムアクセスメモリ（ＲＡＭ）部分と、
前記プログラム命令に関連付けられたアドレスを保持するための連想メモリ（ＣＡＭ）部分であって、前記命令キャッシュの前記ＲＡＭ部分を読み取ることなしに、前記アドレスに関連付けられた命令が前記命令キャッシュの前記ＲＡＭ部分中に存在するかまたは存在しないかの指示を発生するためのアドレスを用いてアクセスでき得る、ＣＡＭ部分と
を備える、請求項１６に記載のプロセッサ。
【請求項２２】
前記命令パイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記他の命令を並列に評価するための割込み論理回路であって、前記他の命令が、前記例外状態が検出された前記命令よりも古い命令である、割込み論理回路
をさらに備える、請求項１６に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、プロセッサ命令をプリフェッチするための技法に関し、詳細には、例外状態に基づく推論的（speculative）割込みベクトルプリフェッチに関する。
【背景技術】
【０００２】
セルフォン、ラップトップコンピュータ、個人情報端末（ＰＤＡ）などの多くのポータブル製品は、通信プログラムおよびマルチメディアプログラムなどのプログラムを実行するプロセッサを利用する。そのような製品のための処理システムは、命令とデータとを記憶するためのプロセッサおよびメモリ複合体を含む。大容量メインメモリは、通常、プロセッササイクル時間に比較してアクセス時間が遅い。結果として、メモリ複合体は、従来、キャッシュメモリの容量とパフォーマンスとに基づいて階層中に編成され、最高パフォーマンスおよび最低容量のキャッシュがプロセッサの最も近くに配置される。データキャッシュおよび命令キャッシュは、セパレートまたはユニファイドとするか、あるいはセパレートとユニファイドの組合せとすることができ得る。たとえば、レベル１命令キャッシュおよびレベル１データキャッシュは一般にプロセッサに直接結合されるであろう。一方、レベル２ユニファイドキャッシュはレベル１（Ｌ１）命令キャッシュとレベル１（Ｌ１）データキャッシュとに結合される。さらに、システムメモリは一般にレベル２（Ｌ２）ユニファイドキャッシュに結合される。また、フラッシュメモリ、ハードディスクドライブ、オプティカルドライブなどの外部ストレージへの結合が可能である。
【０００３】
レベル１命令キャッシュは、通常、プロセッサ速度で動作し、レベル２ユニファイドキャッシュは、レベル１キャッシュよりも動作が遅いが、システムメモリよりもアクセス時間が速い。代替メモリ編成には、たとえば、Ｌ１キャッシュとＬ２キャッシュとに加えてレベル３キャッシュを有するメモリ階層が多い。別のメモリ編成は、レベル１キャッシュおよびシステムメモリのみを使用する。
【０００４】
命令キャッシュのメモリ階層が使用できる理由の背後にある原理のうちの１つは、命令はメモリ中の連続的なロケーションからアクセスされる傾向がある、ということである。コードの最も最近使用されたセクションをキャッシュに保持させることによって、プロセッサはより高いパフォーマンスレベルで実行することができ得る。また、プログラムは、ブランチ型命令、呼出し型命令、および復帰型命令を含んでおり、割込みなどの他の非逐次動作をサポートするので、逐次的局所性の原理をコードの比較的短いセクションのためにのみ維持することができ得る。そのような非逐次動作により、命令キャッシュへの命令フェッチがミスし、メモリ容量がより高くアクセス時間がより遅い状態で動作する次に高いメモリレベルに、命令フェッチが適用されることがある。ミスにより、プロセッサは、命令を待つことをストールすることがある。プロセッサパフォーマンスを高く保つために、キャッシュミス率を低くしなければならない。
【０００５】
割込みが生じたとき、割込みイベントが検出される時間と、関連付けられた割込みハンドラのロケーションにおける命令がフェッチされ、実行を開始することができる時間との間には待ち時間がある。待ち時間は、割込みハンドラが命令キャッシュに常駐しないので、割込みハンドラが実行する前に命令を取り出すために冗長なミスおよびフェッチ動作が生じ、それによりプロセッサパフォーマンスが低下することに部分的に起因することがある。待ち時間を低減するための１つのアプローチは、命令キャッシュ中に割込みハンドラをロックすることを含むが、このアプローチは、キャッシュのサイズを効果的に低減し、プロセッサパフォーマンスをさらに低減することがある。
【発明の概要】
【０００６】
本開示は、関連付けられた割込みハンドラがキャッシュされない場合に、割込みイベントが検出される時間と、関連付けられた割込みハンドラ命令が実行のために利用可能である時間との間のメモリアクセス待ち時間をなくすまたは低減することにより、プロセッサパフォーマンスを改善することができることを認識する。そのような目的で、本発明の一実施形態は、割込み処理のための方法を対象とする。以下でより詳細に説明するように、プロセッサ中の命令パイプラインの１つまたは複数のステージにおいて命令の実行の失敗に起因する例外状態を検出する。プロセッサが検出された例外状態に応答して割込みを受け付ける前に、検出された例外状態に応答して割込みハンドラの開始アドレスにおける命令の存在について命令キャッシュを検査する。命令を命令キャッシュにロードするために、命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージから割込みハンドラの開始アドレスにおける命令をプリフェッチし、それにより、プロセッサが検出された例外状態に応答して割込みを受け付ける時間までに、命令が命令キャッシュ中で利用可能になる。
【０００７】
本発明の別の実施形態は、割込みベクトルテーブルを利用する割込み処理のための方法を対象とする。プロセッサ中の命令パイプラインの１つまたは複数のステージにおいて例外状態を検出する。プロセッサが検出された例外状態に応答して割込みを受け付ける前に、検出された例外状態に応答して割込みベクトルテーブル中に保持された命令の存在について命令キャッシュを検査する。命令とベクトルテーブルとを命令キャッシュにロードするために、命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージから命令をプリフェッチする。命令がプログラムカウンタ相対ブランチ命令であると判断すると、検出された例外状態に関連付けられた割込みハンドラのブランチターゲットアドレスを計算する。ブランチターゲットアドレスにおける割込みハンドラ命令の存在について命令キャッシュを検査する。割込みハンドラ命令を命令キャッシュにロードするために、割込みハンドラ命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージからブランチターゲットアドレスにおける割込みハンドラ命令をプリフェッチし、それにより、プロセッサが検出された例外状態に応答して割込みを受け付ける時間までに、命令が命令キャッシュ中で利用可能になる。
【０００８】
本発明の別の実施形態は、割込み処理論理をもつプロセッサを対象とする。プロセッサパイプラインの様々なステージにおいて１つまたは複数の例外状態を検出するために例外検出論理回路が利用される。１つまたは複数の検出された例外状態から選択された最高優先順位の検出された例外状態に関する所定の優先順位に基づいて例外アドレスを発生するために、優先順位付け論理回路が利用される。プロセッサが検出された例外状態に応答して割込みを受け付ける前に、選択された例外状態に応答して例外ベクトルアドレスにおける命令の存在について命令キャッシュを検査するために、第１の論理回路が利用される。命令を命令キャッシュにロードするために、命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージに例外ベクトルアドレスにおける命令をプリフェッチし、それにより、プロセッサが検出された例外状態に応答して割込みを受け付ける時間までに、命令が命令キャッシュ中で利用可能になるために、第２の論理回路が利用される。
【０００９】
本発明の様々な実施形態を例として図示および説明する以下の詳細な説明から、本発明の他の実施形態が当業者には容易に明らかになろう。了解されるように、すべて本発明から逸脱することなく、本発明は他の様々な実施形態が可能であり、そのいくつかの詳細は様々な他の点で変更が可能である。したがって、図面および詳細な説明は、本質的に例示的なものと見なされるべきであり、限定的なものと見なされるべきではない。
【図面の簡単な説明】
【００１０】
【図１】ワイヤレス通信システムを示す図。
【図２】独立した割込みベクトルアドレスを利用する推論的割込みアドレスプリフェッチをサポートする例示的な第１のプロセッサおよびメモリ複合体の第１の機能ブロック図。
【図３】図２の第１の機能ブロック図に基づく推論的割込みプリフェッチのための第１のプロセスを示す第１の流れ図。
【図４】割込みベクトルテーブルから展開された割込みアドレスを利用する推論的割込みアドレスプリフェッチをサポートする例示的な第２のプロセッサおよびメモリ複合体の第２の機能ブロック図。
【図５】図４の第２の機能ブロック図に基づく推論的割込みプリフェッチのための第２のプロセスを示す第２の流れ図。
【図６】例外状態の所定の優先順位に基づいて割込みベクトルアドレスを発生するために好適に使用される例示的な優先順位例外論理回路を示す図。
【発明を実施するための形態】
【００１１】
添付の図面とともに以下に示す詳細な説明は、本発明の様々な例示的な実施形態を説明するものであり、本発明を実施でき得る唯一の実施形態を表すものではない。詳細な説明は、本発明の完全な理解を与えるための具体的な詳細を含む。ただし、本発明はこれらの具体的な詳細なしに実施でき得ることが当業者には明らかであろう。いくつかの例では、本発明の概念を不明瞭にしないように、よく知られている構造および構成要素をブロック図の形式で示す。
【００１２】
本発明の教示による動作に基づいて動作させるための、または本発明の教示による動作を実行するためのコンピュータプログラムコードまたは「プログラムコード」は、Ｃ、Ｃ＋＋、ＪＡＶＡ（登録商標）、Ｓｍａｌｌｔａｌｋ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、ＴＳＱＬ、Ｐｅｒｌなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書くことができ得る。また、ターゲットプロセッサアーキテクチャ用のプログラムはネイティブアセンブラ言語で直接書くことができ得る。ネイティブアセンブラプログラムは機械レベルバイナリ命令の命令ニーモニック表現を使用する。本明細書で使用するプログラムコードまたはコンピュータ可読媒体は、フォーマットがプロセッサによって理解可能であるオブジェクトコードなどの機械言語コードを指す。
【００１３】
図１に、本発明の一実施形態が有利に採用される例示的なワイヤレス通信システム１００を示す。説明のために、図１には、３つのリモートユニット１２０、１３０、および１５０と、２つの基地局１４０とを示してある。一般的なワイヤレス通信システムは、より多くのリモートユニットと基地局とを有することができ得ることが認識されよう。リモートユニット１２０、１３０、および１５０は、以下でさらに説明するように本発明を実施するように適合された構成要素１２５Ａ、１２５Ｂ、および１２５Ｃで表されるようなハードウェア構成要素、ソフトウェア構成要素、またはその両方を含む。図１は、基地局１４０ならびにリモートユニット１２０、１３０、および１５０からの順方向リンク信号１８０と、リモートユニット１２０、１３０、および１５０から基地局１４０への逆方向リンク信号１９０を示す。
【００１４】
図１では、リモートユニット１２０は携帯電話として示され、リモートユニット１３０はポータブルコンピュータとして示され、リモートユニット１５０はワイヤレスローカルループシステム中の固定ロケーションリモートユニットとして示される。例として、リモートユニットは、代替的に、セルフォン、ページャ、ウォーキトーキー、ハンドヘルドパーソナル通信システム（ＰＣＳ）ユニット、個人情報端末などのポータブルデータユニット、またはメータ読取り機器などの固定ロケーションデータユニットとすることができ得る。図１は、本開示の教示によるリモートユニットを示すが、本開示は、これらの例示的な図示のユニットに限定されない。本発明の実施形態は、以下でさらに詳細に説明するレベル１キャッシュおよびレベル２キャッシュなど、メモリ階層の少なくとも２つのレベルをもつプロセッサを有する任意のデバイスにおいて好適に採用でき得る。
【００１５】
キャッシュは、ランダムアクセスメモリ（ＲＡＭ）に結合された連想メモリ（content addressable memory）（ＣＡＭ）を備える。キャッシュは、メモリアドレスをＣＡＭに記憶されたアドレスと比較することによってアクセスされる。メモリアドレスがＣＡＭアドレスに一致する場合、キャッシュは、「ヒット」を示し、さらに、一致したＣＡＭアドレスに対応するＲＡＭ中のロケーションからデータまたは命令のラインを与えることができ得る。メモリアドレスが、ＣＡＭに記憶されたいずれのアドレスとも一致しない場合、キャッシュは「ミス」を示す。ミスは、命令またはデータユニットアクセス上で、キャッシュライン中のどこにでも生じることがある。ミスが生じたとき、キャッシュ中のラインは、一般に、ミスされた命令またはデータを含んでいる新規ラインと置換される。第１のレベルキャッシュ中のミスは、一般に、第１のレベルキャッシュアクセスよりも多い数の処理サイクルを必要とするＬ２キャッシュアクセスをトリガする。Ｌ２キャッシュ中のミスは、さらにより大きい遅延を招くシステムメモリへのアクセスをトリガする。
【００１６】
アドレスがキャッシュ中でヒットするか否かをＣＡＭアドレス比較を使用して判断するためのプロセスは、比較的電力効率が良い。しかしながら、ヒットの場合にキャッシュＲＡＭから命令またはデータを取り出すことは、比較的電力効率が悪い。したがって、プロセッサは、命令キャッシュにおけるプリフェッチ動作を利用して、キャッシュアクセス時に命令を実際に取り出すという電力ペナルティを招くことなしに、所望の命令がキャッシュに記憶されるか否かを確認することができ得る。本明細書で使用する「プリフェッチ」または「プリフェッチ動作」という用語は、キャッシュから命令またはデータを取り出すことなしにヒットまたはミスをもたらす限定されたキャッシュアクセスを指す。プリフェッチ動作は、一般に、キャッシュのＣＡＭのコンテンツにアクセスするが、キャッシュのＲＡＭのコンテンツにはアクセスしない。本明細書で使用する「フェッチ」または「フェッチ動作」という用語は、ヒットまたはミスをもたらし、ヒット時にキャッシュから命令またはデータを取り出すキャッシュアクセスを含むメモリ動作を指す。フェッチ動作はキャッシュのＣＡＭとキャッシュのＲＡＭとにアクセスし、アクセスされた命令は実行の対象となる。
【００１７】
命令プリフェッチは、命令ストリーム処理に基づいて命令キャッシュＣＡＭアドレス比較を実行することを含む。たとえば、キャッシュライン中のどこかに位置する命令にミスが生じたとき、キャッシュラインをフェッチし、次の逐次キャッシュラインをプリフェッチすることができ得る。次のキャッシュラインを常にプリフェッチするこの技法は、次のキャッシュラインが、すぐに必要とされる命令を含んでいるという仮定に基づく。しかしながら、命令の逐次アクセスの局所性原理は、当然、プログラム中のある時点において、たとえば、ブランチ、呼出し、復帰、割込みなどのために機能しない。一例として、例外状態または外部イベントによる割込みは、通常の命令ストリーム処理を停止させ、割込みを引き起こしたイベントに対応する割込みハンドラへのリダイレクションを起こさせる。割込みベクトルテーブルは、割込みイベントと割込みハンドラとの対応を確立するために使用でき得る１つの技法である。キャッシュから割込みベクトルテーブルをフェッチするとき、次のキャッシュラインを常にプリフェッチする従来の技法では、使用されない命令がフェッチされ、したがって、メモリアクセス帯域幅の不要な損失が生じ、電力使用が増加し、プロセッサパフォーマンスが低下する。
【００１８】
フェッチ動作およびプリフェッチ動作に加えて、「推論的割込みプリフェッチ」動作および「実行なし推論的割込みフェッチ」動作を、本発明による命令キャッシュ動作に関して定義する。推論的割込みプリフェッチは、「ヒット」指示時に命令キャッシュから命令を取り出すことなしにヒットまたはミスをもたらす限定されたキャッシュアクセスである。命令の実行の失敗に起因する検出された例外状態に基づいて、命令を推論的にプリフェッチする。命令が関連付けられた割込みを取ることを確認する前に、命令を推論的にプリフェッチする。多くの場合、命令キャッシュライン中に常駐する命令などの複数の命令を推論的にプリフェッチすることができ得ることに留意されたい。本発明による推論的割込みプリフェッチ動作をいつ利用すべきかを判断するためのプロセスについて、以下でさらに詳細に説明する。
【００１９】
実行なし推論的割込みフェッチ動作は、ヒットまたはミスをもたらし、ヒット時に命令キャッシュから命令を取り出し、あるいはミス時に高位レベルメモリから命令を取り出す命令キャッシュアクセスを含むメモリ動作である。推論的フェッチアドレスにおける命令のタイプを判断するために、検出された例外状態に基づいて命令を推論的にフェッチし、命令がＰＣ相対ブランチであると判断された場合、プログラムカウンタからの指定されたオフセットをブランチターゲットアドレスとして計算する。推論的にフェッチされた命令は実行されない。本発明による実行なし推論的割込みフェッチ動作をいつ利用すべきかを判断するためのプロセスについて、以下でさらに詳細に説明する。多くの場合、命令キャッシュライン中に常駐する命令などの複数の命令を実行なしに推論的にフェッチすることができ得ることに留意されたい。
【００２０】
図２は、独立した割込みベクトルアドレスを利用する推論的割込みアドレスプリフェッチをサポートする例示的な第１のプロセッサおよびメモリ複合体２００の第１の機能ブロック図である。第１のプロセッサおよびメモリ複合体２００は、割込み論理回路２０２と、プリフェッチ論理回路２０４と、フェッチ論理回路２０６と、レベル１（Ｌ１）命令キャッシュ（Ｉキャッシュ）２０８と、レベル２キャッシュ（Ｌ２キャッシュ）２１０と、復号論理回路２１２と、命令キュー（ＩＱ）２１４と、実行パイプラインステージ論理回路２１６とを含む。
【００２１】
プリフェッチ論理回路２０４は、マルチプレクサ２１８とプリフェッチアドレスレジスタ２２０とを含む。フェッチ論理回路２０６は、フェッチ１ステージ２２２、フェッチ２ステージ２２３、フェッチ３ステージ２２４などのいくつかのフェッチステージと、例外フェッチアドレスレジスタ２２５などの関連する論理回路と、マルチプレクサ２２６と、逐次アドレスを計算するために使用されるインクリメンタ（Ｉｎｃｒ）２２７とを含む。Ｌ１  Ｉキャッシュ２０８は、連想メモリ（ＣＡＭ）ユニット２０７と、ランダムアクセスメモリ（ＲＡＭ）ユニット２０９と、ＣＡＭユニット２０７へのフェッチアクセスインターフェース２２８と、ヒットまたはミス（Ｈ／Ｍ）信号２２９を発生するためのＣＡＭユニット２０７内部のＨ／Ｍ論理回路と、ＲＡＭユニット２０９に結合され、ヒット時にフェッチされた１つまたは複数の命令を与える命令バス２３０とを含む。フェッチ３ステージ２２４は、プリフェッチアボート信号などの第１の例外状態（ＥｘＣｏｎｄ）Ａ２３１を生成することができ得る。命令キュー（ＩＱ）２１４は、命令をキューイングし、それらを実行パイプラインに配信するために利用され、それぞれ、未定義命令検出信号およびデータアボート信号などの例外状態（ＥｘＣｏｎｄ）Ｂ２３３およびＣ２３５を発生することができ得る。
【００２２】
フェッチ１ステージ２２２は、命令フェッチ動作の第１のステップとして、フェッチアクセスインターフェース２２８を介してＬ１  Ｉキャッシュ２０８のＣＡＭユニット２０７にアクセスするために利用される。フェッチ２ステージ２２３は、命令フェッチ動作の第２のステップとして、Ｌ１  Ｉキャッシュ２０８のＲＡＭユニット２０９にアクセスするために利用される。フェッチ３ステージ２２４は、「ヒット」時にＬ１  Ｉキャッシュ２０８から復帰された命令のラインとして、データを分析し、データを個々の命令に分割するために利用される。フェッチ３ステージ２２４はまた、命令フェッチ動作がミスしたかどうかを処理する。ミスおよびミスのタイプが検出されると、フェッチ３ステージ２２４は、Ｌ２キャッシュ２１０など、Ｌ１  Ｉキャッシュ２０８より上のストレージの高位レベルに要求を送信する。
【００２３】
命令は、復号論理回路２１２において復号され、適切な実行パイプラインに配信するためにキュー論理回路２１４においてキューイングされる。実行パイプラインステージ論理回路２１６は、たとえば、算術動作および関連する命令動作などのパイプラインＡ動作と、メモリアクセス動作および関連する命令動作などのパイプラインＢ動作とから構成される。具体的には、ランダムアクセスメモリ（ＲＡＭ）パイプラインＡステージ２３４は、Ａ動作による汎用レジスタ（ＧＰＲ）ファイルアクセスを指す。実行Ａステージ２３６は、パイプラインＡにディスパッチされた命令を実行し、それぞれスーパバイザコール信号およびモニタコール信号など、それぞれ例外状態（ＥｘＣｏｎｄ）Ｅ２３７およびＦ２３９を生成することができ得る。ＲＡＭパイプラインＢステージ２３８は、Ｂ動作によるＧＰＲファイルアクセスを指す。実行Ｂステージ２４０は、パイプラインＢにディスパッチされた命令を実行し、データアラインメントアボート信号などの例外状態（ＥｘＣｏｎｄ）Ｄ２４１を生成することができ得る。命令は、プロセッサパイプライン中のそれらの相対位置によって例外状態が検出された時間に比較され、したがって、パイプライン中で第１の命令が第２の命令よりも深い場合、第１の命令は第２の命令よりも古いと一般に見なされることに留意されたい。たとえば、そのような比較に影響を及ぼすことがあるパイプラインホールド状況は、割込み論理回路２０２によって考慮される。
【００２４】
割込み論理回路２０２は、様々なパイプラインステージから受け取った例外状態（ＥｘＣｏｎｄ）Ａ〜Ｆ２４３を含む前の命令のステータスを追跡して、前の命令がフォールト（fault）なしに完了することができたかどうかを判断する。たとえば、パイプラインステージに含まれている命令が例外を有することをそのパイプラインステージが報告すると、そのパイプラインステージは、パイプラインフラッシュが発生するまで動作をホールドすることができ得る。割込み論理回路２０２は、例外を報告しているパイプラインステージを調査する。パイプラインイベントの行列内で、より古いコミットされていない命令が現在行列中に存在しないことによって、例外を検出したパイプラインステージが最も古いコミットされていない命令を含んでいるかどうかを判断する。基本的に、割込み論理回路２０２は、図６に関して以下でより詳細に説明するように、存在する例外状態の優先順位付けに基づいて推論的プリフェッチ例外アドレス２４２を与える。割込み論理２０２はまた、パイプライン情報と、存在する例外状態の優先順位付けとの組合せに基づいて、例外フェッチアドレスレジスタ２２５に割込みアドレス２４５を与える。
【００２５】
説明を明快にするために、一般に第１のプロセッサおよびメモリ複合体２００に接続でき得る周辺デバイスおよびシステムメモリは図示していない。第１のプロセッサおよびメモリ複合体２００は、たとえば、命令キャッシュ２０８および２１０に記憶されたプログラムコードを実行するための構成要素１２５Ａ〜Ｃなど、本発明の様々な実施形態において適切に採用でき得る。
【００２６】
プログラムコードを実行するとき、第１のプロセッサおよびメモリ複合体２００は、例外状態２３１、２３３、２３５、２３７、２３９、または２４１など、１つまたは複数の例外状態に遭遇することがある。例外状態が検出されると、それに優先順位を付け、図３に関して以下でさらに詳細に説明するように、推論的プリフェッチ例外アドレス２４２を発生し、プリフェッチ動作の実行において使用する。以下のブロック３０６に示すように、割込みが処理されないという判断が行われる時点に達するまで、例外フェッチアドレスレジスタ２２５のコンテンツは有効でない。一般に、プリフェッチ動作を利用することができ得る第１のプロセッサおよびメモリ複合体２００内には他の状況がある。図２には、そのような状況に対処するために、ソフトウェアベースまたはハードウェアベースとすることができ得る他のプリフェッチタイプのための入力２４４が与えられている。
【００２７】
図３は、図２のシステムのようなシステムを利用する推論的割込みプリフェッチのための第１のプロセス３００を示す第１の流れ図である。第１のプロセス３００はブロック３０２において開始し、第１のプロセッサおよびメモリ複合体２００において例外状態を検出する。決定ブロック３０４において、前の命令がフォールトなしに完了することができたかどうかについて判断を行う。パイプラインの長さおよびパイプライン中の命令のタイプにより、そのような判断は、決定ブロック３０４の「いいえ」レグに従ういくつかのサイクルを必要とすることがある。たとえば、パイプライン中にロード命令があることがあり、指定されたロードに関するデータをフェッチするための動作は、レベル１データキャッシュ中のミス、Ｌ２キャッシュ２１０中のミスを経験することがあり、指定されたデータを取り出すためにシステムメモリにアクセスしなければならないことがある。動作のそのようなシーケンスは、完了するために数百ものサイクルを必要とすることがある。
【００２８】
ロード命令は、上記のようにフォールトなしに実行を完了するか、またはそれ自体が別の例外を生じさせることがある。パイプライン論理回路は、この例のロード命令が、ブロック３０２において最初の例外状態検出を引き起こした命令よりも古い命令であるかどうかを判断する。ロード命令がより古い命令である場合、より古いロード命令は、最初の例外を引き起こした命令を含む、パイプライン中のより新しい命令をフラッシングさせるであろう。決定ブロック３０５において、パイプラインフラッシュ状況が検出されない場合、第１のプロセス３００は決定ブロック３０４に戻る。決定ブロック３０５において、パイプラインフラッシュが検出された場合、第１のプロセス３００はブロック３０７に進む。ブロック３０７において、パイプラインをフラッシングし、第１のプロセス３００はプログラムフローに戻る。
【００２９】
決定ブロック３０４における状態の肯定的判断が行われた後、ブロック３０６において、プロセッサ状態を変更し、割込みハンドラのアドレスをフェッチする処理のために割込みを受け付ける。ブロック３０８において、割込みに関連付けられた割込みハンドラを実行し、割込みハンドラが完了すると、第１のプロセス３００は通常のプログラムフローに戻る。
【００３０】
決定ブロック３０４の判断が行われるのを待つのではなく、ブロック３１０において動作の並列セットが有利には開始することができ得る。ブロック３１０において、検出された例外状態に優先順位を付けることによって割込みハンドラの推論的プリフェッチが開始する。ブロック３１２において、例外状態２３１、２３３、２３５、２３７、２３９、または２４１のうちの１つのタイプなど、例外状態のタイプに基づいて、割込みベクトルアドレスをマルチプレクサ２１８によって選択し、プリフェッチアドレスレジスタ２２０にロードし、推論的プリフェッチ動作を要求する。ブロック３１４において、要求された推論的プリフェッチ動作をマルチプレクサ２２６によって選択し、Ｌ１  Ｉキャッシュ２０８のＣＡＭ部分のみにアクセスすることによって、命令をフェッチすることなしにヒットまたはミス指示を戻すフェッチ１ステージ２２２の動作を開始する。決定ブロック３１６において、「ヒット」を有するフェッチ１ステージ２２２の動作に基づいて、割込みベクトルアドレスにおける命令がＬ１  Ｉキャッシュ２０８中に存在することを示す決定ブロック３１６の「はい」レグは、ブロック３１８に進む。フェッチ１ステージ２２２におけるプリフェッチ動作がミスを戻す場合、決定ブロック３１６はブロック３２０に進んで、Ｌ２キャッシュまたはシステムメモリなど、高位レベルメモリに割込みベクトルアドレスにおける命令を要求する。戻された後、要求された命令を含んでいるキャッシュラインをＬ１  Ｉキャッシュ２０８中に書き込む。様々な例外状態に関する割込みベクトルアドレスは、アーキテクチャ定義に基づく、またはソフトウェアによってプログラム可能な一意のアドレスであることに留意されたい。割込みベクトルアドレスにおける命令をプリフェッチし、Ｌ１  Ｉキャッシュ２０８にロードした後、一般に第１のプロセッサおよびメモリ複合体２００が検出された例外状態に応答して割込みを受け付ける前に、第１のプロセス３００はブロック３１８に進む。ブロック３１８において、割込みハンドラの推論的プリフェッチを終了し、第１のプロセッサおよびメモリ複合体２００は通常のプログラムフローに戻る。
【００３１】
図４は、推論的割込みアドレスプリフェッチをサポートする例示的な第２のプロセッサおよびメモリ複合体４００の第２の機能ブロック図である。このアプローチは、割込みベクトルテーブルに記憶された割込みアドレスを利用する。第２のプロセッサおよびメモリ複合体４００は、割込み論理回路４０２と、プリフェッチ論理回路４０４と、フェッチ論理回路４０６と、命令キャッシュ（Ｉキャッシュ）４０８と、レベル２キャッシュ（Ｌ２キャッシュ）４１０と、復号論理回路４１２と、命令キュー（ＩＱ）４１４と、実行パイプラインステージ論理回路４１６とを含む。
【００３２】
プリフェッチ論理回路４０４は、加算器４１７と、マルチプレクサ４１８と、ブランチ検出およびオフセット発生論理回路４１９と、プリフェッチアドレスレジスタ４２０とを含む。フェッチ論理回路４０６は、フェッチ１ステージ４２２、フェッチ２ステージ４２３、フェッチ３ステージ４２４などのいくつかのフェッチステージと、例外フェッチアドレスレジスタ４２５などの関連する論理回路と、マルチプレクサ４２６と、インクリメンタ（Ｉｎｃｒ）４２７とを含む。Ｉキャッシュ４０８は、フェッチアクセスインターフェース４２８と、ヒットまたはミス（Ｈ／Ｍ）信号４２９を発生するためのＩキャッシュ内部のＨ／Ｍ論理回路と、Ｉキャッシュバス４３０上で「ヒット」時にフェッチされた１つまたは複数の命令を与える、Ｉキャッシュ内部の命令フェッチ関数とを含む。フェッチ３ステージ４２４は、プリフェッチアボート信号などの例外状態（ＥｘＣｏｎｄＡ）出力４３１を生成することができ得る。命令キュー（ＩＱ）４１４は、命令をキューイングし、それらを実行パイプラインに配信するために利用され、それぞれ、未定義命令検出信号およびデータアボート信号などの例外状態（ＥｘＣｏｎｄ）Ｂ出力４３３およびＣ出力４３５を発生することができ得る。
【００３３】
実行パイプラインステージ論理回路４１６は、たとえば、算術動作および関連する命令動作などのパイプラインＡ動作と、メモリアクセス動作および関連する命令動作などのパイプラインＢ動作とから構成される。具体的には、ランダムアクセスメモリ（ＲＡＭ）パイプラインＡステージ４３４は、Ａ動作による汎用レジスタ（ＧＰＲ）ファイルアクセスを指す。実行Ａステージ４３６は、パイプラインＡにディスパッチされた命令を実行し、それぞれ、スーパバイザコール信号およびモニタコール信号など、それぞれ例外状態（ＥｘＣｏｎｄ）Ｅ出力４３７およびＦ出力４３９を生成することができ得る。ＲＡＭパイプラインＢステージ４３８は、Ｂ動作によるＧＰＲファイルアクセスを指す。実行Ｂステージ４４０は、パイプラインＢにディスパッチされた命令を実行し、データアライメントアボート信号などの例外状態（ＥｘＣｏｎｄ）Ｄ出力４４１を生成することができ得る。割込み論理回路４０２は、割込み論理回路２０２と同様の様式で、前の命令がフォールトなしに完了することができたかどうかを判断するために前の命令のステータスを追跡する。
【００３４】
例示および説明を明快にするために、第２のプロセッサおよびメモリ複合体４００に接続でき得る周辺デバイスおよびシステムメモリは図示していない。第２のプロセッサおよびメモリ複合体４００は、たとえば、キャッシュ４０８および４１０に記憶でき得るようなプログラムコードを実行するための構成要素１２５Ａ〜Ｃにおける本発明の様々な実施形態において適切に採用でき得る。
【００３５】
プログラムコードを実行するとき、プロセッサおよびメモリ複合体４００は、例外状態４３１、４３３、４３５、４３７、４３９、または４４１など、１つまたは複数の例外状態に遭遇することがある。例外状態が検出されると、それに優先順位を付け、本発明によれば、図５に関して以下でさらに詳細に説明するように、推論的プリフェッチ例外アドレス４４２を発生し、プリフェッチ動作の実行において使用する。一般に、パフォーマンスを改善するために予想されるキャッシュラインのプリフェッチをトリガするソフトウェアによってなど、プリフェッチ動作を利用することができ得る第２のプロセッサおよびメモリ複合体４００内には他の状況がある。これらの他の状況を他のプリフェッチタイプ４４４によって示す。
【００３６】
図５は、図４の第２の機能ブロック図に基づく推論的割込みプリフェッチのための第２のプロセス５００を示す第２の流れ図である。第２のプロセス５００はブロック５０２において開始し、第２のプロセッサおよびメモリ複合体４００において例外状態を検出する。決定ブロック５０４において、前の命令がフォールトなしに完了することができたかどうかについて判断を行う。パイプラインの長さおよびパイプライン中の命令のタイプにより、そのような判断は、決定ブロック５０４の「いいえ」レグに従ういくつかのサイクルを必要とすることがある。たとえば、パイプライン中にロード命令があることがあり、指定されたロードに関するデータをフェッチするための動作は、レベル１データキャッシュ（図示せず）中のミス、Ｌ２キャッシュ４１０中のミスを経験することがあり、指定されたデータを取り出すためにシステムメモリにアクセスしなければならないことがある。動作のそのようなシーケンスは、完了するために数百ものサイクルを必要とすることがある。決定ブロック５０４の判断が行われた後、ブロック５０６において、プロセッサ状態を変更することと、割込みハンドラのアドレスをフェッチすることとを含む処理のために割込みを受け付ける。ブロック５０８において、割込みに関連付けられた割込みハンドラを実行し、割込みハンドラを完了すると、第２のプロセス５００は通常のプログラムフローに戻る。
【００３７】
決定ブロック５０４の判断が行われるのを待つのではなく、ブロック５１０において動作の並列セットが有利に開始する。ブロック５１０において、ベクトルテーブルの推論的プリフェッチおよび例外状態の優先順位付けによって割込みハンドラの推論的プリフェッチが開始する。ブロック５１２において、例外状態４３１、４３３、４３５、４３７、４３９、または４４１など、例外状態のタイプに基づいて、割込みベクトルテーブルアドレスをマルチプレクサ４１８によって選択し、プリフェッチアドレスレジスタ４２０中にロードし、実行なしフェッチ動作を要求する。たとえば、フェッチ命令動作は、１つまたは複数の命令をＩキャッシュ４０８のＲＡＭから読み取らせるためのフェッチ１ステージ４２２の動作とフェッチ２ステージ４２３の動作とを備える。次いで、特定のフェッチされた命令を復号ステージ４１２にパスして、実行動作を開始するであろう。実行なしフェッチ動作は、Ｉキャッシュ４０８のＲＡＭから１つまたは複数の命令を読み取るためのフェッチ１ステージ４２２の動作と、フェッチ２ステージ４２３の動作とを備える。しかしながら、この実行なしフェッチの場合、復号ステージ４１２に特定のフェッチされた命令をパスしないであろう。そうではなく、特定のフェッチされた命令を調査して、それがＰＣ相対ブランチ命令であるかどうかを判断するであろう。そのようなパイプライン動作は、たとえば、フェッチ動作属性、プリフェッチ動作属性、または実行なしフェッチ動作属性を示す、フェッチ動作の属性を追跡することによって制御でき得る。
【００３８】
ブロック５１４において、要求された実行なしフェッチ動作をマルチプレクサ４２６によって選択し、「ヒット」または「ミス」指示を戻すフェッチ１ステージ４２２の動作を開始する。決定ブロック５１６において、「ヒット」を有するフェッチ１ステージ４２２の動作に基づいて、割込みベクトルテーブルがＩキャッシュ４０８中にあることを示し、例外状態に関連付けられたアドレスにおける命令を戻す決定ブロック５１６の「はい」レグに従い、決定ブロック５１８に到る。ブロック５１４において実行されたフェッチ動作は、フェッチされた命令のタイプを判断するために使用される有利な実行なしフェッチ動作である。フェッチス１テージ４２２における実行なしフェッチ動作がミスを戻す場合、決定ブロック５１６はブロック５２０に進み、高位レベルメモリに、たとえばＬ２キャッシュ４１０に割込みベクトルテーブルのコンテンツを要求する。また、割込みベクトルテーブルのアクセス中に、例外状態に関連付けられたベクトルアドレスにおける命令を含むテーブル内の命令を取得する。特定の例外タイプに関連付けられた割込みベクトルテーブル内のアドレスにおける命令は、一般にＰＣ相対ブランチ命令である。ＰＣ相対ブランチ命令を使用すると、プロセッサアーキテクチャによって指定された限界内で、第２のプロセッサおよびメモリ複合体４００のメモリ空間内のどこにでも、例外状態に関連付けられた割込みハンドラを配置することが可能になる。ベクトルアドレスにおける指示を実行なしに推論的にフェッチし、Ｉキャッシュ４０８にロードした後、第２のプロセス５００は決定ブロック５１８に進む。
【００３９】
決定ブロック５１８において、例外状態に関連付けられたアドレスにおける命令を検査して、それがプログラムカウンタ（ＰＣ）相対ブランチ命令であるかどうかを判断する。そのような判断は、ブランチ検出およびオフセット発生ブロック４１９において行うことができ得る。命令がＰＣ相対ブランチ命令でない場合、第２のプロセス５００はブロック５３２に進む。ブロック５３２において、割込みハンドラの推論的プリフェッチを終了し、第２のプロセッサおよびメモリ複合体４００は通常のプログラムフローに戻る。
【００４０】
決定ブロック５１８に戻ると、命令がＰＣ相対ブランチ命令であった場合、第２のプロセス５００はブロック５２２に進む。ブロック５２２において、加算器４１７内で推論的プリフェッチ例外アドレス４４２にアドレスオフセット値４２１を加算することにより、ブランチターゲットアドレスを計算し、マルチプレクサ４１８のためのブランチターゲットアドレスを発生する。加算器４１７は、この追加の目的のために使用でき得る既存の加算器とすることができ、それにより本発明を実装するためのハードウェア要件を最小限に抑えることができることに留意されたい。ブロック５２４において、マルチプレクサ４１８は、プリフェッチアドレスレジスタ４２０にロードされるべき加算器出力を選択する。ブロック５２６において、ブランチターゲットアドレスにおける命令の推論的プリフェッチをフェッチ１動作４２２において選択する。決定ブロック５２８において、ブランチターゲットアドレスにおける命令がＩキャッシュ４０８中に存在するかどうかについて判断を行う。推論的プリフェッチ動作がヒット指示を戻し、命令がフェッチされない場合、例外状態に関連付けられた割込みハンドラの少なくとも第１の命令がＩキャッシュ４０８中に存在することを示す命令が、ブランチターゲットアドレスに存在するという判断が肯定的である。次いで第２のプロセス５００は、ブロック５３２に進み、通常、第２のプロセッサおよびメモリ複合体４００が検出された例外状態に応答して割込みを受け付ける前に、割込みのハンドラの推論的プリフェッチを終了する。
【００４１】
決定ブロック５２８に戻ると、推論的プリフェッチ動作がミス指示を戻す場合、判断は、ブランチターゲットアドレスにおける命令がＩキャッシュ４０８中に存在しないことを示す。ブロック５３０において、Ｌ２キャッシュまたはシステムメモリなどの高位メモリにブランチターゲットアドレスにおける命令を要求する。ブランチターゲットアドレスにおける命令を含むキャッシュラインがＩキャッシュ４０８にロードされると、第２のプロセス５００はブロック５３２に進み、割込みハンドラの推論的プリフェッチを終了する。
【００４２】
図６に、例外状態の所定の優先順位に基づいて割込みベクトルアドレスを発生するために好適に使用される例示的な優先順位例外論理回路６００を示す。たとえば、例外状態Ｆが最高優先順位となり、Ｆ、Ｅ、Ｄ、Ｃ、Ｂの優先順位で、例外状態Ａが最低優先順位となるように、例外状態Ａ〜Ｆに優先順位を付けることができ得る。優先順位例外論理回路６００は、選択指示６１２〜６１６にそれぞれ応答するマルチプレクサ６０２〜６０６によって示されるセレクタのセットを含む。各例外状態に関連付けられたアドレスは、一般に、プロセッサアーキテクチャによりあらかじめ決定され、それぞれ第１のプロセッサおよびメモリ複合体２００または第２のプロセッサおよびメモリ複合体４００などのプロセッサおよびメモリ複合体により与えられる。例外状態Ａ〜Ｆに関連付けられたアドレスは、たとえば、プロセッサアーキテクチャによって識別される特殊目的レジスタとすることができ得るストレージセル６２０〜６２５にそれぞれ記憶される。例外状態の所定の優先順位に基づく割込みベクトルアドレスは、ストレージセル６３０に記憶される。
【００４３】
選択指示６１２〜６１６は、プロセッサおよびメモリ複合体内の検出論理回路によって設定される。たとえば、例外状態Ｆが検出されたとき、選択指示６１２が有効化される。また、例外状態Ｆが存在する場合、例外状態ＥまたはＦ存在選択指示６１３が有効化され、ストレージセル６２５からの例外状態Ｆに関連付けられたアドレスをマルチプレクサ６０２および６０３を介して例外アドレスストレージセル６３０にパスする。例外状態Ｆが存在しない場合、マルチプレクサ６０２によってストレージセル６２４からの例外状態Ｅに関連付けられたアドレスが選択される。例外状態Ｅが検出された場合、例外状態ＥまたはＦ存在指示６１３が有効化され、ストレージセル６２４からの例外状態Ｅに関連付けられたアドレスをマルチプレクサ６０２および６０３を介して例外アドレスストレージセル６３０にパスする。
【００４４】
例外状態ＥまたはＦのいずれも検出されない場合、次の優先順位例外状態を判断することができ得る。たとえば、例外状態ＡおよびＣは検出されるが、例外状態Ｂ、Ｄ、ＥまたはＦは検出されない場合、選択指示Ｃ存在６１４および選択指示ＢまたはＣ存在６１５が有効化され、マルチプレクサ６０４、６０５、６０６および６０３を介して、ストレージセル６２２からの例外状態Ｃのアドレスを例外アドレスストレージセル６３０にパスすることが可能になる。例外割込みにより例外状態を処理すると、その例外状態のための選択信号は無効化されることに留意されたい。待機中とすることができ得る下位の優先順位例外状態は、例外割込みに関連付けられたパイプラインフラッシュにより消去される。それらの例外状態に関連付けられた命令がパイプラインを通って戻る場合、再び例外状態を検出することができ得る。このような状況では、例外検出は新しい検出状況として扱われるであろう。
【００４５】
本明細書に開示する実施形態に関連して説明する様々な例示的な論理ブロック、モジュール、回路、要素、および／または構成要素は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブルロジック構成要素、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、あるいは本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実施または実行でき得る。汎用プロセッサはマイクロプロセッサとすることができ得るが、代替として、プロセッサは従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンとすることができ得る。プロセッサは、コンピューティング構成要素の組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、あるいは所望のアプリケーションに適した任意の他のそのような構成として実装することもでき得る。
【００４６】
本明細書で開示した実施形態に関して説明した方法は、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその２つの組合せで実施でき得る。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている他の形態の記憶媒体に存在してよい。記憶媒体は、プロセッサが記憶媒体から情報を読むことができ、記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体とすることができ得る。
【００４７】
階層メモリ環境における命令キャッシュのための例示的な実施形態の文脈において本発明を開示するが、上記の説明および以下の特許請求の範囲に合致する当技術分野の通常の技能を有する者によって多種多様な実装形態が採用でき得ることが認識されよう。
【図１】
2011530741.tif 000003
【図２】
2011530741.tif 000004
【図３】
2011530741.tif 000005
【図４】
2011530741.tif 000006
【図５】
2011530741.tif 000007
【図６】
2011530741.tif 000008
【国際調査報告】
2011530741.tif 000009
2011530741.tif 000010
2011530741.tif 000011
2011530741.tif 000012
2011530741.tif 000013