特許第6347629号(P6347629)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

<>
  • 6347629-命令処理方法及び命令処理装置 図000002
  • 6347629-命令処理方法及び命令処理装置 図000003
  • 6347629-命令処理方法及び命令処理装置 図000004
  • 6347629-命令処理方法及び命令処理装置 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6347629
(24)【登録日】2018年6月8日
(45)【発行日】2018年6月27日
(54)【発明の名称】命令処理方法及び命令処理装置
(51)【国際特許分類】
   G06F 9/38 20060101AFI20180618BHJP
   G06F 9/34 20060101ALI20180618BHJP
   G06F 9/22 20060101ALI20180618BHJP
【FI】
   G06F9/38 310X
   G06F9/38 370X
   G06F9/34 330
   G06F9/22 330C
【請求項の数】10
【全頁数】17
(21)【出願番号】特願2014-44870(P2014-44870)
(22)【出願日】2014年3月7日
(65)【公開番号】特開2014-175005(P2014-175005A)
(43)【公開日】2014年9月22日
【審査請求日】2017年1月13日
(31)【優先権主張番号】13/790,661
(32)【優先日】2013年3月8日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】タン テイック チョン
(72)【発明者】
【氏名】バージェス ブラッドレイ ジェイン
(72)【発明者】
【氏名】アイエンダー ラビ
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特表2002−521761(JP,A)
【文献】 米国特許第05452426(US,A)
【文献】 特表2007−520768(JP,A)
【文献】 特開2002−229780(JP,A)
【文献】 特開2008−217154(JP,A)
【文献】 特開2002−366366(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30 −9/38
G06F 9/22
(57)【特許請求の範囲】
【請求項1】
マイクロプロセッサによって実行される命令処理方法において、
前記マイクロプロセッサが備えるパッキング器が、1つ又はそれ以上の命令からデコーディングされた複数のマイクロオペレーションを受信する段階と、
前記パッキング器が、前記マイクロオペレーションに含まれた複数のレジスターフィールドを、複数のパッキングたレジスターフィールドを含むパッキングたレジスターフィールド構造となるようマイクロオペレーションの中で使用される有効なソース又は目的地データを有するレジスターフィールドのみをひとまとまりとするパッキングする段階と、
前記パッキング器が、前記パッキングたレジスターフィールドをレジスターフィールド再命名のために伝送する段階と、を含み、
前記マイクロオペレーションに含まれ、マイクロオペレーションの中で使用される有効なソース又は目的地データを有しないレジスターフィールドは、前記パッキングたレジスターフィールド構造にパッキングないことを特徴とする命令処理方法。
【請求項2】
前記マイクロプロセッサが、前記パッキングたレジスターフィールドを再命名する段階をさらに含み、
前記再命名する段階は、前記パッキングたレジスターフィールドがレジスターフィールド再命名のために読み出し、書き込まれる再命名ポートを有する再命名器を使用して遂行
前記再命名ポートの数は、マイクロオペレーションの中で使用されるレジスターフィールドのみがパッキングされることにより前記複数のマイクロオペレーションが1サイクルにオペランド(operands)として有するように許容される全体レジスターフィールドの数より少ないように設定ることを特徴とする請求項1に記載の命令処理方法。
【請求項3】
前記パッキングたレジスターフィールド構造にパッキングるレジスターフィールドの各々は、前記全体レジスターフィールドである予め定められたレジスターフィールドの中において選択
前記パッキングるレジスターフィールドの各々は、前記予め定められたレジスターフィールドに対するマイクロオペレーションの中で使用されるか否かの有効性情報に基づいて選択ることを特徴とする請求項2に記載の命令処理方法。
【請求項4】
前記パッキングたレジスターフィールド構造は、前記パッキングたレジスターフィールド構造にパッキングる前記レジスターフィールドの起源となるレジスターフィールドの各々に対する特性情報をさらに含み、
前記特性情報は、
前記レジスターフィールドの各々がマイクロオペレーションの中で使用される有効なソース又は目的地情報を有するか否かに対する情報と、
前記レジスターフィールドの各々の識別子と、
前記マイクロオペレーションの中の前記レジスターフィールドの各々を含むマイクロオペレーションの識別子の中の少なくとも1つと、を含むことを特徴とする請求項1に記載の命令処理方法。
【請求項5】
前記マイクロオペレーションの識別子は、前記マイクロオペレーションをデコーディングしたデコーダーに対する情報を含むことを特徴とする請求項4に記載の命令処理方法。
【請求項6】
前記マイクロプロセッサが、前記パッキングたレジスターフィールドの数が予め定められた数より大きいか否かを判別する段階をさらに含み、
前記パッキングたレジスターフィールドの数が前記予め定められた数より大きくなければ、前記パッキングたレジスターフィールドを、現在のサイクルによりレジスターフィールド再命名のために伝送
前記パッキングたレジスターフィールドの数が前記予め定められた数より大きいと判別れば、前記パッキングされたレジスターフィールドの内の予め定められた数は現在のサイクルによりレジスターフィールド再命名のために伝送し、前記複数のマイクロオペレーションの中の1つ又はそれ以上のマイクロオペレーションに含まれた1つ又はそれ以上の伝送しなかった残りのレジスターフィールドを後続サイクルによりレジスターフィールド再命名のために伝送ることを特徴とする請求項1に記載の命令処理方法。
【請求項7】
前記予め定められた数は、マイクロオペレーションの中で使用されるレジスターフィールドのみがパッキングされることにより前記複数のマイクロオペレーションがオペランドとして有するように許容された全体レジスターフィールドの数より少ないことを特徴とする請求項6に記載の命令処理方法。
【請求項8】
前記複数のレジスターフィールドは、少なくとも1つのソースレジスターフィールド及び少なくとも1つの目的地レジスターフィールドを含み、
前記パッキングたレジスターフィールド構造は、
前記少なくとも1つのソースレジスターフィールドをパッキングすることによって生成された少なくとも1つのパッキングたソースレジスターフィールドを含むパッキングたソース構造と、
前記少なくとも1つの目的地レジスターフィールドをパッキングすることによって生成た少なくとも1つのパッキングた目的地レジスターフィールドを含むパッキングた目的地構造と、を含むことを特徴とする請求項1に記載の命令処理方法。
【請求項9】
前記パッキングたソース構造は、前記少なくとも1つのパッキングたソースレジスターフィールドの起源となるソースレジスターフィールドに対するソース特性情報をさらに含み、
前記パッキングた目的地構造は、前記少なくとも1つのパッキングた目的地レジスターフィールドの起源となる目的地レジスターフィールドに対する目的地特性情報をさらに含み、
前記ソース特性情報は、
前記ソースレジスターフィールドの識別子と、
前記マイクロオペレーションの中の前記ソースレジスターフィールドを含むマイクロオペレーションの識別子の中の少なくとも1つと、を含み、
前記目的地特性情報は、
前記目的地レジスターフィールドマイクロオペレーションの中で使用される有効な目的地情報を有するか否かに対する情報と、
前記目的地レジスターフィールドの識別子と、
前記マイクロオペレーションの中における前記目的地レジスターフィールドを含むマイクロオペレーションの識別子と、を含むことを特徴とする請求項8に記載の命令処理方法。
【請求項10】
命令処理装置において、
1つ又はそれ以上の命令からデコーディングされる複数のマイクロオペレーションを受信し、前記マイクロオペレーションに含まれた複数のレジスターフィールドを複数のパッキングされたレジスターフィールドを含むパッキングされたレジスターフィールド構造となるようマイクロオペレーションの中で使用される有効なソース又は目的地データを有するレジスターフィールドのみをひとまとまりとしてパッキングし、そして前記パッキングされたレジスターフィールドをレジスターフィールド再命名のために伝送するように構成されるパッキング器を含み、
前記マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターフィールドは、前記パッキングされたレジスターフィールド構造にパッキングされないことを特徴とする命令処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、命令処理方法及び命令処理装置に係り、より詳しくはレジスター再命名段階の以前にマイクロプロセッサにより実行されるマイクロオペレーションに基づきソースレジスターフィールド(source register fields)及び目的地レジスターフィールド(destination register fields)をパッキング(packing)することに関する。
【背景技術】
【0002】
現代のマイクロプロセッサは、一般的にマクロ命令(macro instructions)のような高レベル命令を、内部に提供されている複数のデコーダーにより低レベルのハードウェアにおいて実行可能であるマイクロオペレーションに分解又は翻訳して、データ処理の効率性を向上させる。デコーディングされたマイクロオペレーションの数及びフォーマット(format)は高レベル命令セット構造(high−level instruction set architecture)及び内部マイクロプロセッサ構造に依存する。
【0003】
マイクロオペレーションは一般的に2つ又は3つのソースオペランド(operands)及び1つ又は2つの目的地オペランド(operands)を有する。ソースオペランドはソースデータを格納するレジスターを識別するために使用される。目的地オペランドは、マイクロオペレーションの演算が遂行された後にマイクロオペレーションの演算結果が書き込まれるレジスターを識別するために使用される。
【0004】
特定のマイクロオペレーションのソース及び目的地レジスターの数は、実行される命令のタイプに依存する。例えば、足し算ADD命令は2つのソースオペランド及び1つの目的地オペランドを有する。積和演算(multiply−accumulate)命令は3つのソースオペランド及び1つ又はそれ以上の目的地オペランドを有する。分岐(branch)命令は間接分岐アドレス(indirect branch address)を特定の1つのソースオペランドとしてのみ有し、目的地オペランドを有しない。マイクロオペレーションがデコーディングされて出力された後、マイクロオペレーションは再命名器(renamer)へ伝送され、再命名器によりマイクロオペレーションがスケジュール(schedule)され、実行される前にマイクロオペレーションのレジスターが再命名される。レジスター再命名(register renaming)は読出し後書込み(write−after−read)などのデータ変更の危険を防止するために通常的に使用される技術である。読出し後書込みはマイクロオペレーションの非順次実行(out−of−order execution)による危険をもたらす。再命名プロセスは各レジスターに対して再命名テーブルをチェックする動作、他の又は追加的な物理レジスターを割り当ててマイクロオペレーションの目的地レジスターを代替する動作、及びマイクロオペレーション間の依存性に対するデータを書き込む動作を含む。再命名されたマイクロオペレーションはスケジューラー及び実行部へ伝送される。実行されたマイクロオペレーションは目的地レジスター及び/又はメモリ又はストレージ(storage)のキャッシュ(cache)へ伝送される。
【0005】
レジスター再命名は高速マイクロプロセッサデザインにおいて、時間及び動作性能のボトルネック(bottleneck)である。ソース及び目的地レジスターの数が増加する時、この制限はさらに深刻になる。全体的な動作性能を向上させるために、再命名器の再命名ポートの数を増加させずに、サイクル当たり再命名されるマイクロオペレーションの数を最大化することが有益である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第7,685,408号公報
【特許文献2】米国特許公開第2008/077772号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は再命名プロセスに関連した上述の問題点を解決するためになされたものであって、本発明の目的は再命名器の再命名ポートの数を増加させずに、サイクル当たり再命名されるマイクロオペレーションの数を増加させる方法及び装置を提供することにある。
【課題を解決するための手段】
【0008】
本発明の実施形態による命令処理方法は、マイクロプロセッサによって実行され、前記マイクロプロセッサが備えるパッキング器が、1つ又はそれ以上の命令からデコーディングされた複数のマイクロオペレーションを受信する段階と、前記パッキング器が、前記マイクロオペレーションに含まれた複数のレジスターフィールドを、複数のパッキングたレジスターフィールドを含むパッキングたレジスターフィールド構造にとなるようマイクロオペレーションの中で使用される有効なソース又は目的地データを有するレジスターフィールドのみをひとまとまりとするパッキングする段階と、前記パッキング器が、前記パッキングたレジスターフィールドをレジスターフィールド再命名のために伝送する段階と、を含み、前記マイクロオペレーションに含まれ、マイクロオペレーションの中で使用される有効なソース又は目的地データを有しないレジスターフィールドは、前記パッキングたレジスターフィールド構造にパッキングされない。
【0009】
実施形態として、前記マイクロプロセッサが、前記パッキングたレジスターフィールドを再命名する段階をさらに含み、前記再命名する段階は、前記パッキングたレジスターフィールドがレジスターフィールド再命名のために読み出し、書き込まれる再命名ポートを有する再命名器を使用して遂行、前記再命名ポートの数は、マイクロオペレーションの中で使用されるレジスターフィールドのみがパッキングされることにより前記複数のマイクロオペレーションが1サイクルにオペランド(operands)として有するように許容される全体レジスターフィールドの数より少ないように設定る。
【0010】
実施形態として、前記パッキングたレジスターフィールド構造にパッキングるレジスターフィールドの各々は、前記全体レジスターフィールドである予め定められたレジスターフィールドの中において選択、前記パッキングるレジスターフィールドの各々は、前記予め定められたレジスターフィールドに対するマイクロオペレーションの中で使用されるか否かの有効性情報に基づいて選択る。
【0011】
実施形態として、前記パッキングたレジスターフィールド構造は、前記パッキングたレジスターフィールド構造にパッキングる前記レジスターフィールドの起源となるレジスターフィールドの各々に対する特性情報をさらに含み、前記特性情報は、前記レジスターフィールドの各々がマイクロオペレーションの中で使用される有効なソース又は目的地情報を有するか否かに対する情報と、前記レジスターフィールドの各々の識別子と、前記マイクロオペレーションの中の前記レジスターフィールドの各々を含むマイクロオペレーションの識別子の中の少なくとも1つと、を含む。
【0012】
実施形態として、前記マイクロオペレーションの識別子は、前記マイクロオペレーションをデコーディングしたデコーダーに対する情報を含む
【0013】
実施形態として、前記マイクロプロセッサが、前記パッキングたレジスターフィールドの数が予め定められた数より大きいか否かを判別する段階をさらに含み、前記パッキングたレジスターフィールドの数が前記予め定められた数より大きくなければ、前記パッキングたレジスターフィールドを、現在のサイクルによりレジスターフィールド再命名のために伝送、前記パッキングたレジスターフィールドの数が前記予め定められた数より大きいと判別れば、前記パッキングされたレジスターフィールドの内の予め定められた数は現在のサイクルによりレジスターフィールド再命名のために伝送し、前記複数のマイクロオペレーションの中の1つ又はそれ以上のマイクロオペレーションに含まれた1つ又はそれ以上の伝送しなかった残りのレジスターフィールドを後続サイクルによりレジスターフィールド再命名のために伝送る。
【0014】
実施形態として、前記予め定められた数は、マイクロオペレーションの中で使用されるレジスターフィールドのみがパッキングされることにより前記複数のマイクロオペレーションがオペランドとして有するように許容された全体レジスターフィールドの数より少な
【0015】
実施形態として、前記複数のレジスターフィールドは、少なくとも1つのソースレジスターフィールド及び少なくとも1つの目的地レジスターフィールドを含み、前記パッキングたレジスターフィールド構造は、前記少なくとも1つのソースレジスターフィールドをパッキングすることによって生成された少なくとも1つのパッキングたソースレジスターフィールドを含むパッキングたソース構造と、前記少なくとも1つの目的地レジスターフィールドをパッキングすることによって生成た少なくとも1つのパッキングた目的地レジスターフィールドを含むパッキングた目的地構造と、を含む。
【0016】
実施形態として、前記パッキングたソース構造は、前記少なくとも1つのパッキングたソースレジスターフィールドの起源となるソースレジスターフィールドに対するソース特性情報をさらに含み、前記パッキングた目的地構造は、前記少なくとも1つのパッキングた目的地レジスターフィールドの起源となる目的地レジスターフィールドに対する目的地特性情報をさらに含み、前記ソース特性情報は、前記ソースレジスターフィールドの識別子と、前記マイクロオペレーションの中の前記ソースレジスターフィールドを含むマイクロオペレーションの識別子の中の少なくとも1つと、を含み、前記目的地特性情報は、前記目的地レジスターフィールドマイクロオペレーションの中で使用される有効な目的地情報を有するか否かに対する情報と、前記目的地レジスターフィールドの識別子と、前記マイクロオペレーションの中における前記目的地レジスターフィールドを含むマイクロオペレーションの識別子と、を含む
【0017】
本発明の実施形態による命令処理装置は、1つ又はそれ以上の命令からデコーディングされる複数のマイクロオペレーションを受信し、前記マイクロオペレーションに含まれた複数のレジスターフィールドを複数のパッキングされたレジスターフィールドを含むパッキングされたレジスターフィールド構造となるようマイクロオペレーションの中で使用される有効なソース又は目的地データを有するレジスターフィールドのみをひとまとまりとしてパッキングし、そして前記パッキングされたレジスターフィールドをレジスターフィールド再命名のために伝送するように構成されるパッキング器を含み、前記マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターフィールドは、前記パッキングされたレジスターフィールド構造にパッキングされない。
【0018】
実施形態として、前記パッキングされたレジスターが再命名のために読出し書き込まれる複数の再命名ポートを含む再命名器をさらに含み、前記再命名ポートの数は、前記マイクロオペレーションが1サイクルにオペランドとして有するように許容された全体ソースレジスターの数より少なく設定される。
【0019】
実施形態として、前記全体レジスターから選択される予め定められたレジスターの中から前記パッキングされたレジスター構造にパッキングされるレジスターを各々選択する複数のマルチプレクサーをさらに含む。
【0020】
実施形態として、前記パッキングされるレジスターの各々は、前記予め定められたレジスターに対する有効性情報及びエイジ情報に基づいて選択される。
【0021】
実施形態として、前記パッキングされたレジスター構造は、前記パッキングされたレジスター構造にパッキングされる前記レジスターの各々に対する特性情報をさらに含む。
【0022】
実施形態として、前記特性情報は、前記レジスターの各々が有効なソース又は目的地情報を有するか否かに対する情報と、前記レジスターの各々の識別子と、前記マイクロオペレーションの中の前記レジスターの各々を含むマイクロオペレーションの識別子の中の少なくとも1つと、を含む。
【0023】
実施形態として、前記マイクロオペレーションの識別子は、前記マイクロオペレーションをデコーディングしたデコーダーに対する情報を含む。
【0024】
実施形態として、前記特性情報は、前記レジスターの各々に対するエイジ情報をさらに含む。
【0025】
実施形態として、前記パッキングされたレジスターの数が予め定められた数より大きいか否か判別するコントローラをさらに含み、前記パッキングされたレジスターの数が前記予め定められた数より大きくなければ、前記コントローラは前記パッキングされたレジスターを現在のサイクルにジスター再命名のために伝送するように前記パッキング器を制御し、前記パッキングされたレジスターの数が前記予め定められた数より大きいと判別されれば、前記コントローラは前記複数のマイクロオペレーションの中の1つ又はそれ以上のマイクロオペレーションに含まれた1つ又はそれ以上のレジスターが後続サイクルにレジスター再命名のために伝送するように前記パッキング器を制御する。
【0026】
実施形態として、前記予め定められた数は、前記マイクロオペレーションがオペランドとして有するように許容された全体レジスターの数より少ない。
【0027】
実施形態として、前記コントローラは、前記複数のマイクロオペレーションのエイジに基づいて前記複数のマイクロオペレーションの中の1つ又はそれ以上のマイクロオペレーションを選択するように前記パッキング器を制御する。
【0028】
実施形態として、前記複数のレジスターは少なくとも1つのソースレジスター及び少なくとも1つの目的地レジスターを含み、前記パッキングされたレジスター構造は、前記少なくとも1つのソースレジスターをパッキングすることによって生成された少なくとも1つのパッキングされたソースレジスターを含むパッキングされたソース構造と、前記少なくとも1つの目的地レジスターをパッキングすることによって生成された少なくとも1つのパッキングされた目的地レジスターを含むパッキングされた目的地構造と、を含む。
【0029】
実施形態として、前記パッキングされたソース構造は、前記少なくとも1つのパッキングされたソースレジスターの起源となるソースレジスターに対するソース特性情報をさらに含み、前記パッキングされた目的地構造は、前記少なくとも1つのパッキングされた目的地レジスターの起源となる目的地レジスターに対する目的地特性情報をさらに含む。
【0030】
実施形態として、前記ソース特性情報は、前記ソースレジスターの識別子と、前記マイクロオペレーションの中の前記ソースレジスターを含むマイクロオペレーションの識別子の中の少なくとも1つと、を含み、前記目的地特性情報は、前記目的地レジスターが有効な目的地情報を有するか否かに対する情報と、前記目的地レジスターの識別子と、前記マイクロオペレーションの中の前記目的地レジスターを含むマイクロオペレーションの識別子と、を含む。
【0031】
実施形態として、前記ソース特性情報及び前記目的地特性情報の中の少なくとも1つは前記ソースレジスター及び前記目的地レジスターに対するエイジ情報を含む。
【発明の効果】
【0032】
本発明の実施形態によれば、再命名以前にソースレジスター及び目的地レジスターをパッキングされたレジスター構造にパッキングするパッキング器を具備するマイクロプロセッサは、再命名ポートの数を増加させずにさらに多くのマイクロオペレーションを処理して処理時間を短くする。同時に、ソースレジスター及び目的地レジスターの数を制限することによって、又はパッキングされたレジスター構造にパッキングされる予め定められたソースレジスター及び目的地レジスターを指定することによって、マイクロオペレーションを処理する追加的なレジスターが作成される。
【図面の簡単な説明】
【0033】
図1】本発明の実施形態による、複数のデコーダー及び再命名器を含むマイクロプロセッサの一部を示す。
図2】本発明の実施形態による、複数のデコーダー、パッキング器、再命名器、及びコントローラを含むるマイクロプロセッサの一部を示す。
図3】本発明の実施形態による、複数のマルチプレクサーを含むマイクロプロセッサの一部を示す。
図4】本発明の実施形態にしたがって、マイクロプロセッサによるレジスター再命名以前のレジスターパッキングを示すフローチャートである。
【発明を実施するための形態】
【0034】
本発明の実施形態を、添付した図面を参照して、該当技術分野に通常的な技術を有する者(以下、当業者)に容易に理解できるように詳細に説明する。本発明の技術的な思想はここに開示する実施形態に限定されず、多様な形態に応用され得る。広く公知の部分に対する詳細な説明は、説明を簡単にするために省略する。類似の参照番号は類似の構成要素を参照する。
【0035】
事前考慮事項(preliminary consideration)として、マイクロプロセッサの動作性能を向上させるために、サイクル当たり再命名されるレジスターを含むマイクロオペレーションの数を減少させるか、或いはデコーディング幅を減少させる方法、マイクロオペレーションのソース及び目的地フィールドの数を減少させる方法、レジスターを再命名する追加サイクルを使用する方法、電力及び設計複雑度に影響するタイミングに合致するカスタム(custom)再命名回路を製造する方法等が提案される。しかし、このような方法はソースレジスター及び目的地レジスターの最悪の場合の数に合わせて再命名器の再命名ポートのサイズを決定する構成を含み、これはマイクロプロセッサのタイミング又は構造的動作性能に影響を与える。
【0036】
レジスター再命名の観点においてマイクロプロセッサの全体的な動作性能を最適化するために、以下の実施形態により説明するように、再命名ポートの数を増加させずにサイクル当たりのソースレジスター及び目的地レジスターの最適な数を有する再命名器を提供することによって、サイクル当たり再命名されるマイクロオペレーションの数を最大化する。
【0037】
図1は本発明の実施形態による、複数のデコーダー0、1、2及び再命名器100を含むマイクロプロセッサ10の一部を示す。図1に示したように、デコーダーはメモリ又はキャッシュ(図示せず)から受信される1つ又はそれ以上の命令(図示せず)をデコーディングすることによって、マイクロオペレーションを生成する。再命名器100は再命名ロジックを利用してマイクロオペレーションのソースレジスター及び/又は目的地レジスターを再命名する。マイクロプロセッサ10は3つのデコーディング幅を有する。デコーディング幅は1サイクルにデコーディングされるマイクロオペレーションの数を示す。再命名器100はマイクロオペレーションのソースレジスターフィールド及び目標レジスターフィールドの総数に対応する18個の再命名ポートを有する。即ち、マイクロプロセッサ10のマイクロオペレーションのフォーマットは4つのソースレジスターA、B、C、D及び2つの目的地レジスターA、Bを支援し、1サイクルに生成されるレジスターの総数は12個のソースレジスター及び6個の目的地レジスターである。このようなデコーダー及び再命名器の構成は再命名器100が再命名を遂行する18個の再命名ポートを有することを必要とする。
【0038】
図2は本発明の実施形態による、複数のデコーダー0、1、2、パッキング器200、再命名器300、及びコントローラ400を含むマイクロプロセッサ20の一部を示す。マイクロプロセッサ20のデコーダー0、1、2及び再命名器300は図1のマイクロプロセッサ10のデコーダー0、1、2及び再命名器100と類似である。しかし、本発明の実施形態によるマイクロプロセッサ20は、レジスターが再命名される前に、デコーダー0、1、2によってデコーディングされたマイクロオペレーションのソースレジスターフィールド及び目的地レジスターフィールドをパッキング(packing)するように構成される。ここで、マイクロオペレーションのソースレジスターフィールドのパッキング及び目的地レジスターフィールドのパッキングは、以下において、各々ソースレジスターのパッキング及び目的地レジスターのパッキングと呼ぶ。パッキング器200は、レジスターが再命名器300により再命名される前に、デコーダー0、1、2によってデコーディングされたマイクロオペレーションのソースレジスター及び目的地レジスターを、パッキングされたソース構造210及びパッキングされた目的地構造220に各々パッキングするように構成される。パッキングされたソース構造210及びパッキングされた目的地構造220は以下において包括してパッキングされたレジスター構造と呼ぶ。コントローラ400は後述するように少なくともパッキング器200の出力動作を制御するように構成される。ここで、パッキングされたレジスター構造にパッキングされるソースレジスター及び目的地レジスターの各々は有効なソース又は目的地データを有するレジスターである。即ち、マイクロオペレーションに含まれ、有効なソース又は目的地データを有しないレジスターはパッキングされたレジスター構造にパッキングされない。
【0039】
本発明の実施形態において、図2に示したマイクロプロセッサ20は、図1に図示したマイクロプロセッサ10と同様にデコーダー0、1、2の3つのデコーディング幅を有し、各サイクルにおいてマクロ命令のような複雑な命令をマイクロオペレーションとしてデコーディングする。また、各デコーダーのマイクロオペレーションフォーマットは、図1に示したマイクロプロセッサ10のように、4つのソースレジスターA、B、C、D及び2つの目的地レジスターA、Bを支援する。レジスターA、B、C、Dは物理レジスターとして対応するマイクロオペレーションにより識別される構造レジスターとされ、構造レジスターは再命名器300の再命名によって物理レジスターとしてマッピング(mapping)される。本発明の実施形態においては、サイクル当たり3つのマイクロオペレーションがデコーディングされるので、総12個のソースレジスター及び6個の目的地レジスターが、1サイクルの間に3つのデコーダー0、1、2によって生成される。本発明の実施形態において、パッキングされたソース構造210は最大8つのパッキングされたソースレジスターを収容する8つのエントリを有し、パッキングされた目的地構造220は最大3つのパッキングされた目的地レジスターを収容する3つのエントリを有する。
【0040】
図2において、再命名器300により再命名が遂行される前に、8つのソースレジスター及び3つの目的地レジスターがパッキングされたレジスターにパッキングされる。より詳細には、3つのマイクロオペレーションの8つのソースレジスターA、B、C、D、B、A、B、Cがパッキングされて、8つのパッキングされたソースレジスターの8つのエントリ(パッキングされたソース0乃至パッキングされたソース7)を有するパッキングされたソース構造210を形成する。同様に、3つのマイクロオペレーションの3つの目的地レジスターA、B、Aはパッキングされて、3つのパッキングされた目的地レジスターの3つのエントリ(パッキングされた目的地0乃至パッキングされた目的地2)を有するパッキングされた目的地構造220を形成する。パッキングされたレジスター構造にパッキングされたソースレジスター及び目的地レジスターは各々マイクロオペレーションのソースフィールド及び目的地フィールドから提供される。ソースレジスター及び目的地レジスターのパッキングは同時に又は互に異なるタイミングで遂行される。
【0041】
マイクロオペレーションのパッキングされたソースレジスター及びパッキングされた目的地レジスターの総数が再命名ポートの予め定められた数以内であれば、本発明の実施形態にしたがって、パッキングされたソースレジスター及びパッキングされた目的地レジスターはコントローラ400の制御の下に同一のサイクルにおいて再命名器300へ伝送されて再命名される。ここで、ポートの予め定められた数はシステムにおいて許容される再命名ポートの最大数である。パッキングされたソースレジスター及びパッキングされた目的地レジスターの数が再命名ポートの予め定められた数より多ければ、本発明の実施形態にしたがって、デコーダー0、1、2から受信されたマイクロオペレーションの中の1つ又はそれ以上のマイクロオペレーションが後続サイクルにおいて再命名器300へ伝送されて再命名される。後続サイクルにおいて再命名器300へ伝送されるマイクロオペレーションはマイクロオペレーションのエイジ(age)にしたがって選択される。
【0042】
図2に示したように、本発明の実施形態にしたがってシステムが許容するソースレジスター及び目的地レジスターの再命名ポートの最大数は各々8及び3と定められる。8及び3の数は、ソースレジスター及び目的地レジスターの最大数、即ち1サイクルの間に3つのデコーダー0、1、2によって生成される数である12及び6より少ないことがあり得る。1サイクルに3つのデコーダー0、1、2によって生成されるソースレジスター及び目的地レジスターの最大数は、デコーダー0、1、2のデコーディング幅によって許容されるソースフィールド及び目的地フィールドの数と同一である。
【0043】
図2において、デコーダー0によってデコーディングされた第1番目のマイクロオペレーションはオペランドとして4つのソースレジスター及び2つの目的地レジスターを有する。第2番目のマイクロオペレーションはオペランドとして1つのソースレジスターを有し、目的地レジスターを有しない。第3番目のマイクロオペレーションはオペランドとして3つのソースレジスター及び1つの目的地レジスターを有する。3つのデコーダー0、1、2からのパッキングされたソースレジスターの総数は8であり、パッキングされた目的地レジスターの総数は3であり、これはシステムにおいて許容される再命名ポートの最大数と同一である。したがって、パッキングされたソースレジスター及びパッキングされた目的地レジスターは1サイクルにより再命名器300へ伝送されて再命名される。このような方式により、各サイクルに再命名器300へ伝送されるソースレジスター及び目的地レジスターの数が最適化される。
【0044】
本発明の実施形態によれば、複数のビットがパッキングされたソース構造210及びパッキングされた目的地構造220に追加される。図2に、パッキングされたソース構造210及びパッキングされた目的地構造220のエントリに各々受信されるパッキングされたソースレジスターの特性ビット及びパッキングされた目的地レジスターの特性ビットを示す。特性ビットは、後述するように、有効性ビット、デコーダー識別子IDビット、ソース識別子IDビット、エイジマスク(age mask)ビット等を包含する。したがって、図2に示したように、各パッキングされたソースレジスターの特性ビットは1つの有効性ビット、1つのデコーダーIDビット、1つのソースIDビット及びエイジマスクベクトル(age mask vector)のための複数のビットにより表現される。また、図2は、各パッキングされた目的地レジスターの特性ビットはエイジマスクベクトルビット無しで、1つの有効性ビット、1つのデコーダーIDビット及び1つの目的地ビットにより表現されることを示す。以下において、特性ビットの機能を説明する。
【0045】
パッキングされたソースレジスターの有効性ビットの各々は、パッキングされたソースレジスターの起源となるソースレジスターが有効であるか、又は無効であるか(例えば、‘1’は有効であり、‘0’は無効である)を示す。図2を参照すれば、パッキングされたソース構造210の8つのエントリの各有効性ビットは有効として表示されている。これは、パッキングされたソースレジスターに対応し、マイクロオペレーションに含まれた各ソースレジスターが有効なソースデータを格納していることを示す。同様に、パッキングされた目的地レジスターの有効性ビットの各々は、パッキングされた目的地レジスターの起源となる目的地レジスターが有効であるか、又は無効であるかを示す。図2を参照すれば、パッキングされたレジスター構造220の3つのエントリの各有効性ビットは有効として表示されている。これは、パッキングされた目的地レジスターに対応し、マイクロオペレーションに含まれた各目的地レジスターが有効なデータを格納していることを示す。
【0046】
デコーダーIDビットは各々パッキングされたレジスターの起源となるデコーダーを識別するように提供される。図2において、最初4つのパッキングされたソースレジスターの各々のデコーダーIDは‘0’であり、パッキングされたソースレジスターの最初4つのエントリはデコーダー0を起源としたことを示す。同様に、パッキングされた目的地レジスターのデコーダーIDビットは各々パッキングされた目的地レジスターの起原を識別するように提供される。他の実施形態によれば、デコーダーIDビットは各々マイクロオペレーションのIDを示し、パッキングされたソース構造210又はパッキングされた目的地構造220に各々パッキングされたソースレジスター又は目的地レジスターのために使用される。
【0047】
パッキングされたソースレジスターのソースレジスターIDビットはパッキングされたソースレジスターの起源となるソースレジスターを識別するように提供される。図2において、最初4つのパッキングされたソースレジスターのソースレジスターIDは各々A、B、C、Dであり、デコーダーにおけるソースレジスターが各々A、B、C、Dであることを示す。同様に、目的地レジスターIDビットはパッキングされた目的地レジスターの起源となる目的地レジスターを識別するように提供される。
【0048】
エイジマスクベクトルのための複数のビットはパッキングされたソースレジスターの各々に提供される。各エイジマスクベクトルのビットの数はパッキングされた目的地レジスターの数に対応し、エイジマスクベクトルの各ビットは、パッキングされた目的地構造220のパッキングされた目的地レジスターの各々に対するパッキングされたソース構造210の対応するパッキングされたソースレジスターのエイジ特性を示す。即ち、エイジマスクベクトルはパッキングされた目的地レジスターに対するパッキングされたソースレジスターのエイジを追跡できる。エイジマスクベクトルの各ビットはパッキングされた目的地レジスターに対するパッキングされたソースレジスターのエイジを考慮して設定される。パッキングされたソースレジスターがビット位置に対応するパッキングされた目的地レジスターより新しい時(又は古い時)、ビットが‘1’(又は‘0’)に設定される。エイジマスクベクトルは再命名器300の再命名ロジックによって使用されて、グループ間の(inter−group)ソース−目的地依存性(source−to−destination dependency)を計算できる。例えば、パッキングされたソース構造210の第1番目のパッキングされたソースレジスターAのエイジマスクベクトルは‘000’であり、パッキングされた目的地構造220に3つのパッキングされた目的地レジスターが存在し、そして各パッキングされた目的地レジスターが第1番目のパッキングされたソースレジスターより新しいこと(younger)を示す。図2において、エイジマスクベクトルはパッキングされたソース構造210のみに包含される。しかし、本発明の実施形態によれば、エイジマスクベクトルはパッキングされたソース構造210の代わりにパッキングされた目的地構造220に含まれて、パッキングされたソースレジスターに対するパッキングされた目的地レジスターのエイジを示し得る。また、本発明の実施形態によれば、エイジマスクベクトルはパッキングされたソース構造210及びパッキングされた目的地構造220の両方に包含される。
【0049】
上述した特性ビットは有効性ビット、デコーダーIDビット、ソースレジスターIDビット、及びエイジマスクベクトルビットに限定されない。本発明の実施形態によれば、追加的なビットが図2のパッキングされたレジスター構造に追加されて、パッキングされたレジスターの他の特性を示し得る。例えば、ソースレジスター及び目的地レジスターに格納された物理レジスターのIDが図2のパッキングされたレジスター構造に追加され得る。
【0050】
本発明の実施形態による再命名の前のパッキング(packing−before−renaming)接近法を利用して再命名器300へ伝送されるソースレジスター及び目的地レジスターの数の最適化は、1サイクルにおいてさらに多くのマイクロオペレーションが再命名されることによって、さらに優れた効率性及びさらに高い構造的性能をもたらす。
【0051】
図3は本発明の実施形態による、図2のマイクロプロセッサ20と同一な構造に複数のマルチプレクサー(Multiplexer)MUX A乃至Kを含むマイクロプロセッサ30の一部を示す。図3において、パッキングされたソース構造210に結ばれたデコーダー0乃至2はパッキングされた目的地構造220に結ばれたデコーダー0乃至2と同一なデコーダーであり、説明を簡単にするために別に表示した。図3においては、再命名器300及びコントローラ400は説明を簡単にするために省略する。本発明の実施形態において、8つのソースパッキングMUX A乃至Hが各々パッキングされるソースレジスターを選択するように使用され、3つの目的地パッキングMUX I乃至Kが各々パッキングされる目的地レジスターを選択するように使用される。より詳細には、レジスターパッキングのために、8つのソースパッキングMUX A乃至Hの各々は、1サイクルの間に3つのデコーダー0、1、2によって生成される全体ソースレジスターの中の予め定められた数までのソースレジスターを受信し、受信したレジスターの中の1つを選択してパッキングされたソース構造210のエントリを形成するように構成される。3つの目的地パッキングMUX I乃至Kの各々は、1サイクルの間に3つのデコーダー0、1、2によって生成される全体目的地レジスターの中の予め定められた数までの目的地レジスターを受信し、受信したレジスターの中の1つを選択してパッキングされた目的地構造220のエントリを形成するように構成される。より詳細には、各MUXはデコーダー0乃至2の中の2つに結ばれて定められた数までのレジスターを受信し、受信したレジスターの中の1つのレジスターを選択して他のMUXによって選択されるレジスターと共にパッキングされるように出力する。
【0052】
本発明の他の実施形態によれば、パッキングMUX A乃至Kの各々は4つのレジスターA乃至Dの中の特定なレジスターのみに割り当てられる(図示せず)。例えば、ソースパッキングMUX Aは各デコーダーのソースレジスターA、Bのみに割り当てられてソースレジスターA、Bのみを受信して選択し、ソースパッキングMUX BはソースレジスターC、Dのみに割り当てられる。本発明の他の実施形態によれば、各パッキングMUX A乃至Kの各々はデコーダー0乃至2の中の特定なデコーダーのみに割り当てられる(図示せず)。例えば、ソースパッキングMUX Aはデコーダー0によって使用されるソースレジスターのみを受信するように構成される。
【0053】
図3において、ソースレジスターのパッキング及び目的地レジスターのパッキングは同時に並列的に遂行されて、発生の可能性があるMUX遅延を最小化する。
【0054】
図3において、各MUXに入力されるレジスターの数は上述したように限定される。図3は12個のソースレジスター及び6つの目的地レジスターを8つのパッキングされたソースレジスター(パッキングされたソース0乃至パッキングされたソース7)及び3つのパッキングされた目的地レジスター(パッキングされた目的地0乃至パッキングされた目的地2)にパッキングするスキームを具体的に示す。図3に示したように、ソースパッキングMUX A乃至Hの各々はソースレジスターの数を12から5に減少させ、これはパッキングソースレジスターのための各MUXが5つのパッキングされないソースレジスターを受信し、5つのパッキングされないソースレジスターの中の1つを選択してパッキングされたソース構造210のエントリを形成することを示す。同様に、目的地MUX I乃至Kの各々は目的地レジスターの数を6から4に減少させ、これはパッキング目的地レジスターのための各MUXが4つのパッキングされない目的地レジスターを受信し、4つのパッキングされない目的地レジスターの中の1つを選択してパッキングされた目的地構造220のエントリを形成することを示す。パッキングされたソース構造210及びパッキングされた目的地構造220のスキームは、構造的性能の低下無しに、パッキングMUXによる選択時間を減少させる。
【0055】
本発明の実施形態によれば、パッキングMUX A乃至Kの各々はパッキングされるソースレジスター又は目的地レジスターの選択に優先順位ロジック(prioritization logic)を適用する。例えば、ソースパッキングMUX Bはデコーダー0から3つのソースレジスターB、C、D及びデコーダー1からの2つのソースレジスターA、Bにより構成された5つのソースレジスターの入力を受信する。優先順位ロジックを利用して、ソースパッキングMUX Bは5つのソースレジスターの中の1つを選択し、選択されたソースレジスターをパッキングのために出力する。優先順位ロジックは、パッキングMUX A乃至Kの各々に入力されるソースレジスター及び目的地レジスターに対する有効性情報及びエイジ情報の中の少なくとも1つに基づいて設定される。
【0056】
パッキングMUX Bの選択のための例示的な優先順位ロジックは次の通りである。
(a)デコーダー0のソースレジスターBを選択=デコーダー0のソースレジスターBが有効且つデコーダー0のソースレジスターAが有効。
(b)デコーダー0のソースレジスターCを選択=デコーダー0のソースレジスターCが有効且つデコーダー0のソースレジスターA及びデコーダー0のソースレジスターBの中のちょうど1つが有効。
(c)デコーダー0のソースレジスターDを選択=デコーダー0のソースレジスターDが有効且つデコーダー0のソースレジスターA、デコーダー0のソースレジスターB及びデコーダー0のソースレジスターCの中のちょうど1つが有効。
(d)デコーダー1のソースレジスターAを選択=デコーダー1のソースレジスターAが有効且つデコーダー0のソースレジスターA、デコーダー0のソースレジスターB、デコーダー0のソースレジスターC及びデコーダー0のソースレジスターDの中のちょうど1つが有効。
(e)デコーダー1のソースレジスターBを選択=デコーダー1のソースレジスターBが有効且つ((デコーダー0のソースレジスターAが無効且つデコーダー0のソースレジスターB、デコーダー0のソースレジスターC、デコーダー0のソースレジスターD及びデコーダー1のソースレジスターAの中のちょうど1つが有効)又は(デコーダー0のソースレジスターAが有効且つデコーダー0のソースレジスターB、デコーダー0のソースレジスターC、デコーダー0のソースレジスターD及びデコーダー1のソースレジスターA全てが無効))。
【0057】
マイクロオペレーションのソースレジスター及び目的地レジスターの中のいずれかがパッキングされたソース構造210及びパッキングされた目的地構造220にパッキングされるかを事前に決定することによって、図2に図示した特性ビットの量が減少し、マイクロオペレーションの経路におけるアンパッキング(unpacking)動作の速度が増加する。
【0058】
図4は本発明の実施形態にしたがって、マイクロプロセッサによるレジスター再命名以前のレジスターパッキングを示すフローチャートである。
【0059】
図4に示したように、段階100の動作において、マイクロプロセッサの1つ又はそれ以上のデコーダーにより複雑な命令がマイクロオペレーションに従ってデコーディングされる。段階200の動作において、デコーディングされたマイクロオペレーションのソースレジスター及び目的地レジスターが各々パッキングされたソース構造及びパッキングされた目的地構造にパッキング器によってパッキングされてパッキングされたレジスター構造を形成する。ここで、ソースレジスター及び目的地レジスターの各々は有効なソース又は目的地情報を有するレジスターである。
【0060】
段階200の動作は、1サイクルの間にデコーダーによって生成できる全体ソースレジスターの中のマイクロオペレーションの予め定められた数のソースレジスターが多重化されて(multiplexed)、1つのレジスターが他のパッキングMUXによって選択されるレジスターと共にパッキングされるために出力される追加動作段階210を包含する。
【0061】
段階200の動作は、複数のビットがパッキングされたソース構造及びパッキングされた目的地構造に追加されて、パッキングされたソース構造及びパッキングされた目的地構造の各エントリに受信されるパッキングされたソースレジスターの特性及びパッキングされた目的地レジスターの特性を示す追加動作段階220を包含する。このような特性ビットは、図2に示したように、パッキングされたソース構造210及びパッキングされた目的地構造220の各エントリに受信されるパッキングされたソースレジスター及びパッキングされた目的地レジスターの特性を示す。特性ビットは有効性ビット、デコーダーIDビット、ソースIDビット、エイジマスクベクトルビット等を包含できるが、これらに限定されない。パッキングされたソース構造及びパッキングされた目的地構造の各エントリの特性は1つの有効性ビット、1つのデコーダーIDビット、1つのソースIDビット及び/又は複数のエイジマスクベクトルビットにより表現できる。上述された特性ビットは有効性ビット、デコーダーIDビット、ソースIDビット、及びエイジマスクベクトルビットに限定されない。追加ビットがパッキングされたレジスター構造に更に追加されて、パッキングされたレジスターの他の特性を示し得る。ソースレジスター及び目的地レジスターに格納された物理レジスターのIDを示す追加ビットが追加され得る。
【0062】
段階300の動作において、パッキングされたソースレジスター及びパッキングされた目的地レジスターの数が再命名器へ提供される再命名ポートの予め定められた数より多いか否かが判別される。パッキングされたレジスターの数が予め定められた数と同一であるか、或いはそれより少ないと判別されれば、パッキングされたソースレジスター及びパッキングされた目的地レジスターは再命名器の同一のサイクルにより再命名器へ伝送される。
【0063】
反面、パッキングされたレジスターの数が予め定められた数より大きいと判別されれば、デコーダーから受信されたマイクロオペレーションの中の1つ又はそれ以上の選択されたマイクロオペレーションの1つ又はそれ以上のパッキングされたソースレジスター及びパッキングされた目的地レジスターが後続サイクルにより再命名器へ伝送され、1つ又はそれ以上のマイクロオペレーションのパッキングされたレジスターが再命名される。再命名ポートの予め定められた数は、システムにおいて許容される再命名ポートの最大数である。
【0064】
段階400の動作において、再命名器へ伝送されたパッキングされたレジスターは再命名され、スケジュール及び実行のために伝送される。
【0065】
上述した本発明の実施形態によれば、再命名以前にソースレジスター及び目的地レジスターをパッキングされたレジスター構造にパッキングするパッキング器を具備するマイクロプロセッサは、再命名ポートの数を増加させずに、さらに多くのマイクロオペレーションを処理して処理時間に影響を与える。同時に、ソースレジスター及び目的地レジスターの数を制限することによって、又はパッキングされたレジスター構造にパッキングされる予め定められたソースレジスター及び目的地レジスターを指定することによって、マイクロオペレーションを処理する追加的な効率性が高まる。
【0066】
上述した実施形態は例示的なことであり、本発明の技術的な思想を限定しない。例えば、パッキングされた構造のみでなく、パッキングされない構造のソースレジスター及び目的地レジスターの数は任意の数である。また、デコーダー及びパッキングMUXの数は任意の数である。また、当業者が容易に理解できるように、図面のソース及び目的地は各々ソースレジスター及び目的地レジスターの意味を含む。また、本発明の多様な実施形態によるプロセッサは、マイクロプロセッサ中央処理装置CPU、グラフィックプロセッサGPU、マルチコアプロセッサを含むデータプロセシングユニットなどの任意のタイプのプロセッサである。開示された実施形態及びこれらの変更、最適化、追加、及び改善は本発明の範囲に属する。
【0067】
上述した実施形態において、デコーダー、パッキング器、再命名器、MUX、コントローラ等のマイクロプロセッサ20、30の構成要素を説明するために使用した用語は、ソフトウェア又は特定の動作を遂行する集積回路などのハードウェアを示すが、これらに限定されない。このような構成要素へ提供される機能はさらに少ない数の構成要素又は1つの構成要素に結合されるか、又は追加構成要素に分散され得る。また、このような構成要素は通信システムにより1つ又はそれ以上の演算を遂行するように具現され得る。
【0068】
当業者であれば本発明の技術的な思想から遠く離れることなく、本発明の形態及び詳細な構成を変更及び応用できることが理解できる。したがって、本発明の範囲は実施形態の詳細な説明によって限定されず、添付した請求の範囲及び本発明の技術的な思想に含まれる多様な変更によって定まれなければならない。
【符号の説明】
【0069】
10、20、30 マイクロプロプロセッサ
100、300 再命名器
200 パッキング器
210 パッキングされたソース構造
220 パッキングされた目的地構造
300 再命名器
400 コントローラ
図1
図2
図3
図4