JP2008500654A - 仕切りのあるレジスタバンクのためのバンク付与 - Google Patents

仕切りのあるレジスタバンクのためのバンク付与 Download PDF

Info

Publication number
JP2008500654A
JP2008500654A JP2007515703A JP2007515703A JP2008500654A JP 2008500654 A JP2008500654 A JP 2008500654A JP 2007515703 A JP2007515703 A JP 2007515703A JP 2007515703 A JP2007515703 A JP 2007515703A JP 2008500654 A JP2008500654 A JP 2008500654A
Authority
JP
Japan
Prior art keywords
register
banks
operands
conflict
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007515703A
Other languages
English (en)
Other versions
JP4729565B2 (ja
Inventor
ルエ、グエイ−ユアン
ジュ、ジ−チン(ロイ)
リャン、ルイキ
チャン、チャオチン
チャン、ジュンチャオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2008500654A publication Critical patent/JP2008500654A/ja
Application granted granted Critical
Publication of JP4729565B2 publication Critical patent/JP4729565B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

オペランドについての可能な候補レジスタバンクを特定することで、仕切られたレジスタバンク内の物理レジスタにオペランドを付与することができる。前記オペランドを候補レジスタバンクに割り当てる前に、候補レジスタバンク間に抵触がもしあれば、特定して解決する。
【選択図】なし

Description

汎用目的のマイクロプロセッサにおいてレジスタは、整数レジスタバンクおよび浮動小数点レジスタバンクなどのレジスタバンク(あるいはファイル)に隔てられている。異なるバンクのレジスタはサイズ、形式の点で異なる可能性があり、レジスタバンク間に直接データ経路は存在しない場合がある。レジスタ割り当て(RA)は現代の最適コンパイラにおいて重要な役割を果たすことができる。RAの任務は記号レジスタを物理レジスタにマップすることである場合がある。一般的にいうと、一つの命令中の供給先あるいは供給元オペランドのレジスタバンクは該命令のオペコードにより決定される場合がある。従って、RAは単に記号レジスタを各物理レジスタバンクに別個に付与することがある。
ドメイン特有の、あるいは埋込プロセッサは高度に仕切られたレジスタバンクを持つことがある。これらレジスタバンクへの割り当ての目的で、コンパイラはレジスタバンクと記号レジスタのための該バンクの物理レジスタとを選択する義務が課せられていることがある。しかし、これらプロセッサには、レジスタバンク間に抵触を招くようなハードウェア制約があることがある。このような抵触は、コンパイラがレジスタバンクと記号レジスタのための該バンクの物理レジスタとを選択する前に解決が必要となることがある。
本発明の実施の形態の様々な例示的特徴ならびに利点が以下の、関連図面に図示される本発明のより具体的な例示的実施の形態から明らかとなろう、関連図面においては、同様の参照番号は概ね同一の、機能的に類似した、および/または、構造的に類似した要素を示す。
本発明の実施の形態の一例によるシステムの実施の形態の一例を図示する。
本発明の実施の形態の一例による方法の実施の形態の一例を図示する。
本発明の実施の形態の一例による表の実施の形態の一例を図示する。
本発明の実施の形態の一例による方法の実施の形態の一例を図示する。
本発明の実施の形態の一例による定義使用のグラフの実施の形態の一例を図示する。
本発明の実施の形態の一例による定義使用のサブグラフの実施の形態の一例を図示する。
本発明の実施の形態の一例による有向非巡回グラフの実施の形態の一例を図示する。
本発明の実施の形態の一例による有向非巡回グラフの実施の形態の一例を図示する。
本発明の実施の形態の一例において幾つかの部材に使用できる、コンピュータおよび/または通信システムの実施の形態の一例を図示する。
本発明の実施の形態の一例を以下に説明する。実施の形態の具体的な例を説明するが、これは単に例示目的であると理解されるべきである。関連技術分野の当業者であれば、本発明の精神および範囲から逸脱することなく、他の部材および構成を使用することが可能であることは認識されよう。
本発明の実施の形態の例は、仕切りのあるレジスタバンク内の物理レジスタにオペランドを付与するシステムおよび方法を提供してもよい。図1は、多数バンクレジスタアーキテクチャを持つレジスタバンクアーキテクチャ100の一例を図示する。本発明の実施の形態の一例においては、アーキテクチャ100は演算論理部(ALU)101、オペランドレジスタ102a、102b、汎用目的レジスタ(GPR)バンク103a、103b、動的ランダム・アクセス・メモリ(DRAM)転入レジスタバンク104、静的ランダム・アクセス・メモリ(SRAM)転入レジスタバンク105、次近傍(NN)レジスタバンク106、DRAM転出レジスタバンク107、SRAM転出レジスタバンク108、ローカルメモリ109、およびローカルメモリアドレス110a、110bを含んでもよい。
本発明の実施の形態の一例においては、ネットワークプロセッサ(不図示)が十六個の接続マイクロエンジン(ME)を持つことができる。各MEは例えば、減少命令セットコンピュータ(RISC)プロセッサであってもよく、十八個のハードウェアスレッドを持っていてもよい。レジスタハードウェアの複雑性を減少してハードウェアマルチスレッディングを支援するべく、各MEは十七個のレジスタバンクを持っていてもよい。このようなレジスタバンクは図1に示すように、GPR AとBバンク、SRAM転入・転出バンク、DRAM転入・転出バンク、および次近傍(NN)バンクを含んでいてもよい。
本発明の実施の形態の一例においては、レジスタバンクはお互い別個である必要はない。例えば、これらレジスタバンクは32ビット幅で、値が一つのバンクから別のバンクへ送信されるよう、同じ値を表していてもよい。ME命令の一つのオペランドが、ある制約を伴ってではあるが多数のバンクに駐在していてもよい。
MEsの命令セットアーキテクチャ(ISA)仕様によると、多くのMEの命令のオペランドが多数レジスタバンクに駐在できる。例えば、ALU命令の供給元オペランドがGPR AとBバンク、SRAMとDRAM転入バンク、次近傍バンクのいずれに駐在していてもかまわない。このような実施の形態においては、二つの供給元オペランドA、Bを持つ命令タイプにとっては、二つの供給元オペランド選択規則がさらにレジスタバンクの選択に制限を加える。このような規則の一つによると、同一のバンクをA、Bオペランドの両方に使用することはできない、とされていてもよい。二つ目のこのような規則によると、SRAM/DRAM転入レジスタバンクと次近傍レジスタバンクはA、Bオペランドの両方として使用することはできない、とされていてもよい。三番目の規則によると、直近の値をA、Bオペランド両方に使用することができない、とされている。
例えば、ALU加算命令「r1=r2+r3」においては、r2およびr3の両方がGPR AバンクあるいはBバンク内に駐在することはできない。
本発明の実施の形態の一例においては、これら制約を満たすために、異なるレジスタバンク間で値を移動させることができてもよい。従ってMEsに対するレジスタ割り当て(RA)は、レジスタバンク間のデータ移動に伴うコストを最小限にしながら、バンクの付与、およびレジスタの割り当てを、上述の制約を満たすように適切に行うことができる。
図2は、これら制約を満たし、かつレジスタバンク間でのデータ移動に伴うコストを最小限にする、バンク付与、レジスタ割り当ての方法の一例を図示するフローチャート200である。当業者には理解されると思われるが、ここで言及される記号レジスタ(TN)は例えば、コード生成機あるいはコンパイラが対象システム上に物理レジスタを必要とする都度要求されてもよい保管所であってもよい。
図2を参照すると、ブロック201にて、各TNに対する候補バンクが特定される。本発明の実施の形態の一例においては、候補バンクはTNが駐在することのできるバンクのことであってもよい。TNが参照される様々なプログラム点におけるバンク選択には異なる制約が設けられることから、このTNに対する候補バンクの一組は空であることがある。このような場合には、このTNはバンク抵触を持つと言われている。ブロック202において、これら抵触が存在しているかを判断する。抵触がない場合、ブロック204にて各TNがレジスタに割り当てられる。もし抵触がある場合、ブロック203にて、各TNに対するバンク抵触を解決することができる。バンク抵触が解決された後、各TNは自身の、空ではない候補バンクを持つことができる。本発明の実施の形態の一例においては、その後TNはTNセットに分類されるが、ここで特定の組のTNsは同じ候補バンクを持つことができる。ブロック204において、各TNセットに対する伝統的なイントラセットレジスタ割り当ては例えばカラーリング・スピリングタスクを使用して行うことができる。
図2のこれら四つのブロックを以下に詳説する。ME内の次近傍バンクは専用利用法のために、他のバンクとの微妙な相互作用なしに別個に取り扱われる(そこに書き込むと実際には次のMEに行く)ので、以下には詳説しない。
上述のように、TNの候補バンクはTNをオペランドとして使用する命令により決定することができる。本発明の実施の形態の一例においては、GPR Aバンクのための0X01や、GPR Bバンクのための0X02などのように、TNの候補バンクを表すのにビットベクタを使用することがある。RA前の全ての命令について、その供給元・供給先オペランドの候補バンクは(TNsの特定のインスタンス)、単に命令のオペコードや種類によって設定することができる。ここで言及されるように生存区間はTNの定義と使用法の接続ウェブであってもよい。各生存区間は一意の名称(あるいは番号)をつけられて、TNと直接対応づけられることができる。生存区間の候補バンクを算出するためには、この生存区間のTNの全ての発生における候補バンクの交差点を求める方法もある。求められた交差点の組はこの生存区間中のTNが付与可能な全てのバンクを表すことができる。
本発明の実施の形態の一例においては、TNsは入力/出力(I/O)読み出しあるいはALU命令で定義され得、TNsはI/O書き込みあるいはALU命令により使用され得る。図3は表300を図示しており、ここでは図1のシステムの一例に基づき定義使用表において可能性のあるTNsの使用可能法のすべてを図示している。例えば、図3が示すように、本表の右下のセルは、TNがALU操作で使用されると、該TNはGPR A/B、SRAM/DRAM転入いずれのバンクに駐在していてもよい、ということを示す。定義使用表の行列を横切ると、TNにおける空でない候補バンクの全ての可能性のある組み合わせは以下の通りとなろう。TNはSRAM転入にあるべきである、TNはSRAM転入あるいはDRAM転入にあればよい、TNはSRAM転出にあるべきである、TNはDRAM転出にあるべきである、あるいはTNはGPR AあるいはGPR Bにあればよい。
定義使用表の行列を横切ると、TNの候補バンクが空であるかもしれない場合が特定できる。例えば、セル(I/O、定義)がセル(I/O、使用)を横切ると、空の結果を生んでもよい。ここで言及されているように、空の結果は、利用可能な候補バンクがないことを示す。一般的に、空の結果を生む可能性のある抵触の種類は三つである。ここにおいては、「定義抵触」はTNがI/O読み出しとALU操作の両方により定義されている場合に存在し得、「使用抵触」はTNがI/O書き込みとALU操作の両方により使用されている場合に存在し得、「定義使用抵触」はTNがI/O読み出しにより定義され、I/O書き込みにより使用されている場合に存在し得る。
本発明の実施の形態の一例においては、バンク抵触を解決する方法としては、抵触するTN(生存区間)を抵触しない最小単位に分割し、その後動きを加えるなどして、値をこれら抵触しない最小単位間で移動させるというものがある。図4はフローチャート400を図示しており、ここでは、バンク抵触を解決するための方法の一例が図示されている。ブロック401において、定義使用グラフ(DUG)が構築されてもよい。図5はDUG500の一例を図示している。図5から分かるように、各ノード501はTNを参照する命令を表していてもよい。端部502a−502d(d→u)は、命令dにおけるTNの定義は命令uにより使用されることを示していてもよい。当業者には理解されるであろう通り、DUG500内にはTN1=TN1+1などのサイクルがあってもよい。
ブロック402においては、DUG内の全ての抵触する転送端部の位置を特定することができる。上述の三つの抵触の種類に基づき、DUGには抵触転送端部があってもよい。本発明の実施の形態の一例においては、一つの抵触転送端部は、二つの端部が以下の条件を一以上満たすようなDUG内の端部であってもよい。1)転送端部の最後尾がI/O定義であり、同じ転送端部の先頭部がI/O使用である、2)転送端部の最後尾がI/O定義であり、同じ転送端部の先頭部に先行するものの一つがALU定義である、あるいは3)転送端部の先頭部がI/O使用であり、同じ転送端部の最後尾に後続するものの一つがALU使用である。ブロック402で、DUGの全ての端部をスキャンすることで、全ての抵触転送端部の位置を特定することができる。
図5の例は、TN1の候補バンクの組が空である定義使用グラフ500を示す。図5においては、命令「TN1←SRAM」はSRAMからTN1へ値をロードする。端部(b、f)は上記に列挙した第二条件を満たすので、抵触転送端部であり得、これはつまり、最後尾bがI/O定義であり、fに先行するcがALU定義であるということである。
ブロック403において、DUGを仕切ることができる。本発明の実施の形態の一例においては、DUGを仕切る方法として、全ての抵触転送端部を分割して、wのサブグラフR1、R2、・・・、Rwを求めるというものがある。
ひとたびサブグラフを求めると、ブロック404で各サブグラフのTNを命名しなおす。図5の抵触端部(b、f)を分割して生成され得るサブグラフ600、601を図6に図示する。図6に示すように、二つのサブグラフの各々におけるTN1はTNmとTNnとして命名しなおされていてもよい。
ブロック405においては、各サブグラフ間に移動を加えてもよい。本発明の実施の形態の一例においては、各サブグラフ間に移動を加える方法としては以下のものがある。分割した各端部(d、u)について、dのTNがTNmと命名しなおされ、uのTNがTNnと命名しなおされたとする。当業者には理解される通り、概念上は「TNn=TNm」という移動を定義使用端部に挿入する必要があるはずである。本発明の実施の形態の一例においては、TNの生存区間を命令dと命令uに分けるために、(一以上の)移動を制御フローグラフ(CFG)へ挿入してもよいことになっている。例えば、BB(i)を使用して命令iを含む基礎ブロック(BB)を表す。挿入される移動の動的コストを最小化するため、実行頻度により重みづけされたBB(d)からBB(u)への経路の最小カットセットが、移動を配置するための最適な場所を表してもよい。CFGの重要端部とは、先頭部が多数の先行する部分を持ち、最後尾が多数の後続する部分を持つような端部のことであってもよい。CFG内の全ての重要端部は、空の基礎ブロックをRA前の各端部上に配置することで分割することもできる。最小カットセットは、CFG内のサイクルを削除することで構築される有向非巡回グラフ(DAG)に基づき算出されてもよい。このDAGは、もしあればループの後端部を除く、BB(d)からBB(u)までの全てのBBsと端部とからなることができる。入口がBB(d)であり、出口がBB(u)であるような単一入口単一出口DAGにとっては、最小カットセットは該入口から該出口まで、最小カットセットのBBsの挿入移動から算出される。
図7aは上述の例のDAG700の一例を図示する。bからfの最小カットセットは{d}でもよい。TNn=TNmという移動は図7bに示すように基礎ブロックdに挿入することもできる。ひとたび全ての移動が挿入されたら、全てのTNs(つまり生存区間)の候補バンクが特定され、かつ空ではないことになってもよい。各TNは以下の例の組のうちの一つに付与される、その組とは、S_Xfer_In_Set={TNsはSRAM転入になければならない}、SD_Xfer_In_Set={TNsはSRAM転入あるいはDRAM転入にあればよい}、S_Xfer_Out_Set={TNsはSRAM転出になければならない}、D_Xfer_Out_Set={TNsはDRAM転出になければならない}、およびGPR_Set={TNsはGRA AあるいはGPR Bにあればよい}。
ブロック406において、イントラセットレジスタが割り当てられてもよい。本発明の実施の形態の一例においては、グラフカラーリングに基づくレジスタ割り当てを上述の各TNセットに別々に使用することができる。上で列挙した二つの供給元オペランド選択規則によれば、特定の処理を以下の場合に施すこともできる。
例えばRAをS_Xfer_In_SetとSD_Xfer_In_Setとに対して行う場合、SRAMあるいはDRAM転入がA、Bオペランドの両方として使用できない規則を遵守する必要はない。
このような規則を遵守するためには、本発明の実施の形態の一例によると、記号レジスタ抵触グラフ(SRCG)を各BBに対して構築する方法もあろう。当業者であれば理解できる通り、SRCGはDUGに似ていてもよい。しかし、SRCGにおいては、ノードは転入組内のTNsであることがある。両方が同じ命令内の供給元オペランドである場合、端部は二つのノードをつないでもよい。SRCG内の全ての端部はその後分割されてもよい。端部を分割するには、最高位のノード(近傍ノードが最大数)が選択されて、それを新たなTNへ移動させるべく移動命令が挿入される(これら新たなTNsの候補バンクがその後算出され、それらが対応するTNセットへ配置されてもよい)。ノード使用は抵触点でこの基礎ブロック内の新たなTNを用いて命名しなおされる。本発明の実施の形態の一例においては、これはノードと関連端部をSRCGから削除することと同義であってもよい。この過程を全ての端部が分割されるまで継続する。その後RAを適用する。
RAをGPR_Setに行う際、一つの命令の二つの供給元オペランドはGPR AバンクあるいはBバンクのいずれかに同時に駐在することができないという規則を満たす必要がある。
本発明の実施の形態の例示においては、GPR_Set内のレジスタをカラーリングする別の方法があることがある。例えば、本発明の一つの実施の形態においては、GPR_Set内のTNであるノードを持つSRCGを構築してもよい。当業者であれば分かるように、そのような実施の形態においては、RAプログラムは、ノードを二部分に(例えばA、Bに)仕切ることで、SRCG2−カラーリング可能にするのと同様のことを意味する。各部分はその後それぞれGPR AバンクとGPR Bバンクからのレジスタを使用してカラーリングされる。グラフが2−カラーリング可能であるための必要十分条件は、該グラフがなんら奇数の長さのサイクルを持たないということである。従って、SRCG内の全ての奇数の長さのサイクルは、もし存在すれば分割されてもよい。この分割は上述のように移動を加えて奇数長のサイクルの端部を分割することで行うことができる。
図8は、本発明の実施の形態の一例におけるシステムのいくつかの部材に使用できるコンピュータおよび/または通信システムの実施の形態の一例を図示する。図8は、本発明の実施の形態の一例におけるシステムのいくつかの部材に使用できるコンピュータ800の実施の形態の一例を図示する。コンピュータ800は、例えば、一例としてパソコン(PC)、ワークステーション、携帯機器、電話、ハンドヘルドPC,携帯情報機器(PDA)、シン・クライアント、ファット・クライアント、ネットワーク機器、インターネットブラウザ、ページング、警報機器、テレビ、双方向テレビ、受信機、チューナ、高精細(HD)テレビ、HD受信機、ビデオオンデマンド(VOD)システム、サーバ、あるいはその他の機器を含む、いかなるコンピュータ装置、あるいは通信装置を含んでもよいが、もちろんこれらに限らない。
実施の形態の一例においては、コンピュータ800は、バス802に連結可能な中央演算処理装置(CPU)あるいはプロセッサ804を有す。プロセッサ804は、例えば主メモリ806にバス802経由でアクセスすることができる。コンピュータ800は、ネットワーク826にアクセスするために、ネットワークインターフェースカード(NIC)822やモデム824などの入力/出力(I/O)サブシステムと連結されていてもよい。コンピュータ800はさらに例えば、二次メモリ808に直接バス802経由であるいは主メモリ806経由で連結されていてもよい。二次メモリ808は、例えばディスク記憶部810やその他の記憶媒体を含んでいてもよい。ディスク記憶部810の例は、もちろんそれには限られないがハードディスクなどの磁気記憶装置、書き込み一度読み出し多数(WORM)ドライブやコンパクトディスクなどの光記憶装置、あるいは磁気光装置などを含むことができる。他の二次メモリ808の種類は、CD−ROMやフロッピーディスケットなどのような取り外し可能な記憶媒体814と共に使用できる取り外し可能なディスク記憶装置812を含むことができる。一般的には、ディスク記憶部810は共通的にオペレーティングシステムとして言及されるコンピュータシステムを操作するためのアプリケーションプログラムを記憶することもできる。ディスク記憶部810はさらにデータベース(不図示)のドキュメントを記憶することもできる。コンピュータ800はI/Oサブシステムとディスク記憶部810とバス802を通じて相互作用することができる。バス802はさらにディスプレイ820と出力のために連結されていてもよく、さらにキーボード818とマウス、その他の指示/選択装置816などだがそれに限られない入力装置と連結されていてもよい。
本明細書で図示、説明された実施の形態は、発明者が知っている本発明を作成、使用する様々な方法を当業者に対して教示することだけを意図している。本明細書中のいかなるものも本発明の範囲を限定するものとして考えられるべきものではない。提示された例は全て代表例であって非限定的である。当業者であれば、本発明を逸脱することなく本発明の上述の実施の形態を変形したり、変更を加えたりすることができることは理解されるところである。従って本発明は特に記載された以外のやり方でも実施することができる。

Claims (18)

  1. オペランドをレジスタバンクに割り当てる方法であって、
    前記オペランドの全ての候補バンクを特定する工程と、
    前記候補バンク間に抵触があるか否かを判断する工程と、
    もしあれば抵触を解決する工程と、
    前記オペランドを前記レジスタバンクへ割り当てる工程とを含む方法。
  2. 前記特定する工程は、
    前記オペランドの全ての発生を特定することと、
    各クラスが少なくとも一つの関連レジスタバンクを持つ、複数のクラスのうちの一つに各発生を分類することと、
    レジスタバンクの関連組の交差点のクラスを比較することと、
    レジスタバンクの関連組の交差点に基づき交差点の組を生成することとを含む、請求項1に記載の方法。
  3. 前記判断する工程は、
    前記交差点組が空の組であるか判断することと、
    前記交差点組が空であった場合、前記解決する工程に進むことと、
    前記交差点組が空の組ではなかった場合、前記割り当てる工程に進むこととを含む、請求項2に記載の方法。
  4. 前記解決する工程は、
    前記交差点組を最小の抵触しない部分に分割することと、
    値を前記抵触しない部分を横切って通すために移動を加えることとを含む、請求項2に記載の方法。
  5. 前記分割することは、
    前記オペランドの全ての発生の定義使用のグラフを構築することと、
    所定の条件の組に基づき前記定義使用のグラフ内の全ての抵触する転送端部を特定することと、
    前記定義使用のグラフを仕切ることとを含む、請求項4に記載の方法。
  6. 前記定義使用のグラフは、
    前記オペランドの各発生を参照する複数のノードと、
    各発生の定義dが命令uに使用されることを表すための定義使用(d→u)端部とを有し、
    前記抵触転送端部は定義使用グラフのなかで末端が合致している端部であり、
    前記所定の条件の組は以下の場合に抵触を構築する、該以下の場合とは、
    抵触転送端部の最後尾が入力/出力定義であり、同じ抵触端部の先頭部が入力/出力使用である、
    抵触転送端部の最後尾が入力/出力定義であり、同じ抵触転送端部の先頭部に先行する部分が演算論理部使用である、あるいは
    抵触転送端部の先頭部が入力/出力使用であり、同じ抵触転送端部の最後尾に後続する部分が演算論理部定義である、請求項5に記載の方法。
  7. 前記加えることは、
    最小カット組アルゴリズムを使用して移動を加えることを含む、請求項4に記載の方法。
  8. 前記割り当てる工程は、
    あるオペランドの一回の発生が一つの命令のオペランドの両方として現れるか否かを判断することと、
    一つの演算論理部命令の二つのオペランドが一つの汎用レジスタバンクに現れる否かを判断することと、
    あるオペランドの一回の発生が一つの命令のオペランドの両方として現れる場合、記号レジスタ抵触グラフを利用して抵触を解決することと、
    一つの演算論理部命令の二つのオペランドが一つの汎用レジスタバンクに現れる場合、グラフカラーリングを利用して抵触を解決することと、を含む請求項1に記載の方法。
  9. 前記割り当てる工程は
    なんら抵触が存在しない場合グラフカラーリングを使用することを含む、請求項1に記載の方法。
  10. システムであって、
    オペランドを記憶するための複数のレジスタバンクと、
    コンパイラであって、
    前記オペランドの全ての候補バンクを特定する工程と、
    前記候補バンク間に抵触があるか否かを判断する工程と、
    もしあれば抵触を解決する工程と、
    前記オペランドを前記複数のレジスタバンクのうちの一つへ割り当てる工程とを含む方法を実行するためのコンパイラとを含む、システム。
  11. 前記レジスタバンクは仕切られたレジスタバンクを含む、請求項10に記載のシステム。
  12. 仕切られたレジスタバンクは第一、第二レジスタバンク、メモリ転送レジスタバンク、あるいは次近傍レジスタバンクのうちの少なくとも一つを含む、請求項11に記載のシステム。
  13. プログラム命令を含む機械アクセス可能な媒体であって、前記プログラム命令はプロセッサに実行されると、該プロセッサに一連の操作を行わせ、前記一連の操作は、
    オペランドの全ての候補レジスタバンクを特定することと、
    もしあれば前記候補レジスタバンク間の抵触を解決することと、
    前記オペランドをレジスタバンクへ割り当てることとを含む、機械アクセス可能な媒体。
  14. プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
    前記オペランドの全ての発生を特定することと、
    各クラスが少なくとも一つの関連レジスタバンクを持つ、複数のクラスのうちの一つに各発生を分類することと、
    レジスタバンクの関連組の交差点のクラスを比較することと、
    レジスタバンクの関連組の交差点に基づき交差点の組を生成することとを含む、請求項13に記載の機械アクセス可能な媒体。
  15. プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
    前記交差点組が空の組であるか判断することと、
    前記交差点組が空であった場合、解決することと、
    前記交差点組が空ではなかった場合、割り当てることとを含む、請求項14に記載の機械アクセス可能な媒体。
  16. プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
    前記交差点組を最小の抵触しない部分に分割することと、
    値を前記抵触しない部分を横切って通すために移動を加えることとを含む、請求項14に記載の機械アクセス可能な媒体。
  17. プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
    前記オペランドの全ての発生の定義使用のグラフを構築することと、
    所定の条件の組に基づき前記定義使用のグラフ内の全ての抵触する転送端部を特定することと、
    前記定義使用のグラフを仕切ることとを含む、請求項16に記載の機械アクセス可能な媒体。
  18. プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
    最小カット組アルゴリズムを使用して移動を加えることを含む、請求項16に記載の機械アクセス可能な媒体。
JP2007515703A 2004-06-30 2005-06-24 仕切りのあるレジスタバンクのためのバンク付与 Expired - Fee Related JP4729565B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/880,117 US7469404B2 (en) 2004-06-30 2004-06-30 Bank assignment for partitioned register banks
US10/880,117 2004-06-30
PCT/US2005/022511 WO2006012305A2 (en) 2004-06-30 2005-06-24 Bank assignment for partitioned register banks

Publications (2)

Publication Number Publication Date
JP2008500654A true JP2008500654A (ja) 2008-01-10
JP4729565B2 JP4729565B2 (ja) 2011-07-20

Family

ID=35457894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007515703A Expired - Fee Related JP4729565B2 (ja) 2004-06-30 2005-06-24 仕切りのあるレジスタバンクのためのバンク付与

Country Status (5)

Country Link
US (1) US7469404B2 (ja)
EP (1) EP1763746A2 (ja)
JP (1) JP4729565B2 (ja)
CN (1) CN1973263B (ja)
WO (1) WO2006012305A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7650598B2 (en) * 2006-08-09 2010-01-19 National Tsing Hua University Method for allocating registers for a processor
US8533435B2 (en) * 2009-09-24 2013-09-10 Nvidia Corporation Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict
US8555035B1 (en) 2010-07-07 2013-10-08 Nvidia Corporation Conflict-free register allocation using a multi-bank register file with input operand alignment
US8832671B1 (en) * 2010-07-07 2014-09-09 Nvidia Corporation Conflict-free register allocation
US9015687B2 (en) * 2011-03-30 2015-04-21 Intel Corporation Register liveness analysis for SIMD architectures
CN102360280B (zh) * 2011-10-28 2014-04-23 浙江大学 一种针对混合长度指令集的寄存器分配方法
US9632783B2 (en) * 2014-10-03 2017-04-25 Qualcomm Incorporated Operand conflict resolution for reduced port general purpose register
GB2578932B (en) * 2019-02-14 2021-02-24 Imagination Tech Ltd Allocation of memory
US10839478B2 (en) * 2019-04-08 2020-11-17 Intel Corporation Accumulator pooling mechanism

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62144247A (ja) * 1985-12-17 1987-06-27 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション コンパイル方法
JPH04213118A (ja) * 1990-12-07 1992-08-04 Fuji Xerox Co Ltd プログラム翻訳装置およびプログラム翻訳方法
JPH05265769A (ja) * 1992-03-18 1993-10-15 Fujitsu Ltd コンパイラにおける命令スケジューリング処理方法
JP2002091777A (ja) * 2000-09-12 2002-03-29 Internatl Business Mach Corp <Ibm> コンパイラ及びそのレジスタ割付方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571678A (en) * 1982-11-05 1986-02-18 International Business Machines Corporation Register allocation and spilling via graph coloring
JP3417984B2 (ja) * 1993-09-10 2003-06-16 株式会社日立製作所 キャッシュ競合削減コンパイル方法
US5659754A (en) * 1995-03-31 1997-08-19 Sun Microsystems, Inc. Method and apparatus for an improved optimizing compiler
US5901317A (en) * 1996-03-25 1999-05-04 Sun Microsystems, Inc. Method and system for register allocation using multiple interference graphs
US6633576B1 (en) * 1999-11-04 2003-10-14 William Melaragni Apparatus and method for interleaved packet storage
US7140010B2 (en) * 2001-03-30 2006-11-21 Sun Microsystems, Inc. Method and apparatus for simultaneous optimization of code targeting multiple machines
US7346067B2 (en) * 2001-11-16 2008-03-18 Force 10 Networks, Inc. High efficiency data buffering in a computer network device
US7007271B2 (en) * 2002-04-18 2006-02-28 Sun Microsystems, Inc. Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer
US7185329B1 (en) * 2003-03-28 2007-02-27 Applied Micro Circuits Corporation Use of different color sequences for variables of different sizes and different semantics
US6952760B2 (en) * 2003-05-21 2005-10-04 Sun Microsystems, Inc. Methods and systems for memory allocation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62144247A (ja) * 1985-12-17 1987-06-27 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション コンパイル方法
JPH04213118A (ja) * 1990-12-07 1992-08-04 Fuji Xerox Co Ltd プログラム翻訳装置およびプログラム翻訳方法
JPH05265769A (ja) * 1992-03-18 1993-10-15 Fujitsu Ltd コンパイラにおける命令スケジューリング処理方法
JP2002091777A (ja) * 2000-09-12 2002-03-29 Internatl Business Mach Corp <Ibm> コンパイラ及びそのレジスタ割付方法

