説明

ソフトウェア/ハードウェア分割プログラム、および分割方法。

【課題】例えばシステム・オン・チップ(SoC)上で実現されるべきアプリケーションに対応するソフトウェア/ハードウェア(SW/HW)分割を最適化する。
【解決手段】SW/HW分割評価プログラムは、ハードウェアで実行されるべき部分にマークが付けられたソースコードをコンパイルして、SoC上のCPUのシミュレータ用の実行プログラムを生成する手順と、その実行プログラムの実行結果をメモリに格納する手順と、その実行結果によってSW/HW分割を評価する手順とを計算機に実行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はあるアプリケーションを実行するための大規模集積回路の開発方式に係り、さらに詳しくは、そのアプリケーションを実現するためのシステム・オン・チップ(SoC)の開発時において、ソフトウェアとハードウェアとの分割を決定するためのソフトウェア/ハードウェア分割プログラム、および分割方法に関する。
【背景技術】
【0002】
最近では1つのアプリケーション、例えばH.264方式の画像処理を実現するためのLSIとして、CPUとユーザ・ハードウェアとを1つのチップ上に搭載するシステム・オン・チップ(SoC)が広く用いられるようになっている。
【0003】
一般的に、このような画像処理を実現する場合にはデータの演算量が膨大となり、処理速度を向上させるためには、大量のデータ処理はハードウェアによって実現し、CPUは時間管理などの制御動作などを分担させる方が効率的となる。そこでどの処理をハードウェアに分担させ、またどの処理をソフトウェアに分担させるかというソフトウェア/ハードウェアの分割を適切に決定することが性能向上のために極めて重大となる。
【0004】
すなわち、1つのアプリケーションをCPUとユーザ・ハードウェアとで分割処理する場合に、CPU側ではアプリケーションの一部をプログラムとして実行し、ユーザ・ハードウェア側にはソフトウェアの一部をハードエンジンとして実装し、CPUとユーザ・ハードウェアとが協調して1つのアプリケーションが実行される。このアプリケーションをCPUとハードウェアとで分割するための設計は、当然アプリケーションとCPUのアーキテクチャに依存する。
【0005】
従来はこのソフトウェア/ハードウェアの分割を決定するためには、人手によってアプリケーション・プログラムのソースコードを、ソフトウェアで実行すべき部分とハードウェアによって実行すべき部分とに分割して、例えばパソコンを用いてVisualCプログラムの実行データを集計し、ソフトウェア/ハードウェア(SW/HW)の分割を評価する方法が用いられていた。しかしながらこのような方法では、例えばSoC上に実際に搭載される組み込みCPUとユーザ・ハードウェアとの間のSW/HW分割を適切に評価することができないという問題点があった。
【0006】
このようなシステム記述のシミュレーション、ソフトウェア/ハードウェア協調設計などに関連する従来技術の1つとしての特許文献1では、ハードウェア候補とソフトウェア候補の実行時間を正確に測定できるシステム仕様記述のシミュレーション方法が開示されている。
【0007】
また特許文献2では、ベンチマークプログラムのセットに基づいて、ソフトウェアの実行時間の推定値を判定し、ベンチマークプログラムから開発されたモデルの評価によって、ソフトウェアの能力を評価する技術が開示されている。
【0008】
さらに特許文献3では、ハードウェアのシミュレーションとソフトウェアのシミュレーションを一つのアプリケーションに統合し、かつ双方のデバッグができるようにし、高速な協調シミュレーションを実現する技術が開示されている。
【0009】
しかしながらこのような従来技術を用いても、組み込みCPUとユーザ・ハードウェアとの間のSW/HW分割を適切に評価できないという問題点を解決することはできなかった。
【特許文献1】特開平11−259552号公報 「システム仕様記述のシミュレーション方法」
【特許文献2】特表2004−530193号公報 「組込形ソフトウェアの実行時間の統計的評価のための方法及び装置」
【特許文献3】特開2005−332110号公報 「シミュレーションシステム」
【発明の開示】
【発明が解決しようとする課題】
【0010】
本発明の課題は、上述の問題点に鑑み、例えばシステム・オン・チップ上で搭載される組み込みCPU専用のシミュレータを用いて、実際に使用される組み込みCPUとソースコード上で分割されたハードウェアとに対応する形式で、実行されるアプリケーションに最適となるようにソフトウェア/ハードウェア分割を決定可能とすることである。
【課題を解決するための手段】
【0011】
図1は、本発明のソフトウェア/ハードウェア分割評価プログラムの原理的な機能ブロック図である。同図(a)は後述する第1の実施例、(b)は第2の実施例に対応するものであり、いずれもアプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムの原理的な機能ブロック図である。
【0012】
図1(a)においては、ステップS1でアプリケーションに対応するソースコードの内部で、ハードウェア側で実行されるべきハードウェア部にマークがつけられたコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成する手順が実行され、ステップS2でそのシミュレータによる実行プログラムの実行結果をメモリに格納する手順が実行され、ステップS3でメモリに格納された実行結果によって、前述のハードウェア部につけられたマークに対応するソフトウェアとハードウェアとの分割を評価する手順が実行される。
【0013】
図1(b)においては、ステップS4で前述と同様にハードウェア部にマークがつけられたコードがコンパイルされて、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、その実行プログラム側からハードウェア部のモデルを呼び出すためのインターフェースとが生成され、ステップS5でハードウェア部モデルを呼び出すことによって実行された結果を含み、シミュレータによる実行プログラムの実行結果がメモリに格納され、ステップS6でメモリの格納内容を用いてハードウェア部のマークに対応するソフトウェアとハードウェアとの分割の評価が行われる。
【0014】
以上のように本発明によれば、ハードウェア部にマークが付けられたソースコードがコンパイルされ、作成された実行プログラムが、例えばアプリケーション実現のために用いられる中央処理装置のシミュレータによって実行され、その実行結果に対応してソフトウェアとハードウェアとの分割の評価が行われる。
【発明の効果】
【0015】
本発明によれば、ソフトウェアとハードウェアとの分割を、アプリケーション実現のために用いられる中央処理装置のシミュレータによるプログラムの実行結果によって適切に評価することが可能になり、ソフトウェアとハードウェアの分割案の評価をSoCの設計初期の段階で簡単に行うことが可能となる。
【発明を実施するための最良の形態】
【0016】
図2は、本発明のソフトウェア/ハードウェア(SW/HW)分割、すなわち仮想パーティショニング方式の全体処理フローチャートである。同図において、あるアプリケーションに特化したLSIを開発する目的で、実装しようとするアプリケーション、あるいはミドルウェア10に対してステップS10でSW/HW分割、すなわち仮想パーティショニングが行われ、ステップS11で各種モデル(SW+HW)の開発が行われる。
【0017】
ステップS10の仮想パーティショニング処理では、アプリケーションのソースコードの内部でハードウェアによって実行したほうが効率的と考えられるHW部(ハードブロック)の始点と終点を示すマークが埋め込まれる。すなわち、組み込みソフトウェアを開発するためのソフトウェア開発環境としてのツール上でHW部の始点と終点を示すマークが識別できるようなコーディングが行われる。
【0018】
あるアプリケーション、例えばH.264などに特化したLSIの開発時には、実装しようとするアプリケーション、すなわちソフトウェアを組み込みCPUのシミュレータで動くソフトウェアにする必要がある。そのような目的で組み込み用のソフトウェア開発環境においては、開発対象のCPUシミュレータとして、例えばインストラクション・セット・シミュレータ(ISS)が組み込まれているか、あるいはISSの代わりにCPUアーキテクチャによって実行できる他のシミュレータが組み込まれているが、本実施形態ではISSが組み込まれているものとして以下を説明する。なおISSはプログラムを命令レベルで実行できるシミュレータである。
【0019】
ステップS10の仮想パーティショニングではSW/HWの分割が仮想的に行われ、例えばISSを用いたシミュレーション結果によってその分割が評価される。評価結果が満足できない場合には仮想的なSW/HW分割に戻り、異なる分割に対して再びその評価が行われる。評価結果がOKとなった時点でSW/HW分割が終了し、ステップS11の各種モデル開発が行われる。各種モデルとしてはISS+HWのC/C++モデル、ISS+HWのSystemCモデル、あるいはRTLモデルなどがあるが、このモデル自体は本発明と直接の関係はないため、その詳細な説明は省略する。
【0020】
図3は、本発明の第1の実施例における、図2のステップS10における仮想パーティショニングの基本処理フローチャートである。同図において、ステップS20でHWのマークがアプリケーション10のソースコードに直接挿入され、SW部と分割されるHW部の指定が行われる。HW部として指定される部分は、図2で説明したようにHW部の始点と終点を示すマークで挟まれる部分であり、このHWマーク以外はすべてCPU上で実行されるソースコードとなっており、HWマークが挿入されたソースコードはステップS21のコンパイル処理に与えられる。
【0021】
ステップS21では、例えば前述のISS上で実行可能な実行プログラム、すなわちロード・モジュール11が作成され、ロード・モジュール11を用いてステップS22でCPUモデルに対するシミュレーション実行処理が行われる。このシミュレーションにおいては、図2で説明したようにHWマークが埋め込まれたHW部は、その他のSW部と識別されるが、SW部と同様にISS上で通常と同様に実行され、そのシミュレーション実行結果はSW部とHW部に対応して、区別されてメモリ12に格納される。
【0022】
一方、ステップS23では、ステップS22のシミュレーション実行処理の途中でシミュレーションの結果が参照され、必要に応じてロード・モジュール11に対してもデバッグの処理が行われる。
【0023】
そしてステップS24でメモリ12に格納されたSW/HWの仮想パーティショニングに対応するシミュレーション結果に対する評価が行われ、評価結果がOKであればSW/HWの分割が終了し、評価がOKでない場合にはステップS20に戻り、異なるSW/HW分割処理が行われて、ステップS21以降の処理が繰り返される。
【0024】
この第1の実施例では、HW部も、前述のように例えばISSによってSW部と同様に実行処理が行われるが、ISSはあるアプリケーションに特化したLSI、すなわちシステム・オン・チップ(SoC)に組み込まれるCPUのシミュレータであり、従来技術におけるように組み込みCPUと関係のない一般的なパソコンなどを用いてSW/HWの分割を評価する場合に比べて、実際のSoC上でのSW/HW分割に対してより適切な評価を行うことが可能となる。ISSは、ユーザC関数をHard関数として実行する機能を持ち、ISSだけを用いてSW/HWの仮想パーティショニングの評価が可能となる。
【0025】
図4は、図3のステップS22におけるシミュレーションの全体処理フローチャートである。同図において実行プログラム11が与えられ、ステップS26で全体的なメイン処理がスタートすると、ステップS27でアプリケーションとして実行すべき命令があるか否かが判定され、命令がある場合にはステップS28で、例えばプロセッサ・エレメント(PE)0モデルとしてのExe_loop関数の実行処理が行われ、ステップS27で実行すべき命令がなくなるまでステップS27、S28のループが繰り返され、実行すべき命令がないと判定された時点で処理を終了する。ここでは、プロセッサ・エレメント0に対する処理の実行だけが示されているが、この処理がマルチコアによって実行される処理でも良いことは当然である。
【0026】
図5は、ステップS28におけるプロセッサ・エレメント0モデルの実行処理の詳細フローチャートである。ここではISSの実行エンジンとしてのExe−loop関数に実行ステップ数が渡され、その関数がコールされるものとして処理を説明する。
【0027】
図5において処理が開始されると、ステップS30で命令すべき実行があるか否かが判定され、ある場合にはステップS31で命令がフェッチされ、デコードが行われ、ステップS32でその命令が特殊命令としてのHW部マークであるか否かが判定され、そのマークである場合にはステップS33でHW部の開始のマークに対してはHW部実行フラグがオンとされた後に、HWマークでない場合には直ちに、ステップS34で命令実行処理が行われる。なお、ステップS33で、HW部マークがHW部の終点を示す場合にはHW部実行フラグはオフとされる。
【0028】
ステップS34では、実行される命令の種類が把握され、命令によってサイクル数が決定され、その命令の実行結果としての実行情報がステップS35で蓄積される。その実行情報は、HW部フラグがオンであればHW部の命令実行情報としてメモリ14に、またHW部フラグがオフであればSW部の実行情報としてメモリ15に格納される。
【0029】
その後、ステップS36で割込み処理が行われ、ステップS30に戻り、実行すべき命令がまだある場合にはステップS31以降の処理が繰り返され、実行すべき命令がない場合には実行関数としてのExe−loopを抜けて図4のステップS27の処理に戻ることになる。なおここでステップS36の割込み処理は、例えばタイマ割込みなどに対する一般的な処理であり、本発明と直接の関連はなく、そのような処理が不要な場合には、ステップS36の処理は実行されない。
【0030】
図6は、図5のステップS35で蓄積される実行情報の例である。実行情報としては、まず実行命令の種類、演算量を含む命令数、例えば全体としてのサイクル数、例えばメモリに対するロード/ストアによるデータアクセス量、アクセス種類などの情報が得られる。
【0031】
そしてマルチプロセッサシステムにおいては、プロセッサ間での制御や情報伝達のための通信回数や通信データ量、およびプロセッサ間でのプログラムの並列度、すなわちデータ依存の確認情報などが得られ、前述のようにHW部の結果とSW部の結果とに分けてこのような情報が図5のメモリ14、15に格納される。
【0032】
続いてHW部マークのソースコードへの挿入について、図7から図9を用いてさらに説明する。図7では、特殊命令としてのpragma部をソースコード16に挿入することによって、HW部の始点と終点が示される、すなわち“#pragma”によってHW部の始点、また“#end”によってHW部の終点を示す特殊命令がC/C++ソースコードに挿入され、HW部の開始と終了が、例えばISSによって認識されることになる。
【0033】
図8は、例えばCソースコード16に挿入される異なるHW部マークの例である。ここでは、START_USER_HWがHW部の始点を示す特殊命令として、またEND_USER_HWが終点を示す特殊命令として挿入されるが、これらの特殊命令の定義については、例えばヘッダファイル17を参照することによってハードウェアアクセスであることがISSによって認識され、またその変数“addr,1”によってHW部の開始が、また“addr,0”によって終了が示される。
【0034】
なおこのようにソースコードに挿入される特殊命令は元々のアプリケーションのソースコードとは全く無関係の命令であり、CPUシミュレータとしての、例えばISSのみが認識できる命令である。また始点と終点の間に挟まれるHW部内の命令コードはHW部の一部としてのHWブロックを識別できるデータ、例えばアドレスを含むこともできる。
【0035】
図9は、GUI(グラフィック・ユーザ・インターフェース)を用いたHWマークの埋め込み例の説明図である。同図においてユーザは、例えばマウスを用いてHW部の始点と終点を指定することが可能であり、この始点と終点の間が仮想HW部として指定されることになる。
【0036】
以上で第1の実施例の説明を終わり、以下第2の実施例について説明する。第1の実施例においては、SW/HWの分割がHW部マークのソースコードへの挿入によって行われるが、実際の命令実行はCPUモデルとしての、例えばISSによってSW部とHW部とに対して同様に実行され、シミュレーションの実行結果としての実行情報がSW部に対する実行情報とHW部に対する実行情報とに分けて蓄積される。これに対して第2の実施例では、HW部に対してはCPUモデルとは異なるモデルが、例えばCモデルのHW部として存在し、ソースコード上でHW部の始点のマークが認識されると、アプリケーション・プログラム・インターフェース(API)を介してHW部に処理が移され、HW部の終点を示すマークが認識された時点で処理が再びCPUモデルとしてのISSに返される形式でシミュレーションが行われる。
【0037】
図10は、第2の実施例における仮想パーティショニング処理の基本フローチャートである。同図を第1の実施例に対する図3と比較すると、アプリケーション10に対してステップS40で、図3におけると同様にHWマークがソースコードに直接挿入されてHW部が指定され、ステップS41でコンパイルが行われるが、このコンパイルの内容が図3とは異なってくる。
【0038】
すなわちこのコンパイル処理では、SW/HWの分割結果に対応してHW部22が独立したオブジェクトとして分離される。例えばISSに与えられる実行プログラムとしてのロード・モジュール21は、SW部のみとすることもできるが、後述するようにHW部の命令の実行もISSによって可能とするために、SW部とHW部との両方を含むこともできるものとする。
【0039】
そしてステップS42でCPUモデル、例えばISSを用いてシミュレーションが実行され、その結果は図3におけると同様にメモリ12に格納されるが、HW部の始点のマークが認識されると、API(アプリケーション・プログラミング・インターフェース)23によるアドレス指定によってHW部22が呼び出されて、HW部の処理が行われる。なおステップS43のデバッグ処理、ステップS44の分割評価判定処理は図3におけると同様である。
【0040】
図11は、第2の実施例におけるExe−loop、すなわち命令実行関数からのHW部呼び出し方式の説明図である。同図においてはアプリケーション・プログラム・インターフェース(API)23がExe−loop24とHW部25との間に存在し、HW部25は、それぞれ例えばHW関数に対応する複数のHWブロック25から25までによって構成されているが、どのブロックを呼び出すべきかはアドレス指定ファイル26の内容によって決定される。アドレス指定ファイル26は、HWブロック、すなわちHW関数とそのアドレスとの対応を示すものであり、どのHW関数を呼び出すべきかによって、対応するアドレスのHW関数が呼び出されることになる。なおHW部の処理は呼び出されたHW関数の内部で閉じたものでなければならず、リターン値はAPI23を介してCPUモデル側に返される。
【0041】
図12は、図11の命令実行関数、すなわちExe−loop処理の詳細フローチャートである。同図を第1の実施例における図5と比較すると、まずステップS50、S51で図5のステップS30、S31と同様に、実行すべき命令がある場合には、命令がフェッチされ、命令のデコードが行われ、ステップS52でHW部マークが検出されたか否かが判定される。
【0042】
検出された場合には、第2の実施例においてはAPI23を用いて、例えばCモデルとしてのHW部25が呼び出され、HW関数の実行が行われ、その結果はAPI23を介して、例えばISS側に返される。
【0043】
ISS側での処理が再開され、ステップS53でHW部実行フラグがHW部マークの始点に対してはオン、終点に対してはオフとされた後に、ステップS54で命令を実行すべきか否かが判定される。この判定は、HW部25によってHW関数の実行が行われた命令に対してもISS側で再び命令を実行すべきか否かを判定するものであり、その判定結果がマークとしての始点と終点で挟まれた1つのHW部に対しては同じとなるように判定が行われる。
【0044】
そしてステップS55で命令が実行されるが、ここではステップS52でHW部マークであると認識されなかった命令、すなわちSW部の命令は当然実行され、またステップS54でHW部の命令を実行すべき場合にはその命令も実行される。またHW部の命令をISS側で実行しない場合には、ステップS55の命令実行は行われず、ステップS56の処理に移行する。
【0045】
ステップS56では、第1の実施例におけると同様にHW部に対する命令実行結果の情報はメモリ14に、SW部に対する実行情報はメモリ15に蓄積される。なお、HW部に対してISSによる命令実行が行われた場合の実行情報もメモリ14に蓄積されるものとする。ステップS57における割込み処理などは第1の実施例に対する図5と同様であり、その説明を省略する。
【0046】
図13は、第2の実施例においてISSに接続されるHW部の生成方式の説明図である。同図においてソースコード16の内部でマークによって区切られたHW部は、ステップS60のHW部コード切り出し処理によって切り出され、SW部30とHW部31とが分割され、API部32、およびアドレス指定ファイル33が新たに作成され、HW部31とAPI部32は、計算機OSでのソフトウェア開発環境36に与えられ、またSW部30はCPUシミュレーションのSW開発環境35に与えられる。なおアドレス指定ファイルの内容は図10のステップS41のコンパイル時に自動設定されることも、あるいはハードウェア部にマークが付けられる時点で、例えばユーザによって指定されることもできる。
【0047】
CPUシミュレーションのSW開発環境35にはISS37が備えられており、また計算機OSでのソフトウェア開発環境36に対応してAPI部(オブジェクト)38、およびHW部(オブジェクト)39が生成される。そしてISS37は、HW部オブジェクト39とAPI部オブジェクト38を介して接続されるが、この接続は前述のようにアドレス指定ファイル33の内容によって制御される。このアドレス指定については、ここに示すようにアドレス指定ファイル33のような別のファイルによる指定でも良く、API部38にそのファイルの内容を埋め込んで指定を行うこともできる。このように第2の実施例では、HW部の処理をISS上で実行する代わりに、ISSと同レベルのオブジェクト関数として実行することができ、第1の実施例よりも処理が高速となる。
【0048】
図14は、ISSとHW部の接続例としてのISS側からのHW部、例えばメモリへのデータライトアクセスの説明図である。ここでISS側のAPIはwrite_bim()であり、HW側のAPIオブジェクトはv_reg_write()を介してHW部のオブジェクトとしてのHWブロック(ユニット)にアクセスする。
【0049】
図15は、第2の実施例におけるアドレス指定ファイルの例の説明図である。ISSはソースコード16に埋め込まれたHW部の開始マークとしてのSTART_USER_HWが特殊命令であることから、ヘッダファイル17を参照し、この命令がハードウェアアクセスを定義するものであることを認識する。そしてアドレス指定ファイル33の内容によって“addr0”が“0xff000010”であることを認識し、このアドレスを用いてHW部ブロックとしての関数を呼び出すことが可能となる。
【0050】
第2の実施例においても仮想SW/HW分割後のシミュレーションの結果として図6に示した各種の情報が得られる。またHW部マークのソースコードへの挿入や、GUIを利用した指定などについては第1の実施例に対する図7から図9と同様であり、その説明を省略する。
【0051】
次にコアモデルとしてのISSと仮想HW部とによって構成されるCPUモデルが含まれるSoC(システム・オン・チップ)モデルについて、図16と図17を用いて説明する。このようなシステムモデルは前述の第1の実施例、および第2の実施例を区別することなく、構成することが可能である。
【0052】
図16においてSoCモデルとしてのシステムモデルは複数の周辺I/O(入出力部)41から41、複数のCPUモデル42から42がいずれもバス43に接続される構成となっている。各CPUモデルの内部にはそれぞれISSが1台以上備えられ、例えばCPUモデル42は1つのコアモデル、すなわちISS44と、仮想HW部45とによって構成され、CPUモデル42は2つのコアモデル、すなわちISS44と、2つの仮想HW部45とによって構成されている。
【0053】
図16において仮想SW/HWパーティショニングの結果は同種、あるいは異種構成のマルチCPUモデルを使った分割シミュレーションによる評価が可能である。そのような分割シミュレーションにおいては、例えば図5のフローチャートの処理が並列に実行されるため、プログラムの並列度の抽出も可能となる。さらに例えばSystemC、あるいはC/C++のSoCモデルにおいて、CPUコア(ISS)内でSW/HW分割の再設計や、SW/HW分割の最適化を検討することができる。
【0054】
図17は、図16のシステムにおけるデータの持ち方の説明図である。図16のCPUモデル42の内部の2つのISS44をそれぞれISS0、ISS1とすると、ISS0側では仮想HW部がHW部マークによって検出され、第1の実施例、または第2の実施例で説明したようにSW部とHW部とに対応する処理が実行されており、もう1つのISS1側ではSW部だけの処理が実行されている場合を示している。ただし、ここでデータのフォーマットについては様々な形式が可能であり、特にそれを限定するものではない。
【0055】
以上において本発明のSW/HW分割評価プログラム、および分割評価方法についてその詳細を説明したが、このプログラムをツールとして用いる設計システムは一般的なコンピュータシステムを基本として構成することが可能である。図18はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
【0056】
図18においてコンピュータシステムは中央処理装置(CPU)50、リード・オンリ・メモリ(ROM)51、ランダム・アクセス・メモリ(RAM)52、通信インターフェース53、記憶装置54、入出力装置55、可搬型記憶媒体の読取り装置56、およびこれらの全てが接続されたバス57によって構成されている。
【0057】
記憶装置54としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置54、またはROM51に図3〜図5、図10、図12のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項1〜8のプログラムなどが格納され、そのようなプログラムがCPU50によって実行されることにより、本実施形態におけるSW/HW分割の評価、適切な分割結果に対応した各種モデル開発などが可能となる。
【0058】
このようなプログラムは、プログラム提供者58からネットワーク59、および通信インターフェース53を介して、例えば記憶装置54に格納されることも、また市販され、流通している可搬型記憶媒体60に格納され、読取り装置56にセットされて、CPU50によって実行されることも可能である。可搬型記憶媒体60としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVDなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取り装置56によって読取られることにより、本実施形態におけるSW/HW分割の評価などが可能となる。
【0059】
(付記1) アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成する手順と、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア/ハードウェア分割評価プログラム。
(付記2) 前記実行プログラムが、前記マークとして前記ハードウェア部の始点と終点に対応する命令コードを含むことを特徴とする付記1記載のソフトウェア/ハードウェア分割評価プログラム。
(付記3) 前記シミュレータが、前記実行プログラムの内部で、前記ハードウェア部の始点と終点に対応する命令コードによって、ハードウェア部と該ハードウェア部を除くソフトウェア部とを識別することを特徴とする付記2記載のソフトウェア/ハードウェア分割評価プログラム。
(付記4) 前記実行プログラムが、前記ハードウェア部と該ハードウェア部を除くソフトウェア部とを区別することなく前記シミュレータによって実行され、
該シミュレータによる実行結果がハードウェア部とソフトウェア部とに対応して区別してメモリに格納され、
該格納結果に基づいて、前記ソフトウェアとハードウェアの分割を評価することを特徴とする付記1記載のソフトウェア/ハードウェア分割評価プログラム。
(付記5) 前記ハードウェア部に付けられるマークの位置が、グラフィック・ユーザ・インターフェースを介して指定されることを特徴とする付記1記載のソフトウェア/ハードウェア分割評価プログラム。
(付記6) 前記マークが付けられたハードウェア部内の命令コードが、該ハードウェア部の一部としてのハードウェアブロックを識別できるデータを含むことを特徴とする付記1記載のソフトウェア/ハードウェア分割評価プログラム。
(付記7) アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータが移植されたソフトウェア環境で組み込まれる中央処理装置用の実行プログラムを生成する手順と、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア/ハードウェア分割評価プログラム。
(付記8) アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成する手順と、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア/ハードウェア分割評価プログラム。
(付記9) 前記シミュレータが、前記ソフトウェア部に対応する処理に加えて、前記ハードウェア部のモデルに対応する処理を含めて、前記アプリケーションのソースコードに対応する処理を全て実行することを特徴とする付記8記載のソフトウェア/ハードウェア分割評価プログラム。
(付記10) 前記コンパイル時に、前記実行プログラム側が前記ハードウェア部のモデル内のブロックを呼び出すにあたって指定すべき該ブロックのアドレスを格納したアドレス指定ファイルを生成する手順をさらに計算機に実行させることを特徴とする付記8記載のソフトウェア/ハードウェア分割評価プログラム。
(付記11) 前記アドレス指定ファイルに格納されるアドレスが、前記コンパイル時に自動設定されることを特徴とする付記10記載のソフトウェア/ハードウェア分割評価プログラム。
(付記12) 前記アドレス指定ファイルに格納されるアドレスが、前記ハードウェア部にマークが付けられる時点で、外部からの指定に対応して設定されることを特徴とする付記10記載のソフトウェア/ハードウェア分割評価プログラム。
(付記13) アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用される記憶媒体であって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成するステップと、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納するステップと、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価するステップとを計算機に実行させるプログラムを格納した計算機読み出し可能可搬型記憶媒体。
(付記14) アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成し、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価することを特徴とするソフトウェア/ハードウェア分割評価方法。
(付記15) アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成し、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価することを特徴とするソフトウェア/ハードウェア分割評価方法。
【図面の簡単な説明】
【0060】
【図1】本発明のソフトウェア/ハードウェア分割プログラムの原理的な機能ブロック図である。
【図2】本発明における仮想パーティショニング方式の全体処理フローチャートである。
【図3】第1の実施例におけるソフトウェア/ハードウェア分割処理の基本フローチャートである。
【図4】CPUモデルシミュレーション実行処理の全体フローチャートである。
【図5】図4における命令実行関数処理の詳細フローチャートである。
【図6】シミュレーションの結果として得られる情報の例である。
【図7】ソースコードへのハードウェア部マーク挿入例(その1)である。
【図8】ソースコードへのハードウェア部マーク挿入例(その2)である。
【図9】グラフィック・ユーザ・インターフェースを利用したハードウェア部マークの挿入方法の説明図である。
【図10】第2の実施例におけるソフトウェア/ハードウェア分割処理の基本フローチャートである。
【図11】第2の実施例におけるハードウェア部呼出し方式の説明図である。
【図12】第2の実施例における命令実行関数処理の詳細フローチャートである。
【図13】命令セットシミュレータと接続されるハードウェア部生成方式の説明図である。
【図14】アプリケーション・プログラミング・インターフェースを介した命令セットシミュレータからハードウェア部へのアクセス例を説明する図である。
【図15】第2の実施例におけるアドレス指定ファイルの例である。
【図16】システム・オン・チップモデルの構成例である。
【図17】図16のシステムにおけるデータの持ち方の説明図である。
【図18】本発明におけるプログラムのコンピュータへのローディングを説明する図である。
【符号の説明】
【0061】
10 アプリケーション(ミドルウェア)
11、21 実行プログラム(ロード・モジュール)
12 シミュレーション結果格納メモリ
14 ハードウェア部実行結果格納メモリ
15 ソフトウェア部実行結果格納メモリ
16 ソースコード
17 ヘッダファイル
22、25、31 ハードウェア部
23 アプリケーション・プログラミング・インターフェース(API)
24 命令実行関数(Exe−loop関数)
26、33 アドレス指定ファイル
30 ソフトウェア部
32 API部
35 CPUシミュレーションのソフトウェア開発環境
36 計算機OSでのソフトウェア開発環境
37 命令セットシミュレータ(ISS)
38 API部オブジェクト
39 ハードウェア部オブジェクト
41 周辺I/O
42 CPUモデル
43 バス
44 コアモデル(ISS)
45 仮想ハードウェア部
50 中央処理装置(CPU)
51 リード・オンリ・メモリ(ROM)
52 ランダム・アクセス・メモリ(RAM)
53 通信インターフェース
54 記憶装置
55 入出力装置
56 読み取り装置
57 バス
58 プログラム提供者
59 ネットワーク
60 可搬型記憶媒体

【特許請求の範囲】
【請求項1】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成する手順と、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア/ハードウェア分割評価プログラム。
【請求項2】
前記実行プログラムが、前記マークとして前記ハードウェア部の始点と終点に対応する命令コードを含むことを特徴とする請求項1記載のソフトウェア/ハードウェア分割評価プログラム。
【請求項3】
前記シミュレータが、前記実行プログラムの内部で、前記ハードウェア部の始点と終点に対応する命令コードによって、ハードウェア部と該ハードウェア部を除くソフトウェア部とを識別することを特徴とする請求項2記載のソフトウェア/ハードウェア分割評価プログラム。
【請求項4】
前記実行プログラムが、前記ハードウェア部と該ハードウェア部を除くソフトウェア部とを区別することなく前記シミュレータによって実行され、
該シミュレータによる実行結果がハードウェア部とソフトウェア部とに対応して区別してメモリに格納され、
該格納結果に基づいて、前記ソフトウェアとハードウェアの分割を評価することを特徴とする請求項1記載のソフトウェア/ハードウェア分割評価プログラム。
【請求項5】
前記ハードウェア部に付けられるマークの位置が、グラフィック・ユーザ・インターフェースを介して指定されることを特徴とする請求項1記載のソフトウェア/ハードウェア分割評価プログラム。
【請求項6】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成する手順と、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア/ハードウェア分割評価プログラム。
【請求項7】
前記シミュレータが、前記ソフトウェア部に対応する処理に加えて、前記ハードウェア部のモデルに対応する処理を含めて、前記アプリケーションのソースコードに対応する処理を全て実行することを特徴とする請求項6記載のソフトウェア/ハードウェア分割評価プログラム。
【請求項8】
前記コンパイル時に、前記実行プログラム側が前記ハードウェア部のモデル内のブロックを呼び出すにあたって指定すべき該ブロックのアドレスを格納したアドレス指定ファイルを生成する手順をさらに計算機に実行させることを特徴とする請求項6記載のソフトウェア/ハードウェア分割評価プログラム。
【請求項9】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成し、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価することを特徴とするソフトウェア/ハードウェア分割評価方法。
【請求項10】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成し、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価することを特徴とするソフトウェア/ハードウェア分割評価方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図9】
image rotate


【公開番号】特開2007−286671(P2007−286671A)
【公開日】平成19年11月1日(2007.11.1)
【国際特許分類】
【出願番号】特願2006−109848(P2006−109848)
【出願日】平成18年4月12日(2006.4.12)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】