JP2002527816A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2002527816A5 JP2002527816A5 JP2000576362A JP2000576362A JP2002527816A5 JP 2002527816 A5 JP2002527816 A5 JP 2002527816A5 JP 2000576362 A JP2000576362 A JP 2000576362A JP 2000576362 A JP2000576362 A JP 2000576362A JP 2002527816 A5 JP2002527816 A5 JP 2002527816A5
- Authority
- JP
- Japan
- Prior art keywords
- vector
- sese
- program
- instruction
- global
- 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.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 description 1
- 230000001174 ascending Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 230000002194 synthesizing Effects 0.000 description 1
Description
【特許請求の範囲】
【請求項1】 リソースにアクセスする命令を有するプログラムを最適化する方法であって、
前記命令による前記リソースの使用状態を示す、前記命令のローカル・ベクトルを判定するステップであって、前記ローカル・ベクトルは、第1部分ベクトルおよび第2部分ベクトルとして与えられる、前記命令のローカル・ベクトルを判定するステップと、
チャイルド・ペアレント・プログラム階層におけるSESE (S ingle-Entry-Single-Exit)構造に関する前記プログラムをスキャンするステップと、
反復的に、前記階層を昇り、前記ローカル・ベクトルからSESEベクトルを判定するステップとを備え、前記SESEベクトルは前記SESE構造による前記リソースの使用状態を示し、前記SESEベクトルは、
(a)前記第1部分ベクトルを加算し、前記第2部分ベクトルを減算し、第1グローバル・サクセッサ・ベクトルを加算することによって、第1グローバル・ベクトルとして、および
(b)前記第2部分ベクトルを加算し、前記第1部分ベクトルを減算し、第2グローバル・サクセッサ・ベクトルを加算することにより、第2グローバル・ベクトルとして、
反復的に与えられる、リソースにアクセスする命令を有するプログラムを最適化する方法。
【請求項2】 請求項1記載の方法であって、
冗長リソースとして前記SESEベクトルによって特定されるリソースを削除することにより、前記プログラムを修正するステップと、
修正されたSESE構造についてのみ、新規SESEベクトルを判定するステップとをさらに備える請求項1記載の方法。
【請求項3】 複数のサクセッサとして生じるサクセッサについて、SESEベクトルを判定する前記ステップは、
(a)命令の前記第1グローバル・ベクトルは、前記複数のサクセッサの第1グローバル・ベクトルの合成(combination)によって与えられ、および
(b)命令の前記第2グローバル・ベクトルは、前記複数のサクセッサの第2グローバル・ベクトルの交差(intersection)によって与えられる、請求項1記載の方法。
【請求項4】 SESEベクトルを判定する前記ステップにおいて、SESE境界におけるローカル・ベクトルは、最初に基準ベクトルと比較される請求項1記載の方法。
【請求項5】 前記基準ベクトルはゼロ・ベクトルである請求項4記載の方法。
【請求項6】 第1SESEにおいて変数を評価するステップであって、
(a)前記変数を考慮する、前記第1SESEにおいてSESEベクトルを与えるサブステップと、
(b)前記第1SESEに続く、SESEのSESEベクトルを与えるサブステップと、(c)サブステップ(b)にて得られた最後のSESEベクトルにおいて変数がセットされているかどうかを調べるサブステップと、
を有する、第1SESEにおいて変数を評価するステップをさらに備える請求項1記載の方法。
【請求項7】 プログラムを解析する方法であって、
(a)前記プログラムの基本ブロック内のライブ情報をシングル・フォーワード・トラバースを用いて計算するステップと、
(b)反復的なバックワード・トラバースを用いて、前記基本ブロックのライブ情報から、SESE (Single-Entry-Single-Exit)構造内のライブ情報を評価するステップと、
(c)前記SESE構造のライブ情報から、前記プログラムのライブ情報を取得するステップとを備える、プログラムを解析するための方法。
【請求項8】 使用済みリソース用の第1ベクトルと、使用されなくなったリソース用の第2ベクトルとにおいて、ライブ情報が与えられることを特徴とする請求項7記載の方法。
【請求項9】 プログラムにおけるリソース・ベクトルを評価する方法であって、
(a)基準ベクトルから開始する反復によりSESE内で前記プログラムのSESEを解析し、SESEベクトルを与えるステップと、
(b)ステップ(a)のSESEベクトルを利用して、前記プログラムを解析して、前記リソース・ベクトルを与えるステップと
によって、プログラムにおけるリソース・ベクトルを評価する方法。
【請求項10】 前記ステップ(a)において、反復は、SESEベクトルがそれ以上変化しないときに停止されることを特徴とする請求項9記載の方法。
【請求項11】 前記基準ベクトルは、ゼロ・ベクトルである請求項9記載の方法。
【請求項12】 プログラムのリソースをベクトル解析する方法であって、
プログラム・フローは、
(a)分岐命令において分割し、
(b)マージ命令においてマージし、および
(c)リニア命令において変化しないものであり、
前記方法は、
それぞれが一つのフロー・エントリおよび一つのフロー・エグジットを有する命令のグループを確立するステップと、
各グループにおいて、
(a)一時点において分岐命令の命令ベクトルを、サクセッサ命令の2つまたはそれ以上のベクトルに関連付け、
(b)別の時点においてマージ命令の命令ベクトルをそのプレデセサ命令のベクトルに関連付け、および
(c)リニア命令のベクトルをそのサクセッサ命令のベクトルに関連付けることを選択的に行うことによって、前記グループのベクトルを与えるステップであって、サクセッサ命令およびプレデセサ命令の任意の前記ベクトルは、前記サクセッサ命令またはプレデセサ命令が前記グループに属さない場合に、基準ベクトルに設定される、前記グループのベクトルを与えるステップと、
前記グループ・ベクトルをプログラム・ベクトルに合成するステップとを備える、プログラムのリソースのベクトル解析方法。
【請求項13】 グループ修正をさらに含んで構成される請求項12記載の方法であって、ベクトルを与える前記ステップは、修正されたグループについてのみ反復される、請求項12記載の方法。
【請求項14】 プログラム・オプティマイザであって、
最適化されるプログラムを格納し、かつ最適化ソフトウェアを格納するメモリと、
前記最適化ソフトウェアからコマンドを受けるプロセッサと、
該プロセッサは、
(a)前記プログラムの命令におけるベクトルを判定して、前記命令によるリソースの使用を示し、
(b)SESE(Single-Entry-Single-Exit)構造について前記プログラムをスキャンし、および
(c)前記ローカル・ベクトルから、前記SESE構造による前記リソースの使用を示すSESEベクトルを判定し、該SESEベクトルは、
(a)前記第1部分ベクトルを加算し、前記第2部分ベクトルを減算し、第1グローバル・サクセッサ・ベクトルを加算することによって、第1グローバル・ベクトルとして、および
(b)前記第2部分ベクトルを加算し、前記第1部分ベクトルを減算し、第2グローバル・サクセッサ・ベクトルを加算することにより、第2グローバル・ベクトルとして、
反復的に与えられる、リソースにアクセスする命令を有するプログラムを最適化することとを備える、プログラム・オプティマイザ。
【請求項1】 リソースにアクセスする命令を有するプログラムを最適化する方法であって、
前記命令による前記リソースの使用状態を示す、前記命令のローカル・ベクトルを判定するステップであって、前記ローカル・ベクトルは、第1部分ベクトルおよび第2部分ベクトルとして与えられる、前記命令のローカル・ベクトルを判定するステップと、
チャイルド・ペアレント・プログラム階層におけるSESE (S ingle-Entry-Single-Exit)構造に関する前記プログラムをスキャンするステップと、
反復的に、前記階層を昇り、前記ローカル・ベクトルからSESEベクトルを判定するステップとを備え、前記SESEベクトルは前記SESE構造による前記リソースの使用状態を示し、前記SESEベクトルは、
(a)前記第1部分ベクトルを加算し、前記第2部分ベクトルを減算し、第1グローバル・サクセッサ・ベクトルを加算することによって、第1グローバル・ベクトルとして、および
(b)前記第2部分ベクトルを加算し、前記第1部分ベクトルを減算し、第2グローバル・サクセッサ・ベクトルを加算することにより、第2グローバル・ベクトルとして、
反復的に与えられる、リソースにアクセスする命令を有するプログラムを最適化する方法。
【請求項2】 請求項1記載の方法であって、
冗長リソースとして前記SESEベクトルによって特定されるリソースを削除することにより、前記プログラムを修正するステップと、
修正されたSESE構造についてのみ、新規SESEベクトルを判定するステップとをさらに備える請求項1記載の方法。
【請求項3】 複数のサクセッサとして生じるサクセッサについて、SESEベクトルを判定する前記ステップは、
(a)命令の前記第1グローバル・ベクトルは、前記複数のサクセッサの第1グローバル・ベクトルの合成(combination)によって与えられ、および
(b)命令の前記第2グローバル・ベクトルは、前記複数のサクセッサの第2グローバル・ベクトルの交差(intersection)によって与えられる、請求項1記載の方法。
【請求項4】 SESEベクトルを判定する前記ステップにおいて、SESE境界におけるローカル・ベクトルは、最初に基準ベクトルと比較される請求項1記載の方法。
【請求項5】 前記基準ベクトルはゼロ・ベクトルである請求項4記載の方法。
【請求項6】 第1SESEにおいて変数を評価するステップであって、
(a)前記変数を考慮する、前記第1SESEにおいてSESEベクトルを与えるサブステップと、
(b)前記第1SESEに続く、SESEのSESEベクトルを与えるサブステップと、(c)サブステップ(b)にて得られた最後のSESEベクトルにおいて変数がセットされているかどうかを調べるサブステップと、
を有する、第1SESEにおいて変数を評価するステップをさらに備える請求項1記載の方法。
【請求項7】 プログラムを解析する方法であって、
(a)前記プログラムの基本ブロック内のライブ情報をシングル・フォーワード・トラバースを用いて計算するステップと、
(b)反復的なバックワード・トラバースを用いて、前記基本ブロックのライブ情報から、SESE (Single-Entry-Single-Exit)構造内のライブ情報を評価するステップと、
(c)前記SESE構造のライブ情報から、前記プログラムのライブ情報を取得するステップとを備える、プログラムを解析するための方法。
【請求項8】 使用済みリソース用の第1ベクトルと、使用されなくなったリソース用の第2ベクトルとにおいて、ライブ情報が与えられることを特徴とする請求項7記載の方法。
【請求項9】 プログラムにおけるリソース・ベクトルを評価する方法であって、
(a)基準ベクトルから開始する反復によりSESE内で前記プログラムのSESEを解析し、SESEベクトルを与えるステップと、
(b)ステップ(a)のSESEベクトルを利用して、前記プログラムを解析して、前記リソース・ベクトルを与えるステップと
によって、プログラムにおけるリソース・ベクトルを評価する方法。
【請求項10】 前記ステップ(a)において、反復は、SESEベクトルがそれ以上変化しないときに停止されることを特徴とする請求項9記載の方法。
【請求項11】 前記基準ベクトルは、ゼロ・ベクトルである請求項9記載の方法。
【請求項12】 プログラムのリソースをベクトル解析する方法であって、
プログラム・フローは、
(a)分岐命令において分割し、
(b)マージ命令においてマージし、および
(c)リニア命令において変化しないものであり、
前記方法は、
それぞれが一つのフロー・エントリおよび一つのフロー・エグジットを有する命令のグループを確立するステップと、
各グループにおいて、
(a)一時点において分岐命令の命令ベクトルを、サクセッサ命令の2つまたはそれ以上のベクトルに関連付け、
(b)別の時点においてマージ命令の命令ベクトルをそのプレデセサ命令のベクトルに関連付け、および
(c)リニア命令のベクトルをそのサクセッサ命令のベクトルに関連付けることを選択的に行うことによって、前記グループのベクトルを与えるステップであって、サクセッサ命令およびプレデセサ命令の任意の前記ベクトルは、前記サクセッサ命令またはプレデセサ命令が前記グループに属さない場合に、基準ベクトルに設定される、前記グループのベクトルを与えるステップと、
前記グループ・ベクトルをプログラム・ベクトルに合成するステップとを備える、プログラムのリソースのベクトル解析方法。
【請求項13】 グループ修正をさらに含んで構成される請求項12記載の方法であって、ベクトルを与える前記ステップは、修正されたグループについてのみ反復される、請求項12記載の方法。
【請求項14】 プログラム・オプティマイザであって、
最適化されるプログラムを格納し、かつ最適化ソフトウェアを格納するメモリと、
前記最適化ソフトウェアからコマンドを受けるプロセッサと、
該プロセッサは、
(a)前記プログラムの命令におけるベクトルを判定して、前記命令によるリソースの使用を示し、
(b)SESE(Single-Entry-Single-Exit)構造について前記プログラムをスキャンし、および
(c)前記ローカル・ベクトルから、前記SESE構造による前記リソースの使用を示すSESEベクトルを判定し、該SESEベクトルは、
(a)前記第1部分ベクトルを加算し、前記第2部分ベクトルを減算し、第1グローバル・サクセッサ・ベクトルを加算することによって、第1グローバル・ベクトルとして、および
(b)前記第2部分ベクトルを加算し、前記第1部分ベクトルを減算し、第2グローバル・サクセッサ・ベクトルを加算することにより、第2グローバル・ベクトルとして、
反復的に与えられる、リソースにアクセスする命令を有するプログラムを最適化することとを備える、プログラム・オプティマイザ。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU1998/000326 WO2000022523A1 (en) | 1998-10-13 | 1998-10-13 | Apparatus and method for program optimizing |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002527816A JP2002527816A (ja) | 2002-08-27 |
JP2002527816A5 true JP2002527816A5 (ja) | 2006-01-05 |
Family
ID=20130274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000576362A Pending JP2002527816A (ja) | 1998-10-13 | 1998-10-13 | プログラム最適化装置および方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6571386B1 (ja) |
EP (1) | EP1121641A1 (ja) |
JP (1) | JP2002527816A (ja) |
WO (1) | WO2000022523A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754892B1 (en) * | 1999-12-15 | 2004-06-22 | Transmeta Corporation | Instruction packing for an advanced microprocessor |
US7562350B2 (en) * | 2000-12-15 | 2009-07-14 | Ricoh Company, Ltd. | Processing system and method using recomposable software |
US7698539B1 (en) * | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US7606997B1 (en) | 2003-07-18 | 2009-10-20 | Guillermo Rozas | Method and system for using one or more address bits and an instruction to increase an instruction set |
US8762949B2 (en) * | 2005-05-31 | 2014-06-24 | Alcatel Lucent | Method and apparatus for incremental analysis of one or more properties of a program |
US7571301B2 (en) * | 2006-03-31 | 2009-08-04 | Intel Corporation | Fast lock-free post-wait synchronization for exploiting parallelism on multi-core processors |
EP2071457A1 (en) * | 2007-12-13 | 2009-06-17 | Alcatel Lucent | Device and method for automatically optimizing composite applications having orchestrated activities |
US8176299B2 (en) * | 2008-09-24 | 2012-05-08 | Apple Inc. | Generating stop indicators based on conditional data dependency in vector processors |
US8181001B2 (en) * | 2008-09-24 | 2012-05-15 | Apple Inc. | Conditional data-dependency resolution in vector processors |
US9715386B2 (en) | 2014-09-29 | 2017-07-25 | Apple Inc. | Conditional stop instruction with accurate dependency detection |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5107418A (en) * | 1990-06-11 | 1992-04-21 | Supercomputer Systems Limited Partnership | Method for representing scalar data dependences for an optimizing compiler |
US5854934A (en) * | 1996-08-23 | 1998-12-29 | Hewlett-Packard Company | Optimizing compiler having data cache prefetch spreading |
US5966537A (en) * | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing an executable computer program using input data |
US6175957B1 (en) * | 1997-12-09 | 2001-01-16 | International Business Machines Corporation | Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring |
-
1998
- 1998-10-13 EP EP98965900A patent/EP1121641A1/en not_active Withdrawn
- 1998-10-13 US US09/508,558 patent/US6571386B1/en not_active Expired - Fee Related
- 1998-10-13 WO PCT/RU1998/000326 patent/WO2000022523A1/en active Application Filing
- 1998-10-13 JP JP2000576362A patent/JP2002527816A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8234625B2 (en) | Optimized look-up table calculations in block diagram software | |
US5146594A (en) | Method of producing object program based on interprocedural dataflow analysis of a source program | |
US7496894B2 (en) | Methods for enhancing pointer analyses | |
US7315844B2 (en) | System, method and program to estimate cost of a product and/or service | |
Krogmann | Reconstruction of software component architectures and behaviour models using static and dynamic analysis | |
JP2002116916A (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
US5396627A (en) | Method of producing object program based on interprocedural dataflow analysis of a source program | |
JP2002527816A5 (ja) | ||
JP3047998B2 (ja) | 並列計算機におけるプロセッサ割り当て方法、及び装置 | |
US5797012A (en) | Connectivity based program partitioning | |
JP3765923B2 (ja) | ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体 | |
US7734559B2 (en) | Rule processing method and apparatus providing exclude cover removal to simplify selection and/or conflict advice | |
Basten et al. | QTL Cartographer, version 1.17 | |
CN114238078A (zh) | 一种基于高阶函数的程序间依赖关系抽取方法 | |
JP2002527816A (ja) | プログラム最適化装置および方法 | |
Peyret et al. | Efficient application mapping on CGRAs based on backward simultaneous scheduling/binding and dynamic graph transformations | |
Khedker et al. | Bidirectional data flow analysis for type inferencing | |
Lyon et al. | A scalability test for parallel code | |
Dolz et al. | Towards automatic parallelization of stream processing applications | |
JP3166699B2 (ja) | オブジェクト指向プログラム設計支援装置、方法および記録媒体 | |
Gebremedhin et al. | Automatic task based analysis and parallelization in the context of equation based languages | |
JPH0667871A (ja) | プログラム自動更新方式 | |
KR100319776B1 (ko) | 소프트웨어 프로세스 모형화 장치 및 그 방법 | |
JPH03186945A (ja) | プログラム実行特性の測定方法 | |
JPH05334391A (ja) | 制御回路生成装置 |