JP2011118752A - コンパイル装置 - Google Patents

コンパイル装置 Download PDF

Info

Publication number
JP2011118752A
JP2011118752A JP2009276672A JP2009276672A JP2011118752A JP 2011118752 A JP2011118752 A JP 2011118752A JP 2009276672 A JP2009276672 A JP 2009276672A JP 2009276672 A JP2009276672 A JP 2009276672A JP 2011118752 A JP2011118752 A JP 2011118752A
Authority
JP
Japan
Prior art keywords
processing
pixel position
unit
processing task
frame memory
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
JP2009276672A
Other languages
English (en)
Other versions
JP5185242B2 (ja
Inventor
Yasutaka Tanabe
靖貴 田邉
Takashi Miyamori
高 宮森
Shunichi Ishiwatari
俊一 石渡
Katsuyuki Kimura
克行 木村
Keiri Nakanishi
圭里 中西
Masato Sumiyoshi
正人 住吉
Ryuji Haneda
隆二 羽田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009276672A priority Critical patent/JP5185242B2/ja
Priority to US12/876,599 priority patent/US8413123B2/en
Publication of JP2011118752A publication Critical patent/JP2011118752A/ja
Application granted granted Critical
Publication of JP5185242B2 publication Critical patent/JP5185242B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level

Landscapes

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

Abstract

【課題】フレームメモリを利用するように記述されたソースファイルから処理遅延量及び必要なラインメモリのサイズ抽出することで開発効率を向上することができるコンパイル装置を提供する。
【解決手段】コンパイル装置1は、ソースファイル107に記述されている複数の処理タスク21a〜21d間の処理遅延量を各処理タスク21a〜21dが処理する各画素の処理状態に応じて算出する処理遅延量解析部16と、各処理タスク21a〜21dの読み込み先のフレームメモリのアクセス範囲に基づいて、各処理タスク21a〜21d毎に必要となるラインメモリのサイズを算出するラインメモリ量判定部17とを有する。そして、コンパイル装置1は、処理遅延量及び必要となるラインメモリのサイズに基づいて、複数の処理タスク21a〜21dをパイプライン実行可能な命令コードに変換するパイプライン化部18を有する。
【選択図】図2

Description

本発明は、コンパイル装置に関し、特に、フレームメモリを用いるように記述されたソースプログラムをパイプライン実行可能な命令コードに変換するコンパイル装置に関する。
従来、入力画像データにデジタル信号処理を施す画像処理では、例えば、カメラ等のセンサ入力から入力画像データを受け取り、入力画像データの全体に欠陥画素補正の処理を行う。そして、画像処理プロセッサは、欠陥画素補正の処理を実行後に得られた出力画像データとしての中間画像データを後段の処理、例えば、シェーディング補正への入力とし、シェーディング補正の処理を実行後に得られる出力画像データを、さらに後段の処理の入力として利用するといったように、画像データを処理間の中間データとして各処理を施すことなどがある。
このように、欠陥画素補正及びシェーディング補正等の各処理タスクが、入力画像データを受け取り、入力画像データのデータサイズと同一のデータサイズのデータを出力画像データとして出力し、後段の処理がその結果を受けて処理を行う場合、各処理タスクのプログラミング記述は、入力画像データのサイズ分だけのデータを確保されたメモリ領域(フレームメモリ)を利用するように記述して実装するとプログラミングが容易であり、処理の開発、改変がし易い。
しかしながら、各処理タスク間において入力画像データのサイズ分のデータを授受する場合には、入力画像データのサイズ分のデータを保持するフレームメモリが必要になる。具体的には、入力画像データのサイズが20MByteの場合、入力画像データを保持するために、20MByteのフレームメモリを必要とし、さらに中間画像データを保持するために、20MByteのフレームメモリを必要とし、処理全体では、合計で40MByteのメモリ領域が必要となる。
そこで、組み込み機器等にこのような処理を実装する場合には、各処理タスクがある画素位置のデータを算出するために、入力データの限定的な範囲のデータを参照することを利用し、各処理タスクをパイプライン実行するように変更し、各処理間に滞留させるデータ量を必要最低限にする方法が一般的に用いられる。
例えば、ライン処理をパイプライン制御で行う複数の画像処理手段を有する画像処理装置が提案されている(例えば、特許文献1参照)。
このように、処理タスクをパイプライン実行するように変更する場合、例えば、欠陥画素補正を行う処理タスクが、中間画像データの垂直方向座標がv及び水平方向座標がhの位置に書き込むデータを演算するために、入力画像データの垂直方向座標のv−1〜v+1及び水平方向座標のh−1〜h+1の矩形範囲のデータを読み込み、読み込んだデータに演算を行い、出力データを書き込むという処理を行うとする。一般に、このようなパイプライン実行を行う場合、あるタイミングで書き込まれる入力画像データの垂直方向座標をVin、水平方向座標をHinで表し、欠陥画素補正の処理タスクが演算する中間画像のデータの画像中の垂直方向座標の位置をVa、水平方向座標の位置をHaで表すときに、欠陥画素補正の処理タスクが読み込むデータの範囲に応じ、Vin及びHinと、Va及びHaとの間に垂直方向座標に−1、水平方向座標に−1の相対的な座標位置の差、即ち、処理に遅延を設ける必要がある。この相対的に座標位置の差を処理遅延量という。そしてVin及びHinの座標位置の入力画像データの書き込みを行うたびに、Vin及びHinをラスタスキャン順になるようにインクリメントし、欠陥画素補正の処理タスクのVa及びHa位置のデータの演算を行い、Va及びHaもラスタスキャン順となるようにインクリメントする。
この入力画像データの書き込みと処理タスクの実行処理を1つの実行周期として、1画素ずつラスタスキャン順に各画素位置をインクリメントしつつ、処理を繰り返す場合、各処理タスクに適切な処理遅延量を設ける必要がある。
ここで、ラスタスキャン順とは、入力画像データの左上を基準にし、水平方向座標を進めるようにインクリメントし、入力画像データの右端までインクリメントされると、垂直方向座標を1増加し、水平方向座標を0にリセットすることにより、垂直方向座標、水平方向座標を増加させる処理である。
また、このようにパイプライン実行を行う場合、ある実行周期αで、欠陥画素補正の処理タスクがある垂直方向座標Vaα、水平方向座標Haαの処理を実行するためには、入力画像の(Vaα−1,,Haα−1)〜(Vaα+1,Haα+1)の矩形範囲データを必要とする。この矩形範囲データは、(Vinα−2, Hinα−2)〜(Vinα,Hinα)の矩形範囲と等価である。
次の実行周期α+1では、欠陥画素補正の処理タスクは、入力画像の(Vaα−1,Haα)〜(Vaα+1,Haα+2)の矩形範囲データを必要とする。実行周期α+1でアクセスする矩形範囲データは、(Vinα−2,Hinα−1)〜(Vinα,Hinα+1)の矩形範囲となる。
このため、実行周期αでは、入力画像の(Vinα−2,Hinα−2)の位置のデータがアクセスされるが、実行周期α+1では、(Vinα−2,Hinα−2)の位置のデータは不要となり、代わりに(Vinα,Hinα+1)の位置のデータが新たに必要となる。
このため、パイプライン実行した場合には、ある実行周期γでは、入力画像上での(Vaγ−1,Haγ−1)〜(Vaγ+1,Haγ+1)の座標相当の領域のデータ、即ち、入力画像の(Vinγ−2,Hinγ−2)〜(Vinγ,Hinγ)の領域のデータ分、つまり、2ライン+3画素相当のデータを格納する領域をメモリ上に確保しておけば、欠陥画素補間の処理タスを実行することが可能となる。このようにパイプライン実行する場合、各処理間のデータ受け渡しを入力画像データ一枚分のメモリ領域を確保する場合と比較し、処理実行時に必要なメモリ量を大幅に削減する事が可能となる。
なお、このようにパイプライン実行する処理タスク間でのデータ授受に利用される複数ライン+複数画素分のデータのみを保持するメモリ領域を、以下ではラインメモリという。
しかしながら、このように、パイプライン実行し、メモリ量を削減する場合、ユーザは、ラインメモリを利用するように処理タスクを記述する必要がある。ユーザは、処理タスク間のデータアクセスの関係性を考慮し、各処理に適切な処理遅延量を付加するとともに、必要なラインメモリのサイズを意識しながらソースファイル内に処理タスクを記述する必要があり、開発効率が低下するという問題がある。
また、ユーザは、処理タスクの処理内容を変更した場合、その変更内容に応じて、処理遅延量及び必要なラインメモリのサイズを変更する必要があり、変更のための処理遅延量及び必要なラインメモリのサイズを再度算出するために、開発効率が低下するという問題がある。さらに、ユーザが、処理遅延量及び必要なラインメモリのサイズの判定を間違えた場合、問題の発見が容易でないという問題がある。特に実装する処理が複雑な場合、即ち、各処理間でのデータの受け渡しが複雑な場合、これらの問題は顕著となる。
このように、ラインメモリを利用するように処理タスクを記述する場合、フレームメモリを利用するように処理タスクを記述する場合に比べ、開発効率が低下してしまうという問題があった。
特開2005−11380号公報
本発明は、フレームメモリを利用するように記述されたソースファイルから処理遅延量及び必要なラインメモリのサイズ抽出することで開発効率を向上することができるコンパイル装置を提供することを目的とする。
本発明の一態様によれば、フレームメモリを用いるように記述されたソースプログラムをコンパイルするコンパイル装置であって、前記ソースプログラム内の複数の処理タスク間の処理遅延量を、各処理タスクが処理する各画素の処理状態に応じて算出する処理遅延量算出部と、前記各処理タスクの読み込み先のフレームメモリのアクセス範囲に基づいて、前記各処理タスク毎に必要となるラインメモリのサイズを算出するラインメモリ量算出部と、前記処理遅延量及び前記必要となるラインメモリのサイズに基づいて、前記複数の処理タスクをパイプライン実行可能な命令コードに変換する命令コード変換部と、を有することを特徴とするコンパイラ装置を提供することができる。
本発明のコンパイラ装置によれば、フレームメモリを利用するように記述されたソースファイルから処理遅延量及び必要なラインメモリのサイズ抽出することで開発効率を向上することができる。
本発明の第1の実施の形態に係る情報処理システムの構成を示すブロック図である。 コンパイル装置の構成を示すブロック図である。 ソースファイルに記述される処理タスクの例を説明するための説明図である。 ソースファイルに記述される処理タスクの例を説明するための説明図である。 接続関係グラフ生成部によって生成される有向グラフの例を説明するための説明図である。 図4の有向グラフにアクセス範囲の情報を付加した例を説明するための説明図である。 画素位置の情報を算出する処理の例を説明するためのフローチャートである。 図5に対して図6のフローチャートを実行した結果を説明するための説明図である。 処理タスクの読み込み画素位置と書き込み画素位置との関係を説明するための説明図である。 必要となるラインメモリのサイズについて説明するための説明図である。 パイプライン化部の処理の流れの例を説明するためのフローチャートである。 第2の実施の形態に係る画像処理プロセッサの構成を示すブロック図である。
以下、図面を参照して本発明の実施の形態について詳細に説明する。
(第1の実施の形態)
まず、図1に基づき、本実施の形態に係る情報処理システムの構成を説明する。図1は、本発明の第1の実施の形態に係る情報処理システムの構成を示すブロック図である。
図1に示すように、情報処理システム100は、本体装置101と、各種データを記憶する記憶装置102と、各種データを表示する表示装置103とを有して構成されている。本体装置101は、パーソナルコンピュータ等のコンピュータ装置本体であり、CPU101a、図示しない主メモリなどを搭載している。また、本体装置101は、入力装置として、キーボード104及びマウス105が接続されている。本体装置101は、これらの入力装置からの指示に基づいて、各種プログラムを実行する。
記憶装置102には、コンパイル機能のプログラムを有するコンパイラ106と、例えば、C言語等のプログラミング言語により記述されたソースプログラムとしてのソースファイル107とが記憶されている。
ユーザは、このソースファイル107を入力とし、コンパイラ106を本体装置101上において実行することにより、後述するオブジェクトファイル108を得ることができる。このオブジェクトファイル108は、図示を省略しているが、記憶装置102に記憶される。このように、本体装置101上で実行されるコンパイラ106が、本実施の形態のコンパイル装置を構成する。なお、コンパイラ106、ソースファイル107及びオブジェクトファイル108のそれぞれは、記憶装置102に記憶されるが、他の記憶媒体に記憶されてもよい。
ここで、このように構成されるコンパイル装置の構成について説明する。図2は、コンパイル装置の構成を示すブロック図である。図2に示すように、コンパイル装置1は、接続関係グラフ生成部11と、アクセス範囲抽出部12と、アクセス範囲情報付加部13と、基準ノード決定部14と、画素位置解析/付加部15と、処理遅延量解析部16と、ラインメモリ量判定部17と、パイプライン化部18とを有して構成されている。
コンパイラ装置1は、フレームメモリを利用するように記述されたソースファイル107を受け取り、パイプライン実行可能なオブジェクトファイル108を生成する。
ここで、コンパイラ装置1に入力されるソースファイル107に記述される処理タスクについて説明する。
図3A及び図3Bは、ソースファイルに記述される処理タスクの例を説明するための説明図である。
図3A及び図3Bの処理タスクは、それぞれフレームメモリを利用するように記述されている。ソースファイル107は、図3A及び図3Bに示す処理タスクを複数有して構成されている。各処理タスクは、それぞれ0及び1行目において、垂直方向座標及び水平方向座標をラスタスキャン順に走査するようにインクリメントする2重ループが記述され、2行目〜5行目において、この2重ループの中で各処理タスクの垂直方向座標がv及び水平方向座標がhの位置での処理が記述されている。
2重ループの中の処理では、1個以上のフレームメモリを入力として受け取り、入力フレームに対し、(v,h)を中心とし、その周辺をアクセスする。アクセス先は、コンパイル時に静的に決定される。
例えば、図3Aの3行目では、入力フレームとして“inFrame”の(v,h)を中心に、垂直方向に−1及び水平方向に−1ずれた位置のデータと、垂直方向に+1及び水平方向に+1ずれた位置のデータとをアクセスする。
また、2重ループの中の処理では、1つ以上のフレームメモリを入力フレームとして受け取り、出力フレームの(v,h)の位置にデータを1回だけ書き込む。例えば、図3Aでは、入力フレームとして“inFrame”という1つのフレームメモリを受け取り、図3Bでは、入力フレームとして“inAFrame”及び“inBFrame”という2つのフレームメモリを受け取っている。
なお、処理タスクは、C言語による記述として説明しているが、上述した処理を実行するように記述されていれば、他の言語によって記述されていてもよい。
このように記述されたソースファイル107は、コンパイラ装置1の接続関係グラフ生成部11に入力される。
有向グラフ生成部としての接続関係グラフ生成部11は、図3A及び図3Bに示す処理タスクの記述を含むソースファイル107を入力として受け取り、図4に示す有向グラフを生成する。
図4は、接続関係グラフ生成部によって生成される有向グラフの例を説明するための説明図である。
まず、接続関係グラフ生成部11は、ソースファイル107の記述から処理タスクの単位を抽出し、抽出した各処理タスクをノードとする。
次に、接続関係グラフ生成部11は、各処理タスクがアクセスするフレームメモリを抽出し、抽出した各フレームメモリをノードとする。そして、接続関係グラフ生成部11は、各処理タスクのノードと、その処理タスクがデータを読み出すフレームメモリのノードとを接続する有向のエッジを生成し、接続する。同様に、接続関係グラフ生成部11は、各処理タスクのノードと、その処理タスクがデータを書き込むフレームメモリのノードとを接続する有向のエッジを生成し、接続する。さらに、接続関係グラフ生成部11は、生成したエッジにそれぞれ異なるラベルを付加する。
例えば、図4では、処理タスクのノードとして、処理タスク21a〜21dが抽出され、フレームメモリのノードとして、フレームメモリ22a〜22eが抽出されている。そして、処理タスク21a〜21d及びフレームメモリ22a〜22eのアクセス関係から、エッジ23a〜23jが生成され、接続されている。エッジ23a〜23jには、それぞれラベルa〜jが付加されている。
次に、アクセス範囲抽出部12は、各処理タスクについて、読み込み先のフレームメモリ毎に、その処理タスクがある周期で処理する画素(Vx,Hx)を中心に、どの範囲でアクセスするかを解析し、アクセスする範囲の最大値及び最小値を、それぞれ最大アクセス範囲及び最小アクセス範囲として抽出する。
例えば、図3Aの記述の処理タスクでは、フレームメモリ“inFrame”に対し最大で垂直方向に+1、水平方向に+1のデータをアクセスし、最小で垂直方向に−1、水平方向に−1のデータをアクセスする。これにより、この処理タスクのフレームメモリ“inFrame”に対する最大アクセス範囲は(1,1)、最小アクセス範囲は(−1,−1)となる。なお、(x,y)の記述において、x及びyは、それぞれ垂直方向及び水平方向のアクセス範囲を示している。
また、図3Bの記述の処理タスクでは、フレームメモリ“inAFrame”に対し最大で垂直方向に+1、水平方向に+1のデータをアクセスし、最小で垂直方向に−1、水平方向に−1のデータをアクセスする。また、この処理タスクは、フレームメモリ“inBFrame”に対し最大で垂直方向に+1、水平方向に−1のデータを、最小で垂直方向に−1、水平方向に+1のデータをアクセスする。これにより、この処理タスクのフレームメモリ“inAFrame”に対する最大アクセス範囲は(1、1)、最小アクセス範囲は(−1,−1)となり、フレームメモリ“inBFrame”に対する最大アクセス範囲は(1,−1)、最小アクセス範囲は(−1,1)となる。
次に、アクセス範囲情報付加部13は、アクセス範囲抽出部12によって抽出された最大アクセス範囲及び最小アクセス範囲の情報を、接続関係グラフ生成部11によって生成された有向グラフの対応するエッジのラベルに付加する。
図5は、図4の有向グラフにアクセス範囲の情報を付加した例を説明するための説明図である。アクセス範囲が付加されるエッジは、フレームメモリのノードから処理タスクへのノードに接続されたエッジのみとなる。即ち、図5の例では、アクセス範囲が付加されるエッジは、エッジ23c、23d、23f、23h及び23iとなる。
例えば、図4の処理タスク21cがある画素位置(Vx,Hx)においては、フレームメモリ22aに対して、(Vx,Hx)を中心に、最小で垂直方向に−2、水平方向に−2の位置から、最大で垂直方向に+2、水平方向に+2の位置までアクセスする場合、図5に示すように、アクセス範囲情報付加部13は、対応するエッジ23fのラベルfに、最大アクセス範囲(図5では最大と略す)として(2,2)を付加し、最小アクセス範囲(図5では最小と略す)として(−2,−2)を付加する。
次に、基準ノード決定部14は、パイプライン実行する際に、最も遅れて実行される処理タスク、あるいは、最も遅れて書き込まれるフレームメモリを基準ノードに決定する。そして、基準ノード決定部14は、その処理タスクが書き込みを行う画素位置、あるいは、フレームメモリに書き込まれるデータの画素位置を(0,0)として、この画素位置の情報を画素位置情報として基準ノードに設定する。具体的には、基準ノード決定部14は、出次数が0のノード、即ち、書き込みを行わない処理タスクのノード、あるいは、読み込みが行われないフレームメモリのノードに対し、画素位置情報として(0,0)を設定する。(0,0)の値は、順に垂直方向の座標位置、水平方向の座標位置を表わす。
図5の例では、出次数が0のノードは、読み込みが行われないフレームメモリ22eとなる。基準ノード決定部14は、フレームメモリ22eを基準ノードに決定し、このフレームメモリ22eのノードに対し、画素位置情報として(0,0)を設定する。
次に、画素位置算出付加部としての画素位置解析/付加部15は、基準ノード決定部14で設定した値、即ち、画素位置情報を基準に、パイプライン実行される際に、各フレームメモリに書き込まれるデータの画素位置の情報及び各処理タスクが処理を実行する画素位置の情報を算出し、対応するフレームメモリ及び処理タスクに画素位置の情報を付加する。
具体的には、画素位置解析/付加部15は、出次数が0のノードをノードxとし、ノードxに入力されるエッジをエッジαとし、エッジαを出力しているノードをノードyとし、ノードx、エッジα及びノードyに対し、図6に示す処理を行う。即ち、図5の例では、フレームメモリ22eがノードx、エッジ23jがエッジα、処理タスク21dがノードyとなる。
図6は、画素位置の情報を算出する処理の例を説明するためのフローチャートである。また、図7は、図5に対して図6のフローチャートを実行した結果を説明するための説明図である。
まず、終点にノードxを持つエッジαについて、エッジαのラベルにノードxの画素位置情報が付加される(ステップS1)。図7の例では、エッジ23jのラベルjにフレームメモリ22eの画素位置情報である(0,0)が付加される。次に、エッジαの始点のノードyに、画素位置情報が設定されているか否かが判定される(ステップS2)。この処理では、処理タスク21dに画素位置情報が設定されているか否かが判定される。画素位置情報が設定されていないと判定された場合、NOとなり、ノードyが処理タスクか否かが判定される(ステップS3)。ノードyが処理タスクの場合、YESとなり、エッジαの画素位置情報をノードyの画素位置情報として設定する(ステップS4)。図7の例では、エッジ23jの画素位置情報である(0,0)が処理タスク21dの画素位置情報として設定される。
次に、ノードyを始点に持つエッジβについて、エッジβの画素位置情報が、ノードyの画素位置情報よりも大きければ、ノードyの画素位置情報を、エッジβに設定し、かつ、エッジβの画素位置情報を、エッジβの終点に接続されるノードzの画素位置情報に設定する(ステップS5)。ノードyを始点に持つエッジβについて全て処理されたか否かが判定される(ステップS6)。全て処理されてない場合、NOとなり、ステップS5に戻り同様の処理を繰り返す。一方、全て処理された場合、YESとなり、ノードyの入力次数が1以上か否かが判定される(ステップS7)。入力次数が1以上の場合、YESとなり、ノードyをノードxに置き換えて(ステップS8)、ステップS1に戻り、同様の処理を繰り返す。即ち、ノードxが処理タスク21d、エッジαがエッジ23h、ノードyがフレームメモリ22cとなる。
この場合、ステップS1において、エッジ23hに処理タスク21dの画素位置情報が付加され、ステップS3において、ノードyがフレームメモリ22aのため、NOと判定される。ステップS3において、NOと判定された場合、エッジαの画素位置情報から最大アクセス範囲の値を引いた値がノードyの画素位置情報として設定され(ステップS9)、ステップS7に進む。図7では、エッジ23hの画素位置情報の(0,0)から最大アクセス範囲の(1,1)を引いた値である(−1,−1)がフレームメモリ22cの画素位置情報として設定される。
一方、ステップS2において、画素位置情報が設定されていると判定された場合、YESとなり、ノードyが処理タスクか否かが判定される(ステップS10)。ノードyが処理タスクと判定された場合、YESとなり、エッジαの画素位置情報と、ノードyの設定済み画素位置情報とを比較し、小さい方の値がノードyの画素位置情報として設定され(ステップS11)、ステップS5に進む。一方、ノードyが処理タスクでないと判定された場合、NOとなり、エッジαの画素位置情報から最大アクセス範囲の値を引いた値と、ノードyの設定済みの画素位置情報とを比較し、小さい方の値がノードyの画素位置情報として設定され、ステップS7に進む。ステップS7において、ノードyの入力次数1以上でないと判定された場合、処理を終了する。同様の処理を処理タスク21aまで実行すると、入力次数が0となり、処理を終了する。
図7において、フレームメモリ22aの画素位置情報は、処理タスク21cの画素位置情報(−1,0)と、エッジ23fの最大アクセス範囲(2,2)とに基づいて、(−3,−2)になる。しかし、処理タスク21aの画素位置情報は、フレームメモリ22b及びエッジ23bの画素位置情報に基づいて、(−3,−3)になる。そのため、ステップS5の処理により、フレームメモリ22a及びエッジ23aの画素位置情報は、それぞれ(−3,−3)に設定される。
この図6の処理は、例えば、図8に示す処理タスクが読み込みを行う画素位置と、処理タスクが書き込みを行う画素位置との関係性を、起点となる処理タスクを基準に求めていく処理である。
図8は、処理タスクの読み込み画素位置と書き込み画素位置との関係を説明するための説明図である。図8の例では、処理タスクの書き込み先のフレームメモリの画素位置 (Vaγ,Haγ)が(−2,−2)である時、処理タスクから、フレームメモリへのエッジの画素位置も、(−2,−2)となり、処理タスクの画素位置も(−2,−2)となる。さらに処理タスクからその入力エッジについて辿り、そのエッジの画素位置も(−2,−2)となる。そのエッジを出力しているノード、即ち、フレームメモリの画素位置は、(−2,−2)からエッジの最大アクセス範囲(1,1)を引き、図8に向かって左側のフレームメモリの画素位置(Vinγ,Hinγ)は、(−3,−3)と判定される。
このように、ある2つの処理タスク間の処理遅延量は、それぞれの対応する処理タスクのノードの画素位置の情報の差分に相当する。例えば、図7の処理タスク21bの画素位置は(−1,−1)、処理タスク21dの画素位置は(0,0)となっている。このため、処理タスク21bと21dとの間の処理遅延量は(1,1)となり、処理タスク21bが、例えば、垂直方向座標が10及び水平方向座標が12の画素位置のデータを処理するパイプライン処理の周期では、処理タスク21dは、それぞれ垂直方向座標が9及び水平方向座標が11の画素位置のデータを処理するように実行すればよい。即ち、処理タスク21dは、その処理中に画像位置(9,11)から(+1,+1)の画素位置のデータを取得するが、取得するデータは、処理タスク21bによって書き込み済みとなる。
次に、処理遅延量算出部としての処理遅延量解析部16は、各処理タスク間の処理遅延量を各処理タスクが処理する各画素の状況に応じて判定する。具体的には、まず、入力次数が0のノード、つまり、読み込みを行わない処理タスクのノード、あるいは、書き込みが行われないフレームメモリのノードのうち、最小の画素位置情報を持つノードの画素位置を求める。図7の例では、入力次数が0のノードは、処理タスク21aのみで、その画素位置情報は、(−3,−3)である。そして、この画素位置情報と、次に実行される処理タスクの画素位置情報から、次に実行される処理タスクの処理遅延量を決定する。具体的には、処理遅延量解析部16は、ある処理タスクの画素位置情報から次に実行される処理タスクの画素位置情報を減算して処理遅延量を算出する。
例えば、パイプライン実行する際の処理タスク21bの処理遅延量は、処理タスク21aの画素位置情報(−3,−3)から処理タスク21bの画素位置情報(−1,−1)を減算して得られる(−2,−2)となる。即ち、処理タスク21bは、処理タスク21aが処理を実行する画素位置から、垂直座標方向に−2、 水平座標方向に−2ずれた画素位置を処理すればよいことになる。
次に、ラインメモリ量算出部としてのラインメモリ量判定部17は、各フレームメモリをラインメモリとして確保した場合に必要となるラインメモリのサイズを算出する。このラインメモリ量判定部17は、各処理タスクが読み込み先のフレームメモリのアクセス範囲に基づいて、各処理タスク毎に必要となるラインメモリのサイズを算出する。
図9は、必要となるラインメモリのサイズについて説明するための説明図である。必要となるラインメモリのサイズは、フレームメモリに設定された画素位置情報と、そのフレームメモリに対する読み込みエッジがもっとも遅れてアクセスする画素位置情報との差分から算出される。具体的には、以下のように求める。
算出するフレームメモリに対してアクセスされる最大の画素位置情報を得る。これはパイプライン実行する際にもっとも遅れて実行する処理タスクから、どれだけ先の画素位置のデータをメモリに保存しておく必要があるかを算出する手順となる。具体的には、フレームメモリのノードの全ての出力エッジについて、画素位置情報から最小アクセス範囲を減算し、その結果の最大値を求める。
図9の例では、フレームメモリ22aのエッジ23fについては、画素位置情報(−1,0)から最小アクセス範囲(−2,−2)を減算し(1,2)を得る。また、フレームメモリ22aのエッジ23cについては、画素位置情報(−1,−1)から最小アクセス範囲(−1,−1)を減算し(0,0)を得る。この結果、最大値は、(1,2)となる。
そして、ラインメモリ量判定部17は、対応するフレームメモリ22aの画素位置情報と、この最大値の結果の差分を求める。図9例では、(1,2)−(−3,−3)により、(4,5)を得る。
この結果の垂直方向座標の値が必要なライン数となり、水平方向座標の値に1を足した値が必要な画素数となる。図9の例では、フレームメモリ22aの必要なラインメモリのサイズは4ラインと6画素分になる。
このように、接続関係グラフ生成部11〜ラインメモリ量判定部17の各処理により、各処理タスクをパイプライン実行する際の各処理タスク間の処理遅延量、各処理タスク間で授受されるデータを格納するラインメモリのサイズが判定される。命令コード変換部としてのパイプライン化部18は、これらの処理遅延量及びラインメモリのサイズに基づいて、各処理タスクがパイプライン実行されるような命令コードを生成する。
具体的には、各処理タスクがパイプライン実行されない場合、ある処理タスクを全画素について実行した後、次の処理タスクを実行する処理を、図10に示す処理に変更する。
図10は、パイプライン化部の処理の流れの例を説明するためのフローチャートである。
まず、各処理タスクが処理を実行する画素位置(V,H)が適切に初期化される(ステップS21)。ここで、画素位置が適切に初期化されるとは、処理遅延量解析部16によって得られた処理遅延量を画素位置に付加することである。次に、(Vx,Hx)の画素位置について、処理タスクxの処理が実行され(ステップS22)、(Vy,Hy)の画素位置について、処理タスクyの処理が実行される(ステップS23)。なお、ステップS22及びS23では、各処理タスクが処理を実行する画素位置が適切な位置、ここでは、画像サイズ内に収まっている時にのみ実行するようにする。
次に、各処理タスクが処理を実行する画素位置(V,H)がラスタスキャン順にインクリメントされる(ステップS24)。最後に、全処理タスクの処理の実行が終了したか否かが判定される(ステップS25)。全処理タスクの処理の実行が終了していないと判定された場合、NOとなり、ステップS22に戻り、同様の処理を繰り返す。一方、全処理タスクの処理の実行が終了したと判定された場合、YESとなり、処理を終了する。
なお、図10のフローチャートでは、2つの処理タスクをパイプライン実行する場合について説明したが、3つ以上の処理タスクをパイプライン実行するようにしてもよい。この場合、3つ以上の処理タスクの実行をステップS21とステップS24の間に入れるように図10のフローチャートを変更すればよい。
また、パイプライン化部18は、フレームメモリとして確保されていた領域を、それぞれ、ラインメモリとして確保するように変更する。各ラインメモリのサイズは、対応するフレームメモリのノードにおいて、ラインメモリ量判定部17により判定されたサイズを確保する。
そして、パイプライン化部18は、各処理タスクがフレームメモリへ書き込むデータアクセスを、確保した対応するラインメモリに対し行うようにストア先アドレスを変更する。
ラインメモリ中のどのアドレスに書き込むかは、以下のように判定する。フレームメモリを利用している場合に処理タスクxがデータを書き込むアドレスは、フレームメモリの先頭から (Vx×画像の横幅+Hx)×1画素あたりのバイト数だけ進んだアドレス、即ち、フレームメモリでのオフセットアドレスの位置となる。
ラインメモリのサイズは、NラインとM画素のサイズで確保されている場合、(N×画像の横幅 + M)×1画素あたりのバイト数となる。
ラインメモリを利用する場合の書き込み先のアドレスは、フレームメモリでのオフセットアドレスをラインメモリのサイズで割った余りの値となる。
また、パイプライン化部18は、各処理タスクがフレームメモリから読み込むデータアクセスも、確保した対応するラインメモリに対し行うようにロード先アドレスを変更する。
ラインメモリ中のどのアドレスから読み込むかは、以下のように判定する。フレームメモリを利用している場合に処理タスクxが、Voffset,Hoffset位置だけVx、Hxからずれた位置のデータを読み込む場合、そのアドレスは、フレームメモリの先頭から((Vx+Voffset)×画像の横幅 + (Hx+Hoffset))×1画素あたりのバイト数だけ進んだアドレス、即ち、フレームメモリでのオフセットアドレスの位置となる。
ラインメモリのサイズは、NラインとM画素のサイズで確保されている場合、(N×画像の横幅+M)×1画素あたりのバイト数となる。
ラインメモリを利用する場合に読み込むアドレスは、フレームメモリでのオフセットアドレスをラインメモリのサイズで割った余りの値となる。
以上のように、コンパイル装置1は、フレームメモリを利用するように記述されたソースファイルから処理遅延量及び必要なラインメモリのサイズを算出し、パイプライン実行するオブジェクトファイルを生成するようにした。この結果、ユーザは、パイプライン実行を行なう際に必要となる処理遅延量及び必要なラインメモリを算出する必要がなくなる。
よって、本実施の形態のコンパイル装置によれば、フレームメモリを利用するように記述されたソースファイルから処理遅延量及び必要なラインメモリのサイズ抽出することで開発効率を向上することができる。
(第2の実施の形態)
次に、第2の実施の形態について説明する。第2の実施の形態では、第1の実施の形態のコンパイル装置1によって得られる各処理タスクの実行内容のみを含む命令列、処理遅延量及び必要なラインメモリのサイズを受け取り、処理を実行する画像処理プロセッサについて説明する。
図11は、第2の実施の形態に係る画像処理プロセッサの構成を示すブロック図である。
図11に示すように、画像処理プロセッサ31は、画像入力ユニット41と、命令メモリ42と、相対位置レジスタ43と、命令フェッチ/デコードユニット44と、メモリアクセスユニット45と、データメモリ46と、演算器47とを有する。また、画像入力ユニット41は、画像入力位置カウンタ48を有する。命令フェッチ/デコードユニット44は、画素位置計算ユニット49と、命令デコーダ50とを有する。
本実施の形態の画像処理プロセッサ31は、第1の実施の形態の処理遅延量解析部16によって得られた処理遅延量を相対位置レジスタ43に設定する。また、本実施の形態の画像処理プロセッサ31は、第1の実施の形態のラインメモリ量判定部によって得られたラインメモリのサイズに応じ、データメモリ46上に必要な領域を確保する。
画像入力ユニット41には、図示しない入力センサ等から入力画像データが供給される。画像入力ユニット41の画像入力位置カウンタ48は、入力画像データおける画素位置をカウントし、このカウント値を画素位置計算ユニット49に出力する。また、画像入力位置カウンタ48は、入力画像データに応じ画素位置をラスタスキャン順にインクリメントする。
命令メモリ42には、第1の実施の形態のコンパイル装置1によって得られる各処理タスクの実行内容のみを含む命令列が格納される。ラインメモリ領域へのロード命令は、各命令が処理する画素位置を中心に、どの位置だけずれた値を参照するかによってアクセス先が指定されている。また、ラインメモリ領域へのストア命令は、アクセス先のラインメモリ領域を一意に決めるラインメモリ領域情報を含む。書き込み先のアドレスは、画素位置計算ユニット49によって算出された画素位置となる。なお、図10のステップS21、S24及びS25の処理は、画像処理プロセッサ31で自動に行うため、この命令列には、図10のステップS22及びS22の処理のみが含まれる。
命令メモリ42に格納される各命令列は、相対位置レジスタ43を参照するためのレジスタ番号を有している。このレジスタ番号は、相対位置レジスタ43に入力され、レジスタ番号によって指定された処理遅延量が画素位置計算ユニット49に入力される。
命令フェッチ/デコードユニット44は、命令メモリ42に格納されている命令をフェッチする。画素位置計算ユニット49は、画像入力位置カウンタ48の値から相対位置レジスタ43の値を引いて、その命令が処理する画素位置(Vx,Hx)を算出する。画素位置計算ユニット49は、この画素位置(Vx,Hx)の情報をメモリアクセスユニット45に出力する。
命令デコーダ50は、命令メモリから入力される命令をデコードし、デコードした命令及びロードストアアクセス情報をそれぞれ演算器47及びメモリアクセスユニット45に出力する。
メモリアクセスユニット45は、命令デコーダ50から入力されるロードストアアクセス情報の内容に基づいて、第1の実施の形態のパイプライン化部18で行っているストア先アドレスへの変換を行い、ストアデータをデータメモリ46に書き込む。また、メモリアクセスユニット45は、命令デコーダ50から入力されるロードストアアクセス情報の内容に基づいて、第1の実施の形態のパイプライン化部18で行なっているロード先アドレスへの変換を行い、データメモリ46からデータを読み出し演算器47に出力する。
演算器47は、メモリアクセスユニット45からのロードデータに命令デコーダから出力された命令を実行し、実行結果をストアデータとしてメモリアクセスユニット45に出力する。
以上の構成により、画像処理プロセッサ31は、第1の実施の形態のコンパイル装置1によって得られる各処理タスクの実行内容のみを含む命令列、処理遅延量及び必要なラインメモリのサイズを受け取り、処理を実行することができる。
なお、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
また、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、CD−ROM等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のコンパイル装置を実現することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1…コンパイル装置、11…接続関係グラフ生成部、12…アクセス範囲抽出部、13…アクセス範囲情報付加部、14…基準ノード決定部、15…画素位置解析/付加部、16…処理遅延量解析部、17…ラインメモリ量判定部、18…パイプライン化部、21a〜21d…処理タスク、22a〜22e…フレームメモリ、23a〜23j…エッジ、31…画像処理プロセッサ、41…画像入力ユニット、42…命令メモリ、43…相対位置アドレス、44…命令フェッチ/デコードユニット、45…メモリアクセスユニット、46…データメモリ、47…演算器、48…画像入力位置カウンタ、49…画素位置計算ユニット、50…命令デコーダ、100…情報処理システム、101…本体装置、102…記憶装置、103…表示装置、104…キーボード、105…マウス、106…コンパイラ、107…ソースファイル、108…オブジェクトファイル。

Claims (5)

  1. フレームメモリを用いるように記述されたソースプログラムをコンパイルするコンパイル装置であって、
    前記ソースプログラム内の複数の処理タスク間の処理遅延量を、各処理タスクが処理する各画素の処理状態に応じて算出する処理遅延量算出部と、
    前記各処理タスクの読み込み先のフレームメモリのアクセス範囲に基づいて、前記各処理タスク毎に必要となるラインメモリのサイズを算出するラインメモリ量算出部と、
    前記処理遅延量及び前記必要となるラインメモリのサイズに基づいて、前記複数の処理タスクをパイプライン実行可能な命令コードに変換する命令コード変換部と、
    を有することを特徴とするコンパイル装置。
  2. 前記複数のフレームメモリに対する前記複数の処理タスクのアクセス状態に基づいて、前記複数の処理タスクのノードと、前記複数のフレームメモリのノードとを有向のエッジで接続した有向グラフを生成する有向グラフ生成部を有することを特徴とする請求項1に記載のコンパイル装置。
  3. 前記複数の処理タスクが、読み込み先のフレームメモリに対し、ある周期でアクセスするアクセス範囲を抽出するアクセス範囲抽出部と、
    前記アクセス範囲抽出部が抽出した前記アクセス範囲を対応する前記有向のエッジのラベルに付加するアクセス範囲付加部と、
    を有することを特徴とする請求項2に記載のコンパイル装置。
  4. パイプライン実行する際に、最も遅れて実行される処理タスク、あるいは、最も遅れて書き込まれるフレームメモリを基準ノードに決定し、決定した前記基準ノードに基準となる画素位置の情報を設定する基準ノード決定部と、
    前記基準ノード決定部で設定された前記基準となる画素位置の情報に基づいて、各フレームメモリに書き込まれるデータの画素位置の情報及び各処理タスクが処理を実行する画素位置の情報を算出し、それぞれ対応するフレームメモリ及び処理タスクに前記画素位置の情報を付加する画素位置算出付加部と、
    を有することを特徴とする請求項3に記載のコンパイル装置。
  5. 前記処理遅延量算出部は、前記複数の処理タスクのそれぞれに付加された前記画素位置の情報の差分を算出することにより、前記複数の処理タスク間の前記処理遅延量を算出することを特徴とする請求項4に記載のコンパイル装置。
JP2009276672A 2009-12-04 2009-12-04 コンパイル装置 Expired - Fee Related JP5185242B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009276672A JP5185242B2 (ja) 2009-12-04 2009-12-04 コンパイル装置
US12/876,599 US8413123B2 (en) 2009-12-04 2010-09-07 Compiling device and compiling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009276672A JP5185242B2 (ja) 2009-12-04 2009-12-04 コンパイル装置

Publications (2)

Publication Number Publication Date
JP2011118752A true JP2011118752A (ja) 2011-06-16
JP5185242B2 JP5185242B2 (ja) 2013-04-17

Family

ID=44083284

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009276672A Expired - Fee Related JP5185242B2 (ja) 2009-12-04 2009-12-04 コンパイル装置

Country Status (2)

Country Link
US (1) US8413123B2 (ja)
JP (1) JP5185242B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018512633A (ja) * 2015-01-22 2018-05-17 グーグル エルエルシー 画像信号プロセッサのための仮想ラインバッファ
US10321077B2 (en) 2015-04-23 2019-06-11 Google Llc Line buffer unit for image processor

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921269B2 (en) * 2010-12-20 2018-03-20 King Yuan Electronics Co., Ltd. Comparison device and method for comparing test pattern files of a wafer tester
US9836053B2 (en) 2015-01-04 2017-12-05 Zero Zero Robotics Inc. System and method for automated aerial system operation
US10126745B2 (en) 2015-01-04 2018-11-13 Hangzhou Zero Zero Technology Co., Ltd. System and method for automated aerial system operation
WO2017187275A2 (en) 2016-04-24 2017-11-02 Hangzhou Zero Zero Technology Co., Ltd. Aerial system propulsion assembly and method of use

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214801A (ja) * 1993-01-18 1994-08-05 Fujitsu Ltd 自動並列化翻訳装置及び方法
JPH1139167A (ja) * 1997-07-17 1999-02-12 Matsushita Electric Ind Co Ltd 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ
JP2003216943A (ja) * 2002-01-22 2003-07-31 Toshiba Corp 画像処理装置、この装置に用いられるコンパイラおよび画像処理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991465A (en) * 1996-08-29 1999-11-23 Apple Computer, Inc. Modular digital image processing via an image processing chain with modifiable parameter controls
JP3896087B2 (ja) * 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
JP4136825B2 (ja) * 2003-08-08 2008-08-20 キヤノン株式会社 画像処理装置および画像処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
US7263532B2 (en) * 2003-09-23 2007-08-28 Microsoft Corporation Region-based memory management for object-oriented programs
US20050288928A1 (en) * 2004-06-24 2005-12-29 Vladimir Bergl Memory efficient decoding graph compilation system and method
JP4056511B2 (ja) 2004-09-27 2008-03-05 富士通株式会社 画像処理装置
TWI281635B (en) * 2005-01-14 2007-05-21 Via Tech Inc Image frame processing method
US7694288B2 (en) * 2005-10-24 2010-04-06 Analog Devices, Inc. Static single assignment form pattern matcher
JP2007179165A (ja) * 2005-12-27 2007-07-12 Internatl Business Mach Corp <Ibm> Uml設計モデルから、確率的な性能評価モデルを導出するコンピュータ・プログラムおよび確率的な性能評価モデルを導出する方法
US7787021B2 (en) * 2006-10-30 2010-08-31 Texas Instruments Incorporated Programmable architecture for flexible camera image pipe processing
ATE456837T1 (de) * 2007-06-29 2010-02-15 Ericsson Telefon Ab L M Verschleierung von ausführungsspuren eines computerprogrammcodes
JP5100611B2 (ja) 2008-10-28 2012-12-19 株式会社東芝 画像処理装置
JP4901891B2 (ja) 2008-11-05 2012-03-21 株式会社東芝 画像処理プロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214801A (ja) * 1993-01-18 1994-08-05 Fujitsu Ltd 自動並列化翻訳装置及び方法
JPH1139167A (ja) * 1997-07-17 1999-02-12 Matsushita Electric Ind Co Ltd 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ
JP2003216943A (ja) * 2002-01-22 2003-07-31 Toshiba Corp 画像処理装置、この装置に用いられるコンパイラおよび画像処理方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018512633A (ja) * 2015-01-22 2018-05-17 グーグル エルエルシー 画像信号プロセッサのための仮想ラインバッファ
US10277833B2 (en) 2015-01-22 2019-04-30 Google Llc Virtual linebuffers for image signal processors
US10516833B2 (en) 2015-01-22 2019-12-24 Google Llc Virtual linebuffers for image signal processors
US10791284B2 (en) 2015-01-22 2020-09-29 Google Llc Virtual linebuffers for image signal processors
US10321077B2 (en) 2015-04-23 2019-06-11 Google Llc Line buffer unit for image processor
US10638073B2 (en) 2015-04-23 2020-04-28 Google Llc Line buffer unit for image processor
US11190718B2 (en) 2015-04-23 2021-11-30 Google Llc Line buffer unit for image processor

Also Published As

Publication number Publication date
US8413123B2 (en) 2013-04-02
JP5185242B2 (ja) 2013-04-17
US20110138371A1 (en) 2011-06-09

Similar Documents

Publication Publication Date Title
JP5185242B2 (ja) コンパイル装置
CN107533751B (zh) 用于图像处理器的线缓冲器单元
CN107533750B (zh) 虚拟图像处理器及在其上处理图像数据的方法和系统
US20070261038A1 (en) Code Translation and Pipeline Optimization
US9256408B2 (en) Optimizing texture commands for graphics processing unit
JP4718901B2 (ja) 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム
JP2007304840A (ja) コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム
JP2007183900A (ja) ハイレベル言語のハードウェア記述言語への自動変換方法
JP3938580B2 (ja) 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム
US20120284701A1 (en) Efficient conditional flow control compilation
US20140365735A1 (en) Computing apparatus, computing method, and computing program
KR20150035161A (ko) 그래픽 처리 장치 및 이의 동작 방법
JP5536593B2 (ja) 最適化装置、最適化方法およびコンパイラ・プログラム
WO2020004098A1 (ja) 情報処理装置、情報処理方法およびプログラム
JP3863544B1 (ja) 演算処理装置及び演算処理方法
US11842200B2 (en) Multi-modal gather operation
JP2006331391A (ja) データ処理装置及びデータ処理方法
JP2008071314A (ja) 組み込み用プログラム開発装置、及びプログラム自動生成方法
JP2009181558A (ja) プログラム変換装置
JP2005322110A (ja) プログラム変換装置及びプロセッサ
JP2011209859A (ja) 情報処理装置
JP5233354B2 (ja) プロパティ検証システム、プロパティ検証方法、及びプログラム
WO2007131089A2 (en) Code translation and pipeline optimization
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP2007272672A (ja) コンパイル最適化方法およびコンパイラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121220

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: 20121225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130117

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

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees