説明

半導体回路及び設計装置

【課題】処理装置がハードウェアアクセラレータを高速に起動させることができる半導体回路を提供することを課題とする。
【解決手段】データを記憶するためのメモリ(214)と、プログラムを実行し、プログラムの実行中のアドレスを示すプログラムカウンタの値がハードウェアアクセラレータ開始アドレスになると、プログラムの関数の引数のデータをメモリのスタックポインタのアドレスに書き込み、スタックポインタのアドレスを出力する処理装置(212)と、処理装置のプログラムカウンタの値がハードウェアアクセラレータ開始アドレスになると、処理装置からスタックポインタのアドレスを入力し、スタックポインタのアドレスを基にメモリから関数の引数のデータを読み出し、引数のデータを用いてハードウェア化した関数の処理を行うハードウェアアクセラレータ(213)とを有する半導体回路が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体回路及び設計装置に関する。
【背景技術】
【0002】
SoC(System-on-a-chip)では、半導体回路の集積度の向上と共に、年々アプリケーションが複雑かつ大規模になってきており、これを処理するプロセッサやDSP(デジタルシグナルプロセッサ)に求められる処理能力は増加の一途を辿っている。一方で、プロセッサやDSPの処理能力も、テクノロジの進歩と共に向上を続けてきたが、近年では、半導体回路の微細化を利用した動作周波数の向上は消費電力の増大がネックとなり望めなくなり、代わりに特定のアプリケーションに特化した命令を追加し、処理能力を向上させる手法等が採られている。
【0003】
図1は、SoCの構成例を示す図である。SoC101は、内部バス111、中央処理装置(CPU)112、ハードウェアアクセラレータ113、内部メモリ114及びメモリコントローラ115を有する。ハードウェアアクセラレータ113は、有限ステートマシン131、制御レジスタ132、ベースアドレス記憶部133及び加算器134を有する。内部メモリ114は、アドレステーブル121及び入出力データ122を記憶する。内部バス111には、中央処理装置112、ハードウェアアクセラレータ113、内部メモリ114及びメモリコントローラ115が接続される。メモリコントローラ115は、外部メモリ102を制御する。
【0004】
SoC101のアプリケーションは、中央処理装置112によるソフトウェア部分とハードウェアアクセラレータ113によるハードウェア部分に分割される。中央処理装置112及びハードウェアアクセラレータ113は、内部バス111に接続され、内部メモリ114を共有する。ハードウェアアクセラレータ113を動作させるために、ハードウェアアクセラレータ113の制御レジスタ132が定義される。制御レジスタ132は、ビット毎に有限ステートマシン131が行う処理が割り当てられている。中央処理装置112は、パス141によりハードウェアアクセラレータ113のメモリアクセスに使用されるベースアドレスを内部メモリ114内のアドレステーブル121から読み出し、パス142によりハードウェアアクセラレータ113内のベースアドレス記憶部133にベースアドレスを書き込む。また、中央処理装置112は、パス142により制御レジスタ132の各ビットにデータを書き込む。制御レジスタ132にデータが書き込まれると、有限ステートマシン131は制御レジスタ132の各ビットの値に応じて処理を行う。例えば、有限ステートマシン131は、データ読み出しアドレスを加算器134に出力する。加算器134は、ベースアドレス記憶部133のベースアドレス及び有限ステートマシン131のデータ読み出しアドレスを加算し、内部メモリ114のアドレスを出力する。有限ステートマシン131は、パス143により加算器134の出力アドレスの内部メモリ114からデータ122を読み出し、読み出したデータに対して所定の処理を行う。そして、有限ステートマシン131は、加算器134にデータ書き込みアドレスを出力する。加算器134は、ベースアドレス記憶部133のベースアドレス及び有限ステートマシン131のデータ書き込みアドレスを加算し、内部メモリ114のアドレスを出力する。有限ステートマシン131は、パス143により加算器134の出力アドレスの内部メモリ114に上記の処理したデータを書き込む。有限ステートマシン131は、制御レジスタ132の値に応じた処理が終了すると、処理完了通知の割り込み信号144を中央処理装置112に出力する。
【0005】
また、データを処理するための装置であって、データ処理オペレーションを実行するプログラム命令制御下で動作するプログラム可能な汎用プロセッサと、プロセッサに接続されたメモリシステムと、プロセッサ及びメモリシステムに接続されたハードウェアアクセラレータと、ハードウェアアクセラレータに接続されたシステム監視回路とを具備する装置が知られている(例えば、特許文献1参照)。
【0006】
また、ソースコードにおける仕様を分割する方法であって、仕様を複数の抽象構文木に変換するステップと、複数の抽象構文木を第1のプロセッサによって実現されるべき第1の抽象構文木の組と第2のプロセッサによって実現されるべき第2の抽象構文木の組に分割するステップとを備えた方法が知られている(例えば、特許文献2参照)。
【0007】
また、任意のプログラムからファンクション識別子と引数とを指定してファンクションを呼び出した場合のプログラムの動的リンク方法であって、スタック上でファンクション識別子と引数との上に積まれるデータの内、プログラムへのリターン時に必要なデータを退避する行程と、ファンクション識別子に対応するファンクションをスタック上の引数を使って実行する行程と、ファンクション実行後に、退避したリターン時に必要なデータをスタック上の所定位置に復帰する行程とを備えるプログラムの動的リンク方法が知られている(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−140479号公報
【特許文献2】特表2005−534114号公報
【特許文献3】特開平7−134650号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
中央処理装置112によるソフトウェア部分とハードウェアアクセラレータ113によるハードウェア部分に切り分ける場合には、これらのインターフェースとして制御レジスタ132を定義する。中央処理装置112は、プログラム(ソフトウェア)を実行することにより、制御レジスタ132に値を書き込み、ハードウェアアクセラレータ113を動作させる。しかし、制御レジスタ132の定義の設計が必要になり、かつソフトウェアには制御レジスタ132を制御する記述が必要になり、作業に時間が掛かると共に、処理性能上においてもオーバーヘッドが生じる。
【0010】
本発明の目的は、制御レジスタの定義の設計を不要にし、かつソフトウェアの変更を自動化して、作業に掛かる時間を削減すると共に、処理装置がハードウェアアクセラレータを高速に起動させることができる半導体回路及びその設計装置を提供することである。
【課題を解決するための手段】
【0011】
半導体回路は、データを記憶するためのメモリと、プログラムを実行し、前記プログラムの実行中のアドレスを示すプログラムカウンタの値がハードウェアアクセラレータ開始アドレスになると、前記プログラムの関数の引数のデータを前記メモリのスタックポインタのアドレスに書き込み、前記スタックポインタのアドレスを出力する処理装置と、前記処理装置のプログラムカウンタの値が前記ハードウェアアクセラレータ開始アドレスになると、前記処理装置から前記スタックポインタのアドレスを入力し、前記スタックポインタのアドレスを基に前記メモリから前記関数の引数のデータを読み出し、前記引数のデータを用いてハードウェア化した関数の処理を行うハードウェアアクセラレータとを有する。
【発明の効果】
【0012】
ハードウェアアクセラレータの設計工数を削減すると共に、処理装置がハードウェアアクセラレータを高速に起動させることができる。
【図面の簡単な説明】
【0013】
【図1】SoCの構成例を示す図である。
【図2】実施形態によるSoC(半導体回路)の構成例を示す図である。
【図3】図2のハードウェアアクセラレータの具体的な構成例を示す図である。
【図4】中央処理装置、内部メモリ及びハードウェアアクセラレータの処理例を示す図である。
【図5】SoCの設計方法を説明するための図である。
【図6】図5の設計方法の詳細を示すフローチャートである。
【図7】図5のコンピュータ(設計装置)のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0014】
図2は、実施形態によるSoC(半導体回路)の構成例を示す図である。SoC201は、半導体回路であり、内部バス211、中央処理装置(CPU)212、ハードウェアアクセラレータ(HA)213、内部メモリ214、メモリコントローラ215、ハードウェアアクセラレータ開始アドレス記憶部216及び比較器217を有する。ハードウェアアクセラレータ213は、ハードウェア化した関数231、第1の加算器235及びセレクタ236を有する。ハードウェア化した関数231は、有限ステートマシン232、ベースアドレス記憶部133及び第2の加算器234を有する。内部メモリ214は、スタックメモリ222を有し、アドレステーブル221及び入出力データ223を記憶する。内部バス211には、中央処理装置212、ハードウェアアクセラレータ213、内部メモリ214及びメモリコントローラ215が接続される。メモリコントローラ215は、外部メモリ202を制御する。中央処理装置212は、プロセッサ又はDSP等の処理装置であってもよい。
【0015】
本実施形態では、SoC201のアプリケーションの任意の関数をハードウェア化し、そのハードウェア化した関数231をハードウェアアクセラレータ213内に設ける。中央処理装置212は、プログラムを実行し、プログラムの実行中のアドレスを示すプログラムカウンタの値241を出力する。ハードウェアアクセラレータ開始アドレス記憶部216は、ハードウェアアクセラレータ開始アドレス242を記憶する。ハードウェアアクセラレータ開始アドレス242は、中央処理装置212のプログラム中の上記の関数の開始アドレスである。中央処理装置212は、プログラムを実行し、プログラムカウンタの値241がハードウェアアクセラレータ開始アドレス242になると、プログラムの関数の引数のデータ及びベースアドレスを内部メモリ214のスタックメモリ222内のスタックポインタのアドレスに書き込み、スタックポインタのアドレス244を出力する。その後、中央処理装置212は、例えば無限ループ処理又はスリープ命令等のハードウェアアクセラレータ213の処理完了待ちの処理を行う。
【0016】
比較器217は、プログラムカウンタの値241とハードウェアアクセラレータ開始アドレス242とを比較し、両者が一致すると一致信号243を出力する。ハードウェアアクセラレータ213は、比較器217が一致信号243を出力すると、プログラムカウンタの値241がハードウェアアクセラレータ開始アドレス242になったと判断し、中央処理装置212からスタックポインタのアドレス244を入力し、スタックポインタのアドレス244を基に内部メモリ214から関数の引数のデータを読み出し、その引数のデータを用いてハードウェア化した関数231の処理を行う。具体的には、有限ステートマシン232が、引数のデータを用いてハードウェア化した関数231の処理を行う。
【0017】
以下、具体例を説明する。有限ステートマシン232は、スタック読み出しアドレス245を出力する。第1の加算器235は、スタックポインタのアドレス244及びスタック読み出しアドレス245を加算し、内部メモリ214のアドレス247を出力する。セレクタ236は、アドレス247を選択し、選択したアドレス247をアドレス248として内部メモリ214に出力する。有限ステートマシン232は、パス249により、第1の加算器235により出力された内部メモリ214のアドレス247のスタックメモリ222から関数の引数のデータ及びベースアドレスを読み出す。次に、有限ステートマシン232は、読み出したベースアドレスをベースアドレス記憶部233に書き込む。
【0018】
なお、ベースアドレスは、スタックメモリ222に記憶させる場合に限定されない。例えば、予め、アドレステーブル221にベースアドレスを記憶させておいてもよい。その場合、有限ステートマシン232は、アドレステーブル221からベースアドレスを読み出し、読み出したベースアドレスをベースアドレス記憶部233に書き込む。
【0019】
また、ハードウェア化した関数231は、高位合成により、プログラム中の関数をハードウェア化した関数である。高位合成は、SystemCのような高級言語のプログラムを基にハードウェア化したRTL設計データを生成する。例えば、高位合成時に、関数の引数はローカル配列化し、高位合成することにより、ハードウェアアクセラレータ213は、スタックメモリ222から関数の引数を読み出すことが可能になる。
【0020】
次に、有限ステートマシン232は、データ読み出しアドレスを第2の加算器234に出力する。第2の加算器234は、ベースアドレス記憶部233に記憶されているベースアドレス及び有限ステートマシン232が出力するデータ読み出しアドレスを加算し、内部メモリ214のアドレス246を出力する。セレクタ236は、アドレス246を選択し、選択したアドレス246をアドレス248として内部メモリ214に出力する。有限ステートマシン232は、パス250により、第2の加算器234により出力された内部メモリ214のアドレス246からデータ223を読み出し、読み出したデータに対して所定の処理を行う。
【0021】
次に、有限ステートマシン232は、データ書き込みアドレスを第2の加算器234に出力する。第2の加算器234は、ベースアドレス記憶部233に記憶されているベースアドレス及び有限ステートマシン232が出力するデータ書き込みアドレスを加算し、内部メモリ214のアドレス246を出力する。セレクタ236は、アドレス246を選択し、選択したアドレス246をアドレス248として内部メモリ214に出力する。有限ステートマシン232は、パス250により、第2の加算器234により出力された内部メモリ214のアドレス246に上記の処理したデータを書き込む。
【0022】
次に、有限ステートマシン232は、ハードウェア化した関数231の処理が終了すると、処理完了通知の割り込み信号251を中央処理装置212に出力する。中央処理装置212は、処理完了通知の割り込み信号251を入力すると、ハードウェアアクセラレータ213の処理完了待ちを解除し、プログラムの後続の処理を再開する。ハードウェアアクセラレータ213の処理完了待ちの解除の処理は、例えば、無限ループ処理を抜ける処理又はスリープ命令を解除する処理等である。
【0023】
なお、中央処理装置212は、必ずしもハードウェアアクセラレータ213の処理完了待ちの処理を行う必要がない。例えば、プログラムの後続の処理がハードウェア化した関数231と無関係の処理である場合には、ハードウェアアクセラレータ213がハードウェア化した関数231の処理を行っている間に、プログラムの後続の処理を行うようにしてもよい。
【0024】
図3は、図2のハードウェアアクセラレータ213の具体的な構成例を示す図である。図3のハードウェアアクセラレータ213は、図2のハードウェアアクセラレータ213に対して、インターフェース301及びレジスタ302を追加したものである。以下、図3のハードウェアアクセラレータ213が図2のハードウェアアクセラレータ213と異なる点を説明する。インターフェース301は、第1の加算器235及びセレクタ236を有し、ハードウェア化した関数231が図2の内部バス211にアクセスすることを可能にする。セレクタ236がアドレス247を選択すると、スタックメモリ222のアドレスが指定され、有限ステートマシン232はパス249によりスタックメモリ222から関数の引数を読み出し、読み出した関数の引数をローカル変数としてレジスタ302に書き込む。次に、有限ステートマシン232は、レジスタ302内の関数の引数を用いて、ハードウェア化した関数231の処理を行う。
【0025】
図4は、上記の中央処理装置212、内部メモリ214及びハードウェアアクセラレータ213の処理例を示す図である。中央処理装置212は、プログラム中の抽出した関数401の処理を行う。中央処理装置212が処理を行うプログラム中の引数を有する関数401の処理内容をハードウェアアクセラレータ213に処理させるために、中央処理装置212が処理を行うプログラム中の引数を有する関数401の処理内容はハードウェアアクセラレータ213の処理完了待ちの処理402に置き換えられる。中央処理装置212は、関数401の処理を開始すると、プログラムカウンタの値及びスタックポインタのアドレス421をハードウェアアクセラレータ213に出力し、ハードウェアアクセラレータ213の処理完了待ちの処理402を行う。比較器217が一致信号243を出力すると、ハードウェアアクセラレータ213は起動処理411を行う。次に、ハードウェアアクセラレータ213は、スタックポインタのアドレス421を基に内部メモリ214のスタックメモリ222から関数の引数のデータ及びベースアドレス422を読み出す。次に、ハードウェアアクセラレータ213は、ベースアドレス422を基に内部メモリ214からデータ423を読み出し、引数のデータ422を用いて所定の処理を行う。次に、ハードウェアアクセラレータ213は、ベースアドレス422を基に内部メモリ214に処理したデータ424を書き込む。次に、ハードウェアアクセラレータ213は、関数の処理が終了すると、処理完了通知の割り込み信号425を中央処理装置212に出力する。中央処理装置212は、処理完了通知の割り込み信号425を入力すると、処理完了待ちの処理402を解除し、プログラムの後続の処理を実行する。
【0026】
図5は、SoC201の設計方法を説明するための図であり、図6はその設計方法の詳細を示すフローチャートである。コンピュータ502は、SoC201の設計を行う設計装置である。記憶装置503には、SoC201のアプリケーション531が記憶されている。アプリケーション531は、中央処理装置212により実行させようとしている高級言語(例えばSystemC)のプログラムである。ステップ511では、作業者501は、アプリケーション531の中からハードウェア化する関数601を抽出する。中央処理装置212が行うプログラムの一部の関数をハードウェア化し、ハードウェア化したハードウェアアクセラレータ213を生成することにより、処理を高速化したり、高性能の中央処理装置を低性能の中央処理装置に置き換え、コスト低減及び低消費電力化を実現することができる。次に、ステップ512では、作業者501は、コンピュータ502に対して変換スクリプトの実行を指示する。すると、ステップ521では、コンピュータ502は、変換スクリプトの実行を行う。ステップ521は、ステップ522〜524を含む。
【0027】
ステップ522では、コンピュータ502は、変換スクリプトにより、抽出した関数601を基に変換後の関数602を生成する。具体的には、コンピュータ502は、抽出した関数fの中身を非呼び出し関数f’に置き換え、関数f’の後に処理完了待ちの「CPU制御コード」を挿入した呼び出し関数f(関数602)を生成する。非呼び出し関数f’は、処理の中身が空であるダミー関数である。処理完了待ちの「CPU制御コード」は、例えば無限ループ処理又はスリープ命令の制御コードである。これにより、関数fは、中央処理装置212のプログラムに実行させる代わりに、ハードウェアアクセラレータ213に実行させることが可能になる。
【0028】
ステップ523及び525は、中央処理装置212のソフトウェア(SW)を生成するための処理である。これに対して、ステップ524及び526は、ハードウェアアクセラレータ213のハードウェア(HW)の設計データを生成するための処理である。
【0029】
次に、ステップ523では、コンピュータ502は、変換スクリプトにより、抽出した関数601をステップ522で生成した関数603に置き換える。例えば、抽出した関数fを空のダミー関数f’に置き換える。具体的には、ステップ522で説明したように、コンピュータ502の第1の変換部は、中央処理装置212が処理を行うプログラム中の引数を有する関数fの処理内容をハードウェアアクセラレータ213に処理させるために、中央処理装置212が処理を行うプログラム中の引数を有する関数fの処理内容をハードウェアアクセラレータ213の処理完了待ちの処理の「CPU制御コード」に置き換える。
【0030】
その後、コンピュータ502は、置き換えられた関数のプログラムを、アプリケーション(ソフトウェア部分)532として記憶装置503に書き込む。アプリケーション(ソフトウェア部分)532は、アプリケーション531内のソフトウェア部分であり、中央処理装置212のプログラムにより実行される。
【0031】
例えば、関数f(関数603)は、引数の整数データa,b,cを有する。中央処理装置212は、アプリケーション(ソフトウェア部分)532の関数f(関数603)を実行すると、まず引数の整数データa,b,c及びベースアドレスを内部メモリ214のスタックメモリ222に書き込み、関数f’を実行する。関数f’では、中央処理装置212は、何の処理も行わずに、「return」命令により、関数fに戻る。その後、関数fでは、中央処理装置212は、「CPU制御コード」により、ハードウェアアクセラレータ213の処理完了待ちの処理を行う。
【0032】
次に、ステップ513では、作業者501は、コンピュータ502に対してコンパイラの実行を指示する。すると、ステップ525では、コンピュータ502は、高級言語のアプリケーション(ソフトウェア部分)532をコンパイルすることにより、マシン語の実行ファイルを生成する。すなわち、コンピュータ502のコンパイル部は、ステップ523により置き換えられた関数のプログラムのアプリケーション(ソフトウェア部分)532を中央処理装置212に処理させるために、ステップ523により置き換えられた関数のプログラムのアプリケーション(ソフトウェア部分)532をコンパイルすることにより実行ファイル(バイナリファイル)533を生成し、実行ファイル533を記憶装置503に書き込む。
【0033】
ステップ524では、コンピュータ502の第2の変換部は、ステップ523の後、変換スクリプトにより、中央処理装置212が処理を行うプログラム中の引数を有する関数の処理内容をハードウェアアクセラレータ213に処理させるために、関数604に示すように、関数の引数をローカル配列化し、アプリケーション(ハードウェア部分)534として記憶装置503に書き込む。
【0034】
例えば、関数604において、整数データV[0],V[1],V[2]は3個整数データのローカル配列であり、整数データa,b,cはローカル変数である。ローカル配列V[0],V[1],V[2]には、内部メモリ214のスタックメモリ222内の引数のデータが格納される。その後、ローカル変数a,b,cには、それぞれローカル配列V[0],V[1],V[2]のデータが格納される。その後、関数601と同じ処理が行われる。
【0035】
具体的には、図3のハードウェアアクセラレータ213では、有限ステートマシン232は、スタック読み出しアドレス245を指定し、パス249により、内部メモリ214のスタックメモリ222内の引数のデータを読み出し、ローカル配列V[0],V[1],V[2]に格納する。次に、有限ステートマシン232は、ローカル配列V[0],V[1],V[2]のデータをそれぞれレジスタ302のローカル変数a,b,cに格納する。
【0036】
次に、ステップ514では、作業者501は、コンピュータ502に対して高位合成の実行を指示する。すると、ステップ526では、コンピュータ502の高位合成部は、インターフェース301(図3)のラッパー回路535と共に、ローカル配列化された関数を高位合成することによりハードウェア化し、ハードウェアアクセラレータ213の設計データ536を生成し、記憶装置503に書き込む。インターフェース301のラッパー回路535は、ハードウェア化した関数231(図3)が内部バス211(図2)にアクセス可能にするためのインターフェース回路である。高位合成は、SystemCのような高級言語のプログラムを基にハードウェア化したRTL設計データを生成する。このRTL設計データを基に、ハードウェアアクセラレータ213が生成される。
【0037】
図7は、図5のコンピュータ(設計装置)502のハードウェア構成例を示す図である。バス701には、中央処理装置(CPU)702、ROM703、RAM704、ネットワークインターフェース705、入力装置706、出力装置707及び外部記憶装置708が接続されている。中央処理装置702は、データの処理又は演算を行うと共に、バス701を介して接続された各種構成要素を制御するものである。ROM703には、予め中央処理装置702の制御手順(コンピュータプログラム)を記憶させておき、このコンピュータプログラムを中央処理装置702が実行することにより、起動する。外部記憶装置708にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM704にコピーされて中央処理装置702により実行される。RAM704は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。外部記憶装置708は、例えばハードディスク記憶装置やCD−ROM等であり、電源を切っても記憶内容が消えない。中央処理装置702は、RAM704内のコンピュータプログラムを実行することにより、図5及び図6のコンピュータ502の処理等を行う。ネットワークインターフェース705は、ネットワークに接続するためのインターフェースである。入力装置706は、例えばキーボード及びマウス等であり、各種指定又は入力等を行うことができる。出力装置707は、ディスプレイ及びプリンタ等である。例えば、外部記憶装置708は、図5の記憶装置503に対応する。
【0038】
図5及び図6の処理は、コンピュータ502がプログラムを実行することによって実現することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0039】
本実施形態のSoC201は、組み込みソフトウェアの用途に向けて、高い中央処理装置212の性能が要求される画像や音声、信号、その他高度な演算処理を行う場合に、ハードウェアアクセラレータ213を用いるメリットが大きい。また、本実施形態では、中央処理装置212のプログラム(ソフトウェア部分)とハードウェアアクセラレータ(ハードウェア部分)213のインターフェースに、スタックメモリ222を利用する。これにより、ソフトウェア部分とハードウェア部分の分割の自動化を可能とし、かつ、ハードウェアアクセラレータ213を制御するための処理性能上のオーバーヘッドを無くすことができる。また、ハードウェアアクセラレータ213の設計が自動化され、開発工数を削減することができる。また、ハードウェアアクセラレータ213の起動のための中央処理装置212の処理によるオーバーヘッドが無くなり、処理の高速化が可能となる。
【0040】
本実施形態では、スタックメモリ222を内部メモリ214に配置し、中央処理装置212とハードウェアアクセラレータ213が内部バス211を介してスタックメモリ222を共有する構成としたが、この構成に限定されるものではない。例えば、スタックメモリ222が中央処理装置212に直結されたローカルメモリに配置されている場合では、このローカルメモリを、バスを介さずに中央処理装置212とハードウェアアクセラレータ213が共有する構成としてもよい。
【0041】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0042】
201 SoC
202 外部メモリ
211 内部バス
212 中央処理装置
213 ハードウェアアクセラレータ
214 内部メモリ
215 メモリコントローラ
216 ハードウェアアクセラレータ開始アドレス記憶部
217 比較器
231 ハードウェア化した関数
232 有限ステートマシン
233 ベースアドレス記憶部
234 第2の加算器
235 第1の加算器
236 セレクタ

【特許請求の範囲】
【請求項1】
データを記憶するためのメモリと、
プログラムを実行し、前記プログラムの実行中のアドレスを示すプログラムカウンタの値がハードウェアアクセラレータ開始アドレスになると、前記プログラムの関数の引数のデータを前記メモリのスタックポインタのアドレスに書き込み、前記スタックポインタのアドレスを出力する処理装置と、
前記処理装置のプログラムカウンタの値が前記ハードウェアアクセラレータ開始アドレスになると、前記処理装置から前記スタックポインタのアドレスを入力し、前記スタックポインタのアドレスを基に前記メモリから前記関数の引数のデータを読み出し、前記引数のデータを用いてハードウェア化した関数の処理を行うハードウェアアクセラレータと
を有することを特徴とする半導体回路。
【請求項2】
さらに、前記処理装置が出力するプログラムカウンタの値と前記ハードウェアアクセラレータ開始アドレスとを比較し、両者が一致すると一致信号を出力する比較器を有し、
前記ハードウェアアクセラレータは、前記比較器が一致信号を出力すると、前記プログラムカウンタの値が前記ハードウェアアクセラレータ開始アドレスになったと判断することを特徴とする請求項1記載の半導体回路。
【請求項3】
前記ハードウェアアクセラレータは、前記スタックポインタのアドレス及びスタック読み出しアドレスを加算し、前記メモリのアドレスを出力する第1の加算器を有し、前記第1の加算器により出力された前記メモリのアドレスから前記関数の引数のデータを読み出すことを特徴とする請求項1又は2記載の半導体回路。
【請求項4】
前記ハードウェアアクセラレータは、前記メモリから読み出したベースアドレス及びデータアドレスを加算し、前記メモリのアドレスを出力する第2の加算器を有し、前記第2の加算器により出力された前記メモリのアドレスに対してデータの読み出し又は書き込みを行うことを特徴とする請求項1〜3のいずれか1項に記載の半導体回路。
【請求項5】
前記ハードウェアアクセラレータは、前記引数のデータを用いてハードウェア化した関数の処理を行う有限ステートマシンを有することを特徴とする請求項1〜4のいずれか1項に記載の半導体回路。
【請求項6】
データを記憶するためのメモリと、
プログラムを実行し、前記プログラムの実行中のアドレスを示すプログラムカウンタの値がハードウェアアクセラレータ開始アドレスになると、前記プログラムの関数の引数のデータを前記メモリのスタックポインタのアドレスに書き込み、前記スタックポインタのアドレスを出力する処理装置と、
前記処理装置のプログラムカウンタの値が前記ハードウェアアクセラレータ開始アドレスになると、前記処理装置から前記スタックポインタのアドレスを入力し、前記スタックポインタのアドレスを基に前記メモリから前記関数の引数のデータを読み出し、前記引数のデータを用いてハードウェア化した関数の処理を行うハードウェアアクセラレータと
を有する半導体回路の設計装置であって、
前記処理装置が処理を行うプログラム中の引数を有する関数の処理内容を前記ハードウェアアクセラレータに処理させるために、前記処理装置が処理を行うプログラム中の引数を有する関数の処理内容を前記ハードウェアアクセラレータの処理完了待ちの処理に置き換える第1の変換部と、
前記第1の変換部により置き換えられた関数のプログラムを前記処理装置に処理させるために、前記第1の変換部により置き換えられた関数のプログラムをコンパイルすることにより実行ファイルを生成するコンパイル部と、
前記処理装置が処理を行うプログラム中の引数を有する関数の処理内容を前記ハードウェアアクセラレータに処理させるために、前記関数の引数をローカル配列化する第2の変換部と、
前記ローカル配列化された関数を高位合成することによりハードウェア化し、前記ハードウェアアクセラレータの設計データを生成する高位合成部と
を有することを特徴とする設計装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−243055(P2011−243055A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−115552(P2010−115552)
【出願日】平成22年5月19日(2010.5.19)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】