JP4934267B2 - コンパイラ装置 - Google Patents
コンパイラ装置 Download PDFInfo
- Publication number
- JP4934267B2 JP4934267B2 JP2003357323A JP2003357323A JP4934267B2 JP 4934267 B2 JP4934267 B2 JP 4934267B2 JP 2003357323 A JP2003357323 A JP 2003357323A JP 2003357323 A JP2003357323 A JP 2003357323A JP 4934267 B2 JP4934267 B2 JP 4934267B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- program
- machine language
- intermediate code
- source program
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 96
- 238000005457 optimization Methods 0.000 claims description 27
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 40
- 238000003780 insertion Methods 0.000 description 30
- 230000037431 insertion Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 29
- 230000002860 competitive effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
Description
このような高級言語で記述されたソースプログラムを機械語命令列にコンパイルする高級言語用コンパイラでは、キャッシュメモリ等のハードウェア構成を考慮して、実行速度の向上等を図るための機械語命令列の最適化を実現することができなかった。
また、アセンブリ言語で記述されたプログラムは移植性に乏しいため、資産性が低いという課題もある。
さらに、ハードウェアが大規模化、複雑化している今日においては、ハードウェアを考慮したアルゴリズムを人手で作成して性能をチューニングするのは非常に困難であるという課題もある。
また、プログラムの資産性が高いコンパイラ装置を提供することを第2の目的とする。
さらに、人手で性能をチューニングする必要のないコンパイラ装置を提供することを第3の目的とする。
さらに好ましくは、前記指示取得手段は、前記ソースプログラムの中において、特定のオブジェクトを前記キャッシュメモリのラインデータのサイズごとにグループ分けし、異なるグループに含まれるオブジェクトは前記キャッシュメモリの異なるセット番号のキャッシュエントリーに配置する旨の指示と、前記特定のオブジェクトの名前とを取得し、前記最適化手段は、前記特定のオブジェクトを前記キャッシュメモリのラインデータのサイズごとにグループ分けし、異なるグループに属するオブジェクト同士が前記キャッシュメモリの同じセット番号のキャッシュエントリーに配置されないようにする。
さらに好ましくは、前記キャッシュメモリに含まれる複数のキャッシュエントリーの各々は、前記キャッシュエントリーに格納されたオブジェクトの追い出しやすさを示す値を記憶するウィークフラグを有し、前記プロセッサが使用するメインメモリは、記憶されているオブジェクトが前記キャッシュメモリに配置されるとともに、当該配置の際に前記ウィークフラグに前記オブジェクトを追い出しやすくする値が設定されるウィーク空間と、記憶されているオブジェクトが前記キャッシュメモリに配置されるとともに、当該配置の際に前記ウィークフラグに前記オブジェクトを追い出しやすくする値が設定されないキャッシャブル空間とを有し、前記指示取得手段は、前記ソースプログラムの中において、特定のオブジェクトを前記ウィーク空間または前記キャッシャブル空間のいずれに配置するかを示す配置情報に基づいて、前記特定のオブジェクトを前記ウィーク空間または前記キャッシャブル空間に配置する指示と、前記特定のオブジェクトの名前と、前記配置情報とを取得し、前記最適化手段は、特定のオブジェクトを前記配置情報に従い前記ウィーク空間または前記キャッシャブル空間のいずれに配置させる。
キャッシュメモリ制御手段が実行する専用コマンドを指定できるようにすることにより、キャッシュメモリの細かな制御をユーザが指定することができ、キャッシュメモリにおけるヒットミスを防ぐことができる。
また、プログラムの資産性が向上する。
さらに、人手で性能をチューニングする必要もなくなる。
さらにまた、オブジェクトをキャッシュメモリに一度に乗せることができないために起こるヒットミスを防ぐことができる。
さらに、オブジェクト同士でキャッシュメモリの同一のセット番号のブロックを奪い合い、互いにオブジェクトを追い出しあう競合状態によるヒットミスを防ぐことができる。
キャッシュメモリ3は、4ウェイセットアソシアティブ方式に従い動作し、メインメモリ2よりも高速にデータの読み書きが可能なメモリである。なお、キャッシュメモリ3の記憶容量は、メインメモリ2のそれに比べて少ない。
キャッシュ制御部5は、キャッシュメモリ3およびサブキャッシュメモリ4を制御するための処理部であり、後述する専用レジスタ7〜9(専用レジスタTACM、TACSZおよびTACSTAD)を有している。
4つのウェイ0〜3は、同じ構成を有し、合計4×2kバイトの容量を有する。ウェイ0は、16個のキャッシュエントリーを有する。
図3に1つのキャッシュエントリーにおける詳細なビット構成を示す。同図のように、1つのキャッシュエントリーは、バリッドフラグV、21ビットのタグ、128バイトのラインデータ、ウィークフラグWおよびダーティフラグDを保持する。バリッドフラグVは、そのキャッシュエントリーが有効か否かを示す。タグは21ビットのタグアドレスのコピーである。ラインデータは、タグアドレスおよびセットインデックス(SI)により特定されるブロック中の128バイトデータのコピーである。ダーティフラグDは、そのキャッシュエントリーに書き込みがあったか否か、つまりキャシュエントリー中にキャッシュされたデータが書き込みによりメモリ中のデータと異なるためメモリに書き戻すこと(ライトバックすること)が必要か否かを示す。ウィークフラグWは、キャッシュエントリーからの追い出し対象を示すフラグであり、キャッシュミスを起こした場合に、ウィークフラグWが1のキャッシュエントリーから優先的にデータが追い出される。
比較器32aは、アドレスレジスタ20中のタグアドレスと、セットインデックス(SI)により選択されたセットに含まれる4つのタグ中のウェイ0のタグとが一致するか否かを比較する。比較器32b〜32cについても、ウェイ31b〜31dに対応すること以外は同様である。
セレクタ35は、選択されたセットにおけるウェイ0〜3のラインデータのうち、ヒットしたウェイのラインデータを選択する。
デマルチプレクサ37は、キャッシュエントリーにデータを書き込む際に、ウェイ0〜3の1つに書き込みデータを出力する。
アドレスレジスタ44は、メインメモリ2へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは32ビットであるものとする。同図に示すように、アクセスアドレスは、最上位ビットから順に、21ビットのタグアドレスと、1ビットのセットインデックス(図中のSI)とを含む。ここで、タグアドレスはウェイにマッピングされるメモリ中の領域を指す。ウェイ41のセット数は、セットインデックス(SI)が1ビットなので2セットである。タグアドレスおよびセットインデックス(SI)で特定されるブロックは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインとも呼ばれる。ラインデータのサイズは、128バイトである。1ワードを4バイトとすると、1ラインデータは32ワードである。アドレスレジスタ20中の最下位から10ビットは、ウェイのアクセス時には無視される。
比較器42は、アドレスレジスタ44中のタグアドレスと、セットインデックス(SI)により選択されたセットに含まれるタグとが一致するか否かを比較する。
アンド回路43は、バリッドフラグVと比較器42の比較結果とが一致するか否かを比較する。この比較結果をhitとする。比較結果hitが1である場合は、アドレスレジスタ44中のタグアドレスおよびセットインデックス(SI)に対応するラインデータが存在すること、すなわちヒットしたことを意味する。比較結果hitが0である場合は、ミスヒットしたことを意味する。
コンパイラ58は、ソースプログラムおよびプロファイラ56より出力されるプロファイル情報64を読み込み、機械語プログラムへ変換するためのプログラムであり、機械語命令を最適化するための最適化部68をその内部に備えている。コンパイラ58の詳細については、後に詳述する。
図7は、コンパイラ58の構成を示す機能ブロック図である。このコンパイラはC言語やC++言語等の高級言語で記述されたソースプログラム72を、上述のプロセッサ1をターゲットプロセッサとする機械語プログラム92に変換するクロスコンパイラであり、パーソナルコンピュータ等のコンピュータ上で実行されるプログラムによって実現され、大きく分けて、パーサー部76と、中間コード変換部78と、最適化部68と、コード生成部90とから構成される。
中間コード変換部78は、パーサー部76から渡されたソースプログラム72の各ステートメントを一定規則に基づいて中間コードに変換する処理部である。ここで、中間コードは、典型的には、関数呼び出しの形式で表現されるコード(例えば、「+(int a, int b)」を示すコード;「整数aに整数bを加算する」ことを示す。)である。ただし、中間コードには、このような関数呼び出し形式のコードだけでなく、プロセッサ1の機械語命令も含まれる。中間コード変換部78は、中間コードを生成する際に、プロファイル情報64を参照して、最適な中間コードを生成する。
コンパイラ58では、特に、キャッシュメモリ3におけるキャッシュミスを削減することを狙いとしている。キャッシュミスは、(1)初期ミス、(2)容量性ミスおよび(3)競合性ミスの3つに大きく分けることができる。「初期ミス」とは、プログラム実行時に利用しようとするオブジェクトがキャッシュメモリ3に記憶されていないために起こるヒットミスを指す。「容量性ミス」とは、大量のオブジェクトを一度に処理しようとするために、それらのオブジェクトをキャッシュメモリ3に一度に乗せることができないために起こるヒットミスを指す。「競合性ミス」とは、キャッシュメモリ3中のキャッシュエントリーを異なるオブジェクトが同時に使用しようとして、互いにキャッシュエントリーからの追い出し合いを行なうことにより発生するヒットミスを指す。
(1)タイリング処理
タイリング処理とは、ループ処理において、容量性ミスが生じている場合に、1つのループを複数のループに分割することにより、一度に処理されるオブジェクトの容量をキャッシュメモリ3の容量以下に抑える手法である。このタイリング処理は、タイリング部84において実行される。
図8(a)および図8(b)は、タイリング処理の実行を指定するためのプラグマの一例を示す図である。なお、「プラグマ(又は、プラグマ指令)」とは、ソースプログラム72中にユーザが任意に指定(配置)することができるコンパイラ58への指示であり、「#pragma」で始まる文字列である。
図8(b)で示されるプラグマ指令は、ループ処理のループ回数が一定(NUMで指定された回数)となるようなタイリング処理の実行を指定する。なお、回数NUMを指定しなかった場合には、デフォルトの回数となるようなタイリング処理の実行の指定となる。
なお、上述のプラグマ指令では、プラグマ指令の直後に記載されたループ処理が処理の対象となる。
なお、タイリング部84に、容量性ミスが発生していないかどうかをチェックさせるようにしてもよい。図9は、容量性ミス発生のチェック処理を説明するための図である。たとえば、容量性ミスが発生しているか否かの情報をチューニングヒント情報94として出力させるためのプラグマを図9(a)のように定義し、このプラグマをソースプログラム72のチェックしたいループの直前に記載することにより、指定されたループに対して容量性ミスが発生しているか否かの情報がチューニングヒント情報94として出力される。
なお、図9(a)に示したプラグマ指令をループの直前に挿入することにより、タイリング部84が、容量性ミスが発生しているか否かを調べるとともに、容量性ミスが発生しないように、自動的にタイリング処理を実行するようにしてもよい。
プリフェッチ命令挿入処理とは、メインメモリ2に記憶された指定された領域のオブジェクトを予めキャッシュメモリ3にプリフェッチするための命令を、中間コードに挿入するための処理である。このプリフェッチ層命令挿入処理は、プリフェッチ命令挿入部86において実行される。
図10(a)および図10(b)は、プラグマ指令によるプリフェッチ命令挿入処理の指定を示しており、指定した変数名の値を予めキャッシュメモリ3にプリフェッチする命令の挿入指示である。なお、図10(b)に示すようにサイクル数を指定した場合には、指定した変数が参照されるよりも当該サイクル数だけ前にプリフェッチ命令が挿入される。図10(a)に示すようにサイクル数が指定されなかった場合には、指定された変数が参照されるよりも予め定められたサイクル数(デフォルトサイクル数)だけ前にプリフェッチ命令が挿入される。すなわち、図10(e)に示すように、例えば、実際に変数aがアクセスされるよりも指定サイクル数またはデフォルトサイクル数だけ前に変数aをプリフェッチするプリフェッチ命令が挿入される。
なお、プロファイル情報64を利用してプリフェッチ命令を自動挿入するようにしてもよい。図13は、プロファイル情報64を利用したプリフェッチ命令挿入処理の指定方法を説明するための図である。
図14は、データ配置処理の概略を説明するための図である。図14(a)に示すように、ソースプログラムに含まれる変数のうち、時間的に近いタイミングでアクセスされる変数(例えば生存区間が重なり合う変数)のグループが3つあったとする(変数グループA〜C)。ここで、1つの変数グループに含まれるデータサイズは、キャッシュメモリ3のラインデータのサイズ、すなわち128バイトであるものとする。コンパイルシステムでは、これら3つの変数グループがキャッシュメモリ3に書込みされる際には、異なるセット番号のブロックに書き込まれるような機械語命令を生成する。例えば、変数グループA、BおよびCをキャッシュメモリ3のセット0、1および15のブロックにそれぞれ配置するものとすると、図14(b)に示されるように、変数グループA、BおよびCは、キャッシュメモリ3に書き込まれた場合にセット0、1および15のブロックに書き込まれるようなメインメモリ2の記憶領域に記憶される。このため、図14(c)に示されるように、変数グループA、BおよびCは、メインメモリ2からキャッシュメモリ3に書き込まれる際には、セット0、1および15のブロックにそれぞれ書き込まれることとなる。このようにすることにより、時間的に近いタイミングでアクセスされるオブジェクト同士でキャッシュメモリの同一のセット番号のブロックを奪い合い、互いにオブジェクトを追い出しあう競合状態が生じない。よって、競合性ミスを低減させることができる。
その後、配置セット情報設定部87は、設定されたセット番号のキャッシュメモリ3のブロックにそのグループのオブジェクトが配置されるよう中間コードを生成する。
上述したようにメインメモリ2には4種類のメモリ空間(キャッシャブル空間、ウィーク空間、サブキャッシュ空間およびアンキャッシャブル空間)を有している。図19は、オブジェクトを特定の空間に配置するための指定方法を示す図である。上述のようにプロセッサ1は、専用レジスタ6(専用レジスタDPTEL)を有している。図20は、専用レジスタDPTELに格納される情報を示す図である。専用レジスタDPTELには、メインメモリ2のページアドレスと、サブキャッシュ空間であるかウィーク空間であるかを示すS/Wフラグとが記憶されている。なお、専用レジスタDPTELは4つ存在し、0番から3番まで番号が付けられているものとする。
このように、オブジェクトを適切な空間に配置することにより、競合性ミスを防ぐことができる。例えば、サブキャッシュ空間を利用することにより、キャッシュメモリ3で頻繁に使用されるオブジェクトを追い出したりすることがなくなる。また、ウィーク空間を利用することにより、あまり利用されないオブジェクトにウィークビットWを立て、優先的に追い出すようにすることもできる。
(5)キャッシュコマンド挿入処理
以下では、キャッシュ制御部5が実行する専用コマンドをソースプログラム72において指定するようにする組み込み関数について説明する。
図21(a)に示される関数は、引数で指定されるメインメモリ2の領域を事前にキャッシュメモリ3に先読みする処理(以下、「fill処理」ともいう。)と、ライトバックが必要なラインデータをライトバックする処理(以下、「writeback処理」ともいう。)とをキャッシュ制御部5に実行させる関数である。なお、引数では、変数名(変数の先頭アドレス)またはアドレスと、当該アドレスからのサイズとによりメインメモリ2の領域が指定される。
図21(c)に示される関数は、引数で指定されるメインメモリ2に対応するキャッシュエントリーを事前に確保するのみの処理(以下、「touch処理」ともいう。)と、writeback処理とをキャッシュ制御部5に実行させる関数である。
図21(e)に示される関数は、writeback処理と、引数で指定されたメインメモリ2の領域に対応するキャッシュメモリ3のキャッシュエントリーを無効にする処理(以下、「invalidate処理」ともいう。)とをキャッシュ制御部5に実行させる関数である。
図21(g)に示される関数は、touch処理をキャッシュ制御部5に実行させる関数である。
図21(h)に示される関数は、fill処理をキャッシュ制御部5に実行させる関数である。
キャッシュ制御部5に専用コマンドを実行させるためには、キャッシュ制御部5の専用レジスタTACSTADに対象となるメインメモリ2の領域の開始アドレスを登録し、専用レジスタTACTSZに開始アドレスからのサイズを登録し、専用レジスタTACMにコマンドを登録すればよい。
なお、fill処理を実行する組み込み関数の場合には、プリフェッチ命令挿入処理の場合と同様に、指定サイクル数またはデフォルトサイクル数前にfill処理を実行するような枠組みを設けてもよい。
以上説明したように本実施の形態に係るコンパイルシステムによると、キャッシュメモリ3における初期ミス、容量性ミスおよび競合性ミスを防止することが各種指定方法により可能となる。
2 メインメモリ
3 キャッシュメモリ
4 サブキャッシュメモリ
5 キャッシュ制御部
10 コンピュータ
50 プログラム開発システム
52 デバッガ
54 シミュレータ
56 プロファイラ
58 コンパイラ
60 キャッシュメモリ用シミュレータ
62 実行ログ情報
64 プロファイル情報
68 最適化部
72 ソースプログラム
76 パーサー部
78 中間コード変換部
84 タイリング部
86 プリフェッチ命令挿入部
87 配置セット情報設定部
88 キャッシュコマンド挿入部
90 コード生成部
92 機械語プログラム
94 チューニングヒント情報
Claims (6)
- 高級言語で記述されたソースプログラムを機械語プログラムに翻訳するコンパイラ装置であって、
生成する機械語プログラムを最適化する旨の指示を取得する指示取得手段と、
前記ソースプログラムを解析するパーサー手段と、
前記パーサー手段における解析結果に基づいて、前記ソースプログラムを中間コードに変換する中間コード変換手段と、
前記指示に従って、前記中間コードを最適化する最適化手段と、
前記中間コードを前記機械語プログラムに変換するコード生成手段とを備え、
前記機械語プログラムを実行するプロセッサは、キャッシュメモリを利用するプロセッサであり、
前記指示取得手段は、前記ソースプログラムの中において、特定のループ処理で実行されるループの回数を当該ループ処理で処理される配列データのオブジェクトが所定の容量ごとに前記キャッシュメモリに配置されるようなループの回数に分割して1つのループ処理を構成するよう、前記特定のループ処理を複数のループ処理に分割する旨の指示を取得し、
前記最適化手段は、前記指示取得手段によって取得された指示の対象となったループ処理を前記指示に従い複数のループ処理に分割する
ことを特徴とするコンパイラ装置。 - 高級言語で記述されたソースプログラムを機械語プログラムに翻訳するコンパイラ装置であって、
生成する機械語プログラムを最適化する旨の指示を取得する指示取得手段と、
前記ソースプログラムを解析するパーサー手段と、
前記パーサー手段における解析結果に基づいて、前記ソースプログラムを中間コードに変換する中間コード変換手段と、
前記指示に従って、前記中間コードを最適化する最適化手段と、
前記中間コードを前記機械語プログラムに変換するコード生成手段とを備え、
前記機械語プログラムを実行するプロセッサは、キャッシュメモリを利用するプロセッサであり、
前記指示取得手段は、前記ソースプログラムの中において、特定のループ処理で実行されるループの回数を当該ループ処理で処理される配列データのオブジェクトが指定された容量ごとに前記キャッシュメモリに配置されるようなループの回数に分割して1つのループ処理を構成するよう、前記特定のループ処理を複数のループ処理に分割する旨の指示を取得し、
前記最適化手段は、前記指示取得手段によって取得された指示の対象となったループ処理を前記指示に従い複数のループ処理に分割する
ことを特徴とするコンパイラ装置。 - 高級言語で記述されたソースプログラムを機械語プログラムに翻訳するコンパイラ装置であって、
生成する機械語プログラムを最適化する旨の指示を取得する指示取得手段と、
前記ソースプログラムを解析するパーサー手段と、
前記パーサー手段における解析結果に基づいて、前記ソースプログラムを中間コードに変換する中間コード変換手段と、
前記指示に従って、前記中間コードを最適化する最適化手段と、
前記中間コードを前記機械語プログラムに変換するコード生成手段とを備え、
前記機械語プログラムを実行するプロセッサは、キャッシュメモリを利用するプロセッサであり、
前記指示取得手段は、前記ソースプログラムの中において、特定のオブジェクトを、当該オブジェクト参照時までに前記キャッシュメモリに予め格納する旨の指示とサイクル数とを取得し、
前記最適化手段は、前記オブジェクトを前記キャッシュメモリに予め格納させる命令を前記オブジェクト参照時より前記指示取得手段で取得されたサイクル数だけ前に実行させるように、当該命令を生成する
ことを特徴とするコンパイラ装置。 - 高級言語で記述されたソースプログラムを機械語プログラムに翻訳するコンパイラ装置であって、
生成する機械語プログラムを最適化する旨の指示を取得する指示取得手段と、
前記ソースプログラムを解析するパーサー手段と、
前記パーサー手段における解析結果に基づいて、前記ソースプログラムを中間コードに変換する中間コード変換手段と、
前記指示に従って、前記中間コードを最適化する最適化手段と、
前記中間コードを前記機械語プログラムに変換するコード生成手段とを備え、
前記機械語プログラムを実行するプロセッサは、キャッシュメモリを利用するプロセッサであり、
前記指示取得手段は、前記ソースプログラムの中において、ループ処理内で使用される特定の配列を、当該配列の要素参照時までに前記キャッシュメモリに予め格納する旨の指示とサイクル数とを取得し、
前記最適化手段は、前記配列の要素を前記キャッシュメモリに予め格納させる命令を当該要素参照時より前記指示取得手段で取得されたサイクル数だけ前に実行させるように、当該命令を生成する
ことを特徴とするコンパイラ装置。 - 高級言語で記述されたソースプログラムを機械語プログラムに翻訳するコンパイラ装置であって、
生成する機械語プログラムを最適化する旨の指示を取得する指示取得手段と、
前記ソースプログラムを解析するパーサー手段と、
前記パーサー手段における解析結果に基づいて、前記ソースプログラムを中間コードに変換する中間コード変換手段と、
前記指示に従って、前記中間コードを最適化する最適化手段と、
前記中間コードを前記機械語プログラムに変換するコード生成手段とを備え、
前記機械語プログラムを実行するプロセッサは、キャッシュメモリを利用するプロセッサであり、
前記指示取得手段は、前記ソースプログラムを翻訳する旨の指示とともに、前記機械語プログラムの実行解析結果に基づいて前記キャッシュメモリへのヒットミスを起こしていると定められる特定のオブジェクトを、当該オブジェクト参照時までに前記キャッシュメモリに予め格納する旨のコンパイル時指示を取得し、
前記指示取得手段は、さらに、サイクル数を取得し、
前記最適化手段は、前記特定のオブジェクトを前記キャッシュメモリに予め格納させる命令を当該オブジェクト参照時より前記サイクル数だけ前に実行させるように、当該命令を生成する
ことを特徴とするコンパイラ装置。 - 請求項1〜5のいずれか1項に記載のコンパイラ装置の各手段としてコンピュータを機能させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003357323A JP4934267B2 (ja) | 2003-10-17 | 2003-10-17 | コンパイラ装置 |
US10/944,831 US7571432B2 (en) | 2003-10-17 | 2004-09-21 | Compiler apparatus for optimizing high-level language programs using directives |
CNB2004100852686A CN1302385C (zh) | 2003-10-17 | 2004-10-18 | 编译装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003357323A JP4934267B2 (ja) | 2003-10-17 | 2003-10-17 | コンパイラ装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010283836A Division JP5238797B2 (ja) | 2010-12-20 | 2010-12-20 | コンパイラ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005122506A JP2005122506A (ja) | 2005-05-12 |
JP4934267B2 true JP4934267B2 (ja) | 2012-05-16 |
Family
ID=34509826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003357323A Expired - Lifetime JP4934267B2 (ja) | 2003-10-17 | 2003-10-17 | コンパイラ装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7571432B2 (ja) |
JP (1) | JP4934267B2 (ja) |
CN (1) | CN1302385C (ja) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3847672B2 (ja) * | 2002-07-03 | 2006-11-22 | 松下電器産業株式会社 | コンパイラ装置及びコンパイル方法 |
JP3973597B2 (ja) * | 2003-05-14 | 2007-09-12 | 株式会社ソニー・コンピュータエンタテインメント | プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 |
JP2006107338A (ja) * | 2004-10-08 | 2006-04-20 | Matsushita Electric Ind Co Ltd | プログラム処理装置 |
US7647514B2 (en) * | 2005-08-05 | 2010-01-12 | Fujitsu Limited | Reducing power consumption at a cache |
US20070083783A1 (en) * | 2005-08-05 | 2007-04-12 | Toru Ishihara | Reducing power consumption at a cache |
US8490065B2 (en) * | 2005-10-13 | 2013-07-16 | International Business Machines Corporation | Method and apparatus for software-assisted data cache and prefetch control |
JP4860240B2 (ja) * | 2005-11-11 | 2012-01-25 | パナソニック株式会社 | 翻訳方法および実行通知命令の埋め込み方法 |
CN1859591B (zh) * | 2005-12-28 | 2010-06-02 | 华为技术有限公司 | 一种智能网服务应用方法和系统 |
US8266605B2 (en) * | 2006-02-22 | 2012-09-11 | Wind River Systems, Inc. | Method and system for optimizing performance based on cache analysis |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US7836096B2 (en) * | 2006-12-14 | 2010-11-16 | International Business Machines Corporation | Method and system using date/time mutation to return data to Java applications |
JP4940996B2 (ja) * | 2007-02-23 | 2012-05-30 | 富士通セミコンダクター株式会社 | プロファイリング装置およびプロファイリングプログラム |
US8886887B2 (en) * | 2007-03-15 | 2014-11-11 | International Business Machines Corporation | Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization |
JP5226328B2 (ja) * | 2007-03-27 | 2013-07-03 | パナソニック株式会社 | コード変換装置 |
CN101335960B (zh) * | 2007-06-26 | 2013-05-01 | 英华达(上海)电子有限公司 | 一种实现手机自动测试的方法和系统 |
US8359586B1 (en) * | 2007-08-20 | 2013-01-22 | The Mathworks, Inc. | Code generation |
US8122442B2 (en) * | 2008-01-31 | 2012-02-21 | Oracle America, Inc. | Method and system for array optimization |
US8561043B2 (en) * | 2008-03-28 | 2013-10-15 | International Business Machines Corporation | Data transfer optimized software cache for irregular memory references |
US8136103B2 (en) * | 2008-03-28 | 2012-03-13 | International Business Machines Corporation | Combining static and dynamic compilation to remove delinquent loads |
US8527974B2 (en) * | 2008-03-28 | 2013-09-03 | International Business Machines Corporation | Data transfer optimized software cache for regular memory references |
US8561044B2 (en) * | 2008-10-07 | 2013-10-15 | International Business Machines Corporation | Optimized code generation targeting a high locality software cache |
JP5576605B2 (ja) * | 2008-12-25 | 2014-08-20 | パナソニック株式会社 | プログラム変換装置およびプログラム変換方法 |
US8701098B2 (en) * | 2009-04-02 | 2014-04-15 | International Business Machines Corporation | Leveraging multicore systems when compiling procedures |
JP5428476B2 (ja) * | 2009-04-02 | 2014-02-26 | 富士通株式会社 | プリフェッチ生成プログラムおよびコンパイラ装置 |
JP2011170439A (ja) * | 2010-02-16 | 2011-09-01 | Nec Corp | コンパイラ、コンパイル方法、及びコンパイル実行プログラム |
US9081586B2 (en) * | 2011-11-29 | 2015-07-14 | Futurewei Technologies, Inc. | Systems and methods for customizing optimization/transformation/ processing strategies |
US9134980B1 (en) * | 2012-05-01 | 2015-09-15 | Amazon Technologies, Inc. | Compiler optimization in a computing environment |
US9411715B2 (en) * | 2012-12-12 | 2016-08-09 | Nvidia Corporation | System, method, and computer program product for optimizing the management of thread stack memory |
CN104063258B (zh) * | 2013-03-21 | 2017-05-03 | 国际商业机器公司 | 用于调试过程中的代码动态切换的方法和系统 |
JP6201788B2 (ja) * | 2014-01-29 | 2017-09-27 | 富士通株式会社 | ループ分割検出プログラム及びループ分割検出方法 |
KR102063966B1 (ko) * | 2015-10-21 | 2020-01-09 | 엘에스산전 주식회사 | Plc 명령어 컴파일 최적화 방법 |
JP6981087B2 (ja) * | 2017-08-03 | 2021-12-15 | 富士通株式会社 | 情報処理装置、方法、及びプログラム |
CN108021370B (zh) * | 2017-12-26 | 2020-05-12 | 网易(杭州)网络有限公司 | 字节码的优化方法、装置、存储介质、处理器及终端 |
JP6890557B2 (ja) * | 2018-01-17 | 2021-06-18 | 株式会社日立製作所 | 分析モデル作成システム、プログラミング装置および分析モデル作成方法 |
JP7335591B2 (ja) * | 2019-07-22 | 2023-08-30 | コネクトフリー株式会社 | コンピューティングシステムおよび情報処理方法 |
CN112333482B (zh) * | 2019-08-05 | 2023-01-06 | 广州虎牙科技有限公司 | 一种列表的处理方法、装置、设备和存储介质 |
US11080029B2 (en) | 2019-08-28 | 2021-08-03 | Red Hat, Inc. | Configuration management through information and code injection at compile time |
CN110865814B (zh) * | 2019-10-30 | 2021-11-16 | 上海天数智芯半导体有限公司 | 一种支持异构计算核架构的编译器实现方法和系统 |
US11347486B2 (en) * | 2020-03-27 | 2022-05-31 | Advanced Micro Devices, Inc. | Compiler-initiated tile replacement to enable hardware acceleration resources |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03184126A (ja) * | 1989-12-13 | 1991-08-12 | Hitachi Ltd | コンパイラおよびプログラムの命令コードの配置方法 |
US5303377A (en) * | 1990-03-27 | 1994-04-12 | North American Philips Corporation | Method for compiling computer instructions for increasing instruction cache efficiency |
JPH04365133A (ja) * | 1991-06-13 | 1992-12-17 | Fujitsu Ltd | プレロード命令実行装置及びプログラム修正装置 |
JPH05120029A (ja) * | 1991-10-29 | 1993-05-18 | Hitachi Ltd | 最適化方法 |
JP2677482B2 (ja) * | 1992-03-18 | 1997-11-17 | 富士通株式会社 | 計算機言語処理方法 |
JP3186867B2 (ja) * | 1992-10-30 | 2001-07-11 | 株式会社日立製作所 | キャッシュメモリ構成判別方法および計算機システム |
US5452457A (en) * | 1993-01-29 | 1995-09-19 | International Business Machines Corporation | Program construct and methods/systems for optimizing assembled code for execution |
JP2636665B2 (ja) * | 1993-02-26 | 1997-07-30 | 日本電気株式会社 | 実行情報採取装置 |
JP3417984B2 (ja) * | 1993-09-10 | 2003-06-16 | 株式会社日立製作所 | キャッシュ競合削減コンパイル方法 |
JPH0883213A (ja) * | 1994-09-14 | 1996-03-26 | Mitsubishi Electric Corp | キャッシュメモリを含む記憶装置 |
JPH08166884A (ja) * | 1994-10-13 | 1996-06-25 | Hudson Soft Co Ltd | コンパイラ方式 |
JPH08328870A (ja) * | 1995-05-30 | 1996-12-13 | Fujitsu Ltd | コンパイル処理装置 |
EP0752645B1 (en) * | 1995-07-07 | 2017-11-22 | Oracle America, Inc. | Tunable software control of Harvard architecture cache memories using prefetch instructions |
JPH10285146A (ja) | 1997-03-31 | 1998-10-23 | Ando Electric Co Ltd | ビット誤り測定回路 |
JP3156761B2 (ja) * | 1997-06-04 | 2001-04-16 | 日本電気株式会社 | ノンブロッキングキャッシュ対応のコードスケジューリング方式及びそのプログラムを記録した記憶媒体 |
JPH1173329A (ja) * | 1997-06-24 | 1999-03-16 | Matsushita Electric Ind Co Ltd | ソフトウエア開発支援システム |
JP3177950B2 (ja) * | 1997-09-19 | 2001-06-18 | 日本電気株式会社 | キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体 |
US6401187B1 (en) * | 1997-12-10 | 2002-06-04 | Hitachi, Ltd. | Memory access optimizing method |
JP3178403B2 (ja) * | 1998-02-16 | 2001-06-18 | 日本電気株式会社 | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 |
JP3913895B2 (ja) * | 1998-04-17 | 2007-05-09 | 富士通株式会社 | 命令キャッシュ制御装置および記録媒体 |
KR100285734B1 (ko) * | 1998-06-23 | 2001-04-02 | 윤종용 | 기지국시스템의다중섹터화장치 |
JP2000207224A (ja) * | 1999-01-14 | 2000-07-28 | Hitachi Ltd | ソフトウェアプリフェッチ方法 |
US6341371B1 (en) * | 1999-02-23 | 2002-01-22 | International Business Machines Corporation | System and method for optimizing program execution in a computer system |
US6367071B1 (en) * | 1999-03-02 | 2002-04-02 | Lucent Technologies Inc. | Compiler optimization techniques for exploiting a zero overhead loop mechanism |
JP2002024029A (ja) * | 2000-07-11 | 2002-01-25 | Toshiba Corp | コンパイラ、コンパイル方法及びコンパイルプログラムを記録したコンピュータ読み取り可能な記録媒体 |
WO2002008911A1 (fr) * | 2000-07-24 | 2002-01-31 | Hitachi,Ltd | Systeme de traitement de donnees |
US20060206874A1 (en) * | 2000-08-30 | 2006-09-14 | Klein Dean A | System and method for determining the cacheability of code at the time of compiling |
JP2002099427A (ja) * | 2000-09-25 | 2002-04-05 | Toshiba Corp | プログラムの開発方法、プログラムの開発システム及びマイクロプロセッサ |
US6587920B2 (en) * | 2000-11-30 | 2003-07-01 | Mosaid Technologies Incorporated | Method and apparatus for reducing latency in a memory system |
JP2002182926A (ja) * | 2000-12-12 | 2002-06-28 | Hitachi Ltd | コンパイル方法及びコンピュータ読み取り可能な記録媒体 |
US6499085B2 (en) * | 2000-12-29 | 2002-12-24 | Intel Corporation | Method and system for servicing cache line in response to partial cache line request |
JP2003099269A (ja) | 2001-09-26 | 2003-04-04 | Hitachi Ltd | コンパイル方法、コンパイル装置およびコンパイルを行うプログラム |
JP2004021425A (ja) * | 2002-06-13 | 2004-01-22 | Hitachi Ltd | コンパイラにおけるメモリ配置方式 |
US7237064B2 (en) * | 2003-10-10 | 2007-06-26 | Intel Corporation | Method and apparatus for feedback-based management of combined heap and compiled code caches |
-
2003
- 2003-10-17 JP JP2003357323A patent/JP4934267B2/ja not_active Expired - Lifetime
-
2004
- 2004-09-21 US US10/944,831 patent/US7571432B2/en active Active
- 2004-10-18 CN CNB2004100852686A patent/CN1302385C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN1302385C (zh) | 2007-02-28 |
CN1609805A (zh) | 2005-04-27 |
US7571432B2 (en) | 2009-08-04 |
JP2005122506A (ja) | 2005-05-12 |
US20050086653A1 (en) | 2005-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4934267B2 (ja) | コンパイラ装置 | |
US5805863A (en) | Memory pattern analysis tool for use in optimizing computer program code | |
JP2006260096A (ja) | プログラム変換方法およびプログラム変換装置 | |
US6970985B2 (en) | Statically speculative memory accessing | |
US9798528B2 (en) | Software solution for cooperative memory-side and processor-side data prefetching | |
US6721943B2 (en) | Compile-time memory coalescing for dynamic arrays | |
JP4844971B2 (ja) | インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置 | |
US20040205740A1 (en) | Method for collection of memory reference information and memory disambiguation | |
US20060206874A1 (en) | System and method for determining the cacheability of code at the time of compiling | |
US7243195B2 (en) | Software managed cache optimization system and method for multi-processing systems | |
US20050071572A1 (en) | Computer system, compiler apparatus, and operating system | |
US8886887B2 (en) | Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization | |
US20060048121A1 (en) | Method and apparatus for a generic language interface to apply loop optimization transformations | |
JPH09330233A (ja) | 最適目的コード生成方法 | |
US8266605B2 (en) | Method and system for optimizing performance based on cache analysis | |
CN111159062A (zh) | 一种缓存数据的调度方法、装置、cpu芯片及服务器 | |
US6260191B1 (en) | User controlled relaxation of optimization constraints related to volatile memory references | |
JP4047788B2 (ja) | コンパイラ装置およびリンカ装置 | |
JP5238797B2 (ja) | コンパイラ装置 | |
US20110145503A1 (en) | On-line optimization of software instruction cache | |
US7313787B2 (en) | Compiler and method for optimizing object codes for hierarchical memories | |
Lee et al. | A code isolator: Isolating code fragments from large programs | |
JP2014112327A (ja) | 変換プログラム、変換装置及び変換方法 | |
JPH08161169A (ja) | Vliw方式の計算機システム及びvliwの解釈・実行方法 | |
Besnard et al. | A framework for automatic and parameterizable memoization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060726 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091117 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100118 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100928 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101220 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20101224 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20110121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120116 |
|
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: 20120220 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4934267 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: 20150224 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |