JP3845021B2 - Semiconductor circuit control device and semiconductor circuit control program - Google Patents
Semiconductor circuit control device and semiconductor circuit control program Download PDFInfo
- Publication number
- JP3845021B2 JP3845021B2 JP2002006729A JP2002006729A JP3845021B2 JP 3845021 B2 JP3845021 B2 JP 3845021B2 JP 2002006729 A JP2002006729 A JP 2002006729A JP 2002006729 A JP2002006729 A JP 2002006729A JP 3845021 B2 JP3845021 B2 JP 3845021B2
- Authority
- JP
- Japan
- Prior art keywords
- hardware
- circuit
- driver
- data
- hardware module
- 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
Links
Images
Description
【0001】
【発明の属する技術分野】
本発明は、半導体回路制御装置及び半導体回路制御プログラムに係り、特に、マイクロプロセッサ、信号処理プロセッサとともに多数使用するシステムの基本部品の制御を行う半導体回路制御装置及び半導体回路制御プログラムに関する。また、本発明は、特に、膨大な計算量を扱う利用分野、例えば、画像処理、探索処理、認識処理、マルチ・プロセッサ・システムによる並列処理等の分野で使用されるアプリケーション・プログラムで使用される際に有効な半導体回路制御装置及び半導体回路制御プログラムに関する。
【0002】
【従来の技術】
現在、再構成可能(reconfigurable)なハードウェアであるPLD(Programmable Logic Device)あるいはFPGA(Field Programmable Gate Array)などのreconfigurable LSI(以下、FPGAやPLDを含めてRC−LSIと総称する)の集積度並びに動作速度は大幅に向上した。また、Intelectual Property(IP)と呼ばれる部品を前提にシステムLSIを開発するVirtual Core(VC)設計システム(Muraoka,M.:EDA Technology Direction Towards 2010, SASIM´98,pp.131-132(1998))と同様に、汎用プロセッサ、PCIコントローラなど標準的回路がIPとしてRC−LSIにも提供されおり、RC−LSIは今や主要なLSIになっている。また、分散メモリとRC−LSIとをつなぎ局在した処理を並列処理する事で、ノイマン・ボトル・ネックの解決法が追求されている。
再構成可能システム(Reconfigurable System(RS))としては、SPLICE(E.Caspi,M.Chu,R.Huang,J,Yeh, Y.Markovskiy, A.DeHon and J.Wawrzynek: Stream Computations Organized for Reconfigurable Execution(SCORE): Introduction and Tutorial, UCB SCORE manual)、PipeRench(Y.Chou,Pllai, P., Schmit, H., Shen, J.:PipeRench Implementation of the Instruction Path Coprocessor, DMU manual.)、CDFGから回路を生成するS−Machine(末吉敏則:Reconfigurable Computing Systemの現状と課題−Computer Evolutionへ向けて−,信学技法, Vol. VLD96, No. 79,pp.111-118(1992))、メモリにある回路データで動的に回路を変更するDRL LSI(Yamashina,M. and Motomura, M.: Reconfigurable Computing:Its Concept and a Practical Embodiment using Newly Developed Dynamically Reconfigurable Logic(DRL)LSI, ASP-DAC 2000,pp. 329-332 (2000).)、新しい回路構成と回路のオブジェクトとメッセージを念頭に置いたPlastic Cell Array(PCA)(Imlig, N., Konishi, R., Shiozawa, T., Oguri,K. et al.: Communicating Logic: An Alternative Embeded Stream Processing Paradigm, ASP-DAC 2000,pp. 317-322 (2000).)など多くのシステムが提案されている(Hauser, J. R. and Wawrzynek, J.: Garp: A MIPS Processor with a Reconfigurable Coprocessor., IEEE Symposium on Field Programmable Gate Arrays for Custom Computing Machines, IEEE, pp.12-21(1997).)(J.Villasensor, C.Jones, B.: Video Communications Using Rapidly Reconfigurable Hardware, cas for Video Tech., Vol.5, No.6, pp.565-567(1995).)。
【0003】
この中でSCOREはスケーラブルな再構成システムであり、Stream型データを入力とする演算部とページングを行うセグメントと呼ぶ記憶部とでデーター・フロー・グラフを構成している。この構成でJPEGのようなフィード・フォワード型の問題では十分な性能が引き出せたことを報告している。PipeRenchは狭いビット幅のsliceを並列に並べたVLIW型のpipeline処理でフィード・フォワード型の問題を高速に処理できると述べている。
【0004】
反面、こうしたビット演算やバイト演算などをパイプライン処理する画像処理や信号処理等で使われる方式は限られ、RSに適したアプリケーションは数少ないとも言われている。また、通常のアプリケーションでは、複雑な条件判断・条件分岐、アドレス変換、関数呼び出しがデータ処理に付随しており、制御に関する処理が処理時間の大半を占めるため、RSシステムでは期待したような性能が得られないとも考えられている。S−Machineでは、こうした制御部分をC、C++などで記述し、高位合成によりデーターフローグラフ(DFG)に変換し、スケジューリングを行い、レジスター・トランスファー・レベル(RTL)のモデルを作成している。さらに、論理合成により論理回路を自動生成して高速化を図る方法を念頭に置いている。この方法はRC−LSIを回路部品としてASICと組み合わせて使う視点に立っている。
【0005】
他方、ソフトウェア部分が大半を占めるアプリケーションでの性能を向上させる視点に立って見ると、アプリケーションが使用するアルゴリズムは対象のデータ構造に依存して雑多である。こうしたアルゴリズムの基本部分の中には、データ探索・照合、常時監視、データ変換など、回路の並列・分散・実時間処理で実現することが好ましいものもある。特に、アプリケーションをオブジェクト指向設計(OOP)で開発する上で、オブジェクト毎にソフトウェア(SW)にするかハードウェア(HW)にするかを選択し、SW/HW混載システムを構成する開発方法が考えられる。
【0006】
汎用マイクロプロセッサ、DSPやゲートアレー等の従来からのプロセッサは製造後回路を変更することは出来ないLSIである。PLDあるいはFPGAは、製造後に回路に埋め込まれたスイッチ部分のヒューズを焼き切る手段、EPROMにスイッチの開閉データや論理回路の真理値表データを書き込む手段、SRAMにROMからスイッチの開閉データや論理回路の真理値表データを書き込む手段などにより、LSI製造後に利用者が回路データを書き込むことが出来る。
【0007】
また、従来の技術では、ハードウェア・デバイスの割り当てはシステムの立ち上げ時に立ち上げプログラムやオペレーティング・システム(OS)によって行われて、システムに組み込まれてOSによって管理される。詳しくは、書き込まれた回路を動作させるためには専用の制御プログラムであるデバイス・ドライバを作成していた。このデバイス・ドライバはOSのデバイス・ドライバ管理プログラムにより管理され、PLDに書き込まれた回路は周辺装置としてシステムに組み込まれていた。
【0008】
図18に、従来のシステムLSIの階層の説明図を示す。
従来のシステムLSIでは、関連するアプリケーション101、102、103がそれぞれデバイスドライバ111、112、113を必要とすると想定する。この場合、従来の技術では、システムの立ち上げ時、OS120が、関連する全てのアプリケーション101〜103のデバイス・ドライバ111、112、113を組込むことになる。
【0009】
【発明が解決しようとする課題】
このようにPLDに書き込まれた回路を常にシステムに組み込む従来の技術ではアプリケーションを動かす前に事前にOSに、全てのアプリケーションに関連する全てのデバイス・ドライバを組み込んでおかなければならず、実際に使用しないアプリケーションのデバイス・ドライバも組込まれる。そのため、従来は、余計なデバイス・ドライバも組込まれるので、OSに負担がかかる。また、従来は、アプリケーション毎に一時的にPLDに書き込まれる回路を実時間でハードウェア部品として登録し簡便に扱うことが出来ない。
【0010】
そこで、本発明は、デバイス・ドライバやOSの知識がなくても、アプリケーション・プログラムを開発する上で自由に簡便にPLDに書き込まれた回路を制御出来るようにするものである。通常は、アプリケーション毎に必要となる回路の種類や数量は異なるし、どのようなアプリケーションが実行されるかは不明なので、全アプリケーションに共通の回路を事前に用意しておくことは不可能である。また、アプリケーションに適した回路を必要な時期に用意できなければならないが、それも、アプリケーション・プログラムが実行された時でなければどの回路が必要なのか判明しない。
【0011】
しかしながら、本発明によれば、アプリケーション・プログラム開発者はライブラリから単にハードウェア・オブジェクト部品を取り出して使用するだけで、通常のソフトウェアのオブジェクトを使用するのと変わらないようにすることを目的とする。すなわち、本発明は、アプリケーションからOSの助けを借りずに自由自在に書き込まれた回路を管理し制御できるようにすることを目的とする。また、計算量が非常に大きい問題や常時、監視しなければならないような問題を含むアプリケーションにおいては、プログラムによる逐次処理だけで行うとCPUのリソースが上記の問題に消費されてしまいアプリケーション全体の処理速度が低下してしまう場合があるが、本発明は、このような課題を解決するものである。
【0012】
さらに、本発明は、アプリケーション・プログラムからデバイス・ドライバやOSを介さずに直接にPLDに書き込まれた回路を制御することでデバイス・ドライバやOSでの書き込まれた回路の追加・削除および制御に関するオーバーヘッドを削減することを目的とする。
【0013】
【課題を解決するための手段】
本発明では、オブジェクト指向プログラミングでの開発手法に整合するオブジェクト・モデルの形でPLDに書き込まれた回路、即ちハードウェア・ネット(hwNet)を包み込んだハードウェア・オブジェクト(hwObject)を使用する。ハードウェア・オブジェクトとしてオブジェクト・ライブラリに登録する。このオブジェクト・ライブラリから必要なハードウェア・オブジェクトをアプリケーション・プログラムの中で使用するうえで、ハードウェア・オブジェクトからアプリケーションに適したオブジェクトを派生させる時に機能やデータを拡張する事で回路の適切な制御が行える。
【0014】
本発明が要求するハードウェア・オブジェクトに対する手段は、主に、次の点である。
(1)PLD上に書き込まれる回路データに関する情報、オブジェクト識別子、入出力バッファー用変数、オブジェクトとして生成に関係するコンストラクタ関数あるいはそれと類似の関数でメモリ空間上にオブジェクトのインスタンスを生成するのに連動して、PLD上に回路を書き込む処理を行う手段。
(2)オブジェクトの消滅に関係するデストラクタあるいはそれと類似の関数でメモリ空間上のオブジェクトのインスタンスを削除すると同時にPLD上の回路を削除する処理を行う手段。
(3)オブジェクトのインスタンスに対する読み書きに対応して回路に対するIO処理を行う手段。
(4)PLDに書き込まれた回路の初期化、実行、中断、再開、中止、終了をそれぞれ行う関数。
(5)PLDに書き込まれた回路に関する次の情報を有する変数。回路の識別番号、動作中に回路が使用するメモリ・アドレスとサイズ、回路が書き込まれたPLDの番号とPLDの使用領域のアドレスとサイズ、回路に割り振られたデバイス番号、回路の動作中、処理終了、正常か異常など状態。
【0015】
本発明の第1の解決手段によると、
アプリケーションの一部の処理を実行する回路が動的に再構成可能な半導体回路制御装置において、
アプリケーションを実行するホストプロセッサと、
再構成可能な複数の回路の回路データを記憶したハードウェア・モジュールと、
前記ホストプロセッサが実行する複数のアプリケーションと、該アプリケーションの実行に用いられるハードウェア・オブジェクトの実行に必要であって、前記ハードウェア・モジュールに記憶された回路データにより制御される又は動作する予め組み込まれた回路を制御するプログラムであるハードウェア・ドライバとを記憶した主メモリと、
前記ホストプロセッサと前記主メモリ及び前記ハードウェア・モジュールとの間で、データを通信するバスと
を備え、
前記ホストプロセッサのオペレーティングシステムが立ち上がると、該オペレーティングシステムが、前記ハードウェア・モジュールに関する動作を制御するためのハードウェア・モジュール・ドライバを組み込み、
あるアプリケーションが起動された場合、前記ホストプロセッサは、そのアプリケーションに関連したハードウェア・オブジェクトを生成し、
生成されたハードウェア・オブジェクトが、ハードウェア・ドライバのオペレーティングシステム上への組み込みを管理するオブジェクト・マネジャーに要求を出し、
オブジェクト・マネジャーが、ハードウェア・オブジェクトに対応するハードウェア・ドライバをオペレーティングシステムに組み込むことにより、
前記ホストプロセッサが、前記ハードウェア・モジュールに記憶された回路データにより制御される又は動作する予め組み込まれた回路と、前記主メモリに記憶されたハードウェア・ドライバとを、まとめてハードウェア・オブジェクトとして使用するようにした半導体回路制御装置が提供される。
【0016】
本発明の第2の解決手段によると、
再構成可能な複数の回路の回路データを記憶したハードウェア・モジュールと、アプリケーションの実行に用いられるハードウェア・オブジェクトの実行に必要であって前記ハードウェア・モジュールに記憶された回路データにより制御される又は動作する予め組み込まれた回路を制御するプログラムであるハードウェア・ドライバを記憶した主メモリと、を備えたアプリケーションの一部の処理を実行する回路が動的に再構成可能な半導体回路制御装置において、アプリケーションを実行するホストプロセッサが、前記ハードウェア・モジュールに記憶された回路データにより制御される又は動作する予め組み込まれた回路と、前記主メモリに記憶されたハードウェア・ドライバとを、まとめてハードウェア・オブジェクトとして使用するようにした半導体回路制御プログラムであって、
前記ホストプロセッサのオペレーティングシステムが立ち上がると、該オペレーティングシステムが、前記ハードウェア・モジュールに関する動作を制御するためのハードウェア・モジュール・ドライバを組み込むステップと、
あるアプリケーションが起動された場合、前記ホストプロセッサは、そのアプリケーションに関連したハードウェア・オブジェクトを生成するステップと、
生成されたハードウェア・オブジェクトが、ハードウェア・ドライバのオペレーティングシステム上への組み込みを管理するオブジェクト・マネジャーに要求を出すステップと、
オブジェクト・マネジャーが、ハードウェア・オブジェクトに対応するハードウェア・ドライバをオペレーティングシステムに組み込むステップと、
をホストプロセッサに実行させるための半導体回路制御プログラムが提供される。
【0017】
【発明の実施の形態】
1. 基本的システム構成
ここでは、ハードウェア・オブジェクトモデルによるアプリケーションを開発する上で必要となる基礎的な枠組みの説明を行う。ここで提案する構成は標準的なものであり、PLDやFPGAの内部構成には関与しないが、動的に回路が書き換え可能なRC−LSIを考える。本実施の形態ではアプリケーション開発者がオブジェクトをハードウェアにするか、ソフトウェアにするか判断してプログラム全体を制御して性能向上を図ることを前提とする。また、どちらのオブジェクトも必要数だけ自由に確保できるようにメモリやRC−LSIが後述する計算機に用意されているとする。
【0018】
1.1 オブジェクトと回路
仮想回路をオブジェクトでラッピングしたハードウェア・オブジェクトモデルは通常のソフトウェア・オブジェクトと外見は同様であり、自由にプログラムの中で使用出来る。オブジェクト・ライブラリ中のオブジェクトから派生する方法を踏襲し、ハードウェア・オブジェクト・ライブラリを用意する。並列性が重視される画像認識、音声認識などの処理、常時観測が必要な処理など、専用回路に適した処理はハードウェア・オブジェクトとしてライブラリからRC−LSIに読み出して処理する。ただし、ハードウェア・オブジェクトは回路であるのでタイミングや同期の制御は行わなければならない。
【0019】
図1は、半導体回路制御装置の概要図である。
この半導体回路制御装置は、例えば、CPU11と、実際のメモリ空間であるメモリ12と、仮想回路空間であるPLD13とを備える。アプリケーション(アプリケーションプログラム)1は、ソフトウェアで実現してあるオブジェクトの他に最適な性能を実現する回路を含んだハードウェア・オブジェクト6も含まれている。アプリケーション1を実行する計算機は、メモリ素子で構成されるメモリ空間12上にアプリケーションのソフトウェア・プログラム部分を配置し、ソフトウェアを実行するCPU11とシステムバスで接続している。同時にCPU11には複数のPLD13を接続した標準バスが接続されている。このPLD13はアプリケーションが起動され、動作中にハードウェア・オブジェクト6が起動されると、その回路部分のハードウェア・ネット16が書き込まれる実ハードウェア部品である。メモリ素子と同様に多数のLSIで回路空間を構成する。アプリケーション1が起動されるとメモリ12内にアプリケーション1がまず配置される。プログラムの処理が進みハードウェア・オブジェクト(hwObject)6を生成するコンストラクタ文が実行されると、メモリ12とPLD13とに跨って(両方でセットとして)ハードウェア・オブジェクト6が配置される。ここでは、hwObject−1とhwObject−2のコンストラクタ文が実行されて二つのハードウェア・オブジェクト6が生成されている。アプリケーション1は、hwObject−1及びhwObject−2を含む。各ハードウェア・オブジェクト6に対応して、ハードウェア・ドライバ7及びハードウェア・ネット16が存在する。ハードウェア・ドライバ7は、メモリ12内に生成される。一方、ハードウェア・ネット16は、仮想回路空間であるPLD13内に、生成され且つ消去可能とされる。
【0020】
図2は、ホストプロセッサとハードウェア・ネット間の制御概要の流れを示す図である。
ここでは、ハードウェア・オブジェクト6に対する読み書きの要求がアプリケーション1から、順次、要求を伝えてハードウェア・ネット16にまで伝えて応答を返すまで処理が続く。この時、ハードウェア・ネット16は並列動作を行う。アプリケーション1はハードウェア・オブジェクト6に実行を命令して、返答を待たずに、次の処理、例えば、別のハードウェア・オブジェクト6の実行を行っていく。ハードウェア・ネット16の処理が終了したかどうかを調べる処理を行いハードウェア・オブジェクト6のメンバー変数の値を読み取る。このように、アプリケーション1のレベルでの並列処理にあった形でハードウェア・オブジェクト6を組み込み回路の並列性を適切に利用することが出来る。
【0021】
以下に、基本的な動作を説明する。
まず、アプリケーション1が起動されると、OSはアプリケーション1の実行に必要な領域をアプリケーション1が排他的に使用できるように確保して制御をアプリケーション1に渡す。アプリケーション1の起動・初期化プログラムは、プログラムで使用されるイベント管理、メッセージ管理等のOSとの通信やアプリケーション1内での管理に必要な基盤部分の立ち上げを行う。なお、ハードウェア・オブジェクト6の管理に必要な管理制御部分もこの時にアプリケーション部に組み込まれる。アプリケーションの動作中にハードウェア・オブジェクト6を生成する文が実行されると、ハードウェア・オブジェクト6がメモリ領域にIO処理部であるハードウェア・ドライバ7を含んで生成される。PLD13には同時に回路ハードウェア・ネット16が書き込まれ、ハードウェア・オブジェクト6が排他的に使用できるように設定される。このハードウェア・ネット16の回路データは、例えば、このハードウェア・ネット16の動作仕様を動作記述言語により記述し、設計自動化ツールである高位・論理合成、配置・配線ツールを使いPLD13に書き込まれる回路データを事前に作成して、回路ライブラリに登録しておくことができる。ここで、事前にハードウェア・ネット16を書き込んでおき、ハードウェア・オブジェクト6の生成時に回路を単に活性化させ、回路の書き込み時間を短縮させることは容易に考えられる。ハードウェア・オブジェクト6は一度生成されるとハードウェア・オブジェクト6を消滅させる文が実行されるかアプリケーション1が終了するまで存在し続ける。アプリケーション1の動作中にハードウェア・オブジェクト6に対する読み書きを行う文が実行されると、それがハードウェア・ネット16に関係するメンバー変数やメンバー関数に対する場合には、ハードウェア・ドライバ7を介してハードウェア・ネット16に対するIO処理を行う。
【0022】
2.半導体回路制御装置(プログラム)の詳細
2.1 全体的構成
図3に、半導体装置(システムLSI)の構成図を示す。
このシステムLSIは、例えば、ホストプロセッサ(HP.host Processor)31と、メインメモリ(MM.Main Memory)32と、ハードウェアモジュール(hwModule)33と、バス35とを備える。バス35には、ホスト・プロセッサ31とメインメモリ32の間にバスブリッジを設けてもよい。図に示すように、ソフトウェア・プログラムの大半はメインメモリ32に置かれ、ホスト・プロセッサ31により実行される。各種制御・処理のための回路は仮想化され、ハードウェア・ネット(hwNet)として、システムバス又は標準バス上に置かれたハードウェア・モジュール33と名付けたハードウェア部品中に設けられ、ホストプロセッサ31が必要となった時点に一時的に書き込まれ、不要になれば消去される。この生成・消去の手順は、ソフトウェアのオブジェクトと同じようにコンストラクタとデストラクタ演算子で行われる。ハードウェア・モジュール33はメモリ型のデバイスとして認識され、ハードウェア・オブジェクト6への読み書きは主メモリ32上に作られたオブジェクトと同じように行われる。メモリ空間上に自由にオブジェクトが作れるのと同じように、ハードウェア・オブジェクト6が自由に作られる仮想回路空間を実部品として提供するのがハードウェア・モジュール33である。従って、大きな仮想回路空間を張るように多量のハードウェア・モジュール33を事前に用意する。ハードウェア・オブジェクト6を使った計算モデルは仮想回路をオブジェクトとして扱い、アプリケーション1にハードウェア・ネット16を埋め込むインターフェースを提供するものである。
【0023】
2.2 ハードウェアモジュール構成
図4に、ハードウェア・モジュール33のブロック構成図を示す。
再構成可能システムを構成する基本単位として、図4に示すようなハードウェアボードである、ハードウェア・モジュール33を導入する。ハードウェア・モジュール33は、例えば、複数のRC−LSI、標準バス・インターフェース(BI)41、ローカル・メモリ(LM)42、ローカル・プロセッサ(LP)43、FPGA44、をローカル・バスで接続する構成になっている。LP43はハードウェア・モジュール33内のサービスを行う。LP43によってハードウェア・ネット16はJTAG方式で任意のRC−LSIを選択して書き込まれる。BI41は、後述するハードウェア・ドライバの制御命令によりHP31とハードウェア・ネット16との通信を制御する。ハードウェア・モジュール33自体はメモリ・デバイスとして認識され、メモリと同じような形態で標準バス(例えば、PCI)に接続して計算機に組み込まれる。この時、OSによりハードウェア・モジュール・ドライバと呼ぶデバイス・ドライバが組み込まれ、メモリ領域が割り当てられる。多数のメモリ・チップが一様且つ平坦なメモリ空間を構成するように多数のハードウェア・モジュール33内のRC−LSIは仮想回路空間を構成する。
【0024】
図4に示すようなハードウェア・モジュール33を使用することで、複数のハードウェア・ネット16を別々のFPGA44に配置する事でFPGA−1に置かれた最初のhwNet−1の出力をLM−2に書き込み、それをFPGA−2に書き込まれたhwNet−2が読み込む事で、hwNet−1とhwNet−2とは同時に動作してパイプライン処理をする事ができる。さらに、最終段のハードウェア・ネット16の出力をhwNet−1に戻す事で繰り返し処理が行える。また、LPによりホストプロセッサ31の負担を減らす事ができる。すなわち、FPGA44に書き込まれる使用頻度が高いハードウェア・ネット16の書き込みは、BI41を通してこのLP43に書き込み命令を送る事で可能である。
【0025】
2.3 CPU構成
図5に、CPUの階層構成図を示す。
CPU31は、アプリケーション1、オブジェクト・マネジャー2、ハードウェア・モジュール・ドライバ3、OS4、バス5を備える。この例では、アプリケーション1を3つ含む例を示しているが、適宜の数のアプリケーションを有することができる。各アプリケーション1は、ひとつ又は複数のハードウェアオブジェクト6、ハードウェアドライバ7、アプリケーション1とハードウェアドライバ7との入出力を制御するインターフェース8の組を有する。
【0026】
図に示す各ハードウェア・ドライバ7は、ハードウェア・ネット16毎に定義され、ハードウェア・ネット16の入出力動作を制御する。ハードウェア・ドライバ7には、例えば、hwNetの端子情報、書き込み、読み込み、イネーブル、アウトプット・イネーブルなどのhwNetの制御情報、hwObject番号、hwNet番号、hwModule番号、割り当てPLD番号、hwNet割り当て端子番号、局所メモリ割り当てアドレス、局所メモリ割り当て領域サイズ、hwNet状態、hwNet命令、主メモリでのhwNet通信領域アドレス、hwNet通信領域サイズ、hwNet通信領域カレント・アドレスなどの通信制御情報が組み込まれている。これらの情報は、ハードウェア・ネットの回路情報と共にハードウェア・ネットライブラリに保存されている。ハードウェア・オブジェクト6が生成されてハードウェア・ネット16がロードされる時には、hwModule番号、hwNet番号、PLD番号などを取得してハードウェア・ドライバ7がハードウェア・オブジェクト6の一部として生成される。
【0027】
ハードウェア・モジュール33を計算機に組み込んだ時、図に示すハードウェア・モジュール・ドライバ3は添付されたデバイス情報をもとにOS4にデバイス・ドライバとして永続的に登録される。このハードウェア・モジュール・ドライバ3は、計算機のバスに接続されたハードウェア・モジュール33に対する通信を制御している。例えば、標準バスとしてPCIバス5を使う時にはPCIデバイス情報などがOSから割り当てられる。計算機を立ち上げる時には常にハードウェア・モジュール・ドライバ3は、OSに事前に組み込まれる。
一方、このハードウェア・モジュール・ドライバ3に反して、ハードウェア・オブジェクト6のハードウェア・ドライバ7は、ハードウェア・ネット16が存在する時だけハードウェア・モジュール・ドライバ3の中に組み込まれ、OS4がハードウェア・ドライバ7を感知することはない。他方、ハードウェア・オブジェクト6側は、ハードウェア・ドライバ7をOSに組み込まれたデバイス・ドライバのように見なしてハードウェア・ネット16に対するアクセスを行う。このとき、どのハードウェア・モジュール33に対するアクセスを行うかなどは考慮する必要がない。
【0028】
このように、本発明では、OS4側からは、ハードウェア・モジュール・ドライバ3が常時組み込まれるデバイス・ドライバとして安定して制御及び監視を行う事ができるので、システムの安定性を保証する事ができる。他方、アプリケーション1側からは、ハードウェア・ドライバ7が必要なときにだけ割り当てられるので、ハードウェア・ネット16を使う自由度が大幅に増すことになる。
【0029】
図6は、ホストプロセッサのフローチャート(1)である。
HP31では、まず、OSが立ち上がると(S101)、OSは、ハードウェア・オブジェクト6を使う際又はその前の適当なときに、ハードウェア・モジュール・ドライバ3を組み込む(S103)。アプリケーション1が起動した場合、アプリケーション1は、そのアプリケーションに関連したハードウェア・オブジェクト6を生成する(サブルーチン実行)(S105)。ハードウェア・オブジェクト6が生成されると、ハードウェア・オブジェクト6がオブジェクト・マネジャー2に要求を出す(S107)。オブジェクト・マネジャー2がハードウェア・オブジェクト6に対応するハードウェア・ドライバ7を組み込む(S109)。
【0030】
図7は、ホストプロセッサのフローチャート(2)である。
つぎに、HP31では、アプリケーション1が実行されると、アプリケーション1は、メンバー関数を呼出す(S201)。ハードウェア・オブジェクト6に対応するI/F8からハードウェア・ドライバ7へメンバー関数に関連するデータと指示を送る(S203)。ハードウェア・ドライバ7は、このデータと指示を受け、ハードウェア・モジュール・ドライバ3にデータをセットする(S205)。ハードウェア・モジュール・ドライバ3は、セットされたデータにより、バスにハードウェア・ネット16を使うためのデータ信号を送信する(S207)。
図8は、ハードウェア・モジュールのフローチャートである。
ハードウェア・モジュール33では、HP31が送信したデータをバス35を介して受信し、PCI−バスI/F41はローカルプロセッサ43の制御により、受信データを関連するハードウェア・ネット16に送る(S301)。ハードウェア・ネット16は、受信データに従い、メンバー関数に関連する所定の処理を実行する(S303)。PCI−バスI/F41がローカルプロセッサ43の制御により、バス35へ処理結果を送信する(S305)。
図9は、ホストプロセッサのフローチャート(3)である。
つぎに、HP31では、ハードウェア・ドライバ7がバス31を介して、ハードウェア・モジュール33のハードウェア・ネット16で実行された、メンバー関数の処理結果をバス35を介して受信する(S401)。オブジェクト・マネジャー2は、ハードウェア・オブジェクト6にI/F7を介してその処理結果を送り、ハードウェア・オブジェクト6は、メンバー変数に値をセットする(S403)。アプリケーション1は、メンバー変数のセットされたハードウェア・オブジェクト6を使用することで所定の処理を実行する(S405)。
【0031】
3. ハードウェア・オブジェクト
ライブラリにある仮想回路から派生クラスを作り、逐次的な処理の中で、ハードウェア・オブジェクト6としてハードウェア・ネット16の同期を考慮して使用する。
【0032】
3.1 基本クラス
基本クラスhwObject_base_classは以下に示すようにメンバー変数、メンバー関数の他に仮想回路ハードウェア・ネット16を内包した抽象クラスである。全てのハードウェア・オブジェクト6は、ライブラリ中のハードウェア・オブジェクト6も含めて、このhwObject_base_classから派生させる。hwObject_base_classの主な構成は、ハードウェア・オブジェクト6の回路部分にあたるhwNet名、hwNetのIOに対応するメンバー変数port、LMに領域が確保される局所変数localint、生成(コンストラクター)・消滅(デストラクタ)演算子、他のオブジェクトからのこのオブジェクトのportに対するアクセスに対応して実行されるハードウェア・ネットに対するIO命令を含む。
図10に、ハードウェアオブジェクトの基底クラスの説明図を示す。この図では、オブジェクト指向言語であるクラス定義を用いて、回路データと該回路を制御するread、writeプログラムなどをまとめてハードウェアを含むハードウェア・オブジェクト部品の基本クラス (オブジェクト名)hwObject_base_classとして定義している(▲1▼参照)。
図中の宣言の中で該回路に対する読み(read)書き(write)を行う関数の例として
void write(byte portNo, byte value);
byte read (byte portNo, byte value);
を宣言している(▲5▼参照)。
【0033】
”該ハードウェア・オブジェクトを生成する“特別な関数であるコンストラクタはクラス名と同じ関数hwObject_base_class (int hwobjid, AnsiString hwNet)として定義されており(▲3▼参照)、この関数の中で”該回路を再構成可能な半導体装置に書き込む命令“を実行する。同様に”該ハードウェア・オブジェクトを削除する“特別な関数であるデストラクタはクラス名の前に「~」をつけて~hwObject_base_class()と定義されており(▲4▼参照)、この関数の中で“該ハードウェア・オブジェクトを削除するのに連動して該回路を半導体装置から削除する命令を実行する。
図中、回路の状態を示す状態変数のうち(▲2▼参照)outPort変数として
outPort _RDY,_STATUS;
と宣言してある。
【0034】
また、状態を監視する関数としてbool check( outPort stat );
を宣言している(▲6▼参照)。図中、制御関数はこのcheck()関数を対象となる複数の関数に対して呼び出し論理結果を調べればよい。例えば
for(int I=0; I<hwNetSu; I++){ hwNet* hwNetp = findHwNetP(hwNet[I]); hwNetp->check( );
のように記述すればよい。
【0035】
図11は、派生したハードウェア・オブジェクトの例を示す説明図である。
図11(a)は、通常のオブジェクト指向言語C++での派生クラスの仕方に従ってユーザが自分の目的にあった新しいハードウェア・オブジェクトクラスmyHwObj1を派生させている(?参照)。この派生により、基本クラスhwObject_base_classで定義されている関数や機能のうち必要なものは継承されている。
図中の宣言の中で関数、該回路を該ハードウェア・オブジェクト部品から制御する関数の例として
void funcX(int objNo, int netNo) ;
byte funcY(byte portNo, byte value);
を宣言している。
図11(b)も同様に新しいハードウェアオブジェクトクラスmyHwObj2を派生させている(▲2▼参照)。
【0036】
3.2 生成演算子とロード
生成(消滅)演算子は、MM32のメモリ領域確保(削除)の他にハードウェア・モジュール33のLM42のメモリ領域確保(削除)と仮想回路のロード(アンロード)を行う。hwObject_base_classにはハードウェア・オブジェクト6のメンバー変数の読み書きとメンバー関数の読み出しは通常のソフトウェア・オブジェクトと同様である。イベント駆動型やスレッド・オブジェクト型のオブジェクトにする場合は多重継承させて新しいハードウェア・オブジェクト6が定義できる。
【0037】
ハードウェア・ネット16は、後述するように事前にHDLで記述しビット・イメージを生成して回路ライブラリに登録する。hwNet-nameで指定されたハードウェア・ネット16がハードウェア・オブジェクト6の生成時にRC−LSIにロードされる。全てのハードウェア・ネット16は共通の制御方式によって制御され、その制御ポートはhwObject_base_classに宣言されている。ハードウェア・オブジェクト6は入出力データ領域、命令領域、状態領域をMM32とLM42に確保する。ハードウェア・ネット16はLM命令領域を常時監視し命令を実行する。以上のように、ハードウェア・オブジェクト6は、MM部とLM部とハードウェア・ネット16と空間的に離れた部分をカプセル化している。
【0038】
図12は、ハードウェア・ネットのHDL記述例を示す説明図である。
この図はハードウェア記述言語を用いて記述した回路hwNet1の入出力端子の定義を含んだ例を示す。この記述を自動設計ツールの一つである論理合成、配置配線などにより回路データが作成される。ここでは、インプットとアウトプットの変数が宣言されている。
【0039】
3.3 動作手順
図13に、ハードウェア・オブジェクトの使用例の説明図を示す。
図では、myHwObj1のメンバー関数中funcXの内容が記載されている。メンバー関数中funcXで、まず図中(a)でオブジェクトhwObj2はmyHwObj1の中で宣言される。図中(b)のnew演算子で生成されたオブジェクトmyHwObj2のポインタが代入される。即ち、new関数は、myHwObj2というクラスのオブジェクトをつくって名前をhwObj2とするものである。この処理は、上述のフローチャートのステップS101〜S109に相当する。ハードウェア・オブジェクトの生成が行われると、空いているハードウェア・モジュール33を探し、メモリ領域がMM32とLM42に確保され、RC−LSIに所定の状態変数がそれぞれロードされる。hwObj2はdelete演算子で消滅させない限りメモリ領域とそれに対応するhwNet2は確保されたままである。なお、一時的なものとして作られたハードウェア・オブジェクトの部分は、funcX()関数から抜ける時には、デストラクタによりオブジェクトの消滅が行われ、MM32とLM42でのメモリ領域が開放され、ハードウェア・ネット16もアンロードされる。図中(d)では、hwObj2のi_1にxを代入する。この処理は上述のフローチャートのステップS205に相当する。図中(e)では、hwObj2のexec関数を実行する。この処理は同じくステップS207に相当する。その後、図中(g)のcheck()関数でhwObj2の動作状態が調べられる。即ちハードウェア・ネットから戻るデータを受信したか否かを調べるもので、既存の制御文でハードウェア・ネットとのデータ送受信制御が可能となる。この処理は上述のフローチャートのステップS401に相当する。次に状態が「偽」になったら、while文を抜けてhwObj2の出力がyに代入される。この値yは、アプリケーション1が使用するものである。オブジェクトのメンバー変数やメンバー関数へのアクセスが(d)のようにあった時には対応するアドレスにデータが送られる。このアドレスは通常、コンパイラにより事前に解読(デコード)されている。
【0040】
4. ハードウェア・マネジャー
4.1 オブジェクト管理(オブジェクト・マネジャー、ObjectManager)
図14に、オブジェクト・マネジャーの説明図を示す。
図に示すように、ハードウェア・オブジェクト・マネジャー2は、アプリケーション1に実装される。ハードウェア・オブジェクト・マネジャー2は、ハードウェア・オブジェクト6の生成・消滅時、ハードウェア・マネジャー64を介してハードウェア・ネット16をRC−LSIで構成された仮想空間への書き込み、削除を管理を行う。ハードウェア・オブジェクト6に対して、実際に割り当てられたハードウェア・モジュール33のデバイス番号、RC−LSI番号、RC−LSIのピン番号、RC−LSI内のhwNet番号、LMのメモリ・アドレスと領域サイズ、管理領域などの情報をOSから得た情報を元に設定・管理する。ハードウェア・オブジェクト6に関するイベント管理部は、ハードウェア・オブジェクト・マネジャー2に実装される。イベント処理関数は、ハードウェア・オブジェクト6とハードウェア・オブジェクト・マネジャー2の管理テーブルを参照して、RC−LSI内のハードウェア・ネット16に対する通信をLM42を介して行う。RC−LSI内でのハードウェア・ネット16の制御は、ハードウェア・モジュール33の制御部が優先権方式で調停を行い、管理領域の実行フラグに従ってRC−LSIの制御ピン経由でハードウェア・ネット16を起動する。RC−LSI内の制御回路は、アサインされたhwNet番号に従ってRC−LSIのリソースをハードウェア・ネット16に割り当てる。オブジェクト間の通信は単一プロセッサ方式としてHPによりMM−LM間のデータ転送で行われる。
【0041】
4.2 ハードウェア管理(hardware Manager)
標準バスにハードウェア・ネット16を動的に接続し動作させるため、OS4立ち上げ時に、OS4のデバイス管理部にハードウェア・モジュール・ドライバ3を組み込む。ハードウェア・マネジャー(hwManager)64は、ハードウェア・ネット16管理情報を元にハードウェア・モジュール・ドライバ3上に動的にハードウェア・ネット16のデバイス・ドライバであるハードウェア・ドライバ7を提供する。ハードウェア・ネット16は一時的に生成・消滅が頻繁に行われるので、ハードウェア・オブジェクト6のハードウェア・ネット16とのインターフェースは、アプリケーション・レベルで管理を行う。アプリケーション・ソフトのハードウェア・オブジェクト6の一部として、ハードウェア・オブジェクト6毎にハードウェア・ドライバ7は作成・管理される。他方、ハードウェア・モジュール33は、デバイスとしてOSレベルで管理される。
【0042】
4.3 制御階層構成
図15に、ハードウェア・マネジャーを備えたCPU側の制御階層構成図を示す。
CPU31は、上述の制御階層構成図におけるアプリケーション1、オブジェクト・マネジャー2、ハードウェア・モジュール・ドライバ3、OS4、バス5に加え、ハードウェア・マネジャー(Hardware Manager)9を備える。この例では、アプリケーション1を3つ含む例を示しているが、適宜の数のアプリケーションを有することができる。各アプリケーション1は、ひとつ又は複数のハードウェア・オブジェクト6、ハードウェア・ドライバ7、アプリケーション1とハードウェア・ドライバ7との入出力を制御するインターフェース8の組を有する。
【0043】
ハードウェア・マネジャー9は、ハードウェア・オブジェクト6のインターフェース8とハードウェア・ドライバ7、及び、ハードウェア・ドライバ7とハードウェア・モジュール・ドライバ3とを直接に接続する。このように接続した後は、インターフェース8が送受する信号についてハードウェア・マネジャー9が介在しないで宛先アドレスの計算やオーバーヘッドを無くす事が出来る。あるいは、ハードウェア・マネジャー9が、信号の送受を監視して制御する方式も可能である。ハードウェア・マネジャー9は全アプリケーション間で共用できるハードウェア・ネットを共通管理するために図15のように介在するもので、共用化を行わない図5に追加したものである。共用化の処理を行う場合にはハードウェア・ドライバ7は、同一のアプリケーション内の異なるハードウェア・オブジェクト6間、あるいは異なるアプリケーション内のハードウェア・オブジェクト6間で共用される。
【0044】
図16に、オブジェクト・マネジャーの他の実施の形態を示す。
この例では、上述のオブジェクト・マネジャー2が、アプリケーション1ごとに分割されてオブジェクト・マネジャー2−1〜2−3が備えられる。各オブジェクト・マネジャー2−1〜2−3は、相互に情報のやり取りをおこなう。この情報には、ハードウェア・ドライバの組み込み又は非組み込みに関する情報、ハードウェア・ドライバの種類の情報・識別情報等を含むことができる。ハードウェア・ドライバの共用化を行う場合には、各オブジェクト・マネージャー2−1〜2−3が集めたハードウェア・ドライバの組み込み情報をもとハードウェア・マネジャーが共用化を行う。
【0045】
アプリケーションがハードウェア・ネットの共用化を行わずに排他的に使用する場合には、オブジェクト・マネジャーおよびハードウェア・マネジャーを統合して情報を一元管理する必要が無い。その場合には、それぞれのアプリケーション毎にオブジェクト・マネジャーおよびハードウェア・マネジャーは独立して存在することになる。
【0046】
5.ハードウェア・ネットの他の実施の形態
図17は、再構成可能な半導体装置PLDとその中に複数個の回路ハードウェア・ネット(hwNet)が書き込まれた図を示す。
上述の再構成可能な半導体装置PLDに書き込まれた回路であるハードウェア・ネット16の入出力端子は、内部バスに接続されている。この内部バスは、入出力選択回路51により前記回路を制御する所望の関数の制御に応じて再構成可能な半導体装置PLDの入出端子に接続される。この再構成可能な半導体装置PLDが選択されると、ハードウェア・ネット16の入出力端子が、内部バス、入出力選択回路51、再構成可能な半導体装置PLDの入出端子を介してハードウェア・モジュール33のバスに接続される。入出力選択回路51には、ハードウェア・ネット16に関する情報として、hwNet番号、端子情報、hwNet状態、割り当て位置、再構成可能な半導体装置PLDの入出端子との対応関係が書き込まれている。再構成可能な半導体装置PLDにハードウェア・ネット16に対する入出力命令が送られると、入出力選択回路51は、上記の情報と比較して当該のハードウェア・ネット16と再構成可能な半導体装置PLDの入出力端子とを結びハードウェア・モジュール33のバスにハードウェア・ネット16が接続しているように動作する。
【0047】
6. アプリケーション・プログラム
アプリケーション・プログラム(APPG、アプリケーション)1は、例えば、標準Window OS下で動作する。通常、大半のアプリケーションでは、処理時間の大半を占める主要部分はメモリに常駐し、下位にいくつかの専用処理部を占める構造になっている。この主要部分の中には、仮想回路での並列動作に整合する部分があると考えられる。
【0048】
6.1 構成規則と制約
APPGは以下の制約・規則に従って作成されるものとする。
(1)分散メモリと並列分散処理のアーキテクチャでstream型の入出力とパイプライン処理をする。
(2)逐次処理のオブジェクト指向プログラミングに標準ライブラリの基本クラスハードウェア・オブジェクト6から派生させたオブジェクトを埋め込む。ハードウェア・オブジェクト6を介して仮想回路ハードウェア・ネット16の入出力を行う。ハードウェア・オブジェクト6に内包(カプセル化)したドライバでハードウェア・ネット16を操作する。
(3)イベント(メッセージ)駆動型のオブジェクトで擬似並列動作も組み込む。イベントとイベント処理関数との対応関係をリストにしたイベント・リストとで構成。仮想回路の並列動作との同期をソフトウェアの逐次処理の流れの中で制御する。
【0049】
6.2 データ処理の種類
APPGで使われる処理の種別のうちハードウェア・オブジェクト6での実現が好ましいものとして以下の処理が考えられる。
(1)検索:データベース検索他、多数のアルゴリズムで使われる。
(2)部分処理:座標計算、シミュレーションなどの並列計算で多数使われる。
(3)前処理:画像・音声など信号処理分野でのデータ変換処理として多用される。
(4)一致処理:認識処理で頻繁に使用される。同時に多数の候補を比較する場合が多い。
(5)アドレス変換:木構造のデータ処理で頻繁に使用される。データ構造が複雑でポインター処理が多用されるオブジェクト指向プログラム。
(6)常時監視:実時間処理を含む場合には必須の機能である。
【0050】
6.3 処理フロー
APPGの一般的な特徴は、大規模な大域データ、大域的制御変数、データ・ベース、局所データ、局所制御変数、多数の関数が階層的に構成される。オブジェクト指向設計では、これらが、オブジェクトに内包され、標準的なオブジェクトから派生したオブジェクトに別のオブジェクトが組み込まれる。
APPGの処理は、まず、OSがAPPGを起動すると、主ルーチンで初期設定を行った後に(メニュー項目で選ばれた)命令受付状態に入り、受け取った命令毎に動作条件を調べ対応する関数を呼び出し実行する。同様に、イベント駆動型のプログラムでも、初期化の後にメッセージ受付の状態に入る。大域データは持続的であるが、局所データの中には一時的なものと持続的なものとがある。関数呼び出し時にはスタックが用意され、引数や一時変数がスタックに置かれ、call命令が実行される。関数内でハードウェア・オブジェクト6に関するアクセス等の処理終了に伴いreturn命令が実行されてスタックは削除される。イベント(以下、メッセージも含む)駆動型ではイベントの送信・受理は非同期で行われる。また、並列にイベント処理が行われる。
【0051】
6.4 イベント駆動
オブジェクトに対する非同期アクセスは、イベントを受け取る側のオブジェクトに作られたイベントとイベント処理関数とを対にしたイベント・リストにより処理される。イベントを発行するオブジェクトはそのメンバー関数の中でイベント発行し、イベント管理部のキューへ送り、次のコードを実行して関数の処理を終わる。イベント管理部は、キューからイベントを取り出し、イベントにある発行先オブジェクトのイベント・リストから、イベント処理関数を呼び出し、イベント処理を行う。
ハードウェア・オブジェクト6に内包された仮想回路hwNet1を動作させるイベント処理関数は、仮想回路hwNet1に対して起動信号を出す。逐次的に処理を進める場合には、その後、仮想回路hwNet1からの応答を待つwhileループに入り、応答を調べ、条件成立後、次のコードを実行する。分散・並列的に行う場合には、仮想回路hwNet1の応答を調べずに、仮想回路hwNet2を実行する。その後、hwNet1の応答を監視するイベントを発行するか、while文でhwNet1の監視を続けるかの制御方法をコードする。
並列実行をイベント処理関数のレベルでOSの管理下で行うには、スレッド・オブジェクトを使用する。スレッド関数の中から回路に対して制御を行う場合には、スレッドでの並列制御を組み込み、回路での並列動作と連動させることができる。
【0052】
【発明の効果】
本発明によると、以上説明した通り、従来のOSがデバイスを管理する技術では、アプリケーション・プログラムの動作時に回路を組み込み事が不可能であったが、ハードウェア・オブジェクトを介して、アプリケーション・プログラムの動作時に回路を組み込み事が可能になる。
また、本発明によると、メモリ領域とPLD上の回路とを一体化して扱い、両者を同時に生成し管理することがアプリケーション・プログラムの中から直接行う事が出来る。
【0053】
また、本発明によると、アプリケーション・プログラム開発者は通常のソフトウェアのオブジェクトを使用するのと変わらないように単にハードウェア・オブジェクトをライブラリから取り出して色々な回路を使用することができる。したがって、ソフトウェア・プログラム部品とハードウェア・回路部品とを組み合わせてアプリケーションを開発する事が出来るようになる。
また、本発明によると、今まではプロセッサの高速化や専用のASICだけにアプリケーション・プログラムの高速化を頼ってきたが、アプリケーションに合った回路を自前で用意する自由度が得られ、高速で多様なアプリケーションが得られる。
【0054】
また、本発明によると、ソフトウェア・プログラムだけでは並列度が高いアプリケーションも逐次的なコード列に変換し擬似的に並列処理を行っていたが、並列動作を行う回路を必要なところで使用する事で適切な形で逐次処理と並列処理とを組み合わせることが出来る。
【図面の簡単な説明】
【図1】半導体回路制御装置の概要図。
【図2】ホストプロセッサとハードウェア・ネット間の制御概要の流れ図。
【図3】半導体装置の構成図。
【図4】ハードウェア・モジュール33のブロック構成図。
【図5】CPUの階層構成図。
【図6】ホストプロセッサのフローチャート(1)。
【図7】ホストプロセッサのフローチャート(2)。
【図8】ハードウェア・モジュールのフローチャート。
【図9】ホストプロセッサのフローチャート(3)。
【図10】ハードウェアオブジェクトの基底クラスの説明図。
【図11】派生したハードウェア・オブジェクトの例を示す図。
【図12】ハードウェア・ネットのHDL記述例を示す図。
【図13】ハードウェア・オブジェクトの使用例の説明図。
【図14】オブジェクト・マネジャーの説明図。
【図15】ハードウェア・マネジャーを備えたCPUの階層構成図。
【図16】オブジェクト・マネジャーの他の実施の形態の図。
【図17】再構成可能な半導体装置PLDとその中に複数個の回路ハードウェア・ネットが書き込まれた図。
【図18】従来のシステムLSIの階層の説明図。
【符号の説明】
1 アプリケーション
6 ハードウェア・オブジェクト
7 ハードウェア・ドライバ
11 CPU
12 メモリ
13 PLD
16 ハードウェア・ネット[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a semiconductor circuit control device and a semiconductor circuit control program, and more particularly to a semiconductor circuit control device and a semiconductor circuit control program for controlling basic components of a system used in a large number together with a microprocessor and a signal processor. In addition, the present invention is used in application programs that are used particularly in fields that handle enormous amounts of computation, such as image processing, search processing, recognition processing, and parallel processing using a multiprocessor system. The present invention relates to a semiconductor circuit control device and a semiconductor circuit control program that are effective at the time.
[0002]
[Prior art]
Integration degree of reconfigurable LSI (hereinafter collectively referred to as RC-LSI including FPGA and PLD) such as PLD (Programmable Logic Device) or FPGA (Field Programmable Gate Array) which is reconfigurable hardware. In addition, the operation speed has been greatly improved. In addition, a Virtual Core (VC) design system that develops system LSIs based on components called Intellectual Property (IP) (Muraoka, M .: EDA Technology Direction Towards 2010, SASIM '98, pp. 131-132 (1998)) Similarly, standard circuits such as general-purpose processors and PCI controllers are also provided as IPs to RC-LSIs, and RC-LSIs are now a major LSI. Further, a Neumann bottleneck solution has been pursued by connecting distributed memories and RC-LSIs and performing parallel processing in parallel.
Reconfigurable System (RS) includes SPLICE (E.Caspi, M. Chu, R. Huang, J, Yeh, Y. Markovskiy, A. DeHon and J. Wawrzynek: Stream Computations Organized for Reconfigurable Execution (SCORE): Introduction and Tutorial, UCB SCORE manual), PipeRench (Y.Chou, Pllai, P., Schmit, H., Shen, J .: PipeRench Implementation of the Instruction Path Coprocessor, DMU manual.), Circuit from CDFG S-Machine (Toshinori Sueyoshi: Current Status and Challenges of Reconfigurable Computing System-Toward Computer Evolution-, IEICE Tech., Vol. VLD96, No. 79, pp. 111-118 (1992)), in memory DRL LSI (Yamashina, M. and Motomura, M .: Reconfigurable Computing: Its Concept and a Practical embodiment using Newly Developed Dynamically Reconfigurable Logic (DRL) LSI, ASP-DAC 2000, pp. 329-332 (2000)), new circuit configurations and circuit objects and methods. Plastic Cell Array (PCA) with message in mind (Imlig, N., Konishi, R., Shiozawa, T., Oguri, K. et al .: Communicating Logic: An Alternative Embeded Stream Processing Paradigm, ASP-DAC 2000 , pp. 317-322 (2000).) (Hauser, JR and Wawrzynek, J .: Garp: A MIPS Processor with a Reconfigurable Coprocessor., IEEE Symposium on Field Programmable Gate Arrays for Custom Computing Machines, IEEE, pp.12-21 (1997).) (J. Villasensor, C. Jones, B .: Video Communications Using Rapidly Reconfigurable Hardware, cas for Video Tech., Vol.5, No.6, pp. 565-567 (1995).).
[0003]
Among these, SCORE is a scalable reconfiguration system, and a data flow graph is composed of an arithmetic unit that receives Stream type data and a storage unit called a segment that performs paging. It has been reported that with this configuration, a sufficient performance can be obtained with a feed-forward type problem such as JPEG. PipeRench states that a feed-forward type problem can be processed at high speed by a VLIW type pipeline process in which slices having a narrow bit width are arranged in parallel.
[0004]
On the other hand, methods used in image processing, signal processing, and the like for pipeline processing such bit operations and byte operations are limited, and it is said that there are few applications suitable for RS. In normal applications, complicated condition determination / conditional branching, address translation, and function calls are attached to data processing, and processing related to control occupies most of the processing time. It is thought that it cannot be obtained. In S-Machine, such a control part is described in C, C ++, etc., converted into a data flow graph (DFG) by high-level synthesis, scheduled, and a register transfer level (RTL) model is created. Furthermore, a method for automatically generating a logic circuit by logic synthesis to increase the speed is taken into consideration. This method is based on the viewpoint of using RC-LSI in combination with ASIC as a circuit component.
[0005]
On the other hand, from the viewpoint of improving performance in an application in which the software part is the majority, the algorithm used by the application is miscellaneous depending on the target data structure. Some of the basic parts of these algorithms are preferably implemented by parallel / distributed / real-time processing of circuits, such as data search / collation, constant monitoring, and data conversion. In particular, when developing an application with object-oriented design (OOP), a development method for configuring a SW / HW mixed system by selecting software (SW) or hardware (HW) for each object is considered. It is done.
[0006]
Conventional processors such as general-purpose microprocessors, DSPs, and gate arrays are LSIs whose circuits cannot be changed after manufacturing. PLD or FPGA is a means to burn out the fuse of the switch part embedded in the circuit after manufacture, a means to write switch opening / closing data and logic table truth table data to the EPROM, and a switch opening / closing data from the ROM to the logic circuit. The user can write circuit data after manufacturing the LSI by means of writing truth table data.
[0007]
In the prior art, the allocation of hardware devices is performed by a startup program or an operating system (OS) when the system is started, and is incorporated into the system and managed by the OS. Specifically, a device driver, which is a dedicated control program, is created to operate the written circuit. The device driver is managed by the OS device driver management program, and the circuit written in the PLD is incorporated in the system as a peripheral device.
[0008]
FIG. 18 is an explanatory diagram of the hierarchy of a conventional system LSI.
In a conventional system LSI, it is assumed that
[0009]
[Problems to be solved by the invention]
As described above, in the conventional technology in which the circuit written in the PLD is always incorporated in the system, all device drivers related to all applications must be incorporated in the OS in advance before the application is operated. Device drivers for applications that are not used are also included. Therefore, conventionally, an extra device driver is also incorporated, which places a burden on the OS. Conventionally, a circuit that is temporarily written in a PLD for each application cannot be registered as a hardware component in real time and handled easily.
[0010]
Therefore, the present invention makes it possible to control a circuit written in a PLD freely and easily when developing an application program without knowledge of a device driver or an OS. Normally, the types and quantities of circuits required for each application are different, and it is unclear what application will be executed, so it is impossible to prepare a common circuit for all applications in advance. . In addition, it is necessary to prepare a circuit suitable for an application at a necessary time, but it is not possible to determine which circuit is necessary unless the application program is executed.
[0011]
However, according to the present invention, an application program developer simply takes out a hardware object part from a library and uses it, so that it is not different from using a normal software object. . That is, an object of the present invention is to make it possible to manage and control circuits written freely from an application without the help of an OS. Also, in an application that includes a problem that requires a large amount of calculation or a problem that must be monitored at all times, if only sequential processing by a program is performed, the CPU resources are consumed by the above problem, and the entire application is processed. Although the speed may decrease, the present invention solves such a problem.
[0012]
Furthermore, the present invention relates to addition / deletion and control of a circuit written in a device driver or OS by controlling a circuit written in a PLD directly from an application program without going through the device driver or OS. The purpose is to reduce overhead.
[0013]
[Means for Solving the Problems]
In the present invention, a circuit written in the PLD in the form of an object model consistent with a development method in object-oriented programming, that is, a hardware object (hwObject) enclosing a hardware net (hwNet) is used. Register as a hardware object in the object library. When using necessary hardware objects from this object library in an application program, appropriate functions can be controlled by extending functions and data when deriving objects suitable for applications from hardware objects. Can be done.
[0014]
The means for hardware objects required by the present invention are mainly as follows.
(1) Linked to creating an instance of an object in the memory space with information related to circuit data written on the PLD, an object identifier, an input / output buffer variable, a constructor function related to creation as an object, or a similar function. Means for writing a circuit on the PLD.
(2) Means for deleting a circuit on the PLD at the same time as deleting an instance of the object in the memory space with a destructor related to the disappearance of the object or a function similar thereto.
(3) Means for performing I / O processing on a circuit in correspondence with reading / writing of an object instance.
(4) Functions for performing initialization, execution, interruption, restart, cancellation, and termination of the circuit written in the PLD.
(5) A variable having the following information about the circuit written in the PLD. Circuit identification number, memory address and size used by the circuit during operation, PLD number and PLD use area address and size in which the circuit is written, device number assigned to the circuit, circuit operation, processing Ended, normal or abnormal status.
[0015]
According to the first solution of the present invention,
In a semiconductor circuit control device in which a circuit for executing part of processing of an application can be dynamically reconfigured,
A host processor that executes the application;
A hardware module storing circuit data of a plurality of reconfigurable circuits;
A plurality of applications executed by the host processor and a circuit stored in the hardware module, which is necessary for executing a hardware object used for executing the applicationPre-embedded circuit controlled or operated by dataA main memory storing a hardware driver which is a program for controlling
A bus for communicating data between the host processor and the main memory and the hardware module;
With
When the operating system of the host processor starts up, the operating system incorporates a hardware module driver for controlling operations related to the hardware module.Only,
When an application is launched, the host processor creates a hardware object associated with the applicationShi,
The generated hardware object issues a request to the object manager that manages the installation of the hardware driver on the operating system.Shi,
Object manager incorporates hardware drivers for hardware objects into the operating systemBy,
The host processor is stored in the hardware moduleTimesRoad dataPre-embedded circuit controlled or operated byAnd a hardware driver stored in the main memory are collectively used as a hardware object.
[0016]
According to the second solution of the present invention,
A hardware module storing circuit data of a plurality of reconfigurable circuits, and a circuit necessary for executing a hardware object used for executing an application and stored in the hardware modulePre-embedded circuit controlled or operated by dataA host processor for executing an application in a semiconductor circuit control device capable of dynamically reconfiguring a circuit for executing part of processing of the application, comprising a main memory storing a hardware driver as a program for controlling Is stored in the hardware moduleTimesRoad dataPre-embedded circuit controlled or operated byAnd a semiconductor circuit control program that collectively uses the hardware driver stored in the main memory as a hardware object,
When the operating system of the host processor is booted, the operating system incorporates a hardware module driver for controlling operations related to the hardware module;
When an application is launched, the host processor generates a hardware object associated with the application;
The generated hardware object issues a request to the object manager that manages the incorporation of the hardware driver into the operating system;
An object manager incorporating a hardware driver corresponding to the hardware object into the operating system;
A semiconductor circuit control program for causing a host processor to execute is provided.
[0017]
DETAILED DESCRIPTION OF THE INVENTION
1. Basic system configuration
Here, the basic framework necessary for developing an application based on the hardware object model is described. The configuration proposed here is a standard configuration and considers an RC-LSI in which the circuit can be dynamically rewritten although it is not involved in the internal configuration of the PLD or FPGA. In this embodiment, it is assumed that an application developer determines whether an object is hardware or software and controls the entire program to improve performance. Further, it is assumed that a memory and an RC-LSI are prepared in a computer to be described later so that both objects can be secured as many as necessary.
[0018]
1.1 Objects and circuits
The hardware object model in which virtual circuits are wrapped with objects has the same appearance as a normal software object, and can be freely used in a program. Following the method of deriving from the objects in the object library, a hardware object library is prepared. Processes suitable for dedicated circuits, such as image recognition and speech recognition processes that place importance on parallelism, and processes that require constant observation, are read out from the library to the RC-LSI and processed as hardware objects. However, since the hardware object is a circuit, timing and synchronization must be controlled.
[0019]
FIG. 1 is a schematic diagram of a semiconductor circuit control device.
The semiconductor circuit control device includes, for example, a
[0020]
FIG. 2 is a diagram showing a flow of an outline of control between the host processor and the hardware network.
Here, the processing continues until a read / write request to the
[0021]
The basic operation will be described below.
First, when the
[0022]
2. Details of semiconductor circuit controller (program)
2.1 Overall configuration
FIG. 3 shows a configuration diagram of a semiconductor device (system LSI).
The system LSI includes, for example, a host processor (HP.host Processor) 31, a main memory (MM.Main Memory) 32, a hardware module (hwModule) 33, and a
[0023]
2.2 Hardware module configuration
FIG. 4 shows a block configuration diagram of the
As a basic unit constituting the reconfigurable system, a
[0024]
By using the
[0025]
2.3 CPU configuration
FIG. 5 shows a hierarchical configuration diagram of the CPU.
The
[0026]
Each
[0027]
When the
On the other hand, contrary to the
[0028]
As described above, in the present invention, since the OS 4 side can stably control and monitor as a device driver in which the
[0029]
FIG. 6 is a flowchart (1) of the host processor.
In the
[0030]
FIG. 7 is a flowchart (2) of the host processor.
Next, in the
FIG. 8 is a flowchart of the hardware module.
The
FIG. 9 is a flowchart (3) of the host processor.
Next, in the
[0031]
3. Hardware object
A derived class is created from the virtual circuit in the library and used in consideration of the synchronization of the
[0032]
3.1 Basic class
The base class hwObject_base_class is an abstract class that includes the virtual
FIG. 10 is an explanatory diagram of the base class of the hardware object. In this figure, using a class definition that is an object-oriented language, the circuit data and the read and write programs that control the circuit are grouped together and defined as the basic class (object name) hwObject_base_class including the hardware (Refer to (1)).
As an example of a function that reads and writes to the circuit in the declaration in the figure
void write (byte portNo, byte value);
byte read (byte portNo, byte value);
(See (5)).
[0033]
“A constructor that is a special function that creates the hardware object” is defined as a function hwObject_base_class (int hwobjid, AnsiString hwNet) that is the same as the class name (see (3)). The instruction “is written to the reconfigurable semiconductor device. Similarly, the destructor, which is a special function for “deleting the hardware object”, is defined as ~ hwObject_base_class () with “~” in front of the class name (see (4)). The instruction to delete the circuit from the semiconductor device is executed in conjunction with the deletion of the hardware object.
In the figure, out of the state variables that indicate the circuit state (see (2)) as the outPort variable
outPort _RDY, _STATUS;
It has been declared.
[0034]
Also, bool check (outPort stat);
(See (6)). In the figure, the control function may call the check () function for a plurality of functions and examine the logical result. For example
for (int I = 0; I <hwNetSu; I ++) {hwNet * hwNetp = findHwNetP (hwNet [I]); hwNetp-> check ();
It should be described as follows.
[0035]
FIG. 11 is an explanatory diagram illustrating an example of a derived hardware object.
In FIG. 11A, the user derives a new hardware object class myHwObj1 that suits his / her purpose in accordance with the method of the derived class in the normal object-oriented language C ++ (see?). With this derivation, necessary functions and functions defined in the base class hwObject_base_class are inherited.
Examples of functions in the declaration in the figure and functions that control the circuit from the hardware object parts
void funcX (int objNo, int netNo);
byte funcY (byte portNo, byte value);
Is declared.
FIG. 11B similarly derives a new hardware object class myHwObj2 (see (2)).
[0036]
3.2 Generation operators and loading
The generation (disappearance) operator secures (deletes) the memory area of the
[0037]
As will be described later, the
[0038]
FIG. 12 is an explanatory diagram of an HDL description example of a hardware net.
This figure shows an example including the definition of the input / output terminals of the circuit hwNet1 described using the hardware description language. Circuit data is created from this description by logic synthesis, placement and routing, which is one of automatic design tools. Here, input and output variables are declared.
[0039]
3.3 Operation procedure
FIG. 13 is an explanatory diagram of a usage example of the hardware object.
In the figure, the contents of funcX in the member function of myHwObj1 are described. In the member function funcX, the object hwObj2 is first declared in myHwObj1 in FIG. The pointer of the object myHwObj2 generated by the new operator in (b) in the figure is substituted. That is, the new function creates an object of the class myHwObj2 and names it hwObj2. This process corresponds to steps S101 to S109 in the flowchart described above. When a hardware object is generated, a
[0040]
4). Hardware manager
4.1 Object management (object manager, ObjectManager)
FIG. 14 is an explanatory diagram of the object manager.
As shown in the figure, the
[0041]
4.2 Hardware Management
In order to dynamically connect and operate the
[0042]
4.3 Control layer structure
FIG. 15 shows a control layer configuration diagram on the CPU side provided with a hardware manager.
The
[0043]
The hardware manager 9 directly connects the
[0044]
FIG. 16 shows another embodiment of the object manager.
In this example, the above-described
[0045]
When an application uses it exclusively without sharing the hardware net, it is not necessary to integrate the object manager and the hardware manager to centrally manage information. In that case, an object manager and a hardware manager exist independently for each application.
[0046]
5). Other embodiment of hardware net
FIG. 17 shows a diagram in which a reconfigurable semiconductor device PLD and a plurality of circuit hardware nets (hwNet) are written therein.
The input / output terminals of the
[0047]
6). Application program
An application program (APPG, application) 1 operates, for example, under a standard window OS. Normally, in most applications, the main part occupying most of the processing time is resident in the memory, and several dedicated processing parts are occupying the lower part. In this main part, it is considered that there is a part that matches the parallel operation in the virtual circuit.
[0048]
6.1 Configuration rules and constraints
The APPG is created according to the following restrictions and rules.
(1) Stream-type input / output and pipeline processing are performed using a distributed memory and parallel distributed processing architecture.
(2) An object derived from the basic
(3) An event (message) driven object that also incorporates pseudo-parallel operation. Consists of an event list that lists the correspondence between events and event processing functions. The synchronization with the parallel operation of the virtual circuit is controlled in the sequence of software sequential processing.
[0049]
6.2 Types of data processing
Among the types of processing used in the APPG, the following processing can be considered as being preferable to be realized by the
(1) Search: Used in many algorithms including database search.
(2) Partial processing: used in many parallel calculations such as coordinate calculation and simulation.
(3) Preprocessing: frequently used as data conversion processing in the field of signal processing such as image and sound.
(4) Matching process: frequently used in the recognition process. Often many candidates are compared at the same time.
(5) Address translation: frequently used in tree-structured data processing. An object-oriented program with a complicated data structure and frequent pointer processing.
(6) Constant monitoring: an essential function when real-time processing is involved.
[0050]
6.3 Processing flow
The general feature of APPG is that large-scale global data, global control variables, data base, local data, local control variables, and many functions are hierarchically configured. In object-oriented design, these are contained in an object, and another object is incorporated into an object derived from a standard object.
In the processing of APPG, first, when the OS starts up APPG, after initial setting is performed in the main routine, it enters an instruction reception state (selected by a menu item), checks the operating condition for each received instruction, and sets a corresponding function. Call and execute. Similarly, even an event-driven program enters a message reception state after initialization. Global data is persistent, but some local data is temporary and persistent. When a function is called, a stack is prepared, arguments and temporary variables are placed on the stack, and a call instruction is executed. A return instruction is executed upon completion of processing such as access related to the
[0051]
6.4 Event driven
Asynchronous access to an object is processed by an event list in which an event generated by an object that receives an event and an event processing function are paired. The object issuing the event issues the event in its member function, sends it to the queue of the event management unit, executes the next code, and finishes the function processing. The event management unit extracts an event from the queue, calls an event processing function from the event list of the issue destination object in the event, and performs event processing.
The event processing function for operating the virtual circuit hwNet1 included in the
In order to perform parallel execution at the level of an event processing function under the management of the OS, a thread object is used. When controlling a circuit from within a thread function, parallel control in a thread can be incorporated and linked with parallel operation in a circuit.
[0052]
【The invention's effect】
According to the present invention, as described above, with the technology in which a conventional OS manages a device, it is impossible to incorporate a circuit during the operation of an application program. It is possible to incorporate a circuit during operation.
Further, according to the present invention, the memory area and the circuit on the PLD can be handled in an integrated manner, and both can be generated and managed at the same time directly from the application program.
[0053]
In addition, according to the present invention, an application program developer can simply take out a hardware object from a library and use various circuits in the same way as using an ordinary software object. Accordingly, it becomes possible to develop an application by combining software / program parts and hardware / circuit parts.
In addition, according to the present invention, up to now, the speed of the application program has been relied only on the speed-up of the processor and the dedicated ASIC. Various applications can be obtained.
[0054]
In addition, according to the present invention, an application with a high degree of parallelism is converted into a sequential code string by a software program alone, and pseudo-parallel processing is performed. Sequential and parallel processing can be combined in an appropriate manner.
[Brief description of the drawings]
FIG. 1 is a schematic diagram of a semiconductor circuit control device.
FIG. 2 is a flowchart of an outline of control between a host processor and a hardware net.
FIG. 3 is a configuration diagram of a semiconductor device.
4 is a block configuration diagram of a
FIG. 5 is a hierarchical configuration diagram of a CPU.
FIG. 6 is a flowchart (1) of a host processor.
FIG. 7 is a flowchart (2) of the host processor.
FIG. 8 is a flowchart of hardware modules.
FIG. 9 is a flowchart (3) of the host processor.
FIG. 10 is an explanatory diagram of a base class of a hardware object.
FIG. 11 is a diagram showing an example of a derived hardware object.
FIG. 12 is a diagram showing an HDL description example of a hardware net.
FIG. 13 is an explanatory diagram of a usage example of a hardware object.
FIG. 14 is an explanatory diagram of an object manager.
FIG. 15 is a hierarchical configuration diagram of a CPU including a hardware manager.
FIG. 16 is a diagram of another embodiment of an object manager.
FIG. 17 is a diagram in which a reconfigurable semiconductor device PLD and a plurality of circuit hardware nets are written therein;
FIG. 18 is an explanatory diagram of a hierarchy of a conventional system LSI.
[Explanation of symbols]
1 Application
6 Hardware objects
7 Hardware drivers
11 CPU
12 memory
13 PLD
16 Hardware net
Claims (16)
アプリケーションを実行するホストプロセッサと、
再構成可能な複数の回路の回路データを記憶したハードウェア・モジュールと、
前記ホストプロセッサが実行する複数のアプリケーションと、該アプリケーションの実行に用いられるハードウェア・オブジェクトの実行に必要であって、前記ハードウェア・モジュールに記憶された回路データにより制御される又は動作する予め組み込まれた回路を制御するプログラムであるハードウェア・ドライバとを記憶した主メモリと、
前記ホストプロセッサと前記主メモリ及び前記ハードウェア・モジュールとの間で、データを通信するバスと
を備え、
前記ホストプロセッサのオペレーティングシステムが立ち上がると、該オペレーティングシステムが、前記ハードウェア・モジュールに関する動作を制御するためのハードウェア・モジュール・ドライバを組み込み、
あるアプリケーションが起動された場合、前記ホストプロセッサは、そのアプリケーションに関連したハードウェア・オブジェクトを生成し、
生成されたハードウェア・オブジェクトが、ハードウェア・ドライバのオペレーティングシステム上への組み込みを管理するオブジェクト・マネジャーに要求を出し、
オブジェクト・マネジャーが、ハードウェア・オブジェクトに対応するハードウェア・ドライバをオペレーティングシステムに組み込むことにより、
前記ホストプロセッサが、前記ハードウェア・モジュールに記憶された回路データにより制御される又は動作する予め組み込まれた回路と、前記主メモリに記憶されたハードウェア・ドライバとを、まとめてハードウェア・オブジェクトとして使用するようにした半導体回路制御装置。In a semiconductor circuit control device in which a circuit for executing part of processing of an application can be dynamically reconfigured,
A host processor that executes the application;
A hardware module storing circuit data of a plurality of reconfigurable circuits;
A plurality of applications to be executed by the host processor and a hardware object used for executing the applications are pre-installed that are controlled or operated by circuit data stored in the hardware module. A main memory storing a hardware driver, which is a program for controlling the selected circuit ;
A bus for communicating data between the host processor and the main memory and the hardware module;
When the operating system of the host processor rises, the operating system, see write set the hardware module driver for controlling the operation relating to the hardware modules,
When an application is launched, the host processor creates a hardware object associated with the application,
Generated hardware object, and out of the request to the object manager that manages the integration into the operating system of the hardware drivers,
Object managers, by the write Mukoto set the hardware driver that corresponds to the hardware object to the operating system,
Said host processor, a preinstalled circuit is being or operation controlled by stored circuitry data to the hardware module and a hardware driver stored in said main memory, together hardware A semiconductor circuit control device used as an object.
アプリケーションが、メンバー関数を呼出し、
ハードウェア・オブジェクトが、それに対応するハードウェア・ドライバへ、メンバー関数に関連するデータを送り、
ハードウェア・ドライバが、ハードウェア・モジュール・ドライバへ送るべきメンバー関数に関連するデータをセットし、
ハードウェア・モジュール・ドライバが、セットされたデータに従い、バスを介してハードウェア・モジュールに回路を使うためのデータ信号を送信する
ようにした請求項1に記載の半導体回路制御装置。The host processor further includes:
Application, and call the member function,
Hardware object, to the hardware driver that corresponds to it, Ri send the data relating to the member function,
Hardware driver, and set the data related to the member function to be sent to the hardware module driver,
The hardware module driver sends a data signal for using the circuit to the hardware module via the bus according to the set data.
The semiconductor circuit control device according to claim 1, wherein
ハードウェア・モジュールが、前記バスを介して、前記ホストプロセッサからハードウェア・モジュール内の回路を使うためのデータを受信し、
ハードウェア・モジュール内の回路が、メンバー関数に関連する処理を実行し、
ハードウェア・モジュールが、該回路により得られたメンバー関数の処理結果を、前記バスを介して前記ホストプロセッサに送信する
ようにした請求項1又は2に記載の半導体回路制御装置。The hardware module further includes:
Hardware modules, via said bus to receive data for using circuitry in the hardware module from the host processor,
Circuit in a hardware module, and executes a process relating to member functions,
The hardware module transmits the processing result of the member function obtained by the circuit to the host processor via the bus.
The semiconductor circuit control device according to claim 1 or 2, wherein the semiconductor circuit control device is configured as described above.
ハードウェア・ドライバが、バスを介して、前記ハードウェア・モジュールの回路によるメンバー関数の処理結果を受信し、
ハードウェア・オブジェクトが、ハードウェア・ドライバにより受信された処理結果に従い、メンバー変数をセットし、
アプリケーションが、メンバー変数のセットされたハードウェア・オブジェクトを使用して処理を実行する
ようにした請求項1乃至3のいずれかに記載の半導体回路制御装置。The host processor further includes:
Hardware drivers, through the bus, receives the processing result of the member function by the circuit of the hardware modules,
Hardware object, according to the processing result that has been received by the hardware driver, set the member variable,
An application uses a hardware object with member variables set to perform processing
4. The semiconductor circuit control device according to claim 1, wherein the semiconductor circuit control device is configured as described above.
前記ホストプロセッサとデータあるいは命令を通信するバスに対するインターフェース回路と、
再構成可能な第1及び第2の回路と、
第1及び第2の局所メモリと
を備え、
前記インターフェース回路と、前記第1の局所メモリと、再構成可能な前記第1の回路とを双方向接続し、該第1の回路が第1の処理を実行し、
再構成可能な前記第1の回路と、前記の第2の局所メモリとを双方向接続し、前記第1の回路による第1の処理結果を前記第2の局所メモリに記憶し、
前記第2の局所メモリと再構成可能な前記第2の回路とを接続することにより、前記第2の回路は、第1の処理結果を用いて第2の処理を実行することを特徴とする請求項1乃至5のいずれかに記載の半導体回路制御装置。The hardware module is
An interface circuit for a bus communicating data or instructions with the host processor;
Reconfigurable first and second circuits;
First and second local memories,
Bidirectionally connecting the interface circuit, the first local memory, and the reconfigurable first circuit, and the first circuit executes a first process;
Bi-directionally connecting the reconfigurable first circuit and the second local memory, and storing the first processing result by the first circuit in the second local memory;
By connecting the second local memory and the reconfigurable second circuit, the second circuit executes a second process using a first processing result. The semiconductor circuit control device according to claim 1.
前記第1〜第Nの回路による処理結果をそれぞれ前記第1〜第Nのメモリを介して送受し、再構成可能な第Nの回路と、第1の局所メモリとを双方向接続して、パイプライン処理を実行するようにした請求項6に記載の半導体回路制御装置。Further comprising first to Nth memories and first to Nth reconfigurable circuits;
The processing results of the first to Nth circuits are transmitted and received through the first to Nth memories, respectively, and the reconfigurable Nth circuit and the first local memory are bidirectionally connected, The semiconductor circuit control device according to claim 6, wherein pipeline processing is executed.
回路とのデータの書込み・読出しを制御するローカルプロセッサと
をさらに備えた請求項6又は7に記載の半導体回路制御装置。The hardware module is
The semiconductor circuit control device according to claim 6, further comprising a local processor that controls writing / reading of data to / from the circuit.
前記ホストプロセッサのオペレーティングシステムが立ち上がると、該オペレーティングシステムが、前記ハードウェア・モジュールに関する動作を制御するためのハードウェア・モジュール・ドライバを組み込むステップと、
あるアプリケーションが起動された場合、前記ホストプロセッサは、そのアプリケーションに関連したハードウェア・オブジェクトを生成するステップと、
生成されたハードウェア・オブジェクトが、ハードウェア・ドライバのオペレーティングシステム上への組み込みを管理するオブジェクト・マネジャーに要求を出すステップと、
オブジェクト・マネジャーが、ハードウェア・オブジェクトに対応するハードウェア・ドライバをオペレーティングシステムに組み込むステップと、
をホストプロセッサに実行させるための半導体回路制御プログラム。A hardware module that stores circuit data of a plurality of reconfigurable circuits, and a hardware module that is necessary to execute a hardware object used for executing an application and is controlled by the circuit data stored in the hardware module. And a main memory storing a hardware driver that is a program for controlling a pre-built circuit that operates or operates , and a semiconductor circuit control capable of dynamically reconfiguring a circuit that executes a part of processing of an application in the device, a host processor executing applications, a pre-integrated circuit that is being or operation controlled by stored circuitry data to the hardware module and a hardware driver stored in said main memory , Collectively used as hardware objects Unishi was a semiconductor circuit control program,
When the operating system of the host processor is booted, the operating system incorporates a hardware module driver for controlling operations related to the hardware module;
When an application is launched, the host processor generates a hardware object associated with the application;
The generated hardware object issues a request to the object manager that manages the incorporation of the hardware driver into the operating system;
An object manager incorporating a hardware driver corresponding to the hardware object into the operating system;
A semiconductor circuit control program for causing a host processor to execute.
ハードウェア・オブジェクトが、それに対応するハードウェア・ドライバへ、メンバー関数に関連するデータを送るステップと、
ハードウェア・ドライバが、ハードウェア・モジュール・ドライバへ送るべきメンバー関数に関連するデータをセットするステップと、
ハードウェア・モジュール・ドライバが、セットされたデータに従い、バスを介してハードウェア・モジュールに回路を使うためのデータ信号を送信するステップと
をさらに含む請求項9に記載の半導体回路制御プログラム。An application calls a member function;
The hardware object sends data associated with the member function to the corresponding hardware driver;
The hardware driver sets data associated with the member function to be sent to the hardware module driver;
The semiconductor circuit control program according to claim 9, further comprising: a hardware module driver transmitting a data signal for using the circuit to the hardware module via the bus according to the set data.
ハードウェア・モジュール内の回路が、メンバー関数に関連する処理を実行するステップと、
ハードウェア・モジュールが、該回路により得られたメンバー関数の処理結果を、前記バスを介して前記ホストプロセッサに送信するステップと、
をさらに含む請求項9又は10に記載の半導体回路制御プログラム。A hardware module receiving data for using circuitry in the hardware module from the host processor via the bus;
A circuit in the hardware module performs processing associated with the member function;
A hardware module transmitting a processing result of the member function obtained by the circuit to the host processor via the bus;
The semiconductor circuit control program according to claim 9 or 10, further comprising:
ハードウェア・オブジェクトが、ハードウェア・ドライバにより受信された処理結果に従い、メンバー変数をセットするステップと、
アプリケーションが、メンバー変数のセットされたハードウェア・オブジェクトを使用して処理を実行するステップと、
をさらに含む請求項9乃至11のいずれかに記載の半導体回路制御プログラム。A hardware driver receiving a processing result of a member function by a circuit of the hardware module via a bus;
The hardware object sets member variables according to the processing result received by the hardware driver;
An application performs processing using a hardware object with member variables set;
The semiconductor circuit control program according to claim 9, further comprising:
プログラム。In any part of an application created using the hardware object, a constructor that is a function for controlling and generating a circuit in a hardware module corresponding to the hardware object is provided. 13. The semiconductor circuit control program according to claim 9, wherein the program is a semiconductor circuit control program.
該ハードウェア・オブジェクトを生成するのに連動して該回路データを再構成可能な半導体装置に書き込み、
該ハードウェア・オブジェクトを削除するのに連動して該回路データを半導体装置から削除することを特徴とする請求項9乃至13のいずれかに記載の半導体回路制御プログラム。Having a desired function to control a pre-embedded circuit controlled or operated by circuit data written to the hardware module;
In conjunction with generating the hardware object, the circuit data is written into a reconfigurable semiconductor device,
The semiconductor circuit control program according to any one of claims 9 to 13, wherein the circuit data is deleted from the semiconductor device in conjunction with the deletion of the hardware object.
該ハードウェア・オブジェクトに読み書きするのに連動して、該回路データに局所的に読み書きを行う変数を有することを特徴とする請求項9乃至14のいずれかに記載の半導体回路制御プログラム。Having a desired function to communicate with pre-embedded circuits controlled or operated by circuit data written to the hardware module;
15. The semiconductor circuit control program according to claim 9, further comprising a variable for locally reading and writing the circuit data in conjunction with reading and writing to the hardware object.
該状態変数を周期的あるいは常時監視することにより、該回路を制御することを特徴とする請求項9乃至15のいずれかに記載の半導体回路制御プログラム。A state variable indicating a state of a pre-installed circuit that is controlled or operated by circuit data written to the hardware module;
16. The semiconductor circuit control program according to claim 9, wherein the circuit is controlled by periodically or constantly monitoring the state variable.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002006729A JP3845021B2 (en) | 2002-01-15 | 2002-01-15 | Semiconductor circuit control device and semiconductor circuit control program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002006729A JP3845021B2 (en) | 2002-01-15 | 2002-01-15 | Semiconductor circuit control device and semiconductor circuit control program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003208311A JP2003208311A (en) | 2003-07-25 |
JP3845021B2 true JP3845021B2 (en) | 2006-11-15 |
Family
ID=27645414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002006729A Expired - Fee Related JP3845021B2 (en) | 2002-01-15 | 2002-01-15 | Semiconductor circuit control device and semiconductor circuit control program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3845021B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266416B2 (en) | 2007-12-19 | 2012-09-11 | Fujitsu Limited | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5315517B2 (en) * | 2008-07-15 | 2013-10-16 | 国立大学法人東京農工大学 | Information processing apparatus and virtual circuit writing method |
-
2002
- 2002-01-15 JP JP2002006729A patent/JP3845021B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266416B2 (en) | 2007-12-19 | 2012-09-11 | Fujitsu Limited | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system |
Also Published As
Publication number | Publication date |
---|---|
JP2003208311A (en) | 2003-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230251882A1 (en) | Parallel hardware hypervisor for virtualizing application-specific supercomputers | |
US7404170B2 (en) | System level applications of adaptive computing (SLAAC) technology | |
US9052957B2 (en) | Method and system for conducting intensive multitask and multiflow calculation in real-time | |
Iturbe et al. | R3TOS: a novel reliable reconfigurable real-time operating system for highly adaptive, efficient, and dependable computing on FPGAs | |
Wang et al. | Spread: A streaming-based partially reconfigurable architecture and programming model | |
Wigley et al. | Research issues in operating systems for reconfigurable computing | |
US11687327B2 (en) | Control and reconfiguration of data flow graphs on heterogeneous computing platform | |
US11113030B1 (en) | Constraints for applications in a heterogeneous programming environment | |
US20200371761A1 (en) | Dataflow graph programming environment for a heterogenous processing system | |
Eckert et al. | Operating system concepts for reconfigurable computing: review and survey | |
KR20030044916A (en) | Modular computer system and related method | |
Diessel et al. | Opportunities for operating systems research in reconfigurable computing | |
Wigley et al. | Introducing reconfigme: An operating system for reconfigurable computing | |
JP3845021B2 (en) | Semiconductor circuit control device and semiconductor circuit control program | |
US9805152B1 (en) | Compilation of system designs | |
Chevobbe et al. | Reducing reconfiguration overheads in heterogeneous multicore RSoCs with predictive configuration management | |
Theelen et al. | A scalable single-chip multi-processor architecture with on-chip RTOS kernel | |
Suvorova et al. | System level modeling of dynamic reconfigurable system-on-chip | |
Tănase | Dynamic scheduler implementation used for load distribution between hardware accelerators (RTL) and software tasks (CPU) in heterogeneous systems | |
KHALILI MAYBODI | A Data-Flow Threads Co-processor for MPSoC FPGA Clusters | |
Azuma et al. | Distributed memory architecture for high-level synthesis of embedded controllers from Erlang | |
Zhang | Design and Implementation of Multi-core Support for an Embedded Real-time Operating System for Space Applications | |
Ward | Improving the Timing Analysis of Ravenscar/SPARK Ada by Direct Compilation to Hardware | |
Viswanathan | Hardware Support for Dynamic Partial Reconfiguration | |
Biedermann et al. | Virtualizable Architecture for embedded MPSoC |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060523 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060706 |
|
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: 20060808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060817 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090825 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100825 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110825 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110825 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120825 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130825 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130825 Year of fee payment: 7 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |