(57)【要約】【課題】ナロー−ワイド依存性を有する命令のソースレジスターに対する断片化情報を示す複数のフィールドを有する再命名テーブルを使用してレジスターファイルを再構成する方法及び装置を提供する。【解決手段】本発明の実施形態によるレジスターファイルを再構成する方法は、再命名テーブルを提供する段階と、前記再命名テーブルに命令のソースレジスターに対する断片化情報を書き込む段階と、を含み、前記断片化情報は、前記ソースレジスターの少なくとも１つのプロデューサーに対する情報を含む。前記ソースレジスターは、前記命令の構造ソースレジスターであり、前記方法は、前記断片化情報から前記構造ソースレジスターが断片化したかを判別する段階をさらに含み、前記構造ソースレジスターのコンテンツが複数の物理レジスターに分散している時、前記構造ソースレジスターは、断片化したと判別される。【選択図】図２
2014182830.tif 000002
【特許請求の範囲】
【請求項１】
レジスターファイルを再構成する方法において、
再命名テーブルを提供する段階と、
前記再命名テーブルに命令のソースレジスターに対する断片化情報を書き込む段階と、を含み、
前記断片化情報は、前記ソースレジスターの少なくとも１つのプロデューサーに対する情報を含む方法。
【請求項２】
前記ソースレジスターは、前記命令の構造ソースレジスターであり、
前記方法は、前記断片化情報から前記構造ソースレジスターが断片化したかを判別する段階をさらに含み、
前記構造ソースレジスターのコンテンツが複数の物理レジスターに分散している時、前記構造ソースレジスターは断片化したと判別される請求項１に記載の方法。
【請求項３】
前記断片化情報は、前記構造ソースレジスターのタイプを示す構造ソースタグの第１情報及び前記構造ソースレジスターが断片化したかを示す前記構造ソースタグの第２情報から導出される請求項２に記載の方法。
【請求項４】
前記第１情報は、前記構造ソースレジスターのタイプがシングル、ダブル、又はクワッドのうちのいずれか１つであることを示し、
前記第２情報は、前記少なくとも１つのプロデューサーがシングル、ダブル、又はクワッドであることを示す請求項３に記載の方法。
【請求項５】
前記構造ソースレジスターが断片化したと判別されれば、少なくとも１つの修正マイクロオペレーションを生成する段階と、
前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、前記断片化を修正するように前記修正マイクロオペレーションを実行する段階と、をさらに含む請求項３に記載の方法。
【請求項６】
前記修正マイクロオペレーションを再命名する段階をさらに含む請求項５に記載の方法。
【請求項７】
前記第１情報及び前記第２情報に基づいて、前記少なくとも１つの修正マイクロオペレーションの数を判別する段階をさらに含む請求項５に記載の方法。
【請求項８】
マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、再命名及び実行のためのスケジュールがされないマイクロオペレーションを中止する段階をさらに含む請求項３に記載の方法。
【請求項９】
前記マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、前記断片化を修正する段階をさらに含む請求項８に記載の方法。
【請求項１０】
再命名テーブルを提供する再命名器を含み、
前記再命名器は、前記再命名テーブルに命令のソースレジスターに対する断片化情報を書き込み、
前記断片化情報は、前記ソースレジスターの少なくとも１つのプロデューサーに対する情報を含む命令処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態による方法及び装置は、プロセッサーでレジスターファイルの断片化（ｆｒａｃｔｕｒｅ）を判別し、断片化を修正してレジスターファイルを再構成することに関する。
【背景技術】
【０００２】
例えば、図１Ａに示したように、ＡＲＭｖ７プロセッサ（ＡＲＭｖ７はイギリスケンブリッジのＡＲＭ社の商標（ｔｒａｄｅｍａｒｋ）である）のＡａｒｃｈ３２レイアウトのベクトルレジスターファイル（Ｖｅｃｔｏｒ  Ｒｅｇｉｓｔｏｒ  Ｆｉｌｅ、ＶＲＦ）の構造レジスター（ａｒｃｈｉｔｅｃｔｕｒａｌ  ｒｅｇｉｓｔｅｒｓ）のレイアウトは、ソース及び目的地レジスターの間に潜在的なナロー−ワイド（ｎａｒｒｏｗ−ｔｏ−ｗｉｄｅ）依存性を提供するように構成される。ナロー−ワイド依存性は、大きいサイズの値を読み出すことが複数の小さいサイズのレジスターを読み出すことを発生させる現象を示す。例えば、クワッドワード（ｑｕａｄ  ｗｏｒｄ）のプロデューサー（ｐｒｏｄｕｃｅｒ）が複数のシングルワード（ｓｉｎｇｌｅ  ｗｏｒｄｓ）又はダブルワード（ｄｏｕｂｌｅ  ｗｏｒｄｓ）を生成する場合、クワッドワード（ｑｕａｄ  ｗｏｒｄ）の読出しは複数のシングルレジスター（ｓｉｎｇｌｅ  ｒｅｇｉｓｔｅｒｓ）又はダブルレジスター（ｄｏｕｂｌｅ  ｒｅｇｉｓｔｅｒｓ）の読出しをもたらすことがある。同様に、ダブルワードの読出しは２つのシングルレジスターの読出しをもたらすことがある。
【０００３】
図１Ａに示したように、３２ビットレジスターレイアウト（ＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウト）で、クワッドレジスター（例えば、Ｑ１５）は２つのダブルレジスター（例えば、Ｄ３１及びＤ３２）とマッピング（ｍａｐ）され、ダブルレジスター（例えば、Ｄ１５）は２つのシングルレジスター（例えば、Ｓ３１及びＳ３０）とマッピング（ｍａｐ）される。図１Ｂに示したように、６４ビットレジスターレイアウト（ＡＲＭｖ８プロセッサのＡａｒｃｈ６４レイアウト）で、各エントリＱ０、Ｑ１、Ｑ２、Ｑ３はサイズに関わらずにシングルレジスターにマッピング（ｍａｐ）される。
【０００４】
上述された例で、１つのクワッドレジスターソースに関連する命令（ｉｎｓｔｒｕｃｔｉｏｎ）は、４つのシングルレジスターソース、又はシングルレジスターソース及びダブルレジスターソースの組合せを必要とすることがあり得る。したがって、命令に複数のクワッドレジスターソースが存在すれば、要求される実際レジスターソースの数はさらに大きくなり得る。したがって、命令処理に要求される電力及び時間消耗が無視できない。
【０００５】
ナロー−ワイド依存性を使用することは、面積及び電力面で高コストを要求することがあり、パフォーマンスに対するボトルネックとなることがある。また、大きいサイズの値（例えば、クワッドワード値）を読み出すことがさらに小さいサイズの複数のレジスターを読み出すことを必要とする時、大きいサイズのソースは断片化され、プロセッサの面積及び電力消耗は悪くなり得る。例えば、構造的に識別された（ｓｐｅｃｉｆｉｅｄ）生成命令が全体構造レジスターの一部のみを書き込み、このような命令がマイクロ構造（ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ）によって識別されて固有な物理レジスターに結果を書き込むので、断片化が発生することがある。したがって、構造レジスターの値は複数の物理レジスターに掛けて分散しているので、‘断片化’は構造レジスターソースのコンテンツが複数の物理レジスターに分散していることを示し得る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第８２５０３４６号明細書
【特許文献２】米国特許出願公開第２０１１／０２３８９６２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は上述されたナロー−ワイド依存性の問題を解決することにある。
【課題を解決するための手段】
【０００８】
本発明の実施形態によるレジスターファイルを再構成する方法は、再命名テーブルを提供する段階と、前記再命名テーブルに命令のソースレジスターに対する断片化情報を書き込む段階と、を含み、前記断片化情報は、前記ソースレジスターの少なくとも１つのプロデューサーに対する情報を含む。
【０００９】
実施形態として、前記ソースレジスターは、前記命令の構造ソースレジスターであり、前記方法は、前記断片化情報から前記構造ソースレジスターが断片化したかを判別する段階をさらに含み、前記構造ソースレジスターのコンテンツが複数の物理レジスターに分散している時、前記構造ソースレジスターは、断片化したと判別される。
実施形態として、前記断片化情報は、前記構造ソースレジスターのタイプを示す構造ソースタグの第１情報及び前記構造ソースレジスターが断片化したかを示す前記構造ソースタグの第２情報から導出される。
実施形態として、前記第１情報は、前記構造ソースレジスターのタイプがシングル、ダブル又はクワッドのうちのいずれか１つであることを示し、前記第２情報は、前記少なくとも１つのプロデューサーがシングル、ダブル、又はクワッドであることを示す。
【００１０】
実施形態として、前記構造ソースレジスターが断片化したと判別されれば、少なくとも１つの修正マイクロオペレーションを生成する段階と、前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、前記断片化を修正するように前記修正マイクロオペレーションを実行する段階と、をさらに含む。
実施形態として、前記修正マイクロオペレーションを再命名する段階をさらに含む。
実施形態として、前記第１情報及び前記第２情報に基づいて、前記少なくとも１つの修正マイクロオペレーションの数を判別する段階をさらに含む。
【００１１】
実施形態として、マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、再命名及び実行のためのスケジュールがされないマイクロオペレーションを中止（ｓｔａｌｌ）する段階をさらに含む。
実施形態として、前記マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、前記断片化を修正する段階をさらに含む。
【００１２】
実施形態として、マイクロオペレーションが断片化したと判別されれば、再命名及び実行のためにスケジュールされないマイクロオペレーションを中止する段階をさらに含む。
実施形態として、前記マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、前記断片化を修正する段階をさらに含む。
【００１３】
本発明の実施形態による命令処理装置は、再命名テーブルを提供する再命名器を含み、前記再命名器は、前記再命名テーブルに命令のソースレジスターに対する断片化情報を書き込み、そして前記断片化情報は、前記ソースレジスターの少なくとも１つのプロデューサーに対する情報を含む。
【００１４】
実施形態として、前記ソースレジスターは、前記命令の構造ソースレジスターであり、前記命令処理装置は、前記断片化情報から前記構造ソースレジスターが断片化したか否かを判別するように構成される断片化判別器をさらに含み、前記構造ソースレジスターのコンテンツが複数の物理レジスターに分散している時、前記構造ソースレジスターは、断片化したと判別される。
実施形態として、前記断片化情報は、前記構造ソースレジスターのタイプを示す構造ソースタグの第１情報及び前記構造ソースレジスターが断片化したことを示す前記構造ソースタグの第２情報から導出される。
実施形態として、前記第１情報は、前記構造ソースレジスターのタイプがシングル、ダブル、又はクワッドのうちの１つであることを示し、前記第２情報は、前記少なくとも１つのプロデューサーがシングル、ダブル、又はクワッドであることを示す。
【００１５】
実施形態として、前記構造ソースレジスターが断片化したと判別されれば、少なくとも１つの修正マイクロオペレーションを生成し、そして前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、断片化を修正するように前記修正マイクロオペレーションを実行するように構成される修正ステートマシンをさらに含む。
実施形態として、前記再命名器は、前記修正マイクロオペレーションを再命名する。
実施形態として、前記修正ステートマシンは、前記第１情報及び前記第２情報に基づいて前記少なくとも１つの修正マイクロオペレーションの数を決定する。
【００１６】
実施形態として、マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、再命名及び実行のためにスケジュールされないマイクロオペレーションを中止する修正ステートマシンをさらに含む。
実施形態として、前記マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、前記修正ステートマシンは、前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、前記断片化を修正する。
【００１７】
実施形態として、マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、再命名及び実行のためにスケジュールされないマイクロオペレーションを中止する修正ステートマシンをさらに含む。
実施形態として、前記マイクロオペレーションの前記構造ソースレジスターが断片化したと判別されれば、前記修正ステートマシンは、前記レジスターファイルで、２つ以上のプロデューサーの２つ以上のレジスターを読み出し、読み出された結果を前記２つ以上のプロデューサーのレジスターの各々のサイズよりも大きいサイズを有するレジスターに書き込むことによって、前記断片化を修正する。
【発明の効果】
【００１８】
上述された例示的な再命名及び修正スキームは、レジスター併合を必要とするすべての断片化したソースで、同時にスケジューラーに複数の物理ソースタグを格納する必要性を除去する。また、このスキームは、レジスター併合を遂行するために再命名器及び物理レジスターファイルの追加的な読出しポートを必要としない。上述された実施形態は、面積及び電力面で効率的なステートマシンを利用してレジスターで併合のための修正マイクロオペレーションを検出及び実行する。また、上述された実施形態は、ナロー−ワイド依存性を有しない命令に影響を与えないので、動作性能面でさらに効率的である。
【図面の簡単な説明】
【００１９】
【図１Ａ】３２ビットレジスターレイアウト（ＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウト）を示す。
【図１Ｂ】６４ビットレジスターレイアウト（ＡＲＭｖ８プロセッサのＡａｒｃｈ６４レイアウト）を示す。
【図２】本発明の実施形態によるプロセッサの一部を示すブロック図である。
【図３Ａ】本発明の実施形態によるＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウトの再命名テーブルのエントリを示す。
【図３Ｂ】本発明の実施形態による再命名テーブルの更新されたフィールドを示す。
【図３Ｃ】本発明の実施形態による再命名テーブルでクワッド目的地レジスターに要求されるフィールドを示す。
【図３Ｄ】本発明の実施形態によるＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウトのための再命名テーブルのすべての再命名テーブルエントリ及びフィールド情報のサイズを示す。
【図４Ａ】本発明の実施形態にしたがって断片化を判別し、断片化の修正を開始するシークェンスを示す。
【図４Ｂ】本発明の実施形態にしたがって断片化を判別し、断片化の修正を開始するシークェンスを示す。
【図４Ｃ】本発明の実施形態にしたがって断片化を判別し、断片化の修正を開始するシークェンスを示す。
【図４Ｄ】本発明の実施形態にしたがって断片化を判別し、断片化の修正を開始するシークェンスを示す。
【図４Ｅ】本発明の実施形態にしたがって断片化を判別し、断片化の修正を開始するシークェンスを示す。
【図５Ａ】本発明の実施形態による、図４Ａ乃至図４Ｅに図示されたシークェンスで決定された断片化を修正するシークェンスを示す。
【図５Ｂ】本発明の実施形態による、図４Ａ乃至図４Ｅに図示されたシークェンスで決定された断片化を修正するシークェンスを示す。
【図５Ｃ】本発明の実施形態による、図４Ａ乃至図４Ｅに図示されたシークェンスで決定された断片化を修正するシークェンスを示す。
【図５Ｄ】本発明の実施形態による、図４Ａ乃至図４Ｅに図示されたシークェンスで決定された断片化を修正するシークェンスを示す。
【図６】本発明の実施形態にしたがってレジスター断片化を決定し、修正マイクロオペレーションを生成するシークェンスを示す。
【図７】本発明の実施形態による、命令パイプラインダイヤグラムでの修正プロセスの流れを示す。
【発明を実施するための形態】
【００２０】
本発明の実施形態が、添付された図面を参照して、該当技術分野で通常的な技術を有する者（以下、当業者）に容易に理解できるように詳細に説明される。本発明の技術的な思想は、ここに開示された実施形態に限定されず、多様な形態に応用され得る。広く公知された部分に対する詳細な説明は、説明を簡単にするために省略され得る。類似な参照番号は、類似な構成要素を参照することができる。
【００２１】
図１Ａに示したように、構造レイアウトで断片化したレジスターソースを発生させるナロー−ワイド（ｎａｒｒｏｗ−ｔｏ−ｗｉｄｅ、ＮＴＷ）依存性は多様な方法を利用して遂行され得る。例えば、断片化した原本構造ソースは、複数の物理レジスターソースに分散され、又は読出し−修正−書込み（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ）方法が使用されてレジスターマージ（ｒｅｇｉｓｔｅｒ  ｍｅｒｇｅ）が遂行されることがある。このような方法は全てが問題点を有する。ソース分散方法は、ソースの数の増加をもたらして、さらに多くのソースタグを格納する必要性をもたらし、そして潛在的にさらに多くのレジスターファイル読出しポート及び再命名テーブル読出しポートの必要性をもたらすことがある。読出し−修正−書込み（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ）方法は、動作性能を低下させ、電力消耗を増加させ得る。
【００２２】
図２は本発明の実施形態によるプロセッサ１０の一部を示すブロック図である。プロセッサ１０は、メモリ又はキャッシュ（図示せず）からフェッチ（ｆｅｔｃｈ）される命令を処理するデコーダー１００、再命名器２００、及びスケジューラー３００を含む。再命名器２００は、再命名テーブル２１０、断片化判別器２２０、及び修正ステートマシン２３０を含む。図２に図示された構造は、マルチ−コアプロセッサを含む多様な形態のプロセッサ又はデータプロセシングユニットに適用され得る。
【００２３】
図２で、デコーダー１００は、メモリ（図示せず）からフェッチされた命令を下位レベルのマイクロオペレーション（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎ）又は複数の命令にデコーディングする。したがって、命令の流れはマイクロオペレーションの流れによってマッピング（ｍａｐ）される。デコーディングされたマイクロオペレーションフィールドは、遂行する動作（例えば、足し算（ａｄｄ）、掛け算（ｍｕｌｔｉｐｌｙ）、ロード（ｌｏａｄ）、格納（ｓｔｏｒｅ）等）を明示するオペレーションコード、データが維持されている構造レジスターアドレスを示すソースオペランド（ｓｏｕｒｃｅ  ｏｐｅｒａｎｄ）、及びデータが処理されて伝達される構造レジスターアドレスを示す目的地オペランド（ｄｅｓｔｉｎａｔｉｏｎ  ｏｐｅｒａｎｄ）を包含することができる。デコーディングされたマイクロオペレーションは、再命名インターフェイス１５０を通じて再命名器２００に伝達される。再命名器２００で、マイクロオペレーションの構造レジスターは、スケジューラー３００へ伝送されて実行スケジュールが決定される前に、再命名され、依存性がチェックされる。再命名器２００は、レジスターファイル内で、マイクロオペレーションのレジスターに対する情報が格納された再命名テーブル２１０を利用して、構造レジスターを物理的レジスターに再命名するように構成される。再命名テーブル２１０は本実施形態による再命名器２００内に含まれるものとして図示されている。しかし、再命名テーブル２１０はプロセッサ１０の他の部分に格納され得る。レジスター再命名（ｒｅｇｉｓｔｅｒ  ｒｅｎａｍｉｎｇ）は読出し後書込み（ｗｒｉｔｅ−ａｆｔｅｒ−ｒｅａｄ）を回避するために遂行され、読出し後書込みデータはマイクロオペレーションの非順次実行（ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｅｘｅｃｕｔｉｏｎ）に危険をもたらすことがある。構造レジスターはプロセッサの構造のプログラマーの観点の命令で識別されるレジスターであり得る。
【００２４】
再命名器２００で、断片化判別器２２０は、マイクロオペレーションの構造ソースレジスターが断片化しているか、そしてデコーダーから受信されるソースタイプ情報及び再命名テーブル２１０からの断片化情報を分析することによって、修正される必要があるかを判別するように提供され得る。大きいサイズのソース値のマイクロオペレーションで、マイクロオペレーションのプロデューサーが小さいサイズ（例えば、シングルサイズ）のレジスターであれば、大きいサイズのソース値は物理的レジスターファイルで断片化したと看做す。例えば、クワッド値のプロデューサーがシングル又はダブルソースに続いてコンテンツが複数の物理レジスターに分散された場合、ソース値は物理的レジスターファイルで断片化する。修正ステートマシン２３０は、レジスターファイルの構造レジスターソースに断片化が存在する時、修正マイクロオペレーションを利用して断片化判別器２２０によって判別された断片化を修正する。断片化判別器２２０及び修正ステートマシン２３０の詳細な動作は後述される。
【００２５】
図３Ａは、図１Ａに図示されたＡＲＭｖ７プロセッサ１０のＡａｒｃｈ３２レイアウトで、本発明の実施形態によるレジスターＱ０、Ｄ０、Ｄ１、Ｓ０、Ｓ１、Ｓ２、Ｓ３に関連した再命名テーブルのエントリを示す。ここに開示される再命名テーブルは、図２に図示されたプロセッサ１０の再命名器２００で使用される再命名テーブル２１０と同一であり得る。したがって、以下で、再命名テーブルは再命名テーブル２１０と同一であることと看做す。再命名テーブルは、図３Ｂ乃至図３Ｄを参照してより詳細に説明される。再命名器２００は、デコーダー１００からデコーディングされたマイクロオペレーションの各目的地レジスターを再命名し、そして目的地レジスターのサイズに関わらずに物理レジスターファイルＰＲＦ（Ｐｈｙｓｉｃａｌ  Ｒｅｇｉｓｔｅｒ  Ｆｉｌｅ）で各目的地レジスターに新しいエントリを割当する。図３Ａで、ＰＲＦエントリは１２８ビット幅（ｂｉｔ  ｗｉｄｅ）であり、再命名テーブルは４つのシングルレジスターエントリフィールド（Ｓ０エントリ＃乃至Ｓ３エントリ＃）を割当する。各エントリフィールドは３２ビットサイズを有することができる。レジスターエントリの結果はＰＲＦエントリで常に右側に整列される。このような再命名テーブルエントリ構造は、ＡＲＭｖ８プロセッサのＡａｒｃｈ６４レイアウトで明確に（ｃｌｅａｒｌｙ）動作し、再命名テーブルに格納された情報の少数の追加ビットを通じてＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウトでも動作することができる。ＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウト及びＡＲＭｖ８プロセッサのＡａｒｃｈ６４レイアウトは単なる例示的なものであり、再命名テーブルエントリ構造は類似なレイアウトの他の構造に適用され得る。追加ビットは、３つの有効（Ｖａｌｉｄ）情報フィールド及び３つのレーン（Ｌａｎｅ）情報フィールドに格納され得る。有効情報フィールドのような情報フィールドは、最後書込みがシングル（３２）、ダブル（６４）又はクワッド（１２８）ワードによるものであるかを格納することができる。レーン情報フィールドは、読み出されたレーン情報、即ちデータがレジスターから読み出される時、データがどのようにして整列されなければならないかを格納することができる。有効情報フィールドに格納された情報のような再命名テーブルに格納された情報は、後述されるように、レジスターファイルに断片化が存在するか否かを示す断片化情報として参照され得る。
【００２６】
図３Ｂは、本発明の実施形態にしたがってレジスターＳ０〜Ｓ３が再命名される時、再命名テーブルの何れのフィールドが更新されたかを示す。シングルレジスターＳ０〜Ｓ３のうちの１つ以上が１つ以上の物理レジスターファイルエントリ番号（ＰＲＦエントリ＃）にマッピング（ｍａｐ）されることにしたがって、対応する情報フィールドが更新され得る。
【００２７】
図３Ｃは、本発明の実施形態による再命名テーブルでクワッド目的地レジスターで要求されるフィールドを示す。再命名テーブルで、すべてのエントリがすべての情報フィールドを格納する必要はない。図１Ａに示したように、ＡＥＭｖ７プロセッサのＡａｒｃｈ３２レイアウトで、クワッドレジスターＱ０−Ｑ１５はダブルレジスターにマッピングされる。しかし、これらのうちの半分のみで、即ちＱ０乃至Ｑ７のみで、各ダブルレジスターは２つのシングルレジスターにマッピングされる。したがって、本発明の実施形態によるＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウトを利用して再命名テーブルをマッピングするために、シングルレジスターはＤ０−Ｄ１５／Ｑ０−Ｑ７にマッピングされる必要のみがあり、ダブルレジスターはＱ０−Ｑ１５、Ｑ１６にマッピングされる必要のみがあり、Ｑ１６−Ｑ３１は存在しない。
【００２８】
図３Ｄは、本発明の実施形態によるＡＲＭｖ７プロセッサのＡａｒｃｈ３２レイアウトの再命名テーブルのすべての再命名テーブルエントリ及びフィールド情報のサイズを示す。図３Ｄで、第０テーブルエントリ（エントリ０）は、図３Ａ乃至図３Ｃに図示されたテーブルエントリに対応する。シングル、ダブル、又はクワッドレジスターの各々は、図３ＢのＰＲＦエントリ＃に対応する物理レジスタータグ（Ｒｔａｇ）にマッピングされる。第０乃至第７再命名テーブルエントリ（エントリ０乃至エントリ７）に対応するレジスターで、クワッドレジスターは、各々２つのシングルレジスターにマッピングされる２つのダブルレジスターにマッピングされる。各有効情報は１ビットのサイズを有する。Ｓ１のような１つのレーン情報は１ビットのサイズを有し、Ｓ２及びＳ７のような２つのレーン情報は２ビットのサイズを有する。第８乃至第１５再命名テーブルエントリ（エントリ８乃至エントリ１５）に対応するレジスターで、クワッドレジスターは２つのダブルレジスターにマッピングされる。このような再命名テーブルエントリの各々で、２つのダブルレジスターのうちのＤ１のような１つのレジスターのみが１ビットレーン情報を有する。第１６乃至第３１再命名テーブルエントリ（エントリ１６乃至エントリ３１）に対応するレジスターで、断片化情報ビットは存在しない。
【００２９】
図４Ａ乃至図４Ｅは、本発明の実施形態にしたがって、図２のプロセッサ１０で構造レジスターソースで断片化を判別し、構造レジスターソース断片化の修正を開始するシークェンス（ｓｅｑｕｅｎｃｅ）を示す。Ｒｔａｇ３２にマッピングされたシングルレジスターＳ０を書き込むための第１番目マイクロオペレーション（ｕＯＰ０）が再命名される時、図４Ａに示したように、再命名器２００は、再命名テーブルの第０エントリ（エントリ０）で、Ｒｔａｇ（３２）の情報を書き込み、異なる情報フィールドを更新する。以後に、Ｒｔａｇ３３にマッピングされたシングルレジスターＳ１の書込みのための第２番目マイクロオペレーション（ｕＯＰ１）が入力される時、図４Ｂに示したように、再命名器２００は、再命名テーブルの同一のエントリ（エントリ０）で、Ｒｔａｇ（３３）の情報を書き込み、情報フィールドもまた更新する。同様に、Ｒｔａｇ（３４）及びＲｔａｇ（３５）にマッピングされたシングルレジスターＳ２、Ｓ３の書込みのための第３番目マイクロオペレーション（ｕＯＰ２）及び第４番目マイクロオペレーション（ｕＯＰ３）が各々入力される時、図４Ｃ及び図４Ｄに示したように、再命名器２００は、再命名テーブルの同一のエントリ（エントリ０）で、この情報を書き込み、情報フィールドを更新する。再命名器２００がレジスターＳ２、Ｓ３に対する情報を書き込んだ後に、デコーダーからクワッドソースレジスターＱ０の読出しのための第５番目マイクロオペレーション（ｕＯＰ４）が入力される時、Ｑ０、Ｄ１、Ｄ０ビットが無効であるので、断片化判別器２２０によってレジスターが断片化したと判別される。即ち、図４Ｅに示したように、クワッドソースデータは複数のＰＲＦエントリに存在する。
【００３０】
デコーダーから再命名器２００に第５番目マイクロオペレーション（ｕＯＰ４）が受信された時に、断片化判別器２０１が構造ソースレジスターで断片化があることを判別すれば、マイクロオペレーション（ｕＯＰ４）は再命名器２００で収容されなく、デコーダー１００から再命名インターフェイス１５０への伝送は遅延される。同時に、修正ステートマシン２０２が活性化されて、１つ以上の修正マイクロオペレーションを利用して構造ソースレジスターが修正される。
【００３１】
図５Ａ乃至図５Ｄは、本発明の実施形態にしたがって、図４Ａ乃至図４Ｅに図示されたシークェンスで決定された断片化を修正する順序を示す。図５Ａ乃至図５Ｄで、マイクロオペレーション（ｕＯＰ１、ｕＯＰ２、ｕＯＰ３）は、断片化した構造ソースレジスターを併合（ｍｅｒｇｅ）するために使用される修正マイクロオペレーションである。第１番目修正マイクロオペレーション（ｕＯＰ１）は、図５Ａに示したように、２つのシングルレジスターＳ０（Ｒｔａｇ３２）及びＳ１（Ｒｔａｇ３３）を読み出し、結果をＰＲＦエントリ３６（Ｒｔａｇ３６）のダブルレジスターに書き込み、そしてＤ０有効情報を１に更新する。この方法で、２つの異なるＰＲＦエントリからの断片化した２つのシングルレジスターは同一のエントリに併合される。図５Ｂに示したように、第２番目修正マイクロオペレーション（ｕＯＰ２）は、Ｓ２及びＳ３を読み出し、結果をＰＲＦエントリ３７（Ｒｔａｇ３７）を有する他のダブルレジスターに書き込み、そしてＤ１有効情報を更新する。図５Ｃに示したように、第３番目修正マイクロオペレーション（ｕＯＰ３）は、２つのダブルレジスターＤ０、Ｄ１を読み出し、結果をＰＲＦエントリ３８（Ｒｔａｇ３８）のクワッドレジスターに書き込み、そしてＱ０有効情報を１に更新する。この時、１つの構造レジスターソースに対する修正が完了される。プロセスは、断片化したマイクロオペレーションのすべての構造レジスターソースが修正される時まで反複され得る。断片化したマイクロオペレーションの修正が完了されれば、修正ステートマシン２３０はデコーダー遅延を中止する。図５Ｄに示したように、修正を誘発した原本マイクロオペレーション（図４ＥのｕＯＰ４）は再命名器２００へ伝送され得る。
【００３２】
図５Ａ乃至図５Ｄを参照して上述された修正プロセスで、修正マイクロオペレーションは、通常的なマイクロオペレーションが再命名器２００で使用する再命名テーブルの読出しポートと同一の読出しポートを使用する。したがって、修正マイクロオペレーションのための追加的な読出しポートが要求されない。
【００３３】
図６は本発明の実施形態にしたがって構造ソースレジスター断片化を判別し、図２の断片化判別器２２０及び修正ステートマシン２３０で修正マイクロオペレーションが生成されるシークェンスを示す。
【００３４】
一サイクルですべてのマイクロオペレーションのレジスタータグ（Ｒｔａｇｓ）が再命名された後、断片化判別器２２０は、マイクロオペレーションがレジスター併合を遂行するための修正を必要とするか否かを判別する。より詳細には、図６に示したように、断片化判別器２２０は、マイクロオペレーションが再命名器２００に伝達される時、再命名テーブル２１０から断片化情報を受信し（Ｓ１０）、デコーダーからマイクロオペレーションの構造ソースレジスターのタイプ（例えば、シングル、ダブル、又はクワッド）に対する情報を受信する（Ｓ２０）。断片化情報は、再命名テーブルに格納されたソースレジスターＱ０、Ｄ１、及び／又はＤ０に対する有効性情報を含む。受信された情報に基づいて、断片化判別器２２０は、構造ソースレジスターが断片化したか否かを判別する。即ち、断片化判別器２２０は、構造ソースレジスターの修正が必要であるであるか否かを判別する（Ｓ３０）。マイクロオペレーションの構造ソースレジスターが複数のＰＲＦエントリに存在するものとしてマーク（ｍａｒｋ）されていれば、断片化判別器２２０は、マイクロオペレーションの構造ソースレジスターが断片化し、修正が必要であることと判別する（Ｓ４０）。
【００３５】
構造ソースレジスターが断片化したと判別されて、構造ソースレジスターのマイクロオペレーションが修正を必要とすれば（Ｓ４０）、断片化判別器２２０は、断片化したマイクロオペレーションの再命名インターフェイス１５０及び新しいマイクロオペレーション（ｙｏｕｎｇｅｒ  ｕＯＰ）を遅延する（Ｓ５０）。しかし、同一のサイクルで古いマイクロオペレーション（ｏｌｄｅｒ  ｕＯＰ）は再命名が遂行される間に処理されることが許容され得る。ここで、新しいマイクロオペレーションは、プログラム順序（ｐｒｏｇｒａｍ  ｏｒｄｅｒ）で新しい、即ち、生成された後に相対的に短い時間が経過したマイクロオペレーションを意味する。古いマイクロオペレーションは、プログラム順序（ｐｒｏｇｒａｍ  ｏｒｄｅｒ）で古い、即ち、生成された後に相対的に長い時間が経過したマイクロオペレーションを意味する。
【００３６】
Ｓ４０段階でマイクロオペレーションが修正を必要とすることが判別された後、修正ステートマシン２３０は、再命名テーブルから断片化情報、即ちソース有効情報を受信し（Ｓ６０）、デコーダー１００からマイクロオペレーションのソースレジスターのタイプ（シングル、ダブル、又はクワッド）に対する情報を受信し（Ｓ７０）、そしてデコーダー１００からソースレジスターの構造タグを受信する（Ｓ８０）。受信された情報を利用して、修正ステートマシン２３０は、断片化した各マイクロオペレーションで要求される修正マイクロオペレーションの数を判別し、必要となる数の修正マイクロオペレーションを生成してソースレジスターの断片化を修正する（Ｓ９０）。上述したように、修正は、異なる物理レジスターファイルエントリ数を有する小さいサイズのレジスターを併合することによって、そしてレジスターのデータを他のレジスターファイルエントリ数を有するさらに大きいサイズのレジスターに書き込むことによって遂行される。例えば、ソースレジスターが２つのダブルレジスターによって作られたクワッドである場合、２つのダブルレジスターは併合され、その結果がクワッドレジスターに書き込まれ得る。２つのシングルレジスターから作られたダブルソースレジスターの場合、２つのシングルレジスターが併合され、その結果がダブルレジスターに書き込まれ得る。修正マイクロオペレーションが生成されれば、このような修正マイクロオペレーションが再命名テーブルに伝送されて、修正ステートマシン２３０によって断片化が修正される（Ｓ１００）。断片化したマイクロオペレーションの修正が完了されれば、デコーディングの遅延が除去され、デコーダーは元のマイクロオペレーション（断片化したマイクロオペレーションであったが、それ以上断片化されないマイクロオペレーション）を再び遂行する。修正マイクロオペレーションは再命名器に成功的に伝送される。必要となる修正マイクロオペレーションの数を判別及び生成することは、すべての修正マイクロオペレーションが生成され、再命名される時まで反複される（Ｓ１１０）。このような修正マイクロオペレーションは正常レジスター再命名プロセスに遂行される。断片化したマイクロオペレーションの修正が完了されれば、デコーディングの遅延が除去される（Ｓ１２０）。ここに開示された反複的な修正メカニズムは、修正スキームがどのようにして遂行されるかを示す例示的なものであり、他のメカニズムが採用されることができる。
【００３７】
本発明の実施形態による修正マイクロオペレーションは、小さいサイズのレジスターを読み出し、大きいサイズのレジスターに書き込むことを助ける命令である。例えば、修正マイクロオペレーションは、２つのシングルレジスターを読み出し、１つのダブルレジスターを書き込むか、又は２つのダブルレジスターを読み出し、１つのクワッドレジスターを書き込むことができる。
【００３８】
必要となる修正マイクロオペレーションの数は、ソースレジスターがクワッド又はダブルであるかによって、そしてソースデータのプロデューサーがクワッド、ダブル、又はシングルであるかによって決定される。例えば、図３Ｂに図示された再命名テーブルで、ソースレジスターがクワッドＱ０であり、２つのプロデューサーダブルＤ１、Ｄ０が全て有効であれば、Ｄ０及びＤ１を全て読み出しクワッドレジスターに書き込むための１つの修正マイクロオペレーションが必要である。ソースレジスターＤ０、Ｄ１のうちの１つが無効であれば、２つの修正マイクロオペレーションが必要である。即ち、第１番目修正マイクロオペレーションは、２つのプロデューサーシングルＳ０、Ｓ１を読み出し、ダブルレジスターに書き込むために必要であり、第２番目修正マイクロオペレーションは、新しく生成されたダブルレジスター及び既存の有効なダブルレジスターを読み出し、最終クワッドレジスターに書き込むために必要である。Ｄ０及びＤ１が全て無効であれば、３つの修正マイクロオペレーションが必要である。即ち、第１番目マイクロオペレーションは２つの下位のシングルレジスターを読み出してダブルレジスターに書き込み、第２番目修正マイクロオペレーションは２つの上位のシングルレジスターを読み出して他の１つのダブルレジスターに書き込み、第３番目修正マイクロオペレーションは２つのダブルレジスターを読み出して最終クワッドレジスターに書き込む。ソースレジスターがダブルレジスターであれば、２つのシングルレジスターを読み出してダブルレジスターに書き込む１つの修正マイクロオペレーションが必要である。修正ステートマシン２３０は、必要となる数の修正マイクロオペレーションを生成して修正を遂行することができる。
【００３９】
図７は、本発明の実施形態による命令パイプラインダイヤグラム上の修正プロセッサ流れを示す。図６に示したように、４つのマイクロオペレーション（ｕＯＰ０、ｕＯＰ１、ｕＯＰ２、ｕＯＰ３）が再命名器２００に伝送される。サイクル内でｕＯＰ０が最も古いマイクロオペレーションであり、ｕＯＰ３が最も新しいマイクロオペレーションである。各マイクロオペレーションのソースレジスターの断片化情報が再命名テーブルに書き込まれる。再命名テーブル及びマイクロオペレーションのソースタイプを比較することによって、断片化判別器２３０によって断片化修正の必要性が判別される。ｕＯＰ０が再命名器２００に到達する時、断片化判別器２３０がソースレジスターに修正を発生させる断片化がないと判別すれば、ｕＯＰ０は再命名のために伝送される。第２番目マイクロオペレーション（ｕＯＰ１）は修正が必要であると判別される。デコーダーは遅延（又は中止）され、修正プロセスが開始される。
【００４０】
修正ステートマシン２３０は、断片化したマイクロオペレーションに必要となる修正マイクロオペレーションの数を判別し、必要となる数の修正マイクロオペレーションを生成する。図７の例で、ｕＯＰ１を修正するために必要となる修正マイクロオペレーションの数は３つである。生成された修正マイクロオペレーション（ＦｘＯＰ１ａ、ＦｘＯＰ１ｂ、ＦｘＯＰ１ｃ）は、小さいサイズのレジスターを併合して大きいサイズのレジスターに書き込むことを助ける。ｕＯＰ１の修正マイクロオペレーションが生成されることによって、修正マイクロオペレーション（ＦｘＯＰ１ａ、ＦｘＯＰ１ｂ、ＦｘＯＰ１ｃ）が伝送（ｄｉｓｐａｔｃｈ）され、デコーダー１００の遅延（又は中止）が除去される。
【００４１】
ｕＯＰ１の修正を終了した後、デコーダーの遅延（又は中止）は除去され、デコーダーはｕＯＰ１、ｕＯＰ２、ｕＯＰ３を実行する。ｕＯＰ１は成功的に再命名される。第３番目マイクロオペレーション（ｕＯＰ２）は修正が必要であることと判別され、デコーダー１００は再び遅延（又は中止）される。同様に、修正ステートマシン２３０はｕＯＰ２を修正するために必要となる数の修正マイクロオペレーションを生成し、その他の修正プロセスが開始される。第４番目マイクロオペレーション（ｕＯＰ３）又は類似なプロセスに修正される。図７に示したように、修正プロセスはパイプラインプロセスである。
【００４２】
マイクロオペレーションのソースレジスターの各々で修正スキームを必要とすることがある。マイクロオペレーションに３つのソースが存在すれば、最大９つの修正マイクロオペレーションがマイクロオペレーションの断片化を修正するために必要となることがある。本発明の実施形態によれば、９つの修正マイクロオペレーションの中で、サイクル当たり４つの修正マイクロオペレーションが再命名／伝送（ｄｉｓｐａｔｃｈ）されることができる。後続マイクロオペレーションの再命名は、修正マイクロオペレーションが実行（ｉｎｓｅｒｔ）される時まで遅延（又は中止）される。複数のマイクロオペレーションが同一サイクルで修正を必要とすれば、マイクロオペレーションを修正する順序は、マイクロオペレーションの相対的な新古にしたがって決定されることができる。
【００４３】
上述された例示的な再命名及び修正スキームは、レジスター併合を必要とするすべての断片化したソースで、同時にスケジューラーに複数の物理ソースタグを格納する必要性を除去する。また、このスキームは、レジスター併合を遂行するために再命名器及び物理レジスターファイルの追加的な読出しポートの必要性を誘発しない。上述された実施形態は、面積及び電力面で効率的なステートマシンを利用してレジスターで併合のための修正マイクロオペレーションを検出及び実行する。また、上述された実施形態は、ナロー−ワイド依存性を有しない命令に影響を及ぼさないので、動作の性能面でさらに効率的である。
【００４４】
上述された実施形態は、例示的なものであり、本発明の技術的な思想を限定しない。例えば、物理レジスターの例示的な１２８ビットのサイズは、２５６、６４、又は３２ビットのような他のデータサイズであり得る。シングルレジスターは、４、１６、６４ビットのような任意のサイズも有し得り、したがって、ダブルレジスターは、８、３２、６４、１２８ビットのような任意のサイズも有することができる。また、実施形態で説明されたサイクル当たりマイクロオペレーションの数は任意の数であり得る。再命名テーブル２１０、断片化判別器２２０及び修正ステートマシン２３０は、構造的に再命名器２００に包含されないこともあり、図２のプロセッサ１０の別の構成要素として具現され得る。
【００４５】
本発明の技術的な思想は、限定されず、ナロー−ワイド依存性を有するすべてのタイプの構造レジスターに適用され得る。上述された、そして上述されなかった多様な応用、最適化、追加及び改善は本発明の技術的な思想の範囲に属する。したがって、本発明の範囲は、実施形態の詳細な説明によって限定されず、添付された特許請求の範囲及び本発明の技術的な思想に含まれる多様な変更によって定めなければならない。
【符号の説明】
【００４６】
１０    プロセッサ
１００  デコーダー
２００  再命名器
２１０  再命名テーブル
２２０  断片化判別器
２３０  修正ステートマシン
３００  スケジューラー
【図１Ａ】
2014182830.tif 000003
【図１Ｂ】
2014182830.tif 000004
【図２】
2014182830.tif 000005
【図３Ａ】
2014182830.tif 000006
【図３Ｂ】
2014182830.tif 000007
【図３Ｃ】
2014182830.tif 000008
【図３Ｄ】
2014182830.tif 000009
【図４Ａ】
2014182830.tif 000010
【図４Ｂ】
2014182830.tif 000011
【図４Ｃ】
2014182830.tif 000012
【図４Ｄ】
2014182830.tif 000013
【図４Ｅ】
2014182830.tif 000014
【図５Ａ】
2014182830.tif 000015
【図５Ｂ】
2014182830.tif 000016
【図５Ｃ】
2014182830.tif 000017
【図５Ｄ】
2014182830.tif 000018
【図６】
2014182830.tif 000019
【図７】
2014182830.tif 000020