JP2012203581A - レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 - Google Patents
レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 Download PDFInfo
- Publication number
- JP2012203581A JP2012203581A JP2011066636A JP2011066636A JP2012203581A JP 2012203581 A JP2012203581 A JP 2012203581A JP 2011066636 A JP2011066636 A JP 2011066636A JP 2011066636 A JP2011066636 A JP 2011066636A JP 2012203581 A JP2012203581 A JP 2012203581A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- register
- information
- conversion table
- instruction code
- 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
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、その変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的にレジスタに配置されるように、変数の配置先をレジスタ又はメモリに決定し、決定された変数の配置先を、変換テーブルに含まれる変数の配置先の情報に反映し、変換テーブルに含まれる変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、プロセッサコアが実行可能な命令コードに変換し、変換された命令コードをプロセッサコアが実行する際に使用される変数に応じて、変換テーブルに含まれる変数の使用頻度の情報を更新する。
【選択図】図14
Description
例えば、プロセッサの命令フェッチ部からデコード部への命令伝達経路において、命令フェッチ部にフェッチされた命令がバイトコードのときに、それがバイトコードアクセレータに供給されてネイティブコードに変換され、後段へ出力されるようにした技術がある。
図1は、データ処理装置の一例を示す図である。
図1に示したデータ処理装置は、プロセッサCPU(Central Processing Unit)部110、メインメモリ部120、メモリコントローラ部130、周辺入出力I/F(InterFace)部140、通信I/F(InterFace)部150、及びシステムバス160を含む。
メモリコントローラ部130は、メインメモリ部120のRead/Write制御を行う。
システムバス160は、プロセッサCPU部110、メモリコントローラ部130、周辺入出力I/F部140、及び通信I/F部150等と接続されるアドレス/データバスである。
命令コードとして処理順序が記述されている処理プログラムは、図2に示したように、関数やサブルーチンモジュール(例えば関数[1]〜関数[n])に分割されており、これらを連携させて全体機能を実現する。各関数内で使用される変数は、レジスタ112又はメモリ(内部メモリ116又はメインメモリ部120)に配置され、演算命令のオペランドとして指定される。図2に示した例では、例えば関数[1]において、演算命令のオペランドとして指定される変数[1]〜変数[6]は、レジスタ(レジスタ−1〜レジスタ−5)112に配置されることを示している。また、変数[7]及び変数[8]は、メモリ(内部メモリ116又はメインメモリ部120)に配置されることを示している。
図4は、変数の配置方法についての課題の一例を示す図である。
図4に示したように、変数の使用頻度や使用順は、関数内の何れの処理ルート(処理ルートA〜C)を通ったかにより異なる。これは、関数内では入力されるデータの特徴に応じた処理が行われるため、入力データが変化すると処理ルートが異なってしまうからである。従って、平均点なデータが入力される場合の処理ルート(例えば処理ルートC)で使用される変数をメインにレジスタに配置する等してレジスタ配置を最適化し、総合的に最適となるような変数の配置を行う必要がある。しかしながら、これでは、平均的でないデータが入力された場合の処理ルート(例えば処理ルートA又はB)では、レジスタが適正に使用されず、処理速度が低下する要因となってしまう。
図5に示したように、技術例1では、プロセッサの命令伝達経路において、次のような動作が行われる。まず、命令キャッシュ(CASHE)171から読み出された命令コードが命令フェッチ部(FETc)172において分別され、それが浮動小数点バイトコードである場合には、それがバイトコードアクセラレータ部(BCA)173へ出力される。そして、そこでレジスタ間転送命令に変換され、それがセレクター174を介してデコード部(DECc、DECf)175へ出力される。技術例1では、このような動作により、処理の高速化を図っている。なお、デコード部175において、DECc は全ての命令をデコードし、DECf は浮動小数点命令を認識してデコードする。
技術例1では、上述のように、一部の命令コードに対して変換を行う方式である。そのため、図6に示したように、例えば、入力データAの場合は、浮動小数点演算が有りとなって配置先の変換が行われ、有効な方式となる。しかしながら、入力データが変化した入力データBの場合は、処理ルートが変更され浮動小数点演算が無しとなり、この場合は高速化の効果はない。このように、技術例1では、入力データによって浮動少数点演算の有無が固定的に決まるものであり、それを動的に変更することはできない。
図7に示したように、技術例2では、プログラム変換装置において、次のような動作が行われる。まず、処理プログラム(アセンブラコード)が読み込まれて解析され、変数の存在区間の長さや変数の存在するループレベルの総和が算出され、その算出結果に基づいて各変数の割付優先度が算出される。そして、その算出結果に基づいて変数の配置先が変換される。技術例2では、このような動作により、処理の高速化を図っている。
技術例2では、上述のように、処理プログラム(アセンブラコード)の解析が行われ、そのコード上での変数の存在区間の長さや変数の存在するループレベルの総和に基づいて配置が決定され、処理プログラムが実行される。そのため、図8に示したように、例えば、処理プログラムの中で最も多く使用されている変数が変数Xと判断され(図8のA参照)、変数Xの配置先がレジスタとされたとする。しかしながら、その後、入力データが変更され、その処理を行う実行ルートにおいて最も多く使用されている変数が、変数Xではなく変数Yになる場合がある(図8のBの網掛け部参照)。このように、入力データが変更され、処理プログラムの実行ルートが変更された場合に、技術例2では、使用される変数の存在区間やループ回数の変更に対応できない。
図9に示したように、この場合には、処理プログラム(アセンブラコード等)が読み込まれて、その命令の種類(浮動小数点)や、変数の存在区間の長さや変数の存在するループレベルの総和に基づいて配置先の変換が行われる。しかしながら、この場合には、入力データに応じて変化する関数内の変数の使用頻度によってレジスタとメモリの割り振りを変更(最適化)することができない。
図10は、本実施例に係るレジスタ配置最適化装置を含むデータ処理装置の一例を示す図である。
命令変換ユニット117は、変換マップテーブル118に含まれる各変数の配置先の情報に基づいて、擬似命令コードを、プロセッサコア111が解釈可能な(実行可能な)命令コード(以下「通常の命令コード」ともいう)に変換する。すなわち、演算命令のオペランドの配置先がレジスタ112であるのかメモリ(内部メモリ116又はメインメモリ部120)であるのかが明示されていない抽象化された擬似命令コードを、それが明示された通常の命令コードに変換する。そして、変換された命令コードを命令キャッシュ113にロードする。また、命令変換ユニット117は、詳しくは後述するように、変換マップテーブル118の更新等の処理も行う。
図11に示した例は、命令変換ユニット117が、変換マップテーブル118に含まれる各変数の配置先の情報に基づいて、擬似命令コードである加算命令「ADD val0, val1」を、通常の命令コードである加算命令「add r0, r1」又は「add (mem0), r1」に変換した例である。
図12に示したように、変換マップテーブル118は、処理プログラム内の各関数に定義されている各変数の配置先、平均使用頻度、過去の使用頻度等の情報を含む。但し、図12では、過去の使用頻度の情報を省略して示している。
まず、処理プログラム起動時において、各変数の配置先の情報は、例えば、処理プログラム中の各関数内での変数の定義順等によって優先度を設け、その優先度に応じてレジスタ112又はメモリ(内部メモリ116又はメインメモリ部120)に決定される。また、各変数の平均使用頻度及び過去の使用頻度の情報は0とされる。
図13に示したように、図示しない命令キャッシュ113のコントローラによってリード要求(命令コードのロード指示)が行われると(S101)、次のような動作が行われる。まず、このリード要求に応じて、プロセッサコア111が命令コードを実行するために必要な擬似命令コードがメインメモリ部120の処理プログラム格納領域121からリードされ、命令変換ユニット117へ転送される(S102)。命令変換ユニット117では、変換マップテーブル118に含まれる各変数の配置先の情報に基づいて、オペランド変換により、転送された擬似命令コードが通常の命令コードに変換される(S103)。また、変換された命令コードがプロセッサコア111により実行されて変数が使用されると、その変数についての過去の使用頻度がインクリメントされるように、変換マップテーブル118に含まれる過去の使用頻度の情報が更新される(S104)。なお、変換マップテーブル118において、このようにしてインクリメントされた過去の使用頻度の情報は、詳しくは後述するように、平均使用頻度の情報を更新する際に使用される。
処理プログラムの実行によって行われるデータ処理は、連続するデータ処理を含む場合がある。一般的に、連続するデータ処理では、一定の処理の区切りを1単位(1処理ユニット)として、それを繰返し実行することで全体処理を実現する。例えば、動画像処理では1画面分の処理を1単位としてこれを繰り返し実行することで、物体認識処理や画像圧縮処理等といった画像処理を実現している。ここでは、そのような連続するデータ処理が行われる場合における変換マップテーブル118の更新手順の一例を説明する。
図15に示した処理は、上述の再配置処理(S201)において、1処理ユニット内の各関数に対して行われる処理である。
なお、図16に示した例は、変数Aのソースコード上の使用終了タイミングが全変数中で最長となっているものの、実際の実行時には判定文のfalse側の処理ルートで使用されておりtrue側の処理ルートでは使用されていない場合の例である。また、図16において、R0、R1は、レジスタに含まれる領域を示す。
図17は、本実施例に係るレジスタ配置最適化装置を含む画像符号化装置の構成例を示す図である。
図18は、図17に示した画像符号化装置の処理の流れの概要を模式的に示す図である。
図19に示したように、カメラ等からの入力画像データは、ビデオ入力I/F部220等を介して、メインメモリ部120の処理データ格納領域122に蓄積され、画像保存が行われる(S401)。次に、メインメモリ部120の処理プログラム格納領域121に格納されている処理プログラム(擬似命令コードを含む)が処理画像単位で起動し(S402)、命令変換ユニット117にロードされる。命令変換ユニット117では、変換マップテーブル118が参照され(S403)、処理プログラム内の各関数に定義されている各変数の配置先が決定される(S404)。また、擬似命令コードが通常の命令コードに変換される(S405)。変換された命令コードは命令キャッシュ113へ転送され、その後、プロセッサコア111により読み出されて、その命令コードの実行が行われる(S406)。一方、命令変換ユニット117では、プロセッサコア111により命令コードが実行されて変数が使用されると、その変数の使用頻度がインクリメントされる(S407)等して変換マップテーブル118に含まれる情報が更新される。そして、このようにして処理プログラムが実行され、それにより作成された出力データ(画像データ等)は、例えば、通信I/F部150又はビデオ出力I/F部230を介して、通信回線や外部のディスプレイ等に出力される(S408)。
図20は、従来の場合のプログラム開発期間と、本実施例に係るレジスタ配置最適化装置を採用した場合のプログラム開発期間との一例を示す図である。
実施例2に係るレジスタ配置最適化装置は、入力データ特徴算出部を更に含むと共に、変換マップテーブル118として複数の変換マップテーブルを含むことが、実施例1に係るレジスタ配置最適化装置と異なる。なお、入力データ特徴算出部はテーブル選択部の一例である。
図22は、本実施例に係るレジスタ配置最適化装置を含む画像符号化装置の構成例を示す図である。
図23は、図22に示した画像符号化装置の処理の流れの概要を模式的に示す図である。
図24に示したように、カメラ等からの入力画像データは、ビデオ入力I/F部220等を介して、メインメモリ部120の処理データ格納領域122に蓄積され、画像保存が行われる(S801)。次に、メインメモリ部120の処理プログラム格納領域121に格納されている処理プログラム(擬似命令コードを含む)が処理画像単位で起動し(S802)、命令変換ユニット117にロードされる。入力画像特徴算出ユニット311では、入力画像データの差分(フレーム内差分又はフレーム間差分)が算出される(S803)。また、その算出結果に応じて、対応する変換マップテーブル118の選択又は変換マップテーブル118の変更無しの通知が命令変換ユニット117に対して行われる(S804)。命令変換ユニット117では、入力画像特徴算出ユニット311からの通知に応じて、対応する変換マップテーブル118が選択、参照され(S805)、処理プログラム内の各関数に定義されている各変数の配置先が決定される(S806)。また、擬似命令コードが通常の命令コードに変換される(S807)。変換された命令コードは命令キャッシュ113へ転送され、その後、プロセッサコア111により読み出されて、その命令コードの実行が行われる(S808)。一方、命令変換ユニット117では、プロセッサコア111により命令コードが実行されて変数が使用されると、その変数の使用頻度がインクリメントされる(S809)等して変換マップテーブル118に含まれる情報が更新される。そして、このようにして処理プログラムが実行され、それにより作成された出力データ(画像データ等)は、例えば、通信I/F部150又はビデオ出力I/F部230を介して、通信回線や外部のディスプレイ等に出力される(S810)。
例えば、入力画像特徴算出ユニット311は、選択した変換マップテーブル118に対応する変換マップテーブル選択値の情報を命令変換ユニット117へ通知する。これを受けた命令変換ユニットは、その変換マップテーブル選択値の情報に基づいて、対応する変換マップテーブル118を選択する。なお、この場合、複数の変換マップテーブル118の各々には、対応する変換マップテーブル選択値の情報が含まれている。
図25に示したように、複数の変換マップテーブル118の各々は、対応する変換マップテーブル選択値の情報を含む。例えば、変換マップテーブル118aは、変換マップテーブル選択値が「1」である情報を含み、変換マップテーブル118bは、変換マップテーブル選択値が「2」である情報を含む。なお、図25に示した変換マップテーブル118a、118bでは、過去の使用頻度の情報を省略して示している。
また、本実施例に係るレジスタ配置最適化装置を含む画像処理装置においては、例えば、複数フレームの画像が入力された場合に、その複数フレームの画像の特徴に応じた高速化が可能になる。
図26は、そのコンピュータシステムの構成例を示す図である。
例えば、実施例1に係るレジスタ配置最適化装置を本コンピュータシステムにより実現する場合には、記憶装置405、またはROM402に、命令変換ユニット117等が行う動作(処理)のためのプログラム等が格納される。また、RAM403には、変換マップテーブル118等が格納される。そして、そのプログラムがCPU401によって実行されることにより、実施例1に係るレジスタ配置最適化装置が実現される。
以上、実施例を説明したが、本発明は、上述した実施例に限定されることなく、本発明の要旨を逸脱しない範囲内で種々の改良・変更が可能である。
(付記1)
命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する方法であって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
ことを特徴とするレジスタ配置最適化方法。
(付記2)
前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
前記決定では、前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
前記更新では、前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
ことを特徴とする付記1記載のレジスタ配置最適化方法。
(付記3)
前記変換テーブルは、複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じて選択された変換テーブルである、
ことを特徴とする付記1又は2記載のレジスタ配置最適化方法。
(付記4)
前記入力データは画像データであり、
前記選択された変換テーブルは、前記画像データのフレーム内差分又はフレーム間差分に応じて選択された変換テーブルである、
ことを特徴とする付記3記載のレジスタ配置最適化方法。
(付記5)
命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化するプログラムであって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
という処理をコンピュータに実行させるレジスタ配置最適化プログラム。
(付記6)
前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
前記決定では、前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
前記更新では、前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
ことを特徴とする付記5記載のレジスタ配置最適化プログラム。
(付記7)
前記変換テーブルは、複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じて選択された変換テーブルである、
ことを特徴とする付記5又は6記載のレジスタ配置最適化プログラム。
(付記8)
前記入力データは画像データであり、
前記選択された変換テーブルは、前記画像データのフレーム内差分又はフレーム間差分に応じて選択された変換テーブルである、
ことを特徴とする付記7記載のレジスタ配置最適化プログラム。
(付記9)
命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する装置であって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルと、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換する命令変換部と、
を備え、
前記命令変換部は、
前記変換テーブルに含まれる前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
ことを特徴とするレジスタ配置最適化装置。
(付記10)
前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
前記命令変換部は、
前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
ことを特徴とする付記9記載のレジスタ配置最適化装置。
(付記11)
複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じた変換テーブルを選択するテーブル選択部を更に備え、
前記命令変換部が参照、更新する変換テーブルは、前記テーブル選択部により選択された変換テーブルである、
ことを特徴とする付記9又は10記載のレジスタ配置最適化装置。
(付記12)
前記入力データは画像データであり、
前記テーブル選択部は、前記複数の変換テーブルの中から、前記プロセッサが処理する画像データのフレーム内差分又はフレーム間差分に応じた変換テーブルを選択する、
ことを特徴とする付記11記載のレジスタ配置最適化装置。
111 プロセッサコア
112 レジスタ
113 命令キャッシュ
114 データキャッシュ
115 システムバスコントローラ
116 内部メモリ
117 命令変換ユニット
118 変換マップテーブル
120 メインメモリ部
121 処理プログラム格納領域
122 処理データ格納領域
123 処理結果格納領域
130 メモリコントローラ部
140 周辺入出力IF部
150 通信IF部
160 システムバス
171 命令キャッシュ
172 命令フェッチ部
173 バイトコードアクセレータ部173
174 セレクター
175 デコード部
210 画像処理プロセッサ
220 ビデオ入力I/F部
230 ビデオ出力I/F部
311 入力画像特徴算出ユニット
Claims (6)
- 命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する方法であって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
ことを特徴とするレジスタ配置最適化方法。 - 前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
前記決定では、前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
前記更新では、前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
ことを特徴とする請求項1記載のレジスタ配置最適化方法。 - 前記変換テーブルは、複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じて選択された変換テーブルである、
ことを特徴とする請求項1又は2記載のレジスタ配置最適化方法。 - 前記入力データは画像データであり、
前記選択された変換テーブルは、前記画像データのフレーム内差分又はフレーム間差分に応じて選択された変換テーブルである、
ことを特徴とする請求項3記載のレジスタ配置最適化方法。 - 命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化するプログラムであって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
という処理をコンピュータに実行させるレジスタ配置最適化プログラム。 - 命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する装置であって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルと、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換する命令変換部と、
を備え、
前記命令変換部は、
前記変換テーブルに含まれる前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
ことを特徴とするレジスタ配置最適化装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011066636A JP5630352B2 (ja) | 2011-03-24 | 2011-03-24 | レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011066636A JP5630352B2 (ja) | 2011-03-24 | 2011-03-24 | レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2012203581A true JP2012203581A (ja) | 2012-10-22 |
| JP5630352B2 JP5630352B2 (ja) | 2014-11-26 |
Family
ID=47184545
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2011066636A Expired - Fee Related JP5630352B2 (ja) | 2011-03-24 | 2011-03-24 | レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5630352B2 (ja) |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6182243A (ja) * | 1984-09-29 | 1986-04-25 | Toshiba Corp | オブジエクトプログラム生成方法 |
| JPS62219130A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | プログラムの最適化方式 |
| JPH02194439A (ja) * | 1989-01-24 | 1990-08-01 | Nec Corp | プログラム実行方式 |
| JP2000339171A (ja) * | 1999-05-27 | 2000-12-08 | Nec Ic Microcomput Syst Ltd | コンパイル装置、方法及び記録媒体 |
| JP2003271392A (ja) * | 2002-03-15 | 2003-09-26 | Hitachi Ltd | レジスタ割り付け方法 |
| JP2006295521A (ja) * | 2005-04-11 | 2006-10-26 | Olympus Corp | 動画像圧縮装置および動画像撮像装置 |
| JP2009141694A (ja) * | 2007-12-06 | 2009-06-25 | Canon Inc | 画像処理装置、方法及びプログラム |
-
2011
- 2011-03-24 JP JP2011066636A patent/JP5630352B2/ja not_active Expired - Fee Related
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6182243A (ja) * | 1984-09-29 | 1986-04-25 | Toshiba Corp | オブジエクトプログラム生成方法 |
| JPS62219130A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | プログラムの最適化方式 |
| JPH02194439A (ja) * | 1989-01-24 | 1990-08-01 | Nec Corp | プログラム実行方式 |
| JP2000339171A (ja) * | 1999-05-27 | 2000-12-08 | Nec Ic Microcomput Syst Ltd | コンパイル装置、方法及び記録媒体 |
| JP2003271392A (ja) * | 2002-03-15 | 2003-09-26 | Hitachi Ltd | レジスタ割り付け方法 |
| JP2006295521A (ja) * | 2005-04-11 | 2006-10-26 | Olympus Corp | 動画像圧縮装置および動画像撮像装置 |
| JP2009141694A (ja) * | 2007-12-06 | 2009-06-25 | Canon Inc | 画像処理装置、方法及びプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP5630352B2 (ja) | 2014-11-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7577826B2 (en) | Stall prediction thread management | |
| JP6591978B2 (ja) | 命令セット変換システム及び方法 | |
| US9244883B2 (en) | Reconfigurable processor and method of reconfiguring the same | |
| US7395410B2 (en) | Processor system with an improved instruction decode control unit that controls data transfer between processor and coprocessor | |
| US8601239B2 (en) | Extended register addressing using prefix instruction | |
| CN110806900B (zh) | 一种访存指令处理方法及处理器 | |
| JP6398725B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイラ装置 | |
| KR20210011494A (ko) | 동작 캐시 및 명령 캐시 인출과 디코딩 명령을 위한 낮은 레이턴시 동기화 | |
| TW201502980A (zh) | 為產生轉換的簡析碼部分 | |
| US9946546B2 (en) | Processor and instruction code generation device | |
| CN117785043A (zh) | 用于芯片的数据读取方法、芯片、计算机设备及存储介质 | |
| CN101251793B (zh) | 信息处理设备 | |
| JP6119523B2 (ja) | 演算処理装置、演算処理装置の制御方法及びプログラム | |
| US8510529B2 (en) | Method for generating program and method for operating system | |
| JP2011257800A (ja) | キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法 | |
| US7937564B1 (en) | Emit vector optimization of a trace | |
| JPWO2010109751A1 (ja) | コンパイルシステム、コンパイル方法およびコンパイルプログラム | |
| US20050149912A1 (en) | Dynamic online optimizer | |
| JP5630352B2 (ja) | レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 | |
| US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
| KR102534646B1 (ko) | 임시적 로드 명령을 위한 시스템, 장치, 및 방법 | |
| JP3835764B2 (ja) | プロセッサおよび記録媒体 | |
| US20250306929A1 (en) | Cache device and method for controlling cache device | |
| CN111124494B (zh) | 一种cpu中加速无条件跳转的方法及电路 | |
| JP2012226486A (ja) | ベクトル処理装置、システムおよびベクトル処理装置の動作方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140108 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140819 |
|
| 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: 20140909 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140922 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5630352 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |