(57)【要約】【課題】割り込みをタイプ別に計数する方法、装置、システム、および命令を備えたコンピュータ・プログラムを提供すること。【解決手段】特定タイプの割り込みが発生すると、割り込みの回数がインクリメントされる。回数は、ＩＤＴ（割り込みディスクリプタ・テーブル）、またはＩＤＴの外部の割り込み回数テーブル（ＩＣＴ）に記憶することができる。割り込みユニットは、特定タイプの割り込みが発生するたびに回数をインクリメントする。回数のオーバーフローが発生する可能性がある場合、本発明の機構は、オーバーフローに対処するために、ソフトウェアに通知するのに必要なロジックを提供することもできる。【選択図】図５
2005202964.tif 000002
【特許請求の範囲】
【請求項１】
割り込みユニットを備えるデータ処理システムであって、
割り込みユニットは、割り込みを開始するための信号を受け取り、
割り込みユニットは、割り込みの発生をタイプ別に計数する
データ処理システム。
【請求項２】
ある割り込みタイプの回数値は、割り込みディスクリプタ・テーブル（ＩＤＴ）のエントリに記憶される請求項１に記載のデータ処理システム。
【請求項３】
ある割り込みタイプの回数値は、割り込み回数テーブル（ＩＤＴ）のエントリに記憶される請求項１に記載のデータ処理システム。
【請求項４】
割り込みディスクリプタ・テーブル中の回数オフセットは、割り込みのタイプに対応する請求項２に記載のデータ処理システム。
【請求項５】
割り込みディスクリプタ・テーブル中の回数オフセットを使用して、割り込み回数テーブル中の、当該割り込みタイプの回数値に対応するオフセット・アドレスを得る請求項４に記載のデータ処理システム。
【請求項６】
割り込み回数テーブルのメモリ・アドレスへのポインタを有するレジスタ
をさらに備える請求項３又は５に記載のデータ処理システム。
【請求項７】
割り込みの発生をタイプ別に計数するハードウェア・カウンタをさらに備える請求項１〜６の何れかに記載のデータ処理システム。
【請求項８】
割り込みのタイプには、ＴＬＢ（変換ルックアサイド・バッファ）の障害およびＶＨＰＴ（仮想ハッシュ・ページ・テーブル）命令の障害が含まれる請求項１〜７の何れかに記載のデータ処理システム。
【請求項９】
回数がオーバーフローしそうになるとオーバーフロー信号が送信される請求項１〜８の何れかに記載のデータ処理システム。
【請求項１０】
割り込みユニットで、プロセッサで割り込みを開始するための割り込み信号を受け取るステップと、
割り込み信号を受け取るのに応答して、当該割り込み信号に関連付けられた割り込みのタイプに基づいて第１のカウンタをインクリメントするステップとを備え、
第１のカウンタは複数のカウンタの１つであり、
複数のカウンタは、割り込みの発生をタイプ別に計数する
情報処理システムで命令を実行する方法。
【請求項１１】
第１のカウンタの回数値は、割り込みディスクリプタ・テーブルのエントリに記憶される請求項１０に記載の方法。
【請求項１２】
１つの割り込みタイプの回数値は、割り込み回数テーブルのエントリに記憶される請求項１０に記載の方法。
【請求項１３】
割り込みディスクリプタ・テーブルの回数オフセットは、割り込みのタイプに対応する請求項１１に記載の方法。
【請求項１４】
割り込みディスクリプタ・テーブル中の回数オフセットを使用して、割り込み回数テーブル中の、当該割り込みタイプの回数値に対応するオフセット・アドレスを得る請求項１３に記載の方法。
【請求項１５】
割り込み回数テーブルのメモリ・アドレスへのポインタを有するレジスタをさらに備える請求項１２に記載の方法。
【請求項１６】
複数のカウンタはハードウェア・カウンタである請求項１０に記載の方法。
【請求項１７】
割り込みのタイプには、ＴＬＢ（変換ルックアサイド・バッファ）の障害およびＶＨＰＴ（仮想ハッシュ・ページ・テーブル）命令の障害が含まれる請求項１０に記載の方法。
【請求項１８】
回数がオーバーフローしそうになるとオーバーフロー信号が送信される請求項１０に記載の方法。
【請求項１９】
割り込みユニットからプロセッサ中で割り込みを開始するための割り込み信号を受け取る第１の命令と、
割り込み信号を受け取るのに応答して、当該割り込み信号に関連付けられた第１のカウンタをインクリメントする第２の命令とを備え、
第１のカウンタは複数のカウンタの１つであり、
複数のカウンタは、割り込みの発生をタイプ別に計数する
コンピュータ可読のコンピュータ・プログラム。
【請求項２０】
１つの割り込みタイプの回数値は、割り込みディスクリプタ・テーブルのエントリに記憶される請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
１つの割り込みタイプの回数値は、割り込み回数テーブルのエントリに記憶される請求項１９に記載のコンピュータ・プログラム。
【請求項２２】
割り込みディスクリプタ・テーブルの回数オフセットは、割り込みのタイプに対応する請求項２０に記載のコンピュータ・プログラム。
【請求項２３】
割り込みディスクリプタ・テーブル中の回数オフセットを使用して、割り込み回数テーブル中の、当該割り込みタイプの回数値に対応するオフセット・アドレスを得る請求項２２に記載のコンピュータ・プログラム。
【請求項２４】
割り込み回数テーブルのメモリ・アドレスへのポインタを有するレジスタをさらに備える請求項２１に記載のコンピュータ・プログラム。
【請求項２５】
複数のカウンタはハードウェア・カウンタである請求項１９に記載のコンピュータ・プログラム。
【請求項２６】
割り込みのタイプには、ＴＬＢ（変換ルックアサイド・バッファ）の障害およびＶＨＰＴ（仮想ハッシュ・ページ・テーブル）命令の障害が含まれる請求項１９に記載のコンピュータ・プログラム。
【請求項２７】
回数がオーバーフローしそうになるとオーバーフロー信号が送信される請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、改良されたデータ処理システムに関し、詳細には、割り込み（interrupt）が発生した時にデータ処理システム中のプロセッサの動作効率を監視する方法、システムおよびプログラムに関する。さらに詳細には、本発明は、割り込みをタイプ別に計数（count）するための方法、装置、システムおよび命令を備えたコンピュータに関する。
【背景技術】
【０００２】
本発明は、以下の出願の関連出願である。
２００３年９月３０日出願の出願番号１０／６７５７７７、出願人整理番号ＡＵＳ９２００３０４７７ＵＳ１の「Method and Apparatus for Counting Instruction Execution and DataAccesses」；
２００３年９月３０日出願の出願番号１０／６７４６０４、出願人整理番号ＡＵＳ９２００３０４７８ＵＳ１「Method and Apparatus for Selectively Counting Instructions and DataAccesses」；
２００３年９月３０日出願の出願番号１０／６７５８３１、出願人整理番号ＡＵＳ９２００３０４７９ＵＳ１「Method and Apparatus for Generating Interrupts Upon Execution ofMarked Instructions and Upon Access to Marked Memory Locations」；
２００３年９月３０日出願の出願番号１０／６７５７７８、出願人整理番号ＡＵＳ９２００３０４８０ＵＳ１「Method and Apparatus for Counting Data Accesses and InstructionExecutions that Exceed a Threshold」；
２００３年９月３０日出願の出願番号１０／６７５７７６、出願人整理番号ＡＵＳ９２００３０４８１ＵＳ１「Method and Apparatus for Counting Execution of Specific Instructionsand Accesses to Specific Data Locations」；
２００３年９月３０日出願の出願番号１０／６７５７５１、出願人整理番号ＡＵＳ９２００３０４８２ＵＳ１「Method and Apparatus for Debug Support for Individual Instructionsand Memory Locations」；
２００３年９月３０日出願の出願番号１０／６７５７２１、出願人整理番号ＡＵＳ９２００３０４８３ＵＳ１「Method and Apparatus to Autonomically Select Instructions forSelective Counting」；
２００３年９月３０日出願の出願番号１０／６７４６４２、出願人整理番号ＡＵＳ９２００３０４８４ＵＳ１「Method and Apparatus to Autonomically Count Instruction Executionfor Applications」；
２００３年９月３０日出願の出願番号１０／６７４６０６、出願人整理番号ＡＵＳ９２００３０４８５ＵＳ１「Method and Apparatus to Autonomically Take an Exception on SpecifiedInstructions」；
２００３年９月３０日出願の出願番号１０／６７５７８３、出願人整理番号ＡＵＳ９２００３０４８６ＵＳ１「Method and Apparatus to Autonomically Profile Applications」；
２００３年９月３０日出願の出願番号１０／６７５８７２、出願人整理番号ＡＵＳ９２００３０４８７ＵＳ１「Method and Apparatus for Counting Instruction and Memory LocationRanges」；
２００４年１月１４日出願の出願番号１０／７５７１８６、出願人整理番号ＡＵＳ９２００３０５４０ＵＳ１の「Method and Apparatus for Qualifying Collection of PerformanceMonitoring Events by Types of Interrupt When Interrupt Occurs」；
および、２００４年１月１４日出願の出願番号１０／７５７１９２、出願人整理番号ＡＵＳ９２００３０５４３ＵＳ１の「Method and Apparatus for Providing Pre and Post Handlers forRecording Events」。これらの関連出願はすべて本願と同一の譲受人に譲渡され、本明細書との関係で参照される。
【０００３】
一般的なデータ処理システムは、メイン・メモリから特定のキャラクタを読み出すなどの特定のタスクを行うために、プロセッサを利用して命令のセットを実行する。しかし、プロセッサによって実行される必要があるタスクの数が増すにつれて、プロセッサのメモリへのアクセス・パターンの効率とそのようなアクセスの特性が、システムの動作を最適化しようとする技術者にとって重要な要素となる。
【０００４】
現在、従来技術には、キャッシュ・ミス、実行された命令、Ｉ／Ｏデータの転送要求、データ処理システムで所与のプロセスの実行にかかりうる時間など、ソフトウェアによって選択可能な事象の発生を計数することができる機構がある。そのような機構の１つは、パフォーマンス・モニタである。パフォーマンス・モニタは、選択された特性を監視し、特定の時間におけるシステムの状態を判定することにより、システムの分析を助ける。この分析は、命令が実行される際にプロセッサがどのように使用されるかと、データがストアされる際のプロセッサとメイン・メモリとの対話についての情報を提供することができる。また、この分析は、システムで発生した事象から事象の間に経過した時間量に関する詳細を提供することができる。したがって、パフォーマンス・モニタを使用してシステム・パフォーマンスの解析を助けることができる。
【０００５】
しかし、上述のパフォーマンス・モニタは、ハードウェアを使用して特定タイプの割り込みを計数する能力は提供しない。割り込みは、例えばマウスやキーボードなどのデバイスが、事象（イベント）が発生したことをプロセッサに知らせる割り込み信号を生成した時に発生する。プロセッサが割り込み要求を受け付けると、プロセッサはその現在の命令を完了し、割り込みハンドラに制御を渡す。割り込みハンドラは、その割り込みに関連付けられた割り込みサービス・ルーチンを実行する。割り込みは、例えばMotorola社の製品であるＭｏｔｏｒｏｌａ６８０００のＴＲＡＰなど特定のマシン言語の動作コードによって生じる場合もある。この場合、例えばゼロで割るなどの予想されていないソフトウェア条件が発生すると、プロセッサが現在の状態を記憶し、その特定の割り込みについての識別情報を記憶し、その予想されないソフトウェア条件に対処する割り込みハンドラに制御を渡す。
【特許文献１】米国特許出願１０／６７５７７７
【特許文献２】米国特許出願１０／６７４６０４
【特許文献３】米国特許出願１０／６７５８３１
【特許文献４】米国特許出願１０／６７５７７８
【特許文献５】米国特許出願１０／６７５７７６
【特許文献６】米国特許出願１０／６７５７５１
【特許文献７】米国特許出願１０／６７５７２１
【特許文献８】米国特許出願１０／６７４６４２
【特許文献９】米国特許出願１０／６７４６０６
【特許文献１０】米国特許出願１０／６７５７８３
【特許文献１１】米国特許出願１０／６７５８７２
【特許文献１２】米国特許出願１０／７５７１８６
【特許文献１３】米国特許出願１０／７５７１９２
【発明の開示】
【発明が解決しようとする課題】
【０００６】
割り込みディスクリプタ・テーブル（ＩＤＴ）は、各割り込みを、対応する割り込みサービス・ルーチンを含んだ対応する割り込みハンドラに関連付けるシステム・テーブルである。上述のパフォーマンス・モニタは、割り込みをタイプ別に計数するハードウェアのサポートも提供しない。割り込みをタイプ別に計数し、その数をＩＤＴまたはＩＤＴの外部の割り込み回数テーブル（ＩＣＴ）中に記憶する、改良された方法、装置、および命令を備えたコンピュータを備えると有利であると思われる。また、ソフトウェアによって選択可能なパフォーマンス・モニタの代わりにハードウェアを使用した、タイプ別の割り込みの計数をサポートする改良された方法を有すると有利であると思われる。
【課題を解決するための手段】
【０００７】
本発明は、割り込みをタイプごとに計数する方法、装置、および命令を備えたコンピュータを提供する。本発明の機構は、ハードウェア・カウンタを用いて割り込みを計数し、割り込みをタイプごとに識別する割り込みユニットを含む。割り込みの回数は、割り込みディスクリプタ・テーブル（ＩＤＴ）内の場所か、またはＩＤＴの外部の割り込み回数テーブル（ＩＣＴ）に記憶することができる。回数がＩＤＴに記憶される場合は、その記憶場所が割り込みのタイプに関連付けられ、そのため、本発明の割り込みユニットとそれに関連付けられた対応ソフトウェアは、回数が記憶されたＩＤＴ内の場所の知識を有する。あるいは、回数が割り込み回数テーブル（ＩＣＴ）などＩＤＴの外部に記憶される場合は、割り込みユニットは、レジスタに記憶されたＩＣＴのアドレスと、割り込みタイプを使用して、回数をインクリメントすべき場所を判断する。
【０００８】
本発明は、回数のオーバーフローが発生するかどうかを検出するのに必要なロジックも提供する。回数のオーバーフローが発生する場合、本発明の機構では、対応ソフトウェアにオーバーフローを処理させる。特定の割り込みタイプについて回数が記録されると、対応ソフトウェアは、回数値を読み取り、リセットし、ユーザは、動作効率の分析のために後にその結果を収集することができる。
【０００９】
本発明の特徴と考えられる新規の特徴が頭記の特許請求の範囲に示される。ただし、本発明自体とその好ましい使用形態、さらなる目的と利点は、添付図面と併せて以下の例示的実施形態の詳細な説明を参照することにより最もよく理解されよう。
【発明を実施するための最良の形態】
【００１０】
本発明は、割り込みをタイプ別に計数する方法、装置、およびコンピュータ命令を提供する。本発明の割り込みをタイプ別に計数する機構は、割り込みユニットを使用して実施されることが好ましい。割り込みの数は、特定タイプの割り込みが発生するとインクリメントされる。割り込みの数は、割り込みディスクリプタ・テーブル（ＩＤＴ）か、またはＩＤＴの外部の割り込み回数テーブル（ＩＣＴ）に記憶することができる。
【００１１】
次いで図１を参照すると、本発明を実施することが可能なデータ処理システムの例示的ブロック図を示す。クライアント１００は、コンピュータの一例であり、この中に、本発明のプロセスを実施するコードまたは命令を配置することができる。クライアント１００は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ローカル・バス・アーキテクチャを用いる。図の例ではＰＣＩバスを用いるが、ＡＧＰ（アクセラレーテッド・グラフィック・ポート：エージーピーとも呼ばれる）やＩＳＡ（インダストリ・スタンダード・アーキテクチャ）などの他のバス・アーキテクチャを使用してもよい。プロセッサ１０２およびメイン・メモリ１０４が、ＰＣＩブリッジ１０８を通じてＰＣＩローカル・バス１０６に接続される。ＰＣＩブリッジ１０８は、プロセッサ１０２のための内蔵メモリ・コントローラとキャッシュ・メモリも含むことができる。ＰＣＩローカル・バス１０６への追加的な接続は、直接コンポーネント相互接続あるいはアドイン・ボードを通じて行うことができる。図の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ１１０、ＳＣＳＩ（スモール・コンピュータ・システム・インタフェース）ホスト・バス・アダプタ１１２、および拡張バス・インタフェース１１４が、直接コンポーネント接続によりＰＣＩローカル・バス１０６に接続される。これに対して、オーディオ・アダプタ１１６、グラフィック・アダプタ１１８、およびオーディオ／ビデオ・アダプタ１１９は、拡張スロットに挿入されたアドイン・ボードによりＰＣＩローカル・バス１０６に接続される。拡張バス・インタフェース１１４は、キーボードおよびマウス・アダプタ１２０、モデム１２２、および追加的メモリ１２４の接続を提供する。ＳＣＳＩホスト・バス・アダプタ１１２は、ハード・ディスク・ドライブ１２６、テープ・ドライブ１２８、およびＣＤ−ＲＯＭドライブ１３０の接続を提供する。一般的なＰＣＩローカル・バスの実装は、３つまたは４つのＰＣＩ拡張スロットまたはアドイン・コネクタをサポートする。
【００１２】
オペレーティング・システムがプロセッサ１０２で実行され、図１のデータ処理システム１００中の各種コンポーネントを調整し、それらコンポーネントの制御を提供するために使用される。オペレーティング・システムは、マイクロソフト社から入手可能なＷｉｎｄｏｗｓ（Microsoft Corporationの米国その他の国における登録商標）ＸＰなどの市販のオペレーティング・システムでよい。Ｊａｖａ（SunMicrosystems, Inc.の米国その他の国における登録商標）などのオブジェクト指向プログラミング・システムがオペレーティング・システムと併せて実行されることができ、クライアント１００で実行されるＪａｖａプログラムまたはアプリケーションからオペレーティング・システムへの呼び出しを提供する。オペレーティング・システムに対する命令、オブジェクト指向のプログラミング・システム、およびアプリケーションあるいはプログラムは、ハード・ディスク・ドライブ１２６などの記憶装置に置かれ、プロセッサ１０２による実行のためにメイン・メモリ１０４にロードすることができる。
【００１３】
当業者は、図１のハードウェアは、実装に応じて異なってよいことを理解されよう。フラッシュ読み取り専用メモリ（ＲＯＭ）、同等の不揮発性メモリ、あるいは光ディスク・ドライブなどの他の内部ハードウェアあるいは周辺装置を、図１に示すハードウェアに加えて、またはそれらに代えて使用することができる。また、本発明のプロセスは、マイクロプロセッサを利用したデータ処理システムに適用することができる。
【００１４】
例えば、クライアント１００は、任意でネットワーク・コンピュータとして構成された場合は、ＳＣＳＩホスト・バス・アダプタ１１２、ハード・ディスク・ドライブ１２６、テープ・ドライブ１２８、およびＣＤ−ＲＯＭ１３０を含まない場合がある。その場合、コンピュータ、正しくはクライアント・コンピュータは、ＬＡＮアダプタ１１０、モデム１２２などの何らかのタイプのネットワーク通信インタフェースを含む。別の例として、クライアント１００は、何らかのタイプのネットワーク通信インタフェースを備えるか否かに関わらず、何らかのタイプのネットワーク通信インタフェースに依拠せずにブートできるように構成されたスタンドアローン・システムであってもよい。さらなる例として、クライアント１００は、オペレーティング・システム・ファイルまたはユーザによって生成されたデータあるいはその両方を記憶する不揮発性の記憶を提供するＲＯＭまたはフラッシュＲＯＭあるいはその両方を備えて構成された携帯情報端末（ＰＤＡ）とすることもできる。図１に示す例と、上述の例は、アーキテクチャの限定を意味するものではない。
【００１５】
本発明のプロセスは、例えばメイン・メモリ１０４、メモリ１２４などのメモリ、または１つまたは複数の周辺装置１２６〜１３０に置くことが可能なコンピュータ実施命令（又はそれを備えたプログラム）を使用して、プロセッサ１０２によって行われる。
【００１６】
次いで図２に、本発明の好ましい実施形態による、情報を処理するプロセッサ・システムの例示的ブロック図を示す。プロセッサ２１０は、図１のプロセッサ１０２と同様に実施することができる。
【００１７】
好ましい実施形態では、プロセッサ２１０は、単一の集積回路からなるスーパースカラ・マイクロプロセッサである。したがって、下記でさらに述べるように、プロセッサ２１０は、各種のユニット、レジスタ、バッファ、メモリ、および他の部分を含み、それらはすべて集積回路から形成される。また、好ましい実施形態では、プロセッサ２１０は、「ＲＩＳＣ」（縮小命令セット・コンピュータ）技術に従って動作する。図２に示すように、システム・バス２１１が、プロセッサ２１０のバス・インタフェース・ユニット（「ＢＩＵ」）２１２に接続される。ＢＩＵ２１２は、プロセッサ２１０とシステム・バス２１１間の情報の転送を制御する。
【００１８】
ＢＩＵ２１２は、プロセッサ２１０の命令キャッシュ２１４とデータ・キャッシュ２１６とに接続される。命令キャッシュ２１４は、シーケンサ・ユニット２１８に命令を出力する。命令キャッシュ２１４からのその命令に応答して、シーケンサ・ユニット２１８は、プロセッサ２１０の他の実行回路に選択的に命令を出力する。
【００１９】
好ましい実施形態では、シーケンサ・ユニット２１８以外に、プロセッサ２１０の実行回路には、複数の実行ユニット、すなわち分岐ユニット２２０、固定小数点ユニットＡ「（ＦＸＵＡ）」２２２、固定小数点ユニットＢ（「ＦＸＵＢ」）２２４、複素数（complex）固定小数点ユニット（「ＣＦＸＵ」）２２６、ロード／ストア・ユニット（「ＬＳＵ」）２２８、および浮動小数点ユニット（「ＦＰＵ」）２３０が含まれる。ＦＸＵＡ２２２、ＦＸＵＢ２２４、ＣＦＸＵ２２６、ＬＳＵ２２８は、汎用アーキテクチャ・レジスタ（「ＧＰＲ」）２３２および固定小数点リネーム・バッファ２３４から、各自のソース・オペランド情報を入力する。さらに、ＦＸＵＡ２２２およびＦＸＵＢ２２４は、キャリー・ビット（「ＣＡ」）レジスタ２３９から「キャリー・ビット」を入力する。ＦＸＵＡ２２２、ＦＸＵＢ２２４、ＣＦＸＵ２２６、ＬＳＵ２２８は、各自の演算の結果（デスティネーション・オペランド情報）を、固定小数点リネーム・バッファ２３４の選択されたエントリに記憶するために出力する。また、ＣＦＸＵ２２６は、特殊目的レジスタ処理ユニット（「ＳＰＲユニット」）２３７との間で、ソース・オペランド情報とデスティネーション・オペランド情報を入出力する。
【００２０】
ＦＰＵ２３０は、浮動小数点アーキテクチャ・レジスタ（「ＦＰＲ」）２３６および浮動小数点リネーム・バッファ２３８から、自身のソース・オペランド情報を入力する。ＦＰＵ２３０は、演算の結果（デスティネーション・オペランド情報）を、浮動小数点リネーム・バッファ２３８の選択されたエントリに記憶するために出力する。
【００２１】
Ｌｏａｄ命令に応答して、ＬＳＵ２２８は、データ・キャッシュ２１６から情報を入力し、その情報をリネーム・バッファ２３４および２３８の選択された方にコピーする。その情報がデータ・キャッシュ２１６に記憶されていない場合、データ・キャッシュ２１６は、（ＢＩＵ２１２とシステム・バス２１１を通じて）、システム・バス２１１に接続されたシステム・メモリ２６０から情報を入力する。さらに、データ・キャッシュ２１６は、データ・キャッシュ２１６の情報を、システム・バス２１１に接続されたシステム・メモリ２６０に（ＢＩＵ２１２およびシステム・バス２１１を通じて）出力することができる。Ｓｔｏｒｅ命令に応答して、ＬＳＵ２２８は、ＧＰＲ２３２とＦＰＲ２３６の選択された方から情報を入力し、その情報をデータ・キャッシュ２１６にコピーする。
【００２２】
シーケンサ・ユニット２１８は、ＧＰＲ２３２およびＦＰＲ２３６との間で情報を入出力する。分岐ユニット２２０は、シーケンサ・ユニット２１８から、プロセッサ２１０の現在の状態を表す命令と信号を入力する。その命令と信号に応答して、分岐ユニット２２０は、プロセッサ２１０によって実行される一連の命令を記憶している適切なメモリ・アドレスを指示する信号を（シーケンサ・ユニット２１８に）出力する。分岐ユニット２２０からのその信号に応答して、シーケンサ・ユニット２１８は、指示された一連の命令を命令キャッシュ２１４から入力する。一連の命令のうち１つまたは複数が命令キャッシュ２１４に記憶されていない場合、命令キャッシュ２１４は、システム・バス２１１に接続されたシステム・メモリ２６０から（ＢＩＵ２１２およびシステム・バス２１１を通じて）その命令を入力する。
【００２３】
命令キャッシュ２１４から入力された命令に応答して、シーケンサ・ユニット２１８は、実行ユニット２２０、２２２、２２４、２２６、２２８、２３０の選択されたものにその命令を選択的にディスパッチする。各実行ユニットは、特定クラスの命令中の１つまたは複数の命令を実行する。例えば、ＦＸＵＡ２２２およびＦＸＵＢ２２４は、加算、減算、ＡＮＤ演算、ＯＲ演算、ＸＯＲ演算など、ソース・オペランドに対して第１のクラスの固定小数点の数学演算を実行する。ＣＦＸＵ２２６は、固定小数点の乗算と除算などソース・オペランドに対して第２のクラスの固定小数点演算を実行する。ＦＰＵ２３０は、浮動小数点の乗算と除算などソース・オペランドに対して浮動小数点演算を実行する。
【００２４】
選択されたリネーム・バッファ２３４に情報が記憶されると、その情報は、選択されたリネーム・バッファが割り当てられた対象の命令によって指定される記憶場所（例えばＧＰＲ２３２あるいはキャリー・ビット（ＣＡ）レジスタ２４２の１つ）に関連付けられる。選択されたリネーム・バッファ２３４に記憶された情報は、シーケンサ・ユニット２１８からの信号に応答して、関連付けられたＧＰＲ２３２（またはＣＡレジスタ２４２）にコピーされる。シーケンサ・ユニット２１８は、その情報を生成した命令を「完了する（completing）」のに応答して、選択されたリネーム・バッファ２３４に記憶された情報のそのようなコピーを指示する。このコピーを「ライトバック（writeback）」と称する。
【００２５】
選択されたリネーム・バッファ２３８に情報が記憶されると、その情報は、ＦＰＲ２３６の１つに関連付けられる。選択されたリネーム・バッファ２３８に記憶された情報は、シーケンサ・ユニット２１８からの信号に応答して、それに関連付けられたＦＰＲ２３６の１つにコピーされる。シーケンサ・ユニット２１８は、その情報を生成した命令を「完了する」のに応答して、選択されたリネーム・バッファ２３８に記憶された情報のそのようなコピーを指示する。
【００２６】
プロセッサ２１０は、実行ユニット２２０、２２２、２２４、２２６、２２８、および２３０のうち各種のユニットで同時に複数の命令を処理することにより、高パフォーマンスを達成する。したがって、各命令は、一連の段階で処理され、それぞれの段階は、他の命令の段階と並行して実行することができる。このような技術を「パイプライン処理（pipelining）」と称する。この例証的実施形態の重要な態様では、命令は、通常、６つの段階、すなわちフェッチ、デコード、ディスパッチ、実行、完了、およびライトバックとして処理される。
【００２７】
フェッチ段階では、シーケンサ・ユニット２１８は、（命令キャッシュ２１４から）上記で分岐ユニット２２０およびシーケンサ・ユニット２１８との関連でさらに述べた一連の命令を記憶する１つまたは複数のメモリ・アドレスにあった１つまたは複数の命令を選択的に入力する。
【００２８】
デコード段階では、シーケンサ・ユニット２１８は、最高で４つのフェッチされた命令をデコードする。
【００２９】
ディスパッチ段階では、シーケンサ・ユニット２１８は、ディスパッチされた命令の結果（デスティネーション・オペランド情報）のためのリネーム・バッファのエントリを確保した後、実行ユニット２２０、２２２、２２４、２２６、２２８、および２３０のうち（デコード段階でのデコードに応答して）選択されたユニットに、最高で４つのデコードされた命令を選択的にディスパッチする。ディスパッチ段階では、ディスパッチされた命令に選択された実行ユニットに、オペランド情報が供給される。プロセッサ２１０は、命令がプログラミングされた順序で命令をディスパッチする。
【００３０】
実行段階で、実行ユニットは、各自のディスパッチされた命令を実行し、その演算の結果（デスティネーション・オペランド情報）を、上記でさらに述べたリネーム・バッファ２３４およびリネーム・バッファ２３８の選択されたエントリに記憶するために出力する。このようにして、プロセッサ２１０は、命令がプログラミングされた順序を外れて命令を実行することができる。
【００３１】
完了段階では、シーケンサ・ユニット２１８は、命令が「完了」したことを知らせる。プロセッサ２１０は、命令がプログラミングされた順序で命令を「完了」する。
【００３２】
ライトバック段階では、シーケンサ２１８は、リネーム・バッファ２３４からＧＰＲ２３２に、および２３８からＦＰＲ２３６に情報のコピーを指示する。シーケンサ・ユニット２１８が、選択されたリネーム・バッファに記憶された情報のそのようなコピーを指示する。同様に、特定の命令のライトバック段階では、プロセッサ２１０は、その特定の命令に応答して自身のアーキテクチャ状態を更新する。プロセッサ２１０は、プログラミングされた順序で命令の個々の「ライトバック」段階を処理する。プロセッサ２１０は、指定された状況では、命令の完了段階とライトバック段階を有利に併合する。
【００３３】
この例証的実施形態では、各命令は、命令処理の各段階を完了するのに１マシン・サイクルを要する。それでも、一部の命令（例えばＣＦＸＵ２２６によって実行される複素数の固定小数点命令）は、２サイクル以上を要する可能性がある。したがって、先行する命令の完了に必要とされる時間の変動に応じて、特定の命令の実行段階から完了段階までの間に可変の遅延が生じる可能性がある。
【００３４】
実行ユニットで実行中の複数の命令の完了を追跡する完了バッファ２４８が、シーケンサ２１８内に提供される。命令または命令の群がアプリケーションによって指定された連続的な順序で正常に完了したことが通知されると、完了バッファ２４８を利用して、完了した命令の結果の、関連付けられた汎用レジスタへの転送を開始することができる。
【００３５】
また、プロセッサ２１０は、命令キャッシュ２１４に接続された割り込みユニット２５０も含む。また、図２には示していないが、割り込みユニット２５０は、プロセッサ２１０内の他の機能ユニットに接続される。割り込みユニット２５０は、他の機能ユニットから信号を受け取り、誤り処理あるいはトラップ処理を開始するなどの動作を開始することができる。それらの例では、割り込みユニット２５０を用いて、プログラムの実行中に生じる可能性のある割り込みおよび例外を生成する。割り込みユニット２５０は、割り込みの発生をタイプ別に計数し、回数値をそれに応じてインクリメントするために用いることもできる。
【００３６】
上述のように、本発明は、割り込みをタイプ別に計数する方法、装置、システム、および命令を備えたコンピュータを提供する。すなわち、本発明は、特定の割り込みタイプが発生した回数を計数する機構を提供する。割り込みのタイプは、例えば、仮想ハッシュ・ページ・テーブル（ＶＨＰＴ）命令の障害や変換ルックアサイド・バッファ（ＴＬＢ）データの障害など、割り込みに関連付けられた特定の割り込みベクトルである。本発明は、例えばいくつかのクロック・サイクルなど定義された期間内に発生する上記の例のような割り込みタイプの回数を計数することを可能にする。また、図２の割り込みユニット２５０などの本発明の割り込みユニットは、従来技術のように計数を行う対応ソフトウェアを用いるのではなく、ハードウェア・カウンタを使用して数をインクリメントする。
【００３７】
次いで図３を参照すると、本発明の好ましい実施形態による、割り込みをタイプ別に計数するコンポーネントを示す例示図を示す。この例示的な実施では、中央演算装置（ＣＰＵ）３２０は、図２のプロセッサ２１０と同様に実施することができる。割り込みが発生すると、ＣＰＵ３０２は、割り込みユニット３０４に信号を送って、割り込みユニット３０４に特定の割り込みタイプについての割り込み信号を生成するように要求する。割り込みユニット３０４は、この信号が生成されると、その割り込みタイプの回数をインクリメントする。結果得られるデータは、記憶し、後に対応ソフトウェアによって収集することができる。
【００３８】
本発明の一実施形態では、本発明のこの機構は、回数を、割り込みディスクリプタ・テーブル（ＩＤＴ）に記憶する。割り込みディスクリプタ・テーブルは、各割り込みを、対応する割り込みサービス・ルーチンを含む対応する割り込みハンドラに関連付けるシステム・テーブルである。特定タイプの割り込みが発生すると、割り込みユニットは、関連付けられた回数をインクリメントする。各ＩＤＴエントリは、回数の記憶域に関連付けられる。記憶域が割り込みのタイプに関連付けられるため、本発明の割り込みユニットとそれに関連付けられた対応ソフトウェアは、回数が記憶されたＩＤＴ内の場所の知識を有する。特定タイプの割り込みが発生した時に割り込みハンドラが割り込みサービス・ルーチンを実行する前に、本発明の割り込みユニットは、ＩＤＴ内の回数のメモリ・アドレスを見つけ、その回数の値をインクリメントする。
【００３９】
次いで図４を参照すると、本発明の好ましい実施形態による、ＩＤＴに記憶された回数によりタイプ別に割り込みを計数するコンポーネントを表す例示的図を示す。この例示的実施では、割り込みディスクリプタ・テーブル（ＩＤＴ）４０２は、オフセット・アドレス４０４とＩＤＴの内容４０６を含む。この例では、各割り込みタイプすなわちＩＤＴエントリの数、ＶＨＰＴデータの障害（fault）回数４０８が、０ｘ００００  ４１０などのオフセット・アドレスとともにＩＤＴ４０２に記憶される。ＶＨＰＴデータの障害コード４１２など、割り込みサービス・ルーチンを含んだ対応するコードも、０ｘ０００８  ４１４にそのコードのオフセット・アドレスとともにＩＤＴ４０２に記憶される。この例では、ＩＤＴに記憶される回数のサイズは８バイトであり、一方、各割り込みタイプについてのコードのサイズは４００バイトである。ただし、各割り込みタイプのコードのサイズは異なる場合がある。したがって、割り込みユニットは、インクリメントすべき、各割り込みタイプについての回数のアドレスをＩＤＴ中で見つけることができる。
【００４０】
本発明の別の実施形態では、数は、ＩＤＴの外部の割り込み回数テーブル（ＩＣＴ）に記憶される。ＩＣＴは、オフセット・アドレスによって参照される各割り込みタイプの回数値を記憶する。ＩＣＴは、初めに対応ソフトウェアによって割り当てられ、プロセッサにＩＣＴのメモリ・アドレスが通知される。ＩＣＴのメモリ・アドレスは、レジスタの使用を通じて参照することができる。特定タイプの割り込みが発生すると、割り込みユニットは、ＩＣＴのメモリ・アドレスに行き、その特定の割り込みタイプについてＩＣＴで回数が記憶されている場所のオフセット・アドレスを調べる。次いで、割り込みユニットは、その記憶域の回数をインクリメントし、プロセッサは、そのタイプの割り込みサービス・ルーチンの処理を続行する。回数がインクリメントされると、対応ソフトウェアは、後に回数値を読み取り、必要な場合は回数をリセットすることができる。
【００４１】
図５を参照すると、本発明の好ましい実施形態による、ＩＤＴの外部に記憶された回数により割り込みをタイプ別に計数するコンポーネントを示す例示的な図が示される。この例示的実施では、割り込みディスクリプタ・テーブル（ＩＤＴ）５０２は、オフセット・アドレス５０４、割り込みタイプ５０６、および回数のオフセット５０８を含む。ＩＤＴ５０２中に表す割り込みのタイプ５０６は、説明のみを目的とする。
【００４２】
ＩＤＴ５０２内で、各割り込みタイプ５０６は、関連付けられた割り込みサービス・ルーチンの開始アドレスを識別するオフセット・アドレス５０４などのオフセット・アドレスに対応している。対応ソフトウェアは、数式５１０などの数式とともにプログラミングされることができる。数式５１０は、回数のオフセット値５０８などの回数オフセット値を受け取り、その値に８をかける。例えば、ＶＨＰＴデータ障害の割り込みは、０の回数のオフセット値を有し、数式５１０は０を８で乗算し、その結果は値０になる。次いでこの結果が、この例のメモリ・アドレス０ｘ４０００に追加されて、その回数のオフセット・アドレスが得られる。メモリ・アドレス０ｘ４０００は、レジスタによって指示されるＩＣＴ５１２のメモリ・アドレスである。この例では、メモリ・アドレス０ｘ４０００に０が追加され、その結果オフセット・アドレス０ｘ４０００  ５１４が得られる。数式５１０と回数のオフセット５０８を使用して、各割り込みタイプすなわちＩＤＴエントリが、回数が記憶された異なるオフセット・アドレスに関連付けられる。そのため、割り込みユニットは、割り込みタイプごとに、数式５１０から計算されたオフセット・アドレスに記憶された数をインクリメントすることができる。
【００４３】
本発明は、回数のオーバーフローに対処する機構も提供する。潜在的なオーバーフローは、回数を記憶するために使用されるビット数がラップしそうになると発生する。本発明のこの機構は、プロセッサ・ステータス・レジスタ（ＰＳＲ）にオーバーフロー・フラグをセットするか、プロセッサに割り込み信号を送ってオーバーフローが生じる可能性があることをプロセッサに通知することにより、ソフトウェアに潜在的なオーバーフローを知らせるのに必要なロジックを提供する。インテル社から入手可能なＩｎｔｅｌ（Intel Corporationの米国その他の国における商標。）６４ビット・プロセッサ・アーキテクチャであるプロセッサ・ステータス・レジスタ（ＰＳＲ）は、現在実行中のプロセスのための制御情報を保持する６４ビット・レジスタである。その結果、オーバーフロー・フラグがセットされるか、オーバーフローの割り込み信号が送られると、対応ソフトウェアは、回数を読み出し、回数値をリセットするなどにより、オーバーフローに適宜対処することができる。
【００４４】
次いで図６を参照すると、本発明の好ましい実施形態による、割り込みをタイプ別に計数する例示的プロセスを概説するフローチャートを示す。このプロセスは、割り込みが発生すると開始し（ステップ６０２）、割り込みユニットは、特定の割り込みタイプのための割り込み信号を生成する（ステップ６０４）。対応ソフトウェアは、必要であれば回数記憶メモリを割り振り（ステップ６０６）、その回数記憶メモリのメモリ・アドレスをＣＰＵに通知する（ステップ６０８）。割り込みユニットは、回数記憶オフセット・アドレスを見つけ（ステップ６１０）、その回数がオーバーフローしそうであるかどうかの判定が行われる（ステップ６１２）。回数がオーバーフローしそうな場合は、オーバーフロー処理ルーチンを呼び出して（ステップ６１４）オーバーフローに対処して、回数を読み取り、リセットし、プロセスはその後終了する。しかし、回数がオーバーフローしそうでない場合は、割り込みユニットは回数をインクリメントし（ステップ６１６）、プロセスはその後終了する。対応ソフトウェアは、後に、回数が読み取られると回数をリセットすることができる。
【００４５】
このように、本発明は、特定の割り込みタイプが発生した回数を計数する機構を提供する。回数は、各割り込みタイプに対応するＩＤＴか、ＩＤＴの外部の割り込み回数テーブルに記憶することができる。対応ソフトウェアと割り込みユニットは、回数が記憶されたメモリ・アドレスの知識を有する。割り込みユニットは、ＩＤＴの中または外部の特定のメモリ・アドレスに記憶された回数を見つけ、回数をインクリメントすることができる。オーバーフローの場合は、オーバーフロー処理ルーチンを呼び出して適宜オーバーフローを処理することができる。
【００４６】
本発明について、完全に機能するデータ処理システムとの関連で説明したが、当業者は、本発明のプロセスは、命令のコンピュータ可読媒体又はコンピュータ・プログラムの形態および各種の形態で配布することが可能であること、および本発明は、配布を実施するために実際に使用される特定のタイプの信号伝達媒体に関係なく等しく適用されることを理解されることに留意することが重要である。コンピュータ可読媒体又はコンピュータ・プログラムの例には、フロッピー・ディスク（登録商標）、ハード・ディスク・ドライブ、テープ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能型の媒体と、例えば無線周波や光波伝送といった伝送形態を使用した、デジタルおよびアナログの通信リンク、有線または無線の通信リンクが含まれる。コンピュータ可読媒体又はコンピュータ・プログラムは、特定のデータ処理システムで実際に使用するためにデコードされる、符号化フォーマットの形をとることができる。
【００４７】
本発明の説明は、例証と説明のために提示され、網羅的なものでも、本発明をここに開示された形態に限定するものでもない。当業者には、多くの変更形態と変形形態が明らかであろう。この実施形態は、本発明の原理と実際的な応用を最もよく説明し、当業者が、企図される特定の使用法に適した各種の変更とともに各種実施形態について本発明を理解できるようにするために選択し、説明した。
【図面の簡単な説明】
【００４８】
【図１】本発明を実施することが可能なデータ処理システムの例示的ブロック図である。
【図２】本発明の好ましい実施形態による、情報を処理するプロセッサ・システムの例示的ブロック図である。
【図３】本発明の好ましい実施形態による、割り込みをタイプ別に計数するコンポーネントを示す例示的図である。
【図４】本発明の好ましい実施形態による、ＩＤＴの外部に記憶された回数により割り込みをタイプ別に計数するコンポーネントを示す例示的図である。
【図５】本発明の好ましい実施形態による、ＩＤＴに記憶された回数により割り込みをタイプ別に計数するコンポーネントを示す例示的図である。
【図６】本発明の好ましい実施形態による、割り込みをタイプ別に計数する例示的プロセスを概説するフローチャートである。
【符号の説明】
【００４９】
１００  クライアント
１０２、２１０  プロセッサ
１０４  メイン・メモリ
１０６  ＰＣＩローカル・バス
１０８  ＰＣＩブリッジ
１１０  ＬＡＮアダプタ
１１２  ＳＣＳＩホスト・バス・アダプタ
１１４  拡張バス・インタフェース
１１６  オーディオ・アダプタ
１１８  グラフィック・アダプタ
１１９  オーディオ／ビデオ・アダプタ
１２０  キーボードおよびマウス・アダプタ
１２２  モデム
１２４  追加的メモリ
１２６  ハード・ディスク・ドライブ
１２８  テープ・ドライブ
１３０  ＣＤ−ＲＯＭドライブ
２１１  システム・バス
２１２  ＢＩＵ
２１４  命令キャッシュ
２１６  データ・キャッシュ
２１８  シーケンサ・ユニット
２２０  分岐ユニット
２２２  固定小数点ユニット
２２４  固定小数点ユニット
２２６  複素数固定小数点ユニット
２２８  ロード／ストア・ユニット
２３０  浮動小数点ユニット
２３２  ＧＰＲ
２３４  リネーム・バッファ
２３６  ＦＰＲ
２３７  ＳＰＲ
２３８  リネーム・バッファ
２３９  ＣＡレジスタ
３０４  割り込みユニット
３２０  ＣＰＵ
【図１】
2005202964.tif 000003
【図２】
2005202964.tif 000004
【図３】
2005202964.tif 000005
【図４】
2005202964.tif 000006
【図５】
2005202964.tif 000007
【図６】
2005202964.tif 000008