JP2012203581A - レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 - Google Patents

レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 Download PDF

Info

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
Application number
JP2011066636A
Other languages
English (en)
Other versions
JP5630352B2 (ja
Inventor
Hirobumi Kamimaru
博文 神丸
Yuji Nagano
裕二 永野
Masahiro Sumiya
政宏 角谷
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011066636A priority Critical patent/JP5630352B2/ja
Publication of JP2012203581A publication Critical patent/JP2012203581A/ja
Application granted granted Critical
Publication of JP5630352B2 publication Critical patent/JP5630352B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】入力データが変化しても処理の高速化を図れるようにする。
【解決手段】プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、その変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的にレジスタに配置されるように、変数の配置先をレジスタ又はメモリに決定し、決定された変数の配置先を、変換テーブルに含まれる変数の配置先の情報に反映し、変換テーブルに含まれる変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、プロセッサコアが実行可能な命令コードに変換し、変換された命令コードをプロセッサコアが実行する際に使用される変数に応じて、変換テーブルに含まれる変数の使用頻度の情報を更新する。
【選択図】図14

Description

本発明は、データ処理装置の高速化技術に関する。
画像符号化装置等のデータ処理装置では高速な動作が要求されている。そのため、そのようなデータ処理装置のプロセッサで実行されるプログラムでは、目標性能を満足させるために、次のようにして処理の高速化を図っている。例えば、使用頻度の高い変数や再利用タイミングが時間的に近い変数をレジスタに割り当てる(配置する)等して処理の最適化(チューニング作業)を行い、処理の高速化を図っている。一方、プロセッサ毎の違いはあるものの、使用可能なレジスタ数には制限があるため、レジスタに配置しきれない変数については、レジスタよりもアクセス速度が遅いメモリに配置されることになる。
なお、処理の高速化に関する技術として、次のような技術が知られている。
例えば、プロセッサの命令フェッチ部からデコード部への命令伝達経路において、命令フェッチ部にフェッチされた命令がバイトコードのときに、それがバイトコードアクセレータに供給されてネイティブコードに変換され、後段へ出力されるようにした技術がある。
また、例えば、プログラム変換装置において、ソースプログラム中における変数への値の設定・参照位置等の解析を行い、その解析結果に基づいて、各々の変数にレジスタやメモリ等のハードウェア資源を割り当てるようにした技術がある。
特開2005−44336号公報 特開平11−175351号公報
上述のように、使用頻度の高い変数や再利用タイミングが時間的に近い変数をレジスタに割り当てる等して処理の最適化を行って高速化を図る技術においては、次のような課題がある。
プログラムにおいて、例えば分岐処理等のように、入力データに応じて異なる処理が行われる関数では、入力データに応じて処理ルートが異なる。この場合、使用頻度の高い変数や再利用タイミングが時間的に近い変数も処理ルートによって異なることになる。そこで、上記の技術では、平均的な入力データに応じた処理ルート等に基づいて処理の最適化が行われている。しかしながら、これでは、入力データが変化して処理ルートが異なってしまうと、使用頻度の高い変数や再利用タイミングが時間的に近い変数も異なってしまうため、処理速度の高速化を図るどころか処理速度の低下を招く虞がある。
本発明は、上記実情に鑑み、入力データが変化しても処理の高速化を図ることができる、レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置を提供することを目的とする。
方法の一観点によれば、命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、レジスタに配置される変数を最適化する方法が提供される。この方法では、プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、その変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的にレジスタに配置されるように、変数の配置先をレジスタ又はメモリに決定する。決定された変数の配置先を、変換テーブルに含まれる変数の配置先の情報に反映する。変換テーブルに含まれる変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、プロセッサコアが実行可能な命令コードに変換する。変換された命令コードをプロセッサコアが実行する際に使用される変数に応じて、変換テーブルに含まれる変数の使用頻度の情報を更新する。
プログラムの一観点によれば、命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、レジスタに配置される変数を最適化するプログラムが提供される。このプログラムは、次のような処理をコンピュータに実行させる。プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、その変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的にレジスタに配置されるように、変数の配置先をレジスタ又はメモリに決定する。決定された変数の配置先を、変換テーブルに含まれる変数の配置先の情報に反映する。変換テーブルに含まれる変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、プロセッサコアが実行可能な命令コードに変換する。変換された命令コードをプロセッサコアが実行する際に使用される変数に応じて、変換テーブルに含まれる変数の使用頻度の情報を更新する。
装置の一観点によれば、命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、レジスタに配置される変数を最適化する装置が提供される。この装置は、変換テーブルと命令変換部とを含む。変換テーブルは、プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む。命令変換部は、変換テーブルに含まれる変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、プロセッサコアが実行可能な命令コードに変換する。また、命令変換部は、変換テーブルに含まれる変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的にレジスタに配置されるように、変数の配置先をレジスタ又はメモリに決定する。また、決定された変数の配置先を、変換テーブルに含まれる変数の配置先の情報に反映する。また、変換された命令コードをプロセッサコアが実行する際に使用される変数に応じて、変換テーブルに含まれる変数の使用頻度の情報を更新する。
開示の方法、プログラム、及び装置は、入力データが変化しても処理の高速化を図ることができる、という効果を奏する。
データ処理装置の一例を示す図である。 処理プログラムの構成例を模式的に示す図である。 レジスタ、内部メモリ、及びメインメモリ部でのアクセス速度の一例を模式的に示す図である。 変数の配置方法についての課題の一例を示す図である。 技術例1における変数の配置動作の一例を示す図である。 技術例1の課題の一例を示す図である。 技術例2における変数の配置動作の一例を示す図である。 技術例2の課題の一例を示す図である。 技術例1と技術例2とを組み合わせた場合の課題の一例を示す図である。 実施例1に係るレジスタ配置最適化装置を含むデータ処理装置の一例を示す図である。 擬似命令コードの変換例を示す図である。 変換マップテーブルの一例を示す図である。 変換マップテーブルに含まれる過去の使用頻度の情報の更新に係る動作の一例を示すフローチャートである。 処理プログラムの実行に伴って行われる変換マップテーブルの更新手順の一例を説明する図である。 再配置処理(S201)の処理例を示すフローチャートである。 (a) は手法1による変数の配置例を示す図、(b) は手法2による変数の配置例を示す図である。 実施例1に係るレジスタ配置最適化装置を含む画像符号化装置の構成例を示す図である。 図17に示した画像符号化装置の処理の流れの概要を模式的に示す図である。 図17に示した画像符号化装置の動作シーケンスの一例を示す図である。 従来の場合のプログラム開発期間と、実施例1に係るレジスタ配置最適化装置を採用した場合のプログラム開発期間との一例を示す図である。 (a) は入力データ特徴算出部の基本的な処理例を示すフローチャート、(b),(c) はその具体例を示すフローチャートである。 実施例2に係るレジスタ配置最適化装置を含む画像符号化装置の構成例を示す図である。 図22に示した画像符号化装置の処理の流れの概要を模式的に示す図である。 図22に示した画像符号化装置の動作シーケンスの一例を示す図である。 各々が変換マップテーブル選択値の情報を含む複数の変換マップテーブルの例を示す図である。 コンピュータシステムの構成例を示す図である。
<実施例1>
図1は、データ処理装置の一例を示す図である。
図1に示したデータ処理装置は、プロセッサCPU(Central Processing Unit)部110、メインメモリ部120、メモリコントローラ部130、周辺入出力I/F(InterFace)部140、通信I/F(InterFace)部150、及びシステムバス160を含む。
プロセッサCPU部110は、プロセッサコア(演算・制御ユニット)111、レジスタ112、命令キャッシュ113、データキャッシュ114、システムバスコントローラ115、及び内部メモリ116を含む。プロセッサコア111は、処理プログラム(命令コード)の実行を行う。レジスタ112は、プロセッサコア111がアクセスする高速レジスタである。命令キャッシュ113は、命令コード用のキャッシュメモリである。データキャシュ114は、データコード用のキャッシュメモリである。システムバスコントローラ115は、各部を接続するシステムバス160のコントローラである。内部メモリ116は、プロセッサCPU部110内で使用される小容量のメモリである。
メインメモリ部120は、処理プログラム格納領域121、処理データ格納領域122、及び処理結果格納領域123を含む。
メモリコントローラ部130は、メインメモリ部120のRead/Write制御を行う。
周辺入出力I/F部140は、外部機器との間で入出力I/F処理を行う。通信I/F部150は、通信回線を介して外部機器との間でI/F処理を行う。
システムバス160は、プロセッサCPU部110、メモリコントローラ部130、周辺入出力I/F部140、及び通信I/F部150等と接続されるアドレス/データバスである。
図1に示したデータ処理装置において、処理対象データは、外部機器から周辺入出力I/F部140を介して又は通信回線から通信I/F部150を介して入力される。入力された処理対象データは、システムバス160及びメモリコントローラ部130を経由してメインメモリ部120の処理データ格納領域122に格納される。格納された処理対象データは、メインメモリ部120にロードされた処理プログラムがプロセッサCPU部110により実行されることによって処理される。処理プログラムは、例えば、フィルタリングや画像圧縮等の処理を行う画像処理プログラムである。処理プログラムにおいて、プロセッサCPU部110の処理内容を実現するための命令コードは、メインメモリ部120又は内部メモリ116に格納される。命令コードは、直接アセンブラ言語で記述されたものであるか、又は、C言語等の高級言語で記述された上でコンパイラにより変換されたものである。プロセッサCPU部110には、メモリアクセス高速化の為に、キャッシュメモリ(命令キャッシュ113及びデータキャッシュ114)が設けられており、適宜プロセッサコア111で実行される命令コードが事前に命令キャッシュ113にコピーされる。また、プロセッサCPU部110には、演算対象データを格納又は一時的に記憶するために、レジスタ112が設けられている。プロセッサコア111により実行される演算命令は、レジスタ112やメモリ(内部メモリ116又はメインメモリ部120)のデータを演算対象(オペランド)として実行される。演算結果は、システムバス160及びメモリコントローラ部130を介して、メインメモリ部120の処理結果格納領域123に格納される。最終結果は、必要に応じて、周辺入出力I/F部140を介して外部機器へ又は通信I/F部150を介して通信回線へ出力される。
図2は、処理プログラムの構成例を模式的に示す図である。
命令コードとして処理順序が記述されている処理プログラムは、図2に示したように、関数やサブルーチンモジュール(例えば関数[1]〜関数[n])に分割されており、これらを連携させて全体機能を実現する。各関数内で使用される変数は、レジスタ112又はメモリ(内部メモリ116又はメインメモリ部120)に配置され、演算命令のオペランドとして指定される。図2に示した例では、例えば関数[1]において、演算命令のオペランドとして指定される変数[1]〜変数[6]は、レジスタ(レジスタ−1〜レジスタ−5)112に配置されることを示している。また、変数[7]及び変数[8]は、メモリ(内部メモリ116又はメインメモリ部120)に配置されることを示している。
図3は、レジスタ112、内部メモリ116、及びメインメモリ部120でのアクセス速度の一例を模式的に示す図である。なお、ここでは、メインメモリ部120をDRAM(Dynamic Random Access Memory)とした場合の例を示す。
図3に示したように、レジスタ112とメモリ(内部メモリ116及びDRAM)では、アクセス速度が異なる。レジスタ112に対して、プロセッサCPU部110の外部に設けられるDRAMでは数十〜数百倍のアクセス時間を要し、プロセッサCPU部110の内部メモリ116でも2〜4倍のアクセス時間を要する。従って、関数内で使用される変数は可能な限りレジスタ112に配置した方が、より高速な処理が可能となる。しかしながら、使用できるレジスタ数には制限があるため、レジスタ112に配置しきれない変数については、メモリ(内部メモリ116又はメインメモリ部120)に配置されてしまう。なお、制限されるレジスタ数は、例えばプロセッサ毎に異なる。
そこで、高速な動作が要求されるプログラムでは、目標性能を満足させるために、より使用頻度の高い変数や再利用タイミングが時間的に近い変数をレジスタに割り当てる等して処理の最適化を行い、処理の高速化を図っている。この場合、例えば、レジスタを使用して動作させるために命令コードの変換を行うことにより処理の高速化を図る技術がある(以下「技術例1」という)。また、例えば、アセンブラコードを読み込み、変数の存在区間の長さや変数の存在するループレベルの総和に基づいて変数の割付優先度を算出し、その結果に基づいて変数の配置先を変換することにより高速化を図る技術がある(以下「技術例2」という)。
一方、変数の配置方法については、次のような課題がある。
図4は、変数の配置方法についての課題の一例を示す図である。
図4に示したように、変数の使用頻度や使用順は、関数内の何れの処理ルート(処理ルートA〜C)を通ったかにより異なる。これは、関数内では入力されるデータの特徴に応じた処理が行われるため、入力データが変化すると処理ルートが異なってしまうからである。従って、平均点なデータが入力される場合の処理ルート(例えば処理ルートC)で使用される変数をメインにレジスタに配置する等してレジスタ配置を最適化し、総合的に最適となるような変数の配置を行う必要がある。しかしながら、これでは、平均的でないデータが入力された場合の処理ルート(例えば処理ルートA又はB)では、レジスタが適正に使用されず、処理速度が低下する要因となってしまう。
図5は、上記の技術例1における変数の配置動作の一例を示す図である。
図5に示したように、技術例1では、プロセッサの命令伝達経路において、次のような動作が行われる。まず、命令キャッシュ(CASHE)171から読み出された命令コードが命令フェッチ部(FETc)172において分別され、それが浮動小数点バイトコードである場合には、それがバイトコードアクセラレータ部(BCA)173へ出力される。そして、そこでレジスタ間転送命令に変換され、それがセレクター174を介してデコード部(DECc、DECf)175へ出力される。技術例1では、このような動作により、処理の高速化を図っている。なお、デコード部175において、DECc は全ての命令をデコードし、DECf は浮動小数点命令を認識してデコードする。
図6は、上記の技術例1の課題の一例を示す図である。
技術例1では、上述のように、一部の命令コードに対して変換を行う方式である。そのため、図6に示したように、例えば、入力データAの場合は、浮動小数点演算が有りとなって配置先の変換が行われ、有効な方式となる。しかしながら、入力データが変化した入力データBの場合は、処理ルートが変更され浮動小数点演算が無しとなり、この場合は高速化の効果はない。このように、技術例1では、入力データによって浮動少数点演算の有無が固定的に決まるものであり、それを動的に変更することはできない。
図7は、上記の技術例2における変数の配置動作の一例を示す図である。
図7に示したように、技術例2では、プログラム変換装置において、次のような動作が行われる。まず、処理プログラム(アセンブラコード)が読み込まれて解析され、変数の存在区間の長さや変数の存在するループレベルの総和が算出され、その算出結果に基づいて各変数の割付優先度が算出される。そして、その算出結果に基づいて変数の配置先が変換される。技術例2では、このような動作により、処理の高速化を図っている。
図8は、上記の技術例2の課題の一例を示す図である。
技術例2では、上述のように、処理プログラム(アセンブラコード)の解析が行われ、そのコード上での変数の存在区間の長さや変数の存在するループレベルの総和に基づいて配置が決定され、処理プログラムが実行される。そのため、図8に示したように、例えば、処理プログラムの中で最も多く使用されている変数が変数Xと判断され(図8のA参照)、変数Xの配置先がレジスタとされたとする。しかしながら、その後、入力データが変更され、その処理を行う実行ルートにおいて最も多く使用されている変数が、変数Xではなく変数Yになる場合がある(図8のBの網掛け部参照)。このように、入力データが変更され、処理プログラムの実行ルートが変更された場合に、技術例2では、使用される変数の存在区間やループ回数の変更に対応できない。
図9は、上記の技術例1と技術例2とを組み合わせた場合の課題の一例を示す図である。
図9に示したように、この場合には、処理プログラム(アセンブラコード等)が読み込まれて、その命令の種類(浮動小数点)や、変数の存在区間の長さや変数の存在するループレベルの総和に基づいて配置先の変換が行われる。しかしながら、この場合には、入力データに応じて変化する関数内の変数の使用頻度によってレジスタとメモリの割り振りを変更(最適化)することができない。
そこで、上述した変数の配置方法に関する課題に鑑み、実施例1に係るレジスタ配置最適化装置を含むデータ処理装置は、以下のような構成を有する。
図10は、本実施例に係るレジスタ配置最適化装置を含むデータ処理装置の一例を示す図である。
なお、図10において、図1に示した要素と同一の要素については、同一の符号を付している。また、図10に示したデータ処理装置において、本実施例に係るレジスタ配置最適化装置は、命令変換ユニット117と変換マップテーブル118を含む。命令変換ユニット117は命令変換部の一例であり、変換マップテーブル118は変換テーブルの一例である。
図10に示したデータ処理装置では、プロセッサCPU部110が、更に、命令変換ユニット117と変換マップテーブル118を含み、それらが命令キャッシュ113とシステムバスコントローラ115との間に設けられる。なお、変換マップテーブル118は、命令変換ユニット117の内部又は外部に設けることが可能であり、例えば、プロセッサCPU部110内の図示しない記憶部に記憶される。
また、メインメモリ部120の処理プログラム格納領域121に格納される処理プログラム中の命令コードは、演算命令のオペランドが明示されていない(演算命令のオペランドの配置先が指定されていない)抽象化された擬似命令コードとなる。すなわち、擬似命令コードは、演算命令のオペランドがレジスタ112に配置されているのかメモリ(内部メモリ116又はメインメモリ部120)に配置されているのかが明示されていない。なお、このような擬似命令コードを含む処理プログラムは、予め生成されて、処理プログラム格納領域121に格納される。
変換マップテーブル118は、詳しくは後述するように、処理プログラム内の各関数に定義されている各変数の配置先、平均使用頻度、及び過去の使用頻度等の情報を含む。
命令変換ユニット117は、変換マップテーブル118に含まれる各変数の配置先の情報に基づいて、擬似命令コードを、プロセッサコア111が解釈可能な(実行可能な)命令コード(以下「通常の命令コード」ともいう)に変換する。すなわち、演算命令のオペランドの配置先がレジスタ112であるのかメモリ(内部メモリ116又はメインメモリ部120)であるのかが明示されていない抽象化された擬似命令コードを、それが明示された通常の命令コードに変換する。そして、変換された命令コードを命令キャッシュ113にロードする。また、命令変換ユニット117は、詳しくは後述するように、変換マップテーブル118の更新等の処理も行う。
図11は、擬似命令コードの変換例を示す図である。
図11に示した例は、命令変換ユニット117が、変換マップテーブル118に含まれる各変数の配置先の情報に基づいて、擬似命令コードである加算命令「ADD val0, val1」を、通常の命令コードである加算命令「add r0, r1」又は「add (mem0), r1」に変換した例である。
ここで、擬似命令コードである加算命令「ADD val0, val1」は、変数1(val0)と変数2(val1)の加算命令を示している。このように、擬似命令コードは、演算命令のオペランドの配置先がレジスタ112であるのかメモリ(内部メモリ116又はメインメモリ部120)であるのかが明示されていない。
一方、変換後の命令コードである加算命令「add r0, r1」は、変数1がレジスタ0(r0)に配置され、変数2がレジスタ1(r1)に配置されている場合の変換例であり、レジスタ0(r0)に配置されている変数1とレジスタ1(r1)に配置されている変数2の加算命令を示している。なお、レジスタ0(r0)及びレジスタ1(r1)は、レジスタ112に含まれる領域である。
また、変換後の命令コードである加算命令「add (mem0), r1」は、変数1がメモリ(mem0)に配置され、変数2がレジスタ1(r1)に配置されている場合の変換例であり、メモリ(mem0)に配置されている変数1とレジスタ1(r1)に配置されている変数2の加算命令を示している。なお、メモリ(mem0)は、内部メモリ116又はメインメモリ部120に含まれる領域である。
図12は、変換マップテーブル118の一例を示す図である。
図12に示したように、変換マップテーブル118は、処理プログラム内の各関数に定義されている各変数の配置先、平均使用頻度、過去の使用頻度等の情報を含む。但し、図12では、過去の使用頻度の情報を省略して示している。
変換マップテーブル118に含まれる情報は、処理プログラムの実行に伴って、次のようにして動的に更新(変更)される。
まず、処理プログラム起動時において、各変数の配置先の情報は、例えば、処理プログラム中の各関数内での変数の定義順等によって優先度を設け、その優先度に応じてレジスタ112又はメモリ(内部メモリ116又はメインメモリ部120)に決定される。また、各変数の平均使用頻度及び過去の使用頻度の情報は0とされる。
その後、処理プログラムの処理対象となるデータが入力され、処理プログラムの実行が開始されると、処理プログラム中の擬似命令コードは、命令変換ユニット117により変換されて命令キャッシュ113へロードされる。命令変換ユニット117による変換の際には、変換マップテーブル118が参照され、次のような変換(オペランド変換ともいう)が行われる。変換マップテーブル118において配置先がレジスタ(レジスタ−1〜レジスタ−5)112となっている変数は、命令コードのオペランドの配置先が該当するレジスタ112となるような命令列に変換される。一方、変換マップテーブル118において配置先がメモリ(内部メモリ116又はメインメモリ部120)となっている変数は、命令コードのオペランドの配置先が該当するメモリとなるような命令列に変換される。
そして、このようにして変換された命令コードがプロセッサコア111に実行されて変数が使用されると、その変数毎に、変換マップテーブル118に含まれる過去の使用頻度の情報が更新されると共に、平均使用頻度の情報が更新される。
例えば、図12に示した変換マップテーブル118において、関数[1]の変数[2]の平均使用頻度は「50」であることを示し、関数[1]に定義されている変数の中で平均使用頻度が最も高いことを示している。このような平均使用頻度の情報は、変数の配置先の変更に使用される。例えば、図12に示した変換マップテーブル118において、関数[2]の変数[1]は平均使用頻度が「7」であり、関数[2]の変数[5]は平均使用頻度が「20」であることを示している。この場合には、関数[2]において、メモリ(内部メモリ116又はメインメモリ部120)に配置されている変数[5]が、レジスタ112に配置されている変数[1]よりも平均使用頻度が高くなっている為、変換マップテーブル118において、変数の配置先の入れ替えが行われる。すなわち、変数[5]の配置先がレジスタ112となり、変数[1]の配置先がメモリ(内部メモリ116又はメインメモリ部120)となるように、変換マップテーブル118において、変数の配置先の入れ替えが行われる。このようにして変数の配置先の入れ替えが行われることにより、変数の配置先を動的に変更(最適化)することが可能となる。また、このようにして変数の配置先の入れ替えが行われた後の変換マップテーブル118に含まれる各変数の配置先の情報に基づいて命令変換ユニット117による変換が行われることにより、処理の高速化を図ることができる。
なお、変換マップテーブル118において、プログラム起動時の各変数の配置先の情報は、例えば、それを予め内部メモリ116又はメインメモリ部120に格納しておき、プログラム起動時に読み出して変換マップテーブル118に格納するようにすることも可能である。この場合、プログラム起動時の各変数の配置先の情報は、例えば、処理プログラムの静的な解析結果に基づいて決定される。
図13は、変換マップテーブル118に含まれる過去の使用頻度の情報の更新に係る動作の一例を示すフローチャートである。
図13に示したように、図示しない命令キャッシュ113のコントローラによってリード要求(命令コードのロード指示)が行われると(S101)、次のような動作が行われる。まず、このリード要求に応じて、プロセッサコア111が命令コードを実行するために必要な擬似命令コードがメインメモリ部120の処理プログラム格納領域121からリードされ、命令変換ユニット117へ転送される(S102)。命令変換ユニット117では、変換マップテーブル118に含まれる各変数の配置先の情報に基づいて、オペランド変換により、転送された擬似命令コードが通常の命令コードに変換される(S103)。また、変換された命令コードがプロセッサコア111により実行されて変数が使用されると、その変数についての過去の使用頻度がインクリメントされるように、変換マップテーブル118に含まれる過去の使用頻度の情報が更新される(S104)。なお、変換マップテーブル118において、このようにしてインクリメントされた過去の使用頻度の情報は、詳しくは後述するように、平均使用頻度の情報を更新する際に使用される。
図14は、処理プログラムの実行に伴って行われる変換マップテーブル118の更新手順の一例を説明する図である。
処理プログラムの実行によって行われるデータ処理は、連続するデータ処理を含む場合がある。一般的に、連続するデータ処理では、一定の処理の区切りを1単位(1処理ユニット)として、それを繰返し実行することで全体処理を実現する。例えば、動画像処理では1画面分の処理を1単位としてこれを繰り返し実行することで、物体認識処理や画像圧縮処理等といった画像処理を実現している。ここでは、そのような連続するデータ処理が行われる場合における変換マップテーブル118の更新手順の一例を説明する。
図14に示したように、処理プログラムの実行中に行われる1処理ユニット毎の処理では、まず、再配置処理が行われる(S201)。この再配置処理では、詳しくは後述するように、変換マップテーブル118に含まれる各変数の平均使用頻度の情報に基づいて各変数の配置先が決定され、それを反映させるように、変換マップテーブル118に含まれる各変数の配置先の情報が更新(変更)される。
次に、処理プログラムの1処理ユニットが実行される(S202)。ここでは、上述のように、命令変換ユニット117によって変換マップテーブル118が参照され、擬似命令コードから通常の命令コードへの変換が行われ、変換された命令コードがプロセッサコア111によって実行される。
次に、頻度平均更新処理が行われる(S203)。この頻度平均更新処理では、S202においてプロセッサコア111により命令コードが実行されたときに使用された変数の使用頻度の情報が、1処理ユニット分の過去の使用頻度の情報として、変換マップテーブル118に追加される。なお、変換マップテーブル118は、図14に示したように、過去の使用頻度の情報として、現在から過去所定数回(N回)分の各々の1処理ユニットの実行において使用された変数の使用頻度の情報を含むことができる。例えば、図14の「過去データ1」は、今回(直近)の1処理ユニットの実行において使用された変数の使用頻度の情報を示し、「過去データN」は、(N−1)処理ユニット前の処理ユニットの実行において使用された変数の使用頻度の情報を示す。このように、プロセッサコア111により命令コードが実行されたときに使用される変数に応じて、変換マップテーブル118に含まれる過去の使用頻度の情報が更新される。
また、S203の頻度平均更新処理では、更に、変換マップテーブル118において、過去の使用頻度の情報に基づいて、各関数に定義されている各変数の使用頻度の平均値が求められ、平均使用頻度の情報が更新される。この場合、例えば、現在から過去M(但し、M≦N)回分の使用頻度の情報に基づいて、各関数に定義されている各変数の使用頻度の平均値が求められる。例えば、図14に示した変換マップテーブル118に含まれる関数[2]の変数[3]の平均使用頻度「8」(網掛け部分参照)の情報は、現在から過去6回分の使用頻度(「12」、「6」、「6」、「8」、「8」、「8」)の平均値から求められたものである。このようにして求められる平均使用頻度の情報を用いることにより、突発的(一時的)な使用頻度の変動による影響を軽減させることができる。
図15は、上述の再配置処理(S201)の処理例を示すフローチャートである。
図15に示した処理は、上述の再配置処理(S201)において、1処理ユニット内の各関数に対して行われる処理である。
図15に示した処理において、Rmは、変数の再配置済レジスタを示す。Rn_maxは、関数内の変数を配置可能な最大レジスタ数を示す。VSiは、関数内の変数を平均使用頻度順に並べたときのi番目の変数を示す。
図15に示したように、この処理では、まず、変換マップテーブル118に含まれる対象となる関数内に定義されている各変数の平均使用頻度の情報が参照される(S301)。なお、本処理が、処理プログラムの起動後2回目以降の1処理ユニットで行われる場合には、S301で参照される情報は、前回の1処理ユニットにおけるS203で更新された平均使用頻度の情報となる。次に、対象となる関数内に定義されている各変数の平均使用頻度の情報に基づいて平均使用頻度が高い順に並べられた変数VSiの配置先が、順次レジスタ112に決定される(S302)。そして、変数の配置先がレジスタ112に決定されたレジスタ数がRn_maxに達したら(S303がYes)、残りの変数VSiの配置先がメモリ(内部メモリ116又はメインメモリ部120)に決定される(S304)。このような処理が、1処理ユニットに含まれる各関数に対して繰り返し行われる。これにより、変換マップテーブル118に含まれる各変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数を優先的にレジスタ112に再配置するように、変数の配置先を決定することができる。
なお、静的なコンパイルにおいて、レジスタ割り付けを最適化する手法として、例えば、PolettoとSarkarの“linear scan allocation”という手法が知られている(以下「手法1」という)。この手法1において、例えば、レジスタの使用期間に、上述の動的な情報(変換マップテーブル118に含まれる情報)を更に加味するようにすることで、より効率の良い変数の配置が可能となる(以下「手法2」という)。
図16(a) は、手法1による変数の配置例を示す図である。図16(b) は、手法2による変数の配置例を示す図である。
なお、図16に示した例は、変数Aのソースコード上の使用終了タイミングが全変数中で最長となっているものの、実際の実行時には判定文のfalse側の処理ルートで使用されておりtrue側の処理ルートでは使用されていない場合の例である。また、図16において、R0、R1は、レジスタに含まれる領域を示す。
図16(a) に示したように、動的な情報を加味しない手法1では、変数Aをレジスタからメモリへ追い出すspill動作が行われている。これに対し、図16(b) に示したように、動的な情報を加味した手法2では、例えば、実行される処理ルートの予測が行われ、判定文で実行されない処理ルートが判断される。その結果、変数Aのspill動作は行われず、より最適な変数の配置とすることができる。
次に、本実施例に係るレジスタ配置最適化装置を含むデータ処理装置の具体例として、本実施例に係るレジスタ配置最適化装置を画像符号化装置に適用した例を説明する。
図17は、本実施例に係るレジスタ配置最適化装置を含む画像符号化装置の構成例を示す図である。
なお、図17において、図10に示した要素と同一の要素については、同一の符号を付している。また、図17に示した画像符号化装置において、本実施例に係るレジスタ配置最適化装置は、図10に示したデータ処理装置の場合と同様に、命令変換ユニット117と変換マップテーブル118を含む。
図17に示した画像符号化装置において、画像処理プロセッサ210の構成は、図10に示したプロセッサCPU部110と基本的に同じである。また、ビデオ(Video)入力I/F(InterFace)部220は、外部のカメラ等から入力されるデータの入力処理を行う。ビデオ(Video)出力I/F(InterFace)部230は、外部のディスプレイ等への出力処理を行う。その他の構成については、図10に示したデータ処理装置と基本的に同じである。
続いて、図17に示した画像符号化装置の動作を、図18及び図19を用いて説明する。
図18は、図17に示した画像符号化装置の処理の流れの概要を模式的に示す図である。
図18に示したように、カメラ等からの入力画像データは、ビデオ入力I/F部220、システムバス160、及びメモリコントローラ部130を介して、メインメモリ部120の処理データ格納領域122に蓄積される(図18の矢印A参照)。蓄積された画像データは、処理画像単位に、メモリコントローラ部130、システムバス160、及びシステムバスコントローラ115を介してデータキャッシュ114に読み出される(図18の矢印B参照)。一方、メインメモリ部120の処理プログラム格納領域121に格納されている処理プログラム(擬似命令コードを含む)は、メモリコントローラ部130、システムバス160、及びシステムバスコントローラ115を介して命令変換ユニット117にロードされる(図18の矢印C参照)。命令変換ユニット117では、変換マップテーブル118が参照され(図18の矢印D参照)、その内容に基づいて擬似命令コードが通常の命令コードに変換されて命令キャッシュ113へ転送される(図18の矢印E参照)。転送された命令コードは、プロセッサコア111により読み出され(図18の矢印F参照)、その命令コードの実行が、例えばレジスタ112に配置されている変数が使用される等して行われる(図18の矢印G参照)。このようにして処理プログラムが実行されると、それにより出力データが作成される。そして、その出力データが、データキャッシュ114、システムバスコントローラ115、及びシステムバス160を経由した後、例えば、通信I/F部150又はビデオ出力I/F部230を介して出力される(図18の矢印H参照)。出力データは、例えば、画像圧縮データ等である。
図19は、図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は、従来の場合のプログラム開発期間と、本実施例に係るレジスタ配置最適化装置を採用した場合のプログラム開発期間との一例を示す図である。
図20に示したように、例えば、従来の場合において、設計期間に1ヶ月、高速化のための修正期間(チューニング作業)に2ヶ月を要していたとする。この場合、本実施例に係るレジスタ配置最適化装置を採用した場合には、高速化のための修正期間が不要になるため、その分(2ヶ月)の開発期間の短縮を図ることができる。
また、本実施例に係るレジスタ配置最適化装置を含む画像処理装置においては、例えば、複数フレームの画像が入力された場合に、その複数フレームの画像に対する画像処理に応じた高速化が可能になる。
<実施例2>
実施例2に係るレジスタ配置最適化装置は、入力データ特徴算出部を更に含むと共に、変換マップテーブル118として複数の変換マップテーブルを含むことが、実施例1に係るレジスタ配置最適化装置と異なる。なお、入力データ特徴算出部はテーブル選択部の一例である。
本実施例に係るレジスタ配置最適化装置において、入力データ特徴算出部は、入力データの特徴を算出し、その算出結果に応じて、複数の変換マップテーブルの中から、対応する変換マップテーブルを選択する等の処理を行う。
図21(a),(b),(c) は、入力データ特徴算出部の処理例を示すフローチャートである。図21(a) は、その基本的な処理例を示すフローチャートであり、図21(b),(c) は、その具体例を示すフローチャートである。
図21(a) に示したように、入力データ特徴算出部の基本的な処理は、次のようになる。まず、入力データが受信されると(S501)、その入力データの差分が算出される(S502)。次に、複数の変換マップテーブルから、その差分に応じた変換マップテーブルが選択され(S503)、その旨が命令変換ユニット117に通知される(S504)。これにより、命令変換ユニット117では、入力データ特徴算出部により選択された変換マップテーブルを用いて擬似命令コードの変換が行われる。
具体的には、例えば、図21(b) に示したように、入力データ(画像データ)が受信されると(S601)、その入力データのフレーム内差分が算出され(S602)、そのフレーム内差分の値が所定値よりも大きいか否かが判定される(S603)。ここで、その判定結果がYesの場合には、フレーム内処理用の変換マップテーブルが選択され、その旨が命令変換ユニット117に通知される(S604)。これにより、命令変換ユニット117では、入力データ特徴算出部により選択されたフレーム内処理用の変換マップテーブルを用いて擬似命令コードの変換が行われる。一方、S603の判定結果がNoの場合には、変換マップテーブルを変更しない旨が命令変換ユニット117に通知される(S605)。これにより、命令変換ユニット117では、デフォルトとして設定されている変換マップテーブルを用いて擬似命令コードの変換が行われる。
或いは、例えば、図21(c) に示したように、入力データ(画像データ)が受信されると(S701)、その入力データのフレーム間差分が算出され(S702)、そのフレーム間差分の値が所定値よりも大きいか否かが判定される(S703)。ここで、その判定結果がYesの場合には、フレーム間処理用の変換マップテーブルが選択され、その旨が命令変換ユニット117に通知される(S704)。これにより、命令変換ユニット117では、入力データ特徴算出部により選択されたフレーム間処理用の変換マップテーブルを用いて擬似命令コードの変換が行われる。一方、S703の判定結果がNoの場合には、変換マップテーブルを変更しない旨が命令変換ユニット117に通知される(S705)。これにより、命令変換ユニット117では、デフォルトとして設定されている変換マップテーブルを用いて擬似命令コードの変換が行われる。
このような図21(b) 又は図21(c) に示した処理により、フレーム内差分又はフレーム間差分が大きい画像においては、変換マップテーブルが切り替えられ、その切り替えられた変換マップテーブルを用いて擬似命令コードの変換が行われる。このようにすることで、例えば、動画像におけるシーンチェンジ等において、画像データに揺らぎが発生したとしても変換マップテーブルに含まれる情報に影響を与えずに変数の配置先を切り替えることができる。
次に、本実施例に係るレジスタ配置最適化装置を画像符号化装置に適用した例を説明する。
図22は、本実施例に係るレジスタ配置最適化装置を含む画像符号化装置の構成例を示す図である。
なお、図22において、図17に示した要素と同一の要素については、同一の符号を付している。また、図22に示した画像符号化装置において、本実施例に係るレジスタ配置最適化装置は、命令変換ユニット117と複数の変換マップテーブル118と入力画像特徴算出ユニット311を含む。
図22に示した画像符号化装置において、画像処理プロセッサ210の構成は、入力画像特徴算出ユニット311を更に含むと共に、複数の変換マップテーブル118を含む以外は、図17に示した画像処理プロセッサ210と基本的に同じである。なお、入力画像特徴算出ユニット311は、上記の入力データ特徴算出部の一例である。その他の構成については、図17に示した画像符号化装置と基本的に同じである。
続いて、図22に示した画像符号化装置の動作を、図23及び図24を用いて説明する。
図23は、図22に示した画像符号化装置の処理の流れの概要を模式的に示す図である。
図23に示したように、カメラ等からの入力画像データは、ビデオ入力I/F部220、システムバス160、及びメモリコントローラ部130を介して、メインメモリ部120の処理データ格納領域122に蓄積される(図23の矢印A参照)。蓄積された画像データは、処理画像単位に、メモリコントローラ部130、システムバス160、及びシステムバスコントローラ115を介してデータキャッシュ114に読み出される(図23の矢印B参照)。また、これと共に、それが入力画像特徴算出ユニット311に入力される(図23の矢印C参照)。入力画像特徴算出ユニット311では、入力された画像データのフレーム内差分又はフレーム間差分が算出される。そして、その算出結果に応じて、対応する変換マップテーブル118の選択又は変換マップテーブル118の変更無しの通知が、命令変換ユニット117に対して行われる(図23の矢印D参照)。一方、メインメモリ部120の処理プログラム格納領域121に格納されている処理プログラム(擬似命令コードを含む)は、メモリコントローラ部130、システムバス160、及びシステムバスコントローラ115を介して命令変換ユニット117にロードされる(図23の矢印E参照)。命令変換ユニット117では、入力画像特徴算出ユニット311からの通知に応じて、対応する変換マップテーブル118が選択、参照される(図23の矢印F参照)。そして、その変換マップテーブル118の内容に基づいて擬似命令コードが通常の命令コードに変換されて命令キャッシュ113へ転送される(図23の矢印G参照)。転送された命令コードは、プロセッサコア111により読み出され(図23の矢印H参照)、その命令コードの実行が、例えばレジスタ112に配置されている変数が使用される等して行われる(図23の矢印I参照)。このようにして処理プログラムが実行されると、それにより出力データが作成される。そして、その出力データが、データキャッシュ114、システムバスコントローラ115、及びシステムバス160を経由した後、例えば、通信I/F部150又はビデオ出力I/F部230を介して出力される(図23の矢印J参照)。出力データは、例えば、画像圧縮データ等である。
図24は、図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に通知する方法としては、次のような方法がある。
例えば、入力画像特徴算出ユニット311は、選択した変換マップテーブル118に対応する変換マップテーブル選択値の情報を命令変換ユニット117へ通知する。これを受けた命令変換ユニットは、その変換マップテーブル選択値の情報に基づいて、対応する変換マップテーブル118を選択する。なお、この場合、複数の変換マップテーブル118の各々には、対応する変換マップテーブル選択値の情報が含まれている。
図25は、各々が変換マップテーブル選択値の情報を含む複数の変換マップテーブル118の例を示す図である。
図25に示したように、複数の変換マップテーブル118の各々は、対応する変換マップテーブル選択値の情報を含む。例えば、変換マップテーブル118aは、変換マップテーブル選択値が「1」である情報を含み、変換マップテーブル118bは、変換マップテーブル選択値が「2」である情報を含む。なお、図25に示した変換マップテーブル118a、118bでは、過去の使用頻度の情報を省略して示している。
以上のように、本実施例に係るレジスタ配置最適化装置によれば、命令変換ユニット117が使用する(参照、更新する)変換マップテーブル118を、入力データの特徴に応じた変換マップテーブル118とすることができる。従って、例えば、入力画像のシーンに応じて、適応的に変換マップテーブル118が使用されるようになるので、画像処理の高速化を図ることができる。
また、上述の実施例1に係るレジスタ配置最適化装置と同様に、プログラムの開発期間を短縮することもできる。
また、本実施例に係るレジスタ配置最適化装置を含む画像処理装置においては、例えば、複数フレームの画像が入力された場合に、その複数フレームの画像の特徴に応じた高速化が可能になる。
なお、上述の実施例1及び2に係るレジスタ配置最適化装置では、プロセッサコア111により命令コードが実行されたときに使用された変数に応じて、変換マップテーブル118に含まれる、変数の過去の使用頻度及び平均使用頻度の情報が更新されるものであった。これを、例えば、命令変換ユニット117により擬似命令コードが変換された際に使用された変数に応じて、行うようにすることも可能である。
また、上述の実施例1及び2に係るレジスタ配置最適化装置は、例えば、次のようなコンピュータシステムによって実現することも可能である。
図26は、そのコンピュータシステムの構成例を示す図である。
図26に示したように、このコンピュータシステムは、CPU401、ROM402、RAM403、通信インタフェース404、記憶装置405、入出力装置406、可搬型記憶媒体の読取り装置407、及び、これらの全てが接続されたバス408を含む。なお、ROMは Read Only Memory である。
記憶装置305としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができる。
例えば、実施例1に係るレジスタ配置最適化装置を本コンピュータシステムにより実現する場合には、記憶装置405、またはROM402に、命令変換ユニット117等が行う動作(処理)のためのプログラム等が格納される。また、RAM403には、変換マップテーブル118等が格納される。そして、そのプログラムがCPU401によって実行されることにより、実施例1に係るレジスタ配置最適化装置が実現される。
また、例えば、実施例2に係るレジスタ配置最適化装置を本コンピュータシステムにより実現する場合には、記憶装置405、またはROM402に、命令変換ユニット117及び入力データ特徴算出部等が行う動作(処理)のためのプログラム等が格納される。また、RAM403には、複数の変換マップテーブル118等が格納される。そして、そのプログラムがCPU401によって実行されることにより、実施例2に係るレジスタ配置最適化装置が実現される。
このようなプログラムは、プログラム提供者409からネットワーク410、および通信インタフェース404を介して、例えば記憶装置405に格納されて、CPU401によって実行されることも可能である。また、市販され、流通している可搬型記憶媒体411に格納され、読取り装置407にセットされて、CPU401によって実行されることも可能である。可搬型記憶媒体411としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVDディスク、USBメモリなど様々な形式の記憶媒体を使用することができる。
なお、本コンピュータシステムにおいて、通信インターフェース404、記憶装置405、入出力装置406、及び読み取り装置407は無くても良い。
以上、実施例を説明したが、本発明は、上述した実施例に限定されることなく、本発明の要旨を逸脱しない範囲内で種々の改良・変更が可能である。
以上の実施の形態に関し、更に以下の付記を開示する。
(付記1)
命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する方法であって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
ことを特徴とするレジスタ配置最適化方法。
(付記2)
前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
前記決定では、前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
前記更新では、前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
ことを特徴とする付記1記載のレジスタ配置最適化方法。
(付記3)
前記変換テーブルは、複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じて選択された変換テーブルである、
ことを特徴とする付記1又は2記載のレジスタ配置最適化方法。
(付記4)
前記入力データは画像データであり、
前記選択された変換テーブルは、前記画像データのフレーム内差分又はフレーム間差分に応じて選択された変換テーブルである、
ことを特徴とする付記3記載のレジスタ配置最適化方法。
(付記5)
命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化するプログラムであって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
という処理をコンピュータに実行させるレジスタ配置最適化プログラム。
(付記6)
前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
前記決定では、前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
前記更新では、前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
ことを特徴とする付記5記載のレジスタ配置最適化プログラム。
(付記7)
前記変換テーブルは、複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じて選択された変換テーブルである、
ことを特徴とする付記5又は6記載のレジスタ配置最適化プログラム。
(付記8)
前記入力データは画像データであり、
前記選択された変換テーブルは、前記画像データのフレーム内差分又はフレーム間差分に応じて選択された変換テーブルである、
ことを特徴とする付記7記載のレジスタ配置最適化プログラム。
(付記9)
命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する装置であって、
プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルと、
前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換する命令変換部と、
を備え、
前記命令変換部は、
前記変換テーブルに含まれる前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
ことを特徴とするレジスタ配置最適化装置。
(付記10)
前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
前記命令変換部は、
前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
ことを特徴とする付記9記載のレジスタ配置最適化装置。
(付記11)
複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じた変換テーブルを選択するテーブル選択部を更に備え、
前記命令変換部が参照、更新する変換テーブルは、前記テーブル選択部により選択された変換テーブルである、
ことを特徴とする付記9又は10記載のレジスタ配置最適化装置。
(付記12)
前記入力データは画像データであり、
前記テーブル選択部は、前記複数の変換テーブルの中から、前記プロセッサが処理する画像データのフレーム内差分又はフレーム間差分に応じた変換テーブルを選択する、
ことを特徴とする付記11記載のレジスタ配置最適化装置。
110 プロセッサCPU部
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. 命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する方法であって、
    プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
    前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
    前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
    前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
    ことを特徴とするレジスタ配置最適化方法。
  2. 前記変換テーブルに含まれる前記変数の使用頻度の情報は、変数の平均使用頻度及び過去の使用頻度の情報を含み、
    前記決定では、前記変換テーブルに含まれる前記変数の平均使用頻度の情報に基づいて、平均使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又は前記メモリに決定し、
    前記更新では、前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の過去の使用頻度の情報を更新すると共に、前記変数の過去の使用頻度の情報に基づいて前記変換テーブルに含まれる前記変数の平均使用頻度の情報を更新する、
    ことを特徴とする請求項1記載のレジスタ配置最適化方法。
  3. 前記変換テーブルは、複数の変換テーブルの中から、前記プロセッサが処理する入力データの特徴に応じて選択された変換テーブルである、
    ことを特徴とする請求項1又は2記載のレジスタ配置最適化方法。
  4. 前記入力データは画像データであり、
    前記選択された変換テーブルは、前記画像データのフレーム内差分又はフレーム間差分に応じて選択された変換テーブルである、
    ことを特徴とする請求項3記載のレジスタ配置最適化方法。
  5. 命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化するプログラムであって、
    プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルを参照し、前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
    前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
    前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換し、
    前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
    という処理をコンピュータに実行させるレジスタ配置最適化プログラム。
  6. 命令コードを実行するプロセッサコアとレジスタとを含むプロセッサにおいて、前記レジスタに配置される変数を最適化する装置であって、
    プログラム内の関数に定義されている変数の配置先及び使用頻度の情報を含む変換テーブルと、
    前記変換テーブルに含まれる前記変数の配置先の情報に基づいて、演算命令のオペランドの配置先が指定されていない擬似命令コードを、前記プロセッサコアが実行可能な命令コードに変換する命令変換部と、
    を備え、
    前記命令変換部は、
    前記変換テーブルに含まれる前記変数の使用頻度の情報に基づいて、使用頻度の高い変数が優先的に前記レジスタに配置されるように、変数の配置先を前記レジスタ又はメモリに決定し、
    前記決定された変数の配置先を、前記変換テーブルに含まれる前記変数の配置先の情報に反映し、
    前記変換された命令コードを前記プロセッサコアが実行する際に使用される変数に応じて、前記変換テーブルに含まれる前記変数の使用頻度の情報を更新する、
    ことを特徴とするレジスタ配置最適化装置。
JP2011066636A 2011-03-24 2011-03-24 レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 Expired - Fee Related JP5630352B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 画像処理装置、方法及びプログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
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