JP2008500654A - 仕切りのあるレジスタバンクのためのバンク付与 - Google Patents
仕切りのあるレジスタバンクのためのバンク付与 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register 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
Claims (18)
- オペランドをレジスタバンクに割り当てる方法であって、
前記オペランドの全ての候補バンクを特定する工程と、
前記候補バンク間に抵触があるか否かを判断する工程と、
もしあれば抵触を解決する工程と、
前記オペランドを前記レジスタバンクへ割り当てる工程とを含む方法。 - 前記特定する工程は、
前記オペランドの全ての発生を特定することと、
各クラスが少なくとも一つの関連レジスタバンクを持つ、複数のクラスのうちの一つに各発生を分類することと、
レジスタバンクの関連組の交差点のクラスを比較することと、
レジスタバンクの関連組の交差点に基づき交差点の組を生成することとを含む、請求項1に記載の方法。 - 前記判断する工程は、
前記交差点組が空の組であるか判断することと、
前記交差点組が空であった場合、前記解決する工程に進むことと、
前記交差点組が空の組ではなかった場合、前記割り当てる工程に進むこととを含む、請求項2に記載の方法。 - 前記解決する工程は、
前記交差点組を最小の抵触しない部分に分割することと、
値を前記抵触しない部分を横切って通すために移動を加えることとを含む、請求項2に記載の方法。 - 前記分割することは、
前記オペランドの全ての発生の定義使用のグラフを構築することと、
所定の条件の組に基づき前記定義使用のグラフ内の全ての抵触する転送端部を特定することと、
前記定義使用のグラフを仕切ることとを含む、請求項4に記載の方法。 - 前記定義使用のグラフは、
前記オペランドの各発生を参照する複数のノードと、
各発生の定義dが命令uに使用されることを表すための定義使用(d→u)端部とを有し、
前記抵触転送端部は定義使用グラフのなかで末端が合致している端部であり、
前記所定の条件の組は以下の場合に抵触を構築する、該以下の場合とは、
抵触転送端部の最後尾が入力/出力定義であり、同じ抵触端部の先頭部が入力/出力使用である、
抵触転送端部の最後尾が入力/出力定義であり、同じ抵触転送端部の先頭部に先行する部分が演算論理部使用である、あるいは
抵触転送端部の先頭部が入力/出力使用であり、同じ抵触転送端部の最後尾に後続する部分が演算論理部定義である、請求項5に記載の方法。 - 前記加えることは、
最小カット組アルゴリズムを使用して移動を加えることを含む、請求項4に記載の方法。 - 前記割り当てる工程は、
あるオペランドの一回の発生が一つの命令のオペランドの両方として現れるか否かを判断することと、
一つの演算論理部命令の二つのオペランドが一つの汎用レジスタバンクに現れる否かを判断することと、
あるオペランドの一回の発生が一つの命令のオペランドの両方として現れる場合、記号レジスタ抵触グラフを利用して抵触を解決することと、
一つの演算論理部命令の二つのオペランドが一つの汎用レジスタバンクに現れる場合、グラフカラーリングを利用して抵触を解決することと、を含む請求項1に記載の方法。 - 前記割り当てる工程は
なんら抵触が存在しない場合グラフカラーリングを使用することを含む、請求項1に記載の方法。 - システムであって、
オペランドを記憶するための複数のレジスタバンクと、
コンパイラであって、
前記オペランドの全ての候補バンクを特定する工程と、
前記候補バンク間に抵触があるか否かを判断する工程と、
もしあれば抵触を解決する工程と、
前記オペランドを前記複数のレジスタバンクのうちの一つへ割り当てる工程とを含む方法を実行するためのコンパイラとを含む、システム。 - 前記レジスタバンクは仕切られたレジスタバンクを含む、請求項10に記載のシステム。
- 仕切られたレジスタバンクは第一、第二レジスタバンク、メモリ転送レジスタバンク、あるいは次近傍レジスタバンクのうちの少なくとも一つを含む、請求項11に記載のシステム。
- プログラム命令を含む機械アクセス可能な媒体であって、前記プログラム命令はプロセッサに実行されると、該プロセッサに一連の操作を行わせ、前記一連の操作は、
オペランドの全ての候補レジスタバンクを特定することと、
もしあれば前記候補レジスタバンク間の抵触を解決することと、
前記オペランドをレジスタバンクへ割り当てることとを含む、機械アクセス可能な媒体。 - プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
前記オペランドの全ての発生を特定することと、
各クラスが少なくとも一つの関連レジスタバンクを持つ、複数のクラスのうちの一つに各発生を分類することと、
レジスタバンクの関連組の交差点のクラスを比較することと、
レジスタバンクの関連組の交差点に基づき交差点の組を生成することとを含む、請求項13に記載の機械アクセス可能な媒体。 - プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
前記交差点組が空の組であるか判断することと、
前記交差点組が空であった場合、解決することと、
前記交差点組が空ではなかった場合、割り当てることとを含む、請求項14に記載の機械アクセス可能な媒体。 - プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
前記交差点組を最小の抵触しない部分に分割することと、
値を前記抵触しない部分を横切って通すために移動を加えることとを含む、請求項14に記載の機械アクセス可能な媒体。 - プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
前記オペランドの全ての発生の定義使用のグラフを構築することと、
所定の条件の組に基づき前記定義使用のグラフ内の全ての抵触する転送端部を特定することと、
前記定義使用のグラフを仕切ることとを含む、請求項16に記載の機械アクセス可能な媒体。 - プロセッサに実行されると、該プロセッサにさらなる操作を行わせるプログラム命令をさらに含み、前記さらなる操作とは、
最小カット組アルゴリズムを使用して移動を加えることを含む、請求項16に記載の機械アクセス可能な媒体。
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)
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)
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)
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 |
-
2004
- 2004-06-30 US US10/880,117 patent/US7469404B2/en active Active
-
2005
- 2005-06-24 WO PCT/US2005/022511 patent/WO2006012305A2/en not_active Application Discontinuation
- 2005-06-24 EP EP05767311A patent/EP1763746A2/en not_active Ceased
- 2005-06-24 JP JP2007515703A patent/JP4729565B2/ja not_active Expired - Fee Related
- 2005-06-24 CN CN2005800209961A patent/CN1973263B/zh not_active Expired - Fee Related
Patent Citations (4)
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 |