JP5071189B2 - プロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法およびプログラム - Google Patents

プロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法およびプログラム Download PDF

Info

Publication number
JP5071189B2
JP5071189B2 JP2008078273A JP2008078273A JP5071189B2 JP 5071189 B2 JP5071189 B2 JP 5071189B2 JP 2008078273 A JP2008078273 A JP 2008078273A JP 2008078273 A JP2008078273 A JP 2008078273A JP 5071189 B2 JP5071189 B2 JP 5071189B2
Authority
JP
Japan
Prior art keywords
processor
level description
instruction
unit
function
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 - Fee Related
Application number
JP2008078273A
Other languages
English (en)
Other versions
JP2009230683A (ja
Inventor
崇 竹中
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2008078273A priority Critical patent/JP5071189B2/ja
Publication of JP2009230683A publication Critical patent/JP2009230683A/ja
Application granted granted Critical
Publication of JP5071189B2 publication Critical patent/JP5071189B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、専用命令にバグがあっても、プロセッサの処理性能の低下を抑制することができるプロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法、並びに、これらをコンピュータ上で実現するためのプログラムに関する。
SOC(System On Chip)又はシステムLSI(System Large Scale Integration)と呼ばれる、所望のシステムの回路機能の全てを1つのチップで実現するLSIが知られている。近年、半導体製造プロセスの微細化に伴い、システムLSIに集積できるゲート数は飛躍的に増加し、それに伴いシステムLSIの処理能力も向上している。このため、システムLSIは、画像処理や暗号化処理、フィルタ処理、復号処理など多彩な処理に用いられている。
システムLSIの設計には、動作合成ツールを用いた設計手法が有効である。この動作合成ツールは、入力ポートや変数のビット幅等のH/W化に必要な情報を含んだ動作レベル記述を動作合成することにより、RTL(Register Transfer Level(レジスタ転送レベル))記述を出力するツールである。動作合成ツールを用いたシステムLSIの設計方法については、例えば、特許文献1、2、3及び4に開示されている。また、動作合成技術については、非特許文献1に開示されている。
特許文献1、2、3及び4に開示されたシステムLSIの設計方法では、ハードウェアは、汎用的な演算処理を行うマイクロプロセッサなどの基本命令プロセッサと、信号の入出力部分の処理など、用途に特化した特定処理を行う専用命令プロセッサとを組み合わせて設計される。そして、基本命令プロセッサには、ハードウェアIPとして保有する設計済みのプロセッサが使用される。一方、専用命令プロセッサは、開発の都度、動作レベル記述を動作合成することにより生成する。
特開2006−202330号公報 特開2006−202329号公報 特開2003−316838号公報 特開2003−196333号公報 ELLIOTT "Behavioral Synthesis" Kluwer Academic Publisher、 25−40頁、 1999年
ここで、特許文献1、2、3及び4に開示されたシステムLSIの設計方法では、専用命令の回路(例えば、特許文献1における「新規動作関数記述」)にバグや仕様変更があった場合は、その専用命令を使用できない。この場合、汎用命令を用いて処理を行わざるを得ないため、プロセッサの処理性能が低下し、場合によっては目標性能を達成できない。その理由は、バグのある専用命令を他の専用命令で置き換えることができないためである。
本発明は、上記問題に鑑みてなされたものであり、専用命令にバグがあっても、プロセッサの処理性能の低下を抑制することができるプロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法、並びに、これらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係るプロセッサ合成装置は、動作合成部、受付部、抽出部、追加部、出力部を備え、以下のように構成する。
まず、動作合成部は、与えられた動作レベル記述からレジスタ転送レベル記述を生成する。
次に、受付部は、プロセッサが解釈可能な命令と当該命令により当該プロセッサが実行する処理とを対応付けて記述する第1の動作レベル記述と、当該プロセッサのレジスタ転送レベル記述が満たすべき性能目標と、の入力を受け付ける。
さらに、抽出部は、当該第1の動作レベル記述から当該プロセッサが実行する処理を表す関数のうち、当該プロセッサが解釈可能な命令に対応して当該プロセッサが実行する処理の全てを単独では表していない関数を抽出する。
そして、追加部は、当該抽出された関数からいずれかを選択し、当該選択された関数により表される処理を当該プロセッサが実行する処理とする新たな命令を生成して、当該生成された命令と当該選択された関数により表される処理とを対応付ける記述を当該第1の動作レベル記述に追加した第2の動作レベル記述を生成する。
また、出力部は、当該第2の動作レベル記述を動作合成部に与えて得られるレジスタ転送レベル記述が当該受け付けられた性能目標を
(a)満たす場合、当該得られたレジスタ転送レベル記述を出力し、
(b)満たさない場合、当該第1の動作レベル記述を動作合成部に与えて得られるレジスタ転送レベル記述を出力する。
上記目的を達成するために、その他の観点に係るコンパイル装置は、コンパイラ生成部、アプリケーション生成部を備え、以下のように構成する。
まず、コンパイラ生成部は、上記のプロセッサ合成装置から出力されるレジスタ転送レベル記述に対する動作レベル記述において記述される命令のうち、ユーザにより指定された命令(以下「無効命令」という。)以外の命令(以下「有効命令」という。)と当該有効命令により当該プロセッサが実行する処理と、から、当該プロセッサ用のコンパイラを生成する。
次に、アプリケーション生成部は、当該プロセッサにより実行されるべきアプリケーションのソースプログラムを、当該生成されたコンパイラによりコンパイルして、当該プロセッサにより実行可能なアプリケーションプログラムを得る。
上記目的を達成するために、その他の観点に係る開発システムは、当該プロセッサ合成装置と、当該プロセッサ合成装置に対するコンパイル装置とを備える。
上記目的を達成するために、その他の観点に係るプロセッサ合成方法は、動作合成部、受付部、抽出部、追加部、出力部を備えるプロセッサ合成装置が実行する動作合成方法であって、動作合成ステップ、受付ステップ、抽出ステップ、追加ステップ、出力ステップを備え、以下のように構成する。
すなわち、動作合成ステップでは、動作合成部が、与えられた動作レベル記述からレジスタ転送レベル記述を生成する。
そして、受付ステップでは、受付部が、プロセッサが解釈可能な命令と当該命令により当該プロセッサが実行する処理とを対応付けて記述する第1の動作レベル記述と、当該プロセッサのレジスタ転送レベル記述が満たすべき性能目標と、の入力を受け付ける。
さらに、抽出ステップでは、抽出部が、当該第1の動作レベル記述から当該プロセッサが実行する処理を表す関数のうち、当該プロセッサが解釈可能な命令に対応して当該プロセッサが実行する処理の全てを単独では表していない処理を表す関数を抽出する。
また、追加ステップでは、追加部が、当該抽出された関数からいずれかを選択し、当該選択された関数により表される処理を当該プロセッサが実行する処理とする新たな命令を生成して、当該生成された命令と当該選択された関数により表される処理とを対応付ける記述を当該第1の動作レベル記述に追加した第2の動作レベル記述を生成する。
さらに、出力ステップでは、出力部が、当該第2の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述が当該受け付けられた性能目標を
(a)満たす場合、当該得られたレジスタ転送レベル記述を出力し、
(b)満たさない場合、当該第1の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述を出力する。
上記目的を達成するために、その他の観点に係るプログラムは、コンピュータを、動作合成部、受付部、抽出部、追加部、出力部として、以下のように機能させる。
まず、動作合成部は、与えられた動作レベル記述からレジスタ転送レベル記述を生成する。
次に、受付部は、プロセッサが解釈可能な命令と当該命令により当該プロセッサが実行する処理とを対応付けて記述する第1の動作レベル記述と、当該プロセッサのレジスタ転送レベル記述が満たすべき性能目標と、の入力を受け付ける。
さらに、抽出部は、当該第1の動作レベル記述から当該プロセッサが実行する処理を表す関数のうち、当該プロセッサが解釈可能な命令に対応して当該プロセッサが実行する処理の全てを単独では表していない処理を表す関数を抽出する。
また、追加部は、当該抽出された関数からいずれかを選択し、当該選択された関数により表される処理を当該プロセッサが実行する処理とする新たな命令を生成して、当該生成された命令と当該選択された関数により表される処理とを対応付ける記述を当該第1の動作レベル記述に追加した第2の動作レベル記述を生成する。
さらに、出力部は、当該第2の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述が前記受け付けられた性能目標を
(a)満たす場合、当該得られたレジスタ転送レベル記述を出力し、
(b)満たさない場合、当該第1の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述を出力する。
本発明によれば、専用命令にバグがあっても、プロセッサの処理性能の低下を抑制することができるプロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法、並びに、これらをコンピュータ上で実現するためのプログラムを提供することができる。
以下、図面を参照して、本実施形態に係るプロセッサ合成装置について説明する。
まず、図1を参照して、本実施形態に係るプロセッサ合成装置の構成について説明する。なお、プロセッサ合成装置は、動作レベル記述を動作合成することによりプロセッサ用のRTL(Register Transfer Level(レジスタ転送レベル))記述を得て、得られたRTL記述を論理合成する装置である。
図1に示すように、プロセッサ合成装置100は、物理的には、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、ハードディスク装置14と、入力装置15と、表示装置16と、を備える。プロセッサ合成装置100が備える各構成要素はバスを介して接続される。
CPU11は、ハードディスク装置14に記憶されたプログラムに従ってプロセッサ合成装置100全体の動作を制御する。CPU11は、各構成要素とバスを介して接続され制御信号やデータのやりとりをする。
ROM12は、電源投入直後に実行されるIPL(Initial Program Loader)を記憶する。IPLが実行された後、CPU11は、ハードディスク装置14に記憶されたプログラムをRAM13に読み出して実行する。
RAM13は、データやプログラムを一時的に記憶する。RAM13は、ハードディスク装置14から読み出されたプログラムや、動作合成処理に必要なデータ等を一時記憶する。
ハードディスク装置14は、CPU11により実行されるプログラムを記憶する。また、ハードディスク装置14は、動作合成すべき動作レベル記述や、動作合成により得られたRTL記述等を記憶する。
入力装置15は、CPU11による制御のもと、動作合成に必要なパラメータ等の入力をユーザから受け付け、また、動作合成開始要求等の要求をユーザから受け付ける。入力装置15は、例えば、キーボードやマウスから構成される。
表示装置16は、CPU11による制御のもと、ユーザからのパラメータ等の入力や動作合成開始要求等の要求を受け付けるための画面、動作レベル記述を表示するための画面、レジスタ転送レベル記述を表示するための画面等を表示する。表示装置16は、例えば、液晶ディスプレイ装置から構成される。
次に、本実施形態に係るプロセッサ合成装置100の基本構成について説明する。
図2は、本実施形態に係るプロセッサ合成装置100の基本構成を示すブロック図である。図2に示すように、プロセッサ合成装置100は、機能的には、受付部20と、抽出部30と、追加部40と、動作合成部50と、出力部60と、を備える。
受付部20は、プロセッサが解釈可能な命令と当該命令により当該プロセッサが実行する処理とを対応付けて記述する第1の動作レベル記述と、当該プロセッサのレジスタ転送レベル記述が満たすべき性能目標と、の入力を受け付ける。受付部20は、CPU11が、ROM12、RAM13及び入力装置15と協働することにより実現される。
抽出部30は、動作レベル記述から当該プロセッサが実行する処理を表す関数のうち、当該プロセッサが解釈可能な命令に対応付けられていない関数を抽出する。抽出部30は、CPU11が、ROM12及びRAM13と協働することにより実現される。
追加部40は、抽出部30により抽出された関数からいずれかを選択し、当該選択された関数により表される処理を当該プロセッサが実行する処理とする新たな命令を生成して、当該生成された命令と当該選択された関数により表される処理とを対応付ける記述を当該第1の動作レベル記述に追加した第2の動作レベル記述を生成する。追加部40は、CPU11が、ROM12及びRAM13と協働することにより実現される。
動作合成部50は、第2の動作レベル記述を動作合成することにより、RTL記述を生成する。動作合成部50は、CPU11が、ROM12及びRAM13と協働することにより実現される。
出力部60は、動作合成部50が生成したRTL記述が受付部20が受け付けた性能目標を満たすと判別した場合、当該RTL記述を出力し、性能目標を満たさないと判別した場合、第1の動作レベル記述を動作合成部50に与えて得られるRTL記述を出力する。出力部60は、CPU11が、ROM12及びRAM13と協働することにより実現される。
次に、本実施形態に係るプロセッサ合成装置100が実行するプロセッサ合成処理について図3と図4とを参照して説明する。
図3は、本発明の実施形態に係るプロセッサ合成装置100の動作を説明するためのブロック図である。なお、理解を容易にするため、本発明に直接関係しない構成要素については説明を省略する。説明を省略した構成要素については、例えば特許文献1の図1に開示されている。
図3に示すように、本発明の実施形態は、CPU11などによるプログラム制御により動作するデータ処理装置100と、ハードディスク装置14などによる記憶装置110とから構成される。
命令追加手段101に相当する構成は、特許文献1に開示されていない。また、動作合成手段102は特許文献1の図1の「動作合成」に相当する。記憶装置110は、プロセッサソースコード(動作レベル記述)111をあらかじめ記憶している。プロセッサソースコード111は、特許文献1の図1におけるプロセッサ記述5に相当する。プロセッサソースコード111は、特許文献1に開示された技術によって作成されたものである。
これらの構成要素はそれぞれ概略次のように動作する。命令追加手段101は記憶装置110からプロセッサソースコード111を読み出し、ソースコード中の関数をひとつ選択し、その関数を実行する命令をプロセッサに追加し、追加して得られたプロセッサソースコード111を記憶装置110に格納する。また、命令追加手段101は、追加した命令の命令定義テーブル112を作成し記憶装置110に格納する。命令定義テーブル112は、特許文献1の図1の命令定義テーブル112に相当する。
動作合成手段102は、新規命令が追加されたプロセッサソースコード111を記憶装置110から読み込み、動作合成を行い、得られたRTL記述113と、性能指標114を記憶装置110に格納する。動作合成手段102は、例えば、非特許文献1に開示された既存の技術を用いて構成する。
従って、命令追加手段101により受付部20、抽出部30、追加部40が実現され、動作合成手段102により動作合成部50、出力部60が実現される。
次に、本実施形態に係るプロセッサ合成装置100が実行するプロセッサ合成処理について詳細に説明する。
図4は、本実施形態に係るプロセッサ合成装置100が実行する動作記述追加処理を示すフローチャートである。
なお、動作記述追加処理に先だって、性能目標値が例えばハードディスク装置14からデータ処理装置に供給される。性能目標値として、例えば、面積、クロック周期、遅延、レイテンシを読み出す。
まず、命令追加手段101は、ソースコード(動作レベル記述)を記憶装置110から読み出す(ステップS11)。
そして、命令追加手段101は、新規に命令にする関数の候補を抽出する(ステップS12)。具体的には、命令追加手段101は、プロセッサが実行する処理を表す関数のうち、プロセッサが解釈可能な命令に対応付けられていない処理を表す関数をソースコードから抽出する。
次に、命令追加手段101は、抽出した関数の中から新規に命令とする関数を一つ選択する(ステップS13)。例えば、命令追加手段101は、既にプロセッサに備わっている専用命令から呼び出されているものを選ぶ。
そして、命令追加手段101は、プロセッサソースコード111を変更し、選択された関数を実行する命令をプロセッサに追加する。命令追加手段101は、変更後のソースコードをハードディスク装置14に書き出すことにより記憶装置110に格納する(ステップS14)。なお、命令追加手段101は、変更前のソースコードを上書きせずに記憶装置110に残しておく。
次に、動作合成手段102は、記憶装置110から変更後のソースコードを読み出し、動作合成をおこない、プロセッサのRTL記述(RTLモデル)と性能指標とを出力する(ステップS15)。性能指標としては、例えば、面積、クロック周期、遅延、レイテンシが出力される。動作合成手段102は、RTL記述と性能指標とを記憶装置110に格納する。
次に、動作合成手段102は、出力した性能指標が性能目標値を達成しているか否かを判別する(ステップS16)。動作合成手段102は、性能指標が性能目標値を達成していないと判別した場合には(ステップS16:NO)、ステップ14でのソースコードの変更を元に戻す(ステップS17)。動作合成手段102は、例えば、記憶装置110に記憶された変更前のソースコードで変更後のソースコードを上書きする。
動作合成手段102は、性能指標が、性能目標値を達成していると判別した場合(ステップS16:YES)、または、命令の追加を元に戻すと(ステップS17)、動作記述追加処理を完了する。
ここで、設計したプロセッサの専用命令のひとつにバグがあることが判明した場合、バグのある専用命令の関数定義テーブルを用いず、代わりに、バグのある専用命令から呼び出されている関数のなかでバグがない関数の命令定義テーブルを用いることとする。そして、特許文献1に開示されたコンパイル技術等を用いて、アプリケーションプログラムをコンパイルし、機械語命令セットを得る。
次に、本実施形態に係るプロセッサ合成装置100が動作記述に命令を追加する動作について、具体例を挙げて説明する。
図5(A)、(B)に、特許文献1に開示された技術で作成されたプロセッサソースコード111を例示する。当該ソースコード(動作レベル記述)は、SystemC言語を用いて表現しているが、本発明の説明に関連ない部分は一部省略している。
ソースコードの3行目から5行目までは、メモリ資源の定義部分を表している。9行目から33行目までが命令デコード及び実行呼び出し部分をそれぞれ表している。当該ソースコードは、2つの値の積を計算する専用命令MULと、8つの値の差の平均を計算する専用命令AVE_DIFFとを有している。そして、25行目から27行目が専用命令MULの呼び出し部分を表し、28行目から31行目が専用命令AVE_DIFFの呼び出し部分を表している。また、36行目から45行目が専用命令MULの動作を定義する関数mul()を表し、47行目から74行目が専用命令AVE_DIFFの動作を定義する関数fill_buf()、ave_diff()、diff()を表している。
命令追加手段101は、プロセッサが解釈可能な命令に対応付けられていない関数を抽出する。図5(A)、(B)に示すソースコードでは、関数mul()は専用命令MULに対応付けられた処理を表す関数であるため抽出されない。関数fill_buf()、ave_diff()は、それぞれの関数が、専用命令AVE_DIFFに対応付けられた全ての処理を表す関数ではないため抽出される。さらに、関数diff()は、いずれかの命令に対応付けられた処理を表す関数ではないため抽出される。
命令追加手段101は、抽出した関数から所定の選択基準に従って関数を一つ選択する。選択基準は任意であるが、例えば、引数の個数及び型並びに返り値の型が所定の条件を満たすことを選択基準としてもよい。引数の個数及び型並びに返り値の型が所定の条件を満たす関数を追加するようにすれば、命令を自動で追加することが容易であるためである。
例えば、本実施例においては、設計されるプロセッサの命令は一般に2つのレジスタ(rs番レジスタとrt番レジスタ)が格納する値に演算を施して、その結果を他のレジスタ(rd番レジスタ)に格納する。各レジスタは、8ビットであるから関数の引数は8ビットの整数値を2つ引数としてとり、返り値が8ビットの整数であるものとする。なお、8ビットの整数値は、16ビット若しくは32ビットの整数値と考えることもできるから関数の引数や返り値をこれらのビット数の整数値とするようなものを選択しても良い。
また、選択基準は、バグを有する専用命令の代わりに当該選択した関数を実行する命令を用いてアプリケーションプログラムをコンパイルして得られる機械語のプログラムをプロセッサが実行する場合に、性能の劣化が抑制されると予想される関数を優先的に選択する選択基準であることが望ましい。
具体的には、例えば、処理内容が多い関数を優先的に選択することが有効である。このような関数を用いて回路を生成する方が、処理内容が少ない関数を組み合わせて回路を実現するよりも効率が良いと考えられるためである。
より具体的には、例えば、ソースコードにおいていずれかの命令に対応付けられる処理を表す記述に含まれる関数若しくは当該関数から呼び出される関数を選択する。このような関数は、処理内容が多い可能性が高いためである。図5(A)、(B)に示すソースコードでは、関数fill_buf()、ave_diff()は、いずれも命令AVE_DIFFに対応付けられる処理を表す記述に含まれる関数であり、関数diff()は当該関数(関数ave_diff())から呼び出される関数である。
また、例えば、命令追加手段101により抽出された他の関数から呼び出されない関数から順に選択する。命令追加手段101により抽出された他の関数から呼び出される関数を選択するのであれば、呼び出し元の関数を選択する方が効率化が図れると予測されるためである。図5(A)、(B)に示すソースコードでは、関数fill_buf()、ave_diff()は、いずれも他の関数から呼び出されない関数であるが、関数diff()は関数ave_diff()から呼び出される関数である。
また、多数の関数から呼び出される関数を選択するようにしてもよい。多数の関数から呼び出される関数は、多くの命令の実行により呼び出される可能性が高く、多くのバグに対応できる可能性があるためである。
また、命令追加手段101は、選択候補の関数のそれぞれについて、新たな命令に対応付けてソースコードに追加したものを動作合成手段102に与えて得られるRTL記述の評価値が最も大きくなる関数を選択するようにしてもよい。
例えば、生成したプロセッサの面積の大きさをこの評価値とすることができる。関数を新たな命令に対応付けてソースコードに追加した場合に、生成されるプロセッサの面積の大きさが大きくなればなる程、複雑な処理を表す関数であると考えられ、追加する価値が高いと考えられるためである。
選択基準は、ハードディスク装置14に記憶されたプログラムにあらかじめ組み込むようにしても良いが、ハードディスク装置14や入力装置15から入力するようにしてもよい。
以下、上述した選択基準により、命令追加手段101は、ソースコードの中から関数diff()を選択したものとして説明する。
命令追加手段101は、関数diff()を実行する命令DIFFを追加し、追加されたプロセッサソースコード111を記憶装置110に格納する。図6(A)、(B)に、命令DIFFが追加されたプロセッサソースコード111を例示する。31b行目から31d行目が、命令DIFFの呼び出し部を表している。なお、図6(B)に示す36行目以降は図6(B)に示すソースコードと同じ記述である。
動作合成手段102は、プロセッサソースコード111を読み込み、動作合成を行い、得られたRTL記述と性能指標とを記憶装置110に格納する。もし、性能指標が性能目標を達成していない場合には、動作合成手段102は、ソースコードの変更を元に戻して処理を完了する。
こうして得られたプロセッサのRTL記述を、特許文献1に開示された技術により作成されたRTL記述の代わりにハードウェア化する。
このとき、専用命令AVE_DIFFにバグがない限りは、アプリケーションプログラムのコンパイルに、追加命令DIFF及びFILL_BUFの命令定義テーブルは使用されない。そのため、ここで追加した命令は使用されない。
ここで、プロセッサをハードウェア化したあとに、専用命令AVE_DIFFのバグが発見されたときのことを考える。具体的には、図5(B)の59行目に宣言されている変数valのビット幅が間違っているときのことを考える。計算精度を確保するためには10ビットではなく12ビット必要であった場合である。
このとき、関数ave_diff()にバグがあるが、関数diff()にはバグがない。そこで、専用命令AVE_DIFFを無効化し、命令DIFFを有効化したコンパイラで、アプリケーションプログラムをし直す。すなわち、アプリケーションプログラムのコンパイルに、専用命令AVE_DIFFの命令定義テーブルを使用せず、代わりに、追加命令DIFFの命令定義テーブルを使用する。
このようにコンパイルしたアプリケーションプログラムは、バグのある、専用命令AVE_DIFFを使用しない。したがって、当該プロセッサのハードウェアは問題なく使用できる。また、追加専用命令DIFFを使用するため、性能の劣化を抑制できる。
(変形例)
上記実施形態に係るプロセッサ合成装置100は、得られる性能指標が性能目標を満たす場合に、命令を1つだけプロセッサに追加した。しかながら、得られる性能指標が性能目標を満たす限り、プロセッサへの命令の追加を繰り返すことができる。以下、変形例に係るプロセッサ合成装置200について説明する。
まず、変形例に係るプロセッサ合成装置200の構成について説明する。図7に示すように、プロセッサ合成装置200はプロセッサ合成装置100とほぼ同様の構成をしている。このため、プロセッサ合成装置100と異なる部分についてのみ説明する。
出力部60は、動作合成部50が生成したRTL記述が受付部20が受け付けた性能目標を満たさないと判別した場合、第1の動作レベル記述を動作合成部50に与えて得られるRTL記述を出力する。一方、出力部60は、性能目標を満たすと判別した場合、さらなる命令の追加を指示する信号を抽出部30に出力する。
抽出部30は、出力部60からさらなる命令の追加を指示する信号を供給されると、追加した命令に対応づけられた関数を除外して、関数を抽出する。
次に、変形例に係るプロセッサ合成装置200の動作について説明する。図8に示すように、プロセッサ合成装置200が実行する動作記述追加処理はプロセッサ合成装置100が実行する動作記述追加処理にさらなる命令を追加するステップ(ステップS18)を追加した処理となる。このため、プロセッサ合成装置100が実行する動作記述追加処理と異なる部分についてのみ説明する。
プロセッサ合成装置200、ステップS11からステップS15までは、図4に示したフローチャートと同様の処理を行う。
動作合成手段102は、出力した性能指標が性能目標値を達成しているか否かを判別する(ステップS16)。動作合成手段102は、性能指標が性能目標値を達成していないと判別した場合には(ステップS16:NO)、ステップS14でのソースコードの変更を元に戻す(ステップS17)。動作合成手段102は、例えば、記憶装置110に記憶された変更前のソースコードで変更後のソースコードを上書きする。
動作合成手段102は、性能指標が、性能目標値を達成していると判別した場合(ステップS16:YES)、または、命令の追加を元に戻すと(ステップS17)、ステップS18を実行する。
動作合成手段102は、ステップS18では、さらにソースコード中の関数の中でプロセッサの命令にすべきものがあるか否かを判別する。動作合成手段102は、そのような関数があると判別した場合には(ステップS18:YES)、ステップS13に処理を戻す。一方、動作合成手段102は、追加すべき関数がないと判別した場合には(ステップS18:NO)、動作記述追加処理を完了する。
上述のように、動作合成手段102は、追加すべき関数がないと判別するまで、ステップS12からステップS17の処理を繰り返す。なお、動作合成手段102は、ステップS17において命令の追加を元に戻した場合でも、実装サイズの小さい関数をさらに追加することもできる。
次に、変形例に係るプロセッサ合成装置200が動作記述に命令を追加する動作について、具体例を挙げて説明する。なお、追加すべき命令がなくなるまで命令の追加をすること以外は、プロセッサ合成装置100が動作記述に命令を追加する動作と同様である。このため、プロセッサ合成装置100が実行する動作記述追加処理と異なる部分についてのみ説明する。
以下、上述した選択基準により、命令追加手段101は、ソースコードの中から関数diff()を選択したのちの動作を説明する。
命令追加手段101は、関数diff()を実行する命令DIFFを追加し、追加されたプロセッサソースコード111を記憶装置110に格納する。
動作合成手段102は、プロセッサソースコード111を読み込み、動作合成を行い、得られたRTL記述と性能指標とを記憶装置110に格納する。もし、性能指標が性能目標を達成していない場合には、動作合成手段102は、ソースコードの変更を元に戻す。
次に、命令追加手段101は、さらに追加する命令があるか否かを判別する。命令追加手段101は、追加する命令があると判別した場合、さらに、例えば、関数fill_buf()を選択し、当該関数を実行する命令FILL_BUFを追加し、追加されたプロセッサソースコード111を記憶装置110に格納する。動作合成手段102は、プロセッサソースコード111を読み込み、動作合成を行い、得られたRTLモデルと性能指標を記憶装置110に格納する。命令追加手段101は、追加する命令がないと判別するまで、命令の追加を繰り返す。
以上示したように、変形例に係るプロセッサ合成装置200によれば、得られる性能指標が性能目標を満たす限り、プロセッサへの命令の追加を繰り返すことができる。
上記実施形態では、プログラムが、記憶装置に予め記憶されているものとして説明した。しかし、プロセッサ合成装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
以上示したように、本発明によれば、専用命令にバグがあっても、プロセッサの処理性能の低下を抑制することができるプロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法、並びに、これらをコンピュータ上で実現するためのプログラムを提供することができる。
本発明の実施形態に係るプロセッサ合成装置の物理的な構成を示すブロック図である。 本発明の実施形態に係るプロセッサ合成装置の基本構成を示すブロック図である。 動作記述追加処理を説明するためのブロック図である。 本発明の実施形態に係る動作記述追加処理を示すフローチャートである。 (A)、(B)は、命令追加前の動作レベル記述の一例を示す図である。 (A)、(B)は、命令追加後の動作レベル記述の一例を示す図である。 変形例に係るプロセッサ合成装置の基本構成を示すブロック図である。 変形例に係るプロセッサ合成装置の動作記述追加処理を示すフローチャートである。
符号の説明
11 CPU
12 ROM
13 RAM
14 ハードディスク装置
15 入力装置
16 表示装置
20 受付部
30 抽出部
40 追加部
50 動作合成部
60 出力部
100、200 プロセッサ合成装置
101 命令追加手段
102 動作合成手段
110 記憶装置
111 プロセッサソースコード
112 命令定義テーブル
113 RTL記述
114 性能指標

Claims (10)

  1. 与えられた動作レベル記述からレジスタ転送レベル記述を生成する動作合成部と、
    プロセッサが解釈可能な命令と当該命令により当該プロセッサが実行する処理とを対応付けて記述する第1の動作レベル記述と、当該プロセッサのレジスタ転送レベル記述が満たすべき性能目標と、の入力を受け付ける受付部と、
    当該第1の動作レベル記述から当該プロセッサが実行する処理を表す関数のうち、当該プロセッサが解釈可能な命令に対応して当該プロセッサが実行する処理の全てを単独では表していない関数を抽出する抽出部と、
    当該抽出された関数からいずれかを選択し、当該選択された関数により表される処理を当該プロセッサが実行する処理とする新たな命令を生成して、当該生成された命令と当該選択された関数とを対応付ける記述を当該第1の動作レベル記述に追加した第2の動作レベル記述を生成する追加部と、
    当該第2の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述が当該受け付けられた性能目標を
    (a)満たす場合、当該得られたレジスタ転送レベル記述を出力し、
    (b)満たさない場合、当該第1の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述を出力する
    出力部と、
    を備える、ことを特徴とするプロセッサ合成装置。
  2. 請求項1に記載のプロセッサ合成装置であって、
    前記出力部は、当該第2の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述が当該受け付けられた性能目標を満たす場合、当該得られたレジスタ転送レベル記述を出力するのにかえて、当該第2の動作レベル記述を新たな第1の動作レベル記述として前記抽出部に与える、
    ことを特徴とするプロセッサ合成装置。
  3. 請求項2に記載のプロセッサ合成装置であって、
    前記追加部は、前記抽出された関数のうち引数の個数及び型並びに返り値の型が所定の条件を満たすものを選択する、
    ことを特徴とするプロセッサ合成装置。
  4. 請求項2に記載のプロセッサ合成装置であって、
    前記追加部は、前記抽出された関数のうち引数の個数及び型並びに返り値の型が所定の条件を満たし、当該第1の動作レベル記述においていずれかの命令に対応付けられる処理を表す記述に含まれる関数若しくは当該関数から呼び出される関数を選択する、
    ことを特徴とするプロセッサ合成装置。
  5. 請求項4に記載のプロセッサ合成装置であって、
    前記追加部は、当該呼び出される関数が複数ある場合に、それぞれの関数について、当該関数を新たな命令に対応付けて当該第1の動作レベル記述に追加したものを前記動作合成部に与えて得られるレジスタ転送レベル記述の評価値が最も大きくなる関数を選択する、
    ことを特徴とするプロセッサ合成装置。
  6. 請求項5に記載のプロセッサ合成装置であって、
    当該レジスタ転送レベル記述の評価値は当該プロセッサの面積である、
    ことを特徴とするプロセッサ合成装置。
  7. 請求項1乃至6のいずれか1項に記載のプロセッサ合成装置から出力されるレジスタ転送レベル記述に対する動作レベル記述において記述される命令のうち、ユーザにより指定された命令(以下「無効命令」という。)以外の命令(以下「有効命令」という。)と当該有効命令により当該プロセッサが実行する処理と、から、当該プロセッサ用のコンパイラを生成するコンパイラ生成部と、
    当該プロセッサにより実行されるべきアプリケーションのソースプログラムを、当該生成されたコンパイラによりコンパイルして、当該プロセッサにより実行可能なアプリケーションプログラムを得るアプリケーション生成部と、
    を備える、ことを特徴とするコンパイル装置。
  8. 請求項1乃至6のいずれか1項に記載のプロセッサ合成装置と、
    当該プロセッサ合成装置に対する請求項7に記載のコンパイル装置と、
    を備えることを特徴とする開発システム。
  9. 動作合成部、受付部、抽出部、追加部、出力部を備えるプロセッサ合成装置が実行するプロセッサ合成方法であって、
    前記動作合成部が、与えられた動作レベル記述からレジスタ転送レベル記述を生成する動作合成ステップ、
    前記受付部が、プロセッサが解釈可能な命令と当該命令により当該プロセッサが実行する処理とを対応付けて記述する第1の動作レベル記述と、当該プロセッサのレジスタ転送レベル記述が満たすべき性能目標と、の入力を受け付ける受付ステップ、
    前記抽出部が、当該第1の動作レベル記述から当該プロセッサが実行する処理を表す関数のうち、当該プロセッサが解釈可能な命令に対応して当該プロセッサが実行する処理の全てを単独では表していない処理を表す関数を抽出する抽出ステップ、
    前記追加部が、当該抽出された関数からいずれかを選択し、当該選択された関数により表される処理を当該プロセッサが実行する処理とする新たな命令を生成して、当該生成された命令と当該選択された関数により表される処理とを対応付ける記述を当該第1の動作レベル記述に追加した第2の動作レベル記述を生成する追加ステップ、
    前記出力部が、当該第2の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述が当該受け付けられた性能目標を
    (a)満たす場合、当該得られたレジスタ転送レベル記述を出力し、
    (b)満たさない場合、当該第1の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述を出力する
    出力ステップ、
    を備える、ことを特徴とするプロセッサ合成方法。
  10. コンピュータを、
    与えられた動作レベル記述からレジスタ転送レベル記述を生成する動作合成部、
    プロセッサが解釈可能な命令と当該命令により当該プロセッサが実行する処理とを対応付けて記述する第1の動作レベル記述と、当該プロセッサのレジスタ転送レベル記述が満たすべき性能目標と、の入力を受け付ける受付部、
    当該第1の動作レベル記述から当該プロセッサが実行する処理を表す関数のうち、当該プロセッサが解釈可能な命令に対応して当該プロセッサが実行する処理の全てを単独では表していない処理を表す関数を抽出する抽出部、
    当該抽出された関数からいずれかを選択し、当該選択された関数により表される処理を当該プロセッサが実行する処理とする新たな命令を生成して、当該生成された命令と当該選択された関数により表される処理とを対応付ける記述を当該第1の動作レベル記述に追加した第2の動作レベル記述を生成する追加部、
    当該第2の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述が前記受け付けられた性能目標を
    (a)満たす場合、当該得られたレジスタ転送レベル記述を出力し、
    (b)満たさない場合、当該第1の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述を出力する
    出力部、
    として機能させる、ことを特徴とするプログラム。
JP2008078273A 2008-03-25 2008-03-25 プロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法およびプログラム Expired - Fee Related JP5071189B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008078273A JP5071189B2 (ja) 2008-03-25 2008-03-25 プロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008078273A JP5071189B2 (ja) 2008-03-25 2008-03-25 プロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2009230683A JP2009230683A (ja) 2009-10-08
JP5071189B2 true JP5071189B2 (ja) 2012-11-14

Family

ID=41245947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008078273A Expired - Fee Related JP5071189B2 (ja) 2008-03-25 2008-03-25 プロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5071189B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337838A (ja) * 2002-03-14 2003-11-28 Pacific Design Kk データ処理装置の設計方法
JP2006202330A (ja) * 2006-03-31 2006-08-03 Nec Electronics Corp システムlsiの設計方法及びこれを記憶した記録媒体

Also Published As

Publication number Publication date
JP2009230683A (ja) 2009-10-08

Similar Documents

Publication Publication Date Title
JP5910108B2 (ja) 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法
JPH10320214A (ja) コンパイルシステム及びコンピュータプログラム製品
US8516414B2 (en) Behavioral synthesis device, behavioral synthesis method, and computer program product
JP2007034584A (ja) 高位合成装置、自動高位合成方法、高位合成プログラム及びゲートネットリスト自動検証方法
JP2006285333A (ja) 動作合成装置及び方法
Frangieh et al. A design assembly framework for FPGA back-end acceleration
JP5157534B2 (ja) 動作合成装置、および、プログラム
JP5228546B2 (ja) 動作合成装置、および、プログラム
JP5071189B2 (ja) プロセッサ合成装置、コンパイル装置、開発システム、プロセッサ合成方法およびプログラム
JP5668404B2 (ja) 構成情報管理装置、その方法及びそのプログラム並びに動作合成装置
JP2007102651A (ja) データ処理システム
JP2012238235A (ja) プログラム検証装置及びプログラム
JP5471413B2 (ja) 動作合成装置及び方法
US8694975B2 (en) Programming system in multi-core environment, and method and program of the same
Zaretsky et al. Overview of the FREEDOM compiler for mapping DSP software to FPGAs
JP2007080049A (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
JP2018124877A (ja) コード生成装置、コード生成方法、およびコード生成プログラム
JP2006202330A (ja) システムlsiの設計方法及びこれを記憶した記録媒体
JP2006259805A (ja) プロセッサ設計装置、プロセッサ設計方法およびプロセッサ設計プログラム
JP6342065B2 (ja) 回路設計支援装置及び回路設計支援方法及び回路設計支援プログラム
Häublein et al. Hybrid code description for developing fast and resource efficient image processing architectures
JP2018163381A (ja) コード生成装置、コード生成方法及びコード生成プログラム
JP5267376B2 (ja) 動作合成装置、動作合成方法、ならびに、プログラム
Ordaz et al. HLS compilation for CPU interlays
JP2004252807A (ja) ソフトウェア開発支援装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120704

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5071189

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees