トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 マイクロプロセッサ内の命令処理法方、マイクロプロセッサ及び情報処理システム
【発明者】 【氏名】ジェームス・アラン・カール

【氏名】チャールズ・ロバーツ・ムーア

【要約】 【課題】既存フォーマットの命令セットを高速動作に適した内部命令セットに変換するマイクロプロセッサを選択する。

【解決手段】最初、マイクロプロセッサのクラッキング・ユニット212に命令のシーケンスが入力される。命令シーケンス内の短い分岐シーケンスを検出するためコード・シーケンス認識ユニット(CSR)402が構成される。短い分岐シーケンスは条件設定命令、条件分岐、及び条件分岐が行われない場合に実行される少なくとも1つの追加命令を含む。短い分岐シーケンスは内部で述部命令シーケンスに変換される。述部命令シーケンスは条件設定命令及び短い分岐シーケンスの各追加命令に対応した述部命令を含む。述部命令シーケンスはプロセッサの少なくとも1つの機能ユニットで実行される。
【特許請求の範囲】
【請求項1】マイクロプロセッサにおいて命令を処理する方法であって、命令のシーケンスを受信するステップと、前記命令のシーケンス内の、条件設定命令、条件分岐命令、及び該条件分岐が行われない場合に条件付きで実行される追加命令を含む短い分岐シーケンスを検出するステップと、前記短い分岐シーケンスを、条件設定命令及び前記短い分岐シーケンスの追加命令に対応した述部命令を含む述部命令シーケンスに内部で変換するステップと、前記述部命令シーケンスを実行するステップと、を含む、方法。
【請求項2】前記短い分岐シーケンスを検出するステップは、前記条件分岐命令に関連付けられた相対分岐アドレスを計算するステップを含む、請求項1記載の方法。
【請求項3】前記相対分岐アドレスを指定最大値と比較するステップを含む、請求項2記載の方法。
【請求項4】前記受信された命令シーケンスを命令グループに編成するステップを含み、前記指定最大値は命令グループの命令数の関数である、請求項3記載の方法。
【請求項5】命令のシーケンスから命令グループを形成するステップを含み、前記短い分岐シーケンスを検出するステップは、該命令グループの条件分岐命令を検出するステップを含む、請求項1記載の方法。
【請求項6】前記命令グループの最後のスロットに前記条件分岐命令が存在する、請求項5記載の方法。
【請求項7】前記条件分岐命令を含む命令グループに続く命令グループに前記短い分岐シーケンスの各追加命令が存在する、請求項6記載の方法。
【請求項8】前記短い分岐シーケンスを述部命令シーケンスに変換するステップは、前記短い分岐シーケンスの各追加命令を類似の述部命令に変換するステップを含む、請求項1記載の方法。
【請求項9】各追加命令を類似述部命令に変換する前記ステップは、前記短い分岐シーケンスの各追加命令の述部命令コードを決定するステップを含む、請求項8記載の方法。
【請求項10】前記述部命令コードを決定するステップは、各追加命令の命令コードを所定オフセットだけ調整するステップを含む、請求項9記載の方法。
【請求項11】前記述部命令コードを決定するステップは、命令コード・ルックアップ・テーブルから述部命令コードを取得するステップを含む、請求項9記載の方法。
【請求項12】前記述部命令はそれぞれ、実質的命令及び前記条件設定命令により設定される条件を含み、該実質的命令は該条件が真のとき実行される、請求項1記載の方法。
【請求項13】受信した命令のシーケンス内の、条件設定命令、条件分岐命令、及び追加命令を含む短い分岐シーケンスを検出するようにされ、更に、該短い分岐シーケンスを機能的に同等な述部命令シーケンスに変換するようにされたコード・シーケンス認識ユニット(CSR)と、前記述部命令シーケンスを実行するようにされた実行ユニットと、を含む、マイクロプロセッサ。
【請求項14】前記CSRは、前記条件分岐命令に関連付けられた相対分岐アドレスを計算し、該相対分岐アドレスを指定最大値と比較するようにされた、請求項13記載のマイクロプロセッサ。
【請求項15】受信された前記命令のシーケンスを命令グループに編成するようにされ、前記指定最大値は命令グループの命令数の関数である、請求項14記載のマイクロプロセッサ。
【請求項16】前記CSRは、前記短い分岐シーケンスの前記追加命令をそれぞれ類似述部命令に変換するよう構成された、請求項13記載のマイクロプロセッサ。
【請求項17】前記CSRは、前記短い分岐シーケンスの各追加命令の述部命令コードを決定することによって、前記追加命令をそれぞれ類似述部命令に変換するようにされた、請求項16記載のマイクロプロセッサ。
【請求項18】前記CSRが前記述部命令コードを決定するステップは、各追加命令の命令コードを所定オフセットだけ調整するステップを含む、請求項17記載のマイクロプロセッサ。
【請求項19】前記述部命令コードを決定するステップは、命令コード・ルックアップ・テーブルから述部命令コードを取得するステップを含む、請求項17記載のマイクロプロセッサ。
【請求項20】プロセッサ、メモリ、入力手段、及びディスプレイを含むデータ処理システムであって、該プロセッサは、受信した前記命令のシーケンス内の、条件設定命令、条件分岐命令、及び追加命令を含む短い分岐シーケンスを検出するようにされ、更に、該短い分岐シーケンスを機能的に同等な述部命令シーケンスに変換するようにされた、コード・シーケンス認識ユニット(CSR)と、前記述部命令シーケンスを実行するようにされた実行ユニットと、を含む、データ処理システム。
【請求項21】前記CSRは、前記条件分岐命令に関連付けられた相対分岐アドレスを計算し、該相対分岐アドレスを指定最大値と比較するようにされた、請求項20記載のデータ処理システム。
【請求項22】前記CSRは、前記短い分岐シーケンスの各追加命令の述部命令コードを決定することによって、前記追加命令をそれぞれ類似の述部命令に変換するようにされた、請求項20記載のデータ処理システム。
【請求項23】前記CSRが前記述部命令コードを決定するステップは、各追加命令の命令コードを所定オフセットだけ調整するステップを含む、請求項22記載のデータ処理システム。
【請求項24】前記述部命令コードを決定するステップは、命令コード・ルックアップ・テーブルから述部命令コードを取得するステップを含む、請求項22記載のデータ処理システム。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、一般にマイクロプロセッサ・アーキテクチャの分野に関し、特に1つ以上の述部(predicated)命令に変換するのに適した命令グループ内のコード・シーケンスを検出するため命令グループのアーキテクチャとロジックを利用したマイクロプロセッサに関する。
【0002】
【従来の技術】マイクロプロセッサがギガヘルツ・レベルのパフォーマンスを実現したことにより、特定の命令セット・アーキテクチャ(ISA)で動作するよう設計され広く導入されているソフトウェアとの互換性を維持しながら、どのように最新技術を利用するかが大きな課題になっている。この問題に対処するため、既存ISAに従ってフォーマットされた命令を受信し、受信された命令のフォーマットを、ギガヘルツ実行パイプラインでの動作に比較的適した内部ISAに変換するようにされた"レイヤード・アーキテクチャ"マイクロプロセッサが実装されている。
【0003】レイヤード・アーキテクチャでは、プロセッサのパイプラインが増え、所与の時間に"途中"にある可能性のある命令の数も増えるため、レイヤード・アーキテクチャにみられる分岐予測が失敗した場合のペナルティが大きな問題になる。このペナルティを最小にする方法は、例えば分岐命令の数を減らすことである。分岐予測外れは分岐命令でしか発生しないので、分岐命令を含まないコード・シーケンスの予測が外れることはない。分岐命令の数を減らす周知の方法は、述部命令(predicated instruction)を使用することである。述部命令は、述部命令自体に指定された条件が満たされた場合に固定小数点加算等の機能を実行する命令である。条件が満たされない場合、命令はNOPとして扱われる。
【0004】述部命令は、後に条件分岐命令が続く条件設定命令(比較等)を含むコード・シーケンスや、条件のステータスに応じて実行される短いコード・シーケンスに取って代わるので有用である。このようなシーケンスでは、条件分岐により、条件の状態に応じて比較的短いコード・シーケンス回りで分岐が行われる。このようなコード・シーケンスを述部命令で実装した場合、条件分岐ステートメントがなくなり、短いコード・シーケンス内のそれぞれの命令が述部命令に置き換えられる。例えば次のコード・シーケンスを考える。
COMP R1,0 //条件設定命令BEQ LBL //R1=0の場合LBL1に分岐ADD R2,R3,R4ADD R2,R2,R5LBL1,NOPこれは次のように述部命令に置き換えることができる。
COMP R1,0 //条件設定命令PADD R2,R3,R4,NE //条件(NE)が真の場合にのみ述部の追加が実行されるPADD R2,R2,R5,NE //条件(NE)が真の場合にのみ述部の追加が実行される【0005】通常、述部命令は、述部命令をサポートする命令セット及びハードウェアに使用するよう設計されたコンパイラにより、ハイレベル・ソース・コードから生成される。述部命令は、非述部命令とははっきり異なる命令コードを持つことができる。ただし、述部命令を含まない命令セット用にコードをコンパイルするとき、コンパイラは、条件分岐ステートメントを含む実行可能コードを生成せざるを得ない。
【0006】
【発明が解決しようとする課題】短い分岐を特徴とするコード・シーケンスを認識することができ、更に、命令のデコードまたはディスパッチ時にそのシーケンスを述部コード・シーケンスに変換し、述部コード・シーケンスを実行することのできるプロセッサ・ハードウェアを実装することが強く望まれる。更に、述部実行ハードウェアを利用するため既存コードのコンパイルを必要としないよう、この述部命令変換がシステム・ユーザに対してトランスペアレントに行われることが望まれる。
【0007】
【課題を解決するための手段】前記の目標は、ここに開示するように命令を処理する方法及びマイクロプロセッサで達成される。最初、マイクロプロセッサのディスパッチ・ユニットにより命令のシーケンスがディスパッチされる。命令シーケンス内に短い分岐シーケンスを検出するようコード・シーケンス認識ユニット(CSR)が構成される。短い分岐シーケンスは、条件設定命令、条件分岐、及び条件分岐が行われた場合に実行される少なくとも1つの追加命令を含む。短い分岐シーケンスは、条件設定命令及び短い分岐シーケンスの各追加命令に対応した述部命令を含む述部命令シーケンスに内部で変換される。述部命令シーケンスは、プロセッサの少なくとも1つの機能ユニットで実行される。短い分岐シーケンスの検出には、条件分岐命令に関連付けられた相対分岐アドレスの計算と、相対分岐アドレスと指定最大値の比較を含めることができる。実施例では、受信された命令シーケンスは、プロセッサにより命令グループに変換することができる。この例では、短い分岐シーケンスの指定最大命令数は、命令グループ内の命令数の関数とすることができる。好適には命令グループの最後のスロットに条件分岐ステートメントが割当てられる実施例の場合、次の後続命令グループに短い分岐シーケンスの追加命令が存在する。短い分岐シーケンスを述部命令シーケンスに変換するステップには、短い分岐シーケンスの追加命令をそれぞれ類似の述部命令に変換するステップを含めることができる。実施例では、各追加命令を類似の述部命令に変換するステップに、各追加命令の命令コードを所定オフセットだけ調整することによって、短い分岐シーケンス内の各追加命令の述部命令コードを決定するステップが含まれる。他の実施例では、命令コード変換を命令コード・ルックアップ・テーブルで行ってもよい。
【0008】
【発明の実施の形態】図1を参照する。本発明に従ったデータ処理システム100の実施例が示してある。システム100は、1つ以上の中央処理装置(プロセッサ)101a、101b、101c等を含む(プロセッサ101と総称する)。実施例では、各プロセッサ101に縮小命令セット・コンピュータ(RISC)マイクロプロセッサを含めることができる。RISCプロセッサについて詳しくは、C.Mayらによる"PowerPC Architecture:A Specification for a New Family of RISC Processors(Morgan Kaufmann、1994、2nd edition)を参照されたい。プロセッサ101はシステム・メモリ250と他の様々なコンポーネントにシステム・バス113を通して接続される。読取り専用メモリ(ROM)102は、システム・バス113に接続され、システム100の特定の基本機能を制御する基本入出力システム(BIOS)を格納することができる。図1は更に、システム・バス113に接続されたI/Oアダプタ107とネットワーク・アダプタ106を含む。I/Oアダプタ107は、システム・バス113をハード・ディスク103、テープ・ストレージ・ドライブ105等の大容量記憶装置104にリンクする。ネットワーク・アダプタ106は、バス113を外部のネットワーク対応データ処理システム100と相互接続し、他のシステムと通信する。ディスプレイ・モニタ136は、ディスプレイ・アダプタ112によりシステム・バス113に接続される。アダプタ112にはグラフィックス・アダプタを加えて、グラフィックスの多いアプリケーションやビデオ・コントローラのパフォーマンスを上げることもできる。実施例では、アダプタ107、106、及び112を中間バス・ブリッジ(図示せず)を介して、システム・バス113に接続された1つ以上のI/Oバスに接続できる。ハード・ディスク・コントローラ、ネットワーク・アダプタ、グラフィックス・アダプタ等の周辺装置を接続するのに適したI/Oバスとして、PCI Special Interest Group(米オレゴン州ヒルズボロ)から入手できるPCIローカル・バス仕様第2.2版に従って規定されているPCI(Peripheral Component Interface)バス等がある。他の入出力デバイスは、ユーザ・インタフェース・アダプタ108を介してシステム・バス113に接続するよう示してある。キーボード109、マウス110、スピーカ111は全て、ユーザ・インタフェース・アダプタ108を介してバス113に接続され、アダプタ108には、例えば複数のデバイス・アダプタを1つの集積回路に統合するSuperI/Oチップ等がある。このようなチップについて詳しくは、National Semiconductor Corporation(www.national.com)のデータ・シート、PC87338/PC97338 ACPI 1.0 and PC98/99 Compliant Super I/O(November 1998)を参照されたい。図1で構成されている通り、システム100は、プロセッサ101の形の処理手段、システム・メモリ250と大容量記憶装置104を含むストレージ手段、キーボード109及びマウス110等の入力手段、及びスピーカ111、ディスプレイ136を含む出力手段を含む。実施例では、システム・メモリ250と大容量記憶装置104の一部が、ともにIBMのAIX(R)等のオペレーティング・システムを格納し、図1に示す各種コンポーネントの機能を調整する。AIXオペレーティング・システムについて詳しくは、IBM(www.ibm.com)のAIX Version 4.3 Technical Reference:Base Operating System and Extensions、Volumes 1 and 2(オーダ番号SC23-4159、SC23-4160)、AIX Version 4.3 System User's Guide:Communications and Networks(オーダ番号SC23-4122)、及びAIXVersion 4.3 System User's Guide:Operating System and Devices(オーダ番号SC23-4121)を参照されたい。
【0009】図2を参照する。本発明の実施例に従ったプロセッサ101が示してある。図2のプロセッサ101は、次にフェッチされる命令のアドレスを生成するのに適した命令フェッチ・ユニット202を含む。フェッチ・ユニット202により生成された命令アドレスは命令キャッシュ210に送られる。フェッチ・ユニット202には分岐予測ロジックを加えることができる。分岐予測ロジックは、名前の通り、情報をもとにプログラム実行の流れを決める判断の結果を予測するようにされる。分岐の決定を正しく予測する機能は、命令を投機的且つ順不同に実行することによってパフォーマンスを改良するプロセッサ101全体の能力の中で大きな部分を占める。フェッチ・ユニット202により生成された命令アドレスは命令キャッシュ210に送られる。キャッシュ210は、システム・メモリの内容の一部を高速ストレージ機構に格納する。命令キャッシュ210に格納された命令は、好適には第1ISAに従ってフォーマットされる。第1ISAは通常、PowerPCやx86互換命令セット等のレガシISAである。PowerPC(R)命令セットについて詳しくは、Motorola社の"PowerPC 620 RISC Microprocessor User's Manual"(オーダ番号MPC620UM/AD)を参照されたい。フェッチ・ユニット202により生成された命令アドレスが、命令キャッシュ210に現在複製されているシステム・メモリ位置に対応する場合、命令キャッシュ210は、対応する命令をクラッキング・ユニット212に転送する。フェッチ・ユニット202により生成された命令アドレスに対応する命令が、命令キャッシュ210に現在存在しない場合(つまりフェッチ・ユニット202により与えられた命令アドレスが命令キャッシュ210で見つからない場合)、命令は、クラッキング・ユニット212に転送する前に、L2キャッシュ(図示せず)またはシステム・メモリからフェッチする必要がある。
【0010】クラッキング・ユニット212は、入力命令ストリームを変更して実行パイプラインにおいて高い動作周波数(つまり1GHzを超える動作周波数)での動作を考慮して最適化された命令セットを生成する。例えば、実施例のクラッキング・ユニット212は、PowerPCマイクロプロセッサによりサポートされる命令セット等の32ビット幅ISAで命令を受信し、ギガヘルツ以上の周波数範囲で動作する高速実行ユニットでの実行を促進する、好適には幅広い、第2ISAに変換する。クラッキング・ユニット212により生成される幅広い命令フォーマットには、例えばクラッキング・ユニット212により受信された第1フォーマットに従ってフォーマットされた命令で暗示または参照されるだけの(オペランド値等の)情報を格納した、明示フィールドを加えることができる。実施例では、例えばクラッキング・ユニット212により生成された命令のISAは、64ビット幅以上である。
【0011】ここで想定するクラッキング・ユニット212は、実施例では、命令を第1フォーマットから第2フォーマットに、好適には幅広いフォーマットに変換する他に、フェッチされた命令のセットを命令の"グループ"302に編成するよう設計される。グループの例を図3に示す。命令グループ302はそれぞれ、命令スロット304a、304b等のセットを含む(命令スロット304と総称する)。命令のセットを命令グループに編成することで、特に実行中の大量の命令のためリネーム・レジスタのマッピングや完了テーブルを維持するため必要なロジックが簡素化されて高速実行が促進される。
【0012】図3には、クラッキング・ユニット212により実行できる命令のグループ分けについて3つの例が示してある。例1の場合、参照符号301で示した命令セットは、クラッキング・ユニット212により1つの命令グループ302に変換される。本発明の図の実施例では、各命令グループ302が、参照符号304a、304b、304c、304d、及び304eで示した5つのスロットを含む。各スロット304に1つの命令を格納できる。この例の場合、各命令グループに最大5つの命令を含めることができる。1実施例では、クラッキング・ユニット212により受信された命令セット301内の命令が、先に述べた第1ISAに従ってフォーマットされ、グループ302に格納された命令は、幅広い第2のフォーマットに従ってフォーマットされる。命令グループを使用することによって、個々にタグ付けし管理する必要のある命令の数が少なくなり、リネーム/回復/完了テーブルのロジックが簡素化される。命令グループを使用することは、順不同のプロセッサで保留されている命令の管理プロセスを簡素化するため、各命令に関する情報を一部犠牲にすることを想定している。
【0013】図3の例2は、本発明の実施例に従ってクラッキング・ユニット212により実行される命令グループ分けの第2の例を示す。この例は、高速実行を目的に、複雑な命令を簡単な命令のグループに分けるクラッキング・ユニット212の機能を示す。図の例で、2つのロード/更新(LDU)命令のシーケンスが、それぞれスロット304a及び304cのロード命令のペアと、スロット304b及び304dのADD命令のペアを含む命令グループに分けられる。この例では、グループ302は分岐命令を含まないので、命令グループ302の最後のスロット304eは命令を含まない。PowerPCのロード/更新命令は、他の命令セットの類似の命令と同様、命令が複数の汎用レジスタ(GPR)の内容に影響を与えるという意味で複雑な命令である。具体的には、ロード/更新命令は、第1GPRの内容に影響を与えるロード命令と、第2GPRの内容に影響を与えるADD命令とに分けられる。図3の例の命令グループ302では、2つ以上の命令スロット304の命令は、クラッキング・ユニット212により受信される1つの命令に対応する。
【0014】例3では、クラッキング・ユニット212に入る1つの命令が、複数のグループ302を占める命令セットに分けられる。具体的には、例3はLM(load multiple)命令を示す。(PowerPC命令セットに従った)LM命令は、メモリの連続位置の内容を連続番号のGPRにロードする。図の例で、6つの連続メモリ位置のLMは、6つのロード命令に分けられる。プロセッサ101の図の実施例に従った各グループ302に最大5つの命令が含まれ、また、分岐命令に5番目のスロット304eが予約されているので、6レジスタのLMが2つのグループ302a及び302bに分けられる。ロード命令のうち4つは第1グループ302aに格納され、残りの2つのロード命令は第2グループ302bに格納される。このように、例3では、1つの命令が複数の命令グループ302にまたがる命令セットに分けられる。
【0015】図2に戻る。クラッキング・ユニット212の好適実施例により生成された命令グループ302は、基本キャッシュ・ブロック213に転送され、ここに保存され、実行が保留される。図5を参照する。基本キャッシュ・ブロック213の実施例が示してある。図の例の基本キャッシュ・ブロック213は、エントリ502a乃至502nのセット(基本キャッシュ・ブロック・エントリ502と総称する)を含む。1実施例では、基本キャッシュ・ブロック213の各エントリ502が1つの命令グループ302を格納する。また、各エントリ502にエントリ識別子504、ポインタ506、及び命令アドレス(IA)フィールド507を加えることができる。各エントリ502の命令アドレス・フィールド507は、完了テーブル218のIAフィールドに似ている。実施例では、基本キャッシュ・ブロック504の各エントリが、完了テーブル218のエントリに対応し、命令アドレス・フィールド507は、対応する命令グループ302内の第1命令の命令アドレスを示す。1実施例では、ポインタ506は、分岐予測アルゴリズム、分岐履歴テーブル、または他の分岐予測機構をもとに次に実行される命令グループ302のエントリ識別子を示す。
【0016】先に述べた通り、クラッキング・ユニット212で命令グループ302を形成する好適な実施例は、分岐命令を各グループ302の最後のスロット304に割当てる。またクラッキング・ユニット212の好適な実施例は、グループ内の分岐命令の数が1(または1未満)である命令グループ302を生成する。この構成では、各命令グループ302を図6に示すように、分岐ツリー600の"足"を表すものとして考えることができる。ここでグループ302は、対応する命令グループ・エントリ504の値で表される。例えば第1命令グループ302aは、そのエントリ番号1で示される。例えばプロセッサ101の分岐予測機構により、(第2グループ302bに対応する)足1に続いて足2が実行され、足2に続いて足3が実行されることが予測されたとする。基本キャッシュ・ブロック213は、本発明の実施例に従って、これら分岐予測を反映するため、次に実行されるグループ302を指示するようポインタ506を設定する。基本キャッシュ・ブロック213の各エントリ502のポインタ506により、次にディスパッチされる命令グループ302を確認することができる。
【0017】基本キャッシュ・ブロック213は、フェッチ・ユニット202が命令キャッシュ210と連携するようにブロック・フェッチ・ユニット215と連携する。具体的には、ブロック・フェッチ・ユニット215は、基本キャッシュ・ブロック213に与えられる命令アドレスの生成を担当する。ブロック・フェッチ・ユニット215により与えられた命令アドレスは、基本キャッシュ・ブロック213にある命令アドレス・フィールド507のアドレスと比較される。ブロック・フェッチ・ユニット215により与えられた命令アドレスが基本キャッシュ・ブロック213でヒットする場合、対応する命令グループが発行キュー220に転送される。ブロック・フェッチ・ユニット215により与えられたアドレスが基本キャッシュ・ブロック213で見つからない場合、命令アドレスはフェッチ・ユニット202に送り返され、対応する命令が命令キャッシュ210から取得される。基本キャッシュ・ブロック213を使用することで、その面積(ダイ・サイズ)の保存に適した実施例では命令キャッシュ210をなくすことができる。この例の場合、命令は、L2キャッシュ、システム・メモリ等の適切なストレージ機能から取得され、クラッキング・ユニット212に直接与えられる。ブロック・フェッチ・ユニット213により生成された命令アドレスが基本キャッシュ・ブロック213で見つからない場合、対応する命令が、命令キャッシュ210ではなくL2キャッシュまたはシステム・メモリから取得される。
【0018】プロセッサ101の図の例は更に、ディスパッチ・ユニット214を示す。ディスパッチ・ユニット214は、各命令グループの命令を対応する発行キュー220に転送する前に必要なリソースが全て使用できるようにする。またディスパッチ・ユニット214はディスパッチ/完了制御ロジック216と通信し、命令が発行される順序及びそれらの命令の完了ステータスを管理し、順不同実行を促進する。前記のようにクラッキング・ユニット212が入力命令を命令グループに編成するプロセッサ101の実施例では、完了/制御ロジック216により各命令グループ302にグループ・タグ(GTAG)が割当てられ、発行された命令グループの順序が伝えられる。例えばディスパッチ・ユニット214は、連続した命令グループに単調に増加する値を割当てることができる。この構成で、GTAG値が小さい命令グループは、GTAG値が大きい命令グループより前に発行されたこと(つまり若いこと)がわかる。プロセッサ101の図の例は、ディスパッチ・ユニット214を個別機能ブロックとして示しているが、基本キャッシュ・ブロック213の命令グループ編成は、ディスパッチ・ユニット214の機能を組み込むのに適している。ディスパッチ・ユニット214は、他の実施例によっては、発行キュー220に直接接続された基本キャッシュ・ブロック213に組み込まれる。
【0019】完了テーブル218は、本発明の1実施例では、ディスパッチ/完了制御ロジック216と関連して、発行済み命令グループのステータスを管理するため用いられる。図7を参照する。完了テーブル218の1実施例が示してある。この例で完了テーブル218は、エントリ702a乃至702nのセット(完了テーブル・エントリ702と総称する)を含む。この例の完了テーブル218の各エントリ702は、命令アドレス(IA)フィールド704とステータス・ビット・フィールド706を含む。この例では、各命令グループ302のGTAG値は、命令グループ302に対応する完了情報が保存された完了テーブル218のエントリ702を識別する。完了テーブル218のエントリ1に保存された命令グループ302は、GTAG値が1である。この例の場合、完了テーブル218には更に、"ラップ・アラウンド"・ビットを加え、GTAG値の小さい命令グループがGTAG値の大きい命令グループより実際に若いことを示すことができる。1実施例では、命令アドレス・フィールド704に、対応する命令グループ302の第1スロット304aの命令のアドレスが含まれる。ステータス・フィールド706には、例えば完了テーブル218の対応するエントリ702を使用できるかどうか、または保留中の命令グループにエントリが割当てられているかどうかを示す1つ以上のステータス・ビットを加えることができる。
【0020】図2に示すプロセッサ101の実施例では、命令はディスパッチ・ユニット214から発行キュー220に発行され、そこで、対応する実行パイプ222での実行を待機する。プロセッサ101には、それぞれプロセッサの命令セットの一部を実行するよう設計された様々な種類の実行パイプを追加することができる。実施例によっては、実行パイプ222に分岐ユニット・パイプライン224、ロード・ストア・パイプライン226、固定小数点演算ユニット228、及び浮動小数点ユニット230を使用できる。実行パイプ22はそれぞれ2つ以上のパイプライン・ステージで構成してもよい。発行キュー220に格納された命令は、様々な発行優先順位アルゴリズムを使用して実行パイプ222に発行することができる。1実施例では、例えば発行キュー220で最も古い保留中の命令は、実行パイプ222に次に発行される命令である。この例で、ディスパッチ・ユニット214により割当てられたGTAG値は、発行キュー220で保留中の命令の相対エージ(age)を確認するため用いられる。発行前、使用可能なリネームGPRに命令の宛先レジスタ・オペランドが割当てられる。命令が最終的に発行キュー220から対応する実行パイプに転送されたとき、実行パイプは、命令の命令コードにより指示された操作を実行し、命令がパイプラインの最終ステージに達するまでに命令の結果を命令のリネームGPRに書込む。リネームGPRとこれに対応するアーキテクト・レジスタ(architected register)の間にマッピングが維持される。命令グループの全ての命令(及び若い命令グループの全命令)が、例外を生成せずに終了すると、完了テーブル218の完了ポインタが次の命令グループに増分される。完了ポインタが新しい命令グループに増分されると、古い命令グループの命令に関連付けられたリネーム・レジスタは解除され、よって古い命令グループの命令の結果がコミットされる。終了した(ただしまだコミットされていない)命令よりも古い命令が1つ以上例外を生成した場合、例外を生成した命令及び若い全ての命令はフラッシュされ、リネーム/回復ルーチンが呼び出されてGPRマッピングが既知の最後の有効状態に戻される。
【0021】予測された分岐が取られない場合(分岐予測外れ)、実行パイプ222と発行キュー220で保留されている命令はフラッシュされる。また予測が外れた分岐に関連付けられた基本キャッシュ・ブロック・エントリ502のポインタ506は更新され、取られた最も新しい分岐が反映される。この更新プロセスの例を図5に示す。これはプログラムの実行結果として足1(命令グループ302a)から足4(命令グループ302d)に分岐した場合である。エントリ502aのポインタ506は先に、基本キャッシュ・ブロック213番号2のエントリに存在する命令グループ(つまりグループ302b)への分岐を予測したので、命令グループ302aからグループ302dへの実際の分岐は予測できなかった。予測が外れた分岐は検出され、ブロック・フェッチ・ユニット215にフィードバックされ、パイプライン222それぞれの基本キャッシュ・ブロック213と最終ステージ232で保留されている命令はフラッシュされ、基本キャッシュ・ブロック213のエントリ4にある命令グループ302dから実行が再開される。また、基本キャッシュ・ブロック・エントリ502aのポインタ506は、その前の値2から新しい値4に変更され、最も新しい分岐情報が反映される。本発明は、基本キャッシュ・ブロック213とブロック・フェッチ・ユニット215を実行パイプライン222に近接させることによって、予測の外れた分岐について、パフォーマンス上のペナルティの縮小を図る。具体的には、本発明は、基本キャッシュ・ブロック213を命令クラッキング・ユニット212の"下流"側に実装することにより、分岐予測外れのフラッシュ・パスからクラッキング・ユニット212に保留される命令をなくし、よって、分岐予測外れの後にパージする必要のあるパイプライン・ステージの数を減らし、パフォーマンス上のペナルティを少なくしている。また、基本キャッシュ・ブロック213は、ディスパッチ/完了制御ユニット216と完了テーブル218の編成に一致した構造を持つキャッシング機構を想定しており、よって、以下に述べるように、関連ロジックの編成が簡素化され、基本キャッシュ・ブロックを拡張して実装しやすくなる。
【0022】分岐予測外れにより生じるパフォーマンス・ペナルティは、コード・シーケンス認識ユニット(CSR)を加えることにより、本発明に従ったプロセッサ101で最小になる。CSRは、好適には短い分岐シーケンスを含むコード・シーケンスを検出するよう構成される。短い分岐シーケンスの特徴は、条件設定命令とこれに続く条件分岐命令及び"実質的(substantive)"命令の短いシーケンスである。条件設定命令は通常、PowerPC(R)アーキテクチャの条件レジスタまたは他のアーキテクチャの同様のレジスタの内容に変更を加える比較命令等の命令である。実質的命令は通常、1つ以上の汎用レジスタまたは浮動小数点レジスタの内容に影響を与える加算命令等の命令である。CSRは、短い分岐シーケンスを検出すると、シーケンスから分岐命令をなくし、実質的命令をそれぞれ類似の述部命令に置き換えることで、機能的に同等な述部コード・シーケンスを生成する。
【0023】先に述べたクラッキング・ユニット212を含むプロセッサ101の実施例では、図4に参照符号402として示したCSRをクラッキング・ユニット212に組み込むことができる。この例のCSR402は、命令グループ302の条件分岐命令を検出するよう構成される。条件分岐が検出されると、条件分岐命令の分岐アドレスが条件分岐命令の命令アドレスと比較され、シーケンスに短い分岐シーケンスが含まれるか決定される。分岐アドレスと分岐命令の命令アドレスに基づいて、相対アドレスが計算される。相対アドレスは、分岐アドレスと命令アドレスのオフセット、もしくは、その関数とすることができる。相対アドレスをあらかじめ定められた所定値と比較することで、短いシーケンスが含まれるかを決定することができる。短い分岐シーケンスは、命令グループ302に含まれ得る命令の数を超えない実質的命令を含む分岐シーケンスと定義することもできる。前記の所定値は、命令グループに加えることができる命令数の関数と定義することができる。例えばクラッキング・ユニット212により生成された命令グループ302に4つの実質的命令を加えることができる場合、短い分岐シーケンス内の実質的命令数の上限は4にすることができる。
【0024】固定長命令を使用するアーキテクチャでは、条件分岐命令が(取られたとき)ジャンプする命令の数は、条件分岐命令の命令アドレスと分岐先の間のオフセットを1命令当たりのバイト数で割ることによって計算することができる。分岐ループ内の命令数が、短い分岐シーケンスに可能な命令の最大数を超えない場合、CSR402はコード・シーケンスを機能的に同等な述部コード・シーケンス404に変換するため、条件分岐命令を削除し、実質的命令をこれに等しい述部命令に変換する。
【0025】このコード・シーケンス変換プロセスは、1実施例では、非述部命令の関数である命令コードで述部命令を実装することによって簡素化される。例えば述部命令それぞれに、対応する非述部命令コードからの固定オフセットである命令コードを割当てることができる。述部命令コードの関数として述部命令コードを実装するのが現実的ではないアーキテクチャに適した他の実施例では、各実質的命令と同等な述部命令コードを指定する命令コード・ルックアップ・テーブル(LUT)403をCSR402に使用することができる。CSR402は、変換時、元のコード・シーケンスの非述部の実質的命令それぞれに対応する述部命令コードを取得する。述部命令のオペランドは非述部命令と同じままである。述部命令の条件コードの実行は、元のコード・シーケンスの条件分岐命令から決定され、各述部命令に追加される。
【0026】前記のように、クラッキング・ユニット212により命令グループが生成され、分岐命令が好適には命令グループ302の最後のスロットに割当てられる実施例の場合、CSR402は、述部命令シーケンスを形成する際に、連続した命令グループの内容を評価するよう構成することができる。この例の場合、各命令グループ302の最後のスロットを調べることによってコード・シーケンスが検出される。最後のスロットに条件分岐命令が含まれる場合、CSR402は、先に述べたように、分岐ターゲットに短い分岐が含まれるか決定する。短い分岐の最大長が、命令グループ302に含まれる実質的命令の最大数として定義される場合、CSR402は、条件分岐を含む命令グループ302の直後のグループ302の実質的命令を変換するだけでよい。
【0027】ここで想定している述部実行をサポートするため、FXU228、FPU230、LSU226を含む実行ユニットがそれぞれ述部命令を実行するよう構成される。実施例については、この述部回路に、述部条件が評価される基本実行パイプライン・ステージを加えてもよい。述部条件が真のとき、実行ユニットは命令を従来の方法で実行する。述部条件が偽のとき、命令は、a)ターゲット・レジスタを命令実行前と同じ状態に残し、b)述部命令の結果に依存する他の命令に処理を進めることを指示するように、実行パイプラインから再試行する必要がある。これらの目的は、述部命令の結果を破棄し、述部命令の結果がコミットされたことを全ての依存命令にブロードキャストすることによって果たすことができる。他の実施例では、述部命令の結果を2つの命令として発行し、うち1つのみコミットすることができる。命令の1つは、述部命令と同じ計算(または他の機能)を実行し、もう1つは機能を実行しない。コミットされる命令は述部条件による。他の実施例では、述部条件が偽であることが確認されて、述部命令により、リネーム・ロジックを適用すると同時に、ターゲット・レジスタの読取りとその直後の書戻しを実行し、NOPをシミュレートすることができる。
【0028】開示内容を利用することのできる当業者には明らかなように、本発明は、短い分岐コード・シーケンスをハードウェアにより述部命令コード・シーケンスに変換できるようにし、変換されたシーケンスの実行を可能にすることによりパフォーマンスを改良することを想定している。ここに詳述した本発明の形式や図は、現在好適な例にすぎない。特許請求の範囲は、ここに開示した好適な実施例の全ての変形を包含するよう広く解釈されるべきものである。
【0029】まとめとして、本発明の構成に関して以下の事項を開示する。
【0030】(1)マイクロプロセッサにおいて命令を処理する方法であって、命令のシーケンスを受信するステップと、前記命令のシーケンス内の、条件設定命令、条件分岐命令、及び該条件分岐が行われない場合に条件付きで実行される追加命令を含む短い分岐シーケンスを検出するステップと、前記短い分岐シーケンスを、条件設定命令及び前記短い分岐シーケンスの追加命令に対応した述部命令を含む述部命令シーケンスに内部で変換するステップと、前記述部命令シーケンスを実行するステップと、を含む、方法。
(2)前記短い分岐シーケンスを検出するステップは、前記条件分岐命令に関連付けられた相対分岐アドレスを計算するステップを含む、前記(1)記載の方法。
(3)前記相対分岐アドレスを指定最大値と比較するステップを含む、前記(2)記載の方法。
(4)前記受信された命令シーケンスを命令グループに編成するステップを含み、前記指定最大値は命令グループの命令数の関数である、前記(3)記載の方法。
(5)命令のシーケンスから命令グループを形成するステップを含み、前記短い分岐シーケンスを検出するステップは、該命令グループの条件分岐命令を検出するステップを含む、前記(1)記載の方法。
(6)前記命令グループの最後のスロットに前記条件分岐命令が存在する、前記(5)記載の方法。
(7)前記条件分岐命令を含む命令グループに続く命令グループに前記短い分岐シーケンスの各追加命令が存在する、前記(6)記載の方法。
(8)前記短い分岐シーケンスを述部命令シーケンスに変換するステップは、前記短い分岐シーケンスの各追加命令を類似の述部命令に変換するステップを含む、前記(1)記載の方法。
(9)各追加命令を類似述部命令に変換する前記ステップは、前記短い分岐シーケンスの各追加命令の述部命令コードを決定するステップを含む、前記(8)記載の方法。
(10)前記述部命令コードを決定するステップは、各追加命令の命令コードを所定オフセットだけ調整するステップを含む、前記(9)記載の方法。
(11)前記述部命令コードを決定するステップは、命令コード・ルックアップ・テーブルから述部命令コードを取得するステップを含む、前記(9)記載の方法。
(12)前記述部命令はそれぞれ、実質的命令及び前記条件設定命令により設定される条件を含み、該実質的命令は該条件が真のとき実行される、前記(1)記載の方法。
(13)受信した命令のシーケンス内の、条件設定命令、条件分岐命令、及び追加命令を含む短い分岐シーケンスを検出するようにされ、更に、該短い分岐シーケンスを機能的に同等な述部命令シーケンスに変換するようにされたコード・シーケンス認識ユニット(CSR)と、前記述部命令シーケンスを実行するようにされた実行ユニットと、を含む、マイクロプロセッサ。
(14)前記CSRは、前記条件分岐命令に関連付けられた相対分岐アドレスを計算し、該相対分岐アドレスを指定最大値と比較するようにされた、前記(13)記載のマイクロプロセッサ。
(15)受信された前記命令のシーケンスを命令グループに編成するようにされ、前記指定最大値は命令グループの命令数の関数である、前記(14)記載のマイクロプロセッサ。
(16)前記CSRは、前記短い分岐シーケンスの前記追加命令をそれぞれ類似述部命令に変換するよう構成された、前記(13)記載のマイクロプロセッサ。
(17)前記CSRは、前記短い分岐シーケンスの各追加命令の述部命令コードを決定することによって、前記追加命令をそれぞれ類似述部命令に変換するようにされた、前記(16)記載のマイクロプロセッサ。
(18)前記CSRが前記述部命令コードを決定するステップは、各追加命令の命令コードを所定オフセットだけ調整するステップを含む、前記(17)記載のマイクロプロセッサ。
(19)前記述部命令コードを決定するステップは、命令コード・ルックアップ・テーブルから述部命令コードを取得するステップを含む、前記(17)記載のマイクロプロセッサ。
(20)プロセッサ、メモリ、入力手段、及びディスプレイを含むデータ処理システムであって、該プロセッサは、受信した前記命令のシーケンス内の、条件設定命令、条件分岐命令、及び追加命令を含む短い分岐シーケンスを検出するようにされ、更に、該短い分岐シーケンスを機能的に同等な述部命令シーケンスに変換するようにされた、コード・シーケンス認識ユニット(CSR)と、前記述部命令シーケンスを実行するようにされた実行ユニットと、を含む、データ処理システム。
(21)前記CSRは、前記条件分岐命令に関連付けられた相対分岐アドレスを計算し、該相対分岐アドレスを指定最大値と比較するようにされた、前記(20)記載のデータ処理システム。
(22)前記CSRは、前記短い分岐シーケンスの各追加命令の述部命令コードを決定することによって、前記追加命令をそれぞれ類似の述部命令に変換するようにされた、前記(20)記載のデータ処理システム。
(23)前記CSRが前記述部命令コードを決定するステップは、各追加命令の命令コードを所定オフセットだけ調整するステップを含む、前記(22)記載のデータ処理システム。
(24)前記述部命令コードを決定するステップは、命令コード・ルックアップ・テーブルから述部命令コードを取得するステップを含む、前記(22)記載のデータ処理システム。
【出願人】 【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【出願日】 平成13年9月27日(2001.9.27)
【代理人】 【識別番号】100086243
【弁理士】
【氏名又は名称】坂口 博 (外2名)
【公開番号】 特開2002−149401(P2002−149401A)
【公開日】 平成14年5月24日(2002.5.24)
【出願番号】 特願2001−298397(P2001−298397)