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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許5986543アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム
<>
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000002
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000003
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000004
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000005
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000006
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000007
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000008
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000009
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000010
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000011
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000012
  • 特許5986543-アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5986543
(24)【登録日】2016年8月12日
(45)【発行日】2016年9月6日
(54)【発明の名称】アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム
(51)【国際特許分類】
   G06F 9/38 20060101AFI20160823BHJP
   G06F 9/45 20060101ALI20160823BHJP
【FI】
   G06F9/38 350B
   G06F9/44 322H
【請求項の数】10
【全頁数】15
(21)【出願番号】特願2013-150697(P2013-150697)
(22)【出願日】2013年7月19日
(65)【公開番号】特開2015-22558(P2015-22558A)
(43)【公開日】2015年2月2日
【審査請求日】2015年11月27日
【早期審査対象出願】
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】石崎 一明
【審査官】 清木 泰
(56)【参考文献】
【文献】 前田志,外6名,スーパスカラ向けマルチバンクレジスタファイルの詳細設計,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2004年 7月25日,第104巻,第241号,(CPSY2004-20〜24),Pages:1〜6,特に、図3(b)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 9/45
(57)【特許請求の範囲】
【請求項1】
アーキテクチャレジスタと物理レジスタの結び付けを管理する1以上のマッパーテーブルを有するプロセッサを含むコンピュータにおいてアーキテクチャレジスタを割り付ける方法であって
前記コンピュータが、割り付け対象の仮想レジスタに対し、使用可能なアーキテクチャレジスタを検出するステップと、
前記コンピュータが、使用可能な前記アーキテクチャレジスタを複数検出することを条件に、前記割り付け対象の仮想レジスタをデスティネーション・オペランドにもつ全命令について近隣の命令群を識別するステップと、
前記コンピュータが、識別された前記近隣の命令群に関して、デスティネーション・オペランドに現れるアーキテクチャレジスタの使用回数をアーキテクチャレジスタごとカウントするステップと、
前記コンピュータが、前記アーキテクチャレジスタごとの前記使用回数を、アーキテクチャレジスタに対応づけるための割当規約が同一である前記1以上のマッパーテーブルのエントリのグループごとに足し合わせて該グループのエントリの利用回数の総数を算出するステップと、
前記コンピュータが、前記1以上のマッパーテーブルのエントリのグループごとの利用回数の総数が均一に近づくように、検出された複数の前記使用可能なアーキテクチャレジスタから、前記割り付け対象の仮想レジスタに割り付けるアーキテクチャレジスタを選択するステップと、
を含む方法。
【請求項2】
前記割り付け対象の仮想レジスタの生存区間と重ならない生存区間を有するアーキテクチャレジスタを、前記割り付け対象の仮想レジスタに対し使用可能なアーキテクチャレジスタとして検出する、請求項1に記載の方法。
【請求項3】
前記近隣の命令群として、そのデスティネーション・オペランドのアーキテクチャレジスタの使用時間が、前記割り付け対象の仮想レジスタに割り当てられるアーキテクチャレジスタの使用時間の一部又は全部と重なる命令の集合を識別する、請求項2に記載の方法。
【請求項4】
前記アーキテクチャレジスタの使用時間は、命令の種類ごとに予め決定されている、請求項3に記載の方法。
【請求項5】
前記近隣の命令群として、前記割り付け対象の仮想レジスタをデスティネーション・オペランドにもつ各命令の前後所定数の命令を識別する、請求項2に記載の方法。
【請求項6】
前記コンピュータが、検出された複数の前記アーキテクチャレジスタのうち、最も利用回数の総数が少ない前記エントリのグループに設定されているエントリの割当規約を満たすアーキテクチャレジスタを選択する、請求項1に記載の方法。
【請求項7】
1のマッパーテーブルに対し、アーキテクチャレジスタに対応づけるための割当規約が同一であるエントリのグループが複数存在する、請求項1に記載の方法。
【請求項8】
前記プロセッサは複数のマッパーテーブルを有し、マッパーテーブルごとアーキテクチャレジスタに対応づけるための割当規約が同一であるエントリのグループが1つ存在する、請求項1に記載の方法。
【請求項9】
請求項2乃至8のいずれかに一項に記載の方法の各ステップを前記コンピュータに実行させる、アーキテクチャレジスタの割り付けプログラム。
【請求項10】
請求項2乃至8のいずれかに一項に記載の方法の各ステップを実行するように適合された手段を備える、アーキテクチャレジスタ割り付けシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アーキテクチャレジスタと物理レジスタの結び付けを管理する1以上のマッパーテーブルを有するシステムおけるアーキテクチャレジスタの割り付け技術に関する。
【背景技術】
【0002】
IBM社のPOWER7(登録商標)プロセッサやz/Architecture(登録商標)のEC12プロセッサ、また、インテル社のSandyBridgeプロセッサ等、高性能プロセッサは、プログラマやコンパイラから見えるアーキテクチャレジスタとは別に、アーキテクチャレジスタ数(例えば、z/Architecture(登録商標)のEC12プロセッサでは16個)よりも多い数の物理レジスタ(例えばz/Architecture(登録商標)のEC12プロセッサでは80個)を持つ。
【0003】
このようなプロセッサは、プロセッサ内の演算をアーキテクチャレジスタより数の多い物理レジスタを用いて行うことで命令間の並列度を高め、性能を向上させる。具体的には、プロセッサはパイプライン上において、命令の発行時に物理レジスタを確保し、確保した物理レジスタを命令のデスティネーション・オペランドに現れるアーキテクチャレジスタに割り当てる。また、プロセッサは命令の完了時には、物理レジスタの値を対応するアーキテクチャレジスタに転送し、その後その物理レジスタを開放する。これによってプログラム内におけるアーキテクチャレジスタの再利用により生じる命令間の偽の依存関係が解消され、プロセッサは命令をアウト・オブ・オーダーに実行することが可能となる。
【0004】
アーキテクチャレジスタと物理レジスタ間のマッピングは、レジスタ・リネーミングと呼ばれており、マッパーテーブルを用いてプロセッサ内のレジスタ・リネーミング・マッパーにより行われる。マッパーテーブルの1エントリは、1物理レジスタに対応し、マッパーテーブルのエントリが一杯になると物理レジスタは使用できなくなる。物理レジスタが使用できないと、パイプラインに投入された命令の実行が継続できなくなることから、パイプラインストールが発生し性能が低下する。
【0005】
従来のプロセッサの設計では、マッパーテーブルのエントリを割り当てるアーキテクチャレジスタは自由であった。しかし近年プロセッサの設計の複雑化により、エントリを割り当てるアーキテクチャレジスタに条件を課すプロセッサも存在するようになった。アーキテクチャレジスタに同一の割当規約を課すエントリのグループを、本明細書では「物理レジスタ管理グループ」と称する。物理レジスタ管理グループは、マッパーテーブルのエントリの使用方法を決定するグループであるといえる。
【0006】
あるプロセッサは、1のマッパーテーブルに対し2つの物理レジスタ管理グループG0、G1を有する。物理レジスタ管理グループG0は、マッパーテーブルの前半半分のエントリを管理し、これを最下位ビットが0のアーキテクチャレジスタ番号に割り当てる。物理レジスタ管理グループG1は、マッパーテーブルの後半半分のエントリを管理し、これを最下位ビットが1のアーキテクチャレジスタ番号に割り当てる。上記以外にも、例えば、複数のマッパーテーブルを有し、マッパーテーブルごとに1の物理レジスタ管理グループをもたせそれぞれ異なる割当規約で管理対象のエントリを管理させるプロセッサなど、今後は様々な設計のプロセッサの登場が考えられる。
【0007】
ところで、物理レジスタ管理グループをマッパーテーブル全体で複数持つプロセッサを採用した場合、パイプラインストールの問題がより深刻化する。例えば、上述した1のマッパーテーブルに2つの物理レジスタ管理グループG0、G1を持たせる場合を考える。この場合、最下位ビットが1のアーキテクチャレジスタ番号が命令列で頻繁に使われると、物理レジスタ管理グループG1が管理するマッパーテーブルの後半半分のエントリが一杯になり、前半半分のエントリが空いているにも関わらず物理レジスタを使用できなくなる。結果プロセッサの性能が低下する。
【0008】
以下、本発明の先行技術調査において見つかった文献について説明する。
【0009】
特許文献1は、プログラム部分に出現する複数の仮想レジスタのそれぞれに対して、同一の仮想レジスタには同一の実レジスタを割り当て、相互に異なる仮想レジスタには異なる実レジスタを割り当てるようにしながら、プログラム部分を跨ぐ生存区間を有するソースプログラム中の変数に割り当てられる実レジスタとは異なるレジスタを割り当てる技術を開示する。
【0010】
特許文献2は、実行単位毎に、中間コード上の仮想レジスタにオブジェクトコード上の実レジスタを割付ける時、実行単位毎に、実レジスタの利用効率を数値化した利用度を算出し、利用度に応じて、割付け対象とする実レジスタの数を設定する技術を開示する。
【0011】
特許文献3は、アセンブリ処理に使用すべき実レジスタの使用状況を表す実レジスタテーブルと、実レジスタに対する仮想レジスタの使用状況を表す仮想レジスタテーブルとを設定しておき、アセンブラ命令でレジスタが指定された場合には、仮想レジスタテーブルを処理装置に検索させて、仮想レジスタテーブルに記述されている情報に基づいて実レジスタの使用状況を確認させ、使用する実レジスタの割り当てや、実レジスタに既設定のレジスタ値の退避や復旧といった処理を処理装置に実行させる技術を開示する。
【0012】
特許文献4は、物理レジスタへの論理レジスタの割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えた情報処理装置であって、所定の命令セットに属する専用命令として、論理レジスタの物理レジスタへの割り付けに対し、指定される論理レジスタの物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、それによって、論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタのリネーム先として使用できる物理レジスタ量を変更、最適化する技術を開示する。
【0013】
特許文献1〜4はいずれも物理レジスタの割り付けに関する技術を開示する。しかし、どの文献に記載される技術も、物理レジスタ管理グループをマッパーテーブル全体で複数持つプロセッサを対象としたものではなく、いずれの技術をもってしても物理レジスタの利用が不可となることに起因して起こる実行時のパイプラインストールによる性能低下を緩和することはできない。なお、非特許文献1は、複数のレジスタの生存区間の判定方法を開示する従来技術としてリストしたものである。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特開2011−181114号公報
【特許文献2】特開平5−158707号公報
【特許文献3】特開平5−20089号公報
【特許文献4】特開2007−18120号公報
【非特許文献】
【0015】
【非特許文献1】P.Briggs、K. D. Cooper、K. Kennedy、L. Torczon、“AColoringheuristics for register allocation”、 In Proceedingsof the ACM SIGPLAN 1989 Conference on Programming language design andimplementation (PLDI '89)
【発明の概要】
【発明が解決しようとする課題】
【0016】
この発明は、上記の問題点を解決するためなされたものであって、物理レジスタ管理グループをマッパーテーブル全体で複数持つプロセッサにおいて、物理レジスタが利用不可となることに起因して起こる実行時のパイプラインストール回数を削減できるようなアーキテクチャレジスタの割り付け技術を提供することを目的とする。
【課題を解決するための手段】
【0017】
上記目的を達成する本発明は、アーキテクチャレジスタと物理レジスタの結び付けを管理する1以上のマッパーテーブルを有するプロセッサを含むコンピュータにおいて、次のような、アーキテクチャレジスタの割り付け方法により実現される。そのような割り付け方法は、コンピュータが、割り付け対象の仮想レジスタに対し、使用可能なアーキテクチャレジスタを検出するステップと、コンピュータが、使用可能なアーキテクチャレジスタを複数検出することを条件に、割り付け対象の仮想レジスタをデスティネーション・オペランドにもつ全命令について近隣の命令群を識別するステップと、コンピュータが、識別された近隣の命令群に関して、デスティネーション・オペランドに現れるアーキテクチャレジスタの使用回数をアーキテクチャレジスタごとカウントするステップと、コンピュータが、アーキテクチャレジスタごとの使用回数を、アーキテクチャレジスタに対応づけるための割当規約が同一である1以上のマッパーテーブルのエントリのグループごとに足し合わせて該グループのエントリの利用回数の総数を算出するステップと、コンピュータが、1以上のマッパーテーブルのエントリのグループごとの利用回数の総数が均一に近づくように、検出された複数の使用可能なアーキテクチャレジスタから、割り付け対象の仮想レジスタに割り付けるアーキテクチャレジスタを選択するステップとを含む。
【0018】
好ましくは、コンピュータは、割り付け対象の仮想レジスタに対し使用可能なアーキテクチャレジスタとして、生存区間の重ならないアーキテクチャレジスタを検出する。
【0019】
また好ましくは、コンピュータは、近隣の命令群として、そのデスティネーション・オペランドのアーキテクチャレジスタの使用時間が、割り付け対象の仮想レジスタに割り当てられるアーキテクチャレジスタの使用時間の一部又は全部と重なる命令の集合を識別する。アーキテクチャレジスタの使用時間は、命令の種類ごとに予め決定されていてもよい。
【0020】
或いは、コンピュータは、近隣の命令群として、割り付け対象の仮想レジスタをデスティネーション・オペランドにもつ各命令の前後所定数の命令を識別してもよい。
【0021】
また好ましくは、コンピュータは、検出された複数のアーキテクチャレジスタのうち、最も利用回数の総数が少ないエントリのグループに設定されている割当規約を満たすアーキテクチャレジスタを選択する。
【0022】
ここで、コンピュータは、1のマッパーテーブルに対し、アーキテクチャレジスタに対応づけるための割当規約が同一であるエントリのグループが複数存在してもよい。あるいは、プロセッサは複数のマッパーテーブルを有し、マッパーテーブルごとアーキテクチャレジスタに対応づけるための割当規約が同一であるエントリのグループが1つ存在してもよい。
【0023】
なお、これまでアーキテクチャレジスタを割り付ける方法として本発明を説明した。しかし本発明は、これら方法をコンピュータに実行させるためのアーキテクチャレジスタの割り付けプログラム、及び、そのようなプログラムをコンピュータにインストールすることによって実現されるアーキテクチャレジスタの割り付け装置/システムとして把握することもできる。
【発明の効果】
【0024】
本発明によれば、アーキテクチャレジスタを割り付ける際に、割り付け対象の仮想レジスタを使用する命令の近隣の命令におけるアーキテクチャレジスタごとの使用回数が求められ、この使用回数が、アーキテクチャレジスタに対応づけるための割当規約が同一であるマッパーテーブルのエントリのグループごとに合計されて、マッパーテーブルのエントリのグループごとのエントリ利用回数の総数が求められる。結果、使用可能なアーキテクチャレジスタの中から、マッパーテーブルのエントリのグループごとの利用回数の総数が均一に近づくようなアーキテクチャレジスタを、割付対象の仮想レジスタに対して選択することが可能となる。そのため、本発明によれば、物理レジスタが利用不可となることに起因して起こる実行時のパイプラインストール回数を削減するという効果を奏することができる。本願発明のその他の効果については、各実施の形態の記載から理解される。
【図面の簡単な説明】
【0025】
図1】本願発明の実施形態による割り付けシステム200を実現するのに好適なコンピュータ100のハードウェア構成の一例を示す。
図2】本発明の実施形態による割り付けシステム200の機能ブロック図である。
図3】プログラムコード内におけるある命令に対する近隣の命令群を説明する図である。
図4A】マッパーテーブルと物理レジスタ管理グループの関係の一例を示す図である。
図4B】マッパーテーブルと物理レジスタ管理グループの関係の他の例を示す図である。
図5】本発明の実施形態による割り付け処理の流れの一例を示すフローチャートある。
図6】本発明の実験に使用したソースコードである。
図7図6に示すソースコードをコンパイルした結果の機械語命令列である。
図8A図6に示す命令列に対し、従来手法によりアーキテクチャレジスタを割り付けた結果を示す。
図8B図6に示す命令列に対し、従来手法によりアーキテクチャレジスタを割り付けた結果を示す。
図9A図6に示す命令列に対し、本発明の最適化によりアーキテクチャレジスタを割り付けた結果を示す。
図9B図6に示す命令列に対し、本発明の最適化によりアーキテクチャレジスタを割り付けた結果を示す。
【発明を実施するための形態】
【0026】
以下、本発明の実施形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【0027】
図1は、本発明を実施するのに好適なコンピュータ・システム100のハードウェア構成の一例を示す。コンピュータ・システム100は、バス106に接続されたメインCPU(中央処理装置)102とメイン・メモリ104を含んでいる。CPU102は好ましくは、32ビット又は64ビットのアーキテクチャに基づくものであり、例えば、IBM社のPOWER7(登録商標)プロセッサやz/Architecture(登録商標)のEC12プロセッサ、また、インテル社のSandyBridgeプロセッサ等、マッパーテーブルのエントリの使用方法を決定するグループをマッパーテーブル全体で複数持つプロセッサが対象となる。メイン・メモリ104は好ましくは、1GB以上の容量、より好ましくは、2GB以上の容量をもつものであってよい。
【0028】
バス106には、ディスプレイ・コントローラ108を介して、ディスプレイ110、例えば液晶ディスプレイ(LCD)が接続されうる。ディスプレイ110は、コンピュータの管理のために、通信回線を介してネットワークに接続されたコンピュータについての情報と、そのコンピュータ上で動作中のソフトウェアについての情報を、適当なグラフィック・インタフェースで表示するために使用される。
【0029】
バス106にはまた、SATA又はIDEコントローラ112を介して、ディスク114、例えばシリコン・ディスク又はハードディスクが接続されうる。バス106にはまた、SATA又はIDEコントローラ112を介して、任意的に、ドライブ116、例えばCD、DVDまたはBDドライブが接続されうる。バス106にはさらに、任意的に、キーボード・マウスコントローラ118又はUSBバス(図示せず)を介して、キーボード120及びマウス122が接続されうるが、本発明を実施する上では必要ない。
【0030】
ディスク114には、例えば、LINUX(登録商標)、マイクロソフト・コーポレーションが提供するWindows(登録商標)オペレーティング・システム、アップル・コンピュータ・インコーポレイテッドが提供するMacOS(登録商標)若しくはiOS(登録商標)、X Window Systemが備えるUNIX(登録商標)系システム(たとえば、インターナショナル・ビジネス・マシーンズ・コーポレーション(登録商標)が提供するAIX(登録商標))等のオペレーティング・システムが、メイン・メモリ104にロード可能なように記憶されている。
【0031】
上記ディスク114にはまた、オペレーティング・システムと協働してCPU102に命令を与え、本発明を実施するためのコンピュータ・プログラムを記録することができる。即ち、上記ディスク114には、コンピュータ・システム100にインストールされ、コンピュータ・システム100を本発明の実施形態によるアーキテクチャレジスタ割り付け装置/システムとして機能させるアーキテクチャレジスタ割り付けプログラム、及びそれら関連データを記録することができる。
【0032】
上記アーキテクチャレジスタ割り付けプログラムは、検出モジュールと、識別モジュールと、カウントモジュールと、総数算出モジュールと、選択モジュールとを含む。これらモジュールは、CPU102に働きかけて、コンピュータ・システム100を、各々後述する検出部202と、識別部204と、カウント部206、総数算出部208と、選択部210としてそれぞれ機能させる。なお本発明は、動的であるか、静的であるかを問わず、コンパイラの機能の一部として実装可能である。
【0033】
上記コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。ドライブ116は、必要に応じて、CD−ROM、DVD−ROMまたはBDからプログラムをディスク114にインストールするために使用されうる。
【0034】
通信インタフェース126は、例えばイーサネット(登録商標)・プロトコルに従う。通信インタフェース126は、通信コントローラ124を介してバス106に接続され、コンピュータ・システム100を通信回線128に物理的に接続する役割を担い、コンピュータ・システム100のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワーク・インタフェース層を提供する。なお、通信回線は、有線LAN環境に基づくもの、又は、無線LAN環境、例えば、IEEE802.11a/b/g/nなどのWi−Fi規格に基づくものであってもよい。
【0035】
以上から、本発明の実施態様において使用されるコンピュータ・システム100は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、又は、これらの組み合わせによって実現されることが容易に理解されるであろう。なお、上記説明した構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【0036】
図2は、本発明の実施形態による割り付けシステム200の機能ブロック図である。割り付けシステム200は、検出部202と、識別部204と、カウント部206と、総数算出部208と、選択部210とを含む。
【0037】
検出部202は、割り付け対象の仮想レジスタに対し、使用可能なアーキテクチャレジスタを検出する。より具体的には、検出部202は、割り付け対象の仮想レジスタに対し使用可能なアーキテクチャレジスタとして、生存区間の重ならないアーキテクチャレジスタを検出する。
【0038】
生存区間が重なるか否かの判断は以下のようにして行う。
1.割り付け対象の仮想レジスタが、コンパイル対象のプログラム部分又は全体内において初めて定義されて最後に参照されるまでの区間を求める。
2.同様にそれぞれのアーキテクチャレジスタについて、コンパイル対象のプログラム部分又は全体内において初めて定義されて最後に参照されるまでの区間を求める。
3.1.で求めた区間と2.で求めた各区間とを比較し、重なる部分があれば生存区間が重なると判断し、重なる部分がなければ生存区間は重ならないと判断する。
【0039】
なお、生存区間の重なりの判断方法は既知の技術(例えば非特許文献1を参照)であり、本発明の要旨ではないから、詳細な説明は省略する。
【0040】
識別部204は、検出部202が使用可能なアーキテクチャレジスタを複数検出することを条件に、割り付け対象の仮想レジスタをデスティネーション・オペランドにもつ全命令について近隣の命令群を識別する。なお、ここで割り付け対象の仮想レジスタをソース・オペランドにもつ命令を対象としないのは、ソース・オペランドに書かれるアーキテクチャレジスタ番号は、そのアーキテクチャレジスタの内容を読み出すためにだけ使用され、マッパーテーブルのエントリを消費することがないからである。
【0041】
ここで、近隣の命令群とは、その命令のデスティネーション・オペランドのアーキテクチャレジスタの使用時間が、割り付け対象の仮想レジスタに割り当てられるアーキテクチャレジスタの使用時間と少なくとも一部重なる、そのような命令の集合をいう。そして、アーキテクチャレジスタの使用時間とは、プロセッサ内のレジスタ・リネーミング・マッパーにより、アーキテクチャレジスタに対し物理レジスタが割り当てられたその時点から、物理レジスタが解放されるまでの時点をいう。なお、割り付け対象の仮想レジスタに割り当てられるアーキテクチャレジスタがなんであっても識別される近隣の命令群に違いはないことに留意されたい。
【0042】
アーキテクチャレジスタの使用時間は、例えば、割り付け対象の仮想レジスタに仮にアーキテクチャレジスタを割り当てておき、プロセッサシミュレータを実行して、使用時間に重なりがあるか否かを調査することにより厳密に求めることができる。これに代えて、アーキテクチャレジスタの使用時間は、プロセッサの仕様に基づき命令の種類ごとに予め調べて決定しておき、それを利用してもよい。更には、割り付け対象の仮想レジスタをデスティネーション・オペランドにもつ各命令の前後所定数の命令(アーキテクチャレジスタの割り付けが未だなされていない命令及びデスティネーション・レジスタのない命令を除く)を近隣の命令群としてもよい。
【0043】
ここで図3の擬似コードを参照して、割り付け対象の仮想レジスタをデスティネーション・オペランドにもつ命令の前後3つの命令を近隣の命令群とする場合について説明する。図3に示す擬似コードにおいて、割り付け対象の仮想レジスタ番号をFPR_0981とする。レジスタ割り付けには、アーキテクチャレジスタ番号FPR0〜13までが利用可能とする。仮想レジスタ番号FPR_0981は、アーキテクチャレジスタ番号FPR0、1、3、5、7、9とは生存区間が重なっているが、アーキテクチャレジスタ番号FPR2、4、6、8、10、11、12、13とは生存区間が重ならない。そのため、FPR2、4、6、8、10、11、12、13の中から最適なアーキテクチャレジスタ番号を選択する必要がある。なお、図3において、FPR_09XXは仮想浮動小数点レジスタ番号を示し、FPRXXはアーキテクチャレジスタ番号を示す。また、行頭の数字は行番号を示す。後述する、図7図8A、B、及び図9A、Bにおいても同様の表記法を用いた。
【0044】
図3に示す擬似コードにおいて、仮想レジスタ番号FPR_0981をデスティネーション・オペランドにもつ全命令は、行番号1のLD命令と、行番号12のSDBR命令である。なお、行番号13のSTD命令はデスティネーション・レジスタがない命令であることに留意されたい。行番号1のLD命令は先頭の命令であるため、その近隣の命令群は後続の3命令となる。しかし行番号2のLD命令にはアーキテクチャレジスタの割り付けが未だなされていないことから、近隣の命令群は下線の引かれた行番号3のLD命令と、行番号4のLDR命令となる。
【0045】
また、行番号12のSDBR命令についての近隣の命令群は、アーキテクチャレジスタの割り付けが未だなされていない命令を除いた前後3つの命令の集合となる。即ち、行番号12のSDBR命令の近隣の命令群は、下線の引かれた行番号10のSDBR命令と、行番号11のADBR命令と、行番号14のLDと、行番号15のSDBRである。
【0046】
カウント部206は、識別部204により識別された近隣の命令群に関して、デスティネーション・オペランドに現れるアーキテクチャレジスタの使用回数をアーキテクチャレジスタごとカウントする。
【0047】
先ほどの図3に示す擬似コードを例に説明する。上述したように、行番号1のLD命令についての近隣の命令群は、行番号3のLD命令と、行番号4のLDR命令であり、行番号12のSDBR命令についての近隣の命令群は、行番号10のSDBR命令と、行番号11のADBR命令と、行番号14のLDと、行番号15のSDBRである。それぞれの命令のデスティネーション・オペランドに現れるアーキテクチャレジスタ番号の使用回数をアーキテクチャレジスタ番号ごとカウントすると、FPR0が2回、FPR9が2回、FPR4が2回である。
【0048】
総数算出部208は、カウント部206によりカウントされたアーキテクチャレジスタごとの使用回数を、アーキテクチャレジスタに対応づけるための割当規約が同一である1以上のマッパーテーブルのエントリのグループ、即ち、物理レジスタ管理グループごとに足し合わせて、その管理対象のエントリの利用回数の総数を算出する。このとき、あるアーキテクチャレジスタについてその使用回数をどの物理レジスタ管理グループの利用回数に足し合わせるかは、プロセッサの仕様、より具体的には物理レジスタ管理グループの管理対象エントリの割当規約に従う。即ち、物理レジスタ管理グループは、マッパーテーブルのエントリの使用方法を決定するものであるから、その使用方法に合致する全アーキテクチャレジスタの使用回数を合計して、その管理対象のエントリの利用回数の総数とする。総数算出部208は、プロセッサの仕様をそれ自体で有していてもよく、あるいは起動時に所定のファイルから読み出してもよい。
【0049】
ここで物理レジスタ管理グループとマッパーテーブルの関係を、図4A図4Bを参照して説明する。図4Aに示す例では、1のマッパーテーブル400に対し、マッパーテーブル400の異なるエントリ部分をそれぞれ管理する複数の物理レジスタ管理グループ402、404が存在する。また、図4Bに示す例では、プロセッサが複数のマッパーテーブル406、410を有し、マッパーテーブルごとその全エントリを管理する物理レジスタ管理グループが1つ存在する(マッパーテーブル406に対し物理レジスタ管理グループ408、マッパーテーブル410に対し物理レジスタ管理グループ412)。
【0050】
物理レジスタ管理グループ402、408は、その管理対象のエントリを、最下位ビットが0のアーキテクチャレジスタ番号に割り当てる。物理レジスタ管理グループ404、412は、その管理対象のエントリを、最下位ビットが1のアーキテクチャレジスタ番号に割り当てる。なお、いずれの場合もマッパーテーブルの1エントリは、1物理レジスタに対応する。
【0051】
今、物理レジスタ管理グループとマッパーテーブルの関係が図4Aに示す関係を有すると仮定して、図3に示す擬似コードの例を用いて、アーキテクチャレジスタごとの使用回数を物理レジスタ管理グループごとに足し合わせてその管理対象エントリの利用回数の総数を算出してみる。上述したように、アーキテクチャレジスタ番号ごとの使用回数はFPR0が2回、FPR9が2回、FPR4が2回である。また、アーキテクチャレジスタ番号FPR0、FPR4は最下位ビットが0であるから、物理レジスタ管理グループ402の管理対象エントリの割当規約を満たす。アーキテクチャレジスタ番号FPR9は最下位ビットが1であるから、物理レジスタ管理グループ404の管理対象エントリの割当規約を満たす。従って、物理レジスタ管理グループ402の管理対象エントリの利用回数の総数は、FPR0の2回とFPR4の2回を足し合わせて4回となる。また、物理レジスタ管理グループ404の管理対象エントリの利用回数の総数は、FPR9の2回となる。
【0052】
選択部210は、1以上のマッパーテーブルのエントリのグループごと、即ち物理レジスタ管理グループごとの管理対象エントリの利用回数の総数が均一に近づくように、検出された複数の使用可能なアーキテクチャレジスタの中から、割り付け対象の仮想レジスタに割り付けるアーキテクチャレジスタを選択する。一例として、選択部210は、検出された複数のアーキテクチャレジスタのうち、最も利用回数の総数が少ない物理レジスタ管理グループが有するその管理対象のエントリの割当規約を満たすアーキテクチャレジスタを選択する。
【0053】
これまで説明してきた例を用いて具体的に選択部210による選択方法を説明する。上述したように、割り付け対象の仮想レジスタ番号FPR_0981に対して、FPR 2、4、6、8、10、11、12、13の8つの使用可能なアーキテクチャレジスタ番号が存在する。この中から最適なアーキテクチャレジスタ番号を選択する必要がある。物理レジスタ管理グループ402の利用回数の総数は4回であり、物理レジスタ管理グループ404の利用回数の総数は2回である。従って、最も利用回数の総数が少ない物理レジスタ管理グループ404の管理対象エントリの割当規約を満たすアーキテクチャレジスタ番号が最適なアーキテクチャレジスタ番号となる。物理レジスタ管理グループ404の管理対象エントリの割当規約は、最下位ビットが1のアーキテクチャレジスタ番号であることから、仮想レジスタ番号FPR_0981に対して割り付けるべき最適のアーキテクチャレジスタ番号はFPR11又はFPR13のいずれかとなる。
【0054】
次に図5を参照して、割り付けシステム200の動作を説明する。図5は、本発明の実施形態による割り付け処理の流れの一例を示すフローチャートである。処理はステップ500で開始し、割り付けシステム200は、コンパイル済みのプログラムをメモリに読み込み、プログラム内のレジスタ割り付け対象の命令列Iから仮想レジスタvrを1つ取り出す。取り出す仮想レジスタvrが無い場合(ステップ502:YES)、処理は終了する。一方、取り出す仮想レジスタvrがある場合(ステップ502:NO)、続いて割り付けシステム200は、仮想レジスタvrと生存区間が重ならないアーキテクチャレジスタの集合Rを選択する(ステップ504)。
【0055】
続いて割り付けシステム200は、選択した集合R内のアーキテクチャレジスタが1つであるか否かを判定する(ステップ506)。集合R内にアーキテクチャレジスタが1つしかない場合(ステップ506:YES)、割り付けシステム200は、レジスタ割り付け対象の命令列I内の仮想レジスタvrに集合R内の1のアーキテクチャレジスタを割り付ける(ステップ508)。そして処理はステップ500へ戻る。
【0056】
一方、集合R内にアーキテクチャレジスタが1つでない場合、即ちアーキテクチャレジスタが複数ある場合(ステップ506:NO)、割り付けシステム200は、レジスタ割り付け対象の命令列Iの中から仮想レジスタvrをデスティネーション・オペランドに持つ命令を全て選びIvrとする(ステップ510)。続いて割り付けシステム200は、選択した全命令Ivrの各命令について近隣の命令を識別し、識別した全命令を命令群Inとする(ステップ512)。続いて割り付けシステム200は、命令群Inにおいて、デスティネーション・オペランドに現れるアーキテクチャレジスタrの使用回数Na(r) を求める(ステップ514)。ここで使用回数Na(r)は、アーキテクチャレジスタrが命令群Inのデスティネーション・オペランドに出現する回数といえる。
【0057】
続いて割り付けシステム200は、プロセッサの仕様、より具体的には物理レジスタ管理グループpgの管理対象エントリの割当規約に従って、アーキテクチャレジスタrの使用回数Na(r)を、物理レジスタ管理グループpgごとに足し合わせてその管理対象エントリの利用回数の総数N(pg)を算出する(ステップ516)。続いて割り付けシステム200は、割り付け対象の仮想レジスタvrにステップ504で選択した集合R内の1のアーキテクチャレジスタを割り付けたと仮定して、対応する物理レジスタ管理グループpg の管理対象エントリの利用回数の総数N(pg)を更新した際に、全物理レジスタ管理グループpg の管理対象エントリの利用回数の総数N(pg)が均一に近づくような、そのようなアーキテクチャレジスタrを集合R内から選択する(ステップ518)。
【0058】
続いて割り付けシステム200は、ステップ518で選択した集合R内のアーキテクチャレジスタrを割り付け対象の仮想レジスタvrに割り付ける(ステップ520)。そして処理はステップ500へ戻る。
【0059】
次に図6図9Bを参照して、本発明の実験結果を説明する。図6に示すコードは、実験用プログラムのソースコードであり、図7に示すコードは、図6に示すソースコードの一部(7〜16行目)をJITコンパイラによりコンパイルして得られた仮想浮動小数点レジスタ番号をもつ機械語命令列である。これを実験では従来技術と本発明とを適用してそれぞれアーキテクチャレジスタの割り付けを行い、2つのマッパーテーブルtable0、table1を有するパイプラインプロセッサ上シミュレータで実行した。なおシミュレータによる実行では、2つのマッパーテーブルはそれぞれ1の物理レジスタ管理グループを有し、アーキテクチャレジスタ番号の最下位ビットが0の場合マッパーテーブルtable0が利用され、アーキテクチャレジスタ番号の最下位ビットが1の場合マッパーテーブルtable1が利用されるものとした。
【0060】
図8Aに示すコードは、図6に示す機械語命令列に従来技術を適用して仮想レジスタにアーキテクチャレジスタを割り付けた結果である。図8Bは、図8Aの割り付け結果のみを示したものである。図9Aに示すコードは、図6に示す機械語命令列に本発明を適用して仮想レジスタにアーキテクチャレジスタを割り付けた結果である。図9Bは、図9Aの割り付け結果のみを示したものである。
【0061】
従来技術のアーキテクチャレジスタの割り付けにおいては、マッパーテーブルのエントリの使用方法は全く考慮されない。そのため、図8Bに示すように、デスティネーション・オペランドにおける最下位ビットが0のアーキテクチャレジスタばかりが仮想レジスタに対し割り付けられた。図8Aに示す命令列をみると、最下位ビットが0のアーキテクチャレジスタ番号の登場回数が16回、最下位ビットが1のアーキテクチャレジスタ番号の登場回数が0回となっている。
【0062】
一方、本発明のアーキテクチャレジスタの割り付けにおいては、マッパーテーブルtable0とtable1がバランスよく使用されるようにマッパーテーブルのエントリの使用方法が考慮される。そのため図9Bに示すように、従来技術では最下位ビットが0のアーキテクチャレジスタ番号が割り付けられた仮想レジスタ番号FPR_0967, FPR_0981, FPR_0978に、最下位ビットが1のアーキテクチャレジスタが割り付けられた。図9Aの命令列をみると、最下位ビットが0のアーキテクチャレジスタ番号の登場回数は16回から8回へ減り、最下位ビットが0のアーキテクチャレジスタ番号の登場回数が0から8回に増えている。そして図9Aに示す命令列の実行は、図8Aに示す命令列の実行と比較すると、実行サイクルを13%削減することができた。これは、図8Aに示す命令列の実行では、マッパーテーブルtable0ばかりが使用されるため、そのエントリが一杯となってパイプラインストールが頻繁に起こるのに対し、図9Aに示す命令列の実行では、マッパーテーブルtable0とtable1がバランスよく使用され、物理レジスタの使用不可に起因するパイプラインストールが削減されるためと考えられる。
【0063】
以上、実施形態を用いて本願発明の説明をしたが、本願発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更又は改良を加えることが可能であることが当業者に明らかである。以上のように、上記の実施形態に変更又は改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【0064】
なお、特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り任意の順序で実現しうることに留意すべきである。また、前の処理の出力を後の処理で用いる場合でも、前の処理と後の処理の間に他の処理が入ることは可能である場合があること、又は間に他の処理が入るように記載されていても前の処理を後の処理の直前に行うよう変更することも可能である場合があることも留意されたい。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」、「続いて、」等を用いて説明したとしても、この順で実施することが必須であることを必ずしも意味するとは限らない。
図1
図2
図3
図4A
図4B
図5
図6
図7
図8A
図8B
図9A
図9B