(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサ内で命令取出アドレスを判定する方法であって、
命令キャッシュから命令のセットを受け取るステップと、
前記命令のセット内にあって、対応する分岐命令情報を記録しなければならない、分岐命令の数を判定するステップと、
単一サイクルで前記分岐命令情報を記録できる分岐命令キューの容量を判定するステップと、
前記分岐命令の数が、前記分岐命令キューの容量を超えるとの判定に応答して、次命令アドレスを生成し、次のサイクルで前記次命令アドレスからの命令受取が生じるように前記次命令アドレスをこの単一サイクル内で前記命令キャッシュに転送するステップと
を含む方法。
【請求項２】
前記分岐命令の数を判定するステップが、採用されないと予測される分岐命令の数を判定するステップを含む、請求項１に記載の方法。
【請求項３】
前記分岐命令キューの容量を判定するステップが、前記分岐命令キュー内の使用可能項目を判定するステップを含む、請求項１に記載の方法。
【請求項４】
前記分岐命令キューの容量を判定するステップが、前記分岐命令情報を記録するのに使用可能なポートの数を判定するステップを含む、請求項１に記載の方法。
【請求項５】
前記次命令アドレスが、前記命令のセットのアドレスに続くシーケンシャル・アドレスを含む、請求項１に記載の方法。
【請求項６】
前記分岐命令キューの容量が十分であることの判定に応答して、前記命令のセット内にあって、採用されると予測される最初の分岐命令の分岐ターゲット・アドレスに対応する次命令アドレスを生成するステップをさらに含む、請求項１に記載の方法。
【請求項７】
マイクロプロセッサ内の命令取出ユニットであって、
命令キャッシュにアドレスを供給するように構成された命令取出アドレス・レジスタと、
分岐命令情報を記録するのに適する分岐命令キューと、
前記命令キャッシュから命令のセットを受け取り、前記命令のセットの分岐命令に対応した記録すべき分岐命令情報を単一サイクルで記録できる前記分岐命令キューの容量を判定するように構成された命令セット処理ユニット（ＩＰＵ）と、
を含み、
前記分岐命令の数が判定された前記分岐命令キューの容量を超える場合に、前記命令セット処理ユニットは、次命令アドレスを生成し、次のサイクルで前記次命令アドレスからの命令受取が生じるように前記次命令アドレスをこの単一サイクル内で前記命令キャッシュに転送するように適合されている命令取出ユニット。
【請求項８】
前記ＩＰＵが、
受け取った前記命令のセットの分岐命令に対応する分岐ターゲット・アドレスを生成するのに適したアドレス生成ユニットと、
前記分岐ターゲット・アドレスを入力として受け取るように構成されたマルチプレクサとを含む、請求項７に記載の命令取出ユニット。
【請求項９】
前記マルチプレクサの出力が、命令アドレス取出レジスタに供給される、請求項８に記載の命令取出ユニット。
【請求項１０】
前記アドレス生成ユニットが、加算器と、前記加算器に結合されたラッチとを含み、前記加算器のそれぞれが前記命令のセット内の対応する命令のオペランド情報を受け取り、それに基づいて分岐ターゲット・アドレスを生成する、請求項９に記載の命令取出ユニット。
【請求項１１】
前記ＩＰＵが、受け取った前記命令のセットに対応する命令アドレスに続く次のシーケンシャル命令アドレスに対応する次命令アドレスを生成するのに適するアドレス・インクリメンタを含み、前記次命令アドレスが前記マルチプレクサへの入力に含まれる、請求項９に記載の命令取出ユニット。
【請求項１２】
前記ＩＰＵが、前記分岐命令の数が判定された前記分岐命令キューの容量を超える場合に、前記マルチプレクサからの出力として前記次命令アドレスを選択するように適合されているセレクタ論理を含む、請求項１１に記載の命令取出ユニット。
【請求項１３】
前記セレクタ論理が、前記分岐命令の数が判定された前記分岐命令キューの容量を超えない場合に、前記マルチプレクサからの出力として、採用されると予測される最初の命令の分岐ターゲット・アドレスを選択するように適合されている、請求項１２に記載の命令取出ユニット。
【請求項１４】
前記分岐命令キューは、受け取った前記命令のセット内の選択された命令から分岐命令情報を受け取るように構成される、請求項７に記載の命令取出ユニット。
【請求項１５】
前記選択された命令が、採用されると予測される最初の命令を含めてそれに先行する分岐命令を含む、請求項１４に記載の命令取出ユニット。
【請求項１６】
前記分岐命令情報が、前記分岐が誤予測された場合に使用される分岐命令リダイレクト・アドレスを含む、請求項１５に記載の命令取出ユニット。
【請求項１７】
マイクロプロセッサ、メモリ、入力手段、および表示手段を含み、前記マイクロプロセッサが命令取出ユニットを含む、データ処理システムであって、
命令キャッシュにアドレスを供給するように構成された命令取出アドレス・レジスタと、
分岐命令情報を記録するのに適する分岐命令キューとであって、前記分岐命令キューは、分岐の誤予測の場合に、次の命令アドレスを示すリダイレクト・アドレスを含んでおり、さらに、
前記命令キャッシュから命令のセットを受け取り、プログラム実行フローがリダイレクトを必要とすることが前記命令のセットから判定される際に、命令取出アドレスを生成するのに適する、とともに、前記命令のセットの分岐命令に対応した記録すべき分岐命令情報を単一サイクルで記録できる前記分岐命令キューの容量を判定するように構成された、命令セット処理ユニット（ＩＰＵ）と
を含み、前記ＩＰＵが、それについて分岐命令情報を記録しなければならない、前記命令のセット内の分岐命令の数が、単一サイクル内で前記分岐命令情報を記録するためのＩＰＵの容量を超える場合に、前記プログラム・フローがリダイレクトを必要とすることを判定するように適合されている
データ処理システム。
【請求項１８】
前記ＩＰＵが、受け取った前記命令のセットに対応する分岐ターゲット・アドレスのセットを生成するのに適するアドレス生成ユニットと、前記分岐ターゲット・アドレスのセットを入力として受け取るように構成されたマルチプレクサとを含む、請求項１７に記載のデータ処理システム。
【請求項１９】
前記マルチプレクサの前記出力が、命令アドレス取出レジスタに供給される、請求項１８に記載のデータ処理システム。
【請求項２０】
前記アドレス生成ユニットが、加算器と、前記加算器の出力に結合された対応するラッチとを含み、前記加算器のそれぞれが、前記命令のセット内の対応する命令のオペランド情報を受け取り、それに基づいて分岐ターゲット・アドレスを生成する、請求項１９に記載のデータ処理システム。
【請求項２１】
前記ＩＰＵが、受け取った前記分岐ターゲット・アドレスのセットに対応するそれぞれのアドレスに続く次のシーケンシャル命令アドレスに対応する次命令アドレスを生成するのに適するアドレス・インクリメンタを含み、前記次命令アドレスが、前記マルチプレクサへの入力を含む、請求項１９に記載のデータ処理システム。
【請求項２２】
前記ＩＰＵが、さらに、それについて分岐命令情報を記録しなければならない、前記命令のセット内の分岐命令の数が、単一サイクル内に前記分岐命令情報を記録するためのＩＰＵの容量を超える場合に、前記マルチプレクサの出力として前記次命令アドレスを選択するように適合されているセレクタ論理を含む、請求項２１に記載のデータ処理システム。
【請求項２３】
前記セレクタ論理が、それについて分岐命令情報を記録しなければならない、前記命令のセット内の分岐命令の数が、単一サイクル内に前記分岐命令情報を記録するための前記分岐命令キューの容量を超えない場合に、前記マルチプレクサの出力として、採用されると予測される最初の命令の分岐ターゲット・アドレスを選択するように適合されている、請求項２２に記載のデータ処理システム。
【請求項２４】
前記分岐命令キューは、受け取った前記命令のセット内の選択された命令から分岐命令情報を受け取るように構成された、請求項１７に記載のデータ処理システム。
【請求項２５】
前記選択された命令が、採用されると予測される最初の命令を含めてそれに先行する分岐命令を含む、請求項２４に記載のデータ処理システム。
【請求項２６】
前記分岐命令情報が、前記分岐命令が誤予測された場合に使用される分岐命令リダイレクト・アドレスを含む、請求項２５に記載のデータ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはマイクロプロセッサ・アーキテクチャの分野に関し、具体的には、性能を改善するためのギガヘルツ・プロセッサ内の分岐ユニットの効率的な設計に関する。
【０００２】
【従来の技術】
分岐命令は、データ処理システムのプロセッサまたは中央処理装置（ＣＰＵ）が、その分岐命令の実行の次に実行する命令を決定する命令である。分岐命令によって、通常はプロセッサ性能に悪影響を及ぼす複雑さが、命令取出処理に導入される。分岐命令に関連する性能ペナルティを最小化するための以前の方法が、本発明と同一の譲受人に譲渡され、参照によって本明細書に組み込まれる、米国特許第５７９６９９８号明細書に開示されている。極度に高速のプロセッサ（すなわち、１ＧＨｚ超のクロック周波数で動作するプロセッサ）の出現に伴って、命令キャッシュから取り出される命令のセット内の分岐命令を識別し、これらの命令から必要な分岐ターゲット情報を抽出し、必要な場合に、プログラム・フローがリダイレクトを必要とする場合に命令取出ユニットにアドレスを供給することのすべてを、システムのタイミング制約の範囲内で行うことが、ますます困難になりつつある。したがって、マイクロプロセッサのサイズまたは複雑さを大幅に増やさずに、これらの目標を達成することができる命令取出ユニットを有するマイクロプロセッサを提供することが望ましい。
【０００３】
【発明が解決しようとする課題】
マイクロプロセッサ命令を実行し命令取出アドレスを生成する、マイクロプロセッサ、データ処理システム、および関連する方法を開示する。
【課題を解決するための手段】
マイクロプロセッサには、命令取出アドレス・レジスタ（ＩＦＡＲ）および命令処理ユニット（ＩＰＵ）を含む命令取出ユニットが含まれる。ＩＦＡＲは、命令キャッシュにアドレスを供給するように構成される。ＩＰＵは、命令キャッシュから命令のセットを受け取り、プログラム実行フローがリダイレクトを必要とすることを命令のセットから判定した際に命令取出アドレスを生成するのに適する。ＩＰＵは、それについて分岐命令情報を記録しなければならない命令のセット内の分岐命令の数が、単一サイクルで分岐命令情報を記録するためのＩＰＵの容量を超える場合に、プログラム・フローがリダイレクトを必要とするかどうかを判定するように適合される。ＩＰＵには、受け取った命令のセットに対応する分岐ターゲット・アドレスのセットを生成するのに適したアドレス生成ユニットと、入力として分岐ターゲット・アドレスのセットを受け取るように構成されたマルチプレクサとを含めることができる。マルチプレクサの出力は、命令アドレス取出レジスタに供給される。ＩＰＵには、受け取ったアドレスのセットに対応する命令アドレスに続く次のシーケンシャル命令アドレスに対応する次命令アドレスを生成するのに適するアドレス・インクリメンタを含めることができる。この実施形態では、次命令アドレスに、マルチプレクサへの入力が含まれる。ＩＰＵには、さらに、それについて分岐命令情報を記録しなければならない命令のセット内の分岐命令の数が、単一サイクルで分岐命令情報を記録するためのＩＰＵの容量を超え、命令セット内に前に採用されると予測される分岐がない場合に、マルチプレクサの出力として次命令アドレスを選択するように適合されたセレクタ論理を含めることができる。そうでない場合には、セレクタ論理は、採用されると予測される最初の命令の分岐ターゲット・アドレスをマルチプレクサの出力として選択するように適合される。
【０００４】
【発明の実施の形態】
本発明は、さまざまな修正形態および代替形態が可能であるが、その具体的な実施形態を、例として図面に示し、本明細書で詳細に説明する。しかし、図面および本明細書に提示される詳細な説明は、開示される特定の実施形態に本発明を制限する目的のものではなく、逆に、本発明は、請求項によって定義される本発明の趣旨および範囲に含まれるすべての修正形態、同等物、および代替物を含むことを理解されたい。
【０００５】
ここで図１を参照すると、本発明によるデータ処理システム１００の実施形態が示されている。データ処理システム１００には、１つまたは複数の中央処理装置（プロセッサ）１０１ａ、１０１ｂ、１０１ｃなど（集合的にまたは総称的にプロセッサ１０１と呼称する）が含まれる。１実施形態では、各プロセッサ１０１に、縮小命令セット・コンピュータ（ＲＩＳＣ）マイクロプロセッサを含めることができる。ＲＩＳＣプロセッサ全般に関する追加情報は、メイ（Ｃ．  Ｍａｙ）他編、「ＰｏｗｅｒＰＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ：  Ａ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  ａ  Ｎｅｗ  Ｆａｍｉｌｙ  ｏｆ  ＲＩＳＣ  Ｐｒｏｃｅｓｓｏｒｓ」、Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ刊、１９９４年、２ｄ  ｅｄｉｔｉｏｎに記載されている。プロセッサ１０１は、システム・バス１１３を介して、システム・メモリ２５０およびさまざまな他の構成要素に結合される。読取専用メモリ（ＲＯＭ）１０２が、システム・バス１１３に結合され、これには、データ処理システム１００のいくつかの基本機能を制御する基本入出力システム（ＢＩＯＳ）を含めることができる。図１には、さらに、システム・バス１１３に結合された、入出力アダプタ１０７およびネットワーク・アダプタ１０６が示されている。入出力アダプタ１０７は、ハード・ディスク１０３または磁気テープ・ストレージ・ドライブ１０５などの大容量記憶装置１０４とシステム・バス１１３をリンクする。ネットワーク・アダプタ１０６は、システム・バス１１３を外部ネットワークと相互接続し、データ処理システム１００が他のそのようなシステムと通信できるようにする。表示モニタ１３６は、ディスプレイ・アダプタ１１２によってシステム・バス１１３に接続され、ディスプレイ・アダプタ１１２には、グラフィックス集中アプリケーションの性能を向上させるためのグラフィックス・アダプタおよびビデオ・コントローラを含めることができる。１実施形態では、入出力アダプタ１０７、ネットワーク・アダプタ１０６、およびディスプレイ・アダプタ１１２を、中間のバス・ブリッジ（図示せず）を介してシステム・バス１１３に接続される１つまたは複数の入出力バスに接続することができる。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタなどの周辺装置を接続するのに適する入出力バスには、参照によって本明細書に組み込まれる、米国オレゴン州ヒルズバラのＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐから入手可能なＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖ．  ２．２に従って指定されるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｆａｃｅ）バスが含まれる。追加の入出力装置は、ユーザ・インターフェース・アダプタ１０８を介してシステム・バス１１３に接続されるものとして図示されている。キーボード１０９、マウス１１０、およびスピーカ１１１のすべてが、ユーザ・インターフェース・アダプタ１０８を介してシステム・バス１１３にリンクされ、このユーザ・インターフェース・アダプタ１０８には、たとえば、複数の装置アダプタを単一の集積回路に集積したＳｕｐｅｒＩ／Ｏチップを含めることができる。��のようなチップに関する追加情報については、ｗｗｗ．ｎａｔｉｏｎａｌ．ｃｏｍにある、Ｎａｔｉｏｎａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｃｏｒｐｏｒａｔｉｏｎ社の「ＰＣ８７３３８／ＰＣ９７３３８  ＡＣＰＩ  １．０  ａｎｄ  ＰＣ９８／９９  Ｃｏｍｐｌｉａｎｔ  ＳｕｐｅｒＩ／Ｏ  ｄａｔａ  ｓｈｅｅｔ」（１９９８年１１月）を参照されたい。したがって、図１で構成されるように、データ処理システム１００には、プロセッサ１０１の形の処理手段、システム・メモリ２５０および大容量記憶装置１０４の形のストレージ手段、キーボード１０９およびマウス１１０の形の入力手段、およびスピーカ１１１および表示モニタ１３６の形の出力手段が含まれる。１実施形態では、システム・メモリ２５０および大容量記憶装置１０４の一部に、集合的に、図１に示されたさまざまな構成要素の機能を調整するための、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ社のＡＩＸ（登録商標）オペレーティング・システムまたは他の適当なオペレーティング・システムなどのオペレーティング・システムが格納される。ＡＩＸオペレーティング・システムに関する追加の詳細は、参照によって本明細書に組み込まれる、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ社がｗｗｗ．ｉｂｍ．ｃｏｍで提供する、「ＡＩＸ  Ｖｅｒｓｉｏｎ  ４．３  Ｔｅｃｈｎｉｃａｌ  Ｒｅｆｅｒｅｎｃｅ：  Ｂａｓｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  ａｎｄ  Ｅｘｔｅｎｓｉｏｎｓ，  Ｖｏｌｕｍｅｓ  １  ａｎｄ  ２」（資料番号ＳＣ２３−４１５９およびＳＣ２３−４１６０）、「ＡＩＸ  Ｖｅｒｓｉｏｎ  ４．３  Ｓｙｓｔｅｍ  Ｕｓｅｒ’ｓ  Ｇｕｉｄｅ：  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ａｎｄ  Ｎｅｔｗｏｒｋｓ」（資料番号ＳＣ２３−４１２２）、および「ＡＩＸ  Ｖｅｒｓｉｏｎ  ４．３  Ｓｙｓｔｅｍ  Ｕｓｅｒ’ｓ  Ｇｕｉｄｅ：  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  ａｎｄ  Ｄｅｖｉｃｅｓ」（資料番号ＳＣ２３−４１２１）にある。
【０００６】
図２に移ると、本発明の１実施形態によるプロセッサ１０１の簡略化されたブロック図が示されている。図２に示されたプロセッサ１０１には、次に取り出される命令のアドレスを生成するのに適する命令取出ユニット２０２が含まれる。命令取出ユニット２０２によって生成される取り出される命令アドレスは、命令取出アドレス・レジスタ（ＩＦＡＲ）２０４にロードされ、命令キャッシュ２１０に供給される。命令取出ユニット２０２には、さらに、プログラム実行フローに影響する判断の結果の、情報に基づく予測を行うように適合された分岐予測論理２０６が含まれる。本発明による命令取出ユニット２０２には、下で詳細に説明する追加の特徴が含まれる。分岐判断を正しく予測する能力は、命令を投機的にアウトオブオーダで実行することによって改善された性能を達成するためのプロセッサ１０１の総合的な能力の重要な要因である。命令取出ユニット２０２によって作られるアドレスは、命令キャッシュ２１０に供給され、命令キャッシュ２１０には、高速記憶機構内にシステム・メモリの内容のサブセットが含まれる。命令取出ユニット２０２によって生成される命令アドレスが、現在命令キャッシュ２１０内に複写されているシステム・メモリ位置に対応する場合には、命令キャッシュ２１０は、対応する命令をディスパッチ・ユニット２１４に転送する。命令取出ユニット２０２によって生成される命令アドレスに対応する命令が、現在命令キャッシュ２１０内に常駐していない場合には、命令をディスパッチ・ユニット２１４に転送する前に、システム・メモリ内の適当な位置の内容によって命令キャッシュ２１０の内容を更新しなければならない。図示の実施形態では、プロセッサ１０１に、命令キャッシュ２１０とディスパッチ・ユニット２１４の中間にあるクラッキング・ユニット２１２が含まれる。クラッキング・ユニット２１２は、命令のセットを命令グループに編成して、ディスパッチおよび完了追跡を容易にするように適合されている。グループ化された命令およびクラッキング・ユニット２１２の機能の追加の詳細は、参照によって本明細書に組み込まれる、本発明と同一の譲受人を有する関連米国特許出願第０９／４２８３９９号明細書に開示されている。
【０００７】
命令取出ユニット２０２に関する追加の詳細を述べる前に、プロセッサ１０１の図示の実施形態の他の重要な機能ユニットを説明する。命令は、クラッキング・ユニット２１２からディスパッチ・ユニット２１４に転送される。ディスパッチ・ユニット２１４は、どの命令を実行できるかを判定し、これらの実行可能な命令を発行キュー２２０に転送する責任を負う。さらに、ディスパッチ・ユニット２１４は、ディスパッチおよび完了制御論理２１６と通信して、命令が発行された順序およびこれらの命令の完了状況を追跡して、アウトオブオーダ実行を容易にする。上で参照したようにクラッキング・ユニット２１２が入力命令を命令グループに編成するプロセッサ１０１の実施形態では、ディスパッチおよび完了制御論理２１６によって、各命令グループに、発行された命令グループの順序を伝えるグループ・タグ（ＧＴＡＧ）が割り当てられる。１例として、ディスパッチ・ユニット２１４は、連続する命令グループに単調増加する値を割り当てることができる。この配置構成を用いると、小さいＧＴＡＧ値を有する命令グループが、大きいＧＴＡＧ値を有する命令グループの前に発行された（すなわち、それより古い）ことがわかる。ディスパッチおよび完了制御論理２１６に関連して、本発明の１実施形態では、完了テーブル２１８を使用して、発行された命令グループの状況を追跡する。
【０００８】
図２に示されたプロセッサ１０１の実施形態では、命令が、ディスパッチ・ユニット２１４から発行キュー２２０に発行され、命令は、発行キュー２２０で対応する実行パイプ２２２での実行を待つ。プロセッサ１０１には、それぞれがプロセッサの命令セットのサブセットを実行するように設計された、さまざまなタイプの実行パイプを含めることができる。１実施形態では、実行パイプ２２２に、分岐ユニット・パイプライン２２４、ロード・ストア・パイプライン２２６、固定小数点演算ユニット２２８、および浮動小数点演算ユニット２３０を含めることができる。各実行パイプ２２２には、複数のパイプライン・ステージを含めることができる。発行キュー２２０に格納された命令は、さまざまな発行優先順位アルゴリズムのいずれかを使用して、実行パイプ２２２に発行することができる。たとえば、１実施形態では、実行の資格を有する発行キュー２２０内で最も古い保留中の命令が、次に実行パイプ２２２に発行される命令になる。この実施形態では、ディスパッチ・ユニット２１４によって割り当てられるＧＴＡＧ値を使用して、発行キュー２２０内で保留中の命令の相対経過時間を判定する。発行の前に、命令のデスティネーション・レジスタ・オペランドが、使用可能なリネームＧＰＲに割り当てられる。命令が、最終的に発行キュー２２０から適当な実行パイプに転送される時に、実行パイプは、命令の命令コードによって示される適当な動作を実行し、その命令がパイプラインの最終ステージ（符号２３２によって示される）に達する時までに、命令のリネームＧＰＵに命令の結果を書き込む。リネームＧＰＲとそれに対応する設計済みレジスタの間のマッピングが維持される。命令グループのすべての命令（およびより若い命令グループのすべての命令）が、例外を生成せずに終了した時に、完了テーブル２１８の完了ポインタが、次の命令グループまでインクリメントされる。完了ポインタが新しい命令グループにインクリメントされる時に、古い命令グループの命令に関連するリネーム・レジスタが解放され、これによって、古い命令グループの命令の結果がコミットされる。終了した（まだコミットされていない）命令より古い１つまたは複数の命令が例外を生成する場合には、例外を生成した命令およびそれより若いすべての命令が、フラッシュされ、リネーム回復ルーチンが呼び出されて、ＧＰＲマッピングが最後の既知の有効な状態に戻される。
【０００９】
図３に移ると、本発明の１実施形態による命令取出ユニット２０２の追加の詳細が示されている。図示の実施形態では、命令取出ユニット２０２に、命令セット処理ユニット（ＩＰＵ）２１１が含まれ、ＩＰＵ２１１には、分岐が誤予測された場合に分岐命令に関する情報を記憶する分岐命令キュー（ＢＩＱ）３２０が含まれる。ＩＰＵ２１１には、命令キャッシュ２１０から受け取った命令をバッファリングするキャッシュ命令バッファ３０２が含まれる。１実施形態では、命令キャッシュ２１０の各キャッシュ・ラインが、それぞれが８つの３２ビット命令を保持する４つのセクタに編成される。図示の実施形態を、特定のキャッシュ・アーキテクチャに関して説明するが、本発明が命令キャッシュ２１０の特定のアーキテクチャに依存しないことを諒解されたい。ＩＰＵ２１１には、命令キャッシュ２１０がアクセスされる時に、１セクタを構成する８つの命令を受け取る機構が含まれる。この８つの命令のセットは、図３では、符号３０３によって示されている。ＩＰＵ２１１の図示の実施形態は、命令キャッシュ２１０から受け取る命令のセット３０３の命令のいずれかに基づいて、ＩＦＡＲ２０４にアドレスを送って、プログラム実行フローをリダイレクトする必要があるかどうかを判定するのに適する。ＩＰＵ２１１が、８つの命令の１つが、次に実行しなければならない命令に影響すると判定する場合には、ＩＰＵ２１１は、命令キャッシュ２１０に供給される次の命令のアドレスを生成し、生成されたアドレスをＩＦＡＲ２０４に転送する。１実施形態では、ＩＰＵ２１１は、命令のセット３０３の命令のどれかに、採用されると予測される分岐命令が含まれる場合に、ＩＦＡＲ２０４に経路指定されるアドレスを生成する。命令は、キャッシュ・ライン・セクタ内でシーケンシャルに編成され、採用される分岐がない場合に、次に実行される命令が次のシーケンシャル命令であると仮定されることを諒解されたい。したがって、命令キャッシュ２１０から取り出される命令のセット３０３は、シーケンシャル命令である。分岐命令が、採用されると予測される時には、ＩＰＵ２１１は、分岐ターゲット・アドレスの命令をＩＦＡＲ２０４に転送し、その結果、分岐予測が正しいと仮定して、分岐ターゲット・アドレスにある命令を、分岐命令の実行の後のその後続実行を見越して命令キャッシュ２１０から（または、命令が命令キャッシュ２１０内で入手不能である場合にはＬ２キャッシュまたはシステム・メモリ（図示せず）から）取り出せるようにしなければならない。１実施形態では、ＩＰＵ２１１は、採用されると予測される分岐命令である命令のセット３０３内の最初の命令の分岐ターゲットに基づいて、ＩＦＡＲ２０４に送られるアドレスを生成する。採用されると予測される最初の分岐命令は、この命令に続くシーケンシャル命令が実行されないと予測されるので、そのシーケンシャル命令を破棄できるという点で、重要である。
【００１０】
ＩＦＡＲ２０４に送られるアドレス（符号３１４によって識別される）を生成するために、ＩＰＵ２１１には、加算器３０６のセットおよびラッチ３０８の対応するセットを含むアドレス生成ユニット３０４が含まれる。好ましい実施形態では、命令のセット３０３の命令ごとに１つの加算器３０６および１つのラッチ３０８がある。加算器３０６のセットは、対応する命令のオペランドの値に基づいて、分岐ターゲット・アドレスを生成するように構成される。アドレス生成ユニット３０４の図示の実施形態は、命令のセット３０３内の特定の命令が分岐命令であるかどうかに無関係に、命令のセット３０３のそれぞれに対応する分岐ターゲット・アドレス３０９のセットを生成する。具体的に言うと、アドレス生成ユニットが、分岐ターゲット・アドレス３０９のセットを生成し、セレクタ論理３１２が、命令のセット３０３のどの命令が実際に分岐命令であり、どの分岐命令が採用されると予測される分岐命令であるかを判定する。したがって、アドレス生成ユニット３０４によって生成される分岐ターゲット・アドレス３０９の一部は、分岐命令に対応しない無意味なアドレスである。
【００１１】
アドレス生成ユニット３０４が、分岐ターゲット・アドレス３０９のセットを生成している間に、セレクタ論理３１２は、命令のセット３０３内のどの命令が、採用されると予測される最初の分岐命令であるか（それが存在する場合に）を判定する。この評価を行うために、セレクタ論理３１２は、命令のセット３０３のそれぞれを受け取る。さらに、セレクタ論理３１２は、分岐ヒストリ・テーブル２０７または他の適当なプロセッサ１０１の分岐予測情報と通信して、命令のセット３０３のどれに、採用されると予測される分岐命令が（それが存在する場合に）含まれるかを判定する。この情報に基づいて、セレクタ論理３１２は、命令のセット３０３内の最初の採用されると予測される分岐命令（存在する場合に）を判定する。マルチプレクサ３１５は、アドレス生成ユニット３０４によって生成された分岐ターゲット・アドレス３０９のセットを受け取り、セレクタ論理３１２の出力が、マルチプレクサ３１５への選択入力を供給する。
【００１２】
図示の実施形態では、マルチプレクサ３１５が、アドレス・インクリメンタ３１０によって生成された追加のアドレス３１１を受け取るように構成される。アドレス３１１は、ＩＰＵ２１１のＢＩＱ３２０に、記録を必要とする命令のセット３０３内の分岐情報のすべてを単一サイクルで記録するのに十分なリソースが欠けている場合に、ＩＦＡＲ２０４に渡される。１例として、３つの分岐命令を含み、それらのどれもが採用されないと予測される命令のセットを検討されたい。これらの命令の分岐ターゲット・アドレスに関する情報は、分岐の１つが誤予測された（すなわち、採用されないと予測される分岐の１つが実際には採用された）場合に、プログラム実行をリダイレクトするために記録されなければならない。命令のセットに、１つまたは複数の採用されると予測される分岐命令が含まれる場合に、最初の採用されると予測される分岐にシーケンシャルに続く命令のアドレスが、採用されると予測される分岐が採用されない場合にプログラム実行をリダイレクトするためにＢＩＱ３２０に格納される。図示の実施形態では、このリダイレクト・アドレス情報が、ＢＩＱ３２０に格納され、分岐命令に対応する分岐予測が正しかったかどうかを判定するためにその分岐命令を評価できる時に、実際の実行を保留されたままになる。リダイレクト・アドレス情報のほかに、ＢＩＱ３２０内の項目には、さらに、予測情報を含めることができる。リダイレクト・アドレス情報および予測情報を、本明細書では、集合的にＢＩＱ情報と称する。採用されないと予測される分岐の場合は、リダイレクト・アドレスが、分岐命令のターゲット・アドレスであり、採用されると予測される分岐の場合には、リダイレクト・アドレスが、分岐アドレスに続く命令のアドレス（次のシーケンシャル命令アドレス）である。
【００１３】
ＢＩＱ３２０に、記録を必要とする分岐命令情報のすべてを単一サイクルで記録するのに十分なリソースが欠けている場合には、命令取出のタイミングに割り込んで、必要な情報のすべてがＢＩＱ３２０に確実に格納されるようにしなければならない。この命令取出機構での割込みが、ＩＰＵ２１１内で１つまたは複数の命令セットが「失われる」ことをもたらすことを確実にするために、ＩＰＵ２１１の図示の実施形態は、アドレス・インクリメンタ３１０によって生成されるアドレス３１１をマルチプレクサ３１５に供給する。アドレス・インクリメンタ３１０は、アドレス生成ユニット３０４によって現在処理されつつある命令のセットのアドレスを受け取り、次のシーケンシャル・アドレスを作る。１例として、命令のセット３０３に８つの命令が含まれ、その最初の命令が、命令アドレスＸ（バイト単位）を有する場合に、アドレス・インクリメンタ３１０は、値Ｘ＋８×ＢＰＩを作る。ここで、ＢＰＩは、１命令あたりのバイト数を示す。ＢＩＱ３２０に、命令のセット３０３に含まれるＢＩＱ情報のすべてを収容するのに十分なリソースが欠けている場合には、セレクタ論理３１２は、ＩＦＡＲ２０４に転送されるマルチプレクサ３１５の出力としてアドレス・インクリメンタ３１０の出力を選択する。ＢＩＱ３２０に、記録が必要なすべてのＢＩＱ情報を記録するのに十分なリソースが欠けている時に、ＩＦＡＲ２０４に次のシーケンシャル・アドレスを与えることによって、必要な情報のすべてをＢＩＱ３２０に記録するのに必要なタイミング遅延が、ＩＰＵ２１１内で失われるか消費される命令のセットをもたらさなくなる。
【００１４】
ＩＰＵ２１１は、ＢＩＱ３２０が単一のサイクルでＢＩＱ情報を受け取る容量を判定する。図示の実施形態では、ＢＩＱ３２０は、命令のセット３０３と、アドレス生成ユニット３０４によって作られる、それに対応する分岐ターゲット・アドレス３０９とを受け取る、デュアル・ポート式ストレージ機構である。したがって、ＢＩＱ３２０が十分な使用可能な項目を有すると仮定すると、ＢＩＱ３２０は、１サイクルあたり２命令までのＢＩＱ情報を記録することができる。容量判定は、ＢＩＱ３２０の使用可能な項目の数によっても制限される。したがって、この実施形態では、ＩＰＵ２１１は、使用可能な項目の数および使用可能なポートの数を判定することによって、ＢＩＱ情報を記録するためのＢＩＱ３２０の容量を判定する。命令のセット３０３に、２つ以下の分岐命令が含まれる（採用されると予測される、採用されると予測される分岐命令に続く命令を除く）場合に、ＢＩＱ３２０は、単一サイクルですべてのＢＩＱ情報を消費して、取出機構のノンストップ動作を可能にすることができる。その一方で、命令のセット３０３に、ＢＩＱ３２０での記録を必要とする３つ以上の命令が含まれる場合（または、命令のセット３０３に、記録を必要とする１つまたは２つの命令が含まれるが、ＢＩＱに、これらの命令を収容するのに十分な使用可能項目が欠けている場合）、単純に、すべてのＢＩＱ情報をＢＩＱ３２０に格納できるようになるまで、命令取出ユニット２０２が命令キャッシュ２１０に次の命令を供給しなくすることが望ましい。残念ながら、超高速プロセッサ（１ＧＨｚを超える動作周波数を有するプロセッサ）では、シーケンシャル命令フローを維持するのに遅れずに命令取出機構を停止させることが可能でない場合がある。そうである場合には、処理される次の命令のセット（アドレス生成ユニット３０４の入力にある命令のセット）が、正しく処理されず、ＢＩＱ３２０に格納されなくなる可能性がある。この問題は、部分的には、１レベルのバッファリングを可能にするラッチ３０８のセットの組込みによって対処される。しかし、プロセッサのサイクル・タイムが非常に短い場合には、このレベルのバッファリングでさえ、命令のすべてのセットが正しく処理されることを保証するのに不十分である場合がある。追加のレベルのバッファリングをアドレス生成ユニット３０４に追加して、この問題を解決することができるが、３２ビット（またはそれ以上）の命令フォーマットを収容するのに十分な幅のラッチの８つ（以上）のセットの追加は、残念ながら、かなりの面積を必要とするはずである。マルチプレクサ３１５への入力として次のシーケンシャル命令のアドレス３１１を導入することと、命令のセットを処理し、ＢＩＱ３２０に格納することができない時にセレクタ論理３１２がこの追加入力を選択するように設計することによって、本発明は、デバイスのサイズに大幅な追加を行わない解決策を用いて、超高速マイクロプロセッサでの上記のタイミング問題に対処する。
【００１５】
この開示の利益を有する当業者には、本発明が、マイクロプロセッサの改良された命令取出機構を企図するものであることは明白であろう。詳細な説明および図面に示し、説明した本発明の形態は、現在の好ましい例としてのみ解釈されなければならないことを理解されたい。請求項は、開示された好ましい実施形態のすべての変形態様を含むものとして広義に解釈されることが意図されている。
【００１６】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００１７】
（１）マイクロプロセッサ内で命令取出アドレスを判定する方法であって、
命令キャッシュから命令のセットを受け取るステップと、
それについて分岐命令情報を記録しなければならない、前記命令のセット内の命令の数を判定するステップと、
前記分岐命令情報を受け取るための容量を判定するステップと、
分岐命令の前記数が、前記判定された容量を超えることの判定に応答して、次命令アドレスを生成し、前記次命令アドレスを前記命令キャッシュに転送するステップと
を含む方法。
（２）それについて分岐命令情報を記録しなければならない分岐命令の数を判定するステップが、採用されないと予測される分岐命令の数を判定するステップを含む、上記（１）に記載の方法。
（３）前記分岐命令情報を受け取るための容量を判定するステップが、分岐命令キュー内の使用可能項目を判定するステップを含む、上記（１）に記載の方法。
（４）前記分岐命令情報を受け取るための容量を判定するステップが、分岐命令情報を記録するのに使用可能なポートの数を判定するステップを含む、上記（１）に記載の方法。
（５）前記次命令アドレスが、前記受け取った命令のセットのアドレスに続くシーケンシャル・アドレスを含む、上記（１）に記載の方法。
（６）前記判定された容量が十分であることの判定に応答して、命令の前記セット内の、採用されると予測される最初の分岐命令の分岐ターゲット・アドレスに対応する次命令アドレスを生成するステップをさらに含む、上記（１）に記載の方法。
（７）マイクロプロセッサ内の命令取出ユニットであって、
命令キャッシュにアドレスを供給するように構成された命令取出アドレス・レジスタと、
前記命令キャッシュから命令のセットを受け取り、プログラム実行フローがリダイレクトを必要とすることが前記命令のセットから判定される際に命令取出アドレスを生成するのに適する、命令セット処理ユニット（ＩＰＵ）と
を含み、前記ＩＰＵが、それについて分岐命令情報を記録しなければならない、前記命令のセット内の分岐命令の数が、単一サイクル内で前記分岐命令情報を記録するためのＩＰＵの容量を超える場合に、前記プログラム・フローがリダイレクトを必要とするかどうかを判定するように適合されている
命令取出ユニット。
（８）前記ＩＰＵが、受け取った命令の前記セットに対応する分岐ターゲット・アドレスのセットを生成するのに適したアドレス生成ユニットと、分岐ターゲット・アドレスの前記セットを入力として受け取るように構成されたマルチプレクサとを含む、上記（７）に記載の命令取出ユニット。
（９）前記マルチプレクサの出力が、命令アドレス取出レジスタに供給される、上記（８）に記載の命令取出ユニット。
（１０）前記アドレス生成ユニットが、加算器のセットと、前記加算器の出力に結合されたラッチの対応するセットとを含み、加算器の前記セットのそれぞれが、命令の前記セット内の対応する命令のオペランド情報を受け取り、それに基づいて分岐ターゲット・アドレスを生成する、上記（９）に記載の命令取出ユニット。
（１１）前記ＩＰＵが、アドレスの前記受け取ったセットに対応する命令アドレスに続く次のシーケンシャル命令アドレスに対応する次命令アドレスを生成するのに適するアドレス・インクリメンタを含み、前記次命令アドレスが、前記マルチプレクサへの入力を含む、上記（９）に記載の命令取出ユニット。
（１２）前記ＩＰＵが、さらに、それについて分岐命令情報を記録しなければならない、命令の前記セット内の分岐命令の数が、単一サイクル内に前記分岐命令情報を記録するためのＩＰＵの容量を超える場合に、前記マルチプレクサの出力として前記次命令アドレスを選択するように適合されているセレクタ論理を含む、上記（１１）に記載の命令取出ユニット。
（１３）前記セレクタ論理が、それについて分岐命令情報を記録しなければならない、命令の前記セット内の分岐命令の数が、単一サイクル内に前記分岐命令情報を記録するためのＩＰＵの容量を超えない場合に、前記マルチプレクサの出力として、採用されると予測される最初の命令の分岐ターゲット・アドレスを選択するように適合されている、上記（１２）に記載の命令取出ユニット。
（１４）前記ＩＰＵが、受け取った命令の前記セット内の選択された命令から分岐命令情報を受け取るように構成された分岐命令キュー（ＢＩＱ）を含む、上記（７）に記載の命令取出ユニット。
（１５）前記選択された命令が、採用されると予測される最初の命令を含めてそれに先行する分岐命令を含む、上記（１４）に記載の命令取出ユニット。
（１６）前記分岐命令情報が、前記分岐が誤予測された場合に使用される分岐命令リダイレクト・アドレスを含む、上記（１５）に記載の命令取出ユニット。
（１７）マイクロプロセッサ、メモリ、入力手段、および表示手段を含み、前記マイクロプロセッサが命令取出ユニットを含む、データ処理システムであって、命令キャッシュにアドレスを供給するように構成された命令取出アドレス・レジスタと、
前記命令キャッシュから命令のセットを受け取り、プログラム実行フローがリダイレクトを必要とすることが前記命令のセットから判定される際に、命令取出アドレスを生成するのに適する、命令セット処理ユニット（ＩＰＵ）と
を含み、前記ＩＰＵが、それについて分岐命令情報を記録しなければならない、前記命令のセット内の分岐命令の数が、単一サイクル内で前記分岐命令情報を記録するためのＩＰＵの容量を超える場合に、前記プログラム・フローがリダイレクトを必要とすることを判定するように適合されている
データ処理システム。
（１８）前記ＩＰＵが、受け取った命令の前記セットに対応する分岐ターゲット・アドレスのセットを生成するのに適するアドレス生成ユニットと、分岐ターゲット・アドレスの前記セットを入力として受け取るように構成されたマルチプレクサとを含む、上記（１７）に記載のデータ処理システム。
（１９）前記マルチプレクサの前記出力が、命令アドレス取出レジスタに供給される、上記（１８）に記載のデータ処理システム。
（２０）前記アドレス生成ユニットが、加算器のセットと、前記加算器の出力に結合されたラッチの対応するセットとを含み、加算器の前記セットのそれぞれが、命令の前記セット内の対応する命令のオペランド情報を受け取り、それに基づいて分岐ターゲット・アドレスを生成する、上記（１９）に記載のデータ処理システム。
（２１）前記ＩＰＵが、アドレスの前記受け取ったセットに対応する命令アドレスに続く次のシーケンシャル命令アドレスに対応する次命令アドレスを生成するのに適するアドレス・インクリメンタを含み、前記次命令アドレスが、前記マルチプレクサへの入力を含む、上記（１９）に記載のデータ処理システム。
（２２）前記ＩＰＵが、さらに、それについて分岐命令情報を記録しなければならない、命令の前記セット内の分岐命令の数が、単一サイクル内に前記分岐命令情報を記録するためのＩＰＵの容量を超える場合に、前記マルチプレクサの出力として前記次命令アドレスを選択するように適合されているセレクタ論理を含む、上記（２１）に記載のデータ処理システム。
（２３）前記セレクタ論理が、それについて分岐命令情報を記録しなければならない、命令の前記セット内の分岐命令の数が、単一サイクル内に前記分岐命令情報を記録するためのＩＰＵの容量を超えない場合に、前記マルチプレクサの出力として、採用されると予測される最初の命令の分岐ターゲット・アドレスを選択するように適合されている、上記（２２）に記載のデータ処理システム。
（２４）前記ＩＰＵが、受け取った命令の前記セット内の選択された命令から分岐命令情報を受け取るように構成された分岐命令キュー（ＢＩＱ）を含む、上記（１７）に記載のデータ処理システム。
（２５）前記選択された命令が、採用されると予測される最初の命令を含めてそれに先行する分岐命令を含む、上記（２４）に記載のデータ処理システム。
（２６）前記分岐命令情報が、前記分岐命令が誤予測された場合に使用される分岐命令リダイレクト・アドレスを含む、上記（２５）に記載のデータ処理システム。
【図面の簡単な説明】
【図１】データ処理システムのブロック図である。
【図２】図１のデータ処理システム内での使用に適するプロセッサのブロック図である。
【図３】本発明の１実施形態による図２のプロセッサの命令処理ユニットのブロック図である。
【符号の説明】
２１０  命令キャッシュ
２１１  命令セット処理ユニット（ＩＰＵ）
３０２  キャッシュ命令バッファ
３０３  命令のセット
３０４  アドレス生成ユニット
３０６  加算器
３０８  ラッチ
３０９  分岐ターゲット・アドレス
３１０  アドレス・インクリメンタ
３１１  アドレス
３１２  セレクタ論理
３１４  アドレス
３１５  マルチプレクサ
３２０  分岐命令キュー（ＢＩＱ）
【図１】
0003601785.tif 000002
【図２】
0003601785.tif 000003
【図３】
0003601785.tif 000004