JP2011118909A - メモリアクセス命令のベクトル化 - Google Patents

メモリアクセス命令のベクトル化 Download PDF

Info

Publication number
JP2011118909A
JP2011118909A JP2010286239A JP2010286239A JP2011118909A JP 2011118909 A JP2011118909 A JP 2011118909A JP 2010286239 A JP2010286239 A JP 2010286239A JP 2010286239 A JP2010286239 A JP 2010286239A JP 2011118909 A JP2011118909 A JP 2011118909A
Authority
JP
Japan
Prior art keywords
memory
memory access
access instructions
read
instructions
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
JP2010286239A
Other languages
English (en)
Other versions
JP5118745B2 (ja
Inventor
Jinquan Jason Dai
ダイ、ジンクァン、ジェーソン
Long Paul Li
リー、ロング、ポール
Bo Huang
ファン、ボー
Luddy Williams Harrison
ハリソン、ルディー、ウィリアムズ
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 China Ltd
Intel Corp
Original Assignee
Intel China Ltd
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 China Ltd, Intel Corp filed Critical Intel China Ltd
Publication of JP2011118909A publication Critical patent/JP2011118909A/ja
Application granted granted Critical
Publication of JP5118745B2 publication Critical patent/JP5118745B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】メモリアクセス命令のベクトル化は、メモリのバンド幅を増やすことを目的として、2つ又はそれ以上のメモリアクセス命令を1つのシングルメモリアクセス命令に結合し、長いメモリアクセス待ち時間を持つコンピュータデバイスの性能を高める。
【解決手段】最小データアクセス単位(MDAU)より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する段階102と、複数のメモリアクセス命令をベースアドレスにオフセットを加算する形式に変換する段階104と、変換された複数のメモリアクセス命令の複数のサブセットを複数のパーティションにグループ化する段階106と、複数の命令パターンとマッチする複数のサブセット内の複数の変換されたメモリアクセス命令をベクトル化する段階108とを備える。
【選択図】図2

Description

本明細書は、メモリアクセス命令のベクトル化に関する。
メモリアクセス命令のベクトル化は、通常、プログラムソースコードがオブジェクトコード、又はアセンブリコードにコンパイルされる場合に用いられる。ベクトル化は、アセンブラのオプティマイザにも使用される。コンパイルの間、メモリアクセス命令のベクトル化は、メモリのバンド幅を増やすことを目的として、2つ又はそれ以上のメモリアクセス命令を1つのシングルメモリアクセス命令に結合する。結果として、プログラムの実行中、より少ないメモリアクセスが要求され、これにより、長いメモリアクセス待ち時間を持つコンピュータデバイスの性能を高める。
図1はブロック図である。 図2はフロー図である。 図3はメモリ図である。 図4はソースコードリストである。 図5はブロック図である。 図6は命令パターンである。
図1に示されるように、一実施例によるシステム10は、プロセッサ12及びメモリ14を備える。メモリ14は、オペレーティングシステム16、コンパイラ18、ソースコード20、及びオブジェクトコード22を有する。幾つかの実施例では、コンパイルと実行とは、1つのシステム内に統合されない。そのような実施例では、ソースコードは、第一システム内の(複数の)オブジェクトファイルにコンパイルされ、連結された(複数の)オブジェクトファイルの実行は第二システム内で生じる。一例を挙げると、コンパイラ18は、ハードディスクなどの記憶デバイス上のソースコードファイルの中のソースコードを読み出す。システム10は、入力/出力デバイス24及び記憶デバイス26を備えてよい。
プロセッサ12は、オブジェクトコード22に含まれる複数の命令を実行する。複数の命令は、メモリ14からの読み出し及びメモリ14への書き込みなどの複数の命令を含んでよい。幾つかのコンピュータアーキテクチャでは、メモリアクセス命令は、選択可能なバイト数へのアクセス機能を持つ。メモリ14は、一般的に理路整然と構成され、ここでは、メモリ上のデータが記憶されている位置はアドレスと呼ばれる数値で表現される。メモリ14は、複数の収納箱の配列と考えられ、各収納箱は、1バイトの長さである。各箱は、それぞれに割り当てられたアドレス(固有値)を持つ。メモリアドレスを指定することにより、プログラマは、データの特定バイトにアクセスできる。
メモリ14は、異なるタイプ又はバンクであってもよい。例えば、メモリ14は、静的ランダムアクセスメモリ(SRAM)バンク、動的ランダムアクセスメモリ(DRAM)バンク、及びスクラッチパッドメモリバンクを含んでよい。メモリ14は、また、電気的プログラマブルリードオンリーメモリ(EEPROM)バンク、不揮発性ランダムアクセスメモリ(NVRAM)バンク、及びフラッシュメモリバンクを含んでもよい。異なる複数のメモリバンクへのアクセスは、互いに独立しているので、複数のメモリアクセスのベクトル化は、特定のメモリバンクを対象とする複数のメモリアクセス命令に対して、独立に実行される。
各メモリアクセス命令は、命令フォーマットに従う。命令フォーマットは、メモリアクセスのタイプ(例えば、読み出し又は書き込み)、情報を読み出す又は書き込むメモリバンク、アクセスが開始する開始アドレス、及び処理すべきバイト数を含む。処理されるバイト数は、メモリのタイプ(例えば、SRAM、DRAM、スクラッチパッド等)及び実行される処理(例えば、読み出し又は書き込み)に伴い変化し得る。メモリアクセス命令が読み出し及び書き込みのために使用する最小のバイト数は、最小データアクセスユニット(MDAU)と呼ばれる。
一旦メモリアクセスが開始すると、プロセッサ12は、アクセスが完了されるのを待つ。コンパイラ18は、ソースコード20に含まれる2つ又はそれ以上メモリアクセス命令を1つの等価なベクトル化されたメモリアクセス命令に結合することで、プロセッサ12の待ち時間を短縮する。
図2に示されるように、コンパイラ18は、ソースコードを介して複数のパスを作成し、命令パターンマッチングを使用して複数のメモリアクセスをベクトル化する。フォーマットパス(102)では、コンパイラ18は、MDAUバイトより少ない読み出しを規定する各メモリアクセス読み出し命令を、MDAUバイトアクセスする読み出し命令にフォーマットする。例えば、MDAUを4バイト、遭遇したメモリ読み出し命令が、2バイトを読み出す場合、遭遇したメモリ読み出し命令は、4バイトの読み出しにフォーマットされる。同様に、MDAUバイトよりも少ない書き込みのメモリアクセス書き込み命令は、コンパイラ18によってフォーマットされ、MDAUバイトの部分的書き込み命令になる。
次のパスでは、コンパイラ18は、可能なだけ多くのフォーマットされたメモリアクセス命令を標準フォーマットに変形(104)する。ここで、メモリアドレス参照は、ベースアドレスにオフセットを加えた形式であり、ベースアドレスは、他の複数のアドレスのための参照点として機能するアドレスである。例えば、ベースアドレスは、プログラムの開始を指し示してよい。プログラム中のすべての命令のアドレスは、ベースアドレスにオフセットを足して特定される。メモリアクセス命令をベースアドレスにオフセットを加算する形式に変形することは、幾つかのメモリアクセスを纏めて結合することを容易にすることで、メモリアクセスのベクトル化を容易にする。
複数のメモリアクセス命令の変形パスの後、コンパイラ18は、データフローグラフに基づいて、各メモリ読み出し又はメモリ書き込みの組に対して、複数のメモリアクセスパーティションを、特定のメモリバンクに生成(106)する。メモリアクセスパーティションは、1つの基本ブロック内にある複数のメモリアクセス命令の複数のグループを含む。グループ(又はメモリアクセスパーティションのサブノードと呼ばれる)中のすべてのメモリアクセス命令は、同じメモリバンクへの同じメモリアクセス(書き込み又は読み出し)を実行する。コンパイラ18は、各メモリアクセスパーティション内の各グループ(サブノード)に対して実行される命令パターンマッチングに基づき、複数のメモリアクセス命令をベクトル化(108)する。
図3に示されるように、一組のルールが、メモリアクセスパーティション200、202、204などの複数のメモリアクセスパーティションを生成(106)するために使用される。データフローグラフ206が、生成される。この例では、データフローグラフ206は、3つの基本ブロック208、210、212を備える。各基本ブロック、208、210、及び212は、複数のメモリアクセス命令を有する。
データフローグラフ206内の各基本ブロック208、210、及び212に対し、それぞれ対応するメモリアクセスパーティション200、202、及び204を生成することを目的として、以下の原則が、適用される。パーティションの各サブノードは、特定のメモリバンクへの複数のメモリアクセス操作のみを有する。例えば、サブノード214は、SRAMメモリバンクからの複数の読み出しを含む。サブノード216はDRAMメモリバンクからの読み出しを含む。
パーティションが、どのメモリアクセス操作も含まない場合、パーティションは空パーティションであり、次の命令パターンマッチングでは無視される。
各サブノードは、複数のメモリ読み出しのみ又は複数のメモリ書き込みのみを含むが、複数のメモリ読み出し及び複数のメモリ書き込みの両方を含むことはない。例えば、パーティション200内のサブノード214は、複数のメモリ読み出しのみを含む。パーティション202のサブノード218は、複数のメモリ書き込みのみを含む。2つメモリアクセス命令の間で依存性が存在する場合、これらは、同じサブノードには配置されない。
データフローグラフ206の1つの基本ブロックが、1つのメモリアクセスパーティションに対応するのに対し、各メモリアクセスパーティションは、1つ又はそれ以上のサブノードを含むことができる。例えば、基本ブロック208は、サブノード214及び216を含むメモリアクセスパーティション200に対応する。
4バイトのMDAUを用いるコンパイラ18について説明するが、他のMDAU値を使用してもよい。
図4に示されるように、メモリ図150は、2つのSRAM読み出しを1つのSRAM読み出しに結合するベクトル化を、説明するために使用される。メモリ図150は、Addr+0からAddr+13により表現される、14個のSRAMメモリ配置を含む。この例では、Addr+0が、ベースアドレス152であるとみなされる。最初のSRAM読み出し命令154は、解析され、バイトAddr+0から始まる4バイト、つまり、バイトAddr+0、Addr+1、Addr+2、及びAddr+3に含まれるデータが読み込まれる。2番目のSRAM読み出し命令156は、解析され、バイトAddr+4から始まる4バイト、つまり、バイトAddr+4、Addr+5、Addr+6、及びAddr+7に含まれるデータが読み込まれる。これら2つのSRAM読み出し命令をベクトル化することは、1つのベクトル化されたSRAM読み出し命令158を生成して、SRAM読み出し命令158が解析され、バイトAddr+0から始まる8バイト、つまり、バイトAddr+0、Addr+1、Addr+2、Addr+3、Addr+4、Addr+5、Addr+6、及びAddr+7に含まれるデータを読み出す。
2つ又はそれ以上のメモリ読み出し(又は、2つ又はそれ以上のメモリ書き込み)をベクトル化することは、読み出し(又は書き込み)アドレスが連続であることを要求しない。例えば、バイトAddr+0から始まる4バイトを読み出す最初のSRAM読み出し命令154と、バイトAddr+8から始まる4バイトを読み出す2番目のSRAM読み出し命令160は、バイトAddr+0から始まりバイトAddr+11を含む12バイト読み出す1つのベクトル化されたSRAM読み出し命令162にベクトル化される。4バイト、Addr+4、Addr+5、Addr+6、及びAddr+7は、使用されないが、4バイトごとをフェッチする2回の読み出しではなく、12バイトをフェッチする1回のメモリ読み出しを実行することで、時間を節約する。4つの未使用バイトAddr+4、Addr+5、Addr+6、及びAddr+7へのメモリ読み出しは、インスタンス化可能メモリ読み出しと呼ばれる。
パーティション200、202、及び204などの複数のメモリアクセスパーティションとともに、命令パターンマッチングを用いて、ベクトル化を実行することは、便利である。各メモリアクセス命令、及びソースコード言語の定義で許容される命令変化に対して、命令パターンが、命令セマンティクスを記述するために生成されることができる。コンパイラ18は、全ての命令パターンの記憶を含む。例えば、図5に示されるように、命令パターン300は、2次のベクトル次数、すなわち、SRAMから2*MDAUバイト読み出すSRAMメモリ読み出しを記述する。
命令パターン300は、2つのSRAM読み出しが、2次のベクトル次数で、1つのベクトル化されたSRAM読み出し命令を構成できることを示す。命令パターン300は、2つのセグメントと呼ばれるセマンティック節302及び304を含む。
命令パターン300が、入力プログラムに現れる2つのSRAM読み出しとマッチする場合、すなわち、ソースコード内の2つの連続する命令が、2つのセグメントにより要求されるセマンティクスに従う場合、パターンマッチングは成功である。成功したパターンマッチの結果として、対象となる2フラグメントのシンボリックレジスター、Reg1及びReg2が、同じレジスタークラスの複数のレジスターに割り付けられ、物理レジスター値が連続になることが要求される。これは、命令パターン300の条件部306に指定されている。
成功する命令パターンマッチングは、必ずしも全てのセグメントのマッチを要求しない。命令パターン300にとって、1つのセグメントがマッチする場合、残りのセグメントはインスタンス化可能なので、マッチングは成功である。時折、この様なセグメントのインスタンス化は、有効である。例えば、パーティション200内のサブノード214に現れる2つのSRAM読み出しにとって、1フラグメントパターンとそれぞれマッチングさせる代わりに、3フラグメントパターンとマッチした"SRAM_read Reg1+0"及び"SRAM_read Reg1+8"の組み合わせを得ることは、有益である。"SRAM_read Reg1+4"のインスタンス化は要求されるが、1回のメモリアクセスは、2回のメモリアクセスよりも、常により安価である。複数のメモリ書き込みの複数のセグメントは、インスタンス化されることが出来ないことは注目すべきである。
命令パターンマッチングは、コンパイラ18により、各パーティションの各サブノードに対して記憶上の全ての命令パターンに照らし合わせて実行される。各サブノードは、読み出し又は書き込みのどちらかであり、サブノードの命令パターンマッチングは、複数の読み出しパターンのみ又は複数の書き込みパターンのみのどちらかを用いて、実行される。パターンマッチングの記述を容易にすることを目的として、下記の特徴を持つ命令パターンを"リーガルパターン候補"と呼ぶ。
1−同じメモリバンクにサブノードとしてアクセスする
2−同じメモリ操作(読み出し又は書き込み)をサブノードのメモリ操作特性として記述する
特定のサブノードに対する、全てのリーガルパターン候補とのパターンマッチングは、サブノード内の異なるメモリ操作の全組み合わせに対して実施される。
全ての成功したマッチは記録され、最適化された複数のマッチは、複数のパターンマッチの最終マッチセットを生成するために選択される。下記の原則が、最適化された複数のマッチを選択するために選択される。
(1)最終マッチセットは、ノード内の全てのメモリ操作を補う最小数のマッチを含む。
(2)ノードに現れる、各メモリ操作は、最終マッチセットに属する、1つのマッチにのみ現れることが出来る。
(3)2つのパターンマッチが同じ数のマッチしたフラグメントを含む場合、より少ないインスタンス化されたフラグメントを持つマッチが選択される。
最終マッチセットの全てのマッチが1フラグメントのマッチの場合、メモリベクトル化の機会は、識別されない。
メモリアクセスパターン設計では、全ての1フラグメントパターン及び部分的書き込みパターンが含まれ、これは、ファイナルマッチが常に形成されることを保証する。
最終マッチセットとともに、コンパイルされたプログラムは、ベクトル化された複数のメモリアクセスを形成するために変形される。
幾つかの命令パターンは、複数の部分的書き込みをベクトル化することを目的として、特別に設計される。部分的書き込みを含むサブノードに対して、サブノード内の全ての部分的書き込みのためのパターンマッチングが、MDAUバイトの書き込みを形成することを目的として、幾つかの部分的書き込みの結合を試みながら最初に実施される。部分的書き込みのベクトル化が成功した場合、サブノードは、これらのマッチした部分的書き込みからMDAUバイトの書き込みを形成するために更新される。部分的書き込みのベクトル化は、後のメモリアクセスのベクトル化の機会を増大させる。
図3のパーティション200、202、及び204のベクトル化の結果400が、図6に示されている。
他の複数の実施例は、請求項の範囲内にある。

Claims (30)

  1. ソースコード内の複数のメモリアクセス命令を、標準フォーマットに変換する段階と、
    フォーマットされた複数のメモリアクセス命令を有する複数のパーティションを生成する段階と、
    複数の命令パターンと、前記複数のパーティション内の前記複数のフォーマット化されたメモリアクセス命令との、複数のマッチを有するマッチセットを生成する段階と、
    前記複数のマッチを複数のベクトルメモリアクセス命令に変形する段階と
    を備える方法。
  2. 変換する段階が、最小データアクセス単位(MDAU)より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する段階を有する請求項1に記載の方法。
  3. 変換する段階が、前記複数の最小データアクセス単位を読み出す又は書き込む前記複数のメモリアクセス命令を、ベースアドレスにオフセットを加算する形式に変形する段階をさらに有する請求項2に記載の方法。
  4. 複数のパーティションを生成する段階が、
    前記複数のメモリアクセス命令を含む複数の基本ブロックを有するデータフローグラフを生成する段階と、
    各基本ブロックにルール群を適用する段階と
    を有する請求項1に記載の方法。
  5. 適用する段階が、1つのパーティション内の1つのサブノードを、1種類の特定メモリバンクを対象にする複数のメモリアクセス命令に制限する段階を含む請求項4に記載の方法。
  6. 適用する段階が、1つのパーティション内の前記1つのサブノードを、1つのメモリ読み出し又はメモリ書き込みに制限する段階をさらに含む請求項5に記載の方法。
  7. 前記メモリバンクが、静的ランダムアクセスメモリ(SRAM)である請求項5に記載の方法。
  8. 前記メモリバンクが、動的ランダムアクセスメモリ(DRAM)である請求項5に記載の方法。
  9. 前記メモリバンクが、スクラッチパッドメモリである請求項5に記載の方法。
  10. 前記メモリバンクが、EEPROMである請求項5に記載の方法。
  11. 前記メモリバンクが、フラッシュメモリである請求項5に記載の方法。
  12. 前記メモリバンクが、NVRAMである請求項5に記載の方法。
  13. 前記複数の命令パターンが、命令セマンティクスを記述するパターンを有する請求項1に記載の方法。
  14. 前記複数のベクトルメモリアクセス命令が、ある種のメモリへの複数のメモリアクセスを表す、複数のシングルメモリアクセス命令を有する請求項1に記載の方法。
  15. コンパイル方法であって、
    最小データアクセス単位(MDAU)より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する段階と、
    前記複数のメモリアクセス命令を、ベースアドレスにオフセットを加算する形式に変換する段階と、
    前記複数の変換されたメモリアクセス命令の複数のサブセットを、複数のパーティションにグループ化する段階と、
    複数の命令パターンとマッチする、前記複数のサブセット内の前記複数の変換されたメモリアクセス命令を、ベクトル化する段階と
    を備えるコンパイル方法。
  16. 前記コンパイル方法であって、
    グループ化する段階が、複数のメモリアクセス命令を含む複数の基本ブロックを有するデータフローグラフを生成する段階と、
    複数のパーティション内の、1つのメモリバンクを対象とし且つ同じ操作を実行する複数のメモリアクセス命令を有する、複数のサブノードを生成する段階と
    を有する請求項15に記載のコンパイル方法。
  17. 前記操作が、読み出しである請求項16に記載のコンパイル方法。
  18. 前記操作が、書き込みである請求項16に記載のコンパイル方法。
  19. 前記メモリバンクが、静的ランダムアクセスメモリ(SRAM)である請求項16に記載のコンパイル方法。
  20. 前記メモリバンクが、動的ランダムアクセスメモリ(DRAM)である請求項16に記載のコンパイル方法。
  21. 前記メモリバンクが、スクラッチパッドメモリである請求項16に記載のコンパイル方法。
  22. 前記メモリバンクが、EEPROMである請求項16に記載のコンパイル方法。
  23. 前記メモリバンクが、フラッシュメモリである請求項16に記載のコンパイル方法。
  24. 前記メモリバンクが、NVRAMである請求項16に記載のコンパイル方法。
  25. 前記複数の命令パターンが、命令セマンティクスを有する請求項15に記載のコンパイル方法。
  26. 前記命令セマンティクスが、複数のセグメントを含む請求項25に記載のコンパイル方法。
  27. 情報媒体内で明白に具現化され、複数のメモリアクセス命令をベクトル化するコンピュータプログラム製品であって、データ処理装置に、
    ソースコードに存在する複数のメモリアクセス命令を標準形式に変換する手順と、
    複数のフォーマットされたメモリアクセス命令を有する複数のパーティションを生成する手順と、
    複数の命令パターンと、前記複数のサブセット内の前記複数のフォーマット化されたメモリアクセス命令との、複数のマッチを有するマッチセットを生成する手順と、
    前記複数のマッチを複数のベクトルメモリアクセス命令に変形する手順
    を実行させるコンピュータプログラム製品。
  28. 変換する手順が、最小データアクセス単位より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する手順を有する請求項27に記載の製品。
  29. 変換する手順が、前記複数の最小データアクセス単位を読み出す又は書き込む前記複数のメモリアクセス命令を、ベースアドレスにオフセットを加算する形式に変形する手順をさらに有する請求項28に記載の製品。
  30. 複数のパーティションを生成する手順が、
    複数のメモリアクセスを含む複数の基本ブロックを有するデータフローを生成する手順と、
    複数のパーティション内の、1つのメモリバンクを対象とし且つ同じ操作を実行する複数のメモリアクセス命令を含む、複数サブノードを生成する手順と
    を有する請求項27に記載の製品。
JP2010286239A 2003-11-19 2010-12-22 メモリアクセス命令のベクトル化 Expired - Fee Related JP5118745B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/718,283 2003-11-19
US10/718,283 US7457936B2 (en) 2003-11-19 2003-11-19 Memory access instruction vectorization

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005510683A Division JP2007536599A (ja) 2003-11-19 2003-11-24 メモリアクセス命令のベクトル化

Publications (2)

Publication Number Publication Date
JP2011118909A true JP2011118909A (ja) 2011-06-16
JP5118745B2 JP5118745B2 (ja) 2013-01-16

Family

ID=34574661

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2005510683A Pending JP2007536599A (ja) 2003-11-19 2003-11-24 メモリアクセス命令のベクトル化
JP2010286239A Expired - Fee Related JP5118745B2 (ja) 2003-11-19 2010-12-22 メモリアクセス命令のベクトル化

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2005510683A Pending JP2007536599A (ja) 2003-11-19 2003-11-24 メモリアクセス命令のベクトル化

Country Status (6)

Country Link
US (1) US7457936B2 (ja)
EP (1) EP1685491A4 (ja)
JP (2) JP2007536599A (ja)
CN (1) CN100414514C (ja)
AU (1) AU2003304556A1 (ja)
WO (1) WO2005050451A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8281083B2 (en) * 2005-06-30 2012-10-02 Intel Corporation Device, system and method of generating an execution instruction based on a memory-access instruction
US8219786B1 (en) * 2007-03-20 2012-07-10 Nvidia Corporation Request coalescing for instruction streams
US9286256B2 (en) * 2009-09-28 2016-03-15 Nvidia Corporation Sharing data crossbar for reads and writes in a data cache
US8825982B2 (en) * 2010-06-10 2014-09-02 Global Supercomputing Corporation Storage unsharing
US20130113809A1 (en) * 2011-11-07 2013-05-09 Nvidia Corporation Technique for inter-procedural memory address space optimization in gpu computing compiler
JP5651622B2 (ja) * 2012-03-07 2015-01-14 株式会社東芝 データ伝送装置、データ伝送方法、及びプログラム
CN103455280B (zh) * 2012-05-31 2016-12-14 国际商业机器公司 用于执行存储器复制的方法和系统
CN102831004B (zh) * 2012-07-13 2015-07-15 天津国芯科技有限公司 一种基于C*core处理器的优化编译方法及编译器
CN103207786B (zh) * 2013-04-28 2016-03-23 中国人民解放军信息工程大学 渐进式智能回溯向量化代码调优方法
US9436450B2 (en) * 2014-09-01 2016-09-06 Freescale Semiconductor, Inc. Method and apparatus for optimising computer program code
US10180829B2 (en) * 2015-12-15 2019-01-15 Nxp Usa, Inc. System and method for modulo addressing vectorization with invariant code motion

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51853A (ja) * 1974-06-21 1976-01-07 Hitachi Ltd Deetashorishisutemuno meireigoseisochi
JPH02163831A (ja) * 1988-12-16 1990-06-25 Nec Corp オブジェクトプログラム削減方式
JPH05127920A (ja) * 1991-11-05 1993-05-25 Fujitsu Ltd 主記憶アクセス最適化処理方法
JPH08328870A (ja) * 1995-05-30 1996-12-13 Fujitsu Ltd コンパイル処理装置
JPH09282177A (ja) * 1996-04-12 1997-10-31 Hitachi Ltd プログラム変換方法およびコンパイラ
JPH11194948A (ja) * 1997-10-30 1999-07-21 Hewlett Packard Co <Hp> コンパイラ最適化アルゴリズム
JP2000020318A (ja) * 1998-07-03 2000-01-21 Fujitsu Ltd メモリアクセス命令削減装置および記録媒体
JP2003131887A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd 変数ロードおよび処理の一括化コンパイル方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06230977A (ja) 1993-02-05 1994-08-19 Nec Corp 言語処理装置
JP2987311B2 (ja) 1995-05-12 1999-12-06 松下電器産業株式会社 プロセッサ及び翻訳装置
US6356270B2 (en) * 1998-03-31 2002-03-12 Intel Corporation Efficient utilization of write-combining buffers
US6099585A (en) 1998-05-08 2000-08-08 Advanced Micro Devices, Inc. System and method for streamlined execution of instructions
EP1119805B8 (en) 1998-10-10 2006-05-03 Transitive Limited Endian transformation
US6434639B1 (en) * 1998-11-13 2002-08-13 Intel Corporation System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operation
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
US6334171B1 (en) * 1999-04-15 2001-12-25 Intel Corporation Write-combining device for uncacheable stores
US6286134B1 (en) 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment
US6571319B2 (en) * 1999-06-04 2003-05-27 Sun Microsystems, Inc. Methods and apparatus for combining a plurality of memory access transactions
US6496905B1 (en) * 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
JP3936550B2 (ja) * 2001-05-14 2007-06-27 富士通株式会社 パケットバッファ
US6681311B2 (en) * 2001-07-18 2004-01-20 Ip-First, Llc Translation lookaside buffer that caches memory type information
US6938127B2 (en) * 2001-09-25 2005-08-30 Intel Corporation Reconfiguring memory to reduce boot time
US20030217223A1 (en) * 2002-05-14 2003-11-20 Infineon Technologies North America Corp. Combined command set
US20040006667A1 (en) * 2002-06-21 2004-01-08 Bik Aart J.C. Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions
JP2004157695A (ja) * 2002-11-06 2004-06-03 Matsushita Electric Ind Co Ltd 情報処理方法および情報処理装置
US7469316B2 (en) * 2003-02-10 2008-12-23 Intel Corporation Buffered writes and memory page control
US7085887B2 (en) * 2003-08-21 2006-08-01 Hewlett-Packard Development Company, L.P. Processor and processor method of operation
US7313788B2 (en) * 2003-10-29 2007-12-25 International Business Machines Corporation Vectorization in a SIMdD DSP architecture

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51853A (ja) * 1974-06-21 1976-01-07 Hitachi Ltd Deetashorishisutemuno meireigoseisochi
JPH02163831A (ja) * 1988-12-16 1990-06-25 Nec Corp オブジェクトプログラム削減方式
JPH05127920A (ja) * 1991-11-05 1993-05-25 Fujitsu Ltd 主記憶アクセス最適化処理方法
JPH08328870A (ja) * 1995-05-30 1996-12-13 Fujitsu Ltd コンパイル処理装置
JPH09282177A (ja) * 1996-04-12 1997-10-31 Hitachi Ltd プログラム変換方法およびコンパイラ
JPH11194948A (ja) * 1997-10-30 1999-07-21 Hewlett Packard Co <Hp> コンパイラ最適化アルゴリズム
JP2000020318A (ja) * 1998-07-03 2000-01-21 Fujitsu Ltd メモリアクセス命令削減装置および記録媒体
JP2003131887A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd 変数ロードおよび処理の一括化コンパイル方法

Also Published As

Publication number Publication date
US7457936B2 (en) 2008-11-25
JP2007536599A (ja) 2007-12-13
EP1685491A1 (en) 2006-08-02
CN1894674A (zh) 2007-01-10
CN100414514C (zh) 2008-08-27
EP1685491A4 (en) 2008-03-19
WO2005050451A1 (en) 2005-06-02
AU2003304556A1 (en) 2005-06-08
US20050108499A1 (en) 2005-05-19
JP5118745B2 (ja) 2013-01-16

Similar Documents

Publication Publication Date Title
JP5118745B2 (ja) メモリアクセス命令のベクトル化
JP4640683B2 (ja) プログラムコード変換方法
US6925639B2 (en) Method and system for register allocation
JP4041248B2 (ja) コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法
JP6236093B2 (ja) 並列パイプラインにおいてブランチを分岐するためのハードウェアおよびソフトウェアソリューション
US20220237041A1 (en) Parallel processing system performing in-memory processing
JP4632666B2 (ja) コンパイラ生成プログラムコードの最適化
US20200117475A1 (en) Function evaluation using multiple values loaded into registers by a single instruction
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
US6016398A (en) Method for using static single assignment to color out artificial register dependencies
CN107408054B (zh) 设备中的流控制的方法和计算机可读介质
US7356812B2 (en) Passing parameters by implicit reference
JP2000353097A (ja) 低密回の干渉グラフを生成する方法および装置
JPH11282814A (ja) プログラム並列化方法及びその装置並びに並列化用プログラムを記録した記録媒体
JPH11345127A (ja) コンパイラ
US20220147442A1 (en) Method for the execution of a computer program by an electronic computing device comprising a main memory and a secondary memory
JPH03135630A (ja) 命令スケジューリング方式
Shaikhha et al. Using Destination-Passing Style to Compile a Functional Language into Efficient Low-Level Code
Goosey A minipascal compiler for the e-machine
V'yukova et al. Effective code generation for processor architectures with explicit parallelism
JPH0675987A (ja) ループ変換方法
JPH10301791A (ja) オブジェクトコード最適化装置、オブジェクトコード最適化方法、オブジェクトコード最適化プログラムを記録した機械読み取り可能な記録媒体、及び、コンパイラ
JP2004021441A (ja) プログラム処理装置及びプログラム処理方法、並びにコンピュータ・プログラム
JP2005100240A (ja) コンパイラ
Aho et al. Translation and code generation

Legal Events

Date Code Title Description
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: 20121002

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121019

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151026

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20151026

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees