(57)【特許請求の範囲】
【請求項１】
整数ユニットパイプラインと、浮動小数点ユニットパイプラインと、内蔵された命令／データキャッシュと、命令コントロールユニットとを具えたパイプラインプロセッサで、専用のアプリケーションワークロードの実行中にプロセッサの状況を監視する方法において：
前記命令コントロールユニットへの複数個のシーケンシャル命令を発生して、待ち行列に入れるステップを備え；
前記命令コントロールユニットへの複数個のブランチターゲット命令を発生し、待ち行列に入れるステップを備え；
前記パイプラインプロセッサのストールされてないサイクル中に発生された前記シーケンシャル命令およびブランチターゲット命令の合計からなる完了をした命令の数をトレースするステップを備え、このステップには、複数のＰＩＰＥ信号を送出するピンゲートアレイの複数のピンを設け、前記複数のＰＩＰＥ信号には、現在のサイクルで浮動小数点エンジンが進まないためパイプラインプロセッサがストールしたときにアサートされるＰＩＰＥ 4信号と、データメモリリファレンスを単一サイクル中に提供できないためにプロセッサパイプラインがストールしたときにアサートされるＰＩＰＥ 5信号とが少なくとも含まれ、前記複数のピンをロジックアナライザに結合させ、このロジックアナライザ上でＰＩＰＥ信号を記憶することが含まれ；
前記完了をした命令の数をストアするステップを備え；
前記複数のＰＩＰＥ信号に基づいて、ストールされてないサイクルを終わらせてしまうストールについてその原因たる可能性の高い事由を決定するステップを備え；
前記完了をした命令の数について、リストを作成し論理的に組み合わせて、前記専用のアプリケーションワークロードの実行中に、前記プロセッサ状態をサイクル毎に決定するステップを備え；
前記ＰＩＰＥ 4信号および前記ＰＩＰＥ 5信号をＮＯＲ回路で論理的に組み合わせてＣＹＣＬＥ 0信号を形成して、次のクロック信号でラッチ回路にラッチし、そして、前記ＣＹＣＬＥ 0信号および前記複数のＰＩＰＥ信号を用いて、少なくとも、命令の合計数の決定，命令の分類分け，ストールしたプロセッサパイプラインサイクルについて当該ストールの有力な原因事由の決定が行われる
ことを特徴とするプロセッサの状態を監視する方法。
【請求項２】
整数ユニットパイプラインと、浮動小数点ユニットパイプラインと、内蔵された命令／データキャッシュとを具えたパイプラインプロセッサにおける、専用のアプリケーションワークロードを実行中にプロセッサの状況を監視するための監視システムにおいて、
前記パイプラインプロセッサに結合された命令コントロールユニットであって、前記パイプラインプロセッサへの複数のシーケンシャル命令を発生して待ち行列へ入れるとともに、前記パイプラインプロセッサへの複数のブランチターゲット命令を発生して待ち行列化に入れる、命令コントロールユニットを備え；
ＰＩＰＥ信号を送出するピンゲートアレイの複数のピンを備え、前記複数のＰＩＰＥ信号には、現在のサイクルで浮動小数点エンジンが進まないためパイプラインプロセッサがストールしたときにアサートされるＰＩＰＥ 4信号と、データメモリリファレンスを単一サイクル中に提供できないためにプロセッサパイプラインがストールしたときにアサートされるＰＩＰＥ 5信号とが少なくとも含まれ；
前記ピンに結合され前記ＰＩＰＥ信号を記憶するロジックアナライザを備え、それによって、前記パイプラインプロセッサのストールされてないサイクル中に発生された前記シーケンシャル命令およびブランチターゲット命令の合計からなる完了をした命令の数をトレースが行われ；
前記ロジックアナライザにおいて、前記完了をした命令の数がストアされ、前記完了をした命令の数について、リストを作成し論理的に組み合わせて、前記専用のアプリケーションワークロードの実行中に、前記プロセッサ状態をサイクル毎に決定され；
前記ロジックアナライザにおいて、さらに、前記複数のＰＩＰＥ信号に基づいて、ストールされてないサイクルを終わらせてしまうストールについてその原因たる可能性の高い事由が決定され；
前記ＰＩＰＥ 4信号および前記ＰＩＰＥ 5信号がＮＯＲ回路で論理的に組み合わせられてＣＹＣＬＥ 0信号が形成され、次のクロック信号でラッチ回路にラッチされ、そして、前記ＣＹＣＬＥ 0信号および前記複数のＰＩＰＥ信号が用いられて、少なくとも、命令の合計数の決定，命令の分類分け，ストールしたプロセッサパイプラインサイクルについて当該ストールの有力な原因の決定が行われる
ことを特徴とする監視システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、パイプラインプロセッサコンピュータシステムの分野に関するものである。特に、任意のカストマーワークロード環境の下で、プロセッサの状況を監視（モニタ）したり、システムの性能を記述するハードウェア構造に関するものである。
【０００２】
【従来技術】
一般に、最新の高性能コンピュータシステムは、内蔵又は外部のキャッシュメモリを利用して構成され、これによって全体のシステム性能を向上させている。このようなキャッシュ構造を装着したコンピュータシステムでは、単一または独立のキャッシュに存在している命令またはデータによって、外部バスで作動する外部メモリ装置に対するメモリ照会による時間消費の必要性を少なく、または無くすことができる。プロセッサによってアクセスされた時に、このキャッシュの中に命令またはデータがある場合には、外部メモリアクセスサイクルを必要としない。また、一般に、キャッシュシステムは、極めて高速のスタティックランダムアクセスメモリ（ＳＲＡＭ）を利用して実現されているので、全体のプロセッサ実行速度が大幅に改善される。
【０００３】
しかしながら、内蔵されたキャッシュ構成がだんだん大きくなるに従って、これら内蔵キャッシュを含むシングルチッププロセッサ（ＣＰＵ）の動作を監視することが極めて複雑となるために重大な設計変更を余儀なくされるようになる。ここで、単一プロセッサＣＰＵによるキャッシュで実行される最適なコードが存在していたものと仮定すると、そのプロセッサは、その内部キャッシュストアから連続的にコードを実行することができ、相当な期間、サイクル毎の進行が外部に現われずに実行される。このようなケースではシステムのデバッグ作業が極めて難しいものとなる。
【０００４】
更に、システムの性能を向上させるために、多くのコンピュータシステムはパイプライン式のプロセッサ（以下、単に「パイプラインプロセッサ」と称す）によって構成され、ここでは、多数の命令（マルチ命令）を命令の実行中に同時にオーバラップさせることが出来ると共に、この結果として、プロセッサのスループットを向上できるようになる。伝統的には、このパイプラインプロセッサによって処理されるすべての命令およびデータは、同一の早さで処理されるよう所望されていた。従って、ＣＰＵの性能は最も遅いパイプステージ（段階）によって決められている。しかしながら、今日の多くのパイプライン式ＣＰＵは、種々の機能ユニットを独立して、且つそれぞれ独自の早さで処理出来るようになっている。しかし、パイプラインのハザード発生の可能性が増大すると、最新のパイプラインＣＰＵはそのようなハザード発生の可能性を抑制するよう最適化されている。これはパイプラインステージの同期化および命令状態の表形式リストによってそのようなハザードのコードのスケジュール化が実現できるようになる。
【０００５】
また、内蔵されたキャッシュを有するＣＰＵをデバック処理してから、カストマーの仕事場（ワーク位置）にインストールし作動させると、その後、プロセッサの販売業者は、消極的な（控えめな）方法でこのシステムの性能を監視し、表示することを希望するようになる。このカストマーが、この販売業者に対して開示したくないような秘密または専用のソフトウェアを走らせている場合に、特に希望するようになる。一般に、販売業者は、多くの理由のために、カストマーの仕事場（ワーク位置）内にインストールされた自分のシステムを評価することを希望している。１つの主要な理由は、カストマーワークロードや要望に対するシステムの性能を最適化のために、システムの再構成、または、メモリの割当ての変更ができるように、現実の状況の下で専用のソフトウェアを実行している自分のシステムの動作性能ボトルネックを決定したいと言う点にある。更に、システムの評価結果を表にリストにして記憶し、後に用いて、将来の製品設計における同様な設計の制限やボトルネックを克服できると、特に好ましい。更にまた、プロセッサの一次的動作のモニタ（監視）が望まれ、且つ、ターゲットプロセッサの内部キー状態のサイクル毎の情報が利用できることが望まれる。
【０００６】
【発明が解決しようとする課題】
以下の詳細な記載から明らかなように、上述したこれらの目的および所望の結果は、本発明の目的および所望の結果の一部である。これらによって、カストマーの仕事場内におけるコンピュータシステムの性能を決定するために、控え目なハードウェア監視（モニタ）を実現するための新規なアプローチが達成される。パイプライン処理、キャッシュメモリシステムおよびキャッシュ実行に関する更に詳細な説明については、HennessyおよびPatterson共著による「Computer Architecture−A Quantative Approach」1990年発行を参照すること。
【０００７】
【課題を解決するための手段】
本発明による、任意のカストマーワークロードにおけるプロセッサのステート（状態）を消極的にモニタ（監視）すると共に、ボトルネックを特徴付ける方法および装置が開示されている。一実施例によれば、命令キューと命令コントロールユニットが、パイプライン式の中央処理ユニット（ＣＰＵ）内に設けられており、これによってクロックサイクル毎に複数の命令がグループ化されて発行されてオーバラップした実行用に用いられる。また、命令キャッシュおよびデータキャッシュがプロセッサ内部に設置され、ここでは、コアコントローラによって、命令キャッシュに対してプログラムカウンタが発行され、続いて、これによってこの命令が命令キューに与えられる。次に、命令をデコード（復号）すると共に、続くメモリリファレンスのために演算されてアドレス処理される。その後で、データキャッシュによって、必要なデータが命令ユニットへ供給され、パイプライン式整数ユニットのデータパス（データ通路）で実行される。同様に、浮動小数点キューと、浮動小数点コントロールユニットと、浮動小数点レジスタファイルとが存在し、これらがパイプライン式浮動小数点データパスに結合されている。浮動小数点モジュールは、整数コントロールユニットからの命令およびデータキャッシュからのデータを、整数モジュールと類似の形態で受信する。これら整数および浮動小数点ユニットデータパスには、フェッチ、デコード、実行およびライトバックの各ステージが設けられている。
【０００８】
また、一実施例によれば、ＰＩＰＥ信号を送信する10本の追加のデータラインが、これら整数および浮動小数点データパスから、ＣＰＵを支持するピンゲートアレイ上の外部コンタクトピンまで形成されている。これら10本のＰＩＰＥ信号によって、パイプラインプロセッサの実行ステージにおける命令について内部のキー状態の動きに関する情報が以下のように得られる。
【０００９】
１．実行を完了する命令の数の情報。
２．命令が実行されない場合において、キュー(待ち行列)がエンプティ(空)であるかどうかの情報。
３．いずれかの命令がブランチであるかどうかの情報および若し、ブランチである場合に、どのブランチパスが選択されたかの情報（即ち、シーケンシャル命令ストリーム対ターゲット命令ストリームに関する情報）。
４．いずれかの命令がデータメモリリファレンスであるかの情報、および若しデータメモリリファレンスであれば、このメモリリファレンスのデータを同一サイクル内でパイプに供給できるかどうかの情報。
５．いずれかの命令が浮動小数点演算命令であるかの情報、および若し、演算命令であれば、これら命令を同一サイクル内で完了できるかどうかの情報。
６．いずれかの命令が、明らかなシステムコール、または誘発された割り込みや例外であるかの情報。
【００１０】
10個のＰＩＰＥ信号は、追加のピンをロジックアナライザに接続することによって監視することが出来、この結果として外部のハードウェア監視を構成することができる。このような監視動作が、パイプライン命令の実行ステージで起こり、プログラムの第１命令で開始する。10本の追加のデータラインをトレースすることによって、各、ストールフリー（ストールされていない）サイクル中に発生された命令の数および経過したサイクル数を決定できる。更に、ＣＰＵの瞬時の性能および累積性能を、サイクル毎に実行された命令に従って、これら10本のデータラインの所定のラインを論理的に組合わせると共に、続いて、組合わせた信号をシステムクロックでラッチ処理することにより測定できる。これら追加のデータラインの最新状態によって、ターゲットＣＰＵ上で動作するカストマーシステムソフトウェアにおけるボトルネックを決定できると共に、同様に、カストマーソフトウェアを更に、効果的に実行するために、このＣＰＵを最適化する情報を発生することができる。
【００１１】
これら10本の追加のデータラインから得られた分析データおよび統計データには、以下のものが包含される。
１．メモリリファレンスのパーセンテージ、コントロールトランスファ、浮動小数点オペレーションおよび整数演算のデータ。
２．実行した命令グループサイズのヒストグラムデータ。
３．ストール(機能停止)したプロセッサパイプラインサイクルの原因データ。
４．ストール(機能停止)したパイププロセッサパイプラインサイクルに対する持続期間のヒストグラムのデータ。
５．コンテクストスイッチ間の経過時間のヒストグラムデータ。
【００１２】
このように累積され、且つ表にリストされた性能データに基づいて、ＣＰＵ販売業者は、ハードウェアおよび／またはソフトウェアを再構成することができ、これによって、カストマーワークロードのニーズに対してより正確に合致することができ、これは、カストマーの実際の作業環境の下で作動するカストマーソフトウェアの決定に基づいて行われる。
【００１３】
【実施例】
以下図面を参照しながら、本発明の一実施例のグループ化された命令を実行するパイプラインプロセッサの処理状態を監視する方法／装置およびこのプロセッサにおけるボトルネックの特性を表す方法／装置を詳述する。また、以下に示した目的の説明において特別な数値、材料および形状は本発明を理解するために与えられたものである。しかし、本発明はこれら特別な詳細なデータを用いずに実現できることは、当業者にとって明らかである。例えば他の例において、周知のシステムが簡易なブロックダイヤグラム形態で図示されており、これは本発明を不必要に不明確に表さないためである。
【００１４】
図１は本発明の趣旨を包含した典型的なパイプラインプロセッサを表す機能ブロック線図である。図示したパイプラインプロセッサ10は、プログラムカウンタ12、命令キュー14および命令コントロールユニット16を有している。これらプログラムカウンタ12、命令キュー14および命令コントロールユニット16を相互に結合する。これらユニット12、14、16は協動して、クロックサイクル毎に、最大で３つの命令を同時に発生する。
【００１５】
プログラムカウンタ12は、命令コントロールユニット16と協動する方法は除いて、多くのパイプラインプロセッサ中で見られるプログラムカウンタの広範なカテゴリに属する。これの基本的な機能および構成は周知であり、またこれ以上説明しない。命令キュー14、命令コントロールユニット16、これらユニットが協動する方法およびプログラムカウンタ12については、同日に米国に出願された米国特許出願第８７５３５３号（米国特許第５５０９１３０号）に詳述されている。
【００１６】
本発明を容易に理解できるように、本発明を代表的なプロセッサ10に基づいて説明する。プロセッサ10のプログラムカウンタ12、命令キュー14、および命令コントロールユニット16は協動して、１クロックサイクル当たり、最大３個の命令を同時に発生する。しかしながら、この代わりに、以下の説明に基づいて、これらのエレメントが協動して１クロックサイクルに対して最大でｍ個の命令を同時に発生することも可能であり、この場合、その他の相補的な設計思想のすべてはそれに合わせて調整する。更にまた、比較的小さな数であるが、この数「ｍ」を選択するにあたって、実行性能のゲインの増加に対する命令グループを決定するために必要な時間及び実行の複雑性の増加とが相殺関係となることは周知である。しかしながら、命令グループを決定するのに必要な時間と実行の複雑性とは、数値ｍの増加に非直線的な方法で増大すると共に、ある点においては、命令グループを決定するために必要な時間および／または実行の複雑性は、命令の実行時間における節約より重要なものとなる。
【００１７】
図１に戻って、パイプラインプロセッサ10は、更に、整数ユニットレジスタファイル18と整数機能ユニット20とを有する。整数ユニットレジスタファイル18を命令コントロールユニット16に接続すると共に、整数機能ユニット20に接続し、次に、これをプログラムカウンタおよびプロセッサ状態レジスタファイル12に接続する。これら整数ユニットレジスタファイル18と整数機能ユニット20とが協動することによって、最大でもクロックサイクル毎に２つの整数結果を発生する。整数ユニットレジスタファイル18には４つの独立のレジスタポートが設けられている。タイムマルチフレックスモードの場合に、これら４つの独立のレジスタポートによって、６つのリード（読取り）ポートと２つのライト（書込み）ポートと等価なキャパシティが得られ、これらは２つのアドレスレジスタの同時読取りまたは、４つのデータの同時読取り、またはいずれか２つのレジスタの同時書込みをサポートするのに十分なものである。整数ユニットレジスタファイル18の読取り／書込み帯域および、整数ユニットレジスタファイル18と整数機能ユニット20とが協動する方法を除いて、整数ユニットレジスタファイル18によって、大部分のパイプラインプロセッサで見られるレジスタファイルの広範なカテゴリを表している。この基本的な機能および構成は周知なものであるのでこれ以上詳述しない。整数機能ユニット20の一実施例およびユニット20が整数ユニットレジスタファイル18と協動する方法については前述した出願中の特許明細書に詳細に記載されている。
【００１８】
上述したのと同様に、本発明を容易に理解できるようにするため、本発明は代表的なプロセッサ10によって説明されている。プロセッサ10の整数ユニットレジスタファイル18と整数機能ユニット20とが協動することによって各クロックサイクル毎に最大で２つの整数結果が発生する。しかし、この代わりに、これらエレメントを利用して、１クロックサイクル当たり、最大でｎ1 個の整数結果を以下の説明に基づいて発生させることもでき、この場合には、他の相補的な設計思想、特に整数機能ユニット20を変形する必要がある。
【００１９】
再び、図１に戻って、代表的なパイプラインプロセッサ10には、浮動小数点命令キュー24と、浮動小数点命令コントロールキー26と、浮動小数点ユニット命令レジスタファイル28と、浮動小数点機能ユニット30と、マルチプレクサ32とが更に設けられている。浮動小数点命令キュー24を命令コントロールユニット16と浮動小数点命令コントロールユニット26とに接続し、次に、これを浮動小数点ユニットレジスタファイル28に接続する。また、浮動小数点ユニットレジスタファイル28を浮動小数点機能ユニット30とマルチプレクサ32とに接続する。これらユニットは協動して、クロックサイクル毎に最大で１つの浮動小数点結果を発生する。
【００２０】
上記浮動小数点命令キュー24と命令コントロールユニット16とが協動する方法を除いて、これら浮動小数点命令キュー24、浮動小数点命令コントロールユニット26、浮動小数点ユニットレジスタファイル28、浮動小数点ユニット30およびマルチプレクサ32は、多くのパイプラインプロセッサ中で見つかるこれらのエレメントの広範なカテゴリを表している。これらの基本的な機能および構成は周知なものであり、従ってこれ以上詳述しない。上述した浮動小数点命令キュー24が命令コントロールユニット16と協動する方法については、前述の出願中の米国特許明細書に詳述してある。また、本発明を容易に理解するために、代表的なプロセッサ10を採用して本発明を説明している。プロセッサ10の浮動小数点命令キュー24、浮動小数点命令コントロール26、浮動小数点ユニットレジスタファイル28、浮動小数点機能ユニット30、およびマルチプレクサ32とが協動して、１クロックサイクル毎に、多くても１つの浮動小数点結果を発生するようになっている。しかしながら、当業者によれば、これらエレメントを協動させて、クロックサイクル毎に、最大でもｎ2 個の浮動小数点結果を発生させることによって本発明を実施することも可能である。この場合、他の相補的な設計思想、特に、これら浮動小数点命令キュー24、浮動小数点命令コントロールユニット26、および浮動小数点機能ユニット30の設計思想を変更する必要がある。
【００２１】
図１において、パイプラインプロセッサ10には、命令キャッシュ34、データキャッシュ36、共有メモリマネージメントユニット（ＭＭＵ）38、書込みバッファ40およびキャッシュコヒーレントバスインターフェイスユニット42が更に設けられている。ＭＭＵ38には、アドレス変換バッファ（ＴＬＢ）（図示せず）が設けられ、命令キャッシュ及びデータキャッシュ34、36に対して発行されたデータおよび命令リクエストをバッファ処理するか、またはキャッシュバスインターフェイスユニット42で作動するメインメモリ装置へのこれらリクエストをバッファ処理する。命令キャッシュ34を、プログラムカウンタ12、命令キュー14、共有メモリマネージメントユニット36およびキャッシュコヒーレントバスインターフェイスユニット42に接続する。データキャッシュ36をアドレスアダー22、整数機能ユニット20、浮動小数点命令キュー24、浮動小数点命令コントロールユニット26、浮動小数点ユニットレジスタファイル28、浮動小数点機能ユニット30、およびマルチプレクサ32に接続する。浮動小数点命令キュー24を命令コントロールユニット16と浮動小数点命令コントロールユニット26とに接続し、次に、これを浮動小数点ユニットレジスタファイル28に接続する。また、浮動小数点ユニットレジスタファイル28を浮動小数点機能ユニット30とマルチプレクサ32とに接続する。これらユニットは協動して、クロックサイクル毎に最大で１つの浮動小数点結果を発生する。
【００２２】
上記浮動小数点命令キュー24と命令コントロールユニット16とが協動する方法を除いて、これら浮動小数点命令キュー24、浮動小数点命令コントロールユニット26、浮動小数点ユニットレジスタファイル28、浮動小数点ユニット30およびマルチプレクサ32は、多くのパイプラインプロセッサ中で見つかるこれらのエレメントの広範なカテゴリを表している。これらの基本的な機能および構成は周知なものであり、従ってこれ以上詳述しない。浮動小数点命令キュー24と命令コントロールユニット16とが協動する方法が、上述の出願中の米国特許明細書に詳述されている。
【００２３】
図２は、図１のパイプラインプロセッサ10に組込まれた、本発明のパイプラインステージの現時点における実施例を示すブロックダイヤグラムである。図２には、複数個の整数パイプラインステージ102−116および複数個の浮動小数点パイプラインステージ118−126が図示されている。また、７個のクロックサイクルから成る一連のクロックパルスが図示されている。これら整数パイプラインステージ102−116には、２つの命令フェッチングステージ（f0、f1）102、104、３つの命令デコーディングステージ（d0、d1、d2）106−110、２つの実行ステージ（e0、e1）112、114、および１つのライトバック （write back）ステージ（wb）116が設けられている。また、浮動小数点パイプラインステージ118−126には、２つの命令デコード（復号）ステージ（fd、frf）118、 120、２つの実行ステージ（fadd/fmul、fnorm/frnd） 122、124、および１つのライトバックステージ 126とか設けられている。浮動小数点実行ステージ （fadd/fmul、fnorm/frnd）122、124を除いて、パイプラインステージ102、・・・、 120 または126の各々は、１クロックサイクルの半分を占有する。また、浮動小数点実行ステージ（fadd/fmulまたはfnorm/frnd）122または 124の各々は１クロックサイクルを占有する。本発明のパイプラインプロセッサの特定の実現状況に応じて、これら除外ルールのいくつかによらず、追加の除外ルールを利用して、本発明を実施できることは明らかである。
【００２４】
図３には、図２に示したパイプラインの種々のパイプラインステージにおける動作フローを表すブロックダイヤグラムが図示されている。ステージf0、f1において、４つの命令が命令キャッシュよりフェッチ（読出し）され、２つの命令が１ステージでフェッチされる（ブロック132、134）。
【００２５】
ステージd0において、３つまでの命令が、整数機能ユニットおよび／または実行用の浮動小数点キューに対して同時に発生される（ブロック 136）。ステージd1において、整数ユニットレジスタファイルにおける２つのアドレスレジスタが読出されると共に、ブランチ命令のターゲット（対象）アドレスが演算される（ブロック138）。また、ステージ d2において、整数ユニットレジスタファイルにおける４つのデータレジスタが読取られると共に、ロード／ストア命令のロード／ストア アドレスが演算される（ブロック140）。ステージe0において、データキャッシュがアクセスされ、浮動小数点オペレーションが発行され、更に、整数ユニットの第１命令が実行される（ブロック142）。ステージe1において、整数ユニット中の第２命令を実行し、データがデータキャッシュ／メモリよりロードされ、更に、例外状態が解除される（ブロック 144）。ステージwbにおいて、２つの整数結果がデータキャッシュ／メモリ、または整数ユニットレジスタファイルに書込まれる（ブロック146）。
【００２６】
プロセッサ10の現時点での好適実施例においては、浮動（小数）点オペレーションが整数パイプラインステージ102−116に結合されている。浮動小数点オペレーションは各サイクル毎に開始させることができる。しかしながら、後でプロセッサパイプラインへディスパッチされる。浮動小数点オペレーションは、整数パイプラインのe0ステージ（図３のブロック142）まで浮動小数点ユニット30へ発行されない。進行用パス（通路）が設けられ、これによって浮動小数点オペレーションのあらゆる結果が次に続くオペレーション用のソースへチェーン接続される。図３に示すように、浮動小数点オペレーションをステージfdでデコード（復号）する（ブロック148）。ステージfrfにおいて、浮動小数点レジスタファイルを読取る（ブロック150）。ステージfadd/fmulにおいて、浮動小数点総計値または浮動小数点の積が得られる（ブロック 152）。ステージfnorm/frndにおいて、この浮動小数点総計値が正規化されるか、または浮動小数点の積が概数化される（ブロック154）。ステージfwbにおいて、この浮動小数点の結果が浮動小数点レジスタファイルに書き戻される（ブロック156）。
【００２７】
図４および図５において、図３に示したパイプラインのブランチ命令の取り扱いを絵図的にブロック線図で表示されている。図４は、ブランチ（分岐）が採用された場合のもので、図５は、ブランチが採用されなかった場合のものである。図４には、整数パイプライン 100を通って移動する４つの代表的な命令グループ162−168が図示されている。時刻３において、命令コントロールユニットは第１の代表的な２つの命令のグループを発生させる。このグループは整数機能ユニット20用のもので実行するためのものであり、比較命令（ＣＭＰ）および等しくなければブランチ（ＢＮＥ, branch on not equal）の命令を有している。命令コトロールユニット16によって、命令グループを形成中にブランチ命令を検出する。プリフェッチコントロールにより以下のように想定される。即ち、このブランチが取られるようになり、ターゲット命令ストリーム（流れ）がフェッチされるまで、シーケンシャル命令キュー（図示せず）中に、ディレイ（遅延）命令が現れるまで待機することを想定する。
【００２８】
時刻５において、命令コントロールユニットによって、フェッチされたディレイ命令および次のシーケンシャル命令から成る２つの代表的な第２命令グループを、整数機能ユニット20に対し発行して実行させる。同時に、命令コントロールユニット16によって第１および第２ターゲット命令がターゲット命令キー（図示せず）中にフェッチされるようになる。
【００２９】
時刻６において、ブランチが解読され（これは、整数機能ユニットによって行われ）、図４では、ブランチが取られると共に、プログラムカウンタおよびプロセッサ状態レジスタファイルが更新されることになる。従って、時刻７において、命令コントロールユニット16によって、第１シーケンシャル命令が詰められる（即ち無効化ないし抹消される）と共に、プリフェッチコントローラによって、ターゲット命令キューの文脈をシーケンシャル命令キューへ移す。命令コントロールユニット16によってこの第１シーケンシャル命令を無効化し、同時に、命令コントロールユニットによって、第１および第２ターゲット命令を有する２つの命令グループを、命令の復号用およびデータ依存性の検出用のオペコードデコード／カスケード検出器まで移す。更にまた、命令コントロールユニットによって第３および第４ターゲット命令をターゲット命令キューへフェッチする。
【００３０】
図５には、整数パイプライン100を経て移動する４つの代表的な命令グループ162'−168' が図示されており、ここではブランチは採用されない。時刻３において、命令コントロールユニット16によって、比較命令（ＣＭＰ）と等しくなければブランチの命令とを有する第１の命令グループが、実行のために整数機能ユニット20に対して発生される。コントロールユニット16によって命令グループを形成中にブランチ命令を検出すると共に、ブランチが取られるようになっているものと仮定して、コントロールユニット16は待機状態となる。この待機状態は、ターゲット命令ストリームをフェッチする前に遅延（ディレイ）命令がシーケンス命令キューに現れるまで続く。
時刻５において、命令コントロールユニット16によって、フェッチされたディレイ命令と次のシーケンシャル命令とを有する第２命令グループを、実行のために、整数機能ユニットに対して発生させる。同時に、命令コントロールユニット16によって、第１および第２ターゲット命令をターゲット命令キュー内へフェッチする。
【００３１】
時刻６において、ブランチは、不採用であるとして、整数機能ユニットによって解読される。時刻７において、命令コントロールユニットによって、第１シーケンシャル命令が整数パイプラインを下り続けるようになる。これは、第１シーケンシャル命令を無効化しないことによって行われ、プリフェッチコントローラは、フェッチした第１および第２ターゲット命令を放棄する。これと同時に、命令コントロールユニット16は、第２および第３シーケンシャル命令を有する第３命令グループを、オペコードデコード／カスケード検出器まで移動する。これらデコードおよび検出器は、命令のデコーディング（復号）およびデータ依存性検出器である。その後、命令コントロールユニットによって第４および第５シーケンシャル命令がシーケンシャル命令キュー内へフェッチされる。
図６にはプロセッサ10の代表的な構成が開示されており、これによって、アプリケーションワークロードを実行中のプロセッサ10内の種々の状況を監視する。図６において、プロセッサ10を外部の支持ピングリッドアレイ（ＰＧＡ）50に装着する。プロセッサ10から派生したデータラインは、ＰＧＡ50内の多数のピン50aで終端される。これらピン50aは多数のＰＩＰＥ信号51を送信する。好適実施例によれば、10個のＰＩＰＥ信号（ＰＩＰＥ0−ＰＩＰＥ9）が適当なコネクタ52を経てロジックアナライザ55へ送給される。
【００３２】
プロセッサ10の第一順位の動作（状態）を監視するために、ＰＩＰＥ信号51によって、ターゲットプロセッサのキー内部状態をサイクル毎に観察することが可能となる。これらピンによってクロックサイクル内で活動に関する情報が得られる。即ち、以下の情報が得られる。
【００３３】
＊  実行するための命令の数。
＊  ゼロ命令を実行する場合、この原因はパイプラインインターロックまたはエンプティ（空）命令キューであるかどうかの情報（これは、命令キャッシュミスによる）。
＊  これら命令のいずれかがブランチであるかどうか、若し、ブランチであれば、どのブランチパス（分岐通路）を採用したかの情報。
＊  これら命令の何れかがデータメモリリファレンスであるかどうか、若し、データメモリリファレンスならば、同一サイクル中にこれらリファレンスをプロセッサパイプラインに与えられるかの情報。
＊  これら命令の何れかが浮動小数点演算命令であるかどうか、及び若し、演算命令であれば、これら演算命令を単一サイクル中に完了できるかどうかの情報。
＊  これら命令の何れかが明らかなシステムコールであるかどうか、又は、ターゲットプロセッサシステムソフトウェアに対する該当するシステムコールに必要な割り込みまたは例外を受け入れられるかどうかの情報。
【００３４】
１．ＰＩＰＥ信号：
以下に示したテーブルは、これらＰＩＰＥ信号の各々の機能を規定するものである。
ＰＩＰＥ９：プロセッサパイプラインの実行ステージ中に、いずれかの有効データメモリ            リファレンス命令が現れたときアサートされる。
ＰＩＰＥ７：プロセッサパイプラインの実行ステージ中に、いずれかの有効コントロール            トランスファ命令が現れたときアサートされる。
ＰＩＰＥ６：現在パイプラインの実行ステージでの命令がディスパッチされたときは、い            ずれの命令も得られないときにアサートされる。
ＰＩＰＥ５：データメモリリファレンスを単一サイクル中に提供できないためプロセッサ            パイプラインがストール（停止）したとき（例えば、データキャッシュミ              ス）アサートされる（ＤＢＵＳＹ）。
ＰＩＰＥ４：現在のサイクルで浮動小数点エンジンが進まないためパイプラインプロセッ            サがストール（停止）したとき（例えば、浮動小数点メモリリファレンスの            インターロック）アサートされる（ＦＢＵＳＹ）。
ＰＩＰＥ３：コントロールトランスファ命令のターゲットインストラクションストリーム            を選択した（シーケンシャル命令ストリームでなく、このターゲット命令ス            トリームを選択した）ときアサートされる。
ＰＩＰＥ［２：１］：プロセッサパイプラインの実行ステージに現在、存在しているイン            ストラクションの数を表す。
ＰＩＰＥ０：不明確なシステムコール、割り込みまたは命令例外が生じたときアサートさ            れる。
【００３５】
２．外部ハードウェア監視を構成する時のＰＩＰＥ信号の利用
これら10個のＰＩＰＥ信号をロジックアナライザ55によって監視することができ、これにより外部ハードウェア性能監視が形成される。この監視によって、プロセッサ10の現在の状態、近似命令ミックス（approximate instruction mix）、割り込みの実際のレート、コールおよびプロセッサ10の最新のパーフォマンスボトルネックを何が表しているかを決定することができる。
【００３６】
アセンブリ言語プログラムの第１命令で実行を開始することによって、プログラムによるプロセッサ10の進行状態をトレース出来る。選択されたブランチパスが明らかに露われ、このプログラムに対する動作を期待値と比較できる。ストールフリーサイクル（ストールされないサイクル）毎に発生された命令の数量を表にリストすると共に、ピン51をトレースすることによって、更に、時間経過サイクル数を表にリストすることによって、本発明の構成は１サイクル当たり実行された命令に関して、プロセッサ10の瞬時および累積性能をレポートすることができる。これは、実行されている専有のアプリケーションワークロードにアクセスする必要がなく実行できる。換言すれば、実行中のアプリケーションプログラムに対する突出していない性能メーターを実現できるようになる。
【００３７】
また、図６に示したように、ＰＩＰＥ信号51の２つ（ＰＩＰＥ４およびＰＩＰＥ5）をNORゲート53で論理的に組合わせ、その後、この組合わせ結果を、プロセッサ10から取出した次のシステムクロック（ＣＬＫ）信号を受信してラッチ54中にラッチする。ラッチ54の出力はコンポジット（合成）信号ＣＹＣＬＥ0である。ＰＩＰＥ5およびＰＩＰＥ4ピン（ＤＢＵＳＹ、ＦＢＵＳＹ）のＮＯＲを取り、その後、次のシステムクロック（ＣＬＫ）信号と共に、このコンポジット信号を、ＣＹＣＬＥ0と呼ばれる外部信号からラッチすることによって、ＰＩＰＥピン51の現在の状況を更に学習して、カストマーのワークロードおよびターゲットプロセッサについての実行特性について習得する。
例えば、
【００３８】
＊  命令の合計数を計数できる。
＊  それらの命令を、データメモリリファレンス、コントロールリファレンスおよび浮動小数点オペレーションに分類できる。残りを、整数演算命令として一緒にまとめることができる。
＊  実行された命令グループサイズのヒストグラムを生成できる。
＊  ストール（停止）したプロセッサパイプラインサイクルの有力な原因が示される。
【００３９】
2.1  有効なデータキャッシュミスレートの予測
データメモリリファレンスがＣＹＣＬＥ0上のプロセッサパイプラインのストール（機能停止）させる主なる３つの原因が存在する。
＊  ＭＭＵ38（図１参照）内の「データ」アドレス変換バッファ（ＴＬＢ）がミスしたものとする。データメモリリファレンス命令の仮想アドレスに対する物理的アドレスを決定するために、このＴＬＢは、主メモリの仮想メモリアドレス変換テーブルからのエントリをバスインターフェイスユニット（図１のボックス42、特に図示せず）を経てフェッチする必要がある。
＊  第１レベルデータキャッシュ36（図１）がロードオペレーション上でミスしたものとする。第１レベルデータキャッシュ36はルームを割当てる必要があると共に、次にその内容をメモリ階層内の遅い資源からフェッチする（例えば、第２レベル外部キャッシュまたはメインメモリ）。
＊  図１に示した書込みストアバッファ40がフル（満杯）状態とする。この書込みストアバッファ40は、実行ステージのデータメモリリファレンスを進行し得るようにする前に、このバッファの内容のいくつかをメモリに書込む必要がある。
【００４０】
データメモリリファレンス命令のストール（機能停止）に対する、２次の追加理由は以下の通りである。
＊  ストアバッファ40には、このメモリリファレンス命令によってリクエストされているエントリが包含されている。このシステムの他のプロセッサから見られるように、書込み命令のシーケンスを維持するために、ストアバッファはプロセッサパイプライン128（図２参照）の機能を停止すると共に、ロードを完了させる前に、要求したりエントリを経てすべての内容を複写する。
＊  同期ストア命令が実行ステージe0（図２）に残存。これら命令は、そのハードウェアがマシーンステート（マシーン状態）を更新してしまうまで、プロセッサパイプライン128のストール（機能停止）をする（例えば、"STORES to Alternate Address Space"識別子は、ＭＭＵ38、データキャッシュ36またはストアバッファ40内でレジスタをコントロールすることに対応する）。
＊  微細な読出し−変形−書込み命令が実行ステージに残存する。これら命令によって、ターゲットマシーンに多重サイクルが得られる。
【００４１】
上述した原因のいくつかが同時に作用するようになる。ＰＩＰＥ信号51は、これらの理由のいずれが、ＤＢＵＳＹ（ＰＩＰＥ5）パイプラインストール（機能停止）中に、このプロセッサパイプラインを実際にストール（停止）させるものであるかを特定しない。
【００４２】
上述した出願中の米国特許明細書に記載されているプロセッサ10の好適実施例中に実現されている新規な技術によって、キャッシュ一致性トランザクション（cache consistency transactions）により、単一ポート付きのデータキャッシュにアクセスするための内部プロセッサパイプラインの機会を失わないようになる。このことは、代表的なプロセッサの設計に特に注目されるもので、これによってデータキャッシュアクセス上のサイクルの機能が停止され、キャッシュ書込み一貫性ポリシィ（cache write consistency policy）が実現する。例えば、書込みバックキャッシュの場合が考えられる。リモートキャッシュ読取りミスの発生中、システムバス上のすべてのキャッシュが要求されて、これらキャッシュのすべてが最新のコピーを有している場合には、データキャッシュアドレス探索が行われると共に、データを転送する。リモートキャッシュからのあらゆる書込動作中、システムバスのすべてのキャッシュが要求されて、データキャッシュアドレス探索を実行して、失効のローカルコピーを無効にする。開示されたプロセッサは、プロセッサ一貫性を保持するが、これら一貫性トランザクションを利用してプロセッサの機能を停止することはない。
【００４３】
１次の予測としては、ＦＢＵＳＹがアサートされていないすべてのＤＢＵＳＹサイクルは、第１レベルデータキャッシュ36のロードミスによるものである。このことによって、ＤＢＵＳＹとなった実行ステージで、データメモリリファレンス命令の一部分を決定することができる。この一部を有効データのキャッシュミスレートと称している。
【００４４】
この原理体系を利用した場合に、結果的に得られた有効データのキャッシュミスレートは、実際データのキャッシュミスレートより高いものである。その理由は、他の２つのケースは一緒にまとめられるからである。この１次近似式は、追加のプロセッサピンをテストするか、またはアプリケーションコードを改良することによって更に正確にすることができる。
【００４５】
2.2  浮動小数点ロードインターロックの周波数の決定
浮動小数点オペレートまたは浮動小数点データメモリリファレンスによって、ＣＹＣＬＥ0上のプロセッサパイプラインのストール（機能停止）させる理由には、大きく分けて３つ存在する。
＊  浮動小数点命令キュー24がフルの場合。整数コントロールユニット16が浮動小数点機能ユニット30にディスパッチしようとする浮動小数点オペレーション（ＦＰＯＰ）命令を受け入れる余裕がない場合である。このことは、浮動小数点ユニット30が、割算や平方根のような処理時間の長いＦＰ（浮動小数点）演算命令を行うのに忙しい場合に起こり得るものである。
【００４６】
＊  浮動小数点ロード命令の宛先レジスタがインターロックされた場合。浮動小数点ロードが浮動小数点レジスタを更新し、そのレジスタが浮動小数点命令キュー24における未完了のＦＰ演算命令の宛先レジスタである場合に、この浮動小数点ユニット30によって、このようなFQFP演算命令のすべてが完了するまで、整数機能ユニット20のパイプラインの機能を停止する。
【００４７】
＊  浮動小数点ストア命令のソースレジスタがインターロックされた場合。浮動小数点ストアがデータを浮動小数点レジスタを有するメモリ中に書込む場合で、このレジスタの値がまた演算されていない時に、浮動小数点機能ユニット30によって、このようなＦＱＦＰ演算命令のすべてが完了するまで、整数機能ユニット20のパイプラインをストールする。
【００４８】
浮動小数点オペレート命令のストール（機能停止）の追加の２次理由は以下の通りである。
＊  浮動小数点条件コードがインターロックされた場合。浮動小数点ブランチが、未完了の浮動小数点比較命令の結果を利用する場合に、浮動小数点機能ユニット30によってパイプラインの機能が停止される。
＊  整数の掛算または割算の結果がまだ準備されていない場合。整数機能ユニット20は、浮動小数点機能ユニット30を利用して以下の動作を行う。即ち、オペランドを浮動小数点フォーマットに変換すること、それぞれの演算を実行すること、浮動小数点フォーマットからの結果を整数フォーマットに変換すること、および整数結果を整数機能ユニット20へ戻す動作である。整数の掛算または割算命令によって、浮動小数点命令キュー24が空の場合だけ浮動小数点ユニット内で実行が開始されるようになる。一度エンプティ状態となると演算結果が出るまで数サイクル必要となる。
【００４９】
上述した理由のいくつかが同時に活動状態となる。更に、ＤＢＵＳＹ（ＰＩＰＥ5）およびＦＢＵＳＹ（ＰＩＰＥ4）が、同時に活動状態となることができる。ＰＩＰＥ信号51は、ＦＢＵＳＹパイプラインのストール（機能停止）中、上述した理由のいずれかが、プロセッサパイプラインのストール（機能を停止）をする実際の理由であることを特定することはない。
【００５０】
１次予測として、ＤＢＵＳＹがアサートされていないすべてのＦＢＵＳＹサイクルは、不十分に計画された浮動小数点メモリリファレンスによるものであることが予測できる。これらメモリリファレンスは、浮動小数点結果を得るために必要な時間を追跡するものではない。このような近似式は、これらファクタのどれが支配するかを見つけるために浮動小数点コードワークロードの内部ループを計画するコードを変更することによってより高い精度が得られるようになる。浮動小数点ループの非ロール処理およびソフトウェアのパイプライン処理は、これら浮動小数点インターロックを克服するための有用な技術である。
【００５１】
2.3  有効命令のキャッシュミスレートの予測
プロセッサパイプラインは、メモリ階層から命令をフェッチするより早くはこれら命令を実行できない。ここに開示したプロセッサ10には、オンチップの、第１レベル命令キャッシュが包含されており、これによって命令メモリへの単一サイクルのアクセスが達成されて命令のフェッチを高速化する。名目上、この命令キャッシュには、命令キャッシュヒットに関してプリフェッチバッファ用に４ワード設けられている。８ワード命令プリフェッチバッファは、プロセッサパイプラインの機能がストール（停止）したかどうかとは無関係に、充填される。しかしながら、上述した技術は、プロセッサパイプラインに対して、常時、有効な命令ストリームを供給するものではない。
【００５２】
ＰＩＰＥ（2:1）信号は、どのくらいの個数の命令が、パイプ128の実行ステージe0およびe1に存在しているかを表している。ゼロ命令が存在していない４つの主要な潜在理由が以下の通りにある。
【００５３】
＊  ＭＭＵ38（図１に示す）内のコードＴＬＢがミスしたものとする。このミスの結果として、コードフェッチの仮想アドレスの物理的アドレスを決めるため、ＴＬＢは、バスインターフェイスユニット42（図１）を経て、仮想メモリアドレス変換テーブル（図示せず）からエントリをフェッチする必要がある。
【００５４】
＊  第１レベル命令キャッシュ34（図１）がミスしたものとする。命令キャッシュ34は、余裕を作るためにエントリを無効にする必要があり、次に、その内容をメモリ階層内の遅い資源（例えば、第２レベルのキャッシュまたはメモリ）からフェッチする。
【００５５】
＊  プロセッサパイプラインの異なったステージ、例えば、f0/f1およびe0/e1ステージにおける命令グループ内のデータ依存性が存在し、この依存性は現存する前進パスによって満たされない。
＊  採用されない無効となったブランチの遅延命令が、e0実行ステージに到達する前押さえることによって発行された。
【００５６】
実行された命令ゼロの追加の理由が以下のように存在する。
＊  整数レジスタファイルに基づいてターゲットアドレスを発生させるコントロールトランスファ命令は、単一のパイプライン「バブル」を生じさせる。命令が、現在ペンディング中のレジスタ関連性ターゲットアドレスを参照した場合にコードスケジューラによってパイプラインバブルが挿入される。
【００５７】
＊  キャッシュフラッシュ無効化およびパイプラインフラッシュ無効化によって数種のパイプラインバブルが起こる。
＊  割り込み、例外、およびシステムコールは数種のパイプラインバブルが起こる。
【００５８】
実行ステージにおける現在のタイムスロットが命令デコードステージにあるとき、命令フェッチがあらゆる有効な命令をプロセッサパイプラインへ供給するのを失敗した場合にＰＩＰＥ6がアサートされる。上述のＰＩＰＥ（2:1）に加えてこの情報を知ることによって、命令キャッシュによりプロセッサパイプラインがまだ停止されていないケースを選別することができる。
【００５９】
まず第１次予測としては、以下のことが考えられる。即ち、有効な命令がデコードされた時に実行命令スロットでそれが利用出来なかったことをＰＩＰＥ 6が示すＣＹＣＬＥ0 の各々は、命令キャッシュミスによるものと考えられる。ＣＹＣＬＥ0の合計数およびこのＣＹＣＬＥ0中にＰＩＰＥ6が明示されるイベントの数の合計を計数しながら、命令キャッシュミスを起こすような命令フェッチの一部分を決定できる。この一部分を有効命令キャッシュミスヒットと称する。
【００６０】
この手法を利用した場合、結果的に得られる有効命令キャッシュミスレートは、実際の命令キャッシュミスレートより低いものである。すべての命令キャッシュミス事象がプロセッサパイプラインにレポートされる訳ではない。名目上、命令キャッシュプリフェッチはプロセッサパイプラインのストール（機能停止）とは無関係に起こるものである（即ち、ＤＢＵＳＹおよびＦＢＵＳＹである）。命令キャッシュミスを、プロセッサパイプラインのストール（機能停止）中に隠すことができる。プロセッサが進行した場合に、命令フェッチを完了することができる。
この１次近似式は、追加のプロセッサピンを試験したり、またはアプリケーションコードを変更することによって精度向上できる。
【００６１】
2.4  採用または不採用のブランチの周波数および待ち時間の決定
ブランチは、多くのプロセッサ設計における基本的性能リミッタである。特にこれはRISCマシーンにおいて正しいものであり、このマシーンでは効率的な命令デコーディング動作が、ブランチ決定を順次行う時の待ち時間を有効的に減縮する。スーパースカラーマシーンは、ブランチ決定を順次行う間の少数のサイクル数を減少させることにより、このすでに重大な性能リミッタを悪化させてしまう。特に、代表的な応用例では、採用されたブランチの数は、不採用のブランチの数に優るものである。
【００６２】
開示されたプロセッサの設計では、不採用の条件付きブランチを、採用された条件付きブランチよりいくらか有効に実行できる。不採用ブランチを介してのピーク性能は１サイクル当たり３個の命令である。採用されたブランチを介してのピーク性能は、ブランチ間の命令の数に依存するが、不採用のブランチより少しだけ少ない。この理由は、遅延したブランチ命令が、単一の命令グループとして実行されるからである。命令プリフェッチキューにおける限定と、代表的なコード計画における制限のため、一般に、これらピーク性能は達成されない。
【００６３】
また、開示されたプロセッサによって、プリフェッチロジックにおけるブランチの予測を実行できる。シーケンシャル命令キューの内容を重ね書きすることなく、ブランチのターゲットをターゲット命令キューへ常時フェッチするようにする。ブランチパスの方向を一旦決定すると、適切な命令が命令デコードステージに送られる。
【００６４】
ブランチが命令デコードステージ内で観察されると、このパイプラインは１サイクル期間、通常の実行を継続する。この追加のサイクル中に、遅延命令が、不採用になったストリーム中の他の命令に沿って実行される。このことは、ブランチが採用された場合に、ある命令によってブランチを有しないような実行を開始することを意味する。開示されたプロセッサは、採用されたブランチに対して他の命令の実行を終了する。これは、ブランチが実行ステージに入るとすぐに終了する。不所望な命令の無効化を「スクアッシュ（squash）」と呼ぶものとする。
【００６５】
ＣＹＣＬＥ0 事象中にＰＩＰＥ信号51を検査することによって、ブランチとなる命令のパーセンテージを決定できると共に、ブランチの如何なる割合が採用されるかを決定できる。ワークロードにおけるブランチのパーセンテージを測定したり、採用された割合を測定したり、連続したブランチ間の待ち時間のヒストグラムや、連続したブランチ決定間の命令のヒストグラムを測定したり、更にまた、ブランチ命令のターゲットが命令キャッシュに存在する可能性を見つけ出すことは、プロセッサの販売主や性能の分析者の両者にとって極めて価値のある情報である。
【００６６】
2.5  文脈切換間の待ち時間および周波数の決定
文脈切換間の命令の数の階層を生成したりならびに文脈切換間の待ち時間は、プロセッサの販売主や性能の分析者にとって重要なものである。ユーザはシステムコールを利用してオペレーティングシステムサービスをリクエストする。タイマー、グラフィックプロセッサ、ディスクコントローラおよびネットワークコントローラ等のハードウェアデバイスによって、信号デバイス注目リクエストへの割り込みを生成すると共に、配置完了ステータスを発生する。
【００６７】
割り込み、システムコールおよび故障のすべてによってエントリがシステムソフトウェアの作動中のシステムの中核部分に導入されると共に、ユーザコンテクストからの文脈切換がこの中核部分へ強制されるようになる。これら文脈間の切換に対し大きな実行ペナルティが存在している。
【００６８】
レジスタウィンドウ内容をメモリスタックへ流入することもできる。変換テーブルを改訂することもできる。キャッシュエントリをメモリに対して流出させることもできる。システム状態テーブルを更新する必要がある。ユーザと核のワークロード自身は、非常に異なるものである。更新用プロセッサ状態コントロールレジスタは高価なものである。上述した事項のいずれも起こらない場合には、キャッシュの作動セットが変化する。ＴＬＢ命令およびオリジナルコンテクストのデータキャッシュ局所性が希釈される。この文脈が回復すると、キャッシュ局所性の損失によって実行モーメントに損失が生じるようになる。
【００６９】
【発明の効果】
システムの関係者および性能の分析者にとって、カストマーマシーンが、多くの割り込みによってオーバーロード状態となる時を知ることは有益である。システムの設計者は、これらの割り込みを分配する方法を調整できる。性能の分析によって、現在している割り込みを更に多くのマシーンに分配することができる。このような問題点を改革することができるので、その結果として、必要なコミュニケーションは混乱を生じさせないでユーザ待ち時間制限に依然として合致するものである。
【００７０】
軽量プロセスの出現および同一プロセス内の多岐に亘ったコントロールによって、文脈切換の相対周波数を増大できることが期待される。文脈切換のコストを低下させるために多くの手法が取られた。文脈切換の周波数をワークロードを混乱させることなく控えめにトラッキングするような特徴によって、システムのソフトウェア設計者を援助することができ、これによって、不正確な仮定を行う代わりに、文脈切換の周波数を測定できる。更にまた、キャッシュミスレートを文脈切換内でヒットレートに割込ませることができ、これによってマルチプロセッサハードウェア環境の下でのコールドスタートやプロセス移送の効果を見ることができる。
【００７１】
以上詳述したように、本発明の現時点における好適実施例についてのみ説明したが、本発明はこれらのみに限定されず、種々の変形を加え得ることは当業者にとって明らかである。即ち、本発明による方法および装置は、添付した請求の範囲の技術的思想の範囲内で変更できるものである。従って、上述した記載に限定されるものではない。
【図面の簡単な説明】
【図１】本発明の技術思想を組込んだパイプラインプロセッサの機能を示すブロックダイヤグラム。
【図２】図１に示したパイプラインプロセッサのパイプラインステージの一好適実施例を示す図。
【図３】図２に示したパイプラインの動作フローを表したフローダイヤグラム。
【図４】図２に示したパイプライン中のブランチ命令の処理方法を示した図。
【図５】図２に示したパイプライン中のブランチ命令の処理方法を示した図。
【図６】ＣＰＵ性能監視を得るための本発明の代表的な構成例を示す図。
【符号の説明】
１０  パイプラインプロセッサ
１２  プログラムカウンタ
１４  命令キュー
３４  命令キャッシュ
３６  データキャッシュ
４０  書込みバッファ
４２  キャッシュコヒーレントパスインターフェイスユニット
５０  支持ピングリッドアレイ
５５  ロジックアナライザ
【図１】
0003544214.tif 000002
【図２】
0003544214.tif 000003
【図３】
0003544214.tif 000004
【図４】
0003544214.tif 000005
【図５】
0003544214.tif 000006
【図６】
0003544214.tif 000007