(57)【要約】【課題】マイクロプロセッサによりレジスター再命名の以前にレジスターパッキングを遂行する方法及び装置を提供する。【解決手段】本発明の実施形態による方法は、１つ又はそれ以上の命令からデコーディングされる複数のマイクロオペレーションを受信する段階、マイクロオペレーションに含まれた複数のレジスターを複数のパッキングされたレジスターを含むパッキングされたレジスター構造にパッキングする段階、及びパッキングされたレジスターをレジスター再命名のために伝送する段階とにより構成される。マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターは、パッキングされたレジスター構造にパッキングされない。【選択図】図２
2014175005.tif 000002
【特許請求の範囲】
【請求項１】
命令処理方法において、
１つ又はそれ以上の命令からデコーディングされた複数のマイクロオペレーションを受信する段階と、
前記マイクロオペレーションに含まれた複数のレジスターを、複数のパッキングされたレジスターを含むパッキングされたレジスター構造にパッキングする段階と、
前記パッキングされたレジスターをレジスター再命名のために伝送する段階と、を含み、
前記マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターは、前記パッキングされたレジスター構造にパッキングされないことを特徴とする命令処理方法。
【請求項２】
前記パッキングされたレジスターを再命名する段階をさらに含み、
前記再命名する段階は、前記パッキングされたレジスターがレジスター再命名のために読み出し、書き込まれる再命名ポートを有する再命名器を使用して遂行され、
前記再命名ポートの数は、前記マイクロオペレーションが１サイクルにオペランド（ｏｐｅｒａｎｄｓ）として有するように許容される全体レジスターの数より少ないように設定されることを特徴とする請求項１に記載の命令処理方法。
【請求項３】
前記パッキングされたレジスター構造にパッキングされるレジスターの各々は、前記全体レジスターの中から選択される予め定められたレジスターの中において選択され、
前記パッキングされるレジスターの各々は、前記予め定められたレジスターに対する有効性情報及びエイジ情報に基づいて選択されることを特徴とする請求項２に記載の命令処理方法。
【請求項４】
前記パッキングされたレジスター構造は、前記パッキングされたレジスター構造にパッキングされる前記レジスターの各々に対する特性情報をさらに含み、
前記特性情報は、
前記レジスターの各々が有効なソース又は目的地情報を有するか否かに対する情報と、
前記レジスターの各々の識別子と、
前記マイクロオペレーションの中の前記レジスターの各々を含むマイクロオペレーションの識別子の中の少なくとも１つと、を含むことを特徴とする請求項１に記載の命令処理方法。
【請求項５】
前記マイクロオペレーションの識別子は、前記マイクロオペレーションをデコーディングしたデコーダーに対する情報を含み、
前記特性情報は、前記レジスターの各々に対するエイジ情報をさらに含むことを特徴とする請求項４に記載の命令処理方法。
【請求項６】
前記パッキングされたレジスターの数が予め定められた数より大きいか否かを判別する段階をさらに含み、
前記パッキングされたレジスターの数が前記予め定められた数より大きくなければ、前記パッキングされたレジスターは、現在のサイクルによりレジスター再命名のために伝送され、
前記パッキングされたレジスターの数が前記予め定められた数より大きいと判別されれば、前記複数のマイクロオペレーションの中の１つ又はそれ以上のマイクロオペレーションに含まれた１つ又はそれ以上のレジスターが後続サイクルによりレジスター再命名のために伝送されることを特徴とする請求項１に記載の命令処理方法。
【請求項７】
前記予め定められた数は、前記マイクロオペレーションがオペランドとして有するように許容された全体レジスターの数より少なく、
前記１つ又はそれ以上のマイクロオペレーションは、前記複数のマイクロオペレーションのエイジに基づいて前記複数のマイクロオペレーションの中から選択されることを特徴とする請求項６に記載の命令処理方法。
【請求項８】
前記複数のレジスターは、少なくとも１つのソースレジスター及び少なくとも１つの目的地レジスターを含み、
前記パッキングされたレジスター構造は、
前記少なくとも１つのソースレジスターをパッキングすることによって生成された少なくとも１つのパッキングされたソースレジスターを含むパッキングされたソース構造と、
前記少なくとも１つの目的地レジスターをパッキングすることによって生成された少なくとも１つのパッキングされた目的地レジスターを含むパッキングされた目的地構造と、を含むことを特徴とする請求項１に記載の命令処理方法。
【請求項９】
前記パッキングされたソース構造は、前記少なくとも１つのパッキングされたソースレジスターの起源となるソースレジスターに対するソース特性情報をさらに含み、
前記パッキングされた目的地構造は、前記少なくとも１つのパッキングされた目的地レジスターの起源となる目的地レジスターに対する目的地特性情報をさらに含み、
前記ソース特性情報は、
前記ソースレジスターの識別子と、
前記マイクロオペレーションの中の前記ソースレジスターを含むマイクロオペレーションの識別子の中の少なくとも１つと、を含み、
前記目的地特性情報は、
前記目的地レジスターが有効な目的地情報を有するか否かに対する情報と、
前記目的地レジスターの識別子と、
前記マイクロオペレーションの中における前記目的地レジスターを含むマイクロオペレーションの識別子と、を含み、
前記ソース特性情報及び前記目的地特性情報の中の少なくとも１つは前記ソースレジスター及び前記目的地レジスターに対するエイジ情報を含むことを特徴とする請求項８に記載の命令処理方法。
【請求項１０】
命令処理装置において、
１つ又はそれ以上の命令からデコーディングされる複数のマイクロオペレーションを受信し、前記マイクロオペレーションに含まれた複数のレジスターを複数のパッキングされたレジスターを含むパッキングされたレジスター構造にパッキングし、そして前記パッキングされたレジスターをレジスター再命名のために伝送するように構成されるパッキング器を含み、
前記マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターは、前記パッキングされたレジスター構造にパッキングされないことを特徴とする命令処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令処理方法及び命令処理装置に係り、より詳しくはレジスター再命名段階の以前にマイクロプロセッサにより実行されるマイクロオペレーションに基づきソースレジスターフィールド（ｓｏｕｒｃｅ  ｒｅｇｉｓｔｅｒ  ｆｉｅｌｄｓ）及び目的地レジスターフィールド（ｄｅｓｔｉｎａｔｉｏｎ  ｒｅｇｉｓｔｅｒ  ｆｉｅｌｄｓ）をパッキング（ｐａｃｋｉｎｇ）することに関する。
【背景技術】
【０００２】
現代のマイクロプロセッサは、一般的にマクロ命令（ｍａｃｒｏ  ｉｎｓｔｒｕｃｔｉｏｎｓ）のような高レベル命令を、内部に提供されている複数のデコーダーにより低レベルのハードウェアにおいて実行可能であるマイクロオペレーションに分解又は翻訳して、データ処理の効率性を向上させる。デコーディングされたマイクロオペレーションの数及びフォーマット（ｆｏｒｍａｔ）は高レベル命令セット構造（ｈｉｇｈ−ｌｅｖｅｌ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ａｒｃｈｉｔｅｃｔｕｒｅ）及び内部マイクロプロセッサ構造に依存する。
【０００３】
マイクロオペレーションは一般的に２つ又は３つのソースオペランド（ｏｐｅｒａｎｄｓ）及び１つ又は２つの目的地オペランド（ｏｐｅｒａｎｄｓ）を有する。ソースオペランドはソースデータを格納するレジスターを識別するために使用される。目的地オペランドは、マイクロオペレーションの演算が遂行された後にマイクロオペレーションの演算結果が書き込まれるレジスターを識別するために使用される。
【０００４】
特定のマイクロオペレーションのソース及び目的地レジスターの数は、実行される命令のタイプに依存する。例えば、足し算ＡＤＤ命令は２つのソースオペランド及び１つの目的地オペランドを有する。積和演算（ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ）命令は３つのソースオペランド及び１つ又はそれ以上の目的地オペランドを有する。分岐（ｂｒａｎｃｈ）命令は間接分岐アドレス（ｉｎｄｉｒｅｃｔ  ｂｒａｎｃｈ  ａｄｄｒｅｓｓ）を特定の１つのソースオペランドとしてのみ有し、目的地オペランドを有しない。マイクロオペレーションがデコーディングされて出力された後、マイクロオペレーションは再命名器（ｒｅｎａｍｅｒ）へ伝送され、再命名器によりマイクロオペレーションがスケジュール（ｓｃｈｅｄｕｌｅ）され、実行される前にマイクロオペレーションのレジスターが再命名される。レジスター再命名（ｒｅｇｉｓｔｅｒ  ｒｅｎａｍｉｎｇ）は読出し後書込み（ｗｒｉｔｅ−ａｆｔｅｒ−ｒｅａｄ）などのデータ変更の危険を防止するために通常的に使用される技術である。読出し後書込みはマイクロオペレーションの非順次実行（ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｅｘｅｃｕｔｉｏｎ）による危険をもたらす。再命名プロセスは各レジスターに対して再命名テーブルをチェックする動作、他の又は追加的な物理レジスターを割り当ててマイクロオペレーションの目的地レジスターを代替する動作、及びマイクロオペレーション間の依存性に対するデータを書き込む動作を含む。再命名されたマイクロオペレーションはスケジューラー及び実行部へ伝送される。実行されたマイクロオペレーションは目的地レジスター及び／又はメモリ又はストレージ（ｓｔｏｒａｇｅ）のキャッシュ（ｃａｃｈｅ）へ伝送される。
【０００５】
レジスター再命名は高速マイクロプロセッサデザインにおいて、時間及び動作性能のボトルネック（ｂｏｔｔｌｅｎｅｃｋ）である。ソース及び目的地レジスターの数が増加する時、この制限はさらに深刻になる。全体的な動作性能を向上させるために、再命名器の再命名ポートの数を増加させずに、サイクル当たり再命名されるマイクロオペレーションの数を最大化することが有益である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第７，６８５，４０８号公報
【特許文献２】米国特許公開第２００８／０７７７７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は再命名プロセスに関連した上述の問題点を解決するためになされたものであって、本発明の目的は再命名器の再命名ポートの数を増加させずに、サイクル当たり再命名されるマイクロオペレーションの数を増加させる方法及び装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の実施形態による命令処理方法は、１つ又はそれ以上の命令からデコーディングされた複数のマイクロオペレーションを受信する段階と、前記マイクロオペレーションに含まれた複数のレジスターを、複数のパッキングされたレジスターを含むパッキングされたレジスター構造にパッキングする段階と、前記パッキングされたレジスターをレジスター再命名のために伝送する段階と、を含み、前記マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターは、前記パッキングされたレジスター構造にパッキングされない。
【０００９】
実施形態として、前記パッキングされたレジスターを再命名する段階をさらに含み、
前記再命名する段階は、前記パッキングされたレジスターがレジスター再命名のために読み出し、書き込まれる再命名ポートを有する再命名器を使用して遂行され、前記再命名ポートの数は、前記マイクロオペレーションが１サイクルにオペランド（ｏｐｅｒａｎｄｓ）として有するように許容される全体レジスターの数より少ないように設定される。
【００１０】
実施形態として、前記パッキングされたレジスター構造にパッキングされるレジスターの各々は、前記全体レジスターの中から選択される予め定まれたレジスターの中において選択され、前記パッキングされるレジスターの各々は前記予め定められたレジスターに対する有効性情報及びエイジ情報に基づいて選択される。
【００１１】
実施形態として、前記パッキングされたレジスター構造は、前記パッキングされたレジスター構造にパッキングされる前記レジスターの各々に対する特性情報をさらに含み、前記特性情報は、前記レジスターの各々が有効なソース又は目的地情報を有するか否かに対する情報と、前記レジスターの各々の識別子と、前記マイクロオペレーションの中の前記レジスターの各々を含むマイクロオペレーションの識別子の中の少なくとも１つと、を含む。
【００１２】
実施形態として、前記マイクロオペレーションの識別子は、前記マイクロオペレーションをデコーディングしたデコーダーに対する情報を含み、前記特性情報は、前記レジスターの各々に対するエイジ情報をさらに含む。
【００１３】
実施形態として、前記パッキングされたレジスターの数が予め定められた数より大きいか否か判別する段階をさらに含み、前記パッキングされたレジスターの数が前記予め定められた数より大きくなければ、前記パッキングされたレジスターは現在のサイクルによりレジスター再命名のために伝送され、前記パッキングされたレジスターの数が前記予め定められた数より大きいと判別されれば、前記複数のマイクロオペレーションの中の１つ又はそれ以上のマイクロオペレーションに含まれた１つ又はそれ以上のレジスターが後続サイクルによりレジスター再命名のために伝送される。
【００１４】
実施形態として、前記予め定められた数は、前記マイクロオペレーションがオペランドとして有するように許容された全体レジスターの数より少なく、前記１つ又はそれ以上のマイクロオペレーションは、前記複数のマイクロオペレーションのエイジに基づいて前記複数のマイクロオペレーションの中から選択される。
【００１５】
実施形態として、前記複数のレジスターは少なくとも１つのソースレジスター及び少なくとも１つの目的地レジスターを含み、前記パッキングされたレジスター構造は、前記少なくとも１つのソースレジスターをパッキングすることによって生成された少なくとも１つのパッキングされたソースレジスターを含むパッキングされたソース構造と、前記少なくとも１つの目的地レジスターをパッキングすることによって生成された少なくとも１つのパッキングされた目的地レジスターを含むパッキングされた目的地構造と、を含む。
【００１６】
実施形態として、前記パッキングされたソース構造は、前記少なくとも１つのパッキングされたソースレジスターの起源となるソースレジスターに対するソース特性情報をさらに含み、前記パッキングされた目的地構造は、前記少なくとも１つのパッキングされた目的地レジスターの起源となる目的地レジスターに対する目的地特性情報をさらに含み、前記ソース特性情報は、前記ソースレジスターの識別子と、前記マイクロオペレーションの中の前記ソースレジスターを含むマイクロオペレーションの識別子の中の少なくとも１つと、を含み、前記目的地特性情報は、前記目的地レジスターが有効な目的地情報を有するか否かに対する情報と、前記目的地レジスターの識別子と、前記マイクロオペレーションの中における前記目的地レジスターを含むマイクロオペレーションの識別子と、を含み、前記ソース特性情報及び前記目的地特性情報の中の少なくとも１つは前記ソースレジスター及び前記目的地レジスターに対するエイジ情報を含む。
【００１７】
本発明の実施形態による命令処理装置は、１つ又はそれ以上の命令からデコーディングされる複数のマイクロオペレーションを受信し、前記マイクロオペレーションに含まれた複数のレジスターを複数のパッキングされたレジスターを含むパッキングされたレジスター構造にパッキングし、そして前記パッキングされたレジスターをレジスター再命名のために伝送するように構成されるパッキング器を含み、前記マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターは前記パッキングされたレジスター構造にパッキングされない。
【００１８】
実施形態として、前記パッキングされたレジスターが再命名のために読出し書き込まれる複数の再命名ポートを含む再命名器をさらに含み、前記再命名ポートの数は、前記マイクロオペレーションが１サイクルにオペランドとして有するように許容された全体ソースレジスターの数より少なく設定される。
【００１９】
実施形態として、前記全体レジスターから選択される予め定められたレジスターの中から前記パッキングされたレジスター構造にパッキングされるレジスターを各々選択する複数のマルチプレクサーをさらに含む。
【００２０】
実施形態として、前記パッキングされるレジスターの各々は、前記予め定められたレジスターに対する有効性情報及びエイジ情報に基づいて選択される。
【００２１】
実施形態として、前記パッキングされたレジスター構造は、前記パッキングされたレジスター構造にパッキングされる前記レジスターの各々に対する特性情報をさらに含む。
【００２２】
実施形態として、前記特性情報は、前記レジスターの各々が有効なソース又は目的地情報を有するか否かに対する情報と、前記レジスターの各々の識別子と、前記マイクロオペレーションの中の前記レジスターの各々を含むマイクロオペレーションの識別子の中の少なくとも１つと、を含む。
【００２３】
実施形態として、前記マイクロオペレーションの識別子は、前記マイクロオペレーションをデコーディングしたデコーダーに対する情報を含む。
【００２４】
実施形態として、前記特性情報は、前記レジスターの各々に対するエイジ情報をさらに含む。
【００２５】
実施形態として、前記パッキングされたレジスターの数が予め定められた数より大きいか否か判別するコントローラをさらに含み、前記パッキングされたレジスターの数が前記予め定められた数より大きくなければ、前記コントローラは前記パッキングされたレジスターを現在のサイクルにジスター再命名のために伝送するように前記パッキング器を制御し、前記パッキングされたレジスターの数が前記予め定められた数より大きいと判別されれば、前記コントローラは前記複数のマイクロオペレーションの中の１つ又はそれ以上のマイクロオペレーションに含まれた１つ又はそれ以上のレジスターが後続サイクルにレジスター再命名のために伝送するように前記パッキング器を制御する。
【００２６】
実施形態として、前記予め定められた数は、前記マイクロオペレーションがオペランドとして有するように許容された全体レジスターの数より少ない。
【００２７】
実施形態として、前記コントローラは、前記複数のマイクロオペレーションのエイジに基づいて前記複数のマイクロオペレーションの中の１つ又はそれ以上のマイクロオペレーションを選択するように前記パッキング器を制御する。
【００２８】
実施形態として、前記複数のレジスターは少なくとも１つのソースレジスター及び少なくとも１つの目的地レジスターを含み、前記パッキングされたレジスター構造は、前記少なくとも１つのソースレジスターをパッキングすることによって生成された少なくとも１つのパッキングされたソースレジスターを含むパッキングされたソース構造と、前記少なくとも１つの目的地レジスターをパッキングすることによって生成された少なくとも１つのパッキングされた目的地レジスターを含むパッキングされた目的地構造と、を含む。
【００２９】
実施形態として、前記パッキングされたソース構造は、前記少なくとも１つのパッキングされたソースレジスターの起源となるソースレジスターに対するソース特性情報をさらに含み、前記パッキングされた目的地構造は、前記少なくとも１つのパッキングされた目的地レジスターの起源となる目的地レジスターに対する目的地特性情報をさらに含む。
【００３０】
実施形態として、前記ソース特性情報は、前記ソースレジスターの識別子と、前記マイクロオペレーションの中の前記ソースレジスターを含むマイクロオペレーションの識別子の中の少なくとも１つと、を含み、前記目的地特性情報は、前記目的地レジスターが有効な目的地情報を有するか否かに対する情報と、前記目的地レジスターの識別子と、前記マイクロオペレーションの中の前記目的地レジスターを含むマイクロオペレーションの識別子と、を含む。
【００３１】
実施形態として、前記ソース特性情報及び前記目的地特性情報の中の少なくとも１つは前記ソースレジスター及び前記目的地レジスターに対するエイジ情報を含む。
【発明の効果】
【００３２】
本発明の実施形態によれば、再命名以前にソースレジスター及び目的地レジスターをパッキングされたレジスター構造にパッキングするパッキング器を具備するマイクロプロセッサは、再命名ポートの数を増加させずにさらに多くのマイクロオペレーションを処理して処理時間を短くする。同時に、ソースレジスター及び目的地レジスターの数を制限することによって、又はパッキングされたレジスター構造にパッキングされる予め定められたソースレジスター及び目的地レジスターを指定することによって、マイクロオペレーションを処理する追加的なレジスターが作成される。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施形態による、複数のデコーダー及び再命名器を含むマイクロプロセッサの一部を示す。
【図２】本発明の実施形態による、複数のデコーダー、パッキング器、再命名器、及びコントローラを含むるマイクロプロセッサの一部を示す。
【図３】本発明の実施形態による、複数のマルチプレクサーを含むマイクロプロセッサの一部を示す。
【図４】本発明の実施形態にしたがって、マイクロプロセッサによるレジスター再命名以前のレジスターパッキングを示すフローチャートである。
【発明を実施するための形態】
【００３４】
本発明の実施形態を、添付した図面を参照して、該当技術分野に通常的な技術を有する者（以下、当業者）に容易に理解できるように詳細に説明する。本発明の技術的な思想はここに開示する実施形態に限定されず、多様な形態に応用され得る。広く公知の部分に対する詳細な説明は、説明を簡単にするために省略する。類似の参照番号は類似の構成要素を参照する。
【００３５】
事前考慮事項（ｐｒｅｌｉｍｉｎａｒｙ  ｃｏｎｓｉｄｅｒａｔｉｏｎ）として、マイクロプロセッサの動作性能を向上させるために、サイクル当たり再命名されるレジスターを含むマイクロオペレーションの数を減少させるか、或いはデコーディング幅を減少させる方法、マイクロオペレーションのソース及び目的地フィールドの数を減少させる方法、レジスターを再命名する追加サイクルを使用する方法、電力及び設計複雑度に影響するタイミングに合致するカスタム（ｃｕｓｔｏｍ）再命名回路を製造する方法等が提案される。しかし、このような方法はソースレジスター及び目的地レジスターの最悪の場合の数に合わせて再命名器の再命名ポートのサイズを決定する構成を含み、これはマイクロプロセッサのタイミング又は構造的動作性能に影響を与える。
【００３６】
レジスター再命名の観点においてマイクロプロセッサの全体的な動作性能を最適化するために、以下の実施形態により説明するように、再命名ポートの数を増加させずにサイクル当たりのソースレジスター及び目的地レジスターの最適な数を有する再命名器を提供することによって、サイクル当たり再命名されるマイクロオペレーションの数を最大化する。
【００３７】
図１は本発明の実施形態による、複数のデコーダー０、１、２及び再命名器１００を含むマイクロプロセッサ１０の一部を示す。図１に示したように、デコーダーはメモリ又はキャッシュ（図示せず）から受信される１つ又はそれ以上の命令（図示せず）をデコーディングすることによって、マイクロオペレーションを生成する。再命名器１００は再命名ロジックを利用してマイクロオペレーションのソースレジスター及び／又は目的地レジスターを再命名する。マイクロプロセッサ１０は３つのデコーディング幅を有する。デコーディング幅は１サイクルにデコーディングされるマイクロオペレーションの数を示す。再命名器１００はマイクロオペレーションのソースレジスターフィールド及び目標レジスターフィールドの総数に対応する１８個の再命名ポートを有する。即ち、マイクロプロセッサ１０のマイクロオペレーションのフォーマットは４つのソースレジスターＡ、Ｂ、Ｃ、Ｄ及び２つの目的地レジスターＡ、Ｂを支援し、１サイクルに生成されるレジスターの総数は１２個のソースレジスター及び６個の目的地レジスターである。このようなデコーダー及び再命名器の構成は再命名器１００が再命名を遂行する１８個の再命名ポートを有することを必要とする。
【００３８】
図２は本発明の実施形態による、複数のデコーダー０、１、２、パッキング器２００、再命名器３００、及びコントローラ４００を含むマイクロプロセッサ２０の一部を示す。マイクロプロセッサ２０のデコーダー０、１、２及び再命名器３００は図１のマイクロプロセッサ１０のデコーダー０、１、２及び再命名器１００と類似である。しかし、本発明の実施形態によるマイクロプロセッサ２０は、レジスターが再命名される前に、デコーダー０、１、２によってデコーディングされたマイクロオペレーションのソースレジスターフィールド及び目的地レジスターフィールドをパッキング（ｐａｃｋｉｎｇ）するように構成される。ここで、マイクロオペレーションのソースレジスターフィールドのパッキング及び目的地レジスターフィールドのパッキングは、以下において、各々ソースレジスターのパッキング及び目的地レジスターのパッキングと呼ぶ。パッキング器２００は、レジスターが再命名器３００により再命名される前に、デコーダー０、１、２によってデコーディングされたマイクロオペレーションのソースレジスター及び目的地レジスターを、パッキングされたソース構造２１０及びパッキングされた目的地構造２２０に各々パッキングするように構成される。パッキングされたソース構造２１０及びパッキングされた目的地構造２２０は以下において包括してパッキングされたレジスター構造と呼ぶ。コントローラ４００は後述するように少なくともパッキング器２００の出力動作を制御するように構成される。ここで、パッキングされたレジスター構造にパッキングされるソースレジスター及び目的地レジスターの各々は有効なソース又は目的地データを有するレジスターである。即ち、マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターはパッキングされたレジスター構造にパッキングされない。
【００３９】
本発明の実施形態において、図２に示したマイクロプロセッサ２０は、図１に図示したマイクロプロセッサ１０と同様にデコーダー０、１、２の３つのデコーディング幅を有し、各サイクルにおいてマクロ命令のような複雑な命令をマイクロオペレーションとしてデコーディングする。また、各デコーダーのマイクロオペレーションフォーマットは、図１に示したマイクロプロセッサ１０のように、４つのソースレジスターＡ、Ｂ、Ｃ、Ｄ及び２つの目的地レジスターＡ、Ｂを支援する。レジスターＡ、Ｂ、Ｃ、Ｄは物理レジスターとして対応するマイクロオペレーションにより識別される構造レジスターとされ、構造レジスターは再命名器３００の再命名によって物理レジスターとしてマッピング（ｍａｐｐｉｎｇ）される。本発明の実施形態においては、サイクル当たり３つのマイクロオペレーションがデコーディングされるので、総１２個のソースレジスター及び６個の目的地レジスターが、１サイクルの間に３つのデコーダー０、１、２によって生成される。本発明の実施形態において、パッキングされたソース構造２１０は最大８つのパッキングされたソースレジスターを収容する８つのエントリを有し、パッキングされた目的地構造２２０は最大３つのパッキングされた目的地レジスターを収容する３つのエントリを有する。
【００４０】
図２において、再命名器３００により再命名が遂行される前に、８つのソースレジスター及び３つの目的地レジスターがパッキングされたレジスターにパッキングされる。より詳細には、３つのマイクロオペレーションの８つのソースレジスターＡ、Ｂ、Ｃ、Ｄ、Ｂ、Ａ、Ｂ、Ｃがパッキングされて、８つのパッキングされたソースレジスターの８つのエントリ（パッキングされたソース０乃至パッキングされたソース７）を有するパッキングされたソース構造２１０を形成する。同様に、３つのマイクロオペレーションの３つの目的地レジスターＡ、Ｂ、Ａはパッキングされて、３つのパッキングされた目的地レジスターの３つのエントリ（パッキングされた目的地０乃至パッキングされた目的地２）を有するパッキングされた目的地構造２２０を形成する。パッキングされたレジスター構造にパッキングされたソースレジスター及び目的地レジスターは各々マイクロオペレーションのソースフィールド及び目的地フィールドから提供される。ソースレジスター及び目的地レジスターのパッキングは同時に又は互に異なるタイミングで遂行される。
【００４１】
マイクロオペレーションのパッキングされたソースレジスター及びパッキングされた目的地レジスターの総数が再命名ポートの予め定められた数以内であれば、本発明の実施形態にしたがって、パッキングされたソースレジスター及びパッキングされた目的地レジスターはコントローラ４００の制御の下に同一のサイクルにおいて再命名器３００へ伝送されて再命名される。ここで、ポートの予め定められた数はシステムにおいて許容される再命名ポートの最大数である。パッキングされたソースレジスター及びパッキングされた目的地レジスターの数が再命名ポートの予め定められた数より多ければ、本発明の実施形態にしたがって、デコーダー０、１、２から受信されたマイクロオペレーションの中の１つ又はそれ以上のマイクロオペレーションが後続サイクルにおいて再命名器３００へ伝送されて再命名される。後続サイクルにおいて再命名器３００へ伝送されるマイクロオペレーションはマイクロオペレーションのエイジ（ａｇｅ）にしたがって選択される。
【００４２】
図２に示したように、本発明の実施形態にしたがってシステムが許容するソースレジスター及び目的地レジスターの再命名ポートの最大数は各々８及び３と定められる。８及び３の数は、ソースレジスター及び目的地レジスターの最大数、即ち１サイクルの間に３つのデコーダー０、１、２によって生成される数である１２及び６より少ないことがあり得る。１サイクルに３つのデコーダー０、１、２によって生成されるソースレジスター及び目的地レジスターの最大数は、デコーダー０、１、２のデコーディング幅によって許容されるソースフィールド及び目的地フィールドの数と同一である。
【００４３】
図２において、デコーダー０によってデコーディングされた第１番目のマイクロオペレーションはオペランドとして４つのソースレジスター及び２つの目的地レジスターを有する。第２番目のマイクロオペレーションはオペランドとして１つのソースレジスターを有し、目的地レジスターを有しない。第３番目のマイクロオペレーションはオペランドとして３つのソースレジスター及び１つの目的地レジスターを有する。３つのデコーダー０、１、２からのパッキングされたソースレジスターの総数は８であり、パッキングされた目的地レジスターの総数は３であり、これはシステムにおいて許容される再命名ポートの最大数と同一である。したがって、パッキングされたソースレジスター及びパッキングされた目的地レジスターは１サイクルにより再命名器３００へ伝送されて再命名される。このような方式により、各サイクルに再命名器３００へ伝送されるソースレジスター及び目的地レジスターの数が最適化される。
【００４４】
本発明の実施形態によれば、複数のビットがパッキングされたソース構造２１０及びパッキングされた目的地構造２２０に追加される。図２に、パッキングされたソース構造２１０及びパッキングされた目的地構造２２０のエントリに各々受信されるパッキングされたソースレジスターの特性ビット及びパッキングされた目的地レジスターの特性ビットを示す。特性ビットは、後述するように、有効性ビット、デコーダー識別子ＩＤビット、ソース識別子ＩＤビット、エイジマスク（ａｇｅ  ｍａｓｋ）ビット等を包含する。したがって、図２に示したように、各パッキングされたソースレジスターの特性ビットは１つの有効性ビット、１つのデコーダーＩＤビット、１つのソースＩＤビット及びエイジマスクベクトル（ａｇｅ  ｍａｓｋ  ｖｅｃｔｏｒ）のための複数のビットにより表現される。また、図２は、各パッキングされた目的地レジスターの特性ビットはエイジマスクベクトルビット無しで、１つの有効性ビット、１つのデコーダーＩＤビット及び１つの目的地ビットにより表現されることを示す。以下において、特性ビットの機能を説明する。
【００４５】
パッキングされたソースレジスターの有効性ビットの各々は、パッキングされたソースレジスターの起源となるソースレジスターが有効であるか、又は無効であるか（例えば、‘１’は有効であり、‘０’は無効である）を示す。図２を参照すれば、パッキングされたソース構造２１０の８つのエントリの各有効性ビットは有効として表示されている。これは、パッキングされたソースレジスターに対応し、マイクロオペレーションに含まれた各ソースレジスターが有効なソースデータを格納していることを示す。同様に、パッキングされた目的地レジスターの有効性ビットの各々は、パッキングされた目的地レジスターの起源となる目的地レジスターが有効であるか、又は無効であるかを示す。図２を参照すれば、パッキングされたレジスター構造２２０の３つのエントリの各有効性ビットは有効として表示されている。これは、パッキングされた目的地レジスターに対応し、マイクロオペレーションに含まれた各目的地レジスターが有効なデータを格納していることを示す。
【００４６】
デコーダーＩＤビットは各々パッキングされたレジスターの起源となるデコーダーを識別するように提供される。図２において、最初４つのパッキングされたソースレジスターの各々のデコーダーＩＤは‘０’であり、パッキングされたソースレジスターの最初４つのエントリはデコーダー０を起源としたことを示す。同様に、パッキングされた目的地レジスターのデコーダーＩＤビットは各々パッキングされた目的地レジスターの起原を識別するように提供される。他の実施形態によれば、デコーダーＩＤビットは各々マイクロオペレーションのＩＤを示し、パッキングされたソース構造２１０又はパッキングされた目的地構造２２０に各々パッキングされたソースレジスター又は目的地レジスターのために使用される。
【００４７】
パッキングされたソースレジスターのソースレジスターＩＤビットはパッキングされたソースレジスターの起源となるソースレジスターを識別するように提供される。図２において、最初４つのパッキングされたソースレジスターのソースレジスターＩＤは各々Ａ、Ｂ、Ｃ、Ｄであり、デコーダーにおけるソースレジスターが各々Ａ、Ｂ、Ｃ、Ｄであることを示す。同様に、目的地レジスターＩＤビットはパッキングされた目的地レジスターの起源となる目的地レジスターを識別するように提供される。
【００４８】
エイジマスクベクトルのための複数のビットはパッキングされたソースレジスターの各々に提供される。各エイジマスクベクトルのビットの数はパッキングされた目的地レジスターの数に対応し、エイジマスクベクトルの各ビットは、パッキングされた目的地構造２２０のパッキングされた目的地レジスターの各々に対するパッキングされたソース構造２１０の対応するパッキングされたソースレジスターのエイジ特性を示す。即ち、エイジマスクベクトルはパッキングされた目的地レジスターに対するパッキングされたソースレジスターのエイジを追跡できる。エイジマスクベクトルの各ビットはパッキングされた目的地レジスターに対するパッキングされたソースレジスターのエイジを考慮して設定される。パッキングされたソースレジスターがビット位置に対応するパッキングされた目的地レジスターより新しい時（又は古い時）、ビットが‘１’（又は‘０’）に設定される。エイジマスクベクトルは再命名器３００の再命名ロジックによって使用されて、グループ間の（ｉｎｔｅｒ−ｇｒｏｕｐ）ソース−目的地依存性（ｓｏｕｒｃｅ−ｔｏ−ｄｅｓｔｉｎａｔｉｏｎ  ｄｅｐｅｎｄｅｎｃｙ）を計算できる。例えば、パッキングされたソース構造２１０の第１番目のパッキングされたソースレジスターＡのエイジマスクベクトルは‘０００’であり、パッキングされた目的地構造２２０に３つのパッキングされた目的地レジスターが存在し、そして各パッキングされた目的地レジスターが第１番目のパッキングされたソースレジスターより新しいこと（ｙｏｕｎｇｅｒ）を示す。図２において、エイジマスクベクトルはパッキングされたソース構造２１０のみに包含される。しかし、本発明の実施形態によれば、エイジマスクベクトルはパッキングされたソース構造２１０の代わりにパッキングされた目的地構造２２０に含まれて、パッキングされたソースレジスターに対するパッキングされた目的地レジスターのエイジを示し得る。また、本発明の実施形態によれば、エイジマスクベクトルはパッキングされたソース構造２１０及びパッキングされた目的地構造２２０の両方に包含される。
【００４９】
上述した特性ビットは有効性ビット、デコーダーＩＤビット、ソースレジスターＩＤビット、及びエイジマスクベクトルビットに限定されない。本発明の実施形態によれば、追加的なビットが図２のパッキングされたレジスター構造に追加されて、パッキングされたレジスターの他の特性を示し得る。例えば、ソースレジスター及び目的地レジスターに格納された物理レジスターのＩＤが図２のパッキングされたレジスター構造に追加され得る。
【００５０】
本発明の実施形態による再命名の前のパッキング（ｐａｃｋｉｎｇ−ｂｅｆｏｒｅ−ｒｅｎａｍｉｎｇ）接近法を利用して再命名器３００へ伝送されるソースレジスター及び目的地レジスターの数の最適化は、１サイクルにおいてさらに多くのマイクロオペレーションが再命名されることによって、さらに優れた効率性及びさらに高い構造的性能をもたらす。
【００５１】
図３は本発明の実施形態による、図２のマイクロプロセッサ２０と同一な構造に複数のマルチプレクサー（Ｍｕｌｔｉｐｌｅｘｅｒ）ＭＵＸ  Ａ乃至Ｋを含むマイクロプロセッサ３０の一部を示す。図３において、パッキングされたソース構造２１０に結ばれたデコーダー０乃至２はパッキングされた目的地構造２２０に結ばれたデコーダー０乃至２と同一なデコーダーであり、説明を簡単にするために別に表示した。図３においては、再命名器３００及びコントローラ４００は説明を簡単にするために省略する。本発明の実施形態において、８つのソースパッキングＭＵＸ  Ａ乃至Ｈが各々パッキングされるソースレジスターを選択するように使用され、３つの目的地パッキングＭＵＸ  Ｉ乃至Ｋが各々パッキングされる目的地レジスターを選択するように使用される。より詳細には、レジスターパッキングのために、８つのソースパッキングＭＵＸ  Ａ乃至Ｈの各々は、１サイクルの間に３つのデコーダー０、１、２によって生成される全体ソースレジスターの中の予め定められた数までのソースレジスターを受信し、受信したレジスターの中の１つを選択してパッキングされたソース構造２１０のエントリを形成するように構成される。３つの目的地パッキングＭＵＸ  Ｉ乃至Ｋの各々は、１サイクルの間に３つのデコーダー０、１、２によって生成される全体目的地レジスターの中の予め定められた数までの目的地レジスターを受信し、受信したレジスターの中の１つを選択してパッキングされた目的地構造２２０のエントリを形成するように構成される。より詳細には、各ＭＵＸはデコーダー０乃至２の中の２つに結ばれて定められた数までのレジスターを受信し、受信したレジスターの中の１つのレジスターを選択して他のＭＵＸによって選択されるレジスターと共にパッキングされるように出力する。
【００５２】
本発明の他の実施形態によれば、パッキングＭＵＸ  Ａ乃至Ｋの各々は４つのレジスターＡ乃至Ｄの中の特定なレジスターのみに割り当てられる（図示せず）。例えば、ソースパッキングＭＵＸ  Ａは各デコーダーのソースレジスターＡ、Ｂのみに割り当てられてソースレジスターＡ、Ｂのみを受信して選択し、ソースパッキングＭＵＸ  ＢはソースレジスターＣ、Ｄのみに割り当てられる。本発明の他の実施形態によれば、各パッキングＭＵＸ  Ａ乃至Ｋの各々はデコーダー０乃至２の中の特定なデコーダーのみに割り当てられる（図示せず）。例えば、ソースパッキングＭＵＸ  Ａはデコーダー０によって使用されるソースレジスターのみを受信するように構成される。
【００５３】
図３において、ソースレジスターのパッキング及び目的地レジスターのパッキングは同時に並列的に遂行されて、発生の可能性があるＭＵＸ遅延を最小化する。
【００５４】
図３において、各ＭＵＸに入力されるレジスターの数は上述したように限定される。図３は１２個のソースレジスター及び６つの目的地レジスターを８つのパッキングされたソースレジスター（パッキングされたソース０乃至パッキングされたソース７）及び３つのパッキングされた目的地レジスター（パッキングされた目的地０乃至パッキングされた目的地２）にパッキングするスキームを具体的に示す。図３に示したように、ソースパッキングＭＵＸ  Ａ乃至Ｈの各々はソースレジスターの数を１２から５に減少させ、これはパッキングソースレジスターのための各ＭＵＸが５つのパッキングされないソースレジスターを受信し、５つのパッキングされないソースレジスターの中の１つを選択してパッキングされたソース構造２１０のエントリを形成することを示す。同様に、目的地ＭＵＸ  Ｉ乃至Ｋの各々は目的地レジスターの数を６から４に減少させ、これはパッキング目的地レジスターのための各ＭＵＸが４つのパッキングされない目的地レジスターを受信し、４つのパッキングされない目的地レジスターの中の１つを選択してパッキングされた目的地構造２２０のエントリを形成することを示す。パッキングされたソース構造２１０及びパッキングされた目的地構造２２０のスキームは、構造的性能の低下無しに、パッキングＭＵＸによる選択時間を減少させる。
【００５５】
本発明の実施形態によれば、パッキングＭＵＸ  Ａ乃至Ｋの各々はパッキングされるソースレジスター又は目的地レジスターの選択に優先順位ロジック（ｐｒｉｏｒｉｔｉｚａｔｉｏｎ  ｌｏｇｉｃ）を適用する。例えば、ソースパッキングＭＵＸ  Ｂはデコーダー０から３つのソースレジスターＢ、Ｃ、Ｄ及びデコーダー１からの２つのソースレジスターＡ、Ｂにより構成された５つのソースレジスターの入力を受信する。優先順位ロジックを利用して、ソースパッキングＭＵＸ  Ｂは５つのソースレジスターの中の１つを選択し、選択されたソースレジスターをパッキングのために出力する。優先順位ロジックは、パッキングＭＵＸ  Ａ乃至Ｋの各々に入力されるソースレジスター及び目的地レジスターに対する有効性情報及びエイジ情報の中の少なくとも１つに基づいて設定される。
【００５６】
パッキングＭＵＸ  Ｂの選択のための例示的な優先順位ロジックは次の通りである。
（ａ）デコーダー０のソースレジスターＢを選択＝デコーダー０のソースレジスターＢが有効且つデコーダー０のソースレジスターＡが有効。
（ｂ）デコーダー０のソースレジスターＣを選択＝デコーダー０のソースレジスターＣが有効且つデコーダー０のソースレジスターＡ及びデコーダー０のソースレジスターＢの中のちょうど１つが有効。
（ｃ）デコーダー０のソースレジスターＤを選択＝デコーダー０のソースレジスターＤが有効且つデコーダー０のソースレジスターＡ、デコーダー０のソースレジスターＢ及びデコーダー０のソースレジスターＣの中のちょうど１つが有効。
（ｄ）デコーダー１のソースレジスターＡを選択＝デコーダー１のソースレジスターＡが有効且つデコーダー０のソースレジスターＡ、デコーダー０のソースレジスターＢ、デコーダー０のソースレジスターＣ及びデコーダー０のソースレジスターＤの中のちょうど１つが有効。
（ｅ）デコーダー１のソースレジスターＢを選択＝デコーダー１のソースレジスターＢが有効且つ（（デコーダー０のソースレジスターＡが無効且つデコーダー０のソースレジスターＢ、デコーダー０のソースレジスターＣ、デコーダー０のソースレジスターＤ及びデコーダー１のソースレジスターＡの中のちょうど１つが有効）又は（デコーダー０のソースレジスターＡが有効且つデコーダー０のソースレジスターＢ、デコーダー０のソースレジスターＣ、デコーダー０のソースレジスターＤ及びデコーダー１のソースレジスターＡ全てが無効））。
【００５７】
マイクロオペレーションのソースレジスター及び目的地レジスターの中のいずれかがパッキングされたソース構造２１０及びパッキングされた目的地構造２２０にパッキングされるかを事前に決定することによって、図２に図示した特性ビットの量が減少し、マイクロオペレーションの経路におけるアンパッキング（ｕｎｐａｃｋｉｎｇ）動作の速度が増加する。
【００５８】
図４は本発明の実施形態にしたがって、マイクロプロセッサによるレジスター再命名以前のレジスターパッキングを示すフローチャートである。
【００５９】
図４に示したように、段階１００の動作において、マイクロプロセッサの１つ又はそれ以上のデコーダーにより複雑な命令がマイクロオペレーションに従ってデコーディングされる。段階２００の動作において、デコーディングされたマイクロオペレーションのソースレジスター及び目的地レジスターが各々パッキングされたソース構造及びパッキングされた目的地構造にパッキング器によってパッキングされてパッキングされたレジスター構造を形成する。ここで、ソースレジスター及び目的地レジスターの各々は有効なソース又は目的地情報を有するレジスターである。
【００６０】
段階２００の動作は、１サイクルの間にデコーダーによって生成できる全体ソースレジスターの中のマイクロオペレーションの予め定められた数のソースレジスターが多重化されて（ｍｕｌｔｉｐｌｅｘｅｄ）、１つのレジスターが他のパッキングＭＵＸによって選択されるレジスターと共にパッキングされるために出力される追加動作段階２１０を包含する。
【００６１】
段階２００の動作は、複数のビットがパッキングされたソース構造及びパッキングされた目的地構造に追加されて、パッキングされたソース構造及びパッキングされた目的地構造の各エントリに受信されるパッキングされたソースレジスターの特性及びパッキングされた目的地レジスターの特性を示す追加動作段階２２０を包含する。このような特性ビットは、図２に示したように、パッキングされたソース構造２１０及びパッキングされた目的地構造２２０の各エントリに受信されるパッキングされたソースレジスター及びパッキングされた目的地レジスターの特性を示す。特性ビットは有効性ビット、デコーダーＩＤビット、ソースＩＤビット、エイジマスクベクトルビット等を包含できるが、これらに限定されない。パッキングされたソース構造及びパッキングされた目的地構造の各エントリの特性は１つの有効性ビット、１つのデコーダーＩＤビット、１つのソースＩＤビット及び／又は複数のエイジマスクベクトルビットにより表現できる。上述された特性ビットは有効性ビット、デコーダーＩＤビット、ソースＩＤビット、及びエイジマスクベクトルビットに限定されない。追加ビットがパッキングされたレジスター構造に更に追加されて、パッキングされたレジスターの他の特性を示し得る。ソースレジスター及び目的地レジスターに格納された物理レジスターのＩＤを示す追加ビットが追加され得る。
【００６２】
段階３００の動作において、パッキングされたソースレジスター及びパッキングされた目的地レジスターの数が再命名器へ提供される再命名ポートの予め定められた数より多いか否かが判別される。パッキングされたレジスターの数が予め定められた数と同一であるか、或いはそれより少ないと判別されれば、パッキングされたソースレジスター及びパッキングされた目的地レジスターは再命名器の同一のサイクルにより再命名器へ伝送される。
【００６３】
反面、パッキングされたレジスターの数が予め定められた数より大きいと判別されれば、デコーダーから受信されたマイクロオペレーションの中の１つ又はそれ以上の選択されたマイクロオペレーションの１つ又はそれ以上のパッキングされたソースレジスター及びパッキングされた目的地レジスターが後続サイクルにより再命名器へ伝送され、１つ又はそれ以上のマイクロオペレーションのパッキングされたレジスターが再命名される。再命名ポートの予め定められた数は、システムにおいて許容される再命名ポートの最大数である。
【００６４】
段階４００の動作において、再命名器へ伝送されたパッキングされたレジスターは再命名され、スケジュール及び実行のために伝送される。
【００６５】
上述した本発明の実施形態によれば、再命名以前にソースレジスター及び目的地レジスターをパッキングされたレジスター構造にパッキングするパッキング器を具備するマイクロプロセッサは、再命名ポートの数を増加させずに、さらに多くのマイクロオペレーションを処理して処理時間に影響を与える。同時に、ソースレジスター及び目的地レジスターの数を制限することによって、又はパッキングされたレジスター構造にパッキングされる予め定められたソースレジスター及び目的地レジスターを指定することによって、マイクロオペレーションを処理する追加的な効率性が高まる。
【００６６】
上述した実施形態は例示的なことであり、本発明の技術的な思想を限定しない。例えば、パッキングされた構造のみでなく、パッキングされない構造のソースレジスター及び目的地レジスターの数は任意の数である。また、デコーダー及びパッキングＭＵＸの数は任意の数である。また、当業者が容易に理解できるように、図面のソース及び目的地は各々ソースレジスター及び目的地レジスターの意味を含む。また、本発明の多様な実施形態によるプロセッサは、マイクロプロセッサ中央処理装置ＣＰＵ、グラフィックプロセッサＧＰＵ、マルチコアプロセッサを含むデータプロセシングユニットなどの任意のタイプのプロセッサである。開示された実施形態及びこれらの変更、最適化、追加、及び改善は本発明の範囲に属する。
【００６７】
上述した実施形態において、デコーダー、パッキング器、再命名器、ＭＵＸ、コントローラ等のマイクロプロセッサ２０、３０の構成要素を説明するために使用した用語は、ソフトウェア又は特定の動作を遂行する集積回路などのハードウェアを示すが、これらに限定されない。このような構成要素へ提供される機能はさらに少ない数の構成要素又は１つの構成要素に結合されるか、又は追加構成要素に分散され得る。また、このような構成要素は通信システムにより１つ又はそれ以上の演算を遂行するように具現され得る。
【００６８】
当業者であれば本発明の技術的な思想から遠く離れることなく、本発明の形態及び詳細な構成を変更及び応用できることが理解できる。したがって、本発明の範囲は実施形態の詳細な説明によって限定されず、添付した請求の範囲及び本発明の技術的な思想に含まれる多様な変更によって定まれなければならない。
【符号の説明】
【００６９】
１０、２０、３０  マイクロプロプロセッサ
１００、３００  再命名器
２００  パッキング器
２１０  パッキングされたソース構造
２２０  パッキングされた目的地構造
３００  再命名器
４００  コントローラ
【図１】
2014175005.tif 000003
【図２】
2014175005.tif 000004
【図３】
2014175005.tif 000005
【図４】
2014175005.tif 000006