Also Published As

Publication number Publication date
CN1973263B (zh) 2010-11-03
US20060002224A1 (en) 2006-01-05
WO2006012305A2 (en) 2006-02-02
US7469404B2 (en) 2008-12-23
WO2006012305A3 (en) 2006-07-13
JP4729565B2 (ja) 2011-07-20
EP1763746A2 (en) 2007-03-21
CN1973263A (zh) 2007-05-30

Similar Documents

Publication Publication Date Title
JP4729565B2 (ja) 仕切りのあるレジスタバンクのためのバンク付与
Hack et al. Register allocation for programs in SSA-form
US6651247B1 (en) Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form
US8266603B2 (en) Technique for allocating register to variable for compiling
US7086038B2 (en) System and method for creating systolic solvers
US5293631A (en) Analysis and optimization of array variables in compiler for instruction level parallel processor
US5339420A (en) Partitioning case statements for optimal execution performance
US5613121A (en) Method and system of generating combined storage references
JP6236093B2 (ja) 並列パイプラインにおいてブランチを分岐するためのハードウェアおよびソフトウェアソリューション
JP2011118909A (ja) メモリアクセス命令のベクトル化
Kessler Scheduling expression DAGs for minimal register need
US8954945B2 (en) Profile-based global live-range splitting
Zhuang et al. Resolving register bank conflicts for a network processor
US11262989B2 (en) Automatic generation of efficient vector code with low overhead in a time-efficient manner independent of vector width
JP3683281B2 (ja) メモリアクセスの高速化処理装置および方法
US6637026B1 (en) Instruction reducing predicate copy
Wess Minimization of data address computation overhead in DSP programs
Schlegel Frequent itemset mining on multiprocessor systems
JP2001297068A (ja) 並列プログラム生成方法およびその記録媒体
Jahnsson et al. Duplicate detection for bayesian network structure learning
Liu et al. A Complement Graph Based Heuristic Algorithm for Embedded Register Allocation
Han et al. DGSM: A GPU-Based Subgraph Isomorphism framework with DFS exploration
NARVIK A Parallel Algorithm for Coloring the Vertices of a Graph
Fazli et al. TPGen: A Self-stabilizing GPU-Based Method for Test and Prime Paths Generation
Vaz Towards feature-aware graph processing on the GPU

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100430

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100512

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100601

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100608

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100701

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100708

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100730

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110418

R150 Certificate of patent or registration of utility model

Ref document number: 4729565

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees